Index: branches/testFACT++branch/.aux_dir/compile
===================================================================
--- branches/testFACT++branch/.aux_dir/compile	(revision 18277)
+++ branches/testFACT++branch/.aux_dir/compile	(revision 18277)
@@ -0,0 +1,143 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand `-c -o'.
+
+scriptversion=2009-10-06.20; # UTC
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009  Free Software
+# Foundation, Inc.
+# Written by Tom Tromey <tromey@cygnus.com>.
+#
+# 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, see <http://www.gnu.org/licenses/>.
+
+# 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.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+case $1 in
+  '')
+     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand `-c -o'.
+Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file `INSTALL'.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "compile $scriptversion"
+    exit $?
+    ;;
+esac
+
+ofile=
+cfile=
+eat=
+
+for arg
+do
+  if test -n "$eat"; then
+    eat=
+  else
+    case $1 in
+      -o)
+	# configure might choose to run compile as `compile cc -o foo foo.c'.
+	# So we strip `-o arg' only if arg is an object.
+	eat=1
+	case $2 in
+	  *.o | *.obj)
+	    ofile=$2
+	    ;;
+	  *)
+	    set x "$@" -o "$2"
+	    shift
+	    ;;
+	esac
+	;;
+      *.c)
+	cfile=$1
+	set x "$@" "$1"
+	shift
+	;;
+      *)
+	set x "$@" "$1"
+	shift
+	;;
+    esac
+  fi
+  shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+  # If no `-o' option was seen then we might have been invoked from a
+  # pattern rule where we don't need one.  That is ok -- this is a
+  # normal compilation that the losing compiler can handle.  If no
+  # `.c' file was seen then we are probably linking.  That is also
+  # ok.
+  exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use `[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file.  Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+  if mkdir "$lockdir" >/dev/null 2>&1; then
+    break
+  fi
+  sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
Index: branches/testFACT++branch/.aux_dir/config.guess
===================================================================
--- branches/testFACT++branch/.aux_dir/config.guess	(revision 18277)
+++ branches/testFACT++branch/.aux_dir/config.guess	(revision 18277)
@@ -0,0 +1,1530 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+#   2011, 2012 Free Software Foundation, Inc.
+
+timestamp='2012-02-10'
+
+# 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, see <http://www.gnu.org/licenses/>.
+#
+# 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.
+
+
+# Originally written by Per Bothner.  Please send patches (context
+# diff format) to <config-patches@gnu.org> and include a ChangeLog
+# entry.
+#
+# 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.
+#
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+
+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, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+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 ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # 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
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+	for c in cc gcc c89 c99 ; do
+	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+	     CC_FOR_BUILD="$c"; break ;
+	  fi ;
+	done ;
+	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 ; set_cc_for_build= ;'
+
+# 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 tuples: *-*-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.
+	#
+	# Note: NetBSD doesn't particularly care about the vendor
+	# portion of the name.  We always set it to "unknown".
+	sysctl="sysctl -n hw.machine_arch"
+	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+	case "${UNAME_MACHINE_ARCH}" in
+	    armeb) machine=armeb-unknown ;;
+	    arm*) machine=arm-unknown ;;
+	    sh3el) machine=shl-unknown ;;
+	    sh3eb) machine=sh-unknown ;;
+	    sh5el) machine=sh5le-unknown ;;
+	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+	esac
+	# The Operating System including object format, if it has switched
+	# to ELF recently, or will in the future.
+	case "${UNAME_MACHINE_ARCH}" in
+	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+		eval $set_cc_for_build
+		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+			| grep -q __ELF__
+		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
+	# Debian GNU/NetBSD machines have a different userland, and
+	# thus, need a distinct triplet. However, they do not need
+	# kernel version information, so it can be replaced with a
+	# suitable tag, in the style of linux-gnu.
+	case "${UNAME_VERSION}" in
+	    Debian*)
+		release='-gnu'
+		;;
+	    *)
+		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+		;;
+	esac
+	# 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 ;;
+    *:OpenBSD:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    *:ekkoBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+	exit ;;
+    *:SolidBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+	exit ;;
+    macppc:MirBSD:*:*)
+	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    *:MirBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    alpha:OSF1:*:*)
+	case $UNAME_RELEASE in
+	*4.0)
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+		;;
+	*5.*)
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+		;;
+	esac
+	# According to Compaq, /usr/sbin/psrinfo has been available on
+	# OSF/1 and Tru64 systems produced since 1995.  I hope that
+	# covers most systems running today.  This code pipes the CPU
+	# types through head -n 1, so we only detect the type of CPU 0.
+	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+	case "$ALPHA_CPU_TYPE" in
+	    "EV4 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV4.5 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "LCA4 (21066/21068)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV5 (21164)")
+		UNAME_MACHINE="alphaev5" ;;
+	    "EV5.6 (21164A)")
+		UNAME_MACHINE="alphaev56" ;;
+	    "EV5.6 (21164PC)")
+		UNAME_MACHINE="alphapca56" ;;
+	    "EV5.7 (21164PC)")
+		UNAME_MACHINE="alphapca57" ;;
+	    "EV6 (21264)")
+		UNAME_MACHINE="alphaev6" ;;
+	    "EV6.7 (21264A)")
+		UNAME_MACHINE="alphaev67" ;;
+	    "EV6.8CB (21264C)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8AL (21264B)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8CX (21264D)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.9A (21264/EV69A)")
+		UNAME_MACHINE="alphaev69" ;;
+	    "EV7 (21364)")
+		UNAME_MACHINE="alphaev7" ;;
+	    "EV7.9 (21364A)")
+		UNAME_MACHINE="alphaev79" ;;
+	esac
+	# A Pn.n version is a patched version.
+	# 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.
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+	exitcode=$?
+	trap '' 0
+	exit $exitcode ;;
+    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 ;;
+    21064:Windows_NT:50:3)
+	echo alpha-dec-winnt3.5
+	exit ;;
+    Amiga*:UNIX_System_V:4.0:*)
+	echo m68k-unknown-sysv4
+	exit ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-amigaos
+	exit ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-morphos
+	exit ;;
+    *:OS/390:*:*)
+	echo i370-ibm-openedition
+	exit ;;
+    *:z/VM:*:*)
+	echo s390-ibm-zvmoe
+	exit ;;
+    *:OS400:*:*)
+	echo powerpc-ibm-os400
+	exit ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+	echo arm-acorn-riscix${UNAME_RELEASE}
+	exit ;;
+    arm:riscos:*:*|arm:RISCOS:*:*)
+	echo arm-unknown-riscos
+	exit ;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+	echo hppa1.1-hitachi-hiuxmpp
+	exit ;;
+    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 ;;
+    NILE*:*:*:dcosx)
+	echo pyramid-pyramid-svr4
+	exit ;;
+    DRS?6000:unix:4.0:6*)
+	echo sparc-icl-nx6
+	exit ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+	case `/usr/bin/uname -p` in
+	    sparc) echo sparc-icl-nx7; exit ;;
+	esac ;;
+    s390x:SunOS:*:*)
+	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4H:SunOS:5.*:*)
+	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+	echo i386-pc-auroraux${UNAME_RELEASE}
+	exit ;;
+    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+	eval $set_cc_for_build
+	SUN_ARCH="i386"
+	# If there is a compiler, see if it is configured for 64-bit objects.
+	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+	# This test works for both compilers.
+	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		grep IS_64BIT_ARCH >/dev/null
+	    then
+		SUN_ARCH="x86_64"
+	    fi
+	fi
+	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    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 ;;
+    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 ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos${UNAME_RELEASE}
+	exit ;;
+    sun*:*:4.2BSD:*)
+	UNAME_RELEASE=`(sed 1q /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 ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos${UNAME_RELEASE}
+	exit ;;
+    # 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 ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+	echo m68k-milan-mint${UNAME_RELEASE}
+	exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+	echo m68k-hades-mint${UNAME_RELEASE}
+	exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+	echo m68k-unknown-mint${UNAME_RELEASE}
+	exit ;;
+    m68k:machten:*:*)
+	echo m68k-apple-machten${UNAME_RELEASE}
+	exit ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten${UNAME_RELEASE}
+	exit ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+	echo clipper-intergraph-clix${UNAME_RELEASE}
+	exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	eval $set_cc_for_build
+	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
+	$CC_FOR_BUILD -o $dummy $dummy.c &&
+	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+	  SYSTEM_NAME=`$dummy $dummyarg` &&
+	    { echo "$SYSTEM_NAME"; exit; }
+	echo mips-mips-riscos${UNAME_RELEASE}
+	exit ;;
+    Motorola:PowerMAX_OS:*:*)
+	echo powerpc-motorola-powermax
+	exit ;;
+    Motorola:*:4.3:PL8-*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit ;;
+    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 ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	exit ;;
+    ????????: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 ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+	echo i386-ibm-aix
+	exit ;;
+    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 ;;
+    *:AIX:2:3)
+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+		eval $set_cc_for_build
+		sed 's/^		//' << EOF >$dummy.c
+		#include <sys/systemcfg.h>
+
+		main()
+			{
+			if (!__power_pc())
+				exit(1);
+			puts("powerpc-ibm-aix3.2.5");
+			exit(0);
+			}
+EOF
+		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+		then
+			echo "$SYSTEM_NAME"
+		else
+			echo rs6000-ibm-aix3.2.5
+		fi
+	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 ;;
+    *:AIX:*:[4567])
+	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | 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 ;;
+    *:AIX:*:*)
+	echo rs6000-ibm-aix
+	exit ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+	echo romp-ibm-bsd4.4
+	exit ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+	exit ;;                             # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+	echo rs6000-bull-bosx
+	exit ;;
+    DPX/2?00:B.O.S.:*:*)
+	echo m68k-bull-sysv3
+	exit ;;
+    9000/[34]??:4.3bsd:1.*:*)
+	echo m68k-hp-bsd
+	exit ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+	echo m68k-hp-bsd4.4
+	exit ;;
+    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])
+		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" ;;
+			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+			esac ;;
+		    esac
+		fi
+		if [ "${HP_ARCH}" = "" ]; then
+		    eval $set_cc_for_build
+		    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
+		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+		    test -z "$HP_ARCH" && HP_ARCH=hppa
+		fi ;;
+	esac
+	if [ ${HP_ARCH} = "hppa2.0w" ]
+	then
+	    eval $set_cc_for_build
+
+	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
+	    # generating 64-bit code.  GNU and HP use different nomenclature:
+	    #
+	    # $ CC_FOR_BUILD=cc ./config.guess
+	    # => hppa2.0w-hp-hpux11.23
+	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+	    # => hppa64-hp-hpux11.23
+
+	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+		grep -q __LP64__
+	    then
+		HP_ARCH="hppa2.0w"
+	    else
+		HP_ARCH="hppa64"
+	    fi
+	fi
+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+	exit ;;
+    ia64:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	echo ia64-hp-hpux${HPUX_REV}
+	exit ;;
+    3050*:HI-UX:*:*)
+	eval $set_cc_for_build
+	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
+	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+		{ echo "$SYSTEM_NAME"; exit; }
+	echo unknown-hitachi-hiuxwe2
+	exit ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+	echo hppa1.1-hp-bsd
+	exit ;;
+    9000/8??:4.3bsd:*:*)
+	echo hppa1.0-hp-bsd
+	exit ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+	echo hppa1.0-hp-mpeix
+	exit ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+	echo hppa1.1-hp-osf
+	exit ;;
+    hp8??:OSF1:*:*)
+	echo hppa1.0-hp-osf
+	exit ;;
+    i*86:OSF1:*:*)
+	if [ -x /usr/sbin/sysversion ] ; then
+	    echo ${UNAME_MACHINE}-unknown-osf1mk
+	else
+	    echo ${UNAME_MACHINE}-unknown-osf1
+	fi
+	exit ;;
+    parisc*:Lites*:*:*)
+	echo hppa1.1-hp-lites
+	exit ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+	echo c1-convex-bsd
+	exit ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+	echo c34-convex-bsd
+	exit ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+	echo c38-convex-bsd
+	exit ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+	echo c4-convex-bsd
+	exit ;;
+    CRAY*Y-MP:*:*:*)
+	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    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 ;;
+    CRAY*TS:*:*:*)
+	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*T3E:*:*:*)
+	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*SV1:*:*:*)
+	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    *:UNICOS/mp:*:*)
+	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    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 ;;
+    5000:UNIX_System_V:4.*:*)
+	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	exit ;;
+    sparc*:BSD/OS:*:*)
+	echo sparc-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:FreeBSD:*:*)
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
+	case ${UNAME_PROCESSOR} in
+	    amd64)
+		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	    *)
+		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	esac
+	exit ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit ;;
+    *:MINGW*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit ;;
+    i*:MSYS*:*)
+	echo ${UNAME_MACHINE}-pc-msys
+	exit ;;
+    i*:windows32*:*)
+	# uname -m includes "-pc" on this system.
+	echo ${UNAME_MACHINE}-mingw32
+	exit ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit ;;
+    *:Interix*:*)
+	case ${UNAME_MACHINE} in
+	    x86)
+		echo i586-pc-interix${UNAME_RELEASE}
+		exit ;;
+	    authenticamd | genuineintel | EM64T)
+		echo x86_64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	    IA64)
+		echo ia64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	esac ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+	echo i${UNAME_MACHINE}-pc-mks
+	exit ;;
+    8664:Windows_NT:*)
+	echo x86_64-pc-mks
+	exit ;;
+    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 i586-pc-interix
+	exit ;;
+    i*:UWIN*:*)
+	echo ${UNAME_MACHINE}-pc-uwin
+	exit ;;
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+	echo x86_64-unknown-cygwin
+	exit ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    *:GNU:*:*)
+	# the GNU system
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit ;;
+    *:GNU/*:*:*)
+	# other systems with GNU libc and userland
+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+	exit ;;
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit ;;
+    aarch64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    aarch64_be:Linux:*:*)
+	UNAME_MACHINE=aarch64_be
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    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=alphaev68 ;;
+	esac
+	objdump --private-headers /bin/sh | grep -q ld.so.1
+	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+	exit ;;
+    arm*:Linux:*:*)
+	eval $set_cc_for_build
+	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+	    | grep -q __ARM_EABI__
+	then
+	    echo ${UNAME_MACHINE}-unknown-linux-gnu
+	else
+	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+		| grep -q __ARM_PCS_VFP
+	    then
+		echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+	    else
+		echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
+	    fi
+	fi
+	exit ;;
+    avr32*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    cris:Linux:*:*)
+	echo ${UNAME_MACHINE}-axis-linux-gnu
+	exit ;;
+    crisv32:Linux:*:*)
+	echo ${UNAME_MACHINE}-axis-linux-gnu
+	exit ;;
+    frv:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    hexagon:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    i*86:Linux:*:*)
+	LIBC=gnu
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#ifdef __dietlibc__
+	LIBC=dietlibc
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+	echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+	exit ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    m32r*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    mips:Linux:*:* | mips64:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef ${UNAME_MACHINE}
+	#undef ${UNAME_MACHINE}el
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=${UNAME_MACHINE}el
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=${UNAME_MACHINE}
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+	;;
+    or32:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    padre:Linux:*:*)
+	echo sparc-unknown-linux-gnu
+	exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-gnu
+	exit ;;
+    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 ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-gnu
+	exit ;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-gnu
+	exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux
+	exit ;;
+    sh64*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    tile*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    vax:Linux:*:*)
+	echo ${UNAME_MACHINE}-dec-linux-gnu
+	exit ;;
+    x86_64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    xtensa*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    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 ;;
+    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 ;;
+    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 ;;
+    i*86:XTS-300:*:STOP)
+	echo ${UNAME_MACHINE}-unknown-stop
+	exit ;;
+    i*86:atheos:*:*)
+	echo ${UNAME_MACHINE}-unknown-atheos
+	exit ;;
+    i*86:syllable:*:*)
+	echo ${UNAME_MACHINE}-pc-syllable
+	exit ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+	echo i386-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    i*86:*DOS:*:*)
+	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+	exit ;;
+    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 ;;
+    i*86:*:5:[678]*)
+	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+	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 ;;
+    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|grep Release|sed -e 's/.*= //')`
+		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+			&& UNAME_MACHINE=i586
+		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+	else
+		echo ${UNAME_MACHINE}-pc-sysv32
+	fi
+	exit ;;
+    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 i586.
+	# Note: whatever this is, it MUST be the same as what config.sub
+	# prints for the "djgpp" host, or else GDB configury will decide that
+	# this is a cross-build.
+	echo i586-pc-msdosdjgpp
+	exit ;;
+    Intel:Mach:3*:*)
+	echo i386-pc-mach3
+	exit ;;
+    paragon:*:*:*)
+	echo i860-intel-osf1
+	exit ;;
+    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 ;;
+    mini*:CTIX:SYS*5:*)
+	# "miniframe"
+	echo m68010-convergent-sysv
+	exit ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+	echo m68k-convergent-sysv
+	exit ;;
+    M680?0:D-NIX:5.3:*)
+	echo m68k-diab-dnix
+	exit ;;
+    M68*:*:R3V[5678]*:*)
+	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*: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; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4; exit; } ;;
+    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+	OS_REL='.3'
+	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; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+	echo m68k-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    mc68030:UNIX_System_V:4.*:*)
+	echo m68k-atari-sysv4
+	exit ;;
+    TSUNAMI:LynxOS:2.*:*)
+	echo sparc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    rs6000:LynxOS:2.*:*)
+	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    SM[BE]S:UNIX_SV:*:*)
+	echo mips-dde-sysv${UNAME_RELEASE}
+	exit ;;
+    RM*:ReliantUNIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    RM*:SINIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    *: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 ;;
+    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+			# says <Richard.M.Bartel@ccMail.Census.GOV>
+	echo i586-unisys-sysv4
+	exit ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes@openmarket.com>.
+	# How about differentiating between stratus architectures? -djm
+	echo hppa1.1-stratus-sysv4
+	exit ;;
+    *:*:*:FTX*)
+	# From seanf@swdc.stratus.com.
+	echo i860-stratus-sysv4
+	exit ;;
+    i*86:VOS:*:*)
+	# From Paul.Green@stratus.com.
+	echo ${UNAME_MACHINE}-stratus-vos
+	exit ;;
+    *:VOS:*:*)
+	# From Paul.Green@stratus.com.
+	echo hppa1.1-stratus-vos
+	exit ;;
+    mc68*:A/UX:*:*)
+	echo m68k-apple-aux${UNAME_RELEASE}
+	exit ;;
+    news*:NEWS-OS:6*:*)
+	echo mips-sony-newsos6
+	exit ;;
+    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 ;;
+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+	echo powerpc-be-beos
+	exit ;;
+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+	echo powerpc-apple-beos
+	exit ;;
+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+	echo i586-pc-beos
+	exit ;;
+    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
+	echo i586-pc-haiku
+	exit ;;
+    SX-4:SUPER-UX:*:*)
+	echo sx4-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-5:SUPER-UX:*:*)
+	echo sx5-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-6:SUPER-UX:*:*)
+	echo sx6-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-7:SUPER-UX:*:*)
+	echo sx7-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8:SUPER-UX:*:*)
+	echo sx8-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8R:SUPER-UX:*:*)
+	echo sx8r-nec-superux${UNAME_RELEASE}
+	exit ;;
+    Power*:Rhapsody:*:*)
+	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Rhapsody:*:*)
+	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Darwin:*:*)
+	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+	case $UNAME_PROCESSOR in
+	    i386)
+		eval $set_cc_for_build
+		if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+		  if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+		      (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		      grep IS_64BIT_ARCH >/dev/null
+		  then
+		      UNAME_PROCESSOR="x86_64"
+		  fi
+		fi ;;
+	    unknown) UNAME_PROCESSOR=powerpc ;;
+	esac
+	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+	exit ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+	UNAME_PROCESSOR=`uname -p`
+	if test "$UNAME_PROCESSOR" = "x86"; then
+		UNAME_PROCESSOR=i386
+		UNAME_MACHINE=pc
+	fi
+	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+	exit ;;
+    *:QNX:*:4*)
+	echo i386-pc-qnx
+	exit ;;
+    NEO-?:NONSTOP_KERNEL:*:*)
+	echo neo-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSE-?:NONSTOP_KERNEL:*:*)
+	echo nse-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+	echo nsr-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    *:NonStop-UX:*:*)
+	echo mips-compaq-nonstopux
+	exit ;;
+    BS2000:POSIX*:*:*)
+	echo bs2000-siemens-sysv
+	exit ;;
+    DS/*:UNIX_System_V:*:*)
+	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+	exit ;;
+    *: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 ;;
+    *:TOPS-10:*:*)
+	echo pdp10-unknown-tops10
+	exit ;;
+    *:TENEX:*:*)
+	echo pdp10-unknown-tenex
+	exit ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+	echo pdp10-dec-tops20
+	exit ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+	echo pdp10-xkl-tops20
+	exit ;;
+    *:TOPS-20:*:*)
+	echo pdp10-unknown-tops20
+	exit ;;
+    *:ITS:*:*)
+	echo pdp10-unknown-its
+	exit ;;
+    SEI:*:*:SEIUX)
+	echo mips-sei-seiux${UNAME_RELEASE}
+	exit ;;
+    *:DragonFly:*:*)
+	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	exit ;;
+    *:*VMS:*:*)
+	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	case "${UNAME_MACHINE}" in
+	    A*) echo alpha-dec-vms ; exit ;;
+	    I*) echo ia64-dec-vms ; exit ;;
+	    V*) echo vax-dec-vms ; exit ;;
+	esac ;;
+    *:XENIX:*:SysV)
+	echo i386-pc-xenix
+	exit ;;
+    i*86:skyos:*:*)
+	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+	exit ;;
+    i*86:rdos:*:*)
+	echo ${UNAME_MACHINE}-pc-rdos
+	exit ;;
+    i*86:AROS:*:*)
+	echo ${UNAME_MACHINE}-pc-aros
+	exit ;;
+    x86_64:VMkernel:*:*)
+	echo ${UNAME_MACHINE}-unknown-esx
+	exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+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\n"); 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
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+	{ echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# 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 ;;
+    c2*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit ;;
+    c34*)
+	echo c34-convex-bsd
+	exit ;;
+    c38*)
+	echo c38-convex-bsd
+	exit ;;
+    c4*)
+	echo c4-convex-bsd
+	exit ;;
+    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
+
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+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: branches/testFACT++branch/.aux_dir/config.sub
===================================================================
--- branches/testFACT++branch/.aux_dir/config.sub	(revision 18277)
+++ branches/testFACT++branch/.aux_dir/config.sub	(revision 18277)
@@ -0,0 +1,1773 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+#   2011, 2012 Free Software Foundation, Inc.
+
+timestamp='2012-02-10'
+
+# 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, see <http://www.gnu.org/licenses/>.
+#
+# 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>.  Submit a context
+# diff and a properly formatted GNU ChangeLog entry.
+#
+# 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.
+
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+# 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, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+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 ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # 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 ;;
+
+    * )
+       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* | linux-android* | linux-dietlibc | linux-newlib* | \
+  linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | \
+  kopensolaris*-gnu* | \
+  storm-chaos* | os2-emx* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  android-linux)
+    os=-linux-android
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+    ;;
+  *)
+    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 | -knuth | -cray | -microblaze)
+		os=
+		basic_machine=$1
+		;;
+	-bluegene*)
+		os=-cnk
+		;;
+	-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
+		;;
+	-sco6)
+		os=-sco5v6
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-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/'`
+		;;
+	-sco5v6*)
+		# 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.
+	1750a | 580 \
+	| a29k \
+	| aarch64 | aarch64_be \
+	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+	| am33_2.0 \
+	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+        | be32 | be64 \
+	| bfin \
+	| c4x | clipper \
+	| d10v | d30v | dlx | dsp16xx \
+	| epiphany \
+	| fido | fr30 | frv \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| hexagon \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k | iq2000 \
+	| le32 | le64 \
+	| lm32 \
+	| m32c | m32r | m32rle | m68000 | m68k | m88k \
+	| maxq | mb | microblaze | mcore | mep | metag \
+	| mips | mipsbe | mipseb | mipsel | mipsle \
+	| mips16 \
+	| mips64 | mips64el \
+	| mips64octeon | mips64octeonel \
+	| mips64orion | mips64orionel \
+	| mips64r5900 | mips64r5900el \
+	| mips64vr | mips64vrel \
+	| mips64vr4100 | mips64vr4100el \
+	| mips64vr4300 | mips64vr4300el \
+	| mips64vr5000 | mips64vr5000el \
+	| mips64vr5900 | mips64vr5900el \
+	| mipsisa32 | mipsisa32el \
+	| mipsisa32r2 | mipsisa32r2el \
+	| mipsisa64 | mipsisa64el \
+	| mipsisa64r2 | mipsisa64r2el \
+	| mipsisa64sb1 | mipsisa64sb1el \
+	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipstx39 | mipstx39el \
+	| mn10200 | mn10300 \
+	| moxie \
+	| mt \
+	| msp430 \
+	| nds32 | nds32le | nds32be \
+	| nios | nios2 \
+	| ns16k | ns32k \
+	| open8 \
+	| or32 \
+	| pdp10 | pdp11 | pj | pjl \
+	| powerpc | powerpc64 | powerpc64le | powerpcle \
+	| pyramid \
+	| rl78 | rx \
+	| score \
+	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+	| sh64 | sh64le \
+	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+	| spu \
+	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+	| ubicom32 \
+	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+	| we32k \
+	| x86 | xc16x | xstormy16 | xtensa \
+	| z8k | z80)
+		basic_machine=$basic_machine-unknown
+		;;
+	c54x)
+		basic_machine=tic54x-unknown
+		;;
+	c55x)
+		basic_machine=tic55x-unknown
+		;;
+	c6x)
+		basic_machine=tic6x-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+		;;
+	ms1)
+		basic_machine=mt-unknown
+		;;
+
+	strongarm | thumb | xscale)
+		basic_machine=arm-unknown
+		;;
+	xgate)
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	xscaleeb)
+		basic_machine=armeb-unknown
+		;;
+
+	xscaleel)
+		basic_machine=armel-unknown
+		;;
+
+	# 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.
+	580-* \
+	| a29k-* \
+	| aarch64-* | aarch64_be-* \
+	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+	| avr-* | avr32-* \
+	| be32-* | be64-* \
+	| bfin-* | bs2000-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* \
+	| clipper-* | craynv-* | cydra-* \
+	| d10v-* | d30v-* | dlx-* \
+	| elxsi-* \
+	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+	| h8300-* | h8500-* \
+	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| hexagon-* \
+	| i*86-* | i860-* | i960-* | ia64-* \
+	| ip2k-* | iq2000-* \
+	| le32-* | le64-* \
+	| lm32-* \
+	| m32c-* | m32r-* | m32rle-* \
+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
+	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+	| mips16-* \
+	| mips64-* | mips64el-* \
+	| mips64octeon-* | mips64octeonel-* \
+	| mips64orion-* | mips64orionel-* \
+	| mips64r5900-* | mips64r5900el-* \
+	| mips64vr-* | mips64vrel-* \
+	| mips64vr4100-* | mips64vr4100el-* \
+	| mips64vr4300-* | mips64vr4300el-* \
+	| mips64vr5000-* | mips64vr5000el-* \
+	| mips64vr5900-* | mips64vr5900el-* \
+	| mipsisa32-* | mipsisa32el-* \
+	| mipsisa32r2-* | mipsisa32r2el-* \
+	| mipsisa64-* | mipsisa64el-* \
+	| mipsisa64r2-* | mipsisa64r2el-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipstx39-* | mipstx39el-* \
+	| mmix-* \
+	| mt-* \
+	| msp430-* \
+	| nds32-* | nds32le-* | nds32be-* \
+	| nios-* | nios2-* \
+	| none-* | np1-* | ns16k-* | ns32k-* \
+	| open8-* \
+	| orion-* \
+	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+	| pyramid-* \
+	| rl78-* | romp-* | rs6000-* | rx-* \
+	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+	| sparclite-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+	| tahoe-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tile*-* \
+	| tron-* \
+	| ubicom32-* \
+	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+	| vax-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xc16x-* | xps100-* \
+	| xstormy16-* | xtensa*-* \
+	| ymp-* \
+	| z8k-* | z80-*)
+		;;
+	# Recognize the basic CPU types without company name, with glob match.
+	xtensa*)
+		basic_machine=$basic_machine-unknown
+		;;
+	# 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
+		;;
+	abacus)
+		basic_machine=abacus-unknown
+		;;
+	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
+		;;
+	amd64)
+		basic_machine=x86_64-pc
+		;;
+	amd64-*)
+		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	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
+		;;
+	aros)
+		basic_machine=i386-pc
+		os=-aros
+		;;
+	aux)
+		basic_machine=m68k-apple
+		os=-aux
+		;;
+	balance)
+		basic_machine=ns32k-sequent
+		os=-dynix
+		;;
+	blackfin)
+		basic_machine=bfin-unknown
+		os=-linux
+		;;
+	blackfin-*)
+		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	bluegene*)
+		basic_machine=powerpc-ibm
+		os=-cnk
+		;;
+	c54x-*)
+		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c55x-*)
+		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c6x-*)
+		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c90)
+		basic_machine=c90-cray
+		os=-unicos
+		;;
+	cegcc)
+		basic_machine=arm-unknown
+		os=-cegcc
+		;;
+	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 | j90)
+		basic_machine=j90-cray
+		os=-unicos
+		;;
+	craynv)
+		basic_machine=craynv-cray
+		os=-unicosmp
+		;;
+	cr16 | cr16-*)
+		basic_machine=cr16-unknown
+		os=-elf
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	crisv32 | crisv32-* | etraxfs*)
+		basic_machine=crisv32-axis
+		;;
+	cris | cris-* | etrax*)
+		basic_machine=cris-axis
+		;;
+	crx)
+		basic_machine=crx-unknown
+		os=-elf
+		;;
+	da30 | da30-*)
+		basic_machine=m68k-da30
+		;;
+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+		basic_machine=mips-dec
+		;;
+	decsystem10* | dec10*)
+		basic_machine=pdp10-dec
+		os=-tops10
+		;;
+	decsystem20* | dec20*)
+		basic_machine=pdp10-dec
+		os=-tops20
+		;;
+	delta | 3300 | motorola-3300 | motorola-delta \
+	      | 3300-motorola | delta-motorola)
+		basic_machine=m68k-motorola
+		;;
+	delta88)
+		basic_machine=m88k-motorola
+		os=-sysv3
+		;;
+	dicos)
+		basic_machine=i686-pc
+		os=-dicos
+		;;
+	djgpp)
+		basic_machine=i586-pc
+		os=-msdosdjgpp
+		;;
+	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*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
+		;;
+	m68knommu)
+		basic_machine=m68k-unknown
+		os=-linux
+		;;
+	m68knommu-*)
+		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	m88k-omron*)
+		basic_machine=m88k-omron
+		;;
+	magnum | m3230)
+		basic_machine=mips-mips
+		os=-sysv
+		;;
+	merlin)
+		basic_machine=ns32k-utek
+		os=-sysv
+		;;
+	microblaze)
+		basic_machine=microblaze-xilinx
+		;;
+	mingw32)
+		basic_machine=i386-pc
+		os=-mingw32
+		;;
+	mingw32ce)
+		basic_machine=arm-unknown
+		os=-mingw32ce
+		;;
+	miniframe)
+		basic_machine=m68000-convergent
+		;;
+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+	mips3*-*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+		;;
+	mips3*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+		;;
+	monitor)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	morphos)
+		basic_machine=powerpc-unknown
+		os=-morphos
+		;;
+	msdos)
+		basic_machine=i386-pc
+		os=-msdos
+		;;
+	ms1-*)
+		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+		;;
+	msys)
+		basic_machine=i386-pc
+		os=-msys
+		;;
+	mvs)
+		basic_machine=i370-ibm
+		os=-mvs
+		;;
+	nacl)
+		basic_machine=le32-unknown
+		os=-nacl
+		;;
+	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
+		;;
+	neo-tandem)
+		basic_machine=neo-tandem
+		;;
+	nse-tandem)
+		basic_machine=nse-tandem
+		;;
+	nsr-tandem)
+		basic_machine=nsr-tandem
+		;;
+	op50n-* | op60c-*)
+		basic_machine=hppa1.1-oki
+		os=-proelf
+		;;
+	openrisc | openrisc-*)
+		basic_machine=or32-unknown
+		;;
+	os400)
+		basic_machine=powerpc-ibm
+		os=-os400
+		;;
+	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
+		;;
+	parisc)
+		basic_machine=hppa-unknown
+		os=-linux
+		;;
+	parisc-*)
+		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	pbd)
+		basic_machine=sparc-tti
+		;;
+	pbb)
+		basic_machine=m68k-tti
+		;;
+	pc532 | pc532-*)
+		basic_machine=ns32k-pc532
+		;;
+	pc98)
+		basic_machine=i386-pc
+		;;
+	pc98-*)
+		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium | p5 | k5 | k6 | nexgen | viac3)
+		basic_machine=i586-pc
+		;;
+	pentiumpro | p6 | 6x86 | athlon | athlon_*)
+		basic_machine=i686-pc
+		;;
+	pentiumii | pentium2 | pentiumiii | pentium3)
+		basic_machine=i686-pc
+		;;
+	pentium4)
+		basic_machine=i786-pc
+		;;
+	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumpro-* | p6-* | 6x86-* | athlon-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium4-*)
+		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pn)
+		basic_machine=pn-gould
+		;;
+	power)	basic_machine=power-ibm
+		;;
+	ppc | ppcbe)	basic_machine=powerpc-unknown
+		;;
+	ppc-* | ppcbe-*)
+		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/^[^-]*-//'`
+		;;
+	ppc64)	basic_machine=powerpc64-unknown
+		;;
+	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+		basic_machine=powerpc64le-unknown
+		;;
+	ppc64le-* | powerpc64little-*)
+		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ps2)
+		basic_machine=i386-ibm
+		;;
+	pw32)
+		basic_machine=i586-unknown
+		os=-pw32
+		;;
+	rdos)
+		basic_machine=i386-pc
+		os=-rdos
+		;;
+	rom68k)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	rm[46]00)
+		basic_machine=mips-siemens
+		;;
+	rtpc | rtpc-*)
+		basic_machine=romp-ibm
+		;;
+	s390 | s390-*)
+		basic_machine=s390-ibm
+		;;
+	s390x | s390x-*)
+		basic_machine=s390x-ibm
+		;;
+	sa29200)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	sb1)
+		basic_machine=mipsisa64sb1-unknown
+		;;
+	sb1el)
+		basic_machine=mipsisa64sb1el-unknown
+		;;
+	sde)
+		basic_machine=mipsisa32-sde
+		os=-elf
+		;;
+	sei)
+		basic_machine=mips-sei
+		os=-seiux
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	sh5el)
+		basic_machine=sh5le-unknown
+		;;
+	sh64)
+		basic_machine=sh64-unknown
+		;;
+	sparclite-wrs | simso-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
+		;;
+	strongarm-* | thumb-*)
+		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	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=alphaev5-cray
+		os=-unicos
+		;;
+	t90)
+		basic_machine=t90-cray
+		os=-unicos
+		;;
+	tile*)
+		basic_machine=$basic_machine-unknown
+		os=-linux-gnu
+		;;
+	tx39)
+		basic_machine=mipstx39-unknown
+		;;
+	tx39el)
+		basic_machine=mipstx39el-unknown
+		;;
+	toad1)
+		basic_machine=pdp10-xkl
+		os=-tops20
+		;;
+	tower | tower-32)
+		basic_machine=m68k-ncr
+		;;
+	tpf)
+		basic_machine=s390x-ibm
+		os=-tpf
+		;;
+	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
+		;;
+	xbox)
+		basic_machine=i686-pc
+		os=-mingw32
+		;;
+	xps | xps100)
+		basic_machine=xps100-honeywell
+		;;
+	xscale-* | xscalee[bl]-*)
+		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+		;;
+	ymp)
+		basic_machine=ymp-cray
+		os=-unicos
+		;;
+	z8k-*-coff)
+		basic_machine=z8k-unknown
+		os=-sim
+		;;
+	z80-*-coff)
+		basic_machine=z80-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
+		;;
+	romp)
+		basic_machine=romp-ibm
+		;;
+	mmix)
+		basic_machine=mmix-knuth
+		;;
+	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
+		;;
+	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+		basic_machine=sh-unknown
+		;;
+	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+		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
+		;;
+	*-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.
+	-auroraux)
+		os=-auroraux
+		;;
+	-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* | -cnk* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+	      | -sym* | -kopensolaris* \
+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+	      | -aos* | -aros* \
+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+	      | -openbsd* | -solidbsd* \
+	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -chorusos* | -chorusrdb* | -cegcc* \
+	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -linux-gnu* | -linux-android* \
+	      | -linux-newlib* | -linux-uclibc* \
+	      | -uxpv* | -beos* | -mpeix* | -udk* \
+	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+	# Remember, each alternative MUST END IN *, to match a version number.
+		;;
+	-qnx*)
+		case $basic_machine in
+		    x86-* | i*86-*)
+			;;
+		    *)
+			os=-nto$os
+			;;
+		esac
+		;;
+	-nto-qnx*)
+		;;
+	-nto*)
+		os=`echo $os | sed -e 's|nto|nto-qnx|'`
+		;;
+	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+		;;
+	-mac*)
+		os=`echo $os | sed -e 's|mac|macos|'`
+		;;
+	-linux-dietlibc)
+		os=-linux-dietlibc
+		;;
+	-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
+		;;
+	-os400*)
+		os=-os400
+		;;
+	-wince*)
+		os=-wince
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-atheos*)
+		os=-atheos
+		;;
+	-syllable*)
+		os=-syllable
+		;;
+	-386bsd)
+		os=-bsd
+		;;
+	-ctix* | -uts*)
+		os=-sysv
+		;;
+	-nova*)
+		os=-rtmk-nova
+		;;
+	-ns2 )
+		os=-nextstep2
+		;;
+	-nsk*)
+		os=-nsk
+		;;
+	# Preserve the version number of sinix5.
+	-sinix5.*)
+		os=`echo $os | sed -e 's|sinix|sysv|'`
+		;;
+	-sinix*)
+		os=-sysv4
+		;;
+	-tpf*)
+		os=-tpf
+		;;
+	-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
+		;;
+	-aros*)
+		os=-aros
+		;;
+	-kaos*)
+		os=-kaos
+		;;
+	-zvmoe)
+		os=-zvmoe
+		;;
+	-dicos*)
+		os=-dicos
+		;;
+	-nacl*)
+		;;
+	-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
+	score-*)
+		os=-elf
+		;;
+	spu-*)
+		os=-elf
+		;;
+	*-acorn)
+		os=-riscix1.2
+		;;
+	arm*-rebel)
+		os=-linux
+		;;
+	arm*-semi)
+		os=-aout
+		;;
+	c4x-* | tic4x-*)
+		os=-coff
+		;;
+	tic54x-*)
+		os=-coff
+		;;
+	tic55x-*)
+		os=-coff
+		;;
+	tic6x-*)
+		os=-coff
+		;;
+	# This must come before the *-dec entry.
+	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
+		;;
+	m68*-cisco)
+		os=-aout
+		;;
+	mep-*)
+		os=-elf
+		;;
+	mips*-cisco)
+		os=-elf
+		;;
+	mips*-*)
+		os=-elf
+		;;
+	or32-*)
+		os=-coff
+		;;
+	*-tti)	# must be before sparc entry or we get the wrong os.
+		os=-sysv3
+		;;
+	sparc-* | *-sun)
+		os=-sunos4.1.1
+		;;
+	*-be)
+		os=-beos
+		;;
+	*-haiku)
+		os=-haiku
+		;;
+	*-ibm)
+		os=-aix
+		;;
+	*-knuth)
+		os=-mmixware
+		;;
+	*-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
+				;;
+			-cnk*|-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
+				;;
+			-os400*)
+				vendor=ibm
+				;;
+			-ptx*)
+				vendor=sequent
+				;;
+			-tpf*)
+				vendor=ibm
+				;;
+			-vxsim* | -vxworks* | -windiss*)
+				vendor=wrs
+				;;
+			-aux*)
+				vendor=apple
+				;;
+			-hms*)
+				vendor=hitachi
+				;;
+			-mpw* | -macos*)
+				vendor=apple
+				;;
+			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+				vendor=atari
+				;;
+			-vos*)
+				vendor=stratus
+				;;
+		esac
+		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+		;;
+esac
+
+echo $basic_machine$os
+exit
+
+# 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: branches/testFACT++branch/.aux_dir/depcomp
===================================================================
--- branches/testFACT++branch/.aux_dir/depcomp	(revision 18277)
+++ branches/testFACT++branch/.aux_dir/depcomp	(revision 18277)
@@ -0,0 +1,630 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2009-04-28.21; # UTC
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 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, see <http://www.gnu.org/licenses/>.
+
+# 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.
+
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+case $1 in
+  '')
+     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+  depmode     Dependency tracking mode.
+  source      Source file read by `PROGRAMS ARGS'.
+  object      Object file output by `PROGRAMS ARGS'.
+  DEPDIR      directory where to store dependencies.
+  depfile     Dependency file to output.
+  tmpdepfile  Temporary file to use when outputing dependencies.
+  libtool     Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "depcomp $scriptversion"
+    exit $?
+    ;;
+esac
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+   # This is just like dashmstdout with a different argument.
+   dashmflag=-xM
+   depmode=dashmstdout
+fi
+
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+   # This is just like msvisualcpp but w/o cygpath translation.
+   # Just convert the backslash-escaped backslashes to single forward
+   # slashes to satisfy depend.m4
+   cygpath_u="sed s,\\\\\\\\,/,g"
+   depmode=msvisualcpp
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am.  Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+  for arg
+  do
+    case $arg in
+    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+    *)  set fnord "$@" "$arg" ;;
+    esac
+    shift # fnord
+    shift # $arg
+  done
+  "$@"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+  tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'.  On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like `#:fec' to the end of the
+    # dependency line.
+    tr ' ' '
+' < "$tmpdepfile" \
+    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+    tr '
+' ' ' >> "$depfile"
+    echo >> "$depfile"
+
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' '
+' < "$tmpdepfile" \
+   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+   >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts `$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$base.u
+    tmpdepfile3=$dir.libs/$base.u
+    "$@" -Wc,-M
+  else
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$dir$base.u
+    tmpdepfile3=$dir$base.u
+    "$@" -M
+  fi
+  stat=$?
+
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form `foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # `$object: dependent.h' and one to simply `dependent.h:'.
+    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+    # That's a tab and a space in the [].
+    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+icc)
+  # Intel's C compiler understands `-MD -MF file'.  However on
+  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # ICC 7.0 will fill foo.d with something like
+  #    foo.o: sub/foo.c
+  #    foo.o: sub/foo.h
+  # which is wrong.  We want:
+  #    sub/foo.o: sub/foo.c
+  #    sub/foo.o: sub/foo.h
+  #    sub/foo.c:
+  #    sub/foo.h:
+  # ICC 7.1 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using \ :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+    sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp2)
+  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+  # compilers, which have integrated preprocessors.  The correct option
+  # to use with these is +Maked; it writes dependencies to a file named
+  # 'foo.d', which lands next to the object file, wherever that
+  # happens to be.
+  # Much of this is similar to the tru64 case; see comments there.
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir.libs/$base.d
+    "$@" -Wc,+Maked
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    "$@" +Maked
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+     rm -f "$tmpdepfile1" "$tmpdepfile2"
+     exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add `dependent.h:' lines.
+    sed -ne '2,${
+	       s/^ *//
+	       s/ \\*$//
+	       s/$/:/
+	       p
+	     }' "$tmpdepfile" >> "$depfile"
+  else
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile" "$tmpdepfile2"
+  ;;
+
+tru64)
+   # The Tru64 compiler uses -MD to generate dependencies as a side
+   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+   # dependencies in `foo.d' instead, so we check for that too.
+   # Subdirectories are respected.
+   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+   test "x$dir" = "x$object" && dir=
+   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+   if test "$libtool" = yes; then
+      # With Tru64 cc, shared objects can also be used to make a
+      # static library.  This mechanism is used in libtool 1.4 series to
+      # handle both shared and static libraries in a single compilation.
+      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+      #
+      # With libtool 1.5 this exception was removed, and libtool now
+      # generates 2 separate objects for the 2 libraries.  These two
+      # compilations output dependencies in $dir.libs/$base.o.d and
+      # in $dir$base.o.d.  We have to check for both files, because
+      # one of the two compilations can be disabled.  We should prefer
+      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+      # automatically cleaned when .libs/ is deleted, while ignoring
+      # the former would cause a distcleancheck panic.
+      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
+      tmpdepfile2=$dir$base.o.d          # libtool 1.5
+      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
+      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
+      "$@" -Wc,-MD
+   else
+      tmpdepfile1=$dir$base.o.d
+      tmpdepfile2=$dir$base.d
+      tmpdepfile3=$dir$base.d
+      tmpdepfile4=$dir$base.d
+      "$@" -MD
+   fi
+
+   stat=$?
+   if test $stat -eq 0; then :
+   else
+      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+      exit $stat
+   fi
+
+   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+   do
+     test -f "$tmpdepfile" && break
+   done
+   if test -f "$tmpdepfile"; then
+      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+      # That's a tab and a space in the [].
+      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+   else
+      echo "#dummy" > "$depfile"
+   fi
+   rm -f "$tmpdepfile"
+   ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for `:'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  "$@" $dashmflag |
+    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no eat=no
+  for arg
+  do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    if test $eat = yes; then
+      eat=no
+      continue
+    fi
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -arch)
+      eat=yes ;;
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix=`echo "$object" | sed 's/^.*\././'`
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E |
+    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+	set fnord "$@"
+	shift
+	shift
+	;;
+    *)
+	set fnord "$@" "$arg"
+	shift
+	shift
+	;;
+    esac
+  done
+  "$@" -E 2>/dev/null |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
+  echo "	" >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvcmsys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
Index: branches/testFACT++branch/.aux_dir/install-sh
===================================================================
--- branches/testFACT++branch/.aux_dir/install-sh	(revision 18277)
+++ branches/testFACT++branch/.aux_dir/install-sh	(revision 18277)
@@ -0,0 +1,520 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2009-04-28.21; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# 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.
+
+nl='
+'
+IFS=" ""	$nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+  doit_exec=exec
+else
+  doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+  test "$posix_glob" != "?" || {
+    if (set -f) 2>/dev/null; then
+      posix_glob=
+    else
+      posix_glob=:
+    fi
+  }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+     --help     display this help and exit.
+     --version  display version info and exit.
+
+  -c            (ignored)
+  -C            install only if different (preserve the last data modification time)
+  -d            create directories instead of installing files.
+  -g GROUP      $chgrpprog installed files to GROUP.
+  -m MODE       $chmodprog installed files to MODE.
+  -o USER       $chownprog installed files to USER.
+  -s            $stripprog installed files.
+  -t DIRECTORY  install into DIRECTORY.
+  -T            report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+  RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+  case $1 in
+    -c) ;;
+
+    -C) copy_on_change=true;;
+
+    -d) dir_arg=true;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+	shift;;
+
+    --help) echo "$usage"; exit $?;;
+
+    -m) mode=$2
+	case $mode in
+	  *' '* | *'	'* | *'
+'*	  | *'*'* | *'?'* | *'['*)
+	    echo "$0: invalid mode: $mode" >&2
+	    exit 1;;
+	esac
+	shift;;
+
+    -o) chowncmd="$chownprog $2"
+	shift;;
+
+    -s) stripcmd=$stripprog;;
+
+    -t) dst_arg=$2
+	shift;;
+
+    -T) no_target_directory=true;;
+
+    --version) echo "$0 $scriptversion"; exit $?;;
+
+    --)	shift
+	break;;
+
+    -*)	echo "$0: invalid option: $1" >&2
+	exit 1;;
+
+    *)  break;;
+  esac
+  shift
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+  # When -d is used, all remaining arguments are directories to create.
+  # When -t is used, the destination is already specified.
+  # Otherwise, the last argument is the destination.  Remove it from $@.
+  for arg
+  do
+    if test -n "$dst_arg"; then
+      # $@ is not empty: it contains at least $arg.
+      set fnord "$@" "$dst_arg"
+      shift # fnord
+    fi
+    shift # arg
+    dst_arg=$arg
+  done
+fi
+
+if test $# -eq 0; then
+  if test -z "$dir_arg"; then
+    echo "$0: no input file specified." >&2
+    exit 1
+  fi
+  # It's OK to call `install-sh -d' without argument.
+  # This can happen when creating conditional directories.
+  exit 0
+fi
+
+if test -z "$dir_arg"; then
+  trap '(exit $?); exit' 1 2 13 15
+
+  # Set umask so as not to create temps with too-generous modes.
+  # However, 'strip' requires both read and write access to temps.
+  case $mode in
+    # Optimize common cases.
+    *644) cp_umask=133;;
+    *755) cp_umask=22;;
+
+    *[0-7])
+      if test -z "$stripcmd"; then
+	u_plus_rw=
+      else
+	u_plus_rw='% 200'
+      fi
+      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+    *)
+      if test -z "$stripcmd"; then
+	u_plus_rw=
+      else
+	u_plus_rw=,u+rw
+      fi
+      cp_umask=$mode$u_plus_rw;;
+  esac
+fi
+
+for src
+do
+  # Protect names starting with `-'.
+  case $src in
+    -*) src=./$src;;
+  esac
+
+  if test -n "$dir_arg"; then
+    dst=$src
+    dstdir=$dst
+    test -d "$dstdir"
+    dstdir_status=$?
+  else
+
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+    # might cause directories to be created, which would be especially bad
+    # if $src (and thus $dsttmp) contains '*'.
+    if test ! -f "$src" && test ! -d "$src"; then
+      echo "$0: $src does not exist." >&2
+      exit 1
+    fi
+
+    if test -z "$dst_arg"; then
+      echo "$0: no destination specified." >&2
+      exit 1
+    fi
+
+    dst=$dst_arg
+    # Protect names starting with `-'.
+    case $dst in
+      -*) dst=./$dst;;
+    esac
+
+    # If destination is a directory, append the input filename; won't work
+    # if double slashes aren't ignored.
+    if test -d "$dst"; then
+      if test -n "$no_target_directory"; then
+	echo "$0: $dst_arg: Is a directory" >&2
+	exit 1
+      fi
+      dstdir=$dst
+      dst=$dstdir/`basename "$src"`
+      dstdir_status=0
+    else
+      # Prefer dirname, but fall back on a substitute if dirname fails.
+      dstdir=`
+	(dirname "$dst") 2>/dev/null ||
+	expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	     X"$dst" : 'X\(//\)[^/]' \| \
+	     X"$dst" : 'X\(//\)$' \| \
+	     X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+	echo X"$dst" |
+	    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+		   s//\1/
+		   q
+		 }
+		 /^X\(\/\/\)[^/].*/{
+		   s//\1/
+		   q
+		 }
+		 /^X\(\/\/\)$/{
+		   s//\1/
+		   q
+		 }
+		 /^X\(\/\).*/{
+		   s//\1/
+		   q
+		 }
+		 s/.*/./; q'
+      `
+
+      test -d "$dstdir"
+      dstdir_status=$?
+    fi
+  fi
+
+  obsolete_mkdir_used=false
+
+  if test $dstdir_status != 0; then
+    case $posix_mkdir in
+      '')
+	# Create intermediate dirs using mode 755 as modified by the umask.
+	# This is like FreeBSD 'install' as of 1997-10-28.
+	umask=`umask`
+	case $stripcmd.$umask in
+	  # Optimize common cases.
+	  *[2367][2367]) mkdir_umask=$umask;;
+	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+	  *[0-7])
+	    mkdir_umask=`expr $umask + 22 \
+	      - $umask % 100 % 40 + $umask % 20 \
+	      - $umask % 10 % 4 + $umask % 2
+	    `;;
+	  *) mkdir_umask=$umask,go-w;;
+	esac
+
+	# With -d, create the new directory with the user-specified mode.
+	# Otherwise, rely on $mkdir_umask.
+	if test -n "$dir_arg"; then
+	  mkdir_mode=-m$mode
+	else
+	  mkdir_mode=
+	fi
+
+	posix_mkdir=false
+	case $umask in
+	  *[123567][0-7][0-7])
+	    # POSIX mkdir -p sets u+wx bits regardless of umask, which
+	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+	    ;;
+	  *)
+	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+	    if (umask $mkdir_umask &&
+		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+	    then
+	      if test -z "$dir_arg" || {
+		   # Check for POSIX incompatibilities with -m.
+		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+		   # other-writeable bit of parent directory when it shouldn't.
+		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
+		   case $ls_ld_tmpdir in
+		     d????-?r-*) different_mode=700;;
+		     d????-?--*) different_mode=755;;
+		     *) false;;
+		   esac &&
+		   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+		     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+		   }
+		 }
+	      then posix_mkdir=:
+	      fi
+	      rmdir "$tmpdir/d" "$tmpdir"
+	    else
+	      # Remove any dirs left behind by ancient mkdir implementations.
+	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+	    fi
+	    trap '' 0;;
+	esac;;
+    esac
+
+    if
+      $posix_mkdir && (
+	umask $mkdir_umask &&
+	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+      )
+    then :
+    else
+
+      # The umask is ridiculous, or mkdir does not conform to POSIX,
+      # or it failed possibly due to a race condition.  Create the
+      # directory the slow way, step by step, checking for races as we go.
+
+      case $dstdir in
+	/*) prefix='/';;
+	-*) prefix='./';;
+	*)  prefix='';;
+      esac
+
+      eval "$initialize_posix_glob"
+
+      oIFS=$IFS
+      IFS=/
+      $posix_glob set -f
+      set fnord $dstdir
+      shift
+      $posix_glob set +f
+      IFS=$oIFS
+
+      prefixes=
+
+      for d
+      do
+	test -z "$d" && continue
+
+	prefix=$prefix$d
+	if test -d "$prefix"; then
+	  prefixes=
+	else
+	  if $posix_mkdir; then
+	    (umask=$mkdir_umask &&
+	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+	    # Don't fail if two instances are running concurrently.
+	    test -d "$prefix" || exit 1
+	  else
+	    case $prefix in
+	      *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+	      *) qprefix=$prefix;;
+	    esac
+	    prefixes="$prefixes '$qprefix'"
+	  fi
+	fi
+	prefix=$prefix/
+      done
+
+      if test -n "$prefixes"; then
+	# Don't fail if two instances are running concurrently.
+	(umask $mkdir_umask &&
+	 eval "\$doit_exec \$mkdirprog $prefixes") ||
+	  test -d "$dstdir" || exit 1
+	obsolete_mkdir_used=true
+      fi
+    fi
+  fi
+
+  if test -n "$dir_arg"; then
+    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+  else
+
+    # Make a couple of temp file names in the proper directory.
+    dsttmp=$dstdir/_inst.$$_
+    rmtmp=$dstdir/_rm.$$_
+
+    # Trap to clean up those temp files at exit.
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+    # Copy the file name to the temp name.
+    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+    # 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 $cpprog $src $dsttmp" command.
+    #
+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+    # If -C, don't bother to copy if it wouldn't change the file.
+    if $copy_on_change &&
+       old=`LC_ALL=C ls -dlL "$dst"	2>/dev/null` &&
+       new=`LC_ALL=C ls -dlL "$dsttmp"	2>/dev/null` &&
+
+       eval "$initialize_posix_glob" &&
+       $posix_glob set -f &&
+       set X $old && old=:$2:$4:$5:$6 &&
+       set X $new && new=:$2:$4:$5:$6 &&
+       $posix_glob set +f &&
+
+       test "$old" = "$new" &&
+       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+    then
+      rm -f "$dsttmp"
+    else
+      # Rename the file to the real destination.
+      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+      # The rename failed, perhaps because mv can't rename something else
+      # to itself, or perhaps because mv is so ancient that it does not
+      # support -f.
+      {
+	# Now remove or move aside any old file at destination location.
+	# We try this two ways since rm can't unlink itself on some
+	# systems and the destination file might be busy for other
+	# reasons.  In this case, the final cleanup might fail but the new
+	# file should still install successfully.
+	{
+	  test ! -f "$dst" ||
+	  $doit $rmcmd -f "$dst" 2>/dev/null ||
+	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+	    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+	  } ||
+	  { echo "$0: cannot unlink or rename $dst" >&2
+	    (exit 1); exit 1
+	  }
+	} &&
+
+	# Now rename the file to the real destination.
+	$doit $mvcmd "$dsttmp" "$dst"
+      }
+    fi || exit 1
+
+    trap '' 0
+  fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
Index: branches/testFACT++branch/.aux_dir/ltmain.sh
===================================================================
--- branches/testFACT++branch/.aux_dir/ltmain.sh	(revision 18277)
+++ branches/testFACT++branch/.aux_dir/ltmain.sh	(revision 18277)
@@ -0,0 +1,9661 @@
+
+# libtool (GNU libtool) 2.4.2
+# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
+# 2007, 2008, 2009, 2010, 2011 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.
+
+# GNU Libtool 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.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool 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 GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html,
+# or obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Usage: $progname [OPTION]... [MODE-ARG]...
+#
+# Provide generalized library-building support services.
+#
+#       --config             show all configuration variables
+#       --debug              enable verbose shell tracing
+#   -n, --dry-run            display commands without modifying any files
+#       --features           display basic configuration information and exit
+#       --mode=MODE          use operation mode MODE
+#       --preserve-dup-deps  don't remove duplicate dependency libraries
+#       --quiet, --silent    don't print informational messages
+#       --no-quiet, --no-silent
+#                            print informational messages (default)
+#       --no-warn            don't display warning messages
+#       --tag=TAG            use configuration variables from tag TAG
+#   -v, --verbose            print more informational messages than default
+#       --no-verbose         don't print the extra informational messages
+#       --version            print version information
+#   -h, --help, --help-all   print short, long, or detailed help message
+#
+# MODE must be one of the following:
+#
+#         clean              remove files from the build directory
+#         compile            compile a source file into a libtool object
+#         execute            automatically set library path, then run a program
+#         finish             complete the installation of libtool libraries
+#         install            install libraries or executables
+#         link               create a library or an executable
+#         uninstall          remove libraries from an installed directory
+#
+# MODE-ARGS vary depending on the MODE.  When passed as first option,
+# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
+# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
+#
+# When reporting a bug, please describe a test case to reproduce it and
+# include the following information:
+#
+#         host-triplet:	$host
+#         shell:		$SHELL
+#         compiler:		$LTCC
+#         compiler flags:		$LTCFLAGS
+#         linker:		$LD (gnu? $with_gnu_ld)
+#         $progname:	(GNU libtool) 2.4.2 Debian-2.4.2-1ubuntu1
+#         automake:	$automake_version
+#         autoconf:	$autoconf_version
+#
+# Report bugs to <bug-libtool@gnu.org>.
+# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
+# General help using GNU software: <http://www.gnu.org/gethelp/>.
+
+PROGRAM=libtool
+PACKAGE=libtool
+VERSION="2.4.2 Debian-2.4.2-1ubuntu1"
+TIMESTAMP=""
+package_revision=1.3337
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+
+# NLS nuisances: We save the old values to restore during execute mode.
+lt_user_locale=
+lt_safe_locale=
+for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+  eval "if test \"\${$lt_var+set}\" = set; then
+          save_$lt_var=\$$lt_var
+          $lt_var=C
+	  export $lt_var
+	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
+	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
+	fi"
+done
+LC_ALL=C
+LANGUAGE=C
+export LANGUAGE LC_ALL
+
+$lt_unset CDPATH
+
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+
+
+: ${CP="cp -f"}
+test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
+: ${MAKE="make"}
+: ${MKDIR="mkdir"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
+: ${Xsed="$SED -e 1s/^X//"}
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
+EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
+
+exit_status=$EXIT_SUCCESS
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" 	$lt_nl"
+
+dirname="s,/[^/]*$,,"
+basename="s,^.*/,,"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+    if test "X$func_dirname_result" = "X${1}"; then
+      func_dirname_result="${3}"
+    else
+      func_dirname_result="$func_dirname_result${2}"
+    fi
+} # func_dirname may be replaced by extended shell implementation
+
+
+# func_basename file
+func_basename ()
+{
+    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+} # func_basename may be replaced by extended shell implementation
+
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+#   dirname:  Compute the dirname of FILE.  If nonempty,
+#             add APPEND to the result, otherwise set result
+#             to NONDIR_REPLACEMENT.
+#             value returned in "$func_dirname_result"
+#   basename: Compute filename of FILE.
+#             value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+    # Extract subdirectory from the argument.
+    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
+    if test "X$func_dirname_result" = "X${1}"; then
+      func_dirname_result="${3}"
+    else
+      func_dirname_result="$func_dirname_result${2}"
+    fi
+    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
+} # func_dirname_and_basename may be replaced by extended shell implementation
+
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+    case ${2} in
+      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+    esac
+} # func_stripname may be replaced by extended shell implementation
+
+
+# These SED scripts presuppose an absolute path with a trailing slash.
+pathcar='s,^/\([^/]*\).*$,\1,'
+pathcdr='s,^/[^/]*,,'
+removedotparts=':dotsl
+		s@/\./@/@g
+		t dotsl
+		s,/\.$,/,'
+collapseslashes='s@/\{1,\}@/@g'
+finalslash='s,/*$,/,'
+
+# func_normal_abspath PATH
+# Remove doubled-up and trailing slashes, "." path components,
+# and cancel out any ".." path components in PATH after making
+# it an absolute path.
+#             value returned in "$func_normal_abspath_result"
+func_normal_abspath ()
+{
+  # Start from root dir and reassemble the path.
+  func_normal_abspath_result=
+  func_normal_abspath_tpath=$1
+  func_normal_abspath_altnamespace=
+  case $func_normal_abspath_tpath in
+    "")
+      # Empty path, that just means $cwd.
+      func_stripname '' '/' "`pwd`"
+      func_normal_abspath_result=$func_stripname_result
+      return
+    ;;
+    # The next three entries are used to spot a run of precisely
+    # two leading slashes without using negated character classes;
+    # we take advantage of case's first-match behaviour.
+    ///*)
+      # Unusual form of absolute path, do nothing.
+    ;;
+    //*)
+      # Not necessarily an ordinary path; POSIX reserves leading '//'
+      # and for example Cygwin uses it to access remote file shares
+      # over CIFS/SMB, so we conserve a leading double slash if found.
+      func_normal_abspath_altnamespace=/
+    ;;
+    /*)
+      # Absolute path, do nothing.
+    ;;
+    *)
+      # Relative path, prepend $cwd.
+      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
+    ;;
+  esac
+  # Cancel out all the simple stuff to save iterations.  We also want
+  # the path to end with a slash for ease of parsing, so make sure
+  # there is one (and only one) here.
+  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
+  while :; do
+    # Processed it all yet?
+    if test "$func_normal_abspath_tpath" = / ; then
+      # If we ascended to the root using ".." the result may be empty now.
+      if test -z "$func_normal_abspath_result" ; then
+        func_normal_abspath_result=/
+      fi
+      break
+    fi
+    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
+        -e "$pathcar"`
+    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+        -e "$pathcdr"`
+    # Figure out what to do with it
+    case $func_normal_abspath_tcomponent in
+      "")
+        # Trailing empty path component, ignore it.
+      ;;
+      ..)
+        # Parent dir; strip last assembled component from result.
+        func_dirname "$func_normal_abspath_result"
+        func_normal_abspath_result=$func_dirname_result
+      ;;
+      *)
+        # Actual path component, append it.
+        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
+      ;;
+    esac
+  done
+  # Restore leading double-slash if one was found on entry.
+  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
+}
+
+# func_relative_path SRCDIR DSTDIR
+# generates a relative path from SRCDIR to DSTDIR, with a trailing
+# slash if non-empty, suitable for immediately appending a filename
+# without needing to append a separator.
+#             value returned in "$func_relative_path_result"
+func_relative_path ()
+{
+  func_relative_path_result=
+  func_normal_abspath "$1"
+  func_relative_path_tlibdir=$func_normal_abspath_result
+  func_normal_abspath "$2"
+  func_relative_path_tbindir=$func_normal_abspath_result
+
+  # Ascend the tree starting from libdir
+  while :; do
+    # check if we have found a prefix of bindir
+    case $func_relative_path_tbindir in
+      $func_relative_path_tlibdir)
+        # found an exact match
+        func_relative_path_tcancelled=
+        break
+        ;;
+      $func_relative_path_tlibdir*)
+        # found a matching prefix
+        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
+        func_relative_path_tcancelled=$func_stripname_result
+        if test -z "$func_relative_path_result"; then
+          func_relative_path_result=.
+        fi
+        break
+        ;;
+      *)
+        func_dirname $func_relative_path_tlibdir
+        func_relative_path_tlibdir=${func_dirname_result}
+        if test "x$func_relative_path_tlibdir" = x ; then
+          # Have to descend all the way to the root!
+          func_relative_path_result=../$func_relative_path_result
+          func_relative_path_tcancelled=$func_relative_path_tbindir
+          break
+        fi
+        func_relative_path_result=../$func_relative_path_result
+        ;;
+    esac
+  done
+
+  # Now calculate path; take care to avoid doubling-up slashes.
+  func_stripname '' '/' "$func_relative_path_result"
+  func_relative_path_result=$func_stripname_result
+  func_stripname '/' '/' "$func_relative_path_tcancelled"
+  if test "x$func_stripname_result" != x ; then
+    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
+  fi
+
+  # Normalisation. If bindir is libdir, return empty string,
+  # else relative path ending with a slash; either way, target
+  # file name can be directly appended.
+  if test ! -z "$func_relative_path_result"; then
+    func_stripname './' '' "$func_relative_path_result/"
+    func_relative_path_result=$func_stripname_result
+  fi
+}
+
+# The name of this program:
+func_dirname_and_basename "$progpath"
+progname=$func_basename_result
+
+# Make sure we have an absolute path for reexecution:
+case $progpath in
+  [\\/]*|[A-Za-z]:\\*) ;;
+  *[\\/]*)
+     progdir=$func_dirname_result
+     progdir=`cd "$progdir" && pwd`
+     progpath="$progdir/$progname"
+     ;;
+  *)
+     save_IFS="$IFS"
+     IFS=${PATH_SEPARATOR-:}
+     for progdir in $PATH; do
+       IFS="$save_IFS"
+       test -x "$progdir/$progname" && break
+     done
+     IFS="$save_IFS"
+     test -n "$progdir" || progdir=`pwd`
+     progpath="$progdir/$progname"
+     ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution that turns a string into a regex matching for the
+# string literally.
+sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
+
+# Sed substitution that converts a w32 file name or path
+# which contains forward slashes, into one that contains
+# (escaped) backslashes.  A very naive implementation.
+lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+
+# Re-`\' parameter expansions in output of double_quote_subst that were
+# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
+# in input to double_quote_subst, that '$' was protected from expansion.
+# Since each input `\' is now two `\'s, look for any number of runs of
+# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
+bs='\\'
+bs2='\\\\'
+bs4='\\\\\\\\'
+dollar='\$'
+sed_double_backslash="\
+  s/$bs4/&\\
+/g
+  s/^$bs2$dollar/$bs&/
+  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
+  s/\n//g"
+
+# Standard options:
+opt_dry_run=false
+opt_help=false
+opt_quiet=false
+opt_verbose=false
+opt_warning=:
+
+# func_echo arg...
+# Echo program name prefixed message, along with the current mode
+# name if it has been set yet.
+func_echo ()
+{
+    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
+}
+
+# func_verbose arg...
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
+{
+    $opt_verbose && func_echo ${1+"$@"}
+
+    # A bug in bash halts the script if the last line of a function
+    # fails when set -e is in force, so we need another command to
+    # work around that:
+    :
+}
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO "$*"
+}
+
+# func_error arg...
+# Echo program name prefixed message to standard error.
+func_error ()
+{
+    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
+}
+
+# func_warning arg...
+# Echo program name prefixed warning message to standard error.
+func_warning ()
+{
+    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
+
+    # bash bug again:
+    :
+}
+
+# func_fatal_error arg...
+# Echo program name prefixed message to standard error, and exit.
+func_fatal_error ()
+{
+    func_error ${1+"$@"}
+    exit $EXIT_FAILURE
+}
+
+# func_fatal_help arg...
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
+{
+    func_error ${1+"$@"}
+    func_fatal_error "$help"
+}
+help="Try \`$progname --help' for more information."  ## default
+
+
+# func_grep expression filename
+# Check whether EXPRESSION matches any line of FILENAME, without output.
+func_grep ()
+{
+    $GREP "$1" "$2" >/dev/null 2>&1
+}
+
+
+# func_mkdir_p directory-path
+# Make sure the entire path to DIRECTORY-PATH is available.
+func_mkdir_p ()
+{
+    my_directory_path="$1"
+    my_dir_list=
+
+    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
+
+      # Protect directory names starting with `-'
+      case $my_directory_path in
+        -*) my_directory_path="./$my_directory_path" ;;
+      esac
+
+      # While some portion of DIR does not yet exist...
+      while test ! -d "$my_directory_path"; do
+        # ...make a list in topmost first order.  Use a colon delimited
+	# list incase some portion of path contains whitespace.
+        my_dir_list="$my_directory_path:$my_dir_list"
+
+        # If the last portion added has no slash in it, the list is done
+        case $my_directory_path in */*) ;; *) break ;; esac
+
+        # ...otherwise throw away the child directory and loop
+        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
+      done
+      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
+
+      save_mkdir_p_IFS="$IFS"; IFS=':'
+      for my_dir in $my_dir_list; do
+	IFS="$save_mkdir_p_IFS"
+        # mkdir can fail with a `File exist' error if two processes
+        # try to create one of the directories concurrently.  Don't
+        # stop in that case!
+        $MKDIR "$my_dir" 2>/dev/null || :
+      done
+      IFS="$save_mkdir_p_IFS"
+
+      # Bail out if we (or some other process) failed to create a directory.
+      test -d "$my_directory_path" || \
+        func_fatal_error "Failed to create \`$1'"
+    fi
+}
+
+
+# func_mktempdir [string]
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible.  If
+# given, STRING is the basename for that directory.
+func_mktempdir ()
+{
+    my_template="${TMPDIR-/tmp}/${1-$progname}"
+
+    if test "$opt_dry_run" = ":"; then
+      # Return a directory name, but don't create it in dry-run mode
+      my_tmpdir="${my_template}-$$"
+    else
+
+      # If mktemp works, use that first and foremost
+      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+
+      if test ! -d "$my_tmpdir"; then
+        # Failing that, at least try and use $RANDOM to avoid a race
+        my_tmpdir="${my_template}-${RANDOM-0}$$"
+
+        save_mktempdir_umask=`umask`
+        umask 0077
+        $MKDIR "$my_tmpdir"
+        umask $save_mktempdir_umask
+      fi
+
+      # If we're not in dry-run mode, bomb out on failure
+      test -d "$my_tmpdir" || \
+        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
+    fi
+
+    $ECHO "$my_tmpdir"
+}
+
+
+# func_quote_for_eval arg
+# Aesthetically quote ARG to be evaled later.
+# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
+# is double-quoted, suitable for a subsequent eval, whereas
+# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
+# which are still active within double quotes backslashified.
+func_quote_for_eval ()
+{
+    case $1 in
+      *[\\\`\"\$]*)
+	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
+      *)
+        func_quote_for_eval_unquoted_result="$1" ;;
+    esac
+
+    case $func_quote_for_eval_unquoted_result in
+      # Double-quote args containing shell metacharacters to delay
+      # word splitting, command substitution and and variable
+      # expansion for a subsequent eval.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
+        ;;
+      *)
+        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
+    esac
+}
+
+
+# func_quote_for_expand arg
+# Aesthetically quote ARG to be evaled later; same as above,
+# but do not quote variable references.
+func_quote_for_expand ()
+{
+    case $1 in
+      *[\\\`\"]*)
+	my_arg=`$ECHO "$1" | $SED \
+	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
+      *)
+        my_arg="$1" ;;
+    esac
+
+    case $my_arg in
+      # Double-quote args containing shell metacharacters to delay
+      # word splitting and command substitution for a subsequent eval.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+        my_arg="\"$my_arg\""
+        ;;
+    esac
+
+    func_quote_for_expand_result="$my_arg"
+}
+
+
+# func_show_eval cmd [fail_exp]
+# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.
+func_show_eval ()
+{
+    my_cmd="$1"
+    my_fail_exp="${2-:}"
+
+    ${opt_silent-false} || {
+      func_quote_for_expand "$my_cmd"
+      eval "func_echo $func_quote_for_expand_result"
+    }
+
+    if ${opt_dry_run-false}; then :; else
+      eval "$my_cmd"
+      my_status=$?
+      if test "$my_status" -eq 0; then :; else
+	eval "(exit $my_status); $my_fail_exp"
+      fi
+    fi
+}
+
+
+# func_show_eval_locale cmd [fail_exp]
+# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.  Use the saved locale for evaluation.
+func_show_eval_locale ()
+{
+    my_cmd="$1"
+    my_fail_exp="${2-:}"
+
+    ${opt_silent-false} || {
+      func_quote_for_expand "$my_cmd"
+      eval "func_echo $func_quote_for_expand_result"
+    }
+
+    if ${opt_dry_run-false}; then :; else
+      eval "$lt_user_locale
+	    $my_cmd"
+      my_status=$?
+      eval "$lt_safe_locale"
+      if test "$my_status" -eq 0; then :; else
+	eval "(exit $my_status); $my_fail_exp"
+      fi
+    fi
+}
+
+# func_tr_sh
+# Turn $1 into a string suitable for a shell variable name.
+# Result is stored in $func_tr_sh_result.  All characters
+# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
+# if $1 begins with a digit, a '_' is prepended as well.
+func_tr_sh ()
+{
+  case $1 in
+  [0-9]* | *[!a-zA-Z0-9_]*)
+    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
+    ;;
+  * )
+    func_tr_sh_result=$1
+    ;;
+  esac
+}
+
+
+# func_version
+# Echo version message to standard output and exit.
+func_version ()
+{
+    $opt_debug
+
+    $SED -n '/(C)/!b go
+	:more
+	/\./!{
+	  N
+	  s/\n# / /
+	  b more
+	}
+	:go
+	/^# '$PROGRAM' (GNU /,/# warranty; / {
+        s/^# //
+	s/^# *$//
+        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
+        p
+     }' < "$progpath"
+     exit $?
+}
+
+# func_usage
+# Echo short help message to standard output and exit.
+func_usage ()
+{
+    $opt_debug
+
+    $SED -n '/^# Usage:/,/^#  *.*--help/ {
+        s/^# //
+	s/^# *$//
+	s/\$progname/'$progname'/
+	p
+    }' < "$progpath"
+    echo
+    $ECHO "run \`$progname --help | more' for full usage"
+    exit $?
+}
+
+# func_help [NOEXIT]
+# Echo long help message to standard output and exit,
+# unless 'noexit' is passed as argument.
+func_help ()
+{
+    $opt_debug
+
+    $SED -n '/^# Usage:/,/# Report bugs to/ {
+	:print
+        s/^# //
+	s/^# *$//
+	s*\$progname*'$progname'*
+	s*\$host*'"$host"'*
+	s*\$SHELL*'"$SHELL"'*
+	s*\$LTCC*'"$LTCC"'*
+	s*\$LTCFLAGS*'"$LTCFLAGS"'*
+	s*\$LD*'"$LD"'*
+	s/\$with_gnu_ld/'"$with_gnu_ld"'/
+	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
+	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
+	p
+	d
+     }
+     /^# .* home page:/b print
+     /^# General help using/b print
+     ' < "$progpath"
+    ret=$?
+    if test -z "$1"; then
+      exit $ret
+    fi
+}
+
+# func_missing_arg argname
+# Echo program name prefixed message to standard error and set global
+# exit_cmd.
+func_missing_arg ()
+{
+    $opt_debug
+
+    func_error "missing argument for $1."
+    exit_cmd=exit
+}
+
+
+# func_split_short_opt shortopt
+# Set func_split_short_opt_name and func_split_short_opt_arg shell
+# variables after splitting SHORTOPT after the 2nd character.
+func_split_short_opt ()
+{
+    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
+    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
+
+    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
+    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
+} # func_split_short_opt may be replaced by extended shell implementation
+
+
+# func_split_long_opt longopt
+# Set func_split_long_opt_name and func_split_long_opt_arg shell
+# variables after splitting LONGOPT at the `=' sign.
+func_split_long_opt ()
+{
+    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
+    my_sed_long_arg='1s/^--[^=]*=//'
+
+    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
+    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
+} # func_split_long_opt may be replaced by extended shell implementation
+
+exit_cmd=:
+
+
+
+
+
+magic="%%%MAGIC variable%%%"
+magic_exe="%%%MAGIC EXE variable%%%"
+
+# Global variables.
+nonopt=
+preserve_args=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+extracted_archives=
+extracted_serial=0
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+    eval "${1}=\$${1}\${2}"
+} # func_append may be replaced by extended shell implementation
+
+# func_append_quoted var value
+# Quote VALUE and append to the end of shell variable VAR, separated
+# by a space.
+func_append_quoted ()
+{
+    func_quote_for_eval "${2}"
+    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
+} # func_append_quoted may be replaced by extended shell implementation
+
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+    func_arith_result=`expr "${@}"`
+} # func_arith may be replaced by extended shell implementation
+
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
+} # func_len may be replaced by extended shell implementation
+
+
+# func_lo2o object
+func_lo2o ()
+{
+    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+} # func_lo2o may be replaced by extended shell implementation
+
+
+# func_xform libobj-or-source
+func_xform ()
+{
+    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+} # func_xform may be replaced by extended shell implementation
+
+
+# func_fatal_configuration arg...
+# Echo program name prefixed message to standard error, followed by
+# a configuration failure hint, and exit.
+func_fatal_configuration ()
+{
+    func_error ${1+"$@"}
+    func_error "See the $PACKAGE documentation for more information."
+    func_fatal_error "Fatal configuration error."
+}
+
+
+# func_config
+# Display the configuration for all the tags in this script.
+func_config ()
+{
+    re_begincf='^# ### BEGIN LIBTOOL'
+    re_endcf='^# ### END LIBTOOL'
+
+    # Default configuration.
+    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
+
+    # Now print the configurations for the tags.
+    for tagname in $taglist; do
+      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
+    done
+
+    exit $?
+}
+
+# func_features
+# Display the features supported by this script.
+func_features ()
+{
+    echo "host: $host"
+    if test "$build_libtool_libs" = yes; then
+      echo "enable shared libraries"
+    else
+      echo "disable shared libraries"
+    fi
+    if test "$build_old_libs" = yes; then
+      echo "enable static libraries"
+    else
+      echo "disable static libraries"
+    fi
+
+    exit $?
+}
+
+# func_enable_tag tagname
+# Verify that TAGNAME is valid, and either flag an error and exit, or
+# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
+# variable here.
+func_enable_tag ()
+{
+  # Global variable:
+  tagname="$1"
+
+  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
+  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
+  sed_extractcf="/$re_begincf/,/$re_endcf/p"
+
+  # Validate tagname.
+  case $tagname in
+    *[!-_A-Za-z0-9,/]*)
+      func_fatal_error "invalid tag name: $tagname"
+      ;;
+  esac
+
+  # Don't test for the "default" C tag, as we know it's
+  # there but not specially marked.
+  case $tagname in
+    CC) ;;
+    *)
+      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
+	taglist="$taglist $tagname"
+
+	# Evaluate the configuration.  Be careful to quote the path
+	# and the sed script, to avoid splitting on whitespace, but
+	# also don't use non-portable quotes within backquotes within
+	# quotes we have to do it in 2 steps:
+	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
+	eval "$extractedcf"
+      else
+	func_error "ignoring unknown tag $tagname"
+      fi
+      ;;
+  esac
+}
+
+# func_check_version_match
+# Ensure that we are using m4 macros, and libtool script from the same
+# release of libtool.
+func_check_version_match ()
+{
+  if test "$package_revision" != "$macro_revision"; then
+    if test "$VERSION" != "$macro_version"; then
+      if test -z "$macro_version"; then
+        cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from an older release.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+      else
+        cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+      fi
+    else
+      cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
+$progname: but the definition of this LT_INIT comes from revision $macro_revision.
+$progname: You should recreate aclocal.m4 with macros from revision $package_revision
+$progname: of $PACKAGE $VERSION and run autoconf again.
+_LT_EOF
+    fi
+
+    exit $EXIT_MISMATCH
+  fi
+}
+
+
+# Shorthand for --mode=foo, only valid as the first argument
+case $1 in
+clean|clea|cle|cl)
+  shift; set dummy --mode clean ${1+"$@"}; shift
+  ;;
+compile|compil|compi|comp|com|co|c)
+  shift; set dummy --mode compile ${1+"$@"}; shift
+  ;;
+execute|execut|execu|exec|exe|ex|e)
+  shift; set dummy --mode execute ${1+"$@"}; shift
+  ;;
+finish|finis|fini|fin|fi|f)
+  shift; set dummy --mode finish ${1+"$@"}; shift
+  ;;
+install|instal|insta|inst|ins|in|i)
+  shift; set dummy --mode install ${1+"$@"}; shift
+  ;;
+link|lin|li|l)
+  shift; set dummy --mode link ${1+"$@"}; shift
+  ;;
+uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+  shift; set dummy --mode uninstall ${1+"$@"}; shift
+  ;;
+esac
+
+
+
+# Option defaults:
+opt_debug=:
+opt_dry_run=false
+opt_config=false
+opt_preserve_dup_deps=false
+opt_features=false
+opt_finish=false
+opt_help=false
+opt_help_all=false
+opt_silent=:
+opt_warning=:
+opt_verbose=:
+opt_silent=false
+opt_verbose=false
+
+
+# Parse options once, thoroughly.  This comes as soon as possible in the
+# script to make things like `--version' happen as quickly as we can.
+{
+  # this just eases exit handling
+  while test $# -gt 0; do
+    opt="$1"
+    shift
+    case $opt in
+      --debug|-x)	opt_debug='set -x'
+			func_echo "enabling shell trace mode"
+			$opt_debug
+			;;
+      --dry-run|--dryrun|-n)
+			opt_dry_run=:
+			;;
+      --config)
+			opt_config=:
+func_config
+			;;
+      --dlopen|-dlopen)
+			optarg="$1"
+			opt_dlopen="${opt_dlopen+$opt_dlopen
+}$optarg"
+			shift
+			;;
+      --preserve-dup-deps)
+			opt_preserve_dup_deps=:
+			;;
+      --features)
+			opt_features=:
+func_features
+			;;
+      --finish)
+			opt_finish=:
+set dummy --mode finish ${1+"$@"}; shift
+			;;
+      --help)
+			opt_help=:
+			;;
+      --help-all)
+			opt_help_all=:
+opt_help=': help-all'
+			;;
+      --mode)
+			test $# = 0 && func_missing_arg $opt && break
+			optarg="$1"
+			opt_mode="$optarg"
+case $optarg in
+  # Valid mode arguments:
+  clean|compile|execute|finish|install|link|relink|uninstall) ;;
+
+  # Catch anything else as an error
+  *) func_error "invalid argument for $opt"
+     exit_cmd=exit
+     break
+     ;;
+esac
+			shift
+			;;
+      --no-silent|--no-quiet)
+			opt_silent=false
+func_append preserve_args " $opt"
+			;;
+      --no-warning|--no-warn)
+			opt_warning=false
+func_append preserve_args " $opt"
+			;;
+      --no-verbose)
+			opt_verbose=false
+func_append preserve_args " $opt"
+			;;
+      --silent|--quiet)
+			opt_silent=:
+func_append preserve_args " $opt"
+        opt_verbose=false
+			;;
+      --verbose|-v)
+			opt_verbose=:
+func_append preserve_args " $opt"
+opt_silent=false
+			;;
+      --tag)
+			test $# = 0 && func_missing_arg $opt && break
+			optarg="$1"
+			opt_tag="$optarg"
+func_append preserve_args " $opt $optarg"
+func_enable_tag "$optarg"
+			shift
+			;;
+
+      -\?|-h)		func_usage				;;
+      --help)		func_help				;;
+      --version)	func_version				;;
+
+      # Separate optargs to long options:
+      --*=*)
+			func_split_long_opt "$opt"
+			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
+			shift
+			;;
+
+      # Separate non-argument short options:
+      -\?*|-h*|-n*|-v*)
+			func_split_short_opt "$opt"
+			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
+			shift
+			;;
+
+      --)		break					;;
+      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
+      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
+    esac
+  done
+
+  # Validate options:
+
+  # save first non-option argument
+  if test "$#" -gt 0; then
+    nonopt="$opt"
+    shift
+  fi
+
+  # preserve --debug
+  test "$opt_debug" = : || func_append preserve_args " --debug"
+
+  case $host in
+    *cygwin* | *mingw* | *pw32* | *cegcc*)
+      # don't eliminate duplications in $postdeps and $predeps
+      opt_duplicate_compiler_generated_deps=:
+      ;;
+    *)
+      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
+      ;;
+  esac
+
+  $opt_help || {
+    # Sanity checks first:
+    func_check_version_match
+
+    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+      func_fatal_configuration "not configured to build any kind of library"
+    fi
+
+    # Darwin sucks
+    eval std_shrext=\"$shrext_cmds\"
+
+    # Only execute mode is allowed to have -dlopen flags.
+    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
+      func_error "unrecognized option \`-dlopen'"
+      $ECHO "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Change the help message to a mode-specific one.
+    generic_help="$help"
+    help="Try \`$progname --help --mode=$opt_mode' for more information."
+  }
+
+
+  # Bail if the options were screwed
+  $exit_cmd $EXIT_FAILURE
+}
+
+
+
+
+## ----------- ##
+##    Main.    ##
+## ----------- ##
+
+# func_lalib_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_lalib_p ()
+{
+    test -f "$1" &&
+      $SED -e 4q "$1" 2>/dev/null \
+        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+}
+
+# func_lalib_unsafe_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function implements the same check as func_lalib_p without
+# resorting to external programs.  To this end, it redirects stdin and
+# closes it afterwards, without saving the original file descriptor.
+# As a safety measure, use it only where a negative result would be
+# fatal anyway.  Works if `file' does not exist.
+func_lalib_unsafe_p ()
+{
+    lalib_p=no
+    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
+	for lalib_p_l in 1 2 3 4
+	do
+	    read lalib_p_line
+	    case "$lalib_p_line" in
+		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
+	    esac
+	done
+	exec 0<&5 5<&-
+    fi
+    test "$lalib_p" = yes
+}
+
+# func_ltwrapper_script_p file
+# True iff FILE is a libtool wrapper script
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_script_p ()
+{
+    func_lalib_p "$1"
+}
+
+# func_ltwrapper_executable_p file
+# True iff FILE is a libtool wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_executable_p ()
+{
+    func_ltwrapper_exec_suffix=
+    case $1 in
+    *.exe) ;;
+    *) func_ltwrapper_exec_suffix=.exe ;;
+    esac
+    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
+}
+
+# func_ltwrapper_scriptname file
+# Assumes file is an ltwrapper_executable
+# uses $file to determine the appropriate filename for a
+# temporary ltwrapper_script.
+func_ltwrapper_scriptname ()
+{
+    func_dirname_and_basename "$1" "" "."
+    func_stripname '' '.exe' "$func_basename_result"
+    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
+}
+
+# func_ltwrapper_p file
+# True iff FILE is a libtool wrapper script or wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_p ()
+{
+    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
+}
+
+
+# func_execute_cmds commands fail_cmd
+# Execute tilde-delimited COMMANDS.
+# If FAIL_CMD is given, eval that upon failure.
+# FAIL_CMD may read-access the current command in variable CMD!
+func_execute_cmds ()
+{
+    $opt_debug
+    save_ifs=$IFS; IFS='~'
+    for cmd in $1; do
+      IFS=$save_ifs
+      eval cmd=\"$cmd\"
+      func_show_eval "$cmd" "${2-:}"
+    done
+    IFS=$save_ifs
+}
+
+
+# func_source file
+# Source FILE, adding directory component if necessary.
+# Note that it is not necessary on cygwin/mingw to append a dot to
+# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
+# behavior happens only for exec(3), not for open(2)!  Also, sourcing
+# `FILE.' does not work on cygwin managed mounts.
+func_source ()
+{
+    $opt_debug
+    case $1 in
+    */* | *\\*)	. "$1" ;;
+    *)		. "./$1" ;;
+    esac
+}
+
+
+# func_resolve_sysroot PATH
+# Replace a leading = in PATH with a sysroot.  Store the result into
+# func_resolve_sysroot_result
+func_resolve_sysroot ()
+{
+  func_resolve_sysroot_result=$1
+  case $func_resolve_sysroot_result in
+  =*)
+    func_stripname '=' '' "$func_resolve_sysroot_result"
+    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
+    ;;
+  esac
+}
+
+# func_replace_sysroot PATH
+# If PATH begins with the sysroot, replace it with = and
+# store the result into func_replace_sysroot_result.
+func_replace_sysroot ()
+{
+  case "$lt_sysroot:$1" in
+  ?*:"$lt_sysroot"*)
+    func_stripname "$lt_sysroot" '' "$1"
+    func_replace_sysroot_result="=$func_stripname_result"
+    ;;
+  *)
+    # Including no sysroot.
+    func_replace_sysroot_result=$1
+    ;;
+  esac
+}
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+    $opt_debug
+    if test -n "$available_tags" && test -z "$tagname"; then
+      CC_quoted=
+      for arg in $CC; do
+	func_append_quoted CC_quoted "$arg"
+      done
+      CC_expanded=`func_echo_all $CC`
+      CC_quoted_expanded=`func_echo_all $CC_quoted`
+      case $@ in
+      # Blanks in the command may have been stripped by the calling shell,
+      # but not from the CC environment variable when configure was run.
+      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
+      # Blanks at the start of $base_compile will cause this to fail
+      # if we don't check for them as well.
+      *)
+	for z in $available_tags; do
+	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+	    # Evaluate the configuration.
+	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+	    CC_quoted=
+	    for arg in $CC; do
+	      # Double-quote args containing other shell metacharacters.
+	      func_append_quoted CC_quoted "$arg"
+	    done
+	    CC_expanded=`func_echo_all $CC`
+	    CC_quoted_expanded=`func_echo_all $CC_quoted`
+	    case "$@ " in
+	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
+	      # The compiler in the base compile command matches
+	      # the one in the tagged configuration.
+	      # Assume this is the tagged configuration we want.
+	      tagname=$z
+	      break
+	      ;;
+	    esac
+	  fi
+	done
+	# If $tagname still isn't set, then no tagged configuration
+	# was found and let the user know that the "--tag" command
+	# line option must be used.
+	if test -z "$tagname"; then
+	  func_echo "unable to infer tagged configuration"
+	  func_fatal_error "specify a tag with \`--tag'"
+#	else
+#	  func_verbose "using $tagname tagged configuration"
+	fi
+	;;
+      esac
+    fi
+}
+
+
+
+# func_write_libtool_object output_name pic_name nonpic_name
+# Create a libtool object file (analogous to a ".la" file),
+# but don't create it if we're doing a dry run.
+func_write_libtool_object ()
+{
+    write_libobj=${1}
+    if test "$build_libtool_libs" = yes; then
+      write_lobj=\'${2}\'
+    else
+      write_lobj=none
+    fi
+
+    if test "$build_old_libs" = yes; then
+      write_oldobj=\'${3}\'
+    else
+      write_oldobj=none
+    fi
+
+    $opt_dry_run || {
+      cat >${write_libobj}T <<EOF
+# $write_libobj - a libtool object file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object=$write_lobj
+
+# Name of the non-PIC object
+non_pic_object=$write_oldobj
+
+EOF
+      $MV "${write_libobj}T" "${write_libobj}"
+    }
+}
+
+
+##################################################
+# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
+##################################################
+
+# func_convert_core_file_wine_to_w32 ARG
+# Helper function used by file name conversion functions when $build is *nix,
+# and $host is mingw, cygwin, or some other w32 environment. Relies on a
+# correctly configured wine environment available, with the winepath program
+# in $build's $PATH.
+#
+# ARG is the $build file name to be converted to w32 format.
+# Result is available in $func_convert_core_file_wine_to_w32_result, and will
+# be empty on error (or when ARG is empty)
+func_convert_core_file_wine_to_w32 ()
+{
+  $opt_debug
+  func_convert_core_file_wine_to_w32_result="$1"
+  if test -n "$1"; then
+    # Unfortunately, winepath does not exit with a non-zero error code, so we
+    # are forced to check the contents of stdout. On the other hand, if the
+    # command is not found, the shell will set an exit code of 127 and print
+    # *an error message* to stdout. So we must check for both error code of
+    # zero AND non-empty stdout, which explains the odd construction:
+    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
+    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
+      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
+        $SED -e "$lt_sed_naive_backslashify"`
+    else
+      func_convert_core_file_wine_to_w32_result=
+    fi
+  fi
+}
+# end: func_convert_core_file_wine_to_w32
+
+
+# func_convert_core_path_wine_to_w32 ARG
+# Helper function used by path conversion functions when $build is *nix, and
+# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
+# configured wine environment available, with the winepath program in $build's
+# $PATH. Assumes ARG has no leading or trailing path separator characters.
+#
+# ARG is path to be converted from $build format to win32.
+# Result is available in $func_convert_core_path_wine_to_w32_result.
+# Unconvertible file (directory) names in ARG are skipped; if no directory names
+# are convertible, then the result may be empty.
+func_convert_core_path_wine_to_w32 ()
+{
+  $opt_debug
+  # unfortunately, winepath doesn't convert paths, only file names
+  func_convert_core_path_wine_to_w32_result=""
+  if test -n "$1"; then
+    oldIFS=$IFS
+    IFS=:
+    for func_convert_core_path_wine_to_w32_f in $1; do
+      IFS=$oldIFS
+      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
+      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
+        if test -z "$func_convert_core_path_wine_to_w32_result"; then
+          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
+        else
+          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
+        fi
+      fi
+    done
+    IFS=$oldIFS
+  fi
+}
+# end: func_convert_core_path_wine_to_w32
+
+
+# func_cygpath ARGS...
+# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
+# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
+# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
+# (2), returns the Cygwin file name or path in func_cygpath_result (input
+# file name or path is assumed to be in w32 format, as previously converted
+# from $build's *nix or MSYS format). In case (3), returns the w32 file name
+# or path in func_cygpath_result (input file name or path is assumed to be in
+# Cygwin format). Returns an empty string on error.
+#
+# ARGS are passed to cygpath, with the last one being the file name or path to
+# be converted.
+#
+# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
+# environment variable; do not put it in $PATH.
+func_cygpath ()
+{
+  $opt_debug
+  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
+    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
+    if test "$?" -ne 0; then
+      # on failure, ensure result is empty
+      func_cygpath_result=
+    fi
+  else
+    func_cygpath_result=
+    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
+  fi
+}
+#end: func_cygpath
+
+
+# func_convert_core_msys_to_w32 ARG
+# Convert file name or path ARG from MSYS format to w32 format.  Return
+# result in func_convert_core_msys_to_w32_result.
+func_convert_core_msys_to_w32 ()
+{
+  $opt_debug
+  # awkward: cmd appends spaces to result
+  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
+    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
+}
+#end: func_convert_core_msys_to_w32
+
+
+# func_convert_file_check ARG1 ARG2
+# Verify that ARG1 (a file name in $build format) was converted to $host
+# format in ARG2. Otherwise, emit an error message, but continue (resetting
+# func_to_host_file_result to ARG1).
+func_convert_file_check ()
+{
+  $opt_debug
+  if test -z "$2" && test -n "$1" ; then
+    func_error "Could not determine host file name corresponding to"
+    func_error "  \`$1'"
+    func_error "Continuing, but uninstalled executables may not work."
+    # Fallback:
+    func_to_host_file_result="$1"
+  fi
+}
+# end func_convert_file_check
+
+
+# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
+# Verify that FROM_PATH (a path in $build format) was converted to $host
+# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
+# func_to_host_file_result to a simplistic fallback value (see below).
+func_convert_path_check ()
+{
+  $opt_debug
+  if test -z "$4" && test -n "$3"; then
+    func_error "Could not determine the host path corresponding to"
+    func_error "  \`$3'"
+    func_error "Continuing, but uninstalled executables may not work."
+    # Fallback.  This is a deliberately simplistic "conversion" and
+    # should not be "improved".  See libtool.info.
+    if test "x$1" != "x$2"; then
+      lt_replace_pathsep_chars="s|$1|$2|g"
+      func_to_host_path_result=`echo "$3" |
+        $SED -e "$lt_replace_pathsep_chars"`
+    else
+      func_to_host_path_result="$3"
+    fi
+  fi
+}
+# end func_convert_path_check
+
+
+# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
+# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
+# and appending REPL if ORIG matches BACKPAT.
+func_convert_path_front_back_pathsep ()
+{
+  $opt_debug
+  case $4 in
+  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
+    ;;
+  esac
+  case $4 in
+  $2 ) func_append func_to_host_path_result "$3"
+    ;;
+  esac
+}
+# end func_convert_path_front_back_pathsep
+
+
+##################################################
+# $build to $host FILE NAME CONVERSION FUNCTIONS #
+##################################################
+# invoked via `$to_host_file_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# Result will be available in $func_to_host_file_result.
+
+
+# func_to_host_file ARG
+# Converts the file name ARG from $build format to $host format. Return result
+# in func_to_host_file_result.
+func_to_host_file ()
+{
+  $opt_debug
+  $to_host_file_cmd "$1"
+}
+# end func_to_host_file
+
+
+# func_to_tool_file ARG LAZY
+# converts the file name ARG from $build format to toolchain format. Return
+# result in func_to_tool_file_result.  If the conversion in use is listed
+# in (the comma separated) LAZY, no conversion takes place.
+func_to_tool_file ()
+{
+  $opt_debug
+  case ,$2, in
+    *,"$to_tool_file_cmd",*)
+      func_to_tool_file_result=$1
+      ;;
+    *)
+      $to_tool_file_cmd "$1"
+      func_to_tool_file_result=$func_to_host_file_result
+      ;;
+  esac
+}
+# end func_to_tool_file
+
+
+# func_convert_file_noop ARG
+# Copy ARG to func_to_host_file_result.
+func_convert_file_noop ()
+{
+  func_to_host_file_result="$1"
+}
+# end func_convert_file_noop
+
+
+# func_convert_file_msys_to_w32 ARG
+# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper.  Returns result in
+# func_to_host_file_result.
+func_convert_file_msys_to_w32 ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    func_convert_core_msys_to_w32 "$1"
+    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_w32
+
+
+# func_convert_file_cygwin_to_w32 ARG
+# Convert file name ARG from Cygwin to w32 format.  Returns result in
+# func_to_host_file_result.
+func_convert_file_cygwin_to_w32 ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
+    # LT_CYGPATH in this case.
+    func_to_host_file_result=`cygpath -m "$1"`
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_cygwin_to_w32
+
+
+# func_convert_file_nix_to_w32 ARG
+# Convert file name ARG from *nix to w32 format.  Requires a wine environment
+# and a working winepath. Returns result in func_to_host_file_result.
+func_convert_file_nix_to_w32 ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    func_convert_core_file_wine_to_w32 "$1"
+    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_w32
+
+
+# func_convert_file_msys_to_cygwin ARG
+# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_file_msys_to_cygwin ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    func_convert_core_msys_to_w32 "$1"
+    func_cygpath -u "$func_convert_core_msys_to_w32_result"
+    func_to_host_file_result="$func_cygpath_result"
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_cygwin
+
+
+# func_convert_file_nix_to_cygwin ARG
+# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
+# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
+# in func_to_host_file_result.
+func_convert_file_nix_to_cygwin ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
+    func_convert_core_file_wine_to_w32 "$1"
+    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
+    func_to_host_file_result="$func_cygpath_result"
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_cygwin
+
+
+#############################################
+# $build to $host PATH CONVERSION FUNCTIONS #
+#############################################
+# invoked via `$to_host_path_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# The result will be available in $func_to_host_path_result.
+#
+# Path separators are also converted from $build format to $host format.  If
+# ARG begins or ends with a path separator character, it is preserved (but
+# converted to $host format) on output.
+#
+# All path conversion functions are named using the following convention:
+#   file name conversion function    : func_convert_file_X_to_Y ()
+#   path conversion function         : func_convert_path_X_to_Y ()
+# where, for any given $build/$host combination the 'X_to_Y' value is the
+# same.  If conversion functions are added for new $build/$host combinations,
+# the two new functions must follow this pattern, or func_init_to_host_path_cmd
+# will break.
+
+
+# func_init_to_host_path_cmd
+# Ensures that function "pointer" variable $to_host_path_cmd is set to the
+# appropriate value, based on the value of $to_host_file_cmd.
+to_host_path_cmd=
+func_init_to_host_path_cmd ()
+{
+  $opt_debug
+  if test -z "$to_host_path_cmd"; then
+    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
+    to_host_path_cmd="func_convert_path_${func_stripname_result}"
+  fi
+}
+
+
+# func_to_host_path ARG
+# Converts the path ARG from $build format to $host format. Return result
+# in func_to_host_path_result.
+func_to_host_path ()
+{
+  $opt_debug
+  func_init_to_host_path_cmd
+  $to_host_path_cmd "$1"
+}
+# end func_to_host_path
+
+
+# func_convert_path_noop ARG
+# Copy ARG to func_to_host_path_result.
+func_convert_path_noop ()
+{
+  func_to_host_path_result="$1"
+}
+# end func_convert_path_noop
+
+
+# func_convert_path_msys_to_w32 ARG
+# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper.  Returns result in
+# func_to_host_path_result.
+func_convert_path_msys_to_w32 ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # Remove leading and trailing path separator characters from ARG.  MSYS
+    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
+    # and winepath ignores them completely.
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_msys_to_w32
+
+
+# func_convert_path_cygwin_to_w32 ARG
+# Convert path ARG from Cygwin to w32 format.  Returns result in
+# func_to_host_file_result.
+func_convert_path_cygwin_to_w32 ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_cygwin_to_w32
+
+
+# func_convert_path_nix_to_w32 ARG
+# Convert path ARG from *nix to w32 format.  Requires a wine environment and
+# a working winepath.  Returns result in func_to_host_file_result.
+func_convert_path_nix_to_w32 ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_nix_to_w32
+
+
+# func_convert_path_msys_to_cygwin ARG
+# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_path_msys_to_cygwin ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
+    func_to_host_path_result="$func_cygpath_result"
+    func_convert_path_check : : \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+  fi
+}
+# end func_convert_path_msys_to_cygwin
+
+
+# func_convert_path_nix_to_cygwin ARG
+# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
+# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
+# func_to_host_file_result.
+func_convert_path_nix_to_cygwin ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # Remove leading and trailing path separator characters from
+    # ARG. msys behavior is inconsistent here, cygpath turns them
+    # into '.;' and ';.', and winepath ignores them completely.
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
+    func_to_host_path_result="$func_cygpath_result"
+    func_convert_path_check : : \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+  fi
+}
+# end func_convert_path_nix_to_cygwin
+
+
+# func_mode_compile arg...
+func_mode_compile ()
+{
+    $opt_debug
+    # Get the compilation command and the source file.
+    base_compile=
+    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
+    suppress_opt=yes
+    suppress_output=
+    arg_mode=normal
+    libobj=
+    later=
+    pie_flag=
+
+    for arg
+    do
+      case $arg_mode in
+      arg  )
+	# do not "continue".  Instead, add this to base_compile
+	lastarg="$arg"
+	arg_mode=normal
+	;;
+
+      target )
+	libobj="$arg"
+	arg_mode=normal
+	continue
+	;;
+
+      normal )
+	# Accept any command-line options.
+	case $arg in
+	-o)
+	  test -n "$libobj" && \
+	    func_fatal_error "you cannot specify \`-o' more than once"
+	  arg_mode=target
+	  continue
+	  ;;
+
+	-pie | -fpie | -fPIE)
+          func_append pie_flag " $arg"
+	  continue
+	  ;;
+
+	-shared | -static | -prefer-pic | -prefer-non-pic)
+	  func_append later " $arg"
+	  continue
+	  ;;
+
+	-no-suppress)
+	  suppress_opt=no
+	  continue
+	  ;;
+
+	-Xcompiler)
+	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
+	  continue      #  The current "srcfile" will either be retained or
+	  ;;            #  replaced later.  I would guess that would be a bug.
+
+	-Wc,*)
+	  func_stripname '-Wc,' '' "$arg"
+	  args=$func_stripname_result
+	  lastarg=
+	  save_ifs="$IFS"; IFS=','
+	  for arg in $args; do
+	    IFS="$save_ifs"
+	    func_append_quoted lastarg "$arg"
+	  done
+	  IFS="$save_ifs"
+	  func_stripname ' ' '' "$lastarg"
+	  lastarg=$func_stripname_result
+
+	  # Add the arguments to base_compile.
+	  func_append base_compile " $lastarg"
+	  continue
+	  ;;
+
+	*)
+	  # Accept the current argument as the source file.
+	  # The previous "srcfile" becomes the current argument.
+	  #
+	  lastarg="$srcfile"
+	  srcfile="$arg"
+	  ;;
+	esac  #  case $arg
+	;;
+      esac    #  case $arg_mode
+
+      # Aesthetically quote the previous argument.
+      func_append_quoted base_compile "$lastarg"
+    done # for arg
+
+    case $arg_mode in
+    arg)
+      func_fatal_error "you must specify an argument for -Xcompile"
+      ;;
+    target)
+      func_fatal_error "you must specify a target with \`-o'"
+      ;;
+    *)
+      # Get the name of the library object.
+      test -z "$libobj" && {
+	func_basename "$srcfile"
+	libobj="$func_basename_result"
+      }
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    case $libobj in
+    *.[cCFSifmso] | \
+    *.ada | *.adb | *.ads | *.asm | \
+    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
+    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
+      func_xform "$libobj"
+      libobj=$func_xform_result
+      ;;
+    esac
+
+    case $libobj in
+    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
+    *)
+      func_fatal_error "cannot determine name of library object from \`$libobj'"
+      ;;
+    esac
+
+    func_infer_tag $base_compile
+
+    for arg in $later; do
+      case $arg in
+      -shared)
+	test "$build_libtool_libs" != yes && \
+	  func_fatal_configuration "can not build a shared library"
+	build_old_libs=no
+	continue
+	;;
+
+      -static)
+	build_libtool_libs=no
+	build_old_libs=yes
+	continue
+	;;
+
+      -prefer-pic)
+	pic_mode=yes
+	continue
+	;;
+
+      -prefer-non-pic)
+	pic_mode=no
+	continue
+	;;
+      esac
+    done
+
+    func_quote_for_eval "$libobj"
+    test "X$libobj" != "X$func_quote_for_eval_result" \
+      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
+      && func_warning "libobj name \`$libobj' may not contain shell special characters."
+    func_dirname_and_basename "$obj" "/" ""
+    objname="$func_basename_result"
+    xdir="$func_dirname_result"
+    lobj=${xdir}$objdir/$objname
+
+    test -z "$base_compile" && \
+      func_fatal_help "you must specify a compilation command"
+
+    # Delete any leftover library objects.
+    if test "$build_old_libs" = yes; then
+      removelist="$obj $lobj $libobj ${libobj}T"
+    else
+      removelist="$lobj $libobj ${libobj}T"
+    fi
+
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2* | cegcc*)
+      pic_mode=default
+      ;;
+    esac
+    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
+    # Calculate the filename of the output object if compiler does
+    # not support -o with -c
+    if test "$compiler_c_o" = no; then
+      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
+      lockfile="$output_obj.lock"
+    else
+      output_obj=
+      need_locks=no
+      lockfile=
+    fi
+
+    # Lock this critical section if it is needed
+    # We use this script file to make the link, it avoids creating a new file
+    if test "$need_locks" = yes; then
+      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+	func_echo "Waiting for $lockfile to be removed"
+	sleep 2
+      done
+    elif test "$need_locks" = warn; then
+      if test -f "$lockfile"; then
+	$ECHO "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$opt_dry_run || $RM $removelist
+	exit $EXIT_FAILURE
+      fi
+      func_append removelist " $output_obj"
+      $ECHO "$srcfile" > "$lockfile"
+    fi
+
+    $opt_dry_run || $RM $removelist
+    func_append removelist " $lockfile"
+    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
+
+    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
+    srcfile=$func_to_tool_file_result
+    func_quote_for_eval "$srcfile"
+    qsrcfile=$func_quote_for_eval_result
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test "$build_libtool_libs" = yes; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test "$pic_mode" != no; then
+	command="$base_compile $qsrcfile $pic_flag"
+      else
+	# Don't build PIC code
+	command="$base_compile $qsrcfile"
+      fi
+
+      func_mkdir_p "$xdir$objdir"
+
+      if test -z "$output_obj"; then
+	# Place PIC objects in $objdir
+	func_append command " -o $lobj"
+      fi
+
+      func_show_eval_locale "$command"	\
+          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
+
+      if test "$need_locks" = warn &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$opt_dry_run || $RM $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed, then go on to compile the next one
+      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+	func_show_eval '$MV "$output_obj" "$lobj"' \
+	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+      fi
+
+      # Allow error messages only from the first compilation.
+      if test "$suppress_opt" = yes; then
+	suppress_output=' >/dev/null 2>&1'
+      fi
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test "$build_old_libs" = yes; then
+      if test "$pic_mode" != yes; then
+	# Don't build PIC code
+	command="$base_compile $qsrcfile$pie_flag"
+      else
+	command="$base_compile $qsrcfile $pic_flag"
+      fi
+      if test "$compiler_c_o" = yes; then
+	func_append command " -o $obj"
+      fi
+
+      # Suppress compiler output if we already did a PIC compilation.
+      func_append command "$suppress_output"
+      func_show_eval_locale "$command" \
+        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
+
+      if test "$need_locks" = warn &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$opt_dry_run || $RM $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed
+      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+	func_show_eval '$MV "$output_obj" "$obj"' \
+	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+      fi
+    fi
+
+    $opt_dry_run || {
+      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
+
+      # Unlock the critical section if it was locked
+      if test "$need_locks" != no; then
+	removelist=$lockfile
+        $RM "$lockfile"
+      fi
+    }
+
+    exit $EXIT_SUCCESS
+}
+
+$opt_help || {
+  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
+}
+
+func_mode_help ()
+{
+    # We need to display help for each of the modes.
+    case $opt_mode in
+      "")
+        # Generic help is extracted from the usage comments
+        # at the start of this file.
+        func_help
+        ;;
+
+      clean)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+        ;;
+
+      compile)
+      $ECHO \
+"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -no-suppress      do not suppress compiler output for multiple passes
+  -prefer-pic       try to build PIC objects only
+  -prefer-non-pic   try to build non-PIC objects only
+  -shared           do not build a \`.o' file suitable for static linking
+  -static           only build a \`.o' file suitable for static linking
+  -Wc,FLAG          pass FLAG directly to the compiler
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+        ;;
+
+      execute)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+        ;;
+
+      finish)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the \`--dry-run' option if you just want to see what would be executed."
+        ;;
+
+      install)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the \`install' or \`cp' program.
+
+The following components of INSTALL-COMMAND are treated specially:
+
+  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+        ;;
+
+      link)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -bindir BINDIR    specify path to binaries directory (for systems where
+                    libraries must be found in the PATH setting at runtime)
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+                    try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+                    try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -objectlist FILE  Use a list of object files found in FILE to specify objects
+  -precious-files-regex REGEX
+                    don't remove output files matching REGEX
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -shared           only do dynamic linking of libtool libraries
+  -shrext SUFFIX    override the standard shared library file extension
+  -static           do not do any dynamic linking of uninstalled libtool libraries
+  -static-libtool-libs
+                    do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+                    specify library version info [each variable defaults to 0]
+  -weak LIBNAME     declare that the target provides the LIBNAME interface
+  -Wc,FLAG
+  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
+  -Wl,FLAG
+  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
+  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+        ;;
+
+      uninstall)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+        ;;
+
+      *)
+        func_fatal_help "invalid operation mode \`$opt_mode'"
+        ;;
+    esac
+
+    echo
+    $ECHO "Try \`$progname --help' for more information about other modes."
+}
+
+# Now that we've collected a possible --mode arg, show help if necessary
+if $opt_help; then
+  if test "$opt_help" = :; then
+    func_mode_help
+  else
+    {
+      func_help noexit
+      for opt_mode in compile link execute install finish uninstall clean; do
+	func_mode_help
+      done
+    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
+    {
+      func_help noexit
+      for opt_mode in compile link execute install finish uninstall clean; do
+	echo
+	func_mode_help
+      done
+    } |
+    sed '1d
+      /^When reporting/,/^Report/{
+	H
+	d
+      }
+      $x
+      /information about other modes/d
+      /more detailed .*MODE/d
+      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
+  fi
+  exit $?
+fi
+
+
+# func_mode_execute arg...
+func_mode_execute ()
+{
+    $opt_debug
+    # The first argument is the command name.
+    cmd="$nonopt"
+    test -z "$cmd" && \
+      func_fatal_help "you must specify a COMMAND"
+
+    # Handle -dlopen flags immediately.
+    for file in $opt_dlopen; do
+      test -f "$file" \
+	|| func_fatal_help "\`$file' is not a file"
+
+      dir=
+      case $file in
+      *.la)
+	func_resolve_sysroot "$file"
+	file=$func_resolve_sysroot_result
+
+	# Check to see that this really is a libtool archive.
+	func_lalib_unsafe_p "$file" \
+	  || func_fatal_help "\`$lib' is not a valid libtool archive"
+
+	# Read the libtool library.
+	dlname=
+	library_names=
+	func_source "$file"
+
+	# Skip this library if it cannot be dlopened.
+	if test -z "$dlname"; then
+	  # Warn if it was a shared library.
+	  test -n "$library_names" && \
+	    func_warning "\`$file' was not linked with \`-export-dynamic'"
+	  continue
+	fi
+
+	func_dirname "$file" "" "."
+	dir="$func_dirname_result"
+
+	if test -f "$dir/$objdir/$dlname"; then
+	  func_append dir "/$objdir"
+	else
+	  if test ! -f "$dir/$dlname"; then
+	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
+	  fi
+	fi
+	;;
+
+      *.lo)
+	# Just add the directory containing the .lo file.
+	func_dirname "$file" "" "."
+	dir="$func_dirname_result"
+	;;
+
+      *)
+	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
+	continue
+	;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir="$absdir"
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+	eval "$shlibpath_var=\"\$dir\""
+      else
+	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic="$magic"
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -* | *.la | *.lo ) ;;
+      *)
+	# Do a test to see if this is really a libtool program.
+	if func_ltwrapper_script_p "$file"; then
+	  func_source "$file"
+	  # Transform arg to wrapped name.
+	  file="$progdir/$program"
+	elif func_ltwrapper_executable_p "$file"; then
+	  func_ltwrapper_scriptname "$file"
+	  func_source "$func_ltwrapper_scriptname_result"
+	  # Transform arg to wrapped name.
+	  file="$progdir/$program"
+	fi
+	;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      func_append_quoted args "$file"
+    done
+
+    if test "X$opt_dry_run" = Xfalse; then
+      if test -n "$shlibpath_var"; then
+	# Export the shlibpath_var.
+	eval "export $shlibpath_var"
+      fi
+
+      # Restore saved environment variables
+      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+      do
+	eval "if test \"\${save_$lt_var+set}\" = set; then
+                $lt_var=\$save_$lt_var; export $lt_var
+	      else
+		$lt_unset $lt_var
+	      fi"
+      done
+
+      # Now prepare to actually exec the command.
+      exec_cmd="\$cmd$args"
+    else
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
+	echo "export $shlibpath_var"
+      fi
+      $ECHO "$cmd$args"
+      exit $EXIT_SUCCESS
+    fi
+}
+
+test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
+
+
+# func_mode_finish arg...
+func_mode_finish ()
+{
+    $opt_debug
+    libs=
+    libdirs=
+    admincmds=
+
+    for opt in "$nonopt" ${1+"$@"}
+    do
+      if test -d "$opt"; then
+	func_append libdirs " $opt"
+
+      elif test -f "$opt"; then
+	if func_lalib_unsafe_p "$opt"; then
+	  func_append libs " $opt"
+	else
+	  func_warning "\`$opt' is not a valid libtool archive"
+	fi
+
+      else
+	func_fatal_error "invalid argument \`$opt'"
+      fi
+    done
+
+    if test -n "$libs"; then
+      if test -n "$lt_sysroot"; then
+        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
+        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
+      else
+        sysroot_cmd=
+      fi
+
+      # Remove sysroot references
+      if $opt_dry_run; then
+        for lib in $libs; do
+          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
+        done
+      else
+        tmpdir=`func_mktempdir`
+        for lib in $libs; do
+	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
+	    > $tmpdir/tmp-la
+	  mv -f $tmpdir/tmp-la $lib
+	done
+        ${RM}r "$tmpdir"
+      fi
+    fi
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for libdir in $libdirs; do
+	if test -n "$finish_cmds"; then
+	  # Do each command in the finish commands.
+	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
+'"$cmd"'"'
+	fi
+	if test -n "$finish_eval"; then
+	  # Do the single finish_eval.
+	  eval cmds=\"$finish_eval\"
+	  $opt_dry_run || eval "$cmds" || func_append admincmds "
+       $cmds"
+	fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    $opt_silent && exit $EXIT_SUCCESS
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      echo "----------------------------------------------------------------------"
+      echo "Libraries have been installed in:"
+      for libdir in $libdirs; do
+	$ECHO "   $libdir"
+      done
+      echo
+      echo "If you ever happen to want to link against installed libraries"
+      echo "in a given directory, LIBDIR, you must either use libtool, and"
+      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+      echo "flag during linking and do at least one of the following:"
+      if test -n "$shlibpath_var"; then
+	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+	echo "     during execution"
+      fi
+      if test -n "$runpath_var"; then
+	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+	echo "     during linking"
+      fi
+      if test -n "$hardcode_libdir_flag_spec"; then
+	libdir=LIBDIR
+	eval flag=\"$hardcode_libdir_flag_spec\"
+
+	$ECHO "   - use the \`$flag' linker flag"
+      fi
+      if test -n "$admincmds"; then
+	$ECHO "   - have your system administrator run these commands:$admincmds"
+      fi
+      if test -f /etc/ld.so.conf; then
+	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+      fi
+      echo
+
+      echo "See any operating system documentation about shared libraries for"
+      case $host in
+	solaris2.[6789]|solaris2.1[0-9])
+	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
+	  echo "pages."
+	  ;;
+	*)
+	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
+	  ;;
+      esac
+      echo "----------------------------------------------------------------------"
+    fi
+    exit $EXIT_SUCCESS
+}
+
+test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
+
+
+# func_mode_install arg...
+func_mode_install ()
+{
+    $opt_debug
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+       # Allow the use of GNU shtool's install command.
+       case $nonopt in *shtool*) :;; *) false;; esac; then
+      # Aesthetically quote it.
+      func_quote_for_eval "$nonopt"
+      install_prog="$func_quote_for_eval_result "
+      arg=$1
+      shift
+    else
+      install_prog=
+      arg=$nonopt
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    func_quote_for_eval "$arg"
+    func_append install_prog "$func_quote_for_eval_result"
+    install_shared_prog=$install_prog
+    case " $install_prog " in
+      *[\\\ /]cp\ *) install_cp=: ;;
+      *) install_cp=false ;;
+    esac
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=no
+    stripme=
+    no_mode=:
+    for arg
+    do
+      arg2=
+      if test -n "$dest"; then
+	func_append files " $dest"
+	dest=$arg
+	continue
+      fi
+
+      case $arg in
+      -d) isdir=yes ;;
+      -f)
+	if $install_cp; then :; else
+	  prev=$arg
+	fi
+	;;
+      -g | -m | -o)
+	prev=$arg
+	;;
+      -s)
+	stripme=" -s"
+	continue
+	;;
+      -*)
+	;;
+      *)
+	# If the previous option needed an argument, then skip it.
+	if test -n "$prev"; then
+	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
+	    arg2=$install_override_mode
+	    no_mode=false
+	  fi
+	  prev=
+	else
+	  dest=$arg
+	  continue
+	fi
+	;;
+      esac
+
+      # Aesthetically quote the argument.
+      func_quote_for_eval "$arg"
+      func_append install_prog " $func_quote_for_eval_result"
+      if test -n "$arg2"; then
+	func_quote_for_eval "$arg2"
+      fi
+      func_append install_shared_prog " $func_quote_for_eval_result"
+    done
+
+    test -z "$install_prog" && \
+      func_fatal_help "you must specify an install program"
+
+    test -n "$prev" && \
+      func_fatal_help "the \`$prev' option requires an argument"
+
+    if test -n "$install_override_mode" && $no_mode; then
+      if $install_cp; then :; else
+	func_quote_for_eval "$install_override_mode"
+	func_append install_shared_prog " -m $func_quote_for_eval_result"
+      fi
+    fi
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+	func_fatal_help "no file or destination specified"
+      else
+	func_fatal_help "you must specify a destination"
+      fi
+    fi
+
+    # Strip any trailing slash from the destination.
+    func_stripname '' '/' "$dest"
+    dest=$func_stripname_result
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=yes
+    if test "$isdir" = yes; then
+      destdir="$dest"
+      destname=
+    else
+      func_dirname_and_basename "$dest" "" "."
+      destdir="$func_dirname_result"
+      destname="$func_basename_result"
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files; shift
+      test "$#" -gt 1 && \
+	func_fatal_help "\`$dest' is not a directory"
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+	case $file in
+	*.lo) ;;
+	*)
+	  func_fatal_help "\`$destdir' must be an absolute directory name"
+	  ;;
+	esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case $file in
+      *.$libext)
+	# Do the static libraries later.
+	func_append staticlibs " $file"
+	;;
+
+      *.la)
+	func_resolve_sysroot "$file"
+	file=$func_resolve_sysroot_result
+
+	# Check to see that this really is a libtool archive.
+	func_lalib_unsafe_p "$file" \
+	  || func_fatal_help "\`$file' is not a valid libtool archive"
+
+	library_names=
+	old_library=
+	relink_command=
+	func_source "$file"
+
+	# Add the libdir to current_libdirs if it is the destination.
+	if test "X$destdir" = "X$libdir"; then
+	  case "$current_libdirs " in
+	  *" $libdir "*) ;;
+	  *) func_append current_libdirs " $libdir" ;;
+	  esac
+	else
+	  # Note the libdir as a future libdir.
+	  case "$future_libdirs " in
+	  *" $libdir "*) ;;
+	  *) func_append future_libdirs " $libdir" ;;
+	  esac
+	fi
+
+	func_dirname "$file" "/" ""
+	dir="$func_dirname_result"
+	func_append dir "$objdir"
+
+	if test -n "$relink_command"; then
+	  # Determine the prefix the user has applied to our future dir.
+	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
+
+	  # Don't allow the user to place us outside of our expected
+	  # location b/c this prevents finding dependent libraries that
+	  # are installed to the same prefix.
+	  # At present, this check doesn't affect windows .dll's that
+	  # are installed into $libdir/../bin (currently, that works fine)
+	  # but it's something to keep an eye on.
+	  test "$inst_prefix_dir" = "$destdir" && \
+	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
+
+	  if test -n "$inst_prefix_dir"; then
+	    # Stick the inst_prefix_dir data into the link command.
+	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+	  else
+	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+	  fi
+
+	  func_warning "relinking \`$file'"
+	  func_show_eval "$relink_command" \
+	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
+	fi
+
+	# See the names of the shared library.
+	set dummy $library_names; shift
+	if test -n "$1"; then
+	  realname="$1"
+	  shift
+
+	  srcname="$realname"
+	  test -n "$relink_command" && srcname="$realname"T
+
+	  # Install the shared library and build the symlinks.
+	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
+	      'exit $?'
+	  tstripme="$stripme"
+	  case $host_os in
+	  cygwin* | mingw* | pw32* | cegcc*)
+	    case $realname in
+	    *.dll.a)
+	      tstripme=""
+	      ;;
+	    esac
+	    ;;
+	  esac
+	  if test -n "$tstripme" && test -n "$striplib"; then
+	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
+	  fi
+
+	  if test "$#" -gt 0; then
+	    # Delete the old symlinks, and create new ones.
+	    # Try `ln -sf' first, because the `ln' binary might depend on
+	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
+	    # so we also need to try rm && ln -s.
+	    for linkname
+	    do
+	      test "$linkname" != "$realname" \
+		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
+	    done
+	  fi
+
+	  # Do each command in the postinstall commands.
+	  lib="$destdir/$realname"
+	  func_execute_cmds "$postinstall_cmds" 'exit $?'
+	fi
+
+	# Install the pseudo-library for information purposes.
+	func_basename "$file"
+	name="$func_basename_result"
+	instname="$dir/$name"i
+	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
+
+	# Maybe install the static library, too.
+	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
+	;;
+
+      *.lo)
+	# Install (i.e. copy) a libtool object.
+
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  func_basename "$file"
+	  destfile="$func_basename_result"
+	  destfile="$destdir/$destfile"
+	fi
+
+	# Deduce the name of the destination old-style object file.
+	case $destfile in
+	*.lo)
+	  func_lo2o "$destfile"
+	  staticdest=$func_lo2o_result
+	  ;;
+	*.$objext)
+	  staticdest="$destfile"
+	  destfile=
+	  ;;
+	*)
+	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
+	  ;;
+	esac
+
+	# Install the libtool object if requested.
+	test -n "$destfile" && \
+	  func_show_eval "$install_prog $file $destfile" 'exit $?'
+
+	# Install the old object if enabled.
+	if test "$build_old_libs" = yes; then
+	  # Deduce the name of the old-style object file.
+	  func_lo2o "$file"
+	  staticobj=$func_lo2o_result
+	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
+	fi
+	exit $EXIT_SUCCESS
+	;;
+
+      *)
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  func_basename "$file"
+	  destfile="$func_basename_result"
+	  destfile="$destdir/$destfile"
+	fi
+
+	# If the file is missing, and there is a .exe on the end, strip it
+	# because it is most likely a libtool script we actually want to
+	# install
+	stripped_ext=""
+	case $file in
+	  *.exe)
+	    if test ! -f "$file"; then
+	      func_stripname '' '.exe' "$file"
+	      file=$func_stripname_result
+	      stripped_ext=".exe"
+	    fi
+	    ;;
+	esac
+
+	# Do a test to see if this is really a libtool program.
+	case $host in
+	*cygwin* | *mingw*)
+	    if func_ltwrapper_executable_p "$file"; then
+	      func_ltwrapper_scriptname "$file"
+	      wrapper=$func_ltwrapper_scriptname_result
+	    else
+	      func_stripname '' '.exe' "$file"
+	      wrapper=$func_stripname_result
+	    fi
+	    ;;
+	*)
+	    wrapper=$file
+	    ;;
+	esac
+	if func_ltwrapper_script_p "$wrapper"; then
+	  notinst_deplibs=
+	  relink_command=
+
+	  func_source "$wrapper"
+
+	  # Check the variables that should have been set.
+	  test -z "$generated_by_libtool_version" && \
+	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
+
+	  finalize=yes
+	  for lib in $notinst_deplibs; do
+	    # Check to see that each library is installed.
+	    libdir=
+	    if test -f "$lib"; then
+	      func_source "$lib"
+	    fi
+	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
+	    if test -n "$libdir" && test ! -f "$libfile"; then
+	      func_warning "\`$lib' has not been installed in \`$libdir'"
+	      finalize=no
+	    fi
+	  done
+
+	  relink_command=
+	  func_source "$wrapper"
+
+	  outputname=
+	  if test "$fast_install" = no && test -n "$relink_command"; then
+	    $opt_dry_run || {
+	      if test "$finalize" = yes; then
+	        tmpdir=`func_mktempdir`
+		func_basename "$file$stripped_ext"
+		file="$func_basename_result"
+	        outputname="$tmpdir/$file"
+	        # Replace the output file specification.
+	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
+
+	        $opt_silent || {
+	          func_quote_for_expand "$relink_command"
+		  eval "func_echo $func_quote_for_expand_result"
+	        }
+	        if eval "$relink_command"; then :
+	          else
+		  func_error "error: relink \`$file' with the above command before installing it"
+		  $opt_dry_run || ${RM}r "$tmpdir"
+		  continue
+	        fi
+	        file="$outputname"
+	      else
+	        func_warning "cannot relink \`$file'"
+	      fi
+	    }
+	  else
+	    # Install the binary that we compiled earlier.
+	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
+	  fi
+	fi
+
+	# remove .exe since cygwin /usr/bin/install will append another
+	# one anyway
+	case $install_prog,$host in
+	*/usr/bin/install*,*cygwin*)
+	  case $file:$destfile in
+	  *.exe:*.exe)
+	    # this is ok
+	    ;;
+	  *.exe:*)
+	    destfile=$destfile.exe
+	    ;;
+	  *:*.exe)
+	    func_stripname '' '.exe' "$destfile"
+	    destfile=$func_stripname_result
+	    ;;
+	  esac
+	  ;;
+	esac
+	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
+	$opt_dry_run || if test -n "$outputname"; then
+	  ${RM}r "$tmpdir"
+	fi
+	;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      func_basename "$file"
+      name="$func_basename_result"
+
+      # Set up the ranlib parameters.
+      oldlib="$destdir/$name"
+      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+      tool_oldlib=$func_to_tool_file_result
+
+      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
+
+      if test -n "$stripme" && test -n "$old_striplib"; then
+	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
+      fi
+
+      # Do each command in the postinstall commands.
+      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
+    done
+
+    test -n "$future_libdirs" && \
+      func_warning "remember to run \`$progname --finish$future_libdirs'"
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      $opt_dry_run && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+    else
+      exit $EXIT_SUCCESS
+    fi
+}
+
+test "$opt_mode" = install && func_mode_install ${1+"$@"}
+
+
+# func_generate_dlsyms outputname originator pic_p
+# Extract symbols from dlprefiles and create ${outputname}S.o with
+# a dlpreopen symbol table.
+func_generate_dlsyms ()
+{
+    $opt_debug
+    my_outputname="$1"
+    my_originator="$2"
+    my_pic_p="${3-no}"
+    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
+    my_dlsyms=
+
+    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+      if test -n "$NM" && test -n "$global_symbol_pipe"; then
+	my_dlsyms="${my_outputname}S.c"
+      else
+	func_error "not configured to extract global symbols from dlpreopened files"
+      fi
+    fi
+
+    if test -n "$my_dlsyms"; then
+      case $my_dlsyms in
+      "") ;;
+      *.c)
+	# Discover the nlist of each of the dlfiles.
+	nlist="$output_objdir/${my_outputname}.nm"
+
+	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
+
+	# Parse the name list into a source file.
+	func_verbose "creating $output_objdir/$my_dlsyms"
+
+	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
+/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
+/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
+#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
+#endif
+
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data.  */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
+/* External symbol declarations for the compiler. */\
+"
+
+	if test "$dlself" = yes; then
+	  func_verbose "generating symbol list for \`$output'"
+
+	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
+
+	  # Add our own program objects to the symbol list.
+	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+	  for progfile in $progfiles; do
+	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
+	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
+	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
+	  done
+
+	  if test -n "$exclude_expsyms"; then
+	    $opt_dry_run || {
+	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+	      eval '$MV "$nlist"T "$nlist"'
+	    }
+	  fi
+
+	  if test -n "$export_symbols_regex"; then
+	    $opt_dry_run || {
+	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+	      eval '$MV "$nlist"T "$nlist"'
+	    }
+	  fi
+
+	  # Prepare the list of exported symbols
+	  if test -z "$export_symbols"; then
+	    export_symbols="$output_objdir/$outputname.exp"
+	    $opt_dry_run || {
+	      $RM $export_symbols
+	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+	      case $host in
+	      *cygwin* | *mingw* | *cegcc* )
+                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+	        ;;
+	      esac
+	    }
+	  else
+	    $opt_dry_run || {
+	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+	      eval '$MV "$nlist"T "$nlist"'
+	      case $host in
+	        *cygwin* | *mingw* | *cegcc* )
+	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+	          ;;
+	      esac
+	    }
+	  fi
+	fi
+
+	for dlprefile in $dlprefiles; do
+	  func_verbose "extracting global C symbols from \`$dlprefile'"
+	  func_basename "$dlprefile"
+	  name="$func_basename_result"
+          case $host in
+	    *cygwin* | *mingw* | *cegcc* )
+	      # if an import library, we need to obtain dlname
+	      if func_win32_import_lib_p "$dlprefile"; then
+	        func_tr_sh "$dlprefile"
+	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
+	        dlprefile_dlbasename=""
+	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
+	          # Use subshell, to avoid clobbering current variable values
+	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
+	          if test -n "$dlprefile_dlname" ; then
+	            func_basename "$dlprefile_dlname"
+	            dlprefile_dlbasename="$func_basename_result"
+	          else
+	            # no lafile. user explicitly requested -dlpreopen <import library>.
+	            $sharedlib_from_linklib_cmd "$dlprefile"
+	            dlprefile_dlbasename=$sharedlib_from_linklib_result
+	          fi
+	        fi
+	        $opt_dry_run || {
+	          if test -n "$dlprefile_dlbasename" ; then
+	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
+	          else
+	            func_warning "Could not compute DLL name from $name"
+	            eval '$ECHO ": $name " >> "$nlist"'
+	          fi
+	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
+	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
+	        }
+	      else # not an import lib
+	        $opt_dry_run || {
+	          eval '$ECHO ": $name " >> "$nlist"'
+	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+	        }
+	      fi
+	    ;;
+	    *)
+	      $opt_dry_run || {
+	        eval '$ECHO ": $name " >> "$nlist"'
+	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+	      }
+	    ;;
+          esac
+	done
+
+	$opt_dry_run || {
+	  # Make sure we have at least an empty file.
+	  test -f "$nlist" || : > "$nlist"
+
+	  if test -n "$exclude_expsyms"; then
+	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+	    $MV "$nlist"T "$nlist"
+	  fi
+
+	  # Try sorting and uniquifying the output.
+	  if $GREP -v "^: " < "$nlist" |
+	      if sort -k 3 </dev/null >/dev/null 2>&1; then
+		sort -k 3
+	      else
+		sort +2
+	      fi |
+	      uniq > "$nlist"S; then
+	    :
+	  else
+	    $GREP -v "^: " < "$nlist" > "$nlist"S
+	  fi
+
+	  if test -f "$nlist"S; then
+	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
+	  else
+	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
+	  fi
+
+	  echo >> "$output_objdir/$my_dlsyms" "\
+
+/* The mapping between symbol names and symbols.  */
+typedef struct {
+  const char *name;
+  void *address;
+} lt_dlsymlist;
+extern LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[];
+LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[] =
+{\
+  { \"$my_originator\", (void *) 0 },"
+
+	  case $need_lib_prefix in
+	  no)
+	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
+	    ;;
+	  *)
+	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
+	    ;;
+	  esac
+	  echo >> "$output_objdir/$my_dlsyms" "\
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_${my_prefix}_LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+	} # !$opt_dry_run
+
+	pic_flag_for_symtable=
+	case "$compile_command " in
+	*" -static "*) ;;
+	*)
+	  case $host in
+	  # compiling the symbol table file with pic_flag works around
+	  # a FreeBSD bug that causes programs to crash when -lm is
+	  # linked before any other PIC object.  But we must not use
+	  # pic_flag when linking with -static.  The problem exists in
+	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
+	  *-*-hpux*)
+	    pic_flag_for_symtable=" $pic_flag"  ;;
+	  *)
+	    if test "X$my_pic_p" != Xno; then
+	      pic_flag_for_symtable=" $pic_flag"
+	    fi
+	    ;;
+	  esac
+	  ;;
+	esac
+	symtab_cflags=
+	for arg in $LTCFLAGS; do
+	  case $arg in
+	  -pie | -fpie | -fPIE) ;;
+	  *) func_append symtab_cflags " $arg" ;;
+	  esac
+	done
+
+	# Now compile the dynamic symbol file.
+	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
+
+	# Clean up the generated files.
+	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
+
+	# Transform the symbol file into the correct name.
+	symfileobj="$output_objdir/${my_outputname}S.$objext"
+	case $host in
+	*cygwin* | *mingw* | *cegcc* )
+	  if test -f "$output_objdir/$my_outputname.def"; then
+	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+	  else
+	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+	  fi
+	  ;;
+	*)
+	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+	  ;;
+	esac
+	;;
+      *)
+	func_fatal_error "unknown suffix for \`$my_dlsyms'"
+	;;
+      esac
+    else
+      # We keep going just in case the user didn't refer to
+      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+      # really was required.
+
+      # Nullify the symbol file.
+      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
+      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
+    fi
+}
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+# Despite the name, also deal with 64 bit binaries.
+func_win32_libid ()
+{
+  $opt_debug
+  win32_libid_type="unknown"
+  win32_fileres=`file -L $1 2>/dev/null`
+  case $win32_fileres in
+  *ar\ archive\ import\ library*) # definitely import
+    win32_libid_type="x86 archive import"
+    ;;
+  *ar\ archive*) # could be an import, or static
+    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
+    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
+       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
+      func_to_tool_file "$1" func_convert_file_msys_to_w32
+      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
+	$SED -n -e '
+	    1,100{
+		/ I /{
+		    s,.*,import,
+		    p
+		    q
+		}
+	    }'`
+      case $win32_nmres in
+      import*)  win32_libid_type="x86 archive import";;
+      *)        win32_libid_type="x86 archive static";;
+      esac
+    fi
+    ;;
+  *DLL*)
+    win32_libid_type="x86 DLL"
+    ;;
+  *executable*) # but shell scripts are "executable" too...
+    case $win32_fileres in
+    *MS\ Windows\ PE\ Intel*)
+      win32_libid_type="x86 DLL"
+      ;;
+    esac
+    ;;
+  esac
+  $ECHO "$win32_libid_type"
+}
+
+# func_cygming_dll_for_implib ARG
+#
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+# Invoked by eval'ing the libtool variable
+#    $sharedlib_from_linklib_cmd
+# Result is available in the variable
+#    $sharedlib_from_linklib_result
+func_cygming_dll_for_implib ()
+{
+  $opt_debug
+  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
+}
+
+# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
+#
+# The is the core of a fallback implementation of a
+# platform-specific function to extract the name of the
+# DLL associated with the specified import library LIBNAME.
+#
+# SECTION_NAME is either .idata$6 or .idata$7, depending
+# on the platform and compiler that created the implib.
+#
+# Echos the name of the DLL associated with the
+# specified import library.
+func_cygming_dll_for_implib_fallback_core ()
+{
+  $opt_debug
+  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
+  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
+    $SED '/^Contents of section '"$match_literal"':/{
+      # Place marker at beginning of archive member dllname section
+      s/.*/====MARK====/
+      p
+      d
+    }
+    # These lines can sometimes be longer than 43 characters, but
+    # are always uninteresting
+    /:[	 ]*file format pe[i]\{,1\}-/d
+    /^In archive [^:]*:/d
+    # Ensure marker is printed
+    /^====MARK====/p
+    # Remove all lines with less than 43 characters
+    /^.\{43\}/!d
+    # From remaining lines, remove first 43 characters
+    s/^.\{43\}//' |
+    $SED -n '
+      # Join marker and all lines until next marker into a single line
+      /^====MARK====/ b para
+      H
+      $ b para
+      b
+      :para
+      x
+      s/\n//g
+      # Remove the marker
+      s/^====MARK====//
+      # Remove trailing dots and whitespace
+      s/[\. \t]*$//
+      # Print
+      /./p' |
+    # we now have a list, one entry per line, of the stringified
+    # contents of the appropriate section of all members of the
+    # archive which possess that section. Heuristic: eliminate
+    # all those which have a first or second character that is
+    # a '.' (that is, objdump's representation of an unprintable
+    # character.) This should work for all archives with less than
+    # 0x302f exports -- but will fail for DLLs whose name actually
+    # begins with a literal '.' or a single character followed by
+    # a '.'.
+    #
+    # Of those that remain, print the first one.
+    $SED -e '/^\./d;/^.\./d;q'
+}
+
+# func_cygming_gnu_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is a GNU/binutils-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_gnu_implib_p ()
+{
+  $opt_debug
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
+  test -n "$func_cygming_gnu_implib_tmp"
+}
+
+# func_cygming_ms_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is an MS-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_ms_implib_p ()
+{
+  $opt_debug
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
+  test -n "$func_cygming_ms_implib_tmp"
+}
+
+# func_cygming_dll_for_implib_fallback ARG
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+#
+# This fallback implementation is for use when $DLLTOOL
+# does not support the --identify-strict option.
+# Invoked by eval'ing the libtool variable
+#    $sharedlib_from_linklib_cmd
+# Result is available in the variable
+#    $sharedlib_from_linklib_result
+func_cygming_dll_for_implib_fallback ()
+{
+  $opt_debug
+  if func_cygming_gnu_implib_p "$1" ; then
+    # binutils import library
+    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
+  elif func_cygming_ms_implib_p "$1" ; then
+    # ms-generated import library
+    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
+  else
+    # unknown
+    sharedlib_from_linklib_result=""
+  fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+    $opt_debug
+    f_ex_an_ar_dir="$1"; shift
+    f_ex_an_ar_oldlib="$1"
+    if test "$lock_old_archive_extraction" = yes; then
+      lockfile=$f_ex_an_ar_oldlib.lock
+      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+	func_echo "Waiting for $lockfile to be removed"
+	sleep 2
+      done
+    fi
+    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
+		   'stat=$?; rm -f "$lockfile"; exit $stat'
+    if test "$lock_old_archive_extraction" = yes; then
+      $opt_dry_run || rm -f "$lockfile"
+    fi
+    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+     :
+    else
+      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
+    fi
+}
+
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+    $opt_debug
+    my_gentop="$1"; shift
+    my_oldlibs=${1+"$@"}
+    my_oldobjs=""
+    my_xlib=""
+    my_xabs=""
+    my_xdir=""
+
+    for my_xlib in $my_oldlibs; do
+      # Extract the objects.
+      case $my_xlib in
+	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+	*) my_xabs=`pwd`"/$my_xlib" ;;
+      esac
+      func_basename "$my_xlib"
+      my_xlib="$func_basename_result"
+      my_xlib_u=$my_xlib
+      while :; do
+        case " $extracted_archives " in
+	*" $my_xlib_u "*)
+	  func_arith $extracted_serial + 1
+	  extracted_serial=$func_arith_result
+	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
+	*) break ;;
+	esac
+      done
+      extracted_archives="$extracted_archives $my_xlib_u"
+      my_xdir="$my_gentop/$my_xlib_u"
+
+      func_mkdir_p "$my_xdir"
+
+      case $host in
+      *-darwin*)
+	func_verbose "Extracting $my_xabs"
+	# Do not bother doing anything if just a dry run
+	$opt_dry_run || {
+	  darwin_orig_dir=`pwd`
+	  cd $my_xdir || exit $?
+	  darwin_archive=$my_xabs
+	  darwin_curdir=`pwd`
+	  darwin_base_archive=`basename "$darwin_archive"`
+	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
+	  if test -n "$darwin_arches"; then
+	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
+	    darwin_arch=
+	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
+	    for darwin_arch in  $darwin_arches ; do
+	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+	      cd "$darwin_curdir"
+	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+	    done # $darwin_arches
+            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
+	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
+	    darwin_file=
+	    darwin_files=
+	    for darwin_file in $darwin_filelist; do
+	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
+	      $LIPO -create -output "$darwin_file" $darwin_files
+	    done # $darwin_filelist
+	    $RM -rf unfat-$$
+	    cd "$darwin_orig_dir"
+	  else
+	    cd $darwin_orig_dir
+	    func_extract_an_archive "$my_xdir" "$my_xabs"
+	  fi # $darwin_arches
+	} # !$opt_dry_run
+	;;
+      *)
+        func_extract_an_archive "$my_xdir" "$my_xabs"
+	;;
+      esac
+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
+    done
+
+    func_extract_archives_result="$my_oldobjs"
+}
+
+
+# func_emit_wrapper [arg=no]
+#
+# Emit a libtool wrapper script on stdout.
+# Don't directly open a file because we may want to
+# incorporate the script contents within a cygwin/mingw
+# wrapper executable.  Must ONLY be called from within
+# func_mode_link because it depends on a number of variables
+# set therein.
+#
+# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
+# variable will take.  If 'yes', then the emitted script
+# will assume that the directory in which it is stored is
+# the $objdir directory.  This is a cygwin/mingw-specific
+# behavior.
+func_emit_wrapper ()
+{
+	func_emit_wrapper_arg1=${1-no}
+
+	$ECHO "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='$sed_quote_subst'
+
+# Be Bourne compatible
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='$macro_version'
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$ECHO are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    file=\"\$0\""
+
+    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
+    $ECHO "\
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+    ECHO=\"$qECHO\"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ which is used only on
+# windows platforms, and (c) all begin with the string "--lt-"
+# (application programs are unlikely to have options which match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's $0 value, followed by "$@".
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=\$0
+  shift
+  for lt_opt
+  do
+    case \"\$lt_opt\" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
+        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
+        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
+        cat \"\$lt_dump_D/\$lt_dump_F\"
+        exit 0
+      ;;
+    --lt-*)
+        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n \"\$lt_option_debug\"; then
+    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
+    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+"
+  case $host in
+  # Backslashes separate directories on plain windows
+  *-*-mingw | *-*-os2* | *-cegcc*)
+    $ECHO "\
+      if test -n \"\$lt_option_debug\"; then
+        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
+        func_lt_dump_args \${1+\"\$@\"} 1>&2
+      fi
+      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+    ;;
+
+  *)
+    $ECHO "\
+      if test -n \"\$lt_option_debug\"; then
+        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
+        func_lt_dump_args \${1+\"\$@\"} 1>&2
+      fi
+      exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+    ;;
+  esac
+  $ECHO "\
+      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from \$@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case \" \$* \" in
+  *\\ --lt-*)
+    for lt_wr_arg
+    do
+      case \$lt_wr_arg in
+      --lt-*) ;;
+      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core \${1+\"\$@\"}
+}
+
+  # Parse options
+  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
+  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
+    # special case for '.'
+    if test \"\$thisdir\" = \".\"; then
+      thisdir=\`pwd\`
+    fi
+    # remove .libs from thisdir
+    case \"\$thisdir\" in
+    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
+    $objdir )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+	if test "$fast_install" = yes; then
+	  $ECHO "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
+
+  if test ! -f \"\$progdir/\$program\" ||
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+    file=\"\$\$-\$program\"
+
+    if test ! -d \"\$progdir\"; then
+      $MKDIR \"\$progdir\"
+    else
+      $RM \"\$progdir/\$file\"
+    fi"
+
+	  $ECHO "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+	$ECHO \"\$relink_command_output\" >&2
+	$RM \"\$progdir/\$file\"
+	exit 1
+      fi
+    fi
+
+    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $RM \"\$progdir/\$program\";
+      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $RM \"\$progdir/\$file\"
+  fi"
+	else
+	  $ECHO "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+	fi
+
+	$ECHO "\
+
+  if test -f \"\$progdir/\$program\"; then"
+
+	# fixup the dll searchpath if we need to.
+	#
+	# Fix the DLL searchpath if we need to.  Do this before prepending
+	# to shlibpath, because on Windows, both are PATH and uninstalled
+	# libraries must come first.
+	if test -n "$dllsearchpath"; then
+	  $ECHO "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+	fi
+
+	# Export our shlibpath_var if we have one.
+	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+	  $ECHO "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 sed
+    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+	fi
+
+	$ECHO "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+      func_exec_program \${1+\"\$@\"}
+    fi
+  else
+    # The program doesn't exist.
+    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
+    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
+    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit 1
+  fi
+fi\
+"
+}
+
+
+# func_emit_cwrapperexe_src
+# emit the source code for a wrapper executable on stdout
+# Must ONLY be called from within func_mode_link because
+# it depends on a number of variable set therein.
+func_emit_cwrapperexe_src ()
+{
+	cat <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+
+   The $output program cannot be directly executed until all the libtool
+   libraries that it depends on are installed.
+
+   This wrapper executable should never be moved out of the build directory.
+   If it is, it will not operate correctly.
+*/
+EOF
+	    cat <<"EOF"
+#ifdef _MSC_VER
+# define _CRT_SECURE_NO_DEPRECATE 1
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef _MSC_VER
+# include <direct.h>
+# include <process.h>
+# include <io.h>
+#else
+# include <unistd.h>
+# include <stdint.h>
+# ifdef __CYGWIN__
+#  include <io.h>
+# endif
+#endif
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+/* declarations of non-ANSI functions */
+#if defined(__MINGW32__)
+# ifdef __STRICT_ANSI__
+int _putenv (const char *);
+# endif
+#elif defined(__CYGWIN__)
+# ifdef __STRICT_ANSI__
+char *realpath (const char *, char *);
+int putenv (char *);
+int setenv (const char *, const char *, int);
+# endif
+/* #elif defined (other platforms) ... */
+#endif
+
+/* portability defines, excluding path handling macros */
+#if defined(_MSC_VER)
+# define setmode _setmode
+# define stat    _stat
+# define chmod   _chmod
+# define getcwd  _getcwd
+# define putenv  _putenv
+# define S_IXUSR _S_IEXEC
+# ifndef _INTPTR_T_DEFINED
+#  define _INTPTR_T_DEFINED
+#  define intptr_t int
+# endif
+#elif defined(__MINGW32__)
+# define setmode _setmode
+# define stat    _stat
+# define chmod   _chmod
+# define getcwd  _getcwd
+# define putenv  _putenv
+#elif defined(__CYGWIN__)
+# define HAVE_SETENV
+# define FOPEN_WB "wb"
+/* #elif defined (other platforms) ... */
+#endif
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef S_IXOTH
+# define S_IXOTH 0
+#endif
+#ifndef S_IXGRP
+# define S_IXGRP 0
+#endif
+
+/* path handling portability macros */
+#ifndef DIR_SEPARATOR
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+  defined (__OS2__)
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# define FOPEN_WB "wb"
+# ifndef DIR_SEPARATOR_2
+#  define DIR_SEPARATOR_2 '\\'
+# endif
+# ifndef PATH_SEPARATOR_2
+#  define PATH_SEPARATOR_2 ';'
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#ifndef PATH_SEPARATOR_2
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+#else /* PATH_SEPARATOR_2 */
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+#endif /* PATH_SEPARATOR_2 */
+
+#ifndef FOPEN_WB
+# define FOPEN_WB "w"
+#endif
+#ifndef _O_BINARY
+# define _O_BINARY 0
+#endif
+
+#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+  if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+#if defined(LT_DEBUGWRAPPER)
+static int lt_debug = 1;
+#else
+static int lt_debug = 0;
+#endif
+
+const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
+
+void *xmalloc (size_t num);
+char *xstrdup (const char *string);
+const char *base_name (const char *name);
+char *find_executable (const char *wrapper);
+char *chase_symlinks (const char *pathspec);
+int make_executable (const char *path);
+int check_executable (const char *path);
+char *strendzap (char *str, const char *pat);
+void lt_debugprintf (const char *file, int line, const char *fmt, ...);
+void lt_fatal (const char *file, int line, const char *message, ...);
+static const char *nonnull (const char *s);
+static const char *nonempty (const char *s);
+void lt_setenv (const char *name, const char *value);
+char *lt_extend_str (const char *orig_value, const char *add, int to_end);
+void lt_update_exe_path (const char *name, const char *value);
+void lt_update_lib_path (const char *name, const char *value);
+char **prepare_spawn (char **argv);
+void lt_dump_script (FILE *f);
+EOF
+
+	    cat <<EOF
+volatile const char * MAGIC_EXE = "$magic_exe";
+const char * LIB_PATH_VARNAME = "$shlibpath_var";
+EOF
+
+	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+              func_to_host_path "$temp_rpath"
+	      cat <<EOF
+const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
+EOF
+	    else
+	      cat <<"EOF"
+const char * LIB_PATH_VALUE   = "";
+EOF
+	    fi
+
+	    if test -n "$dllsearchpath"; then
+              func_to_host_path "$dllsearchpath:"
+	      cat <<EOF
+const char * EXE_PATH_VARNAME = "PATH";
+const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
+EOF
+	    else
+	      cat <<"EOF"
+const char * EXE_PATH_VARNAME = "";
+const char * EXE_PATH_VALUE   = "";
+EOF
+	    fi
+
+	    if test "$fast_install" = yes; then
+	      cat <<EOF
+const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
+EOF
+	    else
+	      cat <<EOF
+const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
+EOF
+	    fi
+
+
+	    cat <<"EOF"
+
+#define LTWRAPPER_OPTION_PREFIX         "--lt-"
+
+static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
+static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
+static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
+
+int
+main (int argc, char *argv[])
+{
+  char **newargz;
+  int  newargc;
+  char *tmp_pathspec;
+  char *actual_cwrapper_path;
+  char *actual_cwrapper_name;
+  char *target_name;
+  char *lt_argv_zero;
+  intptr_t rval = 127;
+
+  int i;
+
+  program_name = (char *) xstrdup (base_name (argv[0]));
+  newargz = XMALLOC (char *, argc + 1);
+
+  /* very simple arg parsing; don't want to rely on getopt
+   * also, copy all non cwrapper options to newargz, except
+   * argz[0], which is handled differently
+   */
+  newargc=0;
+  for (i = 1; i < argc; i++)
+    {
+      if (strcmp (argv[i], dumpscript_opt) == 0)
+	{
+EOF
+	    case "$host" in
+	      *mingw* | *cygwin* )
+		# make stdout use "unix" line endings
+		echo "          setmode(1,_O_BINARY);"
+		;;
+	      esac
+
+	    cat <<"EOF"
+	  lt_dump_script (stdout);
+	  return 0;
+	}
+      if (strcmp (argv[i], debug_opt) == 0)
+	{
+          lt_debug = 1;
+          continue;
+	}
+      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
+        {
+          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+             namespace, but it is not one of the ones we know about and
+             have already dealt with, above (inluding dump-script), then
+             report an error. Otherwise, targets might begin to believe
+             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+             namespace. The first time any user complains about this, we'll
+             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+             or a configure.ac-settable value.
+           */
+          lt_fatal (__FILE__, __LINE__,
+		    "unrecognized %s option: '%s'",
+                    ltwrapper_option_prefix, argv[i]);
+        }
+      /* otherwise ... */
+      newargz[++newargc] = xstrdup (argv[i]);
+    }
+  newargz[++newargc] = NULL;
+
+EOF
+	    cat <<EOF
+  /* The GNU banner must be the first non-error debug message */
+  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
+EOF
+	    cat <<"EOF"
+  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
+  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
+
+  tmp_pathspec = find_executable (argv[0]);
+  if (tmp_pathspec == NULL)
+    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
+  lt_debugprintf (__FILE__, __LINE__,
+                  "(main) found exe (before symlink chase) at: %s\n",
+		  tmp_pathspec);
+
+  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
+  lt_debugprintf (__FILE__, __LINE__,
+                  "(main) found exe (after symlink chase) at: %s\n",
+		  actual_cwrapper_path);
+  XFREE (tmp_pathspec);
+
+  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
+  strendzap (actual_cwrapper_path, actual_cwrapper_name);
+
+  /* wrapper name transforms */
+  strendzap (actual_cwrapper_name, ".exe");
+  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
+  XFREE (actual_cwrapper_name);
+  actual_cwrapper_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  /* target_name transforms -- use actual target program name; might have lt- prefix */
+  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
+  strendzap (target_name, ".exe");
+  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
+  XFREE (target_name);
+  target_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(main) libtool target name: %s\n",
+		  target_name);
+EOF
+
+	    cat <<EOF
+  newargz[0] =
+    XMALLOC (char, (strlen (actual_cwrapper_path) +
+		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
+  strcpy (newargz[0], actual_cwrapper_path);
+  strcat (newargz[0], "$objdir");
+  strcat (newargz[0], "/");
+EOF
+
+	    cat <<"EOF"
+  /* stop here, and copy so we don't have to do this twice */
+  tmp_pathspec = xstrdup (newargz[0]);
+
+  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
+  strcat (newargz[0], actual_cwrapper_name);
+
+  /* DO want the lt- prefix here if it exists, so use target_name */
+  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
+  XFREE (tmp_pathspec);
+  tmp_pathspec = NULL;
+EOF
+
+	    case $host_os in
+	      mingw*)
+	    cat <<"EOF"
+  {
+    char* p;
+    while ((p = strchr (newargz[0], '\\')) != NULL)
+      {
+	*p = '/';
+      }
+    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
+      {
+	*p = '/';
+      }
+  }
+EOF
+	    ;;
+	    esac
+
+	    cat <<"EOF"
+  XFREE (target_name);
+  XFREE (actual_cwrapper_path);
+  XFREE (actual_cwrapper_name);
+
+  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
+  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
+  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
+     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
+     because on Windows, both *_VARNAMEs are PATH but uninstalled
+     libraries must come first. */
+  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
+  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+
+  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
+		  nonnull (lt_argv_zero));
+  for (i = 0; i < newargc; i++)
+    {
+      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
+		      i, nonnull (newargz[i]));
+    }
+
+EOF
+
+	    case $host_os in
+	      mingw*)
+		cat <<"EOF"
+  /* execv doesn't actually work on mingw as expected on unix */
+  newargz = prepare_spawn (newargz);
+  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+  if (rval == -1)
+    {
+      /* failed to start process */
+      lt_debugprintf (__FILE__, __LINE__,
+		      "(main) failed to launch target \"%s\": %s\n",
+		      lt_argv_zero, nonnull (strerror (errno)));
+      return 127;
+    }
+  return rval;
+EOF
+		;;
+	      *)
+		cat <<"EOF"
+  execv (lt_argv_zero, newargz);
+  return rval; /* =127, but avoids unused variable warning */
+EOF
+		;;
+	    esac
+
+	    cat <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+  void *p = (void *) malloc (num);
+  if (!p)
+    lt_fatal (__FILE__, __LINE__, "memory exhausted");
+
+  return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
+			  string) : NULL;
+}
+
+const char *
+base_name (const char *name)
+{
+  const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  /* Skip over the disk name in MSDOS pathnames. */
+  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
+    name += 2;
+#endif
+
+  for (base = name; *name; name++)
+    if (IS_DIR_SEPARATOR (*name))
+      base = name + 1;
+  return base;
+}
+
+int
+check_executable (const char *path)
+{
+  struct stat st;
+
+  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
+                  nonempty (path));
+  if ((!path) || (!*path))
+    return 0;
+
+  if ((stat (path, &st) >= 0)
+      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
+    return 1;
+  else
+    return 0;
+}
+
+int
+make_executable (const char *path)
+{
+  int rval = 0;
+  struct stat st;
+
+  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
+                  nonempty (path));
+  if ((!path) || (!*path))
+    return 0;
+
+  if (stat (path, &st) >= 0)
+    {
+      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
+    }
+  return rval;
+}
+
+/* Searches for the full path of the wrapper.  Returns
+   newly allocated full path name if found, NULL otherwise
+   Does not chase symlinks, even on platforms that support them.
+*/
+char *
+find_executable (const char *wrapper)
+{
+  int has_slash = 0;
+  const char *p;
+  const char *p_next;
+  /* static buffer for getcwd */
+  char tmp[LT_PATHMAX + 1];
+  int tmp_len;
+  char *concat_name;
+
+  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
+                  nonempty (wrapper));
+
+  if ((wrapper == NULL) || (*wrapper == '\0'))
+    return NULL;
+
+  /* Absolute path? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
+    {
+      concat_name = xstrdup (wrapper);
+      if (check_executable (concat_name))
+	return concat_name;
+      XFREE (concat_name);
+    }
+  else
+    {
+#endif
+      if (IS_DIR_SEPARATOR (wrapper[0]))
+	{
+	  concat_name = xstrdup (wrapper);
+	  if (check_executable (concat_name))
+	    return concat_name;
+	  XFREE (concat_name);
+	}
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+    }
+#endif
+
+  for (p = wrapper; *p; p++)
+    if (*p == '/')
+      {
+	has_slash = 1;
+	break;
+      }
+  if (!has_slash)
+    {
+      /* no slashes; search PATH */
+      const char *path = getenv ("PATH");
+      if (path != NULL)
+	{
+	  for (p = path; *p; p = p_next)
+	    {
+	      const char *q;
+	      size_t p_len;
+	      for (q = p; *q; q++)
+		if (IS_PATH_SEPARATOR (*q))
+		  break;
+	      p_len = q - p;
+	      p_next = (*q == '\0' ? q : q + 1);
+	      if (p_len == 0)
+		{
+		  /* empty path: current directory */
+		  if (getcwd (tmp, LT_PATHMAX) == NULL)
+		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+                              nonnull (strerror (errno)));
+		  tmp_len = strlen (tmp);
+		  concat_name =
+		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+		  memcpy (concat_name, tmp, tmp_len);
+		  concat_name[tmp_len] = '/';
+		  strcpy (concat_name + tmp_len + 1, wrapper);
+		}
+	      else
+		{
+		  concat_name =
+		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
+		  memcpy (concat_name, p, p_len);
+		  concat_name[p_len] = '/';
+		  strcpy (concat_name + p_len + 1, wrapper);
+		}
+	      if (check_executable (concat_name))
+		return concat_name;
+	      XFREE (concat_name);
+	    }
+	}
+      /* not found in PATH; assume curdir */
+    }
+  /* Relative path | not found in path: prepend cwd */
+  if (getcwd (tmp, LT_PATHMAX) == NULL)
+    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+              nonnull (strerror (errno)));
+  tmp_len = strlen (tmp);
+  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+  memcpy (concat_name, tmp, tmp_len);
+  concat_name[tmp_len] = '/';
+  strcpy (concat_name + tmp_len + 1, wrapper);
+
+  if (check_executable (concat_name))
+    return concat_name;
+  XFREE (concat_name);
+  return NULL;
+}
+
+char *
+chase_symlinks (const char *pathspec)
+{
+#ifndef S_ISLNK
+  return xstrdup (pathspec);
+#else
+  char buf[LT_PATHMAX];
+  struct stat s;
+  char *tmp_pathspec = xstrdup (pathspec);
+  char *p;
+  int has_symlinks = 0;
+  while (strlen (tmp_pathspec) && !has_symlinks)
+    {
+      lt_debugprintf (__FILE__, __LINE__,
+		      "checking path component for symlinks: %s\n",
+		      tmp_pathspec);
+      if (lstat (tmp_pathspec, &s) == 0)
+	{
+	  if (S_ISLNK (s.st_mode) != 0)
+	    {
+	      has_symlinks = 1;
+	      break;
+	    }
+
+	  /* search backwards for last DIR_SEPARATOR */
+	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
+	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+	    p--;
+	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+	    {
+	      /* no more DIR_SEPARATORS left */
+	      break;
+	    }
+	  *p = '\0';
+	}
+      else
+	{
+	  lt_fatal (__FILE__, __LINE__,
+		    "error accessing file \"%s\": %s",
+		    tmp_pathspec, nonnull (strerror (errno)));
+	}
+    }
+  XFREE (tmp_pathspec);
+
+  if (!has_symlinks)
+    {
+      return xstrdup (pathspec);
+    }
+
+  tmp_pathspec = realpath (pathspec, buf);
+  if (tmp_pathspec == 0)
+    {
+      lt_fatal (__FILE__, __LINE__,
+		"could not follow symlinks for %s", pathspec);
+    }
+  return xstrdup (tmp_pathspec);
+#endif
+}
+
+char *
+strendzap (char *str, const char *pat)
+{
+  size_t len, patlen;
+
+  assert (str != NULL);
+  assert (pat != NULL);
+
+  len = strlen (str);
+  patlen = strlen (pat);
+
+  if (patlen <= len)
+    {
+      str += len - patlen;
+      if (strcmp (str, pat) == 0)
+	*str = '\0';
+    }
+  return str;
+}
+
+void
+lt_debugprintf (const char *file, int line, const char *fmt, ...)
+{
+  va_list args;
+  if (lt_debug)
+    {
+      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
+      va_start (args, fmt);
+      (void) vfprintf (stderr, fmt, args);
+      va_end (args);
+    }
+}
+
+static void
+lt_error_core (int exit_status, const char *file,
+	       int line, const char *mode,
+	       const char *message, va_list ap)
+{
+  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
+  vfprintf (stderr, message, ap);
+  fprintf (stderr, ".\n");
+
+  if (exit_status >= 0)
+    exit (exit_status);
+}
+
+void
+lt_fatal (const char *file, int line, const char *message, ...)
+{
+  va_list ap;
+  va_start (ap, message);
+  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
+  va_end (ap);
+}
+
+static const char *
+nonnull (const char *s)
+{
+  return s ? s : "(null)";
+}
+
+static const char *
+nonempty (const char *s)
+{
+  return (s && !*s) ? "(empty)" : nonnull (s);
+}
+
+void
+lt_setenv (const char *name, const char *value)
+{
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(lt_setenv) setting '%s' to '%s'\n",
+                  nonnull (name), nonnull (value));
+  {
+#ifdef HAVE_SETENV
+    /* always make a copy, for consistency with !HAVE_SETENV */
+    char *str = xstrdup (value);
+    setenv (name, str, 1);
+#else
+    int len = strlen (name) + 1 + strlen (value) + 1;
+    char *str = XMALLOC (char, len);
+    sprintf (str, "%s=%s", name, value);
+    if (putenv (str) != EXIT_SUCCESS)
+      {
+        XFREE (str);
+      }
+#endif
+  }
+}
+
+char *
+lt_extend_str (const char *orig_value, const char *add, int to_end)
+{
+  char *new_value;
+  if (orig_value && *orig_value)
+    {
+      int orig_value_len = strlen (orig_value);
+      int add_len = strlen (add);
+      new_value = XMALLOC (char, add_len + orig_value_len + 1);
+      if (to_end)
+        {
+          strcpy (new_value, orig_value);
+          strcpy (new_value + orig_value_len, add);
+        }
+      else
+        {
+          strcpy (new_value, add);
+          strcpy (new_value + add_len, orig_value);
+        }
+    }
+  else
+    {
+      new_value = xstrdup (add);
+    }
+  return new_value;
+}
+
+void
+lt_update_exe_path (const char *name, const char *value)
+{
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
+                  nonnull (name), nonnull (value));
+
+  if (name && *name && value && *value)
+    {
+      char *new_value = lt_extend_str (getenv (name), value, 0);
+      /* some systems can't cope with a ':'-terminated path #' */
+      int len = strlen (new_value);
+      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+        {
+          new_value[len-1] = '\0';
+        }
+      lt_setenv (name, new_value);
+      XFREE (new_value);
+    }
+}
+
+void
+lt_update_lib_path (const char *name, const char *value)
+{
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
+                  nonnull (name), nonnull (value));
+
+  if (name && *name && value && *value)
+    {
+      char *new_value = lt_extend_str (getenv (name), value, 0);
+      lt_setenv (name, new_value);
+      XFREE (new_value);
+    }
+}
+
+EOF
+	    case $host_os in
+	      mingw*)
+		cat <<"EOF"
+
+/* Prepares an argument vector before calling spawn().
+   Note that spawn() does not by itself call the command interpreter
+     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
+      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+         GetVersionEx(&v);
+         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
+      }) ? "cmd.exe" : "command.com").
+   Instead it simply concatenates the arguments, separated by ' ', and calls
+   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
+   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
+   special way:
+   - Space and tab are interpreted as delimiters. They are not treated as
+     delimiters if they are surrounded by double quotes: "...".
+   - Unescaped double quotes are removed from the input. Their only effect is
+     that within double quotes, space and tab are treated like normal
+     characters.
+   - Backslashes not followed by double quotes are not special.
+   - But 2*n+1 backslashes followed by a double quote become
+     n backslashes followed by a double quote (n >= 0):
+       \" -> "
+       \\\" -> \"
+       \\\\\" -> \\"
+ */
+#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+char **
+prepare_spawn (char **argv)
+{
+  size_t argc;
+  char **new_argv;
+  size_t i;
+
+  /* Count number of arguments.  */
+  for (argc = 0; argv[argc] != NULL; argc++)
+    ;
+
+  /* Allocate new argument vector.  */
+  new_argv = XMALLOC (char *, argc + 1);
+
+  /* Put quoted arguments into the new argument vector.  */
+  for (i = 0; i < argc; i++)
+    {
+      const char *string = argv[i];
+
+      if (string[0] == '\0')
+	new_argv[i] = xstrdup ("\"\"");
+      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
+	{
+	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
+	  size_t length;
+	  unsigned int backslashes;
+	  const char *s;
+	  char *quoted_string;
+	  char *p;
+
+	  length = 0;
+	  backslashes = 0;
+	  if (quote_around)
+	    length++;
+	  for (s = string; *s != '\0'; s++)
+	    {
+	      char c = *s;
+	      if (c == '"')
+		length += backslashes + 1;
+	      length++;
+	      if (c == '\\')
+		backslashes++;
+	      else
+		backslashes = 0;
+	    }
+	  if (quote_around)
+	    length += backslashes + 1;
+
+	  quoted_string = XMALLOC (char, length + 1);
+
+	  p = quoted_string;
+	  backslashes = 0;
+	  if (quote_around)
+	    *p++ = '"';
+	  for (s = string; *s != '\0'; s++)
+	    {
+	      char c = *s;
+	      if (c == '"')
+		{
+		  unsigned int j;
+		  for (j = backslashes + 1; j > 0; j--)
+		    *p++ = '\\';
+		}
+	      *p++ = c;
+	      if (c == '\\')
+		backslashes++;
+	      else
+		backslashes = 0;
+	    }
+	  if (quote_around)
+	    {
+	      unsigned int j;
+	      for (j = backslashes; j > 0; j--)
+		*p++ = '\\';
+	      *p++ = '"';
+	    }
+	  *p = '\0';
+
+	  new_argv[i] = quoted_string;
+	}
+      else
+	new_argv[i] = (char *) string;
+    }
+  new_argv[argc] = NULL;
+
+  return new_argv;
+}
+EOF
+		;;
+	    esac
+
+            cat <<"EOF"
+void lt_dump_script (FILE* f)
+{
+EOF
+	    func_emit_wrapper yes |
+	      $SED -n -e '
+s/^\(.\{79\}\)\(..*\)/\1\
+\2/
+h
+s/\([\\"]\)/\\\1/g
+s/$/\\n/
+s/\([^\n]*\).*/  fputs ("\1", f);/p
+g
+D'
+            cat <<"EOF"
+}
+EOF
+}
+# end: func_emit_cwrapperexe_src
+
+# func_win32_import_lib_p ARG
+# True if ARG is an import lib, as indicated by $file_magic_cmd
+func_win32_import_lib_p ()
+{
+    $opt_debug
+    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
+    *import*) : ;;
+    *) false ;;
+    esac
+}
+
+# func_mode_link arg...
+func_mode_link ()
+{
+    $opt_debug
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # which system we are compiling for in order to pass an extra
+      # flag for every libtool invocation.
+      # allow_undefined=no
+
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll which has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    libtool_args=$nonopt
+    base_compile="$nonopt $@"
+    compile_command=$nonopt
+    finalize_command=$nonopt
+
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
+    inst_prefix_dir=
+    new_inherited_linker_flags=
+
+    avoid_version=no
+    bindir=
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    ltlibs=
+    module=no
+    no_install=no
+    objs=
+    non_pic_objects=
+    precious_files_regex=
+    prefer_static_libs=no
+    preload=no
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+    vinfo_number=no
+    weak_libs=
+    single_module="${wl}-single_module"
+    func_infer_tag $base_compile
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -shared)
+	test "$build_libtool_libs" != yes && \
+	  func_fatal_configuration "can not build a shared library"
+	build_old_libs=no
+	break
+	;;
+      -all-static | -static | -static-libtool-libs)
+	case $arg in
+	-all-static)
+	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+	    func_warning "complete static linking is impossible in this configuration"
+	  fi
+	  if test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	  prefer_static_libs=yes
+	  ;;
+	-static)
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	  prefer_static_libs=built
+	  ;;
+	-static-libtool-libs)
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	  prefer_static_libs=yes
+	  ;;
+	esac
+	build_libtool_libs=no
+	build_old_libs=yes
+	break
+	;;
+      esac
+    done
+
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+    # Go through the arguments, transforming them on the way.
+    while test "$#" -gt 0; do
+      arg="$1"
+      shift
+      func_quote_for_eval "$arg"
+      qarg=$func_quote_for_eval_unquoted_result
+      func_append libtool_args " $func_quote_for_eval_result"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+	case $prev in
+	output)
+	  func_append compile_command " @OUTPUT@"
+	  func_append finalize_command " @OUTPUT@"
+	  ;;
+	esac
+
+	case $prev in
+	bindir)
+	  bindir="$arg"
+	  prev=
+	  continue
+	  ;;
+	dlfiles|dlprefiles)
+	  if test "$preload" = no; then
+	    # Add the symbol object into the linking commands.
+	    func_append compile_command " @SYMFILE@"
+	    func_append finalize_command " @SYMFILE@"
+	    preload=yes
+	  fi
+	  case $arg in
+	  *.la | *.lo) ;;  # We handle these cases below.
+	  force)
+	    if test "$dlself" = no; then
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  self)
+	    if test "$prev" = dlprefiles; then
+	      dlself=yes
+	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+	      dlself=yes
+	    else
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  *)
+	    if test "$prev" = dlfiles; then
+	      func_append dlfiles " $arg"
+	    else
+	      func_append dlprefiles " $arg"
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  esac
+	  ;;
+	expsyms)
+	  export_symbols="$arg"
+	  test -f "$arg" \
+	    || func_fatal_error "symbol file \`$arg' does not exist"
+	  prev=
+	  continue
+	  ;;
+	expsyms_regex)
+	  export_symbols_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	framework)
+	  case $host in
+	    *-*-darwin*)
+	      case "$deplibs " in
+		*" $qarg.ltframework "*) ;;
+		*) func_append deplibs " $qarg.ltframework" # this is fixed later
+		   ;;
+	      esac
+	      ;;
+	  esac
+	  prev=
+	  continue
+	  ;;
+	inst_prefix)
+	  inst_prefix_dir="$arg"
+	  prev=
+	  continue
+	  ;;
+	objectlist)
+	  if test -f "$arg"; then
+	    save_arg=$arg
+	    moreargs=
+	    for fil in `cat "$save_arg"`
+	    do
+#	      func_append moreargs " $fil"
+	      arg=$fil
+	      # A libtool-controlled object.
+
+	      # Check to see that this really is a libtool object.
+	      if func_lalib_unsafe_p "$arg"; then
+		pic_object=
+		non_pic_object=
+
+		# Read the .lo file
+		func_source "$arg"
+
+		if test -z "$pic_object" ||
+		   test -z "$non_pic_object" ||
+		   test "$pic_object" = none &&
+		   test "$non_pic_object" = none; then
+		  func_fatal_error "cannot find name of object for \`$arg'"
+		fi
+
+		# Extract subdirectory from the argument.
+		func_dirname "$arg" "/" ""
+		xdir="$func_dirname_result"
+
+		if test "$pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  pic_object="$xdir$pic_object"
+
+		  if test "$prev" = dlfiles; then
+		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		      func_append dlfiles " $pic_object"
+		      prev=
+		      continue
+		    else
+		      # If libtool objects are unsupported, then we need to preload.
+		      prev=dlprefiles
+		    fi
+		  fi
+
+		  # CHECK ME:  I think I busted this.  -Ossama
+		  if test "$prev" = dlprefiles; then
+		    # Preload the old-style object.
+		    func_append dlprefiles " $pic_object"
+		    prev=
+		  fi
+
+		  # A PIC object.
+		  func_append libobjs " $pic_object"
+		  arg="$pic_object"
+		fi
+
+		# Non-PIC object.
+		if test "$non_pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  non_pic_object="$xdir$non_pic_object"
+
+		  # A standard non-PIC object
+		  func_append non_pic_objects " $non_pic_object"
+		  if test -z "$pic_object" || test "$pic_object" = none ; then
+		    arg="$non_pic_object"
+		  fi
+		else
+		  # If the PIC object exists, use it instead.
+		  # $xdir was prepended to $pic_object above.
+		  non_pic_object="$pic_object"
+		  func_append non_pic_objects " $non_pic_object"
+		fi
+	      else
+		# Only an error if not doing a dry-run.
+		if $opt_dry_run; then
+		  # Extract subdirectory from the argument.
+		  func_dirname "$arg" "/" ""
+		  xdir="$func_dirname_result"
+
+		  func_lo2o "$arg"
+		  pic_object=$xdir$objdir/$func_lo2o_result
+		  non_pic_object=$xdir$func_lo2o_result
+		  func_append libobjs " $pic_object"
+		  func_append non_pic_objects " $non_pic_object"
+	        else
+		  func_fatal_error "\`$arg' is not a valid libtool object"
+		fi
+	      fi
+	    done
+	  else
+	    func_fatal_error "link input file \`$arg' does not exist"
+	  fi
+	  arg=$save_arg
+	  prev=
+	  continue
+	  ;;
+	precious_regex)
+	  precious_files_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	release)
+	  release="-$arg"
+	  prev=
+	  continue
+	  ;;
+	rpath | xrpath)
+	  # We need an absolute path.
+	  case $arg in
+	  [\\/]* | [A-Za-z]:[\\/]*) ;;
+	  *)
+	    func_fatal_error "only absolute run-paths are allowed"
+	    ;;
+	  esac
+	  if test "$prev" = rpath; then
+	    case "$rpath " in
+	    *" $arg "*) ;;
+	    *) func_append rpath " $arg" ;;
+	    esac
+	  else
+	    case "$xrpath " in
+	    *" $arg "*) ;;
+	    *) func_append xrpath " $arg" ;;
+	    esac
+	  fi
+	  prev=
+	  continue
+	  ;;
+	shrext)
+	  shrext_cmds="$arg"
+	  prev=
+	  continue
+	  ;;
+	weak)
+	  func_append weak_libs " $arg"
+	  prev=
+	  continue
+	  ;;
+	xcclinker)
+	  func_append linker_flags " $qarg"
+	  func_append compiler_flags " $qarg"
+	  prev=
+	  func_append compile_command " $qarg"
+	  func_append finalize_command " $qarg"
+	  continue
+	  ;;
+	xcompiler)
+	  func_append compiler_flags " $qarg"
+	  prev=
+	  func_append compile_command " $qarg"
+	  func_append finalize_command " $qarg"
+	  continue
+	  ;;
+	xlinker)
+	  func_append linker_flags " $qarg"
+	  func_append compiler_flags " $wl$qarg"
+	  prev=
+	  func_append compile_command " $wl$qarg"
+	  func_append finalize_command " $wl$qarg"
+	  continue
+	  ;;
+	*)
+	  eval "$prev=\"\$arg\""
+	  prev=
+	  continue
+	  ;;
+	esac
+      fi # test -n "$prev"
+
+      prevarg="$arg"
+
+      case $arg in
+      -all-static)
+	if test -n "$link_static_flag"; then
+	  # See comment for -static flag below, for more details.
+	  func_append compile_command " $link_static_flag"
+	  func_append finalize_command " $link_static_flag"
+	fi
+	continue
+	;;
+
+      -allow-undefined)
+	# FIXME: remove this flag sometime in the future.
+	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
+	;;
+
+      -avoid-version)
+	avoid_version=yes
+	continue
+	;;
+
+      -bindir)
+	prev=bindir
+	continue
+	;;
+
+      -dlopen)
+	prev=dlfiles
+	continue
+	;;
+
+      -dlpreopen)
+	prev=dlprefiles
+	continue
+	;;
+
+      -export-dynamic)
+	export_dynamic=yes
+	continue
+	;;
+
+      -export-symbols | -export-symbols-regex)
+	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	  func_fatal_error "more than one -exported-symbols argument is not allowed"
+	fi
+	if test "X$arg" = "X-export-symbols"; then
+	  prev=expsyms
+	else
+	  prev=expsyms_regex
+	fi
+	continue
+	;;
+
+      -framework)
+	prev=framework
+	continue
+	;;
+
+      -inst-prefix-dir)
+	prev=inst_prefix
+	continue
+	;;
+
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+	case $with_gcc/$host in
+	no/*-*-irix* | /*-*-irix*)
+	  func_append compile_command " $arg"
+	  func_append finalize_command " $arg"
+	  ;;
+	esac
+	continue
+	;;
+
+      -L*)
+	func_stripname "-L" '' "$arg"
+	if test -z "$func_stripname_result"; then
+	  if test "$#" -gt 0; then
+	    func_fatal_error "require no space between \`-L' and \`$1'"
+	  else
+	    func_fatal_error "need path for \`-L' option"
+	  fi
+	fi
+	func_resolve_sysroot "$func_stripname_result"
+	dir=$func_resolve_sysroot_result
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  absdir=`cd "$dir" && pwd`
+	  test -z "$absdir" && \
+	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
+	  dir="$absdir"
+	  ;;
+	esac
+	case "$deplibs " in
+	*" -L$dir "* | *" $arg "*)
+	  # Will only happen for absolute or sysroot arguments
+	  ;;
+	*)
+	  # Preserve sysroot, but never include relative directories
+	  case $dir in
+	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
+	    *) func_append deplibs " -L$dir" ;;
+	  esac
+	  func_append lib_search_path " $dir"
+	  ;;
+	esac
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
+	  case :$dllsearchpath: in
+	  *":$dir:"*) ;;
+	  ::) dllsearchpath=$dir;;
+	  *) func_append dllsearchpath ":$dir";;
+	  esac
+	  case :$dllsearchpath: in
+	  *":$testbindir:"*) ;;
+	  ::) dllsearchpath=$testbindir;;
+	  *) func_append dllsearchpath ":$testbindir";;
+	  esac
+	  ;;
+	esac
+	continue
+	;;
+
+      -l*)
+	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+	  case $host in
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
+	    # These systems don't actually have a C or math library (as such)
+	    continue
+	    ;;
+	  *-*-os2*)
+	    # These systems don't actually have a C library (as such)
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	    # Do not include libc due to us having libc/libc_r.
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C and math libraries are in the System framework
+	    func_append deplibs " System.ltframework"
+	    continue
+	    ;;
+	  *-*-sco3.2v5* | *-*-sco5v6*)
+	    # Causes problems with __ctype
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+	    # Compiler inserts libc in the correct place for threads to work
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  esac
+	elif test "X$arg" = "X-lc_r"; then
+	 case $host in
+	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	   # Do not include libc_r directly, use -pthread flag.
+	   continue
+	   ;;
+	 esac
+	fi
+	func_append deplibs " $arg"
+	continue
+	;;
+
+      -module)
+	module=yes
+	continue
+	;;
+
+      # Tru64 UNIX uses -model [arg] to determine the layout of C++
+      # classes, name mangling, and exception handling.
+      # Darwin uses the -arch flag to determine output architecture.
+      -model|-arch|-isysroot|--sysroot)
+	func_append compiler_flags " $arg"
+	func_append compile_command " $arg"
+	func_append finalize_command " $arg"
+	prev=xcompiler
+	continue
+	;;
+
+      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+	func_append compiler_flags " $arg"
+	func_append compile_command " $arg"
+	func_append finalize_command " $arg"
+	case "$new_inherited_linker_flags " in
+	    *" $arg "*) ;;
+	    * ) func_append new_inherited_linker_flags " $arg" ;;
+	esac
+	continue
+	;;
+
+      -multi_module)
+	single_module="${wl}-multi_module"
+	continue
+	;;
+
+      -no-fast-install)
+	fast_install=no
+	continue
+	;;
+
+      -no-install)
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
+	  # The PATH hackery in wrapper scripts is required on Windows
+	  # and Darwin in order for the loader to find any dlls it needs.
+	  func_warning "\`-no-install' is ignored for $host"
+	  func_warning "assuming \`-no-fast-install' instead"
+	  fast_install=no
+	  ;;
+	*) no_install=yes ;;
+	esac
+	continue
+	;;
+
+      -no-undefined)
+	allow_undefined=no
+	continue
+	;;
+
+      -objectlist)
+	prev=objectlist
+	continue
+	;;
+
+      -o) prev=output ;;
+
+      -precious-files-regex)
+	prev=precious_regex
+	continue
+	;;
+
+      -release)
+	prev=release
+	continue
+	;;
+
+      -rpath)
+	prev=rpath
+	continue
+	;;
+
+      -R)
+	prev=xrpath
+	continue
+	;;
+
+      -R*)
+	func_stripname '-R' '' "$arg"
+	dir=$func_stripname_result
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	=*)
+	  func_stripname '=' '' "$dir"
+	  dir=$lt_sysroot$func_stripname_result
+	  ;;
+	*)
+	  func_fatal_error "only absolute run-paths are allowed"
+	  ;;
+	esac
+	case "$xrpath " in
+	*" $dir "*) ;;
+	*) func_append xrpath " $dir" ;;
+	esac
+	continue
+	;;
+
+      -shared)
+	# The effects of -shared are defined in a previous loop.
+	continue
+	;;
+
+      -shrext)
+	prev=shrext
+	continue
+	;;
+
+      -static | -static-libtool-libs)
+	# The effects of -static are defined in a previous loop.
+	# We used to do the same as -all-static on platforms that
+	# didn't have a PIC flag, but the assumption that the effects
+	# would be equivalent was wrong.  It would break on at least
+	# Digital Unix and AIX.
+	continue
+	;;
+
+      -thread-safe)
+	thread_safe=yes
+	continue
+	;;
+
+      -version-info)
+	prev=vinfo
+	continue
+	;;
+
+      -version-number)
+	prev=vinfo
+	vinfo_number=yes
+	continue
+	;;
+
+      -weak)
+        prev=weak
+	continue
+	;;
+
+      -Wc,*)
+	func_stripname '-Wc,' '' "$arg"
+	args=$func_stripname_result
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+          func_quote_for_eval "$flag"
+	  func_append arg " $func_quote_for_eval_result"
+	  func_append compiler_flags " $func_quote_for_eval_result"
+	done
+	IFS="$save_ifs"
+	func_stripname ' ' '' "$arg"
+	arg=$func_stripname_result
+	;;
+
+      -Wl,*)
+	func_stripname '-Wl,' '' "$arg"
+	args=$func_stripname_result
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+          func_quote_for_eval "$flag"
+	  func_append arg " $wl$func_quote_for_eval_result"
+	  func_append compiler_flags " $wl$func_quote_for_eval_result"
+	  func_append linker_flags " $func_quote_for_eval_result"
+	done
+	IFS="$save_ifs"
+	func_stripname ' ' '' "$arg"
+	arg=$func_stripname_result
+	;;
+
+      -Xcompiler)
+	prev=xcompiler
+	continue
+	;;
+
+      -Xlinker)
+	prev=xlinker
+	continue
+	;;
+
+      -XCClinker)
+	prev=xcclinker
+	continue
+	;;
+
+      # -msg_* for osf cc
+      -msg_*)
+	func_quote_for_eval "$arg"
+	arg="$func_quote_for_eval_result"
+	;;
+
+      # Flags to be passed through unchanged, with rationale:
+      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
+      # -r[0-9][0-9]*        specify processor for the SGI compiler
+      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
+      # +DA*, +DD*           enable 64-bit mode for the HP compiler
+      # -q*                  compiler args for the IBM compiler
+      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
+      # -F/path              path to uninstalled frameworks, gcc on darwin
+      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
+      # @file                GCC response files
+      # -tp=*                Portland pgcc target processor selection
+      # --sysroot=*          for sysroot support
+      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
+      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
+        func_quote_for_eval "$arg"
+	arg="$func_quote_for_eval_result"
+        func_append compile_command " $arg"
+        func_append finalize_command " $arg"
+        func_append compiler_flags " $arg"
+        continue
+        ;;
+
+      # Some other compiler flag.
+      -* | +*)
+        func_quote_for_eval "$arg"
+	arg="$func_quote_for_eval_result"
+	;;
+
+      *.$objext)
+	# A standard object.
+	func_append objs " $arg"
+	;;
+
+      *.lo)
+	# A libtool-controlled object.
+
+	# Check to see that this really is a libtool object.
+	if func_lalib_unsafe_p "$arg"; then
+	  pic_object=
+	  non_pic_object=
+
+	  # Read the .lo file
+	  func_source "$arg"
+
+	  if test -z "$pic_object" ||
+	     test -z "$non_pic_object" ||
+	     test "$pic_object" = none &&
+	     test "$non_pic_object" = none; then
+	    func_fatal_error "cannot find name of object for \`$arg'"
+	  fi
+
+	  # Extract subdirectory from the argument.
+	  func_dirname "$arg" "/" ""
+	  xdir="$func_dirname_result"
+
+	  if test "$pic_object" != none; then
+	    # Prepend the subdirectory the object is found in.
+	    pic_object="$xdir$pic_object"
+
+	    if test "$prev" = dlfiles; then
+	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		func_append dlfiles " $pic_object"
+		prev=
+		continue
+	      else
+		# If libtool objects are unsupported, then we need to preload.
+		prev=dlprefiles
+	      fi
+	    fi
+
+	    # CHECK ME:  I think I busted this.  -Ossama
+	    if test "$prev" = dlprefiles; then
+	      # Preload the old-style object.
+	      func_append dlprefiles " $pic_object"
+	      prev=
+	    fi
+
+	    # A PIC object.
+	    func_append libobjs " $pic_object"
+	    arg="$pic_object"
+	  fi
+
+	  # Non-PIC object.
+	  if test "$non_pic_object" != none; then
+	    # Prepend the subdirectory the object is found in.
+	    non_pic_object="$xdir$non_pic_object"
+
+	    # A standard non-PIC object
+	    func_append non_pic_objects " $non_pic_object"
+	    if test -z "$pic_object" || test "$pic_object" = none ; then
+	      arg="$non_pic_object"
+	    fi
+	  else
+	    # If the PIC object exists, use it instead.
+	    # $xdir was prepended to $pic_object above.
+	    non_pic_object="$pic_object"
+	    func_append non_pic_objects " $non_pic_object"
+	  fi
+	else
+	  # Only an error if not doing a dry-run.
+	  if $opt_dry_run; then
+	    # Extract subdirectory from the argument.
+	    func_dirname "$arg" "/" ""
+	    xdir="$func_dirname_result"
+
+	    func_lo2o "$arg"
+	    pic_object=$xdir$objdir/$func_lo2o_result
+	    non_pic_object=$xdir$func_lo2o_result
+	    func_append libobjs " $pic_object"
+	    func_append non_pic_objects " $non_pic_object"
+	  else
+	    func_fatal_error "\`$arg' is not a valid libtool object"
+	  fi
+	fi
+	;;
+
+      *.$libext)
+	# An archive.
+	func_append deplibs " $arg"
+	func_append old_deplibs " $arg"
+	continue
+	;;
+
+      *.la)
+	# A libtool-controlled library.
+
+	func_resolve_sysroot "$arg"
+	if test "$prev" = dlfiles; then
+	  # This library was specified with -dlopen.
+	  func_append dlfiles " $func_resolve_sysroot_result"
+	  prev=
+	elif test "$prev" = dlprefiles; then
+	  # The library was specified with -dlpreopen.
+	  func_append dlprefiles " $func_resolve_sysroot_result"
+	  prev=
+	else
+	  func_append deplibs " $func_resolve_sysroot_result"
+	fi
+	continue
+	;;
+
+      # Some other compiler argument.
+      *)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	func_quote_for_eval "$arg"
+	arg="$func_quote_for_eval_result"
+	;;
+      esac # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+	func_append compile_command " $arg"
+	func_append finalize_command " $arg"
+      fi
+    done # argument parsing loop
+
+    test -n "$prev" && \
+      func_fatal_help "the \`$prevarg' option requires an argument"
+
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      func_append compile_command " $arg"
+      func_append finalize_command " $arg"
+    fi
+
+    oldlibs=
+    # calculate the name of the file, without its directory
+    func_basename "$output"
+    outputname="$func_basename_result"
+    libobjs_save="$libobjs"
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+    func_dirname "$output" "/" ""
+    output_objdir="$func_dirname_result$objdir"
+    func_to_tool_file "$output_objdir/"
+    tool_output_objdir=$func_to_tool_file_result
+    # Create the object directory.
+    func_mkdir_p "$output_objdir"
+
+    # Determine the type of output
+    case $output in
+    "")
+      func_fatal_help "you must specify an output file"
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    specialdeplibs=
+
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      if $opt_preserve_dup_deps ; then
+	case "$libs " in
+	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
+	esac
+      fi
+      func_append libs " $deplib"
+    done
+
+    if test "$linkmode" = lib; then
+      libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+      # Compute libraries that are listed more than once in $predeps
+      # $postdeps and mark them as special (i.e., whose duplicates are
+      # not to be eliminated).
+      pre_post_deps=
+      if $opt_duplicate_compiler_generated_deps; then
+	for pre_post_dep in $predeps $postdeps; do
+	  case "$pre_post_deps " in
+	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
+	  esac
+	  func_append pre_post_deps " $pre_post_dep"
+	done
+      fi
+      pre_post_deps=
+    fi
+
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
+
+    case $linkmode in
+    lib)
+	passes="conv dlpreopen link"
+	for file in $dlfiles $dlprefiles; do
+	  case $file in
+	  *.la) ;;
+	  *)
+	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
+	    ;;
+	  esac
+	done
+	;;
+    prog)
+	compile_deplibs=
+	finalize_deplibs=
+	alldeplibs=no
+	newdlfiles=
+	newdlprefiles=
+	passes="conv scan dlopen dlpreopen link"
+	;;
+    *)  passes="conv"
+	;;
+    esac
+
+    for pass in $passes; do
+      # The preopen pass in lib mode reverses $deplibs; put it back here
+      # so that -L comes before libs that need it for instance...
+      if test "$linkmode,$pass" = "lib,link"; then
+	## FIXME: Find the place where the list is rebuilt in the wrong
+	##        order, and fix it there properly
+        tmp_deplibs=
+	for deplib in $deplibs; do
+	  tmp_deplibs="$deplib $tmp_deplibs"
+	done
+	deplibs="$tmp_deplibs"
+      fi
+
+      if test "$linkmode,$pass" = "lib,link" ||
+	 test "$linkmode,$pass" = "prog,scan"; then
+	libs="$deplibs"
+	deplibs=
+      fi
+      if test "$linkmode" = prog; then
+	case $pass in
+	dlopen) libs="$dlfiles" ;;
+	dlpreopen) libs="$dlprefiles" ;;
+	link)
+	  libs="$deplibs %DEPLIBS%"
+	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
+	  ;;
+	esac
+      fi
+      if test "$linkmode,$pass" = "lib,dlpreopen"; then
+	# Collect and forward deplibs of preopened libtool libs
+	for lib in $dlprefiles; do
+	  # Ignore non-libtool-libs
+	  dependency_libs=
+	  func_resolve_sysroot "$lib"
+	  case $lib in
+	  *.la)	func_source "$func_resolve_sysroot_result" ;;
+	  esac
+
+	  # Collect preopened libtool deplibs, except any this library
+	  # has declared as weak libs
+	  for deplib in $dependency_libs; do
+	    func_basename "$deplib"
+            deplib_base=$func_basename_result
+	    case " $weak_libs " in
+	    *" $deplib_base "*) ;;
+	    *) func_append deplibs " $deplib" ;;
+	    esac
+	  done
+	done
+	libs="$dlprefiles"
+      fi
+      if test "$pass" = dlopen; then
+	# Collect dlpreopened libraries
+	save_deplibs="$deplibs"
+	deplibs=
+      fi
+
+      for deplib in $libs; do
+	lib=
+	found=no
+	case $deplib in
+	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+	  if test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    func_append compiler_flags " $deplib"
+	    if test "$linkmode" = lib ; then
+		case "$new_inherited_linker_flags " in
+		    *" $deplib "*) ;;
+		    * ) func_append new_inherited_linker_flags " $deplib" ;;
+		esac
+	    fi
+	  fi
+	  continue
+	  ;;
+	-l*)
+	  if test "$linkmode" != lib && test "$linkmode" != prog; then
+	    func_warning "\`-l' is ignored for archives/objects"
+	    continue
+	  fi
+	  func_stripname '-l' '' "$deplib"
+	  name=$func_stripname_result
+	  if test "$linkmode" = lib; then
+	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
+	  else
+	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
+	  fi
+	  for searchdir in $searchdirs; do
+	    for search_ext in .la $std_shrext .so .a; do
+	      # Search the libtool library
+	      lib="$searchdir/lib${name}${search_ext}"
+	      if test -f "$lib"; then
+		if test "$search_ext" = ".la"; then
+		  found=yes
+		else
+		  found=no
+		fi
+		break 2
+	      fi
+	    done
+	  done
+	  if test "$found" != yes; then
+	    # deplib doesn't seem to be a libtool library
+	    if test "$linkmode,$pass" = "prog,link"; then
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      deplibs="$deplib $deplibs"
+	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    continue
+	  else # deplib is a libtool library
+	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+	    # We need to do some special things here, and not later.
+	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	      case " $predeps $postdeps " in
+	      *" $deplib "*)
+		if func_lalib_p "$lib"; then
+		  library_names=
+		  old_library=
+		  func_source "$lib"
+		  for l in $old_library $library_names; do
+		    ll="$l"
+		  done
+		  if test "X$ll" = "X$old_library" ; then # only static version available
+		    found=no
+		    func_dirname "$lib" "" "."
+		    ladir="$func_dirname_result"
+		    lib=$ladir/$old_library
+		    if test "$linkmode,$pass" = "prog,link"; then
+		      compile_deplibs="$deplib $compile_deplibs"
+		      finalize_deplibs="$deplib $finalize_deplibs"
+		    else
+		      deplibs="$deplib $deplibs"
+		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+		    fi
+		    continue
+		  fi
+		fi
+		;;
+	      *) ;;
+	      esac
+	    fi
+	  fi
+	  ;; # -l
+	*.ltframework)
+	  if test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    deplibs="$deplib $deplibs"
+	    if test "$linkmode" = lib ; then
+		case "$new_inherited_linker_flags " in
+		    *" $deplib "*) ;;
+		    * ) func_append new_inherited_linker_flags " $deplib" ;;
+		esac
+	    fi
+	  fi
+	  continue
+	  ;;
+	-L*)
+	  case $linkmode in
+	  lib)
+	    deplibs="$deplib $deplibs"
+	    test "$pass" = conv && continue
+	    newdependency_libs="$deplib $newdependency_libs"
+	    func_stripname '-L' '' "$deplib"
+	    func_resolve_sysroot "$func_stripname_result"
+	    func_append newlib_search_path " $func_resolve_sysroot_result"
+	    ;;
+	  prog)
+	    if test "$pass" = conv; then
+	      deplibs="$deplib $deplibs"
+	      continue
+	    fi
+	    if test "$pass" = scan; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    func_stripname '-L' '' "$deplib"
+	    func_resolve_sysroot "$func_stripname_result"
+	    func_append newlib_search_path " $func_resolve_sysroot_result"
+	    ;;
+	  *)
+	    func_warning "\`-L' is ignored for archives/objects"
+	    ;;
+	  esac # linkmode
+	  continue
+	  ;; # -L
+	-R*)
+	  if test "$pass" = link; then
+	    func_stripname '-R' '' "$deplib"
+	    func_resolve_sysroot "$func_stripname_result"
+	    dir=$func_resolve_sysroot_result
+	    # Make sure the xrpath contains only unique directories.
+	    case "$xrpath " in
+	    *" $dir "*) ;;
+	    *) func_append xrpath " $dir" ;;
+	    esac
+	  fi
+	  deplibs="$deplib $deplibs"
+	  continue
+	  ;;
+	*.la)
+	  func_resolve_sysroot "$deplib"
+	  lib=$func_resolve_sysroot_result
+	  ;;
+	*.$libext)
+	  if test "$pass" = conv; then
+	    deplibs="$deplib $deplibs"
+	    continue
+	  fi
+	  case $linkmode in
+	  lib)
+	    # Linking convenience modules into shared libraries is allowed,
+	    # but linking other static libraries is non-portable.
+	    case " $dlpreconveniencelibs " in
+	    *" $deplib "*) ;;
+	    *)
+	      valid_a_lib=no
+	      case $deplibs_check_method in
+		match_pattern*)
+		  set dummy $deplibs_check_method; shift
+		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
+		    | $EGREP "$match_pattern_regex" > /dev/null; then
+		    valid_a_lib=yes
+		  fi
+		;;
+		pass_all)
+		  valid_a_lib=yes
+		;;
+	      esac
+	      if test "$valid_a_lib" != yes; then
+		echo
+		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because the file extensions .$libext of this argument makes me believe"
+		echo "*** that it is just a static archive that I should not use here."
+	      else
+		echo
+		$ECHO "*** Warning: Linking the shared library $output against the"
+		$ECHO "*** static library $deplib is not portable!"
+		deplibs="$deplib $deplibs"
+	      fi
+	      ;;
+	    esac
+	    continue
+	    ;;
+	  prog)
+	    if test "$pass" != link; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    continue
+	    ;;
+	  esac # linkmode
+	  ;; # *.$libext
+	*.lo | *.$objext)
+	  if test "$pass" = conv; then
+	    deplibs="$deplib $deplibs"
+	  elif test "$linkmode" = prog; then
+	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+	      # If there is no dlopen support or we're linking statically,
+	      # we need to preload.
+	      func_append newdlprefiles " $deplib"
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      func_append newdlfiles " $deplib"
+	    fi
+	  fi
+	  continue
+	  ;;
+	%DEPLIBS%)
+	  alldeplibs=yes
+	  continue
+	  ;;
+	esac # case $deplib
+
+	if test "$found" = yes || test -f "$lib"; then :
+	else
+	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
+	fi
+
+	# Check to see that this really is a libtool archive.
+	func_lalib_unsafe_p "$lib" \
+	  || func_fatal_error "\`$lib' is not a valid libtool archive"
+
+	func_dirname "$lib" "" "."
+	ladir="$func_dirname_result"
+
+	dlname=
+	dlopen=
+	dlpreopen=
+	libdir=
+	library_names=
+	old_library=
+	inherited_linker_flags=
+	# If the library was installed with an old release of libtool,
+	# it will not redefine variables installed, or shouldnotlink
+	installed=yes
+	shouldnotlink=no
+	avoidtemprpath=
+
+
+	# Read the .la file
+	func_source "$lib"
+
+	# Convert "-framework foo" to "foo.ltframework"
+	if test -n "$inherited_linker_flags"; then
+	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
+	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+	    case " $new_inherited_linker_flags " in
+	      *" $tmp_inherited_linker_flag "*) ;;
+	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
+	    esac
+	  done
+	fi
+	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	if test "$linkmode,$pass" = "lib,link" ||
+	   test "$linkmode,$pass" = "prog,scan" ||
+	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+	  test -n "$dlopen" && func_append dlfiles " $dlopen"
+	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
+	fi
+
+	if test "$pass" = conv; then
+	  # Only check for convenience libraries
+	  deplibs="$lib $deplibs"
+	  if test -z "$libdir"; then
+	    if test -z "$old_library"; then
+	      func_fatal_error "cannot find name of link library for \`$lib'"
+	    fi
+	    # It is a libtool convenience library, so add in its objects.
+	    func_append convenience " $ladir/$objdir/$old_library"
+	    func_append old_convenience " $ladir/$objdir/$old_library"
+	    tmp_libs=
+	    for deplib in $dependency_libs; do
+	      deplibs="$deplib $deplibs"
+	      if $opt_preserve_dup_deps ; then
+		case "$tmp_libs " in
+		*" $deplib "*) func_append specialdeplibs " $deplib" ;;
+		esac
+	      fi
+	      func_append tmp_libs " $deplib"
+	    done
+	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
+	    func_fatal_error "\`$lib' is not a convenience library"
+	  fi
+	  continue
+	fi # $pass = conv
+
+
+	# Get the name of the library we link against.
+	linklib=
+	if test -n "$old_library" &&
+	   { test "$prefer_static_libs" = yes ||
+	     test "$prefer_static_libs,$installed" = "built,no"; }; then
+	  linklib=$old_library
+	else
+	  for l in $old_library $library_names; do
+	    linklib="$l"
+	  done
+	fi
+	if test -z "$linklib"; then
+	  func_fatal_error "cannot find name of link library for \`$lib'"
+	fi
+
+	# This library was specified with -dlopen.
+	if test "$pass" = dlopen; then
+	  if test -z "$libdir"; then
+	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
+	  fi
+	  if test -z "$dlname" ||
+	     test "$dlopen_support" != yes ||
+	     test "$build_libtool_libs" = no; then
+	    # If there is no dlname, no dlopen support or we're linking
+	    # statically, we need to preload.  We also need to preload any
+	    # dependent libraries so libltdl's deplib preloader doesn't
+	    # bomb out in the load deplibs phase.
+	    func_append dlprefiles " $lib $dependency_libs"
+	  else
+	    func_append newdlfiles " $lib"
+	  fi
+	  continue
+	fi # $pass = dlopen
+
+	# We need an absolute path.
+	case $ladir in
+	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+	*)
+	  abs_ladir=`cd "$ladir" && pwd`
+	  if test -z "$abs_ladir"; then
+	    func_warning "cannot determine absolute directory name of \`$ladir'"
+	    func_warning "passing it literally to the linker, although it might fail"
+	    abs_ladir="$ladir"
+	  fi
+	  ;;
+	esac
+	func_basename "$lib"
+	laname="$func_basename_result"
+
+	# Find the relevant object directory and library name.
+	if test "X$installed" = Xyes; then
+	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    func_warning "library \`$lib' was moved."
+	    dir="$ladir"
+	    absdir="$abs_ladir"
+	    libdir="$abs_ladir"
+	  else
+	    dir="$lt_sysroot$libdir"
+	    absdir="$lt_sysroot$libdir"
+	  fi
+	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+	else
+	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    dir="$ladir"
+	    absdir="$abs_ladir"
+	    # Remove this search path later
+	    func_append notinst_path " $abs_ladir"
+	  else
+	    dir="$ladir/$objdir"
+	    absdir="$abs_ladir/$objdir"
+	    # Remove this search path later
+	    func_append notinst_path " $abs_ladir"
+	  fi
+	fi # $installed = yes
+	func_stripname 'lib' '.la' "$laname"
+	name=$func_stripname_result
+
+	# This library was specified with -dlpreopen.
+	if test "$pass" = dlpreopen; then
+	  if test -z "$libdir" && test "$linkmode" = prog; then
+	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
+	  fi
+	  case "$host" in
+	    # special handling for platforms with PE-DLLs.
+	    *cygwin* | *mingw* | *cegcc* )
+	      # Linker will automatically link against shared library if both
+	      # static and shared are present.  Therefore, ensure we extract
+	      # symbols from the import library if a shared library is present
+	      # (otherwise, the dlopen module name will be incorrect).  We do
+	      # this by putting the import library name into $newdlprefiles.
+	      # We recover the dlopen module name by 'saving' the la file
+	      # name in a special purpose variable, and (later) extracting the
+	      # dlname from the la file.
+	      if test -n "$dlname"; then
+	        func_tr_sh "$dir/$linklib"
+	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
+	        func_append newdlprefiles " $dir/$linklib"
+	      else
+	        func_append newdlprefiles " $dir/$old_library"
+	        # Keep a list of preopened convenience libraries to check
+	        # that they are being used correctly in the link pass.
+	        test -z "$libdir" && \
+	          func_append dlpreconveniencelibs " $dir/$old_library"
+	      fi
+	    ;;
+	    * )
+	      # Prefer using a static library (so that no silly _DYNAMIC symbols
+	      # are required to link).
+	      if test -n "$old_library"; then
+	        func_append newdlprefiles " $dir/$old_library"
+	        # Keep a list of preopened convenience libraries to check
+	        # that they are being used correctly in the link pass.
+	        test -z "$libdir" && \
+	          func_append dlpreconveniencelibs " $dir/$old_library"
+	      # Otherwise, use the dlname, so that lt_dlopen finds it.
+	      elif test -n "$dlname"; then
+	        func_append newdlprefiles " $dir/$dlname"
+	      else
+	        func_append newdlprefiles " $dir/$linklib"
+	      fi
+	    ;;
+	  esac
+	fi # $pass = dlpreopen
+
+	if test -z "$libdir"; then
+	  # Link the convenience library
+	  if test "$linkmode" = lib; then
+	    deplibs="$dir/$old_library $deplibs"
+	  elif test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$dir/$old_library $compile_deplibs"
+	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
+	  else
+	    deplibs="$lib $deplibs" # used for prog,scan pass
+	  fi
+	  continue
+	fi
+
+
+	if test "$linkmode" = prog && test "$pass" != link; then
+	  func_append newlib_search_path " $ladir"
+	  deplibs="$lib $deplibs"
+
+	  linkalldeplibs=no
+	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
+	     test "$build_libtool_libs" = no; then
+	    linkalldeplibs=yes
+	  fi
+
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    case $deplib in
+	    -L*) func_stripname '-L' '' "$deplib"
+	         func_resolve_sysroot "$func_stripname_result"
+	         func_append newlib_search_path " $func_resolve_sysroot_result"
+		 ;;
+	    esac
+	    # Need to link against all dependency_libs?
+	    if test "$linkalldeplibs" = yes; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      # Need to hardcode shared library paths
+	      # or/and link against static libraries
+	      newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    if $opt_preserve_dup_deps ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+	      esac
+	    fi
+	    func_append tmp_libs " $deplib"
+	  done # for deplib
+	  continue
+	fi # $linkmode = prog...
+
+	if test "$linkmode,$pass" = "prog,link"; then
+	  if test -n "$library_names" &&
+	     { { test "$prefer_static_libs" = no ||
+	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
+	       test -z "$old_library"; }; then
+	    # We need to hardcode the library path
+	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+	      # Make sure the rpath contains only unique directories.
+	      case "$temp_rpath:" in
+	      *"$absdir:"*) ;;
+	      *) func_append temp_rpath "$absdir:" ;;
+	      esac
+	    fi
+
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) func_append compile_rpath " $absdir" ;;
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) func_append finalize_rpath " $libdir" ;;
+	      esac
+	      ;;
+	    esac
+	  fi # $linkmode,$pass = prog,link...
+
+	  if test "$alldeplibs" = yes &&
+	     { test "$deplibs_check_method" = pass_all ||
+	       { test "$build_libtool_libs" = yes &&
+		 test -n "$library_names"; }; }; then
+	    # We only need to search for static libraries
+	    continue
+	  fi
+	fi
+
+	link_static=no # Whether the deplib will be linked statically
+	use_static_libs=$prefer_static_libs
+	if test "$use_static_libs" = built && test "$installed" = yes; then
+	  use_static_libs=no
+	fi
+	if test -n "$library_names" &&
+	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
+	  case $host in
+	  *cygwin* | *mingw* | *cegcc*)
+	      # No point in relinking DLLs because paths are not encoded
+	      func_append notinst_deplibs " $lib"
+	      need_relink=no
+	    ;;
+	  *)
+	    if test "$installed" = no; then
+	      func_append notinst_deplibs " $lib"
+	      need_relink=yes
+	    fi
+	    ;;
+	  esac
+	  # This is a shared library
+
+	  # Warn about portability, can't link against -module's on some
+	  # systems (darwin).  Don't bleat about dlopened modules though!
+	  dlopenmodule=""
+	  for dlpremoduletest in $dlprefiles; do
+	    if test "X$dlpremoduletest" = "X$lib"; then
+	      dlopenmodule="$dlpremoduletest"
+	      break
+	    fi
+	  done
+	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
+	    if test "$linkmode" != prog; then
+	    echo
+	    #  $ECHO "*** Warning: Linking the executable $output against the loadable module"
+	    #else
+	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
+	    $ECHO "*** $linklib is not portable!"
+	    fi
+	  fi
+	  if test "$linkmode" = lib &&
+	     test "$hardcode_into_libs" = yes; then
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) func_append compile_rpath " $absdir" ;;
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) func_append finalize_rpath " $libdir" ;;
+	      esac
+	      ;;
+	    esac
+	  fi
+
+	  if test -n "$old_archive_from_expsyms_cmds"; then
+	    # figure out the soname
+	    set dummy $library_names
+	    shift
+	    realname="$1"
+	    shift
+	    libname=`eval "\\$ECHO \"$libname_spec\""`
+	    # use dlname if we got it. it's perfectly good, no?
+	    if test -n "$dlname"; then
+	      soname="$dlname"
+	    elif test -n "$soname_spec"; then
+	      # bleh windows
+	      case $host in
+	      *cygwin* | mingw* | *cegcc*)
+	        func_arith $current - $age
+		major=$func_arith_result
+		versuffix="-$major"
+		;;
+	      esac
+	      eval soname=\"$soname_spec\"
+	    else
+	      soname="$realname"
+	    fi
+
+	    # Make a new name for the extract_expsyms_cmds to use
+	    soroot="$soname"
+	    func_basename "$soroot"
+	    soname="$func_basename_result"
+	    func_stripname 'lib' '.dll' "$soname"
+	    newlib=libimp-$func_stripname_result.a
+
+	    # If the library has no export list, then create one now
+	    if test -f "$output_objdir/$soname-def"; then :
+	    else
+	      func_verbose "extracting exported symbol list from \`$soname'"
+	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
+	    fi
+
+	    # Create $newlib
+	    if test -f "$output_objdir/$newlib"; then :; else
+	      func_verbose "generating import library for \`$soname'"
+	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
+	    fi
+	    # make sure the library variables are pointing to the new library
+	    dir=$output_objdir
+	    linklib=$newlib
+	  fi # test -n "$old_archive_from_expsyms_cmds"
+
+	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    lib_linked=yes
+	    case $hardcode_action in
+	    immediate | unsupported)
+	      if test "$hardcode_direct" = no; then
+		add="$dir/$linklib"
+		case $host in
+		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
+		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+		    *-*-unixware7*) add_dir="-L$dir" ;;
+		  *-*-darwin* )
+		    # if the lib is a (non-dlopened) module then we can not
+		    # link against it, someone is ignoring the earlier warnings
+		    if /usr/bin/file -L $add 2> /dev/null |
+			 $GREP ": [^:]* bundle" >/dev/null ; then
+		      if test "X$dlopenmodule" != "X$lib"; then
+			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
+			if test -z "$old_library" ; then
+			  echo
+			  echo "*** And there doesn't seem to be a static archive available"
+			  echo "*** The link will probably fail, sorry"
+			else
+			  add="$dir/$old_library"
+			fi
+		      elif test -n "$old_library"; then
+			add="$dir/$old_library"
+		      fi
+		    fi
+		esac
+	      elif test "$hardcode_minus_L" = no; then
+		case $host in
+		*-*-sunos*) add_shlibpath="$dir" ;;
+		esac
+		add_dir="-L$dir"
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = no; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    relink)
+	      if test "$hardcode_direct" = yes &&
+	         test "$hardcode_direct_absolute" = no; then
+		add="$dir/$linklib"
+	      elif test "$hardcode_minus_L" = yes; then
+		add_dir="-L$absdir"
+		# Try looking first in the location we're being installed to.
+		if test -n "$inst_prefix_dir"; then
+		  case $libdir in
+		    [\\/]*)
+		      func_append add_dir " -L$inst_prefix_dir$libdir"
+		      ;;
+		  esac
+		fi
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = yes; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    *) lib_linked=no ;;
+	    esac
+
+	    if test "$lib_linked" != yes; then
+	      func_fatal_configuration "unsupported hardcode properties"
+	    fi
+
+	    if test -n "$add_shlibpath"; then
+	      case :$compile_shlibpath: in
+	      *":$add_shlibpath:"*) ;;
+	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
+	      esac
+	    fi
+	    if test "$linkmode" = prog; then
+	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	      if test "$hardcode_direct" != yes &&
+		 test "$hardcode_minus_L" != yes &&
+		 test "$hardcode_shlibpath_var" = yes; then
+		case :$finalize_shlibpath: in
+		*":$libdir:"*) ;;
+		*) func_append finalize_shlibpath "$libdir:" ;;
+		esac
+	      fi
+	    fi
+	  fi
+
+	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    # Finalize command for both is simple: just hardcode it.
+	    if test "$hardcode_direct" = yes &&
+	       test "$hardcode_direct_absolute" = no; then
+	      add="$libdir/$linklib"
+	    elif test "$hardcode_minus_L" = yes; then
+	      add_dir="-L$libdir"
+	      add="-l$name"
+	    elif test "$hardcode_shlibpath_var" = yes; then
+	      case :$finalize_shlibpath: in
+	      *":$libdir:"*) ;;
+	      *) func_append finalize_shlibpath "$libdir:" ;;
+	      esac
+	      add="-l$name"
+	    elif test "$hardcode_automatic" = yes; then
+	      if test -n "$inst_prefix_dir" &&
+		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
+		add="$inst_prefix_dir$libdir/$linklib"
+	      else
+		add="$libdir/$linklib"
+	      fi
+	    else
+	      # We cannot seem to hardcode it, guess we'll fake it.
+	      add_dir="-L$libdir"
+	      # Try looking first in the location we're being installed to.
+	      if test -n "$inst_prefix_dir"; then
+		case $libdir in
+		  [\\/]*)
+		    func_append add_dir " -L$inst_prefix_dir$libdir"
+		    ;;
+		esac
+	      fi
+	      add="-l$name"
+	    fi
+
+	    if test "$linkmode" = prog; then
+	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	    fi
+	  fi
+	elif test "$linkmode" = prog; then
+	  # Here we assume that one of hardcode_direct or hardcode_minus_L
+	  # is not unsupported.  This is valid on all known static and
+	  # shared platforms.
+	  if test "$hardcode_direct" != unsupported; then
+	    test -n "$old_library" && linklib="$old_library"
+	    compile_deplibs="$dir/$linklib $compile_deplibs"
+	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
+	  else
+	    compile_deplibs="-l$name -L$dir $compile_deplibs"
+	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+	  fi
+	elif test "$build_libtool_libs" = yes; then
+	  # Not a shared library
+	  if test "$deplibs_check_method" != pass_all; then
+	    # We're trying link a shared library against a static one
+	    # but the system doesn't support it.
+
+	    # Just print a warning and add the library to dependency_libs so
+	    # that the program can be linked against the static library.
+	    echo
+	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
+	    echo "*** I have the capability to make that library automatically link in when"
+	    echo "*** you link to this library.  But I can only do this if you have a"
+	    echo "*** shared version of the library, which you do not appear to have."
+	    if test "$module" = yes; then
+	      echo "*** But as you try to build a module library, libtool will still create "
+	      echo "*** a static module, that should work as long as the dlopening application"
+	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+	      if test -z "$global_symbol_pipe"; then
+		echo
+		echo "*** However, this would only work if libtool was able to extract symbol"
+		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+		echo "*** not find such a program.  So, this module is probably useless."
+		echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	      fi
+	      if test "$build_old_libs" = no; then
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  else
+	    deplibs="$dir/$old_library $deplibs"
+	    link_static=yes
+	  fi
+	fi # link shared/static library?
+
+	if test "$linkmode" = lib; then
+	  if test -n "$dependency_libs" &&
+	     { test "$hardcode_into_libs" != yes ||
+	       test "$build_old_libs" = yes ||
+	       test "$link_static" = yes; }; then
+	    # Extract -R from dependency_libs
+	    temp_deplibs=
+	    for libdir in $dependency_libs; do
+	      case $libdir in
+	      -R*) func_stripname '-R' '' "$libdir"
+	           temp_xrpath=$func_stripname_result
+		   case " $xrpath " in
+		   *" $temp_xrpath "*) ;;
+		   *) func_append xrpath " $temp_xrpath";;
+		   esac;;
+	      *) func_append temp_deplibs " $libdir";;
+	      esac
+	    done
+	    dependency_libs="$temp_deplibs"
+	  fi
+
+	  func_append newlib_search_path " $absdir"
+	  # Link against this library
+	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+	  # ... and its dependency_libs
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    newdependency_libs="$deplib $newdependency_libs"
+	    case $deplib in
+              -L*) func_stripname '-L' '' "$deplib"
+                   func_resolve_sysroot "$func_stripname_result";;
+              *) func_resolve_sysroot "$deplib" ;;
+            esac
+	    if $opt_preserve_dup_deps ; then
+	      case "$tmp_libs " in
+	      *" $func_resolve_sysroot_result "*)
+                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
+	      esac
+	    fi
+	    func_append tmp_libs " $func_resolve_sysroot_result"
+	  done
+
+	  if test "$link_all_deplibs" != no; then
+	    # Add the search paths of all dependency libraries
+	    for deplib in $dependency_libs; do
+	      path=
+	      case $deplib in
+	      -L*) path="$deplib" ;;
+	      *.la)
+	        func_resolve_sysroot "$deplib"
+	        deplib=$func_resolve_sysroot_result
+	        func_dirname "$deplib" "" "."
+		dir=$func_dirname_result
+		# We need an absolute path.
+		case $dir in
+		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+		*)
+		  absdir=`cd "$dir" && pwd`
+		  if test -z "$absdir"; then
+		    func_warning "cannot determine absolute directory name of \`$dir'"
+		    absdir="$dir"
+		  fi
+		  ;;
+		esac
+		if $GREP "^installed=no" $deplib > /dev/null; then
+		case $host in
+		*-*-darwin*)
+		  depdepl=
+		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+		  if test -n "$deplibrary_names" ; then
+		    for tmp in $deplibrary_names ; do
+		      depdepl=$tmp
+		    done
+		    if test -f "$absdir/$objdir/$depdepl" ; then
+		      depdepl="$absdir/$objdir/$depdepl"
+		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+                      if test -z "$darwin_install_name"; then
+                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
+                      fi
+		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
+		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
+		      path=
+		    fi
+		  fi
+		  ;;
+		*)
+		  path="-L$absdir/$objdir"
+		  ;;
+		esac
+		else
+		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		  test -z "$libdir" && \
+		    func_fatal_error "\`$deplib' is not a valid libtool archive"
+		  test "$absdir" != "$libdir" && \
+		    func_warning "\`$deplib' seems to be moved"
+
+		  path="-L$absdir"
+		fi
+		;;
+	      esac
+	      case " $deplibs " in
+	      *" $path "*) ;;
+	      *) deplibs="$path $deplibs" ;;
+	      esac
+	    done
+	  fi # link_all_deplibs != no
+	fi # linkmode = lib
+      done # for deplib in $libs
+      if test "$pass" = link; then
+	if test "$linkmode" = "prog"; then
+	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
+	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
+	else
+	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	fi
+      fi
+      dependency_libs="$newdependency_libs"
+      if test "$pass" = dlpreopen; then
+	# Link the dlpreopened libraries before other libraries
+	for deplib in $save_deplibs; do
+	  deplibs="$deplib $deplibs"
+	done
+      fi
+      if test "$pass" != dlopen; then
+	if test "$pass" != conv; then
+	  # Make sure lib_search_path contains only unique directories.
+	  lib_search_path=
+	  for dir in $newlib_search_path; do
+	    case "$lib_search_path " in
+	    *" $dir "*) ;;
+	    *) func_append lib_search_path " $dir" ;;
+	    esac
+	  done
+	  newlib_search_path=
+	fi
+
+	if test "$linkmode,$pass" != "prog,link"; then
+	  vars="deplibs"
+	else
+	  vars="compile_deplibs finalize_deplibs"
+	fi
+	for var in $vars dependency_libs; do
+	  # Add libraries to $var in reverse order
+	  eval tmp_libs=\"\$$var\"
+	  new_libs=
+	  for deplib in $tmp_libs; do
+	    # FIXME: Pedantically, this is the right thing to do, so
+	    #        that some nasty dependency loop isn't accidentally
+	    #        broken:
+	    #new_libs="$deplib $new_libs"
+	    # Pragmatically, this seems to cause very few problems in
+	    # practice:
+	    case $deplib in
+	    -L*) new_libs="$deplib $new_libs" ;;
+	    -R*) ;;
+	    *)
+	      # And here is the reason: when a library appears more
+	      # than once as an explicit dependence of a library, or
+	      # is implicitly linked in more than once by the
+	      # compiler, it is considered special, and multiple
+	      # occurrences thereof are not removed.  Compare this
+	      # with having the same library being listed as a
+	      # dependency of multiple other libraries: in this case,
+	      # we know (pedantically, we assume) the library does not
+	      # need to be listed more than once, so we keep only the
+	      # last copy.  This is not always right, but it is rare
+	      # enough that we require users that really mean to play
+	      # such unportable linking tricks to link the library
+	      # using -Wl,-lname, so that libtool does not consider it
+	      # for duplicate removal.
+	      case " $specialdeplibs " in
+	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
+	      *)
+		case " $new_libs " in
+		*" $deplib "*) ;;
+		*) new_libs="$deplib $new_libs" ;;
+		esac
+		;;
+	      esac
+	      ;;
+	    esac
+	  done
+	  tmp_libs=
+	  for deplib in $new_libs; do
+	    case $deplib in
+	    -L*)
+	      case " $tmp_libs " in
+	      *" $deplib "*) ;;
+	      *) func_append tmp_libs " $deplib" ;;
+	      esac
+	      ;;
+	    *) func_append tmp_libs " $deplib" ;;
+	    esac
+	  done
+	  eval $var=\"$tmp_libs\"
+	done # for var
+      fi
+      # Last step: remove runtime libs from dependency_libs
+      # (they stay in deplibs)
+      tmp_libs=
+      for i in $dependency_libs ; do
+	case " $predeps $postdeps $compiler_lib_search_path " in
+	*" $i "*)
+	  i=""
+	  ;;
+	esac
+	if test -n "$i" ; then
+	  func_append tmp_libs " $i"
+	fi
+      done
+      dependency_libs=$tmp_libs
+    done # for pass
+    if test "$linkmode" = prog; then
+      dlfiles="$newdlfiles"
+    fi
+    if test "$linkmode" = prog || test "$linkmode" = lib; then
+      dlprefiles="$newdlprefiles"
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	func_warning "\`-dlopen' is ignored for archives"
+      fi
+
+      case " $deplibs" in
+      *\ -l* | *\ -L*)
+	func_warning "\`-l' and \`-L' are ignored for archives" ;;
+      esac
+
+      test -n "$rpath" && \
+	func_warning "\`-rpath' is ignored for archives"
+
+      test -n "$xrpath" && \
+	func_warning "\`-R' is ignored for archives"
+
+      test -n "$vinfo" && \
+	func_warning "\`-version-info/-version-number' is ignored for archives"
+
+      test -n "$release" && \
+	func_warning "\`-release' is ignored for archives"
+
+      test -n "$export_symbols$export_symbols_regex" && \
+	func_warning "\`-export-symbols' is ignored for archives"
+
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      oldlibs="$output"
+      func_append objs "$old_deplibs"
+      ;;
+
+    lib)
+      # Make sure we only generate libraries of the form `libNAME.la'.
+      case $outputname in
+      lib*)
+	func_stripname 'lib' '.la' "$outputname"
+	name=$func_stripname_result
+	eval shared_ext=\"$shrext_cmds\"
+	eval libname=\"$libname_spec\"
+	;;
+      *)
+	test "$module" = no && \
+	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
+
+	if test "$need_lib_prefix" != no; then
+	  # Add the "lib" prefix for modules if required
+	  func_stripname '' '.la' "$outputname"
+	  name=$func_stripname_result
+	  eval shared_ext=\"$shrext_cmds\"
+	  eval libname=\"$libname_spec\"
+	else
+	  func_stripname '' '.la' "$outputname"
+	  libname=$func_stripname_result
+	fi
+	;;
+      esac
+
+      if test -n "$objs"; then
+	if test "$deplibs_check_method" != pass_all; then
+	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
+	else
+	  echo
+	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
+	  $ECHO "*** objects $objs is not portable!"
+	  func_append libobjs " $objs"
+	fi
+      fi
+
+      test "$dlself" != no && \
+	func_warning "\`-dlopen self' is ignored for libtool libraries"
+
+      set dummy $rpath
+      shift
+      test "$#" -gt 1 && \
+	func_warning "ignoring multiple \`-rpath's for a libtool library"
+
+      install_libdir="$1"
+
+      oldlibs=
+      if test -z "$rpath"; then
+	if test "$build_libtool_libs" = yes; then
+	  # Building a libtool convenience library.
+	  # Some compilers have problems with a `.al' extension so
+	  # convenience libraries should have the same extension an
+	  # archive normally would.
+	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
+	  build_libtool_libs=convenience
+	  build_old_libs=yes
+	fi
+
+	test -n "$vinfo" && \
+	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
+
+	test -n "$release" && \
+	  func_warning "\`-release' is ignored for convenience libraries"
+      else
+
+	# Parse the version information argument.
+	save_ifs="$IFS"; IFS=':'
+	set dummy $vinfo 0 0 0
+	shift
+	IFS="$save_ifs"
+
+	test -n "$7" && \
+	  func_fatal_help "too many parameters to \`-version-info'"
+
+	# convert absolute version numbers to libtool ages
+	# this retains compatibility with .la files and attempts
+	# to make the code below a bit more comprehensible
+
+	case $vinfo_number in
+	yes)
+	  number_major="$1"
+	  number_minor="$2"
+	  number_revision="$3"
+	  #
+	  # There are really only two kinds -- those that
+	  # use the current revision as the major version
+	  # and those that subtract age and use age as
+	  # a minor version.  But, then there is irix
+	  # which has an extra 1 added just for fun
+	  #
+	  case $version_type in
+	  # correct linux to gnu/linux during the next big refactor
+	  darwin|linux|osf|windows|none)
+	    func_arith $number_major + $number_minor
+	    current=$func_arith_result
+	    age="$number_minor"
+	    revision="$number_revision"
+	    ;;
+	  freebsd-aout|freebsd-elf|qnx|sunos)
+	    current="$number_major"
+	    revision="$number_minor"
+	    age="0"
+	    ;;
+	  irix|nonstopux)
+	    func_arith $number_major + $number_minor
+	    current=$func_arith_result
+	    age="$number_minor"
+	    revision="$number_minor"
+	    lt_irix_increment=no
+	    ;;
+	  *)
+	    func_fatal_configuration "$modename: unknown library version type \`$version_type'"
+	    ;;
+	  esac
+	  ;;
+	no)
+	  current="$1"
+	  revision="$2"
+	  age="$3"
+	  ;;
+	esac
+
+	# Check that each of the things are valid numbers.
+	case $current in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  func_error "CURRENT \`$current' must be a nonnegative integer"
+	  func_fatal_error "\`$vinfo' is not valid version information"
+	  ;;
+	esac
+
+	case $revision in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  func_error "REVISION \`$revision' must be a nonnegative integer"
+	  func_fatal_error "\`$vinfo' is not valid version information"
+	  ;;
+	esac
+
+	case $age in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  func_error "AGE \`$age' must be a nonnegative integer"
+	  func_fatal_error "\`$vinfo' is not valid version information"
+	  ;;
+	esac
+
+	if test "$age" -gt "$current"; then
+	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
+	  func_fatal_error "\`$vinfo' is not valid version information"
+	fi
+
+	# Calculate the version variables.
+	major=
+	versuffix=
+	verstring=
+	case $version_type in
+	none) ;;
+
+	darwin)
+	  # Like Linux, but with the current version available in
+	  # verstring for coding it into the library header
+	  func_arith $current - $age
+	  major=.$func_arith_result
+	  versuffix="$major.$age.$revision"
+	  # Darwin ld doesn't like 0 for these options...
+	  func_arith $current + 1
+	  minor_current=$func_arith_result
+	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+	  ;;
+
+	freebsd-aout)
+	  major=".$current"
+	  versuffix=".$current.$revision";
+	  ;;
+
+	freebsd-elf)
+	  major=".$current"
+	  versuffix=".$current"
+	  ;;
+
+	irix | nonstopux)
+	  if test "X$lt_irix_increment" = "Xno"; then
+	    func_arith $current - $age
+	  else
+	    func_arith $current - $age + 1
+	  fi
+	  major=$func_arith_result
+
+	  case $version_type in
+	    nonstopux) verstring_prefix=nonstopux ;;
+	    *)         verstring_prefix=sgi ;;
+	  esac
+	  verstring="$verstring_prefix$major.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$revision
+	  while test "$loop" -ne 0; do
+	    func_arith $revision - $loop
+	    iface=$func_arith_result
+	    func_arith $loop - 1
+	    loop=$func_arith_result
+	    verstring="$verstring_prefix$major.$iface:$verstring"
+	  done
+
+	  # Before this point, $major must not contain `.'.
+	  major=.$major
+	  versuffix="$major.$revision"
+	  ;;
+
+	linux) # correct to gnu/linux during the next big refactor
+	  func_arith $current - $age
+	  major=.$func_arith_result
+	  versuffix="$major.$age.$revision"
+	  ;;
+
+	osf)
+	  func_arith $current - $age
+	  major=.$func_arith_result
+	  versuffix=".$current.$age.$revision"
+	  verstring="$current.$age.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$age
+	  while test "$loop" -ne 0; do
+	    func_arith $current - $loop
+	    iface=$func_arith_result
+	    func_arith $loop - 1
+	    loop=$func_arith_result
+	    verstring="$verstring:${iface}.0"
+	  done
+
+	  # Make executables depend on our current version.
+	  func_append verstring ":${current}.0"
+	  ;;
+
+	qnx)
+	  major=".$current"
+	  versuffix=".$current"
+	  ;;
+
+	sunos)
+	  major=".$current"
+	  versuffix=".$current.$revision"
+	  ;;
+
+	windows)
+	  # Use '-' rather than '.', since we only want one
+	  # extension on DOS 8.3 filesystems.
+	  func_arith $current - $age
+	  major=$func_arith_result
+	  versuffix="-$major"
+	  ;;
+
+	*)
+	  func_fatal_configuration "unknown library version type \`$version_type'"
+	  ;;
+	esac
+
+	# Clear the version info if we defaulted, and they specified a release.
+	if test -z "$vinfo" && test -n "$release"; then
+	  major=
+	  case $version_type in
+	  darwin)
+	    # we can't check for "0.0" in archive_cmds due to quoting
+	    # problems, so we reset it completely
+	    verstring=
+	    ;;
+	  *)
+	    verstring="0.0"
+	    ;;
+	  esac
+	  if test "$need_version" = no; then
+	    versuffix=
+	  else
+	    versuffix=".0.0"
+	  fi
+	fi
+
+	# Remove version info from name if versioning should be avoided
+	if test "$avoid_version" = yes && test "$need_version" = no; then
+	  major=
+	  versuffix=
+	  verstring=""
+	fi
+
+	# Check to see if the archive will have undefined symbols.
+	if test "$allow_undefined" = yes; then
+	  if test "$allow_undefined_flag" = unsupported; then
+	    func_warning "undefined symbols not allowed in $host shared libraries"
+	    build_libtool_libs=no
+	    build_old_libs=yes
+	  fi
+	else
+	  # Don't allow undefined symbols.
+	  allow_undefined_flag="$no_undefined_flag"
+	fi
+
+      fi
+
+      func_generate_dlsyms "$libname" "$libname" "yes"
+      func_append libobjs " $symfileobj"
+      test "X$libobjs" = "X " && libobjs=
+
+      if test "$opt_mode" != relink; then
+	# Remove our outputs, but don't remove object files since they
+	# may have been created when compiling PIC objects.
+	removelist=
+	tempremovelist=`$ECHO "$output_objdir/*"`
+	for p in $tempremovelist; do
+	  case $p in
+	    *.$objext | *.gcno)
+	       ;;
+	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+	       if test "X$precious_files_regex" != "X"; then
+		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+		 then
+		   continue
+		 fi
+	       fi
+	       func_append removelist " $p"
+	       ;;
+	    *) ;;
+	  esac
+	done
+	test -n "$removelist" && \
+	  func_show_eval "${RM}r \$removelist"
+      fi
+
+      # Now set the variables for building old libraries.
+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+	func_append oldlibs " $output_objdir/$libname.$libext"
+
+	# Transform .lo files to .o files.
+	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
+      fi
+
+      # Eliminate all temporary directories.
+      #for path in $notinst_path; do
+      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
+      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
+      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
+      #done
+
+      if test -n "$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	temp_xrpath=
+	for libdir in $xrpath; do
+	  func_replace_sysroot "$libdir"
+	  func_append temp_xrpath " -R$func_replace_sysroot_result"
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) func_append finalize_rpath " $libdir" ;;
+	  esac
+	done
+	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+	  dependency_libs="$temp_xrpath $dependency_libs"
+	fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles="$dlfiles"
+      dlfiles=
+      for lib in $old_dlfiles; do
+	case " $dlprefiles $dlfiles " in
+	*" $lib "*) ;;
+	*) func_append dlfiles " $lib" ;;
+	esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles="$dlprefiles"
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+	case "$dlprefiles " in
+	*" $lib "*) ;;
+	*) func_append dlprefiles " $lib" ;;
+	esac
+      done
+
+      if test "$build_libtool_libs" = yes; then
+	if test -n "$rpath"; then
+	  case $host in
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
+	    # these systems don't actually have a c library (as such)!
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C library is in the System framework
+	    func_append deplibs " System.ltframework"
+	    ;;
+	  *-*-netbsd*)
+	    # Don't link with libc until the a.out ld.so is fixed.
+	    ;;
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	    # Do not include libc due to us having libc/libc_r.
+	    ;;
+	  *-*-sco3.2v5* | *-*-sco5v6*)
+	    # Causes problems with __ctype
+	    ;;
+	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+	    # Compiler inserts libc in the correct place for threads to work
+	    ;;
+	  *)
+	    # Add libc to deplibs on all other systems if necessary.
+	    if test "$build_libtool_need_lc" = "yes"; then
+	      func_append deplibs " -lc"
+	    fi
+	    ;;
+	  esac
+	fi
+
+	# Transform deplibs into only deplibs that can be linked in shared.
+	name_save=$name
+	libname_save=$libname
+	release_save=$release
+	versuffix_save=$versuffix
+	major_save=$major
+	# I'm not sure if I'm treating the release correctly.  I think
+	# release should show up in the -l (ie -lgmp5) so we don't want to
+	# add it in twice.  Is that correct?
+	release=""
+	versuffix=""
+	major=""
+	newdeplibs=
+	droppeddeps=no
+	case $deplibs_check_method in
+	pass_all)
+	  # Don't check for shared/static.  Everything works.
+	  # This might be a little naive.  We might want to check
+	  # whether the library exists or not.  But this is on
+	  # osf3 & osf4 and I'm not really sure... Just
+	  # implementing what was already the behavior.
+	  newdeplibs=$deplibs
+	  ;;
+	test_compile)
+	  # This code stresses the "libraries are programs" paradigm to its
+	  # limits. Maybe even breaks it.  We compile a program, linking it
+	  # against the deplibs as a proxy for the library.  Then we can check
+	  # whether they linked in statically or dynamically with ldd.
+	  $opt_dry_run || $RM conftest.c
+	  cat > conftest.c <<EOF
+	  int main() { return 0; }
+EOF
+	  $opt_dry_run || $RM conftest
+	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+	    ldd_output=`ldd conftest`
+	    for i in $deplibs; do
+	      case $i in
+	      -l*)
+		func_stripname -l '' "$i"
+		name=$func_stripname_result
+		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		  case " $predeps $postdeps " in
+		  *" $i "*)
+		    func_append newdeplibs " $i"
+		    i=""
+		    ;;
+		  esac
+		fi
+		if test -n "$i" ; then
+		  libname=`eval "\\$ECHO \"$libname_spec\""`
+		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+		  set dummy $deplib_matches; shift
+		  deplib_match=$1
+		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		    func_append newdeplibs " $i"
+		  else
+		    droppeddeps=yes
+		    echo
+		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+		    echo "*** I have the capability to make that library automatically link in when"
+		    echo "*** you link to this library.  But I can only do this if you have a"
+		    echo "*** shared version of the library, which I believe you do not have"
+		    echo "*** because a test_compile did reveal that the linker did not use it for"
+		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
+		  fi
+		fi
+		;;
+	      *)
+		func_append newdeplibs " $i"
+		;;
+	      esac
+	    done
+	  else
+	    # Error occurred in the first compile.  Let's try to salvage
+	    # the situation: Compile a separate program for each library.
+	    for i in $deplibs; do
+	      case $i in
+	      -l*)
+		func_stripname -l '' "$i"
+		name=$func_stripname_result
+		$opt_dry_run || $RM conftest
+		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
+		  ldd_output=`ldd conftest`
+		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		    case " $predeps $postdeps " in
+		    *" $i "*)
+		      func_append newdeplibs " $i"
+		      i=""
+		      ;;
+		    esac
+		  fi
+		  if test -n "$i" ; then
+		    libname=`eval "\\$ECHO \"$libname_spec\""`
+		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+		    set dummy $deplib_matches; shift
+		    deplib_match=$1
+		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		      func_append newdeplibs " $i"
+		    else
+		      droppeddeps=yes
+		      echo
+		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+		      echo "*** I have the capability to make that library automatically link in when"
+		      echo "*** you link to this library.  But I can only do this if you have a"
+		      echo "*** shared version of the library, which you do not appear to have"
+		      echo "*** because a test_compile did reveal that the linker did not use this one"
+		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+		    fi
+		  fi
+		else
+		  droppeddeps=yes
+		  echo
+		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
+		  echo "*** make it link in!  You will probably need to install it or some"
+		  echo "*** library that it depends on before this library will be fully"
+		  echo "*** functional.  Installing it before continuing would be even better."
+		fi
+		;;
+	      *)
+		func_append newdeplibs " $i"
+		;;
+	      esac
+	    done
+	  fi
+	  ;;
+	file_magic*)
+	  set dummy $deplibs_check_method; shift
+	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    case $a_deplib in
+	    -l*)
+	      func_stripname -l '' "$a_deplib"
+	      name=$func_stripname_result
+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  func_append newdeplibs " $a_deplib"
+		  a_deplib=""
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib" ; then
+		libname=`eval "\\$ECHO \"$libname_spec\""`
+		if test -n "$file_magic_glob"; then
+		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
+		else
+		  libnameglob=$libname
+		fi
+		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  if test "$want_nocaseglob" = yes; then
+		    shopt -s nocaseglob
+		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+		    $nocaseglob
+		  else
+		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+		  fi
+		  for potent_lib in $potential_libs; do
+		      # Follow soft links.
+		      if ls -lLd "$potent_lib" 2>/dev/null |
+			 $GREP " -> " >/dev/null; then
+			continue
+		      fi
+		      # The statement above tries to avoid entering an
+		      # endless loop below, in case of cyclic links.
+		      # We might still enter an endless loop, since a link
+		      # loop can be closed while we follow links,
+		      # but so what?
+		      potlib="$potent_lib"
+		      while test -h "$potlib" 2>/dev/null; do
+			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+			case $potliblink in
+			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
+			esac
+		      done
+		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
+			 $SED -e 10q |
+			 $EGREP "$file_magic_regex" > /dev/null; then
+			func_append newdeplibs " $a_deplib"
+			a_deplib=""
+			break 2
+		      fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		echo
+		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
+		else
+		  $ECHO "*** with $libname and none of the candidates passed a file format test"
+		  $ECHO "*** using a file magic. Last file checked: $potlib"
+		fi
+	      fi
+	      ;;
+	    *)
+	      # Add a -L argument.
+	      func_append newdeplibs " $a_deplib"
+	      ;;
+	    esac
+	  done # Gone through all deplibs.
+	  ;;
+	match_pattern*)
+	  set dummy $deplibs_check_method; shift
+	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    case $a_deplib in
+	    -l*)
+	      func_stripname -l '' "$a_deplib"
+	      name=$func_stripname_result
+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  func_append newdeplibs " $a_deplib"
+		  a_deplib=""
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib" ; then
+		libname=`eval "\\$ECHO \"$libname_spec\""`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  for potent_lib in $potential_libs; do
+		    potlib="$potent_lib" # see symlink-check above in file_magic test
+		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
+		       $EGREP "$match_pattern_regex" > /dev/null; then
+		      func_append newdeplibs " $a_deplib"
+		      a_deplib=""
+		      break 2
+		    fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		echo
+		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
+		else
+		  $ECHO "*** with $libname and none of the candidates passed a file format test"
+		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
+		fi
+	      fi
+	      ;;
+	    *)
+	      # Add a -L argument.
+	      func_append newdeplibs " $a_deplib"
+	      ;;
+	    esac
+	  done # Gone through all deplibs.
+	  ;;
+	none | unknown | *)
+	  newdeplibs=""
+	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
+	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	    for i in $predeps $postdeps ; do
+	      # can't use Xsed below, because $i might contain '/'
+	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
+	    done
+	  fi
+	  case $tmp_deplibs in
+	  *[!\	\ ]*)
+	    echo
+	    if test "X$deplibs_check_method" = "Xnone"; then
+	      echo "*** Warning: inter-library dependencies are not supported in this platform."
+	    else
+	      echo "*** Warning: inter-library dependencies are not known to be supported."
+	    fi
+	    echo "*** All declared inter-library dependencies are being dropped."
+	    droppeddeps=yes
+	    ;;
+	  esac
+	  ;;
+	esac
+	versuffix=$versuffix_save
+	major=$major_save
+	release=$release_save
+	libname=$libname_save
+	name=$name_save
+
+	case $host in
+	*-*-rhapsody* | *-*-darwin1.[012])
+	  # On Rhapsody replace the C library with the System framework
+	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
+	  ;;
+	esac
+
+	if test "$droppeddeps" = yes; then
+	  if test "$module" = yes; then
+	    echo
+	    echo "*** Warning: libtool could not satisfy all declared inter-library"
+	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
+	    echo "*** a static module, that should work as long as the dlopening"
+	    echo "*** application is linked with the -dlopen flag."
+	    if test -z "$global_symbol_pipe"; then
+	      echo
+	      echo "*** However, this would only work if libtool was able to extract symbol"
+	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+	      echo "*** not find such a program.  So, this module is probably useless."
+	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	    fi
+	    if test "$build_old_libs" = no; then
+	      oldlibs="$output_objdir/$libname.$libext"
+	      build_libtool_libs=module
+	      build_old_libs=yes
+	    else
+	      build_libtool_libs=no
+	    fi
+	  else
+	    echo "*** The inter-library dependencies that have been dropped here will be"
+	    echo "*** automatically added whenever a program is linked with this library"
+	    echo "*** or is declared to -dlopen it."
+
+	    if test "$allow_undefined" = no; then
+	      echo
+	      echo "*** Since this library must not contain undefined symbols,"
+	      echo "*** because either the platform does not support them or"
+	      echo "*** it was explicitly requested with -no-undefined,"
+	      echo "*** libtool will only create a static version of it."
+	      if test "$build_old_libs" = no; then
+		oldlibs="$output_objdir/$libname.$libext"
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  fi
+	fi
+	# Done checking deplibs!
+	deplibs=$newdeplibs
+      fi
+      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+      case $host in
+	*-*-darwin*)
+	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  ;;
+      esac
+
+      # move library search paths that coincide with paths to not yet
+      # installed libraries to the beginning of the library search list
+      new_libs=
+      for path in $notinst_path; do
+	case " $new_libs " in
+	*" -L$path/$objdir "*) ;;
+	*)
+	  case " $deplibs " in
+	  *" -L$path/$objdir "*)
+	    func_append new_libs " -L$path/$objdir" ;;
+	  esac
+	  ;;
+	esac
+      done
+      for deplib in $deplibs; do
+	case $deplib in
+	-L*)
+	  case " $new_libs " in
+	  *" $deplib "*) ;;
+	  *) func_append new_libs " $deplib" ;;
+	  esac
+	  ;;
+	*) func_append new_libs " $deplib" ;;
+	esac
+      done
+      deplibs="$new_libs"
+
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
+
+      # Test again, we may have decided not to build it any more
+      if test "$build_libtool_libs" = yes; then
+	# Remove ${wl} instances when linking with ld.
+	# FIXME: should test the right _cmds variable.
+	case $archive_cmds in
+	  *\$LD\ *) wl= ;;
+        esac
+	if test "$hardcode_into_libs" = yes; then
+	  # Hardcode the library paths
+	  hardcode_libdirs=
+	  dep_rpath=
+	  rpath="$finalize_rpath"
+	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
+	  for libdir in $rpath; do
+	    if test -n "$hardcode_libdir_flag_spec"; then
+	      if test -n "$hardcode_libdir_separator"; then
+		func_replace_sysroot "$libdir"
+		libdir=$func_replace_sysroot_result
+		if test -z "$hardcode_libdirs"; then
+		  hardcode_libdirs="$libdir"
+		else
+		  # Just accumulate the unique libdirs.
+		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		    ;;
+		  *)
+		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+		    ;;
+		  esac
+		fi
+	      else
+		eval flag=\"$hardcode_libdir_flag_spec\"
+		func_append dep_rpath " $flag"
+	      fi
+	    elif test -n "$runpath_var"; then
+	      case "$perm_rpath " in
+	      *" $libdir "*) ;;
+	      *) func_append perm_rpath " $libdir" ;;
+	      esac
+	    fi
+	  done
+	  # Substitute the hardcoded libdirs into the rpath.
+	  if test -n "$hardcode_libdir_separator" &&
+	     test -n "$hardcode_libdirs"; then
+	    libdir="$hardcode_libdirs"
+	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
+	  fi
+	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
+	    # We should set the runpath_var.
+	    rpath=
+	    for dir in $perm_rpath; do
+	      func_append rpath "$dir:"
+	    done
+	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+	  fi
+	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+	fi
+
+	shlibpath="$finalize_shlibpath"
+	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+	if test -n "$shlibpath"; then
+	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+	fi
+
+	# Get the real and link names of the library.
+	eval shared_ext=\"$shrext_cmds\"
+	eval library_names=\"$library_names_spec\"
+	set dummy $library_names
+	shift
+	realname="$1"
+	shift
+
+	if test -n "$soname_spec"; then
+	  eval soname=\"$soname_spec\"
+	else
+	  soname="$realname"
+	fi
+	if test -z "$dlname"; then
+	  dlname=$soname
+	fi
+
+	lib="$output_objdir/$realname"
+	linknames=
+	for link
+	do
+	  func_append linknames " $link"
+	done
+
+	# Use standard objects if they are pic
+	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+	test "X$libobjs" = "X " && libobjs=
+
+	delfiles=
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
+	  export_symbols="$output_objdir/$libname.uexp"
+	  func_append delfiles " $export_symbols"
+	fi
+
+	orig_export_symbols=
+	case $host_os in
+	cygwin* | mingw* | cegcc*)
+	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
+	    # exporting using user supplied symfile
+	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
+	      # and it's NOT already a .def file. Must figure out
+	      # which of the given symbols are data symbols and tag
+	      # them as such. So, trigger use of export_symbols_cmds.
+	      # export_symbols gets reassigned inside the "prepare
+	      # the list of exported symbols" if statement, so the
+	      # include_expsyms logic still works.
+	      orig_export_symbols="$export_symbols"
+	      export_symbols=
+	      always_export_symbols=yes
+	    fi
+	  fi
+	  ;;
+	esac
+
+	# Prepare the list of exported symbols
+	if test -z "$export_symbols"; then
+	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+	    func_verbose "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $opt_dry_run || $RM $export_symbols
+	    cmds=$export_symbols_cmds
+	    save_ifs="$IFS"; IFS='~'
+	    for cmd1 in $cmds; do
+	      IFS="$save_ifs"
+	      # Take the normal branch if the nm_file_list_spec branch
+	      # doesn't work or if tool conversion is not needed.
+	      case $nm_file_list_spec~$to_tool_file_cmd in
+		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
+		  try_normal_branch=yes
+		  eval cmd=\"$cmd1\"
+		  func_len " $cmd"
+		  len=$func_len_result
+		  ;;
+		*)
+		  try_normal_branch=no
+		  ;;
+	      esac
+	      if test "$try_normal_branch" = yes \
+		 && { test "$len" -lt "$max_cmd_len" \
+		      || test "$max_cmd_len" -le -1; }
+	      then
+		func_show_eval "$cmd" 'exit $?'
+		skipped_export=false
+	      elif test -n "$nm_file_list_spec"; then
+		func_basename "$output"
+		output_la=$func_basename_result
+		save_libobjs=$libobjs
+		save_output=$output
+		output=${output_objdir}/${output_la}.nm
+		func_to_tool_file "$output"
+		libobjs=$nm_file_list_spec$func_to_tool_file_result
+		func_append delfiles " $output"
+		func_verbose "creating $NM input file list: $output"
+		for obj in $save_libobjs; do
+		  func_to_tool_file "$obj"
+		  $ECHO "$func_to_tool_file_result"
+		done > "$output"
+		eval cmd=\"$cmd1\"
+		func_show_eval "$cmd" 'exit $?'
+		output=$save_output
+		libobjs=$save_libobjs
+		skipped_export=false
+	      else
+		# The command line is too long to execute in one step.
+		func_verbose "using reloadable object file for export list..."
+		skipped_export=:
+		# Break out early, otherwise skipped_export may be
+		# set to false by a later but shorter cmd.
+		break
+	      fi
+	    done
+	    IFS="$save_ifs"
+	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
+	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+	    fi
+	  fi
+	fi
+
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  tmp_export_symbols="$export_symbols"
+	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+	fi
+
+	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
+	  # The given exports_symbols file has to be filtered, so filter it.
+	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
+	  # 's' commands which not all seds can handle. GNU sed should be fine
+	  # though. Also, the filter scales superlinearly with the number of
+	  # global variables. join(1) would be nice here, but unfortunately
+	  # isn't a blessed tool.
+	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+	  export_symbols=$output_objdir/$libname.def
+	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+	fi
+
+	tmp_deplibs=
+	for test_deplib in $deplibs; do
+	  case " $convenience " in
+	  *" $test_deplib "*) ;;
+	  *)
+	    func_append tmp_deplibs " $test_deplib"
+	    ;;
+	  esac
+	done
+	deplibs="$tmp_deplibs"
+
+	if test -n "$convenience"; then
+	  if test -n "$whole_archive_flag_spec" &&
+	    test "$compiler_needs_object" = yes &&
+	    test -z "$libobjs"; then
+	    # extract the archives, so we have objects to list.
+	    # TODO: could optimize this to just extract one archive.
+	    whole_archive_flag_spec=
+	  fi
+	  if test -n "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	    test "X$libobjs" = "X " && libobjs=
+	  else
+	    gentop="$output_objdir/${outputname}x"
+	    func_append generated " $gentop"
+
+	    func_extract_archives $gentop $convenience
+	    func_append libobjs " $func_extract_archives_result"
+	    test "X$libobjs" = "X " && libobjs=
+	  fi
+	fi
+
+	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+	  eval flag=\"$thread_safe_flag_spec\"
+	  func_append linker_flags " $flag"
+	fi
+
+	# Make a backup of the uninstalled library when relinking
+	if test "$opt_mode" = relink; then
+	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
+	fi
+
+	# Do each of the archive commands.
+	if test "$module" = yes && test -n "$module_cmds" ; then
+	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	    eval test_cmds=\"$module_expsym_cmds\"
+	    cmds=$module_expsym_cmds
+	  else
+	    eval test_cmds=\"$module_cmds\"
+	    cmds=$module_cmds
+	  fi
+	else
+	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	    eval test_cmds=\"$archive_expsym_cmds\"
+	    cmds=$archive_expsym_cmds
+	  else
+	    eval test_cmds=\"$archive_cmds\"
+	    cmds=$archive_cmds
+	  fi
+	fi
+
+	if test "X$skipped_export" != "X:" &&
+	   func_len " $test_cmds" &&
+	   len=$func_len_result &&
+	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  :
+	else
+	  # The command line is too long to link in one step, link piecewise
+	  # or, if using GNU ld and skipped_export is not :, use a linker
+	  # script.
+
+	  # Save the value of $output and $libobjs because we want to
+	  # use them later.  If we have whole_archive_flag_spec, we
+	  # want to use save_libobjs as it was before
+	  # whole_archive_flag_spec was expanded, because we can't
+	  # assume the linker understands whole_archive_flag_spec.
+	  # This may have to be revisited, in case too many
+	  # convenience libraries get linked in and end up exceeding
+	  # the spec.
+	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	  fi
+	  save_output=$output
+	  func_basename "$output"
+	  output_la=$func_basename_result
+
+	  # Clear the reloadable object creation command queue and
+	  # initialize k to one.
+	  test_cmds=
+	  concat_cmds=
+	  objlist=
+	  last_robj=
+	  k=1
+
+	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
+	    output=${output_objdir}/${output_la}.lnkscript
+	    func_verbose "creating GNU ld script: $output"
+	    echo 'INPUT (' > $output
+	    for obj in $save_libobjs
+	    do
+	      func_to_tool_file "$obj"
+	      $ECHO "$func_to_tool_file_result" >> $output
+	    done
+	    echo ')' >> $output
+	    func_append delfiles " $output"
+	    func_to_tool_file "$output"
+	    output=$func_to_tool_file_result
+	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
+	    output=${output_objdir}/${output_la}.lnk
+	    func_verbose "creating linker input file list: $output"
+	    : > $output
+	    set x $save_libobjs
+	    shift
+	    firstobj=
+	    if test "$compiler_needs_object" = yes; then
+	      firstobj="$1 "
+	      shift
+	    fi
+	    for obj
+	    do
+	      func_to_tool_file "$obj"
+	      $ECHO "$func_to_tool_file_result" >> $output
+	    done
+	    func_append delfiles " $output"
+	    func_to_tool_file "$output"
+	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
+	  else
+	    if test -n "$save_libobjs"; then
+	      func_verbose "creating reloadable object files..."
+	      output=$output_objdir/$output_la-${k}.$objext
+	      eval test_cmds=\"$reload_cmds\"
+	      func_len " $test_cmds"
+	      len0=$func_len_result
+	      len=$len0
+
+	      # Loop over the list of objects to be linked.
+	      for obj in $save_libobjs
+	      do
+		func_len " $obj"
+		func_arith $len + $func_len_result
+		len=$func_arith_result
+		if test "X$objlist" = X ||
+		   test "$len" -lt "$max_cmd_len"; then
+		  func_append objlist " $obj"
+		else
+		  # The command $test_cmds is almost too long, add a
+		  # command to the queue.
+		  if test "$k" -eq 1 ; then
+		    # The first file doesn't have a previous command to add.
+		    reload_objs=$objlist
+		    eval concat_cmds=\"$reload_cmds\"
+		  else
+		    # All subsequent reloadable object files will link in
+		    # the last one created.
+		    reload_objs="$objlist $last_robj"
+		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
+		  fi
+		  last_robj=$output_objdir/$output_la-${k}.$objext
+		  func_arith $k + 1
+		  k=$func_arith_result
+		  output=$output_objdir/$output_la-${k}.$objext
+		  objlist=" $obj"
+		  func_len " $last_robj"
+		  func_arith $len0 + $func_len_result
+		  len=$func_arith_result
+		fi
+	      done
+	      # Handle the remaining objects by creating one last
+	      # reloadable object file.  All subsequent reloadable object
+	      # files will link in the last one created.
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      reload_objs="$objlist $last_robj"
+	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
+	      if test -n "$last_robj"; then
+	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
+	      fi
+	      func_append delfiles " $output"
+
+	    else
+	      output=
+	    fi
+
+	    if ${skipped_export-false}; then
+	      func_verbose "generating symbol list for \`$libname.la'"
+	      export_symbols="$output_objdir/$libname.exp"
+	      $opt_dry_run || $RM $export_symbols
+	      libobjs=$output
+	      # Append the command to create the export file.
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
+	      if test -n "$last_robj"; then
+		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
+	      fi
+	    fi
+
+	    test -n "$save_libobjs" &&
+	      func_verbose "creating a temporary reloadable object file: $output"
+
+	    # Loop through the commands generated above and execute them.
+	    save_ifs="$IFS"; IFS='~'
+	    for cmd in $concat_cmds; do
+	      IFS="$save_ifs"
+	      $opt_silent || {
+		  func_quote_for_expand "$cmd"
+		  eval "func_echo $func_quote_for_expand_result"
+	      }
+	      $opt_dry_run || eval "$cmd" || {
+		lt_exit=$?
+
+		# Restore the uninstalled library and exit
+		if test "$opt_mode" = relink; then
+		  ( cd "$output_objdir" && \
+		    $RM "${realname}T" && \
+		    $MV "${realname}U" "$realname" )
+		fi
+
+		exit $lt_exit
+	      }
+	    done
+	    IFS="$save_ifs"
+
+	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
+	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+	    fi
+	  fi
+
+          if ${skipped_export-false}; then
+	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	      tmp_export_symbols="$export_symbols"
+	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+	    fi
+
+	    if test -n "$orig_export_symbols"; then
+	      # The given exports_symbols file has to be filtered, so filter it.
+	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
+	      # 's' commands which not all seds can handle. GNU sed should be fine
+	      # though. Also, the filter scales superlinearly with the number of
+	      # global variables. join(1) would be nice here, but unfortunately
+	      # isn't a blessed tool.
+	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+	      export_symbols=$output_objdir/$libname.def
+	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+	    fi
+	  fi
+
+	  libobjs=$output
+	  # Restore the value of output.
+	  output=$save_output
+
+	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	    test "X$libobjs" = "X " && libobjs=
+	  fi
+	  # Expand the library linking commands again to reset the
+	  # value of $libobjs for piecewise linking.
+
+	  # Do each of the archive commands.
+	  if test "$module" = yes && test -n "$module_cmds" ; then
+	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	      cmds=$module_expsym_cmds
+	    else
+	      cmds=$module_cmds
+	    fi
+	  else
+	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	      cmds=$archive_expsym_cmds
+	    else
+	      cmds=$archive_cmds
+	    fi
+	  fi
+	fi
+
+	if test -n "$delfiles"; then
+	  # Append the command to remove temporary files to $cmds.
+	  eval cmds=\"\$cmds~\$RM $delfiles\"
+	fi
+
+	# Add any objects from preloaded convenience libraries
+	if test -n "$dlprefiles"; then
+	  gentop="$output_objdir/${outputname}x"
+	  func_append generated " $gentop"
+
+	  func_extract_archives $gentop $dlprefiles
+	  func_append libobjs " $func_extract_archives_result"
+	  test "X$libobjs" = "X " && libobjs=
+	fi
+
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  eval cmd=\"$cmd\"
+	  $opt_silent || {
+	    func_quote_for_expand "$cmd"
+	    eval "func_echo $func_quote_for_expand_result"
+	  }
+	  $opt_dry_run || eval "$cmd" || {
+	    lt_exit=$?
+
+	    # Restore the uninstalled library and exit
+	    if test "$opt_mode" = relink; then
+	      ( cd "$output_objdir" && \
+	        $RM "${realname}T" && \
+		$MV "${realname}U" "$realname" )
+	    fi
+
+	    exit $lt_exit
+	  }
+	done
+	IFS="$save_ifs"
+
+	# Restore the uninstalled library and exit
+	if test "$opt_mode" = relink; then
+	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
+
+	  if test -n "$convenience"; then
+	    if test -z "$whole_archive_flag_spec"; then
+	      func_show_eval '${RM}r "$gentop"'
+	    fi
+	  fi
+
+	  exit $EXIT_SUCCESS
+	fi
+
+	# Create links to the real library.
+	for linkname in $linknames; do
+	  if test "$realname" != "$linkname"; then
+	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
+	  fi
+	done
+
+	# If -module or -export-dynamic was specified, set the dlname.
+	if test "$module" = yes || test "$export_dynamic" = yes; then
+	  # On all known operating systems, these are identical.
+	  dlname="$soname"
+	fi
+      fi
+      ;;
+
+    obj)
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	func_warning "\`-dlopen' is ignored for objects"
+      fi
+
+      case " $deplibs" in
+      *\ -l* | *\ -L*)
+	func_warning "\`-l' and \`-L' are ignored for objects" ;;
+      esac
+
+      test -n "$rpath" && \
+	func_warning "\`-rpath' is ignored for objects"
+
+      test -n "$xrpath" && \
+	func_warning "\`-R' is ignored for objects"
+
+      test -n "$vinfo" && \
+	func_warning "\`-version-info' is ignored for objects"
+
+      test -n "$release" && \
+	func_warning "\`-release' is ignored for objects"
+
+      case $output in
+      *.lo)
+	test -n "$objs$old_deplibs" && \
+	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
+
+	libobj=$output
+	func_lo2o "$libobj"
+	obj=$func_lo2o_result
+	;;
+      *)
+	libobj=
+	obj="$output"
+	;;
+      esac
+
+      # Delete the old objects.
+      $opt_dry_run || $RM $obj $libobj
+
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec and hope we can get by with
+      # turning comma into space..
+      wl=
+
+      if test -n "$convenience"; then
+	if test -n "$whole_archive_flag_spec"; then
+	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
+	else
+	  gentop="$output_objdir/${obj}x"
+	  func_append generated " $gentop"
+
+	  func_extract_archives $gentop $convenience
+	  reload_conv_objs="$reload_objs $func_extract_archives_result"
+	fi
+      fi
+
+      # If we're not building shared, we need to use non_pic_objs
+      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
+
+      # Create the old-style object.
+      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+      output="$obj"
+      func_execute_cmds "$reload_cmds" 'exit $?'
+
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+	if test -n "$gentop"; then
+	  func_show_eval '${RM}r "$gentop"'
+	fi
+
+	exit $EXIT_SUCCESS
+      fi
+
+      if test "$build_libtool_libs" != yes; then
+	if test -n "$gentop"; then
+	  func_show_eval '${RM}r "$gentop"'
+	fi
+
+	# Create an invalid libtool object if no PIC, so that we don't
+	# accidentally link it into a program.
+	# $show "echo timestamp > $libobj"
+	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
+	exit $EXIT_SUCCESS
+      fi
+
+      if test -n "$pic_flag" || test "$pic_mode" != default; then
+	# Only do commands if we really have different PIC objects.
+	reload_objs="$libobjs $reload_conv_objs"
+	output="$libobj"
+	func_execute_cmds "$reload_cmds" 'exit $?'
+      fi
+
+      if test -n "$gentop"; then
+	func_show_eval '${RM}r "$gentop"'
+      fi
+
+      exit $EXIT_SUCCESS
+      ;;
+
+    prog)
+      case $host in
+	*cygwin*) func_stripname '' '.exe' "$output"
+	          output=$func_stripname_result.exe;;
+      esac
+      test -n "$vinfo" && \
+	func_warning "\`-version-info' is ignored for programs"
+
+      test -n "$release" && \
+	func_warning "\`-release' is ignored for programs"
+
+      test "$preload" = yes \
+        && test "$dlopen_support" = unknown \
+	&& test "$dlopen_self" = unknown \
+	&& test "$dlopen_self_static" = unknown && \
+	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
+
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+	# On Rhapsody replace the C library is the System framework
+	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
+	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
+	;;
+      esac
+
+      case $host in
+      *-*-darwin*)
+	# Don't allow lazy linking, it breaks C++ global constructors
+	# But is supposedly fixed on 10.4 or later (yay!).
+	if test "$tagname" = CXX ; then
+	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
+	    10.[0123])
+	      func_append compile_command " ${wl}-bind_at_load"
+	      func_append finalize_command " ${wl}-bind_at_load"
+	    ;;
+	  esac
+	fi
+	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
+	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	;;
+      esac
+
+
+      # move library search paths that coincide with paths to not yet
+      # installed libraries to the beginning of the library search list
+      new_libs=
+      for path in $notinst_path; do
+	case " $new_libs " in
+	*" -L$path/$objdir "*) ;;
+	*)
+	  case " $compile_deplibs " in
+	  *" -L$path/$objdir "*)
+	    func_append new_libs " -L$path/$objdir" ;;
+	  esac
+	  ;;
+	esac
+      done
+      for deplib in $compile_deplibs; do
+	case $deplib in
+	-L*)
+	  case " $new_libs " in
+	  *" $deplib "*) ;;
+	  *) func_append new_libs " $deplib" ;;
+	  esac
+	  ;;
+	*) func_append new_libs " $deplib" ;;
+	esac
+      done
+      compile_deplibs="$new_libs"
+
+
+      func_append compile_command " $compile_deplibs"
+      func_append finalize_command " $finalize_deplibs"
+
+      if test -n "$rpath$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	for libdir in $rpath $xrpath; do
+	  # This is the magic to use -rpath.
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) func_append finalize_rpath " $libdir" ;;
+	  esac
+	done
+      fi
+
+      # Now hardcode the library paths
+      rpath=
+      hardcode_libdirs=
+      for libdir in $compile_rpath $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    func_append rpath " $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) func_append perm_rpath " $libdir" ;;
+	  esac
+	fi
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
+	  case :$dllsearchpath: in
+	  *":$libdir:"*) ;;
+	  ::) dllsearchpath=$libdir;;
+	  *) func_append dllsearchpath ":$libdir";;
+	  esac
+	  case :$dllsearchpath: in
+	  *":$testbindir:"*) ;;
+	  ::) dllsearchpath=$testbindir;;
+	  *) func_append dllsearchpath ":$testbindir";;
+	  esac
+	  ;;
+	esac
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      compile_rpath="$rpath"
+
+      rpath=
+      hardcode_libdirs=
+      for libdir in $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    func_append rpath " $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$finalize_perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) func_append finalize_perm_rpath " $libdir" ;;
+	  esac
+	fi
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      finalize_rpath="$rpath"
+
+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
+	# Transform all the library objects into standard objects.
+	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+      fi
+
+      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
+
+      # template prelinking step
+      if test -n "$prelink_cmds"; then
+	func_execute_cmds "$prelink_cmds" 'exit $?'
+      fi
+
+      wrappers_required=yes
+      case $host in
+      *cegcc* | *mingw32ce*)
+        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
+        wrappers_required=no
+        ;;
+      *cygwin* | *mingw* )
+        if test "$build_libtool_libs" != yes; then
+          wrappers_required=no
+        fi
+        ;;
+      *)
+        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+          wrappers_required=no
+        fi
+        ;;
+      esac
+      if test "$wrappers_required" = no; then
+	# Replace the output file specification.
+	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+	link_command="$compile_command$compile_rpath"
+
+	# We have no uninstalled library dependencies, so finalize right now.
+	exit_status=0
+	func_show_eval "$link_command" 'exit_status=$?'
+
+	if test -n "$postlink_cmds"; then
+	  func_to_tool_file "$output"
+	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+	  func_execute_cmds "$postlink_cmds" 'exit $?'
+	fi
+
+	# Delete the generated files.
+	if test -f "$output_objdir/${outputname}S.${objext}"; then
+	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
+	fi
+
+	exit $exit_status
+      fi
+
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
+	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
+
+      compile_var=
+      finalize_var=
+      if test -n "$runpath_var"; then
+	if test -n "$perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $perm_rpath; do
+	    func_append rpath "$dir:"
+	  done
+	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+	if test -n "$finalize_perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $finalize_perm_rpath; do
+	    func_append rpath "$dir:"
+	  done
+	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+      fi
+
+      if test "$no_install" = yes; then
+	# We don't need to create a wrapper script.
+	link_command="$compile_var$compile_command$compile_rpath"
+	# Replace the output file specification.
+	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+	# Delete the old output file.
+	$opt_dry_run || $RM $output
+	# Link the executable and exit
+	func_show_eval "$link_command" 'exit $?'
+
+	if test -n "$postlink_cmds"; then
+	  func_to_tool_file "$output"
+	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+	  func_execute_cmds "$postlink_cmds" 'exit $?'
+	fi
+
+	exit $EXIT_SUCCESS
+      fi
+
+      if test "$hardcode_action" = relink; then
+	# Fast installation is not supported
+	link_command="$compile_var$compile_command$compile_rpath"
+	relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+	func_warning "this platform does not like uninstalled shared libraries"
+	func_warning "\`$output' will be relinked during installation"
+      else
+	if test "$fast_install" != no; then
+	  link_command="$finalize_var$compile_command$finalize_rpath"
+	  if test "$fast_install" = yes; then
+	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
+	  else
+	    # fast_install is set to needless
+	    relink_command=
+	  fi
+	else
+	  link_command="$compile_var$compile_command$compile_rpath"
+	  relink_command="$finalize_var$finalize_command$finalize_rpath"
+	fi
+      fi
+
+      # Replace the output file specification.
+      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+      # Delete the old output files.
+      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+      func_show_eval "$link_command" 'exit $?'
+
+      if test -n "$postlink_cmds"; then
+	func_to_tool_file "$output_objdir/$outputname"
+	postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+	func_execute_cmds "$postlink_cmds" 'exit $?'
+      fi
+
+      # Now create the wrapper script.
+      func_verbose "creating $output"
+
+      # Quote the relink command for shipping.
+      if test -n "$relink_command"; then
+	# Preserve any variables that may affect compiler behavior
+	for var in $variables_saved_for_relink; do
+	  if eval test -z \"\${$var+set}\"; then
+	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+	  elif eval var_value=\$$var; test -z "$var_value"; then
+	    relink_command="$var=; export $var; $relink_command"
+	  else
+	    func_quote_for_eval "$var_value"
+	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+	  fi
+	done
+	relink_command="(cd `pwd`; $relink_command)"
+	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+      fi
+
+      # Only actually do things if not in dry run mode.
+      $opt_dry_run || {
+	# win32 will think the script is a binary if it has
+	# a .exe suffix, so we strip it off here.
+	case $output in
+	  *.exe) func_stripname '' '.exe' "$output"
+	         output=$func_stripname_result ;;
+	esac
+	# test for cygwin because mv fails w/o .exe extensions
+	case $host in
+	  *cygwin*)
+	    exeext=.exe
+	    func_stripname '' '.exe' "$outputname"
+	    outputname=$func_stripname_result ;;
+	  *) exeext= ;;
+	esac
+	case $host in
+	  *cygwin* | *mingw* )
+	    func_dirname_and_basename "$output" "" "."
+	    output_name=$func_basename_result
+	    output_path=$func_dirname_result
+	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
+	    cwrapper="$output_path/$output_name.exe"
+	    $RM $cwrappersource $cwrapper
+	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+	    func_emit_cwrapperexe_src > $cwrappersource
+
+	    # The wrapper executable is built using the $host compiler,
+	    # because it contains $host paths and files. If cross-
+	    # compiling, it, like the target executable, must be
+	    # executed on the $host or under an emulation environment.
+	    $opt_dry_run || {
+	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
+	      $STRIP $cwrapper
+	    }
+
+	    # Now, create the wrapper script for func_source use:
+	    func_ltwrapper_scriptname $cwrapper
+	    $RM $func_ltwrapper_scriptname_result
+	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
+	    $opt_dry_run || {
+	      # note: this script will not be executed, so do not chmod.
+	      if test "x$build" = "x$host" ; then
+		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
+	      else
+		func_emit_wrapper no > $func_ltwrapper_scriptname_result
+	      fi
+	    }
+	  ;;
+	  * )
+	    $RM $output
+	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
+
+	    func_emit_wrapper no > $output
+	    chmod +x $output
+	  ;;
+	esac
+      }
+      exit $EXIT_SUCCESS
+      ;;
+    esac
+
+    # See if we need to build an old-fashioned archive.
+    for oldlib in $oldlibs; do
+
+      if test "$build_libtool_libs" = convenience; then
+	oldobjs="$libobjs_save $symfileobj"
+	addlibs="$convenience"
+	build_libtool_libs=no
+      else
+	if test "$build_libtool_libs" = module; then
+	  oldobjs="$libobjs_save"
+	  build_libtool_libs=no
+	else
+	  oldobjs="$old_deplibs $non_pic_objects"
+	  if test "$preload" = yes && test -f "$symfileobj"; then
+	    func_append oldobjs " $symfileobj"
+	  fi
+	fi
+	addlibs="$old_convenience"
+      fi
+
+      if test -n "$addlibs"; then
+	gentop="$output_objdir/${outputname}x"
+	func_append generated " $gentop"
+
+	func_extract_archives $gentop $addlibs
+	func_append oldobjs " $func_extract_archives_result"
+      fi
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+	cmds=$old_archive_from_new_cmds
+      else
+
+	# Add any objects from preloaded convenience libraries
+	if test -n "$dlprefiles"; then
+	  gentop="$output_objdir/${outputname}x"
+	  func_append generated " $gentop"
+
+	  func_extract_archives $gentop $dlprefiles
+	  func_append oldobjs " $func_extract_archives_result"
+	fi
+
+	# POSIX demands no paths to be encoded in archives.  We have
+	# to avoid creating archives with duplicate basenames if we
+	# might have to extract them afterwards, e.g., when creating a
+	# static archive out of a convenience library, or when linking
+	# the entirety of a libtool archive into another (currently
+	# not supported by libtool).
+	if (for obj in $oldobjs
+	    do
+	      func_basename "$obj"
+	      $ECHO "$func_basename_result"
+	    done | sort | sort -uc >/dev/null 2>&1); then
+	  :
+	else
+	  echo "copying selected object files to avoid basename conflicts..."
+	  gentop="$output_objdir/${outputname}x"
+	  func_append generated " $gentop"
+	  func_mkdir_p "$gentop"
+	  save_oldobjs=$oldobjs
+	  oldobjs=
+	  counter=1
+	  for obj in $save_oldobjs
+	  do
+	    func_basename "$obj"
+	    objbase="$func_basename_result"
+	    case " $oldobjs " in
+	    " ") oldobjs=$obj ;;
+	    *[\ /]"$objbase "*)
+	      while :; do
+		# Make sure we don't pick an alternate name that also
+		# overlaps.
+		newobj=lt$counter-$objbase
+		func_arith $counter + 1
+		counter=$func_arith_result
+		case " $oldobjs " in
+		*[\ /]"$newobj "*) ;;
+		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
+		esac
+	      done
+	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+	      func_append oldobjs " $gentop/$newobj"
+	      ;;
+	    *) func_append oldobjs " $obj" ;;
+	    esac
+	  done
+	fi
+	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+	tool_oldlib=$func_to_tool_file_result
+	eval cmds=\"$old_archive_cmds\"
+
+	func_len " $cmds"
+	len=$func_len_result
+	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  cmds=$old_archive_cmds
+	elif test -n "$archiver_list_spec"; then
+	  func_verbose "using command file archive linking..."
+	  for obj in $oldobjs
+	  do
+	    func_to_tool_file "$obj"
+	    $ECHO "$func_to_tool_file_result"
+	  done > $output_objdir/$libname.libcmd
+	  func_to_tool_file "$output_objdir/$libname.libcmd"
+	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
+	  cmds=$old_archive_cmds
+	else
+	  # the command line is too long to link in one step, link in parts
+	  func_verbose "using piecewise archive linking..."
+	  save_RANLIB=$RANLIB
+	  RANLIB=:
+	  objlist=
+	  concat_cmds=
+	  save_oldobjs=$oldobjs
+	  oldobjs=
+	  # Is there a better way of finding the last object in the list?
+	  for obj in $save_oldobjs
+	  do
+	    last_oldobj=$obj
+	  done
+	  eval test_cmds=\"$old_archive_cmds\"
+	  func_len " $test_cmds"
+	  len0=$func_len_result
+	  len=$len0
+	  for obj in $save_oldobjs
+	  do
+	    func_len " $obj"
+	    func_arith $len + $func_len_result
+	    len=$func_arith_result
+	    func_append objlist " $obj"
+	    if test "$len" -lt "$max_cmd_len"; then
+	      :
+	    else
+	      # the above command should be used before it gets too long
+	      oldobjs=$objlist
+	      if test "$obj" = "$last_oldobj" ; then
+		RANLIB=$save_RANLIB
+	      fi
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+	      objlist=
+	      len=$len0
+	    fi
+	  done
+	  RANLIB=$save_RANLIB
+	  oldobjs=$objlist
+	  if test "X$oldobjs" = "X" ; then
+	    eval cmds=\"\$concat_cmds\"
+	  else
+	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+	  fi
+	fi
+      fi
+      func_execute_cmds "$cmds" 'exit $?'
+    done
+
+    test -n "$generated" && \
+      func_show_eval "${RM}r$generated"
+
+    # Now create the libtool archive.
+    case $output in
+    *.la)
+      old_library=
+      test "$build_old_libs" = yes && old_library="$libname.$libext"
+      func_verbose "creating $output"
+
+      # Preserve any variables that may affect compiler behavior
+      for var in $variables_saved_for_relink; do
+	if eval test -z \"\${$var+set}\"; then
+	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+	elif eval var_value=\$$var; test -z "$var_value"; then
+	  relink_command="$var=; export $var; $relink_command"
+	else
+	  func_quote_for_eval "$var_value"
+	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+	fi
+      done
+      # Quote the link command for shipping.
+      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+      if test "$hardcode_automatic" = yes ; then
+	relink_command=
+      fi
+
+      # Only create the output if not a dry run.
+      $opt_dry_run || {
+	for installed in no yes; do
+	  if test "$installed" = yes; then
+	    if test -z "$install_libdir"; then
+	      break
+	    fi
+	    output="$output_objdir/$outputname"i
+	    # Replace all uninstalled libtool libraries with the installed ones
+	    newdependency_libs=
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      *.la)
+		func_basename "$deplib"
+		name="$func_basename_result"
+		func_resolve_sysroot "$deplib"
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
+		test -z "$libdir" && \
+		  func_fatal_error "\`$deplib' is not a valid libtool archive"
+		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
+		;;
+	      -L*)
+		func_stripname -L '' "$deplib"
+		func_replace_sysroot "$func_stripname_result"
+		func_append newdependency_libs " -L$func_replace_sysroot_result"
+		;;
+	      -R*)
+		func_stripname -R '' "$deplib"
+		func_replace_sysroot "$func_stripname_result"
+		func_append newdependency_libs " -R$func_replace_sysroot_result"
+		;;
+	      *) func_append newdependency_libs " $deplib" ;;
+	      esac
+	    done
+	    dependency_libs="$newdependency_libs"
+	    newdlfiles=
+
+	    for lib in $dlfiles; do
+	      case $lib in
+	      *.la)
+	        func_basename "$lib"
+		name="$func_basename_result"
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+		test -z "$libdir" && \
+		  func_fatal_error "\`$lib' is not a valid libtool archive"
+		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
+		;;
+	      *) func_append newdlfiles " $lib" ;;
+	      esac
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      case $lib in
+	      *.la)
+		# Only pass preopened files to the pseudo-archive (for
+		# eventual linking with the app. that links it) if we
+		# didn't already link the preopened objects directly into
+		# the library:
+		func_basename "$lib"
+		name="$func_basename_result"
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+		test -z "$libdir" && \
+		  func_fatal_error "\`$lib' is not a valid libtool archive"
+		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
+		;;
+	      esac
+	    done
+	    dlprefiles="$newdlprefiles"
+	  else
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      func_append newdlfiles " $abs"
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      func_append newdlprefiles " $abs"
+	    done
+	    dlprefiles="$newdlprefiles"
+	  fi
+	  $RM $output
+	  # place dlname in correct position for cygwin
+	  # In fact, it would be nice if we could use this code for all target
+	  # systems that can't hard-code library paths into their executables
+	  # and that have no shared library path variable independent of PATH,
+	  # but it turns out we can't easily determine that from inspecting
+	  # libtool variables, so we have to hard-code the OSs to which it
+	  # applies here; at the moment, that means platforms that use the PE
+	  # object format with DLL files.  See the long comment at the top of
+	  # tests/bindir.at for full details.
+	  tdlname=$dlname
+	  case $host,$output,$installed,$module,$dlname in
+	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
+	      # If a -bindir argument was supplied, place the dll there.
+	      if test "x$bindir" != x ;
+	      then
+		func_relative_path "$install_libdir" "$bindir"
+		tdlname=$func_relative_path_result$dlname
+	      else
+		# Otherwise fall back on heuristic.
+		tdlname=../bin/$dlname
+	      fi
+	      ;;
+	  esac
+	  $ECHO > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags='$new_inherited_linker_flags'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Names of additional weak libraries provided by this library
+weak_library_names='$weak_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+	  if test "$installed" = no && test "$need_relink" = yes; then
+	    $ECHO >> $output "\
+relink_command=\"$relink_command\""
+	  fi
+	done
+      }
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
+      ;;
+    esac
+    exit $EXIT_SUCCESS
+}
+
+{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
+    func_mode_link ${1+"$@"}
+
+
+# func_mode_uninstall arg...
+func_mode_uninstall ()
+{
+    $opt_debug
+    RM="$nonopt"
+    files=
+    rmforce=
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    for arg
+    do
+      case $arg in
+      -f) func_append RM " $arg"; rmforce=yes ;;
+      -*) func_append RM " $arg" ;;
+      *) func_append files " $arg" ;;
+      esac
+    done
+
+    test -z "$RM" && \
+      func_fatal_help "you must specify an RM program"
+
+    rmdirs=
+
+    for file in $files; do
+      func_dirname "$file" "" "."
+      dir="$func_dirname_result"
+      if test "X$dir" = X.; then
+	odir="$objdir"
+      else
+	odir="$dir/$objdir"
+      fi
+      func_basename "$file"
+      name="$func_basename_result"
+      test "$opt_mode" = uninstall && odir="$dir"
+
+      # Remember odir for removal later, being careful to avoid duplicates
+      if test "$opt_mode" = clean; then
+	case " $rmdirs " in
+	  *" $odir "*) ;;
+	  *) func_append rmdirs " $odir" ;;
+	esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if { test -L "$file"; } >/dev/null 2>&1 ||
+	 { test -h "$file"; } >/dev/null 2>&1 ||
+	 test -f "$file"; then
+	:
+      elif test -d "$file"; then
+	exit_status=1
+	continue
+      elif test "$rmforce" = yes; then
+	continue
+      fi
+
+      rmfiles="$file"
+
+      case $name in
+      *.la)
+	# Possibly a libtool archive, so verify it.
+	if func_lalib_p "$file"; then
+	  func_source $dir/$name
+
+	  # Delete the libtool libraries and symlinks.
+	  for n in $library_names; do
+	    func_append rmfiles " $odir/$n"
+	  done
+	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
+
+	  case "$opt_mode" in
+	  clean)
+	    case " $library_names " in
+	    *" $dlname "*) ;;
+	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
+	    esac
+	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
+	    ;;
+	  uninstall)
+	    if test -n "$library_names"; then
+	      # Do each command in the postuninstall commands.
+	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+	    fi
+
+	    if test -n "$old_library"; then
+	      # Do each command in the old_postuninstall commands.
+	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+	    fi
+	    # FIXME: should reinstall the best remaining shared library.
+	    ;;
+	  esac
+	fi
+	;;
+
+      *.lo)
+	# Possibly a libtool object, so verify it.
+	if func_lalib_p "$file"; then
+
+	  # Read the .lo file
+	  func_source $dir/$name
+
+	  # Add PIC object to the list of files to remove.
+	  if test -n "$pic_object" &&
+	     test "$pic_object" != none; then
+	    func_append rmfiles " $dir/$pic_object"
+	  fi
+
+	  # Add non-PIC object to the list of files to remove.
+	  if test -n "$non_pic_object" &&
+	     test "$non_pic_object" != none; then
+	    func_append rmfiles " $dir/$non_pic_object"
+	  fi
+	fi
+	;;
+
+      *)
+	if test "$opt_mode" = clean ; then
+	  noexename=$name
+	  case $file in
+	  *.exe)
+	    func_stripname '' '.exe' "$file"
+	    file=$func_stripname_result
+	    func_stripname '' '.exe' "$name"
+	    noexename=$func_stripname_result
+	    # $file with .exe has already been added to rmfiles,
+	    # add $file without .exe
+	    func_append rmfiles " $file"
+	    ;;
+	  esac
+	  # Do a test to see if this is a libtool program.
+	  if func_ltwrapper_p "$file"; then
+	    if func_ltwrapper_executable_p "$file"; then
+	      func_ltwrapper_scriptname "$file"
+	      relink_command=
+	      func_source $func_ltwrapper_scriptname_result
+	      func_append rmfiles " $func_ltwrapper_scriptname_result"
+	    else
+	      relink_command=
+	      func_source $dir/$noexename
+	    fi
+
+	    # note $name still contains .exe if it was in $file originally
+	    # as does the version of $file that was added into $rmfiles
+	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
+	    if test "$fast_install" = yes && test -n "$relink_command"; then
+	      func_append rmfiles " $odir/lt-$name"
+	    fi
+	    if test "X$noexename" != "X$name" ; then
+	      func_append rmfiles " $odir/lt-${noexename}.c"
+	    fi
+	  fi
+	fi
+	;;
+      esac
+      func_show_eval "$RM $rmfiles" 'exit_status=1'
+    done
+
+    # Try to remove the ${objdir}s in the directories where we deleted files
+    for dir in $rmdirs; do
+      if test -d "$dir"; then
+	func_show_eval "rmdir $dir >/dev/null 2>&1"
+      fi
+    done
+
+    exit $exit_status
+}
+
+{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
+    func_mode_uninstall ${1+"$@"}
+
+test -z "$opt_mode" && {
+  help="$generic_help"
+  func_fatal_help "you must specify a MODE"
+}
+
+test -z "$exec_cmd" && \
+  func_fatal_help "invalid operation mode \`$opt_mode'"
+
+if test -n "$exec_cmd"; then
+  eval exec "$exec_cmd"
+  exit $EXIT_FAILURE
+fi
+
+exit $exit_status
+
+
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries.  Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them.  This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration.  But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+build_libtool_libs=no
+build_old_libs=yes
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
+# vi:sw=2
+
Index: branches/testFACT++branch/.aux_dir/missing
===================================================================
--- branches/testFACT++branch/.aux_dir/missing	(revision 18277)
+++ branches/testFACT++branch/.aux_dir/missing	(revision 18277)
@@ -0,0 +1,376 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2009-04-28.21; # UTC
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
+# 2008, 2009 Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+# 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, see <http://www.gnu.org/licenses/>.
+
+# 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.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try \`$0 --help' for more information"
+  exit 1
+fi
+
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+  configure_ac=configure.ac
+else
+  configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case $1 in
+--run)
+  # Try to run requested program, and just exit if it succeeds.
+  run=
+  shift
+  "$@" && exit 0
+  # Exit code 63 means version mismatch.  This often happens
+  # when the user try to use an ancient version of a tool on
+  # a file that requires a minimum version.  In this case we
+  # we should proceed has if the program had been absent, or
+  # if --run hadn't been passed.
+  if test $? = 63; then
+    run=:
+    msg="probably too old"
+  fi
+  ;;
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+  --run           try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+  aclocal      touch file \`aclocal.m4'
+  autoconf     touch file \`configure'
+  autoheader   touch file \`config.h.in'
+  autom4te     touch the output file, or create a stub one
+  automake     touch all \`Makefile.in' files
+  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
+  flex         create \`lex.yy.c', if possible, from existing .c
+  help2man     touch the output file
+  lex          create \`lex.yy.c', if possible, from existing .c
+  makeinfo     touch the output file
+  tar          try tar, gnutar, gtar, then tar without non-portable flags
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
+\`g' are ignored when checking the name.
+
+Send bug reports to <bug-automake@gnu.org>."
+    exit $?
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing $scriptversion (GNU Automake)"
+    exit $?
+    ;;
+
+  -*)
+    echo 1>&2 "$0: Unknown \`$1' option"
+    echo 1>&2 "Try \`$0 --help' for more information"
+    exit 1
+    ;;
+
+esac
+
+# normalize program name to check for.
+program=`echo "$1" | sed '
+  s/^gnu-//; t
+  s/^gnu//; t
+  s/^g//; t'`
+
+# Now exit if we have it, but it failed.  Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).  This is about non-GNU programs, so use $1 not
+# $program.
+case $1 in
+  lex*|yacc*)
+    # Not GNU programs, they don't have --version.
+    ;;
+
+  tar*)
+    if test -n "$run"; then
+       echo 1>&2 "ERROR: \`tar' requires --run"
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       exit 1
+    fi
+    ;;
+
+  *)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       # Could not run --version or --help.  This is probably someone
+       # running `$TOOL --version' or `$TOOL --help' to check whether
+       # $TOOL exists and not knowing $TOOL uses missing.
+       exit 1
+    fi
+    ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $program in
+  aclocal*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
+         to install the \`Automake' and \`Perl' packages.  Grab them from
+         any GNU archive site."
+    touch aclocal.m4
+    ;;
+
+  autoconf*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`${configure_ac}'.  You might want to install the
+         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
+         archive site."
+    touch configure
+    ;;
+
+  autoheader*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
+         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
+         from any GNU archive site."
+    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+    test -z "$files" && files="config.h"
+    touch_files=
+    for f in $files; do
+      case $f in
+      *:*) touch_files="$touch_files "`echo "$f" |
+				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+      *) touch_files="$touch_files $f.in";;
+      esac
+    done
+    touch $touch_files
+    ;;
+
+  automake*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+         You might want to install the \`Automake' and \`Perl' packages.
+         Grab them from any GNU archive site."
+    find . -type f -name Makefile.am -print |
+	   sed 's/\.am$/.in/' |
+	   while read f; do touch "$f"; done
+    ;;
+
+  autom4te*)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.
+         You can get \`$1' as part of \`Autoconf' from any GNU
+         archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo "#! /bin/sh"
+	echo "# Created by GNU Automake missing as a replacement of"
+	echo "#  $ $@"
+	echo "exit 0"
+	chmod +x $file
+	exit 1
+    fi
+    ;;
+
+  bison*|yacc*)
+    echo 1>&2 "\
+WARNING: \`$1' $msg.  You should only need it if
+         you modified a \`.y' file.  You may need the \`Bison' package
+         in order for those modifications to take effect.  You can get
+         \`Bison' from any GNU archive site."
+    rm -f y.tab.c y.tab.h
+    if test $# -ne 1; then
+        eval LASTARG="\${$#}"
+	case $LASTARG in
+	*.y)
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+	    if test -f "$SRCFILE"; then
+	         cp "$SRCFILE" y.tab.c
+	    fi
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+	    if test -f "$SRCFILE"; then
+	         cp "$SRCFILE" y.tab.h
+	    fi
+	  ;;
+	esac
+    fi
+    if test ! -f y.tab.h; then
+	echo >y.tab.h
+    fi
+    if test ! -f y.tab.c; then
+	echo 'main() { return 0; }' >y.tab.c
+    fi
+    ;;
+
+  lex*|flex*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.l' file.  You may need the \`Flex' package
+         in order for those modifications to take effect.  You can get
+         \`Flex' from any GNU archive site."
+    rm -f lex.yy.c
+    if test $# -ne 1; then
+        eval LASTARG="\${$#}"
+	case $LASTARG in
+	*.l)
+	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+	    if test -f "$SRCFILE"; then
+	         cp "$SRCFILE" lex.yy.c
+	    fi
+	  ;;
+	esac
+    fi
+    if test ! -f lex.yy.c; then
+	echo 'main() { return 0; }' >lex.yy.c
+    fi
+    ;;
+
+  help2man*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+	 you modified a dependency of a manual page.  You may need the
+	 \`Help2man' package in order for those modifications to take
+	 effect.  You can get \`Help2man' from any GNU archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo ".ab help2man is required to generate this page"
+	exit $?
+    fi
+    ;;
+
+  makeinfo*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.texi' or \`.texinfo' file, or any other file
+         indirectly affecting the aspect of the manual.  The spurious
+         call might also be the consequence of using a buggy \`make' (AIX,
+         DU, IRIX).  You might want to install the \`Texinfo' package or
+         the \`GNU make' package.  Grab either from any GNU archive site."
+    # The file to touch is that specified with -o ...
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -z "$file"; then
+      # ... or it is the one specified with @setfilename ...
+      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '
+	/^@setfilename/{
+	  s/.* \([^ ]*\) *$/\1/
+	  p
+	  q
+	}' $infile`
+      # ... or it is derived from the source name (dir/f.texi becomes f.info)
+      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+    fi
+    # If the file does not exist, the user really needs makeinfo;
+    # let's fail without touching anything.
+    test -f $file || exit 1
+    touch $file
+    ;;
+
+  tar*)
+    shift
+
+    # We have already tried tar in the generic part.
+    # Look for gnutar/gtar before invocation to avoid ugly error
+    # messages.
+    if (gnutar --version > /dev/null 2>&1); then
+       gnutar "$@" && exit 0
+    fi
+    if (gtar --version > /dev/null 2>&1); then
+       gtar "$@" && exit 0
+    fi
+    firstarg="$1"
+    if shift; then
+	case $firstarg in
+	*o*)
+	    firstarg=`echo "$firstarg" | sed s/o//`
+	    tar "$firstarg" "$@" && exit 0
+	    ;;
+	esac
+	case $firstarg in
+	*h*)
+	    firstarg=`echo "$firstarg" | sed s/h//`
+	    tar "$firstarg" "$@" && exit 0
+	    ;;
+	esac
+    fi
+
+    echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+         You may want to install GNU tar or Free paxutils, or check the
+         command line arguments."
+    exit 1
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.  Check the \`README' file,
+         it often tells you about the needed prerequisites for installing
+         this package.  You may also peek at any GNU archive site, in case
+         some other package would contain this missing \`$1' program."
+    exit 1
+    ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
Index: branches/testFACT++branch/.macro_dir/ac_check_class.m4
===================================================================
--- branches/testFACT++branch/.macro_dir/ac_check_class.m4	(revision 18277)
+++ branches/testFACT++branch/.macro_dir/ac_check_class.m4	(revision 18277)
@@ -0,0 +1,84 @@
+dnl @synopsis AC_CHECK_PACKAGE(PACKAGE, FUNCTION, LIBRARY , HEADERFILE [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl
+dnl Provides --with-PACKAGE, --with-PACKAGE-include and --with-PACKAGE-libdir
+dnl options to configure. Supports the now standard --with-PACKAGE=DIR 
+dnl approach where the package's include dir and lib dir are underneath DIR,
+dnl but also allows the include and lib directories to be specified seperately
+dnl
+dnl adds the extra -Ipath to CFLAGS if needed 
+dnl adds extra -Lpath to LD_FLAGS if needed
+dnl searches for the FUNCTION in the LIBRARY with 
+dnl AC_CHECK_LIBRARY and thus adds the lib to LIBS
+dnl
+dnl defines HAVE_PKG_PACKAGE if it is found, (where PACKAGE in the 
+dnl HAVE_PKG_PACKAGE is replaced with the actual first parameter passed)
+dnl note that autoheader will complain of not having the HAVE_PKG_PACKAGE and you 
+dnl will have to add it to acconfig.h manually
+dnl
+dnl @version $Id$
+dnl @author Caolan McNamara <caolan@skynet.ie>
+dnl
+dnl with fixes from...
+dnl Alexandre Duret-Lutz <duret_g@lrde.epita.fr>
+
+AC_DEFUN([AC_CHECK_CLASS],
+[
+
+AC_ARG_WITH($1,
+[  --with-$1[=DIR]	root directory of $1 installation],
+with_$1=$withval 
+if test "${with_$1}" != yes; then
+	$1_include="$withval/include" 
+	$1_libdir="$withval/lib"
+fi
+)
+
+AC_ARG_WITH($1-include,
+[  --with-$1-include=DIR        specify exact include dir for $1 headers (e.g. $4)],
+$1_include="$withval")
+
+AC_ARG_WITH($1-libdir,
+[  --with-$1-libdir=DIR        specify exact library dir for $1 library (e.g. lib$3)
+  --without-$1        disables $1 usage completely], 
+$1_libdir="$withval")
+
+if test "${with_$1}" != no ; then
+	OLD_LIBS=$LIBS
+	OLD_LDFLAGS=$LDFLAGS
+	OLD_CFLAGS=$CFLAGS
+	OLD_CPPFLAGS=$CPPFLAGS
+
+	if test "${$1_libdir}" ; then
+		LDFLAGS="$LDFLAGS -L${$1_libdir}"
+	fi
+	if test "${$1_include}" ; then
+		CPPFLAGS="$CPPFLAGS -I${$1_include}"
+		CFLAGS="$CFLAGS -I${$1_include}"
+	fi
+
+        no_good=no
+
+	AC_CHECK_HEADER($4,,no_good=yes)
+        
+        AC_LANG_PUSH([C++])
+        AC_CHECK_CPP($3, [#include <$4>] , [$2],,no_good=yes, $7)
+        AC_LANG_POP([C++])
+
+	if test "$no_good" = yes; then
+dnl	broken
+		ifelse([$6], , , [$6])
+		
+		LIBS=$OLD_LIBS
+		LDFLAGS=$OLD_LDFLAGS
+		CPPFLAGS=$OLD_CPPFLAGS
+		CFLAGS=$OLD_CFLAGS
+	else
+dnl	fixed
+		ifelse([$5], , , [$5])
+
+		AC_DEFINE(HAVE_PKG_$1)
+	fi
+
+fi
+
+])
Index: branches/testFACT++branch/.macro_dir/ac_check_cpp.m4
===================================================================
--- branches/testFACT++branch/.macro_dir/ac_check_cpp.m4	(revision 18277)
+++ branches/testFACT++branch/.macro_dir/ac_check_cpp.m4	(revision 18277)
@@ -0,0 +1,38 @@
+# AC_CHECK_CPPB(LIBRARY, [PROLOGUE], [BODY], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], [OTHER-LIBRARIES])
+#
+# AC_LANG_PUSH([C++])
+# AC_CHECK_CPP(gmock,
+#   [#include ],
+#   [testing::Cardinality dummy],
+#   [HAVE_GMOCK=1],
+#   [AC_MSG_WARN([libgmock is not installed.])
+# AC_LANG_POP([C++])
+#
+
+AC_DEFUN([AC_CHECK_CPP], 
+[
+
+   m4_ifval([$4], , [AH_CHECK_LIB([$1])])
+
+   AS_LITERAL_IF([$1],
+   	[AS_VAR_PUSHDEF([ac_Lib], [ac_cv_lib_$1_$3])],
+   	[AS_VAR_PUSHDEF([ac_Lib], [ac_cv_lib_$1''_$3])])
+
+   AC_CACHE_CHECK([for $3 in -l$1], [ac_Lib], [
+   	ac_check_lib_save_LIBS=$LIBS
+   	LIBS="-l$1 $6 $LIBS"
+   	AC_LINK_IFELSE([AC_LANG_PROGRAM([$2], [$3])],
+   		[AS_VAR_SET([ac_Lib], [yes])],
+   		[AS_VAR_SET([ac_Lib], [no])])
+   	LIBS=$ac_check_lib_save_LIBS])
+   	AS_IF([test AS_VAR_GET([ac_Lib]) = yes], [
+   		m4_default([$4], [
+           		AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_LIB$1))
+   			LIBS="-l$1 $LIBS"
+   		])
+           ],
+   [$5])
+   AS_VAR_POPDEF([ac_Lib])
+
+])
+
Index: branches/testFACT++branch/.macro_dir/ac_check_package.m4
===================================================================
--- branches/testFACT++branch/.macro_dir/ac_check_package.m4	(revision 18277)
+++ branches/testFACT++branch/.macro_dir/ac_check_package.m4	(revision 18277)
@@ -0,0 +1,80 @@
+dnl @synopsis AC_CHECK_PACKAGE(PACKAGE, FUNCTION, LIBRARY , HEADERFILE [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl
+dnl Provides --with-PACKAGE, --with-PACKAGE-include and --with-PACKAGE-libdir
+dnl options to configure. Supports the now standard --with-PACKAGE=DIR 
+dnl approach where the package's include dir and lib dir are underneath DIR,
+dnl but also allows the include and lib directories to be specified seperately
+dnl
+dnl adds the extra -Ipath to CFLAGS if needed 
+dnl adds extra -Lpath to LD_FLAGS if needed
+dnl searches for the FUNCTION in the LIBRARY with 
+dnl AC_CHECK_LIBRARY and thus adds the lib to LIBS
+dnl
+dnl defines HAVE_PKG_PACKAGE if it is found, (where PACKAGE in the 
+dnl HAVE_PKG_PACKAGE is replaced with the actual first parameter passed)
+dnl note that autoheader will complain of not having the HAVE_PKG_PACKAGE and you 
+dnl will have to add it to acconfig.h manually
+dnl
+dnl @version $Id$
+dnl @author Caolan McNamara <caolan@skynet.ie>
+dnl
+dnl with fixes from...
+dnl Alexandre Duret-Lutz <duret_g@lrde.epita.fr>
+
+AC_DEFUN([AC_CHECK_PACKAGE],
+[
+
+AC_ARG_WITH($1,
+[  --with-$1[=DIR]	root directory of $1 installation],
+with_$1=$withval 
+if test "${with_$1}" != yes; then
+	$1_include="$withval/include" 
+	$1_libdir="$withval/lib"
+fi
+)
+
+AC_ARG_WITH($1-include,
+[  --with-$1-include=DIR        specify exact include dir for $1 headers (e.g. $4)],
+$1_include="$withval")
+
+AC_ARG_WITH($1-libdir,
+[  --with-$1-libdir=DIR        specify exact library dir for $1 library (e.g. lib$3)
+  --without-$1        disables $1 usage completely], 
+$1_libdir="$withval")
+
+if test "${with_$1}" != no ; then
+	OLD_LIBS=$LIBS
+	OLD_LDFLAGS=$LDFLAGS
+	OLD_CFLAGS=$CFLAGS
+	OLD_CPPFLAGS=$CPPFLAGS
+
+	if test "${$1_libdir}" ; then
+		LDFLAGS="$LDFLAGS -L${$1_libdir}"
+	fi
+	if test "${$1_include}" ; then
+		CPPFLAGS="$CPPFLAGS -I${$1_include}"
+		CFLAGS="$CFLAGS -I${$1_include}"
+	fi
+
+        no_good=no
+
+	AC_CHECK_HEADER($4,,no_good=yes)
+	AC_CHECK_LIB($3,$2,,no_good=yes)
+	if test "$no_good" = yes; then
+dnl	broken
+		ifelse([$6], , , [$6])
+		
+		LIBS=$OLD_LIBS
+		LDFLAGS=$OLD_LDFLAGS
+		CPPFLAGS=$OLD_CPPFLAGS
+		CFLAGS=$OLD_CFLAGS
+	else
+dnl	fixed
+		ifelse([$5], , , [$5])
+
+		AC_DEFINE(HAVE_PKG_$1)
+	fi
+
+fi
+
+])
Index: branches/testFACT++branch/.macro_dir/ac_check_readline.m4
===================================================================
--- branches/testFACT++branch/.macro_dir/ac_check_readline.m4	(revision 18277)
+++ branches/testFACT++branch/.macro_dir/ac_check_readline.m4	(revision 18277)
@@ -0,0 +1,58 @@
+dnl Rewritten from scratch. --wojtekka
+dnl $Id: readline.m4 1323 2003-01-19 17:28:54Z wojtekka $
+
+AC_DEFUN([AC_CHECK_READLINE],[
+  AC_SUBST(READLINE_LIBS)
+  AC_SUBST(READLINE_INCLUDES)
+
+  AC_ARG_WITH(readline,
+    [[  --with-readline[=dir]   Compile with readline/locate base dir]],
+    if test "x$withval" = "xno" ; then
+      without_readline=yes
+    elif test "x$withval" != "xyes" ; then
+      with_arg="$withval/include:-L$withval/lib $withval/include/readline:-L$withval/lib"
+    fi)
+
+  AC_MSG_CHECKING(for readline.h)
+
+  if test "x$without_readline" != "xyes"; then
+    for i in $with_arg \
+	     /usr/include: \
+	     /usr/local/include:-L/usr/local/lib \
+             /usr/freeware/include:-L/usr/freeware/lib32 \
+	     /usr/pkg/include:-L/usr/pkg/lib \
+	     /sw/include:-L/sw/lib \
+	     /cw/include:-L/cw/lib \
+	     /net/caladium/usr/people/piotr.nba/temp/pkg/include:-L/net/caladium/usr/people/piotr.nba/temp/pkg/lib \
+	     /boot/home/config/include:-L/boot/home/config/lib; do
+    
+      incl=`echo "$i" | sed 's/:.*//'`
+      lib=`echo "$i" | sed 's/.*://'`
+
+      if test -f $incl/readline/readline.h ; then
+        AC_MSG_RESULT($incl/readline/readline.h)
+        READLINE_LIBS="$lib -lreadline"
+	if test "$incl" != "/usr/include"; then
+	  READLINE_INCLUDES="-I$incl/readline -I$incl"
+	else
+	  READLINE_INCLUDES="-I$incl/readline"
+	fi
+        AC_DEFINE(HAVE_READLINE, 1, [define if You want readline])
+        have_readline=yes
+        break
+      elif test -f $incl/readline.h -a "x$incl" != "x/usr/include"; then
+        AC_MSG_RESULT($incl/readline.h)
+        READLINE_LIBS="$lib -lreadline"
+        READLINE_INCLUDES="-I$incl"
+        AC_DEFINE(HAVE_READLINE, 1, [define if You want readline])
+        have_readline=yes
+        break
+      fi
+    done
+  fi
+
+  if test "x$have_readline" != "xyes"; then
+    AC_MSG_RESULT(not found)
+  fi
+])
+
Index: branches/testFACT++branch/.macro_dir/ac_find_motif.m4
===================================================================
--- branches/testFACT++branch/.macro_dir/ac_find_motif.m4	(revision 18277)
+++ branches/testFACT++branch/.macro_dir/ac_find_motif.m4	(revision 18277)
@@ -0,0 +1,263 @@
+dnl
+dnl AC_FIND_MOTIF : find OSF/Motif or LessTif, and provide variables
+dnl     to easily use them in a Makefile.
+dnl
+dnl Adapted from a macro by Andreas Zeller.
+dnl
+dnl The variables provided are :
+dnl     MOTIF_LDFLAGS              (e.g. -L/usr/lesstif/lib -lXm)
+dnl     MOTIF_INCL           (e.g. -I/usr/lesstif/lib)
+dnl     motif_libraries         (e.g. /usr/lesstif/lib)
+dnl     motif_includes          (e.g. /usr/lesstif/include)
+dnl
+dnl The MOTIF_LDFLAGS and MOTIF_INCL variables should be fit to put on
+dnl your application's link line in your Makefile.
+dnl
+dnl Oleo CVS Id: motif.m4,v 1.9 1999/04/09 11:46:49 danny
+dnl LessTif CVS $Id: ac_find_motif.m4,v 1.3 2004/11/30 16:30:33 paul Exp $
+dnl
+AC_DEFUN([AC_FIND_MOTIF],
+[
+AC_REQUIRE([AC_PATH_XTRA])
+AC_REQUIRE([AC_FIND_LIBXP])
+
+motif_includes=
+motif_libraries=
+
+dnl AC_ARG_WITH(motif,
+dnl [  --without-motif         do not use Motif widgets])
+dnl Treat --without-motif like
+dnl --without-motif-includes --without-motif-libraries.
+dnl if test "$with_motif" = "no"
+dnl then
+dnl   motif_includes=none
+dnl   motif_libraries=none
+dnl fi
+
+AC_ARG_WITH(motif-includes,
+[  --with-motif-includes=DIR    Motif include files are in DIR],
+motif_includes="$withval")
+
+AC_ARG_WITH(motif-libraries,
+[  --with-motif-libraries=DIR   Motif libraries are in DIR],
+motif_libraries="$withval")
+
+AC_MSG_CHECKING(for Motif)
+
+#
+#
+# Search the include files.
+#
+if test "$motif_includes" = ""; then
+AC_CACHE_VAL(ac_cv_motif_includes,
+[
+ac_motif_save_LIBS="$LIBS"
+ac_motif_save_INCLUDES="$INCLUDES"
+ac_motif_save_CPPFLAGS="$CPPFLAGS"
+ac_motif_save_LDFLAGS="$LDFLAGS"
+#
+LIBS="$X_PRE_LIBS -lXm -lXt -lX11 $X_EXTRA_LIBS $LIBS"
+INCLUDES="$X_CFLAGS $INCLUDES"
+CPPFLAGS="$X_CFLAGS $CPPFLAGS"
+LDFLAGS="$X_LIBS $LDFLAGS"
+#
+ac_cv_motif_includes="none"
+AC_TRY_COMPILE([#include <Xm/Xm.h>],[int a;],
+[
+# Xm/Xm.h is in the standard search path.
+ac_cv_motif_includes=
+],
+[
+# Xm/Xm.h is not in the standard search path.
+# Locate it and put its directory in `motif_includes'
+#
+# /usr/include/Motif* are used on HP-UX (Motif).
+# /usr/include/X11* are used on HP-UX (X and Athena).
+# /usr/dt is used on Solaris (Motif).
+# /usr/openwin is used on Solaris (X and Athena).
+# /sw/include is used for fink under OSX
+# Other directories are just guesses.
+for dir in "$x_includes" "${prefix}/include" /usr/include /usr/local/include \
+           /usr/include/Motif2.1 /usr/include/Motif2.0 /usr/include/Motif1.2  \
+           /usr/include/X11 /usr/include/X11R6 /usr/include/X11R5 \
+           /usr/X11/include /usr/X11R6/include /usr/X11R5/include \
+           /usr/dt/include /usr/openwin/include \
+           /usr/dt/*/include /opt/*/include /usr/include/Motif* \
+           "${prefix}"/*/include /usr/*/include /usr/local/*/include \
+           "${prefix}"/include/* /usr/include/* /usr/local/include/* \
+           /sw/include; do
+if test -f "$dir/Xm/Xm.h"; then
+ac_cv_motif_includes="$dir"
+break
+fi
+done
+])
+#
+LIBS="$ac_motif_save_LIBS"
+INCLUDES="$ac_motif_save_INCLUDES"
+CPPFLAGS="$ac_motif_save_CPPFLAGS"
+LDFLAGS="$ac_motif_save_LDFLAGS"
+])
+motif_includes="$ac_cv_motif_includes"
+fi
+#
+#
+# Now for the libraries.
+#
+if test "$motif_libraries" = ""; then
+AC_CACHE_VAL(ac_cv_motif_libraries,
+[
+ac_motif_save_LIBS="$LIBS"
+ac_motif_save_INCLUDES="$INCLUDES"
+ac_motif_save_CPPFLAGS="$CPPFLAGS"
+ac_motif_save_LDFLAGS="$LDFLAGS"
+#
+LIBS="$X_PRE_LIBS -lXm -lXt -lX11 $X_EXTRA_LIBS $LIBS"
+INCLUDES="$X_CFLAGS $INCLUDES"
+CPPFLAGS="$X_CFLAGS $CPPFLAGS"
+LDFLAGS="$X_LIBS $LDFLAGS"
+#
+ac_cv_motif_libraries="none"
+AC_TRY_LINK([#include <Xm/Xm.h>],[XtToolkitInitialize();],
+[
+# libXm.a is in the standard search path.
+ac_cv_motif_libraries=
+],
+[
+# libXm.a is not in the standard search path.
+# Locate it and put its directory in `motif_libraries'
+#
+# /usr/lib/Motif* are used on HP-UX (Motif).
+# /usr/lib/X11* are used on HP-UX (X and Athena).
+# /usr/dt is used on Solaris (Motif).
+# /usr/lesstif is used on Linux (Lesstif).
+# /usr/openwin is used on Solaris (X and Athena).
+# /sw/lib is used under fink on OSX
+# Other directories are just guesses.
+for dir in "$x_libraries" "${prefix}/lib" /usr/lib /usr/local/lib \
+           /usr/lib/Motif2.1 /usr/lib/Motif2.0 /usr/lib/Motif1.2 \
+           /usr/lib/X11 /usr/lib/X11R6 /usr/lib/X11R5 \
+           /usr/X11/lib /usr/X11R6/lib /usr/X11R5/lib \
+           /usr/dt/lib /usr/openwin/lib \
+           /usr/dt/*/lib /opt/*/lib /usr/lib/Motif* \
+           /usr/lesstif*/lib /usr/lib/Lesstif* \
+           "${prefix}"/*/lib /usr/*/lib /usr/local/*/lib \
+           "${prefix}"/lib/* /usr/lib/* /usr/local/lib/* \
+           /sw/lib; do
+if test -d "$dir" && test "`ls $dir/libXm.* 2> /dev/null`" != ""; then
+ac_cv_motif_libraries="$dir"
+break
+fi
+done
+])
+#
+LIBS="$ac_motif_save_LIBS"
+INCLUDES="$ac_motif_save_INCLUDES"
+CPPFLAGS="$ac_motif_save_CPPFLAGS"
+LDFLAGS="$ac_motif_save_LDFLAGS"
+])
+#
+motif_libraries="$ac_cv_motif_libraries"
+fi
+#
+# Provide an easier way to link
+#
+if test "$motif_includes" = "none" -o "$motif_libraries" = "none"; then
+        with_motif="no"
+else
+        with_motif="yes"
+fi
+
+AC_FIND_LIBXP
+if test "$LT_HAVE_XP" = "yes"; then
+        XPLIB="-lXp -lXext"
+else
+        XPLIB=""
+fi
+
+if test "$with_motif" != "no"; then
+        if test "$motif_libraries" = ""; then
+                MOTIF_LDFLAGS="-lXm $XPLIB"
+                MOTIF_LIBS="-lXm $XPLIB"
+        else
+                MOTIF_LDFLAGS="-L$motif_libraries -lXm $XPLIB"
+                MOTIF_LIBS="-L$motif_libraries -lXm $XPLIB"
+        fi
+        if test "$motif_includes" != ""; then
+                MOTIF_INCL="-I$motif_includes"
+                MOTIF_CFLAGS="-I$motif_includes"
+        fi
+# remove this until we find a use for it
+# a.lacey@man.ac.uk
+#       AC_DEFINE(HAVE_MOTIF)
+else
+        with_motif="no"
+fi
+#
+AC_SUBST(MOTIF_LDFLAGS)
+AC_SUBST(MOTIF_INCL)
+AC_SUBST(MOTIF_CFLAGS)
+AC_SUBST(MOTIF_LIBS)
+#
+#
+#
+motif_libraries_result="$motif_libraries"
+motif_includes_result="$motif_includes"
+test "$motif_libraries_result" = "" && motif_libraries_result="in default path"
+test "$motif_includes_result" = "" && motif_includes_result="in default path"
+test "$motif_libraries_result" = "none" && motif_libraries_result="(none)"
+test "$motif_includes_result" = "none" && motif_includes_result="(none)"
+AC_MSG_RESULT(
+  [libraries $motif_libraries_result, headers $motif_includes_result])
+])dnl
+
+dnl
+dnl Check for libXp
+dnl In fact this check ensures that
+dnl  - <X11/extensions/Print.h> and
+dnl  - both libXp libXext
+dnl are in place
+dnl Note that a simpler check only for the libraries would not
+dnl be sufficient perhaps.
+dnl If the test succeeds it defines Have_Libxp within our
+dnl Makefiles. Perhaps one should immediately add those libs
+dnl to link commands which include libXm version2.1?!
+dnl
+AC_DEFUN([AC_FIND_LIBXP],
+[AC_REQUIRE([AC_PATH_X])
+AC_CACHE_CHECK(whether libXp is available, lt_cv_libxp,
+[lt_save_CFLAGS="$CFLAGS"
+lt_save_CPPFLAGS="$CPPFLAGS"
+lt_save_LIBS="$LIBS"
+LIBS="$X_LIBS -lXp -lXext -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $LIBS"
+CFLAGS="$X_CFLAGS $CFLAGS"
+CPPFLAGS="$X_CFLAGS $CPPFLAGS"
+AC_TRY_LINK([
+#include <X11/Intrinsic.h>
+#include <X11/extensions/Print.h>
+],[
+int main() {
+Display *display=NULL;
+short   major_version, minor_version;
+Status rc;
+rc=XpQueryVersion(display, &major_version, &minor_version);
+exit(0);
+}
+],
+lt_cv_libxp=yes,
+lt_cv_libxp=no)
+])
+if test "$lt_cv_libxp" = "yes"; then
+# remove this until we find a use for it
+# a.lacey@man.ac.uk
+#  AC_DEFINE(HAVE_LIB_XP)
+  LT_HAVE_XP="yes"
+else
+  LT_HAVE_XP="no"
+fi
+AM_CONDITIONAL(HAS_LIBXP, test "$lt_cv_libxp" = "yes")
+AC_SUBST(LT_HAVE_XP)
+CFLAGS="$lt_save_CFLAGS"
+CPPFLAGS="$lt_save_CPPFLAGS"
+LIBS="$lt_save_LIBS"
+])
Index: branches/testFACT++branch/.macro_dir/ax_cxx_compile_stdcxx_0x.m4
===================================================================
--- branches/testFACT++branch/.macro_dir/ax_cxx_compile_stdcxx_0x.m4	(revision 18277)
+++ branches/testFACT++branch/.macro_dir/ax_cxx_compile_stdcxx_0x.m4	(revision 18277)
@@ -0,0 +1,107 @@
+# ============================================================================
+#  http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_0x.html
+# ============================================================================
+#
+# SYNOPSIS
+#
+#   AX_CXX_COMPILE_STDCXX_0X
+#
+# DESCRIPTION
+#
+#   Check for baseline language coverage in the compiler for the C++0x
+#   standard.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 7
+
+AU_ALIAS([AC_CXX_COMPILE_STDCXX_0X], [AX_CXX_COMPILE_STDCXX_0X])
+AC_DEFUN([AX_CXX_COMPILE_STDCXX_0X], [
+  AC_CACHE_CHECK(if g++ supports C++0x features without additional flags,
+  ax_cv_cxx_compile_cxx0x_native,
+  [AC_LANG_SAVE
+  AC_LANG_CPLUSPLUS
+  AC_TRY_COMPILE([
+  template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+    typedef check<check<bool>> right_angle_brackets;
+
+    int a;
+    decltype(a) b;
+
+    typedef check<int> check_type;
+    check_type c;
+    check_type&& cr = static_cast<check_type&&>(c);],,
+  ax_cv_cxx_compile_cxx0x_native=yes, ax_cv_cxx_compile_cxx0x_native=no)
+  AC_LANG_RESTORE
+  ])
+
+  AC_CACHE_CHECK(if g++ supports C++0x features with -std=c++0x,
+  ax_cv_cxx_compile_cxx0x_cxx,
+  [AC_LANG_SAVE
+  AC_LANG_CPLUSPLUS
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -std=c++0x"
+  AC_TRY_COMPILE([
+  template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+    typedef check<check<bool>> right_angle_brackets;
+
+    int a;
+    decltype(a) b;
+
+    typedef check<int> check_type;
+    check_type c;
+    check_type&& cr = static_cast<check_type&&>(c);],,
+  ax_cv_cxx_compile_cxx0x_cxx=yes, ax_cv_cxx_compile_cxx0x_cxx=no)
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  AC_LANG_RESTORE
+  ])
+
+  AC_CACHE_CHECK(if g++ supports C++0x features with -std=gnu++0x,
+  ax_cv_cxx_compile_cxx0x_gxx,
+  [AC_LANG_SAVE
+  AC_LANG_CPLUSPLUS
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -std=gnu++0x"
+  AC_TRY_COMPILE([
+  template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+    typedef check<check<bool>> right_angle_brackets;
+
+    int a;
+    decltype(a) b;
+
+    typedef check<int> check_type;
+    check_type c;
+    check_type&& cr = static_cast<check_type&&>(c);],,
+  ax_cv_cxx_compile_cxx0x_gxx=yes, ax_cv_cxx_compile_cxx0x_gxx=no)
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  AC_LANG_RESTORE
+  ])
+
+  if test "$ax_cv_cxx_compile_cxx0x_native" = yes ||
+     test "$ax_cv_cxx_compile_cxx0x_cxx" = yes ||
+     test "$ax_cv_cxx_compile_cxx0x_gxx" = yes; then
+    AC_DEFINE(HAVE_STDCXX_0X,,[Define if g++ supports C++0x features. ])
+  fi
+])
Index: branches/testFACT++branch/.macro_dir/libtool.m4
===================================================================
--- branches/testFACT++branch/.macro_dir/libtool.m4	(revision 18277)
+++ branches/testFACT++branch/.macro_dir/libtool.m4	(revision 18277)
@@ -0,0 +1,7851 @@
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+#
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
+#                 Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+m4_define([_LT_COPYING], [dnl
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
+#                 Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+#   This file is part of GNU Libtool.
+#
+# GNU Libtool 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.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool 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 GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+])
+
+# serial 57 LT_INIT
+
+
+# LT_PREREQ(VERSION)
+# ------------------
+# Complain and exit if this libtool version is less that VERSION.
+m4_defun([LT_PREREQ],
+[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
+       [m4_default([$3],
+		   [m4_fatal([Libtool version $1 or higher is required],
+		             63)])],
+       [$2])])
+
+
+# _LT_CHECK_BUILDDIR
+# ------------------
+# Complain if the absolute build directory name contains unusual characters
+m4_defun([_LT_CHECK_BUILDDIR],
+[case `pwd` in
+  *\ * | *\	*)
+    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
+esac
+])
+
+
+# LT_INIT([OPTIONS])
+# ------------------
+AC_DEFUN([LT_INIT],
+[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+AC_BEFORE([$0], [LT_LANG])dnl
+AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
+
+dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+dnl unless we require an AC_DEFUNed macro:
+AC_REQUIRE([LTOPTIONS_VERSION])dnl
+AC_REQUIRE([LTSUGAR_VERSION])dnl
+AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+m4_require([_LT_PROG_LTMAIN])dnl
+
+_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+_LT_SETUP
+
+# Only expand once:
+m4_define([LT_INIT])
+])# LT_INIT
+
+# Old names:
+AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
+AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
+dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+m4_defun([_LT_CC_BASENAME],
+[for cc_temp in $1""; do
+  case $cc_temp in
+    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+])
+
+
+# _LT_FILEUTILS_DEFAULTS
+# ----------------------
+# It is okay to use these file commands and assume they have been set
+# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
+m4_defun([_LT_FILEUTILS_DEFAULTS],
+[: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+])# _LT_FILEUTILS_DEFAULTS
+
+
+# _LT_SETUP
+# ---------
+m4_defun([_LT_SETUP],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
+
+_LT_DECL([], [host_alias], [0], [The host system])dnl
+_LT_DECL([], [host], [0])dnl
+_LT_DECL([], [host_os], [0])dnl
+dnl
+_LT_DECL([], [build_alias], [0], [The build system])dnl
+_LT_DECL([], [build], [0])dnl
+_LT_DECL([], [build_os], [0])dnl
+dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+dnl
+AC_REQUIRE([AC_PROG_LN_S])dnl
+test -z "$LN_S" && LN_S="ln -s"
+_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
+dnl
+AC_REQUIRE([LT_CMD_MAX_LEN])dnl
+_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
+_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
+dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
+m4_require([_LT_CMD_RELOAD])dnl
+m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
+m4_require([_LT_CMD_OLD_ARCHIVE])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_WITH_SYSROOT])dnl
+
+_LT_CONFIG_LIBTOOL_INIT([
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+])
+if test -n "${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+_LT_CHECK_OBJDIR
+
+m4_require([_LT_TAG_COMPILER])dnl
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    _LT_PATH_MAGIC
+  fi
+  ;;
+esac
+
+# Use C for the default configuration in the libtool script
+LT_SUPPORTED_TAG([CC])
+_LT_LANG_C_CONFIG
+_LT_LANG_DEFAULT_CONFIG
+_LT_CONFIG_COMMANDS
+])# _LT_SETUP
+
+
+# _LT_PREPARE_SED_QUOTE_VARS
+# --------------------------
+# Define a few sed substitution that help us do robust quoting.
+m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
+[# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([["`\\]]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+])
+
+# _LT_PROG_LTMAIN
+# ---------------
+# Note that this code is called both from `configure', and `config.status'
+# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
+# `config.status' has no value for ac_aux_dir unless we are using Automake,
+# so we pass a copy along to make sure it has a sensible value anyway.
+m4_defun([_LT_PROG_LTMAIN],
+[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
+_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
+ltmain="$ac_aux_dir/ltmain.sh"
+])# _LT_PROG_LTMAIN
+
+
+## ------------------------------------- ##
+## Accumulate code for creating libtool. ##
+## ------------------------------------- ##
+
+# So that we can recreate a full libtool script including additional
+# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
+# in macros and then make a single call at the end using the `libtool'
+# label.
+
+
+# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
+# ----------------------------------------
+# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL_INIT],
+[m4_ifval([$1],
+          [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
+                     [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_INIT])
+
+
+# _LT_CONFIG_LIBTOOL([COMMANDS])
+# ------------------------------
+# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL],
+[m4_ifval([$1],
+          [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
+                     [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
+
+
+# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
+# -----------------------------------------------------
+m4_defun([_LT_CONFIG_SAVE_COMMANDS],
+[_LT_CONFIG_LIBTOOL([$1])
+_LT_CONFIG_LIBTOOL_INIT([$2])
+])
+
+
+# _LT_FORMAT_COMMENT([COMMENT])
+# -----------------------------
+# Add leading comment marks to the start of each line, and a trailing
+# full-stop to the whole comment if one is not present already.
+m4_define([_LT_FORMAT_COMMENT],
+[m4_ifval([$1], [
+m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
+              [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
+)])
+
+
+
+## ------------------------ ##
+## FIXME: Eliminate VARNAME ##
+## ------------------------ ##
+
+
+# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
+# -------------------------------------------------------------------
+# CONFIGNAME is the name given to the value in the libtool script.
+# VARNAME is the (base) name used in the configure script.
+# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
+# VARNAME.  Any other value will be used directly.
+m4_define([_LT_DECL],
+[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
+    [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
+	[m4_ifval([$1], [$1], [$2])])
+    lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
+    m4_ifval([$4],
+	[lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
+    lt_dict_add_subkey([lt_decl_dict], [$2],
+	[tagged?], [m4_ifval([$5], [yes], [no])])])
+])
+
+
+# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
+# --------------------------------------------------------
+m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
+
+
+# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_tag_varnames],
+[_lt_decl_filter([tagged?], [yes], $@)])
+
+
+# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
+# ---------------------------------------------------------
+m4_define([_lt_decl_filter],
+[m4_case([$#],
+  [0], [m4_fatal([$0: too few arguments: $#])],
+  [1], [m4_fatal([$0: too few arguments: $#: $1])],
+  [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
+  [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
+  [lt_dict_filter([lt_decl_dict], $@)])[]dnl
+])
+
+
+# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
+# --------------------------------------------------
+m4_define([lt_decl_quote_varnames],
+[_lt_decl_filter([value], [1], $@)])
+
+
+# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_dquote_varnames],
+[_lt_decl_filter([value], [2], $@)])
+
+
+# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_varnames_tagged],
+[m4_assert([$# <= 2])dnl
+_$0(m4_quote(m4_default([$1], [[, ]])),
+    m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
+    m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
+m4_define([_lt_decl_varnames_tagged],
+[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
+
+
+# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_all_varnames],
+[_$0(m4_quote(m4_default([$1], [[, ]])),
+     m4_if([$2], [],
+	   m4_quote(lt_decl_varnames),
+	m4_quote(m4_shift($@))))[]dnl
+])
+m4_define([_lt_decl_all_varnames],
+[lt_join($@, lt_decl_varnames_tagged([$1],
+			lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
+])
+
+
+# _LT_CONFIG_STATUS_DECLARE([VARNAME])
+# ------------------------------------
+# Quote a variable value, and forward it to `config.status' so that its
+# declaration there will have the same value as in `configure'.  VARNAME
+# must have a single quote delimited value for this to work.
+m4_define([_LT_CONFIG_STATUS_DECLARE],
+[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
+
+
+# _LT_CONFIG_STATUS_DECLARATIONS
+# ------------------------------
+# We delimit libtool config variables with single quotes, so when
+# we write them to config.status, we have to be sure to quote all
+# embedded single quotes properly.  In configure, this macro expands
+# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
+#
+#    <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
+m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
+    [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAGS
+# ----------------
+# Output comment and list of tags supported by the script
+m4_defun([_LT_LIBTOOL_TAGS],
+[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
+available_tags="_LT_TAGS"dnl
+])
+
+
+# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
+# -----------------------------------
+# Extract the dictionary values for VARNAME (optionally with TAG) and
+# expand to a commented shell variable setting:
+#
+#    # Some comment about what VAR is for.
+#    visible_name=$lt_internal_name
+m4_define([_LT_LIBTOOL_DECLARE],
+[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
+					   [description])))[]dnl
+m4_pushdef([_libtool_name],
+    m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
+m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
+    [0], [_libtool_name=[$]$1],
+    [1], [_libtool_name=$lt_[]$1],
+    [2], [_libtool_name=$lt_[]$1],
+    [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
+m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
+])
+
+
+# _LT_LIBTOOL_CONFIG_VARS
+# -----------------------
+# Produce commented declarations of non-tagged libtool config variables
+# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
+# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
+# section) are produced by _LT_LIBTOOL_TAG_VARS.
+m4_defun([_LT_LIBTOOL_CONFIG_VARS],
+[m4_foreach([_lt_var],
+    m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
+    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAG_VARS(TAG)
+# -------------------------
+m4_define([_LT_LIBTOOL_TAG_VARS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
+    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
+
+
+# _LT_TAGVAR(VARNAME, [TAGNAME])
+# ------------------------------
+m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
+
+
+# _LT_CONFIG_COMMANDS
+# -------------------
+# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
+# variables for single and double quote escaping we saved from calls
+# to _LT_DECL, we can put quote escaped variables declarations
+# into `config.status', and then the shell code to quote escape them in
+# for loops in `config.status'.  Finally, any additional code accumulated
+# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
+m4_defun([_LT_CONFIG_COMMANDS],
+[AC_PROVIDE_IFELSE([LT_OUTPUT],
+	dnl If the libtool generation code has been placed in $CONFIG_LT,
+	dnl instead of duplicating it all over again into config.status,
+	dnl then we will have config.status run $CONFIG_LT later, so it
+	dnl needs to know what name is stored there:
+        [AC_CONFIG_COMMANDS([libtool],
+            [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
+    dnl If the libtool generation code is destined for config.status,
+    dnl expand the accumulated commands and init code now:
+    [AC_CONFIG_COMMANDS([libtool],
+        [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
+])#_LT_CONFIG_COMMANDS
+
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
+[
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+_LT_CONFIG_STATUS_DECLARATIONS
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$[]1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_quote_varnames); do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[[\\\\\\\`\\"\\\$]]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Double-quote double-evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_dquote_varnames); do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[[\\\\\\\`\\"\\\$]]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+_LT_OUTPUT_LIBTOOL_INIT
+])
+
+# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
+# ------------------------------------
+# Generate a child script FILE with all initialization necessary to
+# reuse the environment learned by the parent script, and make the
+# file executable.  If COMMENT is supplied, it is inserted after the
+# `#!' sequence but before initialization text begins.  After this
+# macro, additional text can be appended to FILE to form the body of
+# the child script.  The macro ends with non-zero status if the
+# file could not be fully written (such as if the disk is full).
+m4_ifdef([AS_INIT_GENERATED],
+[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
+[m4_defun([_LT_GENERATED_FILE_INIT],
+[m4_require([AS_PREPARE])]dnl
+[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
+[lt_write_fail=0
+cat >$1 <<_ASEOF || lt_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+$2
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$1 <<\_ASEOF || lt_write_fail=1
+AS_SHELL_SANITIZE
+_AS_PREPARE
+exec AS_MESSAGE_FD>&1
+_ASEOF
+test $lt_write_fail = 0 && chmod +x $1[]dnl
+m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
+
+# LT_OUTPUT
+# ---------
+# This macro allows early generation of the libtool script (before
+# AC_OUTPUT is called), incase it is used in configure for compilation
+# tests.
+AC_DEFUN([LT_OUTPUT],
+[: ${CONFIG_LT=./config.lt}
+AC_MSG_NOTICE([creating $CONFIG_LT])
+_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
+[# Run this file to recreate a libtool stub with the current configuration.])
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+lt_cl_silent=false
+exec AS_MESSAGE_LOG_FD>>config.log
+{
+  echo
+  AS_BOX([Running $as_me.])
+} >&AS_MESSAGE_LOG_FD
+
+lt_cl_help="\
+\`$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $[0] [[OPTIONS]]
+
+  -h, --help      print this help, then exit
+  -V, --version   print version number, then exit
+  -q, --quiet     do not print progress messages
+  -d, --debug     don't remove temporary files
+
+Report bugs to <bug-libtool@gnu.org>."
+
+lt_cl_version="\
+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+configured by $[0], generated by m4_PACKAGE_STRING.
+
+Copyright (C) 2010 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test $[#] != 0
+do
+  case $[1] in
+    --version | --v* | -V )
+      echo "$lt_cl_version"; exit 0 ;;
+    --help | --h* | -h )
+      echo "$lt_cl_help"; exit 0 ;;
+    --debug | --d* | -d )
+      debug=: ;;
+    --quiet | --q* | --silent | --s* | -q )
+      lt_cl_silent=: ;;
+
+    -*) AC_MSG_ERROR([unrecognized option: $[1]
+Try \`$[0] --help' for more information.]) ;;
+
+    *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try \`$[0] --help' for more information.]) ;;
+  esac
+  shift
+done
+
+if $lt_cl_silent; then
+  exec AS_MESSAGE_FD>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AC_MSG_NOTICE([creating $ofile])
+_LT_OUTPUT_LIBTOOL_COMMANDS
+AS_EXIT(0)
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure.  Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+lt_cl_success=:
+test "$silent" = yes &&
+  lt_config_lt_args="$lt_config_lt_args --quiet"
+exec AS_MESSAGE_LOG_FD>/dev/null
+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+exec AS_MESSAGE_LOG_FD>>config.log
+$lt_cl_success || AS_EXIT(1)
+])# LT_OUTPUT
+
+
+# _LT_CONFIG(TAG)
+# ---------------
+# If TAG is the built-in tag, create an initial libtool script with a
+# default configuration from the untagged config vars.  Otherwise add code
+# to config.status for appending the configuration named by TAG from the
+# matching tagged config vars.
+m4_defun([_LT_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_CONFIG_SAVE_COMMANDS([
+  m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
+  m4_if(_LT_TAG, [C], [
+    # See if we are running on zsh, and set the options which allow our
+    # commands through without removal of \ escapes.
+    if test -n "${ZSH_VERSION+set}" ; then
+      setopt NO_GLOB_SUBST
+    fi
+
+    cfgfile="${ofile}T"
+    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+    $RM "$cfgfile"
+
+    cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+_LT_COPYING
+_LT_LIBTOOL_TAGS
+
+# ### BEGIN LIBTOOL CONFIG
+_LT_LIBTOOL_CONFIG_VARS
+_LT_LIBTOOL_TAG_VARS
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+  case $host_os in
+  aix3*)
+    cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+_LT_EOF
+    ;;
+  esac
+
+  _LT_PROG_LTMAIN
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" \
+     || (rm -f "$cfgfile"; exit 1)
+
+  _LT_PROG_REPLACE_SHELLFNS
+
+   mv -f "$cfgfile" "$ofile" ||
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+],
+[cat <<_LT_EOF >> "$ofile"
+
+dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
+dnl in a comment (ie after a #).
+# ### BEGIN LIBTOOL TAG CONFIG: $1
+_LT_LIBTOOL_TAG_VARS(_LT_TAG)
+# ### END LIBTOOL TAG CONFIG: $1
+_LT_EOF
+])dnl /m4_if
+],
+[m4_if([$1], [], [
+    PACKAGE='$PACKAGE'
+    VERSION='$VERSION'
+    TIMESTAMP='$TIMESTAMP'
+    RM='$RM'
+    ofile='$ofile'], [])
+])dnl /_LT_CONFIG_SAVE_COMMANDS
+])# _LT_CONFIG
+
+
+# LT_SUPPORTED_TAG(TAG)
+# ---------------------
+# Trace this macro to discover what tags are supported by the libtool
+# --tag option, using:
+#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
+AC_DEFUN([LT_SUPPORTED_TAG], [])
+
+
+# C support is built-in for now
+m4_define([_LT_LANG_C_enabled], [])
+m4_define([_LT_TAGS], [])
+
+
+# LT_LANG(LANG)
+# -------------
+# Enable libtool support for the given language if not already enabled.
+AC_DEFUN([LT_LANG],
+[AC_BEFORE([$0], [LT_OUTPUT])dnl
+m4_case([$1],
+  [C],			[_LT_LANG(C)],
+  [C++],		[_LT_LANG(CXX)],
+  [Java],		[_LT_LANG(GCJ)],
+  [Fortran 77],		[_LT_LANG(F77)],
+  [Fortran],		[_LT_LANG(FC)],
+  [Windows Resource],	[_LT_LANG(RC)],
+  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+    [_LT_LANG($1)],
+    [m4_fatal([$0: unsupported language: "$1"])])])dnl
+])# LT_LANG
+
+
+# _LT_LANG(LANGNAME)
+# ------------------
+m4_defun([_LT_LANG],
+[m4_ifdef([_LT_LANG_]$1[_enabled], [],
+  [LT_SUPPORTED_TAG([$1])dnl
+  m4_append([_LT_TAGS], [$1 ])dnl
+  m4_define([_LT_LANG_]$1[_enabled], [])dnl
+  _LT_LANG_$1_CONFIG($1)])dnl
+])# _LT_LANG
+
+
+# _LT_LANG_DEFAULT_CONFIG
+# -----------------------
+m4_defun([_LT_LANG_DEFAULT_CONFIG],
+[AC_PROVIDE_IFELSE([AC_PROG_CXX],
+  [LT_LANG(CXX)],
+  [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_F77],
+  [LT_LANG(F77)],
+  [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_FC],
+  [LT_LANG(FC)],
+  [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
+
+dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
+dnl pulling things in needlessly.
+AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+  [LT_LANG(GCJ)],
+  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+    [LT_LANG(GCJ)],
+    [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
+      [LT_LANG(GCJ)],
+      [m4_ifdef([AC_PROG_GCJ],
+	[m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
+       m4_ifdef([A][M_PROG_GCJ],
+	[m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
+       m4_ifdef([LT_PROG_GCJ],
+	[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
+
+AC_PROVIDE_IFELSE([LT_PROG_RC],
+  [LT_LANG(RC)],
+  [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
+])# _LT_LANG_DEFAULT_CONFIG
+
+# Obsolete macros:
+AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
+dnl AC_DEFUN([AC_LIBTOOL_F77], [])
+dnl AC_DEFUN([AC_LIBTOOL_FC], [])
+dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
+dnl AC_DEFUN([AC_LIBTOOL_RC], [])
+
+
+# _LT_TAG_COMPILER
+# ----------------
+m4_defun([_LT_TAG_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
+_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
+_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
+_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_TAG_COMPILER
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+m4_defun([_LT_COMPILER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+])# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+m4_defun([_LT_LINKER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+])# _LT_LINKER_BOILERPLATE
+
+# _LT_REQUIRED_DARWIN_CHECKS
+# -------------------------
+m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
+  case $host_os in
+    rhapsody* | darwin*)
+    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
+    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
+    AC_CHECK_TOOL([LIPO], [lipo], [:])
+    AC_CHECK_TOOL([OTOOL], [otool], [:])
+    AC_CHECK_TOOL([OTOOL64], [otool64], [:])
+    _LT_DECL([], [DSYMUTIL], [1],
+      [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
+    _LT_DECL([], [NMEDIT], [1],
+      [Tool to change global to local symbols on Mac OS X])
+    _LT_DECL([], [LIPO], [1],
+      [Tool to manipulate fat objects and archives on Mac OS X])
+    _LT_DECL([], [OTOOL], [1],
+      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
+    _LT_DECL([], [OTOOL64], [1],
+      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
+
+    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
+      [lt_cv_apple_cc_single_mod=no
+      if test -z "${LT_MULTI_MODULE}"; then
+	# By default we will add the -single_module flag. You can override
+	# by either setting the environment variable LT_MULTI_MODULE
+	# non-empty at configure time, or by adding -multi_module to the
+	# link flags.
+	rm -rf libconftest.dylib*
+	echo "int foo(void){return 1;}" > conftest.c
+	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
+	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+	  lt_cv_apple_cc_single_mod=yes
+	else
+	  cat conftest.err >&AS_MESSAGE_LOG_FD
+	fi
+	rm -rf libconftest.dylib*
+	rm -f conftest.*
+      fi])
+    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
+      [lt_cv_ld_exported_symbols_list],
+      [lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+	[lt_cv_ld_exported_symbols_list=yes],
+	[lt_cv_ld_exported_symbols_list=no])
+	LDFLAGS="$save_LDFLAGS"
+    ])
+    AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
+      [lt_cv_ld_force_load=no
+      cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
+      echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
+      $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
+      echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
+      $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
+      cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+      _lt_result=$?
+      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+	lt_cv_ld_force_load=yes
+      else
+	cat conftest.err >&AS_MESSAGE_LOG_FD
+      fi
+        rm -f conftest.err libconftest.a conftest conftest.c
+        rm -rf conftest.dSYM
+    ])
+    case $host_os in
+    rhapsody* | darwin1.[[012]])
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+    darwin1.*)
+      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+    darwin*) # darwin 5.x on
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+	10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
+	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+	10.[[012]]*)
+	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+	10.*)
+	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    fi
+    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+])
+
+
+# _LT_DARWIN_LINKER_FEATURES
+# --------------------------
+# Checks for linker and compiler features on darwin
+m4_defun([_LT_DARWIN_LINKER_FEATURES],
+[
+  m4_require([_LT_REQUIRED_DARWIN_CHECKS])
+  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+  _LT_TAGVAR(hardcode_direct, $1)=no
+  _LT_TAGVAR(hardcode_automatic, $1)=yes
+  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  if test "$lt_cv_ld_force_load" = "yes"; then
+    _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+  else
+    _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+  fi
+  _LT_TAGVAR(link_all_deplibs, $1)=yes
+  _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=func_echo_all
+    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+    m4_if([$1], [CXX],
+[   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+    fi
+],[])
+  else
+  _LT_TAGVAR(ld_shlibs, $1)=no
+  fi
+])
+
+# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
+# ----------------------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+# Store the results from the different compilers for each TAGNAME.
+# Allow to override them for all tags through lt_cv_aix_libpath.
+m4_defun([_LT_SYS_MODULE_PATH_AIX],
+[m4_require([_LT_DECL_SED])dnl
+if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
+  [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
+  lt_aix_libpath_sed='[
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }]'
+  _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi],[])
+  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
+  fi
+  ])
+  aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
+fi
+])# _LT_SYS_MODULE_PATH_AIX
+
+
+# _LT_SHELL_INIT(ARG)
+# -------------------
+m4_define([_LT_SHELL_INIT],
+[m4_divert_text([M4SH-INIT], [$1
+])])# _LT_SHELL_INIT
+
+
+
+# _LT_PROG_ECHO_BACKSLASH
+# -----------------------
+# Find how we can fake an echo command that does not interpret backslash.
+# In particular, with Autoconf 2.60 or later we add some code to the start
+# of the generated configure script which will find a shell with a builtin
+# printf (which we can use as an echo command).
+m4_defun([_LT_PROG_ECHO_BACKSLASH],
+[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+AC_MSG_CHECKING([how to print strings])
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='printf %s\n'
+else
+  # Use this function as a fallback that always works.
+  func_fallback_echo ()
+  {
+    eval 'cat <<_LTECHO_EOF
+$[]1
+_LTECHO_EOF'
+  }
+  ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO "$*" 
+}
+
+case "$ECHO" in
+  printf*) AC_MSG_RESULT([printf]) ;;
+  print*) AC_MSG_RESULT([print -r]) ;;
+  *) AC_MSG_RESULT([cat]) ;;
+esac
+
+m4_ifdef([_AS_DETECT_SUGGESTED],
+[_AS_DETECT_SUGGESTED([
+  test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
+    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+    PATH=/empty FPATH=/empty; export PATH FPATH
+    test "X`printf %s $ECHO`" = "X$ECHO" \
+      || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
+
+_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
+_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
+])# _LT_PROG_ECHO_BACKSLASH
+
+
+# _LT_WITH_SYSROOT
+# ----------------
+AC_DEFUN([_LT_WITH_SYSROOT],
+[AC_MSG_CHECKING([for sysroot])
+AC_ARG_WITH([sysroot],
+[  --with-sysroot[=DIR] Search for dependent libraries within DIR
+                        (or the compiler's sysroot if not specified).],
+[], [with_sysroot=no])
+
+dnl lt_sysroot will always be passed unquoted.  We quote it here
+dnl in case the user passed a directory name.
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+   if test "$GCC" = yes; then
+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+   fi
+   ;; #(
+ /*)
+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   ;; #(
+ no|'')
+   ;; #(
+ *)
+   AC_MSG_RESULT([${with_sysroot}])
+   AC_MSG_ERROR([The sysroot must be an absolute path.])
+   ;;
+esac
+
+ AC_MSG_RESULT([${lt_sysroot:-no}])
+_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
+[dependent libraries, and in which our libraries should be installed.])])
+
+# _LT_ENABLE_LOCK
+# ---------------
+m4_defun([_LT_ENABLE_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+  [AS_HELP_STRING([--disable-libtool-lock],
+    [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.$ac_objext` in
+      *ELF-32*)
+	HPUX_IA64_MODE="32"
+	;;
+      *ELF-64*)
+	HPUX_IA64_MODE="64"
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    if test "$lt_cv_prog_gnu_ld" = yes; then
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -melf32bsmip"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -melf32bmipn32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -melf64bmip"
+	;;
+      esac
+    else
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -32"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -n32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -64"
+	  ;;
+      esac
+    fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.o` in
+      *32-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_i386_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    LD="${LD-ld} -m elf_i386"
+	    ;;
+	  ppc64-*linux*|powerpc64-*linux*)
+	    LD="${LD-ld} -m elf32ppclinux"
+	    ;;
+	  s390x-*linux*)
+	    LD="${LD-ld} -m elf_s390"
+	    ;;
+	  sparc64-*linux*)
+	    LD="${LD-ld} -m elf32_sparc"
+	    ;;
+	esac
+	;;
+      *64-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_x86_64_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    LD="${LD-ld} -m elf_x86_64"
+	    ;;
+	  ppc*-*linux*|powerpc*-*linux*)
+	    LD="${LD-ld} -m elf64ppc"
+	    ;;
+	  s390*-*linux*|s390*-*tpf*)
+	    LD="${LD-ld} -m elf64_s390"
+	    ;;
+	  sparc*-*linux*)
+	    LD="${LD-ld} -m elf64_sparc"
+	    ;;
+	esac
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+    [AC_LANG_PUSH(C)
+     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+     AC_LANG_POP])
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+sparc*-*solaris*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      *)
+	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+	  LD="${LD-ld} -64"
+	fi
+	;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+esac
+
+need_locks="$enable_libtool_lock"
+])# _LT_ENABLE_LOCK
+
+
+# _LT_PROG_AR
+# -----------
+m4_defun([_LT_PROG_AR],
+[AC_CHECK_TOOLS(AR, [ar], false)
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
+
+AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
+  [lt_cv_ar_at_file=no
+   AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
+     [echo conftest.$ac_objext > conftest.lst
+      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
+      AC_TRY_EVAL([lt_ar_try])
+      if test "$ac_status" -eq 0; then
+	# Ensure the archiver fails upon bogus file names.
+	rm -f conftest.$ac_objext libconftest.a
+	AC_TRY_EVAL([lt_ar_try])
+	if test "$ac_status" -ne 0; then
+          lt_cv_ar_at_file=@
+        fi
+      fi
+      rm -f conftest.* libconftest.a
+     ])
+  ])
+
+if test "x$lt_cv_ar_at_file" = xno; then
+  archiver_list_spec=
+else
+  archiver_list_spec=$lt_cv_ar_at_file
+fi
+_LT_DECL([], [archiver_list_spec], [1],
+  [How to feed a file listing to the archiver])
+])# _LT_PROG_AR
+
+
+# _LT_CMD_OLD_ARCHIVE
+# -------------------
+m4_defun([_LT_CMD_OLD_ARCHIVE],
+[_LT_PROG_AR
+
+AC_CHECK_TOOL(STRIP, strip, :)
+test -z "$STRIP" && STRIP=:
+_LT_DECL([], [STRIP], [1], [A symbol stripping program])
+
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+test -z "$RANLIB" && RANLIB=:
+_LT_DECL([], [RANLIB], [1],
+    [Commands used to install an old-style archive])
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+case $host_os in
+  darwin*)
+    lock_old_archive_extraction=yes ;;
+  *)
+    lock_old_archive_extraction=no ;;
+esac
+_LT_DECL([], [old_postinstall_cmds], [2])
+_LT_DECL([], [old_postuninstall_cmds], [2])
+_LT_TAGDECL([], [old_archive_cmds], [2],
+    [Commands used to build an old-style archive])
+_LT_DECL([], [lock_old_archive_extraction], [0],
+    [Whether to use a lock for old archive extraction])
+])# _LT_CMD_OLD_ARCHIVE
+
+
+# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([_LT_COMPILER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$3"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       $2=yes
+     fi
+   fi
+   $RM conftest*
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$5], , :, [$5])
+else
+    m4_if([$6], , :, [$6])
+fi
+])# _LT_COMPILER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
+
+
+# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#                  [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------
+# Check whether the given linker option works
+AC_DEFUN([_LT_LINKER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $3"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&AS_MESSAGE_LOG_FD
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         $2=yes
+       fi
+     else
+       $2=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$4], , :, [$4])
+else
+    m4_if([$5], , :, [$5])
+fi
+])# _LT_LINKER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
+
+
+# LT_CMD_MAX_LEN
+#---------------
+AC_DEFUN([LT_CMD_MAX_LEN],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+  i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+	      test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+  AC_MSG_RESULT(none)
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+_LT_DECL([], [max_cmd_len], [0],
+    [What is the maximum length of a command?])
+])# LT_CMD_MAX_LEN
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
+
+
+# _LT_HEADER_DLFCN
+# ----------------
+m4_defun([_LT_HEADER_DLFCN],
+[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
+])# _LT_HEADER_DLFCN
+
+
+# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ----------------------------------------------------------------
+m4_defun([_LT_TRY_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+  [$4]
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+[#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+	}
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}]
+_LT_EOF
+  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) $1 ;;
+      x$lt_dlneed_uscore) $2 ;;
+      x$lt_dlunknown|x*) $3 ;;
+    esac
+  else :
+    # compilation failed
+    $3
+  fi
+fi
+rm -fr conftest*
+])# _LT_TRY_DLOPEN_SELF
+
+
+# LT_SYS_DLOPEN_SELF
+# ------------------
+AC_DEFUN([LT_SYS_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32* | cegcc*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ])
+    ;;
+
+  *)
+    AC_CHECK_FUNC([shl_load],
+	  [lt_cv_dlopen="shl_load"],
+      [AC_CHECK_LIB([dld], [shl_load],
+	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
+	[AC_CHECK_FUNC([dlopen],
+	      [lt_cv_dlopen="dlopen"],
+	  [AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+	    [AC_CHECK_LIB([svld], [dlopen],
+		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+	      [AC_CHECK_LIB([dld], [dld_link],
+		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
+	      ])
+	    ])
+	  ])
+	])
+      ])
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    AC_CACHE_CHECK([whether a program can dlopen itself],
+	  lt_cv_dlopen_self, [dnl
+	  _LT_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+    ])
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+	  lt_cv_dlopen_self_static, [dnl
+	  _LT_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
+      ])
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+_LT_DECL([dlopen_support], [enable_dlopen], [0],
+	 [Whether dlopen is supported])
+_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
+	 [Whether dlopen of programs is supported])
+_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
+	 [Whether dlopen of statically linked programs is supported])
+])# LT_SYS_DLOPEN_SELF
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
+
+
+# _LT_COMPILER_C_O([TAGNAME])
+# ---------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler.
+# This macro does not hard code the compiler like AC_PROG_CC_C_O.
+m4_defun([_LT_COMPILER_C_O],
+[m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+     fi
+   fi
+   chmod u+w . 2>&AS_MESSAGE_LOG_FD
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+])
+_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
+	[Does compiler simultaneously support -c and -o options?])
+])# _LT_COMPILER_C_O
+
+
+# _LT_COMPILER_FILE_LOCKS([TAGNAME])
+# ----------------------------------
+# Check to see if we can do hard links to lock some files if needed
+m4_defun([_LT_COMPILER_FILE_LOCKS],
+[m4_require([_LT_ENABLE_LOCK])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_COMPILER_C_O([$1])
+
+hard_links="nottested"
+if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  AC_MSG_CHECKING([if we can lock with hard links])
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  AC_MSG_RESULT([$hard_links])
+  if test "$hard_links" = no; then
+    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
+])# _LT_COMPILER_FILE_LOCKS
+
+
+# _LT_CHECK_OBJDIR
+# ----------------
+m4_defun([_LT_CHECK_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+_LT_DECL([], [objdir], [0],
+         [The name of the directory that contains temporary libtool files])dnl
+m4_pattern_allow([LT_OBJDIR])dnl
+AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
+  [Define to the sub-directory in which libtool stores uninstalled libraries.])
+])# _LT_CHECK_OBJDIR
+
+
+# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
+# --------------------------------------
+# Check hardcoding attributes.
+m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
+   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
+   test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+     test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
+    # Linking always hardcodes the temporary library directory.
+    _LT_TAGVAR(hardcode_action, $1)=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    _LT_TAGVAR(hardcode_action, $1)=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  _LT_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
+   test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+_LT_TAGDECL([], [hardcode_action], [0],
+    [How to hardcode a shared library path into an executable])
+])# _LT_LINKER_HARDCODE_LIBPATH
+
+
+# _LT_CMD_STRIPLIB
+# ----------------
+m4_defun([_LT_CMD_STRIPLIB],
+[m4_require([_LT_DECL_EGREP])
+striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+  darwin*)
+    if test -n "$STRIP" ; then
+      striplib="$STRIP -x"
+      old_striplib="$STRIP -S"
+      AC_MSG_RESULT([yes])
+    else
+      AC_MSG_RESULT([no])
+    fi
+    ;;
+  *)
+    AC_MSG_RESULT([no])
+    ;;
+  esac
+fi
+_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
+_LT_DECL([], [striplib], [1])
+])# _LT_CMD_STRIPLIB
+
+
+# _LT_SYS_DYNAMIC_LINKER([TAG])
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+m4_defun([_LT_SYS_DYNAMIC_LINKER],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_OBJDUMP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+AC_MSG_CHECKING([dynamic linker characteristics])
+m4_if([$1],
+	[], [
+if test "$GCC" = yes; then
+  case $host_os in
+    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+    *) lt_awk_arg="/^libraries:/" ;;
+  esac
+  case $host_os in
+    mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
+    *) lt_sed_strip_eq="s,=/,/,g" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+  case $lt_search_path_spec in
+  *\;*)
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+    ;;
+  *)
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+    ;;
+  esac
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary.
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+    else
+      test -d "$lt_sys_path" && \
+	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+  lt_foo="";
+  lt_count=0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo="/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
+  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
+}'`
+  # AWK program above erroneously prepends '/' to C:/dos/paths
+  # for these hosts.
+  case $host_os in
+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+      $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
+  esac
+  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[[4-9]]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[[01]] | aix4.[[01]].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[[45]]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+m4_if([$1], [],[
+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
+
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+    library_names_spec='${libname}.dll.lib'
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec="$LIB"
+      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
+        # It is most probably a Windows format PATH.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
+      ;;
+    esac
+
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
+    ;;
+
+  *)
+    # Assume MSVC wrapper
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    dynamic_linker='Win32 ld.exe'
+    ;;
+  esac
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+m4_if([$1], [],[
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[[123]]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+haiku*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
+
+interix[[3-9]]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
+    [lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
+	 LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+      [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
+	 [lt_cv_shlibpath_overrides_runpath=yes])])
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+    ])
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
+    *)				need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[[89]] | openbsd2.[[89]].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+_LT_DECL([], [variables_saved_for_relink], [1],
+    [Variables whose values should be saved in libtool wrapper scripts and
+    restored at link time])
+_LT_DECL([], [need_lib_prefix], [0],
+    [Do we need the "lib" prefix for modules?])
+_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
+_LT_DECL([], [version_type], [0], [Library versioning type])
+_LT_DECL([], [runpath_var], [0],  [Shared library runtime path variable])
+_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
+_LT_DECL([], [shlibpath_overrides_runpath], [0],
+    [Is shlibpath searched before the hard-coded library search path?])
+_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
+_LT_DECL([], [library_names_spec], [1],
+    [[List of archive names.  First name is the real one, the rest are links.
+    The last name is the one that the linker finds with -lNAME]])
+_LT_DECL([], [soname_spec], [1],
+    [[The coded name of the library, if different from the real name]])
+_LT_DECL([], [install_override_mode], [1],
+    [Permission mode override for installation of shared libraries])
+_LT_DECL([], [postinstall_cmds], [2],
+    [Command to use after installation of a shared archive])
+_LT_DECL([], [postuninstall_cmds], [2],
+    [Command to use after uninstallation of a shared archive])
+_LT_DECL([], [finish_cmds], [2],
+    [Commands used to finish a libtool library installation in a directory])
+_LT_DECL([], [finish_eval], [1],
+    [[As "finish_cmds", except a single script fragment to be evaled but
+    not shown]])
+_LT_DECL([], [hardcode_into_libs], [0],
+    [Whether we should hardcode library paths into libraries])
+_LT_DECL([], [sys_lib_search_path_spec], [2],
+    [Compile-time system search path for libraries])
+_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
+    [Run-time system search path for libraries])
+])# _LT_SYS_DYNAMIC_LINKER
+
+
+# _LT_PATH_TOOL_PREFIX(TOOL)
+# --------------------------
+# find a file program which can recognize shared library
+AC_DEFUN([_LT_PATH_TOOL_PREFIX],
+[m4_require([_LT_DECL_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] |  ?:[\\/]*])
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word.  This closes a longstanding sh security hole.
+  ac_dummy="m4_if([$2], , $PATH, [$2])"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$1; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  AC_MSG_RESULT($MAGIC_CMD)
+else
+  AC_MSG_RESULT(no)
+fi
+_LT_DECL([], [MAGIC_CMD], [0],
+	 [Used to examine libraries when file_magic_cmd begins with "file"])dnl
+])# _LT_PATH_TOOL_PREFIX
+
+# Old name:
+AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
+
+
+# _LT_PATH_MAGIC
+# --------------
+# find a file program which can recognize a shared library
+m4_defun([_LT_PATH_MAGIC],
+[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+  else
+    MAGIC_CMD=:
+  fi
+fi
+])# _LT_PATH_MAGIC
+
+
+# LT_PATH_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([LT_PATH_LD],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
+
+AC_ARG_WITH([gnu-ld],
+    [AS_HELP_STRING([--with-gnu-ld],
+	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
+    [test "$withval" = no || with_gnu_ld=yes],
+    [with_gnu_ld=no])dnl
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by $CC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]]* | ?:[[\\/]]*)
+      re_direlt='/[[^/]][[^/]]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+_LT_PATH_LD_GNU
+AC_SUBST([LD])
+
+_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+])# LT_PATH_LD
+
+# Old names:
+AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
+AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_LD], [])
+dnl AC_DEFUN([AC_PROG_LD], [])
+
+
+# _LT_PATH_LD_GNU
+#- --------------
+m4_defun([_LT_PATH_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# _LT_PATH_LD_GNU
+
+
+# _LT_CMD_RELOAD
+# --------------
+# find reload flag for linker
+#   -- PORTME Some linkers may need a different reload flag.
+m4_defun([_LT_CMD_RELOAD],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+  lt_cv_ld_reload_flag,
+  [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    if test "$GCC" != yes; then
+      reload_cmds=false
+    fi
+    ;;
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
+_LT_TAGDECL([], [reload_cmds], [2])dnl
+])# _LT_CMD_RELOAD
+
+
+# _LT_CHECK_MAGIC_METHOD
+# ----------------------
+# how to check for library dependencies
+#  -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_MAGIC_METHOD],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+AC_CACHE_CHECK([how to recognize dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[[4-9]]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[[45]]*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    # Keep this pattern in sync with the one in func_win32_libid.
+    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
+
+cegcc*)
+  # use the weaker test based on 'objdump'. See mingw*.
+  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | dragonfly*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+haiku*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]']
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+interix[[3-9]]*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd* | netbsdelf*-gnu)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+*nto* | *qnx*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+tpf*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+])
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+  case $host_os in
+  mingw* | pw32*)
+    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+      want_nocaseglob=yes
+    else
+      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
+    fi
+    ;;
+  esac
+fi
+
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+_LT_DECL([], [deplibs_check_method], [1],
+    [Method to check whether dependent libraries are shared objects])
+_LT_DECL([], [file_magic_cmd], [1],
+    [Command to use when deplibs_check_method = "file_magic"])
+_LT_DECL([], [file_magic_glob], [1],
+    [How to find potential files when deplibs_check_method = "file_magic"])
+_LT_DECL([], [want_nocaseglob], [1],
+    [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
+])# _LT_CHECK_MAGIC_METHOD
+
+
+# LT_PATH_NM
+# ----------
+# find the pathname to a BSD- or MS-compatible name lister
+AC_DEFUN([LT_PATH_NM],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
+[if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+	# Check to see if the nm accepts a BSD-compat flag.
+	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
+	#   nm: unknown option "B" ignored
+	# Tru64's nm complains that /dev/null is an invalid object file
+	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+	*/dev/null* | *'Invalid file or object type'*)
+	  lt_cv_path_NM="$tmp_nm -B"
+	  break
+	  ;;
+	*)
+	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	  */dev/null*)
+	    lt_cv_path_NM="$tmp_nm -p"
+	    break
+	    ;;
+	  *)
+	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	    continue # so that we can try to find one that supports BSD flags
+	    ;;
+	  esac
+	  ;;
+	esac
+      fi
+    done
+    IFS="$lt_save_ifs"
+  done
+  : ${lt_cv_path_NM=no}
+fi])
+if test "$lt_cv_path_NM" != "no"; then
+  NM="$lt_cv_path_NM"
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
+  AC_SUBST([DUMPBIN])
+  if test "$DUMPBIN" != ":"; then
+    NM="$DUMPBIN"
+  fi
+fi
+test -z "$NM" && NM=nm
+AC_SUBST([NM])
+_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
+
+AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
+  [lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
+  cat conftest.out >&AS_MESSAGE_LOG_FD
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*])
+])# LT_PATH_NM
+
+# Old names:
+AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
+AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_NM], [])
+dnl AC_DEFUN([AC_PROG_NM], [])
+
+# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+# --------------------------------
+# how to determine the name of the shared library
+# associated with a specific link library.
+#  -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+m4_require([_LT_DECL_DLLTOOL])
+AC_CACHE_CHECK([how to associate runtime and link libraries],
+lt_cv_sharedlib_from_linklib_cmd,
+[lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+  # two different shell functions defined in ltmain.sh
+  # decide which to use based on capabilities of $DLLTOOL
+  case `$DLLTOOL --help 2>&1` in
+  *--identify-strict*)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+    ;;
+  *)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+    ;;
+  esac
+  ;;
+*)
+  # fallback: assume linklib IS sharedlib
+  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+  ;;
+esac
+])
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
+    [Command to associate shared and link libraries])
+])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+
+
+# _LT_PATH_MANIFEST_TOOL
+# ----------------------
+# locate the manifest tool
+m4_defun([_LT_PATH_MANIFEST_TOOL],
+[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
+  [lt_cv_path_mainfest_tool=no
+  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
+  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+    lt_cv_path_mainfest_tool=yes
+  fi
+  rm -f conftest*])
+if test "x$lt_cv_path_mainfest_tool" != xyes; then
+  MANIFEST_TOOL=:
+fi
+_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
+])# _LT_PATH_MANIFEST_TOOL
+
+
+# LT_LIB_M
+# --------
+# check for math library
+AC_DEFUN([LT_LIB_M],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
+  # These system don't have libm, or don't need it
+  ;;
+*-ncr-sysv4.3*)
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+  ;;
+*)
+  AC_CHECK_LIB(m, cos, LIBM="-lm")
+  ;;
+esac
+AC_SUBST([LIBM])
+])# LT_LIB_M
+
+# Old name:
+AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_CHECK_LIBM], [])
+
+
+# _LT_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------
+m4_defun([_LT_COMPILER_NO_RTTI],
+[m4_require([_LT_TAG_COMPILER])dnl
+
+_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+  case $cc_basename in
+  nvcc*)
+    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
+  *)
+    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
+  esac
+
+  _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+    lt_cv_prog_compiler_rtti_exceptions,
+    [-fno-rtti -fno-exceptions], [],
+    [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
+	[Compiler flag to turn off builtin functions])
+])# _LT_COMPILER_NO_RTTI
+
+
+# _LT_CMD_GLOBAL_SYMBOLS
+# ----------------------
+m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[[BCDT]]'
+  ;;
+cygwin* | mingw* | pw32* | cegcc*)
+  symcode='[[ABCDGISTW]]'
+  ;;
+hpux*)
+  if test "$host_cpu" = ia64; then
+    symcode='[[ABCDEGRST]]'
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[[BCDEGRST]]'
+  ;;
+osf*)
+  symcode='[[BCDEGQRST]]'
+  ;;
+solaris*)
+  symcode='[[BDRT]]'
+  ;;
+sco3.2v5*)
+  symcode='[[DT]]'
+  ;;
+sysv4.2uw2*)
+  symcode='[[DT]]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[[ABDT]]'
+  ;;
+sysv4)
+  symcode='[[DFNSTU]]'
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+    # Fake it for dumpbin and say T for any non-static function
+    # and D for any global variable.
+    # Also find C++ and __fastcall symbols from MSVC++,
+    # which start with @ or ?.
+    lt_cv_sys_global_symbol_pipe="$AWK ['"\
+"     {last_section=section; section=\$ 3};"\
+"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     \$ 0!~/External *\|/{next};"\
+"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+"     {if(hide[section]) next};"\
+"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+"     ' prfx=^$ac_symprfx]"
+  else
+    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+  fi
+  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+  if AC_TRY_EVAL(ac_compile); then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT@&t@_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data.  */
+# define LT@&t@_DLSYM_CONST
+#else
+# define LT@&t@_DLSYM_CONST const
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+	  cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols.  */
+LT@&t@_DLSYM_CONST struct {
+  const char *name;
+  void       *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[[]] =
+{
+  { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+	  cat <<\_LT_EOF >> conftest.$ac_ext
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  lt_globsym_save_LIBS=$LIBS
+	  lt_globsym_save_CFLAGS=$CFLAGS
+	  LIBS="conftstm.$ac_objext"
+	  CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+	    pipe_works=yes
+	  fi
+	  LIBS=$lt_globsym_save_LIBS
+	  CFLAGS=$lt_globsym_save_CFLAGS
+	else
+	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+    fi
+  else
+    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+    cat conftest.$ac_ext >&5
+  fi
+  rm -rf conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  AC_MSG_RESULT(failed)
+else
+  AC_MSG_RESULT(ok)
+fi
+
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
+  nm_file_list_spec='@'
+fi
+
+_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
+    [Take the output of nm and produce a listing of raw symbols and C names])
+_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
+    [Transform the output of nm in a proper C declaration])
+_LT_DECL([global_symbol_to_c_name_address],
+    [lt_cv_sys_global_symbol_to_c_name_address], [1],
+    [Transform the output of nm in a C name address pair])
+_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
+    [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
+    [Transform the output of nm in a C name address pair when lib prefix is needed])
+_LT_DECL([], [nm_file_list_spec], [1],
+    [Specify filename containing input files for $NM])
+]) # _LT_CMD_GLOBAL_SYMBOLS
+
+
+# _LT_COMPILER_PIC([TAGNAME])
+# ---------------------------
+m4_defun([_LT_COMPILER_PIC],
+[m4_require([_LT_TAG_COMPILER])dnl
+_LT_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_TAGVAR(lt_prog_compiler_static, $1)=
+
+m4_if([$1], [CXX], [
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | cygwin* | os2* | pw32* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      m4_if([$1], [GCJ], [],
+	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+      ;;
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)=
+      ;;
+    interix[[3-9]]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+	;;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	;;
+      esac
+      ;;
+    *qnx* | *nto*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+    *)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix[[4-9]]*)
+	# All AIX code is PIC.
+	if test "$host_cpu" = ia64; then
+	  # AIX 5 now supports IA64 processor
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	else
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68*)
+	  # Green Hills C++ Compiler
+	  # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+	  ;;
+	esac
+	;;
+      mingw* | cygwin* | os2* | pw32* | cegcc*)
+	# This hack is so that the source file can tell whether it is being
+	# built for inclusion in a dll (and should export symbols for example).
+	m4_if([$1], [GCJ], [],
+	  [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+	;;
+      dgux*)
+	case $cc_basename in
+	  ec++*)
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    ;;
+	  ghcx*)
+	    # Green Hills C++ Compiler
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      freebsd* | dragonfly*)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
+	case $cc_basename in
+	  CC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+	    if test "$host_cpu" != ia64; then
+	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	    fi
+	    ;;
+	  aCC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+	    case $host_cpu in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	      ;;
+	    esac
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      interix*)
+	# This is c89, which is MS Visual C++ (no shared libs)
+	# Anyone wants to do a port?
+	;;
+      irix5* | irix6* | nonstopux*)
+	case $cc_basename in
+	  CC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    # CC pic flag -KPIC is the default.
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+	case $cc_basename in
+	  KCC*)
+	    # KAI C++ Compiler
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	    ;;
+	  ecpc* )
+	    # old Intel C++ for x86_64 which still supported -KPIC.
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	    ;;
+	  icpc* )
+	    # Intel C++, used to be incompatible with GCC.
+	    # ICC 10 doesn't accept -KPIC any more.
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	    ;;
+	  pgCC* | pgcpp*)
+	    # Portland Group C++ compiler
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	  cxx*)
+	    # Compaq C++
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    ;;
+	  xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
+	    # IBM XL 8.0, 9.0 on PPC and BlueGene
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx*)
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      netbsd* | netbsdelf*-gnu)
+	;;
+      *qnx* | *nto*)
+        # QNX uses GNU C++, but need to define -shared option too, otherwise
+        # it will coredump.
+        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+        ;;
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+	    ;;
+	  RCC*)
+	    # Rational C++ 2.4.1
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  cxx*)
+	    # Digital/Compaq C++
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      psos*)
+	;;
+      solaris*)
+	case $cc_basename in
+	  CC* | sunCC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	    ;;
+	  gcx*)
+	    # Green Hills C++ Compiler
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.x
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	  lcc*)
+	    # Lucid
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+	case $cc_basename in
+	  CC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC*)
+	    # NonStop-UX NCC 3.20
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      vxworks*)
+	;;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+	;;
+    esac
+  fi
+],
+[
+  if test "$GCC" = yes; then
+    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      m4_if([$1], [GCJ], [],
+	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)=
+      ;;
+
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+	# +Z the default
+	;;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	;;
+      esac
+      ;;
+
+    interix[[3-9]]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      enable_shared=no
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+
+    *)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+
+    case $cc_basename in
+    nvcc*) # Cuda Compiler Driver 2.2
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      else
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      m4_if([$1], [GCJ], [],
+	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC (with -KPIC) is the default.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      case $cc_basename in
+      # old Intel for x86_64 which still supported -KPIC.
+      ecc*)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      # icc used to be incompatible with GCC.
+      # ICC 10 doesn't accept -KPIC any more.
+      icc* | ifort*)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      # Lahey Fortran 8.1.
+      lf95*)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
+	;;
+      nagfor*)
+	# NAG Fortran compiler
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	;;
+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+        ;;
+      ccc*)
+        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+        # All Alpha code is PIC.
+        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+        ;;
+      xl* | bgxl* | bgf* | mpixl*)
+	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+	;;
+      *)
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ F* | *Sun*Fortran*)
+	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
+	  ;;
+	*Sun\ C*)
+	  # Sun C 5.9
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	  ;;
+	esac
+	;;
+      esac
+      ;;
+
+    newsos6)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # All OSF/1 code is PIC.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    rdos*)
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    solaris*)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    unicos*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+
+    uts4*)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *)
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+    esac
+  fi
+])
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+    ;;
+  *)
+    _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
+    ;;
+esac
+
+AC_CACHE_CHECK([for $compiler option to produce PIC],
+  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
+  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+  _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
+    [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
+    [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
+    [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
+     "" | " "*) ;;
+     *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+     esac],
+    [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+     _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
+	[Additional compiler flags for building library objects])
+
+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+	[How to pass a linker flag through the compiler])
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
+_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+  _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
+  $lt_tmp_static_flag,
+  [],
+  [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
+_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
+	[Compiler flag to prevent dynamic linking])
+])# _LT_COMPILER_PIC
+
+
+# _LT_LINKER_SHLIBS([TAGNAME])
+# ----------------------------
+# See if the linker supports building shared libraries.
+m4_defun([_LT_LINKER_SHLIBS],
+[AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+m4_if([$1], [CXX], [
+  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+  case $host_os in
+  aix[[4-9]]*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    # Also, AIX nm treats weak defined symbols like other global defined
+    # symbols, whereas GNU nm marks them as "W".
+    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    else
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+    ;;
+  cygwin* | mingw* | cegcc*)
+    case $cc_basename in
+    cl*) ;;
+    *)
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+      ;;
+    esac
+    ;;
+  linux* | k*bsd*-gnu | gnu*)
+    _LT_TAGVAR(link_all_deplibs, $1)=no
+    ;;
+  *)
+    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+    ;;
+  esac
+], [
+  runpath_var=
+  _LT_TAGVAR(allow_undefined_flag, $1)=
+  _LT_TAGVAR(always_export_symbols, $1)=no
+  _LT_TAGVAR(archive_cmds, $1)=
+  _LT_TAGVAR(archive_expsym_cmds, $1)=
+  _LT_TAGVAR(compiler_needs_object, $1)=no
+  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  _LT_TAGVAR(hardcode_automatic, $1)=no
+  _LT_TAGVAR(hardcode_direct, $1)=no
+  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
+  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+  _LT_TAGVAR(hardcode_libdir_separator, $1)=
+  _LT_TAGVAR(hardcode_minus_L, $1)=no
+  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  _LT_TAGVAR(inherit_rpath, $1)=no
+  _LT_TAGVAR(link_all_deplibs, $1)=unknown
+  _LT_TAGVAR(module_cmds, $1)=
+  _LT_TAGVAR(module_expsym_cmds, $1)=
+  _LT_TAGVAR(old_archive_from_new_cmds, $1)=
+  _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+  _LT_TAGVAR(thread_safe_flag_spec, $1)=
+  _LT_TAGVAR(whole_archive_flag_spec, $1)=
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  _LT_TAGVAR(include_expsyms, $1)=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+dnl Note also adjust exclude_expsyms for C++ above.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  linux* | k*bsd*-gnu | gnu*)
+    _LT_TAGVAR(link_all_deplibs, $1)=no
+    ;;
+  esac
+
+  _LT_TAGVAR(ld_shlibs, $1)=yes
+
+  # On some targets, GNU ld is compatible enough with the native linker
+  # that we're better off using the native interface for both.
+  lt_use_gnu_ld_interface=no
+  if test "$with_gnu_ld" = yes; then
+    case $host_os in
+      aix*)
+	# The AIX port of GNU ld has always aspired to compatibility
+	# with the native linker.  However, as the warning in the GNU ld
+	# block says, versions before 2.19.5* couldn't really create working
+	# shared libraries, regardless of the interface used.
+	case `$LD -v 2>&1` in
+	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+	  *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
+	  *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
+	  *)
+	    lt_use_gnu_ld_interface=yes
+	    ;;
+	esac
+	;;
+      *)
+	lt_use_gnu_ld_interface=yes
+	;;
+    esac
+  fi
+
+  if test "$lt_use_gnu_ld_interface" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+      _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      _LT_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>&1` in
+      *GNU\ gold*) supports_anon_versioning=yes ;;
+      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix[[3-9]]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	_LT_TAGVAR(ld_shlibs, $1)=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_expsym_cmds, $1)=''
+        ;;
+      m68k)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes
+        ;;
+      esac
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	_LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+      # as there is no search path for DLLs.
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(always_export_symbols, $1)=no
+      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+
+      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    haiku*)
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    interix[[3-9]]*)
+      _LT_TAGVAR(hardcode_direct, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+      tmp_diet=no
+      if test "$host_os" = linux-dietlibc; then
+	case $cc_basename in
+	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
+	esac
+      fi
+      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+	 && test "$tmp_diet" = no
+      then
+	tmp_addflag=' $pic_flag'
+	tmp_sharedflag='-shared'
+	case $cc_basename,$host_cpu in
+        pgcc*)				# Portland Group C compiler
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* | pgf95* | pgfortran*)
+					# Portland Group f77 and f90 compilers
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	lf95*)				# Lahey Fortran 8.1
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)=
+	  tmp_sharedflag='--shared' ;;
+	xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+	  tmp_sharedflag='-qmkshrobj'
+	  tmp_addflag= ;;
+	nvcc*)	# Cuda Compiler Driver 2.2
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  _LT_TAGVAR(compiler_needs_object, $1)=yes
+	  ;;
+	esac
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)			# Sun C 5.9
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  _LT_TAGVAR(compiler_needs_object, $1)=yes
+	  tmp_sharedflag='-G' ;;
+	*Sun\ F*)			# Sun Fortran 8.3
+	  tmp_sharedflag='-G' ;;
+	esac
+	_LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+        if test "x$supports_anon_versioning" = xyes; then
+          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+	    echo "local: *; };" >> $output_objdir/$libname.ver~
+	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+        fi
+
+	case $cc_basename in
+	xlf* | bgf* | bgxlf* | mpixlf*)
+	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+	  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+	  if test "x$supports_anon_versioning" = xyes; then
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+	      echo "local: *; };" >> $output_objdir/$libname.ver~
+	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+	  fi
+	  ;;
+	esac
+      else
+        _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+	_LT_TAGVAR(ld_shlibs, $1)=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+	_LT_TAGVAR(ld_shlibs, $1)=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+	;;
+	*)
+	  # For security reasons, it is highly recommended that you always
+	  # use absolute paths for naming shared libraries, and exclude the
+	  # DT_RUNPATH tag from executables and libraries.  But doing so
+	  # requires that you compile everything twice, which is a pain.
+	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	  else
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	  fi
+	;;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+    esac
+
+    if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
+      runpath_var=
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+      _LT_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(always_export_symbols, $1)=yes
+      _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	_LT_TAGVAR(hardcode_direct, $1)=unsupported
+      fi
+      ;;
+
+    aix[[4-9]]*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	# Also, AIX nm treats weak defined symbols like other global
+	# defined symbols, whereas GNU nm marks them as "W".
+	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	else
+	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+	  for ld_flag in $LDFLAGS; do
+	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+	    aix_use_runtimelinking=yes
+	    break
+	  fi
+	  done
+	  ;;
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      _LT_TAGVAR(archive_cmds, $1)=''
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[[012]]|aix4.[[012]].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" &&
+	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+	  then
+	  # We have reworked collect2
+	  :
+	  else
+	  # We have old collect2
+	  _LT_TAGVAR(hardcode_direct, $1)=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	  _LT_TAGVAR(hardcode_libdir_separator, $1)=
+	  fi
+	  ;;
+	esac
+	shared_flag='-shared'
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag="$shared_flag "'${wl}-G'
+	fi
+	_LT_TAGVAR(link_all_deplibs, $1)=no
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+	  if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+	  fi
+	fi
+      fi
+
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      _LT_TAGVAR(always_export_symbols, $1)=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        _LT_SYS_MODULE_PATH_AIX([$1])
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+      else
+	if test "$host_cpu" = ia64; then
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+	  _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an
+	 # empty executable.
+	 _LT_SYS_MODULE_PATH_AIX([$1])
+	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+	  _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+	  if test "$with_gnu_ld" = yes; then
+	    # We only use this code for GNU lds that support --whole-archive.
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	  else
+	    # Exported symbols can be pulled into shared objects from archives
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	  fi
+	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+	  # This is similar to how AIX traditionally builds its shared libraries.
+	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_expsym_cmds, $1)=''
+        ;;
+      m68k)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes
+        ;;
+      esac
+      ;;
+
+    bsdi[[45]]*)
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      case $cc_basename in
+      cl*)
+	# Native MSVC
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	_LT_TAGVAR(always_export_symbols, $1)=yes
+	_LT_TAGVAR(file_list_spec, $1)='@'
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=".dll"
+	# FIXME: Setting linknames here is a bad hack.
+	_LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+	  else
+	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+	  fi~
+	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+	  linknames='
+	# The linker will not automatically build a static lib if we build a DLL.
+	# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+	# Don't use ranlib
+	_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+	_LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+	  lt_tool_outputfile="@TOOL_OUTPUT@"~
+	  case $lt_outputfile in
+	    *.exe|*.EXE) ;;
+	    *)
+	      lt_outputfile="$lt_outputfile.exe"
+	      lt_tool_outputfile="$lt_tool_outputfile.exe"
+	      ;;
+	  esac~
+	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+	    $RM "$lt_outputfile.manifest";
+	  fi'
+	;;
+      *)
+	# Assume MSVC wrapper
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=".dll"
+	# FIXME: Setting linknames here is a bad hack.
+	_LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+	# The linker will automatically build a .lib file if we build a DLL.
+	_LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+	# FIXME: Should let the user specify the lib program.
+	_LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	;;
+      esac
+      ;;
+
+    darwin* | rhapsody*)
+      _LT_DARWIN_LINKER_FEATURES($1)
+      ;;
+
+    dgux*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    freebsd1*)
+      _LT_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
+	_LT_TAGVAR(hardcode_direct, $1)=yes
+	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	_LT_TAGVAR(hardcode_minus_L, $1)=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+	case $host_cpu in
+	hppa*64*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case $host_cpu in
+	hppa*64*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	m4_if($1, [], [
+	  # Older versions of the 11.00 compiler do not understand -b yet
+	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+	  _LT_LINKER_OPTION([if $CC understands -b],
+	    _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
+	    [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
+	    [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
+	  [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  _LT_TAGVAR(hardcode_direct, $1)=no
+	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	  ;;
+	*)
+	  _LT_TAGVAR(hardcode_direct, $1)=yes
+	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	# Try to use the -exported_symbol ld option, if it does not
+	# work, assume that -exports_file does not work either and
+	# implicitly export all symbols.
+	# This should be the same for all languages, so no per-tag cache variable.
+	AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
+	  [lt_cv_irix_exported_symbol],
+	  [save_LDFLAGS="$LDFLAGS"
+	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+	   AC_LINK_IFELSE(
+	     [AC_LANG_SOURCE(
+	        [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
+			      [C++], [[int foo (void) { return 0; }]],
+			      [Fortran 77], [[
+      subroutine foo
+      end]],
+			      [Fortran], [[
+      subroutine foo
+      end]])])],
+	      [lt_cv_irix_exported_symbol=yes],
+	      [lt_cv_irix_exported_symbol=no])
+           LDFLAGS="$save_LDFLAGS"])
+	if test "$lt_cv_irix_exported_symbol" = yes; then
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+	fi
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(inherit_rpath, $1)=yes
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    newsos6)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *nto* | *qnx*)
+      ;;
+
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+	_LT_TAGVAR(hardcode_direct, $1)=yes
+	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+	else
+	  case $host_os in
+	   openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+	     _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	     ;;
+	   *)
+	     _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	     ;;
+	  esac
+	fi
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    os2*)
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      else
+	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    solaris*)
+      _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+      else
+	case `$CC -V 2>&1` in
+	*"Compilers 5.0"*)
+	  wlarc=''
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+	  ;;
+	*)
+	  wlarc='${wl}'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+	  ;;
+	esac
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      case $host_os in
+      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+      *)
+	# The compiler driver will combine and reorder linker options,
+	# but understands `-z linker_flag'.  GCC discards it without `$wl',
+	# but is careful enough not to reorder.
+	# Supported since Solaris 2.6 (maybe 2.5.1?)
+	if test "$GCC" = yes; then
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+	else
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+	fi
+	;;
+      esac
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+	  _LT_TAGVAR(hardcode_direct, $1)=no
+        ;;
+	motorola)
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4.3*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	_LT_TAGVAR(ld_shlibs, $1)=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      _LT_TAGVAR(ld_shlibs, $1)=no
+      ;;
+    esac
+
+    if test x$host_vendor = xsni; then
+      case $host in
+      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
+	;;
+      esac
+    fi
+  fi
+])
+AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
+
+_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
+_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
+_LT_DECL([], [extract_expsyms_cmds], [2],
+    [The commands to extract the exported symbol list from a shared archive])
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+  # Assume -lc should be added
+  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $_LT_TAGVAR(archive_cmds, $1) in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      AC_CACHE_CHECK([whether -lc should be explicitly linked in],
+	[lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
+	[$RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+	if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
+	  pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
+	  _LT_TAGVAR(allow_undefined_flag, $1)=
+	  if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
+	  then
+	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+	  else
+	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+	  fi
+	  _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+	])
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
+    [Whether or not to add -lc for building shared libraries])
+_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
+    [enable_shared_with_static_runtimes], [0],
+    [Whether or not to disallow shared libs when runtime libs are static])
+_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
+    [Compiler flag to allow reflexive dlopens])
+_LT_TAGDECL([], [whole_archive_flag_spec], [1],
+    [Compiler flag to generate shared objects directly from archives])
+_LT_TAGDECL([], [compiler_needs_object], [1],
+    [Whether the compiler copes with passing no objects directly])
+_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
+    [Create an old-style archive from a shared archive])
+_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
+    [Create a temporary old-style archive to link instead of a shared archive])
+_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
+_LT_TAGDECL([], [archive_expsym_cmds], [2])
+_LT_TAGDECL([], [module_cmds], [2],
+    [Commands used to build a loadable module if different from building
+    a shared archive.])
+_LT_TAGDECL([], [module_expsym_cmds], [2])
+_LT_TAGDECL([], [with_gnu_ld], [1],
+    [Whether we are building with GNU ld or not])
+_LT_TAGDECL([], [allow_undefined_flag], [1],
+    [Flag that allows shared libraries with undefined symbols to be built])
+_LT_TAGDECL([], [no_undefined_flag], [1],
+    [Flag that enforces no undefined symbols])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
+    [Flag to hardcode $libdir into a binary during linking.
+    This must work even if $libdir does not exist])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
+    [[If ld is used when linking, flag to hardcode $libdir into a binary
+    during linking.  This must work even if $libdir does not exist]])
+_LT_TAGDECL([], [hardcode_libdir_separator], [1],
+    [Whether we need a single "-rpath" flag with a separated argument])
+_LT_TAGDECL([], [hardcode_direct], [0],
+    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+    DIR into the resulting binary])
+_LT_TAGDECL([], [hardcode_direct_absolute], [0],
+    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+    DIR into the resulting binary and the resulting library dependency is
+    "absolute", i.e impossible to change by setting ${shlibpath_var} if the
+    library is relocated])
+_LT_TAGDECL([], [hardcode_minus_L], [0],
+    [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+    into the resulting binary])
+_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
+    [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+    into the resulting binary])
+_LT_TAGDECL([], [hardcode_automatic], [0],
+    [Set to "yes" if building a shared library automatically hardcodes DIR
+    into the library and all subsequent libraries and executables linked
+    against it])
+_LT_TAGDECL([], [inherit_rpath], [0],
+    [Set to yes if linker adds runtime paths of dependent libraries
+    to runtime path list])
+_LT_TAGDECL([], [link_all_deplibs], [0],
+    [Whether libtool must link a program against all its dependency libraries])
+_LT_TAGDECL([], [always_export_symbols], [0],
+    [Set to "yes" if exported symbols are required])
+_LT_TAGDECL([], [export_symbols_cmds], [2],
+    [The commands to list exported symbols])
+_LT_TAGDECL([], [exclude_expsyms], [1],
+    [Symbols that should not be listed in the preloaded symbols])
+_LT_TAGDECL([], [include_expsyms], [1],
+    [Symbols that must always be exported])
+_LT_TAGDECL([], [prelink_cmds], [2],
+    [Commands necessary for linking programs (against libraries) with templates])
+_LT_TAGDECL([], [postlink_cmds], [2],
+    [Commands necessary for finishing linking programs])
+_LT_TAGDECL([], [file_list_spec], [1],
+    [Specify filename containing input files])
+dnl FIXME: Not yet implemented
+dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
+dnl    [Compiler flag to generate thread safe objects])
+])# _LT_LINKER_SHLIBS
+
+
+# _LT_LANG_C_CONFIG([TAG])
+# ------------------------
+# Ensure that the configuration variables for a C compiler are suitably
+# defined.  These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_C_CONFIG],
+[m4_require([_LT_DECL_EGREP])dnl
+lt_save_CC="$CC"
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+_LT_TAG_COMPILER
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_SYS_DYNAMIC_LINKER($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+  LT_SYS_DLOPEN_SELF
+  _LT_CMD_STRIPLIB
+
+  # Report which library types will actually be built
+  AC_MSG_CHECKING([if libtool supports shared libraries])
+  AC_MSG_RESULT([$can_build_shared])
+
+  AC_MSG_CHECKING([whether to build shared libraries])
+  test "$can_build_shared" = "no" && enable_shared=no
+
+  # On AIX, shared libraries and static libraries use the same namespace, and
+  # are all built from PIC.
+  case $host_os in
+  aix3*)
+    test "$enable_shared" = yes && enable_static=no
+    if test -n "$RANLIB"; then
+      archive_cmds="$archive_cmds~\$RANLIB \$lib"
+      postinstall_cmds='$RANLIB $lib'
+    fi
+    ;;
+
+  aix[[4-9]]*)
+    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+      test "$enable_shared" = yes && enable_static=no
+    fi
+    ;;
+  esac
+  AC_MSG_RESULT([$enable_shared])
+
+  AC_MSG_CHECKING([whether to build static libraries])
+  # Make sure either enable_shared or enable_static is yes.
+  test "$enable_shared" = yes || enable_static=yes
+  AC_MSG_RESULT([$enable_static])
+
+  _LT_CONFIG($1)
+fi
+AC_LANG_POP
+CC="$lt_save_CC"
+])# _LT_LANG_C_CONFIG
+
+
+# _LT_LANG_CXX_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a C++ compiler are suitably
+# defined.  These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_CXX_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  AC_PROG_CXXCPP
+else
+  _lt_caught_CXX_error=yes
+fi
+
+AC_LANG_PUSH(C++)
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(compiler_needs_object, $1)=no
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_caught_CXX_error" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="int some_variable = 0;"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC=$CC
+  lt_save_CFLAGS=$CFLAGS
+  lt_save_LD=$LD
+  lt_save_GCC=$GCC
+  GCC=$GXX
+  lt_save_with_gnu_ld=$with_gnu_ld
+  lt_save_path_LD=$lt_cv_path_LD
+  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+  else
+    $as_unset lt_cv_prog_gnu_ld
+  fi
+  if test -n "${lt_cv_path_LDCXX+set}"; then
+    lt_cv_path_LD=$lt_cv_path_LDCXX
+  else
+    $as_unset lt_cv_path_LD
+  fi
+  test -z "${LDCXX+set}" || LD=$LDCXX
+  CC=${CXX-"c++"}
+  CFLAGS=$CXXFLAGS
+  compiler=$CC
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+
+  if test -n "$compiler"; then
+    # We don't want -fno-exception when compiling C++ code, so set the
+    # no_builtin_flag separately
+    if test "$GXX" = yes; then
+      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+    else
+      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+    fi
+
+    if test "$GXX" = yes; then
+      # Set up default GNU C++ configuration
+
+      LT_PATH_LD
+
+      # Check if GNU C++ uses GNU ld as the underlying linker, since the
+      # archiving commands below assume that GNU ld is being used.
+      if test "$with_gnu_ld" = yes; then
+        _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+        # If archive_cmds runs LD, not CC, wlarc should be empty
+        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+        #     investigate it a little bit more. (MM)
+        wlarc='${wl}'
+
+        # ancient GNU ld didn't support --whole-archive et. al.
+        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+	  $GREP 'no-whole-archive' > /dev/null; then
+          _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+        else
+          _LT_TAGVAR(whole_archive_flag_spec, $1)=
+        fi
+      else
+        with_gnu_ld=no
+        wlarc=
+
+        # A generic and very simple default shared library creation
+        # command for GNU C++ for the case where it uses the native
+        # linker, instead of GNU ld.  If possible, this setting should
+        # overridden to take advantage of the native linker features on
+        # the platform it is being used on.
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+      fi
+
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+    else
+      GXX=no
+      with_gnu_ld=no
+      wlarc=
+    fi
+
+    # PORTME: fill in a description of your system's C++ link characteristics
+    AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+    _LT_TAGVAR(ld_shlibs, $1)=yes
+    case $host_os in
+      aix3*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+      aix[[4-9]]*)
+        if test "$host_cpu" = ia64; then
+          # On IA64, the linker does run time linking by default, so we don't
+          # have to do anything special.
+          aix_use_runtimelinking=no
+          exp_sym_flag='-Bexport'
+          no_entry_flag=""
+        else
+          aix_use_runtimelinking=no
+
+          # Test if we are trying to use run time linking or normal
+          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+          # need to do runtime linking.
+          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+	    for ld_flag in $LDFLAGS; do
+	      case $ld_flag in
+	      *-brtl*)
+	        aix_use_runtimelinking=yes
+	        break
+	        ;;
+	      esac
+	    done
+	    ;;
+          esac
+
+          exp_sym_flag='-bexport'
+          no_entry_flag='-bnoentry'
+        fi
+
+        # When large executables or shared objects are built, AIX ld can
+        # have problems creating the table of contents.  If linking a library
+        # or program results in "error TOC overflow" add -mminimal-toc to
+        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+        _LT_TAGVAR(archive_cmds, $1)=''
+        _LT_TAGVAR(hardcode_direct, $1)=yes
+        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+        _LT_TAGVAR(link_all_deplibs, $1)=yes
+        _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+        if test "$GXX" = yes; then
+          case $host_os in aix4.[[012]]|aix4.[[012]].*)
+          # We only want to do this on AIX 4.2 and lower, the check
+          # below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" &&
+	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+	  then
+	    # We have reworked collect2
+	    :
+	  else
+	    # We have old collect2
+	    _LT_TAGVAR(hardcode_direct, $1)=unsupported
+	    # It fails to find uninstalled libraries when the uninstalled
+	    # path is not listed in the libpath.  Setting hardcode_minus_L
+	    # to unsupported forces relinking
+	    _LT_TAGVAR(hardcode_minus_L, $1)=yes
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	    _LT_TAGVAR(hardcode_libdir_separator, $1)=
+	  fi
+          esac
+          shared_flag='-shared'
+	  if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag="$shared_flag "'${wl}-G'
+	  fi
+        else
+          # not using gcc
+          if test "$host_cpu" = ia64; then
+	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	  # chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+          else
+	    if test "$aix_use_runtimelinking" = yes; then
+	      shared_flag='${wl}-G'
+	    else
+	      shared_flag='${wl}-bM:SRE'
+	    fi
+          fi
+        fi
+
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+        # It seems that -bexpall does not export symbols beginning with
+        # underscore (_), so it is better to generate a list of symbols to
+	# export.
+        _LT_TAGVAR(always_export_symbols, $1)=yes
+        if test "$aix_use_runtimelinking" = yes; then
+          # Warning - without using the other runtime loading flags (-brtl),
+          # -berok will link without error, but may produce a broken library.
+          _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+          # Determine the default libpath from the value encoded in an empty
+          # executable.
+          _LT_SYS_MODULE_PATH_AIX([$1])
+          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+        else
+          if test "$host_cpu" = ia64; then
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+	    _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+          else
+	    # Determine the default libpath from the value encoded in an
+	    # empty executable.
+	    _LT_SYS_MODULE_PATH_AIX([$1])
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	    # Warning - without using the other run time loading flags,
+	    # -berok will link without error, but may produce a broken library.
+	    _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+	    _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+	    if test "$with_gnu_ld" = yes; then
+	      # We only use this code for GNU lds that support --whole-archive.
+	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	    else
+	      # Exported symbols can be pulled into shared objects from archives
+	      _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	    fi
+	    _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+	    # This is similar to how AIX traditionally builds its shared
+	    # libraries.
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+          fi
+        fi
+        ;;
+
+      beos*)
+	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	  # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	  # support --undefined.  This deserves some investigation.  FIXME
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	else
+	  _LT_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+
+      chorus*)
+        case $cc_basename in
+          *)
+	  # FIXME: insert proper C++ library support
+	  _LT_TAGVAR(ld_shlibs, $1)=no
+	  ;;
+        esac
+        ;;
+
+      cygwin* | mingw* | pw32* | cegcc*)
+	case $GXX,$cc_basename in
+	,cl* | no,cl*)
+	  # Native MSVC
+	  # hardcode_libdir_flag_spec is actually meaningless, as there is
+	  # no search path for DLLs.
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	  _LT_TAGVAR(always_export_symbols, $1)=yes
+	  _LT_TAGVAR(file_list_spec, $1)='@'
+	  # Tell ltmain to make .lib files, not .a files.
+	  libext=lib
+	  # Tell ltmain to make .dll files, not .so files.
+	  shrext_cmds=".dll"
+	  # FIXME: Setting linknames here is a bad hack.
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	      $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+	    else
+	      $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+	    fi~
+	    $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+	    linknames='
+	  # The linker will not automatically build a static lib if we build a DLL.
+	  # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	  # Don't use ranlib
+	  _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+	  _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+	    lt_tool_outputfile="@TOOL_OUTPUT@"~
+	    case $lt_outputfile in
+	      *.exe|*.EXE) ;;
+	      *)
+		lt_outputfile="$lt_outputfile.exe"
+		lt_tool_outputfile="$lt_tool_outputfile.exe"
+		;;
+	    esac~
+	    func_to_tool_file "$lt_outputfile"~
+	    if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+	      $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+	      $RM "$lt_outputfile.manifest";
+	    fi'
+	  ;;
+	*)
+	  # g++
+	  # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+	  # as there is no search path for DLLs.
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	  _LT_TAGVAR(always_export_symbols, $1)=no
+	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	    # If the export-symbols file already is a .def file (1st line
+	    # is EXPORTS), use it as is; otherwise, prepend...
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	      cp $export_symbols $output_objdir/$soname.def;
+	    else
+	      echo EXPORTS > $output_objdir/$soname.def;
+	      cat $export_symbols >> $output_objdir/$soname.def;
+	    fi~
+	    $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	  else
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	  fi
+	  ;;
+	esac
+	;;
+      darwin* | rhapsody*)
+        _LT_DARWIN_LINKER_FEATURES($1)
+	;;
+
+      dgux*)
+        case $cc_basename in
+          ec++*)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          ghcx*)
+	    # Green Hills C++ Compiler
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+        esac
+        ;;
+
+      freebsd[[12]]*)
+        # C++ shared libraries reported to be fairly broken before
+	# switch to ELF
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      freebsd-elf*)
+        _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+        ;;
+
+      freebsd* | dragonfly*)
+        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+        # conventions
+        _LT_TAGVAR(ld_shlibs, $1)=yes
+        ;;
+
+      gnu*)
+        ;;
+
+      haiku*)
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        _LT_TAGVAR(link_all_deplibs, $1)=yes
+        ;;
+
+      hpux9*)
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+        _LT_TAGVAR(hardcode_direct, $1)=yes
+        _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+				             # but as the default
+				             # location of the library.
+
+        case $cc_basename in
+          CC*)
+            # FIXME: insert proper C++ library support
+            _LT_TAGVAR(ld_shlibs, $1)=no
+            ;;
+          aCC*)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            # Commands to make compiler produce verbose output that lists
+            # what "hidden" libraries, object files and flags are used when
+            # linking a shared library.
+            #
+            # There doesn't appear to be a way to prevent this compiler from
+            # explicitly linking system object files so we need to strip them
+            # from the output so that they don't get included in the library
+            # dependencies.
+            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+            ;;
+          *)
+            if test "$GXX" = yes; then
+              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            else
+              # FIXME: insert proper C++ library support
+              _LT_TAGVAR(ld_shlibs, $1)=no
+            fi
+            ;;
+        esac
+        ;;
+
+      hpux10*|hpux11*)
+        if test $with_gnu_ld = no; then
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	  _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+          case $host_cpu in
+            hppa*64*|ia64*)
+              ;;
+            *)
+	      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+              ;;
+          esac
+        fi
+        case $host_cpu in
+          hppa*64*|ia64*)
+            _LT_TAGVAR(hardcode_direct, $1)=no
+            _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+            ;;
+          *)
+            _LT_TAGVAR(hardcode_direct, $1)=yes
+            _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+					         # but as the default
+					         # location of the library.
+            ;;
+        esac
+
+        case $cc_basename in
+          CC*)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          aCC*)
+	    case $host_cpu in
+	      hppa*64*)
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	      ia64*)
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	      *)
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	    esac
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    ;;
+          *)
+	    if test "$GXX" = yes; then
+	      if test $with_gnu_ld = no; then
+	        case $host_cpu in
+	          hppa*64*)
+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          ia64*)
+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          *)
+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	        esac
+	      fi
+	    else
+	      # FIXME: insert proper C++ library support
+	      _LT_TAGVAR(ld_shlibs, $1)=no
+	    fi
+	    ;;
+        esac
+        ;;
+
+      interix[[3-9]]*)
+	_LT_TAGVAR(hardcode_direct, $1)=no
+	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+	# Instead, shared libraries are loaded at an image base (0x10000000 by
+	# default) and relocated if they conflict, which is a slow very memory
+	# consuming and fragmenting process.  To avoid this, we pick a random,
+	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	;;
+      irix5* | irix6*)
+        case $cc_basename in
+          CC*)
+	    # SGI C++
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+	    # necessary to make sure instantiated templates are included
+	    # in the archive.
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+	    ;;
+          *)
+	    if test "$GXX" = yes; then
+	      if test "$with_gnu_ld" = no; then
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	      else
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
+	      fi
+	    fi
+	    _LT_TAGVAR(link_all_deplibs, $1)=yes
+	    ;;
+        esac
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+        _LT_TAGVAR(inherit_rpath, $1)=yes
+        ;;
+
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+        case $cc_basename in
+          KCC*)
+	    # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	    # KCC will only create a shared library if the output file
+	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
+	    # to its proper name (with version) after linking.
+	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+	    ;;
+	  icpc* | ecpc* )
+	    # Intel C++
+	    with_gnu_ld=yes
+	    # version 8.0 and above of icpc choke on multiply defined symbols
+	    # if we add $predep_objects and $postdep_objects, however 7.1 and
+	    # earlier do not add the objects themselves.
+	    case `$CC -V 2>&1` in
+	      *"Version 7."*)
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+		;;
+	      *)  # Version 8.0 or newer
+	        tmp_idyn=
+	        case $host_cpu in
+		  ia64*) tmp_idyn=' -i_dynamic';;
+		esac
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+		;;
+	    esac
+	    _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	    ;;
+          pgCC* | pgcpp*)
+            # Portland Group C++ compiler
+	    case `$CC -V` in
+	    *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
+	      _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+		compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+	      _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+		$RANLIB $oldlib'
+	      _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+	      ;;
+	    *) # Version 6 and above use weak symbols
+	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+	      ;;
+	    esac
+
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+            ;;
+	  cxx*)
+	    # Compaq C++
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+	    runpath_var=LD_RUN_PATH
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
+	    ;;
+	  xl* | mpixl* | bgxl*)
+	    # IBM XL 8.0 on PPC, with GNU ld
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	    if test "x$supports_anon_versioning" = xyes; then
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+		echo "local: *; };" >> $output_objdir/$libname.ver~
+		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	    fi
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+	      _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	      _LT_TAGVAR(compiler_needs_object, $1)=yes
+
+	      # Not sure whether something based on
+	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+	      # would be better.
+	      output_verbose_link_cmd='func_echo_all'
+
+	      # Archives containing C++ object files must be created using
+	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	      # necessary to make sure instantiated templates are included
+	      # in the archive.
+	      _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+
+      lynxos*)
+        # FIXME: insert proper C++ library support
+	_LT_TAGVAR(ld_shlibs, $1)=no
+	;;
+
+      m88k*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+	;;
+
+      mvs*)
+        case $cc_basename in
+          cxx*)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+	  *)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+	esac
+	;;
+
+      netbsd*)
+        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+	  wlarc=
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	  _LT_TAGVAR(hardcode_direct, $1)=yes
+	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	fi
+	# Workaround some broken pre-1.5 toolchains
+	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+	;;
+
+      *nto* | *qnx*)
+        _LT_TAGVAR(ld_shlibs, $1)=yes
+	;;
+
+      openbsd2*)
+        # C++ shared libraries are fairly broken
+	_LT_TAGVAR(ld_shlibs, $1)=no
+	;;
+
+      openbsd*)
+	if test -f /usr/libexec/ld.so; then
+	  _LT_TAGVAR(hardcode_direct, $1)=yes
+	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+	  fi
+	  output_verbose_link_cmd=func_echo_all
+	else
+	  _LT_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+
+      osf3* | osf4* | osf5*)
+        case $cc_basename in
+          KCC*)
+	    # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	    # KCC will only create a shared library if the output file
+	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
+	    # to its proper name (with version) after linking.
+	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	    # Archives containing C++ object files must be created using
+	    # the KAI C++ compiler.
+	    case $host in
+	      osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
+	      *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
+	    esac
+	    ;;
+          RCC*)
+	    # Rational C++ 2.4.1
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          cxx*)
+	    case $host in
+	      osf3*)
+	        _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+		;;
+	      *)
+	        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+	          echo "-hidden">> $lib.exp~
+	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
+	          $RM $lib.exp'
+	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+		;;
+	    esac
+
+	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    ;;
+	  *)
+	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	      _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	      case $host in
+	        osf3*)
+	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+		  ;;
+	        *)
+	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+		  ;;
+	      esac
+
+	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	      # Commands to make compiler produce verbose output that lists
+	      # what "hidden" libraries, object files and flags are used when
+	      # linking a shared library.
+	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+	    else
+	      # FIXME: insert proper C++ library support
+	      _LT_TAGVAR(ld_shlibs, $1)=no
+	    fi
+	    ;;
+        esac
+        ;;
+
+      psos*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      sunos4*)
+        case $cc_basename in
+          CC*)
+	    # Sun C++ 4.x
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          lcc*)
+	    # Lucid
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+        esac
+        ;;
+
+      solaris*)
+        case $cc_basename in
+          CC* | sunCC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+            _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
+	    _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	    _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	    case $host_os in
+	      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+	      *)
+		# The compiler driver will combine and reorder linker options,
+		# but understands `-z linker_flag'.
+	        # Supported since Solaris 2.6 (maybe 2.5.1?)
+		_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+	        ;;
+	    esac
+	    _LT_TAGVAR(link_all_deplibs, $1)=yes
+
+	    output_verbose_link_cmd='func_echo_all'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	    # necessary to make sure instantiated templates are included
+	    # in the archive.
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+	    ;;
+          gcx*)
+	    # Green Hills C++ Compiler
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+	    # The C++ compiler must be used to create the archive.
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	    ;;
+          *)
+	    # GNU C++ compiler with Solaris linker
+	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	      _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+		  $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	        # Commands to make compiler produce verbose output that lists
+	        # what "hidden" libraries, object files and flags are used when
+	        # linking a shared library.
+	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+	      else
+	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
+	        # platform.
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	        # Commands to make compiler produce verbose output that lists
+	        # what "hidden" libraries, object files and flags are used when
+	        # linking a shared library.
+	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+	      fi
+
+	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+	      case $host_os in
+		solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+		*)
+		  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+		  ;;
+	      esac
+	    fi
+	    ;;
+        esac
+        ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+
+      case $cc_basename in
+        CC*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+      esac
+      ;;
+
+      sysv5* | sco3.2v5* | sco5v6*)
+	# Note: We can NOT use -z defs as we might desire, because we do not
+	# link with -lc, and that would cause any symbols used from libc to
+	# always be unresolved, which means just about no library would
+	# ever link correctly.  If we're not using GNU ld we use -z text
+	# though, which does catch some bad symbols but isn't as heavy-handed
+	# as -z defs.
+	_LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+	_LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+	_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+	_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+	_LT_TAGVAR(link_all_deplibs, $1)=yes
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+	runpath_var='LD_RUN_PATH'
+
+	case $cc_basename in
+          CC*)
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
+	      '"$_LT_TAGVAR(old_archive_cmds, $1)"
+	    _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
+	      '"$_LT_TAGVAR(reload_cmds, $1)"
+	    ;;
+	  *)
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    ;;
+	esac
+      ;;
+
+      tandem*)
+        case $cc_basename in
+          NCC*)
+	    # NonStop-UX NCC 3.20
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+        esac
+        ;;
+
+      vxworks*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      *)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+    esac
+
+    AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+    test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+    _LT_TAGVAR(GCC, $1)="$GXX"
+    _LT_TAGVAR(LD, $1)="$LD"
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    _LT_SYS_HIDDEN_LIBDEPS($1)
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
+  LDCXX=$LD
+  LD=$lt_save_LD
+  GCC=$lt_save_GCC
+  with_gnu_ld=$lt_save_with_gnu_ld
+  lt_cv_path_LDCXX=$lt_cv_path_LD
+  lt_cv_path_LD=$lt_save_path_LD
+  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+fi # test "$_lt_caught_CXX_error" != yes
+
+AC_LANG_POP
+])# _LT_LANG_CXX_CONFIG
+
+
+# _LT_FUNC_STRIPNAME_CNF
+# ----------------------
+# func_stripname_cnf prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+#
+# This function is identical to the (non-XSI) version of func_stripname,
+# except this one can be used by m4 code that may be executed by configure,
+# rather than the libtool script.
+m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
+AC_REQUIRE([_LT_DECL_SED])
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
+func_stripname_cnf ()
+{
+  case ${2} in
+  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+  esac
+} # func_stripname_cnf
+])# _LT_FUNC_STRIPNAME_CNF
+
+# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
+# ---------------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
+# Dependencies to place before and after the object being linked:
+_LT_TAGVAR(predep_objects, $1)=
+_LT_TAGVAR(postdep_objects, $1)=
+_LT_TAGVAR(predeps, $1)=
+_LT_TAGVAR(postdeps, $1)=
+_LT_TAGVAR(compiler_lib_search_path, $1)=
+
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library.  It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
+int a;
+void foo (void) { a = 0; }
+_LT_EOF
+], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+_LT_EOF
+], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
+      subroutine foo
+      implicit none
+      integer*4 a
+      a=0
+      return
+      end
+_LT_EOF
+], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
+      subroutine foo
+      implicit none
+      integer a
+      a=0
+      return
+      end
+_LT_EOF
+], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
+public class foo {
+  private int a;
+  public void bar (void) {
+    a = 0;
+  }
+};
+_LT_EOF
+])
+
+_lt_libdeps_save_CFLAGS=$CFLAGS
+case "$CC $CFLAGS " in #(
+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+esac
+
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  for p in `eval "$output_verbose_link_cmd"`; do
+    case ${prev}${p} in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" ||
+          test $p = "-R"; then
+	 prev=$p
+	 continue
+       fi
+
+       # Expand the sysroot to ease extracting the directories later.
+       if test -z "$prev"; then
+         case $p in
+         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
+         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
+         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
+         esac
+       fi
+       case $p in
+       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
+       esac
+       if test "$pre_test_object_deps_done" = no; then
+	 case ${prev} in
+	 -L | -R)
+	   # Internal compiler library paths should come after those
+	   # provided the user.  The postdeps already come after the
+	   # user supplied libs so there is no need to process them.
+	   if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
+	     _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+	   else
+	     _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+	   fi
+	   ;;
+	 # The "-l" case would never come before the object being
+	 # linked, so don't bother handling this case.
+	 esac
+       else
+	 if test -z "$_LT_TAGVAR(postdeps, $1)"; then
+	   _LT_TAGVAR(postdeps, $1)="${prev}${p}"
+	 else
+	   _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
+	 fi
+       fi
+       prev=
+       ;;
+
+    *.lto.$objext) ;; # Ignore GCC LTO objects
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+	 pre_test_object_deps_done=yes
+	 continue
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
+	   _LT_TAGVAR(predep_objects, $1)="$p"
+	 else
+	   _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
+	 fi
+       else
+	 if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
+	   _LT_TAGVAR(postdep_objects, $1)="$p"
+	 else
+	   _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
+	 fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$RM -f confest.$objext
+CFLAGS=$_lt_libdeps_save_CFLAGS
+
+# PORTME: override above test on systems where it is broken
+m4_if([$1], [CXX],
+[case $host_os in
+interix[[3-9]]*)
+  # Interix 3.5 installs completely hosed .la files for C++, so rather than
+  # hack all around it, let's just trust "g++" to DTRT.
+  _LT_TAGVAR(predep_objects,$1)=
+  _LT_TAGVAR(postdep_objects,$1)=
+  _LT_TAGVAR(postdeps,$1)=
+  ;;
+
+linux*)
+  case `$CC -V 2>&1 | sed 5q` in
+  *Sun\ C*)
+    # Sun C++ 5.9
+
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    if test "$solaris_use_stlport4" != yes; then
+      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+
+solaris*)
+  case $cc_basename in
+  CC* | sunCC*)
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    # Adding this requires a known-good setup of shared libraries for
+    # Sun compiler versions before 5.6, else PIC objects from an old
+    # archive will be linked into the output, leading to subtle bugs.
+    if test "$solaris_use_stlport4" != yes; then
+      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+esac
+])
+
+case " $_LT_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=
+if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
+    [The directories searched by this compiler when creating a shared library])
+_LT_TAGDECL([], [predep_objects], [1],
+    [Dependencies to place before and after the objects being linked to
+    create a shared library])
+_LT_TAGDECL([], [postdep_objects], [1])
+_LT_TAGDECL([], [predeps], [1])
+_LT_TAGDECL([], [postdeps], [1])
+_LT_TAGDECL([], [compiler_lib_search_path], [1],
+    [The library search path used internally by the compiler when linking
+    a shared library])
+])# _LT_SYS_HIDDEN_LIBDEPS
+
+
+# _LT_LANG_F77_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a Fortran 77 compiler are
+# suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_F77_CONFIG],
+[AC_LANG_PUSH(Fortran 77)
+if test -z "$F77" || test "X$F77" = "Xno"; then
+  _lt_disable_F77=yes
+fi
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the F77 compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_F77" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="\
+      subroutine t
+      return
+      end
+"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code="\
+      program t
+      end
+"
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC="$CC"
+  lt_save_GCC=$GCC
+  lt_save_CFLAGS=$CFLAGS
+  CC=${F77-"f77"}
+  CFLAGS=$FFLAGS
+  compiler=$CC
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+  GCC=$G77
+  if test -n "$compiler"; then
+    AC_MSG_CHECKING([if libtool supports shared libraries])
+    AC_MSG_RESULT([$can_build_shared])
+
+    AC_MSG_CHECKING([whether to build shared libraries])
+    test "$can_build_shared" = "no" && enable_shared=no
+
+    # On AIX, shared libraries and static libraries use the same namespace, and
+    # are all built from PIC.
+    case $host_os in
+      aix3*)
+        test "$enable_shared" = yes && enable_static=no
+        if test -n "$RANLIB"; then
+          archive_cmds="$archive_cmds~\$RANLIB \$lib"
+          postinstall_cmds='$RANLIB $lib'
+        fi
+        ;;
+      aix[[4-9]]*)
+	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+	  test "$enable_shared" = yes && enable_static=no
+	fi
+        ;;
+    esac
+    AC_MSG_RESULT([$enable_shared])
+
+    AC_MSG_CHECKING([whether to build static libraries])
+    # Make sure either enable_shared or enable_static is yes.
+    test "$enable_shared" = yes || enable_static=yes
+    AC_MSG_RESULT([$enable_static])
+
+    _LT_TAGVAR(GCC, $1)="$G77"
+    _LT_TAGVAR(LD, $1)="$LD"
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  GCC=$lt_save_GCC
+  CC="$lt_save_CC"
+  CFLAGS="$lt_save_CFLAGS"
+fi # test "$_lt_disable_F77" != yes
+
+AC_LANG_POP
+])# _LT_LANG_F77_CONFIG
+
+
+# _LT_LANG_FC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for a Fortran compiler are
+# suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_FC_CONFIG],
+[AC_LANG_PUSH(Fortran)
+
+if test -z "$FC" || test "X$FC" = "Xno"; then
+  _lt_disable_FC=yes
+fi
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for fc test sources.
+ac_ext=${ac_fc_srcext-f}
+
+# Object file extension for compiled fc test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the FC compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_FC" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="\
+      subroutine t
+      return
+      end
+"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code="\
+      program t
+      end
+"
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC="$CC"
+  lt_save_GCC=$GCC
+  lt_save_CFLAGS=$CFLAGS
+  CC=${FC-"f95"}
+  CFLAGS=$FCFLAGS
+  compiler=$CC
+  GCC=$ac_cv_fc_compiler_gnu
+
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+
+  if test -n "$compiler"; then
+    AC_MSG_CHECKING([if libtool supports shared libraries])
+    AC_MSG_RESULT([$can_build_shared])
+
+    AC_MSG_CHECKING([whether to build shared libraries])
+    test "$can_build_shared" = "no" && enable_shared=no
+
+    # On AIX, shared libraries and static libraries use the same namespace, and
+    # are all built from PIC.
+    case $host_os in
+      aix3*)
+        test "$enable_shared" = yes && enable_static=no
+        if test -n "$RANLIB"; then
+          archive_cmds="$archive_cmds~\$RANLIB \$lib"
+          postinstall_cmds='$RANLIB $lib'
+        fi
+        ;;
+      aix[[4-9]]*)
+	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+	  test "$enable_shared" = yes && enable_static=no
+	fi
+        ;;
+    esac
+    AC_MSG_RESULT([$enable_shared])
+
+    AC_MSG_CHECKING([whether to build static libraries])
+    # Make sure either enable_shared or enable_static is yes.
+    test "$enable_shared" = yes || enable_static=yes
+    AC_MSG_RESULT([$enable_static])
+
+    _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
+    _LT_TAGVAR(LD, $1)="$LD"
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    _LT_SYS_HIDDEN_LIBDEPS($1)
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  GCC=$lt_save_GCC
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
+fi # test "$_lt_disable_FC" != yes
+
+AC_LANG_POP
+])# _LT_LANG_FC_CONFIG
+
+
+# _LT_LANG_GCJ_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Java Compiler compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GCJ_CONFIG],
+[AC_REQUIRE([LT_PROG_GCJ])dnl
+AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GCJ-"gcj"}
+CFLAGS=$GCJFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+
+  _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GCJ_CONFIG
+
+
+# _LT_LANG_RC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for the Windows resource compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_RC_CONFIG],
+[AC_REQUIRE([LT_PROG_RC])dnl
+AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=
+CC=${RC-"windres"}
+CFLAGS=
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+if test -n "$compiler"; then
+  :
+  _LT_CONFIG($1)
+fi
+
+GCC=$lt_save_GCC
+AC_LANG_RESTORE
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_RC_CONFIG
+
+
+# LT_PROG_GCJ
+# -----------
+AC_DEFUN([LT_PROG_GCJ],
+[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
+  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
+    [AC_CHECK_TOOL(GCJ, gcj,)
+      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+      AC_SUBST(GCJFLAGS)])])[]dnl
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
+
+
+# LT_PROG_RC
+# ----------
+AC_DEFUN([LT_PROG_RC],
+[AC_CHECK_TOOL(RC, windres,)
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_RC], [])
+
+
+# _LT_DECL_EGREP
+# --------------
+# If we don't have a new enough Autoconf to choose the best grep
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_EGREP],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_REQUIRE([AC_PROG_FGREP])dnl
+test -z "$GREP" && GREP=grep
+_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
+_LT_DECL([], [EGREP], [1], [An ERE matcher])
+_LT_DECL([], [FGREP], [1], [A literal string matcher])
+dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
+AC_SUBST([GREP])
+])
+
+
+# _LT_DECL_OBJDUMP
+# --------------
+# If we don't have a new enough Autoconf to choose the best objdump
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_OBJDUMP],
+[AC_CHECK_TOOL(OBJDUMP, objdump, false)
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
+AC_SUBST([OBJDUMP])
+])
+
+# _LT_DECL_DLLTOOL
+# ----------------
+# Ensure DLLTOOL variable is set.
+m4_defun([_LT_DECL_DLLTOOL],
+[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
+AC_SUBST([DLLTOOL])
+])
+
+# _LT_DECL_SED
+# ------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible.  Prefer GNU sed if found.
+m4_defun([_LT_DECL_SED],
+[AC_PROG_SED
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
+_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
+    [Sed that helps us avoid accidentally triggering echo(1) options like -n])
+])# _LT_DECL_SED
+
+m4_ifndef([AC_PROG_SED], [
+############################################################
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+############################################################
+
+m4_defun([AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for lt_ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+      fi
+    done
+  done
+done
+IFS=$as_save_IFS
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+  test ! -f $lt_ac_sed && continue
+  cat /dev/null > conftest.in
+  lt_ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+  # Check for GNU sed and select it if it is found.
+  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+    lt_cv_path_SED=$lt_ac_sed
+    break
+  fi
+  while true; do
+    cat conftest.in conftest.in >conftest.tmp
+    mv conftest.tmp conftest.in
+    cp conftest.in conftest.nl
+    echo >>conftest.nl
+    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+    cmp -s conftest.out conftest.nl || break
+    # 10000 chars as input seems more than enough
+    test $lt_ac_count -gt 10 && break
+    lt_ac_count=`expr $lt_ac_count + 1`
+    if test $lt_ac_count -gt $lt_ac_max; then
+      lt_ac_max=$lt_ac_count
+      lt_cv_path_SED=$lt_ac_sed
+    fi
+  done
+done
+])
+SED=$lt_cv_path_SED
+AC_SUBST([SED])
+AC_MSG_RESULT([$SED])
+])#AC_PROG_SED
+])#m4_ifndef
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_SED], [])
+
+
+# _LT_CHECK_SHELL_FEATURES
+# ------------------------
+# Find out whether the shell is Bourne or XSI compatible,
+# or has some other useful features.
+m4_defun([_LT_CHECK_SHELL_FEATURES],
+[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
+      = c,a/b,b/c, \
+    && eval 'test $(( 1 + 1 )) -eq 2 \
+    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+  && xsi_shell=yes
+AC_MSG_RESULT([$xsi_shell])
+_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
+
+AC_MSG_CHECKING([whether the shell understands "+="])
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
+    >/dev/null 2>&1 \
+  && lt_shell_append=yes
+AC_MSG_RESULT([$lt_shell_append])
+_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
+else
+  lt_unset=false
+fi
+_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  lt_SP2NL='tr \040 \012'
+  lt_NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  lt_SP2NL='tr \100 \n'
+  lt_NL2SP='tr \r\n \100\100'
+  ;;
+esac
+_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
+_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
+])# _LT_CHECK_SHELL_FEATURES
+
+
+# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
+# ------------------------------------------------------
+# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
+# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
+m4_defun([_LT_PROG_FUNCTION_REPLACE],
+[dnl {
+sed -e '/^$1 ()$/,/^} # $1 /c\
+$1 ()\
+{\
+m4_bpatsubsts([$2], [$], [\\], [^\([	 ]\)], [\\\1])
+} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+])
+
+
+# _LT_PROG_REPLACE_SHELLFNS
+# -------------------------
+# Replace existing portable implementations of several shell functions with
+# equivalent extended shell implementations where those features are available..
+m4_defun([_LT_PROG_REPLACE_SHELLFNS],
+[if test x"$xsi_shell" = xyes; then
+  _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
+    case ${1} in
+      */*) func_dirname_result="${1%/*}${2}" ;;
+      *  ) func_dirname_result="${3}" ;;
+    esac])
+
+  _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
+    func_basename_result="${1##*/}"])
+
+  _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
+    case ${1} in
+      */*) func_dirname_result="${1%/*}${2}" ;;
+      *  ) func_dirname_result="${3}" ;;
+    esac
+    func_basename_result="${1##*/}"])
+
+  _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
+    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+    # positional parameters, so assign one to ordinary parameter first.
+    func_stripname_result=${3}
+    func_stripname_result=${func_stripname_result#"${1}"}
+    func_stripname_result=${func_stripname_result%"${2}"}])
+
+  _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
+    func_split_long_opt_name=${1%%=*}
+    func_split_long_opt_arg=${1#*=}])
+
+  _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
+    func_split_short_opt_arg=${1#??}
+    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
+
+  _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
+    case ${1} in
+      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+      *)    func_lo2o_result=${1} ;;
+    esac])
+
+  _LT_PROG_FUNCTION_REPLACE([func_xform], [    func_xform_result=${1%.*}.lo])
+
+  _LT_PROG_FUNCTION_REPLACE([func_arith], [    func_arith_result=$(( $[*] ))])
+
+  _LT_PROG_FUNCTION_REPLACE([func_len], [    func_len_result=${#1}])
+fi
+
+if test x"$lt_shell_append" = xyes; then
+  _LT_PROG_FUNCTION_REPLACE([func_append], [    eval "${1}+=\\${2}"])
+
+  _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
+    func_quote_for_eval "${2}"
+dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
+    eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
+
+  # Save a `func_append' function call where possible by direct use of '+='
+  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+else
+  # Save a `func_append' function call even when '+=' is not available
+  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+fi
+
+if test x"$_lt_function_replace_fail" = x":"; then
+  AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
+fi
+])
+
+# _LT_PATH_CONVERSION_FUNCTIONS
+# -----------------------------
+# Determine which file name conversion functions should be used by
+# func_to_host_file (and, implicitly, by func_to_host_path).  These are needed
+# for certain cross-compile configurations and native mingw.
+m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_MSG_CHECKING([how to convert $build file names to $host format])
+AC_CACHE_VAL(lt_cv_to_host_file_cmd,
+[case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+        ;;
+    esac
+    ;;
+  *-*-cygwin* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_noop
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+        ;;
+    esac
+    ;;
+  * ) # unhandled hosts (and "normal" native builds)
+    lt_cv_to_host_file_cmd=func_convert_file_noop
+    ;;
+esac
+])
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
+_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
+         [0], [convert $build file names to $host format])dnl
+
+AC_MSG_CHECKING([how to convert $build file names to toolchain format])
+AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
+[#assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+        ;;
+    esac
+    ;;
+esac
+])
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
+_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
+         [0], [convert $build files to toolchain format])dnl
+])# _LT_PATH_CONVERSION_FUNCTIONS
Index: branches/testFACT++branch/.macro_dir/ltoptions.m4
===================================================================
--- branches/testFACT++branch/.macro_dir/ltoptions.m4	(revision 18277)
+++ branches/testFACT++branch/.macro_dir/ltoptions.m4	(revision 18277)
@@ -0,0 +1,369 @@
+# Helper functions for option handling.                    -*- Autoconf -*-
+#
+#   Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
+#   Inc.
+#   Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 7 ltoptions.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+
+
+# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
+# ------------------------------------------
+m4_define([_LT_MANGLE_OPTION],
+[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
+
+
+# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
+# ---------------------------------------
+# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
+# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
+# saved as a flag.
+m4_define([_LT_SET_OPTION],
+[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
+m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
+        _LT_MANGLE_DEFUN([$1], [$2]),
+    [m4_warning([Unknown $1 option `$2'])])[]dnl
+])
+
+
+# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
+# ------------------------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+m4_define([_LT_IF_OPTION],
+[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
+
+
+# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
+# -------------------------------------------------------
+# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
+# are set.
+m4_define([_LT_UNLESS_OPTIONS],
+[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+	    [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
+		      [m4_define([$0_found])])])[]dnl
+m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
+])[]dnl
+])
+
+
+# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
+# ----------------------------------------
+# OPTION-LIST is a space-separated list of Libtool options associated
+# with MACRO-NAME.  If any OPTION has a matching handler declared with
+# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
+# the unknown option and exit.
+m4_defun([_LT_SET_OPTIONS],
+[# Set options
+m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+    [_LT_SET_OPTION([$1], _LT_Option)])
+
+m4_if([$1],[LT_INIT],[
+  dnl
+  dnl Simply set some default values (i.e off) if boolean options were not
+  dnl specified:
+  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
+  ])
+  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
+  ])
+  dnl
+  dnl If no reference was made to various pairs of opposing options, then
+  dnl we run the default mode handler for the pair.  For example, if neither
+  dnl `shared' nor `disable-shared' was passed, we enable building of shared
+  dnl archives by default:
+  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
+  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
+  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
+  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
+  		   [_LT_ENABLE_FAST_INSTALL])
+  ])
+])# _LT_SET_OPTIONS
+
+
+## --------------------------------- ##
+## Macros to handle LT_INIT options. ##
+## --------------------------------- ##
+
+# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
+# -----------------------------------------
+m4_define([_LT_MANGLE_DEFUN],
+[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
+
+
+# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
+# -----------------------------------------------
+m4_define([LT_OPTION_DEFINE],
+[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
+])# LT_OPTION_DEFINE
+
+
+# dlopen
+# ------
+LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
+])
+
+AU_DEFUN([AC_LIBTOOL_DLOPEN],
+[_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `dlopen' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
+
+
+# win32-dll
+# ---------
+# Declare package support for building win32 dll's.
+LT_OPTION_DEFINE([LT_INIT], [win32-dll],
+[enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
+  AC_CHECK_TOOL(AS, as, false)
+  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+  AC_CHECK_TOOL(OBJDUMP, objdump, false)
+  ;;
+esac
+
+test -z "$AS" && AS=as
+_LT_DECL([], [AS],      [1], [Assembler program])dnl
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
+])# win32-dll
+
+AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `win32-dll' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
+
+
+# _LT_ENABLE_SHARED([DEFAULT])
+# ----------------------------
+# implement the --enable-shared flag, and supports the `shared' and
+# `disable-shared' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_SHARED],
+[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([shared],
+    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+	[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
+
+    _LT_DECL([build_libtool_libs], [enable_shared], [0],
+	[Whether or not to build shared libraries])
+])# _LT_ENABLE_SHARED
+
+LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
+])
+
+AC_DEFUN([AC_DISABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], [disable-shared])
+])
+
+AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_SHARED], [])
+dnl AC_DEFUN([AM_DISABLE_SHARED], [])
+
+
+
+# _LT_ENABLE_STATIC([DEFAULT])
+# ----------------------------
+# implement the --enable-static flag, and support the `static' and
+# `disable-static' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_STATIC],
+[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([static],
+    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+	[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
+
+    _LT_DECL([build_old_libs], [enable_static], [0],
+	[Whether or not to build static libraries])
+])# _LT_ENABLE_STATIC
+
+LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
+])
+
+AC_DEFUN([AC_DISABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], [disable-static])
+])
+
+AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_STATIC], [])
+dnl AC_DEFUN([AM_DISABLE_STATIC], [])
+
+
+
+# _LT_ENABLE_FAST_INSTALL([DEFAULT])
+# ----------------------------------
+# implement the --enable-fast-install flag, and support the `fast-install'
+# and `disable-fast-install' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_FAST_INSTALL],
+[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([fast-install],
+    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+    [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_fast_install=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
+
+_LT_DECL([fast_install], [enable_fast_install], [0],
+	 [Whether or not to optimize for fast installation])dnl
+])# _LT_ENABLE_FAST_INSTALL
+
+LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
+
+# Old names:
+AU_DEFUN([AC_ENABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `fast-install' option into LT_INIT's first parameter.])
+])
+
+AU_DEFUN([AC_DISABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `disable-fast-install' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
+dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
+
+
+# _LT_WITH_PIC([MODE])
+# --------------------
+# implement the --with-pic flag, and support the `pic-only' and `no-pic'
+# LT_INIT options.
+# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
+m4_define([_LT_WITH_PIC],
+[AC_ARG_WITH([pic],
+    [AS_HELP_STRING([--with-pic],
+	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+    [pic_mode="$withval"],
+    [pic_mode=default])
+
+test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
+
+_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
+])# _LT_WITH_PIC
+
+LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
+
+# Old name:
+AU_DEFUN([AC_LIBTOOL_PICMODE],
+[_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `pic-only' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
+
+## ----------------- ##
+## LTDL_INIT Options ##
+## ----------------- ##
+
+m4_define([_LTDL_MODE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
+		 [m4_define([_LTDL_MODE], [nonrecursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [recursive],
+		 [m4_define([_LTDL_MODE], [recursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [subproject],
+		 [m4_define([_LTDL_MODE], [subproject])])
+
+m4_define([_LTDL_TYPE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [installable],
+		 [m4_define([_LTDL_TYPE], [installable])])
+LT_OPTION_DEFINE([LTDL_INIT], [convenience],
+		 [m4_define([_LTDL_TYPE], [convenience])])
Index: branches/testFACT++branch/.macro_dir/ltsugar.m4
===================================================================
--- branches/testFACT++branch/.macro_dir/ltsugar.m4	(revision 18277)
+++ branches/testFACT++branch/.macro_dir/ltsugar.m4	(revision 18277)
@@ -0,0 +1,123 @@
+# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltsugar.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+
+
+# lt_join(SEP, ARG1, [ARG2...])
+# -----------------------------
+# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
+# associated separator.
+# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
+# versions in m4sugar had bugs.
+m4_define([lt_join],
+[m4_if([$#], [1], [],
+       [$#], [2], [[$2]],
+       [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
+m4_define([_lt_join],
+[m4_if([$#$2], [2], [],
+       [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
+
+
+# lt_car(LIST)
+# lt_cdr(LIST)
+# ------------
+# Manipulate m4 lists.
+# These macros are necessary as long as will still need to support
+# Autoconf-2.59 which quotes differently.
+m4_define([lt_car], [[$1]])
+m4_define([lt_cdr],
+[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
+       [$#], 1, [],
+       [m4_dquote(m4_shift($@))])])
+m4_define([lt_unquote], $1)
+
+
+# lt_append(MACRO-NAME, STRING, [SEPARATOR])
+# ------------------------------------------
+# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
+# Note that neither SEPARATOR nor STRING are expanded; they are appended
+# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
+# No SEPARATOR is output if MACRO-NAME was previously undefined (different
+# than defined and empty).
+#
+# This macro is needed until we can rely on Autoconf 2.62, since earlier
+# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
+m4_define([lt_append],
+[m4_define([$1],
+	   m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
+
+
+
+# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
+# ----------------------------------------------------------
+# Produce a SEP delimited list of all paired combinations of elements of
+# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
+# has the form PREFIXmINFIXSUFFIXn.
+# Needed until we can rely on m4_combine added in Autoconf 2.62.
+m4_define([lt_combine],
+[m4_if(m4_eval([$# > 3]), [1],
+       [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
+[[m4_foreach([_Lt_prefix], [$2],
+	     [m4_foreach([_Lt_suffix],
+		]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
+	[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
+
+
+# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
+# -----------------------------------------------------------------------
+# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
+# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
+m4_define([lt_if_append_uniq],
+[m4_ifdef([$1],
+	  [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
+		 [lt_append([$1], [$2], [$3])$4],
+		 [$5])],
+	  [lt_append([$1], [$2], [$3])$4])])
+
+
+# lt_dict_add(DICT, KEY, VALUE)
+# -----------------------------
+m4_define([lt_dict_add],
+[m4_define([$1($2)], [$3])])
+
+
+# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
+# --------------------------------------------
+m4_define([lt_dict_add_subkey],
+[m4_define([$1($2:$3)], [$4])])
+
+
+# lt_dict_fetch(DICT, KEY, [SUBKEY])
+# ----------------------------------
+m4_define([lt_dict_fetch],
+[m4_ifval([$3],
+	m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
+    m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
+
+
+# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
+# -----------------------------------------------------------------
+m4_define([lt_if_dict_fetch],
+[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
+	[$5],
+    [$6])])
+
+
+# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
+# --------------------------------------------------------------
+m4_define([lt_dict_filter],
+[m4_if([$5], [], [],
+  [lt_join(m4_quote(m4_default([$4], [[, ]])),
+           lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
+		      [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
+])
Index: branches/testFACT++branch/.macro_dir/ltversion.m4
===================================================================
--- branches/testFACT++branch/.macro_dir/ltversion.m4	(revision 18277)
+++ branches/testFACT++branch/.macro_dir/ltversion.m4	(revision 18277)
@@ -0,0 +1,23 @@
+# ltversion.m4 -- version numbers			-*- Autoconf -*-
+#
+#   Copyright (C) 2004 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# @configure_input@
+
+# serial 3337 ltversion.m4
+# This file is part of GNU Libtool
+
+m4_define([LT_PACKAGE_VERSION], [2.4.2])
+m4_define([LT_PACKAGE_REVISION], [1.3337])
+
+AC_DEFUN([LTVERSION_VERSION],
+[macro_version='2.4.2'
+macro_revision='1.3337'
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
Index: branches/testFACT++branch/.macro_dir/lt~obsolete.m4
===================================================================
--- branches/testFACT++branch/.macro_dir/lt~obsolete.m4	(revision 18277)
+++ branches/testFACT++branch/.macro_dir/lt~obsolete.m4	(revision 18277)
@@ -0,0 +1,98 @@
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
+#
+#   Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004.
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 5 lt~obsolete.m4
+
+# These exist entirely to fool aclocal when bootstrapping libtool.
+#
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
+# which have later been changed to m4_define as they aren't part of the
+# exported API, or moved to Autoconf or Automake where they belong.
+#
+# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
+# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
+# using a macro with the same name in our local m4/libtool.m4 it'll
+# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
+# and doesn't know about Autoconf macros at all.)
+#
+# So we provide this file, which has a silly filename so it's always
+# included after everything else.  This provides aclocal with the
+# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
+# because those macros already exist, or will be overwritten later.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
+#
+# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
+# Yes, that means every name once taken will need to remain here until
+# we give up compatibility with versions before 1.7, at which point
+# we need to keep only those names which we still refer to.
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+
+m4_ifndef([AC_LIBTOOL_LINKER_OPTION],	[AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
+m4_ifndef([AC_PROG_EGREP],		[AC_DEFUN([AC_PROG_EGREP])])
+m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_AC_SHELL_INIT],		[AC_DEFUN([_LT_AC_SHELL_INIT])])
+m4_ifndef([_LT_AC_SYS_LIBPATH_AIX],	[AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
+m4_ifndef([_LT_PROG_LTMAIN],		[AC_DEFUN([_LT_PROG_LTMAIN])])
+m4_ifndef([_LT_AC_TAGVAR],		[AC_DEFUN([_LT_AC_TAGVAR])])
+m4_ifndef([AC_LTDL_ENABLE_INSTALL],	[AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
+m4_ifndef([AC_LTDL_PREOPEN],		[AC_DEFUN([AC_LTDL_PREOPEN])])
+m4_ifndef([_LT_AC_SYS_COMPILER],	[AC_DEFUN([_LT_AC_SYS_COMPILER])])
+m4_ifndef([_LT_AC_LOCK],		[AC_DEFUN([_LT_AC_LOCK])])
+m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE],	[AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
+m4_ifndef([_LT_AC_TRY_DLOPEN_SELF],	[AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
+m4_ifndef([AC_LIBTOOL_PROG_CC_C_O],	[AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
+m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
+m4_ifndef([AC_LIBTOOL_OBJDIR],		[AC_DEFUN([AC_LIBTOOL_OBJDIR])])
+m4_ifndef([AC_LTDL_OBJDIR],		[AC_DEFUN([AC_LTDL_OBJDIR])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
+m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP],	[AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
+m4_ifndef([AC_PATH_MAGIC],		[AC_DEFUN([AC_PATH_MAGIC])])
+m4_ifndef([AC_PROG_LD_GNU],		[AC_DEFUN([AC_PROG_LD_GNU])])
+m4_ifndef([AC_PROG_LD_RELOAD_FLAG],	[AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
+m4_ifndef([AC_DEPLIBS_CHECK_METHOD],	[AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
+m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS],	[AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
+m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP],	[AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
+m4_ifndef([LT_AC_PROG_EGREP],		[AC_DEFUN([LT_AC_PROG_EGREP])])
+m4_ifndef([LT_AC_PROG_SED],		[AC_DEFUN([LT_AC_PROG_SED])])
+m4_ifndef([_LT_CC_BASENAME],		[AC_DEFUN([_LT_CC_BASENAME])])
+m4_ifndef([_LT_COMPILER_BOILERPLATE],	[AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
+m4_ifndef([_LT_LINKER_BOILERPLATE],	[AC_DEFUN([_LT_LINKER_BOILERPLATE])])
+m4_ifndef([_AC_PROG_LIBTOOL],		[AC_DEFUN([_AC_PROG_LIBTOOL])])
+m4_ifndef([AC_LIBTOOL_SETUP],		[AC_DEFUN([AC_LIBTOOL_SETUP])])
+m4_ifndef([_LT_AC_CHECK_DLFCN],		[AC_DEFUN([_LT_AC_CHECK_DLFCN])])
+m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],	[AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
+m4_ifndef([_LT_AC_TAGCONFIG],		[AC_DEFUN([_LT_AC_TAGCONFIG])])
+m4_ifndef([AC_DISABLE_FAST_INSTALL],	[AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
+m4_ifndef([_LT_AC_LANG_CXX],		[AC_DEFUN([_LT_AC_LANG_CXX])])
+m4_ifndef([_LT_AC_LANG_F77],		[AC_DEFUN([_LT_AC_LANG_F77])])
+m4_ifndef([_LT_AC_LANG_GCJ],		[AC_DEFUN([_LT_AC_LANG_GCJ])])
+m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
+m4_ifndef([_LT_AC_LANG_C_CONFIG],	[AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
+m4_ifndef([_LT_AC_LANG_CXX_CONFIG],	[AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
+m4_ifndef([_LT_AC_LANG_F77_CONFIG],	[AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
+m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],	[AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
+m4_ifndef([_LT_AC_LANG_RC_CONFIG],	[AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
+m4_ifndef([AC_LIBTOOL_CONFIG],		[AC_DEFUN([AC_LIBTOOL_CONFIG])])
+m4_ifndef([_LT_AC_FILE_LTDLL_C],	[AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
+m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS],	[AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
+m4_ifndef([_LT_AC_PROG_CXXCPP],		[AC_DEFUN([_LT_AC_PROG_CXXCPP])])
+m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS],	[AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
+m4_ifndef([_LT_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_PROG_F77],		[AC_DEFUN([_LT_PROG_F77])])
+m4_ifndef([_LT_PROG_FC],		[AC_DEFUN([_LT_PROG_FC])])
+m4_ifndef([_LT_PROG_CXX],		[AC_DEFUN([_LT_PROG_CXX])])
Index: branches/testFACT++branch/.macro_dir/mysql++_devel.m4
===================================================================
--- branches/testFACT++branch/.macro_dir/mysql++_devel.m4	(revision 18277)
+++ branches/testFACT++branch/.macro_dir/mysql++_devel.m4	(revision 18277)
@@ -0,0 +1,131 @@
+#-######################################################################
+# mysql++.m4 - Example autoconf macro showing how to find MySQL++
+#	library and header files.
+#
+# Copyright (c) 2004-2009 by Educational Technology Resources, Inc.
+#
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published
+# by the Free Software Foundation; either version 2.1 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with MySQL++; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
+# USA
+#-######################################################################
+
+dnl @synopsis MYSQLPP_DEVEL
+dnl 
+dnl This macro tries to find the MySQL++ library and header files.
+dnl
+dnl We define the following configure script flags:
+dnl
+dnl		--with-mysqlpp: Give prefix for both library and headers, and try
+dnl			to guess subdirectory names for each.  (e.g. tack /lib and
+dnl			/include onto given dir name, and other common schemes.)
+dnl		--with-mysqlpp-lib: Similar to --with-mysqlpp, but for library only.
+dnl		--with-mysqlpp-include: Similar to --with-mysqlpp, but for headers
+dnl			only.
+dnl
+dnl This macro depends on having the default compiler and linker flags
+dnl set up for building programs against the MySQL C API.  The mysql.m4
+dnl macro in this directory fits this bill; run it first.
+dnl
+dnl @version 1.3, 2009/11/22
+dnl @author Warren Young <mysqlpp@etr-usa.com>
+
+AC_DEFUN([MYSQLPP_DEVEL],
+[
+	dnl
+	dnl Set up configure script macros
+	dnl
+	AC_ARG_WITH(mysqlpp,
+		[  --with-mysqlpp=<path>     path containing MySQL++ header and library subdirs],
+		[MYSQLPP_lib_check="$with_mysqlpp/lib64 $with_mysqlpp/lib $with_mysqlpp/lib64/mysql++ $with_mysqlpp/lib/mysql++"
+		  MYSQLPP_inc_check="$with_mysqlpp/include $with_mysqlpp/include/mysql++"],
+		[MYSQLPP_lib_check="/usr/local/mysql++/lib64 /usr/local/mysql++/lib /usr/local/lib64/mysql++ /usr/local/lib/mysql++ /opt/mysql++/lib64 /opt/mysql++/lib /usr/lib64/mysql++ /usr/lib/mysql++ /usr/local/lib64 /usr/local/lib /usr/lib64 /usr/lib"
+		  MYSQLPP_inc_check="/usr/local/mysql++/include /usr/local/include/mysql++ /opt/mysql++/include /usr/local/include/mysql++ /usr/local/include /usr/include/mysql++ /usr/include"])
+	AC_ARG_WITH(mysqlpp-lib,
+		[  --with-mysqlpp-lib=<path> directory path of MySQL++ library],
+		[MYSQLPP_lib_check="$with_mysqlpp_lib $with_mysqlpp_lib/lib64 $with_mysqlpp_lib/lib $with_mysqlpp_lib/lib64/mysql $with_mysqlpp_lib/lib/mysql"])
+	AC_ARG_WITH(mysqlpp-include,
+		[  --with-mysqlpp-include=<path> directory path of MySQL++ headers],
+		[MYSQLPP_inc_check="$with_mysqlpp_include $with_mysqlpp_include/include $with_mysqlpp_include/include/mysql"])
+
+	dnl
+	dnl Look for MySQL++ library
+	dnl
+	AC_CACHE_CHECK([for MySQL++ library location], [ac_cv_mysqlpp_lib],
+	[
+		for dir in $MYSQLPP_lib_check
+		do
+			if test -d "$dir" && \
+				( test -f "$dir/libmysqlpp.so" ||
+				  test -f "$dir/libmysqlpp.a" )
+			then
+				ac_cv_mysqlpp_lib=$dir
+				break
+			fi
+		done
+
+		if test -z "$ac_cv_mysqlpp_lib"
+		then
+			AC_MSG_ERROR([Didn't find the MySQL++ library dir in '$MYSQLPP_lib_check'])
+		fi
+
+		case "$ac_cv_mysqlpp_lib" in
+			/* ) ;;
+			* )  AC_MSG_ERROR([The MySQL++ library directory ($ac_cv_mysqlpp_lib) must be an absolute path.]) ;;
+		esac
+	])
+	AC_SUBST([MYSQLPP_LIB_DIR],[$ac_cv_mysqlpp_lib])
+
+	dnl
+	dnl Look for MySQL++ header file directory
+	dnl
+	AC_CACHE_CHECK([for MySQL++ include path], [ac_cv_mysqlpp_inc],
+	[
+		for dir in $MYSQLPP_inc_check
+		do
+			if test -d "$dir" && test -f "$dir/mysql++.h"
+			then
+				ac_cv_mysqlpp_inc=$dir
+				break
+			fi
+		done
+
+		if test -z "$ac_cv_mysqlpp_inc"
+		then
+			AC_MSG_ERROR([Didn't find the MySQL++ header dir in '$MYSQLPP_inc_check'])
+		fi
+
+		case "$ac_cv_mysqlpp_inc" in
+			/* ) ;;
+			* )  AC_MSG_ERROR([The MySQL++ header directory ($ac_cv_mysqlpp_inc) must be an absolute path.]) ;;
+		esac
+	])
+	AC_SUBST([MYSQLPP_INC_DIR],[$ac_cv_mysqlpp_inc])
+
+	dnl
+	dnl Now check that the above checks resulted in -I and -L flags that
+	dnl let us build actual programs against MySQL++.
+	dnl
+	case "$ac_cv_mysqlpp_lib" in
+	  /usr/lib) ;;
+	  *) LDFLAGS="$LDFLAGS -L${ac_cv_mysqlpp_lib}" ;;
+	esac
+	CPPFLAGS="$CPPFLAGS -I${ac_cv_mysqlpp_inc} -I${MYSQL_C_INC_DIR}"
+	AC_MSG_CHECKING([that we can build MySQL++ programs])
+	AC_COMPILE_IFELSE(
+		[AC_LANG_PROGRAM([#include <mysql++.h>],
+			[mysqlpp::Connection c(false)])],
+		AC_MSG_RESULT([yes]),
+		AC_MSG_ERROR([no]))
+]) dnl End MYSQLPP_DEVEL
+
Index: branches/testFACT++branch/.macro_dir/mysql_devel.m4
===================================================================
--- branches/testFACT++branch/.macro_dir/mysql_devel.m4	(revision 18277)
+++ branches/testFACT++branch/.macro_dir/mysql_devel.m4	(revision 18277)
@@ -0,0 +1,47 @@
+dnl @synopsis MYSQL_DEVEL
+dnl 
+dnl This macro tries to find MySQL C API header locations.
+dnl
+dnl Based on MYSQL_C_API_LOCATION from
+dnl
+dnl    @version 1.4, 2009/05/28
+dnl    @author Warren Young <mysqlpp@etr-usa.com>
+dnl
+AC_DEFUN([MYSQL_DEVEL],
+[
+	MYSQL_inc_check="/usr/include/mysql /usr/local/include/mysql /usr/local/mysql/include /usr/local/mysql/include/mysql /usr/mysql/include/mysql /opt/mysql/include/mysql /sw/include/mysql"
+	AC_ARG_WITH(mysql-include,
+		[  --with-mysql-include=<path> directory path of MySQL header installation],
+		[MYSQL_inc_check="$with_mysql_include $with_mysql_include/include $with_mysql_include/include/mysql"])
+
+	#
+	# Look for MySQL C API headers
+	#
+	AC_MSG_CHECKING([for MySQL include directory])
+	MYSQL_C_INC_DIR=
+	for m in $MYSQL_inc_check
+	do
+		if test -d "$m" && test -f "$m/mysql.h"
+		then
+			MYSQL_C_INC_DIR=$m
+			break
+		fi
+	done
+
+	if test -z "$MYSQL_C_INC_DIR"
+	then
+		AC_MSG_ERROR([Didn't find the MySQL include dir in '$MYSQL_inc_check'])
+	fi
+
+	case "$MYSQL_C_INC_DIR" in
+		/* ) ;;
+		* )  AC_MSG_ERROR([The MySQL include directory ($MYSQL_C_INC_DIR) must be an absolute path.]) ;;
+	esac
+
+	AC_MSG_RESULT([$MYSQL_C_INC_DIR])
+
+	CPPFLAGS="$CPPFLAGS -I${MYSQL_C_INC_DIR}"
+
+	AC_SUBST(MYSQL_C_INC_DIR)
+]) dnl MYSQL_DEVEL
+
Index: branches/testFACT++branch/.macro_dir/qt4_do_it_all.m4
===================================================================
--- branches/testFACT++branch/.macro_dir/qt4_do_it_all.m4	(revision 18277)
+++ branches/testFACT++branch/.macro_dir/qt4_do_it_all.m4	(revision 18277)
@@ -0,0 +1,214 @@
+dnl check a particular libname
+AC_DEFUN([QT4_TRY_LINK],
+[
+	SAVE_LIBS="$LIBS"
+	LIBS="$LIBS $1"
+	AC_TRY_LINK([
+	#include <qglobal.h>
+	#include <qstring.h>
+		],
+	[
+	QString s("mangle_failure");
+	#if (QT_VERSION < 400)
+	break_me_(\\\);
+	#endif
+	],
+	qt4_cv_libname=$1,
+	)
+	LIBS="$SAVE_LIBS"
+])
+
+dnl check we can do a compile
+AC_DEFUN([QT4_CHECK_COMPILE],
+[
+	AC_MSG_CHECKING([for Qt 4 library name])
+
+	AC_CACHE_VAL(qt4_cv_libname,
+	[
+		AC_LANG_CPLUSPLUS
+		SAVE_CXXFLAGS=$CXXFLAGS
+		CXXFLAGS="$CXXFLAGS $QT4_INCLUDES $QT4_LDFLAGS"
+		for libname in -lQtCore -lQtCore4 '-framework QtCore'
+		do
+			QT4_TRY_LINK($libname)
+			if test -n "$qt4_cv_libname"; then
+				QT4_CORE_LIB="$qt4_cv_libname"
+				break;
+			fi
+		done
+		qt4_cv_libname=
+		for libname in '-lQtCore -lQtGui -lQtSql' \
+		               '-lQtCore4 -lQtGui4 -lQtSql4' \
+		               '-framework QtCore -framework QtGui -framework QtSql'
+		do
+			QT4_TRY_LINK($libname)
+			if test -n "$qt4_cv_libname"; then
+				break;
+			fi
+		done
+		CXXFLAGS=$SAVE_CXXFLAGS
+	])
+
+	if test -z "$qt4_cv_libname"; then
+		AC_MSG_RESULT([failed])
+		if test "$FATAL" = 1 ; then
+			AC_MSG_ERROR([Cannot compile a simple Qt 4 executable. Check you have the right \$QT4DIR !])
+		fi
+	else
+		AC_MSG_RESULT([$qt4_cv_libname])
+	fi
+])
+
+dnl get Qt version we're using
+AC_DEFUN([QT4_GET_VERSION],
+[
+	AC_CACHE_CHECK([Qt 4 version],lyx_cv_qt4version,
+	[
+		AC_LANG_CPLUSPLUS
+		SAVE_CPPFLAGS=$CPPFLAGS
+		CPPFLAGS="$CPPFLAGS $QT4_INCLUDES"
+
+		cat > conftest.$ac_ext <<EOF
+#line __oline__ "configure"
+#include "confdefs.h"
+#include <qglobal.h>
+"%%%"QT_VERSION_STR"%%%"
+EOF
+		lyx_cv_qt4version=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
+			grep '^"%%%"'  2>/dev/null | \
+			sed -e 's/"%%%"//g' -e 's/"//g'`
+		rm -f conftest.$ac_ext
+		CPPFLAGS=$SAVE_CPPFLAGS
+	])
+
+	QT4_VERSION=$lyx_cv_qt4version
+	AC_SUBST(QT4_VERSION)
+])
+
+dnl start here
+AC_DEFUN([QT4_DO_IT_ALL],
+[
+	dnl this variable is precious
+	AC_ARG_VAR(QT4DIR, [the place where the Qt 4 files are, e.g. /usr/lib/qt4])
+
+	dnl Please leave this alone. I use this file in
+	dnl oprofile.
+	FATAL=0
+
+	AC_ARG_WITH(qt4-dir, [AC_HELP_STRING([--with-qt4-dir], [where the root of Qt 4 is installed])],
+		[ qt4_cv_dir=`eval echo "$withval"/` ])
+
+	AC_ARG_WITH(qt4-includes, [AC_HELP_STRING([--with-qt4-includes], [where the Qt 4 includes are])],
+		[ qt4_cv_includes=`eval echo "$withval"` ])
+
+	AC_ARG_WITH(qt4-libraries, [AC_HELP_STRING([--with-qt4-libraries], [where the Qt 4 library is installed])],
+		[  qt4_cv_libraries=`eval echo "$withval"` ])
+
+	dnl pay attention to $QT4DIR unless overridden
+	if test -z "$qt4_cv_dir"; then
+		qt4_cv_dir=$QT4DIR
+	fi
+
+	dnl derive inc/lib if needed
+	if test -n "$qt4_cv_dir"; then
+		if test -z "$qt4_cv_includes"; then
+			qt4_cv_includes=$qt4_cv_dir/include
+		fi
+		if test -z "$qt4_cv_libraries"; then
+			qt4_cv_libraries=$qt4_cv_dir/lib
+		fi
+	fi
+
+	dnl compute the binary dir too
+	if test -n "$qt4_cv_dir"; then
+		qt4_cv_bin=$qt4_cv_dir/bin
+	fi
+
+	dnl Check if it possible to do a pkg-config
+	PKG_PROG_PKG_CONFIG
+	if test -n "$PKG_CONFIG" ; then
+		QT4_DO_PKG_CONFIG
+	fi
+	if test "$pkg_failed" != "no" ; then
+		QT4_DO_MANUAL_CONFIG
+	fi
+	AC_PATH_PROGS(MOC4, [moc-qt4 moc],[],$qt4_cv_bin:$PATH)
+	AC_PATH_PROGS(UIC4, [uic-qt4 uic],[],$qt4_cv_bin:$PATH)
+	AC_PATH_PROGS(RCC4, [rcc-qt4 rcc],[],$qt4_cv_bin:$PATH)
+])
+
+AC_DEFUN([QT4_DO_PKG_CONFIG],
+[
+	dnl tell pkg-config to look also in $qt4_cv_dir/lib.
+	save_PKG_CONFIG_PATH=$PKG_CONFIG_PATH
+	if test -n "$qt4_cv_dir" ; then
+	  PKG_CONFIG_PATH=$qt4_cv_dir/lib:$qt4_cv_dir/lib/pkgconfig:$PKG_CONFIG_PATH
+	  export PKG_CONFIG_PATH
+	fi
+	PKG_CHECK_MODULES(QT4_CORE, QtCore,,[:])
+	if test "$pkg_failed" = "no" ; then
+		QT4_CORE_INCLUDES=$QT4_CORE_CFLAGS
+		AC_SUBST(QT4_CORE_INCLUDES)
+		QT4_CORE_LDFLAGS=`$PKG_CONFIG --libs-only-L QtCore`
+		AC_SUBST(QT4_CORE_LDFLAGS)
+		QT4_CORE_LIB=`$PKG_CONFIG --libs-only-l QtCore`
+		AC_SUBST(QT4_CORE_LIB)
+	fi
+	PKG_CHECK_MODULES(QT4_FRONTEND, QtCore QtGui QtSql,,[:])
+	if test "$pkg_failed" = "no" ; then
+		QT4_INCLUDES=$QT4_FRONTEND_CFLAGS
+		dnl QT4_LDFLAGS=$QT4_FRONTEND_LIBS
+		QT4_LDFLAGS=`$PKG_CONFIG --libs-only-L QtCore QtGui QtSql`
+		AC_SUBST(QT4_INCLUDES)
+		AC_SUBST(QT4_LDFLAGS)
+		QT4_VERSION=`$PKG_CONFIG --modversion QtCore`
+		AC_SUBST(QT4_VERSION)
+		QT4_LIB=`$PKG_CONFIG --libs-only-l QtCore QtGui QtSql`
+		AC_SUBST(QT4_LIB)
+		LIBS="$LIBS `$PKG_CONFIG --libs-only-other QtCore QtGui QtSql`"
+	fi
+])
+
+AC_DEFUN([QT4_DO_MANUAL_CONFIG],
+[
+	dnl Check for X libraries
+	AC_PATH_X
+	AC_PATH_XTRA
+	case $have_x in
+	    yes) LIBS="$X_PRE_LIBS $LIBS $X_LIBS -lX11 $X_EXTRA_LIBS"
+	         CPPFLAGS="$CPPFLAGS $X_CFLAGS";;
+	     no) AC_MSG_ERROR([Cannot find X window libraries and/or headers.]);;
+	disable) ;;
+	esac
+
+	dnl flags for compilation
+	QT4_INCLUDES=
+	QT4_LDFLAGS=
+	QT4_CORE_INCLUDES=
+	QT4_CORE_LDFLAGS=
+	if test -n "$qt4_cv_includes"; then
+		QT4_INCLUDES="-I$qt4_cv_includes"
+		for i in Qt QtCore QtGui QtSql; do
+			QT4_INCLUDES="$QT4_INCLUDES -I$qt4_cv_includes/$i"
+		done
+		QT4_CORE_INCLUDES="-I$qt4_cv_includes -I$qt4_cv_includes/QtCore"
+	fi
+	if test -n "$qt4_cv_libraries"; then
+		QT4_LDFLAGS="-L$qt4_cv_libraries"
+		QT4_CORE_LDFLAGS="-L$qt4_cv_libraries"
+	fi
+	AC_SUBST(QT4_INCLUDES)
+	AC_SUBST(QT4_CORE_INCLUDES)
+	AC_SUBST(QT4_LDFLAGS)
+	AC_SUBST(QT4_CORE_LDFLAGS)
+
+	QT4_CHECK_COMPILE
+
+	QT4_LIB=$qt4_cv_libname;
+	AC_SUBST(QT4_LIB)
+	AC_SUBST(QT4_CORE_LIB)
+
+	if test -n "$qt4_cv_libname"; then
+		QT4_GET_VERSION
+	fi
+])
Index: branches/testFACT++branch/.macro_dir/root_path.m4
===================================================================
--- branches/testFACT++branch/.macro_dir/root_path.m4	(revision 18277)
+++ branches/testFACT++branch/.macro_dir/root_path.m4	(revision 18277)
@@ -0,0 +1,135 @@
+dnl -*- mode: autoconf -*- 
+dnl
+dnl $Id: root.m4,v 1.3 2005/03/21 21:42:21 rdm Exp $
+dnl $Author: rdm $
+dnl $Date: 2005/03/21 21:42:21 $
+dnl
+dnl Autoconf macro to check for existence or ROOT on the system
+dnl Synopsis:
+dnl
+dnl  ROOT_PATH([MINIMUM-VERSION, [ACTION-IF-FOUND, [ACTION-IF-NOT-FOUND]]])
+dnl
+dnl Some examples: 
+dnl 
+dnl    ROOT_PATH(3.03/05, , AC_MSG_ERROR(Your ROOT version is too old))
+dnl    ROOT_PATH(, AC_DEFINE([HAVE_ROOT]))
+dnl 
+dnl The macro defines the following substitution variables
+dnl
+dnl    ROOTCONF           full path to root-config
+dnl    ROOTEXEC           full path to root
+dnl    ROOTCINT           full path to rootcint
+dnl    ROOTLIBDIR         Where the ROOT libraries are 
+dnl    ROOTINCDIR         Where the ROOT headers are 
+dnl    ROOTETCDIR         Where the ROOT configuration is
+dnl    ROOTCFLAGS         Extra compiler flags
+dnl    ROOTLIBS           ROOT basic libraries 
+dnl    ROOTGLIBS          ROOT basic + GUI libraries
+dnl    ROOTAUXLIBS        Auxilary libraries and linker flags for ROOT
+dnl    ROOTAUXCFLAGS      Auxilary compiler flags 
+dnl    ROOTRPATH          Same as ROOTLIBDIR
+dnl
+dnl The macro will fail if root-config and rootcint isn't found.
+dnl
+dnl Christian Holm Christensen <cholm@nbi.dk>
+dnl
+AC_DEFUN([ROOT_PATH],
+[
+  AC_ARG_WITH([rootsys],
+              [AC_HELP_STRING([--with-rootsys],
+			      [path to the ROOT executables or top ROOT installation directory])],
+    			      [user_rootsys=$withval],
+			      [user_rootsys="none"])
+  if test ! x"$user_rootsys" = xnone; then
+    rootbin="$user_rootsys:$user_rootsys/bin"
+  elif test ! x"$ROOTSYS" = x ; then 
+    rootbin="$ROOTSYS/bin"
+  else 
+   rootbin=$PATH
+  fi
+
+  AC_MSG_CHECKING(for root in)
+  AC_MSG_RESULT($rootbin)
+
+  AC_PATH_PROG(ROOTCONF, root-config , no, $rootbin)
+  AC_PATH_PROG(ROOTEXEC, root , no, $rootbin)
+  AC_PATH_PROG(ROOTCINT, rootcint , no, $rootbin)
+	
+  if test ! x"$ROOTCONF" = "xno" && \
+     test ! x"$ROOTCINT" = "xno" ; then 
+
+    # define some variables 
+    ROOTLIBDIR=`$ROOTCONF --libdir`
+    ROOTINCDIR=`$ROOTCONF --incdir`
+#    ROOTETCDIR=`$ROOTCONF --etcdir`
+    ROOTCFLAGS=`$ROOTCONF --noauxcflags --cflags` 
+    ROOTLIBS=`$ROOTCONF --noauxlibs --noldflags --libs`
+    ROOTGLIBS=`$ROOTCONF --noauxlibs --noldflags --glibs`
+    ROOTAUXCFLAGS=`$ROOTCONF --auxcflags`
+    ROOTAUXLIBS=`$ROOTCONF --auxlibs`
+    ROOTRPATH=$ROOTLIBDIR
+    ROOTVERSION=`$ROOTCONF --version`
+    ROOTSOVERSION=`dirname $ROOTVERSION`
+	
+    if test $1 ; then 
+      AC_MSG_CHECKING(wether ROOT version >= [$1])
+      vers=`$ROOTCONF --version | tr './' ' ' | awk 'BEGIN { FS = " "; } { printf "%d", ($''1 * 1000 + $''2) * 1000 + $''3;}'`
+      requ=`echo $1 | tr './' ' ' | awk 'BEGIN { FS = " "; } { printf "%d", ($''1 * 1000 + $''2) * 1000 + $''3;}'`
+      if test $vers -lt $requ ; then 
+        AC_MSG_RESULT(no)
+	no_root="yes"
+      else 
+        AC_MSG_RESULT(yes)
+      fi
+    fi
+  else
+    # otherwise, we say no_root
+    no_root="yes"
+  fi
+
+  AC_SUBST(ROOTLIBDIR)
+  AC_SUBST(ROOTINCDIR)
+#  AC_SUBST(ROOTETCDIR)
+  AC_SUBST(ROOTCFLAGS)
+  AC_SUBST(ROOTLIBS)
+  AC_SUBST(ROOTGLIBS) 
+  AC_SUBST(ROOTAUXLIBS)
+  AC_SUBST(ROOTAUXCFLAGS)
+  AC_SUBST(ROOTRPATH)
+  AC_SUBST(ROOTVERSION)
+  AC_SUBST(ROOTSOVERSION)
+
+  if test "x$no_root" = "x" ; then 
+    ifelse([$2], , :, [$2])     
+  else 
+    ifelse([$3], , :, [$3])     
+  fi
+])
+
+#
+# Macro to check if ROOT has a specific feature:
+#
+#   ROOT_FEATURE(FEATURE,[ACTION_IF_HAVE,[ACTION_IF_NOT]])
+#
+# For example 
+#
+#   ROOT_FEATURE([ldap],[AC_DEFINE([HAVE_ROOT_LDAP])])
+# 
+AC_DEFUN([ROOT_FEATURE],
+[
+  AC_REQUIRE([ROOT_PATH])
+  feat=$1
+  res=`$ROOTCONF --has-$feat` 
+  if test "x$res" = "xyes" ; then 
+    ifelse([$2], , :, [$2])     
+  else 
+    ifelse([$3], , :, [$3])     
+  fi
+
+  AC_MSG_CHECKING(whether root was built with --with-qt)
+  AC_MSG_RESULT($res)
+])
+
+#
+# EOF
+#
Index: branches/testFACT++branch/COPYING
===================================================================
--- branches/testFACT++branch/COPYING	(revision 18277)
+++ branches/testFACT++branch/COPYING	(revision 18277)
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
Index: branches/testFACT++branch/Doxyfile
===================================================================
--- branches/testFACT++branch/Doxyfile	(revision 18277)
+++ branches/testFACT++branch/Doxyfile	(revision 18277)
@@ -0,0 +1,1646 @@
+# Doxyfile 1.7.1
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all
+# text before the first occurrence of this tag. Doxygen uses libiconv (or the
+# iconv built into libc) for the transcoding. See
+# http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+DOXYFILE_ENCODING      = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME           = $(PROJECT)
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER         = $(VERSION)
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = $(DOCDIR)
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
+# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
+# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
+# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
+# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak,
+# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
+
+OUTPUT_LANGUAGE        = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF       =
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES        = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH        =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH    =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like regular Qt-style comments
+# (thus requiring an explicit @brief command for a brief description.)
+
+JAVADOC_AUTOBRIEF      = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
+# interpret the first line (until the first dot) of a Qt-style
+# comment as the brief description. If set to NO, the comments
+# will behave just like regular Qt-style comments (thus requiring
+# an explicit \brief command for a brief description.)
+
+QT_AUTOBRIEF           = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS           = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES  = YES
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 8
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for
+# Java. For instance, namespaces will be presented as packages, qualified
+# scopes will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources only. Doxygen will then generate output that is more tailored for
+# Fortran.
+
+OPTIMIZE_FOR_FORTRAN   = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for
+# VHDL.
+
+OPTIMIZE_OUTPUT_VHDL   = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it
+# parses. With this tag you can assign which parser to use for a given extension.
+# Doxygen has a built-in mapping, but you can override or extend it using this
+# tag. The format is ext=language, where ext is a file extension, and language
+# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
+# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
+# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
+# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
+# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
+
+EXTENSION_MAPPING      =
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT    = YES
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_SUPPORT        = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
+# Doxygen will parse them like normal C++ but will assume all classes use public
+# instead of private inheritance when no explicit protection keyword is present.
+
+SIP_SUPPORT            = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate getter
+# and setter methods for a property. Setting this option to YES (the default)
+# will make doxygen to replace the get and set methods by a property in the
+# documentation. This will only work if the methods are indeed getting or
+# setting a simple type. If this is not the case, or you want to show the
+# methods anyway, you should set this option to NO.
+
+IDL_PROPERTY_SUPPORT   = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
+# is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically
+# be useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+
+TYPEDEF_HIDES_STRUCT   = NO
+
+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
+# determine which symbols to keep in memory and which to flush to disk.
+# When the cache is full, less often used symbols will be written to disk.
+# For small to medium size projects (<1000 input files) the default value is
+# probably good enough. For larger projects a too small cache size can cause
+# doxygen to be busy swapping symbols to and from disk most of the time
+# causing a significant performance penality.
+# If the system has enough physical memory increasing the cache will improve the
+# performance by keeping more symbols in memory. Note that the value works on
+# a logarithmic scale so increasing the size by one will rougly double the
+# memory usage. The cache size is given by this formula:
+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols
+
+SYMBOL_CACHE_SIZE      = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = $(EXTRACT_ALL)
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = YES
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC         = YES
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS  = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base
+# name of the file that contains the anonymous namespace. By default
+# anonymous namespace are hidden.
+
+EXTRACT_ANON_NSPACES   = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES       = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
+# will list include files with double quotes in the documentation
+# rather than with sharp brackets.
+
+FORCE_LOCAL_INCLUDES   = NO
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
+# will sort the (brief and detailed) documentation of class members so that
+# constructors and destructors are listed first. If set to NO (the default)
+# the constructors will appear in the respective orders defined by
+# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
+# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
+# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
+
+SORT_MEMBERS_CTORS_1ST = YES
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
+# hierarchy of group names into alphabetical order. If set to NO (the default)
+# the group names will appear in their defined order.
+
+SORT_GROUP_NAMES       = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES        = YES
+
+# If the sources in your project are distributed over multiple directories
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
+# in the documentation. The default is NO.
+
+SHOW_DIRECTORIES       = NO
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
+# This will remove the Files entry from the Quick Index and from the
+# Folder Tree View (if specified). The default is YES.
+
+SHOW_FILES             = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
+# Namespaces page.
+# This will remove the Namespaces entry from the Quick Index
+# and from the Folder Tree View (if specified). The default is YES.
+
+SHOW_NAMESPACES        = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the program writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER    =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
+# by doxygen. The layout file controls the global structure of the generated
+# output files in an output format independent way. The create the layout file
+# that represents doxygen's defaults, run doxygen with the -l option.
+# You can optionally specify a file name after the option, if omitted
+# DoxygenLayout.xml will be used as the name of the layout file.
+
+LAYOUT_FILE            =
+
+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do
+# proper type resolution of all parameters of a function it will reject a
+# match between the prototype and the implementation of a member function
+# even if there is only one candidate or it is obvious which candidate to
+# choose by doing a simple string match. By disabling
+# STRICT_PROTO_MATCHING doxygen will still accept a match between
+# prototype and implementation in such cases.
+
+STRICT_PROTO_MATCHING = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE           = doxygen.log
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT                  = $(SRCDIR) MAINPAGE
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
+# also the default input encoding. Doxygen uses libiconv (or the iconv built
+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
+# the list of possible encodings.
+
+INPUT_ENCODING         = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
+
+FILE_PATTERNS          = $(FILE_PATTERNS)
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE              = $(RECURSIVE)
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+#EXCLUDE                = $(EXCLUDE)
+EXCLUDE                = examples/ www/ \
+                         src/dserver2.cc src/sched.cc
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
+# directories that are symbolic links (a Unix filesystem feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS       = *.moc.* */dim*/* */macros/*
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS        = Ui Ui_MainWindow
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH           = $(SRCDIR)
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS       =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = YES
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH             =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.
+# If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER           =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis.
+# Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match.
+# The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
+# is applied to all files.
+
+FILTER_PATTERNS        =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = YES
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = YES
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = YES
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.
+# Otherwise they will link to the documentation.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS              = $(USE_HTAGS)
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = YES
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX          =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML          = $(GENERATE_HTML)
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER            =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER            =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+#HTML_STYLESHEET        = Doxygen_monobook.css
+HTML_STYLESHEET        =
+
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
+# Doxygen will adjust the colors in the stylesheet and background images
+# according to this color. Hue is specified as an angle on a colorwheel,
+# see http://en.wikipedia.org/wiki/Hue for more information.
+# For instance the value 0 represents red, 60 is yellow, 120 is green,
+# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
+# The allowed range is 0 to 359.
+
+HTML_COLORSTYLE_HUE    = 220
+
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
+# the colors in the HTML output. For a value of 0 the output will use
+# grayscales only. A value of 255 will produce the most vivid colors.
+
+HTML_COLORSTYLE_SAT    = 100
+
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
+# the luminance component of the colors in the HTML output. Values below
+# 100 gradually make the output lighter, whereas values above 100 make
+# the output darker. The value divided by 100 is the actual gamma applied,
+# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
+# and 100 does not change the gamma.
+
+HTML_COLORSTYLE_GAMMA  = 80
+
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+# page will contain the date and time when the page was generated. Setting
+# this to NO can help when comparing the output of multiple runs.
+
+HTML_TIMESTAMP         = YES
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded. For this to work a browser that supports
+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
+
+HTML_DYNAMIC_SECTIONS  = YES
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files
+# will be generated that can be used as input for Apple's Xcode 3
+# integrated development environment, introduced with OSX 10.5 (Leopard).
+# To create a documentation set, doxygen will generate a Makefile in the
+# HTML output directory. Running make will produce the docset in that
+# directory and running "make install" will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
+# it at startup.
+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
+# for more information.
+
+GENERATE_DOCSET        = NO
+
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
+# feed. A documentation feed provides an umbrella under which multiple
+# documentation sets from a single provider (such as a company or product suite)
+# can be grouped.
+
+DOCSET_FEEDNAME        = "Doxygen generated docs"
+
+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
+# should uniquely identify the documentation set bundle. This should be a
+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
+# will append .docset to the name.
+
+DOCSET_BUNDLE_ID       = org.doxygen.Project
+
+# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify
+# the documentation publisher. This should be a reverse domain-name style
+# string, e.g. com.mycompany.MyDocSet.documentation.
+
+DOCSET_PUBLISHER_ID    = org.fact-project.www
+
+# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
+
+DOCSET_PUBLISHER_NAME  = FACT collaboration
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = $(GENERATE_HTMLHELP)
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE               =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = $(GENERATE_CHI)
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
+# content.
+
+CHM_INDEX_ENCODING     =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = YES
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
+# that can be used as input for Qt's qhelpgenerator to generate a
+# Qt Compressed Help (.qch) of the generated HTML documentation.
+
+GENERATE_QHP           = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
+# be used to specify the file name of the resulting .qch file.
+# The path specified is relative to the HTML output folder.
+
+QCH_FILE               =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#namespace
+
+QHP_NAMESPACE          = org.doxygen.Project
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#virtual-folders
+
+QHP_VIRTUAL_FOLDER     = doc
+
+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
+# add. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#custom-filters
+
+QHP_CUST_FILTER_NAME   =
+
+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see
+# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
+# Qt Help Project / Custom Filters</a>.
+
+QHP_CUST_FILTER_ATTRS  =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+# project's
+# filter section matches.
+# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
+# Qt Help Project / Filter Attributes</a>.
+
+QHP_SECT_FILTER_ATTRS  =
+
+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
+# be used to specify the location of Qt's qhelpgenerator.
+# If non-empty doxygen will try to run qhelpgenerator on the generated
+# .qhp file.
+
+QHG_LOCATION           =
+
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
+#  will be generated, which together with the HTML files, form an Eclipse help
+# plugin. To install this plugin and make it available under the help contents
+# menu in Eclipse, the contents of the directory containing the HTML and XML
+# files needs to be copied into the plugins directory of eclipse. The name of
+# the directory within the plugins directory should be the same as
+# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
+# the help appears.
+
+GENERATE_ECLIPSEHELP   = NO
+
+# A unique identifier for the eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have
+# this name.
+
+ECLIPSE_DOC_ID         = org.doxygen.Project
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information.
+# If the tag value is set to YES, a side panel will be generated
+# containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
+# Windows users are probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = YES
+
+# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
+# and Class Hierarchy pages using a tree view instead of an ordered list.
+
+USE_INLINE_TREES       = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH         = 150
+
+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
+# links to external symbols imported via tag files in a separate window.
+
+EXT_LINKS_IN_WINDOW    = NO
+
+# Use this tag to change the font size of Latex formulas included
+# as images in the HTML documentation. The default is 10. Note that
+# when you change the font size after a successful doxygen run you need
+# to manually remove any form_*.png images from the HTML output directory
+# to force them to be regenerated.
+
+FORMULA_FONTSIZE       = 10
+
+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# generated for formulas are transparent PNGs. Transparent PNGs are
+# not supported properly for IE 6.0, but are supported on all modern browsers.
+# Note that when changing this option you need to delete any form_*.png files
+# in the HTML output before the changes have effect.
+
+FORMULA_TRANSPARENT    = YES
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box
+# for the HTML output. The underlying search engine uses javascript
+# and DHTML and should work on any modern browser. Note that when using
+# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
+# (GENERATE_DOCSET) there is already a search function so this one should
+# typically be disabled. For large projects the javascript based search engine
+# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
+
+SEARCHENGINE           = YES
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a PHP enabled web server instead of at the web client
+# using Javascript. Doxygen will generate the search PHP script and index
+# file to put on the web server. The advantage of the server
+# based approach is that it scales better to large projects and allows
+# full text search. The disadvances is that it is more difficult to setup
+# and does not have live searching capabilities.
+
+SERVER_BASED_SEARCH    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX         = $(GENERATE_LATEX)
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+# Note that when enabling USE_PDFLATEX this option is only used for
+# generating bitmaps for formulas in the HTML output, but not in the
+# Makefile that is written to the output directory.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = $(DOXYGEN_PAPER_SIZE)
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = YES
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = YES
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+# If LATEX_SOURCE_CODE is set to YES then doxygen will include
+# source code with syntax highlighting in the LaTeX output.
+# Note that which sources are shown also depends on other settings
+# such as SOURCE_BROWSER.
+
+LATEX_SOURCE_CODE      = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF           = $(GENERATE_RTF)
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN           = $(GENERATE_MAN)
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML           = $(GENERATE_XML)
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA             =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD                =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader.
+# This is useful
+# if you want to understand what is going on.
+# On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH           =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS  =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED             =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+#
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+#
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+#boost.tag=boost
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = $(PERL_PATH)
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option is superseded by the HAVE_DOT option below. This is only a
+# fallback. It is recommended to install and use dot, since it yields more
+# powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see
+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH            =
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = $(HAVE_DOT)
+
+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
+# allowed to run in parallel. When set to 0 (the default) doxygen will
+# base this on the number of processors available in the system. You can set it
+# explicitly to a value larger than 0 to get control over the balance
+# between CPU load and processing speed.
+
+DOT_NUM_THREADS        = 0
+
+# By default doxygen will write a font called FreeSans.ttf to the output
+# directory and reference it in all dot files that doxygen generates. This
+# font does not include all possible unicode characters however, so when you need
+# these (or just want a differently looking font) you can specify the font name
+# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
+# which can be done by putting it in a standard location or by setting the
+# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
+# containing the font.
+
+DOT_FONTNAME           = FreeSans.ttf
+
+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
+# The default size is 10pt.
+
+DOT_FONTSIZE           = 10
+
+# By default doxygen will tell dot to use the output directory to look for the
+# FreeSans.ttf font (which doxygen will put there itself). If you specify a
+# different font using DOT_FONTNAME you can set the path where dot
+# can find it using this tag.
+
+DOT_FONTPATH           =
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS           = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH          = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH and HAVE_DOT options are set to YES then
+# doxygen will generate a call dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable call graphs
+# for selected functions only using the \callgraph command.
+
+CALL_GRAPH             = YES
+#$(ALL_GRAPHS)
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
+# doxygen will generate a caller dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable caller
+# graphs for selected functions only using the \callergraph command.
+
+CALLER_GRAPH           = YES
+#$(ALL_GRAPHS)
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               = $(DOT_PATH)
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS           =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
+# nodes that will be shown in the graph. If the number of nodes in a graph
+# becomes larger than this value, doxygen will truncate the graph, which is
+# visualized by representing a node as a red box. Note that doxygen if the
+# number of direct children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
+DOT_GRAPH_MAX_NODES    = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not
+# seem to support this out of the box. Warning: Depending on the platform used,
+# enabling this option may lead to badly anti-aliased labels on the edges of
+# a graph (i.e. they become hard to read).
+
+DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS      = YES
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP            = YES
Index: branches/testFACT++branch/INSTALL
===================================================================
--- branches/testFACT++branch/INSTALL	(revision 18277)
+++ branches/testFACT++branch/INSTALL	(revision 18277)
@@ -0,0 +1,365 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+   Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.  This file is offered as-is,
+without warranty of any kind.
+
+Basic Installation
+==================
+
+   Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package.  The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.  Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below.  The lack of an optional feature in a given package is not
+necessarily a bug.  More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+   The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.
+
+     Running `configure' might take a while.  While running, it prints
+     some messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package, generally using the just-built uninstalled binaries.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.  When installing into a prefix owned by root, it is
+     recommended that the package be configured and built as a regular
+     user, and only the `make install' phase executed with root
+     privileges.
+
+  5. Optionally, type `make installcheck' to repeat any self-tests, but
+     this time using the binaries in their final installed location.
+     This target does not install anything.  Running this target as a
+     regular user, particularly if the prior `make install' required
+     root privileges, verifies that the installation completed
+     correctly.
+
+  6. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+  7. Often, you can also type `make uninstall' to remove the installed
+     files again.  In practice, not all packages have tested that
+     uninstallation works correctly, even though it is required by the
+     GNU Coding Standards.
+
+  8. Some packages, particularly those that use Automake, provide `make
+     distcheck', which can by used by developers to test that all other
+     targets like `make install' and `make uninstall' work correctly.
+     This target is generally not run by end users.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here
+is an example:
+
+     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you can use GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.  This
+is known as a "VPATH" build.
+
+   With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory.  After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+   On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor.  Like
+this:
+
+     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CPP="gcc -E" CXXCPP="g++ -E"
+
+   This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
+Installation Names
+==================
+
+   By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc.  You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX', where PREFIX must be an
+absolute file name.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.  In general, the
+default for these options is expressed in terms of `${prefix}', so that
+specifying just `--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+   The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+   The first method involves providing an override variable for each
+affected directory.  For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'.  Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated.  The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+   The second method involves providing the `DESTDIR' variable.  For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names.  The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters.  On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
+
+Optional Features
+=================
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+   Some packages offer the ability to configure how verbose the
+execution of `make' will be.  For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with `make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with `make V=0'.
+
+Particular systems
+==================
+
+   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
+a workaround.  If GNU CC is not installed, it is therefore recommended
+to try
+
+     ./configure CC="cc"
+
+and if that doesn't work, try
+
+     ./configure CC="cc -nodtk"
+
+   On Solaris, don't put `/usr/ucb' early in your `PATH'.  This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'.  So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+   On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'.  It is recommended to use the following options:
+
+     ./configure --prefix=/boot/common
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS
+     KERNEL-OS
+
+   See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+   Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug.  Until the bug is fixed you can use this workaround:
+
+     CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+     Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+     Print a summary of the options unique to this package's
+     `configure', and exit.  The `short' variant lists options used
+     only in the top level, while the `recursive' variant lists options
+     also present in any nested packages.
+
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`--prefix=DIR'
+     Use DIR as the installation prefix.  *note Installation Names::
+     for more details, including other options available for fine-tuning
+     the installation locations.
+
+`--no-create'
+`-n'
+     Run the configure checks, but stop before creating any output
+     files.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
+
Index: branches/testFACT++branch/MAINPAGE
===================================================================
--- branches/testFACT++branch/MAINPAGE	(revision 18277)
+++ branches/testFACT++branch/MAINPAGE	(revision 18277)
@@ -0,0 +1,379 @@
+// **************************************************************************
+/** @mainpage
+
+@brief FACT++ - The FACT slow control software
+
+@author thomas.bretz@epfl.ch et al.
+<!--@version 1.0-->
+
+<hr width="100%">
+
+@section toc Table of contents
+<table border='1' bgcolor=#FAFAFA width='100%'>
+<tr>
+<td>
+<ul>
+<li> @ref install_sec
+    <ul>
+    <li> @ref rootwarning
+    <li> @ref packages
+    <li> @ref installroot
+    </ul>
+<li> @ref demos
+<li> @ref dimremarks
+<li> @ref addtab
+<li> @ref Documentation
+<li> @ref References
+    <ul>
+    <li> @ref generalref 
+    <li> @ref boostref
+    <li> @ref fitsref
+    <li> @ref qtroot
+    </ul>
+<li> @ref availableprograms
+<li> @ref Examples
+</ul>
+</tr>
+</td>
+</table>
+
+@section install_sec Installation
+
+FACT++ can be downloaded from the svn by
+
+\verbatim
+   svn checkout https://www.fact-project.org/svn/trunk/FACT++ [localdir]
+\endverbatim
+
+it includes a dim version which is automatically compiled.
+
+For compilation use
+
+\verbatim
+   ./configure
+   make
+\endverbatim
+
+Check the \b ./configure options with \b --help. It might look 
+confusing, but some features like FITS or QT4 can be switched off,
+if the necessary library is not at hand and the feature is not needed.
+For example, if the GUI is not needed its compilation can be switched
+off by disabling QT4 support with \b --without-qt4.
+
+If you use a custom built root version on your system without QT 
+support, but have a distribution packe (e.g. debian package) with
+QT support available, you can give the path to root executables,
+for example, with <B>--with-rootsys=/usr/bin</B>. All other paths
+are extracted from subsequent calls to \b root-config.
+
+Running \b ./configure will take some time. It tries to really check
+carefully that everything needed is available on your system, so that you 
+get errors before you start compilation.
+
+If \b ./configure fails and you send a bug report please attach
+the file config.log.
+
+If \b make fails and you send a bug report please attach
+the complete output of <B>make V=1</B>.
+
+\b Reminder: These programs use shared libraries, i.e. whenever you re-compile
+part of the project some of them might be re-compiled as well. As a result
+already running programs might crash unexpectedly! This is \b not a bug.
+
+In principle configure also supports
+
+\verbatim
+   make install
+\endverbatim
+
+which would install the package and the libraries in your system,
+although at the moment this is not recommended
+
+@subsection rootwarning ROOT warnings during compilation
+
+During compilation of the GUI you get some warning from root's TQtWidget.h.
+These warnings are completely harmless and can be ignored. However, it is sometimes
+advicable to get rid of them to get a clean compiler run which makes development
+easier.
+
+Therefore replace
+\verbatim
+inline void resize(const QSize &size) { QPixmap newSize(size); *(QPixmap *)this = newSize; }
+\endverbatim
+by
+\verbatim
+inline void resize(const QSize &sz) { QPixmap newSize(sz); *(QPixmap *)this = newSize; }
+\endverbatim
+in TQtWidget.h
+
+
+@subsection packages Required packages
+
+The following section gives a list of packages which were necessary after
+a fresh Ubuntu 11.04 installation. In addition to all the development
+packages the corresponding package with the library is needed.
+
+Note that a recent C++ compiler is needed supporting the latest C++0x 
+standard.
+
+<i>Required (configure will fail without them)</i>
+- subversion
+- gcc 
+- g++ 
+- make 
+- libreadline6-dev 
+- libboost-all-dev 
+- libx11-dev (needed for lesstif, qt4, root)
+
+<i>FITS file support (datalogger, event builder)</i>
+- libccfits-dev 
+
+<i>MySQL support (command line options, scheduler)</i>
+- libmysqlclient-dev (optional for MySQL support)
+- libmysql++-dev (option for MySQL support)
+
+<i>If you want 'did'</i>
+- lesstif2-dev
+
+<i>For JavaScrip support</i>
+- libv8-dev
+
+<i>To compile the GUIs</i>
+- libqt4-dev
+- root (see section about root, currently recommended versions 5.18/00b-5.26/00e)
+
+<i>To compile the raw data viewer</i>
+- libglu1-mesa-dev
+
+<i>To compile smartfact with astronomy support and moon</i>
+- libnova-dev
+
+<i>To compile tngweather</i>
+- libsoprano-dev
+
+<i>To compile skypeclient</i>
+- libdbus-1-dev
+- libdbus-glib-1-dev
+
+<i>To create your own documentation</i>
+- graphviz
+- doxygen
+- help2man
+- groff 
+- ps2pdf
+
+<i>To create JavaScript documentation</i>
+- jsdoc-toolkit
+
+<i>For developers</i>
+- autoconf
+- autoconf-archive
+- libtool
+- qt4-designer
+
+If you intend to change only Makefile.am but not configure.ac the \b automake
+package instead of the \b autoconf package should be enough.
+
+<i>Some nice to have (FACT++)</i>
+- colorgcc
+- colordiff
+
+<i>Some nice to have (system)</i>
+- fte
+- efte
+- htop
+
+<i>Documentation (usually accessible through http://localhost/ for the tools above:</I>
+- autoconf-doc
+- gcc-doc
+- graphviz-doc
+- libboost-doc
+- libmysql++-doc
+- libtool-doc
+- make-doc
+- qt4-dev-tools [qt4-assistant]
+- qt4-doc-html
+
+
+<!--
+VIEWER
+libqwt5-qt4-dev
+libqwt5-doc
+-->
+
+@subsection installroot How to install root 5.26/00 on Ubuntu 11.04 (natty)
+
+- install gpp4.4, gcc4.4, g++4.4 (root does not compile with gcc4.5)
+- make links to hidden X11 libraries:
+<B><pre>
+cd /usr/local
+sudo ln -s x86_64-linux-gnu/libX* .
+</pre></B>
+- in the root source directory
+<B><pre>
+./configure --enable-qt --with-cc=gcc-4.4 --with-cxx=g++-4.4 --with-xrootd-opts=--syslibs=/usr/lib/x86_64-linux-gnu --prefix=/usr/local
+</pre></B>
+- \b make
+- <b>sudo make install</b>
+- pray
+- don't forget to set LD_LIBRARY_PATH correctly before you try to start the fact gui
+
+
+@section demos Current demonstration programs
+
+- \b dserver2: A virtual board (A TCP/IP server). It is sending a
+  "hello" message after accepting a communication and then in 3s
+  intervals the current UTC time. The board can be set to state 1 or back
+  to state 0 (just as a demonstration)
+- \b dclient5: A control program. It accesses two viratual boards (start them
+  with 'dserver2 5000' and 'dserver2 4001') If both boards are connected the START
+  command can be issued to get them to state 'Running'. In this state
+  an asynchronous time stamp can be requested sending the TIME command.
+  to get back from Running to Connected use STOP. 
+- \b test3: a dim console which allows to control all dim servers
+  by sending commands via the dim network.
+- Both, \b dclient5 and \b test3 accept the command line options -c0, -c1, -c2
+  to switch between different console types (or no console in the case of
+  \b dclient5). In the console you get help with 'h' and the available
+  command with 'c' You get the avilable command-line options with --help
+
+First start the two dserver2s. Then start a dclient5 (if you want it
+with console use one of the -c options) and a test3 console (with one
+of the console options if you like) you can now control the hardware
+boards with the START, STOP and TIME commands or stop (Ctrl-C) and
+start one of the programs to see what's happening. In the test3 case
+you first have to \e cd to the server to which you want to talk by \b
+DATA_LOGGER. Don't forget to start \b dns if you want to control dclient5
+from test3 via Dim.
+
+@section dimremarks Remarks about Dim usage
+
+To be able to write all received data directly to the FITS files,
+padding has been disabled calling dic_diable_padding() and 
+dis_disable_padding(). This is done in our own error handler
+DimErrorRedirecter. Since this should be one of the first 
+objects created in any environment it is quite save. However, every
+Dim client or server in our network which does not use the 
+DimErrorRedirecter \b must call these two functions as early as
+possible.
+
+<!--
+@section exitcodes Exit Code
+@section newcommand How to add a new command?
+@section description How to add help textes to services and commands?
+-->
+
+@section blocking Blocking programs at startup
+
+At startup most programs try to resolve the name of the dim-dns
+as well as their local IP address. After this Dim is initialized 
+and tries to contact the dns. These are so far the only blocking operations.
+Be patient at program startup. They will usually timeout after a while and
+give you proper informations.
+
+
+@section addtab How to add a new tab in the gui?
+
+Do the following steps in exactly this order:
+- Insert the new page from the context menu of the QTabWidget
+- Copy the QDockWidget from one of the other tabs to the clipboard
+- Paste the copied QDockWidget and add it to the new tab (only the tab should be highlited)
+- Now click on the context menu of the region in the tab (QWidget) and change the layout to grid layout
+
+
+@section Documentation
+
+Each program has an extensive help text (except the examples). This
+help text can be displayed with the \b --help option. For each program
+a man-page is automatically created (from the help-output), which (at
+the moment) can be accessed with <B>man ./program.man</B> (Don't forget
+the ./ before the filename). With <B>make program.html</B> and 
+<B>make program.pdf</B> a HTML page and a pdf document can be created
+from the man-page.
+
+With <B>make doxygen-doc</B> the HTML documentation as well as a pdf
+with the whole code documentation can be created.
+
+@subsection FACT++ programs
+
+Each documentation is also available with <B>program --help</B> or
+<B>man ./program.man</B>.
+
+In alphabetic order:
+
+- <A HREF="man/biasctrl.html">biasctrl</A> [<A HREF="pdf/biasctrl.pdf">pdf</A>]
+- <A HREF="man/datalogger.html">datalogger</A> [<A HREF="pdf/datalogger.pdf">pdf</A>]
+- <A HREF="man/dimctrl.html">dimctrl</A> [<A HREF="pdf/dimctrl.pdf">pdf</A>]
+- <A HREF="man/drivctrl.html">drivectrl</A> [<A HREF="pdf/drivctrl.pdf">pdf</A>]
+- <A HREF="man/fadctrl.html">fadctrl</A> [<A HREF="pdf/fadctrl.pdf">pdf</A>]
+- <A HREF="man/feedback.html">feedback</A> [<A HREF="pdf/feedback.pdf">pdf</A>]
+- <A HREF="man/fitsdump.html">fitsdump</A> [<A HREF="pdf/fitsdump.pdf">pdf</A>]
+- <A HREF="man/fscctrl.html">fscctrl</A> [<A HREF="pdf/fscctrl.pdf">pdf</A>]
+- <A HREF="man/ftmctrl.html">ftmctrl</A> [<A HREF="pdf/ftmctrl.pdf">pdf</A>]
+- <A HREF="man/gpsctrl.html">gpsctrl</A> [<A HREF="pdf/gpsctrl.pdf">pdf</A>]
+- <A HREF="man/lidctrl.html">lidctrl</A> [<A HREF="pdf/lidctrl.pdf">pdf</A>]
+- <A HREF="man/magiclidar.html">magiclidar</A> [<A HREF="pdf/magiclidar.pdf">pdf</A>]
+- <A HREF="man/magicweather.html">magicweather</A> [<A HREF="pdf/magicweather.pdf">pdf</A>]
+- <A HREF="man/mcp.html">mcp</A> [<A HREF="pdf/mcp.pdf">pdf</A>]
+- <A HREF="man/nsa.html">nsa</A> [<A HREF="pdf/nsa.pdf">pdf</A>]
+- <A HREF="man/pwrctrl.html">pwrctrl</A> [<A HREF="pdf/pwrctrl.pdf">pdf</A>]
+- <A HREF="man/ratecontrol.html">ratecontrol</A> [<A HREF="pdf/ratecontrol.pdf">pdf</A>]
+- <A HREF="man/ratescan.html">ratescan</A> [<A HREF="pdf/ratescan.pdf">pdf</A>]
+- <A HREF="man/showlog.html">showlog</A> [<A HREF="pdf/showlog.pdf">pdf</A>]
+- <A HREF="man/smartfact.html">smartfact</A> [<A HREF="pdf/smartfact.pdf">pdf</A>]
+- <A HREF="man/temperature.html">temperature</A> [<A HREF="pdf/temperature.pdf">pdf</A>]
+- <A HREF="man/timecheck.html">timecheck</A> [<A HREF="pdf/timecheck.pdf">pdf</A>]
+- <A HREF="man/tngweather.html">tngweather</A> [<A HREF="pdf/tngweather.pdf">pdf</A>]
+
+
+@section References
+
+@subsection generalref General references
+- <A HREF="http://www.cplusplus.com/reference">The C++ reference</A>
+- <A HREF="http://www.boost.org">boost.org: The boost C++ libraries</A>
+- <A HREF="http://www.highscore.de/cpp/boost/titelseite.html">Boris Sch&auml;ling: Die Boost C++ Bibliotheken</A>
+- <A HREF="http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html">GNU Readline</A>
+- <A HREF="http://www.gnu.org/software/ncurses">GNU Ncurses</A>
+- <A HREF="http://dim.web.cern.ch/">Distributed Information Management (DIM)</A>
+- <A HREF="http://dim.web.cern.ch/dim/cpp_doc/DimCpp.html">Distributed Information Management (DIM) - C++ reference</A>
+- <A HREF="http://qt.nokia.com/">Qt homepage</A>
+- <A HREF="http://qt.nokia.com/downloads/">Qt downloads</A>
+
+@subsection boostref Boost references
+- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/bind/bind.html">boost::bind (V1.45.0)</A>
+- <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/boost_asio.html">boost asio (V1.45.0)</A>
+- <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/date_time.html">boost date_time (V1.45.0)</A>
+- <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/program_options.html">boost program_options (V1.45.0)</A>
+- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/filesystem/v3/doc/index.htm">boost filesystem (V1.45.0)</A>
+- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/regex/doc/html/index.html">boost regex (V1.45.0)</A>
+- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/system/doc/index.html">boost system (error codes) (V1.45.0)</A>
+- <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/thread.html">boost thread (V1.45.0)</A>
+- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/conversion/lexical_cast.htm">boost lexical_cast (V1.45.0)</A>
+
+@subsection fitsref FITS references
+- <A HREF="http://heasarc.gsfc.nasa.gov/docs/heasarc/fits.html">The FITS data format</A>
+- <A HREF="http://heasarc.gsfc.nasa.gov/fitsio/">FITS homepage</A>
+- <A HREF="http://heasarc.gsfc.nasa.gov/fitsio/CCfits/">CCfits - A C++ wrapper to cfitsio</A>
+- <A HREF="http://heasarc.gsfc.nasa.gov/docs/software/ftools/fv/">fv - A very simple viewer to FITS file contents</A>
+- <A HREF="http://www.star.bris.ac.uk/~mbt/topcat/">topcat - <B>T</B>ool for <B>OP</B>erations on <B>C</B>atalogues <B>A</B>nd <B>T</B>ables
+
+@subsection qtroot How to integrate root in QT?
+
+- <A HREF="http://doc.trolltech.com/4.3/designer-creating-custom-widgets.html">QT4: Creating custom widgets</A>
+- <A HREF="http://root.cern.ch/download/doc/26ROOTandQt.pdf">root: QT integration (pdf)</A>
+
+
+@section availableprograms Available programs
+
+- dns: Dim's domain-name-server (needed for any communication between Dim servers and clients)
+- did: A simple graphical interface to analyse everything in a Dim network
+
+@section Examples
+
+There are a few example programs
+- \b ./argv: Example for usage of the class Configure (command line options, configuration file)
+- \b ./time: Example for the usage of the class Time (time input/output, conversion)
+- \b ./log, \b ./logtime: A simple Dim-Service/-Client combination using MessageDimRX/MessageDimTX
+
+**/
+// **************************************************************************
Index: branches/testFACT++branch/Makefile.am
===================================================================
--- branches/testFACT++branch/Makefile.am	(revision 18277)
+++ branches/testFACT++branch/Makefile.am	(revision 18277)
@@ -0,0 +1,675 @@
+include aminclude.am
+
+#-------------------------------------------------------------------------
+
+ACLOCAL_AMFLAGS = -I .macro_dir
+
+SVN_REVISION = -DREVISION=\"`svnversion -n .`\"
+
+DIM_FLAGS    = -DMIPSEL -DPROTOCOL=1 -Dunix -Dlinux
+BOOST_FLAGS  = -DBOOST_DISABLE_ASSERTS
+
+AM_CPPFLAGS = -Idim/dim $(DIM_FLAGS) $(BOOST_FLAGS) $(ROOTCPPFLAGS) \
+   -Wall -Winit-self -Wpointer-arith -Wcast-align -Wextra -Wformat=2 \
+   $(SVN_REVISION)
+
+AM_CXXFLAGS = $(AM_CPPFLAGS) \
+   -Woverloaded-virtual -Wnon-virtual-dtor -Wshadow
+
+# -no-undefined
+AM_LDFLAGS = -module -avoid-version
+
+#$(man3_MANS): doxygen-doc
+#DX_CLEANFILES = everything to clean.
+# Add to MOSTLYCLEANFILES.
+
+#-------------------------------------------------------------------------
+
+# Executables which are build by default ('all')
+bin_PROGRAMS = \
+	dns \
+	log logtime time argv \
+	dimctrl \
+	dimserver \
+	datalogger \
+	ftmctrl \
+	fadctrl \
+	fscctrl \
+	gcn \
+	chatclient chatserv \
+	biasctrl drivectrl agilentctrl \
+	mcp feedback ratescan ratecontrol \
+	tngweather lidctrl gpsctrl pfminictrl sqmctrl pwrctrl \
+	magicweather magiclidar \
+	smartfact evtserver getevent \
+	temperature \
+	timecheck \
+	showlog \
+	fitsdump fitscheck fitsselect \
+	zfits
+
+if HAS_GUI
+bin_PROGRAMS += fact
+endif
+
+if HAS_DBUS
+bin_PROGRAMS += skypeclient
+endif
+
+if HAS_VIEWER
+bin_PROGRAMS += viewer
+endif
+
+if HAS_NOVA
+bin_PROGRAMS += moon
+endif
+
+if HAS_SQL
+if HAS_NOVA
+bin_PROGRAMS += makedata
+if HAS_ROOT
+bin_PROGRAMS += makeplots
+endif
+endif
+endif
+
+
+if HAS_LIBXP
+bin_PROGRAMS += did webDid
+endif
+
+# This is a trick to be able to build them but not having them in 'all'
+if IS_FALSE
+bin_PROGRAMS += \
+	ftm fsc fad \
+	test scheduler \
+	triggerschedule \
+	dclient5 dserver2 \
+	fitsloader fitsgrep \
+	sched astro readfits
+endif
+
+lib_LTLIBRARIES = \
+	libDim++.la libDim.la libDimExtension.la \
+	libConfiguration.la libStateMachine.la libTime.la libTools.la
+# 	libAstro.la
+
+if HAS_HELP2MAN
+dist_man1_MANS = \
+	biasctrl.man \
+	datalogger.man \
+	dimctrl.man \
+	dimserver.man \
+	drivectrl.man \
+	evtserver.man \
+	fadctrl.man \
+	feedback.man \
+	fitsdump.man \
+	fitscheck.man \
+	fitsselect.man \
+	fscctrl.man \
+	ftmctrl.man \
+	getevent.man \
+	gpsctrl.man \
+	lidctrl.man \
+	magiclidar.man \
+	magicweather.man \
+	mcp.man \
+	pfminictrl.man \
+	pwrctrl.man \
+	ratecontrol.man \
+	ratescan.man \
+	showlog.man \
+	smartfact.man \
+	sqmctrl.man \
+	temperature.man \
+	timecheck.man \
+	tngweather.man \
+	zfits.man
+endif
+
+#-------------------------------------------------------------------------
+
+CLEANFILES =
+
+dist_noinst_SCRIPTS = autogen.sh
+
+EXTRA_DIST = \
+	Doxyfile \
+	dim/DIM_Performance.pdf \
+	dim/LICENSE.GPL \
+	dim/README.txt \
+	dim/README_v9.txt \
+	dim/README_v10.txt \
+	dim/README_v11.txt \
+	dim/README_v12.txt \
+	dim/README_v13.txt \
+	dim/README_v14.txt \
+	dim/README_v17.txt \
+	dim/README_v16.txt \
+	dim/README_v17.txt \
+	dim/README_v18.txt \
+	dim/README_v19.txt
+
+dns_LDADD    = libDim.la libDimExtension.la
+dns_SOURCES  = src/dns.c
+#dns_CPPFLAGS = $(AM_CPPFLAGS) $(DIM_FLAGS)
+
+did_LDADD    = libDim.la 
+did_CPPFLAGS = $(AM_CPPFLAGS) -Idim/src/did 
+did_SOURCES  = \
+	dim/src/did/did.c dim/src/did/did.h \
+	dim/src/did/dui_util.c dim/src/did/dui_util.h \
+	dim/src/did/dui_colors.h
+
+webDid_LDADD    = libDim.la 
+webDid_CPPFLAGS = $(AM_CPPFLAGS) -Idim/src/did 
+webDid_SOURCES  = \
+	dim/src/webDid/webDid.c \
+	src/webServer.c \
+	dim/src/webDid/webTcpip.c
+
+
+#libDim_la_CPPFLAGS = $(AM_CPPFLAGS) $(DIM_FLAGS)
+libDim_ladir = 
+libDim_la_HEADERS = \
+	dim/dim/dic.h \
+	dim/dim/dim_common.h \
+	dim/dim/dim.h \
+	dim/dim/dim_tcpip.h \
+	dim/dim/dis.h 
+
+libDim_la_SOURCES = \
+	dim/src/dic.c \
+	dim/src/dis.c \
+	dim/src/dna.c \
+	dim/src/sll.c \
+	dim/src/dll.c  \
+	dim/src/hash.c \
+	dim/src/swap.c \
+	dim/src/copy_swap.c \
+	dim/src/open_dns.c \
+	dim/src/conn_handler.c \
+	dim/src/tcpip.c \
+	dim/src/dtq.c \
+	dim/src/dim_thr.c \
+	dim/src/utilities.c
+
+libDimExtension_la_SOURCES = src/DimSetup.cc src/DimSetup.h
+
+#libDimCpp_la_CXXFLAGS = $(AM_CXXFLAGS) $(DIM_FLAGS)
+libDim___ladir =
+libDim___la_HEADERS = \
+	dim/dim/dic.hxx \
+	dim/dim/dis.hxx \
+	dim/dim/dim_core.hxx \
+	dim/dim/dim.hxx \
+	dim/dim/dim_tcpip.h \
+	dim/dim/dllist.hxx \
+	dim/dim/sllist.hxx \
+	dim/dim/tokenstring.hxx \
+	src/Dim.h
+libDim___la_SOURCES = \
+	dim/src/diccpp.cxx \
+	dim/src/dimcpp.cxx \
+	dim/src/discpp.cxx \
+	dim/src/tokenstring.cxx 
+
+# Divide into Readline / StateMachine / StateMachineDim / Tools?
+libStateMachine_la_SOURCES = \
+	src/WindowLog.h       src/WindowLog.cc \
+	src/Readline.h        src/Readline.cc \
+	src/ReadlineColor.h   src/ReadlineColor.cc \
+	src/ReadlineWindow.h  src/ReadlineWindow.cc \
+	src/Console.h         src/Console.cc \
+	src/Shell.h           src/Shell.cc \
+	\
+	src/EventImp.h        src/EventImp.cc \
+	src/Event.h           src/Event.cc \
+	src/State.h           src/State.cc \
+	src/Description.h     src/Description.cc \
+	src/MessageImp.h      src/MessageImp.cc \
+	src/Converter.h       src/Converter.cc \
+	src/StateMachineImp.h src/StateMachineImp.cc \
+	src/StateMachine.h    src/StateMachine.cc \
+	\
+	src/EventDim.h \
+	src/MessageDim.h         src/MessageDim.cc \
+	src/StateMachineDim.h    src/StateMachineDim.cc \
+	src/DimServerList.h      src/DimServerList.cc \
+	src/DimServiceInfoList.h src/DimServiceInfoList.cc \
+	src/DimNetworkList.h     src/DimNetwork.cc \
+	src/ServiceList.h        src/ServiceList.cc \
+	src/DimErrorRedirecter.h  \
+	src/DimErrorRedirecter.cc \
+	src/DimDescriptionService.h \
+	src/DimDescriptionService.cc \
+	\
+	src/Connection.h      src/Connection.cc \
+	src/ConnectionUSB.h   src/ConnectionUSB.cc \
+	\
+	FACT.h ByteOrder.h \
+	\
+	src/DimWriteStatistics.h src/DimWriteStatistics.cc
+
+libConfiguration_la_SOURCES = \
+	src/Configuration.h src/Configuration.cc \
+	src/FACT.h src/FACT.cc
+
+libTime_la_SOURCES  = src/Time.h src/Time.cc
+#libAstro_la_SOURCES = src/Astro.h src/Astro.cc
+libTools_la_SOURCES = src/tools.h src/tools.cc
+
+
+dserver2_SOURCES = src/dserver2.cc 
+dserver2_LDADD   = libTime.la libTools.la
+
+ftm_SOURCES = src/ftm.cc src/HeadersFTM.cc
+ftm_LDADD   = libTime.la libTools.la libDim++.la libDim.la libConfiguration.la libDimExtension.la
+
+fad_SOURCES = src/fad.cc src/HeadersFAD.cc
+fad_LDADD   = libTime.la libTools.la libTools.la libDim++.la libDim.la libConfiguration.la libDimExtension.la
+
+fsc_SOURCES = src/fsc.cc
+fsc_LDADD   = libTime.la libTools.la
+
+
+log_SOURCES = src/log.cc
+log_LDADD   = libDim++.la libDim.la libStateMachine.la libTime.la libTools.la
+
+
+logtime_SOURCES = src/logtime.cc
+logtime_LDADD = libStateMachine.la libTools.la libTime.la libDim++.la libDim.la
+
+moon_SOURCES = src/moon.cc
+moon_LDADD = libTime.la libConfiguration.la
+
+makeplots_SOURCES = src/makeplots.cc
+makeplots_LDADD = $(ROOTLDFLAGS) $(ROOTLIBS) libTime.la libConfiguration.la
+
+makedata_SOURCES = src/makedata.cc
+makedata_LDADD = libTime.la libConfiguration.la
+
+
+chatserv_SOURCES = src/chatserv.cc src/LocalControl.h
+chatserv_LDADD = libStateMachine.la libTools.la libConfiguration.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la
+
+
+dclient5_SOURCES = src/dclient5.cc src/LocalControl.h
+dclient5_LDADD   = libDim++.la libDim.la libStateMachine.la libTime.la libTools.la \
+    libConfiguration.la
+
+ftmctrl_SOURCES = src/ftmctrl.cc src/LocalControl.h src/HeadersFTM.cc
+ftmctrl_LDADD   = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTime.la libTools.la \
+	libConfiguration.la
+
+drivectrl_SOURCES = src/drivectrl.cc src/LocalControl.h src/HeadersFTM.cc
+drivectrl_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+agilentctrl_SOURCES = src/agilentctrl.cc src/LocalControl.h src/HeadersAgilent.h
+agilentctrl_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+magicweather_SOURCES = src/magicweather.cc src/LocalControl.h
+magicweather_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+magiclidar_SOURCES = src/magiclidar.cc src/LocalControl.h
+magiclidar_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+tngweather_SOURCES = src/tngweather.cc src/LocalControl.h
+tngweather_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la -lQtXml
+
+lidctrl_SOURCES = src/lidctrl.cc src/LocalControl.h
+lidctrl_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la -lQtXml
+
+gpsctrl_SOURCES = src/gpsctrl.cc src/LocalControl.h
+gpsctrl_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+pfminictrl_SOURCES = src/pfminictrl.cc src/LocalControl.h
+pfminictrl_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+sqmctrl_SOURCES = src/sqmctrl.cc src/LocalControl.h
+sqmctrl_LDADD   = libDim++.la libDim.la libDimExtension.la \
+       libStateMachine.la libTools.la libTime.la \
+       libConfiguration.la
+
+temperature_SOURCES = src/temperature.cc src/LocalControl.h
+temperature_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+pwrctrl_SOURCES = src/pwrctrl.cc src/LocalControl.h \
+	src/HeadersPower.h src/HeadersPower.cc
+pwrctrl_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la -lQtXml
+
+timecheck_SOURCES = src/timecheck.cc src/LocalControl.h
+timecheck_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+smartfact_SOURCES = src/smartfact.cc src/LocalControl.h src/PixelMap.cc
+smartfact_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+evtserver_SOURCES = src/evtserver.cc src/LocalControl.h
+evtserver_LDADD   = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+getevent_SOURCES = src/getevent.cc
+getevent_LDADD   = libTools.la libTime.la libConfiguration.la
+
+fadctrl_SOURCES = src/fadctrl.cc src/LocalControl.h src/HeadersFAD.cc \
+	src/EventBuilder.cc     src/EventBuilder.h \
+	src/DataProcessorImp.cc src/DataProcessorImp.h \
+	src/DataCalib.cc        src/DataCalib.h \
+	src/DataWriteRaw.cc     src/DataWriteRaw.h \
+	src/DrsCalib.h
+if HAS_FITS
+fadctrl_SOURCES += src/FitsFile.h src/FitsFile.cc \
+	src/DataWriteFits.cc    src/DataWriteFits.h \
+	src/DataWriteFits2.cc   src/DataWriteFits2.h
+endif
+fadctrl_LDADD   = libDim++.la libDim.la  libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+fscctrl_SOURCES = src/fscctrl.cc src/LocalControl.h
+fscctrl_LDADD   = libDim++.la libDim.la  libDimExtension.la \
+       libStateMachine.la libTools.la libTime.la \
+       libConfiguration.la
+
+gcn_SOURCES = src/gcn.cc src/LocalControl.h
+gcn_LDADD   = libDim++.la libDim.la  libDimExtension.la \
+       libStateMachine.la libTools.la libTime.la \
+       libConfiguration.la -lQtXml
+
+biasctrl_SOURCES = src/biasctrl.cc src/LocalControl.h src/PixelMap.cc
+biasctrl_LDADD   = libDim++.la libDim.la  libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+mcp_SOURCES = src/mcp.cc src/LocalControl.h
+mcp_LDADD   = libDim++.la libDim.la  libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+feedback_SOURCES = src/feedback.cc src/LocalControl.h src/PixelMap.cc
+feedback_LDADD   = libDim++.la libDim.la  libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+ratescan_SOURCES = src/ratescan.cc src/LocalControl.h src/PixelMap.cc
+ratescan_LDADD   = libDim++.la libDim.la  libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+ratecontrol_SOURCES = src/ratecontrol.cc src/LocalControl.h src/PixelMap.cc
+ratecontrol_LDADD   = libDim++.la libDim.la  libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+
+argv_SOURCES = src/argv.cc
+argv_LDADD = libConfiguration.la
+
+
+dimctrl_SOURCES = src/dimctrl.cc \
+	src/StateMachineDimControl.cc src/StateMachineDimControl.h \
+	src/RemoteControl.cc src/RemoteControl.h \
+	src/InterpreterV8.cc src/InterpreterV8.h \
+	src/DimState.cc src/DimState.h
+dimctrl_LDADD = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+
+dimserver_SOURCES = $(dimctrl_SOURCES)
+dimserver_LDADD = $(dimctrl_LDADD)
+
+
+chatclient_SOURCES = src/chatclient.cc src/ChatClient.h
+chatclient_LDADD = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+
+skypeclient_SOURCES = src/skypeclient.cc src/ChatClient.h
+skypeclient_LDADD = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+
+
+time_SOURCES = src/time.cc
+time_LDADD = libTime.la 
+
+#astro_SOURCES = src/astro.cc
+#astro_LDADD = libAstro.la libTime.la 
+
+test_SOURCES = src/test.cc
+test_LDADD = libStateMachine.la libTools.la libTime.la libDim++.la libDim.la libConfiguration.la
+
+datalogger_SOURCES = src/datalogger.cc src/LocalControl.h src/DimState.cc src/DimState.h
+if HAS_FITS
+datalogger_SOURCES += src/FitsFile.h src/FitsFile.cc src/Fits.h src/Fits.cc
+endif
+datalogger_LDADD  = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+scheduler_SOURCES = src/scheduler.cc src/LocalControl.h 
+scheduler_LDADD   = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+
+fitsloader_SOURCES = src/fitsloader.cc src/LocalControl.h 
+fitsloader_LDADD   = libStateMachine.la libTools.la libTime.la libDim++.la libDim.la libConfiguration.la
+
+fitsdump_SOURCES = src/fitsdump.cc 
+fitsdump_LDADD   = $(ROOTLDFLAGS) $(ROOTLIBS) libTools.la libConfiguration.la libTime.la
+
+fitscheck_SOURCES = src/fitscheck.cc 
+fitscheck_LDADD   = libConfiguration.la
+
+fitsselect_SOURCES = src/fitsselect.cc 
+fitsselect_LDADD   = libConfiguration.la
+
+
+readfits_SOURCES = src/readfits.cc src/ReadFits.h
+readfits_LDADD   = libStateMachine.la libTools.la libTime.la libDim++.la libDim.la libConfiguration.la
+
+zfits_SOURCES = src/zfits.cc externals/huffmans.h
+zfits_LDADD   = libTime.la libConfiguration.la
+
+showlog_SOURCES = src/showlog.cc
+showlog_LDADD   = libTime.la libTools.la libConfiguration.la -lncurses src/WindowLog.lo 
+
+triggerschedule_SOURCES = src/triggerschedule.cc 
+triggerschedule_LDADD   = libDim++.la libDim.la libDimExtension.la libConfiguration.la
+
+#fitsCompressor_SOURCES = src/fitsCompressor.cc 
+#fitsCompressor_LDADD   = libConfiguration.la
+
+#fitsgrep_SOURCES = src/fitsgrep.cc
+#fitsgrep_LDADD   = libConfiguration.la
+
+# -----
+
+if HAS_GUI
+
+fact_DIALOGS = \
+	gui/design.ui
+
+fact_RESOURCES = \
+	gui/design.qrc
+
+fact_QT_SOURCES = \
+	gui/DockWindow.cc \
+	gui/MainWindow.cc \
+	gui/QCameraWidget.cc \
+	gui/BasicGlCamera.cc
+
+fact_SRCADD = $(fact_DIALOGS:.ui=.h) $(fact_RESOURCES:.qrc=.cc) $(fact_QT_SOURCES:.cc=.moc.cc)
+
+endif
+
+# -----
+
+if HAS_VIEWER
+
+viewer_DIALOGS = \
+	gui/RawEventsViewer/viewer.ui
+
+viewer_QT_SOURCES = \
+	gui/RawEventsViewer/RawEventsViewer.cc \
+	gui/BasicGlCamera.cc \
+	gui/QCameraWidget.cc \
+	gui/Q3DCameraWidget.cc
+
+viewer_SRCADD = $(viewer_DIALOGS:.ui=.h) $(viewer_RESOURCES:.qrc=.cc) $(viewer_QT_SOURCES:.cc=.moc.cc)
+
+endif
+
+
+
+BUILT_SOURCES = $(fact_SRCADD) $(viewer_SRCADD)
+	
+CLEANFILES += $(BUILT_SOURCES)
+
+EXTRA_DIST += \
+	$(fact_DIALOGS) $(fact_RESOURCES) \
+	$(viewer_DIALOGS) $(viewer_RESOURCES) 
+
+fact_LDADD = $(ROOTLDFLAGS) $(ROOTGLIBS) $(QT4_LIB) $(QT4_LDFLAGS) -L. \
+	libDim++.la libDim.la libDimExtension.la \
+	libTools.la libStateMachine.la libTime.la libTools.la \
+	libConfiguration.la
+
+fact_SOURCES = $(fact_SRCADD) $(fact_QT_SOURCES) \
+	gui/CheckBoxDelegate.cc gui/HtmlDelegate.cc \
+	gui/fact.cc gui/FactGui.cc src/HeadersFTM.cc \
+	src/PixelMap.cc
+
+# Switch off most qwt warnings
+viewer_CXXFLAGS = $(AM_CXXFLAGS) -Wno-shadow
+
+viewer_LDADD = $(QT4_LIB) $(QT4_LDFLAGS) -L. -lQtOpenGL -lGLU \
+	libDimExtension.la \
+	libConfiguration.la libStateMachine.la libTools.la \
+	libTime.la libDim++.la libDim.la 
+
+viewer_SOURCES = $(viewer_SRCADD) $(viewer_QT_SOURCES) \
+	src/DataProcessorImp.cc src/DataProcessorImp.h \
+	src/FitsFile.cc  src/FitsFile.h \
+	src/Fits.cc      src/Fits.h \
+	src/PixelMap.cc
+
+
+
+#-------------------------------------------------------------------------
+
+SUFFIXES = .moc.cc
+
+.ui.h: $<
+	$(AM_V_GEN)$(UIC4) $< -o $@
+
+.h.moc.cc: $<
+	$(AM_V_GEN)$(MOC4) $(EXTRA_CPPFLAGS) $< -o $@
+
+.qrc.cc: $<
+	$(AM_V_GEN)$(RCC4) -name `echo "$<" | sed 's|^.*/\(.*\)\.qrc$$|\1|'` $< -o $@
+
+
+#-------------------------------------------------------------------------
+
+MAN_TARGETS = $(dist_man1_MANS)
+
+if HAS_GROFF
+
+MAN_TARGETS += $(dist_man1_MANS:.man=.html)
+EXTRA_DIST  += $(dist_man1_MANS:.man=.html) 
+CLEANFILES  += $(dist_man1_MANS:.man=.html) 
+
+if HAS_PS2PDF
+
+MAN_TARGETS += $(dist_man1_MANS:.man=.pdf)
+EXTRA_DIST  += $(dist_man1_MANS:.man=.pdf)
+CLEANFILES  += $(dist_man1_MANS:.man=.pdf)
+endif
+
+endif
+
+if HAS_JSDOC
+JAVA_SCRIPT_DOC=jsdoc
+endif
+
+$(dist_man1_MANS): $(dist_man1_MANS:.man=)
+	@mkdir -p man
+	$(AM_V_GEN)help2man -N -o $@ -m $(@:.man=) ./$(@:.man=)
+
+.man.html: $<
+	$(AM_V_GEN)groff -mandoc `man -w -l $<` -T html > $@
+
+.man.pdf: $<
+	$(AM_V_GEN)groff -mandoc `man -w -l $<` | ps2pdf - $@
+
+jsdoc:
+	@rm -rf www/dimctrl
+	$(AM_V_GEN)jsdoc -r=2 -d=www/dimctrl scripts | grep -v ^java
+
+
+doc: $(MAN_TARGETS) $(JAVA_SCRIPT_DOC) doxygen-run
+	@cd doxygen-doc/html
+	@ln -s index.html main.html
+	@mkdir -p pdf
+	@mkdir -p man
+	@cd pdf
+	@ln -sf ../../../*.pdf .
+	@cd ../man
+	@ln -sf ../../../*.html .
+	@cd ../../..
+
+diff:
+	@svn diff | $(COLORDIFF)
+
+rdiff:
+	@svn diff -r BASE:HEAD . externals | $(COLORDIFF)
+
+status:
+	@svn status -u | grep -v ^\?
+
+#-------------------------------------------------------------------------
+
+# Overwrite rules for silent or other verbosity levels
+#AM_V_MAN = $(AM_MAN_$(V))
+#AM_MAN_ = $(AM_V_GEN)
+#AM_MAN_0 = @echo  "  MAN    "$@;
+
+#$(MyAnalysisDS): $(MyAnalysisH) $(MyAnalysisL)
+#	$(ROOTCINT) -f $@ -c -I$(top_builddir)/config $(INCLUDES) $^
+#	rootcint_files=`echo $@ | sed -ne 's/\(.*\)\..*/\1.cxx \1.h/p'` && \
+#        $(top_srcdir)/config/runsed $(top_srcdir)/config/rootcint.sed $$rootcint_files && \
+#        for i in $$rootcint_files; do \
+#          if test ! `diff $$i $(srcdir)/$$i >/dev/null 2>&1`; then \
+#            cp $$i $(srcdir)/; \
+#          fi; \
+#        done
+
+#CLEANFILES = *~ *.rej *.orig
+#MAINTAINERCLEANFILES = aclocal.m4 config.h.in configure Makefile.in \
+#        stamp-h.in stamp-h[0-9].in
+#DISTCLEANFILES = config.cache config.log
Index: branches/testFACT++branch/Makefile.in
===================================================================
--- branches/testFACT++branch/Makefile.in	(revision 18277)
+++ branches/testFACT++branch/Makefile.in	(revision 18277)
@@ -0,0 +1,3158 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = README $(am__configure_deps) $(dist_man1_MANS) \
+	$(dist_noinst_SCRIPTS) $(libDim___la_HEADERS) \
+	$(libDim_la_HEADERS) $(srcdir)/Makefile.am \
+	$(srcdir)/Makefile.in $(srcdir)/aminclude.am \
+	$(top_srcdir)/configure .aux_dir/compile .aux_dir/config.guess \
+	.aux_dir/config.sub .aux_dir/depcomp .aux_dir/install-sh \
+	.aux_dir/ltmain.sh .aux_dir/missing AUTHORS COPYING ChangeLog \
+	INSTALL NEWS
+bin_PROGRAMS = dns$(EXEEXT) log$(EXEEXT) logtime$(EXEEXT) \
+	time$(EXEEXT) argv$(EXEEXT) dimctrl$(EXEEXT) \
+	dimserver$(EXEEXT) datalogger$(EXEEXT) ftmctrl$(EXEEXT) \
+	fadctrl$(EXEEXT) fscctrl$(EXEEXT) gcn$(EXEEXT) \
+	chatclient$(EXEEXT) chatserv$(EXEEXT) biasctrl$(EXEEXT) \
+	drivectrl$(EXEEXT) agilentctrl$(EXEEXT) mcp$(EXEEXT) \
+	feedback$(EXEEXT) ratescan$(EXEEXT) ratecontrol$(EXEEXT) \
+	tngweather$(EXEEXT) lidctrl$(EXEEXT) gpsctrl$(EXEEXT) \
+	pfminictrl$(EXEEXT) sqmctrl$(EXEEXT) pwrctrl$(EXEEXT) \
+	magicweather$(EXEEXT) magiclidar$(EXEEXT) smartfact$(EXEEXT) \
+	evtserver$(EXEEXT) getevent$(EXEEXT) temperature$(EXEEXT) \
+	timecheck$(EXEEXT) showlog$(EXEEXT) fitsdump$(EXEEXT) \
+	fitscheck$(EXEEXT) fitsselect$(EXEEXT) zfits$(EXEEXT) \
+	$(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
+	$(am__EXEEXT_4) $(am__EXEEXT_5) $(am__EXEEXT_6) \
+	$(am__EXEEXT_7) $(am__EXEEXT_8)
+@HAS_GUI_TRUE@am__append_1 = fact
+@HAS_DBUS_TRUE@am__append_2 = skypeclient
+@HAS_VIEWER_TRUE@am__append_3 = viewer
+@HAS_NOVA_TRUE@am__append_4 = moon
+@HAS_NOVA_TRUE@@HAS_SQL_TRUE@am__append_5 = makedata
+@HAS_NOVA_TRUE@@HAS_ROOT_TRUE@@HAS_SQL_TRUE@am__append_6 = makeplots
+@HAS_LIBXP_TRUE@am__append_7 = did webDid
+
+# This is a trick to be able to build them but not having them in 'all'
+@IS_FALSE@am__append_8 = \
+@IS_FALSE@	ftm fsc fad \
+@IS_FALSE@	test scheduler \
+@IS_FALSE@	triggerschedule \
+@IS_FALSE@	dclient5 dserver2 \
+@IS_FALSE@	fitsloader fitsgrep \
+@IS_FALSE@	sched astro readfits
+
+@HAS_FITS_TRUE@am__append_9 = src/FitsFile.h src/FitsFile.cc \
+@HAS_FITS_TRUE@	src/DataWriteFits.cc    src/DataWriteFits.h \
+@HAS_FITS_TRUE@	src/DataWriteFits2.cc   src/DataWriteFits2.h
+
+@HAS_FITS_TRUE@am__append_10 = src/FitsFile.h src/FitsFile.cc src/Fits.h src/Fits.cc
+@HAS_GROFF_TRUE@am__append_11 = $(dist_man1_MANS:.man=.html)
+@HAS_GROFF_TRUE@am__append_12 = $(dist_man1_MANS:.man=.html) 
+@HAS_GROFF_TRUE@am__append_13 = $(dist_man1_MANS:.man=.html) 
+@HAS_GROFF_TRUE@@HAS_PS2PDF_TRUE@am__append_14 = $(dist_man1_MANS:.man=.pdf)
+@HAS_GROFF_TRUE@@HAS_PS2PDF_TRUE@am__append_15 = $(dist_man1_MANS:.man=.pdf)
+@HAS_GROFF_TRUE@@HAS_PS2PDF_TRUE@am__append_16 = $(dist_man1_MANS:.man=.pdf)
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/.macro_dir/ac_check_class.m4 \
+	$(top_srcdir)/.macro_dir/ac_check_cpp.m4 \
+	$(top_srcdir)/.macro_dir/ac_check_package.m4 \
+	$(top_srcdir)/.macro_dir/ac_check_readline.m4 \
+	$(top_srcdir)/.macro_dir/ac_find_motif.m4 \
+	$(top_srcdir)/.macro_dir/ax_cxx_compile_stdcxx_0x.m4 \
+	$(top_srcdir)/.macro_dir/libtool.m4 \
+	$(top_srcdir)/.macro_dir/ltoptions.m4 \
+	$(top_srcdir)/.macro_dir/ltsugar.m4 \
+	$(top_srcdir)/.macro_dir/ltversion.m4 \
+	$(top_srcdir)/.macro_dir/lt~obsolete.m4 \
+	$(top_srcdir)/.macro_dir/mysql++_devel.m4 \
+	$(top_srcdir)/.macro_dir/mysql_devel.m4 \
+	$(top_srcdir)/.macro_dir/qt4_do_it_all.m4 \
+	$(top_srcdir)/.macro_dir/root_path.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES = g++ gcc
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
+	"$(DESTDIR)$(man1dir)" "$(DESTDIR)$(libDim___ladir)" \
+	"$(DESTDIR)$(libDim_ladir)"
+LTLIBRARIES = $(lib_LTLIBRARIES)
+libConfiguration_la_LIBADD =
+am__dirstamp = $(am__leading_dot)dirstamp
+am_libConfiguration_la_OBJECTS = src/Configuration.lo src/FACT.lo
+libConfiguration_la_OBJECTS = $(am_libConfiguration_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+libDim___la_LIBADD =
+am_libDim___la_OBJECTS = dim/src/diccpp.lo dim/src/dimcpp.lo \
+	dim/src/discpp.lo dim/src/tokenstring.lo
+libDim___la_OBJECTS = $(am_libDim___la_OBJECTS)
+libDim_la_LIBADD =
+am_libDim_la_OBJECTS = dim/src/dic.lo dim/src/dis.lo dim/src/dna.lo \
+	dim/src/sll.lo dim/src/dll.lo dim/src/hash.lo dim/src/swap.lo \
+	dim/src/copy_swap.lo dim/src/open_dns.lo \
+	dim/src/conn_handler.lo dim/src/tcpip.lo dim/src/dtq.lo \
+	dim/src/dim_thr.lo dim/src/utilities.lo
+libDim_la_OBJECTS = $(am_libDim_la_OBJECTS)
+libDimExtension_la_LIBADD =
+am_libDimExtension_la_OBJECTS = src/DimSetup.lo
+libDimExtension_la_OBJECTS = $(am_libDimExtension_la_OBJECTS)
+libStateMachine_la_LIBADD =
+am_libStateMachine_la_OBJECTS = src/WindowLog.lo src/Readline.lo \
+	src/ReadlineColor.lo src/ReadlineWindow.lo src/Console.lo \
+	src/Shell.lo src/EventImp.lo src/Event.lo src/State.lo \
+	src/Description.lo src/MessageImp.lo src/Converter.lo \
+	src/StateMachineImp.lo src/StateMachine.lo src/MessageDim.lo \
+	src/StateMachineDim.lo src/DimServerList.lo \
+	src/DimServiceInfoList.lo src/DimNetwork.lo src/ServiceList.lo \
+	src/DimErrorRedirecter.lo src/DimDescriptionService.lo \
+	src/Connection.lo src/ConnectionUSB.lo \
+	src/DimWriteStatistics.lo
+libStateMachine_la_OBJECTS = $(am_libStateMachine_la_OBJECTS)
+libTime_la_LIBADD =
+am_libTime_la_OBJECTS = src/Time.lo
+libTime_la_OBJECTS = $(am_libTime_la_OBJECTS)
+libTools_la_LIBADD =
+am_libTools_la_OBJECTS = src/tools.lo
+libTools_la_OBJECTS = $(am_libTools_la_OBJECTS)
+@HAS_GUI_TRUE@am__EXEEXT_1 = fact$(EXEEXT)
+@HAS_DBUS_TRUE@am__EXEEXT_2 = skypeclient$(EXEEXT)
+@HAS_VIEWER_TRUE@am__EXEEXT_3 = viewer$(EXEEXT)
+@HAS_NOVA_TRUE@am__EXEEXT_4 = moon$(EXEEXT)
+@HAS_NOVA_TRUE@@HAS_SQL_TRUE@am__EXEEXT_5 = makedata$(EXEEXT)
+@HAS_NOVA_TRUE@@HAS_ROOT_TRUE@@HAS_SQL_TRUE@am__EXEEXT_6 = makeplots$(EXEEXT)
+@HAS_LIBXP_TRUE@am__EXEEXT_7 = did$(EXEEXT) webDid$(EXEEXT)
+@IS_FALSE@am__EXEEXT_8 = ftm$(EXEEXT) fsc$(EXEEXT) fad$(EXEEXT) \
+@IS_FALSE@	test$(EXEEXT) scheduler$(EXEEXT) \
+@IS_FALSE@	triggerschedule$(EXEEXT) dclient5$(EXEEXT) \
+@IS_FALSE@	dserver2$(EXEEXT) fitsloader$(EXEEXT) \
+@IS_FALSE@	fitsgrep$(EXEEXT) sched$(EXEEXT) astro$(EXEEXT) \
+@IS_FALSE@	readfits$(EXEEXT)
+PROGRAMS = $(bin_PROGRAMS)
+am_agilentctrl_OBJECTS = src/agilentctrl.$(OBJEXT)
+agilentctrl_OBJECTS = $(am_agilentctrl_OBJECTS)
+agilentctrl_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_argv_OBJECTS = src/argv.$(OBJEXT)
+argv_OBJECTS = $(am_argv_OBJECTS)
+argv_DEPENDENCIES = libConfiguration.la
+astro_SOURCES = astro.c
+astro_OBJECTS = astro.$(OBJEXT)
+astro_LDADD = $(LDADD)
+am_biasctrl_OBJECTS = src/biasctrl.$(OBJEXT) src/PixelMap.$(OBJEXT)
+biasctrl_OBJECTS = $(am_biasctrl_OBJECTS)
+biasctrl_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_chatclient_OBJECTS = src/chatclient.$(OBJEXT)
+chatclient_OBJECTS = $(am_chatclient_OBJECTS)
+chatclient_DEPENDENCIES = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+am_chatserv_OBJECTS = src/chatserv.$(OBJEXT)
+chatserv_OBJECTS = $(am_chatserv_OBJECTS)
+chatserv_DEPENDENCIES = libStateMachine.la libTools.la \
+	libConfiguration.la libTime.la libDim++.la libDim.la \
+	libDimExtension.la
+am__datalogger_SOURCES_DIST = src/datalogger.cc src/LocalControl.h \
+	src/DimState.cc src/DimState.h src/FitsFile.h src/FitsFile.cc \
+	src/Fits.h src/Fits.cc
+@HAS_FITS_TRUE@am__objects_1 = src/FitsFile.$(OBJEXT) \
+@HAS_FITS_TRUE@	src/Fits.$(OBJEXT)
+am_datalogger_OBJECTS = src/datalogger.$(OBJEXT) \
+	src/DimState.$(OBJEXT) $(am__objects_1)
+datalogger_OBJECTS = $(am_datalogger_OBJECTS)
+datalogger_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_dclient5_OBJECTS = src/dclient5.$(OBJEXT)
+dclient5_OBJECTS = $(am_dclient5_OBJECTS)
+dclient5_DEPENDENCIES = libDim++.la libDim.la libStateMachine.la \
+	libTime.la libTools.la libConfiguration.la
+am_did_OBJECTS = dim/src/did/did-did.$(OBJEXT) \
+	dim/src/did/did-dui_util.$(OBJEXT)
+did_OBJECTS = $(am_did_OBJECTS)
+did_DEPENDENCIES = libDim.la
+am_dimctrl_OBJECTS = src/dimctrl.$(OBJEXT) \
+	src/StateMachineDimControl.$(OBJEXT) \
+	src/RemoteControl.$(OBJEXT) src/InterpreterV8.$(OBJEXT) \
+	src/DimState.$(OBJEXT)
+dimctrl_OBJECTS = $(am_dimctrl_OBJECTS)
+dimctrl_DEPENDENCIES = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+am__objects_2 = src/dimctrl.$(OBJEXT) \
+	src/StateMachineDimControl.$(OBJEXT) \
+	src/RemoteControl.$(OBJEXT) src/InterpreterV8.$(OBJEXT) \
+	src/DimState.$(OBJEXT)
+am_dimserver_OBJECTS = $(am__objects_2)
+dimserver_OBJECTS = $(am_dimserver_OBJECTS)
+dimserver_DEPENDENCIES = $(dimctrl_LDADD)
+am_dns_OBJECTS = src/dns.$(OBJEXT)
+dns_OBJECTS = $(am_dns_OBJECTS)
+dns_DEPENDENCIES = libDim.la libDimExtension.la
+am_drivectrl_OBJECTS = src/drivectrl.$(OBJEXT) \
+	src/HeadersFTM.$(OBJEXT)
+drivectrl_OBJECTS = $(am_drivectrl_OBJECTS)
+drivectrl_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_dserver2_OBJECTS = src/dserver2.$(OBJEXT)
+dserver2_OBJECTS = $(am_dserver2_OBJECTS)
+dserver2_DEPENDENCIES = libTime.la libTools.la
+am_evtserver_OBJECTS = src/evtserver.$(OBJEXT)
+evtserver_OBJECTS = $(am_evtserver_OBJECTS)
+evtserver_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am__fact_SOURCES_DIST = gui/design.h gui/design.cc \
+	gui/DockWindow.moc.cc gui/MainWindow.moc.cc \
+	gui/QCameraWidget.moc.cc gui/BasicGlCamera.moc.cc \
+	gui/DockWindow.cc gui/MainWindow.cc gui/QCameraWidget.cc \
+	gui/BasicGlCamera.cc gui/CheckBoxDelegate.cc \
+	gui/HtmlDelegate.cc gui/fact.cc gui/FactGui.cc \
+	src/HeadersFTM.cc src/PixelMap.cc
+am__objects_3 =
+@HAS_GUI_TRUE@am__objects_4 = gui/design.$(OBJEXT)
+@HAS_GUI_TRUE@am__objects_5 = gui/DockWindow.moc.$(OBJEXT) \
+@HAS_GUI_TRUE@	gui/MainWindow.moc.$(OBJEXT) \
+@HAS_GUI_TRUE@	gui/QCameraWidget.moc.$(OBJEXT) \
+@HAS_GUI_TRUE@	gui/BasicGlCamera.moc.$(OBJEXT)
+@HAS_GUI_TRUE@am__objects_6 = $(am__objects_3) $(am__objects_4) \
+@HAS_GUI_TRUE@	$(am__objects_5)
+@HAS_GUI_TRUE@am__objects_7 = gui/DockWindow.$(OBJEXT) \
+@HAS_GUI_TRUE@	gui/MainWindow.$(OBJEXT) \
+@HAS_GUI_TRUE@	gui/QCameraWidget.$(OBJEXT) \
+@HAS_GUI_TRUE@	gui/BasicGlCamera.$(OBJEXT)
+am_fact_OBJECTS = $(am__objects_6) $(am__objects_7) \
+	gui/CheckBoxDelegate.$(OBJEXT) gui/HtmlDelegate.$(OBJEXT) \
+	gui/fact.$(OBJEXT) gui/FactGui.$(OBJEXT) \
+	src/HeadersFTM.$(OBJEXT) src/PixelMap.$(OBJEXT)
+fact_OBJECTS = $(am_fact_OBJECTS)
+am__DEPENDENCIES_1 =
+fact_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) libDim++.la \
+	libDim.la libDimExtension.la libTools.la libStateMachine.la \
+	libTime.la libTools.la libConfiguration.la
+am_fad_OBJECTS = src/fad.$(OBJEXT) src/HeadersFAD.$(OBJEXT)
+fad_OBJECTS = $(am_fad_OBJECTS)
+fad_DEPENDENCIES = libTime.la libTools.la libTools.la libDim++.la \
+	libDim.la libConfiguration.la libDimExtension.la
+am__fadctrl_SOURCES_DIST = src/fadctrl.cc src/LocalControl.h \
+	src/HeadersFAD.cc src/EventBuilder.cc src/EventBuilder.h \
+	src/DataProcessorImp.cc src/DataProcessorImp.h \
+	src/DataCalib.cc src/DataCalib.h src/DataWriteRaw.cc \
+	src/DataWriteRaw.h src/DrsCalib.h src/FitsFile.h \
+	src/FitsFile.cc src/DataWriteFits.cc src/DataWriteFits.h \
+	src/DataWriteFits2.cc src/DataWriteFits2.h
+@HAS_FITS_TRUE@am__objects_8 = src/FitsFile.$(OBJEXT) \
+@HAS_FITS_TRUE@	src/DataWriteFits.$(OBJEXT) \
+@HAS_FITS_TRUE@	src/DataWriteFits2.$(OBJEXT)
+am_fadctrl_OBJECTS = src/fadctrl.$(OBJEXT) src/HeadersFAD.$(OBJEXT) \
+	src/EventBuilder.$(OBJEXT) src/DataProcessorImp.$(OBJEXT) \
+	src/DataCalib.$(OBJEXT) src/DataWriteRaw.$(OBJEXT) \
+	$(am__objects_8)
+fadctrl_OBJECTS = $(am_fadctrl_OBJECTS)
+fadctrl_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_feedback_OBJECTS = src/feedback.$(OBJEXT) src/PixelMap.$(OBJEXT)
+feedback_OBJECTS = $(am_feedback_OBJECTS)
+feedback_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_fitscheck_OBJECTS = src/fitscheck.$(OBJEXT)
+fitscheck_OBJECTS = $(am_fitscheck_OBJECTS)
+fitscheck_DEPENDENCIES = libConfiguration.la
+am_fitsdump_OBJECTS = src/fitsdump.$(OBJEXT)
+fitsdump_OBJECTS = $(am_fitsdump_OBJECTS)
+fitsdump_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	libTools.la libConfiguration.la libTime.la
+fitsgrep_SOURCES = fitsgrep.c
+fitsgrep_OBJECTS = fitsgrep.$(OBJEXT)
+fitsgrep_LDADD = $(LDADD)
+am_fitsloader_OBJECTS = src/fitsloader.$(OBJEXT)
+fitsloader_OBJECTS = $(am_fitsloader_OBJECTS)
+fitsloader_DEPENDENCIES = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libConfiguration.la
+am_fitsselect_OBJECTS = src/fitsselect.$(OBJEXT)
+fitsselect_OBJECTS = $(am_fitsselect_OBJECTS)
+fitsselect_DEPENDENCIES = libConfiguration.la
+am_fsc_OBJECTS = src/fsc.$(OBJEXT)
+fsc_OBJECTS = $(am_fsc_OBJECTS)
+fsc_DEPENDENCIES = libTime.la libTools.la
+am_fscctrl_OBJECTS = src/fscctrl.$(OBJEXT)
+fscctrl_OBJECTS = $(am_fscctrl_OBJECTS)
+fscctrl_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_ftm_OBJECTS = src/ftm.$(OBJEXT) src/HeadersFTM.$(OBJEXT)
+ftm_OBJECTS = $(am_ftm_OBJECTS)
+ftm_DEPENDENCIES = libTime.la libTools.la libDim++.la libDim.la \
+	libConfiguration.la libDimExtension.la
+am_ftmctrl_OBJECTS = src/ftmctrl.$(OBJEXT) src/HeadersFTM.$(OBJEXT)
+ftmctrl_OBJECTS = $(am_ftmctrl_OBJECTS)
+ftmctrl_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTime.la libTools.la libConfiguration.la
+am_gcn_OBJECTS = src/gcn.$(OBJEXT)
+gcn_OBJECTS = $(am_gcn_OBJECTS)
+gcn_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_getevent_OBJECTS = src/getevent.$(OBJEXT)
+getevent_OBJECTS = $(am_getevent_OBJECTS)
+getevent_DEPENDENCIES = libTools.la libTime.la libConfiguration.la
+am_gpsctrl_OBJECTS = src/gpsctrl.$(OBJEXT)
+gpsctrl_OBJECTS = $(am_gpsctrl_OBJECTS)
+gpsctrl_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_lidctrl_OBJECTS = src/lidctrl.$(OBJEXT)
+lidctrl_OBJECTS = $(am_lidctrl_OBJECTS)
+lidctrl_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_log_OBJECTS = src/log.$(OBJEXT)
+log_OBJECTS = $(am_log_OBJECTS)
+log_DEPENDENCIES = libDim++.la libDim.la libStateMachine.la libTime.la \
+	libTools.la
+am_logtime_OBJECTS = src/logtime.$(OBJEXT)
+logtime_OBJECTS = $(am_logtime_OBJECTS)
+logtime_DEPENDENCIES = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la
+am_magiclidar_OBJECTS = src/magiclidar.$(OBJEXT)
+magiclidar_OBJECTS = $(am_magiclidar_OBJECTS)
+magiclidar_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_magicweather_OBJECTS = src/magicweather.$(OBJEXT)
+magicweather_OBJECTS = $(am_magicweather_OBJECTS)
+magicweather_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_makedata_OBJECTS = src/makedata.$(OBJEXT)
+makedata_OBJECTS = $(am_makedata_OBJECTS)
+makedata_DEPENDENCIES = libTime.la libConfiguration.la
+am_makeplots_OBJECTS = src/makeplots.$(OBJEXT)
+makeplots_OBJECTS = $(am_makeplots_OBJECTS)
+makeplots_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	libTime.la libConfiguration.la
+am_mcp_OBJECTS = src/mcp.$(OBJEXT)
+mcp_OBJECTS = $(am_mcp_OBJECTS)
+mcp_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_moon_OBJECTS = src/moon.$(OBJEXT)
+moon_OBJECTS = $(am_moon_OBJECTS)
+moon_DEPENDENCIES = libTime.la libConfiguration.la
+am_pfminictrl_OBJECTS = src/pfminictrl.$(OBJEXT)
+pfminictrl_OBJECTS = $(am_pfminictrl_OBJECTS)
+pfminictrl_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_pwrctrl_OBJECTS = src/pwrctrl.$(OBJEXT) src/HeadersPower.$(OBJEXT)
+pwrctrl_OBJECTS = $(am_pwrctrl_OBJECTS)
+pwrctrl_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_ratecontrol_OBJECTS = src/ratecontrol.$(OBJEXT) \
+	src/PixelMap.$(OBJEXT)
+ratecontrol_OBJECTS = $(am_ratecontrol_OBJECTS)
+ratecontrol_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_ratescan_OBJECTS = src/ratescan.$(OBJEXT) src/PixelMap.$(OBJEXT)
+ratescan_OBJECTS = $(am_ratescan_OBJECTS)
+ratescan_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_readfits_OBJECTS = src/readfits.$(OBJEXT)
+readfits_OBJECTS = $(am_readfits_OBJECTS)
+readfits_DEPENDENCIES = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libConfiguration.la
+sched_SOURCES = sched.c
+sched_OBJECTS = sched.$(OBJEXT)
+sched_LDADD = $(LDADD)
+am_scheduler_OBJECTS = src/scheduler.$(OBJEXT)
+scheduler_OBJECTS = $(am_scheduler_OBJECTS)
+scheduler_DEPENDENCIES = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+am_showlog_OBJECTS = src/showlog.$(OBJEXT)
+showlog_OBJECTS = $(am_showlog_OBJECTS)
+showlog_DEPENDENCIES = libTime.la libTools.la libConfiguration.la \
+	src/WindowLog.lo
+am_skypeclient_OBJECTS = src/skypeclient.$(OBJEXT)
+skypeclient_OBJECTS = $(am_skypeclient_OBJECTS)
+skypeclient_DEPENDENCIES = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+am_smartfact_OBJECTS = src/smartfact.$(OBJEXT) src/PixelMap.$(OBJEXT)
+smartfact_OBJECTS = $(am_smartfact_OBJECTS)
+smartfact_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_sqmctrl_OBJECTS = src/sqmctrl.$(OBJEXT)
+sqmctrl_OBJECTS = $(am_sqmctrl_OBJECTS)
+sqmctrl_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_temperature_OBJECTS = src/temperature.$(OBJEXT)
+temperature_OBJECTS = $(am_temperature_OBJECTS)
+temperature_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_test_OBJECTS = src/test.$(OBJEXT)
+test_OBJECTS = $(am_test_OBJECTS)
+test_DEPENDENCIES = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libConfiguration.la
+am_time_OBJECTS = src/time.$(OBJEXT)
+time_OBJECTS = $(am_time_OBJECTS)
+time_DEPENDENCIES = libTime.la
+am_timecheck_OBJECTS = src/timecheck.$(OBJEXT)
+timecheck_OBJECTS = $(am_timecheck_OBJECTS)
+timecheck_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_tngweather_OBJECTS = src/tngweather.$(OBJEXT)
+tngweather_OBJECTS = $(am_tngweather_OBJECTS)
+tngweather_DEPENDENCIES = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la libConfiguration.la
+am_triggerschedule_OBJECTS = src/triggerschedule.$(OBJEXT)
+triggerschedule_OBJECTS = $(am_triggerschedule_OBJECTS)
+triggerschedule_DEPENDENCIES = libDim++.la libDim.la \
+	libDimExtension.la libConfiguration.la
+am__viewer_SOURCES_DIST = gui/RawEventsViewer/viewer.h \
+	gui/RawEventsViewer/RawEventsViewer.moc.cc \
+	gui/BasicGlCamera.moc.cc gui/QCameraWidget.moc.cc \
+	gui/Q3DCameraWidget.moc.cc \
+	gui/RawEventsViewer/RawEventsViewer.cc gui/BasicGlCamera.cc \
+	gui/QCameraWidget.cc gui/Q3DCameraWidget.cc \
+	src/DataProcessorImp.cc src/DataProcessorImp.h src/FitsFile.cc \
+	src/FitsFile.h src/Fits.cc src/Fits.h src/PixelMap.cc
+@HAS_VIEWER_TRUE@am__objects_9 = gui/RawEventsViewer/viewer-RawEventsViewer.moc.$(OBJEXT) \
+@HAS_VIEWER_TRUE@	gui/viewer-BasicGlCamera.moc.$(OBJEXT) \
+@HAS_VIEWER_TRUE@	gui/viewer-QCameraWidget.moc.$(OBJEXT) \
+@HAS_VIEWER_TRUE@	gui/viewer-Q3DCameraWidget.moc.$(OBJEXT)
+@HAS_VIEWER_TRUE@am__objects_10 = $(am__objects_3) $(am__objects_9)
+@HAS_VIEWER_TRUE@am__objects_11 = gui/RawEventsViewer/viewer-RawEventsViewer.$(OBJEXT) \
+@HAS_VIEWER_TRUE@	gui/viewer-BasicGlCamera.$(OBJEXT) \
+@HAS_VIEWER_TRUE@	gui/viewer-QCameraWidget.$(OBJEXT) \
+@HAS_VIEWER_TRUE@	gui/viewer-Q3DCameraWidget.$(OBJEXT)
+am_viewer_OBJECTS = $(am__objects_10) $(am__objects_11) \
+	src/viewer-DataProcessorImp.$(OBJEXT) \
+	src/viewer-FitsFile.$(OBJEXT) src/viewer-Fits.$(OBJEXT) \
+	src/viewer-PixelMap.$(OBJEXT)
+viewer_OBJECTS = $(am_viewer_OBJECTS)
+viewer_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	libDimExtension.la libConfiguration.la libStateMachine.la \
+	libTools.la libTime.la libDim++.la libDim.la
+viewer_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(viewer_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_webDid_OBJECTS = dim/src/webDid/webDid-webDid.$(OBJEXT) \
+	src/webDid-webServer.$(OBJEXT) \
+	dim/src/webDid/webDid-webTcpip.$(OBJEXT)
+webDid_OBJECTS = $(am_webDid_OBJECTS)
+webDid_DEPENDENCIES = libDim.la
+am_zfits_OBJECTS = src/zfits.$(OBJEXT)
+zfits_OBJECTS = $(am_zfits_OBJECTS)
+zfits_DEPENDENCIES = libTime.la libConfiguration.la
+SCRIPTS = $(dist_noinst_SCRIPTS)
+DEFAULT_INCLUDES = -I.@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/.aux_dir/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_@AM_V@)
+am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX   " $@;
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(libConfiguration_la_SOURCES) $(libDim___la_SOURCES) \
+	$(libDim_la_SOURCES) $(libDimExtension_la_SOURCES) \
+	$(libStateMachine_la_SOURCES) $(libTime_la_SOURCES) \
+	$(libTools_la_SOURCES) $(agilentctrl_SOURCES) $(argv_SOURCES) \
+	astro.c $(biasctrl_SOURCES) $(chatclient_SOURCES) \
+	$(chatserv_SOURCES) $(datalogger_SOURCES) $(dclient5_SOURCES) \
+	$(did_SOURCES) $(dimctrl_SOURCES) $(dimserver_SOURCES) \
+	$(dns_SOURCES) $(drivectrl_SOURCES) $(dserver2_SOURCES) \
+	$(evtserver_SOURCES) $(fact_SOURCES) $(fad_SOURCES) \
+	$(fadctrl_SOURCES) $(feedback_SOURCES) $(fitscheck_SOURCES) \
+	$(fitsdump_SOURCES) fitsgrep.c $(fitsloader_SOURCES) \
+	$(fitsselect_SOURCES) $(fsc_SOURCES) $(fscctrl_SOURCES) \
+	$(ftm_SOURCES) $(ftmctrl_SOURCES) $(gcn_SOURCES) \
+	$(getevent_SOURCES) $(gpsctrl_SOURCES) $(lidctrl_SOURCES) \
+	$(log_SOURCES) $(logtime_SOURCES) $(magiclidar_SOURCES) \
+	$(magicweather_SOURCES) $(makedata_SOURCES) \
+	$(makeplots_SOURCES) $(mcp_SOURCES) $(moon_SOURCES) \
+	$(pfminictrl_SOURCES) $(pwrctrl_SOURCES) \
+	$(ratecontrol_SOURCES) $(ratescan_SOURCES) $(readfits_SOURCES) \
+	sched.c $(scheduler_SOURCES) $(showlog_SOURCES) \
+	$(skypeclient_SOURCES) $(smartfact_SOURCES) $(sqmctrl_SOURCES) \
+	$(temperature_SOURCES) $(test_SOURCES) $(time_SOURCES) \
+	$(timecheck_SOURCES) $(tngweather_SOURCES) \
+	$(triggerschedule_SOURCES) $(viewer_SOURCES) $(webDid_SOURCES) \
+	$(zfits_SOURCES)
+DIST_SOURCES = $(libConfiguration_la_SOURCES) $(libDim___la_SOURCES) \
+	$(libDim_la_SOURCES) $(libDimExtension_la_SOURCES) \
+	$(libStateMachine_la_SOURCES) $(libTime_la_SOURCES) \
+	$(libTools_la_SOURCES) $(agilentctrl_SOURCES) $(argv_SOURCES) \
+	astro.c $(biasctrl_SOURCES) $(chatclient_SOURCES) \
+	$(chatserv_SOURCES) $(am__datalogger_SOURCES_DIST) \
+	$(dclient5_SOURCES) $(did_SOURCES) $(dimctrl_SOURCES) \
+	$(dimserver_SOURCES) $(dns_SOURCES) $(drivectrl_SOURCES) \
+	$(dserver2_SOURCES) $(evtserver_SOURCES) \
+	$(am__fact_SOURCES_DIST) $(fad_SOURCES) \
+	$(am__fadctrl_SOURCES_DIST) $(feedback_SOURCES) \
+	$(fitscheck_SOURCES) $(fitsdump_SOURCES) fitsgrep.c \
+	$(fitsloader_SOURCES) $(fitsselect_SOURCES) $(fsc_SOURCES) \
+	$(fscctrl_SOURCES) $(ftm_SOURCES) $(ftmctrl_SOURCES) \
+	$(gcn_SOURCES) $(getevent_SOURCES) $(gpsctrl_SOURCES) \
+	$(lidctrl_SOURCES) $(log_SOURCES) $(logtime_SOURCES) \
+	$(magiclidar_SOURCES) $(magicweather_SOURCES) \
+	$(makedata_SOURCES) $(makeplots_SOURCES) $(mcp_SOURCES) \
+	$(moon_SOURCES) $(pfminictrl_SOURCES) $(pwrctrl_SOURCES) \
+	$(ratecontrol_SOURCES) $(ratescan_SOURCES) $(readfits_SOURCES) \
+	sched.c $(scheduler_SOURCES) $(showlog_SOURCES) \
+	$(skypeclient_SOURCES) $(smartfact_SOURCES) $(sqmctrl_SOURCES) \
+	$(temperature_SOURCES) $(test_SOURCES) $(time_SOURCES) \
+	$(timecheck_SOURCES) $(tngweather_SOURCES) \
+	$(triggerschedule_SOURCES) $(am__viewer_SOURCES_DIST) \
+	$(webDid_SOURCES) $(zfits_SOURCES)
+man1dir = $(mandir)/man1
+NROFF = nroff
+MANS = $(dist_man1_MANS)
+HEADERS = $(libDim___la_HEADERS) $(libDim_la_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && rm -rf "$(distdir)" \
+      || { sleep 5 && rm -rf "$(distdir)"; }; \
+  else :; fi
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_ASIO_LIB = @BOOST_ASIO_LIB@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_DATE_TIME_LIB = @BOOST_DATE_TIME_LIB@
+BOOST_FILESYSTEM_LIB = @BOOST_FILESYSTEM_LIB@
+BOOST_LDFLAGS = @BOOST_LDFLAGS@
+BOOST_PROGRAM_OPTIONS_LIB = @BOOST_PROGRAM_OPTIONS_LIB@
+BOOST_REGEX_LIB = @BOOST_REGEX_LIB@
+BOOST_SYSTEM_LIB = @BOOST_SYSTEM_LIB@
+BOOST_THREAD_LIB = @BOOST_THREAD_LIB@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+COLORDIFF = @COLORDIFF@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DX_CONFIG = @DX_CONFIG@
+DX_DOCDIR = @DX_DOCDIR@
+DX_DOT = @DX_DOT@
+DX_DOXYGEN = @DX_DOXYGEN@
+DX_DVIPS = @DX_DVIPS@
+DX_EGREP = @DX_EGREP@
+DX_ENV = @DX_ENV@
+DX_FLAG_chi = @DX_FLAG_chi@
+DX_FLAG_chm = @DX_FLAG_chm@
+DX_FLAG_doc = @DX_FLAG_doc@
+DX_FLAG_dot = @DX_FLAG_dot@
+DX_FLAG_html = @DX_FLAG_html@
+DX_FLAG_man = @DX_FLAG_man@
+DX_FLAG_pdf = @DX_FLAG_pdf@
+DX_FLAG_ps = @DX_FLAG_ps@
+DX_FLAG_rtf = @DX_FLAG_rtf@
+DX_FLAG_xml = @DX_FLAG_xml@
+DX_HHC = @DX_HHC@
+DX_LATEX = @DX_LATEX@
+DX_MAKEINDEX = @DX_MAKEINDEX@
+DX_PDFLATEX = @DX_PDFLATEX@
+DX_PERL = @DX_PERL@
+DX_PROJECT = @DX_PROJECT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+GROFF = @GROFF@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JSDOC = @JSDOC@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_HAVE_XP = @LT_HAVE_XP@
+MAILX = @MAILX@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MOC4 = @MOC4@
+MOTIF_CFLAGS = @MOTIF_CFLAGS@
+MOTIF_INCL = @MOTIF_INCL@
+MOTIF_LDFLAGS = @MOTIF_LDFLAGS@
+MOTIF_LIBS = @MOTIF_LIBS@
+MYSQLPP_INC_DIR = @MYSQLPP_INC_DIR@
+MYSQLPP_LIB_DIR = @MYSQLPP_LIB_DIR@
+MYSQL_C_INC_DIR = @MYSQL_C_INC_DIR@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+PS2PDF = @PS2PDF@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+QT4DIR = @QT4DIR@
+QT4_CORE_CFLAGS = @QT4_CORE_CFLAGS@
+QT4_CORE_INCLUDES = @QT4_CORE_INCLUDES@
+QT4_CORE_LDFLAGS = @QT4_CORE_LDFLAGS@
+QT4_CORE_LIB = @QT4_CORE_LIB@
+QT4_CORE_LIBS = @QT4_CORE_LIBS@
+QT4_FRONTEND_CFLAGS = @QT4_FRONTEND_CFLAGS@
+QT4_FRONTEND_LIBS = @QT4_FRONTEND_LIBS@
+QT4_INCLUDES = @QT4_INCLUDES@
+QT4_LDFLAGS = @QT4_LDFLAGS@
+QT4_LIB = @QT4_LIB@
+QT4_VERSION = @QT4_VERSION@
+RANLIB = @RANLIB@
+RCC4 = @RCC4@
+READLINE_INCLUDES = @READLINE_INCLUDES@
+READLINE_LIBS = @READLINE_LIBS@
+ROOTAUXCFLAGS = @ROOTAUXCFLAGS@
+ROOTAUXLIBS = @ROOTAUXLIBS@
+ROOTCFLAGS = @ROOTCFLAGS@
+ROOTCINT = @ROOTCINT@
+ROOTCONF = @ROOTCONF@
+ROOTCPPFLAGS = @ROOTCPPFLAGS@
+ROOTEXEC = @ROOTEXEC@
+ROOTGLIBS = @ROOTGLIBS@
+ROOTINCDIR = @ROOTINCDIR@
+ROOTLDFLAGS = @ROOTLDFLAGS@
+ROOTLIBDIR = @ROOTLIBDIR@
+ROOTLIBS = @ROOTLIBS@
+ROOTRPATH = @ROOTRPATH@
+ROOTSOVERSION = @ROOTSOVERSION@
+ROOTVERSION = @ROOTVERSION@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+UIC4 = @UIC4@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@DX_COND_doc_TRUE@@DX_COND_html_TRUE@DX_CLEAN_HTML = @DX_DOCDIR@/html
+@DX_COND_chm_TRUE@@DX_COND_doc_TRUE@DX_CLEAN_CHM = @DX_DOCDIR@/chm
+@DX_COND_chi_TRUE@@DX_COND_chm_TRUE@@DX_COND_doc_TRUE@DX_CLEAN_CHI = @DX_DOCDIR@/@PACKAGE@.chi
+@DX_COND_doc_TRUE@@DX_COND_man_TRUE@DX_CLEAN_MAN = @DX_DOCDIR@/man
+@DX_COND_doc_TRUE@@DX_COND_rtf_TRUE@DX_CLEAN_RTF = @DX_DOCDIR@/rtf
+@DX_COND_doc_TRUE@@DX_COND_xml_TRUE@DX_CLEAN_XML = @DX_DOCDIR@/xml
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@DX_CLEAN_PS = @DX_DOCDIR@/@PACKAGE@.ps
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@DX_PS_GOAL = doxygen-ps
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@DX_CLEAN_PDF = @DX_DOCDIR@/@PACKAGE@.pdf
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@DX_PDF_GOAL = doxygen-pdf
+@DX_COND_doc_TRUE@@DX_COND_latex_TRUE@DX_CLEAN_LATEX = @DX_DOCDIR@/latex
+@DX_COND_doc_TRUE@DX_CLEANFILES = \
+@DX_COND_doc_TRUE@    @DX_DOCDIR@/@PACKAGE@.tag \
+@DX_COND_doc_TRUE@    -r \
+@DX_COND_doc_TRUE@    $(DX_CLEAN_HTML) \
+@DX_COND_doc_TRUE@    $(DX_CLEAN_CHM) \
+@DX_COND_doc_TRUE@    $(DX_CLEAN_CHI) \
+@DX_COND_doc_TRUE@    $(DX_CLEAN_MAN) \
+@DX_COND_doc_TRUE@    $(DX_CLEAN_RTF) \
+@DX_COND_doc_TRUE@    $(DX_CLEAN_XML) \
+@DX_COND_doc_TRUE@    $(DX_CLEAN_PS) \
+@DX_COND_doc_TRUE@    $(DX_CLEAN_PDF) \
+@DX_COND_doc_TRUE@    $(DX_CLEAN_LATEX)
+
+
+#-------------------------------------------------------------------------
+ACLOCAL_AMFLAGS = -I .macro_dir
+SVN_REVISION = -DREVISION=\"`svnversion -n .`\"
+DIM_FLAGS = -DMIPSEL -DPROTOCOL=1 -Dunix -Dlinux
+BOOST_FLAGS = -DBOOST_DISABLE_ASSERTS
+AM_CPPFLAGS = -Idim/dim $(DIM_FLAGS) $(BOOST_FLAGS) $(ROOTCPPFLAGS) \
+   -Wall -Winit-self -Wpointer-arith -Wcast-align -Wextra -Wformat=2 \
+   $(SVN_REVISION)
+
+AM_CXXFLAGS = $(AM_CPPFLAGS) \
+   -Woverloaded-virtual -Wnon-virtual-dtor -Wshadow
+
+
+# -no-undefined
+AM_LDFLAGS = -module -avoid-version
+lib_LTLIBRARIES = \
+	libDim++.la libDim.la libDimExtension.la \
+	libConfiguration.la libStateMachine.la libTime.la libTools.la
+
+# 	libAstro.la
+@HAS_HELP2MAN_TRUE@dist_man1_MANS = \
+@HAS_HELP2MAN_TRUE@	biasctrl.man \
+@HAS_HELP2MAN_TRUE@	datalogger.man \
+@HAS_HELP2MAN_TRUE@	dimctrl.man \
+@HAS_HELP2MAN_TRUE@	dimserver.man \
+@HAS_HELP2MAN_TRUE@	drivectrl.man \
+@HAS_HELP2MAN_TRUE@	evtserver.man \
+@HAS_HELP2MAN_TRUE@	fadctrl.man \
+@HAS_HELP2MAN_TRUE@	feedback.man \
+@HAS_HELP2MAN_TRUE@	fitsdump.man \
+@HAS_HELP2MAN_TRUE@	fitscheck.man \
+@HAS_HELP2MAN_TRUE@	fitsselect.man \
+@HAS_HELP2MAN_TRUE@	fscctrl.man \
+@HAS_HELP2MAN_TRUE@	ftmctrl.man \
+@HAS_HELP2MAN_TRUE@	getevent.man \
+@HAS_HELP2MAN_TRUE@	gpsctrl.man \
+@HAS_HELP2MAN_TRUE@	lidctrl.man \
+@HAS_HELP2MAN_TRUE@	magiclidar.man \
+@HAS_HELP2MAN_TRUE@	magicweather.man \
+@HAS_HELP2MAN_TRUE@	mcp.man \
+@HAS_HELP2MAN_TRUE@	pfminictrl.man \
+@HAS_HELP2MAN_TRUE@	pwrctrl.man \
+@HAS_HELP2MAN_TRUE@	ratecontrol.man \
+@HAS_HELP2MAN_TRUE@	ratescan.man \
+@HAS_HELP2MAN_TRUE@	showlog.man \
+@HAS_HELP2MAN_TRUE@	smartfact.man \
+@HAS_HELP2MAN_TRUE@	sqmctrl.man \
+@HAS_HELP2MAN_TRUE@	temperature.man \
+@HAS_HELP2MAN_TRUE@	timecheck.man \
+@HAS_HELP2MAN_TRUE@	tngweather.man \
+@HAS_HELP2MAN_TRUE@	zfits.man
+
+
+#-------------------------------------------------------------------------
+CLEANFILES = $(BUILT_SOURCES) $(am__append_13) $(am__append_16)
+dist_noinst_SCRIPTS = autogen.sh
+EXTRA_DIST = Doxyfile dim/DIM_Performance.pdf dim/LICENSE.GPL \
+	dim/README.txt dim/README_v9.txt dim/README_v10.txt \
+	dim/README_v11.txt dim/README_v12.txt dim/README_v13.txt \
+	dim/README_v14.txt dim/README_v17.txt dim/README_v16.txt \
+	dim/README_v17.txt dim/README_v18.txt dim/README_v19.txt \
+	$(fact_DIALOGS) $(fact_RESOURCES) $(viewer_DIALOGS) \
+	$(viewer_RESOURCES) $(am__append_12) $(am__append_15)
+dns_LDADD = libDim.la libDimExtension.la
+dns_SOURCES = src/dns.c
+#dns_CPPFLAGS = $(AM_CPPFLAGS) $(DIM_FLAGS)
+did_LDADD = libDim.la 
+did_CPPFLAGS = $(AM_CPPFLAGS) -Idim/src/did 
+did_SOURCES = \
+	dim/src/did/did.c dim/src/did/did.h \
+	dim/src/did/dui_util.c dim/src/did/dui_util.h \
+	dim/src/did/dui_colors.h
+
+webDid_LDADD = libDim.la 
+webDid_CPPFLAGS = $(AM_CPPFLAGS) -Idim/src/did 
+webDid_SOURCES = \
+	dim/src/webDid/webDid.c \
+	src/webServer.c \
+	dim/src/webDid/webTcpip.c
+
+
+#libDim_la_CPPFLAGS = $(AM_CPPFLAGS) $(DIM_FLAGS)
+libDim_ladir = 
+libDim_la_HEADERS = \
+	dim/dim/dic.h \
+	dim/dim/dim_common.h \
+	dim/dim/dim.h \
+	dim/dim/dim_tcpip.h \
+	dim/dim/dis.h 
+
+libDim_la_SOURCES = \
+	dim/src/dic.c \
+	dim/src/dis.c \
+	dim/src/dna.c \
+	dim/src/sll.c \
+	dim/src/dll.c  \
+	dim/src/hash.c \
+	dim/src/swap.c \
+	dim/src/copy_swap.c \
+	dim/src/open_dns.c \
+	dim/src/conn_handler.c \
+	dim/src/tcpip.c \
+	dim/src/dtq.c \
+	dim/src/dim_thr.c \
+	dim/src/utilities.c
+
+libDimExtension_la_SOURCES = src/DimSetup.cc src/DimSetup.h
+
+#libDimCpp_la_CXXFLAGS = $(AM_CXXFLAGS) $(DIM_FLAGS)
+libDim___ladir = 
+libDim___la_HEADERS = \
+	dim/dim/dic.hxx \
+	dim/dim/dis.hxx \
+	dim/dim/dim_core.hxx \
+	dim/dim/dim.hxx \
+	dim/dim/dim_tcpip.h \
+	dim/dim/dllist.hxx \
+	dim/dim/sllist.hxx \
+	dim/dim/tokenstring.hxx \
+	src/Dim.h
+
+libDim___la_SOURCES = \
+	dim/src/diccpp.cxx \
+	dim/src/dimcpp.cxx \
+	dim/src/discpp.cxx \
+	dim/src/tokenstring.cxx 
+
+
+# Divide into Readline / StateMachine / StateMachineDim / Tools?
+libStateMachine_la_SOURCES = \
+	src/WindowLog.h       src/WindowLog.cc \
+	src/Readline.h        src/Readline.cc \
+	src/ReadlineColor.h   src/ReadlineColor.cc \
+	src/ReadlineWindow.h  src/ReadlineWindow.cc \
+	src/Console.h         src/Console.cc \
+	src/Shell.h           src/Shell.cc \
+	\
+	src/EventImp.h        src/EventImp.cc \
+	src/Event.h           src/Event.cc \
+	src/State.h           src/State.cc \
+	src/Description.h     src/Description.cc \
+	src/MessageImp.h      src/MessageImp.cc \
+	src/Converter.h       src/Converter.cc \
+	src/StateMachineImp.h src/StateMachineImp.cc \
+	src/StateMachine.h    src/StateMachine.cc \
+	\
+	src/EventDim.h \
+	src/MessageDim.h         src/MessageDim.cc \
+	src/StateMachineDim.h    src/StateMachineDim.cc \
+	src/DimServerList.h      src/DimServerList.cc \
+	src/DimServiceInfoList.h src/DimServiceInfoList.cc \
+	src/DimNetworkList.h     src/DimNetwork.cc \
+	src/ServiceList.h        src/ServiceList.cc \
+	src/DimErrorRedirecter.h  \
+	src/DimErrorRedirecter.cc \
+	src/DimDescriptionService.h \
+	src/DimDescriptionService.cc \
+	\
+	src/Connection.h      src/Connection.cc \
+	src/ConnectionUSB.h   src/ConnectionUSB.cc \
+	\
+	FACT.h ByteOrder.h \
+	\
+	src/DimWriteStatistics.h src/DimWriteStatistics.cc
+
+libConfiguration_la_SOURCES = \
+	src/Configuration.h src/Configuration.cc \
+	src/FACT.h src/FACT.cc
+
+libTime_la_SOURCES = src/Time.h src/Time.cc
+#libAstro_la_SOURCES = src/Astro.h src/Astro.cc
+libTools_la_SOURCES = src/tools.h src/tools.cc
+dserver2_SOURCES = src/dserver2.cc 
+dserver2_LDADD = libTime.la libTools.la
+ftm_SOURCES = src/ftm.cc src/HeadersFTM.cc
+ftm_LDADD = libTime.la libTools.la libDim++.la libDim.la libConfiguration.la libDimExtension.la
+fad_SOURCES = src/fad.cc src/HeadersFAD.cc
+fad_LDADD = libTime.la libTools.la libTools.la libDim++.la libDim.la libConfiguration.la libDimExtension.la
+fsc_SOURCES = src/fsc.cc
+fsc_LDADD = libTime.la libTools.la
+log_SOURCES = src/log.cc
+log_LDADD = libDim++.la libDim.la libStateMachine.la libTime.la libTools.la
+logtime_SOURCES = src/logtime.cc
+logtime_LDADD = libStateMachine.la libTools.la libTime.la libDim++.la libDim.la
+moon_SOURCES = src/moon.cc
+moon_LDADD = libTime.la libConfiguration.la
+makeplots_SOURCES = src/makeplots.cc
+makeplots_LDADD = $(ROOTLDFLAGS) $(ROOTLIBS) libTime.la libConfiguration.la
+makedata_SOURCES = src/makedata.cc
+makedata_LDADD = libTime.la libConfiguration.la
+chatserv_SOURCES = src/chatserv.cc src/LocalControl.h
+chatserv_LDADD = libStateMachine.la libTools.la libConfiguration.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la
+
+dclient5_SOURCES = src/dclient5.cc src/LocalControl.h
+dclient5_LDADD = libDim++.la libDim.la libStateMachine.la libTime.la libTools.la \
+    libConfiguration.la
+
+ftmctrl_SOURCES = src/ftmctrl.cc src/LocalControl.h src/HeadersFTM.cc
+ftmctrl_LDADD = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTime.la libTools.la \
+	libConfiguration.la
+
+drivectrl_SOURCES = src/drivectrl.cc src/LocalControl.h src/HeadersFTM.cc
+drivectrl_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+agilentctrl_SOURCES = src/agilentctrl.cc src/LocalControl.h src/HeadersAgilent.h
+agilentctrl_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+magicweather_SOURCES = src/magicweather.cc src/LocalControl.h
+magicweather_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+magiclidar_SOURCES = src/magiclidar.cc src/LocalControl.h
+magiclidar_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+tngweather_SOURCES = src/tngweather.cc src/LocalControl.h
+tngweather_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la -lQtXml
+
+lidctrl_SOURCES = src/lidctrl.cc src/LocalControl.h
+lidctrl_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la -lQtXml
+
+gpsctrl_SOURCES = src/gpsctrl.cc src/LocalControl.h
+gpsctrl_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+pfminictrl_SOURCES = src/pfminictrl.cc src/LocalControl.h
+pfminictrl_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+sqmctrl_SOURCES = src/sqmctrl.cc src/LocalControl.h
+sqmctrl_LDADD = libDim++.la libDim.la libDimExtension.la \
+       libStateMachine.la libTools.la libTime.la \
+       libConfiguration.la
+
+temperature_SOURCES = src/temperature.cc src/LocalControl.h
+temperature_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+pwrctrl_SOURCES = src/pwrctrl.cc src/LocalControl.h \
+	src/HeadersPower.h src/HeadersPower.cc
+
+pwrctrl_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la -lQtXml
+
+timecheck_SOURCES = src/timecheck.cc src/LocalControl.h
+timecheck_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+smartfact_SOURCES = src/smartfact.cc src/LocalControl.h src/PixelMap.cc
+smartfact_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+evtserver_SOURCES = src/evtserver.cc src/LocalControl.h
+evtserver_LDADD = libDim++.la libDim.la libDimExtension.la \
+ 	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+getevent_SOURCES = src/getevent.cc
+getevent_LDADD = libTools.la libTime.la libConfiguration.la
+fadctrl_SOURCES = src/fadctrl.cc src/LocalControl.h src/HeadersFAD.cc \
+	src/EventBuilder.cc src/EventBuilder.h src/DataProcessorImp.cc \
+	src/DataProcessorImp.h src/DataCalib.cc src/DataCalib.h \
+	src/DataWriteRaw.cc src/DataWriteRaw.h src/DrsCalib.h \
+	$(am__append_9)
+fadctrl_LDADD = libDim++.la libDim.la  libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+fscctrl_SOURCES = src/fscctrl.cc src/LocalControl.h
+fscctrl_LDADD = libDim++.la libDim.la  libDimExtension.la \
+       libStateMachine.la libTools.la libTime.la \
+       libConfiguration.la
+
+gcn_SOURCES = src/gcn.cc src/LocalControl.h
+gcn_LDADD = libDim++.la libDim.la  libDimExtension.la \
+       libStateMachine.la libTools.la libTime.la \
+       libConfiguration.la -lQtXml
+
+biasctrl_SOURCES = src/biasctrl.cc src/LocalControl.h src/PixelMap.cc
+biasctrl_LDADD = libDim++.la libDim.la  libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+mcp_SOURCES = src/mcp.cc src/LocalControl.h
+mcp_LDADD = libDim++.la libDim.la  libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+feedback_SOURCES = src/feedback.cc src/LocalControl.h src/PixelMap.cc
+feedback_LDADD = libDim++.la libDim.la  libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+ratescan_SOURCES = src/ratescan.cc src/LocalControl.h src/PixelMap.cc
+ratescan_LDADD = libDim++.la libDim.la  libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+ratecontrol_SOURCES = src/ratecontrol.cc src/LocalControl.h src/PixelMap.cc
+ratecontrol_LDADD = libDim++.la libDim.la  libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+argv_SOURCES = src/argv.cc
+argv_LDADD = libConfiguration.la
+dimctrl_SOURCES = src/dimctrl.cc \
+	src/StateMachineDimControl.cc src/StateMachineDimControl.h \
+	src/RemoteControl.cc src/RemoteControl.h \
+	src/InterpreterV8.cc src/InterpreterV8.h \
+	src/DimState.cc src/DimState.h
+
+dimctrl_LDADD = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+
+dimserver_SOURCES = $(dimctrl_SOURCES)
+dimserver_LDADD = $(dimctrl_LDADD)
+chatclient_SOURCES = src/chatclient.cc src/ChatClient.h
+chatclient_LDADD = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+
+skypeclient_SOURCES = src/skypeclient.cc src/ChatClient.h
+skypeclient_LDADD = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+
+time_SOURCES = src/time.cc
+time_LDADD = libTime.la 
+
+#astro_SOURCES = src/astro.cc
+#astro_LDADD = libAstro.la libTime.la 
+test_SOURCES = src/test.cc
+test_LDADD = libStateMachine.la libTools.la libTime.la libDim++.la libDim.la libConfiguration.la
+datalogger_SOURCES = src/datalogger.cc src/LocalControl.h \
+	src/DimState.cc src/DimState.h $(am__append_10)
+datalogger_LDADD = libDim++.la libDim.la libDimExtension.la \
+	libStateMachine.la libTools.la libTime.la \
+    	libConfiguration.la
+
+scheduler_SOURCES = src/scheduler.cc src/LocalControl.h 
+scheduler_LDADD = libStateMachine.la libTools.la libTime.la \
+	libDim++.la libDim.la libDimExtension.la libConfiguration.la
+
+fitsloader_SOURCES = src/fitsloader.cc src/LocalControl.h 
+fitsloader_LDADD = libStateMachine.la libTools.la libTime.la libDim++.la libDim.la libConfiguration.la
+fitsdump_SOURCES = src/fitsdump.cc 
+fitsdump_LDADD = $(ROOTLDFLAGS) $(ROOTLIBS) libTools.la libConfiguration.la libTime.la
+fitscheck_SOURCES = src/fitscheck.cc 
+fitscheck_LDADD = libConfiguration.la
+fitsselect_SOURCES = src/fitsselect.cc 
+fitsselect_LDADD = libConfiguration.la
+readfits_SOURCES = src/readfits.cc src/ReadFits.h
+readfits_LDADD = libStateMachine.la libTools.la libTime.la libDim++.la libDim.la libConfiguration.la
+zfits_SOURCES = src/zfits.cc externals/huffmans.h
+zfits_LDADD = libTime.la libConfiguration.la
+showlog_SOURCES = src/showlog.cc
+showlog_LDADD = libTime.la libTools.la libConfiguration.la -lncurses src/WindowLog.lo 
+triggerschedule_SOURCES = src/triggerschedule.cc 
+triggerschedule_LDADD = libDim++.la libDim.la libDimExtension.la libConfiguration.la
+
+#fitsCompressor_SOURCES = src/fitsCompressor.cc 
+#fitsCompressor_LDADD   = libConfiguration.la
+
+#fitsgrep_SOURCES = src/fitsgrep.cc
+#fitsgrep_LDADD   = libConfiguration.la
+
+# -----
+@HAS_GUI_TRUE@fact_DIALOGS = \
+@HAS_GUI_TRUE@	gui/design.ui
+
+@HAS_GUI_TRUE@fact_RESOURCES = \
+@HAS_GUI_TRUE@	gui/design.qrc
+
+@HAS_GUI_TRUE@fact_QT_SOURCES = \
+@HAS_GUI_TRUE@	gui/DockWindow.cc \
+@HAS_GUI_TRUE@	gui/MainWindow.cc \
+@HAS_GUI_TRUE@	gui/QCameraWidget.cc \
+@HAS_GUI_TRUE@	gui/BasicGlCamera.cc
+
+@HAS_GUI_TRUE@fact_SRCADD = $(fact_DIALOGS:.ui=.h) $(fact_RESOURCES:.qrc=.cc) $(fact_QT_SOURCES:.cc=.moc.cc)
+
+# -----
+@HAS_VIEWER_TRUE@viewer_DIALOGS = \
+@HAS_VIEWER_TRUE@	gui/RawEventsViewer/viewer.ui
+
+@HAS_VIEWER_TRUE@viewer_QT_SOURCES = \
+@HAS_VIEWER_TRUE@	gui/RawEventsViewer/RawEventsViewer.cc \
+@HAS_VIEWER_TRUE@	gui/BasicGlCamera.cc \
+@HAS_VIEWER_TRUE@	gui/QCameraWidget.cc \
+@HAS_VIEWER_TRUE@	gui/Q3DCameraWidget.cc
+
+@HAS_VIEWER_TRUE@viewer_SRCADD = $(viewer_DIALOGS:.ui=.h) $(viewer_RESOURCES:.qrc=.cc) $(viewer_QT_SOURCES:.cc=.moc.cc)
+BUILT_SOURCES = $(fact_SRCADD) $(viewer_SRCADD)
+fact_LDADD = $(ROOTLDFLAGS) $(ROOTGLIBS) $(QT4_LIB) $(QT4_LDFLAGS) -L. \
+	libDim++.la libDim.la libDimExtension.la \
+	libTools.la libStateMachine.la libTime.la libTools.la \
+	libConfiguration.la
+
+fact_SOURCES = $(fact_SRCADD) $(fact_QT_SOURCES) \
+	gui/CheckBoxDelegate.cc gui/HtmlDelegate.cc \
+	gui/fact.cc gui/FactGui.cc src/HeadersFTM.cc \
+	src/PixelMap.cc
+
+
+# Switch off most qwt warnings
+viewer_CXXFLAGS = $(AM_CXXFLAGS) -Wno-shadow
+viewer_LDADD = $(QT4_LIB) $(QT4_LDFLAGS) -L. -lQtOpenGL -lGLU \
+	libDimExtension.la \
+	libConfiguration.la libStateMachine.la libTools.la \
+	libTime.la libDim++.la libDim.la 
+
+viewer_SOURCES = $(viewer_SRCADD) $(viewer_QT_SOURCES) \
+	src/DataProcessorImp.cc src/DataProcessorImp.h \
+	src/FitsFile.cc  src/FitsFile.h \
+	src/Fits.cc      src/Fits.h \
+	src/PixelMap.cc
+
+
+#-------------------------------------------------------------------------
+SUFFIXES = .moc.cc
+
+#-------------------------------------------------------------------------
+MAN_TARGETS = $(dist_man1_MANS) $(am__append_11) $(am__append_14)
+@HAS_JSDOC_TRUE@JAVA_SCRIPT_DOC = jsdoc
+all: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .moc.cc .c .cc .cxx .h .html .lo .man .o .obj .pdf .qrc .ui
+am--refresh: Makefile
+	@:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(srcdir)/aminclude.am $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+	      $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    echo ' $(SHELL) ./config.status'; \
+	    $(SHELL) ./config.status;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+	esac;
+$(srcdir)/aminclude.am:
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	$(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
+	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+	}
+
+uninstall-libLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
+	done
+
+clean-libLTLIBRARIES:
+	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+src/$(am__dirstamp):
+	@$(MKDIR_P) src
+	@: > src/$(am__dirstamp)
+src/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/$(DEPDIR)
+	@: > src/$(DEPDIR)/$(am__dirstamp)
+src/Configuration.lo: src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/FACT.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+libConfiguration.la: $(libConfiguration_la_OBJECTS) $(libConfiguration_la_DEPENDENCIES) $(EXTRA_libConfiguration_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK) -rpath $(libdir) $(libConfiguration_la_OBJECTS) $(libConfiguration_la_LIBADD) $(LIBS)
+dim/src/$(am__dirstamp):
+	@$(MKDIR_P) dim/src
+	@: > dim/src/$(am__dirstamp)
+dim/src/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) dim/src/$(DEPDIR)
+	@: > dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/diccpp.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/dimcpp.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/discpp.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/tokenstring.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+libDim++.la: $(libDim___la_OBJECTS) $(libDim___la_DEPENDENCIES) $(EXTRA_libDim___la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK) -rpath $(libdir) $(libDim___la_OBJECTS) $(libDim___la_LIBADD) $(LIBS)
+dim/src/dic.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/dis.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/dna.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/sll.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/dll.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/hash.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/swap.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/copy_swap.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/open_dns.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/conn_handler.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/tcpip.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/dtq.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/dim_thr.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+dim/src/utilities.lo: dim/src/$(am__dirstamp) \
+	dim/src/$(DEPDIR)/$(am__dirstamp)
+libDim.la: $(libDim_la_OBJECTS) $(libDim_la_DEPENDENCIES) $(EXTRA_libDim_la_DEPENDENCIES) 
+	$(AM_V_CCLD)$(LINK) -rpath $(libdir) $(libDim_la_OBJECTS) $(libDim_la_LIBADD) $(LIBS)
+src/DimSetup.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+libDimExtension.la: $(libDimExtension_la_OBJECTS) $(libDimExtension_la_DEPENDENCIES) $(EXTRA_libDimExtension_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK) -rpath $(libdir) $(libDimExtension_la_OBJECTS) $(libDimExtension_la_LIBADD) $(LIBS)
+src/WindowLog.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/Readline.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/ReadlineColor.lo: src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/ReadlineWindow.lo: src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/Console.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/Shell.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/EventImp.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/Event.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/State.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/Description.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/MessageImp.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/Converter.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/StateMachineImp.lo: src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/StateMachine.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/MessageDim.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/StateMachineDim.lo: src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/DimServerList.lo: src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/DimServiceInfoList.lo: src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/DimNetwork.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/ServiceList.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/DimErrorRedirecter.lo: src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/DimDescriptionService.lo: src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/Connection.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/ConnectionUSB.lo: src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/DimWriteStatistics.lo: src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+libStateMachine.la: $(libStateMachine_la_OBJECTS) $(libStateMachine_la_DEPENDENCIES) $(EXTRA_libStateMachine_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK) -rpath $(libdir) $(libStateMachine_la_OBJECTS) $(libStateMachine_la_LIBADD) $(LIBS)
+src/Time.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+libTime.la: $(libTime_la_OBJECTS) $(libTime_la_DEPENDENCIES) $(EXTRA_libTime_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK) -rpath $(libdir) $(libTime_la_OBJECTS) $(libTime_la_LIBADD) $(LIBS)
+src/tools.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+libTools.la: $(libTools_la_OBJECTS) $(libTools_la_DEPENDENCIES) $(EXTRA_libTools_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK) -rpath $(libdir) $(libTools_la_OBJECTS) $(libTools_la_LIBADD) $(LIBS)
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	for p in $$list; do echo "$$p $$p"; done | \
+	sed 's/$(EXEEXT)$$//' | \
+	while read p p1; do if test -f $$p || test -f $$p1; \
+	  then echo "$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+	sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
+	    else { print "f", $$3 "/" $$4, $$1; } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	    test -z "$$files" || { \
+	    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	    } \
+	; done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+	      -e 's/$$/$(EXEEXT)/' `; \
+	test -n "$$list" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+	@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
+	echo " rm -f" $$list; \
+	rm -f $$list || exit $$?; \
+	test -n "$(EXEEXT)" || exit 0; \
+	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+	echo " rm -f" $$list; \
+	rm -f $$list
+
+installcheck-binPROGRAMS: $(bin_PROGRAMS)
+	bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \
+	  case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \
+	   *" $$p "* | *" $(srcdir)/$$p "*) continue;; \
+	  esac; \
+	  f=`echo "$$p" | \
+	     sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+	  for opt in --help --version; do \
+	    if "$(DESTDIR)$(bindir)/$$f" $$opt >c$${pid}_.out \
+	         2>c$${pid}_.err </dev/null \
+		 && test -n "`cat c$${pid}_.out`" \
+		 && test -z "`cat c$${pid}_.err`"; then :; \
+	    else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
+	  done; \
+	done; rm -f c$${pid}_.???; exit $$bad
+src/agilentctrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+agilentctrl$(EXEEXT): $(agilentctrl_OBJECTS) $(agilentctrl_DEPENDENCIES) $(EXTRA_agilentctrl_DEPENDENCIES) 
+	@rm -f agilentctrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(agilentctrl_OBJECTS) $(agilentctrl_LDADD) $(LIBS)
+src/argv.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+argv$(EXEEXT): $(argv_OBJECTS) $(argv_DEPENDENCIES) $(EXTRA_argv_DEPENDENCIES) 
+	@rm -f argv$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(argv_OBJECTS) $(argv_LDADD) $(LIBS)
+astro$(EXEEXT): $(astro_OBJECTS) $(astro_DEPENDENCIES) $(EXTRA_astro_DEPENDENCIES) 
+	@rm -f astro$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(astro_OBJECTS) $(astro_LDADD) $(LIBS)
+src/biasctrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/PixelMap.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+biasctrl$(EXEEXT): $(biasctrl_OBJECTS) $(biasctrl_DEPENDENCIES) $(EXTRA_biasctrl_DEPENDENCIES) 
+	@rm -f biasctrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(biasctrl_OBJECTS) $(biasctrl_LDADD) $(LIBS)
+src/chatclient.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+chatclient$(EXEEXT): $(chatclient_OBJECTS) $(chatclient_DEPENDENCIES) $(EXTRA_chatclient_DEPENDENCIES) 
+	@rm -f chatclient$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(chatclient_OBJECTS) $(chatclient_LDADD) $(LIBS)
+src/chatserv.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+chatserv$(EXEEXT): $(chatserv_OBJECTS) $(chatserv_DEPENDENCIES) $(EXTRA_chatserv_DEPENDENCIES) 
+	@rm -f chatserv$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(chatserv_OBJECTS) $(chatserv_LDADD) $(LIBS)
+src/datalogger.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/DimState.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/FitsFile.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/Fits.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+datalogger$(EXEEXT): $(datalogger_OBJECTS) $(datalogger_DEPENDENCIES) $(EXTRA_datalogger_DEPENDENCIES) 
+	@rm -f datalogger$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(datalogger_OBJECTS) $(datalogger_LDADD) $(LIBS)
+src/dclient5.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+dclient5$(EXEEXT): $(dclient5_OBJECTS) $(dclient5_DEPENDENCIES) $(EXTRA_dclient5_DEPENDENCIES) 
+	@rm -f dclient5$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(dclient5_OBJECTS) $(dclient5_LDADD) $(LIBS)
+dim/src/did/$(am__dirstamp):
+	@$(MKDIR_P) dim/src/did
+	@: > dim/src/did/$(am__dirstamp)
+dim/src/did/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) dim/src/did/$(DEPDIR)
+	@: > dim/src/did/$(DEPDIR)/$(am__dirstamp)
+dim/src/did/did-did.$(OBJEXT): dim/src/did/$(am__dirstamp) \
+	dim/src/did/$(DEPDIR)/$(am__dirstamp)
+dim/src/did/did-dui_util.$(OBJEXT): dim/src/did/$(am__dirstamp) \
+	dim/src/did/$(DEPDIR)/$(am__dirstamp)
+did$(EXEEXT): $(did_OBJECTS) $(did_DEPENDENCIES) $(EXTRA_did_DEPENDENCIES) 
+	@rm -f did$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(did_OBJECTS) $(did_LDADD) $(LIBS)
+src/dimctrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/StateMachineDimControl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/RemoteControl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/InterpreterV8.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+dimctrl$(EXEEXT): $(dimctrl_OBJECTS) $(dimctrl_DEPENDENCIES) $(EXTRA_dimctrl_DEPENDENCIES) 
+	@rm -f dimctrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(dimctrl_OBJECTS) $(dimctrl_LDADD) $(LIBS)
+dimserver$(EXEEXT): $(dimserver_OBJECTS) $(dimserver_DEPENDENCIES) $(EXTRA_dimserver_DEPENDENCIES) 
+	@rm -f dimserver$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(dimserver_OBJECTS) $(dimserver_LDADD) $(LIBS)
+src/dns.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+dns$(EXEEXT): $(dns_OBJECTS) $(dns_DEPENDENCIES) $(EXTRA_dns_DEPENDENCIES) 
+	@rm -f dns$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(dns_OBJECTS) $(dns_LDADD) $(LIBS)
+src/drivectrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/HeadersFTM.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+drivectrl$(EXEEXT): $(drivectrl_OBJECTS) $(drivectrl_DEPENDENCIES) $(EXTRA_drivectrl_DEPENDENCIES) 
+	@rm -f drivectrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(drivectrl_OBJECTS) $(drivectrl_LDADD) $(LIBS)
+src/dserver2.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+dserver2$(EXEEXT): $(dserver2_OBJECTS) $(dserver2_DEPENDENCIES) $(EXTRA_dserver2_DEPENDENCIES) 
+	@rm -f dserver2$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(dserver2_OBJECTS) $(dserver2_LDADD) $(LIBS)
+src/evtserver.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+evtserver$(EXEEXT): $(evtserver_OBJECTS) $(evtserver_DEPENDENCIES) $(EXTRA_evtserver_DEPENDENCIES) 
+	@rm -f evtserver$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(evtserver_OBJECTS) $(evtserver_LDADD) $(LIBS)
+gui/$(am__dirstamp):
+	@$(MKDIR_P) gui
+	@: > gui/$(am__dirstamp)
+gui/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) gui/$(DEPDIR)
+	@: > gui/$(DEPDIR)/$(am__dirstamp)
+gui/design.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/DockWindow.moc.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/MainWindow.moc.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/QCameraWidget.moc.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/BasicGlCamera.moc.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/DockWindow.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/MainWindow.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/QCameraWidget.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/BasicGlCamera.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/CheckBoxDelegate.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/HtmlDelegate.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/fact.$(OBJEXT): gui/$(am__dirstamp) gui/$(DEPDIR)/$(am__dirstamp)
+gui/FactGui.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+fact$(EXEEXT): $(fact_OBJECTS) $(fact_DEPENDENCIES) $(EXTRA_fact_DEPENDENCIES) 
+	@rm -f fact$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(fact_OBJECTS) $(fact_LDADD) $(LIBS)
+src/fad.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/HeadersFAD.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+fad$(EXEEXT): $(fad_OBJECTS) $(fad_DEPENDENCIES) $(EXTRA_fad_DEPENDENCIES) 
+	@rm -f fad$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(fad_OBJECTS) $(fad_LDADD) $(LIBS)
+src/fadctrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/EventBuilder.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/DataProcessorImp.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/DataCalib.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/DataWriteRaw.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/DataWriteFits.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/DataWriteFits2.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+fadctrl$(EXEEXT): $(fadctrl_OBJECTS) $(fadctrl_DEPENDENCIES) $(EXTRA_fadctrl_DEPENDENCIES) 
+	@rm -f fadctrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(fadctrl_OBJECTS) $(fadctrl_LDADD) $(LIBS)
+src/feedback.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+feedback$(EXEEXT): $(feedback_OBJECTS) $(feedback_DEPENDENCIES) $(EXTRA_feedback_DEPENDENCIES) 
+	@rm -f feedback$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(feedback_OBJECTS) $(feedback_LDADD) $(LIBS)
+src/fitscheck.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+fitscheck$(EXEEXT): $(fitscheck_OBJECTS) $(fitscheck_DEPENDENCIES) $(EXTRA_fitscheck_DEPENDENCIES) 
+	@rm -f fitscheck$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(fitscheck_OBJECTS) $(fitscheck_LDADD) $(LIBS)
+src/fitsdump.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+fitsdump$(EXEEXT): $(fitsdump_OBJECTS) $(fitsdump_DEPENDENCIES) $(EXTRA_fitsdump_DEPENDENCIES) 
+	@rm -f fitsdump$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(fitsdump_OBJECTS) $(fitsdump_LDADD) $(LIBS)
+fitsgrep$(EXEEXT): $(fitsgrep_OBJECTS) $(fitsgrep_DEPENDENCIES) $(EXTRA_fitsgrep_DEPENDENCIES) 
+	@rm -f fitsgrep$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(fitsgrep_OBJECTS) $(fitsgrep_LDADD) $(LIBS)
+src/fitsloader.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+fitsloader$(EXEEXT): $(fitsloader_OBJECTS) $(fitsloader_DEPENDENCIES) $(EXTRA_fitsloader_DEPENDENCIES) 
+	@rm -f fitsloader$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(fitsloader_OBJECTS) $(fitsloader_LDADD) $(LIBS)
+src/fitsselect.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+fitsselect$(EXEEXT): $(fitsselect_OBJECTS) $(fitsselect_DEPENDENCIES) $(EXTRA_fitsselect_DEPENDENCIES) 
+	@rm -f fitsselect$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(fitsselect_OBJECTS) $(fitsselect_LDADD) $(LIBS)
+src/fsc.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+fsc$(EXEEXT): $(fsc_OBJECTS) $(fsc_DEPENDENCIES) $(EXTRA_fsc_DEPENDENCIES) 
+	@rm -f fsc$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(fsc_OBJECTS) $(fsc_LDADD) $(LIBS)
+src/fscctrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+fscctrl$(EXEEXT): $(fscctrl_OBJECTS) $(fscctrl_DEPENDENCIES) $(EXTRA_fscctrl_DEPENDENCIES) 
+	@rm -f fscctrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(fscctrl_OBJECTS) $(fscctrl_LDADD) $(LIBS)
+src/ftm.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+ftm$(EXEEXT): $(ftm_OBJECTS) $(ftm_DEPENDENCIES) $(EXTRA_ftm_DEPENDENCIES) 
+	@rm -f ftm$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(ftm_OBJECTS) $(ftm_LDADD) $(LIBS)
+src/ftmctrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+ftmctrl$(EXEEXT): $(ftmctrl_OBJECTS) $(ftmctrl_DEPENDENCIES) $(EXTRA_ftmctrl_DEPENDENCIES) 
+	@rm -f ftmctrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(ftmctrl_OBJECTS) $(ftmctrl_LDADD) $(LIBS)
+src/gcn.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+gcn$(EXEEXT): $(gcn_OBJECTS) $(gcn_DEPENDENCIES) $(EXTRA_gcn_DEPENDENCIES) 
+	@rm -f gcn$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(gcn_OBJECTS) $(gcn_LDADD) $(LIBS)
+src/getevent.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+getevent$(EXEEXT): $(getevent_OBJECTS) $(getevent_DEPENDENCIES) $(EXTRA_getevent_DEPENDENCIES) 
+	@rm -f getevent$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(getevent_OBJECTS) $(getevent_LDADD) $(LIBS)
+src/gpsctrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+gpsctrl$(EXEEXT): $(gpsctrl_OBJECTS) $(gpsctrl_DEPENDENCIES) $(EXTRA_gpsctrl_DEPENDENCIES) 
+	@rm -f gpsctrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(gpsctrl_OBJECTS) $(gpsctrl_LDADD) $(LIBS)
+src/lidctrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+lidctrl$(EXEEXT): $(lidctrl_OBJECTS) $(lidctrl_DEPENDENCIES) $(EXTRA_lidctrl_DEPENDENCIES) 
+	@rm -f lidctrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(lidctrl_OBJECTS) $(lidctrl_LDADD) $(LIBS)
+src/log.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+log$(EXEEXT): $(log_OBJECTS) $(log_DEPENDENCIES) $(EXTRA_log_DEPENDENCIES) 
+	@rm -f log$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(log_OBJECTS) $(log_LDADD) $(LIBS)
+src/logtime.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+logtime$(EXEEXT): $(logtime_OBJECTS) $(logtime_DEPENDENCIES) $(EXTRA_logtime_DEPENDENCIES) 
+	@rm -f logtime$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(logtime_OBJECTS) $(logtime_LDADD) $(LIBS)
+src/magiclidar.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+magiclidar$(EXEEXT): $(magiclidar_OBJECTS) $(magiclidar_DEPENDENCIES) $(EXTRA_magiclidar_DEPENDENCIES) 
+	@rm -f magiclidar$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(magiclidar_OBJECTS) $(magiclidar_LDADD) $(LIBS)
+src/magicweather.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+magicweather$(EXEEXT): $(magicweather_OBJECTS) $(magicweather_DEPENDENCIES) $(EXTRA_magicweather_DEPENDENCIES) 
+	@rm -f magicweather$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(magicweather_OBJECTS) $(magicweather_LDADD) $(LIBS)
+src/makedata.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+makedata$(EXEEXT): $(makedata_OBJECTS) $(makedata_DEPENDENCIES) $(EXTRA_makedata_DEPENDENCIES) 
+	@rm -f makedata$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(makedata_OBJECTS) $(makedata_LDADD) $(LIBS)
+src/makeplots.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+makeplots$(EXEEXT): $(makeplots_OBJECTS) $(makeplots_DEPENDENCIES) $(EXTRA_makeplots_DEPENDENCIES) 
+	@rm -f makeplots$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(makeplots_OBJECTS) $(makeplots_LDADD) $(LIBS)
+src/mcp.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+mcp$(EXEEXT): $(mcp_OBJECTS) $(mcp_DEPENDENCIES) $(EXTRA_mcp_DEPENDENCIES) 
+	@rm -f mcp$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(mcp_OBJECTS) $(mcp_LDADD) $(LIBS)
+src/moon.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+moon$(EXEEXT): $(moon_OBJECTS) $(moon_DEPENDENCIES) $(EXTRA_moon_DEPENDENCIES) 
+	@rm -f moon$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(moon_OBJECTS) $(moon_LDADD) $(LIBS)
+src/pfminictrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+pfminictrl$(EXEEXT): $(pfminictrl_OBJECTS) $(pfminictrl_DEPENDENCIES) $(EXTRA_pfminictrl_DEPENDENCIES) 
+	@rm -f pfminictrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(pfminictrl_OBJECTS) $(pfminictrl_LDADD) $(LIBS)
+src/pwrctrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/HeadersPower.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+pwrctrl$(EXEEXT): $(pwrctrl_OBJECTS) $(pwrctrl_DEPENDENCIES) $(EXTRA_pwrctrl_DEPENDENCIES) 
+	@rm -f pwrctrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(pwrctrl_OBJECTS) $(pwrctrl_LDADD) $(LIBS)
+src/ratecontrol.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+ratecontrol$(EXEEXT): $(ratecontrol_OBJECTS) $(ratecontrol_DEPENDENCIES) $(EXTRA_ratecontrol_DEPENDENCIES) 
+	@rm -f ratecontrol$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(ratecontrol_OBJECTS) $(ratecontrol_LDADD) $(LIBS)
+src/ratescan.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+ratescan$(EXEEXT): $(ratescan_OBJECTS) $(ratescan_DEPENDENCIES) $(EXTRA_ratescan_DEPENDENCIES) 
+	@rm -f ratescan$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(ratescan_OBJECTS) $(ratescan_LDADD) $(LIBS)
+src/readfits.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+readfits$(EXEEXT): $(readfits_OBJECTS) $(readfits_DEPENDENCIES) $(EXTRA_readfits_DEPENDENCIES) 
+	@rm -f readfits$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(readfits_OBJECTS) $(readfits_LDADD) $(LIBS)
+sched$(EXEEXT): $(sched_OBJECTS) $(sched_DEPENDENCIES) $(EXTRA_sched_DEPENDENCIES) 
+	@rm -f sched$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(sched_OBJECTS) $(sched_LDADD) $(LIBS)
+src/scheduler.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+scheduler$(EXEEXT): $(scheduler_OBJECTS) $(scheduler_DEPENDENCIES) $(EXTRA_scheduler_DEPENDENCIES) 
+	@rm -f scheduler$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(scheduler_OBJECTS) $(scheduler_LDADD) $(LIBS)
+src/showlog.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+showlog$(EXEEXT): $(showlog_OBJECTS) $(showlog_DEPENDENCIES) $(EXTRA_showlog_DEPENDENCIES) 
+	@rm -f showlog$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(showlog_OBJECTS) $(showlog_LDADD) $(LIBS)
+src/skypeclient.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+skypeclient$(EXEEXT): $(skypeclient_OBJECTS) $(skypeclient_DEPENDENCIES) $(EXTRA_skypeclient_DEPENDENCIES) 
+	@rm -f skypeclient$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(skypeclient_OBJECTS) $(skypeclient_LDADD) $(LIBS)
+src/smartfact.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+smartfact$(EXEEXT): $(smartfact_OBJECTS) $(smartfact_DEPENDENCIES) $(EXTRA_smartfact_DEPENDENCIES) 
+	@rm -f smartfact$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(smartfact_OBJECTS) $(smartfact_LDADD) $(LIBS)
+src/sqmctrl.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+sqmctrl$(EXEEXT): $(sqmctrl_OBJECTS) $(sqmctrl_DEPENDENCIES) $(EXTRA_sqmctrl_DEPENDENCIES) 
+	@rm -f sqmctrl$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(sqmctrl_OBJECTS) $(sqmctrl_LDADD) $(LIBS)
+src/temperature.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+temperature$(EXEEXT): $(temperature_OBJECTS) $(temperature_DEPENDENCIES) $(EXTRA_temperature_DEPENDENCIES) 
+	@rm -f temperature$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(temperature_OBJECTS) $(temperature_LDADD) $(LIBS)
+src/test.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) 
+	@rm -f test$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(test_OBJECTS) $(test_LDADD) $(LIBS)
+src/time.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+time$(EXEEXT): $(time_OBJECTS) $(time_DEPENDENCIES) $(EXTRA_time_DEPENDENCIES) 
+	@rm -f time$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(time_OBJECTS) $(time_LDADD) $(LIBS)
+src/timecheck.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+timecheck$(EXEEXT): $(timecheck_OBJECTS) $(timecheck_DEPENDENCIES) $(EXTRA_timecheck_DEPENDENCIES) 
+	@rm -f timecheck$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(timecheck_OBJECTS) $(timecheck_LDADD) $(LIBS)
+src/tngweather.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+tngweather$(EXEEXT): $(tngweather_OBJECTS) $(tngweather_DEPENDENCIES) $(EXTRA_tngweather_DEPENDENCIES) 
+	@rm -f tngweather$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(tngweather_OBJECTS) $(tngweather_LDADD) $(LIBS)
+src/triggerschedule.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+triggerschedule$(EXEEXT): $(triggerschedule_OBJECTS) $(triggerschedule_DEPENDENCIES) $(EXTRA_triggerschedule_DEPENDENCIES) 
+	@rm -f triggerschedule$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(triggerschedule_OBJECTS) $(triggerschedule_LDADD) $(LIBS)
+gui/RawEventsViewer/$(am__dirstamp):
+	@$(MKDIR_P) gui/RawEventsViewer
+	@: > gui/RawEventsViewer/$(am__dirstamp)
+gui/RawEventsViewer/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) gui/RawEventsViewer/$(DEPDIR)
+	@: > gui/RawEventsViewer/$(DEPDIR)/$(am__dirstamp)
+gui/RawEventsViewer/viewer-RawEventsViewer.moc.$(OBJEXT):  \
+	gui/RawEventsViewer/$(am__dirstamp) \
+	gui/RawEventsViewer/$(DEPDIR)/$(am__dirstamp)
+gui/viewer-BasicGlCamera.moc.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/viewer-QCameraWidget.moc.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/viewer-Q3DCameraWidget.moc.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/RawEventsViewer/viewer-RawEventsViewer.$(OBJEXT):  \
+	gui/RawEventsViewer/$(am__dirstamp) \
+	gui/RawEventsViewer/$(DEPDIR)/$(am__dirstamp)
+gui/viewer-BasicGlCamera.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/viewer-QCameraWidget.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/viewer-Q3DCameraWidget.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+src/viewer-DataProcessorImp.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/viewer-FitsFile.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/viewer-Fits.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+src/viewer-PixelMap.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+viewer$(EXEEXT): $(viewer_OBJECTS) $(viewer_DEPENDENCIES) $(EXTRA_viewer_DEPENDENCIES) 
+	@rm -f viewer$(EXEEXT)
+	$(AM_V_CXXLD)$(viewer_LINK) $(viewer_OBJECTS) $(viewer_LDADD) $(LIBS)
+dim/src/webDid/$(am__dirstamp):
+	@$(MKDIR_P) dim/src/webDid
+	@: > dim/src/webDid/$(am__dirstamp)
+dim/src/webDid/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) dim/src/webDid/$(DEPDIR)
+	@: > dim/src/webDid/$(DEPDIR)/$(am__dirstamp)
+dim/src/webDid/webDid-webDid.$(OBJEXT):  \
+	dim/src/webDid/$(am__dirstamp) \
+	dim/src/webDid/$(DEPDIR)/$(am__dirstamp)
+src/webDid-webServer.$(OBJEXT): src/$(am__dirstamp) \
+	src/$(DEPDIR)/$(am__dirstamp)
+dim/src/webDid/webDid-webTcpip.$(OBJEXT):  \
+	dim/src/webDid/$(am__dirstamp) \
+	dim/src/webDid/$(DEPDIR)/$(am__dirstamp)
+webDid$(EXEEXT): $(webDid_OBJECTS) $(webDid_DEPENDENCIES) $(EXTRA_webDid_DEPENDENCIES) 
+	@rm -f webDid$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(webDid_OBJECTS) $(webDid_LDADD) $(LIBS)
+src/zfits.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+zfits$(EXEEXT): $(zfits_OBJECTS) $(zfits_DEPENDENCIES) $(EXTRA_zfits_DEPENDENCIES) 
+	@rm -f zfits$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(zfits_OBJECTS) $(zfits_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+	-rm -f dim/src/conn_handler.$(OBJEXT)
+	-rm -f dim/src/conn_handler.lo
+	-rm -f dim/src/copy_swap.$(OBJEXT)
+	-rm -f dim/src/copy_swap.lo
+	-rm -f dim/src/dic.$(OBJEXT)
+	-rm -f dim/src/dic.lo
+	-rm -f dim/src/diccpp.$(OBJEXT)
+	-rm -f dim/src/diccpp.lo
+	-rm -f dim/src/did/did-did.$(OBJEXT)
+	-rm -f dim/src/did/did-dui_util.$(OBJEXT)
+	-rm -f dim/src/dim_thr.$(OBJEXT)
+	-rm -f dim/src/dim_thr.lo
+	-rm -f dim/src/dimcpp.$(OBJEXT)
+	-rm -f dim/src/dimcpp.lo
+	-rm -f dim/src/dis.$(OBJEXT)
+	-rm -f dim/src/dis.lo
+	-rm -f dim/src/discpp.$(OBJEXT)
+	-rm -f dim/src/discpp.lo
+	-rm -f dim/src/dll.$(OBJEXT)
+	-rm -f dim/src/dll.lo
+	-rm -f dim/src/dna.$(OBJEXT)
+	-rm -f dim/src/dna.lo
+	-rm -f dim/src/dtq.$(OBJEXT)
+	-rm -f dim/src/dtq.lo
+	-rm -f dim/src/hash.$(OBJEXT)
+	-rm -f dim/src/hash.lo
+	-rm -f dim/src/open_dns.$(OBJEXT)
+	-rm -f dim/src/open_dns.lo
+	-rm -f dim/src/sll.$(OBJEXT)
+	-rm -f dim/src/sll.lo
+	-rm -f dim/src/swap.$(OBJEXT)
+	-rm -f dim/src/swap.lo
+	-rm -f dim/src/tcpip.$(OBJEXT)
+	-rm -f dim/src/tcpip.lo
+	-rm -f dim/src/tokenstring.$(OBJEXT)
+	-rm -f dim/src/tokenstring.lo
+	-rm -f dim/src/utilities.$(OBJEXT)
+	-rm -f dim/src/utilities.lo
+	-rm -f dim/src/webDid/webDid-webDid.$(OBJEXT)
+	-rm -f dim/src/webDid/webDid-webTcpip.$(OBJEXT)
+	-rm -f gui/BasicGlCamera.$(OBJEXT)
+	-rm -f gui/BasicGlCamera.moc.$(OBJEXT)
+	-rm -f gui/CheckBoxDelegate.$(OBJEXT)
+	-rm -f gui/DockWindow.$(OBJEXT)
+	-rm -f gui/DockWindow.moc.$(OBJEXT)
+	-rm -f gui/FactGui.$(OBJEXT)
+	-rm -f gui/HtmlDelegate.$(OBJEXT)
+	-rm -f gui/MainWindow.$(OBJEXT)
+	-rm -f gui/MainWindow.moc.$(OBJEXT)
+	-rm -f gui/QCameraWidget.$(OBJEXT)
+	-rm -f gui/QCameraWidget.moc.$(OBJEXT)
+	-rm -f gui/RawEventsViewer/viewer-RawEventsViewer.$(OBJEXT)
+	-rm -f gui/RawEventsViewer/viewer-RawEventsViewer.moc.$(OBJEXT)
+	-rm -f gui/design.$(OBJEXT)
+	-rm -f gui/fact.$(OBJEXT)
+	-rm -f gui/viewer-BasicGlCamera.$(OBJEXT)
+	-rm -f gui/viewer-BasicGlCamera.moc.$(OBJEXT)
+	-rm -f gui/viewer-Q3DCameraWidget.$(OBJEXT)
+	-rm -f gui/viewer-Q3DCameraWidget.moc.$(OBJEXT)
+	-rm -f gui/viewer-QCameraWidget.$(OBJEXT)
+	-rm -f gui/viewer-QCameraWidget.moc.$(OBJEXT)
+	-rm -f src/Configuration.$(OBJEXT)
+	-rm -f src/Configuration.lo
+	-rm -f src/Connection.$(OBJEXT)
+	-rm -f src/Connection.lo
+	-rm -f src/ConnectionUSB.$(OBJEXT)
+	-rm -f src/ConnectionUSB.lo
+	-rm -f src/Console.$(OBJEXT)
+	-rm -f src/Console.lo
+	-rm -f src/Converter.$(OBJEXT)
+	-rm -f src/Converter.lo
+	-rm -f src/DataCalib.$(OBJEXT)
+	-rm -f src/DataProcessorImp.$(OBJEXT)
+	-rm -f src/DataWriteFits.$(OBJEXT)
+	-rm -f src/DataWriteFits2.$(OBJEXT)
+	-rm -f src/DataWriteRaw.$(OBJEXT)
+	-rm -f src/Description.$(OBJEXT)
+	-rm -f src/Description.lo
+	-rm -f src/DimDescriptionService.$(OBJEXT)
+	-rm -f src/DimDescriptionService.lo
+	-rm -f src/DimErrorRedirecter.$(OBJEXT)
+	-rm -f src/DimErrorRedirecter.lo
+	-rm -f src/DimNetwork.$(OBJEXT)
+	-rm -f src/DimNetwork.lo
+	-rm -f src/DimServerList.$(OBJEXT)
+	-rm -f src/DimServerList.lo
+	-rm -f src/DimServiceInfoList.$(OBJEXT)
+	-rm -f src/DimServiceInfoList.lo
+	-rm -f src/DimSetup.$(OBJEXT)
+	-rm -f src/DimSetup.lo
+	-rm -f src/DimState.$(OBJEXT)
+	-rm -f src/DimWriteStatistics.$(OBJEXT)
+	-rm -f src/DimWriteStatistics.lo
+	-rm -f src/Event.$(OBJEXT)
+	-rm -f src/Event.lo
+	-rm -f src/EventBuilder.$(OBJEXT)
+	-rm -f src/EventImp.$(OBJEXT)
+	-rm -f src/EventImp.lo
+	-rm -f src/FACT.$(OBJEXT)
+	-rm -f src/FACT.lo
+	-rm -f src/Fits.$(OBJEXT)
+	-rm -f src/FitsFile.$(OBJEXT)
+	-rm -f src/HeadersFAD.$(OBJEXT)
+	-rm -f src/HeadersFTM.$(OBJEXT)
+	-rm -f src/HeadersPower.$(OBJEXT)
+	-rm -f src/InterpreterV8.$(OBJEXT)
+	-rm -f src/MessageDim.$(OBJEXT)
+	-rm -f src/MessageDim.lo
+	-rm -f src/MessageImp.$(OBJEXT)
+	-rm -f src/MessageImp.lo
+	-rm -f src/PixelMap.$(OBJEXT)
+	-rm -f src/Readline.$(OBJEXT)
+	-rm -f src/Readline.lo
+	-rm -f src/ReadlineColor.$(OBJEXT)
+	-rm -f src/ReadlineColor.lo
+	-rm -f src/ReadlineWindow.$(OBJEXT)
+	-rm -f src/ReadlineWindow.lo
+	-rm -f src/RemoteControl.$(OBJEXT)
+	-rm -f src/ServiceList.$(OBJEXT)
+	-rm -f src/ServiceList.lo
+	-rm -f src/Shell.$(OBJEXT)
+	-rm -f src/Shell.lo
+	-rm -f src/State.$(OBJEXT)
+	-rm -f src/State.lo
+	-rm -f src/StateMachine.$(OBJEXT)
+	-rm -f src/StateMachine.lo
+	-rm -f src/StateMachineDim.$(OBJEXT)
+	-rm -f src/StateMachineDim.lo
+	-rm -f src/StateMachineDimControl.$(OBJEXT)
+	-rm -f src/StateMachineImp.$(OBJEXT)
+	-rm -f src/StateMachineImp.lo
+	-rm -f src/Time.$(OBJEXT)
+	-rm -f src/Time.lo
+	-rm -f src/WindowLog.$(OBJEXT)
+	-rm -f src/WindowLog.lo
+	-rm -f src/agilentctrl.$(OBJEXT)
+	-rm -f src/argv.$(OBJEXT)
+	-rm -f src/biasctrl.$(OBJEXT)
+	-rm -f src/chatclient.$(OBJEXT)
+	-rm -f src/chatserv.$(OBJEXT)
+	-rm -f src/datalogger.$(OBJEXT)
+	-rm -f src/dclient5.$(OBJEXT)
+	-rm -f src/dimctrl.$(OBJEXT)
+	-rm -f src/dns.$(OBJEXT)
+	-rm -f src/drivectrl.$(OBJEXT)
+	-rm -f src/dserver2.$(OBJEXT)
+	-rm -f src/evtserver.$(OBJEXT)
+	-rm -f src/fad.$(OBJEXT)
+	-rm -f src/fadctrl.$(OBJEXT)
+	-rm -f src/feedback.$(OBJEXT)
+	-rm -f src/fitscheck.$(OBJEXT)
+	-rm -f src/fitsdump.$(OBJEXT)
+	-rm -f src/fitsloader.$(OBJEXT)
+	-rm -f src/fitsselect.$(OBJEXT)
+	-rm -f src/fsc.$(OBJEXT)
+	-rm -f src/fscctrl.$(OBJEXT)
+	-rm -f src/ftm.$(OBJEXT)
+	-rm -f src/ftmctrl.$(OBJEXT)
+	-rm -f src/gcn.$(OBJEXT)
+	-rm -f src/getevent.$(OBJEXT)
+	-rm -f src/gpsctrl.$(OBJEXT)
+	-rm -f src/lidctrl.$(OBJEXT)
+	-rm -f src/log.$(OBJEXT)
+	-rm -f src/logtime.$(OBJEXT)
+	-rm -f src/magiclidar.$(OBJEXT)
+	-rm -f src/magicweather.$(OBJEXT)
+	-rm -f src/makedata.$(OBJEXT)
+	-rm -f src/makeplots.$(OBJEXT)
+	-rm -f src/mcp.$(OBJEXT)
+	-rm -f src/moon.$(OBJEXT)
+	-rm -f src/pfminictrl.$(OBJEXT)
+	-rm -f src/pwrctrl.$(OBJEXT)
+	-rm -f src/ratecontrol.$(OBJEXT)
+	-rm -f src/ratescan.$(OBJEXT)
+	-rm -f src/readfits.$(OBJEXT)
+	-rm -f src/scheduler.$(OBJEXT)
+	-rm -f src/showlog.$(OBJEXT)
+	-rm -f src/skypeclient.$(OBJEXT)
+	-rm -f src/smartfact.$(OBJEXT)
+	-rm -f src/sqmctrl.$(OBJEXT)
+	-rm -f src/temperature.$(OBJEXT)
+	-rm -f src/test.$(OBJEXT)
+	-rm -f src/time.$(OBJEXT)
+	-rm -f src/timecheck.$(OBJEXT)
+	-rm -f src/tngweather.$(OBJEXT)
+	-rm -f src/tools.$(OBJEXT)
+	-rm -f src/tools.lo
+	-rm -f src/triggerschedule.$(OBJEXT)
+	-rm -f src/viewer-DataProcessorImp.$(OBJEXT)
+	-rm -f src/viewer-Fits.$(OBJEXT)
+	-rm -f src/viewer-FitsFile.$(OBJEXT)
+	-rm -f src/viewer-PixelMap.$(OBJEXT)
+	-rm -f src/webDid-webServer.$(OBJEXT)
+	-rm -f src/zfits.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/astro.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fitsgrep.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/conn_handler.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/copy_swap.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/dic.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/diccpp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/dim_thr.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/dimcpp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/dis.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/discpp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/dll.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/dna.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/dtq.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/hash.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/open_dns.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/sll.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/swap.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/tcpip.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/tokenstring.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/$(DEPDIR)/utilities.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/did/$(DEPDIR)/did-did.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/did/$(DEPDIR)/did-dui_util.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/webDid/$(DEPDIR)/webDid-webDid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@dim/src/webDid/$(DEPDIR)/webDid-webTcpip.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/BasicGlCamera.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/BasicGlCamera.moc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/CheckBoxDelegate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/DockWindow.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/DockWindow.moc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/FactGui.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/HtmlDelegate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/MainWindow.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/MainWindow.moc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/QCameraWidget.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/QCameraWidget.moc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/design.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/fact.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/viewer-BasicGlCamera.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/viewer-BasicGlCamera.moc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/viewer-Q3DCameraWidget.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/viewer-Q3DCameraWidget.moc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/viewer-QCameraWidget.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/$(DEPDIR)/viewer-QCameraWidget.moc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.moc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/Configuration.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/Connection.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/ConnectionUSB.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/Console.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/Converter.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DataCalib.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DataProcessorImp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DataWriteFits.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DataWriteFits2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DataWriteRaw.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/Description.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DimDescriptionService.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DimErrorRedirecter.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DimNetwork.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DimServerList.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DimServiceInfoList.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DimSetup.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DimState.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/DimWriteStatistics.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/Event.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/EventBuilder.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/EventImp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/FACT.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/Fits.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/FitsFile.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/HeadersFAD.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/HeadersFTM.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/HeadersPower.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/InterpreterV8.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/MessageDim.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/MessageImp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/PixelMap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/Readline.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/ReadlineColor.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/ReadlineWindow.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/RemoteControl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/ServiceList.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/Shell.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/State.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/StateMachine.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/StateMachineDim.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/StateMachineDimControl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/StateMachineImp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/Time.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/WindowLog.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/agilentctrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/argv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/biasctrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/chatclient.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/chatserv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/datalogger.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/dclient5.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/dimctrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/dns.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/drivectrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/dserver2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/evtserver.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/fad.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/fadctrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/feedback.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/fitscheck.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/fitsdump.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/fitsloader.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/fitsselect.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/fsc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/fscctrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/ftm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/ftmctrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/gcn.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/getevent.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/gpsctrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/lidctrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/log.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/logtime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/magiclidar.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/magicweather.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/makedata.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/makeplots.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/mcp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/moon.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pfminictrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pwrctrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/ratecontrol.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/ratescan.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/readfits.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/scheduler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/showlog.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/skypeclient.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/smartfact.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/sqmctrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/temperature.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/test.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/time.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/timecheck.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/tngweather.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/tools.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/triggerschedule.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/viewer-DataProcessorImp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/viewer-Fits.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/viewer-FitsFile.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/viewer-PixelMap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/webDid-webServer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/zfits.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+dim/src/did/did-did.o: dim/src/did/did.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(did_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dim/src/did/did-did.o -MD -MP -MF dim/src/did/$(DEPDIR)/did-did.Tpo -c -o dim/src/did/did-did.o `test -f 'dim/src/did/did.c' || echo '$(srcdir)/'`dim/src/did/did.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) dim/src/did/$(DEPDIR)/did-did.Tpo dim/src/did/$(DEPDIR)/did-did.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='dim/src/did/did.c' object='dim/src/did/did-did.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(did_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dim/src/did/did-did.o `test -f 'dim/src/did/did.c' || echo '$(srcdir)/'`dim/src/did/did.c
+
+dim/src/did/did-did.obj: dim/src/did/did.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(did_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dim/src/did/did-did.obj -MD -MP -MF dim/src/did/$(DEPDIR)/did-did.Tpo -c -o dim/src/did/did-did.obj `if test -f 'dim/src/did/did.c'; then $(CYGPATH_W) 'dim/src/did/did.c'; else $(CYGPATH_W) '$(srcdir)/dim/src/did/did.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) dim/src/did/$(DEPDIR)/did-did.Tpo dim/src/did/$(DEPDIR)/did-did.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='dim/src/did/did.c' object='dim/src/did/did-did.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(did_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dim/src/did/did-did.obj `if test -f 'dim/src/did/did.c'; then $(CYGPATH_W) 'dim/src/did/did.c'; else $(CYGPATH_W) '$(srcdir)/dim/src/did/did.c'; fi`
+
+dim/src/did/did-dui_util.o: dim/src/did/dui_util.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(did_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dim/src/did/did-dui_util.o -MD -MP -MF dim/src/did/$(DEPDIR)/did-dui_util.Tpo -c -o dim/src/did/did-dui_util.o `test -f 'dim/src/did/dui_util.c' || echo '$(srcdir)/'`dim/src/did/dui_util.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) dim/src/did/$(DEPDIR)/did-dui_util.Tpo dim/src/did/$(DEPDIR)/did-dui_util.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='dim/src/did/dui_util.c' object='dim/src/did/did-dui_util.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(did_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dim/src/did/did-dui_util.o `test -f 'dim/src/did/dui_util.c' || echo '$(srcdir)/'`dim/src/did/dui_util.c
+
+dim/src/did/did-dui_util.obj: dim/src/did/dui_util.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(did_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dim/src/did/did-dui_util.obj -MD -MP -MF dim/src/did/$(DEPDIR)/did-dui_util.Tpo -c -o dim/src/did/did-dui_util.obj `if test -f 'dim/src/did/dui_util.c'; then $(CYGPATH_W) 'dim/src/did/dui_util.c'; else $(CYGPATH_W) '$(srcdir)/dim/src/did/dui_util.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) dim/src/did/$(DEPDIR)/did-dui_util.Tpo dim/src/did/$(DEPDIR)/did-dui_util.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='dim/src/did/dui_util.c' object='dim/src/did/did-dui_util.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(did_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dim/src/did/did-dui_util.obj `if test -f 'dim/src/did/dui_util.c'; then $(CYGPATH_W) 'dim/src/did/dui_util.c'; else $(CYGPATH_W) '$(srcdir)/dim/src/did/dui_util.c'; fi`
+
+dim/src/webDid/webDid-webDid.o: dim/src/webDid/webDid.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(webDid_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dim/src/webDid/webDid-webDid.o -MD -MP -MF dim/src/webDid/$(DEPDIR)/webDid-webDid.Tpo -c -o dim/src/webDid/webDid-webDid.o `test -f 'dim/src/webDid/webDid.c' || echo '$(srcdir)/'`dim/src/webDid/webDid.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) dim/src/webDid/$(DEPDIR)/webDid-webDid.Tpo dim/src/webDid/$(DEPDIR)/webDid-webDid.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='dim/src/webDid/webDid.c' object='dim/src/webDid/webDid-webDid.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(webDid_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dim/src/webDid/webDid-webDid.o `test -f 'dim/src/webDid/webDid.c' || echo '$(srcdir)/'`dim/src/webDid/webDid.c
+
+dim/src/webDid/webDid-webDid.obj: dim/src/webDid/webDid.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(webDid_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dim/src/webDid/webDid-webDid.obj -MD -MP -MF dim/src/webDid/$(DEPDIR)/webDid-webDid.Tpo -c -o dim/src/webDid/webDid-webDid.obj `if test -f 'dim/src/webDid/webDid.c'; then $(CYGPATH_W) 'dim/src/webDid/webDid.c'; else $(CYGPATH_W) '$(srcdir)/dim/src/webDid/webDid.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) dim/src/webDid/$(DEPDIR)/webDid-webDid.Tpo dim/src/webDid/$(DEPDIR)/webDid-webDid.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='dim/src/webDid/webDid.c' object='dim/src/webDid/webDid-webDid.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(webDid_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dim/src/webDid/webDid-webDid.obj `if test -f 'dim/src/webDid/webDid.c'; then $(CYGPATH_W) 'dim/src/webDid/webDid.c'; else $(CYGPATH_W) '$(srcdir)/dim/src/webDid/webDid.c'; fi`
+
+src/webDid-webServer.o: src/webServer.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(webDid_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/webDid-webServer.o -MD -MP -MF src/$(DEPDIR)/webDid-webServer.Tpo -c -o src/webDid-webServer.o `test -f 'src/webServer.c' || echo '$(srcdir)/'`src/webServer.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) src/$(DEPDIR)/webDid-webServer.Tpo src/$(DEPDIR)/webDid-webServer.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='src/webServer.c' object='src/webDid-webServer.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(webDid_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/webDid-webServer.o `test -f 'src/webServer.c' || echo '$(srcdir)/'`src/webServer.c
+
+src/webDid-webServer.obj: src/webServer.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(webDid_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/webDid-webServer.obj -MD -MP -MF src/$(DEPDIR)/webDid-webServer.Tpo -c -o src/webDid-webServer.obj `if test -f 'src/webServer.c'; then $(CYGPATH_W) 'src/webServer.c'; else $(CYGPATH_W) '$(srcdir)/src/webServer.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) src/$(DEPDIR)/webDid-webServer.Tpo src/$(DEPDIR)/webDid-webServer.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='src/webServer.c' object='src/webDid-webServer.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(webDid_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/webDid-webServer.obj `if test -f 'src/webServer.c'; then $(CYGPATH_W) 'src/webServer.c'; else $(CYGPATH_W) '$(srcdir)/src/webServer.c'; fi`
+
+dim/src/webDid/webDid-webTcpip.o: dim/src/webDid/webTcpip.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(webDid_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dim/src/webDid/webDid-webTcpip.o -MD -MP -MF dim/src/webDid/$(DEPDIR)/webDid-webTcpip.Tpo -c -o dim/src/webDid/webDid-webTcpip.o `test -f 'dim/src/webDid/webTcpip.c' || echo '$(srcdir)/'`dim/src/webDid/webTcpip.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) dim/src/webDid/$(DEPDIR)/webDid-webTcpip.Tpo dim/src/webDid/$(DEPDIR)/webDid-webTcpip.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='dim/src/webDid/webTcpip.c' object='dim/src/webDid/webDid-webTcpip.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(webDid_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dim/src/webDid/webDid-webTcpip.o `test -f 'dim/src/webDid/webTcpip.c' || echo '$(srcdir)/'`dim/src/webDid/webTcpip.c
+
+dim/src/webDid/webDid-webTcpip.obj: dim/src/webDid/webTcpip.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(webDid_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dim/src/webDid/webDid-webTcpip.obj -MD -MP -MF dim/src/webDid/$(DEPDIR)/webDid-webTcpip.Tpo -c -o dim/src/webDid/webDid-webTcpip.obj `if test -f 'dim/src/webDid/webTcpip.c'; then $(CYGPATH_W) 'dim/src/webDid/webTcpip.c'; else $(CYGPATH_W) '$(srcdir)/dim/src/webDid/webTcpip.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) dim/src/webDid/$(DEPDIR)/webDid-webTcpip.Tpo dim/src/webDid/$(DEPDIR)/webDid-webTcpip.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='dim/src/webDid/webTcpip.c' object='dim/src/webDid/webDid-webTcpip.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(webDid_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dim/src/webDid/webDid-webTcpip.obj `if test -f 'dim/src/webDid/webTcpip.c'; then $(CYGPATH_W) 'dim/src/webDid/webTcpip.c'; else $(CYGPATH_W) '$(srcdir)/dim/src/webDid/webTcpip.c'; fi`
+
+.cc.o:
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cc.lo:
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+gui/RawEventsViewer/viewer-RawEventsViewer.moc.o: gui/RawEventsViewer/RawEventsViewer.moc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/RawEventsViewer/viewer-RawEventsViewer.moc.o -MD -MP -MF gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.moc.Tpo -c -o gui/RawEventsViewer/viewer-RawEventsViewer.moc.o `test -f 'gui/RawEventsViewer/RawEventsViewer.moc.cc' || echo '$(srcdir)/'`gui/RawEventsViewer/RawEventsViewer.moc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.moc.Tpo gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.moc.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/RawEventsViewer/RawEventsViewer.moc.cc' object='gui/RawEventsViewer/viewer-RawEventsViewer.moc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/RawEventsViewer/viewer-RawEventsViewer.moc.o `test -f 'gui/RawEventsViewer/RawEventsViewer.moc.cc' || echo '$(srcdir)/'`gui/RawEventsViewer/RawEventsViewer.moc.cc
+
+gui/RawEventsViewer/viewer-RawEventsViewer.moc.obj: gui/RawEventsViewer/RawEventsViewer.moc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/RawEventsViewer/viewer-RawEventsViewer.moc.obj -MD -MP -MF gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.moc.Tpo -c -o gui/RawEventsViewer/viewer-RawEventsViewer.moc.obj `if test -f 'gui/RawEventsViewer/RawEventsViewer.moc.cc'; then $(CYGPATH_W) 'gui/RawEventsViewer/RawEventsViewer.moc.cc'; else $(CYGPATH_W) '$(srcdir)/gui/RawEventsViewer/RawEventsViewer.moc.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.moc.Tpo gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.moc.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/RawEventsViewer/RawEventsViewer.moc.cc' object='gui/RawEventsViewer/viewer-RawEventsViewer.moc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/RawEventsViewer/viewer-RawEventsViewer.moc.obj `if test -f 'gui/RawEventsViewer/RawEventsViewer.moc.cc'; then $(CYGPATH_W) 'gui/RawEventsViewer/RawEventsViewer.moc.cc'; else $(CYGPATH_W) '$(srcdir)/gui/RawEventsViewer/RawEventsViewer.moc.cc'; fi`
+
+gui/viewer-BasicGlCamera.moc.o: gui/BasicGlCamera.moc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/viewer-BasicGlCamera.moc.o -MD -MP -MF gui/$(DEPDIR)/viewer-BasicGlCamera.moc.Tpo -c -o gui/viewer-BasicGlCamera.moc.o `test -f 'gui/BasicGlCamera.moc.cc' || echo '$(srcdir)/'`gui/BasicGlCamera.moc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/viewer-BasicGlCamera.moc.Tpo gui/$(DEPDIR)/viewer-BasicGlCamera.moc.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/BasicGlCamera.moc.cc' object='gui/viewer-BasicGlCamera.moc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/viewer-BasicGlCamera.moc.o `test -f 'gui/BasicGlCamera.moc.cc' || echo '$(srcdir)/'`gui/BasicGlCamera.moc.cc
+
+gui/viewer-BasicGlCamera.moc.obj: gui/BasicGlCamera.moc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/viewer-BasicGlCamera.moc.obj -MD -MP -MF gui/$(DEPDIR)/viewer-BasicGlCamera.moc.Tpo -c -o gui/viewer-BasicGlCamera.moc.obj `if test -f 'gui/BasicGlCamera.moc.cc'; then $(CYGPATH_W) 'gui/BasicGlCamera.moc.cc'; else $(CYGPATH_W) '$(srcdir)/gui/BasicGlCamera.moc.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/viewer-BasicGlCamera.moc.Tpo gui/$(DEPDIR)/viewer-BasicGlCamera.moc.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/BasicGlCamera.moc.cc' object='gui/viewer-BasicGlCamera.moc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/viewer-BasicGlCamera.moc.obj `if test -f 'gui/BasicGlCamera.moc.cc'; then $(CYGPATH_W) 'gui/BasicGlCamera.moc.cc'; else $(CYGPATH_W) '$(srcdir)/gui/BasicGlCamera.moc.cc'; fi`
+
+gui/viewer-QCameraWidget.moc.o: gui/QCameraWidget.moc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/viewer-QCameraWidget.moc.o -MD -MP -MF gui/$(DEPDIR)/viewer-QCameraWidget.moc.Tpo -c -o gui/viewer-QCameraWidget.moc.o `test -f 'gui/QCameraWidget.moc.cc' || echo '$(srcdir)/'`gui/QCameraWidget.moc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/viewer-QCameraWidget.moc.Tpo gui/$(DEPDIR)/viewer-QCameraWidget.moc.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/QCameraWidget.moc.cc' object='gui/viewer-QCameraWidget.moc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/viewer-QCameraWidget.moc.o `test -f 'gui/QCameraWidget.moc.cc' || echo '$(srcdir)/'`gui/QCameraWidget.moc.cc
+
+gui/viewer-QCameraWidget.moc.obj: gui/QCameraWidget.moc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/viewer-QCameraWidget.moc.obj -MD -MP -MF gui/$(DEPDIR)/viewer-QCameraWidget.moc.Tpo -c -o gui/viewer-QCameraWidget.moc.obj `if test -f 'gui/QCameraWidget.moc.cc'; then $(CYGPATH_W) 'gui/QCameraWidget.moc.cc'; else $(CYGPATH_W) '$(srcdir)/gui/QCameraWidget.moc.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/viewer-QCameraWidget.moc.Tpo gui/$(DEPDIR)/viewer-QCameraWidget.moc.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/QCameraWidget.moc.cc' object='gui/viewer-QCameraWidget.moc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/viewer-QCameraWidget.moc.obj `if test -f 'gui/QCameraWidget.moc.cc'; then $(CYGPATH_W) 'gui/QCameraWidget.moc.cc'; else $(CYGPATH_W) '$(srcdir)/gui/QCameraWidget.moc.cc'; fi`
+
+gui/viewer-Q3DCameraWidget.moc.o: gui/Q3DCameraWidget.moc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/viewer-Q3DCameraWidget.moc.o -MD -MP -MF gui/$(DEPDIR)/viewer-Q3DCameraWidget.moc.Tpo -c -o gui/viewer-Q3DCameraWidget.moc.o `test -f 'gui/Q3DCameraWidget.moc.cc' || echo '$(srcdir)/'`gui/Q3DCameraWidget.moc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/viewer-Q3DCameraWidget.moc.Tpo gui/$(DEPDIR)/viewer-Q3DCameraWidget.moc.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/Q3DCameraWidget.moc.cc' object='gui/viewer-Q3DCameraWidget.moc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/viewer-Q3DCameraWidget.moc.o `test -f 'gui/Q3DCameraWidget.moc.cc' || echo '$(srcdir)/'`gui/Q3DCameraWidget.moc.cc
+
+gui/viewer-Q3DCameraWidget.moc.obj: gui/Q3DCameraWidget.moc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/viewer-Q3DCameraWidget.moc.obj -MD -MP -MF gui/$(DEPDIR)/viewer-Q3DCameraWidget.moc.Tpo -c -o gui/viewer-Q3DCameraWidget.moc.obj `if test -f 'gui/Q3DCameraWidget.moc.cc'; then $(CYGPATH_W) 'gui/Q3DCameraWidget.moc.cc'; else $(CYGPATH_W) '$(srcdir)/gui/Q3DCameraWidget.moc.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/viewer-Q3DCameraWidget.moc.Tpo gui/$(DEPDIR)/viewer-Q3DCameraWidget.moc.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/Q3DCameraWidget.moc.cc' object='gui/viewer-Q3DCameraWidget.moc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/viewer-Q3DCameraWidget.moc.obj `if test -f 'gui/Q3DCameraWidget.moc.cc'; then $(CYGPATH_W) 'gui/Q3DCameraWidget.moc.cc'; else $(CYGPATH_W) '$(srcdir)/gui/Q3DCameraWidget.moc.cc'; fi`
+
+gui/RawEventsViewer/viewer-RawEventsViewer.o: gui/RawEventsViewer/RawEventsViewer.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/RawEventsViewer/viewer-RawEventsViewer.o -MD -MP -MF gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.Tpo -c -o gui/RawEventsViewer/viewer-RawEventsViewer.o `test -f 'gui/RawEventsViewer/RawEventsViewer.cc' || echo '$(srcdir)/'`gui/RawEventsViewer/RawEventsViewer.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.Tpo gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/RawEventsViewer/RawEventsViewer.cc' object='gui/RawEventsViewer/viewer-RawEventsViewer.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/RawEventsViewer/viewer-RawEventsViewer.o `test -f 'gui/RawEventsViewer/RawEventsViewer.cc' || echo '$(srcdir)/'`gui/RawEventsViewer/RawEventsViewer.cc
+
+gui/RawEventsViewer/viewer-RawEventsViewer.obj: gui/RawEventsViewer/RawEventsViewer.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/RawEventsViewer/viewer-RawEventsViewer.obj -MD -MP -MF gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.Tpo -c -o gui/RawEventsViewer/viewer-RawEventsViewer.obj `if test -f 'gui/RawEventsViewer/RawEventsViewer.cc'; then $(CYGPATH_W) 'gui/RawEventsViewer/RawEventsViewer.cc'; else $(CYGPATH_W) '$(srcdir)/gui/RawEventsViewer/RawEventsViewer.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.Tpo gui/RawEventsViewer/$(DEPDIR)/viewer-RawEventsViewer.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/RawEventsViewer/RawEventsViewer.cc' object='gui/RawEventsViewer/viewer-RawEventsViewer.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/RawEventsViewer/viewer-RawEventsViewer.obj `if test -f 'gui/RawEventsViewer/RawEventsViewer.cc'; then $(CYGPATH_W) 'gui/RawEventsViewer/RawEventsViewer.cc'; else $(CYGPATH_W) '$(srcdir)/gui/RawEventsViewer/RawEventsViewer.cc'; fi`
+
+gui/viewer-BasicGlCamera.o: gui/BasicGlCamera.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/viewer-BasicGlCamera.o -MD -MP -MF gui/$(DEPDIR)/viewer-BasicGlCamera.Tpo -c -o gui/viewer-BasicGlCamera.o `test -f 'gui/BasicGlCamera.cc' || echo '$(srcdir)/'`gui/BasicGlCamera.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/viewer-BasicGlCamera.Tpo gui/$(DEPDIR)/viewer-BasicGlCamera.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/BasicGlCamera.cc' object='gui/viewer-BasicGlCamera.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/viewer-BasicGlCamera.o `test -f 'gui/BasicGlCamera.cc' || echo '$(srcdir)/'`gui/BasicGlCamera.cc
+
+gui/viewer-BasicGlCamera.obj: gui/BasicGlCamera.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/viewer-BasicGlCamera.obj -MD -MP -MF gui/$(DEPDIR)/viewer-BasicGlCamera.Tpo -c -o gui/viewer-BasicGlCamera.obj `if test -f 'gui/BasicGlCamera.cc'; then $(CYGPATH_W) 'gui/BasicGlCamera.cc'; else $(CYGPATH_W) '$(srcdir)/gui/BasicGlCamera.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/viewer-BasicGlCamera.Tpo gui/$(DEPDIR)/viewer-BasicGlCamera.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/BasicGlCamera.cc' object='gui/viewer-BasicGlCamera.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/viewer-BasicGlCamera.obj `if test -f 'gui/BasicGlCamera.cc'; then $(CYGPATH_W) 'gui/BasicGlCamera.cc'; else $(CYGPATH_W) '$(srcdir)/gui/BasicGlCamera.cc'; fi`
+
+gui/viewer-QCameraWidget.o: gui/QCameraWidget.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/viewer-QCameraWidget.o -MD -MP -MF gui/$(DEPDIR)/viewer-QCameraWidget.Tpo -c -o gui/viewer-QCameraWidget.o `test -f 'gui/QCameraWidget.cc' || echo '$(srcdir)/'`gui/QCameraWidget.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/viewer-QCameraWidget.Tpo gui/$(DEPDIR)/viewer-QCameraWidget.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/QCameraWidget.cc' object='gui/viewer-QCameraWidget.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/viewer-QCameraWidget.o `test -f 'gui/QCameraWidget.cc' || echo '$(srcdir)/'`gui/QCameraWidget.cc
+
+gui/viewer-QCameraWidget.obj: gui/QCameraWidget.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/viewer-QCameraWidget.obj -MD -MP -MF gui/$(DEPDIR)/viewer-QCameraWidget.Tpo -c -o gui/viewer-QCameraWidget.obj `if test -f 'gui/QCameraWidget.cc'; then $(CYGPATH_W) 'gui/QCameraWidget.cc'; else $(CYGPATH_W) '$(srcdir)/gui/QCameraWidget.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/viewer-QCameraWidget.Tpo gui/$(DEPDIR)/viewer-QCameraWidget.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/QCameraWidget.cc' object='gui/viewer-QCameraWidget.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/viewer-QCameraWidget.obj `if test -f 'gui/QCameraWidget.cc'; then $(CYGPATH_W) 'gui/QCameraWidget.cc'; else $(CYGPATH_W) '$(srcdir)/gui/QCameraWidget.cc'; fi`
+
+gui/viewer-Q3DCameraWidget.o: gui/Q3DCameraWidget.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/viewer-Q3DCameraWidget.o -MD -MP -MF gui/$(DEPDIR)/viewer-Q3DCameraWidget.Tpo -c -o gui/viewer-Q3DCameraWidget.o `test -f 'gui/Q3DCameraWidget.cc' || echo '$(srcdir)/'`gui/Q3DCameraWidget.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/viewer-Q3DCameraWidget.Tpo gui/$(DEPDIR)/viewer-Q3DCameraWidget.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/Q3DCameraWidget.cc' object='gui/viewer-Q3DCameraWidget.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/viewer-Q3DCameraWidget.o `test -f 'gui/Q3DCameraWidget.cc' || echo '$(srcdir)/'`gui/Q3DCameraWidget.cc
+
+gui/viewer-Q3DCameraWidget.obj: gui/Q3DCameraWidget.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT gui/viewer-Q3DCameraWidget.obj -MD -MP -MF gui/$(DEPDIR)/viewer-Q3DCameraWidget.Tpo -c -o gui/viewer-Q3DCameraWidget.obj `if test -f 'gui/Q3DCameraWidget.cc'; then $(CYGPATH_W) 'gui/Q3DCameraWidget.cc'; else $(CYGPATH_W) '$(srcdir)/gui/Q3DCameraWidget.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/viewer-Q3DCameraWidget.Tpo gui/$(DEPDIR)/viewer-Q3DCameraWidget.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/Q3DCameraWidget.cc' object='gui/viewer-Q3DCameraWidget.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o gui/viewer-Q3DCameraWidget.obj `if test -f 'gui/Q3DCameraWidget.cc'; then $(CYGPATH_W) 'gui/Q3DCameraWidget.cc'; else $(CYGPATH_W) '$(srcdir)/gui/Q3DCameraWidget.cc'; fi`
+
+src/viewer-DataProcessorImp.o: src/DataProcessorImp.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT src/viewer-DataProcessorImp.o -MD -MP -MF src/$(DEPDIR)/viewer-DataProcessorImp.Tpo -c -o src/viewer-DataProcessorImp.o `test -f 'src/DataProcessorImp.cc' || echo '$(srcdir)/'`src/DataProcessorImp.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/$(DEPDIR)/viewer-DataProcessorImp.Tpo src/$(DEPDIR)/viewer-DataProcessorImp.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/DataProcessorImp.cc' object='src/viewer-DataProcessorImp.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o src/viewer-DataProcessorImp.o `test -f 'src/DataProcessorImp.cc' || echo '$(srcdir)/'`src/DataProcessorImp.cc
+
+src/viewer-DataProcessorImp.obj: src/DataProcessorImp.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT src/viewer-DataProcessorImp.obj -MD -MP -MF src/$(DEPDIR)/viewer-DataProcessorImp.Tpo -c -o src/viewer-DataProcessorImp.obj `if test -f 'src/DataProcessorImp.cc'; then $(CYGPATH_W) 'src/DataProcessorImp.cc'; else $(CYGPATH_W) '$(srcdir)/src/DataProcessorImp.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/$(DEPDIR)/viewer-DataProcessorImp.Tpo src/$(DEPDIR)/viewer-DataProcessorImp.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/DataProcessorImp.cc' object='src/viewer-DataProcessorImp.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o src/viewer-DataProcessorImp.obj `if test -f 'src/DataProcessorImp.cc'; then $(CYGPATH_W) 'src/DataProcessorImp.cc'; else $(CYGPATH_W) '$(srcdir)/src/DataProcessorImp.cc'; fi`
+
+src/viewer-FitsFile.o: src/FitsFile.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT src/viewer-FitsFile.o -MD -MP -MF src/$(DEPDIR)/viewer-FitsFile.Tpo -c -o src/viewer-FitsFile.o `test -f 'src/FitsFile.cc' || echo '$(srcdir)/'`src/FitsFile.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/$(DEPDIR)/viewer-FitsFile.Tpo src/$(DEPDIR)/viewer-FitsFile.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/FitsFile.cc' object='src/viewer-FitsFile.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o src/viewer-FitsFile.o `test -f 'src/FitsFile.cc' || echo '$(srcdir)/'`src/FitsFile.cc
+
+src/viewer-FitsFile.obj: src/FitsFile.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT src/viewer-FitsFile.obj -MD -MP -MF src/$(DEPDIR)/viewer-FitsFile.Tpo -c -o src/viewer-FitsFile.obj `if test -f 'src/FitsFile.cc'; then $(CYGPATH_W) 'src/FitsFile.cc'; else $(CYGPATH_W) '$(srcdir)/src/FitsFile.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/$(DEPDIR)/viewer-FitsFile.Tpo src/$(DEPDIR)/viewer-FitsFile.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/FitsFile.cc' object='src/viewer-FitsFile.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o src/viewer-FitsFile.obj `if test -f 'src/FitsFile.cc'; then $(CYGPATH_W) 'src/FitsFile.cc'; else $(CYGPATH_W) '$(srcdir)/src/FitsFile.cc'; fi`
+
+src/viewer-Fits.o: src/Fits.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT src/viewer-Fits.o -MD -MP -MF src/$(DEPDIR)/viewer-Fits.Tpo -c -o src/viewer-Fits.o `test -f 'src/Fits.cc' || echo '$(srcdir)/'`src/Fits.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/$(DEPDIR)/viewer-Fits.Tpo src/$(DEPDIR)/viewer-Fits.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/Fits.cc' object='src/viewer-Fits.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o src/viewer-Fits.o `test -f 'src/Fits.cc' || echo '$(srcdir)/'`src/Fits.cc
+
+src/viewer-Fits.obj: src/Fits.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT src/viewer-Fits.obj -MD -MP -MF src/$(DEPDIR)/viewer-Fits.Tpo -c -o src/viewer-Fits.obj `if test -f 'src/Fits.cc'; then $(CYGPATH_W) 'src/Fits.cc'; else $(CYGPATH_W) '$(srcdir)/src/Fits.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/$(DEPDIR)/viewer-Fits.Tpo src/$(DEPDIR)/viewer-Fits.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/Fits.cc' object='src/viewer-Fits.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o src/viewer-Fits.obj `if test -f 'src/Fits.cc'; then $(CYGPATH_W) 'src/Fits.cc'; else $(CYGPATH_W) '$(srcdir)/src/Fits.cc'; fi`
+
+src/viewer-PixelMap.o: src/PixelMap.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT src/viewer-PixelMap.o -MD -MP -MF src/$(DEPDIR)/viewer-PixelMap.Tpo -c -o src/viewer-PixelMap.o `test -f 'src/PixelMap.cc' || echo '$(srcdir)/'`src/PixelMap.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/$(DEPDIR)/viewer-PixelMap.Tpo src/$(DEPDIR)/viewer-PixelMap.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/PixelMap.cc' object='src/viewer-PixelMap.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o src/viewer-PixelMap.o `test -f 'src/PixelMap.cc' || echo '$(srcdir)/'`src/PixelMap.cc
+
+src/viewer-PixelMap.obj: src/PixelMap.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -MT src/viewer-PixelMap.obj -MD -MP -MF src/$(DEPDIR)/viewer-PixelMap.Tpo -c -o src/viewer-PixelMap.obj `if test -f 'src/PixelMap.cc'; then $(CYGPATH_W) 'src/PixelMap.cc'; else $(CYGPATH_W) '$(srcdir)/src/PixelMap.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/$(DEPDIR)/viewer-PixelMap.Tpo src/$(DEPDIR)/viewer-PixelMap.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/PixelMap.cc' object='src/viewer-PixelMap.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(viewer_CXXFLAGS) $(CXXFLAGS) -c -o src/viewer-PixelMap.obj `if test -f 'src/PixelMap.cc'; then $(CYGPATH_W) 'src/PixelMap.cc'; else $(CYGPATH_W) '$(srcdir)/src/PixelMap.cc'; fi`
+
+.cxx.o:
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cxx.obj:
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cxx.lo:
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+	-rm -rf dim/src/.libs dim/src/_libs
+	-rm -rf src/.libs src/_libs
+
+distclean-libtool:
+	-rm -f libtool config.lt
+install-man1: $(dist_man1_MANS)
+	@$(NORMAL_INSTALL)
+	test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
+	@list='$(dist_man1_MANS)'; test -n "$(man1dir)" || exit 0; \
+	{ for i in $$list; do echo "$$i"; done; \
+	} | while read p; do \
+	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; echo "$$p"; \
+	done | \
+	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+	sed 'N;N;s,\n, ,g' | { \
+	list=; while read file base inst; do \
+	  if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+	    echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+	    $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+	  fi; \
+	done; \
+	for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+	while read files; do \
+	  test -z "$$files" || { \
+	    echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+	    $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+	done; }
+
+uninstall-man1:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_man1_MANS)'; test -n "$(man1dir)" || exit 0; \
+	files=`{ for i in $$list; do echo "$$i"; done; \
+	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+	dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+install-libDim___laHEADERS: $(libDim___la_HEADERS)
+	@$(NORMAL_INSTALL)
+	test -z "$(libDim___ladir)" || $(MKDIR_P) "$(DESTDIR)$(libDim___ladir)"
+	@list='$(libDim___la_HEADERS)'; test -n "$(libDim___ladir)" || list=; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libDim___ladir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(libDim___ladir)" || exit $$?; \
+	done
+
+uninstall-libDim___laHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(libDim___la_HEADERS)'; test -n "$(libDim___ladir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(libDim___ladir)'; $(am__uninstall_files_from_dir)
+install-libDim_laHEADERS: $(libDim_la_HEADERS)
+	@$(NORMAL_INSTALL)
+	test -z "$(libDim_ladir)" || $(MKDIR_P) "$(DESTDIR)$(libDim_ladir)"
+	@list='$(libDim_la_HEADERS)'; test -n "$(libDim_ladir)" || list=; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libDim_ladir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(libDim_ladir)" || exit $$?; \
+	done
+
+uninstall-libDim_laHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(libDim_la_HEADERS)'; test -n "$(libDim_ladir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(libDim_ladir)'; $(am__uninstall_files_from_dir)
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@list='$(MANS)'; if test -n "$$list"; then \
+	  list=`for p in $$list; do \
+	    if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+	    if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+	  if test -n "$$list" && \
+	    grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+	    echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+	    grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
+	    echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+	    echo "       typically \`make maintainer-clean' will remove them" >&2; \
+	    exit 1; \
+	  else :; fi; \
+	else :; fi
+	$(am__remove_distdir)
+	test -d "$(distdir)" || mkdir "$(distdir)"
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	-test -n "$(am__skip_mode_fix)" \
+	|| find "$(distdir)" -type d ! -perm -755 \
+		-exec chmod u+rwx,go+rx {} \; -o \
+	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+	|| chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__remove_distdir)
+
+dist-bzip2: distdir
+	tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+	$(am__remove_distdir)
+
+dist-lzip: distdir
+	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+	$(am__remove_distdir)
+
+dist-lzma: distdir
+	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+	$(am__remove_distdir)
+
+dist-xz: distdir
+	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+	$(am__remove_distdir)
+
+dist-tarZ: distdir
+	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+	$(am__remove_distdir)
+
+dist-shar: distdir
+	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+	$(am__remove_distdir)
+
+dist-zip: distdir
+	-rm -f $(distdir).zip
+	zip -rq $(distdir).zip $(distdir)
+	$(am__remove_distdir)
+
+dist dist-all: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+	case '$(DIST_ARCHIVES)' in \
+	*.tar.gz*) \
+	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+	*.tar.bz2*) \
+	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+	*.tar.lzma*) \
+	  lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+	*.tar.lz*) \
+	  lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+	*.tar.xz*) \
+	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+	*.tar.Z*) \
+	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+	*.shar.gz*) \
+	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+	*.zip*) \
+	  unzip $(distdir).zip ;;\
+	esac
+	chmod -R a-w $(distdir); chmod a+w $(distdir)
+	mkdir $(distdir)/_build
+	mkdir $(distdir)/_inst
+	chmod a-w $(distdir)
+	test -d $(distdir)/_build || exit 0; \
+	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+	  && am__cwd=`pwd` \
+	  && $(am__cd) $(distdir)/_build \
+	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(MAKE) $(AM_MAKEFLAGS) check \
+	  && $(MAKE) $(AM_MAKEFLAGS) install \
+	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+	        distuninstallcheck \
+	  && chmod -R a-w "$$dc_install_base" \
+	  && ({ \
+	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+	  && rm -rf "$$dc_destdir" \
+	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+	  && rm -rf $(DIST_ARCHIVES) \
+	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+	  && cd "$$am__cwd" \
+	  || exit 1
+	$(am__remove_distdir)
+	@(echo "$(distdir) archives ready for distribution: "; \
+	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+	@test -n '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: trying to run $@ with an empty' \
+	       '$$(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	$(am__cd) '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+	   || { echo "ERROR: files left after uninstall:" ; \
+	        if test -n "$(DESTDIR)"; then \
+	          echo "  (check DESTDIR support)"; \
+	        fi ; \
+	        $(distuninstallcheck_listfiles) ; \
+	        exit 1; } >&2
+distcleancheck: distclean
+	@if test '$(srcdir)' = . ; then \
+	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+	  exit 1 ; \
+	fi
+	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+	  || { echo "ERROR: files left in build directory after distclean:" ; \
+	       $(distcleancheck_listfiles) ; \
+	       exit 1; } >&2
+check-am: all-am
+check: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(MANS) \
+		$(HEADERS)
+install-binPROGRAMS: install-libLTLIBRARIES
+
+installdirs:
+	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(libDim___ladir)" "$(DESTDIR)$(libDim_ladir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-rm -f dim/src/$(DEPDIR)/$(am__dirstamp)
+	-rm -f dim/src/$(am__dirstamp)
+	-rm -f dim/src/did/$(DEPDIR)/$(am__dirstamp)
+	-rm -f dim/src/did/$(am__dirstamp)
+	-rm -f dim/src/webDid/$(DEPDIR)/$(am__dirstamp)
+	-rm -f dim/src/webDid/$(am__dirstamp)
+	-rm -f gui/$(DEPDIR)/$(am__dirstamp)
+	-rm -f gui/$(am__dirstamp)
+	-rm -f gui/RawEventsViewer/$(DEPDIR)/$(am__dirstamp)
+	-rm -f gui/RawEventsViewer/$(am__dirstamp)
+	-rm -f src/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/$(am__dirstamp)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \
+	clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf ./$(DEPDIR) dim/src/$(DEPDIR) dim/src/did/$(DEPDIR) dim/src/webDid/$(DEPDIR) gui/$(DEPDIR) gui/RawEventsViewer/$(DEPDIR) src/$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-libDim___laHEADERS install-libDim_laHEADERS \
+	install-man
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS install-libLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man: install-man1
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am: installcheck-binPROGRAMS
+
+maintainer-clean: maintainer-clean-am
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(top_srcdir)/autom4te.cache
+	-rm -rf ./$(DEPDIR) dim/src/$(DEPDIR) dim/src/did/$(DEPDIR) dim/src/webDid/$(DEPDIR) gui/$(DEPDIR) gui/RawEventsViewer/$(DEPDIR) src/$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-libDim___laHEADERS \
+	uninstall-libDim_laHEADERS uninstall-libLTLIBRARIES \
+	uninstall-man
+
+uninstall-man: uninstall-man1
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \
+	clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \
+	clean-libtool ctags dist dist-all dist-bzip2 dist-gzip \
+	dist-lzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
+	distcheck distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distcleancheck distdir \
+	distuninstallcheck dvi dvi-am html html-am info info-am \
+	install install-am install-binPROGRAMS install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-libDim___laHEADERS \
+	install-libDim_laHEADERS install-libLTLIBRARIES install-man \
+	install-man1 install-pdf install-pdf-am install-ps \
+	install-ps-am install-strip installcheck installcheck-am \
+	installcheck-binPROGRAMS installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-binPROGRAMS \
+	uninstall-libDim___laHEADERS uninstall-libDim_laHEADERS \
+	uninstall-libLTLIBRARIES uninstall-man uninstall-man1
+
+
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@doxygen-ps: @DX_DOCDIR@/@PACKAGE@.ps
+
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@@DX_DOCDIR@/@PACKAGE@.ps: @DX_DOCDIR@/@PACKAGE@.tag
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	cd @DX_DOCDIR@/latex; \
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	$(DX_LATEX) refman.tex; \
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	$(MAKEINDEX_PATH) refman.idx; \
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	$(DX_LATEX) refman.tex; \
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	countdown=5; \
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@               refman.log > /dev/null 2>&1 && test $$countdown -gt 0; \
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	do \
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	   $(DX_LATEX) refman.tex; \
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	   countdown=`expr $$countdown - 1`; \
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	done; \
+@DX_COND_doc_TRUE@@DX_COND_ps_TRUE@	$(DX_DVIPS) -o ../@PACKAGE@.ps refman.dvi
+
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@doxygen-pdf: @DX_DOCDIR@/@PACKAGE@.pdf
+
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@@DX_DOCDIR@/@PACKAGE@.pdf: @DX_DOCDIR@/@PACKAGE@.tag
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	cd @DX_DOCDIR@/latex; \
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	$(DX_PDFLATEX) refman.tex; \
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	$(DX_MAKEINDEX) refman.idx; \
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	$(DX_PDFLATEX) refman.tex; \
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	countdown=5; \
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@		refman.log > /dev/null 2>&1 && test $$countdown -gt 0; \
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@	do \
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@		$(DX_PDFLATEX) refman.tex; \
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@		countdown=`expr $$countdown - 1`; \
+@DX_COND_doc_TRUE@@DX_COND_pdf_TRUE@    	done;
+
+@DX_COND_doc_TRUE@.PHONY: doxygen-run doxygen-doc $(DX_PS_GOAL) $(DX_PDF_GOAL)
+
+@DX_COND_doc_TRUE@.INTERMEDIATE: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL)
+
+@DX_COND_doc_TRUE@doxygen-run: @DX_DOCDIR@/@PACKAGE@.tag
+
+@DX_COND_doc_TRUE@doxygen-doc: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL)
+
+@DX_COND_doc_TRUE@@DX_DOCDIR@/@PACKAGE@.tag: $(DX_CONFIG) $(pkginclude_HEADERS)
+@DX_COND_doc_TRUE@	rm -rf @DX_DOCDIR@
+@DX_COND_doc_TRUE@	$(DX_ENV) $(DX_DOXYGEN) $(srcdir)/$(DX_CONFIG)
+
+.ui.h: $<
+	$(AM_V_GEN)$(UIC4) $< -o $@
+
+.h.moc.cc: $<
+	$(AM_V_GEN)$(MOC4) $(EXTRA_CPPFLAGS) $< -o $@
+
+.qrc.cc: $<
+	$(AM_V_GEN)$(RCC4) -name `echo "$<" | sed 's|^.*/\(.*\)\.qrc$$|\1|'` $< -o $@
+
+$(dist_man1_MANS): $(dist_man1_MANS:.man=)
+	@mkdir -p man
+	$(AM_V_GEN)help2man -N -o $@ -m $(@:.man=) ./$(@:.man=)
+
+.man.html: $<
+	$(AM_V_GEN)groff -mandoc `man -w -l $<` -T html > $@
+
+.man.pdf: $<
+	$(AM_V_GEN)groff -mandoc `man -w -l $<` | ps2pdf - $@
+
+jsdoc:
+	@rm -rf www/dimctrl
+	$(AM_V_GEN)jsdoc -r=2 -d=www/dimctrl scripts | grep -v ^java
+
+doc: $(MAN_TARGETS) $(JAVA_SCRIPT_DOC) doxygen-run
+	@cd doxygen-doc/html
+	@ln -s index.html main.html
+	@mkdir -p pdf
+	@mkdir -p man
+	@cd pdf
+	@ln -sf ../../../*.pdf .
+	@cd ../man
+	@ln -sf ../../../*.html .
+	@cd ../../..
+
+diff:
+	@svn diff | $(COLORDIFF)
+
+rdiff:
+	@svn diff -r BASE:HEAD . externals | $(COLORDIFF)
+
+status:
+	@svn status -u | grep -v ^\?
+
+#-------------------------------------------------------------------------
+
+# Overwrite rules for silent or other verbosity levels
+#AM_V_MAN = $(AM_MAN_$(V))
+#AM_MAN_ = $(AM_V_GEN)
+#AM_MAN_0 = @echo  "  MAN    "$@;
+
+#$(MyAnalysisDS): $(MyAnalysisH) $(MyAnalysisL)
+#	$(ROOTCINT) -f $@ -c -I$(top_builddir)/config $(INCLUDES) $^
+#	rootcint_files=`echo $@ | sed -ne 's/\(.*\)\..*/\1.cxx \1.h/p'` && \
+#        $(top_srcdir)/config/runsed $(top_srcdir)/config/rootcint.sed $$rootcint_files && \
+#        for i in $$rootcint_files; do \
+#          if test ! `diff $$i $(srcdir)/$$i >/dev/null 2>&1`; then \
+#            cp $$i $(srcdir)/; \
+#          fi; \
+#        done
+
+#CLEANFILES = *~ *.rej *.orig
+#MAINTAINERCLEANFILES = aclocal.m4 config.h.in configure Makefile.in \
+#        stamp-h.in stamp-h[0-9].in
+#DISTCLEANFILES = config.cache config.log
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: branches/testFACT++branch/ScriptsForDimCtrl/AmplVsOv.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/AmplVsOv.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/AmplVsOv.dim	(revision 18277)
@@ -0,0 +1,47 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Amplitude vs. Voltage Offset Measurement
+
+# ==========================================================================
+# Script for Amplitude vs. Voltage Offset Measurement
+
+# call it by: .x ScriptsForDimCtrl/AmplVsOv.dim V=<voltage_offset_value>
+
+# ----------------------------------------------------
+
+
+> changing feedback voltage offset to ${V}
+
+FEEDBACK/STOP                           # STOP FEEDBACK
+.w 1000                                 # wait 1 second
+
+FEEDBACK/START_CURRENT_CONTROL ${V}     # set Current_Control to given Offset value
+
+> ...checking if Voltage is ON
+# will ramp if not at nominal, will skip ramping if Voltage on
+.s BIAS_CONTROL 7 3000 1
+> Voltage is OFF, will ramp to nominal Voltage
+BIAS_CONTROL/SET_GLOBAL_DAC 1
+.s BIAS_CONTROL 9
+.s BIAS_CONTROL 5
+> ...ramping
+.s BIAS_CONTROL 9
+
+:1
+> Voltage is ON, waiting 45 sec for current_control to stabilize
+.w 42000                                # wait 30 second for the current updates
+
+> OPERATOR: Write down: V_offset ${V}, Med(V), Med(I) and the Run number to the Excel file
+
+> starting LPext with 1000 Events       # start external Lightpulser Run with 1000 Events
+# take a ExtLP run
+.x ScriptsForDimCtrl/ServiceScripts/IsTracking.dim
+.x ScriptsForDimCtrl/ServiceScripts/TakeExtLpRun.dim
+
+FEEDBACK/STOP                           # STOP FEEDBACK
+> ...Feedback stopped
+>
+> OPERATOR: make sure to restart the feedback with the correct offset when resuming data taking
+>
+> ...done
Index: branches/testFACT++branch/ScriptsForDimCtrl/BlinkenLights.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/BlinkenLights.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/BlinkenLights.dim	(revision 18277)
@@ -0,0 +1,26 @@
+#!dimctrl --exec
+
+# This is a general test for DimCtrl scripts
+# it will just let the LEDs in the FAD tab next to the buttons
+# 'Fits' and 'None' blink
+FAD_CONTROL/SET_FILE_FORMAT 0
+.w 1000
+FAD_CONTROL/SET_FILE_FORMAT 2
+.w 1000
+FAD_CONTROL/SET_FILE_FORMAT 0
+.w 1000
+FAD_CONTROL/SET_FILE_FORMAT 2
+.w 1000
+FAD_CONTROL/SET_FILE_FORMAT 0
+.w 1000
+FAD_CONTROL/SET_FILE_FORMAT 2
+.w 1000
+FAD_CONTROL/SET_FILE_FORMAT 0
+.w 1000
+FAD_CONTROL/SET_FILE_FORMAT 2
+.w 1000
+FAD_CONTROL/SET_FILE_FORMAT 0
+.w 1000
+FAD_CONTROL/SET_FILE_FORMAT 2
+.w 1000
+FAD_CONTROL/SET_FILE_FORMAT 0
Index: branches/testFACT++branch/ScriptsForDimCtrl/Calib1024.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/Calib1024.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/Calib1024.dim	(revision 18277)
@@ -0,0 +1,30 @@
+#!dimctrl --exec
+
+# This sript takes a DRS Calibration for data of ROI=1024
+# Making sure bias is off
+.! echo `date -u` "First DRS Calibration Script starting up..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo `date -u` "-------------------------------------------" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+FEEDBACK/ENABLE_OUTPUT 1
+BIAS_CONTROL/SET_ZERO_VOLTAGE
+.s BIAS_CONTROL 7
+FAD_CONTROL/START_DRS_CALIBRATION
+.! echo `date -u` "bias voltage is switched off" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+.! echo `date -u` "taking DRS:Pedestal 1000 ..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+MCP/START -1 1000 drs-pedestal
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+.! echo `date -u` "... done" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+.! echo `date -u` "taking DRS:Gain 1000 ..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+MCP/START -1 1000 drs-gain
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+.! echo `date -u` "... done" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+.! echo `date -u` "taking DRS:Pedestal 1000 ..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+MCP/START -1 1000 drs-pedestal
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+.! echo `date -u` "... done" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
Index: branches/testFACT++branch/ScriptsForDimCtrl/DataTaking1.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/DataTaking1.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/DataTaking1.dim	(revision 18277)
@@ -0,0 +1,35 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Script for taking data when you are tracking wobble position 1
+
+# take a DRS CaLibration and physics Data afterwards
+# ==========================================================================
+
+# Move Telescope to Wobble Position 1
+>
+> --------------------------------------
+> data taking for Wobble 1
+> starting up...
+> --------------------------------------
+> OPERATOR:
+> make sure the telescope is tracking
+> wobble position 1 of the source
+> --------------------------------------
+
+# Take a DRS-Calibration before beginning to take physics Data
+.x ScriptsForDimCtrl/ServiceScripts/TakeDrsCalibration.dim
+
+> --------------------------------------
+> OPERATOR: Measure Sky Brightness
+> --------------------------------------
+
+# check feedback state before switching BIAS ON and ramping up to nominal Voltage
+.x ScriptsForDimCtrl/ServiceScripts/PrepareBiasForDataTaking.dim
+
+# taking a Data Set (1x Pedestal 1000 Bias On, 1x LPext 1000, 4x5min DataRun)
+.x ScriptsForDimCtrl/ServiceScripts/TakeData.dim
+
+> --------------------------------------
+> data taking for Wobble 1 finished
+> --------------------------------------
Index: branches/testFACT++branch/ScriptsForDimCtrl/DataTaking2.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/DataTaking2.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/DataTaking2.dim	(revision 18277)
@@ -0,0 +1,26 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Script for taking data when you are tracking wobble position 2
+# ==========================================================================
+
+# Move Telescope to Wobble Position 2
+>
+> --------------------------------------
+> data taking for Wobble 2
+> starting up...
+> --------------------------------------
+> --------------------------------------
+> OPERATOR:
+> + make sure the telescope is tracking
+>   wobble position 2 of the source
+> + Measure Sky Brightness
+> --------------------------------------
+>
+
+# taking a Data Set (1x Pedestal 1000 Bias On, 1x LPext 1000, 4x5min DataRun)
+.x ScriptsForDimCtrl/ServiceScripts/TakeData.dim
+
+> --------------------------------------
+> data taking for Wobble 2 finished
+> --------------------------------------
Index: branches/testFACT++branch/ScriptsForDimCtrl/FeedbackOn.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/FeedbackOn.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/FeedbackOn.dim	(revision 18277)
@@ -0,0 +1,125 @@
+#!dimctrl --exec
+
+# dimctrl script
+>
+> -------------------------------------------
+> Bias and Feedback StartUp (Current Calibration)
+> -------------------------------------------
+
+.w 2000
+# As a First step we want to calibrate the current, which are read from the bias crate,
+# and not take a DRS calibration, as it is mentioned in the data taking page...
+# so for this we should get the feedback and biasctrl programs into known states
+# I think it is good to try a RECONNECT to the bias, and make sure the voltage is off
+#
+# NOTE:
+# The ideas in the line above are both valid, but both not done.
+# This is *not good*
+
+# Since we do not know, what the feedback program is doing at the moment, we should as well,
+# tell it to keep its mouth shut ... just to be sure, we know whats going on
+> stopping feedback
+FEEDBACK/STOP
+.w 2000
+# stopping should always be possible, and end in state 'Connected'(6)
+.s FEEDBACK 6
+> ..done
+
+#BIAS_CONTROL/RECONNECT
+# If we were disconnected, and this was the first try of the night, the bias_ctrl should
+# be in state 'VoltageOff'(7) more or less immediately
+#.s BIAS_CONTROL 3
+#.s BIAS_CONTROL 7 5000
+# if these assumptions are all wrong, then we might have been properly connected anyway,
+# and just have to ramp down... lets do it, but wait forever, in case it does not work
+> switching off bias
+BIAS_CONTROL/SET_ZERO_VOLTAGE
+.w 2000
+.s BIAS_CONTROL 7
+> ...done
+
+# in case we reach this line, the voltages are all off, and the feedback does not do anything
+# So lets do the current calibration, therefor we tell the bias crate to ramp up just 1 single DAC count(~22mV)
+# the result of this action is, to get bias_ctrl into the state 'VoltageOn'(9), but since we only go one DAC count it shouldn't take long
+> setting bias globally to 1 DAC
+BIAS_CONTROL/SET_GLOBAL_DAC 1
+.w 2000
+.s BIAS_CONTROL 9
+> ...done
+
+# now we may tell the feedback program to calibrate the currents ...
+# I do not understand, if I have to explicitely allow the feedback program to generate output,
+# or if it just produces output...
+# As far as I understand, the feedback output enable status is the same,
+# as it was before I send the STOP command... so it is unknown at this point.
+# and in addition enabling or disabling the output, when STOPed is not possible as far as I know...
+# I try to enable it anyway.
+> enabling output for feedback
+FEEDBACK/ENABLE_OUTPUT yes
+.w 2000
+> ...done
+
+> calibrating bias crate current readings...
+FEEDBACK/CALIBRATE_CURRENTS
+.w 5000
+# in order to find out when the calibration ends, we have to wait for the transistion from state
+# 'Calibrating'(13) back to 'Connected'(6)
+.s FEEDBACK 13
+.s FEEDBACK 6
+
+# Thomas Bretz told me, that the feedback, after this step has disabled its output
+# and is in the mode, we might call 'temperature control' even there is no temerature beeing controlled.
+# I don't know where the voltage is ... in order to perform the calibration, the feedback had to
+# ramp up to 2V below the operational voltage, i.e. about 1V below the breakdown voltage
+
+# We want to take a DRS amplitude calibration so we have to ramp down the bias voltage.
+# this 10sec wait is needed in order for the bias not to disconect all the time...
+> ... current calibration done
+.w 10000
+
+> switching off bias
+BIAS_CONTROL/SET_ZERO_VOLTAGE
+.w 5000
+.s BIAS_CONTROL 7
+> ...done
+
+# now we want to take a run, with dark counts events
+# so we need to ramp up the voltage
+# we want to use the 'current control' more so we give the commands for this...
+> switching on current controll feedback ...
+FEEDBACK/STOP
+FEEDBACK/START_CURRENT_CONTROL 0.0
+FEEDBACK/ENABLE_OUTPUT yes
+# the feedback should be in state 'CurrentControl'(12) now
+.s FEEDBACK 12
+> ... done
+> switching on bias
+# now we give the feedback a hint, that it may ramp ...
+BIAS_CONTROL/SET_GLOBAL_DAC 1
+# after this command the bias_ctrl should be in state 'VoltageOn'(9) after a second or so
+.s BIAS_CONTROL 9
+> ...1 DAC globally set
+# then usually it takes some time until the feedback has enough information to really start controlling the voltage
+# when the feedback actually kicks in, the bias is first in state 'Ramping'(5) for some seconds and finally in 'VoltageOn'(9)
+# again
+.s BIAS_CONTROL 5
+> ...ramping to nominal voltage
+.s BIAS_CONTROL 9
+> ...bias on
+# here we should wait 45 sec in order for the current control to get enough current readings and temp readings to stabilize..
+> waiting 45sec for the current control to stabilize...
+.w 45000
+> ... done
+
+
+# at the end the bias voltage should be ramped down, since in a few seconds a shifter wit ha flashlight
+# will come out to open the shutter...
+> switching OFF bias ...
+BIAS_CONTROL/SET_ZERO_VOLTAGE
+.s BIAS_CONTROL 7
+> ...done
+> ----------------------------------------------------
+> Bias and Feedback StartUp (Current Calibration)
+> ... done.
+> ----------------------------------------------------
+>
Index: branches/testFACT++branch/ScriptsForDimCtrl/FirstDrsCalib.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/FirstDrsCalib.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/FirstDrsCalib.dim	(revision 18277)
@@ -0,0 +1,191 @@
+#!dimctrl --exec
+
+>
+> -------------------------------------------
+> First DRS Calibration Script starting up...
+> -------------------------------------------
+
+.w 2000
+# As a First step we want to calibrate the current, which are read from the bias crate,
+# and not take a DRS calibration, as it is mentioned in the data taking page...
+# so for this we should get the feedback and biasctrl programs into known states
+# I think it is good to try a RECONNECT to the bias, and make sure the voltage is off
+# Since we do not know, what the feedback program is doing at the moment, we should as well,
+# tell it to keep its mouth shut ... just to be sure, we know whats going on
+> stopping feedback
+FEEDBACK/STOP
+.w 2000
+# stopping should always be possible, and end in state 'Connected'(6)
+> ...waiting for FEEDBACK to be in state 6: Connected
+.s FEEDBACK 6
+> ..done
+
+#BIAS_CONTROL/RECONNECT
+# If we were disconnected, and this was the first try of the night, the bias_ctrl should
+# be in state 'VoltageOff'(7) more or less immediately
+#.s BIAS_CONTROL 3
+#.s BIAS_CONTROL 7 5000
+# if these assumptions are all wrong, then we might have been properly connected anyway,
+# and just have to ramp down... lets do it, but wait forever, in case it does not work
+> switching off bias
+BIAS_CONTROL/SET_ZERO_VOLTAGE
+.w 2000
+> ...waiting for BIAS to be in state 7: VoltageOff
+.s BIAS_CONTROL 7
+> ...done
+
+# in case we reach this line, the voltages are all off, and the feedback does not do anything
+# So lets do the current calibration, therefor we tell the bias crate to ramp up just 1 single DAC count(~22mV)
+# the result of this action is, to get bias_ctrl into the state 'VoltageOn'(9), but since we only go one DAC count it shouldn't take long
+> setting bias globally to 1 DAC
+BIAS_CONTROL/SET_GLOBAL_DAC 1
+.w 2000
+> ...waiting for BIAS to be in state 9: VoltageOn
+.s BIAS_CONTROL 9
+> ...done
+
+# now we may tell the feedback program to calibrate the currents ...
+# I do not understand, if I have to explicitely allow the feedback program to generate output,
+# or if it just produces output...
+# As far as I understand, the feedback output enable status is the same,
+# as it was before I send the STOP command... so it is unknown at this point.
+# and in addition enabling or disabling the output, when STOPed is not possible as far as I know...
+# I try to enable it anyway.
+> enabling output for feedback
+FEEDBACK/ENABLE_OUTPUT yes
+.w 2000
+> ...done
+
+> calibrating bias crate current readings...
+FEEDBACK/CALIBRATE_CURRENTS
+.w 5000
+# in order to find out when the calibration ends, we have to wait for the transistion from state
+# 'Calibrating'(13) back to 'Connected'(6)
+> ...waiting for FEEDBACK to be in state 13: Calibrating
+.s FEEDBACK 13
+> ...waiting for FEEDBACK to be in state 6: Connected
+.s FEEDBACK 6
+
+# Thomas Bretz told me, that the feedback, after this is step has disabled its output
+# and is in the mode, we might call 'temperature control' even there is no temerature beeing controlled.
+# I don't know where the voltage is ... in order to perform the calibration, the feedback had to
+# ramp up to 2V below the operational voltage, i.e. about 1V below the breakdown voltage
+
+# We want to take a DRS amplitude calibration so we have to ramp down the bias voltage.
+# this 10sec wait is needed in order for the bias not to disconect all the time...
+> ... current calibration done
+.w 10000
+
+> switching off bias
+BIAS_CONTROL/SET_ZERO_VOLTAGE
+.w 5000
+> ...waiting for BIAS to be in state 7: VoltageOff
+.s BIAS_CONTROL 7
+> ...done
+
+# So now we can take the 3 runs, which are called DRS amplitude calibration:
+# A pedestal run with ROI=1024
+# A gain calibration run with ROI=1024
+# and a second pedestal run, with the same ROI as our next data will be, i.e. ROI=300 in this case
+> taking DRS:Pedestal 1000 ...
+> ===================================================
+> OPERATOR: 
+> observe Events tab and make sure there are no patches 
+> with strange behaviour, which can be caused 
+> by DRS-CHIP Problems
+> ===================================================
+
+FAD_CONTROL/START_DRS_CALIBRATION
+###FAD_CONTROL/SET_FILE_FORMAT 0
+MCP/START -1 1000 drs-pedestal
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4
+> ... done
+
+> taking DRS:Gain 1000 ...
+MCP/START -1 1000 drs-gain
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4
+> ... done
+
+> taking Pedestal 1000 ...
+MCP/START -1 1000 pedestal
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4
+> ... done
+
+# okay this is the DRS calibration for the next few runs.
+# we are now asked to take again a pedestal run, which can be used, to
+# calculate the electronics noise for instance ... since the shutter is closed and the
+# voltage is off .. there should not be alot of signal in it :-)
+> taking crosscheck Pedestal 1000 ...
+FAD_CONTROL/SET_FILE_FORMAT 2
+###FAD_CONTROL/SET_FILE_FORMAT 0
+MCP/START -1 1000 pedestal
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4
+> ... done
+
+# now we want to take a run, with dark counts events
+# so we need to ramp up the voltage
+# we want to use the 'current control' more so we give the commands for this...
+> switching on current controll feedback ...
+FEEDBACK/STOP
+FEEDBACK/START_CURRENT_CONTROL 0.0
+FEEDBACK/ENABLE_OUTPUT yes
+# the feedback should be in state 'CurrentControl'(12) now
+# the feedback should be in state 'CurrentCtrlIdle'(9) now since 30.05.12
+> ...waiting for FEEDBACK to be in state 9: CurrentCtrlIdle
+.s FEEDBACK 9
+> ... done
+> switching on bias
+# now we give the feedback a hint, that it may ramp ...
+BIAS_CONTROL/SET_GLOBAL_DAC 1
+# after this command the bias_ctrl should be in state 'VoltageOn'(9) after a second or so
+> ...waiting for BIAS to be in state 9: VoltageOn
+.s BIAS_CONTROL 9
+> ...1 DAC globally set
+# then usually it takes some time until the feedback has enough information to really start controlling the voltage
+# when the feedback actually kicks in, the bias is first in state 'Ramping'(5) for some seconds and finally in 'VoltageOn'(9)
+# again
+> ...waiting for BIAS to be in state 5: Ramping
+.s BIAS_CONTROL 5
+> ...ramping to nominal voltage
+> ...waiting for BIAS to be in state 9: VoltageOn
+.s BIAS_CONTROL 9
+> ...bias on
+# here we should wait 45 sec in order for the current control to get enough current readings and temp readings to stabilize..
+> waiting 45sec for the current control to stabilize...
+.w 45000
+> ... done
+
+# so now we can take the dark count run ...
+# this might be changed in the future ... either the number of events or the the ROI might be changed
+# then the DRS calibration above, and the pedestal run in between have to be changed as well.
+> taking Pedestal with BIAS on 3000 ...
+MCP/START -1 3000 pedestal
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4
+> ... done
+
+# at the end the bias voltage should be ramped down, since in a few seconds a shifter wit ha flashlight
+# will come out to open the shutter...
+> switching OFF bias ...
+BIAS_CONTROL/SET_ZERO_VOLTAGE
+> ...waiting for BIAS to be in state 7: VoltageOff
+.s BIAS_CONTROL 7
+> ...done
+>
+> This is the end of First DRS Calibration
+> ----------------------------------------------------
+>
Index: branches/testFACT++branch/ScriptsForDimCtrl/LP_rate_test.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/LP_rate_test.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/LP_rate_test.dim	(revision 18277)
@@ -0,0 +1,17 @@
+#!dimctrl --exec
+
+> ----------------------------------------------------
+> LP_rate_test.dim starting up.
+> ----------------------------------------------------
+
+.x ScriptsForDimCtrl/ServiceScripts/TakeDrsCalibration.dim
+
+.x ScriptsForDimCtrl/ServiceScripts/SwitchOnBias.dim
+
+.x ScriptsForDimCtrl/ServiceScripts/TakeExtLpRun.dim
+
+> ----------------------------------------------------
+> LP_rate_test.dim finished
+> ----------------------------------------------------
+>
+
Index: branches/testFACT++branch/ScriptsForDimCtrl/RampingBias.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/RampingBias.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/RampingBias.dim	(revision 18277)
@@ -0,0 +1,66 @@
+#!dimctrl --exec
+
+> --------------------------------------
+> test biasctrl
+> --------------------------------------
+> Ramping bias up and down
+
+# this is just a test, to check the order of states of biasctrl while ramping.
+
+> ...enabling feedback
+FEEDBACK/ENABLE_OUTPUT 1
+
+> ...changing file formate to: NONE
+FAD_CONTROL/SET_FILE_FORMAT 0
+
+> ...waiting for BIAS_CONTROL
+>    to be in state 7: VoltageOff
+.s BIAS_CONTROL 7
+
+> ...changing file formate to: FITS
+FAD_CONTROL/SET_FILE_FORMAT 2
+.w 500
+
+> ...changing file formate to: NONE
+FAD_CONTROL/SET_FILE_FORMAT 0
+
+# Bias ist Off  .. switching it on
+BIAS_CONTROL/SET_GLOBAL_DAC 1
+
+> ...waiting for BIAS_CONTROL
+>    to be in state 9: VoltageOn
+.s BIAS_CONTROL 9
+
+> ...waiting for BIAS_CONTROL
+>    to be in state 5: Ramping
+.s BIAS_CONTROL 5
+
+> ...waiting for BIAS_CONTROL
+>    to be in state 9: VoltageOn
+.s BIAS_CONTROL 9
+
+> ...changing file formate to: FITS
+FAD_CONTROL/SET_FILE_FORMAT 2
+.w 500
+
+> ...changing file formate to: NONE
+FAD_CONTROL/SET_FILE_FORMAT 0
+.w 2000
+
+# Bias ist On .. switching it off
+BIAS_CONTROL/SET_ZERO_VOLTAGE
+
+> ...waiting for BIAS_CONTROL
+>    to be in state 7: VoltageOff
+.s BIAS_CONTROL 7
+
+> ...changing file formate to: FITS
+FAD_CONTROL/SET_FILE_FORMAT 2
+.w 500
+
+> ...changing file formate to: NONE
+FAD_CONTROL/SET_FILE_FORMAT 0
+
+> --------------------------------------
+> ramped Bias up and down successfully
+> --------------------------------------
Index: branches/testFACT++branch/ScriptsForDimCtrl/Ratescan.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/Ratescan.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/Ratescan.dim	(revision 18277)
@@ -0,0 +1,106 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Ratescan
+# ==========================================================================
+# Script for taking a Ratescan
+
+# call it by: .x ScriptsForDimCtrl/Ratescan.dim mode=<trackmode> ra=<Right ascension> dec=<Declination> source=<source_name>
+# mode=0: Manual tracking Mode: set tracking in drivectrl manually
+# mode=1: Coordinate Mode: scripts sends tracking command to drivectrl with the given RaDec coordinates
+# mode=2: source Mode: scripts sends tracking command to drivectrl with the given source_name
+# ----------------------------------------------------
+
+> ======================================
+> RATESCAN
+> ======================================
+>-
+> Preparing Drive
+.j ${mode}
+
+# --------------------------------------
+
+:0
+> Manual tracking Mode
+> ---------------------
+> OPERATOR
+> change tracking in drivectrl manually
+>_
+> script will wait for drive
+> to be in state tracking
+>-
+.j 9
+
+# --------------------------------------
+
+:1
+> ...stop tracking
+.x ScriptsForDimCtrl/ServiceScripts/StopTracking.dim
+> ...change tracking of telescope to:
+> ...Ra  = ${ra}
+> ...Dec = ${dec}
+>-
+DRIVE_CONTROL/TRACK ${ra} ${dec}
+.j 9
+
+# --------------------------------------
+
+:2
+> ...stop tracking
+.x ScriptsForDimCtrl/ServiceScripts/StopTracking.dim
+> ...change tracking of telescope to:
+> ...${source}
+>-
+DRIVE_CONTROL/TRACK_SOURCE 0 0 "${source}"
+.j 9
+
+# --------------------------------------
+
+:9
+# check drive system
+.x ScriptsForDimCtrl/ServiceScripts/IsTracking.dim
+
+# check system status
+.x ScriptsForDimCtrl/ServiceScripts/IsReadyForDataTaking.dim
+>---------------------------------------
+#
+#> Preparing FTM_CONTROL
+#> ...configure Ratescan
+# FTM_CONTROL/CONFIGURE ratescan
+#
+#>---------------------------------------
+
+> Starting Ratescan
+> ...waiting for Ratescan
+>    to be in state 4: Connected
+.s RATE_SCAN 4 5000 256
+RATE_SCAN/START_THRESHOLD_SCAN 50 1000 -10
+.s RATE_SCAN 6 10000 257
+> ...processing ratescan
+.s RATE_SCAN 4 2700000 300
+> ...resetting FAD configuration
+FAD_CONTROL/RESET_CONFIGURE
+> ======================================
+> Ratescan finished
+> ======================================
+.j 301
+
+:256
+>---------------------------------------
+> Rate_Scan not in correct state
+>-
+> OPERATOR:
+> + check connection to ftm control
+>---------------------------------------
+.j 300
+
+:257
+>---------------------------------------
+> ratescan not started
+>---------------------------------------
+
+:300
+> ======================================
+> Ratescan NOT successfull
+> ======================================
+:301
Index: branches/testFACT++branch/ScriptsForDimCtrl/ResetCrate.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ResetCrate.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ResetCrate.dim	(revision 18277)
@@ -0,0 +1,54 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Reset Crate
+# ==========================================================================
+# Script for Reset of a crate
+
+# call it by: .x ScriptsForDimCtrl/ResetCrate.dim C=<nr_of_board_to_reset>
+
+# ----------------------------------------------------
+
+> ======================================
+> Crate-Reset for crate ${C}
+> ======================================
+>
+> ...resetting MCP
+MCP/RESET
+.w 5000
+> ...diconnecting FAD boards of crate ${C}
+.x ScriptsForDimCtrl/ServiceScripts/FadDisonnectCrate.dim:${C}
+.w 2000
+
+> ...disconnecting All FTUs
+FTM_CONTROL/ENABLE_FTU -1 no
+.w 2000
+
+> ...checking state of FTM_Control
+> ...waiting for state 3: Idle
+.s FTM_CONTROL 3 2000 60
+.j 61
+
+# ---------------------------------------------------
+: 60
+> ...stopping trigger
+FTM_CONTROL/STOP_TRIGGER
+.s FTM_CONTROL 3
+# ---------------------------------------------------
+
+: 61
+> ...resetting crate
+FTM_CONTROL/RESET_CRATE ${C}
+.w 2000
+
+> ...connecting All FTUs
+FTM_CONTROL/ENABLE_FTU -1 yes
+.w 4000
+> ...pinging FTUs
+FTM_CONTROL/PING
+
+> ...connecting FAD boards of crate ${C}
+.x ScriptsForDimCtrl/ServiceScripts/FadConnectCrate.dim:${C}
+> ======================================
+> Crate-Reset for crate ${C} finished
+> ======================================
Index: branches/testFACT++branch/ScriptsForDimCtrl/ResumeDataTaking.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ResumeDataTaking.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ResumeDataTaking.dim	(revision 18277)
@@ -0,0 +1,82 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# resume data taking
+# ==========================================================================
+# Script to resume data taking after it had to be aborted
+# during first run of four data runs
+
+# call it by: .x ScriptsForDimCtrl/ResumeDataTaking.dim N=<number of runs>
+# N = 1...4
+
+# ----------------------------------------------------
+
+> ======================================
+> resume taking ${N} data runs after
+> DataTaking was aborted...
+> ======================================
+> OPERATOR:
+> + make sure bias is switched on
+> + make sure feedback is running!!!
+> --------------------------------------
+
+# check if bias is ramped up and if feedback is running
+
+> ...waiting for BIAS_CONTROL
+>    to be in state 9: VoltageOn
+.s BIAS_CONTROL 9
+
+> ...waiting for FEEDBACK
+>    to be in state 12: CurrentControl
+.s FEEDBACK 12
+
+> ...waiting for BIAS_CONTROL
+>    to be in state 9: VoltageOn
+.s BIAS_CONTROL 9
+
+> ...bias is on
+> ...feedback-program is working
+> waiting 45sec for the current readings
+> --------------------------------------
+.w 45000
+
+.j ${N}
+
+#Data Taking with Full Trigger Area (4x5min)
+
+:4
+.x ScriptsForDimCtrl/ServiceScripts/IsReadyForDataTaking.dim
+> taking Data:FullTriggerArea 5min Run
+MCP/START 300 -1 data
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+> ... done
+
+:3
+.x ScriptsForDimCtrl/ServiceScripts/IsReadyForDataTaking.dim
+> taking Data:FullTriggerArea 5min Run
+MCP/START 300 -1 data
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+> ... done
+
+:2
+.x ScriptsForDimCtrl/ServiceScripts/IsReadyForDataTaking.dim
+> taking Data:FullTriggerArea 5min Run
+MCP/START 300 -1 data
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+> ... done
+
+:1
+.x ScriptsForDimCtrl/ServiceScripts/IsReadyForDataTaking.dim
+> taking Data:FullTriggerArea 5min Run
+MCP/START 300 -1 data
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+> ... done
+
+> ======================================
+> resumed data taking finished
+> ======================================
+
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/FadConnectCrate.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/FadConnectCrate.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/FadConnectCrate.dim	(revision 18277)
@@ -0,0 +1,100 @@
+#!dimctrl --exec
+
+> connecting to requested crate...
+
+# connect to crate 0
+: 0
+.w 3800
+FAD_CONTROL/CONNECT 0
+.w 3800
+FAD_CONTROL/CONNECT 1
+.w 3800
+FAD_CONTROL/CONNECT 2
+.w 3800
+FAD_CONTROL/CONNECT 3
+.w 3800
+FAD_CONTROL/CONNECT 4
+.w 3800
+FAD_CONTROL/CONNECT 5
+.w 3800
+FAD_CONTROL/CONNECT 6
+.w 3800
+FAD_CONTROL/CONNECT 7
+.w 3800
+FAD_CONTROL/CONNECT 8
+.w 3800
+FAD_CONTROL/CONNECT 9
+.j 255
+
+# connect to crate 1
+: 1
+FAD_CONTROL/CONNECT 10
+.w 3800
+FAD_CONTROL/CONNECT 11
+.w 3800
+FAD_CONTROL/CONNECT 12
+.w 3800
+FAD_CONTROL/CONNECT 13
+.w 3800
+FAD_CONTROL/CONNECT 14
+.w 3800
+FAD_CONTROL/CONNECT 15
+.w 3800
+FAD_CONTROL/CONNECT 16
+.w 3800
+FAD_CONTROL/CONNECT 17
+.w 3800
+FAD_CONTROL/CONNECT 18
+.w 3800
+FAD_CONTROL/CONNECT 19
+.j 255
+
+# connect to crate 2
+: 2
+FAD_CONTROL/CONNECT 20
+.w 3800
+FAD_CONTROL/CONNECT 21
+.w 3800
+FAD_CONTROL/CONNECT 22
+.w 3800
+FAD_CONTROL/CONNECT 23
+.w 3800
+FAD_CONTROL/CONNECT 24
+.w 3800
+FAD_CONTROL/CONNECT 25
+.w 3800
+FAD_CONTROL/CONNECT 26
+.w 3800
+FAD_CONTROL/CONNECT 27
+.w 3800
+FAD_CONTROL/CONNECT 28
+.w 3800
+FAD_CONTROL/CONNECT 29
+
+.j 255
+
+# connect to crate 3
+: 3
+FAD_CONTROL/CONNECT 30
+.w 3800
+FAD_CONTROL/CONNECT 31
+.w 3800
+FAD_CONTROL/CONNECT 32
+.w 3800
+FAD_CONTROL/CONNECT 33
+.w 3800
+FAD_CONTROL/CONNECT 34
+.w 3800
+FAD_CONTROL/CONNECT 35
+.w 3800
+FAD_CONTROL/CONNECT 36
+.w 3800
+FAD_CONTROL/CONNECT 37
+.w 3800
+FAD_CONTROL/CONNECT 38
+.w 3800
+FAD_CONTROL/CONNECT 39
+.j 255
+
+: 255
+> ... done
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/FadDisonnectCrate.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/FadDisonnectCrate.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/FadDisonnectCrate.dim	(revision 18277)
@@ -0,0 +1,62 @@
+#!dimctrl --exec
+
+> disconnecting from requested crate...
+
+# disconnect from crate 0
+: 0
+FAD_CONTROL/DISCONNECT 0
+FAD_CONTROL/DISCONNECT 1
+FAD_CONTROL/DISCONNECT 2
+FAD_CONTROL/DISCONNECT 3
+FAD_CONTROL/DISCONNECT 4
+FAD_CONTROL/DISCONNECT 5
+FAD_CONTROL/DISCONNECT 6
+FAD_CONTROL/DISCONNECT 7
+FAD_CONTROL/DISCONNECT 8
+FAD_CONTROL/DISCONNECT 9
+.j 255
+
+# disconnect from crate 1
+: 1
+FAD_CONTROL/DISCONNECT 10
+FAD_CONTROL/DISCONNECT 11
+FAD_CONTROL/DISCONNECT 12
+FAD_CONTROL/DISCONNECT 13
+FAD_CONTROL/DISCONNECT 14
+FAD_CONTROL/DISCONNECT 15
+FAD_CONTROL/DISCONNECT 16
+FAD_CONTROL/DISCONNECT 17
+FAD_CONTROL/DISCONNECT 18
+FAD_CONTROL/DISCONNECT 19
+.j 255
+
+# disconnect from crate 2
+: 2
+FAD_CONTROL/DISCONNECT 20
+FAD_CONTROL/DISCONNECT 21
+FAD_CONTROL/DISCONNECT 22
+FAD_CONTROL/DISCONNECT 23
+FAD_CONTROL/DISCONNECT 24
+FAD_CONTROL/DISCONNECT 25
+FAD_CONTROL/DISCONNECT 26
+FAD_CONTROL/DISCONNECT 27
+FAD_CONTROL/DISCONNECT 28
+FAD_CONTROL/DISCONNECT 29
+.j 255
+
+# disconnect from crate 3
+: 3
+FAD_CONTROL/DISCONNECT 30
+FAD_CONTROL/DISCONNECT 31
+FAD_CONTROL/DISCONNECT 32
+FAD_CONTROL/DISCONNECT 33
+FAD_CONTROL/DISCONNECT 34
+FAD_CONTROL/DISCONNECT 35
+FAD_CONTROL/DISCONNECT 36
+FAD_CONTROL/DISCONNECT 37
+FAD_CONTROL/DISCONNECT 38
+FAD_CONTROL/DISCONNECT 39
+.j 255
+
+: 255
+> ... done
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/IsReadyForDataTaking.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/IsReadyForDataTaking.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/IsReadyForDataTaking.dim	(revision 18277)
@@ -0,0 +1,26 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Checking the system statuses if they are ready for data taking
+# ==========================================================================
+
+> --------------------------------------
+> Checking the system statuses of:
+> FEEDBACK, BIAS and FAD
+> --------------------------------------
+
+> ...waiting for FEEDBACK
+>    to be in state 12: CurrentControl
+.s FEEDBACK 12
+
+> ...waiting for BIAS_CONTROL
+>    to be in state 9: VoltageOn
+.s BIAS_CONTROL 9
+
+> ...waiting for FAD_CONTROL
+>    to be in state 4: Connected
+
+.s FAD_CONTROL 4
+> ...system statuses OK
+> --------------------------------------
+>-
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/IsTracking.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/IsTracking.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/IsTracking.dim	(revision 18277)
@@ -0,0 +1,10 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Checking drive system status to be ready for data taking
+# ==========================================================================
+
+>
+> ...waiting for DRIVE to be in state 9: OnTrack
+.s DRIVE_CONTROL 9
+> ...OK
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/PrepareBiasForDataTaking.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/PrepareBiasForDataTaking.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/PrepareBiasForDataTaking.dim	(revision 18277)
@@ -0,0 +1,60 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# check feedback state before switching BIAS ON and ramping up to nominal Voltage
+# ==========================================================================
+
+> checking feedback state
+.s FEEDBACK 12 10000 60 # Current Control?
+.j 61
+
+:60
+> ===================================================
+>  feedback is not in state "CurrentControl"
+>
+>  OPERATOR: 
+>  goto feedback console and check the state of 
+>  feedback by typing [st] to find out what the
+>  current state means and maybe needs to be done
+>
+>  this script will wait for state "CurrentControl"
+> ===================================================
+.s FEEDBACK 12 # Current Control?
+
+:61
+> ... Current/Temp control active and voltage output enabled
+
+> switching on bias ...
+BIAS_CONTROL/SET_GLOBAL_DAC 1
+
+> checking biasctrl state
+.s BIAS_CONTROL 9 10000 70 # Voltage ON
+.j 71
+
+:70
+> ===================================================
+>  switching on bias not successfull
+>  biasctrl is not in state "VoltageOn"
+>
+>  OPERATOR:
+>  goto biasctrl console and check the state of
+>  biasctrl by typing [st] to find out what the
+>  current state means and maybe needs to be done
+> 
+>  this script will wait for state "VoltageOn"
+> ===================================================
+.s BIAS_CONTROL 9 # Voltage ON
+
+:71
+> ...set 1 DAC
+
+.s BIAS_CONTROL 5 # Ramping
+> ...ramping
+.s BIAS_CONTROL 9 # Voltage ON
+> ...bias ON
+
+
+# here one should wait 30..45sec according to TB
+> bias is on, and feedback-program is working, but we wait 45sec for the current readings...
+.w 45000
+> ... done
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/StopTracking.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/StopTracking.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/StopTracking.dim	(revision 18277)
@@ -0,0 +1,14 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# stop drivectrl tracking the current source
+# ==========================================================================
+
+>
+> stopping tracking of current wobble position
+DRIVE_CONTROL/STOP
+> ...DRIVE: tracking stopped
+
+.s DRIVE_CONTROL 6
+> ...DRIVE: Armed
+> ...tracking stopped
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/SwitchOnBias.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/SwitchOnBias.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/SwitchOnBias.dim	(revision 18277)
@@ -0,0 +1,44 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# bring Feedback to state CurrentContro Idle and switch on Bias
+# ==========================================================================
+
+> switching on current controll feedback
+FEEDBACK/STOP
+
+> ... starting current control feedback 
+FEEDBACK/START_CURRENT_CONTROL 0.0
+FEEDBACK/ENABLE_OUTPUT yes
+
+# the feedback should be in state 'CurrentCtrlIdle'(9) now since 30.05.12
+> ...waiting for FEEDBACK to be in state 9: CurrentCtrlIdle
+.s FEEDBACK 9
+> ... done, feedback running
+>
+> switching bias on, sending one DAC globally
+
+# now we give the feedback a hint, that it may ramp ...
+BIAS_CONTROL/SET_GLOBAL_DAC 1
+# after this command the bias_ctrl should be in state 'VoltageOn'(9) after a second or so
+
+> ...waiting for BIAS to be in state 9: VoltageOn
+.s BIAS_CONTROL 9
+> ...1 DAC globally set
+
+# then usually it takes some time until the feedback has enough information to really start controlling the voltage
+# when the feedback actually kicks in, the bias is first in state 'Ramping'(5) for some seconds and finally in 'VoltageOn'(9)
+# again
+
+> ...waiting for BIAS to be in state 5: Ramping
+.s BIAS_CONTROL 5
+> ...ramping to nominal voltage
+
+> ...waiting for BIAS to be in state 9: VoltageOn
+.s BIAS_CONTROL 9
+> ...bias on
+
+# here we should wait 45 sec in order for the current control to get enough current readings and temp readings to stabilize..
+> waiting 45sec for the current control to stabilize...
+.w 45000
+> ... done, bias on
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TakeData.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TakeData.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TakeData.dim	(revision 18277)
@@ -0,0 +1,40 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Script for taking a Data Set (1x Pedestal On, 1x LPext, 4x5min DataRun)
+# ==========================================================================
+
+>-
+
+# take a Pedestal run
+.x ScriptsForDimCtrl/ServiceScripts/IsTracking.dim
+.x ScriptsForDimCtrl/ServiceScripts/TakePedestalOnRun.dim
+
+# take a ExtLP run
+.x ScriptsForDimCtrl/ServiceScripts/IsTracking.dim
+.x ScriptsForDimCtrl/ServiceScripts/TakeExtLpRun.dim
+
+#Data Taking with Full Trigger Area (4x5min)
+
+# taking Run 1/4
+> taking data run 1/4
+.x ScriptsForDimCtrl/ServiceScripts/IsTracking.dim
+.x ScriptsForDimCtrl/ServiceScripts/TakeDataRun.dim
+
+# taking Run 2/4
+> taking data run 2/4
+.x ScriptsForDimCtrl/ServiceScripts/IsTracking.dim
+.x ScriptsForDimCtrl/ServiceScripts/TakeDataRun.dim
+
+# taking Run 3/4
+> taking data run 3/4
+.x ScriptsForDimCtrl/ServiceScripts/IsTracking.dim
+.x ScriptsForDimCtrl/ServiceScripts/TakeDataRun.dim
+
+# taking Run 4/4
+> taking data run 4/4
+.x ScriptsForDimCtrl/ServiceScripts/IsTracking.dim
+.x ScriptsForDimCtrl/ServiceScripts/TakeDataRun.dim
+
+
+>-
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TakeDataRun.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TakeDataRun.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TakeDataRun.dim	(revision 18277)
@@ -0,0 +1,19 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Take a 5min Data Run
+# ==========================================================================
+
+# check if all subsystems are in the correct state
+.x ScriptsForDimCtrl/ServiceScripts/IsReadyForDataTaking.dim
+
+> taking Data:FullTriggerArea 5min Run ...
+MCP/START 300 -1 data
+
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8    # Writing Data
+
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4    # Connected
+
+> ... done
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TakeDrsCalibration.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TakeDrsCalibration.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TakeDrsCalibration.dim	(revision 18277)
@@ -0,0 +1,112 @@
+#!dimctrl --exec
+
+>
+> -----------
+> script for DRS-Calibration before Data taking
+> starting up...
+> -----------
+>
+
+# enable feedback output
+FEEDBACK/ENABLE_OUTPUT 1
+
+# Making sure bias is off, before the DRS calibration starts
+BIAS_CONTROL/SET_ZERO_VOLTAGE
+> ...ramping Voltage down
+>
+> ...waiting for BIAS to be in state 7: Voltage Off
+.s BIAS_CONTROL 7       # Voltage Off
+
+# starting the DRS calibration
+FAD_CONTROL/START_DRS_CALIBRATION
+> ...BIAS voltage is switched off
+>
+
+# taking first DRS:Pedestal with 1000 Events and ROI 1024
+> taking DRS:Pedestal 1000 ...
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4        # Connected
+MCP/START -1 1000 drs-pedestal
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8        # Writing Data
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4        # Connected
+> ... done
+>
+
+# taking DRS:Gain with 1000 Events and ROI 1024
+> taking DRS:Gain 1000 ...
+MCP/START -1 1000 drs-gain
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8        # Writing Data
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4        # Connected
+> ... done
+>
+
+# taking DRS:Pedestal 1000 Events and ROI 1024
+> taking DRS:Pedestal 1000 ...
+MCP/START -1 1000 drs-pedestal
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8        # Writing Data
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4        # Connected
+> ... done
+>
+
+# taking again a DRS:Pedestal with 1000 Events and ROI 1024 for a crosscheck of calculated calibrations constants
+> taking crosscheck DRS:Pedestal 1000 ...
+FAD_CONTROL/SET_FILE_FORMAT 2
+MCP/START -1 1000 drs-pedestal
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8        # Writing Data
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4        # Connected
+> ... done
+>
+
+# taking DRS:Time with 1000 Events and ROI 1024
+> taking DRS:Time 1000 ...
+MCP/START -1 1000 drs-time
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8        # Writing Data
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4        # Connected
+> ... done
+>
+
+# taking DRS:Time upshifted 1000 Events and ROI 1024
+> taking DRS:Time upshifted 1000 ...
+MCP/START -1 1000 drs-time-upshifted
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8        # Writing Data
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4        # Connected
+> ... done
+>
+
+# taking a Pedestal with 1000 Events and ROI 300 for secondary baseline...
+> taking Pedestal 1000 for secondary baseline...
+FAD_CONTROL/RESET_SECONDARY_DRS_BASELINE
+MCP/START -1 1000 pedestal
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8        # Writing Data
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4        # Connected
+> ... done
+>
+
+# taking crosscheck Pedestal 1000 Events and ROI 300
+> taking crosscheck Pedestal 1000 ...
+FAD_CONTROL/SET_FILE_FORMAT 2
+MCP/START -1 1000 pedestal
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8        # Writing Data
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4        # Connected
+> ... done
+
+> ----------------------------------------------------
+> This is the end of the
+> DRS-Calibration before Data taking
+> ----------------------------------------------------
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TakeDrsPedestalOnRun.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TakeDrsPedestalOnRun.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TakeDrsPedestalOnRun.dim	(revision 18277)
@@ -0,0 +1,21 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Take a Pedestal 1000 run with ROI 1024 with Bias ON
+# ==========================================================================
+
+# check if all subsystems are in the correct state
+.x ScriptsForDimCtrl/ServiceScripts/IsReadyForDataTaking.dim
+
+> taking Pedestal with ROI 1024 with BIAS on 1000 ...
+MCP/START -1 1000 drs-pedestal
+
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8    # Writing Data
+
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4    # Connected
+
+> ... done
+
+
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TakeExtLpRun.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TakeExtLpRun.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TakeExtLpRun.dim	(revision 18277)
@@ -0,0 +1,19 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Take a external Lightpulser Run
+# ==========================================================================
+
+# check if all subsystems are in the correct state
+.x ScriptsForDimCtrl/ServiceScripts/IsReadyForDataTaking.dim
+
+> taking External Light Pulser with BIAS on 1000 ...
+MCP/START -1 1000 light-pulser-ext
+
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8    # Writing Data
+
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4
+
+> ... done
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TakePedestalOnRun.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TakePedestalOnRun.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TakePedestalOnRun.dim	(revision 18277)
@@ -0,0 +1,21 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Take a Pedestal 1000 run with Bias ON
+# ==========================================================================
+
+# check if all subsystems are in the correct state
+.x ScriptsForDimCtrl/ServiceScripts/IsReadyForDataTaking.dim
+
+> taking Pedestal with BIAS on 1000 ...
+MCP/START -1 1000 pedestal
+
+> ...waiting for FAD to be in state 8: Writing Data
+.s FAD_CONTROL 8    # Writing Data
+
+> ...waiting for FAD to be in state 4: Connected
+.s FAD_CONTROL 4    # Connected
+
+> ... done
+
+
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/Track1218Wobble1.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/Track1218Wobble1.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/Track1218Wobble1.dim	(revision 18277)
@@ -0,0 +1,18 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# changing tracking to "1ES 1218+304" Wobble 1
+# ==========================================================================
+
+>
+> moving telescope to wobble position 1
+> ...waiting for DRIVE_CONTROL
+>    to be in state 6: Armed
+
+.s DRIVE_CONTROL 6
+> DRIVE: ARMED
+.w 5000
+
+DRIVE_CONTROL/TRACK_SOURCE 0.6 -5 "1ES 1218+304"
+>...sent tracking command for 1ES 1218+304 Wobble 1
+>COMMAND: DRIVE_CONTROL/TRACK_SOURCE 0.6 -5 "1ES 1218+304"
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/Track1218Wobble2.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/Track1218Wobble2.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/Track1218Wobble2.dim	(revision 18277)
@@ -0,0 +1,18 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# changing tracking to "1ES 1218+304" Wobble 2
+# ==========================================================================
+
+>
+> moving telescope to wobble position 2
+> ...waiting for DRIVE_CONTROL
+>    to be in state 6: Armed
+
+.s DRIVE_CONTROL 6
+> DRIVE: ARMED
+.w 5000
+
+DRIVE_CONTROL/TRACK_SOURCE 0.6 175 "1ES 1218+304"
+>...sent tracking command for 1ES 1218+304 Wobble 2
+> COMMAND: DRIVE_CONTROL/TRACK_SOURCE 0.6 175 "1ES 1218+304"
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/Track1959Wobble1.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/Track1959Wobble1.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/Track1959Wobble1.dim	(revision 18277)
@@ -0,0 +1,19 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# changing tracking to "1ES1959+650" Wobble 1
+# ==========================================================================
+
+>
+> moving telescope to wobble position 1
+> ...waiting for DRIVE_CONTROL
+>    to be in state 6: Armed
+
+DRIVE_CONTROL/STOP
+.s DRIVE_CONTROL 6
+> DRIVE: ARMED
+.w 5000
+
+DRIVE_CONTROL/TRACK_SOURCE 0.6 155 "1ES 1959+650"
+>...sent tracking command for 1959 Wobble 1
+> COMMAND: DRIVE_CONTROL/TRACK_SOURCE 0.6 155 "1ES 1959+650"
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/Track1959Wobble2.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/Track1959Wobble2.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/Track1959Wobble2.dim	(revision 18277)
@@ -0,0 +1,19 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# changing tracking to "1ES1959+650" Wobble 2
+# ==========================================================================
+
+>
+> moving telescope to wobble position 2
+> ...waiting for DRIVE_CONTROL
+>    to be in state 6: Armed
+
+DRIVE_CONTROL/STOP
+.s DRIVE_CONTROL 6
+> DRIVE: ARMED
+.w 5000
+
+DRIVE_CONTROL/TRACK_SOURCE 0.6 -25 "1ES 1959+650"
+>...sent tracking command for 1959 Wobble 2
+> COMMAND: DRIVE_CONTROL/TRACK_SOURCE 0.6 -25 "1ES 1959+650"
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/Track2344Wobble1.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/Track2344Wobble1.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/Track2344Wobble1.dim	(revision 18277)
@@ -0,0 +1,19 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# changing tracking to "1ES 2344+51.4" Wobble 1
+# ==========================================================================
+
+>
+> moving telescope to wobble position 1
+> ...waiting for DRIVE_CONTROL
+>    to be in state 6: Armed
+
+DRIVE_CONTROL/STOP
+.s DRIVE_CONTROL 6
+> DRIVE: ARMED
+.w 5000
+
+DRIVE_CONTROL/TRACK_SOURCE 0.6 90 "1ES 2344+51.4"
+>...sent tracking command for 1ES 2344+51.4 Wobble 1
+> COMMAND: DRIVE_CONTROL/TRACK_SOURCE 0.6 90 "1ES 2344+51.4"
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/Track2344Wobble2.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/Track2344Wobble2.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/Track2344Wobble2.dim	(revision 18277)
@@ -0,0 +1,19 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# changing tracking to "1ES 2344+51.4" Wobble 2
+# ==========================================================================
+
+>
+> moving telescope to wobble position 2
+> ...waiting for DRIVE_CONTROL
+>    to be in state 6: Armed
+
+DRIVE_CONTROL/STOP
+.s DRIVE_CONTROL 6
+> ...DRIVE: ARMED
+.w 5000
+
+DRIVE_CONTROL/TRACK_SOURCE 0.6 -90 "1ES 2344+51.4"
+>...sent tracking command for 1ES 2344+51.4 Wobble 2
+> COMMAND: DRIVE_CONTROL/TRACK_SOURCE 0.6 -90 "1ES 2344+51.4"
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TrackCrabWobble1.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TrackCrabWobble1.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TrackCrabWobble1.dim	(revision 18277)
@@ -0,0 +1,19 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# changing tracking to "Crab" Wobble 1
+# ==========================================================================
+
+>
+> moving telescope to wobble position 1
+> ...waiting for DRIVE_CONTROL
+>    to be in state 6: Armed
+
+DRIVE_CONTROL/STOP
+.s DRIVE_CONTROL 6
+> DRIVE: ARMED
+.w 5000
+
+DRIVE_CONTROL/TRACK_SOURCE 0.6 50 Crab
+>...sent tracking command for Crab Wobble 1
+> COMMAND: DRIVE_CONTROL/TRACK_SOURCE 0.6 50 Crab
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TrackCrabWobble2.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TrackCrabWobble2.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TrackCrabWobble2.dim	(revision 18277)
@@ -0,0 +1,19 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# changing tracking to "Crab" Wobble 2
+# ==========================================================================
+
+>
+> moving telescope to wobble position 2
+> ...waiting for DRIVE_CONTROL
+>    to be in state 6: Armed
+
+DRIVE_CONTROL/STOP
+.s DRIVE_CONTROL 6
+> DRIVE: ARMED
+.w 5000
+
+DRIVE_CONTROL/TRACK_SOURCE 0.6 -130 Crab
+> ...sent tracking command for Crab Wobble 2
+> COMMAND: DRIVE_CONTROL/TRACK_SOURCE 0.6 -130 Crab
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TrackMrk421Wobble1.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TrackMrk421Wobble1.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TrackMrk421Wobble1.dim	(revision 18277)
@@ -0,0 +1,19 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# changing tracking to "Mrk 421" Wobble 1
+# ==========================================================================
+
+>
+> moving telescope to wobble position 1
+> ...waiting for DRIVE_CONTROL
+>    to be in state 6: Armed
+
+DRIVE_CONTROL/STOP
+.s DRIVE_CONTROL 6
+> DRIVE: ARMED
+.w 5000
+
+DRIVE_CONTROL/TRACK_SOURCE 0.6 90 "Mrk 421"
+>...sent tracking command for Mrk 421 Wobble 1
+> COMMAND: DRIVE_CONTROL/TRACK_SOURCE 0.6 90 "Mrk 421"
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TrackMrk421Wobble2.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TrackMrk421Wobble2.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TrackMrk421Wobble2.dim	(revision 18277)
@@ -0,0 +1,19 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# changing tracking to "Mrk 421" Wobble 2
+# ==========================================================================
+
+>
+> moving telescope to wobble position 2
+> ...waiting for DRIVE_CONTROL
+>    to be in state 6: Armed
+
+DRIVE_CONTROL/STOP
+.s DRIVE_CONTROL 6
+> ...DRIVE: ARMED
+.w 5000
+
+DRIVE_CONTROL/TRACK_SOURCE 0.6 -90 "Mrk 421"
+>...sent tracking command for Mrk 421 Wobble 2
+> COMMAND: DRIVE_CONTROL/TRACK_SOURCE 0.6 -90 "Mrk 421"
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TrackMrk501Wobble1.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TrackMrk501Wobble1.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TrackMrk501Wobble1.dim	(revision 18277)
@@ -0,0 +1,19 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# changing tracking to "Mrk 501" Wobble 1
+# ==========================================================================
+
+>
+> moving telescope to wobble position 1
+> ...waiting for DRIVE_CONTROL
+>    to be in state 6: Armed
+
+DRIVE_CONTROL/STOP
+.s DRIVE_CONTROL 6
+> DRIVE: ARMED
+.w 5000
+
+DRIVE_CONTROL/TRACK_SOURCE 0.6 158 "Mrk 501"
+>...sent tracking command for Mrk 501 Wobble 1
+> COMMAND: DRIVE_CONTROL/TRACK_SOURCE 0.6 158 "Mrk 501"
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TrackMrk501Wobble2.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TrackMrk501Wobble2.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/TrackMrk501Wobble2.dim	(revision 18277)
@@ -0,0 +1,19 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# changing tracking to "Mrk 501" Wobble 2
+# ==========================================================================
+
+>
+> moving telescope to wobble position 2
+> ...waiting for DRIVE_CONTROL
+>    to be in state 6: Armed
+
+DRIVE_CONTROL/STOP
+.s DRIVE_CONTROL 6
+> ...DRIVE: ARMED
+.w 5000
+
+DRIVE_CONTROL/TRACK_SOURCE 0.6 -22 "Mrk 501"
+>...sent tracking command for Mrk 501 Wobble 2
+> COMMAND: DRIVE_CONTROL/TRACK_SOURCE 0.6 -22 "Mrk 501"
Index: branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim	(revision 18277)
@@ -0,0 +1,18 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Wait for drivectrl to reply that its tracking the given source
+# ==========================================================================
+
+# DRIVE: Moving
+> ...waiting for DRIVE_CONTROL
+>    to be in state 7: Moving
+.s DRIVE_CONTROL 7
+> ...moving
+
+# DRIVE: TRACKING
+> ...waiting for DRIVE_CONTROL
+>    to be in state 9: OnTrack
+.s DRIVE_CONTROL 
+> ...tracking requested wobble position
+
Index: branches/testFACT++branch/ScriptsForDimCtrl/Shutdown.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/Shutdown.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/Shutdown.dim	(revision 18277)
@@ -0,0 +1,81 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Shutdown
+# ==========================================================================
+# Script for Software Shutdown
+
+# call it by: .x ScriptsForDimCtrl/Shutdown.dim
+
+# ----------------------------------------------------
+
+> ======================================
+> SYSTEM SHUTDOWN
+> ======================================
+> BIAS_CONTROL
+> ...checking state of biasctrl
+.s BIAS_CONTROL 9 1000 2
+> ...voltage still ON
+> ...set global zero voltage
+BIAS_CONTROL/SET_GLOBAL_DAC 0
+> ...waiting for bias ramping
+.s BIAS_CONTROL 5
+> ...ramping
+
+:2
+.s BIAS_CONTROL 7 15000 4
+> ...VoltageOff
+> ...disconnecting biascrate
+BIAS_CONTROL/DISCONNECT
+.j 5
+
+:4
+> =============
+> Bias not in state VoltageOff
+> cannot disconnect Biascrate
+> OPERATOR:
+> turn of voltage and
+> disconnect bias crate manually
+> =============
+
+:5
+> DRIVE_CONTROL
+> ...parking telescope
+DRIVE_CONTROL/STOP
+.w 2000
+DRIVE_CONTROL/PARK
+
+> FTM_CONTROL
+> ...stopping trigger
+FTM_CONTROL/STOP_TRIGGER
+
+> ...disabling all FTUs
+FTM_CONTROL/ENABLE_FTU -1 no
+>-
+> FAD_CONTROL
+> ...stopping FADs
+FAD_CONTROL/STOP
+>-
+> --------------------------------------
+> OPERATOR:
+>-
+> [Software]
+> + close or make sure shutter is closed
+> + make sure telescope is really in
+>   parking postion
+> + close cosy
+>-
+> [Hardware]
+> + turn off bias crate
+> + shutdown interlock system
+> + turn off camera agilent
+> + turn off bias agilent
+> + turn off drive
+>-
+> NEVER switch of
+> the Interlock Systems' Agilent
+>-
+> --------------------------------------
+> SYSTEM SHUTDOWN finished
+> ======================================
+
Index: branches/testFACT++branch/ScriptsForDimCtrl/SpecialTimeCalibRuns.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/SpecialTimeCalibRuns.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/SpecialTimeCalibRuns.dim	(revision 18277)
@@ -0,0 +1,73 @@
+#!dimctrl --exec
+
+# Move Telescope to Wobble Position 1
+.! echo `date -u`  "Data Taking script for Special Time Calibration Runs starting up... " >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo `date -u`  "----------------------------------------------------" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo
+FEEDBACK/ENABLE_OUTPUT 1
+
+# Making sure bias is off
+BIAS_CONTROL/SET_ZERO_VOLTAGE
+.s BIAS_CONTROL 7
+FTM_CONTROL/STOP_TRIGGER
+.w 500
+FAD_CONTROL/CLOSE_OPEN_FILES
+FAD_CONTROL/ENABLE_DRS 0
+.w 1500
+MCP/START -1 500 drs-time-upshifted
+.! echo `date -u`  "taking time cal 2GHz + 0ps || 500evts..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+FTM_CONTROL/STOP_TRIGGER
+.w 500
+FAD_CONTROL/CLOSE_OPEN_FILES
+FAD_CONTROL/ENABLE_DRS 0
+.! echo `date -u`  "... done" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+MCP/START -1 500 drs-time-delay0.5
+.! echo `date -u`  "taking time cal 2GHz + 550ps || 500evts..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+FTM_CONTROL/STOP_TRIGGER
+.w 500
+FAD_CONTROL/CLOSE_OPEN_FILES
+FAD_CONTROL/ENABLE_DRS 0
+.w 1500
+.! echo `date -u`  "... done" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+MCP/START -1 500 drs-time-delay1.0
+.! echo `date -u`  "taking time cal 2GHz + 1000ps || 500evts..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+FTM_CONTROL/STOP_TRIGGER
+.w 500
+FAD_CONTROL/CLOSE_OPEN_FILES
+FAD_CONTROL/ENABLE_DRS 0
+.w 1500
+.! echo `date -u`  "... done" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+MCP/START -1 500 drs-time-delay1.5
+.! echo `date -u`  "taking time cal 2GHz + 1450ps || 500evts..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+FTM_CONTROL/STOP_TRIGGER
+.w 500
+FAD_CONTROL/CLOSE_OPEN_FILES
+FAD_CONTROL/ENABLE_DRS 0
+.w 1500
+.! echo `date -u`  "... done" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+MCP/START -1 500 drs-time-delay2.0
+.! echo `date -u`  "taking time cal 2GHz + 2050ps || 500evts..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+FTM_CONTROL/STOP_TRIGGER
+.w 500
+FAD_CONTROL/CLOSE_OPEN_FILES
+FAD_CONTROL/ENABLE_DRS 0
+.w 1500
+.! echo `date -u`  "... done" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+.! echo `date -u` "----------------------------------------------------" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo `date -u` "This is the end of Data Taking of Crab Wobble 1" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
Index: branches/testFACT++branch/ScriptsForDimCtrl/Startup.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/Startup.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/Startup.dim	(revision 18277)
@@ -0,0 +1,116 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Startup
+# ==========================================================================
+# Script for Software Startup
+
+# call it by: .x ScriptsForDimCtrl/Startup.dim
+
+# ----------------------------------------------------
+
+> ======================================
+> SYSTEM STARTUP
+> ======================================
+> BIAS_CONTROL
+> ...checking state of biasctrl
+.s BIAS_CONTROL 1 1000 2
+> ...bias DISCONNECTED
+> ...reconnecting
+BIAS_CONTROL/RECONNECT
+
+:2
+> ...wating for state 7: VoltageOff
+.s BIAS_CONTROL 7 2000 3
+.j 4
+
+:3
+.s BIAS_CONTROL 9 2000 256
+> ...VoltageOn
+> ...ramping down
+BIAS_CONTROL/SET_GLOBAL_DAC 0
+> ...waiting for bias ramping
+.s BIAS_CONTROL 5
+> ...ramping
+.s BIAS_CONTROL 7 15000 4
+
+:4
+> ...connected, VoltageOff
+> Bias ready
+> --------------------------------------
+
+# --------------------------------------
+
+> FTM_CONTROL
+> ...enabling all FTUs
+FTM_CONTROL/ENABLE_FTU -1 yes
+> ...waiting 6 seconds
+.w 6000
+
+# --------------------------------------
+> FAD_CONTROL
+> ...starting FADs
+
+FAD_CONTROL/START
+> ...checking fadctrl state
+.s FAD_CONTROL 4 5000 5
+> ...connected
+> FADs Ready!
+> --------------------------------------
+>-
+.j 300
+
+# --------------------------------------
+:5
+> --------------------------------------
+> not all FADs are connected
+> sending two triggers to request update
+
+FAD_CONTROL/SEND_SINGLE_TRIGGER
+.w 3000
+
+FAD_CONTROL/SEND_SINGLE_TRIGGER
+.w 2000
+
+> ...checking fadctrl state again
+.s FAD_CONTROL 4 5000 6
+> ...connected
+.j 300
+
+# --------------------------------------
+:6
+> --------------------------------------
+> not all FADs are connected
+> --------------------------------------
+> OPERATOR:
+> + check for FAD or FTU Loss
+> + finish Startup manually
+> --------------------------------------
+.j 301
+
+# --------------------------------------
+
+:256
+> --------------------------------------
+> BIAS not properly connected
+> --------------------------------------
+> OPERATOR:
+> + check biasctrl
+> + finish Startup manually
+> --------------------------------------
+.j 301
+
+# --------------------------------------
+
+:300
+> ======================================
+> SYSTEM STARTUP finished successfully
+> ======================================
+
+# --------------------------------------
+
+:301
+> ======================================
+> SYSTEM STARTUP finished with PROBLEMS
+> ======================================
+
Index: branches/testFACT++branch/ScriptsForDimCtrl/Take1218.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/Take1218.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/Take1218.dim	(revision 18277)
@@ -0,0 +1,51 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Data taking and tracking script for 1ES 1218+304
+# ==========================================================================
+
+# call it by: .x ScriptsForDimCtrl/Take1218.dim
+
+# ----------------------------------------------------
+>
+> ======================================
+> Data taking and tracking script for
+> 1ES 1218+304
+> ======================================
+> starting up...
+>
+
+# changing tracking to 1ES 1218+304 Wobble 1
+.x ScriptsForDimCtrl/ServiceScripts/Track1218Wobble1.dim
+
+# Wait for drivectrl to reply that its tracking the given source
+.x ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
+
+# starting data taking of 1ES 1218+304 Wobble 1
+.x ScriptsForDimCtrl/DataTaking1.dim
+
+# --------------------------------------
+# Label for processing only Wobble position 2
+# call like this .x ScriptsForDimCtrl/Take1218.dim:2
+:2
+# --------------------------------------
+
+# changing tracking to 1ES 1218+304 Wobble 2
+.x ScriptsForDimCtrl/ServiceScripts/Track1218Wobble2.dim
+
+# Wait for drivectrl to reply that its tracking the given source
+.x ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
+
+# data taking to 1ES 1218+304 Wobble 2
+.x ScriptsForDimCtrl/DataTaking2.dim
+
+# Stop tracking
+.x ScriptsForDimCtrl/ServiceScripts/StopTracking.dim
+
+> ======================================
+> Data taking and tracking script for
+> 1ES 1218+304 --> FINISHED
+> ======================================
+>
+
+
Index: branches/testFACT++branch/ScriptsForDimCtrl/Take1959.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/Take1959.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/Take1959.dim	(revision 18277)
@@ -0,0 +1,53 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Data taking and tracking script for 1ES1959+650
+# ==========================================================================
+
+# call it by: .x ScriptsForDimCtrl/Take1959.dim
+
+# ----------------------------------------------------
+
+
+>
+> ======================================
+> Data taking and tracking script for
+> 1959
+> ======================================
+> starting up...
+>
+
+
+# changing tracking to 1959 Wobble 1
+.x ScriptsForDimCtrl/ServiceScripts/Track1959Wobble1.dim
+
+# Wait for drivectrl to reply that its tracking the given source
+.x ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
+
+# starting data taking of 1959
+.x ScriptsForDimCtrl/DataTaking1.dim
+
+# --------------------------------------
+# Label for processing only Wobble position 2
+# call like this .x ScriptsForDimCtrl/Take1959.dim:2
+:2
+# --------------------------------------
+
+# changing tracking to 1959 Wobble 2
+.x ScriptsForDimCtrl/ServiceScripts/Track1959Wobble2.dim
+
+# Wait for drivectrl to reply that its tracking the given source
+.x ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
+
+# data taking to 1959 Wobble 2
+.x ScriptsForDimCtrl/DataTaking2.dim
+
+# Stop tracking
+.x ScriptsForDimCtrl/ServiceScripts/StopTracking.dim
+
+> ======================================
+> Data taking and tracking script for
+> 1959 --> FINISHED
+> ======================================
+>
+
Index: branches/testFACT++branch/ScriptsForDimCtrl/Take2344.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/Take2344.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/Take2344.dim	(revision 18277)
@@ -0,0 +1,52 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Data taking and tracking script for 1ES 2344+54.4
+# ==========================================================================
+
+# call it by: .x ScriptsForDimCtrl/Take2344.dim
+
+# ----------------------------------------------------
+>
+> ======================================
+> Data taking and tracking script for
+> 1ES 2344+54.4
+> ======================================
+> starting up...
+>
+
+
+# changing tracking to Wobble 1
+.x ScriptsForDimCtrl/ServiceScripts/Track2344Wobble1.dim
+
+# Wait for drivectrl to reply that its tracking the given source
+.x ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
+
+# starting data taking of Wobble 1
+.x ScriptsForDimCtrl/DataTaking1.dim
+
+# --------------------------------------
+# Label for processing only Wobble position 2
+# call like this .x ScriptsForDimCtrl/Take2344.dim:2
+:2
+# --------------------------------------
+
+# changing tracking to Mrk 421 Wobble 2
+.x ScriptsForDimCtrl/ServiceScripts/Track2344Wobble2.dim
+
+# Wait for drivectrl to reply that its tracking the given source
+.x ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
+
+# data taking to Mrk 421 Wobble 2
+.x ScriptsForDimCtrl/DataTaking2.dim
+
+# Stop tracking
+.x ScriptsForDimCtrl/ServiceScripts/StopTracking.dim
+
+> ======================================
+> Data taking and tracking script for
+> 1ES 2344+54.4 --> FINISHED
+> ======================================
+>
+
+
Index: branches/testFACT++branch/ScriptsForDimCtrl/TakeCrab.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/TakeCrab.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/TakeCrab.dim	(revision 18277)
@@ -0,0 +1,50 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Data taking and tracking script for Crab
+# ==========================================================================
+
+# call it by: .x ScriptsForDimCtrl/TakeCrab.dim
+
+# ----------------------------------------------------
+>
+> ======================================
+> Data taking and tracking script for
+> Crab
+> ======================================
+> starting up...
+>
+
+# changing tracking to Crab Wobble 1
+.x ScriptsForDimCtrl/ServiceScripts/TrackCrabWobble1.dim
+
+# Wait for drivectrl to reply that its tracking the given source
+.x ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
+
+# starting data taking of Crab Wobble 1
+.x ScriptsForDimCtrl/DataTaking1.dim
+
+# --------------------------------------
+# Label for processing only Wobble position 2
+# call like this .x ScriptsForDimCtrl/TakeCrab.dim:2
+:2
+# --------------------------------------
+
+# changing tracking to Crab Wobble 2
+.x ScriptsForDimCtrl/ServiceScripts/TrackCrabWobble2.dim
+
+# Wait for drivectrl to reply that its tracking the given source
+.x ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
+
+# data taking to Crab Wobble 2
+.x ScriptsForDimCtrl/DataTaking2.dim
+
+# Stop tracking
+.x ScriptsForDimCtrl/ServiceScripts/StopTracking.dim
+
+> ======================================
+> Data taking and tracking script for
+> Crab --> FINISHED
+> ======================================
+>
+
Index: branches/testFACT++branch/ScriptsForDimCtrl/TakeMrk421.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/TakeMrk421.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/TakeMrk421.dim	(revision 18277)
@@ -0,0 +1,52 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Data taking and tracking script for Mrk 421
+# ==========================================================================
+
+# call it by: .x ScriptsForDimCtrl/TakeMrk421.dim
+
+# ----------------------------------------------------
+
+>
+> ======================================
+> Data taking and tracking script for
+> Mrk 421
+> ======================================
+> starting up...
+>
+
+# changing tracking to Mrk 421 Wobble 1
+.x ScriptsForDimCtrl/ServiceScripts/TrackMrk421Wobble1.dim
+
+# Wait for drivectrl to reply that its tracking the given source
+.x ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
+
+# starting data taking of Mrk 421 Wobble 1
+.x ScriptsForDimCtrl/DataTaking1.dim
+
+# --------------------------------------
+# Label for processing only Wobble position 2
+# call like this .x ScriptsForDimCtrl/TakeMrk421.dim:2
+:2
+# --------------------------------------
+
+# changing tracking to Mrk 421 Wobble 2
+.x ScriptsForDimCtrl/ServiceScripts/TrackMrk421Wobble2.dim
+
+# Wait for drivectrl to reply that its tracking the given source
+.x ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
+
+# data taking to Mrk 421 Wobble 2
+.x ScriptsForDimCtrl/DataTaking2.dim
+
+# Stop tracking
+.x ScriptsForDimCtrl/ServiceScripts/StopTracking.dim
+
+> ======================================
+> Data taking and tracking script for
+> Mrk 421 --> FINISHED
+> ======================================
+>
+
+
Index: branches/testFACT++branch/ScriptsForDimCtrl/TakeMrk501.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/TakeMrk501.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/TakeMrk501.dim	(revision 18277)
@@ -0,0 +1,53 @@
+#!dimctrl --exec
+
+# ==========================================================================
+# Data taking and tracking script for Mrk 501
+# ==========================================================================
+
+# call it by: .x ScriptsForDimCtrl/TakeMrk501.dim
+
+# ----------------------------------------------------
+
+
+>
+> ======================================
+> Data taking and tracking script for
+> Mrk 501
+> ======================================
+> starting up...
+>
+
+
+# changing tracking to Mrk501 Wobble 1
+.x ScriptsForDimCtrl/ServiceScripts/TrackMrk501Wobble1.dim
+
+# Wait for drivectrl to reply that its tracking the given source
+.x ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
+
+# starting data taking of Mrk501
+.x ScriptsForDimCtrl/DataTaking1.dim
+
+# --------------------------------------
+# Label for processing only Wobble position 2
+# call like this .x ScriptsForDimCtrl/TakeMrk501.dim:2
+:2
+# --------------------------------------
+
+# changing tracking to Mrk501 Wobble 2
+.x ScriptsForDimCtrl/ServiceScripts/TrackMrk501Wobble2.dim
+
+# Wait for drivectrl to reply that its tracking the given source
+.x ScriptsForDimCtrl/ServiceScripts/WaitForTracking.dim
+
+# data taking to Mrk501 Wobble 2
+.x ScriptsForDimCtrl/DataTaking2.dim
+
+# Stop tracking
+.x ScriptsForDimCtrl/ServiceScripts/StopTracking.dim
+
+> ======================================
+> Data taking and tracking script for
+> Mrk 501 --> FINISHED
+> ======================================
+>
+
Index: branches/testFACT++branch/ScriptsForDimCtrl/drs_ampl_calib.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/drs_ampl_calib.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/drs_ampl_calib.dim	(revision 18277)
@@ -0,0 +1,34 @@
+#!dimctrl --exec
+
+# DIMSCRIPT  -- drs_calib  --- this is the first part of former DataTaking1 .. the part which was different from DataTaking2
+.! echo `date -u`  "----------------------------------------------------" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo `date -u`  "drs_calib -- starting up... " >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo `date -u`  "----------------------------------------------------" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+FEEDBACK/ENABLE_OUTPUT no
+BIAS_CONTROL/SET_ZERO_VOLTAGE
+.s BIAS_CONTROL 7
+FAD_CONTROL/START_DRS_CALIBRATION
+.! echo `date -u`  "bias voltage is switched off" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+.! echo `date -u`  "taking DRS:Pedestal 1000 ..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+MCP/START -1 1000 drs-pedestal
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+.! echo `date -u`  "... done" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+.! echo `date -u`  "taking DRS:Gain 1000 ..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+MCP/START -1 1000 drs-gain
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+.! echo `date -u`  "... done" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+.! echo `date -u`  "taking DRS:Pedestal 1000 ..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+MCP/START -1 1000 drs-pedestal
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+.! echo `date -u`  "... done" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
+.! echo `date -u`  "----------------------------------------------------" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo `date -u`  "this is the end of drs_ampl_calib" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo `date -u`  "----------------------------------------------------" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
Index: branches/testFACT++branch/ScriptsForDimCtrl/fb_data.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/fb_data.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/fb_data.dim	(revision 18277)
@@ -0,0 +1,30 @@
+#!dimctrl --exec
+
+# DIMSCRIPT
+.! echo `date -u`  "take 4x data run with feedback ON " >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo `date -u`  "----------------------------------------------------" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo
+
+FEEDBACK/ENABLE_OUTPUT yes
+FAD_CONTROL/SET_FILE_FORMAT 2
+
+MCP/START 300 -1 data
+.! echo `date -u`  "taking 1/4 data runs ... feedback on ...." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+
+MCP/START 300 -1 data
+.! echo `date -u`  "taking 2/4 data runs ... feedback on ...." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+
+MCP/START 300 -1 data
+.! echo `date -u`  "taking 3/4 data runs ... feedback on ...." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+
+MCP/START 300 -1 data
+.! echo `date -u`  "taking 4/4 data runs ... feedback on ...." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+.! echo `date -u`  " ... done ... " >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
Index: branches/testFACT++branch/ScriptsForDimCtrl/fb_on.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/fb_on.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/fb_on.dim	(revision 18277)
@@ -0,0 +1,35 @@
+#!dimctrl --exec
+
+# DIMSCRIPT
+.! echo `date -u`  "switch on bias feedback - REF 100 " >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo `date -u`  "----------------------------------------------------" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo
+FEEDBACK/STOP
+.s FEEDBACK 6
+.w 500
+BIAS_CONTROL/SET_ZERO_VOLTAGE
+.s BIAS_CONTROL 7
+.w 10000
+BIAS_CONTROL/SET_GLOBAL_DAC 1
+.s BIAS_CONTROL 9
+FEEDBACK/START_CURRENT_CONTROL 0.0
+.w 500
+FEEDBACK/ENABLE_OUTPUT yes
+
+#bad coding here
+.! echo `date -u`  "Waiting for 90 sec ..." >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.w 90000
+.s BIAS_CONTROL 9
+FEEDBACK/STOP
+FEEDBACK/START_GLOBAL_FEEDBACK 25
+FEEDBACK/SET_REFERENCE 100
+
+FAD_CONTROL/SET_FILE_FORMAT 0
+.! echo `date -u`  "Starting Ext. Lightpulser run for 100 Events!!!!!" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+MCP/START -1 500 light-pulser-ext
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+
+.! echo `date -u`  "@SHIFTER: please set BY HAND the FEEDBACK REFERENCE to the desired voltage setpoint" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo `date -u`  "@SHIFTER: .... do: FEEDBACK/SET_REFERENCE <voltage in mV>" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+
Index: branches/testFACT++branch/ScriptsForDimCtrl/fb_ped_n_lp.dim
===================================================================
--- branches/testFACT++branch/ScriptsForDimCtrl/fb_ped_n_lp.dim	(revision 18277)
+++ branches/testFACT++branch/ScriptsForDimCtrl/fb_ped_n_lp.dim	(revision 18277)
@@ -0,0 +1,29 @@
+#!dimctrl --exec
+
+# DIMSCRIPT
+.! echo `date -u`  "take ped and LPext" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo `date -u`  "----------------------------------------------------" >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+.! echo
+
+.! echo `date -u`  "take 100 LP events for the beedback to stabilize " >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+FEEDBACK/ENABLE_OUTPUT yes
+FAD_CONTROL/SET_FILE_FORMAT 0
+FEEDBACK/SET_Ki 0.8
+MCP/START -1 500 light-pulser-ext
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+
+FEEBACK/SET_Ki 0.55
+FEEDBACK/ENABLE_OUTPUT no
+FAD_CONTROL/SET_FILE_FORMAT 2
+.! echo `date -u`  "take PED " >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+MCP/START -1 1000 pedestal
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+.! echo `date -u`  "take LPext " >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
+MCP/START -1 1000 light-pulser-ext
+.s FAD_CONTROL 8
+.s FAD_CONTROL 4
+
+FEEDBACK/ENABLE_OUTPUT yes
+.! echo `date -u`  " .. done .. " >> ~/FACT++/ScriptsForDimCtrl/DataTaking.log
Index: branches/testFACT++branch/aclocal.m4
===================================================================
--- branches/testFACT++branch/aclocal.m4	(revision 18277)
+++ branches/testFACT++branch/aclocal.m4	(revision 18277)
@@ -0,0 +1,3201 @@
+# generated automatically by aclocal 1.11.3 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
+# Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],,
+[m4_warning([this file was generated for autoconf 2.68.
+You have another version of autoconf.  It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+# ===========================================================================
+#       http://www.gnu.org/software/autoconf-archive/ax_boost_asio.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_BOOST_ASIO
+#
+# DESCRIPTION
+#
+#   Test for Asio library from the Boost C++ libraries. The macro requires a
+#   preceding call to AX_BOOST_BASE. Further documentation is available at
+#   <http://randspringer.de/boost/index.html>.
+#
+#   This macro calls:
+#
+#     AC_SUBST(BOOST_ASIO_LIB)
+#
+#   And sets:
+#
+#     HAVE_BOOST_ASIO
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Thomas Porschberg <thomas@randspringer.de>
+#   Copyright (c) 2008 Pete Greenwell <pete@mu.org>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 13
+
+AC_DEFUN([AX_BOOST_ASIO],
+[
+	AC_ARG_WITH([boost-asio],
+	AS_HELP_STRING([--with-boost-asio@<:@=special-lib@:>@],
+                   [use the ASIO library from boost - it is possible to specify a certain library for the linker
+                        e.g. --with-boost-asio=boost_system-gcc41-mt-1_34 ]),
+        [
+        if test "$withval" = "no"; then
+			want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_asio_lib=""
+        else
+		    want_boost="yes"
+		ax_boost_user_asio_lib="$withval"
+		fi
+        ],
+        [want_boost="yes"]
+	)
+
+	if test "x$want_boost" = "xyes"; then
+        AC_REQUIRE([AC_PROG_CC])
+		CPPFLAGS_SAVED="$CPPFLAGS"
+		CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+		export CPPFLAGS
+
+		LDFLAGS_SAVED="$LDFLAGS"
+		LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+		export LDFLAGS
+
+        AC_CACHE_CHECK(whether the Boost::ASIO library is available,
+					   ax_cv_boost_asio,
+        [AC_LANG_PUSH([C++])
+		 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ @%:@include <boost/asio.hpp>
+											]],
+                                  [[
+
+                                    boost::asio::io_service io;
+                                    boost::system::error_code timer_result;
+                                    boost::asio::deadline_timer t(io);
+                                    t.cancel();
+                                    io.run_one();
+									return 0;
+                                   ]])],
+                             ax_cv_boost_asio=yes, ax_cv_boost_asio=no)
+         AC_LANG_POP([C++])
+		])
+		if test "x$ax_cv_boost_asio" = "xyes"; then
+			AC_DEFINE(HAVE_BOOST_ASIO,,[define if the Boost::ASIO library is available])
+			BN=boost_system
+            if test "x$ax_boost_user_asio_lib" = "x"; then
+				for ax_lib in $BN $BN-$CC $BN-$CC-mt $BN-$CC-mt-s $BN-$CC-s \
+                              lib$BN lib$BN-$CC lib$BN-$CC-mt lib$BN-$CC-mt-s lib$BN-$CC-s \
+                              $BN-mgw $BN-mgw $BN-mgw-mt $BN-mgw-mt-s $BN-mgw-s ; do
+				    AC_CHECK_LIB($ax_lib, main, [BOOST_ASIO_LIB="-l$ax_lib" AC_SUBST(BOOST_ASIO_LIB) link_thread="yes" break],
+                                 [link_thread="no"])
+				done
+            else
+               for ax_lib in $ax_boost_user_asio_lib $BN-$ax_boost_user_asio_lib; do
+				      AC_CHECK_LIB($ax_lib, main,
+                                   [BOOST_ASIO_LIB="-l$ax_lib" AC_SUBST(BOOST_ASIO_LIB) link_asio="yes" break],
+                                   [link_asio="no"])
+                  done
+
+            fi
+            if test "x$ax_lib" = "x"; then
+                AC_MSG_ERROR(Could not find a version of the library!)
+            fi
+			if test "x$link_asio" = "xno"; then
+				AC_MSG_ERROR(Could not link against $ax_lib !)
+			fi
+		fi
+
+		CPPFLAGS="$CPPFLAGS_SAVED"
+	LDFLAGS="$LDFLAGS_SAVED"
+	fi
+])
+
+# ===========================================================================
+#       http://www.gnu.org/software/autoconf-archive/ax_boost_base.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_BOOST_BASE([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# DESCRIPTION
+#
+#   Test for the Boost C++ libraries of a particular version (or newer)
+#
+#   If no path to the installed boost library is given the macro searchs
+#   under /usr, /usr/local, /opt and /opt/local and evaluates the
+#   $BOOST_ROOT environment variable. Further documentation is available at
+#   <http://randspringer.de/boost/index.html>.
+#
+#   This macro calls:
+#
+#     AC_SUBST(BOOST_CPPFLAGS) / AC_SUBST(BOOST_LDFLAGS)
+#
+#   And sets:
+#
+#     HAVE_BOOST
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Thomas Porschberg <thomas@randspringer.de>
+#   Copyright (c) 2009 Peter Adolphs
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 20
+
+AC_DEFUN([AX_BOOST_BASE],
+[
+AC_ARG_WITH([boost],
+  [AS_HELP_STRING([--with-boost@<:@=ARG@:>@],
+    [use Boost library from a standard location (ARG=yes),
+     from the specified location (ARG=<path>),
+     or disable it (ARG=no)
+     @<:@ARG=yes@:>@ ])],
+    [
+    if test "$withval" = "no"; then
+        want_boost="no"
+    elif test "$withval" = "yes"; then
+        want_boost="yes"
+        ac_boost_path=""
+    else
+        want_boost="yes"
+        ac_boost_path="$withval"
+    fi
+    ],
+    [want_boost="yes"])
+
+
+AC_ARG_WITH([boost-libdir],
+        AS_HELP_STRING([--with-boost-libdir=LIB_DIR],
+        [Force given directory for boost libraries. Note that this will override library path detection, so use this parameter only if default library detection fails and you know exactly where your boost libraries are located.]),
+        [
+        if test -d "$withval"
+        then
+                ac_boost_lib_path="$withval"
+        else
+                AC_MSG_ERROR(--with-boost-libdir expected directory name)
+        fi
+        ],
+        [ac_boost_lib_path=""]
+)
+
+if test "x$want_boost" = "xyes"; then
+    boost_lib_version_req=ifelse([$1], ,1.20.0,$1)
+    boost_lib_version_req_shorten=`expr $boost_lib_version_req : '\([[0-9]]*\.[[0-9]]*\)'`
+    boost_lib_version_req_major=`expr $boost_lib_version_req : '\([[0-9]]*\)'`
+    boost_lib_version_req_minor=`expr $boost_lib_version_req : '[[0-9]]*\.\([[0-9]]*\)'`
+    boost_lib_version_req_sub_minor=`expr $boost_lib_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
+    if test "x$boost_lib_version_req_sub_minor" = "x" ; then
+        boost_lib_version_req_sub_minor="0"
+        fi
+    WANT_BOOST_VERSION=`expr $boost_lib_version_req_major \* 100000 \+  $boost_lib_version_req_minor \* 100 \+ $boost_lib_version_req_sub_minor`
+    AC_MSG_CHECKING(for boostlib >= $boost_lib_version_req)
+    succeeded=no
+
+    dnl On 64-bit systems check for system libraries in both lib64 and lib.
+    dnl The former is specified by FHS, but e.g. Debian does not adhere to
+    dnl this (as it rises problems for generic multi-arch support).
+    dnl The last entry in the list is chosen by default when no libraries
+    dnl are found, e.g. when only header-only libraries are installed!
+    libsubdirs="lib"
+    ax_arch=`uname -m`
+    if test $ax_arch = x86_64 -o $ax_arch = ppc64 -o $ax_arch = s390x -o $ax_arch = sparc64; then
+        libsubdirs="lib64 lib lib64"
+    fi
+
+    dnl first we check the system location for boost libraries
+    dnl this location ist chosen if boost libraries are installed with the --layout=system option
+    dnl or if you install boost with RPM
+    if test "$ac_boost_path" != ""; then
+        BOOST_CPPFLAGS="-I$ac_boost_path/include"
+        for ac_boost_path_tmp in $libsubdirs; do
+                if test -d "$ac_boost_path"/"$ac_boost_path_tmp" ; then
+                        BOOST_LDFLAGS="-L$ac_boost_path/$ac_boost_path_tmp"
+                        break
+                fi
+        done
+    elif test "$cross_compiling" != yes; then
+        for ac_boost_path_tmp in /usr /usr/local /opt /opt/local ; do
+            if test -d "$ac_boost_path_tmp/include/boost" && test -r "$ac_boost_path_tmp/include/boost"; then
+                for libsubdir in $libsubdirs ; do
+                    if ls "$ac_boost_path_tmp/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
+                done
+                BOOST_LDFLAGS="-L$ac_boost_path_tmp/$libsubdir"
+                BOOST_CPPFLAGS="-I$ac_boost_path_tmp/include"
+                break;
+            fi
+        done
+    fi
+
+    dnl overwrite ld flags if we have required special directory with
+    dnl --with-boost-libdir parameter
+    if test "$ac_boost_lib_path" != ""; then
+       BOOST_LDFLAGS="-L$ac_boost_lib_path"
+    fi
+
+    CPPFLAGS_SAVED="$CPPFLAGS"
+    CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+    export CPPFLAGS
+
+    LDFLAGS_SAVED="$LDFLAGS"
+    LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+    export LDFLAGS
+
+    AC_REQUIRE([AC_PROG_CXX])
+    AC_LANG_PUSH(C++)
+        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+    @%:@include <boost/version.hpp>
+    ]], [[
+    #if BOOST_VERSION >= $WANT_BOOST_VERSION
+    // Everything is okay
+    #else
+    #  error Boost version is too old
+    #endif
+    ]])],[
+        AC_MSG_RESULT(yes)
+    succeeded=yes
+    found_system=yes
+        ],[
+        ])
+    AC_LANG_POP([C++])
+
+
+
+    dnl if we found no boost with system layout we search for boost libraries
+    dnl built and installed without the --layout=system option or for a staged(not installed) version
+    if test "x$succeeded" != "xyes"; then
+        _version=0
+        if test "$ac_boost_path" != ""; then
+            if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
+                for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
+                    _version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
+                    V_CHECK=`expr $_version_tmp \> $_version`
+                    if test "$V_CHECK" = "1" ; then
+                        _version=$_version_tmp
+                    fi
+                    VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
+                    BOOST_CPPFLAGS="-I$ac_boost_path/include/boost-$VERSION_UNDERSCORE"
+                done
+            fi
+        else
+            if test "$cross_compiling" != yes; then
+                for ac_boost_path in /usr /usr/local /opt /opt/local ; do
+                    if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
+                        for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
+                            _version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
+                            V_CHECK=`expr $_version_tmp \> $_version`
+                            if test "$V_CHECK" = "1" ; then
+                                _version=$_version_tmp
+                                best_path=$ac_boost_path
+                            fi
+                        done
+                    fi
+                done
+
+                VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
+                BOOST_CPPFLAGS="-I$best_path/include/boost-$VERSION_UNDERSCORE"
+                if test "$ac_boost_lib_path" = ""; then
+                    for libsubdir in $libsubdirs ; do
+                        if ls "$best_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
+                    done
+                    BOOST_LDFLAGS="-L$best_path/$libsubdir"
+                fi
+            fi
+
+            if test "x$BOOST_ROOT" != "x"; then
+                for libsubdir in $libsubdirs ; do
+                    if ls "$BOOST_ROOT/stage/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
+                done
+                if test -d "$BOOST_ROOT" && test -r "$BOOST_ROOT" && test -d "$BOOST_ROOT/stage/$libsubdir" && test -r "$BOOST_ROOT/stage/$libsubdir"; then
+                    version_dir=`expr //$BOOST_ROOT : '.*/\(.*\)'`
+                    stage_version=`echo $version_dir | sed 's/boost_//' | sed 's/_/./g'`
+                        stage_version_shorten=`expr $stage_version : '\([[0-9]]*\.[[0-9]]*\)'`
+                    V_CHECK=`expr $stage_version_shorten \>\= $_version`
+                    if test "$V_CHECK" = "1" -a "$ac_boost_lib_path" = "" ; then
+                        AC_MSG_NOTICE(We will use a staged boost library from $BOOST_ROOT)
+                        BOOST_CPPFLAGS="-I$BOOST_ROOT"
+                        BOOST_LDFLAGS="-L$BOOST_ROOT/stage/$libsubdir"
+                    fi
+                fi
+            fi
+        fi
+
+        CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+        export CPPFLAGS
+        LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+        export LDFLAGS
+
+        AC_LANG_PUSH(C++)
+            AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+        @%:@include <boost/version.hpp>
+        ]], [[
+        #if BOOST_VERSION >= $WANT_BOOST_VERSION
+        // Everything is okay
+        #else
+        #  error Boost version is too old
+        #endif
+        ]])],[
+            AC_MSG_RESULT(yes)
+        succeeded=yes
+        found_system=yes
+            ],[
+            ])
+        AC_LANG_POP([C++])
+    fi
+
+    if test "$succeeded" != "yes" ; then
+        if test "$_version" = "0" ; then
+            AC_MSG_NOTICE([[We could not detect the boost libraries (version $boost_lib_version_req_shorten or higher). If you have a staged boost library (still not installed) please specify \$BOOST_ROOT in your environment and do not give a PATH to --with-boost option.  If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation.]])
+        else
+            AC_MSG_NOTICE([Your boost libraries seems to old (version $_version).])
+        fi
+        # execute ACTION-IF-NOT-FOUND (if present):
+        ifelse([$3], , :, [$3])
+    else
+        AC_SUBST(BOOST_CPPFLAGS)
+        AC_SUBST(BOOST_LDFLAGS)
+        AC_DEFINE(HAVE_BOOST,,[define if the Boost library is available])
+        # execute ACTION-IF-FOUND (if present):
+        ifelse([$2], , :, [$2])
+    fi
+
+    CPPFLAGS="$CPPFLAGS_SAVED"
+    LDFLAGS="$LDFLAGS_SAVED"
+fi
+
+])
+
+# ===========================================================================
+#    http://www.gnu.org/software/autoconf-archive/ax_boost_date_time.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_BOOST_DATE_TIME
+#
+# DESCRIPTION
+#
+#   Test for Date_Time library from the Boost C++ libraries. The macro
+#   requires a preceding call to AX_BOOST_BASE. Further documentation is
+#   available at <http://randspringer.de/boost/index.html>.
+#
+#   This macro calls:
+#
+#     AC_SUBST(BOOST_DATE_TIME_LIB)
+#
+#   And sets:
+#
+#     HAVE_BOOST_DATE_TIME
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Thomas Porschberg <thomas@randspringer.de>
+#   Copyright (c) 2008 Michael Tindal
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 19
+
+AC_DEFUN([AX_BOOST_DATE_TIME],
+[
+	AC_ARG_WITH([boost-date-time],
+	AS_HELP_STRING([--with-boost-date-time@<:@=special-lib@:>@],
+                   [use the Date_Time library from boost - it is possible to specify a certain library for the linker
+                        e.g. --with-boost-date-time=boost_date_time-gcc-mt-d-1_33_1 ]),
+        [
+        if test "$withval" = "no"; then
+			want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_date_time_lib=""
+        else
+		    want_boost="yes"
+		ax_boost_user_date_time_lib="$withval"
+		fi
+        ],
+        [want_boost="yes"]
+	)
+
+	if test "x$want_boost" = "xyes"; then
+        AC_REQUIRE([AC_PROG_CC])
+		CPPFLAGS_SAVED="$CPPFLAGS"
+		CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+		export CPPFLAGS
+
+		LDFLAGS_SAVED="$LDFLAGS"
+		LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+		export LDFLAGS
+
+        AC_CACHE_CHECK(whether the Boost::Date_Time library is available,
+					   ax_cv_boost_date_time,
+        [AC_LANG_PUSH([C++])
+		 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/date_time/gregorian/gregorian_types.hpp>]],
+                                   [[using namespace boost::gregorian; date d(2002,Jan,10);
+                                     return 0;
+                                   ]])],
+         ax_cv_boost_date_time=yes, ax_cv_boost_date_time=no)
+         AC_LANG_POP([C++])
+		])
+		if test "x$ax_cv_boost_date_time" = "xyes"; then
+			AC_DEFINE(HAVE_BOOST_DATE_TIME,,[define if the Boost::Date_Time library is available])
+            BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
+            if test "x$ax_boost_user_date_time_lib" = "x"; then
+                for libextension in `ls $BOOSTLIBDIR/libboost_date_time*.so* $BOOSTLIBDIR/libboost_date_time*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_date_time.*\)\.so.*$;\1;' -e 's;^lib\(boost_date_time.*\)\.a*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    AC_CHECK_LIB($ax_lib, exit,
+                                 [BOOST_DATE_TIME_LIB="-l$ax_lib"; AC_SUBST(BOOST_DATE_TIME_LIB) link_date_time="yes"; break],
+                                 [link_date_time="no"])
+				done
+                if test "x$link_date_time" != "xyes"; then
+                for libextension in `ls $BOOSTLIBDIR/boost_date_time*.{dll,a}* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_date_time.*\)\.dll.*$;\1;' -e 's;^\(boost_date_time.*\)\.a*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    AC_CHECK_LIB($ax_lib, exit,
+                                 [BOOST_DATE_TIME_LIB="-l$ax_lib"; AC_SUBST(BOOST_DATE_TIME_LIB) link_date_time="yes"; break],
+                                 [link_date_time="no"])
+				done
+                fi
+
+            else
+               for ax_lib in $ax_boost_user_date_time_lib boost_date_time-$ax_boost_user_date_time_lib; do
+				      AC_CHECK_LIB($ax_lib, main,
+                                   [BOOST_DATE_TIME_LIB="-l$ax_lib"; AC_SUBST(BOOST_DATE_TIME_LIB) link_date_time="yes"; break],
+                                   [link_date_time="no"])
+                  done
+
+            fi
+            if test "x$ax_lib" = "x"; then
+                AC_MSG_ERROR(Could not find a version of the library!)
+            fi
+			if test "x$link_date_time" != "xyes"; then
+				AC_MSG_ERROR(Could not link against $ax_lib !)
+			fi
+		fi
+
+		CPPFLAGS="$CPPFLAGS_SAVED"
+	LDFLAGS="$LDFLAGS_SAVED"
+	fi
+])
+
+# ===========================================================================
+#    http://www.gnu.org/software/autoconf-archive/ax_boost_filesystem.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_BOOST_FILESYSTEM
+#
+# DESCRIPTION
+#
+#   Test for Filesystem library from the Boost C++ libraries. The macro
+#   requires a preceding call to AX_BOOST_BASE. Further documentation is
+#   available at <http://randspringer.de/boost/index.html>.
+#
+#   This macro calls:
+#
+#     AC_SUBST(BOOST_FILESYSTEM_LIB)
+#
+#   And sets:
+#
+#     HAVE_BOOST_FILESYSTEM
+#
+# LICENSE
+#
+#   Copyright (c) 2009 Thomas Porschberg <thomas@randspringer.de>
+#   Copyright (c) 2009 Michael Tindal
+#   Copyright (c) 2009 Roman Rybalko <libtorrent@romanr.info>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 22
+
+AC_DEFUN([AX_BOOST_FILESYSTEM],
+[
+	AC_ARG_WITH([boost-filesystem],
+	AS_HELP_STRING([--with-boost-filesystem@<:@=special-lib@:>@],
+                   [use the Filesystem library from boost - it is possible to specify a certain library for the linker
+                        e.g. --with-boost-filesystem=boost_filesystem-gcc-mt ]),
+        [
+        if test "$withval" = "no"; then
+			want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_filesystem_lib=""
+        else
+		    want_boost="yes"
+		ax_boost_user_filesystem_lib="$withval"
+		fi
+        ],
+        [want_boost="yes"]
+	)
+
+	if test "x$want_boost" = "xyes"; then
+        AC_REQUIRE([AC_PROG_CC])
+		CPPFLAGS_SAVED="$CPPFLAGS"
+		CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+		export CPPFLAGS
+
+		LDFLAGS_SAVED="$LDFLAGS"
+		LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+		export LDFLAGS
+
+		LIBS_SAVED=$LIBS
+		LIBS="$LIBS $BOOST_SYSTEM_LIB"
+		export LIBS
+
+        AC_CACHE_CHECK(whether the Boost::Filesystem library is available,
+					   ax_cv_boost_filesystem,
+        [AC_LANG_PUSH([C++])
+         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/filesystem/path.hpp>]],
+                                   [[using namespace boost::filesystem;
+                                   path my_path( "foo/bar/data.txt" );
+                                   return 0;]])],
+					       ax_cv_boost_filesystem=yes, ax_cv_boost_filesystem=no)
+         AC_LANG_POP([C++])
+		])
+		if test "x$ax_cv_boost_filesystem" = "xyes"; then
+			AC_DEFINE(HAVE_BOOST_FILESYSTEM,,[define if the Boost::Filesystem library is available])
+            BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
+            if test "x$ax_boost_user_filesystem_lib" = "x"; then
+                for libextension in `ls $BOOSTLIBDIR/libboost_filesystem*.so* $BOOSTLIBDIR/libboost_filesystem*.dylib* $BOOSTLIBDIR/libboost_filesystem*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_filesystem.*\)\.so.*$;\1;' -e 's;^lib\(boost_filesystem.*\)\.a*$;\1;' -e 's;^lib\(boost_filesystem.*\)\.dylib$;\1;'` ; do
+                     ax_lib=${libextension}
+				    AC_CHECK_LIB($ax_lib, exit,
+                                 [BOOST_FILESYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_FILESYSTEM_LIB) link_filesystem="yes"; break],
+                                 [link_filesystem="no"])
+				done
+                if test "x$link_filesystem" != "xyes"; then
+                for libextension in `ls $BOOSTLIBDIR/boost_filesystem*.{dll,a}* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_filesystem.*\)\.dll.*$;\1;' -e 's;^\(boost_filesystem.*\)\.a*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    AC_CHECK_LIB($ax_lib, exit,
+                                 [BOOST_FILESYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_FILESYSTEM_LIB) link_filesystem="yes"; break],
+                                 [link_filesystem="no"])
+				done
+		    fi
+            else
+               for ax_lib in $ax_boost_user_filesystem_lib boost_filesystem-$ax_boost_user_filesystem_lib; do
+				      AC_CHECK_LIB($ax_lib, exit,
+                                   [BOOST_FILESYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_FILESYSTEM_LIB) link_filesystem="yes"; break],
+                                   [link_filesystem="no"])
+                  done
+
+            fi
+            if test "x$ax_lib" = "x"; then
+                AC_MSG_ERROR(Could not find a version of the library!)
+            fi
+			if test "x$link_filesystem" != "xyes"; then
+				AC_MSG_ERROR(Could not link against $ax_lib !)
+			fi
+		fi
+
+		CPPFLAGS="$CPPFLAGS_SAVED"
+		LDFLAGS="$LDFLAGS_SAVED"
+		LIBS="$LIBS_SAVED"
+	fi
+])
+
+# ============================================================================
+#  http://www.gnu.org/software/autoconf-archive/ax_boost_program_options.html
+# ============================================================================
+#
+# SYNOPSIS
+#
+#   AX_BOOST_PROGRAM_OPTIONS
+#
+# DESCRIPTION
+#
+#   Test for program options library from the Boost C++ libraries. The macro
+#   requires a preceding call to AX_BOOST_BASE. Further documentation is
+#   available at <http://randspringer.de/boost/index.html>.
+#
+#   This macro calls:
+#
+#     AC_SUBST(BOOST_PROGRAM_OPTIONS_LIB)
+#
+#   And sets:
+#
+#     HAVE_BOOST_PROGRAM_OPTIONS
+#
+# LICENSE
+#
+#   Copyright (c) 2009 Thomas Porschberg <thomas@randspringer.de>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 20
+
+AC_DEFUN([AX_BOOST_PROGRAM_OPTIONS],
+[
+	AC_ARG_WITH([boost-program-options],
+		AS_HELP_STRING([--with-boost-program-options@<:@=special-lib@:>@],
+                       [use the program options library from boost - it is possible to specify a certain library for the linker
+                        e.g. --with-boost-program-options=boost_program_options-gcc-mt-1_33_1 ]),
+        [
+        if test "$withval" = "no"; then
+			want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_program_options_lib=""
+        else
+		    want_boost="yes"
+		ax_boost_user_program_options_lib="$withval"
+		fi
+        ],
+        [want_boost="yes"]
+	)
+
+	if test "x$want_boost" = "xyes"; then
+        AC_REQUIRE([AC_PROG_CC])
+	    export want_boost
+		CPPFLAGS_SAVED="$CPPFLAGS"
+		CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+		export CPPFLAGS
+		LDFLAGS_SAVED="$LDFLAGS"
+		LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+		export LDFLAGS
+		AC_CACHE_CHECK([whether the Boost::Program_Options library is available],
+					   ax_cv_boost_program_options,
+					   [AC_LANG_PUSH(C++)
+				AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/program_options.hpp>
+                                                          ]],
+                                  [[boost::program_options::options_description generic("Generic options");
+                                   return 0;]])],
+                           ax_cv_boost_program_options=yes, ax_cv_boost_program_options=no)
+					AC_LANG_POP([C++])
+		])
+		if test "$ax_cv_boost_program_options" = yes; then
+				AC_DEFINE(HAVE_BOOST_PROGRAM_OPTIONS,,[define if the Boost::PROGRAM_OPTIONS library is available])
+                  BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
+                if test "x$ax_boost_user_program_options_lib" = "x"; then
+                for libextension in `ls $BOOSTLIBDIR/libboost_program_options*.so* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_program_options.*\)\.so.*$;\1;'` `ls $BOOSTLIBDIR/libboost_program_options*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_program_options.*\)\.a*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    AC_CHECK_LIB($ax_lib, exit,
+                                 [BOOST_PROGRAM_OPTIONS_LIB="-l$ax_lib"; AC_SUBST(BOOST_PROGRAM_OPTIONS_LIB) link_program_options="yes"; break],
+                                 [link_program_options="no"])
+				done
+                if test "x$link_program_options" != "xyes"; then
+                for libextension in `ls $BOOSTLIBDIR/boost_program_options*.dll* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_program_options.*\)\.dll.*$;\1;'` `ls $BOOSTLIBDIR/boost_program_options*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_program_options.*\)\.a*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    AC_CHECK_LIB($ax_lib, exit,
+                                 [BOOST_PROGRAM_OPTIONS_LIB="-l$ax_lib"; AC_SUBST(BOOST_PROGRAM_OPTIONS_LIB) link_program_options="yes"; break],
+                                 [link_program_options="no"])
+				done
+                fi
+                else
+                  for ax_lib in $ax_boost_user_program_options_lib boost_program_options-$ax_boost_user_program_options_lib; do
+				      AC_CHECK_LIB($ax_lib, main,
+                                   [BOOST_PROGRAM_OPTIONS_LIB="-l$ax_lib"; AC_SUBST(BOOST_PROGRAM_OPTIONS_LIB) link_program_options="yes"; break],
+                                   [link_program_options="no"])
+                  done
+                fi
+            if test "x$ax_lib" = "x"; then
+                AC_MSG_ERROR(Could not find a version of the library!)
+            fi
+				if test "x$link_program_options" != "xyes"; then
+					AC_MSG_ERROR([Could not link against [$ax_lib] !])
+				fi
+		fi
+		CPPFLAGS="$CPPFLAGS_SAVED"
+	LDFLAGS="$LDFLAGS_SAVED"
+	fi
+])
+
+# ===========================================================================
+#      http://www.gnu.org/software/autoconf-archive/ax_boost_regex.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_BOOST_REGEX
+#
+# DESCRIPTION
+#
+#   Test for Regex library from the Boost C++ libraries. The macro requires
+#   a preceding call to AX_BOOST_BASE. Further documentation is available at
+#   <http://randspringer.de/boost/index.html>.
+#
+#   This macro calls:
+#
+#     AC_SUBST(BOOST_REGEX_LIB)
+#
+#   And sets:
+#
+#     HAVE_BOOST_REGEX
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Thomas Porschberg <thomas@randspringer.de>
+#   Copyright (c) 2008 Michael Tindal
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 20
+
+AC_DEFUN([AX_BOOST_REGEX],
+[
+	AC_ARG_WITH([boost-regex],
+	AS_HELP_STRING([--with-boost-regex@<:@=special-lib@:>@],
+                   [use the Regex library from boost - it is possible to specify a certain library for the linker
+                        e.g. --with-boost-regex=boost_regex-gcc-mt-d-1_33_1 ]),
+        [
+        if test "$withval" = "no"; then
+			want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_regex_lib=""
+        else
+		    want_boost="yes"
+		ax_boost_user_regex_lib="$withval"
+		fi
+        ],
+        [want_boost="yes"]
+	)
+
+	if test "x$want_boost" = "xyes"; then
+        AC_REQUIRE([AC_PROG_CC])
+		CPPFLAGS_SAVED="$CPPFLAGS"
+		CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+		export CPPFLAGS
+
+		LDFLAGS_SAVED="$LDFLAGS"
+		LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+		export LDFLAGS
+
+        AC_CACHE_CHECK(whether the Boost::Regex library is available,
+					   ax_cv_boost_regex,
+        [AC_LANG_PUSH([C++])
+			 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/regex.hpp>
+												]],
+                                   [[boost::regex r(); return 0;]])],
+                   ax_cv_boost_regex=yes, ax_cv_boost_regex=no)
+         AC_LANG_POP([C++])
+		])
+		if test "x$ax_cv_boost_regex" = "xyes"; then
+			AC_DEFINE(HAVE_BOOST_REGEX,,[define if the Boost::Regex library is available])
+            BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
+            if test "x$ax_boost_user_regex_lib" = "x"; then
+                for libextension in `ls $BOOSTLIBDIR/libboost_regex*.so* $BOOSTLIBDIR/libboost_regex*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_regex.*\)\.so.*$;\1;' -e 's;^lib\(boost_regex.*\)\.a*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    AC_CHECK_LIB($ax_lib, exit,
+                                 [BOOST_REGEX_LIB="-l$ax_lib"; AC_SUBST(BOOST_REGEX_LIB) link_regex="yes"; break],
+                                 [link_regex="no"])
+				done
+                if test "x$link_regex" != "xyes"; then
+                for libextension in `ls $BOOSTLIBDIR/boost_regex*.{dll,a}* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_regex.*\)\.dll.*$;\1;' -e 's;^\(boost_regex.*\)\.a*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    AC_CHECK_LIB($ax_lib, exit,
+                                 [BOOST_REGEX_LIB="-l$ax_lib"; AC_SUBST(BOOST_REGEX_LIB) link_regex="yes"; break],
+                                 [link_regex="no"])
+				done
+                fi
+
+            else
+               for ax_lib in $ax_boost_user_regex_lib boost_regex-$ax_boost_user_regex_lib; do
+				      AC_CHECK_LIB($ax_lib, main,
+                                   [BOOST_REGEX_LIB="-l$ax_lib"; AC_SUBST(BOOST_REGEX_LIB) link_regex="yes"; break],
+                                   [link_regex="no"])
+               done
+            fi
+            if test "x$ax_lib" = "x"; then
+                AC_MSG_ERROR(Could not find a version of the Boost::Regex library!)
+            fi
+			if test "x$link_regex" != "xyes"; then
+				AC_MSG_ERROR(Could not link against $ax_lib !)
+			fi
+		fi
+
+		CPPFLAGS="$CPPFLAGS_SAVED"
+	LDFLAGS="$LDFLAGS_SAVED"
+	fi
+])
+
+# ===========================================================================
+#      http://www.gnu.org/software/autoconf-archive/ax_boost_system.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_BOOST_SYSTEM
+#
+# DESCRIPTION
+#
+#   Test for System library from the Boost C++ libraries. The macro requires
+#   a preceding call to AX_BOOST_BASE. Further documentation is available at
+#   <http://randspringer.de/boost/index.html>.
+#
+#   This macro calls:
+#
+#     AC_SUBST(BOOST_SYSTEM_LIB)
+#
+#   And sets:
+#
+#     HAVE_BOOST_SYSTEM
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Thomas Porschberg <thomas@randspringer.de>
+#   Copyright (c) 2008 Michael Tindal
+#   Copyright (c) 2008 Daniel Casimiro <dan.casimiro@gmail.com>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 14
+
+AC_DEFUN([AX_BOOST_SYSTEM],
+[
+	AC_ARG_WITH([boost-system],
+	AS_HELP_STRING([--with-boost-system@<:@=special-lib@:>@],
+                   [use the System library from boost - it is possible to specify a certain library for the linker
+                        e.g. --with-boost-system=boost_system-gcc-mt ]),
+        [
+        if test "$withval" = "no"; then
+			want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_system_lib=""
+        else
+		    want_boost="yes"
+		ax_boost_user_system_lib="$withval"
+		fi
+        ],
+        [want_boost="yes"]
+	)
+
+	if test "x$want_boost" = "xyes"; then
+        AC_REQUIRE([AC_PROG_CC])
+        AC_REQUIRE([AC_CANONICAL_BUILD])
+		CPPFLAGS_SAVED="$CPPFLAGS"
+		CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+		export CPPFLAGS
+
+		LDFLAGS_SAVED="$LDFLAGS"
+		LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+		export LDFLAGS
+
+        AC_CACHE_CHECK(whether the Boost::System library is available,
+					   ax_cv_boost_system,
+        [AC_LANG_PUSH([C++])
+			 CXXFLAGS_SAVE=$CXXFLAGS
+
+			 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/system/error_code.hpp>]],
+                                   [[boost::system::system_category]])],
+                   ax_cv_boost_system=yes, ax_cv_boost_system=no)
+			 CXXFLAGS=$CXXFLAGS_SAVE
+             AC_LANG_POP([C++])
+		])
+		if test "x$ax_cv_boost_system" = "xyes"; then
+			AC_SUBST(BOOST_CPPFLAGS)
+
+			AC_DEFINE(HAVE_BOOST_SYSTEM,,[define if the Boost::System library is available])
+            BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
+
+			LDFLAGS_SAVE=$LDFLAGS
+            if test "x$ax_boost_user_system_lib" = "x"; then
+                for libextension in `ls $BOOSTLIBDIR/libboost_system*.so* $BOOSTLIBDIR/libboost_system*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_system.*\)\.so.*$;\1;' -e 's;^lib\(boost_system.*\)\.a*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    AC_CHECK_LIB($ax_lib, exit,
+                                 [BOOST_SYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_SYSTEM_LIB) link_system="yes"; break],
+                                 [link_system="no"])
+				done
+                if test "x$link_system" != "xyes"; then
+                for libextension in `ls $BOOSTLIBDIR/boost_system*.{dll,a}* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_system.*\)\.dll.*$;\1;' -e 's;^\(boost_system.*\)\.a*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    AC_CHECK_LIB($ax_lib, exit,
+                                 [BOOST_SYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_SYSTEM_LIB) link_system="yes"; break],
+                                 [link_system="no"])
+				done
+                fi
+
+            else
+               for ax_lib in $ax_boost_user_system_lib boost_system-$ax_boost_user_system_lib; do
+				      AC_CHECK_LIB($ax_lib, exit,
+                                   [BOOST_SYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_SYSTEM_LIB) link_system="yes"; break],
+                                   [link_system="no"])
+                  done
+
+            fi
+            if test "x$ax_lib" = "x"; then
+                AC_MSG_ERROR(Could not find a version of the library!)
+            fi
+			if test "x$link_system" = "xno"; then
+				AC_MSG_ERROR(Could not link against $ax_lib !)
+			fi
+		fi
+
+		CPPFLAGS="$CPPFLAGS_SAVED"
+	LDFLAGS="$LDFLAGS_SAVED"
+	fi
+])
+
+# ===========================================================================
+#      http://www.gnu.org/software/autoconf-archive/ax_boost_thread.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_BOOST_THREAD
+#
+# DESCRIPTION
+#
+#   Test for Thread library from the Boost C++ libraries. The macro requires
+#   a preceding call to AX_BOOST_BASE. Further documentation is available at
+#   <http://randspringer.de/boost/index.html>.
+#
+#   This macro calls:
+#
+#     AC_SUBST(BOOST_THREAD_LIB)
+#
+#   And sets:
+#
+#     HAVE_BOOST_THREAD
+#
+# LICENSE
+#
+#   Copyright (c) 2009 Thomas Porschberg <thomas@randspringer.de>
+#   Copyright (c) 2009 Michael Tindal
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 23
+
+AC_DEFUN([AX_BOOST_THREAD],
+[
+	AC_ARG_WITH([boost-thread],
+	AS_HELP_STRING([--with-boost-thread@<:@=special-lib@:>@],
+                   [use the Thread library from boost - it is possible to specify a certain library for the linker
+                        e.g. --with-boost-thread=boost_thread-gcc-mt ]),
+        [
+        if test "$withval" = "no"; then
+			want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_thread_lib=""
+        else
+		    want_boost="yes"
+		ax_boost_user_thread_lib="$withval"
+		fi
+        ],
+        [want_boost="yes"]
+	)
+
+	if test "x$want_boost" = "xyes"; then
+        AC_REQUIRE([AC_PROG_CC])
+        AC_REQUIRE([AC_CANONICAL_BUILD])
+		CPPFLAGS_SAVED="$CPPFLAGS"
+		CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+		export CPPFLAGS
+
+		LDFLAGS_SAVED="$LDFLAGS"
+		LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+		export LDFLAGS
+
+        AC_CACHE_CHECK(whether the Boost::Thread library is available,
+					   ax_cv_boost_thread,
+        [AC_LANG_PUSH([C++])
+			 CXXFLAGS_SAVE=$CXXFLAGS
+
+			 if test "x$host_os" = "xsolaris" ; then
+				 CXXFLAGS="-pthreads $CXXFLAGS"
+			 elif test "x$host_os" = "xmingw32" ; then
+				 CXXFLAGS="-mthreads $CXXFLAGS"
+			 else
+				CXXFLAGS="-pthread $CXXFLAGS"
+			 fi
+			 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/thread/thread.hpp>]],
+                                   [[boost::thread_group thrds;
+                                   return 0;]])],
+                   ax_cv_boost_thread=yes, ax_cv_boost_thread=no)
+			 CXXFLAGS=$CXXFLAGS_SAVE
+             AC_LANG_POP([C++])
+		])
+		if test "x$ax_cv_boost_thread" = "xyes"; then
+           if test "x$host_os" = "xsolaris" ; then
+			  BOOST_CPPFLAGS="-pthreads $BOOST_CPPFLAGS"
+		   elif test "x$host_os" = "xmingw32" ; then
+			  BOOST_CPPFLAGS="-mthreads $BOOST_CPPFLAGS"
+		   else
+			  BOOST_CPPFLAGS="-pthread $BOOST_CPPFLAGS"
+		   fi
+
+			AC_SUBST(BOOST_CPPFLAGS)
+
+			AC_DEFINE(HAVE_BOOST_THREAD,,[define if the Boost::Thread library is available])
+            BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
+
+			LDFLAGS_SAVE=$LDFLAGS
+                        case "x$host_os" in
+                          *bsd* )
+                               LDFLAGS="-pthread $LDFLAGS"
+                          break;
+                          ;;
+                        esac
+            if test "x$ax_boost_user_thread_lib" = "x"; then
+                for libextension in `ls $BOOSTLIBDIR/libboost_thread*.so* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_thread.*\)\.so.*$;\1;'` `ls $BOOSTLIBDIR/libboost_thread*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_thread.*\)\.a*$;\1;'`; do
+                     ax_lib=${libextension}
+				    AC_CHECK_LIB($ax_lib, exit,
+                                 [BOOST_THREAD_LIB="-l$ax_lib"; AC_SUBST(BOOST_THREAD_LIB) link_thread="yes"; break],
+                                 [link_thread="no"])
+				done
+                if test "x$link_thread" != "xyes"; then
+                for libextension in `ls $BOOSTLIBDIR/boost_thread*.dll* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_thread.*\)\.dll.*$;\1;'` `ls $BOOSTLIBDIR/boost_thread*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_thread.*\)\.a*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    AC_CHECK_LIB($ax_lib, exit,
+                                 [BOOST_THREAD_LIB="-l$ax_lib"; AC_SUBST(BOOST_THREAD_LIB) link_thread="yes"; break],
+                                 [link_thread="no"])
+				done
+                fi
+
+            else
+               for ax_lib in $ax_boost_user_thread_lib boost_thread-$ax_boost_user_thread_lib; do
+				      AC_CHECK_LIB($ax_lib, exit,
+                                   [BOOST_THREAD_LIB="-l$ax_lib"; AC_SUBST(BOOST_THREAD_LIB) link_thread="yes"; break],
+                                   [link_thread="no"])
+                  done
+
+            fi
+            if test "x$ax_lib" = "x"; then
+                AC_MSG_ERROR(Could not find a version of the library!)
+            fi
+			if test "x$link_thread" = "xno"; then
+				AC_MSG_ERROR(Could not link against $ax_lib !)
+                        else
+                           case "x$host_os" in
+                              *bsd* )
+				BOOST_LDFLAGS="-pthread $BOOST_LDFLAGS"
+                              break;
+                              ;;
+                           esac
+
+			fi
+		fi
+
+		CPPFLAGS="$CPPFLAGS_SAVED"
+	LDFLAGS="$LDFLAGS_SAVED"
+	fi
+])
+
+# ===========================================================================
+#      http://www.gnu.org/software/autoconf-archive/ax_prog_doxygen.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   DX_INIT_DOXYGEN(PROJECT-NAME, DOXYFILE-PATH, [OUTPUT-DIR])
+#   DX_DOXYGEN_FEATURE(ON|OFF)
+#   DX_DOT_FEATURE(ON|OFF)
+#   DX_HTML_FEATURE(ON|OFF)
+#   DX_CHM_FEATURE(ON|OFF)
+#   DX_CHI_FEATURE(ON|OFF)
+#   DX_MAN_FEATURE(ON|OFF)
+#   DX_RTF_FEATURE(ON|OFF)
+#   DX_XML_FEATURE(ON|OFF)
+#   DX_PDF_FEATURE(ON|OFF)
+#   DX_PS_FEATURE(ON|OFF)
+#
+# DESCRIPTION
+#
+#   The DX_*_FEATURE macros control the default setting for the given
+#   Doxygen feature. Supported features are 'DOXYGEN' itself, 'DOT' for
+#   generating graphics, 'HTML' for plain HTML, 'CHM' for compressed HTML
+#   help (for MS users), 'CHI' for generating a seperate .chi file by the
+#   .chm file, and 'MAN', 'RTF', 'XML', 'PDF' and 'PS' for the appropriate
+#   output formats. The environment variable DOXYGEN_PAPER_SIZE may be
+#   specified to override the default 'a4wide' paper size.
+#
+#   By default, HTML, PDF and PS documentation is generated as this seems to
+#   be the most popular and portable combination. MAN pages created by
+#   Doxygen are usually problematic, though by picking an appropriate subset
+#   and doing some massaging they might be better than nothing. CHM and RTF
+#   are specific for MS (note that you can't generate both HTML and CHM at
+#   the same time). The XML is rather useless unless you apply specialized
+#   post-processing to it.
+#
+#   The macros mainly control the default state of the feature. The use can
+#   override the default by specifying --enable or --disable. The macros
+#   ensure that contradictory flags are not given (e.g.,
+#   --enable-doxygen-html and --enable-doxygen-chm,
+#   --enable-doxygen-anything with --disable-doxygen, etc.) Finally, each
+#   feature will be automatically disabled (with a warning) if the required
+#   programs are missing.
+#
+#   Once all the feature defaults have been specified, call DX_INIT_DOXYGEN
+#   with the following parameters: a one-word name for the project for use
+#   as a filename base etc., an optional configuration file name (the
+#   default is 'Doxyfile', the same as Doxygen's default), and an optional
+#   output directory name (the default is 'doxygen-doc').
+#
+#   Automake Support
+#
+#   The following is a template aminclude.am file for use with Automake.
+#   Make targets and variables values are controlled by the various
+#   DX_COND_* conditionals set by autoconf.
+#
+#   The provided targets are:
+#
+#     doxygen-doc: Generate all doxygen documentation.
+#
+#     doxygen-run: Run doxygen, which will generate some of the
+#                  documentation (HTML, CHM, CHI, MAN, RTF, XML)
+#                  but will not do the post processing required
+#                  for the rest of it (PS, PDF, and some MAN).
+#
+#     doxygen-man: Rename some doxygen generated man pages.
+#
+#     doxygen-ps:  Generate doxygen PostScript documentation.
+#
+#     doxygen-pdf: Generate doxygen PDF documentation.
+#
+#   Note that by default these are not integrated into the automake targets.
+#   If doxygen is used to generate man pages, you can achieve this
+#   integration by setting man3_MANS to the list of man pages generated and
+#   then adding the dependency:
+#
+#     $(man3_MANS): doxygen-doc
+#
+#   This will cause make to run doxygen and generate all the documentation.
+#
+#   The following variable is intended for use in Makefile.am:
+#
+#     DX_CLEANFILES = everything to clean.
+#
+#   Then add this variable to MOSTLYCLEANFILES.
+#
+#     ----- begin aminclude.am -------------------------------------
+#
+#     ## --------------------------------- ##
+#     ## Format-independent Doxygen rules. ##
+#     ## --------------------------------- ##
+#
+#     if DX_COND_doc
+#
+#     ## ------------------------------- ##
+#     ## Rules specific for HTML output. ##
+#     ## ------------------------------- ##
+#
+#     if DX_COND_html
+#
+#     DX_CLEAN_HTML = @DX_DOCDIR@/html
+#
+#     endif DX_COND_html
+#
+#     ## ------------------------------ ##
+#     ## Rules specific for CHM output. ##
+#     ## ------------------------------ ##
+#
+#     if DX_COND_chm
+#
+#     DX_CLEAN_CHM = @DX_DOCDIR@/chm
+#
+#     if DX_COND_chi
+#
+#     DX_CLEAN_CHI = @DX_DOCDIR@/@PACKAGE@.chi
+#
+#     endif DX_COND_chi
+#
+#     endif DX_COND_chm
+#
+#     ## ------------------------------ ##
+#     ## Rules specific for MAN output. ##
+#     ## ------------------------------ ##
+#
+#     if DX_COND_man
+#
+#     DX_CLEAN_MAN = @DX_DOCDIR@/man
+#
+#     endif DX_COND_man
+#
+#     ## ------------------------------ ##
+#     ## Rules specific for RTF output. ##
+#     ## ------------------------------ ##
+#
+#     if DX_COND_rtf
+#
+#     DX_CLEAN_RTF = @DX_DOCDIR@/rtf
+#
+#     endif DX_COND_rtf
+#
+#     ## ------------------------------ ##
+#     ## Rules specific for XML output. ##
+#     ## ------------------------------ ##
+#
+#     if DX_COND_xml
+#
+#     DX_CLEAN_XML = @DX_DOCDIR@/xml
+#
+#     endif DX_COND_xml
+#
+#     ## ----------------------------- ##
+#     ## Rules specific for PS output. ##
+#     ## ----------------------------- ##
+#
+#     if DX_COND_ps
+#
+#     DX_CLEAN_PS = @DX_DOCDIR@/@PACKAGE@.ps
+#
+#     DX_PS_GOAL = doxygen-ps
+#
+#     doxygen-ps: @DX_DOCDIR@/@PACKAGE@.ps
+#
+#     @DX_DOCDIR@/@PACKAGE@.ps: @DX_DOCDIR@/@PACKAGE@.tag
+#         cd @DX_DOCDIR@/latex; \
+#         rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \
+#         $(DX_LATEX) refman.tex; \
+#         $(MAKEINDEX_PATH) refman.idx; \
+#         $(DX_LATEX) refman.tex; \
+#         countdown=5; \
+#         while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \
+#                           refman.log > /dev/null 2>&1 \
+#            && test $$countdown -gt 0; do \
+#             $(DX_LATEX) refman.tex; \
+#             countdown=`expr $$countdown - 1`; \
+#         done; \
+#         $(DX_DVIPS) -o ../@PACKAGE@.ps refman.dvi
+#
+#     endif DX_COND_ps
+#
+#     ## ------------------------------ ##
+#     ## Rules specific for PDF output. ##
+#     ## ------------------------------ ##
+#
+#     if DX_COND_pdf
+#
+#     DX_CLEAN_PDF = @DX_DOCDIR@/@PACKAGE@.pdf
+#
+#     DX_PDF_GOAL = doxygen-pdf
+#
+#     doxygen-pdf: @DX_DOCDIR@/@PACKAGE@.pdf
+#
+#     @DX_DOCDIR@/@PACKAGE@.pdf: @DX_DOCDIR@/@PACKAGE@.tag
+#         cd @DX_DOCDIR@/latex; \
+#         rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \
+#         $(DX_PDFLATEX) refman.tex; \
+#         $(DX_MAKEINDEX) refman.idx; \
+#         $(DX_PDFLATEX) refman.tex; \
+#         countdown=5; \
+#         while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \
+#                           refman.log > /dev/null 2>&1 \
+#            && test $$countdown -gt 0; do \
+#             $(DX_PDFLATEX) refman.tex; \
+#             countdown=`expr $$countdown - 1`; \
+#         done; \
+#         mv refman.pdf ../@PACKAGE@.pdf
+#
+#     endif DX_COND_pdf
+#
+#     ## ------------------------------------------------- ##
+#     ## Rules specific for LaTeX (shared for PS and PDF). ##
+#     ## ------------------------------------------------- ##
+#
+#     if DX_COND_latex
+#
+#     DX_CLEAN_LATEX = @DX_DOCDIR@/latex
+#
+#     endif DX_COND_latex
+#
+#     .PHONY: doxygen-run doxygen-doc $(DX_PS_GOAL) $(DX_PDF_GOAL)
+#
+#     .INTERMEDIATE: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL)
+#
+#     doxygen-run: @DX_DOCDIR@/@PACKAGE@.tag
+#
+#     doxygen-doc: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL)
+#
+#     @DX_DOCDIR@/@PACKAGE@.tag: $(DX_CONFIG) $(pkginclude_HEADERS)
+#         rm -rf @DX_DOCDIR@
+#         $(DX_ENV) $(DX_DOXYGEN) $(srcdir)/$(DX_CONFIG)
+#
+#     DX_CLEANFILES = \
+#         @DX_DOCDIR@/@PACKAGE@.tag \
+#         -r \
+#         $(DX_CLEAN_HTML) \
+#         $(DX_CLEAN_CHM) \
+#         $(DX_CLEAN_CHI) \
+#         $(DX_CLEAN_MAN) \
+#         $(DX_CLEAN_RTF) \
+#         $(DX_CLEAN_XML) \
+#         $(DX_CLEAN_PS) \
+#         $(DX_CLEAN_PDF) \
+#         $(DX_CLEAN_LATEX)
+#
+#     endif DX_COND_doc
+#
+#     ----- end aminclude.am ---------------------------------------
+#
+# LICENSE
+#
+#   Copyright (c) 2009 Oren Ben-Kiki <oren@ben-kiki.org>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 12
+
+
+DX_ENV=""
+AC_DEFUN([DX_FEATURE_doc],  ON)
+AC_DEFUN([DX_FEATURE_dot],  OFF)
+AC_DEFUN([DX_FEATURE_man],  OFF)
+AC_DEFUN([DX_FEATURE_html], ON)
+AC_DEFUN([DX_FEATURE_chm],  OFF)
+AC_DEFUN([DX_FEATURE_chi],  OFF)
+AC_DEFUN([DX_FEATURE_rtf],  OFF)
+AC_DEFUN([DX_FEATURE_xml],  OFF)
+AC_DEFUN([DX_FEATURE_pdf],  ON)
+AC_DEFUN([DX_FEATURE_ps],   ON)
+
+
+# DX_ENV_APPEND(VARIABLE, VALUE)
+# ------------------------------
+# Append VARIABLE="VALUE" to DX_ENV for invoking doxygen.
+AC_DEFUN([DX_ENV_APPEND], [AC_SUBST([DX_ENV], ["$DX_ENV $1='$2'"])])
+
+# DX_DIRNAME_EXPR
+# ---------------
+# Expand into a shell expression prints the directory part of a path.
+AC_DEFUN([DX_DIRNAME_EXPR],
+         [[expr ".$1" : '\(\.\)[^/]*$' \| "x$1" : 'x\(.*\)/[^/]*$']])
+
+# DX_IF_FEATURE(FEATURE, IF-ON, IF-OFF)
+# -------------------------------------
+# Expands according to the M4 (static) status of the feature.
+AC_DEFUN([DX_IF_FEATURE], [ifelse(DX_FEATURE_$1, ON, [$2], [$3])])
+
+# DX_REQUIRE_PROG(VARIABLE, PROGRAM)
+# ----------------------------------
+# Require the specified program to be found for the DX_CURRENT_FEATURE to work.
+AC_DEFUN([DX_REQUIRE_PROG], [
+AC_PATH_TOOL([$1], [$2])
+if test "$DX_FLAG_[]DX_CURRENT_FEATURE$$1" = 1; then
+    AC_MSG_WARN([$2 not found - will not DX_CURRENT_DESCRIPTION])
+    AC_SUBST(DX_FLAG_[]DX_CURRENT_FEATURE, 0)
+fi
+])
+
+# DX_TEST_FEATURE(FEATURE)
+# ------------------------
+# Expand to a shell expression testing whether the feature is active.
+AC_DEFUN([DX_TEST_FEATURE], [test "$DX_FLAG_$1" = 1])
+
+# DX_CHECK_DEPEND(REQUIRED_FEATURE, REQUIRED_STATE)
+# -------------------------------------------------
+# Verify that a required features has the right state before trying to turn on
+# the DX_CURRENT_FEATURE.
+AC_DEFUN([DX_CHECK_DEPEND], [
+test "$DX_FLAG_$1" = "$2" \
+|| AC_MSG_ERROR([doxygen-DX_CURRENT_FEATURE ifelse([$2], 1,
+                            requires, contradicts) doxygen-DX_CURRENT_FEATURE])
+])
+
+# DX_CLEAR_DEPEND(FEATURE, REQUIRED_FEATURE, REQUIRED_STATE)
+# ----------------------------------------------------------
+# Turn off the DX_CURRENT_FEATURE if the required feature is off.
+AC_DEFUN([DX_CLEAR_DEPEND], [
+test "$DX_FLAG_$1" = "$2" || AC_SUBST(DX_FLAG_[]DX_CURRENT_FEATURE, 0)
+])
+
+# DX_FEATURE_ARG(FEATURE, DESCRIPTION,
+#                CHECK_DEPEND, CLEAR_DEPEND,
+#                REQUIRE, DO-IF-ON, DO-IF-OFF)
+# --------------------------------------------
+# Parse the command-line option controlling a feature. CHECK_DEPEND is called
+# if the user explicitly turns the feature on (and invokes DX_CHECK_DEPEND),
+# otherwise CLEAR_DEPEND is called to turn off the default state if a required
+# feature is disabled (using DX_CLEAR_DEPEND). REQUIRE performs additional
+# requirement tests (DX_REQUIRE_PROG). Finally, an automake flag is set and
+# DO-IF-ON or DO-IF-OFF are called according to the final state of the feature.
+AC_DEFUN([DX_ARG_ABLE], [
+    AC_DEFUN([DX_CURRENT_FEATURE], [$1])
+    AC_DEFUN([DX_CURRENT_DESCRIPTION], [$2])
+    AC_ARG_ENABLE(doxygen-$1,
+                  [AS_HELP_STRING(DX_IF_FEATURE([$1], [--disable-doxygen-$1],
+                                                      [--enable-doxygen-$1]),
+                                  DX_IF_FEATURE([$1], [don't $2], [$2]))],
+                  [
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    AC_SUBST([DX_FLAG_$1], 1)
+    $3
+;; #(
+n|N|no|No|NO)
+    AC_SUBST([DX_FLAG_$1], 0)
+;; #(
+*)
+    AC_MSG_ERROR([invalid value '$enableval' given to doxygen-$1])
+;;
+esac
+], [
+AC_SUBST([DX_FLAG_$1], [DX_IF_FEATURE([$1], 1, 0)])
+$4
+])
+if DX_TEST_FEATURE([$1]); then
+    $5
+    :
+fi
+AM_CONDITIONAL(DX_COND_$1, DX_TEST_FEATURE([$1]))
+if DX_TEST_FEATURE([$1]); then
+    $6
+    :
+else
+    $7
+    :
+fi
+])
+
+
+# DX_XXX_FEATURE(DEFAULT_STATE)
+# -----------------------------
+AC_DEFUN([DX_DOXYGEN_FEATURE], [AC_DEFUN([DX_FEATURE_doc],  [$1])])
+AC_DEFUN([DX_DOT_FEATURE],     [AC_DEFUN([DX_FEATURE_dot], [$1])])
+AC_DEFUN([DX_MAN_FEATURE],     [AC_DEFUN([DX_FEATURE_man],  [$1])])
+AC_DEFUN([DX_HTML_FEATURE],    [AC_DEFUN([DX_FEATURE_html], [$1])])
+AC_DEFUN([DX_CHM_FEATURE],     [AC_DEFUN([DX_FEATURE_chm],  [$1])])
+AC_DEFUN([DX_CHI_FEATURE],     [AC_DEFUN([DX_FEATURE_chi],  [$1])])
+AC_DEFUN([DX_RTF_FEATURE],     [AC_DEFUN([DX_FEATURE_rtf],  [$1])])
+AC_DEFUN([DX_XML_FEATURE],     [AC_DEFUN([DX_FEATURE_xml],  [$1])])
+AC_DEFUN([DX_XML_FEATURE],     [AC_DEFUN([DX_FEATURE_xml],  [$1])])
+AC_DEFUN([DX_PDF_FEATURE],     [AC_DEFUN([DX_FEATURE_pdf],  [$1])])
+AC_DEFUN([DX_PS_FEATURE],      [AC_DEFUN([DX_FEATURE_ps],   [$1])])
+
+# DX_INIT_DOXYGEN(PROJECT, [CONFIG-FILE], [OUTPUT-DOC-DIR])
+# ---------------------------------------------------------
+# PROJECT also serves as the base name for the documentation files.
+# The default CONFIG-FILE is "Doxyfile" and OUTPUT-DOC-DIR is "doxygen-doc".
+AC_DEFUN([DX_INIT_DOXYGEN], [
+
+# Files:
+AC_SUBST([DX_PROJECT], [$1])
+AC_SUBST([DX_CONFIG], [ifelse([$2], [], Doxyfile, [$2])])
+AC_SUBST([DX_DOCDIR], [ifelse([$3], [], doxygen-doc, [$3])])
+
+# Environment variables used inside doxygen.cfg:
+DX_ENV_APPEND(SRCDIR, $srcdir)
+DX_ENV_APPEND(PROJECT, $DX_PROJECT)
+DX_ENV_APPEND(DOCDIR, $DX_DOCDIR)
+DX_ENV_APPEND(VERSION, $PACKAGE_VERSION)
+
+# Doxygen itself:
+DX_ARG_ABLE(doc, [generate any doxygen documentation],
+            [],
+            [],
+            [DX_REQUIRE_PROG([DX_DOXYGEN], doxygen)
+             DX_REQUIRE_PROG([DX_PERL], perl)],
+            [DX_ENV_APPEND(PERL_PATH, $DX_PERL)])
+
+# Dot for graphics:
+DX_ARG_ABLE(dot, [generate graphics for doxygen documentation],
+            [DX_CHECK_DEPEND(doc, 1)],
+            [DX_CLEAR_DEPEND(doc, 1)],
+            [DX_REQUIRE_PROG([DX_DOT], dot)],
+            [DX_ENV_APPEND(HAVE_DOT, YES)
+             DX_ENV_APPEND(DOT_PATH, [`DX_DIRNAME_EXPR($DX_DOT)`])],
+            [DX_ENV_APPEND(HAVE_DOT, NO)])
+
+# Man pages generation:
+DX_ARG_ABLE(man, [generate doxygen manual pages],
+            [DX_CHECK_DEPEND(doc, 1)],
+            [DX_CLEAR_DEPEND(doc, 1)],
+            [],
+            [DX_ENV_APPEND(GENERATE_MAN, YES)],
+            [DX_ENV_APPEND(GENERATE_MAN, NO)])
+
+# RTF file generation:
+DX_ARG_ABLE(rtf, [generate doxygen RTF documentation],
+            [DX_CHECK_DEPEND(doc, 1)],
+            [DX_CLEAR_DEPEND(doc, 1)],
+            [],
+            [DX_ENV_APPEND(GENERATE_RTF, YES)],
+            [DX_ENV_APPEND(GENERATE_RTF, NO)])
+
+# XML file generation:
+DX_ARG_ABLE(xml, [generate doxygen XML documentation],
+            [DX_CHECK_DEPEND(doc, 1)],
+            [DX_CLEAR_DEPEND(doc, 1)],
+            [],
+            [DX_ENV_APPEND(GENERATE_XML, YES)],
+            [DX_ENV_APPEND(GENERATE_XML, NO)])
+
+# (Compressed) HTML help generation:
+DX_ARG_ABLE(chm, [generate doxygen compressed HTML help documentation],
+            [DX_CHECK_DEPEND(doc, 1)],
+            [DX_CLEAR_DEPEND(doc, 1)],
+            [DX_REQUIRE_PROG([DX_HHC], hhc)],
+            [DX_ENV_APPEND(HHC_PATH, $DX_HHC)
+             DX_ENV_APPEND(GENERATE_HTML, YES)
+             DX_ENV_APPEND(GENERATE_HTMLHELP, YES)],
+            [DX_ENV_APPEND(GENERATE_HTMLHELP, NO)])
+
+# Seperate CHI file generation.
+DX_ARG_ABLE(chi, [generate doxygen seperate compressed HTML help index file],
+            [DX_CHECK_DEPEND(chm, 1)],
+            [DX_CLEAR_DEPEND(chm, 1)],
+            [],
+            [DX_ENV_APPEND(GENERATE_CHI, YES)],
+            [DX_ENV_APPEND(GENERATE_CHI, NO)])
+
+# Plain HTML pages generation:
+DX_ARG_ABLE(html, [generate doxygen plain HTML documentation],
+            [DX_CHECK_DEPEND(doc, 1) DX_CHECK_DEPEND(chm, 0)],
+            [DX_CLEAR_DEPEND(doc, 1) DX_CLEAR_DEPEND(chm, 0)],
+            [],
+            [DX_ENV_APPEND(GENERATE_HTML, YES)],
+            [DX_TEST_FEATURE(chm) || DX_ENV_APPEND(GENERATE_HTML, NO)])
+
+# PostScript file generation:
+DX_ARG_ABLE(ps, [generate doxygen PostScript documentation],
+            [DX_CHECK_DEPEND(doc, 1)],
+            [DX_CLEAR_DEPEND(doc, 1)],
+            [DX_REQUIRE_PROG([DX_LATEX], latex)
+             DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex)
+             DX_REQUIRE_PROG([DX_DVIPS], dvips)
+             DX_REQUIRE_PROG([DX_EGREP], egrep)])
+
+# PDF file generation:
+DX_ARG_ABLE(pdf, [generate doxygen PDF documentation],
+            [DX_CHECK_DEPEND(doc, 1)],
+            [DX_CLEAR_DEPEND(doc, 1)],
+            [DX_REQUIRE_PROG([DX_PDFLATEX], pdflatex)
+             DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex)
+             DX_REQUIRE_PROG([DX_EGREP], egrep)])
+
+# LaTeX generation for PS and/or PDF:
+AM_CONDITIONAL(DX_COND_latex, DX_TEST_FEATURE(ps) || DX_TEST_FEATURE(pdf))
+if DX_TEST_FEATURE(ps) || DX_TEST_FEATURE(pdf); then
+    DX_ENV_APPEND(GENERATE_LATEX, YES)
+else
+    DX_ENV_APPEND(GENERATE_LATEX, NO)
+fi
+
+# Paper size for PS and/or PDF:
+AC_ARG_VAR(DOXYGEN_PAPER_SIZE,
+           [a4wide (default), a4, letter, legal or executive])
+case "$DOXYGEN_PAPER_SIZE" in
+#(
+"")
+    AC_SUBST(DOXYGEN_PAPER_SIZE, "")
+;; #(
+a4wide|a4|letter|legal|executive)
+    DX_ENV_APPEND(PAPER_SIZE, $DOXYGEN_PAPER_SIZE)
+;; #(
+*)
+    AC_MSG_ERROR([unknown DOXYGEN_PAPER_SIZE='$DOXYGEN_PAPER_SIZE'])
+;;
+esac
+
+#For debugging:
+#echo DX_FLAG_doc=$DX_FLAG_doc
+#echo DX_FLAG_dot=$DX_FLAG_dot
+#echo DX_FLAG_man=$DX_FLAG_man
+#echo DX_FLAG_html=$DX_FLAG_html
+#echo DX_FLAG_chm=$DX_FLAG_chm
+#echo DX_FLAG_chi=$DX_FLAG_chi
+#echo DX_FLAG_rtf=$DX_FLAG_rtf
+#echo DX_FLAG_xml=$DX_FLAG_xml
+#echo DX_FLAG_pdf=$DX_FLAG_pdf
+#echo DX_FLAG_ps=$DX_FLAG_ps
+#echo DX_ENV=$DX_ENV
+])
+
+# ===========================================================================
+#        http://www.gnu.org/software/autoconf-archive/ax_pthread.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+#
+# DESCRIPTION
+#
+#   This macro figures out how to build C programs using POSIX threads. It
+#   sets the PTHREAD_LIBS output variable to the threads library and linker
+#   flags, and the PTHREAD_CFLAGS output variable to any special C compiler
+#   flags that are needed. (The user can also force certain compiler
+#   flags/libs to be tested by setting these environment variables.)
+#
+#   Also sets PTHREAD_CC to any special C compiler that is needed for
+#   multi-threaded programs (defaults to the value of CC otherwise). (This
+#   is necessary on AIX to use the special cc_r compiler alias.)
+#
+#   NOTE: You are assumed to not only compile your program with these flags,
+#   but also link it with them as well. e.g. you should link with
+#   $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
+#
+#   If you are only building threads programs, you may wish to use these
+#   variables in your default LIBS, CFLAGS, and CC:
+#
+#     LIBS="$PTHREAD_LIBS $LIBS"
+#     CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+#     CC="$PTHREAD_CC"
+#
+#   In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
+#   has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name
+#   (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
+#
+#   Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
+#   PTHREAD_PRIO_INHERIT symbol is defined when compiling with
+#   PTHREAD_CFLAGS.
+#
+#   ACTION-IF-FOUND is a list of shell commands to run if a threads library
+#   is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
+#   is not found. If ACTION-IF-FOUND is not specified, the default action
+#   will define HAVE_PTHREAD.
+#
+#   Please let the authors know if this macro fails on any platform, or if
+#   you have any other suggestions or comments. This macro was based on work
+#   by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
+#   from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
+#   Alejandro Forero Cuervo to the autoconf macro repository. We are also
+#   grateful for the helpful feedback of numerous users.
+#
+#   Updated for Autoconf 2.68 by Daniel Richard G.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
+#   Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG>
+#
+#   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 3 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, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 16
+
+AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
+AC_DEFUN([AX_PTHREAD], [
+AC_REQUIRE([AC_CANONICAL_HOST])
+AC_LANG_PUSH([C])
+ax_pthread_ok=no
+
+# We used to check for pthread.h first, but this fails if pthread.h
+# requires special compiler flags (e.g. on True64 or Sequent).
+# It gets checked for in the link test anyway.
+
+# First of all, check if the user has set any of the PTHREAD_LIBS,
+# etcetera environment variables, and if threads linking works using
+# them:
+if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
+        save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        save_LIBS="$LIBS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
+        AC_TRY_LINK_FUNC(pthread_join, ax_pthread_ok=yes)
+        AC_MSG_RESULT($ax_pthread_ok)
+        if test x"$ax_pthread_ok" = xno; then
+                PTHREAD_LIBS=""
+                PTHREAD_CFLAGS=""
+        fi
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+fi
+
+# We must check for the threads library under a number of different
+# names; the ordering is very important because some systems
+# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
+# libraries is broken (non-POSIX).
+
+# Create a list of thread flags to try.  Items starting with a "-" are
+# C compiler flags, and other items are library names, except for "none"
+# which indicates that we try without any flags at all, and "pthread-config"
+# which is a program returning the flags for the Pth emulation library.
+
+ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+
+# The ordering *is* (sometimes) important.  Some notes on the
+# individual items follow:
+
+# pthreads: AIX (must check this before -lpthread)
+# none: in case threads are in libc; should be tried before -Kthread and
+#       other compiler flags to prevent continual compiler warnings
+# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
+# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
+# -pthreads: Solaris/gcc
+# -mthreads: Mingw32/gcc, Lynx/gcc
+# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
+#      doesn't hurt to check since this sometimes defines pthreads too;
+#      also defines -D_REENTRANT)
+#      ... -mt is also the pthreads flag for HP/aCC
+# pthread: Linux, etcetera
+# --thread-safe: KAI C++
+# pthread-config: use pthread-config program (for GNU Pth library)
+
+case "${host_cpu}-${host_os}" in
+        *solaris*)
+
+        # On Solaris (at least, for some versions), libc contains stubbed
+        # (non-functional) versions of the pthreads routines, so link-based
+        # tests will erroneously succeed.  (We need to link with -pthreads/-mt/
+        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
+        # a function called by this macro, so we could check for that, but
+        # who knows whether they'll stub that too in a future libc.)  So,
+        # we'll just look for -pthreads and -lpthread first:
+
+        ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
+        ;;
+
+        *-darwin*)
+        ax_pthread_flags="-pthread $ax_pthread_flags"
+        ;;
+esac
+
+if test x"$ax_pthread_ok" = xno; then
+for flag in $ax_pthread_flags; do
+
+        case $flag in
+                none)
+                AC_MSG_CHECKING([whether pthreads work without any flags])
+                ;;
+
+                -*)
+                AC_MSG_CHECKING([whether pthreads work with $flag])
+                PTHREAD_CFLAGS="$flag"
+                ;;
+
+                pthread-config)
+                AC_CHECK_PROG(ax_pthread_config, pthread-config, yes, no)
+                if test x"$ax_pthread_config" = xno; then continue; fi
+                PTHREAD_CFLAGS="`pthread-config --cflags`"
+                PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
+                ;;
+
+                *)
+                AC_MSG_CHECKING([for the pthreads library -l$flag])
+                PTHREAD_LIBS="-l$flag"
+                ;;
+        esac
+
+        save_LIBS="$LIBS"
+        save_CFLAGS="$CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+
+        # Check for various functions.  We must include pthread.h,
+        # since some functions may be macros.  (On the Sequent, we
+        # need a special flag -Kthread to make this header compile.)
+        # We check for pthread_join because it is in -lpthread on IRIX
+        # while pthread_create is in libc.  We check for pthread_attr_init
+        # due to DEC craziness with -lpthreads.  We check for
+        # pthread_cleanup_push because it is one of the few pthread
+        # functions on Solaris that doesn't have a non-functional libc stub.
+        # We try pthread_create on general principles.
+        AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
+                        static void routine(void *a) { a = 0; }
+                        static void *start_routine(void *a) { return a; }],
+                       [pthread_t th; pthread_attr_t attr;
+                        pthread_create(&th, 0, start_routine, 0);
+                        pthread_join(th, 0);
+                        pthread_attr_init(&attr);
+                        pthread_cleanup_push(routine, 0);
+                        pthread_cleanup_pop(0) /* ; */])],
+                [ax_pthread_ok=yes],
+                [])
+
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+
+        AC_MSG_RESULT($ax_pthread_ok)
+        if test "x$ax_pthread_ok" = xyes; then
+                break;
+        fi
+
+        PTHREAD_LIBS=""
+        PTHREAD_CFLAGS=""
+done
+fi
+
+# Various other checks:
+if test "x$ax_pthread_ok" = xyes; then
+        save_LIBS="$LIBS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+
+        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
+        AC_MSG_CHECKING([for joinable pthread attribute])
+        attr_name=unknown
+        for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
+            AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
+                           [int attr = $attr; return attr /* ; */])],
+                [attr_name=$attr; break],
+                [])
+        done
+        AC_MSG_RESULT($attr_name)
+        if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
+            AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
+                               [Define to necessary symbol if this constant
+                                uses a non-standard name on your system.])
+        fi
+
+        AC_MSG_CHECKING([if more special flags are required for pthreads])
+        flag=no
+        case "${host_cpu}-${host_os}" in
+            *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";;
+            *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";;
+        esac
+        AC_MSG_RESULT(${flag})
+        if test "x$flag" != xno; then
+            PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
+        fi
+
+        AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
+            ax_cv_PTHREAD_PRIO_INHERIT, [
+                AC_LINK_IFELSE([
+                    AC_LANG_PROGRAM([[#include <pthread.h>]], [[int i = PTHREAD_PRIO_INHERIT;]])],
+                    [ax_cv_PTHREAD_PRIO_INHERIT=yes],
+                    [ax_cv_PTHREAD_PRIO_INHERIT=no])
+            ])
+        AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"],
+            AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.]))
+
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+
+        # More AIX lossage: must compile with xlc_r or cc_r
+        if test x"$GCC" != xyes; then
+          AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC})
+        else
+          PTHREAD_CC=$CC
+        fi
+else
+        PTHREAD_CC="$CC"
+fi
+
+AC_SUBST(PTHREAD_LIBS)
+AC_SUBST(PTHREAD_CFLAGS)
+AC_SUBST(PTHREAD_CC)
+
+# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+if test x"$ax_pthread_ok" = xyes; then
+        ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
+        :
+else
+        ax_pthread_ok=no
+        $2
+fi
+AC_LANG_POP
+])dnl AX_PTHREAD
+
+# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
+# serial 1 (pkg-config-0.24)
+# 
+# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+#
+# 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., 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.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
+m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
+AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
+AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+	AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+	_pkg_min_version=m4_default([$1], [0.9.0])
+	AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+		AC_MSG_RESULT([yes])
+	else
+		AC_MSG_RESULT([no])
+		PKG_CONFIG=""
+	fi
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists.  Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+# only at the first occurence in configure.ac, so if the first place
+# it's called might be skipped (such as if it is within an "if", you
+# have to call PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+  m4_default([$2], [:])
+m4_ifvaln([$3], [else
+  $3])dnl
+fi])
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$$1"; then
+    pkg_cv_[]$1="$$1"
+ elif test -n "$PKG_CONFIG"; then
+    PKG_CHECK_EXISTS([$3],
+                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes ],
+		     [pkg_failed=yes])
+ else
+    pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi[]dnl
+])# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+   	AC_MSG_RESULT([no])
+        _PKG_SHORT_ERRORS_SUPPORTED
+        if test $_pkg_short_errors_supported = yes; then
+	        $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
+        else 
+	        $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+	m4_default([$4], [AC_MSG_ERROR(
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT])[]dnl
+        ])
+elif test $pkg_failed = untried; then
+     	AC_MSG_RESULT([no])
+	m4_default([$4], [AC_MSG_FAILURE(
+[The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
+        ])
+else
+	$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+	$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+        AC_MSG_RESULT([yes])
+	$3
+fi[]dnl
+])# PKG_CHECK_MODULES
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software
+# Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 1
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.11'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version.  Point them to the right macro.
+m4_if([$1], [1.11.3], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too.  Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.11.3])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 1
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_COND_IF                                            -*- Autoconf -*-
+
+# Copyright (C) 2008, 2010 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# _AM_COND_IF
+# _AM_COND_ELSE
+# _AM_COND_ENDIF
+# --------------
+# These macros are only used for tracing.
+m4_define([_AM_COND_IF])
+m4_define([_AM_COND_ELSE])
+m4_define([_AM_COND_ENDIF])
+
+
+# AM_COND_IF(COND, [IF-TRUE], [IF-FALSE])
+# ---------------------------------------
+# If the shell condition COND is true, execute IF-TRUE, otherwise execute
+# IF-FALSE.  Allow automake to learn about conditional instantiating macros
+# (the AC_CONFIG_FOOS).
+AC_DEFUN([AM_COND_IF],
+[m4_ifndef([_AM_COND_VALUE_$1],
+	   [m4_fatal([$0: no such condition "$1"])])dnl
+_AM_COND_IF([$1])dnl
+if test -z "$$1_TRUE"; then :
+  m4_n([$2])[]dnl
+m4_ifval([$3],
+[_AM_COND_ELSE([$1])dnl
+else
+  $3
+])dnl
+_AM_COND_ENDIF([$1])dnl
+fi[]dnl
+])
+
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 9
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+	[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009,
+# 2010, 2011 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 12
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
+       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
+       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
+       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                   [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+
+# Generate code to set up dependency tracking.              -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 5
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named `Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running `make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # When using ansi2knr, U may be empty or an underscore; expand it
+    U=`sed -n 's/^U = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`AS_DIRNAME(["$file"])`
+      AS_MKDIR_P([$dirpart/$fdir])
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake.                             -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 16
+
+# This macro actually does too much.  Some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.62])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+			     [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+		  [_AM_DEPENDENCIES(CC)],
+		  [define([AC_PROG_CC],
+			  defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+		  [_AM_DEPENDENCIES(CXX)],
+		  [define([AC_PROG_CXX],
+			  defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+		  [_AM_DEPENDENCIES(OBJC)],
+		  [define([AC_PROG_OBJC],
+			  defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+])
+
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation,
+# Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 1
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes.	            -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2009  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# AM_PROG_CC_C_O
+# --------------
+# Like AC_PROG_CC_C_O, but changed for automake.
+AC_DEFUN([AM_PROG_CC_C_O],
+[AC_REQUIRE([AC_PROG_CC_C_O])dnl
+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+dnl Make sure AC_PROG_CC is never called again, or it will override our
+dnl setting of CC.
+m4_define([AC_PROG_CC],
+          [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
+])
+
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation,
+# Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 1
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+  [[\\/$]]* | ?:[[\\/]]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling.                     -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software
+# Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# --------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
+    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+   if test "$[*]" = "X"; then
+      # -L didn't work.
+      set X `ls -t "$srcdir/configure" conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$[*]" != "X $srcdir/configure conftest.file" \
+      && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+alias in your environment])
+   fi
+
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2009, 2011  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# (`yes' being less verbose, `no' or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules],
+[  --enable-silent-rules          less verbose build output (undo: `make V=1')
+  --disable-silent-rules         verbose build output (undo: `make V=0')])
+case $enable_silent_rules in
+yes) AM_DEFAULT_VERBOSITY=0;;
+no)  AM_DEFAULT_VERBOSITY=1;;
+*)   AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few `make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+   [am_cv_make_support_nested_variables],
+   [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+  dnl Using `$V' instead of `$(V)' breaks IRIX make.
+  AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 1
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+#     tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+#     $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+m4_if([$1], [v7],
+     [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+     [m4_case([$1], [ustar],, [pax],,
+              [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+  case $_am_tool in
+  gnutar)
+    for _am_tar in tar gnutar gtar;
+    do
+      AM_RUN_LOG([$_am_tar --version]) && break
+    done
+    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+    am__untar="$_am_tar -xf -"
+    ;;
+  plaintar)
+    # Must skip GNU tar: if it does not support --format= it doesn't create
+    # ustar tarball either.
+    (tar --version) >/dev/null 2>&1 && continue
+    am__tar='tar chf - "$$tardir"'
+    am__tar_='tar chf - "$tardir"'
+    am__untar='tar xf -'
+    ;;
+  pax)
+    am__tar='pax -L -x $1 -w "$$tardir"'
+    am__tar_='pax -L -x $1 -w "$tardir"'
+    am__untar='pax -r'
+    ;;
+  cpio)
+    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+    am__untar='cpio -i -H $1 -d'
+    ;;
+  none)
+    am__tar=false
+    am__tar_=false
+    am__untar=false
+    ;;
+  esac
+
+  # If the value was cached, stop now.  We just wanted to have am__tar
+  # and am__untar set.
+  test -n "${am_cv_prog_tar_$1}" && break
+
+  # tar/untar a dummy directory, and stop if the command works
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  echo GrepMe > conftest.dir/file
+  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+  rm -rf conftest.dir
+  if test -s conftest.tar; then
+    AM_RUN_LOG([$am__untar <conftest.tar])
+    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+  fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([.macro_dir/ac_check_class.m4])
+m4_include([.macro_dir/ac_check_cpp.m4])
+m4_include([.macro_dir/ac_check_package.m4])
+m4_include([.macro_dir/ac_check_readline.m4])
+m4_include([.macro_dir/ac_find_motif.m4])
+m4_include([.macro_dir/ax_cxx_compile_stdcxx_0x.m4])
+m4_include([.macro_dir/libtool.m4])
+m4_include([.macro_dir/ltoptions.m4])
+m4_include([.macro_dir/ltsugar.m4])
+m4_include([.macro_dir/ltversion.m4])
+m4_include([.macro_dir/lt~obsolete.m4])
+m4_include([.macro_dir/mysql++_devel.m4])
+m4_include([.macro_dir/mysql_devel.m4])
+m4_include([.macro_dir/qt4_do_it_all.m4])
+m4_include([.macro_dir/root_path.m4])
Index: branches/testFACT++branch/aminclude.am
===================================================================
--- branches/testFACT++branch/aminclude.am	(revision 18277)
+++ branches/testFACT++branch/aminclude.am	(revision 18277)
@@ -0,0 +1,155 @@
+## --------------------------------- ##
+## Format-independent Doxygen rules. ##
+## --------------------------------- ##
+
+if DX_COND_doc
+
+## ------------------------------- ##
+## Rules specific for HTML output. ##
+## ------------------------------- ##
+
+if DX_COND_html
+
+DX_CLEAN_HTML = @DX_DOCDIR@/html
+
+endif DX_COND_html
+
+## ------------------------------ ##
+## Rules specific for CHM output. ##
+## ------------------------------ ##
+
+if DX_COND_chm
+
+DX_CLEAN_CHM = @DX_DOCDIR@/chm
+
+if DX_COND_chi
+
+DX_CLEAN_CHI = @DX_DOCDIR@/@PACKAGE@.chi
+
+endif DX_COND_chi
+
+endif DX_COND_chm
+
+## ------------------------------ ##
+## Rules specific for MAN output. ##
+## ------------------------------ ##
+
+if DX_COND_man
+
+DX_CLEAN_MAN = @DX_DOCDIR@/man
+
+endif DX_COND_man
+
+## ------------------------------ ##
+## Rules specific for RTF output. ##
+## ------------------------------ ##
+
+if DX_COND_rtf
+
+DX_CLEAN_RTF = @DX_DOCDIR@/rtf
+
+endif DX_COND_rtf
+
+## ------------------------------ ##
+## Rules specific for XML output. ##
+## ------------------------------ ##
+
+if DX_COND_xml
+
+DX_CLEAN_XML = @DX_DOCDIR@/xml
+
+endif DX_COND_xml
+
+## ----------------------------- ##
+## Rules specific for PS output. ##
+## ----------------------------- ##
+
+if DX_COND_ps
+
+DX_CLEAN_PS = @DX_DOCDIR@/@PACKAGE@.ps
+
+DX_PS_GOAL = doxygen-ps
+
+doxygen-ps: @DX_DOCDIR@/@PACKAGE@.ps
+
+@DX_DOCDIR@/@PACKAGE@.ps: @DX_DOCDIR@/@PACKAGE@.tag
+	cd @DX_DOCDIR@/latex; \
+	rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \
+	$(DX_LATEX) refman.tex; \
+	$(MAKEINDEX_PATH) refman.idx; \
+	$(DX_LATEX) refman.tex; \
+	countdown=5; \
+	while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \
+               refman.log > /dev/null 2>&1 && test $$countdown -gt 0; \
+	do \
+	   $(DX_LATEX) refman.tex; \
+	   countdown=`expr $$countdown - 1`; \
+	done; \
+	$(DX_DVIPS) -o ../@PACKAGE@.ps refman.dvi
+
+endif DX_COND_ps
+
+## ------------------------------ ##
+## Rules specific for PDF output. ##
+## ------------------------------ ##
+
+if DX_COND_pdf
+
+DX_CLEAN_PDF = @DX_DOCDIR@/@PACKAGE@.pdf
+
+DX_PDF_GOAL = doxygen-pdf
+
+doxygen-pdf: @DX_DOCDIR@/@PACKAGE@.pdf
+
+@DX_DOCDIR@/@PACKAGE@.pdf: @DX_DOCDIR@/@PACKAGE@.tag
+	cd @DX_DOCDIR@/latex; \
+	rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \
+	$(DX_PDFLATEX) refman.tex; \
+	$(DX_MAKEINDEX) refman.idx; \
+	$(DX_PDFLATEX) refman.tex; \
+	countdown=5; \
+	while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \
+		refman.log > /dev/null 2>&1 && test $$countdown -gt 0; \
+	do \
+		$(DX_PDFLATEX) refman.tex; \
+		countdown=`expr $$countdown - 1`; \
+    	done;
+
+endif DX_COND_pdf
+
+## ------------------------------------------------- ##
+## Rules specific for LaTeX (shared for PS and PDF). ##
+## ------------------------------------------------- ##
+
+if DX_COND_latex
+
+DX_CLEAN_LATEX = @DX_DOCDIR@/latex
+
+endif DX_COND_latex
+
+.PHONY: doxygen-run doxygen-doc $(DX_PS_GOAL) $(DX_PDF_GOAL)
+
+.INTERMEDIATE: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL)
+
+doxygen-run: @DX_DOCDIR@/@PACKAGE@.tag
+
+doxygen-doc: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL)
+
+@DX_DOCDIR@/@PACKAGE@.tag: $(DX_CONFIG) $(pkginclude_HEADERS)
+	rm -rf @DX_DOCDIR@
+	$(DX_ENV) $(DX_DOXYGEN) $(srcdir)/$(DX_CONFIG)
+
+DX_CLEANFILES = \
+    @DX_DOCDIR@/@PACKAGE@.tag \
+    -r \
+    $(DX_CLEAN_HTML) \
+    $(DX_CLEAN_CHM) \
+    $(DX_CLEAN_CHI) \
+    $(DX_CLEAN_MAN) \
+    $(DX_CLEAN_RTF) \
+    $(DX_CLEAN_XML) \
+    $(DX_CLEAN_PS) \
+    $(DX_CLEAN_PDF) \
+    $(DX_CLEAN_LATEX)
+
+endif DX_COND_doc
Index: branches/testFACT++branch/autogen.sh
===================================================================
--- branches/testFACT++branch/autogen.sh	(revision 18277)
+++ branches/testFACT++branch/autogen.sh	(revision 18277)
@@ -0,0 +1,6 @@
+#!/bin/sh
+# Consider all files obsolete
+#autoreconf --force --install -I .macro_dir
+
+# Keep existing files - that doesn't overwrite ltmain.sh!
+autoreconf --install -I .macro_dir
Index: branches/testFACT++branch/biasctrl.rc
===================================================================
--- branches/testFACT++branch/biasctrl.rc	(revision 18277)
+++ branches/testFACT++branch/biasctrl.rc	(revision 18277)
@@ -0,0 +1,3 @@
+database=readpo:readc0nf1g@10.0.100.21/programoptions
+console=2
+quiet=yes
Index: branches/testFACT++branch/configure
===================================================================
--- branches/testFACT++branch/configure	(revision 18277)
+++ branches/testFACT++branch/configure	(revision 18277)
@@ -0,0 +1,28271 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.68 for FACT++ 1.0.
+#
+# Report bugs to <thomas.bretz@phys.ethz.ch>.
+#
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+# Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1
+
+  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
+    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+    PATH=/empty FPATH=/empty; export PATH FPATH
+    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
+      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     # Try only shells that exist, to save several forks.
+	     as_shell=$as_dir/$as_base
+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+	   done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  # We cannot yet assume a decent shell, so we have to provide a
+	# neutralization value for shells without unset; and this also
+	# works around shells that cannot unset nonexistent variables.
+	# Preserve -v and -x to the replacement shell.
+	BASH_ENV=/dev/null
+	ENV=/dev/null
+	(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+	export CONFIG_SHELL
+	case $- in # ((((
+	  *v*x* | *x*v* ) as_opts=-vx ;;
+	  *v* ) as_opts=-v ;;
+	  *x* ) as_opts=-x ;;
+	  * ) as_opts= ;;
+	esac
+	exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf@gnu.org and
+$0: thomas.bretz@phys.ethz.ch about your system, including
+$0: any error possibly output before this message. Then
+$0: install a modern shell, or manually run the script
+$0: under such a shell if you do have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+	test -d "$1/.";
+      else
+	case $1 in #(
+	-*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='FACT++'
+PACKAGE_TARNAME='FACTpp'
+PACKAGE_VERSION='1.0'
+PACKAGE_STRING='FACT++ 1.0'
+PACKAGE_BUGREPORT='thomas.bretz@phys.ethz.ch'
+PACKAGE_URL='https://www.fact-project.org/svn/trunk/FACT++/'
+
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+IS_TRUE_FALSE
+IS_TRUE_TRUE
+IS_FALSE_FALSE
+IS_FALSE_TRUE
+HAS_VIEWER_FALSE
+HAS_VIEWER_TRUE
+HAS_GUI_FALSE
+HAS_GUI_TRUE
+HAS_V8_FALSE
+HAS_V8_TRUE
+HAS_DBUS_FALSE
+HAS_DBUS_TRUE
+HAS_NOVA_FALSE
+HAS_NOVA_TRUE
+HAS_QWT_FALSE
+HAS_QWT_TRUE
+HAS_QGL_FALSE
+HAS_QGL_TRUE
+HAS_GLU_FALSE
+HAS_GLU_TRUE
+HAS_GL_FALSE
+HAS_GL_TRUE
+HAS_ZLIB_FALSE
+HAS_ZLIB_TRUE
+HAS_FITS_FALSE
+HAS_FITS_TRUE
+HAS_CCFITS_FALSE
+HAS_CCFITS_TRUE
+HAS_CFITSIO_FALSE
+HAS_CFITSIO_TRUE
+HAS_ROOT_QT_FALSE
+HAS_ROOT_QT_TRUE
+HAS_ROOT_FALSE
+HAS_ROOT_TRUE
+HAS_SQL_FALSE
+HAS_SQL_TRUE
+HAS_QT4_FALSE
+HAS_QT4_TRUE
+HAS_COLORGCC_FALSE
+HAS_COLORGCC_TRUE
+HAS_DOT_FALSE
+HAS_DOT_TRUE
+HAS_DOXYGEN_FALSE
+HAS_DOXYGEN_TRUE
+HAS_MAILX_FALSE
+HAS_MAILX_TRUE
+HAS_JSDOC_FALSE
+HAS_JSDOC_TRUE
+HAS_HELP2MAN_FALSE
+HAS_HELP2MAN_TRUE
+HAS_PS2PDF_FALSE
+HAS_PS2PDF_TRUE
+HAS_GROFF_FALSE
+HAS_GROFF_TRUE
+HAS_COLORDIFF_FALSE
+HAS_COLORDIFF_TRUE
+MAILX
+JSDOC
+HELP2MAN
+PS2PDF
+GROFF
+COLORDIFF
+ROOTLDFLAGS
+ROOTCPPFLAGS
+ROOTSOVERSION
+ROOTVERSION
+ROOTRPATH
+ROOTAUXCFLAGS
+ROOTAUXLIBS
+ROOTGLIBS
+ROOTLIBS
+ROOTCFLAGS
+ROOTINCDIR
+ROOTLIBDIR
+ROOTCINT
+ROOTEXEC
+ROOTCONF
+RCC4
+UIC4
+MOC4
+QT4_LIB
+QT4_VERSION
+QT4_LDFLAGS
+QT4_INCLUDES
+QT4_FRONTEND_LIBS
+QT4_FRONTEND_CFLAGS
+QT4_CORE_LIB
+QT4_CORE_LDFLAGS
+QT4_CORE_INCLUDES
+QT4_CORE_LIBS
+QT4_CORE_CFLAGS
+QT4DIR
+BOOST_THREAD_LIB
+BOOST_REGEX_LIB
+BOOST_PROGRAM_OPTIONS_LIB
+BOOST_FILESYSTEM_LIB
+BOOST_DATE_TIME_LIB
+BOOST_ASIO_LIB
+BOOST_SYSTEM_LIB
+BOOST_LDFLAGS
+BOOST_CPPFLAGS
+MYSQLPP_INC_DIR
+MYSQLPP_LIB_DIR
+MYSQL_C_INC_DIR
+MOTIF_LIBS
+MOTIF_CFLAGS
+MOTIF_INCL
+MOTIF_LDFLAGS
+LT_HAVE_XP
+HAS_LIBXP_FALSE
+HAS_LIBXP_TRUE
+X_EXTRA_LIBS
+X_LIBS
+X_PRE_LIBS
+X_CFLAGS
+XMKMF
+READLINE_INCLUDES
+READLINE_LIBS
+PTHREAD_CFLAGS
+PTHREAD_LIBS
+PTHREAD_CC
+ax_pthread_config
+DOXYGEN_PAPER_SIZE
+DX_COND_latex_FALSE
+DX_COND_latex_TRUE
+DX_COND_pdf_FALSE
+DX_COND_pdf_TRUE
+DX_PDFLATEX
+DX_FLAG_pdf
+DX_COND_ps_FALSE
+DX_COND_ps_TRUE
+DX_EGREP
+DX_DVIPS
+DX_MAKEINDEX
+DX_LATEX
+DX_FLAG_ps
+DX_COND_html_FALSE
+DX_COND_html_TRUE
+DX_FLAG_html
+DX_COND_chi_FALSE
+DX_COND_chi_TRUE
+DX_FLAG_chi
+DX_COND_chm_FALSE
+DX_COND_chm_TRUE
+DX_HHC
+DX_FLAG_chm
+DX_COND_xml_FALSE
+DX_COND_xml_TRUE
+DX_FLAG_xml
+DX_COND_rtf_FALSE
+DX_COND_rtf_TRUE
+DX_FLAG_rtf
+DX_COND_man_FALSE
+DX_COND_man_TRUE
+DX_FLAG_man
+DX_COND_dot_FALSE
+DX_COND_dot_TRUE
+DX_DOT
+DX_FLAG_dot
+DX_COND_doc_FALSE
+DX_COND_doc_TRUE
+DX_PERL
+DX_DOXYGEN
+DX_FLAG_doc
+DX_DOCDIR
+DX_CONFIG
+DX_PROJECT
+DX_ENV
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
+am__fastdepCXX_FALSE
+am__fastdepCXX_TRUE
+CXXDEPMODE
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+am__nodep
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+CXXCPP
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+MANIFEST_TOOL
+AWK
+RANLIB
+STRIP
+ac_ct_AR
+AR
+DLLTOOL
+OBJDUMP
+LN_S
+NM
+ac_ct_DUMPBIN
+DUMPBIN
+LD
+FGREP
+SED
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+LIBTOOL
+DBUS_LIBS
+DBUS_CFLAGS
+PKG_CONFIG_LIBDIR
+PKG_CONFIG_PATH
+PKG_CONFIG
+EGREP
+GREP
+CPP
+ac_ct_CXX
+CXXFLAGS
+CXX
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_optimization
+enable_debug
+enable_static
+enable_shared
+with_pic
+enable_fast_install
+with_gnu_ld
+with_sysroot
+enable_libtool_lock
+enable_dependency_tracking
+enable_silent_rules
+enable_doxygen_doc
+enable_doxygen_dot
+enable_doxygen_man
+enable_doxygen_rtf
+enable_doxygen_xml
+enable_doxygen_chm
+enable_doxygen_chi
+enable_doxygen_html
+enable_doxygen_ps
+enable_doxygen_pdf
+with_readline
+with_x
+with_motif_includes
+with_motif_libraries
+with_zlib
+with_zlib_include
+with_zlib_libdir
+with_GL
+with_GL_include
+with_GL_libdir
+with_GLU
+with_GLU_include
+with_GLU_libdir
+with_nova
+with_nova_include
+with_nova_libdir
+with_cfitsio
+with_cfitsio_include
+with_cfitsio_libdir
+with_ccfits
+with_ccfits_include
+with_ccfits_libdir
+with_mysql_include
+with_mysqlpp
+with_mysqlpp_lib
+with_mysqlpp_include
+with_boost
+with_boost_libdir
+with_boost_system
+with_boost_asio
+with_boost_date_time
+with_boost_filesystem
+with_boost_program_options
+with_boost_regex
+with_boost_thread
+with_v8
+with_v8_include
+with_v8_libdir
+with_qt4
+with_qt4_dir
+with_qt4_includes
+with_qt4_libraries
+with_QGL
+with_QGL_include
+with_QGL_libdir
+with_qwt
+with_qwt_include
+with_qwt_libdir
+with_root
+with_rootsys
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CXX
+CXXFLAGS
+CCC
+CPP
+PKG_CONFIG
+PKG_CONFIG_PATH
+PKG_CONFIG_LIBDIR
+DBUS_CFLAGS
+DBUS_LIBS
+CXXCPP
+DOXYGEN_PAPER_SIZE
+XMKMF
+QT4DIR
+QT4_CORE_CFLAGS
+QT4_CORE_LIBS
+QT4_FRONTEND_CFLAGS
+QT4_FRONTEND_LIBS'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# 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.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+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
+
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -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)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$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 ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$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 ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    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 | -n)
+    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 ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$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_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=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 ;;
+
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_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'`
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+		datadir sysconfdir sharedstatedir localstatedir includedir \
+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+		libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    $as_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
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
+# 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 the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_myself" : 'X\(//\)[^/]' \| \
+	 X"$as_myself" : 'X\(//\)$' \| \
+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  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
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+	pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# 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 <<_ACEOF
+\`configure' configures FACT++ 1.0 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 \`..']
+
+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]
+  --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]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/FACTpp]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+X features:
+  --x-includes=DIR    X include files are in DIR
+  --x-libraries=DIR   X library files are in DIR
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of FACT++ 1.0:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --disable-optimization  Compile with -O0 instead of -O3
+
+  --enable-debug          Compile with debugging symbols (-g)
+
+  --enable-static[=PKGS]  build static libraries [default=no]
+  --enable-shared[=PKGS]  build shared libraries [default=yes]
+  --enable-fast-install[=PKGS]
+                          optimize for fast installation [default=yes]
+  --disable-libtool-lock  avoid locking (might break parallel builds)
+  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors
+  --enable-silent-rules          less verbose build output (undo: `make V=1')
+  --disable-silent-rules         verbose build output (undo: `make V=0')
+  --disable-doxygen-doc   don't generate any doxygen documentation
+  --disable-doxygen-dot   don't generate graphics for doxygen documentation
+  --enable-doxygen-man    generate doxygen manual pages
+  --enable-doxygen-rtf    generate doxygen RTF documentation
+  --enable-doxygen-xml    generate doxygen XML documentation
+  --enable-doxygen-chm    generate doxygen compressed HTML help documentation
+  --enable-doxygen-chi    generate doxygen seperate compressed HTML help index
+                          file
+  --disable-doxygen-html  don't generate doxygen plain HTML documentation
+  --enable-doxygen-ps     generate doxygen PostScript documentation
+  --disable-doxygen-pdf   don't generate doxygen PDF documentation
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-pic              try to use only PIC/non-PIC objects [default=use
+                          both]
+  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-sysroot=DIR Search for dependent libraries within DIR
+                        (or the compiler's sysroot if not specified).
+  --with-readline[=dir]   Compile with readline/locate base dir
+  --with-x                use the X Window System
+  --with-motif-includes=DIR    Motif include files are in DIR
+  --with-motif-libraries=DIR   Motif libraries are in DIR
+  --with-zlib=DIR	root directory of zlib installation
+  --with-zlib-include=DIR        specify exact include dir for zlib headers (e.g. zlib.h)
+  --with-zlib-libdir=DIR        specify exact library dir for zlib library (e.g. libz)
+  --without-zlib        disables zlib usage completely
+  --with-GL=DIR	root directory of GL installation
+  --with-GL-include=DIR        specify exact include dir for GL headers (e.g. GL/gl.h)
+  --with-GL-libdir=DIR        specify exact library dir for GL library (e.g. libGL)
+  --without-GL        disables GL usage completely
+  --with-GLU=DIR	root directory of GLU installation
+  --with-GLU-include=DIR        specify exact include dir for GLU headers (e.g. GL/glu.h)
+  --with-GLU-libdir=DIR        specify exact library dir for GLU library (e.g. libGLU)
+  --without-GLU        disables GLU usage completely
+  --with-nova=DIR	root directory of nova installation
+  --with-nova-include=DIR        specify exact include dir for nova headers (e.g. libnova/julian_day.h)
+  --with-nova-libdir=DIR        specify exact library dir for nova library (e.g. libnova)
+  --without-nova        disables nova usage completely
+  --with-cfitsio=DIR	root directory of cfitsio installation
+  --with-cfitsio-include=DIR        specify exact include dir for cfitsio headers (e.g. fitsio.h)
+  --with-cfitsio-libdir=DIR        specify exact library dir for cfitsio library (e.g. libcfitsio)
+  --without-cfitsio        disables cfitsio usage completely
+  --with-ccfits=DIR	root directory of ccfits installation
+  --with-ccfits-include=DIR        specify exact include dir for ccfits headers (e.g. CCfits/CCfits)
+  --with-ccfits-libdir=DIR        specify exact library dir for ccfits library (e.g. libCCfits)
+  --without-ccfits        disables ccfits usage completely
+  --with-mysql-include=<path> directory path of MySQL header installation
+  --with-mysqlpp=<path>     path containing MySQL++ header and library subdirs
+  --with-mysqlpp-lib=<path> directory path of MySQL++ library
+  --with-mysqlpp-include=<path> directory path of MySQL++ headers
+  --with-boost[=ARG]      use Boost library from a standard location
+                          (ARG=yes), from the specified location (ARG=<path>),
+                          or disable it (ARG=no) [ARG=yes]
+  --with-boost-libdir=LIB_DIR
+                          Force given directory for boost libraries. Note that
+                          this will override library path detection, so use
+                          this parameter only if default library detection
+                          fails and you know exactly where your boost
+                          libraries are located.
+  --with-boost-system[=special-lib]
+                          use the System library from boost - it is possible
+                          to specify a certain library for the linker e.g.
+                          --with-boost-system=boost_system-gcc-mt
+  --with-boost-asio[=special-lib]
+                          use the ASIO library from boost - it is possible to
+                          specify a certain library for the linker e.g.
+                          --with-boost-asio=boost_system-gcc41-mt-1_34
+  --with-boost-date-time[=special-lib]
+                          use the Date_Time library from boost - it is
+                          possible to specify a certain library for the linker
+                          e.g.
+                          --with-boost-date-time=boost_date_time-gcc-mt-d-1_33_1
+  --with-boost-filesystem[=special-lib]
+                          use the Filesystem library from boost - it is
+                          possible to specify a certain library for the linker
+                          e.g. --with-boost-filesystem=boost_filesystem-gcc-mt
+  --with-boost-program-options[=special-lib]
+                          use the program options library from boost - it is
+                          possible to specify a certain library for the linker
+                          e.g.
+                          --with-boost-program-options=boost_program_options-gcc-mt-1_33_1
+  --with-boost-regex[=special-lib]
+                          use the Regex library from boost - it is possible to
+                          specify a certain library for the linker e.g.
+                          --with-boost-regex=boost_regex-gcc-mt-d-1_33_1
+  --with-boost-thread[=special-lib]
+                          use the Thread library from boost - it is possible
+                          to specify a certain library for the linker e.g.
+                          --with-boost-thread=boost_thread-gcc-mt
+  --with-v8=DIR	root directory of v8 installation
+  --with-v8-include=DIR        specify exact include dir for v8 headers (e.g. v8.h)
+  --with-v8-libdir=DIR        specify exact library dir for v8 library (e.g. libv8)
+  --without-v8        disables v8 usage completely
+  --without-qt4           Disable qt4, i.e. disable gui support.
+  --with-qt4-dir          where the root of Qt 4 is installed
+  --with-qt4-includes     where the Qt 4 includes are
+  --with-qt4-libraries    where the Qt 4 library is installed
+  --with-QGL=DIR	root directory of QGL installation
+  --with-QGL-include=DIR        specify exact include dir for QGL headers (e.g. QtOpenGL/QGLWidget)
+  --with-QGL-libdir=DIR        specify exact library dir for QGL library (e.g. libQtOpenGL)
+  --without-QGL        disables QGL usage completely
+  --with-qwt=DIR	root directory of qwt installation
+  --with-qwt-include=DIR        specify exact include dir for qwt headers (e.g. qwt_plot.h)
+  --with-qwt-libdir=DIR        specify exact library dir for qwt library (e.g. libqwt-qt4)
+  --without-qwt        disables qwt usage completely
+  --without-root          Disable root, i.e. disable gui support.
+  --with-rootsys          path to the ROOT executables or top ROOT
+                          installation directory
+
+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>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) 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
+  PKG_CONFIG  path to pkg-config utility
+  PKG_CONFIG_PATH
+              directories to add to pkg-config's search path
+  PKG_CONFIG_LIBDIR
+              path overriding pkg-config's built-in search path
+  DBUS_CFLAGS C compiler flags for DBUS, overriding pkg-config
+  DBUS_LIBS   linker flags for DBUS, overriding pkg-config
+  CXXCPP      C++ preprocessor
+  DOXYGEN_PAPER_SIZE
+              a4wide (default), a4, letter, legal or executive
+  XMKMF       Path to xmkmf, Makefile generator for X Window System
+  QT4DIR      the place where the Qt 4 files are, e.g. /usr/lib/qt4
+  QT4_CORE_CFLAGS
+              C compiler flags for QT4_CORE, overriding pkg-config
+  QT4_CORE_LIBS
+              linker flags for QT4_CORE, overriding pkg-config
+  QT4_FRONTEND_CFLAGS
+              C compiler flags for QT4_FRONTEND, overriding pkg-config
+  QT4_FRONTEND_LIBS
+              linker flags for QT4_FRONTEND, overriding pkg-config
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <thomas.bretz@phys.ethz.ch>.
+FACT++ home page: <https://www.fact-project.org/svn/trunk/FACT++/>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+FACT++ configure 1.0
+generated by GNU Autoconf 2.68
+
+Copyright (C) 2010 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_cxx_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## ---------------------------------------- ##
+## Report this to thomas.bretz@phys.ethz.ch ##
+## ---------------------------------------- ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* 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_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
+
+# ac_fn_cxx_try_cpp LINENO
+# ------------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_cpp
+
+# ac_fn_cxx_try_link LINENO
+# -------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_link
+
+# ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES
+# ---------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_cxx_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## ---------------------------------------- ##
+## Report this to thomas.bretz@phys.ethz.ch ##
+## ---------------------------------------- ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_cxx_check_header_mongrel
+
+# ac_fn_cxx_check_func LINENO FUNC VAR
+# ------------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_cxx_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* 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_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_cxx_check_func
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by FACT++ $as_me 1.0, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+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`
+/usr/bin/hostinfo      = `(/usr/bin/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`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# 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.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+  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.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_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_cache_corrupted=false
+for ac_var in $ac_precious_vars; 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,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+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_config_files="$ac_config_files Makefile"
+   # causes x/Makefile.in to be created if x/Makefile.am exists
+#AC_CONFIG_HEADERS([config.h])
+
+ac_aux_dir=
+for ac_dir in .aux_dir "$srcdir"/.aux_dir; 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
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in .aux_dir \"$srcdir\"/.aux_dir" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+
+# Make sure none of the following will set -O2
+# Check whether --enable-optimization was given.
+if test "${enable_optimization+set}" = set; then :
+  enableval=$enable_optimization;
+fi
+
+if test "x$enable_optimization" != "xno"; then :
+  MYFLAGS+=" -O3"
+else
+  MYFLAGS+=" -O0"
+fi
+
+# Check whether --enable-debug was given.
+if test "${enable_debug+set}" = set; then :
+  enableval=$enable_debug;
+fi
+
+if test "x$enable_debug" = "xyes"; then :
+  MYFLAGS+=" -g"
+fi
+
+CFLAGS+=$MYFLAGS
+CXXFLAGS+=$MYFLAGS
+
+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
+  for ac_prog in gcc
+  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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in gcc
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&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
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; 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 conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end 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;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+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
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+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
+
+ac_ext=cpp
+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 -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++
+  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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in g++
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CXX+:} false; then :
+  $as_echo_n "(cached) " >&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
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CXX=$ac_ct_CXX
+  fi
+fi
+
+  fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GXX=yes
+else
+  GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if ${ac_cv_prog_cxx_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+else
+  CXXFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+	 CXXFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$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
+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
+
+
+COLORGCC=`which colorgcc`
+if test -n "$COLORGCC"; then :
+
+    ac_config_links="$ac_config_links g++:$COLORGCC gcc:$COLORGCC"
+
+    PATH=./:$PATH
+
+fi
+
+#AC_PROG_CC_C99
+   case $ac_cv_prog_cc_stdc in #(
+  no) :
+    ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;; #(
+  *) :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5
+$as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
+if ${ac_cv_prog_cc_c99+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <wchar.h>
+#include <stdio.h>
+
+// Check varargs macros.  These examples are taken from C99 6.10.3.5.
+#define debug(...) fprintf (stderr, __VA_ARGS__)
+#define showlist(...) puts (#__VA_ARGS__)
+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
+static void
+test_varargs_macros (void)
+{
+  int x = 1234;
+  int y = 5678;
+  debug ("Flag");
+  debug ("X = %d\n", x);
+  showlist (The first, second, and third items.);
+  report (x>y, "x is %d but y is %d", x, y);
+}
+
+// Check long long types.
+#define BIG64 18446744073709551615ull
+#define BIG32 4294967295ul
+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
+#if !BIG_OK
+  your preprocessor is broken;
+#endif
+#if BIG_OK
+#else
+  your preprocessor is broken;
+#endif
+static long long int bignum = -9223372036854775807LL;
+static unsigned long long int ubignum = BIG64;
+
+struct incomplete_array
+{
+  int datasize;
+  double data[];
+};
+
+struct named_init {
+  int number;
+  const wchar_t *name;
+  double average;
+};
+
+typedef const char *ccp;
+
+static inline int
+test_restrict (ccp restrict text)
+{
+  // See if C++-style comments work.
+  // Iterate through items via the restricted pointer.
+  // Also check for declarations in for loops.
+  for (unsigned int i = 0; *(text+i) != '\0'; ++i)
+    continue;
+  return 0;
+}
+
+// Check varargs and va_copy.
+static void
+test_varargs (const char *format, ...)
+{
+  va_list args;
+  va_start (args, format);
+  va_list args_copy;
+  va_copy (args_copy, args);
+
+  const char *str;
+  int number;
+  float fnumber;
+
+  while (*format)
+    {
+      switch (*format++)
+	{
+	case 's': // string
+	  str = va_arg (args_copy, const char *);
+	  break;
+	case 'd': // int
+	  number = va_arg (args_copy, int);
+	  break;
+	case 'f': // float
+	  fnumber = va_arg (args_copy, double);
+	  break;
+	default:
+	  break;
+	}
+    }
+  va_end (args_copy);
+  va_end (args);
+}
+
+int
+main ()
+{
+
+  // Check bool.
+  _Bool success = false;
+
+  // Check restrict.
+  if (test_restrict ("String literal") == 0)
+    success = true;
+  char *restrict newvar = "Another string";
+
+  // Check varargs.
+  test_varargs ("s, d' f .", "string", 65, 34.234);
+  test_varargs_macros ();
+
+  // Check flexible array members.
+  struct incomplete_array *ia =
+    malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+  ia->datasize = 10;
+  for (int i = 0; i < ia->datasize; ++i)
+    ia->data[i] = i * 1.234;
+
+  // Check named initializers.
+  struct named_init ni = {
+    .number = 34,
+    .name = L"Test wide string",
+    .average = 543.34343,
+  };
+
+  ni.number = 58;
+
+  int dynamic_array[ni.number];
+  dynamic_array[ni.number - 1] = 543;
+
+  // work around unused variable warnings
+  return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
+	  || dynamic_array[ni.number - 1] != 543);
+
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -xc99=all -qlanglvl=extc99
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c99=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c99" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c99" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c99"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+$as_echo "$ac_cv_prog_cc_c99" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c99" != xno; then :
+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end 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;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+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
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
+else
+  ac_cv_prog_cc_stdc=no
+fi
+
+fi
+ ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO Standard C" >&5
+$as_echo_n "checking for $CC option to accept ISO Standard C... " >&6; }
+  if ${ac_cv_prog_cc_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+
+  case $ac_cv_prog_cc_stdc in #(
+  no) :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;; #(
+  '') :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;; #(
+  *) :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_stdc" >&5
+$as_echo "$ac_cv_prog_cc_stdc" >&6; } ;;
+esac
+
+
+######################################################################
+# GNUC extension support (needed for the event builder)
+######################################################################
+
+
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if ${ac_cv_prog_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      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.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # 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 confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$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.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # 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 confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+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
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end 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 confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end 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 confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.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))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+  ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
+if test "x$ac_cv_header_minix_config_h" = xyes; then :
+  MINIX=yes
+else
+  MINIX=
+fi
+
+
+  if test "$MINIX" = yes; then
+
+$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
+
+
+$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
+
+
+$as_echo "#define _MINIX 1" >>confdefs.h
+
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
+$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if ${ac_cv_safe_to_define___extensions__+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#	  define __EXTENSIONS__ 1
+	  $ac_includes_default
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_safe_to_define___extensions__=yes
+else
+  ac_cv_safe_to_define___extensions__=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
+$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
+  test $ac_cv_safe_to_define___extensions__ = yes &&
+    $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
+
+  $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
+
+  $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
+
+  $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+
+  $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
+
+
+
+######################################################################
+# Check for right C++ standard
+######################################################################
+
+#AC_CXX_HEADER_STDCXX_0X
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if g++ supports C++0x features without additional flags" >&5
+$as_echo_n "checking if g++ supports C++0x features without additional flags... " >&6; }
+if ${ax_cv_cxx_compile_cxx0x_native+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  ac_ext=cpp
+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
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+    typedef check<check<bool>> right_angle_brackets;
+
+    int a;
+    decltype(a) b;
+
+    typedef check<int> check_type;
+    check_type c;
+    check_type&& cr = static_cast<check_type&&>(c);
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_cxx_compile_cxx0x_native=yes
+else
+  ax_cv_cxx_compile_cxx0x_native=no
+fi
+rm -f core conftest.err 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
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx0x_native" >&5
+$as_echo "$ax_cv_cxx_compile_cxx0x_native" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if g++ supports C++0x features with -std=c++0x" >&5
+$as_echo_n "checking if g++ supports C++0x features with -std=c++0x... " >&6; }
+if ${ax_cv_cxx_compile_cxx0x_cxx+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  ac_ext=cpp
+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
+
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -std=c++0x"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+    typedef check<check<bool>> right_angle_brackets;
+
+    int a;
+    decltype(a) b;
+
+    typedef check<int> check_type;
+    check_type c;
+    check_type&& cr = static_cast<check_type&&>(c);
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_cxx_compile_cxx0x_cxx=yes
+else
+  ax_cv_cxx_compile_cxx0x_cxx=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  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
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx0x_cxx" >&5
+$as_echo "$ax_cv_cxx_compile_cxx0x_cxx" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if g++ supports C++0x features with -std=gnu++0x" >&5
+$as_echo_n "checking if g++ supports C++0x features with -std=gnu++0x... " >&6; }
+if ${ax_cv_cxx_compile_cxx0x_gxx+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  ac_ext=cpp
+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
+
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -std=gnu++0x"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+    typedef check<check<bool>> right_angle_brackets;
+
+    int a;
+    decltype(a) b;
+
+    typedef check<int> check_type;
+    check_type c;
+    check_type&& cr = static_cast<check_type&&>(c);
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_cxx_compile_cxx0x_gxx=yes
+else
+  ax_cv_cxx_compile_cxx0x_gxx=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  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
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx0x_gxx" >&5
+$as_echo "$ax_cv_cxx_compile_cxx0x_gxx" >&6; }
+
+  if test "$ax_cv_cxx_compile_cxx0x_native" = yes ||
+     test "$ax_cv_cxx_compile_cxx0x_cxx" = yes ||
+     test "$ax_cv_cxx_compile_cxx0x_gxx" = yes; then
+
+$as_echo "#define HAVE_STDCXX_0X /**/" >>confdefs.h
+
+  fi
+
+if test "$ax_cv_cxx_compile_cxx0x_cxx" != yes; then :
+  as_fn_error $? "C++0x standard (-std=c++0x) not supported by compiler." "$LINENO" 5
+fi
+
+# Postponed after the BOOST library tests otherwise the check for boost::thread fails
+#CXXFLAGS+=" -std=c++0x"
+
+
+
+
+
+
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+	if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+  ac_pt_PKG_CONFIG=$PKG_CONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_PKG_CONFIG" = x; then
+    PKG_CONFIG=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PKG_CONFIG=$ac_pt_PKG_CONFIG
+  fi
+else
+  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+	_pkg_min_version=0.9.0
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	else
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+		PKG_CONFIG=""
+	fi
+fi
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DBUS" >&5
+$as_echo_n "checking for DBUS... " >&6; }
+
+if test -n "$DBUS_CFLAGS"; then
+    pkg_cv_DBUS_CFLAGS="$DBUS_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-1 dbus-glib-1\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "dbus-1 dbus-glib-1") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_DBUS_CFLAGS=`$PKG_CONFIG --cflags "dbus-1 dbus-glib-1" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$DBUS_LIBS"; then
+    pkg_cv_DBUS_LIBS="$DBUS_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-1 dbus-glib-1\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "dbus-1 dbus-glib-1") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_DBUS_LIBS=`$PKG_CONFIG --libs "dbus-1 dbus-glib-1" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        DBUS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "dbus-1 dbus-glib-1" 2>&1`
+        else
+	        DBUS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "dbus-1 dbus-glib-1" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$DBUS_PKG_ERRORS" >&5
+
+	HAVE_DBUS=no
+elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	HAVE_DBUS=no
+else
+	DBUS_CFLAGS=$pkg_cv_DBUS_CFLAGS
+	DBUS_LIBS=$pkg_cv_DBUS_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	HAVE_DBUS=yes
+fi
+
+CPPFLAGS+=" `pkg-config --cflags dbus-1 dbus-glib-1`"
+LDFLAGS+=" `pkg-config --libs dbus-1 dbus-glib-1`"
+
+# dbus-1
+# dbus-glib-1
+# QtOpenGL
+# gl
+# QtCore
+# cfitsio
+
+######################################################################
+# Setup the libtool and the language
+######################################################################
+
+case `pwd` in
+  *\ * | *\	*)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+esac
+
+
+
+macro_version='2.4.2'
+macro_revision='1.3337'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+$as_echo_n "checking how to print strings... " >&6; }
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='printf %s\n'
+else
+  # Use this function as a fallback that always works.
+  func_fallback_echo ()
+  {
+    eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+  }
+  ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO ""
+}
+
+case "$ECHO" in
+  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+$as_echo "printf" >&6; } ;;
+  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+$as_echo "print -r" >&6; } ;;
+  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+$as_echo "cat" >&6; } ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     { ac_script=; unset ac_script;}
+     if test -z "$SED"; then
+  ac_path_SED_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
+# Check for GNU ac_path_SED and select it if it is found.
+  # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '' >> "conftest.nl"
+    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_SED_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_SED="$ac_path_SED"
+      ac_path_SED_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_SED_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_SED"; then
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  fi
+else
+  ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+  rm -f conftest.sed
+
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if ${ac_cv_path_FGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+   then ac_cv_path_FGREP="$GREP -F"
+   else
+     if test -z "$FGREP"; then
+  ac_path_FGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in fgrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+  # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'FGREP' >> "conftest.nl"
+    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_FGREP="$ac_path_FGREP"
+      ac_path_FGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_FGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_FGREP"; then
+    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_FGREP=$FGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
+
+
+test -z "$GREP" && GREP=grep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${lt_cv_path_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if ${lt_cv_path_NM+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+	# Check to see if the nm accepts a BSD-compat flag.
+	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
+	#   nm: unknown option "B" ignored
+	# Tru64's nm complains that /dev/null is an invalid object file
+	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+	*/dev/null* | *'Invalid file or object type'*)
+	  lt_cv_path_NM="$tmp_nm -B"
+	  break
+	  ;;
+	*)
+	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	  */dev/null*)
+	    lt_cv_path_NM="$tmp_nm -p"
+	    break
+	    ;;
+	  *)
+	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	    continue # so that we can try to find one that supports BSD flags
+	    ;;
+	  esac
+	  ;;
+	esac
+      fi
+    done
+    IFS="$lt_save_ifs"
+  done
+  : ${lt_cv_path_NM=no}
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+if test "$lt_cv_path_NM" != "no"; then
+  NM="$lt_cv_path_NM"
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in dumpbin "link -dump"
+  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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DUMPBIN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DUMPBIN"; then
+  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$DUMPBIN" && break
+  done
+fi
+if test -z "$DUMPBIN"; then
+  ac_ct_DUMPBIN=$DUMPBIN
+  for ac_prog in dumpbin "link -dump"
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DUMPBIN"; then
+  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_DUMPBIN" && break
+done
+
+  if test "x$ac_ct_DUMPBIN" = x; then
+    DUMPBIN=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DUMPBIN=$ac_ct_DUMPBIN
+  fi
+fi
+
+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
+
+  if test "$DUMPBIN" != ":"; then
+    NM="$DUMPBIN"
+  fi
+fi
+test -z "$NM" && NM=nm
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if ${lt_cv_nm_interface+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
+  cat conftest.out >&5
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+# find the maximum length of command line arguments
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if ${lt_cv_sys_max_cmd_len+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+    i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[	 ]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+	      test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+
+
+
+
+
+: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
+$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
+      = c,a/b,b/c, \
+    && eval 'test $(( 1 + 1 )) -eq 2 \
+    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+  && xsi_shell=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
+$as_echo "$xsi_shell" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
+$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
+    >/dev/null 2>&1 \
+  && lt_shell_append=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
+$as_echo "$lt_shell_append" >&6; }
+
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
+else
+  lt_unset=false
+fi
+
+
+
+
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  lt_SP2NL='tr \040 \012'
+  lt_NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  lt_SP2NL='tr \100 \n'
+  lt_NL2SP='tr \r\n \100\100'
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
+if ${lt_cv_to_host_file_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+        ;;
+    esac
+    ;;
+  *-*-cygwin* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_noop
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+        ;;
+    esac
+    ;;
+  * ) # unhandled hosts (and "normal" native builds)
+    lt_cv_to_host_file_cmd=func_convert_file_noop
+    ;;
+esac
+
+fi
+
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
+if ${lt_cv_to_tool_file_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  #assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+        ;;
+    esac
+    ;;
+esac
+
+fi
+
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if ${lt_cv_ld_reload_flag+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    if test "$GCC" != yes; then
+      reload_cmds=false
+    fi
+    ;;
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OBJDUMP="objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OBJDUMP" = x; then
+    OBJDUMP="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OBJDUMP=$ac_ct_OBJDUMP
+  fi
+else
+  OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if ${lt_cv_deplibs_check_method+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[4-9]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[45]*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    # Keep this pattern in sync with the one in func_win32_libid.
+    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
+
+cegcc*)
+  # use the weaker test based on 'objdump'. See mingw*.
+  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | dragonfly*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+haiku*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+interix[3-9]*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd* | netbsdelf*-gnu)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+*nto* | *qnx*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+tpf*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+  case $host_os in
+  mingw* | pw32*)
+    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+      want_nocaseglob=yes
+    else
+      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
+    fi
+    ;;
+  esac
+fi
+
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DLLTOOL"; then
+  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+  ac_ct_DLLTOOL=$DLLTOOL
+  # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DLLTOOL"; then
+  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DLLTOOL" = x; then
+    DLLTOOL="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DLLTOOL=$ac_ct_DLLTOOL
+  fi
+else
+  DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+  # two different shell functions defined in ltmain.sh
+  # decide which to use based on capabilities of $DLLTOOL
+  case `$DLLTOOL --help 2>&1` in
+  *--identify-strict*)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+    ;;
+  *)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+    ;;
+  esac
+  ;;
+*)
+  # fallback: assume linklib IS sharedlib
+  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+  ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in ar
+  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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$AR" && break
+  done
+fi
+if test -z "$AR"; then
+  ac_ct_AR=$AR
+  for ac_prog in ar
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_AR="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_AR" && break
+done
+
+  if test "x$ac_ct_AR" = x; then
+    AR="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AR=$ac_ct_AR
+  fi
+fi
+
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ar_at_file=no
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  echo conftest.$ac_objext > conftest.lst
+      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
+      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+  (eval $lt_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+      if test "$ac_status" -eq 0; then
+	# Ensure the archiver fails upon bogus file names.
+	rm -f conftest.$ac_objext libconftest.a
+	{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+  (eval $lt_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	if test "$ac_status" -ne 0; then
+          lt_cv_ar_at_file=@
+        fi
+      fi
+      rm -f conftest.* libconftest.a
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
+
+if test "x$lt_cv_ar_at_file" = xno; then
+  archiver_list_spec=
+else
+  archiver_list_spec=$lt_cv_ar_at_file
+fi
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+test -z "$STRIP" && STRIP=:
+
+
+
+
+
+
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&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
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+test -z "$RANLIB" && RANLIB=:
+
+
+
+
+
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+case $host_os in
+  darwin*)
+    lock_old_archive_extraction=yes ;;
+  *)
+    lock_old_archive_extraction=no ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_prog in gawk mawk 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if ${lt_cv_sys_global_symbol_pipe+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw* | pw32* | cegcc*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*)
+  if test "$host_cpu" = ia64; then
+    symcode='[ABCDEGRST]'
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[BCDEGRST]'
+  ;;
+osf*)
+  symcode='[BCDEGQRST]'
+  ;;
+solaris*)
+  symcode='[BDRT]'
+  ;;
+sco3.2v5*)
+  symcode='[DT]'
+  ;;
+sysv4.2uw2*)
+  symcode='[DT]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[ABDT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+    # Fake it for dumpbin and say T for any non-static function
+    # and D for any global variable.
+    # Also find C++ and __fastcall symbols from MSVC++,
+    # which start with @ or ?.
+    lt_cv_sys_global_symbol_pipe="$AWK '"\
+"     {last_section=section; section=\$ 3};"\
+"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     \$ 0!~/External *\|/{next};"\
+"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+"     {if(hide[section]) next};"\
+"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+"     ' prfx=^$ac_symprfx"
+  else
+    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+  fi
+  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
+  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data.  */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+	  cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols.  */
+LT_DLSYM_CONST struct {
+  const char *name;
+  void       *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[] =
+{
+  { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+	  cat <<\_LT_EOF >> conftest.$ac_ext
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  lt_globsym_save_LIBS=$LIBS
+	  lt_globsym_save_CFLAGS=$CFLAGS
+	  LIBS="conftstm.$ac_objext"
+	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+	    pipe_works=yes
+	  fi
+	  LIBS=$lt_globsym_save_LIBS
+	  CFLAGS=$lt_globsym_save_CFLAGS
+	else
+	  echo "cannot find nm_test_func in $nlist" >&5
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+  fi
+  rm -rf conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+fi
+
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
+  nm_file_list_spec='@'
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
+# Check whether --with-sysroot was given.
+if test "${with_sysroot+set}" = set; then :
+  withval=$with_sysroot;
+else
+  with_sysroot=no
+fi
+
+
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+   if test "$GCC" = yes; then
+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+   fi
+   ;; #(
+ /*)
+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   ;; #(
+ no|'')
+   ;; #(
+ *)
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
+$as_echo "${with_sysroot}" >&6; }
+   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+   ;;
+esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
+$as_echo "${lt_sysroot:-no}" >&6; }
+
+
+
+
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then :
+  enableval=$enable_libtool_lock;
+fi
+
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.$ac_objext` in
+      *ELF-32*)
+	HPUX_IA64_MODE="32"
+	;;
+      *ELF-64*)
+	HPUX_IA64_MODE="64"
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    if test "$lt_cv_prog_gnu_ld" = yes; then
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -melf32bsmip"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -melf32bmipn32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -melf64bmip"
+	;;
+      esac
+    else
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -32"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -n32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -64"
+	  ;;
+      esac
+    fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+      *32-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_i386_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    LD="${LD-ld} -m elf_i386"
+	    ;;
+	  ppc64-*linux*|powerpc64-*linux*)
+	    LD="${LD-ld} -m elf32ppclinux"
+	    ;;
+	  s390x-*linux*)
+	    LD="${LD-ld} -m elf_s390"
+	    ;;
+	  sparc64-*linux*)
+	    LD="${LD-ld} -m elf32_sparc"
+	    ;;
+	esac
+	;;
+      *64-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_x86_64_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    LD="${LD-ld} -m elf_x86_64"
+	    ;;
+	  ppc*-*linux*|powerpc*-*linux*)
+	    LD="${LD-ld} -m elf64ppc"
+	    ;;
+	  s390*-*linux*|s390*-*tpf*)
+	    LD="${LD-ld} -m elf64_s390"
+	    ;;
+	  sparc*-*linux*)
+	    LD="${LD-ld} -m elf64_sparc"
+	    ;;
+	esac
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if ${lt_cv_cc_needs_belf+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_cc_needs_belf=yes
+else
+  lt_cv_cc_needs_belf=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext 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
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+sparc*-*solaris*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      *)
+	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+	  LD="${LD-ld} -64"
+	fi
+	;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+esac
+
+need_locks="$enable_libtool_lock"
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
+set dummy ${ac_tool_prefix}mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$MANIFEST_TOOL"; then
+  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
+if test -n "$MANIFEST_TOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
+$as_echo "$MANIFEST_TOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
+  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
+  # Extract the first word of "mt", so it can be a program name with args.
+set dummy mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_MANIFEST_TOOL"; then
+  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
+if test -n "$ac_ct_MANIFEST_TOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_MANIFEST_TOOL" = x; then
+    MANIFEST_TOOL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
+  fi
+else
+  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
+fi
+
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
+if ${lt_cv_path_mainfest_tool+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_path_mainfest_tool=no
+  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
+  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+  cat conftest.err >&5
+  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+    lt_cv_path_mainfest_tool=yes
+  fi
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
+$as_echo "$lt_cv_path_mainfest_tool" >&6; }
+if test "x$lt_cv_path_mainfest_tool" != xyes; then
+  MANIFEST_TOOL=:
+fi
+
+
+
+
+
+
+  case $host_os in
+    rhapsody* | darwin*)
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DSYMUTIL"; then
+  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+  ac_ct_DSYMUTIL=$DSYMUTIL
+  # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DSYMUTIL"; then
+  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DSYMUTIL" = x; then
+    DSYMUTIL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DSYMUTIL=$ac_ct_DSYMUTIL
+  fi
+else
+  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NMEDIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NMEDIT"; then
+  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+  ac_ct_NMEDIT=$NMEDIT
+  # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_NMEDIT"; then
+  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_NMEDIT="nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_NMEDIT" = x; then
+    NMEDIT=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    NMEDIT=$ac_ct_NMEDIT
+  fi
+else
+  NMEDIT="$ac_cv_prog_NMEDIT"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LIPO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$LIPO"; then
+  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LIPO"; then
+  ac_ct_LIPO=$LIPO
+  # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_LIPO"; then
+  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_LIPO="lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_LIPO" = x; then
+    LIPO=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    LIPO=$ac_ct_LIPO
+  fi
+else
+  LIPO="$ac_cv_prog_LIPO"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL"; then
+  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL"; then
+  ac_ct_OTOOL=$OTOOL
+  # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL"; then
+  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OTOOL="otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OTOOL" = x; then
+    OTOOL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL=$ac_ct_OTOOL
+  fi
+else
+  OTOOL="$ac_cv_prog_OTOOL"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL64"; then
+  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL64"; then
+  ac_ct_OTOOL64=$OTOOL64
+  # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL64"; then
+  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OTOOL64="otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OTOOL64" = x; then
+    OTOOL64=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL64=$ac_ct_OTOOL64
+  fi
+else
+  OTOOL64="$ac_cv_prog_OTOOL64"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if ${lt_cv_apple_cc_single_mod+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_apple_cc_single_mod=no
+      if test -z "${LT_MULTI_MODULE}"; then
+	# By default we will add the -single_module flag. You can override
+	# by either setting the environment variable LT_MULTI_MODULE
+	# non-empty at configure time, or by adding -multi_module to the
+	# link flags.
+	rm -rf libconftest.dylib*
+	echo "int foo(void){return 1;}" > conftest.c
+	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&5
+	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+	  lt_cv_apple_cc_single_mod=yes
+	else
+	  cat conftest.err >&5
+	fi
+	rm -rf libconftest.dylib*
+	rm -f conftest.*
+      fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if ${lt_cv_ld_exported_symbols_list+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_ld_exported_symbols_list=yes
+else
+  lt_cv_ld_exported_symbols_list=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+$as_echo_n "checking for -force_load linker flag... " >&6; }
+if ${lt_cv_ld_force_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_force_load=no
+      cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+      echo "$AR cru libconftest.a conftest.o" >&5
+      $AR cru libconftest.a conftest.o 2>&5
+      echo "$RANLIB libconftest.a" >&5
+      $RANLIB libconftest.a 2>&5
+      cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+      _lt_result=$?
+      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+	lt_cv_ld_force_load=yes
+      else
+	cat conftest.err >&5
+      fi
+        rm -f conftest.err libconftest.a conftest conftest.c
+        rm -rf conftest.dSYM
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+$as_echo "$lt_cv_ld_force_load" >&6; }
+    case $host_os in
+    rhapsody* | darwin1.[012])
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+    darwin1.*)
+      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+    darwin*) # darwin 5.x on
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+	10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+	10.[012]*)
+	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+	10.*)
+	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    fi
+    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+
+for ac_header in dlfcn.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+func_stripname_cnf ()
+{
+  case ${2} in
+  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+  esac
+} # func_stripname_cnf
+
+
+
+
+
+# Set options
+# Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then :
+  enableval=$enable_static; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_static=no
+fi
+
+
+
+
+
+
+
+
+
+
+        enable_dlopen=no
+
+
+  enable_win32_dll=no
+
+
+            # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+  enableval=$enable_shared; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_shared=yes
+fi
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then :
+  withval=$with_pic; pic_mode="$withval"
+else
+  pic_mode=default
+fi
+
+
+test -z "$pic_mode" && pic_mode=default
+
+
+
+
+
+
+
+  # Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then :
+  enableval=$enable_fast_install; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_fast_install=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_fast_install=yes
+fi
+
+
+
+
+
+
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test -z "$LN_S" && LN_S="ln -s"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if ${lt_cv_objdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define LT_OBJDIR "$lt_cv_objdir/"
+_ACEOF
+
+
+
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/${ac_tool_prefix}file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  else
+    MAGIC_CMD=:
+  fi
+fi
+
+  fi
+  ;;
+esac
+
+# Use C for the default configuration in the libtool script
+
+lt_save_CC="$CC"
+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
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+  case $cc_basename in
+  nvcc*)
+    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
+  *)
+    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
+  esac
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+
+
+
+
+
+  lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl='-Wl,'
+    lt_prog_compiler_static='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            lt_prog_compiler_pic='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      ;;
+
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static=
+      ;;
+
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='-fPIC'
+	;;
+      esac
+      ;;
+
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared=no
+      enable_shared=no
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic=-Kconform_pic
+      fi
+      ;;
+
+    *)
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+    esac
+
+    case $cc_basename in
+    nvcc*) # Cuda Compiler Driver 2.2
+      lt_prog_compiler_wl='-Xlinker '
+      lt_prog_compiler_pic='-Xcompiler -fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      else
+	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      case $cc_basename in
+      # old Intel for x86_64 which still supported -KPIC.
+      ecc*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-KPIC'
+	lt_prog_compiler_static='-static'
+        ;;
+      # icc used to be incompatible with GCC.
+      # ICC 10 doesn't accept -KPIC any more.
+      icc* | ifort*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fPIC'
+	lt_prog_compiler_static='-static'
+        ;;
+      # Lahey Fortran 8.1.
+      lf95*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='--shared'
+	lt_prog_compiler_static='--static'
+	;;
+      nagfor*)
+	# NAG Fortran compiler
+	lt_prog_compiler_wl='-Wl,-Wl,,'
+	lt_prog_compiler_pic='-PIC'
+	lt_prog_compiler_static='-Bstatic'
+	;;
+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fpic'
+	lt_prog_compiler_static='-Bstatic'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static='-non_shared'
+        ;;
+      xl* | bgxl* | bgf* | mpixl*)
+	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-qpic'
+	lt_prog_compiler_static='-qstaticlink'
+	;;
+      *)
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ F* | *Sun*Fortran*)
+	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl=''
+	  ;;
+	*Sun\ C*)
+	  # Sun C 5.9
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl='-Wl,'
+	  ;;
+	esac
+	;;
+      esac
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    rdos*)
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+	lt_prog_compiler_wl='-Qoption ld ';;
+      *)
+	lt_prog_compiler_wl='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl='-Qoption ld '
+      lt_prog_compiler_pic='-PIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic='-Kconform_pic'
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_can_build_shared=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic='-pic'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared=no
+      ;;
+    esac
+  fi
+
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic=
+    ;;
+  *)
+    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    ;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
+    case $lt_prog_compiler_pic in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+     esac
+else
+    lt_prog_compiler_pic=
+     lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works" = xyes; then
+    :
+else
+    lt_prog_compiler_static=
+fi
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+  runpath_var=
+  allow_undefined_flag=
+  always_export_symbols=no
+  archive_cmds=
+  archive_expsym_cmds=
+  compiler_needs_object=no
+  enable_shared_with_static_runtimes=no
+  export_dynamic_flag_spec=
+  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  hardcode_automatic=no
+  hardcode_direct=no
+  hardcode_direct_absolute=no
+  hardcode_libdir_flag_spec=
+  hardcode_libdir_flag_spec_ld=
+  hardcode_libdir_separator=
+  hardcode_minus_L=no
+  hardcode_shlibpath_var=unsupported
+  inherit_rpath=no
+  link_all_deplibs=unknown
+  module_cmds=
+  module_expsym_cmds=
+  old_archive_from_new_cmds=
+  old_archive_from_expsyms_cmds=
+  thread_safe_flag_spec=
+  whole_archive_flag_spec=
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  linux* | k*bsd*-gnu | gnu*)
+    link_all_deplibs=no
+    ;;
+  esac
+
+  ld_shlibs=yes
+
+  # On some targets, GNU ld is compatible enough with the native linker
+  # that we're better off using the native interface for both.
+  lt_use_gnu_ld_interface=no
+  if test "$with_gnu_ld" = yes; then
+    case $host_os in
+      aix*)
+	# The AIX port of GNU ld has always aspired to compatibility
+	# with the native linker.  However, as the warning in the GNU ld
+	# block says, versions before 2.19.5* couldn't really create working
+	# shared libraries, regardless of the interface used.
+	case `$LD -v 2>&1` in
+	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
+	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
+	  *)
+	    lt_use_gnu_ld_interface=yes
+	    ;;
+	esac
+	;;
+      *)
+	lt_use_gnu_ld_interface=yes
+	;;
+    esac
+  fi
+
+  if test "$lt_use_gnu_ld_interface" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    export_dynamic_flag_spec='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      whole_archive_flag_spec=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>&1` in
+      *GNU\ gold*) supports_anon_versioning=yes ;;
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix[3-9]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag=unsupported
+	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      export_dynamic_flag_spec='${wl}--export-all-symbols'
+      allow_undefined_flag=unsupported
+      always_export_symbols=no
+      enable_shared_with_static_runtimes=yes
+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+      exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    haiku*)
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      link_all_deplibs=yes
+      ;;
+
+    interix[3-9]*)
+      hardcode_direct=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+      tmp_diet=no
+      if test "$host_os" = linux-dietlibc; then
+	case $cc_basename in
+	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
+	esac
+      fi
+      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+	 && test "$tmp_diet" = no
+      then
+	tmp_addflag=' $pic_flag'
+	tmp_sharedflag='-shared'
+	case $cc_basename,$host_cpu in
+        pgcc*)				# Portland Group C compiler
+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* | pgf95* | pgfortran*)
+					# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	lf95*)				# Lahey Fortran 8.1
+	  whole_archive_flag_spec=
+	  tmp_sharedflag='--shared' ;;
+	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+	  tmp_sharedflag='-qmkshrobj'
+	  tmp_addflag= ;;
+	nvcc*)	# Cuda Compiler Driver 2.2
+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  compiler_needs_object=yes
+	  ;;
+	esac
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)			# Sun C 5.9
+	  whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  compiler_needs_object=yes
+	  tmp_sharedflag='-G' ;;
+	*Sun\ F*)			# Sun Fortran 8.3
+	  tmp_sharedflag='-G' ;;
+	esac
+	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+        if test "x$supports_anon_versioning" = xyes; then
+          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+	    echo "local: *; };" >> $output_objdir/$libname.ver~
+	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+        fi
+
+	case $cc_basename in
+	xlf* | bgf* | bgxlf* | mpixlf*)
+	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+	  hardcode_libdir_flag_spec=
+	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
+	  archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+	  if test "x$supports_anon_versioning" = xyes; then
+	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+	      echo "local: *; };" >> $output_objdir/$libname.ver~
+	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+	  fi
+	  ;;
+	esac
+      else
+        ld_shlibs=no
+      fi
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+	ld_shlibs=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+	ld_shlibs=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+	;;
+	*)
+	  # For security reasons, it is highly recommended that you always
+	  # use absolute paths for naming shared libraries, and exclude the
+	  # DT_RUNPATH tag from executables and libraries.  But doing so
+	  # requires that you compile everything twice, which is a pain.
+	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	  else
+	    ld_shlibs=no
+	  fi
+	;;
+      esac
+      ;;
+
+    sunos4*)
+      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec=
+      export_dynamic_flag_spec=
+      whole_archive_flag_spec=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag=unsupported
+      always_export_symbols=yes
+      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct=unsupported
+      fi
+      ;;
+
+    aix[4-9]*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	# Also, AIX nm treats weak defined symbols like other global
+	# defined symbols, whereas GNU nm marks them as "W".
+	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+	  for ld_flag in $LDFLAGS; do
+	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+	    aix_use_runtimelinking=yes
+	    break
+	  fi
+	  done
+	  ;;
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds=''
+      hardcode_direct=yes
+      hardcode_direct_absolute=yes
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      file_list_spec='${wl}-f,'
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[012]|aix4.[012].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" &&
+	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+	  then
+	  # We have reworked collect2
+	  :
+	  else
+	  # We have old collect2
+	  hardcode_direct=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  hardcode_minus_L=yes
+	  hardcode_libdir_flag_spec='-L$libdir'
+	  hardcode_libdir_separator=
+	  fi
+	  ;;
+	esac
+	shared_flag='-shared'
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag="$shared_flag "'${wl}-G'
+	fi
+	link_all_deplibs=no
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+	  if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+	  fi
+	fi
+      fi
+
+      export_dynamic_flag_spec='${wl}-bexpall'
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag='-berok'
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath_+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_="/usr/lib:/lib"
+  fi
+
+fi
+
+  aix_libpath=$lt_cv_aix_libpath_
+fi
+
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+      else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag="-z nodefs"
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an
+	 # empty executable.
+	 if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath_+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_="/usr/lib:/lib"
+  fi
+
+fi
+
+  aix_libpath=$lt_cv_aix_libpath_
+fi
+
+	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag=' ${wl}-bernotok'
+	  allow_undefined_flag=' ${wl}-berok'
+	  if test "$with_gnu_ld" = yes; then
+	    # We only use this code for GNU lds that support --whole-archive.
+	    whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	  else
+	    # Exported symbols can be pulled into shared objects from archives
+	    whole_archive_flag_spec='$convenience'
+	  fi
+	  archive_cmds_need_lc=yes
+	  # This is similar to how AIX traditionally builds its shared libraries.
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      case $cc_basename in
+      cl*)
+	# Native MSVC
+	hardcode_libdir_flag_spec=' '
+	allow_undefined_flag=unsupported
+	always_export_symbols=yes
+	file_list_spec='@'
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=".dll"
+	# FIXME: Setting linknames here is a bad hack.
+	archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+	  else
+	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+	  fi~
+	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+	  linknames='
+	# The linker will not automatically build a static lib if we build a DLL.
+	# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
+	enable_shared_with_static_runtimes=yes
+	export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+	# Don't use ranlib
+	old_postinstall_cmds='chmod 644 $oldlib'
+	postlink_cmds='lt_outputfile="@OUTPUT@"~
+	  lt_tool_outputfile="@TOOL_OUTPUT@"~
+	  case $lt_outputfile in
+	    *.exe|*.EXE) ;;
+	    *)
+	      lt_outputfile="$lt_outputfile.exe"
+	      lt_tool_outputfile="$lt_tool_outputfile.exe"
+	      ;;
+	  esac~
+	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+	    $RM "$lt_outputfile.manifest";
+	  fi'
+	;;
+      *)
+	# Assume MSVC wrapper
+	hardcode_libdir_flag_spec=' '
+	allow_undefined_flag=unsupported
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=".dll"
+	# FIXME: Setting linknames here is a bad hack.
+	archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+	# The linker will automatically build a .lib file if we build a DLL.
+	old_archive_from_new_cmds='true'
+	# FIXME: Should let the user specify the lib program.
+	old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+	enable_shared_with_static_runtimes=yes
+	;;
+      esac
+      ;;
+
+    darwin* | rhapsody*)
+
+
+  archive_cmds_need_lc=no
+  hardcode_direct=no
+  hardcode_automatic=yes
+  hardcode_shlibpath_var=unsupported
+  if test "$lt_cv_ld_force_load" = "yes"; then
+    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+  else
+    whole_archive_flag_spec=''
+  fi
+  link_all_deplibs=yes
+  allow_undefined_flag="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=func_echo_all
+    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+
+  else
+  ld_shlibs=no
+  fi
+
+      ;;
+
+    dgux*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      export_dynamic_flag_spec='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+	archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	hardcode_libdir_flag_spec_ld='+b $libdir'
+	hardcode_libdir_separator=:
+	hardcode_direct=yes
+	hardcode_direct_absolute=yes
+	export_dynamic_flag_spec='${wl}-E'
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	hardcode_minus_L=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+
+	  # Older versions of the 11.00 compiler do not understand -b yet
+	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+$as_echo_n "checking if $CC understands -b... " >&6; }
+if ${lt_cv_prog_compiler__b+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler__b=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS -b"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler__b=yes
+       fi
+     else
+       lt_cv_prog_compiler__b=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+$as_echo "$lt_cv_prog_compiler__b" >&6; }
+
+if test x"$lt_cv_prog_compiler__b" = xyes; then
+    archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+else
+    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+fi
+
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  hardcode_direct=no
+	  hardcode_shlibpath_var=no
+	  ;;
+	*)
+	  hardcode_direct=yes
+	  hardcode_direct_absolute=yes
+	  export_dynamic_flag_spec='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	# Try to use the -exported_symbol ld option, if it does not
+	# work, assume that -exports_file does not work either and
+	# implicitly export all symbols.
+	# This should be the same for all languages, so no per-tag cache variable.
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
+if ${lt_cv_irix_exported_symbol+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  save_LDFLAGS="$LDFLAGS"
+	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+	   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int foo (void) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_irix_exported_symbol=yes
+else
+  lt_cv_irix_exported_symbol=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+           LDFLAGS="$save_LDFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
+	if test "$lt_cv_irix_exported_symbol" = yes; then
+          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+	fi
+      else
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      inherit_rpath=yes
+      link_all_deplibs=yes
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    newsos6)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_shlibpath_var=no
+      ;;
+
+    *nto* | *qnx*)
+      ;;
+
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+	hardcode_direct=yes
+	hardcode_shlibpath_var=no
+	hardcode_direct_absolute=yes
+	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	  hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+	  export_dynamic_flag_spec='${wl}-E'
+	else
+	  case $host_os in
+	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	     archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	     hardcode_libdir_flag_spec='-R$libdir'
+	     ;;
+	   *)
+	     archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	     hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+	     ;;
+	  esac
+	fi
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_separator=:
+      ;;
+
+    solaris*)
+      no_undefined_flag=' -z defs'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+      else
+	case `$CC -V 2>&1` in
+	*"Compilers 5.0"*)
+	  wlarc=''
+	  archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+	  ;;
+	*)
+	  wlarc='${wl}'
+	  archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+	  ;;
+	esac
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_shlibpath_var=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+	# The compiler driver will combine and reorder linker options,
+	# but understands `-z linker_flag'.  GCC discards it without `$wl',
+	# but is careful enough not to reorder.
+	# Supported since Solaris 2.6 (maybe 2.5.1?)
+	if test "$GCC" = yes; then
+	  whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+	else
+	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+	fi
+	;;
+      esac
+      link_all_deplibs=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds='$CC -r -o $output$reload_objs'
+	  hardcode_direct=no
+        ;;
+	motorola)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag='${wl}-z,text'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      no_undefined_flag='${wl}-z,text'
+      allow_undefined_flag='${wl}-z,nodefs'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='${wl}-R,$libdir'
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      export_dynamic_flag_spec='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      ld_shlibs=no
+      ;;
+    esac
+
+    if test x$host_vendor = xsni; then
+      case $host in
+      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+	export_dynamic_flag_spec='${wl}-Blargedynsym'
+	;;
+      esac
+    fi
+  fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
+test "$ld_shlibs" = no && can_build_shared=no
+
+with_gnu_ld=$with_gnu_ld
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  $RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$lt_prog_compiler_wl
+	  pic_flag=$lt_prog_compiler_pic
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$allow_undefined_flag
+	  allow_undefined_flag=
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc=no
+	  else
+	    lt_cv_archive_cmds_need_lc=yes
+	  fi
+	  allow_undefined_flag=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+if test "$GCC" = yes; then
+  case $host_os in
+    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+    *) lt_awk_arg="/^libraries:/" ;;
+  esac
+  case $host_os in
+    mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
+    *) lt_sed_strip_eq="s,=/,/,g" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+  case $lt_search_path_spec in
+  *\;*)
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+    ;;
+  *)
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+    ;;
+  esac
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary.
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+    else
+      test -d "$lt_sys_path" && \
+	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+  lt_foo="";
+  lt_count=0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo="/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[lt_foo]++; }
+  if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+  # AWK program above erroneously prepends '/' to C:/dos/paths
+  # for these hosts.
+  case $host_os in
+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+      $SED 's,/\([A-Za-z]:\),\1,g'` ;;
+  esac
+  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[4-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+
+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
+
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+    library_names_spec='${libname}.dll.lib'
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec="$LIB"
+      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
+      ;;
+    esac
+
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
+    ;;
+
+  *)
+    # Assume MSVC wrapper
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    dynamic_linker='Win32 ld.exe'
+    ;;
+  esac
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[123]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+haiku*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
+
+interix[3-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+
+fi
+
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
+    *)				need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" ||
+   test -n "$runpath_var" ||
+   test "X$hardcode_automatic" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
+
+if test "$hardcode_action" = relink ||
+   test "$inherit_rpath" = yes; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+
+
+
+
+  if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32* | cegcc*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+    ;;
+
+  *)
+    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = xyes; then :
+  lt_cv_dlopen="shl_load"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if ${ac_cv_lib_dld_shl_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_shl_load=yes
+else
+  ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+else
+  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if ${ac_cv_lib_svld_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_svld_dlopen=yes
+else
+  ac_cv_lib_svld_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if ${ac_cv_lib_dld_dld_link+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link ();
+int
+main ()
+{
+return dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_dld_link=yes
+else
+  ac_cv_lib_dld_dld_link=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+	}
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self_static+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+	}
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+  darwin*)
+    if test -n "$STRIP" ; then
+      striplib="$STRIP -x"
+      old_striplib="$STRIP -S"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    fi
+    ;;
+  *)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    ;;
+  esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+  # Report which library types will actually be built
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+  test "$can_build_shared" = "no" && enable_shared=no
+
+  # On AIX, shared libraries and static libraries use the same namespace, and
+  # are all built from PIC.
+  case $host_os in
+  aix3*)
+    test "$enable_shared" = yes && enable_static=no
+    if test -n "$RANLIB"; then
+      archive_cmds="$archive_cmds~\$RANLIB \$lib"
+      postinstall_cmds='$RANLIB $lib'
+    fi
+    ;;
+
+  aix[4-9]*)
+    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+      test "$enable_shared" = yes && enable_static=no
+    fi
+    ;;
+  esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+  # Make sure either enable_shared or enable_static is yes.
+  test "$enable_shared" = yes || enable_static=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+
+
+
+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
+
+CC="$lt_save_CC"
+
+      if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  ac_ext=cpp
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
+$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
+if test -z "$CXXCPP"; then
+  if ${ac_cv_prog_CXXCPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CXXCPP needs to be expanded
+    for CXXCPP in "$CXX -E" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # 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 confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+  CXXCPP=$ac_cv_prog_CXXCPP
+else
+  ac_cv_prog_CXXCPP=$CXXCPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
+$as_echo "$CXXCPP" >&6; }
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # 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 confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+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
+
+else
+  _lt_caught_CXX_error=yes
+fi
+
+ac_ext=cpp
+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
+
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+compiler_needs_object_CXX=no
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_direct_absolute_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_flag_spec_ld_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_shlibpath_var_CXX=unsupported
+hardcode_automatic_CXX=no
+inherit_rpath_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+reload_flag_CXX=$reload_flag
+reload_cmds_CXX=$reload_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_caught_CXX_error" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="int some_variable = 0;"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+  # save warnings/boilerplate of simple test code
+  ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+  ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC=$CC
+  lt_save_CFLAGS=$CFLAGS
+  lt_save_LD=$LD
+  lt_save_GCC=$GCC
+  GCC=$GXX
+  lt_save_with_gnu_ld=$with_gnu_ld
+  lt_save_path_LD=$lt_cv_path_LD
+  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+  else
+    $as_unset lt_cv_prog_gnu_ld
+  fi
+  if test -n "${lt_cv_path_LDCXX+set}"; then
+    lt_cv_path_LD=$lt_cv_path_LDCXX
+  else
+    $as_unset lt_cv_path_LD
+  fi
+  test -z "${LDCXX+set}" || LD=$LDCXX
+  CC=${CXX-"c++"}
+  CFLAGS=$CXXFLAGS
+  compiler=$CC
+  compiler_CXX=$CC
+  for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+
+
+  if test -n "$compiler"; then
+    # We don't want -fno-exception when compiling C++ code, so set the
+    # no_builtin_flag separately
+    if test "$GXX" = yes; then
+      lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+    else
+      lt_prog_compiler_no_builtin_flag_CXX=
+    fi
+
+    if test "$GXX" = yes; then
+      # Set up default GNU C++ configuration
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${lt_cv_path_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+      # Check if GNU C++ uses GNU ld as the underlying linker, since the
+      # archiving commands below assume that GNU ld is being used.
+      if test "$with_gnu_ld" = yes; then
+        archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+        export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+        # If archive_cmds runs LD, not CC, wlarc should be empty
+        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+        #     investigate it a little bit more. (MM)
+        wlarc='${wl}'
+
+        # ancient GNU ld didn't support --whole-archive et. al.
+        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+	  $GREP 'no-whole-archive' > /dev/null; then
+          whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+        else
+          whole_archive_flag_spec_CXX=
+        fi
+      else
+        with_gnu_ld=no
+        wlarc=
+
+        # A generic and very simple default shared library creation
+        # command for GNU C++ for the case where it uses the native
+        # linker, instead of GNU ld.  If possible, this setting should
+        # overridden to take advantage of the native linker features on
+        # the platform it is being used on.
+        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+      fi
+
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+    else
+      GXX=no
+      with_gnu_ld=no
+      wlarc=
+    fi
+
+    # PORTME: fill in a description of your system's C++ link characteristics
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+    ld_shlibs_CXX=yes
+    case $host_os in
+      aix3*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+      aix[4-9]*)
+        if test "$host_cpu" = ia64; then
+          # On IA64, the linker does run time linking by default, so we don't
+          # have to do anything special.
+          aix_use_runtimelinking=no
+          exp_sym_flag='-Bexport'
+          no_entry_flag=""
+        else
+          aix_use_runtimelinking=no
+
+          # Test if we are trying to use run time linking or normal
+          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+          # need to do runtime linking.
+          case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+	    for ld_flag in $LDFLAGS; do
+	      case $ld_flag in
+	      *-brtl*)
+	        aix_use_runtimelinking=yes
+	        break
+	        ;;
+	      esac
+	    done
+	    ;;
+          esac
+
+          exp_sym_flag='-bexport'
+          no_entry_flag='-bnoentry'
+        fi
+
+        # When large executables or shared objects are built, AIX ld can
+        # have problems creating the table of contents.  If linking a library
+        # or program results in "error TOC overflow" add -mminimal-toc to
+        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+        archive_cmds_CXX=''
+        hardcode_direct_CXX=yes
+        hardcode_direct_absolute_CXX=yes
+        hardcode_libdir_separator_CXX=':'
+        link_all_deplibs_CXX=yes
+        file_list_spec_CXX='${wl}-f,'
+
+        if test "$GXX" = yes; then
+          case $host_os in aix4.[012]|aix4.[012].*)
+          # We only want to do this on AIX 4.2 and lower, the check
+          # below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" &&
+	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+	  then
+	    # We have reworked collect2
+	    :
+	  else
+	    # We have old collect2
+	    hardcode_direct_CXX=unsupported
+	    # It fails to find uninstalled libraries when the uninstalled
+	    # path is not listed in the libpath.  Setting hardcode_minus_L
+	    # to unsupported forces relinking
+	    hardcode_minus_L_CXX=yes
+	    hardcode_libdir_flag_spec_CXX='-L$libdir'
+	    hardcode_libdir_separator_CXX=
+	  fi
+          esac
+          shared_flag='-shared'
+	  if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag="$shared_flag "'${wl}-G'
+	  fi
+        else
+          # not using gcc
+          if test "$host_cpu" = ia64; then
+	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	  # chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+          else
+	    if test "$aix_use_runtimelinking" = yes; then
+	      shared_flag='${wl}-G'
+	    else
+	      shared_flag='${wl}-bM:SRE'
+	    fi
+          fi
+        fi
+
+        export_dynamic_flag_spec_CXX='${wl}-bexpall'
+        # It seems that -bexpall does not export symbols beginning with
+        # underscore (_), so it is better to generate a list of symbols to
+	# export.
+        always_export_symbols_CXX=yes
+        if test "$aix_use_runtimelinking" = yes; then
+          # Warning - without using the other runtime loading flags (-brtl),
+          # -berok will link without error, but may produce a broken library.
+          allow_undefined_flag_CXX='-berok'
+          # Determine the default libpath from the value encoded in an empty
+          # executable.
+          if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath__CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX="/usr/lib:/lib"
+  fi
+
+fi
+
+  aix_libpath=$lt_cv_aix_libpath__CXX
+fi
+
+          hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+          archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+        else
+          if test "$host_cpu" = ia64; then
+	    hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+	    allow_undefined_flag_CXX="-z nodefs"
+	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+          else
+	    # Determine the default libpath from the value encoded in an
+	    # empty executable.
+	    if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath__CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX="/usr/lib:/lib"
+  fi
+
+fi
+
+  aix_libpath=$lt_cv_aix_libpath__CXX
+fi
+
+	    hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+	    # Warning - without using the other run time loading flags,
+	    # -berok will link without error, but may produce a broken library.
+	    no_undefined_flag_CXX=' ${wl}-bernotok'
+	    allow_undefined_flag_CXX=' ${wl}-berok'
+	    if test "$with_gnu_ld" = yes; then
+	      # We only use this code for GNU lds that support --whole-archive.
+	      whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	    else
+	      # Exported symbols can be pulled into shared objects from archives
+	      whole_archive_flag_spec_CXX='$convenience'
+	    fi
+	    archive_cmds_need_lc_CXX=yes
+	    # This is similar to how AIX traditionally builds its shared
+	    # libraries.
+	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+          fi
+        fi
+        ;;
+
+      beos*)
+	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	  allow_undefined_flag_CXX=unsupported
+	  # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	  # support --undefined.  This deserves some investigation.  FIXME
+	  archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	else
+	  ld_shlibs_CXX=no
+	fi
+	;;
+
+      chorus*)
+        case $cc_basename in
+          *)
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=no
+	  ;;
+        esac
+        ;;
+
+      cygwin* | mingw* | pw32* | cegcc*)
+	case $GXX,$cc_basename in
+	,cl* | no,cl*)
+	  # Native MSVC
+	  # hardcode_libdir_flag_spec is actually meaningless, as there is
+	  # no search path for DLLs.
+	  hardcode_libdir_flag_spec_CXX=' '
+	  allow_undefined_flag_CXX=unsupported
+	  always_export_symbols_CXX=yes
+	  file_list_spec_CXX='@'
+	  # Tell ltmain to make .lib files, not .a files.
+	  libext=lib
+	  # Tell ltmain to make .dll files, not .so files.
+	  shrext_cmds=".dll"
+	  # FIXME: Setting linknames here is a bad hack.
+	  archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+	  archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	      $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+	    else
+	      $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+	    fi~
+	    $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+	    linknames='
+	  # The linker will not automatically build a static lib if we build a DLL.
+	  # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true'
+	  enable_shared_with_static_runtimes_CXX=yes
+	  # Don't use ranlib
+	  old_postinstall_cmds_CXX='chmod 644 $oldlib'
+	  postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~
+	    lt_tool_outputfile="@TOOL_OUTPUT@"~
+	    case $lt_outputfile in
+	      *.exe|*.EXE) ;;
+	      *)
+		lt_outputfile="$lt_outputfile.exe"
+		lt_tool_outputfile="$lt_tool_outputfile.exe"
+		;;
+	    esac~
+	    func_to_tool_file "$lt_outputfile"~
+	    if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+	      $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+	      $RM "$lt_outputfile.manifest";
+	    fi'
+	  ;;
+	*)
+	  # g++
+	  # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+	  # as there is no search path for DLLs.
+	  hardcode_libdir_flag_spec_CXX='-L$libdir'
+	  export_dynamic_flag_spec_CXX='${wl}--export-all-symbols'
+	  allow_undefined_flag_CXX=unsupported
+	  always_export_symbols_CXX=no
+	  enable_shared_with_static_runtimes_CXX=yes
+
+	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	    # If the export-symbols file already is a .def file (1st line
+	    # is EXPORTS), use it as is; otherwise, prepend...
+	    archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	      cp $export_symbols $output_objdir/$soname.def;
+	    else
+	      echo EXPORTS > $output_objdir/$soname.def;
+	      cat $export_symbols >> $output_objdir/$soname.def;
+	    fi~
+	    $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	  else
+	    ld_shlibs_CXX=no
+	  fi
+	  ;;
+	esac
+	;;
+      darwin* | rhapsody*)
+
+
+  archive_cmds_need_lc_CXX=no
+  hardcode_direct_CXX=no
+  hardcode_automatic_CXX=yes
+  hardcode_shlibpath_var_CXX=unsupported
+  if test "$lt_cv_ld_force_load" = "yes"; then
+    whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+  else
+    whole_archive_flag_spec_CXX=''
+  fi
+  link_all_deplibs_CXX=yes
+  allow_undefined_flag_CXX="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=func_echo_all
+    archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+       if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+      archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+      archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+    fi
+
+  else
+  ld_shlibs_CXX=no
+  fi
+
+	;;
+
+      dgux*)
+        case $cc_basename in
+          ec++*)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          ghcx*)
+	    # Green Hills C++ Compiler
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+        esac
+        ;;
+
+      freebsd[12]*)
+        # C++ shared libraries reported to be fairly broken before
+	# switch to ELF
+        ld_shlibs_CXX=no
+        ;;
+
+      freebsd-elf*)
+        archive_cmds_need_lc_CXX=no
+        ;;
+
+      freebsd* | dragonfly*)
+        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+        # conventions
+        ld_shlibs_CXX=yes
+        ;;
+
+      gnu*)
+        ;;
+
+      haiku*)
+        archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        link_all_deplibs_CXX=yes
+        ;;
+
+      hpux9*)
+        hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+        hardcode_libdir_separator_CXX=:
+        export_dynamic_flag_spec_CXX='${wl}-E'
+        hardcode_direct_CXX=yes
+        hardcode_minus_L_CXX=yes # Not in the search PATH,
+				             # but as the default
+				             # location of the library.
+
+        case $cc_basename in
+          CC*)
+            # FIXME: insert proper C++ library support
+            ld_shlibs_CXX=no
+            ;;
+          aCC*)
+            archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            # Commands to make compiler produce verbose output that lists
+            # what "hidden" libraries, object files and flags are used when
+            # linking a shared library.
+            #
+            # There doesn't appear to be a way to prevent this compiler from
+            # explicitly linking system object files so we need to strip them
+            # from the output so that they don't get included in the library
+            # dependencies.
+            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+            ;;
+          *)
+            if test "$GXX" = yes; then
+              archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            else
+              # FIXME: insert proper C++ library support
+              ld_shlibs_CXX=no
+            fi
+            ;;
+        esac
+        ;;
+
+      hpux10*|hpux11*)
+        if test $with_gnu_ld = no; then
+	  hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_separator_CXX=:
+
+          case $host_cpu in
+            hppa*64*|ia64*)
+              ;;
+            *)
+	      export_dynamic_flag_spec_CXX='${wl}-E'
+              ;;
+          esac
+        fi
+        case $host_cpu in
+          hppa*64*|ia64*)
+            hardcode_direct_CXX=no
+            hardcode_shlibpath_var_CXX=no
+            ;;
+          *)
+            hardcode_direct_CXX=yes
+            hardcode_direct_absolute_CXX=yes
+            hardcode_minus_L_CXX=yes # Not in the search PATH,
+					         # but as the default
+					         # location of the library.
+            ;;
+        esac
+
+        case $cc_basename in
+          CC*)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          aCC*)
+	    case $host_cpu in
+	      hppa*64*)
+	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	      ia64*)
+	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	      *)
+	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	    esac
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    ;;
+          *)
+	    if test "$GXX" = yes; then
+	      if test $with_gnu_ld = no; then
+	        case $host_cpu in
+	          hppa*64*)
+	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          ia64*)
+	            archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          *)
+	            archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	        esac
+	      fi
+	    else
+	      # FIXME: insert proper C++ library support
+	      ld_shlibs_CXX=no
+	    fi
+	    ;;
+        esac
+        ;;
+
+      interix[3-9]*)
+	hardcode_direct_CXX=no
+	hardcode_shlibpath_var_CXX=no
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec_CXX='${wl}-E'
+	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+	# Instead, shared libraries are loaded at an image base (0x10000000 by
+	# default) and relocated if they conflict, which is a slow very memory
+	# consuming and fragmenting process.  To avoid this, we pick a random,
+	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+	archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	;;
+      irix5* | irix6*)
+        case $cc_basename in
+          CC*)
+	    # SGI C++
+	    archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+	    # necessary to make sure instantiated templates are included
+	    # in the archive.
+	    old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+	    ;;
+          *)
+	    if test "$GXX" = yes; then
+	      if test "$with_gnu_ld" = no; then
+	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	      else
+	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
+	      fi
+	    fi
+	    link_all_deplibs_CXX=yes
+	    ;;
+        esac
+        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+        hardcode_libdir_separator_CXX=:
+        inherit_rpath_CXX=yes
+        ;;
+
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+        case $cc_basename in
+          KCC*)
+	    # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	    # KCC will only create a shared library if the output file
+	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
+	    # to its proper name (with version) after linking.
+	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	    archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+
+	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	    old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+	    ;;
+	  icpc* | ecpc* )
+	    # Intel C++
+	    with_gnu_ld=yes
+	    # version 8.0 and above of icpc choke on multiply defined symbols
+	    # if we add $predep_objects and $postdep_objects, however 7.1 and
+	    # earlier do not add the objects themselves.
+	    case `$CC -V 2>&1` in
+	      *"Version 7."*)
+	        archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+		archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+		;;
+	      *)  # Version 8.0 or newer
+	        tmp_idyn=
+	        case $host_cpu in
+		  ia64*) tmp_idyn=' -i_dynamic';;
+		esac
+	        archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+		archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+		;;
+	    esac
+	    archive_cmds_need_lc_CXX=no
+	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	    whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	    ;;
+          pgCC* | pgcpp*)
+            # Portland Group C++ compiler
+	    case `$CC -V` in
+	    *pgCC\ [1-5].* | *pgcpp\ [1-5].*)
+	      prelink_cmds_CXX='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+		compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+	      old_archive_cmds_CXX='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+		$RANLIB $oldlib'
+	      archive_cmds_CXX='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+	      archive_expsym_cmds_CXX='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+	      ;;
+	    *) # Version 6 and above use weak symbols
+	      archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+	      archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+	      ;;
+	    esac
+
+	    hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	    whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+            ;;
+	  cxx*)
+	    # Compaq C++
+	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	    archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+	    runpath_var=LD_RUN_PATH
+	    hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+	    hardcode_libdir_separator_CXX=:
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
+	    ;;
+	  xl* | mpixl* | bgxl*)
+	    # IBM XL 8.0 on PPC, with GNU ld
+	    hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	    archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	    if test "x$supports_anon_versioning" = xyes; then
+	      archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~
+		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+		echo "local: *; };" >> $output_objdir/$libname.ver~
+		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	    fi
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      no_undefined_flag_CXX=' -zdefs'
+	      archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+	      hardcode_libdir_flag_spec_CXX='-R$libdir'
+	      whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	      compiler_needs_object_CXX=yes
+
+	      # Not sure whether something based on
+	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+	      # would be better.
+	      output_verbose_link_cmd='func_echo_all'
+
+	      # Archives containing C++ object files must be created using
+	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	      # necessary to make sure instantiated templates are included
+	      # in the archive.
+	      old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+
+      lynxos*)
+        # FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+
+      m88k*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+	;;
+
+      mvs*)
+        case $cc_basename in
+          cxx*)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+	  *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+	esac
+	;;
+
+      netbsd*)
+        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	  archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+	  wlarc=
+	  hardcode_libdir_flag_spec_CXX='-R$libdir'
+	  hardcode_direct_CXX=yes
+	  hardcode_shlibpath_var_CXX=no
+	fi
+	# Workaround some broken pre-1.5 toolchains
+	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+	;;
+
+      *nto* | *qnx*)
+        ld_shlibs_CXX=yes
+	;;
+
+      openbsd2*)
+        # C++ shared libraries are fairly broken
+	ld_shlibs_CXX=no
+	;;
+
+      openbsd*)
+	if test -f /usr/libexec/ld.so; then
+	  hardcode_direct_CXX=yes
+	  hardcode_shlibpath_var_CXX=no
+	  hardcode_direct_absolute_CXX=yes
+	  archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+	  hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	    archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+	    export_dynamic_flag_spec_CXX='${wl}-E'
+	    whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+	  fi
+	  output_verbose_link_cmd=func_echo_all
+	else
+	  ld_shlibs_CXX=no
+	fi
+	;;
+
+      osf3* | osf4* | osf5*)
+        case $cc_basename in
+          KCC*)
+	    # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	    # KCC will only create a shared library if the output file
+	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
+	    # to its proper name (with version) after linking.
+	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	    hardcode_libdir_separator_CXX=:
+
+	    # Archives containing C++ object files must be created using
+	    # the KAI C++ compiler.
+	    case $host in
+	      osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;;
+	      *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;;
+	    esac
+	    ;;
+          RCC*)
+	    # Rational C++ 2.4.1
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          cxx*)
+	    case $host in
+	      osf3*)
+	        allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	        archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+		;;
+	      *)
+	        allow_undefined_flag_CXX=' -expect_unresolved \*'
+	        archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	        archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+	          echo "-hidden">> $lib.exp~
+	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
+	          $RM $lib.exp'
+	        hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+		;;
+	    esac
+
+	    hardcode_libdir_separator_CXX=:
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    ;;
+	  *)
+	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	      allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	      case $host in
+	        osf3*)
+	          archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+		  ;;
+	        *)
+	          archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+		  ;;
+	      esac
+
+	      hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	      hardcode_libdir_separator_CXX=:
+
+	      # Commands to make compiler produce verbose output that lists
+	      # what "hidden" libraries, object files and flags are used when
+	      # linking a shared library.
+	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+	    else
+	      # FIXME: insert proper C++ library support
+	      ld_shlibs_CXX=no
+	    fi
+	    ;;
+        esac
+        ;;
+
+      psos*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+
+      sunos4*)
+        case $cc_basename in
+          CC*)
+	    # Sun C++ 4.x
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          lcc*)
+	    # Lucid
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+        esac
+        ;;
+
+      solaris*)
+        case $cc_basename in
+          CC* | sunCC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+            archive_cmds_need_lc_CXX=yes
+	    no_undefined_flag_CXX=' -zdefs'
+	    archive_cmds_CXX='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	    archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	    hardcode_libdir_flag_spec_CXX='-R$libdir'
+	    hardcode_shlibpath_var_CXX=no
+	    case $host_os in
+	      solaris2.[0-5] | solaris2.[0-5].*) ;;
+	      *)
+		# The compiler driver will combine and reorder linker options,
+		# but understands `-z linker_flag'.
+	        # Supported since Solaris 2.6 (maybe 2.5.1?)
+		whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
+	        ;;
+	    esac
+	    link_all_deplibs_CXX=yes
+
+	    output_verbose_link_cmd='func_echo_all'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	    # necessary to make sure instantiated templates are included
+	    # in the archive.
+	    old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+	    ;;
+          gcx*)
+	    # Green Hills C++ Compiler
+	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+	    # The C++ compiler must be used to create the archive.
+	    old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	    ;;
+          *)
+	    # GNU C++ compiler with Solaris linker
+	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	      no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+		  $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	        # Commands to make compiler produce verbose output that lists
+	        # what "hidden" libraries, object files and flags are used when
+	        # linking a shared library.
+	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+	      else
+	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
+	        # platform.
+	        archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	        # Commands to make compiler produce verbose output that lists
+	        # what "hidden" libraries, object files and flags are used when
+	        # linking a shared library.
+	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+	      fi
+
+	      hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+	      case $host_os in
+		solaris2.[0-5] | solaris2.[0-5].*) ;;
+		*)
+		  whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+		  ;;
+	      esac
+	    fi
+	    ;;
+        esac
+        ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag_CXX='${wl}-z,text'
+      archive_cmds_need_lc_CXX=no
+      hardcode_shlibpath_var_CXX=no
+      runpath_var='LD_RUN_PATH'
+
+      case $cc_basename in
+        CC*)
+	  archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+      esac
+      ;;
+
+      sysv5* | sco3.2v5* | sco5v6*)
+	# Note: We can NOT use -z defs as we might desire, because we do not
+	# link with -lc, and that would cause any symbols used from libc to
+	# always be unresolved, which means just about no library would
+	# ever link correctly.  If we're not using GNU ld we use -z text
+	# though, which does catch some bad symbols but isn't as heavy-handed
+	# as -z defs.
+	no_undefined_flag_CXX='${wl}-z,text'
+	allow_undefined_flag_CXX='${wl}-z,nodefs'
+	archive_cmds_need_lc_CXX=no
+	hardcode_shlibpath_var_CXX=no
+	hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir'
+	hardcode_libdir_separator_CXX=':'
+	link_all_deplibs_CXX=yes
+	export_dynamic_flag_spec_CXX='${wl}-Bexport'
+	runpath_var='LD_RUN_PATH'
+
+	case $cc_basename in
+          CC*)
+	    archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~
+	      '"$old_archive_cmds_CXX"
+	    reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~
+	      '"$reload_cmds_CXX"
+	    ;;
+	  *)
+	    archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    ;;
+	esac
+      ;;
+
+      tandem*)
+        case $cc_basename in
+          NCC*)
+	    # NonStop-UX NCC 3.20
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+        esac
+        ;;
+
+      vxworks*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+
+      *)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+    esac
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
+    test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+    GCC_CXX="$GXX"
+    LD_CXX="$LD"
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    # Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
+
+cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+_LT_EOF
+
+
+_lt_libdeps_save_CFLAGS=$CFLAGS
+case "$CC $CFLAGS " in #(
+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+esac
+
+if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  for p in `eval "$output_verbose_link_cmd"`; do
+    case ${prev}${p} in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" ||
+          test $p = "-R"; then
+	 prev=$p
+	 continue
+       fi
+
+       # Expand the sysroot to ease extracting the directories later.
+       if test -z "$prev"; then
+         case $p in
+         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
+         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
+         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
+         esac
+       fi
+       case $p in
+       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
+       esac
+       if test "$pre_test_object_deps_done" = no; then
+	 case ${prev} in
+	 -L | -R)
+	   # Internal compiler library paths should come after those
+	   # provided the user.  The postdeps already come after the
+	   # user supplied libs so there is no need to process them.
+	   if test -z "$compiler_lib_search_path_CXX"; then
+	     compiler_lib_search_path_CXX="${prev}${p}"
+	   else
+	     compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
+	   fi
+	   ;;
+	 # The "-l" case would never come before the object being
+	 # linked, so don't bother handling this case.
+	 esac
+       else
+	 if test -z "$postdeps_CXX"; then
+	   postdeps_CXX="${prev}${p}"
+	 else
+	   postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+	 fi
+       fi
+       prev=
+       ;;
+
+    *.lto.$objext) ;; # Ignore GCC LTO objects
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+	 pre_test_object_deps_done=yes
+	 continue
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 if test -z "$predep_objects_CXX"; then
+	   predep_objects_CXX="$p"
+	 else
+	   predep_objects_CXX="$predep_objects_CXX $p"
+	 fi
+       else
+	 if test -z "$postdep_objects_CXX"; then
+	   postdep_objects_CXX="$p"
+	 else
+	   postdep_objects_CXX="$postdep_objects_CXX $p"
+	 fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling CXX test program"
+fi
+
+$RM -f confest.$objext
+CFLAGS=$_lt_libdeps_save_CFLAGS
+
+# PORTME: override above test on systems where it is broken
+case $host_os in
+interix[3-9]*)
+  # Interix 3.5 installs completely hosed .la files for C++, so rather than
+  # hack all around it, let's just trust "g++" to DTRT.
+  predep_objects_CXX=
+  postdep_objects_CXX=
+  postdeps_CXX=
+  ;;
+
+linux*)
+  case `$CC -V 2>&1 | sed 5q` in
+  *Sun\ C*)
+    # Sun C++ 5.9
+
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    if test "$solaris_use_stlport4" != yes; then
+      postdeps_CXX='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+
+solaris*)
+  case $cc_basename in
+  CC* | sunCC*)
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    # Adding this requires a known-good setup of shared libraries for
+    # Sun compiler versions before 5.6, else PIC objects from an old
+    # archive will be linked into the output, leading to subtle bugs.
+    if test "$solaris_use_stlport4" != yes; then
+      postdeps_CXX='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+esac
+
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+ compiler_lib_search_dirs_CXX=
+if test -n "${compiler_lib_search_path_CXX}"; then
+ compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    lt_prog_compiler_wl_CXX='-Wl,'
+    lt_prog_compiler_static_CXX='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_CXX='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            lt_prog_compiler_pic_CXX='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | cygwin* | os2* | pw32* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_CXX='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      lt_prog_compiler_pic_CXX=
+      ;;
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static_CXX=
+      ;;
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_CXX=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+	;;
+      *)
+	lt_prog_compiler_pic_CXX='-fPIC'
+	;;
+      esac
+      ;;
+    *qnx* | *nto*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic_CXX='-fPIC -shared'
+      ;;
+    *)
+      lt_prog_compiler_pic_CXX='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix[4-9]*)
+	# All AIX code is PIC.
+	if test "$host_cpu" = ia64; then
+	  # AIX 5 now supports IA64 processor
+	  lt_prog_compiler_static_CXX='-Bstatic'
+	else
+	  lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68*)
+	  # Green Hills C++ Compiler
+	  # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+	  ;;
+	esac
+	;;
+      mingw* | cygwin* | os2* | pw32* | cegcc*)
+	# This hack is so that the source file can tell whether it is being
+	# built for inclusion in a dll (and should export symbols for example).
+	lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+	;;
+      dgux*)
+	case $cc_basename in
+	  ec++*)
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  ghcx*)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      freebsd* | dragonfly*)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+	    if test "$host_cpu" != ia64; then
+	      lt_prog_compiler_pic_CXX='+Z'
+	    fi
+	    ;;
+	  aCC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+	    case $host_cpu in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      lt_prog_compiler_pic_CXX='+Z'
+	      ;;
+	    esac
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      interix*)
+	# This is c89, which is MS Visual C++ (no shared libs)
+	# Anyone wants to do a port?
+	;;
+      irix5* | irix6* | nonstopux*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    # CC pic flag -KPIC is the default.
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+	case $cc_basename in
+	  KCC*)
+	    # KAI C++ Compiler
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    ;;
+	  ecpc* )
+	    # old Intel C++ for x86_64 which still supported -KPIC.
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-static'
+	    ;;
+	  icpc* )
+	    # Intel C++, used to be incompatible with GCC.
+	    # ICC 10 doesn't accept -KPIC any more.
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    lt_prog_compiler_static_CXX='-static'
+	    ;;
+	  pgCC* | pgcpp*)
+	    # Portland Group C++ compiler
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-fpic'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	  cxx*)
+	    # Compaq C++
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  xlc* | xlC* | bgxl[cC]* | mpixl[cC]*)
+	    # IBM XL 8.0, 9.0 on PPC and BlueGene
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-qpic'
+	    lt_prog_compiler_static_CXX='-qstaticlink'
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      lt_prog_compiler_pic_CXX='-KPIC'
+	      lt_prog_compiler_static_CXX='-Bstatic'
+	      lt_prog_compiler_wl_CXX='-Qoption ld '
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx*)
+	    lt_prog_compiler_pic_CXX='-W c,exportall'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      netbsd* | netbsdelf*-gnu)
+	;;
+      *qnx* | *nto*)
+        # QNX uses GNU C++, but need to define -shared option too, otherwise
+        # it will coredump.
+        lt_prog_compiler_pic_CXX='-fPIC -shared'
+        ;;
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC*)
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    ;;
+	  RCC*)
+	    # Rational C++ 2.4.1
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  cxx*)
+	    # Digital/Compaq C++
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      psos*)
+	;;
+      solaris*)
+	case $cc_basename in
+	  CC* | sunCC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    lt_prog_compiler_wl_CXX='-Qoption ld '
+	    ;;
+	  gcx*)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.x
+	    lt_prog_compiler_pic_CXX='-pic'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	  lcc*)
+	    # Lucid
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC*)
+	    # NonStop-UX NCC 3.20
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      vxworks*)
+	;;
+      *)
+	lt_prog_compiler_can_build_shared_CXX=no
+	;;
+    esac
+  fi
+
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_CXX=
+    ;;
+  *)
+    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+    ;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; }
+lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works_CXX=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works_CXX=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then
+    case $lt_prog_compiler_pic_CXX in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+     esac
+else
+    lt_prog_compiler_pic_CXX=
+     lt_prog_compiler_can_build_shared_CXX=no
+fi
+
+fi
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works_CXX=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works_CXX=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works_CXX=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then
+    :
+else
+    lt_prog_compiler_static_CXX=
+fi
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
+
+
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+  case $host_os in
+  aix[4-9]*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    # Also, AIX nm treats weak defined symbols like other global defined
+    # symbols, whereas GNU nm marks them as "W".
+    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    else
+      export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    export_symbols_cmds_CXX="$ltdll_cmds"
+    ;;
+  cygwin* | mingw* | cegcc*)
+    case $cc_basename in
+    cl*) ;;
+    *)
+      export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+      exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+      ;;
+    esac
+    ;;
+  linux* | k*bsd*-gnu | gnu*)
+    link_all_deplibs_CXX=no
+    ;;
+  *)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+    ;;
+  esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+with_gnu_ld_CXX=$with_gnu_ld
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_CXX=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_CXX in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  $RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$lt_prog_compiler_wl_CXX
+	  pic_flag=$lt_prog_compiler_pic_CXX
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+	  allow_undefined_flag_CXX=
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc_CXX=no
+	  else
+	    lt_cv_archive_cmds_need_lc_CXX=yes
+	  fi
+	  allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; }
+      archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[4-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
+
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+    library_names_spec='${libname}.dll.lib'
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec="$LIB"
+      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
+      ;;
+    esac
+
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
+    ;;
+
+  *)
+    # Assume MSVC wrapper
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    dynamic_linker='Win32 ld.exe'
+    ;;
+  esac
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[123]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+haiku*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
+
+interix[3-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \
+	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\""
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+
+fi
+
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
+    *)				need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" ||
+   test -n "$runpath_var_CXX" ||
+   test "X$hardcode_automatic_CXX" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$hardcode_direct_CXX" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
+     test "$hardcode_minus_L_CXX" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_CXX=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_CXX=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_CXX=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
+$as_echo "$hardcode_action_CXX" >&6; }
+
+if test "$hardcode_action_CXX" = relink ||
+   test "$inherit_rpath_CXX" = yes; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+
+
+
+
+
+  fi # test -n "$compiler"
+
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
+  LDCXX=$LD
+  LD=$lt_save_LD
+  GCC=$lt_save_GCC
+  with_gnu_ld=$lt_save_with_gnu_ld
+  lt_cv_path_LDCXX=$lt_cv_path_LD
+  lt_cv_path_LD=$lt_save_path_LD
+  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+fi # test "$_lt_caught_CXX_error" != yes
+
+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_config_commands="$ac_config_commands libtool"
+
+
+
+
+# Only expand once:
+
+
+ac_ext=cpp
+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
+
+#AC_PATH_XTRA
+
+######################################################################
+# Automake initial setup
+######################################################################
+am__api_version='1.11'
+
+# 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"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /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
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+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.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$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'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[\\\"\#\$\&\'\`$am_lf]*)
+    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+  *[\\\"\#\$\&\'\`$am_lf\ \	]*)
+    as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+   if test "$*" = "X"; then
+      # -L didn't work.
+      set X `ls -t "$srcdir/configure" conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$*" != "X $srcdir/configure conftest.file" \
+      && test "$*" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" "$LINENO" 5
+   fi
+
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if ${ac_cv_path_mkdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in mkdir gmkdir; do
+	 for ac_exec_ext in '' $ac_executable_extensions; do
+	   { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+	     'mkdir (GNU coreutils) '* | \
+	     'mkdir (coreutils) '* | \
+	     'mkdir (fileutils) '4.1*)
+	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+	       break 3;;
+	   esac
+	 done
+       done
+  done
+IFS=$as_save_IFS
+
+fi
+
+  test -d ./--version && rmdir ./--version
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    MKDIR_P="$ac_install_sh -d"
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+  [\\/$]* | ?:[\\/]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+  enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in
+yes) AM_DEFAULT_VERBOSITY=0;;
+no)  AM_DEFAULT_VERBOSITY=1;;
+*)   AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  am__isrc=' -I$(srcdir)'
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='FACTpp'
+ VERSION='1.0'
+
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+
+
+
+
+depcc="$CC"   am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+depcc="$CXX"  am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CXX_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CXX_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CXX_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+  am__fastdepCXX_TRUE=
+  am__fastdepCXX_FALSE='#'
+else
+  am__fastdepCXX_TRUE='#'
+  am__fastdepCXX_FALSE=
+fi
+
+
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in
+yes) AM_DEFAULT_VERBOSITY=0;;
+no)  AM_DEFAULT_VERBOSITY=1;;
+*)   AM_DEFAULT_VERBOSITY=0;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+
+if test "x$CC" != xcc; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5
+$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5
+$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
+fi
+set dummy $CC; ac_cc=`$as_echo "$2" |
+		      sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+# Make sure it works both with $CC and with simple cc.
+# We do the test twice because some compilers refuse to overwrite an
+# existing .o file with -o, though they will create one.
+ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+rm -f conftest2.*
+if { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } &&
+   test -f conftest2.$ac_objext && { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; };
+then
+  eval ac_cv_prog_cc_${ac_cc}_c_o=yes
+  if test "x$CC" != xcc; then
+    # Test first that cc exists at all.
+    if { ac_try='cc -c conftest.$ac_ext >&5'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+      ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+      rm -f conftest2.*
+      if { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } &&
+	 test -f conftest2.$ac_objext && { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; };
+      then
+	# cc works too.
+	:
+      else
+	# cc exists but doesn't like -o.
+	eval ac_cv_prog_cc_${ac_cc}_c_o=no
+      fi
+    fi
+  fi
+else
+  eval ac_cv_prog_cc_${ac_cc}_c_o=no
+fi
+rm -f core conftest*
+
+fi
+if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h
+
+fi
+
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+
+
+
+######################################################################
+# DOXYGEN SUPPORT
+######################################################################
+
+### FIXME: Need a configure commandline switch
+DX_ENV="$DX_ENV EXTRACT_ALL='YES'"
+
+DX_ENV="$DX_ENV RECURSIVE='YES'"
+
+DX_ENV="$DX_ENV ALL_GRAPHS='NO'"
+  # change to yes to switch on call(er) graphs
+
+#DX_DOXYGEN_FEATURE(ON)
+                # sets HAVE_DOT
+#DX_HTML_FEATURE(ON)              # sets GENERATE_HTML (default)
+#DX_CHM_FEATURE(ON|OFF)           # sets GENERATE_HTMLHELP
+#DX_CHI_FEATURE(ON|OFF)           # sets GENERATE_CHI
+#DX_MAN_FEATURE(ON)               # sets GENERATE_MAN (segfaults)
+#DX_RTF_FEATURE(ON|OFF)           # sets GENERATE_RTF
+#DX_XML_FEATURE(ON|OFF)           # sets GENERATE_XML
+#DX_PDF_FEATURE(ON|OFF)           # sets GENERATE_PDF (default)
+                # sets GENERATE_PS  (default)
+
+
+# Files:
+DX_PROJECT=$PACKAGE_NAME
+
+DX_CONFIG=Doxyfile
+
+DX_DOCDIR=doxygen-doc
+
+
+# Environment variables used inside doxygen.cfg:
+DX_ENV="$DX_ENV SRCDIR='$srcdir'"
+
+DX_ENV="$DX_ENV PROJECT='$DX_PROJECT'"
+
+DX_ENV="$DX_ENV DOCDIR='$DX_DOCDIR'"
+
+DX_ENV="$DX_ENV VERSION='$PACKAGE_VERSION'"
+
+
+# Doxygen itself:
+
+
+
+    # Check whether --enable-doxygen-doc was given.
+if test "${enable_doxygen_doc+set}" = set; then :
+  enableval=$enable_doxygen_doc;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_doc=1
+
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_doc=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-doc" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_doc=1
+
+
+
+fi
+
+if test "$DX_FLAG_doc" = 1; then
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}doxygen", so it can be a program name with args.
+set dummy ${ac_tool_prefix}doxygen; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_DOXYGEN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_DOXYGEN in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_DOXYGEN="$DX_DOXYGEN" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_DX_DOXYGEN="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_DOXYGEN=$ac_cv_path_DX_DOXYGEN
+if test -n "$DX_DOXYGEN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_DOXYGEN" >&5
+$as_echo "$DX_DOXYGEN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_DOXYGEN"; then
+  ac_pt_DX_DOXYGEN=$DX_DOXYGEN
+  # Extract the first word of "doxygen", so it can be a program name with args.
+set dummy doxygen; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_DOXYGEN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_DOXYGEN in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_DOXYGEN="$ac_pt_DX_DOXYGEN" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_DX_DOXYGEN="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_DOXYGEN=$ac_cv_path_ac_pt_DX_DOXYGEN
+if test -n "$ac_pt_DX_DOXYGEN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_DOXYGEN" >&5
+$as_echo "$ac_pt_DX_DOXYGEN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_DOXYGEN" = x; then
+    DX_DOXYGEN=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_DOXYGEN=$ac_pt_DX_DOXYGEN
+  fi
+else
+  DX_DOXYGEN="$ac_cv_path_DX_DOXYGEN"
+fi
+
+if test "$DX_FLAG_doc$DX_DOXYGEN" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: doxygen not found - will not generate any doxygen documentation" >&5
+$as_echo "$as_me: WARNING: doxygen not found - will not generate any doxygen documentation" >&2;}
+    DX_FLAG_doc=0
+
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}perl", so it can be a program name with args.
+set dummy ${ac_tool_prefix}perl; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_PERL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_PERL in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_PERL="$DX_PERL" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_DX_PERL="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_PERL=$ac_cv_path_DX_PERL
+if test -n "$DX_PERL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_PERL" >&5
+$as_echo "$DX_PERL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_PERL"; then
+  ac_pt_DX_PERL=$DX_PERL
+  # Extract the first word of "perl", so it can be a program name with args.
+set dummy perl; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_PERL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_PERL in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_PERL="$ac_pt_DX_PERL" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_DX_PERL="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_PERL=$ac_cv_path_ac_pt_DX_PERL
+if test -n "$ac_pt_DX_PERL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_PERL" >&5
+$as_echo "$ac_pt_DX_PERL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_PERL" = x; then
+    DX_PERL=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_PERL=$ac_pt_DX_PERL
+  fi
+else
+  DX_PERL="$ac_cv_path_DX_PERL"
+fi
+
+if test "$DX_FLAG_doc$DX_PERL" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: perl not found - will not generate any doxygen documentation" >&5
+$as_echo "$as_me: WARNING: perl not found - will not generate any doxygen documentation" >&2;}
+    DX_FLAG_doc=0
+
+fi
+
+    :
+fi
+ if test "$DX_FLAG_doc" = 1; then
+  DX_COND_doc_TRUE=
+  DX_COND_doc_FALSE='#'
+else
+  DX_COND_doc_TRUE='#'
+  DX_COND_doc_FALSE=
+fi
+
+if test "$DX_FLAG_doc" = 1; then
+    DX_ENV="$DX_ENV PERL_PATH='$DX_PERL'"
+
+    :
+else
+
+    :
+fi
+
+
+# Dot for graphics:
+
+
+
+    # Check whether --enable-doxygen-dot was given.
+if test "${enable_doxygen_dot+set}" = set; then :
+  enableval=$enable_doxygen_dot;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_dot=1
+
+
+test "$DX_FLAG_doc" = "1" \
+|| as_fn_error $? "doxygen-dot requires doxygen-dot" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_dot=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-dot" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_dot=1
+
+
+test "$DX_FLAG_doc" = "1" || DX_FLAG_dot=0
+
+
+
+fi
+
+if test "$DX_FLAG_dot" = 1; then
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dot", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dot; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_DOT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_DOT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_DOT="$DX_DOT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_DX_DOT="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_DOT=$ac_cv_path_DX_DOT
+if test -n "$DX_DOT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_DOT" >&5
+$as_echo "$DX_DOT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_DOT"; then
+  ac_pt_DX_DOT=$DX_DOT
+  # Extract the first word of "dot", so it can be a program name with args.
+set dummy dot; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_DOT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_DOT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_DOT="$ac_pt_DX_DOT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_DX_DOT="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_DOT=$ac_cv_path_ac_pt_DX_DOT
+if test -n "$ac_pt_DX_DOT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_DOT" >&5
+$as_echo "$ac_pt_DX_DOT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_DOT" = x; then
+    DX_DOT=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_DOT=$ac_pt_DX_DOT
+  fi
+else
+  DX_DOT="$ac_cv_path_DX_DOT"
+fi
+
+if test "$DX_FLAG_dot$DX_DOT" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: dot not found - will not generate graphics for doxygen documentation" >&5
+$as_echo "$as_me: WARNING: dot not found - will not generate graphics for doxygen documentation" >&2;}
+    DX_FLAG_dot=0
+
+fi
+
+    :
+fi
+ if test "$DX_FLAG_dot" = 1; then
+  DX_COND_dot_TRUE=
+  DX_COND_dot_FALSE='#'
+else
+  DX_COND_dot_TRUE='#'
+  DX_COND_dot_FALSE=
+fi
+
+if test "$DX_FLAG_dot" = 1; then
+    DX_ENV="$DX_ENV HAVE_DOT='YES'"
+
+             DX_ENV="$DX_ENV DOT_PATH='`expr ".$DX_DOT" : '\(\.\)[^/]*$' \| "x$DX_DOT" : 'x\(.*\)/[^/]*$'`'"
+
+    :
+else
+    DX_ENV="$DX_ENV HAVE_DOT='NO'"
+
+    :
+fi
+
+
+# Man pages generation:
+
+
+
+    # Check whether --enable-doxygen-man was given.
+if test "${enable_doxygen_man+set}" = set; then :
+  enableval=$enable_doxygen_man;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_man=1
+
+
+test "$DX_FLAG_doc" = "1" \
+|| as_fn_error $? "doxygen-man requires doxygen-man" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_man=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-man" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_man=0
+
+
+test "$DX_FLAG_doc" = "1" || DX_FLAG_man=0
+
+
+
+fi
+
+if test "$DX_FLAG_man" = 1; then
+
+    :
+fi
+ if test "$DX_FLAG_man" = 1; then
+  DX_COND_man_TRUE=
+  DX_COND_man_FALSE='#'
+else
+  DX_COND_man_TRUE='#'
+  DX_COND_man_FALSE=
+fi
+
+if test "$DX_FLAG_man" = 1; then
+    DX_ENV="$DX_ENV GENERATE_MAN='YES'"
+
+    :
+else
+    DX_ENV="$DX_ENV GENERATE_MAN='NO'"
+
+    :
+fi
+
+
+# RTF file generation:
+
+
+
+    # Check whether --enable-doxygen-rtf was given.
+if test "${enable_doxygen_rtf+set}" = set; then :
+  enableval=$enable_doxygen_rtf;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_rtf=1
+
+
+test "$DX_FLAG_doc" = "1" \
+|| as_fn_error $? "doxygen-rtf requires doxygen-rtf" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_rtf=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-rtf" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_rtf=0
+
+
+test "$DX_FLAG_doc" = "1" || DX_FLAG_rtf=0
+
+
+
+fi
+
+if test "$DX_FLAG_rtf" = 1; then
+
+    :
+fi
+ if test "$DX_FLAG_rtf" = 1; then
+  DX_COND_rtf_TRUE=
+  DX_COND_rtf_FALSE='#'
+else
+  DX_COND_rtf_TRUE='#'
+  DX_COND_rtf_FALSE=
+fi
+
+if test "$DX_FLAG_rtf" = 1; then
+    DX_ENV="$DX_ENV GENERATE_RTF='YES'"
+
+    :
+else
+    DX_ENV="$DX_ENV GENERATE_RTF='NO'"
+
+    :
+fi
+
+
+# XML file generation:
+
+
+
+    # Check whether --enable-doxygen-xml was given.
+if test "${enable_doxygen_xml+set}" = set; then :
+  enableval=$enable_doxygen_xml;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_xml=1
+
+
+test "$DX_FLAG_doc" = "1" \
+|| as_fn_error $? "doxygen-xml requires doxygen-xml" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_xml=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-xml" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_xml=0
+
+
+test "$DX_FLAG_doc" = "1" || DX_FLAG_xml=0
+
+
+
+fi
+
+if test "$DX_FLAG_xml" = 1; then
+
+    :
+fi
+ if test "$DX_FLAG_xml" = 1; then
+  DX_COND_xml_TRUE=
+  DX_COND_xml_FALSE='#'
+else
+  DX_COND_xml_TRUE='#'
+  DX_COND_xml_FALSE=
+fi
+
+if test "$DX_FLAG_xml" = 1; then
+    DX_ENV="$DX_ENV GENERATE_XML='YES'"
+
+    :
+else
+    DX_ENV="$DX_ENV GENERATE_XML='NO'"
+
+    :
+fi
+
+
+# (Compressed) HTML help generation:
+
+
+
+    # Check whether --enable-doxygen-chm was given.
+if test "${enable_doxygen_chm+set}" = set; then :
+  enableval=$enable_doxygen_chm;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_chm=1
+
+
+test "$DX_FLAG_doc" = "1" \
+|| as_fn_error $? "doxygen-chm requires doxygen-chm" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_chm=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-chm" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_chm=0
+
+
+test "$DX_FLAG_doc" = "1" || DX_FLAG_chm=0
+
+
+
+fi
+
+if test "$DX_FLAG_chm" = 1; then
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}hhc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}hhc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_HHC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_HHC in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_HHC="$DX_HHC" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_DX_HHC="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_HHC=$ac_cv_path_DX_HHC
+if test -n "$DX_HHC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_HHC" >&5
+$as_echo "$DX_HHC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_HHC"; then
+  ac_pt_DX_HHC=$DX_HHC
+  # Extract the first word of "hhc", so it can be a program name with args.
+set dummy hhc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_HHC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_HHC in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_HHC="$ac_pt_DX_HHC" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_DX_HHC="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_HHC=$ac_cv_path_ac_pt_DX_HHC
+if test -n "$ac_pt_DX_HHC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_HHC" >&5
+$as_echo "$ac_pt_DX_HHC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_HHC" = x; then
+    DX_HHC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_HHC=$ac_pt_DX_HHC
+  fi
+else
+  DX_HHC="$ac_cv_path_DX_HHC"
+fi
+
+if test "$DX_FLAG_chm$DX_HHC" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: hhc not found - will not generate doxygen compressed HTML help documentation" >&5
+$as_echo "$as_me: WARNING: hhc not found - will not generate doxygen compressed HTML help documentation" >&2;}
+    DX_FLAG_chm=0
+
+fi
+
+    :
+fi
+ if test "$DX_FLAG_chm" = 1; then
+  DX_COND_chm_TRUE=
+  DX_COND_chm_FALSE='#'
+else
+  DX_COND_chm_TRUE='#'
+  DX_COND_chm_FALSE=
+fi
+
+if test "$DX_FLAG_chm" = 1; then
+    DX_ENV="$DX_ENV HHC_PATH='$DX_HHC'"
+
+             DX_ENV="$DX_ENV GENERATE_HTML='YES'"
+
+             DX_ENV="$DX_ENV GENERATE_HTMLHELP='YES'"
+
+    :
+else
+    DX_ENV="$DX_ENV GENERATE_HTMLHELP='NO'"
+
+    :
+fi
+
+
+# Seperate CHI file generation.
+
+
+
+    # Check whether --enable-doxygen-chi was given.
+if test "${enable_doxygen_chi+set}" = set; then :
+  enableval=$enable_doxygen_chi;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_chi=1
+
+
+test "$DX_FLAG_chm" = "1" \
+|| as_fn_error $? "doxygen-chi requires doxygen-chi" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_chi=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-chi" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_chi=0
+
+
+test "$DX_FLAG_chm" = "1" || DX_FLAG_chi=0
+
+
+
+fi
+
+if test "$DX_FLAG_chi" = 1; then
+
+    :
+fi
+ if test "$DX_FLAG_chi" = 1; then
+  DX_COND_chi_TRUE=
+  DX_COND_chi_FALSE='#'
+else
+  DX_COND_chi_TRUE='#'
+  DX_COND_chi_FALSE=
+fi
+
+if test "$DX_FLAG_chi" = 1; then
+    DX_ENV="$DX_ENV GENERATE_CHI='YES'"
+
+    :
+else
+    DX_ENV="$DX_ENV GENERATE_CHI='NO'"
+
+    :
+fi
+
+
+# Plain HTML pages generation:
+
+
+
+    # Check whether --enable-doxygen-html was given.
+if test "${enable_doxygen_html+set}" = set; then :
+  enableval=$enable_doxygen_html;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_html=1
+
+
+test "$DX_FLAG_doc" = "1" \
+|| as_fn_error $? "doxygen-html requires doxygen-html" "$LINENO" 5
+
+test "$DX_FLAG_chm" = "0" \
+|| as_fn_error $? "doxygen-html contradicts doxygen-html" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_html=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-html" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_html=1
+
+
+test "$DX_FLAG_doc" = "1" || DX_FLAG_html=0
+
+
+test "$DX_FLAG_chm" = "0" || DX_FLAG_html=0
+
+
+
+fi
+
+if test "$DX_FLAG_html" = 1; then
+
+    :
+fi
+ if test "$DX_FLAG_html" = 1; then
+  DX_COND_html_TRUE=
+  DX_COND_html_FALSE='#'
+else
+  DX_COND_html_TRUE='#'
+  DX_COND_html_FALSE=
+fi
+
+if test "$DX_FLAG_html" = 1; then
+    DX_ENV="$DX_ENV GENERATE_HTML='YES'"
+
+    :
+else
+    test "$DX_FLAG_chm" = 1 || DX_ENV="$DX_ENV GENERATE_HTML='NO'"
+
+    :
+fi
+
+
+# PostScript file generation:
+
+
+
+    # Check whether --enable-doxygen-ps was given.
+if test "${enable_doxygen_ps+set}" = set; then :
+  enableval=$enable_doxygen_ps;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_ps=1
+
+
+test "$DX_FLAG_doc" = "1" \
+|| as_fn_error $? "doxygen-ps requires doxygen-ps" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_ps=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-ps" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_ps=0
+
+
+test "$DX_FLAG_doc" = "1" || DX_FLAG_ps=0
+
+
+
+fi
+
+if test "$DX_FLAG_ps" = 1; then
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}latex", so it can be a program name with args.
+set dummy ${ac_tool_prefix}latex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_LATEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_LATEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_LATEX="$DX_LATEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_DX_LATEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_LATEX=$ac_cv_path_DX_LATEX
+if test -n "$DX_LATEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_LATEX" >&5
+$as_echo "$DX_LATEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_LATEX"; then
+  ac_pt_DX_LATEX=$DX_LATEX
+  # Extract the first word of "latex", so it can be a program name with args.
+set dummy latex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_LATEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_LATEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_LATEX="$ac_pt_DX_LATEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_DX_LATEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_LATEX=$ac_cv_path_ac_pt_DX_LATEX
+if test -n "$ac_pt_DX_LATEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_LATEX" >&5
+$as_echo "$ac_pt_DX_LATEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_LATEX" = x; then
+    DX_LATEX=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_LATEX=$ac_pt_DX_LATEX
+  fi
+else
+  DX_LATEX="$ac_cv_path_DX_LATEX"
+fi
+
+if test "$DX_FLAG_ps$DX_LATEX" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: latex not found - will not generate doxygen PostScript documentation" >&5
+$as_echo "$as_me: WARNING: latex not found - will not generate doxygen PostScript documentation" >&2;}
+    DX_FLAG_ps=0
+
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}makeindex", so it can be a program name with args.
+set dummy ${ac_tool_prefix}makeindex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_MAKEINDEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_MAKEINDEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_MAKEINDEX="$DX_MAKEINDEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_DX_MAKEINDEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_MAKEINDEX=$ac_cv_path_DX_MAKEINDEX
+if test -n "$DX_MAKEINDEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_MAKEINDEX" >&5
+$as_echo "$DX_MAKEINDEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_MAKEINDEX"; then
+  ac_pt_DX_MAKEINDEX=$DX_MAKEINDEX
+  # Extract the first word of "makeindex", so it can be a program name with args.
+set dummy makeindex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_MAKEINDEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_MAKEINDEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_MAKEINDEX="$ac_pt_DX_MAKEINDEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_DX_MAKEINDEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_MAKEINDEX=$ac_cv_path_ac_pt_DX_MAKEINDEX
+if test -n "$ac_pt_DX_MAKEINDEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_MAKEINDEX" >&5
+$as_echo "$ac_pt_DX_MAKEINDEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_MAKEINDEX" = x; then
+    DX_MAKEINDEX=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_MAKEINDEX=$ac_pt_DX_MAKEINDEX
+  fi
+else
+  DX_MAKEINDEX="$ac_cv_path_DX_MAKEINDEX"
+fi
+
+if test "$DX_FLAG_ps$DX_MAKEINDEX" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: makeindex not found - will not generate doxygen PostScript documentation" >&5
+$as_echo "$as_me: WARNING: makeindex not found - will not generate doxygen PostScript documentation" >&2;}
+    DX_FLAG_ps=0
+
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dvips", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dvips; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_DVIPS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_DVIPS in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_DVIPS="$DX_DVIPS" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_DX_DVIPS="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_DVIPS=$ac_cv_path_DX_DVIPS
+if test -n "$DX_DVIPS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_DVIPS" >&5
+$as_echo "$DX_DVIPS" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_DVIPS"; then
+  ac_pt_DX_DVIPS=$DX_DVIPS
+  # Extract the first word of "dvips", so it can be a program name with args.
+set dummy dvips; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_DVIPS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_DVIPS in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_DVIPS="$ac_pt_DX_DVIPS" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_DX_DVIPS="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_DVIPS=$ac_cv_path_ac_pt_DX_DVIPS
+if test -n "$ac_pt_DX_DVIPS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_DVIPS" >&5
+$as_echo "$ac_pt_DX_DVIPS" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_DVIPS" = x; then
+    DX_DVIPS=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_DVIPS=$ac_pt_DX_DVIPS
+  fi
+else
+  DX_DVIPS="$ac_cv_path_DX_DVIPS"
+fi
+
+if test "$DX_FLAG_ps$DX_DVIPS" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: dvips not found - will not generate doxygen PostScript documentation" >&5
+$as_echo "$as_me: WARNING: dvips not found - will not generate doxygen PostScript documentation" >&2;}
+    DX_FLAG_ps=0
+
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}egrep", so it can be a program name with args.
+set dummy ${ac_tool_prefix}egrep; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_EGREP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_EGREP="$DX_EGREP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_DX_EGREP="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_EGREP=$ac_cv_path_DX_EGREP
+if test -n "$DX_EGREP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_EGREP" >&5
+$as_echo "$DX_EGREP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_EGREP"; then
+  ac_pt_DX_EGREP=$DX_EGREP
+  # Extract the first word of "egrep", so it can be a program name with args.
+set dummy egrep; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_EGREP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_EGREP="$ac_pt_DX_EGREP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_DX_EGREP="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_EGREP=$ac_cv_path_ac_pt_DX_EGREP
+if test -n "$ac_pt_DX_EGREP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_EGREP" >&5
+$as_echo "$ac_pt_DX_EGREP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_EGREP" = x; then
+    DX_EGREP=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_EGREP=$ac_pt_DX_EGREP
+  fi
+else
+  DX_EGREP="$ac_cv_path_DX_EGREP"
+fi
+
+if test "$DX_FLAG_ps$DX_EGREP" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: egrep not found - will not generate doxygen PostScript documentation" >&5
+$as_echo "$as_me: WARNING: egrep not found - will not generate doxygen PostScript documentation" >&2;}
+    DX_FLAG_ps=0
+
+fi
+
+    :
+fi
+ if test "$DX_FLAG_ps" = 1; then
+  DX_COND_ps_TRUE=
+  DX_COND_ps_FALSE='#'
+else
+  DX_COND_ps_TRUE='#'
+  DX_COND_ps_FALSE=
+fi
+
+if test "$DX_FLAG_ps" = 1; then
+
+    :
+else
+
+    :
+fi
+
+
+# PDF file generation:
+
+
+
+    # Check whether --enable-doxygen-pdf was given.
+if test "${enable_doxygen_pdf+set}" = set; then :
+  enableval=$enable_doxygen_pdf;
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    DX_FLAG_pdf=1
+
+
+test "$DX_FLAG_doc" = "1" \
+|| as_fn_error $? "doxygen-pdf requires doxygen-pdf" "$LINENO" 5
+
+;; #(
+n|N|no|No|NO)
+    DX_FLAG_pdf=0
+
+;; #(
+*)
+    as_fn_error $? "invalid value '$enableval' given to doxygen-pdf" "$LINENO" 5
+;;
+esac
+
+else
+
+DX_FLAG_pdf=1
+
+
+test "$DX_FLAG_doc" = "1" || DX_FLAG_pdf=0
+
+
+
+fi
+
+if test "$DX_FLAG_pdf" = 1; then
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pdflatex", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pdflatex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_PDFLATEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_PDFLATEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_PDFLATEX="$DX_PDFLATEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_DX_PDFLATEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_PDFLATEX=$ac_cv_path_DX_PDFLATEX
+if test -n "$DX_PDFLATEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_PDFLATEX" >&5
+$as_echo "$DX_PDFLATEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_PDFLATEX"; then
+  ac_pt_DX_PDFLATEX=$DX_PDFLATEX
+  # Extract the first word of "pdflatex", so it can be a program name with args.
+set dummy pdflatex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_PDFLATEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_PDFLATEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_PDFLATEX="$ac_pt_DX_PDFLATEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_DX_PDFLATEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_PDFLATEX=$ac_cv_path_ac_pt_DX_PDFLATEX
+if test -n "$ac_pt_DX_PDFLATEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_PDFLATEX" >&5
+$as_echo "$ac_pt_DX_PDFLATEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_PDFLATEX" = x; then
+    DX_PDFLATEX=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_PDFLATEX=$ac_pt_DX_PDFLATEX
+  fi
+else
+  DX_PDFLATEX="$ac_cv_path_DX_PDFLATEX"
+fi
+
+if test "$DX_FLAG_pdf$DX_PDFLATEX" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: pdflatex not found - will not generate doxygen PDF documentation" >&5
+$as_echo "$as_me: WARNING: pdflatex not found - will not generate doxygen PDF documentation" >&2;}
+    DX_FLAG_pdf=0
+
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}makeindex", so it can be a program name with args.
+set dummy ${ac_tool_prefix}makeindex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_MAKEINDEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_MAKEINDEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_MAKEINDEX="$DX_MAKEINDEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_DX_MAKEINDEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_MAKEINDEX=$ac_cv_path_DX_MAKEINDEX
+if test -n "$DX_MAKEINDEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_MAKEINDEX" >&5
+$as_echo "$DX_MAKEINDEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_MAKEINDEX"; then
+  ac_pt_DX_MAKEINDEX=$DX_MAKEINDEX
+  # Extract the first word of "makeindex", so it can be a program name with args.
+set dummy makeindex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_MAKEINDEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_MAKEINDEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_MAKEINDEX="$ac_pt_DX_MAKEINDEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_DX_MAKEINDEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_MAKEINDEX=$ac_cv_path_ac_pt_DX_MAKEINDEX
+if test -n "$ac_pt_DX_MAKEINDEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_MAKEINDEX" >&5
+$as_echo "$ac_pt_DX_MAKEINDEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_MAKEINDEX" = x; then
+    DX_MAKEINDEX=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_MAKEINDEX=$ac_pt_DX_MAKEINDEX
+  fi
+else
+  DX_MAKEINDEX="$ac_cv_path_DX_MAKEINDEX"
+fi
+
+if test "$DX_FLAG_pdf$DX_MAKEINDEX" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: makeindex not found - will not generate doxygen PDF documentation" >&5
+$as_echo "$as_me: WARNING: makeindex not found - will not generate doxygen PDF documentation" >&2;}
+    DX_FLAG_pdf=0
+
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}egrep", so it can be a program name with args.
+set dummy ${ac_tool_prefix}egrep; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DX_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DX_EGREP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DX_EGREP="$DX_EGREP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_DX_EGREP="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DX_EGREP=$ac_cv_path_DX_EGREP
+if test -n "$DX_EGREP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DX_EGREP" >&5
+$as_echo "$DX_EGREP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DX_EGREP"; then
+  ac_pt_DX_EGREP=$DX_EGREP
+  # Extract the first word of "egrep", so it can be a program name with args.
+set dummy egrep; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_DX_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_DX_EGREP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_DX_EGREP="$ac_pt_DX_EGREP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_DX_EGREP="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_DX_EGREP=$ac_cv_path_ac_pt_DX_EGREP
+if test -n "$ac_pt_DX_EGREP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DX_EGREP" >&5
+$as_echo "$ac_pt_DX_EGREP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_DX_EGREP" = x; then
+    DX_EGREP=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DX_EGREP=$ac_pt_DX_EGREP
+  fi
+else
+  DX_EGREP="$ac_cv_path_DX_EGREP"
+fi
+
+if test "$DX_FLAG_pdf$DX_EGREP" = 1; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: egrep not found - will not generate doxygen PDF documentation" >&5
+$as_echo "$as_me: WARNING: egrep not found - will not generate doxygen PDF documentation" >&2;}
+    DX_FLAG_pdf=0
+
+fi
+
+    :
+fi
+ if test "$DX_FLAG_pdf" = 1; then
+  DX_COND_pdf_TRUE=
+  DX_COND_pdf_FALSE='#'
+else
+  DX_COND_pdf_TRUE='#'
+  DX_COND_pdf_FALSE=
+fi
+
+if test "$DX_FLAG_pdf" = 1; then
+
+    :
+else
+
+    :
+fi
+
+
+# LaTeX generation for PS and/or PDF:
+ if test "$DX_FLAG_ps" = 1 || test "$DX_FLAG_pdf" = 1; then
+  DX_COND_latex_TRUE=
+  DX_COND_latex_FALSE='#'
+else
+  DX_COND_latex_TRUE='#'
+  DX_COND_latex_FALSE=
+fi
+
+if test "$DX_FLAG_ps" = 1 || test "$DX_FLAG_pdf" = 1; then
+    DX_ENV="$DX_ENV GENERATE_LATEX='YES'"
+
+else
+    DX_ENV="$DX_ENV GENERATE_LATEX='NO'"
+
+fi
+
+# Paper size for PS and/or PDF:
+
+case "$DOXYGEN_PAPER_SIZE" in
+#(
+"")
+    DOXYGEN_PAPER_SIZE=""
+
+;; #(
+a4wide|a4|letter|legal|executive)
+    DX_ENV="$DX_ENV PAPER_SIZE='$DOXYGEN_PAPER_SIZE'"
+
+;; #(
+*)
+    as_fn_error $? "unknown DOXYGEN_PAPER_SIZE='$DOXYGEN_PAPER_SIZE'" "$LINENO" 5
+;;
+esac
+
+#For debugging:
+#echo DX_FLAG_doc=$DX_FLAG_doc
+#echo DX_FLAG_dot=$DX_FLAG_dot
+#echo DX_FLAG_man=$DX_FLAG_man
+#echo DX_FLAG_html=$DX_FLAG_html
+#echo DX_FLAG_chm=$DX_FLAG_chm
+#echo DX_FLAG_chi=$DX_FLAG_chi
+#echo DX_FLAG_rtf=$DX_FLAG_rtf
+#echo DX_FLAG_xml=$DX_FLAG_xml
+#echo DX_FLAG_pdf=$DX_FLAG_pdf
+#echo DX_FLAG_ps=$DX_FLAG_ps
+#echo DX_ENV=$DX_ENV
+#, DOXYFILE-PATH, [OUTPUT-DIR])
+
+#USE_HTAGS              = $(USE_HTAGS)
+
+######################################################################
+# pthread/Readline/NCurses (pthread needed by dim and boost)
+######################################################################
+
+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
+
+
+# Check for math library (some linux need this to compile cfitsio)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5
+$as_echo_n "checking for cos in -lm... " >&6; }
+if ${ac_cv_lib_m_cos+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char cos ();
+int
+main ()
+{
+return cos ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_m_cos=yes
+else
+  ac_cv_lib_m_cos=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5
+$as_echo "$ac_cv_lib_m_cos" >&6; }
+if test "x$ac_cv_lib_m_cos" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+  LIBS="-lm $LIBS"
+
+fi
+
+
+# Needed to compile dim
+
+
+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
+
+ax_pthread_ok=no
+
+# We used to check for pthread.h first, but this fails if pthread.h
+# requires special compiler flags (e.g. on True64 or Sequent).
+# It gets checked for in the link test anyway.
+
+# First of all, check if the user has set any of the PTHREAD_LIBS,
+# etcetera environment variables, and if threads linking works using
+# them:
+if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
+        save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        save_LIBS="$LIBS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5
+$as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; }
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_join ();
+int
+main ()
+{
+return pthread_join ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_pthread_ok=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
+$as_echo "$ax_pthread_ok" >&6; }
+        if test x"$ax_pthread_ok" = xno; then
+                PTHREAD_LIBS=""
+                PTHREAD_CFLAGS=""
+        fi
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+fi
+
+# We must check for the threads library under a number of different
+# names; the ordering is very important because some systems
+# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
+# libraries is broken (non-POSIX).
+
+# Create a list of thread flags to try.  Items starting with a "-" are
+# C compiler flags, and other items are library names, except for "none"
+# which indicates that we try without any flags at all, and "pthread-config"
+# which is a program returning the flags for the Pth emulation library.
+
+ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+
+# The ordering *is* (sometimes) important.  Some notes on the
+# individual items follow:
+
+# pthreads: AIX (must check this before -lpthread)
+# none: in case threads are in libc; should be tried before -Kthread and
+#       other compiler flags to prevent continual compiler warnings
+# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
+# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
+# -pthreads: Solaris/gcc
+# -mthreads: Mingw32/gcc, Lynx/gcc
+# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
+#      doesn't hurt to check since this sometimes defines pthreads too;
+#      also defines -D_REENTRANT)
+#      ... -mt is also the pthreads flag for HP/aCC
+# pthread: Linux, etcetera
+# --thread-safe: KAI C++
+# pthread-config: use pthread-config program (for GNU Pth library)
+
+case "${host_cpu}-${host_os}" in
+        *solaris*)
+
+        # On Solaris (at least, for some versions), libc contains stubbed
+        # (non-functional) versions of the pthreads routines, so link-based
+        # tests will erroneously succeed.  (We need to link with -pthreads/-mt/
+        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
+        # a function called by this macro, so we could check for that, but
+        # who knows whether they'll stub that too in a future libc.)  So,
+        # we'll just look for -pthreads and -lpthread first:
+
+        ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
+        ;;
+
+        *-darwin*)
+        ax_pthread_flags="-pthread $ax_pthread_flags"
+        ;;
+esac
+
+if test x"$ax_pthread_ok" = xno; then
+for flag in $ax_pthread_flags; do
+
+        case $flag in
+                none)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5
+$as_echo_n "checking whether pthreads work without any flags... " >&6; }
+                ;;
+
+                -*)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5
+$as_echo_n "checking whether pthreads work with $flag... " >&6; }
+                PTHREAD_CFLAGS="$flag"
+                ;;
+
+                pthread-config)
+                # Extract the first word of "pthread-config", so it can be a program name with args.
+set dummy pthread-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ax_pthread_config+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ax_pthread_config"; then
+  ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ax_pthread_config="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_ax_pthread_config" && ac_cv_prog_ax_pthread_config="no"
+fi
+fi
+ax_pthread_config=$ac_cv_prog_ax_pthread_config
+if test -n "$ax_pthread_config"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5
+$as_echo "$ax_pthread_config" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+                if test x"$ax_pthread_config" = xno; then continue; fi
+                PTHREAD_CFLAGS="`pthread-config --cflags`"
+                PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
+                ;;
+
+                *)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5
+$as_echo_n "checking for the pthreads library -l$flag... " >&6; }
+                PTHREAD_LIBS="-l$flag"
+                ;;
+        esac
+
+        save_LIBS="$LIBS"
+        save_CFLAGS="$CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+
+        # Check for various functions.  We must include pthread.h,
+        # since some functions may be macros.  (On the Sequent, we
+        # need a special flag -Kthread to make this header compile.)
+        # We check for pthread_join because it is in -lpthread on IRIX
+        # while pthread_create is in libc.  We check for pthread_attr_init
+        # due to DEC craziness with -lpthreads.  We check for
+        # pthread_cleanup_push because it is one of the few pthread
+        # functions on Solaris that doesn't have a non-functional libc stub.
+        # We try pthread_create on general principles.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+                        static void routine(void *a) { a = 0; }
+                        static void *start_routine(void *a) { return a; }
+int
+main ()
+{
+pthread_t th; pthread_attr_t attr;
+                        pthread_create(&th, 0, start_routine, 0);
+                        pthread_join(th, 0);
+                        pthread_attr_init(&attr);
+                        pthread_cleanup_push(routine, 0);
+                        pthread_cleanup_pop(0) /* ; */
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_pthread_ok=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
+$as_echo "$ax_pthread_ok" >&6; }
+        if test "x$ax_pthread_ok" = xyes; then
+                break;
+        fi
+
+        PTHREAD_LIBS=""
+        PTHREAD_CFLAGS=""
+done
+fi
+
+# Various other checks:
+if test "x$ax_pthread_ok" = xyes; then
+        save_LIBS="$LIBS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+
+        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5
+$as_echo_n "checking for joinable pthread attribute... " >&6; }
+        attr_name=unknown
+        for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+int
+main ()
+{
+int attr = $attr; return attr /* ; */
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  attr_name=$attr; break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+        done
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5
+$as_echo "$attr_name" >&6; }
+        if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
+
+cat >>confdefs.h <<_ACEOF
+#define PTHREAD_CREATE_JOINABLE $attr_name
+_ACEOF
+
+        fi
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5
+$as_echo_n "checking if more special flags are required for pthreads... " >&6; }
+        flag=no
+        case "${host_cpu}-${host_os}" in
+            *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";;
+            *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";;
+        esac
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5
+$as_echo "${flag}" >&6; }
+        if test "x$flag" != xno; then
+            PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
+        fi
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5
+$as_echo_n "checking for PTHREAD_PRIO_INHERIT... " >&6; }
+if ${ax_cv_PTHREAD_PRIO_INHERIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+                    #include <pthread.h>
+int
+main ()
+{
+int i = PTHREAD_PRIO_INHERIT;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_cv_PTHREAD_PRIO_INHERIT=yes
+else
+  ax_cv_PTHREAD_PRIO_INHERIT=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5
+$as_echo "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; }
+        if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"; then :
+
+$as_echo "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h
+
+fi
+
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+
+        # More AIX lossage: must compile with xlc_r or cc_r
+        if test x"$GCC" != xyes; then
+          for ac_prog in xlc_r cc_r
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_PTHREAD_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$PTHREAD_CC"; then
+  ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_PTHREAD_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+PTHREAD_CC=$ac_cv_prog_PTHREAD_CC
+if test -n "$PTHREAD_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5
+$as_echo "$PTHREAD_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$PTHREAD_CC" && break
+done
+test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}"
+
+        else
+          PTHREAD_CC=$CC
+        fi
+else
+        PTHREAD_CC="$CC"
+fi
+
+
+
+
+
+# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+if test x"$ax_pthread_ok" = xyes; then
+
+$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h
+
+        :
+else
+        ax_pthread_ok=no
+
+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
+
+
+
+CPPFLAGS+=" "$PTHREAD_CFLAGS
+LDFLAGS+=" "$PTHREAD_CFLAGS
+
+
+# Needed to compile FACT++
+
+
+
+
+
+# Check whether --with-readline was given.
+if test "${with_readline+set}" = set; then :
+  withval=$with_readline; if test "x$withval" = "xno" ; then
+      without_readline=yes
+    elif test "x$withval" != "xyes" ; then
+      with_arg="$withval/include:-L$withval/lib $withval/include/readline:-L$withval/lib"
+    fi
+fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for readline.h" >&5
+$as_echo_n "checking for readline.h... " >&6; }
+
+  if test "x$without_readline" != "xyes"; then
+    for i in $with_arg \
+	     /usr/include: \
+	     /usr/local/include:-L/usr/local/lib \
+             /usr/freeware/include:-L/usr/freeware/lib32 \
+	     /usr/pkg/include:-L/usr/pkg/lib \
+	     /sw/include:-L/sw/lib \
+	     /cw/include:-L/cw/lib \
+	     /net/caladium/usr/people/piotr.nba/temp/pkg/include:-L/net/caladium/usr/people/piotr.nba/temp/pkg/lib \
+	     /boot/home/config/include:-L/boot/home/config/lib; do
+
+      incl=`echo "$i" | sed 's/:.*//'`
+      lib=`echo "$i" | sed 's/.*://'`
+
+      if test -f $incl/readline/readline.h ; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $incl/readline/readline.h" >&5
+$as_echo "$incl/readline/readline.h" >&6; }
+        READLINE_LIBS="$lib -lreadline"
+	if test "$incl" != "/usr/include"; then
+	  READLINE_INCLUDES="-I$incl/readline -I$incl"
+	else
+	  READLINE_INCLUDES="-I$incl/readline"
+	fi
+
+$as_echo "#define HAVE_READLINE 1" >>confdefs.h
+
+        have_readline=yes
+        break
+      elif test -f $incl/readline.h -a "x$incl" != "x/usr/include"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $incl/readline.h" >&5
+$as_echo "$incl/readline.h" >&6; }
+        READLINE_LIBS="$lib -lreadline"
+        READLINE_INCLUDES="-I$incl"
+
+$as_echo "#define HAVE_READLINE 1" >>confdefs.h
+
+        have_readline=yes
+        break
+      fi
+    done
+  fi
+
+  if test "x$have_readline" != "xyes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+  fi
+
+if test "x$have_readline" != "xyes"; then :
+  as_fn_error $? "The readline library is not properly installed." "$LINENO" 5
+fi
+
+CPPFLAGS+=" "$READLINE_INCLUDES
+LDFLAGS+=" "$READLINE_LIBS
+
+# Needed to compile FACT++
+for ac_header in panel.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "panel.h" "ac_cv_header_panel_h" "$ac_includes_default"
+if test "x$ac_cv_header_panel_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_PANEL_H 1
+_ACEOF
+
+else
+  as_fn_error $? "ncurses header not found" "$LINENO" 5
+fi
+
+done
+
+
+# Needed to compile FACT++
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for update_panels in -lpanel" >&5
+$as_echo_n "checking for update_panels in -lpanel... " >&6; }
+if ${ac_cv_lib_panel_update_panels+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpanel  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char update_panels ();
+int
+main ()
+{
+return update_panels ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_panel_update_panels=yes
+else
+  ac_cv_lib_panel_update_panels=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_panel_update_panels" >&5
+$as_echo "$ac_cv_lib_panel_update_panels" >&6; }
+if test "x$ac_cv_lib_panel_update_panels" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBPANEL 1
+_ACEOF
+
+  LIBS="-lpanel $LIBS"
+
+else
+  as_fn_error $? "ncurses panel library not found" "$LINENO" 5
+fi
+
+
+# Xm.h (lesstif/motif, needed to compile did)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5
+$as_echo_n "checking for X... " >&6; }
+
+
+# Check whether --with-x was given.
+if test "${with_x+set}" = set; then :
+  withval=$with_x;
+fi
+
+# $have_x is `yes', `no', `disabled', or empty when we do not yet know.
+if test "x$with_x" = xno; then
+  # The user explicitly disabled X.
+  have_x=disabled
+else
+  case $x_includes,$x_libraries in #(
+    *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #(
+    *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # One or both of the vars are not set, and there is no cached value.
+ac_x_includes=no ac_x_libraries=no
+rm -f -r conftest.dir
+if mkdir conftest.dir; then
+  cd conftest.dir
+  cat >Imakefile <<'_ACEOF'
+incroot:
+	@echo incroot='${INCROOT}'
+usrlibdir:
+	@echo usrlibdir='${USRLIBDIR}'
+libdir:
+	@echo libdir='${LIBDIR}'
+_ACEOF
+  if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then
+    # GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+    for ac_var in incroot usrlibdir libdir; do
+      eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`"
+    done
+    # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
+    for ac_extension in a so sl dylib la dll; do
+      if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" &&
+	 test -f "$ac_im_libdir/libX11.$ac_extension"; then
+	ac_im_usrlibdir=$ac_im_libdir; break
+      fi
+    done
+    # Screen out bogus values from the imake configuration.  They are
+    # bogus both because they are the default anyway, and because
+    # using them would break gcc on systems where it needs fixed includes.
+    case $ac_im_incroot in
+	/usr/include) ac_x_includes= ;;
+	*) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
+    esac
+    case $ac_im_usrlibdir in
+	/usr/lib | /usr/lib64 | /lib | /lib64) ;;
+	*) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
+    esac
+  fi
+  cd ..
+  rm -f -r conftest.dir
+fi
+
+# Standard set of common directories for X headers.
+# Check X11 before X11Rn because it is often a symlink to the current release.
+ac_x_header_dirs='
+/usr/X11/include
+/usr/X11R7/include
+/usr/X11R6/include
+/usr/X11R5/include
+/usr/X11R4/include
+
+/usr/include/X11
+/usr/include/X11R7
+/usr/include/X11R6
+/usr/include/X11R5
+/usr/include/X11R4
+
+/usr/local/X11/include
+/usr/local/X11R7/include
+/usr/local/X11R6/include
+/usr/local/X11R5/include
+/usr/local/X11R4/include
+
+/usr/local/include/X11
+/usr/local/include/X11R7
+/usr/local/include/X11R6
+/usr/local/include/X11R5
+/usr/local/include/X11R4
+
+/usr/X386/include
+/usr/x386/include
+/usr/XFree86/include/X11
+
+/usr/include
+/usr/local/include
+/usr/unsupported/include
+/usr/athena/include
+/usr/local/x11r5/include
+/usr/lpp/Xamples/include
+
+/usr/openwin/include
+/usr/openwin/share/include'
+
+if test "$ac_x_includes" = no; then
+  # Guess where to find include files, by looking for Xlib.h.
+  # First, try using that file with no special directory specified.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <X11/Xlib.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # We can compile using X headers with no special include directory.
+ac_x_includes=
+else
+  for ac_dir in $ac_x_header_dirs; do
+  if test -r "$ac_dir/X11/Xlib.h"; then
+    ac_x_includes=$ac_dir
+    break
+  fi
+done
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+fi # $ac_x_includes = no
+
+if test "$ac_x_libraries" = no; then
+  # Check for the libraries.
+  # See if we find them without any special options.
+  # Don't add to $LIBS permanently.
+  ac_save_LIBS=$LIBS
+  LIBS="-lX11 $LIBS"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <X11/Xlib.h>
+int
+main ()
+{
+XrmInitialize ()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  LIBS=$ac_save_LIBS
+# We can link X programs with no special library path.
+ac_x_libraries=
+else
+  LIBS=$ac_save_LIBS
+for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
+do
+  # Don't even attempt the hair of trying to link an X program!
+  for ac_extension in a so sl dylib la dll; do
+    if test -r "$ac_dir/libX11.$ac_extension"; then
+      ac_x_libraries=$ac_dir
+      break 2
+    fi
+  done
+done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi # $ac_x_libraries = no
+
+case $ac_x_includes,$ac_x_libraries in #(
+  no,* | *,no | *\'*)
+    # Didn't find X, or a directory has "'" in its name.
+    ac_cv_have_x="have_x=no";; #(
+  *)
+    # Record where we found X for the cache.
+    ac_cv_have_x="have_x=yes\
+	ac_x_includes='$ac_x_includes'\
+	ac_x_libraries='$ac_x_libraries'"
+esac
+fi
+;; #(
+    *) have_x=yes;;
+  esac
+  eval "$ac_cv_have_x"
+fi # $with_x != no
+
+if test "$have_x" != yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5
+$as_echo "$have_x" >&6; }
+  no_x=yes
+else
+  # If each of the values was on the command line, it overrides each guess.
+  test "x$x_includes" = xNONE && x_includes=$ac_x_includes
+  test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries
+  # Update the cache value to reflect the command line values.
+  ac_cv_have_x="have_x=yes\
+	ac_x_includes='$x_includes'\
+	ac_x_libraries='$x_libraries'"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5
+$as_echo "libraries $x_libraries, headers $x_includes" >&6; }
+fi
+
+if test "$no_x" = yes; then
+  # Not all programs may use this symbol, but it does not hurt to define it.
+
+$as_echo "#define X_DISPLAY_MISSING 1" >>confdefs.h
+
+  X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS=
+else
+  if test -n "$x_includes"; then
+    X_CFLAGS="$X_CFLAGS -I$x_includes"
+  fi
+
+  # It would also be nice to do this for all -L options, not just this one.
+  if test -n "$x_libraries"; then
+    X_LIBS="$X_LIBS -L$x_libraries"
+    # For Solaris; some versions of Sun CC require a space after -R and
+    # others require no space.  Words are not sufficient . . . .
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -R must be followed by a space" >&5
+$as_echo_n "checking whether -R must be followed by a space... " >&6; }
+    ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"
+    ac_xsave_c_werror_flag=$ac_c_werror_flag
+    ac_c_werror_flag=yes
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       X_LIBS="$X_LIBS -R$x_libraries"
+else
+  LIBS="$ac_xsave_LIBS -R $x_libraries"
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	  X_LIBS="$X_LIBS -R $x_libraries"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: neither works" >&5
+$as_echo "neither works" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    ac_c_werror_flag=$ac_xsave_c_werror_flag
+    LIBS=$ac_xsave_LIBS
+  fi
+
+  # Check for system-dependent libraries X programs must link with.
+  # Do this before checking for the system-independent R6 libraries
+  # (-lICE), since we may need -lsocket or whatever for X linking.
+
+  if test "$ISC" = yes; then
+    X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet"
+  else
+    # Martyn Johnson says this is needed for Ultrix, if the X
+    # libraries were built with DECnet support.  And Karl Berry says
+    # the Alpha needs dnet_stub (dnet does not exist).
+    ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11"
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char XOpenDisplay ();
+int
+main ()
+{
+return XOpenDisplay ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; }
+if ${ac_cv_lib_dnet_dnet_ntoa+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dnet_ntoa ();
+int
+main ()
+{
+return dnet_ntoa ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dnet_dnet_ntoa=yes
+else
+  ac_cv_lib_dnet_dnet_ntoa=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
+$as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; }
+if test "x$ac_cv_lib_dnet_dnet_ntoa" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
+fi
+
+    if test $ac_cv_lib_dnet_dnet_ntoa = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; }
+if ${ac_cv_lib_dnet_stub_dnet_ntoa+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet_stub  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dnet_ntoa ();
+int
+main ()
+{
+return dnet_ntoa ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dnet_stub_dnet_ntoa=yes
+else
+  ac_cv_lib_dnet_stub_dnet_ntoa=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
+$as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }
+if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
+fi
+
+    fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LIBS="$ac_xsave_LIBS"
+
+    # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,
+    # to get the SysV transport functions.
+    # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4)
+    # needs -lnsl.
+    # The nsl library prevents programs from opening the X display
+    # on Irix 5.2, according to T.E. Dickey.
+    # The functions gethostbyname, getservbyname, and inet_addr are
+    # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.
+    ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname"
+if test "x$ac_cv_func_gethostbyname" = xyes; then :
+
+fi
+
+    if test $ac_cv_func_gethostbyname = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5
+$as_echo_n "checking for gethostbyname in -lnsl... " >&6; }
+if ${ac_cv_lib_nsl_gethostbyname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnsl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_nsl_gethostbyname=yes
+else
+  ac_cv_lib_nsl_gethostbyname=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5
+$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
+if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
+fi
+
+      if test $ac_cv_lib_nsl_gethostbyname = no; then
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5
+$as_echo_n "checking for gethostbyname in -lbsd... " >&6; }
+if ${ac_cv_lib_bsd_gethostbyname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbsd  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_bsd_gethostbyname=yes
+else
+  ac_cv_lib_bsd_gethostbyname=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5
+$as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; }
+if test "x$ac_cv_lib_bsd_gethostbyname" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
+fi
+
+      fi
+    fi
+
+    # lieder@skyler.mavd.honeywell.com says without -lsocket,
+    # socket/setsockopt and other routines are undefined under SCO ODT
+    # 2.0.  But -lsocket is broken on IRIX 5.2 (and is not necessary
+    # on later versions), says Simon Leinen: it contains gethostby*
+    # variants that don't use the name server (or something).  -lsocket
+    # must be given before -lnsl if both are needed.  We assume that
+    # if connect needs -lnsl, so does gethostbyname.
+    ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect"
+if test "x$ac_cv_func_connect" = xyes; then :
+
+fi
+
+    if test $ac_cv_func_connect = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5
+$as_echo_n "checking for connect in -lsocket... " >&6; }
+if ${ac_cv_lib_socket_connect+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char connect ();
+int
+main ()
+{
+return connect ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_socket_connect=yes
+else
+  ac_cv_lib_socket_connect=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5
+$as_echo "$ac_cv_lib_socket_connect" >&6; }
+if test "x$ac_cv_lib_socket_connect" = xyes; then :
+  X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
+fi
+
+    fi
+
+    # Guillermo Gomez says -lposix is necessary on A/UX.
+    ac_fn_c_check_func "$LINENO" "remove" "ac_cv_func_remove"
+if test "x$ac_cv_func_remove" = xyes; then :
+
+fi
+
+    if test $ac_cv_func_remove = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5
+$as_echo_n "checking for remove in -lposix... " >&6; }
+if ${ac_cv_lib_posix_remove+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lposix  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char remove ();
+int
+main ()
+{
+return remove ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_posix_remove=yes
+else
+  ac_cv_lib_posix_remove=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5
+$as_echo "$ac_cv_lib_posix_remove" >&6; }
+if test "x$ac_cv_lib_posix_remove" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
+fi
+
+    fi
+
+    # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
+    ac_fn_c_check_func "$LINENO" "shmat" "ac_cv_func_shmat"
+if test "x$ac_cv_func_shmat" = xyes; then :
+
+fi
+
+    if test $ac_cv_func_shmat = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5
+$as_echo_n "checking for shmat in -lipc... " >&6; }
+if ${ac_cv_lib_ipc_shmat+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lipc  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shmat ();
+int
+main ()
+{
+return shmat ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_ipc_shmat=yes
+else
+  ac_cv_lib_ipc_shmat=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5
+$as_echo "$ac_cv_lib_ipc_shmat" >&6; }
+if test "x$ac_cv_lib_ipc_shmat" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
+fi
+
+    fi
+  fi
+
+  # Check for libraries that X11R6 Xt/Xaw programs need.
+  ac_save_LDFLAGS=$LDFLAGS
+  test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries"
+  # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to
+  # check for ICE first), but we must link in the order -lSM -lICE or
+  # we get undefined symbols.  So assume we have SM if we have ICE.
+  # These have to be linked with before -lX11, unlike the other
+  # libraries we check for below, so use a different variable.
+  # John Interrante, Karl Berry
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5
+$as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; }
+if ${ac_cv_lib_ICE_IceConnectionNumber+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lICE $X_EXTRA_LIBS $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char IceConnectionNumber ();
+int
+main ()
+{
+return IceConnectionNumber ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_ICE_IceConnectionNumber=yes
+else
+  ac_cv_lib_ICE_IceConnectionNumber=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
+$as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
+if test "x$ac_cv_lib_ICE_IceConnectionNumber" = xyes; then :
+  X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
+fi
+
+  LDFLAGS=$ac_save_LDFLAGS
+
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether libXp is available" >&5
+$as_echo_n "checking whether libXp is available... " >&6; }
+if ${lt_cv_libxp+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_save_CFLAGS="$CFLAGS"
+lt_save_CPPFLAGS="$CPPFLAGS"
+lt_save_LIBS="$LIBS"
+LIBS="$X_LIBS -lXp -lXext -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $LIBS"
+CFLAGS="$X_CFLAGS $CFLAGS"
+CPPFLAGS="$X_CFLAGS $CPPFLAGS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <X11/Intrinsic.h>
+#include <X11/extensions/Print.h>
+
+int
+main ()
+{
+
+int main() {
+Display *display=NULL;
+short   major_version, minor_version;
+Status rc;
+rc=XpQueryVersion(display, &major_version, &minor_version);
+exit(0);
+}
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_libxp=yes
+else
+  lt_cv_libxp=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_libxp" >&5
+$as_echo "$lt_cv_libxp" >&6; }
+if test "$lt_cv_libxp" = "yes"; then
+# remove this until we find a use for it
+# a.lacey@man.ac.uk
+#  AC_DEFINE(HAVE_LIB_XP)
+  LT_HAVE_XP="yes"
+else
+  LT_HAVE_XP="no"
+fi
+ if test "$lt_cv_libxp" = "yes"; then
+  HAS_LIBXP_TRUE=
+  HAS_LIBXP_FALSE='#'
+else
+  HAS_LIBXP_TRUE='#'
+  HAS_LIBXP_FALSE=
+fi
+
+
+CFLAGS="$lt_save_CFLAGS"
+CPPFLAGS="$lt_save_CPPFLAGS"
+LIBS="$lt_save_LIBS"
+
+
+
+
+
+motif_includes=
+motif_libraries=
+
+
+
+# Check whether --with-motif-includes was given.
+if test "${with_motif_includes+set}" = set; then :
+  withval=$with_motif_includes; motif_includes="$withval"
+fi
+
+
+
+# Check whether --with-motif-libraries was given.
+if test "${with_motif_libraries+set}" = set; then :
+  withval=$with_motif_libraries; motif_libraries="$withval"
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Motif" >&5
+$as_echo_n "checking for Motif... " >&6; }
+
+#
+#
+# Search the include files.
+#
+if test "$motif_includes" = ""; then
+if ${ac_cv_motif_includes+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+ac_motif_save_LIBS="$LIBS"
+ac_motif_save_INCLUDES="$INCLUDES"
+ac_motif_save_CPPFLAGS="$CPPFLAGS"
+ac_motif_save_LDFLAGS="$LDFLAGS"
+#
+LIBS="$X_PRE_LIBS -lXm -lXt -lX11 $X_EXTRA_LIBS $LIBS"
+INCLUDES="$X_CFLAGS $INCLUDES"
+CPPFLAGS="$X_CFLAGS $CPPFLAGS"
+LDFLAGS="$X_LIBS $LDFLAGS"
+#
+ac_cv_motif_includes="none"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <Xm/Xm.h>
+int
+main ()
+{
+int a;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+# Xm/Xm.h is in the standard search path.
+ac_cv_motif_includes=
+
+else
+
+# Xm/Xm.h is not in the standard search path.
+# Locate it and put its directory in `motif_includes'
+#
+# /usr/include/Motif* are used on HP-UX (Motif).
+# /usr/include/X11* are used on HP-UX (X and Athena).
+# /usr/dt is used on Solaris (Motif).
+# /usr/openwin is used on Solaris (X and Athena).
+# /sw/include is used for fink under OSX
+# Other directories are just guesses.
+for dir in "$x_includes" "${prefix}/include" /usr/include /usr/local/include \
+           /usr/include/Motif2.1 /usr/include/Motif2.0 /usr/include/Motif1.2  \
+           /usr/include/X11 /usr/include/X11R6 /usr/include/X11R5 \
+           /usr/X11/include /usr/X11R6/include /usr/X11R5/include \
+           /usr/dt/include /usr/openwin/include \
+           /usr/dt/*/include /opt/*/include /usr/include/Motif* \
+           "${prefix}"/*/include /usr/*/include /usr/local/*/include \
+           "${prefix}"/include/* /usr/include/* /usr/local/include/* \
+           /sw/include; do
+if test -f "$dir/Xm/Xm.h"; then
+ac_cv_motif_includes="$dir"
+break
+fi
+done
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+#
+LIBS="$ac_motif_save_LIBS"
+INCLUDES="$ac_motif_save_INCLUDES"
+CPPFLAGS="$ac_motif_save_CPPFLAGS"
+LDFLAGS="$ac_motif_save_LDFLAGS"
+
+fi
+
+motif_includes="$ac_cv_motif_includes"
+fi
+#
+#
+# Now for the libraries.
+#
+if test "$motif_libraries" = ""; then
+if ${ac_cv_motif_libraries+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+ac_motif_save_LIBS="$LIBS"
+ac_motif_save_INCLUDES="$INCLUDES"
+ac_motif_save_CPPFLAGS="$CPPFLAGS"
+ac_motif_save_LDFLAGS="$LDFLAGS"
+#
+LIBS="$X_PRE_LIBS -lXm -lXt -lX11 $X_EXTRA_LIBS $LIBS"
+INCLUDES="$X_CFLAGS $INCLUDES"
+CPPFLAGS="$X_CFLAGS $CPPFLAGS"
+LDFLAGS="$X_LIBS $LDFLAGS"
+#
+ac_cv_motif_libraries="none"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <Xm/Xm.h>
+int
+main ()
+{
+XtToolkitInitialize();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+# libXm.a is in the standard search path.
+ac_cv_motif_libraries=
+
+else
+
+# libXm.a is not in the standard search path.
+# Locate it and put its directory in `motif_libraries'
+#
+# /usr/lib/Motif* are used on HP-UX (Motif).
+# /usr/lib/X11* are used on HP-UX (X and Athena).
+# /usr/dt is used on Solaris (Motif).
+# /usr/lesstif is used on Linux (Lesstif).
+# /usr/openwin is used on Solaris (X and Athena).
+# /sw/lib is used under fink on OSX
+# Other directories are just guesses.
+for dir in "$x_libraries" "${prefix}/lib" /usr/lib /usr/local/lib \
+           /usr/lib/Motif2.1 /usr/lib/Motif2.0 /usr/lib/Motif1.2 \
+           /usr/lib/X11 /usr/lib/X11R6 /usr/lib/X11R5 \
+           /usr/X11/lib /usr/X11R6/lib /usr/X11R5/lib \
+           /usr/dt/lib /usr/openwin/lib \
+           /usr/dt/*/lib /opt/*/lib /usr/lib/Motif* \
+           /usr/lesstif*/lib /usr/lib/Lesstif* \
+           "${prefix}"/*/lib /usr/*/lib /usr/local/*/lib \
+           "${prefix}"/lib/* /usr/lib/* /usr/local/lib/* \
+           /sw/lib; do
+if test -d "$dir" && test "`ls $dir/libXm.* 2> /dev/null`" != ""; then
+ac_cv_motif_libraries="$dir"
+break
+fi
+done
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+#
+LIBS="$ac_motif_save_LIBS"
+INCLUDES="$ac_motif_save_INCLUDES"
+CPPFLAGS="$ac_motif_save_CPPFLAGS"
+LDFLAGS="$ac_motif_save_LDFLAGS"
+
+fi
+
+#
+motif_libraries="$ac_cv_motif_libraries"
+fi
+#
+# Provide an easier way to link
+#
+if test "$motif_includes" = "none" -o "$motif_libraries" = "none"; then
+        with_motif="no"
+else
+        with_motif="yes"
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether libXp is available" >&5
+$as_echo_n "checking whether libXp is available... " >&6; }
+if ${lt_cv_libxp+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_save_CFLAGS="$CFLAGS"
+lt_save_CPPFLAGS="$CPPFLAGS"
+lt_save_LIBS="$LIBS"
+LIBS="$X_LIBS -lXp -lXext -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $LIBS"
+CFLAGS="$X_CFLAGS $CFLAGS"
+CPPFLAGS="$X_CFLAGS $CPPFLAGS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <X11/Intrinsic.h>
+#include <X11/extensions/Print.h>
+
+int
+main ()
+{
+
+int main() {
+Display *display=NULL;
+short   major_version, minor_version;
+Status rc;
+rc=XpQueryVersion(display, &major_version, &minor_version);
+exit(0);
+}
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_libxp=yes
+else
+  lt_cv_libxp=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_libxp" >&5
+$as_echo "$lt_cv_libxp" >&6; }
+if test "$lt_cv_libxp" = "yes"; then
+# remove this until we find a use for it
+# a.lacey@man.ac.uk
+#  AC_DEFINE(HAVE_LIB_XP)
+  LT_HAVE_XP="yes"
+else
+  LT_HAVE_XP="no"
+fi
+ if test "$lt_cv_libxp" = "yes"; then
+  HAS_LIBXP_TRUE=
+  HAS_LIBXP_FALSE='#'
+else
+  HAS_LIBXP_TRUE='#'
+  HAS_LIBXP_FALSE=
+fi
+
+
+CFLAGS="$lt_save_CFLAGS"
+CPPFLAGS="$lt_save_CPPFLAGS"
+LIBS="$lt_save_LIBS"
+
+if test "$LT_HAVE_XP" = "yes"; then
+        XPLIB="-lXp -lXext"
+else
+        XPLIB=""
+fi
+
+if test "$with_motif" != "no"; then
+        if test "$motif_libraries" = ""; then
+                MOTIF_LDFLAGS="-lXm $XPLIB"
+                MOTIF_LIBS="-lXm $XPLIB"
+        else
+                MOTIF_LDFLAGS="-L$motif_libraries -lXm $XPLIB"
+                MOTIF_LIBS="-L$motif_libraries -lXm $XPLIB"
+        fi
+        if test "$motif_includes" != ""; then
+                MOTIF_INCL="-I$motif_includes"
+                MOTIF_CFLAGS="-I$motif_includes"
+        fi
+# remove this until we find a use for it
+# a.lacey@man.ac.uk
+#       AC_DEFINE(HAVE_MOTIF)
+else
+        with_motif="no"
+fi
+#
+
+
+
+
+#
+#
+#
+motif_libraries_result="$motif_libraries"
+motif_includes_result="$motif_includes"
+test "$motif_libraries_result" = "" && motif_libraries_result="in default path"
+test "$motif_includes_result" = "" && motif_includes_result="in default path"
+test "$motif_libraries_result" = "none" && motif_libraries_result="(none)"
+test "$motif_includes_result" = "none" && motif_includes_result="(none)"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $motif_libraries_result, headers $motif_includes_result" >&5
+$as_echo "libraries $motif_libraries_result, headers $motif_includes_result" >&6; }
+
+
+CPPFLAGS+=" "$MOTIF_INCL
+LDFLAGS+=" "$MOTIF_LDFLAGS
+
+if test -z "$HAS_LIBXP_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  Motif/lesstif not found!" >&5
+$as_echo "$as_me: WARNING:  Motif/lesstif not found!" >&2;}
+
+fi
+
+# Check for zlib and exit with error if not found (defines HAVE_LIBZ)
+
+
+
+# Check whether --with-zlib was given.
+if test "${with_zlib+set}" = set; then :
+  withval=$with_zlib; with_zlib=$withval
+if test "${with_zlib}" != yes; then
+	zlib_include="$withval/include"
+	zlib_libdir="$withval/lib"
+fi
+
+fi
+
+
+
+# Check whether --with-zlib-include was given.
+if test "${with_zlib_include+set}" = set; then :
+  withval=$with_zlib_include; zlib_include="$withval"
+fi
+
+
+
+# Check whether --with-zlib-libdir was given.
+if test "${with_zlib_libdir+set}" = set; then :
+  withval=$with_zlib_libdir; zlib_libdir="$withval"
+fi
+
+
+if test "${with_zlib}" != no ; then
+	OLD_LIBS=$LIBS
+	OLD_LDFLAGS=$LDFLAGS
+	OLD_CFLAGS=$CFLAGS
+	OLD_CPPFLAGS=$CPPFLAGS
+
+	if test "${zlib_libdir}" ; then
+		LDFLAGS="$LDFLAGS -L${zlib_libdir}"
+	fi
+	if test "${zlib_include}" ; then
+		CPPFLAGS="$CPPFLAGS -I${zlib_include}"
+		CFLAGS="$CFLAGS -I${zlib_include}"
+	fi
+
+        no_good=no
+
+	ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_zlib_h" = xyes; then :
+
+else
+  no_good=yes
+fi
+
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflateEnd in -lz" >&5
+$as_echo_n "checking for inflateEnd in -lz... " >&6; }
+if ${ac_cv_lib_z_inflateEnd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lz  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char inflateEnd ();
+int
+main ()
+{
+return inflateEnd ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_z_inflateEnd=yes
+else
+  ac_cv_lib_z_inflateEnd=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateEnd" >&5
+$as_echo "$ac_cv_lib_z_inflateEnd" >&6; }
+if test "x$ac_cv_lib_z_inflateEnd" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBZ 1
+_ACEOF
+
+  LIBS="-lz $LIBS"
+
+else
+  no_good=yes
+fi
+
+	if test "$no_good" = yes; then
+		HAVE_ZLIB=no
+
+		LIBS=$OLD_LIBS
+		LDFLAGS=$OLD_LDFLAGS
+		CPPFLAGS=$OLD_CPPFLAGS
+		CFLAGS=$OLD_CFLAGS
+	else
+		HAVE_ZLIB=yes
+
+		$as_echo "#define HAVE_PKG_zlib 1" >>confdefs.h
+
+	fi
+
+fi
+
+
+
+# Check for GL and GLU needed for the raw event viewer
+
+
+
+# Check whether --with-GL was given.
+if test "${with_GL+set}" = set; then :
+  withval=$with_GL; with_GL=$withval
+if test "${with_GL}" != yes; then
+	GL_include="$withval/include"
+	GL_libdir="$withval/lib"
+fi
+
+fi
+
+
+
+# Check whether --with-GL-include was given.
+if test "${with_GL_include+set}" = set; then :
+  withval=$with_GL_include; GL_include="$withval"
+fi
+
+
+
+# Check whether --with-GL-libdir was given.
+if test "${with_GL_libdir+set}" = set; then :
+  withval=$with_GL_libdir; GL_libdir="$withval"
+fi
+
+
+if test "${with_GL}" != no ; then
+	OLD_LIBS=$LIBS
+	OLD_LDFLAGS=$LDFLAGS
+	OLD_CFLAGS=$CFLAGS
+	OLD_CPPFLAGS=$CPPFLAGS
+
+	if test "${GL_libdir}" ; then
+		LDFLAGS="$LDFLAGS -L${GL_libdir}"
+	fi
+	if test "${GL_include}" ; then
+		CPPFLAGS="$CPPFLAGS -I${GL_include}"
+		CFLAGS="$CFLAGS -I${GL_include}"
+	fi
+
+        no_good=no
+
+	ac_fn_c_check_header_mongrel "$LINENO" "GL/gl.h" "ac_cv_header_GL_gl_h" "$ac_includes_default"
+if test "x$ac_cv_header_GL_gl_h" = xyes; then :
+
+else
+  no_good=yes
+fi
+
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for glLoadIdentity in -lGL" >&5
+$as_echo_n "checking for glLoadIdentity in -lGL... " >&6; }
+if ${ac_cv_lib_GL_glLoadIdentity+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lGL  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char glLoadIdentity ();
+int
+main ()
+{
+return glLoadIdentity ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_GL_glLoadIdentity=yes
+else
+  ac_cv_lib_GL_glLoadIdentity=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_GL_glLoadIdentity" >&5
+$as_echo "$ac_cv_lib_GL_glLoadIdentity" >&6; }
+if test "x$ac_cv_lib_GL_glLoadIdentity" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBGL 1
+_ACEOF
+
+  LIBS="-lGL $LIBS"
+
+else
+  no_good=yes
+fi
+
+	if test "$no_good" = yes; then
+		HAVE_GL=no
+
+		LIBS=$OLD_LIBS
+		LDFLAGS=$OLD_LDFLAGS
+		CPPFLAGS=$OLD_CPPFLAGS
+		CFLAGS=$OLD_CFLAGS
+	else
+		HAVE_GL=yes
+
+		$as_echo "#define HAVE_PKG_GL 1" >>confdefs.h
+
+	fi
+
+fi
+
+
+
+
+
+# Check whether --with-GLU was given.
+if test "${with_GLU+set}" = set; then :
+  withval=$with_GLU; with_GLU=$withval
+if test "${with_GLU}" != yes; then
+	GLU_include="$withval/include"
+	GLU_libdir="$withval/lib"
+fi
+
+fi
+
+
+
+# Check whether --with-GLU-include was given.
+if test "${with_GLU_include+set}" = set; then :
+  withval=$with_GLU_include; GLU_include="$withval"
+fi
+
+
+
+# Check whether --with-GLU-libdir was given.
+if test "${with_GLU_libdir+set}" = set; then :
+  withval=$with_GLU_libdir; GLU_libdir="$withval"
+fi
+
+
+if test "${with_GLU}" != no ; then
+	OLD_LIBS=$LIBS
+	OLD_LDFLAGS=$LDFLAGS
+	OLD_CFLAGS=$CFLAGS
+	OLD_CPPFLAGS=$CPPFLAGS
+
+	if test "${GLU_libdir}" ; then
+		LDFLAGS="$LDFLAGS -L${GLU_libdir}"
+	fi
+	if test "${GLU_include}" ; then
+		CPPFLAGS="$CPPFLAGS -I${GLU_include}"
+		CFLAGS="$CFLAGS -I${GLU_include}"
+	fi
+
+        no_good=no
+
+	ac_fn_c_check_header_mongrel "$LINENO" "GL/glu.h" "ac_cv_header_GL_glu_h" "$ac_includes_default"
+if test "x$ac_cv_header_GL_glu_h" = xyes; then :
+
+else
+  no_good=yes
+fi
+
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gluNewTess in -lGLU" >&5
+$as_echo_n "checking for gluNewTess in -lGLU... " >&6; }
+if ${ac_cv_lib_GLU_gluNewTess+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lGLU  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gluNewTess ();
+int
+main ()
+{
+return gluNewTess ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_GLU_gluNewTess=yes
+else
+  ac_cv_lib_GLU_gluNewTess=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_GLU_gluNewTess" >&5
+$as_echo "$ac_cv_lib_GLU_gluNewTess" >&6; }
+if test "x$ac_cv_lib_GLU_gluNewTess" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBGLU 1
+_ACEOF
+
+  LIBS="-lGLU $LIBS"
+
+else
+  no_good=yes
+fi
+
+	if test "$no_good" = yes; then
+		HAVE_GLU=no
+
+		LIBS=$OLD_LIBS
+		LDFLAGS=$OLD_LDFLAGS
+		CPPFLAGS=$OLD_CPPFLAGS
+		CFLAGS=$OLD_CFLAGS
+	else
+		HAVE_GLU=yes
+
+		$as_echo "#define HAVE_PKG_GLU 1" >>confdefs.h
+
+	fi
+
+fi
+
+
+
+# Check for libnova
+
+
+
+# Check whether --with-nova was given.
+if test "${with_nova+set}" = set; then :
+  withval=$with_nova; with_nova=$withval
+if test "${with_nova}" != yes; then
+	nova_include="$withval/include"
+	nova_libdir="$withval/lib"
+fi
+
+fi
+
+
+
+# Check whether --with-nova-include was given.
+if test "${with_nova_include+set}" = set; then :
+  withval=$with_nova_include; nova_include="$withval"
+fi
+
+
+
+# Check whether --with-nova-libdir was given.
+if test "${with_nova_libdir+set}" = set; then :
+  withval=$with_nova_libdir; nova_libdir="$withval"
+fi
+
+
+if test "${with_nova}" != no ; then
+	OLD_LIBS=$LIBS
+	OLD_LDFLAGS=$LDFLAGS
+	OLD_CFLAGS=$CFLAGS
+	OLD_CPPFLAGS=$CPPFLAGS
+
+	if test "${nova_libdir}" ; then
+		LDFLAGS="$LDFLAGS -L${nova_libdir}"
+	fi
+	if test "${nova_include}" ; then
+		CPPFLAGS="$CPPFLAGS -I${nova_include}"
+		CFLAGS="$CFLAGS -I${nova_include}"
+	fi
+
+        no_good=no
+
+	ac_fn_c_check_header_mongrel "$LINENO" "libnova/julian_day.h" "ac_cv_header_libnova_julian_day_h" "$ac_includes_default"
+if test "x$ac_cv_header_libnova_julian_day_h" = xyes; then :
+
+else
+  no_good=yes
+fi
+
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ln_get_julian_from_sys in -lnova" >&5
+$as_echo_n "checking for ln_get_julian_from_sys in -lnova... " >&6; }
+if ${ac_cv_lib_nova_ln_get_julian_from_sys+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnova  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char ln_get_julian_from_sys ();
+int
+main ()
+{
+return ln_get_julian_from_sys ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_nova_ln_get_julian_from_sys=yes
+else
+  ac_cv_lib_nova_ln_get_julian_from_sys=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nova_ln_get_julian_from_sys" >&5
+$as_echo "$ac_cv_lib_nova_ln_get_julian_from_sys" >&6; }
+if test "x$ac_cv_lib_nova_ln_get_julian_from_sys" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBNOVA 1
+_ACEOF
+
+  LIBS="-lnova $LIBS"
+
+else
+  no_good=yes
+fi
+
+	if test "$no_good" = yes; then
+		HAVE_NOVA=no
+
+		LIBS=$OLD_LIBS
+		LDFLAGS=$OLD_LDFLAGS
+		CPPFLAGS=$OLD_CPPFLAGS
+		CFLAGS=$OLD_CFLAGS
+	else
+		HAVE_NOVA=yes
+
+		$as_echo "#define HAVE_PKG_nova 1" >>confdefs.h
+
+	fi
+
+fi
+
+
+
+# Taken from http://code.google.com/p/autoconf-gl-macros/
+#AX_CHECK_GL
+#AX_CHECK_GLU
+#AX_CHECK_GLUT
+
+# Needed to compile FACT++
+
+
+
+# Check whether --with-cfitsio was given.
+if test "${with_cfitsio+set}" = set; then :
+  withval=$with_cfitsio; with_cfitsio=$withval
+if test "${with_cfitsio}" != yes; then
+	cfitsio_include="$withval/include"
+	cfitsio_libdir="$withval/lib"
+fi
+
+fi
+
+
+
+# Check whether --with-cfitsio-include was given.
+if test "${with_cfitsio_include+set}" = set; then :
+  withval=$with_cfitsio_include; cfitsio_include="$withval"
+fi
+
+
+
+# Check whether --with-cfitsio-libdir was given.
+if test "${with_cfitsio_libdir+set}" = set; then :
+  withval=$with_cfitsio_libdir; cfitsio_libdir="$withval"
+fi
+
+
+if test "${with_cfitsio}" != no ; then
+	OLD_LIBS=$LIBS
+	OLD_LDFLAGS=$LDFLAGS
+	OLD_CFLAGS=$CFLAGS
+	OLD_CPPFLAGS=$CPPFLAGS
+
+	if test "${cfitsio_libdir}" ; then
+		LDFLAGS="$LDFLAGS -L${cfitsio_libdir}"
+	fi
+	if test "${cfitsio_include}" ; then
+		CPPFLAGS="$CPPFLAGS -I${cfitsio_include}"
+		CFLAGS="$CFLAGS -I${cfitsio_include}"
+	fi
+
+        no_good=no
+
+	ac_fn_c_check_header_mongrel "$LINENO" "fitsio.h" "ac_cv_header_fitsio_h" "$ac_includes_default"
+if test "x$ac_cv_header_fitsio_h" = xyes; then :
+
+else
+  no_good=yes
+fi
+
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ffpss in -lcfitsio" >&5
+$as_echo_n "checking for ffpss in -lcfitsio... " >&6; }
+if ${ac_cv_lib_cfitsio_ffpss+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lcfitsio  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char ffpss ();
+int
+main ()
+{
+return ffpss ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_cfitsio_ffpss=yes
+else
+  ac_cv_lib_cfitsio_ffpss=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cfitsio_ffpss" >&5
+$as_echo "$ac_cv_lib_cfitsio_ffpss" >&6; }
+if test "x$ac_cv_lib_cfitsio_ffpss" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBCFITSIO 1
+_ACEOF
+
+  LIBS="-lcfitsio $LIBS"
+
+else
+  no_good=yes
+fi
+
+	if test "$no_good" = yes; then
+		HAVE_CFITSIO=no
+
+		LIBS=$OLD_LIBS
+		LDFLAGS=$OLD_LDFLAGS
+		CPPFLAGS=$OLD_CPPFLAGS
+		CFLAGS=$OLD_CFLAGS
+	else
+		HAVE_CFITSIO=yes
+
+		$as_echo "#define HAVE_PKG_cfitsio 1" >>confdefs.h
+
+	fi
+
+fi
+
+
+
+#AC_CHECK_HEADERS([fitsio.h],,AC_MSG_ERROR([cfitsio headers not found]))
+#AC_CHECK_LIB([cfitsio], main,,AC_MSG_ERROR([cfitsio library not found]))
+
+ac_ext=cpp
+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
+
+
+# Needed to compile FACT++
+
+
+
+
+# Check whether --with-ccfits was given.
+if test "${with_ccfits+set}" = set; then :
+  withval=$with_ccfits; with_ccfits=$withval
+if test "${with_ccfits}" != yes; then
+	ccfits_include="$withval/include"
+	ccfits_libdir="$withval/lib"
+fi
+
+fi
+
+
+
+# Check whether --with-ccfits-include was given.
+if test "${with_ccfits_include+set}" = set; then :
+  withval=$with_ccfits_include; ccfits_include="$withval"
+fi
+
+
+
+# Check whether --with-ccfits-libdir was given.
+if test "${with_ccfits_libdir+set}" = set; then :
+  withval=$with_ccfits_libdir; ccfits_libdir="$withval"
+fi
+
+
+if test "${with_ccfits}" != no ; then
+	OLD_LIBS=$LIBS
+	OLD_LDFLAGS=$LDFLAGS
+	OLD_CFLAGS=$CFLAGS
+	OLD_CPPFLAGS=$CPPFLAGS
+
+	if test "${ccfits_libdir}" ; then
+		LDFLAGS="$LDFLAGS -L${ccfits_libdir}"
+	fi
+	if test "${ccfits_include}" ; then
+		CPPFLAGS="$CPPFLAGS -I${ccfits_include}"
+		CFLAGS="$CFLAGS -I${ccfits_include}"
+	fi
+
+        no_good=no
+
+	ac_fn_cxx_check_header_mongrel "$LINENO" "CCfits/CCfits" "ac_cv_header_CCfits_CCfits" "$ac_includes_default"
+if test "x$ac_cv_header_CCfits_CCfits" = xyes; then :
+
+else
+  no_good=yes
+fi
+
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lCCfits" >&5
+$as_echo_n "checking for main in -lCCfits... " >&6; }
+if ${ac_cv_lib_CCfits_main+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lCCfits  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_CCfits_main=yes
+else
+  ac_cv_lib_CCfits_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_CCfits_main" >&5
+$as_echo "$ac_cv_lib_CCfits_main" >&6; }
+if test "x$ac_cv_lib_CCfits_main" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBCCFITS 1
+_ACEOF
+
+  LIBS="-lCCfits $LIBS"
+
+else
+  no_good=yes
+fi
+
+	if test "$no_good" = yes; then
+		HAVE_CCFITS=no
+
+		LIBS=$OLD_LIBS
+		LDFLAGS=$OLD_LDFLAGS
+		CPPFLAGS=$OLD_CPPFLAGS
+		CFLAGS=$OLD_CFLAGS
+	else
+		HAVE_CCFITS=yes
+
+		$as_echo "#define HAVE_PKG_ccfits 1" >>confdefs.h
+
+	fi
+
+fi
+
+
+
+#AC_CHECK_HEADERS([CCfits/CCfits],,
+#   AC_MSG_ERROR(CCfits headers not found))
+#AC_CHECK_LIB(CCfits, main,,
+#   AC_MSG_ERROR(CCfits library not found))
+
+######################################################################
+# MySQL(++) SUPPORT
+######################################################################
+
+# Needed to compile FACT++
+
+	MYSQL_inc_check="/usr/include/mysql /usr/local/include/mysql /usr/local/mysql/include /usr/local/mysql/include/mysql /usr/mysql/include/mysql /opt/mysql/include/mysql /sw/include/mysql"
+
+# Check whether --with-mysql-include was given.
+if test "${with_mysql_include+set}" = set; then :
+  withval=$with_mysql_include; MYSQL_inc_check="$with_mysql_include $with_mysql_include/include $with_mysql_include/include/mysql"
+fi
+
+
+	#
+	# Look for MySQL C API headers
+	#
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MySQL include directory" >&5
+$as_echo_n "checking for MySQL include directory... " >&6; }
+	MYSQL_C_INC_DIR=
+	for m in $MYSQL_inc_check
+	do
+		if test -d "$m" && test -f "$m/mysql.h"
+		then
+			MYSQL_C_INC_DIR=$m
+			break
+		fi
+	done
+
+	if test -z "$MYSQL_C_INC_DIR"
+	then
+		as_fn_error $? "Didn't find the MySQL include dir in '$MYSQL_inc_check'" "$LINENO" 5
+	fi
+
+	case "$MYSQL_C_INC_DIR" in
+		/* ) ;;
+		* )  as_fn_error $? "The MySQL include directory ($MYSQL_C_INC_DIR) must be an absolute path." "$LINENO" 5 ;;
+	esac
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MYSQL_C_INC_DIR" >&5
+$as_echo "$MYSQL_C_INC_DIR" >&6; }
+
+	CPPFLAGS="$CPPFLAGS -I${MYSQL_C_INC_DIR}"
+
+
+
+
+
+# Check whether --with-mysqlpp was given.
+if test "${with_mysqlpp+set}" = set; then :
+  withval=$with_mysqlpp; MYSQLPP_lib_check="$with_mysqlpp/lib64 $with_mysqlpp/lib $with_mysqlpp/lib64/mysql++ $with_mysqlpp/lib/mysql++"
+		  MYSQLPP_inc_check="$with_mysqlpp/include $with_mysqlpp/include/mysql++"
+else
+  MYSQLPP_lib_check="/usr/local/mysql++/lib64 /usr/local/mysql++/lib /usr/local/lib64/mysql++ /usr/local/lib/mysql++ /opt/mysql++/lib64 /opt/mysql++/lib /usr/lib64/mysql++ /usr/lib/mysql++ /usr/local/lib64 /usr/local/lib /usr/lib64 /usr/lib"
+		  MYSQLPP_inc_check="/usr/local/mysql++/include /usr/local/include/mysql++ /opt/mysql++/include /usr/local/include/mysql++ /usr/local/include /usr/include/mysql++ /usr/include"
+fi
+
+
+# Check whether --with-mysqlpp-lib was given.
+if test "${with_mysqlpp_lib+set}" = set; then :
+  withval=$with_mysqlpp_lib; MYSQLPP_lib_check="$with_mysqlpp_lib $with_mysqlpp_lib/lib64 $with_mysqlpp_lib/lib $with_mysqlpp_lib/lib64/mysql $with_mysqlpp_lib/lib/mysql"
+fi
+
+
+# Check whether --with-mysqlpp-include was given.
+if test "${with_mysqlpp_include+set}" = set; then :
+  withval=$with_mysqlpp_include; MYSQLPP_inc_check="$with_mysqlpp_include $with_mysqlpp_include/include $with_mysqlpp_include/include/mysql"
+fi
+
+
+				{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MySQL++ library location" >&5
+$as_echo_n "checking for MySQL++ library location... " >&6; }
+if ${ac_cv_mysqlpp_lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+		for dir in $MYSQLPP_lib_check
+		do
+			if test -d "$dir" && \
+				( test -f "$dir/libmysqlpp.so" ||
+				  test -f "$dir/libmysqlpp.a" )
+			then
+				ac_cv_mysqlpp_lib=$dir
+				break
+			fi
+		done
+
+		if test -z "$ac_cv_mysqlpp_lib"
+		then
+			as_fn_error $? "Didn't find the MySQL++ library dir in '$MYSQLPP_lib_check'" "$LINENO" 5
+		fi
+
+		case "$ac_cv_mysqlpp_lib" in
+			/* ) ;;
+			* )  as_fn_error $? "The MySQL++ library directory ($ac_cv_mysqlpp_lib) must be an absolute path." "$LINENO" 5 ;;
+		esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mysqlpp_lib" >&5
+$as_echo "$ac_cv_mysqlpp_lib" >&6; }
+	MYSQLPP_LIB_DIR=$ac_cv_mysqlpp_lib
+
+
+				{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MySQL++ include path" >&5
+$as_echo_n "checking for MySQL++ include path... " >&6; }
+if ${ac_cv_mysqlpp_inc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+		for dir in $MYSQLPP_inc_check
+		do
+			if test -d "$dir" && test -f "$dir/mysql++.h"
+			then
+				ac_cv_mysqlpp_inc=$dir
+				break
+			fi
+		done
+
+		if test -z "$ac_cv_mysqlpp_inc"
+		then
+			as_fn_error $? "Didn't find the MySQL++ header dir in '$MYSQLPP_inc_check'" "$LINENO" 5
+		fi
+
+		case "$ac_cv_mysqlpp_inc" in
+			/* ) ;;
+			* )  as_fn_error $? "The MySQL++ header directory ($ac_cv_mysqlpp_inc) must be an absolute path." "$LINENO" 5 ;;
+		esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mysqlpp_inc" >&5
+$as_echo "$ac_cv_mysqlpp_inc" >&6; }
+	MYSQLPP_INC_DIR=$ac_cv_mysqlpp_inc
+
+
+					case "$ac_cv_mysqlpp_lib" in
+	  /usr/lib) ;;
+	  *) LDFLAGS="$LDFLAGS -L${ac_cv_mysqlpp_lib}" ;;
+	esac
+	CPPFLAGS="$CPPFLAGS -I${ac_cv_mysqlpp_inc} -I${MYSQL_C_INC_DIR}"
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that we can build MySQL++ programs" >&5
+$as_echo_n "checking that we can build MySQL++ programs... " >&6; }
+	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <mysql++.h>
+int
+main ()
+{
+mysqlpp::Connection c(false)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  as_fn_error $? "no" "$LINENO" 5
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
+LDFLAGS+=" -lmysqlpp"
+
+######################################################################
+# BOOST SUPPORT
+######################################################################
+
+# Needed to compile FACT++
+
+
+# Check whether --with-boost was given.
+if test "${with_boost+set}" = set; then :
+  withval=$with_boost;
+    if test "$withval" = "no"; then
+        want_boost="no"
+    elif test "$withval" = "yes"; then
+        want_boost="yes"
+        ac_boost_path=""
+    else
+        want_boost="yes"
+        ac_boost_path="$withval"
+    fi
+
+else
+  want_boost="yes"
+fi
+
+
+
+
+# Check whether --with-boost-libdir was given.
+if test "${with_boost_libdir+set}" = set; then :
+  withval=$with_boost_libdir;
+        if test -d "$withval"
+        then
+                ac_boost_lib_path="$withval"
+        else
+                as_fn_error $? "--with-boost-libdir expected directory name" "$LINENO" 5
+        fi
+
+else
+  ac_boost_lib_path=""
+
+fi
+
+
+if test "x$want_boost" = "xyes"; then
+    boost_lib_version_req=1.40
+    boost_lib_version_req_shorten=`expr $boost_lib_version_req : '\([0-9]*\.[0-9]*\)'`
+    boost_lib_version_req_major=`expr $boost_lib_version_req : '\([0-9]*\)'`
+    boost_lib_version_req_minor=`expr $boost_lib_version_req : '[0-9]*\.\([0-9]*\)'`
+    boost_lib_version_req_sub_minor=`expr $boost_lib_version_req : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
+    if test "x$boost_lib_version_req_sub_minor" = "x" ; then
+        boost_lib_version_req_sub_minor="0"
+        fi
+    WANT_BOOST_VERSION=`expr $boost_lib_version_req_major \* 100000 \+  $boost_lib_version_req_minor \* 100 \+ $boost_lib_version_req_sub_minor`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for boostlib >= $boost_lib_version_req" >&5
+$as_echo_n "checking for boostlib >= $boost_lib_version_req... " >&6; }
+    succeeded=no
+
+                        libsubdirs="lib"
+    ax_arch=`uname -m`
+    if test $ax_arch = x86_64 -o $ax_arch = ppc64 -o $ax_arch = s390x -o $ax_arch = sparc64; then
+        libsubdirs="lib64 lib lib64"
+    fi
+
+                if test "$ac_boost_path" != ""; then
+        BOOST_CPPFLAGS="-I$ac_boost_path/include"
+        for ac_boost_path_tmp in $libsubdirs; do
+                if test -d "$ac_boost_path"/"$ac_boost_path_tmp" ; then
+                        BOOST_LDFLAGS="-L$ac_boost_path/$ac_boost_path_tmp"
+                        break
+                fi
+        done
+    elif test "$cross_compiling" != yes; then
+        for ac_boost_path_tmp in /usr /usr/local /opt /opt/local ; do
+            if test -d "$ac_boost_path_tmp/include/boost" && test -r "$ac_boost_path_tmp/include/boost"; then
+                for libsubdir in $libsubdirs ; do
+                    if ls "$ac_boost_path_tmp/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
+                done
+                BOOST_LDFLAGS="-L$ac_boost_path_tmp/$libsubdir"
+                BOOST_CPPFLAGS="-I$ac_boost_path_tmp/include"
+                break;
+            fi
+        done
+    fi
+
+            if test "$ac_boost_lib_path" != ""; then
+       BOOST_LDFLAGS="-L$ac_boost_lib_path"
+    fi
+
+    CPPFLAGS_SAVED="$CPPFLAGS"
+    CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+    export CPPFLAGS
+
+    LDFLAGS_SAVED="$LDFLAGS"
+    LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+    export LDFLAGS
+
+
+    ac_ext=cpp
+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
+
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+    #include <boost/version.hpp>
+
+int
+main ()
+{
+
+    #if BOOST_VERSION >= $WANT_BOOST_VERSION
+    // Everything is okay
+    #else
+    #  error Boost version is too old
+    #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+    succeeded=yes
+    found_system=yes
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=cpp
+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 "x$succeeded" != "xyes"; then
+        _version=0
+        if test "$ac_boost_path" != ""; then
+            if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
+                for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
+                    _version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
+                    V_CHECK=`expr $_version_tmp \> $_version`
+                    if test "$V_CHECK" = "1" ; then
+                        _version=$_version_tmp
+                    fi
+                    VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
+                    BOOST_CPPFLAGS="-I$ac_boost_path/include/boost-$VERSION_UNDERSCORE"
+                done
+            fi
+        else
+            if test "$cross_compiling" != yes; then
+                for ac_boost_path in /usr /usr/local /opt /opt/local ; do
+                    if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
+                        for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
+                            _version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
+                            V_CHECK=`expr $_version_tmp \> $_version`
+                            if test "$V_CHECK" = "1" ; then
+                                _version=$_version_tmp
+                                best_path=$ac_boost_path
+                            fi
+                        done
+                    fi
+                done
+
+                VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
+                BOOST_CPPFLAGS="-I$best_path/include/boost-$VERSION_UNDERSCORE"
+                if test "$ac_boost_lib_path" = ""; then
+                    for libsubdir in $libsubdirs ; do
+                        if ls "$best_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
+                    done
+                    BOOST_LDFLAGS="-L$best_path/$libsubdir"
+                fi
+            fi
+
+            if test "x$BOOST_ROOT" != "x"; then
+                for libsubdir in $libsubdirs ; do
+                    if ls "$BOOST_ROOT/stage/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
+                done
+                if test -d "$BOOST_ROOT" && test -r "$BOOST_ROOT" && test -d "$BOOST_ROOT/stage/$libsubdir" && test -r "$BOOST_ROOT/stage/$libsubdir"; then
+                    version_dir=`expr //$BOOST_ROOT : '.*/\(.*\)'`
+                    stage_version=`echo $version_dir | sed 's/boost_//' | sed 's/_/./g'`
+                        stage_version_shorten=`expr $stage_version : '\([0-9]*\.[0-9]*\)'`
+                    V_CHECK=`expr $stage_version_shorten \>\= $_version`
+                    if test "$V_CHECK" = "1" -a "$ac_boost_lib_path" = "" ; then
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: We will use a staged boost library from $BOOST_ROOT" >&5
+$as_echo "$as_me: We will use a staged boost library from $BOOST_ROOT" >&6;}
+                        BOOST_CPPFLAGS="-I$BOOST_ROOT"
+                        BOOST_LDFLAGS="-L$BOOST_ROOT/stage/$libsubdir"
+                    fi
+                fi
+            fi
+        fi
+
+        CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+        export CPPFLAGS
+        LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+        export LDFLAGS
+
+        ac_ext=cpp
+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
+
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+        #include <boost/version.hpp>
+
+int
+main ()
+{
+
+        #if BOOST_VERSION >= $WANT_BOOST_VERSION
+        // Everything is okay
+        #else
+        #  error Boost version is too old
+        #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+            { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+        succeeded=yes
+        found_system=yes
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+        ac_ext=cpp
+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
+
+    fi
+
+    if test "$succeeded" != "yes" ; then
+        if test "$_version" = "0" ; then
+            { $as_echo "$as_me:${as_lineno-$LINENO}: We could not detect the boost libraries (version $boost_lib_version_req_shorten or higher). If you have a staged boost library (still not installed) please specify \$BOOST_ROOT in your environment and do not give a PATH to --with-boost option.  If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation." >&5
+$as_echo "$as_me: We could not detect the boost libraries (version $boost_lib_version_req_shorten or higher). If you have a staged boost library (still not installed) please specify \$BOOST_ROOT in your environment and do not give a PATH to --with-boost option.  If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation." >&6;}
+        else
+            { $as_echo "$as_me:${as_lineno-$LINENO}: Your boost libraries seems to old (version $_version)." >&5
+$as_echo "$as_me: Your boost libraries seems to old (version $_version)." >&6;}
+        fi
+        # execute ACTION-IF-NOT-FOUND (if present):
+        as_fn_error $? "The boost C++ libraries (>=1.40) are not properly installed." "$LINENO" 5
+
+    else
+
+
+
+$as_echo "#define HAVE_BOOST /**/" >>confdefs.h
+
+        # execute ACTION-IF-FOUND (if present):
+        :
+    fi
+
+    CPPFLAGS="$CPPFLAGS_SAVED"
+    LDFLAGS="$LDFLAGS_SAVED"
+fi
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BOOST_CPPFLAGS" >&5
+$as_echo_n "checking for BOOST_CPPFLAGS... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOST_CPPFLAGS" >&5
+$as_echo "$BOOST_CPPFLAGS" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BOOST_LDFLAGS" >&5
+$as_echo_n "checking for BOOST_LDFLAGS... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOST_LDFLAGS" >&5
+$as_echo "$BOOST_LDFLAGS" >&6; }
+
+# Keep this order AX_BOOST_FILESYSTEM needs AX_BOOST_SYSTEM_LIB
+
+
+# Check whether --with-boost-system was given.
+if test "${with_boost_system+set}" = set; then :
+  withval=$with_boost_system;
+        if test "$withval" = "no"; then
+			want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_system_lib=""
+        else
+		    want_boost="yes"
+		ax_boost_user_system_lib="$withval"
+		fi
+
+else
+  want_boost="yes"
+
+fi
+
+
+	if test "x$want_boost" = "xyes"; then
+
+
+		CPPFLAGS_SAVED="$CPPFLAGS"
+		CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+		export CPPFLAGS
+
+		LDFLAGS_SAVED="$LDFLAGS"
+		LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+		export LDFLAGS
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the Boost::System library is available" >&5
+$as_echo_n "checking whether the Boost::System library is available... " >&6; }
+if ${ax_cv_boost_system+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=cpp
+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
+
+			 CXXFLAGS_SAVE=$CXXFLAGS
+
+			 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <boost/system/error_code.hpp>
+int
+main ()
+{
+boost::system::system_category
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_boost_system=yes
+else
+  ax_cv_boost_system=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+			 CXXFLAGS=$CXXFLAGS_SAVE
+             ac_ext=cpp
+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
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_boost_system" >&5
+$as_echo "$ax_cv_boost_system" >&6; }
+		if test "x$ax_cv_boost_system" = "xyes"; then
+
+
+
+$as_echo "#define HAVE_BOOST_SYSTEM /**/" >>confdefs.h
+
+            BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/[^\/]*//'`
+
+			LDFLAGS_SAVE=$LDFLAGS
+            if test "x$ax_boost_user_system_lib" = "x"; then
+                for libextension in `ls $BOOSTLIBDIR/libboost_system*.so* $BOOSTLIBDIR/libboost_system*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_system.*\)\.so.*$;\1;' -e 's;^lib\(boost_system.*\)\.a*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_SYSTEM_LIB="-l$ax_lib";  link_system="yes"; break
+else
+  link_system="no"
+fi
+
+				done
+                if test "x$link_system" != "xyes"; then
+                for libextension in `ls $BOOSTLIBDIR/boost_system*.{dll,a}* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_system.*\)\.dll.*$;\1;' -e 's;^\(boost_system.*\)\.a*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_SYSTEM_LIB="-l$ax_lib";  link_system="yes"; break
+else
+  link_system="no"
+fi
+
+				done
+                fi
+
+            else
+               for ax_lib in $ax_boost_user_system_lib boost_system-$ax_boost_user_system_lib; do
+				      as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_SYSTEM_LIB="-l$ax_lib";  link_system="yes"; break
+else
+  link_system="no"
+fi
+
+                  done
+
+            fi
+            if test "x$ax_lib" = "x"; then
+                as_fn_error $? "Could not find a version of the library!" "$LINENO" 5
+            fi
+			if test "x$link_system" = "xno"; then
+				as_fn_error $? "Could not link against $ax_lib !" "$LINENO" 5
+			fi
+		fi
+
+		CPPFLAGS="$CPPFLAGS_SAVED"
+	LDFLAGS="$LDFLAGS_SAVED"
+	fi
+
+if test "x$ax_cv_boost_system" != "xyes"; then :
+  as_fn_error $? "Problems with the Boost::System libarary." "$LINENO" 5
+fi
+
+
+
+# Check whether --with-boost-asio was given.
+if test "${with_boost_asio+set}" = set; then :
+  withval=$with_boost_asio;
+        if test "$withval" = "no"; then
+			want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_asio_lib=""
+        else
+		    want_boost="yes"
+		ax_boost_user_asio_lib="$withval"
+		fi
+
+else
+  want_boost="yes"
+
+fi
+
+
+	if test "x$want_boost" = "xyes"; then
+
+		CPPFLAGS_SAVED="$CPPFLAGS"
+		CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+		export CPPFLAGS
+
+		LDFLAGS_SAVED="$LDFLAGS"
+		LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+		export LDFLAGS
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the Boost::ASIO library is available" >&5
+$as_echo_n "checking whether the Boost::ASIO library is available... " >&6; }
+if ${ax_cv_boost_asio+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=cpp
+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
+
+		 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+ #include <boost/asio.hpp>
+
+int
+main ()
+{
+
+
+                                    boost::asio::io_service io;
+                                    boost::system::error_code timer_result;
+                                    boost::asio::deadline_timer t(io);
+                                    t.cancel();
+                                    io.run_one();
+									return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_boost_asio=yes
+else
+  ax_cv_boost_asio=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         ac_ext=cpp
+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
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_boost_asio" >&5
+$as_echo "$ax_cv_boost_asio" >&6; }
+		if test "x$ax_cv_boost_asio" = "xyes"; then
+
+$as_echo "#define HAVE_BOOST_ASIO /**/" >>confdefs.h
+
+			BN=boost_system
+            if test "x$ax_boost_user_asio_lib" = "x"; then
+				for ax_lib in $BN $BN-$CC $BN-$CC-mt $BN-$CC-mt-s $BN-$CC-s \
+                              lib$BN lib$BN-$CC lib$BN-$CC-mt lib$BN-$CC-mt-s lib$BN-$CC-s \
+                              $BN-mgw $BN-mgw $BN-mgw-mt $BN-mgw-mt-s $BN-mgw-s ; do
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_main" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -l$ax_lib" >&5
+$as_echo_n "checking for main in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_ASIO_LIB="-l$ax_lib"  link_thread="yes" break
+else
+  link_thread="no"
+fi
+
+				done
+            else
+               for ax_lib in $ax_boost_user_asio_lib $BN-$ax_boost_user_asio_lib; do
+				      as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_main" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -l$ax_lib" >&5
+$as_echo_n "checking for main in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_ASIO_LIB="-l$ax_lib"  link_asio="yes" break
+else
+  link_asio="no"
+fi
+
+                  done
+
+            fi
+            if test "x$ax_lib" = "x"; then
+                as_fn_error $? "Could not find a version of the library!" "$LINENO" 5
+            fi
+			if test "x$link_asio" = "xno"; then
+				as_fn_error $? "Could not link against $ax_lib !" "$LINENO" 5
+			fi
+		fi
+
+		CPPFLAGS="$CPPFLAGS_SAVED"
+	LDFLAGS="$LDFLAGS_SAVED"
+	fi
+
+if test "x$ax_cv_boost_asio" != "xyes"; then :
+  as_fn_error $? "Problems with the Boost::ASIO libarary." "$LINENO" 5
+fi
+
+
+
+# Check whether --with-boost-date-time was given.
+if test "${with_boost_date_time+set}" = set; then :
+  withval=$with_boost_date_time;
+        if test "$withval" = "no"; then
+			want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_date_time_lib=""
+        else
+		    want_boost="yes"
+		ax_boost_user_date_time_lib="$withval"
+		fi
+
+else
+  want_boost="yes"
+
+fi
+
+
+	if test "x$want_boost" = "xyes"; then
+
+		CPPFLAGS_SAVED="$CPPFLAGS"
+		CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+		export CPPFLAGS
+
+		LDFLAGS_SAVED="$LDFLAGS"
+		LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+		export LDFLAGS
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the Boost::Date_Time library is available" >&5
+$as_echo_n "checking whether the Boost::Date_Time library is available... " >&6; }
+if ${ax_cv_boost_date_time+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=cpp
+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
+
+		 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <boost/date_time/gregorian/gregorian_types.hpp>
+int
+main ()
+{
+using namespace boost::gregorian; date d(2002,Jan,10);
+                                     return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_boost_date_time=yes
+else
+  ax_cv_boost_date_time=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         ac_ext=cpp
+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
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_boost_date_time" >&5
+$as_echo "$ax_cv_boost_date_time" >&6; }
+		if test "x$ax_cv_boost_date_time" = "xyes"; then
+
+$as_echo "#define HAVE_BOOST_DATE_TIME /**/" >>confdefs.h
+
+            BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/[^\/]*//'`
+            if test "x$ax_boost_user_date_time_lib" = "x"; then
+                for libextension in `ls $BOOSTLIBDIR/libboost_date_time*.so* $BOOSTLIBDIR/libboost_date_time*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_date_time.*\)\.so.*$;\1;' -e 's;^lib\(boost_date_time.*\)\.a*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_DATE_TIME_LIB="-l$ax_lib";  link_date_time="yes"; break
+else
+  link_date_time="no"
+fi
+
+				done
+                if test "x$link_date_time" != "xyes"; then
+                for libextension in `ls $BOOSTLIBDIR/boost_date_time*.{dll,a}* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_date_time.*\)\.dll.*$;\1;' -e 's;^\(boost_date_time.*\)\.a*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_DATE_TIME_LIB="-l$ax_lib";  link_date_time="yes"; break
+else
+  link_date_time="no"
+fi
+
+				done
+                fi
+
+            else
+               for ax_lib in $ax_boost_user_date_time_lib boost_date_time-$ax_boost_user_date_time_lib; do
+				      as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_main" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -l$ax_lib" >&5
+$as_echo_n "checking for main in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_DATE_TIME_LIB="-l$ax_lib";  link_date_time="yes"; break
+else
+  link_date_time="no"
+fi
+
+                  done
+
+            fi
+            if test "x$ax_lib" = "x"; then
+                as_fn_error $? "Could not find a version of the library!" "$LINENO" 5
+            fi
+			if test "x$link_date_time" != "xyes"; then
+				as_fn_error $? "Could not link against $ax_lib !" "$LINENO" 5
+			fi
+		fi
+
+		CPPFLAGS="$CPPFLAGS_SAVED"
+	LDFLAGS="$LDFLAGS_SAVED"
+	fi
+
+if test "x$ax_cv_boost_date_time" != "xyes"; then :
+  as_fn_error $? "Problems with the Boost::Date_Time libarary." "$LINENO" 5
+fi
+
+
+
+# Check whether --with-boost-filesystem was given.
+if test "${with_boost_filesystem+set}" = set; then :
+  withval=$with_boost_filesystem;
+        if test "$withval" = "no"; then
+			want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_filesystem_lib=""
+        else
+		    want_boost="yes"
+		ax_boost_user_filesystem_lib="$withval"
+		fi
+
+else
+  want_boost="yes"
+
+fi
+
+
+	if test "x$want_boost" = "xyes"; then
+
+		CPPFLAGS_SAVED="$CPPFLAGS"
+		CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+		export CPPFLAGS
+
+		LDFLAGS_SAVED="$LDFLAGS"
+		LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+		export LDFLAGS
+
+		LIBS_SAVED=$LIBS
+		LIBS="$LIBS $BOOST_SYSTEM_LIB"
+		export LIBS
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the Boost::Filesystem library is available" >&5
+$as_echo_n "checking whether the Boost::Filesystem library is available... " >&6; }
+if ${ax_cv_boost_filesystem+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=cpp
+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
+
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <boost/filesystem/path.hpp>
+int
+main ()
+{
+using namespace boost::filesystem;
+                                   path my_path( "foo/bar/data.txt" );
+                                   return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_boost_filesystem=yes
+else
+  ax_cv_boost_filesystem=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         ac_ext=cpp
+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
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_boost_filesystem" >&5
+$as_echo "$ax_cv_boost_filesystem" >&6; }
+		if test "x$ax_cv_boost_filesystem" = "xyes"; then
+
+$as_echo "#define HAVE_BOOST_FILESYSTEM /**/" >>confdefs.h
+
+            BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/[^\/]*//'`
+            if test "x$ax_boost_user_filesystem_lib" = "x"; then
+                for libextension in `ls $BOOSTLIBDIR/libboost_filesystem*.so* $BOOSTLIBDIR/libboost_filesystem*.dylib* $BOOSTLIBDIR/libboost_filesystem*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_filesystem.*\)\.so.*$;\1;' -e 's;^lib\(boost_filesystem.*\)\.a*$;\1;' -e 's;^lib\(boost_filesystem.*\)\.dylib$;\1;'` ; do
+                     ax_lib=${libextension}
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_FILESYSTEM_LIB="-l$ax_lib";  link_filesystem="yes"; break
+else
+  link_filesystem="no"
+fi
+
+				done
+                if test "x$link_filesystem" != "xyes"; then
+                for libextension in `ls $BOOSTLIBDIR/boost_filesystem*.{dll,a}* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_filesystem.*\)\.dll.*$;\1;' -e 's;^\(boost_filesystem.*\)\.a*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_FILESYSTEM_LIB="-l$ax_lib";  link_filesystem="yes"; break
+else
+  link_filesystem="no"
+fi
+
+				done
+		    fi
+            else
+               for ax_lib in $ax_boost_user_filesystem_lib boost_filesystem-$ax_boost_user_filesystem_lib; do
+				      as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_FILESYSTEM_LIB="-l$ax_lib";  link_filesystem="yes"; break
+else
+  link_filesystem="no"
+fi
+
+                  done
+
+            fi
+            if test "x$ax_lib" = "x"; then
+                as_fn_error $? "Could not find a version of the library!" "$LINENO" 5
+            fi
+			if test "x$link_filesystem" != "xyes"; then
+				as_fn_error $? "Could not link against $ax_lib !" "$LINENO" 5
+			fi
+		fi
+
+		CPPFLAGS="$CPPFLAGS_SAVED"
+		LDFLAGS="$LDFLAGS_SAVED"
+		LIBS="$LIBS_SAVED"
+	fi
+
+if test "x$ax_cv_boost_filesystem" != "xyes"; then :
+  as_fn_error $? "Problems with the Boost::Filesystem libarary." "$LINENO" 5
+fi
+
+
+
+# Check whether --with-boost-program-options was given.
+if test "${with_boost_program_options+set}" = set; then :
+  withval=$with_boost_program_options;
+        if test "$withval" = "no"; then
+			want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_program_options_lib=""
+        else
+		    want_boost="yes"
+		ax_boost_user_program_options_lib="$withval"
+		fi
+
+else
+  want_boost="yes"
+
+fi
+
+
+	if test "x$want_boost" = "xyes"; then
+
+	    export want_boost
+		CPPFLAGS_SAVED="$CPPFLAGS"
+		CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+		export CPPFLAGS
+		LDFLAGS_SAVED="$LDFLAGS"
+		LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+		export LDFLAGS
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the Boost::Program_Options library is available" >&5
+$as_echo_n "checking whether the Boost::Program_Options library is available... " >&6; }
+if ${ax_cv_boost_program_options+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=cpp
+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
+
+				cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <boost/program_options.hpp>
+
+int
+main ()
+{
+boost::program_options::options_description generic("Generic options");
+                                   return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_boost_program_options=yes
+else
+  ax_cv_boost_program_options=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+					ac_ext=cpp
+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
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_boost_program_options" >&5
+$as_echo "$ax_cv_boost_program_options" >&6; }
+		if test "$ax_cv_boost_program_options" = yes; then
+
+$as_echo "#define HAVE_BOOST_PROGRAM_OPTIONS /**/" >>confdefs.h
+
+                  BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/[^\/]*//'`
+                if test "x$ax_boost_user_program_options_lib" = "x"; then
+                for libextension in `ls $BOOSTLIBDIR/libboost_program_options*.so* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_program_options.*\)\.so.*$;\1;'` `ls $BOOSTLIBDIR/libboost_program_options*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_program_options.*\)\.a*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_PROGRAM_OPTIONS_LIB="-l$ax_lib";  link_program_options="yes"; break
+else
+  link_program_options="no"
+fi
+
+				done
+                if test "x$link_program_options" != "xyes"; then
+                for libextension in `ls $BOOSTLIBDIR/boost_program_options*.dll* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_program_options.*\)\.dll.*$;\1;'` `ls $BOOSTLIBDIR/boost_program_options*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_program_options.*\)\.a*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_PROGRAM_OPTIONS_LIB="-l$ax_lib";  link_program_options="yes"; break
+else
+  link_program_options="no"
+fi
+
+				done
+                fi
+                else
+                  for ax_lib in $ax_boost_user_program_options_lib boost_program_options-$ax_boost_user_program_options_lib; do
+				      as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_main" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -l$ax_lib" >&5
+$as_echo_n "checking for main in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_PROGRAM_OPTIONS_LIB="-l$ax_lib";  link_program_options="yes"; break
+else
+  link_program_options="no"
+fi
+
+                  done
+                fi
+            if test "x$ax_lib" = "x"; then
+                as_fn_error $? "Could not find a version of the library!" "$LINENO" 5
+            fi
+				if test "x$link_program_options" != "xyes"; then
+					as_fn_error $? "Could not link against $ax_lib !" "$LINENO" 5
+				fi
+		fi
+		CPPFLAGS="$CPPFLAGS_SAVED"
+	LDFLAGS="$LDFLAGS_SAVED"
+	fi
+
+if test "x$ax_cv_boost_program_options" != "xyes"; then :
+  as_fn_error $? "Problems with the Boost::Program_Options libarary." "$LINENO" 5
+fi
+
+
+
+# Check whether --with-boost-regex was given.
+if test "${with_boost_regex+set}" = set; then :
+  withval=$with_boost_regex;
+        if test "$withval" = "no"; then
+			want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_regex_lib=""
+        else
+		    want_boost="yes"
+		ax_boost_user_regex_lib="$withval"
+		fi
+
+else
+  want_boost="yes"
+
+fi
+
+
+	if test "x$want_boost" = "xyes"; then
+
+		CPPFLAGS_SAVED="$CPPFLAGS"
+		CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+		export CPPFLAGS
+
+		LDFLAGS_SAVED="$LDFLAGS"
+		LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+		export LDFLAGS
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the Boost::Regex library is available" >&5
+$as_echo_n "checking whether the Boost::Regex library is available... " >&6; }
+if ${ax_cv_boost_regex+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=cpp
+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
+
+			 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <boost/regex.hpp>
+
+int
+main ()
+{
+boost::regex r(); return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_boost_regex=yes
+else
+  ax_cv_boost_regex=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         ac_ext=cpp
+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
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_boost_regex" >&5
+$as_echo "$ax_cv_boost_regex" >&6; }
+		if test "x$ax_cv_boost_regex" = "xyes"; then
+
+$as_echo "#define HAVE_BOOST_REGEX /**/" >>confdefs.h
+
+            BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/[^\/]*//'`
+            if test "x$ax_boost_user_regex_lib" = "x"; then
+                for libextension in `ls $BOOSTLIBDIR/libboost_regex*.so* $BOOSTLIBDIR/libboost_regex*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_regex.*\)\.so.*$;\1;' -e 's;^lib\(boost_regex.*\)\.a*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_REGEX_LIB="-l$ax_lib";  link_regex="yes"; break
+else
+  link_regex="no"
+fi
+
+				done
+                if test "x$link_regex" != "xyes"; then
+                for libextension in `ls $BOOSTLIBDIR/boost_regex*.{dll,a}* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_regex.*\)\.dll.*$;\1;' -e 's;^\(boost_regex.*\)\.a*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_REGEX_LIB="-l$ax_lib";  link_regex="yes"; break
+else
+  link_regex="no"
+fi
+
+				done
+                fi
+
+            else
+               for ax_lib in $ax_boost_user_regex_lib boost_regex-$ax_boost_user_regex_lib; do
+				      as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_main" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -l$ax_lib" >&5
+$as_echo_n "checking for main in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_REGEX_LIB="-l$ax_lib";  link_regex="yes"; break
+else
+  link_regex="no"
+fi
+
+               done
+            fi
+            if test "x$ax_lib" = "x"; then
+                as_fn_error $? "Could not find a version of the Boost::Regex library!" "$LINENO" 5
+            fi
+			if test "x$link_regex" != "xyes"; then
+				as_fn_error $? "Could not link against $ax_lib !" "$LINENO" 5
+			fi
+		fi
+
+		CPPFLAGS="$CPPFLAGS_SAVED"
+	LDFLAGS="$LDFLAGS_SAVED"
+	fi
+
+if test "x$ax_cv_boost_regex" != "xyes"; then :
+  as_fn_error $? "Problems with the Boost::Regex libarary." "$LINENO" 5
+fi
+
+
+
+# Check whether --with-boost-thread was given.
+if test "${with_boost_thread+set}" = set; then :
+  withval=$with_boost_thread;
+        if test "$withval" = "no"; then
+			want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_thread_lib=""
+        else
+		    want_boost="yes"
+		ax_boost_user_thread_lib="$withval"
+		fi
+
+else
+  want_boost="yes"
+
+fi
+
+
+	if test "x$want_boost" = "xyes"; then
+
+
+		CPPFLAGS_SAVED="$CPPFLAGS"
+		CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+		export CPPFLAGS
+
+		LDFLAGS_SAVED="$LDFLAGS"
+		LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+		export LDFLAGS
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the Boost::Thread library is available" >&5
+$as_echo_n "checking whether the Boost::Thread library is available... " >&6; }
+if ${ax_cv_boost_thread+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=cpp
+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
+
+			 CXXFLAGS_SAVE=$CXXFLAGS
+
+			 if test "x$host_os" = "xsolaris" ; then
+				 CXXFLAGS="-pthreads $CXXFLAGS"
+			 elif test "x$host_os" = "xmingw32" ; then
+				 CXXFLAGS="-mthreads $CXXFLAGS"
+			 else
+				CXXFLAGS="-pthread $CXXFLAGS"
+			 fi
+			 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <boost/thread/thread.hpp>
+int
+main ()
+{
+boost::thread_group thrds;
+                                   return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_boost_thread=yes
+else
+  ax_cv_boost_thread=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+			 CXXFLAGS=$CXXFLAGS_SAVE
+             ac_ext=cpp
+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
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_boost_thread" >&5
+$as_echo "$ax_cv_boost_thread" >&6; }
+		if test "x$ax_cv_boost_thread" = "xyes"; then
+           if test "x$host_os" = "xsolaris" ; then
+			  BOOST_CPPFLAGS="-pthreads $BOOST_CPPFLAGS"
+		   elif test "x$host_os" = "xmingw32" ; then
+			  BOOST_CPPFLAGS="-mthreads $BOOST_CPPFLAGS"
+		   else
+			  BOOST_CPPFLAGS="-pthread $BOOST_CPPFLAGS"
+		   fi
+
+
+
+
+$as_echo "#define HAVE_BOOST_THREAD /**/" >>confdefs.h
+
+            BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/[^\/]*//'`
+
+			LDFLAGS_SAVE=$LDFLAGS
+                        case "x$host_os" in
+                          *bsd* )
+                               LDFLAGS="-pthread $LDFLAGS"
+                          break;
+                          ;;
+                        esac
+            if test "x$ax_boost_user_thread_lib" = "x"; then
+                for libextension in `ls $BOOSTLIBDIR/libboost_thread*.so* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_thread.*\)\.so.*$;\1;'` `ls $BOOSTLIBDIR/libboost_thread*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_thread.*\)\.a*$;\1;'`; do
+                     ax_lib=${libextension}
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_THREAD_LIB="-l$ax_lib";  link_thread="yes"; break
+else
+  link_thread="no"
+fi
+
+				done
+                if test "x$link_thread" != "xyes"; then
+                for libextension in `ls $BOOSTLIBDIR/boost_thread*.dll* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_thread.*\)\.dll.*$;\1;'` `ls $BOOSTLIBDIR/boost_thread*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_thread.*\)\.a*$;\1;'` ; do
+                     ax_lib=${libextension}
+				    as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_THREAD_LIB="-l$ax_lib";  link_thread="yes"; break
+else
+  link_thread="no"
+fi
+
+				done
+                fi
+
+            else
+               for ax_lib in $ax_boost_user_thread_lib boost_thread-$ax_boost_user_thread_lib; do
+				      as_ac_Lib=`$as_echo "ac_cv_lib_$ax_lib''_exit" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5
+$as_echo_n "checking for exit in -l$ax_lib... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$ax_lib  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exit ();
+int
+main ()
+{
+return exit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
+else
+  eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+  BOOST_THREAD_LIB="-l$ax_lib";  link_thread="yes"; break
+else
+  link_thread="no"
+fi
+
+                  done
+
+            fi
+            if test "x$ax_lib" = "x"; then
+                as_fn_error $? "Could not find a version of the library!" "$LINENO" 5
+            fi
+			if test "x$link_thread" = "xno"; then
+				as_fn_error $? "Could not link against $ax_lib !" "$LINENO" 5
+                        else
+                           case "x$host_os" in
+                              *bsd* )
+				BOOST_LDFLAGS="-pthread $BOOST_LDFLAGS"
+                              break;
+                              ;;
+                           esac
+
+			fi
+		fi
+
+		CPPFLAGS="$CPPFLAGS_SAVED"
+	LDFLAGS="$LDFLAGS_SAVED"
+	fi
+
+if test "x$ax_cv_boost_thread" != "xyes"; then :
+  as_fn_error $? "Problems with the Boost::Thread libarary." "$LINENO" 5
+fi
+#AX_BOOST_IOSTREAMS
+#AX_BOOST_PYTHON
+#AX_BOOST_SERIALIZATION
+#AX_BOOST_SIGNALS
+#AX_BOOST_TEST_EXEC_MONITOR
+#AX_BOOST_UNIT_TEST_FRAMEWORK
+#AX_BOOST_WAVE
+#AX_BOOST_WSERIALIZATION
+
+LDFLAGS+=" "$BOOST_LDFLAGS
+LDFLAGS+=" "$BOOST_SYSTEM_LIB
+LDFLAGS+=" "$BOOST_ASIO_LIB
+LDFLAGS+=" "$BOOST_DATE_TIME_LIB
+LDFLAGS+=" "$BOOST_FILESYSTEM_LIB
+LDFLAGS+=" "$BOOST_PROGRAM_OPTIONS_LIB
+LDFLAGS+=" "$BOOST_REGEX_LIB
+LDFLAGS+=" "$BOOST_THREAD_LIB
+
+CPPFLAGS+=" "$BOOST_CPPFLAGS
+
+# Now we can safely add the compiler option for your prefered standard
+CXXFLAGS+=" -std=c++0x"
+
+#AC_CHECK_HEADERS(
+#   [\
+#      boost/bind.hpp \
+#      boost/lexical_cast.hpp \
+#      boost/filesystem.hpp \
+#      boost/thread.hpp \
+#      boost/function.hpp \
+#      boost/regex.hpp \
+#      boost/asio.hpp \
+#      boost/enable_shared_from_this.hpp \
+#      boost/asio/deadline_timer.hpp \
+#      boost/date_time/posix_time/posix_time.hpp \
+#      boost/date_time/local_time/local_time.hpp \
+#      boost/date_time/gregorian/gregorian.hpp
+#   ], [],
+#   [
+#      echo "Error! At least one needed header of the boost C++ libararies is missing."
+#      exit -1
+#   ]
+#)
+
+######################################################################
+# v8 / JavaScript
+######################################################################
+
+
+
+
+# Check whether --with-v8 was given.
+if test "${with_v8+set}" = set; then :
+  withval=$with_v8; with_v8=$withval
+if test "${with_v8}" != yes; then
+	v8_include="$withval/include"
+	v8_libdir="$withval/lib"
+fi
+
+fi
+
+
+
+# Check whether --with-v8-include was given.
+if test "${with_v8_include+set}" = set; then :
+  withval=$with_v8_include; v8_include="$withval"
+fi
+
+
+
+# Check whether --with-v8-libdir was given.
+if test "${with_v8_libdir+set}" = set; then :
+  withval=$with_v8_libdir; v8_libdir="$withval"
+fi
+
+
+if test "${with_v8}" != no ; then
+	OLD_LIBS=$LIBS
+	OLD_LDFLAGS=$LDFLAGS
+	OLD_CFLAGS=$CFLAGS
+	OLD_CPPFLAGS=$CPPFLAGS
+
+	if test "${v8_libdir}" ; then
+		LDFLAGS="$LDFLAGS -L${v8_libdir}"
+	fi
+	if test "${v8_include}" ; then
+		CPPFLAGS="$CPPFLAGS -I${v8_include}"
+		CFLAGS="$CFLAGS -I${v8_include}"
+	fi
+
+        no_good=no
+
+	ac_fn_cxx_check_header_mongrel "$LINENO" "v8.h" "ac_cv_header_v8_h" "$ac_includes_default"
+if test "x$ac_cv_header_v8_h" = xyes; then :
+
+else
+  no_good=yes
+fi
+
+
+
+        ac_ext=cpp
+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
+
+
+
+
+
+
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for v8::HandleScope handle_scope in -lv8" >&5
+$as_echo_n "checking for v8::HandleScope handle_scope in -lv8... " >&6; }
+if ${ac_cv_lib_v8_v8__HandleScope_handle_scope+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+   	ac_check_lib_save_LIBS=$LIBS
+   	LIBS="-lv8  $LIBS"
+   	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <v8.h>
+int
+main ()
+{
+v8::HandleScope handle_scope
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_v8_v8__HandleScope_handle_scope=yes
+else
+  ac_cv_lib_v8_v8__HandleScope_handle_scope=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+   	LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_v8_v8__HandleScope_handle_scope" >&5
+$as_echo "$ac_cv_lib_v8_v8__HandleScope_handle_scope" >&6; }
+   	if test $ac_cv_lib_v8_v8__HandleScope_handle_scope = yes; then :
+
+
+           		cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBV8 1
+_ACEOF
+
+   			LIBS="-lv8 $LIBS"
+
+
+else
+  no_good=yes
+fi
+
+
+
+        ac_ext=cpp
+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 "$no_good" = yes; then
+		HAVE_V8=no
+
+		LIBS=$OLD_LIBS
+		LDFLAGS=$OLD_LDFLAGS
+		CPPFLAGS=$OLD_CPPFLAGS
+		CFLAGS=$OLD_CFLAGS
+	else
+		HAVE_V8=yes
+
+		$as_echo "#define HAVE_PKG_v8 1" >>confdefs.h
+
+	fi
+
+fi
+
+
+
+######################################################################
+# QT4/GUI SUPPORT
+######################################################################
+
+
+# Check whether --with-qt4 was given.
+if test "${with_qt4+set}" = set; then :
+  withval=$with_qt4;
+else
+
+
+
+			FATAL=0
+
+
+# Check whether --with-qt4-dir was given.
+if test "${with_qt4_dir+set}" = set; then :
+  withval=$with_qt4_dir;  qt4_cv_dir=`eval echo "$withval"/`
+fi
+
+
+
+# Check whether --with-qt4-includes was given.
+if test "${with_qt4_includes+set}" = set; then :
+  withval=$with_qt4_includes;  qt4_cv_includes=`eval echo "$withval"`
+fi
+
+
+
+# Check whether --with-qt4-libraries was given.
+if test "${with_qt4_libraries+set}" = set; then :
+  withval=$with_qt4_libraries;   qt4_cv_libraries=`eval echo "$withval"`
+fi
+
+
+		if test -z "$qt4_cv_dir"; then
+		qt4_cv_dir=$QT4DIR
+	fi
+
+		if test -n "$qt4_cv_dir"; then
+		if test -z "$qt4_cv_includes"; then
+			qt4_cv_includes=$qt4_cv_dir/include
+		fi
+		if test -z "$qt4_cv_libraries"; then
+			qt4_cv_libraries=$qt4_cv_dir/lib
+		fi
+	fi
+
+		if test -n "$qt4_cv_dir"; then
+		qt4_cv_bin=$qt4_cv_dir/bin
+	fi
+
+
+
+
+
+
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+	if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+  ac_pt_PKG_CONFIG=$PKG_CONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_PKG_CONFIG" = x; then
+    PKG_CONFIG=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PKG_CONFIG=$ac_pt_PKG_CONFIG
+  fi
+else
+  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+	_pkg_min_version=0.9.0
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	else
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+		PKG_CONFIG=""
+	fi
+fi
+	if test -n "$PKG_CONFIG" ; then
+
+		save_PKG_CONFIG_PATH=$PKG_CONFIG_PATH
+	if test -n "$qt4_cv_dir" ; then
+	  PKG_CONFIG_PATH=$qt4_cv_dir/lib:$qt4_cv_dir/lib/pkgconfig:$PKG_CONFIG_PATH
+	  export PKG_CONFIG_PATH
+	fi
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for QT4_CORE" >&5
+$as_echo_n "checking for QT4_CORE... " >&6; }
+
+if test -n "$QT4_CORE_CFLAGS"; then
+    pkg_cv_QT4_CORE_CFLAGS="$QT4_CORE_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"QtCore\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "QtCore") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_QT4_CORE_CFLAGS=`$PKG_CONFIG --cflags "QtCore" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$QT4_CORE_LIBS"; then
+    pkg_cv_QT4_CORE_LIBS="$QT4_CORE_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"QtCore\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "QtCore") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_QT4_CORE_LIBS=`$PKG_CONFIG --libs "QtCore" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        QT4_CORE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "QtCore" 2>&1`
+        else
+	        QT4_CORE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "QtCore" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$QT4_CORE_PKG_ERRORS" >&5
+
+	:
+elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	:
+else
+	QT4_CORE_CFLAGS=$pkg_cv_QT4_CORE_CFLAGS
+	QT4_CORE_LIBS=$pkg_cv_QT4_CORE_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+	if test "$pkg_failed" = "no" ; then
+		QT4_CORE_INCLUDES=$QT4_CORE_CFLAGS
+
+		QT4_CORE_LDFLAGS=`$PKG_CONFIG --libs-only-L QtCore`
+
+		QT4_CORE_LIB=`$PKG_CONFIG --libs-only-l QtCore`
+
+	fi
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for QT4_FRONTEND" >&5
+$as_echo_n "checking for QT4_FRONTEND... " >&6; }
+
+if test -n "$QT4_FRONTEND_CFLAGS"; then
+    pkg_cv_QT4_FRONTEND_CFLAGS="$QT4_FRONTEND_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"QtCore QtGui QtSql\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "QtCore QtGui QtSql") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_QT4_FRONTEND_CFLAGS=`$PKG_CONFIG --cflags "QtCore QtGui QtSql" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$QT4_FRONTEND_LIBS"; then
+    pkg_cv_QT4_FRONTEND_LIBS="$QT4_FRONTEND_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"QtCore QtGui QtSql\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "QtCore QtGui QtSql") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_QT4_FRONTEND_LIBS=`$PKG_CONFIG --libs "QtCore QtGui QtSql" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        QT4_FRONTEND_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "QtCore QtGui QtSql" 2>&1`
+        else
+	        QT4_FRONTEND_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "QtCore QtGui QtSql" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$QT4_FRONTEND_PKG_ERRORS" >&5
+
+	:
+elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	:
+else
+	QT4_FRONTEND_CFLAGS=$pkg_cv_QT4_FRONTEND_CFLAGS
+	QT4_FRONTEND_LIBS=$pkg_cv_QT4_FRONTEND_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+	if test "$pkg_failed" = "no" ; then
+		QT4_INCLUDES=$QT4_FRONTEND_CFLAGS
+				QT4_LDFLAGS=`$PKG_CONFIG --libs-only-L QtCore QtGui QtSql`
+
+
+		QT4_VERSION=`$PKG_CONFIG --modversion QtCore`
+
+		QT4_LIB=`$PKG_CONFIG --libs-only-l QtCore QtGui QtSql`
+
+		LIBS="$LIBS `$PKG_CONFIG --libs-only-other QtCore QtGui QtSql`"
+	fi
+
+	fi
+	if test "$pkg_failed" != "no" ; then
+
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5
+$as_echo_n "checking for X... " >&6; }
+
+
+# Check whether --with-x was given.
+if test "${with_x+set}" = set; then :
+  withval=$with_x;
+fi
+
+# $have_x is `yes', `no', `disabled', or empty when we do not yet know.
+if test "x$with_x" = xno; then
+  # The user explicitly disabled X.
+  have_x=disabled
+else
+  case $x_includes,$x_libraries in #(
+    *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #(
+    *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # One or both of the vars are not set, and there is no cached value.
+ac_x_includes=no ac_x_libraries=no
+rm -f -r conftest.dir
+if mkdir conftest.dir; then
+  cd conftest.dir
+  cat >Imakefile <<'_ACEOF'
+incroot:
+	@echo incroot='${INCROOT}'
+usrlibdir:
+	@echo usrlibdir='${USRLIBDIR}'
+libdir:
+	@echo libdir='${LIBDIR}'
+_ACEOF
+  if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then
+    # GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+    for ac_var in incroot usrlibdir libdir; do
+      eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`"
+    done
+    # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
+    for ac_extension in a so sl dylib la dll; do
+      if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" &&
+	 test -f "$ac_im_libdir/libX11.$ac_extension"; then
+	ac_im_usrlibdir=$ac_im_libdir; break
+      fi
+    done
+    # Screen out bogus values from the imake configuration.  They are
+    # bogus both because they are the default anyway, and because
+    # using them would break gcc on systems where it needs fixed includes.
+    case $ac_im_incroot in
+	/usr/include) ac_x_includes= ;;
+	*) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
+    esac
+    case $ac_im_usrlibdir in
+	/usr/lib | /usr/lib64 | /lib | /lib64) ;;
+	*) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
+    esac
+  fi
+  cd ..
+  rm -f -r conftest.dir
+fi
+
+# Standard set of common directories for X headers.
+# Check X11 before X11Rn because it is often a symlink to the current release.
+ac_x_header_dirs='
+/usr/X11/include
+/usr/X11R7/include
+/usr/X11R6/include
+/usr/X11R5/include
+/usr/X11R4/include
+
+/usr/include/X11
+/usr/include/X11R7
+/usr/include/X11R6
+/usr/include/X11R5
+/usr/include/X11R4
+
+/usr/local/X11/include
+/usr/local/X11R7/include
+/usr/local/X11R6/include
+/usr/local/X11R5/include
+/usr/local/X11R4/include
+
+/usr/local/include/X11
+/usr/local/include/X11R7
+/usr/local/include/X11R6
+/usr/local/include/X11R5
+/usr/local/include/X11R4
+
+/usr/X386/include
+/usr/x386/include
+/usr/XFree86/include/X11
+
+/usr/include
+/usr/local/include
+/usr/unsupported/include
+/usr/athena/include
+/usr/local/x11r5/include
+/usr/lpp/Xamples/include
+
+/usr/openwin/include
+/usr/openwin/share/include'
+
+if test "$ac_x_includes" = no; then
+  # Guess where to find include files, by looking for Xlib.h.
+  # First, try using that file with no special directory specified.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <X11/Xlib.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  # We can compile using X headers with no special include directory.
+ac_x_includes=
+else
+  for ac_dir in $ac_x_header_dirs; do
+  if test -r "$ac_dir/X11/Xlib.h"; then
+    ac_x_includes=$ac_dir
+    break
+  fi
+done
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+fi # $ac_x_includes = no
+
+if test "$ac_x_libraries" = no; then
+  # Check for the libraries.
+  # See if we find them without any special options.
+  # Don't add to $LIBS permanently.
+  ac_save_LIBS=$LIBS
+  LIBS="-lX11 $LIBS"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <X11/Xlib.h>
+int
+main ()
+{
+XrmInitialize ()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  LIBS=$ac_save_LIBS
+# We can link X programs with no special library path.
+ac_x_libraries=
+else
+  LIBS=$ac_save_LIBS
+for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
+do
+  # Don't even attempt the hair of trying to link an X program!
+  for ac_extension in a so sl dylib la dll; do
+    if test -r "$ac_dir/libX11.$ac_extension"; then
+      ac_x_libraries=$ac_dir
+      break 2
+    fi
+  done
+done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi # $ac_x_libraries = no
+
+case $ac_x_includes,$ac_x_libraries in #(
+  no,* | *,no | *\'*)
+    # Didn't find X, or a directory has "'" in its name.
+    ac_cv_have_x="have_x=no";; #(
+  *)
+    # Record where we found X for the cache.
+    ac_cv_have_x="have_x=yes\
+	ac_x_includes='$ac_x_includes'\
+	ac_x_libraries='$ac_x_libraries'"
+esac
+fi
+;; #(
+    *) have_x=yes;;
+  esac
+  eval "$ac_cv_have_x"
+fi # $with_x != no
+
+if test "$have_x" != yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5
+$as_echo "$have_x" >&6; }
+  no_x=yes
+else
+  # If each of the values was on the command line, it overrides each guess.
+  test "x$x_includes" = xNONE && x_includes=$ac_x_includes
+  test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries
+  # Update the cache value to reflect the command line values.
+  ac_cv_have_x="have_x=yes\
+	ac_x_includes='$x_includes'\
+	ac_x_libraries='$x_libraries'"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5
+$as_echo "libraries $x_libraries, headers $x_includes" >&6; }
+fi
+
+	if test "$no_x" = yes; then
+  # Not all programs may use this symbol, but it does not hurt to define it.
+
+$as_echo "#define X_DISPLAY_MISSING 1" >>confdefs.h
+
+  X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS=
+else
+  if test -n "$x_includes"; then
+    X_CFLAGS="$X_CFLAGS -I$x_includes"
+  fi
+
+  # It would also be nice to do this for all -L options, not just this one.
+  if test -n "$x_libraries"; then
+    X_LIBS="$X_LIBS -L$x_libraries"
+    # For Solaris; some versions of Sun CC require a space after -R and
+    # others require no space.  Words are not sufficient . . . .
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -R must be followed by a space" >&5
+$as_echo_n "checking whether -R must be followed by a space... " >&6; }
+    ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"
+    ac_xsave_cxx_werror_flag=$ac_cxx_werror_flag
+    ac_cxx_werror_flag=yes
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       X_LIBS="$X_LIBS -R$x_libraries"
+else
+  LIBS="$ac_xsave_LIBS -R $x_libraries"
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	  X_LIBS="$X_LIBS -R $x_libraries"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: neither works" >&5
+$as_echo "neither works" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    ac_cxx_werror_flag=$ac_xsave_cxx_werror_flag
+    LIBS=$ac_xsave_LIBS
+  fi
+
+  # Check for system-dependent libraries X programs must link with.
+  # Do this before checking for the system-independent R6 libraries
+  # (-lICE), since we may need -lsocket or whatever for X linking.
+
+  if test "$ISC" = yes; then
+    X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet"
+  else
+    # Martyn Johnson says this is needed for Ultrix, if the X
+    # libraries were built with DECnet support.  And Karl Berry says
+    # the Alpha needs dnet_stub (dnet does not exist).
+    ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11"
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char XOpenDisplay ();
+int
+main ()
+{
+return XOpenDisplay ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; }
+if ${ac_cv_lib_dnet_dnet_ntoa+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dnet_ntoa ();
+int
+main ()
+{
+return dnet_ntoa ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_dnet_dnet_ntoa=yes
+else
+  ac_cv_lib_dnet_dnet_ntoa=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
+$as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; }
+if test "x$ac_cv_lib_dnet_dnet_ntoa" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
+fi
+
+    if test $ac_cv_lib_dnet_dnet_ntoa = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; }
+if ${ac_cv_lib_dnet_stub_dnet_ntoa+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet_stub  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dnet_ntoa ();
+int
+main ()
+{
+return dnet_ntoa ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_dnet_stub_dnet_ntoa=yes
+else
+  ac_cv_lib_dnet_stub_dnet_ntoa=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
+$as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }
+if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
+fi
+
+    fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LIBS="$ac_xsave_LIBS"
+
+    # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,
+    # to get the SysV transport functions.
+    # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4)
+    # needs -lnsl.
+    # The nsl library prevents programs from opening the X display
+    # on Irix 5.2, according to T.E. Dickey.
+    # The functions gethostbyname, getservbyname, and inet_addr are
+    # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.
+    ac_fn_cxx_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname"
+if test "x$ac_cv_func_gethostbyname" = xyes; then :
+
+fi
+
+    if test $ac_cv_func_gethostbyname = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5
+$as_echo_n "checking for gethostbyname in -lnsl... " >&6; }
+if ${ac_cv_lib_nsl_gethostbyname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnsl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_nsl_gethostbyname=yes
+else
+  ac_cv_lib_nsl_gethostbyname=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5
+$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
+if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
+fi
+
+      if test $ac_cv_lib_nsl_gethostbyname = no; then
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5
+$as_echo_n "checking for gethostbyname in -lbsd... " >&6; }
+if ${ac_cv_lib_bsd_gethostbyname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbsd  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_bsd_gethostbyname=yes
+else
+  ac_cv_lib_bsd_gethostbyname=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5
+$as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; }
+if test "x$ac_cv_lib_bsd_gethostbyname" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
+fi
+
+      fi
+    fi
+
+    # lieder@skyler.mavd.honeywell.com says without -lsocket,
+    # socket/setsockopt and other routines are undefined under SCO ODT
+    # 2.0.  But -lsocket is broken on IRIX 5.2 (and is not necessary
+    # on later versions), says Simon Leinen: it contains gethostby*
+    # variants that don't use the name server (or something).  -lsocket
+    # must be given before -lnsl if both are needed.  We assume that
+    # if connect needs -lnsl, so does gethostbyname.
+    ac_fn_cxx_check_func "$LINENO" "connect" "ac_cv_func_connect"
+if test "x$ac_cv_func_connect" = xyes; then :
+
+fi
+
+    if test $ac_cv_func_connect = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5
+$as_echo_n "checking for connect in -lsocket... " >&6; }
+if ${ac_cv_lib_socket_connect+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char connect ();
+int
+main ()
+{
+return connect ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_socket_connect=yes
+else
+  ac_cv_lib_socket_connect=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5
+$as_echo "$ac_cv_lib_socket_connect" >&6; }
+if test "x$ac_cv_lib_socket_connect" = xyes; then :
+  X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
+fi
+
+    fi
+
+    # Guillermo Gomez says -lposix is necessary on A/UX.
+    ac_fn_cxx_check_func "$LINENO" "remove" "ac_cv_func_remove"
+if test "x$ac_cv_func_remove" = xyes; then :
+
+fi
+
+    if test $ac_cv_func_remove = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5
+$as_echo_n "checking for remove in -lposix... " >&6; }
+if ${ac_cv_lib_posix_remove+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lposix  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char remove ();
+int
+main ()
+{
+return remove ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_posix_remove=yes
+else
+  ac_cv_lib_posix_remove=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5
+$as_echo "$ac_cv_lib_posix_remove" >&6; }
+if test "x$ac_cv_lib_posix_remove" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
+fi
+
+    fi
+
+    # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
+    ac_fn_cxx_check_func "$LINENO" "shmat" "ac_cv_func_shmat"
+if test "x$ac_cv_func_shmat" = xyes; then :
+
+fi
+
+    if test $ac_cv_func_shmat = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5
+$as_echo_n "checking for shmat in -lipc... " >&6; }
+if ${ac_cv_lib_ipc_shmat+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lipc  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shmat ();
+int
+main ()
+{
+return shmat ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_ipc_shmat=yes
+else
+  ac_cv_lib_ipc_shmat=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5
+$as_echo "$ac_cv_lib_ipc_shmat" >&6; }
+if test "x$ac_cv_lib_ipc_shmat" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
+fi
+
+    fi
+  fi
+
+  # Check for libraries that X11R6 Xt/Xaw programs need.
+  ac_save_LDFLAGS=$LDFLAGS
+  test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries"
+  # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to
+  # check for ICE first), but we must link in the order -lSM -lICE or
+  # we get undefined symbols.  So assume we have SM if we have ICE.
+  # These have to be linked with before -lX11, unlike the other
+  # libraries we check for below, so use a different variable.
+  # John Interrante, Karl Berry
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5
+$as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; }
+if ${ac_cv_lib_ICE_IceConnectionNumber+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lICE $X_EXTRA_LIBS $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char IceConnectionNumber ();
+int
+main ()
+{
+return IceConnectionNumber ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_ICE_IceConnectionNumber=yes
+else
+  ac_cv_lib_ICE_IceConnectionNumber=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
+$as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
+if test "x$ac_cv_lib_ICE_IceConnectionNumber" = xyes; then :
+  X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
+fi
+
+  LDFLAGS=$ac_save_LDFLAGS
+
+fi
+
+	case $have_x in
+	    yes) LIBS="$X_PRE_LIBS $LIBS $X_LIBS -lX11 $X_EXTRA_LIBS"
+	         CPPFLAGS="$CPPFLAGS $X_CFLAGS";;
+	     no) as_fn_error $? "Cannot find X window libraries and/or headers." "$LINENO" 5;;
+	disable) ;;
+	esac
+
+		QT4_INCLUDES=
+	QT4_LDFLAGS=
+	QT4_CORE_INCLUDES=
+	QT4_CORE_LDFLAGS=
+	if test -n "$qt4_cv_includes"; then
+		QT4_INCLUDES="-I$qt4_cv_includes"
+		for i in Qt QtCore QtGui QtSql; do
+			QT4_INCLUDES="$QT4_INCLUDES -I$qt4_cv_includes/$i"
+		done
+		QT4_CORE_INCLUDES="-I$qt4_cv_includes -I$qt4_cv_includes/QtCore"
+	fi
+	if test -n "$qt4_cv_libraries"; then
+		QT4_LDFLAGS="-L$qt4_cv_libraries"
+		QT4_CORE_LDFLAGS="-L$qt4_cv_libraries"
+	fi
+
+
+
+
+
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Qt 4 library name" >&5
+$as_echo_n "checking for Qt 4 library name... " >&6; }
+
+	if ${qt4_cv_libname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+		ac_ext=cpp
+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
+
+		SAVE_CXXFLAGS=$CXXFLAGS
+		CXXFLAGS="$CXXFLAGS $QT4_INCLUDES $QT4_LDFLAGS"
+		for libname in -lQtCore -lQtCore4 '-framework QtCore'
+		do
+
+	SAVE_LIBS="$LIBS"
+	LIBS="$LIBS $libname"
+	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+	#include <qglobal.h>
+	#include <qstring.h>
+
+int
+main ()
+{
+
+	QString s("mangle_failure");
+	#if (QT_VERSION < 400)
+	break_me_(\\\);
+	#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  qt4_cv_libname=$libname
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	LIBS="$SAVE_LIBS"
+
+			if test -n "$qt4_cv_libname"; then
+				QT4_CORE_LIB="$qt4_cv_libname"
+				break;
+			fi
+		done
+		qt4_cv_libname=
+		for libname in '-lQtCore -lQtGui -lQtSql' \
+		               '-lQtCore4 -lQtGui4 -lQtSql4' \
+		               '-framework QtCore -framework QtGui -framework QtSql'
+		do
+
+	SAVE_LIBS="$LIBS"
+	LIBS="$LIBS $libname"
+	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+	#include <qglobal.h>
+	#include <qstring.h>
+
+int
+main ()
+{
+
+	QString s("mangle_failure");
+	#if (QT_VERSION < 400)
+	break_me_(\\\);
+	#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  qt4_cv_libname=$libname
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	LIBS="$SAVE_LIBS"
+
+			if test -n "$qt4_cv_libname"; then
+				break;
+			fi
+		done
+		CXXFLAGS=$SAVE_CXXFLAGS
+
+fi
+
+
+	if test -z "$qt4_cv_libname"; then
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
+		if test "$FATAL" = 1 ; then
+			as_fn_error $? "Cannot compile a simple Qt 4 executable. Check you have the right \$QT4DIR !" "$LINENO" 5
+		fi
+	else
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $qt4_cv_libname" >&5
+$as_echo "$qt4_cv_libname" >&6; }
+	fi
+
+
+	QT4_LIB=$qt4_cv_libname;
+
+
+
+	if test -n "$qt4_cv_libname"; then
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Qt 4 version" >&5
+$as_echo_n "checking Qt 4 version... " >&6; }
+if ${lyx_cv_qt4version+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+		ac_ext=cpp
+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
+
+		SAVE_CPPFLAGS=$CPPFLAGS
+		CPPFLAGS="$CPPFLAGS $QT4_INCLUDES"
+
+		cat > conftest.$ac_ext <<EOF
+#line 23972 "configure"
+#include "confdefs.h"
+#include <qglobal.h>
+"%%%"QT_VERSION_STR"%%%"
+EOF
+		lyx_cv_qt4version=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
+			grep '^"%%%"'  2>/dev/null | \
+			sed -e 's/"%%%"//g' -e 's/"//g'`
+		rm -f conftest.$ac_ext
+		CPPFLAGS=$SAVE_CPPFLAGS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lyx_cv_qt4version" >&5
+$as_echo "$lyx_cv_qt4version" >&6; }
+
+	QT4_VERSION=$lyx_cv_qt4version
+
+
+	fi
+
+	fi
+	for ac_prog in moc-qt4 moc
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MOC4+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MOC4 in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MOC4="$MOC4" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$qt4_cv_bin:$PATH"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_MOC4="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+MOC4=$ac_cv_path_MOC4
+if test -n "$MOC4"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MOC4" >&5
+$as_echo "$MOC4" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$MOC4" && break
+done
+
+	for ac_prog in uic-qt4 uic
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_UIC4+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $UIC4 in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_UIC4="$UIC4" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$qt4_cv_bin:$PATH"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_UIC4="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+UIC4=$ac_cv_path_UIC4
+if test -n "$UIC4"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UIC4" >&5
+$as_echo "$UIC4" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$UIC4" && break
+done
+
+	for ac_prog in rcc-qt4 rcc
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_RCC4+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $RCC4 in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_RCC4="$RCC4" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$qt4_cv_bin:$PATH"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_RCC4="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+RCC4=$ac_cv_path_RCC4
+if test -n "$RCC4"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RCC4" >&5
+$as_echo "$RCC4" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$RCC4" && break
+done
+
+
+fi
+
+
+# This allows to list the QT4 stuff independantly later
+CPPFLAGS+=" "${QT4_INCLUDES}" "
+
+
+
+# Check whether --with-QGL was given.
+if test "${with_QGL+set}" = set; then :
+  withval=$with_QGL; with_QGL=$withval
+if test "${with_QGL}" != yes; then
+	QGL_include="$withval/include"
+	QGL_libdir="$withval/lib"
+fi
+
+fi
+
+
+
+# Check whether --with-QGL-include was given.
+if test "${with_QGL_include+set}" = set; then :
+  withval=$with_QGL_include; QGL_include="$withval"
+fi
+
+
+
+# Check whether --with-QGL-libdir was given.
+if test "${with_QGL_libdir+set}" = set; then :
+  withval=$with_QGL_libdir; QGL_libdir="$withval"
+fi
+
+
+if test "${with_QGL}" != no ; then
+	OLD_LIBS=$LIBS
+	OLD_LDFLAGS=$LDFLAGS
+	OLD_CFLAGS=$CFLAGS
+	OLD_CPPFLAGS=$CPPFLAGS
+
+	if test "${QGL_libdir}" ; then
+		LDFLAGS="$LDFLAGS -L${QGL_libdir}"
+	fi
+	if test "${QGL_include}" ; then
+		CPPFLAGS="$CPPFLAGS -I${QGL_include}"
+		CFLAGS="$CFLAGS -I${QGL_include}"
+	fi
+
+        no_good=no
+
+	ac_fn_cxx_check_header_mongrel "$LINENO" "QtOpenGL/QGLWidget" "ac_cv_header_QtOpenGL_QGLWidget" "$ac_includes_default"
+if test "x$ac_cv_header_QtOpenGL_QGLWidget" = xyes; then :
+
+else
+  no_good=yes
+fi
+
+
+
+        ac_ext=cpp
+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
+
+
+
+
+
+
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for QGLWidget qgl in -lQtOpenGL" >&5
+$as_echo_n "checking for QGLWidget qgl in -lQtOpenGL... " >&6; }
+if ${ac_cv_lib_QtOpenGL_QGLWidget_qgl+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+   	ac_check_lib_save_LIBS=$LIBS
+   	LIBS="-lQtOpenGL  $LIBS"
+   	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <QtOpenGL/QGLWidget>
+int
+main ()
+{
+QGLWidget qgl
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_QtOpenGL_QGLWidget_qgl=yes
+else
+  ac_cv_lib_QtOpenGL_QGLWidget_qgl=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+   	LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_QtOpenGL_QGLWidget_qgl" >&5
+$as_echo "$ac_cv_lib_QtOpenGL_QGLWidget_qgl" >&6; }
+   	if test $ac_cv_lib_QtOpenGL_QGLWidget_qgl = yes; then :
+
+
+           		cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBQTOPENGL 1
+_ACEOF
+
+   			LIBS="-lQtOpenGL $LIBS"
+
+
+else
+  no_good=yes
+fi
+
+
+
+        ac_ext=cpp
+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 "$no_good" = yes; then
+		HAVE_QGL=no
+
+		LIBS=$OLD_LIBS
+		LDFLAGS=$OLD_LDFLAGS
+		CPPFLAGS=$OLD_CPPFLAGS
+		CFLAGS=$OLD_CFLAGS
+	else
+		HAVE_QGL=yes
+
+		$as_echo "#define HAVE_PKG_QGL 1" >>confdefs.h
+
+	fi
+
+fi
+
+
+
+
+
+# Check whether --with-qwt was given.
+if test "${with_qwt+set}" = set; then :
+  withval=$with_qwt; with_qwt=$withval
+if test "${with_qwt}" != yes; then
+	qwt_include="$withval/include"
+	qwt_libdir="$withval/lib"
+fi
+
+fi
+
+
+
+# Check whether --with-qwt-include was given.
+if test "${with_qwt_include+set}" = set; then :
+  withval=$with_qwt_include; qwt_include="$withval"
+fi
+
+
+
+# Check whether --with-qwt-libdir was given.
+if test "${with_qwt_libdir+set}" = set; then :
+  withval=$with_qwt_libdir; qwt_libdir="$withval"
+fi
+
+
+if test "${with_qwt}" != no ; then
+	OLD_LIBS=$LIBS
+	OLD_LDFLAGS=$LDFLAGS
+	OLD_CFLAGS=$CFLAGS
+	OLD_CPPFLAGS=$CPPFLAGS
+
+	if test "${qwt_libdir}" ; then
+		LDFLAGS="$LDFLAGS -L${qwt_libdir}"
+	fi
+	if test "${qwt_include}" ; then
+		CPPFLAGS="$CPPFLAGS -I${qwt_include}"
+		CFLAGS="$CFLAGS -I${qwt_include}"
+	fi
+
+        no_good=no
+
+	ac_fn_cxx_check_header_mongrel "$LINENO" "qwt_plot.h" "ac_cv_header_qwt_plot_h" "$ac_includes_default"
+if test "x$ac_cv_header_qwt_plot_h" = xyes; then :
+
+else
+  no_good=yes
+fi
+
+
+
+        ac_ext=cpp
+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
+
+
+
+
+
+
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for QwtPlot qwt in -lqwt-qt4" >&5
+$as_echo_n "checking for QwtPlot qwt in -lqwt-qt4... " >&6; }
+if ${ac_cv_lib_qwt_qt4_QwtPlot_qwt+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+   	ac_check_lib_save_LIBS=$LIBS
+   	LIBS="-lqwt-qt4  $LIBS"
+   	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <qwt_plot.h>
+int
+main ()
+{
+QwtPlot qwt
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_qwt_qt4_QwtPlot_qwt=yes
+else
+  ac_cv_lib_qwt_qt4_QwtPlot_qwt=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+   	LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_qwt_qt4_QwtPlot_qwt" >&5
+$as_echo "$ac_cv_lib_qwt_qt4_QwtPlot_qwt" >&6; }
+   	if test $ac_cv_lib_qwt_qt4_QwtPlot_qwt = yes; then :
+
+
+           		cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBQWT_QT4 1
+_ACEOF
+
+   			LIBS="-lqwt-qt4 $LIBS"
+
+
+else
+  no_good=yes
+fi
+
+
+
+        ac_ext=cpp
+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 "$no_good" = yes; then
+		HAVE_QWT=no
+
+		LIBS=$OLD_LIBS
+		LDFLAGS=$OLD_LDFLAGS
+		CPPFLAGS=$OLD_CPPFLAGS
+		CFLAGS=$OLD_CFLAGS
+	else
+		HAVE_QWT=yes
+
+		$as_echo "#define HAVE_PKG_qwt 1" >>confdefs.h
+
+	fi
+
+fi
+
+
+
+######################################################################
+# ROOT SUPPORT
+######################################################################
+
+
+# Check whether --with-root was given.
+if test "${with_root+set}" = set; then :
+  withval=$with_root;
+else
+
+
+# Check whether --with-rootsys was given.
+if test "${with_rootsys+set}" = set; then :
+  withval=$with_rootsys; user_rootsys=$withval
+else
+  user_rootsys="none"
+fi
+
+  if test ! x"$user_rootsys" = xnone; then
+    rootbin="$user_rootsys:$user_rootsys/bin"
+  elif test ! x"$ROOTSYS" = x ; then
+    rootbin="$ROOTSYS/bin"
+  else
+   rootbin=$PATH
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for root in" >&5
+$as_echo_n "checking for root in... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $rootbin" >&5
+$as_echo "$rootbin" >&6; }
+
+  # Extract the first word of "root-config ", so it can be a program name with args.
+set dummy root-config ; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ROOTCONF+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ROOTCONF in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ROOTCONF="$ROOTCONF" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $rootbin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ROOTCONF="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_ROOTCONF" && ac_cv_path_ROOTCONF="no"
+  ;;
+esac
+fi
+ROOTCONF=$ac_cv_path_ROOTCONF
+if test -n "$ROOTCONF"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ROOTCONF" >&5
+$as_echo "$ROOTCONF" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  # Extract the first word of "root ", so it can be a program name with args.
+set dummy root ; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ROOTEXEC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ROOTEXEC in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ROOTEXEC="$ROOTEXEC" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $rootbin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ROOTEXEC="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_ROOTEXEC" && ac_cv_path_ROOTEXEC="no"
+  ;;
+esac
+fi
+ROOTEXEC=$ac_cv_path_ROOTEXEC
+if test -n "$ROOTEXEC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ROOTEXEC" >&5
+$as_echo "$ROOTEXEC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  # Extract the first word of "rootcint ", so it can be a program name with args.
+set dummy rootcint ; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ROOTCINT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ROOTCINT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ROOTCINT="$ROOTCINT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $rootbin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ROOTCINT="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_ROOTCINT" && ac_cv_path_ROOTCINT="no"
+  ;;
+esac
+fi
+ROOTCINT=$ac_cv_path_ROOTCINT
+if test -n "$ROOTCINT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ROOTCINT" >&5
+$as_echo "$ROOTCINT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+  if test ! x"$ROOTCONF" = "xno" && \
+     test ! x"$ROOTCINT" = "xno" ; then
+
+    # define some variables
+    ROOTLIBDIR=`$ROOTCONF --libdir`
+    ROOTINCDIR=`$ROOTCONF --incdir`
+#    ROOTETCDIR=`$ROOTCONF --etcdir`
+    ROOTCFLAGS=`$ROOTCONF --noauxcflags --cflags`
+    ROOTLIBS=`$ROOTCONF --noauxlibs --noldflags --libs`
+    ROOTGLIBS=`$ROOTCONF --noauxlibs --noldflags --glibs`
+    ROOTAUXCFLAGS=`$ROOTCONF --auxcflags`
+    ROOTAUXLIBS=`$ROOTCONF --auxlibs`
+    ROOTRPATH=$ROOTLIBDIR
+    ROOTVERSION=`$ROOTCONF --version`
+    ROOTSOVERSION=`dirname $ROOTVERSION`
+
+    if test 5.12/00 ; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking wether ROOT version >= 5.12/00" >&5
+$as_echo_n "checking wether ROOT version >= 5.12/00... " >&6; }
+      vers=`$ROOTCONF --version | tr './' ' ' | awk 'BEGIN { FS = " "; } { printf "%d", ($''1 * 1000 + $''2) * 1000 + $''3;}'`
+      requ=`echo 5.12/00 | tr './' ' ' | awk 'BEGIN { FS = " "; } { printf "%d", ($''1 * 1000 + $''2) * 1000 + $''3;}'`
+      if test $vers -lt $requ ; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	no_root="yes"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+      fi
+    fi
+  else
+    # otherwise, we say no_root
+    no_root="yes"
+  fi
+
+
+
+#  AC_SUBST(ROOTETCDIR)
+
+
+
+
+
+
+
+
+
+  if test "x$no_root" = "x" ; then
+    :
+  else
+    :
+  fi
+
+
+fi
+
+
+if test "$ROOTEXEC" != no -a -n "$ROOTVERSION"  ;
+then
+
+   ROOTCPPFLAGS=$ROOTCFLAGS" "$ROOTAUXCFLAGS
+   ROOTLDFLAGS="-L"$ROOTLIBDIR" -lGQt"
+
+   #AC_CHECK_PROG(HAVE_ROOT_QT, libGQt.so.$ROOTSOVERSION, yes, no, $ROOTLIBDIR)
+   #AC_CHECK_PROG(HAVE_GQT,     libGQt.so.$ROOTSOVERSION, yes, no, $LD_LIBRARY_PATH)
+
+   # It seems it dooesn't work on older root versions
+
+
+  feat=qt
+  res=`$ROOTCONF --has-$feat`
+  if test "x$res" = "xyes" ; then
+    HAVE_ROOT_QT=yes
+  else
+    :
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether root was built with --with-qt" >&5
+$as_echo_n "checking whether root was built with --with-qt... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $res" >&5
+$as_echo "$res" >&6; }
+
+
+
+
+fi
+
+
+######################################################################
+# Check if we have colordiff to colorize 'svn diff'
+######################################################################
+
+# Nice to have to support colored diff
+# Extract the first word of "colordiff", so it can be a program name with args.
+set dummy colordiff; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_COLORDIFF+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$COLORDIFF"; then
+  ac_cv_prog_COLORDIFF="$COLORDIFF" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_COLORDIFF="colordiff"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_COLORDIFF" && ac_cv_prog_COLORDIFF="cat"
+fi
+fi
+COLORDIFF=$ac_cv_prog_COLORDIFF
+if test -n "$COLORDIFF"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $COLORDIFF" >&5
+$as_echo "$COLORDIFF" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "groff", so it can be a program name with args.
+set dummy groff; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_GROFF+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$GROFF"; then
+  ac_cv_prog_GROFF="$GROFF" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_GROFF="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_GROFF" && ac_cv_prog_GROFF="no"
+fi
+fi
+GROFF=$ac_cv_prog_GROFF
+if test -n "$GROFF"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GROFF" >&5
+$as_echo "$GROFF" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "ps2pdf", so it can be a program name with args.
+set dummy ps2pdf; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_PS2PDF+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$PS2PDF"; then
+  ac_cv_prog_PS2PDF="$PS2PDF" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_PS2PDF="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_PS2PDF" && ac_cv_prog_PS2PDF="no"
+fi
+fi
+PS2PDF=$ac_cv_prog_PS2PDF
+if test -n "$PS2PDF"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PS2PDF" >&5
+$as_echo "$PS2PDF" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "help2man", so it can be a program name with args.
+set dummy help2man; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_HELP2MAN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$HELP2MAN"; then
+  ac_cv_prog_HELP2MAN="$HELP2MAN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_HELP2MAN="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_HELP2MAN" && ac_cv_prog_HELP2MAN="no"
+fi
+fi
+HELP2MAN=$ac_cv_prog_HELP2MAN
+if test -n "$HELP2MAN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HELP2MAN" >&5
+$as_echo "$HELP2MAN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "jsdoc", so it can be a program name with args.
+set dummy jsdoc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_JSDOC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$JSDOC"; then
+  ac_cv_prog_JSDOC="$JSDOC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_JSDOC="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_JSDOC" && ac_cv_prog_JSDOC="no"
+fi
+fi
+JSDOC=$ac_cv_prog_JSDOC
+if test -n "$JSDOC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JSDOC" >&5
+$as_echo "$JSDOC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "mailx", so it can be a program name with args.
+set dummy mailx; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MAILX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$MAILX"; then
+  ac_cv_prog_MAILX="$MAILX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_MAILX="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_MAILX" && ac_cv_prog_MAILX="no"
+fi
+fi
+MAILX=$ac_cv_prog_MAILX
+if test -n "$MAILX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAILX" >&5
+$as_echo "$MAILX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+##########################################################################
+# debug compilation support
+##########################################################################
+#
+#AC_MSG_CHECKING([whether to build with debug information])
+#AC_ARG_ENABLE([debug],
+#    [AS_HELP_STRING([--enable-debug],
+#        [enable debug data generation (def=no)])],
+#    [debugit="$enableval"],
+#    [debugit=no])
+#AC_MSG_RESULT([$debugit])
+#
+#if test x"$debugit" = x"yes"; then
+#    AC_DEFINE([DEBUG],[],[Debug Mode])
+#    AM_CXXFLAGS="$AM_CXXFLAGS -g -Wall -Werror -Wno-uninitialized -O0"
+#else
+#    AC_DEFINE([NDEBUG],[],[No-debug Mode])
+#    AM_CXXFLAGS="$AM_CXXFLAGS -O3"
+#fi
+#
+
+##########################################################################
+# produce conditionals for Makefile.am and for summary
+##########################################################################
+
+ if test "$COLORDIFF" = colordiff; then
+  HAS_COLORDIFF_TRUE=
+  HAS_COLORDIFF_FALSE='#'
+else
+  HAS_COLORDIFF_TRUE='#'
+  HAS_COLORDIFF_FALSE=
+fi
+
+ if test "$GROFF" = yes; then
+  HAS_GROFF_TRUE=
+  HAS_GROFF_FALSE='#'
+else
+  HAS_GROFF_TRUE='#'
+  HAS_GROFF_FALSE=
+fi
+
+ if test "$PS2PDF" = yes; then
+  HAS_PS2PDF_TRUE=
+  HAS_PS2PDF_FALSE='#'
+else
+  HAS_PS2PDF_TRUE='#'
+  HAS_PS2PDF_FALSE=
+fi
+
+ if test "$HELP2MAN" = yes; then
+  HAS_HELP2MAN_TRUE=
+  HAS_HELP2MAN_FALSE='#'
+else
+  HAS_HELP2MAN_TRUE='#'
+  HAS_HELP2MAN_FALSE=
+fi
+
+ if test "$JSDOC" = yes; then
+  HAS_JSDOC_TRUE=
+  HAS_JSDOC_FALSE='#'
+else
+  HAS_JSDOC_TRUE='#'
+  HAS_JSDOC_FALSE=
+fi
+
+ if test "$MAILX" = yes; then
+  HAS_MAILX_TRUE=
+  HAS_MAILX_FALSE='#'
+else
+  HAS_MAILX_TRUE='#'
+  HAS_MAILX_FALSE=
+fi
+
+ if test "$DX_DOXYGEN"; then
+  HAS_DOXYGEN_TRUE=
+  HAS_DOXYGEN_FALSE='#'
+else
+  HAS_DOXYGEN_TRUE='#'
+  HAS_DOXYGEN_FALSE=
+fi
+
+ if test "$DX_DOT"; then
+  HAS_DOT_TRUE=
+  HAS_DOT_FALSE='#'
+else
+  HAS_DOT_TRUE='#'
+  HAS_DOT_FALSE=
+fi
+
+ if test "$COLORGCC"; then
+  HAS_COLORGCC_TRUE=
+  HAS_COLORGCC_FALSE='#'
+else
+  HAS_COLORGCC_TRUE='#'
+  HAS_COLORGCC_FALSE=
+fi
+
+ if test "$QT4_VERSION"; then
+  HAS_QT4_TRUE=
+  HAS_QT4_FALSE='#'
+else
+  HAS_QT4_TRUE='#'
+  HAS_QT4_FALSE=
+fi
+
+ if test "$MYSQLPP_LIB_DIR" -a "$MYSQLPP_INC_DIR" ; then
+  HAS_SQL_TRUE=
+  HAS_SQL_FALSE='#'
+else
+  HAS_SQL_TRUE='#'
+  HAS_SQL_FALSE=
+fi
+
+ if test "$ROOTEXEC" != no; then
+  HAS_ROOT_TRUE=
+  HAS_ROOT_FALSE='#'
+else
+  HAS_ROOT_TRUE='#'
+  HAS_ROOT_FALSE=
+fi
+
+ if test "$HAVE_ROOT_QT" = yes; then
+  HAS_ROOT_QT_TRUE=
+  HAS_ROOT_QT_FALSE='#'
+else
+  HAS_ROOT_QT_TRUE='#'
+  HAS_ROOT_QT_FALSE=
+fi
+
+ if test "$HAVE_CFITSIO" = yes; then
+  HAS_CFITSIO_TRUE=
+  HAS_CFITSIO_FALSE='#'
+else
+  HAS_CFITSIO_TRUE='#'
+  HAS_CFITSIO_FALSE=
+fi
+
+ if test "$HAVE_CCFITS" = yes; then
+  HAS_CCFITS_TRUE=
+  HAS_CCFITS_FALSE='#'
+else
+  HAS_CCFITS_TRUE='#'
+  HAS_CCFITS_FALSE=
+fi
+
+ if test "$HAVE_CFITSIO" = yes -a "$HAVE_CCFITS" = yes; then
+  HAS_FITS_TRUE=
+  HAS_FITS_FALSE='#'
+else
+  HAS_FITS_TRUE='#'
+  HAS_FITS_FALSE=
+fi
+
+ if test "$HAVE_ZLIB" = yes; then
+  HAS_ZLIB_TRUE=
+  HAS_ZLIB_FALSE='#'
+else
+  HAS_ZLIB_TRUE='#'
+  HAS_ZLIB_FALSE=
+fi
+
+ if test "$HAVE_GL" = yes; then
+  HAS_GL_TRUE=
+  HAS_GL_FALSE='#'
+else
+  HAS_GL_TRUE='#'
+  HAS_GL_FALSE=
+fi
+
+ if test "$HAVE_GLU" = yes; then
+  HAS_GLU_TRUE=
+  HAS_GLU_FALSE='#'
+else
+  HAS_GLU_TRUE='#'
+  HAS_GLU_FALSE=
+fi
+
+ if test "$HAVE_QGL" = yes; then
+  HAS_QGL_TRUE=
+  HAS_QGL_FALSE='#'
+else
+  HAS_QGL_TRUE='#'
+  HAS_QGL_FALSE=
+fi
+
+ if test "$HAVE_QWT" = yes; then
+  HAS_QWT_TRUE=
+  HAS_QWT_FALSE='#'
+else
+  HAS_QWT_TRUE='#'
+  HAS_QWT_FALSE=
+fi
+
+ if test "$HAVE_NOVA" = yes; then
+  HAS_NOVA_TRUE=
+  HAS_NOVA_FALSE='#'
+else
+  HAS_NOVA_TRUE='#'
+  HAS_NOVA_FALSE=
+fi
+
+ if test "$HAVE_DBUS" = yes; then
+  HAS_DBUS_TRUE=
+  HAS_DBUS_FALSE='#'
+else
+  HAS_DBUS_TRUE='#'
+  HAS_DBUS_FALSE=
+fi
+
+ if test "$HAVE_V8" = yes; then
+  HAS_V8_TRUE=
+  HAS_V8_FALSE='#'
+else
+  HAS_V8_TRUE='#'
+  HAS_V8_FALSE=
+fi
+
+
+ if test "$QT4_VERSION" -a "$HAVE_GL" = yes -a "$HAVE_GLU" = yes -a "$HAVE_QGL" = yes -a "$HAVE_ROOT_QT" = yes ; then
+  HAS_GUI_TRUE=
+  HAS_GUI_FALSE='#'
+else
+  HAS_GUI_TRUE='#'
+  HAS_GUI_FALSE=
+fi
+
+ if test "$QT4_VERSION" -a "$HAVE_GL" = yes -a "$HAVE_GLU" = yes -a "$HAVE_QGL" = yes -a "$HAVE_QWT" = yes; then
+  HAS_VIEWER_TRUE=
+  HAS_VIEWER_FALSE='#'
+else
+  HAS_VIEWER_TRUE='#'
+  HAS_VIEWER_FALSE=
+fi
+
+
+ if test "x" = "y"; then
+  IS_FALSE_TRUE=
+  IS_FALSE_FALSE='#'
+else
+  IS_FALSE_TRUE='#'
+  IS_FALSE_FALSE=
+fi
+
+ if test "x" = "x"; then
+  IS_TRUE_TRUE=
+  IS_TRUE_FALSE='#'
+else
+  IS_TRUE_TRUE='#'
+  IS_TRUE_FALSE=
+fi
+
+
+if test -z "$HAS_FITS_TRUE"; then :
+  $as_echo "#define HAVE_FITS 1" >>confdefs.h
+
+fi
+if test -z "$HAS_ROOT_TRUE"; then :
+  $as_echo "#define HAVE_ROOT 1" >>confdefs.h
+
+fi
+if test -z "$HAS_ZLIB_TRUE"; then :
+  $as_echo "#define HAVE_ZLIB 1" >>confdefs.h
+
+fi
+if test -z "$HAS_NOVA_TRUE"; then :
+  $as_echo "#define HAVE_NOVA 1" >>confdefs.h
+
+fi
+if test -z "$HAS_DBUS_TRUE"; then :
+  $as_echo "#define HAVE_DBUS 1" >>confdefs.h
+
+fi
+if test -z "$HAS_SQL_TRUE"; then :
+  $as_echo "#define HAVE_SQL 1" >>confdefs.h
+
+fi
+if test -z "$HAS_V8_TRUE"; then :
+  $as_echo "#define HAVE_V8 1" >>confdefs.h
+
+fi
+if test -z "$HAS_MAILX_TRUE"; then :
+  $as_echo "#define HAVE_MAILX 1" >>confdefs.h
+
+fi
+
+##########################################################################
+# print summary
+##########################################################################
+
+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 overridden 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, we kill variables containing newlines.
+# 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.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+	cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+	  mv -f confcache "$cache_file"$$ &&
+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+	  mv -f confcache "$cache_file" ;;
+	esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  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}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section.  Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
+t clear
+:clear
+s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*([^)]*)\)[	 ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[	 `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+	g
+	s/^\n//
+	s/\n/ /g
+	p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+ if test -n "$EXEEXT"; then
+  am__EXEEXT_TRUE=
+  am__EXEEXT_FALSE='#'
+else
+  am__EXEEXT_TRUE='#'
+  am__EXEEXT_FALSE=
+fi
+
+if test -z "${DX_COND_doc_TRUE}" && test -z "${DX_COND_doc_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_doc\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_dot_TRUE}" && test -z "${DX_COND_dot_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_dot\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_man_TRUE}" && test -z "${DX_COND_man_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_man\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_rtf_TRUE}" && test -z "${DX_COND_rtf_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_rtf\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_xml_TRUE}" && test -z "${DX_COND_xml_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_xml\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_chm_TRUE}" && test -z "${DX_COND_chm_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_chm\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_chi_TRUE}" && test -z "${DX_COND_chi_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_chi\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_html_TRUE}" && test -z "${DX_COND_html_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_html\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_ps_TRUE}" && test -z "${DX_COND_ps_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_ps\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_pdf_TRUE}" && test -z "${DX_COND_pdf_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_pdf\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DX_COND_latex_TRUE}" && test -z "${DX_COND_latex_FALSE}"; then
+  as_fn_error $? "conditional \"DX_COND_latex\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_LIBXP_TRUE}" && test -z "${HAS_LIBXP_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_LIBXP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_LIBXP_TRUE}" && test -z "${HAS_LIBXP_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_LIBXP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_COLORDIFF_TRUE}" && test -z "${HAS_COLORDIFF_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_COLORDIFF\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_GROFF_TRUE}" && test -z "${HAS_GROFF_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_GROFF\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_PS2PDF_TRUE}" && test -z "${HAS_PS2PDF_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_PS2PDF\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_HELP2MAN_TRUE}" && test -z "${HAS_HELP2MAN_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_HELP2MAN\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_JSDOC_TRUE}" && test -z "${HAS_JSDOC_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_JSDOC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_MAILX_TRUE}" && test -z "${HAS_MAILX_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_MAILX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_DOXYGEN_TRUE}" && test -z "${HAS_DOXYGEN_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_DOXYGEN\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_DOT_TRUE}" && test -z "${HAS_DOT_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_DOT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_COLORGCC_TRUE}" && test -z "${HAS_COLORGCC_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_COLORGCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_QT4_TRUE}" && test -z "${HAS_QT4_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_QT4\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_SQL_TRUE}" && test -z "${HAS_SQL_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_SQL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_ROOT_TRUE}" && test -z "${HAS_ROOT_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_ROOT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_ROOT_QT_TRUE}" && test -z "${HAS_ROOT_QT_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_ROOT_QT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_CFITSIO_TRUE}" && test -z "${HAS_CFITSIO_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_CFITSIO\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_CCFITS_TRUE}" && test -z "${HAS_CCFITS_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_CCFITS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_FITS_TRUE}" && test -z "${HAS_FITS_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_FITS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_ZLIB_TRUE}" && test -z "${HAS_ZLIB_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_ZLIB\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_GL_TRUE}" && test -z "${HAS_GL_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_GL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_GLU_TRUE}" && test -z "${HAS_GLU_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_GLU\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_QGL_TRUE}" && test -z "${HAS_QGL_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_QGL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_QWT_TRUE}" && test -z "${HAS_QWT_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_QWT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_NOVA_TRUE}" && test -z "${HAS_NOVA_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_NOVA\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_DBUS_TRUE}" && test -z "${HAS_DBUS_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_DBUS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_V8_TRUE}" && test -z "${HAS_V8_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_V8\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_GUI_TRUE}" && test -z "${HAS_GUI_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_GUI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAS_VIEWER_TRUE}" && test -z "${HAS_VIEWER_FALSE}"; then
+  as_fn_error $? "conditional \"HAS_VIEWER\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${IS_FALSE_TRUE}" && test -z "${IS_FALSE_FALSE}"; then
+  as_fn_error $? "conditional \"IS_FALSE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${IS_TRUE_TRUE}" && test -z "${IS_TRUE_FALSE}"; then
+  as_fn_error $? "conditional \"IS_TRUE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# 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
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+	test -d "$1/.";
+      else
+	case $1 in #(
+	-*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by FACT++ $as_me 1.0, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_links="$ac_config_links"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -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
+
+Configuration files:
+$config_files
+
+Configuration links:
+$config_links
+
+Configuration commands:
+$config_commands
+
+Report bugs to <thomas.bretz@phys.ethz.ch>.
+FACT++ home page: <https://www.fact-project.org/svn/trunk/FACT++/>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+FACT++ config.status 1.0
+configured by $0, generated by GNU Autoconf 2.68,
+  with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2010 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h |  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
+sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`'
+predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`'
+postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`'
+predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`'
+postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`'
+LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`'
+reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`'
+reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`'
+GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`'
+inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`'
+always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
+include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
+prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`'
+predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`'
+postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`'
+predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`'
+postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`'
+
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in SHELL \
+ECHO \
+SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+OBJDUMP \
+deplibs_check_method \
+file_magic_cmd \
+file_magic_glob \
+want_nocaseglob \
+DLLTOOL \
+sharedlib_from_linklib_cmd \
+AR \
+AR_FLAGS \
+archiver_list_spec \
+STRIP \
+RANLIB \
+CC \
+CFLAGS \
+compiler \
+lt_cv_sys_global_symbol_pipe \
+lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_c_name_address \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+nm_file_list_spec \
+lt_prog_compiler_no_builtin_flag \
+lt_prog_compiler_pic \
+lt_prog_compiler_wl \
+lt_prog_compiler_static \
+lt_cv_prog_compiler_c_o \
+need_locks \
+MANIFEST_TOOL \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
+shrext_cmds \
+export_dynamic_flag_spec \
+whole_archive_flag_spec \
+compiler_needs_object \
+with_gnu_ld \
+allow_undefined_flag \
+no_undefined_flag \
+hardcode_libdir_flag_spec \
+hardcode_libdir_flag_spec_ld \
+hardcode_libdir_separator \
+exclude_expsyms \
+include_expsyms \
+file_list_spec \
+variables_saved_for_relink \
+libname_spec \
+library_names_spec \
+soname_spec \
+install_override_mode \
+finish_eval \
+old_striplib \
+striplib \
+compiler_lib_search_dirs \
+predep_objects \
+postdep_objects \
+predeps \
+postdeps \
+compiler_lib_search_path \
+LD_CXX \
+reload_flag_CXX \
+compiler_CXX \
+lt_prog_compiler_no_builtin_flag_CXX \
+lt_prog_compiler_pic_CXX \
+lt_prog_compiler_wl_CXX \
+lt_prog_compiler_static_CXX \
+lt_cv_prog_compiler_c_o_CXX \
+export_dynamic_flag_spec_CXX \
+whole_archive_flag_spec_CXX \
+compiler_needs_object_CXX \
+with_gnu_ld_CXX \
+allow_undefined_flag_CXX \
+no_undefined_flag_CXX \
+hardcode_libdir_flag_spec_CXX \
+hardcode_libdir_flag_spec_ld_CXX \
+hardcode_libdir_separator_CXX \
+exclude_expsyms_CXX \
+include_expsyms_CXX \
+file_list_spec_CXX \
+compiler_lib_search_dirs_CXX \
+predep_objects_CXX \
+postdep_objects_CXX \
+predeps_CXX \
+postdeps_CXX \
+compiler_lib_search_path_CXX; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Double-quote double-evaled strings.
+for var in reload_cmds \
+old_postinstall_cmds \
+old_postuninstall_cmds \
+old_archive_cmds \
+extract_expsyms_cmds \
+old_archive_from_new_cmds \
+old_archive_from_expsyms_cmds \
+archive_cmds \
+archive_expsym_cmds \
+module_cmds \
+module_expsym_cmds \
+export_symbols_cmds \
+prelink_cmds \
+postlink_cmds \
+postinstall_cmds \
+postuninstall_cmds \
+finish_cmds \
+sys_lib_search_path_spec \
+sys_lib_dlsearch_path_spec \
+reload_cmds_CXX \
+old_archive_cmds_CXX \
+old_archive_from_new_cmds_CXX \
+old_archive_from_expsyms_cmds_CXX \
+archive_cmds_CXX \
+archive_expsym_cmds_CXX \
+module_cmds_CXX \
+module_expsym_cmds_CXX \
+export_symbols_cmds_CXX \
+prelink_cmds_CXX \
+postlink_cmds_CXX; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+ac_aux_dir='$ac_aux_dir'
+xsi_shell='$xsi_shell'
+lt_shell_append='$lt_shell_append'
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+
+    PACKAGE='$PACKAGE'
+    VERSION='$VERSION'
+    TIMESTAMP='$TIMESTAMP'
+    RM='$RM'
+    ofile='$ofile'
+
+
+
+
+
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "g++") CONFIG_LINKS="$CONFIG_LINKS g++:$COLORGCC" ;;
+    "gcc") CONFIG_LINKS="$CONFIG_LINKS gcc:$COLORGCC" ;;
+    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
+    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# 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_LINKS+set}" = set || CONFIG_LINKS=$config_links
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp= ac_tmp=
+  trap 'exit_status=$?
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = ""
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries 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[	 ]*=[	 ]*/{
+h
+s///
+s/^/:/
+s/[	 ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[	 ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[	 ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X "  :F $CONFIG_FILES    :L $CONFIG_LINKS  :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$ac_tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+	 # because $ac_f cannot contain `:'.
+	 test -f "$ac_f" ||
+	   case $ac_f in
+	   [\\/$]*) false;;
+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+	   esac ||
+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # 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 by config.status.  */
+    configure_input='Generated from '`
+	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	`' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
+  case $ac_file in
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+
+  :L)
+  #
+  # CONFIG_LINK
+  #
+
+  if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then
+    :
+  else
+    # Prefer the file from the source tree if names are identical.
+    if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then
+      ac_source=$srcdir/$ac_source
+    fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5
+$as_echo "$as_me: linking $ac_source to $ac_file" >&6;}
+
+    if test ! -r "$ac_source"; then
+      as_fn_error $? "$ac_source: file not found" "$LINENO" 5
+    fi
+    rm -f "$ac_file"
+
+    # Try a relative symlink, then a hard link, then a copy.
+    case $ac_source in
+    [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;;
+	*) ac_rel_source=$ac_top_build_prefix$ac_source ;;
+    esac
+    ln -s "$ac_rel_source" "$ac_file" 2>/dev/null ||
+      ln "$ac_source" "$ac_file" 2>/dev/null ||
+      cp -p "$ac_source" "$ac_file" ||
+      as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5
+  fi
+ ;;
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "libtool":C)
+
+    # See if we are running on zsh, and set the options which allow our
+    # commands through without removal of \ escapes.
+    if test -n "${ZSH_VERSION+set}" ; then
+      setopt NO_GLOB_SUBST
+    fi
+
+    cfgfile="${ofile}T"
+    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+    $RM "$cfgfile"
+
+    cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
+#                 Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+#   This file is part of GNU Libtool.
+#
+# GNU Libtool 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.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool 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 GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+# The names of the tagged configurations supported by this script.
+available_tags="CXX "
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# What type of objects to build.
+pic_mode=$pic_mode
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that protects backslashes.
+ECHO=$lt_ECHO
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="\$SED -e 1s/^X//"
+
+# A grep program that handles long lines.
+GREP=$lt_GREP
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# A literal string matcher.
+FGREP=$lt_FGREP
+
+# A BSD- or MS-compatible name lister.
+NM=$lt_NM
+
+# Whether we need soft or hard links.
+LN_S=$lt_LN_S
+
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
+
+# Object file suffix (normally "o").
+objext=$ac_objext
+
+# Executable file suffix (normally "").
+exeext=$exeext
+
+# whether the shell understands "unset".
+lt_unset=$lt_unset
+
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
+
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
+
+# convert \$build file names to \$host format.
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+
+# convert \$build files to toolchain format.
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+
+# An object symbol dumper.
+OBJDUMP=$lt_OBJDUMP
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method = "file_magic".
+file_magic_cmd=$lt_file_magic_cmd
+
+# How to find potential files when deplibs_check_method = "file_magic".
+file_magic_glob=$lt_file_magic_glob
+
+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
+want_nocaseglob=$lt_want_nocaseglob
+
+# DLL creation program.
+DLLTOOL=$lt_DLLTOOL
+
+# Command to associate shared and link libraries.
+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
+
+# The archiver.
+AR=$lt_AR
+
+# Flags to create an archive.
+AR_FLAGS=$lt_AR_FLAGS
+
+# How to feed a file listing to the archiver.
+archiver_list_spec=$lt_archiver_list_spec
+
+# A symbol stripping program.
+STRIP=$lt_STRIP
+
+# Commands used to install an old-style archive.
+RANLIB=$lt_RANLIB
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Whether to use a lock for old archive extraction.
+lock_old_archive_extraction=$lock_old_archive_extraction
+
+# A C compiler.
+LTCC=$lt_CC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_CFLAGS
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration.
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair.
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
+# Specify filename containing input files for \$NM.
+nm_file_list_spec=$lt_nm_file_list_spec
+
+# The root where to search for dependent libraries,and in which our libraries should be installed.
+lt_sysroot=$lt_sysroot
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=$MAGIC_CMD
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Manifest tool.
+MANIFEST_TOOL=$lt_MANIFEST_TOOL
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
+# Old archive suffix (normally "a").
+libext=$libext
+
+# Shared library suffix (normally ".so").
+shrext_cmds=$lt_shrext_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink=$lt_variables_saved_for_relink
+
+# Do we need the "lib" prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Library versioning type.
+version_type=$version_type
+
+# Shared library runtime path variable.
+runpath_var=$runpath_var
+
+# Shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Permission mode override for installation of shared libraries.
+install_override_mode=$lt_install_override_mode
+
+# Command to use after installation of a shared archive.
+postinstall_cmds=$lt_postinstall_cmds
+
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=$lt_finish_eval
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Compile-time system search path for libraries.
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds
+
+# A language specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into a binary
+# during linking.  This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds
+
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects=$lt_predep_objects
+postdep_objects=$lt_postdep_objects
+predeps=$lt_predeps
+postdeps=$lt_postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path
+
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+  case $host_os in
+  aix3*)
+    cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+_LT_EOF
+    ;;
+  esac
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" \
+     || (rm -f "$cfgfile"; exit 1)
+
+  if test x"$xsi_shell" = xyes; then
+  sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
+func_dirname ()\
+{\
+\    case ${1} in\
+\      */*) func_dirname_result="${1%/*}${2}" ;;\
+\      *  ) func_dirname_result="${3}" ;;\
+\    esac\
+} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_basename ()$/,/^} # func_basename /c\
+func_basename ()\
+{\
+\    func_basename_result="${1##*/}"\
+} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
+func_dirname_and_basename ()\
+{\
+\    case ${1} in\
+\      */*) func_dirname_result="${1%/*}${2}" ;;\
+\      *  ) func_dirname_result="${3}" ;;\
+\    esac\
+\    func_basename_result="${1##*/}"\
+} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
+func_stripname ()\
+{\
+\    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
+\    # positional parameters, so assign one to ordinary parameter first.\
+\    func_stripname_result=${3}\
+\    func_stripname_result=${func_stripname_result#"${1}"}\
+\    func_stripname_result=${func_stripname_result%"${2}"}\
+} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
+func_split_long_opt ()\
+{\
+\    func_split_long_opt_name=${1%%=*}\
+\    func_split_long_opt_arg=${1#*=}\
+} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
+func_split_short_opt ()\
+{\
+\    func_split_short_opt_arg=${1#??}\
+\    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
+} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
+func_lo2o ()\
+{\
+\    case ${1} in\
+\      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
+\      *)    func_lo2o_result=${1} ;;\
+\    esac\
+} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_xform ()$/,/^} # func_xform /c\
+func_xform ()\
+{\
+    func_xform_result=${1%.*}.lo\
+} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_arith ()$/,/^} # func_arith /c\
+func_arith ()\
+{\
+    func_arith_result=$(( $* ))\
+} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_len ()$/,/^} # func_len /c\
+func_len ()\
+{\
+    func_len_result=${#1}\
+} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+fi
+
+if test x"$lt_shell_append" = xyes; then
+  sed -e '/^func_append ()$/,/^} # func_append /c\
+func_append ()\
+{\
+    eval "${1}+=\\${2}"\
+} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
+func_append_quoted ()\
+{\
+\    func_quote_for_eval "${2}"\
+\    eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
+} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  # Save a `func_append' function call where possible by direct use of '+='
+  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+else
+  # Save a `func_append' function call even when '+=' is not available
+  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+fi
+
+if test x"$_lt_function_replace_fail" = x":"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
+$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
+fi
+
+
+   mv -f "$cfgfile" "$ofile" ||
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+
+
+    cat <<_LT_EOF >> "$ofile"
+
+# ### BEGIN LIBTOOL TAG CONFIG: CXX
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag_CXX
+reload_cmds=$lt_reload_cmds_CXX
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds_CXX
+
+# A language specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object_CXX
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld_CXX
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+# If ld is used when linking, flag to hardcode \$libdir into a binary
+# during linking.  This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct_CXX
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute_CXX
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic_CXX
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath_CXX
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds_CXX
+
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds_CXX
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec_CXX
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects=$lt_predep_objects_CXX
+postdep_objects=$lt_postdep_objects_CXX
+predeps=$lt_predeps_CXX
+postdeps=$lt_postdeps_CXX
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+# ### END LIBTOOL TAG CONFIG: CXX
+_LT_EOF
+
+ ;;
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named `Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$mf" : 'X\(//\)[^/]' \| \
+	 X"$mf" : 'X\(//\)$' \| \
+	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running `make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # When using ansi2knr, U may be empty or an underscore; expand it
+    U=`sed -n 's/^U = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$file" : 'X\(//\)[^/]' \| \
+	 X"$file" : 'X\(//\)$' \| \
+	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      as_dir=$dirpart/$fdir; as_fn_mkdir_p
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+ ;;
+
+  esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# 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=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || 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 || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: ============================== summary =============================" >&5
+$as_echo "$as_me: ============================== summary =============================" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  CFLAGS   = $CFLAGS" >&5
+$as_echo "$as_me:  CFLAGS   = $CFLAGS" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  CXXFLAGS = $CXXFLAGS" >&5
+$as_echo "$as_me:  CXXFLAGS = $CXXFLAGS" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  CPPFLAGS = $CPPFLAGS" >&5
+$as_echo "$as_me:  CPPFLAGS = $CPPFLAGS" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  LDFLAGS  = $LDFLAGS" >&5
+$as_echo "$as_me:  LDFLAGS  = $LDFLAGS" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: --------------------------------------------------------------------" >&5
+$as_echo "$as_me: --------------------------------------------------------------------" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  BOOST_CPPFLAGS = $BOOST_CPPFLAGS" >&5
+$as_echo "$as_me:  BOOST_CPPFLAGS = $BOOST_CPPFLAGS" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  BOOST_LDFLAGS  = $BOOST_LDFLAGS" >&5
+$as_echo "$as_me:  BOOST_LDFLAGS  = $BOOST_LDFLAGS" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+if test -z "$HAS_SQL_TRUE"; then :
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}: --------------------------------------------------------------------" >&5
+$as_echo "$as_me: --------------------------------------------------------------------" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  MYSQLPP_INC_DIR = $MYSQLPP_INC_DIR" >&5
+$as_echo "$as_me:  MYSQLPP_INC_DIR = $MYSQLPP_INC_DIR" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  MYSQLPP_LIB_DIR = $MYSQLPP_LIB_DIR" >&5
+$as_echo "$as_me:  MYSQLPP_LIB_DIR = $MYSQLPP_LIB_DIR" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+
+fi
+if test -z "$HAS_QT4_TRUE"; then :
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}: --------------------------------------------------------------------" >&5
+$as_echo "$as_me: --------------------------------------------------------------------" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  QT4_VERSION  = $QT4_VERSION" >&5
+$as_echo "$as_me:  QT4_VERSION  = $QT4_VERSION" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  QT4_LIB      = $QT4_LIB" >&5
+$as_echo "$as_me:  QT4_LIB      = $QT4_LIB" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  QT4_LDFLAGS  = $QT4_LDFLAGS" >&5
+$as_echo "$as_me:  QT4_LDFLAGS  = $QT4_LDFLAGS" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  QT4_INCLUDES = $QT4_INCLUDES" >&5
+$as_echo "$as_me:  QT4_INCLUDES = $QT4_INCLUDES" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  MOC4 = $MOC4" >&5
+$as_echo "$as_me:  MOC4 = $MOC4" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  UIC4 = $UIC4" >&5
+$as_echo "$as_me:  UIC4 = $UIC4" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  RCC4 = $RCC4" >&5
+$as_echo "$as_me:  RCC4 = $RCC4" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+
+fi
+if test -z "$HAS_ROOT_TRUE"; then :
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}: --------------------------------------------------------------------" >&5
+$as_echo "$as_me: --------------------------------------------------------------------" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  ROOTVERSION   = $ROOTVERSION" >&5
+$as_echo "$as_me:  ROOTVERSION   = $ROOTVERSION" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  ROOTEXEC      = $ROOTEXEC" >&5
+$as_echo "$as_me:  ROOTEXEC      = $ROOTEXEC" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  ROOTCONF      = $ROOTCONF" >&5
+$as_echo "$as_me:  ROOTCONF      = $ROOTCONF" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  ROOTCINT      = $ROOTCINT" >&5
+$as_echo "$as_me:  ROOTCINT      = $ROOTCINT" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  ROOTCPPFLAGS  = $ROOTCPPFLAGS" >&5
+$as_echo "$as_me:  ROOTCPPFLAGS  = $ROOTCPPFLAGS" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  ROOTLDFLAGS   = $ROOTLDFLAGS" >&5
+$as_echo "$as_me:  ROOTLDFLAGS   = $ROOTLDFLAGS" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: --------------------------------------------------------------------" >&5
+$as_echo "$as_me: --------------------------------------------------------------------" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  zlib                   / 'zlib.h'           found: $HAVE_ZLIB" >&5
+$as_echo "$as_me:  zlib                   / 'zlib.h'           found: $HAVE_ZLIB" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  nova                   / libnova.so         found: $HAVE_NOVA" >&5
+$as_echo "$as_me:  nova                   / libnova.so         found: $HAVE_NOVA" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  v8                     / 'v8.h' / libv8.so  found: $HAVE_V8" >&5
+$as_echo "$as_me:  v8                     / 'v8.h' / libv8.so  found: $HAVE_V8" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  GL                     / GL/gl.h            found: $HAVE_GL" >&5
+$as_echo "$as_me:  GL                     / GL/gl.h            found: $HAVE_GL" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  GLU                    / GL/glu.h           found: $HAVE_GLU" >&5
+$as_echo "$as_me:  GLU                    / GL/glu.h           found: $HAVE_GLU" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  QtOpenGL               / QtOpenGL/QGLWidget found: $HAVE_QGL" >&5
+$as_echo "$as_me:  QtOpenGL               / QtOpenGL/QGLWidget found: $HAVE_QGL" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  Qwt                    / qwt_plot.h         found: $HAVE_QWT" >&5
+$as_echo "$as_me:  Qwt                    / qwt_plot.h         found: $HAVE_QWT" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  cfitsio                / 'fitsio.h'         found: $HAVE_CFITSIO" >&5
+$as_echo "$as_me:  cfitsio                / 'fitsio.h'         found: $HAVE_CFITSIO" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  CCfits                 / 'CCfits/CCfits'    found: $HAVE_CCFITS" >&5
+$as_echo "$as_me:  CCfits                 / 'CCfits/CCfits'    found: $HAVE_CCFITS" >&6;}
+if test -z "$HAS_SQL_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  MySQL/MySQL++          / 'mysql++.h'        found: yes" >&5
+$as_echo "$as_me:  MySQL/MySQL++          / 'mysql++.h'        found: yes" >&6;}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  MySQL/MySQL++          / 'mysql++.h'        found: no" >&5
+$as_echo "$as_me:  MySQL/MySQL++          / 'mysql++.h'        found: no" >&6;}
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  DBus-1, DBus-glib-1    / pkg-config         found: $HAVE_DBUS" >&5
+$as_echo "$as_me:  DBus-1, DBus-glib-1    / pkg-config         found: $HAVE_DBUS" >&6;}
+if test -z "$HAS_LIBXP_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  Motif/lesstif          / 'Xm/Xm.h' 'libXp'  found: yes" >&5
+$as_echo "$as_me:  Motif/lesstif          / 'Xm/Xm.h' 'libXp'  found: yes" >&6;}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  Motif/lesstif          / 'Xm/Xm.h' 'libXp'  found: no" >&5
+$as_echo "$as_me:  Motif/lesstif          / 'Xm/Xm.h' 'libXp'  found: no" >&6;}
+
+fi
+
+if test -z "$HAS_LIBXP_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  Motif/lesstif          / 'Xm/Xm.h' 'libXp'  found: yes" >&5
+$as_echo "$as_me:  Motif/lesstif          / 'Xm/Xm.h' 'libXp'  found: yes" >&6;}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  Motif/lesstif          / 'Xm/Xm.h' 'libXp'  found: no" >&5
+$as_echo "$as_me:  Motif/lesstif          / 'Xm/Xm.h' 'libXp'  found: no" >&6;}
+
+fi
+if test -z "$HAS_COLORDIFF_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  colored svn diff       / 'colordiff'        found: yes" >&5
+$as_echo "$as_me:  colored svn diff       / 'colordiff'        found: yes" >&6;}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  colored svn diff       / 'colordiff'        found: no" >&5
+$as_echo "$as_me:  colored svn diff       / 'colordiff'        found: no" >&6;}
+
+fi
+if test -z "$HAS_JSDOC_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  JavaScript docu        / 'jsdoc'            found: yes" >&5
+$as_echo "$as_me:  JavaScript docu        / 'jsdoc'            found: yes" >&6;}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  JavaScript docu        / 'jsdoc'            found: no" >&5
+$as_echo "$as_me:  JavaScript docu        / 'jsdoc'            found: no" >&6;}
+
+fi
+if test -z "$HAS_V8_TRUE"; then :
+
+   if test -z "$HAS_MAILX_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  Mail support           / 'mailx'            found: yes" >&5
+$as_echo "$as_me:  Mail support           / 'mailx'            found: yes" >&6;}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  Mail support           / 'mailx'            found: no" >&5
+$as_echo "$as_me:  Mail support           / 'mailx'            found: no" >&6;}
+
+fi
+
+fi
+
+if test -z "$HAS_HELP2MAN_TRUE"; then :
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  man-pages enabled      / 'help2man'         found: $HELP2MAN" >&5
+$as_echo "$as_me:  man-pages enabled      / 'help2man'         found: $HELP2MAN" >&6;}
+   if test -z "$HAS_GROFF_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  build of html enabled  / 'groff'            found: yes" >&5
+$as_echo "$as_me:  build of html enabled  / 'groff'            found: yes" >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}:  build of pdf  enabled  / 'ps2pdf'           found: $PS2PDF" >&5
+$as_echo "$as_me:  build of pdf  enabled  / 'ps2pdf'           found: $PS2PDF" >&6;}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  build of html and pdf  / 'groff'            found: no" >&5
+$as_echo "$as_me:  build of html and pdf  / 'groff'            found: no" >&6;}
+
+fi
+
+else
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  man, html, pdf enabled / 'help2man'         found: no" >&5
+$as_echo "$as_me:  man, html, pdf enabled / 'help2man'         found: no" >&6;}
+
+fi
+
+if test -z "$HAS_DOXYGEN_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  doxygen docu enabled   / 'doxygen'          found: $DX_DOXYGEN" >&5
+$as_echo "$as_me:  doxygen docu enabled   / 'doxygen'          found: $DX_DOXYGEN" >&6;}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  doxygen docu enabled   / 'doxygen'          found: no" >&5
+$as_echo "$as_me:  doxygen docu enabled   / 'doxygen'          found: no" >&6;}
+
+fi
+if test -z "$HAS_DOT_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  doxygen graphs enabled / 'dot' (graphviz)   found: $DX_DOT" >&5
+$as_echo "$as_me:  doxygen graphs enabled / 'dot' (graphviz)   found: $DX_DOT" >&6;}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  doxygen graphs enabled / 'dot' (graphviz)   found: no" >&5
+$as_echo "$as_me:  doxygen graphs enabled / 'dot' (graphviz)   found: no" >&6;}
+
+fi
+if test -z "$HAS_QT4_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  QT4 support enabled    /  QT4 toolkit       found: yes" >&5
+$as_echo "$as_me:  QT4 support enabled    /  QT4 toolkit       found: yes" >&6;}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  QT4 support enabled    /  QT4 toolkit       found: no" >&5
+$as_echo "$as_me:  QT4 support enabled    /  QT4 toolkit       found: no" >&6;}
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  ROOT support enabled   /  root >= 5.12/00   found: $ROOTEXEC" >&5
+$as_echo "$as_me:  ROOT support enabled   /  root >= 5.12/00   found: $ROOTEXEC" >&6;}
+if test -z "$HAS_ROOT_QT_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  ROOT built with --with-qt                   found: yes" >&5
+$as_echo "$as_me:  ROOT built with --with-qt                   found: yes" >&6;}
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  ROOT built with --with-qt                   found: no" >&5
+$as_echo "$as_me:  ROOT built with --with-qt                   found: no" >&6;}
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: --------------------------------------------------------------------" >&5
+$as_echo "$as_me: --------------------------------------------------------------------" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: Suggestions and hints:" >&5
+$as_echo "$as_me: Suggestions and hints:" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  - Add 'V=1' to you make-call to switch on verbose output." >&5
+$as_echo "$as_me:  - Add 'V=1' to you make-call to switch on verbose output." >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  - Do not try to create man-pages with doxygen," >&5
+$as_echo "$as_me:  - Do not try to create man-pages with doxygen," >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:    it does most probably not work." >&5
+$as_echo "$as_me:    it does most probably not work." >&6;}
+if test -z "$HAS_COLORGCC_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  - Install colorgcc to get colored compiler output." >&5
+$as_echo "$as_me:  - Install colorgcc to get colored compiler output." >&6;}
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  - If you send me a bug report about:" >&5
+$as_echo "$as_me:  - If you send me a bug report about:" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:    + configure: please attach the file config.log" >&5
+$as_echo "$as_me:    + configure: please attach the file config.log" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:    + make: please send me the output of 'make V=1'" >&5
+$as_echo "$as_me:    + make: please send me the output of 'make V=1'" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: --------------------------------------------------------------------" >&5
+$as_echo "$as_me: --------------------------------------------------------------------" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: Some interesting build targets:" >&5
+$as_echo "$as_me: Some interesting build targets:" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  diff:          colored 'svn diff' if colordiff is installed" >&5
+$as_echo "$as_me:  diff:          colored 'svn diff' if colordiff is installed" >&6;}
+if test -z "$HAS_HELP2MAN_TRUE"; then :
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}:  program.man:   build man-page from 'program --help'" >&5
+$as_echo "$as_me:  program.man:   build man-page from 'program --help'" >&6;}
+   { $as_echo "$as_me:${as_lineno-$LINENO}:                 (display with 'man ./program.man')" >&5
+$as_echo "$as_me:                 (display with 'man ./program.man')" >&6;}
+   if test -z "$HAS_GROFF_TRUE"; then :
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}:  program.html:  build html page from man-page" >&5
+$as_echo "$as_me:  program.html:  build html page from man-page" >&6;}
+      if test -z "$HAS_PS2PDF_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  program.pdf:   build pdf documentation from man page" >&5
+$as_echo "$as_me:  program.pdf:   build pdf documentation from man page" >&6;}
+
+fi
+
+fi
+
+fi
+if test -z "$HAS_DOXYGEN_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  doxygen-run:   build html documentation with doxygen" >&5
+$as_echo "$as_me:  doxygen-run:   build html documentation with doxygen" >&6;}
+#   AC_MSG_NOTICE([ doxygen-doc:   build html and pdf documentation with doxygen])
+
+fi
+if test -z "$HAS_JSDOC_TRUE"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}:  jsdoc:         build JavaScript documentation with jsdoc" >&5
+$as_echo "$as_me:  jsdoc:         build JavaScript documentation with jsdoc" >&6;}
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}:  doc:           build all buildable documentation" >&5
+$as_echo "$as_me:  doc:           build all buildable documentation" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: --------------------------------------------------------------------" >&5
+$as_echo "$as_me: --------------------------------------------------------------------" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
+if test -z "$HAS_ZLIB_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  zlib not found. Support for reading .fits.gz disabled." >&5
+$as_echo "$as_me: WARNING:  zlib not found. Support for reading .fits.gz disabled." >&2;}
+
+fi
+if test -z "$HAS_LIBXP_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  Motif/lesstif not found. The dim gui did will not be built!" >&5
+$as_echo "$as_me: WARNING:  Motif/lesstif not found. The dim gui did will not be built!" >&2;}
+
+fi
+if test -z "$HAS_FITS_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  FITS support disabled. cfitsio/CCfits missing!" >&5
+$as_echo "$as_me: WARNING:  FITS support disabled. cfitsio/CCfits missing!" >&2;}
+
+fi
+if test -z "$HAS_ROOT_TRUE"; then :
+  if test -z "$HAS_ROOT_QT_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  root found but it was built without the --with-qt option" >&5
+$as_echo "$as_me: WARNING:  root found but it was built without the --with-qt option" >&2;}
+
+fi
+
+fi
+if test -z "$HAS_QT4_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  QT4 missing - GUIs disabled!" >&5
+$as_echo "$as_me: WARNING:  QT4 missing - GUIs disabled!" >&2;}
+fi
+if test -z "$HAS_GL_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  GL not found - GUIs will be disabled." >&5
+$as_echo "$as_me: WARNING:  GL not found - GUIs will be disabled." >&2;}
+fi
+if test -z "$HAS_GLU_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  GLU not found - GUIs will be disabled." >&5
+$as_echo "$as_me: WARNING:  GLU not found - GUIs will be disabled." >&2;}
+fi
+if test -z "$HAS_QGL_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  QtOpenGl not found - GUIs will be disabled." >&5
+$as_echo "$as_me: WARNING:  QtOpenGl not found - GUIs will be disabled." >&2;}
+fi
+if test -z "$HAS_QWT_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  Qwt not found - viewer will be disabled." >&5
+$as_echo "$as_me: WARNING:  Qwt not found - viewer will be disabled." >&2;}
+fi
+if test -z "$HAS_GUI_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  Either of the necessary packages not found - fact GUI disabled!" >&5
+$as_echo "$as_me: WARNING:  Either of the necessary packages not found - fact GUI disabled!" >&2;}
+
+fi
+if test -z "$HAS_VIEWER_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  Either of the necessary packages not found - viewer GUI disabled!" >&5
+$as_echo "$as_me: WARNING:  Either of the necessary packages not found - viewer GUI disabled!" >&2;}
+
+fi
+if test -z "$HAS_JSDOC_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  JavaScript documentation disabled!" >&5
+$as_echo "$as_me: WARNING:  JavaScript documentation disabled!" >&2;}
+fi
+if test -z "$HAS_SQL_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  database support globally disabled!" >&5
+$as_echo "$as_me: WARNING:  database support globally disabled!" >&2;}
+fi
+if test -z "$HAS_NOVA_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  libnova missing - smartfact will be compiles without astronomy support!" >&5
+$as_echo "$as_me: WARNING:  libnova missing - smartfact will be compiles without astronomy support!" >&2;}
+fi
+if test -z "$HAS_V8_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  libv8 missing - JavaScript support will be disabled!" >&5
+$as_echo "$as_me: WARNING:  libv8 missing - JavaScript support will be disabled!" >&2;}
+fi
+if test -z "$HAS_DBUS_TRUE"; then :
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:  DBus libraries missing - skypeclient will not be compiled!" >&5
+$as_echo "$as_me: WARNING:  DBus libraries missing - skypeclient will not be compiled!" >&2;}
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: " >&5
+$as_echo "$as_me: " >&6;}
Index: branches/testFACT++branch/configure.ac
===================================================================
--- branches/testFACT++branch/configure.ac	(revision 18277)
+++ branches/testFACT++branch/configure.ac	(revision 18277)
@@ -0,0 +1,604 @@
+######################################################################
+# Autoconf initial setup
+######################################################################
+
+#[AC_]PACKAGE_NAME
+#[AC_]PACKAGE_TARNAME
+#[AC_]PACKAGE_VERSION
+#[AC_]PACKAGE_STRING
+#[AC_]PACKAGE_BUGREPORT
+AC_INIT([FACT++],[1.0],[thomas.bretz@phys.ethz.ch],[FACTpp],[https://www.fact-project.org/svn/trunk/FACT++/])
+AC_PREREQ([2.65])
+AC_CONFIG_FILES([Makefile])   # causes x/Makefile.in to be created if x/Makefile.am exists
+#AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_MACRO_DIR([.macro_dir])
+AC_CONFIG_AUX_DIR([.aux_dir])
+
+# Make sure none of the following will set -O2
+AC_ARG_ENABLE([optimization],
+    AS_HELP_STRING([--disable-optimization], [Compile with -O0 instead of -O3])
+)
+AS_IF([test "x$enable_optimization" != "xno"], [MYFLAGS+=" -O3"], [MYFLAGS+=" -O0"])
+
+AC_ARG_ENABLE([debug],
+    AS_HELP_STRING([--enable-debug], [Compile with debugging symbols (-g)])
+)
+AS_IF([test "x$enable_debug" = "xyes"], [MYFLAGS+=" -g"])
+
+CFLAGS+=$MYFLAGS
+CXXFLAGS+=$MYFLAGS
+
+AC_PROG_CC([gcc])
+AC_PROG_CXX([g++])
+
+COLORGCC=`which colorgcc`
+AS_IF([test -n "$COLORGCC"], [
+    AC_CONFIG_LINKS([g++:$COLORGCC gcc:$COLORGCC])
+    PATH=./:$PATH
+])
+
+#AC_PROG_CC_C99
+AC_PROG_CC_STDC
+
+######################################################################
+# GNUC extension support (needed for the event builder)
+######################################################################
+
+AC_USE_SYSTEM_EXTENSIONS(_GNU_SOURCE)
+
+######################################################################
+# Check for right C++ standard
+######################################################################
+
+#AC_CXX_HEADER_STDCXX_0X
+AC_CXX_COMPILE_STDCXX_0X
+AS_IF([test "$ax_cv_cxx_compile_cxx0x_cxx" != yes], 
+   AC_MSG_ERROR([C++0x standard (-std=c++0x) not supported by compiler.]))
+
+# Postponed after the BOOST library tests otherwise the check for boost::thread fails
+#CXXFLAGS+=" -std=c++0x"
+
+PKG_CHECK_MODULES(DBUS, dbus-1 dbus-glib-1, HAVE_DBUS=yes, HAVE_DBUS=no)
+
+CPPFLAGS+=" `pkg-config --cflags dbus-1 dbus-glib-1`"
+LDFLAGS+=" `pkg-config --libs dbus-1 dbus-glib-1`"
+
+# dbus-1
+# dbus-glib-1
+# QtOpenGL
+# gl
+# QtCore
+# cfitsio
+
+######################################################################
+# Setup the libtool and the language
+######################################################################
+
+LT_INIT([disable-static])
+AC_LANG(C++)
+#AC_PATH_XTRA
+
+######################################################################
+# Automake initial setup
+######################################################################
+AM_INIT_AUTOMAKE([1.11 -Wall subdir-objects std-options no-define color-tests parallel-tests silent-rules])
+AM_SILENT_RULES([yes])
+
+AM_PROG_CC_C_O
+
+######################################################################
+# DOXYGEN SUPPORT
+######################################################################
+
+### FIXME: Need a configure commandline switch
+DX_ENV_APPEND(EXTRACT_ALL, YES)
+DX_ENV_APPEND(RECURSIVE,   YES)
+DX_ENV_APPEND(ALL_GRAPHS,  NO)  # change to yes to switch on call(er) graphs
+
+#DX_DOXYGEN_FEATURE(ON)
+DX_DOT_FEATURE(ON)                # sets HAVE_DOT
+#DX_HTML_FEATURE(ON)              # sets GENERATE_HTML (default)
+#DX_CHM_FEATURE(ON|OFF)           # sets GENERATE_HTMLHELP
+#DX_CHI_FEATURE(ON|OFF)           # sets GENERATE_CHI
+#DX_MAN_FEATURE(ON)               # sets GENERATE_MAN (segfaults)
+#DX_RTF_FEATURE(ON|OFF)           # sets GENERATE_RTF
+#DX_XML_FEATURE(ON|OFF)           # sets GENERATE_XML
+#DX_PDF_FEATURE(ON|OFF)           # sets GENERATE_PDF (default)
+DX_PS_FEATURE(OFF)                # sets GENERATE_PS  (default)
+DX_INIT_DOXYGEN($PACKAGE_NAME)#, DOXYFILE-PATH, [OUTPUT-DIR])
+
+#USE_HTAGS              = $(USE_HTAGS)
+
+######################################################################
+# pthread/Readline/NCurses (pthread needed by dim and boost)
+######################################################################
+
+AC_LANG_PUSH(C)
+
+# Check for math library (some linux need this to compile cfitsio)
+AC_CHECK_LIB([m],[cos])
+
+# Needed to compile dim
+ACX_PTHREAD
+
+CPPFLAGS+=" "$PTHREAD_CFLAGS
+LDFLAGS+=" "$PTHREAD_CFLAGS
+
+
+# Needed to compile FACT++
+AC_CHECK_READLINE
+AS_IF([test "x$have_readline" != "xyes"], 
+   AC_MSG_ERROR([The readline library is not properly installed.]))
+
+CPPFLAGS+=" "$READLINE_INCLUDES
+LDFLAGS+=" "$READLINE_LIBS
+
+# Needed to compile FACT++
+AC_CHECK_HEADERS([panel.h],, 
+   AC_MSG_ERROR([ncurses header not found]))
+   
+# Needed to compile FACT++
+AC_CHECK_LIB(panel, update_panels,, 
+   AC_MSG_ERROR([ncurses panel library not found]))
+
+# Xm.h (lesstif/motif, needed to compile did)
+AC_FIND_MOTIF
+
+CPPFLAGS+=" "$MOTIF_INCL
+LDFLAGS+=" "$MOTIF_LDFLAGS
+
+AM_COND_IF(HAS_LIBXP,, 
+   AC_MSG_WARN([ Motif/lesstif not found!])
+)
+
+# Check for zlib and exit with error if not found (defines HAVE_LIBZ)
+AC_CHECK_PACKAGE(zlib, inflateEnd, z, zlib.h,
+		 HAVE_ZLIB=yes, HAVE_ZLIB=no)
+
+# Check for GL and GLU needed for the raw event viewer
+AC_CHECK_PACKAGE(GL, glLoadIdentity, GL, GL/gl.h, HAVE_GL=yes, HAVE_GL=no)
+AC_CHECK_PACKAGE(GLU, gluNewTess, GLU, GL/glu.h, HAVE_GLU=yes, HAVE_GLU=no)
+
+# Check for libnova
+AC_CHECK_PACKAGE(nova, ln_get_julian_from_sys, nova, libnova/julian_day.h, HAVE_NOVA=yes, HAVE_NOVA=no)
+
+# Taken from http://code.google.com/p/autoconf-gl-macros/
+#AX_CHECK_GL
+#AX_CHECK_GLU
+#AX_CHECK_GLUT
+
+# Needed to compile FACT++
+AC_CHECK_PACKAGE(cfitsio, ffpss, cfitsio, fitsio.h, 
+		 HAVE_CFITSIO=yes, HAVE_CFITSIO=no)
+
+#AC_CHECK_HEADERS([fitsio.h],,AC_MSG_ERROR([cfitsio headers not found]))
+#AC_CHECK_LIB([cfitsio], main,,AC_MSG_ERROR([cfitsio library not found]))
+
+AC_LANG_POP(C)
+
+# Needed to compile FACT++
+AC_CHECK_PACKAGE(ccfits, main, CCfits, CCfits/CCfits, 
+		 HAVE_CCFITS=yes, HAVE_CCFITS=no)
+
+#AC_CHECK_HEADERS([CCfits/CCfits],,
+#   AC_MSG_ERROR(CCfits headers not found))
+#AC_CHECK_LIB(CCfits, main,,
+#   AC_MSG_ERROR(CCfits library not found))
+
+######################################################################
+# MySQL(++) SUPPORT
+######################################################################
+
+# Needed to compile FACT++
+MYSQL_DEVEL
+MYSQLPP_DEVEL
+
+LDFLAGS+=" -lmysqlpp"
+
+######################################################################
+# BOOST SUPPORT
+######################################################################
+
+# Needed to compile FACT++
+AX_BOOST_BASE([1.40], [],
+   AC_MSG_ERROR([The boost C++ libraries (>=1.40) are not properly installed.])
+)
+
+AC_MSG_CHECKING([for BOOST_CPPFLAGS])
+AC_MSG_RESULT([$BOOST_CPPFLAGS])
+
+AC_MSG_CHECKING([for BOOST_LDFLAGS])
+AC_MSG_RESULT([$BOOST_LDFLAGS])
+
+# Keep this order AX_BOOST_FILESYSTEM needs AX_BOOST_SYSTEM_LIB
+AX_BOOST_SYSTEM
+AS_IF([test "x$ax_cv_boost_system" != "xyes"],
+   AC_MSG_ERROR([Problems with the Boost::System libarary.]))
+
+AX_BOOST_ASIO
+AS_IF([test "x$ax_cv_boost_asio" != "xyes"],
+   AC_MSG_ERROR([Problems with the Boost::ASIO libarary.]))
+
+AX_BOOST_DATE_TIME
+AS_IF([test "x$ax_cv_boost_date_time" != "xyes"],
+   AC_MSG_ERROR([Problems with the Boost::Date_Time libarary.]))
+
+AX_BOOST_FILESYSTEM
+AS_IF([test "x$ax_cv_boost_filesystem" != "xyes"],
+   AC_MSG_ERROR([Problems with the Boost::Filesystem libarary.]))
+
+AX_BOOST_PROGRAM_OPTIONS
+AS_IF([test "x$ax_cv_boost_program_options" != "xyes"],
+   AC_MSG_ERROR([Problems with the Boost::Program_Options libarary.]))
+
+AX_BOOST_REGEX
+AS_IF([test "x$ax_cv_boost_regex" != "xyes"],
+   AC_MSG_ERROR([Problems with the Boost::Regex libarary.]))
+
+AX_BOOST_THREAD
+AS_IF([test "x$ax_cv_boost_thread" != "xyes"],
+   AC_MSG_ERROR([Problems with the Boost::Thread libarary.]))
+#AX_BOOST_IOSTREAMS
+#AX_BOOST_PYTHON
+#AX_BOOST_SERIALIZATION
+#AX_BOOST_SIGNALS
+#AX_BOOST_TEST_EXEC_MONITOR
+#AX_BOOST_UNIT_TEST_FRAMEWORK
+#AX_BOOST_WAVE
+#AX_BOOST_WSERIALIZATION
+
+LDFLAGS+=" "$BOOST_LDFLAGS
+LDFLAGS+=" "$BOOST_SYSTEM_LIB
+LDFLAGS+=" "$BOOST_ASIO_LIB
+LDFLAGS+=" "$BOOST_DATE_TIME_LIB
+LDFLAGS+=" "$BOOST_FILESYSTEM_LIB
+LDFLAGS+=" "$BOOST_PROGRAM_OPTIONS_LIB
+LDFLAGS+=" "$BOOST_REGEX_LIB
+LDFLAGS+=" "$BOOST_THREAD_LIB
+
+CPPFLAGS+=" "$BOOST_CPPFLAGS
+
+# Now we can safely add the compiler option for your prefered standard
+CXXFLAGS+=" -std=c++0x"
+
+#AC_CHECK_HEADERS(
+#   [\
+#      boost/bind.hpp \
+#      boost/lexical_cast.hpp \
+#      boost/filesystem.hpp \
+#      boost/thread.hpp \
+#      boost/function.hpp \
+#      boost/regex.hpp \
+#      boost/asio.hpp \
+#      boost/enable_shared_from_this.hpp \
+#      boost/asio/deadline_timer.hpp \
+#      boost/date_time/posix_time/posix_time.hpp \
+#      boost/date_time/local_time/local_time.hpp \
+#      boost/date_time/gregorian/gregorian.hpp 
+#   ], [],
+#   [
+#      echo "Error! At least one needed header of the boost C++ libararies is missing." 
+#      exit -1
+#   ]
+#)
+
+######################################################################
+# v8 / JavaScript
+######################################################################
+
+AC_CHECK_CLASS(v8, [v8::HandleScope handle_scope], v8, v8.h, 
+	HAVE_V8=yes, HAVE_V8=no)
+
+######################################################################
+# QT4/GUI SUPPORT
+######################################################################
+
+AC_ARG_WITH([qt4], 
+   [AS_HELP_STRING([--without-qt4], [Disable qt4, i.e. disable gui support.])],
+   [], [QT4_DO_IT_ALL])
+
+# This allows to list the QT4 stuff independantly later
+CPPFLAGS+=" "${QT4_INCLUDES}" "
+AC_CHECK_CLASS(QGL, [QGLWidget qgl], QtOpenGL, QtOpenGL/QGLWidget,
+	HAVE_QGL=yes, HAVE_QGL=no)
+AC_CHECK_CLASS(qwt, [QwtPlot qwt],   qwt-qt4,  qwt_plot.h,
+	HAVE_QWT=yes, HAVE_QWT=no)
+
+######################################################################
+# ROOT SUPPORT
+######################################################################
+
+AC_ARG_WITH([root], 
+   [AS_HELP_STRING([--without-root], [Disable root, i.e. disable gui support.])],
+   [], [ROOT_PATH([5.12/00])]
+)
+
+if [test "$ROOTEXEC" != no -a -n "$ROOTVERSION"]  ;
+then
+
+   ROOTCPPFLAGS=$ROOTCFLAGS" "$ROOTAUXCFLAGS
+   ROOTLDFLAGS="-L"$ROOTLIBDIR" -lGQt"
+
+   #AC_CHECK_PROG(HAVE_ROOT_QT, libGQt.so.$ROOTSOVERSION, yes, no, $ROOTLIBDIR)
+   #AC_CHECK_PROG(HAVE_GQT,     libGQt.so.$ROOTSOVERSION, yes, no, $LD_LIBRARY_PATH)
+
+   # It seems it dooesn't work on older root versions
+   ROOT_FEATURE([qt], [HAVE_ROOT_QT=yes])
+
+   AC_SUBST(ROOTCPPFLAGS)
+   AC_SUBST(ROOTLDFLAGS)
+fi
+
+
+######################################################################
+# Check if we have colordiff to colorize 'svn diff'
+######################################################################
+
+# Nice to have to support colored diff
+AC_CHECK_PROG(COLORDIFF, colordiff,    colordiff, cat)
+AC_CHECK_PROG(GROFF,     groff,        yes, no)
+AC_CHECK_PROG(PS2PDF,    ps2pdf,       yes, no)
+AC_CHECK_PROG(HELP2MAN,  help2man,     yes, no)
+AC_CHECK_PROG(JSDOC,     jsdoc,        yes, no)
+AC_CHECK_PROG(MAILX,     mailx,        yes, no)
+
+##########################################################################
+# debug compilation support
+##########################################################################
+#
+#AC_MSG_CHECKING([whether to build with debug information])
+#AC_ARG_ENABLE([debug],
+#    [AS_HELP_STRING([--enable-debug],
+#        [enable debug data generation (def=no)])],
+#    [debugit="$enableval"],
+#    [debugit=no])
+#AC_MSG_RESULT([$debugit])
+#
+#if test x"$debugit" = x"yes"; then
+#    AC_DEFINE([DEBUG],[],[Debug Mode])
+#    AM_CXXFLAGS="$AM_CXXFLAGS -g -Wall -Werror -Wno-uninitialized -O0"
+#else
+#    AC_DEFINE([NDEBUG],[],[No-debug Mode])
+#    AM_CXXFLAGS="$AM_CXXFLAGS -O3"
+#fi
+#
+
+##########################################################################
+# produce conditionals for Makefile.am and for summary
+##########################################################################
+
+AM_CONDITIONAL(HAS_COLORDIFF, [test "$COLORDIFF" = colordiff])
+AM_CONDITIONAL(HAS_GROFF,     [test "$GROFF" = yes])
+AM_CONDITIONAL(HAS_PS2PDF,    [test "$PS2PDF" = yes])
+AM_CONDITIONAL(HAS_HELP2MAN,  [test "$HELP2MAN" = yes])
+AM_CONDITIONAL(HAS_JSDOC,     [test "$JSDOC" = yes])
+AM_CONDITIONAL(HAS_MAILX,     [test "$MAILX" = yes])
+AM_CONDITIONAL(HAS_DOXYGEN,   [test "$DX_DOXYGEN"])
+AM_CONDITIONAL(HAS_DOT,       [test "$DX_DOT"])
+AM_CONDITIONAL(HAS_COLORGCC,  [test "$COLORGCC"])
+AM_CONDITIONAL(HAS_QT4,       [test "$QT4_VERSION"])
+AM_CONDITIONAL(HAS_SQL,       [test "$MYSQLPP_LIB_DIR" -a "$MYSQLPP_INC_DIR" ])
+AM_CONDITIONAL(HAS_ROOT,      [test "$ROOTEXEC" != no])
+AM_CONDITIONAL(HAS_ROOT_QT,   [test "$HAVE_ROOT_QT" = yes])
+AM_CONDITIONAL(HAS_CFITSIO,   [test "$HAVE_CFITSIO" = yes])
+AM_CONDITIONAL(HAS_CCFITS,    [test "$HAVE_CCFITS" = yes])
+AM_CONDITIONAL(HAS_FITS,      [test "$HAVE_CFITSIO" = yes -a "$HAVE_CCFITS" = yes])
+AM_CONDITIONAL(HAS_ZLIB,      [test "$HAVE_ZLIB" = yes])
+AM_CONDITIONAL(HAS_GL,        [test "$HAVE_GL" = yes])
+AM_CONDITIONAL(HAS_GLU,       [test "$HAVE_GLU" = yes])
+AM_CONDITIONAL(HAS_QGL,       [test "$HAVE_QGL" = yes])
+AM_CONDITIONAL(HAS_QWT,       [test "$HAVE_QWT" = yes])
+AM_CONDITIONAL(HAS_NOVA,      [test "$HAVE_NOVA" = yes])
+AM_CONDITIONAL(HAS_DBUS,      [test "$HAVE_DBUS" = yes])
+AM_CONDITIONAL(HAS_V8,        [test "$HAVE_V8" = yes])
+
+AM_CONDITIONAL(HAS_GUI,       [test "$QT4_VERSION" -a "$HAVE_GL" = yes -a "$HAVE_GLU" = yes -a "$HAVE_QGL" = yes -a "$HAVE_ROOT_QT" = yes ])
+AM_CONDITIONAL(HAS_VIEWER,    [test "$QT4_VERSION" -a "$HAVE_GL" = yes -a "$HAVE_GLU" = yes -a "$HAVE_QGL" = yes -a "$HAVE_QWT" = yes])
+
+AM_CONDITIONAL(IS_FALSE,      [test "x" = "y"])
+AM_CONDITIONAL(IS_TRUE,       [test "x" = "x"])
+
+AM_COND_IF(HAS_FITS,  [AC_DEFINE(HAVE_FITS)], )
+AM_COND_IF(HAS_ROOT,  [AC_DEFINE(HAVE_ROOT)], )
+AM_COND_IF(HAS_ZLIB,  [AC_DEFINE(HAVE_ZLIB)], )
+AM_COND_IF(HAS_NOVA,  [AC_DEFINE(HAVE_NOVA)], )
+AM_COND_IF(HAS_DBUS,  [AC_DEFINE(HAVE_DBUS)], )
+AM_COND_IF(HAS_SQL,   [AC_DEFINE(HAVE_SQL)],  )
+AM_COND_IF(HAS_V8,    [AC_DEFINE(HAVE_V8)],   )
+AM_COND_IF(HAS_MAILX, [AC_DEFINE(HAVE_MAILX)],)
+
+##########################################################################
+# print summary
+##########################################################################
+
+AC_OUTPUT
+
+AC_MSG_NOTICE()
+AC_MSG_NOTICE(============================== summary =============================)
+AC_MSG_NOTICE()
+AC_MSG_NOTICE([ CFLAGS   = $CFLAGS])
+AC_MSG_NOTICE()
+AC_MSG_NOTICE([ CXXFLAGS = $CXXFLAGS])
+AC_MSG_NOTICE()
+AC_MSG_NOTICE([ CPPFLAGS = $CPPFLAGS])
+AC_MSG_NOTICE()
+AC_MSG_NOTICE([ LDFLAGS  = $LDFLAGS])
+AC_MSG_NOTICE()
+AC_MSG_NOTICE(--------------------------------------------------------------------)
+AC_MSG_NOTICE()
+AC_MSG_NOTICE([ BOOST_CPPFLAGS = $BOOST_CPPFLAGS])
+AC_MSG_NOTICE([ BOOST_LDFLAGS  = $BOOST_LDFLAGS])
+AC_MSG_NOTICE()
+AM_COND_IF(HAS_SQL, [
+   AC_MSG_NOTICE(--------------------------------------------------------------------)
+   AC_MSG_NOTICE()
+   AC_MSG_NOTICE([ MYSQLPP_INC_DIR = $MYSQLPP_INC_DIR])
+   AC_MSG_NOTICE([ MYSQLPP_LIB_DIR = $MYSQLPP_LIB_DIR])
+   AC_MSG_NOTICE()
+],[])
+AM_COND_IF(HAS_QT4, [
+   AC_MSG_NOTICE(--------------------------------------------------------------------)
+   AC_MSG_NOTICE()
+   AC_MSG_NOTICE([ QT4_VERSION  = $QT4_VERSION])
+   AC_MSG_NOTICE()
+   AC_MSG_NOTICE([ QT4_LIB      = $QT4_LIB])
+   AC_MSG_NOTICE([ QT4_LDFLAGS  = $QT4_LDFLAGS])
+   AC_MSG_NOTICE([ QT4_INCLUDES = $QT4_INCLUDES])
+   AC_MSG_NOTICE()
+   AC_MSG_NOTICE([ MOC4 = $MOC4])
+   AC_MSG_NOTICE([ UIC4 = $UIC4])
+   AC_MSG_NOTICE([ RCC4 = $RCC4])
+   AC_MSG_NOTICE()
+],[])
+AM_COND_IF(HAS_ROOT, [
+   AC_MSG_NOTICE(--------------------------------------------------------------------)
+   AC_MSG_NOTICE()
+   AC_MSG_NOTICE([ ROOTVERSION   = $ROOTVERSION])
+   AC_MSG_NOTICE()
+   AC_MSG_NOTICE([ ROOTEXEC      = $ROOTEXEC])
+   AC_MSG_NOTICE([ ROOTCONF      = $ROOTCONF])
+   AC_MSG_NOTICE([ ROOTCINT      = $ROOTCINT])
+   AC_MSG_NOTICE([ ROOTCPPFLAGS  = $ROOTCPPFLAGS])
+   AC_MSG_NOTICE([ ROOTLDFLAGS   = $ROOTLDFLAGS])
+   AC_MSG_NOTICE()
+],[])
+AC_MSG_NOTICE(--------------------------------------------------------------------)
+AC_MSG_NOTICE()
+AC_MSG_NOTICE([ zlib                   / 'zlib.h'           found: $HAVE_ZLIB])
+AC_MSG_NOTICE([ nova                   / libnova.so         found: $HAVE_NOVA])
+AC_MSG_NOTICE([ v8                     / 'v8.h' / libv8.so  found: $HAVE_V8])
+AC_MSG_NOTICE([ GL                     / GL/gl.h            found: $HAVE_GL])
+AC_MSG_NOTICE([ GLU                    / GL/glu.h           found: $HAVE_GLU])
+AC_MSG_NOTICE([ QtOpenGL               / QtOpenGL/QGLWidget found: $HAVE_QGL])
+AC_MSG_NOTICE([ Qwt                    / qwt_plot.h         found: $HAVE_QWT])
+AC_MSG_NOTICE([ cfitsio                / 'fitsio.h'         found: $HAVE_CFITSIO])
+AC_MSG_NOTICE([ CCfits                 / 'CCfits/CCfits'    found: $HAVE_CCFITS])
+AM_COND_IF(HAS_SQL,
+   AC_MSG_NOTICE([ MySQL/MySQL++          / 'mysql++.h'        found: yes]),
+   AC_MSG_NOTICE([ MySQL/MySQL++          / 'mysql++.h'        found: no])
+)
+AC_MSG_NOTICE([ DBus-1, DBus-glib-1    / pkg-config         found: $HAVE_DBUS])
+AM_COND_IF(HAS_LIBXP,
+   AC_MSG_NOTICE([ Motif/lesstif          / 'Xm/Xm.h' 'libXp'  found: yes]),
+   AC_MSG_NOTICE([ Motif/lesstif          / 'Xm/Xm.h' 'libXp'  found: no])
+)
+
+AM_COND_IF(HAS_LIBXP,
+   AC_MSG_NOTICE([ Motif/lesstif          / 'Xm/Xm.h' 'libXp'  found: yes]),
+   AC_MSG_NOTICE([ Motif/lesstif          / 'Xm/Xm.h' 'libXp'  found: no])
+)
+AM_COND_IF(HAS_COLORDIFF,
+   AC_MSG_NOTICE([ colored svn diff       / 'colordiff'        found: yes]),
+   AC_MSG_NOTICE([ colored svn diff       / 'colordiff'        found: no])
+)
+AM_COND_IF(HAS_JSDOC,
+   AC_MSG_NOTICE([ JavaScript docu        / 'jsdoc'            found: yes]),
+   AC_MSG_NOTICE([ JavaScript docu        / 'jsdoc'            found: no])
+)
+AM_COND_IF(HAS_V8,[
+   AM_COND_IF(HAS_MAILX,
+      AC_MSG_NOTICE([ Mail support           / 'mailx'            found: yes]),
+      AC_MSG_NOTICE([ Mail support           / 'mailx'            found: no])
+   )
+])
+
+AM_COND_IF(HAS_HELP2MAN,[
+   AC_MSG_NOTICE([ man-pages enabled      / 'help2man'         found: $HELP2MAN])
+   AM_COND_IF(HAS_GROFF,
+      AC_MSG_NOTICE([ build of html enabled  / 'groff'            found: yes])
+      AC_MSG_NOTICE([ build of pdf  enabled  / 'ps2pdf'           found: $PS2PDF]),
+      AC_MSG_NOTICE([ build of html and pdf  / 'groff'            found: no])
+   )
+],[
+   AC_MSG_NOTICE([ man, html, pdf enabled / 'help2man'         found: no])
+])   
+
+AM_COND_IF(HAS_DOXYGEN,
+   AC_MSG_NOTICE([ doxygen docu enabled   / 'doxygen'          found: $DX_DOXYGEN]),
+   AC_MSG_NOTICE([ doxygen docu enabled   / 'doxygen'          found: no])
+)
+AM_COND_IF(HAS_DOT,
+   AC_MSG_NOTICE([ doxygen graphs enabled / 'dot' (graphviz)   found: $DX_DOT]),
+   AC_MSG_NOTICE([ doxygen graphs enabled / 'dot' (graphviz)   found: no])
+)
+AM_COND_IF(HAS_QT4,
+   AC_MSG_NOTICE([ QT4 support enabled    /  QT4 toolkit       found: yes]),
+   AC_MSG_NOTICE([ QT4 support enabled    /  QT4 toolkit       found: no])
+)
+AC_MSG_NOTICE([ ROOT support enabled   /  root >= 5.12/00   found: $ROOTEXEC])
+AM_COND_IF(HAS_ROOT_QT,
+   AC_MSG_NOTICE([ ROOT built with --with-qt                   found: yes]),
+   AC_MSG_NOTICE([ ROOT built with --with-qt                   found: no])
+)
+AC_MSG_NOTICE()
+AC_MSG_NOTICE(--------------------------------------------------------------------)
+AC_MSG_NOTICE()
+AC_MSG_NOTICE([Suggestions and hints:])
+AC_MSG_NOTICE()
+AC_MSG_NOTICE([ - Add 'V=1' to you make-call to switch on verbose output.])
+AC_MSG_NOTICE([ - Do not try to create man-pages with doxygen,])
+AC_MSG_NOTICE([   it does most probably not work.])
+AM_COND_IF(HAS_COLORGCC,,
+   AC_MSG_NOTICE([ - Install colorgcc to get colored compiler output.])
+)
+AC_MSG_NOTICE([ - If you send me a bug report about:])
+AC_MSG_NOTICE([   + configure: please attach the file config.log])
+AC_MSG_NOTICE([   + make: please send me the output of 'make V=1'])
+AC_MSG_NOTICE()
+AC_MSG_NOTICE(--------------------------------------------------------------------)
+AC_MSG_NOTICE()
+AC_MSG_NOTICE([Some interesting build targets:])
+AC_MSG_NOTICE()
+AC_MSG_NOTICE([ diff:          colored 'svn diff' if colordiff is installed])
+AM_COND_IF(HAS_HELP2MAN,[
+   AC_MSG_NOTICE([ program.man:   build man-page from 'program --help'])
+   AC_MSG_NOTICE([                (display with 'man ./program.man')])
+   AM_COND_IF(HAS_GROFF,[
+      AC_MSG_NOTICE([ program.html:  build html page from man-page])
+      AM_COND_IF(HAS_PS2PDF,
+         AC_MSG_NOTICE([ program.pdf:   build pdf documentation from man page])
+      )
+   ])
+])
+AM_COND_IF(HAS_DOXYGEN,
+   AC_MSG_NOTICE([ doxygen-run:   build html documentation with doxygen])
+#   AC_MSG_NOTICE([ doxygen-doc:   build html and pdf documentation with doxygen])
+)
+AM_COND_IF(HAS_JSDOC,
+   AC_MSG_NOTICE([ jsdoc:         build JavaScript documentation with jsdoc])
+)
+AC_MSG_NOTICE([ doc:           build all buildable documentation])
+AC_MSG_NOTICE()
+AC_MSG_NOTICE(--------------------------------------------------------------------)
+AC_MSG_NOTICE()
+AM_COND_IF(HAS_ZLIB,, 
+   AC_MSG_WARN([ zlib not found. Support for reading .fits.gz disabled.])
+)
+AM_COND_IF(HAS_LIBXP,, 
+   AC_MSG_WARN([ Motif/lesstif not found. The dim gui did will not be built!])
+)
+AM_COND_IF(HAS_FITS,, 
+   AC_MSG_WARN([ FITS support disabled. cfitsio/CCfits missing!])
+)
+AM_COND_IF(HAS_ROOT,  
+   [AM_COND_IF(HAS_ROOT_QT,, 
+      AC_MSG_WARN([ root found but it was built without the --with-qt option])
+   )]
+)
+AM_COND_IF(HAS_QT4,, AC_MSG_WARN([ QT4 missing - GUIs disabled!]))
+AM_COND_IF(HAS_GL,,  AC_MSG_WARN([ GL not found - GUIs will be disabled.]))
+AM_COND_IF(HAS_GLU,, AC_MSG_WARN([ GLU not found - GUIs will be disabled.]))
+AM_COND_IF(HAS_QGL,, AC_MSG_WARN([ QtOpenGl not found - GUIs will be disabled.]))
+AM_COND_IF(HAS_QWT,, AC_MSG_WARN([ Qwt not found - viewer will be disabled.]))
+AM_COND_IF(HAS_GUI, [], 
+      AC_MSG_WARN([ Either of the necessary packages not found - fact GUI disabled!])
+)
+AM_COND_IF(HAS_VIEWER, [], 
+      AC_MSG_WARN([ Either of the necessary packages not found - viewer GUI disabled!])
+)
+AM_COND_IF(HAS_JSDOC,,   AC_MSG_WARN([ JavaScript documentation disabled!]))
+AM_COND_IF(HAS_SQL,,     AC_MSG_WARN([ database support globally disabled!]))
+AM_COND_IF(HAS_NOVA,,    AC_MSG_WARN([ libnova missing - smartfact will be compiles without astronomy support!]))
+AM_COND_IF(HAS_V8,,      AC_MSG_WARN([ libv8 missing - JavaScript support will be disabled!]))
+AM_COND_IF(HAS_DBUS,,    AC_MSG_WARN([ DBus libraries missing - skypeclient will not be compiled!]))
+AC_MSG_NOTICE()
Index: branches/testFACT++branch/dim/LICENSE.GPL
===================================================================
--- branches/testFACT++branch/dim/LICENSE.GPL	(revision 18277)
+++ branches/testFACT++branch/dim/LICENSE.GPL	(revision 18277)
@@ -0,0 +1,20 @@
+DIM - Distributed Information Management System
+
+Copyright (C) 1993 CERN
+Author: C. Gaspar (clara.gaspar@cern.ch)
+
+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 at:
+http://www.opensource.org/licenses/gpl-license.html
+
+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
+
Index: branches/testFACT++branch/dim/README.txt
===================================================================
--- branches/testFACT++branch/dim/README.txt	(revision 18277)
+++ branches/testFACT++branch/dim/README.txt	(revision 18277)
@@ -0,0 +1,112 @@
+
+                    DIM version 9.8 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 908
+	(version 9.8).
+  
+Changes for version 9.0:
+
+   In order to increase the compatibility between Windows and Linux and
+   to respect CVS rules the following modifications have been done:
+
+      - C++ files have been renamed from .cc to .cxx and include files from
+	.hh to .hxx
+
+      - Include files are in "./dim" directory
+        (Source files are now in the "./src" directory)
+
+      - Windows executables and libraries are in "./bin"
+      - Linux executables and libraries are "./linux"
+
+      - Windows developper studio setting are in "./Visual"
+      - Linux Makefiles are in the top directory
+
+Changes for version 9.1:
+
+    Fixed some "Harp" problems:
+      - Fixed a bug causing a loop in the timer handling 
+      - Optimized dns connection handling for many services
+      - Fixed a re-connection bug for clients 
+      
+Changes for version 9.2:
+
+      - Created the static methods:
+		DimServer::autoStartOff();
+		DimServer::autoStartOn();
+	Which prevents/allows DimServices to be declared to the Name Server as
+	soon as they are created. if "autoStart" is set Off the user has to call
+	DimServer::start(char *serverName) when all services have been declared.
+	By default autoStart is On
+
+Changes for version 9.3:
+
+      - Created a new Utility: DimBridge - It forwards DIM Services (and Commands)
+	from one Name Server to another (to bypass firewalls)
+      - Fixed a bug in tcpip.c - which prevents a DIM Server to send test messages to
+	himself (related to the above utility).
+
+Changes for version 9.4:
+
+      - Merged DID and XDID (DID should now work on all UNIX flavours)
+      - Allow users to select the ethernet interface (or to specify a complete 
+        ipname, with the domain, when not available by default):
+		setenv DIM_HOST_NODE <ipname>
+	Before starting up a DIM server 
+ 
+Changes for version 9.5:
+
+      - Added an environment variable DIM_DNS_PORT allowing users to specify a
+	different port number (default is 2505) for the DNS. This allows 
+	starting more than one DIM Name Servers (DNSs) on the same machine.
+      - Accomodated for a Solaris "feature": ioctl FIONREAD which should 
+        return the number of bytes waiting to be read on a socket sometimes 
+	returns '0' when there are bytes to read. This provoked undesired 
+        "disconnections" in BaBar.
+      - Fixed a bug related to the padding of structures (characters following
+        an odd number of shorts)
+      - Fixed a bug in the retry mechanism when writting to a full socket. The
+        problem appeared when the connection was killed while retrying.
+      - Did (Unix/Linux version) now allows sending formatted commands (i.e. 
+        structures) to a server. Also services are now visualised in a 
+	formatted manner.
+
+Changes for version 9.6:
+      - Fixed DID: it crashed when a server name was very big (Motif) and
+        it didn't remove servers that died while being in error (red).
+      - Fixed a bug in the client library: sometimes services where requested
+	from the name server more than once unnecessarily.
+      - Fixed a bug in the server library: Sometimes the server crashed if it 
+	was updating a service when the client was killed or died.
+
+Changes for version 9.7
+      - Fixed a bug introduced in version 9.6 (related to the last point).
+        Sometimes servers would leave some connections open and started using
+        all the CPU (involves dis.c and tcpip.c).
+      - Upgraded DID to support very long server names.
+
+Changes for version 9.8
+      - Fixed a bug in DID: it crashed when a service name to be viewed was
+        typed in by hand
+      - Fixed a bug in dis.c: Servers would not register their services with 
+        the DNS if the number of services was a multiple of 100.
+ 
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
+
+
+
Index: branches/testFACT++branch/dim/README_v10.txt
===================================================================
--- branches/testFACT++branch/dim/README_v10.txt	(revision 18277)
+++ branches/testFACT++branch/dim/README_v10.txt	(revision 18277)
@@ -0,0 +1,88 @@
+
+                    DIM version 10.5 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 1005
+	(version 10.05).
+
+25/4/2002
+Changes for version 10.0:
+      - All source files are now common to Windows and Unix flavours 
+	(Linux included). Directories src/win and src/unix no longer 
+	necessary.
+      - Fixed hopefully all compiler warnings (especially on Solaris 8).
+      - In order to avoid potential deadlocks all tcpip writes (dna_write)
+	are done by a separate thread (the timer thread, via a special 
+	"immediate" queue). Except service updates and sending commands
+	(dna_write_nowait) since they are not blocking and to preserve
+	backward behaviour compatibility.
+      - Optimized servers, clients and the name servers for large number
+	of services
+      - Modified error messages to be more explicit
+
+01/5/2002
+Changes/Bug Fixes for Version 10.1:
+      - Fixed the DimRpc class, it would hang sometimes.
+      - Fixed a problem in the "immediate" timer handler (too slow)
+      - Added "const" to service names in DimInfo and DimService methods
+      - changed print_date_time to dim_print_date_time and made it 
+	available to users
+      - Open_dns didn't always return the correct value (DID wouldn't
+	reconnect to Dns on restart)
+      - Did (on Linux) now shows services in alphabetical order
+
+06/5/2002 
+Changes/Bug Fixes for Version 10.2:
+      - Fixed dtq.c and tcpip.c for Linux, dim_wait() would not always
+	return when required
+      - The distribution kit now also contains the shareable version of
+	the DIM library for Linux - libdim.so
+	The makefiles use the shareable version for creating Dns, Did 
+	and the examples (.setup adds dim/linux to LD_LIBRARY_PATH)  
+
+27/5/2002 
+Changes/Bug Fixes for Version 10.3:
+      - Changed dim include files not to include "windows.h" under
+	windows. This was causing a conflict with Gaudi.
+	(Had to change "DIM semaphores" from macros to subroutines)
+  
+18/7/2002 
+Changes/Bug Fixes for Version 10.4:
+      - Two consecutive client requests for the same service would not 
+	implement the "stamped" flag properly (dic.c)
+      - The DimBrowser class would not retreive service names containing
+	the character "@". Fixed.
+      - Re-fixed a bug that would make servers crash when clients exited
+	while servers were updating a service (dis.c).
+      - dtq_start_timer() did not always wait the requested amount of time.
+      - Did (Linux version) now also prints timestamp and quality flag
+	when Viewing service contents.
+  
+19/8/2002
+Changes/Bug Fixes for Version 10.5:
+      - Fixed DID for Solaris (had stopped working, Motif changed?) 
+      - Fixed a nasty bug that must have been there forever:
+	Several DIM processes (clients and Dns) execute at regular 
+	intervals a "test write" on open connections to find out the status
+	of the connection. These test writes where never cancelled when the
+	connection was closed. (noticed on Solaris/BaBar).
+
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
+
+
+
Index: branches/testFACT++branch/dim/README_v11.txt
===================================================================
--- branches/testFACT++branch/dim/README_v11.txt	(revision 18277)
+++ branches/testFACT++branch/dim/README_v11.txt	(revision 18277)
@@ -0,0 +1,96 @@
+
+                    DIM version 11.7 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 1107
+	(version 11.07).
+
+23/8/2002
+Changes for version 11.0:
+      - Made Did (Solaris and Linux) run single threaded (to fix some
+	strange behaviour of Motif) 
+      - Created an "util" directory under "src". To keep DIM utilities.
+	Modified all makefiles and Visual Studio accordingly
+
+08/9/2002
+Changes for version 11.1:
+      - Fixed dnsExists on Solaris. Now dtq.c uses select instead of 
+	usleep (usleep is not thread safe). 
+
+12/9/2002
+Changes for version 11.2:
+      - dim_send_command and dim_get_service utilities where hanging on 
+	windows - fixed.  
+
+22/10/2002
+Changes for version 11.3:
+      - Replaced usleep by select in Did (linux), it was creating a 
+	deadlock with signals. (Did is not multithreaded because of 
+	Motif)
+      - Fixed two bugs in Dns - one is a design flaw, it was creating 
+	too many timer entries unnecessarily and using a lot of CPU 
+	(just to update did).
+	The second happened when a server tried to declare an existing 
+	service. The Dns correctly tried to kill the server, but if the 
+	server didn't die than the Dns would keep the connection busy 
+	instead of disconnecting it.
+      - The feature whereby a server disconnects after a timeout from a 
+	hanging (not consuming the data from the socket) client, in order 
+	to avoid the server hanging himself, had been commented out by
+	mistake. It's now back. 
+
+23/10/2002
+Changes for version 11.4:
+      - Related to the disconnection feature above. Replaced usleep by
+	select (with a timeout) when writing to a client. The default
+	timeout for a server to disconnect from a hanging client is now 
+	5 seconds. But it can be changed (or checked) by using:
+		- void dim_set_write_timeout(int secs)
+		- int dim_get_write_timeout()
+		or
+		- DimServer::setWriteTimeout(int secs);
+		- int DimServer::getWriteTimeout();
+ 
+31/10/2002
+Changes for version 11.5:
+      - Allowed tcpip writes to proceed in parallel with reads (in
+	different threads) in order to avoid deadlocks (this was 
+	previously protected by a semaphore).
+      - Removed old commented out code from all source files
+      (Note: These changes are not included in CVS tag v11r6)
+
+06/11/2002
+Changes for version 11.6:
+      - The Dns "forgot" to stop the test_write timer when a server
+	went into error. Fixed.
+
+25/11/2002
+Changes for version 11.7:
+      - Fixed some bugs in the RPC client implementation
+      - Created (and exported) a dim_usleep() routine based on select
+      - Implemented a dis_get_timeout(int service_id, int client_id) 
+	and a DimService::getTimeout(int client_id) which allows
+	servers to find out the timeout requested by a client
+      - When a server stopped serving a command using dis_remove_service
+	the client was not informed and continued using the "cached"
+	address instead of re-asking the name server. Fixed. 
+
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
+
+
+
Index: branches/testFACT++branch/dim/README_v12.txt
===================================================================
--- branches/testFACT++branch/dim/README_v12.txt	(revision 18277)
+++ branches/testFACT++branch/dim/README_v12.txt	(revision 18277)
@@ -0,0 +1,118 @@
+
+                    DIM version 12.11 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 1211
+	(version 12.11).
+
+13/2/2003
+Changes for version 12.0:
+      - Included Java support in the same distribution kit and updated
+	the documentation on the WEB.
+	In order to make a dim shareable library to be used from java
+	on linux:
+		setenv JDK_INCLUDE <your jdk include directory>
+		gmake JDIM=yes all
+	The libraries are distributed for windows and linux 7.3
+	The java part is in jdim to run some examples:
+		java -classpath .../jdim/classes dim.test.TestServer
+		java -classpath .../jdim/classes dim.test.TestClient
+20/3/2003
+Changes for version 12.1:
+      - Removed all references to iostream.h in DIM include files and
+	source files in order to support Linux RedHat 8.0 and gcc 3.2
+
+19/6/2003
+Changes for version 12.2:
+      - Fixed a bug in the DimTimer class
+      - Added a missing "destructor" for DimCommand in Java.
+
+23/6/2003
+Changes for version 12.2-1:
+      - Changed the directory structure under jdim to respect the Java 
+	conventions
+
+02/7/2003
+Changes for version 12.3:
+      - Fixed a bug that made clients crash when a server released a 
+	command service.
+	Added the possibility of sending mixed services in the Java
+	implementation.
+
+04/7/2003
+Changes for version 12.3-1:
+      - The Java version was not correct in the previous ZIP 
+	(the loading of jdim.dll was not done properly)
+
+24/7/2003
+Changes for version 12.4:
+      - Fixed a bug in Did related to the size of displayed services
+      - Fixed a memory leak when servers received commands
+
+01/8/2003
+Changes for version 12.5:
+      - Clients would sometimes crash when receiving data for a service 
+	which they had just released, fixed.
+      - Clients could also potencially crash when failing to write to a 
+	server that had just disconnected, fixed.
+
+20/8/2003
+Changes for version 12.6:
+      - Clients would crash when releasing the same service twice, 
+	fixed.
+      - Exported through JNI the possibility of protecting DIM critical 
+	sections, so that dim_lock and dim_unlock can be used from Java.
+
+26/8/2003
+Changes for version 12.7:
+      - A client would sometimes crash when releasing the service inside
+	the service's callback. Fixed.
+      - A client would also sometimes crash if it releasead a service while
+	still connecting to this service. I.e. if a dic_info_service was 
+	immediately followed by a dis_release_service. Fixed.
+      - The server could also crash or hang is still connecting to a client 
+	when the service was removed. Fixed
+      - Found and fixed a small memory lead (allocating ids)
+	
+01/9/2003
+Changes for version 12.8:
+      - Implemented "short" and "longlong" (64 bit integer) in the C++ version
+	of both, servers and clients.
+      - Implemented boolean, byte, short and long in the Java version. 
+	
+03/9/2003
+Changes for version 12.9:
+      - Protected dis_set_quality and dis_set_timestamp against bad service_ids.
+      - Alowed dis_stop_serving() to be called before any dis_start_serving(),
+	before it would crash. 
+
+05/9/2003
+Changes for version 12.10:
+      - dis_stop_serving would sometimes crash when called from dis_remove_service,
+	fixed. 
+
+25/9/2003
+Changes for version 12.11:
+      - dic_command_callback() would sometimes not send the command if the 
+	callback reception immediatelly terminated the program. I.e. 
+	dim_send_command might not actually send the command. Fixed.
+
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
+
+
+
Index: branches/testFACT++branch/dim/README_v13.txt
===================================================================
--- branches/testFACT++branch/dim/README_v13.txt	(revision 18277)
+++ branches/testFACT++branch/dim/README_v13.txt	(revision 18277)
@@ -0,0 +1,110 @@
+
+                    DIM version 13.10 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 1310
+	(version 13.10).
+
+06/10/2003
+Changes for version 13.0:
+      - Fixed all know bugs resulting from:
+	- A modification done since v12 which allowed tcpip writes to 
+	  proceed in parallel with reads (in a different thread). This 
+	  created a few problems with the timming of connections and 
+	  disconnections.
+	- Extensive tests of the Java interface to DIM due to the DIP
+	  implementation tests.
+
+14/10/2003
+Changes for version 13.1:
+      - Fixed an extra bug related to having servers and clients within
+	the same process.
+
+13/11/2003
+Changes for version 13.2:
+      - Fixed a bug in the RPC client - the size of the message was 
+	sometimes wrong.
+      - When the number of DIM services declared by a server was a
+        multiple of 100 the clients would not get updated on server
+	restart - Fixed.
+      - If a client exited immediately after a command with callback
+        The server would sometimes not get the command - hopefully
+	fixed. 
+	Note: This is still the case for a command without callback 
+	(this is a feature of the asynchronous method). 
+
+2/12/2003
+Changes for version 13.3:
+      - Fixed the linux makefile (realclean).
+      - the C++ version of stop timer now returns the number of seconds 
+	left to sleep (used to be void).
+ 
+13/01/2004
+Changes for version 13.4:
+      - The DNS now accepts an environment variable "DIM_DNS_ACCEPTED_DOMAINS".
+	It will refuse connections from servers running outside these domains
+	(actually, at the moment it will kill the servers -> to be modified).
+	Ex.: DIM_DNS_NODE=cern.ch,slac.stanford.edu
+      - the Java version now implements a DimBrowser class, similar to the C++ 
+	one. And the complex data types are better handled.
+ 
+27/01/2004
+Changes for version 13.5:
+      - A socket close modification since v12r8 for Linux was causing problems,
+	put back as it was.
+      - dim_send_command had a limitation to 80 characters for a DIM service
+	name for no reason. DIM service names are limited to 128 characters.
+
+28/01/2004
+Changes for version 13.6:
+      - When sending an EXIT command to a server the client wouldn't behave
+	properly on Linux - fixed 
+
+30/01/2004
+Changes for version 13.7:
+      - Commands would sometimes be remembered by a client and sent later when
+	the server started up - fixed!
+
+06/02/2004
+Changes for version 13.8
+      - The Name server would only remember server names up to 40 characters,
+	so when asked for the list of servers known it would truncate the names.
+	Fixed.
+      - The handling of disconnections/reconnections for very "fast" servers was
+	causing problems to the client: callback not called or reconnection failed.
+	fixed.
+
+27/02/2004
+Changes for version 13.9
+      - Replaced "ctime()" in dim_print_date_time() by its reentrant version ctime_r
+	for the Linux version.
+      - Added selectiveUpdateService() to the methods in the Java class DimService.
+      - The user set server timestamp was being reset (and replaced by the current
+	time) if the service was sent to several clients - Fixed.
+      - Sometimes DIM commands could go out of order if a client was sending the same
+	command (different data) out very fast - fixed.
+
+16/03/2004
+Changes for version 13.10
+      - Fixed the DimBrowser Java class
+      - The timer thread was sometimes not counting time properly when interrupted
+	every second -> fixed.
+      - The Client sometimes forgot to call the command callback when the DNS died
+	while sending a command with callback -> fixed. 
+
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
Index: branches/testFACT++branch/dim/README_v14.txt
===================================================================
--- branches/testFACT++branch/dim/README_v14.txt	(revision 18277)
+++ branches/testFACT++branch/dim/README_v14.txt	(revision 18277)
@@ -0,0 +1,290 @@
+
+                    DIM version 14.07 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 1407
+	(version 14.07).
+
+07/04/2004
+Changes for version 14.0:
+      - Spring Cleanup
+	Cleaned up inline methods out of include files.
+	Fixed some virtual destructors
+	Removed some unnecessary system include files
+	Fixed ctime_r to work on all platforms (Solaris, LynxOS too)
+
+21/04/2004
+Changes for version 14.1:
+      - Now if a server declares an exit handler (DimServer::addExitHandler
+	or dis_add_exit_handler) the user is responsible for exiting.
+	DIM will not exit by itself anymore.
+      - The windows version now also distributes MSVCRTD.DLL.
+      - Fixed a bug where servers could get confused if similar longish
+	service names were used in different servers.   
+
+18/05/2004
+Changes for version 14.2:
+      - Cleaned up some "C" warnings
+      - Linux Did didn't display RPC formats properly - fixed.
+      - RPC structures were not transfered correctly back to the client,
+	the format of the structure was currupted - fixed.
+      - Added a New constructor and updateService method for the Java class 
+	DimService. These allow the creation and update of a DimService by
+	passing another DimService. The data and format of the DimService
+	will be copied to the new one. Usefull for structured data.
+
+02/06/2004
+Changes for version 14.2-1:
+      - Fixed a bug in the java version that would make DIP crash when 
+	extracting data items (file format.java)
+
+12/06/2004
+Changes for version 14.3:
+
+      - DIM Server Exit_handler: A server can specify an exit handler
+	by using:
+		dis_add_exit_handler(exitHandler) or 
+		DimServer::addExitHandler()/virtual void exitHandler()
+	The exitHandler will be called in the following conditions:
+		- DNS node undefined
+		- Services already declared in DNS
+		- DNS doesn't accept connections from this machine
+		- An EXIT command from a client
+	If the user doesn't declare an exit handler, the DIM server will
+	exit, otherwise it is up to the user.
+
+      - DIM Error_handler: A server or a client can specify an error_handler
+	by using:
+		dis_add_error_handler(errorHandler)
+		dic_add_error_handler(errorHandler) 
+		DimServer::addErrorHandler()/virtual void errorHandler(...)
+		DimClient::addErrorHandler()/virtual void errorHandler(...) 
+	The error_handler will be called whenever DIM wants to report an 
+	error (in this case all stdout/stderr prints will be suppressed).
+	The errorHandler is called with the following parameters:
+		int severity:
+			0: info
+			1: warning
+			2: error
+			3: fatal
+		int error_code
+			possible codes listed in dim_common.h
+		char *msg
+	If the user declared an error handler for a server and an error with
+	severity = fatal is received the exit handler will also be called.
+	For a client if an error with severity = fatal is received and there
+	is no error handler declared the process will exit.
+
+      - Java DIM: the same functionality is available in the form of a 
+	DimErrorHandler class and a DimExitHandler class which can be used as 
+	in the example:
+	public static void main(String[] args) {
+		DimErrorHandler erid = new DimErrorHandler()
+		{
+			public void errorHandler(int severity, int code, String msg)
+			{
+				System.out.println("Error: "+msg+" sev: "+
+					severity);
+			}
+		};
+		DimExitHandler exid = new DimExitHandler()
+		{
+			public void exitHandler(int code)
+			{
+				System.out.println("Exit: "+code);
+			}
+		};
+		...
+
+      - Getting and Setting the DIM_DNS_NODE from a program:
+	The calls:
+		dim_set_dns_node
+		dim_get_dns_node 
+        and the corresponding C++ calls:
+		DimServer::setDnsNode and DimServer::getDnsNode, 
+		DimClient::setDnsNode and DimClient::getDnsNode
+ 	already existed, 
+	they have now been complemented with:
+		dim_set_dns_port
+		dim_get_dns_port
+	and the static C++ calls: 
+		DimServer::setDnsNode(node, port),DimServer::getDnsPort(), 
+		DimClient::setDnsNode(node, port), DimClient::getDnsPort()
+
+      - In Java the folowing methods have been added to the classes DimServer
+	and DimClient:	
+		public static void setDnsNode(String nodes);
+		public static void setDnsNode(String nodes, int port);
+		public static String getDnsNode();
+		public static int getDnsPort();
+
+      - the Java method DimService.getName() has been added.
+
+      - In C++ the creation of a new DimService could fail, for example, if
+	the service already existed in this server, this was not reported, since
+	a constructor can't return a value.
+	With the new error handling mechanisms, a user can declare an error_handler,
+	check if the error code is DIMSVCDUPLC and generate an exception which
+	will be thrown withing the DimService creation.
+      - Dim used to pass timestamps between servers and clients as an integer
+	for seconds since January 1970 and a short for milliseconds.
+	Now it will be one integer also for the milliseconds. By default DIM
+	still uses milliseconds, but if a server passes nanoseconds to 
+	dis_set_timestamp the client will receive nanoseconds when doing 
+	dic_get_timestamp.
+
+08/07/2004
+Changes for version 14.4:
+
+      - Java DIM: In order to allow a different error handler to be called for the
+	server and the client (if both in the same process) The calls:
+		DimServer.addErrorHandler(DimErrorHandler handler) and 
+		DimClient.addErrorHandler(DimErrorHandler handler)
+	Should be called respectively by the server or the client in order to install
+	the Error Handler. For compatibitlity, the call:
+		DimServer.addExitHandler(DimErrorHandler handler)
+	was also added. 
+ 
+	They can now be used as in the example (for a server):
+	public static void main(String[] args) {
+		DimErrorHandler erid = new DimErrorHandler()
+		{
+			public void errorHandler(int severity, int code, String msg)
+			{
+				System.out.println("Error: "+msg+" sev: "+
+					severity);
+			}
+		};
+		DimServer.addErrorHandler(erid);
+		DimExitHandler exid = new DimExitHandler()
+		{
+			public void exitHandler(int code)
+			{
+				System.out.println("Exit: "+code);
+			}
+		};
+		DimServer.addExitHandler(exit);
+		...
+
+      - In a server it was already possible to find out inside a callback (for example
+	when a command was received):
+	    - from which client id the message came:
+		int dis_get_conn_id()
+            - The name of this client in the form <pid>@<node_name>
+		int dis_get_client(char *name)
+	The equivalent C++ calls:
+	    	int DimServer::getClientId();
+		char *DimServer::getClientName();
+	And Java calls:
+	    	int DimServer.getClientId();
+		String DimServer.getClientName();
+	Where also available.
+
+	These calls were now complemented in 3 ways:
+	1 - They can be done also by clients to find out which server is providing a service
+	    inside a callback (for example when a service is received).
+	    For this purpose the following "C" calls where added:
+	    - from which server id the message came:
+		int dic_get_conn_id()
+            - The name of this server in the form <server_name>@<node_name>
+		int dic_get_server(char *name)
+	      And The equivalent C++ calls:
+	    	int DimClient::getServerId();
+		char *DimClient::getServerName();
+	      And Java calls:
+	    	int DimClient.getServerId();
+		String DimClient.getServerName();
+	2 - These calls are also available inside the errorHandler callbacks.
+	    Can be used to find out if the error originated from a specific connection, 
+            in which case conn_id (or clientID or ServerId) != 0. 
+	    Or if it is a generic error, afecting all connections in which case conn_id = 0.
+	3 - A new type of calls has been added which allows to find out:
+	    For a server - which services are being used by the current client (i.e. the
+	    		   client that triggered the execution of this callback)
+	    For a client - Which services are being provided by the current server (i.e
+			   the server that triggered the execution of this callback)
+
+	    This calls are the following in "C":
+		- char *dis_get_client_services(conn_id)
+		- char *dic_get_server_services(conn_id)
+		They return a list of services separated by '\n'
+	    In C++:
+		- char **DimServer::getClientServices();
+		- char **DimClient::getServerServices();
+		They return an array of pointers to service names. The array is terminated by
+		a null pointer.
+	    In Java:
+		- String[] DimServer.getClientServices();
+		- String[] DimClient.getServerServices();
+
+	An example in C++ of the usage of the new calls in an ErrorHandler:
+
+	class ErrorHandler : public DimErrorHandler
+	{
+		void errorHandler(int severity, int code, char *msg)
+		{
+			int index = 0;
+			char **services;
+			cout << severity << " " << msg << endl;
+			services = DimClient::getServerServices();
+			cout<< "from "<< DimClient::getServerName() << " services:" << endl;
+			while(services[index])
+			{
+				cout << services[index] << endl;
+				index++;
+			}
+		}
+	public:
+		ErrorHandler() {DimClient::addErrorHandler(this);}
+	};
+
+	And in Java:
+
+	...
+	DimErrorHandler eid = new DimErrorHandler()
+	{
+		public void errorHandler(int severity, int code, String msg)
+		{
+			System.out.println("Error: "+msg+" sev: "+severity);
+			String[] list = DimClient.getServerServices();
+			System.out.println("Services: ");
+			for(int i = 0; i < list.length; i++)
+				System.out.println(list[i]);
+		}
+	};
+	DimClient.addErrorHandler(eid);
+
+02/08/2004
+Changes for version 14.5:
+    - Fixed a bug in dic.c - related to commands terminating after a connection was closed,
+      affected in particular DimBrowser "RPC" calls. 
+
+02/08/2004
+Changes for version 14.6:
+    - Noticed that since the changes of version v14r4 the Dns was not printing any error
+      messages anymore - Fixed.
+    - In Windows SO_REUSEADDR doesn't work properly, so two DNSs could be running at the 
+      same time using the same port number on the same PC - Fixed, now like in Linux, the
+      second one exits (printing an error message).
+
+10/08/2004
+Changes for version 14.7:
+    - The TCPIP error "Host Unknown" was not treated or reported properly. A client could
+      report DNS found when the DNS node was set to be an unexisting machine - fixed.
+
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
Index: branches/testFACT++branch/dim/README_v15.txt
===================================================================
--- branches/testFACT++branch/dim/README_v15.txt	(revision 18277)
+++ branches/testFACT++branch/dim/README_v15.txt	(revision 18277)
@@ -0,0 +1,229 @@
+
+                    DIM version 15.23 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 1523
+	(version 15.23).
+
+17/09/2004
+Changes for version 15.0:
+    - Changes for 64 bit machine (LP64 architecture) support
+	- All DIM "tags" are now longs instead of ints this affects:
+	    - Client callback parameters
+	    - Server callback parameters
+	    - Timer callback parameters
+	  (The reason is: tags were very often user to pass pointers) 
+	- DIM is now compiled with -fPIC by default on Linux
+	- The byte swapping and structure padding was fixed.
+
+14/10/2004
+Changes for version 15.1:
+    - Big Bug Fixed affecting the DIM_DNS for windows!!!!
+	- Windows has an hidden default limit of the number of sockets
+	  per process set to 64, only partially though, more sockets can
+	  be created with no problem but they are silently masked out
+          by the select call!
+	- Anyway this limit is now set to 1024.
+    - removed a few print statements.
+
+28/10/2004
+Changes for version 15.2:
+    - Removed some C++ style comments which did not compile on Solaris.
+
+02/11/2004
+Changes for version 15.3:
+    - Byte swapping was missing in one place when asking for stampped 
+      services (noticed on Solaris)
+
+11/11/2004
+Changes for version 15.4:
+    - Added two command line options to dim_send_command:
+	dim_send_command <cmnd_name> [<data>] [-dns <dim_dns_node>] [-s]
+        -dns allows setting the dim_dns_node, and -s means silent.      
+
+03/12/2004
+Changes for version 15.5:
+    - Changed the bahaviour of the DNS "KILL_SERVERS" command. Now if the
+      user declares a server exit_handler, the server will not exit (unless
+      the user code explicilty exits) and will continue running fine, 
+      otherwise the server exits as before.
+    - The exit_handler now gets as parameter the error code that caused the
+      exit request (so that the user can decide wether to exit or not) or 
+      the code sent by the client, if the EXIT request came from a client. 
+      As a result clients should not send exit codes lower than 0x100 in order 
+      not to be confused with the internal error codes.
+    - IMPORTANT NOTES:
+      - The behaviour of the user error_handler() changed. Now the
+	error_handler only gets called to report an error. If the user wants
+	to modify the automatic exit behaviour he/she has to also declare an
+	exit_handler. In previous versions if an error_handler was declared,
+	the exit_handler was not necessary.
+      - Also the Java version has changed since the ERROR codes changed.
+   
+07/12/2004
+Changes for version 15.5-1:
+    - Corrected a bug in include file dis.hxx introduced in v15r5
+
+08/12/2004
+Changes for version 15.6:
+    - Included support for Scheduling policies and priorities between DIM
+      threads by creating the calls:
+	- dim_set_scheduler_class(int sched_class)
+	- dim_get_scheduler_calss(int *sched_class)
+	- dim_set_priority(int dim_thread, int priority)
+	- dim_get_priority(int dim_thread, int priority)
+
+      These calls are only implemented on Linux and Windows and they have 
+      different behaviour on the two platforms:
+	- dim_set_scheduler_class(int sched_class)
+	On Windows:
+	  sched_class is the process's priority class:
+		-1 = IDLE_PRIORITY_CLASS
+		 0 = NORMAL_PRIORITY_CLASS
+		 1 = HIGH_PRIORITY_CLASS
+		 2 = REALTIME_PRIORITY_CLASS
+	On Linux:
+	  sched_class is the process's schedule policy:
+		 0 = SCHED_OTHER
+		 1 = SCHED_FIFO
+		 2 = SCHED_RR
+	  All threads in the process will be set to this sched_class
+	
+	- dim_set_priority(int dim_thread, int priority)
+	  where dim_thread : 1 - Main thread, 2 - IO thread, 3 - Timer thread
+	On Windows:
+	  priority is the thread's relative priority:
+		-3 = THREAD_PRIORITY_IDLE
+		-2 = THREAD_PRIORITY_LOWEST
+		-1 = THREAD_PRIORITY_BELOW_NORMAL
+		 0 = THREAD_PRIORITY_NORMAL
+		 1 = THREAD_PRIORITY_ABOVE_NORMAL
+		 2 = THREAD_PRIORITY_HIGHEST
+		 3 = THREAD_PRIORITY_TIME_CRITICAL
+
+	On Linux:
+	  priority is the thread's absolute priority:
+		 0 	for SCHED_OTHER
+		 1 - 99 for SCHED_FIFO or SCHED_RR
+
+03/02/2005
+Changes for version 15.7:
+    - Fixed a bug that made DIM servers crash when unplugging for a short time the
+      network cable.
+    - Linux executables and libraries are now compiled on Linux SLC3 with gcc 3.2.3
+    - Contains a new version of the DIM Tree Browser for WIndows. 
+
+02/03/2005
+Changes for version 15.8:
+    - Contains again a new version of the DIM Tree Browser for WIndows, now allows
+      to display structures correctly (Thanks to Serguei Sergueev). 
+    - DIM used old style predefined macros, for example linux instead of __linux__.
+      So it didn't compile when users used gcc/g++ -ansi -pedantic. Fixed.
+    - A check is now made on the length of a DIM service name. The service is 
+      discarded if the name is longer then 131 characters.
+
+04/04/2005
+Changes for version 15.9:
+    - Ported to MacOSX (Darwin). "OS" has to be defined as "Darwin":
+      	- Replaced ftime() by gettimeofday()
+	- Used sem_open instead of sem_init on Darwin. (sem_init not implemented).
+    - Made some order in the macro definition, so that it works whether for example 
+      unix or __unix__ are defined.
+    - Sometimes when a server received a command, the connection to the client wasn't
+      completely setup yet, so DimServer::getClientName() would not return the correct
+      result - Fixed.
+
+11/04/2005
+Changes for version 15.10:
+    - Fixed a memory leak that happened in clients when sending commands to a 
+      non-existing server.
+
+15/04/2005
+Changes for version 15.11:
+    - Optimized DIM for servers with many services (in particular the server library).
+    - Uses a better Hash function in Dns and servers.
+
+20/04/2005
+Changes for version 15.12:
+    - DIM did not update a service if it contained no data - fixed.
+
+22/04/2005
+Changes for version 15.13:
+    - Fixed a bug introduced in version 15.11, servers did not reconnect anymore
+      when the DNS restarted.
+
+02/05/2005
+Changes for version 15.14:
+    - Fixed several features or bugs related to the optimizations for many services:
+	- Sometimes a server declaring the same services would not exit properly
+	- If a browser was open it would slow down enourmously the start up of the 
+	  server
+	- A server sometimes crashed while declaring the services
+
+24/05/2005
+Changes for version 15.15:
+    - Fixed some warnings reported by "valgrind" mostly related to delete[]
+
+30/05/2005
+Changes for version 15.16:
+    - Fixed a bug related to a server name longer than 40 characters.
+
+16/06/2005
+Changes for version 15.17:
+    - Included the call keepWaiting() in DimRpcInfo. To allow multiple client
+      RPCs to use the same Server RPC (the user still has to provide an id).
+
+20/06/2005
+Changes for version 15.18:
+    - Included support for creating user threads:
+	- From "C":
+		int dim_start_thread(void (*thread_ast)(), long tag)
+	- From C++:
+		class DimThread
+		{
+		public:
+			DimThread();
+			virtual ~DimThread();
+			int start();
+			virtual void threadHandler() { };
+		};
+
+27/06/2005
+Changes for version 15.19:
+    - Added the possibility to decide not to update a service in a server callback
+      by returning a negative size (to be used with care, since the client will
+      timeout if the server stops responding for too long).
+
+15/08/2005
+Changes for version 15.20:
+    - Fixed a bug which could make a DIM server loop forever (happened to tmSrv)
+
+19/08/2005
+Changes for version 15.21:
+    - Fixed a bug in the DNS introduced in version v15r7: would not report and react
+      properly, in some ocasions, to previously declared services.
+
+05/10/2005
+Changes for version 15.22:
+    - Fixed some error messages reported by the DNS, they were not correct.
+
+04/11/2005
+Changes for version 15.23:
+    - Fixed several bugs in the timer handling mechanisms. Could provoke fake timeouts.
+
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
Index: branches/testFACT++branch/dim/README_v16.txt
===================================================================
--- branches/testFACT++branch/dim/README_v16.txt	(revision 18277)
+++ branches/testFACT++branch/dim/README_v16.txt	(revision 18277)
@@ -0,0 +1,182 @@
+
+                    DIM version 16.14 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 1614.
+
+07/12/2007
+Changes for version 16.14:
+    - Now by default All DIM processes are ready to accept up to 8192 connections, both
+      in Linux and Windows. Although in Linux for this to be effective the machine system 
+      limits must allow more than 1024 descriptors/open files per process.
+    - Fixed a little memory leak in tokenstring.cxx
+    - And a little compilation bug for some platforms in tcpip.c 
+
+
+15/05/2007
+Changes for version 16.13:
+    - If DIM_HOST_NODE is defined when starting up a server, a DIM client will now try 
+      two network interfaces in order to talk to that server and only give up if they both 
+      fail. First it will try the ip name or ip address specified by the server using 
+      DIM_HOST_NODE, if that fails it will try the ip address of the default interface
+      retrieved by the server using gethostname (and gethostbyname).
+      The changes basically affect the case in which the DIM_HOST_NODE given to the servers
+      is specified as IP address instad of an IP name. Otherwise this mechanism was already 
+      working.
+
+
+3/05/2007
+Changes for version 16.12:
+    - The Java version did not exit properly when main() terminated - fixed.
+
+
+25/04/2007
+Changes for version 16.11:
+    - On Linux the timeout to detect a lost connections (unplugged ethernet cable
+      or machine reboot) was too long, around 15 minutes - Fixed.
+      On Linux the KEEPALIVE feature is now used instead of a regular socket write,
+      all other platforms should work as before.
+
+
+21/02/2007
+Changes for version 16.10:
+    - Found a bug in dis_stop_serving: one socket connection was not closed - fixed.
+    - Implemented a new environment variable for the DNS: DIM_DNS_ACCEPTED_NODES
+      Can receive a list on nodes or domains separated by commas.
+      If the DNS receives a connection from a node not in this list, it will
+      reject it and kill the server or client requesting it.
+    - Fixed some C++ warnings.
+
+
+19/01/2007
+Changes for version 16.9:
+    - The modifications done in version 16.8 have introduced a bug:
+	- DIM servers would not behave properly (exit) when receiving a kill command
+          from the DNS (for duplicated services, not allowed host names or manual "kill")
+	  This is now fixed.
+
+
+30/10/2006
+Changes for version 16.8:
+    - Modified dis_stop_serving() and DimServer::stop() to completely stop DIM:
+	- Stop also the DIM threads.
+	- Release all allocated memory
+	- Allow a different port number when re-starting.
+
+
+11/07/2006
+Changes for version 16.7:
+    - Prepared for increasing the number of open connections per process
+      (On Linux still requires changing some parameters and recompiling the Dns)
+    - Fixed one error and several warnings for gcc 4.
+
+
+11/05/2006
+Changes for version 16.6:
+    - Sometimes a server or client would crash while exiting if the DNS was not running.
+      Fixed.
+    - Fixed the reporting of some ERROR messages on Windows (used to report error "0")
+    - Allowed dim_send_command to receive instead of -dns <node_name>
+	-dns <node_name>[:<port_number>]
+
+
+01/05/2006
+Changes for version 16.5:
+    - Big Spring Cleanup. Removed most warnings. Can now be compiled on
+      Windows with Warning Level 3 and on Linux with -Wall
+      (still not working for -ansi -pedantic...)
+    - When trying to access a server in a different network (i.e. not reacheable)
+      a client (for example DID) would take very very long to timeout - fixed.
+    - Added two new sets of functions that allow setting the DIM_DNS_NODE separately
+      for a server and a client in the same process:
+	- int dis_set_dns_node(char *node)
+	- int dis_get_dns_node(char *node)
+	- int dis_set_dns_port(int port)
+	- int dis_get_dns_port()
+
+	- int dic_set_dns_node(char *node)
+	- int dic_get_dns_node(char *node)
+	- int dic_set_dns_port(int port)
+	- int dic_get_dns_port()
+      These routines should be used instead of the equivalent ones starting with "dim_"
+      since these set the same DIM_DNS_NODE/port for both Server and client parts of a 
+      process.
+    - Adapted the C++ equivalents (DimClient::setDnsNode, etc. and DimServer::setDnsNode, 
+      etc.) to use the new routines, so they are now independent.
+      Adapted also the Java equivalents.
+    - Fixed DimBridge to use the new routines.
+    - Fixed a bug in DID that made it crash sometimes at startup (and also when the DNS 
+      restarted)!
+    - Found some very interesting features of DIM:
+        - In a node with two ethernet interfaces (so connected to two networks):
+	    - The DNS will answer to servers and client on both networks, only its server
+              part - DIS_DNS (the one that answers to DID and DimBrowser requests) would
+              in principle answer only to one of the networks (in principle the default
+              interface* but can be changed by setting the environment variable "DIM_HOST_NODE").    
+	    - But, in fact, if the DNS or any server is started with the environment variable 
+              DIM_HOST_NODE set to the interface that is not the default* one. Than both the 
+              DNS (including the server part) and the DIM servers will be accessible from both 
+              networks. For example DID will work fine on both networks.
+            * The command "hostname" will return the name of the default network interface.   
+
+    Note: As a result of inserting new functions the DIM shared library entry points have
+          changed, so all DIM Servers/Clients should be relinked (in particular in Linux).
+
+
+20/04/2006
+Changes for version 16.4:
+    - Optimized the DNS for providing the list or running servers dynamically
+      by subscribing to the service "DIS_DNS/SERVER_LIST"
+
+
+07/04/2006
+Changes for version 16.3:
+    - Upgraded to work on LynxOS Version 4. 
+      - Updated makefile for INTEL platform
+      - Updated some ifdefs based on the existence of __Lynx__
+
+
+10/03/2006
+Changes for version 16.2:
+    - Increased the listen queue. To avoid "Connection Refused" messages from servers
+      or from the DNS.
+
+
+28/02/2006
+Changes for version 16.1:
+    - Fixed the NO_THREADS option for LINUX, it had stopped working.
+    - DimInfo::getData() could return an invalid pointer if called before connecting
+      to the server (or discovering the server did not exist). Fixed 
+      (it now returns 0 in this case).
+
+
+09/11/2005
+Changes for version 16.0:
+    - Consolidated the new timer handling mechanism, should be much more precise.
+    - Fixed the RPC handling. Used to be based on timming assumptions.
+      Now uses a safe protocol to make sure the server is connected before sending 
+      an RPC request.
+    - Included in the distribution some performance measurements and a benchmark 
+      server and client. Sources in src/benchmark executables in /bin for windows
+      and /linux for linux.
+      Usage:
+	benchServer <message_size_in_bytes> <number_of_services>
+	benchClient
+      benchClient will run for a while and print the measurement results. 
+
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
Index: branches/testFACT++branch/dim/README_v17.txt
===================================================================
--- branches/testFACT++branch/dim/README_v17.txt	(revision 18277)
+++ branches/testFACT++branch/dim/README_v17.txt	(revision 18277)
@@ -0,0 +1,319 @@
+
+                    DIM version 17.12 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux, Darwin}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 1712.
+
+06/11/2008
+Changes for version 17.12:
+    - Client functionality:
+    	- Added a new function dic_stop(), to close anything related to DIM 
+          for a client
+    	- Added the function dic_get_server_pid(). Similar to dic_get_server(). 
+          Can be executed in a callback to retrieve the pid of the current server
+    - DimBrowser Class:
+        - DimBrowser::getServices() used to create and destroy the DimRpc connection
+          to the Dns every time it was called. This was heavy if called in a loop.
+          Now the connection is maintained until the DimBrowser itself is destroyed.
+	- A new method DimBrowser::getNextServer(char *&server, char *&node, int *pid)
+          has been created. similar to the previous one but returns also the server pid.
+    - DNS
+	- The DNS was still doing some blocking write calls to servers or clients.
+          Now all write calls have a timeout and can not block forever.
+    - Linux DID
+	- The "Subscribe" button was subscribing to services with update rate of 10 seconds.
+	  This was misleading, the users could think the server was calling update_service
+          when it wasn't.
+          Now there are two Subscribe buttons ("on change" or "Update rate of 10 seconds").
+    - DimDridge
+	- Accepts an extra flag "-copy" which provokes an internal copy of the data.
+
+
+08/09/2008
+Changes for version 17.11:
+    - Some DIM Processes, servers or clients could enter a loop taking 100 % CPU 
+      time in some rare occasions, fixed.
+    - Added some protections when removing services in the DimBridge.
+
+
+30/08/2008
+Changes for version 17.10:
+    - Some DIM Processes, servers or clients would not reconnect when the DNS was
+      restarted. Fixed two cause:
+	- Some processes in Linux were stuck reading from the DNS socket
+	- Some others "forgot" to set a timer under very special conditions
+    - Changed some of the DNS debug messages to be more explicit.
+
+
+21/07/2008
+Changes for version 17.09:
+    - DIM error messages were not being flushed when the output was redirected 
+      to a logfile, fixed.
+
+
+18/07/2008
+Changes for version 17.08:
+    - Sometimes a server or a client could do a read on a sockect that had just
+      been closed which left them hanging forever - fixed.
+
+
+01/07/2008
+Changes for version 17.07:
+    - The DimTimer was sometimes not started when the constructor was called
+      with a time argument.
+    - Clients could not connect to more than 1024 servers - fixed.
+      (if the machine allows more than 1024 connections)
+
+
+30/06/2008
+Changes for version 17.06:
+    - Corrected the makefile for Darwin, now the number of accepted connections is 
+      increased to 8192 only for Linux.
+    - Fixed a bug in the DimTimer, it used to accept to be re-started, but then crashed
+      at destruction time if not stopped the same number of times. Now it can not be
+      re-started.
+    - The Dns used to ask servers to re-register at regular intervals when they were not 
+      sending their watchdog messages (i.e. they were in "ERROR", red in DID). Now the
+      DNS only asks once (unless they answer). This could cause the DNS to hang if
+      servers were in ERROR for a long time.
+    - The Dns now accepts a command line parameter: -d to print debug messages.
+    - The clients were not handling properly the case when they could contact the DNS
+      but then they could not contact the server that the DNS gave them (either because
+      of a firewall or because the server run on an inaccessible network). In this case
+      the clients would timeout trying to contact the server for each service and kept
+      asking the DNS the server coordinates over and over again. Now the clients keep
+      a list on unreacheable servers, so they don't try to contact the server for each 
+      service and only ask the DNS again with an increasing interval that goes from 10 
+      seconds to 2 minutes maximum.
+    - The server now issues an error message if the format string is too long.
+    - Linux DID
+        - Removed the command "Kill ALL Servers", it was too dangerous
+	- Now the list of nodes in "View Servers by Node" is in alphabetical order and
+	  in lowercase.
+
+
+30/04/2008
+Changes for version 17.05:
+    - In Linux in some cases a SIGPIPE was generated. Normally the DIM library sets
+      the behaviour of SIGPIPE to ignored, but if another library or main program
+      changes the SIGPIPE behaviour, then the application could exit when the SIGPIPE
+      was generated. Fixed - on Linux now the function send with flag MSG_NOSIGNAL
+      is used in oder to avoid generating SIGPIPE.
+
+
+
+4/04/2008
+Changes for version 17.04:
+    - Sometimes processes (servers or clients) would hang when the DNS was restarted.
+      This was due to a strange (Windows?) feature, by which a connect could succeed
+      after a connection was closed (and reported) on the other side. Fixed.
+
+
+
+27/03/2008
+Changes for version 17.03:
+    - Can now make DID for 64 bits by making DIM using:
+	gmake X64=yes all
+    - Increased the size of the Hash tables for the servers and the DNS.
+
+
+
+20/02/2008
+Changes for version 17.02:
+    - Fixed the Java DimTimer - stop() didn't work
+      Required changing dim_jni.c as well as the java part
+    - Fixed DIM for Darwin - had stopped working
+
+
+
+20/01/2008
+Changes for version 17.01:
+    - The Java API now works on 64 bit machines, Thanks to Joern Adamczewski.
+      Please use:
+	gmake JDIM=yes all
+    - Linux executables are now compiled/linked on slc4 (32 bits).
+    - Big changes in the DimRpcs both client and server part. Tere were bugs
+      related to the handling of timeouts.
+      Unfortunatelly all applications using RPCs need to be re-linked.
+
+
+
+-----------------------------------------------------------------------------------------
+Previous version history:
+
+07/12/2007
+Changes for version 16.14:
+    - Now by default All DIM processes are ready to accept up to 8192 connections, both
+      in Linux and Windows. Although in Linux for this to be effective the machine system 
+      limits must allow more than 1024 descriptors/open files per process.
+    - Fixed a little memory leak in tokenstring.cxx
+    - And a little compilation bug for some platforms in tcpip.c 
+
+
+15/05/2007
+Changes for version 16.13:
+    - If DIM_HOST_NODE is defined when starting up a server, a DIM client will now try 
+      two network interfaces in order to talk to that server and only give up if they both 
+      fail. First it will try the ip name or ip address specified by the server using 
+      DIM_HOST_NODE, if that fails it will try the ip address of the default interface
+      retrieved by the server using gethostname (and gethostbyname).
+      The changes basically affect the case in which the DIM_HOST_NODE given to the servers
+      is specified as IP address instad of an IP name. Otherwise this mechanism was already 
+      working.
+
+
+3/05/2007
+Changes for version 16.12:
+    - The Java version did not exit properly when main() terminated - fixed.
+
+
+25/04/2007
+Changes for version 16.11:
+    - On Linux the timeout to detect a lost connections (unplugged ethernet cable
+      or machine reboot) was too long, around 15 minutes - Fixed.
+      On Linux the KEEPALIVE feature is now used instead of a regular socket write,
+      all other platforms should work as before.
+
+
+21/02/2007
+Changes for version 16.10:
+    - Found a bug in dis_stop_serving: one socket connection was not closed - fixed.
+    - Implemented a new environment variable for the DNS: DIM_DNS_ACCEPTED_NODES
+      Can receive a list on nodes or domains separated by commas.
+      If the DNS receives a connection from a node not in this list, it will
+      reject it and kill the server or client requesting it.
+    - Fixed some C++ warnings.
+
+
+19/01/2007
+Changes for version 16.9:
+    - The modifications done in version 16.8 have introduced a bug:
+	- DIM servers would not behave properly (exit) when receiving a kill command
+          from the DNS (for duplicated services, not allowed host names or manual "kill")
+	  This is now fixed.
+
+
+30/10/2006
+Changes for version 16.8:
+    - Modified dis_stop_serving() and DimServer::stop() to completely stop DIM:
+	- Stop also the DIM threads.
+	- Release all allocated memory
+	- Allow a different port number when re-starting.
+
+
+11/07/2006
+Changes for version 16.7:
+    - Prepared for increasing the number of open connections per process
+      (On Linux still requires changing some parameters and recompiling the Dns)
+    - Fixed one error and several warnings for gcc 4.
+
+
+11/05/2006
+Changes for version 16.6:
+    - Sometimes a server or client would crash while exiting if the DNS was not running.
+      Fixed.
+    - Fixed the reporting of some ERROR messages on Windows (used to report error "0")
+    - Allowed dim_send_command to receive instead of -dns <node_name>
+	-dns <node_name>[:<port_number>]
+
+
+01/05/2006
+Changes for version 16.5:
+    - Big Spring Cleanup. Removed most warnings. Can now be compiled on
+      Windows with Warning Level 3 and on Linux with -Wall
+      (still not working for -ansi -pedantic...)
+    - When trying to access a server in a different network (i.e. not reacheable)
+      a client (for example DID) would take very very long to timeout - fixed.
+    - Added two new sets of functions that allow setting the DIM_DNS_NODE separately
+      for a server and a client in the same process:
+	- int dis_set_dns_node(char *node)
+	- int dis_get_dns_node(char *node)
+	- int dis_set_dns_port(int port)
+	- int dis_get_dns_port()
+
+	- int dic_set_dns_node(char *node)
+	- int dic_get_dns_node(char *node)
+	- int dic_set_dns_port(int port)
+	- int dic_get_dns_port()
+      These routines should be used instead of the equivalent ones starting with "dim_"
+      since these set the same DIM_DNS_NODE/port for both Server and client parts of a 
+      process.
+    - Adapted the C++ equivalents (DimClient::setDnsNode, etc. and DimServer::setDnsNode, 
+      etc.) to use the new routines, so they are now independent.
+      Adapted also the Java equivalents.
+    - Fixed DimBridge to use the new routines.
+    - Fixed a bug in DID that made it crash sometimes at startup (and also when the DNS 
+      restarted)!
+    - Found some very interesting features of DIM:
+        - In a node with two ethernet interfaces (so connected to two networks):
+	    - The DNS will answer to servers and client on both networks, only its server
+              part - DIS_DNS (the one that answers to DID and DimBrowser requests) would
+              in principle answer only to one of the networks (in principle the default
+              interface* but can be changed by setting the environment variable "DIM_HOST_NODE").    
+	    - But, in fact, if the DNS or any server is started with the environment variable 
+              DIM_HOST_NODE set to the interface that is not the default* one. Than both the 
+              DNS (including the server part) and the DIM servers will be accessible from both 
+              networks. For example DID will work fine on both networks.
+            * The command "hostname" will return the name of the default network interface.   
+
+    Note: As a result of inserting new functions the DIM shared library entry points have
+          changed, so all DIM Servers/Clients should be relinked (in particular in Linux).
+
+
+20/04/2006
+Changes for version 16.4:
+    - Optimized the DNS for providing the list or running servers dynamically
+      by subscribing to the service "DIS_DNS/SERVER_LIST"
+
+
+07/04/2006
+Changes for version 16.3:
+    - Upgraded to work on LynxOS Version 4. 
+      - Updated makefile for INTEL platform
+      - Updated some ifdefs based on the existence of __Lynx__
+
+
+10/03/2006
+Changes for version 16.2:
+    - Increased the listen queue. To avoid "Connection Refused" messages from servers
+      or from the DNS.
+
+
+28/02/2006
+Changes for version 16.1:
+    - Fixed the NO_THREADS option for LINUX, it had stopped working.
+    - DimInfo::getData() could return an invalid pointer if called before connecting
+      to the server (or discovering the server did not exist). Fixed 
+      (it now returns 0 in this case).
+
+
+09/11/2005
+Changes for version 16.0:
+    - Consolidated the new timer handling mechanism, should be much more precise.
+    - Fixed the RPC handling. Used to be based on timming assumptions.
+      Now uses a safe protocol to make sure the server is connected before sending 
+      an RPC request.
+    - Included in the distribution some performance measurements and a benchmark 
+      server and client. Sources in src/benchmark executables in /bin for windows
+      and /linux for linux.
+      Usage:
+	benchServer <message_size_in_bytes> <number_of_services>
+	benchClient
+      benchClient will run for a while and print the measurement results. 
+
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
Index: branches/testFACT++branch/dim/README_v18.txt
===================================================================
--- branches/testFACT++branch/dim/README_v18.txt	(revision 18277)
+++ branches/testFACT++branch/dim/README_v18.txt	(revision 18277)
@@ -0,0 +1,376 @@
+
+                    DIM version 18.05 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux, Darwin}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 1805.
+
+26/02/2009
+Changes for version 18.05:
+    - Made the callback for "DIS_DNS/SERVER_LIST" uninterruptible, so that two clients subscribing
+      would not get mixed up answers.
+    - The same for "<server>/SERVICE_LIST"
+    - Tryied to fix a DNS crash, introduced in v18r4 by releasing the connection when "informing clients".
+    - removed some "//" comments in "C"
+
+
+20/02/2009
+Changes for version 18.04:
+    - Changed the dim_wait() mechanism, so that it works for several threads in parallel:
+	- On Linux it was based on POSIX semaphores now it is based on POSIX "condition 
+          variables"
+	- On Windows it was based on "Auto Reset Events" now it uses "Manual Resel "Events"
+    - The DNS should now correctly update the "DIS_DNS/SERVER_LIST" service. It used to report
+      a new server, even when the services already existed and the server was killed by the DNS.
+      (And never report it killed). It also didn't report correctly when a server went out of "ERROR"
+      (this is reported as a "+" as for a new server). 
+
+
+05/02/2009
+Changes for version 18.03:
+    - The list of registered services in a server could get corrupted in some rare cases
+      making the server crash - fixed.
+    - If the DNS couldn't talk to a client it could sometimes hang - fixed.
+    - Java client modifications:
+	- DimUpdatedInfo was not working correctly - fixed in dim_jni.c.
+	- Implemented DimRpcInfo
+	- Changed the DimBroser class to use DimRpcInfo.
+	- Added a jdim.jar file in the jdim/classes directory of the DIM distribution 
+
+
+15/01/2009
+Changes for version 18.02:
+    - Added the following functions:
+	- C++ Client
+		- int DimClient.getServerPid()
+	- Java Client
+		- int DimClient.getServerPid()
+		- String[] DimBrowser.getServers()
+		- String DimBrowser.getServerNode(String server)
+		- int DimBrowser.getServerPid(String server)
+
+
+09/01/2009
+Changes for version 18.01:
+    - Added in the distribution the Visual Studio 8 dlls and manifest. Otherwise
+      it would not work on most PCs.
+
+
+03/12/2008
+Changes for version 18.00:
+    - The Windows execulables and libraries are now built using Visual Studio 8
+    - Some changes added by GSI mainly in the Java Native Interface
+
+
+06/11/2008
+Changes for version 17.12:
+    - Client functionality:
+    	- Added a new function dic_stop(), to close anything related to DIM 
+          for a client
+    	- Added the function dic_get_server_pid(). Similar to dic_get_server(). 
+          Can be executed in a callback to retrieve the pid of the current server
+    - DimBrowser Class:
+        - DimBrowser::getServices() used to create and destroy the DimRpc connection
+          to the Dns every time it was called. This was heavy if called in a loop.
+          Now the connection is maintained until the DimBrowser itself is destroyed.
+	- A new method DimBrowser::getNextServer(char *&server, char *&node, int *pid)
+          has been created. similar to the previous one but returns also the server pid.
+    - DNS
+	- The DNS was still doing some blocking write calls to servers or clients.
+          Now all write calls have a timeout and can not block forever.
+    - Linux DID
+	- The "Subscribe" button was subscribing to services with update rate of 10 seconds.
+	  This was misleading, the users could think the server was calling update_service
+          when it wasn't.
+          Now there are two Subscribe buttons ("on change" or "Update rate of 10 seconds").
+    - DimDridge
+	- Accepts an extra flag "-copy" which provokes an internal copy of the data.
+
+
+08/09/2008
+Changes for version 17.11:
+    - Some DIM Processes, servers or clients could enter a loop taking 100 % CPU 
+      time in some rare occasions, fixed.
+    - Added some protections when removing services in the DimBridge.
+
+
+30/08/2008
+Changes for version 17.10:
+    - Some DIM Processes, servers or clients would not reconnect when the DNS was
+      restarted. Fixed two cause:
+	- Some processes in Linux were stuck reading from the DNS socket
+	- Some others "forgot" to set a timer under very special conditions
+    - Changed some of the DNS debug messages to be more explicit.
+
+
+21/07/2008
+Changes for version 17.09:
+    - DIM error messages were not being flushed when the output was redirected 
+      to a logfile, fixed.
+
+
+18/07/2008
+Changes for version 17.08:
+    - Sometimes a server or a client could do a read on a sockect that had just
+      been closed which left them hanging forever - fixed.
+
+
+01/07/2008
+Changes for version 17.07:
+    - The DimTimer was sometimes not started when the constructor was called
+      with a time argument.
+    - Clients could not connect to more than 1024 servers - fixed.
+      (if the machine allows more than 1024 connections)
+
+
+30/06/2008
+Changes for version 17.06:
+    - Corrected the makefile for Darwin, now the number of accepted connections is 
+      increased to 8192 only for Linux.
+    - Fixed a bug in the DimTimer, it used to accept to be re-started, but then crashed
+      at destruction time if not stopped the same number of times. Now it can not be
+      re-started.
+    - The Dns used to ask servers to re-register at regular intervals when they were not 
+      sending their watchdog messages (i.e. they were in "ERROR", red in DID). Now the
+      DNS only asks once (unless they answer). This could cause the DNS to hang if
+      servers were in ERROR for a long time.
+    - The Dns now accepts a command line parameter: -d to print debug messages.
+    - The clients were not handling properly the case when they could contact the DNS
+      but then they could not contact the server that the DNS gave them (either because
+      of a firewall or because the server run on an inaccessible network). In this case
+      the clients would timeout trying to contact the server for each service and kept
+      asking the DNS the server coordinates over and over again. Now the clients keep
+      a list on unreacheable servers, so they don't try to contact the server for each 
+      service and only ask the DNS again with an increasing interval that goes from 10 
+      seconds to 2 minutes maximum.
+    - The server now issues an error message if the format string is too long.
+    - Linux DID
+        - Removed the command "Kill ALL Servers", it was too dangerous
+	- Now the list of nodes in "View Servers by Node" is in alphabetical order and
+	  in lowercase.
+
+
+30/04/2008
+Changes for version 17.05:
+    - In Linux in some cases a SIGPIPE was generated. Normally the DIM library sets
+      the behaviour of SIGPIPE to ignored, but if another library or main program
+      changes the SIGPIPE behaviour, then the application could exit when the SIGPIPE
+      was generated. Fixed - on Linux now the function send with flag MSG_NOSIGNAL
+      is used in oder to avoid generating SIGPIPE.
+
+
+
+4/04/2008
+Changes for version 17.04:
+    - Sometimes processes (servers or clients) would hang when the DNS was restarted.
+      This was due to a strange (Windows?) feature, by which a connect could succeed
+      after a connection was closed (and reported) on the other side. Fixed.
+
+
+
+27/03/2008
+Changes for version 17.03:
+    - Can now make DID for 64 bits by making DIM using:
+	gmake X64=yes all
+    - Increased the size of the Hash tables for the servers and the DNS.
+
+
+
+20/02/2008
+Changes for version 17.02:
+    - Fixed the Java DimTimer - stop() didn't work
+      Required changing dim_jni.c as well as the java part
+    - Fixed DIM for Darwin - had stopped working
+
+
+
+20/01/2008
+Changes for version 17.01:
+    - The Java API now works on 64 bit machines, Thanks to Joern Adamczewski.
+      Please use:
+	gmake JDIM=yes all
+    - Linux executables are now compiled/linked on slc4 (32 bits).
+    - Big changes in the DimRpcs both client and server part. Tere were bugs
+      related to the handling of timeouts.
+      Unfortunatelly all applications using RPCs need to be re-linked.
+
+
+
+-----------------------------------------------------------------------------------------
+Previous version history:
+
+07/12/2007
+Changes for version 16.14:
+    - Now by default All DIM processes are ready to accept up to 8192 connections, both
+      in Linux and Windows. Although in Linux for this to be effective the machine system 
+      limits must allow more than 1024 descriptors/open files per process.
+    - Fixed a little memory leak in tokenstring.cxx
+    - And a little compilation bug for some platforms in tcpip.c 
+
+
+15/05/2007
+Changes for version 16.13:
+    - If DIM_HOST_NODE is defined when starting up a server, a DIM client will now try 
+      two network interfaces in order to talk to that server and only give up if they both 
+      fail. First it will try the ip name or ip address specified by the server using 
+      DIM_HOST_NODE, if that fails it will try the ip address of the default interface
+      retrieved by the server using gethostname (and gethostbyname).
+      The changes basically affect the case in which the DIM_HOST_NODE given to the servers
+      is specified as IP address instad of an IP name. Otherwise this mechanism was already 
+      working.
+
+
+3/05/2007
+Changes for version 16.12:
+    - The Java version did not exit properly when main() terminated - fixed.
+
+
+25/04/2007
+Changes for version 16.11:
+    - On Linux the timeout to detect a lost connections (unplugged ethernet cable
+      or machine reboot) was too long, around 15 minutes - Fixed.
+      On Linux the KEEPALIVE feature is now used instead of a regular socket write,
+      all other platforms should work as before.
+
+
+21/02/2007
+Changes for version 16.10:
+    - Found a bug in dis_stop_serving: one socket connection was not closed - fixed.
+    - Implemented a new environment variable for the DNS: DIM_DNS_ACCEPTED_NODES
+      Can receive a list on nodes or domains separated by commas.
+      If the DNS receives a connection from a node not in this list, it will
+      reject it and kill the server or client requesting it.
+    - Fixed some C++ warnings.
+
+
+19/01/2007
+Changes for version 16.9:
+    - The modifications done in version 16.8 have introduced a bug:
+	- DIM servers would not behave properly (exit) when receiving a kill command
+          from the DNS (for duplicated services, not allowed host names or manual "kill")
+	  This is now fixed.
+
+
+30/10/2006
+Changes for version 16.8:
+    - Modified dis_stop_serving() and DimServer::stop() to completely stop DIM:
+	- Stop also the DIM threads.
+	- Release all allocated memory
+	- Allow a different port number when re-starting.
+
+
+11/07/2006
+Changes for version 16.7:
+    - Prepared for increasing the number of open connections per process
+      (On Linux still requires changing some parameters and recompiling the Dns)
+    - Fixed one error and several warnings for gcc 4.
+
+
+11/05/2006
+Changes for version 16.6:
+    - Sometimes a server or client would crash while exiting if the DNS was not running.
+      Fixed.
+    - Fixed the reporting of some ERROR messages on Windows (used to report error "0")
+    - Allowed dim_send_command to receive instead of -dns <node_name>
+	-dns <node_name>[:<port_number>]
+
+
+01/05/2006
+Changes for version 16.5:
+    - Big Spring Cleanup. Removed most warnings. Can now be compiled on
+      Windows with Warning Level 3 and on Linux with -Wall
+      (still not working for -ansi -pedantic...)
+    - When trying to access a server in a different network (i.e. not reacheable)
+      a client (for example DID) would take very very long to timeout - fixed.
+    - Added two new sets of functions that allow setting the DIM_DNS_NODE separately
+      for a server and a client in the same process:
+	- int dis_set_dns_node(char *node)
+	- int dis_get_dns_node(char *node)
+	- int dis_set_dns_port(int port)
+	- int dis_get_dns_port()
+
+	- int dic_set_dns_node(char *node)
+	- int dic_get_dns_node(char *node)
+	- int dic_set_dns_port(int port)
+	- int dic_get_dns_port()
+      These routines should be used instead of the equivalent ones starting with "dim_"
+      since these set the same DIM_DNS_NODE/port for both Server and client parts of a 
+      process.
+    - Adapted the C++ equivalents (DimClient::setDnsNode, etc. and DimServer::setDnsNode, 
+      etc.) to use the new routines, so they are now independent.
+      Adapted also the Java equivalents.
+    - Fixed DimBridge to use the new routines.
+    - Fixed a bug in DID that made it crash sometimes at startup (and also when the DNS 
+      restarted)!
+    - Found some very interesting features of DIM:
+        - In a node with two ethernet interfaces (so connected to two networks):
+	    - The DNS will answer to servers and client on both networks, only its server
+              part - DIS_DNS (the one that answers to DID and DimBrowser requests) would
+              in principle answer only to one of the networks (in principle the default
+              interface* but can be changed by setting the environment variable "DIM_HOST_NODE").    
+	    - But, in fact, if the DNS or any server is started with the environment variable 
+              DIM_HOST_NODE set to the interface that is not the default* one. Than both the 
+              DNS (including the server part) and the DIM servers will be accessible from both 
+              networks. For example DID will work fine on both networks.
+            * The command "hostname" will return the name of the default network interface.   
+
+    Note: As a result of inserting new functions the DIM shared library entry points have
+          changed, so all DIM Servers/Clients should be relinked (in particular in Linux).
+
+
+20/04/2006
+Changes for version 16.4:
+    - Optimized the DNS for providing the list or running servers dynamically
+      by subscribing to the service "DIS_DNS/SERVER_LIST"
+
+
+07/04/2006
+Changes for version 16.3:
+    - Upgraded to work on LynxOS Version 4. 
+      - Updated makefile for INTEL platform
+      - Updated some ifdefs based on the existence of __Lynx__
+
+
+10/03/2006
+Changes for version 16.2:
+    - Increased the listen queue. To avoid "Connection Refused" messages from servers
+      or from the DNS.
+
+
+28/02/2006
+Changes for version 16.1:
+    - Fixed the NO_THREADS option for LINUX, it had stopped working.
+    - DimInfo::getData() could return an invalid pointer if called before connecting
+      to the server (or discovering the server did not exist). Fixed 
+      (it now returns 0 in this case).
+
+
+09/11/2005
+Changes for version 16.0:
+    - Consolidated the new timer handling mechanism, should be much more precise.
+    - Fixed the RPC handling. Used to be based on timming assumptions.
+      Now uses a safe protocol to make sure the server is connected before sending 
+      an RPC request.
+    - Included in the distribution some performance measurements and a benchmark 
+      server and client. Sources in src/benchmark executables in /bin for windows
+      and /linux for linux.
+      Usage:
+	benchServer <message_size_in_bytes> <number_of_services>
+	benchClient
+      benchClient will run for a while and print the measurement results. 
+
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
Index: branches/testFACT++branch/dim/README_v19.txt
===================================================================
--- branches/testFACT++branch/dim/README_v19.txt	(revision 18277)
+++ branches/testFACT++branch/dim/README_v19.txt	(revision 18277)
@@ -0,0 +1,750 @@
+
+                    DIM version 19.39 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux, Darwin}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 1939.
+
+04/10/2012
+Changes for version 19.39:
+    - Unfortunately Windows, unlike Linux, does not use LP64 convention for 64 bits, 
+      i.e. the type long is a 32 bit variable (?!?!?!)
+      So created a dim_long type which can always hold a pointer
+ 
+
+09/08/2012
+Changes for version 19.38:
+    - The timeout used by clients and servers to try to reconnect to a DNS was supposed to be random,
+      to avoid all processes retrying at the same time, but it wasn't - fixed.
+
+
+27/06/2012
+Changes for version 19.37:
+    - DIM DNS crashed for servers with a task name bigger than 80 characters - Fixed.
+
+
+22/06/2012
+Changes for version 19.36:
+    - The internal "DIS_DNS/KILL_SERVERS" command can now be used to pass a user defined exit_code to
+      the servers. The servers will get this exit_code in their exit_handler.
+      Although the exit_code passed to the "DIS_DNS/KILL_SERVERS" command is an integer, only the lower
+      16 bits can be used, i.e. only these bits are passed to the servers.
+
+
+24/05/2012
+Changes for version 19.35:
+    - Fixed the DimInfo() default constructor, now if the default constructor is called, it doesn't cause the 
+      destructor to crash anymore.
+    - Made available to DimInfo, DimStampedInfo, DimUpdatedInfo and DimCurrentInfo the method: 
+      	- void subscribe(char *name, void *nolink, int nolinksize, int time, DimInfoHandler *handler)
+      Like this the default constructor can be called and then this method called later to subscribe
+      whenever needed.
+    - The behaviour of a giving a null pointer and size 0 as "no link" parameters was not completely
+      defined. The user could get back either a null pointer or an "invalid" pointer in the callbacks.
+      This is now well-defined: 
+        - If null pointer and size 0 is used at subscribe, the user will get null pointer and size 0 in the callback.
+        - If a negative size is passed at subscribe the callback is not called at all.
+
+
+03/05/2012
+Changes for version 19.34:
+    - Changed back to dna_write_nowait() the message that the server sends to the client when removing
+      a service. This was causing clients not to reconnect ever again when the server removed services.
+      (because the client would get the info much before the DNS, so it would keep trying to reconnect
+      and failing even though the service or even the server didn't exist anymore, without asking the DNS)
+    - Changed the client in order to avoid the behaviour above, i.e. if sending the service request fails it
+      asks the DNS again.
+
+
+23/04/2012
+Changes for version 19.33:
+    - A bug was introduced in v19r30. When trying to retry immediately, a dtq_start_timer(0)
+      was used (like for dna_write). This is not possible because the callback is not protected 
+      by a DIM lock. Fixed. (in v19r32)
+    - Small tidy up in dic.c and protecting the move_to_xxx functions.
+    - When a server received an unsubscribe from the last subscribed service of a client it was closing the
+      connection to the client, this is not good because there could be commands being sent. In any case
+      it should be up to the client to close the connection - Fixed.
+    - dim_send_command now accepts a "-i" argument to send integer data (default is string)
+
+
+30/03/2012
+Changes for version 19.31:
+    - changed dna_write to dna_write_nowait for servers when removing a service and for clients
+      when releasing and subscribing to a service. Dna_write cannot be used for the same connection
+      as dna_write_nowait as it will mingle the packets.
+    - Removed more compiler warnings.
+
+
+14/03/2012
+Changes for version 19.30:
+    - Sometimes when trying to open a connection to a server the client could backoff for too
+      long (10 seconds), now it will retry immediately and then at increasing intervals.
+    - dim_stop() would sometimes not properly stop all threads if a new connection was received
+      in the mean time.
+    - The DimServerDns destructor could crash, fixed.
+    - Removed some compiler warnings about variables set but not used.
+    - Two new functions available:
+	- dim_set_listen_backlog(int size)
+	- int dim_get_listen_backlog()
+    - The DNS will set the listen_backlog to 1024 at startup, but the OS will truncate it to
+      a maximum limit (available in /proc/sys/net/core/somaxconn, linux default=128), 
+      while for servers the constant SOMAXCONN is used.
+
+
+06/02/2012
+Changes for version 19.28:
+    - Added more log messages when a "Write Timeout" occurs to know where it originated.
+    - A server could sometimes not release the connection in case of a "Write Timeout", and
+      then keep on timing out for each message on this connection - fixed.
+
+
+19/01/2012
+Changes for version 19.27:
+    - Updated the DIM Makefiles for MacOSX (Darwin)
+    - Added New possibilities to change DIM timeouts:
+	- 2 New Environment variables:
+	    - DIM_WRITE_TMOUT				(default: 5)
+	    - DIM_KEEPALIVE_TMOUT			(default: 15)
+	- Same functionality as the functions:
+	    - dim_set_write_timeout(int secs)
+	    - int dim_get_write_timeout()
+	    - dim_set_keepalive_timeout(int secs)	//new
+	    - int dim_get_keepalive_timeout()		//new
+	- The functions have precedence over the environment variables.
+    - The server per client exit_handler functionality 
+      (provided by dis_add_client_exit_handler()/dis_set_client_exit_handler())
+      wan not always working correctly (in case of write timeouts) - fixed.
+    - Changed the reporting of "Write Tiemout":
+	- Used to report only: 
+	    - "ERROR: Write Timeout, disconnecting from..."
+	- Now reports:
+	    - "WARNING: Write Timeout, writing to ..."
+	    - If it disconnects: "ERROR: Write Timeout, disconnecting from ..."
+	    - If it reconnects later: "INFO: Re-connected to ..." 
+
+
+14/09/2011
+Changes for version 19.26:
+    - In the notes for version 19.08 there is the following:
+    	- Since version v18r4 where dim_wait() was modified, dim_wait could hang in windows if
+      	  the wake_up event was triggered before dim_wait was called. Could affect smi++. Fixed.
+    - Amasingly enough this seems also to be the case for Linux, dim_wait could hang until there
+      was some new DIM activity, normally some timer firing... Fixed.
+    - The Linux DID now accepts an extra parameter: -dns=<dns_node_name>
+
+01/09/2011
+Changes for version 19.25:
+    - When a Client was releasing a service "at the same time" as the server was deleting the service,
+      The Connection could be released by mistake - fixed.
+    - The SERVICE_LIST service could be updated with an empty string if there were two consecutive 
+      dis_start_serving() - fixed.
+
+
+08/08/2011
+Changes for version 19.24:
+    - The funtion DimInfo::getFormat() never return the correct format of a service, if the first time
+      it was called, the service was not available, i.e. when called inside a "no_link" callback - Fixed.
+    - Deleting the last service of a server or stopping a server could generate "Invalid Service Id"
+      messages from the service that updates DID - Fixed.
+
+
+15/07/2011
+Changes for version 19.23:
+    - The new functions:
+	int DimClient::inCallback()
+	int DimServer::inCallback()
+      Can be used to find out if the function is being called in the context of a DIM callback
+      handler (they return 1 if yes, 0 if no).
+    - There was no way to "remove" an errorHandler or exitHandler in C++.
+      Now the following functions accept 0 as parameter:
+	DimClient::addErrorHandler(0)
+	DimServer::addErrorHandler(0)
+	DimServer::addExitHandler(0)
+	DimServer::addClientExitHandler(0)
+      In order to remove them.
+    - The Windows Visual Studio Manifest file distributed since version v19r19 was wrong, so the latest
+      DIM versions did not work on Windows machines without Visual Studio 8 installed - Fixed.
+
+
+21/06/2011
+Changes for version 19.22:
+    - DIM servers would hang when tring to exit due to "Services already declared", if the user
+      exitHandler() didn't directly call exit (instead tried to exit later in the main program).
+      Fixed.
+    - Servers accept now also 'B' or 'V' as format, they are both equivalent to 'C'.
+    - In Linux when a server printed "Write timeout, disconecting from XXX", it didn't always
+      disconnect properly, so the client would not always reconnect afterwards. Fixed. 
+
+
+31/05/2011
+Changes for version 19.21:
+    - Fixed a bug in DimRpcInfo: the timer for the timeout was started too late and sometimes the
+      RPC data was received in the meantime, so the timer was never stopped. 
+
+
+04/05/2011
+Changes for version 19.20:
+    - Fixed a bug added in v19r18: The <server_name>/SERVICE_LIST was no longer reporting correctly
+      the disappearence of services (by a "-<service_name>" ). Fixed.
+
+
+27/04/2011
+Changes for version 19.19:
+    - Fixed a very very old (horrible) bug in dis.c and dns.c: there was a hardwired malloc(8), 
+      which was only ok for 32 bit machines. It's amazing this didn't bring more trouble...
+
+
+07/04/2011
+Changes for version 19.18:
+    - The standard server service <server_name>/SERVICE_LIST had problems reporting the correct
+      information when used by several clients in paralel - fixed.
+
+
+11/03/2011
+Changes for version 19.17:
+    - The TCPIP "listen" backlog for a server was increased for all servers (including the DNS)
+      from 16 to the constant SOMAXCONN (128 on Linux at the moment, 200 on Windows ?)
+    - After a "fork" the DIM initialization sequence guided by semaphores was not correctly
+      handled, this made the forked children hang and not respond to DIM anymore - fixed.
+
+
+23/02/2011
+Changes for version 19.16:
+    - DimServer::stop() did not correctly clear the ServerName - fixed.
+    - The Linux DID now prints the DNS it is connected to in the title bar.
+
+
+20/12/2010
+Changes for version 19.15:
+    - Still fixing dis_stop_serving():
+        - The DNS sometimes gets a remove service message from a server, after the server has
+          closed the connection, this was not handled properly - fixed.
+        - Fixed yet another detail (variable not cleared) in the thread handling at dis_stop_serving().
+	- dtq.c now clears all timer_queues at dis_stop_serving()
+	- Added some protections in case of closed connections.
+
+
+10/12/2010
+Changes for version 19.14:
+    - Still fixing dis_stop_serving():
+	- Adedd pthread_join in linux to wait for threads to die
+	- the following dis_start_serving() would not reconnect to the DNS if the DNS connection
+          was pending (i.e. the DNS was stopped or restarted)
+
+
+06/12/2010
+Changes for version 19.13:
+    - Fixed a few compiler warnings in dis.c
+    - Added #ifndef PXI around some Windows setPriority calls
+    - dis_stop_serving() did not completely clean-up DIM so that another dis_start_serving()
+      could be done properly after for example a "fork()". Fixed.
+
+
+20/09/2010
+Changes for version 19.12:
+    - Fixed a bug added when removing warnings in v19r10 (dis.c and dns.c).
+
+
+07/06/2010
+Changes for version 19.11:
+    - Added some protections in update_service() in order to try to solve a DIP issue.
+      (related to very frequent updates of the same service in different threads) 
+    - Added the possibility of defining timeouts for:
+	- DimBrowser::getServices 
+	- DimBrowser::getServers 
+	- DimBrowser::getServerServices 
+	- DimBrowser::getServerClients
+    - Added the possibility of retrieving the time a command arrived:
+	- int dis_get_timestamp(int service_id, int *secs, int *millisecs) in C
+	- int DimCommand::getTimestamp() and int DimCommand::getTimestampMillisecs() in C++
+    - Added a "const" keyword to the "char *format" parameter in the constructors of
+	- DimService and DimCommand
+    - Added a call DimCommand::hasNext(), can be used when commands are queued.
+    - Fixed a memory leak when using DimService::setData and then dynamically deleting the
+      DimService 
+
+
+17/02/2010
+Changes for version 19.10:
+    - Fixed a bug in the DNS related to the latest change (browsing for a single service name)
+      The DNS could crash when killing a server.
+    - Removed some compilation warnings 
+
+
+04/01/2010
+Changes for version 19.09:
+    - Created two new functions: dis_set_debug_on() and dis_set_debug_off(), these
+      enable or disable printing a message per service update
+    - Tried to protect against:
+	- a service being deleted from the server while it is being updated
+        - a client unsubscribing from a service while it is being updated.
+    - Optimized the DNS when browsing for a service search pattern without wildcards
+      (i.e. browsing for a single service name) 
+
+
+13/11/2009
+Changes for version 19.08:
+    - Since version v18r4 where dim_wait() was modified, dim_wait could hang in windows if
+      the wake_up event was triggered before dim_wait was called. Could affect smi++.
+      Fixed.
+    - Fixed a compilation bug in dis.c that affected some platforms.
+
+
+30/10/2009
+Changes for version 19.07:
+    - Some more bugs related to being able to publish to more that one DNS fixed.
+
+
+28/10/2009
+Changes for version 19.06:
+    - When opening DNS connections, when the DNS is not there, from a process that is at the 
+      same time a client and a server only one pending connection was used now two separate 
+      ones are created.
+    - Tried to fix a few more problems related to dis_stop_serving...
+
+
+26/10/2009
+Changes for version 19.05:
+    - dis_stop_serving had stopped working in version 19.4. So all servers that undeclared
+      all services and then tried to re-declare new ones would fail (corrupted server name).
+      Affected in particular the DimBridge
+
+
+27/08/2009
+Changes for version 19.04:
+    - Added the following functions:
+	Server part:
+		C - dis_get_n_clients(int service_id)
+		C++ - int DimService::getNClients()
+	Client part (C++ only):
+		DimClient::setNoDataCopy()
+		This will prevent any data copy in the client and the user should make 
+                sure that the data received from DIM is not used outside the callback
+                in order to benefir from this feature.
+    - Fixed the Java DIM Jar file, it was wrong in the previous version.
+
+
+31/07/2009
+Changes for version 19.03:
+    - Removed some more compilation warnings.
+    - Fixed a bug in the DNS. The mechanism for retrieving the "SERVER_LIST" when 
+      some server names were longer that 35 characters was very slow.
+
+
+06/07/2009
+Changes for version 19.02:
+    - Fixed a bug in the server part handling of RPCs, it created a memory leak.
+      It was using a separate thread to handle timeouts and there is no safe way to 
+      kill a thread from outside. Fixed.
+    	- the function dim_stop_thread() is now obsolete.
+    - Added the possibility to change the send and receive buffer sizes:
+	- int dim_set_write_buffer_size(int size)
+	- int dim_get_write_buffer_size()
+	- int dim_set_read_buffer_size(int size)
+	- int dim_get_read_buffer_size()
+      The default (and minimum) is 16384 bytes.
+      These calls should be done before any other DIM calls.
+    - Fixed a bug in the Java DimBrowser class (the format was not returned correctly)
+
+04/05/2009
+Changes for version 19.01:
+    - A server can now publish to more than one DNS.
+      To use an extra DNS:
+	- in "C":
+		long dnsid;
+		char extra_dns[128];
+		...
+		dim_get_env_var("EXTRA_DNS_NODE", extra_dns, sizeof(extra_dns));
+		dnsid = dis_add_dns(extra_dns,0);
+		sprintf(name1,"NewService%d",i);
+		dis_add_service_dns(dnsid, name1, "I", &NewData, sizeof(NewData), 
+					(void *)0, 0 );
+		dis_start_serving_dns(dnsid, "xx_new");
+
+	- in C++:
+		DimServerDns *newDns;
+		char *extraDns = 0;
+		DimService *new_servint;
+		...
+		extraDns = DimUtil::getEnvVar("EXTRA_DNS_NODE");
+		if(extraDns)
+			newDns = new DimServerDns(extraDns, 0, "new_TEST");
+		...
+		if(extraDns)
+			new_servint = new DimService(newDns, "new_TEST/INTVAL",ival);
+
+    - Removed all warnings from DIM sources so that it can be compiled with -Wall -Wextra on Linux
+    - Changed the makefiles so that the default on Linux is now 64 bits.
+	- The flag 32BITS=yes can be added in order to generate 32 bit code
+
+
+26/02/2009
+Changes for version 18.05:
+    - Made the callback for "DIS_DNS/SERVER_LIST" uninterruptible, so that two clients subscribing
+      would not get mixed up answers.
+    - The same for "<server>/SERVICE_LIST"
+    - Tryied to fix a DNS crash, introduced in v18r4 by releasing the connection when "informing clients".
+    - removed some "//" comments in "C"
+
+
+20/02/2009
+Changes for version 18.04:
+    - Changed the dim_wait() mechanism, so that it works for several threads in parallel:
+	- On Linux it was based on POSIX semaphores now it is based on POSIX "condition 
+          variables"
+	- On Windows it was based on "Auto Reset Events" now it uses "Manual Resel "Events"
+    - The DNS should now correctly update the "DIS_DNS/SERVER_LIST" service. It used to report
+      a new server, even when the services already existed and the server was killed by the DNS.
+      (And never report it killed). It also didn't report correctly when a server went out of "ERROR"
+      (this is reported as a "+" as for a new server). 
+
+
+05/02/2009
+Changes for version 18.03:
+    - The list of registered services in a server could get corrupted in some rare cases
+      making the server crash - fixed.
+    - If the DNS couldn't talk to a client it could sometimes hang - fixed.
+    - Java client modifications:
+	- DimUpdatedInfo was not working correctly - fixed in dim_jni.c.
+	- Implemented DimRpcInfo
+	- Changed the DimBroser class to use DimRpcInfo.
+	- Added a jdim.jar file in the jdim/classes directory of the DIM distribution 
+
+
+15/01/2009
+Changes for version 18.02:
+    - Added the following functions:
+	- C++ Client
+		- int DimClient.getServerPid()
+	- Java Client
+		- int DimClient.getServerPid()
+		- String[] DimBrowser.getServers()
+		- String DimBrowser.getServerNode(String server)
+		- int DimBrowser.getServerPid(String server)
+
+
+09/01/2009
+Changes for version 18.01:
+    - Added in the distribution the Visual Studio 8 dlls and manifest. Otherwise
+      it would not work on most PCs.
+
+
+03/12/2008
+Changes for version 18.00:
+    - The Windows execulables and libraries are now built using Visual Studio 8
+    - Some changes added by GSI mainly in the Java Native Interface
+
+
+06/11/2008
+Changes for version 17.12:
+    - Client functionality:
+    	- Added a new function dic_stop(), to close anything related to DIM 
+          for a client
+    	- Added the function dic_get_server_pid(). Similar to dic_get_server(). 
+          Can be executed in a callback to retrieve the pid of the current server
+    - DimBrowser Class:
+        - DimBrowser::getServices() used to create and destroy the DimRpc connection
+          to the Dns every time it was called. This was heavy if called in a loop.
+          Now the connection is maintained until the DimBrowser itself is destroyed.
+	- A new method DimBrowser::getNextServer(char *&server, char *&node, int *pid)
+          has been created. similar to the previous one but returns also the server pid.
+    - DNS
+	- The DNS was still doing some blocking write calls to servers or clients.
+          Now all write calls have a timeout and can not block forever.
+    - Linux DID
+	- The "Subscribe" button was subscribing to services with update rate of 10 seconds.
+	  This was misleading, the users could think the server was calling update_service
+          when it wasn't.
+          Now there are two Subscribe buttons ("on change" or "Update rate of 10 seconds").
+    - DimDridge
+	- Accepts an extra flag "-copy" which provokes an internal copy of the data.
+
+
+08/09/2008
+Changes for version 17.11:
+    - Some DIM Processes, servers or clients could enter a loop taking 100 % CPU 
+      time in some rare occasions, fixed.
+    - Added some protections when removing services in the DimBridge.
+
+
+30/08/2008
+Changes for version 17.10:
+    - Some DIM Processes, servers or clients would not reconnect when the DNS was
+      restarted. Fixed two cause:
+	- Some processes in Linux were stuck reading from the DNS socket
+	- Some others "forgot" to set a timer under very special conditions
+    - Changed some of the DNS debug messages to be more explicit.
+
+
+21/07/2008
+Changes for version 17.09:
+    - DIM error messages were not being flushed when the output was redirected 
+      to a logfile, fixed.
+
+
+18/07/2008
+Changes for version 17.08:
+    - Sometimes a server or a client could do a read on a sockect that had just
+      been closed which left them hanging forever - fixed.
+
+
+01/07/2008
+Changes for version 17.07:
+    - The DimTimer was sometimes not started when the constructor was called
+      with a time argument.
+    - Clients could not connect to more than 1024 servers - fixed.
+      (if the machine allows more than 1024 connections)
+
+
+30/06/2008
+Changes for version 17.06:
+    - Corrected the makefile for Darwin, now the number of accepted connections is 
+      increased to 8192 only for Linux.
+    - Fixed a bug in the DimTimer, it used to accept to be re-started, but then crashed
+      at destruction time if not stopped the same number of times. Now it can not be
+      re-started.
+    - The Dns used to ask servers to re-register at regular intervals when they were not 
+      sending their watchdog messages (i.e. they were in "ERROR", red in DID). Now the
+      DNS only asks once (unless they answer). This could cause the DNS to hang if
+      servers were in ERROR for a long time.
+    - The Dns now accepts a command line parameter: -d to print debug messages.
+    - The clients were not handling properly the case when they could contact the DNS
+      but then they could not contact the server that the DNS gave them (either because
+      of a firewall or because the server run on an inaccessible network). In this case
+      the clients would timeout trying to contact the server for each service and kept
+      asking the DNS the server coordinates over and over again. Now the clients keep
+      a list on unreacheable servers, so they don't try to contact the server for each 
+      service and only ask the DNS again with an increasing interval that goes from 10 
+      seconds to 2 minutes maximum.
+    - The server now issues an error message if the format string is too long.
+    - Linux DID
+        - Removed the command "Kill ALL Servers", it was too dangerous
+	- Now the list of nodes in "View Servers by Node" is in alphabetical order and
+	  in lowercase.
+
+
+30/04/2008
+Changes for version 17.05:
+    - In Linux in some cases a SIGPIPE was generated. Normally the DIM library sets
+      the behaviour of SIGPIPE to ignored, but if another library or main program
+      changes the SIGPIPE behaviour, then the application could exit when the SIGPIPE
+      was generated. Fixed - on Linux now the function send with flag MSG_NOSIGNAL
+      is used in oder to avoid generating SIGPIPE.
+
+
+
+4/04/2008
+Changes for version 17.04:
+    - Sometimes processes (servers or clients) would hang when the DNS was restarted.
+      This was due to a strange (Windows?) feature, by which a connect could succeed
+      after a connection was closed (and reported) on the other side. Fixed.
+
+
+
+27/03/2008
+Changes for version 17.03:
+    - Can now make DID for 64 bits by making DIM using:
+	gmake X64=yes all
+    - Increased the size of the Hash tables for the servers and the DNS.
+
+
+
+20/02/2008
+Changes for version 17.02:
+    - Fixed the Java DimTimer - stop() didn't work
+      Required changing dim_jni.c as well as the java part
+    - Fixed DIM for Darwin - had stopped working
+
+
+
+20/01/2008
+Changes for version 17.01:
+    - The Java API now works on 64 bit machines, Thanks to Joern Adamczewski.
+      Please use:
+	gmake JDIM=yes all
+    - Linux executables are now compiled/linked on slc4 (32 bits).
+    - Big changes in the DimRpcs both client and server part. Tere were bugs
+      related to the handling of timeouts.
+      Unfortunatelly all applications using RPCs need to be re-linked.
+
+
+
+-----------------------------------------------------------------------------------------
+Previous version history:
+
+07/12/2007
+Changes for version 16.14:
+    - Now by default All DIM processes are ready to accept up to 8192 connections, both
+      in Linux and Windows. Although in Linux for this to be effective the machine system 
+      limits must allow more than 1024 descriptors/open files per process.
+    - Fixed a little memory leak in tokenstring.cxx
+    - And a little compilation bug for some platforms in tcpip.c 
+
+
+15/05/2007
+Changes for version 16.13:
+    - If DIM_HOST_NODE is defined when starting up a server, a DIM client will now try 
+      two network interfaces in order to talk to that server and only give up if they both 
+      fail. First it will try the ip name or ip address specified by the server using 
+      DIM_HOST_NODE, if that fails it will try the ip address of the default interface
+      retrieved by the server using gethostname (and gethostbyname).
+      The changes basically affect the case in which the DIM_HOST_NODE given to the servers
+      is specified as IP address instad of an IP name. Otherwise this mechanism was already 
+      working.
+
+
+3/05/2007
+Changes for version 16.12:
+    - The Java version did not exit properly when main() terminated - fixed.
+
+
+25/04/2007
+Changes for version 16.11:
+    - On Linux the timeout to detect a lost connections (unplugged ethernet cable
+      or machine reboot) was too long, around 15 minutes - Fixed.
+      On Linux the KEEPALIVE feature is now used instead of a regular socket write,
+      all other platforms should work as before.
+
+
+21/02/2007
+Changes for version 16.10:
+    - Found a bug in dis_stop_serving: one socket connection was not closed - fixed.
+    - Implemented a new environment variable for the DNS: DIM_DNS_ACCEPTED_NODES
+      Can receive a list on nodes or domains separated by commas.
+      If the DNS receives a connection from a node not in this list, it will
+      reject it and kill the server or client requesting it.
+    - Fixed some C++ warnings.
+
+
+19/01/2007
+Changes for version 16.9:
+    - The modifications done in version 16.8 have introduced a bug:
+	- DIM servers would not behave properly (exit) when receiving a kill command
+          from the DNS (for duplicated services, not allowed host names or manual "kill")
+	  This is now fixed.
+
+
+30/10/2006
+Changes for version 16.8:
+    - Modified dis_stop_serving() and DimServer::stop() to completely stop DIM:
+	- Stop also the DIM threads.
+	- Release all allocated memory
+	- Allow a different port number when re-starting.
+
+
+11/07/2006
+Changes for version 16.7:
+    - Prepared for increasing the number of open connections per process
+      (On Linux still requires changing some parameters and recompiling the Dns)
+    - Fixed one error and several warnings for gcc 4.
+
+
+11/05/2006
+Changes for version 16.6:
+    - Sometimes a server or client would crash while exiting if the DNS was not running.
+      Fixed.
+    - Fixed the reporting of some ERROR messages on Windows (used to report error "0")
+    - Allowed dim_send_command to receive instead of -dns <node_name>
+	-dns <node_name>[:<port_number>]
+
+
+01/05/2006
+Changes for version 16.5:
+    - Big Spring Cleanup. Removed most warnings. Can now be compiled on
+      Windows with Warning Level 3 and on Linux with -Wall
+      (still not working for -ansi -pedantic...)
+    - When trying to access a server in a different network (i.e. not reacheable)
+      a client (for example DID) would take very very long to timeout - fixed.
+    - Added two new sets of functions that allow setting the DIM_DNS_NODE separately
+      for a server and a client in the same process:
+	- int dis_set_dns_node(char *node)
+	- int dis_get_dns_node(char *node)
+	- int dis_set_dns_port(int port)
+	- int dis_get_dns_port()
+
+	- int dic_set_dns_node(char *node)
+	- int dic_get_dns_node(char *node)
+	- int dic_set_dns_port(int port)
+	- int dic_get_dns_port()
+      These routines should be used instead of the equivalent ones starting with "dim_"
+      since these set the same DIM_DNS_NODE/port for both Server and client parts of a 
+      process.
+    - Adapted the C++ equivalents (DimClient::setDnsNode, etc. and DimServer::setDnsNode, 
+      etc.) to use the new routines, so they are now independent.
+      Adapted also the Java equivalents.
+    - Fixed DimBridge to use the new routines.
+    - Fixed a bug in DID that made it crash sometimes at startup (and also when the DNS 
+      restarted)!
+    - Found some very interesting features of DIM:
+        - In a node with two ethernet interfaces (so connected to two networks):
+	    - The DNS will answer to servers and client on both networks, only its server
+              part - DIS_DNS (the one that answers to DID and DimBrowser requests) would
+              in principle answer only to one of the networks (in principle the default
+              interface* but can be changed by setting the environment variable "DIM_HOST_NODE").    
+	    - But, in fact, if the DNS or any server is started with the environment variable 
+              DIM_HOST_NODE set to the interface that is not the default* one. Than both the 
+              DNS (including the server part) and the DIM servers will be accessible from both 
+              networks. For example DID will work fine on both networks.
+            * The command "hostname" will return the name of the default network interface.   
+
+    Note: As a result of inserting new functions the DIM shared library entry points have
+          changed, so all DIM Servers/Clients should be relinked (in particular in Linux).
+
+
+20/04/2006
+Changes for version 16.4:
+    - Optimized the DNS for providing the list or running servers dynamically
+      by subscribing to the service "DIS_DNS/SERVER_LIST"
+
+
+07/04/2006
+Changes for version 16.3:
+    - Upgraded to work on LynxOS Version 4. 
+      - Updated makefile for INTEL platform
+      - Updated some ifdefs based on the existence of __Lynx__
+
+
+10/03/2006
+Changes for version 16.2:
+    - Increased the listen queue. To avoid "Connection Refused" messages from servers
+      or from the DNS.
+
+
+28/02/2006
+Changes for version 16.1:
+    - Fixed the NO_THREADS option for LINUX, it had stopped working.
+    - DimInfo::getData() could return an invalid pointer if called before connecting
+      to the server (or discovering the server did not exist). Fixed 
+      (it now returns 0 in this case).
+
+
+09/11/2005
+Changes for version 16.0:
+    - Consolidated the new timer handling mechanism, should be much more precise.
+    - Fixed the RPC handling. Used to be based on timming assumptions.
+      Now uses a safe protocol to make sure the server is connected before sending 
+      an RPC request.
+    - Included in the distribution some performance measurements and a benchmark 
+      server and client. Sources in src/benchmark executables in /bin for windows
+      and /linux for linux.
+      Usage:
+	benchServer <message_size_in_bytes> <number_of_services>
+	benchClient
+      benchClient will run for a while and print the measurement results. 
+
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
Index: branches/testFACT++branch/dim/README_v20.txt
===================================================================
--- branches/testFACT++branch/dim/README_v20.txt	(revision 18277)
+++ branches/testFACT++branch/dim/README_v20.txt	(revision 18277)
@@ -0,0 +1,859 @@
+
+                    DIM version 20r13 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux, Darwin}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 2013.
+
+22/01/2014
+Changes for version 2013:
+    - Tried to improve in the DNS the handling of many connections at startup 
+      (and many applications "simultaneous" restart) 
+
+
+03/12/2014
+Changes for version 2012:
+    - In Linux the number of connections is now completely dynamic.
+      (replaced select by poll)
+    - Changed the default SEND and RECV buffer sizes per connection from 16Kb to 64Kb
+      (except for the DNS connections: 32 Kb, to limit the memory increase)
+    - Changed the DNS Keepalive timeout from 15 to 20 seconds (to use a little less CPU) 
+
+
+24/10/2014
+Changes for version 2011:
+    - Increased the Max. num of connections for DNS and servers to 16384 (from 8192)
+    - Increased also slightly the DNS hash table
+
+
+17/09/2014
+Changes for version 2010:
+    - When a client connects to a server using the IP Address, instead of IP name,
+      a reverse lookup "validity" test is no longer performed.
+    - Fixed the Error reporting for tcpip connections, messages like:
+      "(ERROR) Client Connecting to XXX on YYY: Success"
+      should no longer exist.
+    - The "C" version can now be called directly from C++ using only dis.h or dic.h
+      instead of dis.hxx or dic.hxx.
+      (several const definitions and "extern "C" added in included prototypes)
+
+
+17/07/2014
+Changes for version 2009:
+    - Tried to fix more "Invalid Service ID" messages when creating/deleting services/commands in a server.
+      (By protecting the service/command creation/destruction in C++)
+    - Fixed a problem for Raspberry Pi (where "char" is "unsigned char" by default)
+    - The feature of increasing the maximum nember of connections stopped working with glibc 2.19.
+      Fixed.
+
+
+05/04/2013
+Changes for version 2007:
+    - DIM servers were allocating a lot of (possibly) unnecessary memory at startup - fixed.
+    - Tried to fix "Invalid Service ID" messages when creating services/commands in a server.
+      (By protecting the service/command creation in C++)
+    - Fixed many compilation warnings when adding gcc flag -Wconvertion
+    - DIM releases are now:
+	- Windows:
+		- Compiled on Windows 7 Visual Studio 10
+		- Distributed in /bin32 for 32 bits and /bin for 64 bits
+	- Linux:
+		- Compiled on SLC6 with gcc 4.4
+		- Distributed in /linux for 64 bits 
+
+
+17/01/2013
+Changes for version 2006:
+    - Changes only affecting the Linux version of DIM:
+	- v20r5 changes related to removing the masking of signals could cause problems in single thread
+          applications, like smiGUI. The masking/unmasking of signals is now conditional, implemented by a 
+          global variable in the DIM shareable library.
+    	- Changed the DID makefile in order to make sure the correct libdim.so in used when linking.
+	- Changes in DID:
+		- When the list of nodes was long, the list was very slow to display - fixed.
+		- If it was really very long, it crashed - fixed.
+		- In nodes were reported by IPAdress, show servers by node didn't work - fixed.
+		
+		
+21/12/2012
+Changes for version 2005:
+    - Moved the WebDID sources to the src directory and the VS settings to the Visual directory
+    - In the Multithreaded (the default) version of DIM, signals are not touched anymore.
+      Before they were masked/unmasked at every dim lock/unlock occurence (Linux only).
+    - Fixes in WebDID:
+	- Now DIM nodes defined by an IP Address are shown properly (by IP Name)
+	- WebDID looks for the Javascript files in the same directory where its executable is
+          (independently of where it is started from) 
+
+
+21/11/2012
+Changes for version 2004:
+    - WebDid did not compile under SLC5, fixed.
+    - Removed several Compiler warnings under SLC5
+
+
+20/11/2012
+Changes for version 2003:
+    - Added the project settings for Visual Studio 10 in the Visual directory
+    - Added a bin64 directory containing binaries for Windows7 (and 2008 R2) 64 bits
+    - Added a prototype webDid. in order to use it:
+	- In the same machine when the DIM DNS runs start <dim>/WebDid/webDid
+	- In any machine from where the DIM DNS is reacheable on your favorite Web browser use as URL:
+		http://<DIM DNS node name>:2500 
+
+
+07/11/2012
+Changes for version 2002:
+    - Still problems with size=0 "no link" parameters - hopefully fixed.
+
+
+07/11/2012
+Changes for version 2001:
+    - First official release containing the Windows 64 bits fix.
+    - The changes in version v19r35 specifying the behaviour when giving a null pointer and size 0 as 
+      "no link" parameters only worked well in "C", not in C++ callbacks - fixed.
+ 
+
+04/10/2012
+Changes for version 19.39:
+    - Unfortunately Windows, unlike Linux, does not use LP64 convention for 64 bits, 
+      i.e. the type long is a 32 bit variable (?!?!?!)
+      So created a dim_long type which can always hold a pointer
+ 
+
+09/08/2012
+Changes for version 19.38:
+    - The timeout used by clients and servers to try to reconnect to a DNS was supposed to be random,
+      to avoid all processes retrying at the same time, but it wasn't - fixed.
+
+
+27/06/2012
+Changes for version 19.37:
+    - DIM DNS crashed for servers with a task name bigger than 80 characters - Fixed.
+
+
+22/06/2012
+Changes for version 19.36:
+    - The internal "DIS_DNS/KILL_SERVERS" command can now be used to pass a user defined exit_code to
+      the servers. The servers will get this exit_code in their exit_handler.
+      Although the exit_code passed to the "DIS_DNS/KILL_SERVERS" command is an integer, only the lower
+      16 bits can be used, i.e. only these bits are passed to the servers.
+
+
+24/05/2012
+Changes for version 19.35:
+    - Fixed the DimInfo() default constructor, now if the default constructor is called, it doesn't cause the 
+      destructor to crash anymore.
+    - Made available to DimInfo, DimStampedInfo, DimUpdatedInfo and DimCurrentInfo the method: 
+      	- void subscribe(char *name, void *nolink, int nolinksize, int time, DimInfoHandler *handler)
+      Like this the default constructor can be called and then this method called later to subscribe
+      whenever needed.
+    - The behaviour of giving a null pointer and size 0 as "no link" parameters was not completely
+      defined. The user could get back either a null pointer or an "invalid" pointer in the callbacks.
+      This is now well-defined: 
+        - If null pointer and size 0 is used at subscribe, the user will get null pointer and size 0 in the callback.
+        - If a negative size is passed at subscribe the callback is not called at all.
+
+
+03/05/2012
+Changes for version 19.34:
+    - Changed back to dna_write_nowait() the message that the server sends to the client when removing
+      a service. This was causing clients not to reconnect ever again when the server removed services.
+      (because the client would get the info much before the DNS, so it would keep trying to reconnect
+      and failing even though the service or even the server didn't exist anymore, without asking the DNS)
+    - Changed the client in order to avoid the behaviour above, i.e. if sending the service request fails it
+      asks the DNS again.
+
+
+23/04/2012
+Changes for version 19.33:
+    - A bug was introduced in v19r30. When trying to retry immediately, a dtq_start_timer(0)
+      was used (like for dna_write). This is not possible because the callback is not protected 
+      by a DIM lock. Fixed. (in v19r32)
+    - Small tidy up in dic.c and protecting the move_to_xxx functions.
+    - When a server received an unsubscribe from the last subscribed service of a client it was closing the
+      connection to the client, this is not good because there could be commands being sent. In any case
+      it should be up to the client to close the connection - Fixed.
+    - dim_send_command now accepts a "-i" argument to send integer data (default is string)
+
+
+30/03/2012
+Changes for version 19.31:
+    - changed dna_write to dna_write_nowait for servers when removing a service and for clients
+      when releasing and subscribing to a service. Dna_write cannot be used for the same connection
+      as dna_write_nowait as it will mingle the packets.
+    - Removed more compiler warnings.
+
+
+14/03/2012
+Changes for version 19.30:
+    - Sometimes when trying to open a connection to a server the client could backoff for too
+      long (10 seconds), now it will retry immediately and then at increasing intervals.
+    - dim_stop() would sometimes not properly stop all threads if a new connection was received
+      in the mean time.
+    - The DimServerDns destructor could crash, fixed.
+    - Removed some compiler warnings about variables set but not used.
+    - Two new functions available:
+	- dim_set_listen_backlog(int size)
+	- int dim_get_listen_backlog()
+    - The DNS will set the listen_backlog to 1024 at startup, but the OS will truncate it to
+      a maximum limit (available in /proc/sys/net/core/somaxconn, linux default=128), 
+      while for servers the constant SOMAXCONN is used.
+
+
+06/02/2012
+Changes for version 19.28:
+    - Added more log messages when a "Write Timeout" occurs to know where it originated.
+    - A server could sometimes not release the connection in case of a "Write Timeout", and
+      then keep on timing out for each message on this connection - fixed.
+
+
+19/01/2012
+Changes for version 19.27:
+    - Updated the DIM Makefiles for MacOSX (Darwin)
+    - Added New possibilities to change DIM timeouts:
+	- 2 New Environment variables:
+	    - DIM_WRITE_TMOUT				(default: 5)
+	    - DIM_KEEPALIVE_TMOUT			(default: 15)
+	- Same functionality as the functions:
+	    - dim_set_write_timeout(int secs)
+	    - int dim_get_write_timeout()
+	    - dim_set_keepalive_timeout(int secs)	//new
+	    - int dim_get_keepalive_timeout()		//new
+	- The functions have precedence over the environment variables.
+    - The server per client exit_handler functionality 
+      (provided by dis_add_client_exit_handler()/dis_set_client_exit_handler())
+      wan not always working correctly (in case of write timeouts) - fixed.
+    - Changed the reporting of "Write Tiemout":
+	- Used to report only: 
+	    - "ERROR: Write Timeout, disconnecting from..."
+	- Now reports:
+	    - "WARNING: Write Timeout, writing to ..."
+	    - If it disconnects: "ERROR: Write Timeout, disconnecting from ..."
+	    - If it reconnects later: "INFO: Re-connected to ..." 
+
+
+14/09/2011
+Changes for version 19.26:
+    - In the notes for version 19.08 there is the following:
+    	- Since version v18r4 where dim_wait() was modified, dim_wait could hang in windows if
+      	  the wake_up event was triggered before dim_wait was called. Could affect smi++. Fixed.
+    - Amasingly enough this seems also to be the case for Linux, dim_wait could hang until there
+      was some new DIM activity, normally some timer firing... Fixed.
+    - The Linux DID now accepts an extra parameter: -dns=<dns_node_name>
+
+01/09/2011
+Changes for version 19.25:
+    - When a Client was releasing a service "at the same time" as the server was deleting the service,
+      The Connection could be released by mistake - fixed.
+    - The SERVICE_LIST service could be updated with an empty string if there were two consecutive 
+      dis_start_serving() - fixed.
+
+
+08/08/2011
+Changes for version 19.24:
+    - The funtion DimInfo::getFormat() never return the correct format of a service, if the first time
+      it was called, the service was not available, i.e. when called inside a "no_link" callback - Fixed.
+    - Deleting the last service of a server or stopping a server could generate "Invalid Service Id"
+      messages from the service that updates DID - Fixed.
+
+
+15/07/2011
+Changes for version 19.23:
+    - The new functions:
+	int DimClient::inCallback()
+	int DimServer::inCallback()
+      Can be used to find out if the function is being called in the context of a DIM callback
+      handler (they return 1 if yes, 0 if no).
+    - There was no way to "remove" an errorHandler or exitHandler in C++.
+      Now the following functions accept 0 as parameter:
+	DimClient::addErrorHandler(0)
+	DimServer::addErrorHandler(0)
+	DimServer::addExitHandler(0)
+	DimServer::addClientExitHandler(0)
+      In order to remove them.
+    - The Windows Visual Studio Manifest file distributed since version v19r19 was wrong, so the latest
+      DIM versions did not work on Windows machines without Visual Studio 8 installed - Fixed.
+
+
+21/06/2011
+Changes for version 19.22:
+    - DIM servers would hang when tring to exit due to "Services already declared", if the user
+      exitHandler() didn't directly call exit (instead tried to exit later in the main program).
+      Fixed.
+    - Servers accept now also 'B' or 'V' as format, they are both equivalent to 'C'.
+    - In Linux when a server printed "Write timeout, disconecting from XXX", it didn't always
+      disconnect properly, so the client would not always reconnect afterwards. Fixed. 
+
+
+31/05/2011
+Changes for version 19.21:
+    - Fixed a bug in DimRpcInfo: the timer for the timeout was started too late and sometimes the
+      RPC data was received in the meantime, so the timer was never stopped. 
+
+
+04/05/2011
+Changes for version 19.20:
+    - Fixed a bug added in v19r18: The <server_name>/SERVICE_LIST was no longer reporting correctly
+      the disappearence of services (by a "-<service_name>" ). Fixed.
+
+
+27/04/2011
+Changes for version 19.19:
+    - Fixed a very very old (horrible) bug in dis.c and dns.c: there was a hardwired malloc(8), 
+      which was only ok for 32 bit machines. It's amazing this didn't bring more trouble...
+
+
+07/04/2011
+Changes for version 19.18:
+    - The standard server service <server_name>/SERVICE_LIST had problems reporting the correct
+      information when used by several clients in paralel - fixed.
+
+
+11/03/2011
+Changes for version 19.17:
+    - The TCPIP "listen" backlog for a server was increased for all servers (including the DNS)
+      from 16 to the constant SOMAXCONN (128 on Linux at the moment, 200 on Windows ?)
+    - After a "fork" the DIM initialization sequence guided by semaphores was not correctly
+      handled, this made the forked children hang and not respond to DIM anymore - fixed.
+
+
+23/02/2011
+Changes for version 19.16:
+    - DimServer::stop() did not correctly clear the ServerName - fixed.
+    - The Linux DID now prints the DNS it is connected to in the title bar.
+
+
+20/12/2010
+Changes for version 19.15:
+    - Still fixing dis_stop_serving():
+        - The DNS sometimes gets a remove service message from a server, after the server has
+          closed the connection, this was not handled properly - fixed.
+        - Fixed yet another detail (variable not cleared) in the thread handling at dis_stop_serving().
+	- dtq.c now clears all timer_queues at dis_stop_serving()
+	- Added some protections in case of closed connections.
+
+
+10/12/2010
+Changes for version 19.14:
+    - Still fixing dis_stop_serving():
+	- Adedd pthread_join in linux to wait for threads to die
+	- the following dis_start_serving() would not reconnect to the DNS if the DNS connection
+          was pending (i.e. the DNS was stopped or restarted)
+
+
+06/12/2010
+Changes for version 19.13:
+    - Fixed a few compiler warnings in dis.c
+    - Added #ifndef PXI around some Windows setPriority calls
+    - dis_stop_serving() did not completely clean-up DIM so that another dis_start_serving()
+      could be done properly after for example a "fork()". Fixed.
+
+
+20/09/2010
+Changes for version 19.12:
+    - Fixed a bug added when removing warnings in v19r10 (dis.c and dns.c).
+
+
+07/06/2010
+Changes for version 19.11:
+    - Added some protections in update_service() in order to try to solve a DIP issue.
+      (related to very frequent updates of the same service in different threads) 
+    - Added the possibility of defining timeouts for:
+	- DimBrowser::getServices 
+	- DimBrowser::getServers 
+	- DimBrowser::getServerServices 
+	- DimBrowser::getServerClients
+    - Added the possibility of retrieving the time a command arrived:
+	- int dis_get_timestamp(int service_id, int *secs, int *millisecs) in C
+	- int DimCommand::getTimestamp() and int DimCommand::getTimestampMillisecs() in C++
+    - Added a "const" keyword to the "char *format" parameter in the constructors of
+	- DimService and DimCommand
+    - Added a call DimCommand::hasNext(), can be used when commands are queued.
+    - Fixed a memory leak when using DimService::setData and then dynamically deleting the
+      DimService 
+
+
+17/02/2010
+Changes for version 19.10:
+    - Fixed a bug in the DNS related to the latest change (browsing for a single service name)
+      The DNS could crash when killing a server.
+    - Removed some compilation warnings 
+
+
+04/01/2010
+Changes for version 19.09:
+    - Created two new functions: dis_set_debug_on() and dis_set_debug_off(), these
+      enable or disable printing a message per service update
+    - Tried to protect against:
+	- a service being deleted from the server while it is being updated
+        - a client unsubscribing from a service while it is being updated.
+    - Optimized the DNS when browsing for a service search pattern without wildcards
+      (i.e. browsing for a single service name) 
+
+
+13/11/2009
+Changes for version 19.08:
+    - Since version v18r4 where dim_wait() was modified, dim_wait could hang in windows if
+      the wake_up event was triggered before dim_wait was called. Could affect smi++.
+      Fixed.
+    - Fixed a compilation bug in dis.c that affected some platforms.
+
+
+30/10/2009
+Changes for version 19.07:
+    - Some more bugs related to being able to publish to more that one DNS fixed.
+
+
+28/10/2009
+Changes for version 19.06:
+    - When opening DNS connections, when the DNS is not there, from a process that is at the 
+      same time a client and a server only one pending connection was used now two separate 
+      ones are created.
+    - Tried to fix a few more problems related to dis_stop_serving...
+
+
+26/10/2009
+Changes for version 19.05:
+    - dis_stop_serving had stopped working in version 19.4. So all servers that undeclared
+      all services and then tried to re-declare new ones would fail (corrupted server name).
+      Affected in particular the DimBridge
+
+
+27/08/2009
+Changes for version 19.04:
+    - Added the following functions:
+	Server part:
+		C - dis_get_n_clients(int service_id)
+		C++ - int DimService::getNClients()
+	Client part (C++ only):
+		DimClient::setNoDataCopy()
+		This will prevent any data copy in the client and the user should make 
+                sure that the data received from DIM is not used outside the callback
+                in order to benefir from this feature.
+    - Fixed the Java DIM Jar file, it was wrong in the previous version.
+
+
+31/07/2009
+Changes for version 19.03:
+    - Removed some more compilation warnings.
+    - Fixed a bug in the DNS. The mechanism for retrieving the "SERVER_LIST" when 
+      some server names were longer that 35 characters was very slow.
+
+
+06/07/2009
+Changes for version 19.02:
+    - Fixed a bug in the server part handling of RPCs, it created a memory leak.
+      It was using a separate thread to handle timeouts and there is no safe way to 
+      kill a thread from outside. Fixed.
+    	- the function dim_stop_thread() is now obsolete.
+    - Added the possibility to change the send and receive buffer sizes:
+	- int dim_set_write_buffer_size(int size)
+	- int dim_get_write_buffer_size()
+	- int dim_set_read_buffer_size(int size)
+	- int dim_get_read_buffer_size()
+      The default (and minimum) is 16384 bytes.
+      These calls should be done before any other DIM calls.
+    - Fixed a bug in the Java DimBrowser class (the format was not returned correctly)
+
+04/05/2009
+Changes for version 19.01:
+    - A server can now publish to more than one DNS.
+      To use an extra DNS:
+	- in "C":
+		long dnsid;
+		char extra_dns[128];
+		...
+		dim_get_env_var("EXTRA_DNS_NODE", extra_dns, sizeof(extra_dns));
+		dnsid = dis_add_dns(extra_dns,0);
+		sprintf(name1,"NewService%d",i);
+		dis_add_service_dns(dnsid, name1, "I", &NewData, sizeof(NewData), 
+					(void *)0, 0 );
+		dis_start_serving_dns(dnsid, "xx_new");
+
+	- in C++:
+		DimServerDns *newDns;
+		char *extraDns = 0;
+		DimService *new_servint;
+		...
+		extraDns = DimUtil::getEnvVar("EXTRA_DNS_NODE");
+		if(extraDns)
+			newDns = new DimServerDns(extraDns, 0, "new_TEST");
+		...
+		if(extraDns)
+			new_servint = new DimService(newDns, "new_TEST/INTVAL",ival);
+
+    - Removed all warnings from DIM sources so that it can be compiled with -Wall -Wextra on Linux
+    - Changed the makefiles so that the default on Linux is now 64 bits.
+	- The flag 32BITS=yes can be added in order to generate 32 bit code
+
+
+26/02/2009
+Changes for version 18.05:
+    - Made the callback for "DIS_DNS/SERVER_LIST" uninterruptible, so that two clients subscribing
+      would not get mixed up answers.
+    - The same for "<server>/SERVICE_LIST"
+    - Tryied to fix a DNS crash, introduced in v18r4 by releasing the connection when "informing clients".
+    - removed some "//" comments in "C"
+
+
+20/02/2009
+Changes for version 18.04:
+    - Changed the dim_wait() mechanism, so that it works for several threads in parallel:
+	- On Linux it was based on POSIX semaphores now it is based on POSIX "condition 
+          variables"
+	- On Windows it was based on "Auto Reset Events" now it uses "Manual Resel "Events"
+    - The DNS should now correctly update the "DIS_DNS/SERVER_LIST" service. It used to report
+      a new server, even when the services already existed and the server was killed by the DNS.
+      (And never report it killed). It also didn't report correctly when a server went out of "ERROR"
+      (this is reported as a "+" as for a new server). 
+
+
+05/02/2009
+Changes for version 18.03:
+    - The list of registered services in a server could get corrupted in some rare cases
+      making the server crash - fixed.
+    - If the DNS couldn't talk to a client it could sometimes hang - fixed.
+    - Java client modifications:
+	- DimUpdatedInfo was not working correctly - fixed in dim_jni.c.
+	- Implemented DimRpcInfo
+	- Changed the DimBroser class to use DimRpcInfo.
+	- Added a jdim.jar file in the jdim/classes directory of the DIM distribution 
+
+
+15/01/2009
+Changes for version 18.02:
+    - Added the following functions:
+	- C++ Client
+		- int DimClient.getServerPid()
+	- Java Client
+		- int DimClient.getServerPid()
+		- String[] DimBrowser.getServers()
+		- String DimBrowser.getServerNode(String server)
+		- int DimBrowser.getServerPid(String server)
+
+
+09/01/2009
+Changes for version 18.01:
+    - Added in the distribution the Visual Studio 8 dlls and manifest. Otherwise
+      it would not work on most PCs.
+
+
+03/12/2008
+Changes for version 18.00:
+    - The Windows execulables and libraries are now built using Visual Studio 8
+    - Some changes added by GSI mainly in the Java Native Interface
+
+
+06/11/2008
+Changes for version 17.12:
+    - Client functionality:
+    	- Added a new function dic_stop(), to close anything related to DIM 
+          for a client
+    	- Added the function dic_get_server_pid(). Similar to dic_get_server(). 
+          Can be executed in a callback to retrieve the pid of the current server
+    - DimBrowser Class:
+        - DimBrowser::getServices() used to create and destroy the DimRpc connection
+          to the Dns every time it was called. This was heavy if called in a loop.
+          Now the connection is maintained until the DimBrowser itself is destroyed.
+	- A new method DimBrowser::getNextServer(char *&server, char *&node, int *pid)
+          has been created. similar to the previous one but returns also the server pid.
+    - DNS
+	- The DNS was still doing some blocking write calls to servers or clients.
+          Now all write calls have a timeout and can not block forever.
+    - Linux DID
+	- The "Subscribe" button was subscribing to services with update rate of 10 seconds.
+	  This was misleading, the users could think the server was calling update_service
+          when it wasn't.
+          Now there are two Subscribe buttons ("on change" or "Update rate of 10 seconds").
+    - DimDridge
+	- Accepts an extra flag "-copy" which provokes an internal copy of the data.
+
+
+08/09/2008
+Changes for version 17.11:
+    - Some DIM Processes, servers or clients could enter a loop taking 100 % CPU 
+      time in some rare occasions, fixed.
+    - Added some protections when removing services in the DimBridge.
+
+
+30/08/2008
+Changes for version 17.10:
+    - Some DIM Processes, servers or clients would not reconnect when the DNS was
+      restarted. Fixed two cause:
+	- Some processes in Linux were stuck reading from the DNS socket
+	- Some others "forgot" to set a timer under very special conditions
+    - Changed some of the DNS debug messages to be more explicit.
+
+
+21/07/2008
+Changes for version 17.09:
+    - DIM error messages were not being flushed when the output was redirected 
+      to a logfile, fixed.
+
+
+18/07/2008
+Changes for version 17.08:
+    - Sometimes a server or a client could do a read on a sockect that had just
+      been closed which left them hanging forever - fixed.
+
+
+01/07/2008
+Changes for version 17.07:
+    - The DimTimer was sometimes not started when the constructor was called
+      with a time argument.
+    - Clients could not connect to more than 1024 servers - fixed.
+      (if the machine allows more than 1024 connections)
+
+
+30/06/2008
+Changes for version 17.06:
+    - Corrected the makefile for Darwin, now the number of accepted connections is 
+      increased to 8192 only for Linux.
+    - Fixed a bug in the DimTimer, it used to accept to be re-started, but then crashed
+      at destruction time if not stopped the same number of times. Now it can not be
+      re-started.
+    - The Dns used to ask servers to re-register at regular intervals when they were not 
+      sending their watchdog messages (i.e. they were in "ERROR", red in DID). Now the
+      DNS only asks once (unless they answer). This could cause the DNS to hang if
+      servers were in ERROR for a long time.
+    - The Dns now accepts a command line parameter: -d to print debug messages.
+    - The clients were not handling properly the case when they could contact the DNS
+      but then they could not contact the server that the DNS gave them (either because
+      of a firewall or because the server run on an inaccessible network). In this case
+      the clients would timeout trying to contact the server for each service and kept
+      asking the DNS the server coordinates over and over again. Now the clients keep
+      a list on unreacheable servers, so they don't try to contact the server for each 
+      service and only ask the DNS again with an increasing interval that goes from 10 
+      seconds to 2 minutes maximum.
+    - The server now issues an error message if the format string is too long.
+    - Linux DID
+        - Removed the command "Kill ALL Servers", it was too dangerous
+	- Now the list of nodes in "View Servers by Node" is in alphabetical order and
+	  in lowercase.
+
+
+30/04/2008
+Changes for version 17.05:
+    - In Linux in some cases a SIGPIPE was generated. Normally the DIM library sets
+      the behaviour of SIGPIPE to ignored, but if another library or main program
+      changes the SIGPIPE behaviour, then the application could exit when the SIGPIPE
+      was generated. Fixed - on Linux now the function send with flag MSG_NOSIGNAL
+      is used in oder to avoid generating SIGPIPE.
+
+
+
+4/04/2008
+Changes for version 17.04:
+    - Sometimes processes (servers or clients) would hang when the DNS was restarted.
+      This was due to a strange (Windows?) feature, by which a connect could succeed
+      after a connection was closed (and reported) on the other side. Fixed.
+
+
+
+27/03/2008
+Changes for version 17.03:
+    - Can now make DID for 64 bits by making DIM using:
+	gmake X64=yes all
+    - Increased the size of the Hash tables for the servers and the DNS.
+
+
+
+20/02/2008
+Changes for version 17.02:
+    - Fixed the Java DimTimer - stop() didn't work
+      Required changing dim_jni.c as well as the java part
+    - Fixed DIM for Darwin - had stopped working
+
+
+
+20/01/2008
+Changes for version 17.01:
+    - The Java API now works on 64 bit machines, Thanks to Joern Adamczewski.
+      Please use:
+	gmake JDIM=yes all
+    - Linux executables are now compiled/linked on slc4 (32 bits).
+    - Big changes in the DimRpcs both client and server part. Tere were bugs
+      related to the handling of timeouts.
+      Unfortunatelly all applications using RPCs need to be re-linked.
+
+
+
+-----------------------------------------------------------------------------------------
+Previous version history:
+
+07/12/2007
+Changes for version 16.14:
+    - Now by default All DIM processes are ready to accept up to 8192 connections, both
+      in Linux and Windows. Although in Linux for this to be effective the machine system 
+      limits must allow more than 1024 descriptors/open files per process.
+    - Fixed a little memory leak in tokenstring.cxx
+    - And a little compilation bug for some platforms in tcpip.c 
+
+
+15/05/2007
+Changes for version 16.13:
+    - If DIM_HOST_NODE is defined when starting up a server, a DIM client will now try 
+      two network interfaces in order to talk to that server and only give up if they both 
+      fail. First it will try the ip name or ip address specified by the server using 
+      DIM_HOST_NODE, if that fails it will try the ip address of the default interface
+      retrieved by the server using gethostname (and gethostbyname).
+      The changes basically affect the case in which the DIM_HOST_NODE given to the servers
+      is specified as IP address instad of an IP name. Otherwise this mechanism was already 
+      working.
+
+
+3/05/2007
+Changes for version 16.12:
+    - The Java version did not exit properly when main() terminated - fixed.
+
+
+25/04/2007
+Changes for version 16.11:
+    - On Linux the timeout to detect a lost connections (unplugged ethernet cable
+      or machine reboot) was too long, around 15 minutes - Fixed.
+      On Linux the KEEPALIVE feature is now used instead of a regular socket write,
+      all other platforms should work as before.
+
+
+21/02/2007
+Changes for version 16.10:
+    - Found a bug in dis_stop_serving: one socket connection was not closed - fixed.
+    - Implemented a new environment variable for the DNS: DIM_DNS_ACCEPTED_NODES
+      Can receive a list on nodes or domains separated by commas.
+      If the DNS receives a connection from a node not in this list, it will
+      reject it and kill the server or client requesting it.
+    - Fixed some C++ warnings.
+
+
+19/01/2007
+Changes for version 16.9:
+    - The modifications done in version 16.8 have introduced a bug:
+	- DIM servers would not behave properly (exit) when receiving a kill command
+          from the DNS (for duplicated services, not allowed host names or manual "kill")
+	  This is now fixed.
+
+
+30/10/2006
+Changes for version 16.8:
+    - Modified dis_stop_serving() and DimServer::stop() to completely stop DIM:
+	- Stop also the DIM threads.
+	- Release all allocated memory
+	- Allow a different port number when re-starting.
+
+
+11/07/2006
+Changes for version 16.7:
+    - Prepared for increasing the number of open connections per process
+      (On Linux still requires changing some parameters and recompiling the Dns)
+    - Fixed one error and several warnings for gcc 4.
+
+
+11/05/2006
+Changes for version 16.6:
+    - Sometimes a server or client would crash while exiting if the DNS was not running.
+      Fixed.
+    - Fixed the reporting of some ERROR messages on Windows (used to report error "0")
+    - Allowed dim_send_command to receive instead of -dns <node_name>
+	-dns <node_name>[:<port_number>]
+
+
+01/05/2006
+Changes for version 16.5:
+    - Big Spring Cleanup. Removed most warnings. Can now be compiled on
+      Windows with Warning Level 3 and on Linux with -Wall
+      (still not working for -ansi -pedantic...)
+    - When trying to access a server in a different network (i.e. not reacheable)
+      a client (for example DID) would take very very long to timeout - fixed.
+    - Added two new sets of functions that allow setting the DIM_DNS_NODE separately
+      for a server and a client in the same process:
+	- int dis_set_dns_node(char *node)
+	- int dis_get_dns_node(char *node)
+	- int dis_set_dns_port(int port)
+	- int dis_get_dns_port()
+
+	- int dic_set_dns_node(char *node)
+	- int dic_get_dns_node(char *node)
+	- int dic_set_dns_port(int port)
+	- int dic_get_dns_port()
+      These routines should be used instead of the equivalent ones starting with "dim_"
+      since these set the same DIM_DNS_NODE/port for both Server and client parts of a 
+      process.
+    - Adapted the C++ equivalents (DimClient::setDnsNode, etc. and DimServer::setDnsNode, 
+      etc.) to use the new routines, so they are now independent.
+      Adapted also the Java equivalents.
+    - Fixed DimBridge to use the new routines.
+    - Fixed a bug in DID that made it crash sometimes at startup (and also when the DNS 
+      restarted)!
+    - Found some very interesting features of DIM:
+        - In a node with two ethernet interfaces (so connected to two networks):
+	    - The DNS will answer to servers and client on both networks, only its server
+              part - DIS_DNS (the one that answers to DID and DimBrowser requests) would
+              in principle answer only to one of the networks (in principle the default
+              interface* but can be changed by setting the environment variable "DIM_HOST_NODE").    
+	    - But, in fact, if the DNS or any server is started with the environment variable 
+              DIM_HOST_NODE set to the interface that is not the default* one. Than both the 
+              DNS (including the server part) and the DIM servers will be accessible from both 
+              networks. For example DID will work fine on both networks.
+            * The command "hostname" will return the name of the default network interface.   
+
+    Note: As a result of inserting new functions the DIM shared library entry points have
+          changed, so all DIM Servers/Clients should be relinked (in particular in Linux).
+
+
+20/04/2006
+Changes for version 16.4:
+    - Optimized the DNS for providing the list or running servers dynamically
+      by subscribing to the service "DIS_DNS/SERVER_LIST"
+
+
+07/04/2006
+Changes for version 16.3:
+    - Upgraded to work on LynxOS Version 4. 
+      - Updated makefile for INTEL platform
+      - Updated some ifdefs based on the existence of __Lynx__
+
+
+10/03/2006
+Changes for version 16.2:
+    - Increased the listen queue. To avoid "Connection Refused" messages from servers
+      or from the DNS.
+
+
+28/02/2006
+Changes for version 16.1:
+    - Fixed the NO_THREADS option for LINUX, it had stopped working.
+    - DimInfo::getData() could return an invalid pointer if called before connecting
+      to the server (or discovering the server did not exist). Fixed 
+      (it now returns 0 in this case).
+
+
+09/11/2005
+Changes for version 16.0:
+    - Consolidated the new timer handling mechanism, should be much more precise.
+    - Fixed the RPC handling. Used to be based on timming assumptions.
+      Now uses a safe protocol to make sure the server is connected before sending 
+      an RPC request.
+    - Included in the distribution some performance measurements and a benchmark 
+      server and client. Sources in src/benchmark executables in /bin for windows
+      and /linux for linux.
+      Usage:
+	benchServer <message_size_in_bytes> <number_of_services>
+	benchClient
+      benchClient will run for a while and print the measurement results. 
+
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
Index: branches/testFACT++branch/dim/README_v9.txt
===================================================================
--- branches/testFACT++branch/dim/README_v9.txt	(revision 18277)
+++ branches/testFACT++branch/dim/README_v9.txt	(revision 18277)
@@ -0,0 +1,112 @@
+
+                    DIM version 9.8 Release Notes
+
+Notes 1 and 2 for Unix Users only
+NOTE 1: In order to "make" DIM two environment variables should be set:
+	OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux}
+	DIMDIR = the path name of DIM's top level directory
+	The user should then go to DIM's top level directory and do:
+	> source .setup
+	> gmake all
+	Or, if there is no support for C++ on the machine:
+	> gmake CPP=no all
+
+NOTE 2: The Name Server (Dns), DID, servers and clients (if running in 
+	background) should be started whith the output redirected to a 
+	logfile ex:
+		Dns </dev/null >& dns.log &
+
+NOTE 3: The Version Number service provided by servers is now set to 908
+	(version 9.8).
+  
+Changes for version 9.0:
+
+   In order to increase the compatibility between Windows and Linux and
+   to respect CVS rules the following modifications have been done:
+
+      - C++ files have been renamed from .cc to .cxx and include files from
+	.hh to .hxx
+
+      - Include files are in "./dim" directory
+        (Source files are now in the "./src" directory)
+
+      - Windows executables and libraries are in "./bin"
+      - Linux executables and libraries are "./linux"
+
+      - Windows developper studio setting are in "./Visual"
+      - Linux Makefiles are in the top directory
+
+Changes for version 9.1:
+
+    Fixed some "Harp" problems:
+      - Fixed a bug causing a loop in the timer handling 
+      - Optimized dns connection handling for many services
+      - Fixed a re-connection bug for clients 
+      
+Changes for version 9.2:
+
+      - Created the static methods:
+		DimServer::autoStartOff();
+		DimServer::autoStartOn();
+	Which prevents/allows DimServices to be declared to the Name Server as
+	soon as they are created. if "autoStart" is set Off the user has to call
+	DimServer::start(char *serverName) when all services have been declared.
+	By default autoStart is On
+
+Changes for version 9.3:
+
+      - Created a new Utility: DimBridge - It forwards DIM Services (and Commands)
+	from one Name Server to another (to bypass firewalls)
+      - Fixed a bug in tcpip.c - which prevents a DIM Server to send test messages to
+	himself (related to the above utility).
+
+Changes for version 9.4:
+
+      - Merged DID and XDID (DID should now work on all UNIX flavours)
+      - Allow users to select the ethernet interface (or to specify a complete 
+        ipname, with the domain, when not available by default):
+		setenv DIM_HOST_NODE <ipname>
+	Before starting up a DIM server 
+ 
+Changes for version 9.5:
+
+      - Added an environment variable DIM_DNS_PORT allowing users to specify a
+	different port number (default is 2505) for the DNS. This allows 
+	starting more than one DIM Name Servers (DNSs) on the same machine.
+      - Accomodated for a Solaris "feature": ioctl FIONREAD which should 
+        return the number of bytes waiting to be read on a socket sometimes 
+	returns '0' when there are bytes to read. This provoked undesired 
+        "disconnections" in BaBar.
+      - Fixed a bug related to the padding of structures (characters following
+        an odd number of shorts)
+      - Fixed a bug in the retry mechanism when writting to a full socket. The
+        problem appeared when the connection was killed while retrying.
+      - Did (Unix/Linux version) now allows sending formatted commands (i.e. 
+        structures) to a server. Also services are now visualised in a 
+	formatted manner.
+
+Changes for version 9.6:
+      - Fixed DID: it crashed when a server name was very big (Motif) and
+        it didn't remove servers that died while being in error (red).
+      - Fixed a bug in the client library: sometimes services where requested
+	from the name server more than once unnecessarily.
+      - Fixed a bug in the server library: Sometimes the server crashed if it 
+	was updating a service when the client was killed or died.
+
+Changes for version 9.7
+      - Fixed a bug introduced in version 9.6 (related to the last point).
+        Sometimes servers would leave some connections open and started using
+        all the CPU (involves dis.c and tcpip.c).
+      - Upgraded DID to support very long server names.
+
+Changes for version 9.8
+      - Fixed a bug in DID: it crashed when a service name to be viewed was
+        typed in by hand
+      - Fixed a bug in dis.c: Servers would not register their services with 
+        the DNS if the number of services was a multiple of 100.
+ 
+Please check the Manual for more information at:
+    http://www.cern.ch/dim
+
+
+
Index: branches/testFACT++branch/dim/WebDID/did.js
===================================================================
--- branches/testFACT++branch/dim/WebDID/did.js	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/did.js	(revision 18277)
@@ -0,0 +1,616 @@
+ 
+Ext.require(['*']);
+
+Ext.onReady(function(){
+
+
+    var randomNumber = Math.floor(Math.random()*10000001);
+
+    Ext.QuickTips.init();
+
+    var storeNodes = Ext.create('Ext.data.TreeStore', {
+        proxy: {
+            type: 'rest',
+            url: '/didData.json',
+	    extraParams: {
+		browser: randomNumber
+	    },
+            reader: {
+                type: 'json',
+                root: 'children'
+            }
+        },
+ 	autoLoad: false,
+        folderSort: true,
+        sorters: [{
+            property: 'text',
+            direction: 'ASC'
+        }],
+        root: {
+            text: 'TopNode',
+            id: 'src',
+            expanded: true
+        },
+        listeners: {
+		load: function(myStore, node, records, successful, eopts) {
+//			if(node.get('text') == "Nodes")
+//		document.write("I am here "+node.text+" "+node.get('text'));
+//				node.expand();
+//			serviceInfo.update(node.get('text'));
+//		var node = getNodeById('Nodes');
+//			node.expand();
+//			node.expandChildren();
+//		        searchInfo.update("Expanding " +node.get('text'));
+			setTimeout(expandRoot, 100);
+		}
+//		refresh: function(myStore, eopts) {
+//		        searchInfo.update("Refreshing");
+//			node.expand(1);
+//			serviceInfo.update("refresh "+myStore.getName());
+//		}
+//		beforeexpand: function( node, eopts) {
+//			this.load({
+//		        params: {
+//		            node: node.text
+//			}
+//			});
+//		}
+	}
+     });
+
+    function expandRoot()
+    {
+	var node;
+
+    	node = storeNodes.getRootNode();
+	node.expandChildren();
+    }
+
+    var storeServices = Ext.create('Ext.data.TreeStore', {
+        proxy: {
+            type: 'rest',
+            url: '/didServices.json',
+ 	    extraParams: {
+		browser: randomNumber
+	    },
+            reader: {
+                type: 'json',
+                root: 'children'
+            }
+        },
+        folderSort: true,
+        sorters: [{
+            property: 'text',
+            direction: 'ASC'
+        }],
+        root: {
+            text: 'TopNode',
+            id: 'src',
+            expanded: true
+        },
+        listeners: {
+		load: function(myStore, node, records, successful, eopts) {
+			node.expand(1);
+		}
+        }	
+    });
+
+    function clearServices()
+    {
+	storeServices.load();
+	serviceInfoArea.setVisible(1);
+	commandInfoArea.setVisible(0);
+	serviceInfoArea.update("");
+    }
+ 
+    var serviceInfoArea = Ext.create('Ext.Panel', {
+        layout: 'fit',
+        id: 'details-panel',
+        title: 'Service Info',
+        width: 580,
+	flex: 3,
+        autoScroll: true,
+	border: false,
+        html: '',
+    	tools: [{ 
+		type: 'gear',
+		id: 'update',
+		handler: function(e, toolEl, panel, tc) {
+			UpdateButton = tc;
+			if(UpdateService)
+			{
+				UpdateService = 0;
+				tc.setType('refresh');
+//				tc.show();
+//console.log("changed icon 1", UpdateService);
+			}
+			else
+			{
+				UpdateService = 1;
+				tc.setType('gear');
+//				tc.show();
+//console.log("changed icon 2", UpdateService);
+			}
+		} 
+  	}]
+    });
+
+    var serviceButton = Ext.create('Ext.Button', {
+        text: 'Stop Updating',
+        margin: '5 5 5 5',
+	handler: function() {
+//console.log('changed icon');
+//	    var pattern = commandData.getRawValue();
+//	    query(pattern, -1);	
+	}
+    });
+/*
+    var serviceInfoArea = Ext.create('Ext.form.Panel', {
+        layout: 'vbox',
+        id: 'svc-details-panel',
+        title: 'Service Info',
+        width: 580,
+//	flex: 3,
+//        autoScroll: true,
+	border: false,
+//        html: 'Command test'
+	align:'stretch',
+    	tools: [{ 
+		type: 'gear',
+		handler: function(e, toolEl, panel, tc) {
+			UpdateButton = tc;
+			if(UpdateService)
+			{
+				UpdateService = 0;
+				tc.setType('refresh');
+//				tc.show();
+//console.log("changed icon 1", UpdateService);
+			}
+			else
+			{
+				UpdateService = 1;
+				tc.setType('gear');
+//				tc.show();
+				doGetService();
+//console.log("changed icon 2", UpdateService);
+			}
+		} 
+  	}],
+	items: [serviceButton,serviceInfo]	
+    });
+*/
+    var commandInfo = Ext.create('Ext.Panel', {
+        layout: 'fit',
+//        id: 'details-panel',
+//        title: 'Service Info',
+        width: 580,
+//	flex: 3,
+//        autoScroll: true,
+	border: false,
+        margin: '5 5 5 5',
+        html: 'Some Info'
+    });
+
+
+    var commandData = Ext.create('Ext.form.field.Text', {
+        width: 400,
+//        id: 'pattern',
+	xtype: 'textfield',
+	name: 'Search pattern',
+	labelAlign: 'top',
+	fieldLabel: "Please enter items separated by spaces:<br />(for example: 2 0x123 'A' 23.4 \"a text\")",
+	labelPad: 5,
+	labelSeparator: "",
+//	labelWidth: 45,
+//	allowBlank: false,
+        margin: '5 5 5 5'
+    });
+
+    var commandButton = Ext.create('Ext.Button', {
+        text: 'Send',
+        margin: '5 5 5 5',
+	handler: function() {
+	    var pattern = commandData.getRawValue();
+	    query(pattern, -1);	
+	}
+    });
+	
+    var commandInfoArea = Ext.create('Ext.form.Panel', {
+        layout: 'vbox',
+        id: 'cmd-details-panel',
+        title: 'Send Command',
+        width: 580,
+//	flex: 3,
+//        autoScroll: true,
+	border: false,
+//        html: 'Command test'
+	align:'stretch',
+	items: [commandInfo, commandData, commandButton]	
+    });
+
+    var serviceCommandArea = Ext.create('Ext.form.Panel', {
+        layout: 'vbox',
+//        title: 'Service Info',
+        width: 580,
+        region: 'east',
+	align:'stretch',
+	items: [serviceInfoArea, commandInfoArea]	
+    });
+/*
+    var serviceInfo = Ext.create('Ext.Panel', {
+        id: 'details-panel',
+        title: 'Service Info',
+        region: 'east',
+//        bodyStyle: 'padding-bottom:15px;background:#eee;',
+        autoScroll: true,
+        html: ''
+    });
+*/
+
+    var HTTPPacket = new XMLHttpRequest();
+    HTTPPacket.onreadystatechange = process;
+    var HTTPPollPacket = new XMLHttpRequest();
+    HTTPPollPacket.onreadystatechange = pollAnswer;
+    var HTTPQueryPacket = new XMLHttpRequest();
+    HTTPQueryPacket.onreadystatechange = queryAnswer;
+    var requestNumber = 0;
+    var LastService = "";
+    var LastId = "";    
+    var forceUpdate = 0;
+    var timeoutid;
+    var pollid;
+    var CurrService = "";
+    var OldNServices = 0;
+    var OldNServers = 0;
+    var OldNnodes = 0;
+    var OldNSearch = -1;
+    var UpdateService = 1;
+    var UpdateButton = 0;
+
+
+    function poll()
+    {
+//	if(!pollid)
+//		return;
+	requestNumber = requestNumber + 1;
+	HTTPPollPacket.open( "GET", "/didPoll.json/src?dimservice="+CurrService+"&reqNr="+requestNumber+"&reqId="+randomNumber+"&force=0", true ); 
+	HTTPPollPacket.send( null );
+    }
+    function pollAnswer()
+    {
+	var answer;
+	if ( HTTPPollPacket.readyState != 4 )
+		return;
+	answer = HTTPPollPacket.responseText;
+	if(answer == "")
+	{
+		pollid = setTimeout(poll, 5000);
+		return;
+	}
+	var items = answer.split(" ");
+	if((items[0] != OldNServices) || (items[1] != OldNServers))
+	{
+//	    storeHeader.load(); 
+	    headerList.update(items[1]+" Servers Known - "+items[0]+" Services Available (on "+items[2]+" nodes)");
+	}
+	if((items[1] != OldNServers) || (items[2] != OldNnodes))
+	{
+	    storeNodes.load();
+	    clearServices();
+	}
+	if(items[3] != 0)
+	    doGetService();
+	OldNServices = items[0];
+	OldNServers = items[1];
+	OldNnodes = items[2];
+	if(items[4] != OldNSearch)
+	{
+	    if(items[4] != 0)
+	        searchInfo.update("Showing: "+items[5]+" Servers - "+items[4]+" Services (on "+items[6]+" nodes)");
+	    else
+	        searchInfo.update("Showing: All");
+	    OldNSearch = items[4];
+	}
+	pollid = setTimeout(poll, 5000);
+    }
+
+    function query(pattern, force)
+    {
+	if(pollid)
+		clearTimeout(pollid);
+	pollid = 0;
+	requestNumber = requestNumber + 1;
+	HTTPQueryPacket.open( "GET", "/didQuery.json/src?dimservice="+pattern+"&reqNr="+requestNumber+"&reqId="+randomNumber+"&force="+force, true ); 
+	HTTPQueryPacket.send( null );
+    }
+    function queryAnswer()
+    {
+	var answer;
+	if ( HTTPQueryPacket.readyState != 4 )
+		return;
+	answer = HTTPQueryPacket.responseText;
+	if(answer == "load")
+	{
+		storeNodes.load(); 
+		clearServices();
+		poll();
+	}
+	else
+	pollid = setTimeout(poll, 1000);
+//	poll();
+    } 
+
+    function doGetService()
+    {
+	if(LastService != "")
+		getService(LastService, LastId);
+    }
+    function getService(name, id)
+    {
+	if(pollid)
+		clearTimeout(pollid);
+	pollid = 0;
+	forceUpdate = 0;
+	if(LastService != name)
+	{
+		forceUpdate = 1;
+		UpdateService = 1;
+		if(UpdateButton)
+			UpdateButton.setType('gear');
+		LastService = name;
+		LastId = id;
+	}
+	var items = id.split("|");
+	if(items.length == 3)
+	{
+//		serviceInfo.update(name + " is a DIM Command");
+		commandInfo.update(name + " is a DIM Command");
+//		serviceInfo.setVisible(0);
+//		commandInfoArea.setVisible(1);
+		CurrService = "";
+		forceUpdate = -1;
+//		return;
+	}
+	var name1 = name.replace(/\?/g,"%3F");
+	name1 = name1.replace(/\&/g,"%26");
+	if(forceUpdate != -1)
+		CurrService = name1;
+	requestNumber = requestNumber + 1;
+	if(UpdateService)
+	{
+		HTTPPacket.open( "GET", "/didServiceData.json/src?dimservice="+name1+"&id=src&reqNr="+requestNumber+"&reqId="+randomNumber+"&force="+forceUpdate, true ); 
+		HTTPPacket.send( null );
+	}
+    }
+    function process() 
+    {
+	serviceInfoArea.update("Updating - state "+HTTPPacket.readyState+"...");
+	if ( HTTPPacket.readyState != 4 )
+		return; 
+	if(HTTPPacket.responseText == "")
+	{
+//		timeoutid = window.setTimeout(doGetService, 5000);
+		pollid = setTimeout(poll, 5000);
+		return;
+	}
+	if(forceUpdate != -1)
+	{
+//		if(UpdateService)
+//		{
+			serviceInfoArea.update(HTTPPacket.responseText);
+			serviceInfoArea.setVisible(1);
+			commandInfoArea.setVisible(0);
+//		}
+	}
+	else
+	{
+		commandInfo.update(HTTPPacket.responseText);
+		serviceInfoArea.setVisible(0);
+		commandInfoArea.setVisible(1);
+	}
+//	timeoutid = window.setTimeout(doGetService, 5000);
+	pollid = setTimeout(poll, 5000);
+    } 
+
+    var serviceList = Ext.create('Ext.tree.Panel', {
+        title: 'Services',
+        width: 360,
+        height: 150,
+        store: storeServices,
+        rootVisible: false,
+	autoScroll: true,
+        listeners: {
+	    itemclick: function(view, rec, item, index, evtObj) {
+		getService(rec.get('text'),rec.get('id'));
+	    }
+        }	
+    });
+
+    var nodeTree = Ext.create('Ext.tree.Panel', {
+        title: 'Nodes & Servers',
+        width: 360,
+        height: 150,
+        store: storeNodes,
+        rootVisible: false,
+	autoScroll: true,
+//	deferRowRender: true,
+        listeners: {
+	    itemclick: function(view, rec, item, index, evtObj) {
+		if(rec.get('leaf') == true)
+		{
+		    storeServices.load({
+		        params: {
+		            dimserver: rec.get('text'),
+		            dimnode: rec.get('parentId'),
+			    dimserverid: rec.get('id')
+			}
+		    });
+		}
+	    }
+        }	
+    });
+/*    
+    var storeHeader = Ext.create('Ext.data.Store', {
+        proxy: {
+            type: 'rest',
+            url: '/didHeader.json',
+            reader: {
+                type: 'json',
+                root: 'items'
+            }
+        },
+//	autoLoad: true,
+        fields: ['text']
+    });
+
+    var headerList = Ext.create('Ext.grid.Panel', {
+        layout: 'fit',
+        title: 'DID - DIM Information Display',
+//        width: 500,
+        height: 70,
+        store: storeHeader,
+	hideHeaders: true,
+	columns: [{ text: 'Text', dataIndex: 'text', flex: 1 }]
+    });
+*/
+    var headerList = Ext.create('Ext.Panel', {
+        layout: 'fit',
+        title: 'DID - DIM Information Display',
+        id: 'top-panel',
+        width: 2000,
+        height: 55,
+//        margin: '5 0 5 5',
+//	border: 0,
+        bodyPadding: '5 0 5 5',
+        html: ''
+    });
+
+    var searchButton = Ext.create('Ext.Button', {
+        text: 'Search',
+        margin: '2 0 5 5',
+	handler: function() {
+//		var pattern = getElementById('pattern');
+//		serviceInfo.update(inputArea.getRawValue());
+//		storeServices.removeAll();
+//		storeServices.load({
+//		        params: {
+//		            dimserver: "",
+//		            dimnode: "",
+//			    dimserverid: ""
+//			}
+//		});
+		clearServices();
+		var pattern = inputArea.getRawValue();
+		query(pattern, 0);	
+	}
+    });
+
+    var allButton = Ext.create('Ext.Button', {
+        text: 'Show All',
+        margin: '2 0 5 5',
+	handler: function() {
+//		var pattern = getElementById('pattern');
+//		serviceInfo.update(inputArea.getRawValue());
+//		var pattern = inputArea.getRawValue();
+//		query(pattern);	
+//		storeServices.removeAll();
+//		storeServices.load({
+//		        params: {
+//		            dimserver: "",
+//		            dimnode: "",
+//			    dimserverid: ""
+//			}
+//		});
+		clearServices();
+		var pattern = "";
+		query(pattern, 0);	
+	}
+    });
+	
+    var searchInfo = Ext.create('Ext.Panel', {
+        layout: 'fit',
+        id: 'search-panel',
+//        title: 'Service Info',
+//       region: 'east',
+//        bodyStyle: 'padding-bottom:15px;background:#eee;',
+//        autoScroll: true,
+        margin: '5 0 5 10',
+//	bodyBorder: false,
+	border: 0,
+        html: ''
+    });
+
+    var inputArea = Ext.create('Ext.form.field.Text', {
+        width: 400,
+        id: 'pattern',
+	xtype: 'textfield',
+	name: 'Search pattern',
+	fieldLabel: 'pattern',
+	labelWidth: 45,
+//	allowBlank: false,
+        margin: '2 0 5 5'
+    });
+
+    var searchArea = Ext.create('Ext.form.Panel', {
+        layout: 'hbox',
+        title: 'Service Search',
+        width: 2000,
+//        height: 30,
+//        margins: '2 0 5 5',
+	items: [inputArea, searchButton, allButton, searchInfo]	
+    });
+    
+
+    Ext.create('Ext.Viewport', {
+        layout: 'border',
+        title: 'DID',
+        items: [{
+            layout: 'vbox',
+            id: 'layout-browser3',
+            region:'north',
+            border: false,
+            split:true,
+            margins: '2 0 5 5',
+            items: [headerList, searchArea]
+        },{
+            layout: 'fit',
+            id: 'layout-browser',
+            region:'west',
+            border: false,
+            split:true,
+            margins: '2 0 5 5',
+            width: 220,
+            minSize: 100,
+            maxSize: 500,
+            items: [nodeTree]
+        },{
+            layout: 'fit',
+            id: 'layout-browser1',
+            region:'center',
+            border: false,
+            split:true,
+            margins: '2 0 5 5',
+            minSize: 100,
+            maxSize: 500,
+//            items: [nodeTree, serviceList]
+            items: [serviceList]
+        },{
+            layout: 'fit',
+            id: 'layout-browser2',
+            region:'east',
+            border: false,
+            split:true,
+            margins: '2 0 5 5',
+            width: 580,
+            minSize: 100,
+            maxSize: 600,
+            items: [serviceCommandArea]
+        }
+        ],
+        renderTo: Ext.getBody()
+    });
+    commandInfoArea.setVisible(0);
+//    storeHeader.load(); 
+//    pollid = window.setTimeout(poll, 1000);
+    poll();
+});
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/bootstrap.js
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/bootstrap.js	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/bootstrap.js	(revision 18277)
@@ -0,0 +1,188 @@
+/*
+Ext JS 4.1 - JavaScript Library
+Copyright (c) 2006-2012, Sencha Inc.
+All rights reserved.
+licensing@sencha.com
+
+http://www.sencha.com/license
+
+Open Source License
+------------------------------------------------------------------------------------------
+This version of Ext JS is licensed under the terms of the Open Source GPL 3.0 license. 
+
+http://www.gnu.org/licenses/gpl.html
+
+There are several FLOSS exceptions available for use with this release for
+open source applications that are distributed under a license other than GPL.
+
+* Open Source License Exception for Applications
+
+  http://www.sencha.com/products/floss-exception.php
+
+* Open Source License Exception for Development
+
+  http://www.sencha.com/products/ux-exception.php
+
+
+Alternate Licensing
+------------------------------------------------------------------------------------------
+Commercial and OEM Licenses are available for an alternate download of Ext JS.
+This is the appropriate option if you are creating proprietary applications and you are 
+not prepared to distribute and share the source code of your application under the 
+GPL v3 license. Please visit http://www.sencha.com/license for more details.
+
+--
+
+This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT OF THIRD-PARTY INTELLECTUAL PROPERTY RIGHTS.  See the GNU General Public License for more details.
+*/
+/*
+Ext JS 4.1 - JavaScript Library
+Copyright (c) 2006-2012, Sencha Inc.
+All rights reserved.
+licensing@sencha.com
+
+http://www.sencha.com/license
+
+Open Source License
+------------------------------------------------------------------------------------------
+This version of Ext JS is licensed under the terms of the Open Source GPL 3.0 license. 
+
+http://www.gnu.org/licenses/gpl.html
+
+There are several FLOSS exceptions available for use with this release for
+open source applications that are distributed under a license other than GPL.
+
+* Open Source License Exception for Applications
+
+  http://www.sencha.com/products/floss-exception.php
+
+* Open Source License Exception for Development
+
+  http://www.sencha.com/products/ux-exception.php
+
+
+Alternate Licensing
+------------------------------------------------------------------------------------------
+Commercial and OEM Licenses are available for an alternate download of Ext JS.
+This is the appropriate option if you are creating proprietary applications and you are 
+not prepared to distribute and share the source code of your application under the 
+GPL v3 license. Please visit http://www.sencha.com/license for more details.
+
+--
+
+This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT OF THIRD-PARTY INTELLECTUAL PROPERTY RIGHTS.  See the GNU General Public License for more details.
+*/
+/*
+Ext JS 4.1 - JavaScript Library
+Copyright (c) 2006-2012, Sencha Inc.
+All rights reserved.
+licensing@sencha.com
+
+http://www.sencha.com/license
+
+Open Source License
+------------------------------------------------------------------------------------------
+This version of Ext JS is licensed under the terms of the Open Source GPL 3.0 license. 
+
+http://www.gnu.org/licenses/gpl.html
+
+There are several FLOSS exceptions available for use with this release for
+open source applications that are distributed under a license other than GPL.
+
+* Open Source License Exception for Applications
+
+  http://www.sencha.com/products/floss-exception.php
+
+* Open Source License Exception for Development
+
+  http://www.sencha.com/products/ux-exception.php
+
+
+Alternate Licensing
+------------------------------------------------------------------------------------------
+Commercial and OEM Licenses are available for an alternate download of Ext JS.
+This is the appropriate option if you are creating proprietary applications and you are 
+not prepared to distribute and share the source code of your application under the 
+GPL v3 license. Please visit http://www.sencha.com/license for more details.
+
+--
+
+This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT OF THIRD-PARTY INTELLECTUAL PROPERTY RIGHTS.  See the GNU General Public License for more details.
+*/
+/*
+This file is part of Ext JS 4.1
+
+Copyright (c) 2011-2012 Sencha Inc
+
+Contact:  http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2012-07-04 21:11:01 (65ff594cd80b9bad45df640c22cc0adb52c95a7b)
+*/
+/**
+ * Load the library located at the same path with this file
+ *
+ * Will automatically load ext-all-dev.js if any of these conditions is true:
+ * - Current hostname is localhost
+ * - Current hostname is an IP v4 address
+ * - Current protocol is "file:"
+ *
+ * Will load ext-all.js (minified) otherwise
+ */
+(function() {
+    var scripts = document.getElementsByTagName('script'),
+        localhostTests = [
+            /^localhost$/,
+            /\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(:\d{1,5})?\b/ // IP v4
+        ],
+        host = window.location.hostname,
+        isDevelopment = null,
+        queryString = window.location.search,
+        test, path, i, ln, scriptSrc, match;
+
+    for (i = 0, ln = scripts.length; i < ln; i++) {
+        scriptSrc = scripts[i].src;
+
+        match = scriptSrc.match(/bootstrap\.js$/);
+
+        if (match) {
+            path = scriptSrc.substring(0, scriptSrc.length - match[0].length);
+            break;
+        }
+    }
+
+    if (queryString.match('(\\?|&)debug') !== null) {
+        isDevelopment = true;
+    }
+    else if (queryString.match('(\\?|&)nodebug') !== null) {
+        isDevelopment = false;
+    }
+
+    if (isDevelopment === null) {
+        for (i = 0, ln = localhostTests.length; i < ln; i++) {
+            test = localhostTests[i];
+
+            if (host.search(test) !== -1) {
+                isDevelopment = true;
+                break;
+            }
+        }
+    }
+
+    if (isDevelopment === null && window.location.protocol === 'file:') {
+        isDevelopment = true;
+    }
+
+    document.write('<script type="text/javascript" charset="UTF-8" src="' + 
+        path + 'ext-all' + (isDevelopment ? '-dev' : '') + '.js"></script>');
+})();
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/build.xml
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/build.xml	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/build.xml	(revision 18277)
@@ -0,0 +1,172 @@
+<project name="extjs" default="build" basedir=".">
+
+    <target name="init-antcontrib">
+        <taskdef resource="net/sf/antcontrib/antlib.xml">
+            <classpath>
+                <pathelement location="${cmd.dir}/lib/ant-contrib-1.0b3.jar"/>
+                <pathelement
+                        location="${cmd..dir}/lib/commons-httpclient-3.0.1.jar"/>
+                <pathelement
+                        location="${cmd.dir}/lib/commons-logging-1.0.4.jar"/>
+                <pathelement location="${cmd.dir}/lib/commons-codec-1.3.jar"/>
+            </classpath>
+        </taskdef>
+    </target>
+
+
+    <target name="init-sencha-cmd" depends="init-antcontrib">
+        <taskdef resource="com/sencha/ant/antlib.xml" classpath="${cmd.dir}/sencha.jar"/>
+    </target>
+
+    <target name="build" depends="init-sencha-cmd">
+        <property name="build.dir" location="${basedir}"/>
+
+        <!--
+            Produce base concatenation for standard distribution files
+        -->
+        <x-sencha-command>
+            compile
+                --ignore=diag
+                --options=debug:true
+                    concatenate
+                        -out=${build.dir}/ext-all-dev.js
+                    and
+                    concatenate
+                        -sandbox=Ext4:x4-
+                        -out=${build.dir}/builds/ext-all-sandbox-dev.js
+                    and
+                    union
+                        -tag=core
+                    and
+                    concatenate
+                        -out=${build.dir}/ext-dev.js
+                    and
+                    concatenate
+                        -out=${build.dir}/builds/ext-core-dev.js
+                    and
+                    union
+                        -tag=foundation
+                    and
+                    concatenate
+                        -out=${build.dir}/builds/ext-foundation-dev.js
+                    and
+                    include
+                        -all
+                    and
+                --options=debug:false
+                    concatenate
+                        -out=${build.dir}/ext-all-debug-w-comments.js
+                    and
+                    concatenate
+                        -sandbox=Ext4:x4-
+                        -out=${build.dir}/builds/ext-all-sandbox-debug-w-comments.js
+                    and
+                    union
+                        -tag=core
+                    and
+                    concatenate
+                        -out=${build.dir}/ext-debug-w-comments.js
+                    and
+                    concatenate
+                        -out=${build.dir}/builds/ext-core-debug-w-comments.js
+                    and
+                    union
+                        -tag=foundation
+                    and
+                    concatenate
+                        -out=${build.dir}/builds/ext-foundation-debug-w-comments.js
+                    and
+                    union
+                        -not
+                        -tag=${build.dir}/core
+                    and
+                    metadata
+                        +append
+                        +alternates
+                        -base-path=${build.dir}
+                        -output-file=${build.dir}/ext-debug-w-comments.js
+                    and
+                    metadata
+                        +append
+                        +alternates
+                        -base-path=${build.dir}
+                        -output-file=${build.dir}/ext-dev.js
+                    and
+                    metadata
+                        +append
+                        +alias
+                        --base-path=${build.dir}
+                        --output-file=${build.dir}/ext-debug-w-comments.js
+                    and
+                    metadata
+                        +append
+                        +alias
+                        --base-path=${build.dir}
+                        --output-file=${build.dir}/ext-dev.js
+        </x-sencha-command>
+
+        <loadfile property="header.text" srcfile="${build.dir}/license.txt"/>
+        <property name="header.comment" value="/*&#10;${header.text}&#10;*/&#10;"/>
+
+        <!--
+            Strip comments from uncompressed builds
+        -->
+
+        <x-strip-js srcfile="${build.dir}/ext-all-debug-w-comments.js"
+                    outfile="${build.dir}/ext-all-debug.js"/>
+
+        <x-strip-js srcfile="${build.dir}/ext-debug-w-comments.js"
+                    outfile="${build.dir}/ext-debug.js"/>
+
+        <x-strip-js srcfile="${build.dir}/builds/ext-core-debug-w-comments.js"
+                    outfile="${build.dir}/builds/ext-core-debug.js"/>
+
+        <x-strip-js srcfile="${build.dir}/builds/ext-foundation-debug-w-comments.js"
+                    outfile="${build.dir}/builds/ext-foundation-debug.js"/>
+
+        <x-strip-js srcfile="${build.dir}/builds/ext-all-sandbox-debug-w-comments.js"
+                    outfile="${build.dir}/builds/ext-all-sandbox-debug.js"/>
+        <!--
+            Apply yui compressor
+        -->
+        <x-compress-js
+                srcfile="${build.dir}/ext-all-debug.js"
+                outfile="${build.dir}/ext-all.js"/>
+
+        <x-compress-js
+                srcfile="${build.dir}/ext-debug.js"
+                outfile="${build.dir}/ext.js"/>
+
+        <x-compress-js
+                srcfile="${build.dir}/builds/ext-core-debug.js"
+                outfile="${build.dir}/builds/ext-core.js"/>
+
+        <x-compress-js
+                srcfile="${build.dir}/builds/ext-foundation-debug.js"
+                outfile="${build.dir}/builds/ext-foundation.js"/>
+
+        <x-compress-js
+                srcfile="${build.dir}/builds/ext-all-sandbox-debug.js"
+                outfile="${build.dir}/builds/ext-all-sandbox.js"/>
+
+        <!--
+            Add license headers
+        -->
+
+        <for param="file">
+            <path>
+                <fileset dir="${build.dir}" includes="*.js"/>
+                <fileset dir="${build.dir}/builds" includes="*.js"/>
+            </path>
+            <sequential>
+                <move file="@{file}" tofile="@{file}.tmp"/>
+                <concat destfile="@{file}">
+                    <header>${header.comment}</header>
+                    <fileset file="@{file}.tmp"/>
+                </concat>
+                <delete file="@{file}.tmp"/>
+            </sequential>
+        </for>
+    </target>
+
+</project>
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/ext-all.js
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/ext-all.js	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/ext-all.js	(revision 18277)
@@ -0,0 +1,38 @@
+/*
+Ext JS 4.1 - JavaScript Library
+Copyright (c) 2006-2012, Sencha Inc.
+All rights reserved.
+licensing@sencha.com
+
+http://www.sencha.com/license
+
+Open Source License
+------------------------------------------------------------------------------------------
+This version of Ext JS is licensed under the terms of the Open Source GPL 3.0 license. 
+
+http://www.gnu.org/licenses/gpl.html
+
+There are several FLOSS exceptions available for use with this release for
+open source applications that are distributed under a license other than GPL.
+
+* Open Source License Exception for Applications
+
+  http://www.sencha.com/products/floss-exception.php
+
+* Open Source License Exception for Development
+
+  http://www.sencha.com/products/ux-exception.php
+
+
+Alternate Licensing
+------------------------------------------------------------------------------------------
+Commercial and OEM Licenses are available for an alternate download of Ext JS.
+This is the appropriate option if you are creating proprietary applications and you are 
+not prepared to distribute and share the source code of your application under the 
+GPL v3 license. Please visit http://www.sencha.com/license for more details.
+
+--
+
+This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT OF THIRD-PARTY INTELLECTUAL PROPERTY RIGHTS.  See the GNU General Public License for more details.
+*/
+var Ext=Ext||{};Ext._startTime=new Date().getTime();(function(){var h=this,a=Object.prototype,j=a.toString,b=true,g={toString:1},e=function(){},d=function(){var i=d.caller.caller;return i.$owner.prototype[i.$name].apply(this,arguments)},c;Ext.global=h;for(c in g){b=null}if(b){b=["hasOwnProperty","valueOf","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","constructor"]}Ext.enumerables=b;Ext.apply=function(o,n,q){if(q){Ext.apply(o,q)}if(o&&n&&typeof n==="object"){var p,m,l;for(p in n){o[p]=n[p]}if(b){for(m=b.length;m--;){l=b[m];if(n.hasOwnProperty(l)){o[l]=n[l]}}}}return o};Ext.buildSettings=Ext.apply({baseCSSPrefix:"x-",scopeResetCSS:false},Ext.buildSettings||{});Ext.apply(Ext,{name:Ext.sandboxName||"Ext",emptyFn:e,emptyString:new String(),baseCSSPrefix:Ext.buildSettings.baseCSSPrefix,applyIf:function(k,i){var l;if(k){for(l in i){if(k[l]===undefined){k[l]=i[l]}}}return k},iterate:function(i,l,k){if(Ext.isEmpty(i)){return}if(k===undefined){k=i}if(Ext.isIterable(i)){Ext.Array.each.call(Ext.Array,i,l,k)}else{Ext.Object.each.call(Ext.Object,i,l,k)}}});Ext.apply(Ext,{extend:(function(){var i=a.constructor,k=function(n){for(var l in n){if(!n.hasOwnProperty(l)){continue}this[l]=n[l]}};return function(l,q,o){if(Ext.isObject(q)){o=q;q=l;l=o.constructor!==i?o.constructor:function(){q.apply(this,arguments)}}var n=function(){},m,p=q.prototype;n.prototype=p;m=l.prototype=new n();m.constructor=l;l.superclass=p;if(p.constructor===i){p.constructor=q}l.override=function(r){Ext.override(l,r)};m.override=k;m.proto=m;l.override(o);l.extend=function(r){return Ext.extend(l,r)};return l}}()),override:function(m,n){if(m.$isClass){m.override(n)}else{if(typeof m=="function"){Ext.apply(m.prototype,n)}else{var i=m.self,k,l;if(i&&i.$isClass){for(k in n){if(n.hasOwnProperty(k)){l=n[k];if(typeof l=="function"){l.$name=k;l.$owner=i;l.$previous=m.hasOwnProperty(k)?m[k]:d}m[k]=l}}}else{Ext.apply(m,n)}}}return m}});Ext.apply(Ext,{valueFrom:function(l,i,k){return Ext.isEmpty(l,k)?i:l},typeOf:function(k){var i,l;if(k===null){return"null"}i=typeof k;if(i==="undefined"||i==="string"||i==="number"||i==="boolean"){return i}l=j.call(k);switch(l){case"[object Array]":return"array";case"[object Date]":return"date";case"[object Boolean]":return"boolean";case"[object Number]":return"number";case"[object RegExp]":return"regexp"}if(i==="function"){return"function"}if(i==="object"){if(k.nodeType!==undefined){if(k.nodeType===3){return(/\S/).test(k.nodeValue)?"textnode":"whitespace"}else{return"element"}}return"object"}},isEmpty:function(i,k){return(i===null)||(i===undefined)||(!k?i==="":false)||(Ext.isArray(i)&&i.length===0)},isArray:("isArray" in Array)?Array.isArray:function(i){return j.call(i)==="[object Array]"},isDate:function(i){return j.call(i)==="[object Date]"},isObject:(j.call(null)==="[object Object]")?function(i){return i!==null&&i!==undefined&&j.call(i)==="[object Object]"&&i.ownerDocument===undefined}:function(i){return j.call(i)==="[object Object]"},isSimpleObject:function(i){return i instanceof Object&&i.constructor===Object},isPrimitive:function(k){var i=typeof k;return i==="string"||i==="number"||i==="boolean"},isFunction:(typeof document!=="undefined"&&typeof document.getElementsByTagName("body")==="function")?function(i){return j.call(i)==="[object Function]"}:function(i){return typeof i==="function"},isNumber:function(i){return typeof i==="number"&&isFinite(i)},isNumeric:function(i){return !isNaN(parseFloat(i))&&isFinite(i)},isString:function(i){return typeof i==="string"},isBoolean:function(i){return typeof i==="boolean"},isElement:function(i){return i?i.nodeType===1:false},isTextNode:function(i){return i?i.nodeName==="#text":false},isDefined:function(i){return typeof i!=="undefined"},isIterable:function(k){var i=typeof k,l=false;if(k&&i!="string"){if(i=="function"){if(Ext.isSafari){l=k instanceof NodeList||k instanceof HTMLCollection}}else{l=true}}return l?k.length!==undefined:false}});Ext.apply(Ext,{clone:function(q){var p,o,m,l,r,n;if(q===null||q===undefined){return q}if(q.nodeType&&q.cloneNode){return q.cloneNode(true)}p=j.call(q);if(p==="[object Date]"){return new Date(q.getTime())}if(p==="[object Array]"){o=q.length;r=[];while(o--){r[o]=Ext.clone(q[o])}}else{if(p==="[object Object]"&&q.constructor===Object){r={};for(n in q){r[n]=Ext.clone(q[n])}if(b){for(m=b.length;m--;){l=b[m];r[l]=q[l]}}}}return r||q},getUniqueGlobalNamespace:function(){var l=this.uniqueGlobalNamespace,k;if(l===undefined){k=0;do{l="ExtBox"+(++k)}while(Ext.global[l]!==undefined);Ext.global[l]=Ext;this.uniqueGlobalNamespace=l}return l},functionFactoryCache:{},cacheableFunctionFactory:function(){var o=this,l=Array.prototype.slice.call(arguments),k=o.functionFactoryCache,i,m,n;if(Ext.isSandboxed){n=l.length;if(n>0){n--;l[n]="var Ext=window."+Ext.name+";"+l[n]}}i=l.join("");m=k[i];if(!m){m=Function.prototype.constructor.apply(Function.prototype,l);k[i]=m}return m},functionFactory:function(){var l=this,i=Array.prototype.slice.call(arguments),k;if(Ext.isSandboxed){k=i.length;if(k>0){k--;i[k]="var Ext=window."+Ext.name+";"+i[k]}}return Function.prototype.constructor.apply(Function.prototype,i)},Logger:{verbose:e,log:e,info:e,warn:e,error:function(i){throw new Error(i)},deprecate:e}});Ext.type=Ext.typeOf}());Ext.globalEval=Ext.global.execScript?function(a){execScript(a)}:function($$code){(function(){eval($$code)}())};(function(){var a="4.1.1.1",b;Ext.Version=b=Ext.extend(Object,{constructor:function(c){var e,d;if(c instanceof b){return c}this.version=this.shortVersion=String(c).toLowerCase().replace(/_/g,".").replace(/[\-+]/g,"");d=this.version.search(/([^\d\.])/);if(d!==-1){this.release=this.version.substr(d,c.length);this.shortVersion=this.version.substr(0,d)}this.shortVersion=this.shortVersion.replace(/[^\d]/g,"");e=this.version.split(".");this.major=parseInt(e.shift()||0,10);this.minor=parseInt(e.shift()||0,10);this.patch=parseInt(e.shift()||0,10);this.build=parseInt(e.shift()||0,10);return this},toString:function(){return this.version},valueOf:function(){return this.version},getMajor:function(){return this.major||0},getMinor:function(){return this.minor||0},getPatch:function(){return this.patch||0},getBuild:function(){return this.build||0},getRelease:function(){return this.release||""},isGreaterThan:function(c){return b.compare(this.version,c)===1},isGreaterThanOrEqual:function(c){return b.compare(this.version,c)>=0},isLessThan:function(c){return b.compare(this.version,c)===-1},isLessThanOrEqual:function(c){return b.compare(this.version,c)<=0},equals:function(c){return b.compare(this.version,c)===0},match:function(c){c=String(c);return this.version.substr(0,c.length)===c},toArray:function(){return[this.getMajor(),this.getMinor(),this.getPatch(),this.getBuild(),this.getRelease()]},getShortVersion:function(){return this.shortVersion},gt:function(){return this.isGreaterThan.apply(this,arguments)},lt:function(){return this.isLessThan.apply(this,arguments)},gtEq:function(){return this.isGreaterThanOrEqual.apply(this,arguments)},ltEq:function(){return this.isLessThanOrEqual.apply(this,arguments)}});Ext.apply(b,{releaseValueMap:{dev:-6,alpha:-5,a:-5,beta:-4,b:-4,rc:-3,"#":-2,p:-1,pl:-1},getComponentValue:function(c){return !c?0:(isNaN(c)?this.releaseValueMap[c]||c:parseInt(c,10))},compare:function(h,g){var d,e,c;h=new b(h).toArray();g=new b(g).toArray();for(c=0;c<Math.max(h.length,g.length);c++){d=this.getComponentValue(h[c]);e=this.getComponentValue(g[c]);if(d<e){return -1}else{if(d>e){return 1}}}return 0}});Ext.apply(Ext,{versions:{},lastRegisteredVersion:null,setVersion:function(d,c){Ext.versions[d]=new b(c);Ext.lastRegisteredVersion=Ext.versions[d];return this},getVersion:function(c){if(c===undefined){return Ext.lastRegisteredVersion}return Ext.versions[c]},deprecate:function(c,e,g,d){if(b.compare(Ext.getVersion(c),e)<1){g.call(d)}}});Ext.setVersion("core",a)}());Ext.String=(function(){var i=/^[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+|[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+$/g,m=/('|\\)/g,h=/\{(\d+)\}/g,b=/([-.*+?\^${}()|\[\]\/\\])/g,n=/^\s+|\s+$/g,j=/\s+/,l=/(^[^a-z]*|[^\w])/gi,d,a,g,c,e=function(p,o){return d[o]},k=function(p,o){return(o in a)?a[o]:String.fromCharCode(parseInt(o.substr(2),10))};return{createVarName:function(o){return o.replace(l,"")},htmlEncode:function(o){return(!o)?o:String(o).replace(g,e)},htmlDecode:function(o){return(!o)?o:String(o).replace(c,k)},addCharacterEntities:function(p){var o=[],s=[],q,r;for(q in p){r=p[q];a[q]=r;d[r]=q;o.push(r);s.push(q)}g=new RegExp("("+o.join("|")+")","g");c=new RegExp("("+s.join("|")+"|&#[0-9]{1,5};)","g")},resetCharacterEntities:function(){d={};a={};this.addCharacterEntities({"&amp;":"&","&gt;":">","&lt;":"<","&quot;":'"',"&#39;":"'"})},urlAppend:function(p,o){if(!Ext.isEmpty(o)){return p+(p.indexOf("?")===-1?"?":"&")+o}return p},trim:function(o){return o.replace(i,"")},capitalize:function(o){return o.charAt(0).toUpperCase()+o.substr(1)},uncapitalize:function(o){return o.charAt(0).toLowerCase()+o.substr(1)},ellipsis:function(q,o,r){if(q&&q.length>o){if(r){var s=q.substr(0,o-2),p=Math.max(s.lastIndexOf(" "),s.lastIndexOf("."),s.lastIndexOf("!"),s.lastIndexOf("?"));if(p!==-1&&p>=(o-15)){return s.substr(0,p)+"..."}}return q.substr(0,o-3)+"..."}return q},escapeRegex:function(o){return o.replace(b,"\\$1")},escape:function(o){return o.replace(m,"\\$1")},toggle:function(p,q,o){return p===q?o:q},leftPad:function(p,q,r){var o=String(p);r=r||" ";while(o.length<q){o=r+o}return o},format:function(p){var o=Ext.Array.toArray(arguments,1);return p.replace(h,function(q,r){return o[r]})},repeat:function(s,r,p){for(var o=[],q=r;q--;){o.push(s)}return o.join(p||"")},splitWords:function(o){if(o&&typeof o=="string"){return o.replace(n,"").split(j)}return o||[]}}}());Ext.String.resetCharacterEntities();Ext.htmlEncode=Ext.String.htmlEncode;Ext.htmlDecode=Ext.String.htmlDecode;Ext.urlAppend=Ext.String.urlAppend;Ext.Number=new function(){var b=this,c=(0.9).toFixed()!=="1",a=Math;Ext.apply(this,{constrain:function(h,g,e){var d=parseFloat(h);return(d<g)?g:((d>e)?e:d)},snap:function(h,e,g,i){var d;if(h===undefined||h<g){return g||0}if(e){d=h%e;if(d!==0){h-=d;if(d*2>=e){h+=e}else{if(d*2<-e){h-=e}}}}return b.constrain(h,g,i)},snapInRange:function(h,d,g,i){var e;g=(g||0);if(h===undefined||h<g){return g}if(d&&(e=((h-g)%d))){h-=e;e*=2;if(e>=d){h+=d}}if(i!==undefined){if(h>(i=b.snapInRange(i,d,g))){h=i}}return h},toFixed:c?function(g,d){d=d||0;var e=a.pow(10,d);return(a.round(g*e)/e).toFixed(d)}:function(e,d){return e.toFixed(d)},from:function(e,d){if(isFinite(e)){e=parseFloat(e)}return !isNaN(e)?e:d},randomInt:function(e,d){return a.floor(a.random()*(d-e+1)+e)}});Ext.num=function(){return b.from.apply(this,arguments)}};(function(){var g=Array.prototype,o=g.slice,q=(function(){var A=[],e,z=20;if(!A.splice){return false}while(z--){A.push("A")}A.splice(15,0,"F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F");e=A.length;A.splice(13,0,"XXX");if(e+1!=A.length){return false}return true}()),j="forEach" in g,u="map" in g,p="indexOf" in g,y="every" in g,c="some" in g,d="filter" in g,n=(function(){var e=[1,2,3,4,5].sort(function(){return 0});return e[0]===1&&e[1]===2&&e[2]===3&&e[3]===4&&e[4]===5}()),k=true,a,w,t,v;try{if(typeof document!=="undefined"){o.call(document.getElementsByTagName("body"))}}catch(s){k=false}function m(z,e){return(e<0)?Math.max(0,z.length+e):Math.min(z.length,e)}function x(G,F,z,J){var K=J?J.length:0,B=G.length,H=m(G,F),E,I,A,e,C,D;if(H===B){if(K){G.push.apply(G,J)}}else{E=Math.min(z,B-H);I=H+E;A=I+K-E;e=B-I;C=B-E;if(A<I){for(D=0;D<e;++D){G[A+D]=G[I+D]}}else{if(A>I){for(D=e;D--;){G[A+D]=G[I+D]}}}if(K&&H===C){G.length=C;G.push.apply(G,J)}else{G.length=C+K;for(D=0;D<K;++D){G[H+D]=J[D]}}}return G}function i(B,e,A,z){if(z&&z.length){if(e<B.length){B.splice.apply(B,[e,A].concat(z))}else{B.push.apply(B,z)}}else{B.splice(e,A)}return B}function b(A,e,z){return x(A,e,z)}function r(A,e,z){A.splice(e,z);return A}function l(C,e,A){var B=m(C,e),z=C.slice(e,m(C,B+A));if(arguments.length<4){x(C,B,A)}else{x(C,B,A,o.call(arguments,3))}return z}function h(e){return e.splice.apply(e,o.call(arguments,1))}w=q?r:b;t=q?i:x;v=q?h:l;a=Ext.Array={each:function(D,B,A,e){D=a.from(D);var z,C=D.length;if(e!==true){for(z=0;z<C;z++){if(B.call(A||D[z],D[z],z,D)===false){return z}}}else{for(z=C-1;z>-1;z--){if(B.call(A||D[z],D[z],z,D)===false){return z}}}return true},forEach:j?function(A,z,e){return A.forEach(z,e)}:function(C,A,z){var e=0,B=C.length;for(;e<B;e++){A.call(z,C[e],e,C)}},indexOf:p?function(A,e,z){return A.indexOf(e,z)}:function(C,A,B){var e,z=C.length;for(e=(B<0)?Math.max(0,z+B):B||0;e<z;e++){if(C[e]===A){return e}}return -1},contains:p?function(z,e){return z.indexOf(e)!==-1}:function(B,A){var e,z;for(e=0,z=B.length;e<z;e++){if(B[e]===A){return true}}return false},toArray:function(A,C,e){if(!A||!A.length){return[]}if(typeof A==="string"){A=A.split("")}if(k){return o.call(A,C||0,e||A.length)}var B=[],z;C=C||0;e=e?((e<0)?A.length+e:e):A.length;for(z=C;z<e;z++){B.push(A[z])}return B},pluck:function(D,e){var z=[],A,C,B;for(A=0,C=D.length;A<C;A++){B=D[A];z.push(B[e])}return z},map:u?function(A,z,e){return A.map(z,e)}:function(D,C,B){var A=[],z=0,e=D.length;for(;z<e;z++){A[z]=C.call(B,D[z],z,D)}return A},every:y?function(A,z,e){return A.every(z,e)}:function(C,A,z){var e=0,B=C.length;for(;e<B;++e){if(!A.call(z,C[e],e,C)){return false}}return true},some:c?function(A,z,e){return A.some(z,e)}:function(C,A,z){var e=0,B=C.length;for(;e<B;++e){if(A.call(z,C[e],e,C)){return true}}return false},clean:function(C){var z=[],e=0,B=C.length,A;for(;e<B;e++){A=C[e];if(!Ext.isEmpty(A)){z.push(A)}}return z},unique:function(C){var B=[],e=0,A=C.length,z;for(;e<A;e++){z=C[e];if(a.indexOf(B,z)===-1){B.push(z)}}return B},filter:d?function(A,z,e){return A.filter(z,e)}:function(D,B,A){var z=[],e=0,C=D.length;for(;e<C;e++){if(B.call(A,D[e],e,D)){z.push(D[e])}}return z},from:function(A,z){if(A===undefined||A===null){return[]}if(Ext.isArray(A)){return(z)?o.call(A):A}var e=typeof A;if(A&&A.length!==undefined&&e!=="string"&&(e!=="function"||!A.apply)){return a.toArray(A)}return[A]},remove:function(A,z){var e=a.indexOf(A,z);if(e!==-1){w(A,e,1)}return A},include:function(z,e){if(!a.contains(z,e)){z.push(e)}},clone:function(e){return o.call(e)},merge:function(){var e=o.call(arguments),B=[],z,A;for(z=0,A=e.length;z<A;z++){B=B.concat(e[z])}return a.unique(B)},intersect:function(){var e=[],A=o.call(arguments),L,J,F,I,M,B,z,H,K,C,G,E,D;if(!A.length){return e}L=A.length;for(G=M=0;G<L;G++){B=A[G];if(!I||B.length<I.length){I=B;M=G}}I=a.unique(I);w(A,M,1);z=I.length;L=A.length;for(G=0;G<z;G++){H=I[G];C=0;for(E=0;E<L;E++){J=A[E];F=J.length;for(D=0;D<F;D++){K=J[D];if(H===K){C++;break}}}if(C===L){e.push(H)}}return e},difference:function(z,e){var E=o.call(z),C=E.length,B,A,D;for(B=0,D=e.length;B<D;B++){for(A=0;A<C;A++){if(E[A]===e[B]){w(E,A,1);A--;C--}}}return E},slice:([1,2].slice(1,undefined).length?function(A,z,e){return o.call(A,z,e)}:function(A,z,e){if(typeof z==="undefined"){return o.call(A)}if(typeof e==="undefined"){return o.call(A,z)}return o.call(A,z,e)}),sort:n?function(z,e){if(e){return z.sort(e)}else{return z.sort()}}:function(F,E){var C=F.length,B=0,D,e,A,z;for(;B<C;B++){A=B;for(e=B+1;e<C;e++){if(E){D=E(F[e],F[A]);if(D<0){A=e}}else{if(F[e]<F[A]){A=e}}}if(A!==B){z=F[B];F[B]=F[A];F[A]=z}}return F},flatten:function(A){var z=[];function e(B){var D,E,C;for(D=0,E=B.length;D<E;D++){C=B[D];if(Ext.isArray(C)){e(C)}else{z.push(C)}}return z}return e(A)},min:function(D,C){var z=D[0],e,B,A;for(e=0,B=D.length;e<B;e++){A=D[e];if(C){if(C(z,A)===1){z=A}}else{if(A<z){z=A}}}return z},max:function(D,C){var e=D[0],z,B,A;for(z=0,B=D.length;z<B;z++){A=D[z];if(C){if(C(e,A)===-1){e=A}}else{if(A>e){e=A}}}return e},mean:function(e){return e.length>0?a.sum(e)/e.length:undefined},sum:function(C){var z=0,e,B,A;for(e=0,B=C.length;e<B;e++){A=C[e];z+=A}return z},toMap:function(C,e,A){var B={},z=C.length;if(!e){while(z--){B[C[z]]=z+1}}else{if(typeof e=="string"){while(z--){B[C[z][e]]=z+1}}else{while(z--){B[e.call(A,C[z])]=z+1}}}return B},erase:w,insert:function(A,z,e){return t(A,z,0,e)},replace:t,splice:v,push:function(B){var e=arguments.length,A=1,z;if(B===undefined){B=[]}else{if(!Ext.isArray(B)){B=[B]}}for(;A<e;A++){z=arguments[A];Array.prototype.push[Ext.isArray(z)?"apply":"call"](B,z)}return B}};Ext.each=a.each;a.union=a.merge;Ext.min=a.min;Ext.max=a.max;Ext.sum=a.sum;Ext.mean=a.mean;Ext.flatten=a.flatten;Ext.clean=a.clean;Ext.unique=a.unique;Ext.pluck=a.pluck;Ext.toArray=function(){return a.toArray.apply(a,arguments)}}());Ext.Function={flexSetter:function(a){return function(d,c){var e,g;if(d===null){return this}if(typeof d!=="string"){for(e in d){if(d.hasOwnProperty(e)){a.call(this,e,d[e])}}if(Ext.enumerables){for(g=Ext.enumerables.length;g--;){e=Ext.enumerables[g];if(d.hasOwnProperty(e)){a.call(this,e,d[e])}}}}else{a.call(this,d,c)}return this}},bind:function(d,c,b,a){if(arguments.length===2){return function(){return d.apply(c,arguments)}}var g=d,e=Array.prototype.slice;return function(){var h=b||arguments;if(a===true){h=e.call(arguments,0);h=h.concat(b)}else{if(typeof a=="number"){h=e.call(arguments,0);Ext.Array.insert(h,a,b)}}return g.apply(c||Ext.global,h)}},pass:function(c,a,b){if(!Ext.isArray(a)){if(Ext.isIterable(a)){a=Ext.Array.clone(a)}else{a=a!==undefined?[a]:[]}}return function(){var d=[].concat(a);d.push.apply(d,arguments);return c.apply(b||this,d)}},alias:function(b,a){return function(){return b[a].apply(b,arguments)}},clone:function(a){return function(){return a.apply(this,arguments)}},createInterceptor:function(d,c,b,a){var e=d;if(!Ext.isFunction(c)){return d}else{return function(){var h=this,g=arguments;c.target=h;c.method=d;return(c.apply(b||h||Ext.global,g)!==false)?d.apply(h||Ext.global,g):a||null}}},createDelayed:function(e,c,d,b,a){if(d||b){e=Ext.Function.bind(e,d,b,a)}return function(){var h=this,g=Array.prototype.slice.call(arguments);setTimeout(function(){e.apply(h,g)},c)}},defer:function(e,c,d,b,a){e=Ext.Function.bind(e,d,b,a);if(c>0){return setTimeout(Ext.supports.TimeoutActualLateness?function(){e()}:e,c)}e();return 0},createSequence:function(b,c,a){if(!c){return b}else{return function(){var d=b.apply(this,arguments);c.apply(a||this,arguments);return d}}},createBuffered:function(e,b,d,c){var a;return function(){var h=c||Array.prototype.slice.call(arguments,0),g=d||this;if(a){clearTimeout(a)}a=setTimeout(function(){e.apply(g,h)},b)}},createThrottled:function(e,b,d){var g,a,c,i,h=function(){e.apply(d||this,c);g=new Date().getTime()};return function(){a=new Date().getTime()-g;c=arguments;clearTimeout(i);if(!g||(a>=b)){h()}else{i=setTimeout(h,b-a)}}},interceptBefore:function(b,a,d,c){var e=b[a]||Ext.emptyFn;return(b[a]=function(){var g=d.apply(c||this,arguments);e.apply(this,arguments);return g})},interceptAfter:function(b,a,d,c){var e=b[a]||Ext.emptyFn;return(b[a]=function(){e.apply(this,arguments);return d.apply(c||this,arguments)})}};Ext.defer=Ext.Function.alias(Ext.Function,"defer");Ext.pass=Ext.Function.alias(Ext.Function,"pass");Ext.bind=Ext.Function.alias(Ext.Function,"bind");(function(){var a=function(){},b=Ext.Object={chain:function(d){a.prototype=d;var c=new a();a.prototype=null;return c},toQueryObjects:function(e,k,d){var c=b.toQueryObjects,j=[],g,h;if(Ext.isArray(k)){for(g=0,h=k.length;g<h;g++){if(d){j=j.concat(c(e+"["+g+"]",k[g],true))}else{j.push({name:e,value:k[g]})}}}else{if(Ext.isObject(k)){for(g in k){if(k.hasOwnProperty(g)){if(d){j=j.concat(c(e+"["+g+"]",k[g],true))}else{j.push({name:e,value:k[g]})}}}}else{j.push({name:e,value:k})}}return j},toQueryString:function(g,d){var h=[],e=[],l,k,m,c,n;for(l in g){if(g.hasOwnProperty(l)){h=h.concat(b.toQueryObjects(l,g[l],d))}}for(k=0,m=h.length;k<m;k++){c=h[k];n=c.value;if(Ext.isEmpty(n)){n=""}else{if(Ext.isDate(n)){n=Ext.Date.toString(n)}}e.push(encodeURIComponent(c.name)+"="+encodeURIComponent(String(n)))}return e.join("&")},fromQueryString:function(d,r){var m=d.replace(/^\?/,"").split("&"),u={},s,k,w,n,q,g,o,p,c,h,t,l,v,e;for(q=0,g=m.length;q<g;q++){o=m[q];if(o.length>0){k=o.split("=");w=decodeURIComponent(k[0]);n=(k[1]!==undefined)?decodeURIComponent(k[1]):"";if(!r){if(u.hasOwnProperty(w)){if(!Ext.isArray(u[w])){u[w]=[u[w]]}u[w].push(n)}else{u[w]=n}}else{h=w.match(/(\[):?([^\]]*)\]/g);t=w.match(/^([^\[]+)/);w=t[0];l=[];if(h===null){u[w]=n;continue}for(p=0,c=h.length;p<c;p++){v=h[p];v=(v.length===2)?"":v.substring(1,v.length-1);l.push(v)}l.unshift(w);s=u;for(p=0,c=l.length;p<c;p++){v=l[p];if(p===c-1){if(Ext.isArray(s)&&v===""){s.push(n)}else{s[v]=n}}else{if(s[v]===undefined||typeof s[v]==="string"){e=l[p+1];s[v]=(Ext.isNumeric(e)||e==="")?[]:{}}s=s[v]}}}}}return u},each:function(c,e,d){for(var g in c){if(c.hasOwnProperty(g)){if(e.call(d||c,g,c[g],c)===false){return}}}},merge:function(k){var h=1,j=arguments.length,c=b.merge,e=Ext.clone,g,m,l,d;for(;h<j;h++){g=arguments[h];for(m in g){l=g[m];if(l&&l.constructor===Object){d=k[m];if(d&&d.constructor===Object){c(d,l)}else{k[m]=e(l)}}else{k[m]=l}}}return k},mergeIf:function(c){var h=1,j=arguments.length,e=Ext.clone,d,g,k;for(;h<j;h++){d=arguments[h];for(g in d){if(!(g in c)){k=d[g];if(k&&k.constructor===Object){c[g]=e(k)}else{c[g]=k}}}}return c},getKey:function(c,e){for(var d in c){if(c.hasOwnProperty(d)&&c[d]===e){return d}}return null},getValues:function(d){var c=[],e;for(e in d){if(d.hasOwnProperty(e)){c.push(d[e])}}return c},getKeys:(typeof Object.keys=="function")?function(c){if(!c){return[]}return Object.keys(c)}:function(c){var d=[],e;for(e in c){if(c.hasOwnProperty(e)){d.push(e)}}return d},getSize:function(c){var d=0,e;for(e in c){if(c.hasOwnProperty(e)){d++}}return d},classify:function(g){var e=g,i=[],d={},c=function(){var k=0,l=i.length,m;for(;k<l;k++){m=i[k];this[m]=new d[m]()}},h,j;for(h in g){if(g.hasOwnProperty(h)){j=g[h];if(j&&j.constructor===Object){i.push(h);d[h]=b.classify(j)}}}c.prototype=e;return c}};Ext.merge=Ext.Object.merge;Ext.mergeIf=Ext.Object.mergeIf;Ext.urlEncode=function(){var c=Ext.Array.from(arguments),d="";if((typeof c[1]==="string")){d=c[1]+"&";c[1]=false}return d+b.toQueryString.apply(b,c)};Ext.urlDecode=function(){return b.fromQueryString.apply(b,arguments)}}());(function(){function b(d){var c=Array.prototype.slice.call(arguments,1);return d.replace(/\{(\d+)\}/g,function(e,g){return c[g]})}Ext.Date={now:Date.now||function(){return +new Date()},toString:function(c){var d=Ext.String.leftPad;return c.getFullYear()+"-"+d(c.getMonth()+1,2,"0")+"-"+d(c.getDate(),2,"0")+"T"+d(c.getHours(),2,"0")+":"+d(c.getMinutes(),2,"0")+":"+d(c.getSeconds(),2,"0")},getElapsed:function(d,c){return Math.abs(d-(c||new Date()))},useStrict:false,formatCodeToRegex:function(d,c){var e=a.parseCodes[d];if(e){e=typeof e=="function"?e():e;a.parseCodes[d]=e}return e?Ext.applyIf({c:e.c?b(e.c,c||"{0}"):e.c},e):{g:0,c:null,s:Ext.String.escapeRegex(d)}},parseFunctions:{MS:function(d,c){var e=new RegExp("\\/Date\\(([-+])?(\\d+)(?:[+-]\\d{4})?\\)\\/"),g=(d||"").match(e);return g?new Date(((g[1]||"")+g[2])*1):null}},parseRegexes:[],formatFunctions:{MS:function(){return"\\/Date("+this.getTime()+")\\/"}},y2kYear:50,MILLI:"ms",SECOND:"s",MINUTE:"mi",HOUR:"h",DAY:"d",MONTH:"mo",YEAR:"y",defaults:{},dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNumbers:{January:0,Jan:0,February:1,Feb:1,March:2,Mar:2,April:3,Apr:3,May:4,June:5,Jun:5,July:6,Jul:6,August:7,Aug:7,September:8,Sep:8,October:9,Oct:9,November:10,Nov:10,December:11,Dec:11},defaultFormat:"m/d/Y",getShortMonthName:function(c){return Ext.Date.monthNames[c].substring(0,3)},getShortDayName:function(c){return Ext.Date.dayNames[c].substring(0,3)},getMonthNumber:function(c){return Ext.Date.monthNumbers[c.substring(0,1).toUpperCase()+c.substring(1,3).toLowerCase()]},formatContainsHourInfo:(function(){var d=/(\\.)/g,c=/([gGhHisucUOPZ]|MS)/;return function(e){return c.test(e.replace(d,""))}}()),formatContainsDateInfo:(function(){var d=/(\\.)/g,c=/([djzmnYycU]|MS)/;return function(e){return c.test(e.replace(d,""))}}()),unescapeFormat:(function(){var c=/\\/gi;return function(d){return d.replace(c,"")}}()),formatCodes:{d:"Ext.String.leftPad(this.getDate(), 2, '0')",D:"Ext.Date.getShortDayName(this.getDay())",j:"this.getDate()",l:"Ext.Date.dayNames[this.getDay()]",N:"(this.getDay() ? this.getDay() : 7)",S:"Ext.Date.getSuffix(this)",w:"this.getDay()",z:"Ext.Date.getDayOfYear(this)",W:"Ext.String.leftPad(Ext.Date.getWeekOfYear(this), 2, '0')",F:"Ext.Date.monthNames[this.getMonth()]",m:"Ext.String.leftPad(this.getMonth() + 1, 2, '0')",M:"Ext.Date.getShortMonthName(this.getMonth())",n:"(this.getMonth() + 1)",t:"Ext.Date.getDaysInMonth(this)",L:"(Ext.Date.isLeapYear(this) ? 1 : 0)",o:"(this.getFullYear() + (Ext.Date.getWeekOfYear(this) == 1 && this.getMonth() > 0 ? +1 : (Ext.Date.getWeekOfYear(this) >= 52 && this.getMonth() < 11 ? -1 : 0)))",Y:"Ext.String.leftPad(this.getFullYear(), 4, '0')",y:"('' + this.getFullYear()).substring(2, 4)",a:"(this.getHours() < 12 ? 'am' : 'pm')",A:"(this.getHours() < 12 ? 'AM' : 'PM')",g:"((this.getHours() % 12) ? this.getHours() % 12 : 12)",G:"this.getHours()",h:"Ext.String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0')",H:"Ext.String.leftPad(this.getHours(), 2, '0')",i:"Ext.String.leftPad(this.getMinutes(), 2, '0')",s:"Ext.String.leftPad(this.getSeconds(), 2, '0')",u:"Ext.String.leftPad(this.getMilliseconds(), 3, '0')",O:"Ext.Date.getGMTOffset(this)",P:"Ext.Date.getGMTOffset(this, true)",T:"Ext.Date.getTimezone(this)",Z:"(this.getTimezoneOffset() * -60)",c:function(){var k,h,g,d,j;for(k="Y-m-dTH:i:sP",h=[],g=0,d=k.length;g<d;++g){j=k.charAt(g);h.push(j=="T"?"'T'":a.getFormatCode(j))}return h.join(" + ")},U:"Math.round(this.getTime() / 1000)"},isValid:function(o,c,n,k,g,j,e){k=k||0;g=g||0;j=j||0;e=e||0;var l=a.add(new Date(o<100?100:o,c-1,n,k,g,j,e),a.YEAR,o<100?o-100:0);return o==l.getFullYear()&&c==l.getMonth()+1&&n==l.getDate()&&k==l.getHours()&&g==l.getMinutes()&&j==l.getSeconds()&&e==l.getMilliseconds()},parse:function(d,g,c){var e=a.parseFunctions;if(e[g]==null){a.createParser(g)}return e[g](d,Ext.isDefined(c)?c:a.useStrict)},parseDate:function(d,e,c){return a.parse(d,e,c)},getFormatCode:function(d){var c=a.formatCodes[d];if(c){c=typeof c=="function"?c():c;a.formatCodes[d]=c}return c||("'"+Ext.String.escape(d)+"'")},createFormat:function(h){var g=[],c=false,e="",d;for(d=0;d<h.length;++d){e=h.charAt(d);if(!c&&e=="\\"){c=true}else{if(c){c=false;g.push("'"+Ext.String.escape(e)+"'")}else{g.push(a.getFormatCode(e))}}}a.formatFunctions[h]=Ext.functionFactory("return "+g.join("+"))},createParser:(function(){var c=["var dt, y, m, d, h, i, s, ms, o, z, zz, u, v,","def = Ext.Date.defaults,","results = String(input).match(Ext.Date.parseRegexes[{0}]);","if(results){","{1}","if(u != null){","v = new Date(u * 1000);","}else{","dt = Ext.Date.clearTime(new Date);","y = Ext.Number.from(y, Ext.Number.from(def.y, dt.getFullYear()));","m = Ext.Number.from(m, Ext.Number.from(def.m - 1, dt.getMonth()));","d = Ext.Number.from(d, Ext.Number.from(def.d, dt.getDate()));","h  = Ext.Number.from(h, Ext.Number.from(def.h, dt.getHours()));","i  = Ext.Number.from(i, Ext.Number.from(def.i, dt.getMinutes()));","s  = Ext.Number.from(s, Ext.Number.from(def.s, dt.getSeconds()));","ms = Ext.Number.from(ms, Ext.Number.from(def.ms, dt.getMilliseconds()));","if(z >= 0 && y >= 0){","v = Ext.Date.add(new Date(y < 100 ? 100 : y, 0, 1, h, i, s, ms), Ext.Date.YEAR, y < 100 ? y - 100 : 0);","v = !strict? v : (strict === true && (z <= 364 || (Ext.Date.isLeapYear(v) && z <= 365))? Ext.Date.add(v, Ext.Date.DAY, z) : null);","}else if(strict === true && !Ext.Date.isValid(y, m + 1, d, h, i, s, ms)){","v = null;","}else{","v = Ext.Date.add(new Date(y < 100 ? 100 : y, m, d, h, i, s, ms), Ext.Date.YEAR, y < 100 ? y - 100 : 0);","}","}","}","if(v){","if(zz != null){","v = Ext.Date.add(v, Ext.Date.SECOND, -v.getTimezoneOffset() * 60 - zz);","}else if(o){","v = Ext.Date.add(v, Ext.Date.MINUTE, -v.getTimezoneOffset() + (sn == '+'? -1 : 1) * (hr * 60 + mn));","}","}","return v;"].join("\n");return function(o){var e=a.parseRegexes.length,p=1,g=[],n=[],l=false,d="",j=0,k=o.length,m=[],h;for(;j<k;++j){d=o.charAt(j);if(!l&&d=="\\"){l=true}else{if(l){l=false;n.push(Ext.String.escape(d))}else{h=a.formatCodeToRegex(d,p);p+=h.g;n.push(h.s);if(h.g&&h.c){if(h.calcAtEnd){m.push(h.c)}else{g.push(h.c)}}}}}g=g.concat(m);a.parseRegexes[e]=new RegExp("^"+n.join("")+"$","i");a.parseFunctions[o]=Ext.functionFactory("input","strict",b(c,e,g.join("")))}}()),parseCodes:{d:{g:1,c:"d = parseInt(results[{0}], 10);\n",s:"(3[0-1]|[1-2][0-9]|0[1-9])"},j:{g:1,c:"d = parseInt(results[{0}], 10);\n",s:"(3[0-1]|[1-2][0-9]|[1-9])"},D:function(){for(var c=[],d=0;d<7;c.push(a.getShortDayName(d)),++d){}return{g:0,c:null,s:"(?:"+c.join("|")+")"}},l:function(){return{g:0,c:null,s:"(?:"+a.dayNames.join("|")+")"}},N:{g:0,c:null,s:"[1-7]"},S:{g:0,c:null,s:"(?:st|nd|rd|th)"},w:{g:0,c:null,s:"[0-6]"},z:{g:1,c:"z = parseInt(results[{0}], 10);\n",s:"(\\d{1,3})"},W:{g:0,c:null,s:"(?:\\d{2})"},F:function(){return{g:1,c:"m = parseInt(Ext.Date.getMonthNumber(results[{0}]), 10);\n",s:"("+a.monthNames.join("|")+")"}},M:function(){for(var c=[],d=0;d<12;c.push(a.getShortMonthName(d)),++d){}return Ext.applyIf({s:"("+c.join("|")+")"},a.formatCodeToRegex("F"))},m:{g:1,c:"m = parseInt(results[{0}], 10) - 1;\n",s:"(1[0-2]|0[1-9])"},n:{g:1,c:"m = parseInt(results[{0}], 10) - 1;\n",s:"(1[0-2]|[1-9])"},t:{g:0,c:null,s:"(?:\\d{2})"},L:{g:0,c:null,s:"(?:1|0)"},o:function(){return a.formatCodeToRegex("Y")},Y:{g:1,c:"y = parseInt(results[{0}], 10);\n",s:"(\\d{4})"},y:{g:1,c:"var ty = parseInt(results[{0}], 10);\ny = ty > Ext.Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"},a:{g:1,c:"if (/(am)/i.test(results[{0}])) {\nif (!h || h == 12) { h = 0; }\n} else { if (!h || h < 12) { h = (h || 0) + 12; }}",s:"(am|pm|AM|PM)",calcAtEnd:true},A:{g:1,c:"if (/(am)/i.test(results[{0}])) {\nif (!h || h == 12) { h = 0; }\n} else { if (!h || h < 12) { h = (h || 0) + 12; }}",s:"(AM|PM|am|pm)",calcAtEnd:true},g:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(1[0-2]|[0-9])"},G:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(2[0-3]|1[0-9]|[0-9])"},h:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(1[0-2]|0[1-9])"},H:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(2[0-3]|[0-1][0-9])"},i:{g:1,c:"i = parseInt(results[{0}], 10);\n",s:"([0-5][0-9])"},s:{g:1,c:"s = parseInt(results[{0}], 10);\n",s:"([0-5][0-9])"},u:{g:1,c:"ms = results[{0}]; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n",s:"(\\d+)"},O:{g:1,c:["o = results[{0}];","var sn = o.substring(0,1),","hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60),","mn = o.substring(3,5) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + Ext.String.leftPad(hr, 2, '0') + Ext.String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{4})"},P:{g:1,c:["o = results[{0}];","var sn = o.substring(0,1),","hr = o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60),","mn = o.substring(4,6) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + Ext.String.leftPad(hr, 2, '0') + Ext.String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{2}:\\d{2})"},T:{g:0,c:null,s:"[A-Z]{1,4}"},Z:{g:1,c:"zz = results[{0}] * 1;\nzz = (-43200 <= zz && zz <= 50400)? zz : null;\n",s:"([+-]?\\d{1,5})"},c:function(){var e=[],c=[a.formatCodeToRegex("Y",1),a.formatCodeToRegex("m",2),a.formatCodeToRegex("d",3),a.formatCodeToRegex("H",4),a.formatCodeToRegex("i",5),a.formatCodeToRegex("s",6),{c:"ms = results[7] || '0'; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n"},{c:["if(results[8]) {","if(results[8] == 'Z'){","zz = 0;","}else if (results[8].indexOf(':') > -1){",a.formatCodeToRegex("P",8).c,"}else{",a.formatCodeToRegex("O",8).c,"}","}"].join("\n")}],g,d;for(g=0,d=c.length;g<d;++g){e.push(c[g].c)}return{g:1,c:e.join(""),s:[c[0].s,"(?:","-",c[1].s,"(?:","-",c[2].s,"(?:","(?:T| )?",c[3].s,":",c[4].s,"(?::",c[5].s,")?","(?:(?:\\.|,)(\\d+))?","(Z|(?:[-+]\\d{2}(?::)?\\d{2}))?",")?",")?",")?"].join("")}},U:{g:1,c:"u = parseInt(results[{0}], 10);\n",s:"(-?\\d+)"}},dateFormat:function(c,d){return a.format(c,d)},isEqual:function(d,c){if(d&&c){return(d.getTime()===c.getTime())}return !(d||c)},format:function(d,e){var c=a.formatFunctions;if(!Ext.isDate(d)){return""}if(c[e]==null){a.createFormat(e)}return c[e].call(d)+""},getTimezone:function(c){return c.toString().replace(/^.* (?:\((.*)\)|([A-Z]{1,4})(?:[\-+][0-9]{4})?(?: -?\d+)?)$/,"$1$2").replace(/[^A-Z]/g,"")},getGMTOffset:function(c,d){var e=c.getTimezoneOffset();return(e>0?"-":"+")+Ext.String.leftPad(Math.floor(Math.abs(e)/60),2,"0")+(d?":":"")+Ext.String.leftPad(Math.abs(e%60),2,"0")},getDayOfYear:function(g){var e=0,j=Ext.Date.clone(g),c=g.getMonth(),h;for(h=0,j.setDate(1),j.setMonth(0);h<c;j.setMonth(++h)){e+=a.getDaysInMonth(j)}return e+g.getDate()-1},getWeekOfYear:(function(){var c=86400000,d=7*c;return function(g){var h=Date.UTC(g.getFullYear(),g.getMonth(),g.getDate()+3)/c,e=Math.floor(h/7),i=new Date(e*d).getUTCFullYear();return e-Math.floor(Date.UTC(i,0,7)/d)+1}}()),isLeapYear:function(c){var d=c.getFullYear();return !!((d&3)==0&&(d%100||(d%400==0&&d)))},getFirstDayOfMonth:function(d){var c=(d.getDay()-(d.getDate()-1))%7;return(c<0)?(c+7):c},getLastDayOfMonth:function(c){return a.getLastDateOfMonth(c).getDay()},getFirstDateOfMonth:function(c){return new Date(c.getFullYear(),c.getMonth(),1)},getLastDateOfMonth:function(c){return new Date(c.getFullYear(),c.getMonth(),a.getDaysInMonth(c))},getDaysInMonth:(function(){var c=[31,28,31,30,31,30,31,31,30,31,30,31];return function(e){var d=e.getMonth();return d==1&&a.isLeapYear(e)?29:c[d]}}()),getSuffix:function(c){switch(c.getDate()){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th"}},clone:function(c){return new Date(c.getTime())},isDST:function(c){return new Date(c.getFullYear(),0,1).getTimezoneOffset()!=c.getTimezoneOffset()},clearTime:function(e,j){if(j){return Ext.Date.clearTime(Ext.Date.clone(e))}var h=e.getDate(),g,i;e.setHours(0);e.setMinutes(0);e.setSeconds(0);e.setMilliseconds(0);if(e.getDate()!=h){for(g=1,i=a.add(e,Ext.Date.HOUR,g);i.getDate()!=h;g++,i=a.add(e,Ext.Date.HOUR,g)){}e.setDate(h);e.setHours(i.getHours())}return e},add:function(h,g,i){var j=Ext.Date.clone(h),c=Ext.Date,e;if(!g||i===0){return j}switch(g.toLowerCase()){case Ext.Date.MILLI:j.setMilliseconds(j.getMilliseconds()+i);break;case Ext.Date.SECOND:j.setSeconds(j.getSeconds()+i);break;case Ext.Date.MINUTE:j.setMinutes(j.getMinutes()+i);break;case Ext.Date.HOUR:j.setHours(j.getHours()+i);break;case Ext.Date.DAY:j.setDate(j.getDate()+i);break;case Ext.Date.MONTH:e=h.getDate();if(e>28){e=Math.min(e,Ext.Date.getLastDateOfMonth(Ext.Date.add(Ext.Date.getFirstDateOfMonth(h),Ext.Date.MONTH,i)).getDate())}j.setDate(e);j.setMonth(h.getMonth()+i);break;case Ext.Date.YEAR:e=h.getDate();if(e>28){e=Math.min(e,Ext.Date.getLastDateOfMonth(Ext.Date.add(Ext.Date.getFirstDateOfMonth(h),Ext.Date.YEAR,i)).getDate())}j.setDate(e);j.setFullYear(h.getFullYear()+i);break}return j},between:function(d,g,c){var e=d.getTime();return g.getTime()<=e&&e<=c.getTime()},compat:function(){var d=window.Date,c,l,j=["useStrict","formatCodeToRegex","parseFunctions","parseRegexes","formatFunctions","y2kYear","MILLI","SECOND","MINUTE","HOUR","DAY","MONTH","YEAR","defaults","dayNames","monthNames","monthNumbers","getShortMonthName","getShortDayName","getMonthNumber","formatCodes","isValid","parseDate","getFormatCode","createFormat","createParser","parseCodes"],h=["dateFormat","format","getTimezone","getGMTOffset","getDayOfYear","getWeekOfYear","isLeapYear","getFirstDayOfMonth","getLastDayOfMonth","getDaysInMonth","getSuffix","clone","isDST","clearTime","add","between"],i=j.length,e=h.length,g,k,m;for(m=0;m<i;m++){g=j[m];d[g]=a[g]}for(c=0;c<e;c++){k=h[c];d.prototype[k]=function(){var n=Array.prototype.slice.call(arguments);n.unshift(this);return a[k].apply(a,n)}}}};var a=Ext.Date}());(function(a){var c=[],b=function(){};Ext.apply(b,{$className:"Ext.Base",$isClass:true,create:function(){return Ext.create.apply(Ext,[this].concat(Array.prototype.slice.call(arguments,0)))},extend:function(j){var d=j.prototype,m,g,h,k,e,l;g=this.prototype=Ext.Object.chain(d);g.self=this;this.superclass=g.superclass=d;if(!j.$isClass){m=Ext.Base.prototype;for(h in m){if(h in g){g[h]=m[h]}}}l=d.$inheritableStatics;if(l){for(h=0,k=l.length;h<k;h++){e=l[h];if(!this.hasOwnProperty(e)){this[e]=j[e]}}}if(j.$onExtended){this.$onExtended=j.$onExtended.slice()}g.config=new g.configClass();g.initConfigList=g.initConfigList.slice();g.initConfigMap=Ext.clone(g.initConfigMap);g.configMap=Ext.Object.chain(g.configMap)},$onExtended:[],triggerExtended:function(){var g=this.$onExtended,e=g.length,d,h;if(e>0){for(d=0;d<e;d++){h=g[d];h.fn.apply(h.scope||this,arguments)}}},onExtended:function(e,d){this.$onExtended.push({fn:e,scope:d});return this},addConfig:function(h,l){var n=this.prototype,m=Ext.Class.configNameCache,i=n.configMap,j=n.initConfigList,g=n.initConfigMap,k=n.config,d,e,o;for(e in h){if(h.hasOwnProperty(e)){if(!i[e]){i[e]=true}o=h[e];d=m[e].initialized;if(!g[e]&&o!==null&&!n[d]){g[e]=true;j.push(e)}}}if(l){Ext.merge(k,h)}else{Ext.mergeIf(k,h)}n.configClass=Ext.Object.classify(k)},addStatics:function(d){var g,e;for(e in d){if(d.hasOwnProperty(e)){g=d[e];if(typeof g=="function"&&!g.$isClass&&g!==Ext.emptyFn&&g!==Ext.identityFn){g.$owner=this;g.$name=e}this[e]=g}}return this},addInheritableStatics:function(e){var i,d,h=this.prototype,g,j;i=h.$inheritableStatics;d=h.$hasInheritableStatics;if(!i){i=h.$inheritableStatics=[];d=h.$hasInheritableStatics={}}for(g in e){if(e.hasOwnProperty(g)){j=e[g];this[g]=j;if(!d[g]){d[g]=true;i.push(g)}}}return this},addMembers:function(e){var h=this.prototype,d=Ext.enumerables,l=[],j,k,g,m;for(g in e){l.push(g)}if(d){l.push.apply(l,d)}for(j=0,k=l.length;j<k;j++){g=l[j];if(e.hasOwnProperty(g)){m=e[g];if(typeof m=="function"&&!m.$isClass&&m!==Ext.emptyFn){m.$owner=this;m.$name=g}h[g]=m}}return this},addMember:function(d,e){if(typeof e=="function"&&!e.$isClass&&e!==Ext.emptyFn){e.$owner=this;e.$name=d}this.prototype[d]=e;return this},implement:function(){this.addMembers.apply(this,arguments)},borrow:function(j,g){var n=this.prototype,m=j.prototype,h,k,e,l,d;g=Ext.Array.from(g);for(h=0,k=g.length;h<k;h++){e=g[h];d=m[e];if(typeof d=="function"){l=Ext.Function.clone(d);l.$owner=this;l.$name=e;n[e]=l}else{n[e]=d}}return this},override:function(e){var m=this,o=Ext.enumerables,k=m.prototype,h=Ext.Function.clone,d,j,g,n,l,i;if(arguments.length===2){d=e;e={};e[d]=arguments[1];o=null}do{l=[];n=null;for(d in e){if(d=="statics"){n=e[d]}else{if(d=="config"){m.addConfig(e[d],true)}else{l.push(d)}}}if(o){l.push.apply(l,o)}for(j=l.length;j--;){d=l[j];if(e.hasOwnProperty(d)){g=e[d];if(typeof g=="function"&&!g.$className&&g!==Ext.emptyFn){if(typeof g.$owner!="undefined"){g=h(g)}g.$owner=m;g.$name=d;i=k[d];if(i){g.$previous=i}}k[d]=g}}k=m;e=n}while(e);return this},callParent:function(d){var e;return(e=this.callParent.caller)&&(e.$previous||((e=e.$owner?e:e.caller)&&e.$owner.superclass.self[e.$name])).apply(this,d||c)},callSuper:function(d){var e;return(e=this.callSuper.caller)&&((e=e.$owner?e:e.caller)&&e.$owner.superclass.self[e.$name]).apply(this,d||c)},mixin:function(g,i){var d=i.prototype,e=this.prototype,h;if(typeof d.onClassMixedIn!="undefined"){d.onClassMixedIn.call(i,this)}if(!e.hasOwnProperty("mixins")){if("mixins" in e){e.mixins=Ext.Object.chain(e.mixins)}else{e.mixins={}}}for(h in d){if(h==="mixins"){Ext.merge(e.mixins,d[h])}else{if(typeof e[h]=="undefined"&&h!="mixinId"&&h!="config"){e[h]=d[h]}}}if("config" in d){this.addConfig(d.config,false)}e.mixins[g]=d},getName:function(){return Ext.getClassName(this)},createAlias:a(function(e,d){this.override(e,function(){return this[d].apply(this,arguments)})}),addXtype:function(i){var e=this.prototype,h=e.xtypesMap,g=e.xtypes,d=e.xtypesChain;if(!e.hasOwnProperty("xtypesMap")){h=e.xtypesMap=Ext.merge({},e.xtypesMap||{});g=e.xtypes=e.xtypes?[].concat(e.xtypes):[];d=e.xtypesChain=e.xtypesChain?[].concat(e.xtypesChain):[];e.xtype=i}if(!h[i]){h[i]=true;g.push(i);d.push(i);Ext.ClassManager.setAlias(this,"widget."+i)}return this}});b.implement({isInstance:true,$className:"Ext.Base",configClass:Ext.emptyFn,initConfigList:[],configMap:{},initConfigMap:{},statics:function(){var e=this.statics.caller,d=this.self;if(!e){return d}return e.$owner},callParent:function(e){var g,d=(g=this.callParent.caller)&&(g.$previous||((g=g.$owner?g:g.caller)&&g.$owner.superclass[g.$name]));return d.apply(this,e||c)},callSuper:function(e){var g,d=(g=this.callSuper.caller)&&((g=g.$owner?g:g.caller)&&g.$owner.superclass[g.$name]);return d.apply(this,e||c)},self:b,constructor:function(){return this},initConfig:function(g){var m=g,l=Ext.Class.configNameCache,j=new this.configClass(),p=this.initConfigList,h=this.configMap,o,k,n,e,d;this.initConfig=Ext.emptyFn;this.initialConfig=m||{};this.config=g=(m)?Ext.merge(j,g):j;if(m){p=p.slice();for(e in m){if(h[e]){if(m[e]!==null){p.push(e);this[l[e].initialized]=false}}}}for(k=0,n=p.length;k<n;k++){e=p[k];o=l[e];d=o.initialized;if(!this[d]){this[d]=true;this[o.set].call(this,g[e])}}return this},hasConfig:function(d){return Boolean(this.configMap[d])},setConfig:function(h,l){if(!h){return this}var g=Ext.Class.configNameCache,d=this.config,k=this.configMap,j=this.initialConfig,e,i;l=Boolean(l);for(e in h){if(l&&j.hasOwnProperty(e)){continue}i=h[e];d[e]=i;if(k[e]){this[g[e].set](i)}}return this},getConfig:function(e){var d=Ext.Class.configNameCache;return this[d[e].get]()},getInitialConfig:function(e){var d=this.config;if(!e){return d}else{return d[e]}},onConfigUpdate:function(k,m,n){var o=this.self,g,j,d,h,l,e;k=Ext.Array.from(k);n=n||this;for(g=0,j=k.length;g<j;g++){d=k[g];h="update"+Ext.String.capitalize(d);l=this[h]||Ext.emptyFn;e=function(){l.apply(this,arguments);n[m].apply(n,arguments)};e.$name=h;e.$owner=o;this[h]=e}},destroy:function(){this.destroy=Ext.emptyFn}});b.prototype.callOverridden=b.prototype.callParent;Ext.Base=b}(Ext.Function.flexSetter));(function(){var c,b=Ext.Base,g=[],e,d;for(e in b){if(b.hasOwnProperty(e)){g.push(e)}}d=g.length;function a(i){function h(){return this.constructor.apply(this,arguments)||null}return h}Ext.Class=c=function(i,j,h){if(typeof i!="function"){h=j;j=i;i=null}if(!j){j={}}i=c.create(i,j);c.process(i,j,h);return i};Ext.apply(c,{onBeforeCreated:function(i,j,h){i.addMembers(j);h.onCreated.call(i,i)},create:function(h,l){var j,k;if(!h){h=a()}for(k=0;k<d;k++){j=g[k];h[j]=b[j]}return h},process:function(h,q,m){var l=q.preprocessors||c.defaultPreprocessors,t=this.preprocessors,w={onBeforeCreated:this.onBeforeCreated},v=[],x,p,o,u,n,s,r,k;delete q.preprocessors;for(o=0,u=l.length;o<u;o++){x=l[o];if(typeof x=="string"){x=t[x];p=x.properties;if(p===true){v.push(x.fn)}else{if(p){for(n=0,s=p.length;n<s;n++){r=p[n];if(q.hasOwnProperty(r)){v.push(x.fn);break}}}}}else{v.push(x)}}w.onCreated=m?m:Ext.emptyFn;w.preprocessors=v;this.doProcess(h,q,w)},doProcess:function(i,l,h){var k=this,j=h.preprocessors.shift();if(!j){h.onBeforeCreated.apply(k,arguments);return}if(j.call(k,i,l,h,k.doProcess)!==false){k.doProcess(i,l,h)}},preprocessors:{},registerPreprocessor:function(i,l,j,h,k){if(!h){h="last"}if(!j){j=[i]}this.preprocessors[i]={name:i,properties:j||false,fn:l};this.setDefaultPreprocessorPosition(i,h,k);return this},getPreprocessor:function(h){return this.preprocessors[h]},getPreprocessors:function(){return this.preprocessors},defaultPreprocessors:[],getDefaultPreprocessors:function(){return this.defaultPreprocessors},setDefaultPreprocessors:function(h){this.defaultPreprocessors=Ext.Array.from(h);return this},setDefaultPreprocessorPosition:function(j,l,k){var h=this.defaultPreprocessors,i;if(typeof l=="string"){if(l==="first"){h.unshift(j);return this}else{if(l==="last"){h.push(j);return this}}l=(l==="after")?1:-1}i=Ext.Array.indexOf(h,k);if(i!==-1){Ext.Array.splice(h,Math.max(0,i+l),0,j)}return this},configNameCache:{},getConfigNameMap:function(j){var i=this.configNameCache,k=i[j],h;if(!k){h=j.charAt(0).toUpperCase()+j.substr(1);k=i[j]={internal:j,initialized:"_is"+h+"Initialized",apply:"apply"+h,update:"update"+h,set:"set"+h,get:"get"+h,doSet:"doSet"+h,changeEvent:j.toLowerCase()+"change"}}return k}});c.registerPreprocessor("extend",function(j,n){var m=Ext.Base,o=m.prototype,p=n.extend,l,h,k;delete n.extend;if(p&&p!==Object){l=p}else{l=m}h=l.prototype;if(!l.$isClass){for(k in o){if(!h[k]){h[k]=o[k]}}}j.extend(l);j.triggerExtended.apply(j,arguments);if(n.onClassExtended){j.onExtended(n.onClassExtended,j);delete n.onClassExtended}},true);c.registerPreprocessor("statics",function(h,i){h.addStatics(i.statics);delete i.statics});c.registerPreprocessor("inheritableStatics",function(h,i){h.addInheritableStatics(i.inheritableStatics);delete i.inheritableStatics});c.registerPreprocessor("config",function(h,k){var j=k.config,i=h.prototype;delete k.config;Ext.Object.each(j,function(n,w){var u=c.getConfigNameMap(n),q=u.internal,l=u.initialized,v=u.apply,o=u.update,t=u.set,m=u.get,y=(t in i)||k.hasOwnProperty(t),p=(v in i)||k.hasOwnProperty(v),r=(o in i)||k.hasOwnProperty(o),x,s;if(w===null||(!y&&!p&&!r)){i[q]=w;i[l]=true}else{i[l]=false}if(!y){k[t]=function(B){var A=this[q],z=this[v],C=this[o];if(!this[l]){this[l]=true}if(z){B=z.call(this,B,A)}if(typeof B!="undefined"){this[q]=B;if(C&&B!==A){C.call(this,B,A)}}return this}}if(!(m in i)||k.hasOwnProperty(m)){s=k[m]||false;if(s){x=function(){return s.apply(this,arguments)}}else{x=function(){return this[q]}}k[m]=function(){var z;if(!this[l]){this[l]=true;this[t](this.config[n])}z=this[m];if("$previous" in z){z.$previous=x}else{this[m]=x}return x.apply(this,arguments)}}});h.addConfig(j,true)});c.registerPreprocessor("mixins",function(l,p,h){var j=p.mixins,m,k,n,o;delete p.mixins;Ext.Function.interceptBefore(h,"onCreated",function(){if(j instanceof Array){for(n=0,o=j.length;n<o;n++){k=j[n];m=k.prototype.mixinId||k.$className;l.mixin(m,k)}}else{for(var i in j){if(j.hasOwnProperty(i)){l.mixin(i,j[i])}}}})});Ext.extend=function(j,k,i){if(arguments.length===2&&Ext.isObject(k)){i=k;k=j;j=null}var h;if(!k){throw new Error("[Ext.extend] Attempting to extend from a class which has not been loaded on the page.")}i.extend=k;i.preprocessors=["extend","statics","inheritableStatics","mixins","config"];if(j){h=new c(j,i);h.prototype.constructor=j}else{h=new c(i)}h.prototype.override=function(n){for(var l in n){if(n.hasOwnProperty(l)){this[l]=n[l]}}};return h}}());(function(c,e,h,d,g){function a(){function i(){return this.constructor.apply(this,arguments)||null}return i}var b=Ext.ClassManager={classes:{},existCache:{},namespaceRewrites:[{from:"Ext.",to:Ext}],maps:{alternateToName:{},aliasToName:{},nameToAliases:{},nameToAlternates:{}},enableNamespaceParseCache:true,namespaceParseCache:{},instantiators:[],isCreated:function(n){var m=this.existCache,l,o,k,j,p;if(this.classes[n]||m[n]){return true}j=g;p=this.parseNamespace(n);for(l=0,o=p.length;l<o;l++){k=p[l];if(typeof k!="string"){j=k}else{if(!j||!j[k]){return false}j=j[k]}}m[n]=true;this.triggerCreated(n);return true},createdListeners:[],nameCreatedListeners:{},triggerCreated:function(s){var u=this.createdListeners,m=this.nameCreatedListeners,n=this.maps.nameToAlternates[s],t=[s],p,r,o,q,l,k;for(p=0,r=u.length;p<r;p++){l=u[p];l.fn.call(l.scope,s)}if(n){t.push.apply(t,n)}for(p=0,r=t.length;p<r;p++){k=t[p];u=m[k];if(u){for(o=0,q=u.length;o<q;o++){l=u[o];l.fn.call(l.scope,k)}delete m[k]}}},onCreated:function(m,l,k){var j=this.createdListeners,i=this.nameCreatedListeners,n={fn:m,scope:l};if(k){if(this.isCreated(k)){m.call(l,k);return}if(!i[k]){i[k]=[]}i[k].push(n)}else{j.push(n)}},parseNamespace:function(l){var j=this.namespaceParseCache,m,o,q,k,t,s,r,n,p;if(this.enableNamespaceParseCache){if(j.hasOwnProperty(l)){return j[l]}}m=[];o=this.namespaceRewrites;q=g;k=l;for(n=0,p=o.length;n<p;n++){t=o[n];s=t.from;r=t.to;if(k===s||k.substring(0,s.length)===s){k=k.substring(s.length);if(typeof r!="string"){q=r}else{m=m.concat(r.split("."))}break}}m.push(q);m=m.concat(k.split("."));if(this.enableNamespaceParseCache){j[l]=m}return m},setNamespace:function(m,p){var k=g,q=this.parseNamespace(m),o=q.length-1,j=q[o],n,l;for(n=0;n<o;n++){l=q[n];if(typeof l!="string"){k=l}else{if(!k[l]){k[l]={}}k=k[l]}}k[j]=p;return k[j]},createNamespaces:function(){var k=g,p,m,n,l,o,q;for(n=0,o=arguments.length;n<o;n++){p=this.parseNamespace(arguments[n]);for(l=0,q=p.length;l<q;l++){m=p[l];if(typeof m!="string"){k=m}else{if(!k[m]){k[m]={}}k=k[m]}}}return k},set:function(i,m){var l=this,o=l.maps,n=o.nameToAlternates,k=l.getName(m),j;l.classes[i]=l.setNamespace(i,m);if(k&&k!==i){o.alternateToName[i]=k;j=n[k]||(n[k]=[]);j.push(i)}return this},get:function(l){var n=this.classes,j,p,k,m,o;if(n[l]){return n[l]}j=g;p=this.parseNamespace(l);for(m=0,o=p.length;m<o;m++){k=p[m];if(typeof k!="string"){j=k}else{if(!j||!j[k]){return null}j=j[k]}}return j},setAlias:function(i,j){var l=this.maps.aliasToName,m=this.maps.nameToAliases,k;if(typeof i=="string"){k=i}else{k=this.getName(i)}if(j&&l[j]!==k){l[j]=k}if(!m[k]){m[k]=[]}if(j){Ext.Array.include(m[k],j)}return this},addNameAliasMappings:function(j){var o=this.maps.aliasToName,p=this.maps.nameToAliases,m,n,l,k;for(m in j){n=p[m]||(p[m]=[]);for(k=0;k<j[m].length;k++){l=j[m][k];if(!o[l]){o[l]=m;n.push(l)}}}return this},addNameAlternateMappings:function(m){var j=this.maps.alternateToName,p=this.maps.nameToAlternates,l,n,o,k;for(l in m){n=p[l]||(p[l]=[]);for(k=0;k<m[l].length;k++){o=m[l];if(!j[o]){j[o]=l;n.push(o)}}}return this},getByAlias:function(i){return this.get(this.getNameByAlias(i))},getNameByAlias:function(i){return this.maps.aliasToName[i]||""},getNameByAlternate:function(i){return this.maps.alternateToName[i]||""},getAliasesByName:function(i){return this.maps.nameToAliases[i]||[]},getName:function(i){return i&&i.$className||""},getClass:function(i){return i&&i.self||null},create:function(j,l,i){var k=a();if(typeof l=="function"){l=l(k)}l.$className=j;return new c(k,l,function(){var m=l.postprocessors||b.defaultPostprocessors,t=b.postprocessors,u=[],s,o,r,n,q,p,v;delete l.postprocessors;for(o=0,r=m.length;o<r;o++){s=m[o];if(typeof s=="string"){s=t[s];p=s.properties;if(p===true){u.push(s.fn)}else{if(p){for(n=0,q=p.length;n<q;n++){v=p[n];if(l.hasOwnProperty(v)){u.push(s.fn);break}}}}}else{u.push(s)}}l.postprocessors=u;l.createdFn=i;b.processCreate(j,this,l)})},processCreate:function(l,j,n){var m=this,i=n.postprocessors.shift(),k=n.createdFn;if(!i){if(l){m.set(l,j)}if(k){k.call(j,j)}if(l){m.triggerCreated(l)}return}if(i.call(m,l,j,n,m.processCreate)!==false){m.processCreate(l,j,n)}},createOverride:function(l,p,j){var o=this,n=p.override,k=p.requires,i=p.uses,m=function(){var q,r;if(k){r=k;k=null;Ext.Loader.require(r,m)}else{q=o.get(n);delete p.override;delete p.requires;delete p.uses;Ext.override(q,p);o.triggerCreated(l);if(i){Ext.Loader.addUsedClasses(i)}if(j){j.call(q)}}};o.existCache[l]=true;o.onCreated(m,o,n);return o},instantiateByAlias:function(){var j=arguments[0],i=h.call(arguments),k=this.getNameByAlias(j);if(!k){k=this.maps.aliasToName[j];Ext.syncRequire(k)}i[0]=k;return this.instantiate.apply(this,i)},instantiate:function(){var k=arguments[0],m=typeof k,j=h.call(arguments,1),l=k,n,i;if(m!="function"){if(m!="string"&&j.length===0){j=[k];k=k.xclass}i=this.get(k)}else{i=k}if(!i){n=this.getNameByAlias(k);if(n){k=n;i=this.get(k)}}if(!i){n=this.getNameByAlternate(k);if(n){k=n;i=this.get(k)}}if(!i){Ext.syncRequire(k);i=this.get(k)}return this.getInstantiator(j.length)(i,j)},dynInstantiate:function(j,i){i=d(i,true);i.unshift(j);return this.instantiate.apply(this,i)},getInstantiator:function(m){var l=this.instantiators,n,k,j;n=l[m];if(!n){k=m;j=[];for(k=0;k<m;k++){j.push("a["+k+"]")}n=l[m]=new Function("c","a","return new c("+j.join(",")+")")}return n},postprocessors:{},defaultPostprocessors:[],registerPostprocessor:function(j,m,k,i,l){if(!i){i="last"}if(!k){k=[j]}this.postprocessors[j]={name:j,properties:k||false,fn:m};this.setDefaultPostprocessorPosition(j,i,l);return this},setDefaultPostprocessors:function(i){this.defaultPostprocessors=d(i);return this},setDefaultPostprocessorPosition:function(j,m,l){var k=this.defaultPostprocessors,i;if(typeof m=="string"){if(m==="first"){k.unshift(j);return this}else{if(m==="last"){k.push(j);return this}}m=(m==="after")?1:-1}i=Ext.Array.indexOf(k,l);if(i!==-1){Ext.Array.splice(k,Math.max(0,i+m),0,j)}return this},getNamesByExpression:function(q){var o=this.maps.nameToAliases,r=[],j,n,l,k,s,m,p;if(q.indexOf("*")!==-1){q=q.replace(/\*/g,"(.*?)");s=new RegExp("^"+q+"$");for(j in o){if(o.hasOwnProperty(j)){l=o[j];if(j.search(s)!==-1){r.push(j)}else{for(m=0,p=l.length;m<p;m++){n=l[m];if(n.search(s)!==-1){r.push(j);break}}}}}}else{k=this.getNameByAlias(q);if(k){r.push(k)}else{k=this.getNameByAlternate(q);if(k){r.push(k)}else{r.push(q)}}}return r}};b.registerPostprocessor("alias",function(l,k,o){var j=o.alias,m,n;for(m=0,n=j.length;m<n;m++){e=j[m];this.setAlias(k,e)}},["xtype","alias"]);b.registerPostprocessor("singleton",function(j,i,l,k){k.call(this,j,new i(),l);return false});b.registerPostprocessor("alternateClassName",function(k,j,o){var m=o.alternateClassName,l,n,p;if(!(m instanceof Array)){m=[m]}for(l=0,n=m.length;l<n;l++){p=m[l];this.set(p,j)}});Ext.apply(Ext,{create:e(b,"instantiate"),widget:function(k,j){var o=k,l,m,i,n;if(typeof o!="string"){j=k;o=j.xtype}else{j=j||{}}if(j.isComponent){return j}l="widget."+o;m=b.getNameByAlias(l);if(!m){n=true}i=b.get(m);if(n||!i){return b.instantiateByAlias(l,j)}return new i(j)},createByAlias:e(b,"instantiateByAlias"),define:function(j,k,i){if(k.override){return b.createOverride.apply(b,arguments)}return b.create.apply(b,arguments)},getClassName:e(b,"getName"),getDisplayName:function(i){if(i){if(i.displayName){return i.displayName}if(i.$name&&i.$class){return Ext.getClassName(i.$class)+"#"+i.$name}if(i.$className){return i.$className}}return"Anonymous"},getClass:e(b,"getClass"),namespace:e(b,"createNamespaces")});Ext.createWidget=Ext.widget;Ext.ns=Ext.namespace;c.registerPreprocessor("className",function(i,j){if(j.$className){i.$className=j.$className}},true,"first");c.registerPreprocessor("alias",function(u,o){var s=u.prototype,l=d(o.xtype),j=d(o.alias),v="widget.",t=v.length,p=Array.prototype.slice.call(s.xtypesChain||[]),m=Ext.merge({},s.xtypesMap||{}),n,r,q,k;for(n=0,r=j.length;n<r;n++){q=j[n];if(q.substring(0,t)===v){k=q.substring(t);Ext.Array.include(l,k)}}u.xtype=o.xtype=l[0];o.xtypes=l;for(n=0,r=l.length;n<r;n++){k=l[n];if(!m[k]){m[k]=true;p.push(k)}}o.xtypesChain=p;o.xtypesMap=m;Ext.Function.interceptAfter(o,"onClassCreated",function(){var i=s.mixins,x,w;for(x in i){if(i.hasOwnProperty(x)){w=i[x];l=w.xtypes;if(l){for(n=0,r=l.length;n<r;n++){k=l[n];if(!m[k]){m[k]=true;p.push(k)}}}}}});for(n=0,r=l.length;n<r;n++){k=l[n];Ext.Array.include(j,v+k)}o.alias=j},["xtype","alias"])}(Ext.Class,Ext.Function.alias,Array.prototype.slice,Ext.Array.from,Ext.global));Ext.Loader=new function(){var j=this,b=Ext.ClassManager,r=Ext.Class,e=Ext.Function.flexSetter,m=Ext.Function.alias,a=Ext.Function.pass,d=Ext.Function.defer,h=Ext.Array.erase,l=["extend","mixins","requires"],t={},k=[],c=/\/\.\//g,g=/\./g;Ext.apply(j,{isInHistory:t,history:k,config:{enabled:false,scriptChainDelay:false,disableCaching:true,disableCachingParam:"_dc",garbageCollect:false,paths:{Ext:"."},preserveScripts:true,scriptCharset:undefined},setConfig:function(w,x){if(Ext.isObject(w)&&arguments.length===1){Ext.merge(j.config,w)}else{j.config[w]=(Ext.isObject(x))?Ext.merge(j.config[w],x):x}return j},getConfig:function(w){if(w){return j.config[w]}return j.config},setPath:e(function(w,x){j.config.paths[w]=x;return j}),addClassPathMappings:function(x){var w;for(w in x){j.config.paths[w]=x[w]}return j},getPath:function(w){var y="",z=j.config.paths,x=j.getPrefix(w);if(x.length>0){if(x===w){return z[x]}y=z[x];w=w.substring(x.length+1)}if(y.length>0){y+="/"}return y.replace(c,"/")+w.replace(g,"/")+".js"},getPrefix:function(x){var z=j.config.paths,y,w="";if(z.hasOwnProperty(x)){return x}for(y in z){if(z.hasOwnProperty(y)&&y+"."===x.substring(0,y.length+1)){if(y.length>w.length){w=y}}}return w},isAClassNameWithAKnownPrefix:function(w){var x=j.getPrefix(w);return x!==""&&x!==w},require:function(y,x,w,z){if(x){x.call(w)}},syncRequire:function(){},exclude:function(w){return{require:function(z,y,x){return j.require(z,y,x,w)},syncRequire:function(z,y,x){return j.syncRequire(z,y,x,w)}}},onReady:function(z,y,A,w){var x;if(A!==false&&Ext.onDocumentReady){x=z;z=function(){Ext.onDocumentReady(x,y,w)}}z.call(y)}});var o=[],p={},s={},q={},n={},u=[],v=[],i={};Ext.apply(j,{documentHead:typeof document!="undefined"&&(document.head||document.getElementsByTagName("head")[0]),isLoading:false,queue:o,isClassFileLoaded:p,isFileLoaded:s,readyListeners:u,optionalRequires:v,requiresMap:i,numPendingFiles:0,numLoadedFiles:0,hasFileLoadError:false,classNameToFilePathMap:q,scriptsLoading:0,syncModeEnabled:false,scriptElements:n,refreshQueue:function(){var A=o.length,x,z,w,y;if(!A&&!j.scriptsLoading){return j.triggerReady()}for(x=0;x<A;x++){z=o[x];if(z){y=z.requires;if(y.length>j.numLoadedFiles){continue}for(w=0;w<y.length;){if(b.isCreated(y[w])){h(y,w,1)}else{w++}}if(z.requires.length===0){h(o,x,1);z.callback.call(z.scope);j.refreshQueue();break}}}return j},injectScriptElement:function(w,D,A,F,y){var E=document.createElement("script"),B=false,x=j.config,C=function(){if(!B){B=true;E.onload=E.onreadystatechange=E.onerror=null;if(typeof x.scriptChainDelay=="number"){d(D,x.scriptChainDelay,F)}else{D.call(F)}j.cleanupScriptElement(E,x.preserveScripts===false,x.garbageCollect)}},z=function(G){d(A,1,F);j.cleanupScriptElement(E,x.preserveScripts===false,x.garbageCollect)};E.type="text/javascript";E.onerror=z;y=y||x.scriptCharset;if(y){E.charset=y}if("addEventListener" in E){E.onload=C}else{if("readyState" in E){E.onreadystatechange=function(){if(this.readyState=="loaded"||this.readyState=="complete"){C()}}}else{E.onload=C}}E.src=w;(j.documentHead||document.getElementsByTagName("head")[0]).appendChild(E);return E},removeScriptElement:function(w){if(n[w]){j.cleanupScriptElement(n[w],true,!!j.getConfig("garbageCollect"));delete n[w]}return j},cleanupScriptElement:function(y,x,z){var A;y.onload=y.onreadystatechange=y.onerror=null;if(x){Ext.removeNode(y);if(z){for(A in y){try{y[A]=null;delete y[A]}catch(w){}}}}return j},loadScript:function(F){var z=j.getConfig(),y=typeof F=="string",x=y?F:F.url,B=!y&&F.onError,C=!y&&F.onLoad,E=!y&&F.scope,D=function(){j.numPendingFiles--;j.scriptsLoading--;if(B){B.call(E,"Failed loading '"+x+"', please verify that the file exists")}if(j.numPendingFiles+j.scriptsLoading===0){j.refreshQueue()}},A=function(){j.numPendingFiles--;j.scriptsLoading--;if(C){C.call(E)}if(j.numPendingFiles+j.scriptsLoading===0){j.refreshQueue()}},w;j.isLoading=true;j.numPendingFiles++;j.scriptsLoading++;w=z.disableCaching?(x+"?"+z.disableCachingParam+"="+Ext.Date.now()):x;n[x]=j.injectScriptElement(w,A,D)},loadScriptFile:function(x,E,C,H,w){if(s[x]){return j}var z=j.getConfig(),I=x+(z.disableCaching?("?"+z.disableCachingParam+"="+Ext.Date.now()):""),y=false,G,A,F,B="";H=H||j;j.isLoading=true;if(!w){F=function(){};n[x]=j.injectScriptElement(I,E,F,H)}else{if(typeof XMLHttpRequest!="undefined"){G=new XMLHttpRequest()}else{G=new ActiveXObject("Microsoft.XMLHTTP")}try{G.open("GET",I,false);G.send(null)}catch(D){y=true}A=(G.status===1223)?204:(G.status===0&&(self.location||{}).protocol=="file:")?200:G.status;y=y||(A===0);if(y){}else{if((A>=200&&A<300)||(A===304)){if(!Ext.isIE){B="\n//@ sourceURL="+x}Ext.globalEval(G.responseText+B);E.call(H)}else{}}G=null}},syncRequire:function(){var w=j.syncModeEnabled;if(!w){j.syncModeEnabled=true}j.require.apply(j,arguments);if(!w){j.syncModeEnabled=false}j.refreshQueue()},require:function(O,F,z,B){var H={},y={},E=[],Q=[],N=[],x=[],D,P,J,I,w,C,M,L,K,G,A;if(B){B=(typeof B==="string")?[B]:B;for(L=0,G=B.length;L<G;L++){w=B[L];if(typeof w=="string"&&w.length>0){E=b.getNamesByExpression(w);for(K=0,A=E.length;K<A;K++){H[E[K]]=true}}}}O=(typeof O==="string")?[O]:(O?O:[]);if(F){if(F.length>0){D=function(){var S=[],R,T;for(R=0,T=x.length;R<T;R++){S.push(b.get(x[R]))}return F.apply(this,S)}}else{D=F}}else{D=Ext.emptyFn}z=z||Ext.global;for(L=0,G=O.length;L<G;L++){I=O[L];if(typeof I=="string"&&I.length>0){Q=b.getNamesByExpression(I);A=Q.length;for(K=0;K<A;K++){M=Q[K];if(H[M]!==true){x.push(M);if(!b.isCreated(M)&&!y[M]){y[M]=true;N.push(M)}}}}}if(N.length>0){if(!j.config.enabled){throw new Error("Ext.Loader is not enabled, so dependencies cannot be resolved dynamically. Missing required class"+((N.length>1)?"es":"")+": "+N.join(", "))}}else{D.call(z);return j}P=j.syncModeEnabled;if(!P){o.push({requires:N.slice(),callback:D,scope:z})}G=N.length;for(L=0;L<G;L++){C=N[L];J=j.getPath(C);if(P&&p.hasOwnProperty(C)){j.numPendingFiles--;j.removeScriptElement(J);delete p[C]}if(!p.hasOwnProperty(C)){p[C]=false;q[C]=J;j.numPendingFiles++;j.loadScriptFile(J,a(j.onFileLoaded,[C,J],j),a(j.onFileLoadError,[C,J],j),j,P)}}if(P){D.call(z);if(G===1){return b.get(C)}}return j},onFileLoaded:function(x,w){j.numLoadedFiles++;p[x]=true;s[w]=true;j.numPendingFiles--;if(j.numPendingFiles===0){j.refreshQueue()}},onFileLoadError:function(y,x,w,z){j.numPendingFiles--;j.hasFileLoadError=true},addUsedClasses:function(y){var w,x,z;if(y){y=(typeof y=="string")?[y]:y;for(x=0,z=y.length;x<z;x++){w=y[x];if(typeof w=="string"&&!Ext.Array.contains(v,w)){v.push(w)}}}return j},triggerReady:function(){var x,w,y=v;if(j.isLoading){j.isLoading=false;if(y.length!==0){y=y.slice();v.length=0;j.require(y,j.triggerReady,j);return j}}while(u.length&&!j.isLoading){x=u.shift();x.fn.call(x.scope)}return j},onReady:function(z,y,A,w){var x;if(A!==false&&Ext.onDocumentReady){x=z;z=function(){Ext.onDocumentReady(x,y,w)}}if(!j.isLoading){z.call(y)}else{u.push({fn:z,scope:y})}},historyPush:function(w){if(w&&p.hasOwnProperty(w)&&!t[w]){t[w]=true;k.push(w)}return j}});Ext.disableCacheBuster=function(x,y){var w=new Date();w.setTime(w.getTime()+(x?10*365:-1)*24*60*60*1000);w=w.toGMTString();document.cookie="ext-cache=1; expires="+w+"; path="+(y||"/")};Ext.require=m(j,"require");Ext.syncRequire=m(j,"syncRequire");Ext.exclude=m(j,"exclude");Ext.onReady=function(y,x,w){j.onReady(y,x,true,w)};r.registerPreprocessor("loader",function(M,A,L,K){var H=this,F=[],w,G=b.getName(M),z,y,E,D,J,C,x,I,B;for(z=0,E=l.length;z<E;z++){C=l[z];if(A.hasOwnProperty(C)){x=A[C];if(typeof x=="string"){F.push(x)}else{if(x instanceof Array){for(y=0,D=x.length;y<D;y++){J=x[y];if(typeof J=="string"){F.push(J)}}}else{if(typeof x!="function"){for(y in x){if(x.hasOwnProperty(y)){J=x[y];if(typeof J=="string"){F.push(J)}}}}}}}}if(F.length===0){return}j.require(F,function(){for(z=0,E=l.length;z<E;z++){C=l[z];if(A.hasOwnProperty(C)){x=A[C];if(typeof x=="string"){A[C]=b.get(x)}else{if(x instanceof Array){for(y=0,D=x.length;y<D;y++){J=x[y];if(typeof J=="string"){A[C][y]=b.get(J)}}}else{if(typeof x!="function"){for(var N in x){if(x.hasOwnProperty(N)){J=x[N];if(typeof J=="string"){A[C][N]=b.get(J)}}}}}}}}K.call(H,M,A,L)});return false},true,"after","className");b.registerPostprocessor("uses",function(y,x,z){var w=z.uses;if(w){j.addUsedClasses(w)}});b.onCreated(j.historyPush)};if(Ext._classPathMetadata){Ext.Loader.addClassPathMappings(Ext._classPathMetadata);Ext._classPathMetadata=null}(function(){var a=document.getElementsByTagName("script"),b=a[a.length-1],d=b.src,c=d.substring(0,d.lastIndexOf("/")+1),e=Ext.Loader;e.setConfig({enabled:true,disableCaching:true,paths:{Ext:c+"src"}})})();Ext._endTime=new Date().getTime();if(Ext._beforereadyhandler){Ext._beforereadyhandler()}Ext.Error=Ext.extend(Error,{statics:{ignore:false,raise:function(a){a=a||{};if(Ext.isString(a)){a={msg:a}}var c=this.raise.caller,b;if(c){if(c.$name){a.sourceMethod=c.$name}if(c.$owner){a.sourceClass=c.$owner.$className}}if(Ext.Error.handle(a)!==true){b=Ext.Error.prototype.toString.call(a);Ext.log({msg:b,level:"error",dump:a,stack:true});throw new Ext.Error(a)}},handle:function(){return Ext.Error.ignore}},name:"Ext.Error",constructor:function(a){if(Ext.isString(a)){a={msg:a}}var b=this;Ext.apply(b,a);b.message=b.message||b.msg},toString:function(){var c=this,b=c.sourceClass?c.sourceClass:"",a=c.sourceMethod?"."+c.sourceMethod+"(): ":"",d=c.msg||"(No description provided)";return b+a+d}});Ext.deprecated=function(a){return Ext.emptyFn};Ext.JSON=(new (function(){var me=this,encodingFunction,decodingFunction,useNative=null,useHasOwn=!!{}.hasOwnProperty,isNative=function(){if(useNative===null){useNative=Ext.USE_NATIVE_JSON&&window.JSON&&JSON.toString()=="[object JSON]"}return useNative},pad=function(n){return n<10?"0"+n:n},doDecode=function(json){return eval("("+json+")")},doEncode=function(o,newline){if(o===null||o===undefined){return"null"}else{if(Ext.isDate(o)){return Ext.JSON.encodeDate(o)}else{if(Ext.isString(o)){return Ext.JSON.encodeString(o)}else{if(typeof o=="number"){return isFinite(o)?String(o):"null"}else{if(Ext.isBoolean(o)){return String(o)}else{if(o.toJSON){return o.toJSON()}else{if(Ext.isArray(o)){return encodeArray(o,newline)}else{if(Ext.isObject(o)){return encodeObject(o,newline)}else{if(typeof o==="function"){return"null"}}}}}}}}}return"undefined"},m={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\","\x0b":"\\u000b"},charToReplace=/[\\\"\x00-\x1f\x7f-\uffff]/g,encodeString=function(s){return'"'+s.replace(charToReplace,function(a){var c=m[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"'},encodeArray=function(o,newline){var a=["[",""],len=o.length,i;for(i=0;i<len;i+=1){a.push(Ext.JSON.encodeValue(o[i]),",")}a[a.length-1]="]";return a.join("")},encodeObject=function(o,newline){var a=["{",""],i;for(i in o){if(!useHasOwn||o.hasOwnProperty(i)){a.push(Ext.JSON.encodeValue(i),":",Ext.JSON.encodeValue(o[i]),",")}}a[a.length-1]="}";return a.join("")};me.encodeString=encodeString;me.encodeValue=doEncode;me.encodeDate=function(o){return'"'+o.getFullYear()+"-"+pad(o.getMonth()+1)+"-"+pad(o.getDate())+"T"+pad(o.getHours())+":"+pad(o.getMinutes())+":"+pad(o.getSeconds())+'"'};me.encode=function(o){if(!encodingFunction){encodingFunction=isNative()?JSON.stringify:me.encodeValue}return encodingFunction(o)};me.decode=function(json,safe){if(!decodingFunction){decodingFunction=isNative()?JSON.parse:doDecode}try{return decodingFunction(json)}catch(e){if(safe===true){return null}Ext.Error.raise({sourceClass:"Ext.JSON",sourceMethod:"decode",msg:"You're trying to decode an invalid JSON String: "+json})}}})());Ext.encode=Ext.JSON.encode;Ext.decode=Ext.JSON.decode;Ext.apply(Ext,{userAgent:navigator.userAgent.toLowerCase(),cache:{},idSeed:1000,windowId:"ext-window",documentId:"ext-document",isReady:false,enableGarbageCollector:true,enableListenerCollection:true,addCacheEntry:function(e,b,d){d=d||b.dom;var a=e||(b&&b.id)||d.id,c=Ext.cache[a]||(Ext.cache[a]={data:{},events:{},dom:d,skipGarbageCollection:!!(d.getElementById||d.navigator)});if(b){b.$cache=c;c.el=b}return c},updateCacheEntry:function(a,b){a.dom=b;if(a.el){a.el.dom=b}return a},id:function(a,c){var b=this,d="";a=Ext.getDom(a,true)||{};if(a===document){a.id=b.documentId}else{if(a===window){a.id=b.windowId}}if(!a.id){if(b.isSandboxed){d=Ext.sandboxName.toLowerCase()+"-"}a.id=d+(c||"ext-gen")+(++Ext.idSeed)}return a.id},escapeId:(function(){var c=/^[a-zA-Z_][a-zA-Z0-9_\-]*$/i,d=/([\W]{1})/g,b=/^(\d)/g,a=function(h,g){return"\\"+g},e=function(h,g){return"\\00"+g.charCodeAt(0).toString(16)+" "};return function(g){return c.test(g)?g:g.replace(d,a).replace(b,e)}}()),getBody:(function(){var a;return function(){return a||(a=Ext.get(document.body))}}()),getHead:(function(){var a;return function(){return a||(a=Ext.get(document.getElementsByTagName("head")[0]))}}()),getDoc:(function(){var a;return function(){return a||(a=Ext.get(document))}}()),getCmp:function(a){return Ext.ComponentManager.get(a)},getOrientation:function(){return window.innerHeight>window.innerWidth?"portrait":"landscape"},destroy:function(){var c=arguments.length,b,a;for(b=0;b<c;b++){a=arguments[b];if(a){if(Ext.isArray(a)){this.destroy.apply(this,a)}else{if(Ext.isFunction(a.destroy)){a.destroy()}else{if(a.dom){a.remove()}}}}}},callback:function(d,c,b,a){if(Ext.isFunction(d)){b=b||[];c=c||window;if(a){Ext.defer(d,a,c,b)}else{d.apply(c,b)}}},htmlEncode:function(a){return Ext.String.htmlEncode(a)},htmlDecode:function(a){return Ext.String.htmlDecode(a)},urlAppend:function(a,b){return Ext.String.urlAppend(a,b)}});Ext.ns=Ext.namespace;window.undefined=window.undefined;(function(){var o=function(e){return e.test(Ext.userAgent)},t=document.compatMode=="CSS1Compat",F=function(R,Q){var e;return(R&&(e=Q.exec(Ext.userAgent)))?parseFloat(e[1]):0},p=document.documentMode,a=o(/opera/),v=a&&o(/version\/10\.5/),K=o(/\bchrome\b/),z=o(/webkit/),c=!K&&o(/safari/),I=c&&o(/applewebkit\/4/),G=c&&o(/version\/3/),D=c&&o(/version\/4/),j=c&&o(/version\/5\.0/),C=c&&o(/version\/5/),i=!a&&o(/msie/),J=i&&((o(/msie 7/)&&p!=8&&p!=9)||p==7),H=i&&((o(/msie 8/)&&p!=7&&p!=9)||p==8),E=i&&((o(/msie 9/)&&p!=7&&p!=8)||p==9),M=i&&o(/msie 6/),b=!z&&o(/gecko/),P=b&&o(/rv:1\.9/),O=b&&o(/rv:2\.0/),N=b&&o(/rv:5\./),r=b&&o(/rv:10\./),y=P&&o(/rv:1\.9\.0/),w=P&&o(/rv:1\.9\.1/),u=P&&o(/rv:1\.9\.2/),g=o(/windows|win32/),B=o(/macintosh|mac os x/),x=o(/linux/),l=null,m=F(true,/\bchrome\/(\d+\.\d+)/),h=F(true,/\bfirefox\/(\d+\.\d+)/),n=F(i,/msie (\d+\.\d+)/),s=F(a,/version\/(\d+\.\d+)/),d=F(c,/version\/(\d+\.\d+)/),A=F(z,/webkit\/(\d+\.\d+)/),q=/^https/i.test(window.location.protocol),k;try{document.execCommand("BackgroundImageCache",false,true)}catch(L){}k=function(){};k.info=k.warn=k.error=Ext.emptyFn;Ext.setVersion("extjs","4.1.1.1");Ext.apply(Ext,{SSL_SECURE_URL:q&&i?"javascript:''":"about:blank",scopeResetCSS:Ext.buildSettings.scopeResetCSS,resetCls:Ext.buildSettings.baseCSSPrefix+"reset",enableNestedListenerRemoval:false,USE_NATIVE_JSON:false,getDom:function(R,Q){if(!R||!document){return null}if(R.dom){return R.dom}else{if(typeof R=="string"){var S=Ext.getElementById(R);if(S&&i&&Q){if(R==S.getAttribute("id")){return S}else{return null}}return S}else{return R}}},removeNode:M||J||H?(function(){var e;return function(S){if(S&&S.tagName.toUpperCase()!="BODY"){(Ext.enableNestedListenerRemoval)?Ext.EventManager.purgeElement(S):Ext.EventManager.removeAll(S);var Q=Ext.cache,R=S.id;if(Q[R]){delete Q[R].dom;delete Q[R]}if(H&&S.parentNode){S.parentNode.removeChild(S)}e=e||document.createElement("div");e.appendChild(S);e.innerHTML=""}}}()):function(R){if(R&&R.parentNode&&R.tagName.toUpperCase()!="BODY"){(Ext.enableNestedListenerRemoval)?Ext.EventManager.purgeElement(R):Ext.EventManager.removeAll(R);var e=Ext.cache,Q=R.id;if(e[Q]){delete e[Q].dom;delete e[Q]}R.parentNode.removeChild(R)}},isStrict:t,isIEQuirks:i&&!t,isOpera:a,isOpera10_5:v,isWebKit:z,isChrome:K,isSafari:c,isSafari3:G,isSafari4:D,isSafari5:C,isSafari5_0:j,isSafari2:I,isIE:i,isIE6:M,isIE7:J,isIE8:H,isIE9:E,isGecko:b,isGecko3:P,isGecko4:O,isGecko5:N,isGecko10:r,isFF3_0:y,isFF3_5:w,isFF3_6:u,isFF4:4<=h&&h<5,isFF5:5<=h&&h<6,isFF10:10<=h&&h<11,isLinux:x,isWindows:g,isMac:B,chromeVersion:m,firefoxVersion:h,ieVersion:n,operaVersion:s,safariVersion:d,webKitVersion:A,isSecure:q,BLANK_IMAGE_URL:(M||J)?"//www.sencha.com/s.gif":"data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==",value:function(R,e,Q){return Ext.isEmpty(R,Q)?e:R},escapeRe:function(e){return e.replace(/([-.*+?\^${}()|\[\]\/\\])/g,"\\$1")},addBehaviors:function(T){if(!Ext.isReady){Ext.onReady(function(){Ext.addBehaviors(T)})}else{var Q={},S,e,R;for(e in T){if((S=e.split("@"))[1]){R=S[0];if(!Q[R]){Q[R]=Ext.select(R)}Q[R].on(S[1],T[e])}}Q=null}},getScrollbarSize:function(Q){if(!Ext.isReady){return{}}if(Q||!l){var e=document.body,R=document.createElement("div");R.style.width=R.style.height="100px";R.style.overflow="scroll";R.style.position="absolute";e.appendChild(R);l={width:R.offsetWidth-R.clientWidth,height:R.offsetHeight-R.clientHeight};e.removeChild(R)}return l},getScrollBarWidth:function(Q){var e=Ext.getScrollbarSize(Q);return e.width+2},copyTo:function(Q,S,U,T){if(typeof U=="string"){U=U.split(/[,;\s]/)}var V,R=U.length,e;for(V=0;V<R;V++){e=U[V];if(T||S.hasOwnProperty(e)){Q[e]=S[e]}}return Q},destroyMembers:function(S){for(var R=1,Q=arguments,e=Q.length;R<e;R++){Ext.destroy(S[Q[R]]);delete S[Q[R]]}},log:k,partition:function(e,T){var U=[[],[]],Q,S,R=e.length;for(Q=0;Q<R;Q++){S=e[Q];U[(T&&T(S,Q,e))||(!T&&S)?0:1].push(S)}return U},invoke:function(e,T){var V=[],U=Array.prototype.slice.call(arguments,2),Q,S,R=e.length;for(Q=0;Q<R;Q++){S=e[Q];if(S&&typeof S[T]=="function"){V.push(S[T].apply(S,U))}else{V.push(undefined)}}return V},zip:function(){var W=Ext.partition(arguments,function(X){return typeof X!="function"}),T=W[0],V=W[1][0],e=Ext.max(Ext.pluck(T,"length")),S=[],U,R,Q;for(U=0;U<e;U++){S[U]=[];if(V){S[U]=V.apply(V,Ext.pluck(T,U))}else{for(R=0,Q=T.length;R<Q;R++){S[U].push(T[R][U])}}}return S},toSentence:function(Q,e){var T=Q.length,S,R;if(T<=1){return Q[0]}else{S=Q.slice(0,T-1);R=Q[T-1];return Ext.util.Format.format("{0} {1} {2}",S.join(", "),e||"and",R)}},useShims:M})}());Ext.application=function(a){Ext.require("Ext.app.Application");Ext.onReady(function(){new Ext.app.Application(a)})};(function(){Ext.ns("Ext.util");Ext.util.Format={};var g=Ext.util.Format,e=/<\/?[^>]+>/gi,c=/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,b=/\r?\n/g,d=/[^\d\.]/g,a;Ext.apply(g,{thousandSeparator:",",decimalSeparator:".",currencyPrecision:2,currencySign:"$",currencyAtEnd:false,undef:function(h){return h!==undefined?h:""},defaultValue:function(i,h){return i!==undefined&&i!==""?i:h},substr:"ab".substr(-1)!="b"?function(i,k,h){var j=String(i);return(k<0)?j.substr(Math.max(j.length+k,0),h):j.substr(k,h)}:function(i,j,h){return String(i).substr(j,h)},lowercase:function(h){return String(h).toLowerCase()},uppercase:function(h){return String(h).toUpperCase()},usMoney:function(h){return g.currency(h,"$",2)},currency:function(k,m,j,h){var o="",n=",0",l=0;k=k-0;if(k<0){k=-k;o="-"}j=Ext.isDefined(j)?j:g.currencyPrecision;n+=n+(j>0?".":"");for(;l<j;l++){n+="0"}k=g.number(k,n);if((h||g.currencyAtEnd)===true){return Ext.String.format("{0}{1}{2}",o,k,m||g.currencySign)}else{return Ext.String.format("{0}{1}{2}",o,m||g.currencySign,k)}},date:function(h,i){if(!h){return""}if(!Ext.isDate(h)){h=new Date(Date.parse(h))}return Ext.Date.dateFormat(h,i||Ext.Date.defaultFormat)},dateRenderer:function(h){return function(i){return g.date(i,h)}},stripTags:function(h){return !h?h:String(h).replace(e,"")},stripScripts:function(h){return !h?h:String(h).replace(c,"")},fileSize:function(h){if(h<1024){return h+" bytes"}else{if(h<1048576){return(Math.round(((h*10)/1024))/10)+" KB"}else{return(Math.round(((h*10)/1048576))/10)+" MB"}}},math:(function(){var h={};return function(j,i){if(!h[i]){h[i]=Ext.functionFactory("v","return v "+i+";")}return h[i](j)}}()),round:function(j,i){var h=Number(j);if(typeof i=="number"){i=Math.pow(10,i);h=Math.round(j*i)/i}return h},number:function(y,s){if(!s){return y}y=Ext.Number.from(y,NaN);if(isNaN(y)){return""}var A=g.thousandSeparator,q=g.decimalSeparator,z=false,r=y<0,k,h,x,w,p,t,o,l,u;y=Math.abs(y);if(s.substr(s.length-2)=="/i"){if(!a){a=new RegExp("[^\\d\\"+g.decimalSeparator+"]","g")}s=s.substr(0,s.length-2);z=true;k=s.indexOf(A)!=-1;h=s.replace(a,"").split(q)}else{k=s.indexOf(",")!=-1;h=s.replace(d,"").split(".")}if(h.length>2){}else{if(h.length>1){y=Ext.Number.toFixed(y,h[1].length)}else{y=Ext.Number.toFixed(y,0)}}x=y.toString();h=x.split(".");if(k){w=h[0];p=[];t=w.length;o=Math.floor(t/3);l=w.length%3||3;for(u=0;u<t;u+=l){if(u!==0){l=3}p[p.length]=w.substr(u,l);o-=1}x=p.join(A);if(h[1]){x+=q+h[1]}}else{if(h[1]){x=h[0]+q+h[1]}}if(r){r=x.replace(/[^1-9]/g,"")!==""}return(r?"-":"")+s.replace(/[\d,?\.?]+/,x)},numberRenderer:function(h){return function(i){return g.number(i,h)}},plural:function(h,i,j){return h+" "+(h==1?i:(j?j:i+"s"))},nl2br:function(h){return Ext.isEmpty(h)?"":h.replace(b,"<br/>")},capitalize:Ext.String.capitalize,ellipsis:Ext.String.ellipsis,format:Ext.String.format,htmlDecode:Ext.String.htmlDecode,htmlEncode:Ext.String.htmlEncode,leftPad:Ext.String.leftPad,trim:Ext.String.trim,parseBox:function(i){i=Ext.isEmpty(i)?"":i;if(Ext.isNumber(i)){i=i.toString()}var j=i.split(" "),h=j.length;if(h==1){j[1]=j[2]=j[3]=j[0]}else{if(h==2){j[2]=j[0];j[3]=j[1]}else{if(h==3){j[3]=j[1]}}}return{top:parseInt(j[0],10)||0,right:parseInt(j[1],10)||0,bottom:parseInt(j[2],10)||0,left:parseInt(j[3],10)||0}},escapeRegex:function(h){return h.replace(/([\-.*+?\^${}()|\[\]\/\\])/g,"\\$1")}})}());Ext.define("Ext.util.TaskRunner",{interval:10,timerId:null,constructor:function(a){var b=this;if(typeof a=="number"){b.interval=a}else{if(a){Ext.apply(b,a)}}b.tasks=[];b.timerFn=Ext.Function.bind(b.onTick,b)},newTask:function(b){var a=new Ext.util.TaskRunner.Task(b);a.manager=this;return a},start:function(a){var c=this,b=new Date().getTime();if(!a.pending){c.tasks.push(a);a.pending=true}a.stopped=false;a.taskStartTime=b;a.taskRunTime=a.fireOnStart!==false?0:a.taskStartTime;a.taskRunCount=0;if(!c.firing){if(a.fireOnStart!==false){c.startTimer(0,b)}else{c.startTimer(a.interval,b)}}return a},stop:function(a){if(!a.stopped){a.stopped=true;if(a.onStop){a.onStop.call(a.scope||a,a)}}return a},stopAll:function(){Ext.each(this.tasks,this.stop,this)},firing:false,nextExpires:1e+99,onTick:function(){var m=this,e=m.tasks,a=new Date().getTime(),n=1e+99,k=e.length,c,o,h,b,d,g;m.timerId=null;m.firing=true;for(h=0;h<k||h<(k=e.length);++h){b=e[h];if(!(g=b.stopped)){c=b.taskRunTime+b.interval;if(c<=a){d=1;try{d=b.run.apply(b.scope||b,b.args||[++b.taskRunCount])}catch(j){try{if(b.onError){d=b.onError.call(b.scope||b,b,j)}}catch(l){}}b.taskRunTime=a;if(d===false||b.taskRunCount===b.repeat){m.stop(b);g=true}else{g=b.stopped;c=a+b.interval}}if(!g&&b.duration&&b.duration<=(a-b.taskStartTime)){m.stop(b);g=true}}if(g){b.pending=false;if(!o){o=e.slice(0,h)}}else{if(o){o.push(b)}if(n>c){n=c}}}if(o){m.tasks=o}m.firing=false;if(m.tasks.length){m.startTimer(n-a,new Date().getTime())}},startTimer:function(e,c){var d=this,b=c+e,a=d.timerId;if(a&&d.nextExpires-b>d.interval){clearTimeout(a);a=null}if(!a){if(e<d.interval){e=d.interval}d.timerId=setTimeout(d.timerFn,e);d.nextExpires=b}}},function(){var b=this,a=b.prototype;a.destroy=a.stopAll;Ext.util.TaskManager=Ext.TaskManager=new b();b.Task=new Ext.Class({isTask:true,stopped:true,fireOnStart:false,constructor:function(c){Ext.apply(this,c)},restart:function(c){if(c!==undefined){this.interval=c}this.manager.start(this)},start:function(c){if(this.stopped){this.restart(c)}},stop:function(){this.manager.stop(this)}});a=b.Task.prototype;a.destroy=a.stop});Ext.define("Ext.perf.Accumulator",(function(){var c=null,h=Ext.global.chrome,d,b=function(){b=function(){return new Date().getTime()};var l,m;if(Ext.isChrome&&h&&h.Interval){l=new h.Interval();l.start();b=function(){return l.microseconds()/1000}}else{if(window.ActiveXObject){try{m=new ActiveXObject("SenchaToolbox.Toolbox");Ext.senchaToolbox=m;b=function(){return m.milliseconds}}catch(n){}}else{if(Date.now){b=Date.now}}}Ext.perf.getTimestamp=Ext.perf.Accumulator.getTimestamp=b;return b()};function i(m,l){m.sum+=l;m.min=Math.min(m.min,l);m.max=Math.max(m.max,l)}function e(o){var m=o?o:(b()-this.time),n=this,l=n.accum;++l.count;if(!--l.depth){i(l.total,m)}i(l.pure,m-n.childTime);c=n.parent;if(c){++c.accum.childCount;c.childTime+=m}}function a(){return{min:Number.MAX_VALUE,max:0,sum:0}}function j(m,l){return function(){var o=m.enter(),n=l.apply(this,arguments);o.leave();return n}}function k(l){return Math.round(l*100)/100}function g(n,m,l,p){var o={avg:0,min:p.min,max:p.max,sum:0};if(n){l=l||0;o.sum=p.sum-m*l;o.avg=o.sum/n}return o}return{constructor:function(l){var m=this;m.count=m.childCount=m.depth=m.maxDepth=0;m.pure=a();m.total=a();m.name=l},statics:{getTimestamp:b},format:function(l){if(!d){d=new Ext.XTemplate(["{name} - {count} call(s)",'<tpl if="count">','<tpl if="childCount">'," ({childCount} children)","</tpl>",'<tpl if="depth - 1">'," ({depth} deep)","</tpl>",'<tpl for="times">',", {type}: {[this.time(values.sum)]} msec (","avg={[this.time(values.sum / parent.count)]}",")","</tpl>","</tpl>"].join(""),{time:function(n){return Math.round(n*100)/100}})}var m=this.getData(l);m.name=this.name;m.pure.type="Pure";m.total.type="Total";m.times=[m.pure,m.total];return d.apply(m)},getData:function(l){var m=this;return{count:m.count,childCount:m.childCount,depth:m.maxDepth,pure:g(m.count,m.childCount,l,m.pure),total:g(m.count,m.childCount,l,m.total)}},enter:function(){var l=this,m={accum:l,leave:e,childTime:0,parent:c};++l.depth;if(l.maxDepth<l.depth){l.maxDepth=l.depth}c=m;m.time=b();return m},monitor:function(n,m,l){var o=this.enter();if(l){n.apply(m,l)}else{n.call(m)}o.leave()},report:function(){Ext.log(this.format())},tap:function(t,v){var u=this,o=typeof v=="string"?[v]:v,s,w,q,p,n,m,l,r;r=function(){if(typeof t=="string"){s=Ext.global;p=t.split(".");for(q=0,n=p.length;q<n;++q){s=s[p[q]]}}else{s=t}for(q=0,n=o.length;q<n;++q){m=o[q];w=m.charAt(0)=="!";if(w){m=m.substring(1)}else{w=!(m in s.prototype)}l=w?s:s.prototype;l[m]=j(u,l[m])}};Ext.ClassManager.onCreated(r,u,t);return u}}}()),function(){Ext.perf.getTimestamp=this.getTimestamp});Ext.define("Ext.perf.Monitor",{singleton:true,alternateClassName:"Ext.Perf",requires:["Ext.perf.Accumulator"],constructor:function(){this.accumulators=[];this.accumulatorsByName={}},calibrate:function(){var b=new Ext.perf.Accumulator("$"),g=b.total,c=Ext.perf.Accumulator.getTimestamp,e=0,h,a,d;d=c();do{h=b.enter();h.leave();++e}while(g.sum<100);a=c();return(a-d)/e},get:function(b){var c=this,a=c.accumulatorsByName[b];if(!a){c.accumulatorsByName[b]=a=new Ext.perf.Accumulator(b);c.accumulators.push(a)}return a},enter:function(a){return this.get(a).enter()},monitor:function(a,c,b){this.get(a).monitor(c,b)},report:function(){var c=this,b=c.accumulators,a=c.calibrate();b.sort(function(e,d){return(e.name<d.name)?-1:((d.name<e.name)?1:0)});c.updateGC();Ext.log("Calibration: "+Math.round(a*100)/100+" msec/sample");Ext.each(b,function(d){Ext.log(d.format(a))})},getData:function(c){var b={},a=this.accumulators;Ext.each(a,function(d){if(c||d.count){b[d.name]=d.getData()}});return b},reset:function(){Ext.each(this.accumulators,function(a){var b=a;b.count=b.childCount=b.depth=b.maxDepth=0;b.pure={min:Number.MAX_VALUE,max:0,sum:0};b.total={min:Number.MAX_VALUE,max:0,sum:0}})},updateGC:function(){var a=this.accumulatorsByName.GC,b=Ext.senchaToolbox,c;if(a){a.count=b.garbageCollectionCounter||0;if(a.count){c=a.pure;a.total.sum=c.sum=b.garbageCollectionMilliseconds;c.min=c.max=c.sum/a.count;c=a.total;c.min=c.max=c.sum/a.count}}},watchGC:function(){Ext.perf.getTimestamp();var a=Ext.senchaToolbox;if(a){this.get("GC");a.watchGarbageCollector(false)}},setup:function(c){if(!c){c={render:{"Ext.AbstractComponent":"render"},layout:{"Ext.layout.Context":"run"}}}this.currentConfig=c;var d,g,b,e,a;for(d in c){if(c.hasOwnProperty(d)){g=c[d];b=Ext.Perf.get(d);for(e in g){if(g.hasOwnProperty(e)){a=g[e];b.tap(e,a)}}}}this.watchGC()}});Ext.is={init:function(b){var c=this.platforms,e=c.length,d,a;b=b||window.navigator;for(d=0;d<e;d++){a=c[d];this[a.identity]=a.regex.test(b[a.property])}this.Desktop=this.Mac||this.Windows||(this.Linux&&!this.Android);this.Tablet=this.iPad;this.Phone=!this.Desktop&&!this.Tablet;this.iOS=this.iPhone||this.iPad||this.iPod;this.Standalone=!!window.navigator.standalone},platforms:[{property:"platform",regex:/iPhone/i,identity:"iPhone"},{property:"platform",regex:/iPod/i,identity:"iPod"},{property:"userAgent",regex:/iPad/i,identity:"iPad"},{property:"userAgent",regex:/Blackberry/i,identity:"Blackberry"},{property:"userAgent",regex:/Android/i,identity:"Android"},{property:"platform",regex:/Mac/i,identity:"Mac"},{property:"platform",regex:/Win/i,identity:"Windows"},{property:"platform",regex:/Linux/i,identity:"Linux"}]};Ext.is.init();(function(){var a=function(d,c){var b=d.ownerDocument.defaultView,e=(b?b.getComputedStyle(d,null):d.currentStyle)||d.style;return e[c]};Ext.supports={init:function(){var d=this,e=document,c=d.tests,i=c.length,h=i&&Ext.isReady&&e.createElement("div"),g,b=[];if(h){h.innerHTML=['<div style="height:30px;width:50px;">','<div style="height:20px;width:20px;"></div>',"</div>",'<div style="width: 200px; height: 200px; position: relative; padding: 5px;">','<div style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"></div>',"</div>",'<div style="position: absolute; left: 10%; top: 10%;"></div>','<div style="float:left; background-color:transparent;"></div>'].join("");e.body.appendChild(h)}while(i--){g=c[i];if(h||g.early){d[g.identity]=g.fn.call(d,e,h)}else{b.push(g)}}if(h){e.body.removeChild(h)}d.tests=b},PointerEvents:"pointerEvents" in document.documentElement.style,CSS3BoxShadow:"boxShadow" in document.documentElement.style||"WebkitBoxShadow" in document.documentElement.style||"MozBoxShadow" in document.documentElement.style,ClassList:!!document.documentElement.classList,OrientationChange:((typeof window.orientation!="undefined")&&("onorientationchange" in window)),DeviceMotion:("ondevicemotion" in window),Touch:("ontouchstart" in window)&&(!Ext.is.Desktop),TimeoutActualLateness:(function(){setTimeout(function(){Ext.supports.TimeoutActualLateness=arguments.length!==0},0)}()),tests:[{identity:"Transitions",fn:function(h,k){var g=["webkit","Moz","o","ms","khtml"],j="TransitionEnd",b=[g[0]+j,"transitionend",g[2]+j,g[3]+j,g[4]+j],e=g.length,d=0,c=false;for(;d<e;d++){if(a(k,g[d]+"TransitionProperty")){Ext.supports.CSS3Prefix=g[d];Ext.supports.CSS3TransitionEnd=b[d];c=true;break}}return c}},{identity:"RightMargin",fn:function(c,d){var b=c.defaultView;return !(b&&b.getComputedStyle(d.firstChild.firstChild,null).marginRight!="0px")}},{identity:"DisplayChangeInputSelectionBug",early:true,fn:function(){var b=Ext.webKitVersion;return 0<b&&b<533}},{identity:"DisplayChangeTextAreaSelectionBug",early:true,fn:function(){var b=Ext.webKitVersion;return 0<b&&b<534.24}},{identity:"TransparentColor",fn:function(c,d,b){b=c.defaultView;return !(b&&b.getComputedStyle(d.lastChild,null).backgroundColor!="transparent")}},{identity:"ComputedStyle",fn:function(c,d,b){b=c.defaultView;return b&&b.getComputedStyle}},{identity:"Svg",fn:function(b){return !!b.createElementNS&&!!b.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect}},{identity:"Canvas",fn:function(b){return !!b.createElement("canvas").getContext}},{identity:"Vml",fn:function(b){var c=b.createElement("div");c.innerHTML="<!--[if vml]><br/><br/><![endif]-->";return(c.childNodes.length==2)}},{identity:"Float",fn:function(b,c){return !!c.lastChild.style.cssFloat}},{identity:"AudioTag",fn:function(b){return !!b.createElement("audio").canPlayType}},{identity:"History",fn:function(){var b=window.history;return !!(b&&b.pushState)}},{identity:"CSS3DTransform",fn:function(){return(typeof WebKitCSSMatrix!="undefined"&&new WebKitCSSMatrix().hasOwnProperty("m41"))}},{identity:"CSS3LinearGradient",fn:function(h,j){var g="background-image:",d="-webkit-gradient(linear, left top, right bottom, from(black), to(white))",i="linear-gradient(left top, black, white)",e="-moz-"+i,b="-o-"+i,c=[g+d,g+i,g+e,g+b];j.style.cssText=c.join(";");return(""+j.style.backgroundImage).indexOf("gradient")!==-1}},{identity:"CSS3BorderRadius",fn:function(e,g){var c=["borderRadius","BorderRadius","MozBorderRadius","WebkitBorderRadius","OBorderRadius","KhtmlBorderRadius"],d=false,b;for(b=0;b<c.length;b++){if(document.body.style[c[b]]!==undefined){return true}}return d}},{identity:"GeoLocation",fn:function(){return(typeof navigator!="undefined"&&typeof navigator.geolocation!="undefined")||(typeof google!="undefined"&&typeof google.gears!="undefined")}},{identity:"MouseEnterLeave",fn:function(b,c){return("onmouseenter" in c&&"onmouseleave" in c)}},{identity:"MouseWheel",fn:function(b,c){return("onmousewheel" in c)}},{identity:"Opacity",fn:function(b,c){if(Ext.isIE6||Ext.isIE7||Ext.isIE8){return false}c.firstChild.style.cssText="opacity:0.73";return c.firstChild.style.opacity=="0.73"}},{identity:"Placeholder",fn:function(b){return"placeholder" in b.createElement("input")}},{identity:"Direct2DBug",fn:function(){return Ext.isString(document.body.style.msTransformOrigin)}},{identity:"BoundingClientRect",fn:function(b,c){return Ext.isFunction(c.getBoundingClientRect)}},{identity:"IncludePaddingInWidthCalculation",fn:function(b,c){return c.childNodes[1].firstChild.offsetWidth==210}},{identity:"IncludePaddingInHeightCalculation",fn:function(b,c){return c.childNodes[1].firstChild.offsetHeight==210}},{identity:"ArraySort",fn:function(){var b=[1,2,3,4,5].sort(function(){return 0});return b[0]===1&&b[1]===2&&b[2]===3&&b[3]===4&&b[4]===5}},{identity:"Range",fn:function(){return !!document.createRange}},{identity:"CreateContextualFragment",fn:function(){var b=Ext.supports.Range?document.createRange():false;return b&&!!b.createContextualFragment}},{identity:"WindowOnError",fn:function(){return Ext.isIE||Ext.isGecko||Ext.webKitVersion>=534.16}},{identity:"TextAreaMaxLength",fn:function(){var b=document.createElement("textarea");return("maxlength" in b)}},{identity:"GetPositionPercentage",fn:function(b,c){return a(c.childNodes[2],"left")=="10%"}}]}}());Ext.supports.init();Ext.util.DelayedTask=function(d,c,a){var e=this,g,b=function(){clearInterval(g);g=null;d.apply(c,a||[])};this.delay=function(i,k,j,h){e.cancel();d=k||d;c=j||c;a=h||a;g=setInterval(b,i)};this.cancel=function(){if(g){clearInterval(g);g=null}}};Ext.require("Ext.util.DelayedTask",function(){Ext.util.Event=Ext.extend(Object,(function(){var b={};function d(h,i,j,g){return function(){if(j.target===arguments[0]){h.apply(g,arguments)}}}function c(h,i,j,g){i.task=new Ext.util.DelayedTask();return function(){i.task.delay(j.buffer,h,g,Ext.Array.toArray(arguments))}}function a(h,i,j,g){return function(){var k=new Ext.util.DelayedTask();if(!i.tasks){i.tasks=[]}i.tasks.push(k);k.delay(j.delay||10,h,g,Ext.Array.toArray(arguments))}}function e(h,i,j,g){return function(){var k=i.ev;if(k.removeListener(i.fn,g)&&k.observable){k.observable.hasListeners[k.name]--}return h.apply(g,arguments)}}return{isEvent:true,constructor:function(h,g){this.name=g;this.observable=h;this.listeners=[]},addListener:function(i,h,g){var j=this,k;h=h||j.observable;if(!j.isListening(i,h)){k=j.createListener(i,h,g);if(j.firing){j.listeners=j.listeners.slice(0)}j.listeners.push(k)}},createListener:function(j,i,g){g=g||b;i=i||this.observable;var k={fn:j,scope:i,o:g,ev:this},h=j;if(g.single){h=e(h,k,g,i)}if(g.target){h=d(h,k,g,i)}if(g.delay){h=a(h,k,g,i)}if(g.buffer){h=c(h,k,g,i)}k.fireFn=h;return k},findListener:function(l,k){var j=this.listeners,g=j.length,m,h;while(g--){m=j[g];if(m){h=m.scope;if(m.fn==l&&(h==(k||this.observable))){return g}}}return -1},isListening:function(h,g){return this.findListener(h,g)!==-1},removeListener:function(j,i){var l=this,h,m,g;h=l.findListener(j,i);if(h!=-1){m=l.listeners[h];if(l.firing){l.listeners=l.listeners.slice(0)}if(m.task){m.task.cancel();delete m.task}g=m.tasks&&m.tasks.length;if(g){while(g--){m.tasks[g].cancel()}delete m.tasks}Ext.Array.erase(l.listeners,h,1);return true}return false},clearListeners:function(){var h=this.listeners,g=h.length;while(g--){this.removeListener(h[g].fn,h[g].scope)}},fire:function(){var l=this,j=l.listeners,k=j.length,h,g,m;if(k>0){l.firing=true;for(h=0;h<k;h++){m=j[h];g=arguments.length?Array.prototype.slice.call(arguments,0):[];if(m.o){g.push(m.o)}if(m&&m.fireFn.apply(m.scope||l.observable,g)===false){return(l.firing=false)}}}l.firing=false;return true}}}()))});Ext.define("Ext.util.Observable",{requires:["Ext.util.Event"],statics:{releaseCapture:function(a){a.fireEvent=this.prototype.fireEvent},capture:function(c,b,a){c.fireEvent=Ext.Function.createInterceptor(c.fireEvent,b,a)},observe:function(a,b){if(a){if(!a.isObservable){Ext.applyIf(a,new this());this.capture(a.prototype,a.fireEvent,a)}if(Ext.isObject(b)){a.on(b)}}return a},prepareClass:function(d,c){if(!d.HasListeners){var b=Ext.util.Observable,e=function(){},a=d.superclass.HasListeners||(c&&c.HasListeners)||b.HasListeners;d.prototype.HasListeners=d.HasListeners=e;e.prototype=d.hasListeners=new a()}}},isObservable:true,eventsSuspended:0,constructor:function(a){var b=this;Ext.apply(b,a);if(!b.hasListeners){b.hasListeners=new b.HasListeners()}b.events=b.events||{};if(b.listeners){b.on(b.listeners);b.listeners=null}if(b.bubbleEvents){b.enableBubble(b.bubbleEvents)}},onClassExtended:function(a){if(!a.HasListeners){Ext.util.Observable.prepareClass(a)}},eventOptionsRe:/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate|element|vertical|horizontal|freezeEvent)$/,addManagedListener:function(i,d,g,e,c){var h=this,a=h.managedListeners=h.managedListeners||[],b;if(typeof d!=="string"){c=d;for(d in c){if(c.hasOwnProperty(d)){b=c[d];if(!h.eventOptionsRe.test(d)){h.addManagedListener(i,d,b.fn||b,b.scope||c.scope,b.fn?b:c)}}}}else{a.push({item:i,ename:d,fn:g,scope:e,options:c});i.on(d,g,e,c)}},removeManagedListener:function(j,c,g,k){var e=this,l,b,h,a,d;if(typeof c!=="string"){l=c;for(c in l){if(l.hasOwnProperty(c)){b=l[c];if(!e.eventOptionsRe.test(c)){e.removeManagedListener(j,c,b.fn||b,b.scope||l.scope)}}}}h=e.managedListeners?e.managedListeners.slice():[];for(d=0,a=h.length;d<a;d++){e.removeManagedListenerItem(false,h[d],j,c,g,k)}},fireEvent:function(a){a=a.toLowerCase();var e=this,c=e.events,d=c&&c[a],b=true;if(d&&e.hasListeners[a]){b=e.continueFireEvent(a,Ext.Array.slice(arguments,1),d.bubble)}return b},continueFireEvent:function(c,e,b){var h=this,a,g,d=true;do{if(h.eventsSuspended){if((a=h.eventQueue)){a.push([c,e,b])}return d}else{g=h.events[c];if(g&&g!=true){if((d=g.fire.apply(g,e))===false){break}}}}while(b&&(h=h.getBubbleParent()));return d},getBubbleParent:function(){var b=this,a=b.getBubbleTarget&&b.getBubbleTarget();if(a&&a.isObservable){return a}return null},addListener:function(c,g,i,j){var e=this,b,a,d,h=0;if(typeof c!=="string"){j=c;for(c in j){if(j.hasOwnProperty(c)){b=j[c];if(!e.eventOptionsRe.test(c)){e.addListener(c,b.fn||b,b.scope||j.scope,b.fn?b:j)}}}}else{c=c.toLowerCase();a=e.events[c];if(a&&a.isEvent){h=a.listeners.length}else{e.events[c]=a=new Ext.util.Event(e,c)}if(typeof g==="string"){g=i[g]||e[g]}a.addListener(g,i,j);if(a.listeners.length!==h){d=e.hasListeners;if(d.hasOwnProperty(c)){++d[c]}else{d[c]=1}}}},removeListener:function(c,e,d){var h=this,b,g,a;if(typeof c!=="string"){a=c;for(c in a){if(a.hasOwnProperty(c)){b=a[c];if(!h.eventOptionsRe.test(c)){h.removeListener(c,b.fn||b,b.scope||a.scope)}}}}else{c=c.toLowerCase();g=h.events[c];if(g&&g.isEvent){if(g.removeListener(e,d)&&!--h.hasListeners[c]){delete h.hasListeners[c]}}}},clearListeners:function(){var b=this.events,c,a;for(a in b){if(b.hasOwnProperty(a)){c=b[a];if(c.isEvent){c.clearListeners()}}}this.clearManagedListeners()},clearManagedListeners:function(){var b=this.managedListeners||[],c=0,a=b.length;for(;c<a;c++){this.removeManagedListenerItem(true,b[c])}this.managedListeners=[]},removeManagedListenerItem:function(b,a,g,c,e,d){if(b||(a.item===g&&a.ename===c&&(!e||a.fn===e)&&(!d||a.scope===d))){a.item.un(a.ename,a.fn,a.scope);if(!b){Ext.Array.remove(this.managedListeners,a)}}},addEvents:function(g){var e=this,d=e.events||(e.events={}),a,b,c;if(typeof g=="string"){for(b=arguments,c=b.length;c--;){a=b[c];if(!d[a]){d[a]=true}}}else{Ext.applyIf(e.events,g)}},hasListener:function(a){return !!this.hasListeners[a.toLowerCase()]},suspendEvents:function(a){this.eventsSuspended+=1;if(a&&!this.eventQueue){this.eventQueue=[]}},resumeEvents:function(){var a=this,d=a.eventQueue,c,b;if(a.eventsSuspended&&!--a.eventsSuspended){delete a.eventQueue;if(d){c=d.length;for(b=0;b<c;b++){a.continueFireEvent.apply(a,d[b])}}}},relayEvents:function(c,e,j){var h=this,a=e.length,d=0,g,b;for(;d<a;d++){g=e[d];b=j?j+g:g;h.mon(c,g,h.createRelayer(b))}},createRelayer:function(a,b){var c=this;return function(){return c.fireEvent.apply(c,[a].concat(Array.prototype.slice.apply(arguments,b||[0,-1])))}},enableBubble:function(j){if(j){var g=this,h=(typeof j=="string")?arguments:j,e=h.length,c=g.events,b,d,a;for(a=0;a<e;++a){b=h[a].toLowerCase();d=c[b];if(!d||typeof d=="boolean"){c[b]=d=new Ext.util.Event(g,b)}g.hasListeners[b]=(g.hasListeners[b]||0)+1;d.bubble=true}}}},function(){var a=this,d=a.prototype,b=function(){},e=function(g){if(!g.HasListeners){var h=g.prototype;a.prepareClass(g,this);g.onExtended(function(i){a.prepareClass(i)});if(h.onClassMixedIn){Ext.override(g,{onClassMixedIn:function(i){e.call(this,i);this.callParent(arguments)}})}else{h.onClassMixedIn=function(i){e.call(this,i)}}}};b.prototype={};d.HasListeners=a.HasListeners=b;a.createAlias({on:"addListener",un:"removeListener",mon:"addManagedListener",mun:"removeManagedListener"});a.observeClass=a.observe;function c(m){var l=(this.methodEvents=this.methodEvents||{})[m],i,h,j,k=this,g;if(!l){this.methodEvents[m]=l={};l.originalFn=this[m];l.methodName=m;l.before=[];l.after=[];g=function(p,o,n){if((h=p.apply(o||k,n))!==undefined){if(typeof h=="object"){if(h.returnValue!==undefined){i=h.returnValue}else{i=h}j=!!h.cancel}else{if(h===false){j=true}else{i=h}}}};this[m]=function(){var p=Array.prototype.slice.call(arguments,0),o,q,n;i=h=undefined;j=false;for(q=0,n=l.before.length;q<n;q++){o=l.before[q];g(o.fn,o.scope,p);if(j){return i}}if((h=l.originalFn.apply(k,p))!==undefined){i=h}for(q=0,n=l.after.length;q<n;q++){o=l.after[q];g(o.fn,o.scope,p);if(j){return i}}return i}}return l}Ext.apply(d,{onClassMixedIn:e,beforeMethod:function(i,h,g){c.call(this,i).before.push({fn:h,scope:g})},afterMethod:function(i,h,g){c.call(this,i).after.push({fn:h,scope:g})},removeMethodListener:function(m,k,j){var l=this.getMethodEvent(m),h,g;for(h=0,g=l.before.length;h<g;h++){if(l.before[h].fn==k&&l.before[h].scope==j){Ext.Array.erase(l.before,h,1);return}}for(h=0,g=l.after.length;h<g;h++){if(l.after[h].fn==k&&l.after[h].scope==j){Ext.Array.erase(l.after,h,1);return}}},toggleEventLogging:function(g){Ext.util.Observable[g?"capture":"releaseCapture"](this,function(h){if(Ext.isDefined(Ext.global.console)){Ext.global.console.log(h,arguments)}})}})});Ext.define("Ext.util.HashMap",{mixins:{observable:"Ext.util.Observable"},constructor:function(a){a=a||{};var c=this,b=a.keyFn;c.addEvents("add","clear","remove","replace");c.mixins.observable.constructor.call(c,a);c.clear(true);if(b){c.getKey=b}},getCount:function(){return this.length},getData:function(a,b){if(b===undefined){b=a;a=this.getKey(b)}return[a,b]},getKey:function(a){return a.id},add:function(a,c){var b=this;if(c===undefined){c=a;a=b.getKey(c)}if(b.containsKey(a)){return b.replace(a,c)}b.map[a]=c;++b.length;if(b.hasListeners.add){b.fireEvent("add",b,a,c)}return c},replace:function(b,d){var c=this,e=c.map,a;if(d===undefined){d=b;b=c.getKey(d)}if(!c.containsKey(b)){c.add(b,d)}a=e[b];e[b]=d;if(c.hasListeners.replace){c.fireEvent("replace",c,b,d,a)}return d},remove:function(b){var a=this.findKey(b);if(a!==undefined){return this.removeAtKey(a)}return false},removeAtKey:function(a){var b=this,c;if(b.containsKey(a)){c=b.map[a];delete b.map[a];--b.length;if(b.hasListeners.remove){b.fireEvent("remove",b,a,c)}return true}return false},get:function(a){return this.map[a]},clear:function(a){var b=this;b.map={};b.length=0;if(a!==true&&b.hasListeners.clear){b.fireEvent("clear",b)}return b},containsKey:function(a){return this.map[a]!==undefined},contains:function(a){return this.containsKey(this.findKey(a))},getKeys:function(){return this.getArray(true)},getValues:function(){return this.getArray(false)},getArray:function(d){var a=[],b,c=this.map;for(b in c){if(c.hasOwnProperty(b)){a.push(d?b:c[b])}}return a},each:function(d,c){var a=Ext.apply({},this.map),b,e=this.length;c=c||this;for(b in a){if(a.hasOwnProperty(b)){if(d.call(c,b,a[b],e)===false){break}}}return this},clone:function(){var c=new this.self(),b=this.map,a;c.suspendEvents();for(a in b){if(b.hasOwnProperty(a)){c.add(a,b[a])}}c.resumeEvents();return c},findKey:function(b){var a,c=this.map;for(a in c){if(c.hasOwnProperty(a)&&c[a]===b){return a}}return undefined}});Ext.define("Ext.AbstractManager",{requires:["Ext.util.HashMap"],typeName:"type",constructor:function(a){Ext.apply(this,a||{});this.all=new Ext.util.HashMap();this.types={}},get:function(a){return this.all.get(a)},register:function(a){this.all.add(a)},unregister:function(a){this.all.remove(a)},registerType:function(b,a){this.types[b]=a;a[this.typeName]=b},isRegistered:function(a){return this.types[a]!==undefined},create:function(a,d){var b=a[this.typeName]||a.type||d,c=this.types[b];return new c(a)},onAvailable:function(g,c,b){var a=this.all,d,e;if(a.containsKey(g)){d=a.get(g);c.call(b||d,d)}else{e=function(j,h,i){if(h==g){c.call(b||i,i);a.un("add",e)}};a.on("add",e)}},each:function(b,a){this.all.each(b,a||this)},getCount:function(){return this.all.getCount()}});Ext.define("Ext.ComponentManager",{extend:"Ext.AbstractManager",alternateClassName:"Ext.ComponentMgr",singleton:true,typeName:"xtype",create:function(a,b){if(typeof a=="string"){return Ext.widget(a)}if(a.isComponent){return a}return Ext.widget(a.xtype||b,a)},registerType:function(b,a){this.types[b]=a;a[this.typeName]=b;a.prototype[this.typeName]=b}});Ext.define("Ext.ComponentQuery",{singleton:true,requires:["Ext.ComponentManager"]},function(){var h=this,k=["var r = [],","i = 0,","it = items,","l = it.length,","c;","for (; i < l; i++) {","c = it[i];","if (c.{0}) {","r.push(c);","}","}","return r;"].join(""),e=function(p,o){return o.method.apply(this,[p].concat(o.args))},a=function(q,u){var o=[],r=0,t=q.length,s,p=u!==">";for(;r<t;r++){s=q[r];if(s.getRefItems){o=o.concat(s.getRefItems(p))}}return o},g=function(p){var o=[],q=0,s=p.length,r;for(;q<s;q++){r=p[q];while(!!(r=(r.ownerCt||r.floatParent))){o.push(r)}}return o},m=function(p,u,t){if(u==="*"){return p.slice()}else{var o=[],q=0,s=p.length,r;for(;q<s;q++){r=p[q];if(r.isXType(u,t)){o.push(r)}}return o}},j=function(p,s){var u=Ext.Array,o=[],q=0,t=p.length,r;for(;q<t;q++){r=p[q];if(r.hasCls(s)){o.push(r)}}return o},n=function(q,v,p,u){var o=[],r=0,t=q.length,s;for(;r<t;r++){s=q[r];if(!u?!!s[v]:(String(s[v])===u)){o.push(s)}}return o},d=function(p,t){var o=[],q=0,s=p.length,r;for(;q<s;q++){r=p[q];if(r.getItemId()===t){o.push(r)}}return o},l=function(o,p,q){return h.pseudos[p](o,q)},i=/^(\s?([>\^])\s?|\s|$)/,c=/^(#)?([\w\-]+|\*)(?:\((true|false)\))?/,b=[{re:/^\.([\w\-]+)(?:\((true|false)\))?/,method:m},{re:/^(?:[\[](?:@)?([\w\-]+)\s?(?:(=|.=)\s?['"]?(.*?)["']?)?[\]])/,method:n},{re:/^#([\w\-]+)/,method:d},{re:/^\:([\w\-]+)(?:\(((?:\{[^\}]+\})|(?:(?!\{)[^\s>\/]*?(?!\})))\))?/,method:l},{re:/^(?:\{([^\}]+)\})/,method:k}];h.Query=Ext.extend(Object,{constructor:function(o){o=o||{};Ext.apply(this,o)},execute:function(p){var r=this.operations,s=0,t=r.length,q,o;if(!p){o=Ext.ComponentManager.all.getArray()}else{if(Ext.isArray(p)){o=p}else{if(p.isMixedCollection){o=p.items}}}for(;s<t;s++){q=r[s];if(q.mode==="^"){o=g(o||[p])}else{if(q.mode){o=a(o||[p],q.mode)}else{o=e(o||a([p]),q)}}if(s===t-1){return o}}return[]},is:function(q){var p=this.operations,t=Ext.isArray(q)?q:[q],o=t.length,u=p[p.length-1],s,r;t=e(t,u);if(t.length===o){if(p.length>1){for(r=0,s=t.length;r<s;r++){if(Ext.Array.indexOf(this.execute(),t[r])===-1){return false}}}return true}return false}});Ext.apply(this,{cache:{},pseudos:{not:function(u,o){var v=Ext.ComponentQuery,s=0,t=u.length,r=[],q=-1,p;for(;s<t;++s){p=u[s];if(!v.is(p,o)){r[++q]=p}}return r},first:function(p){var o=[];if(p.length>0){o.push(p[0])}return o},last:function(q){var o=q.length,p=[];if(o>0){p.push(q[o-1])}return p}},query:function(p,w){var x=p.split(","),o=x.length,q=0,r=[],y=[],v={},t,s,u;for(;q<o;q++){p=Ext.String.trim(x[q]);t=this.cache[p]||(this.cache[p]=this.parse(p));r=r.concat(t.execute(w))}if(o>1){s=r.length;for(q=0;q<s;q++){u=r[q];if(!v[u.id]){y.push(u);v[u.id]=true}}r=y}return r},is:function(p,o){if(!o){return true}var r=o.split(","),s=r.length,q=0,t;for(;q<s;q++){o=Ext.String.trim(r[q]);t=this.cache[o]||(this.cache[o]=this.parse(o));if(t.is(p)){return true}}return false},parse:function(r){var p=[],q=b.length,v,s,w,x,y,t,u,o;while(r&&v!==r){v=r;s=r.match(c);if(s){w=s[1];if(w==="#"){p.push({method:d,args:[Ext.String.trim(s[2])]})}else{if(w==="."){p.push({method:j,args:[Ext.String.trim(s[2])]})}else{p.push({method:m,args:[Ext.String.trim(s[2]),Boolean(s[3])]})}}r=r.replace(s[0],"")}while(!(x=r.match(i))){for(t=0;r&&t<q;t++){u=b[t];y=r.match(u.re);o=u.method;if(y){p.push({method:Ext.isString(u.method)?Ext.functionFactory("items",Ext.String.format.apply(Ext.String,[o].concat(y.slice(1)))):u.method,args:y.slice(1)});r=r.replace(y[0],"");break}if(t===(q-1)){Ext.Error.raise('Invalid ComponentQuery selector: "'+arguments[0]+'"')}}}if(x[1]){p.push({mode:x[2]||x[1]});r=r.replace(x[0],"")}}return new h.Query({operations:p})}})});Ext.define("Ext.util.ProtoElement",(function(){var b=Ext.String.splitWords,a=Ext.Array.toMap;return{isProtoEl:true,clsProp:"cls",styleProp:"style",removedProp:"removed",styleIsText:false,constructor:function(c){var d=this;Ext.apply(d,c);d.classList=b(d.cls);d.classMap=a(d.classList);delete d.cls;if(Ext.isFunction(d.style)){d.styleFn=d.style;delete d.style}else{if(typeof d.style=="string"){d.style=Ext.Element.parseStyles(d.style)}else{if(d.style){d.style=Ext.apply({},d.style)}}}},flush:function(){this.flushClassList=[];this.removedClasses={};delete this.style},addCls:function(n){var l=this,m=b(n),e=m.length,j=l.classList,d=l.classMap,g=l.flushClassList,h=0,k;for(;h<e;++h){k=m[h];if(!d[k]){d[k]=true;j.push(k);if(g){g.push(k);delete l.removedClasses[k]}}}return l},hasCls:function(c){return c in this.classMap},removeCls:function(o){var n=this,l=n.classList,g=(n.classList=[]),j=a(b(o)),e=l.length,d=n.classMap,k=n.removedClasses,h,m;for(h=0;h<e;++h){m=l[h];if(j[m]){if(k){if(d[m]){k[m]=true;Ext.Array.remove(n.flushClassList,m)}}delete d[m]}else{g.push(m)}}return n},setStyle:function(g,e){var d=this,c=d.style||(d.style={});if(typeof g=="string"){if(arguments.length===1){d.setStyle(Ext.Element.parseStyles(g))}else{c[g]=e}}else{Ext.apply(c,g)}return d},writeTo:function(h){var e=this,g=e.flushClassList||e.classList,d=e.removedClasses,c;if(e.styleFn){c=Ext.apply({},e.styleFn());Ext.apply(c,e.style)}else{c=e.style}h[e.clsProp]=g.join(" ");if(c){h[e.styleProp]=e.styleIsText?Ext.DomHelper.generateStyles(c):c}if(d){d=Ext.Object.getKeys(d);if(d.length){h[e.removedProp]=d.join(" ")}}return h}}}()));Ext.EventManager=new function(){var a=this,d=document,c=window,b=function(){var k=d.body||d.getElementsByTagName("body")[0],i=Ext.baseCSSPrefix,o=[i+"body"],g=[],m=Ext.supports.CSS3LinearGradient,l=Ext.supports.CSS3BorderRadius,h=[],j,e;if(!k){return false}j=k.parentNode;function n(p){o.push(i+p)}if(Ext.isIE){n("ie");if(Ext.isIE6){n("ie6")}else{n("ie7p");if(Ext.isIE7){n("ie7")}else{n("ie8p");if(Ext.isIE8){n("ie8")}else{n("ie9p");if(Ext.isIE9){n("ie9")}}}}if(Ext.isIE6||Ext.isIE7){n("ie7m")}if(Ext.isIE6||Ext.isIE7||Ext.isIE8){n("ie8m")}if(Ext.isIE7||Ext.isIE8){n("ie78")}}if(Ext.isGecko){n("gecko");if(Ext.isGecko3){n("gecko3")}if(Ext.isGecko4){n("gecko4")}if(Ext.isGecko5){n("gecko5")}}if(Ext.isOpera){n("opera")}if(Ext.isWebKit){n("webkit")}if(Ext.isSafari){n("safari");if(Ext.isSafari2){n("safari2")}if(Ext.isSafari3){n("safari3")}if(Ext.isSafari4){n("safari4")}if(Ext.isSafari5){n("safari5")}if(Ext.isSafari5_0){n("safari5_0")}}if(Ext.isChrome){n("chrome")}if(Ext.isMac){n("mac")}if(Ext.isLinux){n("linux")}if(!l){n("nbr")}if(!m){n("nlg")}if(Ext.scopeResetCSS){e=Ext.resetElementSpec={cls:i+"reset"};if(!m){h.push(i+"nlg")}if(!l){h.push(i+"nbr")}if(h.length){e.cn={cls:h.join(" ")}}Ext.resetElement=Ext.getBody().createChild(e);if(h.length){Ext.resetElement=Ext.get(Ext.resetElement.dom.firstChild)}}else{Ext.resetElement=Ext.getBody();n("reset")}if(j){if(Ext.isStrict&&(Ext.isIE6||Ext.isIE7)){Ext.isBorderBox=false}else{Ext.isBorderBox=true}if(Ext.isBorderBox){g.push(i+"border-box")}if(Ext.isStrict){g.push(i+"strict")}else{g.push(i+"quirks")}Ext.fly(j,"_internal").addCls(g)}Ext.fly(k,"_internal").addCls(o);return true};Ext.apply(a,{hasBoundOnReady:false,hasFiredReady:false,deferReadyEvent:1,onReadyChain:[],readyEvent:(function(){var e=new Ext.util.Event();e.fire=function(){Ext._beforeReadyTime=Ext._beforeReadyTime||new Date().getTime();e.self.prototype.fire.apply(e,arguments);Ext._afterReadytime=new Date().getTime()};return e}()),idleEvent:new Ext.util.Event(),isReadyPaused:function(){return(/[?&]ext-pauseReadyFire\b/i.test(location.search)&&!Ext._continueFireReady)},bindReadyEvent:function(){if(a.hasBoundOnReady){return}if(d.readyState=="complete"){a.onReadyEvent({type:d.readyState||"body"})}else{document.addEventListener("DOMContentLoaded",a.onReadyEvent,false);window.addEventListener("load",a.onReadyEvent,false);a.hasBoundOnReady=true}},onReadyEvent:function(g){if(g&&g.type){a.onReadyChain.push(g.type)}if(a.hasBoundOnReady){document.removeEventListener("DOMContentLoaded",a.onReadyEvent,false);window.removeEventListener("load",a.onReadyEvent,false)}if(!Ext.isReady){a.fireDocReady()}},fireDocReady:function(){if(!Ext.isReady){Ext._readyTime=new Date().getTime();Ext.isReady=true;Ext.supports.init();a.onWindowUnload();a.readyEvent.onReadyChain=a.onReadyChain;if(Ext.isNumber(a.deferReadyEvent)){Ext.Function.defer(a.fireReadyEvent,a.deferReadyEvent);a.hasDocReadyTimer=true}else{a.fireReadyEvent()}}},fireReadyEvent:function(){var e=a.readyEvent;a.hasDocReadyTimer=false;a.isFiring=true;while(e.listeners.length&&!a.isReadyPaused()){e.fire()}a.isFiring=false;a.hasFiredReady=true},onDocumentReady:function(h,g,e){e=e||{};e.single=true;a.readyEvent.addListener(h,g,e);if(!(a.isFiring||a.hasDocReadyTimer)){if(Ext.isReady){a.fireReadyEvent()}else{a.bindReadyEvent()}}},stoppedMouseDownEvent:new Ext.util.Event(),propRe:/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate|freezeEvent)$/,getId:function(e){var g;e=Ext.getDom(e);if(e===d||e===c){g=e===d?Ext.documentId:Ext.windowId}else{g=Ext.id(e)}if(!Ext.cache[g]){Ext.addCacheEntry(g,null,e)}return g},prepareListenerConfig:function(i,g,k){var l=a.propRe,h,j,e;for(h in g){if(g.hasOwnProperty(h)){if(!l.test(h)){j=g[h];if(typeof j=="function"){e=[i,h,j,g.scope,g]}else{e=[i,h,j.fn,j.scope,j]}if(k){a.removeListener.apply(a,e)}else{a.addListener.apply(a,e)}}}}},mouseEnterLeaveRe:/mouseenter|mouseleave/,normalizeEvent:function(e,g){if(a.mouseEnterLeaveRe.test(e)&&!Ext.supports.MouseEnterLeave){if(g){g=Ext.Function.createInterceptor(g,a.contains)}e=e=="mouseenter"?"mouseover":"mouseout"}else{if(e=="mousewheel"&&!Ext.supports.MouseWheel&&!Ext.isOpera){e="DOMMouseScroll"}}return{eventName:e,fn:g}},contains:function(g){var e=g.browserEvent.currentTarget,h=a.getRelatedTarget(g);if(e&&e.firstChild){while(h){if(h===e){return false}h=h.parentNode;if(h&&(h.nodeType!=1)){h=null}}}return true},addListener:function(h,e,k,j,g){if(typeof e!=="string"){a.prepareListenerConfig(h,e);return}var l=h.dom||Ext.getDom(h),m,i;g=g||{};m=a.normalizeEvent(e,k);i=a.createListenerWrap(l,e,m.fn,j,g);if(l.attachEvent){l.attachEvent("on"+m.eventName,i)}else{l.addEventListener(m.eventName,i,g.capture||false)}if(l==d&&e=="mousedown"){a.stoppedMouseDownEvent.addListener(i)}a.getEventListenerCache(h.dom?h:l,e).push({fn:k,wrap:i,scope:j})},removeListener:function(p,q,r,t){if(typeof q!=="string"){a.prepareListenerConfig(p,q,true);return}var n=Ext.getDom(p),h=p.dom?p:Ext.get(n),e=a.getEventListenerCache(h,q),s=a.normalizeEvent(q).eventName,o=e.length,m,k,g,l;while(o--){k=e[o];if(k&&(!r||k.fn==r)&&(!t||k.scope===t)){g=k.wrap;if(g.task){clearTimeout(g.task);delete g.task}m=g.tasks&&g.tasks.length;if(m){while(m--){clearTimeout(g.tasks[m])}delete g.tasks}if(n.detachEvent){n.detachEvent("on"+s,g)}else{n.removeEventListener(s,g,false)}if(g&&n==d&&q=="mousedown"){a.stoppedMouseDownEvent.removeListener(g)}Ext.Array.erase(e,o,1)}}},removeAll:function(i){var j=i.dom?i:Ext.get(i),g,h,e;if(!j){return}g=(j.$cache||j.getCache());h=g.events;for(e in h){if(h.hasOwnProperty(e)){a.removeListener(j,e)}}g.events={}},purgeElement:function(j,g){var k=Ext.getDom(j),h=0,e;if(g){a.removeListener(j,g)}else{a.removeAll(j)}if(k&&k.childNodes){for(e=j.childNodes.length;h<e;h++){a.purgeElement(j.childNodes[h],g)}}},createListenerWrap:function(i,h,l,m,n){n=n||{};var k,j,e=/\\/g,g=function(p,o){if(!j){k=["if(!"+Ext.name+") {return;}"];if(n.buffer||n.delay||n.freezeEvent){k.push("e = new X.EventObjectImpl(e, "+(n.freezeEvent?"true":"false")+");")}else{k.push("e = X.EventObject.setEvent(e);")}if(n.delegate){k.push('var result, t = e.getTarget("'+(n.delegate+"").replace(e,"\\\\")+'", this);');k.push("if(!t) {return;}")}else{k.push("var t = e.target, result;")}if(n.target){k.push("if(e.target !== options.target) {return;}")}if(n.stopEvent){k.push("e.stopEvent();")}else{if(n.preventDefault){k.push("e.preventDefault();")}if(n.stopPropagation){k.push("e.stopPropagation();")}}if(n.normalized===false){k.push("e = e.browserEvent;")}if(n.buffer){k.push("(wrap.task && clearTimeout(wrap.task));");k.push("wrap.task = setTimeout(function() {")}if(n.delay){k.push("wrap.tasks = wrap.tasks || [];");k.push("wrap.tasks.push(setTimeout(function() {")}k.push("result = fn.call(scope || dom, e, t, options);");if(n.single){k.push("evtMgr.removeListener(dom, ename, fn, scope);")}if(h!=="mousemove"){k.push("if (evtMgr.idleEvent.listeners.length) {");k.push("evtMgr.idleEvent.fire();");k.push("}")}if(n.delay){k.push("}, "+n.delay+"));")}if(n.buffer){k.push("}, "+n.buffer+");")}k.push("return result;");j=Ext.cacheableFunctionFactory("e","options","fn","scope","ename","dom","wrap","args","X","evtMgr",k.join("\n"))}return j.call(i,p,n,l,m,h,i,g,o,Ext,a)};return g},getEventListenerCache:function(i,e){var h,g;if(!i){return[]}if(i.$cache){h=i.$cache}else{h=Ext.cache[a.getId(i)]}g=h.events||(h.events={});return g[e]||(g[e]=[])},mouseLeaveRe:/(mouseout|mouseleave)/,mouseEnterRe:/(mouseover|mouseenter)/,stopEvent:function(e){a.stopPropagation(e);a.preventDefault(e)},stopPropagation:function(e){e=e.browserEvent||e;if(e.stopPropagation){e.stopPropagation()}else{e.cancelBubble=true}},preventDefault:function(g){g=g.browserEvent||g;if(g.preventDefault){g.preventDefault()}else{g.returnValue=false;try{if(g.ctrlKey||g.keyCode>111&&g.keyCode<124){g.keyCode=-1}}catch(h){}}},getRelatedTarget:function(e){e=e.browserEvent||e;var g=e.relatedTarget;if(!g){if(a.mouseLeaveRe.test(e.type)){g=e.toElement}else{if(a.mouseEnterRe.test(e.type)){g=e.fromElement}}}return a.resolveTextNode(g)},getPageX:function(e){return a.getPageXY(e)[0]},getPageY:function(e){return a.getPageXY(e)[1]},getPageXY:function(h){h=h.browserEvent||h;var g=h.pageX,j=h.pageY,i=d.documentElement,e=d.body;if(!g&&g!==0){g=h.clientX+(i&&i.scrollLeft||e&&e.scrollLeft||0)-(i&&i.clientLeft||e&&e.clientLeft||0);j=h.clientY+(i&&i.scrollTop||e&&e.scrollTop||0)-(i&&i.clientTop||e&&e.clientTop||0)}return[g,j]},getTarget:function(e){e=e.browserEvent||e;return a.resolveTextNode(e.target||e.srcElement)},resolveTextNode:Ext.isGecko?function(g){if(!g){return}var e=HTMLElement.prototype.toString.call(g);if(e=="[xpconnect wrapped native prototype]"||e=="[object XULElement]"){return}return g.nodeType==3?g.parentNode:g}:function(e){return e&&e.nodeType==3?e.parentNode:e},curWidth:0,curHeight:0,onWindowResize:function(i,h,g){var e=a.resizeEvent;if(!e){a.resizeEvent=e=new Ext.util.Event();a.on(c,"resize",a.fireResize,null,{buffer:100})}e.addListener(i,h,g)},fireResize:function(){var e=Ext.Element.getViewWidth(),g=Ext.Element.getViewHeight();if(a.curHeight!=g||a.curWidth!=e){a.curHeight=g;a.curWidth=e;a.resizeEvent.fire(e,g)}},removeResizeListener:function(h,g){var e=a.resizeEvent;if(e){e.removeListener(h,g)}},onWindowUnload:function(i,h,g){var e=a.unloadEvent;if(!e){a.unloadEvent=e=new Ext.util.Event();a.addListener(c,"unload",a.fireUnload)}if(i){e.addListener(i,h,g)}},fireUnload:function(){try{d=c=undefined;var m,h,k,j,g;a.unloadEvent.fire();if(Ext.isGecko3){m=Ext.ComponentQuery.query("gridview");h=0;k=m.length;for(;h<k;h++){m[h].scrollToTop()}}g=Ext.cache;for(j in g){if(g.hasOwnProperty(j)){a.removeAll(j)}}}catch(l){}},removeUnloadListener:function(h,g){var e=a.unloadEvent;if(e){e.removeListener(h,g)}},useKeyDown:Ext.isWebKit?parseInt(navigator.userAgent.match(/AppleWebKit\/(\d+)/)[1],10)>=525:!((Ext.isGecko&&!Ext.isWindows)||Ext.isOpera),getKeyEvent:function(){return a.useKeyDown?"keydown":"keypress"}});if(!("addEventListener" in document)&&document.attachEvent){Ext.apply(a,{pollScroll:function(){var g=true;try{document.documentElement.doScroll("left")}catch(h){g=false}if(g&&document.body){a.onReadyEvent({type:"doScroll"})}else{a.scrollTimeout=setTimeout(a.pollScroll,20)}return g},scrollTimeout:null,readyStatesRe:/complete/i,checkReadyState:function(){var e=document.readyState;if(a.readyStatesRe.test(e)){a.onReadyEvent({type:e})}},bindReadyEvent:function(){var g=true;if(a.hasBoundOnReady){return}try{g=window.frameElement===undefined}catch(h){g=false}if(!g||!d.documentElement.doScroll){a.pollScroll=Ext.emptyFn}if(a.pollScroll()===true){return}if(d.readyState=="complete"){a.onReadyEvent({type:"already "+(d.readyState||"body")})}else{d.attachEvent("onreadystatechange",a.checkReadyState);window.attachEvent("onload",a.onReadyEvent);a.hasBoundOnReady=true}},onReadyEvent:function(g){if(g&&g.type){a.onReadyChain.push(g.type)}if(a.hasBoundOnReady){document.detachEvent("onreadystatechange",a.checkReadyState);window.detachEvent("onload",a.onReadyEvent)}if(Ext.isNumber(a.scrollTimeout)){clearTimeout(a.scrollTimeout);delete a.scrollTimeout}if(!Ext.isReady){a.fireDocReady()}},onReadyChain:[]})}Ext.onReady=function(h,g,e){Ext.Loader.onReady(h,g,true,e)};Ext.onDocumentReady=a.onDocumentReady;a.on=a.addListener;a.un=a.removeListener;Ext.onReady(b)};Ext.define("Ext.EventObjectImpl",{uses:["Ext.util.Point"],BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,RETURN:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,WHEEL_SCALE:(function(){var a;if(Ext.isGecko){a=3}else{if(Ext.isMac){if(Ext.isSafari&&Ext.webKitVersion>=532){a=120}else{a=12}a*=3}else{a=120}}return a}()),clickRe:/(dbl)?click/,safariKeys:{3:13,63234:37,63235:39,63232:38,63233:40,63276:33,63277:34,63272:46,63273:36,63275:35},btnMap:Ext.isIE?{1:0,4:1,2:2}:{0:0,1:1,2:2},constructor:function(a,b){if(a){this.setEvent(a.browserEvent||a,b)}},setEvent:function(d,e){var c=this,b,a;if(d==c||(d&&d.browserEvent)){return d}c.browserEvent=d;if(d){b=d.button?c.btnMap[d.button]:(d.which?d.which-1:-1);if(c.clickRe.test(d.type)&&b==-1){b=0}a={type:d.type,button:b,shiftKey:d.shiftKey,ctrlKey:d.ctrlKey||d.metaKey||false,altKey:d.altKey,keyCode:d.keyCode,charCode:d.charCode,target:Ext.EventManager.getTarget(d),relatedTarget:Ext.EventManager.getRelatedTarget(d),currentTarget:d.currentTarget,xy:(e?c.getXY():null)}}else{a={button:-1,shiftKey:false,ctrlKey:false,altKey:false,keyCode:0,charCode:0,target:null,xy:[0,0]}}Ext.apply(c,a);return c},stopEvent:function(){this.stopPropagation();this.preventDefault()},preventDefault:function(){if(this.browserEvent){Ext.EventManager.preventDefault(this.browserEvent)}},stopPropagation:function(){var a=this.browserEvent;if(a){if(a.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(this)}Ext.EventManager.stopPropagation(a)}},getCharCode:function(){return this.charCode||this.keyCode},getKey:function(){return this.normalizeKey(this.keyCode||this.charCode)},normalizeKey:function(a){return Ext.isWebKit?(this.safariKeys[a]||a):a},getPageX:function(){return this.getX()},getPageY:function(){return this.getY()},getX:function(){return this.getXY()[0]},getY:function(){return this.getXY()[1]},getXY:function(){if(!this.xy){this.xy=Ext.EventManager.getPageXY(this.browserEvent)}return this.xy},getTarget:function(b,c,a){if(b){return Ext.fly(this.target).findParent(b,c,a)}return a?Ext.get(this.target):this.target},getRelatedTarget:function(b,c,a){if(b){return Ext.fly(this.relatedTarget).findParent(b,c,a)}return a?Ext.get(this.relatedTarget):this.relatedTarget},correctWheelDelta:function(c){var b=this.WHEEL_SCALE,a=Math.round(c/b);if(!a&&c){a=(c<0)?-1:1}return a},getWheelDeltas:function(){var d=this,c=d.browserEvent,b=0,a=0;if(Ext.isDefined(c.wheelDeltaX)){b=c.wheelDeltaX;a=c.wheelDeltaY}else{if(c.wheelDelta){a=c.wheelDelta}else{if(c.detail){a=-c.detail;if(a>100){a=3}else{if(a<-100){a=-3}}if(Ext.isDefined(c.axis)&&c.axis===c.HORIZONTAL_AXIS){b=a;a=0}}}}return{x:d.correctWheelDelta(b),y:d.correctWheelDelta(a)}},getWheelDelta:function(){var a=this.getWheelDeltas();return a.y},within:function(d,e,b){if(d){var c=e?this.getRelatedTarget():this.getTarget(),a;if(c){a=Ext.fly(d).contains(c);if(!a&&b){a=c==Ext.getDom(d)}return a}}return false},isNavKeyPress:function(){var b=this,a=this.normalizeKey(b.keyCode);return(a>=33&&a<=40)||a==b.RETURN||a==b.TAB||a==b.ESC},isSpecialKey:function(){var a=this.normalizeKey(this.keyCode);return(this.type=="keypress"&&this.ctrlKey)||this.isNavKeyPress()||(a==this.BACKSPACE)||(a>=16&&a<=20)||(a>=44&&a<=46)},getPoint:function(){var a=this.getXY();return new Ext.util.Point(a[0],a[1])},hasModifier:function(){return this.ctrlKey||this.altKey||this.shiftKey||this.metaKey},injectEvent:(function(){var d,e={},c;if(!Ext.isIE&&document.createEvent){d={createHtmlEvent:function(k,i,h,g){var j=k.createEvent("HTMLEvents");j.initEvent(i,h,g);return j},createMouseEvent:function(u,s,m,l,o,k,i,j,g,r,q,n,p){var h=u.createEvent("MouseEvents"),t=u.defaultView||window;if(h.initMouseEvent){h.initMouseEvent(s,m,l,t,o,k,i,k,i,j,g,r,q,n,p)}else{h=u.createEvent("UIEvents");h.initEvent(s,m,l);h.view=t;h.detail=o;h.screenX=k;h.screenY=i;h.clientX=k;h.clientY=i;h.ctrlKey=j;h.altKey=g;h.metaKey=q;h.shiftKey=r;h.button=n;h.relatedTarget=p}return h},createUIEvent:function(m,k,i,h,j){var l=m.createEvent("UIEvents"),g=m.defaultView||window;l.initUIEvent(k,i,h,g,j);return l},fireEvent:function(i,g,h){i.dispatchEvent(h)},fixTarget:function(g){if(g==window&&!g.dispatchEvent){return document}return g}}}else{if(document.createEventObject){c={0:1,1:4,2:2};d={createHtmlEvent:function(k,i,h,g){var j=k.createEventObject();j.bubbles=h;j.cancelable=g;return j},createMouseEvent:function(t,s,m,l,o,k,i,j,g,r,q,n,p){var h=t.createEventObject();h.bubbles=m;h.cancelable=l;h.detail=o;h.screenX=k;h.screenY=i;h.clientX=k;h.clientY=i;h.ctrlKey=j;h.altKey=g;h.shiftKey=r;h.metaKey=q;h.button=c[n]||n;h.relatedTarget=p;return h},createUIEvent:function(l,j,h,g,i){var k=l.createEventObject();k.bubbles=h;k.cancelable=g;return k},fireEvent:function(i,g,h){i.fireEvent("on"+g,h)},fixTarget:function(g){if(g==document){return document.documentElement}return g}}}}Ext.Object.each({load:[false,false],unload:[false,false],select:[true,false],change:[true,false],submit:[true,true],reset:[true,false],resize:[true,false],scroll:[true,false]},function(i,j){var h=j[0],g=j[1];e[i]=function(m,k){var l=d.createHtmlEvent(i,h,g);d.fireEvent(m,i,l)}});function b(i,h){var g=(i!="mousemove");return function(m,j){var l=j.getXY(),k=d.createMouseEvent(m.ownerDocument,i,true,g,h,l[0],l[1],j.ctrlKey,j.altKey,j.shiftKey,j.metaKey,j.button,j.relatedTarget);d.fireEvent(m,i,k)}}Ext.each(["click","dblclick","mousedown","mouseup","mouseover","mousemove","mouseout"],function(g){e[g]=b(g,1)});Ext.Object.each({focusin:[true,false],focusout:[true,false],activate:[true,true],focus:[false,false],blur:[false,false]},function(i,j){var h=j[0],g=j[1];e[i]=function(m,k){var l=d.createUIEvent(m.ownerDocument,i,h,g,1);d.fireEvent(m,i,l)}});if(!d){e={};d={fixTarget:function(g){return g}}}function a(h,g){}return function(j){var i=this,h=e[i.type]||a,g=j?(j.dom||j):i.getTarget();g=d.fixTarget(g);h(g,i)}}())},function(){Ext.EventObject=new Ext.EventObjectImpl()});Ext.define("Ext.dom.AbstractQuery",{select:function(k,b){var h=[],d,g,e,c,a;b=b||document;if(typeof b=="string"){b=document.getElementById(b)}k=k.split(",");for(g=0,c=k.length;g<c;g++){if(typeof k[g]=="string"){if(typeof k[g][0]=="@"){d=b.getAttributeNode(k[g].substring(1));h.push(d)}else{d=b.querySelectorAll(k[g]);for(e=0,a=d.length;e<a;e++){h.push(d[e])}}}}return h},selectNode:function(b,a){return this.select(b,a)[0]},is:function(a,b){if(typeof a=="string"){a=document.getElementById(a)}return this.select(b).indexOf(a)!==-1}});Ext.define("Ext.dom.AbstractHelper",{emptyTags:/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i,confRe:/(?:tag|children|cn|html|tpl|tplData)$/i,endRe:/end/i,attributeTransform:{cls:"class",htmlFor:"for"},closeTags:{},decamelizeName:(function(){var c=/([a-z])([A-Z])/g,b={};function a(d,g,e){return g+"-"+e.toLowerCase()}return function(d){return b[d]||(b[d]=d.replace(c,a))}}()),generateMarkup:function(d,c){var h=this,b,j,a,e,g;if(typeof d=="string"){c.push(d)}else{if(Ext.isArray(d)){for(e=0;e<d.length;e++){if(d[e]){h.generateMarkup(d[e],c)}}}else{a=d.tag||"div";c.push("<",a);for(b in d){if(d.hasOwnProperty(b)){j=d[b];if(!h.confRe.test(b)){if(typeof j=="object"){c.push(" ",b,'="');h.generateStyles(j,c).push('"')}else{c.push(" ",h.attributeTransform[b]||b,'="',j,'"')}}}}if(h.emptyTags.test(a)){c.push("/>")}else{c.push(">");if((j=d.tpl)){j.applyOut(d.tplData,c)}if((j=d.html)){c.push(j)}if((j=d.cn||d.children)){h.generateMarkup(j,c)}g=h.closeTags;c.push(g[a]||(g[a]="</"+a+">"))}}}return c},generateStyles:function(e,c){var b=c||[],d;for(d in e){if(e.hasOwnProperty(d)){b.push(this.decamelizeName(d),":",e[d],";")}}return c||b.join("")},markup:function(a){if(typeof a=="string"){return a}var b=this.generateMarkup(a,[]);return b.join("")},applyStyles:function(d,e){if(e){var b=0,a,c;d=Ext.fly(d);if(typeof e=="function"){e=e.call()}if(typeof e=="string"){e=Ext.util.Format.trim(e).split(/\s*(?::|;)\s*/);for(a=e.length;b<a;){d.setStyle(e[b++],e[b++])}}else{if(Ext.isObject(e)){d.setStyle(e)}}}},insertHtml:function(g,a,h){var e={},c,j,i,k,d,b;g=g.toLowerCase();e.beforebegin=["BeforeBegin","previousSibling"];e.afterend=["AfterEnd","nextSibling"];i=a.ownerDocument.createRange();j="setStart"+(this.endRe.test(g)?"After":"Before");if(e[g]){i[j](a);k=i.createContextualFragment(h);a.parentNode.insertBefore(k,g=="beforebegin"?a:a.nextSibling);return a[(g=="beforebegin"?"previous":"next")+"Sibling"]}else{d=(g=="afterbegin"?"first":"last")+"Child";if(a.firstChild){i[j](a[d]);k=i.createContextualFragment(h);if(g=="afterbegin"){a.insertBefore(k,a.firstChild)}else{a.appendChild(k)}}else{a.innerHTML=h}return a[d]}throw'Illegal insertion point -> "'+g+'"'},insertBefore:function(a,c,b){return this.doInsert(a,c,b,"beforebegin")},insertAfter:function(a,c,b){return this.doInsert(a,c,b,"afterend","nextSibling")},insertFirst:function(a,c,b){return this.doInsert(a,c,b,"afterbegin","firstChild")},append:function(a,c,b){return this.doInsert(a,c,b,"beforeend","",true)},overwrite:function(a,c,b){a=Ext.getDom(a);a.innerHTML=this.markup(c);return b?Ext.get(a.firstChild):a.firstChild},doInsert:function(d,g,e,h,c,a){var b=this.insertHtml(h,Ext.getDom(d),this.markup(g));return e?Ext.get(b,true):b}});(function(){var a=window.document,b=/^\s+|\s+$/g,c=/\s/;if(!Ext.cache){Ext.cache={}}Ext.define("Ext.dom.AbstractElement",{inheritableStatics:{get:function(e){var g=this,h=Ext.dom.Element,d,j,i,k;if(!e){return null}if(typeof e=="string"){if(e==Ext.windowId){return h.get(window)}else{if(e==Ext.documentId){return h.get(a)}}d=Ext.cache[e];if(d&&d.skipGarbageCollection){j=d.el;return j}if(!(i=a.getElementById(e))){return null}if(d&&d.el){j=Ext.updateCacheEntry(d,i).el}else{j=new h(i,!!d)}return j}else{if(e.tagName){if(!(k=e.id)){k=Ext.id(e)}d=Ext.cache[k];if(d&&d.el){j=Ext.updateCacheEntry(d,e).el}else{j=new h(e,!!d)}return j}else{if(e instanceof g){if(e!=g.docEl&&e!=g.winEl){k=e.id;d=Ext.cache[k];if(d){Ext.updateCacheEntry(d,a.getElementById(k)||e.dom)}}return e}else{if(e.isComposite){return e}else{if(Ext.isArray(e)){return g.select(e)}else{if(e===a){if(!g.docEl){g.docEl=Ext.Object.chain(h.prototype);g.docEl.dom=a;g.docEl.id=Ext.id(a);g.addToCache(g.docEl)}return g.docEl}else{if(e===window){if(!g.winEl){g.winEl=Ext.Object.chain(h.prototype);g.winEl.dom=window;g.winEl.id=Ext.id(window);g.addToCache(g.winEl)}return g.winEl}}}}}}}return null},addToCache:function(d,e){if(d){Ext.addCacheEntry(e,d)}return d},addMethods:function(){this.override.apply(this,arguments)},mergeClsList:function(){var n,m={},k,d,g,l,e,o=[],h=false;for(k=0,d=arguments.length;k<d;k++){n=arguments[k];if(Ext.isString(n)){n=n.replace(b,"").split(c)}if(n){for(g=0,l=n.length;g<l;g++){e=n[g];if(!m[e]){if(k){h=true}m[e]=true}}}}for(e in m){o.push(e)}o.changed=h;return o},removeCls:function(g,l){var e={},h,k,j,d=[],m=false;if(g){if(Ext.isString(g)){g=g.replace(b,"").split(c)}for(h=0,k=g.length;h<k;h++){e[g[h]]=true}}if(l){if(Ext.isString(l)){l=l.split(c)}for(h=0,k=l.length;h<k;h++){j=l[h];if(e[j]){m=true;delete e[j]}}}for(j in e){d.push(j)}d.changed=m;return d},VISIBILITY:1,DISPLAY:2,OFFSETS:3,ASCLASS:4},constructor:function(d,e){var g=this,h=typeof d=="string"?a.getElementById(d):d,i;if(!h){return null}i=h.id;if(!e&&i&&Ext.cache[i]){return Ext.cache[i].el}g.dom=h;g.id=i||Ext.id(h);g.self.addToCache(g)},set:function(i,e){var g=this.dom,d,h;for(d in i){if(i.hasOwnProperty(d)){h=i[d];if(d=="style"){this.applyStyles(h)}else{if(d=="cls"){g.className=h}else{if(e!==false){if(h===undefined){g.removeAttribute(d)}else{g.setAttribute(d,h)}}else{g[d]=h}}}}}return this},defaultUnit:"px",is:function(d){return Ext.DomQuery.is(this.dom,d)},getValue:function(d){var e=this.dom.value;return d?parseInt(e,10):e},remove:function(){var d=this,e=d.dom;if(e){Ext.removeNode(e);delete d.dom}},contains:function(d){if(!d){return false}var e=this,g=d.dom||d;return(g===e.dom)||Ext.dom.AbstractElement.isAncestor(e.dom,g)},getAttribute:function(d,e){var g=this.dom;return g.getAttributeNS(e,d)||g.getAttribute(e+":"+d)||g.getAttribute(d)||g[d]},update:function(d){if(this.dom){this.dom.innerHTML=d}return this},setHTML:function(d){if(this.dom){this.dom.innerHTML=d}return this},getHTML:function(){return this.dom?this.dom.innerHTML:""},hide:function(){this.setVisible(false);return this},show:function(){this.setVisible(true);return this},setVisible:function(j,d){var e=this,i=e.self,h=e.getVisibilityMode(),g=Ext.baseCSSPrefix;switch(h){case i.VISIBILITY:e.removeCls([g+"hidden-display",g+"hidden-offsets"]);e[j?"removeCls":"addCls"](g+"hidden-visibility");break;case i.DISPLAY:e.removeCls([g+"hidden-visibility",g+"hidden-offsets"]);e[j?"removeCls":"addCls"](g+"hidden-display");break;case i.OFFSETS:e.removeCls([g+"hidden-visibility",g+"hidden-display"]);e[j?"removeCls":"addCls"](g+"hidden-offsets");break}return e},getVisibilityMode:function(){var e=(this.$cache||this.getCache()).data,d=e.visibilityMode;if(d===undefined){e.visibilityMode=d=this.self.DISPLAY}return d},setVisibilityMode:function(d){(this.$cache||this.getCache()).data.visibilityMode=d;return this},getCache:function(){var d=this,e=d.dom.id||Ext.id(d.dom);d.$cache=Ext.cache[e]||Ext.addCacheEntry(e,null,d.dom);return d.$cache}},function(){var d=this;Ext.getDetachedBody=function(){var e=d.detachedBodyEl;if(!e){e=a.createElement("div");d.detachedBodyEl=e=new d.Fly(e);e.isDetachedBody=true}return e};Ext.getElementById=function(h){var g=a.getElementById(h),e;if(!g&&(e=d.detachedBodyEl)){g=e.dom.querySelector("#"+Ext.escapeId(h))}return g};Ext.get=function(e){return Ext.dom.Element.get(e)};this.addStatics({Fly:new Ext.Class({extend:d,isFly:true,constructor:function(e){this.dom=e},attach:function(e){this.dom=e;this.$cache=e.id?Ext.cache[e.id]:null;return this}}),_flyweights:{},fly:function(i,g){var h=null,e=d._flyweights;g=g||"_global";i=Ext.getDom(i);if(i){h=e[g]||(e[g]=new d.Fly());h.dom=i;h.$cache=i.id?Ext.cache[i.id]:null}return h}});Ext.fly=function(){return d.fly.apply(d,arguments)};(function(e){e.destroy=e.remove;if(a.querySelector){e.getById=function(i,g){var h=a.getElementById(i)||this.dom.querySelector("#"+Ext.escapeId(i));return g?h:(h?Ext.get(h):null)}}else{e.getById=function(i,g){var h=a.getElementById(i);return g?h:(h?Ext.get(h):null)}}}(this.prototype))})}());Ext.dom.AbstractElement.addInheritableStatics({unitRe:/\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i,camelRe:/(-[a-z])/gi,cssRe:/([a-z0-9\-]+)\s*:\s*([^;\s]+(?:\s*[^;\s]+)*);?/gi,opacityRe:/alpha\(opacity=(.*)\)/i,propertyCache:{},defaultUnit:"px",borders:{l:"border-left-width",r:"border-right-width",t:"border-top-width",b:"border-bottom-width"},paddings:{l:"padding-left",r:"padding-right",t:"padding-top",b:"padding-bottom"},margins:{l:"margin-left",r:"margin-right",t:"margin-top",b:"margin-bottom"},addUnits:function(b,a){if(typeof b=="number"){return b+(a||this.defaultUnit||"px")}if(b===""||b=="auto"||b===undefined||b===null){return b||""}if(!this.unitRe.test(b)){return b||""}return b},isAncestor:function(b,d){var a=false;b=Ext.getDom(b);d=Ext.getDom(d);if(b&&d){if(b.contains){return b.contains(d)}else{if(b.compareDocumentPosition){return !!(b.compareDocumentPosition(d)&16)}else{while((d=d.parentNode)){a=d==b||a}}}}return a},parseBox:function(b){if(typeof b!="string"){b=b.toString()}var c=b.split(" "),a=c.length;if(a==1){c[1]=c[2]=c[3]=c[0]}else{if(a==2){c[2]=c[0];c[3]=c[1]}else{if(a==3){c[3]=c[1]}}}return{top:parseFloat(c[0])||0,right:parseFloat(c[1])||0,bottom:parseFloat(c[2])||0,left:parseFloat(c[3])||0}},unitizeBox:function(g,e){var d=this.addUnits,c=this.parseBox(g);return d(c.top,e)+" "+d(c.right,e)+" "+d(c.bottom,e)+" "+d(c.left,e)},camelReplaceFn:function(b,c){return c.charAt(1).toUpperCase()},normalize:function(a){if(a=="float"){a=Ext.supports.Float?"cssFloat":"styleFloat"}return this.propertyCache[a]||(this.propertyCache[a]=a.replace(this.camelRe,this.camelReplaceFn))},getDocumentHeight:function(){return Math.max(!Ext.isStrict?document.body.scrollHeight:document.documentElement.scrollHeight,this.getViewportHeight())},getDocumentWidth:function(){return Math.max(!Ext.isStrict?document.body.scrollWidth:document.documentElement.scrollWidth,this.getViewportWidth())},getViewportHeight:function(){return window.innerHeight},getViewportWidth:function(){return window.innerWidth},getViewSize:function(){return{width:window.innerWidth,height:window.innerHeight}},getOrientation:function(){if(Ext.supports.OrientationChange){return(window.orientation==0)?"portrait":"landscape"}return(window.innerHeight>window.innerWidth)?"portrait":"landscape"},fromPoint:function(a,b){return Ext.get(document.elementFromPoint(a,b))},parseStyles:function(c){var a={},b=this.cssRe,d;if(c){b.lastIndex=0;while((d=b.exec(c))){a[d[1]]=d[2]}}return a}});(function(){var g=document,a=Ext.dom.AbstractElement,e=null,d=g.compatMode=="CSS1Compat",c,b=function(i){if(!c){c=new a.Fly()}c.attach(i);return c};if(!("activeElement" in g)&&g.addEventListener){g.addEventListener("focus",function(i){if(i&&i.target){e=(i.target==g)?null:i.target}},true)}function h(j,k,i){return function(){j.selectionStart=k;j.selectionEnd=i}}a.addInheritableStatics({getActiveElement:function(){return g.activeElement||e},getRightMarginFixCleaner:function(n){var k=Ext.supports,l=k.DisplayChangeInputSelectionBug,m=k.DisplayChangeTextAreaSelectionBug,o,i,p,j;if(l||m){o=g.activeElement||e;i=o&&o.tagName;if((m&&i=="TEXTAREA")||(l&&i=="INPUT"&&o.type=="text")){if(Ext.dom.Element.isAncestor(n,o)){p=o.selectionStart;j=o.selectionEnd;if(Ext.isNumber(p)&&Ext.isNumber(j)){return h(o,p,j)}}}}return Ext.emptyFn},getViewWidth:function(i){return i?Ext.dom.Element.getDocumentWidth():Ext.dom.Element.getViewportWidth()},getViewHeight:function(i){return i?Ext.dom.Element.getDocumentHeight():Ext.dom.Element.getViewportHeight()},getDocumentHeight:function(){return Math.max(!d?g.body.scrollHeight:g.documentElement.scrollHeight,Ext.dom.Element.getViewportHeight())},getDocumentWidth:function(){return Math.max(!d?g.body.scrollWidth:g.documentElement.scrollWidth,Ext.dom.Element.getViewportWidth())},getViewportHeight:function(){return Ext.isIE?(Ext.isStrict?g.documentElement.clientHeight:g.body.clientHeight):self.innerHeight},getViewportWidth:function(){return(!Ext.isStrict&&!Ext.isOpera)?g.body.clientWidth:Ext.isIE?g.documentElement.clientWidth:self.innerWidth},getY:function(i){return Ext.dom.Element.getXY(i)[1]},getX:function(i){return Ext.dom.Element.getXY(i)[0]},getXY:function(k){var n=g.body,j=g.documentElement,i=0,l=0,o=[0,0],r=Math.round,m,q;k=Ext.getDom(k);if(k!=g&&k!=n){if(Ext.isIE){try{m=k.getBoundingClientRect();l=j.clientTop||n.clientTop;i=j.clientLeft||n.clientLeft}catch(p){m={left:0,top:0}}}else{m=k.getBoundingClientRect()}q=b(document).getScroll();o=[r(m.left+q.left-i),r(m.top+q.top-l)]}return o},setXY:function(j,k){(j=Ext.fly(j,"_setXY")).position();var l=j.translatePoints(k),i=j.dom.style,m;for(m in l){if(!isNaN(l[m])){i[m]=l[m]+"px"}}},setX:function(j,i){Ext.dom.Element.setXY(j,[i,false])},setY:function(i,j){Ext.dom.Element.setXY(i,[false,j])},serializeForm:function(k){var l=k.elements||(document.forms[k]||Ext.getDom(k)).elements,v=false,u=encodeURIComponent,p="",n=l.length,q,i,t,x,w,r,m,s,j;for(r=0;r<n;r++){q=l[r];i=q.name;t=q.type;x=q.options;if(!q.disabled&&i){if(/select-(one|multiple)/i.test(t)){s=x.length;for(m=0;m<s;m++){j=x[m];if(j.selected){w=j.hasAttribute?j.hasAttribute("value"):j.getAttributeNode("value").specified;p+=Ext.String.format("{0}={1}&",u(i),u(w?j.value:j.text))}}}else{if(!(/file|undefined|reset|button/i.test(t))){if(!(/radio|checkbox/i.test(t)&&!q.checked)&&!(t=="submit"&&v)){p+=u(i)+"="+u(q.value)+"&";v=/submit/i.test(t)}}}}}return p.substr(0,p.length-1)}})}());Ext.dom.AbstractElement.override({getAnchorXY:function(g,k,n){g=(g||"tl").toLowerCase();n=n||{};var j=this,a=j.dom==document.body||j.dom==document,b=n.width||a?window.innerWidth:j.getWidth(),l=n.height||a?window.innerHeight:j.getHeight(),m,c=Math.round,d=j.getXY(),i=a?0:!k?d[0]:0,h=a?0:!k?d[1]:0,e={c:[c(b*0.5),c(l*0.5)],t:[c(b*0.5),0],l:[0,c(l*0.5)],r:[b,c(l*0.5)],b:[c(b*0.5),l],tl:[0,0],bl:[0,l],br:[b,l],tr:[b,0]};m=e[g];return[m[0]+i,m[1]+h]},alignToRe:/^([a-z]+)-([a-z]+)(\?)?$/,getAlignToXY:function(e,z,i,s){s=!!s;e=Ext.get(e);i=i||[0,0];if(!z||z=="?"){z="tl-bl?"}else{if(!(/-/).test(z)&&z!==""){z="tl-"+z}}z=z.toLowerCase();var v=this,d=z.match(this.alignToRe),n=window.innerWidth,u=window.innerHeight,c="",b="",A,w,m,l,q,o,g,a,k,j,r,p,h,t;if(!d){throw"Element.alignTo with an invalid alignment "+z}c=d[1];b=d[2];t=!!d[3];A=v.getAnchorXY(c,true);w=e.getAnchorXY(b,s);m=w[0]-A[0]+i[0];l=w[1]-A[1]+i[1];if(t){r=v.getWidth();p=v.getHeight();h=e.getPageBox();a=c.charAt(0);g=c.charAt(c.length-1);j=b.charAt(0);k=b.charAt(b.length-1);o=((a=="t"&&j=="b")||(a=="b"&&j=="t"));q=((g=="r"&&k=="l")||(g=="l"&&k=="r"));if(m+r>n){m=q?h.left-r:n-r}if(m<0){m=q?h.right:0}if(l+p>u){l=o?h.top-p:u-p}if(l<0){l=o?h.bottom:0}}return[m,l]},getAnchor:function(){var b=(this.$cache||this.getCache()).data,a;if(!this.dom){return}a=b._anchor;if(!a){a=b._anchor={}}return a},adjustForConstraints:function(c,b){var a=this.getConstrainVector(b,c);if(a){c[0]+=a[0];c[1]+=a[1]}return c}});Ext.dom.AbstractElement.addMethods({appendChild:function(a){return Ext.get(a).appendTo(this)},appendTo:function(a){Ext.getDom(a).appendChild(this.dom);return this},insertBefore:function(a){a=Ext.getDom(a);a.parentNode.insertBefore(this.dom,a);return this},insertAfter:function(a){a=Ext.getDom(a);a.parentNode.insertBefore(this.dom,a.nextSibling);return this},insertFirst:function(b,a){b=b||{};if(b.nodeType||b.dom||typeof b=="string"){b=Ext.getDom(b);this.dom.insertBefore(b,this.dom.firstChild);return !a?Ext.get(b):b}else{return this.createChild(b,this.dom.firstChild,a)}},insertSibling:function(b,g,j){var i=this,k=(g||"before").toLowerCase()=="after",d,a,c,h;if(Ext.isArray(b)){a=i;c=b.length;for(h=0;h<c;h++){d=Ext.fly(a,"_internal").insertSibling(b[h],g,j);if(k){a=d}}return d}b=b||{};if(b.nodeType||b.dom){d=i.dom.parentNode.insertBefore(Ext.getDom(b),k?i.dom.nextSibling:i.dom);if(!j){d=Ext.get(d)}}else{if(k&&!i.dom.nextSibling){d=Ext.core.DomHelper.append(i.dom.parentNode,b,!j)}else{d=Ext.core.DomHelper[k?"insertAfter":"insertBefore"](i.dom,b,!j)}}return d},replace:function(a){a=Ext.get(a);this.insertBefore(a);a.remove();return this},replaceWith:function(a){var b=this;if(a.nodeType||a.dom||typeof a=="string"){a=Ext.get(a);b.dom.parentNode.insertBefore(a,b.dom)}else{a=Ext.core.DomHelper.insertBefore(b.dom,a)}delete Ext.cache[b.id];Ext.removeNode(b.dom);b.id=Ext.id(b.dom=a);Ext.dom.AbstractElement.addToCache(b.isFlyweight?new Ext.dom.AbstractElement(b.dom):b);return b},createChild:function(b,a,c){b=b||{tag:"div"};if(a){return Ext.core.DomHelper.insertBefore(a,b,c!==true)}else{return Ext.core.DomHelper[!this.dom.firstChild?"insertFirst":"append"](this.dom,b,c!==true)}},wrap:function(b,c,a){var e=Ext.core.DomHelper.insertBefore(this.dom,b||{tag:"div"},true),d=e;if(a){d=Ext.DomQuery.selectNode(a,e.dom)}d.appendChild(this.dom);return c?e.dom:e},insertHtml:function(b,c,a){var d=Ext.core.DomHelper.insertHtml(b,this.dom,c);return a?Ext.get(d):d}});(function(){var a=Ext.dom.AbstractElement;a.override({getX:function(b){return this.getXY(b)[0]},getY:function(b){return this.getXY(b)[1]},getXY:function(){var b=window.webkitConvertPointFromNodeToPage(this.dom,new WebKitPoint(0,0));return[b.x,b.y]},getOffsetsTo:function(b){var d=this.getXY(),c=Ext.fly(b,"_internal").getXY();return[d[0]-c[0],d[1]-c[1]]},setX:function(b){return this.setXY([b,this.getY()])},setY:function(b){return this.setXY([this.getX(),b])},setLeft:function(b){this.setStyle("left",a.addUnits(b));return this},setTop:function(b){this.setStyle("top",a.addUnits(b));return this},setRight:function(b){this.setStyle("right",a.addUnits(b));return this},setBottom:function(b){this.setStyle("bottom",a.addUnits(b));return this},setXY:function(g){var c=this,e,b,d;if(arguments.length>1){g=[g,arguments[1]]}e=c.translatePoints(g);b=c.dom.style;for(d in e){if(!e.hasOwnProperty(d)){continue}if(!isNaN(e[d])){b[d]=e[d]+"px"}}return c},getLeft:function(b){return parseInt(this.getStyle("left"),10)||0},getRight:function(b){return parseInt(this.getStyle("right"),10)||0},getTop:function(b){return parseInt(this.getStyle("top"),10)||0},getBottom:function(b){return parseInt(this.getStyle("bottom"),10)||0},translatePoints:function(b,i){i=isNaN(b[1])?i:b[1];b=isNaN(b[0])?b:b[0];var e=this,g=e.isStyle("position","relative"),h=e.getXY(),c=parseInt(e.getStyle("left"),10),d=parseInt(e.getStyle("top"),10);c=!isNaN(c)?c:(g?0:e.dom.offsetLeft);d=!isNaN(d)?d:(g?0:e.dom.offsetTop);return{left:(b-h[0]+c),top:(i-h[1]+d)}},setBox:function(e){var d=this,c=e.width,b=e.height,h=e.top,g=e.left;if(g!==undefined){d.setLeft(g)}if(h!==undefined){d.setTop(h)}if(c!==undefined){d.setWidth(c)}if(b!==undefined){d.setHeight(b)}return this},getBox:function(i,m){var j=this,g=j.dom,d=g.offsetWidth,n=g.offsetHeight,p,h,e,c,o,k;if(!m){p=j.getXY()}else{if(i){p=[0,0]}else{p=[parseInt(j.getStyle("left"),10)||0,parseInt(j.getStyle("top"),10)||0]}}if(!i){h={x:p[0],y:p[1],0:p[0],1:p[1],width:d,height:n}}else{e=j.getBorderWidth.call(j,"l")+j.getPadding.call(j,"l");c=j.getBorderWidth.call(j,"r")+j.getPadding.call(j,"r");o=j.getBorderWidth.call(j,"t")+j.getPadding.call(j,"t");k=j.getBorderWidth.call(j,"b")+j.getPadding.call(j,"b");h={x:p[0]+e,y:p[1]+o,0:p[0]+e,1:p[1]+o,width:d-(e+c),height:n-(o+k)}}h.left=h.x;h.top=h.y;h.right=h.x+h.width;h.bottom=h.y+h.height;return h},getPageBox:function(g){var j=this,d=j.dom,m=d.offsetWidth,i=d.offsetHeight,o=j.getXY(),n=o[1],c=o[0]+m,k=o[1]+i,e=o[0];if(!d){return new Ext.util.Region()}if(g){return new Ext.util.Region(n,c,k,e)}else{return{left:e,top:n,width:m,height:i,right:c,bottom:k}}}})}());(function(){var q=Ext.dom.AbstractElement,o=document.defaultView,n=Ext.Array,m=/^\s+|\s+$/g,b=/\w/g,p=/\s+/,t=/^(?:transparent|(?:rgba[(](?:\s*\d+\s*[,]){3}\s*0\s*[)]))$/i,h=Ext.supports.ClassList,e="padding",d="margin",s="border",k="-left",r="-right",l="-top",c="-bottom",i="-width",j={l:s+k+i,r:s+r+i,t:s+l+i,b:s+c+i},g={l:e+k,r:e+r,t:e+l,b:e+c},a={l:d+k,r:d+r,t:d+l,b:d+c};q.override({styleHooks:{},addStyles:function(B,A){var w=0,z=(B||"").match(b),y,u=z.length,x,v=[];if(u==1){w=Math.abs(parseFloat(this.getStyle(A[z[0]]))||0)}else{if(u){for(y=0;y<u;y++){x=z[y];v.push(A[x])}v=this.getStyle(v);for(y=0;y<u;y++){x=z[y];w+=Math.abs(parseFloat(v[A[x]])||0)}}}return w},addCls:h?function(x){var z=this,B=z.dom,A,y,w,u,v;if(typeof(x)=="string"){x=x.replace(m,"").split(p)}if(B&&x&&!!(u=x.length)){if(!B.className){B.className=x.join(" ")}else{A=B.classList;for(w=0;w<u;++w){v=x[w];if(v){if(!A.contains(v)){if(y){y.push(v)}else{y=B.className.replace(m,"");y=y?[y,v]:[v]}}}}if(y){B.className=y.join(" ")}}}return z}:function(v){var w=this,y=w.dom,x,u;if(y&&v&&v.length){u=Ext.Element.mergeClsList(y.className,v);if(u.changed){y.className=u.join(" ")}}return w},removeCls:function(w){var x=this,y=x.dom,u,v;if(typeof(w)=="string"){w=w.replace(m,"").split(p)}if(y&&y.className&&w&&!!(u=w.length)){if(u==1&&h){if(w[0]){y.classList.remove(w[0])}}else{v=Ext.Element.removeCls(y.className,w);if(v.changed){y.className=v.join(" ")}}}return x},radioCls:function(y){var z=this.dom.parentNode.childNodes,w,x,u;y=Ext.isArray(y)?y:[y];for(x=0,u=z.length;x<u;x++){w=z[x];if(w&&w.nodeType==1){Ext.fly(w,"_internal").removeCls(y)}}return this.addCls(y)},toggleCls:h?function(u){var v=this,w=v.dom;if(w){u=u.replace(m,"");if(u){w.classList.toggle(u)}}return v}:function(u){var v=this;return v.hasCls(u)?v.removeCls(u):v.addCls(u)},hasCls:h?function(u){var v=this.dom;return(v&&u)?v.classList.contains(u):false}:function(u){var v=this.dom;return v?u&&(" "+v.className+" ").indexOf(" "+u+" ")!=-1:false},replaceCls:function(v,u){return this.removeCls(v).addCls(u)},isStyle:function(u,v){return this.getStyle(u)==v},getStyle:function(G,B){var C=this,x=C.dom,J=typeof G!="string",H=C.styleHooks,v=G,D=v,A=1,z,I,F,E,w,u,y;if(J){F={};v=D[0];y=0;if(!(A=D.length)){return F}}if(!x||x.documentElement){return F||""}z=x.style;if(B){u=z}else{u=x.ownerDocument.defaultView.getComputedStyle(x,null);if(!u){B=true;u=z}}do{E=H[v];if(!E){H[v]=E={name:q.normalize(v)}}if(E.get){w=E.get(x,C,B,u)}else{I=E.name;w=u[I]}if(!J){return w}F[v]=w;v=D[++y]}while(y<A);return F},getStyles:function(){var v=Ext.Array.slice(arguments),u=v.length,w;if(u&&typeof v[u-1]=="boolean"){w=v.pop()}return this.getStyle(v,w)},isTransparent:function(v){var u=this.getStyle(v);return u?t.test(u):false},setStyle:function(B,z){var x=this,A=x.dom,u=x.styleHooks,w=A.style,v=B,y;if(typeof v=="string"){y=u[v];if(!y){u[v]=y={name:q.normalize(v)}}z=(z==null)?"":z;if(y.set){y.set(A,z,x)}else{w[y.name]=z}if(y.afterSet){y.afterSet(A,z,x)}}else{for(v in B){if(B.hasOwnProperty(v)){y=u[v];if(!y){u[v]=y={name:q.normalize(v)}}z=B[v];z=(z==null)?"":z;if(y.set){y.set(A,z,x)}else{w[y.name]=z}if(y.afterSet){y.afterSet(A,z,x)}}}}return x},getHeight:function(v){var w=this.dom,u=v?(w.clientHeight-this.getPadding("tb")):w.offsetHeight;return u>0?u:0},getWidth:function(u){var w=this.dom,v=u?(w.clientWidth-this.getPadding("lr")):w.offsetWidth;return v>0?v:0},setWidth:function(u){var v=this;v.dom.style.width=q.addUnits(u);return v},setHeight:function(u){var v=this;v.dom.style.height=q.addUnits(u);return v},getBorderWidth:function(u){return this.addStyles(u,j)},getPadding:function(u){return this.addStyles(u,g)},margins:a,applyStyles:function(w){if(w){var v,u,x=this.dom;if(typeof w=="function"){w=w.call()}if(typeof w=="string"){w=Ext.util.Format.trim(w).split(/\s*(?::|;)\s*/);for(v=0,u=w.length;v<u;){x.style[q.normalize(w[v++])]=w[v++]}}else{if(typeof w=="object"){this.setStyle(w)}}}},setSize:function(w,u){var x=this,v=x.dom.style;if(Ext.isObject(w)){u=w.height;w=w.width}v.width=q.addUnits(w);v.height=q.addUnits(u);return x},getViewSize:function(){var u=document,v=this.dom;if(v==u||v==u.body){return{width:q.getViewportWidth(),height:q.getViewportHeight()}}else{return{width:v.clientWidth,height:v.clientHeight}}},getSize:function(v){var u=this.dom;return{width:Math.max(0,v?(u.clientWidth-this.getPadding("lr")):u.offsetWidth),height:Math.max(0,v?(u.clientHeight-this.getPadding("tb")):u.offsetHeight)}},repaint:function(){var u=this.dom;this.addCls(Ext.baseCSSPrefix+"repaint");setTimeout(function(){Ext.fly(u).removeCls(Ext.baseCSSPrefix+"repaint")},1);return this},getMargin:function(v){var w=this,y={t:"top",l:"left",r:"right",b:"bottom"},u,z,x;if(!v){x=[];for(u in w.margins){if(w.margins.hasOwnProperty(u)){x.push(w.margins[u])}}z=w.getStyle(x);if(z&&typeof z=="object"){for(u in w.margins){if(w.margins.hasOwnProperty(u)){z[y[u]]=parseFloat(z[w.margins[u]])||0}}}return z}else{return w.addStyles.call(w,v,w.margins)}},mask:function(v,z,D){var A=this,w=A.dom,x=(A.$cache||A.getCache()).data,u=x.mask,E,C,B="",y=Ext.baseCSSPrefix;A.addCls(y+"masked");if(A.getStyle("position")=="static"){A.addCls(y+"masked-relative")}if(u){u.remove()}if(z&&typeof z=="string"){B=" "+z}else{B=" "+y+"mask-gray"}E=A.createChild({cls:y+"mask"+((D!==false)?"":(" "+y+"mask-gray")),html:v?('<div class="'+(z||(y+"mask-message"))+'">'+v+"</div>"):""});C=A.getSize();x.mask=E;if(w===document.body){C.height=window.innerHeight;if(A.orientationHandler){Ext.EventManager.unOrientationChange(A.orientationHandler,A)}A.orientationHandler=function(){C=A.getSize();C.height=window.innerHeight;E.setSize(C)};Ext.EventManager.onOrientationChange(A.orientationHandler,A)}E.setSize(C);if(Ext.is.iPad){Ext.repaint()}},unmask:function(){var v=this,x=(v.$cache||v.getCache()).data,u=x.mask,w=Ext.baseCSSPrefix;if(u){u.remove();delete x.mask}v.removeCls([w+"masked",w+"masked-relative"]);if(v.dom===document.body){Ext.EventManager.unOrientationChange(v.orientationHandler,v);delete v.orientationHandler}}});q.populateStyleMap=function(B,u){var A=["margin-","padding-","border-width-"],z=["before","after"],w,y,v,x;for(w=A.length;w--;){for(x=2;x--;){y=A[w]+z[x];B[q.normalize(y)]=B[y]={name:q.normalize(A[w]+u[x])}}}};Ext.onReady(function(){var C=Ext.supports,u,A,y,v,B;function z(H,E,G,D){var F=D[this.name]||"";return t.test(F)?"transparent":F}function x(J,G,I,F){var D=F.marginRight,E,H;if(D!="0px"){E=J.style;H=E.display;E.display="inline-block";D=(I?F:J.ownerDocument.defaultView.getComputedStyle(J,null)).marginRight;E.display=H}return D}function w(K,H,J,G){var D=G.marginRight,F,E,I;if(D!="0px"){F=K.style;E=q.getRightMarginFixCleaner(K);I=F.display;F.display="inline-block";D=(J?G:K.ownerDocument.defaultView.getComputedStyle(K,"")).marginRight;F.display=I;E()}return D}u=q.prototype.styleHooks;q.populateStyleMap(u,["left","right"]);if(C.init){C.init()}if(!C.RightMargin){u.marginRight=u["margin-right"]={name:"marginRight",get:(C.DisplayChangeInputSelectionBug||C.DisplayChangeTextAreaSelectionBug)?w:x}}if(!C.TransparentColor){A=["background-color","border-color","color","outline-color"];for(y=A.length;y--;){v=A[y];B=q.normalize(v);u[v]=u[B]={name:B,get:z}}}})}());Ext.dom.AbstractElement.override({findParent:function(h,b,a){var e=this.dom,c=document.documentElement,g=0,d;b=b||50;if(isNaN(b)){d=Ext.getDom(b);b=Number.MAX_VALUE}while(e&&e.nodeType==1&&g<b&&e!=c&&e!=d){if(Ext.DomQuery.is(e,h)){return a?Ext.get(e):e}g++;e=e.parentNode}return null},findParentNode:function(d,b,a){var c=Ext.fly(this.dom.parentNode,"_internal");return c?c.findParent(d,b,a):null},up:function(b,a){return this.findParentNode(b,a,true)},select:function(a,b){return Ext.dom.Element.select(a,this.dom,b)},query:function(a){return Ext.DomQuery.select(a,this.dom)},down:function(a,b){var c=Ext.DomQuery.selectNode(a,this.dom);return b?c:Ext.get(c)},child:function(a,b){var d,c=this,e;e=Ext.id(c.dom);e=Ext.escapeId(e);d=Ext.DomQuery.selectNode("#"+e+" > "+a,c.dom);return b?d:Ext.get(d)},parent:function(a,b){return this.matchNode("parentNode","parentNode",a,b)},next:function(a,b){return this.matchNode("nextSibling","nextSibling",a,b)},prev:function(a,b){return this.matchNode("previousSibling","previousSibling",a,b)},first:function(a,b){return this.matchNode("nextSibling","firstChild",a,b)},last:function(a,b){return this.matchNode("previousSibling","lastChild",a,b)},matchNode:function(b,e,a,c){if(!this.dom){return null}var d=this.dom[e];while(d){if(d.nodeType==1&&(!a||Ext.DomQuery.is(d,a))){return !c?Ext.get(d):d}d=d[b]}return null},isAncestor:function(a){return this.self.isAncestor.call(this.self,this.dom,a)}});(function(){var b="afterbegin",i="afterend",a="beforebegin",o="beforeend",l="<table>",h="</table>",c=l+"<tbody>",n="</tbody>"+h,k=c+"<tr>",e="</tr>"+n,p=document.createElement("div"),m=["BeforeBegin","previousSibling"],j=["AfterEnd","nextSibling"],d={beforebegin:m,afterend:j},g={beforebegin:m,afterend:j,afterbegin:["AfterBegin","firstChild"],beforeend:["BeforeEnd","lastChild"]};Ext.define("Ext.dom.Helper",{extend:"Ext.dom.AbstractHelper",requires:["Ext.dom.AbstractElement"],tableRe:/^table|tbody|tr|td$/i,tableElRe:/td|tr|tbody/i,useDom:false,createDom:function(q,w){var r,z=document,u,x,s,y,v,t;if(Ext.isArray(q)){r=z.createDocumentFragment();for(v=0,t=q.length;v<t;v++){this.createDom(q[v],r)}}else{if(typeof q=="string"){r=z.createTextNode(q)}else{r=z.createElement(q.tag||"div");u=!!r.setAttribute;for(x in q){if(!this.confRe.test(x)){s=q[x];if(x=="cls"){r.className=s}else{if(u){r.setAttribute(x,s)}else{r[x]=s}}}}Ext.DomHelper.applyStyles(r,q.style);if((y=q.children||q.cn)){this.createDom(y,r)}else{if(q.html){r.innerHTML=q.html}}}}if(w){w.appendChild(r)}return r},ieTable:function(v,q,w,u){p.innerHTML=[q,w,u].join("");var r=-1,t=p,s;while(++r<v){t=t.firstChild}s=t.nextSibling;if(s){t=document.createDocumentFragment();while(s){t.appendChild(s);s=s.nextSibling}}return t},insertIntoTable:function(z,s,r,t){var q,w,v=s==a,y=s==b,u=s==o,x=s==i;if(z=="td"&&(y||u)||!this.tableElRe.test(z)&&(v||x)){return null}w=v?r:x?r.nextSibling:y?r.firstChild:null;if(v||x){r=r.parentNode}if(z=="td"||(z=="tr"&&(u||y))){q=this.ieTable(4,k,t,e)}else{if((z=="tbody"&&(u||y))||(z=="tr"&&(v||x))){q=this.ieTable(3,c,t,n)}else{q=this.ieTable(2,l,t,h)}}r.insertBefore(q,w);return q},createContextualFragment:function(r){var q=document.createDocumentFragment(),s,t;p.innerHTML=r;t=p.childNodes;s=t.length;while(s--){q.appendChild(t[0])}return q},applyStyles:function(q,r){if(r){q=Ext.fly(q);if(typeof r=="function"){r=r.call()}if(typeof r=="string"){r=Ext.dom.Element.parseStyles(r)}if(typeof r=="object"){q.setStyle(r)}}},createHtml:function(q){return this.markup(q)},doInsert:function(t,v,u,w,s,q){t=t.dom||Ext.getDom(t);var r;if(this.useDom){r=this.createDom(v,null);if(q){t.appendChild(r)}else{(s=="firstChild"?t:t.parentNode).insertBefore(r,t[s]||t)}}else{r=this.insertHtml(w,t,this.markup(v))}return u?Ext.get(r,true):r},overwrite:function(s,r,t){var q;s=Ext.getDom(s);r=this.markup(r);if(Ext.isIE&&this.tableRe.test(s.tagName)){while(s.firstChild){s.removeChild(s.firstChild)}if(r){q=this.insertHtml("afterbegin",s,r);return t?Ext.get(q):q}return null}s.innerHTML=r;return t?Ext.get(s.firstChild):s.firstChild},insertHtml:function(s,v,t){var x,r,u,q,w;s=s.toLowerCase();if(v.insertAdjacentHTML){if(Ext.isIE&&this.tableRe.test(v.tagName)&&(w=this.insertIntoTable(v.tagName.toLowerCase(),s,v,t))){return w}if((x=g[s])){v.insertAdjacentHTML(x[0],t);return v[x[1]]}}else{if(v.nodeType===3){s=s==="afterbegin"?"beforebegin":s;s=s==="beforeend"?"afterend":s}r=Ext.supports.CreateContextualFragment?v.ownerDocument.createRange():undefined;q="setStart"+(this.endRe.test(s)?"After":"Before");if(d[s]){if(r){r[q](v);w=r.createContextualFragment(t)}else{w=this.createContextualFragment(t)}v.parentNode.insertBefore(w,s==a?v:v.nextSibling);return v[(s==a?"previous":"next")+"Sibling"]}else{u=(s==b?"first":"last")+"Child";if(v.firstChild){if(r){r[q](v[u]);w=r.createContextualFragment(t)}else{w=this.createContextualFragment(t)}if(s==b){v.insertBefore(w,v.firstChild)}else{v.appendChild(w)}}else{v.innerHTML=t}return v[u]}}},createTemplate:function(r){var q=this.markup(r);return new Ext.Template(q)}},function(){Ext.ns("Ext.core");Ext.DomHelper=Ext.core.DomHelper=new this})}());Ext.ns("Ext.core");Ext.dom.Query=Ext.core.DomQuery=Ext.DomQuery=(function(){var cache={},simpleCache={},valueCache={},nonSpace=/\S/,trimRe=/^\s+|\s+$/g,tplRe=/\{(\d+)\}/g,modeRe=/^(\s?[\/>+~]\s?|\s|$)/,tagTokenRe=/^(#)?([\w\-\*\\]+)/,nthRe=/(\d*)n\+?(\d*)/,nthRe2=/\D/,startIdRe=/^\s*\#/,isIE=window.ActiveXObject?true:false,key=30803,longHex=/\\([0-9a-fA-F]{6})/g,shortHex=/\\([0-9a-fA-F]{1,6})\s{0,1}/g,nonHex=/\\([^0-9a-fA-F]{1})/g,escapes=/\\/g,num,hasEscapes,longHexToChar=function($0,$1){return String.fromCharCode(parseInt($1,16))},shortToLongHex=function($0,$1){while($1.length<6){$1="0"+$1}return"\\"+$1},charToLongHex=function($0,$1){num=$1.charCodeAt(0).toString(16);if(num.length===1){num="0"+num}return"\\0000"+num},unescapeCssSelector=function(selector){return(hasEscapes)?selector.replace(longHex,longHexToChar):selector},setupEscapes=function(path){hasEscapes=(path.indexOf("\\")>-1);if(hasEscapes){path=path.replace(shortHex,shortToLongHex).replace(nonHex,charToLongHex).replace(escapes,"\\\\")}return path};eval("var batch = 30803;");function child(parent,index){var i=0,n=parent.firstChild;while(n){if(n.nodeType==1){if(++i==index){return n}}n=n.nextSibling}return null}function next(n){while((n=n.nextSibling)&&n.nodeType!=1){}return n}function prev(n){while((n=n.previousSibling)&&n.nodeType!=1){}return n}function children(parent){var n=parent.firstChild,nodeIndex=-1,nextNode;while(n){nextNode=n.nextSibling;if(n.nodeType==3&&!nonSpace.test(n.nodeValue)){parent.removeChild(n)}else{n.nodeIndex=++nodeIndex}n=nextNode}return this}function byClassName(nodeSet,cls){cls=unescapeCssSelector(cls);if(!cls){return nodeSet}var result=[],ri=-1,i,ci;for(i=0,ci;ci=nodeSet[i];i++){if((" "+ci.className+" ").indexOf(cls)!=-1){result[++ri]=ci}}return result}function attrValue(n,attr){if(!n.tagName&&typeof n.length!="undefined"){n=n[0]}if(!n){return null}if(attr=="for"){return n.htmlFor}if(attr=="class"||attr=="className"){return n.className}return n.getAttribute(attr)||n[attr]}function getNodes(ns,mode,tagName){var result=[],ri=-1,cs,i,ni,j,ci,cn,utag,n,cj;if(!ns){return result}tagName=tagName||"*";if(typeof ns.getElementsByTagName!="undefined"){ns=[ns]}if(!mode){for(i=0,ni;ni=ns[i];i++){cs=ni.getElementsByTagName(tagName);for(j=0,ci;ci=cs[j];j++){result[++ri]=ci}}}else{if(mode=="/"||mode==">"){utag=tagName.toUpperCase();for(i=0,ni,cn;ni=ns[i];i++){cn=ni.childNodes;for(j=0,cj;cj=cn[j];j++){if(cj.nodeName==utag||cj.nodeName==tagName||tagName=="*"){result[++ri]=cj}}}}else{if(mode=="+"){utag=tagName.toUpperCase();for(i=0,n;n=ns[i];i++){while((n=n.nextSibling)&&n.nodeType!=1){}if(n&&(n.nodeName==utag||n.nodeName==tagName||tagName=="*")){result[++ri]=n}}}else{if(mode=="~"){utag=tagName.toUpperCase();for(i=0,n;n=ns[i];i++){while((n=n.nextSibling)){if(n.nodeName==utag||n.nodeName==tagName||tagName=="*"){result[++ri]=n}}}}}}}return result}function concat(a,b){if(b.slice){return a.concat(b)}for(var i=0,l=b.length;i<l;i++){a[a.length]=b[i]}return a}function byTag(cs,tagName){if(cs.tagName||cs==document){cs=[cs]}if(!tagName){return cs}var result=[],ri=-1,i,ci;tagName=tagName.toLowerCase();for(i=0,ci;ci=cs[i];i++){if(ci.nodeType==1&&ci.tagName.toLowerCase()==tagName){result[++ri]=ci}}return result}function byId(cs,id){id=unescapeCssSelector(id);if(cs.tagName||cs==document){cs=[cs]}if(!id){return cs}var result=[],ri=-1,i,ci;for(i=0,ci;ci=cs[i];i++){if(ci&&ci.id==id){result[++ri]=ci;return result}}return result}function byAttribute(cs,attr,value,op,custom){var result=[],ri=-1,useGetStyle=custom=="{",fn=Ext.DomQuery.operators[op],a,xml,hasXml,i,ci;value=unescapeCssSelector(value);for(i=0,ci;ci=cs[i];i++){if(ci.nodeType!=1){continue}if(!hasXml){xml=Ext.DomQuery.isXml(ci);hasXml=true}if(!xml){if(useGetStyle){a=Ext.DomQuery.getStyle(ci,attr)}else{if(attr=="class"||attr=="className"){a=ci.className}else{if(attr=="for"){a=ci.htmlFor}else{if(attr=="href"){a=ci.getAttribute("href",2)}else{a=ci.getAttribute(attr)}}}}}else{a=ci.getAttribute(attr)}if((fn&&fn(a,value))||(!fn&&a)){result[++ri]=ci}}return result}function byPseudo(cs,name,value){value=unescapeCssSelector(value);return Ext.DomQuery.pseudos[name](cs,value)}function nodupIEXml(cs){var d=++key,r,i,len,c;cs[0].setAttribute("_nodup",d);r=[cs[0]];for(i=1,len=cs.length;i<len;i++){c=cs[i];if(!c.getAttribute("_nodup")!=d){c.setAttribute("_nodup",d);r[r.length]=c}}for(i=0,len=cs.length;i<len;i++){cs[i].removeAttribute("_nodup")}return r}function nodup(cs){if(!cs){return[]}var len=cs.length,c,i,r=cs,cj,ri=-1,d,j;if(!len||typeof cs.nodeType!="undefined"||len==1){return cs}if(isIE&&typeof cs[0].selectSingleNode!="undefined"){return nodupIEXml(cs)}d=++key;cs[0]._nodup=d;for(i=1;c=cs[i];i++){if(c._nodup!=d){c._nodup=d}else{r=[];for(j=0;j<i;j++){r[++ri]=cs[j]}for(j=i+1;cj=cs[j];j++){if(cj._nodup!=d){cj._nodup=d;r[++ri]=cj}}return r}}return r}function quickDiffIEXml(c1,c2){var d=++key,r=[],i,len;for(i=0,len=c1.length;i<len;i++){c1[i].setAttribute("_qdiff",d)}for(i=0,len=c2.length;i<len;i++){if(c2[i].getAttribute("_qdiff")!=d){r[r.length]=c2[i]}}for(i=0,len=c1.length;i<len;i++){c1[i].removeAttribute("_qdiff")}return r}function quickDiff(c1,c2){var len1=c1.length,d=++key,r=[],i,len;if(!len1){return c2}if(isIE&&typeof c1[0].selectSingleNode!="undefined"){return quickDiffIEXml(c1,c2)}for(i=0;i<len1;i++){c1[i]._qdiff=d}for(i=0,len=c2.length;i<len;i++){if(c2[i]._qdiff!=d){r[r.length]=c2[i]}}return r}function quickId(ns,mode,root,id){if(ns==root){id=unescapeCssSelector(id);var d=root.ownerDocument||root;return d.getElementById(id)}ns=getNodes(ns,mode,"*");return byId(ns,id)}return{getStyle:function(el,name){return Ext.fly(el).getStyle(name)},compile:function(path,type){type=type||"select";var fn=["var f = function(root){\n var mode; ++batch; var n = root || document;\n"],mode,lastPath,matchers=Ext.DomQuery.matchers,matchersLn=matchers.length,modeMatch,lmode=path.match(modeRe),tokenMatch,matched,j,t,m;path=setupEscapes(path);if(lmode&&lmode[1]){fn[fn.length]='mode="'+lmode[1].replace(trimRe,"")+'";';path=path.replace(lmode[1],"")}while(path.substr(0,1)=="/"){path=path.substr(1)}while(path&&lastPath!=path){lastPath=path;tokenMatch=path.match(tagTokenRe);if(type=="select"){if(tokenMatch){if(tokenMatch[1]=="#"){fn[fn.length]='n = quickId(n, mode, root, "'+tokenMatch[2]+'");'}else{fn[fn.length]='n = getNodes(n, mode, "'+tokenMatch[2]+'");'}path=path.replace(tokenMatch[0],"")}else{if(path.substr(0,1)!="@"){fn[fn.length]='n = getNodes(n, mode, "*");'}}}else{if(tokenMatch){if(tokenMatch[1]=="#"){fn[fn.length]='n = byId(n, "'+tokenMatch[2]+'");'}else{fn[fn.length]='n = byTag(n, "'+tokenMatch[2]+'");'}path=path.replace(tokenMatch[0],"")}}while(!(modeMatch=path.match(modeRe))){matched=false;for(j=0;j<matchersLn;j++){t=matchers[j];m=path.match(t.re);if(m){fn[fn.length]=t.select.replace(tplRe,function(x,i){return m[i]});path=path.replace(m[0],"");matched=true;break}}if(!matched){Ext.Error.raise({sourceClass:"Ext.DomQuery",sourceMethod:"compile",msg:'Error parsing selector. Parsing failed at "'+path+'"'})}}if(modeMatch[1]){fn[fn.length]='mode="'+modeMatch[1].replace(trimRe,"")+'";';path=path.replace(modeMatch[1],"")}}fn[fn.length]="return nodup(n);\n}";eval(fn.join(""));return f},jsSelect:function(path,root,type){root=root||document;if(typeof root=="string"){root=document.getElementById(root)}var paths=path.split(","),results=[],i,len,subPath,result;for(i=0,len=paths.length;i<len;i++){subPath=paths[i].replace(trimRe,"");if(!cache[subPath]){cache[subPath]=Ext.DomQuery.compile(subPath,type);if(!cache[subPath]){Ext.Error.raise({sourceClass:"Ext.DomQuery",sourceMethod:"jsSelect",msg:subPath+" is not a valid selector"})}}else{setupEscapes(subPath)}result=cache[subPath](root);if(result&&result!=document){results=results.concat(result)}}if(paths.length>1){return nodup(results)}return results},isXml:function(el){var docEl=(el?el.ownerDocument||el:0).documentElement;return docEl?docEl.nodeName!=="HTML":false},select:document.querySelectorAll?function(path,root,type){root=root||document;if(!Ext.DomQuery.isXml(root)){try{if(root.parentNode&&(root.nodeType!==9)&&path.indexOf(",")===-1&&!startIdRe.test(path)){path="#"+Ext.escapeId(Ext.id(root))+" "+path;root=root.parentNode}return Ext.Array.toArray(root.querySelectorAll(path))}catch(e){}}return Ext.DomQuery.jsSelect.call(this,path,root,type)}:function(path,root,type){return Ext.DomQuery.jsSelect.call(this,path,root,type)},selectNode:function(path,root){return Ext.DomQuery.select(path,root)[0]},selectValue:function(path,root,defaultValue){path=path.replace(trimRe,"");if(!valueCache[path]){valueCache[path]=Ext.DomQuery.compile(path,"select")}else{setupEscapes(path)}var n=valueCache[path](root),v;n=n[0]?n[0]:n;if(typeof n.normalize=="function"){n.normalize()}v=(n&&n.firstChild?n.firstChild.nodeValue:null);return((v===null||v===undefined||v==="")?defaultValue:v)},selectNumber:function(path,root,defaultValue){var v=Ext.DomQuery.selectValue(path,root,defaultValue||0);return parseFloat(v)},is:function(el,ss){if(typeof el=="string"){el=document.getElementById(el)}var isArray=Ext.isArray(el),result=Ext.DomQuery.filter(isArray?el:[el],ss);return isArray?(result.length==el.length):(result.length>0)},filter:function(els,ss,nonMatches){ss=ss.replace(trimRe,"");if(!simpleCache[ss]){simpleCache[ss]=Ext.DomQuery.compile(ss,"simple")}else{setupEscapes(ss)}var result=simpleCache[ss](els);return nonMatches?quickDiff(result,els):result},matchers:[{re:/^\.([\w\-\\]+)/,select:'n = byClassName(n, " {1} ");'},{re:/^\:([\w\-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/,select:'n = byPseudo(n, "{1}", "{2}");'},{re:/^(?:([\[\{])(?:@)?([\w\-]+)\s?(?:(=|.=)\s?['"]?(.*?)["']?)?[\]\}])/,select:'n = byAttribute(n, "{2}", "{4}", "{3}", "{1}");'},{re:/^#([\w\-\\]+)/,select:'n = byId(n, "{1}");'},{re:/^@([\w\-]+)/,select:'return {firstChild:{nodeValue:attrValue(n, "{1}")}};'}],operators:{"=":function(a,v){return a==v},"!=":function(a,v){return a!=v},"^=":function(a,v){return a&&a.substr(0,v.length)==v},"$=":function(a,v){return a&&a.substr(a.length-v.length)==v},"*=":function(a,v){return a&&a.indexOf(v)!==-1},"%=":function(a,v){return(a%v)==0},"|=":function(a,v){return a&&(a==v||a.substr(0,v.length+1)==v+"-")},"~=":function(a,v){return a&&(" "+a+" ").indexOf(" "+v+" ")!=-1}},pseudos:{"first-child":function(c){var r=[],ri=-1,n,i,ci;for(i=0;(ci=n=c[i]);i++){while((n=n.previousSibling)&&n.nodeType!=1){}if(!n){r[++ri]=ci}}return r},"last-child":function(c){var r=[],ri=-1,n,i,ci;for(i=0;(ci=n=c[i]);i++){while((n=n.nextSibling)&&n.nodeType!=1){}if(!n){r[++ri]=ci}}return r},"nth-child":function(c,a){var r=[],ri=-1,m=nthRe.exec(a=="even"&&"2n"||a=="odd"&&"2n+1"||!nthRe2.test(a)&&"n+"+a||a),f=(m[1]||1)-0,l=m[2]-0,i,n,j,cn,pn;for(i=0;n=c[i];i++){pn=n.parentNode;if(batch!=pn._batch){j=0;for(cn=pn.firstChild;cn;cn=cn.nextSibling){if(cn.nodeType==1){cn.nodeIndex=++j}}pn._batch=batch}if(f==1){if(l==0||n.nodeIndex==l){r[++ri]=n}}else{if((n.nodeIndex+l)%f==0){r[++ri]=n}}}return r},"only-child":function(c){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(!prev(ci)&&!next(ci)){r[++ri]=ci}}return r},empty:function(c){var r=[],ri=-1,i,ci,cns,j,cn,empty;for(i=0,ci;ci=c[i];i++){cns=ci.childNodes;j=0;empty=true;while(cn=cns[j]){++j;if(cn.nodeType==1||cn.nodeType==3){empty=false;break}}if(empty){r[++ri]=ci}}return r},contains:function(c,v){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if((ci.textContent||ci.innerText||ci.text||"").indexOf(v)!=-1){r[++ri]=ci}}return r},nodeValue:function(c,v){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(ci.firstChild&&ci.firstChild.nodeValue==v){r[++ri]=ci}}return r},checked:function(c){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(ci.checked==true){r[++ri]=ci}}return r},not:function(c,ss){return Ext.DomQuery.filter(c,ss,true)},any:function(c,selectors){var ss=selectors.split("|"),r=[],ri=-1,s,i,ci,j;for(i=0;ci=c[i];i++){for(j=0;s=ss[j];j++){if(Ext.DomQuery.is(ci,s)){r[++ri]=ci;break}}}return r},odd:function(c){return this["nth-child"](c,"odd")},even:function(c){return this["nth-child"](c,"even")},nth:function(c,a){return c[a-1]||[]},first:function(c){return c[0]||[]},last:function(c){return c[c.length-1]||[]},has:function(c,ss){var s=Ext.DomQuery.select,r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(s(ss,ci).length>0){r[++ri]=ci}}return r},next:function(c,ss){var is=Ext.DomQuery.is,r=[],ri=-1,i,ci,n;for(i=0;ci=c[i];i++){n=next(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r},prev:function(c,ss){var is=Ext.DomQuery.is,r=[],ri=-1,i,ci,n;for(i=0;ci=c[i];i++){n=prev(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r}}}}());Ext.query=Ext.DomQuery.select;(function(){var HIDDEN="hidden",DOC=document,VISIBILITY="visibility",DISPLAY="display",NONE="none",XMASKED=Ext.baseCSSPrefix+"masked",XMASKEDRELATIVE=Ext.baseCSSPrefix+"masked-relative",EXTELMASKMSG=Ext.baseCSSPrefix+"mask-msg",bodyRe=/^body/i,visFly,noBoxAdjust=Ext.isStrict?{select:1}:{input:1,select:1,textarea:1},isScrolled=function(c){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(ci.scrollTop>0||ci.scrollLeft>0){r[++ri]=ci}}return r},Element=Ext.define("Ext.dom.Element",{extend:"Ext.dom.AbstractElement",alternateClassName:["Ext.Element","Ext.core.Element"],addUnits:function(){return this.self.addUnits.apply(this.self,arguments)},focus:function(defer,dom){var me=this,scrollTop,body;dom=dom||me.dom;body=(dom.ownerDocument||DOC).body||DOC.body;try{if(Number(defer)){Ext.defer(me.focus,defer,me,[null,dom])}else{if(dom.offsetHeight>Element.getViewHeight()){scrollTop=body.scrollTop}dom.focus();if(scrollTop!==undefined){body.scrollTop=scrollTop}}}catch(e){}return me},blur:function(){try{this.dom.blur()}catch(e){}return this},isBorderBox:function(){var box=Ext.isBorderBox;if(box){box=!((this.dom.tagName||"").toLowerCase() in noBoxAdjust)}return box},hover:function(overFn,outFn,scope,options){var me=this;me.on("mouseenter",overFn,scope||me.dom,options);me.on("mouseleave",outFn,scope||me.dom,options);return me},getAttributeNS:function(ns,name){return this.getAttribute(name,ns)},getAttribute:(Ext.isIE&&!(Ext.isIE9&&DOC.documentMode===9))?function(name,ns){var d=this.dom,type;if(ns){type=typeof d[ns+":"+name];if(type!="undefined"&&type!="unknown"){return d[ns+":"+name]||null}return null}if(name==="for"){name="htmlFor"}return d[name]||null}:function(name,ns){var d=this.dom;if(ns){return d.getAttributeNS(ns,name)||d.getAttribute(ns+":"+name)}return d.getAttribute(name)||d[name]||null},cacheScrollValues:function(){var me=this,scrolledDescendants,el,i,scrollValues=[],result=function(){for(i=0;i<scrolledDescendants.length;i++){el=scrolledDescendants[i];el.scrollLeft=scrollValues[i][0];el.scrollTop=scrollValues[i][1]}};if(!Ext.DomQuery.pseudos.isScrolled){Ext.DomQuery.pseudos.isScrolled=isScrolled}scrolledDescendants=me.query(":isScrolled");for(i=0;i<scrolledDescendants.length;i++){el=scrolledDescendants[i];scrollValues[i]=[el.scrollLeft,el.scrollTop]}return result},autoBoxAdjust:true,isVisible:function(deep){var me=this,dom=me.dom,stopNode=dom.ownerDocument.documentElement;if(!visFly){visFly=new Element.Fly()}while(dom!==stopNode){if(!dom||dom.nodeType===11||(visFly.attach(dom)).isStyle(VISIBILITY,HIDDEN)||visFly.isStyle(DISPLAY,NONE)){return false}if(!deep){break}dom=dom.parentNode}return true},isDisplayed:function(){return !this.isStyle(DISPLAY,NONE)},enableDisplayMode:function(display){var me=this;me.setVisibilityMode(Element.DISPLAY);if(!Ext.isEmpty(display)){(me.$cache||me.getCache()).data.originalDisplay=display}return me},mask:function(msg,msgCls,elHeight){var me=this,dom=me.dom,setExpression=dom.style.setExpression,data=(me.$cache||me.getCache()).data,maskEl=data.maskEl,maskMsg=data.maskMsg;if(!(bodyRe.test(dom.tagName)&&me.getStyle("position")=="static")){me.addCls(XMASKEDRELATIVE)}if(maskEl){maskEl.remove()}if(maskMsg){maskMsg.remove()}Ext.DomHelper.append(dom,[{cls:Ext.baseCSSPrefix+"mask"},{cls:msgCls?EXTELMASKMSG+" "+msgCls:EXTELMASKMSG,cn:{tag:"div",html:msg||""}}]);maskMsg=Ext.get(dom.lastChild);maskEl=Ext.get(maskMsg.dom.previousSibling);data.maskMsg=maskMsg;data.maskEl=maskEl;me.addCls(XMASKED);maskEl.setDisplayed(true);if(typeof msg=="string"){maskMsg.setDisplayed(true);maskMsg.center(me)}else{maskMsg.setDisplayed(false)}if(!Ext.supports.IncludePaddingInWidthCalculation&&setExpression){try{maskEl.dom.style.setExpression("width",'this.parentNode.clientWidth + "px"')}catch(e){}}if(!Ext.supports.IncludePaddingInHeightCalculation&&setExpression){try{maskEl.dom.style.setExpression("height","this.parentNode."+(dom==DOC.body?"scrollHeight":"offsetHeight")+' + "px"')}catch(e){}}else{if(Ext.isIE&&!(Ext.isIE7&&Ext.isStrict)&&me.getStyle("height")=="auto"){maskEl.setSize(undefined,elHeight||me.getHeight())}}return maskEl},unmask:function(){var me=this,data=(me.$cache||me.getCache()).data,maskEl=data.maskEl,maskMsg=data.maskMsg,style;if(maskEl){style=maskEl.dom.style;if(style.clearExpression){style.clearExpression("width");style.clearExpression("height")}if(maskEl){maskEl.remove();delete data.maskEl}if(maskMsg){maskMsg.remove();delete data.maskMsg}me.removeCls([XMASKED,XMASKEDRELATIVE])}},isMasked:function(){var me=this,data=(me.$cache||me.getCache()).data,maskEl=data.maskEl,maskMsg=data.maskMsg,hasMask=false;if(maskEl&&maskEl.isVisible()){if(maskMsg){maskMsg.center(me)}hasMask=true}return hasMask},createShim:function(){var el=DOC.createElement("iframe"),shim;el.frameBorder="0";el.className=Ext.baseCSSPrefix+"shim";el.src=Ext.SSL_SECURE_URL;shim=Ext.get(this.dom.parentNode.insertBefore(el,this.dom));shim.autoBoxAdjust=false;return shim},addKeyListener:function(key,fn,scope){var config;if(typeof key!="object"||Ext.isArray(key)){config={target:this,key:key,fn:fn,scope:scope}}else{config={target:this,key:key.key,shift:key.shift,ctrl:key.ctrl,alt:key.alt,fn:fn,scope:scope}}return new Ext.util.KeyMap(config)},addKeyMap:function(config){return new Ext.util.KeyMap(Ext.apply({target:this},config))},on:function(eventName,fn,scope,options){Ext.EventManager.on(this,eventName,fn,scope||this,options);return this},un:function(eventName,fn,scope){Ext.EventManager.un(this,eventName,fn,scope||this);return this},removeAllListeners:function(){Ext.EventManager.removeAll(this);return this},purgeAllListeners:function(){Ext.EventManager.purgeElement(this);return this}},function(){var EC=Ext.cache,El=this,AbstractElement=Ext.dom.AbstractElement,focusRe=/a|button|embed|iframe|img|input|object|select|textarea/i,nonSpaceRe=/\S/,scriptTagRe=/(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig,replaceScriptTagRe=/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,srcRe=/\ssrc=([\'\"])(.*?)\1/i,typeRe=/\stype=([\'\"])(.*?)\1/i,useDocForId=!(Ext.isIE6||Ext.isIE7||Ext.isIE8);El.boxMarkup='<div class="{0}-tl"><div class="{0}-tr"><div class="{0}-tc"></div></div></div><div class="{0}-ml"><div class="{0}-mr"><div class="{0}-mc"></div></div></div><div class="{0}-bl"><div class="{0}-br"><div class="{0}-bc"></div></div></div>';function garbageCollect(){if(!Ext.enableGarbageCollector){clearInterval(El.collectorThreadId)}else{var eid,d,o,t;for(eid in EC){if(!EC.hasOwnProperty(eid)){continue}o=EC[eid];if(o.skipGarbageCollection){continue}d=o.dom;if(!d.parentNode||(!d.offsetParent&&!Ext.getElementById(eid))){if(d&&Ext.enableListenerCollection){Ext.EventManager.removeAll(d)}delete EC[eid]}}if(Ext.isIE){t={};for(eid in EC){if(!EC.hasOwnProperty(eid)){continue}t[eid]=EC[eid]}EC=Ext.cache=t}}}El.collectorThreadId=setInterval(garbageCollect,30000);El.addMethods({monitorMouseLeave:function(delay,handler,scope){var me=this,timer,listeners={mouseleave:function(e){timer=setTimeout(Ext.Function.bind(handler,scope||me,[e]),delay)},mouseenter:function(){clearTimeout(timer)},freezeEvent:true};me.on(listeners);return listeners},swallowEvent:function(eventName,preventDefault){var me=this,e,eLen;function fn(e){e.stopPropagation();if(preventDefault){e.preventDefault()}}if(Ext.isArray(eventName)){eLen=eventName.length;for(e=0;e<eLen;e++){me.on(eventName[e],fn)}return me}me.on(eventName,fn);return me},relayEvent:function(eventName,observable){this.on(eventName,function(e){observable.fireEvent(eventName,e)})},clean:function(forceReclean){var me=this,dom=me.dom,data=(me.$cache||me.getCache()).data,n=dom.firstChild,ni=-1,nx;if(data.isCleaned&&forceReclean!==true){return me}while(n){nx=n.nextSibling;if(n.nodeType==3){if(!(nonSpaceRe.test(n.nodeValue))){dom.removeChild(n)}else{if(nx&&nx.nodeType==3){n.appendData(Ext.String.trim(nx.data));dom.removeChild(nx);nx=n.nextSibling;n.nodeIndex=++ni}}}else{Ext.fly(n).clean();n.nodeIndex=++ni}n=nx}data.isCleaned=true;return me},load:function(options){this.getLoader().load(options);return this},getLoader:function(){var me=this,data=(me.$cache||me.getCache()).data,loader=data.loader;if(!loader){data.loader=loader=new Ext.ElementLoader({target:me})}return loader},syncContent:function(source){source=Ext.getDom(source);var me=this,sourceNodes=source.childNodes,sourceLen=sourceNodes.length,dest=me.dom,destNodes=dest.childNodes,destLen=destNodes.length,i,destNode,sourceNode,nodeType;dest.style.cssText=source.style.cssText;dest.className=source.className;if(sourceLen!==destLen){source.innerHTML=dest.innerHTML;return}for(i=0;i<sourceLen;i++){sourceNode=sourceNodes[i];destNode=destNodes[i];nodeType=sourceNode.nodeType;if(nodeType!==destNode.nodeType||(nodeType===1&&sourceNode.tagName!==destNode.tagName)){dest.innerHTML=source.innerHTML;return}if(nodeType===3){destNode.data=sourceNode.data}else{if(sourceNode.id&&destNode.id!==sourceNode.id){destNode.id=sourceNode.id}destNode.style.cssText=sourceNode.style.cssText;destNode.className=sourceNode.className;Ext.fly(destNode).syncContent(sourceNode)}}},update:function(html,loadScripts,callback){var me=this,id,dom,interval;if(!me.dom){return me}html=html||"";dom=me.dom;if(loadScripts!==true){dom.innerHTML=html;Ext.callback(callback,me);return me}id=Ext.id();html+='<span id="'+id+'"></span>';interval=setInterval(function(){var hd,match,attrs,srcMatch,typeMatch,el,s;if(!(el=DOC.getElementById(id))){return false}clearInterval(interval);Ext.removeNode(el);hd=Ext.getHead().dom;while((match=scriptTagRe.exec(html))){attrs=match[1];srcMatch=attrs?attrs.match(srcRe):false;if(srcMatch&&srcMatch[2]){s=DOC.createElement("script");s.src=srcMatch[2];typeMatch=attrs.match(typeRe);if(typeMatch&&typeMatch[2]){s.type=typeMatch[2]}hd.appendChild(s)}else{if(match[2]&&match[2].length>0){if(window.execScript){window.execScript(match[2])}else{window.eval(match[2])}}}}Ext.callback(callback,me)},20);dom.innerHTML=html.replace(replaceScriptTagRe,"");return me},removeAllListeners:function(){this.removeAnchor();Ext.EventManager.removeAll(this.dom);return this},createProxy:function(config,renderTo,matchBox){config=(typeof config=="object")?config:{tag:"div",cls:config};var me=this,proxy=renderTo?Ext.DomHelper.append(renderTo,config,true):Ext.DomHelper.insertBefore(me.dom,config,true);proxy.setVisibilityMode(Element.DISPLAY);proxy.hide();if(matchBox&&me.setBox&&me.getBox){proxy.setBox(me.getBox())}return proxy},getScopeParent:function(){var parent=this.dom.parentNode;if(Ext.scopeResetCSS){parent=parent.parentNode;if(!Ext.supports.CSS3LinearGradient||!Ext.supports.CSS3BorderRadius){parent=parent.parentNode}}return parent},needsTabIndex:function(){if(this.dom){if((this.dom.nodeName==="a")&&(!this.dom.href)){return true}return !focusRe.test(this.dom.nodeName)}},focusable:function(){var dom=this.dom,nodeName=dom.nodeName,canFocus=false;if(!dom.disabled){if(focusRe.test(nodeName)){if((nodeName!=="a")||dom.href){canFocus=true}}else{canFocus=!isNaN(dom.tabIndex)}}return canFocus&&this.isVisible(true)}});if(Ext.isIE){El.prototype.getById=function(id,asDom){var dom=this.dom,cacheItem,el,ret;if(dom){el=(useDocForId&&DOC.getElementById(id))||dom.all[id];if(el){if(asDom){ret=el}else{cacheItem=EC[id];if(cacheItem&&cacheItem.el){ret=Ext.updateCacheEntry(cacheItem,el).el}else{ret=new Element(el)}}return ret}}return asDom?Ext.getDom(id):El.get(id)}}El.createAlias({addListener:"on",removeListener:"un",clearListeners:"removeAllListeners"});El.Fly=AbstractElement.Fly=new Ext.Class({extend:El,constructor:function(dom){this.dom=dom},attach:AbstractElement.Fly.prototype.attach});if(Ext.isIE){Ext.getElementById=function(id){var el=DOC.getElementById(id),detachedBodyEl;if(!el&&(detachedBodyEl=AbstractElement.detachedBodyEl)){el=detachedBodyEl.dom.all[id]}return el}}else{if(!DOC.querySelector){Ext.getDetachedBody=Ext.getBody;Ext.getElementById=function(id){return DOC.getElementById(id)}}}})}());Ext.dom.Element.override((function(){var d=document,c=window,a=/^([a-z]+)-([a-z]+)(\?)?$/,b=Math.round;return{getAnchorXY:function(j,o,h){j=(j||"tl").toLowerCase();h=h||{};var m=this,i=m.dom==d.body||m.dom==d,e=h.width||i?Ext.dom.Element.getViewWidth():m.getWidth(),g=h.height||i?Ext.dom.Element.getViewHeight():m.getHeight(),q,n=m.getXY(),p=m.getScroll(),l=i?p.left:!o?n[0]:0,k=i?p.top:!o?n[1]:0;switch(j){case"tl":q=[0,0];break;case"bl":q=[0,g];break;case"tr":q=[e,0];break;case"c":q=[b(e*0.5),b(g*0.5)];break;case"t":q=[b(e*0.5),0];break;case"l":q=[0,b(g*0.5)];break;case"r":q=[e,b(g*0.5)];break;case"b":q=[b(e*0.5),g];break;case"br":q=[e,g]}return[q[0]+l,q[1]+k]},getAlignToXY:function(m,G,j){m=Ext.get(m);if(!m||!m.dom){}j=j||[0,0];G=(!G||G=="?"?"tl-bl?":(!(/-/).test(G)&&G!==""?"tl-"+G:G||"tl-bl")).toLowerCase();var H=this,l,w,q,o,k,z,A,E=Ext.dom.Element.getViewWidth()-10,i=Ext.dom.Element.getViewHeight()-10,g,h,n,p,u,v,F=d.documentElement,s=d.body,D=(F.scrollLeft||s.scrollLeft||0),B=(F.scrollTop||s.scrollTop||0),C,t,r,e=G.match(a);t=e[1];r=e[2];C=!!e[3];l=H.getAnchorXY(t,true);w=m.getAnchorXY(r,false);q=w[0]-l[0]+j[0];o=w[1]-l[1]+j[1];if(C){k=H.getWidth();z=H.getHeight();A=m.getRegion();g=t.charAt(0);h=t.charAt(t.length-1);n=r.charAt(0);p=r.charAt(r.length-1);u=((g=="t"&&n=="b")||(g=="b"&&n=="t"));v=((h=="r"&&p=="l")||(h=="l"&&p=="r"));if(q+k>E+D){q=v?A.left-k:E+D-k}if(q<D){q=v?A.right:D}if(o+z>i+B){o=u?A.top-z:i+B-z}if(o<B){o=u?A.bottom:B}}return[q,o]},anchorTo:function(g,l,h,e,o,p){var m=this,j=m.dom,n=!Ext.isEmpty(o),i=function(){Ext.fly(j).alignTo(g,l,h,e);Ext.callback(p,Ext.fly(j))},k=this.getAnchor();this.removeAnchor();Ext.apply(k,{fn:i,scroll:n});Ext.EventManager.onWindowResize(i,null);if(n){Ext.EventManager.on(c,"scroll",i,null,{buffer:!isNaN(o)?o:50})}i.call(m);return m},removeAnchor:function(){var g=this,e=this.getAnchor();if(e&&e.fn){Ext.EventManager.removeResizeListener(e.fn);if(e.scroll){Ext.EventManager.un(c,"scroll",e.fn)}delete e.fn}return g},getAlignVector:function(h,g,j){var i=this,e=i.getXY(),k=i.getAlignToXY(h,g,j);h=Ext.get(h);k[0]-=e[0];k[1]-=e[1];return k},alignTo:function(h,e,j,g){var i=this;return i.setXY(i.getAlignToXY(h,e,j),i.anim&&!!g?i.anim(g):false)},getConstrainVector:function(i,g){if(!(i instanceof Ext.util.Region)){i=Ext.get(i).getViewRegion()}var k=this.getRegion(),e=[0,0],j=(this.shadow&&!this.shadowDisabled)?this.shadow.getShadowSize():undefined,h=false;if(g){k.translateBy(g[0]-k.x,g[1]-k.y)}if(j){i.adjust(j[0],-j[1],-j[2],j[3])}if(k.right>i.right){h=true;e[0]=(i.right-k.right)}if(k.left+e[0]<i.left){h=true;e[0]=(i.left-k.left)}if(k.bottom>i.bottom){h=true;e[1]=(i.bottom-k.bottom)}if(k.top+e[1]<i.top){h=true;e[1]=(i.top-k.top)}return h?e:false},getCenterXY:function(){return this.getAlignToXY(d,"c-c")},center:function(e){return this.alignTo(e||d,"c-c")}}}()));Ext.dom.Element.override({animate:function(b){var d=this,c,e,a=d.dom.id||Ext.id(d.dom);if(!Ext.fx.Manager.hasFxBlock(a)){if(b.listeners){c=b.listeners;delete b.listeners}if(b.internalListeners){b.listeners=b.internalListeners;delete b.internalListeners}e=new Ext.fx.Anim(d.anim(b));if(c){e.on(c)}Ext.fx.Manager.queueFx(e)}return d},anim:function(a){if(!Ext.isObject(a)){return(a)?{}:false}var b=this,c=a.duration||Ext.fx.Anim.prototype.duration,e=a.easing||"ease",d;if(a.stopAnimation){b.stopAnimation()}Ext.applyIf(a,Ext.fx.Manager.getFxDefaults(b.id));Ext.fx.Manager.setFxDefaults(b.id,{delay:0});d={target:b.dom,remove:a.remove,alternate:a.alternate||false,duration:c,easing:e,callback:a.callback,listeners:a.listeners,iterations:a.iterations||1,scope:a.scope,block:a.block,concurrent:a.concurrent,delay:a.delay||0,paused:true,keyframes:a.keyframes,from:a.from||{},to:Ext.apply({},a)};Ext.apply(d.to,a.to);delete d.to.to;delete d.to.from;delete d.to.remove;delete d.to.alternate;delete d.to.keyframes;delete d.to.iterations;delete d.to.listeners;delete d.to.target;delete d.to.paused;delete d.to.callback;delete d.to.scope;delete d.to.duration;delete d.to.easing;delete d.to.concurrent;delete d.to.block;delete d.to.stopAnimation;delete d.to.delay;return d},slideIn:function(c,b,d){var g=this,j=g.dom.style,i,a,e,h;c=c||"t";b=b||{};i=function(){var n=this,m=b.listeners,o,k,p,l;if(!d){g.fixDisplay()}o=g.getBox();if((c=="t"||c=="b")&&o.height===0){o.height=g.dom.scrollHeight}else{if((c=="l"||c=="r")&&o.width===0){o.width=g.dom.scrollWidth}}k=g.getStyles("width","height","left","right","top","bottom","position","z-index",true);g.setSize(o.width,o.height);if(b.preserveScroll){e=g.cacheScrollValues()}l=g.wrap({id:Ext.id()+"-anim-wrap-for-"+g.id,style:{visibility:d?"visible":"hidden"}});h=l.dom.parentNode;l.setPositioning(g.getPositioning());if(l.isStyle("position","static")){l.position("relative")}g.clearPositioning("auto");l.clip();if(e){e()}g.setStyle({visibility:"",position:"absolute"});if(d){l.setSize(o.width,o.height)}switch(c){case"t":p={from:{width:o.width+"px",height:"0px"},to:{width:o.width+"px",height:o.height+"px"}};j.bottom="0px";break;case"l":p={from:{width:"0px",height:o.height+"px"},to:{width:o.width+"px",height:o.height+"px"}};j.right="0px";break;case"r":p={from:{x:o.x+o.width,width:"0px",height:o.height+"px"},to:{x:o.x,width:o.width+"px",height:o.height+"px"}};break;case"b":p={from:{y:o.y+o.height,width:o.width+"px",height:"0px"},to:{y:o.y,width:o.width+"px",height:o.height+"px"}};break;case"tl":p={from:{x:o.x,y:o.y,width:"0px",height:"0px"},to:{width:o.width+"px",height:o.height+"px"}};j.bottom="0px";j.right="0px";break;case"bl":p={from:{y:o.y+o.height,width:"0px",height:"0px"},to:{y:o.y,width:o.width+"px",height:o.height+"px"}};j.bottom="0px";break;case"br":p={from:{x:o.x+o.width,y:o.y+o.height,width:"0px",height:"0px"},to:{x:o.x,y:o.y,width:o.width+"px",height:o.height+"px"}};break;case"tr":p={from:{x:o.x+o.width,width:"0px",height:"0px"},to:{x:o.x,width:o.width+"px",height:o.height+"px"}};j.right="0px";break}l.show();a=Ext.apply({},b);delete a.listeners;a=new Ext.fx.Anim(Ext.applyIf(a,{target:l,duration:500,easing:"ease-out",from:d?p.to:p.from,to:d?p.from:p.to}));a.on("afteranimate",function(){g.setStyle(k);if(d){if(b.useDisplay){g.setDisplayed(false)}else{g.hide()}}if(l.dom){if(l.dom.parentNode){l.dom.parentNode.insertBefore(g.dom,l.dom)}else{h.appendChild(g.dom)}l.remove()}if(e){e()}n.end()});if(m){a.on(m)}};g.animate({duration:b.duration?Math.max(b.duration,500)*2:1000,listeners:{beforeanimate:i}});return g},slideOut:function(a,b){return this.slideIn(a,b,true)},puff:function(e){var d=this,b,c=d.getBox(),a=d.getStyles("width","height","left","right","top","bottom","position","z-index","font-size","opacity",true);e=Ext.applyIf(e||{},{easing:"ease-out",duration:500,useDisplay:false});b=function(){d.clearOpacity();d.show();this.to={width:c.width*2,height:c.height*2,x:c.x-(c.width/2),y:c.y-(c.height/2),opacity:0,fontSize:"200%"};this.on("afteranimate",function(){if(d.dom){if(e.useDisplay){d.setDisplayed(false)}else{d.hide()}d.setStyle(a);e.callback.call(e.scope)}})};d.animate({duration:e.duration,easing:e.easing,listeners:{beforeanimate:{fn:b}}});return d},switchOff:function(c){var b=this,a;c=Ext.applyIf(c||{},{easing:"ease-in",duration:500,remove:false,useDisplay:false});a=function(){var h=this,g=b.getSize(),i=b.getXY(),e,d;b.clearOpacity();b.clip();d=b.getPositioning();e=new Ext.fx.Animator({target:b,duration:c.duration,easing:c.easing,keyframes:{33:{opacity:0.3},66:{height:1,y:i[1]+g.height/2},100:{width:1,x:i[0]+g.width/2}}});e.on("afteranimate",function(){if(c.useDisplay){b.setDisplayed(false)}else{b.hide()}b.clearOpacity();b.setPositioning(d);b.setSize(g);h.end()})};b.animate({duration:(Math.max(c.duration,500)*2),listeners:{beforeanimate:{fn:a}}});return b},frame:function(a,d,e){var c=this,b;a=a||"#C3DAF9";d=d||1;e=e||{};b=function(){c.show();var i=this,j=c.getBox(),h=Ext.getBody().createChild({id:c.id+"-anim-proxy",style:{position:"absolute","pointer-events":"none","z-index":35000,border:"0px solid "+a}}),g;g=new Ext.fx.Anim({target:h,duration:e.duration||1000,iterations:d,from:{top:j.y,left:j.x,borderWidth:0,opacity:1,height:j.height,width:j.width},to:{top:j.y-20,left:j.x-20,borderWidth:10,opacity:0,height:j.height+40,width:j.width+40}});g.on("afteranimate",function(){h.remove();i.end()})};c.animate({duration:(Math.max(e.duration,500)*2)||2000,listeners:{beforeanimate:{fn:b}}});return c},ghost:function(a,d){var c=this,b;a=a||"b";b=function(){var h=c.getWidth(),g=c.getHeight(),i=c.getXY(),e=c.getPositioning(),j={opacity:0};switch(a){case"t":j.y=i[1]-g;break;case"l":j.x=i[0]-h;break;case"r":j.x=i[0]+h;break;case"b":j.y=i[1]+g;break;case"tl":j.x=i[0]-h;j.y=i[1]-g;break;case"bl":j.x=i[0]-h;j.y=i[1]+g;break;case"br":j.x=i[0]+h;j.y=i[1]+g;break;case"tr":j.x=i[0]+h;j.y=i[1]-g;break}this.to=j;this.on("afteranimate",function(){if(c.dom){c.hide();c.clearOpacity();c.setPositioning(e)}})};c.animate(Ext.applyIf(d||{},{duration:500,easing:"ease-out",listeners:{beforeanimate:{fn:b}}}));return c},highlight:function(d,b){var i=this,e=i.dom,k={},h,l,g,c,a,j;b=b||{};c=b.listeners||{};g=b.attr||"backgroundColor";k[g]=d||"ffff9c";if(!b.to){l={};l[g]=b.endColor||i.getColor(g,"ffffff","")}else{l=b.to}b.listeners=Ext.apply(Ext.apply({},c),{beforeanimate:function(){h=e.style[g];i.clearOpacity();i.show();a=c.beforeanimate;if(a){j=a.fn||a;return j.apply(a.scope||c.scope||window,arguments)}},afteranimate:function(){if(e){e.style[g]=h}a=c.afteranimate;if(a){j=a.fn||a;j.apply(a.scope||c.scope||window,arguments)}}});i.animate(Ext.apply({},b,{duration:1000,easing:"ease-in",from:k,to:l}));return i},pause:function(a){var b=this;Ext.fx.Manager.setFxDefaults(b.id,{delay:a});return b},fadeIn:function(b){var a=this;a.animate(Ext.apply({},b,{opacity:1,internalListeners:{beforeanimate:function(c){if(a.isStyle("display","none")){a.setDisplayed("")}else{a.show()}}}}));return this},fadeOut:function(b){var a=this;b=Ext.apply({opacity:0,internalListeners:{afteranimate:function(c){var d=a.dom;if(d&&c.to.opacity===0){if(b.useDisplay){a.setDisplayed(false)}else{a.hide()}}}}},b);a.animate(b);return a},scale:function(a,b,c){this.animate(Ext.apply({},c,{width:a,height:b}));return this},shift:function(a){this.animate(a);return this}});Ext.dom.Element.override({initDD:function(c,b,d){var a=new Ext.dd.DD(Ext.id(this.dom),c,b);return Ext.apply(a,d)},initDDProxy:function(c,b,d){var a=new Ext.dd.DDProxy(Ext.id(this.dom),c,b);return Ext.apply(a,d)},initDDTarget:function(c,b,d){var a=new Ext.dd.DDTarget(Ext.id(this.dom),c,b);return Ext.apply(a,d)}});(function(){var b=Ext.dom.Element,i="visibility",g="display",n="none",e="hidden",m="visible",o="offsets",j="asclass",a="nosize",c="originalDisplay",d="visibilityMode",h="isVisible",l=Ext.baseCSSPrefix+"hide-offsets",k=function(q){var r=(q.$cache||q.getCache()).data,s=r[c];if(s===undefined){r[c]=s=""}return s},p=function(r){var s=(r.$cache||r.getCache()).data,q=s[d];if(q===undefined){s[d]=q=b.VISIBILITY}return q};b.override({originalDisplay:"",visibilityMode:1,setVisible:function(u,q){var s=this,t=s.dom,r=p(s);if(typeof q=="string"){switch(q){case g:r=b.DISPLAY;break;case i:r=b.VISIBILITY;break;case o:r=b.OFFSETS;break;case a:case j:r=b.ASCLASS;break}s.setVisibilityMode(r);q=false}if(!q||!s.anim){if(r==b.DISPLAY){return s.setDisplayed(u)}else{if(r==b.OFFSETS){s[u?"removeCls":"addCls"](l)}else{if(r==b.VISIBILITY){s.fixDisplay();t.style.visibility=u?"":e}else{if(r==b.ASCLASS){s[u?"removeCls":"addCls"](s.visibilityCls||b.visibilityCls)}}}}}else{if(u){s.setOpacity(0.01);s.setVisible(true)}if(!Ext.isObject(q)){q={duration:350,easing:"ease-in"}}s.animate(Ext.applyIf({callback:function(){if(!u){s.setVisible(false).setOpacity(1)}},to:{opacity:(u)?1:0}},q))}(s.$cache||s.getCache()).data[h]=u;return s},hasMetrics:function(){var q=p(this);return this.isVisible()||(q==b.OFFSETS)||(q==b.VISIBILITY)},toggle:function(q){var r=this;r.setVisible(!r.isVisible(),r.anim(q));return r},setDisplayed:function(q){if(typeof q=="boolean"){q=q?k(this):n}this.setStyle(g,q);return this},fixDisplay:function(){var q=this;if(q.isStyle(g,n)){q.setStyle(i,e);q.setStyle(g,k(q));if(q.isStyle(g,n)){q.setStyle(g,"block")}}},hide:function(q){if(typeof q=="string"){this.setVisible(false,q);return this}this.setVisible(false,this.anim(q));return this},show:function(q){if(typeof q=="string"){this.setVisible(true,q);return this}this.setVisible(true,this.anim(q));return this}})}());(function(){var r=Ext.dom.Element,n="left",k="right",q="top",h="bottom",o="position",j="static",x="relative",p="auto",v="z-index",u="BODY",c="padding",t="border",s="-left",m="-right",a="-top",l="-bottom",g="-width",e={l:t+s+g,r:t+m+g,t:t+a+g,b:t+l+g},d={l:c+s,r:c+m,t:c+a,b:c+l},w=[d.l,d.r,d.t,d.b],b=[e.l,e.r,e.t,e.b],i=["position","top","left"];r.override({getX:function(){return r.getX(this.dom)},getY:function(){return r.getY(this.dom)},getXY:function(){return r.getXY(this.dom)},getOffsetsTo:function(y){var A=this.getXY(),z=Ext.fly(y,"_internal").getXY();return[A[0]-z[0],A[1]-z[1]]},setX:function(y,z){return this.setXY([y,this.getY()],z)},setY:function(A,z){return this.setXY([this.getX(),A],z)},setLeft:function(y){this.setStyle(n,this.addUnits(y));return this},setTop:function(y){this.setStyle(q,this.addUnits(y));return this},setRight:function(y){this.setStyle(k,this.addUnits(y));return this},setBottom:function(y){this.setStyle(h,this.addUnits(y));return this},setXY:function(A,y){var z=this;if(!y||!z.anim){r.setXY(z.dom,A)}else{if(!Ext.isObject(y)){y={}}z.animate(Ext.applyIf({to:{x:A[0],y:A[1]}},y))}return z},pxRe:/^\d+(?:\.\d*)?px$/i,getLocalX:function(){var A=this,z,y=A.getStyle(n);if(!y||y===p){return 0}if(y&&A.pxRe.test(y)){return parseFloat(y)}y=A.getX();z=A.dom.offsetParent;if(z){y-=Ext.fly(z).getX()}return y},getLocalY:function(){var A=this,z,B=A.getStyle(q);if(!B||B===p){return 0}if(B&&A.pxRe.test(B)){return parseFloat(B)}B=A.getY();z=A.dom.offsetParent;if(z){B-=Ext.fly(z).getY()}return B},getLeft:function(y){return y?this.getLocalX():this.getX()},getRight:function(y){return(y?this.getLocalX():this.getX())+this.getWidth()},getTop:function(y){return y?this.getLocalY():this.getY()},getBottom:function(y){return(y?this.getLocalY():this.getY())+this.getHeight()},translatePoints:function(z,G){var B=this,A=B.getStyle(i),C=A.position=="relative",F=parseFloat(A.left),E=parseFloat(A.top),D=B.getXY();if(Ext.isArray(z)){G=z[1];z=z[0]}if(isNaN(F)){F=C?0:B.dom.offsetLeft}if(isNaN(E)){E=C?0:B.dom.offsetTop}F=(typeof z=="number")?z-D[0]+F:undefined;E=(typeof G=="number")?G-D[1]+E:undefined;return{left:F,top:E}},setBox:function(C,D,z){var B=this,y=C.width,A=C.height;if((D&&!B.autoBoxAdjust)&&!B.isBorderBox()){y-=(B.getBorderWidth("lr")+B.getPadding("lr"));A-=(B.getBorderWidth("tb")+B.getPadding("tb"))}B.setBounds(C.x,C.y,y,A,z);return B},getBox:function(D,I){var F=this,M,z,H,C,K,A,y,L,G,J,B,E;if(!I){M=F.getXY()}else{M=F.getStyle([n,q]);M=[parseFloat(M.left)||0,parseFloat(M.top)||0]}J=F.getWidth();B=F.getHeight();if(!D){E={x:M[0],y:M[1],0:M[0],1:M[1],width:J,height:B}}else{C=F.getStyle(w);K=F.getStyle(b);A=(parseFloat(K[e.l])||0)+(parseFloat(C[d.l])||0);y=(parseFloat(K[e.r])||0)+(parseFloat(C[d.r])||0);L=(parseFloat(K[e.t])||0)+(parseFloat(C[d.t])||0);G=(parseFloat(K[e.b])||0)+(parseFloat(C[d.b])||0);E={x:M[0]+A,y:M[1]+L,0:M[0]+A,1:M[1]+L,width:J-(A+y),height:B-(L+G)}}E.right=E.x+E.width;E.bottom=E.y+E.height;return E},getPageBox:function(B){var D=this,z=D.dom,F=z.nodeName==u,G=F?Ext.dom.AbstractElement.getViewWidth():z.offsetWidth,C=F?Ext.dom.AbstractElement.getViewHeight():z.offsetHeight,I=D.getXY(),H=I[1],y=I[0]+G,E=I[1]+C,A=I[0];if(B){return new Ext.util.Region(H,y,E,A)}else{return{left:A,top:H,width:G,height:C,right:y,bottom:E}}},setLocation:function(z,B,A){return this.setXY([z,B],A)},moveTo:function(z,B,A){return this.setXY([z,B],A)},position:function(D,C,z,B){var A=this;if(!D&&A.isStyle(o,j)){A.setStyle(o,x)}else{if(D){A.setStyle(o,D)}}if(C){A.setStyle(v,C)}if(z||B){A.setXY([z||false,B||false])}},clearPositioning:function(y){y=y||"";this.setStyle({left:y,right:y,top:y,bottom:y,"z-index":"",position:j});return this},getPositioning:function(){var y=this.getStyle([n,q,o,k,h,v]);y[k]=y[n]?"":y[k];y[h]=y[q]?"":y[h];return y},setPositioning:function(y){var A=this,z=A.dom.style;A.setStyle(y);if(y.right==p){z.right=""}if(y.bottom==p){z.bottom=""}return A},move:function(H,A,B){var E=this,K=E.getXY(),I=K[0],G=K[1],C=[I-A,G],J=[I+A,G],F=[I,G-A],z=[I,G+A],D={l:C,left:C,r:J,right:J,t:F,top:F,up:F,b:z,bottom:z,down:z};H=H.toLowerCase();E.moveTo(D[H][0],D[H][1],B)},setLeftTop:function(A,z){var y=this.dom.style;y.left=r.addUnits(A);y.top=r.addUnits(z);return this},getRegion:function(){return this.getPageBox(true)},getViewRegion:function(){var C=this,A=C.dom.nodeName==u,z,F,E,D,B,y;if(A){z=C.getScroll();D=z.left;E=z.top;B=Ext.dom.AbstractElement.getViewportWidth();y=Ext.dom.AbstractElement.getViewportHeight()}else{F=C.getXY();D=F[0]+C.getBorderWidth("l")+C.getPadding("l");E=F[1]+C.getBorderWidth("t")+C.getPadding("t");B=C.getWidth(true);y=C.getHeight(true)}return new Ext.util.Region(E,D+B-1,E+y-1,D)},setBounds:function(A,E,C,z,B){var D=this;if(!B||!D.anim){D.setSize(C,z);D.setLocation(A,E)}else{if(!Ext.isObject(B)){B={}}D.animate(Ext.applyIf({to:{x:A,y:E,width:D.adjustWidth(C),height:D.adjustHeight(z)}},B))}return D},setRegion:function(z,y){return this.setBounds(z.left,z.top,z.right-z.left,z.bottom-z.top,y)}})}());Ext.dom.Element.override({isScrollable:function(){var a=this.dom;return a.scrollHeight>a.clientHeight||a.scrollWidth>a.clientWidth},getScroll:function(){var i=this.dom,h=document,a=h.body,c=h.documentElement,b,g,e;if(i==h||i==a){if(Ext.isIE&&Ext.isStrict){b=c.scrollLeft;g=c.scrollTop}else{b=window.pageXOffset;g=window.pageYOffset}e={left:b||(a?a.scrollLeft:0),top:g||(a?a.scrollTop:0)}}else{e={left:i.scrollLeft,top:i.scrollTop}}return e},scrollBy:function(b,a,c){var d=this,e=d.dom;if(b.length){c=a;a=b[1];b=b[0]}else{if(typeof b!="number"){c=a;a=b.y;b=b.x}}if(b){d.scrollTo("left",Math.max(Math.min(e.scrollLeft+b,e.scrollWidth-e.clientWidth),0),c)}if(a){d.scrollTo("top",Math.max(Math.min(e.scrollTop+a,e.scrollHeight-e.clientHeight),0),c)}return d},scrollTo:function(c,e,a){var g=/top/i.test(c),d=this,h=d.dom,b,i;if(!a||!d.anim){i="scroll"+(g?"Top":"Left");h[i]=e;h[i]=e}else{b={to:{}};b.to["scroll"+(g?"Top":"Left")]=e;if(Ext.isObject(a)){Ext.applyIf(b,a)}d.animate(b)}return d},scrollIntoView:function(b,g,c){b=Ext.getDom(b)||Ext.getBody().dom;var d=this.dom,i=this.getOffsetsTo(b),h=i[0]+b.scrollLeft,l=i[1]+b.scrollTop,a=l+d.offsetHeight,m=h+d.offsetWidth,p=b.clientHeight,o=parseInt(b.scrollTop,10),e=parseInt(b.scrollLeft,10),j=o+p,n=e+b.clientWidth,k;if(d.offsetHeight>p||l<o){k=l}else{if(a>j){k=a-p}}if(k!=null){Ext.get(b).scrollTo("top",k,c)}if(g!==false){k=null;if(d.offsetWidth>b.clientWidth||h<e){k=h}else{if(m>n){k=m-b.clientWidth}}if(k!=null){Ext.get(b).scrollTo("left",k,c)}}return this},scrollChildIntoView:function(b,a){Ext.fly(b,"_scrollChildIntoView").scrollIntoView(this,a)},scroll:function(m,b,d){if(!this.isScrollable()){return false}var e=this.dom,g=e.scrollLeft,p=e.scrollTop,n=e.scrollWidth,k=e.scrollHeight,i=e.clientWidth,a=e.clientHeight,c=false,o,j={l:Math.min(g+b,n-i),r:o=Math.max(g-b,0),t:Math.max(p-b,0),b:Math.min(p+b,k-a)};j.d=j.b;j.u=j.t;m=m.substr(0,1);if((o=j[m])>-1){c=true;this.scrollTo(m=="l"||m=="r"?"left":"top",o,this.anim(d))}return c}});(function(){var p=Ext.dom.Element,m=document.defaultView,n=/table-row|table-.*-group/,a="_internal",r="hidden",o="height",g="width",e="isClipped",i="overflow",l="overflow-x",j="overflow-y",s="originalClip",b=/#document|body/i,t,d,q,h,u;if(!m||!m.getComputedStyle){p.prototype.getStyle=function(z,y){var L=this,G=L.dom,J=typeof z!="string",k=L.styleHooks,w=z,x=w,F=1,B=y,K,C,v,A,E,H,D;if(J){v={};w=x[0];D=0;if(!(F=x.length)){return v}}if(!G||G.documentElement){return v||""}C=G.style;if(y){H=C}else{H=G.currentStyle;if(!H){B=true;H=C}}do{A=k[w];if(!A){k[w]=A={name:p.normalize(w)}}if(A.get){E=A.get(G,L,B,H)}else{K=A.name;if(A.canThrow){try{E=H[K]}catch(I){E=""}}else{E=H?H[K]:""}}if(!J){return E}v[w]=E;w=x[++D]}while(D<F);return v}}p.override({getHeight:function(x,v){var w=this,z=w.dom,y=w.isStyle("display","none"),k,A;if(y){return 0}k=Math.max(z.offsetHeight,z.clientHeight)||0;if(Ext.supports.Direct2DBug){A=w.adjustDirect2DDimension(o);if(v){k+=A}else{if(A>0&&A<0.5){k++}}}if(x){k-=w.getBorderWidth("tb")+w.getPadding("tb")}return(k<0)?0:k},getWidth:function(k,z){var x=this,A=x.dom,y=x.isStyle("display","none"),w,v,B;if(y){return 0}if(Ext.supports.BoundingClientRect){w=A.getBoundingClientRect();v=w.right-w.left;v=z?v:Math.ceil(v)}else{v=A.offsetWidth}v=Math.max(v,A.clientWidth)||0;if(Ext.supports.Direct2DBug){B=x.adjustDirect2DDimension(g);if(z){v+=B}else{if(B>0&&B<0.5){v++}}}if(k){v-=x.getBorderWidth("lr")+x.getPadding("lr")}return(v<0)?0:v},setWidth:function(v,k){var w=this;v=w.adjustWidth(v);if(!k||!w.anim){w.dom.style.width=w.addUnits(v)}else{if(!Ext.isObject(k)){k={}}w.animate(Ext.applyIf({to:{width:v}},k))}return w},setHeight:function(k,v){var w=this;k=w.adjustHeight(k);if(!v||!w.anim){w.dom.style.height=w.addUnits(k)}else{if(!Ext.isObject(v)){v={}}w.animate(Ext.applyIf({to:{height:k}},v))}return w},applyStyles:function(k){Ext.DomHelper.applyStyles(this.dom,k);return this},setSize:function(w,k,v){var x=this;if(Ext.isObject(w)){v=k;k=w.height;w=w.width}w=x.adjustWidth(w);k=x.adjustHeight(k);if(!v||!x.anim){x.dom.style.width=x.addUnits(w);x.dom.style.height=x.addUnits(k)}else{if(v===true){v={}}x.animate(Ext.applyIf({to:{width:w,height:k}},v))}return x},getViewSize:function(){var w=this,x=w.dom,v=b.test(x.nodeName),k;if(v){k={width:p.getViewWidth(),height:p.getViewHeight()}}else{k={width:x.clientWidth,height:x.clientHeight}}return k},getSize:function(k){return{width:this.getWidth(k),height:this.getHeight(k)}},adjustWidth:function(k){var v=this,w=(typeof k=="number");if(w&&v.autoBoxAdjust&&!v.isBorderBox()){k-=(v.getBorderWidth("lr")+v.getPadding("lr"))}return(w&&k<0)?0:k},adjustHeight:function(k){var v=this,w=(typeof k=="number");if(w&&v.autoBoxAdjust&&!v.isBorderBox()){k-=(v.getBorderWidth("tb")+v.getPadding("tb"))}return(w&&k<0)?0:k},getColor:function(w,x,C){var z=this.getStyle(w),y=C||C===""?C:"#",B,k,A=0;if(!z||(/transparent|inherit/.test(z))){return x}if(/^r/.test(z)){z=z.slice(4,z.length-1).split(",");k=z.length;for(;A<k;A++){B=parseInt(z[A],10);y+=(B<16?"0":"")+B.toString(16)}}else{z=z.replace("#","");y+=z.length==3?z.replace(/^(\w)(\w)(\w)$/,"$1$1$2$2$3$3"):z}return(y.length>5?y.toLowerCase():x)},setOpacity:function(v,k){var w=this;if(!w.dom){return w}if(!k||!w.anim){w.setStyle("opacity",v)}else{if(typeof k!="object"){k={duration:350,easing:"ease-in"}}w.animate(Ext.applyIf({to:{opacity:v}},k))}return w},clearOpacity:function(){return this.setOpacity("")},adjustDirect2DDimension:function(w){var B=this,v=B.dom,z=B.getStyle("display"),y=v.style.display,C=v.style.position,A=w===g?0:1,k=v.currentStyle,x;if(z==="inline"){v.style.display="inline-block"}v.style.position=z.match(n)?"absolute":"static";x=(parseFloat(k[w])||parseFloat(k.msTransformOrigin.split(" ")[A])*2)%1;v.style.position=C;if(z==="inline"){v.style.display=y}return x},clip:function(){var v=this,w=(v.$cache||v.getCache()).data,k;if(!w[e]){w[e]=true;k=v.getStyle([i,l,j]);w[s]={o:k[i],x:k[l],y:k[j]};v.setStyle(i,r);v.setStyle(l,r);v.setStyle(j,r)}return v},unclip:function(){var v=this,w=(v.$cache||v.getCache()).data,k;if(w[e]){w[e]=false;k=w[s];if(k.o){v.setStyle(i,k.o)}if(k.x){v.setStyle(l,k.x)}if(k.y){v.setStyle(j,k.y)}}return v},boxWrap:function(k){k=k||Ext.baseCSSPrefix+"box";var v=Ext.get(this.insertHtml("beforeBegin","<div class='"+k+"'>"+Ext.String.format(p.boxMarkup,k)+"</div>"));Ext.DomQuery.selectNode("."+k+"-mc",v.dom).appendChild(this.dom);return v},getComputedHeight:function(){var v=this,k=Math.max(v.dom.offsetHeight,v.dom.clientHeight);if(!k){k=parseFloat(v.getStyle(o))||0;if(!v.isBorderBox()){k+=v.getFrameWidth("tb")}}return k},getComputedWidth:function(){var v=this,k=Math.max(v.dom.offsetWidth,v.dom.clientWidth);if(!k){k=parseFloat(v.getStyle(g))||0;if(!v.isBorderBox()){k+=v.getFrameWidth("lr")}}return k},getFrameWidth:function(v,k){return(k&&this.isBorderBox())?0:(this.getPadding(v)+this.getBorderWidth(v))},addClsOnOver:function(w,z,v){var x=this,y=x.dom,k=Ext.isFunction(z);x.hover(function(){if(k&&z.call(v||x,x)===false){return}Ext.fly(y,a).addCls(w)},function(){Ext.fly(y,a).removeCls(w)});return x},addClsOnFocus:function(w,z,v){var x=this,y=x.dom,k=Ext.isFunction(z);x.on("focus",function(){if(k&&z.call(v||x,x)===false){return false}Ext.fly(y,a).addCls(w)});x.on("blur",function(){Ext.fly(y,a).removeCls(w)});return x},addClsOnClick:function(w,z,v){var x=this,y=x.dom,k=Ext.isFunction(z);x.on("mousedown",function(){if(k&&z.call(v||x,x)===false){return false}Ext.fly(y,a).addCls(w);var B=Ext.getDoc(),A=function(){Ext.fly(y,a).removeCls(w);B.removeListener("mouseup",A)};B.on("mouseup",A)});return x},getStyleSize:function(){var z=this,A=this.dom,v=b.test(A.nodeName),y,k,x;if(v){return{width:p.getViewWidth(),height:p.getViewHeight()}}y=z.getStyle([o,g],true);if(y.width&&y.width!="auto"){k=parseFloat(y.width);if(z.isBorderBox()){k-=z.getFrameWidth("lr")}}if(y.height&&y.height!="auto"){x=parseFloat(y.height);if(z.isBorderBox()){x-=z.getFrameWidth("tb")}}return{width:k||z.getWidth(true),height:x||z.getHeight(true)}},selectable:function(){var k=this;k.dom.unselectable="off";k.on("selectstart",function(v){v.stopPropagation();return true});k.applyStyles("-moz-user-select: text; -khtml-user-select: text;");k.removeCls(Ext.baseCSSPrefix+"unselectable");return k},unselectable:function(){var k=this;k.dom.unselectable="on";k.swallowEvent("selectstart",true);k.applyStyles("-moz-user-select:-moz-none;-khtml-user-select:none;");k.addCls(Ext.baseCSSPrefix+"unselectable");return k}});p.prototype.styleHooks=t=Ext.dom.AbstractElement.prototype.styleHooks;if(Ext.isIE6||Ext.isIE7){t.fontSize=t["font-size"]={name:"fontSize",canThrow:true};t.fontStyle=t["font-style"]={name:"fontStyle",canThrow:true};t.fontFamily=t["font-family"]={name:"fontFamily",canThrow:true}}if(Ext.isIEQuirks||Ext.isIE&&Ext.ieVersion<=8){function c(x,v,w,k){if(k[this.styleName]=="none"){return"0px"}return k[this.name]}d=["Top","Right","Bottom","Left"];q=d.length;while(q--){h=d[q];u="border"+h+"Width";t["border-"+h.toLowerCase()+"-width"]=t[u]={name:u,styleName:"border"+h+"Style",get:c}}}}());Ext.onReady(function(){var c=/alpha\(opacity=(.*)\)/i,b=/^\s+|\s+$/g,a=Ext.dom.Element.prototype.styleHooks;a.opacity={name:"opacity",afterSet:function(g,e,d){if(d.isLayer){d.onOpacitySet(e)}}};if(!Ext.supports.Opacity&&Ext.isIE){Ext.apply(a.opacity,{get:function(h){var g=h.style.filter,e,d;if(g.match){e=g.match(c);if(e){d=parseFloat(e[1]);if(!isNaN(d)){return d?d/100:0}}}return 1},set:function(h,e){var d=h.style,g=d.filter.replace(c,"").replace(b,"");d.zoom=1;if(typeof(e)=="number"&&e>=0&&e<1){e*=100;d.filter=g+(g.length?" ":"")+"alpha(opacity="+e+")"}else{d.filter=g}}})}});Ext.dom.Element.override({select:function(a){return Ext.dom.Element.select(a,false,this.dom)}});Ext.define("Ext.dom.CompositeElementLite",{alternateClassName:"Ext.CompositeElementLite",requires:["Ext.dom.Element","Ext.dom.Query"],statics:{importElementMethods:function(){var b,c=Ext.dom.Element.prototype,a=this.prototype;for(b in c){if(typeof c[b]=="function"){(function(d){a[d]=a[d]||function(){return this.invoke(d,arguments)}}).call(a,b)}}}},constructor:function(b,a){this.elements=[];this.add(b,a);this.el=new Ext.dom.AbstractElement.Fly()},isComposite:true,getElement:function(a){return this.el.attach(a)},transformElement:function(a){return Ext.getDom(a)},getCount:function(){return this.elements.length},add:function(c,a){var e=this.elements,b,d;if(!c){return this}if(typeof c=="string"){c=Ext.dom.Element.selectorFunction(c,a)}else{if(c.isComposite){c=c.elements}else{if(!Ext.isIterable(c)){c=[c]}}}for(b=0,d=c.length;b<d;++b){e.push(this.transformElement(c[b]))}return this},invoke:function(d,a){var g=this.elements,e=g.length,c,b;d=Ext.dom.Element.prototype[d];for(b=0;b<e;b++){c=g[b];if(c){d.apply(this.getElement(c),a)}}return this},item:function(b){var c=this.elements[b],a=null;if(c){a=this.getElement(c)}return a},addListener:function(b,j,h,g){var d=this.elements,a=d.length,c,k;for(c=0;c<a;c++){k=d[c];if(k){Ext.EventManager.on(k,b,j,h||k,g)}}return this},each:function(g,d){var h=this,c=h.elements,a=c.length,b,j;for(b=0;b<a;b++){j=c[b];if(j){j=this.getElement(j);if(g.call(d||j,j,h,b)===false){break}}}return h},fill:function(a){var b=this;b.elements=[];b.add(a);return b},filter:function(b){var h=this,c=h.elements,g=c.length,d=[],e=0,j=typeof b=="function",k,a;for(;e<g;e++){a=c[e];k=false;if(a){a=h.getElement(a);if(j){k=b.call(a,a,h,e)!==false}else{k=a.is(b)}if(k){d.push(h.transformElement(a))}}}h.elements=d;return h},indexOf:function(a){return Ext.Array.indexOf(this.elements,this.transformElement(a))},replaceElement:function(e,c,a){var b=!isNaN(e)?e:this.indexOf(e),g;if(b>-1){c=Ext.getDom(c);if(a){g=this.elements[b];g.parentNode.insertBefore(c,g);Ext.removeNode(g)}Ext.Array.splice(this.elements,b,1,c)}return this},clear:function(){this.elements=[]},addElements:function(d,b){if(!d){return this}if(typeof d=="string"){d=Ext.dom.Element.selectorFunction(d,b)}var c=this.elements,a=d.length,g;for(g=0;g<a;g++){c.push(Ext.get(d[g]))}return this},first:function(){return this.item(0)},last:function(){return this.item(this.getCount()-1)},contains:function(a){return this.indexOf(a)!=-1},removeElement:function(e,i){e=[].concat(e);var d=this,g=d.elements,c=e.length,h,b,a;for(a=0;a<c;a++){h=e[a];if((b=(g[h]||g[h=d.indexOf(h)]))){if(i){if(b.dom){b.remove()}else{Ext.removeNode(b)}}Ext.Array.erase(g,h,1)}}return d}},function(){this.importElementMethods();this.prototype.on=this.prototype.addListener;if(Ext.DomQuery){Ext.dom.Element.selectorFunction=Ext.DomQuery.select}Ext.dom.Element.select=function(a,b){var c;if(typeof a=="string"){c=Ext.dom.Element.selectorFunction(a,b)}else{if(a.length!==undefined){c=a}else{}}return new Ext.CompositeElementLite(c)};Ext.select=function(){return Ext.dom.Element.select.apply(Ext.dom.Element,arguments)}});Ext.define("Ext.util.Animate",{requires:["Ext.Element","Ext.CompositeElementLite"],uses:["Ext.fx.Manager","Ext.fx.Anim"],animate:function(a){var b=this;if(Ext.fx.Manager.hasFxBlock(b.id)){return b}Ext.fx.Manager.queueFx(new Ext.fx.Anim(b.anim(a)));return this},anim:function(a){if(!Ext.isObject(a)){return(a)?{}:false}var b=this;if(a.stopAnimation){b.stopAnimation()}Ext.applyIf(a,Ext.fx.Manager.getFxDefaults(b.id));return Ext.apply({target:b,paused:true},a)},stopFx:Ext.Function.alias(Ext.util.Animate,"stopAnimation"),stopAnimation:function(){Ext.fx.Manager.stopAnimation(this.id);return this},syncFx:function(){Ext.fx.Manager.setFxDefaults(this.id,{concurrent:true});return this},sequenceFx:function(){Ext.fx.Manager.setFxDefaults(this.id,{concurrent:false});return this},hasActiveFx:Ext.Function.alias(Ext.util.Animate,"getActiveAnimation"),getActiveAnimation:function(){return Ext.fx.Manager.getActiveAnimation(this.id)}},function(){Ext.applyIf(Ext.Element.prototype,this.prototype);Ext.CompositeElementLite.importElementMethods()});Ext.define("Ext.util.ElementContainer",{childEls:[],constructor:function(){var b=this,a;if(b.hasOwnProperty("childEls")){a=b.childEls;delete b.childEls;b.addChildEls.apply(b,a)}},destroy:function(){var e=this,d=e.getChildEls(),g,a,c,b;for(c=d.length;c--;){a=d[c];if(typeof a!="string"){a=a.name}g=e[a];if(g){e[a]=null;g.remove()}}},addChildEls:function(){var b=this,a=arguments;if(b.hasOwnProperty("childEls")){b.childEls.push.apply(b.childEls,a)}else{b.childEls=b.getChildEls().concat(Array.prototype.slice.call(a))}b.prune(b.childEls,false)},applyChildEls:function(b,a){var e=this,g=e.getChildEls(),j,k,d,c,h;j=(a||e.id)+"-";for(d=g.length;d--;){k=g[d];if(typeof k=="string"){h=b.getById(j+k)}else{if((c=k.select)){h=Ext.select(c,true,b.dom)}else{if((c=k.selectNode)){h=Ext.get(Ext.DomQuery.selectNode(c,b.dom))}else{h=b.getById(k.id||(j+k.itemId))}}k=k.name}e[k]=h}},getChildEls:function(){var b=this,a;if(b.hasOwnProperty("childEls")){return b.childEls}a=b.self;return a.$childEls||b.getClassChildEls(a)},getClassChildEls:function(o){var k=this,p=o.$childEls,m,d,b,j,n,h,a,c,e,g,l;if(!p){g=o.superclass;if(g){g=g.self;c=[g.$childEls||k.getClassChildEls(g)];l=g.prototype.mixins||{}}else{c=[];l={}}e=o.prototype;h=e.mixins;for(a in h){if(h.hasOwnProperty(a)&&!l.hasOwnProperty(a)){n=h[a].self;c.push(n.$childEls||k.getClassChildEls(n))}}c.push(e.hasOwnProperty("childEls")&&e.childEls);for(d=0,b=c.length;d<b;++d){m=c[d];if(m&&m.length){if(!p){p=m}else{if(!j){j=true;p=p.slice(0)}p.push.apply(p,m)}}}o.$childEls=p=(p?k.prune(p,!j):[])}return p},prune:function(c,e){var b=c.length,d={},a;while(b--){a=c[b];if(typeof a!="string"){a=a.name}if(!d[a]){d[a]=1}else{if(e){e=false;c=c.slice(0)}Ext.Array.erase(c,b,1)}}return c},removeChildEls:function(g){var e=this,a=e.getChildEls(),d=(e.childEls=[]),h,b,c;for(b=0,h=a.length;b<h;++b){c=a[b];if(!g(c)){d.push(c)}}}});Ext.define("Ext.util.Renderable",{requires:["Ext.dom.Element"],frameCls:Ext.baseCSSPrefix+"frame",frameIdRegex:/[\-]frame\d+[TMB][LCR]$/,frameElementCls:{tl:[],tc:[],tr:[],ml:[],mc:[],mr:[],bl:[],bc:[],br:[]},frameElNames:["TL","TC","TR","ML","MC","MR","BL","BC","BR"],frameTpl:["{%this.renderDockedItems(out,values,0);%}",'<tpl if="top">','<tpl if="left"><div id="{fgid}TL" class="{frameCls}-tl {baseCls}-tl {baseCls}-{ui}-tl<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-tl</tpl>" style="background-position: {tl}; padding-left: {frameWidth}px" role="presentation"></tpl>','<tpl if="right"><div id="{fgid}TR" class="{frameCls}-tr {baseCls}-tr {baseCls}-{ui}-tr<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-tr</tpl>" style="background-position: {tr}; padding-right: {frameWidth}px" role="presentation"></tpl>','<div id="{fgid}TC" class="{frameCls}-tc {baseCls}-tc {baseCls}-{ui}-tc<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-tc</tpl>" style="background-position: {tc}; height: {frameWidth}px" role="presentation"></div>','<tpl if="right"></div></tpl>','<tpl if="left"></div></tpl>',"</tpl>",'<tpl if="left"><div id="{fgid}ML" class="{frameCls}-ml {baseCls}-ml {baseCls}-{ui}-ml<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-ml</tpl>" style="background-position: {ml}; padding-left: {frameWidth}px" role="presentation"></tpl>','<tpl if="right"><div id="{fgid}MR" class="{frameCls}-mr {baseCls}-mr {baseCls}-{ui}-mr<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-mr</tpl>" style="background-position: {mr}; padding-right: {frameWidth}px" role="presentation"></tpl>','<div id="{fgid}MC" class="{frameCls}-mc {baseCls}-mc {baseCls}-{ui}-mc<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-mc</tpl>" role="presentation">',"{%this.applyRenderTpl(out, values)%}","</div>",'<tpl if="right"></div></tpl>','<tpl if="left"></div></tpl>','<tpl if="bottom">','<tpl if="left"><div id="{fgid}BL" class="{frameCls}-bl {baseCls}-bl {baseCls}-{ui}-bl<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-bl</tpl>" style="background-position: {bl}; padding-left: {frameWidth}px" role="presentation"></tpl>','<tpl if="right"><div id="{fgid}BR" class="{frameCls}-br {baseCls}-br {baseCls}-{ui}-br<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-br</tpl>" style="background-position: {br}; padding-right: {frameWidth}px" role="presentation"></tpl>','<div id="{fgid}BC" class="{frameCls}-bc {baseCls}-bc {baseCls}-{ui}-bc<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-bc</tpl>" style="background-position: {bc}; height: {frameWidth}px" role="presentation"></div>','<tpl if="right"></div></tpl>','<tpl if="left"></div></tpl>',"</tpl>","{%this.renderDockedItems(out,values,1);%}"],frameTableTpl:["{%this.renderDockedItems(out,values,0);%}","<table><tbody>",'<tpl if="top">',"<tr>",'<tpl if="left"><td id="{fgid}TL" class="{frameCls}-tl {baseCls}-tl {baseCls}-{ui}-tl<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-tl</tpl>" style="background-position: {tl}; padding-left:{frameWidth}px" role="presentation"></td></tpl>','<td id="{fgid}TC" class="{frameCls}-tc {baseCls}-tc {baseCls}-{ui}-tc<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-tc</tpl>" style="background-position: {tc}; height: {frameWidth}px" role="presentation"></td>','<tpl if="right"><td id="{fgid}TR" class="{frameCls}-tr {baseCls}-tr {baseCls}-{ui}-tr<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-tr</tpl>" style="background-position: {tr}; padding-left: {frameWidth}px" role="presentation"></td></tpl>',"</tr>","</tpl>","<tr>",'<tpl if="left"><td id="{fgid}ML" class="{frameCls}-ml {baseCls}-ml {baseCls}-{ui}-ml<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-ml</tpl>" style="background-position: {ml}; padding-left: {frameWidth}px" role="presentation"></td></tpl>','<td id="{fgid}MC" class="{frameCls}-mc {baseCls}-mc {baseCls}-{ui}-mc<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-mc</tpl>" style="background-position: 0 0;" role="presentation">',"{%this.applyRenderTpl(out, values)%}","</td>",'<tpl if="right"><td id="{fgid}MR" class="{frameCls}-mr {baseCls}-mr {baseCls}-{ui}-mr<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-mr</tpl>" style="background-position: {mr}; padding-left: {frameWidth}px" role="presentation"></td></tpl>',"</tr>",'<tpl if="bottom">',"<tr>",'<tpl if="left"><td id="{fgid}BL" class="{frameCls}-bl {baseCls}-bl {baseCls}-{ui}-bl<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-bl</tpl>" style="background-position: {bl}; padding-left: {frameWidth}px" role="presentation"></td></tpl>','<td id="{fgid}BC" class="{frameCls}-bc {baseCls}-bc {baseCls}-{ui}-bc<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-bc</tpl>" style="background-position: {bc}; height: {frameWidth}px" role="presentation"></td>','<tpl if="right"><td id="{fgid}BR" class="{frameCls}-br {baseCls}-br {baseCls}-{ui}-br<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-br</tpl>" style="background-position: {br}; padding-left: {frameWidth}px" role="presentation"></td></tpl>',"</tr>","</tpl>","</tbody></table>","{%this.renderDockedItems(out,values,1);%}"],afterRender:function(){var b=this,c={},e=b.protoEl,d=b.getTargetEl(),a;b.finishRenderChildren();if(b.styleHtmlContent){d.addCls(b.styleHtmlCls)}e.writeTo(c);a=c.removed;if(a){d.removeCls(a)}a=c.cls;if(a.length){d.addCls(a)}a=c.style;if(c.style){d.setStyle(a)}b.protoEl=null;if(!b.ownerCt){b.updateLayout()}},afterFirstLayout:function(d,a){var e=this,c=Ext.isDefined(e.x),b=Ext.isDefined(e.y),h,g;if(e.floating&&(!c||!b)){if(e.floatParent){h=e.floatParent.getTargetEl().getViewRegion();g=e.el.getAlignToXY(e.floatParent.getTargetEl(),"c-c");h.left=g[0]-h.left;h.top=g[1]-h.top}else{g=e.el.getAlignToXY(e.container,"c-c");h=e.container.translatePoints(g[0],g[1])}e.x=c?e.x:h.left;e.y=b?e.y:h.top;c=b=true}if(c||b){e.setPosition(e.x,e.y)}e.onBoxReady(d,a);if(e.hasListeners.boxready){e.fireEvent("boxready",e,d,a)}},onBoxReady:Ext.emptyFn,applyRenderSelectors:function(){var d=this,b=d.renderSelectors,c=d.el,e=c.dom,a;d.applyChildEls(c);if(b){for(a in b){if(b.hasOwnProperty(a)&&b[a]){d[a]=Ext.get(Ext.DomQuery.selectNode(b[a],e))}}}},beforeRender:function(){var b=this,c=b.getTargetEl(),a=b.getComponentLayout();b.frame=b.frame||b.alwaysFramed;if(!a.initialized){a.initLayout()}if(c){c.setStyle(b.getOverflowStyle());b.overflowStyleSet=true}b.setUI(b.ui);if(b.disabled){b.disable(true)}},doApplyRenderTpl:function(c,a){var d=a.$comp,b;if(!d.rendered){b=d.initRenderTpl();b.applyOut(a.renderData,c)}},doAutoRender:function(){var a=this;if(!a.rendered){if(a.floating){a.render(document.body)}else{a.render(Ext.isBoolean(a.autoRender)?Ext.getBody():a.autoRender)}}},doRenderContent:function(a,c){var b=c.$comp;if(b.html){Ext.DomHelper.generateMarkup(b.html,a);delete b.html}if(b.tpl){if(!b.tpl.isTemplate){b.tpl=new Ext.XTemplate(b.tpl)}if(b.data){b.tpl.applyOut(b.data,a);delete b.data}}},doRenderFramingDockedItems:function(a,c,d){var b=c.$comp;if(!b.rendered&&b.doRenderDockedItems){c.renderData.$skipDockedItems=true;b.doRenderDockedItems.call(this,a,c,d)}},finishRender:function(a){var g=this,b,h,e,d,i,c;if(!g.el||g.$pid){if(g.container){d=g.container.getById(g.id,true)}else{d=Ext.getDom(g.id)}if(!g.el){g.wrapPrimaryEl(d)}else{delete g.$pid;if(!g.el.dom){g.wrapPrimaryEl(g.el)}d.parentNode.insertBefore(g.el.dom,d);Ext.removeNode(d)}}else{if(!g.rendering){b=g.initRenderTpl();if(b){h=g.initRenderData();b.insertFirst(g.getTargetEl(),h)}}}if(!g.container){g.container=Ext.get(g.el.dom.parentNode)}if(g.ctCls){g.container.addCls(g.ctCls)}g.onRender(g.container,a);if(!g.overflowStyleSet){g.getTargetEl().setStyle(g.getOverflowStyle())}g.el.setVisibilityMode(Ext.Element[g.hideMode.toUpperCase()]);if(g.overCls){g.el.hover(g.addOverCls,g.removeOverCls,g)}if(g.hasListeners.render){g.fireEvent("render",g)}if(g.contentEl){i=Ext.baseCSSPrefix;c=i+"hide-";e=Ext.get(g.contentEl);e.removeCls([i+"hidden",c+"display",c+"offsets",c+"nosize"]);g.getTargetEl().appendChild(e.dom)}g.afterRender();if(g.hasListeners.afterrender){g.fireEvent("afterrender",g)}g.initEvents();if(g.hidden){g.el.hide()}},finishRenderChildren:function(){var a=this.getComponentLayout();a.finishRender()},getElConfig:function(){var h=this,j=h.autoEl,e=h.getFrameInfo(),a={tag:"div",tpl:e?h.initFramingTpl(e.table):h.initRenderTpl()},b,d,g,k,c;h.initStyles(h.protoEl);h.protoEl.writeTo(a);h.protoEl.flush();if(Ext.isString(j)){a.tag=j}else{Ext.apply(a,j)}a.id=h.id;if(a.tpl){if(e){d=h.frameElNames;g=d.length;c=h.id+"-frame1";h.frameGenId=1;a.tplData=Ext.apply({},{$comp:h,fgid:c,ui:h.ui,uiCls:h.uiCls,frameCls:h.frameCls,baseCls:h.baseCls,frameWidth:e.maxWidth,top:!!e.top,left:!!e.left,right:!!e.right,bottom:!!e.bottom,renderData:h.initRenderData()},h.getFramePositions(e));for(b=0;b<g;b++){k=d[b];h.addChildEls({name:"frame"+k,id:c+k})}h.addChildEls({name:"frameBody",id:c+"MC"})}else{a.tplData=h.initRenderData()}}return a},initFramingTpl:function(b){var a=b?this.getTpl("frameTableTpl"):this.getTpl("frameTpl");if(a&&!a.applyRenderTpl){this.setupFramingTpl(a)}return a},setupFramingTpl:function(a){a.applyRenderTpl=this.doApplyRenderTpl;a.renderDockedItems=this.doRenderFramingDockedItems},getInsertPosition:function(a){if(a!==undefined){if(Ext.isNumber(a)){a=this.container.dom.childNodes[a]}else{a=Ext.getDom(a)}}return a},getRenderTree:function(){var a=this;if(!a.hasListeners.beforerender||a.fireEvent("beforerender",a)!==false){a.beforeRender();a.rendering=true;if(a.el){return{tag:"div",id:(a.$pid=Ext.id())}}return a.getElConfig()}return null},initContainer:function(a){var b=this;if(!a&&b.el){a=b.el.dom.parentNode;b.allowDomMove=false}b.container=a.dom?a:Ext.get(a);return b.container},initRenderData:function(){var a=this;return Ext.apply({$comp:a,id:a.id,ui:a.ui,uiCls:a.uiCls,baseCls:a.baseCls,componentCls:a.componentCls,frame:a.frame},a.renderData)},initRenderTpl:function(){var a=this.getTpl("renderTpl");if(a&&!a.renderContent){this.setupRenderTpl(a)}return a},onRender:function(d,e){var h=this,j=h.x,i=h.y,c,a,k,b=h.el,g=Ext.getBody().dom;if(Ext.scopeResetCSS&&!h.ownerCt){if(b.dom===g){b.parent().addCls(Ext.resetCls)}else{if(h.floating&&h.el.dom.parentNode===g){Ext.resetElement.appendChild(h.el)}else{h.resetEl=b.wrap(Ext.resetElementSpec,false,Ext.supports.CSS3LinearGradient?undefined:"*")}}}h.applyRenderSelectors();delete h.rendering;h.rendered=true;c=null;if(j!==undefined){c=c||{};c.x=j}if(i!==undefined){c=c||{};c.y=i}if(!h.getFrameInfo()&&Ext.isBorderBox){a=h.width;k=h.height;if(typeof a=="number"){c=c||{};c.width=a}if(typeof k=="number"){c=c||{};c.height=k}}h.lastBox=h.el.lastBox=c},render:function(c,b){var e=this,d=e.el&&(e.el=Ext.get(e.el)),h,a,g;Ext.suspendLayouts();c=e.initContainer(c);g=e.getInsertPosition(b);if(!d){a=e.getRenderTree();if(e.ownerLayout&&e.ownerLayout.transformItemRenderTree){a=e.ownerLayout.transformItemRenderTree(a)}if(a){if(g){d=Ext.DomHelper.insertBefore(g,a)}else{d=Ext.DomHelper.append(c,a)}e.wrapPrimaryEl(d)}}else{if(!e.hasListeners.beforerender||e.fireEvent("beforerender",e)!==false){e.initStyles(d);if(e.allowDomMove!==false){if(g){c.dom.insertBefore(d.dom,g)}else{c.dom.appendChild(d.dom)}}}else{h=true}}if(d&&!h){e.finishRender(b)}Ext.resumeLayouts(!c.isDetachedBody)},ensureAttachedToBody:function(c){var b=this,a;while(b.ownerCt){b=b.ownerCt}if(b.container.isDetachedBody){b.container=a=Ext.resetElement;a.appendChild(b.el.dom);if(c){b.updateLayout()}if(typeof b.x=="number"||typeof b.y=="number"){b.setPosition(b.x,b.y)}}},setupRenderTpl:function(a){a.renderBody=a.renderContent=this.doRenderContent},wrapPrimaryEl:function(a){this.el=Ext.get(a,true)},initFrame:function(){if(Ext.supports.CSS3BorderRadius||!this.frame){return}var h=this,e=h.getFrameInfo(),j,a,c,b,d=h.frameElNames,g=d.length,k;if(e){j=e.maxWidth;a=h.getFrameTpl(e.table);h.frameGenId=c=(h.frameGenId||0)+1;c=h.id+"-frame"+c;a.insertFirst(h.el,Ext.apply({$comp:h,fgid:c,ui:h.ui,uiCls:h.uiCls,frameCls:h.frameCls,baseCls:h.baseCls,frameWidth:j,top:!!e.top,left:!!e.left,right:!!e.right,bottom:!!e.bottom},h.getFramePositions(e)));h.frameBody=h.el.down("."+h.frameCls+"-mc");h.removeChildEls(function(i){return i.id&&h.frameIdRegex.test(i.id)});for(b=0;b<g;b++){k=d[b];h["frame"+k]=h.el.getById(c+k)}}},updateFrame:function(){if(Ext.supports.CSS3BorderRadius||!this.frame){return}var e=this,h=this.frameSize&&this.frameSize.table,g=this.frameTL,d=this.frameBL,c=this.frameML,a=this.frameMC,b;this.initFrame();if(a){if(e.frame){b=this.frameMC.dom.className;a.insertAfter(this.frameMC);this.frameMC.remove();this.frameBody=this.frameMC=a;a.dom.className=b;if(h){e.el.query("> table")[1].remove()}else{if(g){g.remove()}if(d){d.remove()}if(c){c.remove()}}}}else{if(e.frame){this.applyRenderSelectors()}}},getFrameInfo:function(){if(Ext.supports.CSS3BorderRadius||!this.frame){return false}var g=this,i=g.frameInfoCache,a=g.el||g.protoEl,j=a.dom?a.dom.className:a.classList.join(" "),d=i[j],e,c,h,b;if(d==null){e=Ext.fly(g.getStyleProxy(j),"frame-style-el");c=e.getStyle("background-position-x");h=e.getStyle("background-position-y");if(!c&&!h){b=e.getStyle("background-position").split(" ");c=b[0];h=b[1]}d=g.calculateFrame(c,h);if(d){a.setStyle("background-image","none")}i[j]=d}g.frame=!!d;g.frameSize=d;return d},calculateFrame:function(h,g){if(!(parseInt(h,10)>=1000000&&parseInt(g,10)>=1000000)){return false}var a=Math.max,b=parseInt(h.substr(3,2),10),e=parseInt(h.substr(5,2),10),c=parseInt(g.substr(3,2),10),i=parseInt(g.substr(5,2),10),d={table:h.substr(0,3)=="110",vertical:g.substr(0,3)=="110",top:a(b,e),right:a(e,c),bottom:a(i,c),left:a(b,i)};d.maxWidth=a(d.top,d.right,d.bottom,d.left);d.width=d.left+d.right;d.height=d.top+d.bottom;return d},getStyleProxy:function(b){var a=this.styleProxyEl||(Ext.AbstractComponent.prototype.styleProxyEl=Ext.resetElement.createChild({style:{position:"absolute",top:"-10000px"}},null,true));a.className=b;return a},getFramePositions:function(e){var h=this,i=e.maxWidth,j=h.dock,d,b,g,c,a;if(e.vertical){b="0 -"+(i*0)+"px";g="0 -"+(i*1)+"px";if(j&&j=="right"){b="right -"+(i*0)+"px";g="right -"+(i*1)+"px"}d={tl:"0 -"+(i*0)+"px",tr:"0 -"+(i*1)+"px",bl:"0 -"+(i*2)+"px",br:"0 -"+(i*3)+"px",ml:"-"+(i*1)+"px 0",mr:"right 0",tc:b,bc:g}}else{c="-"+(i*0)+"px 0";a="right 0";if(j&&j=="bottom"){c="left bottom";a="right bottom"}d={tl:"0 -"+(i*2)+"px",tr:"right -"+(i*3)+"px",bl:"0 -"+(i*4)+"px",br:"right -"+(i*5)+"px",ml:c,mr:a,tc:"0 -"+(i*0)+"px",bc:"0 -"+(i*1)+"px"}}return d},getFrameTpl:function(a){return this.getTpl(a?"frameTableTpl":"frameTpl")},frameInfoCache:{}});Ext.define("Ext.state.Provider",{mixins:{observable:"Ext.util.Observable"},prefix:"ext-",constructor:function(a){a=a||{};var b=this;Ext.apply(b,a);b.addEvents("statechange");b.state={};b.mixins.observable.constructor.call(b)},get:function(b,a){return typeof this.state[b]=="undefined"?a:this.state[b]},clear:function(a){var b=this;delete b.state[a];b.fireEvent("statechange",b,a,null)},set:function(a,c){var b=this;b.state[a]=c;b.fireEvent("statechange",b,a,c)},decodeValue:function(g){var c=this,k=/^(a|n|d|b|s|o|e)\:(.*)$/,b=k.exec(unescape(g)),h,d,a,j,e,i;if(!b||!b[1]){return}d=b[1];g=b[2];switch(d){case"e":return null;case"n":return parseFloat(g);case"d":return new Date(Date.parse(g));case"b":return(g=="1");case"a":h=[];if(g!=""){j=g.split("^");e=j.length;for(i=0;i<e;i++){g=j[i];h.push(c.decodeValue(g))}}return h;case"o":h={};if(g!=""){j=g.split("^");e=j.length;for(i=0;i<e;i++){g=j[i];a=g.split("=");h[a[0]]=c.decodeValue(a[1])}}return h;default:return g}},encodeValue:function(e){var g="",d=0,b,a,c;if(e==null){return"e:1"}else{if(typeof e=="number"){b="n:"+e}else{if(typeof e=="boolean"){b="b:"+(e?"1":"0")}else{if(Ext.isDate(e)){b="d:"+e.toGMTString()}else{if(Ext.isArray(e)){for(a=e.length;d<a;d++){g+=this.encodeValue(e[d]);if(d!=a-1){g+="^"}}b="a:"+g}else{if(typeof e=="object"){for(c in e){if(typeof e[c]!="function"&&e[c]!==undefined){g+=c+"="+this.encodeValue(e[c])+"^"}}b="o:"+g.substring(0,g.length-1)}else{b="s:"+e}}}}}}return escape(b)}});Ext.define("Ext.state.Manager",{singleton:true,requires:["Ext.state.Provider"],constructor:function(){this.provider=new Ext.state.Provider()},setProvider:function(a){this.provider=a},get:function(b,a){return this.provider.get(b,a)},set:function(a,b){this.provider.set(a,b)},clear:function(a){this.provider.clear(a)},getProvider:function(){return this.provider}});Ext.define("Ext.state.Stateful",{mixins:{observable:"Ext.util.Observable"},requires:["Ext.state.Manager"],stateful:false,saveDelay:100,constructor:function(a){var b=this;a=a||{};if(a.stateful!==undefined){b.stateful=a.stateful}if(a.saveDelay!==undefined){b.saveDelay=a.saveDelay}b.stateId=b.stateId||a.stateId;if(!b.stateEvents){b.stateEvents=[]}if(a.stateEvents){b.stateEvents.concat(a.stateEvents)}this.addEvents("beforestaterestore","staterestore","beforestatesave","statesave");b.mixins.observable.constructor.call(b);if(b.stateful!==false){b.addStateEvents(b.stateEvents);b.initState()}},addStateEvents:function(c){var e=this,b,d,a;if(e.stateful&&e.getStateId()){if(typeof c=="string"){c=Array.prototype.slice.call(arguments,0)}a=e.stateEventsByName||(e.stateEventsByName={});for(b=c.length;b--;){d=c[b];if(!a[d]){a[d]=1;e.on(d,e.onStateChange,e)}}}},onStateChange:function(){var c=this,a=c.saveDelay,d,b;if(!c.stateful){return}if(a){if(!c.stateTask){d=Ext.state.Stateful;b=d.runner||(d.runner=new Ext.util.TaskRunner());c.stateTask=b.newTask({run:c.saveState,scope:c,interval:a,repeat:1})}c.stateTask.start()}else{c.saveState()}},saveState:function(){var b=this,d=b.stateful&&b.getStateId(),a=b.hasListeners,c;if(d){c=b.getState()||{};if(!a.beforestatesave||b.fireEvent("beforestatesave",b,c)!==false){Ext.state.Manager.set(d,c);if(a.statesave){b.fireEvent("statesave",b,c)}}}},getState:function(){return null},applyState:function(a){if(a){Ext.apply(this,a)}},getStateId:function(){var a=this;return a.stateId||(a.autoGenId?null:a.id)},initState:function(){var b=this,d=b.stateful&&b.getStateId(),a=b.hasListeners,c;if(d){c=Ext.state.Manager.get(d);if(c){c=Ext.apply({},c);if(!a.beforestaterestore||b.fireEvent("beforestaterestore",b,c)!==false){b.applyState(c);if(a.staterestore){b.fireEvent("staterestore",b,c)}}}}},savePropToState:function(g,e,d){var b=this,c=b[g],a=b.initialConfig;if(b.hasOwnProperty(g)){if(!a||a[g]!==c){if(e){e[d||g]=c}return true}}return false},savePropsToState:function(e,c){var b=this,a,d;if(typeof e=="string"){b.savePropToState(e,c)}else{for(a=0,d=e.length;a<d;++a){b.savePropToState(e[a],c)}}return c},destroy:function(){var b=this,a=b.stateTask;if(a){a.destroy();b.stateTask=null}b.clearListeners()}});Ext.define("Ext.AbstractComponent",{requires:["Ext.ComponentQuery","Ext.ComponentManager","Ext.util.ProtoElement"],mixins:{observable:"Ext.util.Observable",animate:"Ext.util.Animate",elementCt:"Ext.util.ElementContainer",renderable:"Ext.util.Renderable",state:"Ext.state.Stateful"},uses:["Ext.PluginManager","Ext.Element","Ext.DomHelper","Ext.XTemplate","Ext.ComponentQuery","Ext.ComponentLoader","Ext.EventManager","Ext.layout.Context","Ext.layout.Layout","Ext.layout.component.Auto","Ext.LoadMask","Ext.ZIndexManager"],statics:{AUTO_ID:1000,pendingLayouts:null,layoutSuspendCount:0,cancelLayout:function(a,c){var b=this.runningLayoutContext||this.pendingLayouts;if(b){b.cancelComponent(a,false,c)}},flushLayouts:function(){var b=this,a=b.pendingLayouts;if(a&&a.invalidQueue.length){b.pendingLayouts=null;b.runningLayoutContext=a;Ext.override(a,{runComplete:function(){b.runningLayoutContext=null;return this.callParent()}});a.run()}},resumeLayouts:function(a){if(this.layoutSuspendCount&&!--this.layoutSuspendCount){if(a){this.flushLayouts()}}},suspendLayouts:function(){++this.layoutSuspendCount},updateLayout:function(b,e){var c=this,a=c.runningLayoutContext,d;if(a){a.queueInvalidate(b)}else{d=c.pendingLayouts||(c.pendingLayouts=new Ext.layout.Context());d.queueInvalidate(b);if(!e&&!c.layoutSuspendCount&&!b.isLayoutSuspended()){c.flushLayouts()}}}},isComponent:true,getAutoId:function(){this.autoGenId=true;return ++Ext.AbstractComponent.AUTO_ID},deferLayouts:false,autoGenId:false,renderTpl:"{%this.renderContent(out,values)%}",frameSize:{left:0,top:0,right:0,bottom:0,width:0,height:0},tplWriteMode:"overwrite",baseCls:Ext.baseCSSPrefix+"component",disabledCls:Ext.baseCSSPrefix+"item-disabled",ui:"default",uiCls:[],hidden:false,disabled:false,draggable:false,floating:false,hideMode:"display",styleHtmlContent:false,styleHtmlCls:Ext.baseCSSPrefix+"html",autoShow:false,autoRender:false,allowDomMove:true,rendered:false,componentLayoutCounter:0,shrinkWrap:2,weight:0,maskOnDisable:true,_isLayoutRoot:false,constructor:function(c){var e=this,d,a,b;if(c){Ext.apply(e,c);b=e.xhooks;if(b){delete e.xhooks;Ext.override(e,b)}}else{c={}}e.initialConfig=c;e.mixins.elementCt.constructor.call(e);e.addEvents("beforeactivate","activate","beforedeactivate","deactivate","added","disable","enable","beforeshow","show","beforehide","hide","removed","beforerender","render","afterrender","boxready","beforedestroy","destroy","resize","move","focus","blur");e.getId();e.setupProtoEl();if(e.cls){e.initialCls=e.cls;e.protoEl.addCls(e.cls)}if(e.style){e.initialStyle=e.style;e.protoEl.setStyle(e.style)}e.mons=[];e.renderData=e.renderData||{};e.renderSelectors=e.renderSelectors||{};if(e.plugins){e.plugins=e.constructPlugins()}if(!e.hasListeners){e.hasListeners=new e.HasListeners()}e.initComponent();Ext.ComponentManager.register(e);e.mixins.observable.constructor.call(e);e.mixins.state.constructor.call(e,c);this.addStateEvents("resize");if(e.plugins){for(d=0,a=e.plugins.length;d<a;d++){e.plugins[d]=e.initPlugin(e.plugins[d])}}e.loader=e.getLoader();if(e.renderTo){e.render(e.renderTo)}if(e.autoShow&&!e.isContained){e.show()}},initComponent:function(){this.plugins=this.constructPlugins();this.setSize(this.width,this.height)},getState:function(){var b=this,c=null,a=b.getSizeModel();if(a.width.configured){c=b.addPropertyToState(c,"width")}if(a.height.configured){c=b.addPropertyToState(c,"height")}return c},addPropertyToState:function(e,d,c){var b=this,a=arguments.length;if(a==3||b.hasOwnProperty(d)){if(a<3){c=b[d]}if(c!==b.initialConfig[d]){(e||(e={}))[d]=c}}return e},show:Ext.emptyFn,animate:function(b){var k=this,e,g,d,p,o,m,l,j,n,i,c,a;b=b||{};o=b.to||{};if(Ext.fx.Manager.hasFxBlock(k.id)){return k}e=Ext.isDefined(o.width);if(e){p=Ext.Number.constrain(o.width,k.minWidth,k.maxWidth)}g=Ext.isDefined(o.height);if(g){d=Ext.Number.constrain(o.height,k.minHeight,k.maxHeight)}if(!b.dynamic&&(e||g)){j=(b.from?b.from.width:undefined)||k.getWidth();n=j;i=(b.from?b.from.height:undefined)||k.getHeight();c=i;a=false;if(g&&d>i){c=d;a=true}if(e&&p>j){n=p;a=true}if(a){m=!Ext.isNumber(k.width);l=!Ext.isNumber(k.height);k.setSize(n,c);k.el.setSize(j,i);if(m){delete k.width}if(l){delete k.height}}if(e){o.width=p}if(g){o.height=d}}return k.mixins.animate.animate.apply(k,arguments)},onHide:function(){this.updateLayout({isRoot:false})},onShow:function(){this.updateLayout({isRoot:false})},constructPlugin:function(a){if(a.ptype&&typeof a.init!="function"){a.cmp=this;a=Ext.PluginManager.create(a)}else{if(typeof a=="string"){a=Ext.PluginManager.create({ptype:a,cmp:this})}}return a},constructPlugins:function(){var e=this,c,b=[],d,a;if(e.plugins){c=Ext.isArray(e.plugins)?e.plugins:[e.plugins];for(d=0,a=c.length;d<a;d++){b[d]=e.constructPlugin(c[d])}return b}},initPlugin:function(a){a.init(this);return a},updateAria:Ext.emptyFn,registerFloatingItem:function(b){var a=this;if(!a.floatingDescendants){a.floatingDescendants=new Ext.ZIndexManager(a)}a.floatingDescendants.register(b)},unregisterFloatingItem:function(b){var a=this;if(a.floatingDescendants){a.floatingDescendants.unregister(b)}},layoutSuspendCount:0,suspendLayouts:function(){var a=this;if(!a.rendered){return}if(++a.layoutSuspendCount==1){a.suspendLayout=true}},resumeLayouts:function(b){var a=this;if(!a.rendered){return}if(!--a.layoutSuspendCount){a.suspendLayout=false;if(b&&!a.isLayoutSuspended()){a.updateLayout(b)}}},setupProtoEl:function(){var b=this,a=[b.baseCls,b.getComponentLayout().targetCls];if(Ext.isDefined(b.cmpCls)){if(Ext.isDefined(Ext.global.console)){Ext.global.console.warn("Ext.Component: cmpCls has been deprecated. Please use componentCls.")}b.componentCls=b.cmpCls;delete b.cmpCls}if(b.componentCls){a.push(b.componentCls)}else{b.componentCls=b.baseCls}b.protoEl=new Ext.util.ProtoElement({cls:a.join(" ")})},setUI:function(g){var e=this,b=Ext.Array.clone(e.uiCls),h=[],d=[],a,c;for(c=0;c<b.length;c++){a=b[c];d=d.concat(e.removeClsWithUI(a,true));h.push(a)}if(d.length){e.removeCls(d)}e.removeUIFromElement();e.ui=g;e.addUIToElement();d=[];for(c=0;c<h.length;c++){a=h[c];d=d.concat(e.addClsWithUI(a,true))}if(d.length){e.addCls(d)}if(e.rendered){e.updateLayout()}},addClsWithUI:function(c,h){var g=this,e=[],d,b=0,a;if(typeof c==="string"){c=(c.indexOf(" ")<0)?[c]:Ext.String.splitWords(c)}d=c.length;g.uiCls=Ext.Array.clone(g.uiCls);for(;b<d;b++){a=c[b];if(a&&!g.hasUICls(a)){g.uiCls.push(a);e=e.concat(g.addUIClsToElement(a))}}if(h!==true){g.addCls(e)}return e},removeClsWithUI:function(c,h){var g=this,e=[],b=0,d,a;if(typeof c==="string"){c=(c.indexOf(" ")<0)?[c]:Ext.String.splitWords(c)}d=c.length;for(b=0;b<d;b++){a=c[b];if(a&&g.hasUICls(a)){g.uiCls=Ext.Array.remove(g.uiCls,a);e=e.concat(g.removeUIClsFromElement(a))}}if(h!==true){g.removeCls(e)}return e},hasUICls:function(a){var b=this,c=b.uiCls||[];return Ext.Array.contains(c,a)},frameElementsArray:["tl","tc","tr","ml","mc","mr","bl","bc","br"],addUIClsToElement:function(m){var k=this,b=k.baseCls+"-"+k.ui+"-"+m,n=[Ext.baseCSSPrefix+m,k.baseCls+"-"+m,b],l=k.frameElementCls,h,g,e,a,d,j;if(k.frame&&!Ext.supports.CSS3BorderRadius){h=k.frameElementsArray;g=h.length;e=0;for(;e<g;e++){d=h[e];a=k["frame"+d.toUpperCase()];j=b+"-"+d;if(a&&a.dom){a.addCls(j)}else{if(Ext.Array.indexOf(l[d],j)==-1){l[d].push(j)}}}}k.frameElementCls=l;return n},removeUIClsFromElement:function(m){var k=this,b=k.baseCls+"-"+k.ui+"-"+m,n=[Ext.baseCSSPrefix+m,k.baseCls+"-"+m,b],l=k.frameElementCls,h,g,e,a,d,j;if(k.frame&&!Ext.supports.CSS3BorderRadius){h=k.frameElementsArray;g=h.length;e=0;for(;e<g;e++){d=h[e];a=k["frame"+d.toUpperCase()];j=b+"-"+d;if(a&&a.dom){a.addCls(j)}else{Ext.Array.remove(l[d],j)}}}k.frameElementCls=l;return n},addUIToElement:function(){var j=this,k=j.baseCls+"-"+j.ui,l=j.frameElementCls,g,e,d,a,b,h;j.addCls(k);if(j.frame&&!Ext.supports.CSS3BorderRadius){g=j.frameElementsArray;e=g.length;d=0;for(;d<e;d++){b=g[d];a=j["frame"+b.toUpperCase()];h=k+"-"+b;if(a){a.addCls(h)}else{if(!Ext.Array.contains(l[b],h)){l[b].push(h)}}}}},removeUIFromElement:function(){var j=this,k=j.baseCls+"-"+j.ui,l=j.frameElementCls,g,e,d,a,b,h;j.removeCls(k);if(j.frame&&!Ext.supports.CSS3BorderRadius){g=j.frameElementsArray;e=g.length;d=0;for(;d<e;d++){b=g[d];a=j["frame"+b.toUpperCase()];h=k+"-"+b;if(a){a.removeCls(h)}else{Ext.Array.remove(l[b],h)}}}},getTpl:function(a){return Ext.XTemplate.getTpl(this,a)},initStyles:function(j){var d=this,b=Ext.Element,g=d.padding,c=d.margin,h=d.x,e=d.y,a,i;if(g!==undefined){j.setStyle("padding",b.unitizeBox((g===true)?5:g))}if(c!==undefined){j.setStyle("margin",b.unitizeBox((c===true)?5:c))}if(d.border!==undefined){d.setBorder(d.border,j)}if(d.cls&&d.cls!=d.initialCls){j.addCls(d.cls);delete d.cls;delete d.initialCls}if(d.style&&d.style!=d.initialStyle){j.setStyle(d.style);delete d.style;delete d.initialStyle}if(h!==undefined){j.setStyle("left",(typeof h=="number")?(h+"px"):h)}if(e!==undefined){j.setStyle("top",(typeof e=="number")?(e+"px"):e)}if(!d.getFrameInfo()){a=d.width;i=d.height;if(a!==undefined){if(typeof a==="number"){if(Ext.isBorderBox){j.setStyle("width",a+"px")}}else{j.setStyle("width",a)}}if(i!==undefined){if(typeof i==="number"){if(Ext.isBorderBox){j.setStyle("height",i+"px")}}else{j.setStyle("height",i)}}}},initEvents:function(){var c=this,e=c.afterRenderEvents,b,d,a=function(g){c.mon(b,g)};if(e){for(d in e){if(e.hasOwnProperty(d)){b=c[d];if(b&&b.on){Ext.each(e[d],a)}}}}c.addFocusListener()},addFocusListener:function(){var c=this,b=c.getFocusEl(),a;if(b){if(b.isComponent){return b.addFocusListener()}a=b.needsTabIndex();if(!c.focusListenerAdded&&(!a||Ext.FocusManager.enabled)){if(a){b.dom.tabIndex=-1}b.on({focus:c.onFocus,blur:c.onBlur,scope:c});c.focusListenerAdded=true}}},getFocusEl:Ext.emptyFn,isFocusable:function(d){var b=this,a;if((b.focusable!==false)&&(a=b.getFocusEl())&&b.rendered&&!b.destroying&&!b.isDestroyed&&!b.disabled&&b.isVisible(true)){if(a.isComponent){return a.isFocusable()}return a&&a.dom&&a.isVisible()}},preFocus:Ext.emptyFn,onFocus:function(d){var c=this,b=c.focusCls,a=c.getFocusEl();if(!c.disabled){c.preFocus(d);if(b&&a){a.addCls(c.addClsWithUI(b,true))}if(!c.hasFocus){c.hasFocus=true;c.fireEvent("focus",c,d)}}},beforeBlur:Ext.emptyFn,onBlur:function(d){var c=this,b=c.focusCls,a=c.getFocusEl();if(c.destroying){return}c.beforeBlur(d);if(b&&a){a.removeCls(c.removeClsWithUI(b,true))}if(c.validateOnBlur){c.validate()}c.hasFocus=false;c.fireEvent("blur",c,d);c.postBlur(d)},postBlur:Ext.emptyFn,is:function(a){return Ext.ComponentQuery.is(this,a)},up:function(b){var a=this.getBubbleTarget();if(b){for(;a;a=a.getBubbleTarget()){if(Ext.ComponentQuery.is(a,b)){return a}}}return a},nextSibling:function(b){var g=this.ownerCt,d,e,a,h;if(g){d=g.items;a=d.indexOf(this)+1;if(a){if(b){for(e=d.getCount();a<e;a++){if((h=d.getAt(a)).is(b)){return h}}}else{if(a<d.getCount()){return d.getAt(a)}}}}return null},previousSibling:function(b){var e=this.ownerCt,d,a,g;if(e){d=e.items;a=d.indexOf(this);if(a!=-1){if(b){for(--a;a>=0;a--){if((g=d.getAt(a)).is(b)){return g}}}else{if(a){return d.getAt(--a)}}}}return null},previousNode:function(b,d){var j=this,h=j.ownerCt,a,g,e,c;if(d&&j.is(b)){return j}if(h){for(g=h.items.items,e=Ext.Array.indexOf(g,j)-1;e>-1;e--){c=g[e];if(c.query){a=c.query(b);a=a[a.length-1];if(a){return a}}if(c.is(b)){return c}}return h.previousNode(b,true)}return null},nextNode:function(d,j){var b=this,c=b.ownerCt,k,e,h,g,a;if(j&&b.is(d)){return b}if(c){for(e=c.items.items,g=Ext.Array.indexOf(e,b)+1,h=e.length;g<h;g++){a=e[g];if(a.is(d)){return a}if(a.down){k=a.down(d);if(k){return k}}}return c.nextNode(d)}return null},getId:function(){return this.id||(this.id="ext-comp-"+(this.getAutoId()))},getItemId:function(){return this.itemId||this.id},getEl:function(){return this.el},getTargetEl:function(){return this.frameBody||this.el},getOverflowStyle:function(){var b=this,a=null;if(typeof b.autoScroll=="boolean"){a={overflow:b.autoScroll?"auto":""}}else{if(b.overflowX!==undefined||b.overflowY!==undefined){a={"overflow-x":(b.overflowX||""),"overflow-y":(b.overflowY||"")}}}if(a&&(Ext.isIE6||Ext.isIE7)){a.position="relative"}return a},isXType:function(b,a){if(a){return this.xtype===b}else{return this.xtypesMap[b]}},getXTypes:function(){var c=this.self,d,b,a;if(!c.xtypes){d=[];b=this;while(b){a=b.xtypes;if(a!==undefined){d.unshift.apply(d,a)}b=b.superclass}c.xtypeChain=d;c.xtypes=d.join("/")}return c.xtypes},update:function(b,c,a){var d=this;if(d.tpl&&!Ext.isString(b)){d.data=b;if(d.rendered){d.tpl[d.tplWriteMode](d.getTargetEl(),b||{})}}else{d.html=Ext.isObject(b)?Ext.DomHelper.markup(b):b;if(d.rendered){d.getTargetEl().update(d.html,c,a)}}if(d.rendered){d.updateLayout()}},setVisible:function(a){return this[a?"show":"hide"]()},isVisible:function(a){var c=this,e=c,d=c.rendered&&!c.hidden,b=c.ownerCt;c.hiddenAncestor=false;if(c.destroyed){return false}if(a&&d&&b){while(b){if(b.hidden||(b.collapsed&&!(b.getDockedItems&&Ext.Array.contains(b.getDockedItems(),e)))){c.hiddenAncestor=b;d=false;break}e=b;b=b.ownerCt}}return d},onBoxReady:function(){var a=this;if(a.disableOnBoxReady){a.onDisable()}else{if(a.enableOnBoxReady){a.onEnable()}}if(a.resizable){a.initResizable(a.resizable)}if(a.draggable){a.initDraggable()}},enable:function(a){var b=this;delete b.disableOnBoxReady;b.removeCls(b.disabledCls);if(b.rendered){b.onEnable()}else{b.enableOnBoxReady=true}b.disabled=false;delete b.resetDisable;if(a!==true){b.fireEvent("enable",b)}return b},disable:function(a){var b=this;delete b.enableOnBoxReady;b.addCls(b.disabledCls);if(b.rendered){b.onDisable()}else{b.disableOnBoxReady=true}b.disabled=true;if(a!==true){delete b.resetDisable;b.fireEvent("disable",b)}return b},onEnable:function(){if(this.maskOnDisable){this.el.dom.disabled=false;this.unmask()}},onDisable:function(){var c=this,b=c.focusCls,a=c.getFocusEl();if(b&&a){a.removeCls(c.removeClsWithUI(b,true))}if(c.maskOnDisable){c.el.dom.disabled=true;c.mask()}},mask:function(){var b=this.lastBox,c=this.getMaskTarget(),a=[];if(b){a[2]=b.height}c.mask.apply(c,a)},unmask:function(){this.getMaskTarget().unmask()},getMaskTarget:function(){return this.el},isDisabled:function(){return this.disabled},setDisabled:function(a){return this[a?"disable":"enable"]()},isHidden:function(){return this.hidden},addCls:function(a){var c=this,b=c.rendered?c.el:c.protoEl;b.addCls.apply(b,arguments);return c},addClass:function(){return this.addCls.apply(this,arguments)},hasCls:function(a){var c=this,b=c.rendered?c.el:c.protoEl;return b.hasCls.apply(b,arguments)},removeCls:function(a){var c=this,b=c.rendered?c.el:c.protoEl;b.removeCls.apply(b,arguments);return c},addOverCls:function(){var a=this;if(!a.disabled){a.el.addCls(a.overCls)}},removeOverCls:function(){this.el.removeCls(this.overCls)},addListener:function(b,g,e,a){var h=this,d,c;if(Ext.isString(b)&&(Ext.isObject(g)||a&&a.element)){if(a.element){d=g;g={};g[b]=d;b=a.element;if(e){g.scope=e}for(c in a){if(a.hasOwnProperty(c)){if(h.eventOptionsRe.test(c)){g[c]=a[c]}}}}if(h[b]&&h[b].on){h.mon(h[b],g)}else{h.afterRenderEvents=h.afterRenderEvents||{};if(!h.afterRenderEvents[b]){h.afterRenderEvents[b]=[]}h.afterRenderEvents[b].push(g)}}return h.mixins.observable.addListener.apply(h,arguments)},removeManagedListenerItem:function(b,a,i,d,g,e){var h=this,c=a.options?a.options.element:null;if(c){c=h[c];if(c&&c.un){if(b||(a.item===i&&a.ename===d&&(!g||a.fn===g)&&(!e||a.scope===e))){c.un(a.ename,a.fn,a.scope);if(!b){Ext.Array.remove(h.managedListeners,a)}}}}else{return h.mixins.observable.removeManagedListenerItem.apply(h,arguments)}},getBubbleTarget:function(){return this.ownerCt},isFloating:function(){return this.floating},isDraggable:function(){return !!this.draggable},isDroppable:function(){return !!this.droppable},onAdded:function(a,c){var b=this;b.ownerCt=a;if(b.hasListeners.added){b.fireEvent("added",b,a,c)}},onRemoved:function(b){var a=this;if(a.hasListeners.removed){a.fireEvent("removed",a,a.ownerCt)}delete a.ownerCt;delete a.ownerLayout},beforeDestroy:Ext.emptyFn,onResize:Ext.emptyFn,setSize:function(b,a){var c=this;if(b&&typeof b=="object"){a=b.height;b=b.width}if(typeof b=="number"){c.width=Ext.Number.constrain(b,c.minWidth,c.maxWidth)}else{if(b===null){delete c.width}}if(typeof a=="number"){c.height=Ext.Number.constrain(a,c.minHeight,c.maxHeight)}else{if(a===null){delete c.height}}if(c.rendered&&c.isVisible()){c.updateLayout({isRoot:false})}return c},isLayoutRoot:function(){var a=this,b=a.ownerLayout;if(!b||a._isLayoutRoot||a.floating){return true}return b.isItemLayoutRoot(a)},isLayoutSuspended:function(){var a=this,b;while(a){if(a.layoutSuspendCount||a.suspendLayout){return true}b=a.ownerLayout;if(!b){break}a=b.owner}return false},updateLayout:function(b){var c=this,d,a=b&&b.isRoot;if(!c.rendered||c.layoutSuspendCount||c.suspendLayout){return}if(c.hidden){Ext.AbstractComponent.cancelLayout(c)}else{if(typeof a!="boolean"){a=c.isLayoutRoot()}}if(a||!c.ownerLayout||!c.ownerLayout.onContentChange(c)){if(!c.isLayoutSuspended()){d=(b&&b.hasOwnProperty("defer"))?b.defer:c.deferLayouts;Ext.AbstractComponent.updateLayout(c,d)}}},getSizeModel:function(j){var n=this,a=Ext.layout.SizeModel,d=n.componentLayout.ownerContext,b=n.width,p=n.height,q,c,g,e,h,o,l,m,k,i;if(d){i=d.widthModel;h=d.heightModel}if(!i||!h){g=((q=typeof b)=="number");e=((c=typeof p)=="number");k=n.floating||!(o=n.ownerLayout);if(k){l=Ext.layout.Layout.prototype.autoSizePolicy;m=n.floating?3:n.shrinkWrap;if(g){i=a.configured}if(e){h=a.configured}}else{l=o.getItemSizePolicy(n,j);m=o.isItemShrinkWrap(n)}m=(m===true)?3:(m||0);if(k&&m){if(b&&q=="string"){m&=2}if(p&&c=="string"){m&=1}}if(m!==3){if(!j){j=n.ownerCt&&n.ownerCt.getSizeModel()}if(j){m|=(j.width.shrinkWrap?1:0)|(j.height.shrinkWrap?2:0)}}if(!i){if(!l.setsWidth){if(g){i=a.configured}else{i=(m&1)?a.shrinkWrap:a.natural}}else{if(l.readsWidth){if(g){i=a.calculatedFromConfigured}else{i=(m&1)?a.calculatedFromShrinkWrap:a.calculatedFromNatural}}else{i=a.calculated}}}if(!h){if(!l.setsHeight){if(e){h=a.configured}else{h=(m&2)?a.shrinkWrap:a.natural}}else{if(l.readsHeight){if(e){h=a.calculatedFromConfigured}else{h=(m&2)?a.calculatedFromShrinkWrap:a.calculatedFromNatural}}else{h=a.calculated}}}}return i.pairsByHeightOrdinal[h.ordinal]},isDescendant:function(a){if(a.isContainer){for(var b=this.ownerCt;b;b=b.ownerCt){if(b===a){return true}}}return false},doComponentLayout:function(){this.updateLayout();return this},forceComponentLayout:function(){this.updateLayout()},setComponentLayout:function(b){var a=this.componentLayout;if(a&&a.isLayout&&a!=b){a.setOwner(null)}this.componentLayout=b;b.setOwner(this)},getComponentLayout:function(){var a=this;if(!a.componentLayout||!a.componentLayout.isLayout){a.setComponentLayout(Ext.layout.Layout.create(a.componentLayout,"autocomponent"))}return a.componentLayout},afterComponentLayout:function(a,k,b,j){var g=this,h,d,c,e;if(++g.componentLayoutCounter===1){g.afterFirstLayout(a,k)}if(g.floatingItems){h=g.floatingItems.items;d=h.length;for(c=0;c<d;c++){e=h[c];if(!e.rendered&&e.autoShow){e.show()}}}if(g.hasListeners.resize&&(a!==b||k!==j)){g.fireEvent("resize",g,a,k,b,j)}},beforeComponentLayout:function(b,a){return true},setPosition:function(a,e,b){var c=this,d=c.beforeSetPosition.apply(c,arguments);if(d&&c.rendered){d=c.convertPosition(d);if(d.left!==c.el.getLeft()||d.top!==c.el.getTop()){if(b){c.stopAnimation();c.animate(Ext.apply({duration:1000,listeners:{afteranimate:Ext.Function.bind(c.afterSetPosition,c,[d.left,d.top])},to:d},b))}else{if(d.left!==undefined&&d.top!==undefined){c.el.setLeftTop(d.left,d.top)}else{if(d.left!==undefined){c.el.setLeft(d.left)}else{if(d.top!==undefined){c.el.setTop(d.top)}}}c.afterSetPosition(d.left,d.top)}}}return c},beforeSetPosition:function(a,e,b){var d,c;if(!a||Ext.isNumber(a)){d={x:a,y:e,anim:b}}else{if(Ext.isNumber(c=a[0])){d={x:c,y:a[1],anim:e}}else{d={x:a.x,y:a.y,anim:e}}}d.hasX=Ext.isNumber(d.x);d.hasY=Ext.isNumber(d.y);this.x=d.x;this.y=d.y;return(d.hasX||d.hasY)?d:null},afterSetPosition:function(a,c){var b=this;b.onPosition(a,c);if(b.hasListeners.move){b.fireEvent("move",b,a,c)}},convertPosition:function(d,b){var a={},c=Ext.Element;if(d.hasX){a.left=b?c.addUnits(d.x):d.x}if(d.hasY){a.top=b?c.addUnits(d.y):d.y}return a},onPosition:Ext.emptyFn,setWidth:function(a){return this.setSize(a)},setHeight:function(a){return this.setSize(undefined,a)},getSize:function(){return this.el.getSize()},getWidth:function(){return this.el.getWidth()},getHeight:function(){return this.el.getHeight()},getLoader:function(){var c=this,b=c.autoLoad?(Ext.isObject(c.autoLoad)?c.autoLoad:{url:c.autoLoad}):null,a=c.loader||b;if(a){if(!a.isLoader){c.loader=new Ext.ComponentLoader(Ext.apply({target:c,autoLoad:b},a))}else{a.setTarget(c)}return c.loader}return null},setDocked:function(b,c){var a=this;a.dock=b;if(c&&a.ownerCt&&a.rendered){a.ownerCt.updateLayout()}return a},setBorder:function(b,d){var c=this,a=!!d;if(c.rendered||a){if(!a){d=c.el}if(!b){b=0}else{b=Ext.Element.unitizeBox((b===true)?1:b)}d.setStyle("border-width",b);if(!a){c.updateLayout()}}c.border=b},onDestroy:function(){var a=this;if(a.monitorResize&&Ext.EventManager.resizeEvent){Ext.EventManager.resizeEvent.removeListener(a.setSize,a)}Ext.destroy(a.componentLayout,a.loadMask,a.floatingDescendants)},destroy:function(){var d=this,b=d.renderSelectors,a,c;if(!d.isDestroyed){if(!d.hasListeners.beforedestroy||d.fireEvent("beforedestroy",d)!==false){d.destroying=true;d.beforeDestroy();if(d.floating){delete d.floatParent;if(d.zIndexManager){d.zIndexManager.unregister(d)}}else{if(d.ownerCt&&d.ownerCt.remove){d.ownerCt.remove(d,false)}}d.onDestroy();Ext.destroy(d.plugins);if(d.hasListeners.destroy){d.fireEvent("destroy",d)}Ext.ComponentManager.unregister(d);d.mixins.state.destroy.call(d);d.clearListeners();if(d.rendered){if(!d.preserveElOnDestroy){d.el.remove()}d.mixins.elementCt.destroy.call(d);if(b){for(a in b){if(b.hasOwnProperty(a)){c=d[a];if(c){delete d[a];c.remove()}}}}delete d.el;delete d.frameBody;delete d.rendered}d.destroying=false;d.isDestroyed=true}}},getPlugin:function(b){var c=0,a=this.plugins,d=a.length;for(;c<d;c++){if(a[c].pluginId===b){return a[c]}}},isDescendantOf:function(a){return !!this.findParentBy(function(b){return b===a})}},function(){var a=this;a.createAlias({on:"addListener",prev:"previousSibling",next:"nextSibling"});Ext.resumeLayouts=function(b){a.resumeLayouts(b)};Ext.suspendLayouts=function(){a.suspendLayouts()};Ext.batchLayouts=function(c,b){a.suspendLayouts();c.call(b);a.resumeLayouts(true)}});Ext.define("Ext.AbstractPlugin",{disabled:false,constructor:function(a){this.initialConfig=a;Ext.apply(this,a)},clone:function(){return new this.self(this.initialConfig)},getCmp:function(){return this.cmp},init:Ext.emptyFn,destroy:Ext.emptyFn,enable:function(){this.disabled=false},disable:function(){this.disabled=true}});Ext.define("Ext.Action",{constructor:function(a){this.initialConfig=a;this.itemId=a.itemId=(a.itemId||a.id||Ext.id());this.items=[]},isAction:true,setText:function(a){this.initialConfig.text=a;this.callEach("setText",[a])},getText:function(){return this.initialConfig.text},setIconCls:function(a){this.initialConfig.iconCls=a;this.callEach("setIconCls",[a])},getIconCls:function(){return this.initialConfig.iconCls},setDisabled:function(a){this.initialConfig.disabled=a;this.callEach("setDisabled",[a])},enable:function(){this.setDisabled(false)},disable:function(){this.setDisabled(true)},isDisabled:function(){return this.initialConfig.disabled},setHidden:function(a){this.initialConfig.hidden=a;this.callEach("setVisible",[!a])},show:function(){this.setHidden(false)},hide:function(){this.setHidden(true)},isHidden:function(){return this.initialConfig.hidden},setHandler:function(b,a){this.initialConfig.handler=b;this.initialConfig.scope=a;this.callEach("setHandler",[b,a])},each:function(b,a){Ext.each(this.items,b,a)},callEach:function(g,c){var b=this.items,d=0,a=b.length,e;Ext.suspendLayouts();for(;d<a;d++){e=b[d];e[g].apply(e,c)}Ext.resumeLayouts(true)},addComponent:function(a){this.items.push(a);a.on("destroy",this.removeComponent,this)},removeComponent:function(a){Ext.Array.remove(this.items,a)},execute:function(){this.initialConfig.handler.apply(this.initialConfig.scope||Ext.global,arguments)}});Ext.define("Ext.data.Connection",{mixins:{observable:"Ext.util.Observable"},statics:{requestId:0},url:null,async:true,method:null,username:"",password:"",disableCaching:true,withCredentials:false,cors:false,disableCachingParam:"_dc",timeout:30000,useDefaultHeader:true,defaultPostHeader:"application/x-www-form-urlencoded; charset=UTF-8",useDefaultXhrHeader:true,defaultXhrHeader:"XMLHttpRequest",constructor:function(a){a=a||{};Ext.apply(this,a);this.requests={};this.mixins.observable.constructor.call(this)},request:function(k){k=k||{};var g=this,j=k.scope||window,e=k.username||g.username,h=k.password||g.password||"",b,c,d,a,i;if(g.fireEvent("beforerequest",g,k)!==false){c=g.setOptions(k,j);if(g.isFormUpload(k)){g.upload(k.form,c.url,c.data,k);return null}if(k.autoAbort||g.autoAbort){g.abort()}b=k.async!==false?(k.async||g.async):false;i=g.openRequest(k,c,b,e,h);a=g.setupHeaders(i,k,c.data,c.params);d={id:++Ext.data.Connection.requestId,xhr:i,headers:a,options:k,async:b,timeout:setTimeout(function(){d.timedout=true;g.abort(d)},k.timeout||g.timeout)};g.requests[d.id]=d;g.latestId=d.id;if(b){i.onreadystatechange=Ext.Function.bind(g.onStateChange,g,[d])}i.send(c.data);if(!b){return g.onComplete(d)}return d}else{Ext.callback(k.callback,k.scope,[k,undefined,undefined]);return null}},upload:function(b,g,s,e){b=Ext.getDom(b);e=e||{};var n=Ext.id(),l=document.createElement("iframe"),c=[],d="multipart/form-data",r={target:b.target,method:b.method,encoding:b.encoding,enctype:b.enctype,action:b.action},a=function(h,u){i=document.createElement("input");Ext.fly(i).set({type:"hidden",value:u,name:h});b.appendChild(i);c.push(i)},i,k,p,t,o,j,m,q;Ext.fly(l).set({id:n,name:n,cls:Ext.baseCSSPrefix+"hide-display",src:Ext.SSL_SECURE_URL});document.body.appendChild(l);if(document.frames){document.frames[n].name=n}Ext.fly(b).set({target:n,method:"POST",enctype:d,encoding:d,action:g||r.action});if(s){k=Ext.Object.fromQueryString(s)||{};for(t in k){if(k.hasOwnProperty(t)){p=k[t];if(Ext.isArray(p)){o=p.length;for(j=0;j<o;j++){a(t,p[j])}}else{a(t,p)}}}}Ext.fly(l).on("load",Ext.Function.bind(this.onUploadComplete,this,[l,e]),null,{single:true});b.submit();Ext.fly(b).set(r);m=c.length;for(q=0;q<m;q++){Ext.removeNode(c[q])}},onUploadComplete:function(i,c){var d=this,b={responseText:"",responseXML:null},h,a;try{h=i.contentWindow.document||i.contentDocument||window.frames[i.id].document;if(h){if(h.body){if((a=h.body.firstChild)&&/pre/i.test(a.tagName)){b.responseText=a.innerText}else{if(a=h.getElementsByTagName("textarea")[0]){b.responseText=a.value}else{b.responseText=h.body.textContent||h.body.innerText}}}b.responseXML=h.XMLDocument||h}}catch(g){}d.fireEvent("requestcomplete",d,b,c);Ext.callback(c.success,c.scope,[b,c]);Ext.callback(c.callback,c.scope,[c,true,b]);setTimeout(function(){Ext.removeNode(i)},100)},isFormUpload:function(a){var b=this.getForm(a);if(b){return(a.isUpload||(/multipart\/form-data/i).test(b.getAttribute("enctype")))}return false},getForm:function(a){return Ext.getDom(a.form)||null},setOptions:function(l,k){var i=this,e=l.params||{},h=i.extraParams,d=l.urlParams,c=l.url||i.url,j=l.jsonData,b,a,g;if(Ext.isFunction(e)){e=e.call(k,l)}if(Ext.isFunction(c)){c=c.call(k,l)}c=this.setupUrl(l,c);g=l.rawData||l.xmlData||j||null;if(j&&!Ext.isPrimitive(j)){g=Ext.encode(g)}if(Ext.isObject(e)){e=Ext.Object.toQueryString(e)}if(Ext.isObject(h)){h=Ext.Object.toQueryString(h)}e=e+((h)?((e)?"&":"")+h:"");d=Ext.isObject(d)?Ext.Object.toQueryString(d):d;e=this.setupParams(l,e);b=(l.method||i.method||((e||g)?"POST":"GET")).toUpperCase();this.setupMethod(l,b);a=l.disableCaching!==false?(l.disableCaching||i.disableCaching):false;if(b==="GET"&&a){c=Ext.urlAppend(c,(l.disableCachingParam||i.disableCachingParam)+"="+(new Date().getTime()))}if((b=="GET"||g)&&e){c=Ext.urlAppend(c,e);e=null}if(d){c=Ext.urlAppend(c,d)}return{url:c,method:b,data:g||e||null}},setupUrl:function(b,a){var c=this.getForm(b);if(c){a=a||c.action}return a},setupParams:function(a,d){var c=this.getForm(a),b;if(c&&!this.isFormUpload(a)){b=Ext.Element.serializeForm(c);d=d?(d+"&"+b):b}return d},setupMethod:function(a,b){if(this.isFormUpload(a)){return"POST"}return b},setupHeaders:function(m,n,d,c){var i=this,b=Ext.apply({},n.headers||{},i.defaultHeaders||{}),l=i.defaultPostHeader,j=n.jsonData,a=n.xmlData,k,g;if(!b["Content-Type"]&&(d||c)){if(d){if(n.rawData){l="text/plain"}else{if(a&&Ext.isDefined(a)){l="text/xml"}else{if(j&&Ext.isDefined(j)){l="application/json"}}}}b["Content-Type"]=l}if(i.useDefaultXhrHeader&&!b["X-Requested-With"]){b["X-Requested-With"]=i.defaultXhrHeader}try{for(k in b){if(b.hasOwnProperty(k)){g=b[k];m.setRequestHeader(k,g)}}}catch(h){i.fireEvent("exception",k,g)}return b},newRequest:function(a){var b;if((a.cors||this.cors)&&Ext.isIE&&Ext.ieVersion>=8){b=new XDomainRequest()}else{b=this.getXhrInstance()}return b},openRequest:function(c,a,d,g,b){var e=this.newRequest(c);if(g){e.open(a.method,a.url,d,g,b)}else{e.open(a.method,a.url,d)}if(c.withCredentials||this.withCredentials){e.withCredentials=true}return e},getXhrInstance:(function(){var b=[function(){return new XMLHttpRequest()},function(){return new ActiveXObject("MSXML2.XMLHTTP.3.0")},function(){return new ActiveXObject("MSXML2.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")}],c=0,a=b.length,g;for(;c<a;++c){try{g=b[c];g();break}catch(d){}}return g}()),isLoading:function(a){if(!a){a=this.getLatest()}if(!(a&&a.xhr)){return false}var b=a.xhr.readyState;return !(b===0||b==4)},abort:function(b){var a=this,d;if(!b){b=a.getLatest()}if(b&&a.isLoading(b)){d=b.xhr;try{d.onreadystatechange=null}catch(c){d=Ext.emptyFn}d.abort();a.clearTimeout(b);if(!b.timedout){b.aborted=true}a.onComplete(b);a.cleanup(b)}},abortAll:function(){var b=this.requests,a;for(a in b){if(b.hasOwnProperty(a)){this.abort(b[a])}}},getLatest:function(){var b=this.latestId,a;if(b){a=this.requests[b]}return a||null},onStateChange:function(a){if(a.xhr.readyState==4){this.clearTimeout(a);this.onComplete(a);this.cleanup(a)}},clearTimeout:function(a){clearTimeout(a.timeout);delete a.timeout},cleanup:function(a){a.xhr=null;delete a.xhr},onComplete:function(g){var d=this,c=g.options,a,i,b;try{a=d.parseStatus(g.xhr.status)}catch(h){a={success:false,isException:false}}i=a.success;if(i){b=d.createResponse(g);d.fireEvent("requestcomplete",d,b,c);Ext.callback(c.success,c.scope,[b,c])}else{if(a.isException||g.aborted||g.timedout){b=d.createException(g)}else{b=d.createResponse(g)}d.fireEvent("requestexception",d,b,c);Ext.callback(c.failure,c.scope,[b,c])}Ext.callback(c.callback,c.scope,[c,i,b]);delete d.requests[g.id];return b},parseStatus:function(a){a=a==1223?204:a;var c=(a>=200&&a<300)||a==304,b=false;if(!c){switch(a){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:b=true;break}}return{success:c,isException:b}},createResponse:function(c){var i=c.xhr,a={},j=i.getAllResponseHeaders().replace(/\r\n/g,"\n").split("\n"),d=j.length,k,e,h,g,b;while(d--){k=j[d];e=k.indexOf(":");if(e>=0){h=k.substr(0,e).toLowerCase();if(k.charAt(e+1)==" "){++e}a[h]=k.substr(e+1)}}c.xhr=null;delete c.xhr;b={request:c,requestId:c.id,status:i.status,statusText:i.statusText,getResponseHeader:function(l){return a[l.toLowerCase()]},getAllResponseHeaders:function(){return a},responseText:i.responseText,responseXML:i.responseXML};i=null;return b},createException:function(a){return{request:a,requestId:a.id,status:a.aborted?-1:0,statusText:a.aborted?"transaction aborted":"communication failure",aborted:a.aborted,timedout:a.timedout}}});Ext.define("Ext.Ajax",{extend:"Ext.data.Connection",singleton:true,autoAbort:false});Ext.define("Ext.util.Floating",{uses:["Ext.Layer","Ext.window.Window"],focusOnToFront:true,shadow:"sides",constructor:function(b){var a=this;a.el=new Ext.Layer(Ext.apply({hideMode:a.hideMode,hidden:a.hidden,shadow:(typeof a.shadow!="undefined")?a.shadow:"sides",shadowOffset:a.shadowOffset,constrain:false,shim:(a.shim===false)?false:undefined},a.floating),b);a.floating=true;a.registerWithOwnerCt()},registerWithOwnerCt:function(){var a=this;if(a.zIndexParent){a.zIndexParent.unregisterFloatingItem(a)}a.zIndexParent=a.up("[floating]");a.setFloatParent(a.ownerCt);delete a.ownerCt;if(a.zIndexParent){a.zIndexParent.registerFloatingItem(a)}else{Ext.WindowManager.register(a)}},setFloatParent:function(b){var a=this;if(a.floatParent){a.mun(a.floatParent,{hide:a.onFloatParentHide,show:a.onFloatParentShow,scope:a})}a.floatParent=b;if(b){a.mon(a.floatParent,{hide:a.onFloatParentHide,show:a.onFloatParentShow,scope:a})}if((a.constrain||a.constrainHeader)&&!a.constrainTo){a.constrainTo=b?b.getTargetEl():a.container}},onAfterFloatLayout:function(){this.syncShadow()},onFloatParentHide:function(){var a=this;if(a.hideOnParentHide!==false&&a.isVisible()){a.hide();a.showOnParentShow=true}},onFloatParentShow:function(){if(this.showOnParentShow){delete this.showOnParentShow;this.show()}},setZIndex:function(a){var b=this;b.el.setZIndex(a);a+=10;if(b.floatingDescendants){a=Math.floor(b.floatingDescendants.setBase(a)/100)*100+10000}return a},doConstrain:function(b){var c=this,a=c.getConstrainVector(b),d;if(a){d=c.getPosition(!!c.floatParent);d[0]+=a[0];d[1]+=a[1];c.setPosition(d)}},getConstrainVector:function(a){var b=this;if(b.constrain||b.constrainHeader){a=a||(b.floatParent&&b.floatParent.getTargetEl())||b.container||b.el.getScopeParent();return(b.constrainHeader?b.header.el:b.el).getConstrainVector(a)}},alignTo:function(b,a,c){this.setPagePosition(this.el.getAlignToXY(b.el||b,a,c));return this},toFront:function(b){var a=this;if(a.zIndexParent&&a.bringParentToFront!==false){a.zIndexParent.toFront(true)}if(!Ext.isDefined(b)){b=!a.focusOnToFront}if(b){a.preventFocusOnActivate=true}if(a.zIndexManager.bringToFront(a)){if(!b){a.focus(false,true)}}delete a.preventFocusOnActivate;return a},setActive:function(b,c){var a=this;if(b){if(a.el.shadow&&!a.maximized){a.el.enableShadow(true)}if(a.modal&&!a.preventFocusOnActivate){a.focus(false,true)}a.fireEvent("activate",a)}else{if(a.isWindow&&(c&&c.isWindow)){a.el.disableShadow()}a.fireEvent("deactivate",a)}},toBack:function(){this.zIndexManager.sendToBack(this);return this},center:function(){var a=this,b;if(a.isVisible()){b=a.el.getAlignToXY(a.container,"c-c");a.setPagePosition(b)}else{a.needsCenter=true}return a},onFloatShow:function(){if(this.needsCenter){this.center()}delete this.needsCenter},syncShadow:function(){if(this.floating){this.el.sync(true)}},fitContainer:function(){var c=this,b=c.floatParent,a=b?b.getTargetEl():c.container;c.setSize(a.getViewSize(false));c.setPosition.apply(c,b?[0,0]:a.getXY())}});Ext.define("Ext.Component",{alias:["widget.component","widget.box"],extend:"Ext.AbstractComponent",requires:["Ext.util.DelayedTask"],uses:["Ext.Layer","Ext.resizer.Resizer","Ext.util.ComponentDragger"],mixins:{floating:"Ext.util.Floating"},statics:{DIRECTION_TOP:"top",DIRECTION_RIGHT:"right",DIRECTION_BOTTOM:"bottom",DIRECTION_LEFT:"left",VERTICAL_DIRECTION_Re:/^(?:top|bottom)$/,INVALID_ID_CHARS_Re:/[\.,\s]/g},resizeHandles:"all",floating:false,toFrontOnShow:true,hideMode:"display",bubbleEvents:[],monPropRe:/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/,defaultComponentLayoutType:"autocomponent",constructor:function(a){var b=this;a=a||{};if(a.initialConfig){if(a.isAction){b.baseAction=a}a=a.initialConfig}else{if(a.tagName||a.dom||Ext.isString(a)){a={applyTo:a,id:a.id||a}}}b.callParent([a]);if(b.baseAction){b.baseAction.addComponent(b)}},initComponent:function(){var a=this;a.callParent();if(a.listeners){a.on(a.listeners);a.listeners=null}a.enableBubble(a.bubbleEvents);a.mons=[]},afterRender:function(){var a=this;a.callParent();if(!(a.x&&a.y)&&(a.pageX||a.pageY)){a.setPagePosition(a.pageX,a.pageY)}},setAutoScroll:function(a){var b=this;b.autoScroll=!!a;if(b.rendered){b.getTargetEl().setStyle(b.getOverflowStyle())}b.updateLayout();return b},setOverflowXY:function(b,a){var c=this,d=arguments.length;if(d){c.overflowX=b||"";if(d>1){c.overflowY=a||""}}if(c.rendered){c.getTargetEl().setStyle(c.getOverflowStyle())}c.updateLayout();return c},beforeRender:function(){var b=this,c=b.floating,a;if(c){b.addCls(Ext.baseCSSPrefix+"layer");a=c.cls;if(a){b.addCls(a)}}return b.callParent()},afterComponentLayout:function(){this.callParent(arguments);if(this.floating){this.onAfterFloatLayout()}},makeFloating:function(a){this.mixins.floating.constructor.call(this,a)},wrapPrimaryEl:function(a){if(this.floating){this.makeFloating(a)}else{this.callParent(arguments)}},initResizable:function(a){var b=this;a=Ext.apply({target:b,dynamic:false,constrainTo:b.constrainTo||(b.floatParent?b.floatParent.getTargetEl():null),handles:b.resizeHandles},a);a.target=b;b.resizer=new Ext.resizer.Resizer(a)},getDragEl:function(){return this.el},initDraggable:function(){var c=this,a=(c.resizer&&c.resizer.el!==c.el)?c.resizerComponent=new Ext.Component({el:c.resizer.el,rendered:true,container:c.container}):c,b=Ext.applyIf({el:a.getDragEl(),constrainTo:c.constrain?(c.constrainTo||(c.floatParent?c.floatParent.getTargetEl():c.el.getScopeParent())):undefined},c.draggable);if(c.constrain||c.constrainDelegate){b.constrain=c.constrain;b.constrainDelegate=c.constrainDelegate}c.dd=new Ext.util.ComponentDragger(a,b)},scrollBy:function(b,a,c){var d;if((d=this.getTargetEl())&&d.dom){d.scrollBy.apply(d,arguments)}},setLoading:function(c,d){var b=this,a;if(b.rendered){Ext.destroy(b.loadMask);b.loadMask=null;if(c!==false&&!b.collapsed){if(Ext.isObject(c)){a=Ext.apply({},c)}else{if(Ext.isString(c)){a={msg:c}}else{a={}}}if(d){Ext.applyIf(a,{useTargetEl:true})}b.loadMask=new Ext.LoadMask(b,a);b.loadMask.show()}}return b.loadMask},beforeSetPosition:function(){var b=this,c=b.callParent(arguments),a;if(c){a=b.adjustPosition(c.x,c.y);c.x=a.x;c.y=a.y}return c||null},afterSetPosition:function(b,a){this.onPosition(b,a);this.fireEvent("move",this,b,a)},showAt:function(a,d,b){var c=this;if(!c.rendered&&(c.autoRender||c.floating)){c.doAutoRender();c.hidden=true}if(c.floating){c.setPosition(a,d,b)}else{c.setPagePosition(a,d,b)}c.show()},setPagePosition:function(a,g,b){var c=this,d,e;if(Ext.isArray(a)){g=a[1];a=a[0]}c.pageX=a;c.pageY=g;if(c.floating){if(c.isContainedFloater()){e=c.floatParent.getTargetEl().getViewRegion();if(Ext.isNumber(a)&&Ext.isNumber(e.left)){a-=e.left}if(Ext.isNumber(g)&&Ext.isNumber(e.top)){g-=e.top}}else{d=c.el.translatePoints(a,g);a=d.left;g=d.top}c.setPosition(a,g,b)}else{d=c.el.translatePoints(a,g);c.setPosition(d.left,d.top,b)}return c},isContainedFloater:function(){return(this.floating&&this.floatParent)},getBox:function(b){var c=b?this.getPosition(b):this.el.getXY(),a=this.getSize();a.x=c[0];a.y=c[1];return a},updateBox:function(a){this.setSize(a.width,a.height);this.setPagePosition(a.x,a.y);return this},getOuterSize:function(){var a=this.el;return{width:a.getWidth()+a.getMargin("lr"),height:a.getHeight()+a.getMargin("tb")}},adjustPosition:function(a,d){var b=this,c;if(b.isContainedFloater()){c=b.floatParent.getTargetEl().getViewRegion();a+=c.left;d+=c.top}return{x:a,y:d}},getPosition:function(a){var c=this,b=c.el,e,d=c.isContainedFloater(),g;if((a===true)&&!d){return[b.getLocalX(),b.getLocalY()]}e=c.el.getXY();if((a===true)&&d){g=c.floatParent.getTargetEl().getViewRegion();e[0]-=g.left;e[1]-=g.top}return e},getId:function(){var a=this,b;if(!a.id){b=a.getXType();if(b){b=b.replace(Ext.Component.INVALID_ID_CHARS_Re,"-")}else{b=Ext.name.toLowerCase()+"-comp"}a.id=b+"-"+a.getAutoId()}return a.id},show:function(d,a,b){var c=this,e=c.rendered;if(e&&c.isVisible()){if(c.toFrontOnShow&&c.floating){c.toFront()}}else{if(c.fireEvent("beforeshow",c)!==false){c.hidden=false;if(!e&&(c.autoRender||c.floating)){c.doAutoRender();e=c.rendered}if(e){c.beforeShow();c.onShow.apply(c,arguments);c.afterShow.apply(c,arguments)}}else{c.onShowVeto()}}return c},onShowVeto:Ext.emptyFn,beforeShow:Ext.emptyFn,onShow:function(){var a=this;a.el.show();a.callParent(arguments);if(a.floating){if(a.maximized){a.fitContainer()}else{if(a.constrain){a.doConstrain()}}}},afterShow:function(h,b,e){var g=this,a,c,d;h=h||g.animateTarget;if(!g.ghost){h=null}if(h){h=h.el?h.el:Ext.get(h);c=g.el.getBox();a=h.getBox();g.el.addCls(Ext.baseCSSPrefix+"hide-offsets");d=g.ghost();d.el.stopAnimation();d.el.setX(-10000);d.el.animate({from:a,to:c,listeners:{afteranimate:function(){delete d.componentLayout.lastComponentSize;g.unghost();g.el.removeCls(Ext.baseCSSPrefix+"hide-offsets");g.onShowComplete(b,e)}}})}else{g.onShowComplete(b,e)}},onShowComplete:function(a,b){var c=this;if(c.floating){c.toFront();c.onFloatShow()}Ext.callback(a,b||c);c.fireEvent("show",c);delete c.hiddenByLayout},hide:function(){var a=this;a.showOnParentShow=false;if(!(a.rendered&&!a.isVisible())&&a.fireEvent("beforehide",a)!==false){a.hidden=true;if(a.rendered){a.onHide.apply(a,arguments)}}return a},onHide:function(g,a,d){var e=this,c,b;g=g||e.animateTarget;if(!e.ghost){g=null}if(g){g=g.el?g.el:Ext.get(g);c=e.ghost();c.el.stopAnimation();b=g.getBox();b.width+="px";b.height+="px";c.el.animate({to:b,listeners:{afteranimate:function(){delete c.componentLayout.lastComponentSize;c.el.hide();e.afterHide(a,d)}}})}e.el.hide();if(!g){e.afterHide(a,d)}},afterHide:function(a,b){var c=this;delete c.hiddenByLayout;Ext.AbstractComponent.prototype.onHide.call(this);Ext.callback(a,b||c);c.fireEvent("hide",c)},onDestroy:function(){var a=this;if(a.rendered){Ext.destroy(a.proxy,a.proxyWrap,a.resizer,a.resizerComponent)}delete a.focusTask;a.callParent()},deleteMembers:function(){var b=arguments,a=b.length,c=0;for(;c<a;++c){delete this[b[c]]}},focus:function(e,c){var d=this,a,g,b;if(c){if(!d.focusTask){d.focusTask=new Ext.util.DelayedTask(d.focus)}d.focusTask.delay(Ext.isNumber(c)?c:10,null,d,[e,false]);return d}if(d.rendered&&!d.isDestroyed&&d.isVisible(true)&&(a=d.getFocusEl())){if(a.isComponent){return a.focus(e,c)}if((g=a.dom)){if(a.needsTabIndex()){g.tabIndex=-1}if(d.floating){b=d.container.dom.scrollTop}a.focus();if(e===true){g.select()}}if(d.floating){d.toFront(true);if(b!==undefined){d.container.dom.scrollTop=b}}}return d},cancelFocus:function(){var a=this.focusTask;if(a){a.cancel()}},blur:function(){var a;if(this.rendered&&(a=this.getFocusEl())){a.blur()}return this},getEl:function(){return this.el},getResizeEl:function(){return this.el},getPositionEl:function(){return this.el},getActionEl:function(){return this.el},getVisibilityEl:function(){return this.el},onResize:Ext.emptyFn,getBubbleTarget:function(){return this.ownerCt||this.floatParent},getContentTarget:function(){return this.el},cloneConfig:function(c){c=c||{};var d=c.id||Ext.id(),a=Ext.applyIf(c,this.initialConfig),b;a.id=d;b=Ext.getClass(this);return new b(a)},getXType:function(){return this.self.xtype},findParentBy:function(a){var b;for(b=this.getBubbleTarget();b&&!a(b,this);b=b.getBubbleTarget()){}return b||null},findParentByType:function(a){return Ext.isFunction(a)?this.findParentBy(function(b){return b.constructor===a}):this.up(a)},bubble:function(c,b,a){var d=this;while(d){if(c.apply(b||d,a||[d])===false){break}d=d.getBubbleTarget()}return this},getProxy:function(){var a=this,b;if(!a.proxy){b=Ext.getBody();if(Ext.scopeResetCSS){a.proxyWrap=b=Ext.getBody().createChild({cls:Ext.resetCls})}a.proxy=a.el.createProxy(Ext.baseCSSPrefix+"proxy-el",b,true)}return a.proxy}});Ext.define("Ext.ElementLoader",{mixins:{observable:"Ext.util.Observable"},uses:["Ext.data.Connection","Ext.Ajax"],statics:{Renderer:{Html:function(a,b,c){a.getTarget().update(b.responseText,c.scripts===true);return true}}},url:null,params:null,baseParams:null,autoLoad:false,target:null,loadMask:false,ajaxOptions:null,scripts:false,isLoader:true,constructor:function(b){var c=this,a;b=b||{};Ext.apply(c,b);c.setTarget(c.target);c.addEvents("beforeload","exception","load");c.mixins.observable.constructor.call(c);if(c.autoLoad){a=c.autoLoad;if(a===true){a={}}c.load(a)}},setTarget:function(b){var a=this;b=Ext.get(b);if(a.target&&a.target!=b){a.abort()}a.target=b},getTarget:function(){return this.target||null},abort:function(){var a=this.active;if(a!==undefined){Ext.Ajax.abort(a.request);if(a.mask){this.removeMask()}delete this.active}},removeMask:function(){this.target.unmask()},addMask:function(a){this.target.mask(a===true?null:a)},load:function(i){i=Ext.apply({},i);var e=this,d=e.target,j=Ext.isDefined(i.loadMask)?i.loadMask:e.loadMask,b=Ext.apply({},i.params),a=Ext.apply({},i.ajaxOptions),g=i.callback||e.callback,h=i.scope||e.scope||e,c;Ext.applyIf(a,e.ajaxOptions);Ext.applyIf(i,a);Ext.applyIf(b,e.params);Ext.apply(b,e.baseParams);Ext.applyIf(i,{url:e.url});Ext.apply(i,{scope:e,params:b,callback:e.onComplete});if(e.fireEvent("beforeload",e,i)===false){return}if(j){e.addMask(j)}c=Ext.Ajax.request(i);e.active={request:c,options:i,mask:j,scope:h,callback:g,success:i.success||e.success,failure:i.failure||e.failure,renderer:i.renderer||e.renderer,scripts:Ext.isDefined(i.scripts)?i.scripts:e.scripts};e.setOptions(e.active,i)},setOptions:Ext.emptyFn,onComplete:function(b,h,a){var d=this,g=d.active,c=g.scope,e=d.getRenderer(g.renderer);if(h){h=e.call(d,d,a,g)!==false}if(h){Ext.callback(g.success,c,[d,a,b]);d.fireEvent("load",d,a,b)}else{Ext.callback(g.failure,c,[d,a,b]);d.fireEvent("exception",d,a,b)}Ext.callback(g.callback,c,[d,h,a,b]);if(g.mask){d.removeMask()}delete d.active},getRenderer:function(a){if(Ext.isFunction(a)){return a}return this.statics().Renderer.Html},startAutoRefresh:function(a,b){var c=this;c.stopAutoRefresh();c.autoRefresh=setInterval(function(){c.load(b)},a)},stopAutoRefresh:function(){clearInterval(this.autoRefresh);delete this.autoRefresh},isAutoRefreshing:function(){return Ext.isDefined(this.autoRefresh)},destroy:function(){var a=this;a.stopAutoRefresh();delete a.target;a.abort();a.clearListeners()}});Ext.define("Ext.ComponentLoader",{extend:"Ext.ElementLoader",statics:{Renderer:{Data:function(a,b,d){var g=true;try{a.getTarget().update(Ext.decode(b.responseText))}catch(c){g=false}return g},Component:function(a,c,h){var i=true,g=a.getTarget(),b=[];try{b=Ext.decode(c.responseText)}catch(d){i=false}if(i){g.suspendLayouts();if(h.removeAll){g.removeAll()}g.add(b);g.resumeLayouts(true)}return i}}},target:null,loadMask:false,renderer:"html",setTarget:function(b){var a=this;if(Ext.isString(b)){b=Ext.getCmp(b)}if(a.target&&a.target!=b){a.abort()}a.target=b},removeMask:function(){this.target.setLoading(false)},addMask:function(a){this.target.setLoading(a)},setOptions:function(b,a){b.removeAll=Ext.isDefined(a.removeAll)?a.removeAll:this.removeAll},getRenderer:function(b){if(Ext.isFunction(b)){return b}var a=this.statics().Renderer;switch(b){case"component":return a.Component;case"data":return a.Data;default:return Ext.ElementLoader.Renderer.Html}}});Ext.define("Ext.Template",{requires:["Ext.dom.Helper","Ext.util.Format"],inheritableStatics:{from:function(b,a){b=Ext.getDom(b);return new this(b.value||b.innerHTML,a||"")}},constructor:function(d){var g=this,b=arguments,a=[],c=0,e=b.length,h;g.initialConfig={};if(e===1&&Ext.isArray(d)){b=d;e=b.length}if(e>1){for(;c<e;c++){h=b[c];if(typeof h=="object"){Ext.apply(g.initialConfig,h);Ext.apply(g,h)}else{a.push(h)}}}else{a.push(d)}g.html=a.join("");if(g.compiled){g.compile()}},isTemplate:true,disableFormats:false,re:/\{([\w\-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,apply:function(a){var h=this,d=h.disableFormats!==true,g=Ext.util.Format,c=h,b;if(h.compiled){return h.compiled(a).join("")}function e(i,k,l,j){if(l&&d){if(j){j=[a[k]].concat(Ext.functionFactory("return ["+j+"];")())}else{j=[a[k]]}if(l.substr(0,5)=="this."){return c[l.substr(5)].apply(c,j)}else{return g[l].apply(g,j)}}else{return a[k]!==undefined?a[k]:""}}b=h.html.replace(h.re,e);return b},applyOut:function(a,b){var c=this;if(c.compiled){b.push.apply(b,c.compiled(a))}else{b.push(c.apply(a))}return b},applyTemplate:function(){return this.apply.apply(this,arguments)},set:function(a,c){var b=this;b.html=a;b.compiled=null;return c?b.compile():b},compileARe:/\\/g,compileBRe:/(\r\n|\n)/g,compileCRe:/'/g,compile:function(){var me=this,fm=Ext.util.Format,useFormat=me.disableFormats!==true,body,bodyReturn;function fn(m,name,format,args){if(format&&useFormat){args=args?","+args:"";if(format.substr(0,5)!="this."){format="fm."+format+"("}else{format="this."+format.substr(5)+"("}}else{args="";format="(values['"+name+"'] == undefined ? '' : "}return"',"+format+"values['"+name+"']"+args+") ,'"}bodyReturn=me.html.replace(me.compileARe,"\\\\").replace(me.compileBRe,"\\n").replace(me.compileCRe,"\\'").replace(me.re,fn);body="this.compiled = function(values){ return ['"+bodyReturn+"'];};";eval(body);return me},insertFirst:function(b,a,c){return this.doInsert("afterBegin",b,a,c)},insertBefore:function(b,a,c){return this.doInsert("beforeBegin",b,a,c)},insertAfter:function(b,a,c){return this.doInsert("afterEnd",b,a,c)},append:function(b,a,c){return this.doInsert("beforeEnd",b,a,c)},doInsert:function(b,d,a,e){var c=Ext.DomHelper.insertHtml(b,Ext.getDom(d),this.apply(a));return e?Ext.get(c):c},overwrite:function(c,a,d){var b=Ext.DomHelper.overwrite(Ext.getDom(c),this.apply(a));return d?Ext.get(b):b}});Ext.define("Ext.XTemplateParser",{constructor:function(a){Ext.apply(this,a)},doTpl:Ext.emptyFn,parse:function(l){var v=this,p=l.length,o={elseif:"elif"},q=v.topRe,c=v.actionsRe,e,d,j,n,h,k,i,u,r,b,g,a;v.level=0;v.stack=d=[];for(e=0;e<p;e=b){q.lastIndex=e;n=q.exec(l);if(!n){v.doText(l.substring(e,p));break}r=n.index;b=q.lastIndex;if(e<r){v.doText(l.substring(e,r))}if(n[1]){b=l.indexOf("%}",r+2);v.doEval(l.substring(r+2,b));b+=2}else{if(n[2]){b=l.indexOf("]}",r+2);v.doExpr(l.substring(r+2,b));b+=2}else{if(n[3]){v.doTag(n[3])}else{if(n[4]){g=null;while((u=c.exec(n[4]))!==null){j=u[2]||u[3];if(j){j=Ext.String.htmlDecode(j);h=u[1];h=o[h]||h;g=g||{};k=g[h];if(typeof k=="string"){g[h]=[k,j]}else{if(k){g[h].push(j)}else{g[h]=j}}}}if(!g){if(v.elseRe.test(n[4])){v.doElse()}else{if(v.defaultRe.test(n[4])){v.doDefault()}else{v.doTpl();d.push({type:"tpl"})}}}else{if(g["if"]){v.doIf(g["if"],g);d.push({type:"if"})}else{if(g["switch"]){v.doSwitch(g["switch"],g);d.push({type:"switch"})}else{if(g["case"]){v.doCase(g["case"],g)}else{if(g.elif){v.doElseIf(g.elif,g)}else{if(g["for"]){++v.level;if(a=v.propRe.exec(n[4])){g.propName=a[1]||a[2]}v.doFor(g["for"],g);d.push({type:"for",actions:g})}else{if(g.exec){v.doExec(g.exec,g);d.push({type:"exec",actions:g})}}}}}}}}else{if(n[0].length===5){d.push({type:"tpl"})}else{i=d.pop();v.doEnd(i.type,i.actions);if(i.type=="for"){--v.level}}}}}}}},topRe:/(?:(\{\%)|(\{\[)|\{([^{}]*)\})|(?:<tpl([^>]*)\>)|(?:<\/tpl>)/g,actionsRe:/\s*(elif|elseif|if|for|exec|switch|case|eval)\s*\=\s*(?:(?:"([^"]*)")|(?:'([^']*)'))\s*/g,propRe:/prop=(?:(?:"([^"]*)")|(?:'([^']*)'))/,defaultRe:/^\s*default\s*$/,elseRe:/^\s*else\s*$/});Ext.define("Ext.XTemplateCompiler",{extend:"Ext.XTemplateParser",useEval:Ext.isGecko,useIndex:Ext.isIE6||Ext.isIE7,useFormat:true,propNameRe:/^[\w\d\$]*$/,compile:function(a){var c=this,b=c.generate(a);return c.useEval?c.evalTpl(b):(new Function("Ext",b))(Ext)},generate:function(a){var d=this,b="var fm=Ext.util.Format,ts=Object.prototype.toString;",c;d.maxLevel=0;d.body=["var c0=values, a0="+d.createArrayTest(0)+", p0=parent, n0=xcount, i0=xindex, v;\n"];if(d.definitions){if(typeof d.definitions==="string"){d.definitions=[d.definitions,b]}else{d.definitions.push(b)}}else{d.definitions=[b]}d.switches=[];d.parse(a);d.definitions.push((d.useEval?"$=":"return")+" function ("+d.fnArgs+") {",d.body.join(""),"}");c=d.definitions.join("\n");d.definitions.length=d.body.length=d.switches.length=0;delete d.definitions;delete d.body;delete d.switches;return c},doText:function(c){var b=this,a=b.body;c=c.replace(b.aposRe,"\\'").replace(b.newLineRe,"\\n");if(b.useIndex){a.push("out[out.length]='",c,"'\n")}else{a.push("out.push('",c,"')\n")}},doExpr:function(b){var a=this.body;a.push("if ((v="+b+")!==undefined) out");if(this.useIndex){a.push("[out.length]=v+''\n")}else{a.push(".push(v+'')\n")}},doTag:function(a){this.doExpr(this.parseTag(a))},doElse:function(){this.body.push("} else {\n")},doEval:function(a){this.body.push(a,"\n")},doIf:function(b,c){var a=this;if(b==="."){a.body.push("if (values) {\n")}else{if(a.propNameRe.test(b)){a.body.push("if (",a.parseTag(b),") {\n")}else{a.body.push("if (",a.addFn(b),a.callFn,") {\n")}}if(c.exec){a.doExec(c.exec)}},doElseIf:function(b,c){var a=this;if(b==="."){a.body.push("else if (values) {\n")}else{if(a.propNameRe.test(b)){a.body.push("} else if (",a.parseTag(b),") {\n")}else{a.body.push("} else if (",a.addFn(b),a.callFn,") {\n")}}if(c.exec){a.doExec(c.exec)}},doSwitch:function(b){var a=this;if(b==="."){a.body.push("switch (values) {\n")}else{if(a.propNameRe.test(b)){a.body.push("switch (",a.parseTag(b),") {\n")}else{a.body.push("switch (",a.addFn(b),a.callFn,") {\n")}}a.switches.push(0)},doCase:function(e){var d=this,c=Ext.isArray(e)?e:[e],g=d.switches.length-1,a,b;if(d.switches[g]){d.body.push("break;\n")}else{d.switches[g]++}for(b=0,g=c.length;b<g;++b){a=d.intRe.exec(c[b]);c[b]=a?a[1]:("'"+c[b].replace(d.aposRe,"\\'")+"'")}d.body.push("case ",c.join(": case "),":\n")},doDefault:function(){var a=this,b=a.switches.length-1;if(a.switches[b]){a.body.push("break;\n")}else{a.switches[b]++}a.body.push("default:\n")},doEnd:function(b,d){var c=this,a=c.level-1;if(b=="for"){if(d.exec){c.doExec(d.exec)}c.body.push("}\n");c.body.push("parent=p",a,";values=r",a+1,";xcount=n",a,";xindex=i",a,"\n")}else{if(b=="if"||b=="switch"){c.body.push("}\n")}}},doFor:function(g,i){var e=this,d,b=e.level,a=b-1,c="p"+b,h;if(g==="."){d="values"}else{if(e.propNameRe.test(g)){d=e.parseTag(g)}else{d=e.addFn(g)+e.callFn}}if(e.maxLevel<b){e.maxLevel=b;e.body.push("var ")}if(g=="."){h="c"+b}else{h="a"+a+"?c"+a+"[i"+a+"]:p"+b}e.body.push("i",b,"=0,n",b,"=0,c",b,"=",d,",a",b,"=",e.createArrayTest(b),",p",b,"=c",a,",r",b,"=values;\n","parent=",h,"\n","if (c",b,"){if(a",b,"){n",b,"=c",b,".length;}else if (c",b,".isMixedCollection){c",b,"=c",b,".items;n",b,"=c",b,".length;}else if(c",b,".isStore){c",b,"=c",b,".data.items;n",b,"=c",b,".length;}else{c",b,"=[c",b,"];n",b,"=1;}}\n","for (xcount=n",b,";i",b,"<n"+b+";++i",b,"){\n","values=c",b,"[i",b,"]");if(i.propName){e.body.push(".",i.propName)}e.body.push("\n","xindex=i",b,"+1\n")},createArrayTest:("isArray" in Array)?function(a){return"Array.isArray(c"+a+")"}:function(a){return"ts.call(c"+a+')==="[object Array]"'},doExec:function(c,d){var b=this,a="f"+b.definitions.length;b.definitions.push("function "+a+"("+b.fnArgs+") {"," try { with(values) {","  "+c," }} catch(e) {","}","}");b.body.push(a+b.callFn+"\n")},addFn:function(a){var c=this,b="f"+c.definitions.length;if(a==="."){c.definitions.push("function "+b+"("+c.fnArgs+") {"," return values","}")}else{if(a===".."){c.definitions.push("function "+b+"("+c.fnArgs+") {"," return parent","}")}else{c.definitions.push("function "+b+"("+c.fnArgs+") {"," try { with(values) {","  return("+a+")"," }} catch(e) {","}","}")}}return b},parseTag:function(b){var h=this,a=h.tagRe.exec(b),e=a[1],i=a[2],d=a[3],g=a[4],c;if(e=="."){if(!h.validTypes){h.definitions.push("var validTypes={string:1,number:1,boolean:1};");h.validTypes=true}c='validTypes[typeof values] || ts.call(values) === "[object Date]" ? values : ""'}else{if(e=="#"){c="xindex"}else{if(e.substr(0,7)=="parent."){c=e}else{if(isNaN(e)&&e.indexOf("-")==-1&&e.indexOf(".")!=-1){c="values."+e}else{c="values['"+e+"']"}}}}if(g){c="("+c+g+")"}if(i&&h.useFormat){d=d?","+d:"";if(i.substr(0,5)!="this."){i="fm."+i+"("}else{i+="("}}else{return c}return i+c+d+")"},evalTpl:function($){eval($);return $},newLineRe:/\r\n|\r|\n/g,aposRe:/[']/g,intRe:/^\s*(\d+)\s*$/,tagRe:/([\w-\.\#]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\/]\s?[\d\.\+\-\*\/\(\)]+)?/},function(){var a=this.prototype;a.fnArgs="out,values,parent,xindex,xcount";a.callFn=".call(this,"+a.fnArgs+")"});Ext.define("Ext.XTemplate",{extend:"Ext.Template",requires:"Ext.XTemplateCompiler",emptyObj:{},apply:function(a,b){return this.applyOut(a,[],b).join("")},applyOut:function(a,b,d){var g=this,c;if(!g.fn){c=new Ext.XTemplateCompiler({useFormat:g.disableFormats!==true,definitions:g.definitions});g.fn=c.compile(g.html)}try{g.fn.call(g,b,a,d||g.emptyObj,1,1)}catch(h){}return b},compile:function(){return this},statics:{getTpl:function(a,c){var b=a[c],d;if(b&&!b.isTemplate){b=Ext.ClassManager.dynInstantiate("Ext.XTemplate",b);if(a.hasOwnProperty(c)){a[c]=b}else{for(d=a.self.prototype;d;d=d.superclass){if(d.hasOwnProperty(c)){d[c]=b;break}}}}return b||null}}});Ext.define("Ext.layout.Layout",{requires:["Ext.XTemplate"],uses:["Ext.layout.Context"],isLayout:true,initialized:false,running:false,autoSizePolicy:{setsWidth:0,setsHeight:0},statics:{layoutsByType:{},create:function(g,e){var k=Ext.ClassManager,c=this.layoutsByType,d,h,b,a,i,j;if(!g||typeof g==="string"){i=g||e;b={}}else{if(g.isLayout){return g}else{b=g;i=g.type||e}}if(!(a=c[i])){d="layout."+i;h=k.getNameByAlias(d);if(!h){j=true}a=k.get(h);if(j||!a){return k.instantiateByAlias(d,b||{})}c[i]=a}return new a(b)}},constructor:function(a){var b=this;b.id=Ext.id(null,b.type+"-");Ext.apply(b,a);b.layoutCount=0},beginLayout:Ext.emptyFn,beginLayoutCycle:function(c){var b=this,a=b.context,d;if(b.lastWidthModel!=c.widthModel){if(b.lastWidthModel){d=true}b.lastWidthModel=c.widthModel}if(b.lastHeightModel!=c.heightModel){if(b.lastWidthModel){d=true}b.lastHeightModel=c.heightModel}if(d){(a=c.context).clearTriggers(b,false);a.clearTriggers(b,true);b.triggerCount=0}},finishedLayout:function(){this.ownerContext=null},redoLayout:Ext.emptyFn,undoLayout:Ext.emptyFn,getAnimatePolicy:function(){return this.animatePolicy},getItemSizePolicy:function(a){return this.autoSizePolicy},isItemBoxParent:function(a){return false},isItemLayoutRoot:function(d){var c=d.getSizeModel(),b=c.width,a=c.height;if(!d.componentLayout.lastComponentSize&&(b.calculated||a.calculated)){return false}return !b.shrinkWrap&&!a.shrinkWrap},isItemShrinkWrap:function(a){return a.shrinkWrap},isRunning:function(){return !!this.ownerContext},getItemsRenderTree:function(d,b){var h=d.length,e,g,c,a;if(h){a=[];for(e=0;e<h;++e){g=d[e];if(!g.rendered){if(b&&(b[g.id]!==undefined)){c=b[g.id]}else{this.configureItem(g);c=g.getRenderTree();if(b){b[g.id]=c}}if(c){a.push(c)}}}}return a},finishRender:Ext.emptyFn,finishRenderItems:function(e,a){var d=a.length,b,c;for(b=0;b<d;b++){c=a[b];if(c.rendering){c.finishRender(b);this.afterRenderItem(c)}}},renderChildren:function(){var b=this,a=b.getLayoutItems(),c=b.getRenderTarget();b.renderItems(a,c)},renderItems:function(a,g){var e=this,d=a.length,b=0,c;if(d){Ext.suspendLayouts();for(;b<d;b++){c=a[b];if(c&&!c.rendered){e.renderItem(c,g,b)}else{if(!e.isValidParent(c,g,b)){e.moveItem(c,g,b)}else{e.configureItem(c)}}}Ext.resumeLayouts(true)}},isValidParent:function(d,e,a){var b=d.el?d.el.dom:Ext.getDom(d),c=(e&&e.dom)||e;if(b.parentNode&&b.parentNode.className.indexOf(Ext.baseCSSPrefix+"resizable-wrap")!==-1){b=b.parentNode}if(b&&c){if(typeof a=="number"){return b===c.childNodes[a]}return b.parentNode===c}return false},configureItem:function(a){a.ownerLayout=this},renderItem:function(c,d,a){var b=this;if(!c.rendered){b.configureItem(c);c.render(d,a);b.afterRenderItem(c)}},moveItem:function(b,c,a){c=c.dom||c;if(typeof a=="number"){a=c.childNodes[a]}c.insertBefore(b.el.dom,a||null);b.container=Ext.get(c);this.configureItem(b)},onContentChange:function(){this.owner.updateLayout();return true},initLayout:function(){this.initialized=true},setOwner:function(a){this.owner=a},getLayoutItems:function(){return[]},afterRenderItem:Ext.emptyFn,onAdd:Ext.emptyFn,onRemove:Ext.emptyFn,onDestroy:Ext.emptyFn,afterRemove:function(e){var d=this,c=e.el,b=d.owner,a;if(e.rendered){a=[].concat(d.itemCls||[]);if(b.itemCls){a=Ext.Array.push(a,b.itemCls)}if(a.length){c.removeCls(a)}}delete e.ownerLayout},destroy:function(){var a=this,b;if(a.targetCls){b=a.getTarget();if(b){b.removeCls(a.targetCls)}}a.onDestroy()},sortWeightedItems:function(a,d){for(var b=0,c=a.length;b<c;++b){a[b].$i=b}Ext.Array.sort(a,function(g,e){var h=e.weight-g.weight;if(!h){h=g.$i-e.$i;if(g[d]){h=-h}}return h});for(b=0;b<c;++b){delete a[b].$i}}},function(){var l=this,k={},m=[],g,e,b,a,d;l.prototype.sizeModels=l.sizeModels=k;var h=function(j){var n=this,i=j.name;Ext.apply(Ext.apply(n,c),j);n[i]=true;h[i]=k[i]=n;n.fixed=!(n.auto=n.natural||n.shrinkWrap);n.ordinal=m.length;m.push(n)};Ext.layout.SizeModel=h;var c={calculated:false,configured:false,constrainedMax:false,constrainedMin:false,natural:false,shrinkWrap:false,calculatedFromConfigured:false,calculatedFromNatural:false,calculatedFromShrinkWrap:false,names:null};new h({name:"calculated"});new h({name:"configured",names:{width:"width",height:"height"}});new h({name:"natural"});new h({name:"shrinkWrap"});new h({name:"calculatedFromConfigured",configured:true,names:{width:"width",height:"height"}});new h({name:"calculatedFromNatural",natural:true});new h({name:"calculatedFromShrinkWrap",shrinkWrap:true});new h({name:"constrainedMax",configured:true,constrained:true,names:{width:"maxWidth",height:"maxHeight"}});new h({name:"constrainedMin",configured:true,constrained:true,names:{width:"minWidth",height:"minHeight"}});for(g=0,b=m.length;g<b;++g){d=m[g];d.pairsByHeightOrdinal=a=[];for(e=0;e<b;++e){a.push({width:d,height:m[e]})}}});Ext.define("Ext.layout.container.Container",{extend:"Ext.layout.Layout",alternateClassName:"Ext.layout.ContainerLayout",mixins:{elementCt:"Ext.util.ElementContainer"},requires:["Ext.XTemplate"],type:"container",manageOverflow:0,beginCollapse:Ext.emptyFn,beginExpand:Ext.emptyFn,animatePolicy:null,childEls:["overflowPadderEl"],renderTpl:["{%this.renderBody(out,values)%}"],usesContainerHeight:true,usesContainerWidth:true,usesHeight:true,usesWidth:true,reserveScrollbar:false,lastOverflowAdjust:{width:0,height:0},constructor:function(){this.callParent(arguments);this.mixins.elementCt.constructor.call(this)},destroy:function(){this.callParent();this.mixins.elementCt.destroy.call(this)},initLayout:function(){var b=this,a=Ext.getScrollbarSize().width;b.callParent();if(a&&b.manageOverflow&&!b.hasOwnProperty("lastOverflowAdjust")){if(b.owner.autoScroll||b.reserveScrollbar){b.lastOverflowAdjust={width:a,height:0}}}},beginLayout:function(a){this.callParent(arguments);a.targetContext=a.getEl("getTarget",this);this.cacheChildItems(a)},beginLayoutCycle:function(c,a){var b=this,d=b.overflowPadderEl;b.callParent(arguments);if(!c.state.overflowAdjust){c.state.overflowAdjust=b.lastOverflowAdjust}if(a){if(b.usesContainerHeight){++c.consumersContainerHeight}if(b.usesContainerWidth){++c.consumersContainerWidth}}if(d){d.setStyle("display","none")}},completeLayout:function(a){this.lastOverflowAdjust=a.state.overflowAdjust},cacheChildItems:function(e){var c=e.context,g=[],a=this.getVisibleItems(),d=a.length,b;e.childItems=g;e.visibleItems=a;for(b=0;b<d;++b){g.push(c.getCmp(a[b]))}},cacheElements:function(){var a=this.owner;this.applyChildEls(a.el,a.id)},calculateContentSize:function(q,m){var B=this,d=(m||0)|B.manageOverflow|((q.widthModel.shrinkWrap?1:0)|(q.heightModel.shrinkWrap?2:0)),c=(d&1)||undefined,j=(d&2)||undefined,b=q.childItems,g=b.length,w=0,u=0,n=0,e=q.props,r,p,o,A,h,l,t,z,y,s,x,a,v,k;if(c){if(isNaN(e.contentWidth)){++n}else{c=undefined}}if(j){if(isNaN(e.contentHeight)){++n}else{j=undefined}}if(n){for(x=0;x<g;++x){t=b[x];l=t.target;s=j&&t.getProp("height");v=c&&t.getProp("width");a=t.getMarginInfo();if((c&&isNaN(l.x))||(j&&isNaN(l.y))){k=l.el.getXY();if(!r){r=q.targetContext.el.getXY();h=q.targetContext.getBorderInfo();p=r[0]+h.left;o=r[1]+h.top}z=k[0]-p;y=k[1]-o}else{z=l.x;y=l.y}s+=a.bottom;v+=a.right;w=Math.max(w,y+s);u=Math.max(u,z+v);if(isNaN(w)&&isNaN(u)){B.done=false;return}}if(c||j){A=q.targetContext.getPaddingInfo()}if(c&&!q.setContentWidth(u+A.right)){B.done=false}if(j&&!q.setContentHeight(w+A.bottom)){B.done=false}}},calculateOverflow:function(n,s,h){var w=this,a=w.owner,l=w.manageOverflow,d=n.state,m=d.overflowAdjust,g,k,c,o,b,q,t,j,r,e,p,u,i,v;if(l&&!d.secondPass&&!w.reserveScrollbar){if(a.autoScroll){i=v=true}else{if(a.overflowX){i=a.overflowX=="auto"}else{q=n.targetContext.getStyle("overflow-x");i=q&&q!="hidden"&&q!="scroll"}if(a.overflowY){v=a.overflowY=="auto"}else{q=n.targetContext.getStyle("overflow-y");v=q&&q!="hidden"&&q!="scroll"}}if(!s.gotWidth){i=false}if(!s.gotHeight){v=false}if(i||v){t=Ext.getScrollbarSize();j=n.peek("contentWidth");r=n.peek("contentHeight");e=s.width;p=s.height;u=w.getScrollbarsNeeded(e,p,j,r);d.overflowState=u;if(typeof h=="number"){u&=~h}m={width:(i&&(u&2))?t.width:0,height:(v&&(u&1))?t.height:0};if(m.width!==w.lastOverflowAdjust.width||m.height!==w.lastOverflowAdjust.height){w.done=false;n.invalidate({state:{overflowAdjust:m,overflowState:d.overflowState,secondPass:true}})}}}if(!w.done){return}c=n.padElContext||(n.padElContext=n.getEl("overflowPadderEl",w));if(c){u=d.overflowState;g=s.width;k=0;if(u){o=n.targetContext.getPaddingInfo();b=w.scrollRangeFlags;if((u&2)&&(b&1)){k+=o.bottom}if((u&1)&&(b&4)){g+=o.right}c.setProp("display","");c.setSize(g,k)}else{c.setProp("display","none")}}},configureItem:function(c){var b=this,a=b.owner.itemCls,d=[].concat(b.itemCls||[]);b.callParent(arguments);if(a){d=Ext.Array.push(d,a)}c.addCls(d)},doRenderBody:function(a,b){this.renderItems(a,b);this.renderContent(a,b)},doRenderContainer:function(b,e){var c=e.$comp.layout,a=c.getRenderTpl(),d=c.getRenderData();a.applyOut(d,b)},doRenderItems:function(b,d){var c=d.$layout,a=c.getRenderTree();if(a){Ext.DomHelper.generateMarkup(a,b)}},doRenderPadder:function(b,d){var c=d.$layout,a=c.owner,e=c.getScrollRangeFlags();if(c.manageOverflow==2){if(e&5){b.push('<div id="',a.id,'-overflowPadderEl" ','style="font-size: 1px; width:1px; height: 1px;');b.push('"></div>');c.scrollRangeFlags=e}}},finishRender:function(){var b=this,c,a;b.callParent();b.cacheElements();c=b.getRenderTarget();a=b.getLayoutItems();if(b.targetCls){b.getTarget().addCls(b.targetCls)}b.finishRenderItems(c,a)},notifyOwner:function(){this.owner.afterLayout(this)},getContainerSize:function(c,h){var d=c.targetContext,g=d.getFrameInfo(),k=d.getPaddingInfo(),j=0,l=0,a=c.state.overflowAdjust,e,i,b,m;if(!c.widthModel.shrinkWrap){++l;b=h?d.getDomProp("width"):d.getProp("width");e=(typeof b=="number");if(e){++j;b-=g.width+k.width;if(a){b-=a.width}}}if(!c.heightModel.shrinkWrap){++l;m=h?d.getDomProp("height"):d.getProp("height");i=(typeof m=="number");if(i){++j;m-=g.height+k.height;if(a){m-=a.height}}}return{width:b,height:m,needed:l,got:j,gotAll:j==l,gotWidth:e,gotHeight:i}},getLayoutItems:function(){var a=this.owner,b=a&&a.items;return(b&&b.items)||[]},getRenderData:function(){var a=this.owner;return{$comp:a,$layout:this,ownerId:a.id}},getRenderedItems:function(){var e=this,h=e.getRenderTarget(),a=e.getLayoutItems(),d=a.length,g=[],b,c;for(b=0;b<d;b++){c=a[b];if(c.rendered&&e.isValidParent(c,h,b)){g.push(c)}}return g},getRenderTarget:function(){return this.owner.getTargetEl()},getElementTarget:function(){return this.getRenderTarget()},getRenderTpl:function(){var a=this,b=Ext.XTemplate.getTpl(this,"renderTpl");if(!b.renderContent){a.owner.setupRenderTpl(b)}return b},getRenderTree:function(){var a,c=this.owner.items,d,b={};do{d=c.generation;a=this.getItemsRenderTree(this.getLayoutItems(),b)}while(c.generation!==d);return a},getScrollbarsNeeded:function(c,i,b,h){var a=Ext.getScrollbarSize(),e=typeof c=="number",j=typeof i=="number",g=0,d=0;if(!a.width){return 0}if(j&&i<h){d=2;c-=a.width}if(e&&c<b){g=1;if(!d&&j){i-=a.height;if(i<h){d=2}}}return d+g},getScrollRangeFlags:(function(){var a=-1;return function(){if(a<0){var g=Ext.getBody().createChild({cls:Ext.baseCSSPrefix+"border-box",style:{width:"100px",height:"100px",padding:"10px",overflow:"auto"},children:[{style:{border:"1px solid red",width:"150px",height:"150px",margin:"0 5px 5px 0"}}]}),d=g.dom.scrollHeight,c=g.dom.scrollWidth,e={175:0,165:1,170:2,160:3},b={175:0,165:4,170:8,160:12};a=(e[d]||0)|(b[c]||0);g.remove()}return a}}()),getTarget:function(){return this.owner.getTargetEl()},getVisibleItems:function(){var g=this.getRenderTarget(),b=this.getLayoutItems(),e=b.length,a=[],c,d;for(c=0;c<e;c++){d=b[c];if(d.rendered&&this.isValidParent(d,g,c)&&d.hidden!==true){a.push(d)}}return a},setupRenderTpl:function(b){var a=this;b.renderBody=a.doRenderBody;b.renderContainer=a.doRenderContainer;b.renderItems=a.doRenderItems;b.renderPadder=a.doRenderPadder}});Ext.define("Ext.layout.container.Editor",{alias:"layout.editor",extend:"Ext.layout.container.Container",autoSizeDefault:{width:"field",height:"field"},getItemSizePolicy:function(c){var b=this,a=b.owner.autoSize;return b.sizePolicy||(b.sizePolicy={setsWidth:a&&a.width==="boundEl"?1:0,setsHeight:a&&a.height==="boundEl"?1:0})},calculate:function(g){var e=this,b=e.owner,a=b.autoSize,d,c;if(a===true){a=e.autoSizeDefault}if(a){d=e.getDimension(b,a.width,"getWidth",b.width);c=e.getDimension(b,a.height,"getHeight",b.height)}g.childItems[0].setSize(d,c);g.setWidth(d);g.setHeight(c);g.setContentSize(d||b.field.getWidth(),c||b.field.getHeight())},getDimension:function(a,b,d,c){switch(b){case"boundEl":return a.boundEl[d]();case"field":return undefined;default:return c}}});Ext.define("Ext.layout.component.Component",{extend:"Ext.layout.Layout",type:"component",isComponentLayout:true,nullBox:{},usesContentHeight:true,usesContentWidth:true,usesHeight:true,usesWidth:true,beginLayoutCycle:function(c,p){var k=this,b=k.owner,e=c.ownerCtContext,g=c.heightModel,h=c.widthModel,i=b.el.dom===document.body,d=b.lastBox||k.nullBox,n=b.el.lastBox||k.nullBox,a=!i,m,o,l,j;k.callParent(arguments);if(p){if(k.usesContentWidth){++c.consumersContentWidth}if(k.usesContentHeight){++c.consumersContentHeight}if(k.usesWidth){++c.consumersWidth}if(k.usesHeight){++c.consumersHeight}if(e&&!e.hasRawContent){m=b.ownerLayout;if(m.usesWidth){++c.consumersWidth}if(m.usesHeight){++c.consumersHeight}}}if(h.configured){l=h.names.width;if(!i){a=p?b[l]!==n.width:h.constrained}c.setWidth(b[l],a)}else{if(c.isTopLevel){if(h.calculated){o=d.width;c.setWidth(o,o!=n.width)}o=d.x;c.setProp("x",o,o!=n.x)}}if(g.configured){j=g.names.height;if(!i){a=p?b[j]!==n.height:g.constrained}c.setHeight(b[j],a)}else{if(c.isTopLevel){if(g.calculated){o=d.height;c.setHeight(o,o!=n.height)}o=d.y;c.setProp("y",o,o!=n.y)}}},finishedLayout:function(b){var h=this,l=b.children,a=h.owner,e,c,k,d,g,j;if(l){e=l.length;for(c=0;c<e;c++){k=l[c];k.el.lastBox=k.props}}b.previousSize=h.lastComponentSize;h.lastComponentSize=a.el.lastBox=g=b.props;a.lastBox=d={};j=g.x;if(j!==undefined){d.x=j}j=g.y;if(j!==undefined){d.y=j}j=g.width;if(j!==undefined){d.width=j}j=g.height;if(j!==undefined){d.height=j}h.callParent(arguments)},notifyOwner:function(d){var c=this,a=c.lastComponentSize,e=d.previousSize,b=[a.width,a.height];if(e){b.push(e.width,e.height)}c.owner.afterComponentLayout.apply(c.owner,b)},getTarget:function(){return this.owner.el},getRenderTarget:function(){return this.owner.el},cacheTargetInfo:function(b){var a=this,d=a.targetInfo,c;if(!d){c=b.getEl("getTarget",a);a.targetInfo=d={padding:c.getPaddingInfo(),border:c.getBorderInfo()}}return d},measureAutoDimensions:function(m,i){var t=this,a=t.owner,q=a.layout,d=m.heightModel,h=m.widthModel,c=m.boxParent,n=m.isBoxParent,b=m.props,j,u={gotWidth:false,gotHeight:false,isContainer:(j=!m.hasRawContent)},s=i||3,p,e,k=0,g=0,l,o,r;if(h.shrinkWrap&&m.consumersContentWidth){++k;p=!(s&1);if(j){if(p){u.contentWidth=0;u.gotWidth=true;++g}else{if((u.contentWidth=m.getProp("contentWidth"))!==undefined){u.gotWidth=true;++g}}}else{o=b.contentWidth;if(typeof o=="number"){u.contentWidth=o;u.gotWidth=true;++g}else{if(p){l=true}else{if(!m.hasDomProp("containerChildrenDone")){l=false}else{if(n||!c||c.widthModel.shrinkWrap){l=true}else{l=c.hasDomProp("width")}}}if(l){if(p){r=0}else{if(q&&q.measureContentWidth){r=q.measureContentWidth(m)}else{r=t.measureContentWidth(m)}}if(!isNaN(u.contentWidth=r)){m.setContentWidth(r,true);u.gotWidth=true;++g}}}}}else{if(h.natural&&m.consumersWidth){++k;o=b.width;if(typeof o=="number"){u.width=o;u.gotWidth=true;++g}else{if(n||!c){l=true}else{l=c.hasDomProp("width")}if(l){if(!isNaN(u.width=t.measureOwnerWidth(m))){m.setWidth(u.width,false);u.gotWidth=true;++g}}}}}if(d.shrinkWrap&&m.consumersContentHeight){++k;e=!(s&2);if(j){if(e){u.contentHeight=0;u.gotHeight=true;++g}else{if((u.contentHeight=m.getProp("contentHeight"))!==undefined){u.gotHeight=true;++g}}}else{o=b.contentHeight;if(typeof o=="number"){u.contentHeight=o;u.gotHeight=true;++g}else{if(e){l=true}else{if(!m.hasDomProp("containerChildrenDone")){l=false}else{if(a.noWrap){l=true}else{if(!h.shrinkWrap){l=(m.bodyContext||m).hasDomProp("width")}else{if(n||!c||c.widthModel.shrinkWrap){l=true}else{l=c.hasDomProp("width")}}}}}if(l){if(e){r=0}else{if(q&&q.measureContentHeight){r=q.measureContentHeight(m)}else{r=t.measureContentHeight(m)}}if(!isNaN(u.contentHeight=r)){m.setContentHeight(r,true);u.gotHeight=true;++g}}}}}else{if(d.natural&&m.consumersHeight){++k;o=b.height;if(typeof o=="number"){u.height=o;u.gotHeight=true;++g}else{if(n||!c){l=true}else{l=c.hasDomProp("width")}if(l){if(!isNaN(u.height=t.measureOwnerHeight(m))){m.setHeight(u.height,false);u.gotHeight=true;++g}}}}}if(c){m.onBoxMeasured()}u.gotAll=g==k;return u},measureContentWidth:function(a){return a.el.getWidth()-a.getFrameInfo().width},measureContentHeight:function(a){return a.el.getHeight()-a.getFrameInfo().height},measureOwnerHeight:function(a){return a.el.getHeight()},measureOwnerWidth:function(a){return a.el.getWidth()}});Ext.define("Ext.layout.component.Auto",{alias:"layout.autocomponent",extend:"Ext.layout.component.Component",type:"autocomponent",setHeightInDom:false,setWidthInDom:false,waitForOuterHeightInDom:false,waitForOuterWidthInDom:false,beginLayoutCycle:function(d,b){var c=this,g=c.lastWidthModel,e=c.lastHeightModel,a=c.owner;c.callParent(arguments);if(g&&g.fixed&&d.widthModel.shrinkWrap){a.el.setWidth(null)}if(e&&e.fixed&&d.heightModel.shrinkWrap){a.el.setHeight(null)}},calculate:function(h){var g=this,e=g.measureAutoDimensions(h),b=h.heightModel,c=h.widthModel,d,a;if(e.gotWidth){if(c.shrinkWrap){g.publishOwnerWidth(h,e.contentWidth)}else{if(g.publishInnerWidth){g.publishInnerWidth(h,e.width)}}}else{if(!c.auto&&g.publishInnerWidth){d=g.waitForOuterWidthInDom?h.getDomProp("width"):h.getProp("width");if(d===undefined){g.done=false}else{g.publishInnerWidth(h,d)}}}if(e.gotHeight){if(b.shrinkWrap){g.publishOwnerHeight(h,e.contentHeight)}else{if(g.publishInnerHeight){g.publishInnerHeight(h,e.height)}}}else{if(!b.auto&&g.publishInnerHeight){a=g.waitForOuterHeightInDom?h.getDomProp("height"):h.getProp("height");if(a===undefined){g.done=false}else{g.publishInnerHeight(h,a)}}}if(!e.gotAll){g.done=false}},calculateOwnerHeightFromContentHeight:function(b,a){return a+b.getFrameInfo().height},calculateOwnerWidthFromContentWidth:function(b,a){return a+b.getFrameInfo().width},publishOwnerHeight:function(i,g){var e=this,b=e.owner,a=e.calculateOwnerHeightFromContentHeight(i,g),h,d,c;if(isNaN(a)){e.done=false}else{h=Ext.Number.constrain(a,b.minHeight,b.maxHeight);if(h==a){d=e.setHeightInDom}else{c=e.sizeModels[(h<a)?"constrainedMax":"constrainedMin"];a=h;if(i.heightModel.calculatedFromShrinkWrap){i.heightModel=c}else{i.invalidate({heightModel:c})}}i.setHeight(a,d)}},publishOwnerWidth:function(h,b){var g=this,a=g.owner,e=g.calculateOwnerWidthFromContentWidth(h,b),i,d,c;if(isNaN(e)){g.done=false}else{i=Ext.Number.constrain(e,a.minWidth,a.maxWidth);if(i==e){d=g.setWidthInDom}else{c=g.sizeModels[(i<e)?"constrainedMax":"constrainedMin"];e=i;if(h.widthModel.calculatedFromShrinkWrap){h.widthModel=c}else{h.invalidate({widthModel:c})}}h.setWidth(e,d)}}});Ext.define("Ext.layout.container.Auto",{alias:["layout.auto","layout.autocontainer"],extend:"Ext.layout.container.Container",type:"autocontainer",childEls:["clearEl"],renderTpl:["{%this.renderBody(out,values)%}",'<div id="{ownerId}-clearEl" class="',Ext.baseCSSPrefix,'clear" role="presentation"></div>'],calculate:function(b){var a=this,c;if(!b.hasDomProp("containerChildrenDone")){a.done=false}else{c=a.getContainerSize(b);if(!c.gotAll){a.done=false}a.calculateContentSize(b)}}});Ext.define("Ext.util.Filter",{anyMatch:false,exactMatch:false,caseSensitive:false,constructor:function(a){var b=this;Ext.apply(b,a);b.filter=b.filter||b.filterFn;if(b.filter===undefined){if(b.property===undefined||b.value===undefined){}else{b.filter=b.createFilterFn()}b.filterFn=b.filter}},createFilterFn:function(){var a=this,c=a.createValueMatcher(),b=a.property;return function(d){var e=a.getRoot.call(a,d)[b];return c===null?e===null:c.test(e)}},getRoot:function(b){var a=this.root;return a===undefined?b:b[a]},createValueMatcher:function(){var d=this,e=d.value,g=d.anyMatch,c=d.exactMatch,a=d.caseSensitive,b=Ext.String.escapeRegex;if(e===null){return e}if(!e.exec){e=String(e);if(g===true){e=b(e)}else{e="^"+b(e);if(c===true){e+="$"}}e=new RegExp(e,a?"":"i")}return e}});Ext.define("Ext.util.AbstractMixedCollection",{requires:["Ext.util.Filter"],mixins:{observable:"Ext.util.Observable"},isMixedCollection:true,generation:0,constructor:function(b,a){var c=this;c.items=[];c.map={};c.keys=[];c.length=0;c.allowFunctions=b===true;if(a){c.getKey=a}c.mixins.observable.constructor.call(c)},allowFunctions:false,add:function(b,e){var d=this,g=e,c=b,a;if(arguments.length==1){g=c;c=d.getKey(g)}if(typeof c!="undefined"&&c!==null){a=d.map[c];if(typeof a!="undefined"){return d.replace(c,g)}d.map[c]=g}d.generation++;d.length++;d.items.push(g);d.keys.push(c);if(d.hasListeners.add){d.fireEvent("add",d.length-1,g,c)}return g},getKey:function(a){return a.id},replace:function(c,e){var d=this,a,b;if(arguments.length==1){e=arguments[0];c=d.getKey(e)}a=d.map[c];if(typeof c=="undefined"||c===null||typeof a=="undefined"){return d.add(c,e)}d.generation++;b=d.indexOfKey(c);d.items[b]=e;d.map[c]=e;if(d.hasListeners.replace){d.fireEvent("replace",c,a,e)}return e},addAll:function(g){var e=this,d=0,b,a,c;if(arguments.length>1||Ext.isArray(g)){b=arguments.length>1?arguments:g;for(a=b.length;d<a;d++){e.add(b[d])}}else{for(c in g){if(g.hasOwnProperty(c)){if(e.allowFunctions||typeof g[c]!="function"){e.add(c,g[c])}}}}},each:function(e,d){var b=[].concat(this.items),c=0,a=b.length,g;for(;c<a;c++){g=b[c];if(e.call(d||g,g,c,a)===false){break}}},eachKey:function(e,d){var g=this.keys,b=this.items,c=0,a=g.length;for(;c<a;c++){e.call(d||window,g[c],b[c],c,a)}},findBy:function(e,d){var g=this.keys,b=this.items,c=0,a=b.length;for(;c<a;c++){if(e.call(d||window,b[c],g[c])){return b[c]}}return null},find:function(){if(Ext.isDefined(Ext.global.console)){Ext.global.console.warn("Ext.util.MixedCollection: find has been deprecated. Use findBy instead.")}return this.findBy.apply(this,arguments)},insert:function(a,b,e){var d=this,c=b,g=e;if(arguments.length==2){g=c;c=d.getKey(g)}if(d.containsKey(c)){d.suspendEvents();d.removeAtKey(c);d.resumeEvents()}if(a>=d.length){return d.add(c,g)}d.generation++;d.length++;Ext.Array.splice(d.items,a,0,g);if(typeof c!="undefined"&&c!==null){d.map[c]=g}Ext.Array.splice(d.keys,a,0,c);if(d.hasListeners.add){d.fireEvent("add",a,g,c)}return g},remove:function(a){this.generation++;return this.removeAt(this.indexOf(a))},removeAll:function(b){b=[].concat(b);var c,a=b.length;for(c=0;c<a;c++){this.remove(b[c])}return this},removeAt:function(a){var c=this,d,b;if(a<c.length&&a>=0){c.length--;d=c.items[a];Ext.Array.erase(c.items,a,1);b=c.keys[a];if(typeof b!="undefined"){delete c.map[b]}Ext.Array.erase(c.keys,a,1);if(c.hasListeners.remove){c.fireEvent("remove",d,b)}c.generation++;return d}return false},removeAtKey:function(a){return this.removeAt(this.indexOfKey(a))},getCount:function(){return this.length},indexOf:function(a){return Ext.Array.indexOf(this.items,a)},indexOfKey:function(a){return Ext.Array.indexOf(this.keys,a)},get:function(b){var d=this,a=d.map[b],c=a!==undefined?a:(typeof b=="number")?d.items[b]:undefined;return typeof c!="function"||d.allowFunctions?c:null},getAt:function(a){return this.items[a]},getByKey:function(a){return this.map[a]},contains:function(a){return typeof this.map[this.getKey(a)]!="undefined"},containsKey:function(a){return typeof this.map[a]!="undefined"},clear:function(){var a=this;a.length=0;a.items=[];a.keys=[];a.map={};a.generation++;if(a.hasListeners.clear){a.fireEvent("clear")}},first:function(){return this.items[0]},last:function(){return this.items[this.length-1]},sum:function(h,b,j,a){var c=this.extractValues(h,b),g=c.length,e=0,d;j=j||0;a=(a||a===0)?a:g-1;for(d=j;d<=a;d++){e+=c[d]}return e},collect:function(k,e,h){var l=this.extractValues(k,e),a=l.length,b={},c=[],j,g,d;for(d=0;d<a;d++){j=l[d];g=String(j);if((h||!Ext.isEmpty(j))&&!b[g]){b[g]=true;c.push(j)}}return c},extractValues:function(c,a){var b=this.items;if(a){b=Ext.Array.pluck(b,a)}return Ext.Array.pluck(b,c)},getRange:function(g,a){var e=this,c=e.items,b=[],d;if(c.length<1){return b}g=g||0;a=Math.min(typeof a=="undefined"?e.length-1:a,e.length-1);if(g<=a){for(d=g;d<=a;d++){b[b.length]=c[d]}}else{for(d=g;d>=a;d--){b[b.length]=c[d]}}return b},filter:function(d,c,g,a){var b=[],e;if(Ext.isString(d)){b.push(new Ext.util.Filter({property:d,value:c,anyMatch:g,caseSensitive:a}))}else{if(Ext.isArray(d)||d instanceof Ext.util.Filter){b=b.concat(d)}}e=function(h){var n=true,o=b.length,j,m,l,k;for(j=0;j<o;j++){m=b[j];l=m.filterFn;k=m.scope;n=n&&l.call(k,h)}return n};return this.filterBy(e)},filterBy:function(e,d){var j=this,a=new this.self(),h=j.keys,b=j.items,g=b.length,c;a.getKey=j.getKey;for(c=0;c<g;c++){if(e.call(d||j,b[c],h[c])){a.add(h[c],b[c])}}return a},findIndex:function(c,b,e,d,a){if(Ext.isEmpty(b,false)){return -1}b=this.createValueMatcher(b,d,a);return this.findIndexBy(function(g){return g&&b.test(g[c])},null,e)},findIndexBy:function(e,d,j){var h=this,g=h.keys,b=h.items,c=j||0,a=b.length;for(;c<a;c++){if(e.call(d||h,b[c],g[c])){return c}}return -1},createValueMatcher:function(c,e,a,b){if(!c.exec){var d=Ext.String.escapeRegex;c=String(c);if(e===true){c=d(c)}else{c="^"+d(c);if(b===true){c+="$"}}c=new RegExp(c,a?"":"i")}return c},clone:function(){var e=this,g=new this.self(),d=e.keys,b=e.items,c=0,a=b.length;for(;c<a;c++){g.add(d[c],b[c])}g.getKey=e.getKey;return g}});Ext.define("Ext.util.Sorter",{direction:"ASC",constructor:function(a){var b=this;Ext.apply(b,a);b.updateSortFunction()},createSortFunction:function(b){var c=this,d=c.property,e=c.direction||"ASC",a=e.toUpperCase()=="DESC"?-1:1;return function(h,g){return a*b.call(c,h,g)}},defaultSorterFn:function(d,c){var b=this,a=b.transform,g=b.getRoot(d)[b.property],e=b.getRoot(c)[b.property];if(a){g=a(g);e=a(e)}return g>e?1:(g<e?-1:0)},getRoot:function(a){return this.root===undefined?a:a[this.root]},setDirection:function(b){var a=this;a.direction=b?b.toUpperCase():b;a.updateSortFunction()},toggle:function(){var a=this;a.direction=Ext.String.toggle(a.direction,"ASC","DESC");a.updateSortFunction()},updateSortFunction:function(a){var b=this;a=a||b.sorterFn||b.defaultSorterFn;b.sort=b.createSortFunction(a)}});Ext.define("Ext.util.Sortable",{isSortable:true,defaultSortDirection:"ASC",requires:["Ext.util.Sorter"],initSortable:function(){var a=this,b=a.sorters;a.sorters=new Ext.util.AbstractMixedCollection(false,function(c){return c.id||c.property});if(b){a.sorters.addAll(a.decodeSorters(b))}},sort:function(h,g,c,e){var d=this,i,b,a;if(Ext.isArray(h)){e=c;c=g;a=h}else{if(Ext.isObject(h)){e=c;c=g;a=[h]}else{if(Ext.isString(h)){i=d.sorters.get(h);if(!i){i={property:h,direction:g};a=[i]}else{if(g===undefined){i.toggle()}else{i.setDirection(g)}}}}}if(a&&a.length){a=d.decodeSorters(a);if(Ext.isString(c)){if(c==="prepend"){h=d.sorters.clone().items;d.sorters.clear();d.sorters.addAll(a);d.sorters.addAll(h)}else{d.sorters.addAll(a)}}else{d.sorters.clear();d.sorters.addAll(a)}}if(e!==false){d.onBeforeSort(a);h=d.sorters.items;if(h.length){d.doSort(d.generateComparator())}}return h},generateComparator:function(){var a=this.sorters.getRange();return a.length?this.createComparator(a):this.emptyComparator},createComparator:function(a){return function(d,c){var b=a[0].sort(d,c),g=a.length,e=1;for(;e<g;e++){b=b||a[e].sort.call(this,d,c)}return b}},emptyComparator:function(){return 0},onBeforeSort:Ext.emptyFn,decodeSorters:function(g){if(!Ext.isArray(g)){if(g===undefined){g=[]}else{g=[g]}}var d=g.length,h=Ext.util.Sorter,a=this.model?this.model.prototype.fields:null,e,b,c;for(c=0;c<d;c++){b=g[c];if(!(b instanceof h)){if(Ext.isString(b)){b={property:b}}Ext.applyIf(b,{root:this.sortRoot,direction:"ASC"});if(b.fn){b.sorterFn=b.fn}if(typeof b=="function"){b={sorterFn:b}}if(a&&!b.transform){e=a.get(b.property);b.transform=e?e.sortType:undefined}g[c]=new Ext.util.Sorter(b)}}return g},getSorters:function(){return this.sorters.items},getFirstSorter:function(){var c=this.sorters.items,a=c.length,b=0,d;for(;b<a;++b){d=c[b];if(!d.isGrouper){return d}}return null}});Ext.define("Ext.util.MixedCollection",{extend:"Ext.util.AbstractMixedCollection",mixins:{sortable:"Ext.util.Sortable"},constructor:function(){var a=this;a.callParent(arguments);a.addEvents("sort");a.mixins.sortable.initSortable.call(a)},doSort:function(a){this.sortBy(a)},_sort:function(l,a,k){var j=this,d,e,b=String(a).toUpperCase()=="DESC"?-1:1,h=[],m=j.keys,g=j.items;k=k||function(i,c){return i-c};for(d=0,e=g.length;d<e;d++){h[h.length]={key:m[d],value:g[d],index:d}}Ext.Array.sort(h,function(i,c){var n=k(i[l],c[l])*b;if(n===0){n=(i.index<c.index?-1:1)}return n});for(d=0,e=h.length;d<e;d++){g[d]=h[d].value;m[d]=h[d].key}j.fireEvent("sort",j)},sortBy:function(c){var h=this,b=h.items,g=h.keys,e=b.length,a=[],d;for(d=0;d<e;d++){a[d]={key:g[d],value:b[d],index:d}}Ext.Array.sort(a,function(j,i){var k=c(j.value,i.value);if(k===0){k=(j.index<i.index?-1:1)}return k});for(d=0;d<e;d++){b[d]=a[d].value;g[d]=a[d].key}h.fireEvent("sort",h,b,g)},findInsertionIndex:function(e,d){var g=this,b=g.items,i=0,a=b.length-1,c,h;if(!d){d=g.generateComparator()}while(i<=a){c=(i+a)>>1;h=d(e,b[c]);if(h>=0){i=c+1}else{if(h<0){a=c-1}}}return i},reorder:function(d){var h=this,b=h.items,c=0,g=b.length,a=[],e=[],i;h.suspendEvents();for(i in d){a[d[i]]=b[i]}for(c=0;c<g;c++){if(d[c]==undefined){e.push(b[c])}}for(c=0;c<g;c++){if(a[c]==undefined){a[c]=e.shift()}}h.clear();h.addAll(a);h.resumeEvents();h.fireEvent("sort",h)},sortByKey:function(a,b){this._sort("key",a,b||function(d,c){var g=String(d).toUpperCase(),e=String(c).toUpperCase();return g>e?1:(g<e?-1:0)})}});Ext.define("Ext.ZIndexManager",{alternateClassName:"Ext.WindowGroup",statics:{zBase:9000},constructor:function(a){var b=this;b.list={};b.zIndexStack=[];b.front=null;if(a){if(a.isContainer){a.on("resize",b._onContainerResize,b);b.zseed=Ext.Number.from(b.rendered?a.getEl().getStyle("zIndex"):undefined,b.getNextZSeed());b.targetEl=a.getTargetEl();b.container=a}else{Ext.EventManager.onWindowResize(b._onContainerResize,b);b.zseed=b.getNextZSeed();b.targetEl=Ext.get(a)}}else{Ext.EventManager.onWindowResize(b._onContainerResize,b);b.zseed=b.getNextZSeed();Ext.onDocumentReady(function(){b.targetEl=Ext.getBody()})}},getNextZSeed:function(){return(Ext.ZIndexManager.zBase+=10000)},setBase:function(b){this.zseed=b;var a=this.assignZIndices();this._activateLast();return a},assignZIndices:function(){var c=this.zIndexStack,b=c.length,e=0,g=this.zseed,d;for(;e<b;e++){d=c[e];if(d&&!d.hidden){g=d.setZIndex(g)}}this._activateLast();return g},_setActiveChild:function(b,a){var c=this.front;if(b!==c){if(c&&!c.destroying){c.setActive(false,b)}this.front=b;if(b&&b!=a){b.setActive(true);if(b.modal){this._showModalMask(b)}}}},onComponentHide:function(a){a.setActive(false);this._activateLast()},_activateLast:function(){var e=this,a=e.zIndexStack,d=a.length-1,c=e.front,b;e.front=undefined;for(;d>=0&&a[d].hidden;--d){}if((b=a[d])){e._setActiveChild(b,c);if(b.modal){return}}for(;d>=0;--d){b=a[d];if(b.isVisible()&&b.modal){e._showModalMask(b);return}}e._hideModalMask()},_showModalMask:function(a){var c=this,e=a.el.getStyle("zIndex")-4,b=a.floatParent?a.floatParent.getTargetEl():a.container,d=b.getBox();if(b.dom===document.body){d.height=Math.max(document.body.scrollHeight,Ext.dom.Element.getDocumentHeight());d.width=Math.max(document.body.scrollWidth,d.width)}if(!c.mask){c.mask=Ext.getBody().createChild({cls:Ext.baseCSSPrefix+"mask"});c.mask.setVisibilityMode(Ext.Element.DISPLAY);c.mask.on("click",c._onMaskClick,c)}c.mask.maskTarget=b;b.addCls(Ext.baseCSSPrefix+"body-masked");c.mask.setStyle("zIndex",e);c.mask.show();c.mask.setBox(d)},_hideModalMask:function(){var a=this.mask;if(a&&a.isVisible()){a.maskTarget.removeCls(Ext.baseCSSPrefix+"body-masked");a.maskTarget=undefined;a.hide()}},_onMaskClick:function(){if(this.front){this.front.focus()}},_onContainerResize:function(){var a=this.mask,b,c;if(a&&a.isVisible()){a.hide();b=a.maskTarget;if(b.dom===document.body){c={height:Math.max(document.body.scrollHeight,Ext.dom.Element.getDocumentHeight()),width:Math.max(document.body.scrollWidth,document.documentElement.clientWidth)}}else{c=b.getViewSize(true)}a.setSize(c);a.show()}},register:function(a){var b=this;if(a.zIndexManager){a.zIndexManager.unregister(a)}a.zIndexManager=b;b.list[a.id]=a;b.zIndexStack.push(a);a.on("hide",b.onComponentHide,b)},unregister:function(a){var b=this,c=b.list;delete a.zIndexManager;if(c&&c[a.id]){delete c[a.id];a.un("hide",b.onComponentHide);Ext.Array.remove(b.zIndexStack,a);b._activateLast()}},get:function(a){return a.isComponent?a:this.list[a]},bringToFront:function(b){var c=this,a=false,d=c.zIndexStack;b=c.get(b);if(b!==c.front){Ext.Array.remove(d,b);if(b.preventBringToFront){d.unshift(b)}else{d.push(b)}c.assignZIndices();a=true;this.front=b}if(a&&b.modal){c._showModalMask(b)}return a},sendToBack:function(a){var b=this;a=b.get(a);Ext.Array.remove(b.zIndexStack,a);b.zIndexStack.unshift(a);b.assignZIndices();this._activateLast();return a},hideAll:function(){var b=this.list,a,c;for(c in b){if(b.hasOwnProperty(c)){a=b[c];if(a.isComponent&&a.isVisible()){a.hide()}}}},hide:function(){var g=this,c=g.mask,e=0,b=g.zIndexStack,a=b.length,d;g.tempHidden=g.tempHidden||[];for(;e<a;e++){d=b[e];if(d.isVisible()){g.tempHidden.push(d);d.el.hide()}}if(c){c.hide()}},show:function(){var e=this,b=e.mask,d=0,g=e.tempHidden,a=g?g.length:0,c;for(;d<a;d++){c=g[d];c.el.show();c.setPosition(c.x,c.y)}e.tempHidden.length=0;if(b){b.show();b.alignTo(b.maskTarget,"tl-tl")}},getActive:function(){return this.front},getBy:function(g,e){var h=[],d=0,b=this.zIndexStack,a=b.length,c;for(;d<a;d++){c=b[d];if(g.call(e||c,c)!==false){h.push(c)}}return h},each:function(c,b){var d=this.list,e,a;for(e in d){if(d.hasOwnProperty(e)){a=d[e];if(a.isComponent&&c.call(b||a,a)===false){return}}}},eachBottomUp:function(g,e){var b=this.zIndexStack,d=0,a=b.length,c;for(;d<a;d++){c=b[d];if(c.isComponent&&g.call(e||c,c)===false){return}}},eachTopDown:function(e,d){var a=this.zIndexStack,c=a.length,b;for(;c-->0;){b=a[c];if(b.isComponent&&e.call(d||b,b)===false){return}}},destroy:function(){var b=this,c=b.list,a,d;for(d in c){if(c.hasOwnProperty(d)){a=c[d];if(a.isComponent){a.destroy()}}}delete b.zIndexStack;delete b.list;delete b.container;delete b.targetEl}},function(){Ext.WindowManager=Ext.WindowMgr=new this()});Ext.define("Ext.container.AbstractContainer",{extend:"Ext.Component",requires:["Ext.util.MixedCollection","Ext.layout.container.Auto","Ext.ZIndexManager"],renderTpl:"{%this.renderContainer(out,values)%}",suspendLayout:false,autoDestroy:true,defaultType:"panel",detachOnRemove:true,isContainer:true,layoutCounter:0,baseCls:Ext.baseCSSPrefix+"container",bubbleEvents:["add","remove"],defaultLayoutType:"auto",initComponent:function(){var a=this;a.addEvents("afterlayout","beforeadd","beforeremove","add","remove");a.callParent();a.getLayout();a.initItems()},initItems:function(){var b=this,a=b.items;b.items=new Ext.util.AbstractMixedCollection(false,b.getComponentId);if(a){if(!Ext.isArray(a)){a=[a]}b.add(a)}},getFocusEl:function(){return this.getTargetEl()},finishRenderChildren:function(){this.callParent();var a=this.getLayout();if(a){a.finishRender()}},beforeRender:function(){var b=this,a=b.getLayout();b.callParent();if(!a.initialized){a.initLayout()}},setupRenderTpl:function(b){var a=this.getLayout();this.callParent(arguments);a.setupRenderTpl(b)},setLayout:function(b){var a=this.layout;if(a&&a.isLayout&&a!=b){a.setOwner(null)}this.layout=b;b.setOwner(this)},getLayout:function(){var a=this;if(!a.layout||!a.layout.isLayout){a.setLayout(Ext.layout.Layout.create(a.layout,a.self.prototype.layout||"autocontainer"))}return a.layout},doLayout:function(){this.updateLayout();return this},afterLayout:function(b){var a=this;++a.layoutCounter;if(a.hasListeners.afterlayout){a.fireEvent("afterlayout",a,b)}},prepareItems:function(b,d){if(Ext.isArray(b)){b=b.slice()}else{b=[b]}var g=this,c=0,a=b.length,e;for(;c<a;c++){e=b[c];if(e==null){Ext.Array.erase(b,c,1);--c;--a}else{if(d){e=this.applyDefaults(e)}e.isContained=g;b[c]=g.lookupComponent(e);delete e.isContained}}return b},applyDefaults:function(a){var b=this.defaults;if(b){if(Ext.isFunction(b)){b=b.call(this,a)}if(Ext.isString(a)){a=Ext.ComponentManager.get(a)}Ext.applyIf(a,b)}return a},lookupComponent:function(a){return(typeof a=="string")?Ext.ComponentManager.get(a):Ext.ComponentManager.create(a,this.defaultType)},getComponentId:function(a){return a.getItemId()},add:function(){var j=this,g=Ext.Array.slice(arguments),d=(typeof g[0]=="number")?g.shift():-1,c=j.getLayout(),l,h,b,a,m,k,e;if(g.length==1&&Ext.isArray(g[0])){h=g[0];l=true}else{h=g}e=h=j.prepareItems(h,true);a=h.length;if(j.rendered){Ext.suspendLayouts()}if(!l&&a==1){e=h[0]}for(b=0;b<a;b++){m=h[b];k=(d<0)?j.items.length:(d+b);if(m.floating){j.floatingItems=j.floatingItems||new Ext.util.MixedCollection();j.floatingItems.add(m);m.onAdded(j,k)}else{if((!j.hasListeners.beforeadd||j.fireEvent("beforeadd",j,m,k)!==false)&&j.onBeforeAdd(m)!==false){j.items.insert(k,m);m.onAdded(j,k);j.onAdd(m,k);c.onAdd(m,k);if(j.hasListeners.add){j.fireEvent("add",j,m,k)}}}}j.updateLayout();if(j.rendered){Ext.resumeLayouts(true)}return e},onAdd:Ext.emptyFn,onRemove:Ext.emptyFn,insert:function(b,a){return this.add(b,a)},move:function(b,d){var a=this.items,c;c=a.removeAt(b);if(c===false){return false}a.insert(d,c);this.doLayout();return c},onBeforeAdd:function(c){var b=this,a=c.border;if(c.ownerCt&&c.ownerCt!==b){c.ownerCt.remove(c,false)}if(b.border===false||b.border===0){c.border=Ext.isDefined(a)&&a!==false&&a!==0}},remove:function(a,b){var d=this,e=d.getComponent(a);if(e&&(!d.hasListeners.beforeremove||d.fireEvent("beforeremove",d,e)!==false)){d.doRemove(e,b);if(d.hasListeners.remove){d.fireEvent("remove",d,e)}if(!d.destroying){d.doLayout()}}return e},doRemove:function(c,b){var e=this,d=e.layout,a=d&&e.rendered,g=b===true||(b!==false&&e.autoDestroy);b=b===true||(b!==false&&e.autoDestroy);e.items.remove(c);if(a){if(d.running){Ext.AbstractComponent.cancelLayout(c,g)}d.onRemove(c,g)}c.onRemoved(g);e.onRemove(c,g);if(g){c.destroy()}else{if(a){d.afterRemove(c)}if(e.detachOnRemove&&c.rendered){Ext.getDetachedBody().appendChild(c.getEl())}}},removeAll:function(c){var h=this,e=h.items.items.slice(),b=[],d=0,a=e.length,g;h.suspendLayouts();for(;d<a;d++){g=e[d];h.remove(g,c);if(g.ownerCt!==h){b.push(g)}}h.resumeLayouts(!!a);return b},getRefItems:function(c){var h=this,d=h.items.items,b=d.length,e=0,g,a=[];for(;e<b;e++){g=d[e];a.push(g);if(c&&g.getRefItems){a.push.apply(a,g.getRefItems(true))}}if(h.floatingItems){a.push.apply(a,h.floatingItems.items)}return a},cascade:function(l,m,a){var k=this,e=k.items?k.items.items:[],g=e.length,d=0,j,h=a?a.concat(k):[k],b=h.length-1;if(l.apply(m||k,h)!==false){for(;d<g;d++){j=e[d];if(j.cascade){j.cascade(l,m,a)}else{h[b]=j;l.apply(m||e,h)}}}return this},isAncestor:function(a){while(a){if(a.ownerCt===this){return true}a=a.ownerCt}},getComponent:function(a){if(Ext.isObject(a)){a=a.getItemId()}return this.items.get(a)},query:function(a){a=a||"*";return Ext.ComponentQuery.query(a,this)},queryBy:function(g,e){var c=[],b=this.getRefItems(true),d=0,a=b.length,h;for(;d<a;++d){h=b[d];if(g.call(e||h,h)!==false){c.push(h)}}return c},queryById:function(a){return this.down("#"+a)},child:function(a){a=a||"";return this.query("> "+a)[0]||null},nextChild:function(e,b){var c=this,a,d=c.items.indexOf(e);if(d!==-1){a=b?Ext.ComponentQuery(b,c.items.items.slice(d+1)):c.items.getAt(d+1);if(!a&&c.ownerCt){a=c.ownerCt.nextChild(c,b)}}return a},prevChild:function(e,b){var c=this,a,d=c.items.indexOf(e);if(d!==-1){a=b?Ext.ComponentQuery(b,c.items.items.slice(d+1)):c.items.getAt(d+1);if(!a&&c.ownerCt){a=c.ownerCt.nextChild(c,b)}}return a},down:function(a){return this.query(a)[0]||null},enable:function(){this.callParent(arguments);var d=this.getChildItemsToDisable(),c=d.length,b,a;for(a=0;a<c;a++){b=d[a];if(b.resetDisable){b.enable()}}return this},disable:function(){this.callParent(arguments);var d=this.getChildItemsToDisable(),c=d.length,b,a;for(a=0;a<c;a++){b=d[a];if(b.resetDisable!==false&&!b.disabled){b.disable();b.resetDisable=true}}return this},getChildItemsToDisable:function(){return this.query("[isFormField],button")},beforeLayout:function(){return true},beforeDestroy:function(){var b=this,a=b.items,d;if(a){while((d=a.first())){b.doRemove(d,true)}}Ext.destroy(b.layout);b.callParent()}});Ext.define("Ext.container.Container",{extend:"Ext.container.AbstractContainer",alias:"widget.container",alternateClassName:"Ext.Container",fireHierarchyEvent:function(a){this.hierarchyEventSource.fireEvent(a,this)},afterHide:function(){this.callParent(arguments);this.fireHierarchyEvent("hide")},afterShow:function(){this.callParent(arguments);this.fireHierarchyEvent("show")},onAdded:function(){this.callParent(arguments);if(this.hierarchyEventSource.hasListeners.added){this.fireHierarchyEvent("added")}},getChildByElement:function(e,a){var h,c,b=0,d=this.getRefItems(),g=d.length;e=Ext.getDom(e);for(;b<g;b++){h=d[b];c=h.getEl();if(c&&((c.dom===e)||c.contains(e))){return(a&&h.getChildByElement)?h.getChildByElement(e,a):h}}return null}},function(){this.hierarchyEventSource=this.prototype.hierarchyEventSource=new Ext.util.Observable({events:{hide:true,show:true,collapse:true,expand:true,added:true}})});Ext.define("Ext.Editor",{extend:"Ext.container.Container",alias:"widget.editor",requires:["Ext.layout.container.Editor"],layout:"editor",allowBlur:true,revertInvalid:true,value:"",alignment:"c-c?",offsets:[0,0],shadow:"frame",constrain:false,swallowKeys:true,completeOnEnter:true,cancelOnEsc:true,updateEl:false,hidden:true,baseCls:Ext.baseCSSPrefix+"editor",initComponent:function(){var a=this,b=a.field=Ext.ComponentManager.create(a.field,"textfield");Ext.apply(b,{inEditor:true,msgTarget:b.msgTarget=="title"?"title":"qtip"});a.mon(b,{scope:a,blur:{fn:a.onFieldBlur,delay:1},specialkey:a.onSpecialKey});if(b.grow){a.mon(b,"autosize",a.onFieldAutosize,a,{delay:1})}a.floating={constrain:a.constrain};a.items=b;a.callParent(arguments);a.addEvents("beforestartedit","startedit","beforecomplete","complete","canceledit","specialkey")},onFieldAutosize:function(){this.updateLayout()},afterRender:function(b,a){var c=this,e=c.field,d=e.inputEl;c.callParent(arguments);if(d){d.dom.name="";if(c.swallowKeys){d.swallowEvent(["keypress","keydown"])}}},onSpecialKey:function(g,e){var d=this,b=e.getKey(),a=d.completeOnEnter&&b==e.ENTER,c=d.cancelOnEsc&&b==e.ESC;if(a||c){e.stopEvent();Ext.defer(function(){if(a){d.completeEdit()}else{d.cancelEdit()}if(g.triggerBlur){g.triggerBlur(e)}},10)}d.fireEvent("specialkey",d,g,e)},startEdit:function(a,c){var b=this,d=b.field;b.completeEdit();b.boundEl=Ext.get(a);c=Ext.isDefined(c)?c:Ext.String.trim(b.boundEl.dom.innerText||b.boundEl.dom.innerHTML);if(!b.rendered){b.render(b.parentEl||document.body)}if(b.fireEvent("beforestartedit",b,b.boundEl,c)!==false){b.startValue=c;b.show();d.suspendEvents();d.reset();d.setValue(c);d.resumeEvents();b.realign(true);d.focus(false,10);if(d.autoSize){d.autoSize()}b.editing=true}},realign:function(a){var b=this;if(a===true){b.updateLayout()}b.alignTo(b.boundEl,b.alignment,b.offsets)},completeEdit:function(a){var b=this,d=b.field,c;if(!b.editing){return}if(d.assertValue){d.assertValue()}c=b.getValue();if(!d.isValid()){if(b.revertInvalid!==false){b.cancelEdit(a)}return}if(String(c)===String(b.startValue)&&b.ignoreNoChange){b.hideEdit(a);return}if(b.fireEvent("beforecomplete",b,c,b.startValue)!==false){c=b.getValue();if(b.updateEl&&b.boundEl){b.boundEl.update(c)}b.hideEdit(a);b.fireEvent("complete",b,c,b.startValue)}},onShow:function(){var a=this;a.callParent(arguments);if(a.hideEl!==false){a.boundEl.hide()}a.fireEvent("startedit",a,a.boundEl,a.startValue)},cancelEdit:function(a){var c=this,b=c.startValue,e=c.field,d;if(c.editing){d=c.getValue();e.suspendEvents();c.setValue(b);e.resumeEvents();c.hideEdit(a);c.fireEvent("canceledit",c,d,b)}},hideEdit:function(a){if(a!==true){this.editing=false;this.hide()}},onFieldBlur:function(d,c){var a=this,b;if(a.allowBlur===true&&a.editing&&a.selectSameEditor!==true){a.completeEdit()}if(c&&Ext.fly(b=c.getTarget()).focusable()){b.focus()}},onHide:function(){var a=this,b=a.field;if(a.editing){a.completeEdit();return}if(b.hasFocus){b.blur()}if(b.collapse){b.collapse()}if(a.hideEl!==false){a.boundEl.show()}a.callParent(arguments)},setValue:function(a){this.field.setValue(a)},getValue:function(){return this.field.getValue()},beforeDestroy:function(){var a=this;Ext.destroy(a.field);delete a.field;delete a.parentEl;delete a.boundEl;a.callParent(arguments)}});Ext.define("Ext.util.KeyMap",{alternateClassName:"Ext.KeyMap",eventName:"keydown",constructor:function(a){var b=this;if((arguments.length!==1)||(typeof a==="string")||a.dom||a.tagName||a===document||a.isComponent){b.legacyConstructor.apply(b,arguments);return}Ext.apply(b,a);b.bindings=[];if(!b.target.isComponent){b.target=Ext.get(b.target)}if(b.binding){b.addBinding(b.binding)}else{if(a.key){b.addBinding(a)}}b.enable()},legacyConstructor:function(b,d,a){var c=this;Ext.apply(c,{target:Ext.get(b),eventName:a||c.eventName,bindings:[]});if(d){c.addBinding(d)}c.enable()},addBinding:function(h){var g=h.key,j=false,d,e,b,c,a;if(Ext.isArray(h)){for(c=0,a=h.length;c<a;c++){this.addBinding(h[c])}return}if(Ext.isString(g)){e=[];b=g.toUpperCase();for(c=0,a=b.length;c<a;++c){e.push(b.charCodeAt(c))}g=e;j=true}if(!Ext.isArray(g)){g=[g]}if(!j){for(c=0,a=g.length;c<a;++c){d=g[c];if(Ext.isString(d)){g[c]=d.toUpperCase().charCodeAt(0)}}}this.bindings.push(Ext.apply({keyCode:g},h))},handleTargetEvent:(function(){var a=/input|textarea/i;return function(g){var e=this,j,c,b,h,d;if(this.enabled){j=this.bindings;c=0;b=j.length;g=e.processEvent.apply(e||e.processEventScope,arguments);if(e.ignoreInputFields){h=g.target;d=h.contentEditable;if(a.test(h.tagName)||(d===""||d==="true")){return}}if(!g.getKey){return g}for(;c<b;++c){this.processBinding(j[c],g)}}}}()),processEvent:function(a){return a},processBinding:function(g,a){if(this.checkModifiers(g,a)){var h=a.getKey(),k=g.fn||g.handler,l=g.scope||this,j=g.keyCode,b=g.defaultEventAction,c,e,d=new Ext.EventObjectImpl(a);for(c=0,e=j.length;c<e;++c){if(h===j[c]){if(k.call(l,h,a)!==true&&b){d[b]()}break}}}},checkModifiers:function(j,g){var d=["shift","ctrl","alt"],c=0,a=d.length,h,b;for(;c<a;++c){b=d[c];h=j[b];if(!(h===undefined||(h===g[b+"Key"]))){return false}}return true},on:function(b,d,c){var h,a,e,g;if(Ext.isObject(b)&&!Ext.isArray(b)){h=b.key;a=b.shift;e=b.ctrl;g=b.alt}else{h=b}this.addBinding({key:h,shift:a,ctrl:e,alt:g,fn:d,scope:c})},isEnabled:function(){return this.enabled},enable:function(){var a=this;if(!a.enabled){a.target.on(a.eventName,a.handleTargetEvent,a);a.enabled=true}},disable:function(){var a=this;if(a.enabled){a.target.removeListener(a.eventName,a.handleTargetEvent,a);a.enabled=false}},setDisabled:function(a){if(a){this.disable()}else{this.enable()}},destroy:function(c){var a=this,b=a.target;a.bindings=[];a.disable();if(c===true){if(b.isComponent){b.destroy()}else{b.remove()}}delete a.target}});Ext.define("Ext.util.KeyNav",{alternateClassName:"Ext.KeyNav",requires:["Ext.util.KeyMap"],statics:{keyOptions:{left:37,right:39,up:38,down:40,space:32,pageUp:33,pageDown:34,del:46,backspace:8,home:36,end:35,enter:13,esc:27,tab:9}},constructor:function(a){var b=this;if(arguments.length===2){b.legacyConstructor.apply(b,arguments);return}b.setConfig(a)},legacyConstructor:function(b,a){this.setConfig(Ext.apply({target:b},a))},setConfig:function(b){var e=this,c={target:b.target,ignoreInputFields:b.ignoreInputFields,eventName:e.getKeyEvent("forceKeyDown" in b?b.forceKeyDown:e.forceKeyDown,b.eventName)},g,a,i,d,h;if(e.map){e.map.destroy()}if(b.processEvent){c.processEvent=b.processEvent;c.processEventScope=b.processEventScope||e}g=e.map=new Ext.util.KeyMap(c);a=Ext.util.KeyNav.keyOptions;i=b.scope||e;for(d in a){if(a.hasOwnProperty(d)){if(h=b[d]){if(typeof h==="function"){h={handler:h,defaultAction:(b.defaultEventAction!==undefined)?b.defaultEventAction:e.defaultEventAction}}g.addBinding({key:a[d],handler:Ext.Function.bind(e.handleEvent,h.scope||i,h.handler||h.fn,true),defaultEventAction:(h.defaultEventAction!==undefined)?h.defaultAction:e.defaultEventAction})}}}g.disable();if(!b.disabled){g.enable()}},handleEvent:function(c,b,a){return a.call(this,b)},disabled:false,defaultEventAction:"stopEvent",forceKeyDown:false,eventName:"keypress",destroy:function(a){this.map.destroy(a);delete this.map},enable:function(){this.map.enable();this.disabled=false},disable:function(){this.map.disable();this.disabled=true},setDisabled:function(a){this.map.setDisabled(a);this.disabled=a},getKeyEvent:function(b,a){if(b||(Ext.EventManager.useKeyDown&&!a)){return"keydown"}else{return a||this.eventName}}});Ext.define("Ext.FocusManager",{singleton:true,alternateClassName:["Ext.FocusMgr"],mixins:{observable:"Ext.util.Observable"},requires:["Ext.AbstractComponent","Ext.Component","Ext.ComponentManager","Ext.ComponentQuery","Ext.util.HashMap","Ext.util.KeyNav"],enabled:false,focusElementCls:Ext.baseCSSPrefix+"focus-element",focusFrameCls:Ext.baseCSSPrefix+"focus-frame",whitelist:["textfield"],constructor:function(a){var b=this,c=Ext.ComponentQuery;b.mixins.observable.constructor.call(b,a);b.addEvents("beforecomponentfocus","componentfocus","disable","enable");b.focusTask=new Ext.util.DelayedTask(b.handleComponentFocus,b);Ext.override(Ext.AbstractComponent,{onFocus:function(){this.callParent(arguments);if(b.enabled&&this.hasFocus){Array.prototype.unshift.call(arguments,this);b.onComponentFocus.apply(b,arguments)}},onBlur:function(){this.callParent(arguments);if(b.enabled&&!this.hasFocus){Array.prototype.unshift.call(arguments,this);b.onComponentBlur.apply(b,arguments)}},onDestroy:function(){this.callParent(arguments);if(b.enabled){Array.prototype.unshift.call(arguments,this);b.onComponentDestroy.apply(b,arguments)}}});Ext.override(Ext.Component,{afterHide:function(){this.callParent(arguments);if(b.enabled){Array.prototype.unshift.call(arguments,this);b.onComponentHide.apply(b,arguments)}}});b.keyNav=new Ext.util.KeyNav(Ext.getDoc(),{disabled:true,scope:b,backspace:b.focusLast,enter:b.navigateIn,esc:b.navigateOut,tab:b.navigateSiblings,space:b.navigateIn,del:b.focusLast,left:b.navigateSiblings,right:b.navigateSiblings,down:b.navigateSiblings,up:b.navigateSiblings});b.focusData={};b.subscribers=new Ext.util.HashMap();b.focusChain={};Ext.apply(c.pseudos,{focusable:function(e){var d=e.length,h=[],g=0,j;for(;g<d;g++){j=e[g];if(j.isFocusable()){h.push(j)}}return h},nextFocus:function(g,e,j){j=j||1;e=parseInt(e,10);var d=g.length,h=e,k;for(;;){if((h+=j)>=d){h=0}else{if(h<0){h=d-1}}if(h===e){return[]}if((k=g[h]).isFocusable()){return[k]}}return[]},prevFocus:function(e,d){return this.nextFocus(e,d,-1)},root:function(e){var d=e.length,h=[],g=0,j;for(;g<d;g++){j=e[g];if(!j.ownerCt){h.push(j)}}return h}})},addXTypeToWhitelist:function(b){var a=this;if(Ext.isArray(b)){Ext.Array.forEach(b,a.addXTypeToWhitelist,a);return}if(!Ext.Array.contains(a.whitelist,b)){a.whitelist.push(b)}},clearComponent:function(a){clearTimeout(this.cmpFocusDelay);if(!a.isDestroyed){a.blur()}},disable:function(){var a=this;if(!a.enabled){return}delete a.options;a.enabled=false;a.removeDOM();a.keyNav.disable();a.fireEvent("disable",a)},enable:function(a){var b=this;if(a===true){a={focusFrame:true}}b.options=a=a||{};if(b.enabled){return}b.enabled=true;b.initDOM(a);b.keyNav.enable();b.focusEl.focus();delete b.focusedCmp;b.fireEvent("enable",b)},focusLast:function(b){var a=this;if(a.isWhitelisted(a.focusedCmp)){return true}if(a.previousFocusedCmp){a.previousFocusedCmp.focus()}},getRootComponents:function(){var a=this,c=Ext.ComponentQuery,b=c.query(":focusable:root:not([floating])"),d=c.query(":focusable:root[floating]");d.sort(function(g,e){return g.el.getZIndex()>e.el.getZIndex()});return d.concat(b)},initDOM:function(c){var g=this,b=g.focusFrameCls,e=Ext.ComponentQuery.query("{getFocusEl()}:not([focusListenerAdded])"),d=0,a=e.length;if(!Ext.isReady){return Ext.onReady(g.initDOM,g)}for(;d<a;d++){e[d].addFocusListener()}if(!g.focusEl){g.focusEl=Ext.getBody();g.focusEl.dom.tabIndex=-1}if(!g.focusFrame&&c.focusFrame){g.focusFrame=Ext.getBody().createChild({cls:b,children:[{cls:b+"-top"},{cls:b+"-bottom"},{cls:b+"-left"},{cls:b+"-right"}],style:"top: -100px; left: -100px;"});g.focusFrame.setVisibilityMode(Ext.Element.DISPLAY);g.focusFrame.hide().setLeftTop(0,0)}},isWhitelisted:function(a){return a&&Ext.Array.some(this.whitelist,function(b){return a.isXType(b)})},navigateIn:function(g){var c=this,a=c.focusedCmp,b,d;if(c.isWhitelisted(a)){return true}if(!a){b=c.getRootComponents()[0];if(b){if(b.getFocusEl()===c.focusEl){c.focusEl.blur()}b.focus()}}else{d=a.hasFocus?Ext.ComponentQuery.query(">:focusable",a)[0]:a;if(d){d.focus()}else{if(Ext.isFunction(a.onClick)){g.button=0;a.onClick(g);if(a.isVisible(true)){a.focus()}else{c.navigateOut()}}}}},navigateOut:function(c){var b=this,a;if(!b.focusedCmp||!(a=b.focusedCmp.up(":focusable"))){b.focusEl.focus()}else{a.focus()}return true},navigateSiblings:function(i,b,o){var j=this,a=b||j,p=i.getKey(),g=Ext.EventObject,k=i.shiftKey||p==g.LEFT||p==g.UP,c=p==g.LEFT||p==g.RIGHT||p==g.UP||p==g.DOWN,h=k?"prev":"next",n,d,m,l;m=(a.focusedCmp&&a.focusedCmp.comp)||a.focusedCmp;if(!m&&!o){return true}if(c&&j.isWhitelisted(m)){return true}if(!m||m.is(":root")){l=j.getRootComponents()}else{o=o||m.up();if(o){l=o.getRefItems()}}if(l){n=m?Ext.Array.indexOf(l,m):-1;d=Ext.ComponentQuery.query(":"+h+"Focus("+n+")",l)[0];if(d&&m!==d){d.focus();return d}}},onComponentBlur:function(b,c){var a=this;if(a.focusedCmp===b){a.previousFocusedCmp=b;delete a.focusedCmp}if(a.focusFrame){a.focusFrame.hide()}},onComponentFocus:function(d,g){var c=this,a=c.focusChain,b;if(!d.isFocusable()){c.clearComponent(d);if(a[d.id]){return}b=d.up();if(b){a[d.id]=true;b.focus()}return}c.focusChain={};c.focusTask.delay(10,null,null,[d,d.getFocusEl()])},handleComponentFocus:function(m,i){var k=this,p,a,d,h,o,b,l,e,g,c,n,j;if(k.fireEvent("beforecomponentfocus",k,m,k.previousFocusedCmp)===false){k.clearComponent(m);return}k.focusedCmp=m;if(k.shouldShowFocusFrame(m)){p="."+k.focusFrameCls+"-";a=k.focusFrame;h=i.getPageBox();o=h.top;b=h.left;l=h.width;e=h.height;g=a.child(p+"top");c=a.child(p+"bottom");n=a.child(p+"left");j=a.child(p+"right");g.setWidth(l).setLeftTop(b,o);c.setWidth(l).setLeftTop(b,o+e-2);n.setHeight(e-2).setLeftTop(b,o+2);j.setHeight(e-2).setLeftTop(b+l-2,o+2);a.show()}k.fireEvent("componentfocus",k,m,k.previousFocusedCmp)},onComponentHide:function(e){var d=this,b=false,a=d.focusedCmp,c;if(a){b=e.hasFocus||(e.isContainer&&e.isAncestor(d.focusedCmp))}d.clearComponent(e);if(b&&(c=e.up(":focusable"))){c.focus()}else{d.focusEl.focus()}},onComponentDestroy:function(){},removeDOM:function(){var a=this;if(a.enabled||a.subscribers.length){return}Ext.destroy(a.focusFrame);delete a.focusEl;delete a.focusFrame},removeXTypeFromWhitelist:function(b){var a=this;if(Ext.isArray(b)){Ext.Array.forEach(b,a.removeXTypeFromWhitelist,a);return}Ext.Array.remove(a.whitelist,b)},setupSubscriberKeys:function(a,g){var e=this,d=a.getFocusEl(),c=g.scope,b={backspace:e.focusLast,enter:e.navigateIn,esc:e.navigateOut,scope:e},h=function(i){if(e.focusedCmp===a){return e.navigateSiblings(i,e,a)}else{return e.navigateSiblings(i)}};Ext.iterate(g,function(j,i){b[j]=function(l){var k=h(l);if(Ext.isFunction(i)&&i.call(c||a,l,k)===true){return true}return k}},e);return new Ext.util.KeyNav(d,b)},shouldShowFocusFrame:function(c){var b=this,a=b.options||{},e=c.getFocusEl(),d=Ext.getDom(e).tagName;if(!b.focusFrame||!c){return false}if(a.focusFrame){return true}if(b.focusData[c.id].focusFrame){return true}return false}});Ext.define("Ext.Img",{extend:"Ext.Component",alias:["widget.image","widget.imagecomponent"],autoEl:"img",src:"",alt:"",imgCls:"",getElConfig:function(){var c=this,b=c.callParent(),a;if(c.autoEl=="img"){a=b}else{b.cn=[a={tag:"img",id:c.id+"-img"}]}if(c.imgCls){a.cls=(a.cls?a.cls+" ":"")+c.imgCls}a.src=c.src||Ext.BLANK_IMAGE_URL;if(c.alt){a.alt=c.alt}return b},onRender:function(){var b=this,a;b.callParent(arguments);a=b.el;b.imgEl=(b.autoEl=="img")?a:a.getById(b.id+"-img")},onDestroy:function(){Ext.destroy(this.imgEl);this.imgEl=null;this.callParent()},setSrc:function(c){var a=this,b=a.imgEl;a.src=c;if(b){b.dom.src=c||Ext.BLANK_IMAGE_URL}}});Ext.define("Ext.Layer",{extend:"Ext.Element",uses:["Ext.Shadow"],statics:{shims:[]},isLayer:true,constructor:function(b,a){b=b||{};var c=this,d=Ext.DomHelper,g=b.parentEl,e=g?Ext.getDom(g):document.body,h=b.hideMode;if(a){c.dom=Ext.getDom(a)}if(!c.dom){c.dom=d.append(e,b.dh||{tag:"div",cls:Ext.baseCSSPrefix+"layer"})}else{c.addCls(Ext.baseCSSPrefix+"layer");if(!c.dom.parentNode){e.appendChild(c.dom)}}if(b.id){c.id=c.dom.id=b.id}else{c.id=Ext.id(c.dom)}Ext.Element.addToCache(c);if(b.cls){c.addCls(b.cls)}c.constrain=b.constrain!==false;if(h){c.setVisibilityMode(Ext.Element[h.toUpperCase()]);if(c.visibilityMode==Ext.Element.ASCLASS){c.visibilityCls=b.visibilityCls}}else{if(b.useDisplay){c.setVisibilityMode(Ext.Element.DISPLAY)}else{c.setVisibilityMode(Ext.Element.VISIBILITY)}}if(b.shadow){c.shadowOffset=b.shadowOffset||4;c.shadow=new Ext.Shadow({offset:c.shadowOffset,mode:b.shadow});c.disableShadow()}else{c.shadowOffset=0}c.useShim=b.shim!==false&&Ext.useShims;if(b.hidden===true){c.hide()}else{c.show()}},getZIndex:function(){return parseInt((this.getShim()||this).getStyle("z-index"),10)},getShim:function(){var b=this,c,a;if(!b.useShim){return null}if(!b.shim){c=b.self.shims.shift();if(!c){c=b.createShim();c.enableDisplayMode("block");c.hide()}a=b.dom.parentNode;if(c.dom.parentNode!=a){a.insertBefore(c.dom,b.dom)}b.shim=c}return b.shim},hideShim:function(){var a=this;if(a.shim){a.shim.setDisplayed(false);a.self.shims.push(a.shim);delete a.shim}},disableShadow:function(){var a=this;if(a.shadow&&!a.shadowDisabled){a.shadowDisabled=true;a.shadow.hide();a.lastShadowOffset=a.shadowOffset;a.shadowOffset=0}},enableShadow:function(a){var b=this;if(b.shadow&&b.shadowDisabled){b.shadowDisabled=false;b.shadowOffset=b.lastShadowOffset;delete b.lastShadowOffset;if(a){b.sync(true)}}},sync:function(b){var j=this,n=j.shadow,i,e,a,d,c,o,m,g,k;if(!j.updating&&j.isVisible()&&(n||j.useShim)){d=j.getShim();c=j.getLocalX();o=j.getLocalY();m=j.dom.offsetWidth;g=j.dom.offsetHeight;if(n&&!j.shadowDisabled){if(b&&!n.isVisible()){n.show(j)}else{n.realign(c,o,m,g)}if(d){k=d.getStyle("z-index");if(k>j.zindex){j.shim.setStyle("z-index",j.zindex-2)}d.show();if(n.isVisible()){i=n.el.getXY();e=d.dom.style;a=n.el.getSize();if(Ext.supports.CSS3BoxShadow){a.height+=6;a.width+=4;i[0]-=2;i[1]-=4}e.left=(i[0])+"px";e.top=(i[1])+"px";e.width=(a.width)+"px";e.height=(a.height)+"px"}else{d.setSize(m,g);d.setLeftTop(c,o)}}}else{if(d){k=d.getStyle("z-index");if(k>j.zindex){j.shim.setStyle("z-index",j.zindex-2)}d.show();d.setSize(m,g);d.setLeftTop(c,o)}}}return j},remove:function(){this.hideUnders();this.callParent()},beginUpdate:function(){this.updating=true},endUpdate:function(){this.updating=false;this.sync(true)},hideUnders:function(){if(this.shadow){this.shadow.hide()}this.hideShim()},constrainXY:function(){if(this.constrain){var g=Ext.Element.getViewWidth(),b=Ext.Element.getViewHeight(),l=Ext.getDoc().getScroll(),k=this.getXY(),i=k[0],e=k[1],a=this.shadowOffset,j=this.dom.offsetWidth+a,c=this.dom.offsetHeight+a,d=false;if((i+j)>g+l.left){i=g-j-a;d=true}if((e+c)>b+l.top){e=b-c-a;d=true}if(i<l.left){i=l.left;d=true}if(e<l.top){e=l.top;d=true}if(d){Ext.Layer.superclass.setXY.call(this,[i,e]);this.sync()}}return this},getConstrainOffset:function(){return this.shadowOffset},setVisible:function(e,b,d,h,g){var c=this,a;a=function(){if(e){c.sync(true)}if(h){h()}};if(!e){c.hideUnders(true)}c.callParent([e,b,d,h,g]);if(!b){a()}return c},beforeFx:function(){this.beforeAction();return this.callParent(arguments)},afterFx:function(){this.callParent(arguments);this.sync(this.isVisible())},beforeAction:function(){if(!this.updating&&this.shadow){this.shadow.hide()}},setLeft:function(a){this.callParent(arguments);return this.sync()},setTop:function(a){this.callParent(arguments);return this.sync()},setLeftTop:function(b,a){this.callParent(arguments);return this.sync()},setXY:function(d,a,c,g,e){var b=this;g=b.createCB(g);b.fixDisplay();b.beforeAction();b.callParent([d,a,c,g,e]);if(!a){g()}return b},createCB:function(c){var a=this,b=a.shadow&&a.shadow.isVisible();return function(){a.constrainXY();a.sync(b);if(c){c()}}},setX:function(a,b,c,e,d){this.setXY([a,this.getY()],b,c,e,d);return this},setY:function(e,a,b,d,c){this.setXY([this.getX(),e],a,b,d,c);return this},setSize:function(a,c,b,e,i,g){var d=this;i=d.createCB(i);d.beforeAction();d.callParent([a,c,b,e,i,g]);if(!b){i()}return d},setWidth:function(a,b,d,g,e){var c=this;g=c.createCB(g);c.beforeAction();c.callParent([a,b,d,g,e]);if(!b){g()}return c},setHeight:function(b,a,d,g,e){var c=this;g=c.createCB(g);c.beforeAction();c.callParent([b,a,d,g,e]);if(!a){g()}return c},setBounds:function(h,g,a,j,b,c,i,d){var e=this;i=e.createCB(i);e.beforeAction();if(!b){Ext.Layer.superclass.setXY.call(e,[h,g]);Ext.Layer.superclass.setSize.call(e,a,j);i()}else{e.callParent([h,g,a,j,b,c,i,d])}return e},setZIndex:function(a){var b=this;b.zindex=a;if(b.getShim()){b.shim.setStyle("z-index",a++)}if(b.shadow){b.shadow.setZIndex(a++)}return b.setStyle("z-index",a)},onOpacitySet:function(a){var b=this.shadow;if(b){b.setOpacity(a)}}});Ext.define("Ext.util.Bindable",{bindStore:function(a,b){var c=this,d=c.store;if(!b&&c.store){c.onUnbindStore(d,b);if(a!==d&&d.autoDestroy){d.destroyStore()}else{c.unbindStoreListeners(d)}}if(a){a=Ext.data.StoreManager.lookup(a);c.bindStoreListeners(a);c.onBindStore(a,b)}c.store=a||null;return c},getStore:function(){return this.store},unbindStoreListeners:function(a){var b=this.storeListeners;if(b){a.un(b)}},bindStoreListeners:function(a){var c=this,b=Ext.apply({},c.getStoreListeners());if(!b.scope){b.scope=c}c.storeListeners=b;a.on(b)},getStoreListeners:Ext.emptyFn,onUnbindStore:Ext.emptyFn,onBindStore:Ext.emptyFn});Ext.define("Ext.LoadMask",{extend:"Ext.Component",alias:"widget.loadmask",mixins:{floating:"Ext.util.Floating",bindable:"Ext.util.Bindable"},uses:["Ext.data.StoreManager"],msg:"Loading...",msgCls:Ext.baseCSSPrefix+"mask-loading",maskCls:Ext.baseCSSPrefix+"mask",useMsg:true,useTargetEl:false,baseCls:Ext.baseCSSPrefix+"mask-msg",childEls:["msgEl"],renderTpl:'<div id="{id}-msgEl" style="position:relative" class="{[values.$comp.msgCls]}"></div>',floating:{shadow:"frame"},focusOnToFront:false,bringParentToFront:false,constructor:function(a,b){var c=this;if(!a.isComponent){a=Ext.get(a);this.isElement=true}c.ownerCt=a;if(!this.isElement){c.bindComponent(a)}c.callParent([b]);if(c.store){c.bindStore(c.store,true)}},bindComponent:function(a){var c=this,b={scope:this,resize:c.sizeMask,added:c.onComponentAdded,removed:c.onComponentRemoved},d=Ext.container.Container.hierarchyEventSource;if(a.floating){b.move=c.sizeMask;c.activeOwner=a}else{if(a.ownerCt){c.onComponentAdded(a.ownerCt)}else{c.preventBringToFront=true}}c.mon(a,b);c.mon(d,{show:c.onContainerShow,hide:c.onContainerHide,expand:c.onContainerExpand,collapse:c.onContainerCollapse,scope:c})},onComponentAdded:function(a){var b=this;delete b.activeOwner;b.floatParent=a;if(!a.floating){a=a.up("[floating]")}if(a){b.activeOwner=a;b.mon(a,"move",b.sizeMask,b)}a=b.floatParent.ownerCt;if(b.rendered&&b.isVisible()&&a){b.floatOwner=a;b.mon(a,"afterlayout",b.sizeMask,b,{single:true})}},onComponentRemoved:function(a){var c=this,d=c.activeOwner,b=c.floatOwner;if(d){c.mun(d,"move",c.sizeMask,c)}if(b){c.mun(b,"afterlayout",c.sizeMask,c)}delete c.activeOwner;delete c.floatOwner},afterRender:function(){this.callParent(arguments);this.container=this.floatParent.getContentTarget()},onContainerShow:function(a){if(this.isActiveContainer(a)){this.onComponentShow()}},onContainerHide:function(a){if(this.isActiveContainer(a)){this.onComponentHide()}},onContainerExpand:function(a){if(this.isActiveContainer(a)){this.onComponentShow()}},onContainerCollapse:function(a){if(this.isActiveContainer(a)){this.onComponentHide()}},isActiveContainer:function(a){return this.isDescendantOf(a)},onComponentHide:function(){var a=this;if(a.rendered&&a.isVisible()){a.hide();a.showNext=true}},onComponentShow:function(){if(this.showNext){this.show()}delete this.showNext},sizeMask:function(){var a=this,b;if(a.rendered&&a.isVisible()){a.center();b=a.getMaskTarget();a.getMaskEl().show().setSize(b.getSize()).alignTo(b,"tl-tl")}},bindStore:function(a,b){var c=this;c.mixins.bindable.bindStore.apply(c,arguments);a=c.store;if(a&&a.isLoading()){c.onBeforeLoad()}},getStoreListeners:function(){return{beforeload:this.onBeforeLoad,load:this.onLoad,exception:this.onLoad,cachemiss:this.onBeforeLoad,cachefilled:this.onLoad}},onDisable:function(){this.callParent(arguments);if(this.loading){this.onLoad()}},getOwner:function(){return this.ownerCt||this.floatParent},getMaskTarget:function(){var a=this.getOwner();return this.useTargetEl?a.getTargetEl():a.getEl()},onBeforeLoad:function(){var c=this,a=c.getOwner(),b;if(!c.disabled){c.loading=true;if(a.componentLayoutCounter){c.maybeShow()}else{b=a.afterComponentLayout;a.afterComponentLayout=function(){a.afterComponentLayout=b;b.apply(a,arguments);c.maybeShow()}}}},maybeShow:function(){var b=this,a=b.getOwner();if(!a.isVisible(true)){b.showNext=true}else{if(b.loading&&a.rendered){b.show()}}},getMaskEl:function(){var a=this;return a.maskEl||(a.maskEl=a.el.insertSibling({cls:a.maskCls,style:{zIndex:a.el.getStyle("zIndex")-2}},"before"))},onShow:function(){var b=this,a=b.msgEl;b.callParent(arguments);b.loading=true;if(b.useMsg){a.show().update(b.msg)}else{a.parent().hide()}},hide:function(){if(this.isElement){this.ownerCt.unmask();this.fireEvent("hide",this);return}delete this.showNext;return this.callParent(arguments)},onHide:function(){this.callParent();this.getMaskEl().hide()},show:function(){if(this.isElement){this.ownerCt.mask(this.useMsg?this.msg:"",this.msgCls);this.fireEvent("show",this);return}return this.callParent(arguments)},afterShow:function(){this.callParent(arguments);this.sizeMask()},setZIndex:function(b){var c=this,a=c.activeOwner;if(a){b=parseInt(a.el.getStyle("zIndex"),10)+1}c.getMaskEl().setStyle("zIndex",b-1);return c.mixins.floating.setZIndex.apply(c,arguments)},onLoad:function(){this.loading=false;this.hide()},onDestroy:function(){var a=this;if(a.isElement){a.ownerCt.unmask()}Ext.destroy(a.maskEl);a.callParent()}});Ext.define("Ext.data.association.Association",{alternateClassName:"Ext.data.Association",primaryKey:"id",defaultReaderType:"json",isAssociation:true,initialConfig:null,statics:{AUTO_ID:1000,create:function(a){if(Ext.isString(a)){a={type:a}}switch(a.type){case"belongsTo":return new Ext.data.association.BelongsTo(a);case"hasMany":return new Ext.data.association.HasMany(a);case"hasOne":return new Ext.data.association.HasOne(a);default:}return a}},constructor:function(a){Ext.apply(this,a);var d=this,b=Ext.ModelManager.types,c=a.ownerModel,g=a.associatedModel,e=b[c],h=b[g];d.initialConfig=a;d.ownerModel=e;d.associatedModel=h;Ext.applyIf(d,{ownerName:c,associatedName:g});d.associationId="association"+(++d.statics().AUTO_ID)},getReader:function(){var c=this,a=c.reader,b=c.associatedModel;if(a){if(Ext.isString(a)){a={type:a}}if(a.isReader){a.setModel(b)}else{Ext.applyIf(a,{model:b,type:c.defaultReaderType})}c.reader=Ext.createByAlias("reader."+a.type,a)}return c.reader||null}});Ext.define("Ext.ModelManager",{extend:"Ext.AbstractManager",alternateClassName:"Ext.ModelMgr",requires:["Ext.data.association.Association"],singleton:true,typeName:"mtype",associationStack:[],registerType:function(c,b){var d=b.prototype,a;if(d&&d.isModel){a=b}else{if(!b.extend){b.extend="Ext.data.Model"}a=Ext.define(c,b)}this.types[c]=a;return a},onModelDefined:function(c){var a=this.associationStack,g=a.length,e=[],b,d,h;for(d=0;d<g;d++){b=a[d];if(b.associatedModel==c.modelName){e.push(b)}}for(d=0,g=e.length;d<g;d++){h=e[d];this.types[h.ownerModel].prototype.associations.add(Ext.data.association.Association.create(h));Ext.Array.remove(a,h)}},registerDeferredAssociation:function(a){this.associationStack.push(a)},getModel:function(b){var a=b;if(typeof a=="string"){a=this.types[a]}return a},create:function(b,a,d){var c=typeof a=="function"?a:this.types[a||b.name];return new c(b,d)}},function(){Ext.regModel=function(){return this.ModelManager.registerType.apply(this.ModelManager,arguments)}});Ext.define("Ext.PluginManager",{extend:"Ext.AbstractManager",alternateClassName:"Ext.PluginMgr",singleton:true,typeName:"ptype",create:function(a,b){if(a.init){return a}else{return Ext.createByAlias("plugin."+(a.ptype||b),a)}},findByType:function(c,g){var e=[],b=this.types,a,d;for(a in b){if(!b.hasOwnProperty(a)){continue}d=b[a];if(d.type==c&&(!g||(g===true&&d.isDefault))){e.push(d)}}return e}},function(){Ext.preg=function(){return Ext.PluginManager.registerType.apply(Ext.PluginManager,arguments)}});Ext.define("Ext.layout.component.ProgressBar",{alias:["layout.progressbar"],extend:"Ext.layout.component.Auto",type:"progressbar",beginLayout:function(d){var b=this,a,c;b.callParent(arguments);if(!d.textEls){c=b.owner.textEl;if(c.isComposite){d.textEls=[];c=c.elements;for(a=c.length;a--;){d.textEls[a]=d.getEl(Ext.get(c[a]))}}else{d.textEls=[d.getEl("textEl")]}}},calculate:function(e){var c=this,a,d,b;c.callParent(arguments);if(Ext.isNumber(b=e.getProp("width"))){b-=e.getBorderInfo().width;d=e.textEls;for(a=d.length;a--;){d[a].setWidth(b)}}else{c.done=false}}});Ext.define("Ext.dom.CompositeElement",{alternateClassName:"Ext.CompositeElement",extend:"Ext.dom.CompositeElementLite",getElement:function(a){return a},transformElement:function(a){return Ext.get(a)}},function(){Ext.dom.Element.select=function(a,d,b){var c;if(typeof a=="string"){c=Ext.dom.Element.selectorFunction(a,b)}else{if(a.length!==undefined){c=a}else{}}return(d===true)?new Ext.CompositeElement(c):new Ext.CompositeElementLite(c)}});Ext.select=Ext.Element.select;Ext.define("Ext.ProgressBar",{extend:"Ext.Component",alias:"widget.progressbar",requires:["Ext.Template","Ext.CompositeElement","Ext.TaskManager","Ext.layout.component.ProgressBar"],uses:["Ext.fx.Anim"],baseCls:Ext.baseCSSPrefix+"progress",animate:false,text:"",waitTimer:null,childEls:["bar"],renderTpl:['<tpl if="internalText">','<div class="{baseCls}-text {baseCls}-text-back">{text}</div>',"</tpl>",'<div id="{id}-bar" class="{baseCls}-bar" style="width:{percentage}%">','<tpl if="internalText">','<div class="{baseCls}-text">',"<div>{text}</div>","</div>","</tpl>","</div>"],componentLayout:"progressbar",initComponent:function(){this.callParent();this.addEvents("update")},initRenderData:function(){var a=this;return Ext.apply(a.callParent(),{internalText:!a.hasOwnProperty("textEl"),text:a.text||"&#160;",percentage:a.value?a.value*100:0})},onRender:function(){var a=this;a.callParent(arguments);if(a.textEl){a.textEl=Ext.get(a.textEl);a.updateText(a.text)}else{a.textEl=a.el.select("."+a.baseCls+"-text")}},updateProgress:function(d,e,a){var c=this,b=c.value;c.value=d||0;if(e){c.updateText(e)}if(c.rendered&&!c.isDestroyed){if(a===true||(a!==false&&c.animate)){c.bar.stopAnimation();c.bar.animate(Ext.apply({from:{width:(b*100)+"%"},to:{width:(c.value*100)+"%"}},c.animate))}else{c.bar.setStyle("width",(c.value*100)+"%")}}c.fireEvent("update",c,c.value,e);return c},updateText:function(b){var a=this;a.text=b;if(a.rendered){a.textEl.update(a.text)}return a},applyText:function(a){this.updateText(a)},getText:function(){return this.text},wait:function(c){var b=this,a;if(!b.waitTimer){a=b;c=c||{};b.updateText(c.text);b.waitTimer=Ext.TaskManager.start({run:function(d){var e=c.increment||10;d-=1;b.updateProgress(((((d+e)%e)+1)*(100/e))*0.01,null,c.animate)},interval:c.interval||1000,duration:c.duration,onStop:function(){if(c.fn){c.fn.apply(c.scope||b)}b.reset()},scope:a})}return b},isWaiting:function(){return this.waitTimer!==null},reset:function(a){var b=this;b.updateProgress(0);b.clearTimer();if(a===true){b.hide()}return b},clearTimer:function(){var a=this;if(a.waitTimer){a.waitTimer.onStop=null;Ext.TaskManager.stop(a.waitTimer);a.waitTimer=null}},onDestroy:function(){var a=this;a.clearTimer();if(a.rendered){if(a.textEl.isComposite){a.textEl.clear()}Ext.destroyMembers(a,"textEl","progressBar")}a.callParent()}});Ext.define("Ext.ShadowPool",{singleton:true,requires:["Ext.DomHelper"],markup:(function(){return Ext.String.format('<div class="{0}{1}-shadow" role="presentation"></div>',Ext.baseCSSPrefix,Ext.isIE&&!Ext.supports.CSS3BoxShadow?"ie":"css")}()),shadows:[],pull:function(){var a=this.shadows.shift();if(!a){a=Ext.get(Ext.DomHelper.insertHtml("beforeBegin",document.body.firstChild,this.markup));a.autoBoxAdjust=false}return a},push:function(a){this.shadows.push(a)},reset:function(){var c=[].concat(this.shadows),b,a=c.length;for(b=0;b<a;b++){c[b].remove()}this.shadows=[]}});Ext.define("Ext.Shadow",{requires:["Ext.ShadowPool"],constructor:function(b){var c=this,d,e,a;Ext.apply(c,b);if(!Ext.isString(c.mode)){c.mode=c.defaultMode}e=c.offset;a=Math.floor(e/2);c.opacity=50;switch(c.mode.toLowerCase()){case"drop":if(Ext.supports.CSS3BoxShadow){d={t:e,l:e,h:-e,w:-e}}else{d={t:-a,l:-a,h:-a,w:-a}}break;case"sides":if(Ext.supports.CSS3BoxShadow){d={t:e,l:0,h:-e,w:0}}else{d={t:-(1+a),l:1+a-2*e,h:-1,w:a-1}}break;case"frame":if(Ext.supports.CSS3BoxShadow){d={t:0,l:0,h:0,w:0}}else{d={t:1+a-2*e,l:1+a-2*e,h:e-a-1,w:e-a-1}}break}c.adjusts=d},getShadowSize:function(){var b=this,d=b.el?b.offset:0,a=[d,d,d,d],c=b.mode.toLowerCase();if(b.el&&c!=="frame"){a[0]=0;if(c=="drop"){a[3]=0}}return a},offset:4,defaultMode:"drop",boxShadowProperty:(function(){var b="boxShadow",a=document.documentElement.style;if(!("boxShadow" in a)){if("WebkitBoxShadow" in a){b="WebkitBoxShadow"}else{if("MozBoxShadow" in a){b="MozBoxShadow"}}}return b}()),show:function(c){var b=this,a;c=Ext.get(c);if(!b.el){b.el=Ext.ShadowPool.pull();if(b.el.dom.nextSibling!=c.dom){b.el.insertBefore(c)}}a=(parseInt(c.getStyle("z-index"),10)-1)||0;b.el.setStyle("z-index",b.zIndex||a);if(Ext.isIE&&!Ext.supports.CSS3BoxShadow){b.el.dom.style.filter="progid:DXImageTransform.Microsoft.alpha(opacity="+b.opacity+") progid:DXImageTransform.Microsoft.Blur(pixelradius="+(b.offset)+")"}b.realign(c.getLocalX(),c.getLocalY(),c.dom.offsetWidth,c.dom.offsetHeight);b.el.dom.style.display="block"},isVisible:function(){return this.el?true:false},realign:function(b,n,k,g){if(!this.el){return}var a=this.adjusts,i=this.el.dom,j=i.style,c,e,h,m;j.left=(b+a.l)+"px";j.top=(n+a.t)+"px";c=Math.max(k+a.w,0);e=Math.max(g+a.h,0);h=c+"px";m=e+"px";if(j.width!=h||j.height!=m){j.width=h;j.height=m;if(Ext.supports.CSS3BoxShadow){j[this.boxShadowProperty]="0 0 "+this.offset+"px #888"}}},hide:function(){var a=this;if(a.el){a.el.dom.style.display="none";Ext.ShadowPool.push(a.el);delete a.el}},setZIndex:function(a){this.zIndex=a;if(this.el){this.el.setStyle("z-index",a)}},setOpacity:function(a){if(this.el){if(Ext.isIE&&!Ext.supports.CSS3BoxShadow){a=Math.floor(a*100/2)/100}this.opacity=a;this.el.setOpacity(a)}}});Ext.define("Ext.app.Controller",{mixins:{observable:"Ext.util.Observable"},onClassExtended:function(j,c,i){var h=Ext.getClassName(j),d=h.match(/^(.*)\.controller\./),b,g,k,a,e;if(d!==null){b=Ext.Loader.getPrefix(h)||d[1];g=i.onBeforeCreated;k=[];a=["model","view","store"];i.onBeforeCreated=function(t,n){var o,q,l,r,m,p,s;for(o=0,q=a.length;o<q;o++){l=a[o];e=b+"."+l+".";r=Ext.Array.from(n[l+"s"]);for(m=0,p=r.length;m<p;m++){s=r[m];if(s.indexOf(".")!==-1&&(Ext.ClassManager.isCreated(s)||Ext.Loader.isAClassNameWithAKnownPrefix(s))){k.push(s)}else{k.push(e+s)}}}Ext.require(k,Ext.Function.pass(g,arguments,this))}}},constructor:function(a){this.mixins.observable.constructor.call(this,a);Ext.apply(this,a||{});this.createGetters("model",this.models);this.createGetters("store",this.stores);this.createGetters("view",this.views);if(this.refs){this.ref(this.refs)}},init:Ext.emptyFn,onLaunch:Ext.emptyFn,createGetters:function(g,j){g=Ext.String.capitalize(g);var e=0,a=(j)?j.length:0,h,b,c,k,d;for(;e<a;e++){h="get";b=j[e];c=b.split(".");d=c.length;for(k=0;k<d;k++){h+=Ext.String.capitalize(c[k])}h+=g;if(!this[h]){this[h]=Ext.Function.pass(this["get"+g],[b],this)}this[h](b)}},ref:function(a){a=Ext.Array.from(a);var g=this,b=0,e=a.length,h,d,c;g.references=g.references||[];for(;b<e;b++){h=a[b];d=h.ref;c="get"+Ext.String.capitalize(d);if(!g[c]){g[c]=Ext.Function.pass(g.getRef,[d,h],g)}g.references.push(d.toLowerCase())}},addRef:function(a){return this.ref([a])},getRef:function(d,e,a){this.refCache=this.refCache||{};e=e||{};a=a||{};Ext.apply(e,a);if(e.forceCreate){return Ext.ComponentManager.create(e,"component")}var c=this,b=c.refCache[d];if(!b){c.refCache[d]=b=Ext.ComponentQuery.query(e.selector)[0];if(!b&&e.autoCreate){c.refCache[d]=b=Ext.ComponentManager.create(e,"component")}if(b){b.on("beforedestroy",function(){c.refCache[d]=null})}}return b},hasRef:function(a){return this.references&&this.references.indexOf(a.toLowerCase())!==-1},control:function(a,b){this.application.control(a,b,this)},getController:function(a){return this.application.getController(a)},getStore:function(a){return this.application.getStore(a)},getModel:function(a){return this.application.getModel(a)},getView:function(a){return this.application.getView(a)}});Ext.define("Ext.data.IdGenerator",{isGenerator:true,constructor:function(a){var b=this;Ext.apply(b,a);if(b.id){Ext.data.IdGenerator.all[b.id]=b}},getRecId:function(a){return a.modelName+"-"+a.internalId},statics:{all:{},get:function(a){var c,d,b;if(typeof a=="string"){d=b=a;a=null}else{if(a.isGenerator){return a}else{d=a.id||a.type;b=a.type}}c=this.all[d];if(!c){c=Ext.create("idgen."+b,a)}return c}}});Ext.define("Ext.data.SortTypes",{singleton:true,none:function(a){return a},stripTagsRE:/<\/?[^>]+>/gi,asText:function(a){return String(a).replace(this.stripTagsRE,"")},asUCText:function(a){return String(a).toUpperCase().replace(this.stripTagsRE,"")},asUCString:function(a){return String(a).toUpperCase()},asDate:function(a){if(!a){return 0}if(Ext.isDate(a)){return a.getTime()}return Date.parse(String(a))},asFloat:function(a){var b=parseFloat(String(a).replace(/,/g,""));return isNaN(b)?0:b},asInt:function(a){var b=parseInt(String(a).replace(/,/g,""),10);return isNaN(b)?0:b}});Ext.define("Ext.data.Types",{singleton:true,requires:["Ext.data.SortTypes"]},function(){var a=Ext.data.SortTypes;Ext.apply(Ext.data.Types,{stripRe:/[\$,%]/g,AUTO:{sortType:a.none,type:"auto"},STRING:{convert:function(c){var b=this.useNull?null:"";return(c===undefined||c===null)?b:String(c)},sortType:a.asUCString,type:"string"},INT:{convert:function(b){return b!==undefined&&b!==null&&b!==""?parseInt(String(b).replace(Ext.data.Types.stripRe,""),10):(this.useNull?null:0)},sortType:a.none,type:"int"},FLOAT:{convert:function(b){return b!==undefined&&b!==null&&b!==""?parseFloat(String(b).replace(Ext.data.Types.stripRe,""),10):(this.useNull?null:0)},sortType:a.none,type:"float"},BOOL:{convert:function(b){if(this.useNull&&(b===undefined||b===null||b==="")){return null}return b===true||b==="true"||b==1},sortType:a.none,type:"bool"},DATE:{convert:function(c){var d=this.dateFormat,b;if(!c){return null}if(Ext.isDate(c)){return c}if(d){if(d=="timestamp"){return new Date(c*1000)}if(d=="time"){return new Date(parseInt(c,10))}return Ext.Date.parse(c,d)}b=Date.parse(c);return b?new Date(b):null},sortType:a.asDate,type:"date"}});Ext.apply(Ext.data.Types,{BOOLEAN:this.BOOL,INTEGER:this.INT,NUMBER:this.FLOAT})});Ext.define("Ext.data.Field",{requires:["Ext.data.Types","Ext.data.SortTypes"],alias:"data.field",isField:true,constructor:function(b){var d=this,c=Ext.data.Types,a;if(Ext.isString(b)){b={name:b}}Ext.apply(d,b);a=d.sortType;if(d.type){if(Ext.isString(d.type)){d.type=c[d.type.toUpperCase()]||c.AUTO}}else{d.type=c.AUTO}if(Ext.isString(a)){d.sortType=Ext.data.SortTypes[a]}else{if(Ext.isEmpty(a)){d.sortType=d.type.sortType}}if(!b.hasOwnProperty("convert")){d.convert=d.type.convert}else{if(!d.convert&&d.type.convert&&!b.hasOwnProperty("defaultValue")){d.defaultValue=d.type.convert(d.defaultValue)}}if(b.convert){d.hasCustomConvert=true}},dateFormat:null,useNull:false,defaultValue:"",mapping:null,sortType:null,sortDir:"ASC",allowBlank:true,persist:true});Ext.define("Ext.data.Errors",{extend:"Ext.util.MixedCollection",isValid:function(){return this.length===0},getByField:function(e){var d=[],a,c,b;for(b=0;b<this.length;b++){a=this.items[b];if(a.field==e){d.push(a)}}return d}});Ext.define("Ext.data.Operation",{synchronous:true,action:undefined,filters:undefined,sorters:undefined,groupers:undefined,start:undefined,limit:undefined,batch:undefined,callback:undefined,scope:undefined,started:false,running:false,complete:false,success:undefined,exception:false,error:undefined,actionCommitRecordsRe:/^(?:create|update)$/i,actionSkipSyncRe:/^destroy$/i,constructor:function(a){Ext.apply(this,a||{})},commitRecords:function(k){var h=this,j,g,a,c,b,d,e;if(!h.actionSkipSyncRe.test(h.action)){a=h.records;if(a&&a.length){if(a.length>1){if(h.action=="update"||a[0].clientIdProperty){j=new Ext.util.MixedCollection();j.addAll(k);for(g=a.length;g--;){b=a[g];c=j.findBy(h.matchClientRec,b);b.copyFrom(c)}}else{for(d=0,e=a.length;d<e;++d){b=a[d];c=k[d];if(b&&c){h.updateRecord(b,c)}}}}else{this.updateRecord(a[0],k[0])}if(h.actionCommitRecordsRe.test(h.action)){for(g=a.length;g--;){a[g].commit()}}}}},updateRecord:function(a,b){if(b&&(a.phantom||a.getId()===b.getId())){a.copyFrom(b)}},matchClientRec:function(c){var a=this,b=a.getId();if(b&&c.getId()===b){return true}return c.internalId===a.internalId},setStarted:function(){this.started=true;this.running=true},setCompleted:function(){this.complete=true;this.running=false},setSuccessful:function(){this.success=true},setException:function(a){this.exception=true;this.success=false;this.running=false;this.error=a},hasException:function(){return this.exception===true},getError:function(){return this.error},getRecords:function(){var a=this.getResultSet();return this.records||(a?a.records:null)},getResultSet:function(){return this.resultSet},isStarted:function(){return this.started===true},isRunning:function(){return this.running===true},isComplete:function(){return this.complete===true},wasSuccessful:function(){return this.isComplete()&&this.success===true},setBatch:function(a){this.batch=a},allowWrite:function(){return this.action!="read"}});Ext.define("Ext.data.validations",{singleton:true,presenceMessage:"must be present",lengthMessage:"is the wrong length",formatMessage:"is the wrong format",inclusionMessage:"is not included in the list of acceptable values",exclusionMessage:"is not an acceptable value",emailMessage:"is not a valid email address",emailRe:/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,presence:function(a,b){if(arguments.length===1){b=a}return !!b||b===0},length:function(b,e){if(e===undefined||e===null){return false}var d=e.length,c=b.min,a=b.max;if((c&&d<c)||(a&&d>a)){return false}else{return true}},email:function(b,a){return Ext.data.validations.emailRe.test(a)},format:function(a,b){return !!(a.matcher&&a.matcher.test(b))},inclusion:function(a,b){return a.list&&Ext.Array.indexOf(a.list,b)!=-1},exclusion:function(a,b){return a.list&&Ext.Array.indexOf(a.list,b)==-1}});Ext.define("Ext.data.Model",{alternateClassName:"Ext.data.Record",mixins:{observable:"Ext.util.Observable"},requires:["Ext.ModelManager","Ext.data.IdGenerator","Ext.data.Field","Ext.data.Errors","Ext.data.Operation","Ext.data.validations","Ext.util.MixedCollection"],compareConvertFields:function(a,d){var c=a.convert&&a.type&&a.convert!==a.type.convert,b=d.convert&&d.type&&d.convert!==d.type.convert;if(c&&!b){return 1}if(!c&&b){return -1}return 0},itemNameFn:function(a){return a.name},onClassExtended:function(b,c,a){var d=a.onBeforeCreated;a.onBeforeCreated=function(g,D){var C=this,E=Ext.getClassName(g),r=g.prototype,x=g.prototype.superclass,j=D.validations||[],t=D.fields||[],h,m=D.associations||[],e=function(G,I){var H=0,F,J;if(G){G=Ext.Array.from(G);for(F=G.length;H<F;++H){J=G[H];if(!Ext.isObject(J)){J={model:J}}J.type=I;m.push(J)}}},u=D.idgen,A=new Ext.util.MixedCollection(false,r.itemNameFn),y=new Ext.util.MixedCollection(false,r.itemNameFn),q=x.validations,B=x.fields,l=x.associations,z,w,o,p=[],n=D.idProperty||g.prototype.idProperty,v=function(G,F,i){var H,I;if(A.events.add.firing){I=G;H=F}else{H=i;I=F.originalIndex}H.originalIndex=I;if(H.mapping===n||(H.mapping==null&&H.name===n)){H.defaultValue=undefined}},s=D.proxy||g.prototype.proxy||g.prototype.defaultProxyType,k=function(){A.sortBy(r.compareConvertFields)};g.modelName=E;r.modelName=E;if(q){j=q.concat(j)}D.validations=j;if(B){t=B.items.concat(t)}A.on({add:v,replace:v});for(w=0,o=t.length;w<o;++w){h=t[w];A.add(h.isField?h:new Ext.data.Field(h))}if(!A.get(n)){A.add(new Ext.data.Field(n))}k();A.on({add:k,replace:k});D.fields=A;if(u){D.idgen=Ext.data.IdGenerator.get(u)}e(D.belongsTo,"belongsTo");delete D.belongsTo;e(D.hasMany,"hasMany");delete D.hasMany;e(D.hasOne,"hasOne");delete D.hasOne;if(l){m=l.items.concat(m)}for(w=0,o=m.length;w<o;++w){p.push("association."+m[w].type.toLowerCase())}if(s&&!s.isProxy){p.push("proxy."+(typeof s==="string"?s:s.type))}Ext.require(p,function(){Ext.ModelManager.registerType(E,g);for(w=0,o=m.length;w<o;++w){z=m[w];if(z.isAssociation){z=Ext.applyIf({ownerModel:E,associatedModel:z.model},z.initialConfig)}else{Ext.apply(z,{ownerModel:E,associatedModel:z.model})}if(Ext.ModelManager.getModel(z.model)===undefined){Ext.ModelManager.registerDeferredAssociation(z)}else{y.add(Ext.data.association.Association.create(z))}}D.associations=y;d.call(C,g,D,a);g.setProxy(s);Ext.ModelManager.onModelDefined(g)})}},inheritableStatics:{setProxy:function(a){if(!a.isProxy){if(typeof a=="string"){a={type:a}}a=Ext.createByAlias("proxy."+a.type,a)}a.setModel(this);this.proxy=this.prototype.proxy=a;return a},getProxy:function(){return this.proxy},setFields:function(c,d,b){var j=this,h=j.prototype,g=h.fields,a=c?c.length:0,e=0;if(d){h.idProperty=d}if(b){h.clientIdProperty=b}if(g){g.clear()}else{g=j.prototype.fields=new Ext.util.MixedCollection(false,function(i){return i.name})}for(;e<a;e++){g.add(new Ext.data.Field(c[e]))}if(!g.get(h.idProperty)){g.add(new Ext.data.Field(h.idProperty))}j.fields=g;return g},getFields:function(){return this.prototype.fields.items},load:function(g,c){c=Ext.apply({},c);c=Ext.applyIf(c,{action:"read",id:g});var b=new Ext.data.Operation(c),d=c.scope||this,a=null,e;e=function(h){if(h.wasSuccessful()){a=h.getRecords()[0];Ext.callback(c.success,d,[a,h])}else{Ext.callback(c.failure,d,[a,h])}Ext.callback(c.callback,d,[a,h])};this.proxy.read(b,e,this)}},statics:{PREFIX:"ext-record",AUTO_ID:1,EDIT:"edit",REJECT:"reject",COMMIT:"commit",id:function(a){var b=[this.PREFIX,"-",this.AUTO_ID++].join("");a.phantom=true;a.internalId=b;return b}},idgen:{isGenerator:true,type:"default",generate:function(){return null},getRecId:function(a){return a.modelName+"-"+a.internalId}},editing:false,dirty:false,persistenceProperty:"data",evented:false,isModel:true,phantom:false,idProperty:"id",clientIdProperty:null,defaultProxyType:"ajax",constructor:function(j,d,o,b){j=j||{};var l=this,k,e,m,a,n,g,c,h;l.internalId=(d||d===0)?d:Ext.data.Model.id(l);l.raw=o||j;if(!l.data){l.data={}}l.modified={};if(l.persistanceProperty){l.persistenceProperty=l.persistanceProperty}l[l.persistenceProperty]=b||{};l.mixins.observable.constructor.call(l);if(!b){k=l.fields.items;e=k.length;h=0;c=l[l.persistenceProperty];if(Ext.isArray(j)){for(;h<e;h++){m=k[h];a=m.name;n=j[m.originalIndex];if(n===undefined){n=m.defaultValue}if(m.convert){n=m.convert(n,l)}if(n!==undefined){c[a]=n}}}else{for(;h<e;h++){m=k[h];a=m.name;n=j[a];if(n===undefined){n=m.defaultValue}if(m.convert){n=m.convert(n,l)}if(n!==undefined){c[a]=n}}}}l.stores=[];if(l.getId()){l.phantom=false}else{if(l.phantom){g=l.idgen.generate();if(g!==null){l.setId(g)}}}l.dirty=false;l.modified={};if(typeof l.init=="function"){l.init()}l.id=l.idgen.getRecId(l)},get:function(a){return this[this.persistenceProperty][a]},_singleProp:{},set:function(r,b){var j=this,h=j[j.persistenceProperty],i=j.fields,q=j.modified,o=(typeof r=="string"),p,k,g,n,e,a,c,d,l,m;if(o){m=j._singleProp;m[r]=b}else{m=r}for(a in m){if(m.hasOwnProperty(a)){l=m[a];if(i&&(k=i.get(a))&&k.convert){l=k.convert(l,j)}p=h[a];if(j.isEqual(p,l)){continue}h[a]=l;(e||(e=[])).push(a);if(k&&k.persist){if(q.hasOwnProperty(a)){if(j.isEqual(q[a],l)){delete q[a];j.dirty=false;for(n in q){if(q.hasOwnProperty(n)){j.dirty=true;break}}}}else{j.dirty=true;q[a]=p}}if(a==j.idProperty){g=true;c=p;d=l}}}if(o){delete m[r]}if(g){j.fireEvent("idchanged",j,c,d)}if(!j.editing&&e){j.afterEdit(e)}return e||null},copyFrom:function(g){if(g){var e=this,c=e.fields.items,k=c.length,h,a=0,d=e[e.persistenceProperty],b=g[g.persistenceProperty],j;for(;a<k;a++){h=c[a];j=b[h.name];if(j!==undefined){d[h.name]=j}}if(e.phantom&&!g.phantom){e.setId(g.getId())}}},isEqual:function(d,c){if(Ext.isDate(d)&&Ext.isDate(c)){return Ext.Date.isEqual(d,c)}return d===c},beginEdit:function(){var a=this;if(!a.editing){a.editing=true;a.dirtySave=a.dirty;a.dataSave=Ext.apply({},a[a.persistenceProperty]);a.modifiedSave=Ext.apply({},a.modified)}},cancelEdit:function(){var a=this;if(a.editing){a.editing=false;a.modified=a.modifiedSave;a[a.persistenceProperty]=a.dataSave;a.dirty=a.dirtySave;delete a.modifiedSave;delete a.dataSave;delete a.dirtySave}},endEdit:function(a,c){var b=this,d;if(b.editing){b.editing=false;if(!c){c=b.getModifiedFieldNames()}d=b.dirty||c.length>0;delete b.modifiedSave;delete b.dataSave;delete b.dirtySave;if(d&&a!==true){b.afterEdit(c)}}},getModifiedFieldNames:function(){var d=this,c=d.dataSave,e=d[d.persistenceProperty],a=[],b;for(b in e){if(e.hasOwnProperty(b)){if(!d.isEqual(e[b],c[b])){a.push(b)}}}return a},getChanges:function(){var a=this.modified,b={},c;for(c in a){if(a.hasOwnProperty(c)){b[c]=this.get(c)}}return b},isModified:function(a){return this.modified.hasOwnProperty(a)},setDirty:function(){var c=this,a=c.fields.items,g=a.length,e,b,d;c.dirty=true;for(d=0;d<g;d++){e=a[d];if(e.persist){b=e.name;c.modified[b]=c.get(b)}}},reject:function(a){var c=this,b=c.modified,d;for(d in b){if(b.hasOwnProperty(d)){if(typeof b[d]!="function"){c[c.persistenceProperty][d]=b[d]}}}c.dirty=false;c.editing=false;c.modified={};if(a!==true){c.afterReject()}},commit:function(a){var b=this;b.phantom=b.dirty=b.editing=false;b.modified={};if(a!==true){b.afterCommit()}},copy:function(a){var b=this;return new b.self(b.raw,a,null,Ext.apply({},b[b.persistenceProperty]))},setProxy:function(a){if(!a.isProxy){if(typeof a==="string"){a={type:a}}a=Ext.createByAlias("proxy."+a.type,a)}a.setModel(this.self);this.proxy=a;return a},getProxy:function(){return this.proxy},validate:function(){var k=new Ext.data.Errors(),c=this.validations,e=Ext.data.validations,b,d,j,a,h,g;if(c){b=c.length;for(g=0;g<b;g++){d=c[g];j=d.field||d.name;h=d.type;a=e[h](d,this.get(j));if(!a){k.add({field:j,message:d.message||e[h+"Message"]})}}}return k},isValid:function(){return this.validate().isValid()},save:function(m){m=Ext.apply({},m);var g=this,b=g.phantom?"create":"update",l=m.scope||g,j=g.stores,c=0,e,h,d,a,k;Ext.apply(m,{records:[g],action:b});a=new Ext.data.Operation(m);k=function(i){d=[g,i];if(i.wasSuccessful()){for(e=j.length;c<e;c++){h=j[c];h.fireEvent("write",h,i);h.fireEvent("datachanged",h)}Ext.callback(m.success,l,d)}else{Ext.callback(m.failure,l,d)}Ext.callback(m.callback,l,d)};g.getProxy()[b](a,k,g);return g},destroy:function(l){l=Ext.apply({},l);var e=this,k=l.scope||e,h=e.stores,b=0,d,g,c,a,j;Ext.apply(l,{records:[e],action:"destroy"});a=new Ext.data.Operation(l);j=function(i){c=[e,i];if(i.wasSuccessful()){for(d=h.length;b<d;b++){g=h[b];g.fireEvent("write",g,i);g.fireEvent("datachanged",g)}e.clearListeners();Ext.callback(l.success,k,c)}else{Ext.callback(l.failure,k,c)}Ext.callback(l.callback,k,c)};e.getProxy().destroy(a,j,e);return e},getId:function(){return this.get(this.idProperty)},getObservableId:function(){return this.id},setId:function(a){this.set(this.idProperty,a);this.phantom=!(a||a===0)},join:function(a){Ext.Array.include(this.stores,a);this.store=this.stores[0]},unjoin:function(a){Ext.Array.remove(this.stores,a);this.store=this.stores[0]||null},afterEdit:function(a){this.callStore("afterEdit",a)},afterReject:function(){this.callStore("afterReject")},afterCommit:function(){this.callStore("afterCommit")},callStore:function(g){var d=Ext.Array.clone(arguments),b=this.stores,e=0,a=b.length,c,h;d[0]=this;for(;e<a;++e){c=b[e];if(c&&typeof c[g]=="function"){c[g].apply(c,d)}h=c.treeStore;if(h&&typeof h[g]=="function"){h[g].apply(h,d)}}},getData:function(c){var d=this,a=d.fields.items,h=a.length,g={},b,e;for(e=0;e<h;e++){b=a[e].name;g[b]=d.get(b)}if(c===true){Ext.apply(g,d.getAssociatedData())}return g},getAssociatedData:function(){return this.prepareAssociatedData({},1)},prepareAssociatedData:function(w,z){var y=this,t=y.associations.items,e=t.length,x={},q=[],v=[],m=[],p,b,a,n,g,l,k,u,h,c,s,r,d,A;for(s=0;s<e;s++){c=t[s];u=c.associationId;k=w[u];if(k&&k!==z){continue}w[u]=z;d=c.type;A=c.name;if(d=="hasMany"){p=y[c.storeName];x[A]=[];if(p&&p.getCount()>0){b=p.data.items;h=b.length;for(r=0;r<h;r++){a=b[r];x[A][r]=a.getData();q.push(a);v.push(A);m.push(r)}}}else{if(d=="belongsTo"||d=="hasOne"){a=y[c.instanceName];if(a!==undefined){x[A]=a.getData();q.push(a);v.push(A);m.push(-1)}}}}for(s=0,h=q.length;s<h;++s){a=q[s];n=x[v[s]];g=m[s];l=a.prepareAssociatedData(w,z+1);if(g===-1){Ext.apply(n,l)}else{Ext.apply(n[g],l)}}return x}});Ext.define("Ext.data.StoreManager",{extend:"Ext.util.MixedCollection",alternateClassName:["Ext.StoreMgr","Ext.data.StoreMgr","Ext.StoreManager"],singleton:true,uses:["Ext.data.ArrayStore"],register:function(){for(var a=0,b;(b=arguments[a]);a++){this.add(b)}},unregister:function(){for(var a=0,b;(b=arguments[a]);a++){this.remove(this.lookup(b))}},lookup:function(c){if(Ext.isArray(c)){var b=["field1"],e=!Ext.isArray(c[0]),g=c,d,a;if(e){g=[];for(d=0,a=c.length;d<a;++d){g.push([c[d]])}}else{for(d=2,a=c[0].length;d<=a;++d){b.push("field"+d)}}return new Ext.data.ArrayStore({data:g,fields:b,autoDestroy:true,autoCreated:true,expanded:e})}if(Ext.isString(c)){return this.get(c)}else{return Ext.data.AbstractStore.create(c)}},getKey:function(a){return a.storeId}},function(){Ext.regStore=function(c,b){var a;if(Ext.isObject(c)){b=c}else{b.storeId=c}if(b instanceof Ext.data.Store){a=b}else{a=new Ext.data.Store(b)}return Ext.data.StoreManager.register(a)};Ext.getStore=function(a){return Ext.data.StoreManager.lookup(a)}});Ext.define("Ext.layout.component.Dock",{extend:"Ext.layout.component.Component",alias:"layout.dock",alternateClassName:"Ext.layout.component.AbstractDock",type:"dock",initializedBorders:-1,horizontalCollapsePolicy:{width:true,x:true},verticalCollapsePolicy:{height:true,y:true},finishRender:function(){var b=this,c,a;b.callParent();c=b.getRenderTarget();a=b.getDockedItems();b.finishRenderItems(c,a)},isItemBoxParent:function(a){return true},isItemShrinkWrap:function(a){return true},dockOpposites:{top:"bottom",right:"left",bottom:"top",left:"right"},handleItemBorders:function(){var m=this,a=m.owner,l,p,e=m.borders,h=m.dockOpposites,b=a.dockedItems.generation,g,k,o,n,j,c,d=m.collapsed;if(m.initializedBorders==b||(a.border&&!a.manageBodyBorders)){return}m.initializedBorders=b;m.collapsed=false;p=m.getLayoutItems();m.collapsed=d;l={top:[],right:[],bottom:[],left:[]};for(g=0,k=p.length;g<k;g++){o=p[g];n=o.dock;if(o.ignoreBorderManagement){continue}if(!l[n].satisfied){l[n].push(o);l[n].satisfied=true}if(!l.top.satisfied&&h[n]!=="top"){l.top.push(o)}if(!l.right.satisfied&&h[n]!=="right"){l.right.push(o)}if(!l.bottom.satisfied&&h[n]!=="bottom"){l.bottom.push(o)}if(!l.left.satisfied&&h[n]!=="left"){l.left.push(o)}}if(e){for(j in e){if(e.hasOwnProperty(j)){k=e[j].length;if(!a.manageBodyBorders){for(g=0;g<k;g++){c=e[j][g];if(!c.isDestroyed){c.removeCls(Ext.baseCSSPrefix+"docked-noborder-"+j)}}if(!e[j].satisfied&&!a.bodyBorder){a.removeBodyCls(Ext.baseCSSPrefix+"docked-noborder-"+j)}}else{if(e[j].satisfied){a.setBodyStyle("border-"+j+"-width","")}}}}}for(j in l){if(l.hasOwnProperty(j)){k=l[j].length;if(!a.manageBodyBorders){for(g=0;g<k;g++){l[j][g].addCls(Ext.baseCSSPrefix+"docked-noborder-"+j)}if((!l[j].satisfied&&!a.bodyBorder)||a.bodyBorder===false){a.addBodyCls(Ext.baseCSSPrefix+"docked-noborder-"+j)}}else{if(l[j].satisfied){a.setBodyStyle("border-"+j+"-width","1px")}}}}m.borders=l},beforeLayoutCycle:function(e){var c=this,b=c.owner,g=c.sizeModels.shrinkWrap,d,a;if(b.collapsed){if(b.collapsedVertical()){a=true;e.measureDimensions=1}else{d=true;e.measureDimensions=2}}e.collapsedVert=a;e.collapsedHorz=d;if(a){e.heightModel=g}else{if(d){e.widthModel=g}}},beginLayout:function(d){var k=this,c=k.owner,n=k.getLayoutItems(),b=d.context,g=n.length,l,j,m,a,e,h;k.callParent(arguments);k.handleItemBorders();h=c.getCollapsed();if(h!==k.lastCollapsedState&&Ext.isDefined(k.lastCollapsedState)){if(k.owner.collapsed){d.isCollapsingOrExpanding=1;c.addClsWithUI(c.collapsedCls)}else{d.isCollapsingOrExpanding=2;c.removeClsWithUI(c.collapsedCls);d.lastCollapsedState=k.lastCollapsedState}}k.lastCollapsedState=h;d.dockedItems=l=[];for(j=0;j<g;j++){m=n[j];if(m.rendered){a=b.getCmp(m);a.dockedAt={x:0,y:0};a.offsets=e=Ext.Element.parseBox(m.offsets||{});e.width=e.left+e.right;e.height=e.top+e.bottom;l.push(a)}}d.bodyContext=d.getEl("body")},beginLayoutCycle:function(b){var e=this,l=b.dockedItems,d=l.length,a=e.owner,g=a.frameBody,k=e.lastHeightModel,c,j,h;e.callParent(arguments);if(k&&k.shrinkWrap&&!b.heightModel.shrinkWrap&&!e.owner.manageHeight){a.body.dom.style.marginBottom=""}if(b.widthModel.auto){if(b.widthModel.shrinkWrap){a.el.setWidth(null)}a.body.setWidth(null);if(g){g.setWidth(null)}}if(b.heightModel.auto){a.body.setHeight(null);if(g){g.setHeight(null)}}if(b.collapsedVert){b.setContentHeight(0)}else{if(b.collapsedHorz){b.setContentWidth(0)}}for(c=0;c<d;c++){j=l[c].target;h=j.dock;if(h=="right"){j.el.setLeft(0)}else{if(h!="left"){continue}}}},calculate:function(d){var k=this,c=k.measureAutoDimensions(d,d.measureDimensions),b=d.state,j=b.horzDone,e=b.vertDone,g=d.bodyContext,a,i,h,l;d.borderInfo||d.getBorderInfo();d.paddingInfo||d.getPaddingInfo();d.framingInfo||d.getFraming();g.borderInfo||g.getBorderInfo();g.paddingInfo||g.getPaddingInfo();a=!j&&k.createAxis(d,c.contentWidth,d.widthModel,"left","right","x","width","Width",d.collapsedHorz);i=!e&&k.createAxis(d,c.contentHeight,d.heightModel,"top","bottom","y","height","Height",d.collapsedVert);for(h=0,l=d.dockedItems.length;l--;++h){if(a){k.dockChild(d,a,l,h)}if(i){k.dockChild(d,i,l,h)}}if(a&&k.finishAxis(d,a)){b.horzDone=j=a}if(i&&k.finishAxis(d,i)){b.vertDone=e=i}if(j&&e&&k.finishConstraints(d,j,e)){k.finishPositions(d,j,e)}else{k.done=false}},createAxis:function(o,j,e,n,i,s,m,k,d){var u=0,b=this.owner,g=b["max"+k],c=b["min"+k]||0,l=g!=null,t="set"+k,q,a,r,p,h;if(e.shrinkWrap){if(d){h=0}else{a=o.bodyContext;h=j+a.borderInfo[m]}}else{q=o.borderInfo;r=o.framingInfo;p=o.paddingInfo;h=o.getProp(m);h-=q[i]+p[i]+r[i];u=q[n]+p[n]+r[n]}return{shrinkWrap:e.shrinkWrap,sizeModel:e,begin:u,end:h,collapsed:d,horizontal:s=="x",ignoreFrameBegin:false,ignoreFrameEnd:false,initialSize:h-u,hasMinMaxConstraints:(c||l)&&e.shrinkWrap,minSize:c,maxSize:l?g:1000000000,bodyPosProp:this.owner.manageHeight?s:("margin-"+n),dockBegin:n,dockEnd:i,posProp:s,sizeProp:m,sizePropCap:k,setSize:t,dockedPixelsEnd:0}},dockChild:function(b,c,j,d){var e=this,a=b.dockedItems[c.shrinkWrap?j:d],h=a.target,i=h.dock,g;if(h.ignoreParentFrame&&b.isCollapsingOrExpanding){a.clearMarginCache()}if(i==c.dockBegin){if(c.shrinkWrap){g=e.dockOutwardBegin(b,a,h,c)}else{g=e.dockInwardBegin(b,a,h,c)}}else{if(i==c.dockEnd){if(c.shrinkWrap){g=e.dockOutwardEnd(b,a,h,c)}else{g=e.dockInwardEnd(b,a,h,c)}}else{g=e.dockStretch(b,a,h,c)}}a.dockedAt[c.posProp]=g},dockInwardBegin:function(g,e,d,b){var i=b.begin,h=b.sizeProp,a,c;if(d.ignoreParentFrame){c=d.dock;i-=g.borderInfo[c]+g.paddingInfo[c]+g.framingInfo[c]}if(!d.overlay){a=e.getProp(h)+e.getMarginInfo()[h];b.begin+=a}return i},dockInwardEnd:function(e,d,c,b){var h=b.sizeProp,a=d.getProp(h)+d.getMarginInfo()[h],g=b.end-a;if(!c.overlay){b.end=g}if(c.ignoreParentFrame){g+=e.borderInfo[c.dock]+e.paddingInfo[c.dock]+e.framingInfo[c.dock]}return g},dockOutwardBegin:function(g,e,d,b){var i=b.begin,h=b.sizeProp,c,a;if(b.collapsed){b.ignoreFrameBegin=b.ignoreFrameEnd=true}else{if(d.ignoreParentFrame){c=d.dock;i-=g.borderInfo[c]+g.paddingInfo[c]+g.framingInfo[c];b.ignoreFrameBegin=true}}if(!d.overlay){a=e.getProp(h)+e.getMarginInfo()[h];i-=a;b.begin=i}return i},dockOutwardEnd:function(g,e,d,b){var i=b.end,h=b.sizeProp,c,a;a=e.getProp(h)+e.getMarginInfo()[h];if(b.collapsed){b.ignoreFrameBegin=b.ignoreFrameEnd=true}else{if(d.ignoreParentFrame){c=d.dock;i+=g.borderInfo[c]+g.paddingInfo[c]+g.framingInfo[c];b.ignoreFrameEnd=true}}if(!d.overlay){b.end=i+a;b.dockedPixelsEnd+=a}return i},dockStretch:function(c,b,n,d){var o=n.dock,j=d.sizeProp,a=o=="top"||o=="bottom",e=b.offsets,i=c.borderInfo,m=c.paddingInfo,h=a?"right":"bottom",q=a?"left":"top",l=d.begin+e[q],g,p,k;if(n.stretch!==false){p=d.end-l-e[h];if(n.ignoreParentFrame){k=c.framingInfo;l-=i[q]+m[q]+k[q];p+=i[j]+m[j]+k[j]}g=b.getMarginInfo();p-=g[j];b[d.setSize](p)}return l},finishAxis:function(c,e){var o=e.end-e.begin,l=e.setSize,d=e.dockBegin,i=e.dockEnd,j=c.borderInfo,m=c.paddingInfo,k=c.framingInfo,h=m[d]+j[d]+k[d],g=c.bodyContext,n,a,b;if(e.shrinkWrap){e.delta=-e.begin;a=e.initialSize;if(e.ignoreFrameBegin){e.delta-=j[d];n=-e.begin-h}else{o+=h;e.delta+=m[d]+k[d];n=-e.begin}if(!e.ignoreFrameEnd){o+=m[i]+j[i]+k[i]}e.size=o;if(!e.horizontal&&!this.owner.manageHeight){b=false}}else{e.delta=-j[e.dockBegin];a=o;n=e.begin-h}g[l](a,b);g.setProp(e.bodyPosProp,n);return !isNaN(o)},finishConstraints:function(e,a,h){var j=this.sizeModels,l=a.shrinkWrap,b=h.shrinkWrap,c,k,d,g,i,m;if(l){m=a.size;if(m<a.minSize){i=j.constrainedMin;d=a.minSize}else{if(m>a.maxSize){i=j.constrainedMax;d=a.maxSize}else{d=m}}}if(b){m=h.size;if(m<h.minSize){g=j.constrainedMin;k=h.minSize}else{if(m>h.maxSize){g=j.constrainedMax;k=h.maxSize}else{if(!e.collapsedVert&&!this.owner.manageHeight){c=false;e.bodyContext.setProp("margin-bottom",h.dockedPixelsEnd)}k=m}}}if(i||g){if(i&&g&&i.constrainedMax&&g.constrainedMin){e.invalidate({widthModel:i});return false}if(!e.widthModel.calculatedFromShrinkWrap&&!e.heightModel.calculatedFromShrinkWrap){e.invalidate({widthModel:i,heightModel:g});return false}}if(l){e.setWidth(d);if(i){e.widthModel=i}}if(b){e.setHeight(k,c);if(g){e.heightModel=g}}return true},finishPositions:function(d,a,h){var j=d.dockedItems,c=j.length,g=a.delta,e=h.delta,i,b;for(i=0;i<c;++i){b=j[i];b.setProp("x",g+b.dockedAt.x);b.setProp("y",e+b.dockedAt.y)}},finishedLayout:function(b){var a=this,c=b.target;a.callParent(arguments);if(!b.animatePolicy){if(b.isCollapsingOrExpanding===1){c.afterCollapse(false)}else{if(b.isCollapsingOrExpanding===2){c.afterExpand(false)}}}},getAnimatePolicy:function(c){var b=this,a,d;if(c.isCollapsingOrExpanding==1){a=b.lastCollapsedState}else{if(c.isCollapsingOrExpanding==2){a=c.lastCollapsedState}}if(a=="left"||a=="right"){d=b.horizontalCollapsePolicy}else{if(a=="top"||a=="bottom"){d=b.verticalCollapsePolicy}}return d},getDockedItems:function(c,n){var j=this,e=(c==="visual"),k=e?Ext.ComponentQuery.query("[rendered]",j.owner.dockedItems.items):j.owner.dockedItems.items,h=k&&k.length&&c!==false,b,m,l,g,d,a;if(n==null){l=h&&!e?k.slice():k}else{l=[];for(g=0,a=k.length;g<a;++g){m=k[g].dock;d=(m=="top"||m=="left");if(n?d:!d){l.push(k[g])}}h=h&&l.length}if(h){b=(c=c||"render")=="render";Ext.Array.sort(l,function(o,i){var p,q;if(b&&((p=j.owner.dockOrder[o.dock])!==(q=j.owner.dockOrder[i.dock]))){if(!(p+q)){return p-q}}p=j.getItemWeight(o,c);q=j.getItemWeight(i,c);if((p!==undefined)&&(q!==undefined)){return p-q}return 0})}return l||[]},getItemWeight:function(b,a){var c=b.weight||this.owner.defaultDockWeights[b.dock];return c[a]||c},getLayoutItems:function(){var e=this,b,g,d,c,a;if(e.owner.collapsed){a=e.owner.getCollapsedDockedItems()}else{b=e.getDockedItems("visual");g=b.length;a=[];for(c=0;c<g;c++){d=b[c];if(!d.hidden){a.push(d)}}}return a},measureContentWidth:function(a){var b=a.bodyContext;return b.el.getWidth()-b.getBorderInfo().width},measureContentHeight:function(a){var b=a.bodyContext;return b.el.getHeight()-b.getBorderInfo().height},redoLayout:function(c){var b=this,a=b.owner;if(c.isCollapsingOrExpanding==1){if(a.reExpander){a.reExpander.el.show()}a.addClsWithUI(a.collapsedCls);c.redo(true)}else{if(c.isCollapsingOrExpanding==2){a.removeClsWithUI(a.collapsedCls);c.bodyContext.redo()}}},renderChildren:function(){var b=this,a=b.getDockedItems(),c=b.getRenderTarget();b.renderItems(a,c)},renderItems:function(k,h){var l=this,c=k.length,a=0,b=0,p=0,m=l.getRenderTarget().dom.childNodes,n=m.length,g,d,e,o;for(g=0,d=0;g<n;g++){e=m[g];if(Ext.fly(e).hasCls("x-resizable-handle")){break}for(d=0;d<c;d++){o=k[d];if(o.rendered&&o.el.dom===e){break}}if(d===c){p++}}for(;a<c;a++,b++){o=k[a];if(a===b&&(o.dock==="right"||o.dock==="bottom")){b+=p}if(o&&!o.rendered){l.renderItem(o,h,b)}else{if(!l.isValidParent(o,h,b)){l.moveItem(o,h,b)}}}},undoLayout:function(c){var b=this,a=b.owner;if(c.isCollapsingOrExpanding==1){if(a.reExpander){a.reExpander.el.hide()}a.removeClsWithUI(a.collapsedCls);c.undo(true)}else{if(c.isCollapsingOrExpanding==2){a.addClsWithUI(a.collapsedCls);c.bodyContext.undo()}}},sizePolicy:{nostretch:{setsWidth:0,setsHeight:0},stretchH:{setsWidth:1,setsHeight:0},stretchV:{setsWidth:0,setsHeight:1},autoStretchH:{readsWidth:1,setsWidth:1,setsHeight:0},autoStretchV:{readsHeight:1,setsWidth:0,setsHeight:1}},getItemSizePolicy:function(c){var d=this.sizePolicy,b,a;if(c.stretch===false){return d.nostretch}b=c.dock;a=(b=="left"||b=="right");if(a){return d.stretchV}return d.stretchH},configureItem:function(a,b){this.callParent(arguments);a.addCls(Ext.baseCSSPrefix+"docked");a.addClsWithUI("docked-"+a.dock)},afterRemove:function(a){this.callParent(arguments);if(this.itemCls){a.el.removeCls(this.itemCls+"-"+a.dock)}var b=a.el.dom;if(!a.destroying&&b){b.parentNode.removeChild(b)}this.childrenChanged=true}});Ext.define("Ext.toolbar.Fill",{extend:"Ext.Component",alias:"widget.tbfill",alternateClassName:"Ext.Toolbar.Fill",isFill:true,flex:1});Ext.define("Ext.layout.container.boxOverflow.None",{alternateClassName:"Ext.layout.boxOverflow.None",constructor:function(b,a){this.layout=b;Ext.apply(this,a)},handleOverflow:Ext.emptyFn,clearOverflow:Ext.emptyFn,beginLayout:Ext.emptyFn,beginLayoutCycle:Ext.emptyFn,finishedLayout:Ext.emptyFn,completeLayout:function(b){var a=this,c=b.state.boxPlan,d;if(c&&c.tooNarrow){d=a.handleOverflow(b);if(d){if(d.reservedSpace){a.layout.publishInnerCtSize(b,d.reservedSpace)}}}else{a.clearOverflow()}},onRemove:Ext.emptyFn,getItem:function(a){return this.layout.owner.getComponent(a)},getOwnerType:function(a){var b;if(a.isToolbar){b="toolbar"}else{if(a.isTabBar){b="tabbar"}else{if(a.isMenu){b="menu"}else{b=a.getXType()}}}return b},getPrefixConfig:Ext.emptyFn,getSuffixConfig:Ext.emptyFn,getOverflowCls:function(){return""}});Ext.define("Ext.toolbar.Item",{extend:"Ext.Component",alias:"widget.tbitem",alternateClassName:"Ext.Toolbar.Item",enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});Ext.define("Ext.toolbar.Separator",{extend:"Ext.toolbar.Item",alias:"widget.tbseparator",alternateClassName:"Ext.Toolbar.Separator",baseCls:Ext.baseCSSPrefix+"toolbar-separator",focusable:false,border:true});Ext.define("Ext.layout.component.Button",{alias:["layout.button"],extend:"Ext.layout.component.Auto",type:"button",cellClsRE:/-btn-(tl|br)\b/,htmlRE:/<.*>/,constructor:function(){this.callParent(arguments);this.hackWidth=Ext.isIE&&(!Ext.isStrict||Ext.isIE6||Ext.isIE7||Ext.isIE8);this.heightIncludesPadding=Ext.isIE6&&Ext.isStrict},beginLayout:function(a){this.callParent(arguments);this.cacheTargetInfo(a)},beginLayoutCycle:function(e){var c=this,d="",a=c.owner,b=a.btnEl,i=a.btnInnerEl,g=a.text,h;c.callParent(arguments);i.setStyle("overflow",d);if(!e.widthModel.natural){a.el.setStyle("width",d)}h=e.heightModel.shrinkWrap&&g&&c.htmlRE.test(g);b.setStyle("width",d);b.setStyle("height",h?"auto":d);i.setStyle("width",d);i.setStyle("height",h?"auto":d);i.setStyle("line-height",h?"normal":d);i.setStyle("padding-top",d);a.btnIconEl.setStyle("width",d)},calculateOwnerHeightFromContentHeight:function(b,a){return a},calculateOwnerWidthFromContentWidth:function(b,a){return a},measureContentWidth:function(c){var i=this,b=i.owner,g=b.btnEl,d=b.btnInnerEl,l=b.text,m,j,h,a,k,e;if(b.text&&i.hackWidth&&g){m=i.btnFrameWidth;if(l.indexOf(">")===-1){l=l.replace(/</g,"&lt;")}j=Ext.util.TextMetrics.measure(d,l);a=j.width+m+i.adjWidth;k=c.getEl("btnEl");e=c.getEl("btnInnerEl");h=(b.icon||b.iconCls)&&(b.iconAlign=="top"||b.iconAlign=="bottom");c.setWidth(a);k.setWidth(j.width+m);e.setWidth(j.width+m);if(h){b.btnIconEl.setWidth(j.width+m)}}else{a=c.el.getWidth()}return a},measureContentHeight:function(d){var j=this,b=j.owner,e=b.btnInnerEl,i=d.getEl("btnEl"),g=d.getEl("btnInnerEl"),c=j.minTextHeight,h=j.adjHeight,m=b.getText(),l,k,a;if(b.vertical){l=Ext.util.TextMetrics.measure(e,b.text).width;l+=j.btnFrameHeight+h;d.setHeight(l,true,true)}else{if(m&&j.htmlRE.test(m)){k=e.getHeight();if(k<c){a=Math.floor((c-k)/2);g.setHeight(c-(j.heightIncludesPadding?a:0));g.setProp("padding-top",a);k=c}l=k+h}else{l=d.el.getHeight()}}i.setHeight(l-h);return l},publishInnerHeight:function(c,m){var j=this,a=j.owner,g=Ext.isNumber,i=c.getEl("btnEl"),d=a.btnInnerEl,h=c.getEl("btnInnerEl"),e=g(m)?m-j.adjHeight:m,b=j.btnFrameHeight,l=a.getText(),k,n;i.setHeight(e);h.setHeight(e);if(!a.vertical&&e>=0){h.setProp("line-height",e-b+"px")}if(l&&j.htmlRE.test(l)){h.setProp("line-height","normal");d.setStyle("line-height","normal");k=Ext.util.TextMetrics.measure(d,l).height;n=Math.floor(Math.max(e-b-k,0)/2);h.setProp("padding-top",j.btnFrameTop+n);h.setHeight(e-(j.heightIncludesPadding?n:0))}},publishInnerWidth:function(g,c){var e=this,h=Ext.isNumber,a=g.getEl("btnEl"),b=g.getEl("btnInnerEl"),d=h(c)?c-e.adjWidth:c;a.setWidth(d);b.setWidth(d)},clearTargetCache:function(){delete this.adjWidth},cacheTargetInfo:function(b){var g=this,a=g.owner,d=a.scale,i,e,j,c,h;if(!("adjWidth" in g)||g.lastScale!==d){if(g.lastScale){a.btnInnerEl.setStyle("line-height","")}g.lastScale=d;i=b.getPaddingInfo();e=b.getFrameInfo();j=b.getEl("btnWrap").getPaddingInfo();c=b.getEl("btnInnerEl");h=c.getPaddingInfo();Ext.apply(g,{adjWidth:j.width+e.width+i.width,adjHeight:j.height+e.height+i.height,btnFrameWidth:h.width,btnFrameHeight:h.height,btnFrameTop:h.top,minTextHeight:parseInt(c.getStyle("line-height"),10)})}g.callParent(arguments)},finishedLayout:function(){var a=this.owner;this.callParent(arguments);if(Ext.isWebKit){a.el.dom.offsetWidth}}});Ext.define("Ext.menu.Manager",{singleton:true,requires:["Ext.util.MixedCollection","Ext.util.KeyMap"],alternateClassName:"Ext.menu.MenuMgr",uses:["Ext.menu.Menu"],menus:{},groups:{},attached:false,lastShow:new Date(),init:function(){var a=this;a.active=new Ext.util.MixedCollection();Ext.getDoc().addKeyListener(27,function(){if(a.active.length>0){a.hideAll()}},a)},hideAll:function(){var c=this.active,e,b,a,d;if(c&&c.length>0){e=c.clone();b=e.items;d=b.length;for(a=0;a<d;a++){b[a].hide()}return true}return false},onHide:function(a){var b=this,c=b.active;c.remove(a);if(c.length<1){Ext.getDoc().un("mousedown",b.onMouseDown,b);b.attached=false}},onShow:function(a){var e=this,g=e.active,d=g.last(),c=e.attached,b=a.getEl(),h;e.lastShow=new Date();g.add(a);if(!c){Ext.getDoc().on("mousedown",e.onMouseDown,e,{buffer:Ext.isIE?10:undefined});e.attached=true}a.toFront()},onBeforeHide:function(a){if(a.activeChild){a.activeChild.hide()}if(a.autoHideTimer){clearTimeout(a.autoHideTimer);delete a.autoHideTimer}},onBeforeShow:function(a){var c=this.active,b=a.parentMenu;c.remove(a);if(!b&&!a.allowOtherMenus){this.hideAll()}else{if(b&&b.activeChild&&a!=b.activeChild){b.activeChild.hide()}}},onMouseDown:function(d){var b=this,c=b.active,a=b.lastShow;if(Ext.Date.getElapsed(a)>50&&c.length>0&&!d.getTarget("."+Ext.baseCSSPrefix+"menu")){b.hideAll()}},register:function(b){var a=this;if(!a.active){a.init()}if(b.floating){a.menus[b.id]=b;b.on({beforehide:a.onBeforeHide,hide:a.onHide,beforeshow:a.onBeforeShow,show:a.onShow,scope:a})}},get:function(b){var a=this.menus;if(typeof b=="string"){if(!a){return null}return a[b]}else{if(b.isMenu){return b}else{if(Ext.isArray(b)){return new Ext.menu.Menu({items:b})}else{return Ext.ComponentManager.create(b,"menu")}}}},unregister:function(d){var a=this,b=a.menus,c=a.active;delete b[d.id];c.remove(d);d.un({beforehide:a.onBeforeHide,hide:a.onHide,beforeshow:a.onBeforeShow,show:a.onShow,scope:a})},registerCheckable:function(c){var a=this.groups,b=c.group;if(b){if(!a[b]){a[b]=[]}a[b].push(c)}},unregisterCheckable:function(c){var a=this.groups,b=c.group;if(b){Ext.Array.remove(a[b],c)}},onCheckChange:function(d,g){var a=this.groups,c=d.group,b=0,j,e,h;if(c&&g){j=a[c];e=j.length;for(;b<e;b++){h=j[b];if(h!=d){h.setChecked(false)}}}}});Ext.define("Ext.util.ClickRepeater",{extend:"Ext.util.Observable",constructor:function(b,a){var c=this;c.el=Ext.get(b);c.el.unselectable();Ext.apply(c,a);c.callParent();c.addEvents("mousedown","click","mouseup");if(!c.disabled){c.disabled=true;c.enable()}if(c.handler){c.on("click",c.handler,c.scope||c)}},interval:20,delay:250,preventDefault:true,stopDefault:false,timer:0,enable:function(){if(this.disabled){this.el.on("mousedown",this.handleMouseDown,this);if(Ext.isIE&&!(Ext.isStrict&&Ext.isIE9)){this.el.on("dblclick",this.handleDblClick,this)}if(this.preventDefault||this.stopDefault){this.el.on("click",this.eventOptions,this)}}this.disabled=false},disable:function(a){if(a||!this.disabled){clearTimeout(this.timer);if(this.pressedCls){this.el.removeCls(this.pressedCls)}Ext.getDoc().un("mouseup",this.handleMouseUp,this);this.el.removeAllListeners()}this.disabled=true},setDisabled:function(a){this[a?"disable":"enable"]()},eventOptions:function(a){if(this.preventDefault){a.preventDefault()}if(this.stopDefault){a.stopEvent()}},destroy:function(){this.disable(true);Ext.destroy(this.el);this.clearListeners()},handleDblClick:function(a){clearTimeout(this.timer);this.el.blur();this.fireEvent("mousedown",this,a);this.fireEvent("click",this,a)},handleMouseDown:function(a){clearTimeout(this.timer);this.el.blur();if(this.pressedCls){this.el.addCls(this.pressedCls)}this.mousedownTime=new Date();Ext.getDoc().on("mouseup",this.handleMouseUp,this);this.el.on("mouseout",this.handleMouseOut,this);this.fireEvent("mousedown",this,a);this.fireEvent("click",this,a);if(this.accelerate){this.delay=400}a=new Ext.EventObjectImpl(a);this.timer=Ext.defer(this.click,this.delay||this.interval,this,[a])},click:function(a){this.fireEvent("click",this,a);this.timer=Ext.defer(this.click,this.accelerate?this.easeOutExpo(Ext.Date.getElapsed(this.mousedownTime),400,-390,12000):this.interval,this,[a])},easeOutExpo:function(e,a,h,g){return(e==g)?a+h:h*(-Math.pow(2,-10*e/g)+1)+a},handleMouseOut:function(){clearTimeout(this.timer);if(this.pressedCls){this.el.removeCls(this.pressedCls)}this.el.on("mouseover",this.handleMouseReturn,this)},handleMouseReturn:function(){this.el.un("mouseover",this.handleMouseReturn,this);if(this.pressedCls){this.el.addCls(this.pressedCls)}this.click()},handleMouseUp:function(a){clearTimeout(this.timer);this.el.un("mouseover",this.handleMouseReturn,this);this.el.un("mouseout",this.handleMouseOut,this);Ext.getDoc().un("mouseup",this.handleMouseUp,this);if(this.pressedCls){this.el.removeCls(this.pressedCls)}this.fireEvent("mouseup",this,a)}});Ext.define("Ext.util.TextMetrics",{statics:{shared:null,measure:function(a,d,e){var b=this,c=b.shared;if(!c){c=b.shared=new b(a,e)}c.bind(a);c.setFixedWidth(e||"auto");return c.getSize(d)},destroy:function(){var a=this;Ext.destroy(a.shared);a.shared=null}},constructor:function(a,c){var b=this.measure=Ext.getBody().createChild({cls:Ext.baseCSSPrefix+"textmetrics"});this.el=Ext.get(a);b.position("absolute");b.setLeftTop(-1000,-1000);b.hide();if(c){b.setWidth(c)}},getSize:function(c){var b=this.measure,a;b.update(c);a=b.getSize();b.update("");return a},bind:function(a){var b=this;b.el=Ext.get(a);b.measure.setStyle(b.el.getStyles("font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"))},setFixedWidth:function(a){this.measure.setWidth(a)},getWidth:function(a){this.measure.dom.style.width="auto";return this.getSize(a).width},getHeight:function(a){return this.getSize(a).height},destroy:function(){var a=this;a.measure.remove();delete a.el;delete a.measure}},function(){Ext.Element.addMethods({getTextWidth:function(c,b,a){return Ext.Number.constrain(Ext.util.TextMetrics.measure(this.dom,Ext.value(c,this.dom.innerHTML,true)).width,b||0,a||1000000)}})});Ext.define("Ext.button.Button",{alias:"widget.button",extend:"Ext.Component",requires:["Ext.menu.Manager","Ext.util.ClickRepeater","Ext.layout.component.Button","Ext.util.TextMetrics","Ext.util.KeyMap"],alternateClassName:"Ext.Button",isButton:true,componentLayout:"button",hidden:false,disabled:false,pressed:false,enableToggle:false,menuAlign:"tl-bl?",textAlign:"center",type:"button",clickEvent:"click",preventDefault:true,handleMouseEvents:true,tooltipType:"qtip",baseCls:Ext.baseCSSPrefix+"btn",pressedCls:"pressed",overCls:"over",focusCls:"focus",menuActiveCls:"menu-active",hrefTarget:"_blank",border:true,childEls:["btnEl","btnWrap","btnInnerEl","btnIconEl"],renderTpl:['<em id="{id}-btnWrap"<tpl if="splitCls"> class="{splitCls}"</tpl>>','<tpl if="href">','<a id="{id}-btnEl" href="{href}" class="{btnCls}" target="{hrefTarget}"','<tpl if="tabIndex"> tabIndex="{tabIndex}"</tpl>','<tpl if="disabled"> disabled="disabled"</tpl>',' role="link">','<span id="{id}-btnInnerEl" class="{baseCls}-inner">',"{text}","</span>",'<span id="{id}-btnIconEl" class="{baseCls}-icon {iconCls}"<tpl if="iconUrl"> style="background-image:url({iconUrl})"</tpl>></span>',"</a>","<tpl else>",'<button id="{id}-btnEl" type="{type}" class="{btnCls}" hidefocus="true"','<tpl if="tabIndex"> tabIndex="{tabIndex}"</tpl>','<tpl if="disabled"> disabled="disabled"</tpl>',' role="button" autocomplete="off">','<span id="{id}-btnInnerEl" class="{baseCls}-inner" style="{innerSpanStyle}">',"{text}","</span>",'<span id="{id}-btnIconEl" class="{baseCls}-icon {iconCls}"<tpl if="iconUrl"> style="background-image:url({iconUrl})"</tpl>></span>',"</button>","</tpl>","</em>",'<tpl if="closable">','<a id="{id}-closeEl" href="#" class="{baseCls}-close-btn" title="{closeText}"></a>',"</tpl>"],scale:"small",allowedScales:["small","medium","large"],iconAlign:"left",arrowAlign:"right",arrowCls:"arrow",maskOnDisable:false,persistentPadding:undefined,shrinkWrap:3,frame:true,initComponent:function(){var a=this;a.callParent(arguments);a.addEvents("click","toggle","mouseover","mouseout","menushow","menuhide","menutriggerover","menutriggerout");if(a.menu){a.split=true;a.menu=Ext.menu.Manager.get(a.menu);a.menu.ownerButton=a}if(a.url){a.href=a.url}if(a.href&&!a.hasOwnProperty("preventDefault")){a.preventDefault=false}if(Ext.isString(a.toggleGroup)&&a.toggleGroup!==""){a.enableToggle=true}if(a.html&&!a.text){a.text=a.html;delete a.html}},getActionEl:function(){return this.btnEl},getFocusEl:function(){return this.useElForFocus?this.el:this.btnEl},onFocus:function(b){var a=this;a.useElForFocus=true;a.callParent(arguments);a.useElForFocus=false},onBlur:function(a){this.useElForFocus=true;this.callParent(arguments);this.useElForFocus=false},onDisable:function(){this.useElForFocus=true;this.callParent(arguments);this.useElForFocus=false},setComponentCls:function(){var b=this,a=b.getComponentCls();if(!Ext.isEmpty(b.oldCls)){b.removeClsWithUI(b.oldCls);b.removeClsWithUI(b.pressedCls)}b.oldCls=a;b.addClsWithUI(a)},getComponentCls:function(){var b=this,a=[];if(b.iconCls||b.icon){if(b.text){a.push("icon-text-"+b.iconAlign)}else{a.push("icon")}}else{if(b.text){a.push("noicon")}}if(b.pressed){a.push(b.pressedCls)}return a},beforeRender:function(){var a=this;a.callParent();a.oldCls=a.getComponentCls();a.addClsWithUI(a.oldCls);Ext.applyIf(a.renderData,a.getTemplateArgs());if(a.scale){a.setScale(a.scale)}},onRender:function(){var c=this,d,a,b;c.doc=Ext.getDoc();c.callParent(arguments);if(c.split&&c.arrowTooltip){c.arrowEl.dom.setAttribute(c.getTipAttr(),c.arrowTooltip)}a=c.el;if(c.tooltip){c.setTooltip(c.tooltip,true)}if(c.handleMouseEvents){b={scope:c,mouseover:c.onMouseOver,mouseout:c.onMouseOut,mousedown:c.onMouseDown};if(c.split){b.mousemove=c.onMouseMove}}else{b={scope:c}}if(c.menu){c.mon(c.menu,{scope:c,show:c.onMenuShow,hide:c.onMenuHide});c.keyMap=new Ext.util.KeyMap({target:c.el,key:Ext.EventObject.DOWN,handler:c.onDownKey,scope:c})}if(c.repeat){c.mon(new Ext.util.ClickRepeater(a,Ext.isObject(c.repeat)?c.repeat:{}),"click",c.onRepeatClick,c)}else{if(b[c.clickEvent]){d=true}else{b[c.clickEvent]=c.onClick}}c.mon(a,b);if(d){c.mon(a,c.clickEvent,c.onClick,c)}Ext.ButtonToggleManager.register(c)},getTemplateArgs:function(){var c=this,b=c.getPersistentPadding(),a="";if(Math.max.apply(Math,b)>0){a="margin:"+Ext.Array.map(b,function(d){return -d+"px"}).join(" ")}return{href:c.getHref(),disabled:c.disabled,hrefTarget:c.hrefTarget,type:c.type,btnCls:c.getBtnCls(),splitCls:c.getSplitCls(),iconUrl:c.icon,iconCls:c.iconCls,text:c.text||"&#160;",tabIndex:c.tabIndex,innerSpanStyle:a}},getHref:function(){var a=this,b=Ext.apply({},a.baseParams);b=Ext.apply(b,a.params);return a.href?Ext.urlAppend(a.href,Ext.Object.toQueryString(b)):false},setParams:function(a){this.params=a;this.btnEl.dom.href=this.getHref()},getSplitCls:function(){var a=this;return a.split?(a.baseCls+"-"+a.arrowCls)+" "+(a.baseCls+"-"+a.arrowCls+"-"+a.arrowAlign):""},getBtnCls:function(){return this.textAlign?this.baseCls+"-"+this.textAlign:""},setIconCls:function(b){var d=this,a=d.btnIconEl,c=d.iconCls;d.iconCls=b;if(a){a.removeCls(c);a.addCls(b||"");d.setComponentCls();if(d.didIconStateChange(c,b)){d.updateLayout()}}return d},setTooltip:function(c,a){var b=this;if(b.rendered){if(!a){b.clearTip()}if(Ext.isObject(c)){Ext.tip.QuickTipManager.register(Ext.apply({target:b.btnEl.id},c));b.tooltip=c}else{b.btnEl.dom.setAttribute(b.getTipAttr(),c)}}else{b.tooltip=c}return b},setTextAlign:function(c){var b=this,a=b.btnEl;if(a){a.removeCls(b.baseCls+"-"+b.textAlign);a.addCls(b.baseCls+"-"+c)}b.textAlign=c;return b},getTipAttr:function(){return this.tooltipType=="qtip"?"data-qtip":"title"},getRefItems:function(a){var c=this.menu,b;if(c){b=c.getRefItems(a);b.unshift(c)}return b||[]},clearTip:function(){if(Ext.isObject(this.tooltip)){Ext.tip.QuickTipManager.unregister(this.btnEl)}},beforeDestroy:function(){var a=this;if(a.rendered){a.clearTip()}if(a.menu&&a.destroyMenu!==false){Ext.destroy(a.menu)}Ext.destroy(a.btnInnerEl,a.repeater);a.callParent()},onDestroy:function(){var a=this;if(a.rendered){a.doc.un("mouseover",a.monitorMouseOver,a);a.doc.un("mouseup",a.onMouseUp,a);delete a.doc;Ext.ButtonToggleManager.unregister(a);Ext.destroy(a.keyMap);delete a.keyMap}a.callParent()},setHandler:function(b,a){this.handler=b;this.scope=a;return this},setText:function(b){var a=this;a.text=b;if(a.rendered){a.btnInnerEl.update(b||"&#160;");a.setComponentCls();if(Ext.isStrict&&Ext.isIE8){a.el.repaint()}a.updateLayout()}return a},setIcon:function(b){var c=this,a=c.btnIconEl,d=c.icon;c.icon=b;if(a){a.setStyle("background-image",b?"url("+b+")":"");c.setComponentCls();if(c.didIconStateChange(d,b)){c.updateLayout()}}return c},didIconStateChange:function(a,c){var b=Ext.isEmpty(c);return Ext.isEmpty(a)?!b:b},getText:function(){return this.text},toggle:function(c,a){var b=this;c=c===undefined?!b.pressed:!!c;if(c!==b.pressed){if(b.rendered){b[c?"addClsWithUI":"removeClsWithUI"](b.pressedCls)}b.pressed=c;if(!a){b.fireEvent("toggle",b,c);Ext.callback(b.toggleHandler,b.scope||b,[b,c])}}return b},maybeShowMenu:function(){var a=this;if(a.menu&&!a.hasVisibleMenu()&&!a.ignoreNextClick){a.showMenu()}},showMenu:function(){var a=this;if(a.rendered&&a.menu){if(a.tooltip&&a.getTipAttr()!="title"){Ext.tip.QuickTipManager.getQuickTip().cancelShow(a.btnEl)}if(a.menu.isVisible()){a.menu.hide()}a.menu.showBy(a.el,a.menuAlign,((!Ext.isStrict&&Ext.isIE)||Ext.isIE6)?[-2,-2]:undefined)}return a},hideMenu:function(){if(this.hasVisibleMenu()){this.menu.hide()}return this},hasVisibleMenu:function(){var a=this.menu;return a&&a.rendered&&a.isVisible()},onRepeatClick:function(a,b){this.onClick(b)},onClick:function(b){var a=this;if(a.preventDefault||(a.disabled&&a.getHref())&&b){b.preventDefault()}if(b.button!==0){return}if(!a.disabled){a.doToggle();a.maybeShowMenu();a.fireHandler(b)}},fireHandler:function(c){var b=this,a=b.handler;if(b.fireEvent("click",b,c)!==false){if(a){a.call(b.scope||b,b,c)}b.blur()}},doToggle:function(){var a=this;if(a.enableToggle&&(a.allowDepress!==false||!a.pressed)){a.toggle()}},onMouseOver:function(b){var a=this;if(!a.disabled&&!b.within(a.el,true,true)){a.onMouseEnter(b)}},onMouseOut:function(b){var a=this;if(!b.within(a.el,true,true)){if(a.overMenuTrigger){a.onMenuTriggerOut(b)}a.onMouseLeave(b)}},onMouseMove:function(h){var d=this,c=d.el,g=d.overMenuTrigger,b,a;if(d.split){if(d.arrowAlign==="right"){b=h.getX()-c.getX();a=c.getWidth()}else{b=h.getY()-c.getY();a=c.getHeight()}if(b>(a-d.getTriggerSize())){if(!g){d.onMenuTriggerOver(h)}}else{if(g){d.onMenuTriggerOut(h)}}}},getTriggerSize:function(){var e=this,c=e.triggerSize,b,a,d;if(c===d){b=e.arrowAlign;a=b.charAt(0);c=e.triggerSize=e.el.getFrameWidth(a)+e.btnWrap.getFrameWidth(a)+e.frameSize[b]}return c},onMouseEnter:function(b){var a=this;a.addClsWithUI(a.overCls);a.fireEvent("mouseover",a,b)},onMouseLeave:function(b){var a=this;a.removeClsWithUI(a.overCls);a.fireEvent("mouseout",a,b)},onMenuTriggerOver:function(b){var a=this;a.overMenuTrigger=true;a.fireEvent("menutriggerover",a,a.menu,b)},onMenuTriggerOut:function(b){var a=this;delete a.overMenuTrigger;a.fireEvent("menutriggerout",a,a.menu,b)},enable:function(a){var b=this;b.callParent(arguments);if(b.btnEl){b.btnEl.dom.disabled=false}b.removeClsWithUI("disabled");return b},disable:function(a){var b=this;b.callParent(arguments);if(b.btnEl){b.btnEl.dom.disabled=true}b.addClsWithUI("disabled");b.removeClsWithUI(b.overCls);if(b.btnInnerEl&&(Ext.isIE6||Ext.isIE7)){b.btnInnerEl.repaint()}return b},setScale:function(c){var a=this,b=a.ui.replace("-"+a.scale,"");if(!Ext.Array.contains(a.allowedScales,c)){throw ("#setScale: scale must be an allowed scale ("+a.allowedScales.join(", ")+")")}a.scale=c;a.setUI(b)},setUI:function(b){var a=this;if(a.scale&&!b.match(a.scale)){b=b+"-"+a.scale}a.callParent([b])},onMouseDown:function(b){var a=this;if(!a.disabled&&b.button===0){a.addClsWithUI(a.pressedCls);a.doc.on("mouseup",a.onMouseUp,a)}},onMouseUp:function(b){var a=this;if(b.button===0){if(!a.pressed){a.removeClsWithUI(a.pressedCls)}a.doc.un("mouseup",a.onMouseUp,a)}},onMenuShow:function(b){var a=this;a.ignoreNextClick=0;a.addClsWithUI(a.menuActiveCls);a.fireEvent("menushow",a,a.menu)},onMenuHide:function(b){var a=this;a.removeClsWithUI(a.menuActiveCls);a.ignoreNextClick=Ext.defer(a.restoreClick,250,a);a.fireEvent("menuhide",a,a.menu)},restoreClick:function(){this.ignoreNextClick=0},onDownKey:function(){var a=this;if(!a.disabled){if(a.menu){a.showMenu()}}},getPersistentPadding:function(){var g=this,e=Ext.scopeResetCSS,h=g.persistentPadding,b,a,d,i,c;if(!h){h=g.self.prototype.persistentPadding=[0,0,0,0];if(!Ext.isIE){b=new Ext.button.Button({text:"test",style:"position:absolute;top:-999px;"});b.el=Ext.DomHelper.append(Ext.resetElement,b.getRenderTree(),true);b.applyChildEls(b.el);d=b.btnEl;i=b.btnInnerEl;d.setSize(null,null);a=i.getOffsetsTo(d);h[0]=a[1];h[1]=d.getWidth()-i.getWidth()-a[0];h[2]=d.getHeight()-i.getHeight()-a[1];h[3]=a[0];b.destroy();b.el.remove()}}return h}},function(){var a={},b=function(d,j){if(j){var h=a[d.toggleGroup],e=h.length,c;for(c=0;c<e;c++){if(h[c]!==d){h[c].toggle(false)}}}};Ext.ButtonToggleManager={register:function(c){if(!c.toggleGroup){return}var d=a[c.toggleGroup];if(!d){d=a[c.toggleGroup]=[]}d.push(c);c.on("toggle",b)},unregister:function(c){if(!c.toggleGroup){return}var d=a[c.toggleGroup];if(d){Ext.Array.remove(d,c);c.un("toggle",b)}},getPressed:function(h){var e=a[h],d=0,c;if(e){for(c=e.length;d<c;d++){if(e[d].pressed===true){return e[d]}}}return null}}});Ext.define("Ext.layout.container.boxOverflow.Menu",{extend:"Ext.layout.container.boxOverflow.None",requires:["Ext.toolbar.Separator","Ext.button.Button"],alternateClassName:"Ext.layout.boxOverflow.Menu",noItemsMenuText:'<div class="'+Ext.baseCSSPrefix+'toolbar-no-items">(None)</div>',constructor:function(b){var a=this;a.callParent(arguments);a.triggerButtonCls=a.triggerButtonCls||Ext.baseCSSPrefix+"box-menu-"+b.getNames().right;a.menuItems=[]},beginLayout:function(a){this.callParent(arguments);this.clearOverflow(a)},beginLayoutCycle:function(b,a){this.callParent(arguments);if(!a){this.clearOverflow(b);this.layout.cacheChildItems(b)}},onRemove:function(a){Ext.Array.remove(this.menuItems,a)},getSuffixConfig:function(){var c=this,b=c.layout,a=b.owner.id;c.menu=new Ext.menu.Menu({listeners:{scope:c,beforeshow:c.beforeMenuShow}});c.menuTrigger=new Ext.button.Button({id:a+"-menu-trigger",cls:Ext.layout.container.Box.prototype.innerCls+" "+c.triggerButtonCls,hidden:true,ownerCt:b.owner,ownerLayout:b,iconCls:Ext.baseCSSPrefix+c.getOwnerType(b.owner)+"-more-icon",ui:b.owner instanceof Ext.toolbar.Toolbar?"default-toolbar":"default",menu:c.menu,getSplitCls:function(){return""}});return c.menuTrigger.getRenderTree()},getOverflowCls:function(){return Ext.baseCSSPrefix+this.layout.direction+"-box-overflow-body"},handleOverflow:function(d){var c=this,b=c.layout,g=b.getNames(),e=d.state.boxPlan,a=[null,null];c.showTrigger(d);a[g.heightIndex]=(e.maxSize-c.menuTrigger[g.getHeight]())/2;c.menuTrigger.setPosition.apply(c.menuTrigger,a);return{reservedSpace:c.menuTrigger[g.getWidth]()}},captureChildElements:function(){var a=this.menuTrigger;if(a.rendering){a.finishRender()}},_asLayoutRoot:{isRoot:true},clearOverflow:function(h){var g=this,b=g.menuItems,e,c=0,d=b.length,a=g.layout.owner,j=g._asLayoutRoot;a.suspendLayouts();g.captureChildElements();g.hideTrigger();a.resumeLayouts();for(;c<d;c++){e=b[c];e.suspendLayouts();e.show();e.resumeLayouts(j)}b.length=0},showTrigger:function(c){var o=this,k=o.layout,a=k.owner,n=k.getNames(),r=n.x,e=n.width,p=c.state.boxPlan,b=p.targetSize[e],h=c.childItems,l=h.length,g=o.menuTrigger,q,j,d,m;g.suspendLayouts();g.show();g.resumeLayouts(o._asLayoutRoot);b-=o.menuTrigger.getWidth();a.suspendLayouts();o.menuItems.length=0;for(d=0;d<l;d++){q=h[d];m=q.props;if(m[r]+m[e]>b){j=q.target;o.menuItems.push(j);j.hide()}}a.resumeLayouts()},hideTrigger:function(){var a=this.menuTrigger;if(a){a.hide()}},beforeMenuShow:function(j){var h=this,b=h.menuItems,d=0,a=b.length,g,e,c=function(k,i){return k.isXType("buttongroup")&&!(i instanceof Ext.toolbar.Separator)};j.suspendLayouts();h.clearMenu();j.removeAll();for(;d<a;d++){g=b[d];if(!d&&(g instanceof Ext.toolbar.Separator)){continue}if(e&&(c(g,e)||c(e,g))){j.add("-")}h.addComponentToMenu(j,g);e=g}if(j.items.length<1){j.add(h.noItemsMenuText)}j.resumeLayouts()},createMenuConfig:function(c,a){var b=Ext.apply({},c.initialConfig),d=c.toggleGroup;Ext.copyTo(b,c,["iconCls","icon","itemId","disabled","handler","scope","menu"]);Ext.apply(b,{text:c.overflowText||c.text,hideOnClick:a,destroyMenu:false});if(c.isFormField){b.value=c.getValue();if(!b.listeners){b.listeners={}}b.listeners.change=function(h,g,e){c.setValue(g)}}else{if(d||c.enableToggle){Ext.apply(b,{iconAlign:"right",hideOnClick:false,group:d,checked:c.pressed,listeners:{checkchange:function(g,e){c.toggle(e)}}})}}delete b.ownerCt;delete b.xtype;delete b.id;return b},addComponentToMenu:function(g,c){var e=this,d,b,a;if(c instanceof Ext.toolbar.Separator){g.add("-")}else{if(c.isComponent){if(c.isXType("splitbutton")){g.add(e.createMenuConfig(c,true))}else{if(c.isXType("button")){g.add(e.createMenuConfig(c,!c.menu))}else{if(c.isXType("buttongroup")){b=c.items.items;a=b.length;for(d=0;d<a;d++){e.addComponentToMenu(g,b[d])}}else{g.add(Ext.create(Ext.getClassName(c),e.createMenuConfig(c)))}}}}}},clearMenu:function(){var e=this.menu,b,c,a,d;if(e&&e.items){b=e.items.items;a=b.length;for(c=0;c<a;c++){d=b[c];if(d.setMenu){d.setMenu(null)}}}},destroy:function(){var a=this.menuTrigger;if(a&&!this.layout.owner.items.contains(a)){delete a.ownerCt}Ext.destroy(this.menu,a)}});Ext.define("Ext.layout.container.boxOverflow.Scroller",{extend:"Ext.layout.container.boxOverflow.None",requires:["Ext.util.ClickRepeater","Ext.Element"],alternateClassName:"Ext.layout.boxOverflow.Scroller",mixins:{observable:"Ext.util.Observable"},animateScroll:false,scrollIncrement:20,wheelIncrement:10,scrollRepeatInterval:60,scrollDuration:400,scrollerCls:Ext.baseCSSPrefix+"box-scroller",constructor:function(c,a){var b=this;b.layout=c;Ext.apply(b,a||{});b.mixins.observable.constructor.call(b);b.addEvents("scroll");b.scrollPosition=0;b.scrollSize=0},getPrefixConfig:function(){var a=this;a.initCSSClasses();return{cls:Ext.layout.container.Box.prototype.innerCls+" "+a.beforeCtCls,cn:{id:a.layout.owner.id+"-before-scroller",cls:a.scrollerCls+" "+a.beforeScrollerCls,style:"display:none"}}},getSuffixConfig:function(){var a=this;return{cls:Ext.layout.container.Box.prototype.innerCls+" "+a.afterCtCls,cn:{id:a.layout.owner.id+"-after-scroller",cls:a.scrollerCls+" "+a.afterScrollerCls,style:"display:none"}}},getOverflowCls:function(){return Ext.baseCSSPrefix+this.layout.direction+"-box-overflow-body"},initCSSClasses:function(){var d=this,e=Ext.baseCSSPrefix,c=d.layout,g=c.getNames(),a=g.left,h=g.right,b=d.getOwnerType(c.owner);d.beforeCtCls=d.beforeCtCls||e+"box-scroller-"+a;d.afterCtCls=d.afterCtCls||e+"box-scroller-"+h;d.beforeScrollerCls=d.beforeScrollerCls||e+b+"-scroll-"+a;d.afterScrollerCls=d.afterScrollerCls||e+b+"-scroll-"+h},beginLayout:function(b){var a=this.layout,c=a.getNames();b.innerCtScrollPos=a.innerCt.dom["scroll"+c.leftCap];this.callParent(arguments)},completeLayout:function(a){this.scrollSize=a.props["content"+this.layout.getNames().widthCap];this.callParent(arguments)},finishedLayout:function(c){var b=this,a=b.layout,d=a.getNames(),e=Math.min(b.getMaxScrollPosition(),c.innerCtScrollPos);a.innerCt.dom["scroll"+d.leftCap]=e},handleOverflow:function(d){var c=this,b=c.layout,e=b.getNames(),a="get"+e.widthCap;c.captureChildElements();c.showScrollers();return{reservedSpace:c.beforeCt[a]()+c.afterCt[a]()}},captureChildElements:function(){var b=this,a=b.layout.owner.el,c,d;if(!b.beforeCt){c=b.beforeScroller=a.getById(b.layout.owner.id+"-before-scroller");d=b.afterScroller=a.getById(b.layout.owner.id+"-after-scroller");b.beforeCt=c.up("");b.afterCt=d.up("");b.createWheelListener();c.addClsOnOver(b.beforeScrollerCls+"-hover");d.addClsOnOver(b.afterScrollerCls+"-hover");c.setVisibilityMode(Ext.Element.DISPLAY);d.setVisibilityMode(Ext.Element.DISPLAY);b.beforeRepeater=new Ext.util.ClickRepeater(c,{interval:b.scrollRepeatInterval,handler:b.scrollLeft,scope:b});b.afterRepeater=new Ext.util.ClickRepeater(d,{interval:b.scrollRepeatInterval,handler:b.scrollRight,scope:b})}},createWheelListener:function(){this.layout.innerCt.on({mousewheel:function(a){this.scrollBy(a.getWheelDelta()*this.wheelIncrement*-1,false)},stopEvent:true,scope:this})},clearOverflow:function(){var a=this.layout;this.hideScrollers()},showScrollers:function(){var a=this;a.captureChildElements();a.beforeScroller.show();a.afterScroller.show();a.updateScrollButtons();a.layout.owner.addClsWithUI("scroller")},hideScrollers:function(){var a=this;if(a.beforeScroller!==undefined){a.beforeScroller.hide();a.afterScroller.hide();a.layout.owner.removeClsWithUI("scroller")}},destroy:function(){var a=this;Ext.destroy(a.beforeRepeater,a.afterRepeater,a.beforeScroller,a.afterScroller,a.beforeCt,a.afterCt)},scrollBy:function(b,a){this.scrollTo(this.getScrollPosition()+b,a)},getScrollAnim:function(){return{duration:this.scrollDuration,callback:this.updateScrollButtons,scope:this}},updateScrollButtons:function(){var d=this,e,c,a,b;if(d.beforeScroller===undefined||d.afterScroller===undefined){return}e=d.atExtremeBefore()?"addCls":"removeCls";c=d.atExtremeAfter()?"addCls":"removeCls";a=d.beforeScrollerCls+"-disabled";b=d.afterScrollerCls+"-disabled";d.beforeScroller[e](a);d.afterScroller[c](b);d.scrolling=false},atExtremeBefore:function(){return !this.getScrollPosition()},scrollLeft:function(){this.scrollBy(-this.scrollIncrement,false)},scrollRight:function(){this.scrollBy(this.scrollIncrement,false)},getScrollPosition:function(){var c=this,b=c.layout,a;if(c.hasOwnProperty("scrollPosition")){a=c.scrollPosition}else{a=parseInt(b.innerCt.dom["scroll"+b.getNames().leftCap],10)||0}return a},getMaxScrollPosition:function(){var b=this,a=b.layout,c=a.getNames(),d=b.scrollSize-a.innerCt["get"+c.widthCap]();return(d<0)?0:d},atExtremeAfter:function(){return this.getScrollPosition()>=this.getMaxScrollPosition()},scrollTo:function(a,b){var g=this,e=g.layout,h=e.getNames(),d=g.getScrollPosition(),c=Ext.Number.constrain(a,0,g.getMaxScrollPosition());if(c!=d&&!g.scrolling){delete g.scrollPosition;if(b===undefined){b=g.animateScroll}e.innerCt.scrollTo(h.left,c,b?g.getScrollAnim():false);if(b){g.scrolling=true}else{g.updateScrollButtons()}g.fireEvent("scroll",g,c,b?g.getScrollAnim():false)}},scrollToItem:function(h,b){var g=this,e=g.layout,i=e.getNames(),a,d,c;h=g.getItem(h);if(h!==undefined){a=g.getItemVisibility(h);if(!a.fullyVisible){d=h.getBox(true,true);c=d[i.x];if(a.hiddenEnd){c-=(g.layout.innerCt["get"+i.widthCap]()-d[i.width])}g.scrollTo(c,b)}}},getItemVisibility:function(j){var h=this,b=h.getItem(j).getBox(true,true),c=h.layout,g=c.getNames(),e=b[g.x],d=e+b[g.width],a=h.getScrollPosition(),i=a+c.innerCt["get"+g.widthCap]();return{hiddenStart:e<a,hiddenEnd:d>i,fullyVisible:e>a&&d<i}}});Ext.define("Ext.util.Offset",{statics:{fromObject:function(a){return new this(a.x,a.y)}},constructor:function(a,b){this.x=(a!=null&&!isNaN(a))?a:0;this.y=(b!=null&&!isNaN(b))?b:0;return this},copy:function(){return new Ext.util.Offset(this.x,this.y)},copyFrom:function(a){this.x=a.x;this.y=a.y},toString:function(){return"Offset["+this.x+","+this.y+"]"},equals:function(a){return(this.x==a.x&&this.y==a.y)},round:function(b){if(!isNaN(b)){var a=Math.pow(10,b);this.x=Math.round(this.x*a)/a;this.y=Math.round(this.y*a)/a}else{this.x=Math.round(this.x);this.y=Math.round(this.y)}},isZero:function(){return this.x==0&&this.y==0}});Ext.define("Ext.util.Region",{requires:["Ext.util.Offset"],statics:{getRegion:function(a){return Ext.fly(a).getPageBox(true)},from:function(a){return new this(a.top,a.right,a.bottom,a.left)}},constructor:function(d,g,a,c){var e=this;e.y=e.top=e[1]=d;e.right=g;e.bottom=a;e.x=e.left=e[0]=c},contains:function(b){var a=this;return(b.x>=a.x&&b.right<=a.right&&b.y>=a.y&&b.bottom<=a.bottom)},intersect:function(h){var g=this,d=Math.max(g.y,h.y),e=Math.min(g.right,h.right),a=Math.min(g.bottom,h.bottom),c=Math.max(g.x,h.x);if(a>d&&e>c){return new this.self(d,e,a,c)}else{return false}},union:function(h){var g=this,d=Math.min(g.y,h.y),e=Math.max(g.right,h.right),a=Math.max(g.bottom,h.bottom),c=Math.min(g.x,h.x);return new this.self(d,e,a,c)},constrainTo:function(b){var a=this,c=Ext.Number.constrain;a.top=a.y=c(a.top,b.y,b.bottom);a.bottom=c(a.bottom,b.y,b.bottom);a.left=a.x=c(a.left,b.x,b.right);a.right=c(a.right,b.x,b.right);return a},adjust:function(d,g,a,c){var e=this;e.top=e.y+=d;e.left=e.x+=c;e.right+=g;e.bottom+=a;return e},getOutOfBoundOffset:function(a,b){if(!Ext.isObject(a)){if(a=="x"){return this.getOutOfBoundOffsetX(b)}else{return this.getOutOfBoundOffsetY(b)}}else{b=a;var c=new Ext.util.Offset();c.x=this.getOutOfBoundOffsetX(b.x);c.y=this.getOutOfBoundOffsetY(b.y);return c}},getOutOfBoundOffsetX:function(a){if(a<=this.x){return this.x-a}else{if(a>=this.right){return this.right-a}}return 0},getOutOfBoundOffsetY:function(a){if(a<=this.y){return this.y-a}else{if(a>=this.bottom){return this.bottom-a}}return 0},isOutOfBound:function(a,b){if(!Ext.isObject(a)){if(a=="x"){return this.isOutOfBoundX(b)}else{return this.isOutOfBoundY(b)}}else{b=a;return(this.isOutOfBoundX(b.x)||this.isOutOfBoundY(b.y))}},isOutOfBoundX:function(a){return(a<this.x||a>this.right)},isOutOfBoundY:function(a){return(a<this.y||a>this.bottom)},restrict:function(b,d,a){if(Ext.isObject(b)){var c;a=d;d=b;if(d.copy){c=d.copy()}else{c={x:d.x,y:d.y}}c.x=this.restrictX(d.x,a);c.y=this.restrictY(d.y,a);return c}else{if(b=="x"){return this.restrictX(d,a)}else{return this.restrictY(d,a)}}},restrictX:function(b,a){if(!a){a=1}if(b<=this.x){b-=(b-this.x)*a}else{if(b>=this.right){b-=(b-this.right)*a}}return b},restrictY:function(b,a){if(!a){a=1}if(b<=this.y){b-=(b-this.y)*a}else{if(b>=this.bottom){b-=(b-this.bottom)*a}}return b},getSize:function(){return{width:this.right-this.x,height:this.bottom-this.y}},copy:function(){return new this.self(this.y,this.right,this.bottom,this.x)},copyFrom:function(b){var a=this;a.top=a.y=a[1]=b.y;a.right=b.right;a.bottom=b.bottom;a.left=a.x=a[0]=b.x;return this},toString:function(){return"Region["+this.top+","+this.right+","+this.bottom+","+this.left+"]"},translateBy:function(a,c){if(arguments.length==1){c=a.y;a=a.x}var b=this;b.top=b.y+=c;b.right+=a;b.bottom+=c;b.left=b.x+=a;return b},round:function(){var a=this;a.top=a.y=Math.round(a.y);a.right=Math.round(a.right);a.bottom=Math.round(a.bottom);a.left=a.x=Math.round(a.x);return a},equals:function(a){return(this.top==a.top&&this.right==a.right&&this.bottom==a.bottom&&this.left==a.left)}});Ext.define("Ext.dd.DragDropManager",{singleton:true,requires:["Ext.util.Region"],uses:["Ext.tip.QuickTipManager"],alternateClassName:["Ext.dd.DragDropMgr","Ext.dd.DDM"],ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,initialized:false,locked:false,init:function(){this.initialized=true},POINT:0,INTERSECT:1,mode:0,notifyOccluded:false,_execOnAll:function(c,b){var d,a,e;for(d in this.ids){for(a in this.ids[d]){e=this.ids[d][a];if(!this.isTypeOfDD(e)){continue}e[c].apply(e,b)}}},_onLoad:function(){this.init();var a=Ext.EventManager;a.on(document,"mouseup",this.handleMouseUp,this,true);a.on(document,"mousemove",this.handleMouseMove,this,true);a.on(window,"unload",this._onUnload,this,true);a.on(window,"resize",this._onResize,this,true)},_onResize:function(a){this._execOnAll("resetConstraints",[])},lock:function(){this.locked=true},unlock:function(){this.locked=false},isLocked:function(){return this.locked},locationCache:{},useCache:true,clickPixelThresh:3,clickTimeThresh:350,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,regDragDrop:function(b,a){if(!this.initialized){this.init()}if(!this.ids[a]){this.ids[a]={}}this.ids[a][b.id]=b},removeDDFromGroup:function(c,a){if(!this.ids[a]){this.ids[a]={}}var b=this.ids[a];if(b&&b[c.id]){delete b[c.id]}},_remove:function(b){for(var a in b.groups){if(a&&this.ids[a]&&this.ids[a][b.id]){delete this.ids[a][b.id]}}delete this.handleIds[b.id]},regHandle:function(b,a){if(!this.handleIds[b]){this.handleIds[b]={}}this.handleIds[b][a]=a},isDragDrop:function(a){return(this.getDDById(a))?true:false},getRelated:function(g,b){var e=[],d,c,a;for(d in g.groups){for(c in this.ids[d]){a=this.ids[d][c];if(!this.isTypeOfDD(a)){continue}if(!b||a.isTarget){e[e.length]=a}}}return e},isLegalTarget:function(e,d){var b=this.getRelated(e,true),c,a;for(c=0,a=b.length;c<a;++c){if(b[c].id==d.id){return true}}return false},isTypeOfDD:function(a){return(a&&a.__ygDragDrop)},isHandle:function(b,a){return(this.handleIds[b]&&this.handleIds[b][a])},getDDById:function(d){var c=this,b,a;for(b in this.ids){a=this.ids[b][d];if(a instanceof Ext.dd.DDTarget){return a}}return null},handleMouseDown:function(c,b){if(Ext.tip.QuickTipManager){Ext.tip.QuickTipManager.ddDisable()}if(this.dragCurrent){this.handleMouseUp(c)}this.currentTarget=c.getTarget();this.dragCurrent=b;var a=b.getEl();if(Ext.isIE&&a.setCapture){a.setCapture()}this.startX=c.getPageX();this.startY=c.getPageY();this.deltaX=this.startX-a.offsetLeft;this.deltaY=this.startY-a.offsetTop;this.dragThreshMet=false;this.clickTimeout=setTimeout(function(){var d=Ext.dd.DragDropManager;d.startDrag(d.startX,d.startY)},this.clickTimeThresh)},startDrag:function(a,b){clearTimeout(this.clickTimeout);if(this.dragCurrent){this.dragCurrent.b4StartDrag(a,b);this.dragCurrent.startDrag(a,b)}this.dragThreshMet=true},handleMouseUp:function(b){var a=this.dragCurrent;if(Ext.tip&&Ext.tip.QuickTipManager){Ext.tip.QuickTipManager.ddEnable()}if(!a){return}if(Ext.isIE&&document.releaseCapture){document.releaseCapture()}clearTimeout(this.clickTimeout);if(this.dragThreshMet){this.fireEvents(b,true)}this.stopDrag(b);this.stopEvent(b)},stopEvent:function(a){if(this.stopPropagation){a.stopPropagation()}if(this.preventDefault){a.preventDefault()}},stopDrag:function(a){if(this.dragCurrent){if(this.dragThreshMet){this.dragCurrent.b4EndDrag(a);this.dragCurrent.endDrag(a)}this.dragCurrent.onMouseUp(a)}this.dragCurrent=null;this.dragOvers={}},handleMouseMove:function(d){var c=this,b,a;if(!c.dragCurrent){return true}if(!c.dragThreshMet){b=Math.abs(c.startX-d.getPageX());a=Math.abs(c.startY-d.getPageY());if(b>c.clickPixelThresh||a>c.clickPixelThresh){c.startDrag(c.startX,c.startY)}}if(c.dragThreshMet){c.dragCurrent.b4Drag(d);c.dragCurrent.onDrag(d);if(!c.dragCurrent.moveOnly){c.fireEvents(d,false)}}c.stopEvent(d);return true},fireEvents:function(n,q){var p=this,k=p.dragCurrent,r=n.getPoint(),b,t,d=[],a=[],g=[],l=[],j=[],c=[],o,h,m,s;if(!k||k.isLocked()){return}for(h in p.dragOvers){b=p.dragOvers[h];if(!p.isTypeOfDD(b)){continue}if(!this.isOverTarget(r,b,p.mode)){g.push(b)}a[h]=true;delete p.dragOvers[h]}for(s in k.groups){if("string"!=typeof s){continue}for(h in p.ids[s]){b=p.ids[s][h];if(p.isTypeOfDD(b)&&(t=b.getEl())&&(b.isTarget)&&(!b.isLocked())&&(Ext.fly(t).isVisible(true))&&((b!=k)||(k.ignoreSelf===false))){if((b.zIndex=p.getZIndex(t))!==-1){o=true}d.push(b)}}}if(o){Ext.Array.sort(d,p.byZIndex)}for(h=0,m=d.length;h<m;h++){b=d[h];if(p.isOverTarget(r,b,p.mode)){if(q){j.push(b)}else{if(!a[b.id]){c.push(b)}else{l.push(b)}p.dragOvers[b.id]=b}if(!p.notifyOccluded){break}}}if(p.mode){if(g.length){k.b4DragOut(n,g);k.onDragOut(n,g)}if(c.length){k.onDragEnter(n,c)}if(l.length){k.b4DragOver(n,l);k.onDragOver(n,l)}if(j.length){k.b4DragDrop(n,j);k.onDragDrop(n,j)}}else{for(h=0,m=g.length;h<m;++h){k.b4DragOut(n,g[h].id);k.onDragOut(n,g[h].id)}for(h=0,m=c.length;h<m;++h){k.onDragEnter(n,c[h].id)}for(h=0,m=l.length;h<m;++h){k.b4DragOver(n,l[h].id);k.onDragOver(n,l[h].id)}for(h=0,m=j.length;h<m;++h){k.b4DragDrop(n,j[h].id);k.onDragDrop(n,j[h].id)}}if(q&&!j.length){k.onInvalidDrop(n)}},getZIndex:function(b){var a=document.body,c,d=-1;b=Ext.getDom(b);while(b!==a){if(!isNaN(c=Number(Ext.fly(b).getStyle("zIndex")))){d=c}b=b.parentNode}return d},byZIndex:function(b,a){return b.zIndex<a.zIndex},getBestMatch:function(c){var e=null,b=c.length,d,a;if(b==1){e=c[0]}else{for(d=0;d<b;++d){a=c[d];if(a.cursorIsOver){e=a;break}else{if(!e||e.overlap.getArea()<a.overlap.getArea()){e=a}}}}return e},refreshCache:function(b){var a,c,d,e;for(a in b){if("string"!=typeof a){continue}for(c in this.ids[a]){d=this.ids[a][c];if(this.isTypeOfDD(d)){e=this.getLocation(d);if(e){this.locationCache[d.id]=e}else{delete this.locationCache[d.id]}}}}},verifyEl:function(b){if(b){var a;if(Ext.isIE){try{a=b.offsetParent}catch(c){}}else{a=b.offsetParent}if(a){return true}}return false},getLocation:function(i){if(!this.isTypeOfDD(i)){return null}if(i.getRegion){return i.getRegion()}var g=i.getEl(),m,d,c,o,n,p,a,k,h;try{m=Ext.Element.getXY(g)}catch(j){}if(!m){return null}d=m[0];c=d+g.offsetWidth;o=m[1];n=o+g.offsetHeight;p=o-i.padding[0];a=c+i.padding[1];k=n+i.padding[2];h=d-i.padding[3];return new Ext.util.Region(p,a,k,h)},isOverTarget:function(j,a,c){var e=this.locationCache[a.id],i,g,b,d,h;if(!e||!this.useCache){e=this.getLocation(a);this.locationCache[a.id]=e}if(!e){return false}a.cursorIsOver=e.contains(j);i=this.dragCurrent;if(!i||!i.getTargetCoord||(!c&&!i.constrainX&&!i.constrainY)){return a.cursorIsOver}a.overlap=null;g=i.getTargetCoord(j.x,j.y);b=i.getDragEl();d=new Ext.util.Region(g.y,g.x+b.offsetWidth,g.y+b.offsetHeight,g.x);h=d.intersect(e);if(h){a.overlap=h;return(c)?true:a.cursorIsOver}else{return false}},_onUnload:function(b,a){Ext.dd.DragDropManager.unregAll()},unregAll:function(){if(this.dragCurrent){this.stopDrag();this.dragCurrent=null}this._execOnAll("unreg",[]);for(var a in this.elementCache){delete this.elementCache[a]}this.elementCache={};this.ids={}},elementCache:{},getElWrapper:function(b){var a=this.elementCache[b];if(!a||!a.el){a=this.elementCache[b]=new this.ElementWrapper(Ext.getDom(b))}return a},getElement:function(a){return Ext.getDom(a)},getCss:function(b){var a=Ext.getDom(b);return(a)?a.style:null},ElementWrapper:function(a){this.el=a||null;this.id=this.el&&a.id;this.css=this.el&&a.style},getPosX:function(a){return Ext.Element.getX(a)},getPosY:function(a){return Ext.Element.getY(a)},swapNode:function(c,a){if(c.swapNode){c.swapNode(a)}else{var d=a.parentNode,b=a.nextSibling;if(b==c){d.insertBefore(c,a)}else{if(a==c.nextSibling){d.insertBefore(a,c)}else{c.parentNode.replaceChild(a,c);d.insertBefore(c,b)}}}},getScroll:function(){var d=window.document,e=d.documentElement,a=d.body,c=0,b=0;if(Ext.isGecko4){c=window.scrollYOffset;b=window.scrollXOffset}else{if(e&&(e.scrollTop||e.scrollLeft)){c=e.scrollTop;b=e.scrollLeft}else{if(a){c=a.scrollTop;b=a.scrollLeft}}}return{top:c,left:b}},getStyle:function(b,a){return Ext.fly(b).getStyle(a)},getScrollTop:function(){return this.getScroll().top},getScrollLeft:function(){return this.getScroll().left},moveToEl:function(a,c){var b=Ext.Element.getXY(c);Ext.Element.setXY(a,b)},numericSort:function(d,c){return(d-c)},_timeoutCount:0,_addListeners:function(){if(document){this._onLoad()}else{if(this._timeoutCount<=2000){setTimeout(this._addListeners,10);if(document&&document.body){this._timeoutCount+=1}}}},handleWasClicked:function(a,c){if(this.isHandle(c,a.id)){return true}else{var b=a.parentNode;while(b){if(this.isHandle(c,b.id)){return true}else{b=b.parentNode}}}return false}},function(){this._addListeners()});Ext.define("Ext.layout.container.Box",{alias:["layout.box"],extend:"Ext.layout.container.Container",alternateClassName:"Ext.layout.BoxLayout",requires:["Ext.layout.container.boxOverflow.None","Ext.layout.container.boxOverflow.Menu","Ext.layout.container.boxOverflow.Scroller","Ext.util.Format","Ext.dd.DragDropManager"],defaultMargins:{top:0,right:0,bottom:0,left:0},padding:0,pack:"start",flex:undefined,stretchMaxPartner:undefined,type:"box",scrollOffset:0,itemCls:Ext.baseCSSPrefix+"box-item",targetCls:Ext.baseCSSPrefix+"box-layout-ct",innerCls:Ext.baseCSSPrefix+"box-inner",availableSpaceOffset:0,reserveOffset:true,manageMargins:true,childEls:["innerCt","targetEl"],renderTpl:["{%var oc,l=values.$comp.layout,oh=l.overflowHandler;","if (oh.getPrefixConfig!==Ext.emptyFn) {","if(oc=oh.getPrefixConfig())dh.generateMarkup(oc, out)","}%}",'<div id="{ownerId}-innerCt" class="{[l.innerCls]} {[oh.getOverflowCls()]}" role="presentation">','<div id="{ownerId}-targetEl" style="position:absolute;',"width:20000px;","left:0px;top:0px;",'height:1px">',"{%this.renderBody(out, values)%}","</div>","</div>","{%if (oh.getSuffixConfig!==Ext.emptyFn) {","if(oc=oh.getSuffixConfig())dh.generateMarkup(oc, out)","}%}",{disableFormats:true,definitions:"var dh=Ext.DomHelper;"}],constructor:function(a){var c=this,b;c.callParent(arguments);c.flexSortFn=Ext.Function.bind(c.flexSort,c);c.initOverflowHandler();b=typeof c.padding;if(b=="string"||b=="number"){c.padding=Ext.util.Format.parseBox(c.padding);c.padding.height=c.padding.top+c.padding.bottom;c.padding.width=c.padding.left+c.padding.right}},getNames:function(){return this.names},_percentageRe:/^\s*(\d+(?:\.\d*)?)\s*[%]\s*$/,getItemSizePolicy:function(m,n){var j=this,h=j.sizePolicy,g=j.align,e=m.flex,k=g,i=j.names,a=m[i.width],l=m[i.height],c=j._percentageRe,b=c.test(a),d=(g=="stretch");if((d||e||b)&&!n){n=j.owner.getSizeModel()}if(d){if(!c.test(l)&&n[i.height].shrinkWrap){k="stretchmax"}}else{if(g!="stretchmax"){if(c.test(l)){k="stretch"}else{k=""}}}if(e||b){if(!n[i.width].shrinkWrap){h=h.flex}}return h[k]},flexSort:function(d,c){var e=this.getNames().maxWidth,g=Infinity;d=d.target[e]||g;c=c.target[e]||g;if(!isFinite(d)&&!isFinite(c)){return 0}return d-c},isItemBoxParent:function(a){return true},isItemShrinkWrap:function(a){return true},minSizeSortFn:function(d,c){return c.available-d.available},roundFlex:function(a){return Math.ceil(a)},beginCollapse:function(b){var a=this;if(a.direction==="vertical"&&b.collapsedVertical()){b.collapseMemento.capture(["flex"]);delete b.flex}else{if(a.direction==="horizontal"&&b.collapsedHorizontal()){b.collapseMemento.capture(["flex"]);delete b.flex}}},beginExpand:function(a){a.collapseMemento.restore(["flex"])},beginLayout:function(c){var b=this,e=b.owner.stretchMaxPartner,a=b.innerCt.dom.style,d=b.getNames();c.boxNames=d;b.overflowHandler.beginLayout(c);if(typeof e==="string"){e=Ext.getCmp(e)||b.owner.query(e)[0]}c.stretchMaxPartner=e&&c.context.getCmp(e);b.callParent(arguments);c.innerCtContext=c.getEl("innerCt",b);b.scrollParallel=!!(b.owner.autoScroll||b.owner[d.overflowX]);b.scrollPerpendicular=!!(b.owner.autoScroll||b.owner[d.overflowY]);if(b.scrollParallel){b.scrollPos=b.owner.getTargetEl().dom[d.scrollLeft]}a.width="";a.height=""},beginLayoutCycle:function(e,a){var d=this,h=d.align,g=e.boxNames,b=d.pack,c=g.heightModel;d.overflowHandler.beginLayoutCycle(e,a);d.callParent(arguments);e.parallelSizeModel=e[g.widthModel];e.perpendicularSizeModel=e[c];e.boxOptions={align:h={stretch:h=="stretch",stretchmax:h=="stretchmax",center:h==g.center},pack:b={center:b=="center",end:b=="end"}};if(h.stretch&&e.perpendicularSizeModel.shrinkWrap){h.stretchmax=true;h.stretch=false}h.nostretch=!(h.stretch||h.stretchmax);if(e.parallelSizeModel.shrinkWrap){b.center=b.end=false}d.cacheFlexes(e);if(Ext.isWebKit){d.targetEl.setWidth(20000)}},cacheFlexes:function(k){var u=this,l=k.boxNames,a=l.widthModel,d=l.heightModel,c=k.boxOptions.align.nostretch,o=0,b=k.childItems,q=b.length,s=[],m=0,j=l.minWidth,g=u._percentageRe,r=0,t=0,e,n,p,h;while(q--){n=b[q];e=n.target;if(n[a].calculated){n.flex=p=e.flex;if(p){o+=p;s.push(n);m+=e[j]||0}else{h=g.exec(e[l.width]);n.percentageParallel=parseFloat(h[1])/100;++r}}if(c&&n[d].calculated){h=g.exec(e[l.height]);n.percentagePerpendicular=parseFloat(h[1])/100;++t}}k.flexedItems=s;k.flexedMinSize=m;k.totalFlex=o;k.percentageWidths=r;k.percentageHeights=t;Ext.Array.sort(s,u.flexSortFn)},calculate:function(d){var b=this,a=b.getContainerSize(d),g=d.boxNames,c=d.state,e=c.boxPlan||(c.boxPlan={});e.targetSize=a;if(!d.parallelSizeModel.shrinkWrap&&!a[g.gotWidth]){b.done=false;return}if(!c.parallelDone){c.parallelDone=b.calculateParallel(d,g,e)}if(!c.perpendicularDone){c.perpendicularDone=b.calculatePerpendicular(d,g,e)}if(c.parallelDone&&c.perpendicularDone){if(b.owner.dock&&(Ext.isIE6||Ext.isIE7||Ext.isIEQuirks)&&!b.owner.width&&!b.horizontal){e.isIEVerticalDock=true;e.calculatedWidth=e.maxSize+d.getPaddingInfo().width+d.getFrameInfo().width}b.publishInnerCtSize(d,b.reserveOffset?b.availableSpaceOffset:0);if(b.done&&d.childItems.length>1&&d.boxOptions.align.stretchmax&&!c.stretchMaxDone){b.calculateStretchMax(d,g,e);c.stretchMaxDone=true}}else{b.done=false}},calculateParallel:function(k,n,b){var F=this,z=n.width,a=k.childItems,d=n.left,r=n.right,q=n.setWidth,A=a.length,x=k.flexedItems,s=x.length,v=k.boxOptions.pack,m=F.padding,h=b.targetSize[z],B=0,e=m[d],E=e+m[r]+F.scrollOffset+(F.reserveOffset?F.availableSpaceOffset:0),w=Ext.getScrollbarSize()[n.width],u,l,g,y,o,t,D,p,C,c,j;if(w&&F.scrollPerpendicular&&k.parallelSizeModel.shrinkWrap&&!k.boxOptions.align.stretch&&!k.perpendicularSizeModel.shrinkWrap){if(!k.state.perpendicularDone){return false}C=true}for(u=0;u<A;++u){o=a[u];l=o.marginInfo||o.getMarginInfo();B+=l[z];if(!o[n.widthModel].calculated){c=o.getProp(z);E+=c;if(isNaN(E)){return false}}}E+=B;if(k.percentageWidths){j=h-B;if(isNaN(j)){return false}for(u=0;u<A;++u){o=a[u];if(o.percentageParallel){c=Math.ceil(j*o.percentageParallel);c=o.setWidth(c);E+=c}}}if(k.parallelSizeModel.shrinkWrap){b.availableSpace=0;b.tooNarrow=false}else{b.availableSpace=h-E;b.tooNarrow=b.availableSpace<k.flexedMinSize;if(b.tooNarrow&&Ext.getScrollbarSize()[n.height]&&F.scrollParallel&&k.state.perpendicularDone){k.state.perpendicularDone=false;for(u=0;u<A;++u){a[u].invalidate()}}}p=E;g=b.availableSpace;y=k.totalFlex;for(u=0;u<s;u++){o=x[u];t=o.flex;D=F.roundFlex((t/y)*g);D=o[q](D);p+=D;g=Math.max(0,g-D);y-=t}if(v.center){e+=g/2;if(e<0){e=0}}else{if(v.end){e+=g}}for(u=0;u<A;++u){o=a[u];l=o.marginInfo;e+=l[d];o.setProp(n.x,e);e+=l[r]+o.props[z]}p+=k.targetContext.getPaddingInfo()[z];k.state.contentWidth=p;if(C&&(k.peek(n.contentHeight)>b.targetSize[n.height])){p+=w;k[n.hasOverflowY]=true;k.target.componentLayout[n.setWidthInDom]=true;k[n.invalidateScrollY]=(Ext.isStrict&&Ext.isIE8)}k[n.setContentWidth](p);return true},calculatePerpendicular:function(r,v,c){var G=this,a=r.perpendicularSizeModel.shrinkWrap,d=c.targetSize,b=r.childItems,E=b.length,J=Math.max,H=v.height,m=v.setHeight,p=v.top,F=v.y,u=G.padding,w=u[p],h=d[H]-w-u[v.bottom],B=r.boxOptions.align,o=B.stretch,z=B.stretchmax,n=B.center,A=0,g=0,l=Ext.getScrollbarSize().height,I,C,e,t,s,y,x,k,j,q,D;if(o||(n&&!a)){if(isNaN(h)){return false}}if(G.scrollParallel&&c.tooNarrow){if(a){q=true}else{h-=l;c.targetSize[H]-=l}}if(o){y=h}else{for(C=0;C<E;C++){x=b[C];t=(x.marginInfo||x.getMarginInfo())[H];if(!(D=x.percentagePerpendicular)){e=x.getProp(H)}else{++g;if(a){continue}else{e=D*h-t;e=x[v.setHeight](e)}}if(isNaN(A=J(A,e+t,x.target[v.minHeight]||0))){return false}}if(q){A+=l;r[v.hasOverflowX]=true;r.target.componentLayout[v.setHeightInDom]=true;r[v.invalidateScrollX]=(Ext.isStrict&&Ext.isIE8)}k=r.stretchMaxPartner;if(k){r.setProp("maxChildHeight",A);j=k.childItems;if(j&&j.length){A=J(A,k.getProp("maxChildHeight"));if(isNaN(A)){return false}}}r[v.setContentHeight](A+G.padding[H]+r.targetContext.getPaddingInfo()[H]);if(q){A-=l}c.maxSize=A;if(z){y=A}else{if(n||g){y=a?A:J(h,A);y-=r.innerCtContext.getBorderInfo()[H]}}}for(C=0;C<E;C++){x=b[C];t=x.marginInfo||x.getMarginInfo();I=w+t[p];if(o){x[m](y-t[H])}else{D=x.percentagePerpendicular;if(a&&D){t=x.marginInfo||x.getMarginInfo();e=D*y-t[H];e=x.setHeight(e)}if(n){s=y-x.props[H];if(s>0){I=w+Math.round(s/2)}}}x.setProp(F,I)}return true},calculateStretchMax:function(d,k,m){var l=this,h=k.height,n=k.width,g=d.childItems,b=g.length,o=m.maxSize,a=l.onBeforeInvalidateChild,q=l.onAfterInvalidateChild,p,j,e,c;for(e=0;e<b;++e){p=g[e];j=p.props;c=o-p.getMarginInfo()[h];if(c!=j[h]||p[k.heightModel].constrained){p.invalidate({before:a,after:q,layout:l,childWidth:j[n],childHeight:c,childX:j.x,childY:j.y,names:k})}}},completeLayout:function(b){var j=this,i=b.boxNames,h=b.invalidateScrollX,g=b.invalidateScrollY,d,a,e,c,k;j.overflowHandler.completeLayout(b);if(h||g){a=j.getTarget();d=a.dom;k=d.style;if(h){e=a.getStyle("overflowX");if(e=="auto"){e=k.overflowX;k.overflowX="scroll"}else{h=false}}if(g){c=a.getStyle("overflowY");if(c=="auto"){c=k.overflowY;k.overflowY="scroll"}else{g=false}}if(h||g){d.scrollWidth;if(h){k.overflowX=e}if(g){k.overflowY=c}}}if(j.scrollParallel){j.owner.getTargetEl().dom[i.scrollLeft]=j.scrollPos}},finishedLayout:function(a){this.overflowHandler.finishedLayout(a);this.callParent(arguments);if(Ext.isWebKit){this.targetEl.setWidth(a.innerCtContext.props.width)}},onBeforeInvalidateChild:function(b,a){var c=a.names.heightModel;if(!b[c].constrainedMax){b[c]=Ext.layout.SizeModel.calculated}},onAfterInvalidateChild:function(d,c){var g=c.names,e=Ext.getScrollbarSize(),a=c.childHeight,b=c.childWidth;d.setProp("x",c.childX);d.setProp("y",c.childY);if(d[g.heightModel].calculated){d[g.setHeight](a)}if(d[g.widthModel].calculated){d[g.setWidth](b)}},publishInnerCtSize:function(a,d){var i=this,h=a.boxNames,g=h.height,k=h.width,e=a.boxOptions.align,o=i.owner.dock,l=i.padding,j=a.state.boxPlan,c=j.targetSize,n=c[g],p=a.innerCtContext,b=(a.parallelSizeModel.shrinkWrap||(j.tooNarrow&&i.scrollParallel)?a.state.contentWidth:c[k])-(d||0),m;if(e.stretch){m=n}else{m=j.maxSize+l[h.top]+l[h.bottom]+p.getBorderInfo()[g];if(!a.perpendicularSizeModel.shrinkWrap&&e.center){m=Math.max(n,m)}}p[h.setWidth](b);p[h.setHeight](m);if(isNaN(b+m)){i.done=false}if(j.calculatedWidth&&(o=="left"||o=="right")){a.setWidth(j.calculatedWidth,true,true)}},onRemove:function(a){var b=this;b.callParent(arguments);if(b.overflowHandler){b.overflowHandler.onRemove(a)}if(a.layoutMarginCap==b.id){delete a.layoutMarginCap}},initOverflowHandler:function(){var d=this,c=d.overflowHandler,b,a;if(typeof c=="string"){c={type:c}}b="None";if(c&&c.type!==undefined){b=c.type}a=Ext.layout.container.boxOverflow[b];if(a[d.type]){a=a[d.type]}d.overflowHandler=Ext.create("Ext.layout.container.boxOverflow."+b,d,c)},getRenderTarget:function(){return this.targetEl},getElementTarget:function(){return this.innerCt},destroy:function(){Ext.destroy(this.innerCt,this.overflowHandler);this.callParent(arguments)}});Ext.define("Ext.layout.container.HBox",{alias:["layout.hbox"],extend:"Ext.layout.container.Box",alternateClassName:"Ext.layout.HBoxLayout",align:"top",type:"hbox",direction:"horizontal",horizontal:true,names:{lr:"lr",left:"left",leftCap:"Left",right:"right",position:"left",width:"width",contentWidth:"contentWidth",minWidth:"minWidth",maxWidth:"maxWidth",widthCap:"Width",widthModel:"widthModel",widthIndex:0,x:"x",scrollLeft:"scrollLeft",overflowX:"overflowX",hasOverflowX:"hasOverflowX",invalidateScrollX:"invalidateScrollX",center:"middle",top:"top",topPosition:"top",bottom:"bottom",height:"height",contentHeight:"contentHeight",minHeight:"minHeight",maxHeight:"maxHeight",heightCap:"Height",heightModel:"heightModel",heightIndex:1,y:"y",scrollTop:"scrollTop",overflowY:"overflowY",hasOverflowY:"hasOverflowY",invalidateScrollY:"invalidateScrollY",getWidth:"getWidth",getHeight:"getHeight",setWidth:"setWidth",setHeight:"setHeight",gotWidth:"gotWidth",gotHeight:"gotHeight",setContentWidth:"setContentWidth",setContentHeight:"setContentHeight",setWidthInDom:"setWidthInDom",setHeightInDom:"setHeightInDom"},sizePolicy:{flex:{"":{setsWidth:1,setsHeight:0},stretch:{setsWidth:1,setsHeight:1},stretchmax:{readsHeight:1,setsWidth:1,setsHeight:1}},"":{setsWidth:0,setsHeight:0},stretch:{setsWidth:0,setsHeight:1},stretchmax:{readsHeight:1,setsWidth:0,setsHeight:1}}});Ext.define("Ext.layout.container.VBox",{alias:["layout.vbox"],extend:"Ext.layout.container.Box",alternateClassName:"Ext.layout.VBoxLayout",align:"left",type:"vbox",direction:"vertical",horizontal:false,names:{lr:"tb",left:"top",leftCap:"Top",right:"bottom",position:"top",width:"height",contentWidth:"contentHeight",minWidth:"minHeight",maxWidth:"maxHeight",widthCap:"Height",widthModel:"heightModel",widthIndex:1,x:"y",scrollLeft:"scrollTop",overflowX:"overflowY",hasOverflowX:"hasOverflowY",invalidateScrollX:"invalidateScrollY",center:"center",top:"left",topPosition:"left",bottom:"right",height:"width",contentHeight:"contentWidth",minHeight:"minWidth",maxHeight:"maxWidth",heightCap:"Width",heightModel:"widthModel",heightIndex:0,y:"x",scrollTop:"scrollLeft",overflowY:"overflowX",hasOverflowY:"hasOverflowX",invalidateScrollY:"invalidateScrollX",getWidth:"getHeight",getHeight:"getWidth",setWidth:"setHeight",setHeight:"setWidth",gotWidth:"gotHeight",gotHeight:"gotWidth",setContentWidth:"setContentHeight",setContentHeight:"setContentWidth",setWidthInDom:"setHeightInDom",setHeightInDom:"setWidthInDom"},sizePolicy:{flex:{"":{setsWidth:0,setsHeight:1},stretch:{setsWidth:1,setsHeight:1},stretchmax:{readsWidth:1,setsWidth:1,setsHeight:1}},"":{setsWidth:0,setsHeight:0},stretch:{setsWidth:1,setsHeight:0},stretchmax:{readsWidth:1,setsWidth:1,setsHeight:0}}});Ext.define("Ext.toolbar.Toolbar",{extend:"Ext.container.Container",requires:["Ext.toolbar.Fill","Ext.layout.container.HBox","Ext.layout.container.VBox"],uses:["Ext.toolbar.Separator"],alias:"widget.toolbar",alternateClassName:"Ext.Toolbar",isToolbar:true,baseCls:Ext.baseCSSPrefix+"toolbar",ariaRole:"toolbar",defaultType:"button",vertical:false,enableOverflow:false,menuTriggerCls:Ext.baseCSSPrefix+"toolbar-more-icon",trackMenus:true,itemCls:Ext.baseCSSPrefix+"toolbar-item",statics:{shortcuts:{"-":"tbseparator"," ":"tbspacer"},shortcutsHV:{0:{"->":{xtype:"tbfill",height:0}},1:{"->":{xtype:"tbfill",width:0}}}},initComponent:function(){var b=this,a;if(!b.layout&&b.enableOverflow){b.layout={overflowHandler:"Menu"}}if(b.dock==="right"||b.dock==="left"){b.vertical=true}b.layout=Ext.applyIf(Ext.isString(b.layout)?{type:b.layout}:b.layout||{},{type:b.vertical?"vbox":"hbox",align:b.vertical?"stretchmax":"middle"});if(b.vertical){b.addClsWithUI("vertical")}if(b.ui==="footer"){b.ignoreBorderManagement=true}b.callParent();b.addEvents("overflowchange")},getRefItems:function(a){var e=this,b=e.callParent(arguments),d=e.layout,c;if(a&&e.enableOverflow){c=d.overflowHandler;if(c&&c.menu){b=b.concat(c.menu.getRefItems(a))}}return b},lookupComponent:function(d){if(typeof d=="string"){var b=Ext.toolbar.Toolbar,a=b.shortcutsHV[this.vertical?1:0][d]||b.shortcuts[d];if(typeof a=="string"){d={xtype:a}}else{if(a){d=Ext.apply({},a)}else{d={xtype:"tbtext",text:d}}}this.applyDefaults(d)}return this.callParent(arguments)},applyDefaults:function(a){if(!Ext.isString(a)){a=this.callParent(arguments)}return a},trackMenu:function(c,a){if(this.trackMenus&&c.menu){var d=a?"mun":"mon",b=this;b[d](c,"mouseover",b.onButtonOver,b);b[d](c,"menushow",b.onButtonMenuShow,b);b[d](c,"menuhide",b.onButtonMenuHide,b)}},constructButton:function(a){return a.events?a:Ext.widget(a.split?"splitbutton":this.defaultType,a)},onBeforeAdd:function(a){if(a.is("field")||(a.is("button")&&this.ui!="footer")){a.ui=a.ui+"-toolbar"}if(a instanceof Ext.toolbar.Separator){a.setUI((this.vertical)?"vertical":"horizontal")}this.callParent(arguments)},onAdd:function(a){this.callParent(arguments);this.trackMenu(a)},onRemove:function(a){this.callParent(arguments);this.trackMenu(a,true)},getChildItemsToDisable:function(){return this.items.getRange()},onButtonOver:function(a){if(this.activeMenuBtn&&this.activeMenuBtn!=a){this.activeMenuBtn.hideMenu();a.showMenu();this.activeMenuBtn=a}},onButtonMenuShow:function(a){this.activeMenuBtn=a},onButtonMenuHide:function(a){delete this.activeMenuBtn}});Ext.define("Ext.container.DockingContainer",{requires:["Ext.util.MixedCollection","Ext.Element"],isDockingContainer:true,defaultDockWeights:{top:{render:1,visual:1},left:{render:3,visual:5},right:{render:5,visual:7},bottom:{render:7,visual:3}},dockOrder:{top:-1,left:-1,right:1,bottom:1},addDocked:function(a,g){var e=this,b=0,d,c;a=e.prepareItems(a);c=a.length;for(;b<c;b++){d=a[b];d.dock=d.dock||"top";if(g!==undefined){e.dockedItems.insert(g+b,d)}else{e.dockedItems.add(d)}if(d.onAdded!==Ext.emptyFn){d.onAdded(e,b)}if(e.onDockedAdd!==Ext.emptyFn){e.onDockedAdd(d)}}if(e.rendered&&!e.suspendLayout){e.updateLayout()}return a},destroyDockedItems:function(){var a=this.dockedItems,b;if(a){while((b=a.first())){this.removeDocked(b,true)}}},doRenderDockedItems:function(c,g,h){var e=g.$comp,d=e.componentLayout,b,a;if(d.getDockedItems&&!g.$skipDockedItems){b=d.getDockedItems("render",!h);a=b&&d.getItemsRenderTree(b);if(a){Ext.DomHelper.generateMarkup(a,c)}}},getDockedComponent:function(a){if(Ext.isObject(a)){a=a.getItemId()}return this.dockedItems.get(a)},getDockedItems:function(a,c){var b=this.getComponentLayout().getDockedItems("render",c);if(a&&b.length){b=Ext.ComponentQuery.query(a,b)}return b},getDockingRefItems:function(b,e){var a=b&&"*,* *",d=this.getDockedItems(a,true),c;d.push.apply(d,e);c=this.getDockedItems(a,false);d.push.apply(d,c);return d},initDockingItems:function(){var b=this,a=b.dockedItems;b.dockedItems=new Ext.util.AbstractMixedCollection(false,b.getComponentId);if(a){b.addDocked(a)}},insertDocked:function(b,a){this.addDocked(a,b)},onDockedAdd:Ext.emptyFn,onDockedRemove:Ext.emptyFn,removeDocked:function(e,b){var d=this,c,a;if(!d.dockedItems.contains(e)){return e}c=d.componentLayout;a=c&&d.rendered;if(a){c.onRemove(e)}d.dockedItems.remove(e);e.onRemoved();d.onDockedRemove(e);if(b===true||(b!==false&&d.autoDestroy)){e.destroy()}else{if(a){c.afterRemove(e)}}if(!d.destroying&&!d.suspendLayout){d.updateLayout()}return e},setupDockingRenderTpl:function(a){a.renderDockedItems=this.doRenderDockedItems}});Ext.define("Ext.panel.AbstractPanel",{extend:"Ext.container.Container",mixins:{docking:"Ext.container.DockingContainer"},requires:["Ext.util.MixedCollection","Ext.Element","Ext.toolbar.Toolbar"],baseCls:Ext.baseCSSPrefix+"panel",isPanel:true,componentLayout:"dock",childEls:["body"],renderTpl:["{% this.renderDockedItems(out,values,0); %}",(Ext.isIE6||Ext.isIE7||Ext.isIEQuirks)?"<div></div>":"",'<div id="{id}-body" class="{baseCls}-body<tpl if="bodyCls"> {bodyCls}</tpl>',' {baseCls}-body-{ui}<tpl if="uiCls">','<tpl for="uiCls"> {parent.baseCls}-body-{parent.ui}-{.}</tpl>','</tpl>"<tpl if="bodyStyle"> style="{bodyStyle}"</tpl>>',"{%this.renderContainer(out,values);%}","</div>","{% this.renderDockedItems(out,values,1); %}"],bodyPosProps:{x:"x",y:"y"},border:true,emptyArray:[],initComponent:function(){var a=this;if(a.frame&&a.border&&a.bodyBorder===undefined){a.bodyBorder=false}if(a.frame&&a.border&&(a.bodyBorder===false||a.bodyBorder===0)){a.manageBodyBorders=true}a.callParent()},beforeDestroy:function(){this.destroyDockedItems();this.callParent()},initItems:function(){this.callParent();this.initDockingItems()},initRenderData:function(){var a=this,b=a.callParent();a.initBodyStyles();a.protoBody.writeTo(b);delete a.protoBody;return b},getComponent:function(a){var b=this.callParent(arguments);if(b===undefined&&!Ext.isNumber(a)){b=this.getDockedComponent(a)}return b},getProtoBody:function(){var b=this,a=b.protoBody;if(!a){b.protoBody=a=new Ext.util.ProtoElement({cls:b.bodyCls,style:b.bodyStyle,clsProp:"bodyCls",styleProp:"bodyStyle",styleIsText:true})}return a},initBodyStyles:function(){var c=this,a=c.getProtoBody(),b=Ext.Element;if(c.bodyPadding!==undefined){a.setStyle("padding",b.unitizeBox((c.bodyPadding===true)?5:c.bodyPadding))}if(c.frame&&c.bodyBorder){if(!Ext.isNumber(c.bodyBorder)){c.bodyBorder=1}a.setStyle("border-width",b.unitizeBox(c.bodyBorder))}},getCollapsedDockedItems:function(){var a=this;return a.collapseMode=="placeholder"?a.emptyArray:[a.getReExpander()]},setBodyStyle:function(b,d){var c=this,a=c.rendered?c.body:c.getProtoBody();if(Ext.isFunction(b)){b=b()}if(arguments.length==1){if(Ext.isString(b)){b=Ext.Element.parseStyles(b)}a.setStyle(b)}else{a.setStyle(b,d)}return c},addBodyCls:function(b){var c=this,a=c.rendered?c.body:c.getProtoBody();a.addCls(b);return c},removeBodyCls:function(b){var c=this,a=c.rendered?c.body:c.getProtoBody();a.removeCls(b);return c},addUIClsToElement:function(b){var c=this,a=c.callParent(arguments);c.addBodyCls([Ext.baseCSSPrefix+b,c.baseCls+"-body-"+b,c.baseCls+"-body-"+c.ui+"-"+b]);return a},removeUIClsFromElement:function(b){var c=this,a=c.callParent(arguments);c.removeBodyCls([Ext.baseCSSPrefix+b,c.baseCls+"-body-"+b,c.baseCls+"-body-"+c.ui+"-"+b]);return a},addUIToElement:function(){var a=this;a.callParent(arguments);a.addBodyCls(a.baseCls+"-body-"+a.ui)},removeUIFromElement:function(){var a=this;a.callParent(arguments);a.removeBodyCls(a.baseCls+"-body-"+a.ui)},getTargetEl:function(){return this.body},getRefItems:function(a){var b=this.callParent(arguments);return this.getDockingRefItems(a,b)},setupRenderTpl:function(a){this.callParent(arguments);this.setupDockingRenderTpl(a)}});Ext.define("Ext.layout.component.Body",{alias:["layout.body"],extend:"Ext.layout.component.Auto",type:"body",beginLayout:function(a){this.callParent(arguments);a.bodyContext=a.getEl("body")},calculateOwnerHeightFromContentHeight:function(c,b){var a=this.callParent(arguments);if(c.targetContext!=c){a+=c.getPaddingInfo().height}return a},calculateOwnerWidthFromContentWidth:function(c,a){var b=this.callParent(arguments);if(c.targetContext!=c){b+=c.getPaddingInfo().width}return b},measureContentWidth:function(a){return a.bodyContext.setWidth(a.bodyContext.el.dom.offsetWidth,false)},measureContentHeight:function(a){return a.bodyContext.setHeight(a.bodyContext.el.dom.offsetHeight,false)},publishInnerHeight:function(c,a){var d=a-c.getFrameInfo().height,b=c.targetContext;if(b!=c){d-=c.getPaddingInfo().height}return c.bodyContext.setHeight(d,!c.heightModel.natural)},publishInnerWidth:function(d,c){var a=c-d.getFrameInfo().width,b=d.targetContext;if(b!=d){a-=d.getPaddingInfo().width}d.bodyContext.setWidth(a,!d.widthModel.natural)}});Ext.define("Ext.panel.Header",{extend:"Ext.container.Container",uses:["Ext.panel.Tool","Ext.draw.Component","Ext.util.CSS","Ext.layout.component.Body","Ext.Img"],alias:"widget.header",isHeader:true,defaultType:"tool",indicateDrag:false,weight:-1,componentLayout:"body",titleAlign:"left",childEls:["body"],renderTpl:['<div id="{id}-body" class="{baseCls}-body {bodyCls}','<tpl for="uiCls"> {parent.baseCls}-body-{parent.ui}-{.}</tpl>"','<tpl if="bodyStyle"> style="{bodyStyle}"</tpl>>',"{%this.renderContainer(out,values)%}","</div>"],headingTpl:'<span id="{id}-textEl" class="{cls}-text {cls}-text-{ui}">{title}</span>',shrinkWrap:3,initComponent:function(){var b=this,e,d,a,c,g;b.addEvents("click","dblclick");b.indicateDragCls=b.baseCls+"-draggable";b.title=b.title||"&#160;";b.tools=b.tools||[];b.items=b.items||[];b.orientation=b.orientation||"horizontal";b.dock=(b.dock)?b.dock:(b.orientation=="horizontal")?"top":"left";b.addClsWithUI([b.orientation,b.dock]);if(b.indicateDrag){b.addCls(b.indicateDragCls)}if(!Ext.isEmpty(b.iconCls)||!Ext.isEmpty(b.icon)){b.initIconCmp();b.items.push(b.iconCmp)}if(b.orientation=="vertical"){b.layout={type:"vbox",align:"center"};b.textConfig={width:16,cls:b.baseCls+"-text",type:"text",text:b.title,rotate:{degrees:90}};c=b.ui;if(Ext.isArray(c)){c=c[0]}e="."+b.baseCls+"-text-"+c;if(Ext.scopeResetCSS){e="."+Ext.baseCSSPrefix+"reset "+e}d=Ext.util.CSS.getRule(e);if(d){a=d.style}else{a=(g=Ext.resetElement.createChild({style:"position:absolute",cls:b.baseCls+"-text-"+c})).getStyles("fontFamily","fontWeight","fontSize","color");g.remove()}if(a){Ext.apply(b.textConfig,{"font-family":a.fontFamily,"font-weight":a.fontWeight,"font-size":a.fontSize,fill:a.color})}b.titleCmp=new Ext.draw.Component({width:16,ariaRole:"heading",focusable:false,viewBox:false,flex:1,id:b.id+"_hd",autoSize:true,items:b.textConfig,xhooks:{setSize:function(h){this.callParent([h])}},childEls:[{name:"textEl",select:"."+b.baseCls+"-text"}]})}else{b.layout={type:"hbox",align:"middle"};b.titleCmp=new Ext.Component({ariaRole:"heading",focusable:false,noWrap:true,flex:1,id:b.id+"_hd",style:"text-align:"+b.titleAlign,cls:b.baseCls+"-text-container",renderTpl:b.getTpl("headingTpl"),renderData:{title:b.title,cls:b.baseCls,ui:b.ui},childEls:["textEl"]})}b.items.push(b.titleCmp);b.items=b.items.concat(b.tools);b.callParent();b.on({dblclick:b.onDblClick,click:b.onClick,element:"el",scope:b})},initIconCmp:function(){var b=this,a={focusable:false,src:Ext.BLANK_IMAGE_URL,cls:[b.baseCls+"-icon",b.iconCls],id:b.id+"-iconEl",iconCls:b.iconCls};if(!Ext.isEmpty(b.icon)){delete a.iconCls;a.src=b.icon}b.iconCmp=new Ext.Img(a)},afterRender:function(){this.el.unselectable();this.callParent()},addUIClsToElement:function(b){var e=this,a=e.callParent(arguments),d=[e.baseCls+"-body-"+b,e.baseCls+"-body-"+e.ui+"-"+b],g,c;if(e.bodyCls){g=e.bodyCls.split(" ");for(c=0;c<d.length;c++){if(!Ext.Array.contains(g,d[c])){g.push(d[c])}}e.bodyCls=g.join(" ")}else{e.bodyCls=d.join(" ")}return a},removeUIClsFromElement:function(b){var e=this,a=e.callParent(arguments),d=[e.baseCls+"-body-"+b,e.baseCls+"-body-"+e.ui+"-"+b],g,c;if(e.bodyCls){g=e.bodyCls.split(" ");for(c=0;c<d.length;c++){Ext.Array.remove(g,d[c])}e.bodyCls=g.join(" ")}return a},addUIToElement:function(){var b=this,c,a;b.callParent(arguments);a=b.baseCls+"-body-"+b.ui;if(b.rendered){if(b.bodyCls){b.body.addCls(b.bodyCls)}else{b.body.addCls(a)}}else{if(b.bodyCls){c=b.bodyCls.split(" ");if(!Ext.Array.contains(c,a)){c.push(a)}b.bodyCls=c.join(" ")}else{b.bodyCls=a}}if(b.titleCmp&&b.titleCmp.rendered&&b.titleCmp.textEl){b.titleCmp.textEl.addCls(b.baseCls+"-text-"+b.ui)}},removeUIFromElement:function(){var b=this,c,a;b.callParent(arguments);a=b.baseCls+"-body-"+b.ui;if(b.rendered){if(b.bodyCls){b.body.removeCls(b.bodyCls)}else{b.body.removeCls(a)}}else{if(b.bodyCls){c=b.bodyCls.split(" ");Ext.Array.remove(c,a);b.bodyCls=c.join(" ")}else{b.bodyCls=a}}if(b.titleCmp&&b.titleCmp.rendered&&b.titleCmp.textEl){b.titleCmp.textEl.removeCls(b.baseCls+"-text-"+b.ui)}},onClick:function(a){this.fireClickEvent("click",a)},onDblClick:function(a){this.fireClickEvent("dblclick",a)},fireClickEvent:function(a,c){var b="."+Ext.panel.Tool.prototype.baseCls;if(!c.getTarget(b)){this.fireEvent(a,this,c)}},getFocusEl:function(){return this.el},getTargetEl:function(){return this.body||this.frameBody||this.el},setTitle:function(d){var c=this,b,a;if(c.rendered){if(c.titleCmp.rendered){if(c.titleCmp.surface){c.title=d||"";b=c.titleCmp.surface.items.items[0];a=c.titleCmp.surface;a.remove(b);c.textConfig.type="text";c.textConfig.text=d;b=a.add(c.textConfig);b.setAttributes({rotate:{degrees:90}},true);c.titleCmp.autoSizeSurface()}else{c.title=d;c.titleCmp.textEl.update(c.title||"&#160;")}c.titleCmp.updateLayout()}else{c.titleCmp.on({render:function(){c.setTitle(d)},single:true})}}else{c.title=d}},getMinWidth:function(){var e=this,d=e.titleCmp.textEl.dom,a,g=e.tools,b,c;d.style.display="inline";a=d.offsetWidth;d.style.display="";if(g&&(b=g.length)){for(c=0;c<b;c++){if(g[c].el){a+=g[c].el.dom.offsetWidth}}}if(e.iconCmp){a+=e.iconCmp.el.dom.offsetWidth}return a+10},setIconCls:function(a){var b=this,d=!a||!a.length,c=b.iconCmp;b.iconCls=a;if(!b.iconCmp&&!d){b.initIconCmp();b.insert(0,b.iconCmp)}else{if(c){if(d){b.iconCmp.destroy();delete b.iconCmp}else{c.removeCls(c.iconCls);c.addCls(a);c.iconCls=a}}}},setIcon:function(a){var b=this,d=!a||!a.length,c=b.iconCmp;b.icon=a;if(!b.iconCmp&&!d){b.initIconCmp();b.insert(0,b.iconCmp)}else{if(c){if(d){b.iconCmp.destroy();delete b.iconCmp}else{c.setSrc(b.icon)}}}},addTool:function(a){this.tools.push(this.add(a))},onAdd:function(b,a){this.callParent(arguments);if(b instanceof Ext.panel.Tool){b.bindTo(this.ownerCt);this.tools[b.type]=b}},initRenderData:function(){return Ext.applyIf(this.callParent(),{bodyCls:this.bodyCls})}});Ext.define("Ext.fx.target.Target",{isAnimTarget:true,constructor:function(a){this.target=a;this.id=this.getId()},getId:function(){return this.target.id}});Ext.define("Ext.fx.target.Element",{extend:"Ext.fx.target.Target",type:"element",getElVal:function(b,a,c){if(c==undefined){if(a==="x"){c=b.getX()}else{if(a==="y"){c=b.getY()}else{if(a==="scrollTop"){c=b.getScroll().top}else{if(a==="scrollLeft"){c=b.getScroll().left}else{if(a==="height"){c=b.getHeight()}else{if(a==="width"){c=b.getWidth()}else{c=b.getStyle(a)}}}}}}}return c},getAttr:function(a,c){var b=this.target;return[[b,this.getElVal(b,a,c)]]},setAttr:function(l){var g=this.target,k=l.length,n,h,b,e,c,a,d,m;for(e=0;e<k;e++){n=l[e].attrs;for(h in n){if(n.hasOwnProperty(h)){a=n[h].length;for(c=0;c<a;c++){b=n[h][c];d=b[0];m=b[1];if(h==="x"){d.setX(m)}else{if(h==="y"){d.setY(m)}else{if(h==="scrollTop"){d.scrollTo("top",m)}else{if(h==="scrollLeft"){d.scrollTo("left",m)}else{if(h==="width"){d.setWidth(m)}else{if(h==="height"){d.setHeight(m)}else{d.setStyle(h,m)}}}}}}}}}}}});Ext.define("Ext.fx.target.ElementCSS",{extend:"Ext.fx.target.Element",setAttr:function(n,e){var q={attrs:[],duration:[],easing:[]},m=n.length,g,p,k,l,c,b,h,d,a;for(h=0;h<m;h++){p=n[h];c=p.duration;l=p.easing;p=p.attrs;for(k in p){if(Ext.Array.indexOf(q.attrs,k)==-1){q.attrs.push(k.replace(/[A-Z]/g,function(i){return"-"+i.toLowerCase()}));q.duration.push(c+"ms");q.easing.push(l)}}}g=q.attrs.join(",");c=q.duration.join(",");l=q.easing.join(", ");for(h=0;h<m;h++){p=n[h].attrs;for(k in p){a=p[k].length;for(d=0;d<a;d++){b=p[k][d];b[0].setStyle(Ext.supports.CSS3Prefix+"TransitionProperty",e?"":g);b[0].setStyle(Ext.supports.CSS3Prefix+"TransitionDuration",e?"":c);b[0].setStyle(Ext.supports.CSS3Prefix+"TransitionTimingFunction",e?"":l);b[0].setStyle(k,b[1]);if(e){b=b[0].dom.offsetWidth}else{b[0].on(Ext.supports.CSS3TransitionEnd,function(){this.setStyle(Ext.supports.CSS3Prefix+"TransitionProperty",null);this.setStyle(Ext.supports.CSS3Prefix+"TransitionDuration",null);this.setStyle(Ext.supports.CSS3Prefix+"TransitionTimingFunction",null)},b[0],{single:true})}}}}}});Ext.define("Ext.fx.target.CompositeElement",{extend:"Ext.fx.target.Element",isComposite:true,constructor:function(a){a.id=a.id||Ext.id(null,"ext-composite-");this.callParent([a])},getAttr:function(a,h){var b=[],g=this.target.elements,e=g.length,c,d;for(c=0;c<e;c++){d=g[c];if(d){d=this.target.getElement(d);b.push([d,this.getElVal(d,a,h)])}}return b}});Ext.define("Ext.fx.target.CompositeElementCSS",{extend:"Ext.fx.target.CompositeElement",requires:["Ext.fx.target.ElementCSS"],setAttr:function(){return Ext.fx.target.ElementCSS.prototype.setAttr.apply(this,arguments)}});Ext.define("Ext.fx.target.Sprite",{extend:"Ext.fx.target.Target",type:"draw",getFromPrim:function(b,a){var c;switch(a){case"rotate":case"rotation":c=b.attr.rotation;return{x:c.x||0,y:c.y||0,degrees:c.degrees||0};case"scale":case"scaling":c=b.attr.scaling;return{x:c.x||1,y:c.y||1,cx:c.cx||0,cy:c.cy||0};case"translate":case"translation":c=b.attr.translation;return{x:c.x||0,y:c.y||0};default:return b.attr[a]}},getAttr:function(a,b){return[[this.target,b!=undefined?b:this.getFromPrim(this.target,a)]]},setAttr:function(m){var g=m.length,k=[],b,e,p,r,q,o,n,d,c,l,h,a;for(d=0;d<g;d++){b=m[d].attrs;for(e in b){p=b[e];a=p.length;for(c=0;c<a;c++){q=p[c][0];r=p[c][1];if(e==="translate"||e==="translation"){n={x:r.x,y:r.y}}else{if(e==="rotate"||e==="rotation"){l=r.x;if(isNaN(l)){l=null}h=r.y;if(isNaN(h)){h=null}n={degrees:r.degrees,x:l,y:h}}else{if(e==="scale"||e==="scaling"){l=r.x;if(isNaN(l)){l=null}h=r.y;if(isNaN(h)){h=null}n={x:l,y:h,cx:r.cx,cy:r.cy}}else{if(e==="width"||e==="height"||e==="x"||e==="y"){n=parseFloat(r)}else{n=r}}}}o=Ext.Array.indexOf(k,q);if(o==-1){k.push([q,{}]);o=k.length-1}k[o][1][e]=n}}}g=k.length;for(d=0;d<g;d++){k[d][0].setAttributes(k[d][1])}this.target.redraw()}});Ext.define("Ext.fx.target.CompositeSprite",{extend:"Ext.fx.target.Sprite",getAttr:function(a,h){var b=[],g=[].concat(this.target.items),e=g.length,d,c;for(d=0;d<e;d++){c=g[d];b.push([c,h!=undefined?h:this.getFromPrim(c,a)])}return b}});Ext.define("Ext.fx.target.Component",{extend:"Ext.fx.target.Target",type:"component",getPropMethod:{top:function(){return this.getPosition(true)[1]},left:function(){return this.getPosition(true)[0]},x:function(){return this.getPosition()[0]},y:function(){return this.getPosition()[1]},height:function(){return this.getHeight()},width:function(){return this.getWidth()},opacity:function(){return this.el.getStyle("opacity")}},compMethod:{top:"setPosition",left:"setPosition",x:"setPagePosition",y:"setPagePosition",height:"setSize",width:"setSize",opacity:"setOpacity"},getAttr:function(a,b){return[[this.target,b!==undefined?b:this.getPropMethod[a].call(this.target)]]},setAttr:function(t,e,b){var r=this,m=r.target,q=t.length,v,n,a,g,d,p,l,c,s,u,k;for(g=0;g<q;g++){v=t[g].attrs;for(n in v){l=v[n].length;p={setPosition:{},setPagePosition:{},setSize:{},setOpacity:{}};for(d=0;d<l;d++){a=v[n][d];p[r.compMethod[n]].target=a[0];p[r.compMethod[n]][n]=a[1]}if(p.setPosition.target){a=p.setPosition;c=(a.left===undefined)?undefined:parseFloat(a.left);s=(a.top===undefined)?undefined:parseFloat(a.top);a.target.setPosition(c,s)}if(p.setPagePosition.target){a=p.setPagePosition;a.target.setPagePosition(a.x,a.y)}if(p.setSize.target){a=p.setSize;u=(a.width===undefined)?a.target.getWidth():parseFloat(a.width);k=(a.height===undefined)?a.target.getHeight():parseFloat(a.height);if(b||r.dynamic){a.target.setSize(u,k)}else{a.target.el.setSize(u,k)}}if(p.setOpacity.target){a=p.setOpacity;a.target.el.setStyle("opacity",a.opacity)}}}}});Ext.define("Ext.fx.Queue",{requires:["Ext.util.HashMap"],constructor:function(){this.targets=new Ext.util.HashMap();this.fxQueue={}},getFxDefaults:function(a){var b=this.targets.get(a);if(b){return b.fxDefaults}return{}},setFxDefaults:function(a,c){var b=this.targets.get(a);if(b){b.fxDefaults=Ext.apply(b.fxDefaults||{},c)}},stopAnimation:function(b){var d=this,a=d.getFxQueue(b),c=a.length;while(c){a[c-1].end();c--}},getActiveAnimation:function(b){var a=this.getFxQueue(b);return(a&&!!a.length)?a[0]:false},hasFxBlock:function(b){var a=this.getFxQueue(b);return a&&a[0]&&a[0].block},getFxQueue:function(b){if(!b){return false}var c=this,a=c.fxQueue[b],d=c.targets.get(b);if(!d){return false}if(!a){c.fxQueue[b]=[];if(d.type!="element"){d.target.on("destroy",function(){c.fxQueue[b]=[]})}}return c.fxQueue[b]},queueFx:function(d){var c=this,e=d.target,a,b;if(!e){return}a=c.getFxQueue(e.getId());b=a.length;if(b){if(d.concurrent){d.paused=false}else{a[b-1].on("afteranimate",function(){d.paused=false})}}else{d.paused=false}d.on("afteranimate",function(){Ext.Array.remove(a,d);if(d.remove){if(e.type=="element"){var g=Ext.get(e.id);if(g){g.remove()}}}},this);a.push(d)}});Ext.define("Ext.fx.Manager",{singleton:true,requires:["Ext.util.MixedCollection","Ext.fx.target.Element","Ext.fx.target.ElementCSS","Ext.fx.target.CompositeElement","Ext.fx.target.CompositeElementCSS","Ext.fx.target.Sprite","Ext.fx.target.CompositeSprite","Ext.fx.target.Component"],mixins:{queue:"Ext.fx.Queue"},constructor:function(){this.items=new Ext.util.MixedCollection();this.mixins.queue.constructor.call(this)},interval:16,forceJS:true,createTarget:function(d){var b=this,c=!b.forceJS&&Ext.supports.Transitions,a;b.useCSS3=c;if(d){if(d.tagName||Ext.isString(d)||d.isFly){d=Ext.get(d);a=new Ext.fx.target["Element"+(c?"CSS":"")](d)}else{if(d.dom){a=new Ext.fx.target["Element"+(c?"CSS":"")](d)}else{if(d.isComposite){a=new Ext.fx.target["CompositeElement"+(c?"CSS":"")](d)}else{if(d.isSprite){a=new Ext.fx.target.Sprite(d)}else{if(d.isCompositeSprite){a=new Ext.fx.target.CompositeSprite(d)}else{if(d.isComponent){a=new Ext.fx.target.Component(d)}else{if(d.isAnimTarget){return d}else{return null}}}}}}}b.targets.add(a);return a}else{return null}},addAnim:function(c){var b=this.items,a=this.task;b.add(c.id,c);if(!a&&b.length){a=this.task={run:this.runner,interval:this.interval,scope:this};Ext.TaskManager.start(a)}},removeAnim:function(d){var c=this,b=c.items,a=c.task;b.removeAtKey(d.id);if(a&&!b.length){Ext.TaskManager.stop(a);delete c.task}},runner:function(){var d=this,b=d.items.getRange(),c=0,a=b.length,e;d.targetArr={};d.timestamp=new Date();for(;c<a;c++){e=b[c];if(e.isReady()){d.startAnim(e)}}for(c=0;c<a;c++){e=b[c];if(e.isRunning()){d.runAnim(e)}}d.applyPendingAttrs()},startAnim:function(a){a.start(this.timestamp)},runAnim:function(e){if(!e){return}var d=this,b=e.target.getId(),h=d.useCSS3&&e.target.type=="element",a=d.timestamp-e.startTime,c=(a>=e.duration),g,i;g=this.collectTargetData(e,a,h,c);if(h){e.target.setAttr(g.anims[e.id].attributes,true);d.collectTargetData(e,e.duration,h,c);e.paused=true;g=e.target.target;if(e.target.isComposite){g=e.target.target.last()}i={};i[Ext.supports.CSS3TransitionEnd]=e.lastFrame;i.scope=e;i.single=true;g.on(i)}},collectTargetData:function(c,a,e,g){var b=c.target.getId(),d=this.targetArr[b];if(!d){d=this.targetArr[b]={id:b,el:c.target,anims:{}}}d.anims[c.id]={id:c.id,anim:c,elapsed:a,isLastFrame:g,attributes:[{duration:c.duration,easing:(e&&c.reverse)?c.easingFn.reverse().toCSS3():c.easing,attrs:c.runAnim(a)}]};return d},applyPendingAttrs:function(){var e=this.targetArr,g,c,b,d,a;for(c in e){if(e.hasOwnProperty(c)){g=e[c];for(a in g.anims){if(g.anims.hasOwnProperty(a)){b=g.anims[a];d=b.anim;if(b.attributes&&d.isRunning()){g.el.setAttr(b.attributes,false,b.isLastFrame);if(b.isLastFrame){d.lastFrame()}}}}}}}});Ext.define("Ext.fx.Animator",{mixins:{observable:"Ext.util.Observable"},requires:["Ext.fx.Manager"],isAnimator:true,duration:250,delay:0,delayStart:0,dynamic:false,easing:"ease",running:false,paused:false,damper:1,iterations:1,currentIteration:0,keyframeStep:0,animKeyFramesRE:/^(from|to|\d+%?)$/,constructor:function(a){var b=this;a=Ext.apply(b,a||{});b.config=a;b.id=Ext.id(null,"ext-animator-");b.addEvents("beforeanimate","keyframe","afteranimate");b.mixins.observable.constructor.call(b,a);b.timeline=[];b.createTimeline(b.keyframes);if(b.target){b.applyAnimator(b.target);Ext.fx.Manager.addAnim(b)}},sorter:function(d,c){return d.pct-c.pct},createTimeline:function(g){var k=this,n=[],l=k.to||{},c=k.duration,o,a,e,j,m,b,d,h;for(m in g){if(g.hasOwnProperty(m)&&k.animKeyFramesRE.test(m)){h={attrs:Ext.apply(g[m],l)};if(m=="from"){m=0}else{if(m=="to"){m=100}}h.pct=parseInt(m,10);n.push(h)}}Ext.Array.sort(n,k.sorter);j=n.length;for(e=0;e<j;e++){o=(n[e-1])?c*(n[e-1].pct/100):0;a=c*(n[e].pct/100);k.timeline.push({duration:a-o,attrs:n[e].attrs})}},applyAnimator:function(e){var k=this,l=[],o=k.timeline,g=k.reverse,j=o.length,b,h,a,d,n,m,c;if(k.fireEvent("beforeanimate",k)!==false){for(c=0;c<j;c++){b=o[c];n=b.attrs;h=n.easing||k.easing;a=n.damper||k.damper;delete n.easing;delete n.damper;b=new Ext.fx.Anim({target:e,easing:h,damper:a,duration:b.duration,paused:true,to:n});l.push(b)}k.animations=l;k.target=b.target;for(c=0;c<j-1;c++){b=l[c];b.nextAnim=l[c+1];b.on("afteranimate",function(){this.nextAnim.paused=false});b.on("afteranimate",function(){this.fireEvent("keyframe",this,++this.keyframeStep)},k)}l[j-1].on("afteranimate",function(){this.lastFrame()},k)}},start:function(d){var e=this,c=e.delay,b=e.delayStart,a;if(c){if(!b){e.delayStart=d;return}else{a=d-b;if(a<c){return}else{d=new Date(b.getTime()+c)}}}if(e.fireEvent("beforeanimate",e)!==false){e.startTime=d;e.running=true;e.animations[e.keyframeStep].paused=false}},lastFrame:function(){var c=this,a=c.iterations,b=c.currentIteration;b++;if(b<a){c.startTime=new Date();c.currentIteration=b;c.keyframeStep=0;c.applyAnimator(c.target);c.animations[c.keyframeStep].paused=false}else{c.currentIteration=0;c.end()}},end:function(){var a=this;a.fireEvent("afteranimate",a,a.startTime,new Date()-a.startTime)},isReady:function(){return this.paused===false&&this.running===false&&this.iterations>0},isRunning:function(){return false}});Ext.define("Ext.fx.CubicBezier",{singleton:true,cubicBezierAtTime:function(o,d,b,n,m,i){var j=3*d,l=3*(n-d)-j,a=1-j-l,h=3*b,k=3*(m-b)-h,p=1-h-k;function g(q){return((a*q+l)*q+j)*q}function c(q,s){var r=e(q,s);return((p*r+k)*r+h)*r}function e(q,y){var w,v,t,r,u,s;for(t=q,s=0;s<8;s++){r=g(t)-q;if(Math.abs(r)<y){return t}u=(3*a*t+2*l)*t+j;if(Math.abs(u)<0.000001){break}t=t-r/u}w=0;v=1;t=q;if(t<w){return w}if(t>v){return v}while(w<v){r=g(t);if(Math.abs(r-q)<y){return t}if(q>r){w=t}else{v=t}t=(v-w)/2+w}return t}return c(o,1/(200*i))},cubicBezier:function(b,e,a,c){var d=function(g){return Ext.fx.CubicBezier.cubicBezierAtTime(g,b,e,a,c,1)};d.toCSS3=function(){return"cubic-bezier("+[b,e,a,c].join(",")+")"};d.reverse=function(){return Ext.fx.CubicBezier.cubicBezier(1-a,1-c,1-b,1-e)};return d}});Ext.ns("Ext.fx");Ext.require("Ext.fx.CubicBezier",function(){var e=Math,h=e.PI,d=e.pow,b=e.sin,g=e.sqrt,a=e.abs,c=1.70158;Ext.fx.Easing={};Ext.apply(Ext.fx.Easing,{linear:function(i){return i},ease:function(l){var i=0.07813-l/2,m=-0.25,o=g(0.0066+i*i),r=o-i,k=d(a(r),1/3)*(r<0?-1:1),p=-o-i,j=d(a(p),1/3)*(p<0?-1:1),s=k+j+0.25;return d(1-s,2)*3*s*0.1+(1-s)*3*s*s+s*s*s},easeIn:function(i){return d(i,1.7)},easeOut:function(i){return d(i,0.48)},easeInOut:function(r){var l=0.48-r/1.04,k=g(0.1734+l*l),i=k-l,p=d(a(i),1/3)*(i<0?-1:1),o=-k-l,m=d(a(o),1/3)*(o<0?-1:1),j=p+m+0.5;return(1-j)*3*j*j+j*j*j},backIn:function(i){return i*i*((c+1)*i-c)},backOut:function(i){i=i-1;return i*i*((c+1)*i+c)+1},elasticIn:function(k){if(k===0||k===1){return k}var j=0.3,i=j/4;return d(2,-10*k)*b((k-i)*(2*h)/j)+1},elasticOut:function(i){return 1-Ext.fx.Easing.elasticIn(1-i)},bounceIn:function(i){return 1-Ext.fx.Easing.bounceOut(1-i)},bounceOut:function(m){var j=7.5625,k=2.75,i;if(m<(1/k)){i=j*m*m}else{if(m<(2/k)){m-=(1.5/k);i=j*m*m+0.75}else{if(m<(2.5/k)){m-=(2.25/k);i=j*m*m+0.9375}else{m-=(2.625/k);i=j*m*m+0.984375}}}return i}});Ext.apply(Ext.fx.Easing,{"back-in":Ext.fx.Easing.backIn,"back-out":Ext.fx.Easing.backOut,"ease-in":Ext.fx.Easing.easeIn,"ease-out":Ext.fx.Easing.easeOut,"elastic-in":Ext.fx.Easing.elasticIn,"elastic-out":Ext.fx.Easing.elasticIn,"bounce-in":Ext.fx.Easing.bounceIn,"bounce-out":Ext.fx.Easing.bounceOut,"ease-in-out":Ext.fx.Easing.easeInOut})});Ext.define("Ext.draw.Color",{colorToHexRe:/(.*?)rgb\((\d+),\s*(\d+),\s*(\d+)\)/,rgbRe:/\s*rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)\s*/,hexRe:/\s*#([0-9a-fA-F][0-9a-fA-F]?)([0-9a-fA-F][0-9a-fA-F]?)([0-9a-fA-F][0-9a-fA-F]?)\s*/,lightnessFactor:0.2,constructor:function(d,c,a){var b=this,e=Ext.Number.constrain;b.r=e(d,0,255);b.g=e(c,0,255);b.b=e(a,0,255)},getRed:function(){return this.r},getGreen:function(){return this.g},getBlue:function(){return this.b},getRGB:function(){var a=this;return[a.r,a.g,a.b]},getHSL:function(){var j=this,a=j.r/255,i=j.g/255,k=j.b/255,m=Math.max(a,i,k),d=Math.min(a,i,k),n=m-d,e,o=0,c=0.5*(m+d);if(d!=m){o=(c<0.5)?n/(m+d):n/(2-m-d);if(a==m){e=60*(i-k)/n}else{if(i==m){e=120+60*(k-a)/n}else{e=240+60*(a-i)/n}}if(e<0){e+=360}if(e>=360){e-=360}}return[e,o,c]},getLighter:function(b){var a=this.getHSL();b=b||this.lightnessFactor;a[2]=Ext.Number.constrain(a[2]+b,0,1);return this.fromHSL(a[0],a[1],a[2])},getDarker:function(a){a=a||this.lightnessFactor;return this.getLighter(-a)},toString:function(){var h=this,c=Math.round,e=c(h.r).toString(16),d=c(h.g).toString(16),a=c(h.b).toString(16);e=(e.length==1)?"0"+e:e;d=(d.length==1)?"0"+d:d;a=(a.length==1)?"0"+a:a;return["#",e,d,a].join("")},toHex:function(b){if(Ext.isArray(b)){b=b[0]}if(!Ext.isString(b)){return""}if(b.substr(0,1)==="#"){return b}var e=this.colorToHexRe.exec(b),g,d,a,c;if(Ext.isArray(e)){g=parseInt(e[2],10);d=parseInt(e[3],10);a=parseInt(e[4],10);c=a|(d<<8)|(g<<16);return e[1]+"#"+("000000"+c.toString(16)).slice(-6)}else{return b}},fromString:function(i){var c,e,d,a,h=parseInt;if((i.length==4||i.length==7)&&i.substr(0,1)==="#"){c=i.match(this.hexRe);if(c){e=h(c[1],16)>>0;d=h(c[2],16)>>0;a=h(c[3],16)>>0;if(i.length==4){e+=(e*16);d+=(d*16);a+=(a*16)}}}else{c=i.match(this.rgbRe);if(c){e=c[1];d=c[2];a=c[3]}}return(typeof e=="undefined")?undefined:new Ext.draw.Color(e,d,a)},getGrayscale:function(){return this.r*0.3+this.g*0.59+this.b*0.11},fromHSL:function(g,o,d){var a,b,c,e,k=[],n=Math.abs,j=Math.floor;if(o==0||g==null){k=[d,d,d]}else{g/=60;a=o*(1-n(2*d-1));b=a*(1-n(g-2*j(g/2)-1));c=d-a/2;switch(j(g)){case 0:k=[a,b,0];break;case 1:k=[b,a,0];break;case 2:k=[0,a,b];break;case 3:k=[0,b,a];break;case 4:k=[b,0,a];break;case 5:k=[a,0,b];break}k=[k[0]+c,k[1]+c,k[2]+c]}return new Ext.draw.Color(k[0]*255,k[1]*255,k[2]*255)}},function(){var a=this.prototype;this.addStatics({fromHSL:function(){return a.fromHSL.apply(a,arguments)},fromString:function(){return a.fromString.apply(a,arguments)},toHex:function(){return a.toHex.apply(a,arguments)}})});Ext.define("Ext.draw.Draw",{singleton:true,requires:["Ext.draw.Color"],pathToStringRE:/,?([achlmqrstvxz]),?/gi,pathCommandRE:/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig,pathValuesRE:/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig,stopsRE:/^(\d+%?)$/,radian:Math.PI/180,availableAnimAttrs:{along:"along",blur:null,"clip-rect":"csv",cx:null,cy:null,fill:"color","fill-opacity":null,"font-size":null,height:null,opacity:null,path:"path",r:null,rotation:"csv",rx:null,ry:null,scale:"csv",stroke:"color","stroke-opacity":null,"stroke-width":null,translation:"csv",width:null,x:null,y:null},is:function(b,a){a=String(a).toLowerCase();return(a=="object"&&b===Object(b))||(a=="undefined"&&typeof b==a)||(a=="null"&&b===null)||(a=="array"&&Array.isArray&&Array.isArray(b))||(Object.prototype.toString.call(b).toLowerCase().slice(8,-1))==a},ellipsePath:function(b){var a=b.attr;return Ext.String.format("M{0},{1}A{2},{3},0,1,1,{0},{4}A{2},{3},0,1,1,{0},{1}z",a.x,a.y-a.ry,a.rx,a.ry,a.y+a.ry)},rectPath:function(b){var a=b.attr;if(a.radius){return Ext.String.format("M{0},{1}l{2},0a{3},{3},0,0,1,{3},{3}l0,{5}a{3},{3},0,0,1,{4},{3}l{6},0a{3},{3},0,0,1,{4},{4}l0,{7}a{3},{3},0,0,1,{3},{4}z",a.x+a.radius,a.y,a.width-a.radius*2,a.radius,-a.radius,a.height-a.radius*2,a.radius*2-a.width,a.radius*2-a.height)}else{return Ext.String.format("M{0},{1}L{2},{1},{2},{3},{0},{3}z",a.x,a.y,a.width+a.x,a.height+a.y)}},path2string:function(){return this.join(",").replace(Ext.draw.Draw.pathToStringRE,"$1")},pathToString:function(a){return a.join(",").replace(Ext.draw.Draw.pathToStringRE,"$1")},parsePathString:function(a){if(!a){return null}var d={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},c=[],b=this;if(b.is(a,"array")&&b.is(a[0],"array")){c=b.pathClone(a)}if(!c.length){String(a).replace(b.pathCommandRE,function(g,e,j){var i=[],h=e.toLowerCase();j.replace(b.pathValuesRE,function(l,k){k&&i.push(+k)});if(h=="m"&&i.length>2){c.push([e].concat(Ext.Array.splice(i,0,2)));h="l";e=(e=="m")?"l":"L"}while(i.length>=d[h]){c.push([e].concat(Ext.Array.splice(i,0,d[h])));if(!d[h]){break}}})}c.toString=b.path2string;return c},mapPath:function(l,g){if(!g){return l}var h,e,c,k,a,d,b;l=this.path2curve(l);for(c=0,k=l.length;c<k;c++){b=l[c];for(a=1,d=b.length;a<d-1;a+=2){h=g.x(b[a],b[a+1]);e=g.y(b[a],b[a+1]);b[a]=h;b[a+1]=e}}return l},pathClone:function(g){var c=[],a,e,b,d;if(!this.is(g,"array")||!this.is(g&&g[0],"array")){g=this.parsePathString(g)}for(b=0,d=g.length;b<d;b++){c[b]=[];for(a=0,e=g[b].length;a<e;a++){c[b][a]=g[b][a]}}c.toString=this.path2string;return c},pathToAbsolute:function(c){if(!this.is(c,"array")||!this.is(c&&c[0],"array")){c=this.parsePathString(c)}var k=[],m=0,l=0,o=0,n=0,g=0,h=c.length,b,d,e,a;if(h&&c[0][0]=="M"){m=+c[0][1];l=+c[0][2];o=m;n=l;g++;k[0]=["M",m,l]}for(;g<h;g++){b=k[g]=[];d=c[g];if(d[0]!=d[0].toUpperCase()){b[0]=d[0].toUpperCase();switch(b[0]){case"A":b[1]=d[1];b[2]=d[2];b[3]=d[3];b[4]=d[4];b[5]=d[5];b[6]=+(d[6]+m);b[7]=+(d[7]+l);break;case"V":b[1]=+d[1]+l;break;case"H":b[1]=+d[1]+m;break;case"M":o=+d[1]+m;n=+d[2]+l;default:e=1;a=d.length;for(;e<a;e++){b[e]=+d[e]+((e%2)?m:l)}}}else{e=0;a=d.length;for(;e<a;e++){k[g][e]=d[e]}}switch(b[0]){case"Z":m=o;l=n;break;case"H":m=b[1];break;case"V":l=b[1];break;case"M":d=k[g];a=d.length;o=d[a-2];n=d[a-1];default:d=k[g];a=d.length;m=d[a-2];l=d[a-1]}}k.toString=this.path2string;return k},pathToRelative:function(d){if(!this.is(d,"array")||!this.is(d&&d[0],"array")){d=this.parsePathString(d)}var n=[],p=0,o=0,t=0,s=0,c=0,a,q,h,g,e,m,u,l,b;if(d[0][0]=="M"){p=d[0][1];o=d[0][2];t=p;s=o;c++;n.push(["M",p,o])}for(h=c,u=d.length;h<u;h++){a=n[h]=[];q=d[h];if(q[0]!=q[0].toLowerCase()){a[0]=q[0].toLowerCase();switch(a[0]){case"a":a[1]=q[1];a[2]=q[2];a[3]=q[3];a[4]=q[4];a[5]=q[5];a[6]=+(q[6]-p).toFixed(3);a[7]=+(q[7]-o).toFixed(3);break;case"v":a[1]=+(q[1]-o).toFixed(3);break;case"m":t=q[1];s=q[2];default:for(g=1,l=q.length;g<l;g++){a[g]=+(q[g]-((g%2)?p:o)).toFixed(3)}}}else{a=n[h]=[];if(q[0]=="m"){t=q[1]+p;s=q[2]+o}for(e=0,b=q.length;e<b;e++){n[h][e]=q[e]}}m=n[h].length;switch(n[h][0]){case"z":p=t;o=s;break;case"h":p+=+n[h][m-1];break;case"v":o+=+n[h][m-1];break;default:p+=+n[h][m-2];o+=+n[h][m-1]}}n.toString=this.path2string;return n},path2curve:function(k){var d=this,h=d.pathToAbsolute(k),c=h.length,j={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},b,a,g,e;for(b=0;b<c;b++){h[b]=d.command2curve(h[b],j);if(h[b].length>7){h[b].shift();e=h[b];while(e.length){Ext.Array.splice(h,b++,0,["C"].concat(Ext.Array.splice(e,0,6)))}Ext.Array.erase(h,b,1);c=h.length;b--}a=h[b];g=a.length;j.x=a[g-2];j.y=a[g-1];j.bx=parseFloat(a[g-4])||j.x;j.by=parseFloat(a[g-3])||j.y}return h},interpolatePaths:function(r,l){var j=this,d=j.pathToAbsolute(r),m=j.pathToAbsolute(l),n={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},a={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},b=function(p,s){if(p[s].length>7){p[s].shift();var t=p[s];while(t.length){Ext.Array.splice(p,s++,0,["C"].concat(Ext.Array.splice(t,0,6)))}Ext.Array.erase(p,s,1);o=Math.max(d.length,m.length||0)}},c=function(v,u,s,p,t){if(v&&u&&v[t][0]=="M"&&u[t][0]!="M"){Ext.Array.splice(u,t,0,["M",p.x,p.y]);s.bx=0;s.by=0;s.x=v[t][1];s.y=v[t][2];o=Math.max(d.length,m.length||0)}},h,o,g,q,e,k;for(h=0,o=Math.max(d.length,m.length||0);h<o;h++){d[h]=j.command2curve(d[h],n);b(d,h);(m[h]=j.command2curve(m[h],a));b(m,h);c(d,m,n,a,h);c(m,d,a,n,h);g=d[h];q=m[h];e=g.length;k=q.length;n.x=g[e-2];n.y=g[e-1];n.bx=parseFloat(g[e-4])||n.x;n.by=parseFloat(g[e-3])||n.y;a.bx=(parseFloat(q[k-4])||a.x);a.by=(parseFloat(q[k-3])||a.y);a.x=q[k-2];a.y=q[k-1]}return[d,m]},command2curve:function(c,b){var a=this;if(!c){return["C",b.x,b.y,b.x,b.y,b.x,b.y]}if(c[0]!="T"&&c[0]!="Q"){b.qx=b.qy=null}switch(c[0]){case"M":b.X=c[1];b.Y=c[2];break;case"A":c=["C"].concat(a.arc2curve.apply(a,[b.x,b.y].concat(c.slice(1))));break;case"S":c=["C",b.x+(b.x-(b.bx||b.x)),b.y+(b.y-(b.by||b.y))].concat(c.slice(1));break;case"T":b.qx=b.x+(b.x-(b.qx||b.x));b.qy=b.y+(b.y-(b.qy||b.y));c=["C"].concat(a.quadratic2curve(b.x,b.y,b.qx,b.qy,c[1],c[2]));break;case"Q":b.qx=c[1];b.qy=c[2];c=["C"].concat(a.quadratic2curve(b.x,b.y,c[1],c[2],c[3],c[4]));break;case"L":c=["C"].concat(b.x,b.y,c[1],c[2],c[1],c[2]);break;case"H":c=["C"].concat(b.x,b.y,c[1],b.y,c[1],b.y);break;case"V":c=["C"].concat(b.x,b.y,b.x,c[1],b.x,c[1]);break;case"Z":c=["C"].concat(b.x,b.y,b.X,b.Y,b.X,b.Y);break}return c},quadratic2curve:function(b,d,h,e,a,c){var g=1/3,i=2/3;return[g*b+i*h,g*d+i*e,g*a+i*h,g*c+i*e,a,c]},rotate:function(b,h,a){var d=Math.cos(a),c=Math.sin(a),g=b*d-h*c,e=b*c+h*d;return{x:g,y:e}},arc2curve:function(v,ah,J,H,B,o,j,u,ag,C){var z=this,e=Math.PI,A=z.radian,G=e*120/180,b=A*(+B||0),O=[],L=Math,V=L.cos,a=L.sin,X=L.sqrt,w=L.abs,p=L.asin,K,c,r,Q,P,ac,d,T,W,E,D,n,m,s,l,af,g,ae,R,U,S,ad,ab,aa,Y,N,Z,M,F,I,q;if(!C){K=z.rotate(v,ah,-b);v=K.x;ah=K.y;K=z.rotate(u,ag,-b);u=K.x;ag=K.y;c=V(A*B);r=a(A*B);Q=(v-u)/2;P=(ah-ag)/2;ac=(Q*Q)/(J*J)+(P*P)/(H*H);if(ac>1){ac=X(ac);J=ac*J;H=ac*H}d=J*J;T=H*H;W=(o==j?-1:1)*X(w((d*T-d*P*P-T*Q*Q)/(d*P*P+T*Q*Q)));E=W*J*P/H+(v+u)/2;D=W*-H*Q/J+(ah+ag)/2;n=p(((ah-D)/H).toFixed(7));m=p(((ag-D)/H).toFixed(7));n=v<E?e-n:n;m=u<E?e-m:m;if(n<0){n=e*2+n}if(m<0){m=e*2+m}if(j&&n>m){n=n-e*2}if(!j&&m>n){m=m-e*2}}else{n=C[0];m=C[1];E=C[2];D=C[3]}s=m-n;if(w(s)>G){F=m;I=u;q=ag;m=n+G*(j&&m>n?1:-1);u=E+J*V(m);ag=D+H*a(m);O=z.arc2curve(u,ag,J,H,B,0,j,I,q,[m,F,E,D])}s=m-n;l=V(n);af=a(n);g=V(m);ae=a(m);R=L.tan(s/4);U=4/3*J*R;S=4/3*H*R;ad=[v,ah];ab=[v+U*af,ah-S*l];aa=[u+U*ae,ag-S*g];Y=[u,ag];ab[0]=2*ad[0]-ab[0];ab[1]=2*ad[1]-ab[1];if(C){return[ab,aa,Y].concat(O)}else{O=[ab,aa,Y].concat(O).join().split(",");N=[];M=O.length;for(Z=0;Z<M;Z++){N[Z]=Z%2?z.rotate(O[Z-1],O[Z],b).y:z.rotate(O[Z],O[Z+1],b).x}return N}},rotateAndTranslatePath:function(k){var c=k.rotation.degrees,d=k.rotation.x,b=k.rotation.y,o=k.translation.x,l=k.translation.y,n,g,a,m,e,h=[];if(!c&&!o&&!l){return this.pathToAbsolute(k.attr.path)}o=o||0;l=l||0;n=this.pathToAbsolute(k.attr.path);for(g=n.length;g--;){a=h[g]=n[g].slice();if(a[0]=="A"){m=this.rotatePoint(a[6],a[7],c,d,b);a[6]=m.x+o;a[7]=m.y+l}else{e=1;while(a[e+1]!=null){m=this.rotatePoint(a[e],a[e+1],c,d,b);a[e]=m.x+o;a[e+1]=m.y+l;e+=2}}}return h},rotatePoint:function(b,h,e,a,g){if(!e){return{x:b,y:h}}a=a||0;g=g||0;b=b-a;h=h-g;e=e*this.radian;var d=Math.cos(e),c=Math.sin(e);return{x:b*d-h*c+a,y:b*c+h*d+g}},pathDimensions:function(m){if(!m||!(m+"")){return{x:0,y:0,width:0,height:0}}m=this.path2curve(m);var k=0,j=0,d=[],b=[],e=0,h=m.length,c,a,l,g;for(;e<h;e++){c=m[e];if(c[0]=="M"){k=c[1];j=c[2];d.push(k);b.push(j)}else{g=this.curveDim(k,j,c[1],c[2],c[3],c[4],c[5],c[6]);d=d.concat(g.min.x,g.max.x);b=b.concat(g.min.y,g.max.y);k=c[5];j=c[6]}}a=Math.min.apply(0,d);l=Math.min.apply(0,b);return{x:a,y:l,path:m,width:Math.max.apply(0,d)-a,height:Math.max.apply(0,b)-l}},intersectInside:function(b,c,a){return(a[0]-c[0])*(b[1]-c[1])>(a[1]-c[1])*(b[0]-c[0])},intersectIntersection:function(n,m,g,d){var c=[],b=g[0]-d[0],a=g[1]-d[1],k=n[0]-m[0],i=n[1]-m[1],l=g[0]*d[1]-g[1]*d[0],j=n[0]*m[1]-n[1]*m[0],h=1/(b*i-a*k);c[0]=(l*k-j*b)*h;c[1]=(l*i-j*a)*h;return c},intersect:function(o,c){var n=this,k=0,m=c.length,h=c[m-1],q=o,g,r,l,p,a,b,d;for(;k<m;++k){g=c[k];b=q;q=[];r=b[b.length-1];d=0;a=b.length;for(;d<a;d++){l=b[d];if(n.intersectInside(l,h,g)){if(!n.intersectInside(r,h,g)){q.push(n.intersectIntersection(r,l,h,g))}q.push(l)}else{if(n.intersectInside(r,h,g)){q.push(n.intersectIntersection(r,l,h,g))}}r=l}h=g}return q},bezier:function(h,g,m,l,e){if(e===0){return h}else{if(e===1){return l}}var j=1-e,i=j*j*j,k=e/j;return i*(h+k*(3*g+k*(3*m+l*k)))},bezierDim:function(t,q,n,m){var v=[],g,j,p,h,u,e,w,k,o,l;if(t+3*n==m+3*q){g=t-q;g/=2*(t-q-q+n);if(g<1&&g>0){v.push(g)}}else{j=t-3*q+3*n-m;p=2*(t-q-q+n);h=t-q;u=p*p-4*j*h;e=j+j;if(u===0){g=p/e;if(g<1&&g>0){v.push(g)}}else{if(u>0){w=Math.sqrt(u);g=(w+p)/e;if(g<1&&g>0){v.push(g)}g=(p-w)/e;if(g<1&&g>0){v.push(g)}}}}k=Math.min(t,m);o=Math.max(t,m);for(l=0;l<v.length;l++){k=Math.min(k,this.bezier(t,q,n,m,v[l]));o=Math.max(o,this.bezier(t,q,n,m,v[l]))}return[k,o]},curveDim:function(b,a,d,c,k,j,h,e){var i=this.bezierDim(b,d,k,h),g=this.bezierDim(a,c,j,e);return{min:{x:i[0],y:g[0]},max:{x:i[1],y:g[1]}}},getAnchors:function(e,d,k,j,v,u,q){q=q||4;var i=Math,p=i.PI,r=p/2,m=i.abs,a=i.sin,b=i.cos,g=i.atan,t,s,h,l,o,n,x,w,c;t=(k-e)/q;s=(v-k)/q;if((j>=d&&j>=u)||(j<=d&&j<=u)){h=l=r}else{h=g((k-e)/m(j-d));if(d<j){h=p-h}l=g((v-k)/m(j-u));if(u<j){l=p-l}}c=r-((h+l)%(p*2))/2;if(c>r){c-=p}h+=c;l+=c;o=k-t*a(h);n=j+t*b(h);x=k+s*a(l);w=j+s*b(l);if((j>d&&n<d)||(j<d&&n>d)){o+=m(d-n)*(o-k)/(n-j);n=d}if((j>u&&w<u)||(j<u&&w>u)){x-=m(u-w)*(x-k)/(w-j);w=u}return{x1:o,y1:n,x2:x,y2:w}},smooth:function(a,r){var q=this.path2curve(a),e=[q[0]],k=q[0][1],h=q[0][2],s,u,v=1,l=q.length,g=1,n=k,m=h,c=0,b=0,A,z,w,o,t,p,d;for(;v<l;v++){A=q[v];z=A.length;w=q[v-1];o=w.length;t=q[v+1];p=t&&t.length;if(A[0]=="M"){n=A[1];m=A[2];s=v+1;while(q[s][0]!="C"){s++}c=q[s][5];b=q[s][6];e.push(["M",n,m]);g=e.length;k=n;h=m;continue}if(A[z-2]==n&&A[z-1]==m&&(!t||t[0]=="M")){d=e[g].length;u=this.getAnchors(w[o-2],w[o-1],n,m,e[g][d-2],e[g][d-1],r);e[g][1]=u.x2;e[g][2]=u.y2}else{if(!t||t[0]=="M"){u={x1:A[z-2],y1:A[z-1]}}else{u=this.getAnchors(w[o-2],w[o-1],A[z-2],A[z-1],t[p-2],t[p-1],r)}}e.push(["C",k,h,u.x1,u.y1,A[z-2],A[z-1]]);k=u.x2;h=u.y2}return e},findDotAtSegment:function(b,a,d,c,j,i,h,g,k){var e=1-k;return{x:Math.pow(e,3)*b+Math.pow(e,2)*3*k*d+e*3*k*k*j+Math.pow(k,3)*h,y:Math.pow(e,3)*a+Math.pow(e,2)*3*k*c+e*3*k*k*i+Math.pow(k,3)*g}},snapEnds:function(r,s,d,n){if(Ext.isDate(r)){return this.snapEndsByDate(r,s,d)}var c=(s-r)/d,a=Math.floor(Math.log(c)/Math.LN10)+1,e=Math.pow(10,a),t,p=Math.round((c%e)*Math.pow(10,2-a)),b=[[0,15],[20,4],[30,2],[40,4],[50,9],[60,4],[70,2],[80,4],[100,15]],h=0,q,k,j,g,l=1000000000,o=b.length;t=r=Math.floor(r/e)*e;if(n){for(j=0;j<o;j++){q=b[j][0];k=(q-p)<0?1000000:(q-p)/b[j][1];if(k<l){g=q;l=k}}c=Math.floor(c*Math.pow(10,-a))*Math.pow(10,a)+g*Math.pow(10,a-2);while(t<s){t+=c;h++}s=+t.toFixed(10)}else{h=d}return{from:r,to:s,power:a,step:c,steps:h}},snapEndsByDate:function(k,l,b,m){var e=false,h=[[Ext.Date.MILLI,[1,2,3,5,10,20,30,50,100,200,300,500]],[Ext.Date.SECOND,[1,2,3,5,10,15,30]],[Ext.Date.MINUTE,[1,2,3,5,10,20,30]],[Ext.Date.HOUR,[1,2,3,4,6,12]],[Ext.Date.DAY,[1,2,3,7,14]],[Ext.Date.MONTH,[1,2,3,4,6]]],g=h.length,i=false,c,d,a,n;for(n=0;n<g;n++){c=h[n];if(!i){for(d=0;d<c[1].length;d++){if(l<Ext.Date.add(k,c[0],c[1][d]*b)){e=[c[0],c[1][d]];i=true;break}}}}if(!e){a=this.snapEnds(k.getFullYear(),l.getFullYear()+1,b,m);e=[Date.YEAR,Math.round(a.step)]}return this.snapEndsByDateAndStep(k,l,e,m)},snapEndsByDateAndStep:function(i,h,e,a){var d=[i.getFullYear(),i.getMonth(),i.getDate(),i.getHours(),i.getMinutes(),i.getSeconds(),i.getMilliseconds()],b=0,g,c;if(a){g=i}else{switch(e[0]){case Ext.Date.MILLI:g=new Date(d[0],d[1],d[2],d[3],d[4],d[5],Math.floor(d[6]/e[1])*e[1]);break;case Ext.Date.SECOND:g=new Date(d[0],d[1],d[2],d[3],d[4],Math.floor(d[5]/e[1])*e[1],0);break;case Ext.Date.MINUTE:g=new Date(d[0],d[1],d[2],d[3],Math.floor(d[4]/e[1])*e[1],0,0);break;case Ext.Date.HOUR:g=new Date(d[0],d[1],d[2],Math.floor(d[3]/e[1])*e[1],0,0,0);break;case Ext.Date.DAY:g=new Date(d[0],d[1],Math.floor(d[2]-1/e[1])*e[1]+1,0,0,0,0);break;case Ext.Date.MONTH:g=new Date(d[0],Math.floor(d[1]/e[1])*e[1],1,0,0,0,0);break;default:g=new Date(Math.floor(d[0]/e[1])*e[1],0,1,0,0,0,0);break}}c=g;while(c<h){c=Ext.Date.add(c,e[0],e[1]);b++}if(a){c=h}return{from:+g,to:+c,step:(c-g)/b,steps:b}},sorter:function(d,c){return d.offset-c.offset},rad:function(a){return a%360*Math.PI/180},degrees:function(a){return a*180/Math.PI%360},withinBox:function(a,c,b){b=b||{};return(a>=b.x&&a<=(b.x+b.width)&&c>=b.y&&c<=(b.y+b.height))},parseGradient:function(k){var e=this,g=k.type||"linear",c=k.angle||0,i=e.radian,l=k.stops,a=[],j,b,h,d;if(g=="linear"){b=[0,0,Math.cos(c*i),Math.sin(c*i)];h=1/(Math.max(Math.abs(b[2]),Math.abs(b[3]))||1);b[2]*=h;b[3]*=h;if(b[2]<0){b[0]=-b[2];b[2]=0}if(b[3]<0){b[1]=-b[3];b[3]=0}}for(j in l){if(l.hasOwnProperty(j)&&e.stopsRE.test(j)){d={offset:parseInt(j,10),color:Ext.draw.Color.toHex(l[j].color)||"#ffffff",opacity:l[j].opacity||1};a.push(d)}}Ext.Array.sort(a,e.sorter);if(g=="linear"){return{id:k.id,type:g,vector:b,stops:a}}else{return{id:k.id,type:g,centerX:k.centerX,centerY:k.centerY,focalX:k.focalX,focalY:k.focalY,radius:k.radius,vector:b,stops:a}}}});Ext.define("Ext.fx.PropertyHandler",{requires:["Ext.draw.Draw"],statics:{defaultHandler:{pixelDefaultsRE:/width|height|top$|bottom$|left$|right$/i,unitRE:/^(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)*$/,scrollRE:/^scroll/i,computeDelta:function(j,c,a,g,i){a=(typeof a=="number")?a:1;var h=this.unitRE,d=h.exec(j),b,e;if(d){j=d[1];e=d[2];if(!this.scrollRE.test(i)&&!e&&this.pixelDefaultsRE.test(i)){e="px"}}j=+j||0;d=h.exec(c);if(d){c=d[1];e=d[2]||e}c=+c||0;b=(g!=null)?g:j;return{from:j,delta:(c-b)*a,units:e}},get:function(o,b,a,n,k){var m=o.length,d=[],e,h,l,c,g;for(e=0;e<m;e++){if(n){h=n[e][1].from}if(Ext.isArray(o[e][1])&&Ext.isArray(b)){l=[];c=0;g=o[e][1].length;for(;c<g;c++){l.push(this.computeDelta(o[e][1][c],b[c],a,h,k))}d.push([o[e][0],l])}else{d.push([o[e][0],this.computeDelta(o[e][1],b,a,h,k)])}}return d},set:function(l,g){var h=l.length,c=[],d,a,k,e,b;for(d=0;d<h;d++){a=l[d][1];if(Ext.isArray(a)){k=[];b=0;e=a.length;for(;b<e;b++){k.push(a[b].from+a[b].delta*g+(a[b].units||0))}c.push([l[d][0],k])}else{c.push([l[d][0],a.from+a.delta*g+(a.units||0)])}}return c}},stringHandler:{computeDelta:function(e,b,d,c,a){return{from:e,delta:b}},get:function(o,b,a,n,k){var m=o.length,d=[],e,h,l,c,g;for(e=0;e<m;e++){d.push([o[e][0],this.computeDelta(o[e][1],b,a,h,k)])}return d},set:function(l,g){var h=l.length,c=[],d,a,k,e,b;for(d=0;d<h;d++){a=l[d][1];c.push([l[d][0],a.delta])}return c}},color:{rgbRE:/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,hexRE:/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,hex3RE:/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i,parseColor:function(e,a){a=(typeof a=="number")?a:1;var g=false,c=[this.hexRE,this.rgbRE,this.hex3RE],d=c.length,j,b,k,h;for(h=0;h<d;h++){k=c[h];b=(h%2===0)?16:10;j=k.exec(e);if(j&&j.length===4){if(h===2){j[1]+=j[1];j[2]+=j[2];j[3]+=j[3]}g={red:parseInt(j[1],b),green:parseInt(j[2],b),blue:parseInt(j[3],b)};break}}return g||e},computeDelta:function(h,a,e,c){h=this.parseColor(h);a=this.parseColor(a,e);var g=c?c:h,b=typeof g,d=typeof a;if(b=="string"||b=="undefined"||d=="string"||d=="undefined"){return a||g}return{from:h,delta:{red:Math.round((a.red-g.red)*e),green:Math.round((a.green-g.green)*e),blue:Math.round((a.blue-g.blue)*e)}}},get:function(j,a,g,d){var h=j.length,c=[],e,b;for(e=0;e<h;e++){if(d){b=d[e][1].from}c.push([j[e][0],this.computeDelta(j[e][1],a,g,b)])}return c},set:function(k,e){var g=k.length,c=[],d,b,a,h,j;for(d=0;d<g;d++){b=k[d][1];if(b){h=b.from;j=b.delta;b=(typeof b=="object"&&"red" in b)?"rgb("+b.red+", "+b.green+", "+b.blue+")":b;b=(typeof b=="object"&&b.length)?b[0]:b;if(typeof b=="undefined"){return[]}a=typeof b=="string"?b:"rgb("+[(h.red+Math.round(j.red*e))%256,(h.green+Math.round(j.green*e))%256,(h.blue+Math.round(j.blue*e))%256].join(",")+")";c.push([k[d][0],a])}}return c}},object:{interpolate:function(d,b){b=(typeof b=="number")?b:1;var a={},c;for(c in d){a[c]=parseFloat(d[c])*b}return a},computeDelta:function(h,a,c,b){h=this.interpolate(h);a=this.interpolate(a,c);var g=b?b:h,e={},d;for(d in a){e[d]=a[d]-g[d]}return{from:h,delta:e}},get:function(j,a,g,d){var h=j.length,c=[],e,b;for(e=0;e<h;e++){if(d){b=d[e][1].from}c.push([j[e][0],this.computeDelta(j[e][1],a,g,b)])}return c},set:function(l,g){var h=l.length,c=[],e={},d,j,k,b,a;for(d=0;d<h;d++){b=l[d][1];j=b.from;k=b.delta;for(a in j){e[a]=j[a]+k[a]*g}c.push([l[d][0],e])}return c}},path:{computeDelta:function(e,a,c,b){c=(typeof c=="number")?c:1;var d;e=+e||0;a=+a||0;d=(b!=null)?b:e;return{from:e,delta:(a-d)*c}},forcePath:function(a){if(!Ext.isArray(a)&&!Ext.isArray(a[0])){a=Ext.draw.Draw.parsePathString(a)}return a},get:function(b,l,a,q){var c=this.forcePath(l),n=[],s=b.length,d,h,o,g,p,m,e,t,r;for(o=0;o<s;o++){r=this.forcePath(b[o][1]);g=Ext.draw.Draw.interpolatePaths(r,c);r=g[0];c=g[1];d=r.length;t=[];for(m=0;m<d;m++){g=[r[m][0]];h=r[m].length;for(e=1;e<h;e++){p=q&&q[0][1][m][e].from;g.push(this.computeDelta(r[m][e],c[m][e],a,p))}t.push(g)}n.push([b[o][0],t])}return n},set:function(p,n){var o=p.length,e=[],h,g,d,l,m,c,a,b;for(h=0;h<o;h++){c=p[h][1];l=[];a=c.length;for(g=0;g<a;g++){m=[c[g][0]];b=c[g].length;for(d=1;d<b;d++){m.push(c[g][d].from+c[g][d].delta*n)}l.push(m.join(","))}e.push([p[h][0],l.join(",")])}return e}}}},function(){var b=["outlineColor","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","fill","stroke"],c=b.length,a=0,d;for(;a<c;a++){d=b[a];this[d]=this.color}b=["cursor"];c=b.length;a=0;for(;a<c;a++){d=b[a];this[d]=this.stringHandler}});Ext.define("Ext.fx.Anim",{mixins:{observable:"Ext.util.Observable"},requires:["Ext.fx.Manager","Ext.fx.Animator","Ext.fx.Easing","Ext.fx.CubicBezier","Ext.fx.PropertyHandler"],isAnimation:true,duration:250,delay:0,delayStart:0,dynamic:false,easing:"ease",damper:1,bezierRE:/^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,reverse:false,running:false,paused:false,iterations:1,alternate:false,currentIteration:0,startTime:0,frameCount:0,constructor:function(a){var b=this,c;a=a||{};if(a.keyframes){return new Ext.fx.Animator(a)}Ext.apply(b,a);if(b.from===undefined){b.from={}}b.propHandlers={};b.config=a;b.target=Ext.fx.Manager.createTarget(b.target);b.easingFn=Ext.fx.Easing[b.easing];b.target.dynamic=b.dynamic;if(!b.easingFn){b.easingFn=String(b.easing).match(b.bezierRE);if(b.easingFn&&b.easingFn.length==5){c=b.easingFn;b.easingFn=Ext.fx.CubicBezier.cubicBezier(+c[1],+c[2],+c[3],+c[4])}}b.id=Ext.id(null,"ext-anim-");b.addEvents("beforeanimate","afteranimate","lastframe");b.mixins.observable.constructor.call(b);Ext.fx.Manager.addAnim(b)},setAttr:function(a,b){return Ext.fx.Manager.items.get(this.id).setAttr(this.target,a,b)},initAttrs:function(){var e=this,h=e.from,i=e.to,g=e.initialFrom||{},c={},a,b,j,d;for(d in i){if(i.hasOwnProperty(d)){a=e.target.getAttr(d,h[d]);b=i[d];if(!Ext.fx.PropertyHandler[d]){if(Ext.isObject(b)){j=e.propHandlers[d]=Ext.fx.PropertyHandler.object}else{j=e.propHandlers[d]=Ext.fx.PropertyHandler.defaultHandler}}else{j=e.propHandlers[d]=Ext.fx.PropertyHandler[d]}c[d]=j.get(a,b,e.damper,g[d],d)}}e.currentAttrs=c},start:function(d){var e=this,c=e.delay,b=e.delayStart,a;if(c){if(!b){e.delayStart=d;return}else{a=d-b;if(a<c){return}else{d=new Date(b.getTime()+c)}}}if(e.fireEvent("beforeanimate",e)!==false){e.startTime=d;if(!e.paused&&!e.currentAttrs){e.initAttrs()}e.running=true;e.frameCount=0}},runAnim:function(l){var i=this,k=i.currentAttrs,d=i.duration,c=i.easingFn,b=i.propHandlers,g={},h,j,e,a;if(l>=d){l=d;a=true}if(i.reverse){l=d-l}for(e in k){if(k.hasOwnProperty(e)){j=k[e];h=a?1:c(l/d);g[e]=b[e].set(j,h)}}i.frameCount++;return g},lastFrame:function(){var c=this,a=c.iterations,b=c.currentIteration;b++;if(b<a){if(c.alternate){c.reverse=!c.reverse}c.startTime=new Date();c.currentIteration=b;c.paused=false}else{c.currentIteration=0;c.end();c.fireEvent("lastframe",c,c.startTime)}},endWasCalled:0,end:function(){if(this.endWasCalled++){return}var a=this;a.startTime=0;a.paused=false;a.running=false;Ext.fx.Manager.removeAnim(a);a.fireEvent("afteranimate",a,a.startTime);Ext.callback(a.callback,a.scope,[a,a.startTime])},isReady:function(){return this.paused===false&&this.running===false&&this.iterations>0},isRunning:function(){return this.paused===false&&this.running===true&&this.isAnimator!==true}});Ext.enableFx=true;Ext.define("Ext.dd.DragDrop",{requires:["Ext.dd.DragDropManager"],constructor:function(c,a,b){if(c){this.init(c,a,b)}},id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:false,lock:function(){this.locked=true},moveOnly:false,unlock:function(){this.locked=false},isTarget:true,padding:null,_domRef:null,__ygDragDrop:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,maintainOffset:false,xTicks:null,yTicks:null,primaryButtonOnly:true,available:false,hasOuterHandles:false,b4StartDrag:function(a,b){},startDrag:function(a,b){},b4Drag:function(a){},onDrag:function(a){},onDragEnter:function(a,b){},b4DragOver:function(a){},onDragOver:function(a,b){},b4DragOut:function(a){},onDragOut:function(a,b){},b4DragDrop:function(a){},onDragDrop:function(a,b){},onInvalidDrop:function(a){},b4EndDrag:function(a){},endDrag:function(a){},b4MouseDown:function(a){},onMouseDown:function(a){},onMouseUp:function(a){},onAvailable:function(){},defaultPadding:{left:0,right:0,top:0,bottom:0},constrainTo:function(i,g,n){if(Ext.isNumber(g)){g={left:g,right:g,top:g,bottom:g}}g=g||this.defaultPadding;var k=Ext.get(this.getEl()).getBox(),a=Ext.get(i),m=a.getScroll(),j,d=a.dom,l,h,e;if(d==document.body){j={x:m.left,y:m.top,width:Ext.Element.getViewWidth(),height:Ext.Element.getViewHeight()}}else{l=a.getXY();j={x:l[0],y:l[1],width:d.clientWidth,height:d.clientHeight}}h=k.y-j.y;e=k.x-j.x;this.resetConstraints();this.setXConstraint(e-(g.left||0),j.width-e-k.width-(g.right||0),this.xTickSize);this.setYConstraint(h-(g.top||0),j.height-h-k.height-(g.bottom||0),this.yTickSize)},getEl:function(){if(!this._domRef){this._domRef=Ext.getDom(this.id)}return this._domRef},getDragEl:function(){return Ext.getDom(this.dragElId)},init:function(c,a,b){this.initTarget(c,a,b);Ext.EventManager.on(this.id,"mousedown",this.handleMouseDown,this)},initTarget:function(c,a,b){this.config=b||{};this.DDMInstance=Ext.dd.DragDropManager;this.groups={};if(typeof c!=="string"){c=Ext.id(c)}this.id=c;this.addToGroup((a)?a:"default");this.handleElId=c;this.setDragElId(c);this.invalidHandleTypes={A:"A"};this.invalidHandleIds={};this.invalidHandleClasses=[];this.applyConfig();this.handleOnAvailable()},applyConfig:function(){this.padding=this.config.padding||[0,0,0,0];this.isTarget=(this.config.isTarget!==false);this.maintainOffset=(this.config.maintainOffset);this.primaryButtonOnly=(this.config.primaryButtonOnly!==false)},handleOnAvailable:function(){this.available=true;this.resetConstraints();this.onAvailable()},setPadding:function(c,a,d,b){if(!a&&0!==a){this.padding=[c,c,c,c]}else{if(!d&&0!==d){this.padding=[c,a,c,a]}else{this.padding=[c,a,d,b]}}},setInitPosition:function(d,c){var e=this.getEl(),b,a,g;if(!this.DDMInstance.verifyEl(e)){return}b=d||0;a=c||0;g=Ext.Element.getXY(e);this.initPageX=g[0]-b;this.initPageY=g[1]-a;this.lastPageX=g[0];this.lastPageY=g[1];this.setStartPosition(g)},setStartPosition:function(b){var a=b||Ext.Element.getXY(this.getEl());this.deltaSetXY=null;this.startPageX=a[0];this.startPageY=a[1]},addToGroup:function(a){this.groups[a]=true;this.DDMInstance.regDragDrop(this,a)},removeFromGroup:function(a){if(this.groups[a]){delete this.groups[a]}this.DDMInstance.removeDDFromGroup(this,a)},setDragElId:function(a){this.dragElId=a},setHandleElId:function(a){if(typeof a!=="string"){a=Ext.id(a)}this.handleElId=a;this.DDMInstance.regHandle(this.id,a)},setOuterHandleElId:function(a){if(typeof a!=="string"){a=Ext.id(a)}Ext.EventManager.on(a,"mousedown",this.handleMouseDown,this);this.setHandleElId(a);this.hasOuterHandles=true},unreg:function(){Ext.EventManager.un(this.id,"mousedown",this.handleMouseDown,this);this._domRef=null;this.DDMInstance._remove(this)},destroy:function(){this.unreg()},isLocked:function(){return(this.DDMInstance.isLocked()||this.locked)},handleMouseDown:function(b,a){if(this.primaryButtonOnly&&b.button!=0){return}if(this.isLocked()){return}this.DDMInstance.refreshCache(this.groups);if(this.hasOuterHandles||this.DDMInstance.isOverTarget(b.getPoint(),this)){if(this.clickValidator(b)){this.setStartPosition();this.b4MouseDown(b);this.onMouseDown(b);this.DDMInstance.handleMouseDown(b,this);this.DDMInstance.stopEvent(b)}}},clickValidator:function(b){var a=b.getTarget();return(this.isValidHandleChild(a)&&(this.id==this.handleElId||this.DDMInstance.handleWasClicked(a,this.id)))},addInvalidHandleType:function(a){var b=a.toUpperCase();this.invalidHandleTypes[b]=b},addInvalidHandleId:function(a){if(typeof a!=="string"){a=Ext.id(a)}this.invalidHandleIds[a]=a},addInvalidHandleClass:function(a){this.invalidHandleClasses.push(a)},removeInvalidHandleType:function(a){var b=a.toUpperCase();delete this.invalidHandleTypes[b]},removeInvalidHandleId:function(a){if(typeof a!=="string"){a=Ext.id(a)}delete this.invalidHandleIds[a]},removeInvalidHandleClass:function(b){for(var c=0,a=this.invalidHandleClasses.length;c<a;++c){if(this.invalidHandleClasses[c]==b){delete this.invalidHandleClasses[c]}}},isValidHandleChild:function(d){var c=true,h,b,a;try{h=d.nodeName.toUpperCase()}catch(g){h=d.nodeName}c=c&&!this.invalidHandleTypes[h];c=c&&!this.invalidHandleIds[d.id];for(b=0,a=this.invalidHandleClasses.length;c&&b<a;++b){c=!Ext.fly(d).hasCls(this.invalidHandleClasses[b])}return c},setXTicks:function(d,a){this.xTicks=[];this.xTickSize=a;var c={},b;for(b=this.initPageX;b>=this.minX;b=b-a){if(!c[b]){this.xTicks[this.xTicks.length]=b;c[b]=true}}for(b=this.initPageX;b<=this.maxX;b=b+a){if(!c[b]){this.xTicks[this.xTicks.length]=b;c[b]=true}}Ext.Array.sort(this.xTicks,this.DDMInstance.numericSort)},setYTicks:function(d,a){this.yTicks=[];this.yTickSize=a;var c={},b;for(b=this.initPageY;b>=this.minY;b=b-a){if(!c[b]){this.yTicks[this.yTicks.length]=b;c[b]=true}}for(b=this.initPageY;b<=this.maxY;b=b+a){if(!c[b]){this.yTicks[this.yTicks.length]=b;c[b]=true}}Ext.Array.sort(this.yTicks,this.DDMInstance.numericSort)},setXConstraint:function(c,b,a){this.leftConstraint=c;this.rightConstraint=b;this.minX=this.initPageX-c;this.maxX=this.initPageX+b;if(a){this.setXTicks(this.initPageX,a)}this.constrainX=true},clearConstraints:function(){this.constrainX=false;this.constrainY=false;this.clearTicks()},clearTicks:function(){this.xTicks=null;this.yTicks=null;this.xTickSize=0;this.yTickSize=0},setYConstraint:function(a,c,b){this.topConstraint=a;this.bottomConstraint=c;this.minY=this.initPageY-a;this.maxY=this.initPageY+c;if(b){this.setYTicks(this.initPageY,b)}this.constrainY=true},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var b=(this.maintainOffset)?this.lastPageX-this.initPageX:0,a=(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPosition(b,a)}else{this.setInitPosition()}if(this.constrainX){this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize)}if(this.constrainY){this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize)}},getTick:function(h,d){if(!d){return h}else{if(d[0]>=h){return d[0]}else{var b,a,c,g,e;for(b=0,a=d.length;b<a;++b){c=b+1;if(d[c]&&d[c]>=h){g=h-d[b];e=d[c]-h;return(e>g)?d[b]:d[c]}}return d[d.length-1]}}},toString:function(){return("DragDrop "+this.id)}});Ext.define("Ext.dd.DD",{extend:"Ext.dd.DragDrop",requires:["Ext.dd.DragDropManager"],constructor:function(c,a,b){if(c){this.init(c,a,b)}},scroll:true,autoOffset:function(c,b){var a=c-this.startPageX,d=b-this.startPageY;this.setDelta(a,d)},setDelta:function(b,a){this.deltaX=b;this.deltaY=a},setDragElPos:function(c,b){var a=this.getDragEl();this.alignElWithMouse(a,c,b)},alignElWithMouse:function(b,e,c){var g=this.getTargetCoord(e,c),d=b.dom?b:Ext.fly(b,"_dd"),l=d.getSize(),i=Ext.Element,j,a,k,h;if(!this.deltaSetXY){j=this.cachedViewportSize={width:i.getDocumentWidth(),height:i.getDocumentHeight()};a=[Math.max(0,Math.min(g.x,j.width-l.width)),Math.max(0,Math.min(g.y,j.height-l.height))];d.setXY(a);k=d.getLocalX();h=d.getLocalY();this.deltaSetXY=[k-g.x,h-g.y]}else{j=this.cachedViewportSize;d.setLeftTop(Math.max(0,Math.min(g.x+this.deltaSetXY[0],j.width-l.width)),Math.max(0,Math.min(g.y+this.deltaSetXY[1],j.height-l.height)))}this.cachePosition(g.x,g.y);this.autoScroll(g.x,g.y,b.offsetHeight,b.offsetWidth);return g},cachePosition:function(b,a){if(b){this.lastPageX=b;this.lastPageY=a}else{var c=Ext.Element.getXY(this.getEl());this.lastPageX=c[0];this.lastPageY=c[1]}},autoScroll:function(l,k,e,m){if(this.scroll){var n=Ext.Element.getViewHeight(),b=Ext.Element.getViewWidth(),p=this.DDMInstance.getScrollTop(),d=this.DDMInstance.getScrollLeft(),j=e+k,o=m+l,i=(n+p-k-this.deltaY),g=(b+d-l-this.deltaX),c=40,a=(document.all)?80:30;if(j>n&&i<c){window.scrollTo(d,p+a)}if(k<p&&p>0&&k-p<c){window.scrollTo(d,p-a)}if(o>b&&g<c){window.scrollTo(d+a,p)}if(l<d&&d>0&&l-d<c){window.scrollTo(d-a,p)}}},getTargetCoord:function(c,b){var a=c-this.deltaX,d=b-this.deltaY;if(this.constrainX){if(a<this.minX){a=this.minX}if(a>this.maxX){a=this.maxX}}if(this.constrainY){if(d<this.minY){d=this.minY}if(d>this.maxY){d=this.maxY}}a=this.getTick(a,this.xTicks);d=this.getTick(d,this.yTicks);return{x:a,y:d}},applyConfig:function(){this.callParent();this.scroll=(this.config.scroll!==false)},b4MouseDown:function(a){this.autoOffset(a.getPageX(),a.getPageY())},b4Drag:function(a){this.setDragElPos(a.getPageX(),a.getPageY())},toString:function(){return("DD "+this.id)}});Ext.define("Ext.dd.DDProxy",{extend:"Ext.dd.DD",statics:{dragElId:"ygddfdiv"},constructor:function(c,a,b){if(c){this.init(c,a,b);this.initFrame()}},resizeFrame:true,centerFrame:false,createFrame:function(){var b=this,a=document.body,d,c;if(!a||!a.firstChild){setTimeout(function(){b.createFrame()},50);return}d=this.getDragEl();if(!d){d=document.createElement("div");d.id=this.dragElId;c=d.style;c.position="absolute";c.visibility="hidden";c.cursor="move";c.border="2px solid #aaa";c.zIndex=999;a.insertBefore(d,a.firstChild)}},initFrame:function(){this.createFrame()},applyConfig:function(){this.callParent();this.resizeFrame=(this.config.resizeFrame!==false);this.centerFrame=(this.config.centerFrame);this.setDragElId(this.config.dragElId||Ext.dd.DDProxy.dragElId)},showFrame:function(e,d){var c=this.getEl(),a=this.getDragEl(),b=a.style;this._resizeProxy();if(this.centerFrame){this.setDelta(Math.round(parseInt(b.width,10)/2),Math.round(parseInt(b.height,10)/2))}this.setDragElPos(e,d);Ext.fly(a).show()},_resizeProxy:function(){if(this.resizeFrame){var a=this.getEl();Ext.fly(this.getDragEl()).setSize(a.offsetWidth,a.offsetHeight)}},b4MouseDown:function(b){var a=b.getPageX(),c=b.getPageY();this.autoOffset(a,c);this.setDragElPos(a,c)},b4StartDrag:function(a,b){this.showFrame(a,b)},b4EndDrag:function(a){Ext.fly(this.getDragEl()).hide()},endDrag:function(c){var b=this.getEl(),a=this.getDragEl();a.style.visibility="";this.beforeMove();b.style.visibility="hidden";Ext.dd.DDM.moveToEl(b,a);a.style.visibility="hidden";b.style.visibility="";this.afterDrag()},beforeMove:function(){},afterDrag:function(){},toString:function(){return("DDProxy "+this.id)}});Ext.define("Ext.dd.StatusProxy",{extend:"Ext.Component",animRepair:false,childEls:["ghost"],renderTpl:['<div class="'+Ext.baseCSSPrefix+'dd-drop-icon"></div><div id="{id}-ghost" class="'+Ext.baseCSSPrefix+'dd-drag-ghost"></div>'],constructor:function(a){var b=this;a=a||{};Ext.apply(b,{hideMode:"visibility",hidden:true,floating:true,id:b.id||Ext.id(),cls:Ext.baseCSSPrefix+"dd-drag-proxy "+this.dropNotAllowed,shadow:a.shadow||false,renderTo:Ext.getDetachedBody()});b.callParent(arguments);this.dropStatus=this.dropNotAllowed},dropAllowed:Ext.baseCSSPrefix+"dd-drop-ok",dropNotAllowed:Ext.baseCSSPrefix+"dd-drop-nodrop",setStatus:function(a){a=a||this.dropNotAllowed;if(this.dropStatus!=a){this.el.replaceCls(this.dropStatus,a);this.dropStatus=a}},reset:function(b){var c=this,a=Ext.baseCSSPrefix+"dd-drag-proxy ";c.el.replaceCls(a+c.dropAllowed,a+c.dropNotAllowed);c.dropStatus=c.dropNotAllowed;if(b){c.ghost.update("")}},update:function(a){if(typeof a=="string"){this.ghost.update(a)}else{this.ghost.update("");a.style.margin="0";this.ghost.dom.appendChild(a)}var b=this.ghost.dom.firstChild;if(b){Ext.fly(b).setStyle("float","none")}},getGhost:function(){return this.ghost},hide:function(a){this.callParent();if(a){this.reset(true)}},stop:function(){if(this.anim&&this.anim.isAnimated&&this.anim.isAnimated()){this.anim.stop()}},sync:function(){this.el.sync()},repair:function(c,d,a){var b=this;b.callback=d;b.scope=a;if(c&&b.animRepair!==false){b.el.addCls(Ext.baseCSSPrefix+"dd-drag-repair");b.el.hideUnders(true);b.anim=b.el.animate({duration:b.repairDuration||500,easing:"ease-out",to:{x:c[0],y:c[1]},stopAnimation:true,callback:b.afterRepair,scope:b})}else{b.afterRepair()}},afterRepair:function(){var a=this;a.hide(true);a.el.removeCls(Ext.baseCSSPrefix+"dd-drag-repair");if(typeof a.callback=="function"){a.callback.call(a.scope||a)}delete a.callback;delete a.scope}});Ext.define("Ext.dd.DragSource",{extend:"Ext.dd.DDProxy",requires:["Ext.dd.StatusProxy","Ext.dd.DragDropManager"],dropAllowed:Ext.baseCSSPrefix+"dd-drop-ok",dropNotAllowed:Ext.baseCSSPrefix+"dd-drop-nodrop",animRepair:true,repairHighlightColor:"c3daf9",constructor:function(b,a){this.el=Ext.get(b);if(!this.dragData){this.dragData={}}Ext.apply(this,a);if(!this.proxy){this.proxy=new Ext.dd.StatusProxy({id:this.el.id+"-drag-status-proxy",animRepair:this.animRepair})}this.callParent([this.el.dom,this.ddGroup||this.group,{dragElId:this.proxy.id,resizeFrame:false,isTarget:false,scroll:this.scroll===true}]);this.dragging=false},getDragData:function(a){return this.dragData},onDragEnter:function(c,d){var b=Ext.dd.DragDropManager.getDDById(d),a;this.cachedTarget=b;if(this.beforeDragEnter(b,c,d)!==false){if(b.isNotifyTarget){a=b.notifyEnter(this,c,this.dragData);this.proxy.setStatus(a)}else{this.proxy.setStatus(this.dropAllowed)}if(this.afterDragEnter){this.afterDragEnter(b,c,d)}}},beforeDragEnter:function(b,a,c){return true},onDragOver:function(c,d){var b=this.cachedTarget||Ext.dd.DragDropManager.getDDById(d),a;if(this.beforeDragOver(b,c,d)!==false){if(b.isNotifyTarget){a=b.notifyOver(this,c,this.dragData);this.proxy.setStatus(a)}if(this.afterDragOver){this.afterDragOver(b,c,d)}}},beforeDragOver:function(b,a,c){return true},onDragOut:function(b,c){var a=this.cachedTarget||Ext.dd.DragDropManager.getDDById(c);if(this.beforeDragOut(a,b,c)!==false){if(a.isNotifyTarget){a.notifyOut(this,b,this.dragData)}this.proxy.reset();if(this.afterDragOut){this.afterDragOut(a,b,c)}}this.cachedTarget=null},beforeDragOut:function(b,a,c){return true},onDragDrop:function(b,c){var a=this.cachedTarget||Ext.dd.DragDropManager.getDDById(c);if(this.beforeDragDrop(a,b,c)!==false){if(a.isNotifyTarget){if(a.notifyDrop(this,b,this.dragData)!==false){this.onValidDrop(a,b,c)}else{this.onInvalidDrop(a,b,c)}}else{this.onValidDrop(a,b,c)}if(this.afterDragDrop){this.afterDragDrop(a,b,c)}}delete this.cachedTarget},beforeDragDrop:function(b,a,c){return true},onValidDrop:function(b,a,c){this.hideProxy();if(this.afterValidDrop){this.afterValidDrop(b,a,c)}},getRepairXY:function(b,a){return this.el.getXY()},onInvalidDrop:function(b,a,c){if(!a){a=b;b=null;c=a.getTarget().id}this.beforeInvalidDrop(b,a,c);if(this.cachedTarget){if(this.cachedTarget.isNotifyTarget){this.cachedTarget.notifyOut(this,a,this.dragData)}this.cacheTarget=null}this.proxy.repair(this.getRepairXY(a,this.dragData),this.afterRepair,this);if(this.afterInvalidDrop){this.afterInvalidDrop(a,c)}},afterRepair:function(){var a=this;if(Ext.enableFx){a.el.highlight(a.repairHighlightColor)}a.dragging=false},beforeInvalidDrop:function(b,a,c){return true},handleMouseDown:function(b){if(this.dragging){return}var a=this.getDragData(b);if(a&&this.onBeforeDrag(a,b)!==false){this.dragData=a;this.proxy.stop();this.callParent(arguments)}},onBeforeDrag:function(a,b){return true},onStartDrag:Ext.emptyFn,alignElWithMouse:function(){this.proxy.ensureAttachedToBody(true);return this.callParent(arguments)},startDrag:function(a,b){this.proxy.reset();this.proxy.hidden=false;this.dragging=true;this.proxy.update("");this.onInitDrag(a,b);this.proxy.show()},onInitDrag:function(a,c){var b=this.el.dom.cloneNode(true);b.id=Ext.id();this.proxy.update(b);this.onStartDrag(a,c);return true},getProxy:function(){return this.proxy},hideProxy:function(){this.proxy.hide();this.proxy.reset(true);this.dragging=false},triggerCacheRefresh:function(){Ext.dd.DDM.refreshCache(this.groups)},b4EndDrag:function(a){},endDrag:function(a){this.onEndDrag(this.dragData,a)},onEndDrag:function(a,b){},autoOffset:function(a,b){this.setDelta(-12,-20)},destroy:function(){this.callParent();Ext.destroy(this.proxy)}});Ext.define("Ext.panel.Proxy",{alternateClassName:"Ext.dd.PanelProxy",moveOnDrag:true,constructor:function(a,b){var c=this;c.panel=a;c.id=c.panel.id+"-ddproxy";Ext.apply(c,b)},insertProxy:true,setStatus:Ext.emptyFn,reset:Ext.emptyFn,update:Ext.emptyFn,stop:Ext.emptyFn,sync:Ext.emptyFn,getEl:function(){return this.ghost.el},getGhost:function(){return this.ghost},getProxy:function(){return this.proxy},hide:function(){var a=this;if(a.ghost){if(a.proxy){a.proxy.remove();delete a.proxy}a.panel.unghost(null,a.moveOnDrag);delete a.ghost}},show:function(){var b=this,a;if(!b.ghost){a=b.panel.getSize();b.panel.el.setVisibilityMode(Ext.Element.DISPLAY);b.ghost=b.panel.ghost();if(b.insertProxy){b.proxy=b.panel.el.insertSibling({cls:Ext.baseCSSPrefix+"panel-dd-spacer"});b.proxy.setSize(a)}}},repair:function(b,c,a){this.hide();Ext.callback(c,a||this)},moveProxy:function(a,b){if(this.proxy){a.insertBefore(this.proxy.dom,b)}}});Ext.define("Ext.panel.DD",{extend:"Ext.dd.DragSource",requires:["Ext.panel.Proxy"],constructor:function(b,a){var c=this;c.panel=b;c.dragData={panel:b};c.panelProxy=new Ext.panel.Proxy(b,a);c.proxy=c.panelProxy.proxy;c.callParent([b.el,a]);c.setupEl(b)},setupEl:function(a){var c=this,d=a.header,b=a.body;if(d){c.setHandleElId(d.id);b=d.el}if(b){b.setStyle("cursor","move");c.scroll=false}else{a.on("boxready",c.setupEl,c,{single:true})}},showFrame:Ext.emptyFn,startDrag:Ext.emptyFn,b4StartDrag:function(a,b){this.panelProxy.show()},b4MouseDown:function(b){var a=b.getPageX(),c=b.getPageY();this.autoOffset(a,c)},onInitDrag:function(a,b){this.onStartDrag(a,b);return true},createFrame:Ext.emptyFn,getDragEl:function(a){return this.panelProxy.ghost.el.dom},endDrag:function(a){this.panelProxy.hide();this.panel.saveState()},autoOffset:function(a,b){a-=this.startPageX;b-=this.startPageY;this.setDelta(a,b)},onInvalidDrop:function(c,b,d){var a=this;a.beforeInvalidDrop(c,b,d);if(a.cachedTarget){if(a.cachedTarget.isNotifyTarget){a.cachedTarget.notifyOut(a,b,a.dragData)}a.cacheTarget=null}if(a.afterInvalidDrop){a.afterInvalidDrop(b,d)}}});Ext.define("Ext.util.Memento",(function(){function d(i,h,j,g){i[g?g+j:j]=h[j]}function c(h,g,i){delete h[i]}function e(k,j,l,i){var g=i?i+l:l,h=k[g];if(h||k.hasOwnProperty(g)){a(j,l,h)}}function a(h,i,g){if(Ext.isDefined(g)){h[i]=g}else{delete h[i]}}function b(h,m,l,i,j){if(m){if(Ext.isArray(i)){var k,g=i.length;for(k=0;k<g;k++){h(m,l,i[k],j)}}else{h(m,l,i,j)}}}return{data:null,target:null,constructor:function(h,g){if(h){this.target=h;if(g){this.capture(g)}}},capture:function(g,j,i){var h=this;b(d,h.data||(h.data={}),j||h.target,g,i)},remove:function(g){b(c,this.data,null,g)},restore:function(h,g,j,i){b(e,this.data,j||this.target,h,i);if(g!==false){this.remove(h)}},restoreAll:function(g,k){var i=this,h=k||this.target,j=i.data,l;for(l in j){if(j.hasOwnProperty(l)){a(h,l,j[l])}}if(g!==false){delete i.data}}}}()));Ext.define("Ext.panel.Panel",{extend:"Ext.panel.AbstractPanel",requires:["Ext.panel.Header","Ext.fx.Anim","Ext.util.KeyMap","Ext.panel.DD","Ext.XTemplate","Ext.layout.component.Dock","Ext.util.Memento"],alias:"widget.panel",alternateClassName:"Ext.Panel",collapsedCls:"collapsed",animCollapse:Ext.enableFx,minButtonWidth:75,collapsed:false,collapseFirst:true,hideCollapseTool:false,titleCollapse:false,floatable:true,collapsible:false,closable:false,closeAction:"destroy",placeholderCollapseHideMode:Ext.Element.VISIBILITY,preventHeader:false,header:undefined,headerPosition:"top",frame:false,frameHeader:true,titleAlign:"left",manageHeight:true,initComponent:function(){var a=this;a.addEvents("beforeclose","close","beforeexpand","beforecollapse","expand","collapse","titlechange","iconchange","iconclschange");if(a.collapsible){this.addStateEvents(["expand","collapse"])}if(a.unstyled){a.setUI("plain")}if(a.frame){a.setUI(a.ui+"-framed")}a.bridgeToolbars();a.callParent();a.collapseDirection=a.collapseDirection||a.headerPosition||Ext.Component.DIRECTION_TOP;a.hiddenOnCollapse=new Ext.dom.CompositeElement()},beforeDestroy:function(){var a=this;Ext.destroy(a.placeholder,a.ghostPanel,a.dd);a.callParent()},initAria:function(){this.callParent();this.initHeaderAria()},getFocusEl:function(){return this.el},initHeaderAria:function(){var b=this,a=b.el,c=b.header;if(a&&c){a.dom.setAttribute("aria-labelledby",c.titleCmp.id)}},getHeader:function(){return this.header},setTitle:function(g){var c=this,b=c.title,e=c.header,a=c.reExpander,d=c.placeholder;c.title=g;if(e){if(e.isHeader){e.setTitle(g)}else{e.title=g}}else{c.updateHeader()}if(a){a.setTitle(g)}if(d&&d.setTitle){d.setTitle(g)}c.fireEvent("titlechange",c,g,b)},setIconCls:function(a){var c=this,b=c.iconCls,e=c.header,d=c.placeholder;c.iconCls=a;if(e){if(e.isHeader){e.setIconCls(a)}else{e.iconCls=a}}else{c.updateHeader()}if(d&&d.setIconCls){d.setIconCls(a)}c.fireEvent("iconclschange",c,a,b)},setIcon:function(a){var b=this,c=b.icon,e=b.header,d=b.placeholder;b.icon=a;if(e){if(e.isHeader){e.setIcon(a)}else{e.icon=a}}else{b.updateHeader()}if(d&&d.setIcon){d.setIcon(a)}b.fireEvent("iconchange",b,a,c)},bridgeToolbars:function(){var a=this,g=[],c,b,e=a.minButtonWidth;function d(h,j,i){if(Ext.isArray(h)){h={xtype:"toolbar",items:h}}else{if(!h.xtype){h.xtype="toolbar"}}h.dock=j;if(j=="left"||j=="right"){h.vertical=true}if(i){h.layout=Ext.applyIf(h.layout||{},{pack:{left:"start",center:"center"}[a.buttonAlign]||"end"})}return h}if(a.tbar){g.push(d(a.tbar,"top"));a.tbar=null}if(a.bbar){g.push(d(a.bbar,"bottom"));a.bbar=null}if(a.buttons){a.fbar=a.buttons;a.buttons=null}if(a.fbar){c=d(a.fbar,"bottom",true);c.ui="footer";if(e){b=c.defaults;c.defaults=function(h){var i=b||{};if((!h.xtype||h.xtype==="button"||(h.isComponent&&h.isXType("button")))&&!("minWidth" in i)){i=Ext.apply({minWidth:e},i)}return i}}g.push(c);a.fbar=null}if(a.lbar){g.push(d(a.lbar,"left"));a.lbar=null}if(a.rbar){g.push(d(a.rbar,"right"));a.rbar=null}if(a.dockedItems){if(!Ext.isArray(a.dockedItems)){a.dockedItems=[a.dockedItems]}a.dockedItems=a.dockedItems.concat(g)}else{a.dockedItems=g}},isPlaceHolderCollapse:function(){return this.collapseMode=="placeholder"},onBoxReady:function(){this.callParent();if(this.collapsed){this.setHiddenDocked()}},beforeRender:function(){var b=this,a;b.callParent();b.initTools();if(!(b.preventHeader||(b.header===false))){b.updateHeader()}if(b.collapsed){if(b.isPlaceHolderCollapse()){b.hidden=true;b.placeholderCollapse();a=b.collapsed;b.collapsed=false}else{b.beginCollapse();b.addClsWithUI(b.collapsedCls)}}if(a){b.collapsed=a}},initTools:function(){var a=this;a.tools=a.tools?Ext.Array.clone(a.tools):[];if(a.collapsible&&!(a.hideCollapseTool||a.header===false||a.preventHeader)){a.collapseDirection=a.collapseDirection||a.headerPosition||"top";a.collapseTool=a.expandTool=Ext.widget({xtype:"tool",type:(a.collapsed&&!a.isPlaceHolderCollapse())?("expand-"+a.getOppositeDirection(a.collapseDirection)):("collapse-"+a.collapseDirection),handler:a.toggleCollapse,scope:a});if(a.collapseFirst){a.tools.unshift(a.collapseTool)}}a.addTools();if(a.closable){a.addClsWithUI("closable");a.addTool({type:"close",handler:Ext.Function.bind(a.close,a,[])})}if(a.collapseTool&&!a.collapseFirst){a.addTool(a.collapseTool)}},addTools:Ext.emptyFn,close:function(){if(this.fireEvent("beforeclose",this)!==false){this.doClose()}},doClose:function(){this.fireEvent("close",this);this[this.closeAction]()},updateHeader:function(d){var c=this,h=c.header,g=c.title,e=c.tools,b=c.icon||c.iconCls,a=c.headerPosition=="left"||c.headerPosition=="right";if((h!==false)&&(d||(g||b)||(e&&e.length)||(c.collapsible&&!c.titleCollapse))){if(h&&h.isHeader){h.show()}else{h=c.header=Ext.widget(Ext.apply({xtype:"header",title:g,titleAlign:c.titleAlign,orientation:a?"vertical":"horizontal",dock:c.headerPosition||"top",textCls:c.headerTextCls,iconCls:c.iconCls,icon:c.icon,baseCls:c.baseCls+"-header",tools:e,ui:c.ui,id:c.id+"_header",indicateDrag:c.draggable,frame:(c.frame||c.alwaysFramed)&&c.frameHeader,ignoreParentFrame:c.frame||c.overlapHeader,ignoreBorderManagement:c.frame||c.ignoreHeaderBorderManagement,listeners:c.collapsible&&c.titleCollapse?{click:c.toggleCollapse,scope:c}:null},c.header));c.addDocked(h,0);c.tools=h.tools}c.initHeaderAria()}else{if(h){h.hide()}}},setUI:function(b){var a=this;a.callParent(arguments);if(a.header&&a.header.rendered){a.header.setUI(b)}},getContentTarget:function(){return this.body},getTargetEl:function(){var a=this;return a.body||a.protoBody||a.frameBody||a.el},isVisible:function(a){var b=this;if(b.collapsed&&b.placeholder){return b.placeholder.isVisible(a)}return b.callParent(arguments)},onHide:function(){var a=this;if(a.collapsed&&a.placeholder){a.placeholder.hide()}else{a.callParent(arguments)}},onShow:function(){var a=this;if(a.collapsed&&a.placeholder){a.hidden=true;a.placeholder.show()}else{a.callParent(arguments)}},onRemoved:function(b){var a=this;a.callParent(arguments);if(a.placeholder&&!b){a.ownerCt.remove(a.placeholder,false)}},addTool:function(e){e=[].concat(e);var d=this,g=d.header,c,a=e.length,b;for(c=0;c<a;c++){b=e[c];d.tools.push(b);if(g&&g.isHeader){g.addTool(b)}}d.updateHeader()},getOppositeDirection:function(a){var b=Ext.Component;switch(a){case b.DIRECTION_TOP:return b.DIRECTION_BOTTOM;case b.DIRECTION_RIGHT:return b.DIRECTION_LEFT;case b.DIRECTION_BOTTOM:return b.DIRECTION_TOP;case b.DIRECTION_LEFT:return b.DIRECTION_RIGHT}},getWidthAuthority:function(){if(this.collapsed&&this.collapsedHorizontal()){return 1}return this.callParent()},getHeightAuthority:function(){if(this.collapsed&&this.collapsedVertical()){return 1}return this.callParent()},collapsedHorizontal:function(){var a=this.getCollapsed();return a=="left"||a=="right"},collapsedVertical:function(){var a=this.getCollapsed();return a=="top"||a=="bottom"},restoreDimension:function(){var a=this.collapseDirection;return(a==="top"||a==="bottom")?"height":"width"},getCollapsed:function(){var a=this;if(a.collapsed===true){return a.collapseDirection}return a.collapsed},getState:function(){var a=this,b=a.callParent(),c;b=a.addPropertyToState(b,"collapsed");if(a.collapsed){c=a.collapseMemento;c=c&&c.data;if(a.collapsedVertical()){if(b){delete b.height}if(c){b=a.addPropertyToState(b,"height",c.height)}}else{if(b){delete b.width}if(c){b=a.addPropertyToState(b,"width",c.width)}}}return b},findReExpander:function(h){var g=this,j=Ext.Component,e=g.dockedItems.items,a=e.length,b,d;if(g.collapseMode=="mini"){return}switch(h){case j.DIRECTION_TOP:case j.DIRECTION_BOTTOM:for(d=0;d<a;d++){b=e[d];if(!b.hidden){if(b.isHeader&&(!b.dock||b.dock=="top"||b.dock=="bottom")){return b}}}break;case j.DIRECTION_LEFT:case j.DIRECTION_RIGHT:for(d=0;d<a;d++){b=e[d];if(!b.hidden){if(b.isHeader&&(b.dock=="left"||b.dock=="right")){return b}}}break;default:throw ("Panel#findReExpander must be passed a valid collapseDirection")}},getReExpander:function(c){var b=this,d=c||b.collapseDirection,a=b.reExpander||b.findReExpander(d);b.expandDirection=b.getOppositeDirection(d);if(!a){b.reExpander=a=b.createReExpander(d,{dock:d,cls:Ext.baseCSSPrefix+"docked "+b.baseCls+"-"+b.ui+"-collapsed",ownerCt:b,ownerLayout:b.componentLayout});b.dockedItems.insert(0,a)}return a},createReExpander:function(g,e){var d=this,i=g=="left",c=g=="right",h=i||c,b,a=Ext.apply({hideMode:"offsets",title:d.title,orientation:h?"vertical":"horizontal",textCls:d.headerTextCls,icon:d.icon,iconCls:d.iconCls,baseCls:d.baseCls+"-header",ui:d.ui,frame:d.frame&&d.frameHeader,ignoreParentFrame:d.frame||d.overlapHeader,indicateDrag:d.draggable},e);if(d.collapseMode=="mini"){if(h){a.width=1}else{a.height=1}}if(!d.hideCollapseTool){b=i||(c&&d.isPlaceHolderCollapse());a[b?"items":"tools"]=[{xtype:"tool",type:"expand-"+d.getOppositeDirection(g),uiCls:["top"],handler:d.toggleCollapse,scope:d}]}a=new Ext.panel.Header(a);a.addClsWithUI(d.getHeaderCollapsedClasses(a));return a},getHeaderCollapsedClasses:function(d){var b=this,c=b.collapsedCls,a;a=[c,c+"-"+d.dock];if(b.border&&(!b.frame||(b.frame&&Ext.supports.CSS3BorderRadius))){a.push(c+"-border-"+d.dock)}return a},beginCollapse:function(){var e=this,c=e.lastBox,g=e.rendered,b=e.collapseMemento||(e.collapseMemento=new Ext.util.Memento(e)),d=e.getSizeModel(),a;b.capture(["height","minHeight","width","minWidth"]);if(c){b.capture(e.restoreDimension(),c,"last.")}if(e.collapsedVertical()){if(d.width.shrinkWrap){e.width=g?e.getWidth():e.width||e.minWidth||100}delete e.height;e.minHeight=0}else{if(e.collapsedHorizontal()){if(d.height.shrinkWrap){e.height=g?e.getHeight():e.height||e.minHeight||100}delete e.width;e.minWidth=0}}if(e.ownerCt){e.ownerCt.getLayout().beginCollapse(e)}if(!e.isPlaceHolderCollapse()){if(e.header===(a=e.getReExpander())){e.header.addClsWithUI(e.getHeaderCollapsedClasses(e.header));if(e.header.rendered){e.header.updateFrame()}}else{if(a.el){a.el.show();a.hidden=false}}}if(e.resizer){e.resizer.disable()}},beginExpand:function(){var e=this,d=e.lastBox,c=e.collapseMemento,a=this.restoreDimension(),b;c.restore(["minHeight","minWidth",a]);if(d){c.restore(a,true,d,"last.")}if(e.ownerCt){e.ownerCt.getLayout().beginExpand(e)}if(!e.isPlaceHolderCollapse()){if(e.header===(b=e.getReExpander())){e.header.removeClsWithUI(e.getHeaderCollapsedClasses(e.header));if(e.header.rendered){e.header.updateFrame()}}else{b.hidden=true;b.el.hide()}}if(e.resizer){e.resizer.enable()}},collapse:function(d,a){var c=this,e=d||c.collapseDirection,b=c.ownerCt;if(c.isCollapsingOrExpanding){return c}if(arguments.length<2){a=c.animCollapse}if(c.collapsed||c.fireEvent("beforecollapse",c,d,a)===false){return c}if(b&&c.isPlaceHolderCollapse()){return c.placeholderCollapse(d,a)}c.collapsed=e;c.beginCollapse();c.fireHierarchyEvent("collapse");return c.doCollapseExpand(1,a)},doCollapseExpand:function(a,b){var d=this,c=d.animCollapse,e=d.ownerLayout;d.animCollapse=b;d.isCollapsingOrExpanding=a;if(e&&!b){e.onContentChange(d)}else{d.updateLayout({isRoot:true})}d.animCollapse=c;return d},afterCollapse:function(b){var a=this,c=a.ownerLayout;a.isCollapsingOrExpanding=0;if(a.collapseTool){a.collapseTool.setType("expand-"+a.getOppositeDirection(a.collapseDirection))}if(c&&b){c.onContentChange(a)}a.setHiddenDocked();a.fireEvent("collapse",a)},setHiddenDocked:function(){var h=this,d=h.hiddenOnCollapse,b=h.getReExpander(),c=h.getDockedItems(),a=c.length,e=0,g;d.add(h.body);for(;e<a;e++){g=c[e];if(g&&g!==b&&g.el){d.add(g.el)}}d.setStyle("visibility","hidden")},restoreHiddenDocked:function(){var a=this.hiddenOnCollapse;a.setStyle("visibility","");a.clear()},getPlaceholder:function(c){var b=this,e=c||b.collapseDirection,a=null,d=b.placeholder;if(!d){if(b.floatable||(b.collapsible&&b.titleCollapse)){a={click:{fn:b.floatable?b.floatCollapsedPanel:b.toggleCollapse,element:"el",scope:b}}}b.placeholder=d=Ext.widget(b.createReExpander(e,{id:b.id+"-placeholder",listeners:a}))}if(!d.placeholderFor){if(!d.isComponent){b.placeholder=d=b.lookupComponent(d)}Ext.applyIf(d,{margins:b.margins,placeholderFor:b});d.addCls([Ext.baseCSSPrefix+"region-collapsed-placeholder",Ext.baseCSSPrefix+"region-collapsed-"+e+"-placeholder",b.collapsedCls])}return d},placeholderCollapse:function(e,a){var d=this,c=d.ownerCt,h=e||d.collapseDirection,b=Ext.baseCSSPrefix+"border-region-slide-in",g=d.getPlaceholder(e);d.isCollapsingOrExpanding=1;d.hidden=true;d.collapsed=h;if(g.rendered){if(g.el.dom.parentNode!==d.el.dom.parentNode){d.el.dom.parentNode.insertBefore(g.el.dom,d.el.dom)}g.hidden=false;g.el.show();c.updateLayout()}else{c.insert(c.items.indexOf(d),g)}if(d.rendered){d.el.setVisibilityMode(d.placeholderCollapseHideMode);if(a){d.el.addCls(b);g.el.hide();d.el.slideOut(h.substr(0,1),{preserveScroll:true,duration:Ext.Number.from(a,Ext.fx.Anim.prototype.duration),listeners:{afteranimate:function(){d.el.removeCls(b);g.el.show().setStyle("display","none").slideIn(h.substr(0,1),{easing:"linear",duration:100,listeners:{afteranimate:function(){g.focus();d.isCollapsingOrExpanding=0;d.fireEvent("collapse",d)}}})}}})}else{d.el.hide();d.isCollapsingOrExpanding=0;d.fireEvent("collapse",d)}}else{d.isCollapsingOrExpanding=0;d.fireEvent("collapse",d)}return d},floatCollapsedPanel:function(){var g=this,i=g.placeholder,h=i.getBox(true),d,e=Ext.baseCSSPrefix+"border-region-slide-in",b=g.collapsed,j=g.ownerCt||g,a;if(g.el.hasCls(e)){g.slideOutFloatedPanel();return}if(g.isSliding){return}g.isSliding=true;function c(l){if(!g.isDestroyed){var k=g.el.getRegion().union(i.el.getRegion()).adjust(1,-1,-1,1);if(!k.contains(l.getPoint())){g.slideOutFloatedPanel()}}}g.placeholder.el.hide();g.placeholder.hidden=true;g.el.show();g.hidden=false;g.collapsed=false;j.updateLayout();d=g.getBox(true);g.placeholder.el.show();g.placeholder.hidden=false;g.el.hide();g.hidden=true;g.collapsed=b;j.updateLayout();g.placeholderMouseMon=i.el.monitorMouseLeave(500,c);g.panelMouseMon=g.el.monitorMouseLeave(500,c);g.el.addCls(e);if(g.collapseTool){g.collapseTool.el.hide()}switch(g.collapsed){case"top":g.el.setLeftTop(h.x,h.y+h.height-1);a="t";break;case"right":g.el.setLeftTop(h.x-d.width+1,h.y);a="r";break;case"bottom":g.el.setLeftTop(h.x,h.y-d.height+1);a="b";break;case"left":g.el.setLeftTop(h.x+h.width-1,h.y);a="l";break}g.floatedFromCollapse=g.collapsed;g.collapsed=g.hidden=false;g.el.slideIn(a,{preserveScroll:true,listeners:{afteranimate:function(){g.isSliding=false}}})},isLayoutRoot:function(){if(this.floatedFromCollapse){return true}return this.callParent()},slideOutFloatedPanel:function(){var a=this,c=this.el,b;if(a.isSliding){return}a.isSliding=true;a.slideOutFloatedPanelBegin();if(typeof a.collapsed=="string"){b=a.collapsed.charAt(0)}c.slideOut(b,{preserveScroll:true,listeners:{afteranimate:function(){a.slideOutFloatedPanelEnd();a.el.removeCls(Ext.baseCSSPrefix+"border-region-slide-in");a.isSliding=false}}})},slideOutFloatedPanelBegin:function(){var a=this,b=this.el;a.collapsed=a.floatedFromCollapse;a.hidden=true;a.floatedFromCollapse=null;b.un(a.panelMouseMon);a.placeholder.el.un(a.placeholderMouseMon)},slideOutFloatedPanelEnd:function(){if(this.collapseTool){this.collapseTool.el.show()}},expand:function(a){var b=this;if(b.isCollapsingOrExpanding){return b}if(!arguments.length){a=b.animCollapse}if(!b.collapsed&&!b.floatedFromCollapse){return b}if(b.fireEvent("beforeexpand",b,a)===false){return b}if(b.isPlaceHolderCollapse()){return b.placeholderExpand(a)}b.restoreHiddenDocked();b.beginExpand();b.collapsed=false;b.fireHierarchyEvent("expand");return b.doCollapseExpand(2,a)},placeholderExpand:function(b){var d=this,h=d.collapsed,c=Ext.baseCSSPrefix+"border-region-slide-in",e,a,g;if(d.floatedFromCollapse){a=d.getPosition(true);d.slideOutFloatedPanelBegin();d.slideOutFloatedPanelEnd()}d.isCollapsingOrExpanding=2;d.placeholder.hidden=true;d.placeholder.el.hide();d.collapsed=false;d.show();if(b){if(a){e=d.el.getXY();d.el.setLeftTop(a[0],a[1]);d.el.moveTo(e[0],e[1],{duration:Ext.Number.from(b,Ext.fx.Anim.prototype.duration),listeners:{afteranimate:function(){d.el.removeCls(c);d.isCollapsingOrExpanding=0;d.fireEvent("expand",d)}}})}else{d.hidden=true;d.el.addCls(c);d.el.hide();d.collapsed=h;d.placeholder.show();g=h.substr(0,1);d.hidden=false;d.el.slideIn(g,{preserveScroll:true,duration:Ext.Number.from(b,Ext.fx.Anim.prototype.duration),listeners:{afteranimate:function(){d.collapsed=false;d.el.removeCls(c);d.placeholder.hide();d.isCollapsingOrExpanding=0;d.fireEvent("expand",d)}}})}}else{d.isCollapsingOrExpanding=0;d.fireEvent("expand",d)}return d},afterExpand:function(b){var a=this,c=a.ownerLayout;a.isCollapsingOrExpanding=0;if(a.collapseTool){a.collapseTool.setType("collapse-"+a.collapseDirection)}if(c&&b){c.onContentChange(a)}a.fireEvent("expand",a)},setBorder:function(a,c){if(c){return}var b=this,d=b.header;if(!a){a=0}else{a=Ext.Element.unitizeBox((a===true)?1:a)}if(d){if(d.isHeader){d.setBorder(a)}else{d.border=a}}if(b.rendered&&b.bodyBorder!==false){b.body.setStyle("border-width",a)}b.updateLayout();b.border=a},toggleCollapse:function(){return(this.collapsed||this.floatedFromCollapse)?this.expand():this.collapse()},getKeyMap:function(){return this.keyMap||(this.keyMap=new Ext.util.KeyMap(Ext.apply({target:this.el},this.keys)))},initDraggable:function(){this.dd=new Ext.panel.DD(this,Ext.isBoolean(this.draggable)?null:this.draggable)},ghostTools:function(){var e=[],g=this.header,d=g?g.query("tool[hidden=false]"):[],c,a,b;if(d.length){c=0;a=d.length;for(;c<a;c++){b=d[c];e.push({type:b.type})}}else{e=[{type:"placeholder"}]}return e},ghost:function(a){var d=this,b=d.ghostPanel,c=d.getBox(),e;if(!b){b=new Ext.panel.Panel({renderTo:document.body,floating:{shadow:false},frame:d.frame&&!d.alwaysFramed,alwaysFramed:d.alwaysFramed,overlapHeader:d.overlapHeader,headerPosition:d.headerPosition,baseCls:d.baseCls,cls:d.baseCls+"-ghost "+(a||"")});d.ghostPanel=b}else{b.el.show()}b.floatParent=d.floatParent;if(d.floating){b.setZIndex(Ext.Number.from(d.el.getStyle("zIndex"),0))}else{b.toFront()}if(!(d.preventHeader||(d.header===false))){e=b.header;if(e){e.suspendLayouts();Ext.Array.forEach(e.query("tool"),e.remove,e);e.resumeLayouts()}b.addTool(d.ghostTools());b.setTitle(d.title);b.setIconCls(d.iconCls)}b.setPagePosition(c.x,c.y);b.setSize(c.width,c.height);d.el.hide();return b},unghost:function(b,a){var c=this;if(!c.ghostPanel){return}if(b!==false){c.el.show();if(a!==false){c.setPagePosition(c.ghostPanel.el.getXY());if(c.hideMode=="offsets"){delete c.el.hideModeStyles}}Ext.defer(c.focus,10,c)}c.ghostPanel.el.hide()},beginDrag:function(){if(this.floatingDescendants){this.floatingDescendants.hide()}},endDrag:function(){if(this.floatingDescendants){this.floatingDescendants.show()}},initResizable:function(a){if(this.collapsed){a.disabled=true}this.callParent([a])}},function(){this.prototype.animCollapse=Ext.enableFx});Ext.define("Ext.tip.Tip",{extend:"Ext.panel.Panel",alternateClassName:"Ext.Tip",minWidth:40,maxWidth:300,shadow:"sides",defaultAlign:"tl-bl?",constrainPosition:true,autoRender:true,hidden:true,baseCls:Ext.baseCSSPrefix+"tip",floating:{shadow:true,shim:true,constrain:true},focusOnToFront:false,closeAction:"hide",ariaRole:"tooltip",alwaysFramed:true,frameHeader:false,initComponent:function(){var a=this;a.floating=Ext.apply({},{shadow:a.shadow},a.self.prototype.floating);a.callParent(arguments);a.constrain=a.constrain||a.constrainPosition},showAt:function(b){var a=this;this.callParent(arguments);if(a.isVisible()){a.setPagePosition(b[0],b[1]);if(a.constrainPosition||a.constrain){a.doConstrain()}a.toFront(true)}},showBy:function(a,b){this.showAt(this.el.getAlignToXY(a,b||this.defaultAlign))},initDraggable:function(){var a=this;a.draggable={el:a.getDragEl(),delegate:a.header.el,constrain:a,constrainTo:a.el.getScopeParent()};Ext.Component.prototype.initDraggable.call(a)},ghost:undefined,unghost:undefined});Ext.define("Ext.tip.ToolTip",{extend:"Ext.tip.Tip",alias:"widget.tooltip",alternateClassName:"Ext.ToolTip",autoHide:true,showDelay:500,hideDelay:200,dismissDelay:5000,trackMouse:false,anchorToTarget:true,anchorOffset:0,targetCounter:0,quickShowInterval:250,initComponent:function(){var a=this;a.callParent(arguments);a.lastActive=new Date();a.setTarget(a.target);a.origAnchor=a.anchor},onRender:function(b,a){var c=this;c.callParent(arguments);c.anchorCls=Ext.baseCSSPrefix+"tip-anchor-"+c.getAnchorPosition();c.anchorEl=c.el.createChild({cls:Ext.baseCSSPrefix+"tip-anchor "+c.anchorCls})},setTarget:function(d){var b=this,a=Ext.get(d),c;if(b.target){c=Ext.get(b.target);b.mun(c,"mouseover",b.onTargetOver,b);b.mun(c,"mouseout",b.onTargetOut,b);b.mun(c,"mousemove",b.onMouseMove,b)}b.target=a;if(a){b.mon(a,{freezeEvent:true,mouseover:b.onTargetOver,mouseout:b.onTargetOut,mousemove:b.onMouseMove,scope:b})}if(b.anchor){b.anchorTarget=b.target}},onMouseMove:function(d){var b=this,a=b.delegate?d.getTarget(b.delegate):b.triggerElement=true,c;if(a){b.targetXY=d.getXY();if(a===b.triggerElement){if(!b.hidden&&b.trackMouse){c=b.getTargetXY();if(b.constrainPosition){c=b.el.adjustForConstraints(c,b.el.getScopeParent())}b.setPagePosition(c)}}else{b.hide();b.lastActive=new Date(0);b.onTargetOver(d)}}else{if((!b.closable&&b.isVisible())&&b.autoHide!==false){b.hide()}}},getTargetXY:function(){var j=this,d,c,n,a,i,l,e,m,k,b,h,g;if(j.delegate){j.anchorTarget=j.triggerElement}if(j.anchor){j.targetCounter++;c=j.getOffsets();n=(j.anchorToTarget&&!j.trackMouse)?j.el.getAlignToXY(j.anchorTarget,j.getAnchorAlign()):j.targetXY;a=Ext.Element.getViewWidth()-5;i=Ext.Element.getViewHeight()-5;l=document.documentElement;e=document.body;m=(l.scrollLeft||e.scrollLeft||0)+5;k=(l.scrollTop||e.scrollTop||0)+5;b=[n[0]+c[0],n[1]+c[1]];h=j.getSize();g=j.constrainPosition;j.anchorEl.removeCls(j.anchorCls);if(j.targetCounter<2&&g){if(b[0]<m){if(j.anchorToTarget){j.defaultAlign="l-r";if(j.mouseOffset){j.mouseOffset[0]*=-1}}j.anchor="left";return j.getTargetXY()}if(b[0]+h.width>a){if(j.anchorToTarget){j.defaultAlign="r-l";if(j.mouseOffset){j.mouseOffset[0]*=-1}}j.anchor="right";return j.getTargetXY()}if(b[1]<k){if(j.anchorToTarget){j.defaultAlign="t-b";if(j.mouseOffset){j.mouseOffset[1]*=-1}}j.anchor="top";return j.getTargetXY()}if(b[1]+h.height>i){if(j.anchorToTarget){j.defaultAlign="b-t";if(j.mouseOffset){j.mouseOffset[1]*=-1}}j.anchor="bottom";return j.getTargetXY()}}j.anchorCls=Ext.baseCSSPrefix+"tip-anchor-"+j.getAnchorPosition();j.anchorEl.addCls(j.anchorCls);j.targetCounter=0;return b}else{d=j.getMouseOffset();return(j.targetXY)?[j.targetXY[0]+d[0],j.targetXY[1]+d[1]]:d}},getMouseOffset:function(){var a=this,b=a.anchor?[0,0]:[15,18];if(a.mouseOffset){b[0]+=a.mouseOffset[0];b[1]+=a.mouseOffset[1]}return b},getAnchorPosition:function(){var b=this,a;if(b.anchor){b.tipAnchor=b.anchor.charAt(0)}else{a=b.defaultAlign.match(/^([a-z]+)-([a-z]+)(\?)?$/);b.tipAnchor=a[1].charAt(0)}switch(b.tipAnchor){case"t":return"top";case"b":return"bottom";case"r":return"right"}return"left"},getAnchorAlign:function(){switch(this.anchor){case"top":return"tl-bl";case"left":return"tl-tr";case"right":return"tr-tl";default:return"bl-tl"}},getOffsets:function(){var c=this,d,b,a=c.getAnchorPosition().charAt(0);if(c.anchorToTarget&&!c.trackMouse){switch(a){case"t":b=[0,9];break;case"b":b=[0,-13];break;case"r":b=[-13,0];break;default:b=[9,0];break}}else{switch(a){case"t":b=[-15-c.anchorOffset,30];break;case"b":b=[-19-c.anchorOffset,-13-c.el.dom.offsetHeight];break;case"r":b=[-15-c.el.dom.offsetWidth,-13-c.anchorOffset];break;default:b=[25,-13-c.anchorOffset];break}}d=c.getMouseOffset();b[0]+=d[0];b[1]+=d[1];return b},onTargetOver:function(c){var b=this,a;if(b.disabled||c.within(b.target.dom,true)){return}a=c.getTarget(b.delegate);if(a){b.triggerElement=a;b.clearTimer("hide");b.targetXY=c.getXY();b.delayShow()}},delayShow:function(){var a=this;if(a.hidden&&!a.showTimer){if(Ext.Date.getElapsed(a.lastActive)<a.quickShowInterval){a.show()}else{a.showTimer=Ext.defer(a.show,a.showDelay,a)}}else{if(!a.hidden&&a.autoHide!==false){a.show()}}},onShowVeto:function(){this.callParent();this.clearTimer("show")},onTargetOut:function(b){var a=this;if(a.disabled||b.within(a.target.dom,true)){return}a.clearTimer("show");if(a.autoHide!==false){a.delayHide()}},delayHide:function(){var a=this;if(!a.hidden&&!a.hideTimer){a.hideTimer=Ext.defer(a.hide,a.hideDelay,a)}},hide:function(){var a=this;a.clearTimer("dismiss");a.lastActive=new Date();if(a.anchorEl){a.anchorEl.hide()}a.callParent(arguments);delete a.triggerElement},show:function(){var a=this;this.callParent();if(this.hidden===false){a.setPagePosition(-10000,-10000);if(a.anchor){a.anchor=a.origAnchor}if(!a.calledFromShowAt){a.showAt(a.getTargetXY())}if(a.anchor){a.syncAnchor();a.anchorEl.show()}else{a.anchorEl.hide()}}},showAt:function(b){var a=this;a.lastActive=new Date();a.clearTimers();a.calledFromShowAt=true;if(!a.isVisible()){this.callParent(arguments)}if(a.isVisible()){a.setPagePosition(b[0],b[1]);if(a.constrainPosition||a.constrain){a.doConstrain()}a.toFront(true);a.el.sync(true);if(a.dismissDelay&&a.autoHide!==false){a.dismissTimer=Ext.defer(a.hide,a.dismissDelay,a)}if(a.anchor){a.syncAnchor();if(!a.anchorEl.isVisible()){a.anchorEl.show()}}else{a.anchorEl.hide()}}delete a.calledFromShowAt},syncAnchor:function(){var c=this,a,b,d;switch(c.tipAnchor.charAt(0)){case"t":a="b";b="tl";d=[20+c.anchorOffset,1];break;case"r":a="l";b="tr";d=[-1,12+c.anchorOffset];break;case"b":a="t";b="bl";d=[20+c.anchorOffset,-1];break;default:a="r";b="tl";d=[1,12+c.anchorOffset];break}c.anchorEl.alignTo(c.el,a+"-"+b,d);c.anchorEl.setStyle("z-index",parseInt(c.el.getZIndex(),10)||0+1).setVisibilityMode(Ext.Element.DISPLAY)},setPagePosition:function(a,c){var b=this;b.callParent(arguments);if(b.anchor){b.syncAnchor()}},clearTimer:function(a){a=a+"Timer";clearTimeout(this[a]);delete this[a]},clearTimers:function(){var a=this;a.clearTimer("show");a.clearTimer("dismiss");a.clearTimer("hide")},onShow:function(){var a=this;a.callParent();a.mon(Ext.getDoc(),"mousedown",a.onDocMouseDown,a)},onHide:function(){var a=this;a.callParent();a.mun(Ext.getDoc(),"mousedown",a.onDocMouseDown,a)},onDocMouseDown:function(b){var a=this;if(!a.closable&&!b.within(a.el.dom)){a.disable();Ext.defer(a.doEnable,100,a)}},doEnable:function(){if(!this.isDestroyed){this.enable()}},onDisable:function(){this.callParent();this.clearTimers();this.hide()},beforeDestroy:function(){var a=this;a.clearTimers();Ext.destroy(a.anchorEl);delete a.anchorEl;delete a.target;delete a.anchorTarget;delete a.triggerElement;a.callParent()},onDestroy:function(){Ext.getDoc().un("mousedown",this.onDocMouseDown,this);this.callParent()}});Ext.define("Ext.tip.QuickTip",{extend:"Ext.tip.ToolTip",alias:"widget.quicktip",alternateClassName:"Ext.QuickTip",interceptTitles:false,title:"&#160;",tagConfig:{namespace:"data-",attribute:"qtip",width:"qwidth",target:"target",title:"qtitle",hide:"hide",cls:"qclass",align:"qalign",anchor:"anchor"},initComponent:function(){var a=this;a.target=a.target||Ext.getDoc();a.targets=a.targets||{};a.callParent()},register:function(c){var h=Ext.isArray(c)?c:arguments,d=0,a=h.length,g,b,e;for(;d<a;d++){c=h[d];g=c.target;if(g){if(Ext.isArray(g)){for(b=0,e=g.length;b<e;b++){this.targets[Ext.id(g[b])]=c}}else{this.targets[Ext.id(g)]=c}}}},unregister:function(a){delete this.targets[Ext.id(a)]},cancelShow:function(a){var b=this,c=b.activeTarget;a=Ext.get(a).dom;if(b.isVisible()){if(c&&c.el==a){b.hide()}}else{if(c&&c.el==a){b.clearTimer("show")}}},getTipCfg:function(d){var c=d.getTarget(),b=c.title,a;if(this.interceptTitles&&b&&Ext.isString(b)){c.qtip=b;c.removeAttribute("title");d.preventDefault();return{text:b}}else{a=this.tagConfig;c=d.getTarget("["+a.namespace+a.attribute+"]");if(c){return{target:c,text:c.getAttribute(a.namespace+a.attribute)}}}},onTargetOver:function(i){var k=this,j=i.getTarget(k.delegate),a,d,b,h,l,c,n,g,p,m,o;if(k.disabled){return}k.targetXY=i.getXY();if(!j||j.nodeType!==1||j==document.documentElement||j==document.body){return}if(k.activeTarget&&((j==k.activeTarget.el)||Ext.fly(k.activeTarget.el).contains(j))){k.clearTimer("hide");k.show();return}if(j){g=k.targets;for(o in g){if(g.hasOwnProperty(o)){m=g[o];p=Ext.fly(m.target);if(p&&(p.dom===j||p.contains(j))){b=p.dom;break}}}if(b){k.activeTarget=k.targets[b.id];k.activeTarget.el=j;k.anchor=k.activeTarget.anchor;if(k.anchor){k.anchorTarget=j}a=Ext.isDefined(k.activeTarget.showDelay);if(a){d=k.showDelay;k.showDelay=k.activeTarget.showDelay}k.delayShow();if(a){k.showDelay=d}return}}b=Ext.fly(j,"_quicktip-target");h=k.tagConfig;l=h.namespace;c=k.getTipCfg(i);if(c){if(c.target){j=c.target;b=Ext.fly(j,"_quicktip-target")}n=b.getAttribute(l+h.hide);k.activeTarget={el:j,text:c.text,width:+b.getAttribute(l+h.width)||null,autoHide:n!="user"&&n!=="false",title:b.getAttribute(l+h.title),cls:b.getAttribute(l+h.cls),align:b.getAttribute(l+h.align)};k.anchor=b.getAttribute(l+h.anchor);if(k.anchor){k.anchorTarget=j}a=Ext.isDefined(k.activeTarget.showDelay);if(a){d=k.showDelay;k.showDelay=k.activeTarget.showDelay}k.delayShow();if(a){k.showDelay=d}}},onTargetOut:function(g){var c=this,d=c.activeTarget,a,b;if(d&&g.within(c.activeTarget.el)&&!c.getTipCfg(g)){return}c.clearTimer("show");delete c.activeTarget;if(c.autoHide!==false){a=d&&Ext.isDefined(d.hideDelay);if(a){b=c.hideDelay;c.hideDelay=d.hideDelay}c.delayHide();if(a){c.hideDelay=b}}},showAt:function(d){var b=this,c=b.activeTarget,a;if(c){if(!b.rendered){b.render(Ext.getBody());b.activeTarget=c}b.suspendLayouts();if(c.title){b.setTitle(c.title);b.header.show()}else{b.header.hide()}b.update(c.text);b.autoHide=c.autoHide;b.dismissDelay=c.dismissDelay||b.dismissDelay;if(c.mouseOffset){d[0]+=c.mouseOffset[0];d[1]+=c.mouseOffset[1]}a=b.lastCls;if(a){b.removeCls(a);delete b.lastCls}a=c.cls;if(a){b.addCls(a);b.lastCls=a}b.setWidth(c.width);if(b.anchor){b.constrainPosition=false}else{if(c.align){d=b.el.getAlignToXY(c.el,c.align);b.constrainPosition=false}else{b.constrainPosition=true}}b.resumeLayouts(true)}b.callParent([d])},hide:function(){delete this.activeTarget;this.callParent()}});Ext.define("Ext.tip.QuickTipManager",(function(){var b,a=false;return{requires:["Ext.tip.QuickTip"],singleton:true,alternateClassName:"Ext.QuickTips",init:function(g,d){if(!b){if(!Ext.isReady){Ext.onReady(function(){Ext.tip.QuickTipManager.init(g,d)});return}var c=Ext.apply({disabled:a,id:"ext-quicktips-tip"},d),e=c.className,h=c.xtype;if(e){delete c.className}else{if(h){e="widget."+h;delete c.xtype}}if(g!==false){c.renderTo=document.body}b=Ext.create(e||"Ext.tip.QuickTip",c)}},destroy:function(){if(b){var c;b.destroy();b=c}},ddDisable:function(){if(b&&!a){b.disable()}},ddEnable:function(){if(b&&!a){b.enable()}},enable:function(){if(b){b.enable()}a=false},disable:function(){if(b){b.disable()}a=true},isEnabled:function(){return b!==undefined&&!b.disabled},getQuickTip:function(){return b},register:function(){b.register.apply(b,arguments)},unregister:function(){b.unregister.apply(b,arguments)},tips:function(){b.register.apply(b,arguments)}}}()));Ext.define("Ext.app.EventBus",{requires:["Ext.util.Event","Ext.Component"],mixins:{observable:"Ext.util.Observable"},constructor:function(){this.mixins.observable.constructor.call(this);this.bus={};var a=this;Ext.override(Ext.Component,{fireEvent:function(b){if(Ext.util.Observable.prototype.fireEvent.apply(this,arguments)!==false){return a.dispatch.call(a,b,this,arguments)}return false}})},dispatch:function(l,g,k){var h=this.bus,m=h[l],d,c,b,n,a,e,j;if(m){for(d in m){if(m.hasOwnProperty(d)&&g.is(d)){c=m[d];for(b in c){if(c.hasOwnProperty(b)){n=c[b];for(e=0,j=n.length;e<j;e++){a=n[e];if(a.fire.apply(a,Array.prototype.slice.call(k,1))===false){return false}}}}}}}return true},control:function(l,j,e){var h=this.bus,i,o,g,d,n,c,m,a,b,k;if(Ext.isString(l)){d=l;l={};l[d]=j;this.control(l,null,e);return}i=Ext.util.Observable.HasListeners.prototype;for(d in l){if(l.hasOwnProperty(d)){b=l[d]||{};for(k in b){if(b.hasOwnProperty(k)){n={};c=b[k];m=e;a=new Ext.util.Event(e,k);if(Ext.isObject(c)){n=c;c=n.fn;m=n.scope||e;delete n.fn;delete n.scope}a.addListener(c,m,n);i[k]=1;o=h[k]||(h[k]={});o=o[d]||(o[d]={});g=o[e.id]||(o[e.id]=[]);g.push(a)}}}}}});Ext.define("Ext.app.Application",{extend:"Ext.app.Controller",requires:["Ext.ModelManager","Ext.data.Model","Ext.data.StoreManager","Ext.tip.QuickTipManager","Ext.ComponentManager","Ext.app.EventBus"],scope:undefined,enableQuickTips:true,appFolder:"app",autoCreateViewport:false,constructor:function(b){b=b||{};Ext.apply(this,b);var g=this,l=b.requires||[],a,e,c,d,k,j,h;Ext.Loader.setPath(g.name,g.appFolder);if(g.paths){k=g.paths;for(h in k){if(k.hasOwnProperty(h)){j=k[h];Ext.Loader.setPath(h,j)}}}g.callParent(arguments);g.eventbus=new Ext.app.EventBus;a=Ext.Array.from(g.controllers);e=a&&a.length;g.controllers=new Ext.util.MixedCollection();if(g.autoCreateViewport){l.push(g.getModuleClassName("Viewport","view"))}for(c=0;c<e;c++){l.push(g.getModuleClassName(a[c],"controller"))}Ext.require(l);Ext.onReady(function(){g.init(g);for(c=0;c<e;c++){d=g.getController(a[c]);d.init(g)}g.onBeforeLaunch.call(g)},g)},control:function(b,c,a){this.eventbus.control(b,c,a)},launch:Ext.emptyFn,onBeforeLaunch:function(){var b=this,e,g,d,a;if(b.enableQuickTips){Ext.tip.QuickTipManager.init()}if(b.autoCreateViewport){b.getView("Viewport").create()}b.launch.call(this.scope||this);b.launched=true;b.fireEvent("launch",this);e=b.controllers.items;d=e.length;for(g=0;g<d;g++){a=e[g];a.onLaunch(this)}},getModuleClassName:function(a,b){if(a.indexOf(".")!==-1&&(Ext.ClassManager.isCreated(a)||Ext.Loader.isAClassNameWithAKnownPrefix(a))){return a}else{return this.name+"."+b+"."+a}},getController:function(b){var a=this.controllers.get(b);if(!a){a=Ext.create(this.getModuleClassName(b,"controller"),{application:this,id:b});this.controllers.add(a)}return a},getStore:function(b){var a=Ext.StoreManager.get(b);if(!a){a=Ext.create(this.getModuleClassName(b,"store"),{storeId:b})}return a},getModel:function(a){a=this.getModuleClassName(a,"model");return Ext.ModelManager.getModel(a)},getView:function(a){a=this.getModuleClassName(a,"view");return Ext.ClassManager.get(a)}});Ext.define("Ext.button.Split",{alias:"widget.splitbutton",extend:"Ext.button.Button",alternateClassName:"Ext.SplitButton",arrowCls:"split",split:true,initComponent:function(){this.callParent();this.addEvents("arrowclick")},setArrowHandler:function(b,a){this.arrowHandler=b;this.scope=a},onClick:function(c,a){var b=this;c.preventDefault();if(!b.disabled){if(b.overMenuTrigger){b.maybeShowMenu();b.fireEvent("arrowclick",b,c);if(b.arrowHandler){b.arrowHandler.call(b.scope||b,b,c)}}else{b.doToggle();b.fireHandler(c)}}}});Ext.define("Ext.button.Cycle",{alias:"widget.cycle",extend:"Ext.button.Split",alternateClassName:"Ext.CycleButton",getButtonText:function(b){var a=this,c="";if(b&&a.showText===true){if(a.prependText){c+=a.prependText}c+=b.text;return c}return a.text},setActiveItem:function(c,a){var b=this;if(!Ext.isObject(c)){c=b.menu.getComponent(c)}if(c){if(!b.rendered){b.text=b.getButtonText(c);b.iconCls=c.iconCls}else{b.setText(b.getButtonText(c));b.setIconCls(c.iconCls)}b.activeItem=c;if(!c.checked){c.setChecked(true,false)}if(b.forceIcon){b.setIconCls(b.forceIcon)}if(!a){b.fireEvent("change",b,c)}}},getActiveItem:function(){return this.activeItem},initComponent:function(){var g=this,e=0,b,c,a,d;g.addEvents("change");if(g.changeHandler){g.on("change",g.changeHandler,g.scope||g);delete g.changeHandler}b=(g.menu.items||[]).concat(g.items||[]);g.menu=Ext.applyIf({cls:Ext.baseCSSPrefix+"cycle-menu",items:[]},g.menu);a=b.length;for(c=0;c<a;c++){d=b[c];d=Ext.applyIf({group:g.id,itemIndex:c,checkHandler:g.checkHandler,scope:g,checked:d.checked||false},d);g.menu.items.push(d);if(d.checked){e=c}}g.itemCount=g.menu.items.length;g.callParent(arguments);g.on("click",g.toggleSelected,g);g.setActiveItem(e,g);if(g.width&&g.showText){g.addCls(Ext.baseCSSPrefix+"cycle-fixed-width")}},checkHandler:function(a,b){if(b){this.setActiveItem(a)}},toggleSelected:function(){var c=this,a=c.menu,b;b=c.activeItem.next(":not([disabled])")||a.items.getAt(0);b.setChecked(true)}});Ext.define("Ext.chart.Callout",{constructor:function(a){if(a.callouts){a.callouts.styles=Ext.applyIf(a.callouts.styles||{},{color:"#000",font:"11px Helvetica, sans-serif"});this.callouts=Ext.apply(this.callouts||{},a.callouts);this.calloutsArray=[]}},renderCallouts:function(){if(!this.callouts){return}var v=this,m=v.items,a=v.chart.animate,u=v.callouts,h=u.styles,e=v.calloutsArray,b=v.chart.store,s=b.getCount(),d=m.length/s,l=[],r,c,q,n,t,g,k,o;for(r=0,c=0;r<s;r++){for(q=0;q<d;q++){t=m[c];g=e[c];k=b.getAt(r);o=u.filter(k);if(!o&&!g){c++;continue}if(!g){e[c]=g=v.onCreateCallout(k,t,r,o,q,c)}for(n in g){if(g[n]&&g[n].setAttributes){g[n].setAttributes(h,true)}}if(!o){for(n in g){if(g[n]){if(g[n].setAttributes){g[n].setAttributes({hidden:true},true)}else{if(g[n].setVisible){g[n].setVisible(false)}}}}}u.renderer(g,k);v.onPlaceCallout(g,k,t,r,o,a,q,c,l);l.push(g);c++}}this.hideCallouts(c)},onCreateCallout:function(g,n,e,j){var k=this,l=k.calloutsGroup,d=k.callouts,o=d.styles,c=o.width,m=o.height,h=k.chart,b=h.surface,a={lines:false};a.lines=b.add(Ext.apply({},{type:"path",path:"M0,0",stroke:k.getLegendColor()||"#555"},o));if(d.items){a.panel=new Ext.Panel({style:"position: absolute;",width:c,height:m,items:d.items,renderTo:h.el})}return a},hideCallouts:function(b){var d=this.calloutsArray,a=d.length,e,c;while(a-->b){e=d[a];for(c in e){if(e[c]){e[c].hide(true)}}}}});Ext.define("Ext.layout.component.Draw",{alias:"layout.draw",extend:"Ext.layout.component.Auto",type:"draw",measureContentWidth:function(b){var c=b.target,a=b.getPaddingInfo(),d=this.getBBox(b);if(!c.viewBox){if(c.autoSize){return d.width+a.width}else{return d.x+d.width+a.width}}else{if(b.heightModel.shrinkWrap){return a.width}else{return d.width/d.height*(b.getProp("contentHeight")-a.height)+a.width}}},measureContentHeight:function(b){var c=b.target,a=b.getPaddingInfo(),d=this.getBBox(b);if(!b.target.viewBox){if(c.autoSize){return d.height+a.height}else{return d.y+d.height+a.height}}else{if(b.widthModel.shrinkWrap){return a.height}else{return d.height/d.width*(b.getProp("contentWidth")-a.width)+a.height}}},getBBox:function(a){var b=a.surfaceBBox;if(!b){b=a.target.surface.items.getBBox();if(b.width===-Infinity&&b.height===-Infinity){b.width=b.height=b.x=b.y=0}a.surfaceBBox=b}return b},publishInnerWidth:function(b,a){b.setContentWidth(a-b.getFrameInfo().width,true)},publishInnerHeight:function(b,a){b.setContentHeight(a-b.getFrameInfo().height,true)},finishedLayout:function(c){var b=c.props,a=c.getPaddingInfo();this.owner.setSurfaceSize(b.contentWidth-a.width,b.contentHeight-a.height);this.callParent(arguments)}});Ext.define("Ext.draw.CompositeSprite",{extend:"Ext.util.MixedCollection",mixins:{animate:"Ext.util.Animate"},autoDestroy:false,isCompositeSprite:true,constructor:function(a){var b=this;a=a||{};Ext.apply(b,a);b.addEvents("mousedown","mouseup","mouseover","mouseout","click");b.id=Ext.id(null,"ext-sprite-group-");b.callParent()},onClick:function(a){this.fireEvent("click",a)},onMouseUp:function(a){this.fireEvent("mouseup",a)},onMouseDown:function(a){this.fireEvent("mousedown",a)},onMouseOver:function(a){this.fireEvent("mouseover",a)},onMouseOut:function(a){this.fireEvent("mouseout",a)},attachEvents:function(b){var a=this;b.on({scope:a,mousedown:a.onMouseDown,mouseup:a.onMouseUp,mouseover:a.onMouseOver,mouseout:a.onMouseOut,click:a.onClick})},add:function(b,c){var a=this.callParent(arguments);this.attachEvents(a);return a},insert:function(a,b,c){return this.callParent(arguments)},remove:function(b){var a=this;b.un({scope:a,mousedown:a.onMouseDown,mouseup:a.onMouseUp,mouseover:a.onMouseOver,mouseout:a.onMouseOut,click:a.onClick});return a.callParent(arguments)},getBBox:function(){var e=0,n,j,k=this.items,g=this.length,h=Infinity,c=h,m=-h,b=h,l=-h,d,a;for(;e<g;e++){n=k[e];if(n.el&&!n.bboxExcluded){j=n.getBBox();c=Math.min(c,j.x);b=Math.min(b,j.y);m=Math.max(m,j.height+j.y);l=Math.max(l,j.width+j.x)}}return{x:c,y:b,height:m-b,width:l-c}},setAttributes:function(c,e){var d=0,b=this.items,a=this.length;for(;d<a;d++){b[d].setAttributes(c,e)}return this},hide:function(d){var c=0,b=this.items,a=this.length;for(;c<a;c++){b[c].hide(d)}return this},show:function(d){var c=0,b=this.items,a=this.length;for(;c<a;c++){b[c].show(d)}return this},redraw:function(){var e=this,d=0,c=e.items,b=e.getSurface(),a=e.length;if(b){for(;d<a;d++){b.renderItem(c[d])}}return e},setStyle:function(g){var c=0,b=this.items,a=this.length,e,d;for(;c<a;c++){e=b[c];d=e.el;if(d){d.setStyle(g)}}},addCls:function(e){var d=0,c=this.items,b=this.getSurface(),a=this.length;if(b){for(;d<a;d++){b.addCls(c[d],e)}}},removeCls:function(e){var d=0,c=this.items,b=this.getSurface(),a=this.length;if(b){for(;d<a;d++){b.removeCls(c[d],e)}}},getSurface:function(){var a=this.first();if(a){return a.surface}return null},destroy:function(){var d=this,a=d.getSurface(),c=d.autoDestroy,b;if(a){while(d.getCount()>0){b=d.first();d.remove(b);a.remove(b,c)}}d.clearListeners()}});Ext.define("Ext.draw.Surface",{mixins:{observable:"Ext.util.Observable"},requires:["Ext.draw.CompositeSprite"],uses:["Ext.draw.engine.Svg","Ext.draw.engine.Vml","Ext.draw.engine.SvgExporter","Ext.draw.engine.ImageExporter"],separatorRe:/[, ]+/,statics:{create:function(b,d){d=d||["Svg","Vml"];var c=0,a=d.length,e;for(;c<a;c++){if(Ext.supports[d[c]]!==false){return Ext.create("Ext.draw.engine."+d[c],b)}}return false},save:function(a,b){b=b||{};var e={"image/png":"Image","image/jpeg":"Image","image/svg+xml":"Svg"},d=e[b.type]||"Svg",c=Ext.draw.engine[d+"Exporter"];return c.generate(a,b)}},availableAttrs:{blur:0,"clip-rect":"0 0 1e9 1e9",cursor:"default",cx:0,cy:0,"dominant-baseline":"auto",fill:"none","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:"",height:0,hidden:false,href:"http://sencha.com/",opacity:1,path:"M0,0",radius:0,rx:0,ry:0,scale:"1 1",src:"",stroke:"none","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank",text:"","text-anchor":"middle",title:"Ext Draw",width:0,x:0,y:0,zIndex:0},container:undefined,height:352,width:512,x:0,y:0,orderSpritesByZIndex:true,constructor:function(a){var b=this;a=a||{};Ext.apply(b,a);b.domRef=Ext.getDoc().dom;b.customAttributes={};b.addEvents("mousedown","mouseup","mouseover","mouseout","mousemove","mouseenter","mouseleave","click","dblclick");b.mixins.observable.constructor.call(b);b.getId();b.initGradients();b.initItems();if(b.renderTo){b.render(b.renderTo);delete b.renderTo}b.initBackground(a.background)},initSurface:Ext.emptyFn,renderItem:Ext.emptyFn,renderItems:Ext.emptyFn,setViewBox:function(b,d,c,a){if(isFinite(b)&&isFinite(d)&&isFinite(c)&&isFinite(a)){this.viewBox={x:b,y:d,width:c,height:a};this.applyViewBox()}},addCls:Ext.emptyFn,removeCls:Ext.emptyFn,setStyle:Ext.emptyFn,initGradients:function(){if(this.hasOwnProperty("gradients")){var a=this.gradients,d=a.length,b=this.addGradient,c;if(a){for(c=0;c<d;c++){if(b.call(this,a[c],c,d)===false){break}}}}},initItems:function(){var a=this.items;this.items=new Ext.draw.CompositeSprite();this.items.autoDestroy=true;this.groups=new Ext.draw.CompositeSprite();if(a){this.add(a)}},initBackground:function(b){var e=this,d=e.width,a=e.height,g,h,c;if(Ext.isString(b)){b={fill:b}}if(b){if(b.gradient){h=b.gradient;g=h.id;e.addGradient(h);e.background=e.add({type:"rect",x:0,y:0,width:d,height:a,fill:"url(#"+g+")",zIndex:-1})}else{if(b.fill){e.background=e.add({type:"rect",x:0,y:0,width:d,height:a,fill:b.fill,zIndex:-1})}else{if(b.image){e.background=e.add({type:"image",x:0,y:0,width:d,height:a,src:b.image,zIndex:-1})}}}e.background.bboxExcluded=true}},setSize:function(a,b){this.applyViewBox()},scrubAttrs:function(d){var c,b={},a={},e=d.attr;for(c in e){if(this.translateAttrs.hasOwnProperty(c)){b[this.translateAttrs[c]]=e[c];a[this.translateAttrs[c]]=true}else{if(this.availableAttrs.hasOwnProperty(c)&&!a[c]){b[c]=e[c]}}}return b},onClick:function(a){this.processEvent("click",a)},onDblClick:function(a){this.processEvent("dblclick",a)},onMouseUp:function(a){this.processEvent("mouseup",a)},onMouseDown:function(a){this.processEvent("mousedown",a)},onMouseOver:function(a){this.processEvent("mouseover",a)},onMouseOut:function(a){this.processEvent("mouseout",a)},onMouseMove:function(a){this.fireEvent("mousemove",a)},onMouseEnter:Ext.emptyFn,onMouseLeave:Ext.emptyFn,addGradient:Ext.emptyFn,add:function(){var g=Array.prototype.slice.call(arguments),j,d,a=g.length>1,h,b,c,e,k;if(a||Ext.isArray(g[0])){h=a?g:g[0];b=[];for(c=0,e=h.length;c<e;c++){k=h[c];k=this.add(k);b.push(k)}return b}j=this.prepareItems(g[0],true)[0];this.insertByZIndex(j);this.onAdd(j);return j},insertByZIndex:function(j){var g=this,d=g.items.items,c=d.length,k=Math.ceil,h=j.attr.zIndex,i=c,b=i-1,e=0,a;if(g.orderSpritesByZIndex&&c&&h<d[b].attr.zIndex){while(e<=b){i=k((e+b)/2);a=d[i].attr.zIndex;if(a>h){b=i-1}else{if(a<h){e=i+1}else{break}}}while(i<c&&d[i].attr.zIndex<=h){i++}}g.items.insert(i,j);return i},onAdd:function(d){var g=d.group,b=d.draggable,a,e,c;if(g){a=[].concat(g);e=a.length;for(c=0;c<e;c++){g=a[c];this.getGroup(g).add(d)}delete d.group}if(b){d.initDraggable()}},remove:function(b,e){if(b){this.items.remove(b);var a=[].concat(this.groups.items),d=a.length,c;for(c=0;c<d;c++){a[c].remove(b)}b.onRemove();if(e===true){b.destroy()}}},removeAll:function(d){var a=this.items.items,c=a.length,b;for(b=c-1;b>-1;b--){this.remove(a[b],d)}},onRemove:Ext.emptyFn,onDestroy:Ext.emptyFn,applyViewBox:function(){var d=this,l=d.viewBox,a=d.width||1,h=d.height||1,g,e,j,b,i,c,k;if(l&&(a||h)){g=l.x;e=l.y;j=l.width;b=l.height;i=h/b;c=a/j;k=Math.min(c,i);if(j*k<a){g-=(a-j*k)/2/k}if(b*k<h){e-=(h-b*k)/2/k}d.viewBoxShift={dx:-g,dy:-e,scale:k};if(d.background){d.background.setAttributes(Ext.apply({},{x:g,y:e,width:a/k,height:h/k},{hidden:false}),true)}}else{if(d.background&&a&&h){d.background.setAttributes(Ext.apply({x:0,y:0,width:a,height:h},{hidden:false}),true)}}},getBBox:function(a,b){var c=this["getPath"+a.type](a);if(b){a.bbox.plain=a.bbox.plain||Ext.draw.Draw.pathDimensions(c);return a.bbox.plain}if(a.dirtyTransform){this.applyTransformations(a,true)}a.bbox.transform=a.bbox.transform||Ext.draw.Draw.pathDimensions(Ext.draw.Draw.mapPath(c,a.matrix));return a.bbox.transform},transformToViewBox:function(a,d){if(this.viewBoxShift){var c=this,b=c.viewBoxShift;return[a/b.scale-b.dx,d/b.scale-b.dy]}else{return[a,d]}},applyTransformations:function(b,d){if(b.type=="text"){b.bbox.transform=0;this.transform(b,false)}b.dirtyTransform=false;var c=this,a=b.attr;if(a.translation.x!=null||a.translation.y!=null){c.translate(b)}if(a.scaling.x!=null||a.scaling.y!=null){c.scale(b)}if(a.rotation.degrees!=null){c.rotate(b)}b.bbox.transform=0;this.transform(b,d);b.transformations=[]},rotate:function(a){var e,b=a.attr.rotation.degrees,d=a.attr.rotation.x,c=a.attr.rotation.y;if(!Ext.isNumber(d)||!Ext.isNumber(c)){e=this.getBBox(a,true);d=!Ext.isNumber(d)?e.x+e.width/2:d;c=!Ext.isNumber(c)?e.y+e.height/2:c}a.transformations.push({type:"rotate",degrees:b,x:d,y:c})},translate:function(b){var a=b.attr.translation.x||0,c=b.attr.translation.y||0;b.transformations.push({type:"translate",x:a,y:c})},scale:function(b){var e,a=b.attr.scaling.x||1,g=b.attr.scaling.y||1,d=b.attr.scaling.centerX,c=b.attr.scaling.centerY;if(!Ext.isNumber(d)||!Ext.isNumber(c)){e=this.getBBox(b,true);d=!Ext.isNumber(d)?e.x+e.width/2:d;c=!Ext.isNumber(c)?e.y+e.height/2:c}b.transformations.push({type:"scale",x:a,y:g,centerX:d,centerY:c})},rectPath:function(a,e,b,c,d){if(d){return[["M",a+d,e],["l",b-d*2,0],["a",d,d,0,0,1,d,d],["l",0,c-d*2],["a",d,d,0,0,1,-d,d],["l",d*2-b,0],["a",d,d,0,0,1,-d,-d],["l",0,d*2-c],["a",d,d,0,0,1,d,-d],["z"]]}return[["M",a,e],["l",b,0],["l",0,c],["l",-b,0],["z"]]},ellipsePath:function(a,d,c,b){if(b==null){b=c}return[["M",a,d],["m",0,-b],["a",c,b,0,1,1,0,2*b],["a",c,b,0,1,1,0,-2*b],["z"]]},getPathpath:function(a){return a.attr.path},getPathcircle:function(c){var b=c.attr;return this.ellipsePath(b.x,b.y,b.radius,b.radius)},getPathellipse:function(c){var b=c.attr;return this.ellipsePath(b.x,b.y,b.radiusX||(b.width/2)||0,b.radiusY||(b.height/2)||0)},getPathrect:function(c){var b=c.attr;return this.rectPath(b.x||0,b.y||0,b.width||0,b.height||0,b.r||0)},getPathimage:function(c){var b=c.attr;return this.rectPath(b.x||0,b.y||0,b.width,b.height)},getPathtext:function(a){var b=this.getBBoxText(a);return this.rectPath(b.x,b.y,b.width,b.height)},createGroup:function(b){var a=this.groups.get(b);if(!a){a=new Ext.draw.CompositeSprite({surface:this});a.id=b||Ext.id(null,"ext-surface-group-");this.groups.add(a)}return a},getGroup:function(b){var a;if(typeof b=="string"){a=this.groups.get(b);if(!a){a=this.createGroup(b)}}else{a=b}return a},prepareItems:function(a,c){a=[].concat(a);var e,b,d;for(b=0,d=a.length;b<d;b++){e=a[b];if(!(e instanceof Ext.draw.Sprite)){e.surface=this;a[b]=this.createItem(e)}else{e.surface=this}}return a},setText:Ext.emptyFn,createItem:Ext.emptyFn,getId:function(){return this.id||(this.id=Ext.id(null,"ext-surface-"))},destroy:function(){var a=this;delete a.domRef;if(a.background){a.background.destroy()}a.removeAll(true);Ext.destroy(a.groups.items)}});Ext.define("Ext.draw.Component",{alias:"widget.draw",extend:"Ext.Component",requires:["Ext.draw.Surface","Ext.layout.component.Draw"],enginePriority:["Svg","Vml"],baseCls:Ext.baseCSSPrefix+"surface",componentLayout:"draw",viewBox:true,shrinkWrap:3,autoSize:false,initComponent:function(){this.callParent(arguments);this.addEvents("mousedown","mouseup","mousemove","mouseenter","mouseleave","click","dblclick")},onRender:function(){var d=this,j=d.viewBox,b=d.autoSize,h,c,a,i,g,e;d.callParent(arguments);if(d.createSurface()!==false){c=d.surface.items;if(j||b){h=c.getBBox();a=h.width;i=h.height;g=h.x;e=h.y;if(d.viewBox){d.surface.setViewBox(g,e,a,i)}else{d.autoSizeSurface()}}}},autoSizeSurface:function(){var a=this.surface.items.getBBox();this.setSurfaceSize(a.width,a.height)},setSurfaceSize:function(b,a){this.surface.setSize(b,a);if(this.autoSize){var c=this.surface.items.getBBox();this.surface.setViewBox(c.x,c.y-(+Ext.isOpera),b,a)}},createSurface:function(){var d=this,b=Ext.applyIf({renderTo:d.el,height:d.height,width:d.width,items:d.items},d.initialConfig),a;delete b.listeners;a=Ext.draw.Surface.create(b);if(!a){return false}d.surface=a;function c(e){return function(g){d.fireEvent(e,g)}}a.on({scope:d,mouseup:c("mouseup"),mousedown:c("mousedown"),mousemove:c("mousemove"),mouseenter:c("mouseenter"),mouseleave:c("mouseleave"),click:c("click"),dblclick:c("dblclick")})},onDestroy:function(){Ext.destroy(this.surface);this.callParent(arguments)}});Ext.define("Ext.chart.Shape",{singleton:true,circle:function(a,b){return a.add(Ext.apply({type:"circle",x:b.x,y:b.y,stroke:null,radius:b.radius},b))},line:function(a,b){return a.add(Ext.apply({type:"rect",x:b.x-b.radius,y:b.y-b.radius,height:2*b.radius,width:2*b.radius/5},b))},square:function(a,b){return a.add(Ext.applyIf({type:"rect",x:b.x-b.radius,y:b.y-b.radius,height:2*b.radius,width:2*b.radius,radius:null},b))},triangle:function(a,b){b.radius*=1.75;return a.add(Ext.apply({type:"path",stroke:null,path:"M".concat(b.x,",",b.y,"m0-",b.radius*0.58,"l",b.radius*0.5,",",b.radius*0.87,"-",b.radius,",0z")},b))},diamond:function(a,c){var b=c.radius;b*=1.5;return a.add(Ext.apply({type:"path",stroke:null,path:["M",c.x,c.y-b,"l",b,b,-b,b,-b,-b,b,-b,"z"]},c))},cross:function(a,c){var b=c.radius;b=b/1.7;return a.add(Ext.apply({type:"path",stroke:null,path:"M".concat(c.x-b,",",c.y,"l",[-b,-b,b,-b,b,b,b,-b,b,b,-b,b,b,b,-b,b,-b,-b,-b,b,-b,-b,"z"])},c))},plus:function(a,c){var b=c.radius/1.3;return a.add(Ext.apply({type:"path",stroke:null,path:"M".concat(c.x-b/2,",",c.y-b/2,"l",[0,-b,b,0,0,b,b,0,0,b,-b,0,0,b,-b,0,0,-b,-b,0,0,-b,"z"])},c))},arrow:function(a,c){var b=c.radius;return a.add(Ext.apply({type:"path",path:"M".concat(c.x-b*0.7,",",c.y-b*0.4,"l",[b*0.6,0,0,-b*0.4,b,b*0.8,-b,b*0.8,0,-b*0.4,-b*0.6,0],"z")},c))},drop:function(b,a,g,e,c,d){c=c||30;d=d||0;b.add({type:"path",path:["M",a,g,"l",c,0,"A",c*0.4,c*0.4,0,1,0,a+c*0.7,g-c*0.7,"z"],fill:"#000",stroke:"none",rotate:{degrees:22.5-d,x:a,y:g}});d=(d+90)*Math.PI/180;b.add({type:"text",x:a+c*Math.sin(d)-10,y:g+c*Math.cos(d)+5,text:e,"font-size":c*12/40,stroke:"none",fill:"#fff"})}});Ext.define("Ext.chart.LegendItem",{extend:"Ext.draw.CompositeSprite",requires:["Ext.chart.Shape"],x:0,y:0,zIndex:500,boldRe:/bold\s\d{1,}.*/i,constructor:function(a){this.callParent(arguments);this.createLegend(a)},createLegend:function(s){var t=this,i=s.yFieldIndex,l=t.series,a=l.type,m=t.yFieldIndex,d=t.legend,p=t.surface,q=d.x+t.x,n=d.y+t.y,c,k=t.zIndex,b,j,r,e,o=false,h=Ext.apply(l.seriesStyle,l.style);function g(u){var v=l[u];return(Ext.isArray(v)?v[m]:v)}j=t.add("label",p.add({type:"text",x:20,y:0,zIndex:(k||0)+2,fill:d.labelColor,font:d.labelFont,text:g("title")||g("yField"),style:{cursor:"pointer"}}));if(a==="line"||a==="scatter"){if(a==="line"){t.add("line",p.add({type:"path",path:"M0.5,0.5L16.5,0.5",zIndex:(k||0)+2,"stroke-width":l.lineWidth,"stroke-linejoin":"round","stroke-dasharray":l.dash,stroke:h.stroke||l.getLegendColor(i)||"#000",style:{cursor:"pointer"}}))}if(l.showMarkers||a==="scatter"){b=Ext.apply(l.markerStyle,l.markerConfig||{},{fill:l.getLegendColor(i)});t.add("marker",Ext.chart.Shape[b.type](p,{fill:b.fill,x:8.5,y:0.5,zIndex:(k||0)+2,radius:b.radius||b.size,style:{cursor:"pointer"}}))}}else{t.add("box",p.add({type:"rect",zIndex:(k||0)+2,x:0,y:0,width:12,height:12,fill:l.getLegendColor(i),style:{cursor:"pointer"}}))}t.setAttributes({hidden:false},true);c=t.getBBox();r=t.add("mask",p.add({type:"rect",x:c.x,y:c.y,width:c.width||20,height:c.height||20,zIndex:(k||0)+1,fill:t.legend.boxFill,style:{cursor:"pointer"}}));t.on("mouseover",function(){j.setStyle({"font-weight":"bold"});r.setStyle({cursor:"pointer"});l._index=i;l.highlightItem()},t);t.on("mouseout",function(){j.setStyle({"font-weight":d.labelFont&&t.boldRe.test(d.labelFont)?"bold":"normal"});l._index=i;l.unHighlightItem()},t);if(!l.visibleInLegend(i)){o=true;j.setAttributes({opacity:0.5},true)}t.on("mousedown",function(){if(!o){l.hideAll(i);j.setAttributes({opacity:0.5},true)}else{l.showAll(i);j.setAttributes({opacity:1},true)}o=!o;t.legend.chart.redraw()},t);t.updatePosition({x:0,y:0})},updatePosition:function(c){var g=this,a=g.items,e=a.length,b=0,d;if(!c){c=g.legend}for(;b<e;b++){d=a[b];switch(d.type){case"text":d.setAttributes({x:20+c.x+g.x,y:c.y+g.y},true);break;case"rect":d.setAttributes({translate:{x:c.x+g.x,y:c.y+g.y-6}},true);break;default:d.setAttributes({translate:{x:c.x+g.x,y:c.y+g.y}},true)}}}});Ext.define("Ext.chart.Legend",{requires:["Ext.chart.LegendItem"],visible:true,update:true,position:"bottom",x:0,y:0,labelColor:"#000",labelFont:"12px Helvetica, sans-serif",boxStroke:"#000",boxStrokeWidth:1,boxFill:"#FFF",itemSpacing:10,padding:5,width:0,height:0,boxZIndex:100,constructor:function(a){var b=this;if(a){Ext.apply(b,a)}b.items=[];b.isVertical=("left|right|float".indexOf(b.position)!==-1);b.origX=b.x;b.origY=b.y},create:function(){var e=this,a=e.chart.series.items,c,d,b;e.createBox();if(e.rebuild!==false){e.createItems()}if(!e.created&&e.isDisplayed()){e.created=true;for(c=0,d=a.length;c<d;c++){b=a[c];b.on("titlechange",function(){e.create();e.updatePosition()})}}},isDisplayed:function(){return this.visible&&this.chart.series.findIndex("showInLegend",true)!==-1},createItems:function(){var H=this,s=H.chart,b=s.series.items,o,q,A=s.surface,u=H.items,r=H.padding,K=H.itemSpacing,m=2,E=0,z=0,h=0,G=0,d=H.isVertical,g=Math,e=g.floor,J=g.max,l=0,C=0,D=u?u.length:0,p,n,k,F,a,t,w,v,c,I,B;if(D){for(;C<D;C++){u[C].destroy()}}u.length=[];for(C=0,o=b.length;C<o;C++){q=b[C];if(q.showInLegend){v=[].concat(q.yField);for(B=0,I=v.length;B<I;B++){c=v[B];F=new Ext.chart.LegendItem({legend:this,series:q,surface:s.surface,yFieldIndex:B});a=F.getBBox();w=a.width;t=a.height;if(C+B===0){k=d?r+t/2:r}else{k=K/(d?2:1)}F.x=e(d?r:h+k);F.y=e(d?G+k:r+t/2);h+=w+k;G+=t+k;E=J(E,w);z=J(z,t);u.push(F)}}}H.width=e((d?E:h)+r*2);if(d&&u.length===1){m=1}H.height=e((d?G-m*k:z)+(r*2));H.itemHeight=z},getBBox:function(){var a=this;return{x:Math.round(a.x)-a.boxStrokeWidth/2,y:Math.round(a.y)-a.boxStrokeWidth/2,width:a.width,height:a.height}},createBox:function(){var b=this,a,c;if(b.boxSprite){b.boxSprite.destroy()}c=b.getBBox();if(isNaN(c.width)||isNaN(c.height)){b.boxSprite=false;return}a=b.boxSprite=b.chart.surface.add(Ext.apply({type:"rect",stroke:b.boxStroke,"stroke-width":b.boxStrokeWidth,fill:b.boxFill,zIndex:b.boxZIndex},c));a.redraw()},updatePosition:function(){var u=this,p=u.items,r,j,l,h,n=u.width||0,c=u.height||0,m=u.padding,o=u.chart,k=o.chartBBox,s=o.insetPadding,t=k.width-(s*2),d=k.height-(s*2),g=k.x+s,e=k.y+s,q=o.surface,b=Math.floor,a;if(u.isDisplayed()){switch(u.position){case"left":l=s;h=b(e+d/2-c/2);break;case"right":l=b(q.width-n)-s;h=b(e+d/2-c/2);break;case"top":l=b(g+t/2-n/2);h=s;break;case"bottom":l=b(g+t/2-n/2);h=b(q.height-c)-s;break;default:l=b(u.origX)+s;h=b(u.origY)+s}u.x=l;u.y=h;for(r=0,j=p.length;r<j;r++){p[r].updatePosition()}a=u.getBBox();if(isNaN(a.width)||isNaN(a.height)){if(u.boxSprite){u.boxSprite.hide(true)}}else{if(!u.boxSprite){u.createBox()}u.boxSprite.setAttributes(a,true);u.boxSprite.show(true)}}},toggle:function(b){var e=this,d=0,c=e.items,a=c.length;if(e.boxSprite){if(b){e.boxSprite.show(true)}else{e.boxSprite.hide(true)}}for(;d<a;++d){if(b){c[d].show(true)}else{c[d].hide(true)}}e.visible=b}});Ext.define("Ext.chart.theme.Theme",{requires:["Ext.draw.Color"],theme:"Base",themeAttrs:false,initTheme:function(e){var d=this,b=Ext.chart.theme,c,a;if(e){e=e.split(":");for(c in b){if(c==e[0]){a=e[1]=="gradients";d.themeAttrs=new b[c]({useGradients:a});if(a){d.gradients=d.themeAttrs.gradients}if(d.themeAttrs.background){d.background=d.themeAttrs.background}return}}}}},function(){(function(){Ext.chart.theme=function(c,b){c=c||{};var m=0,p=+new Date(),j,a,k,r,s,g,o,q,n=[],e,h;if(c.baseColor){e=Ext.draw.Color.fromString(c.baseColor);h=e.getHSL()[2];if(h<0.15){e=e.getLighter(0.3)}else{if(h<0.3){e=e.getLighter(0.15)}else{if(h>0.85){e=e.getDarker(0.3)}else{if(h>0.7){e=e.getDarker(0.15)}}}}c.colors=[e.getDarker(0.3).toString(),e.getDarker(0.15).toString(),e.toString(),e.getLighter(0.15).toString(),e.getLighter(0.3).toString()];delete c.baseColor}if(c.colors){a=c.colors.slice();s=b.markerThemes;r=b.seriesThemes;j=a.length;b.colors=a;for(;m<j;m++){k=a[m];o=s[m]||{};g=r[m]||{};o.fill=g.fill=o.stroke=g.stroke=k;s[m]=o;r[m]=g}b.markerThemes=s.slice(0,j);b.seriesThemes=r.slice(0,j)}for(q in b){if(q in c){if(Ext.isObject(c[q])&&Ext.isObject(b[q])){Ext.apply(b[q],c[q])}else{b[q]=c[q]}}}if(c.useGradients){a=b.colors||(function(){var d=[];for(m=0,r=b.seriesThemes,j=r.length;m<j;m++){d.push(r[m].fill||r[m].stroke)}return d}());for(m=0,j=a.length;m<j;m++){e=Ext.draw.Color.fromString(a[m]);if(e){k=e.getDarker(0.1).toString();e=e.toString();q="theme-"+e.substr(1)+"-"+k.substr(1)+"-"+p;n.push({id:q,angle:45,stops:{0:{color:e.toString()},100:{color:k.toString()}}});a[m]="url(#"+q+")"}}b.gradients=n;b.colors=a}Ext.apply(this,b)}}())});Ext.define("Ext.chart.theme.Base",{requires:["Ext.chart.theme.Theme"],constructor:function(a){Ext.chart.theme.call(this,a,{background:false,axis:{stroke:"#444","stroke-width":1},axisLabelTop:{fill:"#444",font:"12px Arial, Helvetica, sans-serif",spacing:2,padding:5,renderer:function(b){return b}},axisLabelRight:{fill:"#444",font:"12px Arial, Helvetica, sans-serif",spacing:2,padding:5,renderer:function(b){return b}},axisLabelBottom:{fill:"#444",font:"12px Arial, Helvetica, sans-serif",spacing:2,padding:5,renderer:function(b){return b}},axisLabelLeft:{fill:"#444",font:"12px Arial, Helvetica, sans-serif",spacing:2,padding:5,renderer:function(b){return b}},axisTitleTop:{font:"bold 18px Arial",fill:"#444"},axisTitleRight:{font:"bold 18px Arial",fill:"#444",rotate:{x:0,y:0,degrees:270}},axisTitleBottom:{font:"bold 18px Arial",fill:"#444"},axisTitleLeft:{font:"bold 18px Arial",fill:"#444",rotate:{x:0,y:0,degrees:270}},series:{"stroke-width":0},seriesLabel:{font:"12px Arial",fill:"#333"},marker:{stroke:"#555",radius:3,size:3},colors:["#94ae0a","#115fa6","#a61120","#ff8809","#ffd13e","#a61187","#24ad9a","#7c7474","#a66111"],seriesThemes:[{fill:"#115fa6"},{fill:"#94ae0a"},{fill:"#a61120"},{fill:"#ff8809"},{fill:"#ffd13e"},{fill:"#a61187"},{fill:"#24ad9a"},{fill:"#7c7474"},{fill:"#115fa6"},{fill:"#94ae0a"},{fill:"#a61120"},{fill:"#ff8809"},{fill:"#ffd13e"},{fill:"#a61187"},{fill:"#24ad9a"},{fill:"#7c7474"},{fill:"#a66111"}],markerThemes:[{fill:"#115fa6",type:"circle"},{fill:"#94ae0a",type:"cross"},{fill:"#115fa6",type:"plus"},{fill:"#94ae0a",type:"circle"},{fill:"#a61120",type:"cross"}]})}},function(){var c=["#b1da5a","#4ce0e7","#e84b67","#da5abd","#4d7fe6","#fec935"],k=["Green","Sky","Red","Purple","Blue","Yellow"],h=0,g=0,b=c.length,a=Ext.chart.theme,d=[["#f0a50a","#c20024","#2044ba","#810065","#7eae29"],["#6d9824","#87146e","#2a9196","#d39006","#1e40ac"],["#fbbc29","#ce2e4e","#7e0062","#158b90","#57880e"],["#ef5773","#fcbd2a","#4f770d","#1d3eaa","#9b001f"],["#7eae29","#fdbe2a","#910019","#27b4bc","#d74dbc"],["#44dce1","#0b2592","#996e05","#7fb325","#b821a1"]],e=d.length;for(;h<b;h++){a[k[h]]=(function(i){return Ext.extend(a.Base,{constructor:function(j){a.Base.prototype.constructor.call(this,Ext.apply({baseColor:i},j))}})}(c[h]))}for(h=0;h<e;h++){a["Category"+(h+1)]=(function(i){return Ext.extend(a.Base,{constructor:function(j){a.Base.prototype.constructor.call(this,Ext.apply({colors:i},j))}})}(d[h]))}});Ext.define("Ext.chart.MaskLayer",{extend:"Ext.Component",constructor:function(a){a=Ext.apply(a||{},{style:"position:absolute;background-color:#888;cursor:move;opacity:0.6;border:1px solid #222;"});this.callParent([a])},initComponent:function(){var a=this;a.callParent(arguments);a.addEvents("mousedown","mouseup","mousemove","mouseenter","mouseleave")},initDraggable:function(){this.callParent(arguments);this.dd.onStart=function(c){var b=this,a=b.comp;this.startPosition=a.getPosition(true);if(a.ghost&&!a.liveDrag){b.proxy=a.ghost();b.dragTarget=b.proxy.header.el}if(b.constrain||b.constrainDelegate){b.constrainTo=b.calculateConstrainRegion()}}}});Ext.define("Ext.chart.Mask",{requires:["Ext.chart.MaskLayer"],constructor:function(a){var c=this,b;c.addEvents("select");if(a){Ext.apply(c,a)}if(c.enableMask){c.on("afterrender",function(){var d=new Ext.chart.MaskLayer({renderTo:c.el,hidden:true});d.el.on({mousemove:function(g){c.onMouseMove(g)},mouseup:function(g){c.resized(g)}});b=new Ext.resizer.Resizer({el:d.el,handles:"all",pinned:true});b.on({resize:function(g){c.resized(g)}});d.initDraggable();c.maskType=c.mask;c.mask=d;c.maskSprite=c.surface.add({type:"path",path:["M",0,0],zIndex:1001,opacity:0.7,hidden:true,stroke:"#444"})},c,{single:true})}},resized:function(d){var g=this,l=g.bbox||g.chartBBox,j=l.x,i=l.y,a=l.width,m=l.height,c=g.mask.getBox(true),h=Math.max,b=Math.min,n=c.x-j,k=c.y-i;n=h(n,j);k=h(k,i);n=b(n,a);k=b(k,m);c.x=n;c.y=k;g.fireEvent("select",g,c)},onMouseUp:function(c){var a=this,d=a.bbox||a.chartBBox,b=a.maskSelection;a.maskMouseDown=false;a.mouseDown=false;if(a.mouseMoved){a.onMouseMove(c);a.mouseMoved=false;a.fireEvent("select",a,{x:b.x-d.x,y:b.y-d.y,width:b.width,height:b.height})}},onMouseDown:function(b){var a=this;a.mouseDown=true;a.mouseMoved=false;a.maskMouseDown={x:b.getPageX()-a.el.getX(),y:b.getPageY()-a.el.getY()}},onMouseMove:function(t){var u=this,o=u.maskType,a=u.bbox||u.chartBBox,i=a.x,h=a.y,b=Math,q=b.floor,j=b.abs,n=b.min,p=b.max,k=q(h+a.height),m=q(i+a.width),d=t.getPageX(),c=t.getPageY(),s=d-u.el.getX(),r=c-u.el.getY(),g=u.maskMouseDown,l;u.mouseMoved=u.mouseDown;s=p(s,i);r=p(r,h);s=n(s,m);r=n(r,k);if(g&&u.mouseDown){if(o=="horizontal"){r=h;g.y=k;c=u.el.getY()+a.height+u.insetPadding}else{if(o=="vertical"){s=i;g.x=m}}m=g.x-s;k=g.y-r;l=["M",s,r,"l",m,0,0,k,-m,0,"z"];u.maskSelection={x:m>0?s:s+m,y:k>0?r:r+k,width:j(m),height:j(k)};u.mask.updateBox(u.maskSelection);u.mask.show();u.maskSprite.setAttributes({hidden:true},true)}else{if(o=="horizontal"){l=["M",s,h,"L",s,k]}else{if(o=="vertical"){l=["M",i,r,"L",m,r]}else{l=["M",s,h,"L",s,k,"M",i,r,"L",m,r]}}u.maskSprite.setAttributes({path:l,fill:u.maskMouseDown?u.maskSprite.stroke:false,"stroke-width":o===true?1:3,hidden:false},true)}},onMouseLeave:function(b){var a=this;a.mouseMoved=false;a.mouseDown=false;a.maskMouseDown=false;a.mask.hide();a.maskSprite.hide(true)}});Ext.define("Ext.chart.Navigation",{constructor:function(){this.originalStore=this.store},setZoom:function(k){var j=this,g=j.axes,a=g.items,e,h,c,p=j.chartBBox,o=1/p.width,b=1/p.height,d={x:k.x*o,y:k.y*b,width:k.width*o,height:k.height*b},l,n,m;for(e=0,h=a.length;e<h;e++){c=a[e];l=c.calcEnds();if(c.position=="bottom"||c.position=="top"){n=(l.to-l.from)*d.x+l.from;m=(l.to-l.from)*d.width+n;c.minimum=n;c.maximum=m}else{m=(l.to-l.from)*(1-d.y)+l.from;n=m-(l.to-l.from)*d.height;c.minimum=n;c.maximum=m}}j.redraw(false)},restoreZoom:function(){if(this.originalStore){this.store=this.substore=this.originalStore;this.redraw(true)}}});Ext.define("Ext.chart.Chart",{alias:"widget.chart",extend:"Ext.draw.Component",mixins:{themeManager:"Ext.chart.theme.Theme",mask:"Ext.chart.Mask",navigation:"Ext.chart.Navigation",bindable:"Ext.util.Bindable",observable:"Ext.util.Observable"},uses:["Ext.chart.series.Series"],requires:["Ext.util.MixedCollection","Ext.data.StoreManager","Ext.chart.Legend","Ext.chart.theme.Base","Ext.chart.theme.Theme","Ext.util.DelayedTask"],viewBox:false,animate:false,legend:false,insetPadding:10,enginePriority:["Svg","Vml"],background:false,constructor:function(b){var c=this,a;b=Ext.apply({},b);c.initTheme(b.theme||c.theme);if(c.gradients){Ext.apply(b,{gradients:c.gradients})}if(c.background){Ext.apply(b,{background:c.background})}if(b.animate){a={easing:"ease",duration:500};if(Ext.isObject(b.animate)){b.animate=Ext.applyIf(b.animate,a)}else{b.animate=a}}c.mixins.observable.constructor.call(c,b);if(b.enableMask){c.mixins.mask.constructor.call(c)}c.mixins.navigation.constructor.call(c);c.callParent([b])},getChartStore:function(){return this.substore||this.store},initComponent:function(){var b=this,c,a;b.callParent();b.addEvents("itemmousedown","itemmouseup","itemmouseover","itemmouseout","itemclick","itemdblclick","itemdragstart","itemdrag","itemdragend","beforerefresh","refresh");Ext.applyIf(b,{zoom:{width:1,height:1,x:0,y:0}});b.maxGutter=[0,0];b.store=Ext.data.StoreManager.lookup(b.store);c=b.axes;b.axes=new Ext.util.MixedCollection(false,function(d){return d.position});if(c){b.axes.addAll(c)}a=b.series;b.series=new Ext.util.MixedCollection(false,function(d){return d.seriesId||(d.seriesId=Ext.id(null,"ext-chart-series-"))});if(a){b.series.addAll(a)}if(b.legend!==false){b.legend=new Ext.chart.Legend(Ext.applyIf({chart:b},b.legend))}b.on({mousemove:b.onMouseMove,mouseleave:b.onMouseLeave,mousedown:b.onMouseDown,mouseup:b.onMouseUp,click:b.onClick,dblclick:b.onDblClick,scope:b})},afterComponentLayout:function(b,a){var c=this;if(Ext.isNumber(b)&&Ext.isNumber(a)){if(b!==c.curWidth||a!==c.curHeight){c.curWidth=b;c.curHeight=a;c.redraw(true)}else{if(c.needsRedraw){delete c.needsRedraw;c.redraw()}}}this.callParent(arguments)},redraw:function(b){var h=this,g=h.series.items,d=g.length,a=h.axes.items,c=a.length,e,k=h.chartBBox={x:0,y:0,height:h.curHeight,width:h.curWidth},j=h.legend;h.surface.setSize(k.width,k.height);for(e=0;e<d;e++){h.initializeSeries(g[e],e)}for(e=0;e<c;e++){h.initializeAxis(a[e])}for(e=0;e<c;e++){a[e].processView()}for(e=0;e<c;e++){a[e].drawAxis(true)}if(j!==false&&j.visible){if(j.update||!j.created){j.create()}}h.alignAxes();if(j!==false&&j.visible){j.updatePosition()}h.getMaxGutter();h.resizing=!!b;for(e=0;e<c;e++){a[e].drawAxis()}for(e=0;e<d;e++){h.drawCharts(g[e])}h.resizing=false},afterRender:function(){var b,a=this;this.callParent();if(a.categoryNames){a.setCategoryNames(a.categoryNames)}if(a.tipRenderer){b=a.getFunctionRef(a.tipRenderer);a.setTipRenderer(b.fn,b.scope)}a.bindStore(a.store,true);a.refresh();if(a.surface.engine==="Vml"){a.on("added",a.onAddedVml,a);a.mon(Ext.container.Container.hierarchyEventSource,"added",a.onContainerAddedVml,a)}},onAddedVml:function(){this.needsRedraw=true},onContainerAddedVml:function(a){if(this.isDescendantOf(a)){this.needsRedraw=true}},getEventXY:function(d){var c=this,b=this.surface.getRegion(),h=d.getXY(),a=h[0]-b.left,g=h[1]-b.top;return[a,g]},onClick:function(a){this.handleClick("itemclick",a)},onDblClick:function(a){this.handleClick("itemdblclick",a)},handleClick:function(a,h){var k=this,g=k.getEventXY(h),d=k.series.items,b,j,c,l;for(b=0,j=d.length;b<j;b++){c=d[b];if(Ext.draw.Draw.withinBox(g[0],g[1],c.bbox)){if(c.getItemForPoint){l=c.getItemForPoint(g[0],g[1]);if(l){c.fireEvent(a,l)}}}}},onMouseDown:function(k){var j=this,a=j.getEventXY(k),b=j.series.items,d,h,c,g;if(j.enableMask){j.mixins.mask.onMouseDown.call(j,k)}for(d=0,h=b.length;d<h;d++){c=b[d];if(Ext.draw.Draw.withinBox(a[0],a[1],c.bbox)){if(c.getItemForPoint){g=c.getItemForPoint(a[0],a[1]);if(g){c.fireEvent("itemmousedown",g)}}}}},onMouseUp:function(k){var j=this,a=j.getEventXY(k),b=j.series.items,d,h,c,g;if(j.enableMask){j.mixins.mask.onMouseUp.call(j,k)}for(d=0,h=b.length;d<h;d++){c=b[d];if(Ext.draw.Draw.withinBox(a[0],a[1],c.bbox)){if(c.getItemForPoint){g=c.getItemForPoint(a[0],a[1]);if(g){c.fireEvent("itemmouseup",g)}}}}},onMouseMove:function(h){var k=this,d=k.getEventXY(h),c=k.series.items,a,j,b,n,l,g,m;if(k.enableMask){k.mixins.mask.onMouseMove.call(k,h)}for(a=0,j=c.length;a<j;a++){b=c[a];if(Ext.draw.Draw.withinBox(d[0],d[1],b.bbox)){if(b.getItemForPoint){n=b.getItemForPoint(d[0],d[1]);l=b._lastItemForPoint;g=b._lastStoreItem;m=b._lastStoreField;if(n!==l||n&&(n.storeItem!=g||n.storeField!=m)){if(l){b.fireEvent("itemmouseout",l);delete b._lastItemForPoint;delete b._lastStoreField;delete b._lastStoreItem}if(n){b.fireEvent("itemmouseover",n);b._lastItemForPoint=n;b._lastStoreItem=n.storeItem;b._lastStoreField=n.storeField}}}}else{l=b._lastItemForPoint;if(l){b.fireEvent("itemmouseout",l);delete b._lastItemForPoint;delete b._lastStoreField;delete b._lastStoreItem}}}},onMouseLeave:function(h){var g=this,a=g.series.items,c,d,b;if(g.enableMask){g.mixins.mask.onMouseLeave.call(g,h)}for(c=0,d=a.length;c<d;c++){b=a[c];delete b._lastItemForPoint}},delayRefresh:function(){var a=this;if(!a.refreshTask){a.refreshTask=new Ext.util.DelayedTask(a.refresh,a)}a.refreshTask.delay(a.refreshBuffer)},refresh:function(){var a=this;if(a.rendered&&a.curWidth!==undefined&&a.curHeight!==undefined){if(!a.isVisible(true)&&!a.refreshPending){a.setShowListeners("mon");a.refreshPending=true;return}if(a.fireEvent("beforerefresh",a)!==false){a.redraw();a.fireEvent("refresh",a)}}},onShow:function(){var a=this;a.callParent(arguments);if(a.refreshPending){a.delayRefresh();a.setShowListeners("mun")}delete a.refreshPending},setShowListeners:function(b){var a=this;a[b](Ext.container.Container.hierarchyEventSource,{scope:a,single:true,show:a.forceRefresh,expand:a.forceRefresh})},forceRefresh:function(a){var b=this;if(b.isDescendantOf(a)&&b.refreshPending){b.setShowListeners("mun");b.delayRefresh()}delete b.refreshPending},bindStore:function(a,b){var c=this;c.mixins.bindable.bindStore.apply(c,arguments);if(c.store&&!b){c.refresh()}},getStoreListeners:function(){var b=this.refresh,a=this.delayRefresh;return{refresh:b,add:a,remove:a,update:a,clear:b}},initializeAxis:function(b){var e=this,k=e.chartBBox,j=k.width,d=k.height,i=k.x,g=k.y,c=e.themeAttrs,a={chart:e};if(c){a.axisStyle=Ext.apply({},c.axis);a.axisLabelLeftStyle=Ext.apply({},c.axisLabelLeft);a.axisLabelRightStyle=Ext.apply({},c.axisLabelRight);a.axisLabelTopStyle=Ext.apply({},c.axisLabelTop);a.axisLabelBottomStyle=Ext.apply({},c.axisLabelBottom);a.axisTitleLeftStyle=Ext.apply({},c.axisTitleLeft);a.axisTitleRightStyle=Ext.apply({},c.axisTitleRight);a.axisTitleTopStyle=Ext.apply({},c.axisTitleTop);a.axisTitleBottomStyle=Ext.apply({},c.axisTitleBottom)}switch(b.position){case"top":Ext.apply(a,{length:j,width:d,x:i,y:g});break;case"bottom":Ext.apply(a,{length:j,width:d,x:i,y:d});break;case"left":Ext.apply(a,{length:d,width:j,x:i,y:d});break;case"right":Ext.apply(a,{length:d,width:j,x:j,y:d});break}if(!b.chart){Ext.apply(a,b);b=e.axes.replace(Ext.createByAlias("axis."+b.type.toLowerCase(),a))}else{Ext.apply(b,a)}},alignAxes:function(){var l=this,k=l.axes,a=k.items,e,p=l.legend,g=["top","right","bottom","left"],b,h,j,r,o=l.insetPadding,d={top:o,right:o,bottom:o,left:o},n,q,m;function c(t){var s=k.findIndex("position",t);return(s<0)?null:k.getAt(s)}for(h=0,j=g.length;h<j;h++){b=g[h];n=(b==="left"||b==="right");e=c(b);if(p!==false){if(p.position===b){q=p.getBBox();d[b]+=(n?q.width:q.height)+d[b]}}if(e&&e.bbox){q=e.bbox;d[b]+=(n?q.width:q.height)}}r={x:d.left,y:d.top,width:l.curWidth-d.left-d.right,height:l.curHeight-d.top-d.bottom};l.chartBBox=r;for(h=0,j=a.length;h<j;h++){e=a[h];m=e.position;n=(m==="left"||m==="right");e.x=(m==="right"?r.x+r.width:r.x);e.y=(m==="top"?r.y:r.y+r.height);e.width=(n?r.width:r.height);e.length=(n?r.height:r.width)}},initializeSeries:function(h,k){var j=this,d=j.themeAttrs,c,e,n,p,o,m=[],g=0,b,a={chart:j,seriesId:h.seriesId};if(d){n=d.seriesThemes;o=d.markerThemes;c=Ext.apply({},d.series);e=Ext.apply({},d.marker);a.seriesStyle=Ext.apply(c,n[k%n.length]);a.seriesLabelStyle=Ext.apply({},d.seriesLabel);a.markerStyle=Ext.apply(e,o[k%o.length]);if(d.colors){a.colorArrayStyle=d.colors}else{m=[];for(b=n.length;g<b;g++){p=n[g];if(p.fill||p.stroke){m.push(p.fill||p.stroke)}}if(m.length){a.colorArrayStyle=m}}a.seriesIdx=k}if(h instanceof Ext.chart.series.Series){Ext.apply(h,a)}else{Ext.applyIf(a,h);h=j.series.replace(Ext.createByAlias("series."+h.type.toLowerCase(),a))}if(h.initialize){h.initialize()}},getMaxGutter:function(){var g=this,a=g.series.items,d,e,c,b=[0,0],h;for(d=0,e=a.length;d<e;d++){c=a[d];h=c.getGutters&&c.getGutters()||[0,0];b[0]=Math.max(b[0],h[0]);b[1]=Math.max(b[1],h[1])}g.maxGutter=b},drawAxis:function(a){a.drawAxis()},drawCharts:function(a){a.triggerafterrender=false;a.drawSeries();if(!this.animate){a.fireEvent("afterrender")}},save:function(a){return Ext.draw.Surface.save(this.surface,a)},destroy:function(){Ext.destroy(this.surface);this.bindStore(null);this.callParent(arguments)}});Ext.define("Ext.chart.Highlight",{requires:["Ext.fx.Anim"],highlight:false,highlightCfg:{fill:"#fdd","stroke-width":5,stroke:"#f55"},constructor:function(a){if(a.highlight){if(a.highlight!==true){this.highlightCfg=Ext.merge(this.highlightCfg,a.highlight)}}},highlightItem:function(k){if(!k){return}var g=this,j=k.sprite,a=Ext.merge({},g.highlightCfg,g.highlight),d=g.chart.surface,c=g.chart.animate,b,i,h,e;if(!g.highlight||!j||j._highlighted){return}if(j._anim){j._anim.paused=true}j._highlighted=true;if(!j._defaults){j._defaults=Ext.apply({},j.attr);i={};h={};for(b in a){if(!(b in j._defaults)){j._defaults[b]=d.availableAttrs[b]}i[b]=j._defaults[b];h[b]=a[b];if(Ext.isObject(a[b])){i[b]={};h[b]={};Ext.apply(j._defaults[b],j.attr[b]);Ext.apply(i[b],j._defaults[b]);for(e in j._defaults[b]){if(!(e in a[b])){h[b][e]=i[b][e]}else{h[b][e]=a[b][e]}}for(e in a[b]){if(!(e in h[b])){h[b][e]=a[b][e]}}}}j._from=i;j._to=h;j._endStyle=h}if(c){j._anim=new Ext.fx.Anim({target:j,from:j._from,to:j._to,duration:150})}else{j.setAttributes(j._to,true)}},unHighlightItem:function(){if(!this.highlight||!this.items){return}var j=this,h=j.items,g=h.length,a=Ext.merge({},j.highlightCfg,j.highlight),c=j.chart.animate,e=0,d,b,k;for(;e<g;e++){if(!h[e]){continue}k=h[e].sprite;if(k&&k._highlighted){if(k._anim){k._anim.paused=true}d={};for(b in a){if(Ext.isObject(k._defaults[b])){d[b]={};Ext.apply(d[b],k._defaults[b])}else{d[b]=k._defaults[b]}}if(c){k._endStyle=d;k._anim=new Ext.fx.Anim({target:k,to:d,duration:150})}else{k.setAttributes(d,true)}delete k._highlighted}}},cleanHighlights:function(){if(!this.highlight){return}var d=this.group,c=this.markerGroup,b=0,a;for(a=d.getCount();b<a;b++){delete d.getAt(b)._defaults}if(c){for(a=c.getCount();b<a;b++){delete c.getAt(b)._defaults}}}});Ext.define("Ext.chart.Label",{requires:["Ext.draw.Color"],colorStringRe:/url\s*\(\s*#([^\/)]+)\s*\)/,constructor:function(a){var b=this;b.label=Ext.applyIf(b.label||{},{display:"none",color:"#000",field:"name",minMargin:50,font:"11px Helvetica, sans-serif",orientation:"horizontal",renderer:function(c){return c}});if(b.label.display!=="none"){b.labelsGroup=b.chart.surface.getGroup(b.seriesId+"-labels")}},renderLabels:function(){var o=this,L=o.chart,x=L.gradients,r=o.items,H=L.animate,A=o.label,u=A.display,v=A.color,d=[].concat(A.field),q=o.labelsGroup,l=(q||0)&&q.length,b=o.chart.getChartStore(),p=b.getCount(),h=(r||0)&&r.length,D=h/p,z=(x||0)&&x.length,m=Ext.draw.Color,K=[],n,J,E,c,y,I,G,e,g,t,w,F,M,s,N,C,B,a;if(u=="none"){return}if(h==0){while(l--){K.push(l)}}else{for(J=0,E=0,c=0;J<p;J++){y=0;for(I=0;I<D;I++){w=r[E];F=q.getAt(c);M=b.getAt(J);while(this.__excludes&&this.__excludes[y]){y++}if(!w&&F){F.hide(true);c++}if(w&&d[I]){if(!F){F=o.onCreateLabel(M,w,J,u,I,y)}o.onPlaceLabel(F,M,w,J,u,H,I,y);c++;if(A.contrast&&w.sprite){s=w.sprite;if(s._endStyle){a=s._endStyle.fill}else{if(s._to){a=s._to.fill}else{a=s.attr.fill}}a=a||s.attr.fill;N=m.fromString(a);if(a&&!N){a=a.match(o.colorStringRe)[1];for(G=0;G<z;G++){n=x[G];if(n.id==a){t=0;e=0;for(g in n.stops){t++;e+=m.fromString(n.stops[g].color).getGrayscale()}C=(e/t)/255;break}}}else{C=N.getGrayscale()/255}if(F.isOutside){C=1}B=m.fromString(F.attr.color||F.attr.fill).getHSL();B[2]=C>0.5?0.2:0.8;F.setAttributes({fill:String(m.fromHSL.apply({},B))},true)}}E++;y++}}l=q.length;while(l>c){K.push(c);c++}}o.hideLabels(K)},hideLabels:function(b){var a=this.labelsGroup,c=!!b&&b.length;if(!a){return}if(c===false){c=a.getCount();while(c--){a.getAt(c).hide(true)}}else{while(c--){a.getAt(b[c]).hide(true)}}}});Ext.define("Ext.chart.TipSurface",{extend:"Ext.draw.Component",spriteArray:false,renderFirst:true,constructor:function(a){this.callParent([a]);if(a.sprites){this.spriteArray=[].concat(a.sprites);delete a.sprites}},onRender:function(){var c=this,b=0,a=0,d,e;this.callParent(arguments);e=c.spriteArray;if(c.renderFirst&&e){c.renderFirst=false;for(a=e.length;b<a;b++){d=c.surface.add(e[b]);d.setAttributes({hidden:false},true)}}}});Ext.define("Ext.chart.Tip",{requires:["Ext.tip.ToolTip","Ext.chart.TipSurface"],constructor:function(b){var c=this,a,d,e;if(b.tips){c.tipTimeout=null;c.tipConfig=Ext.apply({},b.tips,{renderer:Ext.emptyFn,constrainPosition:true,autoHide:true});c.tooltip=new Ext.tip.ToolTip(c.tipConfig);c.chart.surface.on("mousemove",c.tooltip.onMouseMove,c.tooltip);c.chart.surface.on("mouseleave",function(){c.hideTip()});if(c.tipConfig.surface){a=c.tipConfig.surface;d=a.sprites;e=new Ext.chart.TipSurface({id:"tipSurfaceComponent",sprites:d});if(a.width&&a.height){e.setSize(a.width,a.height)}c.tooltip.add(e);c.spriteTip=e}}},showTip:function(l){var e=this,m,a,c,d,k,b,j,h,i,g;if(!e.tooltip){return}clearTimeout(e.tipTimeout);m=e.tooltip;a=e.spriteTip;c=e.tipConfig;d=m.trackMouse;if(!d){m.trackMouse=true;k=l.sprite;b=k.surface;j=Ext.get(b.getId());if(j){h=j.getXY();i=h[0]+(k.attr.x||0)+(k.attr.translation&&k.attr.translation.x||0);g=h[1]+(k.attr.y||0)+(k.attr.translation&&k.attr.translation.y||0);m.targetXY=[i,g]}}if(a){c.renderer.call(m,l.storeItem,l,a.surface)}else{c.renderer.call(m,l.storeItem,l)}m.show();m.trackMouse=d},hideTip:function(a){var b=this.tooltip;if(!b){return}clearTimeout(this.tipTimeout);this.tipTimeout=setTimeout(function(){b.hide()},0)}});Ext.define("Ext.chart.axis.Abstract",{requires:["Ext.chart.Chart"],constructor:function(a){a=a||{};var b=this,c=a.position||"left";c=c.charAt(0).toUpperCase()+c.substring(1);a.label=Ext.apply(a["axisLabel"+c+"Style"]||{},a.label||{});a.axisTitleStyle=Ext.apply(a["axisTitle"+c+"Style"]||{},a.labelTitle||{});Ext.apply(b,a);b.fields=Ext.Array.from(b.fields);this.callParent();b.labels=[];b.getId();b.labelGroup=b.chart.surface.getGroup(b.axisId+"-labels")},alignment:null,grid:false,steps:10,x:0,y:0,minValue:0,maxValue:0,getId:function(){return this.axisId||(this.axisId=Ext.id(null,"ext-axis-"))},processView:Ext.emptyFn,drawAxis:Ext.emptyFn,addDisplayAndLabels:Ext.emptyFn});Ext.define("Ext.chart.axis.Axis",{extend:"Ext.chart.axis.Abstract",alternateClassName:"Ext.chart.Axis",requires:["Ext.draw.Draw"],forceMinMax:false,dashSize:3,position:"bottom",skipFirst:false,length:0,width:0,adjustEnd:true,majorTickSteps:false,applyData:Ext.emptyFn,getRange:function(){var C=this,p=C.chart,l=p.getChartStore(),E=l.data.items,o=p.series.items,D=C.position,q,a=Ext.chart.series,v=[],u=Infinity,y=-Infinity,c=C.position==="left"||C.position==="right",z,n,d,x,w,m=E.length,g,B={},t={},A=true,r,h,e,b,s;r=C.fields;for(x=0,n=r.length;x<n;x++){t[r[x]]=true}for(z=0,n=o.length;z<n;z++){if(o[z].seriesIsHidden){continue}if(!o[z].getAxesForXAndYFields){continue}q=o[z].getAxesForXAndYFields();if(q.xAxis&&q.xAxis!==D&&q.yAxis&&q.yAxis!==D){continue}if(a.Bar&&o[z] instanceof a.Bar&&!o[z].column){r=c?Ext.Array.from(o[z].xField):Ext.Array.from(o[z].yField)}else{r=c?Ext.Array.from(o[z].yField):Ext.Array.from(o[z].xField)}if(C.fields.length){for(x=0,d=r.length;x<d;x++){if(t[r[x]]){break}}if(x==d){continue}}if(g=o[z].stacked){if(a.Bar&&o[z] instanceof a.Bar){if(o[z].column!=c){g=false;A=false}}else{if(!c){g=false;A=false}}}if(g){h={};for(x=0;x<r.length;x++){if(A&&o[z].__excludes&&o[z].__excludes[x]){continue}if(!t[r[x]]){Ext.Logger.warn("Field `"+r[x]+"` is not included in the "+D+" axis config.")}t[r[x]]=h[r[x]]=true}v.push({fields:h,value:0})}else{if(!r||r.length==0){r=C.fields}for(x=0;x<r.length;x++){if(A&&o[z].__excludes&&o[z].__excludes[x]){continue}t[r[x]]=B[r[x]]=true}}}for(z=0;z<m;z++){e=E[z];for(w=0;w<v.length;w++){v[w].value=0}for(b in t){s=e.get(b);if(isNaN(s)){continue}if(s===undefined){s=0}if(B[b]){if(u>s){u=s}if(y<s){y=s}}for(w=0;w<v.length;w++){if(v[w].fields[b]){v[w].value+=s;if(u>0){u=0}if(y<v[w].value){y=v[w].value}}}}}if(!isFinite(y)){y=C.prevMax||0}if(!isFinite(u)){u=C.prevMin||0}if(u!=y&&(y!=Math.floor(y))){y=Math.floor(y)+1}if(!isNaN(C.minimum)){u=C.minimum}if(!isNaN(C.maximum)){y=C.maximum}if(u>=y){y=u+1}return{min:u,max:y}},calcEnds:function(){var h=this,d=h.getRange(),g=d.min,a=d.max,c,i,e,b;c=(Ext.isNumber(h.majorTickSteps)?h.majorTickSteps+1:h.steps);i=!(Ext.isNumber(h.maximum)&&Ext.isNumber(h.minimum)&&Ext.isNumber(h.majorTickSteps)&&h.majorTickSteps>0);e=Ext.draw.Draw.snapEnds(g,a,c,i);if(Ext.isNumber(h.maximum)){e.to=h.maximum;b=true}if(Ext.isNumber(h.minimum)){e.from=h.minimum;b=true}if(h.adjustMaximumByMajorUnit){e.to=Math.ceil(e.to/e.step)*e.step;b=true}if(h.adjustMinimumByMajorUnit){e.from=Math.floor(e.from/e.step)*e.step;b=true}if(b){e.steps=Math.ceil((e.to-e.from)/e.step)}h.prevMin=(g==a?0:g);h.prevMax=a;return e},drawAxis:function(r){var C=this,s,j=C.x,h=C.y,A=C.chart.maxGutter[0],z=C.chart.maxGutter[1],e=C.dashSize,w=C.minorTickSteps||0,v=C.minorTickSteps||0,b=C.length,D=C.position,g=[],m=false,c=C.applyData(),d=c.step,t=c.steps,q=c.from,a=c.to,u,p,o,n,l,k,B;if(C.hidden||isNaN(d)||(q>a)){return}C.from=c.from;C.to=c.to;if(D=="left"||D=="right"){p=Math.floor(j)+0.5;n=["M",p,h,"l",0,-b];u=b-(z*2)}else{o=Math.floor(h)+0.5;n=["M",j,o,"l",b,0];u=b-(A*2)}B=t&&u/t;l=Math.max(w+1,0);k=Math.max(v+1,0);if(C.type=="Numeric"||C.type=="Time"){m=true;C.labels=[c.from]}if(D=="right"||D=="left"){o=h-z;p=j-((D=="left")*e*2);while(o>=h-z-u){n.push("M",p,Math.floor(o)+0.5,"l",e*2+1,0);if(o!=h-z){for(s=1;s<k;s++){n.push("M",p+e,Math.floor(o+B*s/k)+0.5,"l",e+1,0)}}g.push([Math.floor(j),Math.floor(o)]);o-=B;if(m){C.labels.push(C.labels[C.labels.length-1]+d)}if(B===0){break}}if(Math.round(o+B-(h-z-u))){n.push("M",p,Math.floor(h-b+z)+0.5,"l",e*2+1,0);for(s=1;s<k;s++){n.push("M",p+e,Math.floor(h-b+z+B*s/k)+0.5,"l",e+1,0)}g.push([Math.floor(j),Math.floor(o)]);if(m){C.labels.push(C.labels[C.labels.length-1]+d)}}}else{p=j+A;o=h-((D=="top")*e*2);while(p<=j+A+u){n.push("M",Math.floor(p)+0.5,o,"l",0,e*2+1);if(p!=j+A){for(s=1;s<l;s++){n.push("M",Math.floor(p-B*s/l)+0.5,o,"l",0,e+1)}}g.push([Math.floor(p),Math.floor(h)]);p+=B;if(m){C.labels.push(C.labels[C.labels.length-1]+d)}if(B===0){break}}if(Math.round(p-B-(j+A+u))){n.push("M",Math.floor(j+b-A)+0.5,o,"l",0,e*2+1);for(s=1;s<l;s++){n.push("M",Math.floor(j+b-A-B*s/l)+0.5,o,"l",0,e+1)}g.push([Math.floor(p),Math.floor(h)]);if(m){C.labels.push(C.labels[C.labels.length-1]+d)}}}if(m){C.labels[g.length-1]=+(C.labels[g.length-1]).toFixed(10)}if(!C.axis){C.axis=C.chart.surface.add(Ext.apply({type:"path",path:n},C.axisStyle))}C.axis.setAttributes({path:n},true);C.inflections=g;if(!r&&C.grid){C.drawGrid()}C.axisBBox=C.axis.getBBox();C.drawLabel()},drawGrid:function(){var t=this,o=t.chart.surface,b=t.grid,d=b.odd,e=b.even,h=t.inflections,j=h.length-((d||e)?0:1),u=t.position,c=t.chart.maxGutter,n=t.width-2,p,q,r=1,m=[],g,a,k,l=[],s=[];if((c[1]!==0&&(u=="left"||u=="right"))||(c[0]!==0&&(u=="top"||u=="bottom"))){r=0;j++}for(;r<j;r++){p=h[r];q=h[r-1];if(d||e){m=(r%2)?l:s;g=((r%2)?d:e)||{};a=(g.lineWidth||g["stroke-width"]||0)/2;k=2*a;if(u=="left"){m.push("M",q[0]+1+a,q[1]+0.5-a,"L",q[0]+1+n-a,q[1]+0.5-a,"L",p[0]+1+n-a,p[1]+0.5+a,"L",p[0]+1+a,p[1]+0.5+a,"Z")}else{if(u=="right"){m.push("M",q[0]-a,q[1]+0.5-a,"L",q[0]-n+a,q[1]+0.5-a,"L",p[0]-n+a,p[1]+0.5+a,"L",p[0]-a,p[1]+0.5+a,"Z")}else{if(u=="top"){m.push("M",q[0]+0.5+a,q[1]+1+a,"L",q[0]+0.5+a,q[1]+1+n-a,"L",p[0]+0.5-a,p[1]+1+n-a,"L",p[0]+0.5-a,p[1]+1+a,"Z")}else{m.push("M",q[0]+0.5+a,q[1]-a,"L",q[0]+0.5+a,q[1]-n+a,"L",p[0]+0.5-a,p[1]-n+a,"L",p[0]+0.5-a,p[1]-a,"Z")}}}}else{if(u=="left"){m=m.concat(["M",p[0]+0.5,p[1]+0.5,"l",n,0])}else{if(u=="right"){m=m.concat(["M",p[0]-0.5,p[1]+0.5,"l",-n,0])}else{if(u=="top"){m=m.concat(["M",p[0]+0.5,p[1]+0.5,"l",0,n])}else{m=m.concat(["M",p[0]+0.5,p[1]-0.5,"l",0,-n])}}}}}if(d||e){if(l.length){if(!t.gridOdd&&l.length){t.gridOdd=o.add({type:"path",path:l})}t.gridOdd.setAttributes(Ext.apply({path:l,hidden:false},d||{}),true)}if(s.length){if(!t.gridEven){t.gridEven=o.add({type:"path",path:s})}t.gridEven.setAttributes(Ext.apply({path:s,hidden:false},e||{}),true)}}else{if(m.length){if(!t.gridLines){t.gridLines=t.chart.surface.add({type:"path",path:m,"stroke-width":t.lineWidth||1,stroke:t.gridColor||"#ccc"})}t.gridLines.setAttributes({hidden:false,path:m},true)}else{if(t.gridLines){t.gridLines.hide(true)}}}},getOrCreateLabel:function(c,g){var d=this,b=d.labelGroup,e=b.getAt(c),a=d.chart.surface;if(e){if(g!=e.attr.text){e.setAttributes(Ext.apply({text:g},d.label),true);e._bbox=e.getBBox()}}else{e=a.add(Ext.apply({group:b,type:"text",x:0,y:0,text:g},d.label));a.renderItem(e);e._bbox=e.getBBox()}if(d.label.rotation){e.setAttributes({rotation:{degrees:0}},true);e._ubbox=e.getBBox();e.setAttributes(d.label,true)}else{e._ubbox=e._bbox}return e},rect2pointArray:function(l){var b=this.chart.surface,g=b.getBBox(l,true),m=[g.x,g.y],d=m.slice(),k=[g.x+g.width,g.y],a=k.slice(),j=[g.x+g.width,g.y+g.height],e=j.slice(),i=[g.x,g.y+g.height],c=i.slice(),h=l.matrix;m[0]=h.x.apply(h,d);m[1]=h.y.apply(h,d);k[0]=h.x.apply(h,a);k[1]=h.y.apply(h,a);j[0]=h.x.apply(h,e);j[1]=h.y.apply(h,e);i[0]=h.x.apply(h,c);i[1]=h.y.apply(h,c);return[m,k,j,i]},intersect:function(c,a){var d=this.rect2pointArray(c),b=this.rect2pointArray(a);return !!Ext.draw.Draw.intersect(d,b).length},drawHorizontalLabels:function(){var C=this,e=C.label,w=Math.floor,u=Math.max,v=C.chart.axes,g=C.chart.insetPadding,D=C.position,j=C.inflections,n=j.length,A=C.labels,r=0,h,c,s,o,b,B=C.adjustEnd,a=v.findIndex("position","left")!=-1,m=v.findIndex("position","right")!=-1,z,q,l,p,k,t,d;l=n-1;s=j[0];d=C.getOrCreateLabel(0,C.label.renderer(A[0]));h=Math.floor(Math.abs(Math.sin(e.rotate&&(e.rotate.degrees*Math.PI/180)||0)));for(t=0;t<n;t++){s=j[t];q=C.label.renderer(A[t]);z=C.getOrCreateLabel(t,q);c=z._bbox;r=u(r,c.height+C.dashSize+C.label.padding);p=w(s[0]-(h?c.height:c.width)/2);if(B&&C.chart.maxGutter[0]==0){if(t==0&&!a){p=s[0]}else{if(t==l&&!m){p=Math.min(p,s[0]-c.width+g)}}}if(D=="top"){k=s[1]-(C.dashSize*2)-C.label.padding-(c.height/2)}else{k=s[1]+(C.dashSize*2)+C.label.padding+(c.height/2)}z.setAttributes({hidden:false,x:p,y:k},true);if(t!=0&&(C.intersect(z,o)||C.intersect(z,d))){if(t===l&&b!==0){o.hide(true)}else{z.hide(true);continue}}o=z;b=t}return r},drawVerticalLabels:function(){var C=this,e=C.inflections,D=C.position,j=e.length,o=C.chart,d=o.insetPadding,B=C.labels,u=0,r=Math.max,t=Math.floor,c=Math.ceil,s=C.chart.axes,w=C.chart.maxGutter[1],b,p,k,a,n=s.findIndex("position","top")!=-1,v=s.findIndex("position","bottom")!=-1,A=C.adjustEnd,z,m,h=j-1,l,g,q;for(q=0;q<j;q++){p=e[q];m=C.label.renderer(B[q]);z=C.getOrCreateLabel(q,m);b=z._bbox;u=r(u,b.width+C.dashSize+C.label.padding);g=p[1];if(A&&w<b.height/2){if(q==h&&!n){g=Math.max(g,C.y-C.length+c(b.height/2)-d)}else{if(q==0&&!v){g=C.y+w-t(b.height/2)}}}if(D=="left"){l=p[0]-b.width-C.dashSize-C.label.padding-2}else{l=p[0]+C.dashSize+C.label.padding+2}z.setAttributes(Ext.apply({hidden:false,x:l,y:g},C.label),true);if(q!=0&&C.intersect(z,k)){if(q===h&&a!==0){k.hide(true)}else{z.hide(true);continue}}k=z;a=q}return u},drawLabel:function(){var h=this,a=h.position,b=h.labelGroup,j=h.inflections,g=0,e=0,d,c;if(a=="left"||a=="right"){g=h.drawVerticalLabels()}else{e=h.drawHorizontalLabels()}d=b.getCount();c=j.length;for(;c<d;c++){b.getAt(c).hide(true)}h.bbox={};Ext.apply(h.bbox,h.axisBBox);h.bbox.height=e;h.bbox.width=g;if(Ext.isString(h.title)){h.drawTitle(g,e)}},setTitle:function(a){this.title=a;this.drawLabel()},drawTitle:function(l,m){var h=this,g=h.position,b=h.chart.surface,c=h.displaySprite,k=h.title,e=(g=="left"||g=="right"),j=h.x,i=h.y,a,n,d;if(c){c.setAttributes({text:k},true)}else{a={type:"text",x:0,y:0,text:k};c=h.displaySprite=b.add(Ext.apply(a,h.axisTitleStyle,h.labelTitle));b.renderItem(c)}n=c.getBBox();d=h.dashSize+h.label.padding;if(e){i-=((h.length/2)-(n.height/2));if(g=="left"){j-=(l+d+(n.width/2))}else{j+=(l+d+n.width-(n.width/2))}h.bbox.width+=n.width+10}else{j+=(h.length/2)-(n.width*0.5);if(g=="top"){i-=(m+d+(n.height*0.3))}else{i+=(m+d+(n.height*0.8))}h.bbox.height+=n.height+10}c.setAttributes({translate:{x:j,y:i}},true)}});Ext.define("Ext.chart.axis.Category",{extend:"Ext.chart.axis.Axis",alternateClassName:"Ext.chart.CategoryAxis",alias:"axis.category",categoryNames:null,calculateCategoryCount:false,setLabels:function(){var c=this.chart.getChartStore(),j=c.data.items,k,g,b,a=this.fields,h=a.length,e;this.labels=[];for(k=0,g=j.length;k<g;k++){b=j[k];for(e=0;e<h;e++){this.labels.push(b.get(a[e]))}}},applyData:function(){this.callParent();this.setLabels();var a=this.chart.getChartStore().getCount();return{from:0,to:a-1,power:1,step:1,steps:a-1}}});Ext.define("Ext.chart.axis.Gauge",{extend:"Ext.chart.axis.Abstract",position:"gauge",alias:"axis.gauge",drawAxis:function(q){var j=this.chart,a=j.surface,p=j.chartBBox,d=p.x+(p.width/2),b=p.y+p.height,c=this.margin||10,m=Math.min(p.width,2*p.height)/2+c,h=[],n,l=this.steps,e,g=Math.PI,o=Math.cos,k=Math.sin;if(this.sprites&&!j.resizing){this.drawLabel();return}if(this.margin>=0){if(!this.sprites){for(e=0;e<=l;e++){n=a.add({type:"path",path:["M",d+(m-c)*o(e/l*g-g),b+(m-c)*k(e/l*g-g),"L",d+m*o(e/l*g-g),b+m*k(e/l*g-g),"Z"],stroke:"#ccc"});n.setAttributes({hidden:false},true);h.push(n)}}else{h=this.sprites;for(e=0;e<=l;e++){h[e].setAttributes({path:["M",d+(m-c)*o(e/l*g-g),b+(m-c)*k(e/l*g-g),"L",d+m*o(e/l*g-g),b+m*k(e/l*g-g),"Z"],stroke:"#ccc"},true)}}}this.sprites=h;this.drawLabel();if(this.title){this.drawTitle()}},drawTitle:function(){var e=this,d=e.chart,a=d.surface,g=d.chartBBox,c=e.titleSprite,b;if(!c){e.titleSprite=c=a.add({type:"text",zIndex:2})}c.setAttributes(Ext.apply({text:e.title},e.label||{}),true);b=c.getBBox();c.setAttributes({x:g.x+(g.width/2)-(b.width/2),y:g.y+g.height-(b.height/2)-4},true)},setTitle:function(a){this.title=a;this.drawTitle()},drawLabel:function(){var l=this.chart,p=l.surface,b=l.chartBBox,j=b.x+(b.width/2),h=b.y+b.height,m=this.margin||10,d=Math.min(b.width,2*b.height)/2+2*m,u=Math.round,n=[],g,s=this.maximum||0,k=this.minimum||0,r=this.steps,q=0,v,t=Math.PI,c=Math.cos,a=Math.sin,e=this.label,o=e.renderer||function(i){return i};if(!this.labelArray){for(q=0;q<=r;q++){v=(q===0||q===r)?7:0;g=p.add({type:"text",text:o(u(k+q/r*(s-k))),x:j+d*c(q/r*t-t),y:h+d*a(q/r*t-t)-v,"text-anchor":"middle","stroke-width":0.2,zIndex:10,stroke:"#333"});g.setAttributes({hidden:false},true);n.push(g)}}else{n=this.labelArray;for(q=0;q<=r;q++){v=(q===0||q===r)?7:0;n[q].setAttributes({text:o(u(k+q/r*(s-k))),x:j+d*c(q/r*t-t),y:h+d*a(q/r*t-t)-v},true)}}this.labelArray=n}});Ext.define("Ext.chart.axis.Numeric",{extend:"Ext.chart.axis.Axis",alternateClassName:"Ext.chart.NumericAxis",type:"numeric",alias:"axis.numeric",uses:["Ext.data.Store"],constructor:function(c){var d=this,a=!!(c.label&&c.label.renderer),b;d.callParent([c]);b=d.label;if(c.constrain==null){d.constrain=(c.minimum!=null&&c.maximum!=null)}if(!a){b.renderer=function(e){return d.roundToDecimal(e,d.decimals)}}},roundToDecimal:function(a,c){var b=Math.pow(10,c||0);return Math.round(a*b)/b},minimum:NaN,maximum:NaN,constrain:true,decimals:2,scale:"linear",doConstrain:function(){var t=this,b=t.chart.store,h=b.data.items,s,u,a,e=t.chart.series.items,j=t.fields,c=j.length,g=t.calcEnds(),m=g.from,p=g.to,q,n,r=false,k,v=[],o;for(q=0,n=e.length;q<n;q++){if(e[q].type==="bar"&&e[q].stacked){return}}for(s=0,u=h.length;s<u;s++){o=true;a=h[s];for(q=0;q<c;q++){k=a.get(j[q]);if(+k<+m){o=false;break}if(+k>+p){o=false;break}}if(o){v.push(a)}}t.chart.substore=Ext.create("Ext.data.Store",{model:b.model});t.chart.substore.loadData(v)},position:"left",adjustMaximumByMajorUnit:false,adjustMinimumByMajorUnit:false,processView:function(){var a=this,b=a.constrain;if(b){a.doConstrain()}},applyData:function(){this.callParent();return this.calcEnds()}});Ext.define("Ext.chart.axis.Radial",{extend:"Ext.chart.axis.Abstract",position:"radial",alias:"axis.radial",drawAxis:function(u){var m=this.chart,a=m.surface,t=m.chartBBox,q=m.store,b=q.getCount(),e=t.x+(t.width/2),c=t.y+(t.height/2),p=Math.min(t.width,t.height)/2,k=[],r,o=this.steps,g,d,h=Math.PI*2,s=Math.cos,n=Math.sin;if(this.sprites&&!m.resizing){this.drawLabel();return}if(!this.sprites){for(g=1;g<=o;g++){r=a.add({type:"circle",x:e,y:c,radius:Math.max(p*g/o,0),stroke:"#ccc"});r.setAttributes({hidden:false},true);k.push(r)}for(g=0;g<b;g++){r=a.add({type:"path",path:["M",e,c,"L",e+p*s(g/b*h),c+p*n(g/b*h),"Z"],stroke:"#ccc"});r.setAttributes({hidden:false},true);k.push(r)}}else{k=this.sprites;for(g=0;g<o;g++){k[g].setAttributes({x:e,y:c,radius:Math.max(p*(g+1)/o,0),stroke:"#ccc"},true)}for(d=0;d<b;d++){k[g+d].setAttributes({path:["M",e,c,"L",e+p*s(d/b*h),c+p*n(d/b*h),"Z"],stroke:"#ccc"},true)}}this.sprites=k;this.drawLabel()},drawLabel:function(){var w=this.chart,c=w.series.items,r,B=w.surface,b=w.chartBBox,l=w.store,J=l.data.items,p,k,o=b.x+(b.width/2),n=b.y+(b.height/2),h=Math.min(b.width,b.height)/2,F=Math.max,I=Math.round,x=[],m,z=[],d,A=[],g,v=!this.maximum,H=this.maximum||0,G=this.steps,E=0,D,t,s,y=Math.PI*2,e=Math.cos,a=Math.sin,C=this.label.display,q=C!=="none",u=10;if(!q){return}for(E=0,p=c.length;E<p;E++){r=c[E];z.push(r.yField);g=r.xField}for(D=0,p=J.length;D<p;D++){k=J[D];if(v){for(E=0,d=z.length;E<d;E++){H=F(+k.get(z[E]),H)}}A.push(k.get(g))}if(!this.labelArray){if(C!="categories"){for(E=1;E<=G;E++){m=B.add({type:"text",text:I(E/G*H),x:o,y:n-h*E/G,"text-anchor":"middle","stroke-width":0.1,stroke:"#333"});m.setAttributes({hidden:false},true);x.push(m)}}if(C!="scale"){for(D=0,G=A.length;D<G;D++){t=e(D/G*y)*(h+u);s=a(D/G*y)*(h+u);m=B.add({type:"text",text:A[D],x:o+t,y:n+s,"text-anchor":t*t<=0.001?"middle":(t<0?"end":"start")});m.setAttributes({hidden:false},true);x.push(m)}}}else{x=this.labelArray;if(C!="categories"){for(E=0;E<G;E++){x[E].setAttributes({text:I((E+1)/G*H),x:o,y:n-h*(E+1)/G,"text-anchor":"middle","stroke-width":0.1,stroke:"#333"},true)}}if(C!="scale"){for(D=0,G=A.length;D<G;D++){t=e(D/G*y)*(h+u);s=a(D/G*y)*(h+u);if(x[E+D]){x[E+D].setAttributes({type:"text",text:A[D],x:o+t,y:n+s,"text-anchor":t*t<=0.001?"middle":(t<0?"end":"start")},true)}}}}this.labelArray=x}});Ext.define("Ext.chart.axis.Time",{extend:"Ext.chart.axis.Numeric",alternateClassName:"Ext.chart.TimeAxis",alias:"axis.time",uses:["Ext.data.Store"],dateFormat:false,fromDate:false,toDate:false,step:[Ext.Date.DAY,1],constrain:false,constructor:function(b){var c=this,a,d,e;c.callParent([b]);a=c.label||{};e=this.dateFormat;if(e){if(a.renderer){d=a.renderer;a.renderer=function(g){g=d(g);return Ext.Date.format(new Date(d(g)),e)}}else{a.renderer=function(g){return Ext.Date.format(new Date(g>>0),e)}}}},processView:function(){var a=this;if(a.fromDate){a.minimum=+a.fromDate}if(a.toDate){a.maximum=+a.toDate}if(a.constrain){a.doConstrain()}},calcEnds:function(){var c=this,a,b=c.step;if(b){a=c.getRange();a=Ext.draw.Draw.snapEndsByDateAndStep(new Date(a.min),new Date(a.max),Ext.isNumber(b)?[Date.MILLI,b]:b);if(c.minimum){a.from=c.minimum}if(c.maximum){a.to=c.maximum}a.step=(a.to-a.from)/a.steps;return a}else{return c.callParent(arguments)}}});Ext.define("Ext.chart.series.Series",{mixins:{observable:"Ext.util.Observable",labels:"Ext.chart.Label",highlights:"Ext.chart.Highlight",tips:"Ext.chart.Tip",callouts:"Ext.chart.Callout"},type:null,title:null,showInLegend:true,renderer:function(e,a,c,d,b){return c},shadowAttributes:null,animating:false,constructor:function(a){var b=this;if(a){Ext.apply(b,a)}b.shadowGroups=[];b.mixins.labels.constructor.call(b,a);b.mixins.highlights.constructor.call(b,a);b.mixins.tips.constructor.call(b,a);b.mixins.callouts.constructor.call(b,a);b.addEvents({scope:b,itemmouseover:true,itemmouseout:true,itemmousedown:true,itemmouseup:true,mouseleave:true,afterdraw:true,titlechange:true});b.mixins.observable.constructor.call(b,a);b.on({scope:b,itemmouseover:b.onItemMouseOver,itemmouseout:b.onItemMouseOut,mouseleave:b.onMouseLeave});if(b.style){Ext.apply(b.seriesStyle,b.style)}},eachRecord:function(c,b){var a=this.chart;(a.substore||a.store).each(c,b)},getRecordCount:function(){var b=this.chart,a=b.substore||b.store;return a?a.getCount():0},isExcluded:function(a){var b=this.__excludes;return !!(b&&b[a])},setBBox:function(a){var e=this,c=e.chart,b=c.chartBBox,g=a?0:c.maxGutter[0],d=a?0:c.maxGutter[1],h,i;h={x:b.x,y:b.y,width:b.width,height:b.height};e.clipBox=h;i={x:(h.x+g)-(c.zoom.x*c.zoom.width),y:(h.y+d)-(c.zoom.y*c.zoom.height),width:(h.width-(g*2))*c.zoom.width,height:(h.height-(d*2))*c.zoom.height};e.bbox=i},onAnimate:function(b,a){var c=this;b.stopAnimation();if(c.animating){return b.animate(Ext.applyIf(a,c.chart.animate))}else{c.animating=true;return b.animate(Ext.apply(Ext.applyIf(a,c.chart.animate),{listeners:{afteranimate:function(){c.animating=false;c.fireEvent("afterrender")}}}))}},getGutters:function(){return[0,0]},onItemMouseOver:function(b){var a=this;if(b.series===a){if(a.highlight){a.highlightItem(b)}if(a.tooltip){a.showTip(b)}}},onItemMouseOut:function(b){var a=this;if(b.series===a){a.unHighlightItem();if(a.tooltip){a.hideTip(b)}}},onMouseLeave:function(){var a=this;a.unHighlightItem();if(a.tooltip){a.hideTip()}},getItemForPoint:function(a,j){if(!this.items||!this.items.length||this.seriesIsHidden){return null}var g=this,b=g.items,h=g.bbox,e,c,d;if(!Ext.draw.Draw.withinBox(a,j,h)){return null}for(c=0,d=b.length;c<d;c++){if(b[c]&&this.isItemInPoint(a,j,b[c],c)){return b[c]}}return null},isItemInPoint:function(a,d,c,b){return false},hideAll:function(){var h=this,g=h.items,m,e,d,c,a,k,b;h.seriesIsHidden=true;h._prevShowMarkers=h.showMarkers;h.showMarkers=false;h.hideLabels(0);for(d=0,e=g.length;d<e;d++){m=g[d];k=m.sprite;if(k){k.setAttributes({hidden:true},true)}if(k&&k.shadows){b=k.shadows;for(c=0,a=b.length;c<a;++c){b[c].setAttributes({hidden:true},true)}}}},showAll:function(){var a=this,b=a.chart.animate;a.chart.animate=false;a.seriesIsHidden=false;a.showMarkers=a._prevShowMarkers;a.drawSeries();a.chart.animate=b},hide:function(){if(this.items){var h=this,b=h.items,d,c,a,g,e;if(b&&b.length){for(d=0,g=b.length;d<g;++d){if(b[d].sprite){b[d].sprite.hide(true);e=b[d].shadows||b[d].sprite.shadows;if(e){for(c=0,a=e.length;c<a;++c){e[c].hide(true)}}}}h.hideLabels()}}},getLegendColor:function(a){var b=this,d,c;if(b.seriesStyle){d=b.seriesStyle.fill;c=b.seriesStyle.stroke;if(d&&d!="none"){return d}if(c){return c}}return(b.colorArrayStyle)?b.colorArrayStyle[b.seriesIdx%b.colorArrayStyle.length]:"#000"},visibleInLegend:function(a){var b=this.__excludes;if(b){return !b[a]}return !this.seriesIsHidden},setTitle:function(a,d){var c=this,b=c.title;if(Ext.isString(a)){d=a;a=0}if(Ext.isArray(b)){b[a]=d}else{c.title=d}c.fireEvent("titlechange",d,a)}});Ext.define("Ext.chart.series.Cartesian",{extend:"Ext.chart.series.Series",alternateClassName:["Ext.chart.CartesianSeries","Ext.chart.CartesianChart"],xField:null,yField:null,axis:"left",getLegendLabels:function(){var j=this,e=[],g,d,h,k=j.combinations,l,a,c,b;g=[].concat(j.yField);for(d=0,h=g.length;d<h;d++){l=j.title;e.push((Ext.isArray(l)?l[d]:l)||g[d])}if(k){k=Ext.Array.from(k);for(d=0,h=k.length;d<h;d++){a=k[d];c=e[a[0]];b=e[a[1]];e[a[1]]=c+" & "+b;e.splice(a[0],1)}}return e},eachYValue:function(b,e,d){var j=this,h=j.getYValueAccessors(),c,g,a;for(c=0,g=h.length;c<g;c++){a=h[c];e.call(d,a(b),c)}},getYValueCount:function(){return this.getYValueAccessors().length},combine:function(g,e){var d=this,c=d.getYValueAccessors(),b=c[g],a=c[e];c[e]=function(h){return b(h)+a(h)};c.splice(g,1);d.callParent([g,e])},clearCombinations:function(){delete this.yValueAccessors;this.callParent()},getYValueAccessors:function(){var e=this,a=e.yValueAccessors,g,c,b,d;if(!a){a=e.yValueAccessors=[];g=[].concat(e.yField);for(b=0,d=g.length;b<d;b++){c=g[b];a.push(function(h){return h.get(c)})}}return a},getMinMaxXValues:function(){var k=this,j=k.chart,m=j.getChartStore(),d=m.data.items,e,h,g,c,l,a=k.xField,b;if(k.getRecordCount()>0){c=Infinity;l=-c;for(e=0,h=d.length;e<h;e++){g=d[e];b=g.get(a);if(b>l){l=b}if(b<c){c=b}}}else{c=l=0}return[c,l]},getMinMaxYValues:function(){var k=this,j=k.chart,o=j.getChartStore(),c=o.data.items,d,h,e,g=k.stacked,b,l,n,m;function a(r,q){if(!k.isExcluded(q)){if(r<0){m+=r}else{n+=r}}}function p(r,q){if(!k.isExcluded(q)){if(r>l){l=r}if(r<b){b=r}}}if(k.getRecordCount()>0){b=Infinity;l=-b;for(d=0,h=c.length;d<h;d++){e=c[d];if(g){n=0;m=0;k.eachYValue(e,a);if(n>l){l=n}if(m<b){b=m}}else{k.eachYValue(e,p)}}}else{b=l=0}return[b,l]},getAxesForXAndYFields:function(){var m=this,l=m.chart.axes,d=[].concat(m.axis),c={},e=[].concat(m.yField),n={},o=[].concat(m.xField),j,b,a,h,k,g;g=m.type==="bar"&&m.column===false;if(g){j=e;e=o;o=j}if(Ext.Array.indexOf(d,"top")>-1){b="top"}else{if(Ext.Array.indexOf(d,"bottom")>-1){b="bottom"}else{if(l.get("top")&&l.get("bottom")){for(h=0,k=o.length;h<k;h++){n[o[h]]=true}j=[].concat(l.get("bottom").fields);for(h=0,k=j.length;h<k;h++){if(n[j[h]]){b="bottom";break}}j=[].concat(l.get("top").fields);for(h=0,k=j.length;h<k;h++){if(n[j[h]]){b="top";break}}}else{if(l.get("top")){b="top"}else{if(l.get("bottom")){b="bottom"}}}}}if(Ext.Array.indexOf(d,"left")>-1){a="left"}else{if(Ext.Array.indexOf(d,"right")>-1){a="right"}else{if(l.get("left")&&l.get("right")){for(h=0,k=e.length;h<k;h++){c[e[h]]=true}j=[].concat(l.get("right").fields);for(h=0,k=j.length;h<k;h++){if(c[j[h]]){break}}j=[].concat(l.get("left").fields);for(h=0,k=j.length;h<k;h++){if(c[j[h]]){a="left";break}}}else{if(l.get("left")){a="left"}else{if(l.get("right")){a="right"}}}}}return g?{xAxis:a,yAxis:b}:{xAxis:b,yAxis:a}}});Ext.define("Ext.chart.series.Area",{extend:"Ext.chart.series.Cartesian",alias:"series.area",requires:["Ext.chart.axis.Axis","Ext.draw.Color","Ext.fx.Anim"],type:"area",stacked:true,style:{},constructor:function(c){this.callParent(arguments);var e=this,a=e.chart.surface,d,b;c.highlightCfg=Ext.Object.merge({},{lineWidth:3,stroke:"#55c",opacity:0.8,color:"#f00"},c.highlightCfg);Ext.apply(e,c,{__excludes:[]});if(e.highlight){e.highlightSprite=a.add({type:"path",path:["M",0,0],zIndex:1000,opacity:0.3,lineWidth:5,hidden:true,stroke:"#444"})}e.group=a.getGroup(e.seriesId)},shrink:function(b,n,o){var k=b.length,m=Math.floor(k/o),h,g,d=0,l=this.areas.length,a=[],e=[],c=[];for(g=0;g<l;++g){a[g]=0}for(h=0;h<k;++h){d+=+b[h];for(g=0;g<l;++g){a[g]+=+n[h][g]}if(h%m==0){e.push(d/m);for(g=0;g<l;++g){a[g]/=m}c.push(a);d=0;for(g=0,a=[];g<l;++g){a[g]=0}}}return{x:e,y:c}},getBounds:function(){var j=this,M=j.chart,a=M.getChartStore(),L=a.data.items,I,F,x,v=[].concat(j.yField),A=v.length,z=[],D=[],g=Infinity,C=g,B=g,n=-g,m=-g,s=Math,w=s.min,e=s.max,p=j.getAxesForXAndYFields(),J=p.xAxis,u=p.yAxis,G,r,k,h,E,q,N,K,b,t,H,c,d,o,y;j.setBBox();k=j.bbox;if(o=M.axes.get(J)){if(o.type==="Time"){r=true}G=o.applyData();C=G.from;n=G.to}if(o=M.axes.get(u)){G=o.applyData();B=G.from;m=G.to}if(j.xField&&!Ext.isNumber(C)){o=j.getMinMaxXValues();r=true;C=o[0];n=o[1]}if(j.yField&&!Ext.isNumber(B)){o=j.getMinMaxYValues();B=o[0];m=o[1]}if(!Ext.isNumber(B)){B=0}if(!Ext.isNumber(m)){m=0}for(I=0,F=L.length;I<F;I++){x=L[I];q=x.get(j.xField);N=[];if(typeof q!="number"){if(r){q=+q}else{q=I}}z.push(q);b=0;for(K=0;K<A;K++){if(j.__excludes[K]){continue}d=x.get(v[K]);if(typeof d=="number"){N.push(d)}}D.push(N)}h=k.width/((n-C)||1);E=k.height/((m-B)||1);t=z.length;if((t>k.width)&&j.areas){H=j.shrink(z,D,k.width);z=H.x;D=H.y}return{bbox:k,minX:C,minY:B,xValues:z,yValues:D,xScale:h,yScale:E,areasLen:A}},getPaths:function(){var w=this,m=w.chart,c=m.getChartStore(),e=true,g=w.getBounds(),a=g.bbox,n=w.items=[],v=[],b,d=0,p=[],s,j,k,h,q,t,l,z,r,u,o;j=g.xValues.length;for(s=0;s<j;s++){q=g.xValues[s];t=g.yValues[s];k=a.x+(q-g.minX)*g.xScale;l=0;d=0;for(z=0;z<g.areasLen;z++){if(w.__excludes[z]){continue}if(!v[z]){v[z]=[]}u=t[d];l+=u;h=a.y+a.height-(l-g.minY)*g.yScale;if(!p[z]){p[z]=["M",k,h];v[z].push(["L",k,h])}else{p[z].push("L",k,h);v[z].push(["L",k,h])}if(!n[z]){n[z]={pointsUp:[],pointsDown:[],series:w}}n[z].pointsUp.push([k,h]);d++}}for(z=0;z<g.areasLen;z++){if(w.__excludes[z]){continue}o=p[z];if(z==0||e){e=false;o.push("L",k,a.y+a.height,"L",a.x,a.y+a.height,"Z")}else{b=v[r];b.reverse();o.push("L",k,b[0][2]);for(s=0;s<j;s++){o.push(b[s][0],b[s][1],b[s][2]);n[z].pointsDown[j-s-1]=[b[s][1],b[s][2]]}o.push("L",a.x,o[2],"Z")}r=z}return{paths:p,areasLen:g.areasLen}},drawSeries:function(){var h=this,g=h.chart,i=g.getChartStore(),c=g.surface,b=g.animate,k=h.group,a=Ext.apply(h.seriesStyle,h.style),l=h.colorArrayStyle,o=l&&l.length||0,d,e,n,m,j;h.unHighlightItem();h.cleanHighlights();if(!i||!i.getCount()||h.seriesIsHidden){h.hide();h.items=[];return}n=h.getPaths();if(!h.areas){h.areas=[]}for(d=0;d<n.areasLen;d++){if(h.__excludes[d]){continue}if(!h.areas[d]){h.items[d].sprite=h.areas[d]=c.add(Ext.apply({},{type:"path",group:k,path:n.paths[d],stroke:a.stroke||l[d%o],fill:l[d%o]},a||{}))}e=h.areas[d];m=n.paths[d];if(b){j=h.renderer(e,false,{path:m,fill:l[d%o],stroke:a.stroke||l[d%o]},d,i);h.animation=h.onAnimate(e,{to:j})}else{j=h.renderer(e,false,{path:m,hidden:false,fill:l[d%o],stroke:a.stroke||l[d%o]},d,i);h.areas[d].setAttributes(j,true)}}h.renderLabels();h.renderCallouts()},onAnimate:function(b,a){b.show();return this.callParent(arguments)},onCreateLabel:function(d,k,c,e){var g=this,h=g.labelsGroup,a=g.label,j=g.bbox,b=Ext.apply(a,g.seriesLabelStyle);return g.chart.surface.add(Ext.apply({type:"text","text-anchor":"middle",group:h,x:k.point[0],y:j.y+j.height/2},b||{}))},onPlaceLabel:function(g,k,s,p,o,c,e){var u=this,l=u.chart,r=l.resizing,t=u.label,q=t.renderer,b=t.field,a=u.bbox,j=s.point[0],h=s.point[1],d,n,m;g.setAttributes({text:q(k.get(b[e])),hidden:true},true);d=g.getBBox();n=d.width/2;m=d.height/2;j=j-n<a.x?a.x+n:j;j=(j+n>a.x+a.width)?(j-(j+n-a.x-a.width)):j;h=h-m<a.y?a.y+m:h;h=(h+m>a.y+a.height)?(h-(h+m-a.y-a.height)):h;if(u.chart.animate&&!u.chart.resizing){g.show(true);u.onAnimate(g,{to:{x:j,y:h}})}else{g.setAttributes({x:j,y:h},true);if(r){u.animation.on("afteranimate",function(){g.show(true)})}else{g.show(true)}}},onPlaceCallout:function(m,r,J,G,F,d,k){var M=this,s=M.chart,D=s.surface,H=s.resizing,L=M.callouts,t=M.items,v=(G==0)?false:t[G-1].point,z=(G==t.length-1)?false:t[G+1].point,c=J.point,A,g,N,K,o,q,b=m.label.getBBox(),I=30,C=10,B=3,h,e,j,w,u,E=M.clipRect,n,l;if(!v){v=c}if(!z){z=c}K=(z[1]-v[1])/(z[0]-v[0]);o=(c[1]-v[1])/(c[0]-v[0]);q=(z[1]-c[1])/(z[0]-c[0]);g=Math.sqrt(1+K*K);A=[1/g,K/g];N=[-A[1],A[0]];if(o>0&&q<0&&N[1]<0||o<0&&q>0&&N[1]>0){N[0]*=-1;N[1]*=-1}else{if(Math.abs(o)<Math.abs(q)&&N[0]<0||Math.abs(o)>Math.abs(q)&&N[0]>0){N[0]*=-1;N[1]*=-1}}n=c[0]+N[0]*I;l=c[1]+N[1]*I;h=n+(N[0]>0?0:-(b.width+2*B));e=l-b.height/2-B;j=b.width+2*B;w=b.height+2*B;if(h<E[0]||(h+j)>(E[0]+E[2])){N[0]*=-1}if(e<E[1]||(e+w)>(E[1]+E[3])){N[1]*=-1}n=c[0]+N[0]*I;l=c[1]+N[1]*I;h=n+(N[0]>0?0:-(b.width+2*B));e=l-b.height/2-B;j=b.width+2*B;w=b.height+2*B;m.lines.setAttributes({path:["M",c[0],c[1],"L",n,l,"Z"]},true);m.box.setAttributes({x:h,y:e,width:j,height:w},true);m.label.setAttributes({x:n+(N[0]>0?B:-(b.width+B)),y:l},true);for(u in m){m[u].show(true)}},isItemInPoint:function(j,h,m,c){var g=this,b=m.pointsUp,d=m.pointsDown,q=Math.abs,o=false,l=false,e=Infinity,a,n,k;for(a=0,n=b.length;a<n;a++){k=[b[a][0],b[a][1]];o=false;l=a==n-1;if(e>q(j-k[0])){e=q(j-k[0]);o=true;if(l){++a}}if(!o||(o&&l)){k=b[a-1];if(h>=k[1]&&(!d.length||h<=(d[a-1][1]))){m.storeIndex=a-1;m.storeField=g.yField[c];m.storeItem=g.chart.store.getAt(a-1);m._points=d.length?[k,d[a-1]]:[k];return true}else{break}}}return false},highlightSeries:function(){var a,c,b;if(this._index!==undefined){a=this.areas[this._index];if(a.__highlightAnim){a.__highlightAnim.paused=true}a.__highlighted=true;a.__prevOpacity=a.__prevOpacity||a.attr.opacity||1;a.__prevFill=a.__prevFill||a.attr.fill;a.__prevLineWidth=a.__prevLineWidth||a.attr.lineWidth;b=Ext.draw.Color.fromString(a.__prevFill);c={lineWidth:(a.__prevLineWidth||0)+2};if(b){c.fill=b.getLighter(0.2).toString()}else{c.opacity=Math.max(a.__prevOpacity-0.3,0)}if(this.chart.animate){a.__highlightAnim=new Ext.fx.Anim(Ext.apply({target:a,to:c},this.chart.animate))}else{a.setAttributes(c,true)}}},unHighlightSeries:function(){var a;if(this._index!==undefined){a=this.areas[this._index];if(a.__highlightAnim){a.__highlightAnim.paused=true}if(a.__highlighted){a.__highlighted=false;a.__highlightAnim=new Ext.fx.Anim({target:a,to:{fill:a.__prevFill,opacity:a.__prevOpacity,lineWidth:a.__prevLineWidth}})}}},highlightItem:function(c){var b=this,a,d;if(!c){this.highlightSeries();return}a=c._points;d=a.length==2?["M",a[0][0],a[0][1],"L",a[1][0],a[1][1]]:["M",a[0][0],a[0][1],"L",a[0][0],b.bbox.y+b.bbox.height];b.highlightSprite.setAttributes({path:d,hidden:false},true)},unHighlightItem:function(a){if(!a){this.unHighlightSeries()}if(this.highlightSprite){this.highlightSprite.hide(true)}},hideAll:function(a){var b=this;a=(isNaN(b._index)?a:b._index)||0;b.__excludes[a]=true;b.areas[a].hide(true);b.redraw()},showAll:function(a){var b=this;a=(isNaN(b._index)?a:b._index)||0;b.__excludes[a]=false;b.areas[a].show(true);b.redraw()},redraw:function(){var a=this,b;b=a.chart.legend.rebuild;a.chart.legend.rebuild=false;a.chart.redraw();a.chart.legend.rebuild=b},hide:function(){if(this.areas){var h=this,b=h.areas,d,c,a,g,e;if(b&&b.length){for(d=0,g=b.length;d<g;++d){if(b[d]){b[d].hide(true)}}h.hideLabels()}}},getLegendColor:function(a){var b=this;return b.colorArrayStyle[a%b.colorArrayStyle.length]}});Ext.define("Ext.chart.series.Bar",{extend:"Ext.chart.series.Cartesian",alternateClassName:["Ext.chart.BarSeries","Ext.chart.BarChart","Ext.chart.StackedBarChart"],requires:["Ext.chart.axis.Axis","Ext.fx.Anim"],type:"bar",alias:"series.bar",column:false,style:{},gutter:38.2,groupGutter:38.2,xPadding:0,yPadding:10,constructor:function(c){this.callParent(arguments);var e=this,a=e.chart.surface,g=e.chart.shadow,d,b;c.highlightCfg=Ext.Object.merge({lineWidth:3,stroke:"#55c",opacity:0.8,color:"#f00"},c.highlightCfg);Ext.apply(e,c,{shadowAttributes:[{"stroke-width":6,"stroke-opacity":0.05,stroke:"rgb(200, 200, 200)",translate:{x:1.2,y:1.2}},{"stroke-width":4,"stroke-opacity":0.1,stroke:"rgb(150, 150, 150)",translate:{x:0.9,y:0.9}},{"stroke-width":2,"stroke-opacity":0.15,stroke:"rgb(100, 100, 100)",translate:{x:0.6,y:0.6}}]});e.group=a.getGroup(e.seriesId+"-bars");if(g){for(d=0,b=e.shadowAttributes.length;d<b;d++){e.shadowGroups.push(a.getGroup(e.seriesId+"-shadows"+d))}}},getBarGirth:function(){var d=this,a=d.chart.getChartStore(),b=d.column,c=a.getCount(),e=d.gutter/100;return(d.chart.chartBBox[b?"width":"height"]-d[b?"xPadding":"yPadding"]*2)/(c*(e+1)-e)},getGutters:function(){var b=this,a=b.column,c=Math.ceil(b[a?"xPadding":"yPadding"]+b.getBarGirth()/2);return b.column?[c,0]:[0,c]},getBounds:function(){var o=this,O=o.chart,b=O.getChartStore(),N=b.data.items,M,x,D,v=[].concat(o.yField),p=v.length,l=p,c=o.groupGutter/100,H=o.column,h=o.xPadding,m=o.yPadding,J=o.stacked,t=o.getBarGirth(),y=H?"width":"height",u=Math,B=u.min,k=u.max,n=u.abs,G=o.getAxesForXAndYFields(),A=G.yAxis,L,C,e,q,F,r,s,E,z,a,w,I,K,d,g;o.setBBox(true);q=o.bbox;if(o.__excludes){for(K=0,w=o.__excludes.length;K<w;K++){if(o.__excludes[K]){l--}}}s=O.axes.get(A);if(s){L=s.applyData();F=L.from;r=L.to}if(o.yField&&!Ext.isNumber(F)){E=o.getMinMaxYValues();F=E[0];r=E[1]}if(!Ext.isNumber(F)){F=0}if(!Ext.isNumber(r)){r=0}z=(H?q.height-m*2:q.width-h*2)/(r-F);C=t;e=(t/((J?1:l)*(c+1)-c));if(y in o.style){e=B(e,o.style[y]);C=e*((J?1:l)*(c+1)-c)}a=(H)?q.y+q.height-m:q.x+h;if(J){w=[[],[]];for(M=0,x=N.length;M<x;M++){D=N[M];w[0][M]=w[0][M]||0;w[1][M]=w[1][M]||0;for(K=0;K<p;K++){if(o.__excludes&&o.__excludes[K]){continue}I=D.get(v[K]);w[+(I>0)][M]+=n(I)}}w[+(r>0)].push(n(r));w[+(F>0)].push(n(F));g=k.apply(u,w[0]);d=k.apply(u,w[1]);z=(H?q.height-m*2:q.width-h*2)/(d+g);a=a+g*z*(H?-1:1)}else{if(F/r<0){a=a-F*z*(H?-1:1)}}return{bars:v,bbox:q,shrunkBarWidth:C,barsLen:p,groupBarsLen:l,barWidth:t,groupBarWidth:e,scale:z,zero:a,xPadding:h,yPadding:m,signed:F/r<0,minY:F,maxY:r}},getPaths:function(){var v=this,X=v.chart,b=X.getChartStore(),W=b.data.items,V,E,L,G=v.bounds=v.getBounds(),z=v.items=[],P=v.yField,l=v.gutter/100,c=v.groupGutter/100,T=X.animate,N=v.column,x=v.group,m=X.shadow,R=v.shadowGroups,Q=v.shadowAttributes,q=R.length,y=G.bbox,B=G.barWidth,K=G.shrunkBarWidth,n=v.xPadding,r=v.yPadding,S=v.stacked,w=G.barsLen,O=v.colorArrayStyle,h=O&&O.length||0,C=Math,o=C.max,I=C.min,u=C.abs,U,Y,e,J,D,a,k,t,s,p,g,d,F,A,M,H;for(V=0,E=W.length;V<E;V++){L=W[V];a=G.zero;k=G.zero;J=0;D=0;t=false;for(U=0,g=0;U<w;U++){if(v.__excludes&&v.__excludes[U]){continue}Y=L.get(G.bars[U]);e=Math.round((Y-o(G.minY,0))*G.scale);s={fill:O[(w>1?U:0)%h]};if(N){Ext.apply(s,{height:e,width:o(G.groupBarWidth,0),x:(y.x+n+(B-K)*0.5+V*B*(1+l)+g*G.groupBarWidth*(1+c)*!S),y:a-e})}else{M=(E-1)-V;Ext.apply(s,{height:o(G.groupBarWidth,0),width:e+(a==G.zero),x:a+(a!=G.zero),y:(y.y+r+(B-K)*0.5+M*B*(1+l)+g*G.groupBarWidth*(1+c)*!S+1)})}if(e<0){if(N){s.y=k;s.height=u(e)}else{s.x=k+e;s.width=u(e)}}if(S){if(e<0){k+=e*(N?-1:1)}else{a+=e*(N?-1:1)}J+=u(e);if(e<0){D+=u(e)}}s.x=Math.floor(s.x)+1;H=Math.floor(s.y);if(!Ext.isIE9&&s.y>H){H--}s.y=H;s.width=Math.floor(s.width);s.height=Math.floor(s.height);z.push({series:v,yField:P[U],storeItem:L,value:[L.get(v.xField),Y],attr:s,point:N?[s.x+s.width/2,Y>=0?s.y:s.y+s.height]:[Y>=0?s.x+s.width:s.x,s.y+s.height/2]});if(T&&X.resizing){p=N?{x:s.x,y:G.zero,width:s.width,height:0}:{x:G.zero,y:s.y,width:0,height:s.height};if(m&&(S&&!t||!S)){t=true;for(d=0;d<q;d++){F=R[d].getAt(S?V:(V*w+U));if(F){F.setAttributes(p,true)}}}A=x.getAt(V*w+U);if(A){A.setAttributes(p,true)}}g++}if(S&&z.length){z[V*g].totalDim=J;z[V*g].totalNegDim=D}}if(S&&g==0){for(V=0,E=W.length;V<E;V++){for(d=0;d<q;d++){F=R[d].getAt(V);if(F){F.hide(true)}}}}},renderShadows:function(u,v,y,l){var z=this,p=z.chart,s=p.surface,g=p.animate,x=z.stacked,a=z.shadowGroups,w=z.shadowAttributes,o=a.length,h=p.getChartStore(),d=z.column,r=z.items,b=[],m=l.zero,e,q,k,A,n,t,c;if((x&&(u%l.groupBarsLen===0))||!x){t=u/l.groupBarsLen;for(e=0;e<o;e++){q=Ext.apply({},w[e]);k=a[e].getAt(x?t:u);Ext.copyTo(q,v,"x,y,width,height");if(!k){k=s.add(Ext.apply({type:"rect",group:a[e]},Ext.apply({},y,q)))}if(x){A=r[u].totalDim;n=r[u].totalNegDim;if(d){q.y=m+n-A-1;q.height=A}else{q.x=m-n;q.width=A}}c=z.renderer(k,h.getAt(t),q,u,h);c.hidden=!!v.hidden;if(g){z.onAnimate(k,{to:c})}else{k.setAttributes(c,true)}b.push(k)}}return b},drawSeries:function(){var C=this,r=C.chart,m=r.getChartStore(),v=r.surface,k=r.animate,A=C.stacked,d=C.column,b=r.shadow,a=C.shadowGroups,q=a.length,o=C.group,g=C.seriesStyle,s,p,y,x,B,t,c,e,h,n,l,z,u,w;if(!m||!m.getCount()||C.seriesIsHidden){C.hide();C.items=[];return}l=Ext.apply({},this.style,g);delete l.fill;delete l.x;delete l.y;delete l.width;delete l.height;C.unHighlightItem();C.cleanHighlights();C.getPaths();n=C.bounds;s=C.items;B=d?{y:n.zero,height:0}:{x:n.zero,width:0};p=s.length;for(y=0;y<p;y++){t=o.getAt(y);z=s[y].attr;if(b){s[y].shadows=C.renderShadows(y,z,B,n)}if(!t){u=Ext.apply({},B,z);u=Ext.apply(u,l||{});t=v.add(Ext.apply({},{type:"rect",group:o},u))}if(k){c=C.renderer(t,m.getAt(y),z,y,m);t._to=c;w=C.onAnimate(t,{to:Ext.apply(c,l)});if(b&&A&&(y%n.barsLen===0)){x=y/n.barsLen;for(e=0;e<q;e++){w.on("afteranimate",function(){this.show(true)},a[e].getAt(x))}}}else{c=C.renderer(t,m.getAt(y),Ext.apply(z,{hidden:false}),y,m);t.setAttributes(Ext.apply(c,l),true)}s[y].sprite=t}p=o.getCount();for(x=y;x<p;x++){o.getAt(x).hide(true)}if(C.stacked){y=m.getCount()}if(b){for(e=0;e<q;e++){h=a[e];p=h.getCount();for(x=y;x<p;x++){h.getAt(x).hide(true)}}}C.renderLabels()},onCreateLabel:function(e,l,d,g){var h=this,a=h.chart.surface,k=h.labelsGroup,b=h.label,c=Ext.apply({},b,h.seriesLabelStyle||{}),j;return a.add(Ext.apply({type:"text",group:k},c||{}))},onPlaceLabel:function(G,N,s,J,p,H,I,v){var m=this,n=m.bounds,d=n.groupBarWidth,F=m.column,L=m.chart,u=L.chartBBox,A=L.resizing,o=s.value[0],O=s.value[1],l=s.attr,z=m.label,K=z.orientation=="vertical",h=[].concat(z.field),t=z.renderer,r=t(N.get(h[v])),g=m.getLabelSize(r),a=g.width,c=g.height,b=n.zero,k="outside",q="insideStart",M="insideEnd",E=10,C=6,e=n.signed,D,B,w;G.setAttributes({text:r});G.isOutside=false;if(F){if(p==k){if(c+C+l.height>(O>=0?b-u.y:u.y+u.height-b)){p=M}}else{if(c+C>l.height){p=k;G.isOutside=true}}D=l.x+d/2;B=p==q?(b+((c/2+3)*(O>=0?-1:1))):(O>=0?(l.y+((c/2+3)*(p==k?-1:1))):(l.y+l.height+((c/2+3)*(p===k?1:-1))))}else{if(p==k){if(a+E+l.width>(O>=0?u.x+u.width-b:b-u.x)){p=M}}else{if(a+E>l.width){p=k;G.isOutside=true}}D=p==q?(b+((a/2+5)*(O>=0?1:-1))):(O>=0?(l.x+l.width+((a/2+5)*(p===k?1:-1))):(l.x+((a/2+5)*(p===k?-1:1))));B=l.y+d/2}w={x:D,y:B};if(K){w.rotate={x:D,y:B,degrees:270}}if(H&&A){if(F){D=l.x+l.width/2;B=b}else{D=b;B=l.y+l.height/2}G.setAttributes({x:D,y:B},true);if(K){G.setAttributes({rotate:{x:D,y:B,degrees:270}},true)}}if(H){m.onAnimate(G,{to:w})}else{G.setAttributes(Ext.apply(w,{hidden:false}),true)}},getLabelSize:function(g){var k=this.testerLabel,a=this.label,d=Ext.apply({},a,this.seriesLabelStyle||{}),b=a.orientation==="vertical",j,i,e,c;if(!k){k=this.testerLabel=this.chart.surface.add(Ext.apply({type:"text",opacity:0},d))}k.setAttributes({text:g},true);j=k.getBBox();i=j.width;e=j.height;return{width:b?e:i,height:b?i:e}},onAnimate:function(b,a){b.show();return this.callParent(arguments)},isItemInPoint:function(a,d,b){var c=b.sprite.getBBox();return c.x<=a&&c.y<=d&&(c.x+c.width)>=a&&(c.y+c.height)>=d},hideAll:function(a){var e=this.chart.axes,c=e.items,d=c.length,b=0;a=(isNaN(this._index)?a:this._index)||0;if(!this.__excludes){this.__excludes=[]}this.__excludes[a]=true;this.drawSeries();for(b;b<d;b++){c[b].drawAxis()}},showAll:function(a){var e=this.chart.axes,c=e.items,d=c.length,b=0;a=(isNaN(this._index)?a:this._index)||0;if(!this.__excludes){this.__excludes=[]}this.__excludes[a]=false;this.drawSeries();for(b;b<d;b++){c[b].drawAxis()}},getLegendColor:function(a){var c=this,b=c.colorArrayStyle.length;if(c.style&&c.style.fill){return c.style.fill}else{return c.colorArrayStyle[a%b]}},highlightItem:function(a){this.callParent(arguments);this.renderLabels()},unHighlightItem:function(){this.callParent(arguments);this.renderLabels()},cleanHighlights:function(){this.callParent(arguments);this.renderLabels()}});Ext.define("Ext.chart.series.Column",{alternateClassName:["Ext.chart.ColumnSeries","Ext.chart.ColumnChart","Ext.chart.StackedColumnChart"],extend:"Ext.chart.series.Bar",type:"column",alias:"series.column",column:true,xPadding:10,yPadding:0});Ext.define("Ext.chart.series.Gauge",{extend:"Ext.chart.series.Series",type:"gauge",alias:"series.gauge",rad:Math.PI/180,highlightDuration:150,angleField:false,needle:false,donut:false,showInLegend:false,style:{},constructor:function(b){this.callParent(arguments);var h=this,g=h.chart,a=g.surface,j=g.store,k=g.shadow,d,c,e;Ext.apply(h,b,{shadowAttributes:[{"stroke-width":6,"stroke-opacity":1,stroke:"rgb(200, 200, 200)",translate:{x:1.2,y:2}},{"stroke-width":4,"stroke-opacity":1,stroke:"rgb(150, 150, 150)",translate:{x:0.9,y:1.5}},{"stroke-width":2,"stroke-opacity":1,stroke:"rgb(100, 100, 100)",translate:{x:0.6,y:1}}]});h.group=a.getGroup(h.seriesId);if(k){for(d=0,c=h.shadowAttributes.length;d<c;d++){h.shadowGroups.push(a.getGroup(h.seriesId+"-shadows"+d))}}a.customAttributes.segment=function(i){return h.getSegment(i)}},initialize:function(){var d=this,a=d.chart.getChartStore(),e=a.data.items,b,c,g;d.yField=[];if(d.label.field){for(b=0,c=e.length;b<c;b++){g=e[b];d.yField.push(g.get(d.label.field))}}},getSegment:function(b){var C=this,B=C.rad,d=Math.cos,a=Math.sin,n=Math.abs,k=C.centerX,i=C.centerY,w=0,v=0,u=0,s=0,h=0,g=0,e=0,c=0,z=0.01,m=b.endRho-b.startRho,q=b.startAngle,p=b.endAngle,j=(q+p)/2*B,l=b.margin||0,t=n(p-q)>180,D=Math.min(q,p)*B,A=Math.max(q,p)*B,o=false;k+=l*d(j);i+=l*a(j);w=k+b.startRho*d(D);h=i+b.startRho*a(D);v=k+b.endRho*d(D);g=i+b.endRho*a(D);u=k+b.startRho*d(A);e=i+b.startRho*a(A);s=k+b.endRho*d(A);c=i+b.endRho*a(A);if(n(w-u)<=z&&n(h-e)<=z){o=true}if(o){return{path:[["M",w,h],["L",v,g],["A",b.endRho,b.endRho,0,+t,1,s,c],["Z"]]}}else{return{path:[["M",w,h],["L",v,g],["A",b.endRho,b.endRho,0,+t,1,s,c],["L",u,e],["A",b.startRho,b.startRho,0,+t,0,w,h],["Z"]]}}},calcMiddle:function(p){var k=this,l=k.rad,o=p.slice,n=k.centerX,m=k.centerY,j=o.startAngle,e=o.endAngle,i=Math.max(("rho" in o)?o.rho:k.radius,k.label.minMargin),h=+k.donut,b=Math.min(j,e)*l,a=Math.max(j,e)*l,d=-(b+(a-b)/2),g=n+(p.endRho+p.startRho)/2*Math.cos(d),c=m-(p.endRho+p.startRho)/2*Math.sin(d);p.middle={x:g,y:c}},drawSeries:function(){var w=this,W=w.chart,b=W.getChartStore(),A=w.group,S=w.chart.animate,D=w.chart.axes.get(0),E=D&&D.minimum||w.minimum||0,I=D&&D.maximum||w.maximum||0,n=w.angleField||w.field||w.xField,M=W.surface,H=W.chartBBox,h=w.rad,c=+w.donut,X={},B=[],m=w.seriesStyle,a=w.seriesLabelStyle,g=w.colorArrayStyle,z=g&&g.length||0,K=W.maxGutter[0],J=W.maxGutter[1],k=Math.cos,s=Math.sin,t,e,d,v,r,C,O,F,G,L,U,T,l,V,x,o,Q,R,q,y,u,P,N;Ext.apply(m,w.style||{});w.setBBox();y=w.bbox;if(w.colorSet){g=w.colorSet;z=g.length}if(!b||!b.getCount()||w.seriesIsHidden){w.hide();w.items=[];return}e=w.centerX=H.x+(H.width/2);d=w.centerY=H.y+H.height;w.radius=Math.min(e-H.x,d-H.y);w.slices=r=[];w.items=B=[];if(!w.value){L=b.getAt(0);w.value=L.get(n)}O=w.value;if(w.needle){P={series:w,value:O,startAngle:-180,endAngle:0,rho:w.radius};u=-180*(1-(O-E)/(I-E));r.push(P)}else{u=-180*(1-(O-E)/(I-E));P={series:w,value:O,startAngle:-180,endAngle:u,rho:w.radius};N={series:w,value:w.maximum-O,startAngle:u,endAngle:0,rho:w.radius};r.push(P,N)}for(U=0,G=r.length;U<G;U++){v=r[U];C=A.getAt(U);t=Ext.apply({segment:{startAngle:v.startAngle,endAngle:v.endAngle,margin:0,rho:v.rho,startRho:v.rho*+c/100,endRho:v.rho}},Ext.apply(m,g&&{fill:g[U%z]}||{}));F=Ext.apply({},t.segment,{slice:v,series:w,storeItem:L,index:U});B[U]=F;if(!C){q=Ext.apply({type:"path",group:A},Ext.apply(m,g&&{fill:g[U%z]}||{}));C=M.add(Ext.apply(q,t))}v.sprite=v.sprite||[];F.sprite=C;v.sprite.push(C);if(S){t=w.renderer(C,L,t,U,b);C._to=t;w.onAnimate(C,{to:t})}else{t=w.renderer(C,L,Ext.apply(t,{hidden:false}),U,b);C.setAttributes(t,true)}}if(w.needle){u=u*Math.PI/180;if(!w.needleSprite){w.needleSprite=w.chart.surface.add({type:"path",path:["M",e+(w.radius*+c/100)*k(u),d+-Math.abs((w.radius*+c/100)*s(u)),"L",e+w.radius*k(u),d+-Math.abs(w.radius*s(u))],"stroke-width":4,stroke:"#222"})}else{if(S){w.onAnimate(w.needleSprite,{to:{path:["M",e+(w.radius*+c/100)*k(u),d+-Math.abs((w.radius*+c/100)*s(u)),"L",e+w.radius*k(u),d+-Math.abs(w.radius*s(u))]}})}else{w.needleSprite.setAttributes({type:"path",path:["M",e+(w.radius*+c/100)*k(u),d+-Math.abs((w.radius*+c/100)*s(u)),"L",e+w.radius*k(u),d+-Math.abs(w.radius*s(u))]})}}w.needleSprite.setAttributes({hidden:false},true)}delete w.value},setValue:function(a){this.value=a;this.drawSeries()},onCreateLabel:function(c,b,a,d){},onPlaceLabel:function(c,g,e,d,h,a,b){},onPlaceCallout:function(){},onAnimate:function(b,a){b.show();return this.callParent(arguments)},isItemInPoint:function(l,j,n,e){var h=this,d=h.centerX,c=h.centerY,p=Math.abs,o=p(l-d),m=p(j-c),g=n.startAngle,a=n.endAngle,k=Math.sqrt(o*o+m*m),b=Math.atan2(j-c,l-d)/h.rad;return(e===0)&&(b>=g&&b<a&&k>=n.startRho&&k<=n.endRho)},showAll:function(){if(!isNaN(this._index)){this.__excludes[this._index]=false;this.drawSeries()}},getLegendColor:function(a){var b=this;return b.colorArrayStyle[a%b.colorArrayStyle.length]}});Ext.define("Ext.chart.series.Line",{extend:"Ext.chart.series.Cartesian",alternateClassName:["Ext.chart.LineSeries","Ext.chart.LineChart"],requires:["Ext.chart.axis.Axis","Ext.chart.Shape","Ext.draw.Draw","Ext.fx.Anim"],type:"line",alias:"series.line",selectionTolerance:20,showMarkers:true,markerConfig:{},style:{},smooth:false,defaultSmoothness:3,fill:false,constructor:function(c){this.callParent(arguments);var e=this,a=e.chart.surface,g=e.chart.shadow,d,b;c.highlightCfg=Ext.Object.merge({"stroke-width":3},c.highlightCfg);Ext.apply(e,c,{shadowAttributes:[{"stroke-width":6,"stroke-opacity":0.05,stroke:"rgb(0, 0, 0)",translate:{x:1,y:1}},{"stroke-width":4,"stroke-opacity":0.1,stroke:"rgb(0, 0, 0)",translate:{x:1,y:1}},{"stroke-width":2,"stroke-opacity":0.15,stroke:"rgb(0, 0, 0)",translate:{x:1,y:1}}]});e.group=a.getGroup(e.seriesId);if(e.showMarkers){e.markerGroup=a.getGroup(e.seriesId+"-markers")}if(g){for(d=0,b=e.shadowAttributes.length;d<b;d++){e.shadowGroups.push(a.getGroup(e.seriesId+"-shadows"+d))}}},shrink:function(b,k,l){var h=b.length,j=Math.floor(h/l),g=1,d=0,a=0,e=[+b[0]],c=[+k[0]];for(;g<h;++g){d+=+b[g]||0;a+=+k[g]||0;if(g%j==0){e.push(d/j);c.push(a/j);d=0;a=0}}return{x:e,y:c}},drawSeries:function(){var an=this,aA=an.chart,V=aA.axes,av=aA.getChartStore(),A=av.data.items,ar,Y=av.getCount(),w=an.chart.surface,au={},U=an.group,N=an.showMarkers,aG=an.markerGroup,G=aA.shadow,F=an.shadowGroups,ab=an.shadowAttributes,R=an.smooth,r=F.length,ay=["M"],W=["M"],d=["M"],b=["M"],M=aA.markerIndex,am=[].concat(an.axis),al,aB=[],ak={},ae=[],z={},L=false,T=[],aF=an.markerStyle,ad=an.seriesStyle,v=an.colorArrayStyle,S=v&&v.length||0,O=Ext.isNumber,aC=an.seriesIdx,h=an.getAxesForXAndYFields(),m=h.xAxis,aE=h.yAxis,ag,k,af,ah,D,c,ai,K,J,g,e,u,s,aa,Q,P,az,n,I,H,aH,o,q,E,a,ac,aj,C,ax,B,aw,p,aD,at,aq,X,l,t,ao,ap,Z;if(an.fireEvent("beforedraw",an)===false){return}if(!Y||an.seriesIsHidden){an.hide();an.items=[];if(an.line){an.line.hide(true);if(an.line.shadows){ag=an.line.shadows;for(P=0,r=ag.length;P<r;P++){k=ag[P];k.hide(true)}}if(an.fillPath){an.fillPath.hide(true)}}an.line=null;an.fillPath=null;return}at=Ext.apply(aF||{},an.markerConfig,{fill:an.seriesStyle.fill||v[aC%v.length]});X=at.type;delete at.type;aq=ad;if(!aq["stroke-width"]){aq["stroke-width"]=0.5}t="opacity" in aq?aq.opacity:1;Z="opacity" in aq?aq.opacity:0.3;ao="lineOpacity" in aq?aq.lineOpacity:t;ap="fillOpacity" in aq?aq.fillOpacity:Z;if(M&&aG&&aG.getCount()){for(Q=0;Q<M;Q++){H=aG.getAt(Q);aG.remove(H);aG.add(H);aH=aG.getAt(aG.getCount()-2);H.setAttributes({x:0,y:0,translate:{x:aH.attr.translation.x,y:aH.attr.translation.y}},true)}}an.unHighlightItem();an.cleanHighlights();an.setBBox();au=an.bbox;an.clipRect=[au.x,au.y,au.width,au.height];if(n=V.get(m)){I=n.applyData();C=I.from;ax=I.to}if(n=V.get(aE)){I=n.applyData();B=I.from;aw=I.to}if(an.xField&&!Ext.isNumber(C)){n=an.getMinMaxXValues();C=n[0];ax=n[1]}if(an.yField&&!Ext.isNumber(B)){n=an.getMinMaxYValues();B=n[0];aw=n[1]}if(isNaN(C)){C=0;ac=au.width/((Y-1)||1)}else{ac=au.width/((ax-C)||(Y-1)||1)}if(isNaN(B)){B=0;aj=au.height/((Y-1)||1)}else{aj=au.height/((aw-B)||(Y-1)||1)}for(Q=0,az=A.length;Q<az;Q++){ar=A[Q];q=ar.get(an.xField);if(typeof q=="string"||typeof q=="object"&&!Ext.isDate(q)||m&&V.get(m)&&V.get(m).type=="Category"){if(q in ak){q=ak[q]}else{q=ak[q]=Q}}E=ar.get(an.yField);if(typeof E=="undefined"||(typeof E=="string"&&!E)){continue}if(typeof E=="string"||typeof E=="object"&&!Ext.isDate(E)||aE&&V.get(aE)&&V.get(aE).type=="Category"){E=Q}T.push(Q);aB.push(q);ae.push(E)}az=aB.length;if(az>au.width){a=an.shrink(aB,ae,au.width);aB=a.x;ae=a.y}an.items=[];l=0;az=aB.length;for(Q=0;Q<az;Q++){q=aB[Q];E=ae[Q];if(E===false){if(W.length==1){W=[]}L=true;an.items.push(false);continue}else{K=(au.x+(q-C)*ac).toFixed(2);J=((au.y+au.height)-(E-B)*aj).toFixed(2);if(L){L=false;W.push("M")}W=W.concat([K,J])}if((typeof s=="undefined")&&(typeof J!="undefined")){s=J;u=K}if(!an.line||aA.resizing){ay=ay.concat([K,au.y+au.height/2])}if(aA.animate&&aA.resizing&&an.line){an.line.setAttributes({path:ay,opacity:ao},true);if(an.fillPath){an.fillPath.setAttributes({path:ay,opacity:ap},true)}if(an.line.shadows){ag=an.line.shadows;for(P=0,r=ag.length;P<r;P++){k=ag[P];k.setAttributes({path:ay},true)}}}if(N){H=aG.getAt(l++);if(!H){H=Ext.chart.Shape[X](w,Ext.apply({group:[U,aG],x:0,y:0,translate:{x:+(g||K),y:e||(au.y+au.height/2)},value:'"'+q+", "+E+'"',zIndex:4000},at));H._to={translate:{x:+K,y:+J}}}else{H.setAttributes({value:'"'+q+", "+E+'"',x:0,y:0,hidden:false},true);H._to={translate:{x:+K,y:+J}}}}an.items.push({series:an,value:[q,E],point:[K,J],sprite:H,storeItem:av.getAt(T[Q])});g=K;e=J}if(W.length<=1){return}if(an.smooth){b=Ext.draw.Draw.smooth(W,O(R)?R:an.defaultSmoothness)}d=R?b:W;if(aA.markerIndex&&an.previousPath){ah=an.previousPath;if(!R){Ext.Array.erase(ah,1,2)}}else{ah=W}if(!an.line){an.line=w.add(Ext.apply({type:"path",group:U,path:ay,stroke:aq.stroke||aq.fill},aq||{}));an.line.setAttributes({opacity:ao},true);if(G){an.line.setAttributes(Ext.apply({},an.shadowOptions),true)}an.line.setAttributes({fill:"none",zIndex:3000});if(!aq.stroke&&S){an.line.setAttributes({stroke:v[aC%S]},true)}if(G){ag=an.line.shadows=[];for(af=0;af<r;af++){al=ab[af];al=Ext.apply({},al,{path:ay});k=w.add(Ext.apply({},{type:"path",group:F[af]},al));ag.push(k)}}}if(an.fill){c=d.concat([["L",K,au.y+au.height],["L",u,au.y+au.height],["L",u,s]]);if(!an.fillPath){an.fillPath=w.add({group:U,type:"path",fill:aq.fill||v[aC%S],path:ay})}}aa=N&&aG.getCount();if(aA.animate){D=an.fill;p=an.line;ai=an.renderer(p,false,{path:d},Q,av);Ext.apply(ai,aq||{},{stroke:aq.stroke||aq.fill});delete ai.fill;p.show(true);if(aA.markerIndex&&an.previousPath){an.animation=aD=an.onAnimate(p,{to:ai,from:{path:ah}})}else{an.animation=aD=an.onAnimate(p,{to:ai})}if(G){ag=p.shadows;for(P=0;P<r;P++){ag[P].show(true);if(aA.markerIndex&&an.previousPath){an.onAnimate(ag[P],{to:{path:d},from:{path:ah}})}else{an.onAnimate(ag[P],{to:{path:d}})}}}if(D){an.fillPath.show(true);an.onAnimate(an.fillPath,{to:Ext.apply({},{path:c,fill:aq.fill||v[aC%S],"stroke-width":0,opacity:ap},aq||{})})}if(N){l=0;for(Q=0;Q<az;Q++){if(an.items[Q]){o=aG.getAt(l++);if(o){ai=an.renderer(o,av.getAt(Q),o._to,Q,av);an.onAnimate(o,{to:Ext.apply(ai,at||{})});o.show(true)}}}for(;l<aa;l++){o=aG.getAt(l);o.hide(true)}}}else{ai=an.renderer(an.line,false,{path:d,hidden:false},Q,av);Ext.apply(ai,aq||{},{stroke:aq.stroke||aq.fill});delete ai.fill;an.line.setAttributes(ai,true);an.line.setAttributes({opacity:ao},true);if(G){ag=an.line.shadows;for(P=0;P<r;P++){ag[P].setAttributes({path:d,hidden:false},true)}}if(an.fill){an.fillPath.setAttributes({path:c,hidden:false,opacity:ap},true)}if(N){l=0;for(Q=0;Q<az;Q++){if(an.items[Q]){o=aG.getAt(l++);if(o){ai=an.renderer(o,av.getAt(Q),o._to,Q,av);o.setAttributes(Ext.apply(at||{},ai||{}),true);if(!o.attr.hidden){o.show(true)}}}}for(;l<aa;l++){o=aG.getAt(l);o.hide(true)}}}if(aA.markerIndex){if(an.smooth){Ext.Array.erase(W,1,2)}else{Ext.Array.splice(W,1,0,W[1],W[2])}an.previousPath=W}an.renderLabels();an.renderCallouts();an.fireEvent("draw",an)},onCreateLabel:function(d,k,c,e){var g=this,h=g.labelsGroup,a=g.label,j=g.bbox,b=Ext.apply(a,g.seriesLabelStyle);return g.chart.surface.add(Ext.apply({type:"text","text-anchor":"middle",group:h,x:k.point[0],y:j.y+j.height/2},b||{}))},onPlaceLabel:function(g,k,s,p,o,d){var u=this,l=u.chart,r=l.resizing,t=u.label,q=t.renderer,b=t.field,a=u.bbox,j=s.point[0],h=s.point[1],c=s.sprite.attr.radius,e,n,m;g.setAttributes({text:q(k.get(b)),hidden:true},true);if(o=="rotate"){g.setAttributes({"text-anchor":"start",rotation:{x:j,y:h,degrees:-45}},true);e=g.getBBox();n=e.width;m=e.height;j=j<a.x?a.x:j;j=(j+n>a.x+a.width)?(j-(j+n-a.x-a.width)):j;h=(h-m<a.y)?a.y+m:h}else{if(o=="under"||o=="over"){e=s.sprite.getBBox();e.width=e.width||(c*2);e.height=e.height||(c*2);h=h+(o=="over"?-e.height:e.height);e=g.getBBox();n=e.width/2;m=e.height/2;j=j-n<a.x?a.x+n:j;j=(j+n>a.x+a.width)?(j-(j+n-a.x-a.width)):j;h=h-m<a.y?a.y+m:h;h=(h+m>a.y+a.height)?(h-(h+m-a.y-a.height)):h}}if(u.chart.animate&&!u.chart.resizing){g.show(true);u.onAnimate(g,{to:{x:j,y:h}})}else{g.setAttributes({x:j,y:h},true);if(r&&u.animation){u.animation.on("afteranimate",function(){g.show(true)})}else{g.show(true)}}},highlightItem:function(){var a=this;a.callParent(arguments);if(a.line&&!a.highlighted){if(!("__strokeWidth" in a.line)){a.line.__strokeWidth=parseFloat(a.line.attr["stroke-width"])||0}if(a.line.__anim){a.line.__anim.paused=true}a.line.__anim=Ext.create("Ext.fx.Anim",{target:a.line,to:{"stroke-width":a.line.__strokeWidth+3}});a.highlighted=true}},unHighlightItem:function(){var a=this;a.callParent(arguments);if(a.line&&a.highlighted){a.line.__anim=Ext.create("Ext.fx.Anim",{target:a.line,to:{"stroke-width":a.line.__strokeWidth}});a.highlighted=false}},onPlaceCallout:function(m,r,J,G,F,d,k){if(!F){return}var M=this,s=M.chart,D=s.surface,H=s.resizing,L=M.callouts,t=M.items,v=G==0?false:t[G-1].point,z=(G==t.length-1)?false:t[G+1].point,c=[+J.point[0],+J.point[1]],A,g,N,K,o,q,I=L.offsetFromViz||30,C=L.offsetToSide||10,B=L.offsetBox||3,h,e,j,w,u,E=M.clipRect,b={width:L.styles.width||10,height:L.styles.height||10},n,l;if(!v){v=c}if(!z){z=c}K=(z[1]-v[1])/(z[0]-v[0]);o=(c[1]-v[1])/(c[0]-v[0]);q=(z[1]-c[1])/(z[0]-c[0]);g=Math.sqrt(1+K*K);A=[1/g,K/g];N=[-A[1],A[0]];if(o>0&&q<0&&N[1]<0||o<0&&q>0&&N[1]>0){N[0]*=-1;N[1]*=-1}else{if(Math.abs(o)<Math.abs(q)&&N[0]<0||Math.abs(o)>Math.abs(q)&&N[0]>0){N[0]*=-1;N[1]*=-1}}n=c[0]+N[0]*I;l=c[1]+N[1]*I;h=n+(N[0]>0?0:-(b.width+2*B));e=l-b.height/2-B;j=b.width+2*B;w=b.height+2*B;if(h<E[0]||(h+j)>(E[0]+E[2])){N[0]*=-1}if(e<E[1]||(e+w)>(E[1]+E[3])){N[1]*=-1}n=c[0]+N[0]*I;l=c[1]+N[1]*I;h=n+(N[0]>0?0:-(b.width+2*B));e=l-b.height/2-B;j=b.width+2*B;w=b.height+2*B;if(s.animate){M.onAnimate(m.lines,{to:{path:["M",c[0],c[1],"L",n,l,"Z"]}});if(m.panel){m.panel.setPosition(h,e,true)}}else{m.lines.setAttributes({path:["M",c[0],c[1],"L",n,l,"Z"]},true);if(m.panel){m.panel.setPosition(h,e)}}for(u in m){m[u].show(true)}},isItemInPoint:function(j,g,A,q){var C=this,n=C.items,s=C.selectionTolerance,k=null,z,c,p,v,h,w,b,t,a,l,B,e,d,o,u,r,D=Math.sqrt,m=Math.abs;c=n[q];z=q&&n[q-1];if(q>=h){z=n[h-1]}p=z&&z.point;v=c&&c.point;w=z?p[0]:v[0]-s;b=z?p[1]:v[1];t=c?v[0]:p[0]+s;a=c?v[1]:p[1];e=D((j-w)*(j-w)+(g-b)*(g-b));d=D((j-t)*(j-t)+(g-a)*(g-a));o=Math.min(e,d);if(o<=s){return o==e?z:c}return false},toggleAll:function(a){var e=this,b,d,g,c;if(!a){Ext.chart.series.Cartesian.prototype.hideAll.call(e)}else{Ext.chart.series.Cartesian.prototype.showAll.call(e)}if(e.line){e.line.setAttributes({hidden:!a},true);if(e.line.shadows){for(b=0,c=e.line.shadows,d=c.length;b<d;b++){g=c[b];g.setAttributes({hidden:!a},true)}}}if(e.fillPath){e.fillPath.setAttributes({hidden:!a},true)}},hideAll:function(){this.toggleAll(false)},showAll:function(){this.toggleAll(true)}});Ext.define("Ext.chart.series.Pie",{alternateClassName:["Ext.chart.PieSeries","Ext.chart.PieChart"],extend:"Ext.chart.series.Series",type:"pie",alias:"series.pie",accuracy:100000,rad:Math.PI*2/100000,highlightDuration:150,angleField:false,lengthField:false,donut:false,showInLegend:false,style:{},constructor:function(b){this.callParent(arguments);var h=this,g=h.chart,a=g.surface,j=g.store,k=g.shadow,d,c,e;b.highlightCfg=Ext.merge({segment:{margin:20}},b.highlightCfg);Ext.apply(h,b,{shadowAttributes:[{"stroke-width":6,"stroke-opacity":1,stroke:"rgb(200, 200, 200)",translate:{x:1.2,y:2}},{"stroke-width":4,"stroke-opacity":1,stroke:"rgb(150, 150, 150)",translate:{x:0.9,y:1.5}},{"stroke-width":2,"stroke-opacity":1,stroke:"rgb(100, 100, 100)",translate:{x:0.6,y:1}}]});h.group=a.getGroup(h.seriesId);if(k){for(d=0,c=h.shadowAttributes.length;d<c;d++){h.shadowGroups.push(a.getGroup(h.seriesId+"-shadows"+d))}}a.customAttributes.segment=function(l){var i=h.getSegment(l);if(!i.path||i.path.length===0){i.path=["M",0,0]}return i};h.__excludes=h.__excludes||[]},initialize:function(){var d=this,a=d.chart.getChartStore(),e=a.data.items,b,c,g;d.yField=[];if(d.label.field){for(b=0,c=e.length;b<c;b++){g=e[b];d.yField.push(g.get(d.label.field))}}},getSegment:function(d){var J=this,I=J.rad,i=Math.cos,a=Math.sin,p=J.centerX,n=J.centerY,E=0,D=0,C=0,A=0,l=0,k=0,j=0,g=0,w=0,c=0,v=0,b=0,G=0.01,z=d.startAngle,u=d.endAngle,o=(z+u)/2*I,r=d.margin||0,K=Math.min(z,u)*I,H=Math.max(z,u)*I,t=i(K),h=a(K),s=i(H),e=a(H),m=i(o),F=a(o),B=0,q=0.7071067811865476;if(H-K<G){return{path:""}}if(r!==0){p+=r*m;n+=r*F}D=p+d.endRho*t;k=n+d.endRho*h;A=p+d.endRho*s;g=n+d.endRho*e;v=p+d.endRho*m;b=n+d.endRho*F;if(d.startRho!==0){E=p+d.startRho*t;l=n+d.startRho*h;C=p+d.startRho*s;j=n+d.startRho*e;w=p+d.startRho*m;c=n+d.startRho*F;return{path:[["M",D,k],["A",d.endRho,d.endRho,0,0,1,v,b],["L",v,b],["A",d.endRho,d.endRho,0,B,1,A,g],["L",A,g],["L",C,j],["A",d.startRho,d.startRho,0,B,0,w,c],["L",w,c],["A",d.startRho,d.startRho,0,0,0,E,l],["L",E,l],["Z"]]}}else{return{path:[["M",p,n],["L",D,k],["A",d.endRho,d.endRho,0,0,1,v,b],["L",v,b],["A",d.endRho,d.endRho,0,B,1,A,g],["L",A,g],["L",p,n],["Z"]]}}},calcMiddle:function(n){var i=this,j=i.rad,m=n.slice,l=i.centerX,k=i.centerY,h=m.startAngle,d=m.endAngle,g=+i.donut,c=-(h+d)*j/2,a=(n.endRho+n.startRho)/2,e=l+a*Math.cos(c),b=k-a*Math.sin(c);n.middle={x:e,y:b}},drawSeries:function(){var s=this,a=s.chart.getChartStore(),W=a.data.items,I,x=s.group,S=s.chart.animate,k=s.angleField||s.field||s.xField,A=[].concat(s.lengthField),R=0,X=s.chart,J=X.surface,G=X.chartBBox,g=X.shadow,Q=s.shadowGroups,P=s.shadowAttributes,aa=Q.length,K=A.length,B=0,b=+s.donut,Z=[],y=[],u=0,M=0,t=0,h=s.seriesStyle,e=s.colorArrayStyle,w=e&&e.length||0,o,Y,C,H,E,d,c,q,l=0,r,n,z,L,D,ab,F,U,T,V,N,O,m,v;Ext.apply(h,s.style||{});s.setBBox();v=s.bbox;if(s.colorSet){e=s.colorSet;w=e.length}if(!a||!a.getCount()||s.seriesIsHidden){s.hide();s.items=[];return}s.unHighlightItem();s.cleanHighlights();d=s.centerX=G.x+(G.width/2);c=s.centerY=G.y+(G.height/2);s.radius=Math.min(d-G.x,c-G.y);s.slices=n=[];s.items=y=[];for(U=0,F=W.length;U<F;U++){I=W[U];if(this.__excludes&&this.__excludes[U]){continue}u+=+I.get(k);if(A[0]){for(T=0,R=0;T<K;T++){R+=+I.get(A[T])}Z[U]=R;M=Math.max(M,R)}}u=u||1;for(U=0,F=W.length;U<F;U++){I=W[U];if(this.__excludes&&this.__excludes[U]){L=0}else{L=I.get(k);if(l==0){l=1}}if(l==1){l=2;s.firstAngle=t=s.accuracy*L/u/2;for(T=0;T<U;T++){n[T].startAngle=n[T].endAngle=s.firstAngle}}V=t-s.accuracy*L/u;r={series:s,value:L,startAngle:t,endAngle:V,storeItem:I};if(A[0]){ab=+Z[U];r.rho=Math.floor(s.radius/M*ab)}else{r.rho=s.radius}n[U]=r;(function(){t=V})()}if(g){for(U=0,F=n.length;U<F;U++){r=n[U];r.shadowAttrs=[];for(T=0,B=0,C=[];T<K;T++){z=x.getAt(U*K+T);q=A[T]?a.getAt(U).get(A[T])/Z[U]*r.rho:r.rho;o={segment:{startAngle:r.startAngle,endAngle:r.endAngle,margin:0,rho:r.rho,startRho:B+(q*b/100),endRho:B+q},hidden:!r.value&&(r.startAngle%s.accuracy)==(r.endAngle%s.accuracy)};for(E=0,C=[];E<aa;E++){Y=P[E];H=Q[E].getAt(U);if(!H){H=X.surface.add(Ext.apply({},{type:"path",group:Q[E],strokeLinejoin:"round"},o,Y))}Y=s.renderer(H,a.getAt(U),Ext.apply({},o,Y),U,a);if(S){s.onAnimate(H,{to:Y})}else{H.setAttributes(Y,true)}C.push(H)}r.shadowAttrs[T]=C}}}for(U=0,F=n.length;U<F;U++){r=n[U];for(T=0,B=0;T<K;T++){z=x.getAt(U*K+T);q=A[T]?a.getAt(U).get(A[T])/Z[U]*r.rho:r.rho;o=Ext.apply({segment:{startAngle:r.startAngle,endAngle:r.endAngle,margin:0,rho:r.rho,startRho:B+(q*b/100),endRho:B+q},hidden:(!r.value&&(r.startAngle%s.accuracy)==(r.endAngle%s.accuracy))},Ext.apply(h,e&&{fill:e[(K>1?T:U)%w]}||{}));D=Ext.apply({},o.segment,{slice:r,series:s,storeItem:r.storeItem,index:U});s.calcMiddle(D);if(g){D.shadows=r.shadowAttrs[T]}y[U]=D;if(!z){m=Ext.apply({type:"path",group:x,middle:D.middle},Ext.apply(h,e&&{fill:e[(K>1?T:U)%w]}||{}));z=J.add(Ext.apply(m,o))}r.sprite=r.sprite||[];D.sprite=z;r.sprite.push(z);r.point=[D.middle.x,D.middle.y];if(S){o=s.renderer(z,a.getAt(U),o,U,a);z._to=o;z._animating=true;s.onAnimate(z,{to:o,listeners:{afteranimate:{fn:function(){this._animating=false},scope:z}}})}else{o=s.renderer(z,a.getAt(U),Ext.apply(o,{hidden:false}),U,a);z.setAttributes(o,true)}B+=q}}F=x.getCount();for(U=0;U<F;U++){if(!n[(U/K)>>0]&&x.getAt(U)){x.getAt(U).hide(true)}}if(g){aa=Q.length;for(E=0;E<F;E++){if(!n[(E/K)>>0]){for(T=0;T<aa;T++){if(Q[T].getAt(E)){Q[T].getAt(E).hide(true)}}}}}s.renderLabels();s.renderCallouts()},onCreateLabel:function(g,l,e,h){var j=this,k=j.labelsGroup,a=j.label,d=j.centerX,c=j.centerY,m=l.middle,b=Ext.apply(j.seriesLabelStyle||{},a||{});return j.chart.surface.add(Ext.apply({type:"text","text-anchor":"middle",group:k,x:m.x,y:m.y},b))},onPlaceLabel:function(k,p,z,t,s,e,g){var B=this,q=B.chart,w=q.resizing,A=B.label,u=A.renderer,c=[].concat(A.field),m=B.centerX,l=B.centerY,C=z.middle,b={x:C.x,y:C.y},o=C.x-m,n=C.y-l,r={},d=1,j=Math.atan2(n,o||1),v=j*180/Math.PI,h;b.hidden=false;if(this.__excludes&&this.__excludes[t]){b.hidden=true}function a(i){if(i<0){i+=360}return i%360}k.setAttributes({text:u(p.get(c[g]))},true);switch(s){case"outside":d=Math.sqrt(o*o+n*n)*2;b.x=d*Math.cos(j)+m;b.y=d*Math.sin(j)+l;break;case"rotate":v=a(v);v=(v>90&&v<270)?v+180:v;h=k.attr.rotation.degrees;if(h!=null&&Math.abs(h-v)>180*0.5){if(v>h){v-=360}else{v+=360}v=v%360}else{v=a(v)}b.rotate={degrees:v,x:b.x,y:b.y};break;default:break}b.translate={x:0,y:0};if(e&&!w&&(s!="rotate"||h!=null)){B.onAnimate(k,{to:b})}else{k.setAttributes(b,true)}k._from=r},onPlaceCallout:function(l,o,z,v,u,d,e){var A=this,q=A.chart,j=A.centerX,h=A.centerY,B=z.middle,b={x:B.x,y:B.y},m=B.x-j,k=B.y-h,c=1,n,g=Math.atan2(k,m||1),a=l.label.getBBox(),w=20,t=10,s=10,r;c=z.endRho+w;n=(z.endRho+z.startRho)/2+(z.endRho-z.startRho)/3;b.x=c*Math.cos(g)+j;b.y=c*Math.sin(g)+h;m=n*Math.cos(g);k=n*Math.sin(g);if(q.animate){A.onAnimate(l.lines,{to:{path:["M",m+j,k+h,"L",b.x,b.y,"Z","M",b.x,b.y,"l",m>0?t:-t,0,"z"]}});A.onAnimate(l.box,{to:{x:b.x+(m>0?t:-(t+a.width+2*s)),y:b.y+(k>0?(-a.height-s/2):(-a.height-s/2)),width:a.width+2*s,height:a.height+2*s}});A.onAnimate(l.label,{to:{x:b.x+(m>0?(t+s):-(t+a.width+s)),y:b.y+(k>0?-a.height/4:-a.height/4)}})}else{l.lines.setAttributes({path:["M",m+j,k+h,"L",b.x,b.y,"Z","M",b.x,b.y,"l",m>0?t:-t,0,"z"]},true);l.box.setAttributes({x:b.x+(m>0?t:-(t+a.width+2*s)),y:b.y+(k>0?(-a.height-s/2):(-a.height-s/2)),width:a.width+2*s,height:a.height+2*s},true);l.label.setAttributes({x:b.x+(m>0?(t+s):-(t+a.width+s)),y:b.y+(k>0?-a.height/4:-a.height/4)},true)}for(r in l){l[r].show(true)}},onAnimate:function(b,a){b.show();return this.callParent(arguments)},isItemInPoint:function(l,j,n,e){var h=this,d=h.centerX,c=h.centerY,p=Math.abs,o=p(l-d),m=p(j-c),g=n.startAngle,a=n.endAngle,k=Math.sqrt(o*o+m*m),b=Math.atan2(j-c,l-d)/h.rad;if(b>h.firstAngle){b-=h.accuracy}return(b<=g&&b>a&&k>=n.startRho&&k<=n.endRho)},hideAll:function(c){var g,b,j,h,e,a,d;c=(isNaN(this._index)?c:this._index)||0;this.__excludes=this.__excludes||[];this.__excludes[c]=true;d=this.slices[c].sprite;for(e=0,a=d.length;e<a;e++){d[e].setAttributes({hidden:true},true)}if(this.slices[c].shadowAttrs){for(g=0,h=this.slices[c].shadowAttrs,b=h.length;g<b;g++){j=h[g];for(e=0,a=j.length;e<a;e++){j[e].setAttributes({hidden:true},true)}}}this.drawSeries()},showAll:function(a){a=(isNaN(this._index)?a:this._index)||0;this.__excludes[a]=false;this.drawSeries()},highlightItem:function(s){var u=this,t=u.rad,w,d,o,q,a,e,k,b,m,c,g,p,h,v,n,l,j;s=s||this.items[this._index];this.unHighlightItem();if(!s||u.animating||(s.sprite&&s.sprite._animating)){return}u.callParent([s]);if(!u.highlight){return}if("segment" in u.highlightCfg){w=u.highlightCfg.segment;d=u.chart.animate;if(u.labelsGroup){g=u.labelsGroup;p=u.label.display;h=g.getAt(s.index);v=(s.startAngle+s.endAngle)/2*t;n=w.margin||0;l=n*Math.cos(v);j=n*Math.sin(v);if(Math.abs(l)<1e-10){l=0}if(Math.abs(j)<1e-10){j=0}if(d){h.stopAnimation();h.animate({to:{translate:{x:l,y:j}},duration:u.highlightDuration})}else{h.setAttributes({translate:{x:l,y:j}},true)}}if(u.chart.shadow&&s.shadows){q=0;a=s.shadows;k=a.length;for(;q<k;q++){e=a[q];b={};m=s.sprite._from.segment;for(c in m){if(!(c in w)){b[c]=m[c]}}o={segment:Ext.applyIf(b,u.highlightCfg.segment)};if(d){e.stopAnimation();e.animate({to:o,duration:u.highlightDuration})}else{e.setAttributes(o,true)}}}}},unHighlightItem:function(){var w=this,l,e,d,k,t,s,r,q,x,m,c,a,v,n,b,g,u,h,o;if(!w.highlight){return}if(("segment" in w.highlightCfg)&&w.items){l=w.items;e=w.chart.animate;d=!!w.chart.shadow;k=w.labelsGroup;t=l.length;s=0;r=0;q=w.label.display;for(;s<t;s++){u=l[s];if(!u){continue}n=u.sprite;if(n&&n._highlighted){if(k){h=k.getAt(u.index);o=Ext.apply({translate:{x:0,y:0}},q=="rotate"?{rotate:{x:h.attr.x,y:h.attr.y,degrees:h.attr.rotation.degrees}}:{});if(e){h.stopAnimation();h.animate({to:o,duration:w.highlightDuration})}else{h.setAttributes(o,true)}}if(d){b=u.shadows;x=b.length;for(;r<x;r++){c={};a=u.sprite._to.segment;v=u.sprite._from.segment;Ext.apply(c,v);for(m in a){if(!(m in v)){c[m]=a[m]}}g=b[r];if(e){g.stopAnimation();g.animate({to:{segment:c},duration:w.highlightDuration})}else{g.setAttributes({segment:c},true)}}}}}}w.callParent(arguments)},getLegendColor:function(a){var b=this;return(b.colorSet&&b.colorSet[a%b.colorSet.length])||b.colorArrayStyle[a%b.colorArrayStyle.length]}});Ext.define("Ext.chart.series.Radar",{extend:"Ext.chart.series.Series",requires:["Ext.chart.Shape","Ext.fx.Anim"],type:"radar",alias:"series.radar",rad:Math.PI/180,showInLegend:false,style:{},constructor:function(c){this.callParent(arguments);var e=this,a=e.chart.surface,d,b;e.group=a.getGroup(e.seriesId);if(e.showMarkers){e.markerGroup=a.getGroup(e.seriesId+"-markers")}},drawSeries:function(){var w=this,c=w.chart.getChartStore(),S=c.data.items,T,I,z=w.group,B,U=w.chart,L=U.series.items,M,v,m,Q=U.animate,o=w.field||w.yField,K=U.surface,F=U.chartBBox,E=w.seriesIdx,j=w.colorArrayStyle,g,e,A,N,r=0,a=[],D=Math.max,k=Math.cos,t=Math.sin,q=Math.PI*2,P=c.getCount(),h,O,J,H,G,R,u,n=w.seriesStyle,b=w.seriesLabelStyle,p=U.resizing||!w.radar,C=U.axes&&U.axes.get(0),V=!(C&&C.maximum);w.setBBox();r=V?0:(C.maximum||0);Ext.apply(n,w.style||{});if(!c||!c.getCount()||w.seriesIsHidden){w.hide();w.items=[];if(w.radar){w.radar.hide(true)}w.radar=null;return}if(!n.stroke){n.stroke=j[E%j.length]}w.unHighlightItem();w.cleanHighlights();g=w.centerX=F.x+(F.width/2);e=w.centerY=F.y+(F.height/2);w.radius=N=Math.min(F.width,F.height)/2;w.items=A=[];if(V){for(M=0,v=L.length;M<v;M++){m=L[M];a.push(m.yField)}for(T=0;T<P;T++){I=S[T];for(R=0,u=a.length;R<u;R++){r=D(+I.get(a[R]),r)}}}r=r||1;h=[];O=[];for(R=0;R<P;R++){I=S[R];G=N*I.get(o)/r;J=G*k(R/P*q);H=G*t(R/P*q);if(R==0){O.push("M",J+g,H+e);h.push("M",0.01*J+g,0.01*H+e)}else{O.push("L",J+g,H+e);h.push("L",0.01*J+g,0.01*H+e)}A.push({sprite:false,point:[g+J,e+H],storeItem:I,series:w})}O.push("Z");if(!w.radar){w.radar=K.add(Ext.apply({type:"path",group:z,path:h},n||{}))}if(U.resizing){w.radar.setAttributes({path:h},true)}if(U.animate){w.onAnimate(w.radar,{to:Ext.apply({path:O},n||{})})}else{w.radar.setAttributes(Ext.apply({path:O},n||{}),true)}if(w.showMarkers){w.drawMarkers()}w.renderLabels();w.renderCallouts()},drawMarkers:function(){var n=this,k=n.chart,a=k.surface,b=Ext.apply({},n.markerStyle||{}),j=Ext.apply(b,n.markerConfig,{fill:n.colorArrayStyle[n.seriesIdx%n.colorArrayStyle.length]}),m=n.items,o=j.type,q=n.markerGroup,e=n.centerX,d=n.centerY,p,h,c,g;delete j.type;for(h=0,c=m.length;h<c;h++){p=m[h];g=q.getAt(h);if(!g){g=Ext.chart.Shape[o](a,Ext.apply({group:q,x:0,y:0,translate:{x:e,y:d}},j))}else{g.show()}p.sprite=g;if(k.resizing){g.setAttributes({x:0,y:0,translate:{x:e,y:d}},true)}g._to={translate:{x:p.point[0],y:p.point[1]}};if(k.animate){n.onAnimate(g,{to:g._to})}else{g.setAttributes(Ext.apply(g._to,j||{}),true)}}},isItemInPoint:function(c,g,e){var b,d=10,a=Math.abs;b=e.point;return(a(b[0]-c)<=d&&a(b[1]-g)<=d)},onCreateLabel:function(g,m,e,h){var j=this,l=j.labelsGroup,a=j.label,d=j.centerX,c=j.centerY,k=m.point,b=Ext.apply(j.seriesLabelStyle||{},a);return j.chart.surface.add(Ext.apply({type:"text","text-anchor":"middle",group:l,x:d,y:c},a||{}))},onPlaceLabel:function(q,h,s,g,k,b){var m=this,l=m.chart,j=l.resizing,c=m.label,r=c.renderer,p=c.field,e=m.centerX,d=m.centerY,a={x:s.point[0],y:s.point[1]},o=a.x-e,n=a.y-d;q.setAttributes({text:r(h.get(p)),hidden:true},true);if(j){q.setAttributes({x:e,y:d},true)}if(b){q.show(true);m.onAnimate(q,{to:a})}else{q.setAttributes(a,true);q.show(true)}},toggleAll:function(a){var e=this,b,d,g,c;if(!a){Ext.chart.series.Radar.superclass.hideAll.call(e)}else{Ext.chart.series.Radar.superclass.showAll.call(e)}if(e.radar){e.radar.setAttributes({hidden:!a},true);if(e.radar.shadows){for(b=0,c=e.radar.shadows,d=c.length;b<d;b++){g=c[b];g.setAttributes({hidden:!a},true)}}}},hideAll:function(){this.toggleAll(false);this.hideMarkers(0)},showAll:function(){this.toggleAll(true)},hideMarkers:function(a){var d=this,c=d.markerGroup&&d.markerGroup.getCount()||0,b=a||0;for(;b<c;b++){d.markerGroup.getAt(b).hide(true)}}});Ext.define("Ext.chart.series.Scatter",{extend:"Ext.chart.series.Cartesian",requires:["Ext.chart.axis.Axis","Ext.chart.Shape","Ext.fx.Anim"],type:"scatter",alias:"series.scatter",constructor:function(c){this.callParent(arguments);var e=this,g=e.chart.shadow,a=e.chart.surface,d,b;Ext.apply(e,c,{style:{},markerConfig:{},shadowAttributes:[{"stroke-width":6,"stroke-opacity":0.05,stroke:"rgb(0, 0, 0)"},{"stroke-width":4,"stroke-opacity":0.1,stroke:"rgb(0, 0, 0)"},{"stroke-width":2,"stroke-opacity":0.15,stroke:"rgb(0, 0, 0)"}]});e.group=a.getGroup(e.seriesId);if(g){for(d=0,b=e.shadowAttributes.length;d<b;d++){e.shadowGroups.push(a.getGroup(e.seriesId+"-shadows"+d))}}},getBounds:function(){var s=this,j=s.chart,d=j.getChartStore(),o=j.axes,l=s.getAxesForXAndYFields(),k=l.xAxis,e=l.yAxis,a,t,c,g,r,p,q,n,m,b,h;s.setBBox();a=s.bbox;if(b=o.get(k)){h=b.applyData();r=h.from;q=h.to}if(b=o.get(e)){h=b.applyData();p=h.from;n=h.to}if(s.xField&&!Ext.isNumber(r)){b=s.getMinMaxXValues();r=b[0];q=b[1]}if(s.yField&&!Ext.isNumber(p)){b=s.getMinMaxYValues();p=b[0];n=b[1]}if(isNaN(r)){r=0;q=d.getCount()-1;t=a.width/(d.getCount()-1)}else{t=a.width/(q-r)}if(isNaN(p)){p=0;n=d.getCount()-1;c=a.height/(d.getCount()-1)}else{c=a.height/(n-p)}return{bbox:a,minX:r,minY:p,xScale:t,yScale:c}},getPaths:function(){var z=this,n=z.chart,b=n.shadow,e=n.getChartStore(),B=e.data.items,s,l,d,j=z.group,g=z.bounds=z.getBounds(),a=z.bbox,C=g.xScale,c=g.yScale,v=g.minX,u=g.minY,A=a.x,w=a.y,h=a.height,o=z.items=[],q=[],m,k,r,t,p;for(s=0,l=B.length;s<l;s++){d=B[s];r=d.get(z.xField);t=d.get(z.yField);if(typeof t=="undefined"||(typeof t=="string"&&!t)||r==null||t==null){continue}if(typeof r=="string"||typeof r=="object"&&!Ext.isDate(r)){r=s}if(typeof t=="string"||typeof t=="object"&&!Ext.isDate(t)){t=s}m=A+(r-v)*C;k=w+h-(t-u)*c;q.push({x:m,y:k});z.items.push({series:z,value:[r,t],point:[m,k],storeItem:d});if(n.animate&&n.resizing){p=j.getAt(s);if(p){z.resetPoint(p);if(b){z.resetShadow(p)}}}}return q},resetPoint:function(a){var b=this.bbox;a.setAttributes({translate:{x:(b.x+b.width)/2,y:(b.y+b.height)/2}},true)},resetShadow:function(c){var g=this,e=c.shadows,j=g.shadowAttributes,d=g.shadowGroups.length,h=g.bbox,b,a;for(b=0;b<d;b++){a=Ext.apply({},j[b]);if(a.translate){a.translate.x+=(h.x+h.width)/2;a.translate.y+=(h.y+h.height)/2}else{a.translate={x:(h.x+h.width)/2,y:(h.y+h.height)/2}}e[b].setAttributes(a,true)}},createPoint:function(a,c){var d=this,b=d.chart,e=d.group,g=d.bbox;return Ext.chart.Shape[c](b.surface,Ext.apply({},{x:0,y:0,group:e,translate:{x:(g.x+g.width)/2,y:(g.y+g.height)/2}},a))},createShadow:function(n,g,k){var j=this,h=j.chart,l=j.shadowGroups,d=j.shadowAttributes,a=l.length,o=j.bbox,c,m,b,e;n.shadows=b=[];for(c=0;c<a;c++){e=Ext.apply({},d[c]);if(e.translate){e.translate.x+=(o.x+o.width)/2;e.translate.y+=(o.y+o.height)/2}else{Ext.apply(e,{translate:{x:(o.x+o.width)/2,y:(o.y+o.height)/2}})}Ext.apply(e,g);m=Ext.chart.Shape[k](h.surface,Ext.apply({},{x:0,y:0,group:l[c]},e));b.push(m)}},drawSeries:function(){var u=this,l=u.chart,h=l.getChartStore(),j=u.group,c=l.shadow,a=u.shadowGroups,q=u.shadowAttributes,r=a.length,m,n,o,k,p,t,e,g,b,d,s;t=Ext.apply(u.markerStyle,u.markerConfig);g=t.type;delete t.type;if(!h||!h.getCount()){u.hide();u.items=[];return}u.unHighlightItem();u.cleanHighlights();n=u.getPaths();k=n.length;for(p=0;p<k;p++){o=n[p];m=j.getAt(p);Ext.apply(o,t);if(!m){m=u.createPoint(o,g);if(c){u.createShadow(m,t,g)}}b=m.shadows;if(l.animate){d=u.renderer(m,h.getAt(p),{translate:o},p,h);m._to=d;u.onAnimate(m,{to:d});for(e=0;e<r;e++){s=Ext.apply({},q[e]);d=u.renderer(b[e],h.getAt(p),Ext.apply({},{hidden:false,translate:{x:o.x+(s.translate?s.translate.x:0),y:o.y+(s.translate?s.translate.y:0)}},s),p,h);u.onAnimate(b[e],{to:d})}}else{d=u.renderer(m,h.getAt(p),{translate:o},p,h);m._to=d;m.setAttributes(d,true);for(e=0;e<r;e++){s=Ext.apply({},q[e]);d=u.renderer(b[e],h.getAt(p),Ext.apply({},{hidden:false,translate:{x:o.x+(s.translate?s.translate.x:0),y:o.y+(s.translate?s.translate.y:0)}},s),p,h);b[e].setAttributes(d,true)}}u.items[p].sprite=m}k=j.getCount();for(p=n.length;p<k;p++){j.getAt(p).hide(true)}u.renderLabels();u.renderCallouts()},onCreateLabel:function(d,k,c,e){var g=this,h=g.labelsGroup,a=g.label,b=Ext.apply({},a,g.seriesLabelStyle),j=g.bbox;return g.chart.surface.add(Ext.apply({type:"text",group:h,x:k.point[0],y:j.y+j.height/2},b))},onPlaceLabel:function(g,k,t,q,p,d){var v=this,l=v.chart,s=l.resizing,u=v.label,r=u.renderer,b=u.field,a=v.bbox,j=t.point[0],h=t.point[1],c=t.sprite.attr.radius,e,n,m,o;g.setAttributes({text:r(k.get(b)),hidden:true},true);if(p=="rotate"){g.setAttributes({"text-anchor":"start",rotation:{x:j,y:h,degrees:-45}},true);e=g.getBBox();n=e.width;m=e.height;j=j<a.x?a.x:j;j=(j+n>a.x+a.width)?(j-(j+n-a.x-a.width)):j;h=(h-m<a.y)?a.y+m:h}else{if(p=="under"||p=="over"){e=t.sprite.getBBox();e.width=e.width||(c*2);e.height=e.height||(c*2);h=h+(p=="over"?-e.height:e.height);e=g.getBBox();n=e.width/2;m=e.height/2;j=j-n<a.x?a.x+n:j;j=(j+n>a.x+a.width)?(j-(j+n-a.x-a.width)):j;h=h-m<a.y?a.y+m:h;h=(h+m>a.y+a.height)?(h-(h+m-a.y-a.height)):h}}if(!l.animate){g.setAttributes({x:j,y:h},true);g.show(true)}else{if(s){o=t.sprite.getActiveAnimation();if(o){o.on("afteranimate",function(){g.setAttributes({x:j,y:h},true);g.show(true)})}else{g.show(true)}}else{v.onAnimate(g,{to:{x:j,y:h}})}}},onPlaceCallout:function(k,m,B,z,w,c,h){var E=this,n=E.chart,u=n.surface,A=n.resizing,D=E.callouts,o=E.items,b=B.point,F,a=k.label.getBBox(),C=30,t=10,s=3,e,d,g,r,q,v=E.bbox,l,j;F=[Math.cos(Math.PI/4),-Math.sin(Math.PI/4)];l=b[0]+F[0]*C;j=b[1]+F[1]*C;e=l+(F[0]>0?0:-(a.width+2*s));d=j-a.height/2-s;g=a.width+2*s;r=a.height+2*s;if(e<v[0]||(e+g)>(v[0]+v[2])){F[0]*=-1}if(d<v[1]||(d+r)>(v[1]+v[3])){F[1]*=-1}l=b[0]+F[0]*C;j=b[1]+F[1]*C;e=l+(F[0]>0?0:-(a.width+2*s));d=j-a.height/2-s;g=a.width+2*s;r=a.height+2*s;if(n.animate){E.onAnimate(k.lines,{to:{path:["M",b[0],b[1],"L",l,j,"Z"]}},true);E.onAnimate(k.box,{to:{x:e,y:d,width:g,height:r}},true);E.onAnimate(k.label,{to:{x:l+(F[0]>0?s:-(a.width+s)),y:j}},true)}else{k.lines.setAttributes({path:["M",b[0],b[1],"L",l,j,"Z"]},true);k.box.setAttributes({x:e,y:d,width:g,height:r},true);k.label.setAttributes({x:l+(F[0]>0?s:-(a.width+s)),y:j},true)}for(q in k){k[q].show(true)}},onAnimate:function(b,a){b.show();return this.callParent(arguments)},isItemInPoint:function(c,h,e){var b,d=10,a=Math.abs;function g(i){var k=a(i[0]-c),j=a(i[1]-h);return Math.sqrt(k*k+j*j)}b=e.point;return(b[0]-d<=c&&b[0]+d>=c&&b[1]-d<=h&&b[1]+d>=h)}});Ext.define("Ext.layout.container.Table",{alias:["layout.table"],extend:"Ext.layout.container.Container",alternateClassName:"Ext.layout.TableLayout",monitorResize:false,type:"table",clearEl:true,targetCls:Ext.baseCSSPrefix+"table-layout-ct",tableCls:Ext.baseCSSPrefix+"table-layout",cellCls:Ext.baseCSSPrefix+"table-layout-cell",tableAttrs:null,itemSizePolicy:{setsWidth:0,setsHeight:0},getItemSizePolicy:function(a){return this.itemSizePolicy},getLayoutItems:function(){var g=this,b=[],c=g.callParent(),e,a=c.length,d;for(d=0;d<a;d++){e=c[d];if(!e.hidden){b.push(e)}}return b},renderChildren:function(){var j=this,h=j.getLayoutItems(),e=j.owner.getTargetEl().child("table",true).tBodies[0],p=e.rows,d=0,g=h.length,o,m,c,a,n,l,k,b;o=j.calculateCells(h);for(;d<g;d++){m=o[d];c=m.rowIdx;a=m.cellIdx;n=h[d];l=p[c];if(!l){l=e.insertRow(c);if(j.trAttrs){l.set(j.trAttrs)}}b=k=Ext.get(l.cells[a]||l.insertCell(a));if(j.needsDivWrap()){b=k.first()||k.createChild({tag:"div"});b.setWidth(null)}if(!n.rendered){j.renderItem(n,b,0)}else{if(!j.isValidParent(n,b,c,a,e)){j.moveItem(n,b,0)}}if(j.tdAttrs){k.set(j.tdAttrs)}if(n.tdAttrs){k.set(n.tdAttrs)}k.set({colSpan:n.colspan||1,rowSpan:n.rowspan||1,id:n.cellId||"",cls:j.cellCls+" "+(n.cellCls||"")});if(!o[d+1]||o[d+1].rowIdx!==c){a++;while(l.cells[a]){l.deleteCell(a)}}}c++;while(e.rows[c]){e.deleteRow(c)}},calculate:function(g){if(!g.hasDomProp("containerChildrenDone")){this.done=false}else{var c=g.targetContext,b=g.widthModel.shrinkWrap,a=g.heightModel.shrinkWrap,h=a||b,d=h&&c.el.child("table",true),e=h&&c.getPaddingInfo();if(b){g.setContentWidth(d.offsetWidth+e.width,true)}if(a){g.setContentHeight(d.offsetHeight+e.height,true)}}},finalizeLayout:function(){if(this.needsDivWrap()){var b=this.getLayoutItems(),c,a=b.length,d;for(c=0;c<a;c++){d=b[c];Ext.fly(d.el.dom.parentNode).setWidth(d.getWidth())}}if(Ext.isIE6||(Ext.isIEQuirks)){this.owner.getTargetEl().child("table").repaint()}},calculateCells:function(k){var m=[],b=0,d=0,a=0,h=this.columns||Infinity,n=[],e=0,c,g=k.length,l;for(;e<g;e++){l=k[e];while(d>=h||n[d]>0){if(d>=h){d=0;a=0;b++;for(c=0;c<h;c++){if(n[c]>0){n[c]--}}}else{d++}}m.push({rowIdx:b,cellIdx:a});for(c=l.colspan||1;c;--c){n[d]=l.rowspan||1;++d}++a}return m},getRenderTree:function(){var k=this,h=k.getLayoutItems(),o,p=[],q=Ext.apply({tag:"table",role:"presentation",cls:k.tableCls,cellspacing:0,cn:{tag:"tbody",cn:p}},k.tableAttrs),c=k.tdAttrs,d=k.needsDivWrap(),e,g=h.length,n,m,j,b,a,l;o=k.calculateCells(h);for(e=0;e<g;e++){n=h[e];m=o[e];b=m.rowIdx;a=m.cellIdx;j=p[b];if(!j){j=p[b]={tag:"tr",cn:[]};if(k.trAttrs){Ext.apply(j,k.trAttrs)}}l=j.cn[a]={tag:"td"};if(c){Ext.apply(l,c)}Ext.apply(l,{colSpan:n.colspan||1,rowSpan:n.rowspan||1,id:n.cellId||"",cls:k.cellCls+" "+(n.cellCls||"")});if(d){l=l.cn={tag:"div"}}k.configureItem(n);l.cn=n.getRenderTree()}return q},isValidParent:function(g,h,e,d){var b,a,c;if(arguments.length===3){c=g.el.up("table");return c&&c.dom.parentNode===h.dom}b=this.owner.getTargetEl().child("table",true).tBodies[0];a=b.rows[e].cells[d];return g.el.dom.parentNode===a},needsDivWrap:function(){return Ext.isOpera10_5}});Ext.define("Ext.container.ButtonGroup",{extend:"Ext.panel.Panel",alias:"widget.buttongroup",alternateClassName:"Ext.ButtonGroup",requires:["Ext.layout.container.Table"],baseCls:Ext.baseCSSPrefix+"btn-group",layout:{type:"table"},defaultType:"button",frame:true,frameHeader:false,titleAlign:"center",initComponent:function(){var a=this,b=a.columns;a.noTitleCls=a.baseCls+"-notitle";if(b){a.layout=Ext.apply({},{columns:b},a.layout)}if(!a.title){a.addCls(a.noTitleCls)}a.callParent(arguments)},onBeforeAdd:function(a){if(a.isButton){a.ui=a.ui+"-toolbar"}this.callParent(arguments)},applyDefaults:function(a){if(!Ext.isString(a)){a=this.callParent(arguments)}return a}});Ext.define("Ext.container.Viewport",{extend:"Ext.container.Container",alias:"widget.viewport",requires:["Ext.EventManager"],alternateClassName:"Ext.Viewport",isViewport:true,ariaRole:"application",preserveElOnDestroy:true,initComponent:function(){var c=this,a=document.body.parentNode,b;Ext.getScrollbarSize();c.width=c.height=undefined;c.callParent(arguments);Ext.fly(a).addCls(Ext.baseCSSPrefix+"viewport");if(c.autoScroll){delete c.autoScroll;Ext.fly(a).setStyle("overflow","auto")}c.el=b=Ext.getBody();b.setHeight=Ext.emptyFn;b.setWidth=Ext.emptyFn;b.setSize=Ext.emptyFn;b.dom.scroll="no";c.allowDomMove=false;c.renderTo=c.el},onRender:function(){var a=this;a.callParent(arguments);a.width=Ext.Element.getViewportWidth();a.height=Ext.Element.getViewportHeight()},afterFirstLayout:function(){var a=this;a.callParent(arguments);setTimeout(function(){Ext.EventManager.onWindowResize(a.fireResize,a)},1)},fireResize:function(b,a){if(b!=this.width||a!=this.height){this.setSize(b,a)}}});Ext.define("Ext.data.proxy.Proxy",{alias:"proxy.proxy",alternateClassName:["Ext.data.DataProxy","Ext.data.Proxy"],uses:["Ext.data.Batch","Ext.data.Operation","Ext.data.Model"],mixins:{observable:"Ext.util.Observable"},batchOrder:"create,update,destroy",batchActions:true,defaultReaderType:"json",defaultWriterType:"json",isProxy:true,constructor:function(a){a=a||{};if(a.model===undefined){delete a.model}this.mixins.observable.constructor.call(this,a);if(this.model!==undefined&&!(this.model instanceof Ext.data.Model)){this.setModel(this.model)}},setModel:function(b,c){this.model=Ext.ModelManager.getModel(b);var a=this.reader,d=this.writer;this.setReader(a);this.setWriter(d);if(c&&this.store){this.store.setModel(this.model)}},getModel:function(){return this.model},setReader:function(a){var c=this,b=true;if(a===undefined||typeof a=="string"){a={type:a};b=false}if(a.isReader){a.setModel(c.model)}else{if(b){a=Ext.apply({},a)}Ext.applyIf(a,{proxy:c,model:c.model,type:c.defaultReaderType});a=Ext.createByAlias("reader."+a.type,a)}if(a.onMetaChange){a.onMetaChange=Ext.Function.createSequence(a.onMetaChange,this.onMetaChange,this)}c.reader=a;return c.reader},getReader:function(){return this.reader},onMetaChange:function(a){this.fireEvent("metachange",this,a)},setWriter:function(c){var b=this,a=true;if(c===undefined||typeof c=="string"){c={type:c};a=false}if(!c.isWriter){if(a){c=Ext.apply({},c)}Ext.applyIf(c,{model:b.model,type:b.defaultWriterType});c=Ext.createByAlias("writer."+c.type,c)}b.writer=c;return b.writer},getWriter:function(){return this.writer},create:Ext.emptyFn,read:Ext.emptyFn,update:Ext.emptyFn,destroy:Ext.emptyFn,batch:function(o,l){var k=this,j=k.batchActions,h,c,g,d,e,m,b,n,i;if(o.operations===undefined){o={operations:o,listeners:l}}if(o.batch){if(Ext.isDefined(o.batch.runOperation)){h=Ext.applyIf(o.batch,{proxy:k,listeners:{}})}}else{o.batch={proxy:k,listeners:o.listeners||{}}}if(!h){h=new Ext.data.Batch(o.batch)}h.on("complete",Ext.bind(k.onBatchComplete,k,[o],0));g=k.batchOrder.split(",");d=g.length;for(m=0;m<d;m++){e=g[m];c=o.operations[e];if(c){if(j){h.add(new Ext.data.Operation({action:e,records:c}))}else{n=c.length;for(b=0;b<n;b++){i=c[b];h.add(new Ext.data.Operation({action:e,records:[i]}))}}}}h.start();return h},onBatchComplete:function(a,b){var c=a.scope||this;if(b.hasException){if(Ext.isFunction(a.failure)){Ext.callback(a.failure,c,[b,a])}}else{if(Ext.isFunction(a.success)){Ext.callback(a.success,c,[b,a])}}if(Ext.isFunction(a.callback)){Ext.callback(a.callback,c,[b,a])}}},function(){Ext.data.DataProxy=this});Ext.define("Ext.data.AbstractStore",{requires:["Ext.util.MixedCollection","Ext.data.proxy.Proxy","Ext.data.Operation","Ext.util.Filter"],mixins:{observable:"Ext.util.Observable",sortable:"Ext.util.Sortable"},statics:{create:function(a){if(!a.isStore){if(!a.type){a.type="store"}a=Ext.createByAlias("store."+a.type,a)}return a}},remoteSort:false,remoteFilter:false,autoLoad:undefined,autoSync:false,batchUpdateMode:"operation",filterOnLoad:true,sortOnLoad:true,implicitModel:false,defaultProxyType:"memory",isDestroyed:false,isStore:true,sortRoot:"data",constructor:function(a){var c=this,b;Ext.apply(c,a);c.removed=[];c.mixins.observable.constructor.apply(c,arguments);c.model=Ext.ModelManager.getModel(c.model);Ext.applyIf(c,{modelDefaults:{}});if(!c.model&&c.fields){c.model=Ext.define("Ext.data.Store.ImplicitModel-"+(c.storeId||Ext.id()),{extend:"Ext.data.Model",fields:c.fields,proxy:c.proxy||c.defaultProxyType});delete c.fields;c.implicitModel=true}c.setProxy(c.proxy||c.model.getProxy());c.proxy.on("metachange",c.onMetaChange,c);if(c.id&&!c.storeId){c.storeId=c.id;delete c.id}if(c.storeId){Ext.data.StoreManager.register(c)}c.mixins.sortable.initSortable.call(c);b=c.decodeFilters(c.filters);c.filters=new Ext.util.MixedCollection();c.filters.addAll(b)},setProxy:function(a){var b=this;if(a instanceof Ext.data.proxy.Proxy){a.setModel(b.model)}else{if(Ext.isString(a)){a={type:a}}Ext.applyIf(a,{model:b.model});a=Ext.createByAlias("proxy."+a.type,a)}b.proxy=a;return b.proxy},getProxy:function(){return this.proxy},onMetaChange:function(a,b){this.fireEvent("metachange",this,b)},create:function(e,c){var d=this,a=Ext.ModelManager.create(Ext.applyIf(e,d.modelDefaults),d.model.modelName),b;c=c||{};Ext.applyIf(c,{action:"create",records:[a]});b=new Ext.data.Operation(c);d.proxy.create(b,d.onProxyWrite,d);return a},read:function(){return this.load.apply(this,arguments)},update:function(b){var c=this,a;b=b||{};Ext.applyIf(b,{action:"update",records:c.getUpdatedRecords()});a=new Ext.data.Operation(b);return c.proxy.update(a,c.onProxyWrite,c)},onProxyWrite:function(b){var c=this,d=b.wasSuccessful(),a=b.getRecords();switch(b.action){case"create":c.onCreateRecords(a,b,d);break;case"update":c.onUpdateRecords(a,b,d);break;case"destroy":c.onDestroyRecords(a,b,d);break}if(d){c.fireEvent("write",c,b);c.fireEvent("datachanged",c);c.fireEvent("refresh",c)}Ext.callback(b.callback,b.scope||c,[a,b,d])},onCreateRecords:Ext.emptyFn,onUpdateRecords:Ext.emptyFn,onDestroyRecords:function(b,a,c){if(c){this.removed=[]}},destroy:function(b){var c=this,a;b=b||{};Ext.applyIf(b,{action:"destroy",records:c.getRemovedRecords()});a=new Ext.data.Operation(b);return c.proxy.destroy(a,c.onProxyWrite,c)},onBatchOperationComplete:function(b,a){return this.onProxyWrite(a)},onBatchComplete:function(c,a){var g=this,b=c.operations,e=b.length,d;g.suspendEvents();for(d=0;d<e;d++){g.onProxyWrite(b[d])}g.resumeEvents();g.fireEvent("datachanged",g);g.fireEvent("refresh",g)},onBatchException:function(b,a){},filterNew:function(a){return a.phantom===true&&a.isValid()},getNewRecords:function(){return[]},getUpdatedRecords:function(){return[]},getModifiedRecords:function(){return[].concat(this.getNewRecords(),this.getUpdatedRecords())},filterUpdated:function(a){return a.dirty===true&&a.phantom!==true&&a.isValid()},getRemovedRecords:function(){return this.removed},filter:function(a,b){},decodeFilters:function(e){if(!Ext.isArray(e)){if(e===undefined){e=[]}else{e=[e]}}var d=e.length,a=Ext.util.Filter,b,c;for(c=0;c<d;c++){b=e[c];if(!(b instanceof a)){Ext.apply(b,{root:"data"});if(b.fn){b.filterFn=b.fn}if(typeof b=="function"){b={filterFn:b}}e[c]=new a(b)}}return e},clearFilter:function(a){},isFiltered:function(){},filterBy:function(b,a){},sync:function(c){var e=this,b={},g=e.getNewRecords(),d=e.getUpdatedRecords(),a=e.getRemovedRecords(),h=false;if(g.length>0){b.create=g;h=true}if(d.length>0){b.update=d;h=true}if(a.length>0){b.destroy=a;h=true}if(h&&e.fireEvent("beforesync",b)!==false){c=c||{};e.proxy.batch(Ext.apply(c,{operations:b,listeners:e.getBatchListeners()}))}return e},getBatchListeners:function(){var b=this,a={scope:b,exception:b.onBatchException};if(b.batchUpdateMode=="operation"){a.operationcomplete=b.onBatchOperationComplete}else{a.complete=b.onBatchComplete}return a},save:function(){return this.sync.apply(this,arguments)},load:function(b){var c=this,a;b=Ext.apply({action:"read",filters:c.filters.items,sorters:c.getSorters()},b);c.lastOptions=b;a=new Ext.data.Operation(b);if(c.fireEvent("beforeload",c,a)!==false){c.loading=true;c.proxy.read(a,c.onProxyLoad,c)}return c},reload:function(a){return this.load(Ext.apply(this.lastOptions,a))},afterEdit:function(a,e){var d=this,b,c;if(d.autoSync&&!d.autoSyncSuspended){for(b=e.length;b--;){if(a.fields.get(e[b]).persist){c=true;break}}if(c){d.sync()}}d.fireEvent("update",d,a,Ext.data.Model.EDIT,e)},afterReject:function(a){this.fireEvent("update",this,a,Ext.data.Model.REJECT,null)},afterCommit:function(a){this.fireEvent("update",this,a,Ext.data.Model.COMMIT,null)},destroyStore:function(){var a=this;if(!a.isDestroyed){if(a.storeId){Ext.data.StoreManager.unregister(a)}a.clearData();a.data=a.tree=a.sorters=a.filters=a.groupers=null;if(a.reader){a.reader.destroyReader()}a.proxy=a.reader=a.writer=null;a.clearListeners();a.isDestroyed=true;if(a.implicitModel){Ext.destroy(a.model)}else{a.model=null}}},doSort:function(a){var b=this;if(b.remoteSort){b.load()}else{b.data.sortBy(a);b.fireEvent("datachanged",b);b.fireEvent("refresh",b)}},clearData:Ext.emptyFn,getCount:Ext.emptyFn,getById:Ext.emptyFn,removeAll:Ext.emptyFn,isLoading:function(){return !!this.loading},suspendAutoSync:function(){this.autoSyncSuspended=true},resumeAutoSync:function(){this.autoSyncSuspended=false}});Ext.define("Ext.data.ResultSet",{loaded:true,count:0,total:0,success:false,constructor:function(a){Ext.apply(this,a);this.totalRecords=this.total;if(a.count===undefined){this.count=this.records.length}}});Ext.define("Ext.data.reader.Reader",{requires:["Ext.data.ResultSet","Ext.XTemplate"],alternateClassName:["Ext.data.Reader","Ext.data.DataReader"],mixins:{observable:"Ext.util.Observable"},totalProperty:"total",successProperty:"success",root:"",implicitIncludes:true,readRecordsOnFailure:true,isReader:true,applyDefaults:true,lastFieldGeneration:null,constructor:function(a){var b=this;b.mixins.observable.constructor.call(b,a);b.fieldCount=0;b.model=Ext.ModelManager.getModel(b.model);b.accessExpressionFn=Ext.Function.bind(b.createFieldAccessExpression,b);if(b.model&&b.model.prototype.fields){b.buildExtractors()}this.addEvents("exception")},setModel:function(a,c){var b=this;b.model=Ext.ModelManager.getModel(a);b.buildExtractors(true);if(c&&b.proxy){b.proxy.setModel(b.model,true)}},read:function(a){var b;if(a){b=a.responseText?this.getResponseData(a):this.readRecords(a)}return b||this.nullResultSet},readRecords:function(c){var d=this,i,b,a,g,e,h,j;if(d.lastFieldGeneration!==d.model.prototype.fields.generation){d.buildExtractors(true)}d.rawData=c;c=d.getData(c);i=true;b=0;a=[];if(d.successProperty){h=d.getSuccess(c);if(h===false||h==="false"){i=false}}if(d.messageProperty){j=d.getMessage(c)}if(d.readRecordsOnFailure||i){g=Ext.isArray(c)?c:d.getRoot(c);if(g){e=g.length}if(d.totalProperty){h=parseInt(d.getTotal(c),10);if(!isNaN(h)){e=h}}if(g){a=d.extractData(g);b=a.length}}return new Ext.data.ResultSet({total:e||b,count:b,records:a,success:i,message:j})},extractData:function(k){var j=this,d=[],b=j.model,a=k.length,e,c,h,g;if(!k.length&&Ext.isObject(k)){k=[k];a=1}for(g=0;g<a;g++){c=k[g];if(!c.isModel){h=new b(undefined,j.getId(c),c,e={});h.phantom=false;j.convertRecordData(e,c,h);d.push(h);if(j.implicitIncludes){j.readAssociated(h,c)}}else{d.push(c)}}return d},readAssociated:function(h,e){var d=h.associations.items,g=0,a=d.length,c,b,k,j;for(;g<a;g++){c=d[g];b=this.getAssociatedDataRoot(e,c.associationKey||c.name);if(b){j=c.getReader();if(!j){k=c.associatedModel.proxy;if(k){j=k.getReader()}else{j=new this.constructor({model:c.associatedName})}}c.read(h,j,b)}}},getAssociatedDataRoot:function(b,a){return b[a]},getFields:function(){return this.model.prototype.fields.items},getData:function(a){return a},getRoot:function(a){return a},getResponseData:function(a){},onMetaChange:function(e){var d=this,b=e.fields||d.getFields(),c,a;d.metaData=e;d.root=e.root||d.root;d.idProperty=e.idProperty||d.idProperty;d.totalProperty=e.totalProperty||d.totalProperty;d.successProperty=e.successProperty||d.successProperty;d.messageProperty=e.messageProperty||d.messageProperty;a=e.clientIdProperty;if(d.model){d.model.setFields(b,d.idProperty,a);d.setModel(d.model,true)}else{c=Ext.define("Ext.data.reader.Json-Model"+Ext.id(),{extend:"Ext.data.Model",fields:b,clientIdProperty:a});if(d.idProperty){c.idProperty=d.idProperty}d.setModel(c,true)}},getIdProperty:function(){return this.idProperty||this.model.prototype.idProperty},buildExtractors:function(b){var g=this,j=g.getIdProperty(),i=g.totalProperty,e=g.successProperty,h=g.messageProperty,d,c,a;if(b===true){delete g.convertRecordData}if(g.convertRecordData){return}if(i){g.getTotal=g.createAccessor(i)}if(e){g.getSuccess=g.createAccessor(e)}if(h){g.getMessage=g.createAccessor(h)}if(j){c=g.model.prototype.fields.get(j);if(c){a=c.mapping;j=(a!==undefined&&a!==null)?a:j}d=g.createAccessor(j);g.getId=function(k){var l=d.call(g,k);return(l===undefined||l==="")?null:l}}else{g.getId=function(){return null}}g.convertRecordData=g.buildRecordDataExtractor();g.lastFieldGeneration=g.model.prototype.fields.generation},recordDataExtractorTemplate:["var me = this\n","    ,fields = me.model.prototype.fields\n","    ,value\n","    ,internalId\n",'<tpl for="fields">','    ,__field{#} = fields.get("{name}")\n',"</tpl>",";\n","return function(dest, source, record) {\n",'<tpl for="fields">','    value = {[ this.createFieldAccessExpression(values, "__field" + xindex, "source") ]};\n','<tpl if="hasCustomConvert">','    dest["{name}"] = value === undefined ? __field{#}.convert(__field{#}.defaultValue, record) : __field{#}.convert(value, record);\n','<tpl elseif="defaultValue !== undefined">',"    if (value === undefined) {\n","        if (me.applyDefaults) {\n",'<tpl if="convert">','            dest["{name}"] = __field{#}.convert(__field{#}.defaultValue, record);\n',"<tpl else>",'            dest["{name}"] = __field{#}.defaultValue\n',"</tpl>","        };\n","    } else {\n",'<tpl if="convert">','        dest["{name}"] = __field{#}.convert(value, record);\n',"<tpl else>",'        dest["{name}"] = value;\n',"</tpl>","    };","<tpl else>","    if (value !== undefined) {\n",'<tpl if="convert">','        dest["{name}"] = __field{#}.convert(value, record);\n',"<tpl else>",'        dest["{name}"] = value;\n',"</tpl>","    }\n","</tpl>","</tpl>",'<tpl if="clientIdProp">','    if (record && (internalId = {[ this.createFieldAccessExpression({mapping: values.clientIdProp}, null, "source") ]})) {\n','        record.{["internalId"]} = internalId;\n',"    }\n","</tpl>","};"],buildRecordDataExtractor:function(){var c=this,a=c.model.prototype,b={clientIdProp:a.clientIdProperty,fields:a.fields.items};c.recordDataExtractorTemplate.createFieldAccessExpression=c.accessExpressionFn;return Ext.functionFactory(c.recordDataExtractorTemplate.apply(b)).call(c)},destroyReader:function(){var a=this;delete a.proxy;delete a.model;delete a.convertRecordData;delete a.getId;delete a.getTotal;delete a.getSuccess;delete a.getMessage}},function(){var a=this.prototype;Ext.apply(a,{nullResultSet:new Ext.data.ResultSet({total:0,count:0,records:[],success:true}),recordDataExtractorTemplate:new Ext.XTemplate(a.recordDataExtractorTemplate)})});Ext.define("Ext.data.reader.Json",{extend:"Ext.data.reader.Reader",alternateClassName:"Ext.data.JsonReader",alias:"reader.json",root:"",useSimpleAccessors:false,readRecords:function(a){if(a.metaData){this.onMetaChange(a.metaData)}this.jsonData=a;return this.callParent([a])},getResponseData:function(a){var d,b;try{d=Ext.decode(a.responseText);return this.readRecords(d)}catch(c){b=new Ext.data.ResultSet({total:0,count:0,records:[],success:false,message:c.message});this.fireEvent("exception",this,a,b);Ext.Logger.warn("Unable to parse the JSON returned by the server");return b}},buildExtractors:function(){var a=this;a.callParent(arguments);if(a.root){a.getRoot=a.createAccessor(a.root)}else{a.getRoot=function(b){return b}}},extractData:function(a){var e=this.record,d=[],c,b;if(e){c=a.length;if(!c&&Ext.isObject(a)){c=1;a=[a]}for(b=0;b<c;b++){d[b]=a[b][e]}}else{d=a}return this.callParent([d])},createAccessor:(function(){var a=/[\[\.]/;return function(c){if(Ext.isEmpty(c)){return Ext.emptyFn}if(Ext.isFunction(c)){return c}if(this.useSimpleAccessors!==true){var b=String(c).search(a);if(b>=0){return Ext.functionFactory("obj","return obj"+(b>0?".":"")+c)}}return function(d){return d[c]}}}()),createFieldAccessExpression:(function(){var a=/[\[\.]/;return function(i,d,c){var e=this,g=(i.mapping!==null),h=g?i.mapping:i.name,b,j;if(typeof h==="function"){b=d+".mapping("+c+", this)"}else{if(this.useSimpleAccessors===true||((j=String(h).search(a))<0)){if(!g||isNaN(h)){h='"'+h+'"'}b=c+"["+h+"]"}else{b=c+(j>0?".":"")+h}}return b}}())});Ext.define("Ext.data.writer.Writer",{alias:"writer.base",alternateClassName:["Ext.data.DataWriter","Ext.data.Writer"],writeAllFields:true,nameProperty:"name",isWriter:true,constructor:function(a){Ext.apply(this,a)},write:function(e){var c=e.operation,b=c.records||[],a=b.length,d=0,g=[];for(;d<a;d++){g.push(this.getRecordData(b[d],c))}return this.writeRecords(e,g)},getRecordData:function(g,d){var n=g.phantom===true,b=this.writeAllFields||n,c=this.nameProperty,h=g.fields,p=h.items,e={},l=g.clientIdProperty,k,a,j,o,m,i,q;if(b){q=p.length;for(i=0;i<q;i++){j=p[i];if(j.persist){a=j[c]||j.name;m=g.get(j.name);if(j.serialize){e[a]=j.serialize(m,g)}else{if(j.type===Ext.data.Types.DATE&&j.dateFormat){e[a]=Ext.Date.format(m,j.dateFormat)}else{e[a]=m}}}}}else{k=g.getChanges();for(o in k){if(k.hasOwnProperty(o)){j=h.get(o);if(j.persist){a=j[c]||j.name;m=g.get(j.name);if(j.serialize){e[a]=j.serialize(m,g)}else{if(j.type===Ext.data.Types.DATE&&j.dateFormat){e[a]=Ext.Date.format(m,j.dateFormat)}else{e[a]=m}}}}}}if(n){if(l&&d&&d.records.length>1){e[l]=g.internalId}}else{e[g.idProperty]=g.getId()}return e}});Ext.define("Ext.data.writer.Json",{extend:"Ext.data.writer.Writer",alternateClassName:"Ext.data.JsonWriter",alias:"writer.json",root:undefined,encode:false,allowSingle:true,writeRecords:function(b,c){var a=this.root;if(this.allowSingle&&c.length==1){c=c[0]}if(this.encode){if(a){b.params[a]=Ext.encode(c)}else{}}else{b.jsonData=b.jsonData||{};if(a){b.jsonData[a]=c}else{b.jsonData=c}}return b}});Ext.define("Ext.data.proxy.Server",{extend:"Ext.data.proxy.Proxy",alias:"proxy.server",alternateClassName:"Ext.data.ServerProxy",uses:["Ext.data.Request"],pageParam:"page",startParam:"start",limitParam:"limit",groupParam:"group",groupDirectionParam:"groupDir",sortParam:"sort",filterParam:"filter",directionParam:"dir",simpleSortMode:false,simpleGroupMode:false,noCache:true,cacheString:"_dc",timeout:30000,constructor:function(a){var b=this;a=a||{};b.callParent([a]);b.extraParams=a.extraParams||{};b.api=Ext.apply({},a.api||b.api);b.nocache=b.noCache},create:function(){return this.doRequest.apply(this,arguments)},read:function(){return this.doRequest.apply(this,arguments)},update:function(){return this.doRequest.apply(this,arguments)},destroy:function(){return this.doRequest.apply(this,arguments)},setExtraParam:function(a,b){this.extraParams[a]=b},buildRequest:function(a){var c=this,d=Ext.applyIf(a.params||{},c.extraParams||{}),b;d=Ext.applyIf(d,c.getParams(a));if(a.id!==undefined&&d.id===undefined){d.id=a.id}b=new Ext.data.Request({params:d,action:a.action,records:a.records,operation:a,url:a.url,proxy:c});b.url=c.buildUrl(b);a.request=b;return b},processResponse:function(h,a,c,b,g,i){var e=this,d,j;if(h===true){d=e.getReader();d.applyDefaults=a.action==="read";j=d.read(e.extractResponseData(b));if(j.success!==false){Ext.apply(a,{response:b,resultSet:j});a.commitRecords(j.records);a.setCompleted();a.setSuccessful()}else{a.setException(j.message);e.fireEvent("exception",this,b,a)}}else{e.setException(a,b);e.fireEvent("exception",this,b,a)}if(typeof g=="function"){g.call(i||e,a)}e.afterRequest(c,h)},setException:function(b,a){b.setException({status:a.status,statusText:a.statusText})},extractResponseData:function(a){return a},applyEncoding:function(a){return Ext.encode(a)},encodeSorters:function(d){var b=[],c=d.length,a=0;for(;a<c;a++){b[a]={property:d[a].property,direction:d[a].direction}}return this.applyEncoding(b)},encodeFilters:function(d){var b=[],c=d.length,a=0;for(;a<c;a++){b[a]={property:d[a].property,value:d[a].value}}return this.applyEncoding(b)},getParams:function(n){var u=this,t={},q=Ext.isDefined,r=n.groupers,a=n.sorters,l=n.filters,i=n.page,h=n.start,s=n.limit,j=u.simpleSortMode,d=u.simpleGroupMode,p=u.pageParam,g=u.startParam,b=u.limitParam,c=u.groupParam,k=u.groupDirectionParam,e=u.sortParam,o=u.filterParam,m=u.directionParam;if(p&&q(i)){t[p]=i}if(g&&q(h)){t[g]=h}if(b&&q(s)){t[b]=s}if(c&&r&&r.length>0){if(d){t[c]=r[0].property;t[k]=r[0].direction||"ASC"}else{t[c]=u.encodeSorters(r)}}if(e&&a&&a.length>0){if(j){t[e]=a[0].property;t[m]=a[0].direction}else{t[e]=u.encodeSorters(a)}}if(o&&l&&l.length>0){t[o]=u.encodeFilters(l)}return t},buildUrl:function(c){var b=this,a=b.getUrl(c);if(b.noCache){a=Ext.urlAppend(a,Ext.String.format("{0}={1}",b.cacheString,Ext.Date.now()))}return a},getUrl:function(a){return a.url||this.api[a.action]||this.url},doRequest:function(a,c,b){},afterRequest:Ext.emptyFn,onDestroy:function(){Ext.destroy(this.reader,this.writer)}});Ext.define("Ext.data.proxy.Ajax",{requires:["Ext.util.MixedCollection","Ext.Ajax"],extend:"Ext.data.proxy.Server",alias:"proxy.ajax",alternateClassName:["Ext.data.HttpProxy","Ext.data.AjaxProxy"],actionMethods:{create:"POST",read:"GET",update:"POST",destroy:"POST"},doRequest:function(a,e,b){var d=this.getWriter(),c=this.buildRequest(a,e,b);if(a.allowWrite()){c=d.write(c)}Ext.apply(c,{headers:this.headers,timeout:this.timeout,scope:this,callback:this.createRequestCallback(c,a,e,b),method:this.getMethod(c),disableCaching:false});Ext.Ajax.request(c);return c},getMethod:function(a){return this.actionMethods[a.action]},createRequestCallback:function(d,a,e,b){var c=this;return function(h,i,g){c.processResponse(i,a,d,g,e,b)}}},function(){Ext.data.HttpProxy=this});Ext.define("Ext.data.proxy.Client",{extend:"Ext.data.proxy.Proxy",alternateClassName:"Ext.data.ClientProxy",isSynchronous:true,clear:function(){}});Ext.define("Ext.data.proxy.Memory",{extend:"Ext.data.proxy.Client",alias:"proxy.memory",alternateClassName:"Ext.data.MemoryProxy",constructor:function(a){this.callParent([a]);this.setReader(this.reader)},updateOperation:function(b,g,d){var c=0,e=b.getRecords(),a=e.length;for(c;c<a;c++){e[c].commit()}b.setCompleted();b.setSuccessful();Ext.callback(g,d||this,[b])},create:function(){this.updateOperation.apply(this,arguments)},update:function(){this.updateOperation.apply(this,arguments)},destroy:function(){this.updateOperation.apply(this,arguments)},read:function(a,d,b){var c=this;a.resultSet=c.getReader().read(c.data);a.setCompleted();a.setSuccessful();Ext.callback(d,b||c,[a])},clear:Ext.emptyFn});Ext.define("Ext.util.LruCache",{extend:"Ext.util.HashMap",constructor:function(a){Ext.apply(this,a);this.callParent([a])},add:function(b,e){var d=this,a=d.findKey(e),c;if(a){d.unlinkEntry(c=d.map[a]);c.prev=d.last;c.next=null}else{c={prev:d.last,next:null,key:b,value:e}}if(d.last){d.last.next=c}else{d.first=c}d.last=c;d.callParent([b,c]);d.prune();return e},insertBefore:function(b,g,c){var e=this,a,d;if(c=this.map[this.findKey(c)]){a=e.findKey(g);if(a){e.unlinkEntry(d=e.map[a])}else{d={prev:c.prev,next:c,key:b,value:g}}if(c.prev){d.prev.next=d}else{e.first=d}d.next=c;c.prev=d;e.prune();return g}else{return e.add(b,g)}},get:function(a){var b=this.map[a];if(b){if(b.next){this.moveToEnd(b)}return b.value}},removeAtKey:function(a){this.unlinkEntry(this.map[a]);return this.callParent(arguments)},clear:function(a){this.first=this.last=null;return this.callParent(arguments)},unlinkEntry:function(a){if(a){if(a.next){a.next.prev=a.prev}else{this.last=a.prev}if(a.prev){a.prev.next=a.next}else{this.first=a.next}a.prev=a.next=null}},moveToEnd:function(a){this.unlinkEntry(a);if(a.prev=this.last){this.last.next=a}else{this.first=a}this.last=a},getArray:function(c){var a=[],b=this.first;while(b){a.push(c?b.key:b.value);b=b.next}return a},each:function(c,b,a){var g=this,e=a?g.last:g.first,d=g.length;b=b||g;while(e){if(c.call(b,e.key,e.value,d)===false){break}e=a?e.prev:e.next}return g},findKey:function(b){var a,c=this.map;for(a in c){if(c.hasOwnProperty(a)&&c[a].value===b){return a}}return undefined},prune:function(){var a=this,b=a.maxSize?(a.length-a.maxSize):0;if(b>0){for(;a.first&&b;b--){a.removeAtKey(a.first.key)}}}});Ext.define("Ext.data.Store",{extend:"Ext.data.AbstractStore",alias:"store.store",requires:["Ext.data.StoreManager","Ext.data.Model","Ext.data.proxy.Ajax","Ext.data.proxy.Memory","Ext.data.reader.Json","Ext.data.writer.Json","Ext.util.LruCache"],uses:["Ext.ModelManager","Ext.util.Grouper"],remoteSort:false,remoteFilter:false,remoteGroup:false,groupField:undefined,groupDir:"ASC",trailingBufferZone:25,leadingBufferZone:200,pageSize:undefined,currentPage:1,clearOnPageLoad:true,loading:false,sortOnFilter:true,buffered:false,purgePageCount:5,clearRemovedOnLoad:true,defaultPageSize:25,addRecordsOptions:{addRecords:true},statics:{recordIdFn:function(a){return a.internalId},recordIndexFn:function(a){return a.index}},onClassExtended:function(b,d,a){var c=d.model,e;if(typeof c=="string"){e=a.onBeforeCreated;a.onBeforeCreated=function(){var h=this,g=arguments;Ext.require(c,function(){e.apply(h,g)})}}},constructor:function(b){b=Ext.Object.merge({},b);var d=this,g=b.groupers||d.groupers,a=b.groupField||d.groupField,c,e;e=b.data||d.data;d.data=new Ext.util.MixedCollection(false,Ext.data.Store.recordIdFn);if(e){d.inlineData=e;delete b.data}if(!g&&a){g=[{property:a,direction:b.groupDir||d.groupDir}]}delete b.groupers;d.groupers=new Ext.util.MixedCollection();d.groupers.addAll(d.decodeGroupers(g));this.callParent([b]);if(d.buffered){d.pageMap=new d.PageMap({pageSize:d.pageSize,maxSize:d.purgePageCount,listeners:{clear:d.cancelAllPrefetches,scope:d}});d.pageRequests={};d.sortOnLoad=false;d.filterOnLoad=false}if(d.remoteGroup){d.remoteSort=true}if(d.groupers.items.length&&!d.remoteGroup){d.sort(d.groupers.items,"prepend",false)}c=d.proxy;e=d.inlineData;if(!d.buffered&&!d.pageSize){d.pageSize=d.defaultPageSize}if(e){if(c instanceof Ext.data.proxy.Memory){c.data=e;d.read()}else{d.add.apply(d,[e])}d.sort();delete d.inlineData}else{if(d.autoLoad){Ext.defer(d.load,10,d,[typeof d.autoLoad==="object"?d.autoLoad:undefined])}}},destroyStore:function(){this.callParent(arguments);if(this.pageMap){this.pageMap.clear()}},onBeforeSort:function(){var a=this.groupers;if(a.getCount()>0){this.sort(a.items,"prepend",false)}},decodeGroupers:function(e){if(!Ext.isArray(e)){if(e===undefined){e=[]}else{e=[e]}}var d=e.length,g=Ext.util.Grouper,b,c,a=[];for(c=0;c<d;c++){b=e[c];if(!(b instanceof g)){if(Ext.isString(b)){b={property:b}}b=Ext.apply({root:"data",direction:"ASC"},b);if(b.fn){b.sorterFn=b.fn}if(typeof b=="function"){b={sorterFn:b}}a.push(new g(b))}else{a.push(b)}}return a},group:function(e,g){var d=this,c=false,b,a;if(Ext.isArray(e)){a=e}else{if(Ext.isObject(e)){a=[e]}else{if(Ext.isString(e)){b=d.groupers.get(e);if(!b){b={property:e,direction:g};a=[b]}else{if(g===undefined){b.toggle()}else{b.setDirection(g)}}}}}if(a&&a.length){c=true;a=d.decodeGroupers(a);d.groupers.clear();d.groupers.addAll(a)}if(d.remoteGroup){if(d.buffered){d.pageMap.clear();d.loadPage(1,{groupChange:true})}else{d.load({scope:d,callback:d.fireGroupChange})}}else{d.sort(null,null,null,c);d.fireGroupChange()}},clearGrouping:function(){var d=this,e=d.groupers.items,c=e.length,a,b;for(b=0;b<c;b++){a=e[b];d.sorters.remove(a)}d.groupers.clear();if(d.remoteGroup){if(d.buffered){d.pageMap.clear();d.loadPage(1,{groupChange:true})}else{d.load({scope:d,callback:d.fireGroupChange})}}else{d.sort();d.fireGroupChange()}},isGrouped:function(){return this.groupers.getCount()>0},fireGroupChange:function(){this.fireEvent("groupchange",this,this.groupers)},getGroups:function(b){var d=this.data.items,a=d.length,c=[],k={},g,h,j,e;for(e=0;e<a;e++){g=d[e];h=this.getGroupString(g);j=k[h];if(j===undefined){j={name:h,children:[]};c.push(j);k[h]=j}j.children.push(g)}return b?k[b]:c},getGroupsForGrouper:function(g,b){var d=g.length,e=[],a,c,j,k,h;for(h=0;h<d;h++){j=g[h];c=b.getGroupString(j);if(c!==a){k={name:c,grouper:b,records:[]};e.push(k)}k.records.push(j);a=c}return e},getGroupsForGrouperIndex:function(c,j){var g=this,h=g.groupers,b=h.getAt(j),a=g.getGroupsForGrouper(c,b),e=a.length,d;if(j+1<h.length){for(d=0;d<e;d++){a[d].children=g.getGroupsForGrouperIndex(a[d].records,j+1)}}for(d=0;d<e;d++){a[d].depth=j}return a},getGroupData:function(a){var b=this;if(a!==false){b.sort()}return b.getGroupsForGrouperIndex(b.data.items,0)},getGroupString:function(a){var b=this.groupers.first();if(b){return a.get(b.property)}return""},insert:function(d,c){var h=this,g=false,e,b,a;c=[].concat(c);for(e=0,a=c.length;e<a;e++){b=h.createModel(c[e]);b.set(h.modelDefaults);c[e]=b;h.data.insert(d+e,b);b.join(h);g=g||b.phantom===true}if(h.snapshot){h.snapshot.addAll(c)}if(h.requireSort){h.suspendEvents();h.sort();h.resumeEvents()}h.fireEvent("add",h,c,d);h.fireEvent("datachanged",h);if(h.autoSync&&g&&!h.autoSyncSuspended){h.sync()}},add:function(b){if(!Ext.isArray(b)){b=Array.prototype.slice.apply(arguments)}else{b=b.slice(0)}var e=this,c=0,d=b.length,a,g=!e.remoteSort&&e.sorters&&e.sorters.items.length;if(g&&d===1){return[e.addSorted(e.createModel(b[0]))]}for(;c<d;c++){a=e.createModel(b[c]);b[c]=a}if(g){e.requireSort=true}e.insert(e.data.length,b);delete e.requireSort;return b},addSorted:function(a){var c=this,b=c.data.findInsertionIndex(a,c.generateComparator());c.insert(b,a);return a},createModel:function(a){if(!a.isModel){a=Ext.ModelManager.create(a,this.model)}return a},each:function(e,c){var g=this.data.items,b=g.length,a,h;for(h=0;h<b;h++){a=g[h];if(e.call(c||a,a,h,b)===false){break}}},remove:function(c,k){if(!Ext.isArray(c)){c=[c]}k=k===true;var h=this,j=false,d=0,a=c.length,b,g,e;for(;d<a;d++){e=c[d];g=h.data.indexOf(e);if(h.snapshot){h.snapshot.remove(e)}if(g>-1){b=e.phantom!==true;if(!k&&b){e.removedFrom=g;h.removed.push(e)}e.unjoin(h);h.data.remove(e);j=j||b;h.fireEvent("remove",h,e,g)}}h.fireEvent("datachanged",h);if(!k&&h.autoSync&&j&&!h.autoSyncSuspended){h.sync()}},removeAt:function(b){var a=this.getAt(b);if(a){this.remove(a)}},load:function(a){var b=this;a=a||{};if(typeof a=="function"){a={callback:a}}a.groupers=a.groupers||b.groupers.items;a.page=a.page||b.currentPage;a.start=(a.start!==undefined)?a.start:(a.page-1)*b.pageSize;a.limit=a.limit||b.pageSize;a.addRecords=a.addRecords||false;if(b.buffered){return b.loadToPrefetch(a)}return b.callParent([a])},reload:function(l){var g=this,h,b,e,k,d,a,j,c;if(!l){l={}}if(g.buffered){delete g.totalCount;a=function(){if(g.rangeCached(h,b)){g.loading=false;g.pageMap.un("pageAdded",a);c=g.pageMap.getRange(h,b);g.loadRecords(c,{start:h});g.fireEvent("load",g,c,true)}};j=Math.ceil((g.leadingBufferZone+g.trailingBufferZone)/2);h=l.start||g.getAt(0).index;b=h+(l.count||g.getCount())-1;e=g.getPageFromRecordIndex(Math.max(h-j,0));k=g.getPageFromRecordIndex(b+j);g.pageMap.clear(true);if(g.fireEvent("beforeload",g,l)!==false){g.loading=true;for(d=e;d<=k;d++){g.prefetchPage(d,l)}g.pageMap.on("pageAdded",a)}}else{return g.callParent(arguments)}},onProxyLoad:function(b){var d=this,c=b.getResultSet(),a=b.getRecords(),e=b.wasSuccessful();if(c){d.totalCount=c.total}if(e){d.loadRecords(a,b)}d.loading=false;if(d.hasListeners.load){d.fireEvent("load",d,a,e)}if(d.hasListeners.read){d.fireEvent("read",d,a,e)}Ext.callback(b.callback,b.scope||d,[a,b,e])},getNewRecords:function(){return this.data.filterBy(this.filterNew).items},getUpdatedRecords:function(){return this.data.filterBy(this.filterUpdated).items},filter:function(e,g){if(Ext.isString(e)){e={property:e,value:g}}var d=this,a=d.decodeFilters(e),b=0,h=d.sorters.length&&d.sortOnFilter&&!d.remoteSort,c=a.length;for(;b<c;b++){d.filters.replace(a[b])}if(d.remoteFilter){delete d.totalCount;if(d.buffered){d.pageMap.clear();d.loadPage(1)}else{d.currentPage=1;d.load()}}else{if(d.filters.getCount()){d.snapshot=d.snapshot||d.data.clone();d.data=d.data.filter(d.filters.items);if(h){d.sort()}else{d.fireEvent("datachanged",d);d.fireEvent("refresh",d)}}}},clearFilter:function(a){var b=this;b.filters.clear();if(b.remoteFilter){if(a){return}delete b.totalCount;if(b.buffered){b.pageMap.clear();b.loadPage(1)}else{b.currentPage=1;b.load()}}else{if(b.isFiltered()){b.data=b.snapshot.clone();delete b.snapshot;if(a!==true){b.fireEvent("datachanged",b);b.fireEvent("refresh",b)}}}},isFiltered:function(){var a=this.snapshot;return !!a&&a!==this.data},filterBy:function(b,a){var c=this;c.snapshot=c.snapshot||c.data.clone();c.data=c.queryBy(b,a||c);c.fireEvent("datachanged",c);c.fireEvent("refresh",c)},queryBy:function(b,a){var c=this,d=c.snapshot||c.data;return d.filterBy(b,a||c)},query:function(h,g,i,a,e){var d=this,b=d.createFilterFn(h,g,i,a,e),c=d.queryBy(b);if(!c){c=new Ext.util.MixedCollection()}return c},loadData:function(j,a){var h=this,c=h.model,g=j.length,e=[],d,b;for(d=0;d<g;d++){b=j[d];if(!(b.isModel)){b=Ext.ModelManager.create(b,c)}e.push(b)}h.loadRecords(e,a?h.addRecordsOptions:undefined)},loadRawData:function(e,b){var d=this,a=d.proxy.reader.read(e),c=a.records;if(a.success){d.totalCount=a.total;d.loadRecords(c,b?d.addRecordsOptions:undefined);d.fireEvent("load",d,c,true)}},loadRecords:function(b,c){var h=this,d=0,g=b.length,j,e,a=h.snapshot;if(c){j=c.start;e=c.addRecords}if(!e){delete h.snapshot;h.clearData(true)}else{if(a){a.addAll(b)}}h.data.addAll(b);if(j!==undefined){for(;d<g;d++){b[d].index=j+d;b[d].join(h)}}else{for(;d<g;d++){b[d].join(h)}}h.suspendEvents();if(h.filterOnLoad&&!h.remoteFilter){h.filter()}if(h.sortOnLoad&&!h.remoteSort){h.sort(undefined,undefined,undefined,true)}h.resumeEvents();h.fireEvent("datachanged",h);h.fireEvent("refresh",h)},loadPage:function(c,a){var b=this;b.currentPage=c;a=Ext.apply({page:c,start:(c-1)*b.pageSize,limit:b.pageSize,addRecords:!b.clearOnPageLoad},a);if(b.buffered){return b.loadToPrefetch(a)}b.read(a)},nextPage:function(a){this.loadPage(this.currentPage+1,a)},previousPage:function(a){this.loadPage(this.currentPage-1,a)},clearData:function(d){var c=this,a=c.data.items,b=a.length;while(b--){a[b].unjoin(c)}c.data.clear();if(d!==true||c.clearRemovedOnLoad){c.removed.length=0}},loadToPrefetch:function(l){var h=this,d,b,j=l.start,a=l.start+l.limit-1,e=l.start+(h.viewSize||l.limit)-1,g=h.getPageFromRecordIndex(Math.max(j-h.trailingBufferZone,0)),k=h.getPageFromRecordIndex(a+h.leadingBufferZone),c=function(){if(h.rangeCached(j,e)){h.loading=false;b=h.pageMap.getRange(j,e);h.pageMap.un("pageAdded",c);if(h.hasListeners.guaranteedrange){h.guaranteeRange(j,e,l.callback,l.scope)}else{h.loadRecords(b,{start:j})}h.fireEvent("load",h,b,true);if(l.groupChange){h.fireGroupChange()}}};if(h.fireEvent("beforeload",h,l)!==false){delete h.totalCount;h.loading=true;h.pageMap.on("pageAdded",c);h.on("prefetch",function(){for(d=g+1;d<=k;++d){h.prefetchPage(d,l)}},null,{single:true});h.prefetchPage(g,l)}},prefetch:function(c){var e=this,a=e.pageSize,d,b;if(a){if(e.lastPageSize&&a!=e.lastPageSize){Ext.error.raise("pageSize cannot be dynamically altered")}if(!e.pageMap.pageSize){e.pageMap.pageSize=a}}else{e.pageSize=e.pageMap.pageSize=a=c.limit}e.lastPageSize=a;if(!c.page){c.page=e.getPageFromRecordIndex(c.start);c.start=(c.page-1)*a;c.limit=Math.ceil(c.limit/a)*a}if(!e.pageRequests[c.page]){c=Ext.apply({action:"read",filters:e.filters.items,sorters:e.sorters.items,groupers:e.groupers.items,generation:e.pageMap.generation},c);b=new Ext.data.Operation(c);if(e.fireEvent("beforeprefetch",e,b)!==false){e.loading=true;d=e.proxy;e.pageRequests[c.page]=d.read(b,e.onProxyPrefetch,e);if(d.isSynchronous){delete e.pageRequests[c.page]}}}return e},cancelAllPrefetches:function(){var c=this,a=c.pageRequests,b,d;if(c.pageMap.events.pageadded){c.pageMap.events.pageadded.clearListeners()}for(d in a){if(a.hasOwnProperty(d)){b=a[d];delete a[d];delete b.callback}}},prefetchPage:function(e,b){var d=this,a=d.pageSize||d.defaultPageSize,g=(e-1)*d.pageSize,c=d.totalCount;if(c!==undefined&&d.getCount()===c){return}d.prefetch(Ext.applyIf({page:e,start:g,limit:a},b))},onProxyPrefetch:function(b){var d=this,c=b.getResultSet(),a=b.getRecords(),g=b.wasSuccessful(),e=b.page;if(b.generation===d.pageMap.generation){if(c){d.totalCount=c.total;d.fireEvent("totalcountchange",d.totalCount)}if(e!==undefined){delete d.pageRequests[e]}if(g){d.cachePage(a,b.page)}d.loading=false;d.fireEvent("prefetch",d,a,g,b);Ext.callback(b.callback,b.scope||d,[a,b,g])}},cachePage:function(a,c){var b=this;if(!Ext.isDefined(b.totalCount)){b.totalCount=a.length;b.fireEvent("totalcountchange",b.totalCount)}b.pageMap.addPage(c,a)},rangeCached:function(b,a){return this.pageMap&&this.pageMap.hasRange(b,a)},pageCached:function(a){return this.pageMap&&this.pageMap.hasPage(a)},rangeSatisfied:function(b,a){return this.rangeCached(b,a)},getPageFromRecordIndex:function(a){return Math.floor(a/this.pageSize)+1},onGuaranteedRange:function(d){var e=this,b=e.getTotalCount(),g=d.prefetchStart,a=((b-1)<d.prefetchEnd)?b-1:d.prefetchEnd,c;a=Math.max(0,a);c=e.pageMap.getRange(g,a);e.fireEvent("guaranteedrange",c,g,a);if(d.cb){d.cb.call(d.scope||e,c,g,a)}},prefetchRange:function(g,b){var d=this,c,a,e;if(!d.rangeCached(g,b)){c=d.getPageFromRecordIndex(g);a=d.getPageFromRecordIndex(b);d.pageMap.maxSize=d.purgePageCount?(a-c+1)+d.purgePageCount:0;for(e=c;e<=a;e++){if(!d.pageCached(e)){d.prefetchPage(e)}}}},guaranteeRange:function(i,c,a,g){c=(c>this.totalCount)?this.totalCount-1:c;var h=this,e=h.lastRequestStart,d={prefetchStart:i,prefetchEnd:c,cb:a,scope:g},b;h.lastRequestStart=i;if(h.rangeCached(i,c)){if(i<e){i=Math.max(i-h.leadingBufferZone,0);c=Math.min(c+h.trailingBufferZone,h.totalCount-1)}else{i=Math.max(Math.min(i-h.trailingBufferZone,h.totalCount-h.pageSize),0);c=Math.min(c+h.leadingBufferZone,h.totalCount-1)}if(!h.rangeCached(i,c)){h.prefetchRange(i,c)}h.onGuaranteedRange(d)}else{h.fireEvent("cachemiss",h,i,c);i=Math.min(Math.max(Math.floor(i-((h.leadingBufferZone+h.trailingBufferZone)/2)),0),h.totalCount-h.pageSize);c=Math.min(Math.max(Math.ceil(c+((h.leadingBufferZone+h.trailingBufferZone)/2)),0),h.totalCount-1);b=function(k,j){if(h.rangeCached(d.prefetchStart,d.prefetchEnd)){h.fireEvent("cachefilled",h,i,c);h.pageMap.un("pageAdded",b);h.onGuaranteedRange(d)}};h.pageMap.on("pageAdded",b);h.prefetchRange(d.prefetchStart,d.prefetchEnd);h.prefetchRange(i,c)}},sort:function(){var b=this,a=b.pageMap;if(b.buffered){if(b.remoteSort){a.clear();b.callParent(arguments)}else{b.callParent(arguments)}}else{b.callParent(arguments)}},doSort:function(b){var e=this,a,d,c;if(e.remoteSort){if(e.buffered){e.pageMap.clear();e.loadPage(1)}else{e.load()}}else{e.data.sortBy(b);if(!e.buffered){a=e.getRange();d=a.length;for(c=0;c<d;c++){a[c].index=c}}e.fireEvent("datachanged",e);e.fireEvent("refresh",e)}},find:function(e,d,h,g,a,c){var b=this.createFilterFn(e,d,g,a,c);return b?this.data.findIndexBy(b,null,h):-1},findRecord:function(){var b=this,a=b.find.apply(b,arguments);return a!==-1?b.getAt(a):null},createFilterFn:function(d,c,e,a,b){if(Ext.isEmpty(c)){return false}c=this.data.createValueMatcher(c,e,a,b);return function(g){return c.test(g.data[d])}},findExact:function(b,a,c){return this.data.findIndexBy(function(d){return d.isEqual(d.get(b),a)},this,c)},findBy:function(b,a,c){return this.data.findIndexBy(b,a,c)},collect:function(b,a,c){var d=this,e=(c===true&&d.snapshot)?d.snapshot:d.data;return e.collect(b,"data",a)},getCount:function(){return this.data.length||0},getTotalCount:function(){return this.totalCount||0},getAt:function(a){return this.data.getAt(a)},getRange:function(b,a){return this.data.getRange(b,a)},getById:function(a){return(this.snapshot||this.data).findBy(function(b){return b.getId()===a})},indexOf:function(a){return this.data.indexOf(a)},indexOfTotal:function(a){var b=a.index;if(b||b===0){return b}return this.indexOf(a)},indexOfId:function(a){return this.indexOf(this.getById(a))},removeAll:function(a){var b=this;b.clearData();if(b.snapshot){b.snapshot.clear()}if(b.pageMap){b.pageMap.clear()}if(a!==true){b.fireEvent("clear",b)}},first:function(a){var b=this;if(a&&b.isGrouped()){return b.aggregate(function(c){return c.length?c[0]:undefined},b,true)}else{return b.data.first()}},last:function(a){var b=this;if(a&&b.isGrouped()){return b.aggregate(function(d){var c=d.length;return c?d[c-1]:undefined},b,true)}else{return b.data.last()}},sum:function(c,a){var b=this;if(a&&b.isGrouped()){return b.aggregate(b.getSum,b,true,[c])}else{return b.getSum(b.data.items,c)}},getSum:function(b,e){var d=0,c=0,a=b.length;for(;c<a;++c){d+=b[c].get(e)}return d},count:function(a){var b=this;if(a&&b.isGrouped()){return b.aggregate(function(c){return c.length},b,true)}else{return b.getCount()}},min:function(c,a){var b=this;if(a&&b.isGrouped()){return b.aggregate(b.getMin,b,true,[c])}else{return b.getMin(b.data.items,c)}},getMin:function(b,g){var d=1,a=b.length,e,c;if(a>0){c=b[0].get(g)}for(;d<a;++d){e=b[d].get(g);if(e<c){c=e}}return c},max:function(c,a){var b=this;if(a&&b.isGrouped()){return b.aggregate(b.getMax,b,true,[c])}else{return b.getMax(b.data.items,c)}},getMax:function(c,g){var d=1,b=c.length,e,a;if(b>0){a=c[0].get(g)}for(;d<b;++d){e=c[d].get(g);if(e>a){a=e}}return a},average:function(c,a){var b=this;if(a&&b.isGrouped()){return b.aggregate(b.getAverage,b,true,[c])}else{return b.getAverage(b.data.items,c)}},getAverage:function(b,e){var c=0,a=b.length,d=0;if(b.length>0){for(;c<a;++c){d+=b[c].get(e)}return d/a}return 0},aggregate:function(h,k,e,g){g=g||[];if(e&&this.isGrouped()){var a=this.getGroups(),c=0,d=a.length,b={},j;for(;c<d;++c){j=a[c];b[j.name]=h.apply(k||this,[j.children].concat(g))}return b}else{return h.apply(k||this,[this.data.items].concat(g))}},commitChanges:function(){var c=this,d=c.getModifiedRecords(),a=d.length,b=0;for(;b<a;b++){d[b].commit()}c.removed.length=0},filterNewOnly:function(a){return a.phantom===true},getRejectRecords:function(){return Ext.Array.push(this.data.filterBy(this.filterNewOnly).items,this.getUpdatedRecords())},rejectChanges:function(){var c=this,d=c.getRejectRecords(),a=d.length,b=0,e;for(;b<a;b++){e=d[b];e.reject();if(e.phantom){c.remove(e)}}d=c.removed;a=d.length;for(b=0;b<a;b++){e=d[b];c.insert(e.removedFrom||0,e);e.reject()}c.removed.length=0}},function(){Ext.regStore("ext-empty-store",{fields:[],proxy:"memory"});this.prototype.PageMap=new Ext.Class({extend:"Ext.util.LruCache",clear:function(a){this.generation=(this.generation||0)+1;this.callParent(arguments)},getPageFromRecordIndex:this.prototype.getPageFromRecordIndex,addPage:function(b,a){this.add(b,a);this.fireEvent("pageAdded",b,a)},getPage:function(a){return this.get(a)},hasRange:function(d,b){var c=this.getPageFromRecordIndex(d),a=this.getPageFromRecordIndex(b);for(;c<=a;c++){if(!this.hasPage(c)){return false}}return true},hasPage:function(a){return !!this.get(a)},getRange:function(a,b){if(!this.hasRange(a,b)){Ext.Error.raise("PageMap asked for range which it does not have")}var k=this,g=k.getPageFromRecordIndex(a),n=k.getPageFromRecordIndex(b),c=(g-1)*k.pageSize,o=(n*k.pageSize)-1,j=g,p=[],m,h,l,d=0,e;for(;j<=n;j++){if(j==g){m=a-c;l=true}else{m=0;l=false}if(j==n){h=k.pageSize-(o-b);l=true}if(l){Ext.Array.push(p,Ext.Array.slice(k.getPage(j),m,h))}else{Ext.Array.push(p,k.getPage(j))}}for(e=p.length;d<e;d++){p[d].index=a++}return p}})});Ext.define("Ext.data.reader.Array",{extend:"Ext.data.reader.Json",alternateClassName:"Ext.data.ArrayReader",alias:"reader.array",totalProperty:undefined,successProperty:undefined,createFieldAccessExpression:function(e,c,b){var d=(e.mapping==null)?e.originalIndex:e.mapping,a;if(typeof d==="function"){a=c+".mapping("+b+", this)"}else{if(isNaN(d)){d='"'+d+'"'}a=b+"["+d+"]"}return a}});Ext.define("Ext.data.ArrayStore",{extend:"Ext.data.Store",alias:"store.array",requires:["Ext.data.proxy.Memory","Ext.data.reader.Array"],constructor:function(a){a=Ext.apply({proxy:{type:"memory",reader:"array"}},a);this.callParent([a])},loadData:function(e,a){if(this.expandData===true){var d=[],b=0,c=e.length;for(;b<c;b++){d[d.length]=[e[b]]}e=d}this.callParent([e,a])}},function(){Ext.data.SimpleStore=Ext.data.ArrayStore});Ext.define("Ext.data.Batch",{mixins:{observable:"Ext.util.Observable"},autoStart:false,pauseOnException:false,current:-1,total:0,isRunning:false,isComplete:false,hasException:false,constructor:function(a){var b=this;b.mixins.observable.constructor.call(b,a);b.operations=[];b.exceptions=[]},add:function(a){this.total++;a.setBatch(this);this.operations.push(a);return this},start:function(a){var b=this;if(b.isRunning){return b}b.exceptions.length=0;b.hasException=false;b.isRunning=true;return b.runOperation(Ext.isDefined(a)?a:b.current+1)},retry:function(){return this.start(this.current)},runNextOperation:function(){return this.runOperation(this.current+1)},pause:function(){this.isRunning=false;return this},runOperation:function(d){var e=this,c=e.operations,b=c[d],a;if(b===undefined){e.isRunning=false;e.isComplete=true;e.fireEvent("complete",e,c[c.length-1])}else{e.current=d;a=function(g){var h=g.hasException();if(h){e.hasException=true;e.exceptions.push(g);e.fireEvent("exception",e,g)}if(h&&e.pauseOnException){e.pause()}else{g.setCompleted();e.fireEvent("operationcomplete",e,g);e.runNextOperation()}};b.setStarted();e.proxy[b.action](b,a,e)}return e}});Ext.define("Ext.data.BufferStore",{extend:"Ext.data.Store",alias:"store.buffer",sortOnLoad:false,filterOnLoad:false,constructor:function(){Ext.Error.raise("The BufferStore class has been deprecated. Instead, specify the buffered config option on Ext.data.Store")}});Ext.define("Ext.direct.Manager",{singleton:true,mixins:{observable:"Ext.util.Observable"},requires:["Ext.util.MixedCollection"],exceptions:{TRANSPORT:"xhr",PARSE:"parse",LOGIN:"login",SERVER:"exception"},constructor:function(){var a=this;a.addEvents("event","exception");a.transactions=new Ext.util.MixedCollection();a.providers=new Ext.util.MixedCollection();a.mixins.observable.constructor.call(a)},addProvider:function(e){var d=this,b=arguments,c=0,a;if(b.length>1){for(a=b.length;c<a;++c){d.addProvider(b[c])}return}if(!e.isProvider){e=Ext.create("direct."+e.type+"provider",e)}d.providers.add(e);e.on("data",d.onProviderData,d);if(!e.isConnected()){e.connect()}return e},getProvider:function(a){return a.isProvider?a:this.providers.get(a)},removeProvider:function(c){var b=this,a=b.providers;c=c.isProvider?c:a.get(c);if(c){c.un("data",b.onProviderData,b);a.remove(c);return c}return null},addTransaction:function(a){this.transactions.add(a);return a},removeTransaction:function(a){a=this.getTransaction(a);this.transactions.remove(a);return a},getTransaction:function(a){return Ext.isObject(a)?a:this.transactions.get(a)},onProviderData:function(e,d){var c=this,b=0,a;if(Ext.isArray(d)){for(a=d.length;b<a;++b){c.onProviderData(e,d[b])}return}if(d.name&&d.name!="event"&&d.name!="exception"){c.fireEvent(d.name,d)}else{if(d.status===false){c.fireEvent("exception",d)}}c.fireEvent("event",d,e)},parseMethod:function(c){if(Ext.isString(c)){var e=c.split("."),b=0,a=e.length,d=window;while(d&&b<a){d=d[e[b]];++b}c=Ext.isFunction(d)?d:null}return c||null}},function(){Ext.Direct=Ext.direct.Manager});Ext.define("Ext.data.proxy.Direct",{extend:"Ext.data.proxy.Server",alternateClassName:"Ext.data.DirectProxy",alias:"proxy.direct",requires:["Ext.direct.Manager"],paramOrder:undefined,paramsAsHash:true,directFn:undefined,paramOrderRe:/[\s,|]/,constructor:function(b){var e=this,a,d,c;e.callParent(arguments);a=e.paramOrder;if(Ext.isString(a)){e.paramOrder=a.split(e.paramOrderRe)}d=e.directFn;if(d){e.directFn=Ext.direct.Manager.parseMethod(d)}c=e.api;for(d in c){if(c.hasOwnProperty(d)){c[d]=Ext.direct.Manager.parseMethod(c[d])}}},doRequest:function(d,j,k){var h=this,b=h.getWriter(),e=h.buildRequest(d,j,k),i=h.api[e.action]||h.directFn,c=e.params,g=[],a;if(d.allowWrite()){e=b.write(e)}if(d.action=="read"){a=i.directCfg.method;g=a.getArgs(c,h.paramOrder,h.paramsAsHash)}else{g.push(e.jsonData)}Ext.apply(e,{args:g,directFn:i});g.push(h.createRequestCallback(e,d,j,k),h);i.apply(window,g)},applyEncoding:function(a){return a},createRequestCallback:function(d,a,e,b){var c=this;return function(h,g){c.processResponse(g.status,a,d,g,e,b)}},extractResponseData:function(a){return Ext.isDefined(a.result)?a.result:a.data},setException:function(b,a){b.setException(a.message)},buildUrl:function(){return""}});Ext.define("Ext.data.DirectStore",{extend:"Ext.data.Store",alias:"store.direct",requires:["Ext.data.proxy.Direct"],constructor:function(a){a=Ext.apply({},a);if(!a.proxy){var b={type:"direct",reader:{type:"json"}};Ext.copyTo(b,a,"paramOrder,paramsAsHash,directFn,api,simpleSortMode");Ext.copyTo(b.reader,a,"totalProperty,root,idProperty");a.proxy=b}this.callParent([a])}});Ext.define("Ext.data.JsonP",{singleton:true,requestCount:0,requests:{},timeout:30000,disableCaching:true,disableCachingParam:"_dc",callbackKey:"callback",request:function(n){n=Ext.apply({},n);var j=this,d=Ext.isDefined(n.disableCaching)?n.disableCaching:j.disableCaching,h=n.disableCachingParam||j.disableCachingParam,c=++j.requestCount,l=n.callbackName||"callback"+c,i=n.callbackKey||j.callbackKey,m=Ext.isDefined(n.timeout)?n.timeout:j.timeout,e=Ext.apply({},n.params),b=n.url,a=Ext.name,g,k;e[i]=a+".data.JsonP."+l;if(d){e[h]=new Date().getTime()}k=j.createScript(b,e,n);j.requests[c]=g={url:b,params:e,script:k,id:c,scope:n.scope,success:n.success,failure:n.failure,callback:n.callback,callbackKey:i,callbackName:l};if(m>0){g.timeout=setTimeout(Ext.bind(j.handleTimeout,j,[g]),m)}j.setupErrorHandling(g);j[l]=Ext.bind(j.handleResponse,j,[g],true);j.loadScript(g);return g},abort:function(c){var b=this,d=b.requests,a;if(c){if(!c.id){c=d[c]}b.handleAbort(c)}else{for(a in d){if(d.hasOwnProperty(a)){b.abort(d[a])}}}},setupErrorHandling:function(a){a.script.onerror=Ext.bind(this.handleError,this,[a])},handleAbort:function(a){a.errorType="abort";this.handleResponse(null,a)},handleError:function(a){a.errorType="error";this.handleResponse(null,a)},cleanupErrorHandling:function(a){a.script.onerror=null},handleTimeout:function(a){a.errorType="timeout";this.handleResponse(null,a)},handleResponse:function(a,b){var c=true;if(b.timeout){clearTimeout(b.timeout)}delete this[b.callbackName];delete this.requests[b.id];this.cleanupErrorHandling(b);Ext.fly(b.script).remove();if(b.errorType){c=false;Ext.callback(b.failure,b.scope,[b.errorType])}else{Ext.callback(b.success,b.scope,[a])}Ext.callback(b.callback,b.scope,[c,a,b.errorType])},createScript:function(c,d,b){var a=document.createElement("script");a.setAttribute("src",Ext.urlAppend(c,Ext.Object.toQueryString(d)));a.setAttribute("async",true);a.setAttribute("type","text/javascript");return a},loadScript:function(a){Ext.getHead().appendChild(a.script)}});Ext.define("Ext.data.proxy.JsonP",{extend:"Ext.data.proxy.Server",alternateClassName:"Ext.data.ScriptTagProxy",alias:["proxy.jsonp","proxy.scripttag"],requires:["Ext.data.JsonP"],defaultWriterType:"base",callbackKey:"callback",recordParam:"records",autoAppendParams:true,constructor:function(){this.addEvents("exception");this.callParent(arguments)},doRequest:function(a,h,b){var d=this,e=d.getWriter(),c=d.buildRequest(a),g=c.params;if(a.allowWrite()){c=e.write(c)}Ext.apply(c,{callbackKey:d.callbackKey,timeout:d.timeout,scope:d,disableCaching:false,callback:d.createRequestCallback(c,a,h,b)});if(d.autoAppendParams){c.params={}}c.jsonp=Ext.data.JsonP.request(c);c.params=g;a.setStarted();d.lastRequest=c;return c},createRequestCallback:function(d,a,e,b){var c=this;return function(i,g,h){delete c.lastRequest;c.processResponse(i,a,d,g,e,b)}},setException:function(b,a){b.setException(b.request.jsonp.errorType)},buildUrl:function(h){var g=this,b=g.callParent(arguments),j=Ext.apply({},h.params),e=j.filters,a,d,c;delete j.filters;if(g.autoAppendParams){b=Ext.urlAppend(b,Ext.Object.toQueryString(j))}if(e&&e.length){for(c=0;c<e.length;c++){d=e[c];if(d.value){b=Ext.urlAppend(b,d.property+"="+d.value)}}}a=h.records;if(Ext.isArray(a)&&a.length>0){b=Ext.urlAppend(b,Ext.String.format("{0}={1}",g.recordParam,g.encodeRecords(a)))}return b},destroy:function(){this.abort();this.callParent(arguments)},abort:function(){var a=this.lastRequest;if(a){Ext.data.JsonP.abort(a.jsonp)}},encodeRecords:function(b){var d="",c=0,a=b.length;for(;c<a;c++){d+=Ext.Object.toQueryString(b[c].getData())}return d}});Ext.define("Ext.data.JsonPStore",{extend:"Ext.data.Store",alias:"store.jsonp",requires:["Ext.data.proxy.JsonP","Ext.data.reader.Json"],constructor:function(a){a=Ext.apply({proxy:{type:"jsonp",reader:"json"}},a);this.callParent([a])}});Ext.define("Ext.data.JsonStore",{extend:"Ext.data.Store",alias:"store.json",requires:["Ext.data.proxy.Ajax","Ext.data.reader.Json","Ext.data.writer.Json"],constructor:function(a){a=Ext.apply({proxy:{type:"ajax",reader:"json",writer:"json"}},a);this.callParent([a])}});Ext.define("Ext.data.NodeInterface",{requires:["Ext.data.Field"],statics:{decorate:function(b){var a,c;if(typeof b=="string"){b=Ext.ModelManager.getModel(b)}else{if(b.isModel){b=Ext.ModelManager.getModel(b.modelName)}}if(b.prototype.isNode){return}a=b.prototype.idProperty;idField=b.prototype.fields.get(a);c=b.prototype.fields.get(a).type.type;b.override(this.getPrototypeBody());this.applyFields(b,[{name:"parentId",type:c,defaultValue:null,useNull:idField.useNull},{name:"index",type:"int",defaultValue:null,persist:false},{name:"depth",type:"int",defaultValue:0,persist:false},{name:"expanded",type:"bool",defaultValue:false,persist:false},{name:"expandable",type:"bool",defaultValue:true,persist:false},{name:"checked",type:"auto",defaultValue:null,persist:false},{name:"leaf",type:"bool",defaultValue:false},{name:"cls",type:"string",defaultValue:null,persist:false},{name:"iconCls",type:"string",defaultValue:null,persist:false},{name:"icon",type:"string",defaultValue:null,persist:false},{name:"root",type:"boolean",defaultValue:false,persist:false},{name:"isLast",type:"boolean",defaultValue:false,persist:false},{name:"isFirst",type:"boolean",defaultValue:false,persist:false},{name:"allowDrop",type:"boolean",defaultValue:true,persist:false},{name:"allowDrag",type:"boolean",defaultValue:true,persist:false},{name:"loaded",type:"boolean",defaultValue:false,persist:false},{name:"loading",type:"boolean",defaultValue:false,persist:false},{name:"href",type:"string",defaultValue:null,persist:false},{name:"hrefTarget",type:"string",defaultValue:null,persist:false},{name:"qtip",type:"string",defaultValue:null,persist:false},{name:"qtitle",type:"string",defaultValue:null,persist:false},{name:"children",type:"auto",defaultValue:null,persist:false}])},applyFields:function(c,b){var h=c.prototype,a=h.fields,g=a.keys,e=b.length,j,d;for(d=0;d<e;d++){j=b[d];if(!Ext.Array.contains(g,j.name)){a.add(new Ext.data.Field(j))}}},getPrototypeBody:function(){return{isNode:true,constructor:function(){var a=this;this.callParent(arguments);Ext.applyIf(a,{firstChild:null,lastChild:null,parentNode:null,previousSibling:null,nextSibling:null,childNodes:[]});a.enableBubble(["append","remove","move","insert","beforeappend","beforeremove","beforemove","beforeinsert","expand","collapse","beforeexpand","beforecollapse","sort"]);return a},createNode:function(a){if(Ext.isObject(a)&&!a.isModel){a=Ext.ModelManager.create(a,this.modelName)}if(!a.childNodes){Ext.applyIf(a,{firstChild:null,lastChild:null,parentNode:null,previousSibling:null,nextSibling:null,childNodes:[]})}return a},isLeaf:function(){return this.get("leaf")===true},setFirstChild:function(a){this.firstChild=a},setLastChild:function(a){this.lastChild=a},updateInfo:function(g){var m=this,b=m.isRoot(),k=m.parentNode,d=(!k||b?true:k.firstChild===m),j=(!k||b?true:k.lastChild===m),h=0,n=m,a=m.childNodes,l=a.length,e=0,c=m.phantom;while(n.parentNode){++h;n=n.parentNode}m.beginEdit();m.set({isFirst:d,isLast:j,depth:h,index:k?k.indexOf(m):0,parentId:k?k.getId():null});m.endEdit(true);if(g){m.commit();m.phantom=c}for(e=0;e<l;e++){a[e].updateInfo(g)}},isLast:function(){return this.get("isLast")},isFirst:function(){return this.get("isFirst")},hasChildNodes:function(){return !this.isLeaf()&&this.childNodes.length>0},isExpandable:function(){var a=this;if(a.get("expandable")){return !(a.isLeaf()||(a.isLoaded()&&!a.hasChildNodes()))}return false},triggerUIUpdate:function(){this.afterEdit([])},appendChild:function(b,k,c){var h=this,d,g,e,j,a;if(Ext.isArray(b)){h.callStore("suspendAutoSync");for(d=0,g=b.length-1;d<g;d++){h.appendChild(b[d])}h.callStore("resumeAutoSync");h.appendChild(b[g])}else{b=h.createNode(b);if(k!==true&&(!h.hasListeners.beforeappend||h.fireEvent("beforeappend",h,b)===false)){return false}e=h.childNodes.length;j=b.parentNode;if(j){if(k!==true&&(!h.hasListeners.beforeremove||b.fireEvent("beforemove",b,j,h,e)===false)){return false}j.removeChild(b,false,false,true)}e=h.childNodes.length;if(e===0){h.setFirstChild(b)}h.childNodes.push(b);b.parentNode=h;b.nextSibling=null;h.setLastChild(b);a=h.childNodes[e-1];if(a){b.previousSibling=a;a.nextSibling=b;a.updateInfo(c)}else{b.previousSibling=null}b.updateInfo(c);if(!h.isLoaded()){h.set("loaded",true)}else{if(h.childNodes.length===1){h.triggerUIUpdate()}}if(!b.isLeaf()&&b.phantom){b.set("loaded",true)}if(k!==true){h.fireEvent("append",h,b,e);if(j){b.fireEvent("move",b,j,h,e)}}return b}},getBubbleTarget:function(){return this.parentNode},removeChild:function(j,e,g,b){var h=this,c=h.indexOf(j),d,a;if(c==-1||(g!==true&&(!h.hasListeners.beforeremove||h.fireEvent("beforeremove",h,j,!!b)===false))){return false}Ext.Array.erase(h.childNodes,c,1);if(h.firstChild==j){h.setFirstChild(j.nextSibling)}if(h.lastChild==j){h.setLastChild(j.previousSibling)}if(j.previousSibling){j.previousSibling.nextSibling=j.nextSibling}if(j.nextSibling){j.nextSibling.previousSibling=j.previousSibling}for(d=c>0?c-1:0,a=h.childNodes.length;d<a;d++){h.childNodes[d].updateInfo()}if(!h.childNodes.length){h.triggerUIUpdate()}if(g!==true){if(h.hasListeners.remove){h.fireEvent("remove",h,j,!!b)}}if(e){j.destroy(true)}else{j.clear()}return j},copy:function(d,c){var g=this,b=g.callOverridden(arguments),a=g.childNodes?g.childNodes.length:0,e;if(c){for(e=0;e<a;e++){b.appendChild(g.childNodes[e].copy(true))}}return b},clear:function(a){var b=this;b.parentNode=b.previousSibling=b.nextSibling=null;if(a){b.firstChild=b.lastChild=null}},destroy:function(b){var d=this,c=d.destroyOptions,a=d.childNodes,e=a.length,g;if(b===true){d.clear(true);for(g=0;g<e;g++){a[g].destroy(true)}d.childNodes=null;delete d.destroyOptions;d.callOverridden([c])}else{d.destroyOptions=b;d.remove(true)}},insertBefore:function(b,g,l){var h=this,e=h.indexOf(g),j=b.parentNode,k=e,c,a,d;if(!g){return h.appendChild(b)}if(b==g){return false}b=h.createNode(b);if(l!==true&&(!h.hasListeners.beforeinsert||h.fireEvent("beforeinsert",h,b,g)===false)){return false}if(j==h&&h.indexOf(b)<e){k--}if(j){if(l!==true&&(!h.hasListeners.beforeremove||b.fireEvent("beforemove",b,j,h,e,g)===false)){return false}j.removeChild(b,false,false,true)}if(k===0){h.setFirstChild(b)}Ext.Array.splice(h.childNodes,k,0,b);b.parentNode=h;b.nextSibling=g;g.previousSibling=b;a=h.childNodes[k-1];if(a){b.previousSibling=a;a.nextSibling=b}else{b.previousSibling=null}for(d=k>0?k-1:0,c=h.childNodes.length;d<c;d++){h.childNodes[d].updateInfo()}if(!h.isLoaded()){h.set("loaded",true)}else{if(h.childNodes.length===1){h.triggerUIUpdate()}}if(!b.isLeaf()&&b.phantom){b.set("loaded",true)}if(l!==true){if(h.hasListeners.insert){h.fireEvent("insert",h,b,g)}if(j&&h.hasListeners.move){b.fireEvent("move",b,j,h,k,g)}}return b},insertChild:function(a,c){var b=this.childNodes[a];if(b){return this.insertBefore(c,b)}else{return this.appendChild(c)}},remove:function(b,c){var a=this.parentNode;if(a){a.removeChild(this,b,c)}return this},removeAll:function(a,b){var d=this.childNodes,c;while((c=d[0])){this.removeChild(c,a,b)}return this},getChildAt:function(a){return this.childNodes[a]},replaceChild:function(a,d,c){var b=d?d.nextSibling:null;this.removeChild(d,false,c);this.insertBefore(a,b,c);return d},indexOf:function(a){return Ext.Array.indexOf(this.childNodes,a)},indexOfId:function(d){var c=this.childNodes,a=c.length,b=0;for(;b<a;++b){if(c[b].getId()===d){return b}}return -1},getPath:function(d,c){d=d||this.idProperty;c=c||"/";var b=[this.get(d)],a=this.parentNode;while(a){b.unshift(a.get(d));a=a.parentNode}return c+b.join(c)},getDepth:function(){return this.get("depth")},bubble:function(c,b,a){var d=this;while(d){if(c.apply(b||d,a||[d])===false){break}d=d.parentNode}},cascade:function(){if(Ext.isDefined(Ext.global.console)){Ext.global.console.warn("Ext.data.Node: cascade has been deprecated. Please use cascadeBy instead.")}return this.cascadeBy.apply(this,arguments)},cascadeBy:function(d,c,a){if(d.apply(c||this,a||[this])!==false){var g=this.childNodes,e=g.length,b;for(b=0;b<e;b++){g[b].cascadeBy(d,c,a)}}},eachChild:function(d,c,a){var g=this.childNodes,e=g.length,b;for(b=0;b<e;b++){if(d.apply(c||this,a||[g[b]])===false){break}}},findChild:function(b,c,a){return this.findChildBy(function(){return this.get(b)==c},null,a)},findChildBy:function(h,g,b){var e=this.childNodes,a=e.length,d=0,j,c;for(;d<a;d++){j=e[d];if(h.call(g||j,j)===true){return j}else{if(b){c=j.findChildBy(h,g,b);if(c!==null){return c}}}}return null},contains:function(a){return a.isAncestor(this)},isAncestor:function(a){var b=this.parentNode;while(b){if(b==a){return true}b=b.parentNode}return false},sort:function(g,b,a){var d=this.childNodes,e=d.length,c,h;if(e>0){Ext.Array.sort(d,g);for(c=0;c<e;c++){h=d[c];h.previousSibling=d[c-1];h.nextSibling=d[c+1];if(c===0){this.setFirstChild(h)}if(c==e-1){this.setLastChild(h)}h.updateInfo();if(b&&!h.isLeaf()){h.sort(g,true,true)}}if(a!==true){this.fireEvent("sort",this,d)}}},isExpanded:function(){return this.get("expanded")},isLoaded:function(){return this.get("loaded")},isLoading:function(){return this.get("loading")},isRoot:function(){return !this.parentNode},isVisible:function(){var a=this.parentNode;while(a){if(!a.isExpanded()){return false}a=a.parentNode}return true},expand:function(a,d,b){var c=this;if(!c.isLeaf()){if(c.isLoading()){c.on("expand",function(){c.expand(a,d,b)},c,{single:true})}else{if(!c.isExpanded()){c.fireEvent("beforeexpand",c,function(){c.set("expanded",true);if(c.hasListeners.expand){c.fireEvent("expand",c,c.childNodes,false)}if(a){c.expandChildren(true,d,b)}else{Ext.callback(d,b||c,[c.childNodes])}},c)}else{if(a){c.expandChildren(true,d,b)}else{Ext.callback(d,b||c,[c.childNodes])}}}}else{Ext.callback(d,b||c)}},expandChildren:function(d,j,k){var h=this,e=0,a=h.childNodes,g=a.length,c,b=0;for(;e<g;++e){c=a[e];if(!c.isLeaf()){b++;a[e].expand(d,function(){b--;if(j&&!b){Ext.callback(j,k||h,[h.childNodes])}})}}if(!b&&j){Ext.callback(j,k||h,[h.childNodes])}},collapse:function(a,d,b){var c=this;if(!c.isLeaf()){if(!c.collapsing&&c.isExpanded()){c.fireEvent("beforecollapse",c,function(){c.set("expanded",false);if(c.hasListeners.collapse){c.fireEvent("collapse",c,c.childNodes,false)}if(a){c.collapseChildren(true,d,b)}else{Ext.callback(d,b||c,[c.childNodes])}},c)}else{if(a){c.collapseChildren(true,d,b)}else{Ext.callback(d,b||c,[c.childNodes])}}}else{Ext.callback(d,b||c,[c.childNodes])}},collapseChildren:function(d,j,k){var h=this,e=0,b=h.childNodes,g=b.length,c,a=0;for(;e<g;++e){c=b[e];if(!c.isLeaf()){a++;b[e].collapse(d,function(){a--;if(j&&!a){Ext.callback(j,k||h,[h.childNodes])}})}}if(!a&&j){Ext.callback(j,k||h,[h.childNodes])}}}}}});Ext.define("Ext.data.NodeStore",{extend:"Ext.data.Store",alias:"store.node",requires:["Ext.data.NodeInterface"],node:null,recursive:false,rootVisible:false,constructor:function(a){var c=this,b;a=a||{};Ext.apply(c,a);a.proxy={type:"proxy"};c.callParent([a]);b=c.node;if(b){c.node=null;c.setNode(b)}},setNode:function(b){var a=this;if(a.node&&a.node!=b){a.mun(a.node,{expand:a.onNodeExpand,collapse:a.onNodeCollapse,append:a.onNodeAppend,insert:a.onNodeInsert,remove:a.onNodeRemove,sort:a.onNodeSort,scope:a});a.node=null}if(b){Ext.data.NodeInterface.decorate(b.self);a.removeAll();if(a.rootVisible){a.add(b)}else{if(!b.isExpanded()&&a.treeStore.autoLoad!==false){b.expand()}}a.mon(b,{expand:a.onNodeExpand,collapse:a.onNodeCollapse,append:a.onNodeAppend,insert:a.onNodeInsert,remove:a.onNodeRemove,sort:a.onNodeSort,scope:a});a.node=b;if(b.isExpanded()&&b.isLoaded()){a.onNodeExpand(b,b.childNodes,true)}}},onNodeSort:function(b,c){var a=this;if((a.indexOf(b)!==-1||(b===a.node&&!a.rootVisible)&&b.isExpanded())){a.onNodeCollapse(b,c,true);a.onNodeExpand(b,c,true)}},onNodeExpand:function(g,d,c){var j=this,a=j.indexOf(g)+1,h=d?d.length:0,e,b;if(!j.recursive&&g!==j.node){return}if(g!==this.node&&!j.isVisible(g)){return}if(!c&&j.fireEvent("beforeexpand",g,d,a)===false){return}if(h){j.insert(a,d);for(e=0;e<h;e++){b=d[e];if(b.isExpanded()){if(b.isLoaded()){j.onNodeExpand(b,b.childNodes,true)}else{b.set("expanded",false);b.expand()}}}}if(!c){j.fireEvent("expand",g,d)}},onNodeCollapse:function(g,c,b){var j=this,h=c.length,e=j.indexOf(g)+1,d,a;if(!j.recursive&&g!==j.node){return}if(!b&&j.fireEvent("beforecollapse",g,c,e)===false){return}for(d=0;d<h;d++){a=c[d];j.remove(a);if(a.isExpanded()){j.onNodeCollapse(a,a.childNodes,true)}}if(!b){j.fireEvent("collapse",g,c,e)}},onNodeAppend:function(d,g,b){var e=this,a,c;if(e.isVisible(g)){if(b===0){a=d}else{c=g.previousSibling;while(c.isExpanded()&&c.lastChild){c=c.lastChild}a=c}e.insert(e.indexOf(a)+1,g);if(!g.isLeaf()&&g.isExpanded()){if(g.isLoaded()){e.onNodeExpand(g,g.childNodes,true)}else{g.set("expanded",false);g.expand()}}}},onNodeInsert:function(c,e,a){var d=this,b=this.indexOf(a);if(b!=-1&&d.isVisible(e)){d.insert(b,e);if(!e.isLeaf()&&e.isExpanded()){if(e.isLoaded()){d.onNodeExpand(e,e.childNodes,true)}else{e.set("expanded",false);e.expand()}}}},onNodeRemove:function(b,d,a){var c=this;if(c.indexOf(d)!=-1){if(!d.isLeaf()&&d.isExpanded()){c.onNodeCollapse(d,d.childNodes,true)}c.remove(d)}},isVisible:function(b){var a=b.parentNode;while(a){if(a===this.node&&!this.rootVisible&&a.isExpanded()){return true}if(this.indexOf(a)===-1||!a.isExpanded()){return false}a=a.parentNode}return true}});Ext.define("Ext.data.Request",{action:undefined,params:undefined,method:"GET",url:undefined,constructor:function(a){Ext.apply(this,a)}});Ext.define("Ext.data.SequentialIdGenerator",{extend:"Ext.data.IdGenerator",alias:"idgen.sequential",constructor:function(){var a=this;a.callParent(arguments);a.parts=[a.prefix,""]},prefix:"",seed:1,generate:function(){var a=this,b=a.parts;b[1]=a.seed++;return b.join("")}});Ext.define("Ext.data.Tree",{alias:"data.tree",mixins:{observable:"Ext.util.Observable"},root:null,constructor:function(a){var b=this;b.mixins.observable.constructor.call(b);if(a){b.setRootNode(a)}},getRootNode:function(){return this.root},setRootNode:function(b){var a=this;a.root=b;if(a.fireEvent("beforeappend",null,b)!==false){b.set("root",true);b.updateInfo();b.commit();b.on({scope:a,insert:a.onNodeInsert,append:a.onNodeAppend,remove:a.onNodeRemove});a.relayEvents(b,["append","remove","move","insert","beforeappend","beforeremove","beforemove","beforeinsert","expand","collapse","beforeexpand","beforecollapse","sort","rootchange"]);a.nodeHash={};a.registerNode(b);a.fireEvent("append",null,b);a.fireEvent("rootchange",b)}return b},flatten:function(){return Ext.Object.getValues(this.nodeHash)},onNodeInsert:function(a,b){this.registerNode(b,true)},onNodeAppend:function(a,b){this.registerNode(b,true)},onNodeRemove:function(a,b){this.unregisterNode(b,true)},onNodeIdChanged:function(c,d,a){var b=this.nodeHash;b[a]=c;delete b[d||c.internalId]},getNodeById:function(a){return this.nodeHash[a]},registerNode:function(c,a){var b=this;b.nodeHash[c.getId()||c.internalId]=c;c.on("idchanged",b.onNodeIdChanged,b);if(a===true){c.eachChild(function(d){b.registerNode(d,true)})}},unregisterNode:function(b,a){delete this.nodeHash[b.getId()||b.internalId];if(a===true){b.eachChild(function(c){this.unregisterNode(c,true)},this)}},sort:function(b,a){this.getRootNode().sort(b,a)},filter:function(b,a){this.getRootNode().filter(b,a)}});Ext.define("Ext.data.TreeStore",{extend:"Ext.data.AbstractStore",alias:"store.tree",requires:["Ext.util.Sorter","Ext.data.Tree","Ext.data.NodeInterface"],clearOnLoad:true,clearRemovedOnLoad:true,nodeParam:"node",defaultRootId:"root",defaultRootProperty:"children",rootProperty:"children",folderSort:false,constructor:function(c){var e=this,b,a,d;c=Ext.apply({},c);a=c.fields||e.fields;if(!a){c.fields=[{name:"text",type:"string"}];d=c.defaultRootProperty||e.defaultRootProperty;if(d!==e.defaultRootProperty){c.fields.push({name:d,type:"auto",defaultValue:null,persist:false})}}e.callParent([c]);e.tree=new Ext.data.Tree();e.relayEvents(e.tree,["append","remove","move","insert","beforeappend","beforeremove","beforemove","beforeinsert","expand","collapse","beforeexpand","beforecollapse","sort","rootchange"]);e.tree.on({scope:e,remove:e.onNodeRemove,beforeexpand:e.onBeforeNodeExpand,beforecollapse:e.onBeforeNodeCollapse,append:e.onNodeAdded,insert:e.onNodeAdded,sort:e.onNodeSort});e.onBeforeSort();b=e.root;if(b){delete e.root;e.setRootNode(b)}if(Ext.isDefined(e.nodeParameter)){if(Ext.isDefined(Ext.global.console)){Ext.global.console.warn("Ext.data.TreeStore: nodeParameter has been deprecated. Please use nodeParam instead.")}e.nodeParam=e.nodeParameter;delete e.nodeParameter}},setProxy:function(c){var a,b;if(c instanceof Ext.data.proxy.Proxy){b=Ext.isEmpty(c.getReader().root)}else{if(Ext.isString(c)){b=true}else{a=c.reader;b=!(a&&!Ext.isEmpty(a.root))}}c=this.callParent(arguments);if(b){a=c.getReader();a.root=this.defaultRootProperty;a.buildExtractors(true)}},onBeforeSort:function(){if(this.folderSort){this.sort({property:"leaf",direction:"ASC"},"prepend",false)}},onBeforeNodeExpand:function(b,c,a){if(b.isLoaded()){Ext.callback(c,a||b,[b.childNodes])}else{if(b.isLoading()){this.on("load",function(){Ext.callback(c,a||b,[b.childNodes])},this,{single:true})}else{this.read({node:b,callback:function(){Ext.callback(c,a||b,[b.childNodes])}})}}},getNewRecords:function(){return Ext.Array.filter(this.tree.flatten(),this.filterNew)},getUpdatedRecords:function(){return Ext.Array.filter(this.tree.flatten(),this.filterUpdated)},onBeforeNodeCollapse:function(b,c,a){c.call(a||b,b.childNodes)},onNodeRemove:function(b,d,a){var c=this,e=c.removed;if(!d.isReplace&&Ext.Array.indexOf(e,d)==-1){e.push(d)}if(c.autoSync&&!c.autoSyncSuspended&&!a){c.sync()}},onNodeAdded:function(c,e){var d=this,b=d.getProxy(),a=b.getReader(),g=e.raw||e[e.persistenceProperty],h;Ext.Array.remove(d.removed,e);if(!e.isLeaf()){h=a.getRoot(g);if(h){d.fillNode(e,a.extractData(h));delete g[a.root]}}if(d.autoSync&&!d.autoSyncSuspended&&(e.phantom||e.dirty)){d.sync()}},onNodeSort:function(){if(this.autoSync&&!this.autoSyncSuspended){this.sync()}},setRootNode:function(a,e){var d=this,c=d.model,b=c.prototype.idProperty;a=a||{};if(!a.isModel){Ext.applyIf(a,{id:d.defaultRootId,text:"Root",allowDrag:false});if(a[b]===undefined){a[b]=d.defaultRootId}Ext.data.NodeInterface.decorate(c);a=Ext.ModelManager.create(a,c)}else{if(a.isModel&&!a.isNode){Ext.data.NodeInterface.decorate(c)}}d.getProxy().getReader().buildExtractors(true);d.tree.setRootNode(a);if(e!==true&&!a.isLoaded()&&(d.autoLoad===true||a.isExpanded())){d.load({node:a})}return a},getRootNode:function(){return this.tree.getRootNode()},getNodeById:function(a){return this.tree.getNodeById(a)},getById:function(a){return this.getNodeById(a)},load:function(a){a=a||{};a.params=a.params||{};var c=this,b=a.node||c.tree.getRootNode();if(!b){b=c.setRootNode({expanded:true},true)}a.id=b.getId();if(c.clearOnLoad){if(c.clearRemovedOnLoad){c.clearRemoved(b)}c.tree.un("remove",c.onNodeRemove,c);b.removeAll(false);c.tree.on("remove",c.onNodeRemove,c)}Ext.applyIf(a,{node:b});a.params[c.nodeParam]=b?b.getId():"root";if(b){b.set("loading",true)}return c.callParent([a])},clearRemoved:function(b){var k=this,e=k.removed,a=b.getId(),d=e.length,c=d,n={},h=[],m={},j,g,l;if(b===k.getRootNode()){k.removed=[];return}for(;c--;){j=e[c];m[j.getId()]=j}for(c=d;c--;){j=e[c];g=j;while(g&&g.getId()!==a){l=g.get("parentId");g=g.parentNode||k.getNodeById(l)||m[l]}if(g){n[j.getId()]=j}}for(c=0;c<d;c++){j=e[c];if(!n[j.getId()]){h.push(j)}}k.removed=h},fillNode:function(b,c){var h=this,e=c?c.length:0,g=h.sorters,d,k,j=false,a=e&&h.sortOnLoad&&!h.remoteSort&&g&&g.items&&g.items.length,m,l;for(d=1;d<e;d++){m=c[d];l=c[d-1];j=m[m.persistenceProperty].index!=l[l.persistenceProperty].index;if(j){break}}if(a){if(j){h.sorters.insert(0,h.indexSorter)}k=new Ext.util.MixedCollection();k.addAll(c);k.sort(h.sorters.items);c=k.items;h.sorters.remove(h.indexSorter)}else{if(j){Ext.Array.sort(c,h.sortByIndex)}}b.set("loaded",true);for(d=0;d<e;d++){b.appendChild(c[d],undefined,true)}return c},sortByIndex:function(b,a){return b[b.persistenceProperty].index-a[a.persistenceProperty].index},onProxyLoad:function(b){var d=this,e=b.wasSuccessful(),a=b.getRecords(),c=b.node;d.loading=false;c.set("loading",false);if(e){if(!d.clearOnLoad){a=d.cleanRecords(c,a)}a=d.fillNode(c,a)}d.fireEvent("read",d,b.node,a,e);d.fireEvent("load",d,b.node,a,e);Ext.callback(b.callback,b.scope||d,[a,b,e])},onCreateRecords:function(c){this.callParent(arguments);var d=0,b=c.length,a=this.tree,e;for(;d<b;++d){e=c[d];a.onNodeIdChanged(e,null,e.getId())}},cleanRecords:function(g,b){var e={},j=g.childNodes,d=0,a=j.length,c=[],h;for(;d<a;++d){e[j[d].getId()]=true}for(d=0,a=b.length;d<a;++d){h=b[d];if(!e[h.getId()]){c.push(h)}}return c},removeAll:function(){var a=this.getRootNode();if(a){a.destroy(true)}this.fireEvent("clear",this)},doSort:function(a){var b=this;if(b.remoteSort){b.load()}else{b.tree.sort(a,true);b.fireEvent("datachanged",b);b.fireEvent("refresh",b)}b.fireEvent("sort",b)}},function(){var a=this.prototype;a.indexSorter=new Ext.util.Sorter({sorterFn:a.sortByIndex})});Ext.define("Ext.data.UuidGenerator",(function(){var h=Math.pow(2,14),g=Math.pow(2,16),e=Math.pow(2,28),c=Math.pow(2,32);function a(k,j){var i=k.toString(16);if(i.length>j){i=i.substring(i.length-j)}else{if(i.length<j){i=Ext.String.leftPad(i,j,"0")}}return i}function d(k,j){var i=Math.random()*(j-k+1);return Math.floor(i)+k}function b(j){if(typeof(j)=="number"){var i=Math.floor(j/c);return{lo:Math.floor(j-i*c),hi:i}}return j}return{extend:"Ext.data.IdGenerator",alias:"idgen.uuid",id:"uuid",version:4,constructor:function(){var i=this;i.callParent(arguments);i.parts=[];i.init()},generate:function(){var j=this,k=j.parts,i=j.timestamp;k[0]=a(i.lo,8);k[1]=a(i.hi&65535,4);k[2]=a(((i.hi>>>16)&4095)|(j.version<<12),4);k[3]=a(128|((j.clockSeq>>>8)&63),2)+a(j.clockSeq&255,2);k[4]=a(j.salt.hi,4)+a(j.salt.lo,8);if(j.version==4){j.init()}else{++i.lo;if(i.lo>=c){i.lo=0;++i.hi}}return k.join("-").toLowerCase()},getRecId:function(i){return i.getId()},init:function(){var j=this,i,k;if(j.version==4){j.clockSeq=d(0,h-1);i=j.salt||(j.salt={});k=j.timestamp||(j.timestamp={});i.lo=d(0,c-1);i.hi=d(0,g-1);k.lo=d(0,c-1);k.hi=d(0,e-1)}else{j.salt=b(j.salt);j.timestamp=b(j.timestamp);j.salt.hi|=256}},reconfigure:function(i){Ext.apply(this,i);this.init()}}}()));Ext.define("Ext.data.reader.Xml",{extend:"Ext.data.reader.Reader",alternateClassName:"Ext.data.XmlReader",alias:"reader.xml",createAccessor:function(b){var a=this;if(Ext.isEmpty(b)){return Ext.emptyFn}if(Ext.isFunction(b)){return b}return function(c){return a.getNodeValue(Ext.DomQuery.selectNode(b,c))}},getNodeValue:function(a){if(a&&a.firstChild){return a.firstChild.nodeValue}return undefined},getResponseData:function(a){var c=a.responseXML,b,d;if(!c){d="XML data not found in the response";b=new Ext.data.ResultSet({total:0,count:0,records:[],success:false,message:d});this.fireEvent("exception",this,a,b);Ext.Logger.warn(d);return b}return this.readRecords(c)},getData:function(a){return a.documentElement||a},getRoot:function(b){var c=b.nodeName,a=this.root;if(!a||(c&&c==a)){return b}else{if(Ext.DomQuery.isXml(b)){return Ext.DomQuery.selectNode(a,b)}}},extractData:function(a){var b=this.record;if(b!=a.nodeName){a=Ext.DomQuery.select(b,a)}else{a=[a]}return this.callParent([a])},getAssociatedDataRoot:function(b,a){return Ext.DomQuery.select(a,b)[0]},readRecords:function(a){if(Ext.isArray(a)){a=a[0]}this.xmlData=a;return this.callParent([a])},createFieldAccessExpression:function(e,d,c){var b=e.mapping||e.name,a;if(typeof b==="function"){a=d+".mapping("+c+", this)"}else{a='me.getNodeValue(Ext.DomQuery.selectNode("'+b+'", '+c+"))"}return a}});Ext.define("Ext.data.writer.Xml",{extend:"Ext.data.writer.Writer",alternateClassName:"Ext.data.XmlWriter",alias:"writer.xml",documentRoot:"xmlData",defaultDocumentRoot:"xmlData",header:"",record:"record",writeRecords:function(a,b){var h=this,d=[],c=0,g=b.length,j=h.documentRoot,e=h.record,m=b.length!==1,l,k;d.push(h.header||"");if(!j&&m){j=h.defaultDocumentRoot}if(j){d.push("<",j,">")}for(;c<g;++c){l=b[c];d.push("<",e,">");for(k in l){if(l.hasOwnProperty(k)){d.push("<",k,">",l[k],"</",k,">")}}d.push("</",e,">")}if(j){d.push("</",j,">")}a.xmlData=d.join("");return a}});Ext.define("Ext.data.XmlStore",{extend:"Ext.data.Store",alias:"store.xml",requires:["Ext.data.proxy.Ajax","Ext.data.reader.Xml","Ext.data.writer.Xml"],constructor:function(a){a=Ext.apply({proxy:{type:"ajax",reader:"xml",writer:"xml"}},a);this.callParent([a])}});Ext.define("Ext.data.association.BelongsTo",{extend:"Ext.data.association.Association",alternateClassName:"Ext.data.BelongsToAssociation",alias:"association.belongsto",constructor:function(c){this.callParent(arguments);var e=this,a=e.ownerModel.prototype,g=e.associatedName,d=e.getterName||"get"+g,b=e.setterName||"set"+g;Ext.applyIf(e,{name:g,foreignKey:g.toLowerCase()+"_id",instanceName:g+"BelongsToInstance",associationKey:g.toLowerCase()});a[d]=e.createGetter();a[b]=e.createSetter()},createSetter:function(){var b=this,a=b.foreignKey;return function(e,c,d){if(e&&e.isModel){e=e.getId()}this.set(a,e);if(Ext.isFunction(c)){c={callback:c,scope:d||this}}if(Ext.isObject(c)){return this.save(c)}}},createGetter:function(){var d=this,e=d.associatedName,g=d.associatedModel,c=d.foreignKey,b=d.primaryKey,a=d.instanceName;return function(k,l){k=k||{};var j=this,m=j.get(c),n,h,i;if(k.reload===true||j[a]===undefined){h=Ext.ModelManager.create({},e);h.set(b,m);if(typeof k=="function"){k={callback:k,scope:l||j}}n=k.success;k.success=function(o){j[a]=o;if(n){n.apply(this,arguments)}};g.load(m,k);j[a]=h;return h}else{h=j[a];i=[h];l=l||k.scope||j;Ext.callback(k,l,i);Ext.callback(k.success,l,i);Ext.callback(k.failure,l,i);Ext.callback(k.callback,l,i);return h}}},read:function(b,a,c){b[this.instanceName]=a.read([c]).records[0]}});Ext.define("Ext.util.Inflector",{singleton:true,plurals:[[(/(quiz)$/i),"$1zes"],[(/^(ox)$/i),"$1en"],[(/([m|l])ouse$/i),"$1ice"],[(/(matr|vert|ind)ix|ex$/i),"$1ices"],[(/(x|ch|ss|sh)$/i),"$1es"],[(/([^aeiouy]|qu)y$/i),"$1ies"],[(/(hive)$/i),"$1s"],[(/(?:([^f])fe|([lr])f)$/i),"$1$2ves"],[(/sis$/i),"ses"],[(/([ti])um$/i),"$1a"],[(/(buffal|tomat|potat)o$/i),"$1oes"],[(/(bu)s$/i),"$1ses"],[(/(alias|status|sex)$/i),"$1es"],[(/(octop|vir)us$/i),"$1i"],[(/(ax|test)is$/i),"$1es"],[(/^person$/),"people"],[(/^man$/),"men"],[(/^(child)$/),"$1ren"],[(/s$/i),"s"],[(/$/),"s"]],singulars:[[(/(quiz)zes$/i),"$1"],[(/(matr)ices$/i),"$1ix"],[(/(vert|ind)ices$/i),"$1ex"],[(/^(ox)en/i),"$1"],[(/(alias|status)es$/i),"$1"],[(/(octop|vir)i$/i),"$1us"],[(/(cris|ax|test)es$/i),"$1is"],[(/(shoe)s$/i),"$1"],[(/(o)es$/i),"$1"],[(/(bus)es$/i),"$1"],[(/([m|l])ice$/i),"$1ouse"],[(/(x|ch|ss|sh)es$/i),"$1"],[(/(m)ovies$/i),"$1ovie"],[(/(s)eries$/i),"$1eries"],[(/([^aeiouy]|qu)ies$/i),"$1y"],[(/([lr])ves$/i),"$1f"],[(/(tive)s$/i),"$1"],[(/(hive)s$/i),"$1"],[(/([^f])ves$/i),"$1fe"],[(/(^analy)ses$/i),"$1sis"],[(/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i),"$1$2sis"],[(/([ti])a$/i),"$1um"],[(/(n)ews$/i),"$1ews"],[(/people$/i),"person"],[(/s$/i),""]],uncountable:["sheep","fish","series","species","money","rice","information","equipment","grass","mud","offspring","deer","means"],singular:function(b,a){this.singulars.unshift([b,a])},plural:function(b,a){this.plurals.unshift([b,a])},clearSingulars:function(){this.singulars=[]},clearPlurals:function(){this.plurals=[]},isTransnumeral:function(a){return Ext.Array.indexOf(this.uncountable,a)!=-1},pluralize:function(g){if(this.isTransnumeral(g)){return g}var e=this.plurals,d=e.length,a,c,b;for(b=0;b<d;b++){a=e[b];c=a[0];if(c==g||(c.test&&c.test(g))){return g.replace(c,a[1])}}return g},singularize:function(g){if(this.isTransnumeral(g)){return g}var e=this.singulars,d=e.length,a,c,b;for(b=0;b<d;b++){a=e[b];c=a[0];if(c==g||(c.test&&c.test(g))){return g.replace(c,a[1])}}return g},classify:function(a){return Ext.String.capitalize(this.singularize(a))},ordinalize:function(d){var b=parseInt(d,10),c=b%10,a=b%100;if(11<=a&&a<=13){return d+"th"}else{switch(c){case 1:return d+"st";case 2:return d+"nd";case 3:return d+"rd";default:return d+"th"}}}},function(){var b={alumnus:"alumni",cactus:"cacti",focus:"foci",nucleus:"nuclei",radius:"radii",stimulus:"stimuli",ellipsis:"ellipses",paralysis:"paralyses",oasis:"oases",appendix:"appendices",index:"indexes",beau:"beaux",bureau:"bureaux",tableau:"tableaux",woman:"women",child:"children",man:"men",corpus:"corpora",criterion:"criteria",curriculum:"curricula",genus:"genera",memorandum:"memoranda",phenomenon:"phenomena",foot:"feet",goose:"geese",tooth:"teeth",antenna:"antennae",formula:"formulae",nebula:"nebulae",vertebra:"vertebrae",vita:"vitae"},a;for(a in b){this.plural(a,b[a]);this.singular(b[a],a)}});Ext.define("Ext.data.association.HasMany",{extend:"Ext.data.association.Association",alternateClassName:"Ext.data.HasManyAssociation",requires:["Ext.util.Inflector"],alias:"association.hasmany",constructor:function(c){var d=this,a,b;d.callParent(arguments);d.name=d.name||Ext.util.Inflector.pluralize(d.associatedName.toLowerCase());a=d.ownerModel.prototype;b=d.name;Ext.applyIf(d,{storeName:b+"Store",foreignKey:d.ownerName.toLowerCase()+"_id"});a[b]=d.createStore()},createStore:function(){var h=this,i=h.associatedModel,c=h.storeName,d=h.foreignKey,a=h.primaryKey,g=h.filterProperty,b=h.autoLoad,e=h.storeConfig||{};return function(){var m=this,k,l,j={};if(m[c]===undefined){if(g){l={property:g,value:m.get(g),exactMatch:true}}else{l={property:d,value:m.get(a),exactMatch:true}}j[d]=m.get(a);k=Ext.apply({},e,{model:i,filters:[l],remoteFilter:false,modelDefaults:j});m[c]=Ext.data.AbstractStore.create(k);if(b){m[c].load()}}return m[c]}},read:function(d,b,j){var g=d[this.name](),c,e,a,h;g.add(b.read(j).records);c=this.associatedModel.prototype.associations.findBy(function(i){return i.type==="belongsTo"&&i.associatedName===d.$className});if(c){e=g.data.items;a=e.length;for(h=0;h<a;h++){e[h][c.instanceName]=d}}}});Ext.define("Ext.data.association.HasOne",{extend:"Ext.data.association.Association",alternateClassName:"Ext.data.HasOneAssociation",alias:"association.hasone",constructor:function(c){this.callParent(arguments);var e=this,a=e.ownerModel.prototype,g=e.associatedName,d=e.getterName||"get"+g,b=e.setterName||"set"+g;Ext.applyIf(e,{name:g,foreignKey:g.toLowerCase()+"_id",instanceName:g+"HasOneInstance",associationKey:g.toLowerCase()});a[d]=e.createGetter();a[b]=e.createSetter()},createSetter:function(){var b=this,c=b.ownerModel,a=b.foreignKey;return function(g,d,e){if(g&&g.isModel){g=g.getId()}this.set(a,g);if(Ext.isFunction(d)){d={callback:d,scope:e||this}}if(Ext.isObject(d)){return this.save(d)}}},createGetter:function(){var d=this,g=d.ownerModel,e=d.associatedName,h=d.associatedModel,c=d.foreignKey,b=d.primaryKey,a=d.instanceName;return function(l,m){l=l||{};var k=this,n=k.get(c),o,i,j;if(l.reload===true||k[a]===undefined){i=Ext.ModelManager.create({},e);i.set(b,n);if(typeof l=="function"){l={callback:l,scope:m||k}}o=l.success;l.success=function(p){k[a]=p;if(o){o.apply(this,arguments)}};h.load(n,l);k[a]=i;return i}else{i=k[a];j=[i];m=m||l.scope||k;Ext.callback(l,m,j);Ext.callback(l.success,m,j);Ext.callback(l.failure,m,j);Ext.callback(l.callback,m,j);return i}}},read:function(c,a,e){var b=this.associatedModel.prototype.associations.findBy(function(g){return g.type==="belongsTo"&&g.associatedName===c.$className}),d=a.read([e]).records[0];c[this.instanceName]=d;if(b){d[b.instanceName]=c}}});Ext.define("Ext.data.proxy.WebStorage",{extend:"Ext.data.proxy.Client",alternateClassName:"Ext.data.WebStorageProxy",requires:["Ext.data.SequentialIdGenerator"],id:undefined,constructor:function(a){this.callParent(arguments);this.cache={};this.id=this.id||(this.store?this.store.storeId:undefined);this.initialize()},create:function(e,k,l){var j=this,d=e.records,c=d.length,a=j.getIds(),b,h,g;e.setStarted();if(j.isHierarchical===undefined){j.isHierarchical=!!d[0].isNode;if(j.isHierarchical){j.getStorageObject().setItem(j.getTreeKey(),true)}}for(g=0;g<c;g++){h=d[g];if(h.phantom){h.phantom=false;b=j.getNextId()}else{b=h.getId()}j.setRecord(h,b);h.commit();a.push(b)}j.setIds(a);e.setCompleted();e.setSuccessful();if(typeof k=="function"){k.call(l||j,e)}},read:function(g,m,o){var l=this,e=[],j=0,n=true,d=l.model,a,c,k,h,b;g.setStarted();if(l.isHierarchical){e=l.getTreeData()}else{a=l.getIds();c=a.length;b=g.id;if(b){h=l.getRecord(b);if(h!==null){k=new d(h,b,h)}if(k){e.push(k)}else{n=false}}else{for(;j<c;j++){b=a[j];h=l.getRecord(b);e.push(new d(h,b,h))}}}if(n){g.setSuccessful()}g.setCompleted();g.resultSet=Ext.create("Ext.data.ResultSet",{records:e,total:e.length,loaded:true});if(typeof m=="function"){m.call(o||l,g)}},update:function(e,j,k){var d=e.records,c=d.length,a=this.getIds(),h,b,g;e.setStarted();for(g=0;g<c;g++){h=d[g];this.setRecord(h);h.commit();b=h.getId();if(b!==undefined&&Ext.Array.indexOf(a,b)==-1){a.push(b)}}this.setIds(a);e.setCompleted();e.setSuccessful();if(typeof j=="function"){j.call(k||this,e)}},destroy:function(d,k,l){var g=this,c=d.records,a=g.getIds(),h=a.length,m=[],j={},e=c.length,b;d.setStarted();for(;e--;){Ext.apply(j,g.removeRecord(c[e]))}for(e=0;e<h;e++){b=a[e];if(!j[b]){m.push(b)}}g.setIds(m);d.setCompleted();d.setSuccessful();if(typeof k=="function"){k.call(l||g,d)}},getRecord:function(d){var b=this,a=b.cache,c=!a[d]?Ext.decode(b.getStorageObject().getItem(b.getRecordKey(d))):a[d];if(!c){return null}a[d]=c;c[b.model.prototype.idProperty]=d;return c},setRecord:function(k,c){if(c){k.setId(c)}else{c=k.getId()}var m=this,a=k.data,h={},j=m.model,l=j.prototype.fields.items,d=l.length,g=0,n,b,e,o;for(;g<d;g++){n=l[g];b=n.name;if(n.persist){h[b]=a[b]}}delete h[m.model.prototype.idProperty];if(k.isNode&&k.get("depth")===1){delete h.parentId}e=m.getStorageObject();o=m.getRecordKey(c);m.cache[c]=h;e.removeItem(o);e.setItem(o,Ext.encode(h))},removeRecord:function(a){var d=this,g=a.getId(),b={},c,e;b[g]=a;d.getStorageObject().removeItem(d.getRecordKey(g));delete d.cache[g];if(a.childNodes){e=a.childNodes;for(c=e.length;c--;){Ext.apply(b,d.removeRecord(e[c]))}}return b},getRecordKey:function(a){if(a.isModel){a=a.getId()}return Ext.String.format("{0}-{1}",this.id,a)},getRecordCounterKey:function(){return Ext.String.format("{0}-counter",this.id)},getTreeKey:function(){return Ext.String.format("{0}-tree",this.id)},getIds:function(){var g=this,d=(g.getStorageObject().getItem(g.id)||"").split(","),b=g.model,e=d.length,a=b.prototype.fields.get(b.prototype.idProperty).type.type==="string",c;if(e==1&&d[0]===""){d=[]}else{for(c=0;c<e;c++){d[c]=a?d[c]:+d[c]}}return d},setIds:function(a){var b=this.getStorageObject(),c=a.join(",");b.removeItem(this.id);if(!Ext.isEmpty(c)){b.setItem(this.id,c)}},getNextId:function(){var d=this,e=d.getStorageObject(),c=d.getRecordCounterKey(),b=d.model,a=b.prototype.fields.get(b.prototype.idProperty).type.type==="string",g;g=d.idGenerator.generate();e.setItem(c,g);if(!a){g=+g}return g},getTreeData:function(){var n=this,a=n.getIds(),e=a.length,j=[],b={},o=[],k=0,h=n.model,q=h.prototype.idProperty,g,m,p,l,d,c;for(;k<e;k++){c=a[k];m=n.getRecord(c);j.push(m);b[c]=m;if(!m.parentId){o.push(m)}}g=o.length;Ext.Array.sort(j,n.sortByParentId);for(k=g;k<e;k++){m=j[k];l=m.parentId;if(!p||p[q]!==l){p=b[l];p.children=d=[]}d.push(m)}for(k=e;k--;){m=j[k];if(!m.children&&!m.leaf){m.loaded=true}}for(k=g;k--;){m=o[k];o[k]=new h(m,m[q],m)}return o},sortByParentId:function(b,a){return(b.parentId||0)-(a.parentId||0)},initialize:function(){var b=this,a=b.getStorageObject(),c=+a.getItem(b.getRecordCounterKey());a.setItem(b.id,a.getItem(b.id)||"");if(a.getItem(b.getTreeKey())){b.isHierarchical=true}b.idGenerator=new Ext.data.SequentialIdGenerator({seed:c?c+1:1})},clear:function(){var d=this,e=d.getStorageObject(),c=d.getIds(),a=c.length,b;for(b=0;b<a;b++){e.removeItem(d.getRecordKey(c[b]))}e.removeItem(d.getRecordCounterKey());e.removeItem(d.getTreeKey());e.removeItem(d.id);d.cache={}},getStorageObject:function(){}});Ext.define("Ext.data.proxy.LocalStorage",{extend:"Ext.data.proxy.WebStorage",alias:"proxy.localstorage",alternateClassName:"Ext.data.LocalStorageProxy",getStorageObject:function(){return window.localStorage}});Ext.define("Ext.data.proxy.Rest",{extend:"Ext.data.proxy.Ajax",alternateClassName:"Ext.data.RestProxy",alias:"proxy.rest",appendId:true,batchActions:false,buildUrl:function(g){var e=this,c=g.operation,b=c.records||[],a=b[0],h=e.format,d=e.getUrl(g),i=a?a.getId():c.id;if(e.appendId&&i){if(!d.match(/\/$/)){d+="/"}d+=i}if(h){if(!d.match(/\.$/)){d+="."}d+=h}g.url=d;return e.callParent(arguments)}},function(){Ext.apply(this.prototype,{actionMethods:{create:"POST",read:"GET",update:"PUT",destroy:"DELETE"}})});Ext.define("Ext.data.proxy.SessionStorage",{extend:"Ext.data.proxy.WebStorage",alias:"proxy.sessionstorage",alternateClassName:"Ext.data.SessionStorageProxy",getStorageObject:function(){return window.sessionStorage}});Ext.define("Ext.dd.DDTarget",{extend:"Ext.dd.DragDrop",constructor:function(c,a,b){if(c){this.initTarget(c,a,b)}},getDragEl:Ext.emptyFn,isValidHandleChild:Ext.emptyFn,startDrag:Ext.emptyFn,endDrag:Ext.emptyFn,onDrag:Ext.emptyFn,onDragDrop:Ext.emptyFn,onDragEnter:Ext.emptyFn,onDragOut:Ext.emptyFn,onDragOver:Ext.emptyFn,onInvalidDrop:Ext.emptyFn,onMouseDown:Ext.emptyFn,onMouseUp:Ext.emptyFn,setXConstraint:Ext.emptyFn,setYConstraint:Ext.emptyFn,resetConstraints:Ext.emptyFn,clearConstraints:Ext.emptyFn,clearTicks:Ext.emptyFn,setInitPosition:Ext.emptyFn,setDragElId:Ext.emptyFn,setHandleElId:Ext.emptyFn,setOuterHandleElId:Ext.emptyFn,addInvalidHandleClass:Ext.emptyFn,addInvalidHandleId:Ext.emptyFn,addInvalidHandleType:Ext.emptyFn,removeInvalidHandleClass:Ext.emptyFn,removeInvalidHandleId:Ext.emptyFn,removeInvalidHandleType:Ext.emptyFn,toString:function(){return("DDTarget "+this.id)}});Ext.define("Ext.dd.DragTracker",{uses:["Ext.util.Region"],mixins:{observable:"Ext.util.Observable"},active:false,trackOver:false,tolerance:5,autoStart:false,constructor:function(a){var b=this;Ext.apply(b,a);b.addEvents("mouseover","mouseout","mousedown","mouseup","mousemove","beforedragstart","dragstart","dragend","drag");b.dragRegion=new Ext.util.Region(0,0,0,0);if(b.el){b.initEl(b.el)}b.mixins.observable.constructor.call(b);if(b.disabled){b.disable()}},initEl:function(a){var b=this;b.el=Ext.get(a);b.handle=Ext.get(b.delegate);b.delegate=b.handle?undefined:b.delegate;if(!b.handle){b.handle=b.el}b.mon(b.handle,{mousedown:b.onMouseDown,delegate:b.delegate,scope:b});if(b.trackOver||b.overCls){b.mon(b.handle,{mouseover:b.onMouseOver,mouseout:b.onMouseOut,delegate:b.delegate,scope:b})}},disable:function(){this.disabled=true},enable:function(){this.disabled=false},destroy:function(){this.clearListeners();delete this.el},onMouseOver:function(c,b){var a=this;if(!a.disabled){if(Ext.EventManager.contains(c)||a.delegate){a.mouseIsOut=false;if(a.overCls){a.el.addCls(a.overCls)}a.fireEvent("mouseover",a,c,a.delegate?c.getTarget(a.delegate,b):a.handle)}}},onMouseOut:function(b){var a=this;if(a.mouseIsDown){a.mouseIsOut=true}else{if(a.overCls){a.el.removeCls(a.overCls)}a.fireEvent("mouseout",a,b)}},onMouseDown:function(d,c){var b=this,a;if(b.disabled||d.dragTracked){return}b.dragTarget=b.delegate?c:b.handle.dom;b.startXY=b.lastXY=d.getXY();b.startRegion=Ext.fly(b.dragTarget).getRegion();if(b.fireEvent("mousedown",b,d)===false||b.fireEvent("beforedragstart",b,d)===false||b.onBeforeStart(d)===false){return}b.mouseIsDown=true;d.dragTracked=true;a=b.el.dom;if(Ext.isIE&&a.setCapture){a.setCapture()}if(b.preventDefault!==false){d.preventDefault()}Ext.getDoc().on({scope:b,mouseup:b.onMouseUp,mousemove:b.onMouseMove,selectstart:b.stopSelect});if(b.autoStart){b.timer=Ext.defer(b.triggerStart,b.autoStart===true?1000:b.autoStart,b,[d])}},onMouseMove:function(g,d){var b=this,c=g.getXY(),a=b.startXY;g.preventDefault();b.lastXY=c;if(!b.active){if(Math.max(Math.abs(a[0]-c[0]),Math.abs(a[1]-c[1]))>b.tolerance){b.triggerStart(g)}else{return}}if(b.fireEvent("mousemove",b,g)===false){b.onMouseUp(g)}else{b.onDrag(g);b.fireEvent("drag",b,g)}},onMouseUp:function(b){var a=this;a.mouseIsDown=false;if(a.mouseIsOut){a.mouseIsOut=false;a.onMouseOut(b)}b.preventDefault();if(Ext.isIE&&document.releaseCapture){document.releaseCapture()}a.fireEvent("mouseup",a,b);a.endDrag(b)},endDrag:function(d){var b=this,c=Ext.getDoc(),a=b.active;c.un("mousemove",b.onMouseMove,b);c.un("mouseup",b.onMouseUp,b);c.un("selectstart",b.stopSelect,b);b.clearStart();b.active=false;if(a){b.onEnd(d);b.fireEvent("dragend",b,d)}delete b._constrainRegion;delete Ext.EventObject.dragTracked},triggerStart:function(b){var a=this;a.clearStart();a.active=true;a.onStart(b);a.fireEvent("dragstart",a,b)},clearStart:function(){var a=this.timer;if(a){clearTimeout(a);delete this.timer}},stopSelect:function(a){a.stopEvent();return false},onBeforeStart:function(a){},onStart:function(a){},onDrag:function(a){},onEnd:function(a){},getDragTarget:function(){return this.dragTarget},getDragCt:function(){return this.el},getConstrainRegion:function(){var a=this;if(a.constrainTo){if(a.constrainTo instanceof Ext.util.Region){return a.constrainTo}if(!a._constrainRegion){a._constrainRegion=Ext.fly(a.constrainTo).getViewRegion()}}else{if(!a._constrainRegion){a._constrainRegion=a.getDragCt().getViewRegion()}}return a._constrainRegion},getXY:function(a){return a?this.constrainModes[a](this,this.lastXY):this.lastXY},getOffset:function(c){var b=this.getXY(c),a=this.startXY;return[b[0]-a[0],b[1]-a[1]]},constrainModes:{point:function(b,d){var c=b.dragRegion,a=b.getConstrainRegion();if(!a){return d}c.x=c.left=c[0]=c.right=d[0];c.y=c.top=c[1]=c.bottom=d[1];c.constrainTo(a);return[c.left,c.top]},dragTarget:function(c,g){var b=c.startXY,e=c.startRegion.copy(),a=c.getConstrainRegion(),d;if(!a){return g}e.translateBy(g[0]-b[0],g[1]-b[1]);if(e.right>a.right){g[0]+=d=(a.right-e.right);e.left+=d}if(e.left<a.left){g[0]+=(a.left-e.left)}if(e.bottom>a.bottom){g[1]+=d=(a.bottom-e.bottom);e.top+=d}if(e.top<a.top){g[1]+=(a.top-e.top)}return g}}});Ext.define("Ext.dd.DragZone",{extend:"Ext.dd.DragSource",constructor:function(b,a){this.callParent([b,a]);if(this.containerScroll){Ext.dd.ScrollManager.register(this.el)}},getDragData:function(a){return Ext.dd.Registry.getHandleFromEvent(a)},onInitDrag:function(a,b){this.proxy.update(this.dragData.ddel.cloneNode(true));this.onStartDrag(a,b);return true},afterRepair:function(){var a=this;if(Ext.enableFx){Ext.fly(a.dragData.ddel).highlight(a.repairHighlightColor)}a.dragging=false},getRepairXY:function(a){return Ext.fly(this.dragData.ddel).getXY()},destroy:function(){this.callParent();if(this.containerScroll){Ext.dd.ScrollManager.unregister(this.el)}}});Ext.define("Ext.dd.ScrollManager",{singleton:true,requires:["Ext.dd.DragDropManager"],constructor:function(){var a=Ext.dd.DragDropManager;a.fireEvents=Ext.Function.createSequence(a.fireEvents,this.onFire,this);a.stopDrag=Ext.Function.createSequence(a.stopDrag,this.onStop,this);this.doScroll=Ext.Function.bind(this.doScroll,this);this.ddmInstance=a;this.els={};this.dragEl=null;this.proc={}},onStop:function(a){var b=Ext.dd.ScrollManager;b.dragEl=null;b.clearProc()},triggerRefresh:function(){if(this.ddmInstance.dragCurrent){this.ddmInstance.refreshCache(this.ddmInstance.dragCurrent.groups)}},doScroll:function(){if(this.ddmInstance.dragCurrent){var a=this.proc,b=a.el,c=a.el.ddScrollConfig,d=c?c.increment:this.increment;if(!this.animate){if(b.scroll(a.dir,d)){this.triggerRefresh()}}else{b.scroll(a.dir,d,true,this.animDuration,this.triggerRefresh)}}},clearProc:function(){var a=this.proc;if(a.id){clearInterval(a.id)}a.id=0;a.el=null;a.dir=""},startProc:function(b,a){this.clearProc();this.proc.el=b;this.proc.dir=a;var d=b.ddScrollConfig?b.ddScrollConfig.ddGroup:undefined,c=(b.ddScrollConfig&&b.ddScrollConfig.frequency)?b.ddScrollConfig.frequency:this.frequency;if(d===undefined||this.ddmInstance.dragCurrent.ddGroup==d){this.proc.id=setInterval(this.doScroll,c)}},onFire:function(h,k){if(k||!this.ddmInstance.dragCurrent){return}if(!this.dragEl||this.dragEl!=this.ddmInstance.dragCurrent){this.dragEl=this.ddmInstance.dragCurrent;this.refreshCache()}var l=h.getXY(),m=h.getPoint(),i=this.proc,g=this.els,b,d,a,j;for(b in g){d=g[b];a=d._region;j=d.ddScrollConfig?d.ddScrollConfig:this;if(a&&a.contains(m)&&d.isScrollable()){if(a.bottom-m.y<=j.vthresh){if(i.el!=d){this.startProc(d,"down")}return}else{if(a.right-m.x<=j.hthresh){if(i.el!=d){this.startProc(d,"left")}return}else{if(m.y-a.top<=j.vthresh){if(i.el!=d){this.startProc(d,"up")}return}else{if(m.x-a.left<=j.hthresh){if(i.el!=d){this.startProc(d,"right")}return}}}}}}this.clearProc()},register:function(c){if(Ext.isArray(c)){for(var b=0,a=c.length;b<a;b++){this.register(c[b])}}else{c=Ext.get(c);this.els[c.id]=c}},unregister:function(c){if(Ext.isArray(c)){for(var b=0,a=c.length;b<a;b++){this.unregister(c[b])}}else{c=Ext.get(c);delete this.els[c.id]}},vthresh:25,hthresh:25,increment:100,frequency:500,animate:true,animDuration:0.4,ddGroup:undefined,refreshCache:function(){var a=this.els,b;for(b in a){if(typeof a[b]=="object"){a[b]._region=a[b].getRegion()}}}});Ext.define("Ext.dd.DropTarget",{extend:"Ext.dd.DDTarget",requires:["Ext.dd.ScrollManager"],constructor:function(b,a){this.el=Ext.get(b);Ext.apply(this,a);if(this.containerScroll){Ext.dd.ScrollManager.register(this.el)}this.callParent([this.el.dom,this.ddGroup||this.group,{isTarget:true}])},dropAllowed:Ext.baseCSSPrefix+"dd-drop-ok",dropNotAllowed:Ext.baseCSSPrefix+"dd-drop-nodrop",isTarget:true,isNotifyTarget:true,notifyEnter:function(a,c,b){if(this.overClass){this.el.addCls(this.overClass)}return this.dropAllowed},notifyOver:function(a,c,b){return this.dropAllowed},notifyOut:function(a,c,b){if(this.overClass){this.el.removeCls(this.overClass)}},notifyDrop:function(a,c,b){return false},destroy:function(){this.callParent();if(this.containerScroll){Ext.dd.ScrollManager.unregister(this.el)}}});Ext.define("Ext.dd.Registry",{singleton:true,constructor:function(){this.elements={};this.handles={};this.autoIdSeed=0},getId:function(b,a){if(typeof b=="string"){return b}var c=b.id;if(!c&&a!==false){c="extdd-"+(++this.autoIdSeed);b.id=c}return c},register:function(d,e){e=e||{};if(typeof d=="string"){d=document.getElementById(d)}e.ddel=d;this.elements[this.getId(d)]=e;if(e.isHandle!==false){this.handles[e.ddel.id]=e}if(e.handles){var c=e.handles,b,a;for(b=0,a=c.length;b<a;b++){this.handles[this.getId(c[b])]=e}}},unregister:function(d){var g=this.getId(d,false),e=this.elements[g],c,b,a;if(e){delete this.elements[g];if(e.handles){c=e.handles;for(b=0,a=c.length;b<a;b++){delete this.handles[this.getId(c[b],false)]}}}},getHandle:function(a){if(typeof a!="string"){a=a.id}return this.handles[a]},getHandleFromEvent:function(b){var a=b.getTarget();return a?this.handles[a.id]:null},getTarget:function(a){if(typeof a!="string"){a=a.id}return this.elements[a]},getTargetFromEvent:function(b){var a=b.getTarget();return a?this.elements[a.id]||this.handles[a.id]:null}});Ext.define("Ext.dd.DropZone",{extend:"Ext.dd.DropTarget",requires:["Ext.dd.Registry"],getTargetFromEvent:function(a){return Ext.dd.Registry.getTargetFromEvent(a)},onNodeEnter:function(d,a,c,b){},onNodeOver:function(d,a,c,b){return this.dropAllowed},onNodeOut:function(d,a,c,b){},onNodeDrop:function(d,a,c,b){return false},onContainerOver:function(a,c,b){return this.dropNotAllowed},onContainerDrop:function(a,c,b){return false},notifyEnter:function(a,c,b){return this.dropNotAllowed},notifyOver:function(a,c,b){var d=this.getTargetFromEvent(c);if(!d){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,a,c,b);this.lastOverNode=null}return this.onContainerOver(a,c,b)}if(this.lastOverNode!=d){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,a,c,b)}this.onNodeEnter(d,a,c,b);this.lastOverNode=d}return this.onNodeOver(d,a,c,b)},notifyOut:function(a,c,b){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,a,c,b);this.lastOverNode=null}},notifyDrop:function(a,c,b){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,a,c,b);this.lastOverNode=null}var d=this.getTargetFromEvent(c);return d?this.onNodeDrop(d,a,c,b):this.onContainerDrop(a,c,b)},triggerCacheRefresh:function(){Ext.dd.DDM.refreshCache(this.groups)}});Ext.define("Ext.direct.Event",{alias:"direct.event",requires:["Ext.direct.Manager"],status:true,constructor:function(a){Ext.apply(this,a)},getData:function(){return this.data}});Ext.define("Ext.direct.RemotingEvent",{extend:"Ext.direct.Event",alias:"direct.rpc",getTransaction:function(){return this.transaction||Ext.direct.Manager.getTransaction(this.tid)}});Ext.define("Ext.direct.ExceptionEvent",{extend:"Ext.direct.RemotingEvent",alias:"direct.exception",status:false});Ext.define("Ext.direct.Provider",{alias:"direct.provider",mixins:{observable:"Ext.util.Observable"},constructor:function(a){var b=this;Ext.apply(b,a);b.addEvents("connect","disconnect","data","exception");b.mixins.observable.constructor.call(b,a)},isConnected:function(){return false},connect:Ext.emptyFn,disconnect:Ext.emptyFn});Ext.define("Ext.direct.JsonProvider",{extend:"Ext.direct.Provider",alias:"direct.jsonprovider",uses:["Ext.direct.ExceptionEvent"],parseResponse:function(a){if(!Ext.isEmpty(a.responseText)){if(Ext.isObject(a.responseText)){return a.responseText}return Ext.decode(a.responseText)}return null},createEvents:function(b){var h=null,d=[],g,c=0,a;try{h=this.parseResponse(b)}catch(j){g=new Ext.direct.ExceptionEvent({data:j,xhr:b,code:Ext.direct.Manager.exceptions.PARSE,message:"Error parsing json response: \n\n "+h});return[g]}if(Ext.isArray(h)){for(a=h.length;c<a;++c){d.push(this.createEvent(h[c]))}}else{d.push(this.createEvent(h))}return d},createEvent:function(a){return Ext.create("direct."+a.type,a)}});Ext.define("Ext.direct.PollingProvider",{extend:"Ext.direct.JsonProvider",alias:"direct.pollingprovider",uses:["Ext.direct.ExceptionEvent"],requires:["Ext.Ajax","Ext.util.DelayedTask"],interval:3000,constructor:function(a){this.callParent(arguments);this.addEvents("beforepoll","poll")},isConnected:function(){return !!this.pollTask},connect:function(){var b=this,a=b.url;if(a&&!b.pollTask){b.pollTask=Ext.TaskManager.start({run:function(){if(b.fireEvent("beforepoll",b)!==false){if(Ext.isFunction(a)){a(b.baseParams)}else{Ext.Ajax.request({url:a,callback:b.onData,scope:b,params:b.baseParams})}}},interval:b.interval,scope:b});b.fireEvent("connect",b)}else{if(!a){}}},disconnect:function(){var a=this;if(a.pollTask){Ext.TaskManager.stop(a.pollTask);delete a.pollTask;a.fireEvent("disconnect",a)}},onData:function(e,h,b){var g=this,d=0,a,c;if(h){c=g.createEvents(b);for(a=c.length;d<a;++d){g.fireEvent("data",g,c[d])}}else{g.fireEvent("data",g,new Ext.direct.ExceptionEvent({data:null,code:Ext.direct.Manager.exceptions.TRANSPORT,message:"Unable to connect to the server.",xhr:b}))}}});Ext.define("Ext.direct.RemotingMethod",{constructor:function(c){var d=this,h=Ext.isDefined(c.params)?c.params:c.len,b,a,e,g;d.name=c.name;d.formHandler=c.formHandler;if(Ext.isNumber(h)){d.len=h;d.ordered=true}else{d.params=[];a=h.length;for(e=0;e<a;e++){g=h[e];b=Ext.isObject(g)?g.name:g;d.params.push(b)}}},getArgs:function(e,b,g){var c=[],d,a;if(this.ordered){if(this.len>0){if(b){for(d=0,a=b.length;d<a;d++){c.push(e[b[d]])}}else{if(g){c.push(e)}}}}else{c.push(e)}return c},getCallData:function(c){var e=this,g=null,a=e.len,h=e.params,i,d,b;if(e.ordered){i=c[a];d=c[a+1];if(a!==0){g=c.slice(0,a)}}else{g=Ext.apply({},c[0]);i=c[1];d=c[2];for(b in g){if(g.hasOwnProperty(b)){if(!Ext.Array.contains(h,b)){delete g[b]}}}}return{data:g,callback:i,scope:d}}});Ext.define("Ext.direct.Transaction",{alias:"direct.transaction",alternateClassName:"Ext.Direct.Transaction",statics:{TRANSACTION_ID:0},constructor:function(a){var b=this;Ext.apply(b,a);b.id=b.tid=++b.self.TRANSACTION_ID;b.retryCount=0},send:function(){this.provider.queueTransaction(this)},retry:function(){this.retryCount++;this.send()},getProvider:function(){return this.provider}});Ext.define("Ext.direct.RemotingProvider",{alias:"direct.remotingprovider",extend:"Ext.direct.JsonProvider",requires:["Ext.util.MixedCollection","Ext.util.DelayedTask","Ext.direct.Transaction","Ext.direct.RemotingMethod"],enableBuffer:10,maxRetries:1,timeout:undefined,constructor:function(a){var b=this;b.callParent(arguments);b.addEvents("beforecall","call");b.namespace=(Ext.isString(b.namespace))?Ext.ns(b.namespace):b.namespace||window;b.transactions=new Ext.util.MixedCollection();b.callBuffer=[]},initAPI:function(){var h=this.actions,e=this.namespace,g,b,c,d,a,j;for(g in h){if(h.hasOwnProperty(g)){b=e[g];if(!b){b=e[g]={}}c=h[g];for(d=0,a=c.length;d<a;++d){j=new Ext.direct.RemotingMethod(c[d]);b[j.name]=this.createHandler(g,j)}}}},createHandler:function(c,d){var b=this,a;if(!d.formHandler){a=function(){b.configureRequest(c,d,Array.prototype.slice.call(arguments,0))}}else{a=function(g,h,e){b.configureFormRequest(c,d,g,h,e)}}a.directCfg={action:c,method:d};return a},isConnected:function(){return !!this.connected},connect:function(){var a=this;if(a.url){a.initAPI();a.connected=true;a.fireEvent("connect",a)}else{if(!a.url){}}},disconnect:function(){var a=this;if(a.connected){a.connected=false;a.fireEvent("disconnect",a)}},runCallback:function(e,b){var d=!!b.status,c=d?"success":"failure",g,a;if(e&&e.callback){g=e.callback;a=Ext.isDefined(b.result)?b.result:b.data;if(Ext.isFunction(g)){g(a,b,d)}else{Ext.callback(g[c],g.scope,[a,b,d]);Ext.callback(g.callback,g.scope,[a,b,d])}}},onData:function(l,j,c){var g=this,d=0,e,k,a,b,h;if(j){k=g.createEvents(c);for(e=k.length;d<e;++d){a=k[d];b=g.getTransaction(a);g.fireEvent("data",g,a);if(b){g.runCallback(b,a,true);Ext.direct.Manager.removeTransaction(b)}}}else{h=[].concat(l.transaction);for(e=h.length;d<e;++d){b=g.getTransaction(h[d]);if(b&&b.retryCount<g.maxRetries){b.retry()}else{a=new Ext.direct.ExceptionEvent({data:null,transaction:b,code:Ext.direct.Manager.exceptions.TRANSPORT,message:"Unable to connect to the server.",xhr:c});g.fireEvent("data",g,a);if(b){g.runCallback(b,a,false);Ext.direct.Manager.removeTransaction(b)}}}}},getTransaction:function(a){return a&&a.tid?Ext.direct.Manager.getTransaction(a.tid):null},configureRequest:function(d,a,g){var h=this,c=a.getCallData(g),e=c.data,i=c.callback,j=c.scope,b;b=new Ext.direct.Transaction({provider:h,args:g,action:d,method:a.name,data:e,callback:j&&Ext.isFunction(i)?Ext.Function.bind(i,j):i});if(h.fireEvent("beforecall",h,b,a)!==false){Ext.direct.Manager.addTransaction(b);h.queueTransaction(b);h.fireEvent("call",h,b,a)}},getCallData:function(a){return{action:a.action,method:a.method,data:a.data,type:"rpc",tid:a.id}},sendRequest:function(h){var g=this,e={url:g.url,callback:g.onData,scope:g,transaction:h,timeout:g.timeout},b,d=g.enableUrlEncode,c=0,a,j;if(Ext.isArray(h)){b=[];for(a=h.length;c<a;++c){b.push(g.getCallData(h[c]))}}else{b=g.getCallData(h)}if(d){j={};j[Ext.isString(d)?d:"data"]=Ext.encode(b);e.params=j}else{e.jsonData=b}Ext.Ajax.request(e)},queueTransaction:function(c){var b=this,a=b.enableBuffer;if(c.form){b.sendFormRequest(c);return}b.callBuffer.push(c);if(a){if(!b.callTask){b.callTask=new Ext.util.DelayedTask(b.combineAndSend,b)}b.callTask.delay(Ext.isNumber(a)?a:10)}else{b.combineAndSend()}},combineAndSend:function(){var b=this.callBuffer,a=b.length;if(a>0){this.sendRequest(a==1?b[0]:b);this.callBuffer=[]}},configureFormRequest:function(e,a,b,i,j){var h=this,c=new Ext.direct.Transaction({provider:h,action:e,method:a.name,args:[b,i,j],callback:j&&Ext.isFunction(i)?Ext.Function.bind(i,j):i,isForm:true}),g,d;if(h.fireEvent("beforecall",h,c,a)!==false){Ext.direct.Manager.addTransaction(c);g=String(b.getAttribute("enctype")).toLowerCase()=="multipart/form-data";d={extTID:c.id,extAction:e,extMethod:a.name,extType:"rpc",extUpload:String(g)};Ext.apply(c,{form:Ext.getDom(b),isUpload:g,params:i&&Ext.isObject(i.params)?Ext.apply(d,i.params):d});h.fireEvent("call",h,c,a);h.sendFormRequest(c)}},sendFormRequest:function(a){Ext.Ajax.request({url:this.url,params:a.params,callback:this.onData,scope:this,form:a.form,isUpload:a.isUpload,transaction:a})}});Ext.define("Ext.draw.Matrix",{requires:["Ext.draw.Draw"],constructor:function(h,g,l,k,j,i){if(h!=null){this.matrix=[[h,l,j],[g,k,i],[0,0,1]]}else{this.matrix=[[1,0,0],[0,1,0],[0,0,1]]}},add:function(s,p,m,k,i,h){var n=this,g=[[],[],[]],r=[[s,m,i],[p,k,h],[0,0,1]],q,o,l,j;for(q=0;q<3;q++){for(o=0;o<3;o++){j=0;for(l=0;l<3;l++){j+=n.matrix[q][l]*r[l][o]}g[q][o]=j}}n.matrix=g},prepend:function(s,p,m,k,i,h){var n=this,g=[[],[],[]],r=[[s,m,i],[p,k,h],[0,0,1]],q,o,l,j;for(q=0;q<3;q++){for(o=0;o<3;o++){j=0;for(l=0;l<3;l++){j+=r[q][l]*n.matrix[l][o]}g[q][o]=j}}n.matrix=g},invert:function(){var j=this.matrix,i=j[0][0],h=j[1][0],n=j[0][1],m=j[1][1],l=j[0][2],k=j[1][2],g=i*m-h*n;return new Ext.draw.Matrix(m/g,-h/g,-n/g,i/g,(n*k-m*l)/g,(h*l-i*k)/g)},clone:function(){var i=this.matrix,h=i[0][0],g=i[1][0],m=i[0][1],l=i[1][1],k=i[0][2],j=i[1][2];return new Ext.draw.Matrix(h,g,m,l,k,j)},translate:function(a,b){this.prepend(1,0,0,1,a,b)},scale:function(b,e,a,d){var c=this;if(e==null){e=b}c.add(b,0,0,e,a*(1-b),d*(1-e))},rotate:function(c,b,h){c=Ext.draw.Draw.rad(c);var e=this,g=+Math.cos(c).toFixed(9),d=+Math.sin(c).toFixed(9);e.add(g,d,-d,g,b-g*b+d*h,-(d*b)+h-g*h)},x:function(a,c){var b=this.matrix;return a*b[0][0]+c*b[0][1]+b[0][2]},y:function(a,c){var b=this.matrix;return a*b[1][0]+c*b[1][1]+b[1][2]},get:function(b,a){return +this.matrix[b][a].toFixed(4)},toString:function(){var a=this;return[a.get(0,0),a.get(0,1),a.get(1,0),a.get(1,1),0,0].join()},toSvg:function(){var a=this;return"matrix("+[a.get(0,0),a.get(1,0),a.get(0,1),a.get(1,1),a.get(0,2),a.get(1,2)].join()+")"},toFilter:function(b,a){var c=this;b=b||0;a=a||0;return"progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand', filterType='bilinear', M11="+c.get(0,0)+", M12="+c.get(0,1)+", M21="+c.get(1,0)+", M22="+c.get(1,1)+", Dx="+(c.get(0,2)+b)+", Dy="+(c.get(1,2)+a)+")"},offset:function(){var a=this.matrix;return[(a[0][2]||0).toFixed(4),(a[1][2]||0).toFixed(4)]},split:function(){function d(g){return g[0]*g[0]+g[1]*g[1]}function b(g){var h=Math.sqrt(d(g));g[0]/=h;g[1]/=h}var a=this.matrix,c={translateX:a[0][2],translateY:a[1][2]},e;e=[[a[0][0],a[0][1]],[a[1][1],a[1][1]]];c.scaleX=Math.sqrt(d(e[0]));b(e[0]);c.shear=e[0][0]*e[1][0]+e[0][1]*e[1][1];e[1]=[e[1][0]-e[0][0]*c.shear,e[1][1]-e[0][1]*c.shear];c.scaleY=Math.sqrt(d(e[1]));b(e[1]);c.shear/=c.scaleY;c.rotate=Math.asin(-e[0][1]);c.isSimple=!+c.shear.toFixed(9)&&(c.scaleX.toFixed(9)==c.scaleY.toFixed(9)||!c.rotate);return c}});Ext.define("Ext.draw.SpriteDD",{extend:"Ext.dd.DragSource",constructor:function(b,a){var d=this,c=b.el;d.sprite=b;d.el=c;d.dragData={el:c,sprite:b};d.callParent([c,a]);d.sprite.setStyle("cursor","move")},showFrame:Ext.emptyFn,createFrame:Ext.emptyFn,getDragEl:function(a){return this.el},getRegion:function(){var j=this,g=j.el,m,d,c,o,n,s,a,k,h,q,p;p=j.sprite;q=p.getBBox();try{m=Ext.Element.getXY(g)}catch(i){}if(!m){return null}d=m[0];c=d+q.width;o=m[1];n=o+q.height;return new Ext.util.Region(o,c,n,d)},startDrag:function(b,d){var c=this,a=c.sprite.attr;c.prev=c.sprite.surface.transformToViewBox(b,d)},onDrag:function(i){var h=i.getXY(),g=this,d=g.sprite,a=d.attr,c,b;h=g.sprite.surface.transformToViewBox(h[0],h[1]);c=h[0]-g.prev[0];b=h[1]-g.prev[1];d.setAttributes({translate:{x:a.translation.x+c,y:a.translation.y+b}},true);g.prev=h},setDragElPos:function(){return false}});Ext.define("Ext.draw.Sprite",{mixins:{observable:"Ext.util.Observable",animate:"Ext.util.Animate"},requires:["Ext.draw.SpriteDD"],dirty:false,dirtyHidden:false,dirtyTransform:false,dirtyPath:true,dirtyFont:true,zIndexDirty:true,isSprite:true,zIndex:0,fontProperties:["font","font-size","font-weight","font-style","font-family","text-anchor","text"],pathProperties:["x","y","d","path","height","width","radius","r","rx","ry","cx","cy"],constructor:function(a){var b=this;a=Ext.merge({},a||{});b.id=Ext.id(null,"ext-sprite-");b.transformations=[];Ext.copyTo(this,a,"surface,group,type,draggable");b.bbox={};b.attr={zIndex:0,translation:{x:null,y:null},rotation:{degrees:null,x:null,y:null},scaling:{x:null,y:null,cx:null,cy:null}};delete a.surface;delete a.group;delete a.type;delete a.draggable;b.setAttributes(a);b.addEvents("beforedestroy","destroy","render","mousedown","mouseup","mouseover","mouseout","mousemove","click");b.mixins.observable.constructor.apply(this,arguments)},initDraggable:function(){var a=this;a.draggable=true;if(!a.el){a.surface.createSpriteElement(a)}a.dd=new Ext.draw.SpriteDD(a,Ext.isBoolean(a.draggable)?null:a.draggable);a.on("beforedestroy",a.dd.destroy,a.dd)},setAttributes:function(l,o){var t=this,j=t.fontProperties,q=j.length,h=t.pathProperties,g=h.length,r=!!t.surface,a=r&&t.surface.customAttributes||{},c=t.attr,b=false,m,p,k,d,s,n,u,e;l=Ext.apply({},l);for(m in a){if(l.hasOwnProperty(m)&&typeof a[m]=="function"){Ext.apply(l,a[m].apply(t,[].concat(l[m])))}}if(!!l.hidden!==!!c.hidden){t.dirtyHidden=true}for(p=0;p<g;p++){m=h[p];if(m in l&&l[m]!==c[m]){t.dirtyPath=true;b=true;break}}if("zIndex" in l){t.zIndexDirty=true}if("text" in l){t.dirtyFont=true;b=true}for(p=0;p<q;p++){m=j[p];if(m in l&&l[m]!==c[m]){t.dirtyFont=true;b=true;break}}k=l.translation||l.translate;delete l.translate;delete l.translation;d=c.translation;if(k){if(("x" in k&&k.x!==d.x)||("y" in k&&k.y!==d.y)){t.dirtyTransform=true;d.x=k.x;d.y=k.y}}s=l.rotation||l.rotate;n=c.rotation;delete l.rotate;delete l.rotation;if(s){if(("x" in s&&s.x!==n.x)||("y" in s&&s.y!==n.y)||("degrees" in s&&s.degrees!==n.degrees)){t.dirtyTransform=true;n.x=s.x;n.y=s.y;n.degrees=s.degrees}}u=l.scaling||l.scale;e=c.scaling;delete l.scale;delete l.scaling;if(u){if(("x" in u&&u.x!==e.x)||("y" in u&&u.y!==e.y)||("cx" in u&&u.cx!==e.cx)||("cy" in u&&u.cy!==e.cy)){t.dirtyTransform=true;e.x=u.x;e.y=u.y;e.cx=u.cx;e.cy=u.cy}}if(!t.dirtyTransform&&b){if(c.scaling.x===null||c.scaling.y===null||c.rotation.y===null||c.rotation.y===null){t.dirtyTransform=true}}Ext.apply(c,l);t.dirty=true;if(o===true&&r){t.redraw()}return this},getBBox:function(){return this.surface.getBBox(this)},setText:function(a){return this.surface.setText(this,a)},hide:function(a){this.setAttributes({hidden:true},a);return this},show:function(a){this.setAttributes({hidden:false},a);return this},remove:function(){if(this.surface){this.surface.remove(this);return true}return false},onRemove:function(){this.surface.onRemove(this)},destroy:function(){var a=this;if(a.fireEvent("beforedestroy",a)!==false){a.remove();a.surface.onDestroy(a);a.clearListeners();a.fireEvent("destroy")}},redraw:function(){this.surface.renderItem(this);return this},setStyle:function(){this.el.setStyle.apply(this.el,arguments);return this},addCls:function(a){this.surface.addCls(this,a);return this},removeCls:function(a){this.surface.removeCls(this,a);return this}});Ext.define("Ext.draw.Text",{extend:"Ext.draw.Component",uses:["Ext.util.CSS"],alias:"widget.text",text:"",focusable:false,viewBox:false,autoSize:true,baseCls:Ext.baseCSSPrefix+"surface "+Ext.baseCSSPrefix+"draw-text",initComponent:function(){var a=this;a.textConfig=Ext.apply({type:"text",text:a.text,rotate:{degrees:a.degrees||0}},a.textStyle);Ext.apply(a.textConfig,a.getStyles(a.styleSelectors||a.styleSelector));a.initialConfig.items=[a.textConfig];a.callParent(arguments)},getStyles:function(d){d=Ext.Array.from(d);var c=0,b=d.length,g,e,h,a={};for(;c<b;c++){g=Ext.util.CSS.getRule(d[c]);if(g){e=g.style;if(e){Ext.apply(a,{"font-family":e.fontFamily,"font-weight":e.fontWeight,"line-height":e.lineHeight,"font-size":e.fontSize,fill:e.color})}}}return a},setAngle:function(d){var c=this,a,b;if(c.rendered){a=c.surface;b=a.items.items[0];c.degrees=d;b.setAttributes({rotate:{degrees:d}},true);if(c.autoSize||c.viewBox){c.updateLayout()}}else{c.degrees=d}},setText:function(d){var c=this,a,b;if(c.rendered){a=c.surface;b=a.items.items[0];c.text=d||"";a.remove(b);c.textConfig.type="text";c.textConfig.text=c.text;b=a.add(c.textConfig);b.setAttributes({rotate:{degrees:c.degrees}},true);if(c.autoSize||c.viewBox){c.updateLayout()}}else{c.on({render:function(){c.setText(d)},single:true})}}});Ext.define("Ext.draw.engine.ImageExporter",{singleton:true,defaultUrl:"http://svg.sencha.io",supportedTypes:["image/png","image/jpeg"],widthParam:"width",heightParam:"height",typeParam:"type",svgParam:"svg",formCls:Ext.baseCSSPrefix+"hide-display",generate:function(a,b){b=b||{};var e=this,c=b.type,d;if(Ext.Array.indexOf(e.supportedTypes,c)===-1){return false}d=Ext.getBody().createChild({tag:"form",method:"POST",action:b.url||e.defaultUrl,cls:e.formCls,children:[{tag:"input",type:"hidden",name:b.widthParam||e.widthParam,value:b.width||a.width},{tag:"input",type:"hidden",name:b.heightParam||e.heightParam,value:b.height||a.height},{tag:"input",type:"hidden",name:b.typeParam||e.typeParam,value:c},{tag:"input",type:"hidden",name:b.svgParam||e.svgParam}]});d.last(null,true).value=Ext.draw.engine.SvgExporter.generate(a);d.dom.submit();d.remove();return true}});Ext.define("Ext.draw.engine.Svg",{extend:"Ext.draw.Surface",requires:["Ext.draw.Draw","Ext.draw.Sprite","Ext.draw.Matrix","Ext.Element"],engine:"Svg",trimRe:/^\s+|\s+$/g,spacesRe:/\s+/,xlink:"http://www.w3.org/1999/xlink",translateAttrs:{radius:"r",radiusX:"rx",radiusY:"ry",path:"d",lineWidth:"stroke-width",fillOpacity:"fill-opacity",strokeOpacity:"stroke-opacity",strokeLinejoin:"stroke-linejoin"},parsers:{},minDefaults:{circle:{cx:0,cy:0,r:0,fill:"none",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},ellipse:{cx:0,cy:0,rx:0,ry:0,fill:"none",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},rect:{x:0,y:0,width:0,height:0,rx:0,ry:0,fill:"none",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},text:{x:0,y:0,"text-anchor":"start","font-family":null,"font-size":null,"font-weight":null,"font-style":null,fill:"#000",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},path:{d:"M0,0",fill:"none",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},image:{x:0,y:0,width:0,height:0,preserveAspectRatio:"none",opacity:null}},createSvgElement:function(d,a){var c=this.domRef.createElementNS("http://www.w3.org/2000/svg",d),b;if(a){for(b in a){c.setAttribute(b,String(a[b]))}}return c},createSpriteElement:function(a){var b=this.createSvgElement(a.type);b.id=a.id;if(b.style){b.style.webkitTapHighlightColor="rgba(0,0,0,0)"}a.el=Ext.get(b);this.applyZIndex(a);a.matrix=new Ext.draw.Matrix();a.bbox={plain:0,transform:0};this.applyAttrs(a);this.applyTransformations(a);a.fireEvent("render",a);return b},getBBoxText:function(j){var k={},g,l,a,c,h,b;if(j&&j.el){b=j.el.dom;try{k=b.getBBox();return k}catch(d){}k={x:k.x,y:Infinity,width:0,height:0};h=b.getNumberOfChars();for(c=0;c<h;c++){g=b.getExtentOfChar(c);k.y=Math.min(g.y,k.y);l=g.y+g.height-k.y;k.height=Math.max(k.height,l);a=g.x+g.width-k.x;k.width=Math.max(k.width,a)}return k}},hide:function(){Ext.get(this.el).hide()},show:function(){Ext.get(this.el).show()},hidePrim:function(a){this.addCls(a,Ext.baseCSSPrefix+"hide-visibility")},showPrim:function(a){this.removeCls(a,Ext.baseCSSPrefix+"hide-visibility")},getDefs:function(){return this._defs||(this._defs=this.createSvgElement("defs"))},transform:function(k,a){var h=this,j=new Ext.draw.Matrix(),e=k.transformations,d=e.length,c=0,b,g;for(;c<d;c++){b=e[c];g=b.type;if(g=="translate"){j.translate(b.x,b.y)}else{if(g=="rotate"){j.rotate(b.degrees,b.x,b.y)}else{if(g=="scale"){j.scale(b.x,b.y,b.centerX,b.centerY)}}}}k.matrix=j;if(!a){k.el.set({transform:j.toSvg()})}},setSize:function(c,a){var d=this,b=d.el;c=+c||d.width;a=+a||d.height;d.width=c;d.height=a;b.setSize(c,a);b.set({width:c,height:a});d.callParent([c,a])},getRegion:function(){var e=this.el.getXY(),c=this.bgRect.getXY(),b=Math.max,a=b(e[0],c[0]),d=b(e[1],c[1]);return{left:a,top:d,right:a+this.width,bottom:d+this.height}},onRemove:function(a){if(a.el){a.el.destroy();delete a.el}this.callParent(arguments)},setViewBox:function(b,d,c,a){if(isFinite(b)&&isFinite(d)&&isFinite(c)&&isFinite(a)){this.callParent(arguments);this.el.dom.setAttribute("viewBox",[b,d,c,a].join(" "))}},render:function(c){var g=this,e,b,d,a,h,i;if(!g.el){e=g.width||0;b=g.height||0;d=g.createSvgElement("svg",{xmlns:"http://www.w3.org/2000/svg",version:1.1,width:e,height:b});a=g.getDefs();h=g.createSvgElement("rect",{width:"100%",height:"100%",fill:"#000",stroke:"none",opacity:0});if(Ext.isSafari3){i=g.createSvgElement("rect",{x:-10,y:-10,width:"110%",height:"110%",fill:"none",stroke:"#000"})}d.appendChild(a);if(Ext.isSafari3){d.appendChild(i)}d.appendChild(h);c.appendChild(d);g.el=Ext.get(d);g.bgRect=Ext.get(h);if(Ext.isSafari3){g.webkitRect=Ext.get(i);g.webkitRect.hide()}g.el.on({scope:g,mouseup:g.onMouseUp,mousedown:g.onMouseDown,mouseover:g.onMouseOver,mouseout:g.onMouseOut,mousemove:g.onMouseMove,mouseenter:g.onMouseEnter,mouseleave:g.onMouseLeave,click:g.onClick,dblclick:g.onDblClick})}g.renderAll()},onMouseEnter:function(a){if(this.el.parent().getRegion().contains(a.getPoint())){this.fireEvent("mouseenter",a)}},onMouseLeave:function(a){if(!this.el.parent().getRegion().contains(a.getPoint())){this.fireEvent("mouseleave",a)}},processEvent:function(b,g){var d=g.getTarget(),a=this.surface,c;this.fireEvent(b,g);if(d.nodeName=="tspan"&&d.parentNode){d=d.parentNode}c=this.items.get(d.id);if(c){c.fireEvent(b,c,g)}},tuneText:function(k,l){var a=k.el.dom,b=[],n,h,m,d,e,c,g,j;if(l.hasOwnProperty("text")){m=k.tspans&&Ext.Array.map(k.tspans,function(i){return i.textContent}).join("");if(!k.tspans||l.text!=m){b=this.setText(k,l.text);k.tspans=b}else{b=k.tspans||[]}}if(b.length){n=this.getBBoxText(k).height;j=k.el.dom.getAttribute("x");for(d=0,e=b.length;d<e;d++){g=(Ext.isFF3_0||Ext.isFF3_5)?2:4;b[d].setAttribute("x",j);b[d].setAttribute("dy",d?n*1.2:n/g)}k.dirty=true}},setText:function(k,d){var h=this,a=k.el.dom,b=[],m,j,l,e,g,c;while(a.firstChild){a.removeChild(a.firstChild)}c=String(d).split("\n");for(e=0,g=c.length;e<g;e++){l=c[e];if(l){j=h.createSvgElement("tspan");j.appendChild(document.createTextNode(Ext.htmlDecode(l)));a.appendChild(j);b[e]=j}}return b},renderAll:function(){this.items.each(this.renderItem,this)},renderItem:function(a){if(!this.el){return}if(!a.el){this.createSpriteElement(a)}if(a.zIndexDirty){this.applyZIndex(a)}if(a.dirty){this.applyAttrs(a);if(a.dirtyTransform){this.applyTransformations(a)}}},redraw:function(a){a.dirty=a.zIndexDirty=true;this.renderItem(a)},applyAttrs:function(r){var m=this,c=r.el,q=r.group,j=r.attr,s=m.parsers,g=m.gradientsMap||{},k=Ext.isSafari&&!Ext.isStrict,e,h,l,p,d,o,b,a,n;if(q){e=[].concat(q);l=e.length;for(h=0;h<l;h++){q=e[h];m.getGroup(q).add(r)}delete r.group}p=m.scrubAttrs(r)||{};r.bbox.plain=0;r.bbox.transform=0;if(r.type=="circle"||r.type=="ellipse"){p.cx=p.cx||p.x;p.cy=p.cy||p.y}else{if(r.type=="rect"){p.rx=p.ry=p.r}else{if(r.type=="path"&&p.d){p.d=Ext.draw.Draw.pathToString(Ext.draw.Draw.pathToAbsolute(p.d))}}}r.dirtyPath=false;if(p["clip-rect"]){m.setClip(r,p);delete p["clip-rect"]}if(r.type=="text"&&p.font&&r.dirtyFont){c.set({style:"font: "+p.font})}if(r.type=="image"){c.dom.setAttributeNS(m.xlink,"href",p.src)}Ext.applyIf(p,m.minDefaults[r.type]);if(r.dirtyHidden){(j.hidden)?m.hidePrim(r):m.showPrim(r);r.dirtyHidden=false}for(o in p){if(p.hasOwnProperty(o)&&p[o]!=null){if(k&&("color|stroke|fill".indexOf(o)>-1)&&(p[o] in g)){p[o]=g[p[o]]}if(o=="hidden"&&r.type=="text"){continue}if(o in s){c.dom.setAttribute(o,s[o](p[o],r,m))}else{c.dom.setAttribute(o,p[o])}}}if(r.type=="text"){m.tuneText(r,p)}r.dirtyFont=false;b=j.style;if(b){c.setStyle(b)}r.dirty=false;if(Ext.isSafari3){m.webkitRect.show();setTimeout(function(){m.webkitRect.hide()})}},setClip:function(b,g){var e=this,d=g["clip-rect"],a,c;if(d){if(b.clip){b.clip.parentNode.parentNode.removeChild(b.clip.parentNode)}a=e.createSvgElement("clipPath");c=e.createSvgElement("rect");a.id=Ext.id(null,"ext-clip-");c.setAttribute("x",d.x);c.setAttribute("y",d.y);c.setAttribute("width",d.width);c.setAttribute("height",d.height);a.appendChild(c);e.getDefs().appendChild(a);b.el.dom.setAttribute("clip-path","url(#"+a.id+")");b.clip=c}},applyZIndex:function(d){var g=this,b=g.items,a=b.indexOf(d),e=d.el,c;if(g.el.dom.childNodes[a+2]!==e.dom){if(a>0){do{c=b.getAt(--a).el}while(!c&&a>0)}e.insertAfter(c||g.bgRect)}d.zIndexDirty=false},createItem:function(a){var b=new Ext.draw.Sprite(a);b.surface=this;return b},addGradient:function(h){h=Ext.draw.Draw.parseGradient(h);var e=this,d=h.stops.length,a=h.vector,l=Ext.isSafari&&!Ext.isStrict,j,g,k,c,b;b=e.gradientsMap||{};if(!l){if(h.type=="linear"){j=e.createSvgElement("linearGradient");j.setAttribute("x1",a[0]);j.setAttribute("y1",a[1]);j.setAttribute("x2",a[2]);j.setAttribute("y2",a[3])}else{j=e.createSvgElement("radialGradient");j.setAttribute("cx",h.centerX);j.setAttribute("cy",h.centerY);j.setAttribute("r",h.radius);if(Ext.isNumber(h.focalX)&&Ext.isNumber(h.focalY)){j.setAttribute("fx",h.focalX);j.setAttribute("fy",h.focalY)}}j.id=h.id;e.getDefs().appendChild(j);for(c=0;c<d;c++){g=h.stops[c];k=e.createSvgElement("stop");k.setAttribute("offset",g.offset+"%");k.setAttribute("stop-color",g.color);k.setAttribute("stop-opacity",g.opacity);j.appendChild(k)}}else{b["url(#"+h.id+")"]=h.stops[0].color}e.gradientsMap=b},hasCls:function(a,b){return b&&(" "+(a.el.dom.getAttribute("class")||"")+" ").indexOf(" "+b+" ")!=-1},addCls:function(e,h){var g=e.el,d,a,c,b=[],j=g.getAttribute("class")||"";if(!Ext.isArray(h)){if(typeof h=="string"&&!this.hasCls(e,h)){g.set({"class":j+" "+h})}}else{for(d=0,a=h.length;d<a;d++){c=h[d];if(typeof c=="string"&&(" "+j+" ").indexOf(" "+c+" ")==-1){b.push(c)}}if(b.length){g.set({"class":" "+b.join(" ")})}}},removeCls:function(k,g){var h=this,b=k.el,d=b.getAttribute("class")||"",c,j,e,l,a;if(!Ext.isArray(g)){g=[g]}if(d){a=d.replace(h.trimRe," ").split(h.spacesRe);for(c=0,e=g.length;c<e;c++){l=g[c];if(typeof l=="string"){l=l.replace(h.trimRe,"");j=Ext.Array.indexOf(a,l);if(j!=-1){Ext.Array.erase(a,j,1)}}}b.set({"class":a.join(" ")})}},destroy:function(){var a=this;a.callParent();if(a.el){a.el.remove()}if(a._defs){Ext.get(a._defs).destroy()}if(a.bgRect){Ext.get(a.bgRect).destroy()}if(a.webkitRect){Ext.get(a.webkitRect).destroy()}delete a.el}});Ext.define("Ext.draw.engine.SvgExporter",function(){var b=/,/g,c=/(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)\s('*.*'*)/,j=/rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,h=/rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,([\d\.]+)\)/g,g,i,e,m,n=function(o){g=o;i=g.length;e=g.width;m=g.height},k={path:function(s){var o=s.attr,v=o.path,r="",t,u,q;if(Ext.isArray(v[0])){q=v.length;for(u=0;u<q;u++){r+=v[u].join(" ")}}else{if(Ext.isArray(v)){r=v.join(" ")}else{r=v.replace(b," ")}}t=d({d:r,fill:o.fill||"none",stroke:o.stroke,"fill-opacity":o.opacity,"stroke-width":o["stroke-width"],"stroke-opacity":o["stroke-opacity"],"z-index":o.zIndex,transform:s.matrix.toSvg()});return"<path "+t+"/>"},text:function(u){var r=u.attr,q=c.exec(r.font),w=(q&&q[1])||"12",p=(q&&q[3])||"Arial",v=r.text,t=(Ext.isFF3_0||Ext.isFF3_5)?2:4,o="",s;u.getBBox();o+='<tspan x="'+(r.x||"")+'" dy="';o+=(w/t)+'">';o+=Ext.htmlEncode(v)+"</tspan>";s=d({x:r.x,y:r.y,"font-size":w,"font-family":p,"font-weight":r["font-weight"],"text-anchor":r["text-anchor"],fill:r.fill||"#000","fill-opacity":r.opacity,transform:u.matrix.toSvg()});return"<text "+s+">"+o+"</text>"},rect:function(p){var o=p.attr,q=d({x:o.x,y:o.y,rx:o.rx,ry:o.ry,width:o.width,height:o.height,fill:o.fill||"none","fill-opacity":o.opacity,stroke:o.stroke,"stroke-opacity":o["stroke-opacity"],"stroke-width":o["stroke-width"],transform:p.matrix&&p.matrix.toSvg()});return"<rect "+q+"/>"},circle:function(p){var o=p.attr,q=d({cx:o.x,cy:o.y,r:o.radius,fill:o.translation.fill||o.fill||"none","fill-opacity":o.opacity,stroke:o.stroke,"stroke-opacity":o["stroke-opacity"],"stroke-width":o["stroke-width"],transform:p.matrix.toSvg()});return"<circle "+q+" />"},image:function(p){var o=p.attr,q=d({x:o.x-(o.width/2>>0),y:o.y-(o.height/2>>0),width:o.width,height:o.height,"xlink:href":o.src,transform:p.matrix.toSvg()});return"<image "+q+" />"}},a=function(){var o='<?xml version="1.0" standalone="yes"?>';o+='<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">';return o},l=function(){var w='<svg width="'+e+'px" height="'+m+'px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">',p="",H,F,v,q,G,J,z,x,t,y,B,o,K,u,E,C,I,D,s,r;v=g.items.items;F=v.length;G=function(O){var V=O.childNodes,S=V.length,R=0,P,Q,L="",M,U,N,T;for(;R<S;R++){M=V[R];U=M.attributes;N=M.tagName;L+="<"+N;for(Q=0,P=U.length;Q<P;Q++){T=U.item(Q);L+=" "+T.name+'="'+T.value+'"'}L+=">";if(M.childNodes.length>0){L+=G(M)}L+="</"+N+">"}return L};if(g.getDefs){p=G(g.getDefs())}else{x=g.gradientsColl;if(x){t=x.keys;y=x.items;B=0;o=t.length}for(;B<o;B++){K=t[B];u=y[B];q=g.gradientsColl.getByKey(K);p+='<linearGradient id="'+K+'" x1="0" y1="0" x2="1" y2="1">';var A=q.colors.replace(j,"rgb($1|$2|$3)");A=A.replace(h,"rgba($1|$2|$3|$4)");J=A.split(",");for(E=0,I=J.length;E<I;E++){z=J[E].split(" ");A=Ext.draw.Color.fromString(z[1].replace(/\|/g,","));p+='<stop offset="'+z[0]+'" stop-color="'+A.toString()+'" stop-opacity="1"></stop>'}p+="</linearGradient>"}}w+="<defs>"+p+"</defs>";w+=k.rect({attr:{width:"100%",height:"100%",fill:"#fff",stroke:"none",opacity:"0"}});D=new Array(F);for(E=0;E<F;E++){D[E]=E}D.sort(function(M,L){s=v[M].attr.zIndex||0;r=v[L].attr.zIndex||0;if(s==r){return M-L}return s-r});for(E=0;E<F;E++){H=v[D[E]];if(!H.attr.hidden){w+=k[H.type](H)}}w+="</svg>";return w},d=function(q){var p="",o;for(o in q){if(q.hasOwnProperty(o)&&q[o]!=null){p+=o+'="'+q[o]+'" '}}return p};return{singleton:true,generate:function(o,p){p=p||{};n(o);return a()+l()}}});Ext.define("Ext.draw.engine.Vml",{extend:"Ext.draw.Surface",requires:["Ext.draw.Draw","Ext.draw.Color","Ext.draw.Sprite","Ext.draw.Matrix","Ext.Element"],engine:"Vml",map:{M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},bitesRe:/([clmz]),?([^clmz]*)/gi,valRe:/-?[^,\s\-]+/g,fillUrlRe:/^url\(\s*['"]?([^\)]+?)['"]?\s*\)$/i,pathlike:/^(path|rect)$/,NonVmlPathRe:/[ahqstv]/ig,partialPathRe:/[clmz]/g,fontFamilyRe:/^['"]+|['"]+$/g,baseVmlCls:Ext.baseCSSPrefix+"vml-base",vmlGroupCls:Ext.baseCSSPrefix+"vml-group",spriteCls:Ext.baseCSSPrefix+"vml-sprite",measureSpanCls:Ext.baseCSSPrefix+"vml-measure-span",zoom:21600,coordsize:1000,coordorigin:"0 0",zIndexShift:0,orderSpritesByZIndex:false,path2vml:function(t){var n=this,u=n.NonVmlPathRe,b=n.map,e=n.valRe,s=n.zoom,d=n.bitesRe,g=Ext.Function.bind(Ext.draw.Draw.pathToAbsolute,Ext.draw.Draw),m,o,c,a,k,q,h,l;if(String(t).match(u)){g=Ext.Function.bind(Ext.draw.Draw.path2curve,Ext.draw.Draw)}else{if(!String(t).match(n.partialPathRe)){m=String(t).replace(d,function(r,w,j){var v=[],i=w.toLowerCase()=="m",p=b[w];j.replace(e,function(x){if(i&&v.length===2){p+=v+b[w=="m"?"l":"L"];v=[]}v.push(Math.round(x*s))});return p+v});return m}}o=g(t);m=[];for(k=0,q=o.length;k<q;k++){c=o[k];a=o[k][0].toLowerCase();if(a=="z"){a="x"}for(h=1,l=c.length;h<l;h++){a+=Math.round(c[h]*n.zoom)+(h!=l-1?",":"")}m.push(a)}return m.join(" ")},translateAttrs:{radius:"r",radiusX:"rx",radiusY:"ry",lineWidth:"stroke-width",fillOpacity:"fill-opacity",strokeOpacity:"stroke-opacity",strokeLinejoin:"stroke-linejoin"},minDefaults:{circle:{fill:"none",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},ellipse:{cx:0,cy:0,rx:0,ry:0,fill:"none",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},rect:{x:0,y:0,width:0,height:0,rx:0,ry:0,fill:"none",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},text:{x:0,y:0,"text-anchor":"start",font:'10px "Arial"',fill:"#000",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},path:{d:"M0,0",fill:"none",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},image:{x:0,y:0,width:0,height:0,preserveAspectRatio:"none",opacity:null}},onMouseEnter:function(a){this.fireEvent("mouseenter",a)},onMouseLeave:function(a){this.fireEvent("mouseleave",a)},processEvent:function(b,g){var d=g.getTarget(),a=this.surface,c;this.fireEvent(b,g);c=this.items.get(d.id);if(c){c.fireEvent(b,c,g)}},createSpriteElement:function(h){var e=this,d=h.attr,g=h.type,j=e.zoom,b=h.vml||(h.vml={}),k=Math.round,c=(g==="image")?e.createNode("image"):e.createNode("shape"),l,i,a;c.coordsize=j+" "+j;c.coordorigin=d.coordorigin||"0 0";Ext.get(c).addCls(e.spriteCls);if(g=="text"){b.path=l=e.createNode("path");l.textpathok=true;b.textpath=a=e.createNode("textpath");a.on=true;c.appendChild(a);c.appendChild(l)}c.id=h.id;h.el=Ext.get(c);h.el.setStyle("zIndex",-e.zIndexShift);e.el.appendChild(c);if(g!=="image"){i=e.createNode("skew");i.on=true;c.appendChild(i);h.skew=i}h.matrix=new Ext.draw.Matrix();h.bbox={plain:null,transform:null};this.applyAttrs(h);this.applyTransformations(h);h.fireEvent("render",h);return h.el},getBBoxText:function(b){var a=b.vml;return{x:a.X+(a.bbx||0)-a.W/2,y:a.Y-a.H/2,width:a.W,height:a.H}},applyAttrs:function(m){var s=this,c=m.vml,j=m.group,a=m.attr,b=m.el,o=b.dom,p,u,r,n,k,q,l,t,e,d,h,g;if(j){r=[].concat(j);k=r.length;for(n=0;n<k;n++){j=r[n];s.getGroup(j).add(m)}delete m.group}q=s.scrubAttrs(m)||{};if(m.zIndexDirty){s.setZIndex(m)}Ext.applyIf(q,s.minDefaults[m.type]);if(m.type=="image"){Ext.apply(m.attr,{x:q.x,y:q.y,width:q.width,height:q.height});b.setStyle({width:q.width+"px",height:q.height+"px"});o.src=q.src}if(o.href){o.href=q.href}if(o.title){o.title=q.title}if(o.target){o.target=q.target}if(o.cursor){o.cursor=q.cursor}if(m.dirtyHidden){(q.hidden)?s.hidePrim(m):s.showPrim(m);m.dirtyHidden=false}if(m.dirtyPath){if(m.type=="circle"||m.type=="ellipse"){e=q.x;d=q.y;h=q.rx||q.r||0;g=q.ry||q.r||0;o.path=Ext.String.format("ar{0},{1},{2},{3},{4},{1},{4},{1}",Math.round((e-h)*s.zoom),Math.round((d-g)*s.zoom),Math.round((e+h)*s.zoom),Math.round((d+g)*s.zoom),Math.round(e*s.zoom));m.dirtyPath=false}else{if(m.type!=="text"&&m.type!=="image"){m.attr.path=q.path=s.setPaths(m,q)||q.path;o.path=s.path2vml(q.path);m.dirtyPath=false}}}if("clip-rect" in q){s.setClip(m,q)}if(m.type=="text"){s.setTextAttributes(m,q)}if(q.opacity||q["stroke-opacity"]||q.fill){s.setFill(m,q)}if(q.stroke||q["stroke-opacity"]||q.fill){s.setStroke(m,q)}p=a.style;if(p){b.setStyle(p)}m.dirty=false},setZIndex:function(e){var h=this,j=e.attr.zIndex,b=h.zIndexShift,c,a,g,d;if(j<b){c=h.items.items;a=c.length;for(d=0;d<a;d++){if((j=c[d].attr.zIndex)&&j<b){b=j}}h.zIndexShift=b;for(d=0;d<a;d++){g=c[d];if(g.el){g.el.setStyle("zIndex",g.attr.zIndex-b)}g.zIndexDirty=false}}else{if(e.el){e.el.setStyle("zIndex",j-b);e.zIndexDirty=false}}},setPaths:function(c,d){var a=c.attr,b=c.attr["stroke-width"]||1;c.bbox.plain=null;c.bbox.transform=null;if(c.type=="circle"){a.rx=a.ry=d.r;return Ext.draw.Draw.ellipsePath(c)}else{if(c.type=="ellipse"){a.rx=d.rx;a.ry=d.ry;return Ext.draw.Draw.ellipsePath(c)}else{if(c.type=="rect"){a.rx=a.ry=d.r;return Ext.draw.Draw.rectPath(c)}else{if(c.type=="path"&&a.path){return Ext.draw.Draw.pathToAbsolute(a.path)}}}}return false},setFill:function(k,e){var h=this,c=k.el.dom,j=c.fill,b=false,g,i,a,l,d;if(!j){j=c.fill=h.createNode("fill");b=true}if(Ext.isArray(e.fill)){e.fill=e.fill[0]}if(e.fill=="none"){j.on=false}else{if(typeof e.opacity=="number"){j.opacity=e.opacity}if(typeof e["fill-opacity"]=="number"){j.opacity=e["fill-opacity"]}j.on=true;if(typeof e.fill=="string"){a=e.fill.match(h.fillUrlRe);if(a){a=a[1];if(a.charAt(0)=="#"){i=h.gradientsColl.getByKey(a.substring(1))}if(i){l=e.rotation;d=-(i.angle+270+(l?l.degrees:0))%360;if(d===0){d=180}j.angle=d;j.type="gradient";j.method="sigma";if(j.colors){j.colors.value=i.colors}else{j.colors=i.colors}}else{j.src=a;j.type="tile"}}else{j.color=Ext.draw.Color.toHex(e.fill);j.src="";j.type="solid"}}}if(b){c.appendChild(j)}},setStroke:function(b,h){var e=this,d=b.el.dom,i=b.strokeEl,g=false,c,a;if(!i){i=b.strokeEl=e.createNode("stroke");g=true}if(Ext.isArray(h.stroke)){h.stroke=h.stroke[0]}if(!h.stroke||h.stroke=="none"||h.stroke==0||h["stroke-width"]==0){i.on=false}else{i.on=true;if(h.stroke&&!h.stroke.match(e.fillUrlRe)){i.color=Ext.draw.Color.toHex(h.stroke)}i.dashstyle=h["stroke-dasharray"]?"dash":"solid";i.joinstyle=h["stroke-linejoin"];i.endcap=h["stroke-linecap"]||"round";i.miterlimit=h["stroke-miterlimit"]||8;c=parseFloat(h["stroke-width"]||1)*0.75;a=h["stroke-opacity"]||1;if(Ext.isNumber(c)&&c<1){i.weight=1;i.opacity=a*c}else{i.weight=c;i.opacity=a}}if(g){d.appendChild(i)}},setClip:function(b,g){var e=this,c=b.el,a=b.clipEl,d=String(g["clip-rect"]).split(e.separatorRe);if(!a){a=b.clipEl=e.el.insertFirst(Ext.getDoc().dom.createElement("div"));a.addCls(Ext.baseCSSPrefix+"vml-sprite")}if(d.length==4){d[2]=+d[2]+(+d[0]);d[3]=+d[3]+(+d[1]);a.setStyle("clip",Ext.String.format("rect({1}px {2}px {3}px {0}px)",d[0],d[1],d[2],d[3]));a.setSize(e.el.width,e.el.height)}else{a.setStyle("clip","")}},setTextAttributes:function(i,c){var h=this,a=i.vml,e=a.textpath.style,g=h.span.style,j=h.zoom,k=Math.round,l={fontSize:"font-size",fontWeight:"font-weight",fontStyle:"font-style"},b,d;if(i.dirtyFont){if(c.font){e.font=g.font=c.font}if(c["font-family"]){e.fontFamily='"'+c["font-family"].split(",")[0].replace(h.fontFamilyRe,"")+'"';g.fontFamily=c["font-family"]}for(b in l){d=c[l[b]];if(d){e[b]=g[b]=d}}h.setText(i,c.text);if(a.textpath.string){h.span.innerHTML=String(a.textpath.string).replace(/</g,"&#60;").replace(/&/g,"&#38;").replace(/\n/g,"<br/>")}a.W=h.span.offsetWidth;a.H=h.span.offsetHeight+2;if(c["text-anchor"]=="middle"){e["v-text-align"]="center"}else{if(c["text-anchor"]=="end"){e["v-text-align"]="right";a.bbx=-Math.round(a.W/2)}else{e["v-text-align"]="left";a.bbx=Math.round(a.W/2)}}}a.X=c.x;a.Y=c.y;a.path.v=Ext.String.format("m{0},{1}l{2},{1}",Math.round(a.X*j),Math.round(a.Y*j),Math.round(a.X*j)+1);i.bbox.plain=null;i.bbox.transform=null;i.dirtyFont=false},setText:function(a,b){a.vml.textpath.string=Ext.htmlDecode(b)},hide:function(){this.el.hide()},show:function(){this.el.show()},hidePrim:function(a){a.el.addCls(Ext.baseCSSPrefix+"hide-visibility")},showPrim:function(a){a.el.removeCls(Ext.baseCSSPrefix+"hide-visibility")},setSize:function(b,a){var c=this;b=b||c.width;a=a||c.height;c.width=b;c.height=a;if(c.el){if(b!=undefined){c.el.setWidth(b)}if(a!=undefined){c.el.setHeight(a)}}c.callParent(arguments)},applyViewBox:function(){var g=this,h=g.viewBox,e=g.width,b=g.height,c,a,d;g.callParent();if(h&&(e||b)){c=g.items.items;a=c.length;for(d=0;d<a;d++){g.applyTransformations(c[d])}}},onAdd:function(a){this.callParent(arguments);if(this.el){this.renderItem(a)}},onRemove:function(a){if(a.el){a.el.remove();delete a.el}this.callParent(arguments)},render:function(a){var c=this,g=Ext.getDoc().dom,b;if(!c.createNode){try{if(!g.namespaces.rvml){g.namespaces.add("rvml","urn:schemas-microsoft-com:vml")}c.createNode=function(e){return g.createElement("<rvml:"+e+' class="rvml">')}}catch(d){c.createNode=function(e){return g.createElement("<"+e+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}}if(!c.el){b=g.createElement("div");c.el=Ext.get(b);c.el.addCls(c.baseVmlCls);c.span=g.createElement("span");Ext.get(c.span).addCls(c.measureSpanCls);b.appendChild(c.span);c.el.setSize(c.width||0,c.height||0);a.appendChild(b);c.el.on({scope:c,mouseup:c.onMouseUp,mousedown:c.onMouseDown,mouseover:c.onMouseOver,mouseout:c.onMouseOut,mousemove:c.onMouseMove,mouseenter:c.onMouseEnter,mouseleave:c.onMouseLeave,click:c.onClick,dblclick:c.onDblClick})}c.renderAll()},renderAll:function(){this.items.each(this.renderItem,this)},redraw:function(a){a.dirty=true;this.renderItem(a)},renderItem:function(a){if(!this.el){return}if(!a.el){this.createSpriteElement(a)}if(a.dirty){this.applyAttrs(a);if(a.dirtyTransform){this.applyTransformations(a)}}},rotationCompensation:function(d,c,a){var b=new Ext.draw.Matrix();b.rotate(-d,0.5,0.5);return{x:b.x(c,a),y:b.y(c,a)}},transform:function(x,I){var H=this,b=H.getBBox(x,true),j=b.x+b.width*0.5,h=b.y+b.height*0.5,B=new Ext.draw.Matrix(),q=x.transformations,v=q.length,C=0,o=0,d=1,c=1,n="",g=x.el,E=g.dom,z=E.style,a=H.zoom,k=x.skew,D=H.viewBoxShift,G,F,s,l,r,p,A,w,u,t,e,m;for(;C<v;C++){s=q[C];l=s.type;if(l=="translate"){B.translate(s.x,s.y)}else{if(l=="rotate"){B.rotate(s.degrees,s.x,s.y);o+=s.degrees}else{if(l=="scale"){B.scale(s.x,s.y,s.centerX,s.centerY);d*=s.x;c*=s.y}}}}x.matrix=B.clone();if(I){return}if(D){B.prepend(D.scale,0,0,D.scale,D.dx*D.scale,D.dy*D.scale)}if(x.type!="image"&&k){k.origin="0,0";k.matrix=B.toString();m=B.offset();if(m[0]>32767){m[0]=32767}else{if(m[0]<-32768){m[0]=-32768}}if(m[1]>32767){m[1]=32767}else{if(m[1]<-32768){m[1]=-32768}}k.offset=m}else{z.filter=B.toFilter();z.left=Math.min(B.x(b.x,b.y),B.x(b.x+b.width,b.y),B.x(b.x,b.y+b.height),B.x(b.x+b.width,b.y+b.height))+"px";z.top=Math.min(B.y(b.x,b.y),B.y(b.x+b.width,b.y),B.y(b.x,b.y+b.height),B.y(b.x+b.width,b.y+b.height))+"px"}},createItem:function(a){return Ext.create("Ext.draw.Sprite",a)},getRegion:function(){return this.el.getRegion()},addCls:function(a,b){if(a&&a.el){a.el.addCls(b)}},removeCls:function(a,b){if(a&&a.el){a.el.removeCls(b)}},addGradient:function(g){var d=this.gradientsColl||(this.gradientsColl=Ext.create("Ext.util.MixedCollection")),a=[],j=Ext.create("Ext.util.MixedCollection"),l,e,b,h,k,c;j.addAll(g.stops);j.sortByKey("ASC",function(m,i){m=parseInt(m,10);i=parseInt(i,10);return m>i?1:(m<i?-1:0)});l=j.keys;e=j.items;b=l.length;for(c=0;c<b;c++){h=l[c];k=e[c];a.push(h+"% "+k.color)}d.add(g.id,{colors:a.join(","),angle:g.angle})},destroy:function(){var a=this;a.callParent(arguments);if(a.el){a.el.remove()}delete a.el}});Ext.define("Ext.flash.Component",{extend:"Ext.Component",alternateClassName:"Ext.FlashComponent",alias:"widget.flash",flashVersion:"9.0.115",backgroundColor:"#ffffff",wmode:"opaque",swfWidth:"100%",swfHeight:"100%",expressInstall:false,renderTpl:['<div id="{swfId}"></div>'],initComponent:function(){this.callParent();this.addEvents("success","failure")},beforeRender:function(){this.callParent();Ext.applyIf(this.renderData,{swfId:this.getSwfId()})},afterRender:function(){var b=this,a=Ext.apply({},b.flashParams),c=Ext.apply({},b.flashVars);b.callParent();a=Ext.apply({allowScriptAccess:"always",bgcolor:b.backgroundColor,wmode:b.wmode},a);c=Ext.apply({allowedDomain:document.location.hostname},c);new swfobject.embedSWF(b.url,b.getSwfId(),b.swfWidth,b.swfHeight,b.flashVersion,b.expressInstall?b.statics.EXPRESS_INSTALL_URL:undefined,c,a,b.flashAttributes,Ext.bind(b.swfCallback,b))},swfCallback:function(b){var a=this;if(b.success){a.swf=Ext.get(b.ref);a.onSuccess();a.fireEvent("success",a)}else{a.onFailure();a.fireEvent("failure",a)}},getSwfId:function(){return this.swfId||(this.swfId="extswf"+this.getAutoId())},onSuccess:function(){this.swf.setStyle("visibility","inherit")},onFailure:Ext.emptyFn,beforeDestroy:function(){var b=this,a=b.swf;if(a){swfobject.removeSWF(b.getSwfId());Ext.destroy(a);delete b.swf}b.callParent()},statics:{EXPRESS_INSTALL_URL:"http://swfobject.googlecode.com/svn/trunk/swfobject/expressInstall.swf"}});Ext.define("Ext.form.action.Action",{alternateClassName:"Ext.form.Action",submitEmptyText:true,constructor:function(a){if(a){Ext.apply(this,a)}var b=a.params;if(Ext.isString(b)){this.params=Ext.Object.fromQueryString(b)}},run:Ext.emptyFn,onFailure:function(a){this.response=a;this.failureType=Ext.form.action.Action.CONNECT_FAILURE;this.form.afterAction(this,false)},processResponse:function(a){this.response=a;if(!a.responseText&&!a.responseXML){return true}return(this.result=this.handleResponse(a))},getUrl:function(){return this.url||this.form.url},getMethod:function(){return(this.method||this.form.method||"POST").toUpperCase()},getParams:function(){return Ext.apply({},this.params,this.form.baseParams)},createCallback:function(){var c=this,a,b=c.form;return{success:c.onSuccess,failure:c.onFailure,scope:c,timeout:(this.timeout*1000)||(b.timeout*1000),upload:b.fileUpload?c.onSuccess:a}},statics:{CLIENT_INVALID:"client",SERVER_INVALID:"server",CONNECT_FAILURE:"connect",LOAD_FAILURE:"load"}});Ext.define("Ext.form.action.Load",{extend:"Ext.form.action.Action",requires:["Ext.data.Connection"],alternateClassName:"Ext.form.Action.Load",alias:"formaction.load",type:"load",run:function(){Ext.Ajax.request(Ext.apply(this.createCallback(),{method:this.getMethod(),url:this.getUrl(),headers:this.headers,params:this.getParams()}))},onSuccess:function(b){var a=this.processResponse(b),c=this.form;if(a===true||!a.success||!a.data){this.failureType=Ext.form.action.Action.LOAD_FAILURE;c.afterAction(this,false);return}c.clearInvalid();c.setValues(a.data);c.afterAction(this,true)},handleResponse:function(c){var a=this.form.reader,b,d;if(a){b=a.read(c);d=b.records&&b.records[0]?b.records[0].data:null;return{success:b.success,data:d}}return Ext.decode(c.responseText)}});Ext.define("Ext.form.action.Submit",{extend:"Ext.form.action.Action",alternateClassName:"Ext.form.Action.Submit",alias:"formaction.submit",type:"submit",run:function(){var a=this.form;if(this.clientValidation===false||a.isValid()){this.doSubmit()}else{this.failureType=Ext.form.action.Action.CLIENT_INVALID;a.afterAction(this,false)}},doSubmit:function(){var b,a=Ext.apply(this.createCallback(),{url:this.getUrl(),method:this.getMethod(),headers:this.headers});if(this.form.hasUpload()){b=a.form=this.buildForm();a.isUpload=true}else{a.params=this.getParams()}Ext.Ajax.request(a);if(b){Ext.removeNode(b)}},getParams:function(){var c=false,b=this.callParent(),a=this.form.getValues(c,c,this.submitEmptyText!==c);return Ext.apply({},a,b)},buildForm:function(){var k=[],i,q,e=this.form,d=this.getParams(),c=[],g=e.getFields().items,h,r=g.length,j,o,m,n,l,p,b;for(h=0;h<r;h++){j=g[h];if(j.isFileUpload()){c.push(j)}}function a(s,t){k.push({tag:"input",type:"hidden",name:s,value:Ext.String.htmlEncode(t)})}for(o in d){if(d.hasOwnProperty(o)){m=d[o];if(Ext.isArray(m)){l=m.length;for(n=0;n<l;n++){a(o,m[n])}}else{a(o,m)}}}i={tag:"form",action:this.getUrl(),method:this.getMethod(),target:this.target||"_self",style:"display:none",cn:k};if(c.length){i.encoding=i.enctype="multipart/form-data"}q=Ext.DomHelper.append(Ext.getBody(),i);b=c.length;for(p=0;p<b;p++){j=c[p];if(j.rendered){q.appendChild(j.extractFileInput())}}return q},onSuccess:function(b){var c=this.form,d=true,a=this.processResponse(b);if(a!==true&&!a.success){if(a.errors){c.markInvalid(a.errors)}this.failureType=Ext.form.action.Action.SERVER_INVALID;d=false}c.afterAction(this,d)},handleResponse:function(d){var h=this.form,e=h.errorReader,c,j,g,a,b;if(e){c=e.read(d);b=c.records;j=[];if(b){for(g=0,a=b.length;g<a;g++){j[g]=b[g].data}}if(j.length<1){j=null}return{success:c.success,errors:j}}return Ext.decode(d.responseText)}});Ext.define("Ext.util.ComponentDragger",{extend:"Ext.dd.DragTracker",autoStart:500,constructor:function(a,b){this.comp=a;this.initialConstrainTo=b.constrainTo;this.callParent([b])},onStart:function(c){var b=this,a=b.comp;this.startPosition=a.el.getXY();if(a.ghost&&!a.liveDrag){b.proxy=a.ghost();b.dragTarget=b.proxy.header.el}if(b.constrain||b.constrainDelegate){b.constrainTo=b.calculateConstrainRegion()}if(a.beginDrag){a.beginDrag()}},calculateConstrainRegion:function(){var e=this,b=e.comp,i=e.initialConstrainTo,g,h,a=e.proxy?e.proxy.el:b.el,d=(!e.constrainDelegate&&a.shadow&&!a.shadowDisabled)?a.shadow.getShadowSize():0;if(!(i instanceof Ext.util.Region)){i=Ext.fly(i).getViewRegion()}if(d){i.adjust(d[0],-d[1],-d[2],d[3])}if(!e.constrainDelegate){g=Ext.fly(e.dragTarget).getRegion();h=a.getRegion();i.adjust(g.top-h.top,g.right-h.right,g.bottom-h.bottom,g.left-h.left)}return i},onDrag:function(c){var b=this,a=(b.proxy&&!b.comp.liveDrag)?b.proxy:b.comp,d=b.getOffset(b.constrain||b.constrainDelegate?"dragTarget":null);a.setPagePosition(b.startPosition[0]+d[0],b.startPosition[1]+d[1])},onEnd:function(b){var a=this.comp;if(this.proxy&&!a.liveDrag){a.unghost()}if(a.endDrag){a.endDrag()}}});Ext.define("Ext.window.Window",{extend:"Ext.panel.Panel",alternateClassName:"Ext.Window",requires:["Ext.util.ComponentDragger","Ext.util.Region","Ext.EventManager"],alias:"widget.window",baseCls:Ext.baseCSSPrefix+"window",resizable:true,draggable:true,constrain:false,constrainHeader:false,plain:false,minimizable:false,maximizable:false,minHeight:50,minWidth:50,expandOnShow:true,collapsible:false,closable:true,hidden:true,autoRender:true,hideMode:"offsets",floating:true,ariaRole:"alertdialog",itemCls:Ext.baseCSSPrefix+"window-item",initialAlphaNum:/^[a-z0-9]/,overlapHeader:true,ignoreHeaderBorderManagement:true,alwaysFramed:true,isWindow:true,initComponent:function(){var a=this;a.frame=false;a.callParent();a.addEvents("resize","maximize","minimize","restore");if(a.plain){a.addClsWithUI("plain")}if(a.modal){a.ariaRole="dialog"}if(a.floating){a.on({element:"el",mousedown:a.onMouseDown,scope:a})}a.addStateEvents(["maximize","restore","resize","dragend"])},getElConfig:function(){var b=this,a;a=b.callParent();a.tabIndex=-1;return a},getState:function(){var b=this,c=b.callParent()||{},a=!!b.maximized;c.maximized=a;Ext.apply(c,{size:a?b.restoreSize:b.getSize(),pos:a?b.restorePos:b.getPosition()});return c},applyState:function(b){var a=this;if(b){a.maximized=b.maximized;if(a.maximized){a.hasSavedRestore=true;a.restoreSize=b.size;a.restorePos=b.pos}else{Ext.apply(a,{width:b.size.width,height:b.size.height,x:b.pos[0],y:b.pos[1]})}}},onMouseDown:function(b){var a;if(this.floating){if(Ext.fly(b.getTarget()).focusable()){a=true}this.toFront(a)}},onRender:function(b,a){var c=this;c.callParent(arguments);c.focusEl=c.el;if(c.maximizable){c.header.on({scope:c,dblclick:c.toggleMaximize})}},afterRender:function(){var a=this,b;a.callParent();if(a.maximized){a.maximized=false;a.maximize()}if(a.closable){b=a.getKeyMap();b.on(27,a.onEsc,a)}else{b=a.keyMap}if(b&&a.hidden){b.disable()}},initDraggable:function(){var b=this,a;if(!b.header){b.updateHeader(true)}if(b.header){a=Ext.applyIf({el:b.el,delegate:"#"+Ext.escapeId(b.header.id)},b.draggable);if(b.constrain||b.constrainHeader){a.constrain=b.constrain;a.constrainDelegate=b.constrainHeader;a.constrainTo=b.constrainTo||b.container}b.dd=new Ext.util.ComponentDragger(this,a);b.relayEvents(b.dd,["dragstart","drag","dragend"])}},onEsc:function(a,b){if(!Ext.FocusManager||!Ext.FocusManager.enabled||Ext.FocusManager.focusedCmp===this){b.stopEvent();this.close()}},beforeDestroy:function(){var a=this;if(a.rendered){delete this.animateTarget;a.hide();Ext.destroy(a.keyMap)}a.callParent()},addTools:function(){var a=this;a.callParent();if(a.minimizable){a.addTool({type:"minimize",handler:Ext.Function.bind(a.minimize,a,[])})}if(a.maximizable){a.addTool({type:"maximize",handler:Ext.Function.bind(a.maximize,a,[])});a.addTool({type:"restore",handler:Ext.Function.bind(a.restore,a,[]),hidden:true})}},getFocusEl:function(){return this.getDefaultFocus()},getDefaultFocus:function(){var c=this,b,d=c.defaultButton||c.defaultFocus,a;if(d!==undefined){if(Ext.isNumber(d)){b=c.query("button")[d]}else{if(Ext.isString(d)){a=d;if(a.match(c.initialAlphaNum)){b=c.down("#"+a)}if(!b){b=c.down(a)}}else{if(d.focus){b=d}}}}return b||c.el},onFocus:function(){var b=this,a;if((Ext.FocusManager&&Ext.FocusManager.enabled)||((a=b.getDefaultFocus())===b)){b.callParent(arguments)}else{a.focus()}},beforeLayout:function(){var a=this.el.shadow;this.callParent();if(a){a.hide()}},onShow:function(){var a=this;a.callParent(arguments);if(a.expandOnShow){a.expand(false)}a.syncMonitorWindowResize();if(a.keyMap){a.keyMap.enable()}},doClose:function(){var a=this;if(a.hidden){a.fireEvent("close",a);if(a.closeAction=="destroy"){this.destroy()}}else{a.hide(a.animateTarget,a.doClose,a)}},afterHide:function(){var a=this;a.syncMonitorWindowResize();if(a.keyMap){a.keyMap.disable()}a.callParent(arguments)},onWindowResize:function(){var b=this,a;if(b.maximized){b.fitContainer()}else{a=b.getSizeModel();if(a.width.natural||a.height.natural){b.updateLayout()}}b.doConstrain()},minimize:function(){this.fireEvent("minimize",this);return this},afterCollapse:function(){var a=this;if(a.maximizable){a.tools.maximize.hide();a.tools.restore.hide()}if(a.resizer){a.resizer.disable()}a.callParent(arguments)},afterExpand:function(){var a=this;if(a.maximized){a.tools.restore.show()}else{if(a.maximizable){a.tools.maximize.show()}}if(a.resizer){a.resizer.enable()}a.callParent(arguments)},maximize:function(){var a=this;if(!a.maximized){a.expand(false);if(!a.hasSavedRestore){a.restoreSize=a.getSize();a.restorePos=a.getPosition(true)}if(a.maximizable){a.tools.maximize.hide();a.tools.restore.show()}a.maximized=true;a.el.disableShadow();if(a.dd){a.dd.disable()}if(a.resizer){a.resizer.disable()}if(a.collapseTool){a.collapseTool.hide()}a.el.addCls(Ext.baseCSSPrefix+"window-maximized");a.container.addCls(Ext.baseCSSPrefix+"window-maximized-ct");a.syncMonitorWindowResize();a.fitContainer();a.fireEvent("maximize",a)}return a},restore:function(){var a=this,b=a.tools;if(a.maximized){delete a.hasSavedRestore;a.removeCls(Ext.baseCSSPrefix+"window-maximized");if(b.restore){b.restore.hide()}if(b.maximize){b.maximize.show()}if(a.collapseTool){a.collapseTool.show()}a.maximized=false;a.setPosition(a.restorePos);a.setSize(a.restoreSize);delete a.restorePos;delete a.restoreSize;a.el.enableShadow(true);if(a.dd){a.dd.enable()}if(a.resizer){a.resizer.enable()}a.container.removeCls(Ext.baseCSSPrefix+"window-maximized-ct");a.syncMonitorWindowResize();a.doConstrain();a.fireEvent("restore",a)}return a},syncMonitorWindowResize:function(){var b=this,c=b._monitoringResize,d=b.monitorResize||b.constrain||b.constrainHeader||b.maximized,a=b.hidden||b.destroying||b.isDestroyed;if(d&&!a){if(!c){Ext.EventManager.onWindowResize(b.onWindowResize,b);b._monitoringResize=true}}else{if(c){Ext.EventManager.removeResizeListener(b.onWindowResize,b);b._monitoringResize=false}}},toggleMaximize:function(){return this[this.maximized?"restore":"maximize"]()}});Ext.define("Ext.layout.component.field.Field",{extend:"Ext.layout.component.Auto",alias:"layout.field",uses:["Ext.tip.QuickTip","Ext.util.TextMetrics","Ext.util.CSS"],type:"field",naturalSizingProp:"size",beginLayout:function(g){var e=this,a=e.owner,c=g.widthModel,b=a[e.naturalSizingProp],d;e.callParent(arguments);g.labelStrategy=e.getLabelStrategy();g.errorStrategy=e.getErrorStrategy();g.labelContext=g.getEl("labelEl");g.bodyCellContext=g.getEl("bodyEl");g.inputContext=g.getEl("inputEl");g.errorContext=g.getEl("errorEl");if((Ext.isIE6||Ext.isIE7)&&Ext.isStrict&&g.inputContext){e.ieInputWidthAdjustment=g.inputContext.getPaddingInfo().width+g.inputContext.getBorderInfo().width}g.labelStrategy.prepare(g,a);g.errorStrategy.prepare(g,a);if(c.shrinkWrap){e.beginLayoutShrinkWrap(g)}else{if(c.natural){if(typeof b=="number"&&!a.inputWidth){e.beginLayoutFixed(g,(d=b*6.5+20),"px")}else{e.beginLayoutShrinkWrap(g)}g.setWidth(d,false)}else{e.beginLayoutFixed(g,"100","%")}}},beginLayoutFixed:function(c,b,e){var a=c.target,d=a.inputEl,g=a.inputWidth;a.el.setStyle("table-layout","fixed");a.bodyEl.setStyle("width",b+e);if(d&&g){d.setStyle("width",g+"px")}c.isFixed=true},beginLayoutShrinkWrap:function(b){var a=b.target,c=a.inputEl,d=a.inputWidth;if(c&&c.dom){c.dom.removeAttribute("size");if(d){c.setStyle("width",d+"px")}}a.el.setStyle("table-layout","auto");a.bodyEl.setStyle("width","")},finishedLayout:function(b){var a=this.owner;this.callParent(arguments);b.labelStrategy.finishedLayout(b,a);b.errorStrategy.finishedLayout(b,a)},calculateOwnerHeightFromContentHeight:function(b,a){return a},measureContentHeight:function(a){return a.el.getHeight()},measureContentWidth:function(a){return a.el.getWidth()},measureLabelErrorHeight:function(a){return a.labelStrategy.getHeight(a)+a.errorStrategy.getHeight(a)},onFocus:function(){this.getErrorStrategy().onFocus(this.owner)},getLabelStrategy:function(){var b=this,c=b.labelStrategies,a=b.owner.labelAlign;return c[a]||c.base},getErrorStrategy:function(){var c=this,a=c.owner,d=c.errorStrategies,b=a.msgTarget;return !a.preventMark&&Ext.isString(b)?(d[b]||d.elementId):d.none},labelStrategies:(function(){var a={prepare:function(e,b){var c=b.labelCls+"-"+b.labelAlign,d=b.labelEl;if(d){d.addCls(c)}},getHeight:function(){return 0},finishedLayout:Ext.emptyFn};return{base:a,top:Ext.applyIf({getHeight:function(e){var c=e.labelContext,d=c.props,b=d.height;if(b===undefined){d.height=b=c.el.getHeight()}return b}},a),left:a,right:a}}()),errorStrategies:(function(){function d(h){var i=Ext.layout.component.field.Field.tip,j;if(i&&i.isVisible()){j=i.activeTarget;if(j&&j.el===h.getActionEl().dom){i.toFront(true)}}}var c=Ext.applyIf,b=Ext.emptyFn,a=Ext.baseCSSPrefix+"form-invalid-icon",g,e={prepare:function(j,h){var i=h.errorEl;if(i){i.setDisplayed(false)}},getHeight:function(){return 0},onFocus:b,finishedLayout:b};return{none:e,side:c({prepare:function(k,i){var m=i.errorEl,j=i.sideErrorCell,h=i.hasActiveError(),l;if(!g){g=(l=Ext.getBody().createChild({style:"position:absolute",cls:a})).getWidth();l.remove()}m.addCls(a);m.set({"data-errorqtip":i.getActiveError()||""});if(i.autoFitErrors){m.setDisplayed(h)}else{m.setVisible(h)}if(j&&i.autoFitErrors){j.setDisplayed(h)}i.bodyEl.dom.colSpan=i.getBodyColspan();Ext.layout.component.field.Field.initTip()},onFocus:d},e),under:c({prepare:function(j,h){var k=h.errorEl,i=Ext.baseCSSPrefix+"form-invalid-under";k.addCls(i);k.setDisplayed(h.hasActiveError())},getHeight:function(k){var h=0,i,j;if(k.target.hasActiveError()){i=k.errorContext;j=i.props;h=j.height;if(h===undefined){j.height=h=i.el.getHeight()}}return h}},e),qtip:c({prepare:function(i,h){Ext.layout.component.field.Field.initTip();h.getActionEl().set({"data-errorqtip":h.getActiveError()||""})},onFocus:d},e),title:c({prepare:function(i,h){h.el.set({title:h.getActiveError()||""})}},e),elementId:c({prepare:function(i,h){var j=Ext.fly(h.msgTarget);if(j){j.dom.innerHTML=h.getActiveError()||"";j.setDisplayed(h.hasActiveError())}}},e)}}()),statics:{initTip:function(){var a=this.tip;if(!a){a=this.tip=Ext.create("Ext.tip.QuickTip",{baseCls:Ext.baseCSSPrefix+"form-invalid-tip"});a.tagConfig=Ext.apply({},{attribute:"errorqtip"},a.tagConfig)}},destroyTip:function(){var a=this.tip;if(a){a.destroy();delete this.tip}}}});Ext.define("Ext.layout.component.field.Text",{extend:"Ext.layout.component.field.Field",alias:"layout.textfield",requires:["Ext.util.TextMetrics"],type:"textfield",canGrowWidth:true,beginLayoutCycle:function(b){var a=this;a.callParent(arguments);if(b.shrinkWrap){b.inputContext.el.setStyle("height","")}},measureContentWidth:function(c){var h=this,b=h.owner,a=h.callParent(arguments),g=c.inputContext,k,j,d,i,e;if(b.grow&&h.canGrowWidth&&!c.state.growHandled){k=b.inputEl;j=Ext.util.Format.htmlEncode(k.dom.value||(b.hasFocus?"":b.emptyText)||"");j+=b.growAppend;d=k.getTextWidth(j)+g.getFrameInfo().width;i=b.growMax;e=Math.min(i,a);i=Math.max(b.growMin,i,e);d=Ext.Number.constrain(d,b.growMin,i);g.setWidth(d);c.state.growHandled=true;g.domBlock(h,"width");a=NaN}return a},publishInnerHeight:function(b,a){b.inputContext.setHeight(a-this.measureLabelErrorHeight(b))},beginLayoutFixed:function(d,a,e){var b=this,c=b.ieInputWidthAdjustment;if(c){b.owner.bodyEl.setStyle("padding-right",c+"px");if(e==="px"){a-=c}}b.callParent(arguments)}});Ext.define("Ext.form.Labelable",{requires:["Ext.XTemplate"],autoEl:{tag:"table",cellpadding:0},childEls:["labelCell","labelEl","bodyEl","sideErrorCell","errorEl","inputRow","bottomPlaceHolder"],labelableRenderTpl:['<tr id="{id}-inputRow" <tpl if="inFormLayout">id="{id}"</tpl>>','<tpl if="labelOnLeft">','<td id="{id}-labelCell" style="{labelCellStyle}" {labelCellAttrs}>',"{beforeLabelTpl}",'<label id="{id}-labelEl" {labelAttrTpl}<tpl if="inputId"> for="{inputId}"</tpl> class="{labelCls}"','<tpl if="labelStyle"> style="{labelStyle}"</tpl>>',"{beforeLabelTextTpl}",'<tpl if="fieldLabel">{fieldLabel}{labelSeparator}</tpl>',"{afterLabelTextTpl}","</label>","{afterLabelTpl}","</td>","</tpl>",'<td class="{baseBodyCls} {fieldBodyCls}" id="{id}-bodyEl" colspan="{bodyColspan}" role="presentation">',"{beforeBodyEl}","<tpl if=\"labelAlign=='top'\">","{beforeLabelTpl}",'<div id="{id}-labelCell" style="{labelCellStyle}">','<label id="{id}-labelEl" {labelAttrTpl}<tpl if="inputId"> for="{inputId}"</tpl> class="{labelCls}"','<tpl if="labelStyle"> style="{labelStyle}"</tpl>>',"{beforeLabelTextTpl}",'<tpl if="fieldLabel">{fieldLabel}{labelSeparator}</tpl>',"{afterLabelTextTpl}","</label>","</div>","{afterLabelTpl}","</tpl>","{beforeSubTpl}","{[values.$comp.getSubTplMarkup()]}","{afterSubTpl}","<tpl if=\"msgTarget==='side'\">","{afterBodyEl}","</td>","<td id=\"{id}-sideErrorCell\" vAlign=\"{[values.labelAlign==='top' && !values.hideLabel ? 'bottom' : 'middle']}\" style=\"{[values.autoFitErrors ? 'display:none' : '']}\" width=\"{errorIconWidth}\">",'<div id="{id}-errorEl" class="{errorMsgCls}" style="display:none;width:{errorIconWidth}px"></div>',"</td>","<tpl elseif=\"msgTarget=='under'\">",'<div id="{id}-errorEl" class="{errorMsgClass}" colspan="2" style="display:none"></div>',"{afterBodyEl}","</td>","</tpl>","</tr>",{disableFormats:true}],activeErrorsTpl:['<tpl if="errors && errors.length">','<ul><tpl for="errors"><li>{.}</li></tpl></ul>',"</tpl>"],isFieldLabelable:true,formItemCls:Ext.baseCSSPrefix+"form-item",labelCls:Ext.baseCSSPrefix+"form-item-label",errorMsgCls:Ext.baseCSSPrefix+"form-error-msg",baseBodyCls:Ext.baseCSSPrefix+"form-item-body",fieldBodyCls:"",clearCls:Ext.baseCSSPrefix+"clear",invalidCls:Ext.baseCSSPrefix+"form-invalid",fieldLabel:undefined,labelAlign:"left",labelWidth:100,labelPad:5,labelSeparator:":",hideLabel:false,hideEmptyLabel:true,preventMark:false,autoFitErrors:true,msgTarget:"qtip",noWrap:true,labelableInsertions:["beforeBodyEl","afterBodyEl","beforeLabelTpl","afterLabelTpl","beforeSubTpl","afterSubTpl","beforeLabelTextTpl","afterLabelTextTpl","labelAttrTpl"],labelableRenderProps:["allowBlank","id","labelAlign","fieldBodyCls","baseBodyCls","clearCls","labelSeparator","msgTarget"],initLabelable:function(){var a=this,b=a.padding;if(b){a.padding=undefined;a.extraMargins=Ext.Element.parseBox(b)}a.addCls(a.formItemCls);a.lastActiveError="";a.addEvents("errorchange")},trimLabelSeparator:function(){var c=this,d=c.labelSeparator,a=c.fieldLabel||"",b=a.substr(a.length-1);return b===d?a.slice(0,-1):a},getFieldLabel:function(){return this.trimLabelSeparator()},setFieldLabel:function(b){b=b||"";var c=this,d=c.labelSeparator,a=c.labelEl;c.fieldLabel=b;if(c.rendered){if(Ext.isEmpty(b)&&c.hideEmptyLabel){a.parent().setDisplayed("none")}else{if(d){b=c.trimLabelSeparator()+d}a.update(b);a.parent().setDisplayed("")}c.updateLayout()}},getInsertionRenderData:function(d,e){var b=e.length,a,c;while(b--){a=e[b];c=this[a];if(c){if(typeof c!="string"){if(!c.isTemplate){c=Ext.XTemplate.getTpl(this,a)}c=c.apply(d)}}d[a]=c||""}return d},getLabelableRenderData:function(){var b=this,c,d,a=b.labelAlign==="top";if(!Ext.form.Labelable.errorIconWidth){Ext.form.Labelable.errorIconWidth=(d=Ext.resetElement.createChild({style:"position:absolute",cls:Ext.baseCSSPrefix+"form-invalid-icon"})).getWidth();d.remove()}c=Ext.copyTo({inFormLayout:b.ownerLayout&&b.ownerLayout.type==="form",inputId:b.getInputId(),labelOnLeft:!a,hideLabel:!b.hasVisibleLabel(),fieldLabel:b.getFieldLabel(),labelCellStyle:b.getLabelCellStyle(),labelCellAttrs:b.getLabelCellAttrs(),labelCls:b.getLabelCls(),labelStyle:b.getLabelStyle(),bodyColspan:b.getBodyColspan(),externalError:!b.autoFitErrors,errorMsgCls:b.getErrorMsgCls(),errorIconWidth:Ext.form.Labelable.errorIconWidth},b,b.labelableRenderProps,true);b.getInsertionRenderData(c,b.labelableInsertions);return c},beforeLabelableRender:function(){var a=this;if(a.ownerLayout){a.addCls(Ext.baseCSSPrefix+a.ownerLayout.type+"-form-item")}},onLabelableRender:function(){var c=this,d,a,b={};if(c.extraMargins){d=c.el.getMargin();for(a in d){if(d.hasOwnProperty(a)){b["margin-"+a]=(d[a]+c.extraMargins[a])+"px"}}c.el.setStyle(b)}},hasVisibleLabel:function(){if(this.hideLabel){return false}return !(this.hideEmptyLabel&&!this.getFieldLabel())},getBodyColspan:function(){var b=this,a;if(b.msgTarget==="side"&&(!b.autoFitErrors||b.hasActiveError())){a=1}else{a=2}if(b.labelAlign!=="top"&&!b.hasVisibleLabel()){a++}return a},getLabelCls:function(){var b=this.labelCls,a=this.labelClsExtra;if(this.labelAlign==="top"){b+="-top"}return a?b+" "+a:b},getLabelCellStyle:function(){var b=this,a=b.hideLabel||(!b.fieldLabel&&b.hideEmptyLabel);return a?"display:none;":""},getErrorMsgCls:function(){var b=this,a=(b.hideLabel||(!b.fieldLabel&&b.hideEmptyLabel));return b.errorMsgCls+(!a&&b.labelAlign==="top"?" "+Ext.baseCSSPrefix+"lbl-top-err-icon":"")},getLabelCellAttrs:function(){var c=this,b=c.labelAlign,a="";if(b!=="top"){a='valign="top" halign="'+b+'" width="'+(c.labelWidth+c.labelPad)+'"'}return a+' class="'+Ext.baseCSSPrefix+'field-label-cell"'},getLabelStyle:function(){var c=this,b=c.labelPad,a="";if(c.labelAlign!=="top"){if(c.labelWidth){a="width:"+c.labelWidth+"px;"}a+="margin-right:"+b+"px;"}return a+(c.labelStyle||"")},getSubTplMarkup:function(){return""},getInputId:function(){return""},getActiveError:function(){return this.activeError||""},hasActiveError:function(){return !!this.getActiveError()},setActiveError:function(a){this.setActiveErrors(a)},getActiveErrors:function(){return this.activeErrors||[]},setActiveErrors:function(a){a=Ext.Array.from(a);this.activeError=a[0];this.activeErrors=a;this.activeError=this.getTpl("activeErrorsTpl").apply({errors:a});this.renderActiveError()},unsetActiveError:function(){delete this.activeError;delete this.activeErrors;this.renderActiveError()},renderActiveError:function(){var c=this,b=c.getActiveError(),a=!!b;if(b!==c.lastActiveError){c.fireEvent("errorchange",c,b);c.lastActiveError=b}if(c.rendered&&!c.isDestroyed&&!c.preventMark){c.el[a?"addCls":"removeCls"](c.invalidCls);c.getActionEl().dom.setAttribute("aria-invalid",a);if(c.errorEl){c.errorEl.dom.innerHTML=b}}},setFieldDefaults:function(c){var b=this,d,a;for(a in c){if(c.hasOwnProperty(a)){d=c[a];if(!b.hasOwnProperty(a)){b[a]=d}}}}});Ext.define("Ext.form.field.Field",{isFormField:true,disabled:false,submitValue:true,validateOnChange:true,suspendCheckChange:0,initField:function(){this.addEvents("change","validitychange","dirtychange");this.initValue()},initValue:function(){var a=this;a.value=a.transformOriginalValue(a.value);a.originalValue=a.lastValue=a.value;a.suspendCheckChange++;a.setValue(a.value);a.suspendCheckChange--},transformOriginalValue:function(a){return a},getName:function(){return this.name},getValue:function(){return this.value},setValue:function(b){var a=this;a.value=b;a.checkChange();return a},isEqual:function(b,a){return String(b)===String(a)},isEqualAsString:function(b,a){return String(Ext.value(b,""))===String(Ext.value(a,""))},getSubmitData:function(){var a=this,b=null;if(!a.disabled&&a.submitValue&&!a.isFileUpload()){b={};b[a.getName()]=""+a.getValue()}return b},getModelData:function(){var a=this,b=null;if(!a.disabled&&!a.isFileUpload()){b={};b[a.getName()]=a.getValue()}return b},reset:function(){var a=this;a.beforeReset();a.setValue(a.originalValue);a.clearInvalid();delete a.wasValid},beforeReset:Ext.emptyFn,resetOriginalValue:function(){this.originalValue=this.getValue();this.checkDirty()},checkChange:function(){if(!this.suspendCheckChange){var c=this,b=c.getValue(),a=c.lastValue;if(!c.isEqual(b,a)&&!c.isDestroyed){c.lastValue=b;c.fireEvent("change",c,b,a);c.onChange(b,a)}}},onChange:function(b,a){if(this.validateOnChange){this.validate()}this.checkDirty()},isDirty:function(){var a=this;return !a.disabled&&!a.isEqual(a.getValue(),a.originalValue)},checkDirty:function(){var a=this,b=a.isDirty();if(b!==a.wasDirty){a.fireEvent("dirtychange",a,b);a.onDirtyChange(b);a.wasDirty=b}},onDirtyChange:Ext.emptyFn,getErrors:function(a){return[]},isValid:function(){var a=this;return a.disabled||Ext.isEmpty(a.getErrors())},validate:function(){var a=this,b=a.isValid();if(b!==a.wasValid){a.wasValid=b;a.fireEvent("validitychange",a,b)}return b},batchChanges:function(a){try{this.suspendCheckChange++;a()}catch(b){throw b}finally{this.suspendCheckChange--}this.checkChange()},isFileUpload:function(){return false},extractFileInput:function(){return null},markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn});Ext.define("Ext.form.field.Base",{extend:"Ext.Component",mixins:{labelable:"Ext.form.Labelable",field:"Ext.form.field.Field"},alias:"widget.field",alternateClassName:["Ext.form.Field","Ext.form.BaseField"],requires:["Ext.util.DelayedTask","Ext.XTemplate","Ext.layout.component.field.Field"],fieldSubTpl:['<input id="{id}" type="{type}" {inputAttrTpl}',' size="1"','<tpl if="name"> name="{name}"</tpl>','<tpl if="value"> value="{[Ext.util.Format.htmlEncode(values.value)]}"</tpl>','<tpl if="placeholder"> placeholder="{placeholder}"</tpl>','{%if (values.maxLength !== undefined){%} maxlength="{maxLength}"{%}%}','<tpl if="readOnly"> readonly="readonly"</tpl>','<tpl if="disabled"> disabled="disabled"</tpl>','<tpl if="tabIdx"> tabIndex="{tabIdx}"</tpl>','<tpl if="fieldStyle"> style="{fieldStyle}"</tpl>',' class="{fieldCls} {typeCls} {editableCls}" autocomplete="off"/>',{disableFormats:true}],subTplInsertions:["inputAttrTpl"],inputType:"text",invalidText:"The value in this field is invalid",fieldCls:Ext.baseCSSPrefix+"form-field",focusCls:"form-focus",dirtyCls:Ext.baseCSSPrefix+"form-dirty",checkChangeEvents:Ext.isIE&&(!document.documentMode||document.documentMode<9)?["change","propertychange"]:["change","input","textInput","keyup","dragdrop"],checkChangeBuffer:50,componentLayout:"field",readOnly:false,readOnlyCls:Ext.baseCSSPrefix+"form-readonly",validateOnBlur:true,hasFocus:false,baseCls:Ext.baseCSSPrefix+"field",maskOnDisable:false,initComponent:function(){var a=this;a.callParent();a.subTplData=a.subTplData||{};a.addEvents("specialkey","writeablechange");a.initLabelable();a.initField();if(!a.name){a.name=a.getInputId()}},beforeRender:function(){var a=this;a.callParent(arguments);a.beforeLabelableRender(arguments);if(a.readOnly){a.addCls(a.readOnlyCls)}},getInputId:function(){return this.inputId||(this.inputId=this.id+"-inputEl")},getSubTplData:function(){var c=this,b=c.inputType,a=c.getInputId(),d;d=Ext.apply({id:a,cmpId:c.id,name:c.name||a,disabled:c.disabled,readOnly:c.readOnly,value:c.getRawValue(),type:b,fieldCls:c.fieldCls,fieldStyle:c.getFieldStyle(),tabIdx:c.tabIndex,typeCls:Ext.baseCSSPrefix+"form-"+(b==="password"?"text":b)},c.subTplData);c.getInsertionRenderData(d,c.subTplInsertions);return d},afterFirstLayout:function(){this.callParent();var a=this.inputEl;if(a){a.selectable()}},applyRenderSelectors:function(){var a=this;a.callParent();a.inputEl=a.el.getById(a.getInputId())},getSubTplMarkup:function(){return this.getTpl("fieldSubTpl").apply(this.getSubTplData())},initRenderTpl:function(){var a=this;if(!a.hasOwnProperty("renderTpl")){a.renderTpl=a.getTpl("labelableRenderTpl")}return a.callParent()},initRenderData:function(){return Ext.applyIf(this.callParent(),this.getLabelableRenderData())},setFieldStyle:function(a){var b=this,c=b.inputEl;if(c){c.applyStyles(a)}b.fieldStyle=a},getFieldStyle:function(){return"width:100%;"+(Ext.isObject(this.fieldStyle)?Ext.DomHelper.generateStyles(this.fieldStyle):this.fieldStyle||"")},onRender:function(){var a=this;a.callParent(arguments);a.onLabelableRender();a.renderActiveError()},getFocusEl:function(){return this.inputEl},isFileUpload:function(){return this.inputType==="file"},extractFileInput:function(){var b=this,a=b.isFileUpload()?b.inputEl.dom:null,c;if(a){c=a.cloneNode(true);a.parentNode.replaceChild(c,a);b.inputEl=Ext.get(c)}return a},getSubmitData:function(){var a=this,b=null,c;if(!a.disabled&&a.submitValue&&!a.isFileUpload()){c=a.getSubmitValue();if(c!==null){b={};b[a.getName()]=c}}return b},getSubmitValue:function(){return this.processRawValue(this.getRawValue())},getRawValue:function(){var b=this,a=(b.inputEl?b.inputEl.getValue():Ext.value(b.rawValue,""));b.rawValue=a;return a},setRawValue:function(b){var a=this;b=Ext.value(a.transformRawValue(b),"");a.rawValue=b;if(a.inputEl){a.inputEl.dom.value=b}return b},transformRawValue:function(a){return a},valueToRaw:function(a){return""+Ext.value(a,"")},rawToValue:function(a){return a},processRawValue:function(a){return a},getValue:function(){var a=this,b=a.rawToValue(a.processRawValue(a.getRawValue()));a.value=b;return b},setValue:function(b){var a=this;a.setRawValue(a.valueToRaw(b));return a.mixins.field.setValue.call(a,b)},onBoxReady:function(){var a=this;a.callParent();if(a.setReadOnlyOnBoxReady){a.setReadOnly(a.readOnly)}},onDisable:function(){var a=this,b=a.inputEl;a.callParent();if(b){b.dom.disabled=true;if(a.hasActiveError()){a.clearInvalid();a.needsValidateOnEnable=true}}},onEnable:function(){var a=this,b=a.inputEl;a.callParent();if(b){b.dom.disabled=false;if(a.needsValidateOnEnable){delete a.needsValidateOnEnable;a.forceValidation=true;a.isValid();delete a.forceValidation}}},setReadOnly:function(c){var a=this,b=a.inputEl;c=!!c;a[c?"addCls":"removeCls"](a.readOnlyCls);a.readOnly=c;if(b){b.dom.readOnly=c}else{if(a.rendering){a.setReadOnlyOnBoxReady=true}}a.fireEvent("writeablechange",a,c)},fireKey:function(a){if(a.isSpecialKey()){this.fireEvent("specialkey",this,new Ext.EventObjectImpl(a))}},initEvents:function(){var g=this,i=g.inputEl,b,j,c=g.checkChangeEvents,h,a=c.length,d;if(g.inEditor){g.onBlur=Ext.Function.createBuffered(g.onBlur,10)}if(i){g.mon(i,Ext.EventManager.getKeyEvent(),g.fireKey,g);b=new Ext.util.DelayedTask(g.checkChange,g);g.onChangeEvent=j=function(){b.delay(g.checkChangeBuffer)};for(h=0;h<a;h++){d=c[h];if(d==="propertychange"){g.usesPropertychange=true}g.mon(i,d,j)}}g.callParent()},doComponentLayout:function(){var c=this,d=c.inputEl,a=c.usesPropertychange,b="propertychange",e=c.onChangeEvent;if(a){c.mun(d,b,e)}c.callParent(arguments);if(a){c.mon(d,b,e)}},onDirtyChange:function(a){this[a?"addCls":"removeCls"](this.dirtyCls)},isValid:function(){var b=this,a=b.disabled,c=b.forceValidation||!a;return c?b.validateValue(b.processRawValue(b.getRawValue())):a},validateValue:function(b){var a=this,d=a.getErrors(b),c=Ext.isEmpty(d);if(!a.preventMark){if(c){a.clearInvalid()}else{a.markInvalid(d)}}return c},markInvalid:function(c){var b=this,a=b.getActiveError();b.setActiveErrors(Ext.Array.from(c));if(a!==b.getActiveError()){b.updateLayout()}},clearInvalid:function(){var b=this,a=b.hasActiveError();b.unsetActiveError();if(a){b.updateLayout()}},renderActiveError:function(){var b=this,a=b.hasActiveError();if(b.inputEl){b.inputEl[a?"addCls":"removeCls"](b.invalidCls+"-field")}b.mixins.labelable.renderActiveError.call(b)},getActionEl:function(){return this.inputEl||this.el}});Ext.define("Ext.form.field.VTypes",(function(){var c=/^[a-zA-Z_]+$/,d=/^[a-zA-Z0-9_]+$/,b=/^(\w+)([\-+.][\w]+)*@(\w[\-\w]*\.){1,5}([A-Za-z]){2,6}$/,a=/(((^https?)|(^ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i;return{singleton:true,alternateClassName:"Ext.form.VTypes",email:function(e){return b.test(e)},emailText:'This field should be an e-mail address in the format "user@example.com"',emailMask:/[a-z0-9_\.\-@\+]/i,url:function(e){return a.test(e)},urlText:'This field should be a URL in the format "http://www.example.com"',alpha:function(e){return c.test(e)},alphaText:"This field should only contain letters and _",alphaMask:/[a-z_]/i,alphanum:function(e){return d.test(e)},alphanumText:"This field should only contain letters, numbers and _",alphanumMask:/[a-z0-9_]/i}}()));Ext.define("Ext.form.field.Text",{extend:"Ext.form.field.Base",alias:"widget.textfield",requires:["Ext.form.field.VTypes","Ext.layout.component.field.Text"],alternateClassName:["Ext.form.TextField","Ext.form.Text"],size:20,growMin:30,growMax:800,growAppend:"W",allowBlank:true,minLength:0,maxLength:Number.MAX_VALUE,minLengthText:"The minimum length for this field is {0}",maxLengthText:"The maximum length for this field is {0}",blankText:"This field is required",regexText:"",emptyCls:Ext.baseCSSPrefix+"form-empty-field",requiredCls:Ext.baseCSSPrefix+"form-required-field",componentLayout:"textfield",valueContainsPlaceholder:false,initComponent:function(){var a=this;a.callParent();a.addEvents("autosize","keydown","keyup","keypress");a.addStateEvents("change");a.setGrowSizePolicy()},setGrowSizePolicy:function(){if(this.grow){this.shrinkWrap|=1}},initEvents:function(){var b=this,a=b.inputEl;b.callParent();if(b.selectOnFocus||b.emptyText){b.mon(a,"mousedown",b.onMouseDown,b)}if(b.maskRe||(b.vtype&&b.disableKeyFilter!==true&&(b.maskRe=Ext.form.field.VTypes[b.vtype+"Mask"]))){b.mon(a,"keypress",b.filterKeys,b)}if(b.enableKeyEvents){b.mon(a,{scope:b,keyup:b.onKeyUp,keydown:b.onKeyDown,keypress:b.onKeyPress})}},isEqual:function(b,a){return this.isEqualAsString(b,a)},onChange:function(){this.callParent();this.autoSize()},getSubTplData:function(){var b=this,c=b.getRawValue(),e=b.emptyText&&c.length<1,a=b.maxLength,d;if(b.enforceMaxLength){if(a===Number.MAX_VALUE){a=undefined}}else{a=undefined}if(e){if(Ext.supports.Placeholder){d=b.emptyText}else{c=b.emptyText;b.valueContainsPlaceholder=true}}return Ext.apply(b.callParent(),{maxLength:a,readOnly:b.readOnly,placeholder:d,value:c,fieldCls:b.fieldCls+((e&&(d||c))?" "+b.emptyCls:"")+(b.allowBlank?"":" "+b.requiredCls)})},afterRender:function(){this.autoSize();this.callParent()},onMouseDown:function(b){var a=this;if(!a.hasFocus){a.mon(a.inputEl,"mouseup",Ext.emptyFn,a,{single:true,preventDefault:true})}},processRawValue:function(b){var a=this,d=a.stripCharsRe,c;if(d){c=b.replace(d,"");if(c!==b){a.setRawValue(c);b=c}}return b},onDisable:function(){this.callParent();if(Ext.isIE){this.inputEl.dom.unselectable="on"}},onEnable:function(){this.callParent();if(Ext.isIE){this.inputEl.dom.unselectable=""}},onKeyDown:function(a){this.fireEvent("keydown",this,a)},onKeyUp:function(a){this.fireEvent("keyup",this,a)},onKeyPress:function(a){this.fireEvent("keypress",this,a)},reset:function(){this.callParent();this.applyEmptyText()},applyEmptyText:function(){var b=this,a=b.emptyText,c;if(b.rendered&&a){c=b.getRawValue().length<1&&!b.hasFocus;if(Ext.supports.Placeholder){b.inputEl.dom.placeholder=a}else{if(c){b.setRawValue(a);b.valueContainsPlaceholder=true}}if(c){b.inputEl.addCls(b.emptyCls)}b.autoSize()}},afterFirstLayout:function(){this.callParent();if(Ext.isIE&&this.disabled){var a=this.inputEl;if(a){a.dom.unselectable="on"}}},preFocus:function(){var b=this,c=b.inputEl,a=b.emptyText,d;b.callParent(arguments);if((a&&!Ext.supports.Placeholder)&&(c.dom.value===b.emptyText&&b.valueContainsPlaceholder)){b.setRawValue("");d=true;c.removeCls(b.emptyCls);b.valueContainsPlaceholder=false}else{if(Ext.supports.Placeholder){b.inputEl.removeCls(b.emptyCls)}}if(b.selectOnFocus||d){c.dom.select()}},onFocus:function(){var a=this;a.callParent(arguments);if(a.emptyText){a.autoSize()}},postBlur:function(){this.callParent(arguments);this.applyEmptyText()},filterKeys:function(c){if(c.ctrlKey&&!c.altKey){return}var b=c.getKey(),a=String.fromCharCode(c.getCharCode());if((Ext.isGecko||Ext.isOpera)&&(c.isNavKeyPress()||b===c.BACKSPACE||(b===c.DELETE&&c.button===-1))){return}if((!Ext.isGecko&&!Ext.isOpera)&&c.isSpecialKey()&&!a){return}if(!this.maskRe.test(a)){c.stopEvent()}},getState:function(){return this.addPropertyToState(this.callParent(),"value")},applyState:function(a){this.callParent(arguments);if(a.hasOwnProperty("value")){this.setValue(a.value)}},getRawValue:function(){var b=this,a=b.callParent();if(a===b.emptyText&&b.valueContainsPlaceholder){a=""}return a},setValue:function(b){var a=this,c=a.inputEl;if(c&&a.emptyText&&!Ext.isEmpty(b)){c.removeCls(a.emptyCls);a.valueContainsPlaceholder=false}a.callParent(arguments);a.applyEmptyText();return a},getErrors:function(l){var g=this,k=g.callParent(arguments),a=g.validator,d=g.emptyText,c=g.allowBlank,e=g.vtype,h=Ext.form.field.VTypes,i=g.regex,j=Ext.String.format,b;l=l||g.processRawValue(g.getRawValue());if(Ext.isFunction(a)){b=a.call(g,l);if(b!==true){k.push(b)}}if(l.length<1||(l===g.emptyText&&g.valueContainsPlaceholder)){if(!c){k.push(g.blankText)}return k}if(l.length<g.minLength){k.push(j(g.minLengthText,g.minLength))}if(l.length>g.maxLength){k.push(j(g.maxLengthText,g.maxLength))}if(e){if(!h[e](l,g)){k.push(g.vtypeText||h[e+"Text"])}}if(i&&!i.test(l)){k.push(g.regexText||g.invalidText)}return k},selectText:function(i,a){var h=this,c=h.getRawValue(),d=true,g=h.inputEl.dom,e,b;if(c.length>0){i=i===e?0:i;a=a===e?c.length:a;if(g.setSelectionRange){g.setSelectionRange(i,a)}else{if(g.createTextRange){b=g.createTextRange();b.moveStart("character",i);b.moveEnd("character",a-c.length);b.select()}}d=Ext.isGecko||Ext.isOpera}if(d){h.focus()}},autoSize:function(){var a=this;if(a.grow&&a.rendered){a.autoSizing=true;a.updateLayout()}},afterComponentLayout:function(){var b=this,a;b.callParent(arguments);if(b.autoSizing){a=b.inputEl.getWidth();if(a!==b.lastInputWidth){b.fireEvent("autosize",b,a);b.lastInputWidth=a;delete b.autoSizing}}}});Ext.define("Ext.layout.component.field.TextArea",{extend:"Ext.layout.component.field.Text",alias:"layout.textareafield",type:"textareafield",canGrowWidth:false,naturalSizingProp:"cols",beginLayout:function(a){this.callParent(arguments);a.target.inputEl.setStyle("height","")},measureContentHeight:function(b){var e=this,a=e.owner,k=e.callParent(arguments),c,i,h,g,d,j;if(a.grow&&!b.state.growHandled){c=b.inputContext;i=a.inputEl;d=i.getWidth(true);h=Ext.util.Format.htmlEncode(i.dom.value)||"&#160;";h+=a.growAppend;h=h.replace(/\n/g,"<br/>");j=Ext.util.TextMetrics.measure(i,h,d).height+c.getBorderInfo().height+c.getPaddingInfo().height;j=Ext.Number.constrain(j,a.growMin,a.growMax);c.setHeight(j);b.state.growHandled=true;c.domBlock(e,"height");k=NaN}return k}});Ext.define("Ext.form.field.TextArea",{extend:"Ext.form.field.Text",alias:["widget.textareafield","widget.textarea"],alternateClassName:"Ext.form.TextArea",requires:["Ext.XTemplate","Ext.layout.component.field.TextArea","Ext.util.DelayedTask"],fieldSubTpl:['<textarea id="{id}" {inputAttrTpl}','<tpl if="name"> name="{name}"</tpl>','<tpl if="rows"> rows="{rows}" </tpl>','<tpl if="cols"> cols="{cols}" </tpl>','<tpl if="placeholder"> placeholder="{placeholder}"</tpl>','<tpl if="size"> size="{size}"</tpl>','<tpl if="maxLength !== undefined"> maxlength="{maxLength}"</tpl>','<tpl if="readOnly"> readonly="readonly"</tpl>','<tpl if="disabled"> disabled="disabled"</tpl>','<tpl if="tabIdx"> tabIndex="{tabIdx}"</tpl>',' class="{fieldCls} {typeCls}" ','<tpl if="fieldStyle"> style="{fieldStyle}"</tpl>',' autocomplete="off">\n','<tpl if="value">{[Ext.util.Format.htmlEncode(values.value)]}</tpl>',"</textarea>",{disableFormats:true}],growMin:60,growMax:1000,growAppend:"\n-",cols:20,rows:4,enterIsSpecial:false,preventScrollbars:false,componentLayout:"textareafield",setGrowSizePolicy:Ext.emptyFn,returnRe:/\r/g,getSubTplData:function(){var c=this,b=c.getFieldStyle(),a=c.callParent();if(c.grow){if(c.preventScrollbars){a.fieldStyle=(b||"")+";overflow:hidden;height:"+c.growMin+"px"}}Ext.applyIf(a,{cols:c.cols,rows:c.rows});return a},afterRender:function(){var a=this;a.callParent(arguments);a.needsMaxCheck=a.enforceMaxLength&&a.maxLength!==Number.MAX_VALUE&&!Ext.supports.TextAreaMaxLength;if(a.needsMaxCheck){a.inputEl.on("paste",a.onPaste,a)}},transformRawValue:function(a){return this.stripReturns(a)},transformOriginalValue:function(a){return this.stripReturns(a)},valueToRaw:function(a){a=this.stripReturns(a);return this.callParent([a])},stripReturns:function(a){if(a){a=a.replace(this.returnRe,"")}return a},onPaste:function(b){var a=this;if(!a.pasteTask){a.pasteTask=new Ext.util.DelayedTask(a.pasteCheck,a)}a.pasteTask.delay(1)},pasteCheck:function(){var b=this,c=b.getValue(),a=b.maxLength;if(c.length>a){c=c.substr(0,a);b.setValue(c)}},fireKey:function(d){var b=this,a=d.getKey(),c;if(d.isSpecialKey()&&(b.enterIsSpecial||(a!==d.ENTER||d.hasModifier()))){b.fireEvent("specialkey",b,d)}if(b.needsMaxCheck&&a!==d.BACKSPACE&&a!==d.DELETE&&!d.isNavKeyPress()&&!b.isCutCopyPasteSelectAll(d,a)){c=b.getValue();if(c.length>=b.maxLength){d.stopEvent()}}},isCutCopyPasteSelectAll:function(b,a){if(b.CTRL){return a===b.A||a===b.C||a===b.V||a===b.X}return false},autoSize:function(){var b=this,a;if(b.grow&&b.rendered){b.updateLayout();a=b.inputEl.getHeight();if(a!==b.lastInputHeight){b.fireEvent("autosize",b,a);b.lastInputHeight=a}}},initAria:function(){this.callParent(arguments);this.getActionEl().dom.setAttribute("aria-multiline",true)},beforeDestroy:function(){var a=this.pasteTask;if(a){a.delay()}this.callParent()}});Ext.define("Ext.form.field.Display",{extend:"Ext.form.field.Base",alias:"widget.displayfield",requires:["Ext.util.Format","Ext.XTemplate"],alternateClassName:["Ext.form.DisplayField","Ext.form.Display"],fieldSubTpl:['<div id="{id}"','<tpl if="fieldStyle"> style="{fieldStyle}"</tpl>',' class="{fieldCls}">{value}</div>',{compiled:true,disableFormats:true}],fieldCls:Ext.baseCSSPrefix+"form-display-field",htmlEncode:false,validateOnChange:false,initEvents:Ext.emptyFn,submitValue:false,isDirty:function(){return false},isValid:function(){return true},validate:function(){return true},getRawValue:function(){return this.rawValue},setRawValue:function(b){var a=this,c;b=Ext.value(b,"");a.rawValue=b;if(a.rendered){a.inputEl.dom.innerHTML=a.getDisplayValue();a.updateLayout()}return b},getDisplayValue:function(){var a=this,b=this.getRawValue(),c;if(a.renderer){c=a.renderer.call(a.scope||a,b,a)}else{c=a.htmlEncode?Ext.util.Format.htmlEncode(b):b}return c},getSubTplData:function(){var a=this.callParent(arguments);a.value=this.getDisplayValue();return a}});Ext.define("Ext.layout.container.Anchor",{alias:"layout.anchor",extend:"Ext.layout.container.Container",alternateClassName:"Ext.layout.AnchorLayout",type:"anchor",manageOverflow:2,renderTpl:["{%this.renderBody(out,values);this.renderPadder(out,values)%}"],defaultAnchor:"100%",parseAnchorRE:/^(r|right|b|bottom)$/i,beginLayout:function(c){var j=this,a=0,g,k,e,d,b,h;j.callParent(arguments);e=c.childItems;b=e.length;for(d=0;d<b;++d){k=e[d];g=k.target.anchorSpec;if(g){if(k.widthModel.calculated&&g.right){a|=1}if(k.heightModel.calculated&&g.bottom){a|=2}if(a==3){break}}}c.anchorDimensions=a;if(!Ext.supports.RightMargin&&!j.rightMarginCleanerFn){h=c.targetContext.el;j.rightMarginCleanerFn=Ext.Element.getRightMarginFixCleaner(h);h.addCls(Ext.baseCSSPrefix+"inline-children")}},calculate:function(b){var a=this,c=a.getContainerSize(b);if(b.anchorDimensions!==b.state.calculatedAnchors){a.calculateAnchors(b,c)}if(b.hasDomProp("containerChildrenDone")){if(!c.gotAll){a.done=false}a.calculateContentSize(b,b.anchorDimensions);if(a.done){a.calculateOverflow(b,c,b.anchorDimensions);return}}a.done=false},calculateAnchors:function(h,a){var p=this,l=h.childItems,g=l.length,o=a.gotHeight,j=a.gotWidth,e=a.height,c=a.width,b=h.state,q=(j?1:0)|(o?2:0),m,s,n,r,k,d;b.calculatedAnchors=(b.calculatedAnchors||0)|q;for(k=0;k<g;k++){s=l[k];n=s.getMarginInfo();m=s.target.anchorSpec;if(j&&s.widthModel.calculated){d=m.right(c)-n.width;d=p.adjustWidthAnchor(d,s);s.setWidth(d)}if(o&&s.heightModel.calculated){r=m.bottom(e)-n.height;r=p.adjustHeightAnchor(r,s);s.setHeight(r)}}},finishedLayout:function(b){var a=this.rightMarginCleanerFn;if(a){delete this.rightMarginCleanerFn;b.targetContext.el.removeCls(Ext.baseCSSPrefix+"inline-children");a()}},anchorFactory:{offset:function(a){return function(b){return b+a}},ratio:function(a){return function(b){return Math.floor(b*a)}},standard:function(a){return function(b){return b-a}}},parseAnchor:function(c,g,b){if(c&&c!="none"){var d=this.anchorFactory,e;if(this.parseAnchorRE.test(c)){return d.standard(b-g)}if(c.indexOf("%")!=-1){return d.ratio(parseFloat(c.replace("%",""))*0.01)}e=parseInt(c,10);if(!isNaN(e)){return d.offset(e)}}return null},adjustWidthAnchor:function(b,a){return b},adjustHeightAnchor:function(b,a){return b},configureItem:function(g){var e=this,a=e.owner,d=g.anchor,b,c,h;e.callParent(arguments);if(!g.anchor&&g.items&&!Ext.isNumber(g.width)&&!(Ext.isIE6&&Ext.isStrict)){g.anchor=d=e.defaultAnchor}if(a.anchorSize){if(typeof a.anchorSize=="number"){c=a.anchorSize}else{c=a.anchorSize.width;h=a.anchorSize.height}}else{c=a.initialConfig.width;h=a.initialConfig.height}if(d){b=d.split(" ");g.anchorSpec={right:e.parseAnchor(b[0],g.initialConfig.width,c),bottom:e.parseAnchor(b[1],g.initialConfig.height,h)}}},sizePolicy:{"":{setsWidth:0,setsHeight:0},b:{setsWidth:0,setsHeight:1},r:{"":{setsWidth:1,setsHeight:0},b:{setsWidth:1,setsHeight:1}}},getItemSizePolicy:function(c){var e=c.anchorSpec,a="",d=this.sizePolicy,b;if(e){b=this.owner.getSizeModel();if(e.right&&!b.width.shrinkWrap){d=d.r}if(e.bottom&&!b.height.shrinkWrap){a="b"}}return d[a]}});Ext.define("Ext.window.MessageBox",{extend:"Ext.window.Window",requires:["Ext.toolbar.Toolbar","Ext.form.field.Text","Ext.form.field.TextArea","Ext.form.field.Display","Ext.button.Button","Ext.layout.container.Anchor","Ext.layout.container.HBox","Ext.ProgressBar"],alias:"widget.messagebox",OK:1,YES:2,NO:4,CANCEL:8,OKCANCEL:9,YESNO:6,YESNOCANCEL:14,INFO:Ext.baseCSSPrefix+"message-box-info",WARNING:Ext.baseCSSPrefix+"message-box-warning",QUESTION:Ext.baseCSSPrefix+"message-box-question",ERROR:Ext.baseCSSPrefix+"message-box-error",hideMode:"offsets",closeAction:"hide",resizable:false,title:"&#160;",width:600,height:500,minWidth:250,maxWidth:600,minHeight:110,maxHeight:500,constrain:true,cls:Ext.baseCSSPrefix+"message-box",layout:{type:"vbox",align:"stretch"},defaultTextHeight:75,minProgressWidth:250,minPromptWidth:250,buttonText:{ok:"OK",yes:"Yes",no:"No",cancel:"Cancel"},buttonIds:["ok","yes","no","cancel"],titleText:{confirm:"Confirm",prompt:"Prompt",wait:"Loading...",alert:"Attention"},iconHeight:35,makeButton:function(a){var b=this.buttonIds[a];return new Ext.button.Button({handler:this.btnCallback,itemId:b,scope:this,text:this.buttonText[b],minWidth:75})},btnCallback:function(a){var b=this,c,d;if(b.cfg.prompt||b.cfg.multiline){if(b.cfg.multiline){d=b.textArea}else{d=b.textField}c=d.getValue();d.reset()}a.blur();b.hide();b.userCallback(a.itemId,c,b.cfg)},hide:function(){var a=this;a.dd.endDrag();a.progressBar.reset();a.removeCls(a.cfg.cls);a.callParent(arguments)},initComponent:function(){var e=this,a=e.id,c,b,d;e.title="&#160;";e.topContainer=new Ext.container.Container({layout:"hbox",style:{padding:"10px",overflow:"hidden"},items:[e.iconComponent=new Ext.Component({cls:e.baseCls+"-icon",width:50,height:e.iconHeight}),e.promptContainer=new Ext.container.Container({flex:1,layout:{type:"anchor"},items:[e.msg=new Ext.form.field.Display({id:a+"-displayfield",cls:e.baseCls+"-text"}),e.textField=new Ext.form.field.Text({id:a+"-testfield",anchor:"100%",enableKeyEvents:true,listeners:{keydown:e.onPromptKey,scope:e}}),e.textArea=new Ext.form.field.TextArea({id:a+"-textarea",anchor:"100%",height:75})]})]});e.progressBar=new Ext.ProgressBar({id:a+"-progressbar",margins:"0 10 0 10"});e.items=[e.topContainer,e.progressBar];e.msgButtons=[];for(c=0;c<4;c++){b=e.makeButton(c);e.msgButtons[b.itemId]=b;e.msgButtons.push(b)}e.bottomTb=new Ext.toolbar.Toolbar({id:a+"-toolbar",ui:"footer",dock:"bottom",layout:{pack:"center"},items:[e.msgButtons[0],e.msgButtons[1],e.msgButtons[2],e.msgButtons[3]]});e.dockedItems=[e.bottomTb];d=e.bottomTb.getLayout();d.finishedLayout=Ext.Function.createInterceptor(d.finishedLayout,function(g){e.tbWidth=g.getProp("contentWidth")});e.on("close",e.onClose,e);e.callParent()},onClose:function(){var a=this.header.child("[type=close]");a.itemId="cancel";this.btnCallback(a);delete a.itemId},onPromptKey:function(a,c){var b=this,d;if(c.keyCode===Ext.EventObject.RETURN||c.keyCode===10){if(b.msgButtons.ok.isVisible()){d=true;b.msgButtons.ok.handler.call(b,b.msgButtons.ok)}else{if(b.msgButtons.yes.isVisible()){b.msgButtons.yes.handler.call(b,b.msgButtons.yes);d=true}}if(d){b.textField.blur()}}},reconfigure:function(a){var d=this,c=0,h=true,g=d.maxWidth,e=d.buttonText,b;d.updateButtonText();a=a||{};d.cfg=a;if(a.width){g=a.width}delete d.defaultFocus;d.animateTarget=a.animateTarget||undefined;d.modal=a.modal!==false;if(a.title){d.setTitle(a.title||"&#160;")}if(Ext.isObject(a.buttons)){d.buttonText=a.buttons;c=0}else{d.buttonText=a.buttonText||d.buttonText;c=Ext.isNumber(a.buttons)?a.buttons:0}c=c|d.updateButtonText();d.buttonText=e;Ext.suspendLayouts();d.hidden=false;if(!d.rendered){d.width=g;d.render(Ext.getBody())}else{d.setSize(g,d.maxHeight)}d.closable=a.closable&&!a.wait;d.header.child("[type=close]").setVisible(a.closable!==false);if(!a.title&&!d.closable){d.header.hide()}else{d.header.show()}d.liveDrag=!a.proxyDrag;d.userCallback=Ext.Function.bind(a.callback||a.fn||Ext.emptyFn,a.scope||Ext.global);d.setIcon(a.icon);if(a.msg){d.msg.setValue(a.msg);d.msg.show()}else{d.msg.hide()}Ext.resumeLayouts(true);Ext.suspendLayouts();if(a.prompt||a.multiline){d.multiline=a.multiline;if(a.multiline){d.textArea.setValue(a.value);d.textArea.setHeight(a.defaultTextHeight||d.defaultTextHeight);d.textArea.show();d.textField.hide();d.defaultFocus=d.textArea}else{d.textField.setValue(a.value);d.textArea.hide();d.textField.show();d.defaultFocus=d.textField}}else{d.textArea.hide();d.textField.hide()}if(a.progress||a.wait){d.progressBar.show();d.updateProgress(0,a.progressText);if(a.wait===true){d.progressBar.wait(a.waitConfig)}}else{d.progressBar.hide()}for(b=0;b<4;b++){if(c&Math.pow(2,b)){if(!d.defaultFocus){d.defaultFocus=d.msgButtons[b]}d.msgButtons[b].show();h=false}else{d.msgButtons[b].hide()}}if(h){d.bottomTb.hide()}else{d.bottomTb.show()}Ext.resumeLayouts(true)},updateButtonText:function(){var d=this,c=d.buttonText,b=0,e,a;for(e in c){if(c.hasOwnProperty(e)){a=d.msgButtons[e];if(a){if(d.cfg&&d.cfg.buttonText){b=b|Math.pow(2,Ext.Array.indexOf(d.buttonIds,e))}if(a.text!=c[e]){a.setText(c[e])}}}}return b},show:function(a){var b=this;b.reconfigure(a);b.addCls(a.cls);b.doAutoSize();b.hidden=true;b.callParent();return b},onShow:function(){this.callParent(arguments);this.center()},doAutoSize:function(){var d=this,e=d.header.rendered&&d.header.isVisible(),c=d.bottomTb.rendered&&d.bottomTb.isVisible(),b,a;if(!Ext.isDefined(d.frameWidth)){d.frameWidth=d.el.getWidth()-d.body.getWidth()}d.minWidth=d.cfg.minWidth||Ext.getClass(this).prototype.minWidth;b=Math.max(e?d.header.getMinWidth():0,d.cfg.width||d.msg.getWidth()+d.iconComponent.getWidth()+25,(c?d.tbWidth:0));a=(e?d.header.getHeight():0)+d.topContainer.getHeight()+d.progressBar.getHeight()+(c?d.bottomTb.getHeight()+d.bottomTb.el.getMargin("tb"):0);d.setSize(b+d.frameWidth,a+d.frameWidth);return d},updateText:function(a){this.msg.setValue(a);return this.doAutoSize(true)},setIcon:function(a){var b=this;b.iconComponent.removeCls(b.messageIconCls);if(a){b.iconComponent.show();b.iconComponent.addCls(Ext.baseCSSPrefix+"dlg-icon");b.iconComponent.addCls(b.messageIconCls=a)}else{b.iconComponent.removeCls(Ext.baseCSSPrefix+"dlg-icon");b.iconComponent.hide()}return b},updateProgress:function(b,a,c){this.progressBar.updateProgress(b,a);if(c){this.updateText(c)}return this},onEsc:function(){if(this.closable!==false){this.callParent(arguments)}},confirm:function(a,d,c,b){if(Ext.isString(a)){a={title:a,icon:this.QUESTION,msg:d,buttons:this.YESNO,callback:c,scope:b}}return this.show(a)},prompt:function(b,g,d,c,a,e){if(Ext.isString(b)){b={prompt:true,title:b,minWidth:this.minPromptWidth,msg:g,buttons:this.OKCANCEL,callback:d,scope:c,multiline:a,value:e}}return this.show(b)},wait:function(a,c,b){if(Ext.isString(a)){a={title:c,msg:a,closable:false,wait:true,modal:true,minWidth:this.minProgressWidth,waitConfig:b}}return this.show(a)},alert:function(a,d,c,b){if(Ext.isString(a)){a={title:a,msg:d,buttons:this.OK,fn:c,scope:b,minWidth:this.minWidth}}return this.show(a)},progress:function(a,c,b){if(Ext.isString(a)){a={title:a,msg:c,progress:true,progressText:b}}return this.show(a)}},function(){Ext.MessageBox=Ext.Msg=new this()});Ext.define("Ext.form.Basic",{extend:"Ext.util.Observable",alternateClassName:"Ext.form.BasicForm",requires:["Ext.util.MixedCollection","Ext.form.action.Load","Ext.form.action.Submit","Ext.window.MessageBox","Ext.data.Errors","Ext.util.DelayedTask"],constructor:function(a,b){var e=this,g=e.onItemAddOrRemove,d,c;e.owner=a;e.mon(a,{add:g,remove:g,scope:e});Ext.apply(e,b);if(Ext.isString(e.paramOrder)){e.paramOrder=e.paramOrder.split(/[\s,|]/)}if(e.api){d=e.api=Ext.apply({},e.api);for(c in d){if(d.hasOwnProperty(c)){d[c]=Ext.direct.Manager.parseMethod(d[c])}}}e.checkValidityTask=new Ext.util.DelayedTask(e.checkValidity,e);e.addEvents("beforeaction","actionfailed","actioncomplete","validitychange","dirtychange");e.callParent()},initialize:function(){var a=this;a.initialized=true;a.onValidityChange(!a.hasInvalidField())},timeout:30,paramsAsHash:false,waitTitle:"Please Wait...",trackResetOnLoad:false,wasDirty:false,destroy:function(){this.clearListeners();this.checkValidityTask.cancel()},onItemAddOrRemove:function(c,g){var d=this,e=!!g.ownerCt,b=g.isContainer;function a(h){d[e?"mon":"mun"](h,{validitychange:d.checkValidity,dirtychange:d.checkDirty,scope:d,buffer:100});delete d._fields}if(g.isFormField){a(g)}else{if(b){if(g.isDestroyed||g.destroying){delete d._fields}else{Ext.Array.forEach(g.query("[isFormField]"),a)}}}delete this._boundItems;if(d.initialized){d.checkValidityTask.delay(10)}},getFields:function(){var a=this._fields;if(!a){a=this._fields=new Ext.util.MixedCollection();a.addAll(this.owner.query("[isFormField]"))}return a},getBoundItems:function(){var a=this._boundItems;if(!a||a.getCount()===0){a=this._boundItems=new Ext.util.MixedCollection();a.addAll(this.owner.query("[formBind]"))}return a},hasInvalidField:function(){return !!this.getFields().findBy(function(c){var a=c.preventMark,b;c.preventMark=true;b=c.isValid();c.preventMark=a;return !b})},isValid:function(){var a=this,b;Ext.suspendLayouts();b=a.getFields().filterBy(function(c){return !c.validate()});Ext.resumeLayouts(true);return b.length<1},checkValidity:function(){var b=this,a=!b.hasInvalidField();if(a!==b.wasValid){b.onValidityChange(a);b.fireEvent("validitychange",b,a);b.wasValid=a}},onValidityChange:function(g){var d=this.getBoundItems(),b,c,a,e;if(d){b=d.items;a=b.length;for(c=0;c<a;c++){e=b[c];if(e.disabled===g){e.setDisabled(!g)}}}},isDirty:function(){return !!this.getFields().findBy(function(a){return a.isDirty()})},checkDirty:function(){var a=this.isDirty();if(a!==this.wasDirty){this.fireEvent("dirtychange",this,a);this.wasDirty=a}},hasUpload:function(){return !!this.getFields().findBy(function(a){return a.isFileUpload()})},doAction:function(b,a){if(Ext.isString(b)){b=Ext.ClassManager.instantiateByAlias("formaction."+b,Ext.apply({},a,{form:this}))}if(this.fireEvent("beforeaction",this,b)!==false){this.beforeAction(b);Ext.defer(b.run,100,b)}return this},submit:function(a){a=a||{};var b=this,c;if(a.standardSubmit||b.standardSubmit){c="standardsubmit"}else{c=b.api?"directsubmit":"submit"}return b.doAction(c,a)},load:function(a){return this.doAction(this.api?"directload":"load",a)},updateRecord:function(c){c=c||this._record;var b=c.fields.items,d=this.getFieldValues(),h={},g=0,a=b.length,e;for(;g<a;++g){e=b[g].name;if(d.hasOwnProperty(e)){h[e]=d[e]}}c.beginEdit();c.set(h);c.endEdit();return this},loadRecord:function(a){this._record=a;return this.setValues(a.data)},getRecord:function(){return this._record},beforeAction:function(e){var b=e.waitMsg,d=Ext.baseCSSPrefix+"mask-loading",a=this.getFields().items,c,i=a.length,g,h;for(c=0;c<i;c++){g=a[c];if(g.isFormField&&g.syncValue){g.syncValue()}}if(b){h=this.waitMsgTarget;if(h===true){this.owner.el.mask(b,d)}else{if(h){h=this.waitMsgTarget=Ext.get(h);h.mask(b,d)}else{Ext.MessageBox.wait(b,e.waitTitle||this.waitTitle)}}}},afterAction:function(b,d){if(b.waitMsg){var a=Ext.MessageBox,c=this.waitMsgTarget;if(c===true){this.owner.el.unmask()}else{if(c){c.unmask()}else{a.suspendEvents();a.hide();a.resumeEvents()}}}if(d){if(b.reset){this.reset()}Ext.callback(b.success,b.scope||b,[this,b]);this.fireEvent("actioncomplete",this,b)}else{Ext.callback(b.failure,b.scope||b,[this,b]);this.fireEvent("actionfailed",this,b)}},findField:function(a){return this.getFields().findBy(function(b){return b.id===a||b.getName()===a})},markInvalid:function(j){var d=this,h,a,b,g,c;function i(e,l){var k=d.findField(e);if(k){k.markInvalid(l)}}if(Ext.isArray(j)){a=j.length;for(h=0;h<a;h++){b=j[h];i(b.id,b.msg)}}else{if(j instanceof Ext.data.Errors){a=j.items.length;for(h=0;h<a;h++){b=j.items[h];i(b.field,b.message)}}else{for(c in j){if(j.hasOwnProperty(c)){g=j[c];i(c,g,j)}}}}return this},setValues:function(b){var d=this,a,c,h,g;function e(i,k){var j=d.findField(i);if(j){j.setValue(k);if(d.trackResetOnLoad){j.resetOriginalValue()}}}if(Ext.isArray(b)){c=b.length;for(a=0;a<c;a++){h=b[a];e(h.id,h.value)}}else{Ext.iterate(b,e)}return this},getValues:function(i,j,n,l){var m={},g=this.getFields().items,h,o=g.length,e=Ext.isArray,k,d,c,b,a;for(h=0;h<o;h++){k=g[h];if(!j||k.isDirty()){d=k[l?"getModelData":"getSubmitData"](n);if(Ext.isObject(d)){for(a in d){if(d.hasOwnProperty(a)){c=d[a];if(n&&c===""){c=k.emptyText||""}if(m.hasOwnProperty(a)){b=m[a];if(!e(b)){b=m[a]=[b]}if(e(c)){m[a]=m[a]=b.concat(c)}else{b.push(c)}}else{m[a]=c}}}}}}if(i){m=Ext.Object.toQueryString(m)}return m},getFieldValues:function(a){return this.getValues(false,a,false,true)},clearInvalid:function(){Ext.suspendLayouts();var b=this,a=b.getFields().items,c,d=a.length;for(c=0;c<d;c++){a[c].clearInvalid()}Ext.resumeLayouts(true);return b},reset:function(){Ext.suspendLayouts();var b=this,a=b.getFields().items,c,d=a.length;for(c=0;c<d;c++){a[c].reset()}Ext.resumeLayouts(true);return b},applyToFields:function(c){var a=this.getFields().items,b,d=a.length;for(b=0;b<d;b++){Ext.apply(a[b],c)}return this},applyIfToFields:function(c){var a=this.getFields().items,b,d=a.length;for(b=0;b<d;b++){Ext.applyIf(a[b],c)}return this}});Ext.define("Ext.layout.container.CheckboxGroup",{extend:"Ext.layout.container.Container",alias:["layout.checkboxgroup"],autoFlex:true,type:"checkboxgroup",childEls:["innerCt"],renderTpl:['<table id="{ownerId}-innerCt" role="presentation" style="{tableStyle}"><tbody><tr>','<tpl for="columns">','<td class="{parent.colCls}" valign="top" style="{style}">',"{% this.renderColumn(out,parent,xindex-1) %}","</td>","</tpl>","</tr></tbody></table>"],lastOwnerItemsGeneration:null,beginLayout:function(b){var k=this,e,d,h,a,j,g=0,m=0,l=k.autoFlex,c=k.innerCt.dom.style;k.callParent(arguments);e=k.columnNodes;b.innerCtContext=b.getEl("innerCt",k);if(!b.widthModel.shrinkWrap){d=e.length;if(k.columnsArray){for(h=0;h<d;h++){a=k.owner.columns[h];if(a<1){g+=a;m++}}for(h=0;h<d;h++){a=k.owner.columns[h];if(a<1){j=((a/g)*100)+"%"}else{j=a+"px"}e[h].style.width=j}}else{for(h=0;h<d;h++){j=l?(1/d*100)+"%":"";e[h].style.width=j;m++}}if(!m){c.tableLayout="fixed";c.width=""}else{if(m<d){c.tableLayout="fixed";c.width="100%"}else{c.tableLayout="auto";if(l){c.width="100%"}else{c.width=""}}}}else{c.tableLayout="auto";c.width=""}},cacheElements:function(){var a=this;a.callParent();a.rowEl=a.innerCt.down("tr");a.columnNodes=a.rowEl.dom.childNodes},calculate:function(h){var e=this,c,b,a,i,d,g;if(!h.getDomProp("containerChildrenDone")){e.done=false}else{c=h.innerCtContext;b=h.widthModel.shrinkWrap;a=h.heightModel.shrinkWrap;i=a||b;d=c.el.dom;g=i&&c.getPaddingInfo();if(b){h.setContentWidth(d.offsetWidth+g.width,true)}if(a){h.setContentHeight(d.offsetHeight+g.height,true)}}},doRenderColumn:function(d,l,g){var i=l.$layout,c=i.owner,e=l.columnCount,h=c.items.items,b=h.length,m,a,j,k,n;if(c.vertical){j=Math.ceil(b/e);a=g*j;b=Math.min(b,a+j);k=1}else{a=g;k=e}for(;a<b;a+=k){m=h[a];i.configureItem(m);n=m.getRenderTree();Ext.DomHelper.generateMarkup(n,d)}},getColumnCount:function(){var b=this,a=b.owner,c=a.columns;if(b.columnsArray){return c.length}if(Ext.isNumber(c)){return c}return a.items.length},getItemSizePolicy:function(a){return this.autoSizePolicy},getRenderData:function(){var k=this,g=k.callParent(),b=k.owner,h,d=k.getColumnCount(),a,c,j,l=k.autoFlex,e=0,m=0;if(k.columnsArray){for(h=0;h<d;h++){a=k.owner.columns[h];if(a<1){e+=a;m++}}}g.colCls=b.groupCls;g.columnCount=d;g.columns=[];for(h=0;h<d;h++){c=(g.columns[h]={});if(k.columnsArray){a=k.owner.columns[h];if(a<1){j=((a/e)*100)+"%"}else{j=a+"px"}c.style="width:"+j}else{c.style="width:"+(1/d*100)+"%";m++}}g.tableStyle=!m?"table-layout:fixed;":(m<d)?"table-layout:fixed;width:100%":(l)?"table-layout:auto;width:100%":"table-layout:auto;";return g},initLayout:function(){var b=this,a=b.owner;b.columnsArray=Ext.isArray(a.columns);b.autoColumns=!a.columns||a.columns==="auto";b.vertical=a.vertical;b.callParent()},isValidParent:function(){return true},setupRenderTpl:function(a){this.callParent(arguments);a.renderColumn=this.doRenderColumn},renderChildren:function(){var a=this,b=a.owner.items.generation;if(a.lastOwnerItemsGeneration!==b){a.lastOwnerItemsGeneration=b;a.renderItems(a.getLayoutItems())}},renderItems:function(e){var g=this,a=e.length,b,k,j,d,h,c;if(a){Ext.suspendLayouts();if(g.autoColumns){g.addMissingColumns(a)}d=g.columnNodes.length;j=Math.ceil(a/d);for(b=0;b<a;b++){k=e[b];h=g.getRenderRowIndex(b,j,d);c=g.getRenderColumnIndex(b,j,d);if(!k.rendered){g.renderItem(k,h,c)}else{if(!g.isItemAtPosition(k,h,c)){g.moveItem(k,h,c)}}}if(g.autoColumns){g.removeExceedingColumns(a)}Ext.resumeLayouts(true)}},isItemAtPosition:function(b,c,a){return b.el.dom===this.getNodeAt(c,a)},getRenderColumnIndex:function(b,a,c){if(this.vertical){return Math.floor(b/a)}else{return b%c}},getRenderRowIndex:function(b,a,d){var c=this;if(c.vertical){return b%a}else{return Math.floor(b/d)}},getNodeAt:function(b,a){return this.columnNodes[a].childNodes[b]},addMissingColumns:function(a){var g=this,c=g.columnNodes.length,e,h,b,d;if(c<a){e=a-c;h=g.rowEl;b=g.owner.groupCls;for(d=0;d<e;d++){h.createChild({cls:b,tag:"td",vAlign:"top"})}}},removeExceedingColumns:function(a){var e=this,b=e.columnNodes.length,d,g,c;if(b>a){d=b-a;g=e.rowEl;for(c=0;c<d;c++){g.last().remove()}}},renderItem:function(c,d,a){var b=this;b.configureItem(c);c.render(Ext.get(b.columnNodes[a]),d);b.afterRenderItem(c)},moveItem:function(d,g,b){var c=this,a=c.columnNodes[b],e=a.childNodes[g];a.insertBefore(d.el.dom,e||null)}});Ext.define("Ext.layout.component.field.FieldContainer",{extend:"Ext.layout.component.field.Field",alias:"layout.fieldcontainer",type:"fieldcontainer",waitForOuterHeightInDom:true,waitForOuterWidthInDom:true,beginLayout:function(a){this.callParent(arguments);a.hasRawContent=true;a.target.bodyEl.setStyle("height","")},measureContentHeight:function(a){return a.hasDomProp("containerLayoutDone")?this.callParent(arguments):NaN},measureContentWidth:function(a){return a.hasDomProp("containerLayoutDone")?this.callParent(arguments):NaN},publishInnerWidth:function(b,a){var c=b.bodyCellContext;c.setWidth(c.el.getWidth(),false)},publishInnerHeight:function(b,a){var c=b.bodyCellContext;c.setHeight(a-this.measureLabelErrorHeight(b))}});Ext.define("Ext.form.FieldAncestor",{initFieldAncestor:function(){var a=this,b=a.onFieldAncestorSubtreeChange;a.addEvents("fieldvaliditychange","fielderrorchange");a.on("add",b,a);a.on("remove",b,a);a.initFieldDefaults()},initFieldDefaults:function(){if(!this.fieldDefaults){this.fieldDefaults={}}},onFieldAncestorSubtreeChange:function(b,e){var c=this,d=!!e.ownerCt;function a(g){var h=g.isFieldLabelable,i=g.isFormField;if(h||i){if(h){c["onLabelable"+(d?"Added":"Removed")](g)}if(i){c["onField"+(d?"Added":"Removed")](g)}}else{if(g.isContainer){Ext.Array.forEach(g.getRefItems(),a)}}}a(e)},onLabelableAdded:function(a){var b=this;b.mon(a,"errorchange",b.handleFieldErrorChange,b,{buffer:10});a.setFieldDefaults(b.fieldDefaults)},onFieldAdded:function(b){var a=this;a.mon(b,"validitychange",a.handleFieldValidityChange,a)},onLabelableRemoved:function(a){var b=this;b.mun(a,"errorchange",b.handleFieldErrorChange,b)},onFieldRemoved:function(b){var a=this;a.mun(b,"validitychange",a.handleFieldValidityChange,a)},handleFieldValidityChange:function(c,b){var a=this;a.fireEvent("fieldvaliditychange",a,c,b);a.onFieldValidityChange(c,b)},handleFieldErrorChange:function(b,a){var c=this;c.fireEvent("fielderrorchange",c,b,a);c.onFieldErrorChange(b,a)},onFieldValidityChange:Ext.emptyFn,onFieldErrorChange:Ext.emptyFn});Ext.define("Ext.form.FieldContainer",{extend:"Ext.container.Container",mixins:{labelable:"Ext.form.Labelable",fieldAncestor:"Ext.form.FieldAncestor"},requires:"Ext.layout.component.field.FieldContainer",alias:"widget.fieldcontainer",componentLayout:"fieldcontainer",componentCls:Ext.baseCSSPrefix+"form-fieldcontainer",combineLabels:false,labelConnector:", ",combineErrors:false,maskOnDisable:false,fieldSubTpl:"{%this.renderContainer(out,values)%}",initComponent:function(){var a=this;a.initLabelable();a.initFieldAncestor();a.callParent()},beforeRender:function(){this.callParent(arguments);this.beforeLabelableRender(arguments)},onLabelableAdded:function(a){var b=this;b.mixins.fieldAncestor.onLabelableAdded.call(this,a);b.updateLabel()},onLabelableRemoved:function(a){var b=this;b.mixins.fieldAncestor.onLabelableRemoved.call(this,a);b.updateLabel()},initRenderTpl:function(){var a=this;if(!a.hasOwnProperty("renderTpl")){a.renderTpl=a.getTpl("labelableRenderTpl")}return a.callParent()},initRenderData:function(){return Ext.applyIf(this.callParent(),this.getLabelableRenderData())},getFieldLabel:function(){var a=this.fieldLabel||"";if(!a&&this.combineLabels){a=Ext.Array.map(this.query("[isFieldLabelable]"),function(b){return b.getFieldLabel()}).join(this.labelConnector)}return a},getSubTplData:function(){var a=this.initRenderData();Ext.apply(a,this.subTplData);return a},getSubTplMarkup:function(){var c=this,a=c.getTpl("fieldSubTpl"),b;if(!a.renderContent){c.setupRenderTpl(a)}b=a.apply(c.getSubTplData());return b},updateLabel:function(){var b=this,a=b.labelEl;if(a){b.setFieldLabel(b.getFieldLabel())}},onFieldErrorChange:function(e,b){if(this.combineErrors){var d=this,g=d.getActiveError(),c=Ext.Array.filter(d.query("[isFormField]"),function(h){return h.hasActiveError()}),a=d.getCombinedErrors(c);if(a){d.setActiveErrors(a)}else{d.unsetActiveError()}if(g!==d.getActiveError()){d.doComponentLayout()}}},getCombinedErrors:function(e){var k=[],c,l=e.length,i,d,j,b,g,h;for(c=0;c<l;c++){i=e[c];d=i.getActiveErrors();b=d.length;for(j=0;j<b;j++){g=d[j];h=i.getFieldLabel();k.push((h?h+": ":"")+g)}}return k},getTargetEl:function(){return this.bodyEl||this.callParent()}});Ext.define("Ext.form.CheckboxGroup",{extend:"Ext.form.FieldContainer",mixins:{field:"Ext.form.field.Field"},alias:"widget.checkboxgroup",requires:["Ext.layout.container.CheckboxGroup","Ext.form.field.Base"],columns:"auto",vertical:false,allowBlank:true,blankText:"You must select at least one item in this group",defaultType:"checkboxfield",groupCls:Ext.baseCSSPrefix+"form-check-group",fieldBodyCls:Ext.baseCSSPrefix+"form-checkboxgroup-body",layout:"checkboxgroup",initComponent:function(){var a=this;a.callParent();a.initField()},initValue:function(){var b=this,a=b.value;b.originalValue=b.lastValue=a||b.getValue();if(a){b.setValue(a)}},onFieldAdded:function(b){var a=this;if(b.isCheckbox){a.mon(b,"change",a.checkChange,a)}a.callParent(arguments)},onFieldRemoved:function(b){var a=this;if(b.isCheckbox){a.mun(b,"change",a.checkChange,a)}a.callParent(arguments)},isEqual:function(b,a){var c=Ext.Object.toQueryString;return c(b)===c(a)},getErrors:function(){var a=[];if(!this.allowBlank&&Ext.isEmpty(this.getChecked())){a.push(this.blankText)}return a},getBoxes:function(a){return this.query("[isCheckbox]"+(a||""))},eachBox:function(b,a){Ext.Array.forEach(this.getBoxes(),b,a||this)},getChecked:function(){return this.getBoxes("[checked]")},isDirty:function(){var c=this.getBoxes(),a,d=c.length;for(a=0;a<d;a++){if(c[a].isDirty()){return true}}},setReadOnly:function(e){var c=this.getBoxes(),a,d=c.length;for(a=0;a<d;a++){c[a].setReadOnly(e)}this.readOnly=e},reset:function(){var c=this,b=c.hasActiveError(),a=c.preventMark;c.preventMark=true;c.batchChanges(function(){var e=c.getBoxes(),d,g=e.length;for(d=0;d<g;d++){e[d].reset()}});c.preventMark=a;c.unsetActiveError();if(b){c.updateLayout()}},resetOriginalValue:function(){var d=this,c=d.getBoxes(),a,e=c.length;for(a=0;a<e;a++){c[a].resetOriginalValue()}d.originalValue=d.getValue();d.checkDirty()},setValue:function(h){var g=this,d=g.getBoxes(),a,j=d.length,e,c,i;g.batchChanges(function(){for(a=0;a<j;a++){e=d[a];c=e.getName();i=false;if(h&&h.hasOwnProperty(c)){if(Ext.isArray(h[c])){i=Ext.Array.contains(h[c],e.inputValue)}else{i=h[c]}}e.setValue(i)}});return g},getValue:function(){var d={},g=this.getBoxes(),c,j=g.length,h,e,a,i;for(c=0;c<j;c++){h=g[c];e=h.getName();a=h.inputValue;if(h.getValue()){if(d.hasOwnProperty(e)){i=d[e];if(!Ext.isArray(i)){i=d[e]=[i]}i.push(a)}else{d[e]=a}}}return d},getSubmitData:function(){return null},getModelData:function(){return null},validate:function(){var a=this,d,c,b;if(a.disabled){c=true}else{d=a.getErrors();c=Ext.isEmpty(d);b=!a.hasActiveError();if(c){a.unsetActiveError()}else{a.setActiveError(d)}}if(c!==b){a.fireEvent("validitychange",a,c);a.updateLayout()}return c}},function(){this.borrow(Ext.form.field.Base,["markInvalid","clearInvalid"])});Ext.define("Ext.form.CheckboxManager",{extend:"Ext.util.MixedCollection",singleton:true,getByName:function(a){return this.filterBy(function(b){return b.name==a})},getWithValue:function(a,b){return this.filterBy(function(c){return c.name==a&&c.inputValue==b})},getChecked:function(a){return this.filterBy(function(b){return b.name==a&&b.checked})}});Ext.define("Ext.layout.component.FieldSet",{extend:"Ext.layout.component.Body",alias:["layout.fieldset"],type:"fieldset",beforeLayoutCycle:function(a){if(a.target.collapsed){a.heightModel=this.sizeModels.shrinkWrap}},beginLayoutCycle:function(b){var c=b.target,a;this.callParent(arguments);if(c.collapsed){b.setContentHeight(0);if(b.widthModel.shrinkWrap){a=c.lastComponentSize;b.setContentWidth((a&&a.contentWidth)||100)}}},calculateOwnerHeightFromContentHeight:function(d,c){var a=d.getBorderInfo(),b=d.target.legend;return d.getProp("contentHeight")+d.getPaddingInfo().height+(b?b.getHeight():a.top)+a.bottom},publishInnerHeight:function(c,a){var b=c.target.legend;if(b){a-=b.getHeight()}this.callParent([c,a])},getLayoutItems:function(){var a=this.owner.legend;if(a){return[a]}return[]}});Ext.define("Ext.form.FieldSet",{extend:"Ext.container.Container",alias:"widget.fieldset",uses:["Ext.form.field.Checkbox","Ext.panel.Tool","Ext.layout.container.Anchor","Ext.layout.component.FieldSet"],collapsed:false,toggleOnTitleClick:true,baseCls:Ext.baseCSSPrefix+"fieldset",layout:"anchor",border:1,componentLayout:"fieldset",autoEl:"fieldset",childEls:["body"],renderTpl:["{%this.renderLegend(out,values);%}",'<div id="{id}-body" class="{baseCls}-body">',"{%this.renderContainer(out,values);%}","</div>"],stateEvents:["collapse","expand"],maskOnDisable:false,beforeDestroy:function(){var b=this,a=b.legend;if(a){delete a.ownerCt;a.destroy();b.legend=null}b.callParent()},initComponent:function(){var b=this,a=b.baseCls;b.callParent();b.addEvents("beforeexpand","beforecollapse","expand","collapse");if(b.collapsed){b.addCls(a+"-collapsed");b.collapse()}if(b.title){b.addCls(a+"-with-title")}if(b.title||b.checkboxToggle||b.collapsible){b.addCls(a+"-with-legend");b.legend=Ext.widget(b.createLegendCt())}},initRenderData:function(){var a=this.callParent();a.baseCls=this.baseCls;return a},getState:function(){var a=this.callParent();a=this.addPropertyToState(a,"collapsed");return a},afterCollapse:Ext.emptyFn,afterExpand:Ext.emptyFn,collapsedHorizontal:function(){return true},collapsedVertical:function(){return true},createLegendCt:function(){var c=this,a=[],b={xtype:"container",baseCls:c.baseCls+"-header",id:c.id+"-legend",autoEl:"legend",items:a,ownerCt:c,ownerLayout:c.componentLayout};if(c.checkboxToggle){a.push(c.createCheckboxCmp())}else{if(c.collapsible){a.push(c.createToggleCmp())}}a.push(c.createTitleCmp());return b},createTitleCmp:function(){var b=this,a={xtype:"component",html:b.title,cls:b.baseCls+"-header-text",id:b.id+"-legendTitle"};if(b.collapsible&&b.toggleOnTitleClick){a.listeners={el:{scope:b,click:b.toggle}};a.cls+=" "+b.baseCls+"-header-text-collapsible"}return(b.titleCmp=Ext.widget(a))},createCheckboxCmp:function(){var a=this,b="-checkbox";a.checkboxCmp=Ext.widget({xtype:"checkbox",hideEmptyLabel:true,name:a.checkboxName||a.id+b,cls:a.baseCls+"-header"+b,id:a.id+"-legendChk",checked:!a.collapsed,listeners:{change:a.onCheckChange,scope:a}});return a.checkboxCmp},createToggleCmp:function(){var a=this;a.toggleCmp=Ext.widget({xtype:"tool",type:"toggle",handler:a.toggle,id:a.id+"-legendToggle",scope:a});return a.toggleCmp},doRenderLegend:function(b,e){var d=e.$comp,c=d.legend,a;if(c){c.ownerLayout.configureItem(c);a=c.getRenderTree();Ext.DomHelper.generateMarkup(a,b)}},finishRender:function(){var a=this.legend;this.callParent();if(a){a.finishRender()}},getCollapsed:function(){return this.collapsed?"top":false},getCollapsedDockedItems:function(){var a=this.legend;return a?[a]:[]},setTitle:function(c){var b=this,a=b.legend;b.title=c;if(b.rendered){if(!b.legend){b.legend=a=Ext.widget(b.createLegendCt());a.ownerLayout.configureItem(a);a.render(b.el,0)}b.titleCmp.update(c)}return b},getTargetEl:function(){return this.body||this.frameBody||this.el},getContentTarget:function(){return this.body},expand:function(){return this.setExpanded(true)},collapse:function(){return this.setExpanded(false)},setExpanded:function(b){var c=this,d=c.checkboxCmp,a=b?"expand":"collapse";if(!c.rendered||c.fireEvent("before"+a,c)!==false){b=!!b;if(d){d.setValue(b)}if(b){c.removeCls(c.baseCls+"-collapsed")}else{c.addCls(c.baseCls+"-collapsed")}c.collapsed=!b;if(c.rendered){c.updateLayout({isRoot:false});c.fireEvent(a,c)}}return c},getRefItems:function(a){var c=this.callParent(arguments),b=this.legend;if(b){c.unshift(b);if(a){c.unshift.apply(c,b.getRefItems(true))}}return c},toggle:function(){this.setExpanded(!!this.collapsed)},onCheckChange:function(b,a){this.setExpanded(a)},setupRenderTpl:function(a){this.callParent(arguments);a.renderLegend=this.doRenderLegend}});Ext.define("Ext.form.Label",{extend:"Ext.Component",alias:"widget.label",requires:["Ext.util.Format"],autoEl:"label",maskOnDisable:false,getElConfig:function(){var a=this;a.html=a.text?Ext.util.Format.htmlEncode(a.text):(a.html||"");return Ext.apply(a.callParent(),{htmlFor:a.forId||""})},setText:function(c,b){var a=this;b=b!==false;if(b){a.text=c;delete a.html}else{a.html=c;delete a.text}if(a.rendered){a.el.dom.innerHTML=b!==false?Ext.util.Format.htmlEncode(c):c;a.updateLayout()}return a}});Ext.define("Ext.form.Panel",{extend:"Ext.panel.Panel",mixins:{fieldAncestor:"Ext.form.FieldAncestor"},alias:"widget.form",alternateClassName:["Ext.FormPanel","Ext.form.FormPanel"],requires:["Ext.form.Basic","Ext.util.TaskRunner"],layout:"anchor",ariaRole:"form",basicFormConfigs:["api","baseParams","errorReader","method","paramOrder","paramsAsHash","reader","standardSubmit","timeout","trackResetOnLoad","url","waitMsgTarget","waitTitle"],initComponent:function(){var a=this;if(a.frame){a.border=false}a.initFieldAncestor();a.callParent();a.relayEvents(a.form,["beforeaction","actionfailed","actioncomplete","validitychange","dirtychange"]);if(a.pollForChanges){a.startPolling(a.pollInterval||500)}},initItems:function(){var a=this;a.form=a.createForm();a.callParent()},afterFirstLayout:function(){this.callParent();this.form.initialize()},createForm:function(){var b={},d=this.basicFormConfigs,a=d.length,c=0,e;for(;c<a;++c){e=d[c];b[e]=this[e]}return new Ext.form.Basic(this,b)},getForm:function(){return this.form},loadRecord:function(a){return this.getForm().loadRecord(a)},getRecord:function(){return this.getForm().getRecord()},getValues:function(d,b,c,a){return this.getForm().getValues(d,b,c,a)},beforeDestroy:function(){this.stopPolling();this.form.destroy();this.callParent()},load:function(a){this.form.load(a)},submit:function(a){this.form.submit(a)},startPolling:function(b){this.stopPolling();var a=new Ext.util.TaskRunner(b);a.start({interval:0,run:this.checkChange,scope:this});this.pollTask=a},stopPolling:function(){var a=this.pollTask;if(a){a.stopAll();delete this.pollTask}},checkChange:function(){var a=this.form.getFields().items,b,d=a.length,c;for(b=0;b<d;b++){a[b].checkChange()}}});Ext.define("Ext.form.RadioGroup",{extend:"Ext.form.CheckboxGroup",alias:"widget.radiogroup",allowBlank:true,blankText:"You must select one item in this group",defaultType:"radiofield",groupCls:Ext.baseCSSPrefix+"form-radio-group",getBoxes:function(a){return this.query("[isRadio]"+(a||""))},checkChange:function(){var b=this.getValue(),a=Ext.Object.getKeys(b)[0];if(Ext.isArray(b[a])){return}this.callParent(arguments)},setValue:function(d){var j,g,e,h,c,a,b;if(Ext.isObject(d)){for(b in d){if(d.hasOwnProperty(b)){j=d[b];g=this.items.first();e=g?g.getFormId():null;h=Ext.form.RadioManager.getWithValue(b,j,e).items;a=h.length;for(c=0;c<a;++c){h[c].setValue(true)}}}}return this}});Ext.define("Ext.form.RadioManager",{extend:"Ext.util.MixedCollection",singleton:true,getByName:function(a,b){return this.filterBy(function(c){return c.name==a&&c.getFormId()==b})},getWithValue:function(a,b,c){return this.filterBy(function(d){return d.name==a&&d.inputValue==b&&d.getFormId()==c})},getChecked:function(a,b){return this.findBy(function(c){return c.name==a&&c.checked&&c.getFormId()==b})}});Ext.define("Ext.form.action.DirectLoad",{extend:"Ext.form.action.Load",requires:["Ext.direct.Manager"],alternateClassName:"Ext.form.Action.DirectLoad",alias:"formaction.directload",type:"directload",run:function(){var d=this,c=d.form,b=c.api.load,e=b.directCfg.method,a=e.getArgs(d.getParams(),c.paramOrder,c.paramsAsHash);a.push(d.onComplete,d);b.apply(window,a)},processResponse:function(a){return(this.result=a)},onComplete:function(b,a){if(b){this.onSuccess(b)}else{this.onFailure(null)}}});Ext.define("Ext.form.action.DirectSubmit",{extend:"Ext.form.action.Submit",requires:["Ext.direct.Manager"],alternateClassName:"Ext.form.Action.DirectSubmit",alias:"formaction.directsubmit",type:"directsubmit",doSubmit:function(){var b=this,c=Ext.Function.bind(b.onComplete,b),a=b.buildForm();b.form.api.submit(a,c,b);Ext.removeNode(a)},processResponse:function(a){return(this.result=a)},onComplete:function(b,a){if(b){this.onSuccess(b)}else{this.onFailure(null)}}});Ext.define("Ext.form.action.StandardSubmit",{extend:"Ext.form.action.Submit",alias:"formaction.standardsubmit",doSubmit:function(){var a=this.buildForm();a.submit();Ext.removeNode(a)}});Ext.define("Ext.form.field.Checkbox",{extend:"Ext.form.field.Base",alias:["widget.checkboxfield","widget.checkbox"],alternateClassName:"Ext.form.Checkbox",requires:["Ext.XTemplate","Ext.form.CheckboxManager"],componentLayout:"field",childEls:["boxLabelEl"],fieldSubTpl:["<tpl if=\"boxLabel && boxLabelAlign == 'before'\">","{beforeBoxLabelTpl}",'<label id="{cmpId}-boxLabelEl" {boxLabelAttrTpl} class="{boxLabelCls} {boxLabelCls}-{boxLabelAlign}" for="{id}">',"{beforeBoxLabelTextTpl}","{boxLabel}","{afterBoxLabelTextTpl}","</label>","{afterBoxLabelTpl}","</tpl>",'<input type="button" id="{id}" {inputAttrTpl}','<tpl if="tabIdx"> tabIndex="{tabIdx}"</tpl>','<tpl if="disabled"> disabled="disabled"</tpl>','<tpl if="fieldStyle"> style="{fieldStyle}"</tpl>',' class="{fieldCls} {typeCls}" autocomplete="off" hidefocus="true" />',"<tpl if=\"boxLabel && boxLabelAlign == 'after'\">","{beforeBoxLabelTpl}",'<label id="{cmpId}-boxLabelEl" {boxLabelAttrTpl} class="{boxLabelCls} {boxLabelCls}-{boxLabelAlign}" for="{id}">',"{beforeBoxLabelTextTpl}","{boxLabel}","{afterBoxLabelTextTpl}","</label>","{afterBoxLabelTpl}","</tpl>",{disableFormats:true,compiled:true}],subTplInsertions:["beforeBoxLabelTpl","afterBoxLabelTpl","beforeBoxLabelTextTpl","afterBoxLabelTextTpl","boxLabelAttrTpl","inputAttrTpl"],isCheckbox:true,focusCls:"form-cb-focus",fieldBodyCls:Ext.baseCSSPrefix+"form-cb-wrap",checked:false,checkedCls:Ext.baseCSSPrefix+"form-cb-checked",boxLabelCls:Ext.baseCSSPrefix+"form-cb-label",boxLabelAlign:"after",inputValue:"on",checkChangeEvents:[],inputType:"checkbox",onRe:/^on$/i,initComponent:function(){this.callParent(arguments);this.getManager().add(this)},initValue:function(){var b=this,a=!!b.checked;b.originalValue=b.lastValue=a;b.setValue(a)},getElConfig:function(){var a=this;if(a.isChecked(a.rawValue,a.inputValue)){a.addCls(a.checkedCls)}return a.callParent()},getFieldStyle:function(){return Ext.isObject(this.fieldStyle)?Ext.DomHelper.generateStyles(this.fieldStyle):this.fieldStyle||""},getSubTplData:function(){var a=this;return Ext.apply(a.callParent(),{disabled:a.readOnly||a.disabled,boxLabel:a.boxLabel,boxLabelCls:a.boxLabelCls,boxLabelAlign:a.boxLabelAlign})},initEvents:function(){var a=this;a.callParent();a.mon(a.inputEl,"click",a.onBoxClick,a)},onBoxClick:function(b){var a=this;if(!a.disabled&&!a.readOnly){this.setValue(!this.checked)}},getRawValue:function(){return this.checked},getValue:function(){return this.checked},getSubmitValue:function(){var a=this.uncheckedValue,b=Ext.isDefined(a)?a:null;return this.checked?this.inputValue:b},isChecked:function(b,a){return(b===true||b==="true"||b==="1"||b===1||(((Ext.isString(b)||Ext.isNumber(b))&&a)?b==a:this.onRe.test(b)))},setRawValue:function(c){var b=this,d=b.inputEl,a=b.isChecked(c,b.inputValue);if(d){b[a?"addCls":"removeCls"](b.checkedCls)}b.checked=b.rawValue=a;return a},setValue:function(g){var e=this,c,b,a,d;if(Ext.isArray(g)){c=e.getManager().getByName(e.name,e.getFormId()).items;a=c.length;for(b=0;b<a;++b){d=c[b];d.setValue(Ext.Array.contains(g,d.inputValue))}}else{e.callParent(arguments)}return e},valueToRaw:function(a){return a},onChange:function(b,a){var d=this,c=d.handler;if(c){c.call(d.scope||d,d,b)}d.callParent(arguments)},resetOriginalValue:function(b){var g=this,d,e,a,c;if(!b){d=g.getManager().getByName(g.name,g.getFormId()).items;a=d.length;for(c=0;c<a;++c){e=d[c];if(e!==g){d[c].resetOriginalValue(true)}}}g.callParent()},beforeDestroy:function(){this.callParent();this.getManager().removeAtKey(this.id)},getManager:function(){return Ext.form.CheckboxManager},onEnable:function(){var a=this,b=a.inputEl;a.callParent();if(b){b.dom.disabled=a.readOnly}},setReadOnly:function(c){var a=this,b=a.inputEl;if(b){b.dom.disabled=!!c||a.disabled}a.callParent(arguments)},getFormId:function(){var b=this,a;if(!b.formId){a=b.up("form");if(a){b.formId=a.id}}return b.formId}});Ext.define("Ext.layout.component.field.Trigger",{alias:"layout.triggerfield",extend:"Ext.layout.component.field.Field",type:"triggerfield",beginLayout:function(d){var c=this,a=c.owner,b;d.triggerWrap=d.getEl("triggerWrap");c.callParent(arguments);b=a.getTriggerStateFlags();if(b!=a.lastTriggerStateFlags){a.lastTriggerStateFlags=b;c.updateEditState()}},beginLayoutFixed:function(g,c,h){var d=this,a=g.target,e=d.ieInputWidthAdjustment||0,i="100%",b=a.triggerWrap;d.callParent(arguments);a.inputCell.setStyle("width","100%");if(e){a.inputCell.setStyle("padding-right",e+"px");if(h==="px"){if(a.inputWidth){i=a.inputWidth-a.getTriggerWidth()}else{i=c-e-a.getTriggerWidth()}i+="px"}}a.inputEl.setStyle("width",i);i=a.inputWidth;if(i){b.setStyle("width",i+(e)+"px")}else{b.setStyle("width",c+h)}b.setStyle("table-layout","fixed")},beginLayoutShrinkWrap:function(d){var a=d.target,g="",e=a.inputWidth,b=a.triggerWrap,c=this.ieInputWidthAdjustment||0;this.callParent(arguments);if(e){b.setStyle("width",e+"px");e=(e-a.getTriggerWidth())+"px";a.inputEl.setStyle("width",e);a.inputCell.setStyle("width",e)}else{a.inputCell.setStyle("width",g);a.inputEl.setStyle("width",g);b.setStyle("width",g);b.setStyle("table-layout","auto")}},getTextWidth:function(){var b=this,a=b.owner,d=a.inputEl,c;c=(d.dom.value||(a.hasFocus?"":a.emptyText)||"")+a.growAppend;return d.getTextWidth(c)},measureContentWidth:function(h){var g=this,b=g.owner,e=g.callParent(arguments),i=h.inputContext,d,a,c;if(b.grow&&!h.state.growHandled){d=g.getTextWidth()+h.inputContext.getFrameInfo().width;a=b.growMax;c=Math.min(a,e);a=Math.max(b.growMin,a,c);d=Ext.Number.constrain(d,b.growMin,a);i.setWidth(d);h.state.growHandled=true;i.domBlock(g,"width");e=NaN}return e},updateEditState:function(){var c=this,a=c.owner,e=a.inputEl,d=Ext.baseCSSPrefix+"trigger-noedit",b,g;if(c.owner.readOnly){e.addCls(d);g=true;b=false}else{if(c.owner.editable){e.removeCls(d);g=false}else{e.addCls(d);g=true}b=!c.owner.hideTrigger}a.triggerCell.setDisplayed(b);e.dom.readOnly=g}});Ext.define("Ext.layout.component.field.ComboBox",{extend:"Ext.layout.component.field.Trigger",alias:"layout.combobox",requires:["Ext.util.TextMetrics"],type:"combobox",startingWidth:null,getTextWidth:function(){var h=this,b=h.owner,l=b.store,j=b.displayField,d=l.data.length,k="",e=0,c=0,g,m,a;for(;e<d;e++){m=l.getAt(e).data[j];g=m.length;if(g>c){c=g;k=m}}a=Math.max(h.callParent(arguments),b.inputEl.getTextWidth(k+b.growAppend));if(!h.startingWidth||b.removingRecords){h.startingWidth=a;if(a<b.growMin){b.defaultListConfig.minWidth=b.growMin}b.removingRecords=false}return(a<h.startingWidth)?h.startingWidth:a}});Ext.define("Ext.form.field.Trigger",{extend:"Ext.form.field.Text",alias:["widget.triggerfield","widget.trigger"],requires:["Ext.DomHelper","Ext.util.ClickRepeater","Ext.layout.component.field.Trigger"],alternateClassName:["Ext.form.TriggerField","Ext.form.TwinTriggerField","Ext.form.Trigger"],childEls:[{name:"triggerCell",select:"."+Ext.baseCSSPrefix+"trigger-cell"},{name:"triggerEl",select:"."+Ext.baseCSSPrefix+"form-trigger"},"triggerWrap","inputCell"],triggerBaseCls:Ext.baseCSSPrefix+"form-trigger",triggerWrapCls:Ext.baseCSSPrefix+"form-trigger-wrap",triggerNoEditCls:Ext.baseCSSPrefix+"trigger-noedit",hideTrigger:false,editable:true,readOnly:false,repeatTriggerClick:false,autoSize:Ext.emptyFn,monitorTab:true,mimicing:false,triggerIndexRe:/trigger-index-(\d+)/,componentLayout:"triggerfield",initComponent:function(){this.wrapFocusCls=this.triggerWrapCls+"-focus";this.callParent(arguments)},getSubTplMarkup:function(){var a=this,b=a.callParent(arguments);return'<table id="'+a.id+'-triggerWrap" class="'+Ext.baseCSSPrefix+'form-trigger-wrap" cellpadding="0" cellspacing="0"><tbody><tr><td id="'+a.id+'-inputCell" class="'+Ext.baseCSSPrefix+'form-trigger-input-cell">'+b+"</td>"+a.getTriggerMarkup()+"</tr></tbody></table>"},getSubTplData:function(){var b=this,c=b.callParent(),d=b.readOnly===true,a=b.editable!==false;return Ext.apply(c,{editableCls:(d||!a)?" "+b.triggerNoEditCls:"",readOnly:!a||d})},getLabelableRenderData:function(){var b=this,c=b.triggerWrapCls,a=b.callParent(arguments);return Ext.applyIf(a,{triggerWrapCls:c,triggerMarkup:b.getTriggerMarkup()})},getTriggerMarkup:function(){var c=this,b=0,d=(c.readOnly||c.hideTrigger),g,e=c.triggerBaseCls,a=[];if(!c.trigger1Cls){c.trigger1Cls=c.triggerCls}for(b=0;(g=c["trigger"+(b+1)+"Cls"])||b<1;b++){a.push({tag:"td",valign:"top",cls:Ext.baseCSSPrefix+"trigger-cell",style:"width:"+c.triggerWidth+(d?"px;display:none":"px"),cn:{cls:[Ext.baseCSSPrefix+"trigger-index-"+b,e,g].join(" "),role:"button"}})}a[b-1].cn.cls+=" "+e+"-last";return Ext.DomHelper.markup(a)},disableCheck:function(){return !this.disabled},beforeRender:function(){var a=this,b=a.triggerBaseCls,c;if(!a.triggerWidth){c=Ext.resetElement.createChild({style:"position: absolute;",cls:Ext.baseCSSPrefix+"form-trigger"});Ext.form.field.Trigger.prototype.triggerWidth=c.getWidth();c.remove()}a.callParent();if(b!=Ext.baseCSSPrefix+"form-trigger"){a.addChildEls({name:"triggerEl",select:"."+b})}a.lastTriggerStateFlags=a.getTriggerStateFlags()},onRender:function(){var a=this;a.callParent(arguments);a.doc=Ext.getDoc();a.initTrigger();a.triggerEl.unselectable()},getTriggerWidth:function(){var b=this,a=0;if(b.triggerWrap&&!b.hideTrigger&&!b.readOnly){a=b.triggerEl.getCount()*b.triggerWidth}return a},setHideTrigger:function(a){if(a!=this.hideTrigger){this.hideTrigger=a;this.updateLayout()}},setEditable:function(a){if(a!=this.editable){this.editable=a;this.updateLayout()}},setReadOnly:function(a){if(a!=this.readOnly){this.readOnly=a;this.updateLayout()}},initTrigger:function(){var h=this,i=h.triggerWrap,k=h.triggerEl,a=h.disableCheck,d,c,b,g,j;if(h.repeatTriggerClick){h.triggerRepeater=new Ext.util.ClickRepeater(i,{preventDefault:true,handler:h.onTriggerWrapClick,listeners:{mouseup:h.onTriggerWrapMouseup,scope:h},scope:h})}else{h.mon(i,{click:h.onTriggerWrapClick,mouseup:h.onTriggerWrapMouseup,scope:h})}k.setVisibilityMode(Ext.Element.DISPLAY);k.addClsOnOver(h.triggerBaseCls+"-over",a,h);d=k.elements;c=d.length;for(g=0;g<c;g++){b=d[g];j=g+1;b.addClsOnOver(h["trigger"+(j)+"Cls"]+"-over",a,h);b.addClsOnClick(h["trigger"+(j)+"Cls"]+"-click",a,h)}k.addClsOnClick(h.triggerBaseCls+"-click",a,h)},onDestroy:function(){var a=this;Ext.destroyMembers(a,"triggerRepeater","triggerWrap","triggerEl");delete a.doc;a.callParent()},onFocus:function(){var a=this;a.callParent(arguments);if(!a.mimicing){a.bodyEl.addCls(a.wrapFocusCls);a.mimicing=true;a.mon(a.doc,"mousedown",a.mimicBlur,a,{delay:10});if(a.monitorTab){a.on("specialkey",a.checkTab,a)}}},checkTab:function(a,b){if(!this.ignoreMonitorTab&&b.getKey()==b.TAB){this.triggerBlur()}},getTriggerStateFlags:function(){var a=this,b=0;if(a.readOnly){b+=1}if(a.editable){b+=2}if(a.hideTrigger){b+=4}return b},onBlur:Ext.emptyFn,mimicBlur:function(a){if(!this.isDestroyed&&!this.bodyEl.contains(a.target)&&this.validateBlur(a)){this.triggerBlur(a)}},triggerBlur:function(b){var a=this;a.mimicing=false;a.mun(a.doc,"mousedown",a.mimicBlur,a);if(a.monitorTab&&a.inputEl){a.un("specialkey",a.checkTab,a)}Ext.form.field.Trigger.superclass.onBlur.call(a,b);if(a.bodyEl){a.bodyEl.removeCls(a.wrapFocusCls)}},validateBlur:function(a){return true},onTriggerWrapClick:function(){var d=this,e,b,a,c;c=arguments[d.triggerRepeater?1:0];if(c&&!d.readOnly&&!d.disabled){e=c.getTarget("."+d.triggerBaseCls,null);b=e&&e.className.match(d.triggerIndexRe);if(b){a=d["onTrigger"+(parseInt(b[1],10)+1)+"Click"]||d.onTriggerClick;if(a){a.call(d,c)}}}},onTriggerWrapMouseup:Ext.emptyFn,onTriggerClick:Ext.emptyFn});Ext.define("Ext.form.field.Picker",{extend:"Ext.form.field.Trigger",alias:"widget.pickerfield",alternateClassName:"Ext.form.Picker",requires:["Ext.util.KeyNav"],matchFieldWidth:true,pickerAlign:"tl-bl?",openCls:Ext.baseCSSPrefix+"pickerfield-open",editable:true,initComponent:function(){this.callParent();this.addEvents("expand","collapse","select")},initEvents:function(){var a=this;a.callParent();a.keyNav=new Ext.util.KeyNav(a.inputEl,{down:a.onDownArrow,esc:{handler:a.onEsc,scope:a,defaultEventAction:false},scope:a,forceKeyDown:true});if(!a.editable){a.mon(a.inputEl,"click",a.onTriggerClick,a)}if(Ext.isGecko){a.inputEl.dom.setAttribute("autocomplete","off")}},onEsc:function(b){var a=this;if(a.isExpanded){a.collapse();b.stopEvent()}else{if(a.up("window")){a.blur()}else{if((!Ext.FocusManager||!Ext.FocusManager.enabled)){b.stopEvent()}}}},onDownArrow:function(a){if(!this.isExpanded){this.onTriggerClick()}},expand:function(){var c=this,a,b,d;if(c.rendered&&!c.isExpanded&&!c.isDestroyed){a=c.bodyEl;b=c.getPicker();d=c.collapseIf;b.show();c.isExpanded=true;c.alignPicker();a.addCls(c.openCls);c.mon(Ext.getDoc(),{mousewheel:d,mousedown:d,scope:c});Ext.EventManager.onWindowResize(c.alignPicker,c);c.fireEvent("expand",c);c.onExpand()}},onExpand:Ext.emptyFn,alignPicker:function(){var b=this,a=b.getPicker();if(b.isExpanded){if(b.matchFieldWidth){a.setWidth(b.bodyEl.getWidth())}if(a.isFloating()){b.doAlign()}}},doAlign:function(){var d=this,c=d.picker,a="-above",b;d.picker.alignTo(d.inputEl,d.pickerAlign,d.pickerOffset);b=c.el.getY()<d.inputEl.getY();d.bodyEl[b?"addCls":"removeCls"](d.openCls+a);c[b?"addCls":"removeCls"](c.baseCls+a)},collapse:function(){if(this.isExpanded&&!this.isDestroyed){var d=this,c=d.openCls,b=d.picker,e=Ext.getDoc(),g=d.collapseIf,a="-above";b.hide();d.isExpanded=false;d.bodyEl.removeCls([c,c+a]);b.el.removeCls(b.baseCls+a);e.un("mousewheel",g,d);e.un("mousedown",g,d);Ext.EventManager.removeResizeListener(d.alignPicker,d);d.fireEvent("collapse",d);d.onCollapse()}},onCollapse:Ext.emptyFn,collapseIf:function(b){var a=this;if(!a.isDestroyed&&!b.within(a.bodyEl,false,true)&&!b.within(a.picker.el,false,true)&&!a.isEventWithinPickerLoadMask(b)){a.collapse()}},getPicker:function(){var a=this;return a.picker||(a.picker=a.createPicker())},createPicker:Ext.emptyFn,onTriggerClick:function(){var a=this;if(!a.readOnly&&!a.disabled){if(a.isExpanded){a.collapse()}else{a.expand()}a.inputEl.focus()}},mimicBlur:function(c){var b=this,a=b.picker;if(!a||!c.within(a.el,false,true)&&!b.isEventWithinPickerLoadMask(c)){b.callParent(arguments)}},onDestroy:function(){var b=this,a=b.picker;Ext.EventManager.removeResizeListener(b.alignPicker,b);Ext.destroy(b.keyNav);if(a){delete a.pickerField;a.destroy()}b.callParent()},isEventWithinPickerLoadMask:function(b){var a=this.picker.loadMask;return a?b.within(a.maskEl,false,true)||b.within(a.el,false,true):false}});Ext.define("Ext.layout.component.BoundList",{extend:"Ext.layout.component.Auto",alias:"layout.boundlist",type:"component",beginLayout:function(d){var c=this,a=c.owner,b=a.pagingToolbar;c.callParent(arguments);if(a.floating){d.savedXY=a.el.getXY();a.el.setXY([-9999,-9999])}if(b){d.toolbarContext=d.context.getCmp(b)}d.listContext=d.getEl("listEl")},beginLayoutCycle:function(b){var a=this.owner;this.callParent(arguments);if(b.heightModel.auto){a.el.setHeight("auto");a.listEl.setHeight("auto")}},getLayoutItems:function(){var a=this.owner.pagingToolbar;return a?[a]:[]},isValidParent:function(){return true},finishedLayout:function(a){var b=a.savedXY;this.callParent(arguments);if(b){this.owner.el.setXY(b)}},measureContentWidth:function(a){return this.owner.listEl.getWidth()},measureContentHeight:function(a){return this.owner.listEl.getHeight()},publishInnerHeight:function(c,a){var b=c.toolbarContext,d=0;if(b){d=b.getProp("height")}if(d===undefined){this.done=false}else{c.listContext.setHeight(a-c.getFrameInfo().height-d)}},calculateOwnerHeightFromContentHeight:function(c){var a=this.callParent(arguments),b=c.toolbarContext;if(b){a+=b.getProp("height")}return a}});Ext.define("Ext.selection.Model",{extend:"Ext.util.Observable",alternateClassName:"Ext.AbstractSelectionModel",requires:["Ext.data.StoreManager"],mixins:{bindable:"Ext.util.Bindable"},allowDeselect:false,selected:null,pruneRemoved:true,constructor:function(a){var b=this;a=a||{};Ext.apply(b,a);b.addEvents("selectionchange","focuschange");b.modes={SINGLE:true,SIMPLE:true,MULTI:true};b.setSelectionMode(a.mode||b.mode);b.selected=new Ext.util.MixedCollection();b.callParent(arguments)},bindStore:function(a,b){var c=this;c.mixins.bindable.bindStore.apply(c,arguments);if(c.store&&!b){c.refresh()}},getStoreListeners:function(){var a=this;return{add:a.onStoreAdd,clear:a.onStoreClear,remove:a.onStoreRemove,update:a.onStoreUpdate}},selectAll:function(b){var e=this,d=e.store.getRange(),c=0,a=d.length,g=e.getSelection().length;e.bulkChange=true;for(;c<a;c++){e.doSelect(d[c],true,b)}delete e.bulkChange;e.maybeFireSelectionChange(e.getSelection().length!==g)},deselectAll:function(b){var e=this,d=e.getSelection(),c=0,a=d.length,g=e.getSelection().length;e.bulkChange=true;for(;c<a;c++){e.doDeselect(d[c],b)}delete e.bulkChange;e.maybeFireSelectionChange(e.getSelection().length!==g)},selectWithEvent:function(a,d,c){var b=this;switch(b.selectionMode){case"MULTI":if(d.ctrlKey&&b.isSelected(a)){b.doDeselect(a,false)}else{if(d.shiftKey&&b.lastFocused){b.selectRange(b.lastFocused,a,d.ctrlKey)}else{if(d.ctrlKey){b.doSelect(a,true,false)}else{if(b.isSelected(a)&&!d.shiftKey&&!d.ctrlKey&&b.selected.getCount()>1){b.doSelect(a,c,false)}else{b.doSelect(a,false)}}}}break;case"SIMPLE":if(b.isSelected(a)){b.doDeselect(a)}else{b.doSelect(a,true)}break;case"SINGLE":if(b.allowDeselect&&b.isSelected(a)){b.doDeselect(a)}else{b.doSelect(a,false)}break}},selectRange:function(l,e,m,c){var j=this,k=j.store,d=0,h,g,a,b=[];if(j.isLocked()){return}if(!m){j.deselectAll(true)}if(!Ext.isNumber(l)){l=k.indexOf(l)}if(!Ext.isNumber(e)){e=k.indexOf(e)}if(l>e){g=e;e=l;l=g}for(h=l;h<=e;h++){if(j.isSelected(k.getAt(h))){d++}}if(!c){a=-1}else{a=(c=="up")?l:e}for(h=l;h<=e;h++){if(d==(e-l+1)){if(h!=a){j.doDeselect(h,true)}}else{b.push(k.getAt(h))}}j.doMultiSelect(b,true)},select:function(b,c,a){if(Ext.isDefined(b)){this.doSelect(b,c,a)}},deselect:function(b,a){this.doDeselect(b,a)},doSelect:function(c,e,b){var d=this,a;if(d.locked||!d.store){return}if(typeof c==="number"){c=[d.store.getAt(c)]}if(d.selectionMode=="SINGLE"&&c){a=c.length?c[0]:c;d.doSingleSelect(a,b)}else{d.doMultiSelect(c,e,b)}},doMultiSelect:function(a,l,k){var h=this,b=h.selected,j=false,d=0,g,e;if(h.locked){return}a=!Ext.isArray(a)?[a]:a;g=a.length;if(!l&&b.getCount()>0){if(h.doDeselect(h.getSelection(),k)===false){return}}function c(){b.add(e);j=true}for(;d<g;d++){e=a[d];if(l&&h.isSelected(e)){continue}h.lastSelected=e;h.onSelectChange(e,true,k,c)}if(!h.preventFocus){h.setLastFocused(e,k)}h.maybeFireSelectionChange(j&&!k)},doDeselect:function(a,k){var j=this,b=j.selected,d=0,h,e,l=0,g=0;if(j.locked||!j.store){return false}if(typeof a==="number"){a=[j.store.getAt(a)]}else{if(!Ext.isArray(a)){a=[a]}}function c(){++g;b.remove(e)}h=a.length;for(;d<h;d++){e=a[d];if(j.isSelected(e)){if(j.lastSelected==e){j.lastSelected=b.last()}++l;j.onSelectChange(e,false,k,c)}}j.maybeFireSelectionChange(g>0&&!k);return g===l},doSingleSelect:function(a,b){var d=this,g=false,c=d.selected;if(d.locked){return}if(d.isSelected(a)){return}function e(){d.bulkChange=true;if(c.getCount()>0&&d.doDeselect(d.lastSelected,b)===false){delete d.bulkChange;return false}delete d.bulkChange;c.add(a);d.lastSelected=a;g=true}d.onSelectChange(a,true,b,e);if(g){if(!b){d.setLastFocused(a)}d.maybeFireSelectionChange(!b)}},setLastFocused:function(c,b){var d=this,a=d.lastFocused;d.lastFocused=c;if(c!==a){d.onLastFocusChanged(a,c,b)}},isFocused:function(a){return a===this.getLastFocused()},maybeFireSelectionChange:function(a){var b=this;if(a&&!b.bulkChange){b.fireEvent("selectionchange",b,b.getSelection())}},getLastSelected:function(){return this.lastSelected},getLastFocused:function(){return this.lastFocused},getSelection:function(){return this.selected.getRange()},getSelectionMode:function(){return this.selectionMode},setSelectionMode:function(a){a=a?a.toUpperCase():"SINGLE";this.selectionMode=this.modes[a]?a:"SINGLE"},isLocked:function(){return this.locked},setLocked:function(a){this.locked=!!a},isSelected:function(a){a=Ext.isNumber(a)?this.store.getAt(a):a;return this.selected.indexOf(a)!==-1},hasSelection:function(){return this.selected.getCount()>0},refresh:function(){var e=this,j=e.store,c=[],a=e.getSelection(),d=a.length,h,g,b=0,k=e.getLastFocused();if(!j){return}for(;b<d;b++){h=a[b];if(!e.pruneRemoved||j.indexOf(h)!==-1){c.push(h)}}if(e.selected.getCount()!=c.length){g=true}e.clearSelections();if(j.indexOf(k)!==-1){e.setLastFocused(k,true)}if(c.length){e.doSelect(c,false,true)}e.maybeFireSelectionChange(g)},clearSelections:function(){this.selected.clear();this.lastSelected=null;this.setLastFocused(null)},onStoreAdd:Ext.emptyFn,onStoreClear:function(){if(this.selected.getCount>0){this.clearSelections();this.maybeFireSelectionChange(true)}},onStoreRemove:function(b,a,c){var e=this,d=e.selected;if(e.locked||!e.pruneRemoved){return}if(d.remove(a)){if(e.lastSelected==a){e.lastSelected=null}if(e.getLastFocused()==a){e.setLastFocused(null)}e.maybeFireSelectionChange(true)}},getCount:function(){return this.selected.getCount()},destroy:Ext.emptyFn,onStoreUpdate:Ext.emptyFn,onStoreLoad:Ext.emptyFn,onSelectChange:Ext.emptyFn,onLastFocusChanged:function(b,a){this.fireEvent("focuschange",this,b,a)},onEditorKey:Ext.emptyFn,bindComponent:Ext.emptyFn,beforeViewRender:Ext.emptyFn});Ext.define("Ext.selection.DataViewModel",{extend:"Ext.selection.Model",requires:["Ext.util.KeyNav"],deselectOnContainerClick:true,enableKeyNav:true,constructor:function(a){this.addEvents("beforedeselect","beforeselect","deselect","select");this.callParent(arguments)},bindComponent:function(a){var b=this,c={refresh:b.refresh,scope:b};b.view=a;b.bindStore(a.getStore());c[a.triggerEvent]=b.onItemClick;c[a.triggerCtEvent]=b.onContainerClick;a.on(c);if(b.enableKeyNav){b.initKeyNav(a)}},onItemClick:function(b,a,d,c,g){this.selectWithEvent(a,g)},onContainerClick:function(){if(this.deselectOnContainerClick){this.deselectAll()}},initKeyNav:function(a){var b=this;if(!a.rendered){a.on({render:Ext.Function.bind(b.initKeyNav,b,[a]),single:true});return}a.el.set({tabIndex:-1});b.keyNav=new Ext.util.KeyNav({target:a.el,ignoreInputFields:true,down:Ext.pass(b.onNavKey,[1],b),right:Ext.pass(b.onNavKey,[1],b),left:Ext.pass(b.onNavKey,[-1],b),up:Ext.pass(b.onNavKey,[-1],b),scope:b})},onNavKey:function(g){g=g||1;var e=this,b=e.view,d=e.getSelection()[0],c=e.view.store.getCount(),a;if(d){a=b.indexOf(b.getNode(d))+g}else{a=0}if(a<0){a=c-1}else{if(a>=c){a=0}}e.select(a)},onSelectChange:function(b,e,d,h){var g=this,a=g.view,c=e?"select":"deselect";if((d||g.fireEvent("before"+c,g,b))!==false&&h()!==false){if(a){if(e){a.onItemSelect(b)}else{a.onItemDeselect(b)}}if(!d){g.fireEvent(c,g,b)}}},destroy:function(){Ext.destroy(this.keyNav);this.callParent()}});Ext.define("Ext.view.AbstractView",{extend:"Ext.Component",requires:["Ext.LoadMask","Ext.data.StoreManager","Ext.CompositeElementLite","Ext.DomQuery","Ext.selection.DataViewModel"],mixins:{bindable:"Ext.util.Bindable"},inheritableStatics:{getRecord:function(a){return this.getBoundView(a).getRecord(a)},getBoundView:function(a){return Ext.getCmp(a.boundView)}},deferInitialRefresh:true,itemCls:Ext.baseCSSPrefix+"dataview-item",loadingText:"Loading...",loadMask:true,loadingUseMsg:true,selectedItemCls:Ext.baseCSSPrefix+"item-selected",emptyText:"",deferEmptyText:true,trackOver:false,blockRefresh:false,preserveScrollOnRefresh:false,last:false,triggerEvent:"itemclick",triggerCtEvent:"containerclick",addCmpEvents:function(){},initComponent:function(){var c=this,a=Ext.isDefined,d=c.itemTpl,b={};if(d){if(Ext.isArray(d)){d=d.join("")}else{if(Ext.isObject(d)){b=Ext.apply(b,d.initialConfig);d=d.html}}if(!c.itemSelector){c.itemSelector="."+c.itemCls}d=Ext.String.format('<tpl for="."><div class="{0}">{1}</div></tpl>',c.itemCls,d);c.tpl=new Ext.XTemplate(d,b)}c.callParent();if(Ext.isString(c.tpl)||Ext.isArray(c.tpl)){c.tpl=new Ext.XTemplate(c.tpl)}c.addEvents("beforerefresh","refresh","viewready","itemupdate","itemadd","itemremove");c.addCmpEvents();c.store=Ext.data.StoreManager.lookup(c.store||"ext-empty-store");c.bindStore(c.store,true);c.all=new Ext.CompositeElementLite();c.scrollState={top:0,left:0};c.on({scroll:c.onViewScroll,element:"el",scope:c})},onRender:function(){var c=this,b=c.loadMask,a={msg:c.loadingText,msgCls:c.loadingCls,useMsg:c.loadingUseMsg,store:c.getMaskStore()};c.callParent(arguments);if(b){if(Ext.isObject(b)){a=Ext.apply(a,b)}c.loadMask=new Ext.LoadMask(c,a);c.loadMask.on({scope:c,beforeshow:c.onMaskBeforeShow,hide:c.onMaskHide})}},finishRender:function(){var a=this;a.callParent(arguments);if(!a.up("[collapsed],[hidden]")){a.doFirstRefresh(a.store)}},onBoxReady:function(){var a=this;a.callParent(arguments);if(!a.firstRefreshDone){a.doFirstRefresh(a.store)}},getMaskStore:function(){return this.store},onMaskBeforeShow:function(){var b=this,a=b.loadingHeight;b.getSelectionModel().deselectAll();b.all.clear();if(a&&a>b.getHeight()){b.hasLoadingHeight=true;b.oldMinHeight=b.minHeight;b.minHeight=a;b.updateLayout()}},onMaskHide:function(){var a=this;if(!a.destroying&&a.hasLoadingHeight){a.minHeight=a.oldMinHeight;a.updateLayout();delete a.hasLoadingHeight}},beforeRender:function(){this.callParent(arguments);this.getSelectionModel().beforeViewRender(this)},afterRender:function(){this.callParent(arguments);this.getSelectionModel().bindComponent(this)},getSelectionModel:function(){var a=this,b="SINGLE";if(!a.selModel){a.selModel={}}if(a.simpleSelect){b="SIMPLE"}else{if(a.multiSelect){b="MULTI"}}Ext.applyIf(a.selModel,{allowDeselect:a.allowDeselect,mode:b});if(!a.selModel.events){a.selModel=new Ext.selection.DataViewModel(a.selModel)}if(!a.selModel.hasRelaySetup){a.relayEvents(a.selModel,["selectionchange","beforeselect","beforedeselect","select","deselect","focuschange"]);a.selModel.hasRelaySetup=true}if(a.disableSelection){a.selModel.locked=true}return a.selModel},refresh:function(){var c=this,h,b,e,d,g,a;if(!c.rendered||c.isDestroyed){return}if(!c.hasListeners.beforerefresh||c.fireEvent("beforerefresh",c)!==false){h=c.getTargetEl();a=c.store.getRange();g=h.dom;if(!c.preserveScrollOnRefresh){b=g.parentNode;e=g.style.display;g.style.display="none";d=g.nextSibling;b.removeChild(g)}if(c.refreshCounter){c.clearViewEl()}else{c.fixedNodes=h.dom.childNodes.length;c.refreshCounter=1}c.tpl.append(h,c.collectData(a,0));if(a.length<1){if(!c.deferEmptyText||c.hasSkippedEmptyText){Ext.core.DomHelper.insertHtml("beforeEnd",h.dom,c.emptyText)}c.all.clear()}else{c.all.fill(Ext.query(c.getItemSelector(),h.dom));c.updateIndexes(0)}c.selModel.refresh();c.hasSkippedEmptyText=true;if(!c.preserveScrollOnRefresh){b.insertBefore(g,d);g.style.display=e}this.refreshSize();c.fireEvent("refresh",c);if(!c.viewReady){c.viewReady=true;c.fireEvent("viewready",c)}}},refreshSize:function(){var a=this.getSizeModel();if(a.height.shrinkWrap||a.width.shrinkWrap){this.updateLayout()}},clearViewEl:function(){var b=this,a=b.getTargetEl();if(b.fixedNodes){while(a.dom.childNodes[b.fixedNodes]){a.dom.removeChild(a.dom.childNodes[b.fixedNodes])}}else{a.update("")}b.refreshCounter++},onViewScroll:Ext.emptyFn,saveScrollState:function(){if(this.rendered){var b=this.el.dom,a=this.scrollState;a.left=b.scrollLeft;a.top=b.scrollTop}},restoreScrollState:function(){if(this.rendered){var b=this.el.dom,a=this.scrollState;b.scrollLeft=a.left;b.scrollTop=a.top}},prepareData:function(e,d,c){var b,a;if(c){b=c.getAssociatedData();for(a in b){if(b.hasOwnProperty(a)){e[a]=b[a]}}}return e},collectData:function(c,g){var e=[],d=0,a=c.length,b;for(;d<a;d++){b=c[d];e[d]=this.prepareData(b.data,g+d,b)}return e},bufferRender:function(a,b){var c=this,d=c.renderBuffer||(c.renderBuffer=document.createElement("div"));c.tpl.overwrite(d,c.collectData(a,b));return Ext.query(c.getItemSelector(),d)},onUpdate:function(e,a){var d=this,b,c;if(d.viewReady){b=d.store.indexOf(a);if(b>-1){c=d.bufferRender([a],b)[0];if(d.getNode(a)){d.all.replaceElement(b,c,true);d.updateIndexes(b,b);d.selModel.refresh();if(d.hasListeners.itemupdate){d.fireEvent("itemupdate",a,b,c)}return c}}}},onAdd:function(e,b,c){var d=this,a;if(d.rendered){if(d.all.getCount()===0){d.refresh();return}a=d.bufferRender(b,c);d.doAdd(a,b,c);d.selModel.refresh();d.updateIndexes(c);d.refreshSize();if(d.hasListeners.itemadd){d.fireEvent("itemadd",b,c,a)}}},doAdd:function(b,a,c){var d=this.all,e=d.getCount();if(e===0){this.clearViewEl();this.getTargetEl().appendChild(b)}else{if(c<e){if(c===0){d.item(c).insertSibling(b,"before",true)}else{d.item(c-1).insertSibling(b,"after",true)}}else{d.last().insertSibling(b,"after",true)}}Ext.Array.insert(d.elements,c,b)},onRemove:function(d,a,b){var c=this;if(c.all.getCount()){if(c.store.getCount()===0){c.refresh()}else{c.doRemove(a,b);if(c.selModel.refreshOnRemove){c.selModel.refresh()}c.updateIndexes(b)}this.refreshSize();if(c.hasListeners.itemremove){c.fireEvent("itemremove",a,b)}}},doRemove:function(a,b){this.all.removeElement(b,true)},refreshNode:function(a){this.onUpdate(this.store,this.store.getAt(a))},updateIndexes:function(e,d){var c=this.all.elements,a=this.store.getRange(),b;e=e||0;d=d||((d===0)?0:(c.length-1));for(b=e;b<=d;b++){c[b].viewIndex=b;c[b].viewRecordId=a[b].internalId;if(!c[b].boundView){c[b].boundView=this.id}}},getStore:function(){return this.store},bindStore:function(a,b){var c=this;c.mixins.bindable.bindStore.apply(c,arguments);if(!b){c.getSelectionModel().bindStore(c.store)}if(c.componentLayoutCounter){c.doFirstRefresh(a)}},doFirstRefresh:function(a){var b=this;b.firstRefreshDone=true;if(a&&!a.loading){if(b.deferInitialRefresh){b.applyFirstRefresh()}else{b.refresh()}}},applyFirstRefresh:function(){var a=this;if(a.isDestroyed){return}if(a.up("[isCollapsingOrExpanding]")){Ext.Function.defer(a.applyFirstRefresh,100,a)}else{Ext.Function.defer(function(){if(!a.isDestroyed){a.refresh()}},1)}},onUnbindStore:function(a){this.setMaskBind(null)},onBindStore:function(a){this.setMaskBind(a)},setMaskBind:function(b){var a=this.loadMask;if(a&&a.bindStore){a.bindStore(b)}},getStoreListeners:function(){var a=this;return{refresh:a.onDataRefresh,add:a.onAdd,remove:a.onRemove,update:a.onUpdate,clear:a.refresh}},onDataRefresh:function(){var a=this,b=!a.firstRefreshDone&&(!a.rendered||a.up("[collapsed],[isCollapsingOrExpanding],[hidden]"));if(b){a.deferInitialRefresh=false}else{if(a.blockRefresh!==true){a.firstRefreshDone=true;a.refresh.apply(a,arguments)}}},findItemByChild:function(a){return Ext.fly(a).findParent(this.getItemSelector(),this.getTargetEl())},findTargetByEvent:function(a){return a.getTarget(this.getItemSelector(),this.getTargetEl())},getSelectedNodes:function(){var b=[],a=this.selModel.getSelection(),d=a.length,c=0;for(;c<d;c++){b.push(this.getNode(a[c]))}return b},getRecords:function(c){var b=[],d=0,a=c.length,e=this.store.data;for(;d<a;d++){b[b.length]=e.getByKey(c[d].viewRecordId)}return b},getRecord:function(a){return this.store.data.getByKey(Ext.getDom(a).viewRecordId)},isSelected:function(b){var a=this.getRecord(b);return this.selModel.isSelected(a)},select:function(b,c,a){this.selModel.select(b,c,a)},deselect:function(b,a){this.selModel.deselect(b,a)},getNode:function(a){if((!a&&a!==0)||!this.rendered){return null}if(Ext.isString(a)){return document.getElementById(a)}if(Ext.isNumber(a)){return this.all.elements[a]}if(a.isModel){return this.getNodeByRecord(a)}return a},getNodeByRecord:function(a){var c=this.all.elements,d=c.length,b=0;for(;b<d;b++){if(c[b].viewRecordId===a.internalId){return c[b]}}return null},getNodes:function(c,a){var b=this.all.elements;if(a===undefined){a=b.length}else{a++}return this.all.elements.slice(c||0,a)},indexOf:function(a){a=this.getNode(a);if(!a&&a!==0){return -1}if(Ext.isNumber(a.viewIndex)){return a.viewIndex}return this.all.indexOf(a)},onDestroy:function(){var a=this;a.all.clear();a.callParent();a.bindStore(null);a.selModel.destroy()},onItemSelect:function(a){var b=this.getNode(a);if(b){Ext.fly(b).addCls(this.selectedItemCls)}},onItemDeselect:function(a){var b=this.getNode(a);if(b){Ext.fly(b).removeCls(this.selectedItemCls)}},getItemSelector:function(){return this.itemSelector}},function(){Ext.deprecate("extjs","4.0",function(){Ext.view.AbstractView.override({getSelectionCount:function(){if(Ext.global.console){Ext.global.console.warn("DataView: getSelectionCount will be removed, please interact with the Ext.selection.DataViewModel")}return this.selModel.getSelection().length},getSelectedRecords:function(){if(Ext.global.console){Ext.global.console.warn("DataView: getSelectedRecords will be removed, please interact with the Ext.selection.DataViewModel")}return this.selModel.getSelection()},select:function(a,b,d){if(Ext.global.console){Ext.global.console.warn("DataView: select will be removed, please access select through a DataView's SelectionModel, ie: view.getSelectionModel().select()")}var c=this.getSelectionModel();return c.select.apply(c,arguments)},clearSelections:function(){if(Ext.global.console){Ext.global.console.warn("DataView: clearSelections will be removed, please access deselectAll through DataView's SelectionModel, ie: view.getSelectionModel().deselectAll()")}var a=this.getSelectionModel();return a.deselectAll()}})})});Ext.define("Ext.view.View",{extend:"Ext.view.AbstractView",alternateClassName:"Ext.DataView",alias:"widget.dataview",deferHighlight:(Ext.isIE6||Ext.isIE7)?100:0,inputTagRe:/^textarea$|^input$/i,inheritableStatics:{EventMap:{mousedown:"MouseDown",mouseup:"MouseUp",click:"Click",dblclick:"DblClick",contextmenu:"ContextMenu",mouseover:"MouseOver",mouseout:"MouseOut",mouseenter:"MouseEnter",mouseleave:"MouseLeave",keydown:"KeyDown",focus:"Focus"}},initComponent:function(){var a=this;a.callParent();if(a.deferHighlight){a.setHighlightedItem=Ext.Function.createBuffered(a.setHighlightedItem,a.deferHighlight,a)}},addCmpEvents:function(){this.addEvents("beforeitemmousedown","beforeitemmouseup","beforeitemmouseenter","beforeitemmouseleave","beforeitemclick","beforeitemdblclick","beforeitemcontextmenu","beforeitemkeydown","itemmousedown","itemmouseup","itemmouseenter","itemmouseleave","itemclick","itemdblclick","itemcontextmenu","itemkeydown","beforecontainermousedown","beforecontainermouseup","beforecontainermouseover","beforecontainermouseout","beforecontainerclick","beforecontainerdblclick","beforecontainercontextmenu","beforecontainerkeydown","containermouseup","containermouseover","containermouseout","containerclick","containerdblclick","containercontextmenu","containerkeydown","selectionchange","beforeselect","beforedeselect","select","deselect","focuschange","highlightitem","unhighlightitem")},getFocusEl:function(){return this.getTargetEl()},afterRender:function(){var a=this;a.callParent();a.mon(a.getTargetEl(),{scope:a,freezeEvent:true,click:a.handleEvent,mousedown:a.handleEvent,mouseup:a.handleEvent,dblclick:a.handleEvent,contextmenu:a.handleEvent,mouseover:a.handleEvent,mouseout:a.handleEvent,keydown:a.handleEvent})},handleEvent:function(c){var b=this,a=c.type=="keydown"&&c.getKey();if(b.processUIEvent(c)!==false){b.processSpecialEvent(c)}if(a===c.SPACE){if(!b.inputTagRe.test(c.getTarget().tagName)){c.stopEvent()}}},processItemEvent:Ext.emptyFn,processContainerEvent:Ext.emptyFn,processSpecialEvent:Ext.emptyFn,stillOverItem:function(b,a){var c;if(a&&typeof(a.offsetParent)==="object"){c=(b.type=="mouseout")?b.getRelatedTarget():b.getTarget();return Ext.fly(a).contains(c)}return false},processUIEvent:function(h){var i=this,k=h.getTarget(i.getItemSelector(),i.getTargetEl()),a=this.statics().EventMap,g,c,j=h.type,d=i.mouseOverItem,b;if(!k){if(j=="mouseover"&&i.stillOverItem(h,d)){k=d}if(j=="keydown"){c=i.getSelectionModel().getLastSelected();if(c){k=i.getNode(c)}}}if(k){g=i.indexOf(k);if(!c){c=i.getRecord(k)}if(!c||i.processItemEvent(c,k,g,h)===false){return false}b=i.isNewItemEvent(k,h);if(b===false){return false}if((i["onBeforeItem"+a[b]](c,k,g,h)===false)||(i.fireEvent("beforeitem"+b,i,c,k,g,h)===false)||(i["onItem"+a[b]](c,k,g,h)===false)){return false}i.fireEvent("item"+b,i,c,k,g,h)}else{if((i.processContainerEvent(h)===false)||(i["onBeforeContainer"+a[j]](h)===false)||(i.fireEvent("beforecontainer"+j,i,h)===false)||(i["onContainer"+a[j]](h)===false)){return false}i.fireEvent("container"+j,i,h)}return true},isNewItemEvent:function(d,g){var c=this,a=c.mouseOverItem,b=g.type;switch(b){case"mouseover":if(d===a){return false}c.mouseOverItem=d;return"mouseenter";case"mouseout":if(c.stillOverItem(g,a)){return false}c.mouseOverItem=null;return"mouseleave"}return b},onItemMouseEnter:function(a,c,b,d){if(this.trackOver){this.highlightItem(c)}},onItemMouseLeave:function(a,c,b,d){if(this.trackOver){this.clearHighlight()}},onItemMouseDown:Ext.emptyFn,onItemMouseUp:Ext.emptyFn,onItemFocus:Ext.emptyFn,onItemClick:Ext.emptyFn,onItemDblClick:Ext.emptyFn,onItemContextMenu:Ext.emptyFn,onItemKeyDown:Ext.emptyFn,onBeforeItemMouseDown:Ext.emptyFn,onBeforeItemMouseUp:Ext.emptyFn,onBeforeItemFocus:Ext.emptyFn,onBeforeItemMouseEnter:Ext.emptyFn,onBeforeItemMouseLeave:Ext.emptyFn,onBeforeItemClick:Ext.emptyFn,onBeforeItemDblClick:Ext.emptyFn,onBeforeItemContextMenu:Ext.emptyFn,onBeforeItemKeyDown:Ext.emptyFn,onContainerMouseDown:Ext.emptyFn,onContainerMouseUp:Ext.emptyFn,onContainerMouseOver:Ext.emptyFn,onContainerMouseOut:Ext.emptyFn,onContainerClick:Ext.emptyFn,onContainerDblClick:Ext.emptyFn,onContainerContextMenu:Ext.emptyFn,onContainerKeyDown:Ext.emptyFn,onBeforeContainerMouseDown:Ext.emptyFn,onBeforeContainerMouseUp:Ext.emptyFn,onBeforeContainerMouseOver:Ext.emptyFn,onBeforeContainerMouseOut:Ext.emptyFn,onBeforeContainerClick:Ext.emptyFn,onBeforeContainerDblClick:Ext.emptyFn,onBeforeContainerContextMenu:Ext.emptyFn,onBeforeContainerKeyDown:Ext.emptyFn,setHighlightedItem:function(c){var b=this,a=b.highlightedItem;if(a!=c){if(a){Ext.fly(a).removeCls(b.overItemCls);b.fireEvent("unhighlightitem",b,a)}b.highlightedItem=c;if(c){Ext.fly(c).addCls(b.overItemCls);b.fireEvent("highlightitem",b,c)}}},highlightItem:function(a){this.setHighlightedItem(a)},clearHighlight:function(){this.setHighlightedItem(undefined)},onUpdate:function(b,a){var g=this,e,c,d;if(g.viewReady){e=g.getNode(a);c=g.callParent(arguments);d=g.highlightedItem;if(d&&d===e){delete g.highlightedItem;if(c){g.highlightItem(c)}}}},refresh:function(){this.clearHighlight();this.callParent(arguments)}});Ext.define("Ext.toolbar.TextItem",{extend:"Ext.toolbar.Item",requires:["Ext.XTemplate"],alias:"widget.tbtext",alternateClassName:"Ext.Toolbar.TextItem",text:"",renderTpl:"{text}",baseCls:Ext.baseCSSPrefix+"toolbar-text",beforeRender:function(){var a=this;a.callParent();Ext.apply(a.renderData,{text:a.text})},setText:function(b){var a=this;if(a.rendered){a.el.update(b);a.updateLayout()}else{this.text=b}}});Ext.define("Ext.form.field.Spinner",{extend:"Ext.form.field.Trigger",alias:"widget.spinnerfield",alternateClassName:"Ext.form.Spinner",requires:["Ext.util.KeyNav"],trigger1Cls:Ext.baseCSSPrefix+"form-spinner-up",trigger2Cls:Ext.baseCSSPrefix+"form-spinner-down",spinUpEnabled:true,spinDownEnabled:true,keyNavEnabled:true,mouseWheelEnabled:true,repeatTriggerClick:true,onSpinUp:Ext.emptyFn,onSpinDown:Ext.emptyFn,triggerTpl:'<td style="{triggerStyle}"><div class="'+Ext.baseCSSPrefix+"trigger-index-0 "+Ext.baseCSSPrefix+"form-trigger "+Ext.baseCSSPrefix+'form-spinner-up" role="button"></div><div class="'+Ext.baseCSSPrefix+"trigger-index-1 "+Ext.baseCSSPrefix+"form-trigger "+Ext.baseCSSPrefix+'form-spinner-down" role="button"></div></td></tr>',initComponent:function(){this.callParent();this.addEvents("spin","spinup","spindown")},onRender:function(){var b=this,a;b.callParent(arguments);a=b.triggerEl;b.spinUpEl=a.item(0);b.spinDownEl=a.item(1);b.triggerCell=b.spinUpEl.parent();b.setSpinUpEnabled(b.spinUpEnabled);b.setSpinDownEnabled(b.spinDownEnabled);if(b.keyNavEnabled){b.spinnerKeyNav=new Ext.util.KeyNav(b.inputEl,{scope:b,up:b.spinUp,down:b.spinDown})}if(b.mouseWheelEnabled){b.mon(b.bodyEl,"mousewheel",b.onMouseWheel,b)}},getSubTplMarkup:function(){var a=this,b=Ext.form.field.Base.prototype.getSubTplMarkup.apply(a,arguments);return'<table id="'+a.id+'-triggerWrap" class="'+Ext.baseCSSPrefix+'form-trigger-wrap" cellpadding="0" cellspacing="0"><tbody><tr><td id="'+a.id+'-inputCell" class="'+Ext.baseCSSPrefix+'form-trigger-input-cell">'+b+"</td>"+a.getTriggerMarkup()+"</tbody></table>"},getTriggerMarkup:function(){var a=this,b=(a.readOnly||a.hideTrigger);return a.getTpl("triggerTpl").apply({triggerStyle:"width:"+a.triggerWidth+(b?"px;display:none":"px")})},getTriggerWidth:function(){var b=this,a=0;if(b.triggerWrap&&!b.hideTrigger&&!b.readOnly){a=b.triggerWidth}return a},onTrigger1Click:function(){this.spinUp()},onTrigger2Click:function(){this.spinDown()},onTriggerWrapMouseup:function(){this.inputEl.focus()},spinUp:function(){var a=this;if(a.spinUpEnabled&&!a.disabled){a.fireEvent("spin",a,"up");a.fireEvent("spinup",a);a.onSpinUp()}},spinDown:function(){var a=this;if(a.spinDownEnabled&&!a.disabled){a.fireEvent("spin",a,"down");a.fireEvent("spindown",a);a.onSpinDown()}},setSpinUpEnabled:function(a){var b=this,c=b.spinUpEnabled;b.spinUpEnabled=a;if(c!==a&&b.rendered){b.spinUpEl[a?"removeCls":"addCls"](b.trigger1Cls+"-disabled")}},setSpinDownEnabled:function(a){var b=this,c=b.spinDownEnabled;b.spinDownEnabled=a;if(c!==a&&b.rendered){b.spinDownEl[a?"removeCls":"addCls"](b.trigger2Cls+"-disabled")}},onMouseWheel:function(b){var a=this,c;if(a.hasFocus){c=b.getWheelDelta();if(c>0){a.spinUp()}else{if(c<0){a.spinDown()}}b.stopEvent()}},onDestroy:function(){Ext.destroyMembers(this,"spinnerKeyNav","spinUpEl","spinDownEl");this.callParent()}});Ext.define("Ext.form.field.Number",{extend:"Ext.form.field.Spinner",alias:"widget.numberfield",alternateClassName:["Ext.form.NumberField","Ext.form.Number"],allowDecimals:true,decimalSeparator:".",submitLocaleSeparator:true,decimalPrecision:2,minValue:Number.NEGATIVE_INFINITY,maxValue:Number.MAX_VALUE,step:1,minText:"The minimum value for this field is {0}",maxText:"The maximum value for this field is {0}",nanText:"{0} is not a valid number",negativeText:"The value cannot be negative",baseChars:"0123456789",autoStripChars:false,initComponent:function(){var a=this,b;a.callParent();a.setMinValue(a.minValue);a.setMaxValue(a.maxValue);if(a.disableKeyFilter!==true){b=a.baseChars+"";if(a.allowDecimals){b+=a.decimalSeparator}if(a.minValue<0){b+="-"}b=Ext.String.escapeRegex(b);a.maskRe=new RegExp("["+b+"]");if(a.autoStripChars){a.stripCharsRe=new RegExp("[^"+b+"]","gi")}}},getErrors:function(c){var b=this,e=b.callParent(arguments),d=Ext.String.format,a;c=Ext.isDefined(c)?c:this.processRawValue(this.getRawValue());if(c.length<1){return e}c=String(c).replace(b.decimalSeparator,".");if(isNaN(c)){e.push(d(b.nanText,c))}a=b.parseValue(c);if(b.minValue===0&&a<0){e.push(this.negativeText)}else{if(a<b.minValue){e.push(d(b.minText,b.minValue))}}if(a>b.maxValue){e.push(d(b.maxText,b.maxValue))}return e},rawToValue:function(b){var a=this.fixPrecision(this.parseValue(b));if(a===null){a=b||null}return a},valueToRaw:function(c){var b=this,a=b.decimalSeparator;c=b.parseValue(c);c=b.fixPrecision(c);c=Ext.isNumber(c)?c:parseFloat(String(c).replace(a,"."));c=isNaN(c)?"":String(c).replace(".",a);return c},getSubmitValue:function(){var a=this,b=a.callParent();if(!a.submitLocaleSeparator){b=b.replace(a.decimalSeparator,".")}return b},onChange:function(){this.toggleSpinners();this.callParent(arguments)},toggleSpinners:function(){var b=this,c=b.getValue(),a=c===null;b.setSpinUpEnabled(a||c<b.maxValue);b.setSpinDownEnabled(a||c>b.minValue)},setMinValue:function(a){this.minValue=Ext.Number.from(a,Number.NEGATIVE_INFINITY);this.toggleSpinners()},setMaxValue:function(a){this.maxValue=Ext.Number.from(a,Number.MAX_VALUE);this.toggleSpinners()},parseValue:function(a){a=parseFloat(String(a).replace(this.decimalSeparator,"."));return isNaN(a)?null:a},fixPrecision:function(d){var c=this,b=isNaN(d),a=c.decimalPrecision;if(b||!d){return b?"":d}else{if(!c.allowDecimals||a<=0){a=0}}return parseFloat(Ext.Number.toFixed(parseFloat(d),a))},beforeBlur:function(){var b=this,a=b.parseValue(b.getRawValue());if(!Ext.isEmpty(a)){b.setValue(a)}},onSpinUp:function(){var a=this;if(!a.readOnly){a.setValue(Ext.Number.constrain(a.getValue()+a.step,a.minValue,a.maxValue))}},onSpinDown:function(){var a=this;if(!a.readOnly){a.setValue(Ext.Number.constrain(a.getValue()-a.step,a.minValue,a.maxValue))}}});Ext.define("Ext.toolbar.Paging",{extend:"Ext.toolbar.Toolbar",alias:"widget.pagingtoolbar",alternateClassName:"Ext.PagingToolbar",requires:["Ext.toolbar.TextItem","Ext.form.field.Number"],mixins:{bindable:"Ext.util.Bindable"},displayInfo:false,prependButtons:false,displayMsg:"Displaying {0} - {1} of {2}",emptyMsg:"No data to display",beforePageText:"Page",afterPageText:"of {0}",firstText:"First Page",prevText:"Previous Page",nextText:"Next Page",lastText:"Last Page",refreshText:"Refresh",inputItemWidth:30,getPagingItems:function(){var a=this;return[{itemId:"first",tooltip:a.firstText,overflowText:a.firstText,iconCls:Ext.baseCSSPrefix+"tbar-page-first",disabled:true,handler:a.moveFirst,scope:a},{itemId:"prev",tooltip:a.prevText,overflowText:a.prevText,iconCls:Ext.baseCSSPrefix+"tbar-page-prev",disabled:true,handler:a.movePrevious,scope:a},"-",a.beforePageText,{xtype:"numberfield",itemId:"inputItem",name:"inputItem",cls:Ext.baseCSSPrefix+"tbar-page-number",allowDecimals:false,minValue:1,hideTrigger:true,enableKeyEvents:true,keyNavEnabled:false,selectOnFocus:true,submitValue:false,isFormField:false,width:a.inputItemWidth,margins:"-1 2 3 2",listeners:{scope:a,keydown:a.onPagingKeyDown,blur:a.onPagingBlur}},{xtype:"tbtext",itemId:"afterTextItem",text:Ext.String.format(a.afterPageText,1)},"-",{itemId:"next",tooltip:a.nextText,overflowText:a.nextText,iconCls:Ext.baseCSSPrefix+"tbar-page-next",disabled:true,handler:a.moveNext,scope:a},{itemId:"last",tooltip:a.lastText,overflowText:a.lastText,iconCls:Ext.baseCSSPrefix+"tbar-page-last",disabled:true,handler:a.moveLast,scope:a},"-",{itemId:"refresh",tooltip:a.refreshText,overflowText:a.refreshText,iconCls:Ext.baseCSSPrefix+"tbar-loading",handler:a.doRefresh,scope:a}]},initComponent:function(){var b=this,c=b.getPagingItems(),a=b.items||b.buttons||[];if(b.prependButtons){b.items=a.concat(c)}else{b.items=c.concat(a)}delete b.buttons;if(b.displayInfo){b.items.push("->");b.items.push({xtype:"tbtext",itemId:"displayItem"})}b.callParent();b.addEvents("change","beforechange");b.on("beforerender",b.onLoad,b,{single:true});b.bindStore(b.store||"ext-empty-store",true)},updateInfo:function(){var e=this,c=e.child("#displayItem"),a=e.store,b=e.getPageData(),d,g;if(c){d=a.getCount();if(d===0){g=e.emptyMsg}else{g=Ext.String.format(e.displayMsg,b.fromRecord,b.toRecord,b.total)}c.setText(g)}},onLoad:function(){var g=this,d,b,c,a,e,h;e=g.store.getCount();h=e===0;if(!h){d=g.getPageData();b=d.currentPage;c=d.pageCount;a=Ext.String.format(g.afterPageText,isNaN(c)?1:c)}else{b=0;c=0;a=Ext.String.format(g.afterPageText,0)}Ext.suspendLayouts();g.child("#afterTextItem").setText(a);g.child("#inputItem").setDisabled(h).setValue(b);g.child("#first").setDisabled(b===1||h);g.child("#prev").setDisabled(b===1||h);g.child("#next").setDisabled(b===c||h);g.child("#last").setDisabled(b===c||h);g.child("#refresh").enable();g.updateInfo();Ext.resumeLayouts(true);if(g.rendered){g.fireEvent("change",g,d)}},getPageData:function(){var b=this.store,a=b.getTotalCount();return{total:a,currentPage:b.currentPage,pageCount:Math.ceil(a/b.pageSize),fromRecord:((b.currentPage-1)*b.pageSize)+1,toRecord:Math.min(b.currentPage*b.pageSize,a)}},onLoadError:function(){if(!this.rendered){return}this.child("#refresh").enable()},readPageFromInput:function(b){var a=this.child("#inputItem").getValue(),c=parseInt(a,10);if(!a||isNaN(c)){this.child("#inputItem").setValue(b.currentPage);return false}return c},onPagingFocus:function(){this.child("#inputItem").select()},onPagingBlur:function(b){var a=this.getPageData().currentPage;this.child("#inputItem").setValue(a)},onPagingKeyDown:function(i,h){var d=this,b=h.getKey(),c=d.getPageData(),a=h.shiftKey?10:1,g;if(b==h.RETURN){h.stopEvent();g=d.readPageFromInput(c);if(g!==false){g=Math.min(Math.max(1,g),c.pageCount);if(d.fireEvent("beforechange",d,g)!==false){d.store.loadPage(g)}}}else{if(b==h.HOME||b==h.END){h.stopEvent();g=b==h.HOME?1:c.pageCount;i.setValue(g)}else{if(b==h.UP||b==h.PAGE_UP||b==h.DOWN||b==h.PAGE_DOWN){h.stopEvent();g=d.readPageFromInput(c);if(g){if(b==h.DOWN||b==h.PAGE_DOWN){a*=-1}g+=a;if(g>=1&&g<=c.pageCount){i.setValue(g)}}}}}},beforeLoad:function(){if(this.rendered&&this.refresh){this.refresh.disable()}},moveFirst:function(){if(this.fireEvent("beforechange",this,1)!==false){this.store.loadPage(1)}},movePrevious:function(){var b=this,a=b.store.currentPage-1;if(a>0){if(b.fireEvent("beforechange",b,a)!==false){b.store.previousPage()}}},moveNext:function(){var c=this,b=c.getPageData().pageCount,a=c.store.currentPage+1;if(a<=b){if(c.fireEvent("beforechange",c,a)!==false){c.store.nextPage()}}},moveLast:function(){var b=this,a=b.getPageData().pageCount;if(b.fireEvent("beforechange",b,a)!==false){b.store.loadPage(a)}},doRefresh:function(){var a=this,b=a.store.currentPage;if(a.fireEvent("beforechange",a,b)!==false){a.store.loadPage(b)}},getStoreListeners:function(){return{beforeload:this.beforeLoad,load:this.onLoad,exception:this.onLoadError}},unbind:function(a){this.bindStore(null)},bind:function(a){this.bindStore(a)},onDestroy:function(){this.unbind();this.callParent()}});Ext.define("Ext.view.BoundList",{extend:"Ext.view.View",alias:"widget.boundlist",alternateClassName:"Ext.BoundList",requires:["Ext.layout.component.BoundList","Ext.toolbar.Paging"],pageSize:0,baseCls:Ext.baseCSSPrefix+"boundlist",itemCls:Ext.baseCSSPrefix+"boundlist-item",listItemCls:"",shadow:false,trackOver:true,refreshed:0,deferInitialRefresh:false,componentLayout:"boundlist",childEls:["listEl"],renderTpl:['<div id="{id}-listEl" class="{baseCls}-list-ct" style="overflow:auto"></div>',"{%","var me=values.$comp, pagingToolbar=me.pagingToolbar;","if (pagingToolbar) {","pagingToolbar.ownerLayout = me.componentLayout;","Ext.DomHelper.generateMarkup(pagingToolbar.getRenderTree(), out);","}","%}",{disableFormats:true}],initComponent:function(){var b=this,a=b.baseCls,c=b.itemCls;b.selectedItemCls=a+"-selected";b.overItemCls=a+"-item-over";b.itemSelector="."+c;if(b.floating){b.addCls(a+"-floating")}if(!b.tpl){b.tpl=new Ext.XTemplate('<ul><tpl for=".">','<li role="option" class="'+c+'">'+b.getInnerTpl(b.displayField)+"</li>","</tpl></ul>")}else{if(Ext.isString(b.tpl)){b.tpl=new Ext.XTemplate(b.tpl)}}if(b.pageSize){b.pagingToolbar=b.createPagingToolbar()}b.callParent()},beforeRender:function(){var a=this;a.callParent(arguments);if(a.up("menu")){a.addCls(Ext.baseCSSPrefix+"menu")}},getBubbleTarget:function(){return this.pickerField},getRefItems:function(){return this.pagingToolbar?[this.pagingToolbar]:[]},createPagingToolbar:function(){return Ext.widget("pagingtoolbar",{id:this.id+"-paging-toolbar",pageSize:this.pageSize,store:this.store,border:false,ownerCt:this,ownerLayout:this.getComponentLayout()})},finishRenderChildren:function(){var a=this.pagingToolbar;this.callParent(arguments);if(a){a.finishRender()}},refresh:function(){var b=this,a=b.pagingToolbar;b.callParent();if(b.rendered&&a&&a.rendered&&!b.preserveScrollOnRefresh){b.el.appendChild(a.el)}},bindStore:function(a,b){var c=this.pagingToolbar;this.callParent(arguments);if(c){c.bindStore(this.store,b)}},getTargetEl:function(){return this.listEl||this.el},getInnerTpl:function(a){return"{"+a+"}"},onDestroy:function(){Ext.destroyMembers(this,"pagingToolbar","listEl");this.callParent()}});Ext.define("Ext.view.BoundListKeyNav",{extend:"Ext.util.KeyNav",requires:"Ext.view.BoundList",constructor:function(b,a){var c=this;c.boundList=a.boundList;c.callParent([b,Ext.apply({},a,c.defaultHandlers)])},defaultHandlers:{up:function(){var e=this,b=e.boundList,d=b.all,g=b.highlightedItem,c=g?b.indexOf(g):-1,a=c>0?c-1:d.getCount()-1;e.highlightAt(a)},down:function(){var e=this,b=e.boundList,d=b.all,g=b.highlightedItem,c=g?b.indexOf(g):-1,a=c<d.getCount()-1?c+1:0;e.highlightAt(a)},pageup:function(){},pagedown:function(){},home:function(){this.highlightAt(0)},end:function(){var a=this;a.highlightAt(a.boundList.all.getCount()-1)},enter:function(a){this.selectHighlighted(a)}},highlightAt:function(b){var a=this.boundList,c=a.all.item(b);if(c){c=c.dom;a.highlightItem(c);a.getTargetEl().scrollChildIntoView(c,false)}},selectHighlighted:function(g){var d=this,b=d.boundList,c=b.highlightedItem,a=b.getSelectionModel();if(c){a.selectWithEvent(b.getRecord(c),g)}}});Ext.define("Ext.form.field.ComboBox",{extend:"Ext.form.field.Picker",requires:["Ext.util.DelayedTask","Ext.EventObject","Ext.view.BoundList","Ext.view.BoundListKeyNav","Ext.data.StoreManager","Ext.layout.component.field.ComboBox"],alternateClassName:"Ext.form.ComboBox",alias:["widget.combobox","widget.combo"],mixins:{bindable:"Ext.util.Bindable"},componentLayout:"combobox",triggerCls:Ext.baseCSSPrefix+"form-arrow-trigger",hiddenName:"",hiddenDataCls:Ext.baseCSSPrefix+"hide-display "+Ext.baseCSSPrefix+"form-data-hidden",fieldSubTpl:['<div class="{hiddenDataCls}" role="presentation"></div>','<input id="{id}" type="{type}" {inputAttrTpl} class="{fieldCls} {typeCls}" autocomplete="off"','<tpl if="value"> value="{[Ext.util.Format.htmlEncode(values.value)]}"</tpl>','<tpl if="name"> name="{name}"</tpl>','<tpl if="placeholder"> placeholder="{placeholder}"</tpl>','<tpl if="size"> size="{size}"</tpl>','<tpl if="maxLength !== undefined"> maxlength="{maxLength}"</tpl>','<tpl if="readOnly"> readonly="readonly"</tpl>','<tpl if="disabled"> disabled="disabled"</tpl>','<tpl if="tabIdx"> tabIndex="{tabIdx}"</tpl>','<tpl if="fieldStyle"> style="{fieldStyle}"</tpl>',"/>",{compiled:true,disableFormats:true}],getSubTplData:function(){var a=this;Ext.applyIf(a.subTplData,{hiddenDataCls:a.hiddenDataCls});return a.callParent(arguments)},afterRender:function(){var a=this;a.callParent(arguments);a.setHiddenValue(a.value)},multiSelect:false,delimiter:", ",displayField:"text",triggerAction:"all",allQuery:"",queryParam:"query",queryMode:"remote",queryCaching:true,pageSize:0,autoSelect:true,typeAhead:false,typeAheadDelay:250,selectOnTab:true,forceSelection:false,growToLongestValue:true,defaultListConfig:{loadingHeight:70,minWidth:70,maxHeight:300,shadow:"sides"},ignoreSelection:0,removingRecords:null,resizeComboToGrow:function(){var a=this;return a.grow&&a.growToLongestValue},initComponent:function(){var e=this,c=Ext.isDefined,b=e.store,d=e.transform,a,g;Ext.applyIf(e.renderSelectors,{hiddenDataEl:"."+e.hiddenDataCls.split(" ").join(".")});this.addEvents("beforequery","select","beforeselect","beforedeselect");if(d){a=Ext.getDom(d);if(a){if(!e.store){b=Ext.Array.map(Ext.Array.from(a.options),function(h){return[h.value,h.text]})}if(!e.name){e.name=a.name}if(!("value" in e)){e.value=a.value}}}e.bindStore(b||"ext-empty-store",true);b=e.store;if(b.autoCreated){e.queryMode="local";e.valueField=e.displayField="field1";if(!b.expanded){e.displayField="field2"}}if(!c(e.valueField)){e.valueField=e.displayField}g=e.queryMode==="local";if(!c(e.queryDelay)){e.queryDelay=g?10:500}if(!c(e.minChars)){e.minChars=g?0:4}if(!e.displayTpl){e.displayTpl=new Ext.XTemplate('<tpl for=".">{[typeof values === "string" ? values : values["'+e.displayField+'"]]}<tpl if="xindex < xcount">'+e.delimiter+"</tpl></tpl>")}else{if(Ext.isString(e.displayTpl)){e.displayTpl=new Ext.XTemplate(e.displayTpl)}}e.callParent();e.doQueryTask=new Ext.util.DelayedTask(e.doRawQuery,e);if(e.store.getCount()>0){e.setValue(e.value)}if(a){e.render(a.parentNode,a);Ext.removeNode(a);delete e.renderTo}},getStore:function(){return this.store},beforeBlur:function(){this.doQueryTask.cancel();this.assertValue()},assertValue:function(){var a=this,b=a.getRawValue(),c;if(a.forceSelection){if(a.multiSelect){if(b!==a.getDisplayValue()){a.setValue(a.lastSelection)}}else{c=a.findRecordByDisplay(b);if(c){a.select(c)}else{a.setValue(a.lastSelection)}}}a.collapse()},onTypeAhead:function(){var e=this,d=e.displayField,b=e.store.findRecord(d,e.getRawValue()),c=e.getPicker(),g,a,h;if(b){g=b.get(d);a=g.length;h=e.getRawValue().length;c.highlightItem(c.getNode(b));if(h!==0&&h!==a){e.setRawValue(g);e.selectText(h,g.length)}}},resetToDefault:Ext.emptyFn,beforeReset:function(){this.callParent();this.clearFilter()},onUnbindStore:function(a){var b=this.picker;if(!a&&b){b.bindStore(null)}this.clearFilter()},onBindStore:function(a,c){var b=this.picker;if(!c){this.resetToDefault()}if(b){b.bindStore(a)}},getStoreListeners:function(){var a=this;return{beforeload:a.onBeforeLoad,clear:a.onClear,datachanged:a.onDataChanged,load:a.onLoad,exception:a.onException,remove:a.onRemove}},onBeforeLoad:function(){++this.ignoreSelection},onDataChanged:function(){var a=this;if(a.resizeComboToGrow()){a.updateLayout()}},onClear:function(){var a=this;if(a.resizeComboToGrow()){a.removingRecords=true;a.onDataChanged()}},onRemove:function(){var a=this;if(a.resizeComboToGrow()){a.removingRecords=true}},onException:function(){if(this.ignoreSelection>0){--this.ignoreSelection}this.collapse()},onLoad:function(){var a=this,b=a.value;if(a.ignoreSelection>0){--a.ignoreSelection}if(a.rawQuery){a.rawQuery=false;a.syncSelection();if(a.picker&&!a.picker.getSelectionModel().hasSelection()){a.doAutoSelect()}}else{if(a.value||a.value===0){a.setValue(a.value)}else{if(a.store.getCount()){a.doAutoSelect()}else{a.setValue(a.value)}}}},doRawQuery:function(){this.doQuery(this.getRawValue(),false,true)},doQuery:function(i,d,g){i=i||"";var e=this,b={query:i,forceAll:d,combo:e,cancel:false},a=e.store,h=e.queryMode==="local",c;if(e.fireEvent("beforequery",b)===false||b.cancel){return false}i=b.query;d=b.forceAll;if(d||(i.length>=e.minChars)){e.expand();if(!e.queryCaching||e.lastQuery!==i){e.lastQuery=i;if(h){a.suspendEvents();c=e.clearFilter();if(i||!d){e.activeFilter=new Ext.util.Filter({root:"data",property:e.displayField,value:i});a.filter(e.activeFilter);c=true}else{delete e.activeFilter}a.resumeEvents();if(e.rendered&&c){e.getPicker().refresh()}}else{e.rawQuery=g;if(e.pageSize){e.loadPage(1)}else{a.load({params:e.getParams(i)})}}}if(e.getRawValue()!==e.getDisplayValue()){e.ignoreSelection++;e.picker.getSelectionModel().deselectAll();e.ignoreSelection--}if(h){e.doAutoSelect()}if(e.typeAhead){e.doTypeAhead()}}return true},clearFilter:function(){var a=this.store,c=this.activeFilter,d=a.filters,b;if(c){if(d.getCount()>1){d.remove(c);b=d.getRange()}a.clearFilter(true);if(b){a.filter(b)}}return !!c},loadPage:function(a){this.store.loadPage(a,{params:this.getParams(this.lastQuery)})},onPageChange:function(b,a){this.loadPage(a);return false},getParams:function(c){var b={},a=this.queryParam;if(a){b[a]=c}return b},doAutoSelect:function(){var b=this,a=b.picker,c,d;if(a&&b.autoSelect&&b.store.getCount()>0){c=a.getSelectionModel().lastSelected;d=a.getNode(c||0);if(d){a.highlightItem(d);a.listEl.scrollChildIntoView(d,false)}}},doTypeAhead:function(){if(!this.typeAheadTask){this.typeAheadTask=new Ext.util.DelayedTask(this.onTypeAhead,this)}if(this.lastKey!=Ext.EventObject.BACKSPACE&&this.lastKey!=Ext.EventObject.DELETE){this.typeAheadTask.delay(this.typeAheadDelay)}},onTriggerClick:function(){var a=this;if(!a.readOnly&&!a.disabled){if(a.isExpanded){a.collapse()}else{a.onFocus({});if(a.triggerAction==="all"){a.doQuery(a.allQuery,true)}else{a.doQuery(a.getRawValue(),false,true)}}a.inputEl.focus()}},onKeyUp:function(d,b){var c=this,a=d.getKey();if(!c.readOnly&&!c.disabled&&c.editable){c.lastKey=a;if(!d.isSpecialKey()||a==d.BACKSPACE||a==d.DELETE){c.doQueryTask.delay(c.queryDelay)}}if(c.enableKeyEvents){c.callParent(arguments)}},initEvents:function(){var a=this;a.callParent();if(!a.enableKeyEvents){a.mon(a.inputEl,"keyup",a.onKeyUp,a)}},onDestroy:function(){this.bindStore(null);this.callParent()},onAdded:function(){var a=this;a.callParent(arguments);if(a.picker){a.picker.ownerCt=a.up("[floating]");a.picker.registerWithOwnerCt()}},createPicker:function(){var c=this,b,a=Ext.apply({xtype:"boundlist",pickerField:c,selModel:{mode:c.multiSelect?"SIMPLE":"SINGLE"},floating:true,hidden:true,store:c.store,displayField:c.displayField,focusOnToFront:false,pageSize:c.pageSize,tpl:c.tpl},c.listConfig,c.defaultListConfig);b=c.picker=Ext.widget(a);if(c.pageSize){b.pagingToolbar.on("beforechange",c.onPageChange,c)}c.mon(b,{itemclick:c.onItemClick,refresh:c.onListRefresh,scope:c});c.mon(b.getSelectionModel(),{beforeselect:c.onBeforeSelect,beforedeselect:c.onBeforeDeselect,selectionchange:c.onListSelectionChange,scope:c});return b},alignPicker:function(){var b=this,a=b.getPicker(),e=b.getPosition()[1]-Ext.getBody().getScroll().top,d=Ext.Element.getViewHeight()-e-b.getHeight(),c=Math.max(e,d);if(a.height){delete a.height;a.updateLayout()}if(a.getHeight()>c-5){a.setHeight(c-5)}b.callParent()},onListRefresh:function(){this.alignPicker();this.syncSelection()},onItemClick:function(c,a){var e=this,d=e.picker.getSelectionModel().getSelection(),b=e.valueField;if(!e.multiSelect&&d.length){if(a.get(b)===d[0].get(b)){e.displayTplData=[a.data];e.setRawValue(e.getDisplayValue());e.collapse()}}},onBeforeSelect:function(b,a){return this.fireEvent("beforeselect",this,a,a.index)},onBeforeDeselect:function(b,a){return this.fireEvent("beforedeselect",this,a,a.index)},onListSelectionChange:function(b,d){var a=this,e=a.multiSelect,c=d.length>0;if(!a.ignoreSelection&&a.isExpanded){if(!e){Ext.defer(a.collapse,1,a)}if(e||c){a.setValue(d,false)}if(c){a.fireEvent("select",a,d)}a.inputEl.focus()}},onExpand:function(){var d=this,a=d.listKeyNav,c=d.selectOnTab,b=d.getPicker();if(a){a.enable()}else{a=d.listKeyNav=new Ext.view.BoundListKeyNav(this.inputEl,{boundList:b,forceKeyDown:true,tab:function(g){if(c){this.selectHighlighted(g);d.triggerBlur()}return true}})}if(c){d.ignoreMonitorTab=true}Ext.defer(a.enable,1,a);d.inputEl.focus()},onCollapse:function(){var b=this,a=b.listKeyNav;if(a){a.disable();b.ignoreMonitorTab=false}},select:function(a){this.setValue(a,true)},findRecord:function(d,c){var b=this.store,a=b.findExact(d,c);return a!==-1?b.getAt(a):false},findRecordByValue:function(a){return this.findRecord(this.valueField,a)},findRecordByDisplay:function(a){return this.findRecord(this.displayField,a)},setValue:function(m,e){var k=this,c=k.valueNotFoundText,n=k.inputEl,g,j,h,a,l=[],b=[],d=[];if(k.store.loading){k.value=m;k.setHiddenValue(k.value);return k}m=Ext.Array.from(m);for(g=0,j=m.length;g<j;g++){h=m[g];if(!h||!h.isModel){h=k.findRecordByValue(h)}if(h){l.push(h);b.push(h.data);d.push(h.get(k.valueField))}else{if(!k.forceSelection){d.push(m[g]);a={};a[k.displayField]=m[g];b.push(a)}else{if(Ext.isDefined(c)){b.push(c)}}}}k.setHiddenValue(d);k.value=k.multiSelect?d:d[0];if(!Ext.isDefined(k.value)){k.value=null}k.displayTplData=b;k.lastSelection=k.valueModels=l;if(n&&k.emptyText&&!Ext.isEmpty(m)){n.removeCls(k.emptyCls)}k.setRawValue(k.getDisplayValue());k.checkChange();if(e!==false){k.syncSelection()}k.applyEmptyText();return k},setHiddenValue:function(j){var e=this,a=e.hiddenName,d,b,k,h,g,c;if(!e.hiddenDataEl||!a){return}j=Ext.Array.from(j);b=e.hiddenDataEl.dom;k=b.childNodes;h=k[0];g=j.length;c=k.length;if(!h&&g>0){e.hiddenDataEl.update(Ext.DomHelper.markup({tag:"input",type:"hidden",name:a}));c=1;h=b.firstChild}while(c>g){b.removeChild(k[0]);--c}while(c<g){b.appendChild(h.cloneNode(true));++c}for(d=0;d<g;d++){k[d].value=j[d]}},getDisplayValue:function(){return this.displayTpl.apply(this.displayTplData)},getValue:function(){var b=this,a=b.picker,d=b.getRawValue(),c=b.value;if(b.getDisplayValue()!==d){c=d;b.value=b.displayTplData=b.valueModels=null;if(a){b.ignoreSelection++;a.getSelectionModel().deselectAll();b.ignoreSelection--}}return c},getSubmitValue:function(){return this.getValue()},isEqual:function(e,d){var b=Ext.Array.from,c,a;e=b(e);d=b(d);a=e.length;if(a!==d.length){return false}for(c=0;c<a;c++){if(d[c]!==e[c]){return false}}return true},clearValue:function(){this.setValue([])},syncSelection:function(){var h=this,d=h.picker,g,c,b=h.valueModels||[],e=b.length,a,i;if(d){g=[];for(a=0;a<e;a++){i=b[a];if(i&&i.isModel&&h.store.indexOf(i)>=0){g.push(i)}}h.ignoreSelection++;c=d.getSelectionModel();c.deselectAll();if(g.length){c.select(g)}h.ignoreSelection--}},onEditorTab:function(b){var a=this.listKeyNav;if(this.selectOnTab&&a){a.selectHighlighted(b)}}});Ext.define("Ext.picker.Month",{extend:"Ext.Component",requires:["Ext.XTemplate","Ext.util.ClickRepeater","Ext.Date","Ext.button.Button"],alias:"widget.monthpicker",alternateClassName:"Ext.MonthPicker",childEls:["bodyEl","prevEl","nextEl","buttonsEl","monthEl","yearEl"],renderTpl:['<div id="{id}-bodyEl" class="{baseCls}-body">','<div id="{id}-monthEl" class="{baseCls}-months">','<tpl for="months">','<div class="{parent.baseCls}-item {parent.baseCls}-month"><a style="{parent.monthStyle}" href="#" hidefocus="on">{.}</a></div>',"</tpl>","</div>",'<div id="{id}-yearEl" class="{baseCls}-years">','<div class="{baseCls}-yearnav">','<button id="{id}-prevEl" class="{baseCls}-yearnav-prev"></button>','<button id="{id}-nextEl" class="{baseCls}-yearnav-next"></button>',"</div>",'<tpl for="years">','<div class="{parent.baseCls}-item {parent.baseCls}-year"><a href="#" hidefocus="on">{.}</a></div>',"</tpl>","</div>",'<div class="'+Ext.baseCSSPrefix+'clear"></div>',"</div>",'<tpl if="showButtons">','<div id="{id}-buttonsEl" class="{baseCls}-buttons">{%',"var me=values.$comp, okBtn=me.okBtn, cancelBtn=me.cancelBtn;","okBtn.ownerLayout = cancelBtn.ownerLayout = me.componentLayout;","okBtn.ownerCt = cancelBtn.ownerCt = me;","Ext.DomHelper.generateMarkup(okBtn.getRenderTree(), out);","Ext.DomHelper.generateMarkup(cancelBtn.getRenderTree(), out);","%}</div>","</tpl>"],okText:"OK",cancelText:"Cancel",baseCls:Ext.baseCSSPrefix+"monthpicker",showButtons:true,width:178,measureWidth:35,measureMaxHeight:20,smallCls:Ext.baseCSSPrefix+"monthpicker-small",totalYears:10,yearOffset:5,monthOffset:6,initComponent:function(){var a=this;a.selectedCls=a.baseCls+"-selected";a.addEvents("cancelclick","monthclick","monthdblclick","okclick","select","yearclick","yeardblclick");if(a.small){a.addCls(a.smallCls)}a.setValue(a.value);a.activeYear=a.getYear(new Date().getFullYear()-4,-4);if(a.showButtons){a.okBtn=new Ext.button.Button({text:a.okText,handler:a.onOkClick,scope:a});a.cancelBtn=new Ext.button.Button({text:a.cancelText,handler:a.onCancelClick,scope:a})}this.callParent()},beforeRender:function(){var g=this,c=0,b=[],a=Ext.Date.getShortMonthName,e=g.monthOffset,h=g.monthMargin,d="";g.callParent();for(;c<e;++c){b.push(a(c),a(c+e))}if(Ext.isDefined(h)){d="margin: 0 "+h+"px;"}Ext.apply(g.renderData,{months:b,years:g.getYears(),showButtons:g.showButtons,monthStyle:d})},afterRender:function(){var b=this,a=b.bodyEl,c=b.buttonsEl;b.callParent();b.mon(a,"click",b.onBodyClick,b);b.mon(a,"dblclick",b.onBodyClick,b);b.years=a.select("."+b.baseCls+"-year a");b.months=a.select("."+b.baseCls+"-month a");b.backRepeater=new Ext.util.ClickRepeater(b.prevEl,{handler:Ext.Function.bind(b.adjustYear,b,[-b.totalYears])});b.prevEl.addClsOnOver(b.baseCls+"-yearnav-prev-over");b.nextRepeater=new Ext.util.ClickRepeater(b.nextEl,{handler:Ext.Function.bind(b.adjustYear,b,[b.totalYears])});b.nextEl.addClsOnOver(b.baseCls+"-yearnav-next-over");b.updateBody();if(!Ext.isDefined(b.monthMargin)){Ext.picker.Month.prototype.monthMargin=b.calculateMonthMargin()}},calculateMonthMargin:function(){var d=this,b=d.monthEl,a=d.months,e=a.first(),c=e.getMargin("l");while(c&&d.getLargest()>d.measureMaxHeight){--c;a.setStyle("margin","0 "+c+"px")}return c},getLargest:function(a){var b=0;this.months.each(function(d){var c=d.getHeight();if(c>b){b=c}});return b},setValue:function(d){var c=this,e=c.activeYear,g=c.monthOffset,b,a;if(!d){c.value=[null,null]}else{if(Ext.isDate(d)){c.value=[d.getMonth(),d.getFullYear()]}else{c.value=[d[0],d[1]]}}if(c.rendered){b=c.value[1];if(b!==null){if((b<e||b>e+c.yearOffset)){c.activeYear=b-c.yearOffset+1}}c.updateBody()}return c},getValue:function(){return this.value},hasSelection:function(){var a=this.value;return a[0]!==null&&a[1]!==null},getYears:function(){var d=this,e=d.yearOffset,g=d.activeYear,a=g+e,c=g,b=[];for(;c<a;++c){b.push(c,c+e)}return b},updateBody:function(){var i=this,e=i.years,b=i.months,m=i.getYears(),n=i.selectedCls,k=i.getYear(null),g=i.value[0],l=i.monthOffset,h,d,j,a,c;if(i.rendered){e.removeCls(n);b.removeCls(n);d=e.elements;a=d.length;for(j=0;j<a;j++){c=Ext.fly(d[j]);h=m[j];c.dom.innerHTML=h;if(h==k){c.dom.className=n}}if(g!==null){if(g<l){g=g*2}else{g=(g-l)*2+1}b.item(g).addCls(n)}}},getYear:function(a,c){var b=this.value[1];c=c||0;return b===null?a:b+c},onBodyClick:function(d,b){var c=this,a=d.type=="dblclick";if(d.getTarget("."+c.baseCls+"-month")){d.stopEvent();c.onMonthClick(b,a)}else{if(d.getTarget("."+c.baseCls+"-year")){d.stopEvent();c.onYearClick(b,a)}}},adjustYear:function(a){if(typeof a!="number"){a=this.totalYears}this.activeYear+=a;this.updateBody()},onOkClick:function(){this.fireEvent("okclick",this,this.value)},onCancelClick:function(){this.fireEvent("cancelclick",this)},onMonthClick:function(c,a){var b=this;b.value[0]=b.resolveOffset(b.months.indexOf(c),b.monthOffset);b.updateBody();b.fireEvent("month"+(a?"dbl":"")+"click",b,b.value);b.fireEvent("select",b,b.value)},onYearClick:function(c,a){var b=this;b.value[1]=b.activeYear+b.resolveOffset(b.years.indexOf(c),b.yearOffset);b.updateBody();b.fireEvent("year"+(a?"dbl":"")+"click",b,b.value);b.fireEvent("select",b,b.value)},resolveOffset:function(a,b){if(a%2===0){return(a/2)}else{return b+Math.floor(a/2)}},beforeDestroy:function(){var a=this;a.years=a.months=null;Ext.destroyMembers(a,"backRepeater","nextRepeater","okBtn","cancelBtn");a.callParent()},finishRenderChildren:function(){var a=this;this.callParent(arguments);if(this.showButtons){a.okBtn.finishRender();a.cancelBtn.finishRender()}},onDestroy:function(){Ext.destroyMembers(this,"okBtn","cancelBtn");this.callParent()}});Ext.define("Ext.picker.Date",{extend:"Ext.Component",requires:["Ext.XTemplate","Ext.button.Button","Ext.button.Split","Ext.util.ClickRepeater","Ext.util.KeyNav","Ext.EventObject","Ext.fx.Manager","Ext.picker.Month"],alias:"widget.datepicker",alternateClassName:"Ext.DatePicker",childEls:["innerEl","eventEl","prevEl","nextEl","middleBtnEl","footerEl"],border:true,renderTpl:['<div id="{id}-innerEl" role="grid">','<div role="presentation" class="{baseCls}-header">','<div class="{baseCls}-prev"><a id="{id}-prevEl" href="#" role="button" title="{prevText}"></a></div>','<div class="{baseCls}-month" id="{id}-middleBtnEl">{%this.renderMonthBtn(values, out)%}</div>','<div class="{baseCls}-next"><a id="{id}-nextEl" href="#" role="button" title="{nextText}"></a></div>',"</div>",'<table id="{id}-eventEl" class="{baseCls}-inner" cellspacing="0" role="presentation">','<thead role="presentation"><tr role="presentation">','<tpl for="dayNames">','<th role="columnheader" title="{.}"><span>{.:this.firstInitial}</span></th>',"</tpl>","</tr></thead>",'<tbody role="presentation"><tr role="presentation">','<tpl for="days">',"{#:this.isEndOfWeek}",'<td role="gridcell" id="{[Ext.id()]}">','<a role="presentation" href="#" hidefocus="on" class="{parent.baseCls}-date" tabIndex="1">','<em role="presentation"><span role="presentation"></span></em>',"</a>","</td>","</tpl>","</tr></tbody>","</table>",'<tpl if="showToday">','<div id="{id}-footerEl" role="presentation" class="{baseCls}-footer">{%this.renderTodayBtn(values, out)%}</div>',"</tpl>","</div>",{firstInitial:function(a){return Ext.picker.Date.prototype.getDayInitial(a)},isEndOfWeek:function(b){b--;var a=b%7===0&&b!==0;return a?'</tr><tr role="row">':""},renderTodayBtn:function(a,b){Ext.DomHelper.generateMarkup(a.$comp.todayBtn.getRenderTree(),b)},renderMonthBtn:function(a,b){Ext.DomHelper.generateMarkup(a.$comp.monthBtn.getRenderTree(),b)}}],todayText:"Today",ariaTitle:"Date Picker: {0}",ariaTitleDateFormat:"F d, Y",todayTip:"{0} (Spacebar)",minText:"This date is before the minimum date",maxText:"This date is after the maximum date",disabledDaysText:"Disabled",disabledDatesText:"Disabled",nextText:"Next Month (Control+Right)",prevText:"Previous Month (Control+Left)",monthYearText:"Choose a month (Control+Up/Down to move years)",monthYearFormat:"F Y",startDay:0,showToday:true,disableAnim:false,baseCls:Ext.baseCSSPrefix+"datepicker",longDayFormat:"F d, Y",focusOnShow:false,focusOnSelect:true,width:178,initHour:12,numDays:42,initComponent:function(){var b=this,a=Ext.Date.clearTime;b.selectedCls=b.baseCls+"-selected";b.disabledCellCls=b.baseCls+"-disabled";b.prevCls=b.baseCls+"-prevday";b.activeCls=b.baseCls+"-active";b.nextCls=b.baseCls+"-prevday";b.todayCls=b.baseCls+"-today";b.dayNames=b.dayNames.slice(b.startDay).concat(b.dayNames.slice(0,b.startDay));b.listeners=Ext.apply(b.listeners||{},{mousewheel:{element:"eventEl",fn:b.handleMouseWheel,scope:b},click:{element:"eventEl",fn:b.handleDateClick,scope:b,delegate:"a."+b.baseCls+"-date"}});this.callParent();b.value=b.value?a(b.value,true):a(new Date());b.addEvents("select");b.initDisabledDays()},beforeRender:function(){var b=this,c=new Array(b.numDays),a=Ext.Date.format(new Date(),b.format);if(b.up("menu")){b.addCls(Ext.baseCSSPrefix+"menu")}b.monthBtn=new Ext.button.Split({ownerCt:b,ownerLayout:b.getComponentLayout(),text:"",tooltip:b.monthYearText,listeners:{click:b.showMonthPicker,arrowclick:b.showMonthPicker,scope:b}});if(this.showToday){b.todayBtn=new Ext.button.Button({ownerCt:b,ownerLayout:b.getComponentLayout(),text:Ext.String.format(b.todayText,a),tooltip:Ext.String.format(b.todayTip,a),tooltipType:"title",handler:b.selectToday,scope:b})}b.callParent();Ext.applyIf(b,{renderData:{}});Ext.apply(b.renderData,{dayNames:b.dayNames,showToday:b.showToday,prevText:b.prevText,nextText:b.nextText,days:c})},finishRenderChildren:function(){var a=this;a.callParent();a.monthBtn.finishRender();if(a.showToday){a.todayBtn.finishRender()}},onRender:function(b,a){var c=this;c.callParent(arguments);c.el.unselectable();c.cells=c.eventEl.select("tbody td");c.textNodes=c.eventEl.query("tbody td span")},initEvents:function(){var c=this,a=Ext.Date,b=a.DAY;c.callParent();c.prevRepeater=new Ext.util.ClickRepeater(c.prevEl,{handler:c.showPrevMonth,scope:c,preventDefault:true,stopDefault:true});c.nextRepeater=new Ext.util.ClickRepeater(c.nextEl,{handler:c.showNextMonth,scope:c,preventDefault:true,stopDefault:true});c.keyNav=new Ext.util.KeyNav(c.eventEl,Ext.apply({scope:c,left:function(d){if(d.ctrlKey){c.showPrevMonth()}else{c.update(a.add(c.activeDate,b,-1))}},right:function(d){if(d.ctrlKey){c.showNextMonth()}else{c.update(a.add(c.activeDate,b,1))}},up:function(d){if(d.ctrlKey){c.showNextYear()}else{c.update(a.add(c.activeDate,b,-7))}},down:function(d){if(d.ctrlKey){c.showPrevYear()}else{c.update(a.add(c.activeDate,b,7))}},pageUp:c.showNextMonth,pageDown:c.showPrevMonth,enter:function(d){d.stopPropagation();return true}},c.keyNavConfig));if(c.showToday){c.todayKeyListener=c.eventEl.addKeyListener(Ext.EventObject.SPACE,c.selectToday,c)}c.update(c.value)},initDisabledDays:function(){var h=this,b=h.disabledDates,g="(?:",a,i,c,e;if(!h.disabledDatesRE&&b){a=b.length-1;c=b.length;for(i=0;i<c;i++){e=b[i];g+=Ext.isDate(e)?"^"+Ext.String.escapeRegex(Ext.Date.dateFormat(e,h.format))+"$":e;if(i!=a){g+="|"}}h.disabledDatesRE=new RegExp(g+")")}},setDisabledDates:function(a){var b=this;if(Ext.isArray(a)){b.disabledDates=a;b.disabledDatesRE=null}else{b.disabledDatesRE=a}b.initDisabledDays();b.update(b.value,true);return b},setDisabledDays:function(a){this.disabledDays=a;return this.update(this.value,true)},setMinDate:function(a){this.minDate=a;return this.update(this.value,true)},setMaxDate:function(a){this.maxDate=a;return this.update(this.value,true)},setValue:function(a){this.value=Ext.Date.clearTime(a,true);return this.update(this.value)},getValue:function(){return this.value},getDayInitial:function(a){return a.substr(0,1)},focus:function(){this.update(this.activeDate)},onEnable:function(){this.callParent();this.setDisabledStatus(false);this.update(this.activeDate)},onDisable:function(){this.callParent();this.setDisabledStatus(true)},setDisabledStatus:function(a){var b=this;b.keyNav.setDisabled(a);b.prevRepeater.setDisabled(a);b.nextRepeater.setDisabled(a);if(b.showToday){b.todayKeyListener.setDisabled(a);b.todayBtn.setDisabled(a)}},getActive:function(){return this.activeDate||this.value},runAnimation:function(c){var b=this.monthPicker,a={duration:200,callback:function(){if(c){b.hide()}else{b.show()}}};if(c){b.el.slideOut("t",a)}else{b.el.slideIn("t",a)}},hideMonthPicker:function(a){var c=this,b=c.monthPicker;if(b){if(c.shouldAnimate(a)){c.runAnimation(true)}else{b.hide()}}return c},showMonthPicker:function(a){var c=this,b;if(c.rendered&&!c.disabled){b=c.createMonthPicker();b.setValue(c.getActive());b.setSize(c.getSize());b.setPosition(-1,-1);if(c.shouldAnimate(a)){c.runAnimation(false)}else{b.show()}}return c},shouldAnimate:function(a){return Ext.isDefined(a)?a:!this.disableAnim},createMonthPicker:function(){var b=this,a=b.monthPicker;if(!a){b.monthPicker=a=new Ext.picker.Month({renderTo:b.el,floating:true,shadow:false,small:b.showToday===false,listeners:{scope:b,cancelclick:b.onCancelClick,okclick:b.onOkClick,yeardblclick:b.onOkClick,monthdblclick:b.onOkClick}});if(!b.disableAnim){a.el.setStyle("display","none")}b.on("beforehide",Ext.Function.bind(b.hideMonthPicker,b,[false]))}return a},onOkClick:function(b,e){var d=this,g=e[0],c=e[1],a=new Date(c,g,d.getActive().getDate());if(a.getMonth()!==g){a=Ext.Date.getLastDateOfMonth(new Date(c,g,1))}d.update(a);d.hideMonthPicker()},onCancelClick:function(){this.selectedUpdate(this.activeDate);this.hideMonthPicker()},showPrevMonth:function(a){return this.update(Ext.Date.add(this.activeDate,Ext.Date.MONTH,-1))},showNextMonth:function(a){return this.update(Ext.Date.add(this.activeDate,Ext.Date.MONTH,1))},showPrevYear:function(){this.update(Ext.Date.add(this.activeDate,Ext.Date.YEAR,-1))},showNextYear:function(){this.update(Ext.Date.add(this.activeDate,Ext.Date.YEAR,1))},handleMouseWheel:function(a){a.stopEvent();if(!this.disabled){var b=a.getWheelDelta();if(b>0){this.showPrevMonth()}else{if(b<0){this.showNextMonth()}}}},handleDateClick:function(d,a){var c=this,b=c.handler;d.stopEvent();if(!c.disabled&&a.dateValue&&!Ext.fly(a.parentNode).hasCls(c.disabledCellCls)){c.doCancelFocus=c.focusOnSelect===false;c.setValue(new Date(a.dateValue));delete c.doCancelFocus;c.fireEvent("select",c,c.value);if(b){b.call(c.scope||c,c,c.value)}c.onSelect()}},onSelect:function(){if(this.hideOnSelect){this.hide()}},selectToday:function(){var c=this,a=c.todayBtn,b=c.handler;if(a&&!a.disabled){c.setValue(Ext.Date.clearTime(new Date()));c.fireEvent("select",c,c.value);if(b){b.call(c.scope||c,c,c.value)}c.onSelect()}return c},selectedUpdate:function(a){var d=this,i=a.getTime(),j=d.cells,k=d.selectedCls,g=j.elements,b,e=g.length,h;j.removeCls(k);for(b=0;b<e;b++){h=Ext.fly(g[b]);if(h.dom.firstChild.dateValue==i){d.fireEvent("highlightitem",d,h);h.addCls(k);if(d.isVisible()&&!d.doCancelFocus){Ext.fly(h.dom.firstChild).focus(50)}break}}},fullUpdate:function(A){var E=this,g=E.cells.elements,d=E.textNodes,G=E.disabledCellCls,n=Ext.Date,w=0,D=0,e=E.isVisible(),u=+n.clearTime(A,true),z=+n.clearTime(new Date()),t=E.minDate?n.clearTime(E.minDate,true):Number.NEGATIVE_INFINITY,v=E.maxDate?n.clearTime(E.maxDate,true):Number.POSITIVE_INFINITY,C=E.disabledDatesRE,s=E.disabledDatesText,H=E.disabledDays?E.disabledDays.join(""):false,B=E.disabledDaysText,x=E.format,l=n.getDaysInMonth(A),p=n.getFirstDateOfMonth(A),h=p.getDay()-E.startDay,y=n.add(A,n.MONTH,-1),b=E.longDayFormat,k,q,a,F,m,o,c,j,r;if(h<0){h+=7}l+=h;k=n.getDaysInMonth(y)-h;q=new Date(y.getFullYear(),y.getMonth(),k,E.initHour);if(E.showToday){F=n.clearTime(new Date());a=(F<t||F>v||(C&&x&&C.test(n.dateFormat(F,x)))||(H&&H.indexOf(F.getDay())!=-1));if(!E.disabled){E.todayBtn.setDisabled(a);E.todayKeyListener.setDisabled(a)}}m=function(i){r=+n.clearTime(q,true);i.title=n.format(q,b);i.firstChild.dateValue=r;if(r==z){i.className+=" "+E.todayCls;i.title=E.todayText}if(r==u){i.className+=" "+E.selectedCls;E.fireEvent("highlightitem",E,i);if(e&&E.floating){Ext.fly(i.firstChild).focus(50)}}if(r<t){i.className=G;i.title=E.minText;return}if(r>v){i.className=G;i.title=E.maxText;return}if(H){if(H.indexOf(q.getDay())!=-1){i.title=B;i.className=G}}if(C&&x){j=n.dateFormat(q,x);if(C.test(j)){i.title=s.replace("%0",j);i.className=G}}};for(;w<E.numDays;++w){if(w<h){o=(++k);c=E.prevCls}else{if(w>=l){o=(++D);c=E.nextCls}else{o=w-h+1;c=E.activeCls}}d[w].innerHTML=o;g[w].className=c;q.setDate(q.getDate()+1);m(g[w])}E.monthBtn.setText(Ext.Date.format(A,E.monthYearFormat))},update:function(a,d){var b=this,c=b.activeDate;if(b.rendered){b.activeDate=a;if(!d&&c&&b.el&&c.getMonth()==a.getMonth()&&c.getFullYear()==a.getFullYear()){b.selectedUpdate(a,c)}else{b.fullUpdate(a,c)}b.innerEl.dom.title=Ext.String.format(b.ariaTitle,Ext.Date.format(b.activeDate,b.ariaTitleDateFormat))}return b},beforeDestroy:function(){var a=this;if(a.rendered){Ext.destroy(a.todayKeyListener,a.keyNav,a.monthPicker,a.monthBtn,a.nextRepeater,a.prevRepeater,a.todayBtn);delete a.textNodes;delete a.cells.elements}a.callParent()},onShow:function(){this.callParent(arguments);if(this.focusOnShow){this.focus()}}},function(){var b=this.prototype,a=Ext.Date;b.monthNames=a.monthNames;b.dayNames=a.dayNames;b.format=a.defaultFormat});Ext.define("Ext.form.field.Date",{extend:"Ext.form.field.Picker",alias:"widget.datefield",requires:["Ext.picker.Date"],alternateClassName:["Ext.form.DateField","Ext.form.Date"],format:"m/d/Y",altFormats:"m/d/Y|n/j/Y|n/j/y|m/j/y|n/d/y|m/j/Y|n/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d|n-j|n/j",disabledDaysText:"Disabled",disabledDatesText:"Disabled",minText:"The date in this field must be equal to or after {0}",maxText:"The date in this field must be equal to or before {0}",invalidText:"{0} is not a valid date - it must be in the format {1}",triggerCls:Ext.baseCSSPrefix+"form-date-trigger",showToday:true,useStrict:undefined,initTime:"12",initTimeFormat:"H",matchFieldWidth:false,startDay:0,initComponent:function(){var d=this,b=Ext.isString,c,a;c=d.minValue;a=d.maxValue;if(b(c)){d.minValue=d.parseDate(c)}if(b(a)){d.maxValue=d.parseDate(a)}d.disabledDatesRE=null;d.initDisabledDays();d.callParent()},initValue:function(){var a=this,b=a.value;if(Ext.isString(b)){a.value=a.rawToValue(b)}a.callParent()},initDisabledDays:function(){if(this.disabledDates){var b=this.disabledDates,a=b.length-1,g="(?:",h,e=b.length,c;for(h=0;h<e;h++){c=b[h];g+=Ext.isDate(c)?"^"+Ext.String.escapeRegex(c.dateFormat(this.format))+"$":c;if(h!==a){g+="|"}}this.disabledDatesRE=new RegExp(g+")")}},setDisabledDates:function(a){var c=this,b=c.picker;c.disabledDates=a;c.initDisabledDays();if(b){b.setDisabledDates(c.disabledDatesRE)}},setDisabledDays:function(a){var b=this.picker;this.disabledDays=a;if(b){b.setDisabledDays(a)}},setMinValue:function(c){var b=this,a=b.picker,d=(Ext.isString(c)?b.parseDate(c):c);b.minValue=d;if(a){a.minText=Ext.String.format(b.minText,b.formatDate(b.minValue));a.setMinDate(d)}},setMaxValue:function(c){var b=this,a=b.picker,d=(Ext.isString(c)?b.parseDate(c):c);b.maxValue=d;if(a){a.maxText=Ext.String.format(b.maxText,b.formatDate(b.maxValue));a.setMaxDate(d)}},getErrors:function(q){var j=this,p=Ext.String.format,k=Ext.Date.clearTime,o=j.callParent(arguments),n=j.disabledDays,d=j.disabledDatesRE,m=j.minValue,h=j.maxValue,g=n?n.length:0,e=0,a,b,l,c;q=j.formatDate(q||j.processRawValue(j.getRawValue()));if(q===null||q.length<1){return o}a=q;q=j.parseDate(q);if(!q){o.push(p(j.invalidText,a,Ext.Date.unescapeFormat(j.format)));return o}c=q.getTime();if(m&&c<k(m).getTime()){o.push(p(j.minText,j.formatDate(m)))}if(h&&c>k(h).getTime()){o.push(p(j.maxText,j.formatDate(h)))}if(n){l=q.getDay();for(;e<g;e++){if(l===n[e]){o.push(j.disabledDaysText);break}}}b=j.formatDate(q);if(d&&d.test(b)){o.push(p(j.disabledDatesText,b))}return o},rawToValue:function(a){return this.parseDate(a)||a||null},valueToRaw:function(a){return this.formatDate(this.parseDate(a))},safeParse:function(g,h){var e=this,c=Ext.Date,a=null,b=e.useStrict,d;if(c.formatContainsHourInfo(h)){a=c.parse(g,h,b)}else{d=c.parse(g+" "+e.initTime,h+" "+e.initTimeFormat,b);if(d){a=c.clearTime(d)}}return a},getSubmitValue:function(){var b=this.submitFormat||this.format,a=this.getValue();return a?Ext.Date.format(a,b):""},parseDate:function(e){if(!e||Ext.isDate(e)){return e}var d=this,h=d.safeParse(e,d.format),b=d.altFormats,g=d.altFormatsArray,c=0,a;if(!h&&b){g=g||b.split("|");a=g.length;for(;c<a&&!h;++c){h=d.safeParse(e,g[c])}}return h},formatDate:function(a){return Ext.isDate(a)?Ext.Date.dateFormat(a,this.format):a},createPicker:function(){var a=this,b=Ext.String.format;return new Ext.picker.Date({pickerField:a,ownerCt:a.ownerCt,renderTo:document.body,floating:true,hidden:true,focusOnShow:true,minDate:a.minValue,maxDate:a.maxValue,disabledDatesRE:a.disabledDatesRE,disabledDatesText:a.disabledDatesText,disabledDays:a.disabledDays,disabledDaysText:a.disabledDaysText,format:a.format,showToday:a.showToday,startDay:a.startDay,minText:b(a.minText,a.formatDate(a.minValue)),maxText:b(a.maxText,a.formatDate(a.maxValue)),listeners:{scope:a,select:a.onSelect},keyNavConfig:{esc:function(){a.collapse()}}})},onSelect:function(a,c){var b=this;b.setValue(c);b.fireEvent("select",b,c);b.collapse()},onExpand:function(){var a=this.getValue();this.picker.setValue(Ext.isDate(a)?a:new Date())},onCollapse:function(){this.focus(false,60)},beforeBlur:function(){var c=this,a=c.parseDate(c.getRawValue()),b=c.focusTask;if(b){b.cancel()}if(a){c.setValue(a)}}});Ext.define("Ext.form.field.File",{extend:"Ext.form.field.Trigger",alias:["widget.filefield","widget.fileuploadfield"],alternateClassName:["Ext.form.FileUploadField","Ext.ux.form.FileUploadField","Ext.form.File"],uses:["Ext.button.Button","Ext.layout.component.field.Field"],buttonText:"Browse...",buttonOnly:false,buttonMargin:3,fieldBodyCls:Ext.baseCSSPrefix+"form-file-wrap",readOnly:true,triggerNoEditCls:"",componentLayout:"triggerfield",childEls:["fileInputEl","buttonEl","buttonEl-btnEl","browseButtonWrap"],onRender:function(){var a=this,b;a.callParent(arguments);b=a.inputEl;b.dom.name="";a.fileInputEl.dom.name=a.getName();a.fileInputEl.on({scope:a,change:a.onFileChange});if(a.buttonOnly){a.inputCell.setDisplayed(false)}a.browseButtonWrap.dom.style.width=(a.browseButtonWrap.dom.lastChild.offsetWidth+a.buttonEl.getMargin("lr"))+"px";if(Ext.isIE){a.buttonEl.repaint()}},getTriggerMarkup:function(){var d=this,a,c=Ext.widget("button",Ext.apply({id:d.id+"-buttonEl",ui:d.ui,disabled:d.disabled,text:d.buttonText,cls:Ext.baseCSSPrefix+"form-file-btn",preventDefault:false,style:d.buttonOnly?"":"margin-left:"+d.buttonMargin+"px"},d.buttonConfig)),b=c.getRenderTree(),e={id:d.id+"-fileInputEl",cls:Ext.baseCSSPrefix+"form-file-input",tag:"input",type:"file",size:1};if(d.disabled){e.disabled=true}b.cn=e;a='<td id="'+d.id+'-browseButtonWrap">'+Ext.DomHelper.markup(b)+"</td>";c.destroy();return a},createFileInput:function(){var a=this;a.fileInputEl=a.buttonEl.createChild({name:a.getName(),id:a.id+"-fileInputEl",cls:Ext.baseCSSPrefix+"form-file-input",tag:"input",type:"file",size:1});a.fileInputEl.on({scope:a,change:a.onFileChange})},onFileChange:function(){this.lastValue=null;Ext.form.field.File.superclass.setValue.call(this,this.fileInputEl.dom.value)},setValue:Ext.emptyFn,reset:function(){var a=this;if(a.rendered){a.fileInputEl.remove();a.createFileInput();a.inputEl.dom.value=""}a.callParent()},onDisable:function(){this.callParent();this.disableItems()},disableItems:function(){var a=this.fileInputEl;if(a){a.dom.disabled=true}this["buttonEl-btnEl"].dom.disabled=true},onEnable:function(){var a=this;a.callParent();a.fileInputEl.dom.disabled=false;this["buttonEl-btnEl"].dom.disabled=false},isFileUpload:function(){return true},extractFileInput:function(){var a=this.fileInputEl.dom;this.reset();return a},onDestroy:function(){Ext.destroyMembers(this,"fileInputEl","buttonEl");this.callParent()}});Ext.define("Ext.form.field.Hidden",{extend:"Ext.form.field.Base",alias:["widget.hiddenfield","widget.hidden"],alternateClassName:"Ext.form.Hidden",inputType:"hidden",hideLabel:true,initComponent:function(){this.formItemCls+="-hidden";this.callParent()},isEqual:function(b,a){return this.isEqualAsString(b,a)},initEvents:Ext.emptyFn,setSize:Ext.emptyFn,setWidth:Ext.emptyFn,setHeight:Ext.emptyFn,setPosition:Ext.emptyFn,setPagePosition:Ext.emptyFn,markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn});Ext.define("Ext.layout.component.field.HtmlEditor",{extend:"Ext.layout.component.field.Field",alias:["layout.htmleditor"],type:"htmleditor",toolbarSizePolicy:{setsWidth:0,setsHeight:0},beginLayout:function(a){this.callParent(arguments);a.textAreaContext=a.getEl("textareaEl");a.iframeContext=a.getEl("iframeEl");a.toolbarContext=a.context.getCmp(this.owner.getToolbar())},renderItems:Ext.emptyFn,getItemSizePolicy:function(a){return this.toolbarSizePolicy},getLayoutItems:function(){var a=this.owner.getToolbar();return a?[a]:[]},getRenderTarget:function(){return this.owner.bodyEl},publishInnerHeight:function(c,a){var b=this,d=a-b.measureLabelErrorHeight(c)-c.toolbarContext.getProp("height")-c.bodyCellContext.getPaddingInfo().height;if(Ext.isNumber(d)){c.textAreaContext.setHeight(d);c.iframeContext.setHeight(d)}else{b.done=false}}});Ext.define("Ext.picker.Color",{extend:"Ext.Component",requires:"Ext.XTemplate",alias:"widget.colorpicker",alternateClassName:"Ext.ColorPalette",componentCls:Ext.baseCSSPrefix+"color-picker",selectedCls:Ext.baseCSSPrefix+"color-picker-selected",value:null,clickEvent:"click",allowReselect:false,colors:["000000","993300","333300","003300","003366","000080","333399","333333","800000","FF6600","808000","008000","008080","0000FF","666699","808080","FF0000","FF9900","99CC00","339966","33CCCC","3366FF","800080","969696","FF00FF","FFCC00","FFFF00","00FF00","00FFFF","00CCFF","993366","C0C0C0","FF99CC","FFCC99","FFFF99","CCFFCC","CCFFFF","99CCFF","CC99FF","FFFFFF"],colorRe:/(?:^|\s)color-(.{6})(?:\s|$)/,renderTpl:['<tpl for="colors">','<a href="#" class="color-{.}" hidefocus="on">','<em><span style="background:#{.}" unselectable="on">&#160;</span></em>',"</a>","</tpl>"],initComponent:function(){var a=this;a.callParent(arguments);a.addEvents("select");if(a.handler){a.on("select",a.handler,a.scope,true)}},initRenderData:function(){var a=this;return Ext.apply(a.callParent(),{itemCls:a.itemCls,colors:a.colors})},onRender:function(){var b=this,a=b.clickEvent;b.callParent(arguments);b.mon(b.el,a,b.handleClick,b,{delegate:"a"});if(a!="click"){b.mon(b.el,"click",Ext.emptyFn,b,{delegate:"a",stopEvent:true})}},afterRender:function(){var a=this,b;a.callParent(arguments);if(a.value){b=a.value;a.value=null;a.select(b,true)}},handleClick:function(c,d){var b=this,a;c.stopEvent();if(!b.disabled){a=d.className.match(b.colorRe)[1];b.select(a.toUpperCase())}},select:function(b,a){var d=this,g=d.selectedCls,e=d.value,c;b=b.replace("#","");if(!d.rendered){d.value=b;return}if(b!=e||d.allowReselect){c=d.el;if(d.value){c.down("a.color-"+e).removeCls(g)}c.down("a.color-"+b).addCls(g);d.value=b;if(a!==true){d.fireEvent("select",d,b)}}},getValue:function(){return this.value||null}});Ext.define("Ext.form.field.HtmlEditor",{extend:"Ext.Component",mixins:{labelable:"Ext.form.Labelable",field:"Ext.form.field.Field"},alias:"widget.htmleditor",alternateClassName:"Ext.form.HtmlEditor",requires:["Ext.tip.QuickTipManager","Ext.picker.Color","Ext.toolbar.Item","Ext.toolbar.Toolbar","Ext.util.Format","Ext.layout.component.field.HtmlEditor"],childEls:["iframeEl","textareaEl"],fieldSubTpl:["{beforeTextAreaTpl}",'<textarea id="{cmpId}-textareaEl" name="{name}" tabIndex="-1" {inputAttrTpl}',' class="{textareaCls}" style="{size}" autocomplete="off">',"{[Ext.util.Format.htmlEncode(values.value)]}","</textarea>","{afterTextAreaTpl}","{beforeIFrameTpl}",'<iframe id="{cmpId}-iframeEl" name="{iframeName}" frameBorder="0" {iframeAttrTpl}',' style="overflow:auto;{size}" src="{iframeSrc}"></iframe>',"{afterIFrameTpl}",{disableFormats:true}],subTplInsertions:["beforeTextAreaTpl","afterTextAreaTpl","beforeIFrameTpl","afterIFrameTpl","iframeAttrTpl","inputAttrTpl"],enableFormat:true,enableFontSize:true,enableColors:true,enableAlignments:true,enableLists:true,enableSourceEdit:true,enableLinks:true,enableFont:true,createLinkText:"Please enter the URL for the link:",defaultLinkValue:"http://",fontFamilies:["Arial","Courier New","Tahoma","Times New Roman","Verdana"],defaultFont:"tahoma",defaultValue:(Ext.isOpera||Ext.isIE6)?"&#160;":"&#8203;",editorWrapCls:Ext.baseCSSPrefix+"html-editor-wrap",componentLayout:"htmleditor",initialized:false,activated:false,sourceEditMode:false,iframePad:3,hideMode:"offsets",afterBodyEl:"</div>",maskOnDisable:true,initComponent:function(){var a=this;a.addEvents("initialize","activate","beforesync","beforepush","sync","push","editmodechange");a.callParent(arguments);a.createToolbar(a);a.initLabelable();a.initField()},getRefItems:function(){return[this.toolbar]},createToolbar:function(g){var j=this,h=[],c,l=Ext.tip.QuickTipManager&&Ext.tip.QuickTipManager.isEnabled(),e=Ext.baseCSSPrefix,d,k,b;function a(n,i,m){return{itemId:n,cls:e+"btn-icon",iconCls:e+"edit-"+n,enableToggle:i!==false,scope:g,handler:m||g.relayBtnCmd,clickEvent:"mousedown",tooltip:l?g.buttonTips[n]||b:b,overflowText:g.buttonTips[n].title||b,tabIndex:-1}}if(j.enableFont&&!Ext.isSafari2){d=Ext.widget("component",{renderTpl:['<select id="{id}-selectEl" class="{cls}">','<tpl for="fonts">','<option value="{[values.toLowerCase()]}" style="font-family:{.}"<tpl if="values.toLowerCase()==parent.defaultFont"> selected</tpl>>{.}</option>',"</tpl>","</select>"],renderData:{cls:e+"font-select",fonts:j.fontFamilies,defaultFont:j.defaultFont},childEls:["selectEl"],afterRender:function(){j.fontSelect=this.selectEl;Ext.Component.prototype.afterRender.apply(this,arguments)},onDisable:function(){var i=this.selectEl;if(i){i.dom.disabled=true}Ext.Component.prototype.onDisable.apply(this,arguments)},onEnable:function(){var i=this.selectEl;if(i){i.dom.disabled=false}Ext.Component.prototype.onEnable.apply(this,arguments)},listeners:{change:function(){j.relayCmd("fontname",j.fontSelect.dom.value);j.deferFocus()},element:"selectEl"}});h.push(d,"-")}if(j.enableFormat){h.push(a("bold"),a("italic"),a("underline"))}if(j.enableFontSize){h.push("-",a("increasefontsize",false,j.adjustFont),a("decreasefontsize",false,j.adjustFont))}if(j.enableColors){h.push("-",{itemId:"forecolor",cls:e+"btn-icon",iconCls:e+"edit-forecolor",overflowText:g.buttonTips.forecolor.title,tooltip:l?g.buttonTips.forecolor||b:b,tabIndex:-1,menu:Ext.widget("menu",{plain:true,items:[{xtype:"colorpicker",allowReselect:true,focus:Ext.emptyFn,value:"000000",plain:true,clickEvent:"mousedown",handler:function(m,i){j.execCmd("forecolor",Ext.isWebKit||Ext.isIE?"#"+i:i);j.deferFocus();this.up("menu").hide()}}]})},{itemId:"backcolor",cls:e+"btn-icon",iconCls:e+"edit-backcolor",overflowText:g.buttonTips.backcolor.title,tooltip:l?g.buttonTips.backcolor||b:b,tabIndex:-1,menu:Ext.widget("menu",{plain:true,items:[{xtype:"colorpicker",focus:Ext.emptyFn,value:"FFFFFF",plain:true,allowReselect:true,clickEvent:"mousedown",handler:function(m,i){if(Ext.isGecko){j.execCmd("useCSS",false);j.execCmd("hilitecolor",i);j.execCmd("useCSS",true);j.deferFocus()}else{j.execCmd(Ext.isOpera?"hilitecolor":"backcolor",Ext.isWebKit||Ext.isIE?"#"+i:i);j.deferFocus()}this.up("menu").hide()}}]})})}if(j.enableAlignments){h.push("-",a("justifyleft"),a("justifycenter"),a("justifyright"))}if(!Ext.isSafari2){if(j.enableLinks){h.push("-",a("createlink",false,j.createLink))}if(j.enableLists){h.push("-",a("insertorderedlist"),a("insertunorderedlist"))}if(j.enableSourceEdit){h.push("-",a("sourceedit",true,function(i){j.toggleSourceEdit(!j.sourceEditMode)}))}}for(c=0;c<h.length;c++){if(h[c].itemId!=="sourceedit"){h[c].disabled=true}}k=Ext.widget("toolbar",{id:j.id+"-toolbar",ownerCt:j,cls:Ext.baseCSSPrefix+"html-editor-tb",enableOverflow:true,items:h,ownerLayout:j.getComponentLayout(),listeners:{click:function(i){i.preventDefault()},element:"el"}});j.toolbar=k},getMaskTarget:function(){return this.bodyEl},setReadOnly:function(e){var d=this,c=d.textareaEl,b=d.iframeEl,a;d.readOnly=e;if(c){c.dom.readOnly=e}if(d.initialized){a=d.getEditorBody();if(Ext.isIE){b.setDisplayed(false);a.contentEditable=!e;b.setDisplayed(true)}else{d.setDesignMode(!e)}if(a){a.style.cursor=e?"default":"text"}d.disableItems(e)}},getDocMarkup:function(){var b=this,a=b.iframeEl.getHeight()-b.iframePad*2;return Ext.String.format('<html><head><style type="text/css">body{border:0;margin:0;padding:{0}px;height:{1}px;box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box;cursor:text}</style></head><body></body></html>',b.iframePad,a)},getEditorBody:function(){var a=this.getDoc();return a.body||a.documentElement},getDoc:function(){return(!Ext.isIE&&this.iframeEl.dom.contentDocument)||this.getWin().document},getWin:function(){return Ext.isIE?this.iframeEl.dom.contentWindow:window.frames[this.iframeEl.dom.name]},finishRenderChildren:function(){this.callParent();this.toolbar.finishRender()},onRender:function(){var a=this;a.callParent(arguments);a.inputEl=a.iframeEl;a.monitorTask=Ext.TaskManager.start({run:a.checkDesignMode,scope:a,interval:100})},initRenderTpl:function(){var a=this;if(!a.hasOwnProperty("renderTpl")){a.renderTpl=a.getTpl("labelableRenderTpl")}return a.callParent()},initRenderData:function(){this.beforeSubTpl='<div class="'+this.editorWrapCls+'">'+Ext.DomHelper.markup(this.toolbar.getRenderTree());return Ext.applyIf(this.callParent(),this.getLabelableRenderData())},getSubTplData:function(){return{$comp:this,cmpId:this.id,id:this.getInputId(),textareaCls:Ext.baseCSSPrefix+"hidden",value:this.value,iframeName:Ext.id(),iframeSrc:Ext.SSL_SECURE_URL,size:"height:100px;width:100%"}},getSubTplMarkup:function(){return this.getTpl("fieldSubTpl").apply(this.getSubTplData())},initFrameDoc:function(){var b=this,c,a;Ext.TaskManager.stop(b.monitorTask);c=b.getDoc();b.win=b.getWin();c.open();c.write(b.getDocMarkup());c.close();a={run:function(){var d=b.getDoc();if(d.body||d.readyState==="complete"){Ext.TaskManager.stop(a);b.setDesignMode(true);Ext.defer(b.initEditor,10,b)}},interval:10,duration:10000,scope:b};Ext.TaskManager.start(a)},checkDesignMode:function(){var a=this,b=a.getDoc();if(b&&(!b.editorInitialized||a.getDesignMode()!=="on")){a.initFrameDoc()}},setDesignMode:function(c){var a=this,b=a.getDoc();if(b){if(a.readOnly){c=false}b.designMode=(/on|true/i).test(String(c).toLowerCase())?"on":"off"}},getDesignMode:function(){var a=this.getDoc();return !a?"":String(a.designMode).toLowerCase()},disableItems:function(d){var b=this.getToolbar().items.items,c,a=b.length,e;for(c=0;c<a;c++){e=b[c];if(e.getItemId()!=="sourceedit"){e.setDisabled(d)}}},toggleSourceEdit:function(b){var g=this,d=g.iframeEl,a=g.textareaEl,e=Ext.baseCSSPrefix+"hidden",c=g.getToolbar().getComponent("sourceedit");if(!Ext.isBoolean(b)){b=!g.sourceEditMode}g.sourceEditMode=b;if(c.pressed!==b){c.toggle(b)}if(b){g.disableItems(true);g.syncValue();d.addCls(e);a.removeCls(e);a.dom.removeAttribute("tabIndex");a.focus();g.inputEl=a}else{if(g.initialized){g.disableItems(g.readOnly)}g.pushValue();d.removeCls(e);a.addCls(e);a.dom.setAttribute("tabIndex",-1);g.deferFocus();g.inputEl=d}g.fireEvent("editmodechange",g,b);g.updateLayout()},createLink:function(){var a=prompt(this.createLinkText,this.defaultLinkValue);if(a&&a!=="http://"){this.relayCmd("createlink",a)}},clearInvalid:Ext.emptyFn,setValue:function(c){var b=this,a=b.textareaEl;b.mixins.field.setValue.call(b,c);if(c===null||c===undefined){c=""}if(a){a.dom.value=c}b.pushValue();return this},cleanHtml:function(a){a=String(a);if(Ext.isWebKit){a=a.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi,"")}if(a.charCodeAt(0)===parseInt(this.defaultValue.replace(/\D/g,""),10)){a=a.substring(1)}return a},syncValue:function(){var e=this,b,g,d,a,c;if(e.initialized){b=e.getEditorBody();d=b.innerHTML;if(Ext.isWebKit){a=b.getAttribute("style");c=a.match(/text-align:(.*?);/i);if(c&&c[1]){d='<div style="'+c[0]+'">'+d+"</div>"}}d=e.cleanHtml(d);if(e.fireEvent("beforesync",e,d)!==false){if(e.textareaEl.dom.value!=d){e.textareaEl.dom.value=d;g=true}e.fireEvent("sync",e,d);if(g){e.checkChange()}}}},getValue:function(){var a=this,b;if(!a.sourceEditMode){a.syncValue()}b=a.rendered?a.textareaEl.dom.value:a.value;a.value=b;return b},pushValue:function(){var b=this,a;if(b.initialized){a=b.textareaEl.dom.value||"";if(!b.activated&&a.length<1){a=b.defaultValue}if(b.fireEvent("beforepush",b,a)!==false){b.getEditorBody().innerHTML=a;if(Ext.isGecko){b.setDesignMode(false);b.setDesignMode(true)}b.fireEvent("push",b,a)}}},deferFocus:function(){this.focus(false,true)},getFocusEl:function(){var a=this,b=a.win;return b&&!a.sourceEditMode?b:a.textareaEl},initEditor:function(){try{var g=this,d=g.getEditorBody(),b=g.textareaEl.getStyles("font-size","font-family","background-image","background-repeat","background-color","color"),i,c;b["background-attachment"]="fixed";d.bgProperties="fixed";Ext.DomHelper.applyStyles(d,b);i=g.getDoc();if(i){try{Ext.EventManager.removeAll(i)}catch(h){}}c=Ext.Function.bind(g.onEditorEvent,g);Ext.EventManager.on(i,{mousedown:c,dblclick:c,click:c,keyup:c,buffer:100});c=g.onRelayedEvent;Ext.EventManager.on(i,{mousedown:c,mousemove:c,mouseup:c,click:c,dblclick:c,scope:g});if(Ext.isGecko){Ext.EventManager.on(i,"keypress",g.applyCommand,g)}if(g.fixKeys){Ext.EventManager.on(i,"keydown",g.fixKeys,g)}Ext.EventManager.on(window,"unload",g.beforeDestroy,g);i.editorInitialized=true;g.initialized=true;g.pushValue();g.setReadOnly(g.readOnly);g.fireEvent("initialize",g)}catch(a){}},beforeDestroy:function(){var a=this,d=a.monitorTask,c,g;if(d){Ext.TaskManager.stop(d)}if(a.rendered){try{c=a.getDoc();if(c){Ext.EventManager.removeAll(Ext.fly(c));for(g in c){if(c.hasOwnProperty&&c.hasOwnProperty(g)){delete c[g]}}}}catch(b){}Ext.destroyMembers(a,"toolbar","iframeEl","textareaEl")}a.callParent()},onRelayedEvent:function(c){var b=this.iframeEl,d=b.getXY(),a=c.getXY();c.xy=[d[0]+a[0],d[1]+a[1]];c.injectEvent(b);c.xy=a},onFirstFocus:function(){var c=this,b,a;c.activated=true;c.disableItems(c.readOnly);if(Ext.isGecko){c.win.focus();b=c.win.getSelection();if(!b.focusNode||b.focusNode.nodeType!==3){a=b.getRangeAt(0);a.selectNodeContents(c.getEditorBody());a.collapse(true);c.deferFocus()}try{c.execCmd("useCSS",true);c.execCmd("styleWithCSS",false)}catch(d){}}c.fireEvent("activate",c)},adjustFont:function(d){var e=d.getItemId()==="increasefontsize"?1:-1,c=this.getDoc().queryCommandValue("FontSize")||"2",a=Ext.isString(c)&&c.indexOf("px")!==-1,b;c=parseInt(c,10);if(a){if(c<=10){c=1+e}else{if(c<=13){c=2+e}else{if(c<=16){c=3+e}else{if(c<=18){c=4+e}else{if(c<=24){c=5+e}else{c=6+e}}}}}c=Ext.Number.constrain(c,1,6)}else{b=Ext.isSafari;if(b){e*=2}c=Math.max(1,c+e)+(b?"px":0)}this.execCmd("FontSize",c)},onEditorEvent:function(a){this.updateToolbar()},updateToolbar:function(){var e=this,d,g,a,c;if(e.readOnly){return}if(!e.activated){e.onFirstFocus();return}d=e.getToolbar().items.map;g=e.getDoc();if(e.enableFont&&!Ext.isSafari2){a=(g.queryCommandValue("FontName")||e.defaultFont).toLowerCase();c=e.fontSelect.dom;if(a!==c.value){c.value=a}}function b(){for(var k=0,h=arguments.length,j;k<h;k++){j=arguments[k];d[j].toggle(g.queryCommandState(j))}}if(e.enableFormat){b("bold","italic","underline")}if(e.enableAlignments){b("justifyleft","justifycenter","justifyright")}if(!Ext.isSafari2&&e.enableLists){b("insertorderedlist","insertunorderedlist")}Ext.menu.Manager.hideAll();e.syncValue()},relayBtnCmd:function(a){this.relayCmd(a.getItemId())},relayCmd:function(b,a){Ext.defer(function(){var c=this;c.focus();c.execCmd(b,a);c.updateToolbar()},10,this)},execCmd:function(d,c){var b=this,e=b.getDoc(),a;e.execCommand(d,false,c===a?null:c);b.syncValue()},applyCommand:function(d){if(d.ctrlKey){var a=this,g=d.getCharCode(),b;if(g>0){g=String.fromCharCode(g);switch(g){case"b":b="bold";break;case"i":b="italic";break;case"u":b="underline";break}if(b){a.win.focus();a.execCmd(b);a.deferFocus();d.preventDefault()}}}},insertAtCursor:function(c){var b=this,a;if(b.activated){b.win.focus();if(Ext.isIE){a=b.getDoc().selection.createRange();if(a){a.pasteHTML(c);b.syncValue();b.deferFocus()}}else{b.execCmd("InsertHTML",c);b.deferFocus()}}},fixKeys:(function(){if(Ext.isIE){return function(h){var c=this,b=h.getKey(),g=c.getDoc(),i=c.readOnly,a,d;if(b===h.TAB){h.stopEvent();if(!i){a=g.selection.createRange();if(a){a.collapse(true);a.pasteHTML("&#160;&#160;&#160;&#160;");c.deferFocus()}}}else{if(b===h.ENTER){if(!i){a=g.selection.createRange();if(a){d=a.parentElement();if(!d||d.tagName.toLowerCase()!=="li"){h.stopEvent();a.pasteHTML("<br />");a.collapse(false);a.select()}}}}}}}if(Ext.isOpera){return function(b){var a=this;if(b.getKey()===b.TAB){b.stopEvent();if(!a.readOnly){a.win.focus();a.execCmd("InsertHTML","&#160;&#160;&#160;&#160;");a.deferFocus()}}}}if(Ext.isWebKit){return function(c){var b=this,a=c.getKey(),d=b.readOnly;if(a===c.TAB){c.stopEvent();if(!d){b.execCmd("InsertText","\t");b.deferFocus()}}else{if(a===c.ENTER){c.stopEvent();if(!d){b.execCmd("InsertHtml","<br /><br />");b.deferFocus()}}}}}return null}()),getToolbar:function(){return this.toolbar},buttonTips:{bold:{title:"Bold (Ctrl+B)",text:"Make the selected text bold.",cls:Ext.baseCSSPrefix+"html-editor-tip"},italic:{title:"Italic (Ctrl+I)",text:"Make the selected text italic.",cls:Ext.baseCSSPrefix+"html-editor-tip"},underline:{title:"Underline (Ctrl+U)",text:"Underline the selected text.",cls:Ext.baseCSSPrefix+"html-editor-tip"},increasefontsize:{title:"Grow Text",text:"Increase the font size.",cls:Ext.baseCSSPrefix+"html-editor-tip"},decreasefontsize:{title:"Shrink Text",text:"Decrease the font size.",cls:Ext.baseCSSPrefix+"html-editor-tip"},backcolor:{title:"Text Highlight Color",text:"Change the background color of the selected text.",cls:Ext.baseCSSPrefix+"html-editor-tip"},forecolor:{title:"Font Color",text:"Change the color of the selected text.",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifyleft:{title:"Align Text Left",text:"Align text to the left.",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifycenter:{title:"Center Text",text:"Center text in the editor.",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifyright:{title:"Align Text Right",text:"Align text to the right.",cls:Ext.baseCSSPrefix+"html-editor-tip"},insertunorderedlist:{title:"Bullet List",text:"Start a bulleted list.",cls:Ext.baseCSSPrefix+"html-editor-tip"},insertorderedlist:{title:"Numbered List",text:"Start a numbered list.",cls:Ext.baseCSSPrefix+"html-editor-tip"},createlink:{title:"Hyperlink",text:"Make the selected text a hyperlink.",cls:Ext.baseCSSPrefix+"html-editor-tip"},sourceedit:{title:"Source Edit",text:"Switch to source editing mode.",cls:Ext.baseCSSPrefix+"html-editor-tip"}}});Ext.define("Ext.form.field.Radio",{extend:"Ext.form.field.Checkbox",alias:["widget.radiofield","widget.radio"],alternateClassName:"Ext.form.Radio",requires:["Ext.form.RadioManager"],isRadio:true,inputType:"radio",ariaRole:"radio",formId:null,getGroupValue:function(){var a=this.getManager().getChecked(this.name,this.getFormId());return a?a.inputValue:null},onBoxClick:function(b){var a=this;if(!a.disabled&&!a.readOnly){this.setValue(true)}},onRemoved:function(){this.callParent(arguments);this.formId=null},setValue:function(a){var b=this,c;if(Ext.isBoolean(a)){b.callParent(arguments)}else{c=b.getManager().getWithValue(b.name,a,b.getFormId()).getAt(0);if(c){c.setValue(true)}}return b},getSubmitValue:function(){return this.checked?this.inputValue:null},getModelData:function(){return this.getSubmitData()},onChange:function(c,a){var g=this,e,d,b,h;g.callParent(arguments);if(c){h=g.getManager().getByName(g.name,g.getFormId()).items;d=h.length;for(e=0;e<d;e++){b=h[e];if(b!==g){b.setValue(false)}}}},getManager:function(){return Ext.form.RadioManager}});Ext.define("Ext.picker.Time",{extend:"Ext.view.BoundList",alias:"widget.timepicker",requires:["Ext.data.Store","Ext.Date"],increment:15,format:"g:i A",displayField:"disp",initDate:[2008,0,1],componentCls:Ext.baseCSSPrefix+"timepicker",loadMask:false,initComponent:function(){var c=this,a=Ext.Date,b=a.clearTime,d=c.initDate;c.absMin=b(new Date(d[0],d[1],d[2]));c.absMax=a.add(b(new Date(d[0],d[1],d[2])),"mi",(24*60)-1);c.store=c.createStore();c.updateList();c.callParent()},setMinValue:function(a){this.minValue=a;this.updateList()},setMaxValue:function(a){this.maxValue=a;this.updateList()},normalizeDate:function(a){var b=this.initDate;a.setFullYear(b[0],b[1],b[2]);return a},updateList:function(){var c=this,b=c.normalizeDate(c.minValue||c.absMin),a=c.normalizeDate(c.maxValue||c.absMax);c.store.filterBy(function(d){var e=d.get("date");return e>=b&&e<=a})},createStore:function(){var d=this,c=Ext.Date,e=[],b=d.absMin,a=d.absMax;while(b<=a){e.push({disp:c.dateFormat(b,d.format),date:b});b=c.add(b,"mi",d.increment)}return new Ext.data.Store({fields:["disp","date"],data:e})}});Ext.define("Ext.form.field.Time",{extend:"Ext.form.field.ComboBox",alias:"widget.timefield",requires:["Ext.form.field.Date","Ext.picker.Time","Ext.view.BoundListKeyNav","Ext.Date"],alternateClassName:["Ext.form.TimeField","Ext.form.Time"],triggerCls:Ext.baseCSSPrefix+"form-time-trigger",minText:"The time in this field must be equal to or after {0}",maxText:"The time in this field must be equal to or before {0}",invalidText:"{0} is not a valid time",format:"g:i A",altFormats:"g:ia|g:iA|g:i a|g:i A|h:i|g:i|H:i|ga|ha|gA|h a|g a|g A|gi|hi|gia|hia|g|H|gi a|hi a|giA|hiA|gi A|hi A",increment:15,pickerMaxHeight:300,selectOnTab:true,snapToIncrement:false,initDate:"1/1/2008",initDateFormat:"j/n/Y",ignoreSelection:0,queryMode:"local",displayField:"disp",valueField:"date",initComponent:function(){var c=this,b=c.minValue,a=c.maxValue;if(b){c.setMinValue(b)}if(a){c.setMaxValue(a)}c.displayTpl=new Ext.XTemplate('<tpl for=".">{[typeof values === "string" ? values : this.formatDate(values["'+c.displayField+'"])]}<tpl if="xindex < xcount">'+c.delimiter+"</tpl></tpl>",{formatDate:Ext.Function.bind(c.formatDate,c)});this.callParent()},transformOriginalValue:function(a){if(Ext.isString(a)){return this.rawToValue(a)}return a},isEqual:function(b,a){return Ext.Date.isEqual(b,a)},setMinValue:function(c){var b=this,a=b.picker;b.setLimit(c,true);if(a){a.setMinValue(b.minValue)}},setMaxValue:function(c){var b=this,a=b.picker;b.setLimit(c,false);if(a){a.setMaxValue(b.maxValue)}},setLimit:function(b,g){var a=this,e,c;if(Ext.isString(b)){e=a.parseDate(b)}else{if(Ext.isDate(b)){e=b}}if(e){c=Ext.Date.clearTime(new Date(a.initDate));c.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())}else{c=null}a[g?"minValue":"maxValue"]=c},rawToValue:function(a){return this.parseDate(a)||a||null},valueToRaw:function(a){return this.formatDate(this.parseDate(a))},getErrors:function(d){var b=this,g=Ext.String.format,h=b.callParent(arguments),c=b.minValue,e=b.maxValue,a;d=b.formatDate(d||b.processRawValue(b.getRawValue()));if(d===null||d.length<1){return h}a=b.parseDate(d);if(!a){h.push(g(b.invalidText,d,Ext.Date.unescapeFormat(b.format)));return h}if(c&&a<c){h.push(g(b.minText,b.formatDate(c)))}if(e&&a>e){h.push(g(b.maxText,b.formatDate(e)))}return h},formatDate:function(){return Ext.form.field.Date.prototype.formatDate.apply(this,arguments)},parseDate:function(e){var d=this,h=e,b=d.altFormats,g=d.altFormatsArray,c=0,a;if(e&&!Ext.isDate(e)){h=d.safeParse(e,d.format);if(!h&&b){g=g||b.split("|");a=g.length;for(;c<a&&!h;++c){h=d.safeParse(e,g[c])}}}if(h&&d.snapToIncrement){h=new Date(Ext.Number.snap(h.getTime(),d.increment*60*1000))}return h},safeParse:function(e,g){var d=this,b=Ext.Date,c,a=null;if(b.formatContainsDateInfo(g)){a=b.parse(e,g)}else{c=b.parse(d.initDate+" "+e,d.initDateFormat+" "+g);if(c){a=c}}return a},getSubmitValue:function(){var a=this,c=a.submitFormat||a.format,b=a.getValue();return b?Ext.Date.format(b,c):null},createPicker:function(){var b=this,a;b.listConfig=Ext.apply({xtype:"timepicker",selModel:{mode:"SINGLE"},cls:undefined,minValue:b.minValue,maxValue:b.maxValue,increment:b.increment,format:b.format,maxHeight:b.pickerMaxHeight},b.listConfig);a=b.callParent();b.store=a.store;return a},onItemClick:function(b,a){var d=this,c=b.getSelectionModel().getSelection();if(c.length>0){c=c[0];if(c&&Ext.Date.isEqual(a.get("date"),c.get("date"))){d.collapse()}}},onListSelectionChange:function(c,e){var b=this,a=e[0],d=a?a.get("date"):null;if(!b.ignoreSelection){b.skipSync=true;b.setValue(d);b.skipSync=false;b.fireEvent("select",b,d);b.picker.clearHighlight();b.collapse();b.inputEl.focus()}},syncSelection:function(){var j=this,h=j.picker,c,g,k,b,i,e,a;if(h&&!j.skipSync){h.clearHighlight();k=j.getValue();g=h.getSelectionModel();j.ignoreSelection++;if(k===null){g.deselectAll()}else{if(Ext.isDate(k)){b=h.store.data.items;e=b.length;for(i=0;i<e;i++){a=b[i];if(Ext.Date.isEqual(a.get("date"),k)){c=a;break}}g.select(c)}}j.ignoreSelection--}},postBlur:function(){var a=this;a.callParent(arguments);a.setRawValue(a.formatDate(a.getValue()))},setValue:function(){this.getPicker();this.callParent(arguments)},getValue:function(){return this.parseDate(this.callParent(arguments))}});Ext.define("Ext.grid.CellEditor",{extend:"Ext.Editor",constructor:function(a){a=Ext.apply({},a);if(a.field){a.field.monitorTab=false}this.callParent([a])},onShow:function(){var b=this,d=b.boundEl.first(),a,c;if(d){a=d.dom.lastChild;if(a&&a.nodeType===3){c=b.cellTextNode=d.dom.lastChild;b.cellTextValue=c.nodeValue;c.nodeValue="\u00a0"}}b.callParent(arguments)},onHide:function(){var a=this,b=a.boundEl.first();if(b&&a.cellTextNode){a.cellTextNode.nodeValue=a.cellTextValue;delete a.cellTextNode;delete a.cellTextValue}a.callParent(arguments)},afterRender:function(){var a=this,b=a.field;a.callParent(arguments);if(b.isXType("checkboxfield")){b.mon(b.inputEl,{mousedown:a.onCheckBoxMouseDown,click:a.onCheckBoxClick,scope:a})}},onCheckBoxMouseDown:function(){this.completeEdit=Ext.emptyFn},onCheckBoxClick:function(){delete this.completeEdit;this.field.focus(false,10)},realign:function(e){var k=this,h=k.boundEl,j=h.first(),c=j.dom.childNodes,g=c.length,d=Ext.Array.clone(k.offsets),l=k.field.inputEl,b,i,m,a;if(k.isForTree&&(g>1||(g===1&&c[0].nodeType!==3))){b=j.last();i=b.getOffsetsTo(j)[0]+b.getWidth();m=j.getWidth();a=m-i;if(!k.editingPlugin.grid.columnLines){a--}d[0]+=i;k.addCls(Ext.baseCSSPrefix+"grid-editor-on-text-node")}else{a=h.getWidth()-1}if(e===true){k.field.setWidth(a)}k.alignTo(h,k.alignment,d)},onEditorTab:function(b){var a=this.field;if(a.onEditorTab){a.onEditorTab(b)}},alignment:"tl-tl",hideEl:false,cls:Ext.baseCSSPrefix+"small-editor "+Ext.baseCSSPrefix+"grid-editor",shim:false,shadow:false});Ext.define("Ext.grid.ColumnComponentLayout",{extend:"Ext.layout.component.Auto",alias:"layout.columncomponent",type:"columncomponent",setWidthInDom:true,getContentHeight:function(a){return this.owner.isGroupHeader?a.getProp("contentHeight"):this.callParent(arguments)},calculateOwnerHeightFromContentHeight:function(c,b){var a=this.callParent(arguments);if(this.owner.isGroupHeader){a+=this.owner.titleEl.dom.offsetHeight}return a},getContentWidth:function(a){return this.owner.isGroupHeader?a.getProp("contentWidth"):this.callParent(arguments)},calculateOwnerWidthFromContentWidth:function(b,a){return a+b.getPaddingInfo().width}});Ext.define("Ext.grid.ColumnLayout",{extend:"Ext.layout.container.HBox",alias:"layout.gridcolumn",type:"gridcolumn",reserveOffset:false,firstHeaderCls:Ext.baseCSSPrefix+"column-header-first",lastHeaderCls:Ext.baseCSSPrefix+"column-header-last",initLayout:function(){this.grid=this.owner.up("[scrollerOwner]");this.callParent()},beginLayout:function(j){var h=this,e=h.grid,b=e.view,d=0,c=h.getVisibleItems(),a=c.length,g;j.gridContext=j.context.getCmp(h.grid);if(e.lockable){if(h.owner.up("tablepanel")===b.normalGrid){b=b.normalGrid.getView()}else{b=null}}h.callParent(arguments);for(;d<a;d++){g=c[d];g.removeCls([h.firstHeaderCls,h.lastHeaderCls]);g.el.setStyle({height:"auto"});g.titleEl.setStyle({height:"auto",paddingTop:""})}if(a>0){c[0].addCls(h.firstHeaderCls);c[a-1].addCls(h.lastHeaderCls)}if(!h.owner.isHeader&&Ext.getScrollbarSize().width&&!e.collapsed&&b&&b.table.dom&&(b.autoScroll||b.overflowY)){j.viewContext=j.context.getCmp(b)}},roundFlex:function(a){return Math.floor(a)},calculate:function(e){var d=this,c=e.viewContext,b,a;d.callParent(arguments);if(e.state.parallelDone){e.setProp("columnWidthsDone",true)}if(c&&!e.state.overflowAdjust.width&&!e.gridContext.heightModel.shrinkWrap){b=c.tableContext.getProp("height");a=c.getProp("height");if(isNaN(b+a)){d.done=false}else{if(b>=a){e.gridContext.invalidate({after:function(){e.state.overflowAdjust={width:Ext.getScrollbarSize().width,height:0}}})}}}},completeLayout:function(c){var j=this,b=j.owner,a=c.state,g=false,k=j.sizeModels.calculated,e,h,d,m,l;j.callParent(arguments);if(!a.flexesCalculated&&b.forceFit&&!b.isHeader){e=c.childItems;h=e.length;for(d=0;d<h;d++){m=e[d];l=m.target;if(l.width){l.flex=c.childItems[d].flex=l.width;delete l.width;m.widthModel=k;g=true}}if(g){j.cacheFlexes(c);c.invalidate({state:{flexesCalculated:true}})}}},finalizeLayout:function(){var g=this,e=0,d,b,h,a=g.owner,c=a.titleEl;d=g.getVisibleItems();b=d.length;h=a.el.getViewSize().height;if(c){h-=c.getHeight()}for(;e<b;e++){d[e].setPadding(h)}},publishInnerCtSize:function(e){var d=this,c=e.state.boxPlan.targetSize,b=e.peek("contentWidth"),a;if((b!=null)&&!d.owner.isHeader){c.width=b;a=d.owner.ownerCt.view;if(a.autoScroll||a.overflowY){c.width+=Ext.getScrollbarSize().width}}return d.callParent(arguments)}});Ext.define("Ext.grid.LockingView",{mixins:{observable:"Ext.util.Observable"},eventRelayRe:/^(beforeitem|beforecontainer|item|container|cell)/,constructor:function(c){var g=this,i=[],a=g.eventRelayRe,b=c.locked.getView(),h=c.normal.getView(),d,e;Ext.apply(g,{lockedView:b,normalView:h,lockedGrid:c.locked,normalGrid:c.normal,panel:c.panel});g.mixins.observable.constructor.call(g,c);d=b.events;for(e in d){if(d.hasOwnProperty(e)&&a.test(e)){i.push(e)}}g.relayEvents(b,i);g.relayEvents(h,i);h.on({scope:g,itemmouseleave:g.onItemMouseLeave,itemmouseenter:g.onItemMouseEnter});b.on({scope:g,itemmouseleave:g.onItemMouseLeave,itemmouseenter:g.onItemMouseEnter})},getGridColumns:function(){var a=this.lockedGrid.headerCt.getGridColumns();return a.concat(this.normalGrid.headerCt.getGridColumns())},getEl:function(a){return this.getViewForColumn(a).getEl()},getViewForColumn:function(b){var a=this.lockedView,c;a.headerCt.cascade(function(d){if(d===b){c=true;return false}});return c?a:this.normalView},onItemMouseEnter:function(c,b){var g=this,d=g.lockedView,a=g.normalView,e;if(c.trackOver){if(c!==d){a=d}e=a.getNode(b);a.highlightItem(e)}},onItemMouseLeave:function(c,b){var e=this,d=e.lockedView,a=e.normalView;if(c.trackOver){if(c!==d){a=d}a.clearHighlight()}},relayFn:function(c,b){b=b||[];var a=this.lockedView;a[c].apply(a,b||[]);a=this.normalView;a[c].apply(a,b||[])},getSelectionModel:function(){return this.panel.getSelectionModel()},getStore:function(){return this.panel.store},getNode:function(a){return this.normalView.getNode(a)},getCell:function(b,c){var a=this.getViewForColumn(c),d;d=a.getNode(b);return Ext.fly(d).down(c.getCellSelector())},getRecord:function(b){var a=this.lockedView.getRecord(b);if(!b){a=this.normalView.getRecord(b)}return a},addElListener:function(a,c,b){this.relayFn("addElListener",arguments)},refreshNode:function(){this.relayFn("refreshNode",arguments)},refresh:function(){this.relayFn("refresh",arguments)},bindStore:function(){this.relayFn("bindStore",arguments)},addRowCls:function(){this.relayFn("addRowCls",arguments)},removeRowCls:function(){this.relayFn("removeRowCls",arguments)}});Ext.define("Ext.view.TableLayout",{extend:"Ext.layout.component.Auto",alias:["layout.tableview"],type:"tableview",beginLayout:function(b){var a=this;a.callParent(arguments);if(a.owner.table.dom){b.tableContext=b.getEl(a.owner.table);b.headerContext=b.context.getCmp(a.headerCt)}},calculate:function(b){var a=this;a.callParent(arguments);if(b.tableContext){if(b.state.columnWidthsSynced){if(b.hasProp("columnWidthsFlushed")){b.tableContext.setHeight(b.tableContext.el.dom.offsetHeight,false)}else{a.done=false}}else{if(b.headerContext.hasProp("columnWidthsDone")){b.context.queueFlush(a);b.state.columnWidthsSynced=true}a.done=false}}},measureContentHeight:function(a){if(!a.headerContext||a.hasProp("columnWidthsFlushed")){return this.callParent(arguments)}},flush:function(){var j=this,e=j.ownerContext.context,d=j.headerCt.getGridColumns(),c=0,b=d.length,h=j.owner.el,a=0,g;e.currentLayout=j;for(c=0;c<b;c++){g=d[c].hidden?0:e.getCmp(d[c]).props.width;a+=g;h.select(j.getColumnSelector(d[c])).setWidth(g)}h.select("table."+Ext.baseCSSPrefix+"grid-table-resizer").setWidth(a);j.ownerContext.setProp("columnWidthsFlushed",true)},finishedLayout:function(){var a=this,b;a.callParent(arguments);if(Ext.isGecko){b=a.headerCt.getGridColumns()[0];if(b){b=a.owner.el.down(a.getColumnSelector(b));if(b){b.setStyle("display","none");b.dom.scrollWidth;b.setStyle("display","")}}}},getColumnSelector:function(a){return"th."+Ext.baseCSSPrefix+"grid-col-resizer-"+a.id}});Ext.define("Ext.view.Table",{extend:"Ext.view.View",alias:"widget.tableview",uses:["Ext.view.TableLayout","Ext.view.TableChunker","Ext.util.DelayedTask","Ext.util.MixedCollection"],componentLayout:"tableview",baseCls:Ext.baseCSSPrefix+"grid-view",itemSelector:"tr."+Ext.baseCSSPrefix+"grid-row",cellSelector:"td."+Ext.baseCSSPrefix+"grid-cell",rowSelector:"tr."+Ext.baseCSSPrefix+"grid-row",firstCls:Ext.baseCSSPrefix+"grid-cell-first",lastCls:Ext.baseCSSPrefix+"grid-cell-last",headerRowSelector:"tr."+Ext.baseCSSPrefix+"grid-header-row",selectedItemCls:Ext.baseCSSPrefix+"grid-row-selected",selectedCellCls:Ext.baseCSSPrefix+"grid-cell-selected",focusedItemCls:Ext.baseCSSPrefix+"grid-row-focused",overItemCls:Ext.baseCSSPrefix+"grid-row-over",altRowCls:Ext.baseCSSPrefix+"grid-row-alt",rowClsRe:new RegExp("(?:^|\\s*)"+Ext.baseCSSPrefix+"grid-row-(first|last|alt)(?:\\s+|$)","g"),cellRe:new RegExp(Ext.baseCSSPrefix+"grid-cell-([^\\s]+) ",""),trackOver:true,getRowClass:null,stripeRows:true,markDirty:true,initialTpl:"<div></div>",initComponent:function(){var b=this,a=b.scroll;b.table=new Ext.dom.Element.Fly();b.table.id=b.id+"gridTable";b.autoScroll=undefined;if(a===true||a==="both"){b.autoScroll=true}else{if(a==="horizontal"){b.overflowX="auto"}else{if(a==="vertical"){b.overflowY="auto"}}}b.selModel.view=b;b.headerCt.view=b;b.headerCt.markDirty=b.markDirty;b.initFeatures(b.grid);delete b.grid;b.tpl=b.getTpl("initialTpl");b.callParent()},moveColumn:function(a,p,d){var n=this,l=(d>1)?document.createDocumentFragment():undefined,c=p,q=n.getGridColumns().length,o=q-1,b=(n.firstCls||n.lastCls)&&(p===0||p==q||a===0||a==o),g,e,r,k,m,h;if(n.rendered){h=n.el.query(n.headerRowSelector);r=n.el.query(n.rowSelector);if(p>a&&l){c-=d}for(g=0,k=h.length;g<k;++g){m=h[g];if(l){for(e=0;e<d;e++){l.appendChild(m.cells[a])}m.insertBefore(l,m.cells[c]||null)}else{m.insertBefore(m.cells[a],m.cells[c]||null)}}for(g=0,k=r.length;g<k;g++){m=r[g];if(b){if(a===0){Ext.fly(m.cells[0]).removeCls(n.firstCls);Ext.fly(m.cells[1]).addCls(n.firstCls)}else{if(a===o){Ext.fly(m.cells[o]).removeCls(n.lastCls);Ext.fly(m.cells[o-1]).addCls(n.lastCls)}}if(p===0){Ext.fly(m.cells[0]).removeCls(n.firstCls);Ext.fly(m.cells[a]).addCls(n.firstCls)}else{if(p===q){Ext.fly(m.cells[o]).removeCls(n.lastCls);Ext.fly(m.cells[a]).addCls(n.lastCls)}}}if(l){for(e=0;e<d;e++){l.appendChild(m.cells[a])}m.insertBefore(l,m.cells[c]||null)}else{m.insertBefore(m.cells[a],m.cells[c]||null)}}n.setNewTemplate()}},scrollToTop:Ext.emptyFn,addElListener:function(a,c,b){this.mon(this,a,c,b,{element:"el"})},getGridColumns:function(){return this.headerCt.getGridColumns()},getHeaderAtIndex:function(a){return this.headerCt.getHeaderAtIndex(a)},getCell:function(a,b){var c=this.getNode(a);return Ext.fly(c).down(b.getCellSelector())},getFeature:function(b){var a=this.featuresMC;if(a){return a.get(b)}},initFeatures:function(d){var g=this,c,e,b,a;g.featuresMC=new Ext.util.MixedCollection();e=g.features=g.constructFeatures();a=e?e.length:0;for(c=0;c<a;c++){b=e[c];b.view=g;b.grid=d;g.featuresMC.add(b);b.init()}},constructFeatures:function(){var g=this,e=g.features,d,b,c=0,a;if(e){b=[];a=e.length;for(;c<a;c++){d=e[c];if(!d.isFeature){d=Ext.create("feature."+d.ftype,d)}b[c]=d}}return b},attachEventsForFeatures:function(){var b=this.features,c=b.length,a=0;for(;a<c;a++){if(b[a].isFeature){b[a].attachEvents()}}},afterRender:function(){var a=this;a.callParent();if(!a.enableTextSelection){a.el.unselectable()}a.attachEventsForFeatures()},onViewScroll:function(b,a){this.callParent(arguments);this.fireEvent("bodyscroll",b,a)},prepareData:function(b,h,d){var g=this,k=g.headerCt.prepareData(b,h,d,g,g.ownerCt),a=g.features,e=a.length,c=0,j;for(;c<e;c++){j=a[c];if(j.isFeature){Ext.apply(k,j.getAdditionalData(b,h,d,k,g))}}return k},collectData:function(d,q){var n=this,s=n.callParent(arguments),c=n.headerCt,p=c.getFullWidth(),b=n.features,l=b.length,a={rows:s,fullWidth:p},h=0,t,g=0,m,k,e,r;m=s.length;if(n.getRowClass){for(;g<m;g++){k={};e=s[g];r=e.rowCls||"";e.rowCls=this.getRowClass(d[g],g,k,n.store)+" "+r}}for(;h<l;h++){t=b[h];if(t.isFeature&&t.collectData&&!t.disabled){a=t.collectData(d,s,q,p,a);break}}return a},refreshSize:function(){var b=this,a;b.table.attach(b.el.child("table",true));if(!b.hasLoadingHeight){a=b.up("tablepanel");Ext.suspendLayouts();b.callParent();if(a&&Ext.getScrollbarSize().width&&(b.autoScroll||b.overflowY)){a.updateLayout()}Ext.resumeLayouts(true)}},setNewTemplate:function(){var b=this,a=b.headerCt.getColumnsForTpl(true);b.tpl=b.getTableChunker().getTableTpl({rowCount:b.store.getCount(),columns:a,features:b.features,enableTextSelection:b.enableTextSelection})},getTableChunker:function(){return this.chunker||Ext.view.TableChunker},addRowCls:function(b,a){var c=this.getNode(b);if(c){Ext.fly(c).addCls(a)}},removeRowCls:function(b,a){var c=this.getNode(b);if(c){Ext.fly(c).removeCls(a)}},onRowSelect:function(a){this.addRowCls(a,this.selectedItemCls)},onRowDeselect:function(b){var a=this;a.removeRowCls(b,a.selectedItemCls);a.removeRowCls(b,a.focusedItemCls)},onCellSelect:function(b){var a=this.getCellByPosition(b,true);if(a){Ext.fly(a).addCls(this.selectedCellCls)}},onCellDeselect:function(b){var a=this.getCellByPosition(b,true);if(a){Ext.fly(a).removeCls(this.selectedCellCls)}},onCellFocus:function(a){this.focusCell(a)},getCellByPosition:function(a,b){if(a){var c=this.getNode(a.row),d=this.headerCt.getHeaderAtIndex(a.column);if(d&&c){return Ext.fly(c).down(d.getCellSelector(),b)}}return false},onRowFocus:function(d,b,a){var c=this;if(b){c.addRowCls(d,c.focusedItemCls);if(!a){c.focusRow(d)}}else{c.removeRowCls(d,c.focusedItemCls)}},focusRow:function(b){var g=this,k=g.getNode(b),c=g.el,i=0,a=g.ownerCt,j,h,e,d;if(k&&c){h=c.getY();e=h+c.dom.clientHeight;j=Ext.fly(k).getRegion();if(j.top<h){i=j.top-h}else{if(j.bottom>e){i=j.bottom-e}}d=g.getRecord(k);b=g.store.indexOf(d);if(i){a.scrollByDeltaY(i)}g.fireEvent("rowfocus",d,k,b)}},focusCell:function(h){var j=this,k=j.getCellByPosition(h),b=j.el,d=0,e=0,c=b.getRegion(),a=j.ownerCt,i,g;c.bottom=c.top+b.dom.clientHeight;c.right=c.left+b.dom.clientWidth;if(k){i=k.getRegion();if(i.top<c.top){d=i.top-c.top}else{if(i.bottom>c.bottom){d=i.bottom-c.bottom}}if(i.left<c.left){e=i.left-c.left}else{if(i.right>c.right){e=i.right-c.right}}if(d){a.scrollByDeltaY(d)}if(e){a.scrollByDeltaX(e)}b.focus();j.fireEvent("cellfocus",g,k,h)}},scrollByDelta:function(c,b){b=b||"scrollTop";var a=this.el.dom;a[b]=(a[b]+=c)},onUpdate:function(g,e,k,p){var v=this,j,d,l,s,r,u,q,b,c,w,t,r,a,n,m,h,o=v.editingPlugin&&v.editingPlugin.editing;if(v.viewReady){j=v.store.indexOf(e);a=v.headerCt.getGridColumns();n=v.overItemCls;if(a.length&&j>-1){d=v.bufferRender([e],j)[0];q=v.all.item(j);if(q){b=q.dom;m=q.hasCls(n);if(b.mergeAttributes){b.mergeAttributes(d,true)}else{l=d.attributes;s=l.length;for(r=0;r<s;r++){u=l[r].name;if(u!=="id"){b.setAttribute(u,l[r].value)}}}if(m){q.addCls(n)}c=q.query(v.cellSelector);w=Ext.fly(d).query(v.cellSelector);t=w.length;h=c[0].parentNode;for(r=0;r<t;r++){if(v.shouldUpdateCell(a[r],p)){if(o){Ext.fly(c[r]).syncContent(w[r])}else{h.insertBefore(w[r],c[r]);h.removeChild(c[r])}}}}v.fireEvent("itemupdate",e,j,d)}}},shouldUpdateCell:function(b,a){if(b.hasCustomRenderer){return true}return !a||Ext.Array.contains(a,b.dataIndex)},refresh:function(){var a=this;a.setNewTemplate();a.callParent(arguments);a.doStripeRows(0);a.headerCt.setSortState()},clearViewEl:function(){this.callParent();delete this.table.dom},processItemEvent:function(b,m,j,d){var h=this,k=d.getTarget(h.cellSelector,m),i=k?k.cellIndex:-1,a=h.statics().EventMap,c=h.getSelectionModel(),g=d.type,l;if(g=="keydown"&&!k&&c.getCurrentPosition){k=h.getCellByPosition(c.getCurrentPosition());if(k){k=k.dom;i=k.cellIndex}}l=h.fireEvent("uievent",g,h,k,j,i,d,b,m);if(l===false||h.callParent(arguments)===false){return false}if(g=="mouseover"||g=="mouseout"){return true}if(!k){return true}return !((h["onBeforeCell"+a[g]](k,i,b,m,j,d)===false)||(h.fireEvent("beforecell"+g,h,k,i,b,m,j,d)===false)||(h["onCell"+a[g]](k,i,b,m,j,d)===false)||(h.fireEvent("cell"+g,h,k,i,b,m,j,d)===false))},processSpecialEvent:function(k){var n=this,b=n.statics().EventMap,d=n.features,m=d.length,o=k.type,g,p,h,j,c,l,a=n.ownerCt;n.callParent(arguments);if(o=="mouseover"||o=="mouseout"){return}for(g=0;g<m;g++){p=d[g];if(p.hasFeatureEvent){j=k.getTarget(p.eventSelector,n.getTargetEl());if(j){h=p.eventPrefix;c=p.getFireEventArgs("before"+h+o,n,j,k);l=p.getFireEventArgs(h+o,n,j,k);if((n.fireEvent.apply(n,c)===false)||(a.fireEvent.apply(a,c)===false)||(n.fireEvent.apply(n,l)===false)||(a.fireEvent.apply(a,l)===false)){return false}}}}return true},onCellMouseDown:Ext.emptyFn,onCellMouseUp:Ext.emptyFn,onCellClick:Ext.emptyFn,onCellDblClick:Ext.emptyFn,onCellContextMenu:Ext.emptyFn,onCellKeyDown:Ext.emptyFn,onBeforeCellMouseDown:Ext.emptyFn,onBeforeCellMouseUp:Ext.emptyFn,onBeforeCellClick:Ext.emptyFn,onBeforeCellDblClick:Ext.emptyFn,onBeforeCellContextMenu:Ext.emptyFn,onBeforeCellKeyDown:Ext.emptyFn,expandToFit:function(b){if(b){var a=this.getMaxContentWidth(b);delete b.flex;b.setWidth(a)}},getMaxContentWidth:function(h){var a=h.getCellInnerSelector(),c=this.el.query(a),d=0,g=c.length,e=h.el.dom.scrollWidth,b;for(;d<g;d++){b=c[d].scrollWidth;if(b>e){e=b}}return e},getPositionByEvent:function(g){var d=this,b=g.getTarget(d.cellSelector),c=g.getTarget(d.itemSelector),a=d.getRecord(c),h=d.getHeaderByCell(b);return d.getPosition(a,h)},getHeaderByCell:function(b){if(b){var a=b.className.match(this.cellRe);if(a&&a[1]){return Ext.getCmp(a[1])}}return false},walkCells:function(l,m,h,n,a,o){if(!l){return}var j=this,p=l.row,d=l.column,k=j.store.getCount(),g=j.getFirstVisibleColumnIndex(),b=j.getLastVisibleColumnIndex(),i={row:p,column:d},c=j.headerCt.getHeaderAtIndex(d);if(!c||c.hidden){return false}h=h||{};m=m.toLowerCase();switch(m){case"right":if(d===b){if(n||p===k-1){return false}if(!h.ctrlKey){i.row=p+1;i.column=g}}else{if(!h.ctrlKey){i.column=d+j.getRightGap(c)}else{i.column=b}}break;case"left":if(d===g){if(n||p===0){return false}if(!h.ctrlKey){i.row=p-1;i.column=b}}else{if(!h.ctrlKey){i.column=d+j.getLeftGap(c)}else{i.column=g}}break;case"up":if(p===0){return false}else{if(!h.ctrlKey){i.row=p-1}else{i.row=0}}break;case"down":if(p===k-1){return false}else{if(!h.ctrlKey){i.row=p+1}else{i.row=k-1}}break}if(a&&a.call(o||window,i)!==true){return false}else{return i}},getFirstVisibleColumnIndex:function(){var a=this.getHeaderCt().getVisibleGridColumns()[0];return a?a.getIndex():-1},getLastVisibleColumnIndex:function(){var b=this.getHeaderCt().getVisibleGridColumns(),a=b[b.length-1];return a.getIndex()},getHeaderCt:function(){return this.headerCt},getPosition:function(a,e){var d=this,b=d.store,c=d.headerCt.getGridColumns();return{row:b.indexOf(a),column:Ext.Array.indexOf(c,e)}},getRightGap:function(a){var g=this.getHeaderCt(),e=g.getGridColumns(),b=Ext.Array.indexOf(e,a),c=b+1,d;for(;c<=e.length;c++){if(!e[c].hidden){d=c;break}}return d-b},beforeDestroy:function(){if(this.rendered){this.el.removeAllListeners()}this.callParent(arguments)},getLeftGap:function(a){var g=this.getHeaderCt(),e=g.getGridColumns(),c=Ext.Array.indexOf(e,a),d=c-1,b;for(;d>=0;d--){if(!e[d].hidden){b=d;break}}return b-c},onAdd:function(c,a,b){this.callParent(arguments);this.doStripeRows(b)},onRemove:function(c,a,b){this.callParent(arguments);this.doStripeRows(b)},doStripeRows:function(b,a){var d=this,e,h,c,g;if(d.rendered&&d.stripeRows){e=d.getNodes(b,a);for(c=0,h=e.length;c<h;c++){g=e[c];g.className=g.className.replace(d.rowClsRe," ");b++;if(b%2===0){g.className+=(" "+d.altRowCls)}}}}});Ext.define("Ext.grid.Lockable",{requires:["Ext.grid.LockingView","Ext.view.Table"],syncRowHeight:true,headerCounter:0,scrollDelta:40,unlockText:"Unlock",lockText:"Lock",determineXTypeToCreate:function(){var c=this,g,d,b,e,a;if(c.subGridXType){g=c.subGridXType}else{d=this.getXTypes().split("/");b=d.length;e=d[b-1];a=d[b-2];if(a!=="tablepanel"){g=a}else{g=e}}return g},injectLockable:function(){this.lockable=true;this.hasView=true;var t=this,b=Ext.getScrollbarSize().width===0,d=t.store=Ext.StoreManager.lookup(t.store),c=t.determineXTypeToCreate(),j=t.getSelectionModel(),l,p,q,o,s,h,m,n,a,e,r,g,u,k;l=t.constructFeatures();t.cloneFeatures();p=t.constructFeatures();q=t.constructPlugins();t.clonePlugins();o=t.constructPlugins();delete t.features;delete t.plugins;for(m=0,n=(l?l.length:0);m<n;m++){l[m].lockingPartner=p[m];p[m].lockingPartner=l[m]}s=Ext.apply({xtype:c,store:d,scrollerOwner:false,enableAnimations:false,scroll:b?"vertical":false,selModel:j,border:false,cls:Ext.baseCSSPrefix+"grid-inner-locked",isLayoutRoot:function(){return false},features:l,plugins:q},t.lockedGridConfig);h=Ext.apply({xtype:c,store:d,scrollerOwner:false,enableAnimations:false,selModel:j,border:false,isLayoutRoot:function(){return false},features:p,plugins:o},t.normalGridConfig);t.addCls(Ext.baseCSSPrefix+"grid-locked");Ext.copyTo(h,t,t.bothCfgCopy);Ext.copyTo(s,t,t.bothCfgCopy);Ext.copyTo(h,t,t.normalCfgCopy);Ext.copyTo(s,t,t.lockedCfgCopy);for(m=0;m<t.normalCfgCopy.length;m++){delete t[t.normalCfgCopy[m]]}for(m=0;m<t.lockedCfgCopy.length;m++){delete t[t.lockedCfgCopy[m]]}t.addEvents("lockcolumn","unlockcolumn");t.addStateEvents(["lockcolumn","unlockcolumn"]);t.lockedHeights=[];t.normalHeights=[];a=t.processColumns(t.columns);s.width=a.lockedWidth+Ext.num(j.headerWidth,0);s.columns=a.locked;h.columns=a.normal;h.flex=1;s.viewConfig=t.lockedViewConfig||{};s.viewConfig.loadingUseMsg=false;h.viewConfig=t.normalViewConfig||{};Ext.applyIf(s.viewConfig,t.viewConfig);Ext.applyIf(h.viewConfig,t.viewConfig);t.lockedGrid=Ext.ComponentManager.create(s);g=t.lockedGrid.getView();h.viewConfig.lockingPartner=g;t.normalGrid=Ext.ComponentManager.create(h);u=t.normalGrid.getView();t.view=new Ext.grid.LockingView({locked:t.lockedGrid,normal:t.normalGrid,panel:t});k={scroll:{fn:t.onLockedViewScroll,element:"el",scope:t}};if(!b){k.mousewheel={fn:t.onLockedViewMouseWheel,element:"el",scope:t}}if(t.syncRowHeight){k.refresh=t.onLockedViewRefresh;k.itemupdate=t.onLockedViewItemUpdate;k.scope=t}g.on(k);k={scroll:{fn:t.onNormalViewScroll,element:"el",scope:t},refresh:t.syncRowHeight?t.onNormalViewRefresh:t.updateSpacer,scope:t};u.on(k);e=t.lockedGrid.headerCt;r=t.normalGrid.headerCt;e.lockedCt=true;e.lockableInjected=true;r.lockableInjected=true;e.on({columnshow:t.onLockedHeaderShow,columnhide:t.onLockedHeaderHide,columnmove:t.onLockedHeaderMove,sortchange:t.onLockedHeaderSortChange,columnresize:t.onLockedHeaderResize,scope:t});r.on({columnmove:t.onNormalHeaderMove,sortchange:t.onNormalHeaderSortChange,scope:t});t.modifyHeaderCt();t.items=[t.lockedGrid,t.normalGrid];t.relayHeaderCtEvents(e);t.relayHeaderCtEvents(r);t.layout={type:"hbox",align:"stretch"}},processColumns:function(g){var e=0,a=g.length,b=0,d=[],c=[],h;for(;e<a;++e){h=g[e];if(!h.isComponent){h=Ext.apply({},g[e])}h.processed=true;if(h.locked){if(!h.hidden){b+=h.width||Ext.grid.header.Container.prototype.defaultWidth}d.push(h)}else{c.push(h)}if(!h.headerId){h.headerId=(h.initialConfig||h).id||("L"+(++this.headerCounter))}}return{lockedWidth:b,locked:{items:d,itemId:"lockedHeaderCt",stretchMaxPartner:"^^>>#normalHeaderCt"},normal:{items:c,itemId:"normalHeaderCt",stretchMaxPartner:"^^>>#lockedHeaderCt"}}},onLockedViewMouseWheel:function(i){var d=this,h=-d.scrollDelta,a=h*i.getWheelDeltas().y,b=d.lockedGrid.getView().el.dom,c,g;if(b){c=b.scrollTop!==b.scrollHeight-b.clientHeight;g=b.scrollTop!==0}if((a<0&&g)||(a>0&&c)){i.stopEvent();d.scrolling=true;b.scrollTop+=a;d.normalGrid.getView().el.dom.scrollTop=b.scrollTop;d.scrolling=false;d.onNormalViewScroll()}},onLockedViewScroll:function(){var e=this,d=e.lockedGrid.getView(),c=e.normalGrid.getView(),a,b;if(!e.scrolling){e.scrolling=true;c.el.dom.scrollTop=d.el.dom.scrollTop;if(e.store.buffered){b=d.el.child("table",true);a=c.el.child("table",true);b.style.position="absolute"}e.scrolling=false}},onNormalViewScroll:function(){var e=this,d=e.lockedGrid.getView(),c=e.normalGrid.getView(),a,b;if(!e.scrolling){e.scrolling=true;d.el.dom.scrollTop=c.el.dom.scrollTop;if(e.store.buffered){b=d.el.child("table",true);a=c.el.child("table",true);b.style.position="absolute";b.style.top=a.style.top}e.scrolling=false}},onLockedHeaderMove:function(){if(this.syncRowHeight){this.onNormalViewRefresh()}},onNormalHeaderMove:function(){if(this.syncRowHeight){this.onLockedViewRefresh()}},updateSpacer:function(){var d=this,b=d.lockedGrid.getView().el,c=d.normalGrid.getView().el.dom,a=b.dom.id+"-spacer",e=(c.offsetHeight-c.clientHeight)+"px";d.spacerEl=Ext.getDom(a);if(d.spacerEl){d.spacerEl.style.height=e}else{Ext.core.DomHelper.append(b,{id:a,style:"height: "+e})}},onLockedViewRefresh:function(){if(this.normalGrid.headerCt.getGridColumns().length){var e=this,a=e.lockedGrid.getView(),c=a.el,g=c.query(a.getItemSelector()),d=g.length,b=0;e.lockedHeights=[];for(;b<d;b++){e.lockedHeights[b]=g[b].offsetHeight}e.syncRowHeights();e.updateSpacer()}},onNormalViewRefresh:function(){if(this.lockedGrid.headerCt.getGridColumns().length){var e=this,a=e.normalGrid.getView(),c=a.el,g=c.query(a.getItemSelector()),d=g.length,b=0;e.normalHeights=[];for(;b<d;b++){e.normalHeights[b]=g[b].offsetHeight}e.syncRowHeights();e.updateSpacer()}},onLockedViewItemUpdate:function(a,b,c){if(this.normalGrid.headerCt.getGridColumns().length){this.lockedHeights[b]=c.offsetHeight;this.syncRowHeights()}},onNormalViewItemUpdate:function(a,b,c){if(this.lockedGrid.headerCt.getGridColumns().length){this.normalHeights[b]=c.offsetHeight;this.syncRowHeights()}},syncRowHeights:function(){var j=this,a=j.lockedHeights,k=j.normalHeights,h=a.length,e=0,l,c,d,g,b;if(a.length&&k.length){l=j.lockedGrid.getView();c=j.normalGrid.getView();d=l.el.query(l.getItemSelector());g=c.el.query(c.getItemSelector());for(;e<h;e++){if(!isNaN(a[e])&&!isNaN(k[e])){if(a[e]>k[e]){Ext.fly(g[e]).setHeight(a[e])}else{if(a[e]<k[e]){Ext.fly(d[e]).setHeight(k[e])}}}}b=c.el.dom.scrollTop;c.el.dom.scrollTop=b;l.el.dom.scrollTop=b;j.lockedHeights=[];j.normalHeights=[]}},modifyHeaderCt:function(){var a=this;a.lockedGrid.headerCt.getMenuItems=a.getMenuItems(a.lockedGrid.headerCt.getMenuItems,true);a.normalGrid.headerCt.getMenuItems=a.getMenuItems(a.normalGrid.headerCt.getMenuItems,false)},onUnlockMenuClick:function(){this.unlock()},onLockMenuClick:function(){this.lock()},getMenuItems:function(g,c){var h=this,i=h.unlockText,a=h.lockText,j=Ext.baseCSSPrefix+"hmenu-unlock",b=Ext.baseCSSPrefix+"hmenu-lock",e=Ext.Function.bind(h.onUnlockMenuClick,h),d=Ext.Function.bind(h.onLockMenuClick,h);return function(){var k=g.call(this);k.push("-",{cls:j,text:i,handler:e,disabled:!c});k.push({cls:b,text:a,handler:d,disabled:c});return k}},lock:function(a,d){var c=this,e=c.normalGrid,h=c.lockedGrid,g=e.headerCt,b=h.headerCt;a=a||g.getMenu().activeHeader;if(a.flex){a.width=a.getWidth();delete a.flex}Ext.suspendLayouts();a.ownerCt.remove(a,false);a.locked=true;if(Ext.isDefined(d)){b.insert(d,a)}else{b.add(a)}c.syncLockedSection();Ext.resumeLayouts(true);c.updateSpacer();c.fireEvent("lockcolumn",c,a)},syncLockedSection:function(){var a=this;a.syncLockedWidth();a.lockedGrid.getView().refresh();a.normalGrid.getView().refresh()},syncLockedWidth:function(){var c=this,a=c.lockedGrid,b=a.headerCt.getFullWidth(true);Ext.suspendLayouts();if(b>0){a.setWidth(b);a.show()}else{a.hide()}Ext.resumeLayouts(true);return b>0},onLockedHeaderResize:function(){this.syncLockedWidth()},onLockedHeaderHide:function(){this.syncLockedWidth()},onLockedHeaderShow:function(){this.syncLockedWidth()},onLockedHeaderSortChange:function(b,c,a){if(a){this.normalGrid.headerCt.clearOtherSortStates(null,true)}},onNormalHeaderSortChange:function(b,c,a){if(a){this.lockedGrid.headerCt.clearOtherSortStates(null,true)}},unlock:function(a,e){var d=this,g=d.normalGrid,i=d.lockedGrid,h=g.headerCt,c=i.headerCt,b=false;if(!Ext.isDefined(e)){e=0}a=a||c.getMenu().activeHeader;Ext.suspendLayouts();a.ownerCt.remove(a,false);if(d.syncLockedWidth()){b=true}a.locked=false;h.insert(e,a);d.normalGrid.getView().refresh();if(b){d.lockedGrid.getView().refresh()}Ext.resumeLayouts(true);d.fireEvent("unlockcolumn",d,a)},applyColumnsState:function(h){var p=this,e=p.lockedGrid,g=e.headerCt,n=p.normalGrid.headerCt,q=Ext.Array.toMap(g.items,"headerId"),j=Ext.Array.toMap(n.items,"headerId"),m=[],o=[],l=1,b=h.length,k,a,d,c;for(k=0;k<b;k++){c=h[k];d=q[c.id];a=d||j[c.id];if(a){if(a.applyColumnState){a.applyColumnState(c)}if(a.locked===undefined){a.locked=!!d}if(a.locked){m.push(a);if(!a.hidden&&typeof a.width=="number"){l+=a.width}}else{o.push(a)}}}if(m.length+o.length==g.items.getCount()+n.items.getCount()){g.removeAll(false);n.removeAll(false);g.add(m);n.add(o);e.setWidth(l)}},getColumnsState:function(){var b=this,a=b.lockedGrid.headerCt.getColumnsState(),c=b.normalGrid.headerCt.getColumnsState();return a.concat(c)},reconfigureLockable:function(a,b){var c=this,e=c.lockedGrid,d=c.normalGrid;if(b){Ext.suspendLayouts();e.headerCt.removeAll();d.headerCt.removeAll();b=c.processColumns(b);e.setWidth(b.lockedWidth);e.headerCt.add(b.locked.items);d.headerCt.add(b.normal.items);Ext.resumeLayouts(true)}if(a){a=Ext.data.StoreManager.lookup(a);c.store=a;e.bindStore(a);d.bindStore(a)}else{e.getView().refresh();d.getView().refresh()}},cloneFeatures:function(){var e=this,d=e.features,c,b=0,a;if(d){a=d.length;for(;b<a;b++){c=d[b];if(c.isFeature){d[b]=c.clone()}}}},clonePlugins:function(){var e=this,b=e.plugins,d,c=0,a;if(b){a=b.length;for(;c<a;c++){d=b[c];if(typeof d.init==="function"){b[c]=d.clone()}}}}},function(){this.borrow(Ext.view.Table,["constructFeatures"]);this.borrow(Ext.AbstractComponent,["constructPlugins","constructPlugin"])});Ext.define("Ext.grid.PagingScroller",{percentageFromEdge:0.35,numFromEdge:2,trailingBufferZone:5,leadingBufferZone:15,scrollToLoadBuffer:200,viewSize:0,rowHeight:21,tableStart:0,tableEnd:0,constructor:function(a){var b=this;b.variableRowHeight=a.variableRowHeight;b.bindView(a.view);Ext.apply(b,a);b.callParent(arguments)},bindView:function(b){var g=this,d={scroll:{fn:g.onViewScroll,element:"el",scope:g},render:g.onViewRender,resize:g.onViewResize,boxready:{fn:g.onViewResize,scope:g,single:true},beforerefresh:g.beforeViewRefresh,refresh:g.onViewRefresh,scope:g},a={guaranteedrange:g.onGuaranteedRange,scope:g},c={reconfigure:g.onGridReconfigure,scope:g},e;if(g.view){if(g.view.el){g.view.el.un("scroll",g.onViewScroll,g)}e=b.lockingPartner;if(e){e.un("refresh",g.onLockRefresh,g)}g.view.un(d);g.store.un(a);if(g.grid){g.grid.un(c)}delete g.view.refreshSize}g.view=b;g.grid=g.view.up("tablepanel");g.store=b.store;if(b.rendered){g.viewSize=g.store.viewSize=Math.ceil(b.getHeight()/g.rowHeight)+g.trailingBufferZone+(g.numFromEdge*2)+g.leadingBufferZone}e=b.lockingPartner;if(e){e.on("refresh",g.onLockRefresh,g)}g.view.mon(g.store.pageMap,{scope:g,clear:g.onCacheClear});g.view.refreshSize=Ext.Function.createInterceptor(g.view.refreshSize,g.beforeViewrefreshSize,g);g.position=0;if(g.grid){g.grid.on(c)}else{g.view.on({added:function(){g.grid=g.view.up("tablepanel");g.grid.on(c)},single:true})}g.view.on(g.viewListeners=d);g.store.on(a)},onCacheClear:function(){var a=this;if(a.view.rendered&&!a.store.isDestroyed){a.ignoreNextScrollEvent=a.view.el.dom.scrollTop!==0;a.view.el.dom.scrollTop=0;delete a.lastScrollDirection;delete a.scrollOffset;delete a.scrollProportion}},onGridReconfigure:function(a){this.bindView(a.view)},onViewRender:function(){var d=this,a=d.view,c=d.view.el,b;d.stretcher=d.createStretcher(a);a=a.lockingPartner;if(a){b=d.stretcher;d.stretcher=new Ext.CompositeElement(b);d.stretcher.add(d.createStretcher(a))}},createStretcher:function(a){var b=a.el;b.setStyle("position","relative");return b.createChild({style:{position:"absolute",width:"1px",height:0,top:0,left:0}},b.dom.firstChild)},onViewResize:function(b,d,a){var e=this,c;c=Math.ceil(a/e.rowHeight)+e.trailingBufferZone+(e.numFromEdge*2)+e.leadingBufferZone;if(c>e.viewSize){e.viewSize=e.store.viewSize=c;e.handleViewScroll(e.lastScrollDirection||1)}},beforeViewRefresh:function(){var b=this,a=b.view,c,d;b.focusOnRefresh=Ext.Element.getActiveElement===a.el.dom;if(b.variableRowHeight){d=b.lastScrollDirection;b.commonRecordIndex=undefined;if(d&&(b.previousStart!==undefined)&&(b.scrollProportion===undefined)&&(c=a.getNodes()).length){if(d===1){if(b.tableStart<=b.previousEnd){b.commonRecordIndex=c.length-1}}else{if(d===-1){if(b.tableEnd>=b.previousStart){b.commonRecordIndex=0}}}b.scrollOffset=-a.el.getOffsetsTo(c[b.commonRecordIndex])[1];b.commonRecordIndex-=(b.tableStart-b.previousStart)}else{b.scrollOffset=undefined}}},onLockRefresh:function(a){a.table.dom.style.position="absolute"},onViewRefresh:function(){var d=this,g=d.store,c,e=d.view,j=e.el,k=j.dom,m,i,b,l=e.table.dom,h,a;if(d.focusOnRefresh){j.focus();d.focusOnRefresh=false}d.disabled=true;if(g.getCount()===g.getTotalCount()||(g.isFiltered()&&!g.remoteFilter)){d.stretcher.setHeight(0);d.position=k.scrollTop=0;d.setTablePosition("absolute");return}d.stretcher.setHeight(c=d.getScrollHeight());a=k.scrollTop;d.isScrollRefresh=(a>0);if(d.scrollProportion!==undefined){d.setTablePosition("absolute");d.setTableTop((d.scrollProportion?(c*d.scrollProportion)-(l.offsetHeight*d.scrollProportion):0)+"px")}else{d.setTablePosition("absolute");d.setTableTop((h=(d.tableStart||0)*d.rowHeight)+"px");if(d.scrollOffset){m=e.getNodes();i=-j.getOffsetsTo(m[d.commonRecordIndex])[1];b=i-d.scrollOffset;d.position=(k.scrollTop+=b)}else{if((h>a)||((h+l.offsetHeight)<a+k.clientHeight)){d.lastScrollDirection=-1;d.position=k.scrollTop=h}}}d.disabled=false},setTablePosition:function(a){this.setViewTableStyle(this.view,"position",a)},setTableTop:function(a){this.setViewTableStyle(this.view,"top",a)},setViewTableStyle:function(a,c,b){a.el.child("table",true).style[c]=b;a=a.lockingPartner;if(a){a.el.child("table",true).style[c]=b}},beforeViewrefreshSize:function(){if(this.isScrollRefresh){this.view.table.attach(this.view.el.child("table",true));return(this.isScrollRefresh=false)}},onGuaranteedRange:function(b,e,a){var c=this,d=c.store;if(b.length&&c.visibleStart<b[0].index){return}c.previousStart=c.tableStart;c.previousEnd=c.tableEnd;c.tableStart=e;c.tableEnd=a;d.loadRecords(b,{start:e})},onViewScroll:function(g,c){var d=this,a=d.view,b=d.position;d.position=a.el.dom.scrollTop;if(d.ignoreNextScrollEvent){d.ignoreNextScrollEvent=false;return}if(!d.disabled){d.lastScrollDirection=d.position>b?1:-1;if(b!==d.position){d.handleViewScroll(d.lastScrollDirection)}}},handleViewScroll:function(i){var e=this,k=e.store,h=e.view,g=e.viewSize,l=k.getTotalCount(),d=l-g,c=e.getFirstVisibleRowIndex(),j=e.getLastVisibleRowIndex(),a=h.el.dom,b,m;if(l>=g){e.scrollProportion=undefined;if(i==-1){if(e.tableStart){if(c!==undefined){if(c<(e.tableStart+e.numFromEdge)){b=Math.max(0,j+e.trailingBufferZone-g)}}else{e.scrollProportion=a.scrollTop/(a.scrollHeight-a.clientHeight);b=Math.max(0,l*e.scrollProportion-(g/2)-e.numFromEdge-((e.leadingBufferZone+e.trailingBufferZone)/2))}}}else{if(c!==undefined){if(j>(e.tableEnd-e.numFromEdge)){b=Math.max(0,c-e.trailingBufferZone)}}else{e.scrollProportion=a.scrollTop/(a.scrollHeight-a.clientHeight);b=l*e.scrollProportion-(g/2)-e.numFromEdge-((e.leadingBufferZone+e.trailingBufferZone)/2)}}if(b!==undefined){if(b>d){b=d&~1;m=l-1}else{b=b&~1;m=b+g-1}if(k.rangeCached(b,m)){e.cancelLoad();k.guaranteeRange(b,m)}else{e.attemptLoad(b,m)}}}},getFirstVisibleRowIndex:function(){var d=this,a=d.view,h=a.el.dom.scrollTop,e,c,b,g;if(d.variableRowHeight){e=a.getNodes();c=e.length;if(!c){return}g=Ext.fly(e[0]).getOffsetsTo(a.el)[1];for(b=0;b<c;b++){g+=e[b].offsetHeight;if(g>a.el.dom.clientHeight){return}if(g>0){return a.getRecord(e[b]).index}}}else{return Math.floor(h/d.rowHeight)}},getLastVisibleRowIndex:function(){var h=this,c=h.store,a=h.view,b=a.el.dom.clientHeight,j,g,e,d;if(h.variableRowHeight){j=a.getNodes();if(!j.length){return}g=c.getCount()-1;d=Ext.fly(j[g]).getOffsetsTo(a.el)[1]+j[g].offsetHeight;for(e=g;e>=0;e--){d-=j[e].offsetHeight;if(d<0){return}if(d<b){return a.getRecord(j[e]).index}}}else{return h.getFirstVisibleRowIndex()+Math.ceil(b/h.rowHeight)+1}},getScrollHeight:function(){var e=this,a=e.view,d,h,b=e.store,g=0,c=!e.hasOwnProperty("rowHeight");if(e.variableRowHeight){d=e.view.table.dom;if(c){e.initialTableHeight=d.offsetHeight;e.rowHeight=e.initialTableHeight/e.store.getCount()}else{g=d.offsetHeight-e.initialTableHeight;if(b.getCount()>e.viewSize){g-=e.rowHeight}}}else{if(c){h=a.el.down(a.getItemSelector());if(h){e.rowHeight=h.getHeight(false,true)}}}return Math.floor(b.getTotalCount()*e.rowHeight)+g},attemptLoad:function(c,a){var b=this;if(b.scrollToLoadBuffer){if(!b.loadTask){b.loadTask=new Ext.util.DelayedTask(b.doAttemptLoad,b,[])}b.loadTask.delay(b.scrollToLoadBuffer,b.doAttemptLoad,b,[c,a])}else{b.store.guaranteeRange(c,a)}},cancelLoad:function(){if(this.loadTask){this.loadTask.cancel()}},doAttemptLoad:function(b,a){this.store.guaranteeRange(b,a)},destroy:function(){var b=this,a=b.viewListeners.scroll;b.store.un({guaranteedrange:b.onGuaranteedRange,scope:b});b.view.un(b.viewListeners);if(b.view.rendered){b.stretcher.remove();b.view.el.un("scroll",a.fn,a.scope)}}});Ext.define("Ext.layout.container.Fit",{extend:"Ext.layout.container.Container",alternateClassName:"Ext.layout.FitLayout",alias:"layout.fit",itemCls:Ext.baseCSSPrefix+"fit-item",targetCls:Ext.baseCSSPrefix+"layout-fit",type:"fit",defaultMargins:{top:0,right:0,bottom:0,left:0},manageMargins:true,sizePolicies:{0:{setsWidth:0,setsHeight:0},1:{setsWidth:1,setsHeight:0},2:{setsWidth:0,setsHeight:1},3:{setsWidth:1,setsHeight:1}},getItemSizePolicy:function(b,c){var a=c||this.owner.getSizeModel(),d=(a.width.shrinkWrap?0:1)|(a.height.shrinkWrap?0:2);return this.sizePolicies[d]},beginLayoutCycle:function(k,g){var t=this,u=t.lastHeightModel&&t.lastHeightModel.calculated,h=t.lastWidthModel&&t.lastWidthModel.calculated,o=h||u,l=0,m=0,s,b,p,r,e,a,j,n,q,d;t.callParent(arguments);if(o&&k.targetContext.el.dom.tagName.toUpperCase()!="TD"){o=h=u=false}b=k.childItems;e=b.length;for(p=0;p<e;++p){r=b[p];if(g){s=r.target;j=s.minHeight;n=s.minWidth;if(n||j){a=r.marginInfo||r.getMarginInfo();j+=a.height;n+=a.height;if(l<j){l=j}if(m<n){m=n}}}if(o){q=r.el.dom.style;if(u){q.height=""}if(h){q.width=""}}}if(g){k.maxChildMinHeight=l;k.maxChildMinWidth=m}s=k.target;k.overflowX=(!k.widthModel.shrinkWrap&&k.maxChildMinWidth&&(s.autoScroll||s.overflowX))||d;k.overflowY=(!k.heightModel.shrinkWrap&&k.maxChildMinHeight&&(s.autoScroll||s.overflowY))||d},calculate:function(g){var o=this,l=g.childItems,d=l.length,c=o.getContainerSize(g),e={length:d,ownerContext:g,targetSize:c},r=g.widthModel.shrinkWrap,m=g.heightModel.shrinkWrap,k=g.overflowX,h=g.overflowY,n,b,p,j,a,q;if(k||h){n=o.getScrollbarsNeeded(k&&c.width,h&&c.height,g.maxChildMinWidth,g.maxChildMinHeight);if(n){b=Ext.getScrollbarSize();if(n&1){c.height-=b.height}if(n&2){c.width-=b.width}}}for(j=0;j<d;++j){e.index=j;o.fitItem(l[j],e)}if(m||r){p=g.targetContext.getPaddingInfo();if(r){if(h&&!c.gotHeight){o.done=false}else{a=e.contentWidth+p.width;if(n&2){a+=b.width}if(!g.setContentWidth(a)){o.done=false}}}if(m){if(k&&!c.gotWidth){o.done=false}else{q=e.contentHeight+p.height;if(n&1){q+=b.height}if(!g.setContentHeight(q)){o.done=false}}}}},fitItem:function(b,c){var a=this;if(b.invalid){a.done=false;return}c.margins=b.getMarginInfo();c.needed=c.got=0;a.fitItemWidth(b,c);a.fitItemHeight(b,c);if(c.got!=c.needed){a.done=false}},fitItemWidth:function(c,d){var a,b;if(d.ownerContext.widthModel.shrinkWrap){b=c.getProp("width")+d.margins.width;a=d.contentWidth;if(a===undefined){d.contentWidth=b}else{d.contentWidth=Math.max(a,b)}}else{if(c.widthModel.calculated){++d.needed;if(d.targetSize.gotWidth){++d.got;this.setItemWidth(c,d)}}}this.positionItemX(c,d)},fitItemHeight:function(c,d){var b,a;if(d.ownerContext.heightModel.shrinkWrap){a=c.getProp("height")+d.margins.height;b=d.contentHeight;if(b===undefined){d.contentHeight=a}else{d.contentHeight=Math.max(b,a)}}else{if(c.heightModel.calculated){++d.needed;if(d.targetSize.gotHeight){++d.got;this.setItemHeight(c,d)}}}this.positionItemY(c,d)},positionItemX:function(a,c){var b=c.margins;if(c.index||b.left){a.setProp("x",b.left)}if(b.width){a.setProp("margin-right",b.width)}},positionItemY:function(a,c){var b=c.margins;if(c.index||b.top){a.setProp("y",b.top)}if(b.height){a.setProp("margin-bottom",b.height)}},setItemHeight:function(a,b){a.setHeight(b.targetSize.height-b.margins.height)},setItemWidth:function(a,b){a.setWidth(b.targetSize.width-b.margins.width)}});Ext.define("Ext.panel.Table",{extend:"Ext.panel.Panel",alias:"widget.tablepanel",uses:["Ext.selection.RowModel","Ext.selection.CellModel","Ext.selection.CheckboxModel","Ext.grid.PagingScroller","Ext.grid.header.Container","Ext.grid.Lockable"],extraBaseCls:Ext.baseCSSPrefix+"grid",extraBodyCls:Ext.baseCSSPrefix+"grid-body",layout:"fit",hasView:false,viewType:null,selType:"rowmodel",scroll:true,deferRowRender:true,sortableColumns:true,enableLocking:false,scrollerOwner:true,enableColumnMove:true,sealedColumns:false,enableColumnResize:true,enableColumnHide:true,rowLines:true,initComponent:function(){var h=this,k=h.scroll,b=false,a=false,g=h.columns||h.colModel,j,c=h.border,d,e;if(h.columnLines){h.addCls(Ext.baseCSSPrefix+"grid-with-col-lines")}if(h.rowLines){h.addCls(Ext.baseCSSPrefix+"grid-with-row-lines")}h.store=Ext.data.StoreManager.lookup(h.store||"ext-empty-store");if(g instanceof Ext.grid.header.Container){h.headerCt=g;h.headerCt.border=c;h.columns=h.headerCt.items.items}else{if(Ext.isArray(g)){g={items:g,border:c}}Ext.apply(g,{forceFit:h.forceFit,sortable:h.sortableColumns,enableColumnMove:h.enableColumnMove,enableColumnResize:h.enableColumnResize,enableColumnHide:h.enableColumnHide,border:c,sealed:h.sealedColumns});h.columns=g.items;if(h.enableLocking||Ext.ComponentQuery.query("{locked !== undefined}{processed != true}",h.columns).length){h.self.mixin("lockable",Ext.grid.Lockable);h.injectLockable()}}h.scrollTask=new Ext.util.DelayedTask(h.syncHorizontalScroll,h);h.addEvents("reconfigure","viewready");h.bodyCls=h.bodyCls||"";h.bodyCls+=(" "+h.extraBodyCls);h.cls=h.cls||"";h.cls+=(" "+h.extraBaseCls);delete h.autoScroll;if(!h.hasView){if(!h.headerCt){h.headerCt=new Ext.grid.header.Container(g)}h.columns=h.headerCt.items.items;if(h.store.buffered&&!h.store.remoteSort){for(d=0,e=h.columns.length;d<e;d++){h.columns[d].sortable=false}}if(h.hideHeaders){h.headerCt.height=0;h.headerCt.addCls(Ext.baseCSSPrefix+"grid-header-ct-hidden");h.addCls(Ext.baseCSSPrefix+"grid-header-hidden");if(Ext.isIEQuirks){h.headerCt.style={display:"none"}}}if(k===true||k==="both"){b=a=true}else{if(k==="horizontal"){a=true}else{if(k==="vertical"){b=true}}}h.relayHeaderCtEvents(h.headerCt);h.features=h.features||[];if(!Ext.isArray(h.features)){h.features=[h.features]}h.dockedItems=[].concat(h.dockedItems||[]);h.dockedItems.unshift(h.headerCt);h.viewConfig=h.viewConfig||{};if(h.store&&h.store.buffered){h.viewConfig.preserveScrollOnRefresh=true}else{if(h.invalidateScrollerOnRefresh!==undefined){h.viewConfig.preserveScrollOnRefresh=!h.invalidateScrollerOnRefresh}}j=h.getView();h.items=[j];h.hasView=true;if(b){if(h.store.buffered){h.verticalScroller=new Ext.grid.PagingScroller(Ext.apply({panel:h,store:h.store,view:h.view},h.verticalScroller))}}if(a){if(!h.hideHeaders){j.on({scroll:{fn:h.onHorizontalScroll,element:"el",scope:h}})}}h.mon(j.store,{load:h.onStoreLoad,scope:h});h.mon(j,{viewready:h.onViewReady,refresh:h.onRestoreHorzScroll,scope:h})}this.relayEvents(h.view,["beforeitemmousedown","beforeitemmouseup","beforeitemmouseenter","beforeitemmouseleave","beforeitemclick","beforeitemdblclick","beforeitemcontextmenu","itemmousedown","itemmouseup","itemmouseenter","itemmouseleave","itemclick","itemdblclick","itemcontextmenu","beforecontainermousedown","beforecontainermouseup","beforecontainermouseover","beforecontainermouseout","beforecontainerclick","beforecontainerdblclick","beforecontainercontextmenu","containermouseup","containermouseover","containermouseout","containerclick","containerdblclick","containercontextmenu","selectionchange","beforeselect","select","beforedeselect","deselect"]);h.callParent(arguments);h.addStateEvents(["columnresize","columnmove","columnhide","columnshow","sortchange"]);if(h.headerCt){h.headerCt.on("afterlayout",h.onRestoreHorzScroll,h)}},relayHeaderCtEvents:function(a){this.relayEvents(a,["columnresize","columnmove","columnhide","columnshow","sortchange"])},getState:function(){var a=this,b=a.callParent(),c=a.store.sorters.first();b=a.addPropertyToState(b,"columns",(a.headerCt||a).getColumnsState());if(c){b=a.addPropertyToState(b,"sort",{property:c.property,direction:c.direction,root:c.root})}return b},applyState:function(d){var c=this,e=d.sort,a=c.store,b=d.columns;delete d.columns;c.callParent(arguments);if(b){(c.headerCt||c).applyColumnsState(b)}if(e){if(a.remoteSort){a.sort({property:e.property,direction:e.direction,root:e.root},null,false)}else{a.sort(e.property,e.direction)}}},getStore:function(){return this.store},getView:function(){var a=this,b;if(!a.view){b=a.getSelectionModel();a.view=Ext.widget(Ext.apply({},a.viewConfig,{grid:a,deferInitialRefresh:a.deferRowRender!==false,scroll:a.scroll,xtype:a.viewType,store:a.store,headerCt:a.headerCt,selModel:b,features:a.features,panel:a,emptyText:a.emptyText?'<div class="'+Ext.baseCSSPrefix+'grid-empty">'+a.emptyText+"</div>":""}));a.view.getComponentLayout().headerCt=a.headerCt;a.mon(a.view,{uievent:a.processEvent,scope:a});b.view=a.view;a.headerCt.view=a.view;a.relayEvents(a.view,["cellclick","celldblclick"])}return a.view},setAutoScroll:Ext.emptyFn,processEvent:function(g,b,a,c,d,i){var h=this,j;if(d!==-1){j=h.headerCt.getGridColumns()[d];return j.processEvent.apply(j,arguments)}},determineScrollbars:function(){},invalidateScroller:function(){},scrollByDeltaY:function(b,a){this.getView().scrollBy(0,b,a)},scrollByDeltaX:function(b,a){this.getView().scrollBy(b,0,a)},afterCollapse:function(){var a=this;a.saveScrollPos();a.saveScrollPos();a.callParent(arguments)},afterExpand:function(){var a=this;a.callParent(arguments);a.restoreScrollPos();a.restoreScrollPos()},saveScrollPos:Ext.emptyFn,restoreScrollPos:Ext.emptyFn,onHeaderResize:function(){this.delayScroll()},onHeaderMove:function(e,g,a,b,d){var c=this;if(c.optimizedColumnMove===false){c.view.refresh()}else{c.view.moveColumn(b,d,a)}c.delayScroll()},onHeaderHide:function(a,b){this.delayScroll()},onHeaderShow:function(a,b){this.delayScroll()},delayScroll:function(){var a=this.getScrollTarget().el;if(a){this.scrollTask.delay(10,null,null,[a.dom.scrollLeft])}},onViewReady:function(){this.fireEvent("viewready",this)},onRestoreHorzScroll:function(){var a=this.scrollLeftPos;if(a){this.syncHorizontalScroll(a,true)}},getScrollerOwner:function(){var a=this;if(!this.scrollerOwner){a=this.up("[scrollerOwner]")}return a},getLhsMarker:function(){var a=this;return a.lhsMarker||(a.lhsMarker=Ext.DomHelper.append(a.el,{cls:Ext.baseCSSPrefix+"grid-resize-marker"},true))},getRhsMarker:function(){var a=this;return a.rhsMarker||(a.rhsMarker=Ext.DomHelper.append(a.el,{cls:Ext.baseCSSPrefix+"grid-resize-marker"},true))},getSelectionModel:function(){if(!this.selModel){this.selModel={}}var b="SINGLE",a;if(this.simpleSelect){b="SIMPLE"}else{if(this.multiSelect){b="MULTI"}}Ext.applyIf(this.selModel,{allowDeselect:this.allowDeselect,mode:b});if(!this.selModel.events){a=this.selModel.selType||this.selType;this.selModel=Ext.create("selection."+a,this.selModel)}if(!this.selModel.hasRelaySetup){this.relayEvents(this.selModel,["selectionchange","beforeselect","beforedeselect","select","deselect"]);this.selModel.hasRelaySetup=true}if(this.disableSelection){this.selModel.locked=true}return this.selModel},getScrollTarget:function(){var a=this.getScrollerOwner(),b=a.query("tableview");return b[1]||b[0]},onHorizontalScroll:function(a,b){this.syncHorizontalScroll(b.scrollLeft)},syncHorizontalScroll:function(d,b){var c=this,a;b=b===true;if(c.rendered&&(b||d!==c.scrollLeftPos)){if(b){a=c.getScrollTarget();a.el.dom.scrollLeft=d}c.headerCt.el.dom.scrollLeft=d;c.scrollLeftPos=d}},onStoreLoad:Ext.emptyFn,getEditorParent:function(){return this.body},bindStore:function(a){var b=this;b.store=a;b.getView().bindStore(a)},beforeDestroy:function(){Ext.destroy(this.verticalScroller);this.callParent()},reconfigure:function(a,b){var c=this,d=c.headerCt;if(c.lockable){c.reconfigureLockable(a,b)}else{Ext.suspendLayouts();if(b){delete c.scrollLeftPos;d.removeAll();d.add(b)}if(a){a=Ext.StoreManager.lookup(a);c.bindStore(a)}else{c.getView().refresh()}d.setSortState();Ext.resumeLayouts(true)}c.fireEvent("reconfigure",c,a,b)}});Ext.define("Ext.grid.View",{extend:"Ext.view.Table",alias:"widget.gridview",stripeRows:true,autoScroll:true});Ext.define("Ext.grid.Panel",{extend:"Ext.panel.Table",requires:["Ext.grid.View"],alias:["widget.gridpanel","widget.grid"],alternateClassName:["Ext.list.ListView","Ext.ListView","Ext.grid.GridPanel"],viewType:"gridview",lockable:false,bothCfgCopy:["invalidateScrollerOnRefresh","hideHeaders","enableColumnHide","enableColumnMove","enableColumnResize","sortableColumns"],normalCfgCopy:["verticalScroller","verticalScrollDock","verticalScrollerType","scroll"],lockedCfgCopy:[],rowLines:true});Ext.define("Ext.grid.RowEditor",{extend:"Ext.form.Panel",requires:["Ext.tip.ToolTip","Ext.util.HashMap","Ext.util.KeyNav"],saveBtnText:"Update",cancelBtnText:"Cancel",errorsText:"Errors",dirtyText:"You need to commit or cancel your changes",lastScrollLeft:0,lastScrollTop:0,border:false,hideMode:"offsets",initComponent:function(){var b=this,a;b.cls=Ext.baseCSSPrefix+"grid-row-editor";b.layout={type:"hbox",align:"middle"};b.columns=new Ext.util.HashMap();b.columns.getKey=function(d){var c;if(d.getEditor){c=d.getEditor();if(c){return c.id}}return d.id};b.mon(b.columns,{add:b.onFieldAdd,remove:b.onFieldRemove,replace:b.onFieldReplace,scope:b});b.callParent(arguments);if(b.fields){b.setField(b.fields);delete b.fields}b.mon(Ext.container.Container.hierarchyEventSource,{scope:b,show:b.repositionIfVisible});a=b.getForm();a.trackResetOnLoad=true},onFieldChange:function(){var c=this,b=c.getForm(),a=b.isValid();if(c.errorSummary&&c.isVisible()){c[a?"hideToolTip":"showToolTip"]()}c.updateButton(a);c.isValid=a},updateButton:function(b){var a=this.floatingButtons;if(a){a.child("#update").setDisabled(!b)}},afterRender:function(){var b=this,a=b.editingPlugin;b.callParent(arguments);b.mon(b.renderTo,"scroll",b.onCtScroll,b,{buffer:100});b.mon(b.el,{click:Ext.emptyFn,stopPropagation:true});b.el.swallowEvent(["keypress","keydown"]);b.keyNav=new Ext.util.KeyNav(b.el,{enter:a.completeEdit,esc:a.onEscKey,scope:a});b.mon(a.view,{beforerefresh:b.onBeforeViewRefresh,refresh:b.onViewRefresh,itemremove:b.onViewItemRemove,scope:b})},onBeforeViewRefresh:function(b){var c=this,a=b.el.dom;if(c.el.dom.parentNode===a){a.removeChild(c.el.dom)}},onViewRefresh:function(c){var e=this,b=c.el.dom,d=e.context,a;b.appendChild(e.el.dom);if(d&&(a=d.store.indexOf(d.record))>=0){d.row=c.getNode(a);e.reposition();if(e.tooltip&&e.tooltip.isVisible()){e.tooltip.setTarget(d.row)}}else{e.editingPlugin.cancelEdit()}},onViewItemRemove:function(a,b){var c=this.context;if(c&&a===c.record){this.editingPlugin.cancelEdit()}},onCtScroll:function(d,c){var a=this,b=c.scrollTop,g=c.scrollLeft;if(b!==a.lastScrollTop){a.lastScrollTop=b;if((a.tooltip&&a.tooltip.isVisible())||a.hiddenTip){a.repositionTip()}}if(g!==a.lastScrollLeft){a.lastScrollLeft=g;a.reposition()}},onColumnAdd:function(a){if(!a.isGroupHeader){this.setField(a)}},onColumnRemove:function(a){this.columns.remove(a)},onColumnResize:function(b,a){if(!b.isGroupHeader){b.getEditor().setWidth(a-2);this.repositionIfVisible()}},onColumnHide:function(a){if(!a.isGroupHeader){a.getEditor().hide();this.repositionIfVisible()}},onColumnShow:function(a){var b=a.getEditor();b.setWidth(a.getWidth()-2).show();this.repositionIfVisible()},onColumnMove:function(b,a,c){if(!b.isGroupHeader){var d=b.getEditor();if(this.items.indexOf(d)!=c){this.move(a,c)}}},onFieldAdd:function(e,a,b){var c=this,g,d;if(!b.isGroupHeader){g=c.editingPlugin.grid.headerCt.getHeaderIndex(b);d=b.getEditor({xtype:"displayfield"});c.insert(g,d)}},onFieldRemove:function(g,a,b){var c=this,e,d;if(!b.isGroupHeader){e=b.getEditor();d=e.el;c.remove(e,false);if(d){d.remove()}}},onFieldReplace:function(d,a,c,b){this.onFieldRemove(d,a,b)},clearFields:function(){var b=this.columns,a;for(a in b){if(b.hasOwnProperty(a)){b.removeAtKey(a)}}},getFloatingButtons:function(){var e=this,g=Ext.baseCSSPrefix,d=g+"grid-row-editor-buttons",c=e.editingPlugin,a=Ext.panel.Panel.prototype.minButtonWidth,b;if(!e.floatingButtons){b=e.floatingButtons=new Ext.Container({renderTpl:['<div class="{baseCls}-ml"></div>','<div class="{baseCls}-mr"></div>','<div class="{baseCls}-bl"></div>','<div class="{baseCls}-br"></div>','<div class="{baseCls}-bc"></div>',"{%this.renderContainer(out,values)%}"],width:200,renderTo:e.el,baseCls:d,layout:{type:"hbox",align:"middle"},defaults:{flex:1,margins:"0 1 0 1"},items:[{itemId:"update",xtype:"button",handler:c.completeEdit,scope:c,text:e.saveBtnText,minWidth:a},{xtype:"button",handler:c.cancelEdit,scope:c,text:e.cancelBtnText,minWidth:a}]});e.mon(b.el,{mousedown:Ext.emptyFn,click:Ext.emptyFn,stopEvent:true})}return e.floatingButtons},repositionIfVisible:function(d){var b=this,a=b.view;if(d&&(d==b||!a.isDescendantOf(d))){return}if(b.isVisible()&&a.isVisible(true)){b.reposition()}},reposition:function(r){var s=this,c=s.context,e=c&&Ext.get(c.row),p=s.getFloatingButtons(),q=p.el,a=s.editingPlugin.grid,g=a.view.el,o=a.headerCt.getFullWidth(),t=a.getWidth(),l=Math.min(o,t),n=a.view.el.dom.scrollLeft,i=p.getWidth(),d=(l-i)/2+n,j,h,m,k=function(){q.scrollIntoView(g,false);if(r&&r.callback){r.callback.call(r.scope||s)}},b;if(e&&Ext.isElement(e.dom)){e.scrollIntoView(g,false);j=e.getXY()[1]-5;h=e.getHeight();m=h+(s.editingPlugin.grid.rowLines?9:10);if(s.getHeight()!=m){s.setHeight(m);s.el.setLeft(0)}if(r){b={to:{y:j},duration:r.duration||125,listeners:{afteranimate:function(){k();j=e.getXY()[1]-5}}};s.el.animate(b)}else{s.el.setY(j);k()}}if(s.getWidth()!=o){s.setWidth(o)}q.setLeft(d)},getEditor:function(a){var b=this;if(Ext.isNumber(a)){return b.query(">[isFormField]")[a]}else{if(a.isHeader&&!a.isGroupHeader){return a.getEditor()}}},removeField:function(b){var a=this;b=a.getEditor(b);a.mun(b,"validitychange",a.onValidityChange,a);a.columns.removeAtKey(b.id);Ext.destroy(b)},setField:function(b){var d=this,a,c,e;if(Ext.isArray(b)){c=b.length;for(a=0;a<c;a++){d.setField(b[a])}return}e=b.getEditor(null,{xtype:"displayfield",getModelData:function(){return null}});e.margins="0 0 0 2";d.mon(e,"change",d.onFieldChange,d);if(d.isVisible()&&d.context){if(e.is("displayfield")){d.renderColumnData(e,d.context.record,b)}else{e.suspendEvents();e.setValue(d.context.record.get(b.dataIndex));e.resumeEvents()}}d.columns.add(e.id,b);if(b.hidden){d.onColumnHide(b)}else{if(b.rendered){d.onColumnShow(b)}}},loadRecord:function(d){var j=this,a=j.getForm(),e=a.getFields(),h=e.items,b=h.length,c,g,k;for(c=0;c<b;c++){h[c].suspendEvents()}a.loadRecord(d);for(c=0;c<b;c++){h[c].resumeEvents()}k=a.isValid();if(j.errorSummary){if(k){j.hideToolTip()}else{j.showToolTip()}}j.updateButton(k);g=j.query(">displayfield");b=g.length;for(c=0;c<b;c++){j.renderColumnData(g[c],d)}},renderColumnData:function(m,i,c){var k=this,a=k.editingPlugin.grid,e=a.headerCt,l=a.view,o=l.store,g=c||k.columns.get(m.id),n=i.get(g.dataIndex),j=g.editRenderer||g.renderer,b,d,h;if(j){b={tdCls:"",style:""};d=o.indexOf(i);h=e.getHeaderIndex(g);n=j.call(g.scope||e.ownerCt,n,b,i,d,h,o,l)}m.setRawValue(n);m.resetOriginalValue()},beforeEdit:function(){var a=this;if(a.isVisible()&&a.errorSummary&&!a.autoCancel&&a.isDirty()){a.showToolTip();return false}},startEdit:function(a,g){var e=this,d=e.editingPlugin.grid,b=d.store,c=e.context=Ext.apply(e.editingPlugin.context,{view:d.getView(),store:b});c.grid.getSelectionModel().select(a);e.loadRecord(a);if(!e.isVisible()){e.show();e.focusContextCell()}else{e.reposition({callback:this.focusContextCell})}},focusContextCell:function(){var a=this.getEditor(this.context.colIdx);if(a&&a.focus){a.focus()}},cancelEdit:function(){var g=this,e=g.getForm(),a=e.getFields(),b=a.items,d=b.length,c;g.hide();e.clearInvalid();for(c=0;c<d;c++){b[c].suspendEvents()}e.reset();for(c=0;c<d;c++){b[c].resumeEvents()}},completeEdit:function(){var b=this,a=b.getForm();if(!a.isValid()){return}a.updateRecord(b.context.record);b.hide();return true},onShow:function(){this.callParent(arguments);this.reposition()},onHide:function(){var a=this;a.callParent(arguments);if(a.tooltip){a.hideToolTip()}if(a.context){a.context.view.focus();a.context=null}},isDirty:function(){var b=this,a=b.getForm();return a.isDirty()},getToolTip:function(){return this.tooltip||(this.tooltip=new Ext.tip.ToolTip({cls:Ext.baseCSSPrefix+"grid-row-editor-errors",title:this.errorsText,autoHide:false,closable:true,closeAction:"disable",anchor:"left"}))},hideToolTip:function(){var a=this,b=a.getToolTip();if(b.rendered){b.disable()}a.hiddenTip=false},showToolTip:function(){var c=this,d=c.getToolTip(),a=c.context,e=Ext.get(a.row),b=a.grid.view.el;d.setTarget(e);d.showAt([-10000,-10000]);d.update(c.getErrors());d.mouseOffset=[b.getWidth()-e.getWidth()+c.lastScrollLeft+15,0];c.repositionTip();d.doLayout();d.enable()},repositionTip:function(){var i=this,j=i.getToolTip(),c=i.context,l=Ext.get(c.row),k=c.grid.view.el,e=k.getHeight(),g=i.lastScrollTop,h=g+e,b=l.getHeight(),a=l.dom.offsetTop,d=a+b;if(d>g&&a<h){j.show();i.hiddenTip=false}else{j.hide();i.hiddenTip=true}},getErrors:function(){var d=this,e=!d.autoCancel&&d.isDirty()?d.dirtyText+"<br />":"",h=[],a=d.query(">[isFormField]"),c=a.length,b;function g(i){return"<li>"+i+"</li>"}for(b=0;b<c;b++){h=h.concat(Ext.Array.map(a[b].getErrors(),g))}return e+"<ul>"+h.join("")+"</ul>"},beforeDestroy:function(){Ext.destroy(this.floatingButtons,this.tooltip);this.callParent()}});Ext.define("Ext.grid.plugin.HeaderResizer",{extend:"Ext.AbstractPlugin",requires:["Ext.dd.DragTracker","Ext.util.Region"],alias:"plugin.gridheaderresizer",disabled:false,config:{dynamic:false},colHeaderCls:Ext.baseCSSPrefix+"column-header",minColWidth:40,maxColWidth:1000,wResizeCursor:"col-resize",eResizeCursor:"col-resize",init:function(a){this.headerCt=a;a.on("render",this.afterHeaderRender,this,{single:true})},destroy:function(){if(this.tracker){this.tracker.destroy()}},afterHeaderRender:function(){var b=this.headerCt,a=b.el;b.mon(a,"mousemove",this.onHeaderCtMouseMove,this);this.tracker=new Ext.dd.DragTracker({disabled:this.disabled,onBeforeStart:Ext.Function.bind(this.onBeforeStart,this),onStart:Ext.Function.bind(this.onStart,this),onDrag:Ext.Function.bind(this.onDrag,this),onEnd:Ext.Function.bind(this.onEnd,this),tolerance:3,autoStart:300,el:a})},onHeaderCtMouseMove:function(b,k){var d=this,a,i,j,g,c,h;if(d.headerCt.dragging){if(d.activeHd){d.activeHd.el.dom.style.cursor="";delete d.activeHd}}else{i=b.getTarget("."+d.colHeaderCls,3,true);if(i){j=Ext.getCmp(i.id);if(j.isOnLeftEdge(b)){g=j.previousNode("gridcolumn:not([hidden]):not([isGroupHeader])");if(g){h=d.headerCt.up("tablepanel");c=g.up("tablepanel");if(!((c===h)||((h.ownerCt.isXType("tablepanel"))&&h.ownerCt.view.lockedGrid===c))){g=null}}}else{if(j.isOnRightEdge(b)){g=j}else{g=null}}if(g){if(g.isGroupHeader){a=g.getGridColumns();g=a[a.length-1]}if(g&&!(g.fixed||(g.resizable===false)||d.disabled)){d.activeHd=g;j.el.dom.style.cursor=d.eResizeCursor}}else{j.el.dom.style.cursor="";delete d.activeHd}}}},onBeforeStart:function(b){var a=b.getTarget();this.dragHd=this.activeHd;if(!!this.dragHd&&!Ext.fly(a).hasCls(Ext.baseCSSPrefix+"column-header-trigger")&&!this.headerCt.dragging){this.tracker.constrainTo=this.getConstrainRegion();return true}else{this.headerCt.dragging=false;return false}},getConstrainRegion:function(){var c=this,a=c.dragHd.el,d=Ext.util.Region.getRegion(a),b;if(c.headerCt.forceFit){b=c.dragHd.nextNode("gridcolumn:not([hidden]):not([isGroupHeader])")}return d.adjust(0,c.headerCt.forceFit?(b?b.getWidth()-c.minColWidth:0):c.maxColWidth-a.getWidth(),0,c.minColWidth)},onStart:function(u){var v=this,h=v.dragHd,b=h.el,o=b.getWidth(),j=v.headerCt,l=u.getTarget(),d,r,g,k,c,n,a,i,s,q,p,m;if(v.dragHd&&!Ext.fly(l).hasCls(Ext.baseCSSPrefix+"column-header-trigger")){j.dragging=true}v.origWidth=o;if(!v.dynamic){d=b.getXY();r=j.up("[scrollerOwner]");g=v.dragHd.up(":not([isGroupHeader])");k=g.up();c=r.getLhsMarker();n=r.getRhsMarker();a=n.parent();i=a.getLocalX();s=a.getLocalY();q=a.translatePoints(d);p=k.body.getHeight()+j.getHeight();m=q.top-s;c.setTop(m);n.setTop(m);c.setHeight(p);n.setHeight(p);c.setLeft(q.left-i);n.setLeft(q.left+o-i)}},onDrag:function(h){if(!this.dynamic){var g=this.tracker.getXY("point"),a=this.headerCt.up("[scrollerOwner]"),i=a.getRhsMarker(),c=i.parent(),b=c.translatePoints(g),d=c.getLocalX();i.setLeft(b.left-d)}else{this.doResize()}},onEnd:function(g){this.headerCt.dragging=false;if(this.dragHd){if(!this.dynamic){var d=this.dragHd,b=this.headerCt.up("[scrollerOwner]"),c=b.getLhsMarker(),h=b.getRhsMarker(),a=-9999;c.setLeft(a);h.setLeft(a)}this.doResize()}},doResize:function(){if(this.dragHd){var b=this.dragHd,a,c=this.tracker.getOffset("point");if(b.flex){delete b.flex}Ext.suspendLayouts();b.setWidth(this.origWidth+c[0]);if(this.headerCt.forceFit){a=b.nextNode("gridcolumn:not([hidden]):not([isGroupHeader])");if(a){delete a.flex;a.setWidth(a.getWidth()-c[0])}}Ext.resumeLayouts(true)}},disable:function(){this.disabled=true;if(this.tracker){this.tracker.disable()}},enable:function(){this.disabled=false;if(this.tracker){this.tracker.enable()}}});Ext.define("Ext.grid.header.DragZone",{extend:"Ext.dd.DragZone",colHeaderCls:Ext.baseCSSPrefix+"column-header",maxProxyWidth:120,constructor:function(a){this.headerCt=a;this.ddGroup=this.getDDGroup();this.callParent([a.el]);this.proxy.el.addCls(Ext.baseCSSPrefix+"grid-col-dd")},getDDGroup:function(){return"header-dd-zone-"+this.headerCt.up("[scrollerOwner]").id},getDragData:function(b){var d=b.getTarget("."+this.colHeaderCls),a,c;if(d){a=Ext.getCmp(d.id);if(!this.headerCt.dragging&&a.draggable&&!(a.isOnLeftEdge(b)||a.isOnRightEdge(b))){c=document.createElement("div");c.innerHTML=Ext.getCmp(d.id).text;return{ddel:c,header:a}}}return false},onBeforeDrag:function(){return !(this.headerCt.dragging||this.disabled)},onInitDrag:function(){this.headerCt.dragging=true;this.callParent(arguments)},onDragDrop:function(){this.headerCt.dragging=false;this.callParent(arguments)},afterRepair:function(){this.callParent();this.headerCt.dragging=false},getRepairXY:function(){return this.dragData.header.el.getXY()},disable:function(){this.disabled=true},enable:function(){this.disabled=false}});Ext.define("Ext.grid.header.DropZone",{extend:"Ext.dd.DropZone",colHeaderCls:Ext.baseCSSPrefix+"column-header",proxyOffsets:[-4,-9],constructor:function(a){this.headerCt=a;this.ddGroup=this.getDDGroup();this.callParent([a.el])},getDDGroup:function(){return"header-dd-zone-"+this.headerCt.up("[scrollerOwner]").id},getTargetFromEvent:function(a){return a.getTarget("."+this.colHeaderCls)},getTopIndicator:function(){if(!this.topIndicator){this.topIndicator=Ext.DomHelper.append(Ext.getBody(),{cls:"col-move-top",html:"&#160;"},true)}return this.topIndicator},getBottomIndicator:function(){if(!this.bottomIndicator){this.bottomIndicator=Ext.DomHelper.append(Ext.getBody(),{cls:"col-move-bottom",html:"&#160;"},true)}return this.bottomIndicator},getLocation:function(d,b){var a=d.getXY()[0],c=Ext.fly(b).getRegion(),h,g;if((c.right-a)<=(c.right-c.left)/2){h="after"}else{h="before"}return{pos:h,header:Ext.getCmp(b.id),node:b}},positionIndicator:function(v,o,u){var a=this.getLocation(u,o),q=a.header,g=a.pos,d=v.nextSibling("gridcolumn:not([hidden])"),t=v.previousSibling("gridcolumn:not([hidden])"),l,r,s,b,c,k,m,x,w,n,j,p,h;if(!q.draggable&&q.getIndex()===0){return false}this.lastLocation=a;if((v!==q)&&((g==="before"&&d!==q)||(g==="after"&&t!==q))&&!q.isDescendantOf(v)){n=Ext.dd.DragDropManager.getRelated(this);j=n.length;p=0;for(;p<j;p++){h=n[p];if(h!==this&&h.invalidateDrop){h.invalidateDrop()}}this.valid=true;l=this.getTopIndicator();r=this.getBottomIndicator();if(g==="before"){s="tl";b="bl"}else{s="tr";b="br"}c=q.el.getAnchorXY(s);k=q.el.getAnchorXY(b);m=this.headerCt.el;x=m.getLeft();w=m.getRight();c[0]=Ext.Number.constrain(c[0],x,w);k[0]=Ext.Number.constrain(k[0],x,w);c[0]-=4;c[1]-=9;k[0]-=4;l.setXY(c);r.setXY(k);l.show();r.show()}else{this.invalidateDrop()}},invalidateDrop:function(){this.valid=false;this.hideIndicators()},onNodeOver:function(b,h,g,c){var i=this,d=i.headerCt,a=true,k=c.header,j;if(c.header.el.dom===b){a=false}else{j=i.getLocation(g,b).header;a=(k.ownerCt===j.ownerCt)||(!k.ownerCt.sealed&&!j.ownerCt.sealed)}if(a){i.positionIndicator(c.header,b,g)}else{i.valid=false}return i.valid?i.dropAllowed:i.dropNotAllowed},hideIndicators:function(){this.getTopIndicator().hide();this.getBottomIndicator().hide()},onNodeOut:function(){this.hideIndicators()},onNodeDrop:function(o,d,r,u){if(this.valid){var q=u.header,g=this.lastLocation,k=g.header,t=q.ownerCt,n=q.up("headercontainer:not(gridcolumn)"),l=t.items.indexOf(q),a=k.ownerCt,j=k.up("headercontainer:not(gridcolumn)"),p=a.items.indexOf(k),i=this.headerCt,b=i.getHeaderIndex(q),m=q.isGroupHeader?q.query(":not([isGroupHeader])").length:1,s=i.getHeaderIndex(k),c,h;if(g.pos==="after"){p++;s+=k.isGroupHeader?k.query(":not([isGroupHeader])").length:1}if(n!==j&&n.lockableInjected&&j.lockableInjected&&j.lockedCt){h=t.up("[scrollerOwner]");h.lock(q,p);this.onNodeDrop(o,d,r,u)}else{if(n!==j&&n.lockableInjected&&j.lockableInjected&&n.lockedCt){h=t.up("[scrollerOwner]");h.unlock(q,p);this.onNodeDrop(o,d,r,u)}else{this.invalidateDrop();if((t===a)&&(p>l)){p-=1}Ext.suspendLayouts();if(t!==a){t.remove(q,false);if(t.isGroupHeader){if(!t.items.getCount()){c=t.ownerCt;c.remove(t,false);t.el.dom.parentNode.removeChild(t.el.dom)}}}if(t===a){a.move(l,p)}else{a.insert(p,q)}if(a.isGroupHeader){if(a!==t){q.savedFlex=q.flex;delete q.flex;q.width=q.getWidth()}}else{if(q.savedFlex){q.flex=q.savedFlex;delete q.width}}i.purgeCache();Ext.resumeLayouts(true);i.onHeaderMoved(q,m,b,s);if(!t.items.getCount()){t.destroy()}}}}}});Ext.define("Ext.grid.plugin.HeaderReorderer",{extend:"Ext.AbstractPlugin",requires:["Ext.grid.header.DragZone","Ext.grid.header.DropZone"],alias:"plugin.gridheaderreorderer",init:function(a){this.headerCt=a;a.on({render:this.onHeaderCtRender,single:true,scope:this})},destroy:function(){Ext.destroy(this.dragZone,this.dropZone)},onHeaderCtRender:function(){var a=this;a.dragZone=new Ext.grid.header.DragZone(a.headerCt);a.dropZone=new Ext.grid.header.DropZone(a.headerCt);if(a.disabled){a.dragZone.disable()}},enable:function(){this.disabled=false;if(this.dragZone){this.dragZone.enable()}},disable:function(){this.disabled=true;if(this.dragZone){this.dragZone.disable()}}});Ext.define("Ext.grid.header.Container",{extend:"Ext.container.Container",requires:["Ext.grid.ColumnLayout","Ext.grid.plugin.HeaderResizer","Ext.grid.plugin.HeaderReorderer"],uses:["Ext.grid.column.Column","Ext.menu.Menu","Ext.menu.CheckItem","Ext.menu.Separator"],border:true,alias:"widget.headercontainer",baseCls:Ext.baseCSSPrefix+"grid-header-ct",dock:"top",weight:100,defaultType:"gridcolumn",detachOnRemove:false,defaultWidth:100,sortAscText:"Sort Ascending",sortDescText:"Sort Descending",sortClearText:"Clear Sort",columnsText:"Columns",headerOpenCls:Ext.baseCSSPrefix+"column-header-open",triStateSort:false,ddLock:false,dragging:false,sortable:true,initComponent:function(){var a=this;a.headerCounter=0;a.plugins=a.plugins||[];if(!a.isHeader){if(a.enableColumnResize){a.resizer=new Ext.grid.plugin.HeaderResizer();a.plugins.push(a.resizer)}if(a.enableColumnMove){a.reorderer=new Ext.grid.plugin.HeaderReorderer();a.plugins.push(a.reorderer)}}if(a.isHeader&&!a.items){a.layout=a.layout||"auto"}else{a.layout=Ext.apply({type:"gridcolumn",align:"stretchmax"},a.initialConfig.layout)}a.defaults=a.defaults||{};Ext.applyIf(a.defaults,{triStateSort:a.triStateSort,sortable:a.sortable});a.menuTask=new Ext.util.DelayedTask(a.updateMenuDisabledState,a);a.callParent();a.addEvents("columnresize","headerclick","headertriggerclick","columnmove","columnhide","columnshow","sortchange","menucreate")},onDestroy:function(){var a=this;a.menuTask.cancel();Ext.destroy(a.resizer,a.reorderer);a.callParent()},applyColumnsState:function(e){if(!e||!e.length){return}var m=this,k=m.items.items,j=k.length,g=0,b=e.length,l,d,a,h;for(l=0;l<b;l++){a=e[l];for(h=j;h--;){d=k[h];if(d.getStateId&&d.getStateId()==a.id){if(g!==h){m.moveHeader(h,g)}if(d.applyColumnState){d.applyColumnState(a)}++g;break}}}},getColumnsState:function(){var b=this,a=[],c;b.items.each(function(d){c=d.getColumnState&&d.getColumnState();if(c){a.push(c)}});return a},onAdd:function(d){var a=this,b=a.isHeader?a.getOwnerHeaderCt():a;if(!d.headerId){d.headerId=d.initialConfig.id||Ext.id(null,"header-")}if(!d.stateId){d.stateId=d.initialConfig.id||("h"+(++a.headerCounter))}a.callParent(arguments);if(b){b.purgeCache()}},onRemove:function(d){var a=this,b=a.isHeader?a.getOwnerHeaderCt():a;a.callParent(arguments);if(b){a.purgeCache()}},applyDefaults:function(b){var a;if(b&&!b.isComponent&&b.xtype=="rownumberer"){a=b}else{a=this.callParent(arguments);if(!b.isGroupHeader&&!("width" in a)&&!a.flex){a.width=this.defaultWidth}}return a},afterRender:function(){this.callParent();this.setSortState()},setSortState:function(){var a=this.up("[store]").store,c=a.getFirstSorter(),b;if(c){b=this.down("gridcolumn[dataIndex="+c.property+"]");if(b){b.setSortState(c.direction,false,true)}}else{this.clearOtherSortStates(null)}},getHeaderMenu:function(){var b=this.getMenu(),a;if(b){a=b.child("#columnItem");if(a){return a.menu}}return null},onHeaderVisibilityChange:function(e,d){var b=this,c=b.getHeaderMenu(),a;if(c){a=b.getMenuItemForHeader(c,e);if(a){a.setChecked(d,true)}b.menuTask.delay(50)}},getLeafMenuItems:function(){var h=this,d=h.getGridColumns(),b=[],c=0,g=0,a=d.length,j=h.getMenu(),e;for(;c<a;++c){e=d[c];if(e.hideable){e=h.getMenuItemForHeader(j,e);if(e){b.push(e);if(e.checked){++g}}}else{if(!e.hidden&&!e.menuDisabled){++g}}}return{items:b,checkedCount:g}},updateMenuDisabledState:function(){var h=this,b=h.getLeafMenuItems(),g=b.checkedCount,d=b.items,a=d.length,e=0,c=h.getMenu().child("#columnItem");if(g<=1){h.disableMenuItems(c,Ext.ComponentQuery.query("[checked=true]",d)[0])}else{for(;e<a;++e){h.setMenuItemState(g,c,d[e])}}},disableMenuItems:function(a,b){while(b&&b!=a){b.disableCheckChange();b=b.parentMenu.ownerItem}},setMenuItemState:function(e,a,d){var c,b;while(d&&d!=a){c=d.parentMenu;b=d.parentMenu.query("[checked=true]:not([menu])").length;d.enableCheckChange();d=c.ownerItem;if(b===e){break}}this.disableMenuItems(a,d)},getMenuItemForHeader:function(a,b){return b?a.down("menucheckitem[headerId="+b.id+"]"):null},onHeaderShow:function(c){var b=this,a=b.ownerCt;b.onHeaderVisibilityChange(c,true);if(!c.isGroupHeader){if(a){a.onHeaderShow(b,c)}}b.fireEvent("columnshow",b,c)},onHeaderHide:function(c){var b=this,a=b.ownerCt;b.onHeaderVisibilityChange(c,false);if(!c.isGroupHeader){if(a){a.onHeaderHide(b,c)}}b.fireEvent("columnhide",b,c)},tempLock:function(){this.ddLock=true;Ext.Function.defer(function(){this.ddLock=false},200,this)},onHeaderResize:function(g,b,e){var d=this,a=d.view,c=d.ownerCt;if(a&&a.table.dom){d.tempLock();if(c){c.onHeaderResize(d,g,b)}}d.fireEvent("columnresize",this,g,b)},onHeaderClick:function(c,b,a){c.fireEvent("headerclick",this,c,b,a);this.fireEvent("headerclick",this,c,b,a)},onHeaderTriggerClick:function(d,c,a){var b=this;if(d.fireEvent("headertriggerclick",b,d,c,a)!==false&&b.fireEvent("headertriggerclick",b,d,c,a)!==false){b.showMenuBy(a,d)}},showMenuBy:function(b,g){var d=this.getMenu(),e=d.down("#ascItem"),c=d.down("#descItem"),a;d.activeHeader=d.ownerCt=g;d.setFloatParent(g);g.titleEl.addCls(this.headerOpenCls);a=g.sortable?"enable":"disable";if(e){e[a]()}if(c){c[a]()}d.showBy(b)},onMenuDeactivate:function(){var a=this.getMenu();a.activeHeader.titleEl.removeCls(this.headerOpenCls)},moveHeader:function(a,b){this.tempLock();this.onHeaderMoved(this.move(a,b),1,a,b)},purgeCache:function(){var a=this;delete a.gridDataColumns;delete a.hideableColumns;if(a.menu){a.menu.hide();a.menu.destroy();delete a.menu}},onHeaderMoved:function(g,a,c,e){var d=this,b=d.ownerCt;if(b&&b.onHeaderMove){b.onHeaderMove(d,g,a,c,e)}d.fireEvent("columnmove",d,g,c,e)},getMenu:function(){var a=this;if(!a.menu){a.menu=new Ext.menu.Menu({hideOnParentHide:false,items:a.getMenuItems(),listeners:{deactivate:a.onMenuDeactivate,scope:a}});a.updateMenuDisabledState();a.fireEvent("menucreate",a,a.menu)}return a.menu},getMenuItems:function(){var c=this,b=[],a=c.enableColumnHide?c.getColumnMenu(c):null;if(c.sortable){b=[{itemId:"ascItem",text:c.sortAscText,cls:Ext.baseCSSPrefix+"hmenu-sort-asc",handler:c.onSortAscClick,scope:c},{itemId:"descItem",text:c.sortDescText,cls:Ext.baseCSSPrefix+"hmenu-sort-desc",handler:c.onSortDescClick,scope:c}]}if(a&&a.length){b.push("-",{itemId:"columnItem",text:c.columnsText,cls:Ext.baseCSSPrefix+"cols-icon",menu:a})}return b},onSortAscClick:function(){var b=this.getMenu(),a=b.activeHeader;a.setSortState("ASC")},onSortDescClick:function(){var b=this.getMenu(),a=b.activeHeader;a.setSortState("DESC")},getColumnMenu:function(g){var c=[],b=0,e,a=g.query(">gridcolumn[hideable]"),h=a.length,d;for(;b<h;b++){e=a[b];d=new Ext.menu.CheckItem({text:e.menuText||e.text,checked:!e.hidden,hideOnClick:false,headerId:e.id,menu:e.isGroupHeader?this.getColumnMenu(e):undefined,checkHandler:this.onColumnCheckChange,scope:this});c.push(d);e.on({destroy:Ext.Function.bind(d.destroy,d)})}return c},onColumnCheckChange:function(a,b){var c=Ext.getCmp(a.headerId);c[b?"show":"hide"]()},getColumnsForTpl:function(e){var c=[],d=this.getGridColumns(e),h=d.length,a=0,g,b;for(;a<h;a++){g=d[a];if(g.hidden||g.up("headercontainer[hidden=true]")){b=0}else{b=g.getDesiredWidth()}c.push({dataIndex:g.dataIndex,align:g.align,width:b,id:g.id,cls:g.tdCls,columnId:g.getItemId()})}return c},getColumnCount:function(){return this.getGridColumns().length},getFullWidth:function(d){var c=0,b=this.getVisibleGridColumns(d),g=b.length,a=0,e;for(;a<g;a++){e=b[a];if(e.getDesiredWidth){c+=e.getDesiredWidth()||0}else{c+=e.getWidth()}}return c},clearOtherSortStates:function(a){var c=this.getGridColumns(),d=c.length,b=0;for(;b<d;b++){if(c[b]!==a){c[b].setSortState(null,true)}}},getVisibleGridColumns:function(a){return Ext.ComponentQuery.query(":not([hidden])",this.getGridColumns(a))},getGridColumns:function(b){var c=this,a=b?null:c.gridDataColumns;if(!a){c.gridDataColumns=a=[];c.cascade(function(d){if((d!==c)&&!d.isGroupHeader){a.push(d)}})}return a},getHideableColumns:function(b){var c=this,a=b?null:c.hideableColumns;if(!a){a=c.hideableColumns=c.query("[hideable]")}return a},getHeaderIndex:function(a){if(a.isGroupHeader){a=a.down(":not([isgroupHeader])")}return Ext.Array.indexOf(this.getGridColumns(),a)},getHeaderAtIndex:function(a){var b=this.getGridColumns();return b.length?b[a]:null},getVisibleHeaderClosestToIndex:function(b){var a=this.getHeaderAtIndex(b);if(a&&a.hidden){a=a.next(":not([hidden])")||a.prev(":not([hidden])")}return a},prepareData:function(i,c,k,n,a){var m=this,h={},d=m.gridDataColumns||m.getGridColumns(),e=d.length,g=0,j,q,l,p,b,o=a.store;for(;g<e;g++){b={tdCls:"",style:""};j=d[g];q=j.id;l=j.renderer;p=i[j.dataIndex];if(typeof l=="function"){p=l.call(j.scope||m.ownerCt,p,b,k,c,g,o,n)}if(m.markDirty){h[q+"-modified"]=k.isModified(j.dataIndex)?Ext.baseCSSPrefix+"grid-dirty-cell":""}h[q+"-tdCls"]=b.tdCls;h[q+"-tdAttr"]=b.tdAttr;h[q+"-style"]=b.style;if(typeof p==="undefined"||p===null||p===""){p=j.emptyCellText}h[q]=p}return h},expandToFit:function(b){var a=this.view;if(a){a.expandToFit(b)}}});Ext.define("Ext.grid.column.Column",{extend:"Ext.grid.header.Container",alias:"widget.gridcolumn",requires:["Ext.util.KeyNav","Ext.grid.ColumnComponentLayout","Ext.grid.ColumnLayout"],alternateClassName:"Ext.grid.Column",baseCls:Ext.baseCSSPrefix+"column-header "+Ext.baseCSSPrefix+"unselectable",hoverCls:Ext.baseCSSPrefix+"column-header-over",handleWidth:5,sortState:null,possibleSortStates:["ASC","DESC"],childEls:["titleEl","triggerEl","textEl"],renderTpl:'<div id="{id}-titleEl" {tipMarkup}class="'+Ext.baseCSSPrefix+'column-header-inner"><span id="{id}-textEl" class="'+Ext.baseCSSPrefix+'column-header-text">{text}</span><tpl if="!menuDisabled"><div id="{id}-triggerEl" class="'+Ext.baseCSSPrefix+'column-header-trigger"></div></tpl></div>{%this.renderContainer(out,values)%}',dataIndex:null,text:"&#160;",menuText:null,emptyCellText:"&#160;",sortable:true,resizable:true,hideable:true,menuDisabled:false,renderer:false,editRenderer:false,align:"left",draggable:true,tooltipType:"qtip",initDraggable:Ext.emptyFn,isHeader:true,componentLayout:"columncomponent",initResizable:Ext.emptyFn,initComponent:function(){var a=this,b;if(Ext.isDefined(a.header)){a.text=a.header;delete a.header}if(!a.triStateSort){a.possibleSortStates.length=2}if(Ext.isDefined(a.columns)){a.isGroupHeader=true;a.items=a.columns;delete a.columns;delete a.flex;delete a.width;a.cls=(a.cls||"")+" "+Ext.baseCSSPrefix+"group-header";a.sortable=false;a.resizable=false;a.align="center"}else{a.isContainer=false;if(a.flex){a.minWidth=a.minWidth||Ext.grid.plugin.HeaderResizer.prototype.minColWidth}}a.addCls(Ext.baseCSSPrefix+"column-header-align-"+a.align);b=a.renderer;if(b){if(typeof b=="string"){a.renderer=Ext.util.Format[b]}a.hasCustomRenderer=true}else{if(a.defaultRenderer){a.scope=a;a.renderer=a.defaultRenderer}}a.callParent(arguments);a.on({element:"el",click:a.onElClick,dblclick:a.onElDblClick,scope:a});a.on({element:"titleEl",mouseenter:a.onTitleMouseOver,mouseleave:a.onTitleMouseOut,scope:a})},onAdd:function(a){a.isSubHeader=true;a.addCls(Ext.baseCSSPrefix+"group-sub-header");this.callParent(arguments)},onRemove:function(a){a.isSubHeader=false;a.removeCls(Ext.baseCSSPrefix+"group-sub-header");this.callParent(arguments)},initRenderData:function(){var b=this,d="",c=b.tooltip,a=b.tooltipType=="qtip"?"data-qtip":"title";if(!Ext.isEmpty(c)){d=a+'="'+c+'" '}return Ext.applyIf(b.callParent(arguments),{text:b.text,menuDisabled:b.menuDisabled,tipMarkup:d})},applyColumnState:function(b){var a=this,c=Ext.isDefined;a.applyColumnsState(b.columns);if(c(b.hidden)){a.hidden=b.hidden}if(c(b.locked)){a.locked=b.locked}if(c(b.sortable)){a.sortable=b.sortable}if(c(b.width)){delete a.flex;a.width=b.width}else{if(c(b.flex)){delete a.width;a.flex=b.flex}}},getColumnState:function(){var e=this,b=e.items.items,a=b?b.length:0,d,c=[],g={id:e.getStateId()};e.savePropsToState(["hidden","sortable","locked","flex","width"],g);if(e.isGroupHeader){for(d=0;d<a;d++){c.push(b[d].getColumnState())}if(c.length){g.columns=c}}else{if(e.isSubHeader&&e.ownerCt.hidden){delete e.hidden}}if("width" in g){delete g.flex}return g},getStateId:function(){return this.stateId||this.headerId},setText:function(a){this.text=a;if(this.rendered){this.textEl.update(a)}},getOwnerHeaderCt:function(){return this.up(":not([isHeader])")},getIndex:function(){return this.isGroupColumn?false:this.getOwnerHeaderCt().getHeaderIndex(this)},getVisibleIndex:function(){return this.isGroupColumn?false:Ext.Array.indexOf(this.getOwnerHeaderCt().getVisibleGridColumns(),this)},beforeRender:function(){var b=this,a=b.up("tablepanel");b.callParent();if(a&&(!b.sortable||a.sortableColumns===false)&&!b.groupable&&!b.lockable&&(a.enableColumnHide===false||!b.getOwnerHeaderCt().getHideableColumns().length)){b.menuDisabled=true}},afterRender:function(){var b=this,a=b.el;b.callParent(arguments);if(b.overCls){a.addClsOnOver(b.overCls)}if(!Ext.isIE8||!Ext.isStrict){b.mon(b.getFocusEl(),{focus:b.onTitleMouseOver,blur:b.onTitleMouseOut,scope:b})}b.keyNav=new Ext.util.KeyNav(a,{enter:b.onEnterKey,down:b.onDownKey,scope:b})},afterComponentLayout:function(d,a,c,g){var e=this,b=e.getOwnerHeaderCt();e.callParent(arguments);if(b&&(c!=null||e.flex)&&d!==c){b.onHeaderResize(e,d,true)}},setPadding:function(a){var e=this,d=parseInt(e.textEl.getStyle("line-height"),10),h=e.textEl.dom.offsetHeight,b=e.titleEl,g=a-e.el.getBorderWidth("tb"),c;if(!e.isGroupHeader){if(b.getHeight()<g){b.setHeight(g);e.ownerCt.layout.innerCt.setHeight(a)}}c=b.getViewSize().height;if(h){if(d){h=Math.ceil(h/d)*d}b.setStyle({paddingTop:Math.floor(Math.max(((c-h)/2),0))+"px"})}if(Ext.isIE&&e.triggerEl){e.triggerEl.setHeight(c)}},onDestroy:function(){var a=this;Ext.destroy(a.textEl,a.keyNav,a.field);delete a.keyNav;a.callParent(arguments)},onTitleMouseOver:function(){this.titleEl.addCls(this.hoverCls)},onTitleMouseOut:function(){this.titleEl.removeCls(this.hoverCls)},onDownKey:function(a){if(this.triggerEl){this.onElClick(a,this.triggerEl.dom||this.el.dom)}},onEnterKey:function(a){this.onElClick(a,this.el.dom)},onElDblClick:function(d,a){var c=this,b=c.ownerCt;if(b&&Ext.Array.indexOf(b.items,c)!==0&&c.isOnLeftEdge(d)){b.expandToFit(c.previousSibling("gridcolumn"))}},onElClick:function(d,b){var c=this,a=c.getOwnerHeaderCt();if(a&&!a.ddLock){if(c.triggerEl&&(d.target===c.triggerEl.dom||b===c.triggerEl.dom||d.within(c.triggerEl))){a.onHeaderTriggerClick(c,d,b)}else{if(d.getKey()||(!c.isOnLeftEdge(d)&&!c.isOnRightEdge(d))){c.toggleSortState();a.onHeaderClick(c,d,b)}}}},processEvent:function(g,b,a,c,d,h){return this.fireEvent.apply(this,arguments)},toggleSortState:function(){var b=this,a,c;if(b.sortable){a=Ext.Array.indexOf(b.possibleSortStates,b.sortState);c=(a+1)%b.possibleSortStates.length;b.setSortState(b.possibleSortStates[c])}},doSort:function(b){var a=this.up("tablepanel").store;a.sort({property:this.getSortParam(),direction:b})},getSortParam:function(){return this.dataIndex},setSortState:function(a,k,g){var h=this,i=Ext.baseCSSPrefix+"column-header-sort-",j=i+"ASC",c=i+"DESC",b=i+"null",e=h.getOwnerHeaderCt(),d=h.sortState;if(d!==a&&h.getSortParam()){h.addCls(i+a);if(a&&!g){h.doSort(a)}switch(a){case"DESC":h.removeCls([j,b]);break;case"ASC":h.removeCls([c,b]);break;case null:h.removeCls([j,c]);break}if(e&&!h.triStateSort&&!k){e.clearOtherSortStates(h)}h.sortState=a;if(h.triStateSort||a!=null){e.fireEvent("sortchange",e,h,a)}}},hide:function(c){var j=this,e=j.getOwnerHeaderCt(),b=j.ownerCt,a=b.isGroupHeader,k,h,g,d;if(a&&!c){h=b.query(">:not([hidden])");if(h.length===1&&h[0]==j){j.ownerCt.hide();return}}Ext.suspendLayouts();if(j.isGroupHeader){h=j.items.items;for(d=0,g=h.length;d<g;d++){k=h[d];if(!k.hidden){k.hide(true)}}}j.callParent();e.onHeaderHide(j);Ext.resumeLayouts(true)},show:function(d,b){var j=this,g=j.ownerCt,c,a,e,h;Ext.suspendLayouts();if(j.isSubHeader&&g.hidden){g.show(false,true)}j.callParent(arguments);if(j.isGroupHeader&&b!==true&&!j.query(":not([hidden])").length){c=j.query(">*");for(e=0,a=c.length;e<a;e++){h=c[e];if(h.hidden){h.show(true)}}}Ext.resumeLayouts(true);g=j.getOwnerHeaderCt();if(g){g.onHeaderShow(j)}},getDesiredWidth:function(){var a=this;if(a.rendered&&a.componentLayout&&a.componentLayout.lastComponentSize){return a.componentLayout.lastComponentSize.width}else{if(a.flex){return a.width}else{return a.width}}},getCellSelector:function(){return"."+Ext.baseCSSPrefix+"grid-cell-"+this.getItemId()},getCellInnerSelector:function(){return this.getCellSelector()+" ."+Ext.baseCSSPrefix+"grid-cell-inner"},isOnLeftEdge:function(a){return(a.getXY()[0]-this.el.getLeft()<=this.handleWidth)},isOnRightEdge:function(a){return(this.el.getRight()-a.getXY()[0]<=this.handleWidth)}});Ext.define("Ext.grid.RowNumberer",{extend:"Ext.grid.column.Column",alias:"widget.rownumberer",text:"&#160",width:23,sortable:false,draggable:false,align:"right",constructor:function(a){this.width=this.width;this.callParent(arguments);if(this.rowspan){this.renderer=Ext.Function.bind(this.renderer,this)}},resizable:false,hideable:false,menuDisabled:true,dataIndex:"",cls:Ext.baseCSSPrefix+"row-numberer",rowspan:undefined,renderer:function(e,b,a,d,g,c){if(this.rowspan){b.cellAttr='rowspan="'+this.rowspan+'"'}b.tdCls=Ext.baseCSSPrefix+"grid-cell-special";return c.indexOfTotal(a)+1}});Ext.define("Ext.view.DropZone",{extend:"Ext.dd.DropZone",indicatorHtml:'<div class="'+Ext.baseCSSPrefix+'grid-drop-indicator-left"></div><div class="'+Ext.baseCSSPrefix+'grid-drop-indicator-right"></div>',indicatorCls:Ext.baseCSSPrefix+"grid-drop-indicator",constructor:function(a){var b=this;Ext.apply(b,a);if(!b.ddGroup){b.ddGroup="view-dd-zone-"+b.view.id}b.callParent([b.view.el])},fireViewEvent:function(){var b=this,a;b.lock();a=b.view.fireEvent.apply(b.view,arguments);b.unlock();return a},getTargetFromEvent:function(k){var j=k.getTarget(this.view.getItemSelector()),d,c,b,g,a,h;if(!j){d=k.getPageY();for(g=0,c=this.view.getNodes(),a=c.length;g<a;g++){b=c[g];h=Ext.fly(b).getBox();if(d<=h.bottom){return b}}}return j},getIndicator:function(){var a=this;if(!a.indicator){a.indicator=new Ext.Component({html:a.indicatorHtml,cls:a.indicatorCls,ownerCt:a.view,floating:true,shadow:false})}return a.indicator},getPosition:function(c,a){var g=c.getXY()[1],b=Ext.fly(a).getRegion(),d;if((b.bottom-g)>=(b.bottom-b.top)/2){d="before"}else{d="after"}return d},containsRecordAtOffset:function(d,b,g){if(!b){return false}var a=this.view,c=a.indexOf(b),e=a.getNode(c+g),h=e?a.getRecord(e):null;return h&&Ext.Array.contains(d,h)},positionIndicator:function(b,c,d){var g=this,i=g.view,h=g.getPosition(d,b),k=i.getRecord(b),a=c.records,j;if(!Ext.Array.contains(a,k)&&(h=="before"&&!g.containsRecordAtOffset(a,k,-1)||h=="after"&&!g.containsRecordAtOffset(a,k,1))){g.valid=true;if(g.overRecord!=k||g.currentPosition!=h){j=Ext.fly(b).getY()-i.el.getY()-1;if(h=="after"){j+=Ext.fly(b).getHeight()}g.getIndicator().setWidth(Ext.fly(i.el).getWidth()).showAt(0,j);g.overRecord=k;g.currentPosition=h}}else{g.invalidateDrop()}},invalidateDrop:function(){if(this.valid){this.valid=false;this.getIndicator().hide()}},onNodeOver:function(c,a,g,d){var b=this;if(!Ext.Array.contains(d.records,b.view.getRecord(c))){b.positionIndicator(c,d,g)}return b.valid?b.dropAllowed:b.dropNotAllowed},notifyOut:function(c,a,g,d){var b=this;b.callParent(arguments);delete b.overRecord;delete b.currentPosition;if(b.indicator){b.indicator.hide()}},onContainerOver:function(a,h,g){var d=this,b=d.view,c=b.store.getCount();if(c){d.positionIndicator(b.getNode(c-1),g,h)}else{delete d.overRecord;delete d.currentPosition;d.getIndicator().setWidth(Ext.fly(b.el).getWidth()).showAt(0,0);d.valid=true}return d.dropAllowed},onContainerDrop:function(a,c,b){return this.onNodeDrop(a,null,c,b)},onNodeDrop:function(g,a,i,h){var d=this,c=false,b={wait:false,processDrop:function(){d.invalidateDrop();d.handleNodeDrop(h,d.overRecord,d.currentPosition);c=true;d.fireViewEvent("drop",g,h,d.overRecord,d.currentPosition)},cancelDrop:function(){d.invalidateDrop();c=true}},j=false;if(d.valid){j=d.fireViewEvent("beforedrop",g,h,d.overRecord,d.currentPosition,b);if(b.wait){return}if(j!==false){if(!c){b.processDrop()}}}return j},destroy:function(){Ext.destroy(this.indicator);delete this.indicator;this.callParent()}});Ext.define("Ext.grid.ViewDropZone",{extend:"Ext.view.DropZone",indicatorHtml:'<div class="'+Ext.baseCSSPrefix+'grid-drop-indicator-left"></div><div class="'+Ext.baseCSSPrefix+'grid-drop-indicator-right"></div>',indicatorCls:Ext.baseCSSPrefix+"grid-drop-indicator",handleNodeDrop:function(b,d,e){var j=this.view,k=j.getStore(),h,a,c,g;if(b.copy){a=b.records;b.records=[];for(c=0,g=a.length;c<g;c++){b.records.push(a[c].copy(a[c].getId()))}}else{b.view.store.remove(b.records,b.view===j)}h=k.indexOf(d);if(e!=="before"){h++}k.insert(h,b.records);j.getSelectionModel().select(b.records)}});Ext.define("Ext.grid.column.Action",{extend:"Ext.grid.column.Column",alias:["widget.actioncolumn"],alternateClassName:"Ext.grid.ActionColumn",actionIdRe:new RegExp(Ext.baseCSSPrefix+"action-col-(\\d+)"),altText:"",menuText:"<i>Actions</i>",sortable:false,constructor:function(d){var g=this,b=Ext.apply({},d),c=b.items||[g],h,e,a;g.origRenderer=b.renderer||g.renderer;g.origScope=b.scope||g.scope;delete g.renderer;delete g.scope;delete b.renderer;delete b.scope;delete b.items;g.callParent([b]);g.items=c;for(e=0,a=c.length;e<a;++e){if(c[e].getClass){h=true;break}}if(g.origRenderer||h){g.hasCustomRenderer=true}},defaultRenderer:function(g,j){var e=this,b=Ext.baseCSSPrefix,k=e.origScope||e,d=e.items,c=d.length,a=0,h;g=Ext.isFunction(e.origRenderer)?e.origRenderer.apply(k,arguments)||"":"";j.tdCls+=" "+Ext.baseCSSPrefix+"action-col-cell";for(;a<c;a++){h=d[a];if(!h.hasActionConfiguration){h.stopSelection=e.stopSelection;h.disable=Ext.Function.bind(e.disableAction,e,[a],0);h.enable=Ext.Function.bind(e.enableAction,e,[a],0);h.hasActionConfiguration=true}g+='<img alt="'+(h.altText||e.altText)+'" src="'+(h.icon||Ext.BLANK_IMAGE_URL)+'" class="'+b+"action-col-icon "+b+"action-col-"+String(a)+" "+(h.disabled?b+"item-disabled":" ")+" "+(Ext.isFunction(h.getClass)?h.getClass.apply(h.scope||k,arguments):(h.iconCls||e.iconCls||""))+'"'+((h.tooltip)?' data-qtip="'+h.tooltip+'"':"")+" />"}return g},enableAction:function(b,a){var c=this;if(!b){b=0}else{if(!Ext.isNumber(b)){b=Ext.Array.indexOf(c.items,b)}}c.items[b].disabled=false;c.up("tablepanel").el.select("."+Ext.baseCSSPrefix+"action-col-"+b).removeCls(c.disabledCls);if(!a){c.fireEvent("enable",c)}},disableAction:function(b,a){var c=this;if(!b){b=0}else{if(!Ext.isNumber(b)){b=Ext.Array.indexOf(c.items,b)}}c.items[b].disabled=true;c.up("tablepanel").el.select("."+Ext.baseCSSPrefix+"action-col-"+b).addCls(c.disabledCls);if(!a){c.fireEvent("disable",c)}},destroy:function(){delete this.items;delete this.renderer;return this.callParent(arguments)},processEvent:function(i,l,n,a,j,g,c,p){var h=this,d=g.getTarget(),b,o,k,m=i=="keydown"&&g.getKey();if(m&&!Ext.fly(d).findParent(l.cellSelector)){d=Ext.fly(n).down("."+Ext.baseCSSPrefix+"action-col-icon",true)}if(d&&(b=d.className.match(h.actionIdRe))){o=h.items[parseInt(b[1],10)];if(o){if(i=="click"||(m==g.ENTER||m==g.SPACE)){k=o.handler||h.handler;if(k&&!o.disabled){k.call(o.scope||h.origScope||h,l,a,j,o,g,c,p)}}else{if(i=="mousedown"&&o.stopSelection!==false){return false}}}}return h.callParent(arguments)},cascade:function(b,a){b.call(a||this,this)},getRefItems:function(){return[]}});Ext.define("Ext.grid.column.Boolean",{extend:"Ext.grid.column.Column",alias:["widget.booleancolumn"],alternateClassName:"Ext.grid.BooleanColumn",trueText:"true",falseText:"false",undefinedText:"&#160;",defaultRenderer:function(a){if(a===undefined){return this.undefinedText}if(!a||a==="false"){return this.falseText}return this.trueText}});Ext.define("Ext.grid.column.Date",{extend:"Ext.grid.column.Column",alias:["widget.datecolumn"],requires:["Ext.Date"],alternateClassName:"Ext.grid.DateColumn",initComponent:function(){if(!this.format){this.format=Ext.Date.defaultFormat}this.callParent(arguments)},defaultRenderer:function(a){return Ext.util.Format.date(a,this.format)}});Ext.define("Ext.grid.column.Number",{extend:"Ext.grid.column.Column",alias:["widget.numbercolumn"],requires:["Ext.util.Format"],alternateClassName:"Ext.grid.NumberColumn",format:"0,000.00",defaultRenderer:function(a){return Ext.util.Format.number(a,this.format)}});Ext.define("Ext.grid.column.Template",{extend:"Ext.grid.column.Column",alias:["widget.templatecolumn"],requires:["Ext.XTemplate"],alternateClassName:"Ext.grid.TemplateColumn",initComponent:function(){var a=this;a.tpl=(!Ext.isPrimitive(a.tpl)&&a.tpl.compile)?a.tpl:new Ext.XTemplate(a.tpl);a.hasCustomRenderer=true;a.callParent(arguments)},defaultRenderer:function(c,d,a){var b=Ext.apply({},a.data,a.getAssociatedData());return this.tpl.apply(b)}});Ext.define("Ext.grid.feature.Feature",{extend:"Ext.util.Observable",alias:"feature.feature",isFeature:true,disabled:false,hasFeatureEvent:true,eventPrefix:null,eventSelector:null,view:null,grid:null,collectData:false,constructor:function(a){this.initialConfig=a;this.callParent(arguments)},clone:function(){return new this.self(this.initialConfig)},init:Ext.emptyFn,getFeatureTpl:function(){return""},getFireEventArgs:function(b,a,c,d){return[b,a,c,d]},attachEvents:function(){},getFragmentTpl:Ext.emptyFn,mutateMetaRowTpl:Ext.emptyFn,getMetaRowTplFragments:function(){return{}},getTableFragments:function(){return{}},getAdditionalData:function(c,a,b,d){return{}},enable:function(){this.disabled=false},disable:function(){this.disabled=true}});Ext.define("Ext.grid.feature.AbstractSummary",{extend:"Ext.grid.feature.Feature",alias:"feature.abstractsummary",showSummaryRow:true,nestedIdRe:/\{\{id\}([\w\-]*)\}/g,init:function(){var a=this;a.grid.optimizedColumnMove=false;a.view.mon(a.view.store,{update:a.onStoreUpdate,scope:a})},onStoreUpdate:function(){var a=this.view;if(this.showSummaryRow){a.saveScrollState();a.refresh();a.restoreScrollState()}},toggleSummaryRow:function(a){this.showSummaryRow=!!a},getSummaryFragments:function(){var a={};if(this.showSummaryRow){Ext.apply(a,{printSummaryRow:Ext.bind(this.printSummaryRow,this)})}return a},printSummaryRow:function(b){var a=this.view.getTableChunker().metaRowTpl.join(""),c=Ext.baseCSSPrefix;a=a.replace(c+"grid-row",c+"grid-row-summary");a=a.replace("{{id}}","{gridSummaryValue}");a=a.replace(this.nestedIdRe,"{id$1}");a=a.replace("{[this.embedRowCls()]}","{rowCls}");a=a.replace("{[this.embedRowAttr()]}","{rowAttr}");a=new Ext.XTemplate(a,{firstOrLastCls:Ext.view.TableChunker.firstOrLastCls});return a.applyTemplate({columns:this.getPrintData(b)})},getColumnValue:function(c,a){var b=Ext.getCmp(c.id),e=a[c.id],d=b.summaryRenderer;if(!e&&e!==0){e="\u00a0"}if(d){e=d.call(b.scope||this,e,a,c.dataIndex)}return e},getSummary:function(a,b,d,c){if(b){if(Ext.isFunction(b)){return a.aggregate(b,null,c)}switch(b){case"count":return a.count(c);case"min":return a.min(d,c);case"max":return a.max(d,c);case"sum":return a.sum(d,c);case"average":return a.average(d,c);default:return c?{}:""}}}});Ext.define("Ext.grid.feature.Chunking",{extend:"Ext.grid.feature.Feature",alias:"feature.chunking",chunkSize:20,rowHeight:Ext.isIE?27:26,visibleChunk:0,hasFeatureEvent:false,attachEvents:function(){this.view.el.on("scroll",this.onBodyScroll,this,{buffer:300})},onBodyScroll:function(g,c){var b=this.view,d=c.scrollTop,a=Math.floor(d/this.rowHeight/this.chunkSize);if(a!==this.visibleChunk){this.visibleChunk=a;b.refresh();b.el.dom.scrollTop=d;b.el.dom.scrollTop=d}},collectData:function(d,m,l,k,c){var j=this,e=c.rows.length,b=0,g=0,a=j.visibleChunk,p,n,h=c.rows;delete c.rows;c.chunks=[];for(;b<e;b+=j.chunkSize,g++){if(b+j.chunkSize>e){n=e-b}else{n=j.chunkSize}if(g>=a-1&&g<=a+1){p=h.slice(b,b+j.chunkSize)}else{p=[]}c.chunks.push({rows:p,fullWidth:k,chunkHeight:n*j.rowHeight})}return c},getTableFragments:function(){return{openTableWrap:function(){return'<tpl for="chunks"><div class="'+Ext.baseCSSPrefix+'grid-chunk" style="height: {chunkHeight}px;">'},closeTableWrap:function(){return"</div></tpl>"}}}});Ext.define("Ext.grid.feature.Grouping",{extend:"Ext.grid.feature.Feature",alias:"feature.grouping",eventPrefix:"group",eventSelector:"."+Ext.baseCSSPrefix+"grid-group-hd",bodySelector:"."+Ext.baseCSSPrefix+"grid-group-body",constructor:function(){var a=this;a.collapsedState={};a.callParent(arguments)},groupHeaderTpl:"{columnName}: {name}",depthToIndent:17,collapsedCls:Ext.baseCSSPrefix+"grid-group-collapsed",hdCollapsedCls:Ext.baseCSSPrefix+"grid-group-hd-collapsed",hdCollapsibleCls:Ext.baseCSSPrefix+"grid-group-hd-collapsible",groupByText:"Group by this field",showGroupsText:"Show in groups",hideGroupedHeader:false,startCollapsed:false,enableGroupingMenu:true,enableNoGroups:true,collapsible:true,enable:function(){var c=this,a=c.view,b=a.store,d;c.lastGroupField=c.getGroupField();if(c.lastGroupIndex){c.block();b.group(c.lastGroupIndex);c.unblock()}c.callParent();d=c.view.headerCt.getMenu().down("#groupToggleMenuItem");d.setChecked(true,true);c.refreshIf()},disable:function(){var d=this,a=d.view,b=a.store,g=b.remoteGroup,e,c;c=b.groupers.first();if(c){d.lastGroupIndex=c.property;d.block();b.clearGrouping();d.unblock()}d.callParent();e=d.view.headerCt.getMenu().down("#groupToggleMenuItem");e.setChecked(true,true);e.setChecked(false,true);d.refreshIf()},refreshIf:function(){var b=this.grid.ownerCt,a=this.view;if(!a.store.remoteGroup&&!this.blockRefresh){if(b&&b.lockable){b.view.refresh()}else{a.refresh()}}},getFeatureTpl:function(b,c,a,d){return["<tpl if=\"typeof rows !== 'undefined'\">",'<tr id="{groupHeaderId}" class="'+Ext.baseCSSPrefix+'grid-group-hd {hdCollapsedCls} {collapsibleClass}"><td class="'+Ext.baseCSSPrefix+'grid-cell" colspan="'+c.columns.length+'" {[this.indentByDepth(values)]}><div class="'+Ext.baseCSSPrefix+'grid-cell-inner"><div class="'+Ext.baseCSSPrefix+'grid-group-title">{collapsed}{[this.renderGroupHeaderTpl(values, parent)]}</div></div></td></tr>','<tr id="{groupBodyId}" class="'+Ext.baseCSSPrefix+'grid-group-body {collapsedCls}"><td colspan="'+c.columns.length+'">{[this.recurse(values)]}</td></tr>',"</tpl>"].join("")},getFragmentTpl:function(){var a=this;return{indentByDepth:a.indentByDepth,depthToIndent:a.depthToIndent,renderGroupHeaderTpl:function(b,c){return Ext.XTemplate.getTpl(a,"groupHeaderTpl").apply(b,c)}}},indentByDepth:function(a){return'style="padding-left:'+((a.depth||0)*this.depthToIndent)+'px;"'},destroy:function(){delete this.view;delete this.prunedHeader},attachEvents:function(){var b=this,a=b.view;a.on({scope:b,groupclick:b.onGroupClick,rowfocus:b.onRowFocus});a.mon(a.store,{scope:b,groupchange:b.onGroupChange,remove:b.onRemove,add:b.onAdd,update:b.onUpdate});if(b.enableGroupingMenu){b.injectGroupingMenu()}b.pruneGroupedHeader();b.lastGroupField=b.getGroupField();b.block();b.onGroupChange();b.unblock()},onAdd:function(l,c){var j=this,k=j.view,a=j.getGroupField(),g=0,h=c.length,n,d,b,e,m;if(k.rendered){d={};n={};for(;g<h;++g){m=c[g].get(a);if(d[m]===undefined){d[m]=0}d[m]+=1}b=l.getGroups();for(g=0,h=b.length;g<h;++g){m=b[g];n[m.name]=m.children.length}for(m in d){if(d[m]===n[m]){e=true;break}}if(e){k.refresh()}}},onUpdate:function(c,b,d,e){var a=this.view;if(a.rendered&&!e||Ext.Array.contains(e,this.getGroupField())){a.refresh()}},onRemove:function(d,c){var e=this,b=e.getGroupField(),g=c.get(b),a=e.view;if(a.rendered){if(d.findExact(b,g)===-1){e.view.refresh()}}},injectGroupingMenu:function(){var a=this,b=a.view.headerCt;b.showMenuBy=a.showMenuBy;b.getMenuItems=a.getMenuItems()},showMenuBy:function(b,e){var d=this.getMenu(),c=d.down("#groupMenuItem"),a=e.groupable===false?"disable":"enable";c[a]();Ext.grid.header.Container.prototype.showMenuBy.apply(this,arguments)},getMenuItems:function(){var g=this,c=g.groupByText,e=g.disabled||!g.getGroupField(),a=g.showGroupsText,d=g.enableNoGroups,b=g.view.headerCt.getMenuItems;return function(){var h=b.call(this);h.push("-",{iconCls:Ext.baseCSSPrefix+"group-by-icon",itemId:"groupMenuItem",text:c,handler:g.onGroupMenuItemClick,scope:g});if(d){h.push({itemId:"groupToggleMenuItem",text:a,checked:!e,checkHandler:g.onGroupToggleMenuItemClick,scope:g})}return h}},onGroupMenuItemClick:function(c,g){var d=this,h=c.parentMenu,i=h.activeHeader,a=d.view,b=a.store;delete d.lastGroupIndex;d.block();d.enable();b.group(i.dataIndex);d.pruneGroupedHeader();d.unblock();d.refreshIf()},block:function(){this.blockRefresh=this.view.blockRefresh=true},unblock:function(){this.blockRefresh=this.view.blockRefresh=false},onGroupToggleMenuItemClick:function(a,b){this[b?"enable":"disable"]()},pruneGroupedHeader:function(){var a=this,b=a.getGroupedHeader();if(a.hideGroupedHeader&&b){if(a.prunedHeader){a.prunedHeader.show()}a.prunedHeader=b;b.hide()}},getGroupedHeader:function(){var a=this.getGroupField(),b=this.view.headerCt;return a?b.down("[dataIndex="+a+"]"):null},getGroupField:function(){var a=this.view.store.groupers.first();if(a){return a.property}return""},onRowFocus:function(c){var b=this.view.getNode(c),a=Ext.fly(b).up("."+this.collapsedCls);if(a){this.expand(a)}},isExpanded:function(a){return(this.collapsedState[a]===false)},expand:function(i,b,h){var e=this,a=e.view,c,g,d=e.lockingPartner;if(Ext.isString(i)){g=Ext.fly(e.getGroupBodyId(i),"_grouping")}else{g=Ext.fly(i,"_grouping");i=e.getGroupName(g)}c=Ext.get(e.getGroupHeaderId(i));if(e.collapsedState[i]){g.removeCls(e.collapsedCls);g.prev().removeCls(e.hdCollapsedCls);if(h!==true){a.refreshSize()}a.fireEvent("groupexpand",a,c,i);e.collapsedState[i]=false;if(d){d.expand(i,b,h)}if(b){g.scrollIntoView(a.el,null,true)}}},expandAll:function(){var d=this,b=d.view,c=b.el.select(d.eventSelector).elements,g,a=c.length;for(g=0;g<a;g++){d.expand(Ext.fly(c[g]).next(),false,true)}b.refreshSize()},collapse:function(i,b,h){var e=this,a=e.view,c,g,d=e.lockingPartner;if(Ext.isString(i)){g=Ext.fly(e.getGroupBodyId(i),"_grouping")}else{g=Ext.fly(i,"_grouping");i=e.getGroupName(g)}c=Ext.get(e.getGroupHeaderId(i));if(!e.collapsedState[i]){g.addCls(e.collapsedCls);g.prev().addCls(e.hdCollapsedCls);if(h!==true){a.refreshSize()}a.fireEvent("groupcollapse",a,c,i);e.collapsedState[i]=true;if(d){d.collapse(i,b,h)}if(b){c.scrollIntoView(a.el,null,true)}}},collapseAll:function(){var d=this,b=d.view,c=b.el.select(d.eventSelector).elements,g,a=c.length;for(g=0;g<a;g++){d.collapse(Ext.fly(c[g]).next(),false,true)}b.refreshSize()},onGroupChange:function(){var d=this,e=d.getGroupField(),c,a,b;if(d.hideGroupedHeader){if(d.lastGroupField){c=d.getMenuItem(d.lastGroupField);if(c){c.setChecked(true)}}if(e){a=d.view.headerCt.getVisibleGridColumns();b=((a.length===1)&&(a[0].dataIndex==e));c=d.getMenuItem(e);if(c&&!b){c.setChecked(false)}}}d.refreshIf();d.lastGroupField=e},getMenuItem:function(b){var a=this.view,d=a.headerCt.down("gridcolumn[dataIndex="+b+"]"),c=a.headerCt.getMenu();return d?c.down("menuitem[headerId="+d.id+"]"):null},onGroupClick:function(a,c,g,d){var b=this;if(b.collapsible){if(b.collapsedState[g]){b.expand(g)}else{b.collapse(g)}}},getMetaRowTplFragments:function(){return{isRow:this.isRow,closeRow:this.closeRow}},isRow:function(){return"<tpl if=\"typeof rows === 'undefined'\">"},closeRow:function(){return"</tpl>"},mutateMetaRowTpl:function(a){a.unshift("{[this.isRow()]}");a.push("{[this.closeRow()]}")},getAdditionalData:function(e,j,g,i){var h=this.view,d=h.headerCt,c=d.items.getAt(0),b={},a;if(c){a=c.id+"-tdAttr";b[a]=this.indentByDepth(e)+" "+(i[a]?i[a]:"");b.collapsed="true";b.data=g.getData()}return b},getGroupRows:function(m,d,n,k){var i=this,c=m.children,o=m.rows=[],j=i.view,g=i.getGroupedHeader(),b=i.getGroupField(),h=-1,a,l=d.length,e;if(j.store.buffered){i.collapsible=false}m.viewId=j.id;for(a=0;a<l;a++){e=d[a];if(e.get(b)==m.name){h=a}if(Ext.Array.indexOf(c,e)!=-1){o.push(Ext.apply(n[a],{depth:1}))}}m.groupField=b,m.groupHeaderId=i.getGroupHeaderId(m.name);m.groupBodyId=i.getGroupBodyId(m.name);m.fullWidth=k;m.columnName=g?g.text:b;m.groupValue=m.name;if(g&&h>-1){m.name=m.renderedValue=n[h][g.id]}if(i.collapsedState[m.name]){m.collapsedCls=i.collapsedCls;m.hdCollapsedCls=i.hdCollapsedCls}else{m.collapsedCls=m.hdCollapsedCls=""}if(i.collapsible){m.collapsibleClass=i.hdCollapsibleCls}else{m.collapsibleClass=""}return m},getGroupHeaderId:function(a){return this.view.id+"-hd-"+a},getGroupBodyId:function(a){return this.view.id+"-bd-"+a},getGroupName:function(a){var b=this,c;c=Ext.fly(a).findParent(b.eventSelector);if(c){return c.id.split(this.view.id+"-hd-")[1]}c=Ext.fly(a).findParent(b.bodySelector);if(c){return c.id.split(this.view.id+"-bd-")[1]}},collectData:function(c,p,n,k,a){var h=this,l=h.view.store,j=h.collapsedState,e,d,b,i,m;if(h.startCollapsed){h.startCollapsed=false;e=true}if(!h.disabled&&l.isGrouped()){a.rows=b=l.getGroups();i=b.length;for(d=0;d<i;d++){m=b[d];if(e){j[m.name]=true}h.getGroupRows(m,c,p,k)}}return a},getFireEventArgs:function(b,a,d,c){return[b,a,d,this.getGroupName(d),c]}});Ext.define("Ext.grid.feature.GroupingSummary",{extend:"Ext.grid.feature.Grouping",alias:"feature.groupingsummary",mixins:{summary:"Ext.grid.feature.AbstractSummary"},init:function(){this.mixins.summary.init.call(this)},getFeatureTpl:function(){var a=this.callParent(arguments);if(this.showSummaryRow){a=a.replace("</tpl>","");a+="{[this.printSummaryRow(xindex)]}</tpl>"}return a},getFragmentTpl:function(){var b=this,a=b.callParent();Ext.apply(a,b.getSummaryFragments());if(b.showSummaryRow){b.summaryGroups=b.view.store.getGroups();b.summaryData=b.generateSummaryData()}return a},getPrintData:function(j){var k=this,e=k.view.headerCt.getColumnsForTpl(),h=0,b=e.length,g=[],a=k.summaryGroups[j-1].name,d=k.summaryData[a],c;for(;h<b;++h){c=e[h];c.gridSummaryValue=this.getColumnValue(c,d);g.push(c)}return g},generateSummaryData:function(){var t=this,u={},n={},h=t.view.store,r=this.getGroupField(),a=h.proxy.reader,q=t.summaryGroups,b=t.view.headerCt.getColumnsForTpl(),j,o,e,c,m,v,p,k,l,g,d;for(o=0,e=q.length;o<e;++o){u[q[o].name]={}}if(t.remoteRoot&&a.rawData){m=a.root;a.root=t.remoteRoot;a.buildExtractors(true);k=a.getRoot(a.rawData);g=k.length;if(!a.convertRecordData){a.buildExtractors()}for(l=0;l<g;l++){d={};a.convertRecordData(d,k[l]);n[d[r]]=d}a.root=m;a.buildExtractors(true)}for(o=0,e=b.length;o<e;++o){p=Ext.getCmp(b[o].id);c=t.getSummary(h,p.summaryType,p.dataIndex,true);for(v in c){if(c.hasOwnProperty(v)){u[v][p.id]=c[v]}}for(v in n){if(n.hasOwnProperty(v)){j=n[v][p.dataIndex];if(j!==undefined&&u[v]!==undefined){u[v][p.id]=j}}}}return u}});Ext.define("Ext.grid.feature.RowBody",{extend:"Ext.grid.feature.Feature",alias:"feature.rowbody",rowBodyHiddenCls:Ext.baseCSSPrefix+"grid-row-body-hidden",rowBodyTrCls:Ext.baseCSSPrefix+"grid-rowbody-tr",rowBodyTdCls:Ext.baseCSSPrefix+"grid-cell-rowbody",rowBodyDivCls:Ext.baseCSSPrefix+"grid-rowbody",eventPrefix:"rowbody",eventSelector:"."+Ext.baseCSSPrefix+"grid-rowbody-tr",getRowBody:function(a){return['<tr class="'+this.rowBodyTrCls+' {rowBodyCls}">','<td class="'+this.rowBodyTdCls+'" colspan="{rowBodyColspan}">','<div class="'+this.rowBodyDivCls+'">{rowBody}</div>',"</td>","</tr>"].join("")},getMetaRowTplFragments:function(){return{getRowBody:this.getRowBody,rowBodyTrCls:this.rowBodyTrCls,rowBodyTdCls:this.rowBodyTdCls,rowBodyDivCls:this.rowBodyDivCls}},mutateMetaRowTpl:function(a){a.push("{[this.getRowBody(values)]}")},getAdditionalData:function(c,a,b,g){var d=this.view.headerCt,e=d.getColumnCount();return{rowBody:"",rowBodyCls:this.rowBodyCls,rowBodyColspan:e}}});Ext.define("Ext.grid.feature.RowWrap",{extend:"Ext.grid.feature.Feature",alias:"feature.rowwrap",hasFeatureEvent:false,init:function(){if(!this.disabled){this.enable()}},getRowSelector:function(){return"tr:has(> "+this.view.cellSelector+")"},enable:function(){var b=this,a=b.view;b.callParent();b.savedRowSelector=a.rowSelector;a.rowSelector=b.getRowSelector();a.getComponentLayout().getColumnSelector=b.getColumnSelector},disable:function(){var c=this,a=c.view,b=c.savedRowSelector;c.callParent();if(b){a.rowSelector=b}delete c.savedRowSelector},mutateMetaRowTpl:function(a){var b=Ext.baseCSSPrefix;a[0]=a[0].replace(b+"grid-row","");a[0]=a[0].replace("{[this.embedRowCls()]}","");a.unshift('<table class="'+b+"grid-table "+b+'grid-table-resizer" style="width: {[this.embedFullWidth()]}px;">');a.unshift('<tr class="'+b+'grid-row {[this.embedRowCls()]}"><td colspan="{[this.embedColSpan()]}"><div class="'+b+'grid-rowwrap-div">');a.push("</table>");a.push("</div></td></tr>")},embedColSpan:function(){return"{colspan}"},embedFullWidth:function(){return"{fullWidth}"},getAdditionalData:function(h,p,k,m){var d=this.view.headerCt,c=d.getColumnCount(),n=d.getFullWidth(),l=d.query("gridcolumn"),q=l.length,g=0,b={colspan:c,fullWidth:n},a,j,e;for(;g<q;g++){a=l[g].id;j=a+"-tdCls";e=Ext.baseCSSPrefix+"grid-col-resizer-"+a;b[j]=e+" "+(m[j]?m[j]:"");b[a+"-tdAttr"]=' style="width: '+(l[g].hidden?0:l[g].getDesiredWidth())+'px;" ';if(m[a+"-tdAttr"]){b[a+"-tdAttr"]+=m[a+"-tdAttr"]}}return b},getMetaRowTplFragments:function(){return{embedFullWidth:this.embedFullWidth,embedColSpan:this.embedColSpan}},getColumnSelector:function(b){var a=Ext.baseCSSPrefix+"grid-col-resizer-"+b.id;return"th."+a+",td."+a}});Ext.define("Ext.grid.feature.Summary",{extend:"Ext.grid.feature.AbstractSummary",alias:"feature.summary",getFragmentTpl:function(){this.summaryData=this.generateSummaryData();return this.getSummaryFragments()},getTableFragments:function(){if(this.showSummaryRow){return{closeRows:this.closeRows}}},closeRows:function(){return"</tpl>{[this.printSummaryRow()]}"},getPrintData:function(a){var g=this,c=g.view.headerCt.getColumnsForTpl(),b=0,e=c.length,h=[],j=g.summaryData,d;for(;b<e;++b){d=c[b];d.gridSummaryValue=this.getColumnValue(d,j);h.push(d)}return h},generateSummaryData:function(){var h=this,d={},j=h.view.store,c=h.view.headerCt.getColumnsForTpl(),e=0,a=c.length,b,k,g;for(e=0,a=c.length;e<a;++e){g=Ext.getCmp(c[e].id);d[g.id]=h.getSummary(j,g.summaryType,g.dataIndex,false)}return d}});Ext.define("Ext.grid.plugin.Editing",{alias:"editing.editing",extend:"Ext.AbstractPlugin",requires:["Ext.grid.column.Column","Ext.util.KeyNav"],mixins:{observable:"Ext.util.Observable"},clicksToEdit:2,triggerEvent:undefined,defaultFieldXType:"textfield",editStyle:"",constructor:function(a){var b=this;b.addEvents("beforeedit","edit","validateedit","canceledit");b.callParent(arguments);b.mixins.observable.constructor.call(b);b.on("edit",function(c,d){b.fireEvent("afteredit",c,d)})},init:function(a){var b=this;b.grid=a;b.view=a.view;b.initEvents();b.mon(a,"reconfigure",b.onReconfigure,b);b.onReconfigure();a.relayEvents(b,["beforeedit","edit","validateedit","canceledit"]);a.isEditable=true;a.editingPlugin=a.view.editingPlugin=b},onReconfigure:function(){this.initFieldAccessors(this.view.getGridColumns())},destroy:function(){var b=this,a=b.grid;Ext.destroy(b.keyNav);b.removeFieldAccessors(a.getView().getGridColumns());b.clearListeners();delete b.grid.editingPlugin;delete b.grid.view.editingPlugin;delete b.grid;delete b.view;delete b.editor;delete b.keyNav},getEditStyle:function(){return this.editStyle},initFieldAccessors:function(a){a=[].concat(a);var d=this,g,e=a.length,b;for(g=0;g<e;g++){b=a[g];Ext.applyIf(b,{getEditor:function(c,h){return d.getColumnField(this,h)},setEditor:function(c){d.setColumnField(this,c)}})}},removeFieldAccessors:function(a){a=[].concat(a);var e,d=a.length,b;for(e=0;e<d;e++){b=a[e];delete b.getEditor;delete b.setEditor}},getColumnField:function(b,a){var c=b.field;if(!c&&b.editor){c=b.editor;delete b.editor}if(!c&&a){c=a}if(c){if(Ext.isString(c)){c={xtype:c}}if(!c.isFormField){c=Ext.ComponentManager.create(c,this.defaultFieldXType)}b.field=c;Ext.apply(c,{name:b.dataIndex});return c}},setColumnField:function(a,b){if(Ext.isObject(b)&&!b.isFormField){b=Ext.ComponentManager.create(b,this.defaultFieldXType)}a.field=b},initEvents:function(){var a=this;a.initEditTriggers();a.initCancelTriggers()},initCancelTriggers:Ext.emptyFn,initEditTriggers:function(){var b=this,a=b.view;if(b.triggerEvent=="cellfocus"){b.mon(a,"cellfocus",b.onCellFocus,b)}else{if(b.triggerEvent=="rowfocus"){b.mon(a,"rowfocus",b.onRowFocus,b)}else{if(a.selModel.isCellModel){a.onCellFocus=Ext.Function.bind(b.beforeViewCellFocus,b)}b.mon(a,b.triggerEvent||("cell"+(b.clicksToEdit===1?"click":"dblclick")),b.onCellClick,b)}}b.initAddRemoveHeaderEvents();a.on("render",b.initKeyNavHeaderEvents,b,{single:true})},beforeViewCellFocus:function(a){if(this.view.selModel.keyNavigation||!this.editing||!this.isCellEditable||!this.isCellEditable(a.row,a.columnHeader)){this.view.focusCell.apply(this.view,arguments)}},onRowFocus:function(a,c,b){this.startEdit(c,0)},onCellFocus:function(c,b,a){this.startEdit(a.row,a.column)},onCellClick:function(c,a,i,b,h,d,g){if(!c.expanderSelector||!g.getTarget(c.expanderSelector)){this.startEdit(b,c.getHeaderAtIndex(i))}},initAddRemoveHeaderEvents:function(){var a=this;a.mon(a.grid.headerCt,{scope:a,add:a.onColumnAdd,remove:a.onColumnRemove})},initKeyNavHeaderEvents:function(){var a=this;a.keyNav=Ext.create("Ext.util.KeyNav",a.view.el,{enter:a.onEnterKey,esc:a.onEscKey,scope:a})},onColumnAdd:function(a,b){if(b.isHeader){this.initFieldAccessors(b)}},onColumnRemove:function(a,b){if(b.isHeader){this.removeFieldAccessors(b)}},onEnterKey:function(h){var d=this,c=d.grid,b=c.getSelectionModel(),a,i,g=c.headerCt.getHeaderAtIndex(0);if(b.getCurrentPosition){i=b.getCurrentPosition();if(i){a=c.store.getAt(i.row);g=c.headerCt.getHeaderAtIndex(i.column)}}else{a=b.getLastSelected()}if(a&&g){d.startEdit(a,g)}},onEscKey:function(a){this.cancelEdit()},beforeEdit:Ext.emptyFn,startEdit:function(a,d){var c=this,b=c.getEditingContext(a,d);if(b==null||c.beforeEdit(b)===false||c.fireEvent("beforeedit",c,b)===false||b.cancel||!c.grid.view.isVisible(true)){return false}c.context=b;c.editing=true},getEditingContext:function(b,h){var g=this,c=g.grid,a=c.getView(),e=a.getNode(b),d,i;if(!e){return}h=c.headerCt.getVisibleHeaderClosestToIndex(Ext.isNumber(h)?h:h.getIndex());if(!h){return}i=h.getIndex();if(Ext.isNumber(b)){d=b;b=a.getRecord(e)}else{d=a.indexOf(e)}return{grid:c,record:b,field:h.dataIndex,value:b.get(h.dataIndex),row:a.getNode(d),column:h,rowIdx:d,colIdx:i}},cancelEdit:function(){var a=this;a.editing=false;a.fireEvent("canceledit",a,a.context)},completeEdit:function(){var a=this;if(a.editing&&a.validateEdit()){a.fireEvent("edit",a,a.context)}delete a.context;a.editing=false},validateEdit:function(){var b=this,a=b.context;return b.fireEvent("validateedit",b,a)!==false&&!a.cancel}});Ext.define("Ext.grid.plugin.CellEditing",{alias:"plugin.cellediting",extend:"Ext.grid.plugin.Editing",requires:["Ext.grid.CellEditor","Ext.util.DelayedTask"],constructor:function(){this.callParent(arguments);this.editors=new Ext.util.MixedCollection(false,function(a){return a.editorId});this.editTask=new Ext.util.DelayedTask()},onReconfigure:function(){this.editors.clear();this.callParent()},destroy:function(){var a=this;a.editTask.cancel();a.editors.each(Ext.destroy,Ext);a.editors.clear();a.callParent(arguments)},onBodyScroll:function(){var c=this,b=c.getActiveEditor(),a=c.view.el.getScroll();if(b&&b.editing){if(a.top!==c.scroll.top){if(b.field){if(b.field.triggerBlur){b.field.triggerBlur()}else{b.field.blur()}}}else{b.realign()}}c.scroll=a},initCancelTriggers:function(){var c=this,b=c.grid,a=b.view;a.addElListener("mousewheel",c.cancelEdit,c);c.mon(a,"bodyscroll",c.onBodyScroll,c);c.mon(b,{columnresize:c.cancelEdit,columnmove:c.cancelEdit,scope:c})},isCellEditable:function(a,d){var c=this,b=c.getEditingContext(a,d);if(c.grid.view.isVisible(true)&&b){d=b.column;a=b.record;if(d&&c.getEditor(a,d)){return true}}},startEdit:function(a,g){var d=this,c=d.getEditingContext(a,g),e,b;d.completeEdit();if(!c||!d.grid.view.isVisible(true)){return false}a=c.record;g=c.column;if(g&&!g.getEditor(a)){return false}e=a.get(g.dataIndex);c.originalValue=c.value=e;if(d.beforeEdit(c)===false||d.fireEvent("beforeedit",d,c)===false||c.cancel){return false}b=d.getEditor(a,g);d.grid.view.cancelFocus();d.view.focusCell({row:c.rowIdx,column:c.colIdx});if(b){d.editTask.delay(15,d.showEditor,d,[b,c,e]);return true}return false},showEditor:function(b,c,h){var e=this,a=c.record,g=c.column,i=e.grid.getSelectionModel(),d=i.getCurrentPosition();e.context=c;e.setActiveEditor(b);e.setActiveRecord(a);e.setActiveColumn(g);if(i.selectByPosition&&(!d||d.column!==c.colIdx||d.row!==c.rowIdx)){i.selectByPosition({row:c.rowIdx,column:c.colIdx})}b.startEdit(e.getCell(a,g),h);e.editing=true;e.scroll=e.view.el.getScroll()},completeEdit:function(){var a=this.getActiveEditor();if(a){a.completeEdit();this.editing=false}},setActiveEditor:function(a){this.activeEditor=a},getActiveEditor:function(){return this.activeEditor},setActiveColumn:function(a){this.activeColumn=a},getActiveColumn:function(){return this.activeColumn},setActiveRecord:function(a){this.activeRecord=a},getActiveRecord:function(){return this.activeRecord},getEditor:function(a,d){var g=this,e=g.editors,c=d.getItemId(),b=e.getByKey(c);if(b){return b}else{b=d.getEditor(a);if(!b){return false}if(!(b instanceof Ext.grid.CellEditor)){b=new Ext.grid.CellEditor({editorId:c,field:b,ownerCt:g.grid})}else{b.ownerCt=g.grid}b.editingPlugin=g;b.isForTree=g.grid.isTree;b.on({scope:g,specialkey:g.onSpecialKey,complete:g.onEditComplete,canceledit:g.cancelEdit});e.add(b);return b}},setColumnField:function(b,c){var a=this.editors.getByKey(b.getItemId());Ext.destroy(a,b.field);this.editors.removeAtKey(b.getItemId());this.callParent(arguments)},getCell:function(a,b){return this.grid.getView().getCell(a,b)},onSpecialKey:function(a,g,d){var c=this,b=c.grid,h;if(d.getKey()===d.TAB){d.stopEvent();if(a){a.onEditorTab(d)}h=b.getSelectionModel();if(h.onEditorTab){h.onEditorTab(c,d)}}},onEditComplete:function(c,h,b){var g=this,d=g.grid,e=g.getActiveColumn(),i=d.getSelectionModel(),a;if(e){a=g.context.record;g.setActiveEditor(null);g.setActiveColumn(null);g.setActiveRecord(null);if(!g.validateEdit()){return}if(!a.isEqual(h,b)){a.set(e.dataIndex,h)}if(i.setCurrentPosition){i.setCurrentPosition(i.getCurrentPosition())}d.getView().getEl(e).focus();g.context.value=h;g.fireEvent("edit",g,g.context)}},cancelEdit:function(){var c=this,b=c.getActiveEditor(),a=c.grid.getView().getEl(c.getActiveColumn());c.setActiveEditor(null);c.setActiveColumn(null);c.setActiveRecord(null);if(b){b.cancelEdit();a.focus();c.callParent(arguments)}},startEditByPosition:function(a){a.column=this.view.getHeaderCt().getVisibleHeaderClosestToIndex(a.column).getIndex();return this.startEdit(a.row,a.column)}});Ext.define("Ext.grid.plugin.DragDrop",{extend:"Ext.AbstractPlugin",alias:"plugin.gridviewdragdrop",uses:["Ext.view.DragZone","Ext.grid.ViewDropZone"],dragText:"{0} selected row{1}",ddGroup:"GridDD",enableDrop:true,enableDrag:true,init:function(a){a.on("render",this.onViewRender,this,{single:true})},destroy:function(){Ext.destroy(this.dragZone,this.dropZone)},enable:function(){var a=this;if(a.dragZone){a.dragZone.unlock()}if(a.dropZone){a.dropZone.unlock()}a.callParent()},disable:function(){var a=this;if(a.dragZone){a.dragZone.lock()}if(a.dropZone){a.dropZone.lock()}a.callParent()},onViewRender:function(a){var b=this;if(b.enableDrag){b.dragZone=new Ext.view.DragZone({view:a,ddGroup:b.dragGroup||b.ddGroup,dragText:b.dragText})}if(b.enableDrop){b.dropZone=new Ext.grid.ViewDropZone({view:a,ddGroup:b.dropGroup||b.ddGroup})}}});Ext.define("Ext.grid.plugin.RowEditing",{extend:"Ext.grid.plugin.Editing",alias:"plugin.rowediting",requires:["Ext.grid.RowEditor"],editStyle:"row",autoCancel:true,errorSummary:true,constructor:function(){var a=this;a.callParent(arguments);if(!a.clicksToMoveEditor){a.clicksToMoveEditor=a.clicksToEdit}a.autoCancel=!!a.autoCancel},init:function(a){this.callParent([a])},destroy:function(){var a=this;Ext.destroy(a.editor);a.callParent(arguments)},startEdit:function(a,d){var c=this,b=c.getEditor();if((b.beforeEdit()!==false)&&(c.callParent(arguments)!==false)){b.startEdit(c.context.record,c.context.column);return true}return false},cancelEdit:function(){var a=this;if(a.editing){a.getEditor().cancelEdit();a.callParent(arguments)}},completeEdit:function(){var a=this;if(a.editing&&a.validateEdit()){a.editing=false;a.fireEvent("edit",a,a.context)}},validateEdit:function(){var k=this,h=k.editor,b=k.context,g=b.record,m={},d={},j=h.items.items,i,c=j.length,a,l;for(i=0;i<c;i++){l=j[i];a=l.name;m[a]=l.getValue();d[a]=g.get(a)}Ext.apply(b,{newValues:m,originalValues:d});return k.callParent(arguments)&&k.getEditor().completeEdit()},getEditor:function(){var a=this;if(!a.editor){a.editor=a.initEditor()}return a.editor},initEditor:function(){var h=this,c=h.grid,i=h.view,d=c.headerCt,e=["saveBtnText","cancelBtnText","errorsText","dirtyText"],j,a=e.length,g={autoCancel:h.autoCancel,errorSummary:h.errorSummary,fields:d.getGridColumns(),hidden:true,view:i,editingPlugin:h,renderTo:i.el},k;for(j=0;j<a;j++){k=e[j];if(Ext.isDefined(h[k])){g[k]=h[k]}}return Ext.create("Ext.grid.RowEditor",g)},initEditTriggers:function(){var b=this,a=b.view,c=b.clicksToMoveEditor===1?"click":"dblclick";b.callParent(arguments);if(b.clicksToMoveEditor!==b.clicksToEdit){b.mon(a,"cell"+c,b.moveEditorByClick,b)}a.on({render:function(){b.mon(b.grid.headerCt,{scope:b,columnresize:b.onColumnResize,columnhide:b.onColumnHide,columnshow:b.onColumnShow,columnmove:b.onColumnMove})},single:true})},startEditByClick:function(){var a=this;if(!a.editing||a.clicksToMoveEditor===a.clicksToEdit){a.callParent(arguments)}},moveEditorByClick:function(){var a=this;if(a.editing){a.superclass.onCellClick.apply(a,arguments)}},onColumnAdd:function(a,c){if(c.isHeader){var d=this,b;d.initFieldAccessors(c);b=d.editor;if(b&&b.onColumnAdd){b.onColumnAdd(c)}}},onColumnRemove:function(a,c){if(c.isHeader){var d=this,b=d.getEditor();if(b&&b.onColumnRemove){b.onColumnRemove(c)}d.removeFieldAccessors(c)}},onColumnResize:function(a,d,c){if(d.isHeader){var e=this,b=e.getEditor();if(b&&b.onColumnResize){b.onColumnResize(d,c)}}},onColumnHide:function(a,c){var d=this,b=d.getEditor();if(b&&b.onColumnHide){b.onColumnHide(c)}},onColumnShow:function(a,c){var d=this,b=d.getEditor();if(b&&b.onColumnShow){b.onColumnShow(c)}},onColumnMove:function(a,d,c,g){var e=this,b=e.getEditor();if(b&&b.onColumnMove){b.onColumnMove(d,c,g-(g>c?1:0))}},setColumnField:function(b,d){var c=this,a=c.getEditor();a.removeField(b);c.callParent(arguments);c.getEditor().setField(b)}});Ext.define("Ext.grid.property.Grid",{extend:"Ext.grid.Panel",alias:"widget.propertygrid",alternateClassName:"Ext.grid.PropertyGrid",uses:["Ext.grid.plugin.CellEditing","Ext.grid.property.Store","Ext.grid.property.HeaderContainer","Ext.XTemplate","Ext.grid.CellEditor","Ext.form.field.Date","Ext.form.field.Text","Ext.form.field.Number","Ext.form.field.ComboBox"],valueField:"value",nameField:"name",enableColumnMove:false,columnLines:true,stripeRows:false,trackMouseOver:false,clicksToEdit:1,enableHdMenu:false,initComponent:function(){var a=this;a.addCls(Ext.baseCSSPrefix+"property-grid");a.plugins=a.plugins||[];a.plugins.push(new Ext.grid.plugin.CellEditing({clicksToEdit:a.clicksToEdit,startEdit:function(b,c){return this.self.prototype.startEdit.call(this,b,a.headerCt.child("#"+a.valueField))}}));a.selModel={selType:"cellmodel",onCellSelect:function(b){if(b.column!=1){b.column=1}return this.self.prototype.onCellSelect.call(this,b)}};a.customRenderers=a.customRenderers||{};a.customEditors=a.customEditors||{};if(!a.store){a.propStore=a.store=new Ext.grid.property.Store(a,a.source)}if(a.sortableColumns){a.store.sort("name","ASC")}a.columns=new Ext.grid.property.HeaderContainer(a,a.store);a.addEvents("beforepropertychange","propertychange");a.callParent();a.getView().walkCells=this.walkCells;a.editors={date:new Ext.grid.CellEditor({field:new Ext.form.field.Date({selectOnFocus:true})}),string:new Ext.grid.CellEditor({field:new Ext.form.field.Text({selectOnFocus:true})}),number:new Ext.grid.CellEditor({field:new Ext.form.field.Number({selectOnFocus:true})}),"boolean":new Ext.grid.CellEditor({field:new Ext.form.field.ComboBox({editable:false,store:[[true,a.headerCt.trueText],[false,a.headerCt.falseText]]})})};a.store.on("update",a.onUpdate,a)},onUpdate:function(d,a,c){var g=this,b,e;if(g.rendered&&c==Ext.data.Model.EDIT){b=a.get(g.valueField);e=a.modified.value;if(g.fireEvent("beforepropertychange",g.source,a.getId(),b,e)!==false){if(g.source){g.source[a.getId()]=b}a.commit();g.fireEvent("propertychange",g.source,a.getId(),b,e)}else{a.reject()}}},walkCells:function(h,g,d,c,a,b){if(g=="left"){g="up"}else{if(g=="right"){g="down"}}h=Ext.view.Table.prototype.walkCells.call(this,h,g,d,c,a,b);if(!h.column){h.column=1}return h},getCellEditor:function(a,c){var d=this,e=a.get(d.nameField),g=a.get(d.valueField),b=d.customEditors[e];if(b){if(!(b instanceof Ext.grid.CellEditor)){if(!(b instanceof Ext.form.field.Base)){b=Ext.ComponentManager.create(b,"textfield")}b=d.customEditors[e]=new Ext.grid.CellEditor({field:b})}}else{if(Ext.isDate(g)){b=d.editors.date}else{if(Ext.isNumber(g)){b=d.editors.number}else{if(Ext.isBoolean(g)){b=d.editors["boolean"]}else{b=d.editors.string}}}}b.editorId=e;return b},beforeDestroy:function(){var a=this;a.callParent();a.destroyEditors(a.editors);a.destroyEditors(a.customEditors);delete a.source},destroyEditors:function(b){for(var a in b){if(b.hasOwnProperty(a)){Ext.destroy(b[a])}}},setSource:function(a){this.source=a;this.propStore.setSource(a)},getSource:function(){return this.propStore.getSource()},setProperty:function(c,b,a){this.propStore.setValue(c,b,a)},removeProperty:function(a){this.propStore.remove(a)}});Ext.define("Ext.grid.property.HeaderContainer",{extend:"Ext.grid.header.Container",alternateClassName:"Ext.grid.PropertyColumnModel",nameWidth:115,nameText:"Name",valueText:"Value",dateFormat:"m/j/Y",trueText:"true",falseText:"false",nameColumnCls:Ext.baseCSSPrefix+"grid-property-name",constructor:function(b,a){var c=this;c.grid=b;c.store=a;c.callParent([{items:[{header:c.nameText,width:b.nameColumnWidth||c.nameWidth,sortable:b.sortableColumns,dataIndex:b.nameField,renderer:Ext.Function.bind(c.renderProp,c),itemId:b.nameField,menuDisabled:true,tdCls:c.nameColumnCls},{header:c.valueText,renderer:Ext.Function.bind(c.renderCell,c),getEditor:Ext.Function.bind(c.getCellEditor,c),sortable:b.sortableColumns,flex:1,fixed:true,dataIndex:b.valueField,itemId:b.valueField,menuDisabled:true}]}])},getCellEditor:function(a){return this.grid.getCellEditor(a,this)},renderProp:function(a){return this.getPropertyName(a)},renderCell:function(g,d,e){var b=this,c=b.grid.customRenderers[e.get(b.grid.nameField)],a=g;if(c){return c.apply(b,arguments)}if(Ext.isDate(g)){a=b.renderDate(g)}else{if(Ext.isBoolean(g)){a=b.renderBool(g)}}return Ext.util.Format.htmlEncode(a)},renderDate:Ext.util.Format.date,renderBool:function(a){return this[a?"trueText":"falseText"]},getPropertyName:function(b){var a=this.grid.propertyNames;return a&&a[b]?a[b]:b}});Ext.define("Ext.grid.property.Property",{extend:"Ext.data.Model",alternateClassName:"Ext.PropGridProperty",fields:[{name:"name",type:"string"},{name:"value"}],idProperty:"name"});Ext.define("Ext.grid.property.Store",{extend:"Ext.data.Store",alternateClassName:"Ext.grid.PropertyStore",sortOnLoad:false,uses:["Ext.data.reader.Reader","Ext.data.proxy.Proxy","Ext.data.ResultSet","Ext.grid.property.Property"],constructor:function(a,c){var b=this;b.grid=a;b.source=c;b.callParent([{data:c,model:Ext.grid.property.Property,proxy:b.getProxy()}])},getProxy:function(){if(!this.proxy){Ext.grid.property.Store.prototype.proxy=new Ext.data.proxy.Memory({model:Ext.grid.property.Property,reader:this.getReader()})}return this.proxy},getReader:function(){if(!this.reader){Ext.grid.property.Store.prototype.reader=new Ext.data.reader.Reader({model:Ext.grid.property.Property,buildExtractors:Ext.emptyFn,read:function(a){return this.readRecords(a)},readRecords:function(b){var d,c,a={records:[],success:true};for(c in b){if(b.hasOwnProperty(c)){d=b[c];if(this.isEditableValue(d)){a.records.push(new Ext.grid.property.Property({name:c,value:d},c))}}}a.total=a.count=a.records.length;return new Ext.data.ResultSet(a)},isEditableValue:function(a){return Ext.isPrimitive(a)||Ext.isDate(a)}})}return this.reader},setSource:function(a){var b=this;b.source=a;b.suspendEvents();b.removeAll();b.proxy.data=a;b.load();b.resumeEvents();b.fireEvent("datachanged",b);b.fireEvent("refresh",b)},getProperty:function(a){return Ext.isNumber(a)?this.getAt(a):this.getById(a)},setValue:function(e,c,a){var b=this,d=b.getRec(e);if(d){d.set("value",c);b.source[e]=c}else{if(a){b.source[e]=c;d=new Ext.grid.property.Property({name:e,value:c},e);b.add(d)}}},remove:function(b){var a=this.getRec(b);if(a){this.callParent([a]);delete this.source[b]}},getRec:function(a){return this.getById(a)},getSource:function(){return this.source}});Ext.define("Ext.layout.ClassList",(function(){var b=Ext.String.splitWords,a=Ext.Array.toMap;return{dirty:false,constructor:function(c){this.owner=c;this.map=a(this.classes=b(c.el.className))},add:function(c){var d=this;if(!d.map[c]){d.map[c]=true;d.classes.push(c);if(!d.dirty){d.dirty=true;d.owner.markDirty()}}},addMany:function(c){Ext.each(b(c),this.add,this)},contains:function(c){return this.map[c]},flush:function(){this.owner.el.className=this.classes.join(" ");this.dirty=false},remove:function(c){var d=this;if(d.map[c]){delete d.map[c];d.classes=Ext.Array.filter(d.classes,function(e){return e!=c});if(!d.dirty){d.dirty=true;d.owner.markDirty()}}},removeMany:function(d){var e=this,c=a(b(d));e.classes=Ext.Array.filter(e.classes,function(g){if(!c[g]){return true}delete e.map[g];if(!e.dirty){e.dirty=true;e.owner.markDirty()}return false})}}}()));Ext.define("Ext.util.Queue",{constructor:function(){this.clear()},add:function(c){var b=this,a=b.getKey(c);if(!b.map[a]){++b.length;b.items.push(c);b.map[a]=c}return c},clear:function(){var b=this,a=b.items;b.items=[];b.map={};b.length=0;return a},contains:function(b){var a=this.getKey(b);return this.map.hasOwnProperty(a)},getCount:function(){return this.length},getKey:function(a){return a.id},remove:function(e){var d=this,c=d.getKey(e),a=d.items,b;if(d.map[c]){b=Ext.Array.indexOf(a,e);Ext.Array.erase(a,b,1);delete d.map[c];--d.length}return e}});Ext.define("Ext.layout.ContextItem",{requires:["Ext.layout.ClassList"],heightModel:null,widthModel:null,sizeModel:null,boxChildren:null,boxParent:null,children:[],dirty:null,dirtyCount:0,hasRawContent:true,isContextItem:true,isTopLevel:false,consumersContentHeight:0,consumersContentWidth:0,consumersContainerHeight:0,consumersContainerWidth:0,consumersHeight:0,consumersWidth:0,ownerCtContext:null,remainingChildLayouts:0,remainingComponentChildLayouts:0,remainingContainerChildLayouts:0,props:null,state:null,wrapsComponent:false,constructor:function(b){var g=this,e,d,a,c,h;Ext.apply(g,b);e=g.el;g.id=e.id;g.lastBox=e.lastBox;g.flushedProps={};g.props={};g.styles={};h=g.target;if(h.isComponent){g.wrapsComponent=true;d=h.ownerCt;if(d&&(a=g.context.items[d.el.id])){g.ownerCtContext=a}g.sizeModel=c=h.getSizeModel(a&&a.widthModel.pairsByHeightOrdinal[a.heightModel.ordinal]);g.widthModel=c.width;g.heightModel=c.height}},init:function(j,c){var s=this,a=s.props,d=s.dirty,l=s.ownerCtContext,p=s.target.ownerLayout,h=!s.state,t=j||h,e,o,m,q,b,u,v=s.heightModel,g=s.widthModel,k,r;s.dirty=s.invalid=false;s.props={};if(s.boxChildren){s.boxChildren.length=0}if(!h){s.clearAllBlocks("blocks");s.clearAllBlocks("domBlocks")}if(!s.wrapsComponent){return t}u=s.target;s.state={};if(h){if(u.beforeLayout){u.beforeLayout()}if(!l&&(q=u.ownerCt)){l=s.context.items[q.el.id]}if(l){s.ownerCtContext=l;s.isBoxParent=u.ownerLayout.isItemBoxParent(s)}else{s.isTopLevel=true}s.frameBodyContext=s.getEl("frameBody")}else{l=s.ownerCtContext;s.isTopLevel=!l;e=s.children;for(o=0,m=e.length;o<m;++o){e[o].init(true)}}s.hasRawContent=!(u.isContainer&&u.items.items.length>0);if(j){s.widthModel=s.heightModel=null;b=u.getSizeModel(l&&l.widthModel.pairsByHeightOrdinal[l.heightModel.ordinal]);if(h){s.sizeModel=b}s.widthModel=b.width;s.heightModel=b.height}else{if(a){s.recoverProp("x",a,d);s.recoverProp("y",a,d);if(s.widthModel.calculated){s.recoverProp("width",a,d)}if(s.heightModel.calculated){s.recoverProp("height",a,d)}}}if(a&&p&&p.manageMargins){s.recoverProp("margin-top",a,d);s.recoverProp("margin-right",a,d);s.recoverProp("margin-bottom",a,d);s.recoverProp("margin-left",a,d)}if(c){k=c.heightModel;r=c.widthModel;if(r&&k&&g&&v){if(g.shrinkWrap&&v.shrinkWrap){if(r.constrainedMax&&k.constrainedMin){k=null}}}if(r){s.widthModel=r}if(k){s.heightModel=k}if(c.state){Ext.apply(s.state,c.state)}}return t},initContinue:function(d){var e=this,c=e.ownerCtContext,b=e.widthModel,a;if(d){if(c&&b.shrinkWrap){a=c.isBoxParent?c:c.boxParent;if(a){a.addBoxChild(e)}}else{if(b.natural){e.boxParent=c}}}return d},initDone:function(b,g,a,h){var d=this,c=d.props,e=d.state;if(g){c.componentChildrenDone=true}if(a){c.containerChildrenDone=true}if(h){c.containerLayoutDone=true}if(d.boxChildren&&d.boxChildren.length&&d.widthModel.shrinkWrap){d.el.setWidth(10000);e.blocks=(e.blocks||0)+1}},initAnimation:function(){var b=this,c=b.target,a=b.ownerCtContext;if(a&&a.isTopLevel){b.animatePolicy=c.ownerLayout.getAnimatePolicy(b)}else{if(!a&&c.isCollapsingOrExpanding&&c.animCollapse){b.animatePolicy=c.componentLayout.getAnimatePolicy(b)}}if(b.animatePolicy){b.context.queueAnimation(b)}},noFraming:{left:0,top:0,right:0,bottom:0,width:0,height:0},addCls:function(a){this.getClassList().addMany(a)},removeCls:function(a){this.getClassList().removeMany(a)},addBlock:function(b,d,e){var c=this,g=c[b]||(c[b]={}),a=g[e]||(g[e]={});if(!a[d.id]){a[d.id]=d;++d.blockCount;++c.context.blockCount}},addBoxChild:function(d){var c=this,b,a=d.widthModel;d.boxParent=this;d.measuresBox=a.shrinkWrap?d.hasRawContent:a.natural;if(d.measuresBox){b=c.boxChildren;if(b){b.push(d)}else{c.boxChildren=[d]}}},addTrigger:function(g,h){var e=this,a=h?"domTriggers":"triggers",i=e[a]||(e[a]={}),b=e.context,d=b.currentLayout,c=i[g]||(i[g]={});if(!c[d.id]){c[d.id]=d;++d.triggerCount;c=b.triggers[h?"dom":"data"];(c[d.id]||(c[d.id]=[])).push({item:this,prop:g});if(e.props[g]!==undefined){if(!h||!(e.dirty&&(g in e.dirty))){++d.firedTriggers}}}},boxChildMeasured:function(){var b=this,c=b.state,a=(c.boxesMeasured=(c.boxesMeasured||0)+1);if(a==b.boxChildren.length){c.clearBoxWidth=1;++b.context.progressCount;b.markDirty()}},borderNames:["border-top-width","border-right-width","border-bottom-width","border-left-width"],marginNames:["margin-top","margin-right","margin-bottom","margin-left"],paddingNames:["padding-top","padding-right","padding-bottom","padding-left"],trblNames:["top","right","bottom","left"],cacheMissHandlers:{borderInfo:function(a){var b=a.getStyles(a.borderNames,a.trblNames);b.width=b.left+b.right;b.height=b.top+b.bottom;return b},marginInfo:function(a){var b=a.getStyles(a.marginNames,a.trblNames);b.width=b.left+b.right;b.height=b.top+b.bottom;return b},paddingInfo:function(b){var a=b.frameBodyContext||b,c=a.getStyles(b.paddingNames,b.trblNames);c.width=c.left+c.right;c.height=c.top+c.bottom;return c}},checkCache:function(a){return this.cacheMissHandlers[a](this)},clearAllBlocks:function(a){var c=this[a],b;if(c){for(b in c){this.clearBlocks(a,b)}}},clearBlocks:function(c,g){var h=this[c],b=h&&h[g],d,e,a;if(b){delete h[g];d=this.context;for(a in b){e=b[a];--d.blockCount;if(!--e.blockCount&&!e.pending&&!e.done){d.queueLayout(e)}}}},block:function(a,b){this.addBlock("blocks",a,b)},domBlock:function(a,b){this.addBlock("domBlocks",a,b)},fireTriggers:function(b,g){var h=this[b],d=h&&h[g],c=this.context,e,a;if(d){for(a in d){e=d[a];++e.firedTriggers;if(!e.done&&!e.blockCount&&!e.pending){c.queueLayout(e)}}}},flush:function(){var b=this,a=b.dirty,c=b.state,d=b.el;b.dirtyCount=0;if(b.classList&&b.classList.dirty){b.classList.flush()}if("attributes" in b){d.set(b.attributes);delete b.attributes}if("innerHTML" in b){d.innerHTML=b.innerHTML;delete b.innerHTML}if(c&&c.clearBoxWidth){c.clearBoxWidth=0;b.el.setStyle("width",null);if(!--c.blocks){b.context.queueItemLayouts(b)}}if(a){delete b.dirty;b.writeProps(a,true)}},flushAnimations:function(){var o=this,c=o.lastBox,l,n,e,h,g,d,i,m,k,a,b;if(c){l=o.target;n=l.layout&&l.layout.animate;if(n){e=Ext.isNumber(n)?n:n.duration}h=Ext.Object.getKeys(o.animatePolicy);g=Ext.apply({},{from:{},to:{},duration:e||Ext.fx.Anim.prototype.duration},n);for(d=0,i=0,m=h.length;i<m;i++){k=h[i];a=c[k];b=o.peek(k);if(a!=b){k=o.translateProps[k]||k;g.from[k]=a;g.to[k]=b;++d}}if(d){if(o.isCollapsingOrExpanding===1){l.componentLayout.undoLayout(o)}else{o.writeProps(g.from)}o.el.animate(g);Ext.fx.Manager.getFxQueue(o.el.id)[0].on({afteranimate:function(){if(o.isCollapsingOrExpanding===1){l.componentLayout.redoLayout(o);l.afterCollapse(true)}else{if(o.isCollapsingOrExpanding===2){l.afterExpand(true)}}}})}}},getBorderInfo:function(){var a=this,b=a.borderInfo;if(!b){a.borderInfo=b=a.checkCache("borderInfo")}return b},getClassList:function(){return this.classList||(this.classList=new Ext.layout.ClassList(this))},getEl:function(c,a){var e=this,g,d,b;if(c){if(c.dom){d=c}else{g=e.target;if(a){g=a}d=g[c];if(typeof d=="function"){d=d.call(g);if(d===e.el){return this}}}if(d){b=e.context.getEl(e,d)}}return b||null},getFraming:function(){var a=this;if(!a.framingInfo){a.framingInfo=a.target.frameSize||a.noFraming}return a.framingInfo},getFrameInfo:function(){var b=this,c=b.frameInfo,d,a;if(!c){d=b.getFraming();a=b.getBorderInfo();b.frameInfo=c={top:d.top+a.top,right:d.right+a.right,bottom:d.bottom+a.bottom,left:d.left+a.left,width:d.width+a.width,height:d.height+a.height}}return c},getMarginInfo:function(){var d=this,h=d.marginInfo,b,a,g,e,c;if(!h){if(!d.wrapsComponent){h=d.checkCache("marginInfo")}else{b=d.target;e=b.ownerLayout;c=e?e.id:null;a=e&&e.manageMargins;h=b.margin$;if(h&&h.ownerId!==c){h=null}if(!h){h=d.parseMargins(b.margin)||d.checkCache("marginInfo");if(a){g=d.parseMargins(b.margins,e.defaultMargins);if(g){h={top:h.top+g.top,right:h.right+g.right,bottom:h.bottom+g.bottom,left:h.left+g.left}}d.setProp("margin-top",0);d.setProp("margin-right",0);d.setProp("margin-bottom",0);d.setProp("margin-left",0)}h.ownerId=c;b.margin$=h}h.width=h.left+h.right;h.height=h.top+h.bottom}d.marginInfo=h}return h},clearMarginCache:function(){delete this.marginInfo;delete this.target.margin$},getPaddingInfo:function(){var a=this,b=a.paddingInfo;if(!b){a.paddingInfo=b=a.checkCache("paddingInfo")}return b},getProp:function(c){var b=this,a=b.props[c];b.addTrigger(c);return a},getDomProp:function(c){var b=this,a=(b.dirty&&(c in b.dirty))?undefined:b.props[c];b.addTrigger(c,true);return a},getStyle:function(a){var c=this,b=c.styles,e,d;if(a in b){d=b[a]}else{e=c.styleInfo[a];d=c.el.getStyle(a);if(e&&e.parseInt){d=parseInt(d,10)||0}b[a]=d}return d},getStyles:function(p,b){var m=this,e=m.styles,q={},g=0,d=p.length,k,j,l,a,c,h,r,o;b=b||p;for(k=0;k<d;++k){a=p[k];if(a in e){q[b[k]]=e[a];++g;if(k&&g==1){j=p.slice(0,k);l=b.slice(0,k)}}else{if(g){(j||(j=[])).push(a);(l||(l=[])).push(b[k])}}}if(g<d){j=j||p;l=l||b;h=m.styleInfo;r=m.el.getStyle(j);for(k=j.length;k--;){a=j[k];c=h[a];o=r[a];if(c&&c.parseInt){o=parseInt(o,10)||0}q[l[k]]=o;e[a]=o}}return q},hasProp:function(b){var a=this.getProp(b);return typeof a!="undefined"},hasDomProp:function(b){var a=this.getDomProp(b);return typeof a!="undefined"},invalidate:function(a){this.context.queueInvalidate(this,a)},markDirty:function(){if(++this.dirtyCount==1){this.context.queueFlush(this)}},onBoxMeasured:function(){var a=this.boxParent,b=this.state;if(a&&a.widthModel.shrinkWrap&&!b.boxMeasured&&this.measuresBox){b.boxMeasured=1;a.boxChildMeasured()}},parseMargins:function(d,c){if(d===true){d=5}var b=typeof d,a;if(b=="string"||b=="number"){a=Ext.util.Format.parseBox(d)}else{if(d||c){a={top:0,right:0,bottom:0,left:0};if(c){Ext.apply(a,this.parseMargins(c))}Ext.apply(a,d)}}return a},peek:function(a){return this.props[a]},recoverProp:function(g,b,a){var e=this,d=e.props,c;if(g in b){d[g]=b[g];if(a&&g in a){c=e.dirty||(e.dirty={});c[g]=a[g]}}},redo:function(b){var e=this,c,a,d;e.revertProps(e.props);if(b&&e.wrapsComponent){if(e.childItems){for(d=0,c=e.childItems,a=c.length;d<a;d++){c[d].redo(b)}}for(d=0,c=e.children,a=c.length;d<a;d++){c[d].redo()}}},revertProps:function(d){var a,b=this.flushedProps,c={};for(a in d){if(b.hasOwnProperty(a)){c[a]=d[a]}}this.writeProps(c)},setAttribute:function(a,c){var b=this;if(!b.attributes){b.attributes={}}b.attributes[a]=c;b.markDirty()},setBox:function(b){var a=this;if("left" in b){a.setProp("x",b.left)}if("top" in b){a.setProp("y",b.top)}a.setSize(b.width,b.height)},setContentHeight:function(a,b){if(!b&&this.hasRawContent){return 1}return this.setProp("contentHeight",a)},setContentWidth:function(b,a){if(!a&&this.hasRawContent){return 1}return this.setProp("contentWidth",b)},setContentSize:function(c,a,b){return this.setContentWidth(c,b)+this.setContentHeight(a,b)==2},setProp:function(d,c,a){var b=this,h=typeof c,g,e;if(h=="undefined"||(h==="number"&&isNaN(c))){return 0}if(b.props[d]===c){return 1}b.props[d]=c;++b.context.progressCount;if(a===false){b.fireTriggers("domTriggers",d);b.clearBlocks("domBlocks",d)}else{e=b.styleInfo[d];if(e){if(!b.dirty){b.dirty={}}if(d=="width"||d=="height"){g=b.isBorderBoxValue;if(g==null){b.isBorderBoxValue=g=!!b.el.isBorderBox()}if(!g){b.borderInfo||b.getBorderInfo();b.paddingInfo||b.getPaddingInfo()}}b.dirty[d]=c;b.markDirty()}}b.fireTriggers("triggers",d);b.clearBlocks("blocks",d);return 1},setHeight:function(a,c){var e=this,b=e.target,h,d,g;if(a<0){a=0}if(!e.wrapsComponent){if(!e.setProp("height",a,c)){return NaN}}else{a=Ext.Number.constrain(a,b.minHeight||0,b.maxHeight);if(!e.setProp("height",a,c)){return NaN}h=e.frameBodyContext;if(h){d=e.getFrameInfo();h.setHeight(a-d.height,c)}}return a},setWidth:function(c,b){var e=this,a=e.target,h,d,g;if(c<0){c=0}if(!e.wrapsComponent){if(!e.setProp("width",c,b)){return NaN}}else{c=Ext.Number.constrain(c,a.minWidth||0,a.maxWidth);if(!e.setProp("width",c,b)){return NaN}h=e.frameBodyContext;if(h){d=e.getFrameInfo();h.setWidth(c-d.width,b)}}return c},setSize:function(c,a,b){this.setWidth(c,b);this.setHeight(a,b)},translateProps:{x:"left",y:"top"},undo:function(b){var e=this,c,a,d;e.revertProps(e.lastBox);if(b&&e.wrapsComponent){if(e.childItems){for(d=0,c=e.childItems,a=c.length;d<a;d++){c[d].undo(b)}}for(d=0,c=e.children,a=c.length;d<a;d++){c[d].undo()}}},unsetProp:function(b){var a=this.dirty;delete this.props[b];if(a){delete a[b]}},writeProps:function(e,d){if(!(e&&typeof e=="object")){return}var C=this,c=C.el,i={},h=0,b=C.styleInfo,B,n,r,m="x" in e,l="y" in e,k=e.x,j=e.y,t=e.width,p=e.height,A=C.isBorderBoxValue,D=C.target,v=Math.max,z=0,o=0,g,a,s,u,w,q;if("displayed" in e){c.setDisplayed(e.displayed)}for(n in e){if(d){C.fireTriggers("domTriggers",n);C.clearBlocks("domBlocks",n);C.flushedProps[n]=1}B=b[n];if(B&&B.dom){if(B.suffix&&(r=parseInt(e[n],10))){i[n]=r+B.suffix}else{i[n]=e[n]}++h}}if(m||l){if(D.isComponent){D.setPosition(k||C.props.x,j||C.props.y)}else{if(m){i.left=k+"px";++h}if(l){i.top=j+"px";++h}}}if(!A&&(t>0||p>0)){if(!C.frameBodyContext){z=C.paddingInfo.width;o=C.paddingInfo.height}if(t){t=v(parseInt(t,10)-(C.borderInfo.width+z),0);i.width=t+"px";++h}if(p){p=v(parseInt(p,10)-(C.borderInfo.height+o),0);i.height=p+"px";++h}}if(C.wrapsComponent&&Ext.isIE9&&Ext.isStrict){if((g=t!==undefined&&C.hasOverflowY)||(a=p!==undefined&&C.hasOverflowX)){s=C.isAbsolute;if(s===undefined){s=false;q=C.target.getTargetEl();w=q.getStyle("position");if(w=="absolute"){w=q.getStyle("box-sizing");s=(w=="border-box")}C.isAbsolute=s}if(s){u=Ext.getScrollbarSize();if(g){t=parseInt(t,10)+u.width;i.width=t+"px";++h}if(a){p=parseInt(p,10)+u.height;i.height=p+"px";++h}}}}if(h){c.setStyle(i)}}},function(){var c={dom:true,parseInt:true,suffix:"px"},b={dom:true},a={dom:false};this.prototype.styleInfo={childrenDone:a,componentChildrenDone:a,containerChildrenDone:a,containerLayoutDone:a,displayed:a,done:a,x:a,y:a,columnWidthsDone:a,left:c,top:c,right:c,bottom:c,width:c,height:c,"border-top-width":c,"border-right-width":c,"border-bottom-width":c,"border-left-width":c,"margin-top":c,"margin-right":c,"margin-bottom":c,"margin-left":c,"padding-top":c,"padding-right":c,"padding-bottom":c,"padding-left":c,"line-height":b,display:b}});Ext.define("Ext.layout.Context",{requires:["Ext.util.Queue","Ext.layout.ContextItem","Ext.layout.Layout","Ext.fx.Anim","Ext.fx.Manager"],remainingLayouts:0,state:0,constructor:function(a){var b=this;Ext.apply(b,a);b.items={};b.layouts={};b.blockCount=0;b.cycleCount=0;b.flushCount=0;b.calcCount=0;b.animateQueue=b.newQueue();b.completionQueue=b.newQueue();b.finalizeQueue=b.newQueue();b.finishQueue=b.newQueue();b.flushQueue=b.newQueue();b.invalidateData={};b.layoutQueue=b.newQueue();b.invalidQueue=[];b.triggers={data:{},dom:{}}},callLayout:function(b,a){this.currentLayout=b;b[a](this.getCmp(b.owner))},cancelComponent:function(j,a,m){var p=this,h=j,l=!j.isComponent,b=l?h.length:1,d,c,o,n,g,s,q,r,t,e;for(d=0;d<b;++d){if(l){j=h[d]}if(m&&j.ownerCt){e=this.items[j.ownerCt.el.id];if(e){Ext.Array.remove(e.childItems,p.getCmp(j))}}if(!a){q=p.invalidQueue;o=q.length;if(o){p.invalidQueue=s=[];for(c=0;c<o;++c){r=q[c];t=r.item.target;if(t!=j&&!t.isDescendant(j)){s.push(r)}}}}g=j.componentLayout;p.cancelLayout(g);if(g.getLayoutItems){n=g.getLayoutItems();if(n.length){p.cancelComponent(n,true)}}if(j.isContainer&&!j.collapsed){g=j.layout;p.cancelLayout(g);n=g.getVisibleItems();if(n.length){p.cancelComponent(n,true)}}}},cancelLayout:function(b){var a=this;a.completionQueue.remove(b);a.finalizeQueue.remove(b);a.finishQueue.remove(b);a.layoutQueue.remove(b);if(b.running){a.layoutDone(b)}b.ownerContext=null},clearTriggers:function(g,h){var a=g.id,e=this.triggers[h?"dom":"data"],j=e&&e[a],b=(j&&j.length)||0,e,d,k,c;for(d=0;d<b;++d){c=j[d];k=c.item;e=h?k.domTriggers:k.triggers;delete e[c.prop][a]}},flush:function(){var d=this,a=d.flushQueue.clear(),c=a.length,b;if(c){++d.flushCount;for(b=0;b<c;++b){a[b].flush()}}},flushAnimations:function(){var d=this,b=d.animateQueue.clear(),a=b.length,c;if(a){for(c=0;c<a;c++){if(b[c].target.animate!==false){b[c].flushAnimations()}}Ext.fx.Manager.runner()}},flushInvalidates:function(){var h=this,a=h.invalidQueue,g=a&&a.length,b,e,d,c;h.invalidQueue=[];if(g){e=[];for(c=0;c<g;++c){b=(d=a[c]).item.target;if(!b.container.isDetachedBody){e.push(b);if(d.options){h.invalidateData[b.id]=d.options}}}h.invalidate(e,null)}},flushLayouts:function(h,a,c){var g=this,j=c?g[h].items:g[h].clear(),e=j.length,b,d;if(e){for(b=0;b<e;++b){d=j[b];if(!d.running){g.callLayout(d,a)}}g.currentLayout=null}},getCmp:function(a){return this.getItem(a,a.el)},getEl:function(b,a){var c=this.getItem(a,a);if(!c.parent){c.parent=b;if(b.children.length){b.children.push(c)}else{b.children=[c]}}return c},getItem:function(d,b){var e=b.id,a=this.items,c=a[e]||(a[e]=new Ext.layout.ContextItem({context:this,target:d,el:b}));return c},handleFailure:function(){var c=this.layouts,b,a;Ext.failedLayouts=(Ext.failedLayouts||0)+1;for(a in c){b=c[a];if(c.hasOwnProperty(a)){b.running=false;b.ownerContext=null}}},invalidate:function(n,p){var r=this,o=!n.isComponent,e,g,c,a,j,m,s,q,b,k,l,h,d;for(j=0,b=o?n.length:1;j<b;++j){m=o?n[j]:n;if(m.rendered&&!m.hidden){s=r.getCmp(m);k=m.componentLayout;a=!k.ownerContext;l=(m.isContainer&&!m.collapsed)?m.layout:null;h=r.invalidateData[s.id];delete r.invalidateData[s.id];d=s.init(p,h);if(h){r.processInvalidate(h,s,"before")}if(k.beforeLayoutCycle){k.beforeLayoutCycle(s)}d=s.initContinue(d);e=g=c=true;if(k.getLayoutItems){k.renderChildren();q=k.getLayoutItems();if(q.length){r.invalidate(q,true);e=false}}if(l){c=false;l.renderChildren();q=l.getVisibleItems();if(q.length){r.invalidate(q,true);g=false}}s.initDone(d,e,g,c);r.resetLayout(k,s,a);if(l){r.resetLayout(l,s,a)}s.initAnimation();if(h){r.processInvalidate(h,s,"after")}}}r.currentLayout=null},layoutDone:function(b){var c=b.ownerContext,a;b.running=false;if(b.isComponentLayout){if(c.measuresBox){c.onBoxMeasured()}c.setProp("done",true);a=c.ownerCtContext;if(a){if(c.target.ownerLayout.isComponentLayout){if(!--a.remainingComponentChildLayouts){a.setProp("componentChildrenDone",true)}}else{if(!--a.remainingContainerChildLayouts){a.setProp("containerChildrenDone",true)}}if(!--a.remainingChildLayouts){a.setProp("childrenDone",true)}}}else{c.setProp("containerLayoutDone",true)}--this.remainingLayouts;++this.progressCount},newQueue:function(){return new Ext.util.Queue()},processInvalidate:function(b,e,a){if(b[a]){var d=this,c=d.currentLayout;d.currentLayout=b.layout||null;b[a](e,b);d.currentLayout=c}},queueAnimation:function(a){this.animateQueue.add(a)},queueCompletion:function(a){this.completionQueue.add(a)},queueFinalize:function(a){this.finalizeQueue.add(a)},queueFlush:function(a){this.flushQueue.add(a)},chainFns:function(a,i,g){var d=this,c=a.layout,e=i.layout,b=a[g],h=i[g];return function(j){var k=d.currentLayout;if(b){d.currentLayout=c;b.call(a.scope||a,j,a)}d.currentLayout=e;h.call(i.scope||i,j,i);d.currentLayout=k}},queueInvalidate:function(k,l){var h=this,j=[],i=h.invalidQueue,g=i.length,d,b,e,a,c;if(k.isComponent){k=h.getCmp(d=k)}else{d=k.target}k.invalid=true;while(g--){b=i[g];e=b.item.target;if(d.isDescendant(e)){return}if(e==d){if(!(a=b.options)){b.options=l}else{if(l){if(l.widthModel){a.widthModel=l.widthModel}if(l.heightModel){a.heightModel=l.heightModel}if(!(c=a.state)){a.state=l.state}else{if(l.state){Ext.apply(c,l.state)}}if(l.before){a.before=h.chainFns(a,l,"before")}if(l.after){a.after=h.chainFns(a,l,"after")}}}return}if(!e.isDescendant(d)){j.push(b)}}j.push({item:k,options:l});h.invalidQueue=j},queueItemLayouts:function(c){var a=c.isComponent?c:c.target,b=a.componentLayout;if(!b.pending&&!b.invalid&&!b.done){this.queueLayout(b)}b=a.layout;if(b&&!b.pending&&!b.invalid&&!b.done){this.queueLayout(b)}},queueLayout:function(a){this.layoutQueue.add(a);a.pending=true},resetLayout:function(c,d,e){var b=this,a;b.currentLayout=c;c.done=false;c.pending=true;c.firedTriggers=0;b.layoutQueue.add(c);if(e){b.layouts[c.id]=c;c.running=true;if(c.finishedLayout){b.finishQueue.add(c)}++b.remainingLayouts;++c.layoutCount;c.ownerContext=d;c.beginCount=0;c.blockCount=0;c.calcCount=0;c.triggerCount=0;if(c.isComponentLayout&&(a=d.ownerCtContext)){if(d.target.ownerLayout.isComponentLayout){++a.remainingComponentChildLayouts}else{++a.remainingContainerChildLayouts}++a.remainingChildLayouts}if(!c.initialized){c.initLayout()}c.beginLayout(d)}else{++c.beginCount;if(!c.running){++b.remainingLayouts;c.running=true;if(c.isComponentLayout){d.unsetProp("done");a=d.ownerCtContext;if(a){if(d.target.ownerLayout.isComponentLayout){if(++a.remainingComponentChildLayouts==1){a.unsetProp("componentChildrenDone")}}else{if(++a.remainingContainerChildLayouts==1){a.unsetProp("containerChildrenDone")}}if(++a.remainingChildLayouts==1){a.unsetProp("childrenDone")}}}b.completionQueue.remove(c);b.finalizeQueue.remove(c)}}c.beginLayoutCycle(d,e)},run:function(){var c=this,b=false,a=100;c.flushInvalidates();c.state=1;c.totalCount=c.layoutQueue.getCount();c.flush();while((c.remainingLayouts||c.invalidQueue.length)&&a--){if(c.invalidQueue.length){c.flushInvalidates()}if(c.runCycle()){b=false}else{if(!b){c.flush();b=true;c.flushLayouts("completionQueue","completeLayout")}else{c.state=2;break}}if(!(c.remainingLayouts||c.invalidQueue.length)){c.flush();c.flushLayouts("completionQueue","completeLayout");c.flushLayouts("finalizeQueue","finalizeLayout")}}return c.runComplete()},runComplete:function(){var a=this;a.state=2;if(a.remainingLayouts){a.handleFailure();return false}a.flush();a.flushLayouts("finishQueue","finishedLayout",true);a.flushLayouts("finishQueue","notifyOwner");a.flush();a.flushAnimations();return true},runCycle:function(){var c=this,d=c.layoutQueue.clear(),b=d.length,a;++c.cycleCount;c.progressCount=0;for(a=0;a<b;++a){c.runLayout(c.currentLayout=d[a])}c.currentLayout=null;return c.progressCount>0},runLayout:function(b){var a=this,c=a.getCmp(b.owner);b.pending=false;if(c.state.blocks){return}b.done=true;++b.calcCount;++a.calcCount;b.calculate(c);if(b.done){a.layoutDone(b);if(b.completeLayout){a.queueCompletion(b)}if(b.finalizeLayout){a.queueFinalize(b)}}else{if(!b.pending&&!b.invalid&&!(b.blockCount+b.triggerCount-b.firedTriggers)){a.queueLayout(b)}}},setItemSize:function(h,g,b){var d=h,a=1,c,e;if(h.isComposite){d=h.elements;a=d.length;h=d[0]}else{if(!h.dom&&!h.el){a=d.length;h=d[0]}}for(e=0;e<a;){c=this.get(h);c.setSize(g,b);h=d[++e]}}});Ext.define("Ext.layout.component.Tab",{extend:"Ext.layout.component.Button",alias:"layout.tab",beginLayout:function(c){var b=this,a=b.owner.closable;if(b.lastClosable!==a){b.lastClosable=a;b.clearTargetCache()}b.callParent(arguments)}});Ext.define("Ext.layout.component.field.Slider",{alias:["layout.sliderfield"],extend:"Ext.layout.component.field.Field",type:"sliderfield",beginLayout:function(a){this.callParent(arguments);a.endElContext=a.getEl("endEl");a.innerElContext=a.getEl("innerEl");a.bodyElContext=a.getEl("bodyEl")},publishInnerHeight:function(d,a){var e=a-this.measureLabelErrorHeight(d),c,b;if(this.owner.vertical){c=d.endElContext.getPaddingInfo();b=d.inputContext.getPaddingInfo();d.innerElContext.setHeight(e-b.height-c.height)}else{d.bodyElContext.setHeight(e)}},publishInnerWidth:function(d,c){if(!this.owner.vertical){var b=d.endElContext.getPaddingInfo(),a=d.inputContext.getPaddingInfo();d.innerElContext.setWidth(c-a.left-b.right-d.labelContext.getProp("width"))}},beginLayoutFixed:function(d,a,e){var b=this,c=b.ieInputWidthAdjustment;if(c){b.owner.bodyEl.setStyle("padding-right",c+"px")}b.callParent(arguments)}});Ext.define("Ext.layout.container.Absolute",{alias:"layout.absolute",extend:"Ext.layout.container.Anchor",alternateClassName:"Ext.layout.AbsoluteLayout",targetCls:Ext.baseCSSPrefix+"abs-layout-ct",itemCls:Ext.baseCSSPrefix+"abs-layout-item",ignoreOnContentChange:true,type:"absolute",adjustWidthAnchor:function(c,b){var d=this.targetPadding,a=b.getStyle("left");return c-a+d.left},adjustHeightAnchor:function(b,a){var c=this.targetPadding,d=a.getStyle("top");return b-d+c.top},isItemLayoutRoot:function(a){return this.ignoreOnContentChange||this.callParent(arguments)},isItemShrinkWrap:function(a){return true},beginLayout:function(b){var a=this,c=a.getTarget();a.callParent(arguments);if(c.dom!==document.body){c.position()}a.targetPadding=b.targetContext.getPaddingInfo()},isItemBoxParent:function(a){return true},onContentChange:function(){if(this.ignoreOnContentChange){return false}return this.callParent(arguments)}});Ext.define("Ext.layout.container.Accordion",{extend:"Ext.layout.container.VBox",alias:["layout.accordion"],alternateClassName:"Ext.layout.AccordionLayout",itemCls:[Ext.baseCSSPrefix+"box-item",Ext.baseCSSPrefix+"accordion-item"],align:"stretch",fill:true,titleCollapse:true,hideCollapseTool:false,collapseFirst:false,animate:true,activeOnTop:false,multi:false,defaultAnimatePolicy:{y:true,height:true},constructor:function(){var a=this;a.callParent(arguments);if(a.animate){a.animatePolicy=Ext.apply({},a.defaultAnimatePolicy)}else{a.animatePolicy=null}},beforeRenderItems:function(b){var e=this,d=b.length,c=0,a;for(;c<d;c++){a=b[c];if(!a.rendered){if(e.collapseFirst){a.collapseFirst=e.collapseFirst}if(e.hideCollapseTool){a.hideCollapseTool=e.hideCollapseTool;a.titleCollapse=true}else{if(e.titleCollapse){a.titleCollapse=e.titleCollapse}}delete a.hideHeader;delete a.width;a.collapsible=true;a.title=a.title||"&#160;";a.addBodyCls(Ext.baseCSSPrefix+"accordion-body");if(!e.multi){if(e.expandedItem!==undefined){a.collapsed=true}else{if(a.hasOwnProperty("collapsed")&&a.collapsed===false){e.expandedItem=c}else{a.collapsed=true}}e.owner.mon(a,{show:e.onComponentShow,beforeexpand:e.onComponentExpand,scope:e})}if(e.fill){e.owner.mon(a,{beforecollapse:e.onComponentCollapse,scope:e})}}}if(d&&e.expandedItem===undefined){e.expandedItem=0;b[0].collapsed=false}},getItemsRenderTree:function(a){this.beforeRenderItems(a);return this.callParent(arguments)},renderItems:function(a,b){this.beforeRenderItems(a);this.callParent(arguments)},configureItem:function(a){this.callParent(arguments);a.animCollapse=a.border=false;if(this.fill){a.flex=1}},onChildPanelRender:function(a){a.header.addCls(Ext.baseCSSPrefix+"accordion-hd")},beginLayout:function(a){this.callParent(arguments);this.updatePanelClasses(a)},updatePanelClasses:function(e){var c=e.visibleItems,d=c.length,a=true,b,h,g;for(b=0;b<d;b++){h=c[b];g=h.header;g.addCls(Ext.baseCSSPrefix+"accordion-hd");if(a){g.removeCls(Ext.baseCSSPrefix+"accordion-hd-sibling-expanded")}else{g.addCls(Ext.baseCSSPrefix+"accordion-hd-sibling-expanded")}if(b+1==d&&h.collapsed){g.addCls(Ext.baseCSSPrefix+"accordion-hd-last-collapsed")}else{g.removeCls(Ext.baseCSSPrefix+"accordion-hd-last-collapsed")}a=h.collapsed}},onComponentExpand:function(h){var e=this,a=e.owner,c,g,d,b;if(!e.processing){e.processing=true;b=a.deferLayouts;a.deferLayouts=true;c=e.multi?[]:a.query(">panel:not([collapsed])");g=c.length;for(d=0;d<g;d++){c[d].collapse()}a.deferLayouts=b;e.processing=false}},onComponentCollapse:function(d){var e=this,a=e.owner,g,c,b;if(e.owner.items.getCount()===1){return false}if(!e.processing){e.processing=true;b=a.deferLayouts;a.deferLayouts=true;g=d.next()||d.prev();if(e.multi){c=e.owner.query(">panel:not([collapsed])");if(c.length===1){g.expand()}}else{if(g){g.expand()}}a.deferLayouts=b;e.processing=false}},onComponentShow:function(a){this.onComponentExpand(a)}});Ext.define("Ext.resizer.Splitter",{extend:"Ext.Component",requires:["Ext.XTemplate"],uses:["Ext.resizer.SplitterTracker"],alias:"widget.splitter",childEls:["collapseEl"],renderTpl:['<tpl if="collapsible===true">','<div id="{id}-collapseEl" class="',Ext.baseCSSPrefix,"collapse-el ",Ext.baseCSSPrefix,'layout-split-{collapseDir}">&#160;</div>',"</tpl>"],baseCls:Ext.baseCSSPrefix+"splitter",collapsedClsInternal:Ext.baseCSSPrefix+"splitter-collapsed",canResize:true,collapsible:false,collapseOnDblClick:true,defaultSplitMin:40,defaultSplitMax:1000,collapseTarget:"next",horizontal:false,vertical:false,getTrackerConfig:function(){return{xclass:"Ext.resizer.SplitterTracker",el:this.el,splitter:this}},beforeRender:function(){var d=this,e=d.getCollapseTarget(),g=d.getCollapseDirection(),c=d.vertical,b=c?"width":"height",h=c?"height":"width",a;d.callParent();if(!d.hasOwnProperty(h)){d[h]="100%"}if(!d.hasOwnProperty(b)){d[b]=5}if(e.collapsed){d.addCls(d.collapsedClsInternal)}a=d.baseCls+"-"+d.orientation;d.addCls(a);if(!d.canResize){d.addCls(a+"-noresize")}Ext.applyIf(d.renderData,{collapseDir:g,collapsible:d.collapsible||e.collapsible})},onRender:function(){var a=this;a.callParent(arguments);if(a.performCollapse!==false){if(a.renderData.collapsible){a.mon(a.collapseEl,"click",a.toggleTargetCmp,a)}if(a.collapseOnDblClick){a.mon(a.el,"dblclick",a.toggleTargetCmp,a)}}a.mon(a.getCollapseTarget(),{collapse:a.onTargetCollapse,expand:a.onTargetExpand,scope:a});a.el.unselectable();if(a.canResize){a.tracker=Ext.create(a.getTrackerConfig());a.relayEvents(a.tracker,["beforedragstart","dragstart","dragend"])}},getCollapseDirection:function(){var g=this,c=g.collapseDirection,e,a,b,d;if(!c){e=g.collapseTarget;if(e.isComponent){c=e.collapseDirection}if(!c){d=g.ownerCt.layout.type;if(e.isComponent){b=g.ownerCt.items;a=Number(b.indexOf(e)==b.indexOf(g)-1)<<1|Number(d=="hbox")}else{a=Number(g.collapseTarget=="prev")<<1|Number(d=="hbox")}c=["bottom","right","top","left"][a]}g.collapseDirection=c}g.orientation=(c=="top"||c=="bottom")?"horizontal":"vertical";g[g.orientation]=true;return c},getCollapseTarget:function(){var a=this;return a.collapseTarget.isComponent?a.collapseTarget:a.collapseTarget=="prev"?a.previousSibling():a.nextSibling()},onTargetCollapse:function(a){this.el.addCls([this.collapsedClsInternal,this.collapsedCls])},onTargetExpand:function(a){this.el.removeCls([this.collapsedClsInternal,this.collapsedCls])},toggleTargetCmp:function(d,b){var c=this.getCollapseTarget(),g=c.placeholder,a;if(g&&!g.hidden){a=true}else{a=!c.hidden}if(a){if(c.collapsed){c.expand()}else{if(c.collapseDirection){c.collapse()}else{c.collapse(this.renderData.collapseDir)}}}},setSize:function(){var a=this;a.callParent(arguments);if(Ext.isIE&&a.el){a.el.repaint()}},beforeDestroy:function(){Ext.destroy(this.tracker);this.callParent()}});Ext.define("Ext.resizer.BorderSplitter",{extend:"Ext.resizer.Splitter",uses:["Ext.resizer.BorderSplitterTracker"],alias:"widget.bordersplitter",collapseTarget:null,getTrackerConfig:function(){var a=this.callParent();a.xclass="Ext.resizer.BorderSplitterTracker";return a}});Ext.define("Ext.layout.container.Border",{alias:"layout.border",extend:"Ext.layout.container.Container",requires:["Ext.resizer.BorderSplitter","Ext.Component","Ext.fx.Anim"],alternateClassName:"Ext.layout.BorderLayout",targetCls:Ext.baseCSSPrefix+"border-layout-ct",itemCls:[Ext.baseCSSPrefix+"border-item",Ext.baseCSSPrefix+"box-item"],type:"border",padding:undefined,percentageRe:/(\d+)%/,axisProps:{horz:{borderBegin:"west",borderEnd:"east",horizontal:true,posProp:"x",sizeProp:"width",sizePropCap:"Width"},vert:{borderBegin:"north",borderEnd:"south",horizontal:false,posProp:"y",sizeProp:"height",sizePropCap:"Height"}},centerRegion:null,collapseDirections:{north:"top",south:"bottom",east:"right",west:"left"},manageMargins:true,panelCollapseAnimate:true,panelCollapseMode:"placeholder",regionWeights:{north:20,south:10,center:0,west:-10,east:-20},beginAxis:function(m,b,w){var u=this,c=u.axisProps[w],r=!c.horizontal,l=c.sizeProp,p=0,a=m.childItems,g=a.length,t,q,o,h,s,e,k,n,d,v,j;for(q=0;q<g;++q){o=a[q];s=o.target;o.layoutPos={};if(s.region){o.region=e=s.region;o.isCenter=s.isCenter;o.isHorz=s.isHorz;o.isVert=s.isVert;o.weight=s.weight||u.regionWeights[e]||0;b[s.id]=o;if(s.isCenter){t=o;h=s.flex;m.centerRegion=t;continue}if(r!==o.isVert){continue}o.reverseWeighting=(e==c.borderEnd);n=s[l];d=typeof n;if(!s.collapsed){if(d=="string"&&(k=u.percentageRe.exec(n))){o.percentage=parseInt(k[1],10)}else{if(s.flex){p+=o.flex=s.flex}}}}}if(t){v=t.target;if(j=v.placeholderFor){if(!h&&r===j.collapsedVertical()){h=0;t.collapseAxis=w}}else{if(v.collapsed&&(r===v.collapsedVertical())){h=0;t.collapseAxis=w}}}if(h==null){h=1}p+=h;return Ext.apply({before:r?"top":"left",totalFlex:p},c)},beginLayout:function(d){var l=this,k=l.getLayoutItems(),e=l.padding,m=typeof e,p=false,q,o,b,h,g,a,c,j,n;if(e){if(m=="string"||m=="number"){e=Ext.util.Format.parseBox(e)}}else{e=d.getEl("getTargetEl").getPaddingInfo();p=true}d.outerPad=e;d.padOnContainer=p;for(h=0,b=k.length;h<b;++h){o=k[h];a=l.getSplitterTarget(o);if(a){j=!!o.hidden;if(!a.split){if(a.isCollapsingOrExpanding){c=!!a.collapsed}}else{if(j!==a.hidden){c=!a.hidden}}if(c===true){o.show()}else{if(c===false){o.hide()}}}}l.callParent(arguments);k=d.childItems;b=k.length;g={};d.borderAxisHorz=l.beginAxis(d,g,"horz");d.borderAxisVert=l.beginAxis(d,g,"vert");for(h=0;h<b;++h){q=k[h];a=l.getSplitterTarget(q.target);if(a){n=g[a.id];if(!n){n=d.getEl(a.el,l);n.region=a.region}q.collapseTarget=a=n;q.weight=a.weight;q.reverseWeighting=a.reverseWeighting;a.splitter=q;q.isHorz=a.isHorz;q.isVert=a.isVert}}l.sortWeightedItems(k,"reverseWeighting");l.setupSplitterNeighbors(k)},calculate:function(d){var m=this,a=m.getContainerSize(d),j=d.childItems,c=j.length,b=d.borderAxisHorz,k=d.borderAxisVert,e=d.outerPad,o=d.padOnContainer,h,q,l,p,n,g;b.begin=e.left;k.begin=e.top;n=b.end=b.flexSpace=a.width+(o?e.left:-e.right);g=k.end=k.flexSpace=a.height+(o?e.top:-e.bottom);for(h=0;h<c;++h){q=j[h];l=q.getMarginInfo();if(q.isHorz||q.isCenter){b.addUnflexed(l.width);n-=l.width}if(q.isVert||q.isCenter){k.addUnflexed(l.height);g-=l.height}if(!q.flex&&!q.percentage){if(q.isHorz||(q.isCenter&&q.collapseAxis==="horz")){p=q.getProp("width");b.addUnflexed(p);if(q.collapseTarget){n-=p}}else{if(q.isVert||(q.isCenter&&q.collapseAxis==="vert")){p=q.getProp("height");k.addUnflexed(p);if(q.collapseTarget){g-=p}}}}}for(h=0;h<c;++h){q=j[h];l=q.getMarginInfo();if(q.percentage){if(q.isHorz){p=Math.ceil(n*q.percentage/100);p=q.setWidth(p);b.addUnflexed(p)}else{if(q.isVert){p=Math.ceil(g*q.percentage/100);p=q.setHeight(p);k.addUnflexed(p)}}}}for(h=0;h<c;++h){q=j[h];if(!q.isCenter){m.calculateChildAxis(q,b);m.calculateChildAxis(q,k)}}if(m.finishAxis(d,k)+m.finishAxis(d,b)<2){m.done=false}else{m.finishPositions(j)}},calculateChildAxis:function(l,c){var a=l.collapseTarget,h="set"+c.sizePropCap,e=c.sizeProp,d=l.getMarginInfo()[e],j,b,g,i,k;if(a){j=a.region}else{j=l.region;g=l.flex}b=j==c.borderBegin;if(!b&&j!=c.borderEnd){l[h](c.end-c.begin-d);i=c.begin}else{if(g){k=Math.ceil(c.flexSpace*(g/c.totalFlex));k=l[h](k)}else{if(l.percentage){k=l.peek(e)}else{k=l.getProp(e)}}k+=d;if(b){i=c.begin;c.begin+=k}else{c.end=i=c.end-k}}l.layoutPos[c.posProp]=i},finishAxis:function(d,c){var b=c.end-c.begin,a=d.centerRegion;if(a){a["set"+c.sizePropCap](b-a.getMarginInfo()[c.sizeProp]);a.layoutPos[c.posProp]=c.begin}return Ext.isNumber(b)?1:0},finishPositions:function(d){var c=d.length,b,a;for(b=0;b<c;++b){a=d[b];a.setProp("x",a.layoutPos.x+a.marginInfo.left);a.setProp("y",a.layoutPos.y+a.marginInfo.top)}},getPlaceholder:function(a){return a.getPlaceholder&&a.getPlaceholder()},getSplitterTarget:function(b){var a=b.collapseTarget;if(a&&a.collapsed){return a.placeholder||a}return a},isItemBoxParent:function(a){return true},isItemShrinkWrap:function(a){return true},insertSplitter:function(c,b,e){var g=c.region,d={xtype:"bordersplitter",collapseTarget:c,id:c.id+"-splitter",hidden:e,canResize:c.splitterResize!==false},a=b+((g=="south"||g=="east")?0:1);if(c.isHorz){d.height=null}else{d.width=null}if(c.collapseMode=="mini"){d.collapsedCls=c.collapsedCls}c.splitter=this.owner.add(a,d)},onAdd:function(d,a){var c=this,h=d.placeholderFor,g=d.region,b,e;c.callParent(arguments);if(g){Ext.apply(d,c.regionFlags[g]);if(g=="center"){c.centerRegion=d}else{d.collapseDirection=this.collapseDirections[g];b=d.split;e=!!d.hidden;if((d.isHorz||d.isVert)&&(b||d.collapseMode=="mini")){c.insertSplitter(d,a,e||!b)}}if(!d.hasOwnProperty("collapseMode")){d.collapseMode=c.panelCollapseMode}if(!d.hasOwnProperty("animCollapse")){if(d.collapseMode!="placeholder"){d.animCollapse=false}else{d.animCollapse=c.panelCollapseAnimate}}}else{if(h){Ext.apply(d,c.regionFlags[h.region]);d.region=h.region;d.weight=h.weight}}},onDestroy:function(){this.centerRegion=null;this.callParent()},onRemove:function(b){var a=this,d=b.region,c=b.splitter;if(d){if(b.isCenter){a.centerRegion=null}delete b.isCenter;delete b.isHorz;delete b.isVert;if(c){a.owner.doRemove(c,true);delete b.splitter}}a.callParent(arguments)},regionFlags:{center:{isCenter:true,isHorz:false,isVert:false},north:{isCenter:false,isHorz:false,isVert:true},south:{isCenter:false,isHorz:false,isVert:true},west:{isCenter:false,isHorz:true,isVert:false},east:{isCenter:false,isHorz:true,isVert:false}},setupSplitterNeighbors:function(m){var p={},e=m.length,o=this.touchedRegions,h,g,a,l,d,k,n,b,c;for(h=0;h<e;++h){k=m[h].target;n=k.region;if(k.isCenter){a=k}else{if(n){c=o[n];for(g=0,l=c.length;g<l;++g){d=p[c[g]];if(d){d.neighbors.push(k)}}if(k.placeholderFor){b=k.placeholderFor.splitter}else{b=k.splitter}if(b){b.neighbors=[]}p[n]=b}}}if(a){c=o.center;for(g=0,l=c.length;g<l;++g){d=p[c[g]];if(d){d.neighbors.push(a)}}}},touchedRegions:{center:["north","south","east","west"],north:["north","east","west"],south:["south","east","west"],east:["east","north","south"],west:["west","north","south"]},sizePolicies:{vert:{setsWidth:1,setsHeight:0},horz:{setsWidth:0,setsHeight:1},flexAll:{setsWidth:1,setsHeight:1}},getItemSizePolicy:function(e){var d=this,a=this.sizePolicies,c,b,g,h;if(e.isCenter){h=e.placeholderFor;if(h){if(h.collapsedVertical()){return a.vert}return a.horz}if(e.collapsed){if(e.collapsedVertical()){return a.vert}return a.horz}return a.flexAll}c=e.collapseTarget;if(c){return c.isVert?a.vert:a.horz}if(e.region){if(e.isVert){b=e.height;g=a.vert}else{b=e.width;g=a.horz}if(e.flex||(typeof b=="string"&&d.percentageRe.test(b))){return a.flexAll}return g}return d.autoSizePolicy}},function(){var a={addUnflexed:function(c){this.flexSpace=Math.max(this.flexSpace-c,0)}},b=this.prototype.axisProps;Ext.apply(b.horz,a);Ext.apply(b.vert,a)});Ext.define("Ext.layout.container.Card",{extend:"Ext.layout.container.Fit",alternateClassName:"Ext.layout.CardLayout",alias:"layout.card",type:"card",hideInactive:true,deferredRender:false,getRenderTree:function(){var a=this,b=a.getActiveItem();if(b){if(b.hasListeners.beforeactivate&&b.fireEvent("beforeactivate",b)===false){b=a.activeItem=a.owner.activeItem=null}else{if(b.hasListeners.activate){b.on({boxready:function(){b.fireEvent("activate",b)},single:true})}}if(a.deferredRender){if(b){return a.getItemsRenderTree([b])}}else{return a.callParent(arguments)}}},renderChildren:function(){var a=this,b=a.getActiveItem();if(!a.deferredRender){a.callParent()}else{if(b){a.renderItems([b],a.getRenderTarget())}}},isValidParent:function(c,d,a){var b=c.el?c.el.dom:Ext.getDom(c);return(b&&b.parentNode===(d.dom||d))||false},getActiveItem:function(){var b=this,a=b.parseActiveItem(b.activeItem||(b.owner&&b.owner.activeItem));if(a&&b.owner.items.indexOf(a)!=-1){b.activeItem=a}else{b.activeItem=null}return b.activeItem},parseActiveItem:function(a){if(a&&a.isComponent){return a}else{if(typeof a=="number"||a===undefined){return this.getLayoutItems()[a||0]}else{return this.owner.getComponent(a)}}},configureItem:function(a){if(a===this.getActiveItem()){a.hidden=false}else{a.hidden=true}this.callParent(arguments)},onRemove:function(a){var b=this;if(a===b.activeItem){b.activeItem=null}},getAnimation:function(b,a){var c=(b||{}).cardSwitchAnimation;if(c===false){return false}return c||a.cardSwitchAnimation},getNext:function(){var c=arguments[0],a=this.getLayoutItems(),b=Ext.Array.indexOf(a,this.activeItem);return a[b+1]||(c?a[0]:false)},next:function(){var b=arguments[0],a=arguments[1];return this.setActiveItem(this.getNext(a),b)},getPrev:function(){var c=arguments[0],a=this.getLayoutItems(),b=Ext.Array.indexOf(a,this.activeItem);return a[b-1]||(c?a[a.length-1]:false)},prev:function(){var b=arguments[0],a=arguments[1];return this.setActiveItem(this.getPrev(a),b)},setActiveItem:function(b){var e=this,a=e.owner,d=e.activeItem,g=a.rendered,c;b=e.parseActiveItem(b);c=a.items.indexOf(b);if(c==-1){c=a.items.items.length;Ext.suspendLayouts();b=a.add(b);Ext.resumeLayouts()}if(b&&d!=b){if(b.fireEvent("beforeactivate",b,d)===false){return false}if(d&&d.fireEvent("beforedeactivate",d,b)===false){return false}if(g){Ext.suspendLayouts();if(!b.rendered){e.renderItem(b,e.getRenderTarget(),a.items.length)}if(d){if(e.hideInactive){d.hide();d.hiddenByLayout=true}d.fireEvent("deactivate",d,b)}if(b.hidden){b.show()}if(!b.hidden){e.activeItem=b}Ext.resumeLayouts(true)}else{e.activeItem=b}b.fireEvent("activate",b,d);return e.activeItem}return false}});Ext.define("Ext.layout.container.Column",{extend:"Ext.layout.container.Container",alias:["layout.column"],alternateClassName:"Ext.layout.ColumnLayout",type:"column",itemCls:Ext.baseCSSPrefix+"column",targetCls:Ext.baseCSSPrefix+"column-layout-ct",columnWidthSizePolicy:{setsWidth:1,setsHeight:0},childEls:["innerCt"],manageOverflow:2,renderTpl:['<div id="{ownerId}-innerCt" class="',Ext.baseCSSPrefix,'column-inner">',"{%this.renderBody(out,values)%}",'<div class="',Ext.baseCSSPrefix,'clear"></div>',"</div>","{%this.renderPadder(out,values)%}"],getItemSizePolicy:function(a){if(a.columnWidth){return this.columnWidthSizePolicy}return this.autoSizePolicy},beginLayout:function(){this.callParent(arguments);this.innerCt.dom.style.width=""},calculate:function(c){var a=this,d=a.getContainerSize(c),b=c.state;if(b.calculatedColumns||(b.calculatedColumns=a.calculateColumns(c))){if(a.calculateHeights(c)){a.calculateOverflow(c,d);return}}a.done=false},calculateColumns:function(d){var m=this,a=m.getContainerSize(d),o=d.getEl("innerCt",m),l=d.childItems,j=l.length,b=0,g,n,e,c,h,k;if(!d.heightModel.shrinkWrap&&!d.targetContext.hasProp("height")){return false}if(!a.gotWidth){d.targetContext.block(m,"width");g=true}else{n=a.width;o.setWidth(n)}for(e=0;e<j;++e){c=l[e];h=c.getMarginInfo().width;if(!c.widthModel.calculated){k=c.getProp("width");if(typeof k!="number"){c.block(m,"width");g=true}b+=k+h}}if(!g){n=(n<b)?0:n-b;for(e=0;e<j;++e){c=l[e];if(c.widthModel.calculated){h=c.marginInfo.width;k=c.target.columnWidth;k=Math.floor(k*n)-h;k=c.setWidth(k);b+=k+h}}d.setContentWidth(b)}return !g},calculateHeights:function(h){var g=this,b=h.childItems,a=b.length,c,d,e;c=false;for(d=0;d<a;++d){e=b[d];if(!e.hasDomProp("height")){e.domBlock(g,"height");c=true}}if(!c){h.setContentHeight(g.innerCt.getHeight()+h.targetContext.getPaddingInfo().height)}return !c},finishedLayout:function(a){var b=a.bodyContext;if(b&&(Ext.isIE6||Ext.isIE7||Ext.isIEQuirks)){b.el.repaint()}this.callParent(arguments)},getRenderTarget:function(){return this.innerCt}});Ext.define("Ext.layout.container.Form",{alias:"layout.form",extend:"Ext.layout.container.Auto",alternateClassName:"Ext.layout.FormLayout",tableCls:Ext.baseCSSPrefix+"form-layout-table",type:"form",manageOverflow:2,childEls:["formTable"],padRow:'<tr><td class="'+Ext.baseCSSPrefix+'form-item-pad" colspan="3"></td></tr>',renderTpl:['<table id="{ownerId}-formTable" class="{tableCls}" style="width:100%" cellpadding="0">',"{%this.renderBody(out,values)%}","</table>","{%this.renderPadder(out,values)%}"],getRenderData:function(){var a=this.callParent();a.tableCls=this.tableCls;return a},calculate:function(e){var d=this,h=d.getContainerSize(e,true),a,g,b=0,c;if(h.gotWidth){this.callParent(arguments);a=d.formTable.dom.offsetWidth;g=e.childItems;for(c=g.length;b<c;++b){g[b].setWidth(a,false)}}else{d.done=false}},getRenderTarget:function(){return this.formTable},getRenderTree:function(){var d=this,b=d.callParent(arguments),c,a;for(c=0,a=b.length;c<a;c++){b[c]=d.transformItemRenderTree(b[c])}return b},transformItemRenderTree:function(a){if(a.tag&&a.tag=="table"){a.tag="tbody";delete a.cellspacing;delete a.cellpadding;if(Ext.isIE6){a.cn=this.padRow}return a}return{tag:"tbody",cn:{tag:"tr",cn:{tag:"td",colspan:3,style:"width:100%",cn:a}}}},isValidParent:function(b,c,a){return true},isItemShrinkWrap:function(a){return((a.shrinkWrap===true)?3:a.shrinkWrap||0)&2},getItemSizePolicy:function(a){return{setsWidth:1,setsHeight:0}}});Ext.define("Ext.menu.Item",{extend:"Ext.Component",alias:"widget.menuitem",alternateClassName:"Ext.menu.TextItem",activeCls:Ext.baseCSSPrefix+"menu-item-active",ariaRole:"menuitem",canActivate:true,clickHideDelay:1,destroyMenu:true,disabledCls:Ext.baseCSSPrefix+"menu-item-disabled",hideOnClick:true,isMenuItem:true,menuAlign:"tl-tr?",menuExpandDelay:200,menuHideDelay:200,tooltipType:"qtip",arrowCls:Ext.baseCSSPrefix+"menu-item-arrow",childEls:["itemEl","iconEl","textEl","arrowEl"],renderTpl:['<tpl if="plain">',"{text}","<tpl else>",'<a id="{id}-itemEl" class="'+Ext.baseCSSPrefix+'menu-item-link" href="{href}" <tpl if="hrefTarget">target="{hrefTarget}"</tpl> hidefocus="true" unselectable="on">','<img id="{id}-iconEl" src="{icon}" class="'+Ext.baseCSSPrefix+'menu-item-icon {iconCls}" />','<span id="{id}-textEl" class="'+Ext.baseCSSPrefix+'menu-item-text" <tpl if="arrowCls">style="margin-right: 17px;"</tpl> >{text}</span>','<img id="{id}-arrowEl" src="{blank}" class="{arrowCls}" />',"</a>","</tpl>"],maskOnDisable:false,activate:function(){var a=this;if(!a.activated&&a.canActivate&&a.rendered&&!a.isDisabled()&&a.isVisible()){a.el.addCls(a.activeCls);a.focus();a.activated=true;a.fireEvent("activate",a)}},getFocusEl:function(){return this.itemEl},deactivate:function(){var a=this;if(a.activated){a.el.removeCls(a.activeCls);a.blur();a.hideMenu();a.activated=false;a.fireEvent("deactivate",a)}},deferExpandMenu:function(){var a=this;if(a.activated&&(!a.menu.rendered||!a.menu.isVisible())){a.parentMenu.activeChild=a.menu;a.menu.parentItem=a;a.menu.parentMenu=a.menu.ownerCt=a.parentMenu;a.menu.showBy(a,a.menuAlign)}},deferHideMenu:function(){if(this.menu.isVisible()){this.menu.hide()}},cancelDeferHide:function(){clearTimeout(this.hideMenuTimer)},deferHideParentMenus:function(){var a;Ext.menu.Manager.hideAll();if(!Ext.Element.getActiveElement()){a=this.up(":not([hidden])");if(a){a.focus()}}},expandMenu:function(a){var b=this;if(b.menu){b.cancelDeferHide();if(a===0){b.deferExpandMenu()}else{b.expandMenuTimer=Ext.defer(b.deferExpandMenu,Ext.isNumber(a)?a:b.menuExpandDelay,b)}}},getRefItems:function(a){var c=this.menu,b;if(c){b=c.getRefItems(a);b.unshift(c)}return b||[]},hideMenu:function(a){var b=this;if(b.menu){clearTimeout(b.expandMenuTimer);b.hideMenuTimer=Ext.defer(b.deferHideMenu,Ext.isNumber(a)?a:b.menuHideDelay,b)}},initComponent:function(){var b=this,c=Ext.baseCSSPrefix,a=[c+"menu-item"],d;b.addEvents("activate","click","deactivate");if(b.plain){a.push(c+"menu-item-plain")}if(b.cls){a.push(b.cls)}b.cls=a.join(" ");if(b.menu){d=b.menu;delete b.menu;b.setMenu(d)}b.callParent(arguments)},onClick:function(b){var a=this;if(!a.href){b.stopEvent()}if(a.disabled){return}if(a.hideOnClick){a.deferHideParentMenusTimer=Ext.defer(a.deferHideParentMenus,a.clickHideDelay,a)}Ext.callback(a.handler,a.scope||a,[a,b]);a.fireEvent("click",a,b);if(!a.hideOnClick){a.focus()}},onRemoved:function(){var a=this;if(a.activated&&a.parentMenu.activeItem===a){a.parentMenu.deactivateActiveItem()}a.callParent(arguments);delete a.parentMenu;delete a.ownerButton},beforeDestroy:function(){var a=this;if(a.rendered){a.clearTip()}a.callParent()},onDestroy:function(){var a=this;clearTimeout(a.expandMenuTimer);a.cancelDeferHide();clearTimeout(a.deferHideParentMenusTimer);a.setMenu(null);a.callParent(arguments)},beforeRender:function(){var b=this,d=Ext.BLANK_IMAGE_URL,a,c;b.callParent();if(b.iconAlign==="right"){a=b.checkChangeDisabled?b.disabledCls:"";c=Ext.baseCSSPrefix+"menu-item-icon-right "+b.iconCls}else{a=b.iconCls+(b.checkChangeDisabled?" "+b.disabledCls:"");c=b.menu?b.arrowCls:""}Ext.applyIf(b.renderData,{href:b.href||"#",hrefTarget:b.hrefTarget,icon:b.icon||d,iconCls:a,plain:b.plain,text:b.text,arrowCls:c,blank:d})},onRender:function(){var a=this;a.callParent(arguments);if(a.tooltip){a.setTooltip(a.tooltip,true)}},setMenu:function(e,d){var c=this,b=c.menu,a=c.arrowEl;if(b){delete b.parentItem;delete b.parentMenu;delete b.ownerCt;delete b.ownerItem;if(d===true||(d!==false&&c.destroyMenu)){Ext.destroy(b)}}if(e){c.menu=Ext.menu.Manager.get(e);c.menu.ownerItem=c}else{c.menu=null}if(c.rendered&&!c.destroying&&a){a[c.menu?"addCls":"removeCls"](c.arrowCls)}},setHandler:function(b,a){this.handler=b||null;this.scope=a},setIcon:function(b){var a=this.iconEl;if(a){a.src=b||Ext.BLANK_IMAGE_URL}this.icon=b},setIconCls:function(b){var c=this,a=c.iconEl;if(a){if(c.iconCls){a.removeCls(c.iconCls)}if(b){a.addCls(b)}}c.iconCls=b},setText:function(c){var b=this,a=b.textEl||b.el;b.text=c;if(b.rendered){a.update(c||"");b.ownerCt.updateLayout()}},getTipAttr:function(){return this.tooltipType=="qtip"?"data-qtip":"title"},clearTip:function(){if(Ext.isObject(this.tooltip)){Ext.tip.QuickTipManager.unregister(this.itemEl)}},setTooltip:function(c,a){var b=this;if(b.rendered){if(!a){b.clearTip()}if(Ext.isObject(c)){Ext.tip.QuickTipManager.register(Ext.apply({target:b.itemEl.id},c));b.tooltip=c}else{b.itemEl.dom.setAttribute(b.getTipAttr(),c)}}else{b.tooltip=c}return b}});Ext.define("Ext.menu.CheckItem",{extend:"Ext.menu.Item",alias:"widget.menucheckitem",checkedCls:Ext.baseCSSPrefix+"menu-item-checked",uncheckedCls:Ext.baseCSSPrefix+"menu-item-unchecked",groupCls:Ext.baseCSSPrefix+"menu-group-icon",hideOnClick:false,checkChangeDisabled:false,afterRender:function(){var a=this;a.callParent();a.checked=!a.checked;a.setChecked(!a.checked,true);if(a.checkChangeDisabled){a.disableCheckChange()}},initComponent:function(){var a=this;a.addEvents("beforecheckchange","checkchange");a.callParent(arguments);Ext.menu.Manager.registerCheckable(a);if(a.group){if(!a.iconCls){a.iconCls=a.groupCls}if(a.initialConfig.hideOnClick!==false){a.hideOnClick=true}}},disableCheckChange:function(){var b=this,a=b.iconEl;if(a){a.addCls(b.disabledCls)}if(!(Ext.isIE9&&Ext.isStrict)&&b.rendered){b.el.repaint()}b.checkChangeDisabled=true},enableCheckChange:function(){var b=this,a=b.iconEl;if(a){a.removeCls(b.disabledCls)}b.checkChangeDisabled=false},onClick:function(b){var a=this;if(!a.disabled&&!a.checkChangeDisabled&&!(a.checked&&a.group)){a.setChecked(!a.checked)}this.callParent([b])},onDestroy:function(){Ext.menu.Manager.unregisterCheckable(this);this.callParent(arguments)},setChecked:function(c,a){var b=this;if(b.checked!==c&&(a||b.fireEvent("beforecheckchange",b,c)!==false)){if(b.el){b.el[c?"addCls":"removeCls"](b.checkedCls)[!c?"addCls":"removeCls"](b.uncheckedCls)}b.checked=c;Ext.menu.Manager.onCheckChange(b,c);if(!a){Ext.callback(b.checkHandler,b.scope,[b,c]);b.fireEvent("checkchange",b,c)}}}});Ext.define("Ext.menu.KeyNav",{extend:"Ext.util.KeyNav",requires:["Ext.FocusManager"],constructor:function(b){var a=this;a.menu=b;a.callParent([b.el,{down:a.down,enter:a.enter,esc:a.escape,left:a.left,right:a.right,space:a.enter,tab:a.tab,up:a.up}])},down:function(b){var a=this,c=a.menu.focusedItem;if(c&&b.getKey()==Ext.EventObject.DOWN&&a.isWhitelisted(c)){return true}a.focusNextItem(1)},enter:function(b){var c=this.menu,a=c.focusedItem;if(c.activeItem){c.onClick(b)}else{if(a&&a.isFormField){return true}}},escape:function(a){Ext.menu.Manager.hideAll()},focusNextItem:function(g){var h=this.menu,b=h.items,d=h.focusedItem,c=d?b.indexOf(d):-1,a=c+g,e;while(a!=c){if(a<0){a=b.length-1}else{if(a>=b.length){a=0}}e=b.getAt(a);if(h.canActivateItem(e)){h.setActiveItem(e);break}a+=g}},isWhitelisted:function(a){return Ext.FocusManager.isWhitelisted(a)},left:function(b){var c=this.menu,d=c.focusedItem,a=c.activeItem;if(d&&this.isWhitelisted(d)){return true}c.hide();if(c.parentMenu){c.parentMenu.focus()}},right:function(c){var d=this.menu,g=d.focusedItem,a=d.activeItem,b;if(g&&this.isWhitelisted(g)){return true}if(a){b=d.activeItem.menu;if(b){a.expandMenu(0);Ext.defer(function(){b.setActiveItem(b.items.getAt(0))},25)}}},tab:function(b){var a=this;if(b.shiftKey){a.up(b)}else{a.down(b)}},up:function(b){var a=this,c=a.menu.focusedItem;if(c&&b.getKey()==Ext.EventObject.UP&&a.isWhitelisted(c)){return true}a.focusNextItem(-1)}});Ext.define("Ext.menu.Separator",{extend:"Ext.menu.Item",alias:"widget.menuseparator",canActivate:false,focusable:false,hideOnClick:false,plain:true,separatorCls:Ext.baseCSSPrefix+"menu-item-separator",text:"&#160;",beforeRender:function(a,c){var b=this;b.callParent();b.addCls(b.separatorCls)}});Ext.define("Ext.menu.Menu",{extend:"Ext.panel.Panel",alias:"widget.menu",requires:["Ext.layout.container.Fit","Ext.layout.container.VBox","Ext.menu.CheckItem","Ext.menu.Item","Ext.menu.KeyNav","Ext.menu.Manager","Ext.menu.Separator"],enableKeyNav:true,allowOtherMenus:false,ariaRole:"menu",defaultAlign:"tl-bl?",floating:true,constrain:true,hidden:true,hideMode:"visibility",ignoreParentClicks:false,isMenu:true,showSeparator:true,minWidth:undefined,defaultMinWidth:120,initComponent:function(){var b=this,d=Ext.baseCSSPrefix,a=[d+"menu"],c=b.bodyCls?[b.bodyCls]:[],e=b.floating!==false;b.addEvents("click","mouseenter","mouseleave","mouseover");Ext.menu.Manager.register(b);if(b.plain){a.push(d+"menu-plain")}b.cls=a.join(" ");c.unshift(d+"menu-body");b.bodyCls=c.join(" ");if(!b.layout){b.layout={type:"vbox",align:"stretchmax",overflowHandler:"Scroller"}}if(e&&b.minWidth===undefined){b.minWidth=b.defaultMinWidth}if(!e&&b.initialConfig.hidden!==true){b.hidden=false}b.callParent(arguments);b.on("beforeshow",function(){var g=!!b.items.length;if(g&&b.rendered){b.el.setStyle("visibility",null)}return g})},beforeRender:function(){this.callParent(arguments);if(!this.getSizeModel().width.shrinkWrap){this.layout.align="stretch"}},onBoxReady:function(){var a=this,b;a.callParent(arguments);if(a.showSeparator){b={cls:Ext.baseCSSPrefix+"menu-icon-separator",html:"&#160;"};if((!Ext.isStrict&&Ext.isIE)||Ext.isIE6){b.style="height:"+a.el.getHeight()+"px"}a.iconSepEl=a.layout.getElementTarget().insertFirst(b)}a.mon(a.el,{click:a.onClick,mouseover:a.onMouseOver,scope:a});a.mouseMonitor=a.el.monitorMouseLeave(100,a.onMouseLeave,a);if(a.enableKeyNav){a.keyNav=new Ext.menu.KeyNav(a)}},getBubbleTarget:function(){return this.parentMenu||this.ownerButton||this.callParent(arguments)},canActivateItem:function(a){return a&&!a.isDisabled()&&a.isVisible()&&(a.canActivate||a.getXTypes().indexOf("menuitem")<0)},deactivateActiveItem:function(b){var c=this,d=c.activeItem,a=c.focusedItem;if(d){d.deactivate();if(!d.activated){delete c.activeItem}}if(a&&b){a.blur();delete c.focusedItem}},getFocusEl:function(){return this.focusedItem||this.el},hide:function(){this.deactivateActiveItem(true);this.callParent(arguments)},getItemFromEvent:function(a){return this.getChildByElement(a.getTarget())},lookupComponent:function(b){var a=this;if(typeof b=="string"){b=a.lookupItemFromString(b)}else{if(Ext.isObject(b)){b=a.lookupItemFromObject(b)}}b.minWidth=b.minWidth||a.minWidth;return b},lookupItemFromObject:function(c){var b=this,d=Ext.baseCSSPrefix,a;if(!c.isComponent){if(!c.xtype){c=Ext.create("Ext.menu."+(Ext.isBoolean(c.checked)?"Check":"")+"Item",c)}else{c=Ext.ComponentManager.create(c,c.xtype)}}if(c.isMenuItem){c.parentMenu=b}if(!c.isMenuItem&&!c.dock){a=[d+"menu-item",d+"menu-item-cmp"];if(!b.plain&&(c.indent===true||c.iconCls==="no-icon")){a.push(d+"menu-item-indent")}if(c.rendered){c.el.addCls(a)}else{c.cls=(c.cls?c.cls:"")+" "+a.join(" ")}}return c},lookupItemFromString:function(a){return(a=="separator"||a=="-")?new Ext.menu.Separator():new Ext.menu.Item({canActivate:false,hideOnClick:false,plain:true,text:a})},onClick:function(c){var b=this,a;if(b.disabled){c.stopEvent();return}a=(c.type==="click")?b.getItemFromEvent(c):b.activeItem;if(a&&a.isMenuItem){if(!a.menu||!b.ignoreParentClicks){a.onClick(c)}else{c.stopEvent()}}if(!a||a.disabled){a=undefined}b.fireEvent("click",b,a,c)},onDestroy:function(){var a=this;Ext.menu.Manager.unregister(a);delete a.parentMenu;delete a.ownerButton;if(a.rendered){a.el.un(a.mouseMonitor);Ext.destroy(a.keyNav);delete a.keyNav}a.callParent(arguments)},onMouseLeave:function(b){var a=this;a.deactivateActiveItem();if(a.disabled){return}a.fireEvent("mouseleave",a,b)},onMouseOver:function(h){var g=this,i=h.getRelatedTarget(),b=!g.el.contains(i),d=g.getItemFromEvent(h),c=g.parentMenu,a=g.parentItem;if(b&&c){c.setActiveItem(a);a.cancelDeferHide();c.mouseMonitor.mouseenter()}if(g.disabled){return}if(d&&!d.activated){g.setActiveItem(d);if(d.activated&&d.expandMenu){d.expandMenu()}}if(b){g.fireEvent("mouseenter",g,h)}g.fireEvent("mouseover",g,d,h)},setActiveItem:function(b){var a=this;if(b&&(b!=a.activeItem)){a.deactivateActiveItem();if(a.canActivateItem(b)){if(b.activate){b.activate();if(b.activated){a.activeItem=b;a.focusedItem=b;a.focus()}}else{b.focus();a.focusedItem=b}}b.el.scrollIntoView(a.layout.getRenderTarget())}},showBy:function(b,d,c){var a=this;if(a.floating&&b){a.show();a.setPagePosition(a.el.getAlignToXY(b.el||b,d||a.defaultAlign,c));a.setVerticalPosition()}return a},show:function(){var d=this,c,b,a,e=d.maxHeight;if(!d.rendered){d.doAutoRender()}if(d.floating){c=Ext.fly(d.el.getScopeParent());b=c.getViewSize().height;d.maxHeight=Math.min(e||b,b)}a=d.callParent(arguments);d.maxHeight=e;return a},afterComponentLayout:function(c,a,b,e){var d=this;d.callParent(arguments);if(d.showSeparator){d.iconSepEl.setHeight(d.componentLayout.lastComponentSize.contentHeight)}},setVerticalPosition:function(){var d=this,g,e=d.el.getY(),h=e,j=d.getHeight(),b=Ext.Element.getViewportHeight().height,c=Ext.fly(d.el.getScopeParent()),a=c.getViewSize().height,i=e-c.getScroll().top;c=null;if(d.floating){g=d.maxHeight?d.maxHeight:a-i;if(j>a){h=e-i}else{if(g<j){h=e-(j-g)}else{if((e+j)>b){h=b-j}}}}d.el.setY(h)}});Ext.define("Ext.menu.ColorPicker",{extend:"Ext.menu.Menu",alias:"widget.colormenu",requires:["Ext.picker.Color"],hideOnClick:true,pickerId:null,initComponent:function(){var b=this,a=Ext.apply({},b.initialConfig);delete a.listeners;Ext.apply(b,{plain:true,showSeparator:false,items:Ext.applyIf({cls:Ext.baseCSSPrefix+"menu-color-item",id:b.pickerId,xtype:"colorpicker"},a)});b.callParent(arguments);b.picker=b.down("colorpicker");b.relayEvents(b.picker,["select"]);if(b.hideOnClick){b.on("select",b.hidePickerOnSelect,b)}},hidePickerOnSelect:function(){Ext.menu.Manager.hideAll()}});Ext.define("Ext.menu.DatePicker",{extend:"Ext.menu.Menu",alias:"widget.datemenu",requires:["Ext.picker.Date"],hideOnClick:true,pickerId:null,initComponent:function(){var b=this,a=Ext.apply({},b.initialConfig);delete a.listeners;Ext.apply(b,{showSeparator:false,plain:true,border:false,bodyPadding:0,items:Ext.applyIf({cls:Ext.baseCSSPrefix+"menu-date-item",id:b.pickerId,xtype:"datepicker"},a)});b.callParent(arguments);b.picker=b.down("datepicker");b.relayEvents(b.picker,["select"]);if(b.hideOnClick){b.on("select",b.hidePickerOnSelect,b)}},hidePickerOnSelect:function(){Ext.menu.Manager.hideAll()}});Ext.define("Ext.panel.Tool",{extend:"Ext.Component",requires:["Ext.tip.QuickTipManager"],alias:"widget.tool",baseCls:Ext.baseCSSPrefix+"tool",disabledCls:Ext.baseCSSPrefix+"tool-disabled",toolPressedCls:Ext.baseCSSPrefix+"tool-pressed",toolOverCls:Ext.baseCSSPrefix+"tool-over",ariaRole:"button",childEls:["toolEl"],renderTpl:['<img id="{id}-toolEl" src="{blank}" class="{baseCls}-{type}" role="presentation"/>'],tooltipType:"qtip",stopEvent:true,height:15,width:15,initComponent:function(){var a=this;a.addEvents("click");a.type=a.type||a.id;Ext.applyIf(a.renderData,{baseCls:a.baseCls,blank:Ext.BLANK_IMAGE_URL,type:a.type});a.tooltip=a.tooltip||a.qtip;a.callParent();a.on({element:"toolEl",click:a.onClick,mousedown:a.onMouseDown,mouseover:a.onMouseOver,mouseout:a.onMouseOut,scope:a})},afterRender:function(){var b=this,a;b.callParent(arguments);if(b.tooltip){if(Ext.isObject(b.tooltip)){Ext.tip.QuickTipManager.register(Ext.apply({target:b.id},b.tooltip))}else{a=b.tooltipType=="qtip"?"data-qtip":"title";b.toolEl.dom.setAttribute(a,b.tooltip)}}},getFocusEl:function(){return this.el},setType:function(a){var b=this;b.type=a;if(b.rendered){b.toolEl.dom.className=b.baseCls+"-"+a}return b},bindTo:function(a){this.owner=a},onClick:function(d,c){var b=this,a;if(b.disabled){return false}a=b.owner||b.ownerCt;b.el.removeCls(b.toolPressedCls);b.el.removeCls(b.toolOverCls);if(b.stopEvent!==false){d.stopEvent()}Ext.callback(b.handler,b.scope||b,[d,c,a,b]);b.fireEvent("click",b,d);return true},onDestroy:function(){if(Ext.isObject(this.tooltip)){Ext.tip.QuickTipManager.unregister(this.id)}this.callParent()},onMouseDown:function(){if(this.disabled){return false}this.el.addCls(this.toolPressedCls)},onMouseOver:function(){if(this.disabled){return false}this.el.addCls(this.toolOverCls)},onMouseOut:function(){this.el.removeCls(this.toolOverCls)}});Ext.define("Ext.resizer.SplitterTracker",{extend:"Ext.dd.DragTracker",requires:["Ext.util.Region"],enabled:true,overlayCls:Ext.baseCSSPrefix+"resizable-overlay",createDragOverlay:function(){var a;a=this.overlay=Ext.getBody().createChild({cls:this.overlayCls,html:"&#160;"});a.unselectable();a.setSize(Ext.Element.getViewWidth(true),Ext.Element.getViewHeight(true));a.show()},getPrevCmp:function(){var a=this.getSplitter();return a.previousSibling()},getNextCmp:function(){var a=this.getSplitter();return a.nextSibling()},onBeforeStart:function(i){var d=this,g=d.getPrevCmp(),a=d.getNextCmp(),c=d.getSplitter().collapseEl,h=i.getTarget(),b;if(c&&h===d.getSplitter().collapseEl.dom){return false}if(a.collapsed||g.collapsed){return false}d.prevBox=g.getEl().getBox();d.nextBox=a.getEl().getBox();d.constrainTo=b=d.calculateConstrainRegion();if(!b){return false}d.createDragOverlay();return b},onStart:function(b){var a=this.getSplitter();a.addCls(a.baseCls+"-active")},calculateConstrainRegion:function(){var g=this,a=g.getSplitter(),h=a.getWidth(),i=a.defaultSplitMin,b=a.orientation,d=g.prevBox,j=g.getPrevCmp(),c=g.nextBox,e=g.getNextCmp(),l,k;if(b==="vertical"){l=new Ext.util.Region(d.y,(j.maxWidth?d.x+j.maxWidth:c.right-(e.minWidth||i))+h,d.bottom,d.x+(j.minWidth||i));k=new Ext.util.Region(c.y,c.right-(e.minWidth||i),c.bottom,(e.maxWidth?c.right-e.maxWidth:d.x+(d.minWidth||i))-h)}else{l=new Ext.util.Region(d.y+(j.minHeight||i),d.right,(j.maxHeight?d.y+j.maxHeight:c.bottom-(e.minHeight||i))+h,d.x);k=new Ext.util.Region((e.maxHeight?c.bottom-e.maxHeight:d.y+(j.minHeight||i))-h,c.right,c.bottom-(e.minHeight||i),c.x)}return l.intersect(k)},performResize:function(m,g){var o=this,a=o.getSplitter(),h=a.orientation,p=o.getPrevCmp(),n=o.getNextCmp(),b=a.ownerCt,k=b.query(">[flex]"),l=k.length,j=0,d,q,c=0;for(;j<l;j++){q=k[j].getWidth();c+=q;k[j].flex=q}g=g||o.getOffset("dragTarget");if(h==="vertical"){g=g[0];d="width"}else{d="height";g=g[1]}if(p){q=o.prevBox[d]+g;if(p.flex){p.flex=q}else{p[d]=q}}if(n){q=o.nextBox[d]-g;if(n.flex){n.flex=q}else{n[d]=q}}b.updateLayout()},endDrag:function(){var a=this;if(a.overlay){a.overlay.remove();delete a.overlay}a.callParent(arguments)},onEnd:function(c){var a=this,b=a.getSplitter();b.removeCls(b.baseCls+"-active");a.performResize(c,a.getOffset("dragTarget"))},onDrag:function(g){var c=this,h=c.getOffset("dragTarget"),d=c.getSplitter(),b=d.getEl(),a=d.orientation;if(a==="vertical"){b.setX(c.startRegion.left+h[0])}else{b.setY(c.startRegion.top+h[1])}},getSplitter:function(){return this.splitter}});Ext.define("Ext.resizer.BorderSplitterTracker",{extend:"Ext.resizer.SplitterTracker",requires:["Ext.util.Region"],getPrevCmp:null,getNextCmp:null,calculateConstrainRegion:function(){var y=this,a=y.splitter,o=a.collapseTarget,d=a.defaultSplitMin,h=a.vertical?"Width":"Height",c="min"+h,u="max"+h,j="get"+h,t=a.neighbors,e=t.length,n=o.el.getBox(),g=n.x,p=n.y,x=n.right,k=n.bottom,r=a.vertical?(x-g):(k-p),w,l,m,v,s,q,b;m=(o[c]||Math.min(r,d))-r;v=o[u];if(!v){v=1000000000}else{v-=r}b=r;for(w=0;w<e;++w){l=t[w];r=l[j]();s=r-l[u];q=r-(l[c]||Math.min(r,d));if(!isNaN(s)){if(m<s){m=s}}if(v>q){v=q}}if(v-m<2){return null}n=new Ext.util.Region(p,x,k,g);y.constraintAdjusters[a.collapseDirection](n,m,v,a);y.dragInfo={minRange:m,maxRange:v,targetSize:b};return n},constraintAdjusters:{left:function(c,a,b,d){c[0]=c.x=c.left=c.right+a;c.right+=b+d.getWidth()},top:function(c,a,b,d){c[1]=c.y=c.top=c.bottom+a;c.bottom+=b+d.getHeight()},bottom:function(c,a,b,d){c.bottom=c.top-a;c.top-=b+d.getHeight()},right:function(c,a,b,d){c.right=c.left-a;c.left-=b+d.getWidth()}},onBeforeStart:function(h){var k=this,b=k.splitter,a=b.collapseTarget,m=b.neighbors,d=k.getSplitter().collapseEl,j=h.getTarget(),c=m.length,g,l;if(d&&j===b.collapseEl.dom){return false}if(a.collapsed){return false}for(g=0;g<c;++g){l=m[g];if(l.collapsed&&l.isHorz===a.isHorz){return false}}if(!(k.constrainTo=k.calculateConstrainRegion())){return false}k.createDragOverlay();return true},performResize:function(j,i){var k=this,b=k.splitter,h=b.collapseDirection,a=b.collapseTarget,g=k.splitAdjusters[b.vertical?"horz":"vert"],l=i[g.index],d=k.dragInfo,c;if(h=="right"||h=="bottom"){l=-l}l=Math.min(Math.max(d.minRange,l),d.maxRange);if(l){(c=b.ownerCt).suspendLayouts();g.adjustTarget(a,d.targetSize,l);c.resumeLayouts(true)}},splitAdjusters:{horz:{index:0,adjustTarget:function(b,a,c){b.flex=null;b.setSize(a+c)}},vert:{index:1,adjustTarget:function(b,a,c){b.flex=null;b.setSize(undefined,a+c)}}}});Ext.define("Ext.resizer.Handle",{extend:"Ext.Component",handleCls:"",baseHandleCls:Ext.baseCSSPrefix+"resizable-handle",region:"",beforeRender:function(){var a=this;a.callParent();a.addCls(a.baseHandleCls,a.baseHandleCls+"-"+a.region,a.handleCls)},onRender:function(){this.callParent(arguments);this.el.unselectable()}});Ext.define("Ext.resizer.ResizeTracker",{extend:"Ext.dd.DragTracker",dynamic:true,preserveRatio:false,constrainTo:null,proxyCls:Ext.baseCSSPrefix+"resizable-proxy",constructor:function(b){var d=this,c,a,e;if(!b.el){if(b.target.isComponent){d.el=b.target.getEl()}else{d.el=b.target}}this.callParent(arguments);if(d.preserveRatio&&d.minWidth&&d.minHeight){c=d.minWidth/d.el.getWidth();a=d.minHeight/d.el.getHeight();if(a>c){d.minWidth=d.el.getWidth()*a}else{d.minHeight=d.el.getHeight()*c}}if(d.throttle){e=Ext.Function.createThrottled(function(){Ext.resizer.ResizeTracker.prototype.resize.apply(d,arguments)},d.throttle);d.resize=function(h,i,g){if(g){Ext.resizer.ResizeTracker.prototype.resize.apply(d,arguments)}else{e.apply(null,arguments)}}}},onBeforeStart:function(a){this.startBox=this.el.getBox()},getDynamicTarget:function(){var a=this,b=a.target;if(a.dynamic){return b}else{if(!a.proxy){a.proxy=a.createProxy(b)}}a.proxy.show();return a.proxy},createProxy:function(c){var b,a=this.proxyCls,d;if(c.isComponent){b=c.getProxy().addCls(a)}else{d=Ext.getBody();if(Ext.scopeResetCSS){d=Ext.getBody().createChild({cls:Ext.resetCls})}b=c.createProxy({tag:"div",cls:a,id:c.id+"-rzproxy"},d)}b.removeCls(Ext.baseCSSPrefix+"proxy-el");return b},onStart:function(a){this.activeResizeHandle=Ext.get(this.getDragTarget().id);if(!this.dynamic){this.resize(this.startBox,{horizontal:"none",vertical:"none"})}},onDrag:function(a){if(this.dynamic||this.proxy){this.updateDimensions(a)}},updateDimensions:function(s,m){var t=this,c=t.activeResizeHandle.region,g=t.getOffset(t.constrainTo?"dragTarget":null),k=t.startBox,h,p=0,u=0,j,q,a=0,w=0,v,n=g[0]<0?"right":"left",r=g[1]<0?"down":"up",i,b,d,o,l;switch(c){case"south":u=g[1];b=2;break;case"north":u=-g[1];w=-u;b=2;break;case"east":p=g[0];b=1;break;case"west":p=-g[0];a=-p;b=1;break;case"northeast":u=-g[1];w=-u;p=g[0];i=[k.x,k.y+k.height];b=3;break;case"southeast":u=g[1];p=g[0];i=[k.x,k.y];b=3;break;case"southwest":p=-g[0];a=-p;u=g[1];i=[k.x+k.width,k.y];b=3;break;case"northwest":u=-g[1];w=-u;p=-g[0];a=-p;i=[k.x+k.width,k.y+k.height];b=3;break}d={width:k.width+p,height:k.height+u,x:k.x+a,y:k.y+w};j=Ext.Number.snap(d.width,t.widthIncrement);q=Ext.Number.snap(d.height,t.heightIncrement);if(j!=d.width||q!=d.height){switch(c){case"northeast":d.y-=q-d.height;break;case"north":d.y-=q-d.height;break;case"southwest":d.x-=j-d.width;break;case"west":d.x-=j-d.width;break;case"northwest":d.x-=j-d.width;d.y-=q-d.height}d.width=j;d.height=q}if(d.width<t.minWidth||d.width>t.maxWidth){d.width=Ext.Number.constrain(d.width,t.minWidth,t.maxWidth);if(a){d.x=k.x+(k.width-d.width)}}else{t.lastX=d.x}if(d.height<t.minHeight||d.height>t.maxHeight){d.height=Ext.Number.constrain(d.height,t.minHeight,t.maxHeight);if(w){d.y=k.y+(k.height-d.height)}}else{t.lastY=d.y}if(t.preserveRatio||s.shiftKey){h=t.startBox.width/t.startBox.height;o=Math.min(Math.max(t.minHeight,d.width/h),t.maxHeight);l=Math.min(Math.max(t.minWidth,d.height*h),t.maxWidth);if(b==1){d.height=o}else{if(b==2){d.width=l}else{v=Math.abs(i[0]-this.lastXY[0])/Math.abs(i[1]-this.lastXY[1]);if(v>h){d.height=o}else{d.width=l}if(c=="northeast"){d.y=k.y-(d.height-k.height)}else{if(c=="northwest"){d.y=k.y-(d.height-k.height);d.x=k.x-(d.width-k.width)}else{if(c=="southwest"){d.x=k.x-(d.width-k.width)}}}}}}if(u===0){r="none"}if(p===0){n="none"}t.resize(d,{horizontal:n,vertical:r},m)},getResizeTarget:function(a){return a?this.target:this.getDynamicTarget()},resize:function(b,d,a){var c=this.getResizeTarget(a);if(c.isComponent){c.setSize(b.width,b.height);if(c.floating){c.setPagePosition(b.x,b.y)}}else{c.setBox(b)}c=this.originalTarget;if(c&&(this.dynamic||a)){if(c.isComponent){c.setSize(b.width,b.height);if(c.floating){c.setPagePosition(b.x,b.y)}}else{c.setBox(b)}}},onEnd:function(a){this.updateDimensions(a,true);if(this.proxy){this.proxy.hide()}}});Ext.define("Ext.resizer.Resizer",{mixins:{observable:"Ext.util.Observable"},uses:["Ext.resizer.ResizeTracker","Ext.Component"],alternateClassName:"Ext.Resizable",handleCls:Ext.baseCSSPrefix+"resizable-handle",pinnedCls:Ext.baseCSSPrefix+"resizable-pinned",overCls:Ext.baseCSSPrefix+"resizable-over",wrapCls:Ext.baseCSSPrefix+"resizable-wrap",dynamic:true,handles:"s e se",height:null,width:null,heightIncrement:0,widthIncrement:0,minHeight:20,minWidth:20,maxHeight:10000,maxWidth:10000,pinned:false,preserveRatio:false,transparent:false,possiblePositions:{n:"north",s:"south",e:"east",w:"west",se:"southeast",sw:"southwest",nw:"northwest",ne:"northeast"},constructor:function(b){var k=this,j,o,q,p=k.handles,c,n,g,d=0,m,l=[],h,a,e;k.addEvents("beforeresize","resizedrag","resize");if(Ext.isString(b)||Ext.isElement(b)||b.dom){j=b;b=arguments[1]||{};b.target=j}k.mixins.observable.constructor.call(k,b);j=k.target;if(j){if(j.isComponent){k.el=j.getEl();if(j.minWidth){k.minWidth=j.minWidth}if(j.minHeight){k.minHeight=j.minHeight}if(j.maxWidth){k.maxWidth=j.maxWidth}if(j.maxHeight){k.maxHeight=j.maxHeight}if(j.floating){if(!k.hasOwnProperty("handles")){k.handles="n ne e se s sw w nw"}}}else{k.el=k.target=Ext.get(j)}}else{k.target=k.el=Ext.get(k.el)}q=k.el.dom.tagName.toUpperCase();if(q=="TEXTAREA"||q=="IMG"||q=="TABLE"){k.originalTarget=k.target;o=k.el;e=o.getBox();k.target=k.el=k.el.wrap({cls:k.wrapCls,id:k.el.id+"-rzwrap",style:o.getStyles("margin-top","margin-bottom")});k.el.setPositioning(o.getPositioning());o.clearPositioning();k.el.setBox(e);o.setStyle("position","absolute")}k.el.position();if(k.pinned){k.el.addCls(k.pinnedCls)}k.resizeTracker=new Ext.resizer.ResizeTracker({disabled:k.disabled,target:k.target,constrainTo:k.constrainTo,overCls:k.overCls,throttle:k.throttle,originalTarget:k.originalTarget,delegate:"."+k.handleCls,dynamic:k.dynamic,preserveRatio:k.preserveRatio,heightIncrement:k.heightIncrement,widthIncrement:k.widthIncrement,minHeight:k.minHeight,maxHeight:k.maxHeight,minWidth:k.minWidth,maxWidth:k.maxWidth});k.resizeTracker.on({mousedown:k.onBeforeResize,drag:k.onResize,dragend:k.onResizeEnd,scope:k});if(k.handles=="all"){k.handles="n s e w ne nw se sw"}p=k.handles=k.handles.split(/ |\s*?[,;]\s*?/);n=k.possiblePositions;g=p.length;c=k.handleCls+" "+(k.target.isComponent?(k.target.baseCls+"-handle "):"")+k.handleCls+"-";h=Ext.isIE6?' style="height:'+k.el.getHeight()+'px"':"";for(;d<g;d++){if(p[d]&&n[p[d]]){m=n[p[d]];if(m==="east"||m==="west"){a=h}else{a=""}l.push('<div id="'+k.el.id+"-"+m+'-handle" class="'+c+m+" "+Ext.baseCSSPrefix+'unselectable"'+a+"></div>")}}Ext.DomHelper.append(k.el,l.join(""));for(d=0;d<g;d++){if(p[d]&&n[p[d]]){m=n[p[d]];k[m]=k.el.getById(k.el.id+"-"+m+"-handle");k[m].region=m;k[m].unselectable();if(k.transparent){k[m].setOpacity(0)}}}if(Ext.isNumber(k.width)){k.width=Ext.Number.constrain(k.width,k.minWidth,k.maxWidth)}if(Ext.isNumber(k.height)){k.height=Ext.Number.constrain(k.height,k.minHeight,k.maxHeight)}if(k.width!==null||k.height!==null){if(k.originalTarget){k.originalTarget.setWidth(k.width);k.originalTarget.setHeight(k.height)}k.resizeTo(k.width,k.height)}k.forceHandlesHeight()},disable:function(){this.resizeTracker.disable()},enable:function(){this.resizeTracker.enable()},onBeforeResize:function(b,c){var a=this.el.getBox();return this.fireEvent("beforeresize",this,a.width,a.height,c)},onResize:function(c,d){var b=this,a=b.el.getBox();b.forceHandlesHeight();return b.fireEvent("resizedrag",b,a.width,a.height,d)},onResizeEnd:function(c,d){var b=this,a=b.el.getBox();b.forceHandlesHeight();return b.fireEvent("resize",b,a.width,a.height,d)},resizeTo:function(b,a){var c=this;c.target.setSize(b,a);c.fireEvent("resize",c,b,a,null)},getEl:function(){return this.el},getTarget:function(){return this.target},destroy:function(){var d=0,c=this.handles,a=c.length,b=this.possiblePositions;for(;d<a;d++){this[b[c[d]]].remove()}},forceHandlesHeight:function(){var a=this,b;if(Ext.isIE6){b=a.east;if(b){b.setHeight(a.el.getHeight())}b=a.west;if(b){b.setHeight(a.el.getHeight())}a.el.repaint()}}});Ext.define("Ext.selection.CellModel",{extend:"Ext.selection.Model",alias:"selection.cellmodel",requires:["Ext.util.KeyNav"],isCellModel:true,enableKeyNav:true,preventWrap:false,noSelection:{row:-1,column:-1},constructor:function(){this.addEvents("deselect","select");this.callParent(arguments)},bindComponent:function(a){var c=this,b=a.ownerCt;c.primaryView=a;c.views=c.views||[];c.views.push(a);c.bindStore(a.getStore(),true);a.on({cellmousedown:c.onMouseDown,refresh:c.onViewRefresh,scope:c});if(b.optimizedColumnMove!==false){b.on("columnmove",c.onColumnMove,c)}if(c.enableKeyNav){c.initKeyNav(a)}},initKeyNav:function(a){var b=this;if(!a.rendered){a.on("render",Ext.Function.bind(b.initKeyNav,b,[a],0),b,{single:true});return}a.el.set({tabIndex:-1});b.keyNav=new Ext.util.KeyNav({target:a.el,ignoreInputFields:true,up:b.onKeyUp,down:b.onKeyDown,right:b.onKeyRight,left:b.onKeyLeft,tab:b.onKeyTab,scope:b})},getHeaderCt:function(){var b=this.getCurrentPosition(),a=b?b.view:this.primaryView;return a.headerCt},onKeyUp:function(b,a){this.keyNavigation=true;this.move("up",b);this.keyNavigation=false},onKeyDown:function(b,a){this.keyNavigation=true;this.move("down",b);this.keyNavigation=false},onKeyLeft:function(b,a){this.keyNavigation=true;this.move("left",b);this.keyNavigation=false},onKeyRight:function(b,a){this.keyNavigation=true;this.move("right",b);this.keyNavigation=false},move:function(a,d){var c=this,g=c.getCurrentPosition(),b=g.view.walkCells(g,a,d,c.preventWrap);if(b){b.view=g.view;return c.setCurrentPosition(b)}},getCurrentPosition:function(){return this.selection},setCurrentPosition:function(b){var a=this;a.lastSelection=a.selection;if(a.selection){a.onCellDeselect(a.selection)}if(b){a.nextSelection=new a.Selection(a);a.nextSelection.setPosition(b);a.onCellSelect(a.nextSelection);return a.selection=a.nextSelection}},onStoreRemove:function(b,a,c){var d=this,e=d.getCurrentPosition();d.callParent(arguments);if(e){if(e.row==c){if(c<b.getCount()-1){e.setPosition(c,e.column);d.setCurrentPosition(e)}else{delete d.selection}}else{if(c<e.row){e.setPosition(e.row-1,e.column);d.setCurrentPosition(e)}}}},onMouseDown:function(c,a,d,b,h,i,g){this.setCurrentPosition({view:c,row:i,column:d})},onCellSelect:function(a,b){if(a&&a.row!==undefined&&a.row>-1){this.doSelect(a.view.getStore().getAt(a.row),false,b)}},onCellDeselect:function(a,b){if(a&&a.row!==undefined){this.doDeselect(a.view.getStore().getAt(a.row),b)}},onSelectChange:function(b,e,d,h){var g=this,i,c,a;if(e){i=g.nextSelection;c="select"}else{i=g.lastSelection||g.noSelection;c="deselect"}a=i.view||g.primaryView;if((d||g.fireEvent("before"+c,g,b,i.row,i.column))!==false&&h()!==false){if(e){a.onCellSelect(i);a.onCellFocus(i)}else{a.onCellDeselect(i);delete g.selection}if(!d){g.fireEvent(c,g,b,i.row,i.column)}}},onKeyTab:function(d,b){var c=this,a=c.getCurrentPosition().view.editingPlugin;if(a&&c.wasEditing){c.onEditorTab(a,d)}else{c.move(d.shiftKey?"left":"right",d)}},onEditorTab:function(b,g){var c=this,d=g.shiftKey?"left":"right",a=c.move(d,g);if(a){if(b.startEditByPosition(a)){c.wasEditing=false}else{c.wasEditing=true;if(!a.columnHeader.dataIndex){c.onEditorTab(b,g)}}}},refresh:function(){var b=this.getCurrentPosition(),a;if(b&&(a=this.store.indexOf(this.selected.last()))!==-1){b.row=a}},onColumnMove:function(d,e,b,c){var a=d.up("tablepanel");if(a){this.onViewRefresh(a.view)}},onViewRefresh:function(b){var c=this,g=c.getCurrentPosition(),e=b.headerCt,a,d;if(g&&g.view===b){a=g.record;d=g.columnHeader;if(!d.isDescendantOf(e)){d=e.queryById(d.id)||e.down('[text="'+d.text+'"]')||e.down('[dataIndex="'+d.dataIndex+'"]')}if(d&&(b.store.indexOfId(a.getId())!==-1)){c.setCurrentPosition({row:a,column:d,view:b})}}},selectByPosition:function(a){this.setCurrentPosition(a)}},function(){var a=this.prototype.Selection=function(b){this.model=b};a.prototype.setPosition=function(e,c){var d=this,b;if(arguments.length===1){if(e.view){d.view=b=e.view}c=e.column;e=e.row}if(!b){d.view=b=d.model.primaryView}if(typeof e==="number"){d.row=e;d.record=b.store.getAt(e)}else{if(e.isModel){d.record=e;d.row=b.indexOf(e)}else{if(e.tagName){d.record=b.getRecord(e);d.row=b.indexOf(d.record)}}}if(typeof c==="number"){d.column=c;d.columnHeader=b.getHeaderAtIndex(c)}else{d.columnHeader=c;d.column=c.getIndex()}return d}});Ext.define("Ext.selection.RowModel",{extend:"Ext.selection.Model",alias:"selection.rowmodel",requires:["Ext.util.KeyNav"],deltaScroll:5,enableKeyNav:true,ignoreRightMouseSelection:false,constructor:function(){this.addEvents("beforedeselect","beforeselect","deselect","select");this.views=[];this.callParent(arguments)},bindComponent:function(a){var b=this;b.views=b.views||[];b.views.push(a);b.bindStore(a.getStore(),true);a.on({itemmousedown:b.onRowMouseDown,scope:b});if(b.enableKeyNav){b.initKeyNav(a)}},initKeyNav:function(a){var b=this;if(!a.rendered){a.on("render",Ext.Function.bind(b.initKeyNav,b,[a],0),b,{single:true});return}a.el.set({tabIndex:-1});b.keyNav=new Ext.util.KeyNav({target:a,ignoreInputFields:true,eventName:"itemkeydown",processEvent:function(d,c,h,e,g){g.record=c;g.recordIndex=e;return g},up:b.onKeyUp,down:b.onKeyDown,right:b.onKeyRight,left:b.onKeyLeft,pageDown:b.onKeyPageDown,pageUp:b.onKeyPageUp,home:b.onKeyHome,end:b.onKeyEnd,space:b.onKeySpace,enter:b.onKeyEnter,scope:b})},getRowsVisible:function(){var e=false,a=this.views[0],d=a.getNode(0),b,c;if(d){b=Ext.fly(d).getHeight();c=a.el.getHeight();e=Math.floor(c/b)}return e},onKeyEnd:function(c){var b=this,a=b.store.getAt(b.store.getCount()-1);if(a){if(c.shiftKey){b.selectRange(a,b.lastFocused||0);b.setLastFocused(a)}else{if(c.ctrlKey){b.setLastFocused(a)}else{b.doSelect(a)}}}},onKeyHome:function(b){var a=this,c=a.store.getAt(0);if(c){if(b.shiftKey){a.selectRange(c,a.lastFocused||0);a.setLastFocused(c)}else{if(b.ctrlKey){a.setLastFocused(c)}else{a.doSelect(c,false)}}}},onKeyPageUp:function(g){var d=this,h=d.getRowsVisible(),b,c,a;if(h){b=g.recordIndex;c=b-h;if(c<0){c=0}a=d.store.getAt(c);if(g.shiftKey){d.selectRange(a,g.record,g.ctrlKey,"up");d.setLastFocused(a)}else{if(g.ctrlKey){g.preventDefault();d.setLastFocused(a)}else{d.doSelect(a)}}}},onKeyPageDown:function(g){var c=this,h=c.getRowsVisible(),a,d,b;if(h){a=g.recordIndex;d=a+h;if(d>=c.store.getCount()){d=c.store.getCount()-1}b=c.store.getAt(d);if(g.shiftKey){c.selectRange(b,g.record,g.ctrlKey,"down");c.setLastFocused(b)}else{if(g.ctrlKey){g.preventDefault();c.setLastFocused(b)}else{c.doSelect(b)}}}},onKeySpace:function(c){var b=this,a=b.lastFocused;if(a){if(b.isSelected(a)){b.doDeselect(a,false)}else{b.doSelect(a,true)}}},onKeyEnter:Ext.emptyFn,onKeyUp:function(d){var c=this,a=c.store.indexOf(c.lastFocused),b;if(a>0){b=c.store.getAt(a-1);if(d.shiftKey&&c.lastFocused){if(c.isSelected(c.lastFocused)&&c.isSelected(b)){c.doDeselect(c.lastFocused,true);c.setLastFocused(b)}else{if(!c.isSelected(c.lastFocused)){c.doSelect(c.lastFocused,true);c.doSelect(b,true)}else{c.doSelect(b,true)}}}else{if(d.ctrlKey){c.setLastFocused(b)}else{c.doSelect(b)}}}},onKeyDown:function(d){var c=this,a=c.store.indexOf(c.lastFocused),b;if(a+1<c.store.getCount()){b=c.store.getAt(a+1);if(c.selected.getCount()===0){if(!d.ctrlKey){c.doSelect(b)}else{c.setLastFocused(b)}}else{if(d.shiftKey&&c.lastFocused){if(c.isSelected(c.lastFocused)&&c.isSelected(b)){c.doDeselect(c.lastFocused,true);c.setLastFocused(b)}else{if(!c.isSelected(c.lastFocused)){c.doSelect(c.lastFocused,true);c.doSelect(b,true)}else{c.doSelect(b,true)}}}else{if(d.ctrlKey){c.setLastFocused(b)}else{c.doSelect(b)}}}}},scrollByDeltaX:function(d){var a=this.views[0],c=a.up(),b=c.horizontalScroller;if(b){b.scrollByDeltaX(d)}},onKeyLeft:function(a){this.scrollByDeltaX(-this.deltaScroll)},onKeyRight:function(a){this.scrollByDeltaX(this.deltaScroll)},onRowMouseDown:function(b,a,d,c,g){if(!this.allowRightMouseSelection(g)){return}if(g.button===0||!this.isSelected(a)){this.selectWithEvent(a,g)}},allowRightMouseSelection:function(a){var b=this.ignoreRightMouseSelection&&a.button!==0;if(b){b=this.hasSelection()}return !b},onSelectChange:function(g,c,l,a){var j=this,m=j.views,d=m.length,k=j.store,b=k.indexOf(g),h=c?"select":"deselect",e=0;if((l||j.fireEvent("before"+h,j,g,b))!==false&&a()!==false){for(;e<d;e++){if(c){m[e].onRowSelect(b,l)}else{m[e].onRowDeselect(b,l)}}if(!l){j.fireEvent(h,j,g,b)}}},onLastFocusChanged:function(j,d,b){var a=this.views,h=a.length,c=this.store,g,e=0;if(j){g=c.indexOf(j);if(g!=-1){for(;e<h;e++){a[e].onRowFocus(g,false)}}}if(d){g=c.indexOf(d);if(g!=-1){for(e=0;e<h;e++){a[e].onRowFocus(g,true,b)}}}this.callParent()},onEditorTab:function(d,i){var g=this,c=g.views[0],b=d.getActiveRecord(),j=d.getActiveColumn(),a=c.getPosition(b,j),h=i.shiftKey?"left":"right";do{a=c.walkCells(a,h,i,g.preventWrap)}while(a&&!c.headerCt.getHeaderAtIndex(a.column).getEditor());if(a){d.startEditByPosition(a)}},getCurrentPosition:function(){var a=this.selected.items[0];if(a){return{row:this.store.indexOf(a),column:0}}},selectByPosition:function(a){var b=this.store.getAt(a.row);this.select(b)},selectNext:function(h,c){var g=this,b=g.store,e=g.getSelection(),a=e[e.length-1],d=b.indexOf(a)+1,i;if(d===b.getCount()||d===0){i=false}else{g.doSelect(d,h,c);i=true}return i},selectPrevious:function(g,b){var e=this,d=e.getSelection(),a=d[0],c=e.store.indexOf(a)-1,h;if(c<0){h=false}else{e.doSelect(c,g,b);h=true}return h}});Ext.define("Ext.selection.CheckboxModel",{alias:"selection.checkboxmodel",extend:"Ext.selection.RowModel",mode:"MULTI",injectCheckbox:0,checkOnly:false,showHeaderCheckbox:true,headerWidth:24,checkerOnCls:Ext.baseCSSPrefix+"grid-hd-checker-on",refreshOnRemove:true,beforeViewRender:function(a){var b=this;b.callParent(arguments);if(!b.hasLockedHeader()||a.headerCt.lockedCt){if(b.showHeaderCheckbox!==false){a.headerCt.on("headerclick",b.onHeaderClick,b)}b.addCheckbox(a,true);b.mon(a.ownerCt,"reconfigure",b.onReconfigure,b)}},bindComponent:function(a){var b=this;b.sortable=false;b.callParent(arguments)},hasLockedHeader:function(){var a=this.views,c=a.length,b;for(b=0;b<c;b++){if(a[b].headerCt.lockedCt){return true}}return false},addCheckbox:function(a,b){var c=this,d=c.injectCheckbox,e=a.headerCt;if(d!==false){if(d=="first"){d=0}else{if(d=="last"){d=e.getColumnCount()}}Ext.suspendLayouts();e.add(d,c.getHeaderConfig());Ext.resumeLayouts()}if(b!==true){a.refresh()}},onReconfigure:function(c,a,b){if(b){this.addCheckbox(this.views[0])}},toggleUiHeader:function(d){var a=this.views[0],c=a.headerCt,b=c.child("gridcolumn[isCheckerHd]");if(b){if(d){b.el.addCls(this.checkerOnCls)}else{b.el.removeCls(this.checkerOnCls)}}},onHeaderClick:function(c,g,b){if(g.isCheckerHd){b.stopEvent();var a=this,d=g.el.hasCls(Ext.baseCSSPrefix+"grid-hd-checker-on");a.preventFocus=true;if(d){a.deselectAll()}else{a.selectAll()}delete a.preventFocus}},getHeaderConfig:function(){var a=this,b=a.showHeaderCheckbox!==false;return{isCheckerHd:b,text:"&#160;",width:a.headerWidth,sortable:false,draggable:false,resizable:false,hideable:false,menuDisabled:true,dataIndex:"",cls:b?Ext.baseCSSPrefix+"column-header-checkbox ":"",renderer:Ext.Function.bind(a.renderer,a),editRenderer:a.editRenderer||a.renderEmpty,locked:a.hasLockedHeader()}},renderEmpty:function(){return"&#160;"},renderer:function(h,c,b,i,e,d,a){var g=Ext.baseCSSPrefix;c.tdCls=g+"grid-cell-special "+g+"grid-cell-row-checker";return'<div class="'+g+'grid-row-checker">&#160;</div>'},onRowMouseDown:function(b,a,h,d,i){b.el.focus();var g=this,c=i.getTarget("."+Ext.baseCSSPrefix+"grid-row-checker"),j;if(!g.allowRightMouseSelection(i)){return}if(g.checkOnly&&!c){return}if(c){j=g.getSelectionMode();if(j!=="SINGLE"){g.setSelectionMode("SIMPLE")}g.selectWithEvent(a,i);g.setSelectionMode(j)}else{g.selectWithEvent(a,i)}},onSelectChange:function(){var a=this;a.callParent(arguments);a.updateHeaderState()},onStoreLoad:function(){var a=this;a.callParent(arguments);a.updateHeaderState()},updateHeaderState:function(){var a=this.selected.getCount()===this.store.getCount();this.toggleUiHeader(a)}});Ext.define("Ext.selection.TreeModel",{extend:"Ext.selection.RowModel",alias:"selection.treemodel",pruneRemoved:false,onKeyRight:function(d,b){var c=this.getLastFocused(),a=this.view;if(c){if(c.isExpanded()){this.onKeyDown(d,b)}else{if(c.isExpandable()){a.expand(c)}}}},onKeyLeft:function(i,d){var h=this.getLastFocused(),c=this.view,b=c.getSelectionModel(),a,g;if(h){a=h.parentNode;if(h.isExpanded()){c.collapse(h)}else{if(a&&!a.isRoot()){if(i.shiftKey){b.selectRange(a,h,i.ctrlKey,"up");b.setLastFocused(a)}else{if(i.ctrlKey){b.setLastFocused(a)}else{b.select(a)}}}}}},onKeySpace:function(b,a){this.toggleCheck(b)},onKeyEnter:function(b,a){this.toggleCheck(b)},toggleCheck:function(b){b.stopEvent();var a=this.getLastSelected();if(a){this.view.onCheckChange(a)}}});Ext.define("Ext.slider.Thumb",{requires:["Ext.dd.DragTracker","Ext.util.Format"],topZIndex:10000,constructor:function(a){var b=this;Ext.apply(b,a||{},{cls:Ext.baseCSSPrefix+"slider-thumb",constrain:false});b.callParent([a])},render:function(){var a=this;a.el=a.slider.innerEl.insertFirst(a.getElConfig());a.onRender()},onRender:function(){if(this.disabled){this.disable()}this.initEvents()},getElConfig:function(){var c=this,b=c.slider,a={};a[b.vertical?"bottom":"left"]=b.calculateThumbPosition(b.normalizeValue(c.value))+"%";return{style:a,id:this.id,cls:this.cls}},move:function(c,b){var d=this.el,a=this.slider.vertical?"bottom":"left",g,e;c+="%";if(!b){d.dom.style[a]=c}else{g={};g[a]=c;if(!Ext.supports.GetPositionPercentage){e={};e[a]=d.dom.style[a]}new Ext.fx.Anim({target:d,duration:350,from:e,to:g})}},bringToFront:function(){this.el.setStyle("zIndex",this.topZIndex)},sendToBack:function(){this.el.setStyle("zIndex","")},enable:function(){var a=this;a.disabled=false;if(a.el){a.el.removeCls(a.slider.disabledCls)}},disable:function(){var a=this;a.disabled=true;if(a.el){a.el.addCls(a.slider.disabledCls)}},initEvents:function(){var b=this,a=b.el;b.tracker=new Ext.dd.DragTracker({onBeforeStart:Ext.Function.bind(b.onBeforeDragStart,b),onStart:Ext.Function.bind(b.onDragStart,b),onDrag:Ext.Function.bind(b.onDrag,b),onEnd:Ext.Function.bind(b.onDragEnd,b),tolerance:3,autoStart:300,overCls:Ext.baseCSSPrefix+"slider-thumb-over"});b.tracker.initEl(a)},onBeforeDragStart:function(a){if(this.disabled){return false}else{this.slider.promoteThumb(this);return true}},onDragStart:function(b){var a=this;a.el.addCls(Ext.baseCSSPrefix+"slider-thumb-drag");a.dragging=a.slider.dragging=true;a.dragStartValue=a.value;a.slider.fireEvent("dragstart",a.slider,b,a)},onDrag:function(h){var d=this,c=d.slider,b=d.index,g=d.getValueFromTracker(),a,i;if(g!==undefined){if(d.constrain){a=c.thumbs[b+1];i=c.thumbs[b-1];if(i!==undefined&&g<=i.value){g=i.value}if(a!==undefined&&g>=a.value){g=a.value}}c.setValue(b,g,false);c.fireEvent("drag",c,h,d)}},getValueFromTracker:function(){var a=this.slider,b=a.getTrackpoint(this.tracker.getXY());if(b!==undefined){return a.reversePixelValue(b)}},onDragEnd:function(d){var b=this,a=b.slider,c=b.value;b.el.removeCls(Ext.baseCSSPrefix+"slider-thumb-drag");b.dragging=a.dragging=false;a.fireEvent("dragend",a,d);if(b.dragStartValue!=c){a.fireEvent("changecomplete",a,c,b)}},destroy:function(){Ext.destroy(this.tracker)}});Ext.define("Ext.slider.Tip",{extend:"Ext.tip.Tip",minWidth:10,alias:"widget.slidertip",offsets:null,align:null,position:"",defaultVerticalPosition:"left",defaultHorizontalPosition:"top",isSliderTip:true,init:function(c){var b=this,d,a;if(!b.position){b.position=c.vertical?b.defaultVerticalPosition:b.defaultHorizontalPosition}switch(b.position){case"top":a=[0,-10];d="b-t?";break;case"bottom":a=[0,10];d="t-b?";break;case"left":a=[-10,0];d="r-l?";break;case"right":a=[10,0];d="l-r?"}if(!b.align){b.align=d}if(!b.offsets){b.offsets=a}c.on({scope:b,dragstart:b.onSlide,drag:b.onSlide,dragend:b.hide,destroy:b.destroy})},onSlide:function(c,d,a){var b=this;b.show();b.update(b.getText(a));b.el.alignTo(a.el,b.align,b.offsets)},getText:function(a){return String(a.value)}});Ext.define("Ext.slider.Multi",{extend:"Ext.form.field.Base",alias:"widget.multislider",alternateClassName:"Ext.slider.MultiSlider",requires:["Ext.slider.Thumb","Ext.slider.Tip","Ext.Number","Ext.util.Format","Ext.Template","Ext.layout.component.field.Slider"],childEls:["endEl","innerEl"],fieldSubTpl:['<div id="{id}" class="'+Ext.baseCSSPrefix+'slider {fieldCls} {vertical}" aria-valuemin="{minValue}" aria-valuemax="{maxValue}" aria-valuenow="{value}" aria-valuetext="{value}">','<div id="{cmpId}-endEl" class="'+Ext.baseCSSPrefix+'slider-end" role="presentation">','<div id="{cmpId}-innerEl" class="'+Ext.baseCSSPrefix+'slider-inner" role="presentation">',"{%this.renderThumbs(out, values)%}","</div>","</div>","</div>",{renderThumbs:function(g,e){var j=e.$comp,h=0,c=j.thumbs,b=c.length,d,a;for(;h<b;h++){d=c[h];a=d.getElConfig();a.id=j.id+"-thumb-"+h;Ext.DomHelper.generateMarkup(a,g)}},disableFormats:true}],vertical:false,minValue:0,maxValue:100,decimalPrecision:0,keyIncrement:1,increment:0,clickRange:[5,15],clickToChange:true,animate:true,dragging:false,constrainThumbs:true,componentLayout:"sliderfield",useTips:true,tipText:null,ariaRole:"slider",initValue:function(){var e=this,c=Ext.value,b=c(e.values,[c(e.value,c(e.minValue,0))]),d=0,a=b.length;e.originalValue=b;for(;d<a;d++){e.addThumb(b[d])}},initComponent:function(){var e=this,c,d,g,b,a;e.thumbs=[];e.keyIncrement=Math.max(e.increment,e.keyIncrement);e.addEvents("beforechange","change","changecomplete","dragstart","drag","dragend");if(e.increment){e.maxValue=Ext.Number.snapInRange(e.maxValue,e.increment,e.minValue);e.value=e.normalizeValue(e.value)}e.callParent();if(e.useTips){if(Ext.isObject(e.useTips)){c=Ext.apply({},e.useTips)}else{c=e.tipText?{getText:e.tipText}:{}}a=e.plugins=e.plugins||[];b=a.length;for(g=0;g<b;g++){if(a[g].isSliderTip){d=true;break}}if(!d){e.plugins.push(new Ext.slider.Tip(c))}}},addThumb:function(c){var b=this,a=new Ext.slider.Thumb({ownerCt:b,ownerLayout:b.getComponentLayout(),value:c,slider:b,index:b.thumbs.length,constrain:b.constrainThumbs,disabled:!!b.readOnly});b.thumbs.push(a);if(b.rendered){a.render()}return a},promoteThumb:function(c){var a=this.thumbs,e=a.length,g,b,d;for(d=0;d<e;d++){b=a[d];if(b==c){b.bringToFront()}else{b.sendToBack()}}},getSubTplData:function(){var a=this;return Ext.apply(a.callParent(),{$comp:a,vertical:a.vertical?Ext.baseCSSPrefix+"slider-vert":Ext.baseCSSPrefix+"slider-horz",minValue:a.minValue,maxValue:a.maxValue,value:a.value})},onRender:function(){var e=this,b=e.thumbs,a=b.length,d=0,c;e.callParent(arguments);for(d=0;d<a;d++){c=b[d];c.el=e.el.getById(e.id+"-thumb-"+d);c.onRender()}},initEvents:function(){var a=this;a.mon(a.el,{scope:a,mousedown:a.onMouseDown,keydown:a.onKeyDown})},getTrackpoint:function(g){var e=this,b,d,c=e.innerEl,a;if(e.vertical){d="top";a=c.getHeight()}else{d="left";a=c.getWidth()}b=Ext.Number.constrain(c.translatePoints(g)[d],0,a);return e.vertical?a-b:b},onMouseDown:function(j){var d=this,h=false,c=0,b=d.thumbs,a=b.length,g;if(d.disabled){return}for(;c<a;c++){h=h||j.target==b[c].el.dom}if(d.clickToChange&&!h){g=d.getTrackpoint(j.getXY());if(g!==undefined){d.onClickChange(g)}}d.focus()},onClickChange:function(d){var c=this,a,b;a=c.getNearest(d);if(!a.disabled){b=a.index;c.setValue(b,Ext.util.Format.round(c.reversePixelValue(d),c.decimalPrecision),undefined,true)}},getNearest:function(j){var k=this,g=k.reversePixelValue(j),l=(k.maxValue-k.minValue)+5,b=null,e=k.thumbs,c=0,d=e.length,a,m,h;for(;c<d;c++){a=k.thumbs[c];m=a.value;h=Math.abs(m-g);if(Math.abs(h<=l)){b=a;l=h}}return b},onKeyDown:function(c){var b=this,a,d;if(b.disabled||b.thumbs.length!==1){c.preventDefault();return}a=c.getKey();switch(a){case c.UP:case c.RIGHT:c.stopEvent();d=c.ctrlKey?b.maxValue:b.getValue(0)+b.keyIncrement;b.setValue(0,d,undefined,true);break;case c.DOWN:case c.LEFT:c.stopEvent();d=c.ctrlKey?b.minValue:b.getValue(0)-b.keyIncrement;b.setValue(0,d,undefined,true);break;default:c.preventDefault()}},normalizeValue:function(b){var c=this,d=Ext.Number,a=d[c.zeroBasedSnapping?"snap":"snapInRange"];b=a.call(d,b,c.increment,c.minValue,c.maxValue);b=Ext.util.Format.round(b,c.decimalPrecision);b=Ext.Number.constrain(b,c.minValue,c.maxValue);return b},setMinValue:function(g){var e=this,d=0,b=e.thumbs,a=b.length,c;e.minValue=g;if(e.rendered){e.inputEl.dom.setAttribute("aria-valuemin",g)}for(;d<a;++d){c=b[d];c.value=c.value<g?g:c.value}e.syncThumbs()},setMaxValue:function(g){var e=this,d=0,b=e.thumbs,a=b.length,c;e.maxValue=g;if(e.rendered){e.inputEl.dom.setAttribute("aria-valuemax",g)}for(;d<a;++d){c=b[d];c.value=c.value>g?g:c.value}e.syncThumbs()},setValue:function(c,g,b,e){var d=this,a=d.thumbs[c];g=d.normalizeValue(g);if(g!==a.value&&d.fireEvent("beforechange",d,g,a.value,a)!==false){a.value=g;if(d.rendered){d.inputEl.set({"aria-valuenow":g,"aria-valuetext":g});a.move(d.calculateThumbPosition(g),Ext.isDefined(b)?b!==false:d.animate);d.fireEvent("change",d,g,a);d.checkDirty();if(e){d.fireEvent("changecomplete",d,g,a)}}}},calculateThumbPosition:function(a){return(a-this.minValue)/(this.maxValue-this.minValue)*100},getRatio:function(){var b=this,a=this.vertical?this.innerEl.getHeight():this.innerEl.getWidth(),c=this.maxValue-this.minValue;return c===0?a:(a/c)},reversePixelValue:function(a){return this.minValue+(a/this.getRatio())},reversePercentageValue:function(a){return this.minValue+(this.maxValue-this.minValue)*(a/100)},onDisable:function(){var g=this,d=0,b=g.thumbs,a=b.length,c,e,h;g.callParent();for(;d<a;d++){c=b[d];e=c.el;c.disable();if(Ext.isIE){h=e.getXY();e.hide();g.innerEl.addCls(g.disabledCls).dom.disabled=true;if(!g.thumbHolder){g.thumbHolder=g.endEl.createChild({cls:Ext.baseCSSPrefix+"slider-thumb "+g.disabledCls})}g.thumbHolder.show().setXY(h)}}},onEnable:function(){var g=this,d=0,b=g.thumbs,a=b.length,c,e;this.callParent();for(;d<a;d++){c=b[d];e=c.el;c.enable();if(Ext.isIE){g.innerEl.removeCls(g.disabledCls).dom.disabled=false;if(g.thumbHolder){g.thumbHolder.hide()}e.show();g.syncThumbs()}}},syncThumbs:function(){if(this.rendered){var a=this.thumbs,c=a.length,b=0;for(;b<c;b++){a[b].move(this.calculateThumbPosition(a[b].value))}}},getValue:function(a){return Ext.isNumber(a)?this.thumbs[a].value:this.getValues()},getValues:function(){var c=[],d=0,b=this.thumbs,a=b.length;for(;d<a;d++){c.push(b[d].value)}return c},getSubmitValue:function(){var a=this;return(a.disabled||!a.submitValue)?null:a.getValue()},reset:function(){var e=this,b=[].concat(e.originalValue),c=0,d=b.length,g;for(;c<d;c++){g=b[c];e.setValue(c,g)}e.clearInvalid();delete e.wasValid},setReadOnly:function(e){var d=this,b=d.thumbs,a=b.length,c=0;d.callParent(arguments);e=d.readOnly;for(;c<a;++c){if(e){b[c].disable()}else{b[c].enable()}}},beforeDestroy:function(){var e=this,b=e.thumbs,d=0,a=b.length,c;Ext.destroy(e.innerEl,e.endEl,e.focusEl);for(;d<a;d++){c=b[d];Ext.destroy(c)}e.callParent()}});Ext.define("Ext.slider.Single",{extend:"Ext.slider.Multi",alias:["widget.slider","widget.sliderfield"],alternateClassName:["Ext.Slider","Ext.form.SliderField","Ext.slider.SingleSlider","Ext.slider.Slider"],getValue:function(){return this.callParent([0])},setValue:function(d,b){var c=arguments,a=c.length;if(a==1||(a<=3&&typeof c[1]!="number")){c=Ext.toArray(c);c.unshift(0)}return this.callParent(c)},getNearest:function(){return this.thumbs[0]}});Ext.define("Ext.state.CookieProvider",{extend:"Ext.state.Provider",constructor:function(a){var b=this;b.path="/";b.expires=new Date(new Date().getTime()+(1000*60*60*24*7));b.domain=null;b.secure=false;b.callParent(arguments);b.state=b.readCookies()},set:function(a,c){var b=this;if(typeof c=="undefined"||c===null){b.clear(a);return}b.setCookie(a,c);b.callParent(arguments)},clear:function(a){this.clearCookie(a);this.callParent(arguments)},readCookies:function(){var e={},j=document.cookie+";",d=/\s?(.*?)=(.*?);/g,i=this.prefix,a=i.length,h,b,g;while((h=d.exec(j))!=null){b=h[1];g=h[2];if(b&&b.substring(0,a)==i){e[b.substr(a)]=this.decodeValue(g)}}return e},setCookie:function(a,c){var b=this;document.cookie=b.prefix+a+"="+b.encodeValue(c)+((b.expires==null)?"":("; expires="+b.expires.toGMTString()))+((b.path==null)?"":("; path="+b.path))+((b.domain==null)?"":("; domain="+b.domain))+((b.secure==true)?"; secure":"")},clearCookie:function(a){var b=this;document.cookie=b.prefix+a+"=null; expires=Thu, 01-Jan-70 00:00:01 GMT"+((b.path==null)?"":("; path="+b.path))+((b.domain==null)?"":("; domain="+b.domain))+((b.secure==true)?"; secure":"")}});Ext.define("Ext.state.LocalStorageProvider",{extend:"Ext.state.Provider",alias:"state.localstorage",constructor:function(){var a=this;a.callParent(arguments);a.store=a.getStorageObject();a.state=a.readLocalStorage()},readLocalStorage:function(){var c=this.store,e=0,a=c.length,h=this.prefix,b=h.length,g={},d;for(;e<a;++e){d=c.key(e);if(d.substring(0,b)==h){g[d.substr(b)]=this.decodeValue(c.getItem(d))}}return g},set:function(a,c){var b=this;b.clear(a);if(typeof c=="undefined"||c===null){return}b.store.setItem(b.prefix+a,b.encodeValue(c));b.callParent(arguments)},clear:function(a){this.store.removeItem(this.prefix+a);this.callParent(arguments)},getStorageObject:function(){try{var a="localStorage" in window&&window.localStorage!==null;if(a){return window.localStorage}}catch(b){return false}}});Ext.define("Ext.tab.Tab",{extend:"Ext.button.Button",alias:"widget.tab",requires:["Ext.layout.component.Tab","Ext.util.KeyNav"],componentLayout:"tab",isTab:true,baseCls:Ext.baseCSSPrefix+"tab",activeCls:"active",closableCls:"closable",closable:true,closeText:"Close Tab",active:false,childEls:["closeEl"],scale:false,position:"top",initComponent:function(){var a=this;a.addEvents("activate","deactivate","beforeclose","close");a.callParent(arguments);if(a.card){a.setCard(a.card)}},getTemplateArgs:function(){var b=this,a=b.callParent();a.closable=b.closable;a.closeText=b.closeText;return a},beforeRender:function(){var b=this,a=b.up("tabbar"),c=b.up("tabpanel");b.callParent();b.addClsWithUI(b.position);b.syncClosableUI();if(!b.minWidth){b.minWidth=(a)?a.minTabWidth:b.minWidth;if(!b.minWidth&&c){b.minWidth=c.minTabWidth}if(b.minWidth&&b.iconCls){b.minWidth+=25}}if(!b.maxWidth){b.maxWidth=(a)?a.maxTabWidth:b.maxWidth;if(!b.maxWidth&&c){b.maxWidth=c.maxTabWidth}}},onRender:function(){var a=this;a.callParent(arguments);a.keyNav=new Ext.util.KeyNav(a.el,{enter:a.onEnterKey,del:a.onDeleteKey,scope:a})},enable:function(a){var b=this;b.callParent(arguments);b.removeClsWithUI(b.position+"-disabled");return b},disable:function(a){var b=this;b.callParent(arguments);b.addClsWithUI(b.position+"-disabled");return b},onDestroy:function(){var a=this;Ext.destroy(a.keyNav);delete a.keyNav;a.callParent(arguments)},setClosable:function(a){var b=this;a=(!arguments.length||!!a);if(b.closable!=a){b.closable=a;if(b.card){b.card.closable=a}b.syncClosableUI();if(b.rendered){b.syncClosableElements();b.updateLayout()}}},syncClosableElements:function(){var a=this,b=a.closeEl;if(a.closable){if(!b){a.closeEl=a.btnWrap.insertSibling({tag:"a",cls:a.baseCls+"-close-btn",href:"#",title:a.closeText},"after")}}else{if(b){b.remove();delete a.closeEl}}},syncClosableUI:function(){var b=this,a=[b.closableCls,b.closableCls+"-"+b.position];if(b.closable){b.addClsWithUI(a)}else{b.removeClsWithUI(a)}},setCard:function(a){var b=this;b.card=a;b.setText(b.title||a.title);b.setIconCls(b.iconCls||a.iconCls);b.setIcon(b.icon||a.icon)},onCloseClick:function(){var a=this;if(a.fireEvent("beforeclose",a)!==false){if(a.tabBar){if(a.tabBar.closeTab(a)===false){return}}else{a.fireClose()}}},fireClose:function(){this.fireEvent("close",this)},onEnterKey:function(b){var a=this;if(a.tabBar){a.tabBar.onClick(b,a.el)}},onDeleteKey:function(a){if(this.closable){this.onCloseClick()}},activate:function(b){var a=this;a.active=true;a.addClsWithUI([a.activeCls,a.position+"-"+a.activeCls]);if(b!==true){a.fireEvent("activate",a)}},deactivate:function(b){var a=this;a.active=false;a.removeClsWithUI([a.activeCls,a.position+"-"+a.activeCls]);if(b!==true){a.fireEvent("deactivate",a)}}});Ext.define("Ext.tab.Bar",{extend:"Ext.panel.Header",alias:"widget.tabbar",baseCls:Ext.baseCSSPrefix+"tab-bar",requires:["Ext.tab.Tab"],isTabBar:true,defaultType:"tab",plain:false,childEls:["body","strip"],renderTpl:['<div id="{id}-body" class="{baseCls}-body {bodyCls}<tpl if="ui"> {baseCls}-body-{ui}<tpl for="uiCls"> {parent.baseCls}-body-{parent.ui}-{.}</tpl></tpl>"<tpl if="bodyStyle"> style="{bodyStyle}"</tpl>>',"{%this.renderContainer(out,values)%}","</div>",'<div id="{id}-strip" class="{baseCls}-strip<tpl if="ui"> {baseCls}-strip-{ui}<tpl for="uiCls"> {parent.baseCls}-strip-{parent.ui}-{.}</tpl></tpl>"></div>'],initComponent:function(){var a=this;if(a.plain){a.setUI(a.ui+"-plain")}a.addClsWithUI(a.dock);a.addEvents("change");a.callParent(arguments);a.layout.align=(a.orientation=="vertical")?"left":"top";a.layout.overflowHandler=new Ext.layout.container.boxOverflow.Scroller(a.layout);a.remove(a.titleCmp);delete a.titleCmp;Ext.apply(a.renderData,{bodyCls:a.bodyCls})},getLayout:function(){var a=this;a.layout.type=(a.dock==="top"||a.dock==="bottom")?"hbox":"vbox";return a.callParent(arguments)},onAdd:function(a){a.position=this.dock;this.callParent(arguments)},onRemove:function(a){var b=this;if(a===b.previousTab){b.previousTab=null}b.callParent(arguments)},afterComponentLayout:function(a){this.callParent(arguments);this.strip.setWidth(a)},onClick:function(g,d){var c=this,i=g.getTarget("."+Ext.tab.Tab.prototype.baseCls),b=i&&Ext.getCmp(i.id),h=c.tabPanel,a=b&&b.closeEl&&(d===b.closeEl.dom);if(a){g.preventDefault()}if(b&&b.isDisabled&&!b.isDisabled()){if(b.closable&&a){b.onCloseClick()}else{if(h){h.setActiveTab(b.card)}else{c.setActiveTab(b)}b.focus()}}},closeTab:function(c){var d=this,b=c.card,e=d.tabPanel,a;if(b&&b.fireEvent("beforeclose",b)===false){return false}a=d.findNextActivatable(c);Ext.suspendLayouts();if(e&&b){delete c.ownerCt;b.fireEvent("close",b);e.remove(b);if(!e.getComponent(b)){c.fireClose();d.remove(c)}else{c.ownerCt=d;Ext.resumeLayouts(true);return false}}if(a){if(e){e.setActiveTab(a.card)}else{d.setActiveTab(a)}a.focus()}Ext.resumeLayouts(true)},findNextActivatable:function(a){var b=this;if(a.active&&b.items.getCount()>1){return(b.previousTab&&b.previousTab!==a&&!b.previousTab.disabled)?b.previousTab:(a.next("tab[disabled=false]")||a.prev("tab[disabled=false]"))}},setActiveTab:function(a){var b=this;if(!a.disabled&&a!==b.activeTab){if(b.activeTab){if(b.activeTab.isDestroyed){b.previousTab=null}else{b.previousTab=b.activeTab;b.activeTab.deactivate()}}a.activate();b.activeTab=a;b.fireEvent("change",b,a,a.card);b.on({afterlayout:b.afterTabActivate,scope:b,single:true});b.updateLayout()}},afterTabActivate:function(){this.layout.overflowHandler.scrollToItem(this.activeTab)}});Ext.define("Ext.tab.Panel",{extend:"Ext.panel.Panel",alias:"widget.tabpanel",alternateClassName:["Ext.TabPanel"],requires:["Ext.layout.container.Card","Ext.tab.Bar"],tabPosition:"top",removePanelHeader:true,plain:false,itemCls:Ext.baseCSSPrefix+"tabpanel-child",minTabWidth:undefined,maxTabWidth:undefined,deferredRender:true,initComponent:function(){var c=this,b=[].concat(c.dockedItems||[]),a=c.activeTab||(c.activeTab=0);c.layout=new Ext.layout.container.Card(Ext.apply({owner:c,deferredRender:c.deferredRender,itemCls:c.itemCls,activeItem:c.activeTab},c.layout));c.tabBar=new Ext.tab.Bar(Ext.apply({dock:c.tabPosition,plain:c.plain,border:c.border,cardLayout:c.layout,tabPanel:c},c.tabBar));b.push(c.tabBar);c.dockedItems=b;c.addEvents("beforetabchange","tabchange");c.callParent(arguments);c.activeTab=c.getComponent(a);if(c.activeTab){c.activeTab.tab.activate(true);c.tabBar.activeTab=c.activeTab.tab}},setActiveTab:function(a){var c=this,b;a=c.getComponent(a);if(a){b=c.getActiveTab();if(b!==a&&c.fireEvent("beforetabchange",c,a,b)===false){return false}if(!a.isComponent){Ext.suspendLayouts();a=c.add(a);Ext.resumeLayouts()}c.activeTab=a;Ext.suspendLayouts();c.layout.setActiveItem(a);a=c.activeTab=c.layout.getActiveItem();if(a&&a!==b){c.tabBar.setActiveTab(a.tab);Ext.resumeLayouts(true);if(b!==a){c.fireEvent("tabchange",c,a,b)}}else{Ext.resumeLayouts(true)}return a}},getActiveTab:function(){var b=this,a=b.getComponent(b.activeTab);if(a&&b.items.indexOf(a)!=-1){b.activeTab=a}else{b.activeTab=null}return b.activeTab},getTabBar:function(){return this.tabBar},onAdd:function(e,c){var d=this,b=e.tabConfig||{},a={xtype:"tab",card:e,disabled:e.disabled,closable:e.closable,hidden:e.hidden&&!e.hiddenByLayout,tooltip:e.tooltip,tabBar:d.tabBar,closeText:e.closeText};b=Ext.applyIf(b,a);e.tab=d.tabBar.insert(c,b);e.on({scope:d,enable:d.onItemEnable,disable:d.onItemDisable,beforeshow:d.onItemBeforeShow,iconchange:d.onItemIconChange,iconclschange:d.onItemIconClsChange,titlechange:d.onItemTitleChange});if(e.isPanel){if(d.removePanelHeader){if(e.rendered){if(e.header){e.header.hide()}}else{e.header=false}}if(e.isPanel&&d.border){e.setBorder(false)}}},onItemEnable:function(a){a.tab.enable()},onItemDisable:function(a){a.tab.disable()},onItemBeforeShow:function(a){if(a!==this.activeTab){this.setActiveTab(a);return false}},onItemIconChange:function(b,a){b.tab.setIcon(a)},onItemIconClsChange:function(b,a){b.tab.setIconCls(a)},onItemTitleChange:function(a,b){a.tab.setText(b)},doRemove:function(d,b){var c=this,a;if(c.destroying||c.items.getCount()==1){c.activeTab=null}else{if((a=c.tabBar.items.indexOf(c.tabBar.findNextActivatable(d.tab)))!==-1){c.setActiveTab(a)}}this.callParent(arguments);delete d.tab.card;delete d.tab},onRemove:function(b,c){var a=this;b.un({scope:a,enable:a.onItemEnable,disable:a.onItemDisable,beforeshow:a.onItemBeforeShow});if(!a.destroying&&b.tab.ownerCt===a.tabBar){a.tabBar.remove(b.tab)}}});Ext.define("Ext.toolbar.Spacer",{extend:"Ext.Component",alias:"widget.tbspacer",alternateClassName:"Ext.Toolbar.Spacer",baseCls:Ext.baseCSSPrefix+"toolbar-spacer",focusable:false});Ext.define("Ext.tree.Column",{extend:"Ext.grid.column.Column",alias:"widget.treecolumn",tdCls:Ext.baseCSSPrefix+"grid-cell-treecolumn",treePrefix:Ext.baseCSSPrefix+"tree-",elbowPrefix:Ext.baseCSSPrefix+"tree-elbow-",expanderCls:Ext.baseCSSPrefix+"tree-expander",imgText:'<img src="{1}" class="{0}" />',checkboxText:'<input type="button" role="checkbox" class="{0}" {1} />',initComponent:function(){var a=this;a.origRenderer=a.renderer||a.defaultRenderer;a.origScope=a.scope||window;a.renderer=a.treeRenderer;a.scope=a;a.callParent()},treeRenderer:function(l,n,c,b,k,e,j){var s=this,r=[],p=Ext.String.format,u=c.getDepth(),q=s.treePrefix,d=s.elbowPrefix,m=s.expanderCls,i=s.imgText,v=s.checkboxText,h=s.origRenderer.apply(s.origScope,arguments),g=Ext.BLANK_IMAGE_URL,o=c.get("href"),t=c.get("hrefTarget"),a=c.get("cls");while(c){if(!c.isRoot()||(c.isRoot()&&j.rootVisible)){if(c.getDepth()===u){r.unshift(p(i,q+"icon "+q+"icon"+(c.get("icon")?"-inline ":(c.isLeaf()?"-leaf ":"-parent "))+(c.get("iconCls")||""),c.get("icon")||g));if(c.get("checked")!==null){r.unshift(p(v,(q+"checkbox")+(c.get("checked")?" "+q+"checkbox-checked":""),c.get("checked")?'aria-checked="true"':""));if(c.get("checked")){n.tdCls+=(" "+q+"checked")}}if(c.isLast()){if(c.isExpandable()){r.unshift(p(i,(d+"end-plus "+m),g))}else{r.unshift(p(i,(d+"end"),g))}}else{if(c.isExpandable()){r.unshift(p(i,(d+"plus "+m),g))}else{r.unshift(p(i,(q+"elbow"),g))}}}else{if(c.isLast()||c.getDepth()===0){r.unshift(p(i,(d+"empty"),g))}else{if(c.getDepth()!==0){r.unshift(p(i,(d+"line"),g))}}}}c=c.parentNode}if(o){r.push('<a href="',o,'" target="',t,'">',h,"</a>")}else{r.push(h)}if(a){n.tdCls+=" "+a}return r.join("")},defaultRenderer:function(a){return a}});Ext.define("Ext.tree.View",{extend:"Ext.view.Table",alias:"widget.treeview",requires:["Ext.data.NodeStore"],loadingCls:Ext.baseCSSPrefix+"grid-tree-loading",expandedCls:Ext.baseCSSPrefix+"grid-tree-node-expanded",leafCls:Ext.baseCSSPrefix+"grid-tree-node-leaf",expanderSelector:"."+Ext.baseCSSPrefix+"tree-expander",checkboxSelector:"."+Ext.baseCSSPrefix+"tree-checkbox",expanderIconOverCls:Ext.baseCSSPrefix+"tree-expander-over",nodeAnimWrapCls:Ext.baseCSSPrefix+"tree-animator-wrap",blockRefresh:true,loadMask:false,rootVisible:true,deferInitialRefresh:false,expandDuration:250,collapseDuration:250,toggleOnDblClick:true,stripeRows:false,uiFields:["expanded","loaded","checked","expandable","leaf","icon","iconCls","loading","qtip","qtitle"],initComponent:function(){var a=this,b=a.panel.getStore();if(a.initialConfig.animate===undefined){a.animate=Ext.enableFx}a.store=new Ext.data.NodeStore({treeStore:b,recursive:true,rootVisible:a.rootVisible,listeners:{beforeexpand:a.onBeforeExpand,expand:a.onExpand,beforecollapse:a.onBeforeCollapse,collapse:a.onCollapse,write:a.onStoreWrite,datachanged:a.onStoreDataChanged,scope:a}});if(a.node){a.setRootNode(a.node)}a.animQueue={};a.animWraps={};a.addEvents("afteritemexpand","afteritemcollapse");a.callParent(arguments);a.on({element:"el",scope:a,delegate:a.expanderSelector,mouseover:a.onExpanderMouseOver,mouseout:a.onExpanderMouseOut});a.on({element:"el",scope:a,delegate:a.checkboxSelector,click:a.onCheckboxChange})},getMaskStore:function(){return this.panel.getStore()},afterComponentLayout:function(){this.callParent(arguments);var a=this.stretcher;if(a){a.setWidth((this.getWidth()-Ext.getScrollbarSize().width))}},processUIEvent:function(a){if(a.getTarget("."+this.nodeAnimWrapCls,this.el)){return false}return this.callParent(arguments)},onClear:function(){this.store.removeAll()},setRootNode:function(b){var a=this;a.store.setNode(b);a.node=b},onCheckboxChange:function(d,a){var c=this,b=d.getTarget(c.getItemSelector(),c.getTargetEl());if(b){c.onCheckChange(c.getRecord(b))}},onCheckChange:function(a){var b=a.get("checked");if(Ext.isBoolean(b)){b=!b;a.set("checked",b);this.fireEvent("checkchange",a,b)}},getChecked:function(){var a=[];this.node.cascadeBy(function(b){if(b.get("checked")){a.push(b)}});return a},isItemChecked:function(a){return a.get("checked")},createAnimWrap:function(j,k){var g="",e=this.panel.headerCt,b=e.getGridColumns(),h=0,l=b.length,m,d=this.getNode(j),a,c;for(;h<l;h++){m=b[h];g+='<th style="width: '+(m.hidden?0:m.getDesiredWidth())+'px; height: 0px;"></th>'}c=Ext.get(d);a=c.insertSibling({tag:"tr",html:['<td colspan="'+e.getColumnCount()+'">','<div class="'+this.nodeAnimWrapCls+'">','<table class="'+Ext.baseCSSPrefix+'grid-table" style="width: '+e.getFullWidth()+'px;"><tbody>',g,"</tbody></table>","</div>","</td>"].join("")},"after");return{record:j,node:d,el:a,expanding:false,collapsing:false,animating:false,animateEl:a.down("div"),targetEl:a.down("tbody")}},getAnimWrap:function(d,a){if(!this.animate){return null}var b=this.animWraps,c=b[d.internalId];if(a!==false){while(!c&&d){d=d.parentNode;if(d){c=b[d.internalId]}}}return c},doAdd:function(b,d,i){var j=this,g=d[0],l=g.parentNode,k=j.all.elements,n=0,e=j.getAnimWrap(l),m,c,h;if(!e||!e.expanding){return j.callParent(arguments)}l=e.record;m=e.targetEl;c=m.dom.childNodes;h=c.length-1;n=i-j.indexOf(l)-1;if(!h||n>=h){m.appendChild(b)}else{Ext.fly(c[n+1]).insertSibling(b,"before",true)}Ext.Array.insert(k,i,b);if(e.isAnimating){j.onExpand(l)}},beginBulkUpdate:function(){this.bulkUpdate=true},endBulkUpdate:function(){this.bulkUpdate=false},onRemove:function(e,a,b){var d=this,c=d.bulkUpdate;if(d.viewReady){d.doRemove(a,b);if(!c){d.updateIndexes(b)}if(d.store.getCount()===0){d.refresh()}if(!c){d.fireEvent("itemremove",a,b)}}},doRemove:function(a,c){var h=this,d=h.all,b=h.getAnimWrap(a),g=d.item(c),e=g?g.dom:null;if(!e||!b||!b.collapsing){return h.callParent(arguments)}b.targetEl.appendChild(e);d.removeElement(c)},onBeforeExpand:function(d,b,c){var e=this,a;if(!e.rendered||!e.animate){return}if(e.getNode(d)){a=e.getAnimWrap(d,false);if(!a){a=e.animWraps[d.internalId]=e.createAnimWrap(d);a.animateEl.setHeight(0)}else{if(a.collapsing){a.targetEl.select(e.itemSelector).remove()}}a.expanding=true;a.collapsing=false}},onExpand:function(i){var h=this,e=h.animQueue,a=i.getId(),c=h.getNode(i),g=c?h.indexOf(c):-1,d,b,j;if(h.singleExpand){h.ensureSingleExpand(i)}if(g===-1){return}d=h.getAnimWrap(i,false);if(!d){h.isExpandingOrCollapsing=false;h.fireEvent("afteritemexpand",i,g,c);return}b=d.animateEl;j=d.targetEl;b.stopAnimation();e[a]=true;b.slideIn("t",{duration:h.expandDuration,listeners:{scope:h,lastframe:function(){d.el.insertSibling(j.query(h.itemSelector),"before");d.el.remove();h.refreshSize();delete h.animWraps[d.record.internalId];delete e[a]}},callback:function(){h.isExpandingOrCollapsing=false;h.fireEvent("afteritemexpand",i,g,c)}});d.isAnimating=true},onBeforeCollapse:function(d,b,c){var e=this,a;if(!e.rendered||!e.animate){return}if(e.getNode(d)){a=e.getAnimWrap(d);if(!a){a=e.animWraps[d.internalId]=e.createAnimWrap(d,c)}else{if(a.expanding){a.targetEl.select(this.itemSelector).remove()}}a.expanding=false;a.collapsing=true}},onCollapse:function(i){var h=this,e=h.animQueue,a=i.getId(),c=h.getNode(i),g=c?h.indexOf(c):-1,d=h.getAnimWrap(i),b,j;if(g===-1){return}if(!d){h.isExpandingOrCollapsing=false;h.fireEvent("afteritemcollapse",i,g,c);return}b=d.animateEl;j=d.targetEl;e[a]=true;b.stopAnimation();b.slideOut("t",{duration:h.collapseDuration,listeners:{scope:h,lastframe:function(){d.el.remove();h.refreshSize();delete h.animWraps[d.record.internalId];delete e[a]}},callback:function(){h.isExpandingOrCollapsing=false;h.fireEvent("afteritemcollapse",i,g,c)}});d.isAnimating=true},isAnimating:function(a){return !!this.animQueue[a.getId()]},collectData:function(c){var g=this.callParent(arguments),e=g.rows,a=e.length,d=0,h,b;for(;d<a;d++){h=e[d];b=c[d];if(b.get("qtip")){h.rowAttr='data-qtip="'+b.get("qtip")+'"';if(b.get("qtitle")){h.rowAttr+=' data-qtitle="'+b.get("qtitle")+'"'}}if(b.isExpanded()){h.rowCls=(h.rowCls||"")+" "+this.expandedCls}if(b.isLeaf()){h.rowCls=(h.rowCls||"")+" "+this.leafCls}if(b.isLoading()){h.rowCls=(h.rowCls||"")+" "+this.loadingCls}}return g},expand:function(b,a,d,c){return b.expand(a,d,c)},collapse:function(b,a,d,c){return b.collapse(a,d,c)},toggle:function(c,b,g,d){var e=this,a=!!this.animate;if(!a||!this.isExpandingOrCollapsing){if(!c.isLeaf()){this.isExpandingOrCollapsing=a}if(c.isExpanded()){e.collapse(c,b,g,d)}else{e.expand(c,b,g,d)}}},onItemDblClick:function(a,e,c){var d=this,b=d.editingPlugin;d.callParent(arguments);if(d.toggleOnDblClick&&a.isExpandable()&&!(b&&b.clicksToEdit===2)){d.toggle(a)}},onBeforeItemMouseDown:function(a,c,b,d){if(d.getTarget(this.expanderSelector,c)){return false}return this.callParent(arguments)},onItemClick:function(a,c,b,d){if(d.getTarget(this.expanderSelector,c)&&a.isExpandable()){this.toggle(a,d.ctrlKey);return false}return this.callParent(arguments)},onExpanderMouseOver:function(b,a){b.getTarget(this.cellSelector,10,true).addCls(this.expanderIconOverCls)},onExpanderMouseOut:function(b,a){b.getTarget(this.cellSelector,10,true).removeCls(this.expanderIconOverCls)},getTreeStore:function(){return this.panel.store},ensureSingleExpand:function(b){var a=b.parentNode;if(a){a.eachChild(function(c){if(c!==b&&c.isExpanded()){c.collapse()}})}},shouldUpdateCell:function(d,c){if(c){var b=0,a=c.length;for(;b<a;++b){if(Ext.Array.contains(this.uiFields,c[b])){return true}}}return this.callParent(arguments)},onStoreWrite:function(b,a){var c=this.panel.store;c.fireEvent("write",c,a)},onStoreDataChanged:function(b,a){var c=this.panel.store;c.fireEvent("datachanged",c)}});Ext.define("Ext.tree.Panel",{extend:"Ext.panel.Table",alias:"widget.treepanel",alternateClassName:["Ext.tree.TreePanel","Ext.TreePanel"],requires:["Ext.tree.View","Ext.selection.TreeModel","Ext.tree.Column","Ext.data.TreeStore"],viewType:"treeview",selType:"treemodel",treeCls:Ext.baseCSSPrefix+"tree-panel",deferRowRender:false,rowLines:false,lines:true,useArrows:false,singleExpand:false,ddConfig:{enableDrag:true,enableDrop:true},rootVisible:true,displayField:"text",root:null,normalCfgCopy:["displayField","root","singleExpand","useArrows","lines","rootVisible","scroll"],lockedCfgCopy:["displayField","root","singleExpand","useArrows","lines","rootVisible"],isTree:true,constructor:function(a){a=a||{};if(a.animate===undefined){a.animate=Ext.isDefined(this.animate)?this.animate:Ext.enableFx}this.enableAnimations=a.animate;delete a.animate;this.callParent([a])},initComponent:function(){var c=this,b=[c.treeCls],a;if(c.useArrows){b.push(Ext.baseCSSPrefix+"tree-arrows");c.lines=false}if(c.lines){b.push(Ext.baseCSSPrefix+"tree-lines")}else{if(!c.useArrows){b.push(Ext.baseCSSPrefix+"tree-no-lines")}}if(Ext.isString(c.store)){c.store=Ext.StoreMgr.lookup(c.store)}else{if(!c.store||Ext.isObject(c.store)&&!c.store.isStore){c.store=new Ext.data.TreeStore(Ext.apply({},c.store||{},{root:c.root,fields:c.fields,model:c.model,folderSort:c.folderSort}))}else{if(c.root){c.store=Ext.data.StoreManager.lookup(c.store);c.store.setRootNode(c.root);if(c.folderSort!==undefined){c.store.folderSort=c.folderSort;c.store.sort()}}}}c.viewConfig=Ext.apply({},c.viewConfig);c.viewConfig=Ext.applyIf(c.viewConfig,{rootVisible:c.rootVisible,animate:c.enableAnimations,singleExpand:c.singleExpand,node:c.store.getRootNode(),hideHeaders:c.hideHeaders});c.mon(c.store,{scope:c,rootchange:c.onRootChange,clear:c.onClear});c.relayEvents(c.store,["beforeload","load"]);c.mon(c.store,{append:c.createRelayer("itemappend"),remove:c.createRelayer("itemremove"),move:c.createRelayer("itemmove",[0,4]),insert:c.createRelayer("iteminsert"),beforeappend:c.createRelayer("beforeitemappend"),beforeremove:c.createRelayer("beforeitemremove"),beforemove:c.createRelayer("beforeitemmove"),beforeinsert:c.createRelayer("beforeiteminsert"),expand:c.createRelayer("itemexpand",[0,1]),collapse:c.createRelayer("itemcollapse",[0,1]),beforeexpand:c.createRelayer("beforeitemexpand",[0,1]),beforecollapse:c.createRelayer("beforeitemcollapse",[0,1])});if(!c.columns){if(c.initialConfig.hideHeaders===undefined){c.hideHeaders=true}c.addCls(Ext.baseCSSPrefix+"autowidth-table");c.columns=[{xtype:"treecolumn",text:"Name",width:Ext.isIE6?null:10000,dataIndex:c.displayField}]}if(c.cls){b.push(c.cls)}c.cls=b.join(" ");c.callParent();a=c.getView();c.relayEvents(a,["checkchange","afteritemexpand","afteritemcollapse"]);if(!a.rootVisible&&!c.getRootNode()){c.setRootNode({expanded:true})}},onClear:function(){this.view.onClear()},setRootNode:function(){return this.store.setRootNode.apply(this.store,arguments)},getRootNode:function(){return this.store.getRootNode()},onRootChange:function(a){this.view.setRootNode(a)},getChecked:function(){return this.getView().getChecked()},isItemChecked:function(a){return a.get("checked")},expandNode:function(b,a,d,c){return this.getView().expand(b,a,d,c||this)},collapseNode:function(b,a,d,c){return this.getView().collapse(b,a,d,c||this)},expandAll:function(g,d){var e=this,b=e.getRootNode(),c=e.enableAnimations,a=e.getView();if(b){if(!c){a.beginBulkUpdate()}b.expand(true,g,d||e);if(!c){a.endBulkUpdate()}}},collapseAll:function(g,d){var e=this,b=e.getRootNode(),c=e.enableAnimations,a=e.getView();if(b){if(!c){a.beginBulkUpdate()}d=d||e;if(a.rootVisible){b.collapse(true,g,d)}else{b.collapseChildren(true,g,d)}if(!c){a.endBulkUpdate()}}},expandPath:function(l,g,a,h,k){var d=this,c=d.getRootNode(),b=1,e=d.getView(),j,i;g=g||d.getRootNode().idProperty;a=a||"/";if(Ext.isEmpty(l)){Ext.callback(h,k||d,[false,null]);return}j=l.split(a);if(c.get(g)!=j[1]){Ext.callback(h,k||d,[false,c]);return}i=function(){if(++b===j.length){Ext.callback(h,k||d,[true,c]);return}var m=c.findChild(g,j[b]);if(!m){Ext.callback(h,k||d,[false,c]);return}c=m;c.expand(false,i)};c.expand(false,i)},selectPath:function(j,d,a,g,i){var b=this,c,h,e;d=d||b.getRootNode().idProperty;a=a||"/";h=j.split(a);e=h.pop();if(h.length>1){b.expandPath(h.join(a),d,a,function(m,l){var k=l;if(m&&l){l=l.findChild(d,e);if(l){b.getSelectionModel().select(l);Ext.callback(g,i||b,[true,l]);return}}Ext.callback(g,i||b,[false,k])},b)}else{c=b.getRootNode();if(c.getId()===e){b.getSelectionModel().select(c);Ext.callback(g,i||b,[true,c])}else{Ext.callback(g,i||b,[false,null])}}}});Ext.define("Ext.view.DragZone",{extend:"Ext.dd.DragZone",containerScroll:false,constructor:function(b){var e=this,a,d,c;Ext.apply(e,b);if(!e.ddGroup){e.ddGroup="view-dd-zone-"+e.view.id}a=e.view;d=a.ownerCt;if(d){c=d.getTargetEl().dom}else{c=a.el.dom.parentNode}e.callParent([c]);e.ddel=Ext.get(document.createElement("div"));e.ddel.addCls(Ext.baseCSSPrefix+"grid-dd-wrap")},init:function(c,a,b){this.initTarget(c,a,b);this.view.mon(this.view,{itemmousedown:this.onItemMouseDown,scope:this})},onValidDrop:function(b,a,c){this.callParent();b.el.focus()},onItemMouseDown:function(b,a,d,c,g){if(!this.isPreventDrag(g,a,d,c)){this.view.focus();this.handleMouseDown(g);if(b.getSelectionModel().selectionMode=="MULTI"&&!g.ctrlKey&&b.getSelectionModel().isSelected(a)){return false}}},isPreventDrag:function(a){return false},getDragData:function(c){var a=this.view,b=c.getTarget(a.getItemSelector());if(b){return{copy:a.copy||(a.allowCopy&&c.ctrlKey),event:new Ext.EventObjectImpl(c),view:a,ddel:this.ddel,item:b,records:a.getSelectionModel().getSelection(),fromPosition:Ext.fly(b).getXY()}}},onInitDrag:function(b,j){var g=this,h=g.dragData,d=h.view,a=d.getSelectionModel(),c=d.getRecord(h.item),i=h.event;if(!a.isSelected(c)){a.select(c,true)}h.records=a.getSelection();g.ddel.update(g.getDragText());g.proxy.update(g.ddel.dom);g.onStartDrag(b,j);return true},getDragText:function(){var a=this.dragData.records.length;return Ext.String.format(this.dragText,a,a==1?"":"s")},getRepairXY:function(b,a){return a?a.fromPosition:false}});Ext.define("Ext.tree.ViewDragZone",{extend:"Ext.view.DragZone",isPreventDrag:function(b,a){return(a.get("allowDrag")===false)||!!b.getTarget(this.view.expanderSelector)},afterRepair:function(){var h=this,a=h.view,i=a.selectedItemCls,b=h.dragData.records,g,e=b.length,c=Ext.fly,d;if(Ext.enableFx&&h.repairHighlight){for(g=0;g<e;g++){d=a.getNode(b[g]);c(d.firstChild).highlight(h.repairHighlightColor,{listeners:{beforeanimate:function(){if(a.isSelected(d)){c(d).removeCls(i)}},afteranimate:function(){if(a.isSelected(d)){c(d).addCls(i)}}}})}}h.dragging=false}});Ext.define("Ext.tree.ViewDropZone",{extend:"Ext.view.DropZone",allowParentInserts:false,allowContainerDrops:false,appendOnly:false,expandDelay:500,indicatorCls:Ext.baseCSSPrefix+"tree-ddindicator",expandNode:function(b){var a=this.view;if(!b.isLeaf()&&!b.isExpanded()){a.expand(b);this.expandProcId=false}},queueExpand:function(a){this.expandProcId=Ext.Function.defer(this.expandNode,this.expandDelay,this,[a])},cancelExpand:function(){if(this.expandProcId){clearTimeout(this.expandProcId);this.expandProcId=false}},getPosition:function(g,b){var j=this.view,c=j.getRecord(b),h=g.getPageY(),k=c.isLeaf(),a=false,i=Ext.fly(b).getRegion(),d;if(c.isRoot()){return"append"}if(this.appendOnly){return k?false:"append"}if(!this.allowParentInsert){a=c.hasChildNodes()&&c.isExpanded()}d=(i.bottom-i.top)/(k?2:3);if(h>=i.top&&h<(i.top+d)){return"before"}else{if(!a&&(k||(h>=(i.bottom-d)&&h<=i.bottom))){return"after"}else{return"append"}}},isValidDropPoint:function(b,j,n,k,g){if(!b||!g.item){return false}var o=this.view,l=o.getRecord(b),d=g.records,a=d.length,m=d.length,c,h;if(!(l&&j&&a)){return false}for(c=0;c<m;c++){h=d[c];if(h.isNode&&h.contains(l)){return false}}if(j==="append"&&l.get("allowDrop")===false){return false}else{if(j!="append"&&l.parentNode.get("allowDrop")===false){return false}}if(Ext.Array.contains(d,l)){return false}return true},onNodeOver:function(a,i,g,c){var d=this.getPosition(g,a),b=this.dropNotAllowed,j=this.view,h=j.getRecord(a),k=this.getIndicator(),m=0,l=0;this.cancelExpand();if(d=="append"&&!this.expandProcId&&!Ext.Array.contains(c.records,h)&&!h.isLeaf()&&!h.isExpanded()){this.queueExpand(h)}if(this.isValidDropPoint(a,d,i,g,c)){this.valid=true;this.currentPosition=d;this.overRecord=h;k.setWidth(Ext.fly(a).getWidth());l=Ext.fly(a).getY()-Ext.fly(j.el).getY()-1;if(d=="before"){b=h.isFirst()?Ext.baseCSSPrefix+"tree-drop-ok-above":Ext.baseCSSPrefix+"tree-drop-ok-between";k.showAt(0,l);i.proxy.show()}else{if(d=="after"){b=h.isLast()?Ext.baseCSSPrefix+"tree-drop-ok-below":Ext.baseCSSPrefix+"tree-drop-ok-between";l+=Ext.fly(a).getHeight();k.showAt(0,l);i.proxy.show()}else{b=Ext.baseCSSPrefix+"tree-drop-ok-append";k.hide()}}}else{this.valid=false}this.currentCls=b;return b},onContainerOver:function(a,c,b){return c.getTarget("."+this.indicatorCls)?this.currentCls:this.dropNotAllowed},notifyOut:function(){this.callParent(arguments);this.cancelExpand()},handleNodeDrop:function(d,l,e){var n=this,o=n.view,g=l.parentNode,p=o.getStore(),r=[],a,c,k,b,j,m,q,h;if(d.copy){a=d.records;d.records=[];for(c=0,k=a.length;c<k;c++){d.records.push(Ext.apply({},a[c].data))}}n.cancelExpand();if(e=="before"){b=g.insertBefore;j=[null,l];l=g}else{if(e=="after"){if(l.nextSibling){b=g.insertBefore;j=[null,l.nextSibling]}else{b=g.appendChild;j=[null]}l=g}else{if(!l.isExpanded()){m=true}b=l.appendChild;j=[null]}}q=function(){var u,t,s,i,v;for(c=0,k=d.records.length;c<k;c++){j[0]=d.records[c];u=b.apply(l,j);if(Ext.enableFx&&n.dropHighlight){r.push(o.getNode(u))}}if(Ext.enableFx&&n.dropHighlight){s=r.length;i=n.dropHighlightColor;for(t=0;t<s;t++){v=r[t];if(v){Ext.fly(v.firstChild?v.firstChild:v).highlight(i)}}}};if(m){l.expand(false,q)}else{q()}}});Ext.define("Ext.tree.plugin.TreeViewDragDrop",{extend:"Ext.AbstractPlugin",alias:"plugin.treeviewdragdrop",uses:["Ext.tree.ViewDragZone","Ext.tree.ViewDropZone"],dragText:"{0} selected node{1}",allowParentInserts:false,allowContainerDrops:false,appendOnly:false,ddGroup:"TreeDD",expandDelay:1000,enableDrop:true,enableDrag:true,nodeHighlightColor:"c3daf9",nodeHighlightOnDrop:Ext.enableFx,nodeHighlightOnRepair:Ext.enableFx,init:function(a){a.on("render",this.onViewRender,this,{single:true})},destroy:function(){Ext.destroy(this.dragZone,this.dropZone)},onViewRender:function(a){var b=this;if(b.enableDrag){b.dragZone=new Ext.tree.ViewDragZone({view:a,ddGroup:b.dragGroup||b.ddGroup,dragText:b.dragText,repairHighlightColor:b.nodeHighlightColor,repairHighlight:b.nodeHighlightOnRepair})}if(b.enableDrop){b.dropZone=new Ext.tree.ViewDropZone({view:a,ddGroup:b.dropGroup||b.ddGroup,allowContainerDrops:b.allowContainerDrops,appendOnly:b.appendOnly,allowParentInserts:b.allowParentInserts,expandDelay:b.expandDelay,dropHighlightColor:b.nodeHighlightColor,dropHighlight:b.nodeHighlightOnDrop})}}});Ext.define("Ext.util.CSS",(function(){var d=null,c=document,b=/(-[a-z])/gi,a=function(e,g){return g.charAt(1).toUpperCase()};return{singleton:true,constructor:function(){this.rules={};this.initialized=false},createStyleSheet:function(i,l){var h,g=c.getElementsByTagName("head")[0],k=c.createElement("style");k.setAttribute("type","text/css");if(l){k.setAttribute("id",l)}if(Ext.isIE){g.appendChild(k);h=k.styleSheet;h.cssText=i}else{try{k.appendChild(c.createTextNode(i))}catch(j){k.cssText=i}g.appendChild(k);h=k.styleSheet?k.styleSheet:(k.sheet||c.styleSheets[c.styleSheets.length-1])}this.cacheStyleSheet(h);return h},removeStyleSheet:function(g){var e=document.getElementById(g);if(e){e.parentNode.removeChild(e)}},swapStyleSheet:function(i,e){var h=document,g;this.removeStyleSheet(i);g=h.createElement("link");g.setAttribute("rel","stylesheet");g.setAttribute("type","text/css");g.setAttribute("id",i);g.setAttribute("href",e);h.getElementsByTagName("head")[0].appendChild(g)},refreshCache:function(){return this.getRules(true)},cacheStyleSheet:function(l){if(!d){d={}}try{var o=l.cssRules||l.rules,m,k=o.length-1,g,h;for(;k>=0;--k){m=o[k].selectorText;if(m){m=m.split(",");h=m.length;for(g=0;g<h;g++){d[Ext.String.trim(m[g]).toLowerCase()]=o[k]}}}}catch(n){}},getRules:function(h){if(d===null||h){d={};var k=c.styleSheets,j=0,g=k.length;for(;j<g;j++){try{if(!k[j].disabled){this.cacheStyleSheet(k[j])}}catch(l){}}}return d},getRule:function(e,h){var g=this.getRules(h),j;if(!Ext.isArray(e)){return g[e.toLowerCase()]}for(j=0;j<e.length;j++){if(g[e[j]]){return g[e[j].toLowerCase()]}}return null},updateRule:function(e,j,h){var k,g;if(!Ext.isArray(e)){k=this.getRule(e);if(k){k.style[j.replace(b,a)]=h;return true}}else{for(g=0;g<e.length;g++){if(this.updateRule(e[g],j,h)){return true}}}return false}}}()));Ext.define("Ext.util.Cookies",{singleton:true,set:function(c,e){var a=arguments,i=arguments.length,b=(i>2)?a[2]:null,h=(i>3)?a[3]:"/",d=(i>4)?a[4]:null,g=(i>5)?a[5]:false;document.cookie=c+"="+escape(e)+((b===null)?"":("; expires="+b.toGMTString()))+((h===null)?"":("; path="+h))+((d===null)?"":("; domain="+d))+((g===true)?"; secure":"")},get:function(d){var b=d+"=",g=b.length,a=document.cookie.length,e=0,c=0;while(e<a){c=e+g;if(document.cookie.substring(e,c)==b){return this.getCookieVal(c)}e=document.cookie.indexOf(" ",e)+1;if(e===0){break}}return null},clear:function(a,b){if(this.get(a)){b=b||"/";document.cookie=a+"=; expires=Thu, 01-Jan-70 00:00:01 GMT; path="+b}},getCookieVal:function(b){var a=document.cookie.indexOf(";",b);if(a==-1){a=document.cookie.length}return unescape(document.cookie.substring(b,a))}});Ext.define("Ext.util.Grouper",{extend:"Ext.util.Sorter",isGrouper:true,getGroupString:function(a){return a.get(this.property)}});Ext.define("Ext.util.History",{singleton:true,alternateClassName:"Ext.History",mixins:{observable:"Ext.util.Observable"},useTopWindow:true,fieldId:Ext.baseCSSPrefix+"history-field",iframeId:Ext.baseCSSPrefix+"history-frame",constructor:function(){var a=this;a.oldIEMode=Ext.isIE6||Ext.isIE7||!Ext.isStrict&&Ext.isIE8;a.iframe=null;a.hiddenField=null;a.ready=false;a.currentToken=null;a.mixins.observable.constructor.call(a)},getHash:function(){var a=window.location.href,b=a.indexOf("#");return b>=0?a.substr(b+1):null},setHash:function(d){var a=this,c=a.useTopWindow?window.top:window;try{c.location.hash=d}catch(b){}},doSave:function(){this.hiddenField.value=this.currentToken},handleStateChange:function(a){this.currentToken=a;this.fireEvent("change",a)},updateIFrame:function(b){var a='<html><body><div id="state">'+Ext.util.Format.htmlEncode(b)+"</div></body></html>",d;try{d=this.iframe.contentWindow.document;d.open();d.write(a);d.close();return true}catch(c){return false}},checkIFrame:function(){var d=this,b=d.iframe.contentWindow,e,c,a,g;if(!b||!b.document){Ext.Function.defer(this.checkIFrame,10,this);return}e=b.document;c=e.getElementById("state");a=c?c.innerText:null;g=d.getHash();Ext.TaskManager.start({run:function(){var k=b.document,j=k.getElementById("state"),h=j?j.innerText:null,i=d.getHash();if(h!==a){a=h;d.handleStateChange(h);d.setHash(h);g=h;d.doSave()}else{if(i!==g){g=i;d.updateIFrame(i)}}},interval:50,scope:d});d.ready=true;d.fireEvent("ready",d)},startUp:function(){var a=this,b;a.currentToken=a.hiddenField.value||this.getHash();if(a.oldIEMode){a.checkIFrame()}else{b=a.getHash();Ext.TaskManager.start({run:function(){var c=a.getHash();if(c!==b){b=c;a.handleStateChange(b);a.doSave()}},interval:50,scope:a});a.ready=true;a.fireEvent("ready",a)}},init:function(d,b){var c=this,a=Ext.DomHelper;if(c.ready){Ext.callback(d,b,[c]);return}if(!Ext.isReady){Ext.onReady(function(){c.init(d,b)});return}c.hiddenField=Ext.getDom(c.fieldId);if(!c.hiddenField){c.hiddenField=Ext.getBody().createChild({id:Ext.id(),tag:"form",cls:Ext.baseCSSPrefix+"hide-display",children:[{tag:"input",type:"hidden",id:c.fieldId}]},false,true).firstChild}if(c.oldIEMode){c.iframe=Ext.getDom(c.iframeId);if(!c.iframe){c.iframe=a.append(c.hiddenField.parentNode,{tag:"iframe",id:c.iframeId,src:Ext.SSL_SECURE_URL})}}c.addEvents("ready","change");if(d){c.on("ready",d,b,{single:true})}c.startUp()},add:function(a,c){var b=this;if(c!==false){if(b.getToken()===a){return true}}if(b.oldIEMode){return b.updateIFrame(a)}else{b.setHash(a);return true}},back:function(){window.history.go(-1)},forward:function(){window.history.go(1)},getToken:function(){return this.ready?this.currentToken:this.getHash()}});Ext.define("Ext.util.Point",{extend:"Ext.util.Region",statics:{fromEvent:function(a){a=(a.changedTouches&&a.changedTouches.length>0)?a.changedTouches[0]:a;return new this(a.pageX,a.pageY)}},constructor:function(a,b){this.callParent([b,a,b,a])},toString:function(){return"Point["+this.x+","+this.y+"]"},equals:function(a){return(this.x==a.x&&this.y==a.y)},isWithin:function(b,a){if(!Ext.isObject(a)){a={x:a,y:a}}return(this.x<=b.x+a.x&&this.x>=b.x-a.x&&this.y<=b.y+a.y&&this.y>=b.y-a.y)},roundedEquals:function(a){return(Math.round(this.x)==Math.round(a.x)&&Math.round(this.y)==Math.round(a.y))}},function(){this.prototype.translate=Ext.util.Region.prototype.translateBy});Ext.define("Ext.view.TableChunker",{singleton:true,requires:["Ext.XTemplate"],metaTableTpl:["{%if (this.openTableWrap)out.push(this.openTableWrap())%}",'<table class="'+Ext.baseCSSPrefix+"grid-table "+Ext.baseCSSPrefix+'grid-table-resizer" border="0" cellspacing="0" cellpadding="0" {[this.embedFullWidth(values)]}>',"<tbody>",'<tr class="'+Ext.baseCSSPrefix+'grid-header-row">','<tpl for="columns">','<th class="'+Ext.baseCSSPrefix+'grid-col-resizer-{id}" style="width: {width}px; height: 0px;"></th>',"</tpl>","</tr>","{[this.openRows()]}","{row}",'<tpl for="features">',"{[this.embedFeature(values, parent, xindex, xcount)]}","</tpl>","{[this.closeRows()]}","</tbody>","</table>","{%if (this.closeTableWrap)out.push(this.closeTableWrap())%}"],constructor:function(){Ext.XTemplate.prototype.recurse=function(b,a){return this.apply(a?b[a]:b)}},embedFeature:function(b,d,a,e){var c="";if(!b.disabled){c=b.getFeatureTpl(b,d,a,e)}return c},embedFullWidth:function(b){var a='style="width:{fullWidth}px;';if(!b.rowCount){a+="height:1px;"}return a+'"'},openRows:function(){return'<tpl for="rows">'},closeRows:function(){return"</tpl>"},metaRowTpl:['<tr class="'+Ext.baseCSSPrefix+'grid-row {[this.embedRowCls()]}" {[this.embedRowAttr()]}>','<tpl for="columns">','<td class="{cls} '+Ext.baseCSSPrefix+"grid-cell "+Ext.baseCSSPrefix+'grid-cell-{columnId} {{id}-modified} {{id}-tdCls} {[this.firstOrLastCls(xindex, xcount)]}" {{id}-tdAttr}>','<div {unselectableAttr} class="'+Ext.baseCSSPrefix+'grid-cell-inner {unselectableCls}" style="text-align: {align}; {{id}-style};">{{id}}</div>',"</td>","</tpl>","</tr>"],firstOrLastCls:function(a,b){if(a===1){return Ext.view.Table.prototype.firstCls}else{if(a===b){return Ext.view.Table.prototype.lastCls}}},embedRowCls:function(){return"{rowCls}"},embedRowAttr:function(){return"{rowAttr}"},openTableWrap:undefined,closeTableWrap:undefined,getTableTpl:function(k,b){var j,h={openRows:this.openRows,closeRows:this.closeRows,embedFeature:this.embedFeature,embedFullWidth:this.embedFullWidth,openTableWrap:this.openTableWrap,closeTableWrap:this.closeTableWrap},g={},c=k.features||[],m=c.length,e=0,l={embedRowCls:this.embedRowCls,embedRowAttr:this.embedRowAttr,firstOrLastCls:this.firstOrLastCls,unselectableAttr:k.enableTextSelection?"":'unselectable="on"',unselectableCls:k.enableTextSelection?"":Ext.baseCSSPrefix+"unselectable"},d=Array.prototype.slice.call(this.metaRowTpl,0),a;for(;e<m;e++){if(!c[e].disabled){c[e].mutateMetaRowTpl(d);Ext.apply(l,c[e].getMetaRowTplFragments());Ext.apply(g,c[e].getFragmentTpl());Ext.apply(h,c[e].getTableFragments())}}d=new Ext.XTemplate(d.join(""),l);k.row=d.applyTemplate(k);a=new Ext.XTemplate(this.metaTableTpl.join(""),h);j=a.applyTemplate(k);if(!b){j=new Ext.XTemplate(j,g)}return j}});Ext._endTime=new Date().getTime();if(Ext._beforereadyhandler){Ext._beforereadyhandler()};
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/ext.js
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/ext.js	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/ext.js	(revision 18277)
@@ -0,0 +1,38 @@
+/*
+Ext JS 4.1 - JavaScript Library
+Copyright (c) 2006-2012, Sencha Inc.
+All rights reserved.
+licensing@sencha.com
+
+http://www.sencha.com/license
+
+Open Source License
+------------------------------------------------------------------------------------------
+This version of Ext JS is licensed under the terms of the Open Source GPL 3.0 license. 
+
+http://www.gnu.org/licenses/gpl.html
+
+There are several FLOSS exceptions available for use with this release for
+open source applications that are distributed under a license other than GPL.
+
+* Open Source License Exception for Applications
+
+  http://www.sencha.com/products/floss-exception.php
+
+* Open Source License Exception for Development
+
+  http://www.sencha.com/products/ux-exception.php
+
+
+Alternate Licensing
+------------------------------------------------------------------------------------------
+Commercial and OEM Licenses are available for an alternate download of Ext JS.
+This is the appropriate option if you are creating proprietary applications and you are 
+not prepared to distribute and share the source code of your application under the 
+GPL v3 license. Please visit http://www.sencha.com/license for more details.
+
+--
+
+This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT OF THIRD-PARTY INTELLECTUAL PROPERTY RIGHTS.  See the GNU General Public License for more details.
+*/
+var Ext=Ext||{};Ext._startTime=new Date().getTime();(function(){var h=this,a=Object.prototype,j=a.toString,b=true,g={toString:1},e=function(){},d=function(){var i=d.caller.caller;return i.$owner.prototype[i.$name].apply(this,arguments)},c;Ext.global=h;for(c in g){b=null}if(b){b=["hasOwnProperty","valueOf","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","constructor"]}Ext.enumerables=b;Ext.apply=function(o,n,q){if(q){Ext.apply(o,q)}if(o&&n&&typeof n==="object"){var p,m,l;for(p in n){o[p]=n[p]}if(b){for(m=b.length;m--;){l=b[m];if(n.hasOwnProperty(l)){o[l]=n[l]}}}}return o};Ext.buildSettings=Ext.apply({baseCSSPrefix:"x-",scopeResetCSS:false},Ext.buildSettings||{});Ext.apply(Ext,{name:Ext.sandboxName||"Ext",emptyFn:e,emptyString:new String(),baseCSSPrefix:Ext.buildSettings.baseCSSPrefix,applyIf:function(k,i){var l;if(k){for(l in i){if(k[l]===undefined){k[l]=i[l]}}}return k},iterate:function(i,l,k){if(Ext.isEmpty(i)){return}if(k===undefined){k=i}if(Ext.isIterable(i)){Ext.Array.each.call(Ext.Array,i,l,k)}else{Ext.Object.each.call(Ext.Object,i,l,k)}}});Ext.apply(Ext,{extend:(function(){var i=a.constructor,k=function(n){for(var l in n){if(!n.hasOwnProperty(l)){continue}this[l]=n[l]}};return function(l,q,o){if(Ext.isObject(q)){o=q;q=l;l=o.constructor!==i?o.constructor:function(){q.apply(this,arguments)}}var n=function(){},m,p=q.prototype;n.prototype=p;m=l.prototype=new n();m.constructor=l;l.superclass=p;if(p.constructor===i){p.constructor=q}l.override=function(r){Ext.override(l,r)};m.override=k;m.proto=m;l.override(o);l.extend=function(r){return Ext.extend(l,r)};return l}}()),override:function(m,n){if(m.$isClass){m.override(n)}else{if(typeof m=="function"){Ext.apply(m.prototype,n)}else{var i=m.self,k,l;if(i&&i.$isClass){for(k in n){if(n.hasOwnProperty(k)){l=n[k];if(typeof l=="function"){l.$name=k;l.$owner=i;l.$previous=m.hasOwnProperty(k)?m[k]:d}m[k]=l}}}else{Ext.apply(m,n)}}}return m}});Ext.apply(Ext,{valueFrom:function(l,i,k){return Ext.isEmpty(l,k)?i:l},typeOf:function(k){var i,l;if(k===null){return"null"}i=typeof k;if(i==="undefined"||i==="string"||i==="number"||i==="boolean"){return i}l=j.call(k);switch(l){case"[object Array]":return"array";case"[object Date]":return"date";case"[object Boolean]":return"boolean";case"[object Number]":return"number";case"[object RegExp]":return"regexp"}if(i==="function"){return"function"}if(i==="object"){if(k.nodeType!==undefined){if(k.nodeType===3){return(/\S/).test(k.nodeValue)?"textnode":"whitespace"}else{return"element"}}return"object"}},isEmpty:function(i,k){return(i===null)||(i===undefined)||(!k?i==="":false)||(Ext.isArray(i)&&i.length===0)},isArray:("isArray" in Array)?Array.isArray:function(i){return j.call(i)==="[object Array]"},isDate:function(i){return j.call(i)==="[object Date]"},isObject:(j.call(null)==="[object Object]")?function(i){return i!==null&&i!==undefined&&j.call(i)==="[object Object]"&&i.ownerDocument===undefined}:function(i){return j.call(i)==="[object Object]"},isSimpleObject:function(i){return i instanceof Object&&i.constructor===Object},isPrimitive:function(k){var i=typeof k;return i==="string"||i==="number"||i==="boolean"},isFunction:(typeof document!=="undefined"&&typeof document.getElementsByTagName("body")==="function")?function(i){return j.call(i)==="[object Function]"}:function(i){return typeof i==="function"},isNumber:function(i){return typeof i==="number"&&isFinite(i)},isNumeric:function(i){return !isNaN(parseFloat(i))&&isFinite(i)},isString:function(i){return typeof i==="string"},isBoolean:function(i){return typeof i==="boolean"},isElement:function(i){return i?i.nodeType===1:false},isTextNode:function(i){return i?i.nodeName==="#text":false},isDefined:function(i){return typeof i!=="undefined"},isIterable:function(k){var i=typeof k,l=false;if(k&&i!="string"){if(i=="function"){if(Ext.isSafari){l=k instanceof NodeList||k instanceof HTMLCollection}}else{l=true}}return l?k.length!==undefined:false}});Ext.apply(Ext,{clone:function(q){var p,o,m,l,r,n;if(q===null||q===undefined){return q}if(q.nodeType&&q.cloneNode){return q.cloneNode(true)}p=j.call(q);if(p==="[object Date]"){return new Date(q.getTime())}if(p==="[object Array]"){o=q.length;r=[];while(o--){r[o]=Ext.clone(q[o])}}else{if(p==="[object Object]"&&q.constructor===Object){r={};for(n in q){r[n]=Ext.clone(q[n])}if(b){for(m=b.length;m--;){l=b[m];r[l]=q[l]}}}}return r||q},getUniqueGlobalNamespace:function(){var l=this.uniqueGlobalNamespace,k;if(l===undefined){k=0;do{l="ExtBox"+(++k)}while(Ext.global[l]!==undefined);Ext.global[l]=Ext;this.uniqueGlobalNamespace=l}return l},functionFactoryCache:{},cacheableFunctionFactory:function(){var o=this,l=Array.prototype.slice.call(arguments),k=o.functionFactoryCache,i,m,n;if(Ext.isSandboxed){n=l.length;if(n>0){n--;l[n]="var Ext=window."+Ext.name+";"+l[n]}}i=l.join("");m=k[i];if(!m){m=Function.prototype.constructor.apply(Function.prototype,l);k[i]=m}return m},functionFactory:function(){var l=this,i=Array.prototype.slice.call(arguments),k;if(Ext.isSandboxed){k=i.length;if(k>0){k--;i[k]="var Ext=window."+Ext.name+";"+i[k]}}return Function.prototype.constructor.apply(Function.prototype,i)},Logger:{verbose:e,log:e,info:e,warn:e,error:function(i){throw new Error(i)},deprecate:e}});Ext.type=Ext.typeOf}());Ext.globalEval=Ext.global.execScript?function(a){execScript(a)}:function($$code){(function(){eval($$code)}())};(function(){var a="4.1.1.1",b;Ext.Version=b=Ext.extend(Object,{constructor:function(c){var e,d;if(c instanceof b){return c}this.version=this.shortVersion=String(c).toLowerCase().replace(/_/g,".").replace(/[\-+]/g,"");d=this.version.search(/([^\d\.])/);if(d!==-1){this.release=this.version.substr(d,c.length);this.shortVersion=this.version.substr(0,d)}this.shortVersion=this.shortVersion.replace(/[^\d]/g,"");e=this.version.split(".");this.major=parseInt(e.shift()||0,10);this.minor=parseInt(e.shift()||0,10);this.patch=parseInt(e.shift()||0,10);this.build=parseInt(e.shift()||0,10);return this},toString:function(){return this.version},valueOf:function(){return this.version},getMajor:function(){return this.major||0},getMinor:function(){return this.minor||0},getPatch:function(){return this.patch||0},getBuild:function(){return this.build||0},getRelease:function(){return this.release||""},isGreaterThan:function(c){return b.compare(this.version,c)===1},isGreaterThanOrEqual:function(c){return b.compare(this.version,c)>=0},isLessThan:function(c){return b.compare(this.version,c)===-1},isLessThanOrEqual:function(c){return b.compare(this.version,c)<=0},equals:function(c){return b.compare(this.version,c)===0},match:function(c){c=String(c);return this.version.substr(0,c.length)===c},toArray:function(){return[this.getMajor(),this.getMinor(),this.getPatch(),this.getBuild(),this.getRelease()]},getShortVersion:function(){return this.shortVersion},gt:function(){return this.isGreaterThan.apply(this,arguments)},lt:function(){return this.isLessThan.apply(this,arguments)},gtEq:function(){return this.isGreaterThanOrEqual.apply(this,arguments)},ltEq:function(){return this.isLessThanOrEqual.apply(this,arguments)}});Ext.apply(b,{releaseValueMap:{dev:-6,alpha:-5,a:-5,beta:-4,b:-4,rc:-3,"#":-2,p:-1,pl:-1},getComponentValue:function(c){return !c?0:(isNaN(c)?this.releaseValueMap[c]||c:parseInt(c,10))},compare:function(h,g){var d,e,c;h=new b(h).toArray();g=new b(g).toArray();for(c=0;c<Math.max(h.length,g.length);c++){d=this.getComponentValue(h[c]);e=this.getComponentValue(g[c]);if(d<e){return -1}else{if(d>e){return 1}}}return 0}});Ext.apply(Ext,{versions:{},lastRegisteredVersion:null,setVersion:function(d,c){Ext.versions[d]=new b(c);Ext.lastRegisteredVersion=Ext.versions[d];return this},getVersion:function(c){if(c===undefined){return Ext.lastRegisteredVersion}return Ext.versions[c]},deprecate:function(c,e,g,d){if(b.compare(Ext.getVersion(c),e)<1){g.call(d)}}});Ext.setVersion("core",a)}());Ext.String=(function(){var i=/^[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+|[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+$/g,m=/('|\\)/g,h=/\{(\d+)\}/g,b=/([-.*+?\^${}()|\[\]\/\\])/g,n=/^\s+|\s+$/g,j=/\s+/,l=/(^[^a-z]*|[^\w])/gi,d,a,g,c,e=function(p,o){return d[o]},k=function(p,o){return(o in a)?a[o]:String.fromCharCode(parseInt(o.substr(2),10))};return{createVarName:function(o){return o.replace(l,"")},htmlEncode:function(o){return(!o)?o:String(o).replace(g,e)},htmlDecode:function(o){return(!o)?o:String(o).replace(c,k)},addCharacterEntities:function(p){var o=[],s=[],q,r;for(q in p){r=p[q];a[q]=r;d[r]=q;o.push(r);s.push(q)}g=new RegExp("("+o.join("|")+")","g");c=new RegExp("("+s.join("|")+"|&#[0-9]{1,5};)","g")},resetCharacterEntities:function(){d={};a={};this.addCharacterEntities({"&amp;":"&","&gt;":">","&lt;":"<","&quot;":'"',"&#39;":"'"})},urlAppend:function(p,o){if(!Ext.isEmpty(o)){return p+(p.indexOf("?")===-1?"?":"&")+o}return p},trim:function(o){return o.replace(i,"")},capitalize:function(o){return o.charAt(0).toUpperCase()+o.substr(1)},uncapitalize:function(o){return o.charAt(0).toLowerCase()+o.substr(1)},ellipsis:function(q,o,r){if(q&&q.length>o){if(r){var s=q.substr(0,o-2),p=Math.max(s.lastIndexOf(" "),s.lastIndexOf("."),s.lastIndexOf("!"),s.lastIndexOf("?"));if(p!==-1&&p>=(o-15)){return s.substr(0,p)+"..."}}return q.substr(0,o-3)+"..."}return q},escapeRegex:function(o){return o.replace(b,"\\$1")},escape:function(o){return o.replace(m,"\\$1")},toggle:function(p,q,o){return p===q?o:q},leftPad:function(p,q,r){var o=String(p);r=r||" ";while(o.length<q){o=r+o}return o},format:function(p){var o=Ext.Array.toArray(arguments,1);return p.replace(h,function(q,r){return o[r]})},repeat:function(s,r,p){for(var o=[],q=r;q--;){o.push(s)}return o.join(p||"")},splitWords:function(o){if(o&&typeof o=="string"){return o.replace(n,"").split(j)}return o||[]}}}());Ext.String.resetCharacterEntities();Ext.htmlEncode=Ext.String.htmlEncode;Ext.htmlDecode=Ext.String.htmlDecode;Ext.urlAppend=Ext.String.urlAppend;Ext.Number=new function(){var b=this,c=(0.9).toFixed()!=="1",a=Math;Ext.apply(this,{constrain:function(h,g,e){var d=parseFloat(h);return(d<g)?g:((d>e)?e:d)},snap:function(h,e,g,i){var d;if(h===undefined||h<g){return g||0}if(e){d=h%e;if(d!==0){h-=d;if(d*2>=e){h+=e}else{if(d*2<-e){h-=e}}}}return b.constrain(h,g,i)},snapInRange:function(h,d,g,i){var e;g=(g||0);if(h===undefined||h<g){return g}if(d&&(e=((h-g)%d))){h-=e;e*=2;if(e>=d){h+=d}}if(i!==undefined){if(h>(i=b.snapInRange(i,d,g))){h=i}}return h},toFixed:c?function(g,d){d=d||0;var e=a.pow(10,d);return(a.round(g*e)/e).toFixed(d)}:function(e,d){return e.toFixed(d)},from:function(e,d){if(isFinite(e)){e=parseFloat(e)}return !isNaN(e)?e:d},randomInt:function(e,d){return a.floor(a.random()*(d-e+1)+e)}});Ext.num=function(){return b.from.apply(this,arguments)}};(function(){var g=Array.prototype,o=g.slice,q=(function(){var A=[],e,z=20;if(!A.splice){return false}while(z--){A.push("A")}A.splice(15,0,"F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F");e=A.length;A.splice(13,0,"XXX");if(e+1!=A.length){return false}return true}()),j="forEach" in g,u="map" in g,p="indexOf" in g,y="every" in g,c="some" in g,d="filter" in g,n=(function(){var e=[1,2,3,4,5].sort(function(){return 0});return e[0]===1&&e[1]===2&&e[2]===3&&e[3]===4&&e[4]===5}()),k=true,a,w,t,v;try{if(typeof document!=="undefined"){o.call(document.getElementsByTagName("body"))}}catch(s){k=false}function m(z,e){return(e<0)?Math.max(0,z.length+e):Math.min(z.length,e)}function x(G,F,z,J){var K=J?J.length:0,B=G.length,H=m(G,F),E,I,A,e,C,D;if(H===B){if(K){G.push.apply(G,J)}}else{E=Math.min(z,B-H);I=H+E;A=I+K-E;e=B-I;C=B-E;if(A<I){for(D=0;D<e;++D){G[A+D]=G[I+D]}}else{if(A>I){for(D=e;D--;){G[A+D]=G[I+D]}}}if(K&&H===C){G.length=C;G.push.apply(G,J)}else{G.length=C+K;for(D=0;D<K;++D){G[H+D]=J[D]}}}return G}function i(B,e,A,z){if(z&&z.length){if(e<B.length){B.splice.apply(B,[e,A].concat(z))}else{B.push.apply(B,z)}}else{B.splice(e,A)}return B}function b(A,e,z){return x(A,e,z)}function r(A,e,z){A.splice(e,z);return A}function l(C,e,A){var B=m(C,e),z=C.slice(e,m(C,B+A));if(arguments.length<4){x(C,B,A)}else{x(C,B,A,o.call(arguments,3))}return z}function h(e){return e.splice.apply(e,o.call(arguments,1))}w=q?r:b;t=q?i:x;v=q?h:l;a=Ext.Array={each:function(D,B,A,e){D=a.from(D);var z,C=D.length;if(e!==true){for(z=0;z<C;z++){if(B.call(A||D[z],D[z],z,D)===false){return z}}}else{for(z=C-1;z>-1;z--){if(B.call(A||D[z],D[z],z,D)===false){return z}}}return true},forEach:j?function(A,z,e){return A.forEach(z,e)}:function(C,A,z){var e=0,B=C.length;for(;e<B;e++){A.call(z,C[e],e,C)}},indexOf:p?function(A,e,z){return A.indexOf(e,z)}:function(C,A,B){var e,z=C.length;for(e=(B<0)?Math.max(0,z+B):B||0;e<z;e++){if(C[e]===A){return e}}return -1},contains:p?function(z,e){return z.indexOf(e)!==-1}:function(B,A){var e,z;for(e=0,z=B.length;e<z;e++){if(B[e]===A){return true}}return false},toArray:function(A,C,e){if(!A||!A.length){return[]}if(typeof A==="string"){A=A.split("")}if(k){return o.call(A,C||0,e||A.length)}var B=[],z;C=C||0;e=e?((e<0)?A.length+e:e):A.length;for(z=C;z<e;z++){B.push(A[z])}return B},pluck:function(D,e){var z=[],A,C,B;for(A=0,C=D.length;A<C;A++){B=D[A];z.push(B[e])}return z},map:u?function(A,z,e){return A.map(z,e)}:function(D,C,B){var A=[],z=0,e=D.length;for(;z<e;z++){A[z]=C.call(B,D[z],z,D)}return A},every:y?function(A,z,e){return A.every(z,e)}:function(C,A,z){var e=0,B=C.length;for(;e<B;++e){if(!A.call(z,C[e],e,C)){return false}}return true},some:c?function(A,z,e){return A.some(z,e)}:function(C,A,z){var e=0,B=C.length;for(;e<B;++e){if(A.call(z,C[e],e,C)){return true}}return false},clean:function(C){var z=[],e=0,B=C.length,A;for(;e<B;e++){A=C[e];if(!Ext.isEmpty(A)){z.push(A)}}return z},unique:function(C){var B=[],e=0,A=C.length,z;for(;e<A;e++){z=C[e];if(a.indexOf(B,z)===-1){B.push(z)}}return B},filter:d?function(A,z,e){return A.filter(z,e)}:function(D,B,A){var z=[],e=0,C=D.length;for(;e<C;e++){if(B.call(A,D[e],e,D)){z.push(D[e])}}return z},from:function(A,z){if(A===undefined||A===null){return[]}if(Ext.isArray(A)){return(z)?o.call(A):A}var e=typeof A;if(A&&A.length!==undefined&&e!=="string"&&(e!=="function"||!A.apply)){return a.toArray(A)}return[A]},remove:function(A,z){var e=a.indexOf(A,z);if(e!==-1){w(A,e,1)}return A},include:function(z,e){if(!a.contains(z,e)){z.push(e)}},clone:function(e){return o.call(e)},merge:function(){var e=o.call(arguments),B=[],z,A;for(z=0,A=e.length;z<A;z++){B=B.concat(e[z])}return a.unique(B)},intersect:function(){var e=[],A=o.call(arguments),L,J,F,I,M,B,z,H,K,C,G,E,D;if(!A.length){return e}L=A.length;for(G=M=0;G<L;G++){B=A[G];if(!I||B.length<I.length){I=B;M=G}}I=a.unique(I);w(A,M,1);z=I.length;L=A.length;for(G=0;G<z;G++){H=I[G];C=0;for(E=0;E<L;E++){J=A[E];F=J.length;for(D=0;D<F;D++){K=J[D];if(H===K){C++;break}}}if(C===L){e.push(H)}}return e},difference:function(z,e){var E=o.call(z),C=E.length,B,A,D;for(B=0,D=e.length;B<D;B++){for(A=0;A<C;A++){if(E[A]===e[B]){w(E,A,1);A--;C--}}}return E},slice:([1,2].slice(1,undefined).length?function(A,z,e){return o.call(A,z,e)}:function(A,z,e){if(typeof z==="undefined"){return o.call(A)}if(typeof e==="undefined"){return o.call(A,z)}return o.call(A,z,e)}),sort:n?function(z,e){if(e){return z.sort(e)}else{return z.sort()}}:function(F,E){var C=F.length,B=0,D,e,A,z;for(;B<C;B++){A=B;for(e=B+1;e<C;e++){if(E){D=E(F[e],F[A]);if(D<0){A=e}}else{if(F[e]<F[A]){A=e}}}if(A!==B){z=F[B];F[B]=F[A];F[A]=z}}return F},flatten:function(A){var z=[];function e(B){var D,E,C;for(D=0,E=B.length;D<E;D++){C=B[D];if(Ext.isArray(C)){e(C)}else{z.push(C)}}return z}return e(A)},min:function(D,C){var z=D[0],e,B,A;for(e=0,B=D.length;e<B;e++){A=D[e];if(C){if(C(z,A)===1){z=A}}else{if(A<z){z=A}}}return z},max:function(D,C){var e=D[0],z,B,A;for(z=0,B=D.length;z<B;z++){A=D[z];if(C){if(C(e,A)===-1){e=A}}else{if(A>e){e=A}}}return e},mean:function(e){return e.length>0?a.sum(e)/e.length:undefined},sum:function(C){var z=0,e,B,A;for(e=0,B=C.length;e<B;e++){A=C[e];z+=A}return z},toMap:function(C,e,A){var B={},z=C.length;if(!e){while(z--){B[C[z]]=z+1}}else{if(typeof e=="string"){while(z--){B[C[z][e]]=z+1}}else{while(z--){B[e.call(A,C[z])]=z+1}}}return B},erase:w,insert:function(A,z,e){return t(A,z,0,e)},replace:t,splice:v,push:function(B){var e=arguments.length,A=1,z;if(B===undefined){B=[]}else{if(!Ext.isArray(B)){B=[B]}}for(;A<e;A++){z=arguments[A];Array.prototype.push[Ext.isArray(z)?"apply":"call"](B,z)}return B}};Ext.each=a.each;a.union=a.merge;Ext.min=a.min;Ext.max=a.max;Ext.sum=a.sum;Ext.mean=a.mean;Ext.flatten=a.flatten;Ext.clean=a.clean;Ext.unique=a.unique;Ext.pluck=a.pluck;Ext.toArray=function(){return a.toArray.apply(a,arguments)}}());Ext.Function={flexSetter:function(a){return function(d,c){var e,g;if(d===null){return this}if(typeof d!=="string"){for(e in d){if(d.hasOwnProperty(e)){a.call(this,e,d[e])}}if(Ext.enumerables){for(g=Ext.enumerables.length;g--;){e=Ext.enumerables[g];if(d.hasOwnProperty(e)){a.call(this,e,d[e])}}}}else{a.call(this,d,c)}return this}},bind:function(d,c,b,a){if(arguments.length===2){return function(){return d.apply(c,arguments)}}var g=d,e=Array.prototype.slice;return function(){var h=b||arguments;if(a===true){h=e.call(arguments,0);h=h.concat(b)}else{if(typeof a=="number"){h=e.call(arguments,0);Ext.Array.insert(h,a,b)}}return g.apply(c||Ext.global,h)}},pass:function(c,a,b){if(!Ext.isArray(a)){if(Ext.isIterable(a)){a=Ext.Array.clone(a)}else{a=a!==undefined?[a]:[]}}return function(){var d=[].concat(a);d.push.apply(d,arguments);return c.apply(b||this,d)}},alias:function(b,a){return function(){return b[a].apply(b,arguments)}},clone:function(a){return function(){return a.apply(this,arguments)}},createInterceptor:function(d,c,b,a){var e=d;if(!Ext.isFunction(c)){return d}else{return function(){var h=this,g=arguments;c.target=h;c.method=d;return(c.apply(b||h||Ext.global,g)!==false)?d.apply(h||Ext.global,g):a||null}}},createDelayed:function(e,c,d,b,a){if(d||b){e=Ext.Function.bind(e,d,b,a)}return function(){var h=this,g=Array.prototype.slice.call(arguments);setTimeout(function(){e.apply(h,g)},c)}},defer:function(e,c,d,b,a){e=Ext.Function.bind(e,d,b,a);if(c>0){return setTimeout(Ext.supports.TimeoutActualLateness?function(){e()}:e,c)}e();return 0},createSequence:function(b,c,a){if(!c){return b}else{return function(){var d=b.apply(this,arguments);c.apply(a||this,arguments);return d}}},createBuffered:function(e,b,d,c){var a;return function(){var h=c||Array.prototype.slice.call(arguments,0),g=d||this;if(a){clearTimeout(a)}a=setTimeout(function(){e.apply(g,h)},b)}},createThrottled:function(e,b,d){var g,a,c,i,h=function(){e.apply(d||this,c);g=new Date().getTime()};return function(){a=new Date().getTime()-g;c=arguments;clearTimeout(i);if(!g||(a>=b)){h()}else{i=setTimeout(h,b-a)}}},interceptBefore:function(b,a,d,c){var e=b[a]||Ext.emptyFn;return(b[a]=function(){var g=d.apply(c||this,arguments);e.apply(this,arguments);return g})},interceptAfter:function(b,a,d,c){var e=b[a]||Ext.emptyFn;return(b[a]=function(){e.apply(this,arguments);return d.apply(c||this,arguments)})}};Ext.defer=Ext.Function.alias(Ext.Function,"defer");Ext.pass=Ext.Function.alias(Ext.Function,"pass");Ext.bind=Ext.Function.alias(Ext.Function,"bind");(function(){var a=function(){},b=Ext.Object={chain:function(d){a.prototype=d;var c=new a();a.prototype=null;return c},toQueryObjects:function(e,k,d){var c=b.toQueryObjects,j=[],g,h;if(Ext.isArray(k)){for(g=0,h=k.length;g<h;g++){if(d){j=j.concat(c(e+"["+g+"]",k[g],true))}else{j.push({name:e,value:k[g]})}}}else{if(Ext.isObject(k)){for(g in k){if(k.hasOwnProperty(g)){if(d){j=j.concat(c(e+"["+g+"]",k[g],true))}else{j.push({name:e,value:k[g]})}}}}else{j.push({name:e,value:k})}}return j},toQueryString:function(g,d){var h=[],e=[],l,k,m,c,n;for(l in g){if(g.hasOwnProperty(l)){h=h.concat(b.toQueryObjects(l,g[l],d))}}for(k=0,m=h.length;k<m;k++){c=h[k];n=c.value;if(Ext.isEmpty(n)){n=""}else{if(Ext.isDate(n)){n=Ext.Date.toString(n)}}e.push(encodeURIComponent(c.name)+"="+encodeURIComponent(String(n)))}return e.join("&")},fromQueryString:function(d,r){var m=d.replace(/^\?/,"").split("&"),u={},s,k,w,n,q,g,o,p,c,h,t,l,v,e;for(q=0,g=m.length;q<g;q++){o=m[q];if(o.length>0){k=o.split("=");w=decodeURIComponent(k[0]);n=(k[1]!==undefined)?decodeURIComponent(k[1]):"";if(!r){if(u.hasOwnProperty(w)){if(!Ext.isArray(u[w])){u[w]=[u[w]]}u[w].push(n)}else{u[w]=n}}else{h=w.match(/(\[):?([^\]]*)\]/g);t=w.match(/^([^\[]+)/);w=t[0];l=[];if(h===null){u[w]=n;continue}for(p=0,c=h.length;p<c;p++){v=h[p];v=(v.length===2)?"":v.substring(1,v.length-1);l.push(v)}l.unshift(w);s=u;for(p=0,c=l.length;p<c;p++){v=l[p];if(p===c-1){if(Ext.isArray(s)&&v===""){s.push(n)}else{s[v]=n}}else{if(s[v]===undefined||typeof s[v]==="string"){e=l[p+1];s[v]=(Ext.isNumeric(e)||e==="")?[]:{}}s=s[v]}}}}}return u},each:function(c,e,d){for(var g in c){if(c.hasOwnProperty(g)){if(e.call(d||c,g,c[g],c)===false){return}}}},merge:function(k){var h=1,j=arguments.length,c=b.merge,e=Ext.clone,g,m,l,d;for(;h<j;h++){g=arguments[h];for(m in g){l=g[m];if(l&&l.constructor===Object){d=k[m];if(d&&d.constructor===Object){c(d,l)}else{k[m]=e(l)}}else{k[m]=l}}}return k},mergeIf:function(c){var h=1,j=arguments.length,e=Ext.clone,d,g,k;for(;h<j;h++){d=arguments[h];for(g in d){if(!(g in c)){k=d[g];if(k&&k.constructor===Object){c[g]=e(k)}else{c[g]=k}}}}return c},getKey:function(c,e){for(var d in c){if(c.hasOwnProperty(d)&&c[d]===e){return d}}return null},getValues:function(d){var c=[],e;for(e in d){if(d.hasOwnProperty(e)){c.push(d[e])}}return c},getKeys:(typeof Object.keys=="function")?function(c){if(!c){return[]}return Object.keys(c)}:function(c){var d=[],e;for(e in c){if(c.hasOwnProperty(e)){d.push(e)}}return d},getSize:function(c){var d=0,e;for(e in c){if(c.hasOwnProperty(e)){d++}}return d},classify:function(g){var e=g,i=[],d={},c=function(){var k=0,l=i.length,m;for(;k<l;k++){m=i[k];this[m]=new d[m]()}},h,j;for(h in g){if(g.hasOwnProperty(h)){j=g[h];if(j&&j.constructor===Object){i.push(h);d[h]=b.classify(j)}}}c.prototype=e;return c}};Ext.merge=Ext.Object.merge;Ext.mergeIf=Ext.Object.mergeIf;Ext.urlEncode=function(){var c=Ext.Array.from(arguments),d="";if((typeof c[1]==="string")){d=c[1]+"&";c[1]=false}return d+b.toQueryString.apply(b,c)};Ext.urlDecode=function(){return b.fromQueryString.apply(b,arguments)}}());(function(){function b(d){var c=Array.prototype.slice.call(arguments,1);return d.replace(/\{(\d+)\}/g,function(e,g){return c[g]})}Ext.Date={now:Date.now||function(){return +new Date()},toString:function(c){var d=Ext.String.leftPad;return c.getFullYear()+"-"+d(c.getMonth()+1,2,"0")+"-"+d(c.getDate(),2,"0")+"T"+d(c.getHours(),2,"0")+":"+d(c.getMinutes(),2,"0")+":"+d(c.getSeconds(),2,"0")},getElapsed:function(d,c){return Math.abs(d-(c||new Date()))},useStrict:false,formatCodeToRegex:function(d,c){var e=a.parseCodes[d];if(e){e=typeof e=="function"?e():e;a.parseCodes[d]=e}return e?Ext.applyIf({c:e.c?b(e.c,c||"{0}"):e.c},e):{g:0,c:null,s:Ext.String.escapeRegex(d)}},parseFunctions:{MS:function(d,c){var e=new RegExp("\\/Date\\(([-+])?(\\d+)(?:[+-]\\d{4})?\\)\\/"),g=(d||"").match(e);return g?new Date(((g[1]||"")+g[2])*1):null}},parseRegexes:[],formatFunctions:{MS:function(){return"\\/Date("+this.getTime()+")\\/"}},y2kYear:50,MILLI:"ms",SECOND:"s",MINUTE:"mi",HOUR:"h",DAY:"d",MONTH:"mo",YEAR:"y",defaults:{},dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNumbers:{January:0,Jan:0,February:1,Feb:1,March:2,Mar:2,April:3,Apr:3,May:4,June:5,Jun:5,July:6,Jul:6,August:7,Aug:7,September:8,Sep:8,October:9,Oct:9,November:10,Nov:10,December:11,Dec:11},defaultFormat:"m/d/Y",getShortMonthName:function(c){return Ext.Date.monthNames[c].substring(0,3)},getShortDayName:function(c){return Ext.Date.dayNames[c].substring(0,3)},getMonthNumber:function(c){return Ext.Date.monthNumbers[c.substring(0,1).toUpperCase()+c.substring(1,3).toLowerCase()]},formatContainsHourInfo:(function(){var d=/(\\.)/g,c=/([gGhHisucUOPZ]|MS)/;return function(e){return c.test(e.replace(d,""))}}()),formatContainsDateInfo:(function(){var d=/(\\.)/g,c=/([djzmnYycU]|MS)/;return function(e){return c.test(e.replace(d,""))}}()),unescapeFormat:(function(){var c=/\\/gi;return function(d){return d.replace(c,"")}}()),formatCodes:{d:"Ext.String.leftPad(this.getDate(), 2, '0')",D:"Ext.Date.getShortDayName(this.getDay())",j:"this.getDate()",l:"Ext.Date.dayNames[this.getDay()]",N:"(this.getDay() ? this.getDay() : 7)",S:"Ext.Date.getSuffix(this)",w:"this.getDay()",z:"Ext.Date.getDayOfYear(this)",W:"Ext.String.leftPad(Ext.Date.getWeekOfYear(this), 2, '0')",F:"Ext.Date.monthNames[this.getMonth()]",m:"Ext.String.leftPad(this.getMonth() + 1, 2, '0')",M:"Ext.Date.getShortMonthName(this.getMonth())",n:"(this.getMonth() + 1)",t:"Ext.Date.getDaysInMonth(this)",L:"(Ext.Date.isLeapYear(this) ? 1 : 0)",o:"(this.getFullYear() + (Ext.Date.getWeekOfYear(this) == 1 && this.getMonth() > 0 ? +1 : (Ext.Date.getWeekOfYear(this) >= 52 && this.getMonth() < 11 ? -1 : 0)))",Y:"Ext.String.leftPad(this.getFullYear(), 4, '0')",y:"('' + this.getFullYear()).substring(2, 4)",a:"(this.getHours() < 12 ? 'am' : 'pm')",A:"(this.getHours() < 12 ? 'AM' : 'PM')",g:"((this.getHours() % 12) ? this.getHours() % 12 : 12)",G:"this.getHours()",h:"Ext.String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0')",H:"Ext.String.leftPad(this.getHours(), 2, '0')",i:"Ext.String.leftPad(this.getMinutes(), 2, '0')",s:"Ext.String.leftPad(this.getSeconds(), 2, '0')",u:"Ext.String.leftPad(this.getMilliseconds(), 3, '0')",O:"Ext.Date.getGMTOffset(this)",P:"Ext.Date.getGMTOffset(this, true)",T:"Ext.Date.getTimezone(this)",Z:"(this.getTimezoneOffset() * -60)",c:function(){var k,h,g,d,j;for(k="Y-m-dTH:i:sP",h=[],g=0,d=k.length;g<d;++g){j=k.charAt(g);h.push(j=="T"?"'T'":a.getFormatCode(j))}return h.join(" + ")},U:"Math.round(this.getTime() / 1000)"},isValid:function(o,c,n,k,g,j,e){k=k||0;g=g||0;j=j||0;e=e||0;var l=a.add(new Date(o<100?100:o,c-1,n,k,g,j,e),a.YEAR,o<100?o-100:0);return o==l.getFullYear()&&c==l.getMonth()+1&&n==l.getDate()&&k==l.getHours()&&g==l.getMinutes()&&j==l.getSeconds()&&e==l.getMilliseconds()},parse:function(d,g,c){var e=a.parseFunctions;if(e[g]==null){a.createParser(g)}return e[g](d,Ext.isDefined(c)?c:a.useStrict)},parseDate:function(d,e,c){return a.parse(d,e,c)},getFormatCode:function(d){var c=a.formatCodes[d];if(c){c=typeof c=="function"?c():c;a.formatCodes[d]=c}return c||("'"+Ext.String.escape(d)+"'")},createFormat:function(h){var g=[],c=false,e="",d;for(d=0;d<h.length;++d){e=h.charAt(d);if(!c&&e=="\\"){c=true}else{if(c){c=false;g.push("'"+Ext.String.escape(e)+"'")}else{g.push(a.getFormatCode(e))}}}a.formatFunctions[h]=Ext.functionFactory("return "+g.join("+"))},createParser:(function(){var c=["var dt, y, m, d, h, i, s, ms, o, z, zz, u, v,","def = Ext.Date.defaults,","results = String(input).match(Ext.Date.parseRegexes[{0}]);","if(results){","{1}","if(u != null){","v = new Date(u * 1000);","}else{","dt = Ext.Date.clearTime(new Date);","y = Ext.Number.from(y, Ext.Number.from(def.y, dt.getFullYear()));","m = Ext.Number.from(m, Ext.Number.from(def.m - 1, dt.getMonth()));","d = Ext.Number.from(d, Ext.Number.from(def.d, dt.getDate()));","h  = Ext.Number.from(h, Ext.Number.from(def.h, dt.getHours()));","i  = Ext.Number.from(i, Ext.Number.from(def.i, dt.getMinutes()));","s  = Ext.Number.from(s, Ext.Number.from(def.s, dt.getSeconds()));","ms = Ext.Number.from(ms, Ext.Number.from(def.ms, dt.getMilliseconds()));","if(z >= 0 && y >= 0){","v = Ext.Date.add(new Date(y < 100 ? 100 : y, 0, 1, h, i, s, ms), Ext.Date.YEAR, y < 100 ? y - 100 : 0);","v = !strict? v : (strict === true && (z <= 364 || (Ext.Date.isLeapYear(v) && z <= 365))? Ext.Date.add(v, Ext.Date.DAY, z) : null);","}else if(strict === true && !Ext.Date.isValid(y, m + 1, d, h, i, s, ms)){","v = null;","}else{","v = Ext.Date.add(new Date(y < 100 ? 100 : y, m, d, h, i, s, ms), Ext.Date.YEAR, y < 100 ? y - 100 : 0);","}","}","}","if(v){","if(zz != null){","v = Ext.Date.add(v, Ext.Date.SECOND, -v.getTimezoneOffset() * 60 - zz);","}else if(o){","v = Ext.Date.add(v, Ext.Date.MINUTE, -v.getTimezoneOffset() + (sn == '+'? -1 : 1) * (hr * 60 + mn));","}","}","return v;"].join("\n");return function(o){var e=a.parseRegexes.length,p=1,g=[],n=[],l=false,d="",j=0,k=o.length,m=[],h;for(;j<k;++j){d=o.charAt(j);if(!l&&d=="\\"){l=true}else{if(l){l=false;n.push(Ext.String.escape(d))}else{h=a.formatCodeToRegex(d,p);p+=h.g;n.push(h.s);if(h.g&&h.c){if(h.calcAtEnd){m.push(h.c)}else{g.push(h.c)}}}}}g=g.concat(m);a.parseRegexes[e]=new RegExp("^"+n.join("")+"$","i");a.parseFunctions[o]=Ext.functionFactory("input","strict",b(c,e,g.join("")))}}()),parseCodes:{d:{g:1,c:"d = parseInt(results[{0}], 10);\n",s:"(3[0-1]|[1-2][0-9]|0[1-9])"},j:{g:1,c:"d = parseInt(results[{0}], 10);\n",s:"(3[0-1]|[1-2][0-9]|[1-9])"},D:function(){for(var c=[],d=0;d<7;c.push(a.getShortDayName(d)),++d){}return{g:0,c:null,s:"(?:"+c.join("|")+")"}},l:function(){return{g:0,c:null,s:"(?:"+a.dayNames.join("|")+")"}},N:{g:0,c:null,s:"[1-7]"},S:{g:0,c:null,s:"(?:st|nd|rd|th)"},w:{g:0,c:null,s:"[0-6]"},z:{g:1,c:"z = parseInt(results[{0}], 10);\n",s:"(\\d{1,3})"},W:{g:0,c:null,s:"(?:\\d{2})"},F:function(){return{g:1,c:"m = parseInt(Ext.Date.getMonthNumber(results[{0}]), 10);\n",s:"("+a.monthNames.join("|")+")"}},M:function(){for(var c=[],d=0;d<12;c.push(a.getShortMonthName(d)),++d){}return Ext.applyIf({s:"("+c.join("|")+")"},a.formatCodeToRegex("F"))},m:{g:1,c:"m = parseInt(results[{0}], 10) - 1;\n",s:"(1[0-2]|0[1-9])"},n:{g:1,c:"m = parseInt(results[{0}], 10) - 1;\n",s:"(1[0-2]|[1-9])"},t:{g:0,c:null,s:"(?:\\d{2})"},L:{g:0,c:null,s:"(?:1|0)"},o:function(){return a.formatCodeToRegex("Y")},Y:{g:1,c:"y = parseInt(results[{0}], 10);\n",s:"(\\d{4})"},y:{g:1,c:"var ty = parseInt(results[{0}], 10);\ny = ty > Ext.Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"},a:{g:1,c:"if (/(am)/i.test(results[{0}])) {\nif (!h || h == 12) { h = 0; }\n} else { if (!h || h < 12) { h = (h || 0) + 12; }}",s:"(am|pm|AM|PM)",calcAtEnd:true},A:{g:1,c:"if (/(am)/i.test(results[{0}])) {\nif (!h || h == 12) { h = 0; }\n} else { if (!h || h < 12) { h = (h || 0) + 12; }}",s:"(AM|PM|am|pm)",calcAtEnd:true},g:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(1[0-2]|[0-9])"},G:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(2[0-3]|1[0-9]|[0-9])"},h:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(1[0-2]|0[1-9])"},H:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(2[0-3]|[0-1][0-9])"},i:{g:1,c:"i = parseInt(results[{0}], 10);\n",s:"([0-5][0-9])"},s:{g:1,c:"s = parseInt(results[{0}], 10);\n",s:"([0-5][0-9])"},u:{g:1,c:"ms = results[{0}]; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n",s:"(\\d+)"},O:{g:1,c:["o = results[{0}];","var sn = o.substring(0,1),","hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60),","mn = o.substring(3,5) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + Ext.String.leftPad(hr, 2, '0') + Ext.String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{4})"},P:{g:1,c:["o = results[{0}];","var sn = o.substring(0,1),","hr = o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60),","mn = o.substring(4,6) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + Ext.String.leftPad(hr, 2, '0') + Ext.String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{2}:\\d{2})"},T:{g:0,c:null,s:"[A-Z]{1,4}"},Z:{g:1,c:"zz = results[{0}] * 1;\nzz = (-43200 <= zz && zz <= 50400)? zz : null;\n",s:"([+-]?\\d{1,5})"},c:function(){var e=[],c=[a.formatCodeToRegex("Y",1),a.formatCodeToRegex("m",2),a.formatCodeToRegex("d",3),a.formatCodeToRegex("H",4),a.formatCodeToRegex("i",5),a.formatCodeToRegex("s",6),{c:"ms = results[7] || '0'; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n"},{c:["if(results[8]) {","if(results[8] == 'Z'){","zz = 0;","}else if (results[8].indexOf(':') > -1){",a.formatCodeToRegex("P",8).c,"}else{",a.formatCodeToRegex("O",8).c,"}","}"].join("\n")}],g,d;for(g=0,d=c.length;g<d;++g){e.push(c[g].c)}return{g:1,c:e.join(""),s:[c[0].s,"(?:","-",c[1].s,"(?:","-",c[2].s,"(?:","(?:T| )?",c[3].s,":",c[4].s,"(?::",c[5].s,")?","(?:(?:\\.|,)(\\d+))?","(Z|(?:[-+]\\d{2}(?::)?\\d{2}))?",")?",")?",")?"].join("")}},U:{g:1,c:"u = parseInt(results[{0}], 10);\n",s:"(-?\\d+)"}},dateFormat:function(c,d){return a.format(c,d)},isEqual:function(d,c){if(d&&c){return(d.getTime()===c.getTime())}return !(d||c)},format:function(d,e){var c=a.formatFunctions;if(!Ext.isDate(d)){return""}if(c[e]==null){a.createFormat(e)}return c[e].call(d)+""},getTimezone:function(c){return c.toString().replace(/^.* (?:\((.*)\)|([A-Z]{1,4})(?:[\-+][0-9]{4})?(?: -?\d+)?)$/,"$1$2").replace(/[^A-Z]/g,"")},getGMTOffset:function(c,d){var e=c.getTimezoneOffset();return(e>0?"-":"+")+Ext.String.leftPad(Math.floor(Math.abs(e)/60),2,"0")+(d?":":"")+Ext.String.leftPad(Math.abs(e%60),2,"0")},getDayOfYear:function(g){var e=0,j=Ext.Date.clone(g),c=g.getMonth(),h;for(h=0,j.setDate(1),j.setMonth(0);h<c;j.setMonth(++h)){e+=a.getDaysInMonth(j)}return e+g.getDate()-1},getWeekOfYear:(function(){var c=86400000,d=7*c;return function(g){var h=Date.UTC(g.getFullYear(),g.getMonth(),g.getDate()+3)/c,e=Math.floor(h/7),i=new Date(e*d).getUTCFullYear();return e-Math.floor(Date.UTC(i,0,7)/d)+1}}()),isLeapYear:function(c){var d=c.getFullYear();return !!((d&3)==0&&(d%100||(d%400==0&&d)))},getFirstDayOfMonth:function(d){var c=(d.getDay()-(d.getDate()-1))%7;return(c<0)?(c+7):c},getLastDayOfMonth:function(c){return a.getLastDateOfMonth(c).getDay()},getFirstDateOfMonth:function(c){return new Date(c.getFullYear(),c.getMonth(),1)},getLastDateOfMonth:function(c){return new Date(c.getFullYear(),c.getMonth(),a.getDaysInMonth(c))},getDaysInMonth:(function(){var c=[31,28,31,30,31,30,31,31,30,31,30,31];return function(e){var d=e.getMonth();return d==1&&a.isLeapYear(e)?29:c[d]}}()),getSuffix:function(c){switch(c.getDate()){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th"}},clone:function(c){return new Date(c.getTime())},isDST:function(c){return new Date(c.getFullYear(),0,1).getTimezoneOffset()!=c.getTimezoneOffset()},clearTime:function(e,j){if(j){return Ext.Date.clearTime(Ext.Date.clone(e))}var h=e.getDate(),g,i;e.setHours(0);e.setMinutes(0);e.setSeconds(0);e.setMilliseconds(0);if(e.getDate()!=h){for(g=1,i=a.add(e,Ext.Date.HOUR,g);i.getDate()!=h;g++,i=a.add(e,Ext.Date.HOUR,g)){}e.setDate(h);e.setHours(i.getHours())}return e},add:function(h,g,i){var j=Ext.Date.clone(h),c=Ext.Date,e;if(!g||i===0){return j}switch(g.toLowerCase()){case Ext.Date.MILLI:j.setMilliseconds(j.getMilliseconds()+i);break;case Ext.Date.SECOND:j.setSeconds(j.getSeconds()+i);break;case Ext.Date.MINUTE:j.setMinutes(j.getMinutes()+i);break;case Ext.Date.HOUR:j.setHours(j.getHours()+i);break;case Ext.Date.DAY:j.setDate(j.getDate()+i);break;case Ext.Date.MONTH:e=h.getDate();if(e>28){e=Math.min(e,Ext.Date.getLastDateOfMonth(Ext.Date.add(Ext.Date.getFirstDateOfMonth(h),Ext.Date.MONTH,i)).getDate())}j.setDate(e);j.setMonth(h.getMonth()+i);break;case Ext.Date.YEAR:e=h.getDate();if(e>28){e=Math.min(e,Ext.Date.getLastDateOfMonth(Ext.Date.add(Ext.Date.getFirstDateOfMonth(h),Ext.Date.YEAR,i)).getDate())}j.setDate(e);j.setFullYear(h.getFullYear()+i);break}return j},between:function(d,g,c){var e=d.getTime();return g.getTime()<=e&&e<=c.getTime()},compat:function(){var d=window.Date,c,l,j=["useStrict","formatCodeToRegex","parseFunctions","parseRegexes","formatFunctions","y2kYear","MILLI","SECOND","MINUTE","HOUR","DAY","MONTH","YEAR","defaults","dayNames","monthNames","monthNumbers","getShortMonthName","getShortDayName","getMonthNumber","formatCodes","isValid","parseDate","getFormatCode","createFormat","createParser","parseCodes"],h=["dateFormat","format","getTimezone","getGMTOffset","getDayOfYear","getWeekOfYear","isLeapYear","getFirstDayOfMonth","getLastDayOfMonth","getDaysInMonth","getSuffix","clone","isDST","clearTime","add","between"],i=j.length,e=h.length,g,k,m;for(m=0;m<i;m++){g=j[m];d[g]=a[g]}for(c=0;c<e;c++){k=h[c];d.prototype[k]=function(){var n=Array.prototype.slice.call(arguments);n.unshift(this);return a[k].apply(a,n)}}}};var a=Ext.Date}());(function(a){var c=[],b=function(){};Ext.apply(b,{$className:"Ext.Base",$isClass:true,create:function(){return Ext.create.apply(Ext,[this].concat(Array.prototype.slice.call(arguments,0)))},extend:function(j){var d=j.prototype,m,g,h,k,e,l;g=this.prototype=Ext.Object.chain(d);g.self=this;this.superclass=g.superclass=d;if(!j.$isClass){m=Ext.Base.prototype;for(h in m){if(h in g){g[h]=m[h]}}}l=d.$inheritableStatics;if(l){for(h=0,k=l.length;h<k;h++){e=l[h];if(!this.hasOwnProperty(e)){this[e]=j[e]}}}if(j.$onExtended){this.$onExtended=j.$onExtended.slice()}g.config=new g.configClass();g.initConfigList=g.initConfigList.slice();g.initConfigMap=Ext.clone(g.initConfigMap);g.configMap=Ext.Object.chain(g.configMap)},$onExtended:[],triggerExtended:function(){var g=this.$onExtended,e=g.length,d,h;if(e>0){for(d=0;d<e;d++){h=g[d];h.fn.apply(h.scope||this,arguments)}}},onExtended:function(e,d){this.$onExtended.push({fn:e,scope:d});return this},addConfig:function(h,l){var n=this.prototype,m=Ext.Class.configNameCache,i=n.configMap,j=n.initConfigList,g=n.initConfigMap,k=n.config,d,e,o;for(e in h){if(h.hasOwnProperty(e)){if(!i[e]){i[e]=true}o=h[e];d=m[e].initialized;if(!g[e]&&o!==null&&!n[d]){g[e]=true;j.push(e)}}}if(l){Ext.merge(k,h)}else{Ext.mergeIf(k,h)}n.configClass=Ext.Object.classify(k)},addStatics:function(d){var g,e;for(e in d){if(d.hasOwnProperty(e)){g=d[e];if(typeof g=="function"&&!g.$isClass&&g!==Ext.emptyFn&&g!==Ext.identityFn){g.$owner=this;g.$name=e}this[e]=g}}return this},addInheritableStatics:function(e){var i,d,h=this.prototype,g,j;i=h.$inheritableStatics;d=h.$hasInheritableStatics;if(!i){i=h.$inheritableStatics=[];d=h.$hasInheritableStatics={}}for(g in e){if(e.hasOwnProperty(g)){j=e[g];this[g]=j;if(!d[g]){d[g]=true;i.push(g)}}}return this},addMembers:function(e){var h=this.prototype,d=Ext.enumerables,l=[],j,k,g,m;for(g in e){l.push(g)}if(d){l.push.apply(l,d)}for(j=0,k=l.length;j<k;j++){g=l[j];if(e.hasOwnProperty(g)){m=e[g];if(typeof m=="function"&&!m.$isClass&&m!==Ext.emptyFn){m.$owner=this;m.$name=g}h[g]=m}}return this},addMember:function(d,e){if(typeof e=="function"&&!e.$isClass&&e!==Ext.emptyFn){e.$owner=this;e.$name=d}this.prototype[d]=e;return this},implement:function(){this.addMembers.apply(this,arguments)},borrow:function(j,g){var n=this.prototype,m=j.prototype,h,k,e,l,d;g=Ext.Array.from(g);for(h=0,k=g.length;h<k;h++){e=g[h];d=m[e];if(typeof d=="function"){l=Ext.Function.clone(d);l.$owner=this;l.$name=e;n[e]=l}else{n[e]=d}}return this},override:function(e){var m=this,o=Ext.enumerables,k=m.prototype,h=Ext.Function.clone,d,j,g,n,l,i;if(arguments.length===2){d=e;e={};e[d]=arguments[1];o=null}do{l=[];n=null;for(d in e){if(d=="statics"){n=e[d]}else{if(d=="config"){m.addConfig(e[d],true)}else{l.push(d)}}}if(o){l.push.apply(l,o)}for(j=l.length;j--;){d=l[j];if(e.hasOwnProperty(d)){g=e[d];if(typeof g=="function"&&!g.$className&&g!==Ext.emptyFn){if(typeof g.$owner!="undefined"){g=h(g)}g.$owner=m;g.$name=d;i=k[d];if(i){g.$previous=i}}k[d]=g}}k=m;e=n}while(e);return this},callParent:function(d){var e;return(e=this.callParent.caller)&&(e.$previous||((e=e.$owner?e:e.caller)&&e.$owner.superclass.self[e.$name])).apply(this,d||c)},callSuper:function(d){var e;return(e=this.callSuper.caller)&&((e=e.$owner?e:e.caller)&&e.$owner.superclass.self[e.$name]).apply(this,d||c)},mixin:function(g,i){var d=i.prototype,e=this.prototype,h;if(typeof d.onClassMixedIn!="undefined"){d.onClassMixedIn.call(i,this)}if(!e.hasOwnProperty("mixins")){if("mixins" in e){e.mixins=Ext.Object.chain(e.mixins)}else{e.mixins={}}}for(h in d){if(h==="mixins"){Ext.merge(e.mixins,d[h])}else{if(typeof e[h]=="undefined"&&h!="mixinId"&&h!="config"){e[h]=d[h]}}}if("config" in d){this.addConfig(d.config,false)}e.mixins[g]=d},getName:function(){return Ext.getClassName(this)},createAlias:a(function(e,d){this.override(e,function(){return this[d].apply(this,arguments)})}),addXtype:function(i){var e=this.prototype,h=e.xtypesMap,g=e.xtypes,d=e.xtypesChain;if(!e.hasOwnProperty("xtypesMap")){h=e.xtypesMap=Ext.merge({},e.xtypesMap||{});g=e.xtypes=e.xtypes?[].concat(e.xtypes):[];d=e.xtypesChain=e.xtypesChain?[].concat(e.xtypesChain):[];e.xtype=i}if(!h[i]){h[i]=true;g.push(i);d.push(i);Ext.ClassManager.setAlias(this,"widget."+i)}return this}});b.implement({isInstance:true,$className:"Ext.Base",configClass:Ext.emptyFn,initConfigList:[],configMap:{},initConfigMap:{},statics:function(){var e=this.statics.caller,d=this.self;if(!e){return d}return e.$owner},callParent:function(e){var g,d=(g=this.callParent.caller)&&(g.$previous||((g=g.$owner?g:g.caller)&&g.$owner.superclass[g.$name]));return d.apply(this,e||c)},callSuper:function(e){var g,d=(g=this.callSuper.caller)&&((g=g.$owner?g:g.caller)&&g.$owner.superclass[g.$name]);return d.apply(this,e||c)},self:b,constructor:function(){return this},initConfig:function(g){var m=g,l=Ext.Class.configNameCache,j=new this.configClass(),p=this.initConfigList,h=this.configMap,o,k,n,e,d;this.initConfig=Ext.emptyFn;this.initialConfig=m||{};this.config=g=(m)?Ext.merge(j,g):j;if(m){p=p.slice();for(e in m){if(h[e]){if(m[e]!==null){p.push(e);this[l[e].initialized]=false}}}}for(k=0,n=p.length;k<n;k++){e=p[k];o=l[e];d=o.initialized;if(!this[d]){this[d]=true;this[o.set].call(this,g[e])}}return this},hasConfig:function(d){return Boolean(this.configMap[d])},setConfig:function(h,l){if(!h){return this}var g=Ext.Class.configNameCache,d=this.config,k=this.configMap,j=this.initialConfig,e,i;l=Boolean(l);for(e in h){if(l&&j.hasOwnProperty(e)){continue}i=h[e];d[e]=i;if(k[e]){this[g[e].set](i)}}return this},getConfig:function(e){var d=Ext.Class.configNameCache;return this[d[e].get]()},getInitialConfig:function(e){var d=this.config;if(!e){return d}else{return d[e]}},onConfigUpdate:function(k,m,n){var o=this.self,g,j,d,h,l,e;k=Ext.Array.from(k);n=n||this;for(g=0,j=k.length;g<j;g++){d=k[g];h="update"+Ext.String.capitalize(d);l=this[h]||Ext.emptyFn;e=function(){l.apply(this,arguments);n[m].apply(n,arguments)};e.$name=h;e.$owner=o;this[h]=e}},destroy:function(){this.destroy=Ext.emptyFn}});b.prototype.callOverridden=b.prototype.callParent;Ext.Base=b}(Ext.Function.flexSetter));(function(){var c,b=Ext.Base,g=[],e,d;for(e in b){if(b.hasOwnProperty(e)){g.push(e)}}d=g.length;function a(i){function h(){return this.constructor.apply(this,arguments)||null}return h}Ext.Class=c=function(i,j,h){if(typeof i!="function"){h=j;j=i;i=null}if(!j){j={}}i=c.create(i,j);c.process(i,j,h);return i};Ext.apply(c,{onBeforeCreated:function(i,j,h){i.addMembers(j);h.onCreated.call(i,i)},create:function(h,l){var j,k;if(!h){h=a()}for(k=0;k<d;k++){j=g[k];h[j]=b[j]}return h},process:function(h,q,m){var l=q.preprocessors||c.defaultPreprocessors,t=this.preprocessors,w={onBeforeCreated:this.onBeforeCreated},v=[],x,p,o,u,n,s,r,k;delete q.preprocessors;for(o=0,u=l.length;o<u;o++){x=l[o];if(typeof x=="string"){x=t[x];p=x.properties;if(p===true){v.push(x.fn)}else{if(p){for(n=0,s=p.length;n<s;n++){r=p[n];if(q.hasOwnProperty(r)){v.push(x.fn);break}}}}}else{v.push(x)}}w.onCreated=m?m:Ext.emptyFn;w.preprocessors=v;this.doProcess(h,q,w)},doProcess:function(i,l,h){var k=this,j=h.preprocessors.shift();if(!j){h.onBeforeCreated.apply(k,arguments);return}if(j.call(k,i,l,h,k.doProcess)!==false){k.doProcess(i,l,h)}},preprocessors:{},registerPreprocessor:function(i,l,j,h,k){if(!h){h="last"}if(!j){j=[i]}this.preprocessors[i]={name:i,properties:j||false,fn:l};this.setDefaultPreprocessorPosition(i,h,k);return this},getPreprocessor:function(h){return this.preprocessors[h]},getPreprocessors:function(){return this.preprocessors},defaultPreprocessors:[],getDefaultPreprocessors:function(){return this.defaultPreprocessors},setDefaultPreprocessors:function(h){this.defaultPreprocessors=Ext.Array.from(h);return this},setDefaultPreprocessorPosition:function(j,l,k){var h=this.defaultPreprocessors,i;if(typeof l=="string"){if(l==="first"){h.unshift(j);return this}else{if(l==="last"){h.push(j);return this}}l=(l==="after")?1:-1}i=Ext.Array.indexOf(h,k);if(i!==-1){Ext.Array.splice(h,Math.max(0,i+l),0,j)}return this},configNameCache:{},getConfigNameMap:function(j){var i=this.configNameCache,k=i[j],h;if(!k){h=j.charAt(0).toUpperCase()+j.substr(1);k=i[j]={internal:j,initialized:"_is"+h+"Initialized",apply:"apply"+h,update:"update"+h,set:"set"+h,get:"get"+h,doSet:"doSet"+h,changeEvent:j.toLowerCase()+"change"}}return k}});c.registerPreprocessor("extend",function(j,n){var m=Ext.Base,o=m.prototype,p=n.extend,l,h,k;delete n.extend;if(p&&p!==Object){l=p}else{l=m}h=l.prototype;if(!l.$isClass){for(k in o){if(!h[k]){h[k]=o[k]}}}j.extend(l);j.triggerExtended.apply(j,arguments);if(n.onClassExtended){j.onExtended(n.onClassExtended,j);delete n.onClassExtended}},true);c.registerPreprocessor("statics",function(h,i){h.addStatics(i.statics);delete i.statics});c.registerPreprocessor("inheritableStatics",function(h,i){h.addInheritableStatics(i.inheritableStatics);delete i.inheritableStatics});c.registerPreprocessor("config",function(h,k){var j=k.config,i=h.prototype;delete k.config;Ext.Object.each(j,function(n,w){var u=c.getConfigNameMap(n),q=u.internal,l=u.initialized,v=u.apply,o=u.update,t=u.set,m=u.get,y=(t in i)||k.hasOwnProperty(t),p=(v in i)||k.hasOwnProperty(v),r=(o in i)||k.hasOwnProperty(o),x,s;if(w===null||(!y&&!p&&!r)){i[q]=w;i[l]=true}else{i[l]=false}if(!y){k[t]=function(B){var A=this[q],z=this[v],C=this[o];if(!this[l]){this[l]=true}if(z){B=z.call(this,B,A)}if(typeof B!="undefined"){this[q]=B;if(C&&B!==A){C.call(this,B,A)}}return this}}if(!(m in i)||k.hasOwnProperty(m)){s=k[m]||false;if(s){x=function(){return s.apply(this,arguments)}}else{x=function(){return this[q]}}k[m]=function(){var z;if(!this[l]){this[l]=true;this[t](this.config[n])}z=this[m];if("$previous" in z){z.$previous=x}else{this[m]=x}return x.apply(this,arguments)}}});h.addConfig(j,true)});c.registerPreprocessor("mixins",function(l,p,h){var j=p.mixins,m,k,n,o;delete p.mixins;Ext.Function.interceptBefore(h,"onCreated",function(){if(j instanceof Array){for(n=0,o=j.length;n<o;n++){k=j[n];m=k.prototype.mixinId||k.$className;l.mixin(m,k)}}else{for(var i in j){if(j.hasOwnProperty(i)){l.mixin(i,j[i])}}}})});Ext.extend=function(j,k,i){if(arguments.length===2&&Ext.isObject(k)){i=k;k=j;j=null}var h;if(!k){throw new Error("[Ext.extend] Attempting to extend from a class which has not been loaded on the page.")}i.extend=k;i.preprocessors=["extend","statics","inheritableStatics","mixins","config"];if(j){h=new c(j,i);h.prototype.constructor=j}else{h=new c(i)}h.prototype.override=function(n){for(var l in n){if(n.hasOwnProperty(l)){this[l]=n[l]}}};return h}}());(function(c,e,h,d,g){function a(){function i(){return this.constructor.apply(this,arguments)||null}return i}var b=Ext.ClassManager={classes:{},existCache:{},namespaceRewrites:[{from:"Ext.",to:Ext}],maps:{alternateToName:{},aliasToName:{},nameToAliases:{},nameToAlternates:{}},enableNamespaceParseCache:true,namespaceParseCache:{},instantiators:[],isCreated:function(n){var m=this.existCache,l,o,k,j,p;if(this.classes[n]||m[n]){return true}j=g;p=this.parseNamespace(n);for(l=0,o=p.length;l<o;l++){k=p[l];if(typeof k!="string"){j=k}else{if(!j||!j[k]){return false}j=j[k]}}m[n]=true;this.triggerCreated(n);return true},createdListeners:[],nameCreatedListeners:{},triggerCreated:function(s){var u=this.createdListeners,m=this.nameCreatedListeners,n=this.maps.nameToAlternates[s],t=[s],p,r,o,q,l,k;for(p=0,r=u.length;p<r;p++){l=u[p];l.fn.call(l.scope,s)}if(n){t.push.apply(t,n)}for(p=0,r=t.length;p<r;p++){k=t[p];u=m[k];if(u){for(o=0,q=u.length;o<q;o++){l=u[o];l.fn.call(l.scope,k)}delete m[k]}}},onCreated:function(m,l,k){var j=this.createdListeners,i=this.nameCreatedListeners,n={fn:m,scope:l};if(k){if(this.isCreated(k)){m.call(l,k);return}if(!i[k]){i[k]=[]}i[k].push(n)}else{j.push(n)}},parseNamespace:function(l){var j=this.namespaceParseCache,m,o,q,k,t,s,r,n,p;if(this.enableNamespaceParseCache){if(j.hasOwnProperty(l)){return j[l]}}m=[];o=this.namespaceRewrites;q=g;k=l;for(n=0,p=o.length;n<p;n++){t=o[n];s=t.from;r=t.to;if(k===s||k.substring(0,s.length)===s){k=k.substring(s.length);if(typeof r!="string"){q=r}else{m=m.concat(r.split("."))}break}}m.push(q);m=m.concat(k.split("."));if(this.enableNamespaceParseCache){j[l]=m}return m},setNamespace:function(m,p){var k=g,q=this.parseNamespace(m),o=q.length-1,j=q[o],n,l;for(n=0;n<o;n++){l=q[n];if(typeof l!="string"){k=l}else{if(!k[l]){k[l]={}}k=k[l]}}k[j]=p;return k[j]},createNamespaces:function(){var k=g,p,m,n,l,o,q;for(n=0,o=arguments.length;n<o;n++){p=this.parseNamespace(arguments[n]);for(l=0,q=p.length;l<q;l++){m=p[l];if(typeof m!="string"){k=m}else{if(!k[m]){k[m]={}}k=k[m]}}}return k},set:function(i,m){var l=this,o=l.maps,n=o.nameToAlternates,k=l.getName(m),j;l.classes[i]=l.setNamespace(i,m);if(k&&k!==i){o.alternateToName[i]=k;j=n[k]||(n[k]=[]);j.push(i)}return this},get:function(l){var n=this.classes,j,p,k,m,o;if(n[l]){return n[l]}j=g;p=this.parseNamespace(l);for(m=0,o=p.length;m<o;m++){k=p[m];if(typeof k!="string"){j=k}else{if(!j||!j[k]){return null}j=j[k]}}return j},setAlias:function(i,j){var l=this.maps.aliasToName,m=this.maps.nameToAliases,k;if(typeof i=="string"){k=i}else{k=this.getName(i)}if(j&&l[j]!==k){l[j]=k}if(!m[k]){m[k]=[]}if(j){Ext.Array.include(m[k],j)}return this},addNameAliasMappings:function(j){var o=this.maps.aliasToName,p=this.maps.nameToAliases,m,n,l,k;for(m in j){n=p[m]||(p[m]=[]);for(k=0;k<j[m].length;k++){l=j[m][k];if(!o[l]){o[l]=m;n.push(l)}}}return this},addNameAlternateMappings:function(m){var j=this.maps.alternateToName,p=this.maps.nameToAlternates,l,n,o,k;for(l in m){n=p[l]||(p[l]=[]);for(k=0;k<m[l].length;k++){o=m[l];if(!j[o]){j[o]=l;n.push(o)}}}return this},getByAlias:function(i){return this.get(this.getNameByAlias(i))},getNameByAlias:function(i){return this.maps.aliasToName[i]||""},getNameByAlternate:function(i){return this.maps.alternateToName[i]||""},getAliasesByName:function(i){return this.maps.nameToAliases[i]||[]},getName:function(i){return i&&i.$className||""},getClass:function(i){return i&&i.self||null},create:function(j,l,i){var k=a();if(typeof l=="function"){l=l(k)}l.$className=j;return new c(k,l,function(){var m=l.postprocessors||b.defaultPostprocessors,t=b.postprocessors,u=[],s,o,r,n,q,p,v;delete l.postprocessors;for(o=0,r=m.length;o<r;o++){s=m[o];if(typeof s=="string"){s=t[s];p=s.properties;if(p===true){u.push(s.fn)}else{if(p){for(n=0,q=p.length;n<q;n++){v=p[n];if(l.hasOwnProperty(v)){u.push(s.fn);break}}}}}else{u.push(s)}}l.postprocessors=u;l.createdFn=i;b.processCreate(j,this,l)})},processCreate:function(l,j,n){var m=this,i=n.postprocessors.shift(),k=n.createdFn;if(!i){if(l){m.set(l,j)}if(k){k.call(j,j)}if(l){m.triggerCreated(l)}return}if(i.call(m,l,j,n,m.processCreate)!==false){m.processCreate(l,j,n)}},createOverride:function(l,p,j){var o=this,n=p.override,k=p.requires,i=p.uses,m=function(){var q,r;if(k){r=k;k=null;Ext.Loader.require(r,m)}else{q=o.get(n);delete p.override;delete p.requires;delete p.uses;Ext.override(q,p);o.triggerCreated(l);if(i){Ext.Loader.addUsedClasses(i)}if(j){j.call(q)}}};o.existCache[l]=true;o.onCreated(m,o,n);return o},instantiateByAlias:function(){var j=arguments[0],i=h.call(arguments),k=this.getNameByAlias(j);if(!k){k=this.maps.aliasToName[j];Ext.syncRequire(k)}i[0]=k;return this.instantiate.apply(this,i)},instantiate:function(){var k=arguments[0],m=typeof k,j=h.call(arguments,1),l=k,n,i;if(m!="function"){if(m!="string"&&j.length===0){j=[k];k=k.xclass}i=this.get(k)}else{i=k}if(!i){n=this.getNameByAlias(k);if(n){k=n;i=this.get(k)}}if(!i){n=this.getNameByAlternate(k);if(n){k=n;i=this.get(k)}}if(!i){Ext.syncRequire(k);i=this.get(k)}return this.getInstantiator(j.length)(i,j)},dynInstantiate:function(j,i){i=d(i,true);i.unshift(j);return this.instantiate.apply(this,i)},getInstantiator:function(m){var l=this.instantiators,n,k,j;n=l[m];if(!n){k=m;j=[];for(k=0;k<m;k++){j.push("a["+k+"]")}n=l[m]=new Function("c","a","return new c("+j.join(",")+")")}return n},postprocessors:{},defaultPostprocessors:[],registerPostprocessor:function(j,m,k,i,l){if(!i){i="last"}if(!k){k=[j]}this.postprocessors[j]={name:j,properties:k||false,fn:m};this.setDefaultPostprocessorPosition(j,i,l);return this},setDefaultPostprocessors:function(i){this.defaultPostprocessors=d(i);return this},setDefaultPostprocessorPosition:function(j,m,l){var k=this.defaultPostprocessors,i;if(typeof m=="string"){if(m==="first"){k.unshift(j);return this}else{if(m==="last"){k.push(j);return this}}m=(m==="after")?1:-1}i=Ext.Array.indexOf(k,l);if(i!==-1){Ext.Array.splice(k,Math.max(0,i+m),0,j)}return this},getNamesByExpression:function(q){var o=this.maps.nameToAliases,r=[],j,n,l,k,s,m,p;if(q.indexOf("*")!==-1){q=q.replace(/\*/g,"(.*?)");s=new RegExp("^"+q+"$");for(j in o){if(o.hasOwnProperty(j)){l=o[j];if(j.search(s)!==-1){r.push(j)}else{for(m=0,p=l.length;m<p;m++){n=l[m];if(n.search(s)!==-1){r.push(j);break}}}}}}else{k=this.getNameByAlias(q);if(k){r.push(k)}else{k=this.getNameByAlternate(q);if(k){r.push(k)}else{r.push(q)}}}return r}};b.registerPostprocessor("alias",function(l,k,o){var j=o.alias,m,n;for(m=0,n=j.length;m<n;m++){e=j[m];this.setAlias(k,e)}},["xtype","alias"]);b.registerPostprocessor("singleton",function(j,i,l,k){k.call(this,j,new i(),l);return false});b.registerPostprocessor("alternateClassName",function(k,j,o){var m=o.alternateClassName,l,n,p;if(!(m instanceof Array)){m=[m]}for(l=0,n=m.length;l<n;l++){p=m[l];this.set(p,j)}});Ext.apply(Ext,{create:e(b,"instantiate"),widget:function(k,j){var o=k,l,m,i,n;if(typeof o!="string"){j=k;o=j.xtype}else{j=j||{}}if(j.isComponent){return j}l="widget."+o;m=b.getNameByAlias(l);if(!m){n=true}i=b.get(m);if(n||!i){return b.instantiateByAlias(l,j)}return new i(j)},createByAlias:e(b,"instantiateByAlias"),define:function(j,k,i){if(k.override){return b.createOverride.apply(b,arguments)}return b.create.apply(b,arguments)},getClassName:e(b,"getName"),getDisplayName:function(i){if(i){if(i.displayName){return i.displayName}if(i.$name&&i.$class){return Ext.getClassName(i.$class)+"#"+i.$name}if(i.$className){return i.$className}}return"Anonymous"},getClass:e(b,"getClass"),namespace:e(b,"createNamespaces")});Ext.createWidget=Ext.widget;Ext.ns=Ext.namespace;c.registerPreprocessor("className",function(i,j){if(j.$className){i.$className=j.$className}},true,"first");c.registerPreprocessor("alias",function(u,o){var s=u.prototype,l=d(o.xtype),j=d(o.alias),v="widget.",t=v.length,p=Array.prototype.slice.call(s.xtypesChain||[]),m=Ext.merge({},s.xtypesMap||{}),n,r,q,k;for(n=0,r=j.length;n<r;n++){q=j[n];if(q.substring(0,t)===v){k=q.substring(t);Ext.Array.include(l,k)}}u.xtype=o.xtype=l[0];o.xtypes=l;for(n=0,r=l.length;n<r;n++){k=l[n];if(!m[k]){m[k]=true;p.push(k)}}o.xtypesChain=p;o.xtypesMap=m;Ext.Function.interceptAfter(o,"onClassCreated",function(){var i=s.mixins,x,w;for(x in i){if(i.hasOwnProperty(x)){w=i[x];l=w.xtypes;if(l){for(n=0,r=l.length;n<r;n++){k=l[n];if(!m[k]){m[k]=true;p.push(k)}}}}}});for(n=0,r=l.length;n<r;n++){k=l[n];Ext.Array.include(j,v+k)}o.alias=j},["xtype","alias"])}(Ext.Class,Ext.Function.alias,Array.prototype.slice,Ext.Array.from,Ext.global));Ext.Loader=new function(){var j=this,b=Ext.ClassManager,r=Ext.Class,e=Ext.Function.flexSetter,m=Ext.Function.alias,a=Ext.Function.pass,d=Ext.Function.defer,h=Ext.Array.erase,l=["extend","mixins","requires"],t={},k=[],c=/\/\.\//g,g=/\./g;Ext.apply(j,{isInHistory:t,history:k,config:{enabled:false,scriptChainDelay:false,disableCaching:true,disableCachingParam:"_dc",garbageCollect:false,paths:{Ext:"."},preserveScripts:true,scriptCharset:undefined},setConfig:function(w,x){if(Ext.isObject(w)&&arguments.length===1){Ext.merge(j.config,w)}else{j.config[w]=(Ext.isObject(x))?Ext.merge(j.config[w],x):x}return j},getConfig:function(w){if(w){return j.config[w]}return j.config},setPath:e(function(w,x){j.config.paths[w]=x;return j}),addClassPathMappings:function(x){var w;for(w in x){j.config.paths[w]=x[w]}return j},getPath:function(w){var y="",z=j.config.paths,x=j.getPrefix(w);if(x.length>0){if(x===w){return z[x]}y=z[x];w=w.substring(x.length+1)}if(y.length>0){y+="/"}return y.replace(c,"/")+w.replace(g,"/")+".js"},getPrefix:function(x){var z=j.config.paths,y,w="";if(z.hasOwnProperty(x)){return x}for(y in z){if(z.hasOwnProperty(y)&&y+"."===x.substring(0,y.length+1)){if(y.length>w.length){w=y}}}return w},isAClassNameWithAKnownPrefix:function(w){var x=j.getPrefix(w);return x!==""&&x!==w},require:function(y,x,w,z){if(x){x.call(w)}},syncRequire:function(){},exclude:function(w){return{require:function(z,y,x){return j.require(z,y,x,w)},syncRequire:function(z,y,x){return j.syncRequire(z,y,x,w)}}},onReady:function(z,y,A,w){var x;if(A!==false&&Ext.onDocumentReady){x=z;z=function(){Ext.onDocumentReady(x,y,w)}}z.call(y)}});var o=[],p={},s={},q={},n={},u=[],v=[],i={};Ext.apply(j,{documentHead:typeof document!="undefined"&&(document.head||document.getElementsByTagName("head")[0]),isLoading:false,queue:o,isClassFileLoaded:p,isFileLoaded:s,readyListeners:u,optionalRequires:v,requiresMap:i,numPendingFiles:0,numLoadedFiles:0,hasFileLoadError:false,classNameToFilePathMap:q,scriptsLoading:0,syncModeEnabled:false,scriptElements:n,refreshQueue:function(){var A=o.length,x,z,w,y;if(!A&&!j.scriptsLoading){return j.triggerReady()}for(x=0;x<A;x++){z=o[x];if(z){y=z.requires;if(y.length>j.numLoadedFiles){continue}for(w=0;w<y.length;){if(b.isCreated(y[w])){h(y,w,1)}else{w++}}if(z.requires.length===0){h(o,x,1);z.callback.call(z.scope);j.refreshQueue();break}}}return j},injectScriptElement:function(w,D,A,F,y){var E=document.createElement("script"),B=false,x=j.config,C=function(){if(!B){B=true;E.onload=E.onreadystatechange=E.onerror=null;if(typeof x.scriptChainDelay=="number"){d(D,x.scriptChainDelay,F)}else{D.call(F)}j.cleanupScriptElement(E,x.preserveScripts===false,x.garbageCollect)}},z=function(G){d(A,1,F);j.cleanupScriptElement(E,x.preserveScripts===false,x.garbageCollect)};E.type="text/javascript";E.onerror=z;y=y||x.scriptCharset;if(y){E.charset=y}if("addEventListener" in E){E.onload=C}else{if("readyState" in E){E.onreadystatechange=function(){if(this.readyState=="loaded"||this.readyState=="complete"){C()}}}else{E.onload=C}}E.src=w;(j.documentHead||document.getElementsByTagName("head")[0]).appendChild(E);return E},removeScriptElement:function(w){if(n[w]){j.cleanupScriptElement(n[w],true,!!j.getConfig("garbageCollect"));delete n[w]}return j},cleanupScriptElement:function(y,x,z){var A;y.onload=y.onreadystatechange=y.onerror=null;if(x){Ext.removeNode(y);if(z){for(A in y){try{y[A]=null;delete y[A]}catch(w){}}}}return j},loadScript:function(F){var z=j.getConfig(),y=typeof F=="string",x=y?F:F.url,B=!y&&F.onError,C=!y&&F.onLoad,E=!y&&F.scope,D=function(){j.numPendingFiles--;j.scriptsLoading--;if(B){B.call(E,"Failed loading '"+x+"', please verify that the file exists")}if(j.numPendingFiles+j.scriptsLoading===0){j.refreshQueue()}},A=function(){j.numPendingFiles--;j.scriptsLoading--;if(C){C.call(E)}if(j.numPendingFiles+j.scriptsLoading===0){j.refreshQueue()}},w;j.isLoading=true;j.numPendingFiles++;j.scriptsLoading++;w=z.disableCaching?(x+"?"+z.disableCachingParam+"="+Ext.Date.now()):x;n[x]=j.injectScriptElement(w,A,D)},loadScriptFile:function(x,E,C,H,w){if(s[x]){return j}var z=j.getConfig(),I=x+(z.disableCaching?("?"+z.disableCachingParam+"="+Ext.Date.now()):""),y=false,G,A,F,B="";H=H||j;j.isLoading=true;if(!w){F=function(){};n[x]=j.injectScriptElement(I,E,F,H)}else{if(typeof XMLHttpRequest!="undefined"){G=new XMLHttpRequest()}else{G=new ActiveXObject("Microsoft.XMLHTTP")}try{G.open("GET",I,false);G.send(null)}catch(D){y=true}A=(G.status===1223)?204:(G.status===0&&(self.location||{}).protocol=="file:")?200:G.status;y=y||(A===0);if(y){}else{if((A>=200&&A<300)||(A===304)){if(!Ext.isIE){B="\n//@ sourceURL="+x}Ext.globalEval(G.responseText+B);E.call(H)}else{}}G=null}},syncRequire:function(){var w=j.syncModeEnabled;if(!w){j.syncModeEnabled=true}j.require.apply(j,arguments);if(!w){j.syncModeEnabled=false}j.refreshQueue()},require:function(O,F,z,B){var H={},y={},E=[],Q=[],N=[],x=[],D,P,J,I,w,C,M,L,K,G,A;if(B){B=(typeof B==="string")?[B]:B;for(L=0,G=B.length;L<G;L++){w=B[L];if(typeof w=="string"&&w.length>0){E=b.getNamesByExpression(w);for(K=0,A=E.length;K<A;K++){H[E[K]]=true}}}}O=(typeof O==="string")?[O]:(O?O:[]);if(F){if(F.length>0){D=function(){var S=[],R,T;for(R=0,T=x.length;R<T;R++){S.push(b.get(x[R]))}return F.apply(this,S)}}else{D=F}}else{D=Ext.emptyFn}z=z||Ext.global;for(L=0,G=O.length;L<G;L++){I=O[L];if(typeof I=="string"&&I.length>0){Q=b.getNamesByExpression(I);A=Q.length;for(K=0;K<A;K++){M=Q[K];if(H[M]!==true){x.push(M);if(!b.isCreated(M)&&!y[M]){y[M]=true;N.push(M)}}}}}if(N.length>0){if(!j.config.enabled){throw new Error("Ext.Loader is not enabled, so dependencies cannot be resolved dynamically. Missing required class"+((N.length>1)?"es":"")+": "+N.join(", "))}}else{D.call(z);return j}P=j.syncModeEnabled;if(!P){o.push({requires:N.slice(),callback:D,scope:z})}G=N.length;for(L=0;L<G;L++){C=N[L];J=j.getPath(C);if(P&&p.hasOwnProperty(C)){j.numPendingFiles--;j.removeScriptElement(J);delete p[C]}if(!p.hasOwnProperty(C)){p[C]=false;q[C]=J;j.numPendingFiles++;j.loadScriptFile(J,a(j.onFileLoaded,[C,J],j),a(j.onFileLoadError,[C,J],j),j,P)}}if(P){D.call(z);if(G===1){return b.get(C)}}return j},onFileLoaded:function(x,w){j.numLoadedFiles++;p[x]=true;s[w]=true;j.numPendingFiles--;if(j.numPendingFiles===0){j.refreshQueue()}},onFileLoadError:function(y,x,w,z){j.numPendingFiles--;j.hasFileLoadError=true},addUsedClasses:function(y){var w,x,z;if(y){y=(typeof y=="string")?[y]:y;for(x=0,z=y.length;x<z;x++){w=y[x];if(typeof w=="string"&&!Ext.Array.contains(v,w)){v.push(w)}}}return j},triggerReady:function(){var x,w,y=v;if(j.isLoading){j.isLoading=false;if(y.length!==0){y=y.slice();v.length=0;j.require(y,j.triggerReady,j);return j}}while(u.length&&!j.isLoading){x=u.shift();x.fn.call(x.scope)}return j},onReady:function(z,y,A,w){var x;if(A!==false&&Ext.onDocumentReady){x=z;z=function(){Ext.onDocumentReady(x,y,w)}}if(!j.isLoading){z.call(y)}else{u.push({fn:z,scope:y})}},historyPush:function(w){if(w&&p.hasOwnProperty(w)&&!t[w]){t[w]=true;k.push(w)}return j}});Ext.disableCacheBuster=function(x,y){var w=new Date();w.setTime(w.getTime()+(x?10*365:-1)*24*60*60*1000);w=w.toGMTString();document.cookie="ext-cache=1; expires="+w+"; path="+(y||"/")};Ext.require=m(j,"require");Ext.syncRequire=m(j,"syncRequire");Ext.exclude=m(j,"exclude");Ext.onReady=function(y,x,w){j.onReady(y,x,true,w)};r.registerPreprocessor("loader",function(M,A,L,K){var H=this,F=[],w,G=b.getName(M),z,y,E,D,J,C,x,I,B;for(z=0,E=l.length;z<E;z++){C=l[z];if(A.hasOwnProperty(C)){x=A[C];if(typeof x=="string"){F.push(x)}else{if(x instanceof Array){for(y=0,D=x.length;y<D;y++){J=x[y];if(typeof J=="string"){F.push(J)}}}else{if(typeof x!="function"){for(y in x){if(x.hasOwnProperty(y)){J=x[y];if(typeof J=="string"){F.push(J)}}}}}}}}if(F.length===0){return}j.require(F,function(){for(z=0,E=l.length;z<E;z++){C=l[z];if(A.hasOwnProperty(C)){x=A[C];if(typeof x=="string"){A[C]=b.get(x)}else{if(x instanceof Array){for(y=0,D=x.length;y<D;y++){J=x[y];if(typeof J=="string"){A[C][y]=b.get(J)}}}else{if(typeof x!="function"){for(var N in x){if(x.hasOwnProperty(N)){J=x[N];if(typeof J=="string"){A[C][N]=b.get(J)}}}}}}}}K.call(H,M,A,L)});return false},true,"after","className");b.registerPostprocessor("uses",function(y,x,z){var w=z.uses;if(w){j.addUsedClasses(w)}});b.onCreated(j.historyPush)};if(Ext._classPathMetadata){Ext.Loader.addClassPathMappings(Ext._classPathMetadata);Ext._classPathMetadata=null}(function(){var a=document.getElementsByTagName("script"),b=a[a.length-1],d=b.src,c=d.substring(0,d.lastIndexOf("/")+1),e=Ext.Loader;e.setConfig({enabled:true,disableCaching:true,paths:{Ext:c+"src"}})})();Ext._endTime=new Date().getTime();if(Ext._beforereadyhandler){Ext._beforereadyhandler()}Ext.Error=Ext.extend(Error,{statics:{ignore:false,raise:function(a){a=a||{};if(Ext.isString(a)){a={msg:a}}var c=this.raise.caller,b;if(c){if(c.$name){a.sourceMethod=c.$name}if(c.$owner){a.sourceClass=c.$owner.$className}}if(Ext.Error.handle(a)!==true){b=Ext.Error.prototype.toString.call(a);Ext.log({msg:b,level:"error",dump:a,stack:true});throw new Ext.Error(a)}},handle:function(){return Ext.Error.ignore}},name:"Ext.Error",constructor:function(a){if(Ext.isString(a)){a={msg:a}}var b=this;Ext.apply(b,a);b.message=b.message||b.msg},toString:function(){var c=this,b=c.sourceClass?c.sourceClass:"",a=c.sourceMethod?"."+c.sourceMethod+"(): ":"",d=c.msg||"(No description provided)";return b+a+d}});Ext.deprecated=function(a){return Ext.emptyFn};Ext.JSON=(new (function(){var me=this,encodingFunction,decodingFunction,useNative=null,useHasOwn=!!{}.hasOwnProperty,isNative=function(){if(useNative===null){useNative=Ext.USE_NATIVE_JSON&&window.JSON&&JSON.toString()=="[object JSON]"}return useNative},pad=function(n){return n<10?"0"+n:n},doDecode=function(json){return eval("("+json+")")},doEncode=function(o,newline){if(o===null||o===undefined){return"null"}else{if(Ext.isDate(o)){return Ext.JSON.encodeDate(o)}else{if(Ext.isString(o)){return Ext.JSON.encodeString(o)}else{if(typeof o=="number"){return isFinite(o)?String(o):"null"}else{if(Ext.isBoolean(o)){return String(o)}else{if(o.toJSON){return o.toJSON()}else{if(Ext.isArray(o)){return encodeArray(o,newline)}else{if(Ext.isObject(o)){return encodeObject(o,newline)}else{if(typeof o==="function"){return"null"}}}}}}}}}return"undefined"},m={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\","\x0b":"\\u000b"},charToReplace=/[\\\"\x00-\x1f\x7f-\uffff]/g,encodeString=function(s){return'"'+s.replace(charToReplace,function(a){var c=m[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"'},encodeArray=function(o,newline){var a=["[",""],len=o.length,i;for(i=0;i<len;i+=1){a.push(Ext.JSON.encodeValue(o[i]),",")}a[a.length-1]="]";return a.join("")},encodeObject=function(o,newline){var a=["{",""],i;for(i in o){if(!useHasOwn||o.hasOwnProperty(i)){a.push(Ext.JSON.encodeValue(i),":",Ext.JSON.encodeValue(o[i]),",")}}a[a.length-1]="}";return a.join("")};me.encodeString=encodeString;me.encodeValue=doEncode;me.encodeDate=function(o){return'"'+o.getFullYear()+"-"+pad(o.getMonth()+1)+"-"+pad(o.getDate())+"T"+pad(o.getHours())+":"+pad(o.getMinutes())+":"+pad(o.getSeconds())+'"'};me.encode=function(o){if(!encodingFunction){encodingFunction=isNative()?JSON.stringify:me.encodeValue}return encodingFunction(o)};me.decode=function(json,safe){if(!decodingFunction){decodingFunction=isNative()?JSON.parse:doDecode}try{return decodingFunction(json)}catch(e){if(safe===true){return null}Ext.Error.raise({sourceClass:"Ext.JSON",sourceMethod:"decode",msg:"You're trying to decode an invalid JSON String: "+json})}}})());Ext.encode=Ext.JSON.encode;Ext.decode=Ext.JSON.decode;Ext.apply(Ext,{userAgent:navigator.userAgent.toLowerCase(),cache:{},idSeed:1000,windowId:"ext-window",documentId:"ext-document",isReady:false,enableGarbageCollector:true,enableListenerCollection:true,addCacheEntry:function(e,b,d){d=d||b.dom;var a=e||(b&&b.id)||d.id,c=Ext.cache[a]||(Ext.cache[a]={data:{},events:{},dom:d,skipGarbageCollection:!!(d.getElementById||d.navigator)});if(b){b.$cache=c;c.el=b}return c},updateCacheEntry:function(a,b){a.dom=b;if(a.el){a.el.dom=b}return a},id:function(a,c){var b=this,d="";a=Ext.getDom(a,true)||{};if(a===document){a.id=b.documentId}else{if(a===window){a.id=b.windowId}}if(!a.id){if(b.isSandboxed){d=Ext.sandboxName.toLowerCase()+"-"}a.id=d+(c||"ext-gen")+(++Ext.idSeed)}return a.id},escapeId:(function(){var c=/^[a-zA-Z_][a-zA-Z0-9_\-]*$/i,d=/([\W]{1})/g,b=/^(\d)/g,a=function(h,g){return"\\"+g},e=function(h,g){return"\\00"+g.charCodeAt(0).toString(16)+" "};return function(g){return c.test(g)?g:g.replace(d,a).replace(b,e)}}()),getBody:(function(){var a;return function(){return a||(a=Ext.get(document.body))}}()),getHead:(function(){var a;return function(){return a||(a=Ext.get(document.getElementsByTagName("head")[0]))}}()),getDoc:(function(){var a;return function(){return a||(a=Ext.get(document))}}()),getCmp:function(a){return Ext.ComponentManager.get(a)},getOrientation:function(){return window.innerHeight>window.innerWidth?"portrait":"landscape"},destroy:function(){var c=arguments.length,b,a;for(b=0;b<c;b++){a=arguments[b];if(a){if(Ext.isArray(a)){this.destroy.apply(this,a)}else{if(Ext.isFunction(a.destroy)){a.destroy()}else{if(a.dom){a.remove()}}}}}},callback:function(d,c,b,a){if(Ext.isFunction(d)){b=b||[];c=c||window;if(a){Ext.defer(d,a,c,b)}else{d.apply(c,b)}}},htmlEncode:function(a){return Ext.String.htmlEncode(a)},htmlDecode:function(a){return Ext.String.htmlDecode(a)},urlAppend:function(a,b){return Ext.String.urlAppend(a,b)}});Ext.ns=Ext.namespace;window.undefined=window.undefined;(function(){var o=function(e){return e.test(Ext.userAgent)},t=document.compatMode=="CSS1Compat",F=function(R,Q){var e;return(R&&(e=Q.exec(Ext.userAgent)))?parseFloat(e[1]):0},p=document.documentMode,a=o(/opera/),v=a&&o(/version\/10\.5/),K=o(/\bchrome\b/),z=o(/webkit/),c=!K&&o(/safari/),I=c&&o(/applewebkit\/4/),G=c&&o(/version\/3/),D=c&&o(/version\/4/),j=c&&o(/version\/5\.0/),C=c&&o(/version\/5/),i=!a&&o(/msie/),J=i&&((o(/msie 7/)&&p!=8&&p!=9)||p==7),H=i&&((o(/msie 8/)&&p!=7&&p!=9)||p==8),E=i&&((o(/msie 9/)&&p!=7&&p!=8)||p==9),M=i&&o(/msie 6/),b=!z&&o(/gecko/),P=b&&o(/rv:1\.9/),O=b&&o(/rv:2\.0/),N=b&&o(/rv:5\./),r=b&&o(/rv:10\./),y=P&&o(/rv:1\.9\.0/),w=P&&o(/rv:1\.9\.1/),u=P&&o(/rv:1\.9\.2/),g=o(/windows|win32/),B=o(/macintosh|mac os x/),x=o(/linux/),l=null,m=F(true,/\bchrome\/(\d+\.\d+)/),h=F(true,/\bfirefox\/(\d+\.\d+)/),n=F(i,/msie (\d+\.\d+)/),s=F(a,/version\/(\d+\.\d+)/),d=F(c,/version\/(\d+\.\d+)/),A=F(z,/webkit\/(\d+\.\d+)/),q=/^https/i.test(window.location.protocol),k;try{document.execCommand("BackgroundImageCache",false,true)}catch(L){}k=function(){};k.info=k.warn=k.error=Ext.emptyFn;Ext.setVersion("extjs","4.1.1.1");Ext.apply(Ext,{SSL_SECURE_URL:q&&i?"javascript:''":"about:blank",scopeResetCSS:Ext.buildSettings.scopeResetCSS,resetCls:Ext.buildSettings.baseCSSPrefix+"reset",enableNestedListenerRemoval:false,USE_NATIVE_JSON:false,getDom:function(R,Q){if(!R||!document){return null}if(R.dom){return R.dom}else{if(typeof R=="string"){var S=Ext.getElementById(R);if(S&&i&&Q){if(R==S.getAttribute("id")){return S}else{return null}}return S}else{return R}}},removeNode:M||J||H?(function(){var e;return function(S){if(S&&S.tagName.toUpperCase()!="BODY"){(Ext.enableNestedListenerRemoval)?Ext.EventManager.purgeElement(S):Ext.EventManager.removeAll(S);var Q=Ext.cache,R=S.id;if(Q[R]){delete Q[R].dom;delete Q[R]}if(H&&S.parentNode){S.parentNode.removeChild(S)}e=e||document.createElement("div");e.appendChild(S);e.innerHTML=""}}}()):function(R){if(R&&R.parentNode&&R.tagName.toUpperCase()!="BODY"){(Ext.enableNestedListenerRemoval)?Ext.EventManager.purgeElement(R):Ext.EventManager.removeAll(R);var e=Ext.cache,Q=R.id;if(e[Q]){delete e[Q].dom;delete e[Q]}R.parentNode.removeChild(R)}},isStrict:t,isIEQuirks:i&&!t,isOpera:a,isOpera10_5:v,isWebKit:z,isChrome:K,isSafari:c,isSafari3:G,isSafari4:D,isSafari5:C,isSafari5_0:j,isSafari2:I,isIE:i,isIE6:M,isIE7:J,isIE8:H,isIE9:E,isGecko:b,isGecko3:P,isGecko4:O,isGecko5:N,isGecko10:r,isFF3_0:y,isFF3_5:w,isFF3_6:u,isFF4:4<=h&&h<5,isFF5:5<=h&&h<6,isFF10:10<=h&&h<11,isLinux:x,isWindows:g,isMac:B,chromeVersion:m,firefoxVersion:h,ieVersion:n,operaVersion:s,safariVersion:d,webKitVersion:A,isSecure:q,BLANK_IMAGE_URL:(M||J)?"//www.sencha.com/s.gif":"data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==",value:function(R,e,Q){return Ext.isEmpty(R,Q)?e:R},escapeRe:function(e){return e.replace(/([-.*+?\^${}()|\[\]\/\\])/g,"\\$1")},addBehaviors:function(T){if(!Ext.isReady){Ext.onReady(function(){Ext.addBehaviors(T)})}else{var Q={},S,e,R;for(e in T){if((S=e.split("@"))[1]){R=S[0];if(!Q[R]){Q[R]=Ext.select(R)}Q[R].on(S[1],T[e])}}Q=null}},getScrollbarSize:function(Q){if(!Ext.isReady){return{}}if(Q||!l){var e=document.body,R=document.createElement("div");R.style.width=R.style.height="100px";R.style.overflow="scroll";R.style.position="absolute";e.appendChild(R);l={width:R.offsetWidth-R.clientWidth,height:R.offsetHeight-R.clientHeight};e.removeChild(R)}return l},getScrollBarWidth:function(Q){var e=Ext.getScrollbarSize(Q);return e.width+2},copyTo:function(Q,S,U,T){if(typeof U=="string"){U=U.split(/[,;\s]/)}var V,R=U.length,e;for(V=0;V<R;V++){e=U[V];if(T||S.hasOwnProperty(e)){Q[e]=S[e]}}return Q},destroyMembers:function(S){for(var R=1,Q=arguments,e=Q.length;R<e;R++){Ext.destroy(S[Q[R]]);delete S[Q[R]]}},log:k,partition:function(e,T){var U=[[],[]],Q,S,R=e.length;for(Q=0;Q<R;Q++){S=e[Q];U[(T&&T(S,Q,e))||(!T&&S)?0:1].push(S)}return U},invoke:function(e,T){var V=[],U=Array.prototype.slice.call(arguments,2),Q,S,R=e.length;for(Q=0;Q<R;Q++){S=e[Q];if(S&&typeof S[T]=="function"){V.push(S[T].apply(S,U))}else{V.push(undefined)}}return V},zip:function(){var W=Ext.partition(arguments,function(X){return typeof X!="function"}),T=W[0],V=W[1][0],e=Ext.max(Ext.pluck(T,"length")),S=[],U,R,Q;for(U=0;U<e;U++){S[U]=[];if(V){S[U]=V.apply(V,Ext.pluck(T,U))}else{for(R=0,Q=T.length;R<Q;R++){S[U].push(T[R][U])}}}return S},toSentence:function(Q,e){var T=Q.length,S,R;if(T<=1){return Q[0]}else{S=Q.slice(0,T-1);R=Q[T-1];return Ext.util.Format.format("{0} {1} {2}",S.join(", "),e||"and",R)}},useShims:M})}());Ext.application=function(a){Ext.require("Ext.app.Application");Ext.onReady(function(){new Ext.app.Application(a)})};(function(){Ext.ns("Ext.util");Ext.util.Format={};var g=Ext.util.Format,e=/<\/?[^>]+>/gi,c=/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,b=/\r?\n/g,d=/[^\d\.]/g,a;Ext.apply(g,{thousandSeparator:",",decimalSeparator:".",currencyPrecision:2,currencySign:"$",currencyAtEnd:false,undef:function(h){return h!==undefined?h:""},defaultValue:function(i,h){return i!==undefined&&i!==""?i:h},substr:"ab".substr(-1)!="b"?function(i,k,h){var j=String(i);return(k<0)?j.substr(Math.max(j.length+k,0),h):j.substr(k,h)}:function(i,j,h){return String(i).substr(j,h)},lowercase:function(h){return String(h).toLowerCase()},uppercase:function(h){return String(h).toUpperCase()},usMoney:function(h){return g.currency(h,"$",2)},currency:function(k,m,j,h){var o="",n=",0",l=0;k=k-0;if(k<0){k=-k;o="-"}j=Ext.isDefined(j)?j:g.currencyPrecision;n+=n+(j>0?".":"");for(;l<j;l++){n+="0"}k=g.number(k,n);if((h||g.currencyAtEnd)===true){return Ext.String.format("{0}{1}{2}",o,k,m||g.currencySign)}else{return Ext.String.format("{0}{1}{2}",o,m||g.currencySign,k)}},date:function(h,i){if(!h){return""}if(!Ext.isDate(h)){h=new Date(Date.parse(h))}return Ext.Date.dateFormat(h,i||Ext.Date.defaultFormat)},dateRenderer:function(h){return function(i){return g.date(i,h)}},stripTags:function(h){return !h?h:String(h).replace(e,"")},stripScripts:function(h){return !h?h:String(h).replace(c,"")},fileSize:function(h){if(h<1024){return h+" bytes"}else{if(h<1048576){return(Math.round(((h*10)/1024))/10)+" KB"}else{return(Math.round(((h*10)/1048576))/10)+" MB"}}},math:(function(){var h={};return function(j,i){if(!h[i]){h[i]=Ext.functionFactory("v","return v "+i+";")}return h[i](j)}}()),round:function(j,i){var h=Number(j);if(typeof i=="number"){i=Math.pow(10,i);h=Math.round(j*i)/i}return h},number:function(y,s){if(!s){return y}y=Ext.Number.from(y,NaN);if(isNaN(y)){return""}var A=g.thousandSeparator,q=g.decimalSeparator,z=false,r=y<0,k,h,x,w,p,t,o,l,u;y=Math.abs(y);if(s.substr(s.length-2)=="/i"){if(!a){a=new RegExp("[^\\d\\"+g.decimalSeparator+"]","g")}s=s.substr(0,s.length-2);z=true;k=s.indexOf(A)!=-1;h=s.replace(a,"").split(q)}else{k=s.indexOf(",")!=-1;h=s.replace(d,"").split(".")}if(h.length>2){}else{if(h.length>1){y=Ext.Number.toFixed(y,h[1].length)}else{y=Ext.Number.toFixed(y,0)}}x=y.toString();h=x.split(".");if(k){w=h[0];p=[];t=w.length;o=Math.floor(t/3);l=w.length%3||3;for(u=0;u<t;u+=l){if(u!==0){l=3}p[p.length]=w.substr(u,l);o-=1}x=p.join(A);if(h[1]){x+=q+h[1]}}else{if(h[1]){x=h[0]+q+h[1]}}if(r){r=x.replace(/[^1-9]/g,"")!==""}return(r?"-":"")+s.replace(/[\d,?\.?]+/,x)},numberRenderer:function(h){return function(i){return g.number(i,h)}},plural:function(h,i,j){return h+" "+(h==1?i:(j?j:i+"s"))},nl2br:function(h){return Ext.isEmpty(h)?"":h.replace(b,"<br/>")},capitalize:Ext.String.capitalize,ellipsis:Ext.String.ellipsis,format:Ext.String.format,htmlDecode:Ext.String.htmlDecode,htmlEncode:Ext.String.htmlEncode,leftPad:Ext.String.leftPad,trim:Ext.String.trim,parseBox:function(i){i=Ext.isEmpty(i)?"":i;if(Ext.isNumber(i)){i=i.toString()}var j=i.split(" "),h=j.length;if(h==1){j[1]=j[2]=j[3]=j[0]}else{if(h==2){j[2]=j[0];j[3]=j[1]}else{if(h==3){j[3]=j[1]}}}return{top:parseInt(j[0],10)||0,right:parseInt(j[1],10)||0,bottom:parseInt(j[2],10)||0,left:parseInt(j[3],10)||0}},escapeRegex:function(h){return h.replace(/([\-.*+?\^${}()|\[\]\/\\])/g,"\\$1")}})}());Ext.define("Ext.util.TaskRunner",{interval:10,timerId:null,constructor:function(a){var b=this;if(typeof a=="number"){b.interval=a}else{if(a){Ext.apply(b,a)}}b.tasks=[];b.timerFn=Ext.Function.bind(b.onTick,b)},newTask:function(b){var a=new Ext.util.TaskRunner.Task(b);a.manager=this;return a},start:function(a){var c=this,b=new Date().getTime();if(!a.pending){c.tasks.push(a);a.pending=true}a.stopped=false;a.taskStartTime=b;a.taskRunTime=a.fireOnStart!==false?0:a.taskStartTime;a.taskRunCount=0;if(!c.firing){if(a.fireOnStart!==false){c.startTimer(0,b)}else{c.startTimer(a.interval,b)}}return a},stop:function(a){if(!a.stopped){a.stopped=true;if(a.onStop){a.onStop.call(a.scope||a,a)}}return a},stopAll:function(){Ext.each(this.tasks,this.stop,this)},firing:false,nextExpires:1e+99,onTick:function(){var m=this,e=m.tasks,a=new Date().getTime(),n=1e+99,k=e.length,c,o,h,b,d,g;m.timerId=null;m.firing=true;for(h=0;h<k||h<(k=e.length);++h){b=e[h];if(!(g=b.stopped)){c=b.taskRunTime+b.interval;if(c<=a){d=1;try{d=b.run.apply(b.scope||b,b.args||[++b.taskRunCount])}catch(j){try{if(b.onError){d=b.onError.call(b.scope||b,b,j)}}catch(l){}}b.taskRunTime=a;if(d===false||b.taskRunCount===b.repeat){m.stop(b);g=true}else{g=b.stopped;c=a+b.interval}}if(!g&&b.duration&&b.duration<=(a-b.taskStartTime)){m.stop(b);g=true}}if(g){b.pending=false;if(!o){o=e.slice(0,h)}}else{if(o){o.push(b)}if(n>c){n=c}}}if(o){m.tasks=o}m.firing=false;if(m.tasks.length){m.startTimer(n-a,new Date().getTime())}},startTimer:function(e,c){var d=this,b=c+e,a=d.timerId;if(a&&d.nextExpires-b>d.interval){clearTimeout(a);a=null}if(!a){if(e<d.interval){e=d.interval}d.timerId=setTimeout(d.timerFn,e);d.nextExpires=b}}},function(){var b=this,a=b.prototype;a.destroy=a.stopAll;Ext.util.TaskManager=Ext.TaskManager=new b();b.Task=new Ext.Class({isTask:true,stopped:true,fireOnStart:false,constructor:function(c){Ext.apply(this,c)},restart:function(c){if(c!==undefined){this.interval=c}this.manager.start(this)},start:function(c){if(this.stopped){this.restart(c)}},stop:function(){this.manager.stop(this)}});a=b.Task.prototype;a.destroy=a.stop});Ext.define("Ext.perf.Accumulator",(function(){var c=null,h=Ext.global.chrome,d,b=function(){b=function(){return new Date().getTime()};var l,m;if(Ext.isChrome&&h&&h.Interval){l=new h.Interval();l.start();b=function(){return l.microseconds()/1000}}else{if(window.ActiveXObject){try{m=new ActiveXObject("SenchaToolbox.Toolbox");Ext.senchaToolbox=m;b=function(){return m.milliseconds}}catch(n){}}else{if(Date.now){b=Date.now}}}Ext.perf.getTimestamp=Ext.perf.Accumulator.getTimestamp=b;return b()};function i(m,l){m.sum+=l;m.min=Math.min(m.min,l);m.max=Math.max(m.max,l)}function e(o){var m=o?o:(b()-this.time),n=this,l=n.accum;++l.count;if(!--l.depth){i(l.total,m)}i(l.pure,m-n.childTime);c=n.parent;if(c){++c.accum.childCount;c.childTime+=m}}function a(){return{min:Number.MAX_VALUE,max:0,sum:0}}function j(m,l){return function(){var o=m.enter(),n=l.apply(this,arguments);o.leave();return n}}function k(l){return Math.round(l*100)/100}function g(n,m,l,p){var o={avg:0,min:p.min,max:p.max,sum:0};if(n){l=l||0;o.sum=p.sum-m*l;o.avg=o.sum/n}return o}return{constructor:function(l){var m=this;m.count=m.childCount=m.depth=m.maxDepth=0;m.pure=a();m.total=a();m.name=l},statics:{getTimestamp:b},format:function(l){if(!d){d=new Ext.XTemplate(["{name} - {count} call(s)",'<tpl if="count">','<tpl if="childCount">'," ({childCount} children)","</tpl>",'<tpl if="depth - 1">'," ({depth} deep)","</tpl>",'<tpl for="times">',", {type}: {[this.time(values.sum)]} msec (","avg={[this.time(values.sum / parent.count)]}",")","</tpl>","</tpl>"].join(""),{time:function(n){return Math.round(n*100)/100}})}var m=this.getData(l);m.name=this.name;m.pure.type="Pure";m.total.type="Total";m.times=[m.pure,m.total];return d.apply(m)},getData:function(l){var m=this;return{count:m.count,childCount:m.childCount,depth:m.maxDepth,pure:g(m.count,m.childCount,l,m.pure),total:g(m.count,m.childCount,l,m.total)}},enter:function(){var l=this,m={accum:l,leave:e,childTime:0,parent:c};++l.depth;if(l.maxDepth<l.depth){l.maxDepth=l.depth}c=m;m.time=b();return m},monitor:function(n,m,l){var o=this.enter();if(l){n.apply(m,l)}else{n.call(m)}o.leave()},report:function(){Ext.log(this.format())},tap:function(t,v){var u=this,o=typeof v=="string"?[v]:v,s,w,q,p,n,m,l,r;r=function(){if(typeof t=="string"){s=Ext.global;p=t.split(".");for(q=0,n=p.length;q<n;++q){s=s[p[q]]}}else{s=t}for(q=0,n=o.length;q<n;++q){m=o[q];w=m.charAt(0)=="!";if(w){m=m.substring(1)}else{w=!(m in s.prototype)}l=w?s:s.prototype;l[m]=j(u,l[m])}};Ext.ClassManager.onCreated(r,u,t);return u}}}()),function(){Ext.perf.getTimestamp=this.getTimestamp});Ext.define("Ext.perf.Monitor",{singleton:true,alternateClassName:"Ext.Perf",requires:["Ext.perf.Accumulator"],constructor:function(){this.accumulators=[];this.accumulatorsByName={}},calibrate:function(){var b=new Ext.perf.Accumulator("$"),g=b.total,c=Ext.perf.Accumulator.getTimestamp,e=0,h,a,d;d=c();do{h=b.enter();h.leave();++e}while(g.sum<100);a=c();return(a-d)/e},get:function(b){var c=this,a=c.accumulatorsByName[b];if(!a){c.accumulatorsByName[b]=a=new Ext.perf.Accumulator(b);c.accumulators.push(a)}return a},enter:function(a){return this.get(a).enter()},monitor:function(a,c,b){this.get(a).monitor(c,b)},report:function(){var c=this,b=c.accumulators,a=c.calibrate();b.sort(function(e,d){return(e.name<d.name)?-1:((d.name<e.name)?1:0)});c.updateGC();Ext.log("Calibration: "+Math.round(a*100)/100+" msec/sample");Ext.each(b,function(d){Ext.log(d.format(a))})},getData:function(c){var b={},a=this.accumulators;Ext.each(a,function(d){if(c||d.count){b[d.name]=d.getData()}});return b},reset:function(){Ext.each(this.accumulators,function(a){var b=a;b.count=b.childCount=b.depth=b.maxDepth=0;b.pure={min:Number.MAX_VALUE,max:0,sum:0};b.total={min:Number.MAX_VALUE,max:0,sum:0}})},updateGC:function(){var a=this.accumulatorsByName.GC,b=Ext.senchaToolbox,c;if(a){a.count=b.garbageCollectionCounter||0;if(a.count){c=a.pure;a.total.sum=c.sum=b.garbageCollectionMilliseconds;c.min=c.max=c.sum/a.count;c=a.total;c.min=c.max=c.sum/a.count}}},watchGC:function(){Ext.perf.getTimestamp();var a=Ext.senchaToolbox;if(a){this.get("GC");a.watchGarbageCollector(false)}},setup:function(c){if(!c){c={render:{"Ext.AbstractComponent":"render"},layout:{"Ext.layout.Context":"run"}}}this.currentConfig=c;var d,g,b,e,a;for(d in c){if(c.hasOwnProperty(d)){g=c[d];b=Ext.Perf.get(d);for(e in g){if(g.hasOwnProperty(e)){a=g[e];b.tap(e,a)}}}}this.watchGC()}});Ext.is={init:function(b){var c=this.platforms,e=c.length,d,a;b=b||window.navigator;for(d=0;d<e;d++){a=c[d];this[a.identity]=a.regex.test(b[a.property])}this.Desktop=this.Mac||this.Windows||(this.Linux&&!this.Android);this.Tablet=this.iPad;this.Phone=!this.Desktop&&!this.Tablet;this.iOS=this.iPhone||this.iPad||this.iPod;this.Standalone=!!window.navigator.standalone},platforms:[{property:"platform",regex:/iPhone/i,identity:"iPhone"},{property:"platform",regex:/iPod/i,identity:"iPod"},{property:"userAgent",regex:/iPad/i,identity:"iPad"},{property:"userAgent",regex:/Blackberry/i,identity:"Blackberry"},{property:"userAgent",regex:/Android/i,identity:"Android"},{property:"platform",regex:/Mac/i,identity:"Mac"},{property:"platform",regex:/Win/i,identity:"Windows"},{property:"platform",regex:/Linux/i,identity:"Linux"}]};Ext.is.init();(function(){var a=function(d,c){var b=d.ownerDocument.defaultView,e=(b?b.getComputedStyle(d,null):d.currentStyle)||d.style;return e[c]};Ext.supports={init:function(){var d=this,e=document,c=d.tests,i=c.length,h=i&&Ext.isReady&&e.createElement("div"),g,b=[];if(h){h.innerHTML=['<div style="height:30px;width:50px;">','<div style="height:20px;width:20px;"></div>',"</div>",'<div style="width: 200px; height: 200px; position: relative; padding: 5px;">','<div style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"></div>',"</div>",'<div style="position: absolute; left: 10%; top: 10%;"></div>','<div style="float:left; background-color:transparent;"></div>'].join("");e.body.appendChild(h)}while(i--){g=c[i];if(h||g.early){d[g.identity]=g.fn.call(d,e,h)}else{b.push(g)}}if(h){e.body.removeChild(h)}d.tests=b},PointerEvents:"pointerEvents" in document.documentElement.style,CSS3BoxShadow:"boxShadow" in document.documentElement.style||"WebkitBoxShadow" in document.documentElement.style||"MozBoxShadow" in document.documentElement.style,ClassList:!!document.documentElement.classList,OrientationChange:((typeof window.orientation!="undefined")&&("onorientationchange" in window)),DeviceMotion:("ondevicemotion" in window),Touch:("ontouchstart" in window)&&(!Ext.is.Desktop),TimeoutActualLateness:(function(){setTimeout(function(){Ext.supports.TimeoutActualLateness=arguments.length!==0},0)}()),tests:[{identity:"Transitions",fn:function(h,k){var g=["webkit","Moz","o","ms","khtml"],j="TransitionEnd",b=[g[0]+j,"transitionend",g[2]+j,g[3]+j,g[4]+j],e=g.length,d=0,c=false;for(;d<e;d++){if(a(k,g[d]+"TransitionProperty")){Ext.supports.CSS3Prefix=g[d];Ext.supports.CSS3TransitionEnd=b[d];c=true;break}}return c}},{identity:"RightMargin",fn:function(c,d){var b=c.defaultView;return !(b&&b.getComputedStyle(d.firstChild.firstChild,null).marginRight!="0px")}},{identity:"DisplayChangeInputSelectionBug",early:true,fn:function(){var b=Ext.webKitVersion;return 0<b&&b<533}},{identity:"DisplayChangeTextAreaSelectionBug",early:true,fn:function(){var b=Ext.webKitVersion;return 0<b&&b<534.24}},{identity:"TransparentColor",fn:function(c,d,b){b=c.defaultView;return !(b&&b.getComputedStyle(d.lastChild,null).backgroundColor!="transparent")}},{identity:"ComputedStyle",fn:function(c,d,b){b=c.defaultView;return b&&b.getComputedStyle}},{identity:"Svg",fn:function(b){return !!b.createElementNS&&!!b.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect}},{identity:"Canvas",fn:function(b){return !!b.createElement("canvas").getContext}},{identity:"Vml",fn:function(b){var c=b.createElement("div");c.innerHTML="<!--[if vml]><br/><br/><![endif]-->";return(c.childNodes.length==2)}},{identity:"Float",fn:function(b,c){return !!c.lastChild.style.cssFloat}},{identity:"AudioTag",fn:function(b){return !!b.createElement("audio").canPlayType}},{identity:"History",fn:function(){var b=window.history;return !!(b&&b.pushState)}},{identity:"CSS3DTransform",fn:function(){return(typeof WebKitCSSMatrix!="undefined"&&new WebKitCSSMatrix().hasOwnProperty("m41"))}},{identity:"CSS3LinearGradient",fn:function(h,j){var g="background-image:",d="-webkit-gradient(linear, left top, right bottom, from(black), to(white))",i="linear-gradient(left top, black, white)",e="-moz-"+i,b="-o-"+i,c=[g+d,g+i,g+e,g+b];j.style.cssText=c.join(";");return(""+j.style.backgroundImage).indexOf("gradient")!==-1}},{identity:"CSS3BorderRadius",fn:function(e,g){var c=["borderRadius","BorderRadius","MozBorderRadius","WebkitBorderRadius","OBorderRadius","KhtmlBorderRadius"],d=false,b;for(b=0;b<c.length;b++){if(document.body.style[c[b]]!==undefined){return true}}return d}},{identity:"GeoLocation",fn:function(){return(typeof navigator!="undefined"&&typeof navigator.geolocation!="undefined")||(typeof google!="undefined"&&typeof google.gears!="undefined")}},{identity:"MouseEnterLeave",fn:function(b,c){return("onmouseenter" in c&&"onmouseleave" in c)}},{identity:"MouseWheel",fn:function(b,c){return("onmousewheel" in c)}},{identity:"Opacity",fn:function(b,c){if(Ext.isIE6||Ext.isIE7||Ext.isIE8){return false}c.firstChild.style.cssText="opacity:0.73";return c.firstChild.style.opacity=="0.73"}},{identity:"Placeholder",fn:function(b){return"placeholder" in b.createElement("input")}},{identity:"Direct2DBug",fn:function(){return Ext.isString(document.body.style.msTransformOrigin)}},{identity:"BoundingClientRect",fn:function(b,c){return Ext.isFunction(c.getBoundingClientRect)}},{identity:"IncludePaddingInWidthCalculation",fn:function(b,c){return c.childNodes[1].firstChild.offsetWidth==210}},{identity:"IncludePaddingInHeightCalculation",fn:function(b,c){return c.childNodes[1].firstChild.offsetHeight==210}},{identity:"ArraySort",fn:function(){var b=[1,2,3,4,5].sort(function(){return 0});return b[0]===1&&b[1]===2&&b[2]===3&&b[3]===4&&b[4]===5}},{identity:"Range",fn:function(){return !!document.createRange}},{identity:"CreateContextualFragment",fn:function(){var b=Ext.supports.Range?document.createRange():false;return b&&!!b.createContextualFragment}},{identity:"WindowOnError",fn:function(){return Ext.isIE||Ext.isGecko||Ext.webKitVersion>=534.16}},{identity:"TextAreaMaxLength",fn:function(){var b=document.createElement("textarea");return("maxlength" in b)}},{identity:"GetPositionPercentage",fn:function(b,c){return a(c.childNodes[2],"left")=="10%"}}]}}());Ext.supports.init();Ext.util.DelayedTask=function(d,c,a){var e=this,g,b=function(){clearInterval(g);g=null;d.apply(c,a||[])};this.delay=function(i,k,j,h){e.cancel();d=k||d;c=j||c;a=h||a;g=setInterval(b,i)};this.cancel=function(){if(g){clearInterval(g);g=null}}};Ext.require("Ext.util.DelayedTask",function(){Ext.util.Event=Ext.extend(Object,(function(){var b={};function d(h,i,j,g){return function(){if(j.target===arguments[0]){h.apply(g,arguments)}}}function c(h,i,j,g){i.task=new Ext.util.DelayedTask();return function(){i.task.delay(j.buffer,h,g,Ext.Array.toArray(arguments))}}function a(h,i,j,g){return function(){var k=new Ext.util.DelayedTask();if(!i.tasks){i.tasks=[]}i.tasks.push(k);k.delay(j.delay||10,h,g,Ext.Array.toArray(arguments))}}function e(h,i,j,g){return function(){var k=i.ev;if(k.removeListener(i.fn,g)&&k.observable){k.observable.hasListeners[k.name]--}return h.apply(g,arguments)}}return{isEvent:true,constructor:function(h,g){this.name=g;this.observable=h;this.listeners=[]},addListener:function(i,h,g){var j=this,k;h=h||j.observable;if(!j.isListening(i,h)){k=j.createListener(i,h,g);if(j.firing){j.listeners=j.listeners.slice(0)}j.listeners.push(k)}},createListener:function(j,i,g){g=g||b;i=i||this.observable;var k={fn:j,scope:i,o:g,ev:this},h=j;if(g.single){h=e(h,k,g,i)}if(g.target){h=d(h,k,g,i)}if(g.delay){h=a(h,k,g,i)}if(g.buffer){h=c(h,k,g,i)}k.fireFn=h;return k},findListener:function(l,k){var j=this.listeners,g=j.length,m,h;while(g--){m=j[g];if(m){h=m.scope;if(m.fn==l&&(h==(k||this.observable))){return g}}}return -1},isListening:function(h,g){return this.findListener(h,g)!==-1},removeListener:function(j,i){var l=this,h,m,g;h=l.findListener(j,i);if(h!=-1){m=l.listeners[h];if(l.firing){l.listeners=l.listeners.slice(0)}if(m.task){m.task.cancel();delete m.task}g=m.tasks&&m.tasks.length;if(g){while(g--){m.tasks[g].cancel()}delete m.tasks}Ext.Array.erase(l.listeners,h,1);return true}return false},clearListeners:function(){var h=this.listeners,g=h.length;while(g--){this.removeListener(h[g].fn,h[g].scope)}},fire:function(){var l=this,j=l.listeners,k=j.length,h,g,m;if(k>0){l.firing=true;for(h=0;h<k;h++){m=j[h];g=arguments.length?Array.prototype.slice.call(arguments,0):[];if(m.o){g.push(m.o)}if(m&&m.fireFn.apply(m.scope||l.observable,g)===false){return(l.firing=false)}}}l.firing=false;return true}}}()))});Ext.EventManager=new function(){var a=this,d=document,c=window,b=function(){var k=d.body||d.getElementsByTagName("body")[0],i=Ext.baseCSSPrefix,o=[i+"body"],g=[],m=Ext.supports.CSS3LinearGradient,l=Ext.supports.CSS3BorderRadius,h=[],j,e;if(!k){return false}j=k.parentNode;function n(p){o.push(i+p)}if(Ext.isIE){n("ie");if(Ext.isIE6){n("ie6")}else{n("ie7p");if(Ext.isIE7){n("ie7")}else{n("ie8p");if(Ext.isIE8){n("ie8")}else{n("ie9p");if(Ext.isIE9){n("ie9")}}}}if(Ext.isIE6||Ext.isIE7){n("ie7m")}if(Ext.isIE6||Ext.isIE7||Ext.isIE8){n("ie8m")}if(Ext.isIE7||Ext.isIE8){n("ie78")}}if(Ext.isGecko){n("gecko");if(Ext.isGecko3){n("gecko3")}if(Ext.isGecko4){n("gecko4")}if(Ext.isGecko5){n("gecko5")}}if(Ext.isOpera){n("opera")}if(Ext.isWebKit){n("webkit")}if(Ext.isSafari){n("safari");if(Ext.isSafari2){n("safari2")}if(Ext.isSafari3){n("safari3")}if(Ext.isSafari4){n("safari4")}if(Ext.isSafari5){n("safari5")}if(Ext.isSafari5_0){n("safari5_0")}}if(Ext.isChrome){n("chrome")}if(Ext.isMac){n("mac")}if(Ext.isLinux){n("linux")}if(!l){n("nbr")}if(!m){n("nlg")}if(Ext.scopeResetCSS){e=Ext.resetElementSpec={cls:i+"reset"};if(!m){h.push(i+"nlg")}if(!l){h.push(i+"nbr")}if(h.length){e.cn={cls:h.join(" ")}}Ext.resetElement=Ext.getBody().createChild(e);if(h.length){Ext.resetElement=Ext.get(Ext.resetElement.dom.firstChild)}}else{Ext.resetElement=Ext.getBody();n("reset")}if(j){if(Ext.isStrict&&(Ext.isIE6||Ext.isIE7)){Ext.isBorderBox=false}else{Ext.isBorderBox=true}if(Ext.isBorderBox){g.push(i+"border-box")}if(Ext.isStrict){g.push(i+"strict")}else{g.push(i+"quirks")}Ext.fly(j,"_internal").addCls(g)}Ext.fly(k,"_internal").addCls(o);return true};Ext.apply(a,{hasBoundOnReady:false,hasFiredReady:false,deferReadyEvent:1,onReadyChain:[],readyEvent:(function(){var e=new Ext.util.Event();e.fire=function(){Ext._beforeReadyTime=Ext._beforeReadyTime||new Date().getTime();e.self.prototype.fire.apply(e,arguments);Ext._afterReadytime=new Date().getTime()};return e}()),idleEvent:new Ext.util.Event(),isReadyPaused:function(){return(/[?&]ext-pauseReadyFire\b/i.test(location.search)&&!Ext._continueFireReady)},bindReadyEvent:function(){if(a.hasBoundOnReady){return}if(d.readyState=="complete"){a.onReadyEvent({type:d.readyState||"body"})}else{document.addEventListener("DOMContentLoaded",a.onReadyEvent,false);window.addEventListener("load",a.onReadyEvent,false);a.hasBoundOnReady=true}},onReadyEvent:function(g){if(g&&g.type){a.onReadyChain.push(g.type)}if(a.hasBoundOnReady){document.removeEventListener("DOMContentLoaded",a.onReadyEvent,false);window.removeEventListener("load",a.onReadyEvent,false)}if(!Ext.isReady){a.fireDocReady()}},fireDocReady:function(){if(!Ext.isReady){Ext._readyTime=new Date().getTime();Ext.isReady=true;Ext.supports.init();a.onWindowUnload();a.readyEvent.onReadyChain=a.onReadyChain;if(Ext.isNumber(a.deferReadyEvent)){Ext.Function.defer(a.fireReadyEvent,a.deferReadyEvent);a.hasDocReadyTimer=true}else{a.fireReadyEvent()}}},fireReadyEvent:function(){var e=a.readyEvent;a.hasDocReadyTimer=false;a.isFiring=true;while(e.listeners.length&&!a.isReadyPaused()){e.fire()}a.isFiring=false;a.hasFiredReady=true},onDocumentReady:function(h,g,e){e=e||{};e.single=true;a.readyEvent.addListener(h,g,e);if(!(a.isFiring||a.hasDocReadyTimer)){if(Ext.isReady){a.fireReadyEvent()}else{a.bindReadyEvent()}}},stoppedMouseDownEvent:new Ext.util.Event(),propRe:/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate|freezeEvent)$/,getId:function(e){var g;e=Ext.getDom(e);if(e===d||e===c){g=e===d?Ext.documentId:Ext.windowId}else{g=Ext.id(e)}if(!Ext.cache[g]){Ext.addCacheEntry(g,null,e)}return g},prepareListenerConfig:function(i,g,k){var l=a.propRe,h,j,e;for(h in g){if(g.hasOwnProperty(h)){if(!l.test(h)){j=g[h];if(typeof j=="function"){e=[i,h,j,g.scope,g]}else{e=[i,h,j.fn,j.scope,j]}if(k){a.removeListener.apply(a,e)}else{a.addListener.apply(a,e)}}}}},mouseEnterLeaveRe:/mouseenter|mouseleave/,normalizeEvent:function(e,g){if(a.mouseEnterLeaveRe.test(e)&&!Ext.supports.MouseEnterLeave){if(g){g=Ext.Function.createInterceptor(g,a.contains)}e=e=="mouseenter"?"mouseover":"mouseout"}else{if(e=="mousewheel"&&!Ext.supports.MouseWheel&&!Ext.isOpera){e="DOMMouseScroll"}}return{eventName:e,fn:g}},contains:function(g){var e=g.browserEvent.currentTarget,h=a.getRelatedTarget(g);if(e&&e.firstChild){while(h){if(h===e){return false}h=h.parentNode;if(h&&(h.nodeType!=1)){h=null}}}return true},addListener:function(h,e,k,j,g){if(typeof e!=="string"){a.prepareListenerConfig(h,e);return}var l=h.dom||Ext.getDom(h),m,i;g=g||{};m=a.normalizeEvent(e,k);i=a.createListenerWrap(l,e,m.fn,j,g);if(l.attachEvent){l.attachEvent("on"+m.eventName,i)}else{l.addEventListener(m.eventName,i,g.capture||false)}if(l==d&&e=="mousedown"){a.stoppedMouseDownEvent.addListener(i)}a.getEventListenerCache(h.dom?h:l,e).push({fn:k,wrap:i,scope:j})},removeListener:function(p,q,r,t){if(typeof q!=="string"){a.prepareListenerConfig(p,q,true);return}var n=Ext.getDom(p),h=p.dom?p:Ext.get(n),e=a.getEventListenerCache(h,q),s=a.normalizeEvent(q).eventName,o=e.length,m,k,g,l;while(o--){k=e[o];if(k&&(!r||k.fn==r)&&(!t||k.scope===t)){g=k.wrap;if(g.task){clearTimeout(g.task);delete g.task}m=g.tasks&&g.tasks.length;if(m){while(m--){clearTimeout(g.tasks[m])}delete g.tasks}if(n.detachEvent){n.detachEvent("on"+s,g)}else{n.removeEventListener(s,g,false)}if(g&&n==d&&q=="mousedown"){a.stoppedMouseDownEvent.removeListener(g)}Ext.Array.erase(e,o,1)}}},removeAll:function(i){var j=i.dom?i:Ext.get(i),g,h,e;if(!j){return}g=(j.$cache||j.getCache());h=g.events;for(e in h){if(h.hasOwnProperty(e)){a.removeListener(j,e)}}g.events={}},purgeElement:function(j,g){var k=Ext.getDom(j),h=0,e;if(g){a.removeListener(j,g)}else{a.removeAll(j)}if(k&&k.childNodes){for(e=j.childNodes.length;h<e;h++){a.purgeElement(j.childNodes[h],g)}}},createListenerWrap:function(i,h,l,m,n){n=n||{};var k,j,e=/\\/g,g=function(p,o){if(!j){k=["if(!"+Ext.name+") {return;}"];if(n.buffer||n.delay||n.freezeEvent){k.push("e = new X.EventObjectImpl(e, "+(n.freezeEvent?"true":"false")+");")}else{k.push("e = X.EventObject.setEvent(e);")}if(n.delegate){k.push('var result, t = e.getTarget("'+(n.delegate+"").replace(e,"\\\\")+'", this);');k.push("if(!t) {return;}")}else{k.push("var t = e.target, result;")}if(n.target){k.push("if(e.target !== options.target) {return;}")}if(n.stopEvent){k.push("e.stopEvent();")}else{if(n.preventDefault){k.push("e.preventDefault();")}if(n.stopPropagation){k.push("e.stopPropagation();")}}if(n.normalized===false){k.push("e = e.browserEvent;")}if(n.buffer){k.push("(wrap.task && clearTimeout(wrap.task));");k.push("wrap.task = setTimeout(function() {")}if(n.delay){k.push("wrap.tasks = wrap.tasks || [];");k.push("wrap.tasks.push(setTimeout(function() {")}k.push("result = fn.call(scope || dom, e, t, options);");if(n.single){k.push("evtMgr.removeListener(dom, ename, fn, scope);")}if(h!=="mousemove"){k.push("if (evtMgr.idleEvent.listeners.length) {");k.push("evtMgr.idleEvent.fire();");k.push("}")}if(n.delay){k.push("}, "+n.delay+"));")}if(n.buffer){k.push("}, "+n.buffer+");")}k.push("return result;");j=Ext.cacheableFunctionFactory("e","options","fn","scope","ename","dom","wrap","args","X","evtMgr",k.join("\n"))}return j.call(i,p,n,l,m,h,i,g,o,Ext,a)};return g},getEventListenerCache:function(i,e){var h,g;if(!i){return[]}if(i.$cache){h=i.$cache}else{h=Ext.cache[a.getId(i)]}g=h.events||(h.events={});return g[e]||(g[e]=[])},mouseLeaveRe:/(mouseout|mouseleave)/,mouseEnterRe:/(mouseover|mouseenter)/,stopEvent:function(e){a.stopPropagation(e);a.preventDefault(e)},stopPropagation:function(e){e=e.browserEvent||e;if(e.stopPropagation){e.stopPropagation()}else{e.cancelBubble=true}},preventDefault:function(g){g=g.browserEvent||g;if(g.preventDefault){g.preventDefault()}else{g.returnValue=false;try{if(g.ctrlKey||g.keyCode>111&&g.keyCode<124){g.keyCode=-1}}catch(h){}}},getRelatedTarget:function(e){e=e.browserEvent||e;var g=e.relatedTarget;if(!g){if(a.mouseLeaveRe.test(e.type)){g=e.toElement}else{if(a.mouseEnterRe.test(e.type)){g=e.fromElement}}}return a.resolveTextNode(g)},getPageX:function(e){return a.getPageXY(e)[0]},getPageY:function(e){return a.getPageXY(e)[1]},getPageXY:function(h){h=h.browserEvent||h;var g=h.pageX,j=h.pageY,i=d.documentElement,e=d.body;if(!g&&g!==0){g=h.clientX+(i&&i.scrollLeft||e&&e.scrollLeft||0)-(i&&i.clientLeft||e&&e.clientLeft||0);j=h.clientY+(i&&i.scrollTop||e&&e.scrollTop||0)-(i&&i.clientTop||e&&e.clientTop||0)}return[g,j]},getTarget:function(e){e=e.browserEvent||e;return a.resolveTextNode(e.target||e.srcElement)},resolveTextNode:Ext.isGecko?function(g){if(!g){return}var e=HTMLElement.prototype.toString.call(g);if(e=="[xpconnect wrapped native prototype]"||e=="[object XULElement]"){return}return g.nodeType==3?g.parentNode:g}:function(e){return e&&e.nodeType==3?e.parentNode:e},curWidth:0,curHeight:0,onWindowResize:function(i,h,g){var e=a.resizeEvent;if(!e){a.resizeEvent=e=new Ext.util.Event();a.on(c,"resize",a.fireResize,null,{buffer:100})}e.addListener(i,h,g)},fireResize:function(){var e=Ext.Element.getViewWidth(),g=Ext.Element.getViewHeight();if(a.curHeight!=g||a.curWidth!=e){a.curHeight=g;a.curWidth=e;a.resizeEvent.fire(e,g)}},removeResizeListener:function(h,g){var e=a.resizeEvent;if(e){e.removeListener(h,g)}},onWindowUnload:function(i,h,g){var e=a.unloadEvent;if(!e){a.unloadEvent=e=new Ext.util.Event();a.addListener(c,"unload",a.fireUnload)}if(i){e.addListener(i,h,g)}},fireUnload:function(){try{d=c=undefined;var m,h,k,j,g;a.unloadEvent.fire();if(Ext.isGecko3){m=Ext.ComponentQuery.query("gridview");h=0;k=m.length;for(;h<k;h++){m[h].scrollToTop()}}g=Ext.cache;for(j in g){if(g.hasOwnProperty(j)){a.removeAll(j)}}}catch(l){}},removeUnloadListener:function(h,g){var e=a.unloadEvent;if(e){e.removeListener(h,g)}},useKeyDown:Ext.isWebKit?parseInt(navigator.userAgent.match(/AppleWebKit\/(\d+)/)[1],10)>=525:!((Ext.isGecko&&!Ext.isWindows)||Ext.isOpera),getKeyEvent:function(){return a.useKeyDown?"keydown":"keypress"}});if(!("addEventListener" in document)&&document.attachEvent){Ext.apply(a,{pollScroll:function(){var g=true;try{document.documentElement.doScroll("left")}catch(h){g=false}if(g&&document.body){a.onReadyEvent({type:"doScroll"})}else{a.scrollTimeout=setTimeout(a.pollScroll,20)}return g},scrollTimeout:null,readyStatesRe:/complete/i,checkReadyState:function(){var e=document.readyState;if(a.readyStatesRe.test(e)){a.onReadyEvent({type:e})}},bindReadyEvent:function(){var g=true;if(a.hasBoundOnReady){return}try{g=window.frameElement===undefined}catch(h){g=false}if(!g||!d.documentElement.doScroll){a.pollScroll=Ext.emptyFn}if(a.pollScroll()===true){return}if(d.readyState=="complete"){a.onReadyEvent({type:"already "+(d.readyState||"body")})}else{d.attachEvent("onreadystatechange",a.checkReadyState);window.attachEvent("onload",a.onReadyEvent);a.hasBoundOnReady=true}},onReadyEvent:function(g){if(g&&g.type){a.onReadyChain.push(g.type)}if(a.hasBoundOnReady){document.detachEvent("onreadystatechange",a.checkReadyState);window.detachEvent("onload",a.onReadyEvent)}if(Ext.isNumber(a.scrollTimeout)){clearTimeout(a.scrollTimeout);delete a.scrollTimeout}if(!Ext.isReady){a.fireDocReady()}},onReadyChain:[]})}Ext.onReady=function(h,g,e){Ext.Loader.onReady(h,g,true,e)};Ext.onDocumentReady=a.onDocumentReady;a.on=a.addListener;a.un=a.removeListener;Ext.onReady(b)};Ext.define("Ext.EventObjectImpl",{uses:["Ext.util.Point"],BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,RETURN:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,WHEEL_SCALE:(function(){var a;if(Ext.isGecko){a=3}else{if(Ext.isMac){if(Ext.isSafari&&Ext.webKitVersion>=532){a=120}else{a=12}a*=3}else{a=120}}return a}()),clickRe:/(dbl)?click/,safariKeys:{3:13,63234:37,63235:39,63232:38,63233:40,63276:33,63277:34,63272:46,63273:36,63275:35},btnMap:Ext.isIE?{1:0,4:1,2:2}:{0:0,1:1,2:2},constructor:function(a,b){if(a){this.setEvent(a.browserEvent||a,b)}},setEvent:function(d,e){var c=this,b,a;if(d==c||(d&&d.browserEvent)){return d}c.browserEvent=d;if(d){b=d.button?c.btnMap[d.button]:(d.which?d.which-1:-1);if(c.clickRe.test(d.type)&&b==-1){b=0}a={type:d.type,button:b,shiftKey:d.shiftKey,ctrlKey:d.ctrlKey||d.metaKey||false,altKey:d.altKey,keyCode:d.keyCode,charCode:d.charCode,target:Ext.EventManager.getTarget(d),relatedTarget:Ext.EventManager.getRelatedTarget(d),currentTarget:d.currentTarget,xy:(e?c.getXY():null)}}else{a={button:-1,shiftKey:false,ctrlKey:false,altKey:false,keyCode:0,charCode:0,target:null,xy:[0,0]}}Ext.apply(c,a);return c},stopEvent:function(){this.stopPropagation();this.preventDefault()},preventDefault:function(){if(this.browserEvent){Ext.EventManager.preventDefault(this.browserEvent)}},stopPropagation:function(){var a=this.browserEvent;if(a){if(a.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(this)}Ext.EventManager.stopPropagation(a)}},getCharCode:function(){return this.charCode||this.keyCode},getKey:function(){return this.normalizeKey(this.keyCode||this.charCode)},normalizeKey:function(a){return Ext.isWebKit?(this.safariKeys[a]||a):a},getPageX:function(){return this.getX()},getPageY:function(){return this.getY()},getX:function(){return this.getXY()[0]},getY:function(){return this.getXY()[1]},getXY:function(){if(!this.xy){this.xy=Ext.EventManager.getPageXY(this.browserEvent)}return this.xy},getTarget:function(b,c,a){if(b){return Ext.fly(this.target).findParent(b,c,a)}return a?Ext.get(this.target):this.target},getRelatedTarget:function(b,c,a){if(b){return Ext.fly(this.relatedTarget).findParent(b,c,a)}return a?Ext.get(this.relatedTarget):this.relatedTarget},correctWheelDelta:function(c){var b=this.WHEEL_SCALE,a=Math.round(c/b);if(!a&&c){a=(c<0)?-1:1}return a},getWheelDeltas:function(){var d=this,c=d.browserEvent,b=0,a=0;if(Ext.isDefined(c.wheelDeltaX)){b=c.wheelDeltaX;a=c.wheelDeltaY}else{if(c.wheelDelta){a=c.wheelDelta}else{if(c.detail){a=-c.detail;if(a>100){a=3}else{if(a<-100){a=-3}}if(Ext.isDefined(c.axis)&&c.axis===c.HORIZONTAL_AXIS){b=a;a=0}}}}return{x:d.correctWheelDelta(b),y:d.correctWheelDelta(a)}},getWheelDelta:function(){var a=this.getWheelDeltas();return a.y},within:function(d,e,b){if(d){var c=e?this.getRelatedTarget():this.getTarget(),a;if(c){a=Ext.fly(d).contains(c);if(!a&&b){a=c==Ext.getDom(d)}return a}}return false},isNavKeyPress:function(){var b=this,a=this.normalizeKey(b.keyCode);return(a>=33&&a<=40)||a==b.RETURN||a==b.TAB||a==b.ESC},isSpecialKey:function(){var a=this.normalizeKey(this.keyCode);return(this.type=="keypress"&&this.ctrlKey)||this.isNavKeyPress()||(a==this.BACKSPACE)||(a>=16&&a<=20)||(a>=44&&a<=46)},getPoint:function(){var a=this.getXY();return new Ext.util.Point(a[0],a[1])},hasModifier:function(){return this.ctrlKey||this.altKey||this.shiftKey||this.metaKey},injectEvent:(function(){var d,e={},c;if(!Ext.isIE&&document.createEvent){d={createHtmlEvent:function(k,i,h,g){var j=k.createEvent("HTMLEvents");j.initEvent(i,h,g);return j},createMouseEvent:function(u,s,m,l,o,k,i,j,g,r,q,n,p){var h=u.createEvent("MouseEvents"),t=u.defaultView||window;if(h.initMouseEvent){h.initMouseEvent(s,m,l,t,o,k,i,k,i,j,g,r,q,n,p)}else{h=u.createEvent("UIEvents");h.initEvent(s,m,l);h.view=t;h.detail=o;h.screenX=k;h.screenY=i;h.clientX=k;h.clientY=i;h.ctrlKey=j;h.altKey=g;h.metaKey=q;h.shiftKey=r;h.button=n;h.relatedTarget=p}return h},createUIEvent:function(m,k,i,h,j){var l=m.createEvent("UIEvents"),g=m.defaultView||window;l.initUIEvent(k,i,h,g,j);return l},fireEvent:function(i,g,h){i.dispatchEvent(h)},fixTarget:function(g){if(g==window&&!g.dispatchEvent){return document}return g}}}else{if(document.createEventObject){c={0:1,1:4,2:2};d={createHtmlEvent:function(k,i,h,g){var j=k.createEventObject();j.bubbles=h;j.cancelable=g;return j},createMouseEvent:function(t,s,m,l,o,k,i,j,g,r,q,n,p){var h=t.createEventObject();h.bubbles=m;h.cancelable=l;h.detail=o;h.screenX=k;h.screenY=i;h.clientX=k;h.clientY=i;h.ctrlKey=j;h.altKey=g;h.shiftKey=r;h.metaKey=q;h.button=c[n]||n;h.relatedTarget=p;return h},createUIEvent:function(l,j,h,g,i){var k=l.createEventObject();k.bubbles=h;k.cancelable=g;return k},fireEvent:function(i,g,h){i.fireEvent("on"+g,h)},fixTarget:function(g){if(g==document){return document.documentElement}return g}}}}Ext.Object.each({load:[false,false],unload:[false,false],select:[true,false],change:[true,false],submit:[true,true],reset:[true,false],resize:[true,false],scroll:[true,false]},function(i,j){var h=j[0],g=j[1];e[i]=function(m,k){var l=d.createHtmlEvent(i,h,g);d.fireEvent(m,i,l)}});function b(i,h){var g=(i!="mousemove");return function(m,j){var l=j.getXY(),k=d.createMouseEvent(m.ownerDocument,i,true,g,h,l[0],l[1],j.ctrlKey,j.altKey,j.shiftKey,j.metaKey,j.button,j.relatedTarget);d.fireEvent(m,i,k)}}Ext.each(["click","dblclick","mousedown","mouseup","mouseover","mousemove","mouseout"],function(g){e[g]=b(g,1)});Ext.Object.each({focusin:[true,false],focusout:[true,false],activate:[true,true],focus:[false,false],blur:[false,false]},function(i,j){var h=j[0],g=j[1];e[i]=function(m,k){var l=d.createUIEvent(m.ownerDocument,i,h,g,1);d.fireEvent(m,i,l)}});if(!d){e={};d={fixTarget:function(g){return g}}}function a(h,g){}return function(j){var i=this,h=e[i.type]||a,g=j?(j.dom||j):i.getTarget();g=d.fixTarget(g);h(g,i)}}())},function(){Ext.EventObject=new Ext.EventObjectImpl()});Ext.define("Ext.dom.AbstractQuery",{select:function(k,b){var h=[],d,g,e,c,a;b=b||document;if(typeof b=="string"){b=document.getElementById(b)}k=k.split(",");for(g=0,c=k.length;g<c;g++){if(typeof k[g]=="string"){if(typeof k[g][0]=="@"){d=b.getAttributeNode(k[g].substring(1));h.push(d)}else{d=b.querySelectorAll(k[g]);for(e=0,a=d.length;e<a;e++){h.push(d[e])}}}}return h},selectNode:function(b,a){return this.select(b,a)[0]},is:function(a,b){if(typeof a=="string"){a=document.getElementById(a)}return this.select(b).indexOf(a)!==-1}});Ext.define("Ext.dom.AbstractHelper",{emptyTags:/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i,confRe:/(?:tag|children|cn|html|tpl|tplData)$/i,endRe:/end/i,attributeTransform:{cls:"class",htmlFor:"for"},closeTags:{},decamelizeName:(function(){var c=/([a-z])([A-Z])/g,b={};function a(d,g,e){return g+"-"+e.toLowerCase()}return function(d){return b[d]||(b[d]=d.replace(c,a))}}()),generateMarkup:function(d,c){var h=this,b,j,a,e,g;if(typeof d=="string"){c.push(d)}else{if(Ext.isArray(d)){for(e=0;e<d.length;e++){if(d[e]){h.generateMarkup(d[e],c)}}}else{a=d.tag||"div";c.push("<",a);for(b in d){if(d.hasOwnProperty(b)){j=d[b];if(!h.confRe.test(b)){if(typeof j=="object"){c.push(" ",b,'="');h.generateStyles(j,c).push('"')}else{c.push(" ",h.attributeTransform[b]||b,'="',j,'"')}}}}if(h.emptyTags.test(a)){c.push("/>")}else{c.push(">");if((j=d.tpl)){j.applyOut(d.tplData,c)}if((j=d.html)){c.push(j)}if((j=d.cn||d.children)){h.generateMarkup(j,c)}g=h.closeTags;c.push(g[a]||(g[a]="</"+a+">"))}}}return c},generateStyles:function(e,c){var b=c||[],d;for(d in e){if(e.hasOwnProperty(d)){b.push(this.decamelizeName(d),":",e[d],";")}}return c||b.join("")},markup:function(a){if(typeof a=="string"){return a}var b=this.generateMarkup(a,[]);return b.join("")},applyStyles:function(d,e){if(e){var b=0,a,c;d=Ext.fly(d);if(typeof e=="function"){e=e.call()}if(typeof e=="string"){e=Ext.util.Format.trim(e).split(/\s*(?::|;)\s*/);for(a=e.length;b<a;){d.setStyle(e[b++],e[b++])}}else{if(Ext.isObject(e)){d.setStyle(e)}}}},insertHtml:function(g,a,h){var e={},c,j,i,k,d,b;g=g.toLowerCase();e.beforebegin=["BeforeBegin","previousSibling"];e.afterend=["AfterEnd","nextSibling"];i=a.ownerDocument.createRange();j="setStart"+(this.endRe.test(g)?"After":"Before");if(e[g]){i[j](a);k=i.createContextualFragment(h);a.parentNode.insertBefore(k,g=="beforebegin"?a:a.nextSibling);return a[(g=="beforebegin"?"previous":"next")+"Sibling"]}else{d=(g=="afterbegin"?"first":"last")+"Child";if(a.firstChild){i[j](a[d]);k=i.createContextualFragment(h);if(g=="afterbegin"){a.insertBefore(k,a.firstChild)}else{a.appendChild(k)}}else{a.innerHTML=h}return a[d]}throw'Illegal insertion point -> "'+g+'"'},insertBefore:function(a,c,b){return this.doInsert(a,c,b,"beforebegin")},insertAfter:function(a,c,b){return this.doInsert(a,c,b,"afterend","nextSibling")},insertFirst:function(a,c,b){return this.doInsert(a,c,b,"afterbegin","firstChild")},append:function(a,c,b){return this.doInsert(a,c,b,"beforeend","",true)},overwrite:function(a,c,b){a=Ext.getDom(a);a.innerHTML=this.markup(c);return b?Ext.get(a.firstChild):a.firstChild},doInsert:function(d,g,e,h,c,a){var b=this.insertHtml(h,Ext.getDom(d),this.markup(g));return e?Ext.get(b,true):b}});(function(){var a=window.document,b=/^\s+|\s+$/g,c=/\s/;if(!Ext.cache){Ext.cache={}}Ext.define("Ext.dom.AbstractElement",{inheritableStatics:{get:function(e){var g=this,h=Ext.dom.Element,d,j,i,k;if(!e){return null}if(typeof e=="string"){if(e==Ext.windowId){return h.get(window)}else{if(e==Ext.documentId){return h.get(a)}}d=Ext.cache[e];if(d&&d.skipGarbageCollection){j=d.el;return j}if(!(i=a.getElementById(e))){return null}if(d&&d.el){j=Ext.updateCacheEntry(d,i).el}else{j=new h(i,!!d)}return j}else{if(e.tagName){if(!(k=e.id)){k=Ext.id(e)}d=Ext.cache[k];if(d&&d.el){j=Ext.updateCacheEntry(d,e).el}else{j=new h(e,!!d)}return j}else{if(e instanceof g){if(e!=g.docEl&&e!=g.winEl){k=e.id;d=Ext.cache[k];if(d){Ext.updateCacheEntry(d,a.getElementById(k)||e.dom)}}return e}else{if(e.isComposite){return e}else{if(Ext.isArray(e)){return g.select(e)}else{if(e===a){if(!g.docEl){g.docEl=Ext.Object.chain(h.prototype);g.docEl.dom=a;g.docEl.id=Ext.id(a);g.addToCache(g.docEl)}return g.docEl}else{if(e===window){if(!g.winEl){g.winEl=Ext.Object.chain(h.prototype);g.winEl.dom=window;g.winEl.id=Ext.id(window);g.addToCache(g.winEl)}return g.winEl}}}}}}}return null},addToCache:function(d,e){if(d){Ext.addCacheEntry(e,d)}return d},addMethods:function(){this.override.apply(this,arguments)},mergeClsList:function(){var n,m={},k,d,g,l,e,o=[],h=false;for(k=0,d=arguments.length;k<d;k++){n=arguments[k];if(Ext.isString(n)){n=n.replace(b,"").split(c)}if(n){for(g=0,l=n.length;g<l;g++){e=n[g];if(!m[e]){if(k){h=true}m[e]=true}}}}for(e in m){o.push(e)}o.changed=h;return o},removeCls:function(g,l){var e={},h,k,j,d=[],m=false;if(g){if(Ext.isString(g)){g=g.replace(b,"").split(c)}for(h=0,k=g.length;h<k;h++){e[g[h]]=true}}if(l){if(Ext.isString(l)){l=l.split(c)}for(h=0,k=l.length;h<k;h++){j=l[h];if(e[j]){m=true;delete e[j]}}}for(j in e){d.push(j)}d.changed=m;return d},VISIBILITY:1,DISPLAY:2,OFFSETS:3,ASCLASS:4},constructor:function(d,e){var g=this,h=typeof d=="string"?a.getElementById(d):d,i;if(!h){return null}i=h.id;if(!e&&i&&Ext.cache[i]){return Ext.cache[i].el}g.dom=h;g.id=i||Ext.id(h);g.self.addToCache(g)},set:function(i,e){var g=this.dom,d,h;for(d in i){if(i.hasOwnProperty(d)){h=i[d];if(d=="style"){this.applyStyles(h)}else{if(d=="cls"){g.className=h}else{if(e!==false){if(h===undefined){g.removeAttribute(d)}else{g.setAttribute(d,h)}}else{g[d]=h}}}}}return this},defaultUnit:"px",is:function(d){return Ext.DomQuery.is(this.dom,d)},getValue:function(d){var e=this.dom.value;return d?parseInt(e,10):e},remove:function(){var d=this,e=d.dom;if(e){Ext.removeNode(e);delete d.dom}},contains:function(d){if(!d){return false}var e=this,g=d.dom||d;return(g===e.dom)||Ext.dom.AbstractElement.isAncestor(e.dom,g)},getAttribute:function(d,e){var g=this.dom;return g.getAttributeNS(e,d)||g.getAttribute(e+":"+d)||g.getAttribute(d)||g[d]},update:function(d){if(this.dom){this.dom.innerHTML=d}return this},setHTML:function(d){if(this.dom){this.dom.innerHTML=d}return this},getHTML:function(){return this.dom?this.dom.innerHTML:""},hide:function(){this.setVisible(false);return this},show:function(){this.setVisible(true);return this},setVisible:function(j,d){var e=this,i=e.self,h=e.getVisibilityMode(),g=Ext.baseCSSPrefix;switch(h){case i.VISIBILITY:e.removeCls([g+"hidden-display",g+"hidden-offsets"]);e[j?"removeCls":"addCls"](g+"hidden-visibility");break;case i.DISPLAY:e.removeCls([g+"hidden-visibility",g+"hidden-offsets"]);e[j?"removeCls":"addCls"](g+"hidden-display");break;case i.OFFSETS:e.removeCls([g+"hidden-visibility",g+"hidden-display"]);e[j?"removeCls":"addCls"](g+"hidden-offsets");break}return e},getVisibilityMode:function(){var e=(this.$cache||this.getCache()).data,d=e.visibilityMode;if(d===undefined){e.visibilityMode=d=this.self.DISPLAY}return d},setVisibilityMode:function(d){(this.$cache||this.getCache()).data.visibilityMode=d;return this},getCache:function(){var d=this,e=d.dom.id||Ext.id(d.dom);d.$cache=Ext.cache[e]||Ext.addCacheEntry(e,null,d.dom);return d.$cache}},function(){var d=this;Ext.getDetachedBody=function(){var e=d.detachedBodyEl;if(!e){e=a.createElement("div");d.detachedBodyEl=e=new d.Fly(e);e.isDetachedBody=true}return e};Ext.getElementById=function(h){var g=a.getElementById(h),e;if(!g&&(e=d.detachedBodyEl)){g=e.dom.querySelector("#"+Ext.escapeId(h))}return g};Ext.get=function(e){return Ext.dom.Element.get(e)};this.addStatics({Fly:new Ext.Class({extend:d,isFly:true,constructor:function(e){this.dom=e},attach:function(e){this.dom=e;this.$cache=e.id?Ext.cache[e.id]:null;return this}}),_flyweights:{},fly:function(i,g){var h=null,e=d._flyweights;g=g||"_global";i=Ext.getDom(i);if(i){h=e[g]||(e[g]=new d.Fly());h.dom=i;h.$cache=i.id?Ext.cache[i.id]:null}return h}});Ext.fly=function(){return d.fly.apply(d,arguments)};(function(e){e.destroy=e.remove;if(a.querySelector){e.getById=function(i,g){var h=a.getElementById(i)||this.dom.querySelector("#"+Ext.escapeId(i));return g?h:(h?Ext.get(h):null)}}else{e.getById=function(i,g){var h=a.getElementById(i);return g?h:(h?Ext.get(h):null)}}}(this.prototype))})}());Ext.dom.AbstractElement.addInheritableStatics({unitRe:/\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i,camelRe:/(-[a-z])/gi,cssRe:/([a-z0-9\-]+)\s*:\s*([^;\s]+(?:\s*[^;\s]+)*);?/gi,opacityRe:/alpha\(opacity=(.*)\)/i,propertyCache:{},defaultUnit:"px",borders:{l:"border-left-width",r:"border-right-width",t:"border-top-width",b:"border-bottom-width"},paddings:{l:"padding-left",r:"padding-right",t:"padding-top",b:"padding-bottom"},margins:{l:"margin-left",r:"margin-right",t:"margin-top",b:"margin-bottom"},addUnits:function(b,a){if(typeof b=="number"){return b+(a||this.defaultUnit||"px")}if(b===""||b=="auto"||b===undefined||b===null){return b||""}if(!this.unitRe.test(b)){return b||""}return b},isAncestor:function(b,d){var a=false;b=Ext.getDom(b);d=Ext.getDom(d);if(b&&d){if(b.contains){return b.contains(d)}else{if(b.compareDocumentPosition){return !!(b.compareDocumentPosition(d)&16)}else{while((d=d.parentNode)){a=d==b||a}}}}return a},parseBox:function(b){if(typeof b!="string"){b=b.toString()}var c=b.split(" "),a=c.length;if(a==1){c[1]=c[2]=c[3]=c[0]}else{if(a==2){c[2]=c[0];c[3]=c[1]}else{if(a==3){c[3]=c[1]}}}return{top:parseFloat(c[0])||0,right:parseFloat(c[1])||0,bottom:parseFloat(c[2])||0,left:parseFloat(c[3])||0}},unitizeBox:function(g,e){var d=this.addUnits,c=this.parseBox(g);return d(c.top,e)+" "+d(c.right,e)+" "+d(c.bottom,e)+" "+d(c.left,e)},camelReplaceFn:function(b,c){return c.charAt(1).toUpperCase()},normalize:function(a){if(a=="float"){a=Ext.supports.Float?"cssFloat":"styleFloat"}return this.propertyCache[a]||(this.propertyCache[a]=a.replace(this.camelRe,this.camelReplaceFn))},getDocumentHeight:function(){return Math.max(!Ext.isStrict?document.body.scrollHeight:document.documentElement.scrollHeight,this.getViewportHeight())},getDocumentWidth:function(){return Math.max(!Ext.isStrict?document.body.scrollWidth:document.documentElement.scrollWidth,this.getViewportWidth())},getViewportHeight:function(){return window.innerHeight},getViewportWidth:function(){return window.innerWidth},getViewSize:function(){return{width:window.innerWidth,height:window.innerHeight}},getOrientation:function(){if(Ext.supports.OrientationChange){return(window.orientation==0)?"portrait":"landscape"}return(window.innerHeight>window.innerWidth)?"portrait":"landscape"},fromPoint:function(a,b){return Ext.get(document.elementFromPoint(a,b))},parseStyles:function(c){var a={},b=this.cssRe,d;if(c){b.lastIndex=0;while((d=b.exec(c))){a[d[1]]=d[2]}}return a}});(function(){var g=document,a=Ext.dom.AbstractElement,e=null,d=g.compatMode=="CSS1Compat",c,b=function(i){if(!c){c=new a.Fly()}c.attach(i);return c};if(!("activeElement" in g)&&g.addEventListener){g.addEventListener("focus",function(i){if(i&&i.target){e=(i.target==g)?null:i.target}},true)}function h(j,k,i){return function(){j.selectionStart=k;j.selectionEnd=i}}a.addInheritableStatics({getActiveElement:function(){return g.activeElement||e},getRightMarginFixCleaner:function(n){var k=Ext.supports,l=k.DisplayChangeInputSelectionBug,m=k.DisplayChangeTextAreaSelectionBug,o,i,p,j;if(l||m){o=g.activeElement||e;i=o&&o.tagName;if((m&&i=="TEXTAREA")||(l&&i=="INPUT"&&o.type=="text")){if(Ext.dom.Element.isAncestor(n,o)){p=o.selectionStart;j=o.selectionEnd;if(Ext.isNumber(p)&&Ext.isNumber(j)){return h(o,p,j)}}}}return Ext.emptyFn},getViewWidth:function(i){return i?Ext.dom.Element.getDocumentWidth():Ext.dom.Element.getViewportWidth()},getViewHeight:function(i){return i?Ext.dom.Element.getDocumentHeight():Ext.dom.Element.getViewportHeight()},getDocumentHeight:function(){return Math.max(!d?g.body.scrollHeight:g.documentElement.scrollHeight,Ext.dom.Element.getViewportHeight())},getDocumentWidth:function(){return Math.max(!d?g.body.scrollWidth:g.documentElement.scrollWidth,Ext.dom.Element.getViewportWidth())},getViewportHeight:function(){return Ext.isIE?(Ext.isStrict?g.documentElement.clientHeight:g.body.clientHeight):self.innerHeight},getViewportWidth:function(){return(!Ext.isStrict&&!Ext.isOpera)?g.body.clientWidth:Ext.isIE?g.documentElement.clientWidth:self.innerWidth},getY:function(i){return Ext.dom.Element.getXY(i)[1]},getX:function(i){return Ext.dom.Element.getXY(i)[0]},getXY:function(k){var n=g.body,j=g.documentElement,i=0,l=0,o=[0,0],r=Math.round,m,q;k=Ext.getDom(k);if(k!=g&&k!=n){if(Ext.isIE){try{m=k.getBoundingClientRect();l=j.clientTop||n.clientTop;i=j.clientLeft||n.clientLeft}catch(p){m={left:0,top:0}}}else{m=k.getBoundingClientRect()}q=b(document).getScroll();o=[r(m.left+q.left-i),r(m.top+q.top-l)]}return o},setXY:function(j,k){(j=Ext.fly(j,"_setXY")).position();var l=j.translatePoints(k),i=j.dom.style,m;for(m in l){if(!isNaN(l[m])){i[m]=l[m]+"px"}}},setX:function(j,i){Ext.dom.Element.setXY(j,[i,false])},setY:function(i,j){Ext.dom.Element.setXY(i,[false,j])},serializeForm:function(k){var l=k.elements||(document.forms[k]||Ext.getDom(k)).elements,v=false,u=encodeURIComponent,p="",n=l.length,q,i,t,x,w,r,m,s,j;for(r=0;r<n;r++){q=l[r];i=q.name;t=q.type;x=q.options;if(!q.disabled&&i){if(/select-(one|multiple)/i.test(t)){s=x.length;for(m=0;m<s;m++){j=x[m];if(j.selected){w=j.hasAttribute?j.hasAttribute("value"):j.getAttributeNode("value").specified;p+=Ext.String.format("{0}={1}&",u(i),u(w?j.value:j.text))}}}else{if(!(/file|undefined|reset|button/i.test(t))){if(!(/radio|checkbox/i.test(t)&&!q.checked)&&!(t=="submit"&&v)){p+=u(i)+"="+u(q.value)+"&";v=/submit/i.test(t)}}}}}return p.substr(0,p.length-1)}})}());Ext.dom.AbstractElement.override({getAnchorXY:function(g,k,n){g=(g||"tl").toLowerCase();n=n||{};var j=this,a=j.dom==document.body||j.dom==document,b=n.width||a?window.innerWidth:j.getWidth(),l=n.height||a?window.innerHeight:j.getHeight(),m,c=Math.round,d=j.getXY(),i=a?0:!k?d[0]:0,h=a?0:!k?d[1]:0,e={c:[c(b*0.5),c(l*0.5)],t:[c(b*0.5),0],l:[0,c(l*0.5)],r:[b,c(l*0.5)],b:[c(b*0.5),l],tl:[0,0],bl:[0,l],br:[b,l],tr:[b,0]};m=e[g];return[m[0]+i,m[1]+h]},alignToRe:/^([a-z]+)-([a-z]+)(\?)?$/,getAlignToXY:function(e,z,i,s){s=!!s;e=Ext.get(e);i=i||[0,0];if(!z||z=="?"){z="tl-bl?"}else{if(!(/-/).test(z)&&z!==""){z="tl-"+z}}z=z.toLowerCase();var v=this,d=z.match(this.alignToRe),n=window.innerWidth,u=window.innerHeight,c="",b="",A,w,m,l,q,o,g,a,k,j,r,p,h,t;if(!d){throw"Element.alignTo with an invalid alignment "+z}c=d[1];b=d[2];t=!!d[3];A=v.getAnchorXY(c,true);w=e.getAnchorXY(b,s);m=w[0]-A[0]+i[0];l=w[1]-A[1]+i[1];if(t){r=v.getWidth();p=v.getHeight();h=e.getPageBox();a=c.charAt(0);g=c.charAt(c.length-1);j=b.charAt(0);k=b.charAt(b.length-1);o=((a=="t"&&j=="b")||(a=="b"&&j=="t"));q=((g=="r"&&k=="l")||(g=="l"&&k=="r"));if(m+r>n){m=q?h.left-r:n-r}if(m<0){m=q?h.right:0}if(l+p>u){l=o?h.top-p:u-p}if(l<0){l=o?h.bottom:0}}return[m,l]},getAnchor:function(){var b=(this.$cache||this.getCache()).data,a;if(!this.dom){return}a=b._anchor;if(!a){a=b._anchor={}}return a},adjustForConstraints:function(c,b){var a=this.getConstrainVector(b,c);if(a){c[0]+=a[0];c[1]+=a[1]}return c}});Ext.dom.AbstractElement.addMethods({appendChild:function(a){return Ext.get(a).appendTo(this)},appendTo:function(a){Ext.getDom(a).appendChild(this.dom);return this},insertBefore:function(a){a=Ext.getDom(a);a.parentNode.insertBefore(this.dom,a);return this},insertAfter:function(a){a=Ext.getDom(a);a.parentNode.insertBefore(this.dom,a.nextSibling);return this},insertFirst:function(b,a){b=b||{};if(b.nodeType||b.dom||typeof b=="string"){b=Ext.getDom(b);this.dom.insertBefore(b,this.dom.firstChild);return !a?Ext.get(b):b}else{return this.createChild(b,this.dom.firstChild,a)}},insertSibling:function(b,g,j){var i=this,k=(g||"before").toLowerCase()=="after",d,a,c,h;if(Ext.isArray(b)){a=i;c=b.length;for(h=0;h<c;h++){d=Ext.fly(a,"_internal").insertSibling(b[h],g,j);if(k){a=d}}return d}b=b||{};if(b.nodeType||b.dom){d=i.dom.parentNode.insertBefore(Ext.getDom(b),k?i.dom.nextSibling:i.dom);if(!j){d=Ext.get(d)}}else{if(k&&!i.dom.nextSibling){d=Ext.core.DomHelper.append(i.dom.parentNode,b,!j)}else{d=Ext.core.DomHelper[k?"insertAfter":"insertBefore"](i.dom,b,!j)}}return d},replace:function(a){a=Ext.get(a);this.insertBefore(a);a.remove();return this},replaceWith:function(a){var b=this;if(a.nodeType||a.dom||typeof a=="string"){a=Ext.get(a);b.dom.parentNode.insertBefore(a,b.dom)}else{a=Ext.core.DomHelper.insertBefore(b.dom,a)}delete Ext.cache[b.id];Ext.removeNode(b.dom);b.id=Ext.id(b.dom=a);Ext.dom.AbstractElement.addToCache(b.isFlyweight?new Ext.dom.AbstractElement(b.dom):b);return b},createChild:function(b,a,c){b=b||{tag:"div"};if(a){return Ext.core.DomHelper.insertBefore(a,b,c!==true)}else{return Ext.core.DomHelper[!this.dom.firstChild?"insertFirst":"append"](this.dom,b,c!==true)}},wrap:function(b,c,a){var e=Ext.core.DomHelper.insertBefore(this.dom,b||{tag:"div"},true),d=e;if(a){d=Ext.DomQuery.selectNode(a,e.dom)}d.appendChild(this.dom);return c?e.dom:e},insertHtml:function(b,c,a){var d=Ext.core.DomHelper.insertHtml(b,this.dom,c);return a?Ext.get(d):d}});(function(){var a=Ext.dom.AbstractElement;a.override({getX:function(b){return this.getXY(b)[0]},getY:function(b){return this.getXY(b)[1]},getXY:function(){var b=window.webkitConvertPointFromNodeToPage(this.dom,new WebKitPoint(0,0));return[b.x,b.y]},getOffsetsTo:function(b){var d=this.getXY(),c=Ext.fly(b,"_internal").getXY();return[d[0]-c[0],d[1]-c[1]]},setX:function(b){return this.setXY([b,this.getY()])},setY:function(b){return this.setXY([this.getX(),b])},setLeft:function(b){this.setStyle("left",a.addUnits(b));return this},setTop:function(b){this.setStyle("top",a.addUnits(b));return this},setRight:function(b){this.setStyle("right",a.addUnits(b));return this},setBottom:function(b){this.setStyle("bottom",a.addUnits(b));return this},setXY:function(g){var c=this,e,b,d;if(arguments.length>1){g=[g,arguments[1]]}e=c.translatePoints(g);b=c.dom.style;for(d in e){if(!e.hasOwnProperty(d)){continue}if(!isNaN(e[d])){b[d]=e[d]+"px"}}return c},getLeft:function(b){return parseInt(this.getStyle("left"),10)||0},getRight:function(b){return parseInt(this.getStyle("right"),10)||0},getTop:function(b){return parseInt(this.getStyle("top"),10)||0},getBottom:function(b){return parseInt(this.getStyle("bottom"),10)||0},translatePoints:function(b,i){i=isNaN(b[1])?i:b[1];b=isNaN(b[0])?b:b[0];var e=this,g=e.isStyle("position","relative"),h=e.getXY(),c=parseInt(e.getStyle("left"),10),d=parseInt(e.getStyle("top"),10);c=!isNaN(c)?c:(g?0:e.dom.offsetLeft);d=!isNaN(d)?d:(g?0:e.dom.offsetTop);return{left:(b-h[0]+c),top:(i-h[1]+d)}},setBox:function(e){var d=this,c=e.width,b=e.height,h=e.top,g=e.left;if(g!==undefined){d.setLeft(g)}if(h!==undefined){d.setTop(h)}if(c!==undefined){d.setWidth(c)}if(b!==undefined){d.setHeight(b)}return this},getBox:function(i,m){var j=this,g=j.dom,d=g.offsetWidth,n=g.offsetHeight,p,h,e,c,o,k;if(!m){p=j.getXY()}else{if(i){p=[0,0]}else{p=[parseInt(j.getStyle("left"),10)||0,parseInt(j.getStyle("top"),10)||0]}}if(!i){h={x:p[0],y:p[1],0:p[0],1:p[1],width:d,height:n}}else{e=j.getBorderWidth.call(j,"l")+j.getPadding.call(j,"l");c=j.getBorderWidth.call(j,"r")+j.getPadding.call(j,"r");o=j.getBorderWidth.call(j,"t")+j.getPadding.call(j,"t");k=j.getBorderWidth.call(j,"b")+j.getPadding.call(j,"b");h={x:p[0]+e,y:p[1]+o,0:p[0]+e,1:p[1]+o,width:d-(e+c),height:n-(o+k)}}h.left=h.x;h.top=h.y;h.right=h.x+h.width;h.bottom=h.y+h.height;return h},getPageBox:function(g){var j=this,d=j.dom,m=d.offsetWidth,i=d.offsetHeight,o=j.getXY(),n=o[1],c=o[0]+m,k=o[1]+i,e=o[0];if(!d){return new Ext.util.Region()}if(g){return new Ext.util.Region(n,c,k,e)}else{return{left:e,top:n,width:m,height:i,right:c,bottom:k}}}})}());(function(){var q=Ext.dom.AbstractElement,o=document.defaultView,n=Ext.Array,m=/^\s+|\s+$/g,b=/\w/g,p=/\s+/,t=/^(?:transparent|(?:rgba[(](?:\s*\d+\s*[,]){3}\s*0\s*[)]))$/i,h=Ext.supports.ClassList,e="padding",d="margin",s="border",k="-left",r="-right",l="-top",c="-bottom",i="-width",j={l:s+k+i,r:s+r+i,t:s+l+i,b:s+c+i},g={l:e+k,r:e+r,t:e+l,b:e+c},a={l:d+k,r:d+r,t:d+l,b:d+c};q.override({styleHooks:{},addStyles:function(B,A){var w=0,z=(B||"").match(b),y,u=z.length,x,v=[];if(u==1){w=Math.abs(parseFloat(this.getStyle(A[z[0]]))||0)}else{if(u){for(y=0;y<u;y++){x=z[y];v.push(A[x])}v=this.getStyle(v);for(y=0;y<u;y++){x=z[y];w+=Math.abs(parseFloat(v[A[x]])||0)}}}return w},addCls:h?function(x){var z=this,B=z.dom,A,y,w,u,v;if(typeof(x)=="string"){x=x.replace(m,"").split(p)}if(B&&x&&!!(u=x.length)){if(!B.className){B.className=x.join(" ")}else{A=B.classList;for(w=0;w<u;++w){v=x[w];if(v){if(!A.contains(v)){if(y){y.push(v)}else{y=B.className.replace(m,"");y=y?[y,v]:[v]}}}}if(y){B.className=y.join(" ")}}}return z}:function(v){var w=this,y=w.dom,x,u;if(y&&v&&v.length){u=Ext.Element.mergeClsList(y.className,v);if(u.changed){y.className=u.join(" ")}}return w},removeCls:function(w){var x=this,y=x.dom,u,v;if(typeof(w)=="string"){w=w.replace(m,"").split(p)}if(y&&y.className&&w&&!!(u=w.length)){if(u==1&&h){if(w[0]){y.classList.remove(w[0])}}else{v=Ext.Element.removeCls(y.className,w);if(v.changed){y.className=v.join(" ")}}}return x},radioCls:function(y){var z=this.dom.parentNode.childNodes,w,x,u;y=Ext.isArray(y)?y:[y];for(x=0,u=z.length;x<u;x++){w=z[x];if(w&&w.nodeType==1){Ext.fly(w,"_internal").removeCls(y)}}return this.addCls(y)},toggleCls:h?function(u){var v=this,w=v.dom;if(w){u=u.replace(m,"");if(u){w.classList.toggle(u)}}return v}:function(u){var v=this;return v.hasCls(u)?v.removeCls(u):v.addCls(u)},hasCls:h?function(u){var v=this.dom;return(v&&u)?v.classList.contains(u):false}:function(u){var v=this.dom;return v?u&&(" "+v.className+" ").indexOf(" "+u+" ")!=-1:false},replaceCls:function(v,u){return this.removeCls(v).addCls(u)},isStyle:function(u,v){return this.getStyle(u)==v},getStyle:function(G,B){var C=this,x=C.dom,J=typeof G!="string",H=C.styleHooks,v=G,D=v,A=1,z,I,F,E,w,u,y;if(J){F={};v=D[0];y=0;if(!(A=D.length)){return F}}if(!x||x.documentElement){return F||""}z=x.style;if(B){u=z}else{u=x.ownerDocument.defaultView.getComputedStyle(x,null);if(!u){B=true;u=z}}do{E=H[v];if(!E){H[v]=E={name:q.normalize(v)}}if(E.get){w=E.get(x,C,B,u)}else{I=E.name;w=u[I]}if(!J){return w}F[v]=w;v=D[++y]}while(y<A);return F},getStyles:function(){var v=Ext.Array.slice(arguments),u=v.length,w;if(u&&typeof v[u-1]=="boolean"){w=v.pop()}return this.getStyle(v,w)},isTransparent:function(v){var u=this.getStyle(v);return u?t.test(u):false},setStyle:function(B,z){var x=this,A=x.dom,u=x.styleHooks,w=A.style,v=B,y;if(typeof v=="string"){y=u[v];if(!y){u[v]=y={name:q.normalize(v)}}z=(z==null)?"":z;if(y.set){y.set(A,z,x)}else{w[y.name]=z}if(y.afterSet){y.afterSet(A,z,x)}}else{for(v in B){if(B.hasOwnProperty(v)){y=u[v];if(!y){u[v]=y={name:q.normalize(v)}}z=B[v];z=(z==null)?"":z;if(y.set){y.set(A,z,x)}else{w[y.name]=z}if(y.afterSet){y.afterSet(A,z,x)}}}}return x},getHeight:function(v){var w=this.dom,u=v?(w.clientHeight-this.getPadding("tb")):w.offsetHeight;return u>0?u:0},getWidth:function(u){var w=this.dom,v=u?(w.clientWidth-this.getPadding("lr")):w.offsetWidth;return v>0?v:0},setWidth:function(u){var v=this;v.dom.style.width=q.addUnits(u);return v},setHeight:function(u){var v=this;v.dom.style.height=q.addUnits(u);return v},getBorderWidth:function(u){return this.addStyles(u,j)},getPadding:function(u){return this.addStyles(u,g)},margins:a,applyStyles:function(w){if(w){var v,u,x=this.dom;if(typeof w=="function"){w=w.call()}if(typeof w=="string"){w=Ext.util.Format.trim(w).split(/\s*(?::|;)\s*/);for(v=0,u=w.length;v<u;){x.style[q.normalize(w[v++])]=w[v++]}}else{if(typeof w=="object"){this.setStyle(w)}}}},setSize:function(w,u){var x=this,v=x.dom.style;if(Ext.isObject(w)){u=w.height;w=w.width}v.width=q.addUnits(w);v.height=q.addUnits(u);return x},getViewSize:function(){var u=document,v=this.dom;if(v==u||v==u.body){return{width:q.getViewportWidth(),height:q.getViewportHeight()}}else{return{width:v.clientWidth,height:v.clientHeight}}},getSize:function(v){var u=this.dom;return{width:Math.max(0,v?(u.clientWidth-this.getPadding("lr")):u.offsetWidth),height:Math.max(0,v?(u.clientHeight-this.getPadding("tb")):u.offsetHeight)}},repaint:function(){var u=this.dom;this.addCls(Ext.baseCSSPrefix+"repaint");setTimeout(function(){Ext.fly(u).removeCls(Ext.baseCSSPrefix+"repaint")},1);return this},getMargin:function(v){var w=this,y={t:"top",l:"left",r:"right",b:"bottom"},u,z,x;if(!v){x=[];for(u in w.margins){if(w.margins.hasOwnProperty(u)){x.push(w.margins[u])}}z=w.getStyle(x);if(z&&typeof z=="object"){for(u in w.margins){if(w.margins.hasOwnProperty(u)){z[y[u]]=parseFloat(z[w.margins[u]])||0}}}return z}else{return w.addStyles.call(w,v,w.margins)}},mask:function(v,z,D){var A=this,w=A.dom,x=(A.$cache||A.getCache()).data,u=x.mask,E,C,B="",y=Ext.baseCSSPrefix;A.addCls(y+"masked");if(A.getStyle("position")=="static"){A.addCls(y+"masked-relative")}if(u){u.remove()}if(z&&typeof z=="string"){B=" "+z}else{B=" "+y+"mask-gray"}E=A.createChild({cls:y+"mask"+((D!==false)?"":(" "+y+"mask-gray")),html:v?('<div class="'+(z||(y+"mask-message"))+'">'+v+"</div>"):""});C=A.getSize();x.mask=E;if(w===document.body){C.height=window.innerHeight;if(A.orientationHandler){Ext.EventManager.unOrientationChange(A.orientationHandler,A)}A.orientationHandler=function(){C=A.getSize();C.height=window.innerHeight;E.setSize(C)};Ext.EventManager.onOrientationChange(A.orientationHandler,A)}E.setSize(C);if(Ext.is.iPad){Ext.repaint()}},unmask:function(){var v=this,x=(v.$cache||v.getCache()).data,u=x.mask,w=Ext.baseCSSPrefix;if(u){u.remove();delete x.mask}v.removeCls([w+"masked",w+"masked-relative"]);if(v.dom===document.body){Ext.EventManager.unOrientationChange(v.orientationHandler,v);delete v.orientationHandler}}});q.populateStyleMap=function(B,u){var A=["margin-","padding-","border-width-"],z=["before","after"],w,y,v,x;for(w=A.length;w--;){for(x=2;x--;){y=A[w]+z[x];B[q.normalize(y)]=B[y]={name:q.normalize(A[w]+u[x])}}}};Ext.onReady(function(){var C=Ext.supports,u,A,y,v,B;function z(H,E,G,D){var F=D[this.name]||"";return t.test(F)?"transparent":F}function x(J,G,I,F){var D=F.marginRight,E,H;if(D!="0px"){E=J.style;H=E.display;E.display="inline-block";D=(I?F:J.ownerDocument.defaultView.getComputedStyle(J,null)).marginRight;E.display=H}return D}function w(K,H,J,G){var D=G.marginRight,F,E,I;if(D!="0px"){F=K.style;E=q.getRightMarginFixCleaner(K);I=F.display;F.display="inline-block";D=(J?G:K.ownerDocument.defaultView.getComputedStyle(K,"")).marginRight;F.display=I;E()}return D}u=q.prototype.styleHooks;q.populateStyleMap(u,["left","right"]);if(C.init){C.init()}if(!C.RightMargin){u.marginRight=u["margin-right"]={name:"marginRight",get:(C.DisplayChangeInputSelectionBug||C.DisplayChangeTextAreaSelectionBug)?w:x}}if(!C.TransparentColor){A=["background-color","border-color","color","outline-color"];for(y=A.length;y--;){v=A[y];B=q.normalize(v);u[v]=u[B]={name:B,get:z}}}})}());Ext.dom.AbstractElement.override({findParent:function(h,b,a){var e=this.dom,c=document.documentElement,g=0,d;b=b||50;if(isNaN(b)){d=Ext.getDom(b);b=Number.MAX_VALUE}while(e&&e.nodeType==1&&g<b&&e!=c&&e!=d){if(Ext.DomQuery.is(e,h)){return a?Ext.get(e):e}g++;e=e.parentNode}return null},findParentNode:function(d,b,a){var c=Ext.fly(this.dom.parentNode,"_internal");return c?c.findParent(d,b,a):null},up:function(b,a){return this.findParentNode(b,a,true)},select:function(a,b){return Ext.dom.Element.select(a,this.dom,b)},query:function(a){return Ext.DomQuery.select(a,this.dom)},down:function(a,b){var c=Ext.DomQuery.selectNode(a,this.dom);return b?c:Ext.get(c)},child:function(a,b){var d,c=this,e;e=Ext.id(c.dom);e=Ext.escapeId(e);d=Ext.DomQuery.selectNode("#"+e+" > "+a,c.dom);return b?d:Ext.get(d)},parent:function(a,b){return this.matchNode("parentNode","parentNode",a,b)},next:function(a,b){return this.matchNode("nextSibling","nextSibling",a,b)},prev:function(a,b){return this.matchNode("previousSibling","previousSibling",a,b)},first:function(a,b){return this.matchNode("nextSibling","firstChild",a,b)},last:function(a,b){return this.matchNode("previousSibling","lastChild",a,b)},matchNode:function(b,e,a,c){if(!this.dom){return null}var d=this.dom[e];while(d){if(d.nodeType==1&&(!a||Ext.DomQuery.is(d,a))){return !c?Ext.get(d):d}d=d[b]}return null},isAncestor:function(a){return this.self.isAncestor.call(this.self,this.dom,a)}});(function(){var b="afterbegin",i="afterend",a="beforebegin",o="beforeend",l="<table>",h="</table>",c=l+"<tbody>",n="</tbody>"+h,k=c+"<tr>",e="</tr>"+n,p=document.createElement("div"),m=["BeforeBegin","previousSibling"],j=["AfterEnd","nextSibling"],d={beforebegin:m,afterend:j},g={beforebegin:m,afterend:j,afterbegin:["AfterBegin","firstChild"],beforeend:["BeforeEnd","lastChild"]};Ext.define("Ext.dom.Helper",{extend:"Ext.dom.AbstractHelper",requires:["Ext.dom.AbstractElement"],tableRe:/^table|tbody|tr|td$/i,tableElRe:/td|tr|tbody/i,useDom:false,createDom:function(q,w){var r,z=document,u,x,s,y,v,t;if(Ext.isArray(q)){r=z.createDocumentFragment();for(v=0,t=q.length;v<t;v++){this.createDom(q[v],r)}}else{if(typeof q=="string"){r=z.createTextNode(q)}else{r=z.createElement(q.tag||"div");u=!!r.setAttribute;for(x in q){if(!this.confRe.test(x)){s=q[x];if(x=="cls"){r.className=s}else{if(u){r.setAttribute(x,s)}else{r[x]=s}}}}Ext.DomHelper.applyStyles(r,q.style);if((y=q.children||q.cn)){this.createDom(y,r)}else{if(q.html){r.innerHTML=q.html}}}}if(w){w.appendChild(r)}return r},ieTable:function(v,q,w,u){p.innerHTML=[q,w,u].join("");var r=-1,t=p,s;while(++r<v){t=t.firstChild}s=t.nextSibling;if(s){t=document.createDocumentFragment();while(s){t.appendChild(s);s=s.nextSibling}}return t},insertIntoTable:function(z,s,r,t){var q,w,v=s==a,y=s==b,u=s==o,x=s==i;if(z=="td"&&(y||u)||!this.tableElRe.test(z)&&(v||x)){return null}w=v?r:x?r.nextSibling:y?r.firstChild:null;if(v||x){r=r.parentNode}if(z=="td"||(z=="tr"&&(u||y))){q=this.ieTable(4,k,t,e)}else{if((z=="tbody"&&(u||y))||(z=="tr"&&(v||x))){q=this.ieTable(3,c,t,n)}else{q=this.ieTable(2,l,t,h)}}r.insertBefore(q,w);return q},createContextualFragment:function(r){var q=document.createDocumentFragment(),s,t;p.innerHTML=r;t=p.childNodes;s=t.length;while(s--){q.appendChild(t[0])}return q},applyStyles:function(q,r){if(r){q=Ext.fly(q);if(typeof r=="function"){r=r.call()}if(typeof r=="string"){r=Ext.dom.Element.parseStyles(r)}if(typeof r=="object"){q.setStyle(r)}}},createHtml:function(q){return this.markup(q)},doInsert:function(t,v,u,w,s,q){t=t.dom||Ext.getDom(t);var r;if(this.useDom){r=this.createDom(v,null);if(q){t.appendChild(r)}else{(s=="firstChild"?t:t.parentNode).insertBefore(r,t[s]||t)}}else{r=this.insertHtml(w,t,this.markup(v))}return u?Ext.get(r,true):r},overwrite:function(s,r,t){var q;s=Ext.getDom(s);r=this.markup(r);if(Ext.isIE&&this.tableRe.test(s.tagName)){while(s.firstChild){s.removeChild(s.firstChild)}if(r){q=this.insertHtml("afterbegin",s,r);return t?Ext.get(q):q}return null}s.innerHTML=r;return t?Ext.get(s.firstChild):s.firstChild},insertHtml:function(s,v,t){var x,r,u,q,w;s=s.toLowerCase();if(v.insertAdjacentHTML){if(Ext.isIE&&this.tableRe.test(v.tagName)&&(w=this.insertIntoTable(v.tagName.toLowerCase(),s,v,t))){return w}if((x=g[s])){v.insertAdjacentHTML(x[0],t);return v[x[1]]}}else{if(v.nodeType===3){s=s==="afterbegin"?"beforebegin":s;s=s==="beforeend"?"afterend":s}r=Ext.supports.CreateContextualFragment?v.ownerDocument.createRange():undefined;q="setStart"+(this.endRe.test(s)?"After":"Before");if(d[s]){if(r){r[q](v);w=r.createContextualFragment(t)}else{w=this.createContextualFragment(t)}v.parentNode.insertBefore(w,s==a?v:v.nextSibling);return v[(s==a?"previous":"next")+"Sibling"]}else{u=(s==b?"first":"last")+"Child";if(v.firstChild){if(r){r[q](v[u]);w=r.createContextualFragment(t)}else{w=this.createContextualFragment(t)}if(s==b){v.insertBefore(w,v.firstChild)}else{v.appendChild(w)}}else{v.innerHTML=t}return v[u]}}},createTemplate:function(r){var q=this.markup(r);return new Ext.Template(q)}},function(){Ext.ns("Ext.core");Ext.DomHelper=Ext.core.DomHelper=new this})}());Ext.ns("Ext.core");Ext.dom.Query=Ext.core.DomQuery=Ext.DomQuery=(function(){var cache={},simpleCache={},valueCache={},nonSpace=/\S/,trimRe=/^\s+|\s+$/g,tplRe=/\{(\d+)\}/g,modeRe=/^(\s?[\/>+~]\s?|\s|$)/,tagTokenRe=/^(#)?([\w\-\*\\]+)/,nthRe=/(\d*)n\+?(\d*)/,nthRe2=/\D/,startIdRe=/^\s*\#/,isIE=window.ActiveXObject?true:false,key=30803,longHex=/\\([0-9a-fA-F]{6})/g,shortHex=/\\([0-9a-fA-F]{1,6})\s{0,1}/g,nonHex=/\\([^0-9a-fA-F]{1})/g,escapes=/\\/g,num,hasEscapes,longHexToChar=function($0,$1){return String.fromCharCode(parseInt($1,16))},shortToLongHex=function($0,$1){while($1.length<6){$1="0"+$1}return"\\"+$1},charToLongHex=function($0,$1){num=$1.charCodeAt(0).toString(16);if(num.length===1){num="0"+num}return"\\0000"+num},unescapeCssSelector=function(selector){return(hasEscapes)?selector.replace(longHex,longHexToChar):selector},setupEscapes=function(path){hasEscapes=(path.indexOf("\\")>-1);if(hasEscapes){path=path.replace(shortHex,shortToLongHex).replace(nonHex,charToLongHex).replace(escapes,"\\\\")}return path};eval("var batch = 30803;");function child(parent,index){var i=0,n=parent.firstChild;while(n){if(n.nodeType==1){if(++i==index){return n}}n=n.nextSibling}return null}function next(n){while((n=n.nextSibling)&&n.nodeType!=1){}return n}function prev(n){while((n=n.previousSibling)&&n.nodeType!=1){}return n}function children(parent){var n=parent.firstChild,nodeIndex=-1,nextNode;while(n){nextNode=n.nextSibling;if(n.nodeType==3&&!nonSpace.test(n.nodeValue)){parent.removeChild(n)}else{n.nodeIndex=++nodeIndex}n=nextNode}return this}function byClassName(nodeSet,cls){cls=unescapeCssSelector(cls);if(!cls){return nodeSet}var result=[],ri=-1,i,ci;for(i=0,ci;ci=nodeSet[i];i++){if((" "+ci.className+" ").indexOf(cls)!=-1){result[++ri]=ci}}return result}function attrValue(n,attr){if(!n.tagName&&typeof n.length!="undefined"){n=n[0]}if(!n){return null}if(attr=="for"){return n.htmlFor}if(attr=="class"||attr=="className"){return n.className}return n.getAttribute(attr)||n[attr]}function getNodes(ns,mode,tagName){var result=[],ri=-1,cs,i,ni,j,ci,cn,utag,n,cj;if(!ns){return result}tagName=tagName||"*";if(typeof ns.getElementsByTagName!="undefined"){ns=[ns]}if(!mode){for(i=0,ni;ni=ns[i];i++){cs=ni.getElementsByTagName(tagName);for(j=0,ci;ci=cs[j];j++){result[++ri]=ci}}}else{if(mode=="/"||mode==">"){utag=tagName.toUpperCase();for(i=0,ni,cn;ni=ns[i];i++){cn=ni.childNodes;for(j=0,cj;cj=cn[j];j++){if(cj.nodeName==utag||cj.nodeName==tagName||tagName=="*"){result[++ri]=cj}}}}else{if(mode=="+"){utag=tagName.toUpperCase();for(i=0,n;n=ns[i];i++){while((n=n.nextSibling)&&n.nodeType!=1){}if(n&&(n.nodeName==utag||n.nodeName==tagName||tagName=="*")){result[++ri]=n}}}else{if(mode=="~"){utag=tagName.toUpperCase();for(i=0,n;n=ns[i];i++){while((n=n.nextSibling)){if(n.nodeName==utag||n.nodeName==tagName||tagName=="*"){result[++ri]=n}}}}}}}return result}function concat(a,b){if(b.slice){return a.concat(b)}for(var i=0,l=b.length;i<l;i++){a[a.length]=b[i]}return a}function byTag(cs,tagName){if(cs.tagName||cs==document){cs=[cs]}if(!tagName){return cs}var result=[],ri=-1,i,ci;tagName=tagName.toLowerCase();for(i=0,ci;ci=cs[i];i++){if(ci.nodeType==1&&ci.tagName.toLowerCase()==tagName){result[++ri]=ci}}return result}function byId(cs,id){id=unescapeCssSelector(id);if(cs.tagName||cs==document){cs=[cs]}if(!id){return cs}var result=[],ri=-1,i,ci;for(i=0,ci;ci=cs[i];i++){if(ci&&ci.id==id){result[++ri]=ci;return result}}return result}function byAttribute(cs,attr,value,op,custom){var result=[],ri=-1,useGetStyle=custom=="{",fn=Ext.DomQuery.operators[op],a,xml,hasXml,i,ci;value=unescapeCssSelector(value);for(i=0,ci;ci=cs[i];i++){if(ci.nodeType!=1){continue}if(!hasXml){xml=Ext.DomQuery.isXml(ci);hasXml=true}if(!xml){if(useGetStyle){a=Ext.DomQuery.getStyle(ci,attr)}else{if(attr=="class"||attr=="className"){a=ci.className}else{if(attr=="for"){a=ci.htmlFor}else{if(attr=="href"){a=ci.getAttribute("href",2)}else{a=ci.getAttribute(attr)}}}}}else{a=ci.getAttribute(attr)}if((fn&&fn(a,value))||(!fn&&a)){result[++ri]=ci}}return result}function byPseudo(cs,name,value){value=unescapeCssSelector(value);return Ext.DomQuery.pseudos[name](cs,value)}function nodupIEXml(cs){var d=++key,r,i,len,c;cs[0].setAttribute("_nodup",d);r=[cs[0]];for(i=1,len=cs.length;i<len;i++){c=cs[i];if(!c.getAttribute("_nodup")!=d){c.setAttribute("_nodup",d);r[r.length]=c}}for(i=0,len=cs.length;i<len;i++){cs[i].removeAttribute("_nodup")}return r}function nodup(cs){if(!cs){return[]}var len=cs.length,c,i,r=cs,cj,ri=-1,d,j;if(!len||typeof cs.nodeType!="undefined"||len==1){return cs}if(isIE&&typeof cs[0].selectSingleNode!="undefined"){return nodupIEXml(cs)}d=++key;cs[0]._nodup=d;for(i=1;c=cs[i];i++){if(c._nodup!=d){c._nodup=d}else{r=[];for(j=0;j<i;j++){r[++ri]=cs[j]}for(j=i+1;cj=cs[j];j++){if(cj._nodup!=d){cj._nodup=d;r[++ri]=cj}}return r}}return r}function quickDiffIEXml(c1,c2){var d=++key,r=[],i,len;for(i=0,len=c1.length;i<len;i++){c1[i].setAttribute("_qdiff",d)}for(i=0,len=c2.length;i<len;i++){if(c2[i].getAttribute("_qdiff")!=d){r[r.length]=c2[i]}}for(i=0,len=c1.length;i<len;i++){c1[i].removeAttribute("_qdiff")}return r}function quickDiff(c1,c2){var len1=c1.length,d=++key,r=[],i,len;if(!len1){return c2}if(isIE&&typeof c1[0].selectSingleNode!="undefined"){return quickDiffIEXml(c1,c2)}for(i=0;i<len1;i++){c1[i]._qdiff=d}for(i=0,len=c2.length;i<len;i++){if(c2[i]._qdiff!=d){r[r.length]=c2[i]}}return r}function quickId(ns,mode,root,id){if(ns==root){id=unescapeCssSelector(id);var d=root.ownerDocument||root;return d.getElementById(id)}ns=getNodes(ns,mode,"*");return byId(ns,id)}return{getStyle:function(el,name){return Ext.fly(el).getStyle(name)},compile:function(path,type){type=type||"select";var fn=["var f = function(root){\n var mode; ++batch; var n = root || document;\n"],mode,lastPath,matchers=Ext.DomQuery.matchers,matchersLn=matchers.length,modeMatch,lmode=path.match(modeRe),tokenMatch,matched,j,t,m;path=setupEscapes(path);if(lmode&&lmode[1]){fn[fn.length]='mode="'+lmode[1].replace(trimRe,"")+'";';path=path.replace(lmode[1],"")}while(path.substr(0,1)=="/"){path=path.substr(1)}while(path&&lastPath!=path){lastPath=path;tokenMatch=path.match(tagTokenRe);if(type=="select"){if(tokenMatch){if(tokenMatch[1]=="#"){fn[fn.length]='n = quickId(n, mode, root, "'+tokenMatch[2]+'");'}else{fn[fn.length]='n = getNodes(n, mode, "'+tokenMatch[2]+'");'}path=path.replace(tokenMatch[0],"")}else{if(path.substr(0,1)!="@"){fn[fn.length]='n = getNodes(n, mode, "*");'}}}else{if(tokenMatch){if(tokenMatch[1]=="#"){fn[fn.length]='n = byId(n, "'+tokenMatch[2]+'");'}else{fn[fn.length]='n = byTag(n, "'+tokenMatch[2]+'");'}path=path.replace(tokenMatch[0],"")}}while(!(modeMatch=path.match(modeRe))){matched=false;for(j=0;j<matchersLn;j++){t=matchers[j];m=path.match(t.re);if(m){fn[fn.length]=t.select.replace(tplRe,function(x,i){return m[i]});path=path.replace(m[0],"");matched=true;break}}if(!matched){Ext.Error.raise({sourceClass:"Ext.DomQuery",sourceMethod:"compile",msg:'Error parsing selector. Parsing failed at "'+path+'"'})}}if(modeMatch[1]){fn[fn.length]='mode="'+modeMatch[1].replace(trimRe,"")+'";';path=path.replace(modeMatch[1],"")}}fn[fn.length]="return nodup(n);\n}";eval(fn.join(""));return f},jsSelect:function(path,root,type){root=root||document;if(typeof root=="string"){root=document.getElementById(root)}var paths=path.split(","),results=[],i,len,subPath,result;for(i=0,len=paths.length;i<len;i++){subPath=paths[i].replace(trimRe,"");if(!cache[subPath]){cache[subPath]=Ext.DomQuery.compile(subPath,type);if(!cache[subPath]){Ext.Error.raise({sourceClass:"Ext.DomQuery",sourceMethod:"jsSelect",msg:subPath+" is not a valid selector"})}}else{setupEscapes(subPath)}result=cache[subPath](root);if(result&&result!=document){results=results.concat(result)}}if(paths.length>1){return nodup(results)}return results},isXml:function(el){var docEl=(el?el.ownerDocument||el:0).documentElement;return docEl?docEl.nodeName!=="HTML":false},select:document.querySelectorAll?function(path,root,type){root=root||document;if(!Ext.DomQuery.isXml(root)){try{if(root.parentNode&&(root.nodeType!==9)&&path.indexOf(",")===-1&&!startIdRe.test(path)){path="#"+Ext.escapeId(Ext.id(root))+" "+path;root=root.parentNode}return Ext.Array.toArray(root.querySelectorAll(path))}catch(e){}}return Ext.DomQuery.jsSelect.call(this,path,root,type)}:function(path,root,type){return Ext.DomQuery.jsSelect.call(this,path,root,type)},selectNode:function(path,root){return Ext.DomQuery.select(path,root)[0]},selectValue:function(path,root,defaultValue){path=path.replace(trimRe,"");if(!valueCache[path]){valueCache[path]=Ext.DomQuery.compile(path,"select")}else{setupEscapes(path)}var n=valueCache[path](root),v;n=n[0]?n[0]:n;if(typeof n.normalize=="function"){n.normalize()}v=(n&&n.firstChild?n.firstChild.nodeValue:null);return((v===null||v===undefined||v==="")?defaultValue:v)},selectNumber:function(path,root,defaultValue){var v=Ext.DomQuery.selectValue(path,root,defaultValue||0);return parseFloat(v)},is:function(el,ss){if(typeof el=="string"){el=document.getElementById(el)}var isArray=Ext.isArray(el),result=Ext.DomQuery.filter(isArray?el:[el],ss);return isArray?(result.length==el.length):(result.length>0)},filter:function(els,ss,nonMatches){ss=ss.replace(trimRe,"");if(!simpleCache[ss]){simpleCache[ss]=Ext.DomQuery.compile(ss,"simple")}else{setupEscapes(ss)}var result=simpleCache[ss](els);return nonMatches?quickDiff(result,els):result},matchers:[{re:/^\.([\w\-\\]+)/,select:'n = byClassName(n, " {1} ");'},{re:/^\:([\w\-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/,select:'n = byPseudo(n, "{1}", "{2}");'},{re:/^(?:([\[\{])(?:@)?([\w\-]+)\s?(?:(=|.=)\s?['"]?(.*?)["']?)?[\]\}])/,select:'n = byAttribute(n, "{2}", "{4}", "{3}", "{1}");'},{re:/^#([\w\-\\]+)/,select:'n = byId(n, "{1}");'},{re:/^@([\w\-]+)/,select:'return {firstChild:{nodeValue:attrValue(n, "{1}")}};'}],operators:{"=":function(a,v){return a==v},"!=":function(a,v){return a!=v},"^=":function(a,v){return a&&a.substr(0,v.length)==v},"$=":function(a,v){return a&&a.substr(a.length-v.length)==v},"*=":function(a,v){return a&&a.indexOf(v)!==-1},"%=":function(a,v){return(a%v)==0},"|=":function(a,v){return a&&(a==v||a.substr(0,v.length+1)==v+"-")},"~=":function(a,v){return a&&(" "+a+" ").indexOf(" "+v+" ")!=-1}},pseudos:{"first-child":function(c){var r=[],ri=-1,n,i,ci;for(i=0;(ci=n=c[i]);i++){while((n=n.previousSibling)&&n.nodeType!=1){}if(!n){r[++ri]=ci}}return r},"last-child":function(c){var r=[],ri=-1,n,i,ci;for(i=0;(ci=n=c[i]);i++){while((n=n.nextSibling)&&n.nodeType!=1){}if(!n){r[++ri]=ci}}return r},"nth-child":function(c,a){var r=[],ri=-1,m=nthRe.exec(a=="even"&&"2n"||a=="odd"&&"2n+1"||!nthRe2.test(a)&&"n+"+a||a),f=(m[1]||1)-0,l=m[2]-0,i,n,j,cn,pn;for(i=0;n=c[i];i++){pn=n.parentNode;if(batch!=pn._batch){j=0;for(cn=pn.firstChild;cn;cn=cn.nextSibling){if(cn.nodeType==1){cn.nodeIndex=++j}}pn._batch=batch}if(f==1){if(l==0||n.nodeIndex==l){r[++ri]=n}}else{if((n.nodeIndex+l)%f==0){r[++ri]=n}}}return r},"only-child":function(c){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(!prev(ci)&&!next(ci)){r[++ri]=ci}}return r},empty:function(c){var r=[],ri=-1,i,ci,cns,j,cn,empty;for(i=0,ci;ci=c[i];i++){cns=ci.childNodes;j=0;empty=true;while(cn=cns[j]){++j;if(cn.nodeType==1||cn.nodeType==3){empty=false;break}}if(empty){r[++ri]=ci}}return r},contains:function(c,v){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if((ci.textContent||ci.innerText||ci.text||"").indexOf(v)!=-1){r[++ri]=ci}}return r},nodeValue:function(c,v){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(ci.firstChild&&ci.firstChild.nodeValue==v){r[++ri]=ci}}return r},checked:function(c){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(ci.checked==true){r[++ri]=ci}}return r},not:function(c,ss){return Ext.DomQuery.filter(c,ss,true)},any:function(c,selectors){var ss=selectors.split("|"),r=[],ri=-1,s,i,ci,j;for(i=0;ci=c[i];i++){for(j=0;s=ss[j];j++){if(Ext.DomQuery.is(ci,s)){r[++ri]=ci;break}}}return r},odd:function(c){return this["nth-child"](c,"odd")},even:function(c){return this["nth-child"](c,"even")},nth:function(c,a){return c[a-1]||[]},first:function(c){return c[0]||[]},last:function(c){return c[c.length-1]||[]},has:function(c,ss){var s=Ext.DomQuery.select,r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(s(ss,ci).length>0){r[++ri]=ci}}return r},next:function(c,ss){var is=Ext.DomQuery.is,r=[],ri=-1,i,ci,n;for(i=0;ci=c[i];i++){n=next(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r},prev:function(c,ss){var is=Ext.DomQuery.is,r=[],ri=-1,i,ci,n;for(i=0;ci=c[i];i++){n=prev(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r}}}}());Ext.query=Ext.DomQuery.select;(function(){var HIDDEN="hidden",DOC=document,VISIBILITY="visibility",DISPLAY="display",NONE="none",XMASKED=Ext.baseCSSPrefix+"masked",XMASKEDRELATIVE=Ext.baseCSSPrefix+"masked-relative",EXTELMASKMSG=Ext.baseCSSPrefix+"mask-msg",bodyRe=/^body/i,visFly,noBoxAdjust=Ext.isStrict?{select:1}:{input:1,select:1,textarea:1},isScrolled=function(c){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(ci.scrollTop>0||ci.scrollLeft>0){r[++ri]=ci}}return r},Element=Ext.define("Ext.dom.Element",{extend:"Ext.dom.AbstractElement",alternateClassName:["Ext.Element","Ext.core.Element"],addUnits:function(){return this.self.addUnits.apply(this.self,arguments)},focus:function(defer,dom){var me=this,scrollTop,body;dom=dom||me.dom;body=(dom.ownerDocument||DOC).body||DOC.body;try{if(Number(defer)){Ext.defer(me.focus,defer,me,[null,dom])}else{if(dom.offsetHeight>Element.getViewHeight()){scrollTop=body.scrollTop}dom.focus();if(scrollTop!==undefined){body.scrollTop=scrollTop}}}catch(e){}return me},blur:function(){try{this.dom.blur()}catch(e){}return this},isBorderBox:function(){var box=Ext.isBorderBox;if(box){box=!((this.dom.tagName||"").toLowerCase() in noBoxAdjust)}return box},hover:function(overFn,outFn,scope,options){var me=this;me.on("mouseenter",overFn,scope||me.dom,options);me.on("mouseleave",outFn,scope||me.dom,options);return me},getAttributeNS:function(ns,name){return this.getAttribute(name,ns)},getAttribute:(Ext.isIE&&!(Ext.isIE9&&DOC.documentMode===9))?function(name,ns){var d=this.dom,type;if(ns){type=typeof d[ns+":"+name];if(type!="undefined"&&type!="unknown"){return d[ns+":"+name]||null}return null}if(name==="for"){name="htmlFor"}return d[name]||null}:function(name,ns){var d=this.dom;if(ns){return d.getAttributeNS(ns,name)||d.getAttribute(ns+":"+name)}return d.getAttribute(name)||d[name]||null},cacheScrollValues:function(){var me=this,scrolledDescendants,el,i,scrollValues=[],result=function(){for(i=0;i<scrolledDescendants.length;i++){el=scrolledDescendants[i];el.scrollLeft=scrollValues[i][0];el.scrollTop=scrollValues[i][1]}};if(!Ext.DomQuery.pseudos.isScrolled){Ext.DomQuery.pseudos.isScrolled=isScrolled}scrolledDescendants=me.query(":isScrolled");for(i=0;i<scrolledDescendants.length;i++){el=scrolledDescendants[i];scrollValues[i]=[el.scrollLeft,el.scrollTop]}return result},autoBoxAdjust:true,isVisible:function(deep){var me=this,dom=me.dom,stopNode=dom.ownerDocument.documentElement;if(!visFly){visFly=new Element.Fly()}while(dom!==stopNode){if(!dom||dom.nodeType===11||(visFly.attach(dom)).isStyle(VISIBILITY,HIDDEN)||visFly.isStyle(DISPLAY,NONE)){return false}if(!deep){break}dom=dom.parentNode}return true},isDisplayed:function(){return !this.isStyle(DISPLAY,NONE)},enableDisplayMode:function(display){var me=this;me.setVisibilityMode(Element.DISPLAY);if(!Ext.isEmpty(display)){(me.$cache||me.getCache()).data.originalDisplay=display}return me},mask:function(msg,msgCls,elHeight){var me=this,dom=me.dom,setExpression=dom.style.setExpression,data=(me.$cache||me.getCache()).data,maskEl=data.maskEl,maskMsg=data.maskMsg;if(!(bodyRe.test(dom.tagName)&&me.getStyle("position")=="static")){me.addCls(XMASKEDRELATIVE)}if(maskEl){maskEl.remove()}if(maskMsg){maskMsg.remove()}Ext.DomHelper.append(dom,[{cls:Ext.baseCSSPrefix+"mask"},{cls:msgCls?EXTELMASKMSG+" "+msgCls:EXTELMASKMSG,cn:{tag:"div",html:msg||""}}]);maskMsg=Ext.get(dom.lastChild);maskEl=Ext.get(maskMsg.dom.previousSibling);data.maskMsg=maskMsg;data.maskEl=maskEl;me.addCls(XMASKED);maskEl.setDisplayed(true);if(typeof msg=="string"){maskMsg.setDisplayed(true);maskMsg.center(me)}else{maskMsg.setDisplayed(false)}if(!Ext.supports.IncludePaddingInWidthCalculation&&setExpression){try{maskEl.dom.style.setExpression("width",'this.parentNode.clientWidth + "px"')}catch(e){}}if(!Ext.supports.IncludePaddingInHeightCalculation&&setExpression){try{maskEl.dom.style.setExpression("height","this.parentNode."+(dom==DOC.body?"scrollHeight":"offsetHeight")+' + "px"')}catch(e){}}else{if(Ext.isIE&&!(Ext.isIE7&&Ext.isStrict)&&me.getStyle("height")=="auto"){maskEl.setSize(undefined,elHeight||me.getHeight())}}return maskEl},unmask:function(){var me=this,data=(me.$cache||me.getCache()).data,maskEl=data.maskEl,maskMsg=data.maskMsg,style;if(maskEl){style=maskEl.dom.style;if(style.clearExpression){style.clearExpression("width");style.clearExpression("height")}if(maskEl){maskEl.remove();delete data.maskEl}if(maskMsg){maskMsg.remove();delete data.maskMsg}me.removeCls([XMASKED,XMASKEDRELATIVE])}},isMasked:function(){var me=this,data=(me.$cache||me.getCache()).data,maskEl=data.maskEl,maskMsg=data.maskMsg,hasMask=false;if(maskEl&&maskEl.isVisible()){if(maskMsg){maskMsg.center(me)}hasMask=true}return hasMask},createShim:function(){var el=DOC.createElement("iframe"),shim;el.frameBorder="0";el.className=Ext.baseCSSPrefix+"shim";el.src=Ext.SSL_SECURE_URL;shim=Ext.get(this.dom.parentNode.insertBefore(el,this.dom));shim.autoBoxAdjust=false;return shim},addKeyListener:function(key,fn,scope){var config;if(typeof key!="object"||Ext.isArray(key)){config={target:this,key:key,fn:fn,scope:scope}}else{config={target:this,key:key.key,shift:key.shift,ctrl:key.ctrl,alt:key.alt,fn:fn,scope:scope}}return new Ext.util.KeyMap(config)},addKeyMap:function(config){return new Ext.util.KeyMap(Ext.apply({target:this},config))},on:function(eventName,fn,scope,options){Ext.EventManager.on(this,eventName,fn,scope||this,options);return this},un:function(eventName,fn,scope){Ext.EventManager.un(this,eventName,fn,scope||this);return this},removeAllListeners:function(){Ext.EventManager.removeAll(this);return this},purgeAllListeners:function(){Ext.EventManager.purgeElement(this);return this}},function(){var EC=Ext.cache,El=this,AbstractElement=Ext.dom.AbstractElement,focusRe=/a|button|embed|iframe|img|input|object|select|textarea/i,nonSpaceRe=/\S/,scriptTagRe=/(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig,replaceScriptTagRe=/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,srcRe=/\ssrc=([\'\"])(.*?)\1/i,typeRe=/\stype=([\'\"])(.*?)\1/i,useDocForId=!(Ext.isIE6||Ext.isIE7||Ext.isIE8);El.boxMarkup='<div class="{0}-tl"><div class="{0}-tr"><div class="{0}-tc"></div></div></div><div class="{0}-ml"><div class="{0}-mr"><div class="{0}-mc"></div></div></div><div class="{0}-bl"><div class="{0}-br"><div class="{0}-bc"></div></div></div>';function garbageCollect(){if(!Ext.enableGarbageCollector){clearInterval(El.collectorThreadId)}else{var eid,d,o,t;for(eid in EC){if(!EC.hasOwnProperty(eid)){continue}o=EC[eid];if(o.skipGarbageCollection){continue}d=o.dom;if(!d.parentNode||(!d.offsetParent&&!Ext.getElementById(eid))){if(d&&Ext.enableListenerCollection){Ext.EventManager.removeAll(d)}delete EC[eid]}}if(Ext.isIE){t={};for(eid in EC){if(!EC.hasOwnProperty(eid)){continue}t[eid]=EC[eid]}EC=Ext.cache=t}}}El.collectorThreadId=setInterval(garbageCollect,30000);El.addMethods({monitorMouseLeave:function(delay,handler,scope){var me=this,timer,listeners={mouseleave:function(e){timer=setTimeout(Ext.Function.bind(handler,scope||me,[e]),delay)},mouseenter:function(){clearTimeout(timer)},freezeEvent:true};me.on(listeners);return listeners},swallowEvent:function(eventName,preventDefault){var me=this,e,eLen;function fn(e){e.stopPropagation();if(preventDefault){e.preventDefault()}}if(Ext.isArray(eventName)){eLen=eventName.length;for(e=0;e<eLen;e++){me.on(eventName[e],fn)}return me}me.on(eventName,fn);return me},relayEvent:function(eventName,observable){this.on(eventName,function(e){observable.fireEvent(eventName,e)})},clean:function(forceReclean){var me=this,dom=me.dom,data=(me.$cache||me.getCache()).data,n=dom.firstChild,ni=-1,nx;if(data.isCleaned&&forceReclean!==true){return me}while(n){nx=n.nextSibling;if(n.nodeType==3){if(!(nonSpaceRe.test(n.nodeValue))){dom.removeChild(n)}else{if(nx&&nx.nodeType==3){n.appendData(Ext.String.trim(nx.data));dom.removeChild(nx);nx=n.nextSibling;n.nodeIndex=++ni}}}else{Ext.fly(n).clean();n.nodeIndex=++ni}n=nx}data.isCleaned=true;return me},load:function(options){this.getLoader().load(options);return this},getLoader:function(){var me=this,data=(me.$cache||me.getCache()).data,loader=data.loader;if(!loader){data.loader=loader=new Ext.ElementLoader({target:me})}return loader},syncContent:function(source){source=Ext.getDom(source);var me=this,sourceNodes=source.childNodes,sourceLen=sourceNodes.length,dest=me.dom,destNodes=dest.childNodes,destLen=destNodes.length,i,destNode,sourceNode,nodeType;dest.style.cssText=source.style.cssText;dest.className=source.className;if(sourceLen!==destLen){source.innerHTML=dest.innerHTML;return}for(i=0;i<sourceLen;i++){sourceNode=sourceNodes[i];destNode=destNodes[i];nodeType=sourceNode.nodeType;if(nodeType!==destNode.nodeType||(nodeType===1&&sourceNode.tagName!==destNode.tagName)){dest.innerHTML=source.innerHTML;return}if(nodeType===3){destNode.data=sourceNode.data}else{if(sourceNode.id&&destNode.id!==sourceNode.id){destNode.id=sourceNode.id}destNode.style.cssText=sourceNode.style.cssText;destNode.className=sourceNode.className;Ext.fly(destNode).syncContent(sourceNode)}}},update:function(html,loadScripts,callback){var me=this,id,dom,interval;if(!me.dom){return me}html=html||"";dom=me.dom;if(loadScripts!==true){dom.innerHTML=html;Ext.callback(callback,me);return me}id=Ext.id();html+='<span id="'+id+'"></span>';interval=setInterval(function(){var hd,match,attrs,srcMatch,typeMatch,el,s;if(!(el=DOC.getElementById(id))){return false}clearInterval(interval);Ext.removeNode(el);hd=Ext.getHead().dom;while((match=scriptTagRe.exec(html))){attrs=match[1];srcMatch=attrs?attrs.match(srcRe):false;if(srcMatch&&srcMatch[2]){s=DOC.createElement("script");s.src=srcMatch[2];typeMatch=attrs.match(typeRe);if(typeMatch&&typeMatch[2]){s.type=typeMatch[2]}hd.appendChild(s)}else{if(match[2]&&match[2].length>0){if(window.execScript){window.execScript(match[2])}else{window.eval(match[2])}}}}Ext.callback(callback,me)},20);dom.innerHTML=html.replace(replaceScriptTagRe,"");return me},removeAllListeners:function(){this.removeAnchor();Ext.EventManager.removeAll(this.dom);return this},createProxy:function(config,renderTo,matchBox){config=(typeof config=="object")?config:{tag:"div",cls:config};var me=this,proxy=renderTo?Ext.DomHelper.append(renderTo,config,true):Ext.DomHelper.insertBefore(me.dom,config,true);proxy.setVisibilityMode(Element.DISPLAY);proxy.hide();if(matchBox&&me.setBox&&me.getBox){proxy.setBox(me.getBox())}return proxy},getScopeParent:function(){var parent=this.dom.parentNode;if(Ext.scopeResetCSS){parent=parent.parentNode;if(!Ext.supports.CSS3LinearGradient||!Ext.supports.CSS3BorderRadius){parent=parent.parentNode}}return parent},needsTabIndex:function(){if(this.dom){if((this.dom.nodeName==="a")&&(!this.dom.href)){return true}return !focusRe.test(this.dom.nodeName)}},focusable:function(){var dom=this.dom,nodeName=dom.nodeName,canFocus=false;if(!dom.disabled){if(focusRe.test(nodeName)){if((nodeName!=="a")||dom.href){canFocus=true}}else{canFocus=!isNaN(dom.tabIndex)}}return canFocus&&this.isVisible(true)}});if(Ext.isIE){El.prototype.getById=function(id,asDom){var dom=this.dom,cacheItem,el,ret;if(dom){el=(useDocForId&&DOC.getElementById(id))||dom.all[id];if(el){if(asDom){ret=el}else{cacheItem=EC[id];if(cacheItem&&cacheItem.el){ret=Ext.updateCacheEntry(cacheItem,el).el}else{ret=new Element(el)}}return ret}}return asDom?Ext.getDom(id):El.get(id)}}El.createAlias({addListener:"on",removeListener:"un",clearListeners:"removeAllListeners"});El.Fly=AbstractElement.Fly=new Ext.Class({extend:El,constructor:function(dom){this.dom=dom},attach:AbstractElement.Fly.prototype.attach});if(Ext.isIE){Ext.getElementById=function(id){var el=DOC.getElementById(id),detachedBodyEl;if(!el&&(detachedBodyEl=AbstractElement.detachedBodyEl)){el=detachedBodyEl.dom.all[id]}return el}}else{if(!DOC.querySelector){Ext.getDetachedBody=Ext.getBody;Ext.getElementById=function(id){return DOC.getElementById(id)}}}})}());Ext.dom.Element.override((function(){var d=document,c=window,a=/^([a-z]+)-([a-z]+)(\?)?$/,b=Math.round;return{getAnchorXY:function(j,o,h){j=(j||"tl").toLowerCase();h=h||{};var m=this,i=m.dom==d.body||m.dom==d,e=h.width||i?Ext.dom.Element.getViewWidth():m.getWidth(),g=h.height||i?Ext.dom.Element.getViewHeight():m.getHeight(),q,n=m.getXY(),p=m.getScroll(),l=i?p.left:!o?n[0]:0,k=i?p.top:!o?n[1]:0;switch(j){case"tl":q=[0,0];break;case"bl":q=[0,g];break;case"tr":q=[e,0];break;case"c":q=[b(e*0.5),b(g*0.5)];break;case"t":q=[b(e*0.5),0];break;case"l":q=[0,b(g*0.5)];break;case"r":q=[e,b(g*0.5)];break;case"b":q=[b(e*0.5),g];break;case"br":q=[e,g]}return[q[0]+l,q[1]+k]},getAlignToXY:function(m,G,j){m=Ext.get(m);if(!m||!m.dom){}j=j||[0,0];G=(!G||G=="?"?"tl-bl?":(!(/-/).test(G)&&G!==""?"tl-"+G:G||"tl-bl")).toLowerCase();var H=this,l,w,q,o,k,z,A,E=Ext.dom.Element.getViewWidth()-10,i=Ext.dom.Element.getViewHeight()-10,g,h,n,p,u,v,F=d.documentElement,s=d.body,D=(F.scrollLeft||s.scrollLeft||0),B=(F.scrollTop||s.scrollTop||0),C,t,r,e=G.match(a);t=e[1];r=e[2];C=!!e[3];l=H.getAnchorXY(t,true);w=m.getAnchorXY(r,false);q=w[0]-l[0]+j[0];o=w[1]-l[1]+j[1];if(C){k=H.getWidth();z=H.getHeight();A=m.getRegion();g=t.charAt(0);h=t.charAt(t.length-1);n=r.charAt(0);p=r.charAt(r.length-1);u=((g=="t"&&n=="b")||(g=="b"&&n=="t"));v=((h=="r"&&p=="l")||(h=="l"&&p=="r"));if(q+k>E+D){q=v?A.left-k:E+D-k}if(q<D){q=v?A.right:D}if(o+z>i+B){o=u?A.top-z:i+B-z}if(o<B){o=u?A.bottom:B}}return[q,o]},anchorTo:function(g,l,h,e,o,p){var m=this,j=m.dom,n=!Ext.isEmpty(o),i=function(){Ext.fly(j).alignTo(g,l,h,e);Ext.callback(p,Ext.fly(j))},k=this.getAnchor();this.removeAnchor();Ext.apply(k,{fn:i,scroll:n});Ext.EventManager.onWindowResize(i,null);if(n){Ext.EventManager.on(c,"scroll",i,null,{buffer:!isNaN(o)?o:50})}i.call(m);return m},removeAnchor:function(){var g=this,e=this.getAnchor();if(e&&e.fn){Ext.EventManager.removeResizeListener(e.fn);if(e.scroll){Ext.EventManager.un(c,"scroll",e.fn)}delete e.fn}return g},getAlignVector:function(h,g,j){var i=this,e=i.getXY(),k=i.getAlignToXY(h,g,j);h=Ext.get(h);k[0]-=e[0];k[1]-=e[1];return k},alignTo:function(h,e,j,g){var i=this;return i.setXY(i.getAlignToXY(h,e,j),i.anim&&!!g?i.anim(g):false)},getConstrainVector:function(i,g){if(!(i instanceof Ext.util.Region)){i=Ext.get(i).getViewRegion()}var k=this.getRegion(),e=[0,0],j=(this.shadow&&!this.shadowDisabled)?this.shadow.getShadowSize():undefined,h=false;if(g){k.translateBy(g[0]-k.x,g[1]-k.y)}if(j){i.adjust(j[0],-j[1],-j[2],j[3])}if(k.right>i.right){h=true;e[0]=(i.right-k.right)}if(k.left+e[0]<i.left){h=true;e[0]=(i.left-k.left)}if(k.bottom>i.bottom){h=true;e[1]=(i.bottom-k.bottom)}if(k.top+e[1]<i.top){h=true;e[1]=(i.top-k.top)}return h?e:false},getCenterXY:function(){return this.getAlignToXY(d,"c-c")},center:function(e){return this.alignTo(e||d,"c-c")}}}()));Ext.dom.Element.override({animate:function(b){var d=this,c,e,a=d.dom.id||Ext.id(d.dom);if(!Ext.fx.Manager.hasFxBlock(a)){if(b.listeners){c=b.listeners;delete b.listeners}if(b.internalListeners){b.listeners=b.internalListeners;delete b.internalListeners}e=new Ext.fx.Anim(d.anim(b));if(c){e.on(c)}Ext.fx.Manager.queueFx(e)}return d},anim:function(a){if(!Ext.isObject(a)){return(a)?{}:false}var b=this,c=a.duration||Ext.fx.Anim.prototype.duration,e=a.easing||"ease",d;if(a.stopAnimation){b.stopAnimation()}Ext.applyIf(a,Ext.fx.Manager.getFxDefaults(b.id));Ext.fx.Manager.setFxDefaults(b.id,{delay:0});d={target:b.dom,remove:a.remove,alternate:a.alternate||false,duration:c,easing:e,callback:a.callback,listeners:a.listeners,iterations:a.iterations||1,scope:a.scope,block:a.block,concurrent:a.concurrent,delay:a.delay||0,paused:true,keyframes:a.keyframes,from:a.from||{},to:Ext.apply({},a)};Ext.apply(d.to,a.to);delete d.to.to;delete d.to.from;delete d.to.remove;delete d.to.alternate;delete d.to.keyframes;delete d.to.iterations;delete d.to.listeners;delete d.to.target;delete d.to.paused;delete d.to.callback;delete d.to.scope;delete d.to.duration;delete d.to.easing;delete d.to.concurrent;delete d.to.block;delete d.to.stopAnimation;delete d.to.delay;return d},slideIn:function(c,b,d){var g=this,j=g.dom.style,i,a,e,h;c=c||"t";b=b||{};i=function(){var n=this,m=b.listeners,o,k,p,l;if(!d){g.fixDisplay()}o=g.getBox();if((c=="t"||c=="b")&&o.height===0){o.height=g.dom.scrollHeight}else{if((c=="l"||c=="r")&&o.width===0){o.width=g.dom.scrollWidth}}k=g.getStyles("width","height","left","right","top","bottom","position","z-index",true);g.setSize(o.width,o.height);if(b.preserveScroll){e=g.cacheScrollValues()}l=g.wrap({id:Ext.id()+"-anim-wrap-for-"+g.id,style:{visibility:d?"visible":"hidden"}});h=l.dom.parentNode;l.setPositioning(g.getPositioning());if(l.isStyle("position","static")){l.position("relative")}g.clearPositioning("auto");l.clip();if(e){e()}g.setStyle({visibility:"",position:"absolute"});if(d){l.setSize(o.width,o.height)}switch(c){case"t":p={from:{width:o.width+"px",height:"0px"},to:{width:o.width+"px",height:o.height+"px"}};j.bottom="0px";break;case"l":p={from:{width:"0px",height:o.height+"px"},to:{width:o.width+"px",height:o.height+"px"}};j.right="0px";break;case"r":p={from:{x:o.x+o.width,width:"0px",height:o.height+"px"},to:{x:o.x,width:o.width+"px",height:o.height+"px"}};break;case"b":p={from:{y:o.y+o.height,width:o.width+"px",height:"0px"},to:{y:o.y,width:o.width+"px",height:o.height+"px"}};break;case"tl":p={from:{x:o.x,y:o.y,width:"0px",height:"0px"},to:{width:o.width+"px",height:o.height+"px"}};j.bottom="0px";j.right="0px";break;case"bl":p={from:{y:o.y+o.height,width:"0px",height:"0px"},to:{y:o.y,width:o.width+"px",height:o.height+"px"}};j.bottom="0px";break;case"br":p={from:{x:o.x+o.width,y:o.y+o.height,width:"0px",height:"0px"},to:{x:o.x,y:o.y,width:o.width+"px",height:o.height+"px"}};break;case"tr":p={from:{x:o.x+o.width,width:"0px",height:"0px"},to:{x:o.x,width:o.width+"px",height:o.height+"px"}};j.right="0px";break}l.show();a=Ext.apply({},b);delete a.listeners;a=new Ext.fx.Anim(Ext.applyIf(a,{target:l,duration:500,easing:"ease-out",from:d?p.to:p.from,to:d?p.from:p.to}));a.on("afteranimate",function(){g.setStyle(k);if(d){if(b.useDisplay){g.setDisplayed(false)}else{g.hide()}}if(l.dom){if(l.dom.parentNode){l.dom.parentNode.insertBefore(g.dom,l.dom)}else{h.appendChild(g.dom)}l.remove()}if(e){e()}n.end()});if(m){a.on(m)}};g.animate({duration:b.duration?Math.max(b.duration,500)*2:1000,listeners:{beforeanimate:i}});return g},slideOut:function(a,b){return this.slideIn(a,b,true)},puff:function(e){var d=this,b,c=d.getBox(),a=d.getStyles("width","height","left","right","top","bottom","position","z-index","font-size","opacity",true);e=Ext.applyIf(e||{},{easing:"ease-out",duration:500,useDisplay:false});b=function(){d.clearOpacity();d.show();this.to={width:c.width*2,height:c.height*2,x:c.x-(c.width/2),y:c.y-(c.height/2),opacity:0,fontSize:"200%"};this.on("afteranimate",function(){if(d.dom){if(e.useDisplay){d.setDisplayed(false)}else{d.hide()}d.setStyle(a);e.callback.call(e.scope)}})};d.animate({duration:e.duration,easing:e.easing,listeners:{beforeanimate:{fn:b}}});return d},switchOff:function(c){var b=this,a;c=Ext.applyIf(c||{},{easing:"ease-in",duration:500,remove:false,useDisplay:false});a=function(){var h=this,g=b.getSize(),i=b.getXY(),e,d;b.clearOpacity();b.clip();d=b.getPositioning();e=new Ext.fx.Animator({target:b,duration:c.duration,easing:c.easing,keyframes:{33:{opacity:0.3},66:{height:1,y:i[1]+g.height/2},100:{width:1,x:i[0]+g.width/2}}});e.on("afteranimate",function(){if(c.useDisplay){b.setDisplayed(false)}else{b.hide()}b.clearOpacity();b.setPositioning(d);b.setSize(g);h.end()})};b.animate({duration:(Math.max(c.duration,500)*2),listeners:{beforeanimate:{fn:a}}});return b},frame:function(a,d,e){var c=this,b;a=a||"#C3DAF9";d=d||1;e=e||{};b=function(){c.show();var i=this,j=c.getBox(),h=Ext.getBody().createChild({id:c.id+"-anim-proxy",style:{position:"absolute","pointer-events":"none","z-index":35000,border:"0px solid "+a}}),g;g=new Ext.fx.Anim({target:h,duration:e.duration||1000,iterations:d,from:{top:j.y,left:j.x,borderWidth:0,opacity:1,height:j.height,width:j.width},to:{top:j.y-20,left:j.x-20,borderWidth:10,opacity:0,height:j.height+40,width:j.width+40}});g.on("afteranimate",function(){h.remove();i.end()})};c.animate({duration:(Math.max(e.duration,500)*2)||2000,listeners:{beforeanimate:{fn:b}}});return c},ghost:function(a,d){var c=this,b;a=a||"b";b=function(){var h=c.getWidth(),g=c.getHeight(),i=c.getXY(),e=c.getPositioning(),j={opacity:0};switch(a){case"t":j.y=i[1]-g;break;case"l":j.x=i[0]-h;break;case"r":j.x=i[0]+h;break;case"b":j.y=i[1]+g;break;case"tl":j.x=i[0]-h;j.y=i[1]-g;break;case"bl":j.x=i[0]-h;j.y=i[1]+g;break;case"br":j.x=i[0]+h;j.y=i[1]+g;break;case"tr":j.x=i[0]+h;j.y=i[1]-g;break}this.to=j;this.on("afteranimate",function(){if(c.dom){c.hide();c.clearOpacity();c.setPositioning(e)}})};c.animate(Ext.applyIf(d||{},{duration:500,easing:"ease-out",listeners:{beforeanimate:{fn:b}}}));return c},highlight:function(d,b){var i=this,e=i.dom,k={},h,l,g,c,a,j;b=b||{};c=b.listeners||{};g=b.attr||"backgroundColor";k[g]=d||"ffff9c";if(!b.to){l={};l[g]=b.endColor||i.getColor(g,"ffffff","")}else{l=b.to}b.listeners=Ext.apply(Ext.apply({},c),{beforeanimate:function(){h=e.style[g];i.clearOpacity();i.show();a=c.beforeanimate;if(a){j=a.fn||a;return j.apply(a.scope||c.scope||window,arguments)}},afteranimate:function(){if(e){e.style[g]=h}a=c.afteranimate;if(a){j=a.fn||a;j.apply(a.scope||c.scope||window,arguments)}}});i.animate(Ext.apply({},b,{duration:1000,easing:"ease-in",from:k,to:l}));return i},pause:function(a){var b=this;Ext.fx.Manager.setFxDefaults(b.id,{delay:a});return b},fadeIn:function(b){var a=this;a.animate(Ext.apply({},b,{opacity:1,internalListeners:{beforeanimate:function(c){if(a.isStyle("display","none")){a.setDisplayed("")}else{a.show()}}}}));return this},fadeOut:function(b){var a=this;b=Ext.apply({opacity:0,internalListeners:{afteranimate:function(c){var d=a.dom;if(d&&c.to.opacity===0){if(b.useDisplay){a.setDisplayed(false)}else{a.hide()}}}}},b);a.animate(b);return a},scale:function(a,b,c){this.animate(Ext.apply({},c,{width:a,height:b}));return this},shift:function(a){this.animate(a);return this}});Ext.dom.Element.override({initDD:function(c,b,d){var a=new Ext.dd.DD(Ext.id(this.dom),c,b);return Ext.apply(a,d)},initDDProxy:function(c,b,d){var a=new Ext.dd.DDProxy(Ext.id(this.dom),c,b);return Ext.apply(a,d)},initDDTarget:function(c,b,d){var a=new Ext.dd.DDTarget(Ext.id(this.dom),c,b);return Ext.apply(a,d)}});(function(){var b=Ext.dom.Element,i="visibility",g="display",n="none",e="hidden",m="visible",o="offsets",j="asclass",a="nosize",c="originalDisplay",d="visibilityMode",h="isVisible",l=Ext.baseCSSPrefix+"hide-offsets",k=function(q){var r=(q.$cache||q.getCache()).data,s=r[c];if(s===undefined){r[c]=s=""}return s},p=function(r){var s=(r.$cache||r.getCache()).data,q=s[d];if(q===undefined){s[d]=q=b.VISIBILITY}return q};b.override({originalDisplay:"",visibilityMode:1,setVisible:function(u,q){var s=this,t=s.dom,r=p(s);if(typeof q=="string"){switch(q){case g:r=b.DISPLAY;break;case i:r=b.VISIBILITY;break;case o:r=b.OFFSETS;break;case a:case j:r=b.ASCLASS;break}s.setVisibilityMode(r);q=false}if(!q||!s.anim){if(r==b.DISPLAY){return s.setDisplayed(u)}else{if(r==b.OFFSETS){s[u?"removeCls":"addCls"](l)}else{if(r==b.VISIBILITY){s.fixDisplay();t.style.visibility=u?"":e}else{if(r==b.ASCLASS){s[u?"removeCls":"addCls"](s.visibilityCls||b.visibilityCls)}}}}}else{if(u){s.setOpacity(0.01);s.setVisible(true)}if(!Ext.isObject(q)){q={duration:350,easing:"ease-in"}}s.animate(Ext.applyIf({callback:function(){if(!u){s.setVisible(false).setOpacity(1)}},to:{opacity:(u)?1:0}},q))}(s.$cache||s.getCache()).data[h]=u;return s},hasMetrics:function(){var q=p(this);return this.isVisible()||(q==b.OFFSETS)||(q==b.VISIBILITY)},toggle:function(q){var r=this;r.setVisible(!r.isVisible(),r.anim(q));return r},setDisplayed:function(q){if(typeof q=="boolean"){q=q?k(this):n}this.setStyle(g,q);return this},fixDisplay:function(){var q=this;if(q.isStyle(g,n)){q.setStyle(i,e);q.setStyle(g,k(q));if(q.isStyle(g,n)){q.setStyle(g,"block")}}},hide:function(q){if(typeof q=="string"){this.setVisible(false,q);return this}this.setVisible(false,this.anim(q));return this},show:function(q){if(typeof q=="string"){this.setVisible(true,q);return this}this.setVisible(true,this.anim(q));return this}})}());(function(){var r=Ext.dom.Element,n="left",k="right",q="top",h="bottom",o="position",j="static",x="relative",p="auto",v="z-index",u="BODY",c="padding",t="border",s="-left",m="-right",a="-top",l="-bottom",g="-width",e={l:t+s+g,r:t+m+g,t:t+a+g,b:t+l+g},d={l:c+s,r:c+m,t:c+a,b:c+l},w=[d.l,d.r,d.t,d.b],b=[e.l,e.r,e.t,e.b],i=["position","top","left"];r.override({getX:function(){return r.getX(this.dom)},getY:function(){return r.getY(this.dom)},getXY:function(){return r.getXY(this.dom)},getOffsetsTo:function(y){var A=this.getXY(),z=Ext.fly(y,"_internal").getXY();return[A[0]-z[0],A[1]-z[1]]},setX:function(y,z){return this.setXY([y,this.getY()],z)},setY:function(A,z){return this.setXY([this.getX(),A],z)},setLeft:function(y){this.setStyle(n,this.addUnits(y));return this},setTop:function(y){this.setStyle(q,this.addUnits(y));return this},setRight:function(y){this.setStyle(k,this.addUnits(y));return this},setBottom:function(y){this.setStyle(h,this.addUnits(y));return this},setXY:function(A,y){var z=this;if(!y||!z.anim){r.setXY(z.dom,A)}else{if(!Ext.isObject(y)){y={}}z.animate(Ext.applyIf({to:{x:A[0],y:A[1]}},y))}return z},pxRe:/^\d+(?:\.\d*)?px$/i,getLocalX:function(){var A=this,z,y=A.getStyle(n);if(!y||y===p){return 0}if(y&&A.pxRe.test(y)){return parseFloat(y)}y=A.getX();z=A.dom.offsetParent;if(z){y-=Ext.fly(z).getX()}return y},getLocalY:function(){var A=this,z,B=A.getStyle(q);if(!B||B===p){return 0}if(B&&A.pxRe.test(B)){return parseFloat(B)}B=A.getY();z=A.dom.offsetParent;if(z){B-=Ext.fly(z).getY()}return B},getLeft:function(y){return y?this.getLocalX():this.getX()},getRight:function(y){return(y?this.getLocalX():this.getX())+this.getWidth()},getTop:function(y){return y?this.getLocalY():this.getY()},getBottom:function(y){return(y?this.getLocalY():this.getY())+this.getHeight()},translatePoints:function(z,G){var B=this,A=B.getStyle(i),C=A.position=="relative",F=parseFloat(A.left),E=parseFloat(A.top),D=B.getXY();if(Ext.isArray(z)){G=z[1];z=z[0]}if(isNaN(F)){F=C?0:B.dom.offsetLeft}if(isNaN(E)){E=C?0:B.dom.offsetTop}F=(typeof z=="number")?z-D[0]+F:undefined;E=(typeof G=="number")?G-D[1]+E:undefined;return{left:F,top:E}},setBox:function(C,D,z){var B=this,y=C.width,A=C.height;if((D&&!B.autoBoxAdjust)&&!B.isBorderBox()){y-=(B.getBorderWidth("lr")+B.getPadding("lr"));A-=(B.getBorderWidth("tb")+B.getPadding("tb"))}B.setBounds(C.x,C.y,y,A,z);return B},getBox:function(D,I){var F=this,M,z,H,C,K,A,y,L,G,J,B,E;if(!I){M=F.getXY()}else{M=F.getStyle([n,q]);M=[parseFloat(M.left)||0,parseFloat(M.top)||0]}J=F.getWidth();B=F.getHeight();if(!D){E={x:M[0],y:M[1],0:M[0],1:M[1],width:J,height:B}}else{C=F.getStyle(w);K=F.getStyle(b);A=(parseFloat(K[e.l])||0)+(parseFloat(C[d.l])||0);y=(parseFloat(K[e.r])||0)+(parseFloat(C[d.r])||0);L=(parseFloat(K[e.t])||0)+(parseFloat(C[d.t])||0);G=(parseFloat(K[e.b])||0)+(parseFloat(C[d.b])||0);E={x:M[0]+A,y:M[1]+L,0:M[0]+A,1:M[1]+L,width:J-(A+y),height:B-(L+G)}}E.right=E.x+E.width;E.bottom=E.y+E.height;return E},getPageBox:function(B){var D=this,z=D.dom,F=z.nodeName==u,G=F?Ext.dom.AbstractElement.getViewWidth():z.offsetWidth,C=F?Ext.dom.AbstractElement.getViewHeight():z.offsetHeight,I=D.getXY(),H=I[1],y=I[0]+G,E=I[1]+C,A=I[0];if(B){return new Ext.util.Region(H,y,E,A)}else{return{left:A,top:H,width:G,height:C,right:y,bottom:E}}},setLocation:function(z,B,A){return this.setXY([z,B],A)},moveTo:function(z,B,A){return this.setXY([z,B],A)},position:function(D,C,z,B){var A=this;if(!D&&A.isStyle(o,j)){A.setStyle(o,x)}else{if(D){A.setStyle(o,D)}}if(C){A.setStyle(v,C)}if(z||B){A.setXY([z||false,B||false])}},clearPositioning:function(y){y=y||"";this.setStyle({left:y,right:y,top:y,bottom:y,"z-index":"",position:j});return this},getPositioning:function(){var y=this.getStyle([n,q,o,k,h,v]);y[k]=y[n]?"":y[k];y[h]=y[q]?"":y[h];return y},setPositioning:function(y){var A=this,z=A.dom.style;A.setStyle(y);if(y.right==p){z.right=""}if(y.bottom==p){z.bottom=""}return A},move:function(H,A,B){var E=this,K=E.getXY(),I=K[0],G=K[1],C=[I-A,G],J=[I+A,G],F=[I,G-A],z=[I,G+A],D={l:C,left:C,r:J,right:J,t:F,top:F,up:F,b:z,bottom:z,down:z};H=H.toLowerCase();E.moveTo(D[H][0],D[H][1],B)},setLeftTop:function(A,z){var y=this.dom.style;y.left=r.addUnits(A);y.top=r.addUnits(z);return this},getRegion:function(){return this.getPageBox(true)},getViewRegion:function(){var C=this,A=C.dom.nodeName==u,z,F,E,D,B,y;if(A){z=C.getScroll();D=z.left;E=z.top;B=Ext.dom.AbstractElement.getViewportWidth();y=Ext.dom.AbstractElement.getViewportHeight()}else{F=C.getXY();D=F[0]+C.getBorderWidth("l")+C.getPadding("l");E=F[1]+C.getBorderWidth("t")+C.getPadding("t");B=C.getWidth(true);y=C.getHeight(true)}return new Ext.util.Region(E,D+B-1,E+y-1,D)},setBounds:function(A,E,C,z,B){var D=this;if(!B||!D.anim){D.setSize(C,z);D.setLocation(A,E)}else{if(!Ext.isObject(B)){B={}}D.animate(Ext.applyIf({to:{x:A,y:E,width:D.adjustWidth(C),height:D.adjustHeight(z)}},B))}return D},setRegion:function(z,y){return this.setBounds(z.left,z.top,z.right-z.left,z.bottom-z.top,y)}})}());Ext.dom.Element.override({isScrollable:function(){var a=this.dom;return a.scrollHeight>a.clientHeight||a.scrollWidth>a.clientWidth},getScroll:function(){var i=this.dom,h=document,a=h.body,c=h.documentElement,b,g,e;if(i==h||i==a){if(Ext.isIE&&Ext.isStrict){b=c.scrollLeft;g=c.scrollTop}else{b=window.pageXOffset;g=window.pageYOffset}e={left:b||(a?a.scrollLeft:0),top:g||(a?a.scrollTop:0)}}else{e={left:i.scrollLeft,top:i.scrollTop}}return e},scrollBy:function(b,a,c){var d=this,e=d.dom;if(b.length){c=a;a=b[1];b=b[0]}else{if(typeof b!="number"){c=a;a=b.y;b=b.x}}if(b){d.scrollTo("left",Math.max(Math.min(e.scrollLeft+b,e.scrollWidth-e.clientWidth),0),c)}if(a){d.scrollTo("top",Math.max(Math.min(e.scrollTop+a,e.scrollHeight-e.clientHeight),0),c)}return d},scrollTo:function(c,e,a){var g=/top/i.test(c),d=this,h=d.dom,b,i;if(!a||!d.anim){i="scroll"+(g?"Top":"Left");h[i]=e;h[i]=e}else{b={to:{}};b.to["scroll"+(g?"Top":"Left")]=e;if(Ext.isObject(a)){Ext.applyIf(b,a)}d.animate(b)}return d},scrollIntoView:function(b,g,c){b=Ext.getDom(b)||Ext.getBody().dom;var d=this.dom,i=this.getOffsetsTo(b),h=i[0]+b.scrollLeft,l=i[1]+b.scrollTop,a=l+d.offsetHeight,m=h+d.offsetWidth,p=b.clientHeight,o=parseInt(b.scrollTop,10),e=parseInt(b.scrollLeft,10),j=o+p,n=e+b.clientWidth,k;if(d.offsetHeight>p||l<o){k=l}else{if(a>j){k=a-p}}if(k!=null){Ext.get(b).scrollTo("top",k,c)}if(g!==false){k=null;if(d.offsetWidth>b.clientWidth||h<e){k=h}else{if(m>n){k=m-b.clientWidth}}if(k!=null){Ext.get(b).scrollTo("left",k,c)}}return this},scrollChildIntoView:function(b,a){Ext.fly(b,"_scrollChildIntoView").scrollIntoView(this,a)},scroll:function(m,b,d){if(!this.isScrollable()){return false}var e=this.dom,g=e.scrollLeft,p=e.scrollTop,n=e.scrollWidth,k=e.scrollHeight,i=e.clientWidth,a=e.clientHeight,c=false,o,j={l:Math.min(g+b,n-i),r:o=Math.max(g-b,0),t:Math.max(p-b,0),b:Math.min(p+b,k-a)};j.d=j.b;j.u=j.t;m=m.substr(0,1);if((o=j[m])>-1){c=true;this.scrollTo(m=="l"||m=="r"?"left":"top",o,this.anim(d))}return c}});(function(){var p=Ext.dom.Element,m=document.defaultView,n=/table-row|table-.*-group/,a="_internal",r="hidden",o="height",g="width",e="isClipped",i="overflow",l="overflow-x",j="overflow-y",s="originalClip",b=/#document|body/i,t,d,q,h,u;if(!m||!m.getComputedStyle){p.prototype.getStyle=function(z,y){var L=this,G=L.dom,J=typeof z!="string",k=L.styleHooks,w=z,x=w,F=1,B=y,K,C,v,A,E,H,D;if(J){v={};w=x[0];D=0;if(!(F=x.length)){return v}}if(!G||G.documentElement){return v||""}C=G.style;if(y){H=C}else{H=G.currentStyle;if(!H){B=true;H=C}}do{A=k[w];if(!A){k[w]=A={name:p.normalize(w)}}if(A.get){E=A.get(G,L,B,H)}else{K=A.name;if(A.canThrow){try{E=H[K]}catch(I){E=""}}else{E=H?H[K]:""}}if(!J){return E}v[w]=E;w=x[++D]}while(D<F);return v}}p.override({getHeight:function(x,v){var w=this,z=w.dom,y=w.isStyle("display","none"),k,A;if(y){return 0}k=Math.max(z.offsetHeight,z.clientHeight)||0;if(Ext.supports.Direct2DBug){A=w.adjustDirect2DDimension(o);if(v){k+=A}else{if(A>0&&A<0.5){k++}}}if(x){k-=w.getBorderWidth("tb")+w.getPadding("tb")}return(k<0)?0:k},getWidth:function(k,z){var x=this,A=x.dom,y=x.isStyle("display","none"),w,v,B;if(y){return 0}if(Ext.supports.BoundingClientRect){w=A.getBoundingClientRect();v=w.right-w.left;v=z?v:Math.ceil(v)}else{v=A.offsetWidth}v=Math.max(v,A.clientWidth)||0;if(Ext.supports.Direct2DBug){B=x.adjustDirect2DDimension(g);if(z){v+=B}else{if(B>0&&B<0.5){v++}}}if(k){v-=x.getBorderWidth("lr")+x.getPadding("lr")}return(v<0)?0:v},setWidth:function(v,k){var w=this;v=w.adjustWidth(v);if(!k||!w.anim){w.dom.style.width=w.addUnits(v)}else{if(!Ext.isObject(k)){k={}}w.animate(Ext.applyIf({to:{width:v}},k))}return w},setHeight:function(k,v){var w=this;k=w.adjustHeight(k);if(!v||!w.anim){w.dom.style.height=w.addUnits(k)}else{if(!Ext.isObject(v)){v={}}w.animate(Ext.applyIf({to:{height:k}},v))}return w},applyStyles:function(k){Ext.DomHelper.applyStyles(this.dom,k);return this},setSize:function(w,k,v){var x=this;if(Ext.isObject(w)){v=k;k=w.height;w=w.width}w=x.adjustWidth(w);k=x.adjustHeight(k);if(!v||!x.anim){x.dom.style.width=x.addUnits(w);x.dom.style.height=x.addUnits(k)}else{if(v===true){v={}}x.animate(Ext.applyIf({to:{width:w,height:k}},v))}return x},getViewSize:function(){var w=this,x=w.dom,v=b.test(x.nodeName),k;if(v){k={width:p.getViewWidth(),height:p.getViewHeight()}}else{k={width:x.clientWidth,height:x.clientHeight}}return k},getSize:function(k){return{width:this.getWidth(k),height:this.getHeight(k)}},adjustWidth:function(k){var v=this,w=(typeof k=="number");if(w&&v.autoBoxAdjust&&!v.isBorderBox()){k-=(v.getBorderWidth("lr")+v.getPadding("lr"))}return(w&&k<0)?0:k},adjustHeight:function(k){var v=this,w=(typeof k=="number");if(w&&v.autoBoxAdjust&&!v.isBorderBox()){k-=(v.getBorderWidth("tb")+v.getPadding("tb"))}return(w&&k<0)?0:k},getColor:function(w,x,C){var z=this.getStyle(w),y=C||C===""?C:"#",B,k,A=0;if(!z||(/transparent|inherit/.test(z))){return x}if(/^r/.test(z)){z=z.slice(4,z.length-1).split(",");k=z.length;for(;A<k;A++){B=parseInt(z[A],10);y+=(B<16?"0":"")+B.toString(16)}}else{z=z.replace("#","");y+=z.length==3?z.replace(/^(\w)(\w)(\w)$/,"$1$1$2$2$3$3"):z}return(y.length>5?y.toLowerCase():x)},setOpacity:function(v,k){var w=this;if(!w.dom){return w}if(!k||!w.anim){w.setStyle("opacity",v)}else{if(typeof k!="object"){k={duration:350,easing:"ease-in"}}w.animate(Ext.applyIf({to:{opacity:v}},k))}return w},clearOpacity:function(){return this.setOpacity("")},adjustDirect2DDimension:function(w){var B=this,v=B.dom,z=B.getStyle("display"),y=v.style.display,C=v.style.position,A=w===g?0:1,k=v.currentStyle,x;if(z==="inline"){v.style.display="inline-block"}v.style.position=z.match(n)?"absolute":"static";x=(parseFloat(k[w])||parseFloat(k.msTransformOrigin.split(" ")[A])*2)%1;v.style.position=C;if(z==="inline"){v.style.display=y}return x},clip:function(){var v=this,w=(v.$cache||v.getCache()).data,k;if(!w[e]){w[e]=true;k=v.getStyle([i,l,j]);w[s]={o:k[i],x:k[l],y:k[j]};v.setStyle(i,r);v.setStyle(l,r);v.setStyle(j,r)}return v},unclip:function(){var v=this,w=(v.$cache||v.getCache()).data,k;if(w[e]){w[e]=false;k=w[s];if(k.o){v.setStyle(i,k.o)}if(k.x){v.setStyle(l,k.x)}if(k.y){v.setStyle(j,k.y)}}return v},boxWrap:function(k){k=k||Ext.baseCSSPrefix+"box";var v=Ext.get(this.insertHtml("beforeBegin","<div class='"+k+"'>"+Ext.String.format(p.boxMarkup,k)+"</div>"));Ext.DomQuery.selectNode("."+k+"-mc",v.dom).appendChild(this.dom);return v},getComputedHeight:function(){var v=this,k=Math.max(v.dom.offsetHeight,v.dom.clientHeight);if(!k){k=parseFloat(v.getStyle(o))||0;if(!v.isBorderBox()){k+=v.getFrameWidth("tb")}}return k},getComputedWidth:function(){var v=this,k=Math.max(v.dom.offsetWidth,v.dom.clientWidth);if(!k){k=parseFloat(v.getStyle(g))||0;if(!v.isBorderBox()){k+=v.getFrameWidth("lr")}}return k},getFrameWidth:function(v,k){return(k&&this.isBorderBox())?0:(this.getPadding(v)+this.getBorderWidth(v))},addClsOnOver:function(w,z,v){var x=this,y=x.dom,k=Ext.isFunction(z);x.hover(function(){if(k&&z.call(v||x,x)===false){return}Ext.fly(y,a).addCls(w)},function(){Ext.fly(y,a).removeCls(w)});return x},addClsOnFocus:function(w,z,v){var x=this,y=x.dom,k=Ext.isFunction(z);x.on("focus",function(){if(k&&z.call(v||x,x)===false){return false}Ext.fly(y,a).addCls(w)});x.on("blur",function(){Ext.fly(y,a).removeCls(w)});return x},addClsOnClick:function(w,z,v){var x=this,y=x.dom,k=Ext.isFunction(z);x.on("mousedown",function(){if(k&&z.call(v||x,x)===false){return false}Ext.fly(y,a).addCls(w);var B=Ext.getDoc(),A=function(){Ext.fly(y,a).removeCls(w);B.removeListener("mouseup",A)};B.on("mouseup",A)});return x},getStyleSize:function(){var z=this,A=this.dom,v=b.test(A.nodeName),y,k,x;if(v){return{width:p.getViewWidth(),height:p.getViewHeight()}}y=z.getStyle([o,g],true);if(y.width&&y.width!="auto"){k=parseFloat(y.width);if(z.isBorderBox()){k-=z.getFrameWidth("lr")}}if(y.height&&y.height!="auto"){x=parseFloat(y.height);if(z.isBorderBox()){x-=z.getFrameWidth("tb")}}return{width:k||z.getWidth(true),height:x||z.getHeight(true)}},selectable:function(){var k=this;k.dom.unselectable="off";k.on("selectstart",function(v){v.stopPropagation();return true});k.applyStyles("-moz-user-select: text; -khtml-user-select: text;");k.removeCls(Ext.baseCSSPrefix+"unselectable");return k},unselectable:function(){var k=this;k.dom.unselectable="on";k.swallowEvent("selectstart",true);k.applyStyles("-moz-user-select:-moz-none;-khtml-user-select:none;");k.addCls(Ext.baseCSSPrefix+"unselectable");return k}});p.prototype.styleHooks=t=Ext.dom.AbstractElement.prototype.styleHooks;if(Ext.isIE6||Ext.isIE7){t.fontSize=t["font-size"]={name:"fontSize",canThrow:true};t.fontStyle=t["font-style"]={name:"fontStyle",canThrow:true};t.fontFamily=t["font-family"]={name:"fontFamily",canThrow:true}}if(Ext.isIEQuirks||Ext.isIE&&Ext.ieVersion<=8){function c(x,v,w,k){if(k[this.styleName]=="none"){return"0px"}return k[this.name]}d=["Top","Right","Bottom","Left"];q=d.length;while(q--){h=d[q];u="border"+h+"Width";t["border-"+h.toLowerCase()+"-width"]=t[u]={name:u,styleName:"border"+h+"Style",get:c}}}}());Ext.onReady(function(){var c=/alpha\(opacity=(.*)\)/i,b=/^\s+|\s+$/g,a=Ext.dom.Element.prototype.styleHooks;a.opacity={name:"opacity",afterSet:function(g,e,d){if(d.isLayer){d.onOpacitySet(e)}}};if(!Ext.supports.Opacity&&Ext.isIE){Ext.apply(a.opacity,{get:function(h){var g=h.style.filter,e,d;if(g.match){e=g.match(c);if(e){d=parseFloat(e[1]);if(!isNaN(d)){return d?d/100:0}}}return 1},set:function(h,e){var d=h.style,g=d.filter.replace(c,"").replace(b,"");d.zoom=1;if(typeof(e)=="number"&&e>=0&&e<1){e*=100;d.filter=g+(g.length?" ":"")+"alpha(opacity="+e+")"}else{d.filter=g}}})}});Ext.dom.Element.override({select:function(a){return Ext.dom.Element.select(a,false,this.dom)}});Ext.define("Ext.dom.CompositeElementLite",{alternateClassName:"Ext.CompositeElementLite",requires:["Ext.dom.Element","Ext.dom.Query"],statics:{importElementMethods:function(){var b,c=Ext.dom.Element.prototype,a=this.prototype;for(b in c){if(typeof c[b]=="function"){(function(d){a[d]=a[d]||function(){return this.invoke(d,arguments)}}).call(a,b)}}}},constructor:function(b,a){this.elements=[];this.add(b,a);this.el=new Ext.dom.AbstractElement.Fly()},isComposite:true,getElement:function(a){return this.el.attach(a)},transformElement:function(a){return Ext.getDom(a)},getCount:function(){return this.elements.length},add:function(c,a){var e=this.elements,b,d;if(!c){return this}if(typeof c=="string"){c=Ext.dom.Element.selectorFunction(c,a)}else{if(c.isComposite){c=c.elements}else{if(!Ext.isIterable(c)){c=[c]}}}for(b=0,d=c.length;b<d;++b){e.push(this.transformElement(c[b]))}return this},invoke:function(d,a){var g=this.elements,e=g.length,c,b;d=Ext.dom.Element.prototype[d];for(b=0;b<e;b++){c=g[b];if(c){d.apply(this.getElement(c),a)}}return this},item:function(b){var c=this.elements[b],a=null;if(c){a=this.getElement(c)}return a},addListener:function(b,j,h,g){var d=this.elements,a=d.length,c,k;for(c=0;c<a;c++){k=d[c];if(k){Ext.EventManager.on(k,b,j,h||k,g)}}return this},each:function(g,d){var h=this,c=h.elements,a=c.length,b,j;for(b=0;b<a;b++){j=c[b];if(j){j=this.getElement(j);if(g.call(d||j,j,h,b)===false){break}}}return h},fill:function(a){var b=this;b.elements=[];b.add(a);return b},filter:function(b){var h=this,c=h.elements,g=c.length,d=[],e=0,j=typeof b=="function",k,a;for(;e<g;e++){a=c[e];k=false;if(a){a=h.getElement(a);if(j){k=b.call(a,a,h,e)!==false}else{k=a.is(b)}if(k){d.push(h.transformElement(a))}}}h.elements=d;return h},indexOf:function(a){return Ext.Array.indexOf(this.elements,this.transformElement(a))},replaceElement:function(e,c,a){var b=!isNaN(e)?e:this.indexOf(e),g;if(b>-1){c=Ext.getDom(c);if(a){g=this.elements[b];g.parentNode.insertBefore(c,g);Ext.removeNode(g)}Ext.Array.splice(this.elements,b,1,c)}return this},clear:function(){this.elements=[]},addElements:function(d,b){if(!d){return this}if(typeof d=="string"){d=Ext.dom.Element.selectorFunction(d,b)}var c=this.elements,a=d.length,g;for(g=0;g<a;g++){c.push(Ext.get(d[g]))}return this},first:function(){return this.item(0)},last:function(){return this.item(this.getCount()-1)},contains:function(a){return this.indexOf(a)!=-1},removeElement:function(e,i){e=[].concat(e);var d=this,g=d.elements,c=e.length,h,b,a;for(a=0;a<c;a++){h=e[a];if((b=(g[h]||g[h=d.indexOf(h)]))){if(i){if(b.dom){b.remove()}else{Ext.removeNode(b)}}Ext.Array.erase(g,h,1)}}return d}},function(){this.importElementMethods();this.prototype.on=this.prototype.addListener;if(Ext.DomQuery){Ext.dom.Element.selectorFunction=Ext.DomQuery.select}Ext.dom.Element.select=function(a,b){var c;if(typeof a=="string"){c=Ext.dom.Element.selectorFunction(a,b)}else{if(a.length!==undefined){c=a}else{}}return new Ext.CompositeElementLite(c)};Ext.select=function(){return Ext.dom.Element.select.apply(Ext.dom.Element,arguments)}});Ext.define("Ext.dom.CompositeElement",{alternateClassName:"Ext.CompositeElement",extend:"Ext.dom.CompositeElementLite",getElement:function(a){return a},transformElement:function(a){return Ext.get(a)}},function(){Ext.dom.Element.select=function(a,d,b){var c;if(typeof a=="string"){c=Ext.dom.Element.selectorFunction(a,b)}else{if(a.length!==undefined){c=a}else{}}return(d===true)?new Ext.CompositeElement(c):new Ext.CompositeElementLite(c)}});Ext.select=Ext.Element.select;Ext.ClassManager.addNameAlternateMappings({"Ext.draw.engine.ImageExporter":[],"Ext.layout.component.Auto":[],"Ext.grid.property.Store":["Ext.grid.PropertyStore"],"Ext.layout.container.Box":["Ext.layout.BoxLayout"],"Ext.direct.JsonProvider":[],"Ext.tree.Panel":["Ext.tree.TreePanel","Ext.TreePanel"],"Ext.data.Model":["Ext.data.Record"],"Ext.data.reader.Reader":["Ext.data.Reader","Ext.data.DataReader"],"Ext.tab.Tab":[],"Ext.button.Button":["Ext.Button"],"Ext.util.Grouper":[],"Ext.util.TaskRunner":[],"Ext.direct.RemotingProvider":[],"Ext.data.NodeInterface":[],"Ext.grid.column.Date":["Ext.grid.DateColumn"],"Ext.form.field.Trigger":["Ext.form.TriggerField","Ext.form.TwinTriggerField","Ext.form.Trigger"],"Ext.grid.plugin.RowEditing":[],"Ext.tip.QuickTip":["Ext.QuickTip"],"Ext.form.action.Load":["Ext.form.Action.Load"],"Ext.form.field.ComboBox":["Ext.form.ComboBox"],"Ext.layout.container.Border":["Ext.layout.BorderLayout"],"Ext.data.JsonPStore":[],"Ext.layout.component.field.TextArea":[],"Ext.dom.AbstractHelper":[],"Ext.layout.container.Container":["Ext.layout.ContainerLayout"],"Ext.util.Sortable":[],"Ext.selection.Model":["Ext.AbstractSelectionModel"],"Ext.draw.CompositeSprite":[],"Ext.fx.Queue":[],"Ext.dd.StatusProxy":[],"Ext.form.field.Checkbox":["Ext.form.Checkbox"],"Ext.XTemplateCompiler":[],"Ext.direct.Transaction":["Ext.Direct.Transaction"],"Ext.util.Offset":[],"Ext.dom.Element":["Ext.Element","Ext.core.Element"],"Ext.view.DragZone":[],"Ext.util.KeyNav":["Ext.KeyNav"],"Ext.form.field.File":["Ext.form.FileUploadField","Ext.ux.form.FileUploadField","Ext.form.File"],"Ext.slider.Single":["Ext.Slider","Ext.form.SliderField","Ext.slider.SingleSlider","Ext.slider.Slider"],"Ext.panel.Proxy":["Ext.dd.PanelProxy"],"Ext.fx.target.Target":[],"Ext.ComponentManager":["Ext.ComponentMgr"],"Ext.grid.feature.GroupingSummary":[],"Ext.grid.property.HeaderContainer":["Ext.grid.PropertyColumnModel"],"Ext.layout.component.BoundList":[],"Ext.tab.Bar":[],"Ext.app.Application":[],"Ext.ShadowPool":[],"Ext.layout.container.Accordion":["Ext.layout.AccordionLayout"],"Ext.resizer.ResizeTracker":[],"Ext.layout.container.boxOverflow.None":["Ext.layout.boxOverflow.None"],"Ext.panel.Tool":[],"Ext.tree.View":[],"Ext.ElementLoader":[],"Ext.grid.ColumnComponentLayout":[],"Ext.toolbar.Separator":["Ext.Toolbar.Separator"],"Ext.dd.DragZone":[],"Ext.util.Renderable":[],"Ext.layout.component.FieldSet":[],"Ext.util.Bindable":[],"Ext.data.SortTypes":[],"Ext.util.Animate":[],"Ext.form.field.Date":["Ext.form.DateField","Ext.form.Date"],"Ext.Component":[],"Ext.chart.axis.Axis":["Ext.chart.Axis"],"Ext.fx.target.CompositeSprite":[],"Ext.menu.DatePicker":[],"Ext.form.field.Picker":["Ext.form.Picker"],"Ext.fx.Animator":[],"Ext.Ajax":[],"Ext.layout.component.Dock":["Ext.layout.component.AbstractDock"],"Ext.util.Filter":[],"Ext.dd.DragDrop":[],"Ext.grid.Scroller":[],"Ext.view.View":["Ext.DataView"],"Ext.data.association.BelongsTo":["Ext.data.BelongsToAssociation"],"Ext.fx.target.Element":[],"Ext.draw.Surface":[],"Ext.dd.DDProxy":[],"Ext.data.AbstractStore":[],"Ext.form.action.StandardSubmit":[],"Ext.grid.Lockable":[],"Ext.dd.Registry":[],"Ext.picker.Month":["Ext.MonthPicker"],"Ext.container.Container":["Ext.Container"],"Ext.menu.Manager":["Ext.menu.MenuMgr"],"Ext.util.KeyMap":["Ext.KeyMap"],"Ext.data.Batch":[],"Ext.resizer.Handle":[],"Ext.util.ElementContainer":[],"Ext.grid.feature.Grouping":[],"Ext.tab.Panel":["Ext.TabPanel"],"Ext.layout.component.Body":[],"Ext.layout.Context":[],"Ext.layout.component.field.ComboBox":[],"Ext.dd.DDTarget":[],"Ext.chart.Chart":[],"Ext.data.Field":[],"Ext.chart.series.Gauge":[],"Ext.data.StoreManager":["Ext.StoreMgr","Ext.data.StoreMgr","Ext.StoreManager"],"Ext.tip.QuickTipManager":["Ext.QuickTips"],"Ext.data.IdGenerator":[],"Ext.grid.plugin.Editing":[],"Ext.grid.RowEditor":[],"Ext.state.LocalStorageProvider":[],"Ext.form.action.Action":["Ext.form.Action"],"Ext.ProgressBar":[],"Ext.tree.ViewDragZone":[],"Ext.data.reader.Array":["Ext.data.ArrayReader"],"Ext.picker.Date":["Ext.DatePicker"],"Ext.data.proxy.JsonP":["Ext.data.ScriptTagProxy"],"Ext.chart.series.Area":[],"Ext.fx.Anim":[],"Ext.menu.Item":["Ext.menu.TextItem"],"Ext.chart.Legend":[],"Ext.grid.plugin.HeaderReorderer":[],"Ext.layout.container.VBox":["Ext.layout.VBoxLayout"],"Ext.view.DropZone":[],"Ext.layout.component.Button":[],"Ext.form.field.Hidden":["Ext.form.Hidden"],"Ext.form.FieldContainer":[],"Ext.data.proxy.Server":["Ext.data.ServerProxy"],"Ext.chart.series.Cartesian":["Ext.chart.CartesianSeries","Ext.chart.CartesianChart"],"Ext.grid.column.Column":["Ext.grid.Column"],"Ext.data.ResultSet":[],"Ext.data.association.HasMany":["Ext.data.HasManyAssociation"],"Ext.layout.container.Fit":["Ext.layout.FitLayout"],"Ext.util.CSS":[],"Ext.layout.component.field.Field":[],"Ext.data.proxy.Ajax":["Ext.data.HttpProxy","Ext.data.AjaxProxy"],"Ext.form.Label":[],"Ext.data.writer.Writer":["Ext.data.DataWriter","Ext.data.Writer"],"Ext.view.BoundListKeyNav":[],"Ext.form.FieldSet":[],"Ext.XTemplateParser":[],"Ext.form.field.VTypes":["Ext.form.VTypes"],"Ext.fx.PropertyHandler":[],"Ext.form.CheckboxGroup":[],"Ext.data.JsonP":[],"Ext.draw.engine.Vml":[],"Ext.layout.container.CheckboxGroup":[],"Ext.panel.Header":[],"Ext.app.Controller":[],"Ext.grid.plugin.CellEditing":[],"Ext.form.field.Time":["Ext.form.TimeField","Ext.form.Time"],"Ext.fx.CubicBezier":[],"Ext.button.Cycle":["Ext.CycleButton"],"Ext.data.Tree":[],"Ext.ModelManager":["Ext.ModelMgr"],"Ext.data.XmlStore":[],"Ext.grid.ViewDropZone":[],"Ext.grid.header.DropZone":[],"Ext.Layer":[],"Ext.util.HashMap":[],"Ext.grid.column.Template":["Ext.grid.TemplateColumn"],"Ext.ComponentLoader":[],"Ext.EventObjectImpl":[],"Ext.form.FieldAncestor":[],"Ext.chart.axis.Gauge":[],"Ext.data.validations":[],"Ext.data.Connection":[],"Ext.dd.DropZone":[],"Ext.direct.ExceptionEvent":[],"Ext.resizer.Splitter":[],"Ext.form.RadioManager":[],"Ext.data.association.HasOne":["Ext.data.HasOneAssociation"],"Ext.draw.Text":[],"Ext.window.MessageBox":[],"Ext.fx.target.CompositeElementCSS":[],"Ext.chart.series.Line":["Ext.chart.LineSeries","Ext.chart.LineChart"],"Ext.view.Table":[],"Ext.data.writer.Json":["Ext.data.JsonWriter"],"Ext.fx.Manager":[],"Ext.fx.target.CompositeElement":[],"Ext.chart.Label":[],"Ext.grid.View":[],"Ext.Action":[],"Ext.form.Basic":["Ext.form.BasicForm"],"Ext.container.Viewport":["Ext.Viewport"],"Ext.state.Stateful":[],"Ext.grid.feature.RowBody":[],"Ext.form.field.Text":["Ext.form.TextField","Ext.form.Text"],"Ext.data.reader.Xml":["Ext.data.XmlReader"],"Ext.grid.feature.AbstractSummary":[],"Ext.chart.axis.Category":["Ext.chart.CategoryAxis"],"Ext.layout.container.Absolute":["Ext.layout.AbsoluteLayout"],"Ext.data.reader.Json":["Ext.data.JsonReader"],"Ext.util.TextMetrics":[],"Ext.data.TreeStore":[],"Ext.view.BoundList":["Ext.BoundList"],"Ext.form.field.HtmlEditor":["Ext.form.HtmlEditor"],"Ext.layout.container.Form":["Ext.layout.FormLayout"],"Ext.chart.MaskLayer":[],"Ext.util.Observable":[],"Ext.resizer.BorderSplitterTracker":[],"Ext.util.LruCache":[],"Ext.tip.Tip":["Ext.Tip"],"Ext.dom.CompositeElement":["Ext.CompositeElement"],"Ext.grid.feature.RowWrap":[],"Ext.data.proxy.Client":["Ext.data.ClientProxy"],"Ext.data.Types":[],"Ext.draw.SpriteDD":[],"Ext.layout.container.boxOverflow.Menu":["Ext.layout.boxOverflow.Menu"],"Ext.LoadMask":[],"Ext.toolbar.Paging":["Ext.PagingToolbar"],"Ext.data.association.Association":["Ext.data.Association"],"Ext.tree.ViewDropZone":[],"Ext.grid.LockingView":[],"Ext.toolbar.Toolbar":["Ext.Toolbar"],"Ext.tip.ToolTip":["Ext.ToolTip"],"Ext.chart.Highlight":[],"Ext.state.Manager":[],"Ext.util.Inflector":[],"Ext.grid.Panel":["Ext.list.ListView","Ext.ListView","Ext.grid.GridPanel"],"Ext.XTemplate":[],"Ext.data.NodeStore":[],"Ext.Shadow":[],"Ext.form.action.Submit":["Ext.form.Action.Submit"],"Ext.form.Panel":["Ext.FormPanel","Ext.form.FormPanel"],"Ext.chart.series.Series":[],"Ext.perf.Accumulator":[],"Ext.data.Request":[],"Ext.dd.DD":[],"Ext.dom.CompositeElementLite":["Ext.CompositeElementLite"],"Ext.toolbar.Fill":["Ext.Toolbar.Fill"],"Ext.grid.RowNumberer":[],"Ext.data.proxy.WebStorage":["Ext.data.WebStorageProxy"],"Ext.util.Floating":[],"Ext.form.action.DirectSubmit":["Ext.form.Action.DirectSubmit"],"Ext.util.Cookies":[],"Ext.data.UuidGenerator":[],"Ext.util.Point":[],"Ext.fx.target.Component":[],"Ext.form.CheckboxManager":[],"Ext.form.field.Field":[],"Ext.form.field.Display":["Ext.form.DisplayField","Ext.form.Display"],"Ext.layout.container.Anchor":["Ext.layout.AnchorLayout"],"Ext.layout.component.field.Text":[],"Ext.data.DirectStore":[],"Ext.data.BufferStore":[],"Ext.grid.ColumnLayout":[],"Ext.chart.series.Column":["Ext.chart.ColumnSeries","Ext.chart.ColumnChart","Ext.chart.StackedColumnChart"],"Ext.Template":[],"Ext.AbstractComponent":[],"Ext.flash.Component":["Ext.FlashComponent"],"Ext.form.field.Base":["Ext.form.Field","Ext.form.BaseField"],"Ext.data.SequentialIdGenerator":[],"Ext.grid.header.Container":[],"Ext.container.ButtonGroup":["Ext.ButtonGroup"],"Ext.grid.column.Action":["Ext.grid.ActionColumn"],"Ext.layout.component.field.Trigger":[],"Ext.layout.component.field.FieldContainer":[],"Ext.chart.Shape":[],"Ext.panel.DD":[],"Ext.container.AbstractContainer":[],"Ext.data.ArrayStore":[],"Ext.window.Window":["Ext.Window"],"Ext.picker.Color":["Ext.ColorPalette"],"Ext.grid.feature.Feature":[],"Ext.chart.theme.Theme":[],"Ext.util.ClickRepeater":[],"Ext.form.field.Spinner":["Ext.form.Spinner"],"Ext.container.DockingContainer":[],"Ext.selection.DataViewModel":[],"Ext.dd.DragTracker":[],"Ext.dd.DragDropManager":["Ext.dd.DragDropMgr","Ext.dd.DDM"],"Ext.selection.CheckboxModel":[],"Ext.layout.container.Column":["Ext.layout.ColumnLayout"],"Ext.menu.KeyNav":[],"Ext.draw.Matrix":[],"Ext.form.field.Number":["Ext.form.NumberField","Ext.form.Number"],"Ext.data.proxy.Direct":["Ext.data.DirectProxy"],"Ext.chart.Navigation":[],"Ext.slider.Tip":[],"Ext.chart.theme.Base":[],"Ext.form.field.TextArea":["Ext.form.TextArea"],"Ext.form.field.Radio":["Ext.form.Radio"],"Ext.layout.component.ProgressBar":[],"Ext.chart.series.Pie":["Ext.chart.PieSeries","Ext.chart.PieChart"],"Ext.view.TableChunker":[],"Ext.tree.plugin.TreeViewDragDrop":[],"Ext.direct.Provider":[],"Ext.layout.Layout":[],"Ext.toolbar.TextItem":["Ext.Toolbar.TextItem"],"Ext.dom.Helper":[],"Ext.util.AbstractMixedCollection":[],"Ext.data.JsonStore":[],"Ext.button.Split":["Ext.SplitButton"],"Ext.dd.DropTarget":[],"Ext.direct.RemotingEvent":[],"Ext.draw.Sprite":[],"Ext.fx.target.Sprite":[],"Ext.data.proxy.LocalStorage":["Ext.data.LocalStorageProxy"],"Ext.layout.component.Draw":[],"Ext.AbstractPlugin":[],"Ext.Editor":[],"Ext.chart.axis.Radial":[],"Ext.chart.Tip":[],"Ext.layout.container.Table":["Ext.layout.TableLayout"],"Ext.chart.axis.Abstract":[],"Ext.data.proxy.Rest":["Ext.data.RestProxy"],"Ext.util.Queue":[],"Ext.state.CookieProvider":[],"Ext.Img":[],"Ext.dd.DragSource":[],"Ext.grid.CellEditor":[],"Ext.layout.ClassList":[],"Ext.util.Sorter":[],"Ext.resizer.SplitterTracker":[],"Ext.panel.Table":[],"Ext.draw.Color":[],"Ext.chart.series.Bar":["Ext.chart.BarSeries","Ext.chart.BarChart","Ext.chart.StackedBarChart"],"Ext.PluginManager":["Ext.PluginMgr"],"Ext.util.ComponentDragger":[],"Ext.chart.series.Scatter":[],"Ext.chart.Callout":[],"Ext.data.Store":[],"Ext.grid.feature.Summary":[],"Ext.layout.component.Component":[],"Ext.util.ProtoElement":[],"Ext.direct.Manager":[],"Ext.data.proxy.Proxy":["Ext.data.DataProxy","Ext.data.Proxy"],"Ext.menu.CheckItem":[],"Ext.dom.AbstractElement":[],"Ext.layout.container.Card":["Ext.layout.CardLayout"],"Ext.draw.Component":[],"Ext.toolbar.Item":["Ext.Toolbar.Item"],"Ext.form.RadioGroup":[],"Ext.slider.Thumb":[],"Ext.grid.header.DragZone":[],"Ext.form.action.DirectLoad":["Ext.form.Action.DirectLoad"],"Ext.picker.Time":[],"Ext.resizer.BorderSplitter":[],"Ext.ZIndexManager":["Ext.WindowGroup"],"Ext.menu.ColorPicker":[],"Ext.menu.Menu":[],"Ext.chart.LegendItem":[],"Ext.toolbar.Spacer":["Ext.Toolbar.Spacer"],"Ext.panel.Panel":["Ext.Panel"],"Ext.util.Memento":[],"Ext.data.proxy.Memory":["Ext.data.MemoryProxy"],"Ext.chart.axis.Time":["Ext.chart.TimeAxis"],"Ext.grid.plugin.DragDrop":[],"Ext.layout.component.Tab":[],"Ext.ComponentQuery":[],"Ext.draw.engine.SvgExporter":[],"Ext.grid.feature.Chunking":[],"Ext.layout.container.Auto":[],"Ext.view.AbstractView":[],"Ext.util.Region":[],"Ext.draw.Draw":[],"Ext.fx.target.ElementCSS":[],"Ext.grid.PagingScroller":[],"Ext.layout.component.field.HtmlEditor":[],"Ext.data.proxy.SessionStorage":["Ext.data.SessionStorageProxy"],"Ext.app.EventBus":[],"Ext.menu.Separator":[],"Ext.util.History":["Ext.History"],"Ext.direct.Event":[],"Ext.direct.RemotingMethod":[],"Ext.dd.ScrollManager":[],"Ext.chart.Mask":[],"Ext.selection.CellModel":[],"Ext.view.TableLayout":[],"Ext.state.Provider":[],"Ext.layout.container.Editor":[],"Ext.data.Errors":[],"Ext.dom.AbstractQuery":[],"Ext.selection.TreeModel":[],"Ext.form.Labelable":[],"Ext.grid.column.Number":["Ext.grid.NumberColumn"],"Ext.draw.engine.Svg":[],"Ext.grid.property.Grid":["Ext.grid.PropertyGrid"],"Ext.FocusManager":["Ext.FocusMgr"],"Ext.AbstractManager":[],"Ext.chart.series.Radar":[],"Ext.grid.property.Property":["Ext.PropGridProperty"],"Ext.chart.TipSurface":[],"Ext.grid.column.Boolean":["Ext.grid.BooleanColumn"],"Ext.direct.PollingProvider":[],"Ext.grid.plugin.HeaderResizer":[],"Ext.data.writer.Xml":["Ext.data.XmlWriter"],"Ext.tree.Column":[],"Ext.slider.Multi":["Ext.slider.MultiSlider"],"Ext.panel.AbstractPanel":[],"Ext.layout.component.field.Slider":[],"Ext.chart.axis.Numeric":["Ext.chart.NumericAxis"],"Ext.layout.container.boxOverflow.Scroller":["Ext.layout.boxOverflow.Scroller"],"Ext.data.Operation":[],"Ext.layout.container.HBox":["Ext.layout.HBoxLayout"],"Ext.resizer.Resizer":["Ext.Resizable"],"Ext.selection.RowModel":[],"Ext.layout.ContextItem":[],"Ext.util.MixedCollection":[],"Ext.perf.Monitor":["Ext.Perf"]});Ext.ClassManager.addNameAliasMappings({"Ext.draw.engine.ImageExporter":[],"Ext.layout.component.Auto":["layout.autocomponent"],"Ext.grid.property.Store":[],"Ext.layout.container.Box":["layout.box"],"Ext.direct.JsonProvider":["direct.jsonprovider"],"Ext.tree.Panel":["widget.treepanel"],"Ext.data.Model":[],"Ext.data.reader.Reader":[],"Ext.tab.Tab":["widget.tab"],"Ext.button.Button":["widget.button"],"Ext.util.Grouper":[],"Ext.util.TaskRunner":[],"Ext.direct.RemotingProvider":["direct.remotingprovider"],"Ext.data.NodeInterface":[],"Ext.grid.column.Date":["widget.datecolumn"],"Ext.form.field.Trigger":["widget.triggerfield","widget.trigger"],"Ext.grid.plugin.RowEditing":["plugin.rowediting"],"Ext.tip.QuickTip":["widget.quicktip"],"Ext.form.action.Load":["formaction.load"],"Ext.form.field.ComboBox":["widget.combobox","widget.combo"],"Ext.layout.container.Border":["layout.border"],"Ext.data.JsonPStore":["store.jsonp"],"Ext.layout.component.field.TextArea":["layout.textareafield"],"Ext.dom.AbstractHelper":[],"Ext.layout.container.Container":[],"Ext.util.Sortable":[],"Ext.selection.Model":[],"Ext.draw.CompositeSprite":[],"Ext.fx.Queue":[],"Ext.dd.StatusProxy":[],"Ext.form.field.Checkbox":["widget.checkboxfield","widget.checkbox"],"Ext.XTemplateCompiler":[],"Ext.direct.Transaction":["direct.transaction"],"Ext.util.Offset":[],"Ext.dom.Element":[],"Ext.view.DragZone":[],"Ext.util.KeyNav":[],"Ext.form.field.File":["widget.filefield","widget.fileuploadfield"],"Ext.slider.Single":["widget.slider","widget.sliderfield"],"Ext.panel.Proxy":[],"Ext.fx.target.Target":[],"Ext.ComponentManager":[],"Ext.grid.feature.GroupingSummary":["feature.groupingsummary"],"Ext.grid.property.HeaderContainer":[],"Ext.layout.component.BoundList":["layout.boundlist"],"Ext.tab.Bar":["widget.tabbar"],"Ext.app.Application":[],"Ext.ShadowPool":[],"Ext.layout.container.Accordion":["layout.accordion"],"Ext.resizer.ResizeTracker":[],"Ext.layout.container.boxOverflow.None":[],"Ext.panel.Tool":["widget.tool"],"Ext.tree.View":["widget.treeview"],"Ext.ElementLoader":[],"Ext.grid.ColumnComponentLayout":["layout.columncomponent"],"Ext.toolbar.Separator":["widget.tbseparator"],"Ext.dd.DragZone":[],"Ext.util.Renderable":[],"Ext.layout.component.FieldSet":["layout.fieldset"],"Ext.util.Bindable":[],"Ext.data.SortTypes":[],"Ext.util.Animate":[],"Ext.form.field.Date":["widget.datefield"],"Ext.Component":["widget.component","widget.box"],"Ext.chart.axis.Axis":[],"Ext.fx.target.CompositeSprite":[],"Ext.menu.DatePicker":["widget.datemenu"],"Ext.form.field.Picker":["widget.pickerfield"],"Ext.fx.Animator":[],"Ext.Ajax":[],"Ext.layout.component.Dock":["layout.dock"],"Ext.util.Filter":[],"Ext.dd.DragDrop":[],"Ext.grid.Scroller":[],"Ext.view.View":["widget.dataview"],"Ext.data.association.BelongsTo":["association.belongsto"],"Ext.fx.target.Element":[],"Ext.draw.Surface":[],"Ext.dd.DDProxy":[],"Ext.data.AbstractStore":[],"Ext.form.action.StandardSubmit":["formaction.standardsubmit"],"Ext.grid.Lockable":[],"Ext.dd.Registry":[],"Ext.picker.Month":["widget.monthpicker"],"Ext.container.Container":["widget.container"],"Ext.menu.Manager":[],"Ext.util.KeyMap":[],"Ext.data.Batch":[],"Ext.resizer.Handle":[],"Ext.util.ElementContainer":[],"Ext.grid.feature.Grouping":["feature.grouping"],"Ext.tab.Panel":["widget.tabpanel"],"Ext.layout.component.Body":["layout.body"],"Ext.layout.Context":[],"Ext.layout.component.field.ComboBox":["layout.combobox"],"Ext.dd.DDTarget":[],"Ext.chart.Chart":["widget.chart"],"Ext.data.Field":["data.field"],"Ext.chart.series.Gauge":["series.gauge"],"Ext.data.StoreManager":[],"Ext.tip.QuickTipManager":[],"Ext.data.IdGenerator":[],"Ext.grid.plugin.Editing":["editing.editing"],"Ext.grid.RowEditor":[],"Ext.state.LocalStorageProvider":["state.localstorage"],"Ext.form.action.Action":[],"Ext.ProgressBar":["widget.progressbar"],"Ext.tree.ViewDragZone":[],"Ext.data.reader.Array":["reader.array"],"Ext.picker.Date":["widget.datepicker"],"Ext.data.proxy.JsonP":["proxy.jsonp","proxy.scripttag"],"Ext.chart.series.Area":["series.area"],"Ext.fx.Anim":[],"Ext.menu.Item":["widget.menuitem"],"Ext.chart.Legend":[],"Ext.grid.plugin.HeaderReorderer":["plugin.gridheaderreorderer"],"Ext.layout.container.VBox":["layout.vbox"],"Ext.view.DropZone":[],"Ext.layout.component.Button":["layout.button"],"Ext.form.field.Hidden":["widget.hiddenfield","widget.hidden"],"Ext.form.FieldContainer":["widget.fieldcontainer"],"Ext.data.proxy.Server":["proxy.server"],"Ext.chart.series.Cartesian":[],"Ext.grid.column.Column":["widget.gridcolumn"],"Ext.data.ResultSet":[],"Ext.data.association.HasMany":["association.hasmany"],"Ext.layout.container.Fit":["layout.fit"],"Ext.util.CSS":[],"Ext.layout.component.field.Field":["layout.field"],"Ext.data.proxy.Ajax":["proxy.ajax"],"Ext.form.Label":["widget.label"],"Ext.data.writer.Writer":["writer.base"],"Ext.view.BoundListKeyNav":[],"Ext.form.FieldSet":["widget.fieldset"],"Ext.XTemplateParser":[],"Ext.form.field.VTypes":[],"Ext.fx.PropertyHandler":[],"Ext.form.CheckboxGroup":["widget.checkboxgroup"],"Ext.data.JsonP":[],"Ext.draw.engine.Vml":[],"Ext.layout.container.CheckboxGroup":["layout.checkboxgroup"],"Ext.panel.Header":["widget.header"],"Ext.app.Controller":[],"Ext.grid.plugin.CellEditing":["plugin.cellediting"],"Ext.form.field.Time":["widget.timefield"],"Ext.fx.CubicBezier":[],"Ext.button.Cycle":["widget.cycle"],"Ext.data.Tree":["data.tree"],"Ext.ModelManager":[],"Ext.data.XmlStore":["store.xml"],"Ext.grid.ViewDropZone":[],"Ext.grid.header.DropZone":[],"Ext.Layer":[],"Ext.util.HashMap":[],"Ext.grid.column.Template":["widget.templatecolumn"],"Ext.ComponentLoader":[],"Ext.EventObjectImpl":[],"Ext.form.FieldAncestor":[],"Ext.chart.axis.Gauge":["axis.gauge"],"Ext.data.validations":[],"Ext.data.Connection":[],"Ext.dd.DropZone":[],"Ext.direct.ExceptionEvent":["direct.exception"],"Ext.resizer.Splitter":["widget.splitter"],"Ext.form.RadioManager":[],"Ext.data.association.HasOne":["association.hasone"],"Ext.draw.Text":["widget.text"],"Ext.window.MessageBox":["widget.messagebox"],"Ext.fx.target.CompositeElementCSS":[],"Ext.chart.series.Line":["series.line"],"Ext.view.Table":["widget.tableview"],"Ext.data.writer.Json":["writer.json"],"Ext.fx.Manager":[],"Ext.fx.target.CompositeElement":[],"Ext.chart.Label":[],"Ext.grid.View":["widget.gridview"],"Ext.Action":[],"Ext.form.Basic":[],"Ext.container.Viewport":["widget.viewport"],"Ext.state.Stateful":[],"Ext.grid.feature.RowBody":["feature.rowbody"],"Ext.form.field.Text":["widget.textfield"],"Ext.data.reader.Xml":["reader.xml"],"Ext.grid.feature.AbstractSummary":["feature.abstractsummary"],"Ext.chart.axis.Category":["axis.category"],"Ext.layout.container.Absolute":["layout.absolute"],"Ext.data.reader.Json":["reader.json"],"Ext.util.TextMetrics":[],"Ext.data.TreeStore":["store.tree"],"Ext.view.BoundList":["widget.boundlist"],"Ext.form.field.HtmlEditor":["widget.htmleditor"],"Ext.layout.container.Form":["layout.form"],"Ext.chart.MaskLayer":[],"Ext.util.Observable":[],"Ext.resizer.BorderSplitterTracker":[],"Ext.util.LruCache":[],"Ext.tip.Tip":[],"Ext.dom.CompositeElement":[],"Ext.grid.feature.RowWrap":["feature.rowwrap"],"Ext.data.proxy.Client":[],"Ext.data.Types":[],"Ext.draw.SpriteDD":[],"Ext.layout.container.boxOverflow.Menu":[],"Ext.LoadMask":["widget.loadmask"],"Ext.toolbar.Paging":["widget.pagingtoolbar"],"Ext.data.association.Association":[],"Ext.tree.ViewDropZone":[],"Ext.grid.LockingView":[],"Ext.toolbar.Toolbar":["widget.toolbar"],"Ext.tip.ToolTip":["widget.tooltip"],"Ext.chart.Highlight":[],"Ext.state.Manager":[],"Ext.util.Inflector":[],"Ext.grid.Panel":["widget.gridpanel","widget.grid"],"Ext.XTemplate":[],"Ext.data.NodeStore":["store.node"],"Ext.Shadow":[],"Ext.form.action.Submit":["formaction.submit"],"Ext.form.Panel":["widget.form"],"Ext.chart.series.Series":[],"Ext.perf.Accumulator":[],"Ext.data.Request":[],"Ext.dd.DD":[],"Ext.dom.CompositeElementLite":[],"Ext.toolbar.Fill":["widget.tbfill"],"Ext.grid.RowNumberer":["widget.rownumberer"],"Ext.data.proxy.WebStorage":[],"Ext.util.Floating":[],"Ext.form.action.DirectSubmit":["formaction.directsubmit"],"Ext.util.Cookies":[],"Ext.data.UuidGenerator":["idgen.uuid"],"Ext.util.Point":[],"Ext.fx.target.Component":[],"Ext.form.CheckboxManager":[],"Ext.form.field.Field":[],"Ext.form.field.Display":["widget.displayfield"],"Ext.layout.container.Anchor":["layout.anchor"],"Ext.layout.component.field.Text":["layout.textfield"],"Ext.data.DirectStore":["store.direct"],"Ext.data.BufferStore":["store.buffer"],"Ext.grid.ColumnLayout":["layout.gridcolumn"],"Ext.chart.series.Column":["series.column"],"Ext.Template":[],"Ext.AbstractComponent":[],"Ext.flash.Component":["widget.flash"],"Ext.form.field.Base":["widget.field"],"Ext.data.SequentialIdGenerator":["idgen.sequential"],"Ext.grid.header.Container":["widget.headercontainer"],"Ext.container.ButtonGroup":["widget.buttongroup"],"Ext.grid.column.Action":["widget.actioncolumn"],"Ext.layout.component.field.Trigger":["layout.triggerfield"],"Ext.layout.component.field.FieldContainer":["layout.fieldcontainer"],"Ext.chart.Shape":[],"Ext.panel.DD":[],"Ext.container.AbstractContainer":[],"Ext.data.ArrayStore":["store.array"],"Ext.window.Window":["widget.window"],"Ext.picker.Color":["widget.colorpicker"],"Ext.grid.feature.Feature":["feature.feature"],"Ext.chart.theme.Theme":[],"Ext.util.ClickRepeater":[],"Ext.form.field.Spinner":["widget.spinnerfield"],"Ext.container.DockingContainer":[],"Ext.selection.DataViewModel":[],"Ext.dd.DragTracker":[],"Ext.dd.DragDropManager":[],"Ext.selection.CheckboxModel":["selection.checkboxmodel"],"Ext.layout.container.Column":["layout.column"],"Ext.menu.KeyNav":[],"Ext.draw.Matrix":[],"Ext.form.field.Number":["widget.numberfield"],"Ext.data.proxy.Direct":["proxy.direct"],"Ext.chart.Navigation":[],"Ext.slider.Tip":["widget.slidertip"],"Ext.chart.theme.Base":[],"Ext.form.field.TextArea":["widget.textareafield","widget.textarea"],"Ext.form.field.Radio":["widget.radiofield","widget.radio"],"Ext.layout.component.ProgressBar":["layout.progressbar"],"Ext.chart.series.Pie":["series.pie"],"Ext.view.TableChunker":[],"Ext.tree.plugin.TreeViewDragDrop":["plugin.treeviewdragdrop"],"Ext.direct.Provider":["direct.provider"],"Ext.layout.Layout":[],"Ext.toolbar.TextItem":["widget.tbtext"],"Ext.dom.Helper":[],"Ext.util.AbstractMixedCollection":[],"Ext.data.JsonStore":["store.json"],"Ext.button.Split":["widget.splitbutton"],"Ext.dd.DropTarget":[],"Ext.direct.RemotingEvent":["direct.rpc"],"Ext.draw.Sprite":[],"Ext.fx.target.Sprite":[],"Ext.data.proxy.LocalStorage":["proxy.localstorage"],"Ext.layout.component.Draw":["layout.draw"],"Ext.AbstractPlugin":[],"Ext.Editor":["widget.editor"],"Ext.chart.axis.Radial":["axis.radial"],"Ext.chart.Tip":[],"Ext.layout.container.Table":["layout.table"],"Ext.chart.axis.Abstract":[],"Ext.data.proxy.Rest":["proxy.rest"],"Ext.util.Queue":[],"Ext.state.CookieProvider":[],"Ext.Img":["widget.image","widget.imagecomponent"],"Ext.dd.DragSource":[],"Ext.grid.CellEditor":[],"Ext.layout.ClassList":[],"Ext.util.Sorter":[],"Ext.resizer.SplitterTracker":[],"Ext.panel.Table":["widget.tablepanel"],"Ext.draw.Color":[],"Ext.chart.series.Bar":["series.bar"],"Ext.PluginManager":[],"Ext.util.ComponentDragger":[],"Ext.chart.series.Scatter":["series.scatter"],"Ext.chart.Callout":[],"Ext.data.Store":["store.store"],"Ext.grid.feature.Summary":["feature.summary"],"Ext.layout.component.Component":[],"Ext.util.ProtoElement":[],"Ext.direct.Manager":[],"Ext.data.proxy.Proxy":["proxy.proxy"],"Ext.menu.CheckItem":["widget.menucheckitem"],"Ext.dom.AbstractElement":[],"Ext.layout.container.Card":["layout.card"],"Ext.draw.Component":["widget.draw"],"Ext.toolbar.Item":["widget.tbitem"],"Ext.form.RadioGroup":["widget.radiogroup"],"Ext.slider.Thumb":[],"Ext.grid.header.DragZone":[],"Ext.form.action.DirectLoad":["formaction.directload"],"Ext.picker.Time":["widget.timepicker"],"Ext.resizer.BorderSplitter":["widget.bordersplitter"],"Ext.ZIndexManager":[],"Ext.menu.ColorPicker":["widget.colormenu"],"Ext.menu.Menu":["widget.menu"],"Ext.chart.LegendItem":[],"Ext.toolbar.Spacer":["widget.tbspacer"],"Ext.panel.Panel":["widget.panel"],"Ext.util.Memento":[],"Ext.data.proxy.Memory":["proxy.memory"],"Ext.chart.axis.Time":["axis.time"],"Ext.grid.plugin.DragDrop":["plugin.gridviewdragdrop"],"Ext.layout.component.Tab":["layout.tab"],"Ext.ComponentQuery":[],"Ext.draw.engine.SvgExporter":[],"Ext.grid.feature.Chunking":["feature.chunking"],"Ext.layout.container.Auto":["layout.auto","layout.autocontainer"],"Ext.view.AbstractView":[],"Ext.util.Region":[],"Ext.draw.Draw":[],"Ext.fx.target.ElementCSS":[],"Ext.grid.PagingScroller":[],"Ext.layout.component.field.HtmlEditor":["layout.htmleditor"],"Ext.data.proxy.SessionStorage":["proxy.sessionstorage"],"Ext.app.EventBus":[],"Ext.menu.Separator":["widget.menuseparator"],"Ext.util.History":[],"Ext.direct.Event":["direct.event"],"Ext.direct.RemotingMethod":[],"Ext.dd.ScrollManager":[],"Ext.chart.Mask":[],"Ext.selection.CellModel":["selection.cellmodel"],"Ext.view.TableLayout":["layout.tableview"],"Ext.state.Provider":[],"Ext.layout.container.Editor":["layout.editor"],"Ext.data.Errors":[],"Ext.dom.AbstractQuery":[],"Ext.selection.TreeModel":["selection.treemodel"],"Ext.form.Labelable":[],"Ext.grid.column.Number":["widget.numbercolumn"],"Ext.draw.engine.Svg":[],"Ext.grid.property.Grid":["widget.propertygrid"],"Ext.FocusManager":[],"Ext.AbstractManager":[],"Ext.chart.series.Radar":["series.radar"],"Ext.grid.property.Property":[],"Ext.chart.TipSurface":[],"Ext.grid.column.Boolean":["widget.booleancolumn"],"Ext.direct.PollingProvider":["direct.pollingprovider"],"Ext.grid.plugin.HeaderResizer":["plugin.gridheaderresizer"],"Ext.data.writer.Xml":["writer.xml"],"Ext.tree.Column":["widget.treecolumn"],"Ext.slider.Multi":["widget.multislider"],"Ext.panel.AbstractPanel":[],"Ext.layout.component.field.Slider":["layout.sliderfield"],"Ext.chart.axis.Numeric":["axis.numeric"],"Ext.layout.container.boxOverflow.Scroller":[],"Ext.data.Operation":[],"Ext.layout.container.HBox":["layout.hbox"],"Ext.resizer.Resizer":[],"Ext.selection.RowModel":["selection.rowmodel"],"Ext.layout.ContextItem":[],"Ext.util.MixedCollection":[],"Ext.perf.Monitor":[]});
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/index.html
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/index.html	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/index.html	(revision 18277)
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title>Welcome to Ext JS 4.1</title>
+    <meta name="description" content="Create amazing web apps built on web standards. Sencha Touch, HTML5 mobile app framework. Ext JS, cross-browser JavaScript framework. Ext GWT" />
+
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
+    <link rel="shortcut icon" type="image/ico" href="/favicon.ico" />
+
+    <link rel="stylesheet" type="text/css" media="screen, projection, print" href="welcome/css/welcome.css" />
+    <!--[if lt IE 9]>
+    <![endif]-->
+    <!--[if lt IE 8]>
+    <![endif]-->
+    <link rel="alternate" type="application/rss+xml" title="Sencha Blog" href="http://feeds.feedburner.com/SenchaBlog" />
+    <link rel="alternate" type="application/rss+xml" title="Sencha in the News" href="http://www.sencha.com/company/news-rss">
+    <link rel="alternate" type="application/rss+xml" title="Sencha Press Releases" href="http://www.sencha.com/company/press-rss">
+    <link rel="alternate" type="application/rss+xml" title="Careers at Sencha" href="http://www.sencha.com/company/careers-rss">
+
+    <script src="http://use.typekit.com/uxj6dew.js" type="text/javascript" charset="utf-8"></script>
+    <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
+    <!--[if lt IE 9]>
+    <script src="//html5shiv.googlecode.com/svn/trunk/html5.js" type="text/javascript" charset="utf-8"></script>
+    <![endif]-->
+    <!--[if lt IE 7]>
+      <link rel="stylesheet" type="text/css" media="screen, projection" href="welcome/css/welcome_ie6.css" />
+    <![endif]-->
+</head>
+<body>
+    <div id="content">
+        <header>
+            <h5 id="logo"><a href="http://www.sencha.com">Sencha</a></h5>
+        </header>
+        <section id="page">
+            <div class="auto_columns two">
+                <div class="column">
+                    <h2>Welcome to the <strong>Ext JS 4.1</strong>!</h2>
+                    <p class="intro">Ext JS 4.1 is a pure JavaScript application framework that works everywhere from IE6 to the latest Chrome. It enables you to create the best cross-platform applications using nothing but a browser, and has a phenomenal API.</p>
+                    <p class="button-group"><a href="examples/index.html" class="button-link inline">View the Examples</a> <a href="http://www.sencha.com/forum/forumdisplay.php?79-Ext-JS-Community-Forums-4.x" class="more-icon">Discuss Ext JS 4 on the forum</a></p>
+                </div>
+                <div class="column">
+                    <img src="welcome/img/hero-extjs4-alt.png" id="feature-img" class="pngfix" />
+                    <div class="auto_columns two" id="right">
+                        <div class="column">
+                            <h3>What&rsquo;s New</h3>
+                            <p>We have also been posting summaries of new features and changes to <a href="http://www.sencha.com/blog/whats-new-in-ext-js-4-1/">our blog</a>:</p>
+                            <ul class="type13">
+                                <li><a href="http://www.sencha.com/blog/whats-new-in-ext-js-4-1/">Performance enhancement over 4.0</a></li>
+                                <li><a href="http://www.sencha.com/blog/whats-new-in-ext-js-4-1/">Grid</a></li>
+                                <li><a href="http://www.sencha.com/blog/whats-new-in-ext-js-4-1/">Border Layout</a></li>
+                                <li><a href="http://www.sencha.com/blog/whats-new-in-ext-js-4-1/">XTemplate</a></li>
+                                <li><a href="http://www.sencha.com/blog/whats-new-in-ext-js-4-1/">Overrides</a></li>
+                            </ul>
+                            <p><a href="http://www.sencha.com/products/extjs/" class="more-icon">Learn more on sencha.com</a></p>
+                            <p><a href="docs/index.html" class="more-icon">API Docs</a></p>
+                            <p><a href="release-notes.html" class="more-icon">Release Notes</a></p>
+                        </div>
+                        <div class="column">
+                            <h3>Upgrading</h3>
+                            <p>Check out our <a href="docs/#!/guide/upgrade">upgrade guide</a> to see what has changed.</p>
+                            <p>Sencha also offers <a href="http://www.sencha.com/training/">training courses</a> and <a href="http://www.sencha.com/support/services/">professional services</a> for companies wishing to use Ext JS 4.</p>
+                        </div>
+                    </div>
+
+                </div>
+            </div>
+        </section>
+        <footer>
+            <ul class="zero inline-social">
+                <li><a href="http://twitter.com/senchainc" class="twitter">Twitter</a></li>
+                <li><a href="http://www.facebook.com/senchainc" class="facebook">Facebook</a></li>
+                <li><a href="http://senchainc.tumblr.com/" class="tumblr">Tumblr</a></li>
+                <li><a href="http://j.mp/sencha-in" class="linkedin">LinkedIn</a></li>
+                <li><a href="http://feeds.feedburner.com/SenchaBlog" class="rss">RSS Feed</a></li>
+                <li><a href="http://www.vimeo.com/sencha" class="vimeo">Vimeo</a></li>
+            </ul>
+            <p>&copy; 2012 Sencha</p>
+        </footer>
+    </div>
+</body>
+</html>
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/license.txt
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/license.txt	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/license.txt	(revision 18277)
@@ -0,0 +1,35 @@
+Ext JS 4.1 - JavaScript Library
+Copyright (c) 2006-2012, Sencha Inc.
+All rights reserved.
+licensing@sencha.com
+
+http://www.sencha.com/license
+
+Open Source License
+------------------------------------------------------------------------------------------
+This version of Ext JS is licensed under the terms of the Open Source GPL 3.0 license. 
+
+http://www.gnu.org/licenses/gpl.html
+
+There are several FLOSS exceptions available for use with this release for
+open source applications that are distributed under a license other than GPL.
+
+* Open Source License Exception for Applications
+
+  http://www.sencha.com/products/floss-exception.php
+
+* Open Source License Exception for Development
+
+  http://www.sencha.com/products/ux-exception.php
+
+
+Alternate Licensing
+------------------------------------------------------------------------------------------
+Commercial and OEM Licenses are available for an alternate download of Ext JS.
+This is the appropriate option if you are creating proprietary applications and you are 
+not prepared to distribute and share the source code of your application under the 
+GPL v3 license. Please visit http://www.sencha.com/license for more details.
+
+--
+
+This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT OF THIRD-PARTY INTELLECTUAL PROPERTY RIGHTS.  See the GNU General Public License for more details.
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/release-notes.html
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/release-notes.html	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/release-notes.html	(revision 18277)
@@ -0,0 +1,9312 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<html>
+    <head>
+        <title>
+            Ext JS Release Notes
+        </title>
+        <link rel="stylesheet" type="text/css" href="welcome/release-notes.css" media="all">
+    </head>
+    <body>
+        <p>
+            <a href="http://www.sencha.com/" id="logo" name="logo">Ext JS - JavaScript Framework</a>
+        </p>
+        <div id="releases">
+<!-- ************************************************************************** -->
+            <!--
+            When a release is made, copy the generated div below this dynamic section
+            and then edit the queries below to adjust for the next release.
+            -->
+            <div class="release">
+                <h1>Release Notes for Ext JS 4.1.1</h1>
+                <p class="notes">
+                    Release Date: July 4, 2012<br>
+                    Version Number: 4.1.1
+                </p>
+                <h2>Bugs Fixed</h2>
+<ul>
+    <li class="component">Charts (6)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6275</span>&#160;<span class="ticket-notes">Line chart messed up after disabling and enabling lines though legend</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6323</span>&#160;<span class="ticket-notes">Charts don't render with either constrain, or both maximum and minimum</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6324</span>&#160;<span class="ticket-notes">Problem using minimum, maximum and majorTicksSteps together</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6359</span>&#160;<span class="ticket-notes">Chart should display integers on axis</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6583</span>&#160;<span class="ticket-notes">Chart redraw on store update fails in inactive card</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6585</span>&#160;<span class="ticket-notes">Rapid clicks on pie chart causes slices to shrink or disappear</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Core (10)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-3932</span>&#160;<span class="ticket-notes">dom.style.setExpression not implemented in IE8</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5956</span>&#160;<span class="ticket-notes">Ext.extend does not handle constructor properly using 3-argument form</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6087</span>&#160;<span class="ticket-notes">Ext.data.TreeStore CRUD regression</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6452</span>&#160;<span class="ticket-notes">Container's private floatingItems collection should be floatingDescendants</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6453</span>&#160;<span class="ticket-notes">Container-owned floating items appear at wrong level in the ComponentQuery hierarchy</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6456</span>&#160;<span class="ticket-notes">ComponentQuery :last selector fails with a single item</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6484</span>&#160;<span class="ticket-notes">Ext.AbstractManager.onAvailable listener isn't removed properly</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6499</span>&#160;<span class="ticket-notes">Reusing id's for elements recently removed from the DOM would incorrectly reference old element</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6570</span>&#160;<span class="ticket-notes">Ext.Element getStyle can throw in IE6/7 reading font styles</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6612</span>&#160;<span class="ticket-notes">Observable.resumeEvents should tolerate being called when suspendCount is zero</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Data (6)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5253</span>&#160;<span class="ticket-notes">Ext.data.writer.Json no longer respects dateFormat</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5995</span>&#160;<span class="ticket-notes">Model field disappear when using idProperty</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6480</span>&#160;<span class="ticket-notes">loadData reading an Array uses the wrong field order to read the data items.</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6523</span>&#160;<span class="ticket-notes">data.Reader will not read data where a model is included</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6545</span>&#160;<span class="ticket-notes">Can't reload buffered store after filtering</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6627</span>&#160;<span class="ticket-notes">Model.copy passes its data into the new constructor as raw which gets converted.</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">DataView (1)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6524</span>&#160;<span class="ticket-notes">AbstractView should not cancel SPACE key event if target is an input element.</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Documentation (3)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5148</span>&#160;<span class="ticket-notes">Ext.selection.Model documentation bug</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6187</span>&#160;<span class="ticket-notes">Grouping and locking features do not work together</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6573</span>&#160;<span class="ticket-notes">AbstractComponent.render missing in the API docs</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Examples (4)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6449</span>&#160;<span class="ticket-notes">Simple Tasks reminder window does not lay out when resized.</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6450</span>&#160;<span class="ticket-notes">Themes example's layout expands vertical slider's element to 100% width</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6462</span>&#160;<span class="ticket-notes">Chart rendering is broken by moving its ancestors in the DOM in IE</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6717</span>&#160;<span class="ticket-notes">Combination Examples - Feed Viewer:  Getting error upon clicking on any feed in the preview panel when "Hide" option is selected in the preview drop down menu.</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Forms (15)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6071</span>&#160;<span class="ticket-notes">The title of the MultiSelect is not displayed</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6085</span>&#160;<span class="ticket-notes">"Custom Layout " Alert message borderline is missing under "Radio Groups " in IE6 </span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6086</span>&#160;<span class="ticket-notes">labelWidth is ignored with labelAlign top</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6127</span>&#160;<span class="ticket-notes">TextField emptyText cannot be entered as the value</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6160</span>&#160;<span class="ticket-notes">Ext.form.field.Time does not initialize value correctly</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6227</span>&#160;<span class="ticket-notes">Adding a new field to a form layout fails on IE</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6311</span>&#160;<span class="ticket-notes">Time field clears value on blur.</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6371</span>&#160;<span class="ticket-notes">Fields with labelAlign top need to not make label its own row - causes too many problems</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6402</span>&#160;<span class="ticket-notes">DisplayField doesn't update size after a value change</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6416</span>&#160;<span class="ticket-notes">Calling setText on unrendered TextField does not work</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6445</span>&#160;<span class="ticket-notes">standardSubmit: true is broken for forms with params</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6478</span>&#160;<span class="ticket-notes">Ext.form.BasicForm fails to correctly read the response of a file upload</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6568</span>&#160;<span class="ticket-notes">HtmlEditor leaks memory on window unload in IE6/7</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6579</span>&#160;<span class="ticket-notes">HtmlEditor contents are cleared by initial Ext.example.msg</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6594</span>&#160;<span class="ticket-notes">enforceMaxLength with no maxLength in textfield allows only one char</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Grid (18)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5343</span>&#160;<span class="ticket-notes">Lockable views do not handle drag between two sides well or dragging of or between group headers.</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6075</span>&#160;<span class="ticket-notes">Checkbox selection model's header checkbox not in sync if records are added/removed</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6242</span>&#160;<span class="ticket-notes">Grid row editor does not close when record being edited is removed</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6264</span>&#160;<span class="ticket-notes">Grid filter range menu iconCls conflicts with Panel iconCls - rename to itemIconCls</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6419</span>&#160;<span class="ticket-notes">Grid Filters JS error when click on any column header after filtering Date and swap columns </span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6420</span>&#160;<span class="ticket-notes">Grid row heights aren't synced in locked grid on IE9 standards.</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6421</span>&#160;<span class="ticket-notes">Locking grid headers misplaced after column hide</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6440</span>&#160;<span class="ticket-notes">BorderLayout: collapsed GridPanel on south looks inconsistent after expand</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6463</span>&#160;<span class="ticket-notes">Infinite grid alignment is skewed by presence of group headers</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6477</span>&#160;<span class="ticket-notes">Arrow keys become unresponsive when arrowing through records in a buffered grid</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6481</span>&#160;<span class="ticket-notes">Firefox 13 new default smooth scrolling leads to very slow grid scrolling</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6482</span>&#160;<span class="ticket-notes">Grid RowExpander is not reinserted after reconfigure</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6509</span>&#160;<span class="ticket-notes">Using getEditor on a grid column creates an orphaned component resulting in a memory leak</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6531</span>&#160;<span class="ticket-notes">Grid reconfigure fails with hideHeaders</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6546</span>&#160;<span class="ticket-notes">PagingScroller onCacheClear assumes view is rendered</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6584</span>&#160;<span class="ticket-notes">Cell editing in locked grid causes JS error</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6644</span>&#160;<span class="ticket-notes">CellSelectionModel selects the wrong cell in a locked grid</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6718</span>&#160;<span class="ticket-notes">Tab key causes error when cell editing with row selection model</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Layouts (5)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5131</span>&#160;<span class="ticket-notes">ShrinkWrap layouts can fail with constrained widths / heights</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6041</span>&#160;<span class="ticket-notes">In IE8/9 "strict" mode, Box layout's perpendicular overflow does not work</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6049</span>&#160;<span class="ticket-notes">Auto-width grid in vbox stretches to 10,000px</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6369</span>&#160;<span class="ticket-notes">Closing floated/collapsed panel in border layout causes JS error</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6528</span>&#160;<span class="ticket-notes">Ext.layout.container.BoxOverflow.Menu.destroy throws Exception</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Menu (1)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6386</span>&#160;<span class="ticket-notes">Picking a date doesn't work when Date field inside Menu</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Misc (2)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6348</span>&#160;<span class="ticket-notes">Drag-drop on invalid dropzone leaves no focus</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6510</span>&#160;<span class="ticket-notes">IE 6 nonsecure items warning when using Ext.History</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Panel (4)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5149</span>&#160;<span class="ticket-notes">"mini" collapseMode in border layout doesn't seem to work</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6372</span>&#160;<span class="ticket-notes">Multiple issues with Panel.setBodyStyle</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6373</span>&#160;<span class="ticket-notes">Specifying Panel header config and closable: true causes error</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6448</span>&#160;<span class="ticket-notes">Left and right aligned headers in panel drag are not layed out properly</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Theme (2)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6163</span>&#160;<span class="ticket-notes">SplitButton with arrowAlign bottom and Gray theme - CSS issue on mouse over</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6425</span>&#160;<span class="ticket-notes">Sass function theme-background-image throws exception without a return value and css doesn't compile</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Toolbars (2)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6251</span>&#160;<span class="ticket-notes">Toolbar defaults override single item settings</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6451</span>&#160;<span class="ticket-notes">Form fields clone in overflow menu of toolbar do not sync the original field value</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Tree (9)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5248</span>&#160;<span class="ticket-notes">Ext.data.TreeStore setting the root property in the proxy doesn't work</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6005</span>&#160;<span class="ticket-notes">Ext.data.TreeStore with Ext.data.proxy.Rest does not pass ids correctly</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6302</span>&#160;<span class="ticket-notes">NodeInterface qtip and qtitle not updated</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6417</span>&#160;<span class="ticket-notes">tree.selectPath(tree.getRootNode().getPath()) doesn't select</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6418</span>&#160;<span class="ticket-notes">Folder keeps displaying collapse button after all leaves are dragged away</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6443</span>&#160;<span class="ticket-notes">expandable: false has no effect in tree grid</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6473</span>&#160;<span class="ticket-notes">Spacebar not toggling checkbox state in TreePanel</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6554</span>&#160;<span class="ticket-notes">Tree view refresh event is fired before the render event</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6580</span>&#160;<span class="ticket-notes">Tree node parentId doesn&#39;t respect useNull</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Window (6)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5889</span>&#160;<span class="ticket-notes">Dragging a header-constrained window below Viewport bottom scrolls the Viewport</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6033</span>&#160;<span class="ticket-notes">Ext.window.Window fire incorrect events when maximized/restored</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6234</span>&#160;<span class="ticket-notes">Constrained window in a border layout is displaying at wrong location.</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6297</span>&#160;<span class="ticket-notes">Constraining a window to a panel using the "constrain" config does not work when "autoShow" is true</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6397</span>&#160;<span class="ticket-notes">Form submit with waitMsg:'string' called from Window focuses the Window which hides any MessageBox</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6547</span>&#160;<span class="ticket-notes">Window is not closed on Esc</span>
+            </li>
+        </ul>
+    </li>
+Total: 94</ul>
+                <h2>Known Issues</h2>
+<ul>
+    <li class="component">Animation (1)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5487</span>&#160;<span class="ticket-notes">accordion animation doesn't always complete if you click frequently</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Charts (1)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5108</span>&#160;<span class="ticket-notes">can't create label for  type area series</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Core (1)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-4942</span>&#160;<span class="ticket-notes">Element#tgetWidth() returns an incorrect result for naturally widthed absolutely positioned elements in some cases.</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Data (4)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-3316</span>&#160;<span class="ticket-notes">Ext.ux.grid.FiltersFeature cannot restore state</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-4319</span>&#160;<span class="ticket-notes">Use a parameter other than &#39;id&#39; for server calls</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-4335</span>&#160;<span class="ticket-notes">Duplicate records when calling sync() on a autoSync store</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-4372</span>&#160;<span class="ticket-notes">Grid Filtering Example: Bug with database return packet</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Documentation (2)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-4296</span>&#160;<span class="ticket-notes">Ext JS 4 and Sencha Touch Docs examples fail on Chromebook, can't use Example viewer, ReferenceError: Ext is not defined</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5156</span>&#160;<span class="ticket-notes">Update documentation that fields (id,text,leaf) are expected</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Examples (1)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5997</span>&#160;<span class="ticket-notes">Tabs: Group Tabs:Form Layout UI get truncated on IE6</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Forms (3)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-2081</span>&#160;<span class="ticket-notes">Issue with &quot;Bullet list&quot; in the form widget editor</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-2425</span>&#160;<span class="ticket-notes">HTMLEditor corrupted when changing background color of selection</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5484</span>&#160;<span class="ticket-notes">Ext.form.field.File buttons don&#39;t get the mouse over effect that buttons do</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Grid (6)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-4091</span>&#160;<span class="ticket-notes">Grid filters: initial value can be set, but it is not applied</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-4954</span>&#160;<span class="ticket-notes">Store Grouping Not Cleared Properly</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5125</span>&#160;<span class="ticket-notes">FiltersFeature - Updating column header class when using a column group</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5595</span>&#160;<span class="ticket-notes">Last selected row maintains selection after unchecked on column sort</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5607</span>&#160;<span class="ticket-notes">Grid: getEditorParent is ignored - nested cell editing is not possible</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5922</span>&#160;<span class="ticket-notes">Infinite grid and grouping feature do not work together</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Layouts (3)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-3704</span>&#160;<span class="ticket-notes">Ext.layout.container.Box: wrong children margins if using CSS rules</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-4768</span>&#160;<span class="ticket-notes">Border Layout : regions overlap when size (or size constraint) won't allow all regions to fit container</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6006</span>&#160;<span class="ticket-notes">Desktop example: Layout problem using  Safari / Chrome</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Misc (5)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-4545</span>&#160;<span class="ticket-notes">Kitchen Sink - Basic Tabs :  By default  tab headers are not displaying in Basic tabs.</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-4937</span>&#160;<span class="ticket-notes">Combination Examples : Web Desktop : Notepad :Displaying errors in error console upon double clicking on empty space in the note pad.</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5130</span>&#160;<span class="ticket-notes">Neptune theme missing resources</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5254</span>&#160;<span class="ticket-notes">&nbsp;HTMLEditor.insertAtCursor issues in &quot;Source Edit&quot;; mode</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-6106</span>&#160;<span class="ticket-notes">[4.1.0] Localizing issues</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Panel (3)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5488</span>&#160;<span class="ticket-notes">Panel collapse/expand behavior not as expected when called on hidden panel</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5489</span>&#160;<span class="ticket-notes">preventHeader not honored when panel is programmatically collapsed.</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5544</span>&#160;<span class="ticket-notes">Intermittent issue with collapseOnDblClick set to true on IE</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Tabs (2)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-3625</span>&#160;<span class="ticket-notes">TabPanel: defaults: closable true not configurable</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-4421</span>&#160;<span class="ticket-notes">x-tab-top-over never inserted into any element</span>
+            </li>
+        </ul>
+    </li>
+    <li class="component">Tree (2)
+        <ul class="tickets">
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-4243</span>&#160;<span class="ticket-notes">Synchronous loading fails if async loading of same class is on going</span>
+            </li>
+            <li class="ticket">
+                <span class="ticket-number">EXTJSIV-5075</span>&#160;<span class="ticket-notes">&nbsp;NodeInterface &quot;deep&quot; copy only copies a single level</span>
+            </li>
+        </ul>
+    </li>
+Total: 34</ul>
+            </div>
+
+<!-- Paste release notes after a release below here... -->
+<!-- ************************************************************************** -->
+            <div class="release">
+                <h1>Release Notes for Ext JS 4.1.1 RC 2</h1>
+                <p class="notes">
+                    Release Date: June 13, 2012<br>
+                    Version Number: 4.1.1 RC 2
+                </p>
+                <h2>Bugs Fixed</h2>
+                <ul>
+                    <li class="component">Button (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6139</span>&#160;<span class="ticket-notes">Button retains the focused state after disabling and enabling</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6329</span>&#160;<span class="ticket-notes">Config html of Button not working</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Charts (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6077</span>&#160;<span class="ticket-notes">Layouts cause Charts to (re)animate</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6224</span>&#160;<span class="ticket-notes">Chart export hard codes sencha.io</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Core (11)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5767</span>&#160;<span class="ticket-notes">return false from beforerender throws exception</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5944</span>&#160;<span class="ticket-notes">Ext.onReady with delay option hangs up a browser</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6055</span>&#160;<span class="ticket-notes">onReady does not work in an iframe in IE8 when parent is a different domain</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6056</span>&#160;<span class="ticket-notes">Problems with Component previousNode</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6124</span>&#160;<span class="ticket-notes">Loader calls Ext globalEval with code that breaks when IE cc_on</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6137</span>&#160;<span class="ticket-notes">Element slideIn tr anchor doesn't work as expected.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6185</span>&#160;<span class="ticket-notes">getPosition on floating Components with parent Container always returns container-relative position</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6196</span>&#160;<span class="ticket-notes">calling showAt on a component does not fire the 'show' event.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6199</span>&#160;<span class="ticket-notes">DomQuery fails with dots in the element id</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6273</span>&#160;<span class="ticket-notes">EventManager does not return listener response</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6319</span>&#160;<span class="ticket-notes">Ext.onReady sometimes fails in an iframe in IE when parent is in a different domain</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Data (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6298</span>&#160;<span class="ticket-notes">Ext.data.Tree.flatten duplicates Ext.Object.getValues</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6305</span>&#160;<span class="ticket-notes">Model instance shared if proxy subclass specifies a reader config object</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6306</span>&#160;<span class="ticket-notes">Model's Id field not defined after sync in TreeStore</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">DataView (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6019</span>&#160;<span class="ticket-notes">When deferInitialRefresh is false, the arrival of the data still causes a second layout run</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Documentation (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5558</span>&#160;<span class="ticket-notes">refs config not in API documentation</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6179</span>&#160;<span class="ticket-notes">pruneRemoved on Ext.selection.Model should not be private</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Events (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6320</span>&#160;<span class="ticket-notes">Listener tracking is broken when removing non-existent listener</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Examples (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6413</span>&#160;<span class="ticket-notes">Tabs : Basic Tabs: Clicking on ñEvent Tabî for first time, displaying the tab's content with border line</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Forms (17)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5298</span>&#160;<span class="ticket-notes">Ext.form.Panel does not respect inherited properties when creating the BasicForm</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5962</span>&#160;<span class="ticket-notes">Dragging mouse off the right over a form scrolls content out of view in WebKit</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6121</span>&#160;<span class="ticket-notes">TimeField submit format not using 24 hour format</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6142</span>&#160;<span class="ticket-notes">Form field with incorrect width on validation, if msgTarget: 'side'</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6143</span>&#160;<span class="ticket-notes">Ext.form.field.Number: Spinner field sometimes fires 2 spin events</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6173</span>&#160;<span class="ticket-notes">Field not destroyed after form is closed</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6176</span>&#160;<span class="ticket-notes">Forms : File uploads : "File upload" window is not opening upon clicking on "photo" text field.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6184</span>&#160;<span class="ticket-notes">Labelable: getFieldLabel should implement same logic as the setter as regards label separator</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6198</span>&#160;<span class="ticket-notes">Fields within Field Container don't resize properly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6255</span>&#160;<span class="ticket-notes">TextAarea ignores "cols" attribute</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6258</span>&#160;<span class="ticket-notes">Combobox forceSelection clears the value if there is no match</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6277</span>&#160;<span class="ticket-notes">MsgBox header components are not placed properly in IE</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6278</span>&#160;<span class="ticket-notes">Trigger button does not look disabled on a disabled ComboBox</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6281</span>&#160;<span class="ticket-notes">Store filter from combobox remains after combo is destroyed and store is reused</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6303</span>&#160;<span class="ticket-notes">HtmlEditor destroy generates errors</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6340</span>&#160;<span class="ticket-notes">Measurement of triggerWidth does not work correctly with scopedResetCSS</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6361</span>&#160;<span class="ticket-notes">File upload field browse button does not properly re-enable after the field has been disabled in Internet Explorer</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Grid (29)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5934</span>&#160;<span class="ticket-notes">Infinite Grid does not clear page cache when grouping changes</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6001</span>&#160;<span class="ticket-notes">Error in Ext.grid.plugin.Editing if no cell is active</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6025</span>&#160;<span class="ticket-notes">CellEditing plugin does not refocus edited cell when completing an edit</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6037</span>&#160;<span class="ticket-notes">When groups are rendered initially collapsed using startCollapsed, they cannot be expanded.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6050</span>&#160;<span class="ticket-notes">Grid Group's groupHeaderTpl does not have parent param</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6070</span>&#160;<span class="ticket-notes">Row positions issue on vertical scroll and sorting</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6107</span>&#160;<span class="ticket-notes">Grid Column Sort Indicator Problem</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6115</span>&#160;<span class="ticket-notes">RowEditing uses wrong record if startEdit is called while already editing a record</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6117</span>&#160;<span class="ticket-notes">Locked column in infinite grid causes rows to disappear on page refresh</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6122</span>&#160;<span class="ticket-notes">Editing a Grid and then reloading its Data causes error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6123</span>&#160;<span class="ticket-notes">Wrong grid panel height on layout change</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6135</span>&#160;<span class="ticket-notes">Scrolling and Rendering Bug in Grid Grouping with Summary example</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6157</span>&#160;<span class="ticket-notes">Grid Row Editor's Update button is not always enabled/disabled properly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6164</span>&#160;<span class="ticket-notes">ProgressBar Pager fails when clicking on left edge of the progress bar.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6171</span>&#160;<span class="ticket-notes">RowEditor in tab panel does not show editors properly when tab is hidden</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6186</span>&#160;<span class="ticket-notes">ActionColumn icon not updating in Grid or TreeGrid</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6194</span>&#160;<span class="ticket-notes">removeAll on buffered grid causes error in cancelAllPrefetches</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6197</span>&#160;<span class="ticket-notes">ActionColumn appearance does not change when disabled</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6228</span>&#160;<span class="ticket-notes">Column Group uses wrong config "restrictColumnReorder" - should be "sealedColumns"</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6232</span>&#160;<span class="ticket-notes">Grid column resizers are not aligned correctly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6259</span>&#160;<span class="ticket-notes">Infinite Grid with Grouping. Groups should not be collapsible.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6313</span>&#160;<span class="ticket-notes">Large jumps in infinite grid sometimes prune a required page from the buffered store</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6337</span>&#160;<span class="ticket-notes">Gridview fails to render properly if initial refresh occurs before view is rendered</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6347</span>&#160;<span class="ticket-notes">Grid Column Tooltip not supported as it was in v3</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6364</span>&#160;<span class="ticket-notes">Cell editing with RowSelection model causes JS error on endEdit</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6414</span>&#160;<span class="ticket-notes">Grid / Infinite Scrolling with remote filtering / Load masking is displaying and not able to search for the second time </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6422</span>&#160;<span class="ticket-notes">Row Editor throws an error when the grid has a checkbox selection model</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6436</span>&#160;<span class="ticket-notes">RowEditor does not sync when grid columns dragged to reorder.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6461</span>&#160;<span class="ticket-notes">Sort is broken on Remote Summary Grid</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Layouts (9)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5167</span>&#160;<span class="ticket-notes">Box layout (toolbar) overflow button does not work twice</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5562</span>&#160;<span class="ticket-notes">Horizontal scrollbar not visible when set to overflow in hbox layout</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5806</span>&#160;<span class="ticket-notes">Box layout fails to respect width and height percentages</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5935</span>&#160;<span class="ticket-notes">Error removing item afterRender: ownerContext.target.ownerLayout not defined</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5939</span>&#160;<span class="ticket-notes">Adding a new Checkbox to a CheckboxGroup fails on IE</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5990</span>&#160;<span class="ticket-notes">Layout failure with fieldset in vbox</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6129</span>&#160;<span class="ticket-notes">Collapsed fieldset does not resize parent when opened</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6158</span>&#160;<span class="ticket-notes">Percentage size does not work for floating components like Window</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6428</span>&#160;<span class="ticket-notes">Accordion with single item throws JS error in onComponentCollapse</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">MVC (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6162</span>&#160;<span class="ticket-notes">Ext.application.init() is never invoked</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Menu (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6254</span>&#160;<span class="ticket-notes">Can't edit textfields properly when placed in a Menu</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6321</span>&#160;<span class="ticket-notes">Menu subclass doesn't inherit scrolling functionality</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Misc (11)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6100</span>&#160;<span class="ticket-notes">.sass-cache included in extjs pachage</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6170</span>&#160;<span class="ticket-notes">Ext.DomHelper's 'confRe' matches substrings while it shouldn't</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6193</span>&#160;<span class="ticket-notes">DragDropManager.fireEvents - wrong parameters calling onInvalidDrop</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6208</span>&#160;<span class="ticket-notes">Traditional Chinese localization does not display properly for days of the week in IE</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6226</span>&#160;<span class="ticket-notes">Draw component does not auto-size correctly with no content</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6253</span>&#160;<span class="ticket-notes">Scoped css doesn't work well for filtering and date picker</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6287</span>&#160;<span class="ticket-notes">Flash Component disregards WMODE transparent</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6304</span>&#160;<span class="ticket-notes">Ext.menu.DatePicker select triggered twice</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6335</span>&#160;<span class="ticket-notes">DatePicker's native tip occludes "Today" button's QuickTip</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6407</span>&#160;<span class="ticket-notes">AbstractContainer overrides enable/disable without returning this</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6412</span>&#160;<span class="ticket-notes">Grids :Grouping Grid:The ñNameî column check box is not displaying </span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Panel (6)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4144</span>&#160;<span class="ticket-notes">Collapsible FormPanel collapsible direction [right] issue</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4268</span>&#160;<span class="ticket-notes">Panel does not respect animCollapse: false in placeholder collapseMode (border layout)</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5351</span>&#160;<span class="ticket-notes">Inconsistency on closing tabpanel items</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5456</span>&#160;<span class="ticket-notes">Layout changes inside a collapsed panel in a border layout creates extra panel header</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6148</span>&#160;<span class="ticket-notes">Calling removeDocked on a panel with no border throws exception</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6178</span>&#160;<span class="ticket-notes">Expanding a panel restores wrong size if size changed while collapsed</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tabs (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6237</span>&#160;<span class="ticket-notes">When labelAlign='top' and errorAlign='side', invalidation causes incorrect field width</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6272</span>&#160;<span class="ticket-notes">Tab text centering stops working in IE8 after dynamically adding tab</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Theme (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6188</span>&#160;<span class="ticket-notes">Toolbar margin variables don't have !default flags</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6282</span>&#160;<span class="ticket-notes">Sass bug in _frame.scss when $radius === 10</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">ToolTips (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6221</span>&#160;<span class="ticket-notes">Canceling tooltip in beforeshow causes subsequent problems</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Toolbars (4)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5933</span>&#160;<span class="ticket-notes">Toolbar reorderer stops during drag on IE</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6251</span>&#160;<span class="ticket-notes">Toolbar defaults override single item settings</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6271</span>&#160;<span class="ticket-notes">Programmatically set label in bbar is not visible until browser is resized</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6279</span>&#160;<span class="ticket-notes">tbseparator incorrectly inherits border from toolbar</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tree (9)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3571</span>&#160;<span class="ticket-notes">Two TreePanel behave wrongly when sharing a store</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4918</span>&#160;<span class="ticket-notes">Tree expand all / collapse all buggy behavior</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5992</span>&#160;<span class="ticket-notes">Tree expandAll/collapseAll does not always descend fully</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6136</span>&#160;<span class="ticket-notes">TreePanel loadMask cannot be rebound to a different mask</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6286</span>&#160;<span class="ticket-notes">Ext.ux.CheckColum does not work with a Tree</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6302</span>&#160;<span class="ticket-notes">NodeInterface qtip and qtitle not updated</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6330</span>&#160;<span class="ticket-notes">TreeStore root node does not always have an id</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6344</span>&#160;<span class="ticket-notes">Uncaught TypeError: Cannot read property 'dom' of null</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6357</span>&#160;<span class="ticket-notes">TreeStore listeners are not cleaned up</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Window (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3779</span>&#160;<span class="ticket-notes">Message Box Dialog - Page is grayed out and not allowed to update the page when quickly double-clicking on Icon Show button. </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5905</span>&#160;<span class="ticket-notes">JS error when creating LoadMask bound to a Window</span>
+                            </li>
+                        </ul>
+                    </li>
+                Total: 118</ul>
+            </div>
+            <div class="release">
+                <h1>Release Notes for Ext JS 4.1.1 RC 1</h1>
+                <p class="notes">
+                    Release Date: May 15, 2012<br>
+                    Version Number: 4.1.1 RC 1
+                </p>
+                <h2>Bugs Fixed</h2>
+                <ul>
+                    <li class="component">Button (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5964</span>&#160;<span class="ticket-notes">Buttons do not show 'pressing' animation when clickEvent is 'mousedown'</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5989</span>&#160;<span class="ticket-notes">Changing text in some buttons does not layout properly in Chrome 16+</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6109</span>&#160;<span class="ticket-notes">Button contents are cut off when using scoped CSS</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Charts (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5981</span>&#160;<span class="ticket-notes">Bound of Area Series incorrectly calculated.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6074</span>&#160;<span class="ticket-notes">Column chart with all zero data renders poorly and throws css warnings</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6088</span>&#160;<span class="ticket-notes">Pie chart is broken after resize</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Core (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6052</span>&#160;<span class="ticket-notes">DragZone determines wrong target el causing subsequent JS error</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Data (4)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5988</span>&#160;<span class="ticket-notes">Falsy Ext.data.Operation id property lost during Ext.data.Request creation.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5993</span>&#160;<span class="ticket-notes">Ext 4.1 RC3  HasOne Assocation Bug</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6024</span>&#160;<span class="ticket-notes">Problem in extending from a model with associations</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6063</span>&#160;<span class="ticket-notes">Ext.data.Store.add() behave inconsistently when groupField is used</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">DataView (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6082</span>&#160;<span class="ticket-notes">Hidden data view breaks when updating</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6110</span>&#160;<span class="ticket-notes">Ext.view.AbstractView indexOf throws error if argument is invalid or null</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Documentation (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6112</span>&#160;<span class="ticket-notes">Errors and omissions in the MVC Application Architecture guide</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Events (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5983</span>&#160;<span class="ticket-notes">beforerender event not fired for Viewport (or component with configured 'el')</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Examples (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6045</span>&#160;<span class="ticket-notes">GroupTabPanel ux bug - Missing lower rounded corner</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Forms (10)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5389</span>&#160;<span class="ticket-notes">TextArea marks form as dirty</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5458</span>&#160;<span class="ticket-notes">Delete key does not work for textfield (email vtype) in Opera 11</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5965</span>&#160;<span class="ticket-notes">TextField placeholder text shifts up by 1 pixel on focus</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5994</span>&#160;<span class="ticket-notes">FieldSet label component is not available before render</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6016</span>&#160;<span class="ticket-notes">MultiSelect / ItemSelector : "Clear" and "Reset" Buttons are not working when all items are dragged to right panel in Item Selector Table.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6054</span>&#160;<span class="ticket-notes">Spinner setReadOnly does not hide triggers</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6065</span>&#160;<span class="ticket-notes">TextArea special keys stop working at maxLength with enfornceMaxLength on</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6081</span>&#160;<span class="ticket-notes">A HiddenField occupies visible space in the form</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6104</span>&#160;<span class="ticket-notes">Slider readOnly has no effect</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6134</span>&#160;<span class="ticket-notes">Labelable insertion templates do not have access to component id</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Grid (5)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5984</span>&#160;<span class="ticket-notes">[4.1 RC3] Grouping expand() not working</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6057</span>&#160;<span class="ticket-notes">Calling Ext.grid.Panel.reconfigure before rendering causes error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6066</span>&#160;<span class="ticket-notes">Grid does not always show its loadmask properly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6083</span>&#160;<span class="ticket-notes">scope has no effect on actioncolumn</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6092</span>&#160;<span class="ticket-notes">Grid header Container getVisibleHeaderClosestToIndex does not check previous only next</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Layouts (5)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5797</span>&#160;<span class="ticket-notes">Autosized tooltips are not layed out correctly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5806</span>&#160;<span class="ticket-notes">Box layout fails to respect width and height percentages</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5861</span>&#160;<span class="ticket-notes">Fit layout does not adjust sizes based on autoScroll triggered by minHeight</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6026</span>&#160;<span class="ticket-notes">Splitters in HBox layouts have no height</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6042</span>&#160;<span class="ticket-notes">getPosition method doesn't return page coordinate</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Menu (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6035</span>&#160;<span class="ticket-notes">Menu destroy method can cause JS error on keyNav</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Misc (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5982</span>&#160;<span class="ticket-notes">Stacked bar/column chart leave a ghost shadow when all items are hidden</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Panel (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5716</span>&#160;<span class="ticket-notes">Panels with min/max constraints misbehave in a box layout with stretchmax</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5916</span>&#160;<span class="ticket-notes">Problem with Panel.setTitle without header</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tree (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6051</span>&#160;<span class="ticket-notes">4.1 Grid to Tree DnD not working any more</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6076</span>&#160;<span class="ticket-notes">Changing TreeStore's defaultRootProperty breaks the tree</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6113</span>&#160;<span class="ticket-notes">TreeGrid is not repainted after the vertical scroll bar disappears</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Window (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-6048</span>&#160;<span class="ticket-notes">Frame: true should not cause a window to display badly</span>
+                            </li>
+                        </ul>
+                    </li>
+                Total: 44</ul>
+            </div>
+
+            <div class="release">
+                <h1>Release Notes for Ext JS 4.1.0</h1>
+                <p class="notes">
+                    Release Date: April 20, 2012<br>
+                    Version Number: 4.1.0
+                </p>
+                <h2>Bugs Fixed</h2>
+                <ul>
+                    <li class="component">Charts (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5657</span>&#160;<span class="ticket-notes">Charts : Grouped Bar :Displaying Js error upon clicking on &quot;Legends&quot; in the &quot;grouped bar&quot; chart on IE9</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5954</span>&#160;<span class="ticket-notes">Simple Area Chart Not Working in 4.1RCx</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Core (4)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5811</span>&#160;<span class="ticket-notes">Elements can't fadeIn() after fadeOut()</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5846</span>&#160;<span class="ticket-notes">Component id's starting with non-word characters cause JS errors</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5902</span>&#160;<span class="ticket-notes">Draggable and resizable images leave resize handlers at start point when moved</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5958</span>&#160;<span class="ticket-notes">Ext.Error toString not including the method name</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Data (5)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4957</span>&#160;<span class="ticket-notes">Inconsistent signature for the Store &#39;datachanged&#39; event</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5809</span>&#160;<span class="ticket-notes">Model fields are set to undefined or defaultValue when they should not be updated</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5862</span>&#160;<span class="ticket-notes">Dependency on Writer from Proxy causes JS error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5877</span>&#160;<span class="ticket-notes">Store modifies the value of inline data config option</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5945</span>&#160;<span class="ticket-notes">Ext.data.Model getFields returns undefined</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">DataView (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5831</span>&#160;<span class="ticket-notes">Floatable TreePanel in West Border of Viewport has two left hand borders</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Draw (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5904</span>&#160;<span class="ticket-notes">Surface.removeAll - fails to remove items from groups</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Events (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5193</span>&#160;<span class="ticket-notes">&nbsp;Resize event is not fired for custom form field</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5815</span>&#160;<span class="ticket-notes">Error using a mixin that itself has Ext.util.Observable as a mixin</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5844</span>&#160;<span class="ticket-notes">Events: option.target has been removed from 4.x</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Examples (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5948</span>&#160;<span class="ticket-notes">Ext.ux.form.ItemSelector does not work with asynchronous loading (proxy) in ItemSelector example </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5949</span>&#160;<span class="ticket-notes">RC3: Ext.ux.form.ItemSelector.bindStore() method non-functioning</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Forms (8)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4978</span>&#160;<span class="ticket-notes">Forms - Dynamic Forms : Unable to access Form 1, Form 2 & Form 5 when clicked on expand/collapse  button and and pressed the tab key</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5242</span>&#160;<span class="ticket-notes">DisplayField does not respect fieldStyle</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5826</span>&#160;<span class="ticket-notes">Validation of timefield is not correct in Chinese.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5827</span>&#160;<span class="ticket-notes">Work day is corrupt in Spanish date input</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5832</span>&#160;<span class="ticket-notes">Recreating an HtmlEditor makes it unable to be focused until ENTER is pressed</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5906</span>&#160;<span class="ticket-notes">Can't create trigger field outside of onReady</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5937</span>&#160;<span class="ticket-notes">CheckboxGroup has incorrect column loop</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5955</span>&#160;<span class="ticket-notes">Ext.form.Labelable uses a CSS class without baseCSSPrefix</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Grid (4)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5457</span>&#160;<span class="ticket-notes">Grid infinite scroll: no last elements, no return to first elements</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5847</span>&#160;<span class="ticket-notes">Ext.ux.grid.FiltersFeature removes dynamically added filters</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5894</span>&#160;<span class="ticket-notes">GroupingSummary returns '\u00a0' when sum is equal 0</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5953</span>&#160;<span class="ticket-notes">TemplateColumn not updated dynamically</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Layouts (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5562</span>&#160;<span class="ticket-notes">Horizontal scrollbar not visible when set to overflow in hbox layout</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5941</span>&#160;<span class="ticket-notes">Resizable Components in Absolute layouts get misplaced.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">MVC (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4202</span>&#160;<span class="ticket-notes">Problem with building when MVC app has a custom directory structure</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Menu (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5804</span>&#160;<span class="ticket-notes">Menu onClick does not fire in all cases</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Misc (4)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5134</span>&#160;<span class="ticket-notes">Miscellaneous - Panels : "Masked Panel with a really long title" panel's UI is disturbed when clicked more than twice on expand/ collapse button</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5501</span>&#160;<span class="ticket-notes">Ext.Date.format breaks on wrong input</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5899</span>&#160;<span class="ticket-notes">Combination Examples:Ext JS Calendar:Displaying js error while creating the new event  with empty date field.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5967</span>&#160;<span class="ticket-notes">ElementLoader - inconsistent API (?)</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Panel (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5959</span>&#160;<span class="ticket-notes">Panel with collapseFirst: false and closable does not display collapse tool button</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tabs (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5099</span>&#160;<span class="ticket-notes">Tabs - Advanced Tabs : Tabs are added without close button when clicked on "Add Closable Tab" button</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5857</span>&#160;<span class="ticket-notes">TabPanel children don't fire the close event</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Theme (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3712</span>&#160;<span class="ticket-notes">TabBar background is blue in the gray theme</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tree (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5908</span>&#160;<span class="ticket-notes">Fast clicks in Tree can lead to duplication of entries</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5952</span>&#160;<span class="ticket-notes">Allow NodeInterface.decorate to expect a record instance for backward compatibility</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Window (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5897</span>&#160;<span class="ticket-notes">Window's title will not  display in IE6/7/8 when it was dragging</span>
+                            </li>
+                        </ul>
+                    </li>
+                Total: 45</ul>
+            </div>
+            <div class="release">
+                <h1>Release Notes for Ext JS 4.1.0 RC 3</h1>
+                <p class="notes">
+                    Release Date: April 10, 2012<br>
+                    Version Number: 4.1.0 RC 3
+                </p>
+                <h2>Bugs Fixed</h2>
+                <ul>
+                    <li class="component">Button (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5802</span>&#160;<span class="ticket-notes">setIconCls() does not update the icon from within a beforerender listener</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Charts (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5816</span>&#160;<span class="ticket-notes">Missing requires in Ext.chart.axis.Numeric</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5852</span>&#160;<span class="ticket-notes">Stacked Bar Chart shadow/border ghosts on redraw</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Core (4)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5819</span>&#160;<span class="ticket-notes">syncRequire callback scope broken</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5858</span>&#160;<span class="ticket-notes">Ext.LoadMask destroy() method not hiding the mask</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5873</span>&#160;<span class="ticket-notes">frameSize property undefined when CSS3 framing is used.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5886</span>&#160;<span class="ticket-notes">htmlEncode returns apos which is incompatible with IE</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Data (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5798</span>&#160;<span class="ticket-notes">Reader should use current fields if metadata does not include a fields array</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5823</span>&#160;<span class="ticket-notes">Remote sort from a buffered store fails on small data sets.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Examples (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5788</span>&#160;<span class="ticket-notes">Simple tasks : Two "Dismiss" buttons are displaying in reminder popup.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5789</span>&#160;<span class="ticket-notes">Simple tasks :  "OK" button is not working in the "Set Default Reminder Time" pop-up.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5791</span>&#160;<span class="ticket-notes">Simple Tasks : Not able to unhide the columns once all possible columns are hidden</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Forms (5)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5554</span>&#160;<span class="ticket-notes">Issue with date format in Spanish locale.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5774</span>&#160;<span class="ticket-notes">Bug in set focus on IE</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5782</span>&#160;<span class="ticket-notes">htmleditor in tab panel breaks layout when tab is destroyed</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5850</span>&#160;<span class="ticket-notes">Ext.Editor, startEdit event does not pass editor instance as first argument</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5885</span>&#160;<span class="ticket-notes">Forms - Advanced Validation - Months in the month selection menu are not properly aligned</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Grid (5)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5761</span>&#160;<span class="ticket-notes">RowEditing plugin breaks Grid scrolling</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5779</span>&#160;<span class="ticket-notes">Tabbing on the last cell in a cell editing grid recurses infinitely.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5780</span>&#160;<span class="ticket-notes">CellSelectionModel does not cope well with deletions of rows.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5814</span>&#160;<span class="ticket-notes">Not possible to specify a column component on a locked grid (only a config)</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5841</span>&#160;<span class="ticket-notes">Key navigation in grid with no selection throws JS errors</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Layouts (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5793</span>&#160;<span class="ticket-notes">Chrome 18 - broken layouts due to V8 NaN bug</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5812</span>&#160;<span class="ticket-notes">Specifying a placeholder for a region in a border layout fails if given as a config object</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Menu (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5828</span>&#160;<span class="ticket-notes">Ext.menu.Menu.show - missing return this</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5870</span>&#160;<span class="ticket-notes">menuExpandDelay of Ext.menu.Item not working</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Misc (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5759</span>&#160;<span class="ticket-notes">Ext 4.1 - What happened to hideMode: 'asclass'?</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5843</span>&#160;<span class="ticket-notes">Korean locale file is throwing an exception</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tabs (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5231</span>&#160;<span class="ticket-notes">GroupTabPanel UX doesn&#39;t work as expected</span>
+                            </li>
+                        </ul>
+                    </li>
+                Total: 29</ul>
+            </div>
+            <div class="release">
+                <h1>Release Notes for Ext JS 4.1.0 RC 2</h1>
+                <p class="notes">
+                    Release Date: March 30, 2012<br>
+                    Version Number: 4.1.0 RC 2
+                </p>
+                <h2>Bugs Fixed</h2>
+                <ul>
+                    <li class="component">Animation (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5523</span>&#160;<span class="ticket-notes">Animation Incorrectly Positions Windows</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Button (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5429</span>&#160;<span class="ticket-notes">Button with an icon can not be properly resized.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5432</span>&#160;<span class="ticket-notes">Button icons are clipped at times (varying between browsers)</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5600</span>&#160;<span class="ticket-notes">Feed Viewer- Button names are left aligned in Add feed popup</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Charts (20)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3617</span>&#160;<span class="ticket-notes">Rendering issue with stacked column chart without animation</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3783</span>&#160;<span class="ticket-notes">Area Chart - Farthest right tick not firing mouse events, showing tooltip, etc.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4459</span>&#160;<span class="ticket-notes"> If you try to render a chart in internet explorer 8 and you have animate=true, the markers will render, but lines themselves will never render</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4544</span>&#160;<span class="ticket-notes">Charts : Rich Tips - No tool tips are displayed upon mouse hovering on graph nodes for the second time.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4730</span>&#160;<span class="ticket-notes">Combination Examples - Ext JS 3&amp;4 on one page : Issue reloading legends inside Charts</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4779</span>&#160;<span class="ticket-notes">Bar Chart does not render correctly when all yField data points are equal</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5007</span>&#160;<span class="ticket-notes">Save button in chart examples should display popup panel to confirm save and then save image.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5024</span>&#160;<span class="ticket-notes">Charts: Themed Line Charts: Wrong information shown on mouse hover in simple styling chart</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5360</span>&#160;<span class="ticket-notes">Stacked column with two series values incorrect</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5462</span>&#160;<span class="ticket-notes">Custom Pie Charts: Browser is forcibly closed when clicked multiple times on Reload Data button</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5474</span>&#160;<span class="ticket-notes">Chart - left axis not showing the max value</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5499</span>&#160;<span class="ticket-notes">Set width of column charts not working correctly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5571</span>&#160;<span class="ticket-notes">Chart problems with decimals on bottom axis</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5575</span>&#160;<span class="ticket-notes">Grouped Bar charts: Incorrect values shown in series labels</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5580</span>&#160;<span class="ticket-notes">Charts : Area Charts:  Chart "Legends " are not displaying properly in the  downloaded files.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5623</span>&#160;<span class="ticket-notes">Column charts displays wrong values/tips when disabling series </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5633</span>&#160;<span class="ticket-notes">Charts - Filled Radar charts - Chart is not displaying in Filled Radar chart example</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5655</span>&#160;<span class="ticket-notes">Charts- Column Custom Back ground - Save Chart button is not working.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5670</span>&#160;<span class="ticket-notes">Charts - Stacked Bar Charts - Chart is not displaying upon hiding and unhiding the legends in the chart.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5706</span>&#160;<span class="ticket-notes">Line series offset one sample to the left</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Coding Style (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5682</span>&#160;<span class="ticket-notes">Remove extra comma in Ext.view.TableChunker</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Core (11)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4966</span>&#160;<span class="ticket-notes">Global var in Renderable</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5000</span>&#160;<span class="ticket-notes">Problems with DOM Id containing colon and DomeQuery.jsSelect with CSS escape notation</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5350</span>&#160;<span class="ticket-notes">ItemSelector returns [undefined] when empty</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5444</span>&#160;<span class="ticket-notes">onReady Firing Twice</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5460</span>&#160;<span class="ticket-notes">FF 3.6's Number.toJSON violates standards. We must programatically encode Numbers.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5538</span>&#160;<span class="ticket-notes">Themes examples has large memory leak when switching themes in IE</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5552</span>&#160;<span class="ticket-notes">Thousand separator and decimal separator are wrong for Chinese languages</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5630</span>&#160;<span class="ticket-notes">Observable broken for class observation</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5641</span>&#160;<span class="ticket-notes">CompositeElementLite: filter method is broken</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5705</span>&#160;<span class="ticket-notes">Document Element Mistakenly Garbage Collected</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5765</span>&#160;<span class="ticket-notes">Error when loading Ext later than initial page load</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Data (4)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5224</span>&#160;<span class="ticket-notes">Store.removeAll does not remove any prefetched data</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5415</span>&#160;<span class="ticket-notes">Store load not triggered when opening ListMenu in FilterFeature</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5508</span>&#160;<span class="ticket-notes">Issue with Ext.data.reader.Reader onMetaChange listener and idProperty</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5585</span>&#160;<span class="ticket-notes">Sorters are not applied after using FilterBy() method</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">DataView (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4854</span>&#160;<span class="ticket-notes">LoadMask does not manage its z-index correctly WRT its client Component's z-index.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5667</span>&#160;<span class="ticket-notes">Nested data is unavailable to templates in DataView</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Documentation (4)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5069</span>&#160;<span class="ticket-notes">Ext.grid.feature.Grouping docs need to be clearer</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5553</span>&#160;<span class="ticket-notes">Miscellaneous: History - Page is redirecting to Home page when click on "History" Example  </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5584</span>&#160;<span class="ticket-notes">Ext.Array.toArray end parameter incorrectly documented</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5745</span>&#160;<span class="ticket-notes">Grid Grouping collapse() is private, when it should be public</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Draw (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-2097</span>&#160;<span class="ticket-notes">viewbox: true ignores padding</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5078</span>&#160;<span class="ticket-notes">Missing scale/scaling support in Ext.fx.target.Sprite.setAttr</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Events (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5194</span>&#160;<span class="ticket-notes">Card layout does not fire activate on initial view</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5271</span>&#160;<span class="ticket-notes">ComponentQuery "is" method fails if selector contains a comma</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Examples (9)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-1146</span>&#160;<span class="ticket-notes">Editor Grid Example: Clicking from Common Name in an editor to Light doesn't invoke an editor</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4136</span>&#160;<span class="ticket-notes">Portal demo :Unable to close the portlets in a specific scenario.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4533</span>&#160;<span class="ticket-notes">Combination Examples : Kitchen Sink : Tabs : Titled Tab Panels: Not displaying complete text in Ext.tab.Panel with frame:true Panel</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5529</span>&#160;<span class="ticket-notes">Combination Examples : Image Viewer : Tool tip is stretched while trying to drag more than one image </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5614</span>&#160;<span class="ticket-notes">Combination Examples : Theme viewer : By default Slider values are displaying behind the resizable handles.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5617</span>&#160;<span class="ticket-notes">Combination Examples : Image Viewer:   By default  Albums should display with expand and collapse  ("+", "-")  buttons when user drag and drop the files in to the albums.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5650</span>&#160;<span class="ticket-notes">Example - Nested Loading shows a blank page </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5666</span>&#160;<span class="ticket-notes">PageAnalyzer hangs when loading pages (busy-spin)</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5769</span>&#160;<span class="ticket-notes">Combinatiion Examples - Ext JS Calender Sample- "Delete Button " is Missing on Edit Event dialog</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Forms (15)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4911</span>&#160;<span class="ticket-notes">Resizers on TextFields do not always work properly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4940</span>&#160;<span class="ticket-notes">Ext.form.TimeField class contained typeAhead, later releases the Ext.form.field.Time class this functionality is missing</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5433</span>&#160;<span class="ticket-notes">ChekboxGroup with all fixed width columns does not width the columns correctly.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5439</span>&#160;<span class="ticket-notes">Hover icon changes to select when combo editor is disabled.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5530</span>&#160;<span class="ticket-notes">Forms- Dynamic forms- Field headers and borders are not displaying properly.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5557</span>&#160;<span class="ticket-notes">trackResetOnLoad has no affect on radiogroup after loadrecord()</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5567</span>&#160;<span class="ticket-notes">allowBlank not part of the default labelableRenderProps </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5570</span>&#160;<span class="ticket-notes">HtmlEditor: Tab and Enter presses aren&#39;t being correctly handled in readOnly state</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5578</span>&#160;<span class="ticket-notes">Forms File Upload Field Button names are truncated in IE 7</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5618</span>&#160;<span class="ticket-notes">Forms Custom Form Field: Search text is not deleting upon clicking on cross button(X)</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5634</span>&#160;<span class="ticket-notes">Forms - Shopping Chart Checkout- Text boxes and label captions are disappearing after uncheck and check Same as Mailing Address checkbox</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5643</span>&#160;<span class="ticket-notes">Forms : Checkbox/ Radio Groups : Contents under the Radio groups are not  aligned properly.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5651</span>&#160;<span class="ticket-notes">Checkbox Focus Class Malformed</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5703</span>&#160;<span class="ticket-notes">Selected form component/editor loses focus if grid in edit mode</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5712</span>&#160;<span class="ticket-notes">Forms Checkout Form Text alignment is disturbed for payment radio buttons</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Grid (31)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-1679</span>&#160;<span class="ticket-notes">Extra padding seen in grid for IE 6 & 7 versus all other browsers</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3766</span>&#160;<span class="ticket-notes">Not possible to set &#39;cursor&#39; attribute on a Column chart series</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3998</span>&#160;<span class="ticket-notes">Vertical scrollbar doesn't appear when it should when using Row Expander plugin</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4189</span>&#160;<span class="ticket-notes">Field used as an editor in a Grid will fire change event when the field&#39;s value is initially set</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4371</span>&#160;<span class="ticket-notes">Grid Plugin Example: Bug in RowWrap. Hidden columns are not being hidden in data.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4564</span>&#160;<span class="ticket-notes">Lockable grid does not register features</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5003</span>&#160;<span class="ticket-notes">Cell editor does not always work correctly with locked grid</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5151</span>&#160;<span class="ticket-notes">Unwanted sortchange and resize events on gridcolumns</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5169</span>&#160;<span class="ticket-notes">hide/show causes error when using a table layout</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5251</span>&#160;<span class="ticket-notes">Can&#39;t theme height of grid rows</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5303</span>&#160;<span class="ticket-notes">Remote filtering doesn&#39;t work quite right with infinite scrolling.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5313</span>&#160;<span class="ticket-notes">injectCheckbox:false prevents check rendering in data rows</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5323</span>&#160;<span class="ticket-notes">grid.RowEditing plugin: error tooltip&#39;s arrow is misplaced on 1st show</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5324</span>&#160;<span class="ticket-notes">Missing grid loadMask on first load</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5348</span>&#160;<span class="ticket-notes">Error when using buffered grid + locking columns</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5349</span>&#160;<span class="ticket-notes">Can not control the style emptyText displayed in the grid.  Need x-grid-empty support</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5397</span>&#160;<span class="ticket-notes">Problem setting grid column filters programmatically.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5398</span>&#160;<span class="ticket-notes">CellEditing plugin+textfield editor doesn&#39;t completeEdit on header click.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5404</span>&#160;<span class="ticket-notes">Grids : RESTful Store with GridPanel and RowEditor : Not able to add rows with data to the grid in a particular scenario</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5510</span>&#160;<span class="ticket-notes">Scrollbar in a grid defined with no header overlaps the grid row</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5531</span>&#160;<span class="ticket-notes">Grids: Grid with Locking Capability -The browser session is get killed once all the unlock columns are changed as lock columns</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5573</span>&#160;<span class="ticket-notes">Using loadingHeight keeps grid at loading height, doesn&#39;t recalculate after load complete.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5576</span>&#160;<span class="ticket-notes">groupgrid is not showing properly in beta3</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5581</span>&#160;<span class="ticket-notes">Grid Live Search Grid : Find Previous Row [&lt;] button is truncated </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5586</span>&#160;<span class="ticket-notes">Store remote filtering doesn't work with infinite scrolling. </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5598</span>&#160;<span class="ticket-notes">Grid Row Editing- Displaying Js Error when click on add Employee button or double click on any row in the grid</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5599</span>&#160;<span class="ticket-notes">Grids- Infinite Scroll Grid- All the topic links are changing to visited state if single topic link is visited / clicked</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5616</span>&#160;<span class="ticket-notes">Grid- Infinite Scrolling Grid - Sort Ascending / Sort Descending is not working for Author field</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5707</span>&#160;<span class="ticket-notes">CellEditing plugin needs to be more robust in case intervening listeners delete the targeted record.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5717</span>&#160;<span class="ticket-notes">Grids Custom Grid Filters Displaying JS error while mouse hovering on filters option from Size column header drop down </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5739</span>&#160;<span class="ticket-notes">Grids : Grid Plugins : Collapse button &#39;-&#39; is moving to middle of the row, while the row is expanded</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Layouts (15)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4751</span>&#160;<span class="ticket-notes">Layout issues in application upon clicking on one of the results in the grid.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5182</span>&#160;<span class="ticket-notes">Toolbar layout is unexpected after first render</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5270</span>&#160;<span class="ticket-notes">Problem using table layout in center panel of a border layout</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5274</span>&#160;<span class="ticket-notes">Margin with fit layout and shrink wrap</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5318</span>&#160;<span class="ticket-notes">Layout Managers : Border Layout : &quot;South Eastern&quot; panel&#39;s UI is disturbed when collapsed and expanded the &quot;South&quot; panel</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5320</span>&#160;<span class="ticket-notes">Anchor Layout on a window, the title bar is rolled up into a circular header.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5435</span>&#160;<span class="ticket-notes">Box layout interferes with layout of shrinkwrap items</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5455</span>&#160;<span class="ticket-notes">Configured placeholder for border region not respected</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5551</span>&#160;<span class="ticket-notes">Hbox layout doesn&#39;t recalculate height when align:stretchmax is set</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5589</span>&#160;<span class="ticket-notes">Container with vbox layout with minHeight set will not grow past minHeight when auto sized children added to this container</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5665</span>&#160;<span class="ticket-notes">Wrong priority of 'flex' vs fixed size in h/vbox layouts</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5679</span>&#160;<span class="ticket-notes">Hbox does not stretch vertically in a specific configuration</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5711</span>&#160;<span class="ticket-notes">Layout Browser Custom layouts.    Center incorrect to the specification defined for Inner centered Panel width </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5724</span>&#160;<span class="ticket-notes">Layout Failure for Collapsed Fieldsets</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5753</span>&#160;<span class="ticket-notes">Layout Managers: Table Layout : Blank page when resizing the  browser in IE Quirks</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">MVC (2)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-2311</span>&#160;<span class="ticket-notes">Verify the focus on the tabs when user click on open all button</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-2312</span>&#160;<span class="ticket-notes">Verify the tabs display when user click&#39;s on open all button.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Menu (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5689</span>&#160;<span class="ticket-notes">Large menus don't constrain to viewport</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Misc (65)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3782</span>&#160;<span class="ticket-notes">MVC Feed Viewer - Load mask appears when switching feeds even if not viewing the feed tab</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3943</span>&#160;<span class="ticket-notes">Keyboard Feed Viewer - Highlighted color is not displaying correctly in IE 6 </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3990</span>&#160;<span class="ticket-notes">Editor - Label captions are overlapping on the text fields when long label caption is entered without any space.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4022</span>&#160;<span class="ticket-notes">Add "refresh" event to Store to match "datachanged" in v3</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4123</span>&#160;<span class="ticket-notes">Ext.Array.from() with function gives empty array</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4125</span>&#160;<span class="ticket-notes">getNode return wrong record after add new record</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4171</span>&#160;<span class="ticket-notes">User details - Drop down items are displaying at the top of the page when double-click on the Editor panel   </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4175</span>&#160;<span class="ticket-notes">Button doesn't have proper markup or styling in IE in sandbox mode</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4288</span>&#160;<span class="ticket-notes">Grid row selection is cleared after store sync.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4397</span>&#160;<span class="ticket-notes">Drag Drop Manager doesn't select correct drop target</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4419</span>&#160;<span class="ticket-notes">MessageBox doesn't fire callback when top-right close button clicked</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4426</span>&#160;<span class="ticket-notes">Problem with column header grouping at level 3. Columns can not be hidden.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4455</span>&#160;<span class="ticket-notes">App freezes when an incorrect query is passed to Ext.app.Controller.control()</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4555</span>&#160;<span class="ticket-notes">Loading the Finnish locale file will crash an application using Ext.util.Format.date</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4594</span>&#160;<span class="ticket-notes">Transform of combo does not use configured store </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4602</span>&#160;<span class="ticket-notes">Syntax errors when compiling SASS themes</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4845</span>&#160;<span class="ticket-notes">Vml Draw/Sprite images not using X/Y offset in Vml</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4847</span>&#160;<span class="ticket-notes">Ext.Loader doesn&#39;t recognize files that are not under /app</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4953</span>&#160;<span class="ticket-notes">Localization(dynamic) : Displaying JS error upon selecting &quot;Hebrew&quot; from the Language selector.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4955</span>&#160;<span class="ticket-notes">Checkboxgroups W/ More Columns Than Checkboxes Throws JS Error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4956</span>&#160;<span class="ticket-notes">Creating A Checkbox Group /w Hidden Field Throws JS Error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5103</span>&#160;<span class="ticket-notes">Bug with Implicit Model / Store / MixedCollection / Proxy</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5138</span>&#160;<span class="ticket-notes">Reader needs to read records even when success:false</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5233</span>&#160;<span class="ticket-notes">Combination Examples : Ext JS Calendar : Displaying  JS error  while upon click and hold the mouse on day event matrix.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5247</span>&#160;<span class="ticket-notes">Border of child hidden if border of container is hidden</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5383</span>&#160;<span class="ticket-notes">Using two panels for both drag and drop fails</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5441</span>&#160;<span class="ticket-notes">Viewport with a configured height width sets the height and width on the document body causing the viewport to not fit the browser window in firefox quirks mode</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5468</span>&#160;<span class="ticket-notes">Loading indicator still visible with panel collapsed</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5490</span>&#160;<span class="ticket-notes">Possible bug when grouping by a template column in a grid</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5497</span>&#160;<span class="ticket-notes">Bug when centering components in vbox/hbox layouts</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5506</span>&#160;<span class="ticket-notes">Datepicker displays Invalid date format when chinese or japanese localization applied</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5513</span>&#160;<span class="ticket-notes">Miscellaneous : Editor : Displaying JS error upon double clicking on text labels</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5522</span>&#160;<span class="ticket-notes">Ext.String.htmlDecode / Ext.String.htmlEncode should operate on a larger set of characters/entities</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5537</span>&#160;<span class="ticket-notes">Ext.form.DateField returns incorrect value when localized</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5546</span>&#160;<span class="ticket-notes">dirtyCls style not applied to slider field</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5559</span>&#160;<span class="ticket-notes">Ghost image while dragging a panel</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5564</span>&#160;<span class="ticket-notes">All Date pickers: Not able to select date from date picker by using key board navigation keys, in all examples</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5566</span>&#160;<span class="ticket-notes">ComponentLoader should suspend layouts when adding/removing items</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5568</span>&#160;<span class="ticket-notes">ToolbarDroppable.calculateEntryIndex gets wrong index</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5572</span>&#160;<span class="ticket-notes">Issue with listeners for the store.load() event</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5583</span>&#160;<span class="ticket-notes">Accessibility : Binding Grid to a form : Month and Today button names are truncated in IE 7</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5610</span>&#160;<span class="ticket-notes">Web Desktop - Displaying Js Error upon double clicking close button of Accordion Window.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5631</span>&#160;<span class="ticket-notes">Combination Examples - Portal Demo - Graph is not displaying in Stock Portlet </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5635</span>&#160;<span class="ticket-notes">Grids:Column swapping disturb the data in the Grid</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5645</span>&#160;<span class="ticket-notes">Bug when collapsing the only panel in an accordion layout.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5652</span>&#160;<span class="ticket-notes">Toolbar that contains the error in datefield</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5661</span>&#160;<span class="ticket-notes">Syntax errors when compiling SASS themes</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5663</span>&#160;<span class="ticket-notes">Global leak in injectLockable</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5669</span>&#160;<span class="ticket-notes">Grids :Grouping with Remote Summary -The data in the grid get disturb while checking the Project column</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5671</span>&#160;<span class="ticket-notes">Combination examples: Kitchensink: Locking grid: lock/unlock options in the drop-down menu seen only first time.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5685</span>&#160;<span class="ticket-notes">Grouping Feature error after remote data update.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5687</span>&#160;<span class="ticket-notes">Ext.core.DomHelper overwrite only accepts DOM elements not Ext.Element instances</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5693</span>&#160;<span class="ticket-notes">Setting initially active tab using a string ID caused JS error.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5696</span>&#160;<span class="ticket-notes">Return false on Tab beforeactivate not handled properly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5698</span>&#160;<span class="ticket-notes">Drag/Drop Information Box hides in Ext.Window</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5710</span>&#160;<span class="ticket-notes">Grids :All Grids :The data under the columns get disturb while checking and un-checking the columns.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5714</span>&#160;<span class="ticket-notes">Strange behaviour of DatePicker placing in Panel with vbox layout.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5718</span>&#160;<span class="ticket-notes">Toolbars and Menus:Basic Toolbar: The page UI get disturb while mouse over on Choose a Date.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5730</span>&#160;<span class="ticket-notes">Charts dont fire click/dblclick events</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5732</span>&#160;<span class="ticket-notes">Simple Tasks : Text Editor is displaying in the task list panel.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5737</span>&#160;<span class="ticket-notes">Simple Task - Creation of New Folder/New List is displaying in wrong location</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5740</span>&#160;<span class="ticket-notes">Validation error message tool tip has truncated height</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5751</span>&#160;<span class="ticket-notes">Layout problems in PortalPanel with an anchor layout </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5768</span>&#160;<span class="ticket-notes">Combo Box - ComboBox Templates - Search results are disappearing on double clicking page next icon on pagination panel.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5773</span>&#160;<span class="ticket-notes">Misc- Quick tips - Displaying JS error upon click on Rich Content Tooltip link after mouse hover on Anchor right, rich content button under callout Tip</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Panel (4)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5149</span>&#160;<span class="ticket-notes">"mini" collapseMode in border layout doesn't seem to work</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5312</span>&#160;<span class="ticket-notes">Ext.form.Panel.getValues() does not respect isDirty argument</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5445</span>&#160;<span class="ticket-notes">Panels with html are 2px too high in IE quirks</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5505</span>&#160;<span class="ticket-notes">Corners of framed headers don't display correctly in old IE</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tabs (4)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4178</span>&#160;<span class="ticket-notes">Positioning problem when using TabPanel and a custom stylesheet</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5315</span>&#160;<span class="ticket-notes"> Closing a tab moves to the first tab rather than going to the previous tab</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5448</span>&#160;<span class="ticket-notes">Tab icon is cut off in IE8 strict and IE9 strict</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5613</span>&#160;<span class="ticket-notes">Tabs - Advance Tab - All tabs are closing when closable check box is selected from submenu </span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Theme (3)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5542</span>&#160;<span class="ticket-notes">Hard coded value in variables/_grid.scss</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5547</span>&#160;<span class="ticket-notes">Some values are hard-coded values in the SASS files</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5590</span>&#160;<span class="ticket-notes">Opacity is compounding for components in a deeply nested disabled container</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">ToolTips (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5408</span>&#160;<span class="ticket-notes">Show delay not always working for qtips in tree grid </span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Toolbars (1)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5742</span>&#160;<span class="ticket-notes">Toolbars and Menus : Basic Toolbar : Top and Bottom arrows are not displaying when click on the scrolling menu button for the second time.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tree (7)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-1887</span>&#160;<span class="ticket-notes">Tree does not allow horizontal scrolling</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3935</span>&#160;<span class="ticket-notes">TreeStore doesn't allow root property to be an object path</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4437</span>&#160;<span class="ticket-notes">BorderLayout accordion region has buggy expand/collapse behavior when floated</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4476</span>&#160;<span class="ticket-notes">NodeInterface can lose dirty state and fail to send batched updates</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4815</span>&#160;<span class="ticket-notes">Trees : Drag and Drop reordering : After clicking on &#39;Expand All&#39; and &#39;Collapse All&#39; tree is not behaving as expected.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5219</span>&#160;<span class="ticket-notes">Problem whith TreeGrid node (greater than 600 leafs)</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5387</span>&#160;<span class="ticket-notes">Trees : Drag and Drop Reordering:  Expand All button is not responding for the second time.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Window (4)
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-1732</span>&#160;<span class="ticket-notes">Hiding the progress dialog window while it is being dragged breaks draggability</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5310</span>&#160;<span class="ticket-notes">Window position changes when resized</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5507</span>&#160;<span class="ticket-notes">Drag and drop on overlapped windows fires events in both windows</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5608</span>&#160;<span class="ticket-notes">zIndex is wrong for floated windows</span>
+                            </li>
+                        </ul>
+                    </li>
+                Total: 212</ul>
+            </div>
+<!-- ************************************************************************** -->
+            <div class="release">
+                <h1>Release Notes for Ext JS 4.1.0 RC 1</h1>
+                <p class="notes">
+                    Release Date: March 13, 2012<br>
+                    Version Number: 4.1.0 RC 1
+                </p>
+                <h2>Bugs Fixed</h2>
+                <ul>
+                    <li class="component">Button
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5129</span>&#160;<span class="ticket-notes">Button does not adhere to width setting in IE9</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Charts
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4416</span>&#160;<span class="ticket-notes">Chart label misaligned on numeric x axis </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5459</span>&#160;<span class="ticket-notes">Setting markers to be hidden in renderer has no effect when chart isn&#39;t animated</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Core
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3710</span>&#160;<span class="ticket-notes">LoadMask is broken in sandbox build</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4920</span>&#160;<span class="ticket-notes">setSize should cancel panel collapse animation</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5179</span>&#160;<span class="ticket-notes">XTemplate breaks in IE when trying to innerHTML on a TR and other table elements</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5352</span>&#160;<span class="ticket-notes">Bug with Ext.msg.Confirm and Translation/Localisation</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5380</span>&#160;<span class="ticket-notes">DomQuery fails to return nodes when searching XML document by "contains" pseudo-class</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5416</span>&#160;<span class="ticket-notes">Component ancestor searching inconsistent</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5417</span>&#160;<span class="ticket-notes">Observable.fireEvent does not return true when there are no listeners.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5443</span>&#160;<span class="ticket-notes">Wrong Arguments Passed to onReady in Firefox</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5502</span>&#160;<span class="ticket-notes">DomHelper append causing javascript error </span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Data
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5035</span>&#160;<span class="ticket-notes">Store.rejectChanges fails to remove all new records </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5278</span>&#160;<span class="ticket-notes">Store.rejectChanges should restore original record index</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5337</span>&#160;<span class="ticket-notes">A read exception should be fired on the reader rather than halting execution when bad data is returned from the server</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">DataView
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5526</span>&#160;<span class="ticket-notes">DataView ? Multi-sort DataView: Not displaying any icons upon clicking on Type button</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Documentation
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4054</span>&#160;<span class="ticket-notes">Docs Landing Page Mentions Chrome 11</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5314</span>&#160;<span class="ticket-notes">Column layout from "Layouts and Containers" guide is incorrect</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Draw
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5239</span>&#160;<span class="ticket-notes">getBBox() does not work on text sprites</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5246</span>&#160;<span class="ticket-notes">Ext.draw.Sprite image x and y do not become effective</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5356</span>&#160;<span class="ticket-notes">Regression in Draw (only quirks mode) tests for IEs.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5368</span>&#160;<span class="ticket-notes">CompositeSprite incomplete destroy</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5492</span>&#160;<span class="ticket-notes">Draw.rectPath unit test failure</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Examples
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4533</span>&#160;<span class="ticket-notes">Combination Examples -> Kitchen Sink -> Tabs -> Titled Tab Panels: Not displaying complete text in Ext.tab.Panel with frame:true Panel</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5281</span>&#160;<span class="ticket-notes">Combination Examples : Calender : Displaying JS error upon clicking on &quot;Save&quot; button in Add event form.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5287</span>&#160;<span class="ticket-notes">Combination Examples: Portal Demo: UI of  Portal Demo is disturbed when double clicked multiple times on expand/collapse button of  "Options" panel</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5411</span>&#160;<span class="ticket-notes">Combination Examples ? Web Desktop: Panel headers of Accordion Window are not minimizing to the task bar</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5532</span>&#160;<span class="ticket-notes">Combination Examples - Portal Demo - Displaying JS Error while Accessing portal demo example.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Forms
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4940</span>&#160;<span class="ticket-notes">Ext.form.TimeField class contained typeAhead, later releases the Ext.form.field.Time class this functionality is missing</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5286</span>&#160;<span class="ticket-notes">Forms: Checkbox /Radio Groups: Validation icon is wrongly displayed at "Alignment Test:" field when clicked on "Save" button</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5322</span>&#160;<span class="ticket-notes">Triggers are the wrong height in the checkout form example in IE6</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5354</span>&#160;<span class="ticket-notes">Changing slider on form does not trigger dirtychange</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5359</span>&#160;<span class="ticket-notes">Forms  : File upload:  Unable to upload files using  Browse button.(Browse button is not working)</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5389</span>&#160;<span class="ticket-notes">Form gets dirty if a textarea field contains a leading line break</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5396</span>&#160;<span class="ticket-notes">Forms: Vbox Layout : Email id's are not displaying in the "Send to:" field In a specific scenario.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5401</span>&#160;<span class="ticket-notes">Ext.form.field.File fields are not clickable</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5426</span>&#160;<span class="ticket-notes">Empty Combo inserts blank value</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5428</span>&#160;<span class="ticket-notes">After adding Ext.FocusManager.enable() to beginning of code unable to enter a blank space in a text field</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5439</span>&#160;<span class="ticket-notes">Icon changes in trigger even if disabled</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5463</span>&#160;<span class="ticket-notes">Forms - Shopping cart checkout form Alert message tool tips are displayed as shadows.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5494</span>&#160;<span class="ticket-notes">When dragging a Slider Thumb, and the mouse moves outside the range, tracking ceases.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5519</span>&#160;<span class="ticket-notes">ExtDirect Form Post (File Upload) doesn&#39;t work properly with hidden fields</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Grid
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-2061</span>&#160;<span class="ticket-notes">Grid vertical scrollbar is reset when when the grid panel is collapsed and then expanded</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3619</span>&#160;<span class="ticket-notes">Column header misaligned after column resize until view scrolled horizontally</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3770</span>&#160;<span class="ticket-notes">Bug Tree/Grid Scroller Stops Working</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4291</span>&#160;<span class="ticket-notes">Spinner does not work when added to grid</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4876</span>&#160;<span class="ticket-notes">Horizontal Scrollbar with hideHeaders</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5206</span>&#160;<span class="ticket-notes">Issues with buffered grid and loading mask in ExtJS 4.1</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5218</span>&#160;<span class="ticket-notes">Localisation of "Loading..." grid message</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5334</span>&#160;<span class="ticket-notes">When loading Ext on demand and creating a Grid it fails</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5361</span>&#160;<span class="ticket-notes">ComboBox used as a grid column editor in cell editing does not save its value if the user selects an item in the drop down list and tabs to the next column</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5382</span>&#160;<span class="ticket-notes">Grids:Grouping - The "Show in Groups" check box is not working</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5466</span>&#160;<span class="ticket-notes">Grid column header heights and vertical text alignment are inconsistently implemented accross browsers</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5467</span>&#160;<span class="ticket-notes">Property grid rows are the wrong height</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5518</span>&#160;<span class="ticket-notes">Grid mask is shown above Window when grid panel and window overlap</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Layouts
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-2426</span>&#160;<span class="ticket-notes">createChild bug in FF 3.6 with label element.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5347</span>&#160;<span class="ticket-notes">Layout Managers - Complex Layout: "South" panel's expand/collapse button is displayed in expand mode even after panel is expanded</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5476</span>&#160;<span class="ticket-notes">Checkboxgroup layout doesn't calculate natural size properly</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">MVC
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4202</span>&#160;<span class="ticket-notes">Problem with building when MVC app has a custom directory structure</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4464</span>&#160;<span class="ticket-notes">prepareAssociatedData method doesn't handle nested asssociations [Parature Inc]</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5414</span>&#160;<span class="ticket-notes">A standard combination of treeview, with an autoload store that has a direct proxy cause the load mask to hang</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Menu
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4867</span>&#160;<span class="ticket-notes">Ext.menu.Menu -> inside a container</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Misc
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4175</span>&#160;<span class="ticket-notes">Button doesn't have proper markup or styling in IE in sandbox mode</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4326</span>&#160;<span class="ticket-notes">Buffered scrolling is not working properly when using mouse wheel.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4525</span>&#160;<span class="ticket-notes">Child panels with padding in border layout do not minimise correctly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4553</span>&#160;<span class="ticket-notes">Combobox loses value once you reselect the same value</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4563</span>&#160;<span class="ticket-notes">Row Editing throwing error when used with locked columns in grid</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4642</span>&#160;<span class="ticket-notes">Chaining CompositeElement calls doesn&#39;t work as in Ext 3</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4747</span>&#160;<span class="ticket-notes">pagingscoller does not work with small page size</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4844</span>&#160;<span class="ticket-notes">Ext.data.Store -&gt; autoDestroy config is missing</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4857</span>&#160;<span class="ticket-notes">[4.0.7] Combobox selectOnTab does not work in Webkit Browsers</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4935</span>&#160;<span class="ticket-notes">bulleted lists wrap around floating icon in MessageBox</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5118</span>&#160;<span class="ticket-notes">Tab scrolling doesn't work on IE9 standards</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5136</span>&#160;<span class="ticket-notes">Model#set([Object]) calls endEdit() with empty modifiedFieldNames arg</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5195</span>&#160;<span class="ticket-notes">[4.1 B1] Array methods should wrap native methods instead of delegating</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5215</span>&#160;<span class="ticket-notes">Floating component and its shadow may get out of sync</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5226</span>&#160;<span class="ticket-notes">[4.1 B2] Focus on OK button in MessageBox</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5234</span>&#160;<span class="ticket-notes">Combination Examples  -Ext JS Calendar: First created event is shifting over  second created event upon mouse click and hold for a while</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5240</span>&#160;<span class="ticket-notes">updateRecord requires record even though it stores the current record</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5268</span>&#160;<span class="ticket-notes">Infinite Grid example: sort by date "Last Post" and only 50 records remains in the grid</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5289</span>&#160;<span class="ticket-notes">Miscellaneous - Browser State Management: UI of "Browser State Management" is disturbed when double clicked multiple times on splitter collapse/ expand button of "Collapse /Width Panel"(only when window is in re-sized mode)</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5325</span>&#160;<span class="ticket-notes">Hbox and collapsing panels broken</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5326</span>&#160;<span class="ticket-notes">Inconsistent animate behavior for TreePanel </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5363</span>&#160;<span class="ticket-notes">Month picker OK button is incorrectly localized in ext-lang-es.js file</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5390</span>&#160;<span class="ticket-notes">An error is thrown when the portal is put inside a form panel</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5392</span>&#160;<span class="ticket-notes">Locked grid rows are out of sync when vertical scrolling</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5410</span>&#160;<span class="ticket-notes">The validation error message is rendered improperly in a certain case, causing it to align middle with the text field, instead of left aligned like it is supposed to.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5430</span>&#160;<span class="ticket-notes">Portal example, dropping portals is much slower compared</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5434</span>&#160;<span class="ticket-notes">TaskRunner - initial run of task is delayed</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5440</span>&#160;<span class="ticket-notes">me.stretcher in pagingscroller is undefined when destroying a non rendered view</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5442</span>&#160;<span class="ticket-notes">Observable hasListeners optimization does not work with MVC EventBus</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5446</span>&#160;<span class="ticket-notes">Problem with radiogroup setValue </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5451</span>&#160;<span class="ticket-notes">Unable to borrow() more than one function</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5453</span>&#160;<span class="ticket-notes">Attempting to show a load mask on a panel results in an exception</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5454</span>&#160;<span class="ticket-notes">Space for scrollers reserved in various layouts</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5479</span>&#160;<span class="ticket-notes">FF10 specific function: Ext.view.Table.forceReflow. The &#39;table&#39; el does not exist when this function is called.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5496</span>&#160;<span class="ticket-notes">TaskManager doesn&#39;t break on runtime errors, but causes infinite loop</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5513</span>&#160;<span class="ticket-notes">Miscellaneous ? Editor: Displaying JS error upon double clicking on text labels</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5517</span>&#160;<span class="ticket-notes">Keyboard Feed Viewer Displaying JS error when click on Add feed button for the second time </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5520</span>&#160;<span class="ticket-notes">Ext.widget reports config is undefined</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5534</span>&#160;<span class="ticket-notes">Cleanup few remaining autoHeight and autoWidth configs (dead code)</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5543</span>&#160;<span class="ticket-notes">focus is lost on an active cell editor in an editable grid</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Panel
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3371</span>&#160;<span class="ticket-notes">Panel collapsibe behavior does not animate on Expand</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4081</span>&#160;<span class="ticket-notes">Framed Panel's header background position is incorrect in IE9</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5376</span>&#160;<span class="ticket-notes">Animated Border Layout Collapse Flicker</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5493</span>&#160;<span class="ticket-notes">Resizer stops working when panel is collapsed</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Performance
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5269</span>&#160;<span class="ticket-notes">Remove Image-Based Element Shadows</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tabs
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5511</span>&#160;<span class="ticket-notes">MVC ? Feed Viewer: Clicking on "Open all" button not displaying all tabs for the first time</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5512</span>&#160;<span class="ticket-notes">Tabs: Tab Overflow Menu - Forward arrow and header menu buttons are not displaying</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Theme
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5336</span>&#160;<span class="ticket-notes">Theming: ButtonGroup Doesn&#39;t Respect $base-color</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Toolbars
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5516</span>&#160;<span class="ticket-notes">Toolbars and Menus - Basic Toolbar - Bottom arrow is missing in scrolling menu </span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tree
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5166</span>&#160;<span class="ticket-notes">TreeStore fails to load properly when config clearOnLoad is false [TJX]</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5395</span>&#160;<span class="ticket-notes">Drag n Drop for nodes within a tree is broken</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Window
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-2353</span>&#160;<span class="ticket-notes">maximize doesn't account for where it's constrained</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3365</span>&#160;<span class="ticket-notes">Window with id retains settings across instances</span>
+                            </li>
+                        </ul>
+                    </li>
+                </ul>
+            </div>
+
+            <div class="release">
+                <h1>Release Notes for Ext JS 4.1.0 Beta 3</h1>
+                <p class="notes">
+                    Release Date: Feb 17, 2012<br>
+                    Version Number: 4.1.0 Beta 3
+                </p>
+
+                <h2>Bugs Fixed</h2>
+                <ul>
+                    <li class="component">Animation
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5358</span>&#160;<span class="ticket-notes">Data view : Multisort Data View - Unpleasant flickering effect while sorting the items by click upon  "Name" or "Type" buttons </span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Button
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5294</span>&#160;<span class="ticket-notes">Disabled Link Button Renders Incorrectly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5295</span>&#160;<span class="ticket-notes">Link Buttons Without Text Render Incorrectly</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Charts
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5143</span>&#160;<span class="ticket-notes">Axis isn&#39;t rendered when data points are undefined</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5290</span>&#160;<span class="ticket-notes">[4.1 beta 2] BUG Chart restoreZoom() function fails</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Core
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5244</span>&#160;<span class="ticket-notes">Ext.layout.container.Container configureItem function needs fixed.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Data
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4568</span>&#160;<span class="ticket-notes">ComboBox clears filters on store when queryMode = 'local'</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Documentation
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5207</span>&#160;<span class="ticket-notes">remove release notes link from doc index.html</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5209</span>&#160;<span class="ticket-notes">broken link in our main index.html  "Learn more on sencha.com"</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Examples
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-1635</span>&#160;<span class="ticket-notes">The mask does not disappear completely in SpotLight example IE Quirks only</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5192</span>&#160;<span class="ticket-notes">Combination Examples : Kitchen sink :Displaying JS error upon clicking on "Grouped Grid" for the second time</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Forms
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4831</span>&#160;<span class="ticket-notes">Text fields with natural width are sometimes too narrow.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5286</span>&#160;<span class="ticket-notes">Forms: Checkbox /Radio Groups: Validation icon is wrongly displayed at "Alignment Test:" field when clicked on "Save" button</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Grid
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3632</span>&#160;<span class="ticket-notes">Grid performance in IE with large number of columns</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4828</span>&#160;<span class="ticket-notes">Editing cell, the edit mask or the drop down shows up hidden and wrongly located</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5184</span>&#160;<span class="ticket-notes">Buffered Store's attempts to load prefetch buffer even if initial priming returned the full dataset.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5222</span>&#160;<span class="ticket-notes">Grid items shift left in IE</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5345</span>&#160;<span class="ticket-notes">Grids (All Grids): Tool tip is displayed on top of the grid for the first time while swapping the columns</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5346</span>&#160;<span class="ticket-notes"> Grids: Remote Summary Grid Example :Displaying JS error click upon "Due Date" Column header for the first time  </span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Layouts
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4483</span>&#160;<span class="ticket-notes">Invalidating a layout must restore original size models for children</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5198</span>&#160;<span class="ticket-notes">Nested auto-sized containers do not resize properly 4.1 Beta 1</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5265</span>&#160;<span class="ticket-notes">Margin and Padding Settings with Shrink Wrapping</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5329</span>&#160;<span class="ticket-notes">Direct - Direct Form: "Direct form's" UI is disturbed, by default "Phone Numbers" and "Location Information" tab sections are not properly displaying</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Menu
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4867</span>&#160;<span class="ticket-notes">Ext.menu.Menu -> inside a container</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Misc
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4902</span>&#160;<span class="ticket-notes">Text fields sometimes appear too narrow.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5115</span>&#160;<span class="ticket-notes">Grid doesn't update cells with renderers</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5128</span>&#160;<span class="ticket-notes">Sandbox Desktop throws js error on load</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5139</span>&#160;<span class="ticket-notes">4.1 Ext.Element.fly is undefined</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5160</span>&#160;<span class="ticket-notes">Combination Examples : Ext JS Calendar : Displaying  js error while clicking on date on the left panel calendar when the &quot;Add Event&quot; screen is open on the right panel.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5161</span>&#160;<span class="ticket-notes">Combination Examples : Ext JS Calendar : Add/Edit Event pop up box is not displaying properly up on click on any event matrix.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5164</span>&#160;<span class="ticket-notes">Bug in commitRecords of Ext.data.Operation</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5168</span>&#160;<span class="ticket-notes">Form not responding to dirtychange events</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5170</span>&#160;<span class="ticket-notes">Unexpected layout on hide then show of auto layout</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5172</span>&#160;<span class="ticket-notes">Ext.button.Button - publishInnerHeight issue</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5183</span>&#160;<span class="ticket-notes">textfield width is not correct in 4.1.0 beta 1</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5196</span>&#160;<span class="ticket-notes">readOnlyCls do not work for any field</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5197</span>&#160;<span class="ticket-notes">Ext.getBody().dom is undefined after a viewport is destroyed</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5200</span>&#160;<span class="ticket-notes">Possible bug: Show tooltip at given position</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5201</span>&#160;<span class="ticket-notes">Encoding issue on textfiel</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5211</span>&#160;<span class="ticket-notes">Collapsing panel in vbox layout form doesn't fully collapse</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5216</span>&#160;<span class="ticket-notes">c is not a constructor message at the very first example</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5225</span>&#160;<span class="ticket-notes">4.1Beta2: getting the ProgressBar text is wrong the 1st time</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5227</span>&#160;<span class="ticket-notes">Performing operations on background window brings that window to front</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5229</span>&#160;<span class="ticket-notes">Inconsistent line endings</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5241</span>&#160;<span class="ticket-notes">Minor bug in Direct Proxy 4.1 Beta 2 w/fix</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5252</span>&#160;<span class="ticket-notes">&quot;Show in Groups&quot; checkbox is checked when the grid is not grouped</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5255</span>&#160;<span class="ticket-notes">IE JS error (Regression) in getXY</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5256</span>&#160;<span class="ticket-notes">grid autoHeight</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5260</span>&#160;<span class="ticket-notes">Ext.slider.Multi/Single increments don't stop at arbitrary points</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5262</span>&#160;<span class="ticket-notes">Ext.MessageBox.confirm close button not firing callback</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5267</span>&#160;<span class="ticket-notes">Cannot create hidden &amp;amp; disabled filefield</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5275</span>&#160;<span class="ticket-notes">Opacity not passed on to Ext.Layer shadow</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5276</span>&#160;<span class="ticket-notes">Ext.view.Table.collectData with rowexpander</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5293</span>&#160;<span class="ticket-notes">Unable to mix flex/width configs for grid columns in Firefox</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5296</span>&#160;<span class="ticket-notes">Infinite scrolling grid makes server call when bottom is reached</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5297</span>&#160;<span class="ticket-notes">PagingScrollbar doesn&#39;t ignore horizontal scrolling</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5300</span>&#160;<span class="ticket-notes">TextArea with grow sizes incorrectly based on the value of the TextArea</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5328</span>&#160;<span class="ticket-notes">Displaying JS error while accessing couple of ExtJs examples.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5333</span>&#160;<span class="ticket-notes">Global varibable leak</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5338</span>&#160;<span class="ticket-notes">Load mask cannot be removed when animateTarget is set</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5340</span>&#160;<span class="ticket-notes">Ext.XTemplate no longer handles nested {parent} references</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5388</span>&#160;<span class="ticket-notes">Ext.FocusManager.enable() causes error in nightly builds from 2/14 and 2/15 </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5393</span>&#160;<span class="ticket-notes">ComboBox needs 2 clicks to trigger</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Panel
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5264</span>&#160;<span class="ticket-notes">Issues with collapsing and expanding panels - similar issue found in Ext JS border layout example</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5330</span>&#160;<span class="ticket-notes">Accordion & Border Layout Collapsed Size</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Performance
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5221</span>&#160;<span class="ticket-notes">Frame Info Caching</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tabs
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5304</span>&#160;<span class="ticket-notes">Styling of Disabled Tabs</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">ToolTips
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5210</span>&#160;<span class="ticket-notes">QuickTips with fixed width "lock" to that width</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Window
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5122</span>&#160;<span class="ticket-notes">Window header heights are sometimes incorrect</span>
+                            </li>
+                        </ul>
+                    </li>
+                </ul>
+            </div>
+
+<!-- ************************************************************************** -->
+            <div class="release">
+                <h1>Release Notes for Ext JS 4.1.0 Beta 2a</h1>
+                <p class="notes">
+                    Release Date: Feb 2, 2012<br>
+                    Version Number: 4.1.0 Beta 2a
+                </p>
+                <h2>Bugs Fixed</h2>
+                <ul>
+                    <li class="component">Misc
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5217</span>&#160;<span class="ticket-notes">[4.1-20120123] Unable to use 'class' model fields</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Performance
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5142</span>&#160;<span class="ticket-notes">Anchor layout can cause performance issues if overflow occurs.</span>
+                            </li>
+                        </ul>
+                    </li>
+                </ul>
+                <h2>Summary</h2>
+                <p>This beta 2 refresh introduces the Ext JS Page Analyzer which just didn't
+                   quite make it in Beta 2. The Page Analyzer helps you understand the performance
+                   characteristics of your application as it relates to Ext JS.
+                   
+                <p>More information will follow regarding how to use the Page Analyzer, but
+                   to get started today, you'll need to copy the "/examples/page-analyzer"
+                   folder to the same server that you want to test (ensuring relative paths
+                   to ext-all.js and the resources/css folder).
+
+                <p>Open the page-analyzer.html file from that folder and then enter the URL
+                   to the page you want to test and hit Load. Once the page loads, there is
+                   a breakdown of the layouts executed as well as a simple performance
+                   chart.
+
+                <p>Look for more details to follow.
+            </div>
+
+<!-- ************************************************************************** -->
+            <div class="release">
+                <h1>Release Notes for Ext JS 4.1.0 Beta 2</h1>
+                <p class="notes">
+                    Release Date: January 26, 2012<br>
+                    Version Number: 4.1.0 Beta 2
+                </p>
+                <h2>Bugs Fixed</h2>
+                <ul>
+                    <li class="component">Button
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5066</span>&#160;<span class="ticket-notes">Miscellaneous: Buttons: Disable buttons are click able</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Charts
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5015</span>&#160;<span class="ticket-notes">Issue in FormDashboard, default color is wrong for radar chart points</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5113</span>&#160;<span class="ticket-notes">Regression in Draw strict and quirks tests for almost all browsers.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Core
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4882</span>&#160;<span class="ticket-notes">Invalid DOM id's can cause exceptions</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5018</span>&#160;<span class="ticket-notes">Ext.Number.snap does not take minValue into account</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5084</span>&#160;<span class="ticket-notes">Not allowed access to stylesheets when using file:// protocol</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">DataView
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5045</span>&#160;<span class="ticket-notes">Data View :Animated Data View : Sliders and panel headers are disappearing after moving the sliders couple of times</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Documentation
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3046</span>&#160;<span class="ticket-notes">Field setValue() firing change event</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4889</span>&#160;<span class="ticket-notes">Overview guide is missing from 4.1 Beta 1</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Draw
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5044</span>&#160;<span class="ticket-notes">Drawing - Rotate Text : Displaying JS error upon clicking on slider bar</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Examples
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4861</span>&#160;<span class="ticket-notes">Need to create Upgrade Overview off of examples/index.html</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4916</span>&#160;<span class="ticket-notes">Combination Examples:Web desktop: Masking on the page is not removed after clicking on yes/No button   in the pop-up dialog.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4925</span>&#160;<span class="ticket-notes">Combination Examples : Web desktop :Displaying errors in error console upon clicking on "Accordion window" on the desktop.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4982</span>&#160;<span class="ticket-notes">We need to link calendar to our main examples page</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5026</span>&#160;<span class="ticket-notes">Combination Examples : Ext JS Calendar : UI issues in "Ext JS Calendar" example </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5094</span>&#160;<span class="ticket-notes">Feed viewer - Combination examples :  Displaying JS error upon clicking on tabs. </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5095</span>&#160;<span class="ticket-notes">Combination Examples : Web desktop : Features in the note pad are not applying for the selected text.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Forms
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4241</span>&#160;<span class="ticket-notes">The behavior of the stripCharsRe attribute in fields is wrongly documented (or is wrong)</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4879</span>&#160;<span class="ticket-notes">Forms - Contact Us Form : UI is disturbed for "Contact Us" form</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4948</span>&#160;<span class="ticket-notes">Forms - MultiSelect and ItemSelector : UI of  "ItemSelector Test" form is disturbed when clicked on "Clear" button</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4970</span>&#160;<span class="ticket-notes">Field CSS position change can break customized fields</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5116</span>&#160;<span class="ticket-notes">Forms: Checkbox/Radio Groups: Displaying js error on loading </span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Grid
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4647</span>&#160;<span class="ticket-notes">Cell Editing with Summary Feature error on View refresh</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4837</span>&#160;<span class="ticket-notes">Grids: Grouped Header Grid -    Extra space is created while drag and drop nested columns within the category header </span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4881</span>&#160;<span class="ticket-notes">Grids - Basic Array Grid - Displaying JS error when refreshing the page after swapping the columns</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4929</span>&#160;<span class="ticket-notes">Grids - Grouping with Remote Summary : "Sponsored Projects" window is keep on loading and not displaying the data</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4939</span>&#160;<span class="ticket-notes">Grids - Grouped Header Grid : "Last Updated" column is not displayed when drag and dropped under the "Stock Price" group</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4995</span>&#160;<span class="ticket-notes">Grids - Infinite Grid : Data inside the grid is not displayed when vertical scroll bar is pull down</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5022</span>&#160;<span class="ticket-notes">Grid headerCt border-bottom-color should be #c5c5c5</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5038</span>&#160;<span class="ticket-notes">RowNumberer column header has no right border</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5065</span>&#160;<span class="ticket-notes">GridCellEditing: Hide 'Common Name'  column and tapping on 'Add Plant' button shows text field as expanded</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5091</span>&#160;<span class="ticket-notes">TableView should not update its layout upon refresh if infinite scrolling is being used.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5141</span>&#160;<span class="ticket-notes">Buffered scrolling omits last row in prefetch buffer</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Layouts
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-3697</span>&#160;<span class="ticket-notes">Failed test: Verify Center Layout Page</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4665</span>&#160;<span class="ticket-notes">For an accordion layout in IE, the Tab key will hide the next sibling's header</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4830</span>&#160;<span class="ticket-notes">Cannot select radio button</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4851</span>&#160;<span class="ticket-notes">Layout Managers - Border Layout : Displaying js error when clicked on "North 2" layout header</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4996</span>&#160;<span class="ticket-notes">Layout Managers - Layout Browser : "Navigation" and "Footer" layouts are overlapping when clicked on "Footer" layout title bar</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5089</span>&#160;<span class="ticket-notes">Docked right components are incorrectly sized in IE6</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Menu
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4867</span>&#160;<span class="ticket-notes">Ext.menu.Menu -> inside a container</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Misc
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4407</span>&#160;<span class="ticket-notes">[4.0.7] Tab font variable never honoured</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4685</span>&#160;<span class="ticket-notes">Combination Example-Theme Viewer :Displaying JS error upon clicking on "Toggle Enabled" button  in the  Form Widget.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4749</span>&#160;<span class="ticket-notes">[4.0.7] not possible to hide a column series in a chart with the hideAll()-method</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4801</span>&#160;<span class="ticket-notes">Row Editor breaking in 4.1 with a grouped header, and a store not initially populated</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4862</span>&#160;<span class="ticket-notes">We need to remove jira.html from our knightly zip</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4871</span>&#160;<span class="ticket-notes">Error with Ext.util.Animate</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4874</span>&#160;<span class="ticket-notes">Ext.draw (Ext.create) ExtJS 4.0.7/ 4.1(Win7)</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4885</span>&#160;<span class="ticket-notes">[4.1B1] Unused variable</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4886</span>&#160;<span class="ticket-notes">[4.1 B1] Button broken when handleMouseEvents is false</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4887</span>&#160;<span class="ticket-notes">Ext.Date and Ext.Number undefined on code passed to functionFactory() (sandbox)</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4888</span>&#160;<span class="ticket-notes">CSS doesn't get minified in 4.1 beta 1</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4891</span>&#160;<span class="ticket-notes">Visual Diff: Panel padding-top appears to be ignored</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4894</span>&#160;<span class="ticket-notes">Visual Diff: Buttons too wide</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4895</span>&#160;<span class="ticket-notes">Visual Diff: Window Shadows completely missing</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4898</span>&#160;<span class="ticket-notes">Visual Diff: Windows mis-sized, broken headers</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4899</span>&#160;<span class="ticket-notes">Visual Diff: Accordion borders all wrong</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4900</span>&#160;<span class="ticket-notes">Visual Diff: Themes example has a big border all around it</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4901</span>&#160;<span class="ticket-notes">Visual Diff: Header too tall, tools mispositioned</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4905</span>&#160;<span class="ticket-notes">Visual Diff: Missing grid top border</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4907</span>&#160;<span class="ticket-notes">Visual Diff: Panel header icon mispositioned</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4908</span>&#160;<span class="ticket-notes">Visual Diff: Missing group header text background color</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4910</span>&#160;<span class="ticket-notes">On Beta 1: JS error &quot;el is null&quot; when ACTUAL_BU is set to &quot;K&quot;</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4911</span>&#160;<span class="ticket-notes">Resizers on TextFields do not work in 4.1 Beta</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4912</span>&#160;<span class="ticket-notes">panel body size must not add borders twice</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4915</span>&#160;<span class="ticket-notes">Drawing :  Browser Logs - The Logos(Safari,Sencha,Tiger) are not displaying as expected.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4919</span>&#160;<span class="ticket-notes">Toolbar overflow scroller not working on a defined component</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4924</span>&#160;<span class="ticket-notes">examples/calendar -- TypeError: 'undefined' is not an object</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4934</span>&#160;<span class="ticket-notes">If paramsAsHash is true, but an Ext.direct load function takes no arguments, fail</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4946</span>&#160;<span class="ticket-notes">4.1: Form/Field isDirty() shows false if field has no original value</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4949</span>&#160;<span class="ticket-notes">Multiple Grid Instances with dockedItems</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4950</span>&#160;<span class="ticket-notes">slideOut Callback Called Too Soon</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4960</span>&#160;<span class="ticket-notes">[4.1 B1] Accordion layout - bad inline example</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4964</span>&#160;<span class="ticket-notes">[4.1 B1] CSS.createStyleSheet() error</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4965</span>&#160;<span class="ticket-notes">Grids: Grid Filters  -    The filter symbols(<,> ,=) are not properly displayed</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4967</span>&#160;<span class="ticket-notes">Is there a quick way to fasten tooltip on the top of floating window</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4973</span>&#160;<span class="ticket-notes">Component isVisible does not work if the component is not rendered.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4974</span>&#160;<span class="ticket-notes">Ext.data.treeStore.removeAll is an unsafe method</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4977</span>&#160;<span class="ticket-notes">Miscellaneous : Resizable - The re-size handler is not displaying properly.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4984</span>&#160;<span class="ticket-notes">Panel headers height in spotlight example is 2px off</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4988</span>&#160;<span class="ticket-notes">The Save button in charts should download an image (and show a popup for this)</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4998</span>&#160;<span class="ticket-notes">Chart: Pie slices does not show when values are small</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5020</span>&#160;<span class="ticket-notes">Panel height calculated too tall</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5021</span>&#160;<span class="ticket-notes">Property grid row height too small</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5036</span>&#160;<span class="ticket-notes">Fidelity: error when trying to save and update values on a form</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5037</span>&#160;<span class="ticket-notes">[4.1] Opened windows disappear when switching between tab panels</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5050</span>&#160;<span class="ticket-notes">Typo in src/data/Store.js</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5052</span>&#160;<span class="ticket-notes">rsync: link_stat "extjs/overview/." failed: No such file or directory</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5070</span>&#160;<span class="ticket-notes">TextField height Property Change</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5073</span>&#160;<span class="ticket-notes">disabled menuitem invoke menu - click-event</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5077</span>&#160;<span class="ticket-notes">[4.1-B1] Combo Box disappearing incorrectly</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5107</span>&#160;<span class="ticket-notes">[4.1] Nested fieldset not submitting it's checkbox</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5145</span>&#160;<span class="ticket-notes">Combination Examples : Ext JS Calendar -  Displaying  js error while drag and drop the event from  header of the hour matrix to hour matrix.</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Panel
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4701</span>&#160;<span class="ticket-notes">Panel headers are disconnected from panel body</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4868</span>&#160;<span class="ticket-notes">Cannot setTitle on collapsed panel in border layout</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4938</span>&#160;<span class="ticket-notes">Panel collapse/expand animations break natural auto sizing</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4997</span>&#160;<span class="ticket-notes">Panel header dimensions are way off</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5001</span>&#160;<span class="ticket-notes">Window header is incorrectly bordered</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5086</span>&#160;<span class="ticket-notes">Vertical Panel headers have visual problems</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5087</span>&#160;<span class="ticket-notes">Panel headers on framed panels instantiated with collapsed: true are truncated in old IE</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5114</span>&#160;<span class="ticket-notes">Initially placeholder-collapsed Panels have z-index:5</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5120</span>&#160;<span class="ticket-notes">Collapsed vertical panel headers have tools inserted at the wrong positiong</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Selection Model
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5040</span>&#160;<span class="ticket-notes">[Wells Fargo TechnologyKeyboard navigation issue: the down arrow key regardless of whether you are holding down the ctrl key or not triggers a select on the next row</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Tabs
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4462</span>&#160;<span class="ticket-notes">Not Verified: loadmask showing on hidden components</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5019</span>&#160;<span class="ticket-notes">Tab position off when using plain</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Theme
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5135</span>&#160;<span class="ticket-notes">Fieldset padding is wrong on IE</span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Toolbars
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-4880</span>&#160;<span class="ticket-notes">Toolbars and Menus - Status Bar : Status bar of  "Ext Word Processor" is not shown as browser's vertical scroll bar is moving up while typing any text in text area.</span>
+                            </li>
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5147</span>&#160;<span class="ticket-notes">Toolbars and Menus - Basic Toolbar - Top and Bottom arrows are missing in scrolling menu </span>
+                            </li>
+                        </ul>
+                    </li>
+                    <li class="component">Window
+                        <ul class="tickets">
+                            <li class="ticket">
+                                <span class="ticket-number">EXTJSIV-5023</span>&#160;<span class="ticket-notes">Windows: Window Variations: JS error on dragging constrained window</span>
+                            </li>
+                        </ul>
+                    </li>
+                </ul>
+            </div>
+
+            <div class="release">
+                <h1>Release Notes for Ext JS 4.1.0 Beta 1</h1>
+
+                <p class="notes">
+                    Release Date: December 22, 2011<br>
+                    Version Number: 4.1.0 Beta 1
+                </p>
+
+                <h2>Summary</h2>
+
+                <p>We are very excited to get Ext JS 4.1.0 Beta 1 out to the community! Contained in this release are literally hundreds of bug fixes. As a first beta, there are several issues that we wanted to fix but decided that they were not critical enough to hold up the release any longer. These are documented in the known issues section of the ReadMe file in the distribution.</p>
+
+                <p>I wanted to take a moment to cover some of the internals that have changed. Some of these are new since 4.1 PR1, while other changes were introduced in 4.1 PR1 but have not been previously covered.</p>
+
+                <h3>Layout</h3>
+
+                <h4>Failures</h4>
+
+                <p>As result of the design for the layout engine in 4.1, it is possible for improper configuration (or a bug) to cause a layout run to fail to complete all of its calculations. When this occurs, the layout simply stops and the partial results that have been flushed to the DOM are all that is visible. In some cases, the layout may be 99% complete and the failure may go undetected or appear as a minor visual anomaly. In other cases, the layout may fail early and leave the UI in a clearly broken state (much like a JS error during layout would do in previous versions).</p>
+
+                <h4>Diagnostics</h4>
+
+                <p>The first step if you suspect you are seeing a layout failure is to enable the layout diagnostics. This is done by replacing the normal &quot;ext-all.js&quot; file with &quot;ext-all-dev.js&quot; and adding a couple additional scripts. Like so:</p>
+
+                <pre>
+                    &lt;script type=&quot;text/javascript&quot; src=&quot;/extjs41/ext-all-dev.js&quot;&gt;&lt;/script&gt;
+                    &lt;script type=&quot;text/javascript&quot; src=&quot;/extjs41/src/diag/layout/Context.js&quot;&gt;&lt;/script&gt;
+                    &lt;script type=&quot;text/javascript&quot; src=&quot;/extjs41/src/diag/layout/ContextItem.js&quot;&gt;&lt;/script&gt;
+                </pre>
+
+                <p>Obviously, the path to Ext JS 4.1 will vary for your environment. With the above modifications, the diagnostic log can be viewed in Firebug&#x27;s or Web Inspector&#x27;s console. For IE, the logs are stored in memory and can be displayed by typing the following in the address bar once the page has loaded:</p>
+
+                <pre>
+                    javascript:void(Ext.log.show())
+                </pre>
+
+                <p>This can be bookmarked to create a &quot;bookmarklet&quot;. The log is limited to 750 lines which can be changed like so:</p>
+
+                <pre>
+                    &lt;script type=&quot;text/javascript&quot; src=&quot;/extjs41/ext-all-dev.js&quot;&gt;&lt;/script&gt;
+                    &lt;script type=&quot;text/javascript&quot;&gt;
+                        Ext.log.max = 1500;
+                    &lt;/script&gt;
+                </pre>
+
+                <h3>Model and idProperty</h3>
+
+                <p>A common mis-configuration of Model is to not specify a proper &quot;idProperty&quot;. This config property identifies the primary key of the model. This is easy to forget because &quot;idProperty&quot; defaults to &quot;id&quot;. In 4.0, if there was no actual field in the Model by this name, you could encounter JS errors under some circumstances. In 4.1, this has been fixed by automatically defining the field by this name as a &quot;string&quot; property if there is no definition given.</p>
+
+                <p>This fix can, however, have unexpected side-effects. If you notice that your models have gained an &quot;id&quot; property this is most likely why. The solution is to configure your models with the correct &quot;idProperty&quot; value.</p>
+
+                <h3>Fields and Their Layouts</h3>
+
+                <p>In Ext JS 4.1 PR1 and then again in Beta 1, fields and field layouts have undergone several internal changes. Before I dive into them, however, I wanted to cover several new configuration properties related to field rendering. We have talked to several customers who needed to replace the rendering logic of fields (things like the &quot;renderTpl&quot;, &quot;fieldSubTpl&quot; or &quot;labelableRenderTpl&quot;) to accomplish some basic tweaks for their applications. While this works, the properties being overridden are internal and have changed several times since 4.0. Rather than continue this cycle, we wanted to provide a more stable way to augment fields.</p>
+
+                <p>In Beta 1, we have added several &quot;micro&quot; render templates to decorate fields. Typically these will be just strings of simple markup, but they can be full XTemplates. These decorators are as follows:</p>
+
+                <ul>
+                    <li>*Fields*: inputAttrTpl</li>
+                    <li>*Labelable*: beforeLabelTpl, afterLabelTpl, beforeSubTpl, afterSubTpl, beforeLabelTextTpl, afterLabelTextTpl and labelAttrTpl</li>
+                    <li>*Checkbox*: beforeBoxLabelTpl, afterBoxLabelTpl, beforeBoxLabelTextTpl, afterBoxLabelTextTpl, boxLabelAttrTpl</li>
+                    <li>*HtmlEditor*: beforeTextAreaTpl, afterTextAreaTpl, beforeIFrameTpl, afterIFrameTpl, iframeAttrTpl</li>
+                </ul>
+
+                <p>The use of &quot;afterLabelTextTpl&quot; is demonstrated in two of the examples: /examples/form/dynamic.html and /examples/form/contact-form.html to render a simple &quot;required field&quot; indicator. Their role in rendering is probably obvious from their name. For further details, refer to the docs or the source for the various fieldSubTpl&#x27;s or labelableRenderTpl. If there are other decorators that might be helpful, just let us know.</p>
+
+                <p>In 4.0 and 4.1 PR1 field layouts were a rather complex balance of positioning, floating and measurement with subtle timing dependencies. In Beta 1, field layouts have been modified extensively to allow the browser to do much more of this work. To support IE6 this required the use of tables. There are still some calculations required, typically around height, but this approach eliminated lots of calculation and measurement that we previously had to perform on each field, the cost of which added up quickly.</p>
+
+                <h3>Panel collapse</h3>
+
+                <p>In 4.1 PR1, panel collapse was consolidated entirely into Panel. In 4.0, panel collapse was handled by Panel in many cases, but when contained in an Accordion or Border layout, these layouts would get very involved in the collapse/expand process. This change is unlikely to have impact on most applications, but could be important if the animation or other properties of collapsing have been customized.</p>
+
+                <h3>LoadMasks</h3>
+
+                <p>Masking is now only shared for modal windows. Non-floating and non-modal components will now create their own masks. While support for using Ext.LoadMask on elements has been deprecated in favor of the Ext.dom.Element mask() and unmask() methods, the ability to mask elements is still supported.</p>
+
+                <p>Mask management has been improved to handle re-sizing and hiding of the owning component.</p>
+
+                <h3>Drag/Drop</h3>
+
+                <p>In 4.1 Beta 1, the DragDropManager now consults the z-index to identify the top-most target of a drop. While this will fix many use cases of overlapping drop targets, it could also impact customized drag/drop processing.</p>
+
+                <h3>Store refresh event</h3>
+
+                <p>In 4.1 Beta 1, stores now fire a &#x27;refresh&#x27; event if their content is changed in a significant way. This event has the semantics of the &#x27;datachange&#x27; event from Ext JS 3.x and was added because &#x27;datachange&#x27; in 4.0 fires for any change to the store (including adding one item).</p>
+				
+
+                <h2>Bugs Fixed</h2>
+
+                <ul>
+                    <li>Button
+                        <ul>
+                    		<li>[EXTJSIV-3558] Button title doesn&#x27;t display properly when only a few characters are used in webkit-based browsers.</li>
+                    		<li>[EXTJSIV-4184] Cascading child menu initial location is incorrect when near edge of viewport</li>
+                    		<li>[EXTJSIV-4438] Button Group layout is broken (breaks Themes example)</li>
+                    		<li>[EXTJSIV-4621] Combination Examples - Feed Viewer: Raises java script error when clicked on &quot;Go to post&quot; button</li>
+                    		<li>[EXTJSIV-4623] Combination Examples - Theme Viewer:Raising js error when clicked on expand/ collapse button of Masked Panel for Theme Viewer</li>
+                    		<li>[EXTJSIV-4677] Miscellaneous - Buttons : Not properly displaying buttons with text and icons</li>
+                    	</ul>
+                    </li>
+
+                    <li>Charts
+                        <ul>
+                    		<li>[EXTJSIV-2514] Rich tooltips do not render correctly in 4.02 examples, and don&#x27;t clear correctly</li>
+                    		<li>[EXTJSIV-3493] [4.0.4] Pie Chart should display blank canvas when store load empty dataset</li>
+                    		<li>[EXTJSIV-3626] Radar Chart Line Connectors do not Appear With Default Theme</li>
+                    		<li>[EXTJSIV-3630] groupBy throws an exception when changing from &#x27;year,month,day&#x27; to &#x27;year,month&#x27;</li>
+                    		<li>[EXTJSIV-3765] [4.0.0] Ext.chart.series.Column: if you mouseOut the column, it will get a black border permanently.</li>
+                    		<li>[EXTJSIV-3783] Area Chart - Farthest right tick not firing mouse events, showing tooltip, etc.</li>
+                    		<li>[EXTJSIV-4040] [4.0.6] Gauge Chart Does not Support Tooltips or Mouse Listeners</li>
+                    		<li>[EXTJSIV-4133] Portal Demo : &quot;Graphs&quot; In the &quot;Stock portlet&quot; are not displaying.</li>
+                    		<li>[EXTJSIV-4252] Styling attributes defined in the highlight attribute of the Ext.chart.series.Series class are not considered.</li>
+                    		<li>[EXTJSIV-4270] Stacked Bar Chart - Long digit number is displaying in the X-Axis when disabling all the legend items (except &quot;Thriller&quot;)</li>
+                    		<li>[EXTJSIV-4280] Charts - Rich Tips - Legend window is truncated on the right side when hovered on corner points in the chart.</li>
+                    		<li>[EXTJSIV-4303] [4.0.7] [4.0.6] VML - broken text rotation</li>
+                    		<li>[EXTJSIV-4337] Series, radar graph, tips not passing argument</li>
+                    		<li>[EXTJSIV-4366] CPU load graphs are not displaying upon clicking on graph legends.</li>
+                    		<li>[EXTJSIV-4429] [4.0.7] Pie chart series draws incorrectly</li>
+                    		<li>[EXTJSIV-4459] If you try to render a chart in internet explorer 8 and you have animate=true, the markers will render, but lines themselves will never render</li>
+                    		<li>[EXTJSIV-4502] [4.0.7] Pie chart with two data items, where the first is zero draws oddly</li>
+                    		<li>[EXTJSIV-4505] Charts -&gt; Filled Radar Charts : JS Error is displayed when clicked on any legend item.</li>
+                    		<li>[EXTJSIV-4536] Chart with gradients turns black when displayed on more than one tab page.</li>
+                    		<li>[EXTJSIV-4544] Charts : Rich Tips - No tool tips are displayed upon mouse hovering on graph nodes for the second time.</li>
+                    		<li>[EXTJSIV-4589] Charts -&gt; Line chart: Tapping on &#x27;Reload Data&#x27; button multiple times shows blank chart</li>
+                    		<li>[EXTJSIV-4603] When hiding then showing an item from Pie Chart Legend, the Chart dose not display the field label.</li>
+                    		<li>[EXTJSIV-4604] Chart doesn&#x27;t show labels, background, X axis, and Y axis in case data model is empty. Chart should be displayed empty.</li>
+                    		<li>[EXTJSIV-4614] Charts -&gt; Area chart: Chart not rendered completely and Reload Data button not functional</li>
+                    		<li>[EXTJSIV-4622] Combination Examples - Web Desktop(Updated): Raising js error when mouse hovered on pie chart under System Status window</li>
+                    		<li>[EXTJSIV-4671] Combination Examples - Portal demo -Only &quot;djia&quot; graph is displayed in the stock portlet.</li>
+                    		<li>[EXTJSIV-4732] Charts - Area charts - Displaying Js error upon clicking on legend items In the chart</li>
+                    	</ul>
+                    </li>
+
+                    <li>Core
+                        <ul>
+                    		<li>[EXTJSIV-1755] Examples: Resizer custom resizable handles indicates drag without enabling it</li>
+                    		<li>[EXTJSIV-1996] Container findX method consistency and missing functionality</li>
+                    		<li>[EXTJSIV-2545] LoadMask&#x27;s mask el is behind any Window</li>
+                    		<li>[EXTJSIV-3379] ClassManager - define()&#x27;ing the same class multiple times will corrupt the namespace cache</li>
+                    		<li>[EXTJSIV-3621] In Ext.core.Element.unclip method at core/src/dom/Element.style.js, variable &quot;o&quot; is used before assigned</li>
+                    		<li>[EXTJSIV-3709] LoadMask doesn&#x27;t entirely cover document.body</li>
+                    		<li>[EXTJSIV-3721] Async Loading of Ext in an IFrame in IE: loading Ext in an iframe and the onReady call has no effect</li>
+                    		<li>[EXTJSIV-3743] isUpload params behave differently to form</li>
+                    		<li>[EXTJSIV-4156] itemadd does not fire when adding to an empty view</li>
+                    		<li>[EXTJSIV-4186] XTemplate does&#x27;nt handle single quote properly in some case.</li>
+                    		<li>[EXTJSIV-4482] Style names in style and bodyStyle must be proper CSS names</li>
+                    		<li>[EXTJSIV-4540] Class system blows up with stack overflow on IE</li>
+                    		<li>[EXTJSIV-4580] Memory leaks in the framework - (e.g. on the theme example)</li>
+                        </ul>
+                    </li>
+
+                    <li>Data
+                        <ul>
+                    		<li>[EXTJSIV-2528] setRootNode doesn&#x27;t allow model instance</li>
+                    		<li>[EXTJSIV-3295] layout fit grid scrollbar does not scroll content</li>
+                    		<li>[EXTJSIV-3304] Wrong height of the north and south panels in the border layout in a window</li>
+                    		<li>[EXTJSIV-3315] Wrong file in gray theme - [4.0.2a]</li>
+                    		<li>[EXTJSIV-3317] [4.0.2a] Remotefilter on buffered store and prefetch.</li>
+                    		<li>[EXTJSIV-3318] Using checkbox selection model in the editable grid produces an error</li>
+                    		<li>[EXTJSIV-3319] [extjs 4.x] How to use &amp;quot;showInInlineEditor&amp;quot; in ExtJS 4?</li>
+                    		<li>[EXTJSIV-3320] EXTJS4 Tab iconCls height bug</li>
+                    		<li>[EXTJSIV-3339] Grid plugin example not working [4.0.2a]</li>
+                    		<li>[EXTJSIV-3340] Empty Column List when there are many columns</li>
+                    		<li>[EXTJSIV-3344] Wrong example code in Object#merge()</li>
+                    		<li>[EXTJSIV-3352] Resetting the editable combobox to non empty original value results in empty val</li>
+                    		<li>[EXTJSIV-3546] [4.0.4] autoSync not working in TreeStore</li>
+                    		<li>[EXTJSIV-3657] hasOne association isn&#x27;t retrieved in getAssociatedData</li>
+                    		<li>[EXTJSIV-3836] Field mapping on idProperty can cause incorrect internalId</li>
+                    		<li>[EXTJSIV-4039] [4.0.6] Store.clearData() does not clear records from &amp;quot;removed&amp;quot; cache</li>
+                    		<li>[EXTJSIV-4124] [4.0.6] Ext.data.TreeStore.load - Async Concurrency Problem</li>
+                    		<li>[EXTJSIV-4125] getNode return wrong record after add new record</li>
+                    		<li>[EXTJSIV-4188] Ext.data.proxy.Direct and Ext.form.Panel#api are not compatible with ExtJS 4 MVC</li>
+                    		<li>[EXTJSIV-4211] Loading a store from controller using Ext.Direct: hen the paramOrder config is specified as a string, it&#x27;s split into an array but it&#x27;s not correctly passed up to its parent as an array </li>
+                    		<li>[EXTJSIV-4227] Where did rejectChanges() go?</li>
+                    		<li>[EXTJSIV-4238] Store&#x27;s &quot;write&quot; and &quot;datachanged&quot; events do not fire after saving a record if the proxy is defined on the record</li>
+                    		<li>[EXTJSIV-4240] After calling Model#save(), the model instance that is passed to the success callback is not the same instance that was saved.</li>
+                    		<li>[EXTJSIV-4242] Newly created records in TreeStore can&#x27;t be accessed using TreeStore#getNodeById()</li>
+                    		<li>[EXTJSIV-4278] [Infor Global Solutions] Ext.data.proxy.JsonP.destroy does not pass arguments in callParent</li>
+                    		<li>[EXTJSIV-4309] Ext.data.Store.loadRawData does not set total property</li>
+                    		<li>[EXTJSIV-4333] [4.0] Bug in the Ext.data.Store constructor</li>
+                    		<li>[EXTJSIV-4415] All samples are showing as &quot;undefined&quot; in the right column side-box of examples page</li>
+                    		<li>[EXTJSIV-4433] Too much recursion in Ext.data.JsonP.abort</li>
+                    		<li>[EXTJSIV-4446] Ext.ModelManager.getCount() returns always 0</li>
+                    		<li>[EXTJSIV-4594] Ext 4.0.7 - Transform of combo does not use configured store</li>
+                    		<li>[EXTJSIV-4597] Ext.data.Store.filter does not reset page number?</li>
+                    	</ul>
+                    </li>
+
+                    <li>Direct
+                        <ul>
+                    		<li>[EXTJSIV-3949] Direct : Displaying JS error while accessing Direct Tree loader example</li>
+                    		<li>[EXTJSIV-4659] Direct - Direct Named Arguments-: Age field is not displaying in the Example</li>
+                    	</ul>
+                    </li>
+
+                    <li>Documentation
+                        <ul>
+                    		<li>[EXTJSIV-4219] [4.0.2] panel Tool types documented AND in CSS, but not in sprite.</li>
+                    		<li>[EXTJSIV-4349] API docs on() method signature</li>
+                    		<li>[EXTJSIV-4609] Absolute, Accordion, Border and Table layouts have the deprecated layoutConfig</li>
+                    		<li>[EXTJSIV-4662] Documentation: Ext.Loader -&gt; setConfig(): the example code contains a &lt;script&gt; tag instead of &lt;/script&gt;:</li>
+                    	</ul>
+                    </li>
+
+                    <li>Draw
+                        <ul>
+                    		<li>[EXTJSIV-2097] viewbox: true ignores padding</li>
+                    		<li>[EXTJSIV-3950] Drawing : Displaying blank page while accessing Rotate Text (New) example</li>
+                    		<li>[EXTJSIV-4247] [Ext 4][B3] Ext.draw.Component - click event fires twice</li>
+                    		<li>[EXTJSIV-4382] Browser Logo Example: Bug with drawing bounds. Images are clipped at top</li>
+                    		<li>[EXTJSIV-4572] [4.0.7] Error when making Ext.Img resizable</li>
+                    		<li>[EXTJSIV-4753] Drawing : Resizable Sencha Logo - Unable to resize the Sencha logo</li>
+                    	</ul>
+                    </li>
+
+                    <li>Events
+                        <ul>
+                    		<li>[EXTJSIV-3590] keypress event catch and handling at check tree</li>
+                    		<li>[EXTJSIV-4132] CheckboxModel select event is not being triggered when you select from select all</li>
+                    		<li>[EXTJSIV-4160] Mouse events on Sprites not usable</li>
+                    		<li>[EXTJSIV-4264] Bug in relayEvents together with prefix</li>
+                    		<li>[EXTJSIV-4275] Ext.view.View itemadd event fired too early</li>
+                    		<li>[EXTJSIV-4466] [4.0.7] RadioGroup. Active value - error in the newValue param of the change event.</li>
+                    		<li>[EXTJSIV-4478] Column headerclick Event Not Working</li>
+                    		<li>[EXTJSIV-4627] [4.1.0PR] LoadMask listeners not removed when component is destroyed</li>
+                    		<li>[EXTJSIV-4778] SplitButton not passing the event object on click</li>
+                    	</ul>
+                    </li>
+
+                    <li>Examples
+                        <ul>
+                    		<li>[EXTJSIV-1134] Grid: Right aligned headers need additional padding on the right</li>
+                    		<li>[EXTJSIV-1135] Paging grid example - show preview is missing an icon</li>
+                    		<li>[EXTJSIV-1151] MessegeBox - cannot press escape on confirm</li>
+                    		<li>[EXTJSIV-1692] Hard Error: New desktop example. Click on About Ext JS in start menu in IE 8 and then close the video window</li>
+                    		<li>[EXTJSIV-2011] Failed test: Verify correct Buttons / icons are displayed for Sell Stock, Buy Stock and Hold Stock and check tool tips</li>
+                    		<li>[EXTJSIV-2029] Failed test: Verify Default view of Grouping with Remote Summary .</li>
+                    		<li>[EXTJSIV-2163] Failed test: Verify the User is able see the Google Map</li>
+                    		<li>[EXTJSIV-2254] Failed test: Verify page alignment while resizing the browser</li>
+                    		<li>[EXTJSIV-2276] Collapsing a tree panel w/collapsed nodes throws JS error</li>
+                    		<li>[EXTJSIV-2280] Failed test: Verify the Scroll bars in the note pad</li>
+                    		<li>[EXTJSIV-2283] Failed test: Verify the memory usage pie chart when user click&#x27;s on legends continuously</li>
+                    		<li>[EXTJSIV-2286] Failed test: Verify the charts display when user resize the system status window</li>
+                    		<li>[EXTJSIV-2287] Failed test: Verify the &quot;About Ext Jst&quot; item in statrt menu .</li>
+                    		<li>[EXTJSIV-3756] Combination Examples : Feed Viewer - Throwing Error message upon adding a valid feed in a specific scenario.</li>
+                    		<li>[EXTJSIV-3955] Displaying JS error while accessing Theme viewer and &quot;Ext JS 3 &amp; 4 on one page&quot; examples</li>
+                    		<li>[EXTJSIV-3959] Portal Demo - Displaying JS error when click on expand/collapse button</li>
+                    		<li>[EXTJSIV-3961] Key Feed Viewer - Displaying JS error while accessing Key Feed Viewer example</li>
+                    		<li>[EXTJSIV-4008] Quick Tips Example - No space between buttons under Easiest Tip &amp; Callout Tip</li>
+                    		<li>[EXTJSIV-4085] Combination Examples : Feed viewer - &quot;Summary&quot; button is not working in preview pane.</li>
+                    		<li>[EXTJSIV-4136] Portal demo :Unable to close the portlets in a specific scenario.</li>
+                    		<li>[EXTJSIV-4346] Center custom layout example is broken</li>
+                    		<li>[EXTJSIV-4365] Kitchen Sink: a) Store defined with no model. b) GET http://localhost/ext-4.1-pr1/resources/themes/images/neptune/dd/drop-no.gif 404 (Not Found)</li>
+                    		<li>[EXTJSIV-4367] Web Desktop sample: Displaying following error 84Error: Problem parsing d=&quot;&quot;</li>
+                    		<li>[EXTJSIV-4368] ExtJS 3 &amp; 4 on one page sample: JS error: &#x27;colors&#x27; is null or not an object</li>
+                    		<li>[EXTJSIV-4370] Theme Viewer Example: Mouse is stick to Resizable handle and not able to navigate away.</li>
+                    		<li>[EXTJSIV-4393] Drag and Drop Example: JS error is displayed</li>
+                    		<li>[EXTJSIV-4447] Webdesktop: Displaying blank page while accessing webdesktop example</li>
+                    		<li>[EXTJSIV-4548] Combination Examples - Feed viewer : Unable to scroll the data in feed preview panel after selecting the Hide option in the preview drop down menu.</li>
+                    		<li>[EXTJSIV-4559] Feed Viewer &amp; MVC - Feed Viewer - Created empty row/ space with a bullet upon clicking on open all button</li>
+                    		<li>[EXTJSIV-4658] Combination Examples - EXT JS 3 &amp; 4 on one page - Showing JS Error while accessing the page</li>
+                    		<li>[EXTJSIV-4676] Combination Examples - Portal demo :Displaying Js error upon reordering portelts in a specific scenario</li>
+                    		<li>[EXTJSIV-4680] Combination examples : Theme viewer - Horizontal &amp; Vertical scrollbars are disappearing upon changing the themes in the theme viewer example</li>
+                    		<li>[EXTJSIV-4686] Combination Examples:Unable to expand/collapse north &amp; east panels upon clicking on panels collapse button continuously.</li>
+                    		<li>[EXTJSIV-4707] Combination examples : Web desktop - Displaying blank page upon accessing webdesktop example.</li>
+                    		<li>[EXTJSIV-4713] Combination examples:Theme viewer-Unable to expand the &quot;Tree panel&quot; window once after collapse</li>
+                    		<li>[EXTJSIV-4758] Combination Examples:Web desktop - Desktop covered with mask after opening the examples in the taks bar.</li>
+                    		<li>[EXTJSIV-4772] Combination Examples : Web desktop: Unable to minimize the windows upon clicking on title headers in the taskbar.</li>
+                    	</ul>
+                    </li>
+
+                    <li>Forms
+                        <ul>
+                    		<li>[EXTJSIV-2218] Failed test: Verify the time field in the Form fields type form</li>
+                    		<li>[EXTJSIV-2229] Failed test: Verify whether live search functionality is displaying correct results and topics by giving invalid data</li>
+                    		<li>[EXTJSIV-2240] Failed test: Verify the user is able to enter details manually in the Company details table</li>
+                    		<li>[EXTJSIV-2242] Failed test: Verify the error message when user click on save button without filling mandatory fields.</li>
+                    		<li>[EXTJSIV-2360] Failed test: Verify whether live search functionality is displaying correct results and topics by giving valid data</li>
+                    		<li>[EXTJSIV-3341] adding checkbox in checkbox group (4.0.1)</li>
+                    		<li>[EXTJSIV-3445] getFieldValues deprecation needs to be removed from the compat layer</li>
+                    		<li>[EXTJSIV-3624] Bugs with Ext.form.field.Combo and Editor Grids</li>
+                    		<li>[EXTJSIV-3690] Model background (gray color) is not completely stretched in the page &amp; Confirmation message pop-up window is allowed to click on the other controls in the page</li>
+                    		<li>[EXTJSIV-3701] Time field&#x27;s &quot;setValue()&quot; method does select the value on the picker dropdown.</li>
+                    		<li>[EXTJSIV-3939] Bulk-rendering: Trigger field: Trigger needs to have its afterRender logic transplanted or at least we need to suspend layouts during render</li>
+                    		<li>[EXTJSIV-3948] Forms : Displaying JS error while accessing MultiSelect ItemSelector &amp; Custom Form Fields examples</li>
+                    		<li>[EXTJSIV-3999] Forms : Registration Form - Registration form is not properly loaded in registration example page on FF3.6,Google Chrome 10</li>
+                    		<li>[EXTJSIV-4012] RadioGroups broken in 4.0.2</li>
+                    		<li>[EXTJSIV-4196] Validation error not shown when user types 15/18/2001 in a date field: value is changed into 15/06/2002 when leaving the field.</li>
+                    		<li>[EXTJSIV-4233] Forms don&#x27;t remember field state</li>
+                    		<li>[EXTJSIV-4329] Fieldset body div is sized to be too tall</li>
+                    		<li>[EXTJSIV-4387] Forms Example: JS error: &#x27;length&#x27; is null or not an object</li>
+                    		<li>[EXTJSIV-4388] Form Example, Registration Form: JS error is displayed</li>
+                    		<li>[EXTJSIV-4497] MultiSelect &amp; ItemSelector - Displaying JS error when uncheck Toggle enabled check box</li>
+                    		<li>[EXTJSIV-4506] Forms - Binding a Grid to a Form - Rating label caption alignment in not proper. Label caption should align next to radio button</li>
+                    		<li>[EXTJSIV-4535] &quot;Form&quot; : &quot;Custom form field&quot;- Displaying wrong page numbers in the pagination</li>
+                    		<li>[EXTJSIV-4648] Ext.form.FieldSet: beforecollapse and beforeexpand events aren&#x27;t implemented</li>
+                    		<li>[EXTJSIV-4667] Trigger field disabling is broken</li>
+                    		<li>[EXTJSIV-4684] Checkbox / Radio Groups:The validation message for &quot;Custom Layout&quot; in Check box Group field set is not properly aligned.</li>
+                    		<li>[EXTJSIV-4695] Forms: Displaying JS error while accessing the &quot;File Upload Field&quot; and &quot;Custom form Field&quot; examples</li>
+                    		<li>[EXTJSIV-4734] Shopping cart checkout : Fields are missing in the payment field set</li>
+                    		<li>[EXTJSIV-4754] Forms : File Upload Field - File browse window is getting displayed upon clicking on &quot;Name&quot;field</li>
+                    		<li>[EXTJSIV-4755] Forms : File Upload Field - Uploaded file name is not displaying in file upload form &quot;Success&quot; dialog box.</li>
+                    		<li>[EXTJSIV-4769] Forms - File Upload Field : Displaying js error while accessing the File Upload Field example</li>
+                    	</ul>
+                    </li>
+
+                    <li>Grid
+                        <ul>
+                    		<li>[EXTJSIV-1158] Paging Grid: No default text for topics</li>
+                    		<li>[EXTJSIV-1171] Grid: Dead Corner when Scrolling Horizontally</li>
+                    		<li>[EXTJSIV-2005] Failed test: Verify Sort Ascending for the column in the Cell Editing Grid</li>
+                    		<li>[EXTJSIV-2014] Failed test: Verify the tab scrollers if there are no tabs to display</li>
+                    		<li>[EXTJSIV-2015] Failed test: Verify the tabs display when user click&#x27;s on open all button for more than once</li>
+                    		<li>[EXTJSIV-2019] Failed test: Verify Index column in the Grid with Numbered Rows grid.</li>
+                    		<li>[EXTJSIV-2053] Failed test: Verify the Search functionality for the Regular Expression check box.</li>
+                    		<li>[EXTJSIV-2078] Failed test: Verify the Time filed in the form widget</li>
+                    		<li>[EXTJSIV-2329] Failed test: Verify the user is able to Reset the grids</li>
+                    		<li>[EXTJSIV-2375] Grids scrollbars has 1px off</li>
+                    		<li>[EXTJSIV-2401] Failed test: Verify Add columns in the Grid plugin</li>
+                    		<li>[EXTJSIV-2418] Failed test: Verify whether selected Cell is allow to Edit in the Cell Editing Grid</li>
+                    		<li>[EXTJSIV-2444] Failed test: Verify scroll bar appears when size of the columns are increased or vice-versa</li>
+                    		<li>[EXTJSIV-2458] Failed test: Verify the lock functionality in the grid</li>
+                    		<li>[EXTJSIV-2543] Cell Editing, intra-row change of focus.</li>
+                    		<li>[EXTJSIV-3309] Grid reconfigure breaks columns layout</li>
+                    		<li>[EXTJSIV-3378] Filtered result set does not change size of scrollbar, result set repeated when scrolling beyond bounds of actual result set</li>
+                    		<li>[EXTJSIV-3395] Columns headers are missing upon increase the column size.</li>
+                    		<li>[EXTJSIV-3402] 4.0.2 Grid vertical lines of the header and those of the rows don&#x27;t correspond in IE9</li>
+                    		<li>[EXTJSIV-3419] RowEditing can&#x27;t change back to the original loaded value</li>
+                    		<li>[EXTJSIV-3628] 4.0.2 Cell not editing correct value when data in cell is updated..</li>
+                    		<li>[EXTJSIV-3636] Setting the iconCls config on Ext.grid.column.Action results in the css class being added to the acual &lt;img&gt; element twice</li>
+                    		<li>[EXTJSIV-3643] Grouped Grid - Adding new record in a list retrieves incorrect data</li>
+                    		<li>[EXTJSIV-3763] [4.0.5] Hard crash in IE when rendering locking grid to a table cell</li>
+                    		<li>[EXTJSIV-3775] [4.0.5] &#x27;itemclick&#x27; event doesn&#x27;t bubble when using locking grid</li>
+                    		<li>[EXTJSIV-3797] Ext.grid.column.Column &#x27;id&#x27; config gets put directly into the DOM, allowing ID duplication and random issues</li>
+                    		<li>[EXTJSIV-3899] Event sequence grid/view/selectionmodel not correct</li>
+                    		<li>[EXTJSIV-3921] RowEditor Update/Cancel buttons outside of grid viewport</li>
+                    		<li>[EXTJSIV-3951] Grid from Markup - Column header is displaying at the top of the page when click on &quot;Create Gird&quot; button.</li>
+                    		<li>[EXTJSIV-3953] Cell Editing Grid - Not able to add/edit a record in the grid when Add plant button is selected in IE 6 &amp; 7.</li>
+                    		<li>[EXTJSIV-3962] Setting width to negative value throws a JS error in IE</li>
+                    		<li>[EXTJSIV-3994] How to prevent extjs grid from scrolling when clicking on a cell ?</li>
+                    		<li>[EXTJSIV-3998] Vertical scrollbar doesn&#x27;t appear when it should when using Row Expander plugin</li>
+                    		<li>[EXTJSIV-4000] Resizing columns while row-editing a grid messes up column headers</li>
+                    		<li>[EXTJSIV-4011] Grid filter extension: filters menu item appearance bug</li>
+                    		<li>[EXTJSIV-4019] Drag and drop : Grid to Grid DnD - Displaying JS error upon placing the cursor on a specific area in &quot;Record Name&quot; column header</li>
+                    		<li>[EXTJSIV-4021] Problem with stateful grouped header grid</li>
+                    		<li>[EXTJSIV-4024] XML Grid - By default horizontal scroll bar is appearing in IE 8 and disappearing after click on any column header</li>
+                    		<li>[EXTJSIV-4052] Rows get out of sync only when grid is scrolled to the very bottom - All browsers</li>
+                    		<li>[EXTJSIV-4086] Grouping with Remote Summary - Show summary button is not working.</li>
+                    		<li>[EXTJSIV-4092] Grids Columns are 1px off with IE9 in quirk mode</li>
+                    		<li>[EXTJSIV-4094] Scroll bar in grid panel stops responding</li>
+                    		<li>[EXTJSIV-4127] Grid ColumnLayout forceFit &quot;calculate&quot; method update</li>
+                    		<li>[EXTJSIV-4152] Ext4: How to do grid grouping groupHeader with dynamic grouping field header text?</li>
+                    		<li>[EXTJSIV-4161] [4.0.0] RowEditor ignores errorSummary</li>
+                    		<li>[EXTJSIV-4168] Grid bug when using reconfigure() and locked column</li>
+                    		<li>[EXTJSIV-4185] Stateful grid with remoteSort true does not restore column sorting</li>
+                    		<li>[EXTJSIV-4228] Style information attached to the metadata parameter of the renderer function is overridden by global style column attributes</li>
+                    		<li>[EXTJSIV-4248] [4.0.2a] Grid sorter damaged when using a stateful grid</li>
+                    		<li>[EXTJSIV-4249] examples/grid/group-header-grid.html allows sub group to become primary</li>
+                    		<li>[EXTJSIV-4258] Ext.grid.plugin.CellEditing + Ext.selection.CheckboxModel = TypeError</li>
+                    		<li>[EXTJSIV-4281] Infinite Scrolling - Blue lines are displaying when uncheck all other columns and decreasing the topics column size in IE 8</li>
+                    		<li>[EXTJSIV-4282] Row Editor fields are not aligned to the grid cells properly when used on a grid with a checkbox selection model</li>
+                    		<li>[EXTJSIV-4310] [4.0.7] Ext.Application and result of fireEvent: fireing event beforeedit do not return a boolean when grid is initialise with Ext.application</li>
+                    		<li>[EXTJSIV-4314] grid-row-over class gets removed if the data in the record underlying a hovered row is changed</li>
+                    		<li>[EXTJSIV-4317] When using cell editing with row selection model, editor dies when moving to column that does not have an editor defined.</li>
+                    		<li>[EXTJSIV-4323] grid sort - missing icon from grid header after reconfigure</li>
+                    		<li>[EXTJSIV-4347] Modifying of saveBtnText, cancelBtnText in Ext.grid.plugin.RowEditing - don&#x27;t get passed into Ext.grid.Roweditor</li>
+                    		<li>[EXTJSIV-4371] Grid Plugin Example: Bug in RowWrap. Hidden columns are not being hidden in data.</li>
+                    		<li>[EXTJSIV-4398] [4.1PR][ALL BROWSERS] Grid View Update problems when moving &amp;amp; resizing columns</li>
+                    		<li>[EXTJSIV-4420] Initial LoadMask on GridPanel not shown</li>
+                    		<li>[EXTJSIV-4424] Calling reconfigure on a grid with CheckBox model causes additional checkbox columns</li>
+                    		<li>[EXTJSIV-4430] Ext.grid.property.Property sortableColumns Ignored</li>
+                    		<li>[EXTJSIV-4454] Displaying JS errors while accessing Grid Cell editing,RESTful Store with GridPanel and RowEditor,Editable Grid with Writable Store,Toolbar Button Groups Vertical Toolbars examples</li>
+                    		<li>[EXTJSIV-4470] Grids : Grid Filtering (Updated) :Displaying JS error upon clicking on &quot;All filter data&quot; in grid filters example.</li>
+                    		<li>[EXTJSIV-4484] Grids:Grouping Grid Clear grouping button is not working</li>
+                    		<li>[EXTJSIV-4493] Scrollbar gets out of sync when new records are added to the grid</li>
+                    		<li>[EXTJSIV-4496] Grids: &quot;RESTful Store with GridPanel and RowEditor&quot; and &quot;Editable Grid with Writable Store&quot; examples throw JS error while accessing in IE6 browser</li>
+                    		<li>[EXTJSIV-4501] [4.1PR][IE7,IE9] Space between Grid View and scrollbars are off.</li>
+                    		<li>[EXTJSIV-4504] Dragging a group column does not move all columns in the group.</li>
+                    		<li>[EXTJSIV-4507] Grids -&gt; Grids with locking capability: JS error is displayed while trying to unlock &#x27;Company Name&#x27; column.</li>
+                    		<li>[EXTJSIV-4508] Grids -&gt; Grouping Grid: JS error is displayed when clicked on &#x27;Group by this field&#x27; or when tried to uncheck &#x27;Name&#x27; column.</li>
+                    		<li>[EXTJSIV-4515] CellEditor doesn&#x27;t work with RowBody and RowWrap grid features [Deer Valley Unified School District]</li>
+                    		<li>[EXTJSIV-4546] Grids : Buffered grid - Data In the salary column is not displayed in sorted order after moving the data by using scroll pointer.</li>
+                    		<li>[EXTJSIV-4551] Localization - GroupingFeature: Ext.grid.GroupingFeature is wrong</li>
+                    		<li>[EXTJSIV-4560] Drag and Drop - Field To Grid DnD : Cell that is dragged and placed the text &quot;test&quot; is not sorting properly under company column</li>
+                    		<li>[EXTJSIV-4567] Using paging grid within a form makes page input a form field</li>
+                    		<li>[EXTJSIV-4579] Grids editing visual test throws js error in IE8</li>
+                    		<li>[EXTJSIV-4617] Grid -Grouped Header Grid (Updated): Horizontal scroll bar is not displaying to view the company column.</li>
+                    		<li>[EXTJSIV-4634] Drag and Drop - Grid to Grid DnD: Dragged records are not shown in Second Grid</li>
+                    		<li>[EXTJSIV-4643] Grouping grid causes JS errors in visual test</li>
+                    		<li>[EXTJSIV-4645] Column header menu trigger el is not deactivated upon Menu hide.</li>
+                    		<li>[EXTJSIV-4660] Grouped Header Grid : Even one sub item is selected ,all the sub items are get selected and displayed in the grid</li>
+                    		<li>[EXTJSIV-4705] Grids - Basic Array Grid : Column header drop down menu items list is misplaced</li>
+                    		<li>[EXTJSIV-4725] Checkbox header is not centered</li>
+                    		<li>[EXTJSIV-4735] Grid Filter :Text on the &quot;OK&quot; button is left aligned</li>
+                    		<li>[EXTJSIV-4737] Toolbars and Menus - Ext Grid Actions: Column headers are disturbed when columns size is expanded</li>
+                    		<li>[EXTJSIV-4740] Cell Editors created outside grid code are not activated when selecting cell</li>
+                    		<li>[EXTJSIV-4811] Grids : Basic Array Grid : Grid is not displaying sort values when refresh the page and no field selection option for &quot;buy/sell&quot; field.</li>
+                    		<li>[EXTJSIV-4813] Grids: Grouping : No data (blank) is displayed in grouping gird example in a specific</li>
+                    		<li>[EXTJSIV-4833 ] Combination Examples - Feed Viewer : Displaying js when clicked on &quot;Sci/Tech - Google News&quot; item under the Feeds panel</li>
+                    		<li>[EXTJSIV-4836] MVC -&gt; Feed Viewer : Displaying error message while accessing the example on Safari5 and Chrome browsers only.</li>
+                    		<li>[EXTJSIV-4838] Grids: Grid with Live Search Capability - Displaying JS error while click on &quot;&lt;&quot; or &quot;&gt;&quot; button for searching the data in the grid.</li>
+                    		<li>[EXTJSIV-4839] Grid - Displaying JS error when clicked on last row / last row above the Horizontal scroll bar in the grid. This issue observed across all examples having grid.</li>
+                    	</ul>
+                    </li>
+
+                    <li>Layouts
+                        <ul>
+                    		<li>[EXTJSIV-1544] A gray line appears after clicking on subsequent accordion headers and coming back to the first header</li>
+                    		<li>[EXTJSIV-2074] Failed test: Verify that East panel expands when clicked on the expand button at left side of the center panel</li>
+                    		<li>[EXTJSIV-2263] Failed test: Verify whether East Side panel collapses when clicked on collapse button</li>
+                    		<li>[EXTJSIV-2266] Failed test: Verify the user is able to click on drop down list and able to see the options</li>
+                    		<li>[EXTJSIV-2301] Failed test: Verify Border layout page alignment while resizing the browser</li>
+                    		<li>[EXTJSIV-2390] Failed test: Verify whether Accordion panel width can be increased / decreased</li>
+                    		<li>[EXTJSIV-2405] Docked items added after render don&#x27;t render correctly</li>
+                    		<li>[EXTJSIV-3409] CardLayout deferredRender config ignored when component is added to a container</li>
+                    		<li>[EXTJSIV-3977] [4.0.6] Container in hbox height issue: When there is an hbox with a container in it, the height of the container&#x27;s (and other siblings) surrounding div (class: x-box-inner) gets set to the height of the largest child</li>
+                    		<li>[EXTJSIV-3990] Editor - Label captions are overlapping on the text fields when long label caption is entered without any space.</li>
+                    		<li>[EXTJSIV-4076] Draggable Sprite Doesn&#x27;t Follow Cursor</li>
+                    		<li>[EXTJSIV-4088] Layout Browser - Custom Layouts - Center - Page is not center aligned and extra empty space is created next to Sample layout panel in IE 7</li>
+                    		<li>[EXTJSIV-4134] [4.0.6] Load mask problem: create new window (modal: true) and make setLoading(true) for it. Than I click to header of window, mask (with text &quot;Loading&quot;) moves into the background of the window</li>
+                    		<li>[EXTJSIV-4150] Grouping don&#x27;t update panel height</li>
+                    		<li>[EXTJSIV-4170] FileUploadField label does not collapse</li>
+                    		<li>[EXTJSIV-4171] User details - Drop down items are displaying at the top of the page when double-click on the Editor panel</li>
+                    		<li>[EXTJSIV-4182] Splitter-usage breaks Layouts</li>
+                    		<li>[EXTJSIV-4197] Button menu misaligned on first appear, correct on second appear</li>
+                    		<li>[EXTJSIV-4216] Submenu disappears by going to its item obliquely</li>
+                    		<li>[EXTJSIV-4223] Hidden floated element positioning bug</li>
+                    		<li>[EXTJSIV-4253] Stateful implementation broken for panels in Accordion layout</li>
+                    		<li>[EXTJSIV-4342] Layout autoWidth/Height only supports &quot;shrink wrap&quot; mode</li>
+                    		<li>[EXTJSIV-4343] Themes Example has JS error on IE6 only</li>
+                    		<li>[EXTJSIV-4344] Need to constrain width/height to &gt;= 0 in IE</li>
+                    		<li>[EXTJSIV-4352] The &quot;layout bubble&quot; algorithm does not always climb high enough</li>
+                    		<li>[EXTJSIV-4353] Adding components to a running layout fails</li>
+                    		<li>[EXTJSIV-4361] Message-Box sample: Buttons on the pop-up dialog are truncated on the right end and also text boxes are not aligned properly for some pop-up dialogs.</li>
+                    		<li>[EXTJSIV-4363] Forum-search sample: No search results displayed</li>
+                    		<li>[EXTJSIV-4364] Combo Box sample: The &quot;States&quot; drop down box content is overlapping with selected value</li>
+                    		<li>[EXTJSIV-4369] Feed-viewer sample: Nothing is displaying (Blank) after clicking on feed &quot;collapse&quot; button.</li>
+                    		<li>[EXTJSIV-4374] tab overflow menu example: JS error: &#x27;targetSize&#x27; is null or not an object. UX needs updating to accommodate new layout system.</li>
+                    		<li>[EXTJSIV-4377] Layout Browser Example: JS error and missing collapse tool on footer panel</li>
+                    		<li>[EXTJSIV-4380] Complex Layout example: JS error is displayed</li>
+                    		<li>[EXTJSIV-4381] Accordion Layout Example: JS error is displayed</li>
+                    		<li>[EXTJSIV-4386] [4.1PR] - layout fails: lastComponentSize is undefined</li>
+                    		<li>[EXTJSIV-4391] BoxReorderer needs refactoring to work with new layout system.</li>
+                    		<li>[EXTJSIV-4395] Table Layout Example: Blank page is displayed</li>
+                    		<li>[EXTJSIV-4401] Problem with panel initially collapsed in a border layout</li>
+                    		<li>[EXTJSIV-4404] Error: ext-all-debug.js:51144 Uncaught TypeError: Cannot read property &#x27;isDetachedBody&#x27; of undefined</li>
+                    		<li>[EXTJSIV-4405] no onRender: function (ct, position) for Fields</li>
+                    		<li>[EXTJSIV-4406] Error on tab creation: ext-all-debug.js:78809 Uncaught TypeError: Cannot call method &#x27;scrollIntoView&#x27; of undefined.</li>
+                    		<li>[EXTJSIV-4409] growMax and growMin aren&#x27;t honored for Text.js and TextArea.js [Rally]</li>
+                    		<li>[EXTJSIV-4439] [4.1.0PR] Error with collapsed region in border layout: &quot;me.placeholder is undefined&quot;</li>
+                    		<li>[EXTJSIV-4449] Field layout measures its height before acquiring its width resulting in incorrect height.</li>
+                    		<li>[EXTJSIV-4489] Box layout&#x27;s menu overflow handler does not work.</li>
+                    		<li>[EXTJSIV-4534] Picker &quot;Loading...&quot; mask stuck on: loading mask on combo&#x27;s with property queryMode=&#x27;local&#x27; sometimes remains active and don&#x27;t disappear when you click on picker.</li>
+                    		<li>[EXTJSIV-4570] BorderLayout expand/collapse regression</li>
+                    		<li>[EXTJSIV-4610] Ext-layout-container-Accordion -&gt; animate: false not working</li>
+                    		<li>[EXTJSIV-4619] Combination Examples -Theme Viewer example :The loader icon is over lapping the calendar component.</li>
+                    		<li>[EXTJSIV-4624] Layout Managers - Complex Layout (Updated): Raises js error when clicked on expand/ collapse button for South Panel</li>
+                    		<li>[EXTJSIV-4632] Unexplained load mask in upper left corner of browser again</li>
+                    		<li>[EXTJSIV-4633] Progressbar is going beyond the boundries when click on Show button of any field</li>
+                    		<li>[EXTJSIV-4637] Field layouts allow triggers to wrap.</li>
+                    		<li>[EXTJSIV-4691] Layout Manager - Anchor Layout (form) : The Text Area is truncated</li>
+                    		<li>[EXTJSIV-4698] Ext.window.Window height not being calculated correctly</li>
+                    	</ul>
+                    </li>
+
+                    <li>Menu
+                        <ul>
+                    		<li>[EXTJSIV-3354] Ext.menu.Menu positioning problem while scopeResetCSS:true</li>
+                    		<li>[EXTJSIV-3653] Grid menu filter loses focus when mouse leaves the component</li>
+                    	</ul>
+                    </li>
+
+                    <li>MVC
+                        <ul>
+                    		<li>[EXTJSIV-2308] Failed test: Verify Pane resize on Feedviewer page using resize bar</li>
+                    		<li>[EXTJSIV-2311] Failed test: Verify the focus on the tabs when user click on open all button</li>
+                    		<li>[EXTJSIV-2312] Failed test: Verify the tabs display when user click&#x27;s on open all button.</li>
+                    	</ul>
+                    </li>
+
+                    <li>Others
+                        <ul>
+                    		<li>[EXTJSIV-3555] autoEl does not support the string version</li>
+                    		<li>[EXTJSIV-3928] Ext.Direct - Callback not invoked after a request is aborted/timesout</li>
+                    		<li>[EXTJSIV-3966] Miscellaneous :Browser State Management -Showing JS error upon clicking on &quot;Collapse/Expand&quot; button of Collapse/expand width panel</li>
+                    		<li>[EXTJSIV-4123] Ext.Array.from() with function gives empty array</li>
+                    		<li>[EXTJSIV-4142] [4.06] readOnly with xtype: &#x27;filefield&#x27;: A field &quot;filefield&quot; can be charged even if readOnly</li>
+                    		<li>[EXTJSIV-4149] [4.0.2] Ext.Element fadeOut not respecting useDisplay:true</li>
+                    		<li>[EXTJSIV-4159] Add &amp; remove menuitems and &quot;me.dom is undefined&quot;</li>
+                    		<li>[EXTJSIV-4162] Appending Nodes to an Async Tree: when append the node and call store.sync(), the proxy is using the update url instead of the create url</li>
+                    		<li>[EXTJSIV-4173] [4.0.2a] HtmlEditor does not strip out defaultValue as expected due to absolute check</li>
+                    		<li>[EXTJSIV-4174] Zooming broken in some zoom levels in Chrome, IE 8</li>
+                    		<li>[EXTJSIV-4177] FiltersFeature arrow in menu:  the arrow in the filters menu is missing</li>
+                    		<li>[EXTJSIV-4180] [4.0.6] Ext.Function interceptBefore and interceptAfter - add scope param</li>
+                    		<li>[EXTJSIV-4181] Ext.form.field.Number.getSubmitValue() returns localized Value</li>
+                    		<li>[EXTJSIV-4192] Ext.container.AbstractContainer#suspendLayout is not reentrant</li>
+                    		<li>[EXTJSIV-4193] Ext JS 4: Hiding grouped headers (hideGroupedHeader = true) throws exception</li>
+                    		<li>[EXTJSIV-4212] [4.0.6] actioncolumn text/header</li>
+                    		<li>[EXTJSIV-4217] model copy() and phantom: model1.copy() returns always a non-phantom model, not taking into account whether model1 is phantom or not.</li>
+                    		<li>[EXTJSIV-4220] [4.0.2a] ComponentDragger setting positions incorrectly</li>
+                    		<li>[EXTJSIV-4221] ComboBox readOnlyCls: Read Only Class is not added to the component&#x27;s main element when setting readOnly property to the combobox field</li>
+                    		<li>[EXTJSIV-4222] [4.0.4] Wrong Definition in Design _grid.scss on line 83</li>
+                    		<li>[EXTJSIV-4224] Ext.form.CheckboxGroup.validate() may return false even if disabled is true</li>
+                    		<li>[EXTJSIV-4225] After an edit is made to a record in an editable tree, the record&#x27;s non-persistent fields get reset to their default values</li>
+                    		<li>[EXTJSIV-4235] QuickTip&#x27;s ignoring showDelay configuration</li>
+                    		<li>[EXTJSIV-4236] 4.0.6: maxLength and enforceMaxLength on TextArea not working in IE8</li>
+                    		<li>[EXTJSIV-4244] timefield scrollbar dissappears - ExtJS 4.0.6</li>
+                    		<li>[EXTJSIV-4246] Model save: operation with no response</li>
+                    		<li>[EXTJSIV-4261] Ext4 sandbox auto generated id conflict with Ext3</li>
+                    		<li>[EXTJSIV-4263] Datefield picker ignoring control keys</li>
+                    		<li>[EXTJSIV-4266] Not able to use HTMLEditor on IE(8) when accessing over SSL - ExtJS 4.0.6</li>
+                    		<li>[EXTJSIV-4268] [4.0.6] animCollapse: false not honored</li>
+                    		<li>[EXTJSIV-4292] TimeField value not cleared from the list on form reset</li>
+                    		<li>[EXTJSIV-4293] [4.0.2a] Ajax error for non-terminating connections in IE6</li>
+                    		<li>[EXTJSIV-4294] [4.0.7] &#x27;name&#x27; not rendered to combo&#x27;s input element</li>
+                    		<li>[EXTJSIV-4297] Reloading TreeStore adds all records to store getRemovedRecords</li>
+                    		<li>[EXTJSIV-4299] Bug in Grouping Feature (and solution)</li>
+                    		<li>[EXTJSIV-4306] [4.0.7] Combo box issue in displaying value in view port layout: 2n click of combo box cause incorrect layout with values showing on top-right corner of the IE browser</li>
+                    		<li>[EXTJSIV-4308] [4.0.6] Disabled fields retain invalid field decoration</li>
+                    		<li>[EXTJSIV-4311] [4.0.7] Warning shown when a fieldset is removed</li>
+                    		<li>[EXTJSIV-4312] [4.0.7] Error on bind Store if view is not rendered</li>
+                    		<li>[EXTJSIV-4316] Store.clearFilter() remove added records</li>
+                    		<li>[EXTJSIV-4320] CellModel does not keep track of selections</li>
+                    		<li>[EXTJSIV-4324] [4.0.7] Ext.form.field.Number setMaxValue() and setMinValue() bug</li>
+                    		<li>[EXTJSIV-4327] building from SVN fails</li>
+                    		<li>[EXTJSIV-4336] 4.1: Calling element.load causes error: &quot;this.get is not a function&quot;</li>
+                    		<li>[EXTJSIV-4373] Multiple Sorting Example: Bug in BoxReorderer plugin</li>
+                    		<li>[EXTJSIV-4397] Drag Drop Manager doesn&#x27;t select correct drop target</li>
+                    		<li>[EXTJSIV-4400] Wrong method selected when saving a record with id = null.</li>
+                    		<li>[EXTJSIV-4413] [ext-4.1-pr1] Some coding isues. - invalid CSS and code trucations in a few files</li>
+                    		<li>[EXTJSIV-4418] Infinite scrolling with JsonP proxy causes enormous memory consumption</li>
+                    		<li>[EXTJSIV-4426] Problem with column header grouping at level 3. Columns can not be hidden.</li>
+                    		<li>[EXTJSIV-4427] Ext.Function.createBuffered() ignores the caller&#x27;s arguments</li>
+                    		<li>[EXTJSIV-4428] setEditor cannot work in rowEditing</li>
+                    		<li>[EXTJSIV-4443] Dragging and dropping tree nodes to reorder them changes the index field of the node that was dragged, but does not change the index field of the other sibling nodes that come after it.</li>
+                    		<li>[EXTJSIV-4444] Ext.util.Format.currency decimals ignored when set to 0</li>
+                    		<li>[EXTJSIV-4448] Drag &amp; Drop - Custom Drag &amp; Drop - Getting JS error while drag and drop any item to right side field.</li>
+                    		<li>[EXTJSIV-4456] [4.0.7] Ext.util.Format.number() has inconsistent behavior</li>
+                    		<li>[EXTJSIV-4473] Combo box : Basic Combo box:Tool tips are not displaying upon mouse-hover on the State.</li>
+                    		<li>[EXTJSIV-4495] Miscellaneous - Slider - By default, Sliders are overlapping each other only one slider is displaying</li>
+                    		<li>[EXTJSIV-4509] Accessibility -&gt; Kayboard Feed Viewer: Not able to navigate to all the buttons in the Feed Viewer using Keyboard alone.</li>
+                    		<li>[EXTJSIV-4520] [4.1.0PR] RowWrap feature: error &quot;Node was not found&quot;</li>
+                    		<li>[EXTJSIV-4542] (new Date(year, month, 1)).getLastDateOfMonth is not a function in Ext.picker.Date</li>
+                    		<li>[EXTJSIV-4554] [BUG] Combobox picker height is not recalculated on refresh</li>
+                    		<li>[EXTJSIV-4571] CheckBoxGroup.resetOriginalValue throws an exception in Ext.Base.callParent</li>
+                    		<li>[EXTJSIV-4588] Miscellaneous -Localization (Dynamic) :The The Month of the Year menu item should be uncheck without any java script error.</li>
+                    		<li>[EXTJSIV-4592] Ext.Component#setLoading sets load mask text only on first call</li>
+                    		<li>[EXTJSIV-4626] Direct transactions not cleaned up</li>
+                    		<li>[EXTJSIV-4638] [4.0.7] TreeStore crud broken</li>
+                    		<li>[EXTJSIV-4641] Can&#x27;t override singleton</li>
+                    		<li>[EXTJSIV-4644] What happened to markDirty view config?</li>
+                    		<li>[EXTJSIV-4696] BUG: Ext.Function.pass is corrupted</li>
+                    		<li>[EXTJSIV-4739] Miscellaneous - Localization(dynamic) :The Language selector field is stretched</li>
+                    		<li>[EXTJSIV-4743] hideEmptyLabel not applied (4.1.prev, 4.0.7)</li>
+                    		<li>[EXTJSIV-4744] [4.0.7] window clobbered if dynamic loading fails</li>
+                    		<li>[EXTJSIV-4746] [4.0.7] Exception inside the error handling of JSON reader</li>
+                    		<li>[EXTJSIV-4777] Initially disabled toolbar cannot be re-enabled</li>
+                    	</ul>
+                    </li>
+
+                    <li>Panel
+                        <ul>
+                    		<li>[EXTJSIV-1652] A + cursor is shown after collapsing/expanding a panel while keeping the mouse pointer fixed in place above the collapse/expand button</li>
+                    		<li>[EXTJSIV-3038] [4.0.3] Ext.grid.Panel.destroy generates extra Ajax requests</li>
+                    		<li>[EXTJSIV-3368] The &quot;floating&quot; configuration property does not work corectly on Panels</li>
+                    		<li>[EXTJSIV-3410] Collapsing/expanding of flexed panels doesn&#x27;t work</li>
+                    		<li>[EXTJSIV-3443] Panels sometimes disappear when their siblings are collapsed</li>
+                    		<li>[EXTJSIV-3594] [4.0.5] Panel disappears (width=0) after collapse</li>
+                    		<li>[EXTJSIV-3762] When shadowed panel is moved, its shadow is left behind.</li>
+                    		<li>[EXTJSIV-4191] Collapsible panels in vbox layout do not readjust height</li>
+                    		<li>[EXTJSIV-4194] No horizontal scrollbar for Panel with big content</li>
+                    		<li>[EXTJSIV-4302] treePanel viewConfig - corruption of class definition</li>
+                    		<li>[EXTJSIV-4338] Strange Ext.panel.Panel modal behaviour: Panel modal disappears when loadmask is active.</li>
+                    		<li>[EXTJSIV-4354] Panel collapse/expand need to notify ownerLayout after animation</li>
+                    		<li>[EXTJSIV-4408] panel.hide(true) with panel.preventHeader=true -&gt; error: this.header is undefined</li>
+                    		<li>[EXTJSIV-4524] Duplicate state events added: in Ext.window.Window and Ext.panel.Table</li>
+                    		<li>[EXTJSIV-4654] calling setTitle() before rendering</li>
+                    	</ul>
+                    </li>
+
+                    <li>Tabs
+                        <ul>
+                    		<li>[EXTJSIV-3719] The icon in tab is not centered vertically</li>
+                    		<li>[EXTJSIV-3773] Layout body content on tabchange TabPanel not recalculated</li>
+                    		<li>[EXTJSIV-3984] Basic Tab -Bottom border is missing in long text tab. Displaying only after closing short text tab</li>
+                    		<li>[EXTJSIV-4034] 4.0.6 breaks margins inside a tab panel</li>
+                    		<li>[EXTJSIV-4284] Tab remains hidden after focusing on it and removing it and then re-adding it</li>
+                    		<li>[EXTJSIV-4394] Tab Example: Tab problem. Button is zero width even though the text span has a width.</li>
+                    		<li>[EXTJSIV-4407] [4.0.7] Tab font variable never honoured</li>
+                    		<li>[EXTJSIV-4414] When a new tab is created the layout of the tab is not triggered - tab is not shown in tabbar.</li>
+                    		<li>[EXTJSIV-4511] Tabs -&gt; Advanced Tab : Left side navigation arrow button is not enabled.</li>
+                    		<li>[EXTJSIV-4745] Multiple Tab Panel Instances with dockedItems</li>
+                    		<li>[EXTJSIV-4812] tabchange fires for setting initial tab</li>
+                    	</ul>
+                    </li>
+
+                    <li>Theme
+                        <ul>
+                    		<li>[EXTJSIV-3496] The theme index example is automatically scrolled on IE.</li>
+                    		<li>[EXTJSIV-3567] Gray theme has incorrect backgroup color (showing blue)</li>
+                    		<li>[EXTJSIV-4271] Theme Viewer:Form Widgets- Check box positions are changing when unselect the &quot;Foo&quot; check box.</li>
+                    		<li>[EXTJSIV-4277] Theme Viewer - Horizontal scroll bar is seen only when trying to submit any data where even its not required.</li>
+                    		<li>[EXTJSIV-4530] Theme viewer :Displaying JS error upon clicking on Time field dropdown menu after entering text in the time field.</li>
+                    		<li>[EXTJSIV-4558] Theme Viewer - Calendar - Displaying JS Error When click on Month Field in the Date Picker</li>
+                    		<li>[EXTJSIV-4706] Neptune theme base variables and widgets styling need to be changed to match recent changes to ExtJS</li>
+                    		<li>[EXTJSIV-4771] Combination Examples - Theme Viewer : Displaying js error when uncheck &quot;Foo&quot; check box under &quot;Form Widgets&quot; window in Theme Viewer</li>
+                        </ul>
+                    </li>
+
+                    <li>Toolbars
+                        <ul>
+                    		<li>[EXTJSIV-3963] Toolbars and menus : Displaying JS error while accessing Vertical Toolbars example</li>
+                    		<li>[EXTJSIV-4163] Toolbars and Menus : Ext Toolbar Actions - &quot;Change text&quot; window caption is moving while entering long text in the text box.</li>
+                    		<li>[EXTJSIV-4205] PagingToolBar problem: in case of zero (0) records there is a problem on paging toolbar that show paging 1 of 0 and it also possible move to next page so 2 of 0 , 3 of 0 etc </li>
+                    		<li>[EXTJSIV-4229] In IE9 on a toolbar docked to a side of a panel, an icon showing 2 arrows is displayed on a menu item without text</li>
+                    		<li>[EXTJSIV-4231] Paging toolbar does not react on the keys PAGEUP, PAGEDOWN, Shift+UP and Shift+DOWN</li>
+                    		<li>[EXTJSIV-4318] Separator in the Vertical Toolbars example not aligning properly</li>
+                    		<li>[EXTJSIV-4384] Ext Toolbar Actions Example: Text field not sized properly. Problem with TextField layout</li>
+                    		<li>[EXTJSIV-4463] toolbar/overflow.html - overflow button is not showing</li>
+                    		<li>[EXTJSIV-4531] Toolbars and Menus : Overflow Toolbar : By default Choose button label caption is not displaying properly.</li>
+                    		<li>[EXTJSIV-4587] Tool Bars and Menus - Over Flow example :Choose a Color menu item should be displayed adjacent to the Button</li>
+                    	</ul>
+                    </li>
+
+                    <li>ToolTips
+                        <ul>
+                    		<li>[EXTJSIV-4218] Tooltip for Tab is not shown</li>
+                    		<li>[EXTJSIV-4485] Quick Tip shows twice in IE [Thunderhead LTD]</li>
+                    	</ul>
+                    </li>
+
+                    <li>Tree
+                        <ul>
+                            <li>[EXTJSIV-1476] Inconsistent padding around tree elements when comparing quirks versus strict modes</li>
+                    		<li>[EXTJSIV-1954] Tree Horizontal Scrolling</li>
+                    		<li>[EXTJSIV-2202] Failed test: Verify that user can drag and drop the folders or files from one tree panel to another tree panel</li>
+                    		<li>[EXTJSIV-2539] TreeGrid + CellEditing broken</li>
+                    		<li>[EXTJSIV-3499] Ext.tree.Panel border:false still shows top border</li>
+                    		<li>[EXTJSIV-3571] [4.0.2] one Store and two tree.Panel - Expand/Collapse causes item disappearing from the 2nd tree and duplicated in the 1st tree</li>
+                    		<li>[EXTJSIV-3596] The callback function for NodeInterface#expand() gets called before the node has finished expanding</li>
+                    		<li>[EXTJSIV-3600] New nodes added to a Tree using the node interface do not show as &quot;phantom&quot; records</li>
+                    		<li>[EXTJSIV-3640] Adding a custom renderer increases height of unlocked grid columns but doesn&#x27;t sync locked column</li>
+                    		<li>[EXTJSIV-3920] NodeInterface&#x27;s &quot;icon&quot; config does not work as documented</li>
+                    		<li>[EXTJSIV-3954] Trees : Displaying JS error while accessing all examples in the Trees examples section</li>
+                    		<li>[EXTJSIV-4376] Tree Example, Drag and Drop Reordering: Folder nodes do not expand when clicked.</li>
+                    		<li>[EXTJSIV-4472] Trees : Check Tree :Displaying Js error upon clicking on &quot;Get checked nodes&quot; button .</li>
+                    		<li>[EXTJSIV-4516] TreeGrid not expandable on 3rd level</li>
+                    		<li>[EXTJSIV-4529] Trees : Tree Grid -Displaying JS error upon clicking on folders in the tree grid example</li>
+                    		<li>[EXTJSIV-4586] Trees -&gt; Check Tree : Masking on the page is not removed after cancelling the pop-up dialog.</li>
+                    		<li>[EXTJSIV-4693] Trees - Check Tree : Not displaying Expand / Collapse (+/-) icons for parent nodes</li>
+                    	</ul>
+                    </li>
+
+                    <li>Window
+                        <ul>
+                    		<li>[EXTJSIV-1732] Progress Dialog window locking</li>
+                    		<li>[EXTJSIV-1748] MessageBoxWindow autosizing probably needs a fudge factor to avoid unwanted word wrapping.</li>
+                    		<li>[EXTJSIV-1994] Strange Ext.window.Window rendering issue in WebKit browsers when placed over Java applet</li>
+                    		<li>[EXTJSIV-3521] Layout issue when Resizing Window</li>
+                    		<li>[EXTJSIV-3772] Mask for modal window doesn&#x27;t completely cover document.body</li>
+                    		<li>[EXTJSIV-3902] Modal windows with long pages - mask not covering whole document.body</li>
+                    		<li>[EXTJSIV-3938] Windows can be resized when maximized, leading to unexpected interaction patterns</li>
+                    		<li>[EXTJSIV-3985] Windows - MessageBox : There is no gap in between custom buttons</li>
+                    		<li>[EXTJSIV-4009] Message Box - Page getting grayed out after click on Multi-line prompt,Yes/No/Cancel,icons ,Progress Dialog,Wait Dialog &quot;show&quot; buttons.</li>
+                    		<li>[EXTJSIV-4018] Layout Window- Displaying JS Error when click on Collapse/Expand button of Navigation window</li>
+                    		<li>[EXTJSIV-4204] Ext.window.Window : Esc problem</li>
+                    		<li>[EXTJSIV-4301] window with no header and draggable false throws error on show with animatetarget</li>
+                    		<li>[EXTJSIV-4322] [4.0.7] / [4.1] MessageBox showing with large text</li>
+                    		<li>[EXTJSIV-4460] Modal Window not modal in sandbox</li>
+                    		<li>[EXTJSIV-4471] MessageBox : Displaying JS error upon clicking on all &quot;show&quot; buttons in the Message box example</li>
+                    		<li>[EXTJSIV-4528] Windows - Layout Window: The navigation panel is not collapsing properly and displaying JS error upon clicking on collapse/expand button.</li>
+                    		<li>[EXTJSIV-4591] Windows - Layout Window :The Navigation panel&#x27;s hide and show arrow is not appearing for the first time</li>
+                    		<li>[EXTJSIV-4670] Windows - Windows Variation - By default, constrained windows are displaying at the top of the page.</li>
+                    	</ul>
+                    </li>
+				</ul>
+			</div>
+		
+			<div class="release">
+			<h1>
+			    Release Notes for Ext JS 4.0.7
+			</h1>
+
+			<p class="notes">
+			    Release Date: October 19, 2011<br>
+			    Version Number: 4.0.7
+			</p>
+
+			<h2>
+			    Bugs Fixed
+			</h2>
+
+			<ul>
+			<li>Grid
+			    <ul>
+			        <li>[EXTJSIV-2023] - Failed test: Verify the data in the grid columns when user resize the columns and
+			            click on next navigation button continously
+			        </li>
+			        <li>[EXTJSIV-2471] - "Group by this field" in Remote Summary Grid gives JS error
+			        </li>
+			        <li>[EXTJSIV-3326] - Ext.grid.View docs for stripeRows says the default is "false" but it's really
+			            "true"
+			        </li>
+			        <li>[EXTJSIV-3469] - Ext.grid.plugin.CellEditing beforeedit event is fired with incorrect parameters
+			        </li>
+			        <li>[EXTJSIV-3492] - Form grid access examples has incorrect columns size on IE7 and IE6
+			        </li>
+			        <li>[EXTJSIV-3574] - Using Ext.grid.RowNumberer's xtype incorrectly sets the columns width
+			        </li>
+			        <li>[EXTJSIV-3588] - Vertical Scroll Bar Disappears in Locking Grid
+			        </li>
+			        <li>[EXTJSIV-3750] - Hidden columns cause header misalignment
+			        </li>
+			        <li>[EXTJSIV-3777] - Bottom rows missing on buffered grid when page size and record count are close in
+			            size
+			        </li>
+			        <li>[EXTJSIV-3903] - Grid Scrolling does not work when setting the viewConfig.cls property
+			        </li>
+			        <li>[EXTJSIV-3908] - Grid LoadMask fails to disappear after store load when there is more than 1 grid on
+			            the page
+			        </li>
+			        <li>[EXTJSIV-3912] - AbstractView.onItemDeselect can sometimes cause an exception if the record node is
+			            no longer rendered
+			        </li>
+			        <li>[EXTJSIV-3983] - Initially hidden columns don't work with column grouping
+			        </li>
+			        <li>[EXTJSIV-4017] - Mouse scrolling on a grid scrolls both horizontally and vertically
+			        </li>
+			        <li>[EXTJSIV-4041] - Locking grid doesn't substract width of hidden locked columns
+			        </li>
+			        <li>[EXTJSIV-4044] - Instantiating grids at the wrong time causes scroll bars to silently disappear
+			        </li>
+			        <li>[EXTJSIV-4064] - TreeViewDragDrop doesn't clean up after itself
+			        </li>
+			        <li>[EXTJSIV-4068] - Ext.grid.column.Action doesn't prefix actionIdRe
+			        </li>
+			        <li>[EXTJSIV-4075] - Menu icon missing in Grouping Grid
+			        </li>
+			        <li>[EXTJSIV-4130] - LoadMask does not get removed from grid that is on inactive tab
+			        </li>
+			        <li>[EXTJSIV-4145] - The gridscroller doesn't destroy when the grid destroyed
+			        </li>
+			        <li>[EXTJSIV-4203] - Tree nodes disappear and can't be brought back</li>
+			    </ul>
+			</li>
+
+			<li>Panel / Window
+			    <ul>
+			        <li>[EXTJSIV-3968] - autoDestroy parameter of Panel.removeDocked() is not optional
+			        </li>
+			        <li>[EXTJSIV-3926] - Ext.window.Window adds close tools on each use / won't close on ESC key
+			            closable:true
+			        </li>
+			        <li>[EXTJSIV-3498] - setting hidden configuration parameter to true while collapsed is set to true gives
+			            error on render
+			        </li>
+			        <li>[EXTJSIV-4006] - collapsed panel will not expand
+			        </li>
+			        <li>[EXTJSIV-4050] - Accordion fires expand/collapse events to early
+			        </li>
+			        <li>[EXTJSIV-4051] - activeOnTop not implemented in Accordion
+			        </li>
+			        <li>[EXTJSIV-4209] - accordion grid panels that scroll vertically have a blank space on the right
+			        </li>
+			        <li>[EXTJSIV-4239] - initially collapsed panels without a fixed width are too wide</li>
+			    </ul>
+			</li>
+
+			<li>Data
+			    <ul>
+			        <li>[EXTJSIV-2536] - store.removeAll() does not remove grid.verticalScroller
+			        </li>
+			        <li>[EXTJSIV-3575] - TreeStore doesn't clear dirty flag on updated record
+			        </li>
+			        <li>[EXTJSIV-3705] - Store#loadData modifes data array passed into the method
+			        </li>
+			        <li>[EXTJSIV-3988] - Subtle bug in Json Reader forces server to enclose single record in array
+			        </li>
+			        <li>[EXTJSIV-4007] - Ext-data-Store.loadData change param type: [object, object] changes to [model, model]
+			        </li>
+			        <li>[EXTJSIV-4026] - Ext.data.Store.indexOfId does not work, it returns -1 for valid ids.
+			        </li>
+			        <li>[EXTJSIV-4028] - Ext.util.Filter with property and value=null causes error
+			        </li>
+			        <li>[EXTJSIV-4042] - TreeStore ignores autoLoad: false
+			        </li>
+			        <li>[EXTJSIV-4043] - node.removeAll() leaves childnodes in the NodeHash
+			        </li>
+			        <li>[EXTJSIV-4062] - Manipulating a new record fails
+			        </li>
+			        <li>[EXTJSIV-4078] - Ext.data.Connection.isLoading() always returns false, with no parameter
+			        </li>
+
+			    </ul>
+			</li>
+
+			<li>Forms
+			    <ul>
+			        <li>[EXTJSIV-3035] - ComboBox submit the wrong content
+			        </li>
+			        <li>[EXTJSIV-3298] - combobox setValue doesn't as expected
+			        </li>
+			        <li>[EXTJSIV-3314] - Hidden field is always dirty
+			        </li>
+			        <li>[EXTJSIV-3373] - Multiple classes in field's fieldCls causes JS error
+			        </li>
+			        <li>[EXTJSIV-3405] - getFieldValues in the compat layer is marked as deprecated but is not deprecated.
+			        </li>
+			        <li>[EXTJSIV-3444] - KeyMap does only accept keycodes, not characters
+			        </li>
+			        <li>[EXTJSIV-3916] - Ext.form.field.File style missing from my-ext-theme.scss
+			        </li>
+			        <li>[EXTJSIV-3917] - RadioGroup setValue is unable to handle boolean true/false
+			        </li>
+			        <li>[EXTJSIV-3923] - formBind no longer functions
+			        </li>
+			        <li>[EXTJSIV-3982] - Datepicker showmonth picker problem
+			        </li>
+			        <li>[EXTJSIV-3996] - IE8 Windowed combo field does not gain focus if tooltip is visible
+			        </li>
+			        <li>[EXTJSIV-3997] - Upload Filefield (buttonOnly) in Toolbar: not rendered like other buttons
+			        </li>
+			        <li>[EXTJSIV-4003] - Grid row editor shows hidden fields of grid - it should not show a hidden field
+			        </li>
+			        <li>[EXTJSIV-4027] - Ext.picker.Time calls new Date(...) with non-standard parameter
+			        </li>
+			        <li>[EXTJSIV-4063] - Form tries to validate field that doesn't exist
+			        </li>
+			        <li>[EXTJSIV-4079] - Ext.form.field.Date do not send post with empty value
+			        </li>
+			        <li>[EXTJSIV-2498] - Ext.picker.Color should allow its renderTpl to be overridden
+			        </li>
+			        <li>[EXTJSIV-3910] - fieldset checkboxToggle - add inputValue and uncheckedValue</li>
+			    </ul>
+			</li>
+			<li>Examples
+			    <ul>
+			        <li>[EXTJSIV-3745] - Theme viewer - Duplicate Check box is displayed in the Window panel (Plain Field set) when
+			            click on
+			            expand/collapse button.
+			        </li>
+			        <li>[EXTJSIV-3692] - Displaying java script error while user trying to search with special characters in live
+			            search
+			            grid.
+			        </li>
+			        <li>[EXTJSIV-1152] - No animation when clicking on the multi-line prompt in the Window example
+			        </li>
+			        <li>[EXTJSIV-3890] - Charts - Complex Dashboard -Displaying JS error upon increasing the field values under the
+			            company
+			            details
+			        </li>
+			        <li>[EXTJSIV-3891] - Drag and Drop - Displaying JS error upon drag the date field into price column
+			        </li>
+			        <li>[EXTJSIV-3943] - Keyboard Feed Viewer - Highlighted color is not displaying correctly in IE 6
+			        </li>
+			        <li>[EXTJSIV-3946] - Forms - Binding a grid to a form - Missing Horizontal and Vertical Scroll bars in IE 6.
+			        </li>
+			        <li>[EXTJSIV-3978] - ComponentDragger exception when Window has nothing rendered in the header
+			        </li>
+			        <li>[EXTJSIV-3992] - Layout Manager : VBox Layout - Displaying JS error while minimizing the browser after
+			            selecting
+			            "Flex :Even/Align :Center" button
+			        </li>
+			        <li>[EXTJSIV-4082] - Portal Demo Displaying JS Error when click on Expand / Collapse button in Navigation /
+			            Setting
+			            accordions
+			        </li>
+			        <li>[EXTJSIV-4083] - Direct Form - Displaying JS Error when click on Expand / Collapse button in Basic
+			            information /
+			            Phone Numbers /Location Information accordion windows
+			        </li>
+			        <li>[EXTJSIV-4084] - Feed Viewer - Displaying JS Error when click on Cancel button in the add feed pop-up window
+			        </li>
+			        <li>[EXTJSIV-4112] - Webdesktop : Displaying JS error upon clicking "OK" & "Cancel " buttons in change settings
+			            menu.
+			        </li>
+			        <li>[EXTJSIV-4114] - Ajax with XML Forms : [IE 6.0] - Displaying JS error upon clicking on "Load" & "Submit"
+			            buttons in
+			            XML forms.
+			        </li>
+			        <li>[EXTJSIV-4169] - Desktop example windows open minimized to the task bar; cannot be opened
+			        </li>
+			        <li>[EXTJSIV-4254] - Resizable Sencha Logo - Sencha Logo is not resizing while trying to resize from any
+			            side/corner of
+			            the component in IE 8 & IE 7.
+			        </li>
+			        <li>[EXTJSIV-4256] - Draggable Tiger Components - Draggable Tiger image is partially visible and complete image
+			            is not
+			            displaying in IE 8 & IE 7
+			        </li>
+			        <li>[EXTJSIV-4259] - Ext JS 3 & 4 on one Page - By default four square colored small boxes are displaying in the
+			            main
+			            Page
+			        </li>
+			        <li>[EXTJSIV-4269] - Line Chart - Chart is not displaying after disabling all the legend items and then
+			            maximizing the
+			            chart
+			        </li>
+			    </ul>
+			</li>
+			<li>Tabs
+			    <ul>
+			        <li>[EXTJSIV-3748] - LoadMask on a Tab stays visible even if we switch tabs.
+			        </li>
+			        <li>[EXTJSIV-3627] - Ext.tab.Tab setIconCls not working properly
+			        </li>
+			        <li>[EXTJSIV-3904] - Error when closing tabs created dynamically
+			        </li>
+			        <li>[EXTJSIV-4065] - Remove + add tabs to tabpanel only works with one tab</li>
+			    </ul>
+			</li>
+			<li>MessageBox
+			    <ul>
+			        <li>[EXTJSIV-3779] - Message Box Dialog - Page is grayed out and not allowed to update the page when quickly
+			            double-clicking on Icon Show button.
+			        </li>
+			        <li>[EXTJSIV-3560] - API Docs for Ext.window.MessageBox.show() example broken as of 4.0.2a. Should use
+			            Ext.Msg.OKCANCEL
+			            instead of Ext.window.MessageBox.OKCANCEL
+			        </li>
+			        <li>[EXTJSIV-1159] - No animation on progress bar
+			        </li>
+			        <li>[EXTJSIV-3909] - Ext.MessageBox has an incorrect translation
+			        </li>
+			        <li>[EXTJSIV-4037] - ProgressBar in a toolbar does not update progress when hidden</li>
+			    </ul>
+			</li>
+			<li>Charts
+			    <ul>
+			        <li>[EXTJSIV-3914] - Ext.chart.axis Title bug
+			        </li>
+			        <li>[EXTJSIV-3915] - Pie Chart rendering bug
+			        </li>
+			        <li>[EXTJSIV-4025] - Charting Time Axis with a Column Series is misaligned
+			        </li>
+			        <li>[EXTJSIV-4060] - Line Chart doesn't show labels</li>
+			    </ul>
+			</li>
+
+			<li>General
+			    <ul>
+			        <li>[EXTJSIV-3366] - The autoRender Component configuration does not work as documented.
+			        </li>
+			        <li>[EXTJSIV-3707] - Fix issue with event bubbling
+			        </li>
+			        <li>[EXTJSIV-3459] - Ext.fx.Anim throws 'Ext.fx.cubicBezier is not a function'
+			        </li>
+			        <li>[EXTJSIV-3894] - Setting the Ext.BLANK_IMAGE_URL value still causes s.gif to be loaded from
+			            www.sencha.com in
+			            IE6/IE7 causing a security warning
+			        </li>
+			        <li>[EXTJSIV-3900] - Menu uses BLANK_IMAGE_URL too early
+			        </li>
+			        <li>[EXTJSIV-3913] - Toolbar overflow button icon
+			        </li>
+			        <li>[EXTJSIV-3927] - Ext.Layer.setOpacity does not affect associated shadow
+			        </li>
+			        <li>[EXTJSIV-3942] - If you do not supply a center region to a border layout, you get a cryptic error
+			        </li>
+			        <li>[EXTJSIV-4023] - Extra and missing borders in various components
+			        </li>
+			        <li>[EXTJSIV-4036] - Colormenu select event fires twice on click/select
+			        </li>
+			        <li>[EXTJSIV-4049] - Regular expression references wrong class name in sandbox mode in Action.js
+			        </li>
+			        <li>[EXTJSIV-4055] - Ext.util.HashMap add method not counting length correctly when replacing
+			        </li>
+			        <li>[EXTJSIV-4074] - Ext.Date.defaultFormat is used at define time in Ext.grid.column.Date
+			        </li>
+			        <li>[EXTJSIV-4200] - LoadMask with { useMsg: false } no longer suppresses message element
+			        </li>
+			        <li>[EXTJSIV-4230] - Ext.destroyMembers is not called correctly</li>
+			    </ul>
+
+			</li>
+
+			<li>Buttons
+			    <ul>
+			        <li>[EXTJSIV-3736] - In IE quirks mode, a menu containing a ButtonGroup attains an incorrect width.
+			        </li>
+			        <li>[EXTJSIV-3720] - The button icons are not centered in quirk mode
+			        </li>
+			        <li>[EXTJSIV-4057] - allowDepress doesn't work on splitbutton
+			        </li>
+			        <li>[EXTJSIV-4071] - Splitbutton w/ tooltip won't open menu
+			        </li>
+			        <li>[EXTJSIV-4072] - Open button menu suppresses the focus event of an unrelated field
+			        </li>
+			        <li>[EXTJSIV-4272] - button[enableToggle] must NOT still be pressed after being clicked twice
+			        </li>
+			    </ul>
+			</li>
+			</ul>
+			</div>
+	
+	
+            <div class="release">
+                <h1>
+                    Release Notes for Ext JS 4.0.6
+                </h1>
+                <p class="notes">
+                    Release Date: August 30, 2011<br>
+                    Version Number: 4.0.6
+                </p>
+                <h2>
+                    Bugs Fixed
+                </h2>
+
+                <ul>
+                    <li>Grid
+                        <ul>
+                            <li>[EXTJSIV-2231] - Fixed a styling bug with grids with rowbody that would cause columns to lay out incorrectly with custom CSS</li>
+                            <li>[EXTJSIV-3246] - Fixed a bug where specifying a single grid Feature would fail as it expects an array</li>
+                            <li>[EXTJSIV-3415] - Fixed a bug where right clicking would incorrectly deselect all selected nodes (affects Windows machines only)</li>
+                            <li>[EXTJSIV-3466] - Fixed a bug where selection does not work with grid row editor and Firefox 5 / IE 9</li>
+                            <li>[EXTJSIV-3586] - Grid header drag resizes wrong header</li>
+                            <li>[EXTJSIV-3591] - Checkbox column not re-added after grid reconfigure</li>
+                            <li>[EXTJSIV-3605] - Fixed a JavaScript error when user mouse hover on the first column in the grid. (Grid plugins example)</li>
+                            <li>[EXTJSIV-3642] - Scrollbars don't appear when a custom renderer increases the height of the rows in a tree</li>
+                            <li>[EXTJSIV-3644] - Column lines are not displaying properly in the grid.</li>
+                            <li>[EXTJSIV-3645] - Summary Grid example -Vertical scroll bar is disappearing when Toggle Summary button is clicked.</li>
+                            <li>[EXTJSIV-3658] - Paging scroller doesn't function with up/page up</li>
+                            <li>[EXTJSIV-3660] - hideGroupedHeader does not work</li>
+                            <li>[EXTJSIV-3661] - Grouping doesn't remember selections</li>
+                            <li>[EXTJSIV-3668] - Loading data doesn't invoke grid's vertical scrollbar</li>
+                            <li>[EXTJSIV-3715] - Horizontal scrollbar doesn't show on empty grid</li>
+                            <li>[EXTJSIV-3717] - Fixed a bad scrollbar in dd/dnd_grid_to_grid.html</li>
+                            <li>[EXTJSIV-3725] - Grid with locked columns not syncing header heights</li>
+                            <li>[EXTJSIV-3732] - Property Grid - Page is not loaded properly. Empty space is created in between column header and rows in the grid.</li>
+                            <li>[EXTJSIV-3733] - Drag and Drop : Grid to From Dnd - Horizontal scroll bar is not displaying after increasing the column size in data grid.</li>
+                            <li>[EXTJSIV-3753] - Locked grid with checkbox selection model inserts header twice</li>
+                            <li>[EXTJSIV-3754] - Cannot create locked grid with all unlocked columns</li>
+                            <li>[EXTJSIV-3784] - Auto height grid.Panel first header cell is blank; Fixed with doComponentLayout</li>
+                            <li>[EXTJSIV-3785] - Fixed height grid.Panel doesn't show scrollbars when resizing the columns; Fixed with doComponentLayout</li>
+                            <li>[EXTJSIV-3786] - Fixed height grid.Panel bottom scrollbar covers last row; cannot scroll it completely into view</li>
+                            <li>[EXTJSIV-3514] - Failed test: Verify horizontal and Vertical scrolling in checkbox selection Grid plugin</li>
+                        </ul>
+                    </li>
+                    
+                    <li>Form
+                        <ul>
+                            <li>[EXTJSIV-3490] - Fixed a bug where Slider width is too narrow on Safari 3.2</li>
+                            <li>[EXTJSIV-3491] - Some form examples don't render correctly on safari 3.2</li>
+                            <li>[EXTJSIV-3648] - FileField's reset does not reset the textual input field.</li>
+                            <li>[EXTJSIV-3669] - Unable to reselect a combo value</li>
+                            <li>[EXTJSIV-3673] - Fieldset title are not rendered with firefox 3.6.17</li>
+                            <li>[EXTJSIV-3678] - Fixed a bug where Checkbox's checkChange event didn't fire using keyboard</li>
+                            <li>[EXTJSIV-3713] - Fixed a bug where BoundList doesn't allow custom itemCls</li>
+                            <li>[EXTJSIV-3759] - Slider destroy code incorrect</li>
+                            <li>[EXTJSIV-3774] - Editor bug -- unconditional use of field.inputEl</li>
+                            <li>[EXTJSIV-3597] - Can't enter spaces into fields inside menus</li>
+                        </ul>
+                    </li>
+
+                    <li>Charts and Drawing
+                        <ul>
+                            <li>[EXTJSIV-933] - Axis title "Number of Hits" lacks padding with Firefox 3.5 and 3.0</li>
+                            <li>[EXTJSIV-3647] - Mixed charts - Bar graph is crossing the maximum limit of Y -Axis (Number of Hits) when click on the reload button couple of times.</li>
+
+                        </ul>
+                    </li>
+
+                    <li>Data
+                        <ul>
+                            <li>[EXTJSIV-3325] - Fixed a bug where the 'presence' validation would incorrectly return false for numeric zero values</li>
+                            <li>[EXTJSIV-3522] - [4.0.2] beginEdit leads to 'update' event not fired on Store</li>
+                            <li>[EXTJSIV-3593] - Fixed a bug with record.validate() and length validator when value is null</li>
+                            <li>[EXTJSIV-3662] - The "isLoading()" method of Ext.data.TreeStore returns true even after loading has completed</li>
+                            <li>[EXTJSIV-3757] - Ext.data.Store modifies the original config object passed in</li>
+                        </ul>
+                    </li>
+
+                    <li>General
+                        <ul>
+                            <li>[EXTJSIV-459] - Improved docs for maskRe, stripCharsRe, regex, and regexText</li>
+                            <li>[EXTJSIV-3037] - Fixed a bug where an error would be thrown if a Tab's width is greater than the configured maxTabWidth</li>
+                            <li>[EXTJSIV-3460] - Checkboxes now correctly remove themselves from the CheckboxManager when destroyed</li>
+                            <li>[EXTJSIV-3474] - Fixed sandboxing bugs where Fieldset, TriggerField and Menu would not be correctly wrapped in CSS scoping divs</li>
+                            <li>[EXTJSIV-3537] - Ext.destroyMembers was being called incorrectly in some components</li>
+                            <li>[EXTJSIV-3598] - Unable to select text in field in menu in FF</li>
+                            <li>[EXTJSIV-3638] - Fixed a number of issues with Load Masks</li>
+                            <li>[EXTJSIV-3646] - Complex Dashboard - Company Detail caption is not displaying in FF 3.6 browser.</li>
+                            <li>[EXTJSIV-3674] - Custom Grid Filters Example was throwing a JavaScript error</li>
+                            <li>[EXTJSIV-3718] - There is no padding between fields in statusbar/statusbar-advanced.html</li>
+                            <li>[EXTJSIV-3724] - Accordion layout does not properly hide toolbar when button is clicked to expand/collapse its parent</li>
+                            <li>[EXTJSIV-3726] - Ensure owning Container is laid out after an autosized Component is laid out.</li>
+                            <li>[EXTJSIV-3740] - Portal Demo - Displaying Java script error when click on Legend items in the Stock Portlets</li>
+                            <li>[EXTJSIV-3768] - variable $toolbar-border-color was ignored</li>
+                        </ul>
+
+                    </li>
+
+                    <li>Sandbox
+                        <ul>
+                            <li>[EXTJSIV-3681] - Vertical panel header text color incorrect in sandbox mode</li>
+                            <li>[EXTJSIV-3683] - Window resize not visible in sandbox mode</li>
+                            <li>[EXTJSIV-3688] - Can't vertically resize window in sandbox mode</li>
+                            <li>[EXTJSIV-3689] - Window constrain fails in sandbox mode</li>
+                            <li>[EXTJSIV-3695] - Grid's AbstractSummary feature had been hard-coding base CSS prefix so sandboxing would not work</li>
+                            <li>[EXTJSIV-3702] - Fixed a bug where the JSONP callbacks would use the normal Ext namespace instead of the sandbox namespace in sandbox mode</li>
+                            <li>[EXTJSIV-3714] - Tooltip positioning incorrect in sandbox mode</li>
+                        </ul>
+                    </li>
+                </ul>
+            </div>
+            
+            <div class="release">
+                <h1>
+                    Release Notes for Ext JS 4.0.5
+                </h1>
+                <p class="notes">
+                    Release Date: July 24, 2011<br>
+                    Version Number: 4.0.5
+                </p>
+                <h2>
+                    Bugs Fixed
+                </h2>
+
+                <ul>
+                    <li>Grid
+                        <ul>
+                            <li>[EXTJSIV-2442] - Grouped Grid Header does not handle flex column show/hide well (layout issues)</li>
+                            <li>[EXTJSIV-2464] - Not possible to access the properties of the columns (locked=true)</li>
+                            <li>[EXTJSIV-2471] - "Group by this field" in Remote Summary Grid gives JS error</li>
+                            <li>[EXTJSIV-2543] - Cell Editing, intra-row change of focus.</li>
+                            <li>[EXTJSIV-2572] - Grid column header menu trigger gets stuck when there's no header menu</li>
+                            <li>[EXTJSIV-2573] - Ext.grid.plugin.DragDrop should honor disabled flag</li>
+                            <li>[EXTJSIV-3377] - Grid deferRowRender causes defer shim to be set on store listeners</li>
+                            <li>[EXTJSIV-3457] - Grid needs a viewready event which fires when the DOM rows become available.</li>
+                            <li>[EXTJSIV-3485] - Locking grid example is throwing an Hard JS error "Cannot call method 'removeCls' of undefined"</li>
+                            <li>[EXTJSIV-3489] - Grid layout is incorrect in form dashboard example</li>
+                            <li>[EXTJSIV-3492] - Form grid access examples has incorrect columns size on IE7 and IE6</li>
+                            <li>[EXTJSIV-3494] - Grid mask in custom-form example size is not equal to grid body</li>
+                            <li>[EXTJSIV-3562] - grid/form-grid.html must select the first row on page load</li>
+                        </ul>
+                    </li>
+
+                    <li>Window
+                        <ul>
+                            <li>[EXTJSIV-1732] - Progress Dialog window locked up if you reopen it after closing it</li>
+                            <li>[EXTJSIV-1994] - Strange Ext.window.Window rendering issue in WebKit browsers when placed over Java applet</li>
+                            <li>[EXTJSIV-2511] - Ghosted windows should not be stateful</li>
+                        </ul>
+                    </li>
+
+                    <li>Form
+                        <ul>
+                            <li>[EXTJSIV-2425] - HTMLEditor corrupted when changing background color of selection</li>
+                            <li>[EXTJSIV-3035] - [4.0.1]ComboBox submit the wrong content</li>
+                            <li>[EXTJSIV-3298] - [4.0.2] combobox setValue doesn't as expected</li>
+                            <li>[EXTJSIV-3330] - Setting the editable combobox to a value that is not in the list results in empty val</li>
+                            <li>[EXTJSIV-3413] - Highlight during trigger click</li>
+                            <li>[EXTJSIV-3414] - validateedit does not have new values</li>
+                            <li>[EXTJSIV-3418] - No way to get reference to field.Picker from BoundList</li>
+                            <li>[EXTJSIV-3495] - The Loading Mask in custom form example is not constraint to grid body.</li>
+                            <li>[EXTJSIV-3520] - RowExpander doesn't work on ExtJs 4.0.2 (ext-all-debug.js) but worked on (ext-all.js)</li>
+                            <li>[EXTJSIV-3561] - form/combos.html example: combobox unobtrusive select transformation doesn't work </li>
+                        </ul>
+                    </li>
+
+                    <li>Tree
+                        <ul>
+                            <li>[EXTJSIV-2197] - Failed test: Verify the tree panel when user click's on Expand All button.</li>
+                            <li>[EXTJSIV-2200] - Failed test: Verify the panel after user click's on Tree expander button</li>
+                            <li>[EXTJSIV-2204] - Dblclick expand/collapse in check-tree example causes JS error</li>
+                            <li>[EXTJSIV-2276] - Collapsing a tree panel w/collapsed nodes throws JS error</li>
+                            <li>[EXTJSIV-3362] - expandPath fails when a node is already loading</li>
+                        </ul>
+                    </li>
+
+                    <li>Layouts
+                        <ul>
+                            <li>[EXTJSIV-2431] - Accordion is missing a border when collapsed</li>
+                            <li>[EXTJSIV-2547] - Child components not rendered.sized in initially collapsed, uncontained Panel.</li>
+                            <li>[EXTJSIV-3295] - 4.0.2 only - layout fit grid scrollbar when used does not scroll content</li>
+                            <li>[EXTJSIV-3410] - Collapsing/expanding of flexed panels doesn't work</li>
+                            <li>[EXTJSIV-3541] - Cannot hide collapsed regions in a border layout</li>
+                        </ul>
+                    </li>
+
+                    <li>Charts and Drawing
+                        <ul>
+                            <li>[EXTJSIV-3045] - Add check in DrawComponent to ensure we have a valid surface before continuing execution</li>
+                            <li>[EXTJSIV-3456] - Printing legends in IE causes orange rectangles appear.</li>
+                        </ul>
+                    </li>
+
+                    <li>Data
+                        <ul>
+                            <li>[EXTJSIV-1897] - Ext.data.Store buffered issue - error thrown if records are not available on the server</li>
+                            <li>[EXTJSIV-3351] - processResponse is wrong in Ext.data.proxy.Server</li>
+                            <li>[EXTJSIV-3464] - Direct exception events don't fire on the provider.</li>
+                            <li>[EXTJSIV-3471] - Boolean field data type is not being converted properly.</li>
+                            <li>[EXTJSIV-3540] - indexOfTotal fails if the index is 0</li>
+                        </ul>
+                    </li>
+
+                    <li>General
+                        <ul>
+                            <li>[EXTJSIV-1638] - ComboBox should select the configured value upon first load of the Store. </li>
+                            <li>[EXTJSIV-2405] - Docked items added after render don't render correctly</li>
+                            <li>[EXTJSIV-2434] - Infinite scrolling is buggy on safari 3.X (the grid doesn't render the first rows)</li>
+                            <li>[EXTJSIV-2549] - Collapsed Tabpanel misses the bottom border</li>
+                            <li>[EXTJSIV-2565] - A button with a menu defined is only showing the menu when the mouse is over the arrow but in 3.x the menu showed as soon as the mouse was anywhere over the button</li>
+                            <li>[EXTJSIV-2577] - Class aliases that use a period as a separator break DOM/CQ selection</li>
+                            <li>[EXTJSIV-2628] - Ext.tab.Bar - minTabWidth has no effect</li>
+                            <li>[EXTJSIV-3284] - data-qtitle not consistently rendered.</li>
+                            <li>[EXTJSIV-3327] - [4.0.2] Plugins instantiated too early in AbstractComponent</li>
+                            <li>[EXTJSIV-3412] - Toolbar with overflow doesn't include menu in refItems</li>
+                            <li>[EXTJSIV-3453] - AbstractComponent calls constructPlugins too early</li>
+                            <li>[EXTJSIV-3470] - scrollByDeltaX() incorrectly using the vertical scroller</li>
+                            <li>[EXTJSIV-3483] - Some examples renders a blank page</li>
+                            <li>[EXTJSIV-3486] - Animated DataView throw and hard js error "Cannot call method animate of null"</li>
+                            <li>[EXTJSIV-3487] - Animated DataView example throw and hard js error "Cannot call method animate of null"</li>
+                            <li>[EXTJSIV-3488] - MultiSelect and Key-Feed-Viewer examples are throwing an hard js error 'Cannot call method addCls of null'</li>
+                            <li>[EXTJSIV-3490] - Sliders width is too narrow on Safari 3.2</li>
+                            <li>[EXTJSIV-3491] - Some form examples don't render correctly on safari 3.2</li>
+                            <li>[EXTJSIV-3496] - The theme index example is automatically scrolled on IE.</li>
+                            <li>[EXTJSIV-3539] - LoadMask beforeLoad causes a crash</li>
+                        </ul>
+                    </li>
+                </ul>
+
+                <h2>
+                    Improvements
+                </h2>
+                
+                <ul>
+                    <li>[EXTJSIV-1999] - Improved Themes Example Performance</li>
+                    <li>[EXTJSIV-3323] - [4.0] Ext.tab.Panel history feature missing</li>
+                    <li>[EXTJSIV-1907] - Refactored the renderSelectors functionality to use local element IDs instead of CSS selectors so that render selector performance is improved</li>
+                    <li>[EXTJSIV-2575] - Ext core class namespaces made consistent in the API docs</li>
+                    <li>[EXTJSIV-1887] - Tree now supports horizontal scrolling</li>
+                    <li>[EXTJSIV-2436] - dynamic_form field alignment</li>
+                </ul>
+            </div>
+            
+            <div class="release">
+                <h1>
+                    Release Notes for Ext JS 4.0.4
+                </h1>
+                <p class="notes">
+                    Release Date: June 29, 2011<br>
+                    Version Number: 4.0.4
+                </p>
+                <h2>
+                    Bugs Fixed
+                </h2>
+
+                <ul>
+                    <li>Grid
+                        <ul>
+                            <li>[EXTJSIV-1032] - Grid CheckColumn 1px to left in header</li>
+                            <li>[EXTJSIV-2122] - Cell Editing doesn't allow for custom autoSize</li>
+                            <li>[EXTJSIV-2124] - Grid: RowExpander Plugin adds additional columns</li>                
+                            <li>[EXTJSIV-2251] - Action Column doesn't allow alt text per action</li>
+                            <li>[EXTJSIV-2351] - Implement the more intuitive resizable: false on grid Columns. fixed is deprecated.</li>
+                            <li>[EXTJSIV-2381] - grid/array-grid.html Actions icons should be moved up of 1 pixel</li>
+                            <li>[EXTJSIV-2460] - Regression in Sorting buffered Grid (First row is chopped off)</li>
+                            <li>[EXTJSIV-2428] - Unable to set cell editor dynamically</li>
+                            <li>[EXTJSIV-2466] - Buffered scrolling broken in latest Chrome</li>
+                            <li>[EXTJSIV-2496] - Grid crashes when removing it from a tab panel</li>
+                            <li>[EXTJSIV-2501] - Grid applyState smashes column minWidth and has JS errors for locking grids</li>
+                            <li>[EXTJSIV-2564] - Grid missing horizontal scrollbar</li>
+                            <li>[EXTJSIV-2574] - $grid-row-cell-background variable unused</li>
+                            <li>[EXTJSIV-3029] - Reconfigure fails when no columns are passed</li>
+                            <li>[EXTJSIV-3299] - (IE7) Grid body alignement is incorrect in form-grid example</li>
+                            <li>[EXTJSIV-3309] - Grid reconfigure breaks columns layout</li>
+                            <li>[EXTJSIV-3363] - Grid header is too narrow on IE6/IE7/IE9</li>
+                        </ul>
+                    </li>
+
+                    <li>Tree
+                        <ul>
+                            <li>[EXTJSIV-1887] - Tree does not allow horizontal scrolling</li>
+                            <li>[EXTJSIV-2207] - Dblclick expand/collapse in XML Tree example causes JS error</li>
+                            <li>[EXTJSIV-2276] - Collapsing a tree panel w/collapsed nodes throws JS error</li>
+                            <li>[EXTJSIV-2517] - getNode needs a rendered check</li>
+                            <li>[EXTJSIV-2518] - NodeInterface missing getPath</li>
+                        </ul>
+                    </li>
+
+                    <li>Forms
+                        <ul>
+                            <li>[EXTJSIV-2104] - Fieldset display strange in IE</li>
+                            <li>[EXTJSIV-2130] - Specify labelCls messes up height on TextField</li>
+                            <li>[EXTJSIV-2165] - JS error when selecting item in combo box</li>
+                            <li>[EXTJSIV-2167] - JS error when selecting multiple items in combo box</li>
+                            <li>[EXTJSIV-2168] - JS error when selecting item in combo box</li>
+                            <li>[EXTJSIV-2169] - Cannot select item in combo after entering invalid text</li>                
+                            <li>[EXTJSIV-2210] - Failed test: Verify the Submit button in the xml form</li>
+                            <li>[EXTJSIV-2338] - Checkbox group/checkbox in fieldset too low</li>
+                            <li>[EXTJSIV-2349] - examples/form/form-grid-access.html loses its description text</li>
+                            <li>[EXTJSIV-2366] - ComboBox should have getStore method</li>
+                            <li>[EXTJSIV-2380] - form/checkout.html The disabled Street Address field is lighter than other fields</li>
+                            <li>[EXTJSIV-2459] - Checkbox select gives commitFn is not a function</li>
+                            <li>[EXTJSIV-2470] - Combo doesn't send queryParam on page change</li>
+                            <li>[EXTJSIV-2522] - Field crashes if destroyed when focused</li>
+                            <li>[EXTJSIV-2523] - DatePicker has undefined var</li>
+                            <li>[EXTJSIV-2527] - File field crashes when reset on unrendered field.</li>
+                            <li>[EXTJSIV-2529] - Combo does not adjust list height to fit viewport</li>
+                            <li>[EXTJSIV-2531] - Slider crashes when calling setMinValue/setMaxValue when it's not rendered</li>
+                            <li>[EXTJSIV-2546] - TextField filterKeys not applied when using alt + gr key</li>
+                            <li>[EXTJSIV-2553] - The "formBind" config does not work for buttons defined in a Form Panel's "buttons" config</li>
+                            <li>[EXTJSIV-2499] - Date picker month selector animation issues (including runtime error)</li>
+                            <li>[EXTJSIV-3028] - Combo in editor always tries to force selection</li>
+                        </ul>
+                    </li>
+
+                    <li>Tabs
+                        <ul>
+                            <li>[EXTJSIV-1034] - When there's only one tab in a TabPanel, and it's active by default, the tab selector in the tab strip is not set to the active state.</li>
+                            <li>[EXTJSIV-2542] - Ext.tab.Panel styling issues</li>
+                            <li>[EXTJSIV-3300] - TabBar background color is incorrect (no gradients) in all browsers except chrome and firefox</li>
+                        </ul>
+                    </li>
+
+                    <li>Panel
+                        <ul>
+                            <li>[EXTJSIV-2506] - Panel header should set overflow hidden for text</li>
+                            <li>[EXTJSIV-3311] - Collapsed panel layout error inside a viewport</li>
+                        </ul>
+                    </li>
+
+                    <li>Toolbars and Buttons
+                        <ul>
+                            <li>[EXTJSIV-2185] - Add textAlign cfg to Ext.button.Button</li>
+                            <li>[EXTJSIV-2387] - toolbar/toolbars example, the title of ButtonGroup is not centered anymore</li>
+                            <li>[EXTJSIV-2475] - Button icons are not well aligned on ie6 only</li>
+                            <li>[EXTJSIV-2513] - Scrolling menu in Basic Toolbar example fails</li>
+                            <li>[EXTJSIV-2544] - ButtonGroup renders blue with gray style in Ext 4.0.2</li>
+                        </ul>
+                    </li>
+
+                    <li>Window
+                        <ul>
+                            <li>[EXTJSIV-1667] - Improper Resize Handles Position / Offset in IEs</li>
+                            <li>[EXTJSIV-1732] - Progress Dialog window locking</li>
+                            <li>[EXTJSIV-2193] - Failed test: Verify Window resize using Drag and Drop</li>
+                            <li>[EXTJSIV-2505] - When you set modal:true on a window and renderTo it to a panel, it masks the whole body, not the panel</li>
+                        </ul>
+                    </li>
+
+                    <li>Charts
+                        <ul>
+                            <li>[EXTJSIV-2508] - Chart doesn't support not being passed a config object</li>
+                            <li>[EXTJSIV-2521] - Destroying unrendered chart causes error</li>
+                        </ul>
+                    </li>
+
+                    <li>Miscellaneous
+                        <ul>
+                            <li>[EXTJSIV-1066] - Calling Container.add() with a floating component does not render that component</li>
+                            <li>[EXTJSIV-1086] - Theme Example: Progress Bar's Right Pixel Border changes color while animating</li>
+                            <li>[EXTJSIV-1659] - Text hidden when column is short</li>
+                            <li>[EXTJSIV-2074] - Failed test: Verify that East panel expands when clicked on the expand button at left side of the center panel</li>
+                            <li>[EXTJSIV-2101] - Shadows not shown on certain floating items such as Menu and ComboBox list.</li>
+                            <li>[EXTJSIV-2132] - Expand sets height before anim on Panel using VBoxLayout</li>
+                            <li>[EXTJSIV-2192] - Failed test: Verify pane resize using resize bar</li>
+                            <li>[EXTJSIV-2226] - Failed test: Verify the user is able to select option from options drop down under ItemSelectorTest table</li>
+                            <li>[EXTJSIV-2252] - Need to fix DomQuery for non document rooted queries</li>
+                            <li>[EXTJSIV-2284] - Web Desktop, System Status Window is slow on IE (causes script warning)</li>
+                            <li>[EXTJSIV-2332] - Fix build warning for nested-loading MVC app</li>                                
+                            <li>[EXTJSIV-2391] - Ext.core.DomHelper should be aliased to Ext.DomHelper for backwards compat</li>
+                            <li>[EXTJSIV-2394] - Center region of border layout should have overflow:auto</li>
+                            <li>[EXTJSIV-2411] - Format.number can return -0</li>
+                            <li>[EXTJSIV-2500] - Gray theme has not styled button group</li>
+                            <li>[EXTJSIV-2507] - reader.Array doesn't work with a 0 mapping.</li>
+                            <li>[EXTJSIV-2509] - Tool ignores tooltip option</li>
+                            <li>[EXTJSIV-2510] - Button tooltipType title doesn't work</li>
+                            <li>[EXTJSIV-2520] - Menu strict typo</li>
+                            <li>[EXTJSIV-2519] - Store should give a warning if model isn't defined</li>
+                            <li>[EXTJSIV-2526] - AbstractContainer, child/down selector should be optional</li>
+                            <li>[EXTJSIV-2530] - Show event fires too early for animated component</li>
+                            <li>[EXTJSIV-2532] - Store does not consistently pass all event parameters to beforeload event</li>
+                            <li>[EXTJSIV-2537] - Box layout doesn't destroy innerCt</li>
+                            <li>[EXTJSIV-2839] - Component destroy event fires too late</li>
+                            <li>[EXTJSIV-3027] - Hidden tools get ghosted</li>
+                            <li>[EXTJSIV-3310] - Accordion layout does not handle grid properly</li>
+                        </ul>
+                    </li>
+                </ul>
+            </div>
+            
+            <div class="release">
+                <h1>
+                    Release Notes for Ext JS 4.0.2
+                </h1>
+                <p class="notes">
+                    Release Date: June 9, 2011<br>
+                    Version Number: 4.0.2
+                </p>
+                <h2>
+                    Bugs Fixed
+                </h2>
+
+                <ul>
+                    <li>Grid
+                        <ul>
+                            <li>[EXTJSIV-864] - Grid filtering doesn't support specifying filters on feature</li>
+                            <li>[EXTJSIV-1149] - Grouping Grid - text element in the group should be indented</li>
+                            <li>[EXTJSIV-1715] - Row height gets modified while searching</li>
+                            <li>[EXTJSIV-1720] - When rendering new buffered rows, row height changes, IE6/7</li>
+                            <li>[EXTJSIV-1760] - Grid: enableColumnResize should prevent css indicator of showing resizable behavior</li>
+                            <li>[EXTJSIV-1750] - PropertyGrid keyboard navigation</li>
+                            <li>[EXTJSIV-1789] - Editing fails after reconfigure</li>
+                            <li>[EXTJSIV-1806] - Grid with multi-select and DD deselects rows</li>
+                            <li>[EXTJSIV-1810] - Unlocked columns don't align correctly in IE9</li>
+                            <li>[EXTJSIV-1812] - beforeselect event not relayed to grid</li>
+                            <li>[EXTJSIV-1874] - Grid Performance is too slow in IE</li>
+                            <li>[EXTJSIV-1968] - Ext.table.Panel: enableColumnHide</li>
+                            <li>[EXTJSIV-1934] - Hiding subcolumn causes width to display incorrectly</li>
+                            <li>[EXTJSIV-1969] - IE 8 &amp; 9: Ext.grid.plugin.RowEditing and PagingToolbar</li>
+                            <li>[EXTJSIV-1971] - Javascript error during cell editing</li>
+                            <li>[EXTJSIV-2061] - Grid vertical scrollbar is reset when when the grid panel is collapsed and then expanded</li>
+                            <li>[EXTJSIV-2062] - Call to grid.reconfigure on a rendered grid that initially has no columns configured results in the first row being hidden behind the column headers if the grid does not contain enough data to require scrollbars, different behavior with larger data set</li>
+                            <li>[EXTJSIV-1997] - Grid vertical scrollbar error</li>
+                            <li>[EXTJSIV-2008] - Grid vscrollbar can double count height of hscrollbar</li>
+                            <li>[EXTJSIV-2376] - Grid cells don't show modified state if initial value is falsey</li>
+                            <li>[EXTJSIV-2379] - Property grid example is broken (no body rendered)</li>
+                            <li>[EXTJSIV-2382] - In grid/binding example the scrollbar column has disappeared</li>
+                            <li>[EXTJSIV-2383] - grid/grid-plugins.html throw an hard js error on ie6/7</li>
+                            <li>[EXTJSIV-2384] - grid/group-header scrollbar is off by 4 pixels (only ie9)</li>
+                            <li>[EXTJSIV-2372] - tree/xml-tree.html throw an hard js error</li>
+                            <li>[EXTJSIV-2435] - Xml Tree does not show expand/collapse icons</li>
+                            <li>[EXTJSIV-2373] - Row height is too small in direct/direct-grid.html</li>
+                            <li>[EXTJSIV-2122] - Cell Editing doesn't allow for custom autoSize</li>
+                            <li>[EXTJSIV-2248] - Grid Load performance</li>
+                            <li>[EXTJSIV-2430] - RowExpander plugin unwanted padding on IE</li>
+                            <li>[EXTJSIV-1868] - Cell Editing doesn't work on locked view</li>
+                            <li>[EXTJSIV-2066] - Grid's horizontal scrollbar can get out of sync</li>
+                            <li>[EXTJSIV-2244] - CheckboxModel's version of onSelectChange ignores suppressEvent parameter</li>
+                            <li>[EXTJSIV-2131] - Can't use grouping summary indexes multiple times</li>
+                            <li>[EXTJSIV-2466] - Buffered scrolling broken in latest Chrome</li>
+                        </ul>
+                    </li>
+
+                    <li>Menu
+                        <ul>
+                            <li>[EXTJSIV-692] - Need to style menu in access theme</li>
+                        </ul>
+                    </li>
+
+                    <li>Tree
+                        <ul>
+                            <li>[EXTJSIV-972] - Indentation in both upper/bottom border lines in tree beside the scrollbar</li>
+                            <li>[EXTJSIV-1053] - IE6 tree quicktips look ugly</li>
+                            <li>[EXTJSIV-1887] - Tree does not allow horizontal scrolling</li>
+                            <li>[EXTJSIV-1933] - Tree crashes on expand</li>
+                            <li>[EXTJSIV-2009] - NodeInterface should use a bool type for checked</li>
+                            <li>[EXTJSIV-2001] - Expandable attribute ignored</li>
+                            <li>[EXTJSIV-1883] - Need a way to veto node collapse/expand events</li>
+                            <li>[EXTJSIV-2354] - TreePanel.selectPath does not work with custom separator</li>
+                        </ul>
+                    </li>
+
+                    <li>Form
+                        <ul>
+                            <li>[EXTJSIV-1747] - IE Quirks :  combo dropdown list is not aligned properly in Advanced Dataview example</li>
+                            <li>[EXTJSIV-992] - IE9 strict vertical and horizontal scrollbar in HTMLEDITOR</li>
+                            <li>[EXTJSIV-1073] - Date Picker styling</li>
+                            <li>[EXTJSIV-1080] - Date Picker / Time picker</li>
+                            <li>[EXTJSIV-1668] - TimeField should reserved custom entry on pressing Enter (after keyboard navigation)</li>
+                            <li>[EXTJSIV-1753] - Disabled text in field labels does not display properly in IE6</li>
+                            <li>[EXTJSIV-2010] - Combo fires change event twice when selecting a value</li>
+                            <li>[EXTJSIV-2100] - TextArea emptyText incorrect color</li>
+                            <li>[EXTJSIV-2436] - dynamic_form field alignment</li>
+                        </ul>
+                    </li>
+
+                    <li>Container
+                        <ul>
+                            <li>[EXTJSIV-1066] - Calling Container.add() with a floating component does not render that component</li>
+                        </ul>
+                    </li>
+
+                    <li>Misc
+                        <ul>
+                            <li>[EXTJSIV-1098] - Mini-collapse panel does not have a mouse over state</li>
+                            <li>[EXTJSIV-1157] - Row editor had gradient background in 3.3, now has flat color</li>
+                            <li>[EXTJSIV-1182] - High Contrast Theme Has Standard Contract Menus</li>
+                            <li>[EXTJSIV-1202] - Icons of mixed sizes are unaligned</li>
+                            <li>[EXTJSIV-1320] - Shadows in lower left/right corners, at times, looks too square.</li>
+                            <li>[EXTJSIV-1472] - Black background in charting examples in quirks mode</li>
+                            <li>[EXTJSIV-1473] - 2x larger font size in quirks mode versus strict for the spotlight example</li>
+                            <li>[EXTJSIV-1553] - The qtip is clipped in the registration example</li>
+                            <li>[EXTJSIV-1560] - Title artifact behind collapsed panel header</li>
+                            <li>[EXTJSIV-1646] - Problem with relayout + floating</li>
+                            <li>[EXTJSIV-1726] - Esc Key Handling is inconsistent between browsers</li>
+                            <li>[EXTJSIV-1727] - Placing a date picker inside of a menu has a black border around the menu</li>
+                            <li>[EXTJSIV-1734] - The background of the custom progress bar in progress bar example must be white.</li>
+                            <li>[EXTJSIV-2055] - Compat layer throwing error with grid</li>
+                            <li>[EXTJSIV-1729] - Tab icons cut off</li>
+                            <li>[EXTJSIV-1746] - Restful Proxy example uses background-image w/PNG (bad for IE6) on buttons</li>
+                            <li>[EXTJSIV-1793] - Sandboxing Ext3/Ext4 can cause id clashes</li>
+                            <li>[EXTJSIV-1815] - Problem with discontinuous values</li>
+                            <li>[EXTJSIV-1873] - Compat - tbar in grid appears under headers</li>
+                            <li>[EXTJSIV-1884] - Proxy status repair goes behind window</li>
+                            <li>[EXTJSIV-1928] - Paging toolbar in BoundList has double border</li>
+                            <li>[EXTJSIV-1941] - body not scoped</li>
+                            <li>[EXTJSIV-1965] - renderTpl used even when it doesn't exist</li>
+                            <li>[EXTJSIV-1973] - HashMap keyFn not supported</li>
+                            <li>[EXTJSIV-1990] - State doesn't allow stateId to be set in the prototype</li>
+                            <li>[EXTJSIV-2003] - Missing btn mixin</li>
+                            <li>[EXTJSIV-2004] - Frame ignores any ui</li>
+                            <li>[EXTJSIV-2065] - Ext.Element#scrollTo broken when animate=true with grid view when store is reloaded</li>
+                            <li>[EXTJSIV-2067] - DatePicker month/year selection cannot be done when showToday = false</li>
+                            <li>[EXTJSIV-2089] - Memento class missing in built SDK</li>
+                            <li>[EXTJSIV-2095] - 404 for tip-bg.gif file</li>
+                            <li>[EXTJSIV-2099] - closeText not copied</li>
+                            <li>[EXTJSIV-2129] - Set tpl config has no affect on ComboBox</li>
+                            <li>[EXTJSIV-2249] - Ext.isObject fails with anything with a nodeType property</li>
+                            <li>[EXTJSIV-2268] - Difficult/unintuitive to disable load mask on a grid/view</li>
+                            <li>[EXTJSIV-2314] - selectRange doesn't cause UI to update</li>
+                            <li>[EXTJSIV-2337] - Examples fonts and body padding are wrong in 4.0.2</li>
+                            <li>[EXTJSIV-2349] - examples/form/form-grid-access.html loses its description text</li>
+                            <li>[EXTJSIV-2385] - portal/portal.html throws a hard error on IE6 (only)</li>
+                            <li>[EXTJSIV-2387] - toolbar/toolbars example, the title of ButtonGroup is not centered anymore</li>
+                            <li>[EXTJSIV-2411] - Format.number can return -0</li>
+                            <li>[EXTJSIV-2454] - Ext.Ajax not taking the XHR.status into consideration</li>
+                        </ul>
+                    </li>
+
+                    <li>Examples
+                        <ul>
+                            <li>[EXTJSIV-1090] - Theme Example: "Display topics" only shows when hitting refresh</li>
+                            <li>[EXTJSIV-1094] - Theme Example: Month Selectors in Date Picker do not have hover state</li>
+                            <li>[EXTJSIV-1618] - Forum search example the combo list isn't positioned correctly with IE Quirks</li>
+                            <li>[EXTJSIV-1168] - Status bar example - alignment of "loading" animation is not correct</li>
+                            <li>[EXTJSIV-1313] - Forum Browser has 1px white border on inside right edge of the tree</li>
+                            <li>[EXTJSIV-1189] - Forms example inside layout browser is inconsistent with 3.3</li>
+                            <li>[EXTJSIV-1117] - Forum example missing search box on top right</li>
+                            <li>[EXTJSIV-1124] - Feed viewer - cannot click on the body of left panel if it's minimized</li>
+                            <li>[EXTJSIV-1133] - Paging grid example - text should be better spaced</li>
+                            <li>[EXTJSIV-1137] - Paging grid example - disabled arrows on the bottom toolbar should be gray, not blue</li>
+                            <li>[EXTJSIV-1140] - Portal example - setting icon is clipped</li>
+                            <li>[EXTJSIV-1097] - Theme example - missing list view</li>
+                            <li>[EXTJSIV-1099] - Theme example: Tab scroller - scroll arrows should not show active cursor if it's disabled</li>
+                            <li>[EXTJSIV-1101] - Theme example - grid panel does not have multiple pages</li>
+                            <li>[EXTJSIV-1107] - Theme example - text field is missing color and highlight in toolbar</li>
+                            <li>[EXTJSIV-1114] - Theme Browser: Column When Selected doesn't have a gradient</li>
+                            <li>[EXTJSIV-1169] - Advanced status bar example - alignment is incorrect</li>
+                            <li>[EXTJSIV-1696] - Desktop example - In notepad, scrolling appears</li>
+                            <li>[EXTJSIV-1707] - Desktop example - window drag/drop does not work</li>
+                            <li>[EXTJSIV-1719] - Tab scroller menu example - garbage text on top of tab on safari 5</li>
+                            <li>[EXTJSIV-1725] - Tips in Tips Example is Clipped</li>
+                            <li>[EXTJSIV-2370] - The Panel "Location Information" has disappeared from direct/direct-form example</li>
+                        </ul>
+                    </li>
+
+                    <li>Panel
+                        <ul>
+                            <li>[EXTJSIV-1130] - Panel body text should be 11px</li>
+                            <li>[EXTJSIV-1956] - Panel collapse/expand breaks auto height</li>
+                        </ul>
+                    </li>
+
+                    <li>Button
+                        <ul>
+                            <li>[EXTJSIV-1632] - The icon in disabled buttons does not get disabled in IE6</li>
+                            <li>[EXTJSIV-2374] - Several buttons issues</li>
+                        </ul>
+                    </li>
+
+                    <li>Window
+                        <ul>
+                            <li>[EXTJSIV-1723] - Window re-sizing incorrect</li>
+                            <li>[EXTJSIV-1738] - Opera 10.6: Resizing windows snaps to minHeight</li>
+                            <li>[EXTJSIV-1732] - Progress Dialog window locking</li>
+                            <li>[EXTJSIV-1774] - Window constrained into tabpanel not re-showing after toggling between tabs</li>
+                            <li>[EXTJSIV-1980] - Ext.Msg.show() bombs out in FF 4.01 Mac</li>
+                            <li>[EXTJSIV-1981] - Ext.Msg.setIcon() doesn't display icon at correct location in messagebox</li>
+                            <li>[EXTJSIV-2369] - Window title aren't aligned properly in all browsers</li>
+                            <li>[EXTJSIV-2105] - Window title truncated</li>
+                        </ul>
+                    </li>
+
+                    <li>Chart
+                        <ul>
+                            <li>[EXTJSIV-1770] - Line Chart values incorrect</li>
+                            <li>[EXTJSIV-1951] - Charts post-processes and removes the output of a custom renderer</li>
+                            <li>[EXTJSIV-2368] - Highlighting in the Pie chart example can 'stick' sometimes leaving slices mid animation</li>
+                            <li>[EXTJSIV-1963] - Line drawn between two points of equal value sometimes incorrect when smooth config is set to true</li>
+                            <li>[EXTJSIV-1964] - Line Chart with all data values set to 0 fails to render properly, error thrown</li>
+                            <li>[EXTJSIV-1978] - Time axis configured with fromDate, toDate and constrain fails to render properly</li>
+                            <li>[EXTJSIV-1979] - Chart Legend should use defined colorSet array, currently uses default colorArrayStyle</li>
+                            <li>[EXTJSIV-2246] - Legend should automatically use same colors as chart series, even when the color(s) are specified via style fill config</li>
+                            <li>[EXTJSIV-2335] - Wrong store index passed in line renderers</li>
+                            <li>[EXTJSIV-2350] - charts/Charts.html js hard error in Safari</li>
+                            <li>[EXTJSIV-2355] - Unable to set custom fill style on line chart</li>
+                        </ul>
+                    </li>
+
+                    <li>Draw
+                        <ul>
+                            <li>[EXTJSIV-1808] - setViewBox doesn't work with VML</li>
+                        </ul>
+                    </li>
+
+                    <li>Data
+                        <ul>
+                            <li>[EXTJSIV-1858] - collectData hardcodes use of the 'data' property to extract field values. Should use the 'persistanceProperty' of the Model</li>
+                            <li>[EXTJSIV-1896] - Ext.data.Model#persistanceProperty should be spelled persistenceProperty</li>
+                            <li>[EXTJSIV-1966] - Ext.data.Store memory leak</li>
+                            <li>[EXTJSIV-1953] - Ext.grid.property.Store problems</li>
+                            <li>[EXTJSIV-1975] - Generated Getter in BelongsToAssociation does not cache result </li>
+                            <li>[EXTJSIV-2388] - writer/writer.html examples throws a hard error on ie6/ie7</li>
+                        </ul>
+                    </li>
+
+                    <li>Layout
+                        <ul>
+                            <li>[EXTJSIV-2405] - Docked items added after render don't render correctly</li>
+                            <li>[EXTJSIV-2431] - Accordion is missing a border when collapsed</li>
+                            <li>[EXTJSIV-1900] - Accordion layout with tree initially collapsed does not layout correctly when activated</li>
+                            <li>[EXTJSIV-1970] - Ext.layout.Table rowspan bug</li>
+                            <li>[EXTJSIV-2098] - defaultAnchor ignored</li>
+                        </ul>
+                    </li>
+
+                    <li>MVC
+                        <ul>
+                            <li>[EXTJSIV-1967] - Multiple Controllers cannot listen to same event on same Component</li>
+                            <li>[EXTJSIV-2331] - Fix build warning for simple MVC app</li>
+                            <li>[EXTJSIV-2332] - Fix build warning for nested-loading MVC app</li>
+                        </ul>
+                    </li>
+
+                    <li>Core
+                        <ul>
+                            <li>[EXTJSIV-2000] - Ext.core.Element.boxWrap() missing CSS</li>
+                            <li>[EXTJSIV-2006] - Ext.core.Element.frame does nothing</li>
+                            <li>[EXTJSIV-2063] - Ext.util.Animate methods don't get copied to CompositeElement</li>
+                        </ul>
+                    </li>
+
+                    <li>Menu
+                        <ul>
+                            <li>[EXTJSIV-2002] - Menu doesn't resize when text is changed</li>
+                            <li>[EXTJSIV-2186] - Menu.alignTo is not working in some cases.</li>
+                        </ul>
+                    </li>
+
+                    <li>TabPanel
+                        <ul>
+                            <li>[EXTJSIV-2386] - Close button on tabs has disappeared</li>
+                        </ul>
+                    </li>
+                </ul>
+
+                <h2>
+                    New Features
+                </h2>
+
+                <ul>
+                    <li>[EXTJSIV-1936] - Make ComboBox work better with existing filters</li>
+                    <li>[EXTJSIV-2093] - Stateful Tree & Grid components do not fully restore state when in Border Layout</li>
+                </ul>
+
+                <h2>
+                    General Improvements
+                </h2>
+
+                <ul>
+                    <li>[EXTJSIV-141] - Fix all coding style violations</li>
+                    <li>[EXTJSIV-1321] - Feed Viewer's blogs list should be a Tree</li>
+                    <li>[EXTJSIV-1957] - Ext.resizer.Resizer widthIncrement addition</li>
+                    <li>[EXTJSIV-1999] - Themes Example Performance</li>
+                    <li>[EXTJSIV-2123] - Event options object secretly passed to every listener</li>
+                </ul>
+
+                <h2>
+                    Documentation Updates
+                </h2>
+
+                <ul>
+                    <li>[EXTJSIV-763] - Inadequate documentation for class AbsractPlugin</li>
+                    <li>[EXTJSIV-765] - Ext.resizer.ResizeTracker docs</li>
+                    <li>[EXTJSIV-780] - Ext.util.Grouper docs</li>
+                    <li>[EXTJSIV-781] - Ext.util.Region</li>
+                    <li>[EXTJSIV-1976] - Ext.app.Controller#control is undocumented</li>
+                    <li>[EXTJSIV-2103] - Fix missing sprite attribute property documentation</li>
+                    <li>[EXTJSIV-2134] - closeAction default is 'hide' but docs say it's 'destroy'</li>
+                    <li>[EXTJSIV-2348] - Layout Browser example API doc links are broken</li>
+                    <li>[EXTJSIV-2352] - constrainTo not documented on Ext.window.Window</li>
+                </ul>
+            </div>
+            
+            <div class="release">
+                <h1>
+                    Release Notes for Ext JS 4.0.1
+                </h1>
+                <p class="notes">
+                    Release Date: May 17, 2011<br>
+                    Version Number: 4.0.1
+                </p>
+                <h2>
+                    Bugs Fixed
+                </h2>
+
+                <ul>
+                    <li>Charts and Drawing
+                        <ul>
+                            <li>[EXTJSIV-144] - Grouped Stacked Negative 0 point not aligned properly</li>
+                            <li>[EXTJSIV-148] - Pie chart labels should be along the centerline of the text, not the baseline.</li>
+                            <li>[EXTJSIV-1769] - Draggable sprite broken</li>
+                            <li>[EXTJSIV-1811] - Problem with hiding items via legend with grouped bar chart</li>
+                            <li>[EXTJSIV-1822] - setAttributes - scale only works on first item</li>
+                            <li>[EXTJSIV-1878] - Line chart scaling incorrect</li>
+                            <li>[EXTJSIV-1892] - Pie chart is not rendering it's shadow properly on initial render</li>
+                        </ul>
+                    </li>
+
+                    <li>Panel
+                        <ul>
+                            <li>[EXTJSIV-237] - Vertical alignment of the Panel title is not consistent between quirks and strict HTML modes</li>
+                            <li>[EXTJSIV-963] - Vertical headers lack proper centering</li>
+                            <li>[EXTJSIV-1102] - When panel collapse animates, there's some flashing</li>
+                            <li>[EXTJSIV-1814] - Panel doesn't fire close event in TabPanel</li>
+                        </ul>
+                    </li>
+
+                    <li>Examples
+                        <ul>
+                            <li>[EXTJSIV-482] - Logos example has a few cosmetic issues</li>
+                            <li>[EXTJSIV-1001] - Form is missing in Safari 3.2 with form/form-grid-access.html</li>
+                            <li>[EXTJSIV-1083] - Themes Example: Progress bar doesn't show any text</li>
+                            <li>[EXTJSIV-1118] - Portal Drag and Drop IE 6 & 7</li>
+                            <li>[EXTJSIV-1121] - feed viewer - highlight on mouse over incorrect</li>
+                            <li>[EXTJSIV-1141] - Sliding Pager Extension Example: There's no Panel Resizing at the bottom of the grid</li>
+                            <li>[EXTJSIV-1142] - FeedViewer: apply sensible minWidth on feeds panel</li>
+                            <li>[EXTJSIV-1165] - Summary Grid: Need an Icon in the Panel</li>
+                            <li>[EXTJSIV-1172] - Grid Plugin Example: No Checkbox Plugin in the bottom example</li>
+                            <li>[EXTJSIV-1173] - Grid Filtering Local:  ID Column should have a smaller width</li>
+                            <li>[EXTJSIV-1180] - Rest proxy example - notification is missing when updating</li>
+                            <li>[EXTJSIV-1193] - Combo Box Example: State name Combo Boxes are too wide</li>
+                            <li>[EXTJSIV-1204] - Ext.Action Example should port the existing Action Example over</li>
+                            <li>[EXTJSIV-1211] - Double clicking in Manager Details header doesn't always open the combo box    </li>
+                            <li>[EXTJSIV-1460] - Panel resizer ux not working properly or styled correctly</li>
+                            <li>[EXTJSIV-1474] - Black background in desktop/desktop.html example in quirks mode</li>
+                            <li>[EXTJSIV-1481] - form/xml-form is broken in Safari 3.2 with transitional DOCTYPE</li>
+                            <li>[EXTJSIV-1496] - Desktop cascading doesn't set correct z index</li>
+                            <li>[EXTJSIV-1499] - Desktop example's accordion window does not react to clicking the refresh icon</li>
+                            <li>[EXTJSIV-1535] - Array grid example advertised as stateful. But it does not remember column state</li>
+                            <li>[EXTJSIV-1860] - Nested Loading example is using widget.header alias which is reserver for standard Panel Headers</li>
+                            <li>[EXTJSIV-1861] - Portal example is having to synchronously load Ext.layout.component.Body.</li>
+                            <li>[EXTJSIV-1919] - Error in charts/draw code on portal example</li>
+                            <li>[EXTJSIV-1922] - Error in grid multiple sorting example</li>
+                            <li>[EXTJSIV-1923] - Error on editor example</li>
+                            <li>[EXTJSIV-1924] - FormDashboard chart example fieldset is too short</li>
+                            <li>[EXTJSIV-1927] - Text rotation example missing text</li>
+                        </ul>
+                    </li>
+
+                    <li>Toolbars
+                        <ul>
+                            <li>[EXTJSIV-939] - Artifact in search toolbar only with Chrome 5</li>
+                            <li>[EXTJSIV-980] - Background color in bottom toolbar should be blue</li>
+                            <li>[EXTJSIV-1109] - disabled text color in buttons is too light</li>
+                            <li>[EXTJSIV-1865] - Toolbar with removeAll() crashes when used with overflow</li>
+                        </ul>
+                    </li>        
+
+                    <li>Layout
+                        <ul>
+                            <li>[EXTJSIV-1846] - Infinite loop, IE Border layout</li>
+                            <li>[EXTJSIV-1867] - Resizers on border layout do not constrain during drag</li>
+                            <li>[EXTJSIV-1931] - collapsedCls not applied in border layout</li>
+                            <li>[EXTJSIV-1845] - hideCollapseTool ignored in border layout/panel</li>
+                            <li>[EXTJSIV-1780] - Collapsing large grid in border layout fails</li>
+                        </ul>
+                    </li>
+
+                    <li>Windows
+                        <ul>
+                            <li>[EXTJSIV-1708] - Desktop example - windows don't move or resize</li>
+                            <li>[EXTJSIV-1737] - Opera 10.6: Windows cannot be moved vertically</li>
+                            <li>[EXTJSIV-1751] - Ext.Window Maximize doesnt account for browser window resize</li>
+                            <li>[EXTJSIV-1792] - Window fails with preventHeader: true</li>
+                            <li>[EXTJSIV-1945] - Window doesn't constrain properly when animating</li>
+                        </ul>
+                    </li>
+
+                    <li>Styling
+                        <ul>
+                            <li>[EXTJSIV-1269] - Checkbox in header does not line up with checkbox in the data rows</li>
+                            <li>[EXTJSIV-1271] - Arrow is not vertically centered in the overflow toolbar</li>
+                            <li>[EXTJSIV-1317] - Slightly rounded corners on menu item highlights</li>
+                            <li>[EXTJSIV-1322] - Window header color is different to 3.x</li>
+                            <li>[EXTJSIV-1417] - The text "Powered by" in logo is not legible</li>
+                            <li>[EXTJSIV-1516] - Menus are not in access-theme colors for the access example</li>
+                            <li>[EXTJSIV-1540] - Disabled buttons are really hard to read</li>
+                            <li>[EXTJSIV-1764] - Accessibility theme missing images</li>
+                            <li>[EXTJSIV-1841] - $panel-border-radius does not work</li>
+                            <li>[EXTJSIV-1825] - Button mixin in SASS is inconsistant with other UI mixins - quick fix</li>
+                            <li>[EXTJSIV-1826] - Window does not adhere to $base-color</li>
+                            <li>[EXTJSIV-1842] - 2 issues with button variables, not working correctly.</li>
+                            <li>[EXTJSIV-1851] - Errors when building template my-ext-theme.scss</li>
+                            <li>[EXTJSIV-1854] - Remove breaking comments from layout/_layout.scss</li>
+                            <li>[EXTJSIV-1862] - ui theme does not apply to window drag & drop proxy</li>
+                            <li>[EXTJSIV-1918] - Can't set overflow hidden on component style</li>
+                        </ul>
+                    </li>
+
+                    <li>Form
+                        <ul>
+                            <li>[EXTJSIV-1758] - Checkbox field does not report correct value</li>
+                            <li>[EXTJSIV-1775] - combo box autoSelect attribute non-functional</li>
+                            <li>[EXTJSIV-1781] - Combo Picker doesn't shift when window resizes</li>
+                            <li>[EXTJSIV-1798] - serializeForm tries to call .format</li>
+                            <li>[EXTJSIV-1809] - Html encoding issues on forms with standard submit</li>
+                            <li>[EXTJSIV-1834] - Keyup doesn't fire on combo</li>
+                            <li>[EXTJSIV-1838] - Checkbox getModelData incorrect</li>
+                            <li>[EXTJSIV-1839] - Fieldset doesn't render items when collapsed</li>
+                            <li>[EXTJSIV-1847] - Weird form field height display</li>
+                            <li>[EXTJSIV-1849] - Performance issues when adding multiple items to a form</li>
+                            <li>[EXTJSIV-1857] - Combo - Allow exclusion of queryParam</li>
+                            <li>[EXTJSIV-1869] - DisplayField alignment incorrect</li>
+                            <li>[EXTJSIV-1899] - field.Date refocuses on blur when picker is expanded</li>
+                            <li>[EXTJSIV-1902] - NumberField ignores disableKeyFilter</li>
+                            <li>[EXTJSIV-1942] - NumberField doesn't return number type when value is 0.</li>
+                            <li>[EXTJSIV-1943] - Checkbox should check for undefined uncheckedValue</li>
+                        </ul>
+                    </li>
+
+                    <li>Grid / Tree
+                        <ul>
+                            <li>[EXTJSIV-1689] - Selection model selectAll/deselectAll fire selectionchange event for every record</li>
+                            <li>[EXTJSIV-1757] - Grid loses row striping after editing</li>
+                            <li>[EXTJSIV-1762] - Grid: CellEditing problems destroying</li>
+                            <li>[EXTJSIV-1767] - ActionColumn fails when creating a global handler</li>
+                            <li>[EXTJSIV-1771] - Deselect doesnt fire in multi select mode</li>
+                            <li>[EXTJSIV-1773] - itemmousenter/itemmouseleave fire on every mouseover/mouseout event bubbled from *within* a View item</li>
+                            <li>[EXTJSIV-1778] - PropertyGrid crashes on destroy</li>
+                            <li>[EXTJSIV-1782] - PropertyGrid crashes when removing from store</li>
+                            <li>[EXTJSIV-1788] - Cell Editor doesn't update context</li>
+                            <li>[EXTJSIV-1794] - Crash when rootVisible false</li>
+                            <li>[EXTJSIV-1800] - RowNumberer incompatible with groupingSummary</li>
+                            <li>[EXTJSIV-1802] - Editor doesn't hide on grid scroll - FF</li>
+                            <li>[EXTJSIV-1819] - Grid in accordion layout doesn't show headers</li>
+                            <li>[EXTJSIV-1824] - PropertyGrid has no alias</li>
+                            <li>[EXTJSIV-1831] - Checkbox Selection model missing alias.</li>
+                            <li>[EXTJSIV-1848] - Row Editor doesn't work with grid filtering</li>
+                            <li>[EXTJSIV-1871] - PropertyGrid doesn't update source correctly</li>
+                            <li>[EXTJSIV-1872] - PropertyStore refers to wrong object</li>
+                            <li>[EXTJSIV-1875] - Tree doesn't allow string store id.</li>
+                            <li>[EXTJSIV-1881] - PreviewPlugin overwrites features</li>
+                            <li>[EXTJSIV-1926] - Safari: scrolling via wheel in grid also scrolls the page</li>
+                            <li>[EXTJSIV-1932] - NodeInterface callback params incorrect.</li>
+                            <li>[EXTJSIV-1939] - ProgressBar Pager fails with empty store</li>
+                            <li>[EXTJSIV-1958] - View DD contains redundant check</li>
+                        </ul>
+                    </li>
+
+                    <li>General
+                        <ul>
+                            <li>[EXTJSIV-988] - ToolTip/QuickTip steals shadow from modal window</li>
+                            <li>[EXTJSIV-1003] - Accessibility Theme has several glitches (IE9 Quirks)</li>
+                            <li>[EXTJSIV-1047] - Validation change steals focus in Safari (3.? and 4 at least)</li>
+                            <li>[EXTJSIV-1217] - Localization files are missing a bunch of strings - NL, DE, etc</li>
+                            <li>[EXTJSIV-1218] - Validation looks wrong in a frame panel with checkboxes</li>
+                            <li>[EXTJSIV-1295] - TextField focus method does not focus, DelayedTask at fault?</li>
+                            <li>[EXTJSIV-1510] - The close button in accordion does a refresh instead.</li>
+                            <li>[EXTJSIV-1528] - The previous/next buttons do not always un-focus after clicking on it and moving the mouse away</li>
+                            <li>[EXTJSIV-1562] - Collapse icon does not relocate after resizing the browser window</li>
+                            <li>[EXTJSIV-1648] - Checkbox selection doesn't fire selection change</li>
+                            <li>[EXTJSIV-1650] - Programmatically disabled before rendered prevents enabling </li>
+                            <li>[EXTJSIV-1654] - Using Quicktips on Frameset only page cause hard error</li>
+                            <li>[EXTJSIV-1736] - IE6 - Slider doesn't show up</li>
+                            <li>[EXTJSIV-1756] - Disabled text in forms have regressed in IE 6</li>
+                            <li>[EXTJSIV-1766] - Image Component crashes when rendered in IE</li>
+                            <li>[EXTJSIV-1779] - beforetabchange returning false doesn't stop tab changing.</li>
+                            <li>[EXTJSIV-1784] - Warn statements need to wrapped to check of the existence of the console</li>
+                            <li>[EXTJSIV-1790] - Observable shouldn't fail when removing an event that doesn't exist</li>
+                            <li>[EXTJSIV-1807] - Application fails when no controllers are specified</li>
+                            <li>[EXTJSIV-1813] - Store Can't read grouping info when specified on the class definition</li>
+                            <li>[EXTJSIV-1817] - Removed unused code: getSortState</li>
+                            <li>[EXTJSIV-1818] - NodeInterface destroy shadows Model destroy</li>
+                            <li>[EXTJSIV-1852] - JSBuilder doesn't build .jsb3 files correctly if using relative paths</li>
+                            <li>[EXTJSIV-1853] - JSBuilder not producing build correctly.</li>
+                            <li>[EXTJSIV-1856] - WebKit browsers lose selection in TEXTAREA elements</li>
+                            <li>[EXTJSIV-1864] - Store cannot set filters via prototype properties</li>
+                            <li>[EXTJSIV-1880] - Change autoCreateViewport to be false by default on Ext.app.App</li>
+                            <li>[EXTJSIV-1888] - Ext.Error.raise embeds an alert in IE or FF w/o Firebug (not good for many uses)</li>
+                            <li>[EXTJSIV-1889] - Splitter dragging doesn't work with iframes</li>
+                            <li>[EXTJSIV-1890] - Record raw property set too late</li>
+                            <li>[EXTJSIV-1895] - Ext.Array#include doesn't return anything, but docs say it does</li>
+                            <li>[EXTJSIV-1896] - Ext.data.Model#persistanceProperty should be spelled persistenceProperty</li>
+                        </ul>
+                    </li>
+                </ul>
+
+                <h2>Documentation Improvements</h2>
+
+                <ul>
+                    <li>[EXTJSIV-739] - Improved Ext.fx.Animator docs</li>
+                    <li>[EXTJSIV-751] - Improved Ext.grid.GridPanel docs</li>
+                    <li>[EXTJSIV-769] - Improved Ext.tip.ToolTip docs</li>
+                    <li>[EXTJSIV-1074] - Improved Ext.app.Controller docs</li>
+                    <li>[EXTJSIV-1227] - Improved Ext.chart.Mask</li>
+                    <li>[EXTJSIV-1229] - Added docs for Ext.grid.property.Grid</li>
+                    <li>[EXTJSIV-1238] - Add documentation to tabPanel private methods</li>
+                    <li>[EXTJSIV-1293] - Documented Store.removeAll</li>
+                    <li>[EXTJSIV-1421] - Documented the Organizer example</li>
+                    <li>[EXTJSIV-1433] - Better docs for Ext.app.Application</li>
+                    <li>[EXTJSIV-1891] - documented loadMask configuration property of Ext.Component and descendants</li>
+                    <li>[EXTJSIV-1894] - Documented Ext.draw.Sprite events not documented</li>
+                    <li>[EXTJSIV-1898] - Removed Ext.getModel from data guide</li>
+                    <li>[EXTJSIV-1901] - Documented Ext.CompositeElement documents methods without names</li>
+                    <li>[EXTJSIV-1903] - Bad reference to Ext.panel.Panel#frame for more documentation</li>
+                    <li>[EXTJSIV-1904] - Added missing image: guides/tree/simple-tree.png</li>
+                    <li>[EXTJSIV-43] - Documented the fact that attributes are transformed to model fields</li>
+                    <li>[EXTJSIV-1485] - SDK Bootstrapping Guide and Build Tools for Developers</li>
+                    <li>[EXTJSIV-1248] - More docs for Surface</li>
+                    <li>[EXTJSIV-1244] - Added docs for Gauge AXIS</li>
+                    <li>[EXTJSIV-1796] - Character Encoding issues on deployed docs</li>
+                    <li>[EXTJSIV-1906] - a typo / encoding issue in the getting started guide</li>
+                </ul>
+
+                <h2>General Improvements</h2>
+
+                <ul>
+                    <li>[EXTJSIV-1961] - Added callbackName option to Ext.data.JsonP.request</li>
+                    <li>[EXTJSIV-853] - Tooltips: Renamed initTarget to setTarget</li>
+                    <li>[EXTJSIV-1536] - Added a vertical toolbar example</li>
+                </ul>
+            </div>            
+            
+            <div class="release">
+                <h1>
+                    Release Notes for Ext JS 4.0 Final
+                </h1>
+                <p class="notes">
+                    Release Date: April 26, 2011<br>
+                    Version Number: 4.0.0
+                </p>
+                <h2>
+                    New In This Release
+                </h2>
+                <ul>
+                    <li>New Features
+                        <ul>
+                            <li>[EXTJSIV-919] - CheckHeader fires an additional change event</li>
+                            <li>[EXTJSIV-1291] - Charts draw undefined values</li>
+                            <li>[EXTJSIV-1352] - Floating should allow Component as an argument to alignTo</li>
+                        </ul>
+                    </li>
+                </ul>
+                <ul>
+                    <li>Bug Fixes
+                        <ul>
+                            <li>[EXTJSIV-2] - Normalize text baseline calculation for FireFox 3.0 and 3.5</li>
+                            <li>[EXTJSIV-495] - Forum search example - search does not work</li>
+                            <li>[EXTJSIV-513] - DragSelector does not maintain selection in IE</li>
+                            <li>[EXTJSIV-528] - Improve class loader performance</li>
+                            <li>[EXTJSIV-571] - autoHeight Box layouts</li>
+                            <li>[EXTJSIV-672] - Active tab has dark line beneath in access theme</li>
+                            <li>[EXTJSIV-697] - Element loses event Listener</li>
+                            <li>[EXTJSIV-788] - Grid in accordion layout displays scrollbars</li>
+                            <li>[EXTJSIV-820] - Ext.util.Format.usMoney is not inserting commas into the returned string</li>
+                            <li>[EXTJSIV-826] - When removing + then adding grid summary, it does not add x-grid-cell-first</li>
+                            <li>[EXTJSIV-860] - Row editing shadow issue</li>
+                            <li>[EXTJSIV-863] - IE Header menu issue</li>
+                            <li>[EXTJSIV-869] - Changing Collapsed Titles in a Border Layout</li>
+                            <li>[EXTJSIV-871] - form-grid example layout in IE6</li>
+                            <li>[EXTJSIV-873] - menu shows a small rectangle when it has no items</li>
+                            <li>[EXTJSIV-876] - Grid Menu allows hiding all columns</li>
+                            <li>[EXTJSIV-901] - updateRecord w/ radio group</li>
+                            <li>[EXTJSIV-902] - FieldContainer misses clearInvalid</li>
+                            <li>[EXTJSIV-910] - Need to know when Surface is rendered</li>
+                            <li>[EXTJSIV-912] - IE6 &amp; 7, FF4: Grid Header misaligned with the gridview</li>
+                            <li>[EXTJSIV-932] - Gauge series needs docs.</li>
+                            <li>[EXTJSIV-936] - Trigger field is not flushed using the access theme in IE 6 and 7</li>
+                            <li>[EXTJSIV-975] - Font styles are inconsistent across components</li>
+                            <li>[EXTJSIV-976] - TreeSelectionModel does not use checkbox images</li>
+                            <li>[EXTJSIV-977] - Ext.isFunction return true with a NodeList in Safari 3-4</li>
+                            <li>[EXTJSIV-979] - CSS styling wrong after collapsing Navigation panel</li>
+                            <li>[EXTJSIV-981] - Resizing failure with layout-browser.html --> Table</li>
+                            <li>[EXTJSIV-983] - Border line is missing beneath the grid header row</li>
+                            <li>[EXTJSIV-984] - Bottom scrollbar is not flushed with the right scrollbar</li>
+                            <li>[EXTJSIV-986] - Grid state does not save column width</li>
+                            <li>[EXTJSIV-993] - IE9 Strict Rendering issue with form.fieldset</li>
+                            <li>[EXTJSIV-994] - IE9 Strict Border layout issue</li>
+                            <li>[EXTJSIV-995] - IE7: Artifact in top-left corner of framed panel</li>
+                            <li>[EXTJSIV-996] - Field/Trigger placement in top toolbar needs to move down 1 pixel</li>
+                            <li>[EXTJSIV-999] - Both framing and flushing trigger button issues seen in IE 7</li>
+                            <li>[EXTJSIV-1000] - DatePicker Month title color is black</li>
+                            <li>[EXTJSIV-1002] - IE9 Strict Collapsible button in Ext.form.Fieldset aren't displayed correctly</li>
+                            <li>[EXTJSIV-1004] - Group header grid example is broken</li>
+                            <li>[EXTJSIV-1005] - Locking Grid Lock/Unlock throw an error</li>
+                            <li>[EXTJSIV-1007] - IE9 Strict - RowEditor scrolls the grid view when starting an edit</li>
+                            <li>[EXTJSIV-1008] - Splitter's calculated collapse directions are wrong. 'up' should be 'top', 'down' should be bottom.</li>
+                            <li>[EXTJSIV-1010] - Check/Radio example, white background</li>
+                            <li>[EXTJSIV-1011] - IE 9 Quirks Pie chart example Pie parts border issue</li>
+                            <li>[EXTJSIV-1012] - NumberField - Bottom trigger doesn't hover</li>
+                            <li>[EXTJSIV-1013] - IE9 Quirks Message Box Multi-line prompt: Input width is too large</li>
+                            <li>[EXTJSIV-1014] - ItemSelector button icons missing</li>
+                            <li>[EXTJSIV-1015] - IE9 Strict Tree Checkbox are not correctly positioned</li>
+                            <li>[EXTJSIV-1016] - Grey background on drag drop indicator on IE6</li>
+                            <li>[EXTJSIV-1017] - IE9 Drag and Drop in TreePanel does not work correctly</li>
+                            <li>[EXTJSIV-1020] - Clipping of letters in vertical header titles</li>
+                            <li>[EXTJSIV-1021] - IE9 Custom Styles progress bar doesn't show XP style</li>
+                            <li>[EXTJSIV-1022] - Wrong font for vertical header titles with IE 9</li>
+                            <li>[EXTJSIV-1023] - The minButtonWidth is applied to non-buttons in fbar</li>
+                            <li>[EXTJSIV-1025] - Tree shifts after expand/collapse animation in all IEs</li>
+                            <li>[EXTJSIV-1028] - Grid: Promote from Markup example doesn't work in IE6 &amp;7</li>
+                            <li>[EXTJSIV-1029] - Added an Associations example</li>
+                            <li>[EXTJSIV-1031] - draw/Logos Example the window is too big</li>
+                            <li>[EXTJSIV-1033] - Safari 5 Mac Tabs rendering glitch</li>
+                            <li>[EXTJSIV-1036] - Grid Window in Desktop example permanently loses scrollbars during window resize</li>
+                            <li>[EXTJSIV-1039] - IE 6 &amp;7 Only: After resizing flexed column very wide</li>
+                            <li>[EXTJSIV-1040] - statusbar/statusbar-demo.html toolbar items alignment issue</li>
+                            <li>[EXTJSIV-1042] - Clicking constrained windows does not bring constraining window to top</li>
+                            <li>[EXTJSIV-1044] - Gap between box elements in keynav example</li>
+                            <li>[EXTJSIV-1045] - examples/layout/snap-windows.html throws "Attempting to extend from a class which has not been loaded on the page."</li>
+                            <li>[EXTJSIV-1048] - Inaccurate lastComponentSize returned</li>
+                            <li>[EXTJSIV-1049] - Grid filters are lost when clicking Add Columns in Custom Grid Filters Example (local filtering)</li>
+                            <li>[EXTJSIV-1050] - Feedviewer "view post" has no margin/padding</li>
+                            <li>[EXTJSIV-1051] - Stateful grid doesn't work in IE6</li>
+                            <li>[EXTJSIV-1052] - Multi line message box doesn't show a scrollbar (IE6)</li>
+                            <li>[EXTJSIV-1054] - Portal dragging breaks</li>
+                            <li>[EXTJSIV-1055] - DataView dragged selection not applying in IE6</li>
+                            <li>[EXTJSIV-1056] - Adding more rows after scrolling to the bottom of grid view causes the row editor to disappear</li>
+                            <li>[EXTJSIV-1057] - Quickly trigger window show / hide while it's still animating screws layout / visibility checking</li>
+                            <li>[EXTJSIV-1058] - Resizing window while it's being masked does not resize the masking layer</li>
+                            <li>[EXTJSIV-1059] - Error using GridViewDragDrop plugin</li>
+                            <li>[EXTJSIV-1062] - Menu items don't layout to full width</li>
+                            <li>[EXTJSIV-1063] - Window.show() no longer does a toFront() as in 3.x</li>
+                            <li>[EXTJSIV-1064] - Vertical toolbar separators are vertical but should be horizontal.</li>
+                            <li>[EXTJSIV-1067] - Toolbar enableOverflow property not respected</li>
+                            <li>[EXTJSIV-1071] - Tree getRecords doesn't work correctly</li>
+                            <li>[EXTJSIV-1075] - collapseAll shouldn't collapse root if rootVisible is true</li>
+                            <li>[EXTJSIV-1076] - Possible missing variables</li>
+                            <li>[EXTJSIV-1078] - Shadows look odd on non-white backgrounds</li>
+                            <li>[EXTJSIV-1079] - Theme example is missing some components</li>
+                            <li>[EXTJSIV-1084] - Tab height/tabbar height is not consistent with 3.3</li>
+                            <li>[EXTJSIV-1085] - Tab panel and panel headers need to be the same size</li>
+                            <li>[EXTJSIV-1087] - API Change: Ext.tab.TabPanel renamed to Ext.tab.Panel</li>
+                            <li>[EXTJSIV-1088] - Toolbar Buttons when against the Left side of the gutter need more padding</li>
+                            <li>[EXTJSIV-1089] - In theme example, tree panel is not in the accordion panel</li>
+                            <li>[EXTJSIV-1091] - In theme example, paging toolbar does not display default page number</li>
+                            <li>[EXTJSIV-1092] - Grid Shifts on Header Trigger Click</li>
+                            <li>[EXTJSIV-1093] - Theme example: scrollable tab indicator is off by a pixel </li>
+                            <li>[EXTJSIV-1095] - Theme example - missing multi-trigger field inside GridPanel toolbar</li>
+                            <li>[EXTJSIV-1100] - Button config renders incorrectly - "submit" seems off center</li>
+                            <li>[EXTJSIV-1103] - Padding on toolbar buttons is two pixels at the bottom and one pixel at the top. Should be two pixels on both.</li>
+                            <li>[EXTJSIV-1104] - Framed panel does not have bottom border when headerPosition:top</li>
+                            <li>[EXTJSIV-1106] - iconCls not honored on Ext.grid.column.Action</li>
+                            <li>[EXTJSIV-1108] - pressed state buttons have a background in the corners?</li>
+                            <li>[EXTJSIV-1110] - Split button and menu button: Text and arrow have too much space in between</li>
+                            <li>[EXTJSIV-1111] - Error when using tab in Writer Example</li>
+                            <li>[EXTJSIV-1115] - FeedViewer Add Feed Window is too small</li>
+                            <li>[EXTJSIV-1116] - Accordion panel - accordion titles have more padding on bottom than top</li>
+                            <li>[EXTJSIV-1119] - In the list of examples, it's impossible to close a set of examples</li>
+                            <li>[EXTJSIV-1120] - Border Layout collapsed vertical header has dark black bold text</li>
+                            <li>[EXTJSIV-1122] - Feed View Looses Scroll Bar</li>
+                            <li>[EXTJSIV-1123] - Live Grid Search Example does not have screenshot</li>
+                            <li>[EXTJSIV-1125] - When changing feeds, tabs have the wrong size</li>
+                            <li>[EXTJSIV-1126] - RowEditor edging for buttons in IE</li>
+                            <li>[EXTJSIV-1128] - Feed viewer - add feed dialogue box is missing several elements</li>
+                            <li>[EXTJSIV-1129] - TextField 1px taller than other fields</li>
+                            <li>[EXTJSIV-1131] - Image Viewer Example: Unable to edit album names in the tree</li>
+                            <li>[EXTJSIV-1132] - Panel header has 1 pixel white on left and right</li>
+                            <li>[EXTJSIV-1136] - Paging Grid Example: JsonPProxy in the header isn't the name of the class in the code</li>
+                            <li>[EXTJSIV-1138] - Paging Example: disablePagingSelection:true is not respected</li>
+                            <li>[EXTJSIV-1139] - Portal example - if all components are in one column, cannot drag to 3rd column</li>
+                            <li>[EXTJSIV-1143] - Property grid does not have an indicator to show it's a property grid</li>
+                            <li>[EXTJSIV-1144] - Property Grid Example is too large -- should fit the size to make it look more like a property grid</li>
+                            <li>[EXTJSIV-1146] - Editor Grid Example: Clicking from Common Name in an editor to Light doesn't invoke an editor</li>
+                            <li>[EXTJSIV-1147] - Grid editing example - resizing the column while editing behaves incorrectly</li>
+                            <li>[EXTJSIV-1148] - Custom Grid Filters: Menu is lost on refresh of view</li>
+                            <li>[EXTJSIV-1150] - GroupTextTPL is not implemented</li>
+                            <li>[EXTJSIV-1153] - Row Editing: When editing a row, pixels are missing from the bottom left and bottom right box</li>
+                            <li>[EXTJSIV-1154] - Row Editing: Single click doesn't move the row editor</li>
+                            <li>[EXTJSIV-1155] - Row Editing plugin/example needs to be more like 3.3</li>
+                            <li>[EXTJSIV-1156] - Row Editing: Scrolling and row editor in the wrong place when clicking "Add Plant" </li>
+                            <li>[EXTJSIV-1160] - No loading indication when you open up a node</li>
+                            <li>[EXTJSIV-1161] - Empty Tree has +/- button</li>
+                            <li>[EXTJSIV-1163] - Grouped Grid Example: Missing Collapsable on the Panel and Clear Grouping on the bottom</li>
+                            <li>[EXTJSIV-1164] - Tool missing disabledCls</li>
+                            <li>[EXTJSIV-1166] - Summary Grid Example: Button needs to be fixed</li>
+                            <li>[EXTJSIV-1167] - Status bar example - clock shows up randomly when you start typing</li>
+                            <li>[EXTJSIV-1174] - Need a Remote Filtering Example</li>
+                            <li>[EXTJSIV-1175] - Grid Filtering Example: No Date Column</li>
+                            <li>[EXTJSIV-1176] - Clean up main example page</li>
+                            <li>[EXTJSIV-1177] - Grid Filtering Example: No Boolean Filtering</li>
+                            <li>[EXTJSIV-1179] - Data Writer example appears to not work</li>
+                            <li>[EXTJSIV-1181] - grouped header grid example - crash chrome when dragging a header into it's children</li>
+                            <li>[EXTJSIV-1183] - Grid Multiple Sorting is missing a splitter after sorting order</li>
+                            <li>[EXTJSIV-1185] - Tab Scroller Menu Plugin: Misalignment on top of overflow tabs</li>
+                            <li>[EXTJSIV-1186] - Message Box Confirm Dialog needs more spacing between Yes/No buttons</li>
+                            <li>[EXTJSIV-1188] - Tree Open Animation is incorrect</li>
+                            <li>[EXTJSIV-1190] - Incorrect default body padding?</li>
+                            <li>[EXTJSIV-1191] - Layout browser -> Center layout. Auto height not expanding to body contents</li>
+                            <li>[EXTJSIV-1192] - Complex Layout Example: On load, property grid is selected, but "A Tab" is rendered</li>
+                            <li>[EXTJSIV-1194] - In a combo box, hitting space inside combobox presents user with a big gray box</li>
+                            <li>[EXTJSIV-1195] - Need an Combo Box Example with Transforms</li>
+                            <li>[EXTJSIV-1196] - Combo with Templates and Ajax draws the searching box incorrectly on first load</li>
+                            <li>[EXTJSIV-1197] - Need an example of a fieldset side by side</li>
+                            <li>[EXTJSIV-1198] - Wrong Collapse Indicator in Checkbox Radio Groups</li>
+                            <li>[EXTJSIV-1199] - Bring Back Flash Component (if necessary)</li>
+                            <li>[EXTJSIV-1200] - Combobox in a Menu Dropdown is Flush with Left Edge</li>
+                            <li>[EXTJSIV-1201] - Submenu is Lost when Resizing Window</li>
+                            <li>[EXTJSIV-1203] - Ext.Action Example should port the existing Action Example over</li>
+                            <li>[EXTJSIV-1205] - Cannot read property 'afteredit' of undefined</li>
+                            <li>[EXTJSIV-1209] - Advanced DataView Example: Animation poofs, it doesn't zoom back to the grid when selecting an item</li>
+                            <li>[EXTJSIV-1210] - History Example doesn't work</li>
+                            <li>[EXTJSIV-1214] - Progress bar example needs a blue background</li>
+                            <li>[EXTJSIV-1216] - Panel Example "Panel as Child" is missing border for header in first child</li>
+                            <li>[EXTJSIV-1219] - Portal columns disappear when removing all portlets (regression)</li>
+                            <li>[EXTJSIV-1220] - Numeric Axis shows extra</li>
+                            <li>[EXTJSIV-1222] - Rename Ext.container.Viewport isViewPort property to isViewport</li>
+                            <li>[EXTJSIV-1223] - GroupGrid does not scroll if using paginggridscroller</li>
+                            <li>[EXTJSIV-1231] - ComboBox's bound list: Shadow persists when Store is filtered to zero matches and the list shrinks to zero height.</li>
+                            <li>[EXTJSIV-1232] - DatePicker as dropdown from a DateField should dismiss when you press ESC</li>
+                            <li>[EXTJSIV-1233] - API DOC Browser Class links issue</li>
+                            <li>[EXTJSIV-1235] - Testing: Ext.tip.Tip spec fails in IE6-8</li>
+                            <li>[EXTJSIV-1237] - Move Rob's framing command over to use jarred's new tool</li>
+                            <li>[EXTJSIV-1239] - Need to implement .x-small-editor sizing for form fields</li>
+                            <li>[EXTJSIV-1240] - Regression on rotated labels (check the area select example in test/ui)</li>
+                            <li>[EXTJSIV-1243] - Fix a bug where NodeInterface decorate would always override data fields in your Model, even if they already existed.</li>
+                            <li>[EXTJSIV-1245] - ComboBox selectOnTab does not work if the field has a value.</li>
+                            <li>[EXTJSIV-1246] - Accordion layout fails with hidden items</li>
+                            <li>[EXTJSIV-1247] - MessageBox doesn't work with animateTarget</li>
+                            <li>[EXTJSIV-1249] - Grid column resize indicators don't show when used inside border layout</li>
+                            <li>[EXTJSIV-1250] - Combo with no value returns empty array</li>
+                            <li>[EXTJSIV-1251] - Phantom records should not be added to removed</li>
+                            <li>[EXTJSIV-1252] - Border Layout collapseMode mini positioning incorrect</li>
+                            <li>[EXTJSIV-1253] - Tree needs checkchange event</li>
+                            <li>[EXTJSIV-1254] - Grouping needs to refresh the scroller on grid expand/collapse</li>
+                            <li>[EXTJSIV-1255] - MessageBox reacts to enter keypress even when hidden</li>
+                            <li>[EXTJSIV-1257] - Unable to control whether or not the checkbox is shown for certain rows with CheckboxModel</li>
+                            <li>[EXTJSIV-1258] - Setting border false on grid, headerCt still keeps borders</li>
+                            <li>[EXTJSIV-1260] - DirectProxy doesn't accept string paramOrder</li>
+                            <li>[EXTJSIV-1261] - Reconfigure breaks when used with locked columns</li>
+                            <li>[EXTJSIV-1263] - Window body is slightly different color than window frame</li>
+                            <li>[EXTJSIV-1264] - The grid-plugins example takes a long time in IE 6 to display the grids and scrollbars</li>
+                            <li>[EXTJSIV-1265] - Tabs are broken with draw/Logos.html in IE 8.0</li>
+                            <li>[EXTJSIV-1266] - Row Editing broken when not specifying an editor</li>
+                            <li>[EXTJSIV-1267] - Framing for the access example is broken in some browsers</li>
+                            <li>[EXTJSIV-1268] - Grouping Feature - Events provide no context, aren't fired on the grid</li>
+                            <li>[EXTJSIV-1272] - Add extra string methods to Ext.util.Format so they can be used with templates</li>
+                            <li>[EXTJSIV-1273] - Dragging and Dropping Panels in the Portal Example lose Tools</li>
+                            <li>[EXTJSIV-1274] - Identify and fix transitory Table View memory leak in IE6 &amp;IE7</li>
+                            <li>[EXTJSIV-1279] - Nested Windows not hiding themselves when floatParent (tab) hides.</li>
+                            <li>[EXTJSIV-1280] - Window that is a child of TabPanel doesn't get hidden when Tab is switched, not hiding itself when its floatParent hides.</li>
+                            <li>[EXTJSIV-1281] - DataView#ItemOver tracking does not always detect onItemMouseLeave</li>
+                            <li>[EXTJSIV-1282] - Specifying groupable:false on a column definition has no effect</li>
+                            <li>[EXTJSIV-1283] - Identify and Fix transient memory leak in the HtmlEditor</li>
+                            <li>[EXTJSIV-1284] - Borders are no longer correct.</li>
+                            <li>[EXTJSIV-1285] - Messagebox text not wrapping properly.</li>
+                            <li>[EXTJSIV-1286] - Fieldsets too large in HBox layout in Firefox</li>
+                            <li>[EXTJSIV-1288] - Chart axes and line not aligned</li>
+                            <li>[EXTJSIV-1289] - RowEditor - option to prevent moving editor to new row when there are pending changes</li>
+                            <li>[EXTJSIV-1290] - setClosable on Tab will not remove element</li>
+                            <li>[EXTJSIV-1292] - beforeshow recursion and error</li>
+                            <li>[EXTJSIV-1296] - Several tree examples are failing in IE (all versions)</li>
+                            <li>[EXTJSIV-1297] - Hard Error: Not implemented error seen with IE 8</li>
+                            <li>[EXTJSIV-1298] - ComboBox dropdown has horrible rendering artifacts in IE6</li>
+                            <li>[EXTJSIV-1299] - ComboBox triggerAction:'all' not working after list has been filtered</li>
+                            <li>[EXTJSIV-1301] - PropertyGrid throws error when editing</li>
+                            <li>[EXTJSIV-1303] - Model constructor needs to support array data</li>
+                            <li>[EXTJSIV-1304] - ButtonGroup styling is not perfect. issue with header</li>
+                            <li>[EXTJSIV-1305] - TreePanel.selectPath fails</li>
+                            <li>[EXTJSIV-1306] - RowEditing example - migrate 3.3 example so it is the same</li>
+                            <li>[EXTJSIV-1307] - RowEditing - make animation speed more like 3.3 by default</li>
+                            <li>[EXTJSIV-1308] - Sub-menu menu is not aligned properly</li>
+                            <li>[EXTJSIV-1309] - Menus are misaligned in buttons</li>
+                            <li>[EXTJSIV-1310] - Disabling form does not disable radios and check boxes</li>
+                            <li>[EXTJSIV-1311] - Tab scroller arrows are not correctly aligned</li>
+                            <li>[EXTJSIV-1312] - Central tab panel in the themes example has tabs that are too wide</li>
+                            <li>[EXTJSIV-1314] - Forum browser has 2px blue border on left edge of grid</li>
+                            <li>[EXTJSIV-1315] - Collapse icons disappear when moving a portlet</li>
+                            <li>[EXTJSIV-1316] - Panel expand icon is positioned 1px/2px too low</li>
+                            <li>[EXTJSIV-1318] - Gap between buttons in a window is too small</li>
+                            <li>[EXTJSIV-1319] - Locking grid borders are wrong</li>
+                            <li>[EXTJSIV-1323] - Menu Submenus can get out of alignment</li>
+                            <li>[EXTJSIV-1324] - Status Bar breaks easily</li>
+                            <li>[EXTJSIV-1325] - Status bar date too low</li>
+                            <li>[EXTJSIV-1326] - QuickTips close button missing a bottom border</li>
+                            <li>[EXTJSIV-1327] - Floater.js should not reopen a floating component based solely on its visible state prior to hiding its floatParent</li>
+                            <li>[EXTJSIV-1329] - Vertical header text in IE9 is the wrong font</li>
+                            <li>[EXTJSIV-1330] - RowEditor is missing panel frame corners on bottom left/right of buttons</li>
+                            <li>[EXTJSIV-1332] - Application.getController not using Ext.Loader</li>
+                            <li>[EXTJSIV-1333] - Locking grid doesn't get viewConfig from the GridPanel</li>
+                            <li>[EXTJSIV-1334] - Tip + Window issues</li>
+                            <li>[EXTJSIV-1335] - Stroke opacity in VML</li>
+                            <li>[EXTJSIV-1336] - RowExpander removes other features</li>
+                            <li>[EXTJSIV-1338] - Grid doesn't disable properly</li>
+                            <li>[EXTJSIV-1339] - Store needs clear event - should be fired after a removeAll</li>
+                            <li>[EXTJSIV-1340] - Area chart showing incorrect values</li>
+                            <li>[EXTJSIV-1341] - TabPanel without borders has odd looking headers</li>
+                            <li>[EXTJSIV-1342] - ColorPicker selected class not correct in CSS</li>
+                            <li>[EXTJSIV-1344] - Grid Editing with checkbox editor shows cell contents</li>
+                            <li>[EXTJSIV-1345] - Editor revertInvalid doesn't default to true like the docs say</li>
+                            <li>[EXTJSIV-1346] - Bad global variable detected by test reporter in AbstractComponent</li>
+                            <li>[EXTJSIV-1347] - Browser resizer interferes with textarea </li>
+                            <li>[EXTJSIV-1350] - RowEditor should disable its update button when there are validation errors</li>
+                            <li>[EXTJSIV-1353] - Desktop Example does not work with dynamic loader (only ext-all)</li>
+                            <li>[EXTJSIV-1354] - Can't assign idProperty when creating implicit fields</li>
+                            <li>[EXTJSIV-1355] - Can't destroy grid with DD</li>
+                            <li>[EXTJSIV-1356] - Collapsed grid crashes when expanded</li>
+                            <li>[EXTJSIV-1357] - Combo needs a hiddenName property</li>
+                            <li>[EXTJSIV-1358] - RowEditor - very quick grid view scroll prior to full rendering results in an error</li>
+                            <li>[EXTJSIV-1359] - Framed buttons (IE 6-8) lose their styles when focused or mouseovered</li>
+                            <li>[EXTJSIV-1361] - on tree.Panel the scroller element still has a border when bodyBorder is set to 0</li>
+                            <li>[EXTJSIV-1365] - Transparency is not working in the slicer tool</li>
+                            <li>[EXTJSIV-1367] - There is no styling for overflowHandler Scroller for Toolbar (used by Desktop example)</li>
+                            <li>[EXTJSIV-1371] - Radio buttons look like stars for the access theme</li>
+                            <li>[EXTJSIV-1372] - Tooltips with more than text configuration do not work reliably on Chrome, Safari and IE</li>
+                            <li>[EXTJSIV-1373] - Default window background is incorrect?</li>
+                            <li>[EXTJSIV-1374] - Button group needs more right margin</li>
+                            <li>[EXTJSIV-1376] - htmleditor font combo stays above all content in IE6 (only)</li>
+                            <li>[EXTJSIV-1377] - Grid column dropped into wrong place when inserting into a locked area</li>
+                            <li>[EXTJSIV-1378] - Locking grid: crashes when you drag a column to the first column index</li>
+                            <li>[EXTJSIV-1379] - Make upgrade guide clear that form submission must now use the API</li>
+                            <li>[EXTJSIV-1381] - Create a test for toolbars in every situation</li>
+                            <li>[EXTJSIV-1382] - Masking behavior not correct in theme viewer example</li>
+                            <li>[EXTJSIV-1383] - Vertical text is cut off if the panel is collapsed</li>
+                            <li>[EXTJSIV-1385] - Icon in tree has incorrect padding</li>
+                            <li>[EXTJSIV-1386] - Double triggers seem in example</li>
+                            <li>[EXTJSIV-1387] - Double pixel border on the left side of the accordion panel</li>
+                            <li>[EXTJSIV-1388] - Need to add a UI test to make sure a framed grid can have rounded corners</li>
+                            <li>[EXTJSIV-1393] - Pie chart needs to deal with 0 values</li>
+                            <li>[EXTJSIV-1394] - Portlet z-index issues when dragging</li>
+                            <li>[EXTJSIV-1395] - Tree doesn't setup all dependencies</li>
+                            <li>[EXTJSIV-1397] - Locking doesn't provide a centralized view</li>
+                            <li>[EXTJSIV-1399] - RowEditor buttons &amp;grid scroller have an issue in Opera 11.01 only</li>
+                            <li>[EXTJSIV-1400] - menu.Manager::get, variable undefined</li>
+                            <li>[EXTJSIV-1402] - Sprite doesn't clean up draggable</li>
+                            <li>[EXTJSIV-1403] - SplitButton - overArrow flag gets stuck</li>
+                            <li>[EXTJSIV-1404] - GridPanel should have getStore method</li>
+                            <li>[EXTJSIV-1405] - Button onMenuTriggerOver/Out is not accurate</li>
+                            <li>[EXTJSIV-1407] - RowNumberer - needs a better way to determine the row number</li>
+                            <li>[EXTJSIV-1408] - Organizer example: Dropping the same image into an album twice throws a hard error</li>
+                            <li>[EXTJSIV-1409] - RowEditor throws an error when starting a new edit after a previously failed validation</li>
+                            <li>[EXTJSIV-1410] - RowEditor must update its error summary tooltip for changes to the same field</li>
+                            <li>[EXTJSIV-1411] - Access theme needs image for number field trigger buttons</li>
+                            <li>[EXTJSIV-1416] - Adding a docked:top toolbar tp a headerPosition:right panel/window causes a bug</li>
+                            <li>[EXTJSIV-1418] - Inconsistent look for accordions header titles between browsers</li>
+                            <li>[EXTJSIV-1419] - Inconsistent direction from dark to light for gradient colors in the Logos example </li>
+                            <li>[EXTJSIV-1422] - TabPanel has incorrect bottom border</li>
+                            <li>[EXTJSIV-1423] - Divider line in toolbar is not vertically centered, also doesn't look correct</li>
+                            <li>[EXTJSIV-1426] - No gap between the accordion headers in Safari 4.0</li>
+                            <li>[EXTJSIV-1427] - GridEditing: Column to use editor, field or some other name</li>
+                            <li>[EXTJSIV-1429] - The >> button is not vertically centered in the overflow toolbar examples</li>
+                            <li>[EXTJSIV-1430] - overItemCls not working</li>
+                            <li>[EXTJSIV-1432] - Trailing comma in forum/forum.html example</li>
+                            <li>[EXTJSIV-1436] - Grid sorting icons slightly mispositioned</li>
+                            <li>[EXTJSIV-1438] - Grid column header text slightly mispositioned in all IEs</li>
+                            <li>[EXTJSIV-1439] - Window buttons have an ugly border in IE6 and IE7</li>
+                            <li>[EXTJSIV-1440] - Rest proxy doesn't respect api config</li>
+                            <li>[EXTJSIV-1441] - Vertical toolbar separators margin is incorrect. Seems to get more on the bottom</li>
+                            <li>[EXTJSIV-1442] - Uncaught TypeError: Cannot call method 'bringToFront' of undefined</li>
+                            <li>[EXTJSIV-1444] - Vertical toolbars need to have no margin on the bottom, not the right</li>
+                            <li>[EXTJSIV-1445] - li style disc not set when using styleHtmlContent</li>
+                            <li>[EXTJSIV-1446] - /core gets doubled up in the distributed package</li>
+                            <li>[EXTJSIV-1447] - Form DirectLoad callback fires twice</li>
+                            <li>[EXTJSIV-1448] - Borders need help</li>
+                            <li>[EXTJSIV-1449] - Grid Locking and Sorting not in SYNC FF4</li>
+                            <li>[EXTJSIV-1450] - Accordion bottom border incorrect</li>
+                            <li>[EXTJSIV-1451] - Legend renders incorrectly in Chart FF4.0</li>
+                            <li>[EXTJSIV-1452] - Drag and Drop broken in FF4 organizer example</li>
+                            <li>[EXTJSIV-1453] - Vertical header text in FF is the wrong font</li>
+                            <li>[EXTJSIV-1455] - theme example doesn't select a theme on first load, it seems.</li>
+                            <li>[EXTJSIV-1456] - ComboBox remains open after selection in grid cell editing</li>
+                            <li>[EXTJSIV-1457] - createBuffered ignores scope</li>
+                            <li>[EXTJSIV-1458] - File field crashes when you use disabled: true</li>
+                            <li>[EXTJSIV-1461] - Highlight on charts uses the same window shadow?</li>
+                            <li>[EXTJSIV-1462] - Legend doesn't renable a value FF4</li>
+                            <li>[EXTJSIV-1463] - Menu issues on FF when messing with charts</li>
+                            <li>[EXTJSIV-1464] - Flicker on Animation of Window Showing and incorrect initial position of windows</li>
+                            <li>[EXTJSIV-1465] - ComboBox in a menu does not react correctly</li>
+                            <li>[EXTJSIV-1466] - Leaves a menu up when using the color picker in an overflow</li>
+                            <li>[EXTJSIV-1467] - Status bar too short</li>
+                            <li>[EXTJSIV-1468] - Selection range implemented poorly</li>
+                            <li>[EXTJSIV-1469] - ComboBox with remote search example does not act intuitively</li>
+                            <li>[EXTJSIV-1470] - Remove Simple MVC example from examples</li>
+                            <li>[EXTJSIV-1475] - Vertical separators in toolbars are missing in quirks mode in IE (all versions)</li>
+                            <li>[EXTJSIV-1477] - Left border is missing in draw/Sencha.html example in strict/transitional modes in IE 6</li>
+                            <li>[EXTJSIV-1478] - Broken form/check-radio.html example in IE 6 &amp;7 in strict/transitional DOCTYPE modes</li>
+                            <li>[EXTJSIV-1479] - Zero top/bottom padding in toolbar for the search field -- all browsers affected</li>
+                            <li>[EXTJSIV-1482] - Ext.draw.CompositeSprite.setStyle problem</li>
+                            <li>[EXTJSIV-1483] - The forum/forum.html example is broken in IE 6 with strict/transitional DOCTYPEs</li>
+                            <li>[EXTJSIV-1486] - Tree header shows a 1px border when no column headers, works for grid</li>
+                            <li>[EXTJSIV-1487] - Toolbar separators are not visible in quirks.</li>
+                            <li>[EXTJSIV-1488] - Web Desktop needs to have a blue background</li>
+                            <li>[EXTJSIV-1489] - Desktop example windows don't open smoothly, can't be closed</li>
+                            <li>[EXTJSIV-1490] - Desktop example taskbar buttons not well aligned</li>
+                            <li>[EXTJSIV-1491] - Remove extra bordering on the grid window on Desktop example</li>
+                            <li>[EXTJSIV-1492] - Accordion text and border colors incorrect</li>
+                            <li>[EXTJSIV-1493] - Remove border around desktop's example's accordion window toolbar</li>
+                            <li>[EXTJSIV-1494] - Extra padding between cells in IE 6/7 (first grid) when using strict or transitional DOCTYPEs.</li>
+                            <li>[EXTJSIV-1495] - Desktop example accordion breaks layout</li>
+                            <li>[EXTJSIV-1497] - Desktop example's Notepad window has a double border</li>
+                            <li>[EXTJSIV-1498] - Desktop example's logo has too high z-index</li>
+                            <li>[EXTJSIV-1500] - Desktop example is not listed in the examples page</li>
+                            <li>[EXTJSIV-1505] - Menu doesn't fire deactivate</li>
+                            <li>[EXTJSIV-1506] - The theme viewer example is failing in Safari on Snow Leopard</li>
+                            <li>[EXTJSIV-1507] - Menu Checkbox hideOnClick</li>
+                            <li>[EXTJSIV-1508] - Accordion is broken in desktop example</li>
+                            <li>[EXTJSIV-1509] - Resizing the portal example fails in Safari on Snow Leopard</li>
+                            <li>[EXTJSIV-1512] - Drag &amp;Drop broken with the organizer example</li>
+                            <li>[EXTJSIV-1513] - Tabs are broken with Webkit in the key feed viewer example</li>
+                            <li>[EXTJSIV-1514] - Clicking on tabs creates a big dark-blue border box around it in Safari on Snow Leopard</li>
+                            <li>[EXTJSIV-1515] - Border line is missing for content area in new tabs</li>
+                            <li>[EXTJSIV-1517] - Scrollbar does not reappear after expanding a collapsed grid in example</li>
+                            <li>[EXTJSIV-1518] - Combo-box in Cell Editing Grid Example is Failing with Safari on Snow Leopard</li>
+                            <li>[EXTJSIV-1519] - Scrollbar disappears after unchecking "Show in Groups" and checking again "Show in Groups"</li>
+                            <li>[EXTJSIV-1520] - ZIndexManager: Dynamic Load depends on Ext.window.Window</li>
+                            <li>[EXTJSIV-1521] - Collapsing invisible root node of tree w/vertical scrollbar throws null reference exception</li>
+                            <li>[EXTJSIV-1525] - Previous pull-down menus do not unhighlight when clicking on the next one</li>
+                            <li>[EXTJSIV-1526] - Custom Grid Filters: Object doesn't support this property or method</li>
+                            <li>[EXTJSIV-1527] - The bottom toolbar in the Calendar component just doesn't look right</li>
+                            <li>[EXTJSIV-1529] - Height in toolbar is not tall enough to clearly show the icon after searching</li>
+                            <li>[EXTJSIV-1530] - Last row in charting tooltip is clipped</li>
+                            <li>[EXTJSIV-1531] - Blank spot seen in examples page with IE 8.0</li>
+                            <li>[EXTJSIV-1532] - Vertical header SVG element too small, clips text</li>
+                            <li>[EXTJSIV-1534] - x-column-header-open class not being removed from column header when column menu hides.</li>
+                            <li>[EXTJSIV-1538] - Scrollbar is missing when loading 20 items -- all items are clipped</li>
+                            <li>[EXTJSIV-1539] - Transparency is not working for panels on a gray background</li>
+                            <li>[EXTJSIV-1541] - Patient data is lost after drag &amp;drop and sorting on a grid column</li>
+                            <li>[EXTJSIV-1542] - Sencha icon on Desktop example has black underline (the shadow) in IE6-8</li>
+                            <li>[EXTJSIV-1543] - Panel acts like it has a X+Y value set when rendered in a autoScroll div</li>
+                            <li>[EXTJSIV-1547] - Buttons in DatePicker are not vertically centered -- has zero padding below the buttons</li>
+                            <li>[EXTJSIV-1548] - Custom Layout under Checkbox Groups is blank</li>
+                            <li>[EXTJSIV-1549] - Buttons do not unhighlight after clicking on them and moving the mouse away from it</li>
+                            <li>[EXTJSIV-1550] - Nested Panels not laying out child grids until resize occurs</li>
+                            <li>[EXTJSIV-1554] - The header looks bad after collapsing the window</li>
+                            <li>[EXTJSIV-1555] - Last column header needs right border</li>
+                            <li>[EXTJSIV-1556] - Remove Associations example from examples</li>
+                            <li>[EXTJSIV-1559] - Need to include appropriate video in Desktop example</li>
+                            <li>[EXTJSIV-1561] - Double borders initially, then single border when clicking on the next header</li>
+                            <li>[EXTJSIV-1562] - Collapse icon does not relocate after resizing the browser window</li>
+                            <li>[EXTJSIV-1563] - onReady Handling is Different than in 3.3</li>
+                            <li>[EXTJSIV-1565] - Tooltip is clipped for the Toolbar with Menus example</li>
+                            <li>[EXTJSIV-1566] - The close button has no effect on the panel</li>
+                            <li>[EXTJSIV-1571] - JS error in when deleting a row in restful example</li>
+                            <li>[EXTJSIV-1572] - Split buttons stay highlighted after clicking and moving the mouse away from it</li>
+                            <li>[EXTJSIV-1573] - Several border lines are missing in the feed-viewer example</li>
+                            <li>[EXTJSIV-1574] - emptyText in the fields are not vertically centered in IE 6/7/8</li>
+                            <li>[EXTJSIV-1575] - Right side of tab bar is not flushed in IE 7 &amp;IE 6</li>
+                            <li>[EXTJSIV-1576] - The grid header in the 2nd grid is taller than the header in the first grid</li>
+                            <li>[EXTJSIV-1578] - Double border-lines around frame</li>
+                            <li>[EXTJSIV-1579] - Double border-lines around bottom toolbar</li>
+                            <li>[EXTJSIV-1581] - Grid editor's input fields now have incorrect padding since a recent change to grid cell padding style.</li>
+                            <li>[EXTJSIV-1582] - Last grid in grid-plugins example should enable remove button if a row is selected.</li>
+                            <li>[EXTJSIV-1583] - Framed Panel's body border color wrong.</li>
+                            <li>[EXTJSIV-1584] - Horizontal splitter too tall in IE6</li>
+                            <li>[EXTJSIV-1585] - htmleditor body stays visible when containing window is minimized in IE6-8</li>
+                            <li>[EXTJSIV-1586] - Border line is missing beneath the panel header -- all browsers</li>
+                            <li>[EXTJSIV-1587] - Border line is missing above all three panel headers including sides -- all browsers</li>
+                            <li>[EXTJSIV-1588] - Tree in accordion window of desktop example has double border</li>
+                            <li>[EXTJSIV-1590] - Scatter chart doesn't render with a Time axis</li>
+                            <li>[EXTJSIV-1591] - IE6 tooltip width aren't calculated properly on ie6</li>
+                            <li>[EXTJSIV-1592] - Accordion items bottom border doesn't fit the accordion width  (IE6)</li>
+                            <li>[EXTJSIV-1594] - Scrollers at any level under a panel with no borders has no borders.</li>
+                            <li>[EXTJSIV-1596] - Organizer Example: the left tree panel must be scrollable</li>
+                            <li>[EXTJSIV-1597] - Modal layer does not block access to select elements on page n IE6</li>
+                            <li>[EXTJSIV-1598] - Ext.core.Element needs to be aliased to Ext.Element for backwards compability</li>
+                            <li>[EXTJSIV-1599] - MsgBox prompt right margin is almost nothing in IE6</li>
+                            <li>[EXTJSIV-1600] - Window always tries to call toFront on mousedown, even with floating:false</li>
+                            <li>[EXTJSIV-1602] - Link to new vertical toolbar example is broken in examples page</li>
+                            <li>[EXTJSIV-1604] - Row expander doesn't work with IE Quirk</li>
+                            <li>[EXTJSIV-1605] - Menu with single item has way too much bottom padding in IE6 and a little too much in IE8</li>
+                            <li>[EXTJSIV-1606] - Inaccurate Ext.Loader error message thrown when files have been loaded but the corresponding classes are not defined</li>
+                            <li>[EXTJSIV-1607] - StatusBar example clips iconCls in IE (all versions)</li>
+                            <li>[EXTJSIV-1608] - Mouse wheel scroll through expanded combo generates JS error in IE6 and IE7</li>
+                            <li>[EXTJSIV-1609] - Cell editing: When you move a column while you're editing an error is thrown and field is still visible</li>
+                            <li>[EXTJSIV-1610] - Grouping Header: Columns with flex 1 move bug</li>
+                            <li>[EXTJSIV-1611] - Header/Column alignment issue </li>
+                            <li>[EXTJSIV-1612] - Clicking in htmleditor of Notepad window in desktop example does not raise the window to the top</li>
+                            <li>[EXTJSIV-1613] - Bar Chart in Chrome renders bars below the axis</li>
+                            <li>[EXTJSIV-1614] - Double click on a bar chart keep it highlighted in Form Dashboard example</li>
+                            <li>[EXTJSIV-1616] - Body mask does not mask select input in IE6</li>
+                            <li>[EXTJSIV-1617] - IE6 resizable west handler height change only after resizing  </li>
+                            <li>[EXTJSIV-1619] - Slider shows duplicate tooltip</li>
+                            <li>[EXTJSIV-1620] - Items don't re-layout when expanded </li>
+                            <li>[EXTJSIV-1621] - Fix SVG and VML classes to match our naming conventions</li>
+                            <li>[EXTJSIV-1624] - Stack overflow (out of memory) reported by IE 6/7/8 with the portal example</li>
+                            <li>[EXTJSIV-1625] - Garbage Collector wrongly removes listeners for iframe document</li>
+                            <li>[EXTJSIV-1627] - Hard Error: Object has no method 'getField'</li>
+                            <li>[EXTJSIV-1628] - Support dynamic framing on IE.</li>
+                            <li>[EXTJSIV-1629] - disabled text in toolbar buttons don't look disabled in modern browsers (non-IE)</li>
+                            <li>[EXTJSIV-1633] - No padding (left/right) for text in document body</li>
+                            <li>[EXTJSIV-1636] - View source links get mixed when classes have same name</li>
+                            <li>[EXTJSIV-1639] - Statusbar steals focus</li>
+                            <li>[EXTJSIV-1642] - Boxreorderer crashes when mousing down on the toolbar</li>
+                            <li>[EXTJSIV-1644] - examples/app/simple/simple.html Editing window always stretch its width to 100% of the viewport in all IEs, but not other browsers.</li>
+                            <li>[EXTJSIV-1645] - Can't save a second time in writer example</li>
+                            <li>[EXTJSIV-1653] - Loader paths incorrect</li>
+                            <li>[EXTJSIV-1655] - Component animation not working</li>
+                            <li>[EXTJSIV-1661] - The Card (TabPanel)'s bar is shown having a white background. Normally is blue in this example</li>
+                            <li>[EXTJSIV-1662] - A borderline is shown falsely in the fit layout inside the layout-browser example</li>
+                            <li>[EXTJSIV-1663] - Ext.grid.Section not used</li>
+                            <li>[EXTJSIV-1664] - Grid sorting menus are grayed out -- doesn't look right</li>
+                            <li>[EXTJSIV-1670] - TemplateColumn doesn't use associated data</li>
+                            <li>[EXTJSIV-1671] - Listeners not cleared when setting null target</li>
+                            <li>[EXTJSIV-1673] - Grid window vscroll border off by 1 on right and bottom</li>
+                            <li>[EXTJSIV-1675] - Border line is seen in panels -- was never there before -- first time</li>
+                            <li>[EXTJSIV-1678] - Component animation, when animating only one size dimension throws "Warning, size detected as NaN on Element.addUnits."</li>
+                            <li>[EXTJSIV-1683] - Border lines are missing top and sides with examples/state/state.html</li>
+                            <li>[EXTJSIV-1684] - Field widths were the same before, not now with statusbar/statusbar-advanced.html</li>
+                            <li>[EXTJSIV-1685] - Form validation super slow</li>
+                            <li>[EXTJSIV-1687] - The supplied RowExpander's event are not very useful.</li>
+                            <li>[EXTJSIV-1688] - idProperty not working on ArrayReader</li>
+                            <li>[EXTJSIV-1690] - Grid scrollbars have double border</li>
+                            <li>[EXTJSIV-1691] - Configuring tooltips on line chart with trackMouse: false throws error</li>
+                            <li>[EXTJSIV-1692] - Hard Error: New desktop example.  Click on About Ext JS in start menu in IE 8 and then close the video window</li>
+                            <li>[EXTJSIV-1693] - Main example pointer page needs to be updated</li>
+                            <li>[EXTJSIV-1695] - Desktop example - accordion widow hit the refresh while collapsed</li>
+                            <li>[EXTJSIV-1697] - Desktop example - in notepad, increase/decrease font only works 1 time</li>
+                            <li>[EXTJSIV-1698] - Desktop example - in notepad, font color/background doesn't work</li>
+                            <li>[EXTJSIV-1699] - Theme example - toggle enable button doesn't look disabled</li>
+                            <li>[EXTJSIV-1700] - About window - open more than one time</li>
+                            <li>[EXTJSIV-1701] - Mask should not displayed in collapsed panel</li>
+                            <li>[EXTJSIV-1702] - Theme viewer needs to reload when changing to access theme</li>
+                            <li>[EXTJSIV-1704] - Selecting a tree node throws an error</li>
+                            <li>[EXTJSIV-1705] - Dragging multiple elements in organizer example does not work in IE7</li>
+                            <li>[EXTJSIV-1706] - Portal example - moving the portlet is really slow</li>
+                            <li>[EXTJSIV-1710] - Fix accessibility theme</li>
+                            <li>[EXTJSIV-1714] - Grid row editing is completely broken</li>
+                            <li>[EXTJSIV-1718] - RowEditor display broken</li>
+                            <li>[EXTJSIV-1721] - Grid plugin example - select all, down arrow, throws exception</li>
+                            <li>[EXTJSIV-1722] - Date picker - typing text into date field throws exception </li>
+                            <li>[EXTJSIV-1724] - Key feed viewer throws exception at loading. IE6 only</li>
+                            <li>[EXTJSIV-1728] - Ext Toolbar Action Example - Change Text throws exception</li>
+                            <li>[EXTJSIV-1731] - Window drag/drop leaks iframe shim in IE 6.0</li>
+                            <li>[EXTJSIV-1741] - Sliding pager does not display in IE6</li>
+                            <li>[EXTJSIV-1742] - Missing "-debug" in regex check of ext-debug.js</li>
+                            <li>[EXTJSIV-1744] - ZINdexManager: unregister this.list is null</li>
+                            <li>[EXTJSIV-1748] - MessageBoxWindow autosizing probably needs a fudge factor to avoid unwanted word wrapping.</li>
+                        </ul>
+                    </li>
+                </ul>
+                <ul>
+                    <li>Enhancements
+                        <ul>
+                            <li>[EXTJSIV-174] - Implement getChecked on TreeView and TreePanel as soon as Tree filtering is implemented.</li>
+                            <li>[EXTJSIV-854] - Improve chart renderer API</li>
+                            <li>[EXTJSIV-904] - Optimization to make Component tpls not be compiled until needed</li>
+                            <li>[EXTJSIV-1112] - Consider cleaning up the panel/panel example, bad examples</li>
+                            <li>[EXTJSIV-1256] - Improve performance of loading big trees. Support appending and inserting parents with inline children.</li>
+                            <li>[EXTJSIV-1262] - Rename insert to insertChild on NodeInterface for consistency.</li>
+                            <li>[EXTJSIV-1351] - Initial hidden config doesn't hide tab</li>
+                            <li>[EXTJSIV-1364] - Support folderSort on TreePanel. Support passing a store configuration.</li>
+                            <li>[EXTJSIV-1380] - When extending, the requires config doesn't accept wildcards.</li>
+                            <li>[EXTJSIV-1412] - Add beforedestroy and destroy events to Sprites</li>
+                            <li>[EXTJSIV-1413] - Document remove/removeAll methods in Surface.  Add optional boolean to destroy sprites upon removal.</li>
+                            <li>[EXTJSIV-1414] - draggable option on a Sprite will now call initDraggable when it is added to a surface.</li>
+                            <li>[EXTJSIV-105] - Added Bubble Panel Example</li>
+                            <li>[EXTJSIV-117] - Added Web Desktop Example</li>
+                            <li>[EXTJSIV-218] - Theme Builder / Page Slicer - Packaged for Windows, OS X, and Linux</li>
+                            <li>[EXTJSIV-221] - Fixed transitory XHR memory leak in IE6 &amp; IE7</li>
+                            <li>[EXTJSIV-839] - Created App Builder script</li>
+                            <li>[EXTJSIV-875] - JSON.decode "safe" mode implemented</li>
+                            <li>[EXTJSIV-1234] - Panel implements iconchange event</li>
+                            <li>[EXTJSIV-1275] - Ext.tab.TabBar renamed to Ext.tab.Bar</li>
+                            <li>[EXTJSIV-1276] - Ext.AbstractDataView renamed to Ext.view.AbstractView and Ext.DataView renamed to Ext.view.View</li>
+                            <li>[EXTJSIV-1277] - Ext.AbstractContainer renamed to Ext.container.AbstractContainer and Ext.AbstractPanel renamed to Ext.panel.AbstractPanel</li>
+                            <li>[EXTJSIV-1363] - Package EXT JS 4 SDK Tools download for all OSes</li>
+                            <li>[EXTJSIV-1389] - Generated distributable binaries for PhantomJS that work cross-platform</li>
+                            <li>[EXTJSIV-1415] - The remove method on a sprite will now only remove it from a surface.  The destroy method will no longer remove and destroy the sprite.</li>
+                            <li>[EXTJSIV-1603] - New thumbnail for the Tree Selections example</li>
+                        </ul>
+                    </li>
+                </ul>
+                <ul>
+                    <li>Documentation Improvements
+                        <ul>
+                            <li>[EXTJSIV-724] - Ext.data.NodeStore docs</li>
+                            <li>[EXTJSIV-729] - Ext.direct.Event docs</li>
+                            <li>[EXTJSIV-730] - Ext.direct.ExceptionEvent docs</li>
+                            <li>[EXTJSIV-731] - Ext.direct.JsonProvider docs</li>
+                            <li>[EXTJSIV-732] - Ext.direct.RemotingEvent docs</li>
+                            <li>[EXTJSIV-733] - Ext.direct.RemotingMethod docs</li>
+                            <li>[EXTJSIV-734] - Ext.draw.Component docs</li>
+                            <li>[EXTJSIV-735] - Ext.draw.Sprite docs</li>
+                            <li>[EXTJSIV-736] - Ext.draw.SpriteGroup docs</li>
+                            <li>[EXTJSIV-737] - Ext.draw.Surface docs</li>
+                            <li>[EXTJSIV-738] - Ext.fx.Anim docs</li>
+                            <li>[EXTJSIV-740] - Ext.fx.Easing docs</li>
+                            <li>[EXTJSIV-741] - Ext.grid.column.Column docs</li>
+                            <li>[EXTJSIV-742] - Ext.grid.column.Template docs</li>
+                            <li>[EXTJSIV-744] - Ext.grid.feature.Feature docs</li>
+                            <li>[EXTJSIV-745] - Ext.grid.feature.Grouping docs</li>
+                            <li>[EXTJSIV-746] - Ext.grid.feature.GroupingSummary docs</li>
+                            <li>[EXTJSIV-747] - Ext.grid.feature.Summary docs</li>
+                            <li>[EXTJSIV-749] - Ext.grid.ColumnLayout docs</li>
+                            <li>[EXTJSIV-752] - Ext.grid.GridView docs</li>
+                            <li>[EXTJSIV-756] - There is no class documentation for "version". </li>
+                            <li>[EXTJSIV-757] - Inadequate documentation for ModelMgr</li>
+                            <li>[EXTJSIV-758] - Ext.layout.container.Anchor docs</li>
+                            <li>[EXTJSIV-759] - Inadequate documentation for ComponentLoader </li>
+                            <li>[EXTJSIV-764] - Ext.panel.Tool docs</li>
+                            <li>[EXTJSIV-770] - Inadequate documentation in util.route</li>
+                            <li>[EXTJSIV-776] - Ext.util.Cookies docs</li>
+                            <li>[EXTJSIV-779] - Ext.util.Format docs</li>
+                            <li>[EXTJSIV-782] - Ext.util.Stateful docs</li>
+                            <li>[EXTJSIV-783] - Ext.view.TableView docs</li>
+                            <li>[EXTJSIV-1068] - Links in the tree link to 404 pages</li>
+                            <li>[EXTJSIV-1069] - Link back to doc index</li>
+                            <li>[EXTJSIV-1070] - Ext.app.Application.autoCreateViewport type</li>
+                            <li>[EXTJSIV-1077] - Link bad in Ext.grid.feature.GroupingSummary</li>
+                            <li>[EXTJSIV-1221] - Error in example in Ext.grid.RowNumberer Doc</li>
+                            <li>[EXTJSIV-1224] - Architecture &amp; MVC Guide, links are not created</li>
+                            <li>[EXTJSIV-1225] - Class System Guide has PI wrong</li>
+                            <li>[EXTJSIV-1226] - Class tree not loading</li>
+                            <li>[EXTJSIV-1228] - Search for Panel does not show Ext.grid.Panel</li>
+                            <li>[EXTJSIV-1230] - Search for 'quick' results in old Ext.tip.QuickTips also</li>
+                            <li>[EXTJSIV-1241] - Fix misc documentation issues</li>
+                        </ul>
+                    </li>
+                </ul>
+            </div>        
+            
+            
+            <div class="release">
+                <h1>
+                    Release Notes for Ext JS 4 Beta 3
+                </h1>
+                <p class="notes">
+                    Release Date: April 14, 2011<br>
+                    Version Number: 4.0.0beta3
+                </p>
+                <h2>
+                    New In This Release
+                </h2>
+                <ul>
+                    <li>New Examples
+                        <div style="margin-left: 2em">
+                            <ul>
+                                <li>
+                                    <a href="examples/app/feed-viewer/feed-viewer.html">MVC Feed Viewer</a>
+                                </li>
+                                <li>
+                                    <a href="examples/app/nested-loading/nested-loading.html">MVC Nested Data</a>
+                                </li>
+                                <li>
+                                    <a href="examples/data/associations.html">Lazy Loading Data Associations</a>
+                                </li>
+                                <li>
+                                    <a href="examples/grid/property.html">Property Grid</a>
+                                </li>
+                                <li>
+                                    <a href="examples/grid/transform-dom.html">HTML Table to ExtJS Grid</a>
+                                </li>
+                            </ul>
+                        </div>
+                    </li>
+                </ul>
+                <ul>
+                    <li>Bug Fixes
+                        <ul>
+                            <li>[EXTJSIV-664][EXTJSIV-645] Fix Organizer and GroupTabs examples
+                            </li>
+                            <li>Header icon and vertical title text should no longer be focusable
+                            </li>
+                            <li>[EXTJSIV-550] Fix Column layout to accurately arrange columns, taking scrollbars into account
+                            </li>
+                            <li>Fixed inheritableStatics for full inheritance tree
+                            </li>
+                            <li>Removed focus line from buttons in IE
+                            </li>
+                            <li>[EXTJSIV-177] Fixed disabled toolbar buttons
+                            </li>
+                            <li>[EXTJSIV-676] Removed icon cls's from buttons in themes examples
+                            </li>
+                            <li>Add additional CSS class when border is set to false for the HeaderContainer
+                            </li>
+                            <li>[EXTJSIV-650] Fix double border issue with tree items
+                            </li>
+                            <li>[EXTJSIV-696] TreeStore nodes no longer use a fixed id
+                            </li>
+                            <li>[EXTJSIV-688] Fixed focus issue with datepicker
+                            </li>
+                            <li>[EXTJSIV-683] Fixed collapsed vertical panel header image
+                            </li>
+                            <li>[EXTJSIV-678] Fixed css issue with the history example
+                            </li>
+                            <li>[EXTJSIV-603] Work around the brutal IE9 Strict mode subpixel rounding bug which can cause wrapping issues (similar to https://bugzilla.mozilla.org/show_bug.cgi?id=458617)
+                            </li>
+                            <li>[EXTJSIV-700] XTemplate should now handle dot (.) syntax for date objects as well. Since a date will yield a typeof of "object", we can't distinguish it from other "object" types; so we use the object prototype toString, in Ext.isDate
+                            </li>
+                            <li>[EXTJSIV-671] TablePanel will not stop the mousewheel browser event when its reached the end of the scroll height/width. Also, the grid will only scroll when scrolling above the scroller and the view (not the headers, panel header, etc.)
+                            </li>
+                            <li>[EXTJSIV-677] Editor shouldn't be hiding/showing its field, merely itself. This fixes positioning issues as well as the editor being still visible and floating over content, making it impossible to click to the things underneath of it
+                            </li>
+                            <li>[EXTJSIV-702] RowEditor should vertically align itself to a row based on its y offset to its top-most static parent, not just its immediate parent (table)
+                            </li>
+                            <li>[EXTJSIV-704] Prevent duplicate tabchange events from firing
+                            </li>
+                            <li>[EXTJSIV-705] Fix problem with Shadow class calculations
+                            </li>
+                            <li>[EXTJSIV-706] Fix issue when destroying a grid
+                            </li>
+                            <li>[EXTJSIV-698] Prevent error in WebKit when destroying a HtmlEditor if its iframe has already been removed from the document
+                            </li>
+                            <li>[EXTJSIV-713] TableView now only makes the table unselectable, not the entire gridview element
+                            </li>
+                            <li>[EXTJSIV-442] Allow scrolling of the locked section of locked Grids/Trees
+                            </li>
+                            <li>[EXTJSIV-720] Series now follows the standard Observable mixin pattern
+                            </li>
+                            <li>[EXTJSIV-603] Fix Ext.core.Element createChild to support table first child insertion in IE
+                            </li>
+                            <li>[EXTJSIV-789] Fix issue with window hide callback scope
+                            </li>
+                            <li>[EXTJSIV-790] Fix an issue with not being able to specify a cls on a tree
+                            </li>
+                            <li>Fixed the checkChangeEvents in IE6
+                            </li>
+                            <li>[EXTJSIV-682] Remove a Gecko 3 hack that is no longer necessary
+                            </li>
+                            <li>[EXTJSIV-689] Fix bug in OS X where grid/tree scrollers would stop responding.
+                            </li>
+                            <li>[EXTJSIV-648][EXTJSIV-684] Auto-width fields must set the width of their outer element to match the total width of their internal contents, to prevent wrapping of the pieces during layout operations which would cause calculated heights to be too tall. Re-added the getBodyNaturalWidth method to support this, and changed the implementations where possible to avoid querying element sizes for optimum speed
+                            </li>
+                            <li>[EXTJSIV-709] Grid row height will be preserved even if the row is empty
+                            </li>
+                            <li>[EXTJSIV-804] Fix cycle button initial positioning in example
+                            </li>
+                            <li>[EXTJSIV-710] Fix ItemSelector button behaviours
+                            </li>
+                            <li>[EXTJSIV-797] Handle forceSelection in multiSelect ComboBoxes
+                            </li>
+                            <li>[EXTJSIV-675] Grid and Tree will now remove/add the scrollOffset spacing when it is necessary
+                            </li>
+                            <li>[EXTJSIV-817] Fix TablePanel applyState to not setWidth on an unrendered component
+                            </li>
+                            <li>[EXTJSIV-192] Allow button layout to run when its text has changed; this allows min/maxWidth to be applied based on the new text length
+                            </li>
+                            <li>[EXTJSIV-553] Fix dragging out of group header
+                            </li>
+                            <li>[EXTJSIV-275] Fixed position of monthpicker on datepicker
+                            </li>
+                            <li>[EXTJSIV-802] Fix Summary Grid Example padding
+                            </li>
+                            <li>[EXTJSIV-826] Ensure that x-grid-cell-first and x-grid-cell-last css classes are added to the TableView markup at creation time
+                            </li>
+                            <li>[EXTJSIV-590] Infinite Scrolling can now scroll all the way to the bottom in IE9 strict mode
+                            </li>
+                            <li>[EXTJSIV-822] Support unstyled configuration on Panel
+                            </li>
+                            <li>[EXTJSIV-833] Fix bug where old selection would jump into focus when performing a multi select on a dataview/grid/tree that was out of view
+                            </li>
+                            <li>[EXTJSIV-808] Increase default css button padding (6px)
+                            </li>
+                            <li>[EXTJSIV-809] Add Ext.ns() to the Ext.direct remoting echo
+                            </li>
+                            <li>[EXTJSIV-828] Fix issue when dragging/dropping onto the same grid
+                            </li>
+                            <li>[EXTJSIV-841] Fix duplicate method name in plugin
+                            </li>
+                            <li>[EXTJSIV-842] When show is called on the tab, set it to active. Also ensure listeners are cleaned up when the tab is removed
+                            </li>
+                            <li>[EXTJSIV-850] Fix issue when using treenode with leaf: false and children
+                            </li>
+                            <li>[EXTJSIV-635] Prevent two LoadMask indicators showing up when using the Locking plugin and dynamic loading
+                            </li>
+                            <li>Fix a bug in ComponentQuery.query.is method where it would start searching within a root for a query that contained the root itself
+                            </li>
+                            <li>[EXTJSIV-801] Fixed issue with rotated axis text
+                            </li>
+                            <li>[EXTJSIV-11] Made vertical heights and spacing of form fields consistent in all browsers
+                            </li>
+                            <li>[EXTJSIV-846] Fix combineErrors option in FieldContainer, and prevent prepending of colon to errors for fields without a fieldLabel
+                            </li>
+                            <li>[EXTJSIV-825] Fix issue with grouptabs titles seen with IE 7
+                            </li>
+                            <li>[EXTJSIV-819] Fixed auto-height sizing in Body component layout
+                            </li>
+                            <li>[EXTJSIV-820] Fix issue with Ext.util.Format.usMoney not inserting commas into the returned string
+                            </li>
+                            <li>[EXTJSIV-862] Fix up shadow/positioning issues in the data view editor example
+                            </li>
+                            <li>[EXTJSIV-876] Fix an issue where all grid columns can be hidden via the menu
+                            </li>
+                            <li>[EXTJSIV-879] Move sync to be the last operation for add/remove methods on the store
+                            </li>
+                            <li>[EXTJSIV-640] Ensure we keep track of the number of fields in the reader. Since the tree decorates the model, it can cause problems when running the extractor functions
+                            </li>
+                            <li>[EXTJSIV-857] Fix Window autoShow
+                            </li>
+                            <li>[EXTJSIV-577] Fix up styling to prevent unneeded scrollbar
+                            </li>
+                            <li>[EXTJSIV-234] Fix up margins on DatView example
+                            </li>
+                            <li>Fix issues with the file upload example
+                            </li>
+                            <li>[EXTJSIV-649] Work around quirks mode inability to display margins
+                            </li>
+                            <li>[EXTJSIV-837] Fixed Tab Scroller Menu Plugin improper access to class prototype from an instance
+                            </li>
+                            <li>[EXTJSIV-883] Fix all examples which references setIconClass to setIconCls
+                            </li>
+                            <li>[EXTJSIV-639] Workaround for IE's inability to size position:absolute elements to their content width
+                            </li>
+                            <li>[EXTJSIV-849] Fixes for editable:false state on ComboBox and other Picker fields
+                            </li>
+                            <li>[EXTJSIV-890] Fix toolbar separator in Direct example
+                            </li>
+                            <li>[EXTJSIV-796] Dock layouts within a fit layout will now properly layout
+                            </li>
+                            <li>[EXTJSIV-867] Fix bug where injected grouping menu would be lost after a refresh of the Grid
+                            </li>
+                            <li>[EXTJSIV-1] Fix SVG rendering bug in Safari 3.2
+                            </li>
+                            <li>[EXTJSIV-914] Fix bug where attempting to sort a header with no dataIndex would throw an error
+                            </li>
+                            <li>[EXTJSIV-871] Fix GridPanel to only add its View after the Grid has achieved its final laid out size
+                            </li>
+                            <li>[EXTJSIV-892] Added workaround for persistent button element padding in Windows Safari
+                            </li>
+                            <li>[EXTJSIV-905] Fixed handling of file upload fields to allow uploads across multiple submits
+                            </li>
+                            <li>[EXTJSIV-843] Fix masking on containers with layout auto
+                            </li>
+                            <li>[EXTJSIV-906] Ensure the snapshot is kept up to date when receiving a response from the server
+                            </li>
+                            <li>[EXTJSIV-908] Ensure filtering is set when there's at least one filter
+                            </li>
+                            <li>[EXTJSIV-371] Fix CellEditing tab navigation in WebKit
+                            </li>
+                            <li>[EXTJSIV-639] Take frame size into account when sizing vertical docks according to content
+                            </li>
+                            <li>[EXTJSIV-921] Fix vertical centering of multi-line button text
+                            </li>
+                            <li>[EXTJSIV-930] Fix validation of Number field when changing from an invalid string to an empty string
+                            </li>
+                            <li>[EXTJSIV-902] Add markInvalid and clearInvalid methods to Ext.form.Field mixin interface; implement them in CheckboxGroup to prevent errors when Ext.form.Basic tries to call them
+                            </li>
+                            <li>[EXTJSIV-909] Fix marker strokes disappearing on highlight
+                            </li>
+                            <li>[EXTJSIV-954] Fixed issue when using disabled: true in a Slider config
+                            </li>
+                            <li>[EXTJSIV-870] Fixed forceSelection so that it re-selects the last selection rather than clearing the value when the entered value does not match. Fixed remote stores so that the combobox's value is not cleared when the store loads.
+                            </li>
+                            <li>[EXTJSIV-931] The findRecord method now does an exact search rather than substring search
+                            </li>
+                            <li>[EXTJSIV-962] Ext.Direct grid money column align: 'right'.
+                            </li>
+                            <li>[EXTJSIV-940] Make the button layout's test for html tags in button text a little smarter. Fixes error in LiveSearchGridPanel in IE6
+                            </li>
+                            <li>[EXTJSIV-639] Fix for panel collapse left/right when frame is true
+                            </li>
+                            <li>[EXTJSIV-872] MessageBox Window prompt now processes the "OK" button when you press return in the prompt field
+                            </li>
+                            <li>The setSrc now correctly changes the src attribute of the dom property of the Et.core.Element
+                            </li>
+                            <li>[EXTJSIV-918] RowExpander will not select rows when expanding via the icon by default. This is configurable via the selectRowOnExpand configuration. Fixed a bug with expandOnDblClick configuration
+                            </li>
+                            <li>[EXTJSIV-964] Resizable Panels are no longer resizable when they are collapsed
+                            </li>
+                            <li>[EXTJSIV-144] Fix issue with stacked negative bar/column chart axis
+                            </li>
+                            <li>[EXTJSIV-948] Disable rendering of sprites into the surface if they are not attached to a surface yet
+                            </li>
+                            <li>[EXTJSIV-969] roundToDecimal has to be explicitly set to false in order to render non numbers in a Numeric axis
+                            </li>
+                            <li>Decouple Ext.Function.createBuffered from Ext.util.DelayedTask
+                            </li>
+                            <li>[EXTJSIV-946] Fix an issue where cursors where still being displayed on resizable handles, even if they were disabled
+                            </li>
+                            <li>[EXTJSIV-965] Fixed Gauge align axis bug
+                            </li>
+                            <li>[EXTJSIV-912] Resolve misalignment of headers and gridview in IE 6, 7 and 9.
+                            </li>
+                            <li>[EXTJSIV-973] Fix bug that occurred when there were less records in total than the pageSize when using a PagingScroller
+                            </li>
+                        </ul>
+                    </li>
+                </ul>
+                <ul>
+                    <li>Performance Changes
+                        <ul>
+                            <li>Optimized Class, ClassManager, and Loader for better performance
+                            </li>
+                            <li>Optimized Class preprocessors
+                            </li>
+                            <li>Optimized Array for better performance
+                            </li>
+                            <li>Optimized Object for better performance
+                            </li>
+                            <li>Optimized Base for better performance
+                            </li>
+                            <li>Optimized Ext (core methods) for better performance
+                            </li>
+                            <li>EventObject's pageX/pageY now performs its calculations only when needed
+                            </li>
+                            <li>Remove unnecessary closure and callback from Model
+                            </li>
+                            <li>Removed onpropertychange listener from the input before layout and restore it after, to prevent excessive firing due to attribute/style changes during layout. The was causing a large performance issue IE fields (~300% faster rendering, ~3000% faster resizing).
+                            </li>
+                            <li>Fixed an issue in the detection of improper native array sorting (bugs in Chrome 5 and Safari 3) which caused the framework to always use a non-native sort. Resulting in a ~500% improvement when sorting (drastic improvement with large data sets such as those used in the BufferedGrid example)
+                            </li>
+                            <li>Optimized XTemplate compilation to occur at render time
+                            </li>
+                            <li>Fix an issue with framing templates not being put onto the prototype after compilation and being compiled for every component instance
+                            </li>
+                        </ul>
+                    </li>
+                </ul>
+                <ul>
+                    <li>Enhancements
+                        <ul>
+                            <li>MVC examples added (feed viewer and nested data), new application architecture guide added
+                            </li>
+                            <li>[EXTJSIV-661] Ported FeedViewer example to the new MVC structure
+                            </li>
+                            <li>[EXTJSIV-72] Implemented PropertyGrid as Ext.grid.property.Grid and associated classes in Ext.grid.property
+                            </li>
+                            <li>Replaced Javascript 'new' with Ext.create throughout library and examples
+                            </li>
+                            <li>Added onClassExtended callback for the extend pre-processor
+                            </li>
+                            <li>Update Model class to use onClassExtended and onAfterClass extended instead of postprocessors
+                            </li>
+                            <li>[EXTJSIV-669] Reinstate the validateOnBlur config option for form fields
+                            </li>
+                            <li>Added alternateClassName for Ext.form.action.Action
+                            </li>
+                            <li>Added minor tick example for lines and minor ticks capability for chart axes
+                            </li>
+                            <li>[EXTJSIV-407] Added basic drag and drop capabilities to sprites
+                            </li>
+                            <li>[EXTJSIV-685] Added an 'uncheckedValue' config to Ext.form.Checkbox, which allows specifying a value to be submitted in the form when the checkbox is unchecked
+                            </li>
+                            <li>[EXTJSIV-42] Added href/hrefTarget support for tree nodes
+                            </li>
+                            <li>[EXTJSIV-644] Remove duplicate code in ElementLoader
+                            </li>
+                            <li>[EXTJSIV-691] Lockable is now a mixin for any grid
+                            </li>
+                            <li>Model can now be defined on the store prototype
+                            </li>
+                            <li>[EXTJSIV-655] RowEditing will work with fields/editors that are object configs with no xtype specified (defaults to textfield), or straight xtype strings (wraps into an object config accordingly)
+                            </li>
+                            <li>[EXTJSIV-175] Implement expandAll/collapseAll/selectPath/expandPath on tree
+                            </li>
+                            <li>Cell editing now works with Trees
+                            </li>
+                            <li>Implement configuration option to disable dblclick toggling on Tree nodes
+                            </li>
+                            <li>Add standard Ext.Error class to handle error messages
+                            </li>
+                            <li>[EXTJSIV-711] Add 'scrollToLoadBuffer' configuration to PagingScrollbar. This is the time in milliseconds to buffer load requests when scrolling the PagingScrollbar
+                            </li>
+                            <li>Element getWidth and getHeight now allows the return of precise measurements (subpixel) for browsers which support subpixels
+                            </li>
+                            <li>[EXTJSIV-646] Add getHeader method to Panel
+                            </li>
+                            <li>[EXTJSIV-794] Fix tree destroy issue
+                            </li>
+                            <li>Updated Ext.Version with extra value checking and docs
+                            </li>
+                            <li>[EXTJSIV-791] Allow Component.setLoading method to accept a message String as its first argument
+                            </li>
+                            <li>[EXTJSIV-708] Fix issue when showing tooltips on a scrolled document
+                            </li>
+                            <li>[EXTJSIV-805] Fix up unstyled css prefix. Also move setting the baseCls before calling the superclass method
+                            </li>
+                            <li>[EXTJSIV-803] HeaderContainer ColumnLayout fixes for resetting scrollLeft/scrollTop
+                            </li>
+                            <li>Added beforeComponentLayout template method to Component
+                            </li>
+                            <li>Ext.DomHelper insertHtml now supports TextNodes properly
+                            </li>
+                            <li>[EXTJSIV-792] TabPanel will now activate the firstTab by default if no activeTab property is passed
+                            </li>
+                            <li>[EXTJSIV-690] Set the default minButtonWidth for all Panels to 75 to match Ext3; made minButtonWidth apply as defaults for buttons added via 'fbar' and 'buttons' configs only; updated docs to make minButtonWidth clearer
+                            </li>
+                            <li>[EXTJSIV-553] Make Header resizing work with flexed Headers, minWidth and forceFit
+                            </li>
+                            <li>RowEditor is no longer a floating component managed by the zindex manager
+                            </li>
+                            <li>Chart's factory method for axes is now implemented the same as the series factory method. In addition series and axis types are no longer case sensitive
+                            </li>
+                            <li>[EXTJSIV-799] Create a processView method in axes that perform aggregation and filtering operations on stores to return a substore to be rendered by the axes
+                            </li>
+                            <li>Move fadeIn, fadeOut, scale, shift, and pause back into Element. Mark methods for deprecation where appropriate
+                            </li>
+                            <li>[EXTJSIV-357] Implement support for Drag and Drop of Headers between Locked and Unlocked sections in Grids and Trees
+                            </li>
+                            <li>[EXTJSIV-844] Allow template to accept member functions/properties when passing an array
+                            </li>
+                            <li>Add a static create method to Base.js so that you can do Class.create() on any class
+                            </li>
+                            <li>[EXTJSIV-553] Group headers must have their minWidths synched when child headers are hidden or shown
+                            </li>
+                            <li>Support inline data on Model definition
+                            </li>
+                            <li>[EXTJSIV-814] Add setTitle methods to chart axes and series to allow changing titles programmatically
+                            </li>
+                            <li>Support delayed binding of Stores to DataViews
+                            </li>
+                            <li>[EXTJSIV-534] PagingScroller will now track the virtualScrollTop and is able to restore it when synchronizing views
+                            </li>
+                            <li>TreePanel and GridPanel now relay events from their underlying View such as itemclick, itemcontextmenu, etc
+                            </li>
+                            <li>[EXTJSIV-834] Ext.grid.feature.Grouping tracks expanded/collapsed state after refreshing the view
+                            </li>
+                            <li>[EXTJSIV-866] Animations will default to 'px' if no units are specified for height, width, top, and left
+                            </li>
+                            <li>[EXTJSIV-807] Add dynamic grouping to Stores
+                            </li>
+                            <li>[EXTJSIV-827][EXTJSIV-861] VML now supports image type
+                            </li>
+                            <li>[EXTJSIV-819] Fix double-margin bug in IE6 for items floated by Column layout
+                            </li>
+                            <li>[EXTJSIV-793] Fix collapsed Panel still being visible in Accordion layout
+                            </li>
+                            <li>[EXTJSIV-703] Fix Collapsible border layout not auto collapsing when focus
+                            </li>
+                            <li>[EXTJSIV-877] Default column.Action to sortable: false
+                            </li>
+                            <li>[EXTJSIV-174] Implemented getChecked on TreeView and TreePanel
+                            </li>
+                            <li>[EXTJSIV-878] Fixed an issue when maximizing containers in an ownerCt
+                            </li>
+                            <li>[EXTJSIV-848] Added a `decimals` option in the Numeric axis that will round to the specified decimals the values in the axis
+                            </li>
+                            <li>[EXTJSIV-832][EXTJSIV-472] Buttons and tabs: add a span inside the button element to receive the icon styling; prevents the icon from shifting to the northwest when the button is in active state in IE. Other buttons/tabs CSS cleanup as required
+                            </li>
+                            <li>[EXTJSIV-855] Automatically create an expanded root node if rootVisible is set to false and no root node has been defined
+                            </li>
+                            <li>[EXTJSIV-816] Added an insert method on NodeInterface
+                            </li>
+                            <li>[EXTJSIV-869] Added an onRegionTitleChange method to BorderLayout which will update the a header's text whenever a titlechange event is fired
+                            </li>
+                            <li>[EXTJSIV-829] Support sending back expanded true in Node data. If no children are specified on that node, automatically load the node. Also fixed some bugs related to quickly expanding and collapsing
+                            </li>
+                            <li>[EXTJSIV-728] Allow the tree to use a proxy as specified on the Model
+                            </li>
+                            <li>[EXTJSIV-695] Add JsonP class and hook up ScriptTagProxy to use it
+                            </li>
+                            <li>[EXTJSIV-873] Menu will not show itself if there are no items
+                            </li>
+                            <li>[EXTJSIV-920] Ext.grid.feature.Grouping disabled configuration will now uncheck the grouping menu item
+                            </li>
+                            <li>[EXTJSIV-928] Implement qtips on Tree Nodes. Change QuickTips to use the data-qtip attribute instead of ext:qtip. This allows DomQuery to target elements with qtips. This allows us to set qtips on any element on the page instead of just the front most elements
+                            </li>
+                            <li>Added Ext.Base.borrow method to Borrow another class' members to the prototype of this class
+                            </li>
+                            <li>[EXTJSIV-967] Remove layout.Manager and override the static create method on Ext.layout.Layout to be like a factory method for any type of layout
+                            </li>
+                            <li>[EXTJSIV-875] Ext.JSON now supports a 'safe' mode
+                            </li>
+                        </ul>
+                    </li>
+                </ul>
+                <ul>
+                    <li>API Changes
+                        <ul>
+                            <li>Aliased Ext.value to Ext.valueOf and deprecate the old one
+                            </li>
+                            <li>isLoading method hoisted to AbstractStore so that it is available on TreeStore and Store
+                            </li>
+                            <li>Rename DragDropMgr -&gt; DragDropManager
+                            </li>
+                            <li>Rename ModelMgr -&gt; ModelManager
+                            </li>
+                            <li>Rename TaskMgr -&gt; TaskManager
+                            </li>
+                            <li>Rename ComponentMgr -&gt; ComponentManager
+                            </li>
+                            <li>Rename PluginMgr -&gt; PluginManager
+                            </li>
+                            <li>Rename StoreMgr -&gt; StoreManager
+                            </li>
+                            <li>Rename FocusMgr -&gt; FocusManager
+                            </li>
+                            <li>Rename WindowMgr -&gt; WindowManager
+                            </li>
+                            <li>Rename themeMgr -&gt; themeManager
+                            </li>
+                            <li>Rename ButtonToggleMgr -&gt; ButtonToggleManager
+                            </li>
+                            <li>Rename Ext.menu.MenuMgr -&gt; Ext.menu.manager
+                            </li>
+                            <li>Remove ReaderMgr
+                            </li>
+                            <li>Remove WriterMgr
+                            </li>
+                            <li>In all documentation and examples, Ext.define is now used to define Models, not Ext.regModel
+                            </li>
+                            <li>Move field implementation classes into Ext.form.field.* namespace
+                            </li>
+                            <li>Animate mixin's hasActiveFx renamed to getActiveAnimation and stopFx renamed to stopAnimation
+                            </li>
+                            <li>Removed 'tip' and 'quicktip' xtypes as they should not be added as widgets. QuickTipManager is a singleton. and 'tooltip' is a widget
+                            </li>
+                            <li>Replaced all superclass syntax with callParent where possible throughout library and examples
+                            </li>
+                            <li>[EXTJSIV-853] Rename ToolTip initTarget to setTarget
+                            </li>
+                            <li>Ext.data.JsonReader -&gt; Ext.data.reader.Json
+                            </li>
+                            <li>Ext.data.ArrayReader -&gt; Ext.data.reader.Array
+                            </li>
+                            <li>Ext.data.Reader -&gt; Ext.data.reader.Reader
+                            </li>
+                            <li>Ext.data.XmlReader -&gt; Ext.data.reader.Xml
+                            </li>
+                            <li>Ext.data.AjaxProxy -&gt; Ext.data.proxy.Ajax
+                            </li>
+                            <li>Ext.data.ClientProxy -&gt; Ext.data.proxy.Client
+                            </li>
+                            <li>Ext.data.DirectProxy -&gt; Ext.data.proxy.Direct
+                            </li>
+                            <li>Ext.data.LocalStorageProxy -&gt; Ext.data.proxy.LocalStorage
+                            </li>
+                            <li>Ext.data.RestProxy -&gt; Ext.data.proxy.Rest
+                            </li>
+                            <li>Ext.data.ScriptTagProxy -&gt; Ext.data.proxy.ScriptTag
+                            </li>
+                            <li>Ext.data.ServerProxy -&gt; Ext.data.proxy.Server
+                            </li>
+                            <li>Ext.data.SessionStorageProxy -&gt; Ext.data.proxy.SessionStorage
+                            </li>
+                            <li>Ext.data.WebStorageProxy -&gt; Ext.data.proxy.WebStorage
+                            </li>
+                            <li>Ext.data.XmlWriter -&gt; Ext.data.writer.Xml
+                            </li>
+                            <li>Ext.data.Writer -&gt; Ext.data.writer.Writer
+                            </li>
+                            <li>Ext.chart.Callouts -&gt; Ext.chart.Callout
+                            </li>
+                            <li>Ext.chart.Labels -&gt; Ext.chart.Label
+                            </li>
+                            <li>Ext.chart.Highlights -&gt; Ext.chart.Highlight
+                            </li>
+                            <li>Ext.chart.Tips -&gt; Ext.chart.Tip
+                            </li>
+                            <li>Ext.chart.Shapes -&gt; Ext.chart.Shape
+                            </li>
+                            <li>Ext.data.Proxy -&gt; Ext.data.proxy.Proxy
+                            </li>
+                            <li>Ext.draw.SpriteGroup -&gt; Ext.draw.SpriteComposite
+                            </li>
+                            <li>Ext.fx.PropHandler -&gt; Ext.fx.PropertyHandler
+                            </li>
+                            <li>Ext.fx.target.SpriteGroup -&gt; Ext.fx.target.CompositeSprite
+                            </li>
+                            <li>Ext.data.proxy.ScriptTag -&gt; Ext.data.proxy.JsonP
+                            </li>
+                            <li>Ext.grid.HeaderContainer -&gt; Ext.grid.header.Container
+                            </li>
+                            <li>Ext.grid.HeaderDragZone -&gt; Ext.grid.header.DragZone
+                            </li>
+                            <li>Ext.grid.HeaderDropZone -&gt; Ext.grid.header.DropZone
+                            </li>
+                            <li>Ext.grid.HeaderReorderer -&gt; Ext.grid.header.Reorderer
+                            </li>
+                            <li>Ext.grid.GridPanel -&gt; Ext.grid.Panel
+                            </li>
+                            <li>Ext.menu.DateMenu -&gt; Ext.menu.DatePicker
+                            </li>
+                            <li>Ext.menu.ColorMenu -&gt; Ext.menu.ColorPicker
+                            </li>
+                            <li>Ext.menu.MenuManager -&gt; Ext.menu.Manager
+                            </li>
+                            <li>Ext.panel.TablePanel -&gt; Ext.panel.Table
+                            </li>
+                            <li>Ext.resizer.ResizeHandle -&gt; Ext.resizer.Handle
+                            </li>
+                            <li>Ext.grid.CellEditing -&gt; Ext.grid.plugin.CellEditing
+                            </li>
+                            <li>Ext.grid.Editing -&gt; Ext.grid.plugin.Editing
+                            </li>
+                            <li>Ext.grid.GridView -&gt; Ext.grid.View
+                            </li>
+                            <li>Ext.grid.GridViewDropZone -&gt; Ext.grid.ViewDropZone
+                            </li>
+                            <li>Ext.grid.GridPanel -&gt; Ext.grid.Panel
+                            </li>
+                            <li>Ext.grid.RowEditing -&gt; Ext.grid.plugin.RowEditing
+                            </li>
+                            <li>Ext.grid.HeaderReorderer -&gt; Ext.grid.plugin.HeaderReorderer
+                            </li>
+                            <li>Ext.grid.HeaderResizer -&gt; Ext.grid.plugin.HeaderResizer
+                            </li>
+                            <li>Ext.grid.GridViewDragDrop -&gt; Ext.grid.plugin.DragDrop
+                            </li>
+                            <li>Ext.ImageComponent -&gt; Ext.Img
+                            </li>
+                            <li>Ext.layout.Container -&gt; Ext.layout.container.Container
+                            </li>
+                            <li>Ext.layout.AbstractContainer -&gt; Ext.layout.container.AbstractContainer
+                            </li>
+                            <li>Ext.layout.Component -&gt; Ext.layout.component.Component
+                            </li>
+                            <li>Ext.layout.component.SliderField -&gt; Ext.layout.component.field.Slider
+                            </li>
+                            <li>Ext.layout.component.form.Field -&gt; Ext.layout.component.field.Field
+                            </li>
+                            <li>Ext.layout.component.form.File -&gt; Ext.layout.component.field.File
+                            </li>
+                            <li>Ext.layout.component.form.HtmlEditor -&gt; Ext.layout.component.field.HtmlEditor
+                            </li>
+                            <li>Ext.layout.component.form.Text -&gt; Ext.layout.component.field.Text
+                            </li>
+                            <li>Ext.layout.component.form.TextArea -&gt; Ext.layout.component.field.TextArea
+                            </li>
+                            <li>Ext.layout.component.form.Trigger -&gt; Ext.layout.component.field.Trigger
+                            </li>
+                            <li>Ext.tip.QuickTips -&gt; Ext.tip.QuickTipManager
+                            </li>
+                            <li>Ext.toolbar.PagingToolbar -&gt; Ext.toolbar.Paging
+                            </li>
+                            <li>Ext.tree.SelectionModel -&gt; Ext.selection.TreeModel
+                            </li>
+                            <li>Ext.tree.TreeColumn -&gt; Ext.tree.Column
+                            </li>
+                            <li>Ext.tree.TreePanel -&gt; Ext.tree.Panel
+                            </li>
+                            <li>Ext.tree.TreeView -&gt; Ext.tree.View
+                            </li>
+                            <li>Ext.tree.TreeViewDragZone -&gt; Ext.tree.ViewDragZone
+                            </li>
+                            <li>Ext.tree.TreeViewDropZone -&gt; Ext.tree.ViewDropZone
+                            </li>
+                            <li>Ext.view.TableView -&gt; Ext.view.Table
+                            </li>
+                            <li>Ext.Container.getIndexOfHeader -&gt; Ext.Container.getHeaderIndex
+                            </li>
+                            <li>Ext.Container.getHeaderByIndex -&gt; Ext.Contrainer.getHeaderAtIndex
+                            </li>
+                            <li>Ext,grid.feature.Feature.getTplFragments -&gt; Ext.grid.feature.Feature.getFragmentTpl
+                            </li>
+                            <li>Ext.grid.feature.Grouping.getTplFragments -&gt; Ext.grid.feature.Grouping.getFragmentTpl
+                            </li>
+                            <li>Ext,grid.feature.GroupingSummary.getTplFragments -&gt; Ext.grid.feature.GroupingSummary.getFragmentTpl
+                            </li>
+                            <li>Ext,grid.feature.Summary.getTplFragments -&gt; Ext.grid.feature.Summary.getFragmentTpl
+                            </li>
+                            <li>Ext,grid.header.Container.getTplFragments -&gt; Ext.grid.header.Container.getFragmentTpl
+                            </li>
+                            <li>Ext.layout.container.Border.getPlaceHolder -&gt; Ext.layout.container.Border.getPlaceholder
+                            </li>
+                            <li>Ext.version.getSimplified -&gt; Ext.version.getShortVersion
+                            </li>
+                            <li>Ext.version.simplified -&gt; Ext.version.shortVersion
+                            </li>
+                            <li>Ext.Object.keyOf -&gt; Ext.Object.getKey
+                            </li>
+                            <li>Ext.String.parseQueryString -&gt; Ext.Object.fromQueryString
+                            </li>
+                            <li>Ext.Version.isSmallerThan -&gt; Ext.Version.isLessThan
+                            </li>
+                            <li>Ext.draw.Surface.newInstance -&gt; Ext.draw.Surface.create
+                            </li>
+                            <li>Ext.util.Inflector.isUncountable -&gt; Ext.util.Inflector.isTransnumeral
+                            </li>
+                            <li>Ext.draw.Surface.positionSpriteInList -&gt; Ext.draw.Surface.normalizeSpriteCollection
+                            </li>
+                            <li>Ext.util.AbstractMixedCollection.removeByKey -&gt; Ext.util.AbstractMixedCollection.removeAtKey
+                            </li>
+                            <li>Ext.util.HashMap.removeByKey -&gt; Ext.util.HashMap.RemoveAtKey
+                            </li>
+                            <li>Ext.FocusManager.removeWhitelistXType -&gt; Ext.FocusManager.removeWhitelistByXType
+                            </li>
+                            <li>Ext.data.Connection.setupOptions -&gt; Ext.data.Connection.setOptions
+                            </li>
+                            <li>Ext.FocusManager.removeWhitelistXType -&gt; Ext.FocusManager.removeXTypeFromWhitelist
+                            </li>
+                            <li>Ext.FocusManager.addWhitelistXtype -&gt; Ext.FocusManager.addXTypeToWhitelist
+                            </li>
+                            <li>Ext.form.Labelable.applyFieldDefaults -&gt; Ext.form.Lableable.setFieldDefaults
+                            </li>
+                            <li>Ext.form.field.areValuesEqual -&gt; Ext.form.field.isEqual
+                            </li>
+                            <li>Ext.ClassManager.assignNamespace -&gt; Ext.ClassManager.setNamespace
+                            </li>
+                            <li>Ext.menu.Menu.canActivateItem -&gt; Ext.menu.Menu.isActivatable
+                            </li>
+                            <li>Ext.form.Panel.checkChanges -&gt; Ext.form.Panel.checkChange
+                            </li>
+                            <li>Ext.form.Basic.checkDirtyChange -&gt; Ext.form.Basic.checkDirty
+                            </li>
+                            <li>Ext.form.FormPanel -&gt; Ext.form.Panel
+                            </li>
+                            <li>Ext.chart.LegendItem.createSprites -&gt; Ext.chart.LegendItem.createLegend
+                            </li>
+                            <li>Ext.chart.axis.Axis.drawLabels -&gt; Ext.chart.axis.Axis.drawLabel
+                            </li>
+                            <li>Ext.Loader.exist -&gt; Ext.Loader.isCreated
+                            </li>
+                            <li>Ext.grid.header.Container.getColumnsMenu -&gt; Ext.grid.header.Container.getColumnMenu
+                            </li>
+                            <li>Ext.form.field.File.buttonCfg -&gt; Ext.form.field.File.buttonConfig
+                            </li>
+                            <li>Ext.data.proxy.Server.dirParam -&gt; Ext.data.proxy.Server.directionParam
+                            </li>
+                            <li>Ext.grid.feature.Grouping.groupHdTpl -&gt; Ext.grid.feature.Grouping.groupHeaderTpl
+                            </li>
+                            <li>Ext.draw.Surface.implOrder -&gt; Ext.draw.Surface.enginePriority
+                            </li>
+                            <li>Ext.draw.Component.implOrder -&gt; Ext.draw.Component.enginePriority
+                            </li>
+                            <li>Ext.charts.Series.markerCfg -&gt; Ext.chart.Series.markerConfig
+                            </li>
+                            <li>FocusManager.placeHolder -&gt; FocusManager.placeholder
+                            </li>
+                            <li>Panel.placeHolder -&gt; Panel.placeholder
+                            </li>
+                            <li>Border.placeHolder -&gt; Border.placeholder
+                            </li>
+                            <li>Ext.chart.series.Bar.xpadding -&gt; Ext.chart.series.Bar.xPadding
+                            </li>
+                            <li>Ext.chart.series.Bar.ypadding -&gt; Ext.chart.series.Bar.yPadding
+                            </li>
+                        </ul>
+                    </li>
+                </ul>
+                <ul>
+                    <li>Documentation Changes
+                        <ul>
+                            <li>Added many guides, screenshots, and videos from the Sencha Blog and other sources to the documentation application
+                            </li>
+                            <li>API documentation screenshots and example updates for (Ext.window.Window, Ext.window.MessageBox, Ext.toolbar.Toolbar, Ext.toolbar.TextItem, Ext.toolbar.Spacer, Ext.toolbar.Separator, Ext.toolbar.Fill, Ext.tab.Panel, Ext.slider.Tip, Ext.slider.Single,Ext.slider.Multi, Ext.resizer.Resizer, Ext.layout.container.Table, Ext.layout.container.Fit, Ext.layout.container.Column, Ext.layout.container.Card, Ext.layout.container.Border, Ext.layout.container.Accordion, Ext.layout.container.Absolute, Ext.form.FormPanel, Ext.form.BaseField, Ext.form.Checkbox, Ext.form.CheckboxGroup, Ext.form.ComboBox, Ext.form.Date, Ext.form.Display, Ext.form.FieldContainer, Ext.form.FieldSet, Ext.form.File, Ext.form.FormPanel, Ext.form.HtmlEditor, Ext.form.Label, Ext.form.Number, Ext.form.Radio, Ext.form.RadioGroup, Ext.form.Text, Ext.form.TextArea, Ext.form.Time
+                            </li>
+                            <li>Updated AbstractComponent
+                            </li>
+                            <li>[EXTJSIV-806] Updated AbstractDataView
+                            </li>
+                            <li>Updated AbstractMixedCollection
+                            </li>
+                            <li>Updated AbstractPanel
+                            </li>
+                            <li>Added Application
+                            </li>
+                            <li>Updated Array
+                            </li>
+                            <li>Update Axis
+                            </li>
+                            <li>Update Base
+                            </li>
+                            <li>Update Cartesian
+                            </li>
+                            <li>[EXTJSIV-748] Add CellEditing
+                            </li>
+                            <li>Update Chart Labels
+                            </li>
+                            <li>Update Chart LineSeries
+                            </li>
+                            <li>Update Class
+                            </li>
+                            <li>Update ClassManager
+                            </li>
+                            <li>Added Controller
+                            </li>
+                            <li>Update Direct
+                            </li>
+                            <li>[EXTJSIV-721] Update Direct proxy
+                            </li>
+                            <li>[EXTJSIV-734] Add DrawComponent
+                            </li>
+                            <li>Update Ext
+                            </li>
+                            <li>Added EventBus
+                            </li>
+                            <li>Added Gauge Chart
+                            </li>
+                            <li>Added Grid Panel
+                            </li>
+                            <li>Added Grid Scroller
+                            </li>
+                            <li>[EXTJSIV-644] Updated Loader
+                            </li>
+                            <li>[EXTJSIV-723] Update NodeInterface
+                            </li>
+                            <li>Updated Object
+                            </li>
+                            <li>Updated Observable
+                            </li>
+                            <li>Added PropertyGrid
+                            </li>
+                            <li>Updated field.Number
+                            </li>
+                            <li>[EXTJSIV-754] Add RowEditing
+                            </li>
+                            <li>Added RowNumberer
+                            </li>
+                            <li>Added Sortable
+                            </li>
+                            <li>Added Sprite
+                            </li>
+                            <li>[EXTJSIV-726] Add Tree
+                            </li>
+                            <li>[EXTJSIV-727] Update TreeStore
+                            </li>
+                        </ul>
+                    </li>
+                </ul>
+                <ul>
+                    <li>Known Issues / Upcoming Changes
+                        <ul>
+                            <li>Desktop Example to be re-implemented</li>
+                            <li>Ext.data.BufferStore will be removed and its methods moved up into Ext.data.Store</li>
+                            <li>Grid promote from markup script sometimes fails in IE6 and IE7</li>
+                            <li>TreePanel has some DnD issues in IE9</li>
+                            <li>Several classes missing adequate documentation</li>
+                            <li>Small rendering glitches on tabs in Mac Safari 5</li>
+                            <li>Buttons can be cropped when sizing a Window to a very small width (e.g. under 150px)</li>
+                            <li>Grids can sometimes lose scrollbars when their container is resized</li>
+                            <li>Vertical panel headers use the wrong font in IE9</li>
+                            <li>Grid state does not save column widths</li>
+                            <li>TriggerFields are not aligned flushed to the edge in IE6 and IE7</li>
+                            <li>Grid filtering feature doesn't support setting filters via config</li>
+                            <li>TreePanel is missing documentation. A guide will be release separately before GA</li>
+                            <li>Menu styling in access theme has some imperfections</li>
+                            <li>Simple Tasks example is missing</li>
+                            <li>Calendar components have not been fully ported yet</li>
+                            <li>Tree Filtering will be implemented before GA</li>
+                            <li>KeyNav example has inconsistent spacing in some IE versions</li>
+                            <li>Tab is not marked selected if it is the only tab in a TabPanel and is set active by default</li>
+                            <li>Hovering over the bottom spinner of a NumberField does not highlight it</li>
+                            <li>Several small IE9 rendering issues</li>
+                            <li>Some slight font inconsistencies between components</li>
+                        </ul>
+                    </li>
+                </ul>
+            </div>
+            <div class="release">
+                <h1>
+                    Release Notes for Ext JS 4 Beta 2
+                </h1>
+                <p class="notes">
+                    Release Date: April 6, 2011<br>
+                    Version Number: 4.0.0beta2
+                </p>
+                <h2>
+                    New In This Release
+                </h2>
+                <ul>
+                    <li>New Examples
+                        <div style="margin-left: 2em">
+                            <ul>
+                                <li>
+                                    <a href="examples/charts/Gauge.html">Gauge Chart example</a>
+                                </li>
+                                <li>
+                                    <a href="examples/grid/buffer-grid.html">Buffered Grid example</a>
+                                </li>
+                                <li>
+                                    <a href="examples/themes/index.html">Theme example</a>
+                                </li>
+                            </ul>
+                        </div>
+                    </li>
+                </ul>
+                <ul>
+                    <li>Bug Fixes
+                        <ul>
+                            <li>Fix tabs mouseover in GroupTabPanel examples
+                            </li>
+                            <li>Fix double rendering when quickly expanding / collapsing tree nodes
+                            </li>
+                            <li>[EXTJSIV-466] Ensure cls config is applied to MessageBoxWindow
+                            </li>
+                            <li>Fix issue where box layout margins could be improperly calculated
+                            </li>
+                            <li>[EXTJSIV-470] Remove the permanent CheckHeader editor and place it only on the row editing example
+                            </li>
+                            <li>Fix Tree keyboard navigation
+                            </li>
+                            <li>Don't show loading indicator when trying to expand an already expanded tree node
+                            </li>
+                            <li>[EXTJSIV-504] Fix alignment of fieldset legend checkbox
+                            </li>
+                            <li>[EXTJSIV-502] Remove persistent scrollbar from Ext.form.Textarea and Ext.form.HtmlEditor source editor
+                            </li>
+                            <li>[EXTJSIV-213] Fix BoxReorderer issues
+                            </li>
+                            <li>[EXTJSIV-537] Fix an issue that allows multiple selection on the chart
+                            </li>
+                            <li>[EXTJSIV-529] Element.highlight() fx function will now function properly, and can handle Anim callbacks
+                            </li>
+                            <li>[EXTJSIV-539] We no longer allow the tb text field to be orderable in the multisort example
+                            </li>
+                            <li>[EXTJSIV-540] Buttons will no longer show mouseover effects when disabled
+                            </li>
+                            <li>[EXTJSIV-545] Fix duplicate id bug in grid -&gt; grid DD example
+                            </li>
+                            <li>[EXTJSIV-417] Fixed issue with field heights
+                            </li>
+                            <li>[EXTJSIV-492] Fix application of overCls when the delegate option is used
+                            </li>
+                            <li>[EXTJSIV-513] Ensure that mouseup when dragging the drag selector, and the subsequent click event does not clear selections in the DataView
+                            </li>
+                            <li>[EXTJSIV-474] Fix ghosting of Windows during drag on IE &lt; 9
+                            </li>
+                            <li>[EXTJSIV-213] Fix multiple-sorting issue with BoxReorderer, ensure smooth component reordering, Improve reorderable-tabs examples
+                            </li>
+                            <li>[EXTJSIV-501] Fix the ability to update floating Components while hidden, and have them run their ComponentLayout upon show
+                            </li>
+                            <li>[EXTJSIV-530] Fixed bootstrap-release.js to test window.location.hostname instead of window.location.host
+                            </li>
+                            <li>[EXTJSIV-540] Always attempt to remove the overCls when the mouse leaves the component. If a component is disabled while the mouse is still over it, then the overCls will be stuck on until the component is re-enabled
+                            </li>
+                            <li>Grid DD Example update so columns aren't crammed together
+                            </li>
+                            <li>[EXTJSIV-531] Fix MessageBox progress bar display
+                            </li>
+                            <li>[EXTJSIV-434] Prevent IE6-7 from giving focus to the HtmlEditor iframe when setting its contentEditable=true
+                            </li>
+                            <li>[EXTJSIV-464] Menu should pass its minWidth down to its child components so it is accounted for in the Box layout. This visually affects all examples that use menus which were only as wide as they needed to be
+                            </li>
+                            <li>[EXTJSIV-138] Fix no borders on forum search example
+                            </li>
+                            <li>Fixed column headers in IE
+                            </li>
+                            <li>[EXTJSIV-561] Fix an issue when creating a tab panel with no items
+                            </li>
+                            <li>Fix Loader's path resolution
+                            </li>
+                            <li>[EXTJSIV-557] Locking grid resize indicator shows up regardless of which section you drag from
+                            </li>
+                            <li>[EXTJSIV-507] Fix gecko3 issue with the first tab in a tabbar
+                            </li>
+                            <li>[EXTJSIV-356] Prevent selection from scrolling into view when the selection model is refreshed
+                            </li>
+                            <li>[EXTJSIV-568] RowEditor disables the view's keynav so that editors will get full default key events
+                            </li>
+                            <li>[EXTJSIV-339] Fixed problematic curly braces in nestedIdRe in AbstractSummaryFeature
+                            </li>
+                            <li>[EXTJSIV-375] Complete syncing of row heights, after sorting make sure that the scrollTop is synchronized
+                            </li>
+                            <li>Correct syncRowHeight default config
+                            </li>
+                            <li>[EXTJSIV-568] Don't allow RowEditor to hijack space
+                            </li>
+                            <li>[EXTJSIV-409] Add extra path parameter to ensure cookie clearing works
+                            </li>
+                            <li>[EXTJSIV-7] Fixed shift that appears in IE with large number scaling when you specify viewPort in a Draw Component
+                            </li>
+                            <li>[EXTJSIV-558] Fixed an issue where setting a date in a model caused the record to become dirty
+                            </li>
+                            <li>[EXTJSIV-575] Fix Uncaught TypeError: Cannot call method 'apply' of undefined, due to previous onDisable/onEnable changes
+                            </li>
+                            <li>[EXTJSIV-449] TableView should not steal the focus when a header is resized. The header layouts occurred when a scrollbar was being added and removed by the TablePanel, causing any previously focused item to lose focus, with focusing going to the TableView. So, a "search filter text box", for example, would lose focus at random points
+                            </li>
+                            <li>[EXTJSIV-167] Fix IE9 Center Layout
+                            </li>
+                            <li>Fix Ext.form.Combobox select event firing
+                            </li>
+                            <li>[EXTJSIV-546] Dont allow a parent folder to be dropped on a folder inside itself
+                            </li>
+                            <li>[EXTJSIV-524] Make sure you can extend Ext.TreePanel and create an instance without passing a configuration
+                            </li>
+                            <li>Properly relay View events on the TreePanel
+                            </li>
+                            <li>[EXTJSIV-190] Fix Ext.ux.TabCloseMenu event monitoring
+                            </li>
+                            <li>[EXTJSIV-535] Fix Multi sorting grid column reorder indicator
+                            </li>
+                            <li>[EXTJSIV-537] Fix issue where FormDashboard allows multiple chart selection
+                            </li>
+                            <li>[EXTJSIV-162] Fix TableView/Features collectData implementation
+                            </li>
+                            <li>[EXTJSIV-544] Fix Bar display when data is of the same value for more than one record
+                            </li>
+                            <li>[EXTJSIV-515] Clear groupers when disabling the Grouping Feature
+                            </li>
+                            <li>[EXTJSIV-565] Fix radial axis labels problem
+                            </li>
+                            <li>[EXTJSIV-469] Correct layout recursion back into an already-running ComponentLayout
+                            </li>
+                            <li>[EXTJSIV-565] Fix maxValue in drawSeries
+                            </li>
+                            <li>[EXTJSIV-590] The PagingScroller now calculates rowHeight based off of markup
+                            </li>
+                            <li>[EXTJSIV-241] Fix bug in event wrapper ordering which meant that delayed or buffered single:true events threw errors
+                            </li>
+                            <li>[EXTJSIV-583] Fix sorting padding issue with grid headers
+                            </li>
+                            <li>[EXTJSIV-510] Added grid headers and special cell backgrounds
+                            </li>
+                            <li>[EXTJSIV-597] Fix issue where Ext.tab.Panel wouldn't enable tabs
+                            </li>
+                            <li>[EXTJSIV-588] Fix an issue when using scripts: true when loading a component
+                            </li>
+                            <li>[EXTJSIV-321] Record associated data now also handles parent models
+                            </li>
+                            <li>[EXTJSIV-566] Fix issues with returning exceptions from DirectProxy
+                            </li>
+                            <li>[EXTJSIV-585] Fix an issue where Ext.MessgaeBox was dependent on having a title
+                            </li>
+                            <li>[EXTJSIV-586] Fix an issue when using reset and formBind, the bound item will now be updated correctly
+                            </li>
+                            <li>[EXTJSIV-591] Fix warning when destroying border layout
+                            </li>
+                            <li>Fix detection of changes to form fields in IE9 standards mode by making it use the modern events set
+                            </li>
+                            <li>Fix vertical alignment of checkbox/radio buttons in IE9 standards mode
+                            </li>
+                            <li>Fix errors when expand/collapse methods are called after a Picker component is destroyed
+                            </li>
+                            <li>[EXTJSIV-605] Fix an issue where undefined will be set on the editor when resetting
+                            </li>
+                            <li>[EXTJSIV-569] Fix bug with nodes being inserted in the wrong location in the NodeStore
+                            </li>
+                            <li>[EXTJSIV-607] Fix z-index of border floated region
+                            </li>
+                            <li>[EXTJSIV-372] Fix an issue with flickering when using cell editing in FF on Linux
+                            </li>
+                            <li>[EXTJSIV-608] Fix issue when creating records at a remote source
+                            </li>
+                            <li>[EXTJSIV-450] FocusManager will only add tabIndex to DOM nodes that really need them for programmatic focusing. This will ensure default tabIndicies will remain in tact
+                            </li>
+                            <li>[EXTJSIV-589] CellEditing now fires beforeedit, validateedit and afteredit appropriately
+                            </li>
+                            <li>[EXTJSIV-610] CellModel will now call its base Model's doSelect and doDeselect functions so it is maintaining the selected record along with the selected position (row/column)
+                            </li>
+                            <li>[EXTJSIV-418] CheckColumn now will handle the Enter/Space keys for toggling its select state
+                            </li>
+                            <li>[EXTJSIV-609] CellModel fires its select/deselect events now
+                            </li>
+                            <li>[EXTJSIV-560] Remove focused cls on items in a TableView when deselecting them
+                            </li>
+                            <li>[EXTJSIV-614] Prevent combobox dropdown from getting closed before the selectOnTab handler has a chance to fire in WebKit
+                            </li>
+                            <li>[EXTJSIV-622] When IE9 positions an element offscreen via offsets, the offsetWidth is inaccurately reported. For IE9 only, we render on screen before removing. Fixes an issue with Ext.getScrollBarWidth
+                            </li>
+                            <li>[EXTJSIV-439] Changed images for the DataView examples to gif for IE6
+                            </li>
+                            <li>[EXTJSIV-615] Fix an issue when using an idProperty other than "id"
+                            </li>
+                            <li>RowEditor will handle resize, move, show, and hide of columns properly before the editor is brought up for the first time
+                            </li>
+                            <li>[EXTJSIV-480] Table layout: added work around for a bug in Opera 10.5 where it makes table cells wider than they should be if their child element has border-box sizing and horizontal padding
+                            </li>
+                            <li>[EXTJSIV-641] Fix an issue with creating items into a local storage object
+                            </li>
+                            <li>[EXTJSIV-440][EXTJSIV-633] Fix Ext.ux.AnimatedDataView cross-browser issue
+                            </li>
+                            <li>CellEditing will complete an edit before grabbing critical information about the next edit, since the view is refreshed upon edit completion
+                            </li>
+                            <li>[EXTJSIV-371] CellEditing and CellModel will continue cell editing on tabs even across cells with no editor, and stop when the editing ends via a non-tab exit point such as blurring the field
+                            </li>
+                            <li>[EXTJSIV-606] Constrained Windows no longer lose their center positioning
+                            </li>
+                            <li>[EXTJSIV-508] Give a visual indication of a selected/focused tree node in the check-tree example
+                            </li>
+                            <li>[EXTJSIV-508] Tree selection model handles enter/space to check any checkbox tree nodes
+                            </li>
+                            <li>[EXTJSIV-663] Ensure ServerProxy checks if the value is defined as opposed to just truthy
+                            </li>
+                            <li>[EXTJSIV-593] Numeric axis is now aware of chart substores, that way it can update when grouping/ungrouping time axis
+                            </li>
+                            <li>[EXTJSIV-401][EXTJSIV-496] Rework active/inactive tab styling to be consistent across all browsers and avoid the floating border strip
+                            </li>
+                        </ul>
+                    </li>
+                    <li>Enhancements
+                        <ul>
+                            <li>[EXTJSIV-73] Optimized class system performance - round 1
+                            </li>
+                            <li>Added a simple Gauge Chart
+                            </li>
+                            <li>Add Ext.Array.sort which is a guaranteed stable sort
+                            </li>
+                            <li>[EXTJSIV-556] Implement a buffered grid example loading thousands records and buffering the rendering. Required minor changes to PagingScroller, BufferStore and related classes
+                            </li>
+                            <li>[EXTJSIV-193] Put iconCls and tools into ghosted windows
+                            </li>
+                            <li>[EXTJSIV-471] RowEditing will now scroll the buttons into view when they are out of sight due to being near the bottom. Also will enforce row selection and keeping a row in view when starting an edit for smoother animations
+                            </li>
+                            <li>[EXTJSIV-426] Remove redundant validation for allowBlank in Ext.form.Text
+                            </li>
+                            <li>[EXTJSIV-427] Date and Time would always return null from getValue if the raw value could not be parsed as a date; this was resulting in such values being treated as valid during validation and not being seen as dirty. Changed so that getValue will return the raw value if it cannot be parsed. Also added logic to attempt parsing of the 'value' config during init so that originalValue is a valid Date object for dirty comparison
+                            </li>
+                            <li>[EXTJSIV-448] Implement readOnly and setReadOnly for Checkbox and Radio fields
+                            </li>
+                            <li>[EXTJSIV-416] Give fields within fieldset an anchor so they get a width in IE6
+                            </li>
+                            <li>[EXTJSIV-530] Added port number support to localhost detection
+                            </li>
+                            <li>Add required classes to Chart LiveUpdate example
+                            </li>
+                            <li>Increase LiveSearchGridPanel reactiveness
+                            </li>
+                            <li>[EXTJSIV-529] Element.getColor() will properly accept an empty string as a prefix, which is needed for color animations
+                            </li>
+                            <li>[EXTJSIV-529] Enable afterRepair fx on dd.DragZone and TreeViewDragZone
+                            </li>
+                            <li>[EXTJSIV-38] TreeViewDropZone will now highlight successfully dropped nodes
+                            </li>
+                            <li>[EXTJSIV-38] Use the selectedItemCls setting on TableView prototype to handle the quick remove/add of that cls when highlighting a repair
+                            </li>
+                            <li>[EXTJSIV-38] TreeViewDragZone will highlight all records that were dragged, for the case of multiselect tree sel model
+                            </li>
+                            <li>[EXTJSIV-185] Removed .png slicer images + changing to gif (we &lt;3 IE6)
+                            </li>
+                            <li>[EXTJSIV-346] adding gif versions of icons for treegrid example
+                            </li>
+                            <li>[EXTJSIV-475] LoadMask may now be configured with a Component to mask as an alternative to just an element. If configured with a Component, it masks the Component's contentTarget. If the Component changes size during loading, the mask's message is recentered. DataView configures its LoadMask by passing itself if it is standalone, or its owning Container if it is inside a Container
+                            </li>
+                            <li>[EXTJSIV-478] Added the empty cls to all browsers, not just browsers that do not support `placeholder`. this is because of a styling issue in webkit
+                            </li>
+                            <li>[EXTJSIV-540] Button over when disabled will not apply the hover background linear gradient anymore. disabled classes now get cascaded priority over background-image
+                            </li>
+                            <li>[EXTJSIV-457] The DragZone was triggering a selection change on mousedown, which was resulting in duplicate selection calls when the DataView was configured to select on click. Moved the former from the mousedown handler to the start of the drag to avoid duplicate selection
+                            </li>
+                            <li>Improved some Loader's alias functions for performance
+                            </li>
+                            <li>[EXTJSIV-258][EXTJSIV-259]Refactor Shadow for floating Components
+                            </li>
+                            <li>[EXTJSIV-551] Menu should not fire click, mouseover, or mouseleave events when its disabled. Menu items will not get any interaction when the menu is disabled
+                            </li>
+                            <li>Menu will only activate items that can be activated, however, always deactivate the active item when applicable
+                            </li>
+                            <li>[EXTJSIV-502] Add comment in HtmlEditor explaining how forcing documentMode in the Web Developer Tools will override the mode used by the iframe, causing scrollbars in IE8
+                            </li>
+                            <li>[EXTJSIV-543] Horizontal scrolling does not rely on having records within the body of the grid. It is calculated off of the headercontainer instead
+                            </li>
+                            <li>[EXTJSIV-547] Added in browser check for Opera for Mousewheel. Found additional information about Opera and its' mousewheel implementation here: http://www.switchonthecode.com/tutorials/javascript-tutorial-the-scroll-wheel To quote the important parts... "The weirdness comes in because IE and Firefox have very different names for the scroll event. In Internet Explorer, the event is called onmousewheel, while in Firefox the event is called DOMMouseScroll. To make it even worse, Opera uses the Internet Explorer event name (without the 'on' part, so just mousewheel), but Opera needs to use the Firefox way of attaching event listeners."
+                            </li>
+                            <li>[EXTJSIV-564] Implement index support in selectRange rather than requiring the developer to pass a record instance
+                            </li>
+                            <li>Updated grid row selection stuff to support IE better
+                            </li>
+                            <li>[EXTJSIV-447] Add fieldStyle config and setFieldStyle method to Ext.form.BaseField, to allow direct manipulation of the inputEl CSS style
+                            </li>
+                            <li>Legacy code in the widgets directory removed
+                            </li>
+                            <li>RowEditor offsets itself by using bottom instead of top, in case of tall rows
+                            </li>
+                            <li>[EXTJSIV-567] Table State implementation now restores width and visibility
+                            </li>
+                            <li>[EXTJSIV-532] Add tooltip support on Radar series
+                            </li>
+                            <li>[EXTJSIV-559][EXTJSIV-373]Provide accurate repair position for Header Drag Zones
+                            </li>
+                            <li>[EXTJSIV-358] HeaderContainer will disable checkbox in column menu when there is only a single header
+                            </li>
+                            <li>[EXTJSIV-582] Add Ext.Error custom error reporting class
+                            </li>
+                            <li>[EXTJSIV-574] Add an alias for all series and handle custom series creation and adding them in an imperative way
+                            </li>
+                            <li>[EXTJSIV-514] Reimplement rendering of Checkbox and Radio to use a custom image rather than native controls, for greater styling control and consistency across browsers
+                            </li>
+                            <li>[EXTJSIV-241] Lots of cleanup on Component destroy method
+                            </li>
+                            <li>[EXTJSIV-599] Make node loaded a field in NodeInterface. When appending a child to a node, mark it as loaded
+                            </li>
+                            <li>Add the ability to pass a url to the load method on a Store with a ServerProxy defined on it
+                            </li>
+                            <li>[EXTJSIV-394] Added itemTpl support for DataView
+                            </li>
+                            <li>Add method to allow destroying the field layout's singleton QuickTip instance
+                            </li>
+                            <li>[EXTJSIV-604] Allow height to be set on text fields
+                            </li>
+                            <li>The footer toolbar's (fbar/buttons cfg) spacer shouldn't be focusable anymore
+                            </li>
+                            <li>Button now has a visual state when focused, which currently mirrors the mouseover state. Also removed a focus/blur method in Button that was unnecessary
+                            </li>
+                            <li>[EXTJSIV-450] FormPanel will provide default tab stops for its fields and buttons, so that all fields are tabbed through first, and then buttons second
+                            </li>
+                            <li>[EXTJSIV-450] AbstractPanel and AbstractDock will return/render docked items in their visual representative order, respectively. Docked items have a default weighting, so that they are returned/rendered in (t,l,r,b) order. In the case of a Dock layout, the top/left items are rendered before any existing DOM nodes in the render target (body el, in the case of a Panel), and right/bottom items are rendered after the existing DOM nodes. This keeps our DOM nodes in order of their visual representation to support tab stops, ARIA readers, etc. Also, getDockedItems/getRefItems of AbstractPanel will return the same type of ordering by default to support logical ordering of ComponentQuery's and FocusManager navigation
+                            </li>
+                            <li>Move FocusManager's tabIndex whitelist to the prototype so it's not defined over and over again for each call to setFocus
+                            </li>
+                            <li>[EXTJSIV-418] Added keydown event handling to DataView
+                            </li>
+                            <li>[EXTJSIV-600] Allow form fields to display all errors returned from getErrors at once, rather than only displaying the first
+                            </li>
+                            <li>[EXTJSIV-304] Grid reconfigure method implemented
+                            </li>
+                            <li>[EXTJSIV-498] Changed DataView to store the internal record IDs on the view DOM nodes for lookup by record and vice versa. This matters since blockRefresh's can happen and the store becomes out of sync with the DOM nodes, such as was the case with the Animated DataView plugin
+                            </li>
+                            <li>[EXTJSIV-483] Implement expanded cls for rows inside collectData instead of getRowClass. This allows the user to override getRowClass without them having to worry about expanded state
+                            </li>
+                            <li>[EXTJSIV-628] Added remove and destroy methods in Sprite.
+                            </li>
+                            <li>[EXTJSIV-55] Add boxLabelAlign config to allow the user to place the boxLabel before or after the checkbox/radio
+                            </li>
+                            <li>[EXTJSIV-517] Optimized buffering of requests in PagingScroller
+                            </li>
+                            <li>[EXTJSIV-596] border:false on a Window removes borders from the body. The Window itself remains framed
+                            </li>
+                            <li>[EXTJSIV-523] Use the verticalScrollers calculated height when available rather than the raw dom
+                            </li>
+                            <li>[EXTJSIV-315] Updated access theme to have better styling across all components
+                            </li>
+                            <li>[EXTJSIV-613] Move extraParams onto the object instead of being per request
+                            </li>
+                            <li>RowEditor now transitions the error summary tip properly on back-to-back invalid records
+                            </li>
+                            <li>Remove the inline unselectable cls, and instead call unselectable() on the table view's el after it's been rendered. This fixes a selection problem in Chrome when double clicking in a grid
+                            </li>
+                            <li>[EXTJSIV-527] Add a workaround for the WebKit MarginRight bug with Anchor Layouts to make them much faster
+                            </li>
+                            <li>[EXTJSIV-527] Componentlayout.afterLayout will now only be called when a ComponentLayout occurs
+                            </li>
+                            <li>[EXTJSIV-527] Ensure Card.setActiveItem calls onLayout properly
+                            </li>
+                            <li>Moved all locking behavior out of the LockingGridPanel subclass
+                            </li>
+                            <li>[EXTJSIV-660] Add startDay to Date Field
+                            </li>
+                            <li>[EXTJSIV-653] Added DirectStore shortcut
+                            </li>
+                        </ul>
+                    </li>
+                    <li>API Changes
+                        <ul>
+                            <li>[EXTJSIV-276] The "headers" config in GridPanel has been renamed to the 3.x compatible "columns". All supporting classes are now named XxxxxColumn and are in the Ext.grid.column package. Column xtypes are the same as they were in 3.x
+                            </li>
+                            <li>[EXTJSIV-562] Added hideEmptyLabel config which automatically collapses the label space when fieldLabel is empty. Made this the default behavior everywhere; this is a slight change from the old form layout which defaulted to maintaining the space unless hideLabel=false
+                            </li>
+                            <li>[EXTJSIV-59] Rename some methods in Menu to be consistent with framework standards
+                            </li>
+                            <li>Modified field layout to avoid setting styles when not needed. The fieldLabel element's styles are now applied during render in the template and not in the layout. Fields whose size are not managed by a container no longer set their internal element sizes during layout this can result in wrapping since fields are floated
+                            </li>
+                            <li>Add inverse iteration support to Ext.Array.each
+                            </li>
+                            <li>Rename hlColor to repairHighlightColor for Tree DragSource
+                            </li>
+                            <li>[EXTJSIV-38] TreeViewDDPlugin now has "nodeHighlightColor" which is used on repairs and drops, if applicable. Passing it as the "repairHighlightColor" to the drag zone in this commit. Will be passed to drop zone as "dropHighlightColor"
+                            </li>
+                            <li>[EXTJSIV-38] Renamed hlDrop to nodeHighlightOnDrop and nodeHighlightOnRepair on the TreeViewDDPlugin class. They are routed to the TreeViewDragZone and TreeViewDropZone as repairHighlight and dropHighlight respectively
+                            </li>
+                            <li>[EXTJSIV-552] Rename MessageBoxWindow to MessageBox
+                            </li>
+                            <li>Move all locales package from core to extjs
+                            </li>
+                            <li>[EXTJSIV-548] Add allowDrag config option on NodeInterface. Set it to false by default for root nodes
+                            </li>
+                            <li>[EXTJSIV-549] Change the names for the relayed events from TreeStore to TreePanel so that they don't collide with Panel's events
+                            </li>
+                            <li>[EXTJSIV-602] Put GridViewDDPlugin and TreeViewDDPlugin into proper namespaces (Ext.grid.plugin)
+                            </li>
+                            <li>[EXTJSIV-269] Renamed enableCacheBuster to disableCaching, added disableCachingParam config
+                            </li>
+                            <li>[EXTJSIV-581] Fixed up the API for TreeStore, TreeView and TreePanel. Also fixed some bugs related to changing the root node dynamically, loading data after TreePanel has already been created and expanding a node while its loading
+                            </li>
+                            <li>[EXTJSIV-598] We no longer use the global QuickTips singleton for form error tips. We now create a QuickTip singleton just for the field layout, with the proper baseCls for framing, and register it to respond to an 'errorqtip' property
+                            </li>
+                            <li>[EXTJSIV-534] Refactor Lockable into mixin
+                            </li>
+                            <li>AbstractSummaryFeature, ChunkingFeature, GroupingFeature, RowSummaryFeature, RowBodyFeature, RowWrapFeature, and SummaryFeature moved to the Ext.grid.feature namespace
+                            </li>
+                            <li>Rename locked from Header/Column to ddLock so that it doesnt conflict with the new locking functionality
+                            </li>
+                        </ul>
+                    </li>
+                    <li>Compatibility Changes
+                        <ul>
+                            <li>Removed compat reversing of El.down/El.child - There are too many places in Ext itself that use these calls, and reversing them in the compat layer to match 3.x behavior breaks some Ext 4 code. This will have to remain a documented breaking change in the migration guide
+                            </li>
+                            <li>Set up compat code for TreePanel, AsyncTreeNode, TreeLoader and TreeSorter
+                            </li>
+                            <li>Moved deprecated TreePanel members to the compat file
+                            </li>
+                        </ul>
+                    </li>
+                    <li>Documentation Changes
+                        <ul>
+                            <li>Guide section added to documentation. Class System and Drawing/Charting Guides added
+                            </li>
+                            <li>File field updated
+                            </li>
+                            <li>Model.fields updated
+                            </li>
+                            <li>Component updated
+                            </li>
+                            <li>FocusManager updated
+                            </li>
+                            <li>Viewport updated
+                            </li>
+                            <li>FormPanel updated
+                            </li>
+                            <li>ActionHeader updated
+                            </li>
+                            <li>GridViewDDPlugin updated
+                            </li>
+                            <li>ColumnLayout updated
+                            </li>
+                            <li>DateMenu updated
+                            </li>
+                            <li>Panel updated
+                            </li>
+                            <li>TabPanel updated
+                            </li>
+                            <li>TreeViewDDPlugin updated
+                            </li>
+                            <li>Animate updated
+                            </li>
+                            <li>ClassLoader updated
+                            </li>
+                            <li>Animator updated
+                            </li>
+                            <li>BsicForm updated
+                            </li>
+                            <li>Label field updated
+                            </li>
+                            <li>Labelable updated
+                            </li>
+                            <li>Text field updated
+                            </li>
+                            <li>ElementLoader updated
+                            </li>
+                            <li>Sortable updated
+                            </li>
+                            <li>AbstractComponent updated
+                            </li>
+                            <li>Locales updated
+                            </li>
+                            <li>Ext.Number updated
+                            </li>
+                            <li>Tab updated
+                            </li>
+                            <li>TabPanel updated
+                            </li>
+                            <li>StateProvider updated
+                            </li>
+                            <li>Editing updated
+                            </li>
+                            <li>Panel updated
+                            </li>
+                            <li>CheckboxModel (selection) updated
+                            </li>
+                            <li>TreePanel updated
+                            </li>
+                            <li>Ext updated
+                            </li>
+                            <li>Class updated
+                            </li>
+                            <li>ClassManager updated
+                            </li>
+                            <li>Array updated
+                            </li>
+                            <li>Anim updated
+                            </li>
+                            <li>FieldSet updated
+                            </li>
+                            <li>Grid Column updated
+                            </li>
+                            <li>Application updated
+                            </li>
+                            <li>Controller updated
+                            </li>
+                            <li>ControllerManager updated
+                            </li>
+                            <li>ModelManager updated
+                            </li>
+                            <li>Router updated
+                            </li>
+                            <li>BufferStore updated
+                            </li>
+                            <li>JSON Writer updated
+                            </li>
+                            <li>Charts updated
+                            </li>
+                            <li>DrawComponent updated
+                            </li>
+                            <li>Toolbar updated
+                            </li>
+                            <li>DataView updated
+                            </li>
+                            <li>Floating updated
+                            </li>
+                            <li>Resizer updated
+                            </li>
+                            <li>Store updated
+                            </li>
+                            <li>ComponentDragger updated
+                            </li>
+                        </ul>
+                    </li>
+                    <li>Known Issues / Upcoming Changes
+                        <ul>
+                            <li>MVC Example applications and guide
+                            </li>
+                            <li>Collapsed vertical headers need to be restyled in IE
+                            </li>
+                            <li>Toolips in IE8 have too much padding on the header which can cause it to clip text
+                            </li>
+                            <li>Tab Scroller is not working properly in FF &lt; 4
+                            </li>
+                            <li>GridFilter example is not laying out properly on first render
+                            </li>
+                            <li>Deprecated (methods slated for deprecation) and Since (what version methods were introduced) implemented within the documentation
+                            </li>
+                            <li>Column Layout has some performance issues which will be addressed in the next release
+                            </li>
+                            <li>API naming consistency implementation
+                            </li>
+                            <li>Field Layout performance has improved, but is not where it should be for IE
+                            </li>
+                            <li>IE9 Strict mode subpixel rounding can cause wrapping issues (similar to https://bugzilla.mozilla.org/show_bug.cgi?id=458617)
+                            </li>
+                        </ul>
+                    </li>
+                </ul>
+            </div>
+            <div class="release">
+                <h1>
+                    Release Notes for Ext JS 4 Beta 1
+                </h1>
+                <p class="notes">
+                    Release Date: March 30, 2011<br>
+                    Version Number: 4.0.0beta1
+                </p>
+                <h2>
+                    New In This Release
+                </h2>
+                <ul>
+                    <li>New Examples
+                        <div style="margin-left: 2em">
+                            <ul>
+                                <li>
+                                    <a href="examples/core/spotlight.html">Spotlight example</a>
+                                </li>
+                            </ul>
+                            <ul>
+                                <li>
+                                    <a href="examples/direct/direct-grid.html">Ext.Direct Grid Integration</a>
+                                </li>
+                            </ul>
+                            <ul>
+                                <li>
+                                    <a href="examples/form/form-grid-access.html">Binding a Grid to a Form</a>
+                                </li>
+                            </ul>
+                            <ul>
+                                <li>
+                                    <a href="examples/grid/cell-editing.html">Grid Cell Editing</a>
+                                </li>
+                            </ul>
+                            <ul>
+                                <li>
+                                    <a href="examples/grid/group-header-grid.html">Grid Grouping</a>
+                                </li>
+                            </ul>
+                            <ul>
+                                <li>
+                                    <a href="examples/grid/group-summary-grid.html">Grid Grouping with Summaries</a>
+                                </li>
+                            </ul>
+                            <ul>
+                                <li>
+                                    <a href="examples/grid/infinite-scroll.html">Grid 'Infinite' Scrolling</a>
+                                </li>
+                            </ul>
+                            <ul>
+                                <li>
+                                    <a href="examples/grid/live-search-grid.html">Live Search Grid</a>
+                                </li>
+                            </ul>
+                            <ul>
+                                <li>
+                                    <a href="examples/grid/locking-grid.html">Grid Locking</a>
+                                </li>
+                            </ul>
+                            <ul>
+                                <li>
+                                    <a href="examples/grid/remote-group-summary-grid.html">Grid Remote Group Summary</a>
+                                </li>
+                            </ul>
+                            <ul>
+                                <li>
+                                    <a href="examples/grid/row-editing.html">Grid Row Editing</a>
+                                </li>
+                            </ul>
+                            <ul>
+                                <li>
+                                    <a href="examples/layout/column.html">Column Layout</a>
+                                </li>
+                            </ul>
+                            <ul>
+                                <li>
+                                    <a href="examples/menu/action-grid.html">Actions</a>
+                                </li>
+                            </ul>
+                            <ul>
+                                <li>
+                                    <a href="examples/tabs/tab-scroller-menu.html">Overflow Tabs to a Menu</a>
+                                </li>
+                            </ul>
+                            <ul>
+                                <li>
+                                    <a href="examples/tree/check-tree.html">Tree with CheckBox selection</a>
+                                </li>
+                            </ul>
+                            <ul>
+                                <li>
+                                    <a href="examples/tree/two-trees.html">Drag and Drop between Trees</a>
+                                </li>
+                            </ul>
+                            <ul>
+                                <li>
+                                    <a href="examples/view/animated-dataview.html">Animated DataView</a>
+                                </li>
+                            </ul>
+                            <ul>
+                                <li>
+                                    <a href="examples/view/multisort/multisort.html">MultiSort DataView</a>
+                                </li>
+                            </ul>
+                            <ul>
+                                <li>
+                                    <a href="examples/grid-filtering/grid-filter-local.html">Locally Filtered Grid</a>
+                                </li>
+                            </ul>
+                            <ul>
+                                <li>
+                                    <a href="examples/restful/restful.html">RESTful Store with GridPanel and RowEditor</a>
+                                </li>
+                            </ul>
+                            <ul>
+                                <li>
+                                    <a href="examples/locale/dutch-form.html">Localization (static)</a>
+                                </li>
+                            </ul>
+                            <ul>
+                                <li>
+                                    <a href="examples/locale/multi-lang.html">Localization (dynamic)</a>
+                                </li>
+                            </ul>
+                            <ul>
+                                <li>
+                                    <a href="examples/state/state.html">Browser State</a>
+                                </li>
+                            </ul>
+                            <ul>
+                                <li>
+                                    <a href="examples/writer/writer.html">Data.writer</a>
+                                </li>
+                            </ul>
+                        </div>
+                    </li>
+                    <li>Bug Fixes
+                        <ul>
+                            <li>Fixed an issue where menu items would not respect the cls property
+                            </li>
+                            <li>Fixed improper variable in RemotingProvider
+                            </li>
+                            <li>Fixed param logic in DirectProxy
+                            </li>
+                            <li>Fixed an issue when reloading stores with different data sets
+                            </li>
+                            <li>Added a finite check for a DrawComponent's bounding box
+                            </li>
+                            <li>Pass the correct parameter to ServerProxy.afterRequest
+                            </li>
+                            <li>Fix indexOf reference in ListMenu
+                            </li>
+                            <li>When a date is chosen for a date filter, hide its parent menu
+                            </li>
+                            <li>Add autocomplete="off" to Button template to prevent Firefox from remembering its disabled state between page reloads
+                            </li>
+                            <li>Prevent NumericFilter's menu fields from getting focused when mousing over them
+                            </li>
+                            <li>Fix form submission when using direct
+                            </li>
+                            <li>Fixed an issue where phantom records were being duplicated in the store when returned from a remote data source
+                            </li>
+                            <li>Fixed an issue when clearing a client data proxy
+                            </li>
+                            <li>Fixed Model dependencies
+                            </li>
+                            <li>Removed redundant requires in Component
+                            </li>
+                            <li>Fix to make sure initExtCss always executes after Ext.supports.init
+                            </li>
+                            <li>Fix an issues where the expander icons are hidden when lines: false is used
+                            </li>
+                            <li>Ensure that the grid doesn't trigger a sort on the store when it renders
+                            </li>
+                            <li>Fix setValue method and initial value config on HtmlEditor
+                            </li>
+                            <li>Fixed recursive cloning of a non "plain" object (the constructor of which is !== Object)
+                            </li>
+                            <li>Ensure a layout isn't triggered if the container is destroying
+                            </li>
+                            <li>Fixed the styling of forms in a toolbar
+                            </li>
+                            <li>Fixed Window restore issue
+                            </li>
+                            <li>Fixed Grid dependencies
+                            </li>
+                            <li>Fix Accordion layout when initially layed out with no child items
+                            </li>
+                            <li>Updating $font-size dynamic variable's to use ceil to fix sub-pixel (ex: 10.4px) font-sizes
+                            </li>
+                            <li>Fixed multiple issues with rotated labels on category axis
+                            </li>
+                            <li>Fix TabPanel dependencies
+                            </li>
+                            <li>Fix typo in alternateClassName definitions
+                            </li>
+                            <li>If the panel has a re-expander, make sure the title is set when setTitle is called
+                            </li>
+                            <li>Fix an issue where panels would not be collapsed initially when not in a container
+                            </li>
+                            <li>Allow the combo store to be bound using a single flat array
+                            </li>
+                            <li>Fix autoCreated Store setup in StoreManager
+                            </li>
+                            <li>Fix unreachable code in Ext.getDom
+                            </li>
+                            <li>Properly clear managedListeners array in Observable
+                            </li>
+                            <li>Fix problem with the animate config option replacing the animate method
+                            </li>
+                            <li>Fixed grid scroll options 'horizontal' and 'none'
+                            </li>
+                            <li>Fix problem with autoHeighting TabPanels by their child items
+                            </li>
+                            <li>Fix menu box overflow handler on IE
+                            </li>
+                            <li>Fixed stacked bar chart axis calculation issue
+                            </li>
+                            <li>Fix scaling re-calculation issue for Bar, Line, Scatter series
+                            </li>
+                            <li>Fire change event when ComboBox value is changed
+                            </li>
+                            <li>Update alignment of ComboBox dropdown when its content changes, so it can flip from below to above or vice versa as the user types
+                            </li>
+                            <li>Clear selection in ComboBox.BoundList if it no longer matches the value in the field, so that the old value can be re-selected
+                            </li>
+                            <li>Fix bug with ComboBox where the value in the field would be blanked out while the user was typing with typeAhead:true
+                            </li>
+                            <li>Fix ComboBox scrolling selected item into view when list is expanded
+                            </li>
+                            <li>Set ComboBox selection in list when it is first created, if the ComboBox has an initial 'value' config
+                            </li>
+                            <li>Fix Scatter series shadow issue
+                            </li>
+                            <li>Don't reinsert a node into the NodeStore if its new parent is not part of the NodeStore
+                            </li>
+                            <li>Fixed issue with Element.destroy not being properly called resulting in memory problems for IE
+                            </li>
+                            <li>Fixed Ext.require() not firing callbacks after a failure
+                            </li>
+                            <li>Fixed Ext.Loader.getPath() not returning properly value for unknown namespace
+                            </li>
+                            <li>Forced setting the Axis minimum and maximum values specified by the configuration
+                            </li>
+                            <li>Fixed cropped window titles in various browsers
+                            </li>
+                            <li>Firefox fix for getNextId method in WebStorageProxy
+                            </li>
+                            <li>Fixed an issue with the id not being sent when calling load directly on the model
+                            </li>
+                            <li>Fixed a bug in previousNode and nextNode. They were not being checked before walking up the hierarchy and therefore triggered a cousin to always be returned
+                            </li>
+                            <li>Fixed discontinuous tree selection
+                            </li>
+                            <li>Field component onLayout was being run while the field was hidden but not after, so trigger width was always calcualted as zero. Changed order so layout occurs after show
+                            </li>
+                            <li>Fix reset method on sliders
+                            </li>
+                            <li>Fix application of emptyText in IE when ComboBox value is set
+                            </li>
+                            <li>Fix the setTitle text in windows with vertical headers
+                            </li>
+                            <li>Make empty ComboBox list item hoverable/clickable in IE quirks mode
+                            </li>
+                            <li>Fixes Sprite item Bounding Box offset in Opera
+                            </li>
+                            <li>Fix "Member not found" error in IE by preventing native event object from getting passed and used across the specialkey buffered listener
+                            </li>
+                            <li>Fix individual record update in Ext.grid.GroupingFeature
+                            </li>
+                            <li>Surface has now the ability to add in instances of Sprite and configuration objects
+                            </li>
+                            <li>Ensure datachanged event is fired when filtering the Store without sorters
+                            </li>
+                            <li>Adjust alignment styles for checkboxes and radios to match Ext3
+                            </li>
+                            <li>Fixed checkbox spacing + positioning in IE
+                            </li>
+                            <li>Fixed a bug in DataView Draggable where items in the ghost dataview would not be correctly removed
+                            </li>
+                            <li>Fix vertical clipping of CheckboxGroup columns without fixed widths in IE quirks mode
+                            </li>
+                            <li>Fix bug with Radial Axis scaling
+                            </li>
+                            <li>Fix an issue when retrieving the previous sibling of a component
+                            </li>
+                            <li>Fix sorter issue with DirectProxy
+                            </li>
+                            <li>Fix setReadOnly method in HtmlEditor
+                            </li>
+                            <li>Fix issue with looking up a store by id
+                            </li>
+                            <li>Fix problem hiding modal mask after modal window hide
+                            </li>
+                            <li>Fix support for passing a dom element as a target to an animation
+                            </li>
+                        </ul>
+                    </li>
+                    <li>Enhancements
+                        <ul>
+                            <li>Locking GridPanel implemtented
+                            </li>
+                            <li>Accessibility theme added
+                            </li>
+                            <li>Numeric Axis majorTickSteps added to set the number of major ticks between a `maximum` and a `minimum` value
+                            </li>
+                            <li>Implement the animate configuration option on TreePanel
+                            </li>
+                            <li>Implement singleExpand on TreePanel
+                            </li>
+                            <li>Store aggregation functions moved to the prototype
+                            </li>
+                            <li>Implemented checked field in NodeInterface. Have renderer add a checkbox if a value other then null is set in checked
+                            </li>
+                            <li>Implemented state support as a mixin
+                            </li>
+                            <li>Added html to each tab in the history example to make it clearer which tab is currently activated
+                            </li>
+                            <li>Refactored the GridFilters plugin UX as FiltersFeature, a Ext.grid.Feature subclass, and ported it to work with the new Ext4 grid architecture. Reworked the grid-filters example to match
+                            </li>
+                            <li>Inject the TableView instance into each grid filter, even if it is an already instantiated Filter rather than a filter config object
+                            </li>
+                            <li>Allow month picker items to wrap properly when inside components with white-space:nowrap like menus
+                            </li>
+                            <li>Refactoring a Theming so it is easier to customize
+                            </li>
+                            <li>Updated the themes example to include more components
+                            </li>
+                            <li>Added HTTP error info to the data operation when a request fails
+                            </li>
+                            <li>Added load event in preference of read event on TreeStore
+                            </li>
+                            <li>Grid headers now support grouping in which a header may be configured with a nested headers config object as well as a text/header string
+                            </li>
+                            <li>The Ext 3.x class ActionColumn has been implemented in 4.x as ActionHeader
+                            </li>
+                            <li>Cleaned all locale packages files
+                            </li>
+                            <li>Introduced a new getAssociatedData method on Model to make it easier to aggregate model data
+                            </li>
+                            <li>Added window state management
+                            </li>
+                            <li>Added state support for border layout
+                            </li>
+                            <li>Removed extraneous layout in Card.setActiveItem
+                            </li>
+                            <li>Made Ext.override proxy to Ext.Base.override if the class was created with Ext.define
+                            </li>
+                            <li>added Ext.Base.getName method
+                            </li>
+                            <li>Add animateTarget to show/hide of floating Components (such as Windows and Tooltips, or anything else that floats
+                            </li>
+                            <li>Allow the aggregation function to be called with the grouped parameter for consistency
+                            </li>
+                            <li>Added total summary and group summary support for the grid
+                            </li>
+                            <li>Fix combos example to make getInnerTpl work properly - now must be part of listConfig
+                            </li>
+                            <li>Implemented Ext.form.File, a custom field widget for file uploads
+                            </li>
+                            <li>Properly set class on field error quicktips
+                            </li>
+                            <li>Added grid state support
+                            </li>
+                            <li>Relay view and tree events to the TreePanel and TreeStore
+                            </li>
+                            <li>Added a new LocalStorage state provider
+                            </li>
+                            <li>Allow the model to be defined in the store prototype
+                            </li>
+                            <li>Implemented SutherlandâHodgman algorithm and use it for our render label axis implementation
+                            </li>
+                            <li>Implemented animate config option
+                            </li>
+                            <li>Styled invalid form qtips
+                            </li>
+                            <li>Implemented Tree sorting
+                            </li>
+                            <li>Add additional check in setStyle to ensure the dom node still exists before setting style on it
+                            </li>
+                            <li>FocusManager enhancements to support Containers being able to subscribe for keyboard navigation
+                            </li>
+                            <li>Implemented Ext.menu.DatePicker class
+                            </li>
+                            <li>Implemented Ext.menu.ColorPicker class
+                            </li>
+                            <li>Cleanup FocusManager's handling of component add/destroy when enabled
+                            </li>
+                            <li>Convert TabBar to use FocusManager.subscribe instead of its own KeyNav
+                            </li>
+                            <li>Grid Header needs to give visual indication when it is focused, which will show the menu trigger. This supports key navigation on grid headers and the ability to press down to open the header menu. The menu needs the trigger to be shown since it aligns itself to the trigger
+                            </li>
+                            <li>Add deep copy operation to NodeInterface
+                            </li>
+                            <li>Allow Ext.form.Basic#markInvalid to accept a Ext.data.Errors object
+                            </li>
+                            <li>Added logic to reduce/increase the number of columns in the shadowCt to match the number of items if columns:'auto'
+                            </li>
+                            <li>Updated MVC to work with dynamic loading
+                            </li>
+                            <li>Implemented CheckBox selection for Trees
+                            </li>
+                            <li>Prevent ComboBox from querying and expanding list on keyup if readOnly=true.
+                            </li>
+                            <li>HeaderDropZone will intelligently move a Header within the same container rather than add/remove, which will perform better as well as prevent add/remove events from firing unnecessarily on the HeaderContainer
+                            </li>
+                            <li>Trigger fields no longer reserve space for trigger when it is hidden due to readOnly=true
+                            </li>
+                            <li>Number field value can no longer be modified by up/down arrows or mousewheel when readOnly=true
+                            </li>
+                            <li>Implemented scrolling while dragging
+                            </li>
+                            <li>Implemented Grid Editing support as a plugin
+                            </li>
+                            <li>Clean html entities when setting text to an Surface Sprite
+                            </li>
+                            <li>Enhanced htmlDecode and htmlEncode methods in Ext.String
+                            </li>
+                            <li>Scatter and Line series now skip records with undefined yValues
+                            </li>
+                            <li>ComboBox now automatically set queryMode='local' for auto-generated array stores
+                            </li>
+                            <li>Ext.form.BaseField now rewraps the browser event object when firing the specialkey event, to prevent issues with buffered specialkey listeners
+                            </li>
+                            <li>Extended the useNull option to apply to boolean/string types for data stores
+                            </li>
+                            <li>Added deferredRender back to Card Layout (currently defaulted to true for TabPanel)
+                            </li>
+                            <li>Updated FeedViewer to be smarter about how it opened many tabs at once
+                            </li>
+                            <li>Modify Proxy so batching is configurable
+                            </li>
+                            <li>Allow a store configuration to be passed to data bound objects
+                            </li>
+                            <li>Add beginEdit/cancelEdit/endEdit functionality to Model
+                            </li>
+                            <li>Added isValid to Model for a shortcut
+                            </li>
+                            <li>Added autoSave support for Data writers
+                            </li>
+                            <li>Ensure writer always passes the id if we have a non phantom
+                            </li>
+                            <li>Made Tips constrain within their zIndexManager's client element. Change the constrain default to true
+                            </li>
+                            <li>Button will now use an anchor element when configured with an href
+                            </li>
+                            <li>Make Ext.form.Field.resetOriginalValue update the field's dirty state to match
+                            </li>
+                            <li>Automatically convert objects into records with NodeInterface
+                            </li>
+                            <li>Make ComboBox.getValue return the raw text field value if it does not match the display value from the last list selection or setValue call. Allows submitting values that do not appear in the store
+                            </li>
+                            <li>Enhance the appendChild, removeChild, insertBefore code on the NodeInterface with suppressEvents capabilities. This optimizes the performance of the initial Tree rendering drastically
+                            </li>
+                            <li>Implemented Grid RowEditing
+                            </li>
+                            <li>Basic.updateRecord() will now use the actual field data for updating the Model fields rather than the submit-friendly string equivalent of the form field data. Certain string encodings are not compatible with Model field covert methods if they are not in the exact/proper format, e.g. Date fields
+                            </li>
+                            <li>Remove Canvas support as it is not ready for release. SVG/VML still covers all desktop platforms.
+                            </li>
+                        </ul>
+                    </li>
+                    <li>API Changes
+                        <ul>
+                            <li>Moved methods slated for deprecation to the compat layer
+                            </li>
+                            <li>Added a new ElementLoader class that is the superclass of ComponentLoader. The purpose of this class is to replace Ext.Updater. Updater is removed and the load method now points to the new loader
+                            </li>
+                            <li>Move model creation into the model itself, essentially deprecates regModel
+                            </li>
+                            <li>Time axis now works with Dates and not formatted strings
+                            </li>
+                            <li>Move Ext.util.Date methods over to Ext.Date. Changed all references to Ext.Date in code, examples and tests
+                            </li>
+                            <li>Add workaround to Ext.core.Element#getWidth to avoid Gecko bug where it returns an offsetWidth that rounds down the actual width due to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=458617" target="_blank">subpixel font rendering</a>. This logic was previously in a couple of components, this commit moves that up to Element.getWidth
+                            </li>
+                            <li>Fix AbstractPanel.bodyCls to also support array values
+                            </li>
+                            <li>Created an AbstractMixedCollection which MixedCollection extends from
+                            </li>
+                            <li>Sortable refactored as a mixin
+                            </li>
+                            <li>Refactored Sorting on MixedCollection, TreeStore, and TreePanel to use the new Sortable mixin
+                            </li>
+                            <li>Absolute Layout will now always use setItemSize even if an anchor property isn't specified
+                            </li>
+                            <li>Ensure the page parameter gets sent on remote data loading
+                            </li>
+                            <li>Remove any trace of applyTo throughout the framework
+                            </li>
+                            <li>Updating the BoundList selection on setValue for ComboBox is now the default behavior
+                            </li>
+                            <li>Selection models are now consistent: Moved grid/CellSelectionModel.js to selection/CellModel.js, grid/RowSelectionModel.js to selection/RowModel.js, and grid/CheckBoxSelectionModel to selection/CheckBoxModel.js. Namespace moved to Ext.selection as well
+                            </li>
+                            <li>Set AjaxProxy as the default proxy
+                            </li>
+                            <li>Normalize store aliases to be store.name. Added the ability to specify a store configuration when creating a data bound class. Note that this requires all of the stores to be looked up using StoreManager.lookup so that we can determine whether we have received an id, a config or an instance
+                            </li>
+                            <li>Enhance DataView UI event handling
+                            </li>
+                            <li>Remove dependency of CellEditing on CellSelectionModel
+                            </li>
+                        </ul>
+                    </li>
+                    <li>Compatibility Changes
+                        <ul>
+                            <li>Implemented compat layer for PagingToolbar and MemoryProxy
+                            </li>
+                            <li>Significant update to AbstractStore compat layer to handle different store/proxy/reader config setups
+                            </li>
+                            <li>Updates to compat layer for AbstractStore and MemoryProxy to support filtering correctly
+                            </li>
+                            <li>Aliased row[de]select to [de]select
+                            </li>
+                            <li>Tweaked message formatting in compat layer for deprecating events
+                            </li>
+                            <li>The bodyStyle config types from 3.x are all now fully supported on Panel
+                            </li>
+                            <li>Compat code was using Array.indexOf, which did not agree with IE6. Switched to use Ext.Array.indexOf
+                            </li>
+                            <li>Alias Panel.bodyCssClass config to bodyCls
+                            </li>
+                            <li>Added Slider compat override to convert the SliderTip plugin to tipText config
+                            </li>
+                        </ul>
+                    </li>
+                    <li>Documentation Changes
+                        <ul>
+                            <li>Updated Ext.Date
+                            </li>
+                            <li>Fix the link to Ext Direct specification
+                            </li>
+                            <li>Correct spelling of 'resizable' and not 'resizeable'
+                            </li>
+                            <li>Updated Controller
+                            </li>
+                            <li>Updated Advanced DataView
+                            </li>
+                            <li>Update Ext.Window
+                            </li>
+                            <li>Added ActionHeader
+                            </li>
+                            <li>Added Ext.Base.override
+                            </li>
+                            <li>Updated AbstractDataView
+                            </li>
+                            <li>Updated Draw.Component
+                            </li>
+                            <li>Fix ComboBox docs error
+                            </li>
+                        </ul>
+                    </li>
+                    <li>Known Issues
+                        <ul>
+                            <li>Various styling fixes are ongoing
+                            </li>
+                            <li>Buttons are not part of the focusable items in a form
+                            </li>
+                            <li>Shadows to be implemented in the next release
+                            </li>
+                            <li>Tree Filtering and Editing to be implemented in the next release
+                            </li>
+                            <li>Performance and memory optimizations to be implemented in the next release
+                            </li>
+                            <li>Cleanup of API naming conventions to be implemented in the next release
+                            </li>
+                            <li>IE9 is not detected as supporting CSS3BorderRadius, which it only does in strict mode.
+                            </li>
+                        </ul>
+                    </li>
+                </ul>
+            </div>
+            <div class="release">
+                <h1>
+                    Release Notes for Ext JS 4 PR5
+                </h1>
+                <p class="notes">
+                    Release Date: March 18, 2011<br>
+                    Version Number: 4.0.0pr5
+                </p>
+                <h2>
+                    New In This Release
+                </h2>
+                <ul>
+                    <li>New Examples
+                        <div style="margin-left: 2em">
+                            <ul>
+                                <li>
+                                    <a href="examples/direct/named-arguments.html">Ext.Direct Named Arguments</a>
+                                </li>
+                                <li>
+                                    <a href="examples/form/registration.html">Registration Form</a>
+                                </li>
+                                <li>
+                                    <a href="examples/statusbar/statusbar-advanced.html">StatusBar</a>
+                                </li>
+                                <li>
+                                    <a href="examples/statusbar/statusbar-demo.html">Advanced StatusBar</a>
+                                </li>
+                                <li>
+                                    <a href="examples/tree/reorder.html">Tree Reporder</a>
+                                </li>
+                                <li>
+                                    <a href="examples/tree/xml-tree.html">XML Tree</a>
+                                </li>
+                                <li>
+                                    <a href="examples/tree/treegrid.html">TreeGrid</a>
+                                </li>
+                            </ul>
+                        </div>
+                    </li>
+                    <li>Bug Fixes
+                        <ul>
+                            <li>Fix bug on FF for Mac where an initial layout of boxes causes the innerCt to scroll, and it becomes stuck at the scrollPosition. Manifesting in layout-browser example
+                            </li>
+                            <li>Fix the problem in IE where the margin-bottom of the last item was not being included in the "auto" height of its Container
+                            </li>
+                            <li>Fix issue where dragging a child to become the last child in a folder would insert it in the wrong position
+                            </li>
+                            <li>Fix an issue where the sortType was not being honored when local sorting in a grid
+                            </li>
+                            <li>Fix issue when calling setProxy on a model subclass
+                            </li>
+                            <li>Fix Ext.panel.Table hideHeaders configuration option
+                            </li>
+                            <li>Fix button layout in IE7 when minWidth is set
+                            </li>
+                            <li>Fix minButtonWidth in FormPanels
+                            </li>
+                            <li>Fix bug where StoreManager would not be able to create a Store from a store config object
+                            </li>
+                            <li>Fix layout/alignment issues in fieldset legends with IE
+                            </li>
+                            <li>Fix for IE6 repaint bug on right edge of framed panel
+                            </li>
+                            <li>Fix display of tooltip anchor arrow
+                            </li>
+                            <li>Fix scope for custom validator method
+                            </li>
+                            <li>Fix icon position of grid header when align:right
+                            </li>
+                            <li>Fix issue with dateRenderer when dealing with null values
+                            </li>
+                            <li>Fix issue with masking in IE6-9 Quirks and IE6 strict
+                            </li>
+                            <li>Fix problem with Panel's initial collapse state setting, and subsequent expansion by the Accordion layout
+                            </li>
+                            <li>Fix ComboBox setValue to handle empty values
+                            </li>
+                            <li>Fix issue with Line Series shadows which weren't refreshed when animations were not enabled on
+                            </li>
+                        </ul>
+                    </li>
+                    <li>Enhancements
+                        <ul>
+                            <li>Refactored the Tree code. Working features as of this point are Tree rendering, expanding &amp; collapsing, drag and drop, loading a tree from memory, have multiple columns, keyboard navigation and selection model
+                            </li>
+                            <li>Added support for named arguments in Ext.Direct methods
+                            </li>
+                            <li>Every Record registers itself with the ModelManager
+                            </li>
+                            <li>Implemented Tree collapse and expand animations
+                            </li>
+                            <li>Implement loading nodes in a sorted TreeStore
+                            </li>
+                            <li>Added a lastframe event to the animation that only fires when the animation actually reaches its end
+                            </li>
+                            <li>Define getters for getting the computed height and width from an animations target to use as the from values
+                            </li>
+                            <li>Refactor Tree collapse and expand animations. This fixes quickly collapsing and expanding nodes
+                            </li>
+                            <li>Added a new transform option for Sorter
+                            </li>
+                            <li>Panel's getDockedItems now accepts a ComponentQuery selector string
+                            </li>
+                            <li>Add setSrc method to ImageComponent for changing the image src after initialization
+                            </li>
+                            <li>Added 'none' as a possible value for msgTarget, to prevent all error message rendering. Only fire errorchange event when the error message actually changes
+                            </li>
+                            <li>Add hideGroupedHeader support to Ext.grid.GroupingFeature
+                            </li>
+                            <li>FormPanel and FieldContainer both contained logic to handle the addition and removal of Labelable and Field instances within their items subtree; factored that common logic out into a FieldAncestor mixin for both to use. The new mixin also adds new events 'fieldvaliditychange' and 'fielderrorchange' that allow listening for changes at the parent container level
+                            </li>
+                            <li>Allow checkbox fields to display errors
+                            </li>
+                            <li>All the old config properties that controlled the dropdown list have been removed in favor of a single listConfig object, which gets passed along to the BoundList's config. This is much simpler and provides total control over all aspects of the list
+                            </li>
+                            <li>Implemented valueNotFoundText
+                            </li>
+                            <li>Enhanced BoundList layout to handle min/max for both width and height
+                            </li>
+                            <li>Implement ComboBox pageSize option
+                            </li>
+                            <li>elasticOut and bounceIn easing added for animations
+                            </li>
+                            <li>Added support for rootVisible. Also moved the creation of the NodeStore from TreeStore to the TreeView
+                            </li>
+                            <li>Added support for the 'root' configuration option on TreeStore. It supports the 3.3 way of specifying root and children. Automatically figures out whether to load children on expand from the server or memory. Also removed requirement to specify a proxy on a TreeStore. Removed requirement to specify store on TreePanel and support the 'root' config option on TreePanel automatically creating a TreeStore
+                            </li>
+                            <li>Modified TreeView so that it expands the root node if it's not visible
+                            </li>
+                            <li>Modified getSourceFiles to include support for writing XML documents
+                            </li>
+                            <li>Moved additional class for VML from javascript into the stylesheet
+                            </li>
+                            <li>Add in support for icon and iconCls on tree nodes
+                            </li>
+                            <li>Support loading flat json data while still loading children from the root property
+                            </li>
+                        </ul>
+                    </li>
+                    <li>API Changes
+                        <ul>
+                            <li>Refactored Tree to be able to decorate records with a Node API
+                            </li>
+                            <li>Reimplemented TreeStore and created new class called NodeStore
+                            </li>
+                            <li>Border layout is now responsible for performing a mini-collapse of a child Panel
+                            </li>
+                            <li>Panel now performs a collapse to leave its header (or a newly generated, injected header) visible. It does not perform a mini-collapse
+                            </li>
+                            <li>Renamed FlatTreeView to TreeView
+                            </li>
+                            <li>Correct getRefItems implementation in light of ComponentQuery selector being available in getDockedItems
+                            </li>
+                            <li>Add boxLabelEl as render selector for checkbox fields
+                            </li>
+                            <li>Ext.data.Model.id now assigns the new id to the record
+                            </li>
+                        </ul>
+                    </li>
+                    <li>Compatibility Changes
+                        <ul>
+                            <li>Added an alias for Ext.data.Field
+                            </li>
+                            <li>Added an alert when there are compat errors and no console
+                            </li>
+                            <li>Added compat code for GridView &amp; JsonStore
+                            </li>
+                            <li>Modified paging example to switch getRowClass to PreviewPlugin
+                            </li>
+                            <li>Added internal Ext 3 &gt; 4 class mapping utility
+                            </li>
+                        </ul>
+                    </li>
+                    <li>Documentation Refactors
+                        <ul>
+                            <li>Charting overview document
+                            </li>
+                            <li>Ext3 Legacy
+                            </li>
+                            <li>Ext.form.TextArea
+                            </li>
+                            <li>Ext.form.Checkbox
+                            </li>
+                            <li>Ext.form.Radio
+                            </li>
+                            <li>Ext.form.Field
+                            </li>
+                            <li>Ext.form.FieldContainer
+                            </li>
+                            <li>Ext.form.FieldSet
+                            </li>
+                            <li>Ext.form.Panel
+                            </li>
+                            <li>Ext.form.Labelable
+                            </li>
+                            <li>Ext.Base
+                            </li>
+                            <li>Ext.Button
+                            </li>
+                            <li>Ext.Component#draggable
+                            </li>
+                            <li>Ext.ComponentDragger
+                            </li>
+                            <li>Ext.Loader
+                            </li>
+                            <li>Ext.Array
+                            </li>
+                            <li>Ext.TabPanel
+                            </li>
+                            <li>Ext.TabPanel
+                            </li>
+                            <li>Ext.form.BaseField
+                            </li>
+                            <li>Ext.form.ComboBox
+                            </li>
+                            <li>Ext.form.Text
+                            </li>
+                            <li>Ext.form.Basic
+                            </li>
+                            <li>Ext.Toolbar
+                            </li>
+                            <li>Ext.data.SortTypes
+                            </li>
+                            <li>Ext.data.StoreManager
+                            </li>
+                            <li>Ext.state.Manager
+                            </li>
+                            <li>Ext.util.Animate
+                            </li>
+                            <li>Ext.form.Date
+                            </li>
+                            <li>Ext.form.Label
+                            </li>
+                            <li>Ext.form.Number
+                            </li>
+                            <li>Ext.Viewport
+                            </li>
+                            <li>Ext.Window
+                            </li>
+                            <li>Ext.ComponentQuery
+                            </li>
+                            <li>Ext.Panel
+                            </li>
+                            <li>Ext.form.FieldAncestor
+                            </li>
+                            <li>Ext.Container
+                            </li>
+                            <li>Ext.Component
+                            </li>
+                            <li>Ext.grid.ViewDDPlugin
+                            </li>
+                        </ul>
+                    </li>
+                    <li>Known Issues
+                        <ul>
+                            <li>Portal example not correct in IE6
+                            </li>
+                            <li>Toolbar menu overflow not styled in IE6
+                            </li>
+                            <li>Charts do not render properly in Safari 3.2
+                            </li>
+                            <li>Menu links (anchor tags) need styling
+                            </li>
+                            <li>Minor clipping of panel header text in Opera and IE6/7
+                            </li>
+                        </ul>
+                    </li>
+                </ul>
+            </div>
+            <div class="release">
+                <h1>
+                    Release Notes for Ext JS 4 Preview Release 4
+                </h1>
+                <p class="notes">
+                    Release Date: March 15, 2011<br>
+                    Version Number: 4.0.0pr4
+                </p>
+                <h2>
+                    New In This Release
+                </h2>
+                <ul>
+                    <li>New Examples
+                        <div style="margin-left: 2em">
+                            <ul>
+                                <li>Miscellaneous
+                                    <ul>
+                                        <li>
+                                            <a href="examples/charts/FormDashboard.html">Grid/Form/Chart Combo</a>
+                                        </li>
+                                        <li>
+                                            <a href="examples/charts/TipsChart.html">Rich tooltips (Chart/Grid)</a>
+                                        </li>
+                                        <li>
+                                            <a href="examples/key-feed-viewer/feed-viewer.html">Accessible Feed Viewer using keyboard navigation</a>
+                                        </li>
+                                        <li>
+                                            <a href="examples/keynav/keynav.html">Key Nav</a>
+                                        </li>
+                                    </ul>
+                                </li>
+                                <li>Drag and Drop
+                                    <ul>
+                                        <li>
+                                            <a href="examples/dd/dnd_grid_to_formpanel.html">Grid to form DnD</a>
+                                        </li>
+                                        <li>
+                                            <a href="examples/dd/field-to-grid-dd.html">Field to grid cell DnD</a>
+                                        </li>
+                                        <li>
+                                            <a href="examples/dd/dnd_grid_to_grid.html">Grid to Grid DnD</a>
+                                        </li>
+                                        <li>
+                                            <a href="examples/dd/dragdropzones.html">DataView to grid DnD</a>
+                                        </li>
+                                    </ul>
+                                </li>
+                                <li>Forms
+                                    <ul>
+                                        <li>
+                                            <a href="examples/form/contact-form.html">A common "contact us" popup form</a>
+                                        </li>
+                                        <li>
+                                            <a href="examples/form/checkout.html">A shopping cart checkout form</a>
+                                        </li>
+                                        <li>
+                                            <a href="examples/form/adv-vtypes.html">Advanced validations</a>
+                                        </li>
+                                    </ul>
+                                </li>
+                                <li>Toolbars
+                                    <ul>
+                                        <li>
+                                            <a href="examples/menu/menus.html">Simple toolbar with menus</a>
+                                        </li>
+                                        <li>
+                                            <a href="examples/toolbar/reorderable.html">Reorderable toolbar items</a>
+                                        </li>
+                                    </ul>
+                                </li>
+                                <li>Layouts
+                                    <ul>
+                                        <li>
+                                            <a href="examples/layout/accordion.html">Accordion layout example</a>
+                                        </li>
+                                        <li>
+                                            <a href="examples/layout/vbox.html">VBox layout manager examples</a>
+                                        </li>
+                                    </ul>
+                                </li>
+                                <li>Ext.Direct
+                                    <ul>
+                                        <li>
+                                            <a href="examples/direct/direct.html">Simple generic Direct example</a>
+                                        </li>
+                                        <li>
+                                            <a href="examples/direct/direct-form.html">Form submission using Direct</a>
+                                        </li>
+                                    </ul>
+                                </li>
+                            </ul>
+                        </div>
+                    </li>
+                    <li>Bug Fixes
+                        <ul>
+                            <li>Fix error in slideIn/slideOut when optional duration is not specified
+                            </li>
+                            <li>Fix and issue that can happen if only a single axis point is used in a bar chart
+                            </li>
+                            <li>Ensure lastFocused is reset when refreshing the selection model
+                            </li>
+                            <li>Fix EventManager issues with mouseenter/mouseleave events
+                            </li>
+                            <li>Fix {memberExpression} selector parsing
+                            </li>
+                            <li>Fix up alias for ArrayStore
+                            </li>
+                            <li>Fix currency function to accept and convert a numeric String input value
+                            </li>
+                            <li>Fix an issue where legend items don't remember their state between reload
+                            </li>
+                            <li>Fix up allowEl option for within, it should be used as a fallback if the element isn't contained within the parent
+                            </li>
+                            <li>Fix a highlighting issues with Pie
+                            </li>
+                            <li>Correct use of "float" keyword as object property name
+                            </li>
+                            <li>Fix buttons with noLinearGradients
+                            </li>
+                            <li>Change how field layout handles horizontal sizing when no set width is specified It now uses the shrink-wrapped natural size of its body content plus label, rather than the width of the outermost element. This fixes layout issues when fields are used as hbox items, since the outer element has zero width during initial layout. It also prevents fields from expanding to the full width of their container by default, which is more consistent with the Ext3 behavior
+                            </li>
+                            <li>Fix Box layout for when margins are specified in object for, but without all 4 properties. Default to zero
+                            </li>
+                            <li>Remove extraneous quote in GroupingFeature template
+                            </li>
+                            <li>Fix an issue when using autoHide and delegate with ToolTip
+                            </li>
+                            <li>Fix Combo hiding when using the scroller in FireFox
+                            </li>
+                            <li>Fix specificity of .x-form-invalid-field selector for textareas so the proper styling is shown
+                            </li>
+                            <li>Fixed width of slider tips, and tips in general, in IE quirks mode. Switches tips to use the table framing so they don't expand to full viewport width. Removes the bad width-setting logic from Ext.slider.Tip so it is properly handled by the layout class
+                            </li>
+                            <li>Fix box layout to correctly calculate middle alignment
+                            </li>
+                            <li>Correctly autosize the innerCt according to max component size (now takes innerCt's borders into account)
+                            </li>
+                            <li>Fix an issue when using a defaultValue with Boolean fields
+                            </li>
+                            <li>Fix an issue when saving/loading a model and the request fails
+                            </li>
+                            <li>Fix for improper font measurement in VML. Vertical header text should display more reliably. Still some work to do on adjusting for the font baseline.
+                            </li>
+                            <li>Ensure button does not show mouseover when disabled
+                            </li>
+                            <li>Fix call to cloneNode so it happens on the raw HTMLELement
+                            </li>
+                            <li>Fix up a typo in the RemotingProvider
+                            </li>
+                            <li>Fix an issue with form submissions with uploads
+                            </li>
+                            <li>Fix typo that caused file uploads to fail
+                            </li>
+                            <li>An autosized Panel which has been collapsed should now expand back properly
+                            </li>
+                            <li>Fix an issue where the store would not reload when filters are cleared while using remoteFilter
+                            </li>
+                            <li>Fix an issue where Model.setProxy would not accept a Proxy instance
+                            </li>
+                            <li>Fix a problem in the ZIndexManager where if a modal Window showed another floating Component (such as the BoundList of a Picker Field), the modal mask is hidden during the period that the Window is not at the topmost position in the z-index stack. Now the modal mask is only hidden when there are no Modal floating Components (usually modal Windows) displayed
+                            </li>
+                            <li>Fixed some IE 6/7/8 styles in Menu. IE6 had a "slit" in the item separator that is no longer there. Browsers without linear gradient support now use a nice looking background image for active items
+                            </li>
+                            <li>Fix for Menu in Opera 10, which does not report an element's width if it is not a part of a render box. We have to temporarily add it to the body to perform a measurement
+                            </li>
+                            <li>Change ReloadChart example to bind to the correct (left) axis
+                            </li>
+                            <li>Fix issue where the bounding box cache in VML was not getting cleared when it's path changes
+                            </li>
+                            <li>Fix toolbar button spacing in IE7 strict mode
+                            </li>
+                            <li>Fix an issue with split buttons where the arrow wasn't completely clickable
+                            </li>
+                            <li>Fix some issues with state track in Model
+                            </li>
+                            <li>Fix Box Layout calculation effecting margins
+                            </li>
+                            <li>Fix endDrag call to afterBoxReflow
+                            </li>
+                            <li>Fix an issue rendering bar chart categories in the wrong order
+                            </li>
+                            <li>Fix an issue when trying to position a floating component at 0,0
+                            </li>
+                            <li>Fix a chart display issue when using a single series in a vertical legend
+                            </li>
+                            <li>Fix an issue where the chart legend would move on redraw when using position: float
+                            </li>
+                            <li>Ensure hidden fields don't have any effect on form display
+                            </li>
+                            <li>Fix vertical alignment of paging toolbar number field
+                            </li>
+                            <li>Fix a problem where Windows do no display an icon when configured with a valid iconCls
+                            </li>
+                            <li>Fix bug in ComponentQuery, when using {expression} matching. Only the first {expression} used would ever be matched resulting in incorrect results.
+                            </li>
+                            <li>Fix styling of fieldset legends
+                            </li>
+                            <li>Fix height of text/trigger fields in IE quirks mode
+                            </li>
+                            <li>Fix spinner button sprite states when field is focused
+                            </li>
+                            <li>Fix an issue where viewports in IE6/7 would show a scrollbar by default
+                            </li>
+                            <li>Fix dependencies for Border Layout and Splitter classes
+                            </li>
+                            <li>Fix an issue when using non-string values in combo
+                            </li>
+                            <li>Fix an issue when using a belongsTo association and loading the parent object
+                            </li>
+                            <li>Fix an issue where RestProxy requests were being batched
+                            </li>
+                            <li>Fix sizes of Buttons in ButtonGroup
+                            </li>
+                            <li>Fix an issue when using an itemId in a border layout region
+                            </li>
+                            <li>Fix an issue where space was being reserved in IE7 for side error icon when there is no error
+                            </li>
+                            <li>Fix typo in throw error message in initframe
+                            </li>
+                        </ul>
+                    </li>
+                </ul>
+                <ul>
+                    <li>Enhancements
+                        <ul>
+                            <li>Introduced a TreePanel capable of supporting multiple headers. Abstracted shared logic between the Tree and Grid into a TablePanel class.
+                            </li>
+                            <li>Tab overflow implemented
+                            </li>
+                            <li>Menu overflow implemented
+                            </li>
+                            <li>Drag and Drop for Dataviews implemented
+                            </li>
+                            <li>Implemented Tree and Grid drag and drop
+                            </li>
+                            <li>FocusManager implemented (Jarred ELABORATE)
+                            </li>
+                            <li>HTMLEditor implemented
+                            </li>
+                            <li>Ext Direct implemented, with a new DirectProxy
+                            </li>
+                            <li>Add support to ComponentQuery to accept member expression selectors in pseudo-class selectors
+                            </li>
+                            <li>Support member expression selectors for ComponentQuery in the same way as attribute selectors, by allowing them to occur anywhere within a single selector chain to further filter the working group of items
+                            </li>
+                            <li>Added inheritable statics for Classes
+                            </li>
+                            <li>Refactor cleanup for Scatter Series
+                            </li>
+                            <li>Ensure doLayout doesn't run a layout that is already in progress
+                            </li>
+                            <li>Implement pruneRemoved for Ext.selection.Model
+                            </li>
+                            <li>Ensure selection model is refreshed when DataView is refreshed or records are added
+                            </li>
+                            <li>Create a reference to the Ext sandbox instance in generated functions
+                            </li>
+                            <li>Increment snap ends `to` argument properly
+                            </li>
+                            <li>Add feed viewer icon
+                            </li>
+                            <li>Box layout. Correct allocation of spare space to non-flexed items after a shortfall has caused a reduction to minSize
+                            </li>
+                            <li>Button layout: Now sets the outer element width if a numeric width passed
+                            </li>
+                            <li>Added "focusable: false" to menu &amp; toolbar separators so they are not candidates for gaining focus
+                            </li>
+                            <li>Updated Ext.menu.* to play nicely with Ext.FocusManager when enabled
+                            </li>
+                            <li>Menu: Constrain to within browser viewport and use box layout scroll overflow handler
+                            </li>
+                            <li>Implement disabled style for horizontal scroller
+                            </li>
+                            <li>Implement Ext.selection.TreeModel handling for left/right in the flattreeview. Turn it on in the TreePanel
+                            </li>
+                            <li>Enforce that user clicks expander to toggle a record
+                            </li>
+                            <li>Ensure that collapsed region placeholders are z-indexed above slide-ins
+                            </li>
+                            <li>Border layout now honors the floatable: false config
+                            </li>
+                            <li>Menus no longer access elements that are not rendered
+                            </li>
+                            <li>MenuManager now uses Ext.Array.remove instead of calling remove on the Array instance
+                            </li>
+                            <li>Ensure a region isn't floated if floatable: false is specified.
+                            </li>
+                            <li>DataView now ensures the selections get refreshed when the view does
+                            </li>
+                            <li>Implemented button as a link when an href/url is configured
+                            </li>
+                            <li>Implementes initial collapse state to collapse when the outermost Container (usually a Viewport) has been layed out, or, if no Container, on first component layout
+                            </li>
+                            <li>Removed legacy images file
+                            </li>
+                            <li>The framing method for non-CSS3 browsers which uses a table is necessary for proper width of floated components in IE quirks mode. Some floated components, such as Tip, have Dock layout which requires being able to insert docked items directly into the outermost element; this was failing when the outermost element was the table element. Changed to have a div as the outermost element with the table as an immediate child
+                            </li>
+                            <li>Prevent validation when initializing the field value, rather than validating but then clearing errors
+                            </li>
+                            <li>Apply correct CSS classes to Panel headers within collapsed Panels so that bordering can be kept consistent
+                            </li>
+                            <li>Add rule for column layout child items. They must float:left
+                            </li>
+                            <li>Implement 3.x style Column layout where child items float across the Container (Note this API is not finalized and may change)
+                            </li>
+                            <li>Labels for vertical axis are now hidden when they're too close to each other (or overlapping)
+                            </li>
+                            <li>Implemented weighting on docked items by returning a sorted array based on a weight property in AbstractPanel's getDockedItems method. Default weight is 0
+                            </li>
+                            <li>Addition code to ensure the data proxy gets its params correctly
+                            </li>
+                            <li>A parent menu's hide timer (on mouse leave) will be cancelled when hovering over a submenu
+                            </li>
+                            <li>Add x-quirks to when we're in quirks mode (!Ext.isStrict), useful for CSS that must know whether or not in quirks mode, as x-border-box is applied on all browsers that aren't IE6/7 in both quirks and strict modes
+                            </li>
+                            <li>Implemented hideHeaders and provide backwards compat layer for preventHeaders
+                            </li>
+                            <li>Implement fill:false in Accordion layout which means that expanded child Panels are not fitted within the accordion Container, but assume their natural height. Implement multi:true which allows multiple items to be opened at once when using fill:true. The opened Panels share available space by using the Box layout flex config
+                            </li>
+                            <li>Implement a Component click event in Header. This is for use by Panel's titleCollapse configuration
+                            </li>
+                            <li>Accordion layout now propagates its Panel-specific configurations to child Panels
+                            </li>
+                            <li>Implement titleCollapse for Panel
+                            </li>
+                            <li>Added writeAllFields method to the data writers
+                            </li>
+                            <li>Add beforeselect event to DataViewModel
+                            </li>
+                            <li>Restored original fonts and font-weights in the default theme to be the same as of 3.3
+                            </li>
+                            <li>Class.override now adds an owner reference to methods that didn't exist in the superclass yet
+                            </li>
+                            <li>Users can now override the sortParam used when sorting a particular Header
+                            </li>
+                            <li>Ensure we use the browser normalized array methods for DataView
+                            </li>
+                            <li>Add a findLayoutController method which goes up the ownerCt chain to find the highest currently active layout so that afterlayout events may be tracked to fire when a final size has been arrived at
+                            </li>
+                            <li>Card layout now calls afterLayout on the card Container after card activation
+                            </li>
+                            <li>Refactor getWidth, getHeight, and getViewSize to account for IE quirks mode measurement issues when a container is overflowed
+                            </li>
+                            <li>TabBar now scrolls the active tab into view upon set of active tab
+                            </li>
+                            <li>Added new isIEQuirks flag
+                            </li>
+                            <li>Tweak bar/column chart starting points so they don't overlap the axis
+                            </li>
+                            <li>Ensure box layout takes border space of the innerCt into account when centering
+                            </li>
+                            <li>Tooltips no longer get focus when they call toFront()
+                            </li>
+                            <li>Users may now provide their own CSS rules for enabling overflow on other box layout Containers. Currently we support Menu, Toolbar and TabBar overflowing.
+                            </li>
+                            <li>Window will now force the header creation if draggable is set to true
+                            </li>
+                            <li>Added a new Body Component layout for Components which maintain an inner body element which must synchronize its size with the encapsulating element
+                            </li>
+                            <li>FieldSet now uses a Component layout to synchronize the size of its body element with the size available within its main, encapsulating element
+                            </li>
+                            <li>Due to the use of the descendant selector for setting float/etc on field labels, fields nested within a FieldContainer would always get the styles corresponding to the container's labelAlign, even if their own labelAlign was different. Changed it so the label alignment className is now given directly to the label element rather than the parent, so the CSS no longer has to use descendant selectors
+                            </li>
+                            <li>The Trigger component layout was setting the height of the input field based on the incoming requested height; single-line input fields should always get their height from the CSS and ignore the layout's height
+                            </li>
+                            <li>Made AbstractDataView less strict in the type of parameter it accepts as a target for getRecord. It may now be an HtmlElement or an Ext.Element
+                            </li>
+                            <li>Added a frameHeader config which turns on/off framing on the Panel Header
+                            </li>
+                            <li>Added a ComponentLayout for Editor
+                            </li>
+                            <li>Ensure formBind is updated when the form is first created &amp; when items are added/removed
+                            </li>
+                            <li>Added the ability to assign a custom reader for reading associations
+                            </li>
+                        </ul>
+                    </li>
+                    <li>API Changes
+                        <ul>
+                            <li>Added destroy method to Model
+                            </li>
+                            <li>Move getItemForPoint up to Series and implement isItemInPoint in each series
+                            </li>
+                            <li>Added static methods for DataView
+                            </li>
+                            <li>Containers calls to doLayout will call ComponentLayout instead of ContainerLayout when they don't have dimensions (autosized)
+                            </li>
+                            <li>Change ComponentQuery's member expression filter function to use an "items" argument rather then accessing arguments.callee.caller.arguments, to be ES5/strict compliant and more straightforward
+                            </li>
+                            <li>Remove the use of arguments.callee from EventManager.createListenerWrap, and instead give a named reference to the return function. ES5/strict compliant, and works in all browsers
+                            </li>
+                            <li>Ensure DataView uses getItemSelector() when firing events
+                            </li>
+                            <li>Changed $prefix in scss to include `x-` not just `x`
+                            </li>
+                            <li>Remove box scroller subclasses. There's only one now which handles perpendicular/parallel
+                            </li>
+                            <li>Box layouts: new properties for use by box layout overflow handlers
+                            </li>
+                            <li>All box layout overflow scrolling is handled by a single class: Scroller
+                            </li>
+                            <li>TabBar now removes header text item and tool spacer. Use scroller overflow handler
+                            </li>
+                            <li>Added a new preventDefault option to button
+                            </li>
+                            <li>Remove HorizontalMenu class. There is only one Menu overflow handler
+                            </li>
+                            <li>Move scroll-specific methods out of overflow handler base class into the Scroll handler
+                            </li>
+                            <li>Added extra menu-active cls with btn.ui into menuShow
+                            </li>
+                            <li>Added menu-active cls to css
+                            </li>
+                            <li>Add slider layout class as dependency
+                            </li>
+                            <li>Not all floating components should be automatically focused when they are brought to the front; this adds a focusOnToFront config to control that behavior on a class or instance basis. Defaults to true, but is overridden to false in Tip and in the BoundList instances created by ComboBox and Time fields, to prevent losing field focus
+                            </li>
+                            <li>Ext.grid.View renamed to Ext.view.Table
+                            </li>
+                            <li>Throw an error message when trying to bind to an event handler that doesn't exist
+                            </li>
+                            <li>Add a border to collapsed panel headers depending on their docked position
+                            </li>
+                            <li>Renamed the legacySortMode config to simpleSortMode
+                            </li>
+                            <li>Added new API config for Server proxy and subclasses
+                            </li>
+                            <li>Removed Class.extend method (not to be confused with Ext.extend)
+                            </li>
+                            <li>Removed unused getHead method from Ext.data
+                            </li>
+                            <li>Ext.Date.parseDate changed to Ext.Date.parse. Add deprecaton for the older parseDate API.
+                            </li>
+                            <li>Unified Element and Element.static addUnits method which checks for a valid number or unitized String and throws a wraning message if a NaN is passed
+                            </li>
+                            <li>Changed "operation-complete" event in Batch to "operationcomplete"
+                            </li>
+                        </ul>
+                    </li>
+                    <li>Compatibility Changes
+                        <ul>
+                            <li>Added Ext.lib.Ajax compat
+                            </li>
+                            <li>Added Ext.reg / ComponentManager.regiserType aliases
+                            </li>
+                            <li>Fixed editor example's Panel.header reference
+                            </li>
+                            <li>Include css for message box example
+                            </li>
+                            <li>Alias Ext.lib.Dom.* to Element
+                            </li>
+                            <li>Fixed registerType/reg aliases, added registerPlugin/preg
+                            </li>
+                            <li>Moved legacy-only fx methods to compat file
+                            </li>
+                            <li>Moved Component overrides from core-compat to compat
+                            </li>
+                            <li>Added console msg about setting showErrors flag
+                            </li>
+                            <li>Compat fix for loading stores with an inline data object
+                            </li>
+                            <li>Moved xtype aliases from core-compat to compat
+                            </li>
+                            <li>Added additional non-Core JS object prototype aliases
+                            </li>
+                            <li>Ext.Date compat overrides
+                            </li>
+                            <li>Additional msg for instance methods becoming statics
+                            </li>
+                            <li>Added Ext.extend to the compat file, fixed a null error if members arg is not passed
+                            </li>
+                            <li>Added Store.setDefaultSort compat override
+                            </li>
+                            <li>Added GridPanel and Model compat overrides
+                            </li>
+                            <li>Added applyTo message to Ext.Component
+                            </li>
+                            <li>Added Ext.Compat.breaking() to show breaking changes
+                            </li>
+                            <li>Added appropriate messaging for most of the compat configs
+                            </li>
+                            <li>Moved compat items from combobox into the compat file
+                            </li>
+                            <li>Renamed Ext.Base.extend -&gt; Ext.Base.addStatics, deprecated Ext.Base.implement for Ext.Base.extend. In short, from now on, use MyClass.addStatics for statics members, MyClass.extend for prototype members
+                            </li>
+                            <li>Fixed tpl alias to implement the getInnerTpl method correctly
+                            </li>
+                            <li>Added isDef checks where needed to log messages only for defined configs
+                            </li>
+                            <li>Add compatibility for overriding Ext.form.Field.prototype.msgTarget
+                            </li>
+                            <li>Add compatibility handler for old implicit column containers in the CheckboxGroup/RadioGroup items
+                            </li>
+                            <li>AbstractStore and Store overrides for reconfiguring reader/proxy config if needed
+                            </li>
+                            <li>Aliased store.url support
+                            </li>
+                            <li>Reader support for optional recordType 2nd arg to constructor
+                            </li>
+                            <li>XmlReader constructor override to alias configs
+                            </li>
+                        </ul>
+                    </li>
+                    <li>Known Issues
+                        <ul>
+                            <li>Portal example not correct in IE6
+                            </li>
+                            <li>Toolbar menu overflow not styled in IE6
+                            </li>
+                            <li>Charts do not render properly in Safari 3.2
+                            </li>
+                            <li>Minor styling issues with forms/tabs/buttons (primarily in IE6/7)
+                            </li>
+                            <li>Menu links still need styling
+                            </li>
+                            <li>Minor clipping of panel header text in Opera and IE6/7
+                            </li>
+                        </ul>
+                    </li>
+                </ul>
+            </div>
+            <div class="release">
+                <h1>
+                    Release Notes for Ext JS 4 PR3
+                </h1>
+                <p class="notes">
+                    Release Date: March 3, 2011<br>
+                    Version Number: 4.0.0pr3
+                </p>
+                <h2>
+                    New In This Release
+                </h2>
+                <ul>
+                    <li>Bug Fixes
+                        <ul>
+                            <li>Across the board documentation updates and fixes
+                            </li>
+                            <li>Fix and implement CycleButton
+                            </li>
+                            <li>Detect that getAttributeNS is only available in IE9 when it is in IE9 standards mode
+                            </li>
+                            <li>Fix type in formatContainsHourInfo
+                            </li>
+                            <li>Fix shrinking problem on the y axis with line charts
+                            </li>
+                            <li>Fixed sandboxing for EventManager createListenerWrap, reported from
+                            </li>
+                            <li>Replaced all "new Function(...)" with Ext.functionFactory(...), which solves the sandboxing issues
+                            </li>
+                            <li>Fix reload of legends and hiding of pie slices shadows when changing the number of pie slices
+                            </li>
+                            <li>Fix bug in stateful where changes were not being tracked
+                            </li>
+                            <li>Fixed up slideIn and slideOut animation
+                            </li>
+                            <li>The code to get viewport width had been changed incorrectly while looking at another layout issue. It's been reverted to how it was before
+                            </li>
+                            <li>Various fixes for synchronous dynamic loading
+                            </li>
+                            <li>For data validations, fix inclusion and exclusion method by replacing array indexOf method that is not supported in IE by Ext.Array.indexOf
+                            </li>
+                            <li>Fix that allow to run Dispatcher spec without context, more precisely without Ext.History object
+                            </li>
+                            <li>IE fix for Ext.data.store, use Ext.Array.indexOf instead of indexOf native Array method which is not supported by IE
+                            </li>
+                            <li>IE fix for Ext.Number.toFixed
+                            </li>
+                            <li>Fix mouseenter and mouseleave events for SVG
+                            </li>
+                            <li>Specialized IE removeNode now specific to IE6 and IE7
+                            </li>
+                            <li>Fixed the zero gap issue for barchart as well as a anti-aliasing in the legend
+                            </li>
+                            <li>Fix framing for components with no bottom or top corners
+                            </li>
+                            <li>Improved Ext.extend backwards compatibility
+                            </li>
+                            <li>Fix XHR bug with timeout requests
+                            </li>
+                            <li>Fix a bug that only allows string values to be used with the {.} operator
+                            </li>
+                            <li>Fixed a bug with onAvailable in AbstractManager
+                            </li>
+                            <li>Fixed a bug in HashMap detecting an existing key when adding a new item
+                            </li>
+                            <li>Ext.Array.merge now properly acts like a true union set operation
+                            </li>
+                            <li>Fix padding on toolbar-text
+                            </li>
+                            <li>Fix css issues with tabs
+                            </li>
+                            <li>Fix css issues with grid
+                            </li>
+                            <li>Fix accordion header styling to match 3.x
+                            </li>
+                            <li>Fix portal example to use recently implemented accordion layout
+                            </li>
+                            <li>Set the collapsed flag before re-layouting the fieldset, so it can be used in isVisible calculations
+                            </li>
+                            <li>Fix date picker when using dynamic loading
+                            </li>
+                            <li>Fix welcome html files
+                            </li>
+                            <li>Fix border styling for DatePicker
+                            </li>
+                            <li>Fix class definition to set prototype properties when the Ext.Date class has been loaded in DatePicker
+                            </li>
+                            <li>Fix tag error in the RotateText example
+                            </li>
+                            <li>Fix styling of MenuItems' icons, checked/unchecked style rules target the *icon*, not the element
+                            </li>
+                            <li>Fix defaultFocus config when a number
+                            </li>
+                            <li>Fix incorrect expand icon in header of collapsed Panel in Accordion layout
+                            </li>
+                            <li>Fix bug in Time field's parsing
+                            </li>
+                            <li>Fix ComponentQuery member expression feature (e.g. '{isHidden()}' ) so it works as expected
+                            </li>
+                            <li>Fix framed panels header when collapsed
+                            </li>
+                            <li>Fix bottom tabsplit height with IE browsers
+                            </li>
+                            <li>Fix button padding when the icon is to the right
+                            </li>
+                            <li>Fix the width of grid sort indicators so they don't wrap as easily
+                            </li>
+                            <li>Fix arrow bottom buttons
+                            </li>
+                            <li>Fix form and triggerfield styling
+                            </li>
+                            <li>Fix styling issues with form/checkboxgroup
+                            </li>
+                            <li>Fix a bug with button, now using neutral color and not base
+                            </li>
+                            <li>Fix differently scaled buttons in a toolbar
+                            </li>
+                            <li>Fix cross browser issues with paging toolbar
+                            </li>
+                            <li>Fix for IE Ext.Array.toArray
+                            </li>
+                            <li>Fix Component.animate to ensure the component is returned and optimize when not animating height or width
+                            </li>
+                            <li>Fix styling for bottom tabs
+                            </li>
+                            <li>Fix tips so they no longer focus themselves when shown. In IE, it was taking focus from form fields
+                            </li>
+                            <li>Fix stroke widths in VML
+                            </li>
+                        </ul>
+                    </li>
+                    <li>Enhancements
+                        <ul>
+                            <li>A plethora of updates to the backward compatibility legacy files and guide
+                            </li>
+                            <li>Implemented combineErrors and combineLabels features in FieldContainer
+                            </li>
+                            <li>Added server-side usage support for Ext4: hammerJS and nodeJS tested
+                            </li>
+                            <li>Selection Model will now maintain last focused element in the View
+                            </li>
+                            <li>Add the ability to be able to load a single record with data reader
+                            </li>
+                            <li>Change shortcut easing functions to match CSS ones and added easeInOut. Benchmarked to be 300% faster at a minimum
+                            </li>
+                            <li>Add setItemSize method for Containers as a central method for all child item sizing
+                            </li>
+                            <li>Implement framing using background-position instead of background-image. This resolves the issue with the browser making a request to a 404 page for each framed component that doesn't have any generated framing css
+                            </li>
+                            <li>Preliminary support for onClick added for charts
+                            </li>
+                            <li>Implement Chart Mask mixin. Allows for selection of an area of a chart. This will be mixed into Axes as well for the next release.
+                            </li>
+                            <li>Add a new parseStyles method to transform a css string to an object with a bunch of properties. Use this new method in applyStyles in DomHelper and also in AbstractComponent
+                            </li>
+                            <li>Add new function to check if the format contains date/day info (ie. not time) - used in TimeField
+                            </li>
+                            <li>Add withinBox method to Draw
+                            </li>
+                            <li>Ext.Array.intersect method added
+                            </li>
+                            <li>Ext.Array.difference method added
+                            </li>
+                            <li>Ext.Array.union shortcut method for merge
+                            </li>
+                            <li>Begin clip-rect support in SVG and VML (incomplete)
+                            </li>
+                            <li>Change HashMap to no longer throw error when adding an existing key. Warn instead
+                            </li>
+                            <li>Added a cls into the rowexpander header cell and row cell for the first cell
+                            </li>
+                            <li>Added x-hidden cls for backward compatibility
+                            </li>
+                            <li>Update css for grids so it now uses css3 throughout
+                            </li>
+                            <li>Added images for special cells in grid
+                            </li>
+                            <li>All tabs have a font-weight of bold
+                            </li>
+                            <li>Move caching logic out of Anchor layout's anchorSpec functions to the base layout engine
+                            </li>
+                            <li>Add floor argument for example-data generator
+                            </li>
+                            <li>Removed deprecated layouts
+                            </li>
+                            <li>Accordion layout only animates during expand/collapse of child Panels
+                            </li>
+                            <li>Button layout caches measured styles for efficiency
+                            </li>
+                            <li>Feed Viewer uses CycleButton to cycle through the preview pane options
+                            </li>
+                            <li>Bringing a floating Component (such as a Window) to the front of its ZIndex stack now focuses it on a 10ms delay. Focusing several Windows in succession results in only the last Window actually receiving focus
+                            </li>
+                            <li>Refactor Border layout to use new Element effects methods to slide regions in and out
+                            </li>
+                            <li>TabBar now overrides the layout align option set by the Header superclass
+                            </li>
+                            <li>Changed tabs to use the base-color and not hard coded colors
+                            </li>
+                            <li>Changed button to no longer use hardcoded variables
+                            </li>
+                            <li>Make TabPanel dock the TabBar according to the tabPosition config
+                            </li>
+                            <li>SVG text is now unselectable
+                            </li>
+                            <li>A new 'errorchange' event has been added to Ext.form.Labelable, fired whenever set/unsetActiveError is called. This is similar to the 'validitychange' event on Ext.form.Field but is fired by Labelable components which are not Fields, such as FieldContainer. It also fires when the validity is staying invalid but the message changes, which is more useful in some cases
+                            </li>
+                            <li>BaseField now adds a .x-form-field-invalid class to the inputEl, and this is used in the CSS rather than using the outer .x-form-invalid and a descendant selector; this allows proper styling of child fields of a FieldContainer when the container has an error message displayed
+                            </li>
+                            <li>ComboBox clearValue method added back in
+                            </li>
+                            <li>Toolbar now uses the base-color
+                            </li>
+                            <li>Add extra checks to figure out whether we need to do DST parsing or not for Date function
+                            </li>
+                            <li>Add triggerNCls-over and triggerNCls-click classes to individual trigger buttons, so each one can be given interaction styling independently rather than requiring compound class selectors. Fixes spinner button states in IE
+                            </li>
+                            <li>FeedViewer example: Button icon CSS rules should only override the background image. Otherwise Ext-specific styling rules will not apply
+                            </li>
+                            <li>Group class attached to the icon element for style targeting in CheckItem
+                            </li>
+                            <li>ComponentQuery can now accept back-to-back pseudo-class selectors, like :not():not():custom
+                            </li>
+                            <li>Move back to setInterval instead of setTimer as a base for animation timing.
+                            </li>
+                            <li>Allow for binding of multiple axes to a series via an array
+                            </li>
+                        </ul>
+                    </li>
+                    <li>API Changes
+                        <ul>
+                            <li>AbstractLayout removed, Layout remains the base class now all AbstractLayout dependencies to Layout
+                            </li>
+                            <li>AbstractDataView has new getter method getItemSelector
+                            </li>
+                            <li>afteranimate event now fired as the last operation of the Anim.end method (instead of the beginning of the end)
+                            </li>
+                            <li>layoutItem moved to ContainerLayout from Layout
+                            </li>
+                            <li>Move resizeHandles config out of Window to Component
+                            </li>
+                            <li>Box will no longer use CSS margins. It reads CSS margins and adds them to the configured margins, and clears CSS margins. This allows for more accurate positioning
+                            </li>
+                            <li>Ext.form.CompositeField has been deprecated, as FieldContainer is now at feature parity. Alias has been added to compat file
+                            </li>
+                            <li>Ext.form.Field#checkValidityChange has been removed, its logic has been moved into the validate method so it gets run when validate is called directly
+                            </li>
+                            <li>Chart zoom functionality being changed to zoom the appropriate portions of the chart instead of everything
+                            </li>
+                        </ul>
+                    </li>
+                </ul>
+            </div>
+            <div class="release">
+                <h1>
+                    Release Notes for Ext JS 4 PR2
+                </h1>
+                <p class="notes">
+                    Release Date: February 23, 2011<br>
+                    Version Number: 4.0.0pr2
+                </p>
+                <h2>
+                    New In This Release
+                </h2>
+                <ul>
+                    <li>Bug Fixes
+                        <ul>
+                            <li>Across the board documentation updates and fixes
+                            </li>
+                            <li>Fixed a bug that caused an error when hovering over a SplitButton
+                            </li>
+                            <li>Fixed a bug with setting Proxies on Models
+                            </li>
+                            <li>Slider movement no longer lags behind the mouse
+                            </li>
+                            <li>Search now works on the generated documentation
+                            </li>
+                            <li>Fixed issues regarding date formatting
+                            </li>
+                            <li>Fixed chart destroy code
+                            </li>
+                            <li>Fixed an issue when entering a value into the PagingToolbar field
+                            </li>
+                            <li>Fixed positioning of the editor in the editor sample
+                            </li>
+                            <li>Change the order and ActiveX Objects that we use. This fixes XML Parsing via DomQuery in IE
+                            </li>
+                            <li>The last frame of an animation will account for any rounding issues
+                            </li>
+                            <li>Fix various Slider Tip issues
+                            </li>
+                            <li>Fix various Slider Field issues
+                            </li>
+                            <li>Border layout now calls setCalculatedSize when sliding in a hidden Component so that the Component's size does not get fixed and the "other" dimension that is not being set is not to auto by the ComponentLayout
+                            </li>
+                            <li>Fix preserving ratio to ensure that the largest minSize is honored.
+                            </li>
+                            <li>Fixed dependency issue with DatePicker
+                            </li>
+                            <li>Fix removing of current active tab
+                            </li>
+                            <li>Fix Ext.tab.Bar css sizing issue when the TabPanel has no items
+                            </li>
+                            <li>Ensure that there is at least one active tab if the tabpanel has items
+                            </li>
+                            <li>Fix issue with maintaining the constrain parameters in stretch and stretchmax
+                            </li>
+                            <li>Fix Firefox Ext.tab.Bar css sizing issue
+                            </li>
+                            <li>Remove tab focus outline on tabpanel tabs
+                            </li>
+                            <li>Fix icon rendering issue of TabPanel items
+                            </li>
+                            <li>Corrected styling of toolbar spacers
+                            </li>
+                            <li>Correct vertical alignment of text on most browsers
+                            </li>
+                            <li>Fix bug when entering a number into the PagingToolbar
+                            </li>
+                            <li>Fix MessageBoxWindow's initial laying out problem on FF
+                            </li>
+                            <li>Ensure RowSelectionModel fires select/deselect events.
+                            </li>
+                            <li>Fix issue where the parentMenu isn't set correctly if you pass an xtype
+                            </li>
+                            <li>Fix styling in resizer example
+                            </li>
+                            <li>Fix up the expand/collapse tool on FieldSet, it wasn't being toggled.
+                            </li>
+                            <li>Fix initially collapsed Panels in a border layout
+                            </li>
+                            <li>Border correctly hides hidden floated Panel after it's moved out of view
+                            </li>
+                            <li>Sandbox chart example now scopes all it's css, no more broken menus
+                            </li>
+                            <li>Set the background position correctly for progress bar background image
+                            </li>
+                            <li>Fix text alignment issue in progressbar.
+                            </li>
+                            <li>Fix element size issue for ie6 and ie7 in strict mode
+                            </li>
+                            <li>Resolved fighting of drag and drop resizing vs reordering
+                            </li>
+                            <li>Fixed an issue when submitting combo values
+                            </li>
+                            <li>Remove default minimum width on BoundList
+                            </li>
+                            <li>fix IE 7 icon separator zindex issue for Menu
+                            </li>
+                            <li>Fix problem where grids would incorrectly calculate the width of columns when they were not currently visible due to a layout. Like when they were in a TabPanel
+                            </li>
+                        </ul>
+                    </li>
+                    <li>Enhancements
+                        <ul>
+                            <li>All animations now support <a href="http://webstuff.nfshost.com/anim-timing/Overview.html">WC3 Timing control for script-based animations.</a> When available, else fall back to standard javascript timers.
+                            </li>
+                            <li>Implement optional scoping for border box CSS rules
+                            </li>
+                            <li>Implement optional scoping for reset CSS
+                            </li>
+                            <li>Tabs are now closable
+                            </li>
+                            <li>Basic form's getValues now handle fields whose getSubmitValue method returns an array of multiple values
+                            </li>
+                            <li>Several animation examples updated
+                            </li>
+                            <li>Fixed links on the welcome page
+                            </li>
+                            <li>Several updates to class documentation
+                            </li>
+                            <li>Menus now have full keyboard navigation support
+                            </li>
+                            <li>Menus now extend Panel to support docked items
+                            </li>
+                            <li>Menu SCSS improved by moving hardcoded theme variables to the variables SCSS file
+                            </li>
+                            <li>Ext.util.KeyNav can accept space key input
+                            </li>
+                            <li>HashMap.add may now take a single argument similar to MixedCollection.add
+                            </li>
+                            <li>Fx queue methods are now handled in the Fx.Queue mixin.
+                            </li>
+                            <li>fxStack removed from Element.cache, this is now maintained within Fx.Manager.
+                            </li>
+                            <li>Animate methods (animate, stopAnimation, syncFx, sequenceFx, and getActiveAnimation) now applied via a mixin to Element/CompositeElement/Component/Sprite/SpriteGroup
+                            </li>
+                            <li>Chart Series.js changed to use animate API. Rest of charts to follow
+                            </li>
+                            <li>Element translatePoints method refactored to handle undefined passed sizes gracefully
+                            </li>
+                            <li>EventManager preventDefault fix for IE <a href="http://support.microsoft.com/kb/934364/en-us">Link</a>
+                            </li>
+                            <li>Fix observable so it normalizes the event name in hasListener
+                            </li>
+                            <li>Ensure component cls and style properties are maintained on framed components
+                            </li>
+                            <li>Animator (keyframes) now fully support the iterations property
+                            </li>
+                            <li>Animator now properly supports stopping if beforeanimate returns false
+                            </li>
+                            <li>Normalize API differences between Element's addCls and removeCls. Both now allow space separated strings
+                            </li>
+                            <li>Implement endDrag method in DragTracker
+                            </li>
+                            <li>Handle mouse entering and leaving the arrow area of the Button
+                            </li>
+                            <li>Button now has a overMenuTrigger flag
+                            </li>
+                            <li>Split Button now uses the menuTriggerOver flag
+                            </li>
+                            <li>BorderLayout destroys its embedded Container upon destroy
+                            </li>
+                            <li>Allow setPagePosition to be passed one or other coordinates as undefined
+                            </li>
+                            <li>Border layout now implements parameter indices for setting size arguments in VBox and HBox
+                            </li>
+                            <li>Changing an error message will now be accounted for when errors are re-displayed
+                            </li>
+                            <li>Improved Grid CSS3 usage when available
+                            </li>
+                            <li>Component.setPosition method now uses component.animate
+                            </li>
+                            <li>Cleanup setPagePosition logic and account for NaN issues
+                            </li>
+                            <li>Rename string vars in Box to be more descriptive
+                            </li>
+                            <li>Add Toggle buttons to the chart examples
+                            </li>
+                            <li>Percentage width/height now supported in Border layout
+                            </li>
+                            <li>ZIndexManager now tracks browser resizes when the modal mask visible
+                            </li>
+                            <li>Border layout uses Component's animate method
+                            </li>
+                            <li>Border layout now correctly syncs size of hidden Components before sliding them into view
+                            </li>
+                            <li>Increase minWidth/minHeight of Resizer to 20
+                            </li>
+                            <li>Remove charts.swf as it is not needed anymore for the new Charts
+                            </li>
+                            <li>Added ResizeTracker: A multi-corner, constraining, aspect ratio preserving resize algorithm
+                            </li>
+                            <li>DragTracker will now process mouseout events correctly: Defer until mouseup if they happen during a drag
+                            </li>
+                            <li>Ensure RowSelectionModel select/deselect events are fired
+                            </li>
+                            <li>Fix bug where the parent menu wasn't getting assigned properly when specifying an xtype
+                            </li>
+                            <li>Adjust grid scrolling speed to be more consistent with the browser scroll speed
+                            </li>
+                            <li>Fix an issue with using initially collapsed regions in a border layout
+                            </li>
+                            <li>The Ext.JSON.encode method will now gracefully handle object types that it does not recognize by returning undefined as the value of unknown properties
+                            </li>
+                            <li>Sprite methods will all return the sprite upon completion
+                            </li>
+                            <li>Added backwards compatible Ext.extend that delegates to Ext.Class
+                            </li>
+                            <li>Keyframed animation's (Animator.js) start method is now controlled by fx.Manager
+                            </li>
+                            <li>Keyframed animations can now be properly queued and integrated with the Animate mixin
+                            </li>
+                            <li>Adjust the scroll delay algorithm to make the scrollbar more like the normal browser scrollbar
+                            </li>
+                            <li>Menu now extends Panel to support docking
+                            </li>
+                            <li>Grid now supports expand to fit
+                            </li>
+                            <li>Eliminate need for grid reorderer and resizer to be order dependent
+                            </li>
+                            <li>Added a submitFormat option for Date Field
+                            </li>
+                            <li>Cleaned up some undefined variables
+                            </li>
+                            <li>Charts now check for empty stores properly
+                            </li>
+                            <li>Element.addCls now more intelligent about adding a preceding space
+                            </li>
+                            <li>CheckboxGroup and RadioGroup implemented
+                            </li>
+                            <li>Add 'widget.grid' as a second alias
+                            </li>
+                            <li>Added private CheckboxManager class for managing checkboxes grouped by name, just like RadioManager
+                            </li>
+                            <li>BoxLayout now uses component.animate instead of Anim directly
+                            </li>
+                            <li>Add dirtyCls (defined in BaseField) to a field's outer element when it has a dirty value. CSS to display a marker not yet implemented
+                            </li>
+                        </ul>
+                    </li>
+                </ul>
+                <h2>
+                    API Changes
+                </h2>
+                <ul>
+                    <li>All top level CSS classes are now prefixed with 'x-' by default instead of 'ext-' and can now be scoped. This is now consistent with all other Ext CSS classes.
+                    </li>
+                    <li>HashMap.add may now take a single argument similar to MixedCollection.add
+                    </li>
+                    <li>Animate methods (animate, stopAnimation, syncFx, sequenceFx, and getActiveAnimation) now applied via a mixin to Element/CompositeElement/Component/Sprite/SpriteGroup
+                    </li>
+                    <li>Keyframed animations (Animator.js) now fully support the iterations property
+                    </li>
+                    <li>Normalized API differences between Element's addCls and removeCls. Both now allow space separated strings
+                    </li>
+                    <li>Implement endDrag method in DragTracker
+                    </li>
+                    <li>Button now has a overMenuTrigger flag
+                    </li>
+                    <li>Rename pressClass to pressedCls and add check before cls removal in ClickRepeater
+                    </li>
+                    <li>Remove unecessary onDisable/onEnable override in menu.Item and Button
+                    </li>
+                    <li>Rename disabledClass to disableCls in Component
+                    </li>
+                    <li>Removed the positionAnimation property since it is no longer necessary with the Component.animate API
+                    </li>
+                    <li>Removed reverse parameter from keyframed animations
+                    </li>
+                    <li>The pause and running flags now maintained within keyframed animations (Animator.js)
+                    </li>
+                    <li>Update the RowSelectionModel constructor so we can add more useful contextual information to the event
+                    </li>
+                    <li>Menu now extends Panel to support docking
+                    </li>
+                    <li>Add isOnLeftEdge and isOnRightEdge for Grid Header events
+                    </li>
+                    <li>Grid HeaderContainer dragging property now defaults to false
+                    </li>
+                    <li>Animate's getActiveAnimation will now return the current fx.Anim object if there is one or return false if none are active
+                    </li>
+                    <li>Renamed tab reorderer plugin to TabReorderer
+                    </li>
+                    <li>Renamed MenuManager to MenuManager
+                    </li>
+                    <li>Remove Ext.isForcedBorderBox property
+                    </li>
+                    <li>Remove the experimental enableForcedBoxModel property
+                    </li>
+                    <li>Ext.isBorderBox logic now reflects the use of css box model
+                    </li>
+                    <li>CheckboxGroup/RadioGroup setValue method has been simplified; it now only accepts a single format of an object of name-value mappings. The old additional formats will be added to the legacy compatibility layer as an override
+                    </li>
+                    <li>CheckboxGroup/RadioGroup getValue method has been changed to return an object of similar format to what is accepted by setValue for internal consistency. The old behavior has been moved to a new getChecked() method
+                    </li>
+                    <li>The methods setRawValue, getRawValue, valueToRaw, and rawToValue have been moved out of Field and into BaseField; this is to make the main Field interface simpler and more easily implemented on components which do not have the concept of an underlying "raw value" like CheckboxGroup
+                    </li>
+                    <li>Field now has a isEqual method which compares values returned from getValue() for logical equality, and is used anywhere a comparison is necessary such as checkChange() and isDirty(). The base implementation is a simple string comparison, but can be overridden by fields with more complex values
+                    </li>
+                    <li>Field now has a resetOriginalValue method which is called by the form when trackResetOnLoad=true instead of setting originalValue directly, this allows the behavior to be overridden by field subclasses
+                    </li>
+                    <li>Field's getSubmitValue method has been changed to a more powerful getSubmitData method, which returns a mapping object of name-value pairs; this allows single fields to return multiple values under different names rather than being limited to a single name per field. The getSubmitValue method has been retained as a helper but moved down to BaseField
+                    </li>
+                    <li>Introduced a batchChanges method on field as a utility for preventing excessive firing of change events in fields such as CheckboxGroup that have many sub-fields who may be updated as a batch
+                    </li>
+                    <li>Basic's isValid method has been changed back to its old behavior where it iterates through all fields in the form and triggers error markings. A new hasInvalidField method has been added to retain the more efficient short-circuited validity checking and preventing error markings
+                    </li>
+                </ul>
+                <h2>
+                    Known Issues
+                </h2>
+                <ul>
+                    <li>Tab heights not consistent across all browsers
+                    </li>
+                </ul>
+            </div>
+            <div class="release">
+                <h1>
+                    Release Notes for Ext JS 4 PR1
+                </h1>
+                <p class="notes">
+                    Release Date: February 16, 2011<br>
+                    Version Number: 4.0.0pr1
+                </p>
+                <h2>
+                    New In This Release
+                </h2>
+                <p>
+                    This is the first public release of Ext JS 4 (preview). We've prepared a full <a href="overview/index.html">release overview guide</a> to explore all of the changes made so far.
+                </p>
+            </div>
+        </div>
+    </body>
+</html>
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-all-access-debug.css
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-all-access-debug.css	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-all-access-debug.css	(revision 18277)
@@ -0,0 +1,9723 @@
+/*
+This file is part of Ext JS 4.1
+
+Copyright (c) 2011-2012 Sencha Inc
+
+Contact:  http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2012-07-04 21:11:01 (65ff594cd80b9bad45df640c22cc0adb52c95a7b)
+*/
+/* line 3, ../sass/ext-all-access.scss */
+body {
+  background: #000; }
+
+/**
+ * @class Global_CSS
+ *
+ * Global CSS variables and mixins of Sencha Touch.
+ */
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+/**
+ * @var {string} $theme-name
+ * The name of the theme. This must match the the output directory of the images.
+ * (defaults to 'default')
+ */
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+/**
+ * @var {string} $font-family
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $base-gradient
+ * The base gradient to be used throughout the theme.
+ */
+/**
+ * @var {color} $base-color
+ * The base color to be used throughout the theme.
+ */
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules
+ */
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+/**
+ * @var {boolean} $compile-all
+ * True to copile all CSS, even if above include rules are false
+ */
+/**
+ * @var {boolean} $scope-reset-css
+ * True to scope the reset CSS within the $prefix variable.
+ */
+/**
+ * @var {color} $css-shadow-background-color
+ * The base color for CSS shadows
+ */
+/**
+ * @var {color} $include-shadow-images
+ * True to include all shadow images.
+ */
+/**
+ * @class Ext.form.field.Base
+ */
+/**
+ * @var {measurement} $form-field-height
+ * Height for form fields.
+ */
+/**
+ * @var {measurement} $form-toolbar-field-height
+ * Height for form fields in toolbar.
+ */
+/**
+ * @var {measurement} $form-error-icon-width
+ * Width for form error icons.
+ */
+/**
+ * @var {measurement} $form-field-padding
+ * Padding around form fields.
+ */
+/**
+ * @var {measurement} $form-field-font-size
+ * Font size for form fields.
+ */
+/**
+ * @var {font-family} $form-field-font-family
+ * Font family for form fields.
+ */
+/**
+ * @var {font-weight} $form-field-font-weight
+ * Font weight for form fields.
+ */
+/**
+ * @var {font} $form-field-font
+ * Font for form fields.
+ */
+/**
+ * @var {color} $form-field-color
+ * Text color for form fields.
+ */
+/**
+ * @var {color} $form-field-empty-color
+ * Text color for empty form fields.
+ */
+/**
+ * @var {color} $form-field-border-color
+ * Border color for form fields.
+ */
+/**
+ * @var {measurement} $form-field-border-width
+ * Border width for form fields.
+ */
+/**
+ * @var {color} $form-field-focus-border-color
+ * Border color for focused form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-border-color
+ * Border color for invalid form fields.
+ */
+/**
+ * @var {color} $form-field-background-color
+ * Background color for form fields.
+ */
+/**
+ * @var {string} $form-field-background-image
+ * Background image for form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-background-color
+ * Background color for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-image
+ * Background image for invalid form fields.
+ */
+/**
+ * @var {background-repeat} $form-field-invalid-background-repeat
+ * Background repeat for invalid form fields.
+ */
+/**
+ * @var {background-position} $form-field-invalid-background-position
+ * Background position for invalid form fields.
+ */
+/**
+ * @class Ext.form.field.TextArea
+ */
+/**
+ * @class Ext.form.Label
+ */
+/**
+ * @class Ext.form.field.Checkbox
+ */
+/**
+ * @class Ext.form.field.Radio
+ */
+/* Error messages */
+/**
+ * @class Ext.form.field.Trigger
+ */
+/**
+ * @class Ext.form.FieldSet
+ */
+/**
+ * @class Ext.slider.Multi
+ */
+/**
+ * Creates a background gradient.
+ *
+ * @param {Color} $bg-color The background color of the gradient
+ * @param {String/List} [$type] The type of gradient to be used. Can either
+ * be a String which is a predefined gradient, or it can can be a list of
+ * color_stops. If none is set, it will still set the `background-color`
+ * to the $background-color.
+ * @param {String} [$direction=top] The direction of the gradient. Can either be
+ * `top` or `left`.
+ * @member Global_CSS
+ */
+/*
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error.
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to
+ * be true.
+ */
+/* line 77, ../themes/stylesheets/ext4/default/core/_reset.scss */
+html, body, div, dl, dt, dd, ul, ol, li, h1, h2, h3,
+h4, h5, h6, pre, code, form, fieldset, legend,
+input, textarea, p, blockquote, th, td {
+  margin: 0;
+  padding: 0; }
+
+/* line 82, ../themes/stylesheets/ext4/default/core/_reset.scss */
+table {
+  border-collapse: collapse;
+  border-spacing: 0; }
+
+/* line 87, ../themes/stylesheets/ext4/default/core/_reset.scss */
+fieldset, img {
+  border: 0; }
+
+/* line 92, ../themes/stylesheets/ext4/default/core/_reset.scss */
+address, caption, cite, code,
+dfn, em, strong, th, var {
+  font-style: normal;
+  font-weight: normal; }
+
+/* line 97, ../themes/stylesheets/ext4/default/core/_reset.scss */
+li {
+  list-style: none; }
+
+/* line 101, ../themes/stylesheets/ext4/default/core/_reset.scss */
+caption, th {
+  text-align: left; }
+
+/* line 105, ../themes/stylesheets/ext4/default/core/_reset.scss */
+h1, h2, h3, h4, h5, h6 {
+  font-size: 100%; }
+
+/* line 110, ../themes/stylesheets/ext4/default/core/_reset.scss */
+q:before,
+q:after {
+  content: ""; }
+
+/* line 114, ../themes/stylesheets/ext4/default/core/_reset.scss */
+abbr, acronym {
+  border: 0;
+  font-variant: normal; }
+
+/* line 119, ../themes/stylesheets/ext4/default/core/_reset.scss */
+sup {
+  vertical-align: text-top; }
+
+/* line 123, ../themes/stylesheets/ext4/default/core/_reset.scss */
+sub {
+  vertical-align: text-bottom; }
+
+/* line 127, ../themes/stylesheets/ext4/default/core/_reset.scss */
+input, textarea, select {
+  font-family: inherit;
+  font-size: inherit;
+  font-weight: inherit; }
+
+/* line 133, ../themes/stylesheets/ext4/default/core/_reset.scss */
+*:focus {
+  outline: none; }
+
+/* line 138, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-border-box,
+.x-border-box * {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  -webkit-box-sizing: border-box; }
+
+/* line 1, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-body {
+  color: white;
+  font-size: 15px;
+  font-family: tahoma, arial, verdana, sans-serif; }
+
+/* line 7, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-rtl {
+  direction: rtl; }
+
+/* line 11, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ltr {
+  direction: ltr; }
+
+/* line 15, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-clear {
+  overflow: hidden;
+  clear: both;
+  font-size: 0;
+  line-height: 0;
+  display: table; }
+
+/* line 23, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-strict .x-ie7 .x-clear {
+  height: 0;
+  width: 0; }
+
+/* line 31, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-layer {
+  position: absolute !important;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 37, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-shim {
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 45, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hide-display {
+  display: none !important; }
+
+/* line 49, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hide-visibility {
+  visibility: hidden !important; }
+
+/* line 56, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-item-disabled .x-form-item-label,
+.x-item-disabled .x-form-field,
+.x-item-disabled .x-form-cb-label,
+.x-item-disabled .x-form-trigger {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 60, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ie6 .x-item-disabled {
+  filter: none; }
+
+/* line 65, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hidden,
+.x-hide-offsets {
+  display: block !important;
+  visibility: hidden !important;
+  position: absolute!important;
+  left: -10000px !important;
+  top: -10000px !important; }
+
+/* line 75, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hide-nosize {
+  height: 0!important;
+  width: 0!important; }
+
+/* line 80, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-masked-relative {
+  position: relative; }
+
+/* line 86, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ie6 .x-masked select,
+.x-ie6.x-body-masked select {
+  visibility: hidden !important; }
+
+/* line 92, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-css-shadow {
+  position: absolute;
+  -moz-border-radius: 5px 5px;
+  -webkit-border-radius: 5px 5px;
+  -o-border-radius: 5px 5px;
+  -ms-border-radius: 5px 5px;
+  -khtml-border-radius: 5px 5px;
+  border-radius: 5px 5px; }
+
+/* line 98, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ie-shadow {
+  background-color: #777;
+  display: none;
+  position: absolute;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 107, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tl {
+  background: transparent no-repeat 0 0;
+  zoom: 1; }
+
+/* line 112, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tc {
+  height: 8px;
+  background: transparent repeat-x 0 0;
+  overflow: hidden; }
+
+/* line 118, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tr {
+  background: transparent no-repeat right -8px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-ml {
+  background: transparent repeat-y 0;
+  padding-left: 4px;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 129, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc {
+  background: repeat-x 0 -16px;
+  padding: 4px 10px; }
+
+/* line 134, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc h3 {
+  margin: 0 0 4px 0;
+  zoom: 1; }
+
+/* line 139, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mr {
+  background: transparent repeat-y right;
+  padding-right: 4px;
+  overflow: hidden; }
+
+/* line 145, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bl {
+  background: transparent no-repeat 0 -16px;
+  zoom: 1; }
+
+/* line 150, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bc {
+  background: transparent repeat-x 0 -8px;
+  height: 8px;
+  overflow: hidden; }
+
+/* line 156, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-br {
+  background: transparent no-repeat right -24px; }
+
+/* line 160, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tl, .x-box-bl {
+  padding-left: 8px;
+  overflow: hidden; }
+
+/* line 165, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tr, .x-box-br {
+  padding-right: 8px;
+  overflow: hidden; }
+
+/* line 170, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tl {
+  background-image: url('../../resources/themes/images/access/box/corners.gif'); }
+
+/* line 174, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tc {
+  background-image: url('../../resources/themes/images/access/box/tb.gif'); }
+
+/* line 178, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tr {
+  background-image: url('../../resources/themes/images/access/box/corners.gif'); }
+
+/* line 182, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-ml {
+  background-image: url('../../resources/themes/images/access/box/l.gif'); }
+
+/* line 186, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc {
+  background-color: #eee;
+  background-image: url('../../resources/themes/images/access/box/tb.gif');
+  font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;
+  color: #393939;
+  font-size: 15px; }
+
+/* line 194, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc h3 {
+  font-size: 18px;
+  font-weight: bold; }
+
+/* line 199, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mr {
+  background-image: url('../../resources/themes/images/access/box/r.gif'); }
+
+/* line 203, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bl {
+  background-image: url('../../resources/themes/images/access/box/corners.gif'); }
+
+/* line 207, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bc {
+  background-image: url('../../resources/themes/images/access/box/tb.gif'); }
+
+/* line 211, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-br {
+  background-image: url('../../resources/themes/images/access/box/corners.gif'); }
+
+/* line 215, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr {
+  background-image: url('../../resources/themes/images/access/box/corners-blue.gif'); }
+
+/* line 219, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc {
+  background-image: url('../../resources/themes/images/access/box/tb-blue.gif'); }
+
+/* line 223, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-mc {
+  background-color: #c3daf9; }
+
+/* line 227, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-mc h3 {
+  color: #17385b; }
+
+/* line 231, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-ml {
+  background-image: url('../../resources/themes/images/access/box/l-blue.gif'); }
+
+/* line 235, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-mr {
+  background-image: url('../../resources/themes/images/access/box/r-blue.gif'); }
+
+/* line 239, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-container {
+  zoom: 1; }
+  /* line 244, ../themes/stylesheets/ext4/default/core/_core.scss */
+  .x-container:before {
+    content: "";
+    clear: both;
+    display: table; }
+
+/* line 254, ../themes/stylesheets/ext4/default/core/_core.scss */
+table.x-container:before,
+tbody.x-container:before,
+tr.x-container:before {
+  display: none; }
+
+/* line 1, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-element {
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px; }
+
+/* line 9, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame {
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  z-index: 100000000;
+  width: 0px;
+  height: 0px; }
+
+/* line 21, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom,
+.x-focus-frame-left,
+.x-focus-frame-right {
+  position: absolute;
+  top: 0px;
+  left: 0px; }
+
+/* line 28, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom {
+  border-top: solid 2px #15428b;
+  height: 2px; }
+
+/* line 34, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame-left,
+.x-focus-frame-right {
+  border-left: solid 2px #15428b;
+  width: 2px; }
+
+/**
+ * Creates the base structure of a BoundList.
+ * @member Ext.view.BoundList
+ */
+/**
+ * Creates the base structure of an Ext.Button
+ * @member Ext.button.Button
+ */
+/**
+ * Creates a visual theme of an Ext.Button
+ * @member Ext.button.Button
+ */
+/**
+ * Creates the base structure of a button group.
+ * @member Ext.container.ButtonGroup
+ */
+/**
+ * Creates a visual theme of a button group.
+ * @member Ext.container.ButtonGroup
+ */
+/**
+ * Creates the base structure of a date picker.
+ * @member Ext.picker.Date
+ */
+/**
+ * Creates base structure for Ext.picker.Color
+ * @member Ext.picker.Color
+ */
+/**
+ * Creates the base structure of a Menu
+ * @member Ext.menu.Menu
+ */
+/**
+ * Create the base structure of an Ext.Panel
+ * @member Ext.panel.Panel
+ */
+/**
+ * Creates a visual theme for an Ext.Panel
+ * @member Ext.panel.Panel
+ */
+/**
+ * Creates base structure for Toolbar
+ * @member Ext.toolbar.Toolbar
+ */
+/**
+ * Creates a visual theme for an Toolbar.
+ * @param {String} $ui The name of the UI
+ * @param {Color} $background-color The background color of the toolbar (defaults to transparent)
+ * @param {Gradient/color-stops} $background-gradient The background gradient of the toolbar (defaults to null)
+ * @param {Color} $border-color The border color of the toolbar (defaults to null)
+ * @member Ext.toolbar.Toolbar
+ */
+/**
+ * Creates the base structure of Ext.form.Panel.
+ * @member Ext.form.Panel
+ */
+/**
+ * Creates the base structure of form field.
+ * @member Ext.form.field.Base
+ */
+/**
+ * Creates the base structure of FieldSet.
+ * @member Ext.form.FieldSet
+ */
+/**
+ * Creates the base structure of file field.
+ * @member Ext.form.field.File
+ */
+/**
+ * Creates the base structure of checkbox field.
+ * @member Ext.form.field.Checkbox
+ */
+/**
+ * Creates the base structure of CheckboxGroup.
+ * @member Ext.form.CheckboxGroup
+ */
+/**
+ * Creates the base structure of trigger field.
+ * @member Ext.form.field.Trigger
+ */
+/**
+ * Creates the base structure of HtmlEditor field.
+ * @member Ext.form.field.HtmlEditor
+ */
+/**
+ * Creates the base structure of QuickTip.
+ * @member Ext.tip.QuickTip
+ */
+/**
+ * Creates the base structure of an Ext.Window
+ * @member Ext.window.Window
+ */
+/**
+ * Creates a visual theme for an Ext.Panel
+ * @member Ext.window.Window
+ */
+/**
+ * Creates a visual theme for TabBar
+ * @member Ext.tab.Bar
+ */
+/**
+ * Creates the base structure of a Tab.
+ * @member Ext.tab.Tab
+ */
+/**
+ * Creates the base structure of slider.
+ * @member Ext.slider.Multi
+ */
+/**
+ * Creates base structure for a Grid.
+ * @member Ext.grid.Panel
+ */
+/**
+ * Creates the base structure of Tree.
+ * @member Ext.tree.Panel
+ */
+/* Styles for Ext.LoadMask */
+/* line 3, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+.x-mask {
+  z-index: 100;
+  position: absolute;
+  top: 0;
+  left: 0;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  width: 100%;
+  height: 100%;
+  zoom: 1;
+  background: #cccccc; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+.x-mask-msg {
+  z-index: 20001;
+  position: absolute;
+  top: 0;
+  left: 0;
+  padding: 2px;
+  border: 1px solid;
+  border-color: #222233;
+  background-image: none;
+  background-color: #3f4757; }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+  .x-mask-msg div {
+    padding: 5px 10px;
+    cursor: wait;
+    border: 1px solid #555566;
+    background-color: #232d38;
+    color: white;
+    font: normal 14px tahoma, arial, verdana, sans-serif; }
+
+/**
+ * Creates the base structure of an Ext.ProgressBar
+ * @member Ext.ProgressBar
+ */
+/**
+ * Creates a visual theme for an Ext.ProgressBar
+ * @member Ext.ProgressBar
+ */
+/**
+ * Creates base structure for a Draw Component.
+ * @member Ext.draw.Component
+ */
+/**
+ * Creates the base structure of Viewport.
+ * @member Ext.container.Viewport
+ */
+/**
+ * W3C suggested default style sheet for HTML 4:
+ * [http://www.w3.org/TR/CSS21/sample.html](http://www.w3.org/TR/CSS21/sample.html)
+ *
+ * @member Global_CSS
+ */
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist {
+  border-width: 2px;
+  border-style: solid;
+  border-color: #222732;
+  background: #404551; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-boundlist .x-toolbar {
+    border-width: 1px 0 0 0; }
+
+/* line 22, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-strict .x-ie6 .x-boundlist-list-ct,
+.x-strict .x-ie7 .x-boundlist-list-ct {
+  position: relative; }
+
+/* line 29, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-item {
+  padding: 2px;
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  cursor: pointer;
+  cursor: hand;
+  position: relative;
+  /*allow hover in IE on empty items*/
+  border-width: 0;
+  border-style: dotted;
+  border-color: #404551; }
+
+/* line 43, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-selected {
+  background: #e5872c;
+  border-color: #242838; }
+
+/* line 48, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-item-over {
+  background: #e5872c;
+  border-color: #2e3347; }
+
+/* line 53, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-floating {
+  border-top-width: 0; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-above {
+  border-top-width: 1px;
+  border-bottom-width: 1px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn {
+  display: inline-block;
+  zoom: 1;
+  *display: inline;
+  position: relative;
+  cursor: pointer;
+  cursor: hand;
+  white-space: nowrap;
+  vertical-align: middle;
+  background-repeat: no-repeat; }
+  /* line 19, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn * {
+    cursor: pointer;
+    cursor: hand; }
+  /* line 26, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn em {
+    background-repeat: no-repeat; }
+    /* line 30, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-btn em a {
+      text-decoration: none;
+      display: block;
+      color: inherit;
+      width: 100%;
+      zoom: 1; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn button {
+    width: 100%;
+    display: block;
+    margin: 0;
+    padding: 0;
+    border: 0;
+    background: none;
+    outline: 0 none;
+    overflow: hidden;
+    vertical-align: bottom;
+    -webkit-appearance: none; }
+    /* line 59, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-btn button::-moz-focus-inner {
+      border: 0;
+      padding: 0; }
+  /* line 65, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn .x-btn-inner {
+    display: block;
+    white-space: nowrap;
+    background-color: transparent;
+    background-repeat: no-repeat;
+    background-position: left center;
+    overflow: hidden; }
+  /* line 74, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn .x-btn-left .x-btn-inner {
+    text-align: left; }
+  /* line 78, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn .x-btn-center .x-btn-inner {
+    text-align: center; }
+  /* line 82, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn .x-btn-right .x-btn-inner {
+    text-align: right; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-disabled span {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+  /* line 91, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-disabled span, .x-ie7 .x-btn-disabled span {
+    filter: none; }
+
+/* line 98, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie7 .x-btn-disabled,
+.x-ie8 .x-btn-disabled {
+  filter: none; }
+
+/* line 105, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-disabled .x-btn-icon,
+.x-ie7 .x-btn-disabled .x-btn-icon,
+.x-ie8 .x-btn-disabled .x-btn-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+
+/* IE9 shows scrollbars in a button unless this is set  */
+/* line 112, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie9 .x-btn button {
+  overflow: visible!important; }
+
+/* line 117, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+* html .x-ie .x-btn button {
+  width: 1px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn button {
+  overflow-x: visible;
+  /*prevents extra horiz space in IE*/
+  vertical-align: baseline;
+  /*IE doesn't like bottom*/ }
+
+/* line 129, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-strict .x-ie6 .x-btn .x-frame-mc,
+.x-strict .x-ie7 .x-btn .x-frame-mc {
+  height: 100%; }
+
+/* Keep the selector simple ".x-btn .x-frame-mc" is enough to target the center frame of the button table */
+/* line 138, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn .x-frame-mc {
+  vertical-align: middle;
+  white-space: nowrap;
+  cursor: pointer; }
+
+/* Only center when all there is is text. Otherwise solo icons get centered. */
+/* line 147, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-noicon .x-frame-mc {
+  text-align: center; }
+
+/* line 153, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-icon-text-left .x-btn-icon {
+  background-position: left center; }
+
+/* line 157, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-icon-text-right .x-btn-icon {
+  background-position: right center; }
+
+/* line 161, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-icon-text-top .x-btn-icon {
+  background-position: center top; }
+
+/* line 165, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-icon-text-bottom .x-btn-icon {
+  background-position: center bottom; }
+
+/* line 170, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn button, .x-btn a {
+  position: relative; }
+  /* line 173, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn button .x-btn-icon, .x-btn a .x-btn-icon {
+    position: absolute;
+    background-repeat: no-repeat; }
+
+/* line 180, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-arrow-right {
+  background: transparent no-repeat right center;
+  padding-right: 12px; }
+  /* line 184, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-arrow-right .x-btn-inner {
+    padding-right: 0 !important; }
+
+/* line 189, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-toolbar .x-btn-arrow-right {
+  padding-right: 12px; }
+
+/* line 193, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-arrow-bottom {
+  background: transparent no-repeat center bottom;
+  padding-bottom: 12px; }
+
+/* line 198, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-arrow {
+  background-image: url('../../resources/themes/images/access/button/arrow.gif');
+  display: block; }
+
+/* line 206, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-split-right,
+.x-btn-over .x-btn-split-right {
+  background: transparent no-repeat right center;
+  background-image: url('../../resources/themes/images/access/button/s-arrow.gif');
+  padding-right: 14px !important; }
+
+/* line 213, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-split-bottom,
+.x-btn-over .x-btn-split-bottom {
+  background: transparent no-repeat center bottom;
+  background-image: url('../../resources/themes/images/access/button/s-arrow-b.gif');
+  padding-bottom: 14px; }
+
+/* line 219, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-toolbar .x-btn-split-right {
+  background-image: url('../../resources/themes/images/access/button/s-arrow-noline.gif');
+  padding-right: 12px !important; }
+
+/* line 224, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-toolbar .x-btn-split-bottom {
+  background-image: url('../../resources/themes/images/access/button/s-arrow-b-noline.gif'); }
+
+/* line 228, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-split {
+  display: block; }
+
+/* line 233, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-item-disabled,
+.x-item-disabled * {
+  cursor: default; }
+
+/* line 237, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-cycle-fixed-width .x-btn-inner {
+  text-align: inherit; }
+
+/* line 241, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-over .x-btn-split-right {
+  background-image: url('../../resources/themes/images/access/button/s-arrow-o.gif'); }
+
+/* line 242, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-over .x-btn-split-bottom {
+  background-image: url('../../resources/themes/images/access/button/s-arrow-bo.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small {
+  border-color: #06070a; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-small {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #2a3142;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2a3142), color-stop(48%, #252c3b), color-stop(52%, #13171f), color-stop(100%, #171b25));
+  background-image: -webkit-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: -moz-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: -o-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: -ms-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-small-mc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-small-bg.gif');
+  background-color: #2a3142; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-small-tl,
+.x-nbr .x-btn-default-small-bl,
+.x-nbr .x-btn-default-small-tr,
+.x-nbr .x-btn-default-small-br,
+.x-nbr .x-btn-default-small-tc,
+.x-nbr .x-btn-default-small-bc,
+.x-nbr .x-btn-default-small-ml,
+.x-nbr .x-btn-default-small-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-small-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-small-ml,
+.x-nbr .x-btn-default-small-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-small-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-small-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-default-small-tl,
+.x-strict .x-ie7 .x-btn-default-small-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small .x-btn-inner {
+  font-size: 14px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: white;
+  background-repeat: no-repeat;
+  padding: 0 4px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon button,
+.x-btn-default-small-icon a,
+.x-btn-default-small-icon .x-btn-inner,
+.x-btn-default-small-noicon button,
+.x-btn-default-small-noicon a,
+.x-btn-default-small-noicon .x-btn-inner {
+  height: 16px;
+  line-height: 16px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon button,
+.x-btn-default-small-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 16px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon .x-btn-icon {
+  width: 16px;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-left button,
+.x-btn-default-small-icon-text-left a {
+  height: 16px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-left .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-left: 20px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-left .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-small-icon-text-left .x-btn-icon {
+    height: 16px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-right button,
+.x-btn-default-small-icon-text-right a {
+  height: 16px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-right .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-right: 20px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-right .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-small-icon-text-right .x-btn-icon {
+    height: 16px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-top .x-btn-inner {
+  padding-top: 20px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon {
+    width: 16px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon {
+    width: 16px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-over {
+  border-color: #947518;
+  background-image: none;
+  background-color: #ed9200;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ed9200), color-stop(48%, #e29200), color-stop(52%, #9d7921), color-stop(100%, #ab821b));
+  background-image: -webkit-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -moz-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -o-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -ms-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-focus {
+  border-color: #947518;
+  background-image: none;
+  background-color: #ed9200;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ed9200), color-stop(48%, #e29200), color-stop(52%, #9d7921), color-stop(100%, #ab821b));
+  background-image: -webkit-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -moz-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -o-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -ms-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-menu-active,
+.x-btn-default-small-pressed {
+  border-color: #c9750f;
+  background-image: none;
+  background-color: #da7b19;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #da7b19), color-stop(48%, #e17b1d), color-stop(52%, #db6800), color-stop(100%, #e66e00));
+  background-image: -webkit-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: -moz-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: -o-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: -ms-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-disabled {
+  border-color: #565656;
+  background-image: none;
+  background-color: #6b6b6b;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #6b6b6b), color-stop(48%, #656565), color-stop(52%, #4e4e4e), color-stop(100%, #535353));
+  background-image: -webkit-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: -moz-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: -o-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: -ms-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353); }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-over .x-frame-tl,
+.x-nbr .x-btn-default-small-over .x-frame-bl,
+.x-nbr .x-btn-default-small-over .x-frame-tr,
+.x-nbr .x-btn-default-small-over .x-frame-br,
+.x-nbr .x-btn-default-small-over .x-frame-tc,
+.x-nbr .x-btn-default-small-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-small-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-over .x-frame-ml,
+.x-nbr .x-btn-default-small-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-small-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-over .x-frame-mc {
+  background-color: #ed9200;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-small-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-focus .x-frame-tl,
+.x-nbr .x-btn-default-small-focus .x-frame-bl,
+.x-nbr .x-btn-default-small-focus .x-frame-tr,
+.x-nbr .x-btn-default-small-focus .x-frame-br,
+.x-nbr .x-btn-default-small-focus .x-frame-tc,
+.x-nbr .x-btn-default-small-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-small-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-focus .x-frame-ml,
+.x-nbr .x-btn-default-small-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-small-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-focus .x-frame-mc {
+  background-color: #ed9200;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-small-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-small-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-small-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-small-menu-active .x-frame-br,
+.x-nbr .x-btn-default-small-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-small-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-small-pressed .x-frame-tl,
+.x-nbr .x-btn-default-small-pressed .x-frame-bl,
+.x-nbr .x-btn-default-small-pressed .x-frame-tr,
+.x-nbr .x-btn-default-small-pressed .x-frame-br,
+.x-nbr .x-btn-default-small-pressed .x-frame-tc,
+.x-nbr .x-btn-default-small-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-small-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-small-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-small-pressed .x-frame-ml,
+.x-nbr .x-btn-default-small-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-small-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-small-pressed .x-frame-mc {
+  background-color: #da7b19;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-small-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-disabled .x-frame-tl,
+.x-nbr .x-btn-default-small-disabled .x-frame-bl,
+.x-nbr .x-btn-default-small-disabled .x-frame-tr,
+.x-nbr .x-btn-default-small-disabled .x-frame-br,
+.x-nbr .x-btn-default-small-disabled .x-frame-tc,
+.x-nbr .x-btn-default-small-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-small-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-disabled .x-frame-ml,
+.x-nbr .x-btn-default-small-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-small-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-disabled .x-frame-mc {
+  background-color: #6b6b6b;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-small-disabled-bg.gif'); }
+
+/* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-small-bg.gif'); }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-small-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-small-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-menu-active,
+.x-nlg .x-btn-default-small-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-small-pressed-bg.gif'); }
+
+/* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-small-disabled-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium {
+  border-color: #06070a; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-medium {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #2a3142;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2a3142), color-stop(48%, #252c3b), color-stop(52%, #13171f), color-stop(100%, #171b25));
+  background-image: -webkit-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: -moz-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: -o-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: -ms-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-medium-mc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-medium-bg.gif');
+  background-color: #2a3142; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-medium-tl,
+.x-nbr .x-btn-default-medium-bl,
+.x-nbr .x-btn-default-medium-tr,
+.x-nbr .x-btn-default-medium-br,
+.x-nbr .x-btn-default-medium-tc,
+.x-nbr .x-btn-default-medium-bc,
+.x-nbr .x-btn-default-medium-ml,
+.x-nbr .x-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-medium-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-medium-ml,
+.x-nbr .x-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-medium-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-medium-mc {
+  padding: 1px 1px 1px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-default-medium-tl,
+.x-strict .x-ie7 .x-btn-default-medium-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium .x-btn-inner {
+  font-size: 14px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: white;
+  background-repeat: no-repeat;
+  padding: 0 3px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon button,
+.x-btn-default-medium-icon a,
+.x-btn-default-medium-icon .x-btn-inner,
+.x-btn-default-medium-noicon button,
+.x-btn-default-medium-noicon a,
+.x-btn-default-medium-noicon .x-btn-inner {
+  height: 24px;
+  line-height: 24px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon button, .x-btn-default-medium-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 24px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon .x-btn-icon {
+  width: 24px;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-left button, .x-btn-default-medium-icon-text-left a {
+  height: 24px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-left: 28px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon {
+    height: 24px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-right button, .x-btn-default-medium-icon-text-right a {
+  height: 24px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-right: 28px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon {
+    height: 24px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon {
+    width: 24px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon {
+    width: 24px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-over {
+  border-color: #947518;
+  background-image: none;
+  background-color: #ed9200;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ed9200), color-stop(48%, #e29200), color-stop(52%, #9d7921), color-stop(100%, #ab821b));
+  background-image: -webkit-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -moz-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -o-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -ms-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-focus {
+  border-color: #947518;
+  background-image: none;
+  background-color: #ed9200;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ed9200), color-stop(48%, #e29200), color-stop(52%, #9d7921), color-stop(100%, #ab821b));
+  background-image: -webkit-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -moz-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -o-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -ms-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-menu-active,
+.x-btn-default-medium-pressed {
+  border-color: #c9750f;
+  background-image: none;
+  background-color: #da7b19;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #da7b19), color-stop(48%, #e17b1d), color-stop(52%, #db6800), color-stop(100%, #e66e00));
+  background-image: -webkit-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: -moz-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: -o-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: -ms-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-disabled {
+  border-color: #565656;
+  background-image: none;
+  background-color: #6b6b6b;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #6b6b6b), color-stop(48%, #656565), color-stop(52%, #4e4e4e), color-stop(100%, #535353));
+  background-image: -webkit-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: -moz-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: -o-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: -ms-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353); }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-over .x-frame-tl,
+.x-nbr .x-btn-default-medium-over .x-frame-bl,
+.x-nbr .x-btn-default-medium-over .x-frame-tr,
+.x-nbr .x-btn-default-medium-over .x-frame-br,
+.x-nbr .x-btn-default-medium-over .x-frame-tc,
+.x-nbr .x-btn-default-medium-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-medium-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-over .x-frame-ml,
+.x-nbr .x-btn-default-medium-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-medium-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-over .x-frame-mc {
+  background-color: #ed9200;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-medium-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-focus .x-frame-tl,
+.x-nbr .x-btn-default-medium-focus .x-frame-bl,
+.x-nbr .x-btn-default-medium-focus .x-frame-tr,
+.x-nbr .x-btn-default-medium-focus .x-frame-br,
+.x-nbr .x-btn-default-medium-focus .x-frame-tc,
+.x-nbr .x-btn-default-medium-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-medium-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-focus .x-frame-ml,
+.x-nbr .x-btn-default-medium-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-medium-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-focus .x-frame-mc {
+  background-color: #ed9200;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-medium-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-br,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-medium-pressed .x-frame-tl,
+.x-nbr .x-btn-default-medium-pressed .x-frame-bl,
+.x-nbr .x-btn-default-medium-pressed .x-frame-tr,
+.x-nbr .x-btn-default-medium-pressed .x-frame-br,
+.x-nbr .x-btn-default-medium-pressed .x-frame-tc,
+.x-nbr .x-btn-default-medium-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-medium-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-medium-pressed .x-frame-ml,
+.x-nbr .x-btn-default-medium-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-medium-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-medium-pressed .x-frame-mc {
+  background-color: #da7b19;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-medium-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-disabled .x-frame-tl,
+.x-nbr .x-btn-default-medium-disabled .x-frame-bl,
+.x-nbr .x-btn-default-medium-disabled .x-frame-tr,
+.x-nbr .x-btn-default-medium-disabled .x-frame-br,
+.x-nbr .x-btn-default-medium-disabled .x-frame-tc,
+.x-nbr .x-btn-default-medium-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-medium-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-disabled .x-frame-ml,
+.x-nbr .x-btn-default-medium-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-medium-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-disabled .x-frame-mc {
+  background-color: #6b6b6b;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-medium-disabled-bg.gif'); }
+
+/* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-medium-bg.gif'); }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-medium-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-medium-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-menu-active,
+.x-nlg .x-btn-default-medium-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-medium-pressed-bg.gif'); }
+
+/* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-medium-disabled-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large {
+  border-color: #06070a; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-large {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #2a3142;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2a3142), color-stop(48%, #252c3b), color-stop(52%, #13171f), color-stop(100%, #171b25));
+  background-image: -webkit-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: -moz-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: -o-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: -ms-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+  background-image: linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-large-mc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-large-bg.gif');
+  background-color: #2a3142; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-large-tl,
+.x-nbr .x-btn-default-large-bl,
+.x-nbr .x-btn-default-large-tr,
+.x-nbr .x-btn-default-large-br,
+.x-nbr .x-btn-default-large-tc,
+.x-nbr .x-btn-default-large-bc,
+.x-nbr .x-btn-default-large-ml,
+.x-nbr .x-btn-default-large-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-large-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-large-ml,
+.x-nbr .x-btn-default-large-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-large-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-large-mc {
+  padding: 1px 1px 1px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-default-large-tl,
+.x-strict .x-ie7 .x-btn-default-large-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large .x-btn-inner {
+  font-size: 14px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: white;
+  background-repeat: no-repeat;
+  padding: 0 3px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon button,
+.x-btn-default-large-icon a,
+.x-btn-default-large-icon .x-btn-inner,
+.x-btn-default-large-noicon button,
+.x-btn-default-large-noicon a,
+.x-btn-default-large-noicon .x-btn-inner {
+  height: 32px;
+  line-height: 32px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon button, .x-btn-default-large-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 32px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon .x-btn-icon {
+  width: 32px;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-left button, .x-btn-default-large-icon-text-left a {
+  height: 32px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-left .x-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-left: 36px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-left .x-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-large-icon-text-left .x-btn-icon {
+    height: 32px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-right button, .x-btn-default-large-icon-text-right a {
+  height: 32px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-right .x-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-right: 36px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-right .x-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-large-icon-text-right .x-btn-icon {
+    height: 32px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-top .x-btn-inner {
+  padding-top: 36px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon {
+    width: 32px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 36px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 32px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon {
+    width: 32px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-over {
+  border-color: #947518;
+  background-image: none;
+  background-color: #ed9200;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ed9200), color-stop(48%, #e29200), color-stop(52%, #9d7921), color-stop(100%, #ab821b));
+  background-image: -webkit-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -moz-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -o-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -ms-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-focus {
+  border-color: #947518;
+  background-image: none;
+  background-color: #ed9200;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ed9200), color-stop(48%, #e29200), color-stop(52%, #9d7921), color-stop(100%, #ab821b));
+  background-image: -webkit-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -moz-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -o-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: -ms-linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b);
+  background-image: linear-gradient(top, #ed9200, #e29200 48%, #9d7921 52%, #ab821b); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-menu-active,
+.x-btn-default-large-pressed {
+  border-color: #c9750f;
+  background-image: none;
+  background-color: #da7b19;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #da7b19), color-stop(48%, #e17b1d), color-stop(52%, #db6800), color-stop(100%, #e66e00));
+  background-image: -webkit-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: -moz-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: -o-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: -ms-linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00);
+  background-image: linear-gradient(top, #da7b19, #e17b1d 48%, #db6800 52%, #e66e00); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-disabled {
+  border-color: #565656;
+  background-image: none;
+  background-color: #6b6b6b;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #6b6b6b), color-stop(48%, #656565), color-stop(52%, #4e4e4e), color-stop(100%, #535353));
+  background-image: -webkit-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: -moz-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: -o-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: -ms-linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353);
+  background-image: linear-gradient(top, #6b6b6b, #656565 48%, #4e4e4e 52%, #535353); }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-over .x-frame-tl,
+.x-nbr .x-btn-default-large-over .x-frame-bl,
+.x-nbr .x-btn-default-large-over .x-frame-tr,
+.x-nbr .x-btn-default-large-over .x-frame-br,
+.x-nbr .x-btn-default-large-over .x-frame-tc,
+.x-nbr .x-btn-default-large-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-large-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-over .x-frame-ml,
+.x-nbr .x-btn-default-large-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-large-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-over .x-frame-mc {
+  background-color: #ed9200;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-large-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-focus .x-frame-tl,
+.x-nbr .x-btn-default-large-focus .x-frame-bl,
+.x-nbr .x-btn-default-large-focus .x-frame-tr,
+.x-nbr .x-btn-default-large-focus .x-frame-br,
+.x-nbr .x-btn-default-large-focus .x-frame-tc,
+.x-nbr .x-btn-default-large-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-large-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-focus .x-frame-ml,
+.x-nbr .x-btn-default-large-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-large-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-focus .x-frame-mc {
+  background-color: #ed9200;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-large-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-large-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-large-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-large-menu-active .x-frame-br,
+.x-nbr .x-btn-default-large-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-large-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-large-pressed .x-frame-tl,
+.x-nbr .x-btn-default-large-pressed .x-frame-bl,
+.x-nbr .x-btn-default-large-pressed .x-frame-tr,
+.x-nbr .x-btn-default-large-pressed .x-frame-br,
+.x-nbr .x-btn-default-large-pressed .x-frame-tc,
+.x-nbr .x-btn-default-large-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-large-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-large-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-large-pressed .x-frame-ml,
+.x-nbr .x-btn-default-large-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-large-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-large-pressed .x-frame-mc {
+  background-color: #da7b19;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-large-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-disabled .x-frame-tl,
+.x-nbr .x-btn-default-large-disabled .x-frame-bl,
+.x-nbr .x-btn-default-large-disabled .x-frame-tr,
+.x-nbr .x-btn-default-large-disabled .x-frame-br,
+.x-nbr .x-btn-default-large-disabled .x-frame-tc,
+.x-nbr .x-btn-default-large-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-large-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-disabled .x-frame-ml,
+.x-nbr .x-btn-default-large-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-large-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-disabled .x-frame-mc {
+  background-color: #6b6b6b;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-large-disabled-bg.gif'); }
+
+/* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-large-bg.gif'); }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-large-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-large-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-menu-active,
+.x-nlg .x-btn-default-large-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-large-pressed-bg.gif'); }
+
+/* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/access/btn/btn-default-large-disabled-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small {
+  border-color: transparent; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-toolbar-small {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-toolbar-small-mc {
+  background-color: transparent; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-small-tl,
+.x-nbr .x-btn-default-toolbar-small-bl,
+.x-nbr .x-btn-default-toolbar-small-tr,
+.x-nbr .x-btn-default-toolbar-small-br,
+.x-nbr .x-btn-default-toolbar-small-tc,
+.x-nbr .x-btn-default-toolbar-small-bc,
+.x-nbr .x-btn-default-toolbar-small-ml,
+.x-nbr .x-btn-default-toolbar-small-mr {
+  zoom: 1; }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-small-ml,
+.x-nbr .x-btn-default-toolbar-small-mr {
+  zoom: 1; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-small-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-small-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small .x-btn-inner {
+  font-size: 14px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: white;
+  background-repeat: no-repeat;
+  padding: 0 4px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon button,
+.x-btn-default-toolbar-small-icon a,
+.x-btn-default-toolbar-small-icon .x-btn-inner,
+.x-btn-default-toolbar-small-noicon button,
+.x-btn-default-toolbar-small-noicon a,
+.x-btn-default-toolbar-small-noicon .x-btn-inner {
+  height: 16px;
+  line-height: 16px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon button, .x-btn-default-toolbar-small-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 16px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-icon {
+  width: 16px;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-left button, .x-btn-default-toolbar-small-icon-text-left a {
+  height: 16px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-left: 20px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon {
+    height: 16px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-right button, .x-btn-default-toolbar-small-icon-text-right a {
+  height: 16px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-right: 20px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon {
+    height: 16px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-inner {
+  padding-top: 20px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon {
+    width: 16px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon {
+    width: 16px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-over {
+  border-color: #d97e27;
+  background-image: none;
+  background-color: #ed9200; }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-focus {
+  border-color: #d97e27;
+  background-image: none;
+  background-color: #ed9200; }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-menu-active,
+.x-btn-default-toolbar-small-pressed {
+  border-color: #c86e19;
+  background-image: none;
+  background-color: #db7b1f; }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-disabled {
+  background-image: none;
+  background-color: transparent; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-toolbar-small-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-toolbar-small-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-mc {
+  background-color: #ed9200; }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-toolbar-small-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-toolbar-small-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-mc {
+  background-color: #ed9200; }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-toolbar-small-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-toolbar-small-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mc {
+  background-color: #db7b1f; }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-toolbar-small-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-toolbar-small-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mc {
+  background-color: transparent; }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium {
+  border-color: transparent; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-toolbar-medium {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-toolbar-medium-mc {
+  background-color: transparent; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-medium-tl,
+.x-nbr .x-btn-default-toolbar-medium-bl,
+.x-nbr .x-btn-default-toolbar-medium-tr,
+.x-nbr .x-btn-default-toolbar-medium-br,
+.x-nbr .x-btn-default-toolbar-medium-tc,
+.x-nbr .x-btn-default-toolbar-medium-bc,
+.x-nbr .x-btn-default-toolbar-medium-ml,
+.x-nbr .x-btn-default-toolbar-medium-mr {
+  zoom: 1; }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-medium-ml,
+.x-nbr .x-btn-default-toolbar-medium-mr {
+  zoom: 1; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-medium-mc {
+  padding: 1px 1px 1px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium .x-btn-inner {
+  font-size: 14px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: white;
+  background-repeat: no-repeat;
+  padding: 0 3px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon button,
+.x-btn-default-toolbar-medium-icon a,
+.x-btn-default-toolbar-medium-icon .x-btn-inner,
+.x-btn-default-toolbar-medium-noicon button,
+.x-btn-default-toolbar-medium-noicon a,
+.x-btn-default-toolbar-medium-noicon .x-btn-inner {
+  height: 24px;
+  line-height: 24px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon button, .x-btn-default-toolbar-medium-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 24px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-icon {
+  width: 24px;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-left button, .x-btn-default-toolbar-medium-icon-text-left a {
+  height: 24px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-left: 28px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon {
+    height: 24px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-right button, .x-btn-default-toolbar-medium-icon-text-right a {
+  height: 24px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-right: 28px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon {
+    height: 24px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon {
+    width: 24px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon {
+    width: 24px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-over {
+  border-color: #d97e27;
+  background-image: none;
+  background-color: #ed9200; }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-focus {
+  border-color: #d97e27;
+  background-image: none;
+  background-color: #ed9200; }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-menu-active,
+.x-btn-default-toolbar-medium-pressed {
+  border-color: #c86e19;
+  background-image: none;
+  background-color: #db7b1f; }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-disabled {
+  background-image: none;
+  background-color: transparent; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-toolbar-medium-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-toolbar-medium-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-mc {
+  background-color: #ed9200; }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-toolbar-medium-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-toolbar-medium-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mc {
+  background-color: #ed9200; }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-toolbar-medium-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-toolbar-medium-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mc {
+  background-color: #db7b1f; }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-toolbar-medium-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-toolbar-medium-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mc {
+  background-color: transparent; }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large {
+  border-color: transparent; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-toolbar-large {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-toolbar-large-mc {
+  background-color: transparent; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-large-tl,
+.x-nbr .x-btn-default-toolbar-large-bl,
+.x-nbr .x-btn-default-toolbar-large-tr,
+.x-nbr .x-btn-default-toolbar-large-br,
+.x-nbr .x-btn-default-toolbar-large-tc,
+.x-nbr .x-btn-default-toolbar-large-bc,
+.x-nbr .x-btn-default-toolbar-large-ml,
+.x-nbr .x-btn-default-toolbar-large-mr {
+  zoom: 1; }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-large-ml,
+.x-nbr .x-btn-default-toolbar-large-mr {
+  zoom: 1; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-large-mc {
+  padding: 1px 1px 1px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-large-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large .x-btn-inner {
+  font-size: 14px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: white;
+  background-repeat: no-repeat;
+  padding: 0 3px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon button,
+.x-btn-default-toolbar-large-icon a,
+.x-btn-default-toolbar-large-icon .x-btn-inner,
+.x-btn-default-toolbar-large-noicon button,
+.x-btn-default-toolbar-large-noicon a,
+.x-btn-default-toolbar-large-noicon .x-btn-inner {
+  height: 32px;
+  line-height: 32px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon button, .x-btn-default-toolbar-large-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 32px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-icon {
+  width: 32px;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-left button, .x-btn-default-toolbar-large-icon-text-left a {
+  height: 32px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-left: 36px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon {
+    height: 32px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-right button, .x-btn-default-toolbar-large-icon-text-right a {
+  height: 32px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-right: 36px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon {
+    height: 32px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-inner {
+  padding-top: 36px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon {
+    width: 32px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 36px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 32px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon {
+    width: 32px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-over {
+  border-color: #d97e27;
+  background-image: none;
+  background-color: #ed9200; }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-focus {
+  border-color: #d97e27;
+  background-image: none;
+  background-color: #ed9200; }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-menu-active,
+.x-btn-default-toolbar-large-pressed {
+  border-color: #c86e19;
+  background-image: none;
+  background-color: #db7b1f; }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-disabled {
+  background-image: none;
+  background-color: transparent; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-toolbar-large-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-toolbar-large-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-mc {
+  background-color: #ed9200; }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-toolbar-large-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-toolbar-large-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-mc {
+  background-color: #ed9200; }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-toolbar-large-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-toolbar-large-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mc {
+  background-color: #db7b1f; }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-toolbar-large-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/btn/btn-default-toolbar-large-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mc {
+  background-color: transparent; }
+
+/* line 571, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-disabled,
+.x-btn-default-toolbar-medium-disabled,
+.x-btn-default-toolbar-large-disabled {
+  border-color: transparent;
+  background-image: none;
+  background: transparent; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group {
+  position: relative;
+  overflow: hidden; }
+
+/* line 11, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-body {
+  position: relative;
+  zoom: 1;
+  padding: 0 1px; }
+  /* line 15, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-btn-group-body .x-table-layout-cell {
+    vertical-align: top; }
+
+/* line 20, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-header-text {
+  white-space: nowrap; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-group-default-framed {
+  -moz-border-radius: 2px;
+  -webkit-border-radius: 2px;
+  -o-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -khtml-border-radius: 2px;
+  border-radius: 2px;
+  padding: 1px 1px 1px 1px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #393d4e; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-group-default-framed-mc {
+  background-color: #393d4e; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-group-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000202px 1000202px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-group-default-framed-tl,
+.x-nbr .x-btn-group-default-framed-bl,
+.x-nbr .x-btn-group-default-framed-tr,
+.x-nbr .x-btn-group-default-framed-br,
+.x-nbr .x-btn-group-default-framed-tc,
+.x-nbr .x-btn-group-default-framed-bc,
+.x-nbr .x-btn-group-default-framed-ml,
+.x-nbr .x-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/btn-group/btn-group-default-framed-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-group-default-framed-ml,
+.x-nbr .x-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/btn-group/btn-group-default-framed-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-group-default-framed-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-group-default-framed-tl,
+.x-strict .x-ie7 .x-btn-group-default-framed-bl {
+  position: relative;
+  right: 0; }
+
+/* line 60, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-default-framed {
+  border-color: #606068;
+  -moz-box-shadow: #757478 0 1px 0px 0 inset, #757478 0 -1px 0px 0 inset, #757478 -1px 0 0px 0 inset, #757478 1px 0 0px 0 inset;
+  -webkit-box-shadow: #757478 0 1px 0px 0 inset, #757478 0 -1px 0px 0 inset, #757478 -1px 0 0px 0 inset, #757478 1px 0 0px 0 inset;
+  -o-box-shadow: #757478 0 1px 0px 0 inset, #757478 0 -1px 0px 0 inset, #757478 -1px 0 0px 0 inset, #757478 1px 0 0px 0 inset;
+  box-shadow: #757478 0 1px 0px 0 inset, #757478 0 -1px 0px 0 inset, #757478 -1px 0 0px 0 inset, #757478 1px 0 0px 0 inset; }
+
+/* line 68, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-header-default-framed {
+  margin: 2px 2px 0 2px; }
+
+/* line 72, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-header-body-default-framed {
+  padding: 1px 0;
+  background: #676772;
+  -moz-border-radius-topleft: 2px;
+  -webkit-border-top-left-radius: 2px;
+  -o-border-top-left-radius: 2px;
+  -ms-border-top-left-radius: 2px;
+  -khtml-border-top-left-radius: 2px;
+  border-top-left-radius: 2px;
+  -moz-border-radius-topright: 2px;
+  -webkit-border-top-right-radius: 2px;
+  -o-border-top-right-radius: 2px;
+  -ms-border-top-right-radius: 2px;
+  -khtml-border-top-right-radius: 2px;
+  border-top-right-radius: 2px; }
+
+/* line 80, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-header-text-default-framed {
+  font: normal 14px tahoma, arial, verdana, sans-serif;
+  color: #d2d2d2; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker {
+  border: 1px solid #798294;
+  background-color: #21252e;
+  position: relative; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker a {
+    -moz-outline: 0 none;
+    outline: 0 none;
+    color: white;
+    text-decoration: none;
+    border-width: 0; }
+
+/* line 25, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-inner,
+.x-datepicker-inner td,
+.x-datepicker-inner th {
+  border-collapse: separate; }
+
+/* line 29, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-header {
+  position: relative;
+  height: 26px;
+  background-image: none;
+  background-color: #5c6980;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #627089), color-stop(100%, #535f74));
+  background-image: -webkit-linear-gradient(top, #627089, #535f74);
+  background-image: -moz-linear-gradient(top, #627089, #535f74);
+  background-image: -o-linear-gradient(top, #627089, #535f74);
+  background-image: -ms-linear-gradient(top, #627089, #535f74);
+  background-image: linear-gradient(top, #627089, #535f74); }
+
+/* line 42, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-prev,
+.x-datepicker-next {
+  position: absolute;
+  top: 5px;
+  width: 18px; }
+  /* line 48, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-prev a,
+  .x-datepicker-next a {
+    display: block;
+    width: 16px;
+    height: 16px;
+    background-position: top;
+    background-repeat: no-repeat;
+    cursor: pointer;
+    text-decoration: none !important;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+    opacity: 0.7; }
+    /* line 63, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-datepicker-prev a:hover,
+    .x-datepicker-next a:hover {
+      filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+      opacity: 1; }
+
+/* line 69, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-next {
+  right: 5px; }
+  /* line 72, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-next a {
+    background-image: url('../../resources/themes/images/access/shared/right-btn.gif'); }
+
+/* line 77, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-prev {
+  left: 5px; }
+  /* line 80, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-prev a {
+    background-image: url('../../resources/themes/images/access/shared/left-btn.gif'); }
+
+/* line 86, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-item-disabled .x-datepicker-prev a:hover,
+.x-item-disabled .x-datepicker-next a:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+
+/* line 90, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-month {
+  padding-top: 3px; }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-month .x-btn,
+  .x-datepicker-month button,
+  .x-datepicker-month .x-btn-tc,
+  .x-datepicker-month .x-btn-tl,
+  .x-datepicker-month .x-btn-tr,
+  .x-datepicker-month .x-btn-mc,
+  .x-datepicker-month .x-btn-ml,
+  .x-datepicker-month .x-btn-mr,
+  .x-datepicker-month .x-btn-bc,
+  .x-datepicker-month .x-btn-bl,
+  .x-datepicker-month .x-btn-br {
+    background: transparent !important;
+    border-width: 0 !important; }
+  /* line 108, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-month span {
+    color: #fff !important; }
+  /* line 112, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-month .x-btn-split-right {
+    background-image: url('../../resources/themes/images/access/button/s-arrow-light.gif');
+    padding-right: 12px; }
+
+/* line 118, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-next {
+  text-align: right; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-month {
+  text-align: center; }
+  /* line 126, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-month button {
+    color: white !important; }
+
+/* line 132, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+table.x-datepicker-inner {
+  width: 100%;
+  table-layout: fixed; }
+  /* line 136, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner th {
+    width: 25px;
+    height: 19px;
+    padding: 0;
+    color: white;
+    font: normal 10px tahoma, arial, verdana, sans-serif;
+    text-align: right;
+    border-bottom: 1px solid #535b5c;
+    border-collapse: separate;
+    background-image: none;
+    background-color: #3a4051;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #40475a), color-stop(100%, #313745));
+    background-image: -webkit-linear-gradient(top, #40475a, #313745);
+    background-image: -moz-linear-gradient(top, #40475a, #313745);
+    background-image: -o-linear-gradient(top, #40475a, #313745);
+    background-image: -ms-linear-gradient(top, #40475a, #313745);
+    background-image: linear-gradient(top, #40475a, #313745);
+    cursor: default; }
+    /* line 157, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    table.x-datepicker-inner th span {
+      display: block;
+      padding-right: 7px; }
+  /* line 163, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner tr {
+    height: 20px; }
+  /* line 167, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner td {
+    border: 1px solid;
+    height: 21px;
+    border-color: #21252e;
+    text-align: right;
+    padding: 0; }
+  /* line 175, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner a {
+    padding-right: 4px;
+    display: block;
+    zoom: 1;
+    font: normal 14px tahoma, arial, verdana, sans-serif;
+    color: white;
+    text-decoration: none;
+    text-align: right; }
+  /* line 188, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-active {
+    cursor: pointer;
+    color: black; }
+  /* line 194, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-selected a {
+    background: repeat-x left top;
+    background-color: #e5872c;
+    border: 1px solid #864900; }
+  /* line 200, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-selected span {
+    font-weight: bold; }
+  /* line 206, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-today a {
+    border: 1px solid;
+    border-color: #9999aa; }
+  /* line 214, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-prevday a,
+  table.x-datepicker-inner .x-datepicker-nextday a {
+    text-decoration: none !important;
+    color: #aaa; }
+  /* line 221, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner a:hover,
+  table.x-datepicker-inner .x-datepicker-disabled a:hover {
+    text-decoration: none !important;
+    color: #000;
+    background-color: #7e5530; }
+  /* line 229, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-disabled a {
+    cursor: default;
+    background-color: #eee;
+    color: #bbb; }
+
+/* line 237, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-footer,
+.x-monthpicker-buttons {
+  position: relative;
+  border-top: 1px solid #535b5c;
+  background-image: none;
+  background-color: #3a4051;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #51596b), color-stop(49%, #4b525f), color-stop(51%, #454b58), color-stop(100%, #484e5a));
+  background-image: -webkit-linear-gradient(top, #51596b, #4b525f 49%, #454b58 51%, #484e5a);
+  background-image: -moz-linear-gradient(top, #51596b, #4b525f 49%, #454b58 51%, #484e5a);
+  background-image: -o-linear-gradient(top, #51596b, #4b525f 49%, #454b58 51%, #484e5a);
+  background-image: -ms-linear-gradient(top, #51596b, #4b525f 49%, #454b58 51%, #484e5a);
+  background-image: linear-gradient(top, #51596b, #4b525f 49%, #454b58 51%, #484e5a);
+  text-align: center; }
+  /* line 250, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-footer .x-btn,
+  .x-monthpicker-buttons .x-btn {
+    position: relative;
+    margin: 4px; }
+
+/* line 256, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-item-disabled .x-datepicker-inner a:hover {
+  background: none; }
+
+/* line 261, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker .x-monthpicker {
+  position: absolute;
+  left: 0;
+  top: 0; }
+
+/* line 268, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker {
+  border: 1px solid #798294;
+  background-color: #21252e; }
+
+/* line 274, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-months,
+.x-monthpicker-years {
+  float: left;
+  height: 172px;
+  width: 88px; }
+
+/* line 281, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-item {
+  float: left;
+  margin: 4px 0 5px 0;
+  font: normal 14px tahoma, arial, verdana, sans-serif;
+  text-align: center;
+  vertical-align: middle;
+  height: 18px;
+  width: 43px;
+  border: 0 none; }
+  /* line 295, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-monthpicker-item a {
+    display: block;
+    margin: 0 5px;
+    text-decoration: none;
+    color: white;
+    border: 0 none;
+    line-height: 17px; }
+    /* line 308, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-monthpicker-item a:hover {
+      background-color: #7e5530; }
+    /* line 312, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-monthpicker-item a.x-monthpicker-selected {
+      background-color: #e5872c;
+      border: 1px solid #864900; }
+
+/* line 319, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-months {
+  border-right: 1px solid #798294;
+  width: 87px; }
+
+/* line 324, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-years .x-monthpicker-item {
+  width: 44px; }
+
+/* line 328, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav {
+  height: 28px; }
+  /* line 331, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-monthpicker-yearnav button {
+    background-image: url('../../resources/themes/images/access/tools/tool-sprites.gif');
+    height: 15px;
+    width: 15px;
+    padding: 0;
+    margin: 6px 12px 5px 15px;
+    border: 0;
+    outline: 0 none; }
+    /* line 339, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-monthpicker-yearnav button::-moz-focus-inner {
+      border: 0;
+      padding: 0; }
+
+/* line 346, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-next {
+  background-position: 0 -120px; }
+
+/* line 350, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-next-over {
+  cursor: pointer;
+  cursor: hand;
+  background-position: -15px -120px; }
+
+/* line 356, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-prev {
+  background-position: 0 -105px; }
+
+/* line 360, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-prev-over {
+  cursor: pointer;
+  cursor: hand;
+  background-position: -15px -105px; }
+
+/* line 367, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-small .x-monthpicker-item {
+  margin: 2px 0 2px 0; }
+/* line 371, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-small .x-monthpicker-yearnav {
+  height: 23px; }
+/* line 375, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-small .x-monthpicker-months, .x-monthpicker-small .x-monthpicker-years {
+  height: 136px; }
+
+/* line 385, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-quirks .x-ie7 .x-monthpicker-buttons .x-btn,
+.x-quirks .x-ie8 .x-monthpicker-buttons .x-btn {
+  margin-top: 2px; }
+/* line 391, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-quirks .x-monthpicker-small .x-monthpicker-yearnav button {
+  margin-top: 3px;
+  margin-bottom: 3px; }
+
+/* line 397, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-ie6 .x-monthpicker-small .x-monthpicker-yearnav button {
+  margin-top: 3px;
+  margin-bottom: 3px; }
+
+/* line 407, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-nlg .x-datepicker-header {
+  background-image: url('../../resources/themes/images/access/datepicker/datepicker-header-bg.gif');
+  background-repeat: repeat-x;
+  background-position: top left; }
+/* line 416, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-nlg .x-datepicker-footer,
+.x-nlg .x-monthpicker-buttons {
+  background-image: url('../../resources/themes/images/access/datepicker/datepicker-footer-bg.gif');
+  background-repeat: repeat-x;
+  background-position: top left; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker {
+  width: 144px;
+  height: 90px;
+  cursor: pointer; }
+
+/* line 12, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker a {
+  border: 1px solid #fff;
+  float: left;
+  padding: 2px;
+  text-decoration: none;
+  -moz-outline: 0 none;
+  outline: 0 none;
+  cursor: pointer; }
+
+/* line 28, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker a:hover,
+.x-color-picker a.x-color-picker-selected {
+  border-color: #8bb8f3;
+  background-color: #deecfd; }
+
+/* line 33, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker em {
+  display: block;
+  border: 1px solid #aca899; }
+
+/* line 39, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker em span {
+  cursor: pointer;
+  display: block;
+  height: 10px;
+  width: 10px;
+  line-height: 10px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-body {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  background: #414551 !important;
+  padding: 2px; }
+
+/* line 12, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item .x-form-text {
+  user-select: text;
+  -webkit-user-select: text;
+  -o-user-select: text;
+  -ie-user-select: text;
+  -moz-user-select: text;
+  -ie-user-select: text; }
+
+/* line 21, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-icon-separator {
+  position: absolute;
+  top: 0px;
+  left: 27px;
+  z-index: 0;
+  border-left: solid 1px #222233;
+  background-color: #666666;
+  width: 2px;
+  overflow: hidden; }
+
+/* line 33, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-plain .x-menu-icon-separator {
+  display: none; }
+
+/* line 38, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-focus {
+  display: block;
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px; }
+
+/* line 47, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item {
+  white-space: nowrap;
+  overflow: hidden;
+  z-index: 1; }
+
+/* line 53, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-cmp {
+  margin-bottom: 1px; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-link {
+  display: block;
+  margin: 1px;
+  padding: 6px 2px 3px 32px;
+  text-decoration: none !important;
+  line-height: 16px;
+  cursor: default; }
+
+/* line 70, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-opera .x-menu-item-link {
+  position: relative; }
+
+/* line 76, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-icon {
+  width: 16px;
+  height: 16px;
+  position: absolute;
+  top: 5px;
+  left: 4px;
+  background: no-repeat center center; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-icon-right {
+  width: 16px;
+  height: 16px;
+  position: absolute;
+  top: 6px;
+  right: 4px;
+  background: no-repeat center center; }
+
+/* line 96, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-text {
+  font-size: 14px;
+  color: white; }
+
+/* line 102, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-checked .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/access/menu/checked.gif'); }
+/* line 105, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-checked .x-menu-group-icon {
+  background-image: url('../../resources/themes/images/access/menu/group-checked.gif'); }
+
+/* line 111, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-unchecked .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/access/menu/unchecked.gif'); }
+/* line 114, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-unchecked .x-menu-group-icon {
+  background-image: none; }
+
+/* line 119, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-separator {
+  height: 2px;
+  border-top: solid 1px #222233;
+  background-color: #666666;
+  margin: 2px 0px;
+  overflow: hidden; }
+
+/* line 127, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-arrow {
+  position: absolute;
+  width: 12px;
+  height: 9px;
+  top: 9px;
+  right: 0px;
+  background: no-repeat center center;
+  background-image: url('../../resources/themes/images/access/menu/menu-parent.gif'); }
+
+/* line 137, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-indent {
+  margin-left: 31px;
+  /* The 2px is the width of the seperator */ }
+
+/* line 141, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-active {
+  cursor: pointer; }
+  /* line 144, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-menu-item-active .x-menu-item-link {
+    background-image: none;
+    background-color: #ed9200;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fc9b00), color-stop(100%, #d98500));
+    background-image: -webkit-linear-gradient(top, #fc9b00, #d98500);
+    background-image: -moz-linear-gradient(top, #fc9b00, #d98500);
+    background-image: -o-linear-gradient(top, #fc9b00, #d98500);
+    background-image: -ms-linear-gradient(top, #fc9b00, #d98500);
+    background-image: linear-gradient(top, #fc9b00, #d98500);
+    margin: 0px;
+    border: 1px solid #d38200;
+    cursor: pointer;
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    -o-border-radius: 3px;
+    -ms-border-radius: 3px;
+    -khtml-border-radius: 3px;
+    border-radius: 3px; }
+
+/* line 153, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+
+/* line 160, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+/* line 164, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-text {
+  background-color: transparent; }
+/* line 171, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-strict .x-ie7m .x-ie .x-menu-icon-separator {
+  width: 1px; }
+/* line 175, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-strict .x-ie7m .x-ie .x-menu-item-separator {
+  height: 1px; }
+
+/* line 184, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-ie6 .x-menu-item-link,
+.x-ie7 .x-menu-item-link,
+.x-quirks .x-ie8 .x-menu-item-link {
+  padding-bottom: 2px; }
+
+/* line 192, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-nlg .x-menu-item-active .x-menu-item-link {
+  background: #ed9200 repeat-x left top;
+  background-image: url('../../resources/themes/images/access/menu/menu-item-active-bg.gif'); }
+
+/* line 199, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-date-item {
+  border-color: #99BBE8; }
+
+/* line 8, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-panel .x-grid-body {
+  background: #232d38;
+  border-color: #18181a;
+  border-style: solid;
+  border-width: 1px;
+  border-top-color: #373c4b; }
+/* line 17, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-panel .x-grid-header-ct-hidden {
+  visibility: hidden; }
+
+/* line 22, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-empty {
+  padding: 10px;
+  color: gray;
+  font: normal 11px tahoma, arial, helvetica, sans-serif; }
+
+/* line 28, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-header-hidden .x-grid-body {
+  border-top-color: #18181a !important; }
+
+/* line 32, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-view {
+  overflow: hidden;
+  position: relative; }
+
+/* line 38, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-table {
+  table-layout: fixed;
+  border-collapse: separate; }
+
+/* line 45, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-autowidth-table table.x-grid-table {
+  table-layout: auto;
+  width: auto!important; }
+
+/* line 50, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row .x-grid-table {
+  border-collapse: collapse; }
+
+/* line 54, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-locked .x-grid-inner-locked {
+  border-width: 0 1px 0 0 !important;
+  border-style: solid; }
+
+/* line 59, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-header-ct {
+  cursor: default;
+  zoom: 1;
+  padding: 0;
+  border: 1px solid #18181a;
+  border-bottom-color: #373c4b;
+  background-image: none;
+  background-color: #373c4b;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #575f77), color-stop(50%, #42485a), color-stop(51%, #373c4b), color-stop(100%, #2c303c));
+  background-image: -webkit-linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c);
+  background-image: -moz-linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c);
+  background-image: -o-linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c);
+  background-image: -ms-linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c);
+  background-image: linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c); }
+
+/* line 73, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-accordion-item .x-grid-header-ct {
+  border-width: 0 0 1px 0!important; }
+
+/* line 77, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header {
+  padding: 0;
+  position: absolute;
+  overflow: hidden;
+  border-right: 1px solid #373c4b;
+  border-left: 0 none;
+  border-top: 0 none;
+  border-bottom: 0 none;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.3);
+  color: white;
+  font: normal 14px tahoma, arial, verdana, sans-serif;
+  background-image: none;
+  background-color: #373c4b;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #575f77), color-stop(50%, #42485a), color-stop(51%, #373c4b), color-stop(100%, #2c303c));
+  background-image: -webkit-linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c);
+  background-image: -moz-linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c);
+  background-image: -o-linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c);
+  background-image: -ms-linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c);
+  background-image: linear-gradient(top, #575f77, #42485a 50%, #373c4b 51%, #2c303c); }
+
+/* line 99, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-group-header {
+  padding: 0;
+  border-left-width: 0; }
+
+/* line 103, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-group-sub-header {
+  background: transparent;
+  border-top: 1px solid #373c4b;
+  border-left-width: 0; }
+
+/* line 109, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-inner {
+  zoom: 1;
+  position: relative;
+  white-space: nowrap;
+  line-height: 15px;
+  padding: 3px 6px 4px; }
+  /* line 116, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-column-header-inner .x-column-header-text {
+    white-space: nowrap; }
+
+/* line 123, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-over,
+.x-column-header-sort-ASC,
+.x-column-header-sort-DESC {
+  border-left-color: #283b61;
+  border-right-color: #283b61;
+  background-image: none;
+  background-color: #496085;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #6c86ae), color-stop(50%, #526c95), color-stop(51%, #496085), color-stop(100%, #405475));
+  background-image: -webkit-linear-gradient(top, #6c86ae, #526c95 50%, #496085 51%, #405475);
+  background-image: -moz-linear-gradient(top, #6c86ae, #526c95 50%, #496085 51%, #405475);
+  background-image: -o-linear-gradient(top, #6c86ae, #526c95 50%, #496085 51%, #405475);
+  background-image: -ms-linear-gradient(top, #6c86ae, #526c95 50%, #496085 51%, #405475);
+  background-image: linear-gradient(top, #6c86ae, #526c95 50%, #496085 51%, #405475); }
+
+/* line 135, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-grid-header-ct,
+.x-nlg .x-column-header {
+  background: repeat-x 0 top;
+  background-image: url('../../resources/themes/images/access/grid/column-header-bg.gif'); }
+/* line 142, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-column-header-over,
+.x-nlg .x-column-header-sort-ASC,
+.x-nlg .x-column-header-sort-DESC {
+  background: #ebf3fd repeat-x 0 top;
+  background-image: url('../../resources/themes/images/access/grid/column-header-over-bg.gif'); }
+
+/* line 149, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-trigger {
+  display: none;
+  height: 100%;
+  width: 14px;
+  background: no-repeat left center;
+  background-color: #c3daf9;
+  background-image: url('../../resources/themes/images/access/grid/grid3-hd-btn.gif');
+  position: absolute;
+  right: 0;
+  top: 0;
+  z-index: 2;
+  cursor: pointer; }
+
+/* line 164, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-over .x-column-header-trigger, .x-column-header-open .x-column-header-trigger {
+  display: block; }
+
+/* line 169, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-align-right {
+  text-align: right; }
+  /* line 172, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-column-header-align-right .x-column-header-text {
+    padding-right: 0.5ex;
+    margin-right: 6px; }
+
+/* line 177, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-align-center {
+  text-align: center; }
+
+/* line 180, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-align-left {
+  text-align: left; }
+
+/* line 185, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-sort-ASC .x-column-header-text {
+  padding-right: 16px;
+  background: no-repeat right 6px;
+  background-image: url('../../resources/themes/images/access/grid/sort_asc.gif'); }
+
+/* line 190, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-sort-DESC .x-column-header-text {
+  padding-right: 16px;
+  background: no-repeat right 6px;
+  background-image: url('../../resources/themes/images/access/grid/sort_desc.gif'); }
+
+/* line 197, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row {
+  vertical-align: top; }
+  /* line 199, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row .x-grid-cell {
+    color: white;
+    font: normal 14px/17px tahoma, arial, verdana, sans-serif;
+    background-color: #1f2933;
+    border-color: #101010;
+    border-style: solid;
+    border-top-color: #1d1d1d;
+    border-width: 0; }
+
+/* line 212, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-grid-cell {
+  border-width: 1px 0; }
+
+/* line 216, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-rowwrap-div {
+  border-width: 1px 0;
+  border-color: #101010;
+  border-style: solid;
+  border-top-color: #1d1d1d;
+  overflow: hidden; }
+
+/* line 226, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-alt .x-grid-cell,
+.x-grid-row-alt .x-grid-rowwrap-div {
+  background-color: #1a232b; }
+
+/* line 231, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-over .x-grid-cell,
+.x-grid-row-over .x-grid-rowwrap-div {
+  border-color: #101010;
+  background-color: #7e552f; }
+
+/* line 238, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-focused .x-grid-cell,
+.x-grid-row-focused .x-grid-rowwrap-div {
+  border-color: #dddddd;
+  background-color: #efefef; }
+
+/* line 245, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-selected .x-grid-cell,
+.x-grid-row-selected .x-grid-rowwrap-div {
+  border-style: dotted;
+  border-color: #101010;
+  background-color: #e48627 !important; }
+
+/* line 254, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-rowwrap-div .x-grid-cell,
+.x-grid-rowwrap-div .x-grid-cell-inner {
+  border-width: 0;
+  background: transparent; }
+
+/* line 261, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-body-hidden {
+  display: none; }
+
+/* line 265, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-rowbody {
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  padding: 4px; }
+  /* line 270, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-rowbody p {
+    margin: 5px 5px 10px 5px; }
+
+/* line 276, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell {
+  overflow: hidden; }
+
+/* line 280, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell-inner {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis;
+  padding: 2px 6px 3px;
+  white-space: nowrap; }
+
+/* line 291, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-grid-cell-inner {
+  line-height: 15px;
+  padding-bottom: 4px; }
+
+/* line 297, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-action-col-cell .x-grid-cell-inner {
+  line-height: 0;
+  padding: 2px; }
+
+/* line 302, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-action-col-cell .x-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 306, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-action-col-cell .x-grid-cell-inner {
+  padding-top: 1px; }
+
+/* line 310, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row .x-grid-cell-special {
+  padding: 0;
+  border-right: 1px solid #454545;
+  background-image: none;
+  background-color: #f6f6f6;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #f6f6f6), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(left, #f6f6f6, #e9e9e9);
+  background-image: -moz-linear-gradient(left, #f6f6f6, #e9e9e9);
+  background-image: -o-linear-gradient(left, #f6f6f6, #e9e9e9);
+  background-image: -ms-linear-gradient(left, #f6f6f6, #e9e9e9);
+  background-image: linear-gradient(left, #f6f6f6, #e9e9e9); }
+
+/* line 316, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row .x-grid-cell-row-checker {
+  vertical-align: middle; }
+
+/*
+IE6-8 have issues with shrinking the TR to 0px (even w/line-height=0), so we
+use an IE-specific trick to make the row disappear. We cannot do this on any
+other browser, because it is not a non-standard thing to do and those other
+browsers will do whacky things with it.
+*/
+/* line 330, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie6 .x-grid-header-row,
+.x-ie7 .x-grid-header-row,
+.x-quirks .x-ie8 .x-grid-header-row {
+  position: absolute; }
+
+/* line 335, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-selected .x-grid-cell-special {
+  border-right: 1px solid #283b61;
+  background-image: none;
+  background-color: #e48627;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #e48627), color-stop(100%, #d7791b));
+  background-image: -webkit-linear-gradient(left, #e48627, #d7791b);
+  background-image: -moz-linear-gradient(left, #e48627, #d7791b);
+  background-image: -o-linear-gradient(left, #e48627, #d7791b);
+  background-image: -ms-linear-gradient(left, #e48627, #d7791b);
+  background-image: linear-gradient(left, #e48627, #d7791b); }
+
+/* line 341, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-dirty-cell {
+  background-image: url('../../resources/themes/images/access/grid/dirty.gif');
+  background-position: 0 0;
+  background-repeat: no-repeat; }
+
+/* line 347, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell-selected {
+  background-color: #B8CFEE !important; }
+
+/* line 353, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-grid-cell-special {
+  background-repeat: repeat-y;
+  background-position: top right; }
+/* line 359, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-grid-row .x-grid-cell-special,
+.x-nlg .x-grid-row-over .x-grid-cell-special {
+  background-image: url('../../resources/themes/images/access/grid/cell-special-bg.gif'); }
+/* line 365, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-grid-row-focused .x-grid-cell-special,
+.x-nlg .x-grid-row-selected .x-grid-cell-special {
+  background-image: url('../../resources/themes/images/access/grid/cell-special-selected-bg.gif'); }
+
+/* line 371, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-col-lines .x-grid-cell {
+  padding-right: 0;
+  border-right: 1px solid #454545; }
+
+/* line 378, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,
+.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner {
+  padding-left: 12px;
+  background-image: url('../../resources/themes/images/access/grid/property-cell-bg.gif');
+  background-repeat: no-repeat;
+  background-position: -16px 2px; }
+
+/* line 388, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,
+.x-grid-with-row-lines.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner {
+  background-position: -16px 1px; }
+
+/* line 394, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-quirks .x-ie .x-grid-row .x-grid-property-name .x-grid-cell-inner {
+  background-position: -16px 2px; }
+
+/* line 399, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-unselectable {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default; }
+
+/* line 403, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-body-hidden {
+  display: none; }
+
+/* line 407, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-collapsed {
+  display: none; }
+
+/* line 413, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-view .x-grid-td-expander {
+  vertical-align: top; }
+
+/* line 418, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-td-expander {
+  background: repeat-y right transparent; }
+
+/* line 424, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-view .x-grid-td-expander .x-grid-cell-inner {
+  padding: 0 !important; }
+
+/* line 430, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-expander {
+  background-image: url('../../resources/themes/images/access/grid/group-collapse.gif');
+  background-color: transparent;
+  width: 9px;
+  height: 13px;
+  margin-left: 3px;
+  background-repeat: no-repeat;
+  background-position: 0 -2px; }
+
+/* line 444, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-collapsed .x-grid-row-expander {
+  background-image: url('../../resources/themes/images/access/grid/group-expand.gif'); }
+
+/* line 449, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-resize-marker {
+  position: absolute;
+  z-index: 5;
+  top: 0;
+  width: 1px;
+  background-color: #0f0f0f; }
+
+/* line 459, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.col-move-top,
+.col-move-bottom {
+  width: 9px;
+  height: 9px;
+  position: absolute;
+  top: 0;
+  line-height: 0;
+  font-size: 0;
+  overflow: hidden;
+  z-index: 20000;
+  background: no-repeat left top transparent; }
+
+/* line 471, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.col-move-top {
+  background-image: url('../../resources/themes/images/access/grid/col-move-top.gif'); }
+
+/* line 475, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.col-move-bottom {
+  background-image: url('../../resources/themes/images/access/grid/col-move-bottom.gif'); }
+
+/* line 480, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-number {
+  width: 30px; }
+
+/* line 487, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group,
+.x-grid-group-body,
+.x-grid-group-hd {
+  zoom: 1; }
+
+/* line 491, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-hd {
+  padding-top: 6px; }
+  /* line 494, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-group-hd .x-grid-cell-inner {
+    padding: 10px 4px 4px 4px;
+    background: white;
+    border-width: 0 0 2px 0;
+    border-style: solid;
+    border-color: #283042;
+    cursor: pointer; }
+
+/* line 508, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-hd-collapsible .x-grid-group-title {
+  background: transparent no-repeat 0 -1px;
+  background-image: url('../../resources/themes/images/access/grid/group-collapse.gif');
+  padding: 0 0 0 14px; }
+
+/* line 515, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-title {
+  color: black;
+  font: bold 14px tahoma, arial, verdana, sans-serif; }
+
+/* line 521, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-hd-collapsed .x-grid-group-title {
+  background-image: url('../../resources/themes/images/access/grid/group-expand.gif'); }
+
+/* line 526, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-collapsed .x-grid-group-body {
+  display: none; }
+
+/* line 530, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-collapsed .x-grid-group-title {
+  background-image: url('../../resources/themes/images/access/grid/group-expand.gif'); }
+
+/* line 534, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-group-by-icon {
+  background-image: url('../../resources/themes/images/access/grid/group-by.gif'); }
+
+/* line 538, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-show-groups-icon {
+  background-image: url('../../resources/themes/images/access/grid/group-by.gif'); }
+
+/* line 542, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-checkbox .x-column-header-inner {
+  padding: 0; }
+
+/* line 546, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell-special .x-grid-cell-inner {
+  padding-left: 4px;
+  padding-right: 4px; }
+
+/* line 552, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-checker,
+.x-column-header-checkbox .x-column-header-text {
+  height: 14px;
+  width: 14px;
+  line-height: 0;
+  background-image: url('../../resources/themes/images/access/grid/unchecked.gif');
+  background-position: -1px -1px;
+  background-repeat: no-repeat;
+  background-color: transparent; }
+
+/* line 564, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-checkbox .x-column-header-text {
+  display: block;
+  margin: 0 5px; }
+
+/* IE6, IE7, and all IE Quirks mode need line-height to be the same as checkbox height or the header/row height will be too tall */
+/* line 573, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-quirks .x-ie .x-grid-row-checker,
+.x-quirks .x-ie .x-column-header-checkbox .x-column-header-text, .x-ie7m .x-grid-row-checker, .x-ie7m .x-column-header-checkbox .x-column-header-text {
+  line-height: 14px; }
+
+/* line 579, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-hd-checker-on .x-column-header-text {
+  background-image: url('../../resources/themes/images/access/grid/checked.gif'); }
+
+/* line 583, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell-row-checker .x-grid-cell-inner {
+  padding-top: 4px;
+  padding-bottom: 2px;
+  line-height: 16px; }
+
+/* line 588, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-grid-cell-row-checker .x-grid-cell-inner {
+  padding-top: 3px; }
+
+/* line 591, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-checker {
+  margin-left: 1px;
+  background-position: 50% -2px; }
+
+/* line 598, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-selected .x-grid-row-checker,
+.x-grid-row-checked .x-grid-row-checker {
+  background-image: url('../../resources/themes/images/access/grid/checked.gif'); }
+
+/* line 603, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-first {
+  background-image: url('../../resources/themes/images/access/grid/page-first.gif') !important; }
+
+/* line 607, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-loading {
+  background-image: url('../../resources/themes/images/access/grid/refresh.gif') !important; }
+
+/* line 611, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-last {
+  background-image: url('../../resources/themes/images/access/grid/page-last.gif') !important; }
+
+/* line 615, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-next {
+  background-image: url('../../resources/themes/images/access/grid/page-next.gif') !important; }
+
+/* line 619, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-prev {
+  background-image: url('../../resources/themes/images/access/grid/page-prev.gif') !important; }
+
+/* line 624, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-loading {
+  background-image: url('../../resources/themes/images/access/grid/refresh-disabled.gif') !important; }
+/* line 628, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-first {
+  background-image: url('../../resources/themes/images/access/grid/page-first-disabled.gif') !important; }
+/* line 632, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-last {
+  background-image: url('../../resources/themes/images/access/grid/page-last-disabled.gif') !important; }
+/* line 636, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-next {
+  background-image: url('../../resources/themes/images/access/grid/page-next-disabled.gif') !important; }
+/* line 640, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-prev {
+  background-image: url('../../resources/themes/images/access/grid/page-prev-disabled.gif') !important; }
+
+/* line 646, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-hmenu-sort-asc .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/access/grid/hmenu-asc.gif'); }
+
+/* line 650, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-hmenu-sort-desc .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/access/grid/hmenu-desc.gif'); }
+
+/* line 654, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-hmenu-lock .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/access/grid/hmenu-lock.gif'); }
+
+/* line 658, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-hmenu-unlock .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/access/grid/hmenu-unlock.gif'); }
+
+/* line 662, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-group-by-icon {
+  background-image: url('../../resources/themes/images/access/grid/group-by.gif'); }
+
+/* line 666, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-cols-icon .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/access/grid/columns.gif'); }
+
+/* line 670, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-show-groups-icon {
+  background-image: url('../../resources/themes/images/access/grid/group-by.gif'); }
+
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-drop-indicator {
+  position: absolute;
+  height: 1px;
+  line-height: 0px;
+  background-color: #77BC71;
+  overflow: visible; }
+  /* line 682, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-drop-indicator .x-grid-drop-indicator-left {
+    position: absolute;
+    top: -8px;
+    left: -12px;
+    background-image: url('../../resources/themes/images/access/grid/dd-insert-arrow-right.png');
+    height: 16px;
+    width: 16px; }
+  /* line 691, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-drop-indicator .x-grid-drop-indicator-right {
+    position: absolute;
+    top: -8px;
+    right: -11px;
+    background-image: url('../../resources/themes/images/access/grid/dd-insert-arrow-left.png');
+    height: 16px;
+    width: 16px; }
+
+/* line 702, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie6 .x-grid-drop-indicator-left {
+  background-image: url('../../resources/themes/images/access/grid/dd-insert-arrow-right.gif'); }
+/* line 706, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie6 .x-grid-drop-indicator-right {
+  background-image: url('../../resources/themes/images/access/grid/dd-insert-arrow-left.gif'); }
+
+/* line 714, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-text {
+  padding: 0 3px; }
+/* line 717, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-cb-wrap {
+  padding-top: 1px; }
+
+/* line 723, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor {
+  position: absolute !important;
+  z-index: 1;
+  zoom: 1;
+  overflow: visible !important; }
+  /* line 729, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-text {
+    padding: 0 1px; }
+  /* line 732, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-cb-wrap {
+    padding-top: 0; }
+  /* line 735, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-checkbox {
+    margin-left: -4px; }
+  /* line 738, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-display-field {
+    font: normal 14px/15px tahoma, arial, verdana, sans-serif;
+    padding-top: 0;
+    padding-left: 1px; }
+  /* line 744, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-panel-body {
+    background-color: #4b5d83;
+    border-top: 1px solid #18181a !important;
+    border-bottom: 1px solid #18181a !important; }
+
+/* line 754, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-cb-wrap, .x-grid-row-editor .x-form-cb-wrap {
+  text-align: center; }
+/* line 757, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-trigger, .x-grid-row-editor .x-form-trigger {
+  height: 20px; }
+/* line 761, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-trigger-wrap .x-form-spinner-up, .x-grid-editor .x-form-trigger-wrap .x-form-spinner-down, .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-up, .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url('../../resources/themes/images/access/form/spinner-small.gif');
+  height: 10px !important; }
+
+/* line 768, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-text, .x-grid-row-editor .x-form-text {
+  font: normal 14px/15px tahoma, arial, verdana, sans-serif;
+  height: 20px; }
+
+/* line 776, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-border-box .x-grid-editor .x-form-trigger,
+.x-border-box .x-grid-row-editor .x-form-trigger {
+  height: 22px; }
+/* line 779, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-border-box .x-grid-editor .x-form-text,
+.x-border-box .x-grid-row-editor .x-form-text {
+  height: 22px;
+  padding-bottom: 1px; }
+
+/* line 787, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie .x-grid-editor .x-form-text {
+  padding-left: 4px; }
+/* line 790, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie .x-grid-row-editor .x-form-text {
+  padding-left: 2px; }
+
+/* line 796, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie8m .x-grid-editor .x-form-text,
+.x-ie8m .x-grid-row-editor .x-form-text {
+  padding-top: 1px; }
+
+/* line 803, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-strict .x-ie6 .x-grid-editor .x-form-text,
+.x-strict .x-ie6 .x-grid-row-editor .x-form-text,
+.x-strict .x-ie7 .x-grid-editor .x-form-text,
+.x-strict .x-ie7 .x-grid-row-editor .x-form-text {
+  height: 16px; }
+
+/* line 809, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-quirks .x-ie9 .x-grid-editor .x-form-text, .x-quirks .x-ie9 .x-grid-row-editor .x-form-text {
+  line-height: 17px; }
+
+/* line 818, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-opera .x-grid-editor .x-form-text {
+  padding-left: 4px; }
+/* line 821, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-opera .x-grid-row-editor .x-form-text {
+  padding-left: 2px; }
+
+/* line 828, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons {
+  background-color: #4b5d83;
+  position: absolute;
+  bottom: -31px;
+  padding: 4px;
+  height: 32px; }
+  /* line 835, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-strict .x-ie7m .x-grid-row-editor-buttons {
+    width: 192px;
+    height: 24px; }
+
+/* line 845, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-ml,
+.x-grid-row-editor-buttons-mr,
+.x-grid-row-editor-buttons-bl,
+.x-grid-row-editor-buttons-br,
+.x-grid-row-editor-buttons-bc {
+  position: absolute;
+  overflow: hidden; }
+
+/* line 851, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-bl,
+.x-grid-row-editor-buttons-br {
+  width: 4px;
+  height: 4px;
+  bottom: 0px;
+  background-image: url('../../resources/themes/images/access/panel/panel-default-framed-corners.gif'); }
+
+/* line 857, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-bl {
+  left: 0px;
+  background-position: 0px -16px; }
+
+/* line 861, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-br {
+  right: 0px;
+  background-position: 0px -20px; }
+
+/* line 866, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-bc {
+  position: absolute;
+  left: 4px;
+  bottom: 0px;
+  width: 192px;
+  height: 1px;
+  background-color: #18181a; }
+
+/* line 876, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-ml,
+.x-grid-row-editor-buttons-mr {
+  height: 27px;
+  width: 1px;
+  top: 1px;
+  background-color: #18181a; }
+
+/* line 882, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-ml {
+  left: 0px; }
+
+/* line 885, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-mr {
+  background-position: 0px -20px;
+  right: 0px; }
+
+/* line 891, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-errors ul {
+  margin-left: 5px; }
+/* line 894, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-errors li {
+  list-style: disc;
+  margin-left: 15px; }
+
+/*misc*/
+/* line 9, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-webkit *:focus {
+  outline: none !important; }
+
+/* line 16, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item {
+  vertical-align: top;
+  table-layout: fixed; }
+
+/* line 26, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-autocontainer-form-item,
+.x-anchor-form-item,
+.x-vbox-form-item,
+.x-checkboxgroup-form-item,
+.x-table-form-item {
+  margin-bottom: 5px; }
+
+/* line 31, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-layout-table {
+  border-collapse: separate;
+  border-spacing: 0 2px; }
+
+/* line 37, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item-body {
+  position: relative; }
+
+/* line 42, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-form-item td {
+  border-top: 1px solid transparent; }
+
+/* line 51, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-ie6 .x-form-layout-table {
+  border-collapse: collapse;
+  border-spacing: 0; }
+/* line 56, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-ie6 .x-form-form-item td {
+  border-top-width: 0; }
+/* line 62, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-ie6 td.x-form-item-pad {
+  height: 5px; }
+
+/* line 68, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-editor .x-form-item-body {
+  padding-bottom: 0; }
+
+/* line 72, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item-label {
+  display: block;
+  padding: 3px 0 0;
+  font-size: 15px;
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default; }
+
+/* line 79, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item-label-top {
+  display: block;
+  zoom: 1;
+  padding: 0 0 5px 0; }
+
+/* line 85, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item-label-right {
+  text-align: right; }
+
+/* line 89, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-invalid-under {
+  padding: 2px 2px 2px 18px;
+  color: #c0272b;
+  font: normal 14px tahoma, arial, verdana, sans-serif;
+  line-height: 16px;
+  background: no-repeat 0 2px;
+  background-image: url('../../resources/themes/images/access/form/exclamation.gif'); }
+
+/* line 100, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-invalid-icon {
+  width: 18px;
+  height: 14px;
+  background: no-repeat center center;
+  background-image: url('../../resources/themes/images/access/form/exclamation.gif');
+  overflow: hidden; }
+  /* line 106, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-form-invalid-icon ul {
+    display: block;
+    width: 18px; }
+    /* line 109, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+    .x-form-invalid-icon ul li {
+      /* prevent inner elements from interfering with QuickTip hovering */
+      display: none; }
+
+/* line 117, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-lbl-top-err-icon {
+  margin-bottom: 4px; }
+
+/* line 7, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-field,
+.x-form-display-field {
+  margin: 0 0 0 0;
+  font: normal 15px tahoma, arial, verdana, sans-serif;
+  color: white; }
+
+/* line 14, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-item-hidden {
+  margin: 0; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-text,
+textarea.x-form-field {
+  padding: 1px 3px;
+  background: repeat-x 0 0;
+  border: 2px solid;
+  background-color: #34383f;
+  background-image: url('../../resources/themes/images/access/form/text-bg.gif');
+  border-color: #737b8c; }
+
+/* line 36, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-text {
+  height: 20px;
+  line-height: 17px;
+  vertical-align: top; }
+
+/* line 43, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-ie8m .x-form-text {
+  line-height: 17px; }
+
+/* line 48, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-border-box .x-form-text {
+  height: 26px; }
+
+/* line 52, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+textarea.x-form-field {
+  color: white;
+  overflow: auto;
+  height: auto;
+  line-height: normal;
+  background: repeat-x 0 0;
+  background-color: #34383f;
+  background-image: url('../../resources/themes/images/access/form/text-bg.gif');
+  resize: none; }
+
+/* line 65, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-border-box textarea.x-form-field {
+  height: auto; }
+
+/* line 70, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-safari.x-mac textarea.x-form-field {
+  margin-bottom: -2px; }
+
+/* line 76, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-focus,
+textarea.x-form-focus {
+  border-color: #ff9c33; }
+
+/* line 81, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-invalid-field,
+textarea.x-form-invalid-field {
+  background-color: #15171a;
+  background-image: url('../../resources/themes/images/access/grid/invalid_line.gif');
+  background-repeat: repeat-x;
+  background-position: bottom;
+  border-color: #cc3300; }
+
+/* line 91, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-item {
+  font: normal 15px tahoma, arial, verdana, sans-serif; }
+
+/* line 95, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-empty-field, textarea.x-form-empty-field {
+  color: gray; }
+
+/* line 100, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-webkit .x-form-empty-field {
+  line-height: 17px; }
+
+/* line 105, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-display-field {
+  padding-top: 3px; }
+
+        /*
+        In oldIE, text inputs get a mysterious extra pixel of spacing above and below.
+        This is targeted at IE6-IE7 (all modes) and IE9+ Quirks mode.
+
+        IE8 quirks on Windows 7 requires this fix, but on
+        IE8 quirks on Windows XP, this is breaks the layout.
+        TODO: Check field input heights in IE8 quirks on Windows Vista.
+
+        Since we can't specifically target a specific version of Windows via CSS, we default to fixing it the XP way, for now.
+        */
+/* line 121, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-quirks .x-ie9p .x-form-text,
+.x-ie7m .x-form-text {
+  margin-top: -1px;
+  margin-bottom: -1px; }
+
+/* line 126, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-ie .x-form-file {
+  height: 27px;
+  line-height: 18px;
+  vertical-align: middle; }
+
+/* line 135, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-field-default-toolbar .x-form-text {
+  height: 18px; }
+
+/* line 139, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-border-box .x-field-default-toolbar .x-form-text {
+  height: 24px; }
+
+/* line 143, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-field-default-toolbar .x-form-item-label-left {
+  padding-left: 4px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset {
+  border: 1px solid #727c8c;
+  padding: 10px;
+  margin-bottom: 10px;
+  display: block;
+  /* preserve margins in IE */
+  position: relative; }
+
+/* line 18, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-ie .x-fieldset {
+  padding-top: 0; }
+  /* line 20, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-ie .x-fieldset .x-fieldset-body {
+    padding-top: 10px; }
+
+/* line 25, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-header-checkbox {
+  line-height: 14px; }
+
+/* line 29, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-header {
+  font: 14px/14px bold tahoma, arial, verdana, sans-serif;
+  color: white;
+  padding: 0 3px 1px;
+  overflow: hidden; }
+  /* line 35, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-fieldset-header-text {
+    float: left;
+    padding: 1px 0; }
+  /* line 39, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-fieldset-header-text-collapsible {
+    cursor: pointer; }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-form-item,
+  .x-fieldset-header .x-tool {
+    float: left;
+    margin: 1px 0 0 0; }
+  /* line 49, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-form-cb-wrap {
+    padding: 1px 0;
+    font-size: 0;
+    line-height: 0; }
+
+/* line 58, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-with-title .x-fieldset-header-checkbox,
+.x-fieldset-with-title .x-tool {
+  margin-right: 3px; }
+
+/* line 65, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-webkit .x-fieldset-header {
+  -webkit-padding-start: 3px;
+  -webkit-padding-end: 3px; }
+
+/* line 75, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-opera .x-fieldset-with-legend {
+  margin-top: -1px; }
+/* line 78, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-opera.x-mac .x-fieldset-header-text {
+  padding: 2px 0 0; }
+
+/* line 86, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-strict .x-ie8 .x-fieldset-header {
+  margin-bottom: -1px; }
+  /* line 90, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-strict .x-ie8 .x-fieldset-header .x-tool,
+  .x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,
+  .x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox {
+    position: relative;
+    top: -1px; }
+
+/* line 100, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-quirks .x-ie .x-fieldset-header,
+.x-ie8m .x-fieldset-header {
+  padding-left: 1px;
+  padding-right: 1px; }
+
+/* line 108, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-collapsed .x-fieldset-body {
+  display: none; }
+
+/* line 113, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-collapsed {
+  padding-bottom: 0 !important;
+  border-width: 1px 1px 0 1px !important;
+  border-left-color: transparent !important;
+  border-right-color: transparent !important; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-ie6 .x-fieldset-collapsed {
+  border-width: 1px 0 0 0 !important;
+  padding-bottom: 0 !important;
+  margin-left: 1px;
+  margin-right: 1px; }
+
+/* line 130, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-ie .x-fieldset-bwrap {
+  zoom: 1; }
+
+/* IE legend positioning bug */
+/* line 137, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-ie .x-fieldset-noborder legend {
+  position: relative;
+  margin-bottom: 23px; }
+
+/* line 143, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-ie .x-fieldset-noborder legend span {
+  position: absolute;
+  left: 16px; }
+
+/* line 149, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset {
+  overflow: hidden; }
+
+/* line 153, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-bwrap {
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 159, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-body {
+  overflow: hidden; }
+
+/* line 8, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+.x-form-file-wrap .x-form-text {
+  color: #777; }
+/* line 12, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+.x-form-file-wrap .x-form-file-btn {
+  overflow: hidden; }
+/* line 16, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+.x-form-file-wrap .x-form-file-input {
+  position: absolute;
+  top: -4px;
+  right: -2px;
+  height: 34px;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  /* Yes, there's actually a good reason for this...
+   * If the configured buttonText is set to something longer than the default,
+   * then it will quickly exceed the width of the hidden file input's "Browse..."
+   * button, so part of the custom button's clickable area will be covered by
+   * the hidden file input's text box instead. This results in a text-selection
+   * mouse cursor over that part of the button, at least in Firefox, which is
+   * confusing to a user. Giving the hidden file input a huge font-size makes
+   * the native button part very large so it will cover the whole clickable area.
+   */
+  font-size: 100px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-wrap {
+  padding-top: 3px; }
+
+/* line 11, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-checkbox,
+.x-form-radio {
+  vertical-align: -1px;
+  width: 19px;
+  height: 19px;
+  background: no-repeat;
+  background-image: url('../../resources/themes/images/access/form/checkbox.gif');
+  overflow: hidden;
+  padding: 0;
+  border: 0; }
+  /* line 22, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-form-checkbox::-moz-focus-inner,
+  .x-form-radio::-moz-focus-inner {
+    padding: 0;
+    border: 0; }
+
+/* Hack for IE; causes alignment problem in IE9 standards mode so exclude that */
+/* line 31, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-nbr.x-ie .x-form-checkbox,
+.x-nbr.x-ie .x-form-radio {
+  font-size: 0; }
+
+/* line 38, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-checked .x-form-checkbox,
+.x-form-cb-checked .x-form-radio {
+  background-position: 0 -19px; }
+
+/* Focused */
+/* line 44, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-focus {
+  background-position: -19px 0; }
+
+/* line 48, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-checked .x-form-cb-focus {
+  background-position: -19px -19px; }
+
+/* Radios */
+/* line 54, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-radio {
+  background-image: url('../../resources/themes/images/access/form/radio.gif'); }
+
+/* boxLabel */
+/* line 59, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-label-before {
+  margin-right: 4px; }
+
+/* line 62, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-label-after {
+  margin-left: 4px; }
+
+/* line 7, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+.x-form-checkboxgroup-body {
+  padding: 1px 4px 1px 4px; }
+
+/* line 12, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+.x-form-invalid .x-form-checkboxgroup-body {
+  border: 1px solid #c30!important;
+  background: transparent repeat-x bottom;
+  background-image: url('../../resources/themes/images/access/grid/invalid_line.gif');
+  padding: 1px 3px 0 3px; }
+
+/* line 20, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+.x-check-group-alt {
+  background: #4d515c;
+  border-top: 1px dotted #333333;
+  border-bottom: 1px dotted #333333; }
+
+/* line 27, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+.x-form-check-group-label {
+  color: #333;
+  border-bottom: 1px solid #333;
+  margin: 0 30px 5px 0;
+  padding: 2px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap {
+  vertical-align: top; }
+
+/* line 10, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger {
+  background-image: url('../../resources/themes/images/access/form/trigger.gif');
+  background-position: 0 0;
+  width: 20px;
+  height: 24px;
+  border-bottom: 2px solid #737b8c;
+  cursor: pointer;
+  cursor: hand;
+  overflow: hidden; }
+
+/* line 24, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-border-box .x-form-trigger {
+  height: 26px; }
+
+/* line 28, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger {
+  height: 22px; }
+
+/* line 32, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-border-box .x-field-default-toolbar .x-form-trigger {
+  height: 24px; }
+
+/* line 37, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-over {
+  background-position: -20px 0;
+  border-bottom-color: #ff9c33; }
+
+/* line 43, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap-focus .x-form-trigger {
+  background-position: -60px 0;
+  border-bottom-color: #737b8c; }
+
+/* line 49, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap-focus .x-form-trigger-over {
+  background-position: -80px 0;
+  border-bottom-color: #ff9c33; }
+
+/* line 58, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-click,
+.x-form-trigger-wrap-focus .x-form-trigger-click {
+  background-position: -40px 0;
+  border-bottom-color: #c76e12; }
+
+/* line 66, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-icon {
+  height: 18px;
+  background-repeat: no-repeat;
+  background-position: 7px 6px; }
+
+/* line 74, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-pickerfield-open .x-form-field {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 80, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-pickerfield-open-above .x-form-field {
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  -o-border-bottom-left-radius: 3px;
+  -ms-border-bottom-left-radius: 3px;
+  -khtml-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-arrow-trigger .x-form-trigger-icon {
+  background-image: url('../../resources/themes/images/access/boundlist/trigger-arrow.png'); }
+
+/* line 92, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-date-trigger {
+  background-image: url('../../resources/themes/images/access/form/date-trigger.gif'); }
+
+/* line 99, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap .x-form-spinner-up,
+.x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url('../../resources/themes/images/access/form/spinner.gif');
+  width: 20px !important;
+  height: 13px !important;
+  font-size: 0;
+  /*for IE*/
+  border-bottom: 0; }
+/* line 109, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap .x-form-spinner-down {
+  background-position: 0 -13px; }
+
+/* line 113, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down {
+  background-position: -60px -13px; }
+
+/* line 116, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap .x-form-spinner-down-over {
+  background-position: -20px -13px; }
+
+/* line 119, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down-over {
+  background-position: -80px -13px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap .x-form-spinner-down-click {
+  background-position: -40px -13px; }
+
+/* line 131, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-up,
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url('../../resources/themes/images/access/form/spinner-small.gif');
+  height: 12px !important; }
+/* line 135, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down {
+  background-position: 0 -12px; }
+/* line 139, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down {
+  background-position: -60px -12px; }
+/* line 142, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-over {
+  background-position: -20px -12px; }
+/* line 145, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down-over {
+  background-position: -80px -12px; }
+/* line 148, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-click {
+  background-position: -40px -12px; }
+
+/* line 154, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-trigger-noedit {
+  cursor: pointer;
+  cursor: hand; }
+
+/* line 160, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-item-disabled .x-trigger-noedit, .x-item-disabled .x-form-trigger {
+  cursor: auto; }
+
+/* line 166, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-clear-trigger {
+  background-image: url('../../resources/themes/images/access/form/clear-trigger.gif'); }
+
+/* line 169, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-search-trigger {
+  background-image: url('../../resources/themes/images/access/form/search-trigger.gif'); }
+
+/* line 177, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-quirks .prefixie6 .x-form-trigger-input-cell {
+  height: 26px; }
+/* line 180, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-quirks .prefixie6 .x-field-default-toolbar .x-form-trigger-input-cell {
+  height: 24px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-wrap {
+  border: 1px solid #737b8c; }
+  /* line 9, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-html-editor-wrap .x-toolbar {
+    border-top-width: 0;
+    border-left-width: 0;
+    border-right-width: 0; }
+  /* line 15, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-html-editor-wrap textarea {
+    background-color: #34383f; }
+
+/* line 20, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-btn-text {
+  background: transparent no-repeat;
+  background-image: url('../../resources/themes/images/access/editor/tb-sprite.gif'); }
+
+/* line 26, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-bold,
+.x-menu-item img.x-edit-bold {
+  background-position: 0 0;
+  background-image: url('../../resources/themes/images/access/editor/tb-sprite.gif'); }
+
+/* line 32, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-italic,
+.x-menu-item img.x-edit-italic {
+  background-position: -16px 0;
+  background-image: url('../../resources/themes/images/access/editor/tb-sprite.gif'); }
+
+/* line 38, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-underline,
+.x-menu-item img.x-edit-underline {
+  background-position: -32px 0;
+  background-image: url('../../resources/themes/images/access/editor/tb-sprite.gif'); }
+
+/* line 44, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-forecolor,
+.x-menu-item img.x-edit-forecolor {
+  background-position: -160px 0;
+  background-image: url('../../resources/themes/images/access/editor/tb-sprite.gif'); }
+
+/* line 50, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-backcolor,
+.x-menu-item img.x-edit-backcolor {
+  background-position: -176px 0;
+  background-image: url('../../resources/themes/images/access/editor/tb-sprite.gif'); }
+
+/* line 56, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-justifyleft,
+.x-menu-item img.x-edit-justifyleft {
+  background-position: -112px 0;
+  background-image: url('../../resources/themes/images/access/editor/tb-sprite.gif'); }
+
+/* line 62, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-justifycenter,
+.x-menu-item img.x-edit-justifycenter {
+  background-position: -128px 0;
+  background-image: url('../../resources/themes/images/access/editor/tb-sprite.gif'); }
+
+/* line 68, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-justifyright,
+.x-menu-item img.x-edit-justifyright {
+  background-position: -144px 0;
+  background-image: url('../../resources/themes/images/access/editor/tb-sprite.gif'); }
+
+/* line 74, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-insertorderedlist,
+.x-menu-item img.x-edit-insertorderedlist {
+  background-position: -80px 0;
+  background-image: url('../../resources/themes/images/access/editor/tb-sprite.gif'); }
+
+/* line 80, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-insertunorderedlist,
+.x-menu-item img.x-edit-insertunorderedlist {
+  background-position: -96px 0;
+  background-image: url('../../resources/themes/images/access/editor/tb-sprite.gif'); }
+
+/* line 86, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-increasefontsize,
+.x-menu-item img.x-edit-increasefontsize {
+  background-position: -48px 0;
+  background-image: url('../../resources/themes/images/access/editor/tb-sprite.gif'); }
+
+/* line 92, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-decreasefontsize,
+.x-menu-item img.x-edit-decreasefontsize {
+  background-position: -64px 0;
+  background-image: url('../../resources/themes/images/access/editor/tb-sprite.gif'); }
+
+/* line 98, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-sourceedit,
+.x-menu-item img.x-edit-sourceedit {
+  background-position: -192px 0;
+  background-image: url('../../resources/themes/images/access/editor/tb-sprite.gif'); }
+
+/* line 104, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-createlink,
+.x-menu-item img.x-edit-createlink {
+  background-position: -208px 0;
+  background-image: url('../../resources/themes/images/access/editor/tb-sprite.gif'); }
+
+/* line 109, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tip .x-tip-bd .x-tip-bd-inner {
+  padding: 5px;
+  padding-bottom: 1px; }
+
+/* line 115, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-toolbar {
+  position: static !important; }
+/* line 118, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-font-select {
+  font-size: 11px; }
+
+/* line 123, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-wrap textarea {
+  border: 0;
+  padding: 3px 2px;
+  overflow: auto; }
+
+/* line 7, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel,
+.x-plain {
+  overflow: hidden;
+  position: relative; }
+
+/* line 24, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-ie .x-panel-header,
+.x-ie .x-panel-header-tl,
+.x-ie .x-panel-header-tc,
+.x-ie .x-panel-header-tr,
+.x-ie .x-panel-header-ml,
+.x-ie .x-panel-header-mc,
+.x-ie .x-panel-header-mr,
+.x-ie .x-panel-header-bl,
+.x-ie .x-panel-header-bc,
+.x-ie .x-panel-header-br {
+  zoom: 1; }
+
+/* line 30, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-ie8 td.x-frame-mc {
+  vertical-align: top; }
+
+/* line 37, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-horizontal {
+  padding: 3px 5px 4px; }
+
+/* line 40, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-vertical {
+  padding: 5px 4px; }
+
+/* line 45, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-icon,
+.x-window-header-icon {
+  width: 16px;
+  height: 16px;
+  background-repeat: no-repeat;
+  background-position: 0 0;
+  vertical-align: middle;
+  margin-right: 4px; }
+
+/* line 56, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-vertical .x-panel-header-icon,
+.x-vertical .x-window-header-icon {
+  margin: 0 0 4px; }
+
+/* line 64, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-draggable,
+.x-panel-header-draggable .x-panel-header-text,
+.x-window-header-draggable,
+.x-window-header-draggable .x-window-header-text {
+  cursor: move; }
+
+/* line 70, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-ghost, .x-window-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+  opacity: 0.65;
+  cursor: move; }
+
+/* line 76, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-horizontal .x-panel-header-body, .x-panel-header-horizontal .x-window-header-body, .x-panel-header-horizontal .x-btn-group-header-body, .x-window-header-horizontal .x-panel-header-body, .x-window-header-horizontal .x-window-header-body, .x-window-header-horizontal .x-btn-group-header-body, .x-btn-group-header-horizontal .x-panel-header-body, .x-btn-group-header-horizontal .x-window-header-body, .x-btn-group-header-horizontal .x-btn-group-header-body {
+  width: 100%; }
+
+/* line 82, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-vertical .x-panel-header-body, .x-panel-header-vertical .x-window-header-body, .x-panel-header-vertical .x-btn-group-header-body, .x-window-header-vertical .x-panel-header-body, .x-window-header-vertical .x-window-header-body, .x-window-header-vertical .x-btn-group-header-body, .x-btn-group-header-vertical .x-panel-header-body, .x-btn-group-header-vertical .x-window-header-body, .x-btn-group-header-vertical .x-btn-group-header-body {
+  height: 100%; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-text-container {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis; }
+
+/* line 93, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-text {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  white-space: nowrap; }
+
+/* line 100, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-left .x-vml-base,
+.x-panel-header-right .x-vml-base {
+  left: -3px !important; }
+
+/* line 106, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-body {
+  overflow: hidden;
+  position: relative;
+  font-size: 12px; }
+
+/* line 114, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-vertical .x-surface {
+  padding-left: 1px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-opera .x-panel-header-vertical .x-surface,
+.x-strict .x-ie9 .x-panel-header-vertical .x-surface {
+  padding-left: 2px; }
+
+/* line 129, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-collapsed-border-top {
+  border-bottom-width: 1px !important; }
+/* line 132, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-collapsed-border-right {
+  border-left-width: 1px !important; }
+/* line 135, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-collapsed-border-bottom {
+  border-top-width: 1px !important; }
+/* line 138, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-collapsed-border-left {
+  border-right-width: 1px !important; }
+
+/* line 145, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-vertical .x-frame-mc {
+  background-repeat: repeat-y; }
+
+/* line 248, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-default {
+  border-color: #18181a; }
+
+/* line 253, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default {
+  font-size: 14px;
+  border-color: #18181a;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -ms-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155); }
+
+/* line 277, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-top {
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-top-bg.gif'); }
+
+/* line 281, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-bottom {
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-bottom-bg.gif'); }
+
+/* line 285, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-left {
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-left-bg.gif'); }
+
+/* line 289, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-right {
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-right-bg.gif'); }
+
+/* line 293, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-right {
+  background-position: top right; }
+
+/* line 297, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-bottom {
+  background-position: bottom left; }
+
+/* line 338, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-text-default {
+  color: white;
+  font-size: 14px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 17px; }
+
+/* line 348, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-body-default {
+  background: #232d38;
+  border-color: #18181a;
+  color: white;
+  border-width: 1px;
+  border-style: solid; }
+
+/* line 363, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-window-header-default,
+.x-panel-collapsed .x-panel-header-default {
+  border-color: #18181a; }
+
+/* line 368, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-vertical {
+  border-color: #18181a; }
+
+/* line 375, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-left,
+.x-panel-header-default-right {
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -ms-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155); }
+
+/* line 416, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-top {
+  -moz-border-radius-bottomleft: null;
+  -webkit-border-bottom-left-radius: null;
+  -o-border-bottom-left-radius: null;
+  -ms-border-bottom-left-radius: null;
+  -khtml-border-bottom-left-radius: null;
+  border-bottom-left-radius: null;
+  -moz-border-radius-bottomright: null;
+  -webkit-border-bottom-right-radius: null;
+  -o-border-bottom-right-radius: null;
+  -ms-border-bottom-right-radius: null;
+  -khtml-border-bottom-right-radius: null;
+  border-bottom-right-radius: null; }
+/* line 420, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-right {
+  -moz-border-radius-topleft: null;
+  -webkit-border-top-left-radius: null;
+  -o-border-top-left-radius: null;
+  -ms-border-top-left-radius: null;
+  -khtml-border-top-left-radius: null;
+  border-top-left-radius: null;
+  -moz-border-radius-bottomleft: null;
+  -webkit-border-bottom-left-radius: null;
+  -o-border-bottom-left-radius: null;
+  -ms-border-bottom-left-radius: null;
+  -khtml-border-bottom-left-radius: null;
+  border-bottom-left-radius: null; }
+/* line 424, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-bottom {
+  -moz-border-radius-topleft: null;
+  -webkit-border-top-left-radius: null;
+  -o-border-top-left-radius: null;
+  -ms-border-top-left-radius: null;
+  -khtml-border-top-left-radius: null;
+  border-top-left-radius: null;
+  -moz-border-radius-topright: null;
+  -webkit-border-top-right-radius: null;
+  -o-border-top-right-radius: null;
+  -ms-border-top-right-radius: null;
+  -khtml-border-top-right-radius: null;
+  border-top-right-radius: null; }
+/* line 428, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-left {
+  -moz-border-radius-topright: null;
+  -webkit-border-top-right-radius: null;
+  -o-border-top-right-radius: null;
+  -ms-border-top-right-radius: null;
+  -khtml-border-top-right-radius: null;
+  border-top-right-radius: null;
+  -moz-border-radius-bottomright: null;
+  -webkit-border-bottom-right-radius: null;
+  -o-border-bottom-right-radius: null;
+  -ms-border-bottom-right-radius: null;
+  -khtml-border-bottom-right-radius: null;
+  border-bottom-right-radius: null; }
+
+/* line 434, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-top {
+  -moz-box-shadow: #4f5873 0 1px 0px 0 inset;
+  -webkit-box-shadow: #4f5873 0 1px 0px 0 inset;
+  -o-box-shadow: #4f5873 0 1px 0px 0 inset;
+  box-shadow: #4f5873 0 1px 0px 0 inset; }
+
+/* line 438, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-right {
+  -moz-box-shadow: #4f5873 -1px 0 0px 0 inset;
+  -webkit-box-shadow: #4f5873 -1px 0 0px 0 inset;
+  -o-box-shadow: #4f5873 -1px 0 0px 0 inset;
+  box-shadow: #4f5873 -1px 0 0px 0 inset; }
+
+/* line 442, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-bottom {
+  -moz-box-shadow: #4f5873 0 -1px 0px 0 inset;
+  -webkit-box-shadow: #4f5873 0 -1px 0px 0 inset;
+  -o-box-shadow: #4f5873 0 -1px 0px 0 inset;
+  box-shadow: #4f5873 0 -1px 0px 0 inset; }
+
+/* line 446, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-left {
+  -moz-box-shadow: #4f5873 1px 0 0px 0 inset;
+  -webkit-box-shadow: #4f5873 1px 0 0px 0 inset;
+  -o-box-shadow: #4f5873 1px 0 0px 0 inset;
+  box-shadow: #4f5873 1px 0 0px 0 inset; }
+
+/* line 481, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-right-tc,
+.x-panel-header-default-right-mc,
+.x-panel-header-default-right-bc {
+  background-position: right 0; }
+
+/* line 487, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-bottom-tc,
+.x-panel-header-default-bottom-mc,
+.x-panel-header-default-bottom-bc {
+  background-position: 0 bottom; }
+
+/* line 248, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-default-framed {
+  border-color: #18181a; }
+
+/* line 253, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed {
+  font-size: 14px;
+  border-color: #18181a;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -ms-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155); }
+
+/* line 277, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-top {
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-top-bg.gif'); }
+
+/* line 281, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-bottom {
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-bottom-bg.gif'); }
+
+/* line 285, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-left {
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-left-bg.gif'); }
+
+/* line 289, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-right {
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-right-bg.gif'); }
+
+/* line 293, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-right {
+  background-position: top right; }
+
+/* line 297, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-bottom {
+  background-position: bottom left; }
+
+/* line 305, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nbr .x-panel-header-default-framed {
+  background-image: none; }
+
+/* line 317, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-strict .x-ie9 .x-panel-header-default-framed-top,
+.x-nlg.x-opera .x-panel-header-default-framed-top,
+.x-nlg.x-safari .x-panel-header-default-framed-top {
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-top-bg.gif'); }
+/* line 321, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-strict .x-ie9 .x-panel-header-default-framed-bottom,
+.x-nlg.x-opera .x-panel-header-default-framed-bottom,
+.x-nlg.x-safari .x-panel-header-default-framed-bottom {
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-bottom-bg.gif'); }
+/* line 325, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-strict .x-ie9 .x-panel-header-default-framed-left,
+.x-nlg.x-opera .x-panel-header-default-framed-left,
+.x-nlg.x-safari .x-panel-header-default-framed-left {
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-left-bg.gif'); }
+/* line 329, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-strict .x-ie9 .x-panel-header-default-framed-right,
+.x-nlg.x-opera .x-panel-header-default-framed-right,
+.x-nlg.x-safari .x-panel-header-default-framed-right {
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-right-bg.gif'); }
+
+/* line 338, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-text-default-framed {
+  color: white;
+  font-size: 14px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 17px; }
+
+/* line 348, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-body-default-framed {
+  background: #3f4757;
+  border-color: #18181a;
+  color: white;
+  border-width: 0;
+  border-style: solid; }
+
+/* line 363, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-window-header-default-framed,
+.x-panel-collapsed .x-panel-header-default-framed {
+  border-color: #18181a; }
+
+/* line 368, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-vertical {
+  border-color: #18181a; }
+
+/* line 375, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-left,
+.x-panel-header-default-framed-right {
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -ms-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155); }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-default-framed {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #3f4757; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-default-framed-mc {
+  background-color: #3f4757; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-default-framed-tl,
+.x-nbr .x-panel-default-framed-bl,
+.x-nbr .x-panel-default-framed-tr,
+.x-nbr .x-panel-default-framed-br,
+.x-nbr .x-panel-default-framed-tc,
+.x-nbr .x-panel-default-framed-bc,
+.x-nbr .x-panel-default-framed-ml,
+.x-nbr .x-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/panel/panel-default-framed-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-default-framed-ml,
+.x-nbr .x-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/panel/panel-default-framed-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-default-framed-mc {
+  padding: 2px 2px 2px 2px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-default-framed-tl,
+.x-strict .x-ie7 .x-panel-default-framed-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-top {
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  -o-border-top-left-radius: 3px;
+  -ms-border-top-left-radius: 3px;
+  -khtml-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  -o-border-top-right-radius: 3px;
+  -ms-border-top-right-radius: 3px;
+  -khtml-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 5px 4px 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -ms-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-top-mc {
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-top-bg.gif');
+  background-color: #3a4155; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000303px 1000000px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-top-tl,
+.x-nbr .x-panel-header-default-framed-top-bl,
+.x-nbr .x-panel-header-default-framed-top-tr,
+.x-nbr .x-panel-header-default-framed-top-br,
+.x-nbr .x-panel-header-default-framed-top-tc,
+.x-nbr .x-panel-header-default-framed-top-bc,
+.x-nbr .x-panel-header-default-framed-top-ml,
+.x-nbr .x-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-top-ml,
+.x-nbr .x-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-top-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-top-mc {
+  padding: 1px 3px 4px 3px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  -o-border-top-right-radius: 3px;
+  -ms-border-top-right-radius: 3px;
+  -khtml-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+  -moz-border-radius-bottomright: 3px;
+  -webkit-border-bottom-right-radius: 3px;
+  -o-border-bottom-right-radius: 3px;
+  -ms-border-bottom-right-radius: 3px;
+  -khtml-border-bottom-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -ms-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-right-mc {
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-right-bg.gif');
+  background-color: #3a4155; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000003px 1100300px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-right-tl,
+.x-nbr .x-panel-header-default-framed-right-bl,
+.x-nbr .x-panel-header-default-framed-right-tr,
+.x-nbr .x-panel-header-default-framed-right-br,
+.x-nbr .x-panel-header-default-framed-right-tc,
+.x-nbr .x-panel-header-default-framed-right-bc,
+.x-nbr .x-panel-header-default-framed-right-ml,
+.x-nbr .x-panel-header-default-framed-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-right-corners.gif'); }
+/* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-right-tc,
+.x-nbr .x-panel-header-default-framed-right-bc {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-right-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-x; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-right-mc {
+  padding: 3px 2px 3px 4px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-right-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 3px;
+  -webkit-border-bottom-right-radius: 3px;
+  -o-border-bottom-right-radius: 3px;
+  -ms-border-bottom-right-radius: 3px;
+  -khtml-border-bottom-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  -o-border-bottom-left-radius: 3px;
+  -ms-border-bottom-left-radius: 3px;
+  -khtml-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  padding: 3px 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -ms-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-bottom-mc {
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-bottom-bg.gif');
+  background-color: #3a4155; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000000px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-bottom-tl,
+.x-nbr .x-panel-header-default-framed-bottom-bl,
+.x-nbr .x-panel-header-default-framed-bottom-tr,
+.x-nbr .x-panel-header-default-framed-bottom-br,
+.x-nbr .x-panel-header-default-framed-bottom-tc,
+.x-nbr .x-panel-header-default-framed-bottom-bc,
+.x-nbr .x-panel-header-default-framed-bottom-ml,
+.x-nbr .x-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-bottom-ml,
+.x-nbr .x-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-bottom-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-bottom-mc {
+  padding: 3px 3px 2px 3px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-left {
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  -o-border-top-left-radius: 3px;
+  -ms-border-top-left-radius: 3px;
+  -khtml-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  -o-border-bottom-left-radius: 3px;
+  -ms-border-bottom-left-radius: 3px;
+  -khtml-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -ms-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-left-mc {
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-left-bg.gif');
+  background-color: #3a4155; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000300px 1100003px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-left-tl,
+.x-nbr .x-panel-header-default-framed-left-bl,
+.x-nbr .x-panel-header-default-framed-left-tr,
+.x-nbr .x-panel-header-default-framed-left-br,
+.x-nbr .x-panel-header-default-framed-left-tc,
+.x-nbr .x-panel-header-default-framed-left-bc,
+.x-nbr .x-panel-header-default-framed-left-ml,
+.x-nbr .x-panel-header-default-framed-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-left-corners.gif'); }
+/* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-left-tc,
+.x-nbr .x-panel-header-default-framed-left-bc {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-left-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-x; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-left-mc {
+  padding: 3px 4px 3px 2px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-left-bl {
+  position: relative;
+  right: 0; }
+
+/* line 399, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-top {
+  -moz-box-shadow: #4f5873 0 1px 0px 0 inset, #4f5873 -1px 0 0px 0 inset, #4f5873 1px 0 0px 0 inset;
+  -webkit-box-shadow: #4f5873 0 1px 0px 0 inset, #4f5873 -1px 0 0px 0 inset, #4f5873 1px 0 0px 0 inset;
+  -o-box-shadow: #4f5873 0 1px 0px 0 inset, #4f5873 -1px 0 0px 0 inset, #4f5873 1px 0 0px 0 inset;
+  box-shadow: #4f5873 0 1px 0px 0 inset, #4f5873 -1px 0 0px 0 inset, #4f5873 1px 0 0px 0 inset; }
+
+/* line 403, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-right {
+  -moz-box-shadow: #4f5873 0 1px 0px 0 inset, #4f5873 0 -1px 0px 0 inset, #4f5873 -1px 0 0px 0 inset;
+  -webkit-box-shadow: #4f5873 0 1px 0px 0 inset, #4f5873 0 -1px 0px 0 inset, #4f5873 -1px 0 0px 0 inset;
+  -o-box-shadow: #4f5873 0 1px 0px 0 inset, #4f5873 0 -1px 0px 0 inset, #4f5873 -1px 0 0px 0 inset;
+  box-shadow: #4f5873 0 1px 0px 0 inset, #4f5873 0 -1px 0px 0 inset, #4f5873 -1px 0 0px 0 inset; }
+
+/* line 407, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-bottom {
+  -moz-box-shadow: #4f5873 0 -1px 0px 0 inset, #4f5873 -1px 0 0px 0 inset, #4f5873 1px 0 0px 0 inset;
+  -webkit-box-shadow: #4f5873 0 -1px 0px 0 inset, #4f5873 -1px 0 0px 0 inset, #4f5873 1px 0 0px 0 inset;
+  -o-box-shadow: #4f5873 0 -1px 0px 0 inset, #4f5873 -1px 0 0px 0 inset, #4f5873 1px 0 0px 0 inset;
+  box-shadow: #4f5873 0 -1px 0px 0 inset, #4f5873 -1px 0 0px 0 inset, #4f5873 1px 0 0px 0 inset; }
+
+/* line 411, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-left {
+  -moz-box-shadow: #4f5873 0 1px 0px 0 inset, #4f5873 0 -1px 0px 0 inset, #4f5873 1px 0 0px 0 inset;
+  -webkit-box-shadow: #4f5873 0 1px 0px 0 inset, #4f5873 0 -1px 0px 0 inset, #4f5873 1px 0 0px 0 inset;
+  -o-box-shadow: #4f5873 0 1px 0px 0 inset, #4f5873 0 -1px 0px 0 inset, #4f5873 1px 0 0px 0 inset;
+  box-shadow: #4f5873 0 1px 0px 0 inset, #4f5873 0 -1px 0px 0 inset, #4f5873 1px 0 0px 0 inset; }
+
+/* line 452, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel .x-panel-header-default-framed-top {
+  border-bottom-width: 1px !important; }
+
+/* line 456, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel .x-panel-header-default-framed-right {
+  border-left-width: 1px !important; }
+
+/* line 460, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel .x-panel-header-default-framed-bottom {
+  border-top-width: 1px !important; }
+
+/* line 464, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel .x-panel-header-default-framed-left {
+  border-right-width: 1px !important; }
+
+/* line 468, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-collapsed {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-collapsed-top {
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  -o-border-top-left-radius: 3px;
+  -ms-border-top-left-radius: 3px;
+  -khtml-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  -o-border-top-right-radius: 3px;
+  -ms-border-top-right-radius: 3px;
+  -khtml-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+  -moz-border-radius-bottomright: 3px;
+  -webkit-border-bottom-right-radius: 3px;
+  -o-border-bottom-right-radius: 3px;
+  -ms-border-bottom-right-radius: 3px;
+  -khtml-border-bottom-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  -o-border-bottom-left-radius: 3px;
+  -ms-border-bottom-left-radius: 3px;
+  -khtml-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  padding: 3px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -ms-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-top-mc {
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-top-bg.gif');
+  background-color: #3a4155; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top-tl,
+.x-nbr .x-panel-header-default-framed-collapsed-top-bl,
+.x-nbr .x-panel-header-default-framed-collapsed-top-tr,
+.x-nbr .x-panel-header-default-framed-collapsed-top-br,
+.x-nbr .x-panel-header-default-framed-collapsed-top-tc,
+.x-nbr .x-panel-header-default-framed-collapsed-top-bc,
+.x-nbr .x-panel-header-default-framed-collapsed-top-ml,
+.x-nbr .x-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top-ml,
+.x-nbr .x-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-top-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top-mc {
+  padding: 1px 3px 2px 3px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-collapsed-right {
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  -o-border-top-left-radius: 3px;
+  -ms-border-top-left-radius: 3px;
+  -khtml-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  -o-border-top-right-radius: 3px;
+  -ms-border-top-right-radius: 3px;
+  -khtml-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+  -moz-border-radius-bottomright: 3px;
+  -webkit-border-bottom-right-radius: 3px;
+  -o-border-bottom-right-radius: 3px;
+  -ms-border-bottom-right-radius: 3px;
+  -khtml-border-bottom-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  -o-border-bottom-left-radius: 3px;
+  -ms-border-bottom-left-radius: 3px;
+  -khtml-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -ms-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-right-mc {
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-right-bg.gif');
+  background-color: #3a4155; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000303px 1100303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right-tl,
+.x-nbr .x-panel-header-default-framed-collapsed-right-bl,
+.x-nbr .x-panel-header-default-framed-collapsed-right-tr,
+.x-nbr .x-panel-header-default-framed-collapsed-right-br,
+.x-nbr .x-panel-header-default-framed-collapsed-right-tc,
+.x-nbr .x-panel-header-default-framed-collapsed-right-bc,
+.x-nbr .x-panel-header-default-framed-collapsed-right-ml,
+.x-nbr .x-panel-header-default-framed-collapsed-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-right-corners.gif'); }
+/* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right-tc,
+.x-nbr .x-panel-header-default-framed-collapsed-right-bc {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-right-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-x; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right-mc {
+  padding: 3px 2px 3px 2px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-collapsed-bottom {
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  -o-border-top-left-radius: 3px;
+  -ms-border-top-left-radius: 3px;
+  -khtml-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  -o-border-top-right-radius: 3px;
+  -ms-border-top-right-radius: 3px;
+  -khtml-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+  -moz-border-radius-bottomright: 3px;
+  -webkit-border-bottom-right-radius: 3px;
+  -o-border-bottom-right-radius: 3px;
+  -ms-border-bottom-right-radius: 3px;
+  -khtml-border-bottom-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  -o-border-bottom-left-radius: 3px;
+  -ms-border-bottom-left-radius: 3px;
+  -khtml-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  padding: 3px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -ms-linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(top, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-bottom-mc {
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif');
+  background-color: #3a4155; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-tl,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-bl,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-tr,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-br,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-tc,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-bc,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-mc {
+  padding: 1px 3px 2px 3px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-collapsed-left {
+  -moz-border-radius-topleft: 3px;
+  -webkit-border-top-left-radius: 3px;
+  -o-border-top-left-radius: 3px;
+  -ms-border-top-left-radius: 3px;
+  -khtml-border-top-left-radius: 3px;
+  border-top-left-radius: 3px;
+  -moz-border-radius-topright: 3px;
+  -webkit-border-top-right-radius: 3px;
+  -o-border-top-right-radius: 3px;
+  -ms-border-top-right-radius: 3px;
+  -khtml-border-top-right-radius: 3px;
+  border-top-right-radius: 3px;
+  -moz-border-radius-bottomright: 3px;
+  -webkit-border-bottom-right-radius: 3px;
+  -o-border-bottom-right-radius: 3px;
+  -ms-border-bottom-right-radius: 3px;
+  -khtml-border-bottom-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  -o-border-bottom-left-radius: 3px;
+  -ms-border-bottom-left-radius: 3px;
+  -khtml-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #3a4155;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #434a5e), color-stop(45%, #3c4255), color-stop(46%, #2a2f3e), color-stop(50%, #2a2f3e), color-stop(51%, #313646), color-stop(100%, #3a4155));
+  background-image: -webkit-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -moz-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -o-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: -ms-linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155);
+  background-image: linear-gradient(right, #434a5e, #3c4255 45%, #2a2f3e 46%, #2a2f3e 50%, #313646 51%, #3a4155); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-left-mc {
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-left-bg.gif');
+  background-color: #3a4155; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000303px 1100303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left-tl,
+.x-nbr .x-panel-header-default-framed-collapsed-left-bl,
+.x-nbr .x-panel-header-default-framed-collapsed-left-tr,
+.x-nbr .x-panel-header-default-framed-collapsed-left-br,
+.x-nbr .x-panel-header-default-framed-collapsed-left-tc,
+.x-nbr .x-panel-header-default-framed-collapsed-left-bc,
+.x-nbr .x-panel-header-default-framed-collapsed-left-ml,
+.x-nbr .x-panel-header-default-framed-collapsed-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-left-corners.gif'); }
+/* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left-tc,
+.x-nbr .x-panel-header-default-framed-collapsed-left-bc {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-left-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-x; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left-mc {
+  padding: 3px 2px 3px 2px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl {
+  position: relative;
+  right: 0; }
+
+/* line 481, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-right-tc,
+.x-panel-header-default-framed-right-mc,
+.x-panel-header-default-framed-right-bc {
+  background-position: right 0; }
+
+/* line 487, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-bottom-tc,
+.x-panel-header-default-framed-bottom-mc,
+.x-panel-header-default-framed-bottom-bc {
+  background-position: 0 bottom; }
+
+/* line 197, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-plain,
+.x-panel-body-plain {
+  border: 0;
+  padding: 0; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip {
+  position: absolute;
+  overflow: visible;
+  /*pointer needs to be able to stick out*/
+  border-color: #122d5e; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-tip .x-tip-header .x-box-item {
+    padding: 3px 3px 0; }
+  /* line 16, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-tip .x-tip-header .x-tool {
+    padding: 0px 1px 0 0 !important; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-tip {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #5e6986; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-tip-mc {
+  background-color: #5e6986; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tip {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tip-tl,
+.x-nbr .x-tip-bl,
+.x-nbr .x-tip-tr,
+.x-nbr .x-tip-br,
+.x-nbr .x-tip-tc,
+.x-nbr .x-tip-bc,
+.x-nbr .x-tip-ml,
+.x-nbr .x-tip-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/tip/tip-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tip-ml,
+.x-nbr .x-tip-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/tip/tip-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tip-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-tip-tl,
+.x-strict .x-ie7 .x-tip-bl {
+  position: relative;
+  right: 0; }
+
+/* line 31, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-header-text {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  color: black;
+  font-size: 14px;
+  font-weight: bold; }
+
+/* line 40, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-header-draggable .x-tip-header-text {
+  cursor: move; }
+
+/* line 47, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-body,
+.x-form-invalid-tip-body {
+  overflow: hidden;
+  position: relative;
+  padding: 3px; }
+
+/* line 55, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-header,
+.x-tip-body,
+.x-form-invalid-tip-body {
+  color: black;
+  font-size: 14px;
+  font-weight: normal; }
+  /* line 59, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-tip-header a,
+  .x-tip-body a,
+  .x-form-invalid-tip-body a {
+    color: black; }
+
+/* line 64, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  height: 0;
+  width: 0;
+  border-style: solid;
+  border-width: 5px;
+  border-color: #122d5e;
+  zoom: 1; }
+
+/* line 79, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-border-box .x-tip-anchor {
+  width: 10px;
+  height: 10px; }
+
+/* line 84, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor-top {
+  border-top-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 97, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor-bottom {
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 110, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor-left {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 123, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor-right {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 137, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-form-invalid-tip {
+  border-color: #a1311f;
+  -moz-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  -webkit-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  -o-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset; }
+
+/* line 146, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-form-invalid-tip-body {
+  background: 1px 1px no-repeat;
+  background-image: url('../../resources/themes/images/access/form/exclamation.gif');
+  padding-left: 22px; }
+  /* line 151, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-form-invalid-tip-body li {
+    margin-bottom: 4px; }
+    /* line 153, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+    .x-form-invalid-tip-body li.last {
+      margin-bottom: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-form-invalid-tip-default {
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  -o-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -khtml-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: white; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-form-invalid-tip-default-mc {
+  background-color: white; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-form-invalid-tip-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-form-invalid-tip-default-tl,
+.x-nbr .x-form-invalid-tip-default-bl,
+.x-nbr .x-form-invalid-tip-default-tr,
+.x-nbr .x-form-invalid-tip-default-br,
+.x-nbr .x-form-invalid-tip-default-tc,
+.x-nbr .x-form-invalid-tip-default-bc,
+.x-nbr .x-form-invalid-tip-default-ml,
+.x-nbr .x-form-invalid-tip-default-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/form-invalid-tip/form-invalid-tip-default-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-form-invalid-tip-default-ml,
+.x-nbr .x-form-invalid-tip-default-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/form-invalid-tip/form-invalid-tip-default-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-form-invalid-tip-default-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-form-invalid-tip-default-tl,
+.x-strict .x-ie7 .x-form-invalid-tip-default-bl {
+  position: relative;
+  right: 0; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider {
+  zoom: 1; }
+
+/* line 10, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-inner {
+  position: relative;
+  left: 0;
+  top: 0;
+  overflow: visible;
+  zoom: 1; }
+
+/* line 18, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-focus {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px;
+  line-height: 1px;
+  font-size: 1px;
+  -moz-outline: 0 none;
+  outline: 0 none;
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  display: block;
+  overflow: hidden; }
+
+/* Horizontal styles */
+/* line 34, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz {
+  padding-left: 7px;
+  background: transparent no-repeat 0 -24px;
+  width: 100%; }
+
+/* line 40, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-end {
+  padding-right: 7px;
+  zoom: 1;
+  background: transparent no-repeat right -46px; }
+
+/* line 46, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-inner {
+  background: transparent repeat-x 0 -2px;
+  height: 18px; }
+
+/* line 51, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb {
+  width: 14px;
+  height: 15px;
+  margin-left: -7px;
+  position: absolute;
+  left: 0;
+  top: 1px;
+  background: transparent no-repeat 0 0; }
+
+/* line 61, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb-over {
+  background-position: -14px -15px; }
+
+/* line 65, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb-drag {
+  background-position: -28px -30px; }
+
+/* Vertical styles */
+/* line 70, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert {
+  padding-top: 7px;
+  background: transparent no-repeat -44px 0; }
+
+/* line 75, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-end {
+  padding-bottom: 7px;
+  zoom: 1;
+  background: transparent no-repeat -22px bottom;
+  width: 22px; }
+
+/* line 82, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-inner {
+  background: transparent repeat-y 0 0;
+  width: 22px; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb {
+  width: 15px;
+  height: 14px;
+  margin-bottom: -7px;
+  position: absolute;
+  left: 3px;
+  bottom: 0;
+  background: transparent no-repeat 0 0; }
+
+/* line 97, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb-over {
+  background-position: -15px -14px; }
+
+/* line 101, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb-drag {
+  background-position: -30px -28px; }
+
+/* line 107, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz,
+.x-slider-horz .x-slider-end,
+.x-slider-horz .x-slider-inner {
+  background-image: url('../../resources/themes/images/access/slider/slider-bg.png'); }
+
+/* line 111, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb {
+  background-image: url('../../resources/themes/images/access/slider/slider-thumb.png'); }
+
+/* line 117, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert,
+.x-slider-vert .x-slider-end,
+.x-slider-vert .x-slider-inner {
+  background-image: url('../../resources/themes/images/access/slider/slider-v-bg.png'); }
+
+/* line 121, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb {
+  background-image: url('../../resources/themes/images/access/slider/slider-v-thumb.png'); }
+
+/* line 129, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-ie6 .x-slider-horz,
+.x-ie6 .x-slider-horz .x-slider-end,
+.x-ie6 .x-slider-horz .x-slider-inner {
+  background-image: url('../../resources/themes/images/access/slider/slider-bg.gif'); }
+/* line 133, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-ie6 .x-slider-horz .x-slider-thumb {
+  background-image: url('../../resources/themes/images/access/slider/slider-thumb.gif'); }
+/* line 139, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-ie6 .x-slider-vert,
+.x-ie6 .x-slider-vert .x-slider-end,
+.x-ie6 .x-slider-vert .x-slider-inner {
+  background-image: url('../../resources/themes/images/access/slider/slider-v-bg.gif'); }
+/* line 143, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-ie6 .x-slider-vert .x-slider-thumb {
+  background-image: url('../../resources/themes/images/access/slider/slider-v-thumb.gif'); }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress {
+  position: relative;
+  border-width: 1px;
+  border-style: solid;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0;
+  overflow: hidden;
+  height: 20px; }
+
+/* line 17, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress-bar {
+  height: 18px;
+  overflow: hidden;
+  position: absolute;
+  width: 0;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0;
+  border-right: 1px solid;
+  border-top: 1px solid; }
+
+/* line 30, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress-text {
+  overflow: hidden;
+  position: absolute;
+  padding: 0 5px;
+  height: 18px;
+  font-weight: bold;
+  font-size: 14px;
+  line-height: 16px;
+  text-align: center; }
+
+/* line 45, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress-text-back {
+  padding-top: 1px; }
+
+/* line 50, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-strict .x-ie7m .x-progress {
+  height: 18px; }
+
+/* line 93, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress-default {
+  border-color: #18181a; }
+  /* line 96, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-progress-default .x-progress-bar {
+    border-right-color: #18181a;
+    border-top-color: #55555c;
+    background-image: none;
+    background-color: #ed9200;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffb43b), color-stop(50%, #ffa007), color-stop(51%, #ed9200), color-stop(100%, #d38200));
+    background-image: -webkit-linear-gradient(top, #ffb43b, #ffa007 50%, #ed9200 51%, #d38200);
+    background-image: -moz-linear-gradient(top, #ffb43b, #ffa007 50%, #ed9200 51%, #d38200);
+    background-image: -o-linear-gradient(top, #ffb43b, #ffa007 50%, #ed9200 51%, #d38200);
+    background-image: -ms-linear-gradient(top, #ffb43b, #ffa007 50%, #ed9200 51%, #d38200);
+    background-image: linear-gradient(top, #ffb43b, #ffa007 50%, #ed9200 51%, #d38200); }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-progress-default .x-progress-text {
+    color: white; }
+  /* line 107, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-progress-default .x-progress-text-back {
+    color: #aaaaaa; }
+
+/* line 116, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-nlg .x-progress-default .x-progress-bar {
+  background: repeat-x;
+  background-image: url('../../resources/themes/images/access/progress/progress-default-bg.gif'); }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar {
+  font-size: 14px;
+  border: 1px solid;
+  padding: 2px 0 2px 2px; }
+  /* line 13, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-form-item-label {
+    font-size: 14px;
+    line-height: 15px; }
+  /* line 18, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-item {
+    margin: 0 2px 0 0; }
+  /* line 22, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-text {
+    margin-left: 4px;
+    margin-right: 6px;
+    white-space: nowrap;
+    color: white;
+    line-height: 16px;
+    font-family: tahoma, arial, verdana, sans-serif;
+    font-size: 14px;
+    font-weight: normal; }
+  /* line 33, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-separator {
+    display: block;
+    font-size: 1px;
+    overflow: hidden;
+    cursor: default;
+    border: 0; }
+  /* line 41, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-separator-horizontal {
+    margin: 0 3px 0 2px;
+    height: 14px;
+    width: 0px;
+    border-left: 1px solid #1b1b29;
+    border-right: 1px solid #5d5d6e; }
+
+/* line 53, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal {
+  width: 2px; }
+
+/* line 58, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-footer {
+  background: transparent;
+  border: 0px none;
+  margin-top: 3px;
+  padding: 2px 0 2px 6px; }
+  /* line 65, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-footer .x-box-inner {
+    border-width: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-footer .x-toolbar-item {
+    margin: 0 6px 0 0; }
+
+/* line 74, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-vertical {
+  padding: 2px 2px 0 2px; }
+  /* line 77, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-vertical .x-toolbar-item {
+    margin: 0 0 2px 0; }
+  /* line 81, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-vertical .x-toolbar-text {
+    margin-top: 4px;
+    margin-bottom: 6px; }
+  /* line 86, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-vertical .x-toolbar-separator-vertical {
+    margin: 2px 5px 3px 5px;
+    height: 0px;
+    width: 10px;
+    line-height: 0px;
+    border-top: 1px solid #1b1b29;
+    border-bottom: 1px solid #5d5d6e; }
+
+/* line 98, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-scroller {
+  padding-left: 0; }
+
+/* line 102, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-spacer {
+  width: 2px; }
+
+/* line 107, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-more-icon {
+  background-image: url('../../resources/themes/images/access/toolbar/more.gif') !important;
+  background-position: 2px center !important;
+  background-repeat: no-repeat; }
+
+/* line 144, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-default {
+  border-color: #18181a;
+  background-image: none;
+  background-color: #3a3e4f;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #404558), color-stop(100%, #3a3e4f));
+  background-image: -webkit-linear-gradient(top, #404558, #3a3e4f);
+  background-image: -moz-linear-gradient(top, #404558, #3a3e4f);
+  background-image: -o-linear-gradient(top, #404558, #3a3e4f);
+  background-image: -ms-linear-gradient(top, #404558, #3a3e4f);
+  background-image: linear-gradient(top, #404558, #3a3e4f); }
+
+/* line 155, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-nlg .x-toolbar-default {
+  background-image: url('../../resources/themes/images/access/toolbar/toolbar-default-bg.gif') !important;
+  background-repeat: repeat-x; }
+
+/* line 123, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-plain {
+  border: 0; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window {
+  outline: none;
+  overflow: hidden; }
+  /* line 10, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-window .x-window-wrap {
+    position: relative; }
+
+/* line 15, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-body {
+  position: relative;
+  border-style: solid;
+  overflow: hidden; }
+
+/* line 24, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-maximized .x-window-wrap .x-window-header {
+  -moz-border-radius: 0 !important;
+  -webkit-border-radius: 0 !important;
+  -o-border-radius: 0 !important;
+  -ms-border-radius: 0 !important;
+  -khtml-border-radius: 0 !important;
+  border-radius: 0 !important; }
+
+/* line 30, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-top {
+  margin-bottom: -2px; }
+
+/* line 33, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-body-horizontal {
+  margin-top: -1px; }
+
+/* line 37, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-bottom {
+  margin-top: -1px;
+  margin-bottom: -1px; }
+
+/* line 42, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-left {
+  margin-right: -1px; }
+
+/* line 46, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-right {
+  margin-left: -1px; }
+
+/* line 51, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-vertical .x-surface {
+  padding-left: 1px; }
+
+/* line 58, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-vertical {
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  -o-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -khtml-border-radius: 5px;
+  border-radius: 5px; }
+/* line 61, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-horizontal {
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  -o-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -khtml-border-radius: 5px;
+  border-radius: 5px; }
+/* line 66, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-left {
+  padding-right: 5px !important;
+  margin-right: 0; }
+/* line 71, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-right {
+  padding-left: 5px !important;
+  margin-left: 0; }
+/* line 76, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-top {
+  padding-bottom: 5px !important;
+  margin-bottom: -1px; }
+/* line 81, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-bottom {
+  padding-top: 5px !important;
+  margin-top: 0; }
+
+/* line 89, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-left .x-vml-base,
+.x-window-header-right .x-vml-base {
+  left: -3px !important; }
+
+/* line 97, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-opera .x-window-header-vertical .x-surface,
+.x-strict .x-ie9 .x-window-header-vertical .x-surface {
+  padding-left: 2px; }
+
+/* line 103, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-text-container {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis; }
+
+/* line 109, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-text {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  white-space: nowrap; }
+
+/* line 159, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-default {
+  border-color: #282828;
+  -moz-border-radius: 5px 5px;
+  -webkit-border-radius: 5px 5px;
+  -o-border-radius: 5px 5px;
+  -ms-border-radius: 5px 5px;
+  -khtml-border-radius: 5px 5px;
+  border-radius: 5px 5px;
+  -moz-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  -webkit-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  -o-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-default {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #3f4757; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-default-mc {
+  background-color: #3f4757; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-default-tl,
+.x-nbr .x-window-default-bl,
+.x-nbr .x-window-default-tr,
+.x-nbr .x-window-default-br,
+.x-nbr .x-window-default-tc,
+.x-nbr .x-window-default-bc,
+.x-nbr .x-window-default-ml,
+.x-nbr .x-window-default-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/window/window-default-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-default-ml,
+.x-nbr .x-window-default-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/window/window-default-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-default-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-default-tl,
+.x-strict .x-ie7 .x-window-default-bl {
+  position: relative;
+  right: 0; }
+
+/* line 178, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-body-default {
+  border-color: #18181a;
+  border-width: 1px;
+  background: #1f2833;
+  color: white; }
+
+/* line 188, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default {
+  font-size: 14px;
+  border-color: #282828;
+  zoom: 1; }
+
+/* line 194, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-text-default {
+  color: white;
+  font-weight: bold;
+  line-height: 17px;
+  font-family: tahoma, arial, verdana, sans-serif;
+  font-size: 14px; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 5px 0 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #3f4757; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-top-mc {
+  background-color: #3f4757; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000000px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-top-tl,
+.x-nbr .x-window-header-default-top-bl,
+.x-nbr .x-window-header-default-top-tr,
+.x-nbr .x-window-header-default-top-br,
+.x-nbr .x-window-header-default-top-tc,
+.x-nbr .x-window-header-default-top-bc,
+.x-nbr .x-window-header-default-top-ml,
+.x-nbr .x-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/window-header/window-header-default-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-top-ml,
+.x-nbr .x-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/window-header/window-header-default-top-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-top-mc {
+  padding: 0px 1px 0 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-top-tl,
+.x-strict .x-ie7 .x-window-header-default-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 0;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-color: #3f4757; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-right-mc {
+  background-color: #3f4757; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000005px 1000500px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-right-tl,
+.x-nbr .x-window-header-default-right-bl,
+.x-nbr .x-window-header-default-right-tr,
+.x-nbr .x-window-header-default-right-br,
+.x-nbr .x-window-header-default-right-tc,
+.x-nbr .x-window-header-default-right-bc,
+.x-nbr .x-window-header-default-right-ml,
+.x-nbr .x-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/window-header/window-header-default-right-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-right-ml,
+.x-nbr .x-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/window-header/window-header-default-right-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-right-mc {
+  padding: 1px 0px 1px 0; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-right-tl,
+.x-strict .x-ie7 .x-window-header-default-right-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 0 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #3f4757; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-bottom-mc {
+  background-color: #3f4757; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000000px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-bottom-tl,
+.x-nbr .x-window-header-default-bottom-bl,
+.x-nbr .x-window-header-default-bottom-tr,
+.x-nbr .x-window-header-default-bottom-br,
+.x-nbr .x-window-header-default-bottom-tc,
+.x-nbr .x-window-header-default-bottom-bc,
+.x-nbr .x-window-header-default-bottom-ml,
+.x-nbr .x-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/window-header/window-header-default-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-bottom-ml,
+.x-nbr .x-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/window-header/window-header-default-bottom-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-bottom-mc {
+  padding: 0 1px 0px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-bottom-tl,
+.x-strict .x-ie7 .x-window-header-default-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-left {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 0px 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-color: #3f4757; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-left-mc {
+  background-color: #3f4757; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000500px 1000005px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-left-tl,
+.x-nbr .x-window-header-default-left-bl,
+.x-nbr .x-window-header-default-left-tr,
+.x-nbr .x-window-header-default-left-br,
+.x-nbr .x-window-header-default-left-tc,
+.x-nbr .x-window-header-default-left-bc,
+.x-nbr .x-window-header-default-left-ml,
+.x-nbr .x-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/window-header/window-header-default-left-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-left-ml,
+.x-nbr .x-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/window-header/window-header-default-left-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-left-mc {
+  padding: 1px 0px 1px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-left-tl,
+.x-strict .x-ie7 .x-window-header-default-left-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-collapsed-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #3f4757; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-collapsed-top-mc {
+  background-color: #3f4757; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-top-tl,
+.x-nbr .x-window-header-default-collapsed-top-bl,
+.x-nbr .x-window-header-default-collapsed-top-tr,
+.x-nbr .x-window-header-default-collapsed-top-br,
+.x-nbr .x-window-header-default-collapsed-top-tc,
+.x-nbr .x-window-header-default-collapsed-top-bc,
+.x-nbr .x-window-header-default-collapsed-top-ml,
+.x-nbr .x-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/window-header/window-header-default-collapsed-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-top-ml,
+.x-nbr .x-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/window-header/window-header-default-collapsed-top-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-top-mc {
+  padding: 0px 1px 0px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-collapsed-right {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #3f4757; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-collapsed-right-mc {
+  background-color: #3f4757; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-right-tl,
+.x-nbr .x-window-header-default-collapsed-right-bl,
+.x-nbr .x-window-header-default-collapsed-right-tr,
+.x-nbr .x-window-header-default-collapsed-right-br,
+.x-nbr .x-window-header-default-collapsed-right-tc,
+.x-nbr .x-window-header-default-collapsed-right-bc,
+.x-nbr .x-window-header-default-collapsed-right-ml,
+.x-nbr .x-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/window-header/window-header-default-collapsed-right-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-right-ml,
+.x-nbr .x-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/window-header/window-header-default-collapsed-right-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-right-mc {
+  padding: 1px 0px 1px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-collapsed-bottom {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #3f4757; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-collapsed-bottom-mc {
+  background-color: #3f4757; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-bottom-tl,
+.x-nbr .x-window-header-default-collapsed-bottom-bl,
+.x-nbr .x-window-header-default-collapsed-bottom-tr,
+.x-nbr .x-window-header-default-collapsed-bottom-br,
+.x-nbr .x-window-header-default-collapsed-bottom-tc,
+.x-nbr .x-window-header-default-collapsed-bottom-bc,
+.x-nbr .x-window-header-default-collapsed-bottom-ml,
+.x-nbr .x-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/window-header/window-header-default-collapsed-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-bottom-ml,
+.x-nbr .x-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/window-header/window-header-default-collapsed-bottom-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-bottom-mc {
+  padding: 0px 1px 0px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-collapsed-left {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #3f4757; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-collapsed-left-mc {
+  background-color: #3f4757; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-left-tl,
+.x-nbr .x-window-header-default-collapsed-left-bl,
+.x-nbr .x-window-header-default-collapsed-left-tr,
+.x-nbr .x-window-header-default-collapsed-left-br,
+.x-nbr .x-window-header-default-collapsed-left-tc,
+.x-nbr .x-window-header-default-collapsed-left-bc,
+.x-nbr .x-window-header-default-collapsed-left-ml,
+.x-nbr .x-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/window-header/window-header-default-collapsed-left-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-left-ml,
+.x-nbr .x-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/window-header/window-header-default-collapsed-left-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-left-mc {
+  padding: 1px 0px 1px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl {
+  position: relative;
+  right: 0; }
+
+/* line 217, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default-top {
+  -moz-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  -webkit-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  -o-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset; }
+
+/* line 221, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default-right {
+  -moz-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset;
+  -webkit-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset;
+  -o-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset;
+  box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset; }
+
+/* line 225, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default-bottom {
+  -moz-box-shadow: #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  -webkit-box-shadow: #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  -o-box-shadow: #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  box-shadow: #414b5c 0 -1px 0px 0 inset, #414b5c -1px 0 0px 0 inset, #414b5c 1px 0 0px 0 inset; }
+
+/* line 229, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default-left {
+  -moz-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  -webkit-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  -o-box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c 1px 0 0px 0 inset;
+  box-shadow: #414b5c 0 1px 0px 0 inset, #414b5c 0 -1px 0px 0 inset, #414b5c 1px 0 0px 0 inset; }
+
+/* line 130, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-body-plain {
+  background: transparent; }
+
+/* line 2, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box .x-window-body {
+  background-color: #3f4757;
+  border: none; }
+
+/* line 7, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box .x-progress-wrap {
+  margin-top: 4px; }
+
+/* line 11, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-icon {
+  width: 47px;
+  height: 32px; }
+
+/* line 19, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-info,
+.x-message-box-warning,
+.x-message-box-question,
+.x-message-box-error {
+  background: transparent no-repeat top left; }
+
+/* line 23, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box .x-msg-box-wait {
+  background-image: url('../../resources/themes/images/access/shared/blue-loading.gif'); }
+
+/* line 27, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-info {
+  background-image: url('../../resources/themes/images/access/shared/icon-info.gif'); }
+
+/* line 31, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-warning {
+  background-image: url('../../resources/themes/images/access/shared/icon-warning.gif'); }
+
+/* line 35, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-question {
+  background-image: url('../../resources/themes/images/access/shared/icon-question.gif'); }
+
+/* line 39, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-error {
+  background-image: url('../../resources/themes/images/access/shared/icon-error.gif'); }
+
+/* line 73, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar {
+  position: relative;
+  background-color: transparent;
+  background-image: none;
+  background-color: #474e5c;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #4f596c), color-stop(100%, #474e5c));
+  background-image: -webkit-linear-gradient(top, #4f596c, #474e5c);
+  background-image: -moz-linear-gradient(top, #4f596c, #474e5c);
+  background-image: -o-linear-gradient(top, #4f596c, #474e5c);
+  background-image: -ms-linear-gradient(top, #4f596c, #474e5c);
+  background-image: linear-gradient(top, #4f596c, #474e5c);
+  font-size: 14px; }
+
+/* line 80, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-nlg .x-tab-bar {
+  background-image: url('../../resources/themes/images/access/tab-bar/tab-bar-default-bg.gif'); }
+
+/* line 85, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-default-plain,
+.x-nlg .x-tab-bar-default-plain {
+  background: transparent none; }
+
+/* line 90, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-body {
+  border-style: solid;
+  border-color: #18181a;
+  position: relative;
+  z-index: 2;
+  zoom: 1; }
+
+/* Top Tabs */
+/* line 4, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-top .x-tab-bar-body {
+  height: 27px;
+  border-width: 1px 1px 0;
+  padding: 1px 0 3px; }
+/* line 10, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-top .x-tab-bar-strip {
+  /*position strip from top rather than bottom to avoid off-by-one error in IE6*/
+  top: 29px;
+  border-width: 1px 1px 0;
+  height: 2px; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-top .x-tab-bar-body {
+  height: 32px; }
+/* line 23, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-top .x-tab-bar-strip {
+  height: 3px; }
+
+/* line 4, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-top .x-tab-bar-body-default-plain {
+  height: 27px;
+  border-width: 0;
+  padding: 0 0 2px; }
+/* line 10, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-top .x-tab-bar-strip-default-plain {
+  /*position strip from top rather than bottom to avoid off-by-one error in IE6*/
+  top: 27px;
+  border-width: 1px 1px 0 1px;
+  height: 2px; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-top .x-tab-bar-body-default-plain {
+  height: 29px; }
+/* line 23, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-top .x-tab-bar-strip-default-plain {
+  height: 3px; }
+
+/* Bottom Tabs */
+/* line 32, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-bottom .x-tab-bar-body {
+  height: 27px;
+  border-width: 0 1px 1px;
+  padding: 3px 0 1px; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-tab-bar-bottom .x-tab-bar-body .x-box-inner {
+    position: relative;
+    top: -1px; }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller,
+  .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-left,
+  .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-right {
+    height: 29px; }
+/* line 49, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-bottom .x-tab-bar-strip {
+  top: 0;
+  border-width: 0 1px 1px 1px;
+  height: 2px; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-bottom .x-tab-bar-body {
+  height: 32px; }
+/* line 61, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-bottom .x-tab-bar-strip {
+  height: 3px; }
+
+/* line 32, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-bottom .x-tab-bar-body-default-plain {
+  height: 27px;
+  border-width: 0;
+  padding: 3px 0 0; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-inner {
+    position: relative;
+    top: -1px; }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller,
+  .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-left,
+  .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-right {
+    height: 28px; }
+/* line 49, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-bottom .x-tab-bar-strip-default-plain {
+  top: 0;
+  border-width: 0 1px 1px 1px;
+  height: 2px; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-bottom .x-tab-bar-body-default-plain {
+  height: 30px; }
+/* line 61, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-bottom .x-tab-bar-strip-default-plain {
+  height: 3px; }
+
+/* line 141, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-strip-default,
+.x-tab-bar-strip-default-plain {
+  font-size: 0;
+  line-height: 0;
+  position: absolute;
+  z-index: 1;
+  border-style: solid;
+  overflow: hidden;
+  border-color: #18181a;
+  background-color: #ed9200;
+  zoom: 1; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-tab-default-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 3px 0 3px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #616f8c; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-tab-default-top-mc {
+  background-color: #616f8c; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100404px 1000000px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-top-tl,
+.x-nbr .x-tab-default-top-bl,
+.x-nbr .x-tab-default-top-tr,
+.x-nbr .x-tab-default-top-br,
+.x-nbr .x-tab-default-top-tc,
+.x-nbr .x-tab-default-top-bc,
+.x-nbr .x-tab-default-top-ml,
+.x-nbr .x-tab-default-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/tab/tab-default-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-top-ml,
+.x-nbr .x-tab-default-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/tab/tab-default-top-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-top-mc {
+  padding: 0px 0px 0 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-tab-default-top-tl,
+.x-strict .x-ie7 .x-tab-default-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-tab-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 0 3px 3px 3px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #616f8c; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-tab-default-bottom-mc {
+  background-color: #616f8c; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100000px 1000404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-bottom-tl,
+.x-nbr .x-tab-default-bottom-bl,
+.x-nbr .x-tab-default-bottom-tr,
+.x-nbr .x-tab-default-bottom-br,
+.x-nbr .x-tab-default-bottom-tc,
+.x-nbr .x-tab-default-bottom-bc,
+.x-nbr .x-tab-default-bottom-ml,
+.x-nbr .x-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/tab/tab-default-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-bottom-ml,
+.x-nbr .x-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/access/tab/tab-default-bottom-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-bottom-mc {
+  padding: 0 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-tab-default-bottom-tl,
+.x-strict .x-ie7 .x-tab-default-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 28, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab {
+  z-index: 1;
+  margin: 0 0 0 2px;
+  display: inline-block;
+  zoom: 1;
+  *display: inline;
+  white-space: nowrap;
+  height: 27px;
+  border-color: #2e3746;
+  cursor: pointer;
+  cursor: hand; }
+  /* line 40, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab button {
+    cursor: pointer;
+    cursor: hand; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab em {
+    display: block;
+    padding: 0 6px;
+    line-height: 1px; }
+  /* line 51, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab button {
+    background: none;
+    border: 0;
+    padding: 0;
+    margin: 0;
+    -webkit-appearance: none;
+    font-size: 14px;
+    font-weight: bold;
+    font-family: tahoma, arial, verdana, sans-serif;
+    color: white;
+    outline: 0 none;
+    overflow-x: visible; }
+    /* line 69, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-tab button::-moz-focus-inner {
+      border: 0;
+      padding: 0; }
+    /* line 74, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-tab button .x-tab-inner {
+      background-color: transparent;
+      background-repeat: no-repeat;
+      background-position: 0 -2px;
+      display: block;
+      text-align: center;
+      white-space: nowrap;
+      text-overflow: ellipsis;
+      -o-text-overflow: ellipsis;
+      overflow: hidden; }
+  /* line 87, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab img {
+    display: none; }
+
+/* line 93, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-border-box .x-tab-default-top {
+  height: 28px; }
+/* line 96, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-border-box .x-tab-default-bottom {
+  height: 28px; }
+
+/* line 103, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+* html .x-ie .x-tab button {
+  width: 1px; }
+
+/* line 110, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-strict .x-ie6 .x-tab .x-frame-mc,
+.x-strict .x-ie7 .x-tab .x-frame-mc {
+  height: 100%; }
+
+/* line 115, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-ie .x-tab-active button:active {
+  position: relative;
+  top: -1px;
+  left: -1px; }
+
+/* line 124, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-top {
+  border-bottom: 1px solid #18181a !important; }
+  /* line 134, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-top em {
+    padding-bottom: 3px; }
+  /* line 139, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-top button,
+  .x-tab-default-top .x-tab-inner {
+    height: 20px;
+    line-height: 20px; }
+
+/* line 148, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-safari4 .x-tab-default-top .x-tab-inner,
+.x-safari5_0 .x-tab-default-top .x-tab-inner {
+  line-height: 18px; }
+
+/* line 153, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-default-top {
+  border-bottom-width: 1px !important; }
+
+/* line 157, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-top-active {
+  border-bottom-color: #ed9200 !important; }
+
+/* line 163, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-bottom {
+  border-top: 1px solid #18181a !important;
+  -moz-box-shadow: #828a98 0 -1px 0px 0 inset, #828a98 -1px 0 0px 0 inset, #828a98 1px 0 0px 0 inset;
+  -webkit-box-shadow: #828a98 0 -1px 0px 0 inset, #828a98 -1px 0 0px 0 inset, #828a98 1px 0 0px 0 inset;
+  -o-box-shadow: #828a98 0 -1px 0px 0 inset, #828a98 -1px 0 0px 0 inset, #828a98 1px 0 0px 0 inset;
+  box-shadow: #828a98 0 -1px 0px 0 inset, #828a98 -1px 0 0px 0 inset, #828a98 1px 0 0px 0 inset; }
+  /* line 178, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-bottom em {
+    padding-top: 3px; }
+  /* line 183, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-bottom button,
+  .x-tab-default-bottom .x-tab-inner {
+    height: 20px;
+    line-height: 20px; }
+
+/* line 189, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-default-bottom {
+  border-top-width: 1px !important; }
+
+/* line 193, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-bottom-active {
+  border-top-color: #ed9200 !important; }
+
+/* line 197, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-disabled {
+  cursor: default;
+  border-color: #39445a;
+  background-image: none;
+  background-color: #435881; }
+  /* line 203, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-disabled button {
+    color: #c3b3b3 !important; }
+
+/* line 209, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-icon-text-left .x-tab-inner {
+  padding-left: 20px; }
+
+/* line 214, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab button {
+  position: relative; }
+
+/* line 218, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-icon {
+  position: absolute;
+  background-repeat: no-repeat;
+  background-position: 0 -1px;
+  top: 0;
+  left: 0;
+  right: auto;
+  bottom: 0;
+  width: 18px;
+  height: 18px; }
+
+/* line 233, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-strict .x-ie8 .x-tab button,
+.x-strict .x-ie9 .x-tab button {
+  overflow-y: visible; }
+
+/* line 238, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-disabled .x-tab-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+
+/* In IE a disabled icon needs to be hidden or the opacity effect covers some of the text */
+/* line 243, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-noicon .x-tab-icon {
+  display: none; }
+
+/* line 269, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-top-over {
+  background-image: none;
+  background-color: #6d7b9a; }
+
+/* line 272, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-bottom-over {
+  background-image: none;
+  background-color: #6d7b9a; }
+
+/* line 277, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-active {
+  z-index: 3;
+  border-color: #74400e; }
+
+/* line 299, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-top-active {
+  background-image: none;
+  background-color: #ed9200; }
+
+/* line 302, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-bottom-active {
+  background-image: none;
+  background-color: #ed9200; }
+
+/* line 307, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-disabled {
+  border-color: #39445a; }
+  /* line 312, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-disabled button {
+    color: #c3b3b3; }
+
+/* line 328, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-top-disabled {
+  background-image: none;
+  background: transparent;
+  background-image: none;
+  background-color: #435881; }
+
+/* line 333, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-bottom-disabled {
+  background-image: none;
+  background: transparent;
+  background-image: none;
+  background-color: #435881; }
+
+/* line 363, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-closable em {
+  padding-right: 14px; }
+
+/* line 367, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-close-btn {
+  position: absolute;
+  top: 2px;
+  right: 2px;
+  width: 11px;
+  height: 11px;
+  font-size: 0;
+  line-height: 0;
+  text-indent: -999px;
+  background: no-repeat;
+  background-image: url('../../resources/themes/images/access/tabs/tab-close.gif');
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+
+/* line 381, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-close-btn {
+  top: 0px;
+  right: 0px; }
+
+/* Include the element name otherwise Internet Explorer 7 & 8 take a performance hit */
+/* line 387, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+a.x-tab-close-btn:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1; }
+
+/* Include the element name to raise the specificity to equal the :hover */
+/* line 392, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-disabled a.x-tab-close-btn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 404, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-over .x-frame-tl,
+.x-nbr .x-tab-top-over .x-frame-bl,
+.x-nbr .x-tab-top-over .x-frame-tr,
+.x-nbr .x-tab-top-over .x-frame-br,
+.x-nbr .x-tab-top-over .x-frame-tc,
+.x-nbr .x-tab-top-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/tab/tab-default-top-over-corners.gif'); }
+/* line 408, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-over .x-frame-ml,
+.x-nbr .x-tab-top-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/tab/tab-default-top-over-sides.gif'); }
+/* line 426, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-over .x-frame-tl,
+.x-nbr .x-tab-bottom-over .x-frame-bl,
+.x-nbr .x-tab-bottom-over .x-frame-tr,
+.x-nbr .x-tab-bottom-over .x-frame-br,
+.x-nbr .x-tab-bottom-over .x-frame-tc,
+.x-nbr .x-tab-bottom-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/tab/tab-default-bottom-over-corners.gif'); }
+/* line 430, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-over .x-frame-ml,
+.x-nbr .x-tab-bottom-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/tab/tab-default-bottom-over-sides.gif'); }
+/* line 448, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-active .x-frame-tl,
+.x-nbr .x-tab-top-active .x-frame-bl,
+.x-nbr .x-tab-top-active .x-frame-tr,
+.x-nbr .x-tab-top-active .x-frame-br,
+.x-nbr .x-tab-top-active .x-frame-tc,
+.x-nbr .x-tab-top-active .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/tab/tab-default-top-active-corners.gif'); }
+/* line 452, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-active .x-frame-ml,
+.x-nbr .x-tab-top-active .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/tab/tab-default-top-active-sides.gif'); }
+/* line 470, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-active .x-frame-tl,
+.x-nbr .x-tab-bottom-active .x-frame-bl,
+.x-nbr .x-tab-bottom-active .x-frame-tr,
+.x-nbr .x-tab-bottom-active .x-frame-br,
+.x-nbr .x-tab-bottom-active .x-frame-tc,
+.x-nbr .x-tab-bottom-active .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/tab/tab-default-bottom-active-corners.gif'); }
+/* line 474, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-active .x-frame-ml,
+.x-nbr .x-tab-bottom-active .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/tab/tab-default-bottom-active-sides.gif'); }
+/* line 492, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-disabled .x-frame-tl,
+.x-nbr .x-tab-top-disabled .x-frame-bl,
+.x-nbr .x-tab-top-disabled .x-frame-tr,
+.x-nbr .x-tab-top-disabled .x-frame-br,
+.x-nbr .x-tab-top-disabled .x-frame-tc,
+.x-nbr .x-tab-top-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/tab/tab-default-top-disabled-corners.gif'); }
+/* line 496, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-disabled .x-frame-ml,
+.x-nbr .x-tab-top-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/tab/tab-default-top-disabled-sides.gif'); }
+/* line 513, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-disabled .x-frame-tl,
+.x-nbr .x-tab-bottom-disabled .x-frame-bl,
+.x-nbr .x-tab-bottom-disabled .x-frame-tr,
+.x-nbr .x-tab-bottom-disabled .x-frame-br,
+.x-nbr .x-tab-bottom-disabled .x-frame-tc,
+.x-nbr .x-tab-bottom-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/access/tab/tab-default-bottom-disabled-corners.gif'); }
+/* line 517, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-disabled .x-frame-ml,
+.x-nbr .x-tab-bottom-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/access/tab/tab-default-bottom-disabled-sides.gif'); }
+
+/* line 9, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-autowidth-table table.x-grid-table {
+  table-layout: auto;
+  width: auto!important; }
+
+/* line 14, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-tree-elbow {
+  background-color: transparent; }
+
+/* line 18, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-tree-elbow-end {
+  background-color: transparent; }
+
+/* line 22, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-tree-elbow-line {
+  background-color: transparent; }
+
+/* line 27, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-plus {
+  background: transparent no-repeat 0 0; }
+
+/* line 31, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-end-plus {
+  background: transparent no-repeat 0 0; }
+
+/* line 35, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-end-minus {
+  background: transparent no-repeat -16px 0; }
+
+/* line 39, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-minus {
+  background: transparent no-repeat -16px 0; }
+
+/* line 43, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow {
+  background-color: transparent !important; }
+
+/* line 47, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-end {
+  background-color: transparent !important; }
+
+/* line 51, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-line {
+  background-color: transparent !important; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-expander-over .x-tree-elbow-plus,
+.x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-plus {
+  background-position: -32px 0; }
+
+/* line 62, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-expander-over .x-tree-elbow-minus,
+.x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-minus {
+  background-position: -48px 0; }
+
+/* line 67, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-plus,
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-position: -16px 0; }
+
+/* line 72, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-plus,
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-end-plus {
+  background-position: -48px 0; }
+
+/* line 79, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-elbow-plus,
+.x-tree-elbow-minus,
+.x-tree-elbow-end-plus,
+.x-tree-elbow-end-minus {
+  cursor: pointer; }
+
+/* line 85, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow {
+  background-image: url('../../resources/themes/images/access/tree/elbow.gif'); }
+/* line 89, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-end {
+  background-image: url('../../resources/themes/images/access/tree/elbow-end.gif'); }
+/* line 93, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-plus {
+  background-image: url('../../resources/themes/images/access/tree/elbow-plus.gif'); }
+/* line 97, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/access/tree/elbow-end-plus.gif'); }
+/* line 101, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus {
+  background-image: url('../../resources/themes/images/access/tree/elbow-minus.gif'); }
+/* line 105, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/access/tree/elbow-end-minus.gif'); }
+/* line 109, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-line {
+  background-image: url('../../resources/themes/images/access/tree/elbow-line.gif'); }
+
+/* line 116, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-tree-elbow-plus,
+.x-tree-no-lines .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/access/tree/elbow-plus-nl.gif'); }
+/* line 121, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-plus,
+.x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/access/tree/elbow-end-minus-nl.gif'); }
+
+/* line 130, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-plus,
+.x-tree-arrows .x-tree-elbow-minus,
+.x-tree-arrows .x-tree-elbow-end-plus,
+.x-tree-arrows .x-tree-elbow-end-minus {
+  background-image: url('../../resources/themes/images/access/tree/arrows.gif'); }
+
+/* line 135, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-icon {
+  margin: 3px 3px 0 0; }
+
+/* line 139, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-with-row-lines .x-tree-icon {
+  margin-top: 2px; }
+
+/* line 148, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-elbow,
+.x-tree-elbow-end,
+.x-tree-elbow-plus,
+.x-tree-elbow-end-plus,
+.x-tree-elbow-empty,
+.x-tree-elbow-line {
+  height: 22px;
+  width: 16px; }
+
+/* line 159, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-with-row-lines .x-tree-elbow,
+.x-grid-with-row-lines .x-tree-elbow-end,
+.x-grid-with-row-lines .x-tree-elbow-plus,
+.x-grid-with-row-lines .x-tree-elbow-end-plus,
+.x-grid-with-row-lines .x-tree-elbow-empty,
+.x-grid-with-row-lines .x-tree-elbow-line {
+  height: 21px;
+  background-position: 0 -1px; }
+
+/* line 165, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-icon-leaf {
+  width: 16px;
+  background-image: url('../../resources/themes/images/access/tree/leaf.gif'); }
+
+/* line 170, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-icon-parent {
+  width: 16px;
+  background-image: url('../../resources/themes/images/access/tree/folder.gif'); }
+
+/* line 175, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-tree-node-expanded .x-tree-icon-parent {
+  background-image: url('../../resources/themes/images/access/tree/folder-open.gif'); }
+
+/* line 179, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-rowbody {
+  padding: 0; }
+
+/* line 183, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-cell-treecolumn .x-grid-cell-inner {
+  padding: 0;
+  line-height: 21px; }
+
+/* line 188, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-with-row-lines .x-grid-cell-treecolumn .x-grid-cell-inner {
+  line-height: 19px; }
+
+/* line 192, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-panel .x-grid-cell-inner {
+  cursor: pointer; }
+  /* line 194, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-tree-panel .x-grid-cell-inner img {
+    display: inline-block;
+    vertical-align: top; }
+
+/* line 207, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-ie .x-tree-panel .x-tree-elbow,
+.x-ie .x-tree-panel .x-tree-elbow-end,
+.x-ie .x-tree-panel .x-tree-elbow-plus,
+.x-ie .x-tree-panel .x-tree-elbow-end-plus,
+.x-ie .x-tree-panel .x-tree-elbow-empty,
+.x-ie .x-tree-panel .x-tree-elbow-line {
+  vertical-align: -6px; }
+
+/* line 215, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-editor-on-text-node .x-form-text {
+  padding-left: 0;
+  padding-right: 0; }
+
+/* line 222, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-ie .x-grid-editor-on-text-node .x-form-text {
+  padding-left: 1px;
+  padding-right: 1px; }
+
+/* line 228, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-opera .x-grid-editor-on-text-node .x-form-text {
+  padding-left: 1px;
+  padding-right: 1px; }
+
+/* line 234, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-checkbox {
+  margin: 2px 3px 0 0;
+  display: inline-block;
+  vertical-align: top;
+  width: 19px;
+  height: 19px;
+  background: no-repeat;
+  background-image: url('../../resources/themes/images/access/form/checkbox.gif');
+  overflow: hidden;
+  padding: 0;
+  border: 0; }
+  /* line 247, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-tree-checkbox::-moz-focus-inner {
+    padding: 0;
+    border: 0; }
+
+/* line 253, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-with-row-lines .x-tree-checkbox {
+  margin-top: 1px; }
+
+/* line 257, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-checkbox-checked {
+  background-position: 0 -19px; }
+
+/* line 261, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-drop-ok-append .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/access/tree/drop-append.gif'); }
+
+/* line 265, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-drop-ok-above .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/access/tree/drop-above.gif'); }
+
+/* line 269, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-drop-ok-below .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/access/tree/drop-below.gif'); }
+
+/* line 273, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-drop-ok-between .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/access/tree/drop-between.gif'); }
+
+/* line 277, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-tree-loading .x-tree-icon {
+  background-image: url('../../resources/themes/images/access/tree/loading.gif'); }
+
+/* line 281, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-ddindicator {
+  height: 1px;
+  border-width: 1px 0px 0px;
+  border-style: dotted;
+  border-color: green; }
+
+/* line 288, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-tree-loading span {
+  font-style: italic;
+  color: #444444; }
+
+/* line 293, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-animator-wrap {
+  overflow: hidden; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-surface {
+  display: -moz-inline-box;
+  -moz-box-orient: vertical;
+  display: inline-block;
+  vertical-align: middle;
+  *vertical-align: auto;
+  overflow: hidden; }
+  /* line 7, ../../../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.11.7/frameworks/compass/stylesheets/compass/css3/_inline-block.scss */
+  .x-surface {
+    *display: inline; }
+
+/* line 11, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.rvml {
+  behavior: url(#default#VML); }
+
+/* line 15, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-surface tspan {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-sprite {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px; }
+
+/* line 27, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-group {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1000px;
+  height: 1000px; }
+
+/* line 35, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-measure-span {
+  position: absolute;
+  left: -9999em;
+  top: -9999em;
+  padding: 0;
+  margin: 0;
+  display: inline; }
+
+/* line 44, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block; }
+
+/* line 52, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block; }
+
+/* line 60, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+svg, vml {
+  overflow: hidden; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_viewport.scss */
+.x-viewport, .x-viewport body {
+  margin: 0;
+  padding: 0;
+  border: 0 none;
+  overflow: hidden;
+  height: 100%;
+  position: static; }
+
+/* line 3, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drag-proxy {
+  z-index: 1000000!important; }
+
+/* line 8, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drag-repair .x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+/* line 12, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drag-repair .x-dd-drop-icon {
+  display: none; }
+
+/* line 17, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
+  opacity: 0.85;
+  padding: 5px;
+  padding-left: 20px;
+  white-space: nowrap;
+  color: #000;
+  font: normal 14px tahoma, arial, verdana, sans-serif;
+  border: 1px solid;
+  border-color: #ddd #bbb #bbb #ddd;
+  background-color: #fff; }
+
+/* line 34, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drop-icon {
+  position: absolute;
+  top: 3px;
+  left: 3px;
+  display: block;
+  width: 16px;
+  height: 16px;
+  background-color: transparent;
+  background-position: center;
+  background-repeat: no-repeat;
+  z-index: 1; }
+
+/* line 51, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-view-selector {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 0;
+  background-color: #c3daf9;
+  border: 1px dotted #3399bb;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  zoom: 1; }
+
+/* line 66, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drop-nodrop .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/access/dd/drop-no.gif'); }
+
+/* line 70, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drop-ok .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/access/dd/drop-yes.gif'); }
+
+/* line 74, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drop-ok-add .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/access/dd/drop-add.gif'); }
+
+/* line 2, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle {
+  position: absolute;
+  z-index: 100;
+  font-size: 1px;
+  line-height: 6px;
+  overflow: hidden;
+  zoom: 1;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  background-color: #fff; }
+
+/* line 14, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-collapsed .x-resizable-handle {
+  display: none; }
+
+/* line 18, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-east {
+  width: 6px;
+  height: 100%;
+  right: 0;
+  top: 0; }
+
+/* line 27, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-east {
+  cursor: e-resize; }
+
+/* line 32, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-south {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  bottom: 0; }
+
+/* line 41, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-south {
+  cursor: s-resize; }
+
+/* line 46, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-west {
+  width: 6px;
+  height: 100%;
+  left: 0;
+  top: 0; }
+
+/* line 55, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-west {
+  cursor: w-resize; }
+
+/* line 60, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-north {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  top: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-north {
+  cursor: n-resize; }
+
+/* line 74, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-southeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  bottom: 0;
+  z-index: 101; }
+
+/* line 85, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southeast {
+  cursor: se-resize; }
+
+/* line 90, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-northwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  top: 0;
+  z-index: 101; }
+
+/* line 101, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northwest {
+  cursor: nw-resize; }
+
+/* line 106, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-northeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  top: 0;
+  z-index: 101; }
+
+/* line 117, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northeast {
+  cursor: ne-resize; }
+
+/* line 122, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-southwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+  z-index: 101; }
+
+/* line 133, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southwest {
+  cursor: sw-resize; }
+
+/*IE rounding error*/
+/* line 140, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-ie .x-resizable-handle-east {
+  margin-right: -1px;
+  /*IE rounding error*/ }
+/* line 144, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-ie .x-resizable-handle-south {
+  margin-bottom: -1px; }
+
+/* line 149, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle, .x-resizable-pinned .x-resizable-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1; }
+
+/* line 153, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-window .x-window-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 157, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-window-collapsed .x-window-handle {
+  display: none; }
+
+/* line 161, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-proxy {
+  border: 1px dashed #3b5a82;
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  z-index: 50000; }
+
+/* line 170, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-overlay {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  display: none;
+  z-index: 200000;
+  background-color: #fff;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 190, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-west {
+  background-position: left;
+  background-image: url('../../resources/themes/images/access/sizer/e-handle.gif'); }
+/* line 196, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-north {
+  background-position: top;
+  background-image: url('../../resources/themes/images/access/sizer/s-handle.gif'); }
+/* line 201, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+  background-position: top left;
+  background-image: url('../../resources/themes/images/access/sizer/se-handle.gif'); }
+/* line 206, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+  background-position: bottom right;
+  background-image: url('../../resources/themes/images/access/sizer/nw-handle.gif'); }
+/* line 211, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+  background-position: bottom left;
+  background-image: url('../../resources/themes/images/access/sizer/ne-handle.gif'); }
+/* line 216, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+  background-position: top right;
+  background-image: url('../../resources/themes/images/access/sizer/sw-handle.gif'); }
+
+/* line 3, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter .x-collapse-el {
+  position: absolute;
+  cursor: pointer;
+  background-color: transparent;
+  background-repeat: no-repeat !important; }
+
+/* line 14, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-left,
+.x-layout-split-right {
+  top: 50%;
+  margin-top: -17px;
+  width: 5px;
+  height: 35px; }
+
+/* line 24, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-top,
+.x-layout-split-bottom {
+  left: 50%;
+  width: 35px;
+  height: 5px;
+  margin-left: -17px; }
+
+/* line 33, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-left {
+  background: no-repeat top right;
+  background-image: url('../../resources/themes/images/access/util/splitter/mini-left.gif'); }
+
+/* line 38, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-right {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/access/util/splitter/mini-right.gif'); }
+
+/* line 43, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-top {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/access/util/splitter/mini-top.gif'); }
+
+/* line 48, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-bottom {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/access/util/splitter/mini-bottom.gif'); }
+
+/* line 54, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-left {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/access/util/splitter/mini-right.gif'); }
+/* line 59, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-right {
+  background: no-repeat top right;
+  background-image: url('../../resources/themes/images/access/util/splitter/mini-left.gif'); }
+/* line 64, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-top {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/access/util/splitter/mini-bottom.gif'); }
+/* line 69, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-bottom {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/access/util/splitter/mini-top.gif'); }
+
+/* line 75, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-horizontal {
+  cursor: e-resize;
+  cursor: row-resize;
+  font-size: 1px; }
+
+/* line 81, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-vertical {
+  cursor: e-resize;
+  cursor: col-resize;
+  font-size: 1px; }
+
+/* line 86, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed, .x-splitter-horizontal-noresize, .x-splitter-vertical-noresize {
+  cursor: default; }
+
+/* line 90, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-active {
+  z-index: 4;
+  font-size: 1px;
+  background-color: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8; }
+
+/* line 97, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-active .x-collapse-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 102, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-proxy-el {
+  position: absolute;
+  background: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8; }
+
+/*
+ * Dock Layouts
+ * @todo move this somewhere else?
+ */
+/* line 6, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked {
+  position: absolute !important;
+  z-index: 1; }
+
+/* line 11, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-top {
+  border-bottom-width: 0 !important; }
+
+/* line 15, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-bottom {
+  border-top-width: 0 !important; }
+
+/* line 19, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-left {
+  border-right-width: 0 !important; }
+
+/* line 23, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-right {
+  border-left-width: 0 !important; }
+
+/* line 27, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-noborder-top {
+  border-top-width: 0 !important; }
+
+/* line 31, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-noborder-right {
+  border-right-width: 0 !important; }
+
+/* line 35, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-noborder-bottom {
+  border-bottom-width: 0 !important; }
+
+/* line 39, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-noborder-left {
+  border-left-width: 0 !important; }
+
+/* line 43, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-inner {
+  overflow: hidden;
+  zoom: 1;
+  position: relative;
+  left: 0;
+  top: 0; }
+
+/* line 53, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-item {
+  position: absolute !important;
+  left: 0;
+  top: 0; }
+
+/* line 59, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-rtl .x-box-item {
+  right: 0;
+  left: auto; }
+
+/* line 65, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-layout-ct,
+.x-border-layout-ct {
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 70, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-border-layout-ct {
+  background-color: #3f4757;
+  position: relative; }
+
+/* line 75, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-overflow-hidden {
+  overflow: hidden !important; }
+
+/* line 79, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-inline-children > * {
+  display: inline-block !important; }
+
+/* line 83, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-abs-layout-ct {
+  position: relative; }
+
+/* line 87, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-abs-layout-item {
+  position: absolute !important; }
+
+/* line 91, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-fit-item {
+  position: relative; }
+
+/* line 95, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-border-region-slide-in {
+  z-index: 5; }
+
+/* line 99, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-region-collapsed-placeholder {
+  z-index: 4; }
+
+/* line 103, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd .x-panel-header-text {
+  color: white;
+  font-weight: normal; }
+
+/* line 108, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd {
+  background: #5c6b82 !important;
+  -moz-box-shadow: inset 0 0 0 0 #5c6b82;
+  -webkit-box-shadow: inset 0 0 0 0 #5c6b82;
+  -o-box-shadow: inset 0 0 0 0 #5c6b82;
+  box-shadow: inset 0 0 0 0 #5c6b82; }
+  /* line 112, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-accordion-hd .x-tool-collapse-top,
+  .x-accordion-hd .x-tool-collapse-right,
+  .x-accordion-hd .x-tool-collapse-bottom,
+  .x-accordion-hd .x-tool-collapse-left {
+    background-position: 0 -255px; }
+  /* line 119, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-accordion-hd .x-tool-expand-top,
+  .x-accordion-hd .x-tool-expand-right,
+  .x-accordion-hd .x-tool-expand-bottom,
+  .x-accordion-hd .x-tool-expand-left {
+    background-position: 0 -240px; }
+  /* line 127, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-accordion-hd .x-tool-over .x-tool-collapse-top,
+  .x-accordion-hd .x-tool-over .x-tool-collapse-right,
+  .x-accordion-hd .x-tool-over .x-tool-collapse-bottom,
+  .x-accordion-hd .x-tool-over .x-tool-collapse-left {
+    background-position: -15px -255px; }
+  /* line 136, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-accordion-hd .x-tool-over .x-tool-expand-top,
+  .x-accordion-hd .x-tool-over .x-tool-expand-right,
+  .x-accordion-hd .x-tool-over .x-tool-expand-bottom,
+  .x-accordion-hd .x-tool-over .x-tool-expand-left {
+    background-position: -15px -240px; }
+
+/* line 145, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd {
+  border-width: 1px 0 1px 0 !important;
+  padding: 4px 5px 5px 5px;
+  border-top-color: #606877 !important; }
+
+/* line 151, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-body {
+  border-width: 0 !important; }
+
+/* line 155, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd-sibling-expanded {
+  border-top-color: #18181a !important;
+  -moz-box-shadow: inset 0 1px 0 0 #606877;
+  -webkit-box-shadow: inset 0 1px 0 0 #606877;
+  -o-box-shadow: inset 0 1px 0 0 #606877;
+  box-shadow: inset 0 1px 0 0 #606877; }
+
+/* line 160, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd-last-collapsed {
+  border-bottom-color: #5c6b82 !important; }
+
+/* line 169, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-frame-tl,
+.x-frame-tr,
+.x-frame-tc,
+.x-frame-bl,
+.x-frame-br,
+.x-frame-bc {
+  overflow: hidden;
+  background-repeat: no-repeat; }
+
+/* line 175, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-frame-tc,
+.x-frame-bc {
+  background-repeat: repeat-x; }
+
+/* line 179, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-frame-mc {
+  position: relative;
+  background-repeat: repeat-x;
+  overflow: hidden; }
+
+/* line 188, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-left {
+  float: left;
+  height: 100%;
+  z-index: 5; }
+  /* line 195, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left,
+  .x-box-scroller-left .x-tabbar-scroll-left {
+    width: 18px;
+    position: relative;
+    cursor: pointer;
+    height: 27px;
+    background: transparent no-repeat -18px 0;
+    background-image: url('../../resources/themes/images/access/tab-bar/scroll-left.gif'); }
+  /* line 203, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left-hover {
+    background-position: 0 0; }
+  /* line 207, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left-disabled,
+  .x-box-scroller-left .x-tabbar-scroll-left-disabled {
+    background-position: -18px 0;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5;
+    cursor: default; }
+  /* line 214, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left {
+    background-image: url('../../resources/themes/images/access/toolbar/scroll-left.gif');
+    background-position: -14px 0; }
+  /* line 218, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left-hover {
+    background-position: 0 0; }
+  /* line 221, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left-disabled {
+    background-position: -14px 0; }
+  /* line 225, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left {
+    width: 14px;
+    height: 22px;
+    border-bottom: 1px solid #8db2e3; }
+
+/* line 233, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-horizontal-box-overflow-body {
+  float: left; }
+
+/* line 236, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-right {
+  float: right;
+  height: 100%;
+  z-index: 5; }
+  /* line 243, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right,
+  .x-box-scroller-right .x-tabbar-scroll-right {
+    width: 18px;
+    position: relative;
+    cursor: pointer;
+    height: 27px;
+    background: transparent no-repeat 0 0;
+    background-image: url('../../resources/themes/images/access/tab-bar/scroll-right.gif'); }
+  /* line 251, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-hover {
+    background-position: -18px 0; }
+  /* line 255, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-disabled,
+  .x-box-scroller-right .x-tabbar-scroll-right-disabled {
+    background-position: 0 0;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5;
+    cursor: default; }
+  /* line 262, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right {
+    background-image: url('../../resources/themes/images/access/toolbar/scroll-right.gif'); }
+  /* line 265, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-hover {
+    background-position: -14px 0; }
+  /* line 268, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-disabled {
+    background-position: 0 0; }
+  /* line 272, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right {
+    width: 14px;
+    height: 22px;
+    border-bottom: 1px solid #8db2e3; }
+
+/* line 282, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-top .x-box-scroller {
+  line-height: 0;
+  font-size: 0; }
+/* line 286, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-top .x-menu-scroll-top {
+  background: transparent no-repeat center center;
+  background-image: url('../../resources/themes/images/access/layout/mini-top.gif');
+  height: 8px;
+  cursor: pointer; }
+
+/* line 294, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-bottom .x-box-scroller {
+  line-height: 0;
+  font-size: 0; }
+/* line 298, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-bottom .x-menu-scroll-bottom {
+  background: transparent no-repeat center center;
+  background-image: url('../../resources/themes/images/access/layout/mini-bottom.gif');
+  height: 8px;
+  cursor: pointer; }
+
+/* line 306, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-menu-right {
+  float: right;
+  padding-right: 2px; }
+
+/* line 311, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-column {
+  float: left; }
+
+/* line 315, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-ie6 .x-column {
+  display: inline;
+  /*prevent IE6 double-margin bug*/ }
+
+/* line 319, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-quirks .x-ie .x-form-layout-table, .x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item {
+  position: relative; }
+
+/* line 2, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool {
+  height: 15px; }
+  /* line 5, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-tool img {
+    overflow: hidden;
+    width: 15px;
+    height: 15px;
+    cursor: pointer;
+    background-color: transparent;
+    background-repeat: no-repeat;
+    background-image: url('../../resources/themes/images/access/tools/tool-sprites.gif');
+    margin: 0; }
+
+/* line 23, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-header-horizontal .x-tool,
+.x-window-header-horizontal .x-tool {
+  margin-left: 2px; }
+
+/* line 30, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-header-vertical .x-tool,
+.x-window-header-vertical .x-tool {
+  margin-top: 2px; }
+
+/* line 39, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-header-vertical .x-tool-top,
+.x-window-header-vertical .x-tool-top {
+  margin: 0 0 4px; }
+
+/* line 45, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-placeholder {
+  visibility: hidden; }
+
+/* line 49, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-toggle {
+  background-position: 0 -60px; }
+
+/* line 54, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-toggle {
+  background-position: -15px -60px; }
+
+/* line 61, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-collapsed .x-tool-toggle,
+.x-fieldset-collapsed .x-tool-toggle {
+  background-position: 0 -75px; }
+/* line 66, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-collapsed .x-tool-over .x-tool-toggle,
+.x-fieldset-collapsed .x-tool-over .x-tool-toggle {
+  background-position: -15px -75px; }
+
+/* line 72, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-close {
+  background-position: 0 0; }
+
+/* line 76, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-minimize {
+  background-position: 0 -15px; }
+
+/* line 80, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-maximize {
+  background-position: 0 -30px; }
+
+/* line 84, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-restore {
+  background-position: 0 -45px; }
+
+/* line 88, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-gear {
+  background-position: 0 -90px; }
+
+/* line 92, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-prev {
+  background-position: 0 -105px; }
+
+/* line 96, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-next {
+  background-position: 0 -120px; }
+
+/* line 100, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-pin {
+  background-position: 0 -135px; }
+
+/* line 104, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-unpin {
+  background-position: 0 -150px; }
+
+/* line 108, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-right {
+  background-position: 0 -165px; }
+
+/* line 112, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-left {
+  background-position: 0 -180px; }
+
+/* line 116, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-help {
+  background-position: 0 -300px; }
+
+/* line 120, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-save {
+  background-position: 0 -285px; }
+
+/* line 124, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-search {
+  background-position: 0 -270px; }
+
+/* line 128, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-minus {
+  background-position: 0 -255px; }
+
+/* line 132, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-plus {
+  background-position: 0 -240px; }
+
+/* line 136, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-refresh {
+  background-position: 0 -225px; }
+
+/* line 140, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-up {
+  background-position: 0 -210px; }
+
+/* line 144, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-down {
+  background-position: 0 -195px; }
+
+/* line 148, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-collapse {
+  background-position: 0 -345px; }
+
+/* line 152, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand {
+  background-position: 0 -330px; }
+
+/* line 156, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-print {
+  background-position: 0 -315px; }
+
+/* line 161, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand-bottom,
+.x-tool-collapse-bottom {
+  background-position: 0 -195px; }
+
+/* line 166, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand-top,
+.x-tool-collapse-top {
+  background-position: 0 -210px; }
+
+/* line 171, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand-left,
+.x-tool-collapse-left {
+  background-position: 0 -180px; }
+
+/* line 176, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand-right,
+.x-tool-collapse-right {
+  background-position: 0 -165px; }
+
+/* line 181, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-close {
+  background-position: -15px 0; }
+/* line 185, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-minimize {
+  background-position: -15px -15px; }
+/* line 189, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-maximize {
+  background-position: -15px -30px; }
+/* line 193, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-restore {
+  background-position: -15px -45px; }
+/* line 197, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-gear {
+  background-position: -15px -90px; }
+/* line 201, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-prev {
+  background-position: -15px -105px; }
+/* line 205, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-next {
+  background-position: -15px -120px; }
+/* line 209, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-pin {
+  background-position: -15px -135px; }
+/* line 213, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-unpin {
+  background-position: -15px -150px; }
+/* line 217, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-right {
+  background-position: -15px -165px; }
+/* line 221, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-left {
+  background-position: -15px -180px; }
+/* line 225, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-down {
+  background-position: -15px -195px; }
+/* line 229, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-up {
+  background-position: -15px -210px; }
+/* line 233, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-refresh {
+  background-position: -15px -225px; }
+/* line 237, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-plus {
+  background-position: -15px -240px; }
+/* line 241, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-minus {
+  background-position: -15px -255px; }
+/* line 245, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-search {
+  background-position: -15px -270px; }
+/* line 249, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-save {
+  background-position: -15px -285px; }
+/* line 253, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-help {
+  background-position: -15px -300px; }
+/* line 257, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-print {
+  background-position: -15px -315px; }
+/* line 261, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand {
+  background-position: -15px -330px; }
+/* line 265, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-collapse {
+  background-position: -15px -345px; }
+/* line 270, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand-bottom,
+.x-tool-over .x-tool-collapse-bottom {
+  background-position: -15px -195px; }
+/* line 275, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand-top,
+.x-tool-over .x-tool-collapse-top {
+  background-position: -15px -210px; }
+/* line 280, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand-left,
+.x-tool-over .x-tool-collapse-left {
+  background-position: -15px -180px; }
+/* line 285, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand-right,
+.x-tool-over .x-tool-collapse-right {
+  background-position: -15px -165px; }
+
+/* line 2, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-horizontal-scroller-present .x-grid-body {
+  border-bottom-width: 0px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-vertical-scroller-present .x-grid-body {
+  border-right-width: 0px; }
+
+/* line 10, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller {
+  overflow: hidden; }
+
+/* line 14, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-vertical {
+  border: 1px solid #18181a;
+  border-top-color: #373c4b; }
+
+/* line 19, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-horizontal {
+  border: 1px solid #18181a; }
+
+/* line 23, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-vertical-scroller-present .x-scroller-horizontal {
+  border-right-width: 0px; }
+
+/* line 27, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-ct {
+  overflow: hidden;
+  position: absolute;
+  margin: 0;
+  padding: 0;
+  border: none;
+  left: 0px;
+  top: 0px;
+  /*
+  In IE9 (only), the border-box style causes the scroller-ct to be 0px in the
+  perpendicular dimension and breaks the scroll as well as offsets it by the left
+  offset that we use to try and keep some size on this element. This works on all
+  browsers (including IE9).
+  */
+  box-sizing: content-box !important;
+  -ms-box-sizing: content-box !important;
+  -moz-box-sizing: content-box !important;
+  -webkit-box-sizing: content-box !important; }
+
+/* line 48, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-vertical .x-scroller-ct {
+  overflow-y: scroll; }
+
+/* line 52, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-horizontal .x-scroller-ct {
+  overflow-x: scroll; }
+
+/* line 8, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+.x-html {
+  /* Begin bidirectionality settings (do not change) */ }
+  /* line 34, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html html,
+  .x-html address,
+  .x-html blockquote,
+  .x-html body,
+  .x-html dd,
+  .x-html div,
+  .x-html dl,
+  .x-html dt,
+  .x-html fieldset,
+  .x-html form,
+  .x-html frame, .x-html frameset,
+  .x-html h1,
+  .x-html h2,
+  .x-html h3,
+  .x-html h4,
+  .x-html h5,
+  .x-html h6,
+  .x-html noframes,
+  .x-html ol,
+  .x-html p,
+  .x-html ul,
+  .x-html center,
+  .x-html dir,
+  .x-html hr,
+  .x-html menu,
+  .x-html pre {
+    display: block; }
+  /* line 35, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html li {
+    display: list-item;
+    list-style: disc; }
+  /* line 36, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html head {
+    display: none; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html table {
+    display: table; }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html tr {
+    display: table-row; }
+  /* line 39, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html thead {
+    display: table-header-group; }
+  /* line 40, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html tbody {
+    display: table-row-group; }
+  /* line 41, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html tfoot {
+    display: table-footer-group; }
+  /* line 42, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html col {
+    display: table-column; }
+  /* line 43, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html colgroup {
+    display: table-column-group; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html td,
+  .x-html th {
+    display: table-cell; }
+  /* line 46, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html caption {
+    display: table-caption; }
+  /* line 47, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html th {
+    font-weight: bolder;
+    text-align: center; }
+  /* line 48, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html caption {
+    text-align: center; }
+  /* line 49, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html body {
+    margin: 8px; }
+  /* line 50, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h1 {
+    font-size: 2em;
+    margin: .67em 0; }
+  /* line 51, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h2 {
+    font-size: 1.5em;
+    margin: .75em 0; }
+  /* line 52, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h3 {
+    font-size: 1.17em;
+    margin: .83em 0; }
+  /* line 62, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h4,
+  .x-html p,
+  .x-html blockquote,
+  .x-html ul,
+  .x-html fieldset,
+  .x-html form,
+  .x-html ol,
+  .x-html dl,
+  .x-html dir,
+  .x-html menu {
+    margin: 1.12em 0; }
+  /* line 63, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h5 {
+    font-size: .83em;
+    margin: 1.5em 0; }
+  /* line 64, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h6 {
+    font-size: .75em;
+    margin: 1.67em 0; }
+  /* line 72, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h1,
+  .x-html h2,
+  .x-html h3,
+  .x-html h4,
+  .x-html h5,
+  .x-html h6,
+  .x-html b,
+  .x-html strong {
+    font-weight: bolder; }
+  /* line 73, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html blockquote {
+    margin-left: 40px;
+    margin-right: 40px; }
+  /* line 78, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html i,
+  .x-html cite,
+  .x-html em,
+  .x-html var,
+  .x-html address {
+    font-style: italic; }
+  /* line 83, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html pre,
+  .x-html tt,
+  .x-html code,
+  .x-html kbd,
+  .x-html samp {
+    font-family: monospace; }
+  /* line 84, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html pre {
+    white-space: pre; }
+  /* line 88, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html button,
+  .x-html textarea,
+  .x-html input,
+  .x-html select {
+    display: inline-block; }
+  /* line 89, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html big {
+    font-size: 1.17em; }
+  /* line 92, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html small,
+  .x-html sub,
+  .x-html sup {
+    font-size: .83em; }
+  /* line 93, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html sub {
+    vertical-align: sub; }
+  /* line 94, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html sup {
+    vertical-align: super; }
+  /* line 95, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html table {
+    border-spacing: 2px; }
+  /* line 98, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html thead,
+  .x-html tbody,
+  .x-html tfoot {
+    vertical-align: middle; }
+  /* line 100, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html td,
+  .x-html th {
+    vertical-align: inherit; }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html s,
+  .x-html strike,
+  .x-html del {
+    text-decoration: line-through; }
+  /* line 104, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html hr {
+    border: 1px inset; }
+  /* line 109, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html ol,
+  .x-html ul,
+  .x-html dir,
+  .x-html menu,
+  .x-html dd {
+    margin-left: 40px; }
+  /* line 110, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html ul, .x-html menu, .x-html dir {
+    list-style-type: disc; }
+  /* line 111, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html ol {
+    list-style-type: decimal; }
+  /* line 115, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html ol ul,
+  .x-html ul ol,
+  .x-html ul ul,
+  .x-html ol ol {
+    margin-top: 0;
+    margin-bottom: 0; }
+  /* line 117, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html u,
+  .x-html ins {
+    text-decoration: underline; }
+  /* line 118, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html br:before {
+    content: "\A"; }
+  /* line 119, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html :before, .x-html :after {
+    white-space: pre-line; }
+  /* line 120, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html center {
+    text-align: center; }
+  /* line 121, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html :link, .x-html :visited {
+    text-decoration: underline; }
+  /* line 122, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html :focus {
+    outline: invert dotted thin; }
+  /* line 125, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html BDO[DIR="ltr"] {
+    direction: ltr;
+    unicode-bidi: bidi-override; }
+  /* line 126, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html BDO[DIR="rtl"] {
+    direction: rtl;
+    unicode-bidi: bidi-override; }
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-all-access.css
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-all-access.css	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-all-access.css	(revision 18277)
@@ -0,0 +1,21 @@
+/*
+This file is part of Ext JS 4.1
+
+Copyright (c) 2011-2012 Sencha Inc
+
+Contact:  http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2012-07-04 21:11:01 (65ff594cd80b9bad45df640c22cc0adb52c95a7b)
+*/
+body{background:#000}html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}li{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%}q:before,q:after{content:""}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit}*:focus{outline:0}.x-border-box,.x-border-box *{box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box}.x-body{color:white;font-size:15px;font-family:tahoma,arial,verdana,sans-serif}.x-rtl{direction:rtl}.x-ltr{direction:ltr}.x-clear{overflow:hidden;clear:both;font-size:0;line-height:0;display:table}.x-strict .x-ie7 .x-clear{height:0;width:0}.x-layer{position:absolute!important;overflow:hidden;zoom:1}.x-shim{position:absolute;left:0;top:0;overflow:hidden;filter:alpha(opacity=0);opacity:0}.x-hide-display{display:none!important}.x-hide-visibility{visibility:hidden!important}.x-item-disabled .x-form-item-label,.x-item-disabled .x-form-field,.x-item-disabled .x-form-cb-label,.x-item-disabled .x-form-trigger{filter:alpha(opacity=30);opacity:.3}.x-ie6 .x-item-disabled{filter:none}.x-hidden,.x-hide-offsets{display:block!important;visibility:hidden!important;position:absolute!important;left:-10000px!important;top:-10000px!important}.x-hide-nosize{height:0!important;width:0!important}.x-masked-relative{position:relative}.x-ie6 .x-masked select,.x-ie6.x-body-masked select{visibility:hidden!important}.x-css-shadow{position:absolute;-moz-border-radius:5px 5px;-webkit-border-radius:5px 5px;-o-border-radius:5px 5px;-ms-border-radius:5px 5px;-khtml-border-radius:5px 5px;border-radius:5px 5px}.x-ie-shadow{background-color:#777;display:none;position:absolute;overflow:hidden;zoom:1}.x-box-tl{background:transparent no-repeat 0 0;zoom:1}.x-box-tc{height:8px;background:transparent repeat-x 0 0;overflow:hidden}.x-box-tr{background:transparent no-repeat right -8px}.x-box-ml{background:transparent repeat-y 0;padding-left:4px;overflow:hidden;zoom:1}.x-box-mc{background:repeat-x 0 -16px;padding:4px 10px}.x-box-mc h3{margin:0 0 4px 0;zoom:1}.x-box-mr{background:transparent repeat-y right;padding-right:4px;overflow:hidden}.x-box-bl{background:transparent no-repeat 0 -16px;zoom:1}.x-box-bc{background:transparent repeat-x 0 -8px;height:8px;overflow:hidden}.x-box-br{background:transparent no-repeat right -24px}.x-box-tl,.x-box-bl{padding-left:8px;overflow:hidden}.x-box-tr,.x-box-br{padding-right:8px;overflow:hidden}.x-box-tl{background-image:url('../../resources/themes/images/access/box/corners.gif')}.x-box-tc{background-image:url('../../resources/themes/images/access/box/tb.gif')}.x-box-tr{background-image:url('../../resources/themes/images/access/box/corners.gif')}.x-box-ml{background-image:url('../../resources/themes/images/access/box/l.gif')}.x-box-mc{background-color:#eee;background-image:url('../../resources/themes/images/access/box/tb.gif');font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:15px}.x-box-mc h3{font-size:18px;font-weight:bold}.x-box-mr{background-image:url('../../resources/themes/images/access/box/r.gif')}.x-box-bl{background-image:url('../../resources/themes/images/access/box/corners.gif')}.x-box-bc{background-image:url('../../resources/themes/images/access/box/tb.gif')}.x-box-br{background-image:url('../../resources/themes/images/access/box/corners.gif')}.x-box-blue .x-box-bl,.x-box-blue .x-box-br,.x-box-blue .x-box-tl,.x-box-blue .x-box-tr{background-image:url('../../resources/themes/images/access/box/corners-blue.gif')}.x-box-blue .x-box-bc,.x-box-blue .x-box-mc,.x-box-blue .x-box-tc{background-image:url('../../resources/themes/images/access/box/tb-blue.gif')}.x-box-blue .x-box-mc{background-color:#c3daf9}.x-box-blue .x-box-mc h3{color:#17385b}.x-box-blue .x-box-ml{background-image:url('../../resources/themes/images/access/box/l-blue.gif')}.x-box-blue .x-box-mr{background-image:url('../../resources/themes/images/access/box/r-blue.gif')}.x-container{zoom:1}.x-container:before{content:"";clear:both;display:table}table.x-container:before,tbody.x-container:before,tr.x-container:before{display:none}.x-focus-element{position:absolute;top:-10px;left:-10px;width:0;height:0}.x-focus-frame{position:absolute;left:0;top:0;z-index:100000000;width:0;height:0}.x-focus-frame-top,.x-focus-frame-bottom,.x-focus-frame-left,.x-focus-frame-right{position:absolute;top:0;left:0}.x-focus-frame-top,.x-focus-frame-bottom{border-top:solid 2px #15428b;height:2px}.x-focus-frame-left,.x-focus-frame-right{border-left:solid 2px #15428b;width:2px}.x-mask{z-index:100;position:absolute;top:0;left:0;filter:alpha(opacity=50);opacity:.5;width:100%;height:100%;zoom:1;background:#ccc}.x-mask-msg{z-index:20001;position:absolute;top:0;left:0;padding:2px;border:1px solid;border-color:#223;background-image:none;background-color:#3f4757}.x-mask-msg div{padding:5px 10px;cursor:wait;border:1px solid #556;background-color:#232d38;color:white;font:normal 14px tahoma,arial,verdana,sans-serif}.x-boundlist{border-width:2px;border-style:solid;border-color:#222732;background:#404551}.x-boundlist .x-toolbar{border-width:1px 0 0 0}.x-strict .x-ie6 .x-boundlist-list-ct,.x-strict .x-ie7 .x-boundlist-list-ct{position:relative}.x-boundlist-item{padding:2px;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;cursor:pointer;cursor:hand;position:relative;border-width:0;border-style:dotted;border-color:#404551}.x-boundlist-selected{background:#e5872c;border-color:#242838}.x-boundlist-item-over{background:#e5872c;border-color:#2e3347}.x-boundlist-floating{border-top-width:0}.x-boundlist-above{border-top-width:1px;border-bottom-width:1px}.x-btn{display:inline-block;zoom:1;*display:inline;position:relative;cursor:pointer;cursor:hand;white-space:nowrap;vertical-align:middle;background-repeat:no-repeat}.x-btn *{cursor:pointer;cursor:hand}.x-btn em{background-repeat:no-repeat}.x-btn em a{text-decoration:none;display:block;color:inherit;width:100%;zoom:1}.x-btn button{width:100%;display:block;margin:0;padding:0;border:0;background:0;outline:0 none;overflow:hidden;vertical-align:bottom;-webkit-appearance:none}.x-btn button::-moz-focus-inner{border:0;padding:0}.x-btn .x-btn-inner{display:block;white-space:nowrap;background-color:transparent;background-repeat:no-repeat;background-position:left center;overflow:hidden}.x-btn .x-btn-left .x-btn-inner{text-align:left}.x-btn .x-btn-center .x-btn-inner{text-align:center}.x-btn .x-btn-right .x-btn-inner{text-align:right}.x-btn-disabled span{filter:alpha(opacity=50);opacity:.5}.x-ie6 .x-btn-disabled span,.x-ie7 .x-btn-disabled span{filter:none}.x-ie7 .x-btn-disabled,.x-ie8 .x-btn-disabled{filter:none}.x-ie6 .x-btn-disabled .x-btn-icon,.x-ie7 .x-btn-disabled .x-btn-icon,.x-ie8 .x-btn-disabled .x-btn-icon{filter:alpha(opacity=60);opacity:.6}.x-ie9 .x-btn button{overflow:visible!important}* html .x-ie .x-btn button{width:1px}.x-ie .x-btn button{overflow-x:visible;vertical-align:baseline}.x-strict .x-ie6 .x-btn .x-frame-mc,.x-strict .x-ie7 .x-btn .x-frame-mc{height:100%}.x-btn .x-frame-mc{vertical-align:middle;white-space:nowrap;cursor:pointer}.x-btn-noicon .x-frame-mc{text-align:center}.x-btn-icon-text-left .x-btn-icon{background-position:left center}.x-btn-icon-text-right .x-btn-icon{background-position:right center}.x-btn-icon-text-top .x-btn-icon{background-position:center top}.x-btn-icon-text-bottom .x-btn-icon{background-position:center bottom}.x-btn button,.x-btn a{position:relative}.x-btn button .x-btn-icon,.x-btn a .x-btn-icon{position:absolute;background-repeat:no-repeat}.x-btn-arrow-right{background:transparent no-repeat right center;padding-right:12px}.x-btn-arrow-right .x-btn-inner{padding-right:0!important}.x-toolbar .x-btn-arrow-right{padding-right:12px}.x-btn-arrow-bottom{background:transparent no-repeat center bottom;padding-bottom:12px}.x-btn-arrow{background-image:url('../../resources/themes/images/access/button/arrow.gif');display:block}.x-btn-split-right,.x-btn-over .x-btn-split-right{background:transparent no-repeat right center;background-image:url('../../resources/themes/images/access/button/s-arrow.gif');padding-right:14px!important}.x-btn-split-bottom,.x-btn-over .x-btn-split-bottom{background:transparent no-repeat center bottom;background-image:url('../../resources/themes/images/access/button/s-arrow-b.gif');padding-bottom:14px}.x-toolbar .x-btn-split-right{background-image:url('../../resources/themes/images/access/button/s-arrow-noline.gif');padding-right:12px!important}.x-toolbar .x-btn-split-bottom{background-image:url('../../resources/themes/images/access/button/s-arrow-b-noline.gif')}.x-btn-split{display:block}.x-item-disabled,.x-item-disabled *{cursor:default}.x-cycle-fixed-width .x-btn-inner{text-align:inherit}.x-btn-over .x-btn-split-right{background-image:url('../../resources/themes/images/access/button/s-arrow-o.gif')}.x-btn-over .x-btn-split-bottom{background-image:url('../../resources/themes/images/access/button/s-arrow-bo.gif')}.x-btn-default-small{border-color:#06070a}.x-btn-default-small{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-image:none;background-color:#2a3142;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#2a3142),color-stop(48%,#252c3b),color-stop(52%,#13171f),color-stop(100%,#171b25));background-image:-webkit-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:-moz-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:-o-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:-ms-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25)}.x-nlg .x-btn-default-small-mc{background-image:url('../../resources/themes/images/access/btn/btn-default-small-bg.gif');background-color:#2a3142}.x-nbr .x-btn-default-small{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-btn-default-small-tl,.x-nbr .x-btn-default-small-bl,.x-nbr .x-btn-default-small-tr,.x-nbr .x-btn-default-small-br,.x-nbr .x-btn-default-small-tc,.x-nbr .x-btn-default-small-bc,.x-nbr .x-btn-default-small-ml,.x-nbr .x-btn-default-small-mr{zoom:1;background-image:url('../../resources/themes/images/access/btn/btn-default-small-corners.gif')}.x-nbr .x-btn-default-small-ml,.x-nbr .x-btn-default-small-mr{zoom:1;background-image:url('../../resources/themes/images/access/btn/btn-default-small-sides.gif');background-position:0 0}.x-nbr .x-btn-default-small-mc{padding:0}.x-strict .x-ie7 .x-btn-default-small-tl,.x-strict .x-ie7 .x-btn-default-small-bl{position:relative;right:0}.x-btn-default-small .x-btn-inner{font-size:14px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:white;background-repeat:no-repeat;padding:0 4px}.x-btn-default-small-icon button,.x-btn-default-small-icon a,.x-btn-default-small-icon .x-btn-inner,.x-btn-default-small-noicon button,.x-btn-default-small-noicon a,.x-btn-default-small-noicon .x-btn-inner{height:16px;line-height:16px}.x-btn-default-small-icon button,.x-btn-default-small-icon a{padding:0}.x-btn-default-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-small-icon .x-btn-icon{width:16px;height:16px;top:0;left:0;bottom:0;right:0}.x-btn-default-small-icon-text-left button,.x-btn-default-small-icon-text-left a{height:16px}.x-btn-default-small-icon-text-left .x-btn-inner{height:16px;line-height:16px;padding-left:20px}.x-btn-default-small-icon-text-left .x-btn-icon{width:16px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-small-icon-text-left .x-btn-icon{height:16px}.x-btn-default-small-icon-text-right button,.x-btn-default-small-icon-text-right a{height:16px}.x-btn-default-small-icon-text-right .x-btn-inner{height:16px;line-height:16px;padding-right:20px!important}.x-btn-default-small-icon-text-right .x-btn-icon{width:16px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-small-icon-text-right .x-btn-icon{height:16px}.x-btn-default-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-small-icon-text-top .x-btn-icon{width:auto;height:16px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon{width:16px}.x-btn-default-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-small-icon-text-bottom .x-btn-icon{width:auto;height:16px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon{width:16px}.x-btn-default-small-over{border-color:#947518;background-image:none;background-color:#ed9200;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ed9200),color-stop(48%,#e29200),color-stop(52%,#9d7921),color-stop(100%,#ab821b));background-image:-webkit-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-moz-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-o-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-ms-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b)}.x-btn-default-small-focus{border-color:#947518;background-image:none;background-color:#ed9200;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ed9200),color-stop(48%,#e29200),color-stop(52%,#9d7921),color-stop(100%,#ab821b));background-image:-webkit-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-moz-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-o-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-ms-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b)}.x-btn-default-small-menu-active,.x-btn-default-small-pressed{border-color:#c9750f;background-image:none;background-color:#da7b19;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#da7b19),color-stop(48%,#e17b1d),color-stop(52%,#db6800),color-stop(100%,#e66e00));background-image:-webkit-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:-moz-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:-o-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:-ms-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00)}.x-btn-default-small-disabled{border-color:#565656;background-image:none;background-color:#6b6b6b;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#6b6b6b),color-stop(48%,#656565),color-stop(52%,#4e4e4e),color-stop(100%,#535353));background-image:-webkit-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:-moz-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:-o-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:-ms-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353)}.x-nbr .x-btn-default-small-over .x-frame-tl,.x-nbr .x-btn-default-small-over .x-frame-bl,.x-nbr .x-btn-default-small-over .x-frame-tr,.x-nbr .x-btn-default-small-over .x-frame-br,.x-nbr .x-btn-default-small-over .x-frame-tc,.x-nbr .x-btn-default-small-over .x-frame-bc{background-image:url('../../resources/themes/images/access/btn/btn-default-small-over-corners.gif')}.x-nbr .x-btn-default-small-over .x-frame-ml,.x-nbr .x-btn-default-small-over .x-frame-mr{background-image:url('../../resources/themes/images/access/btn/btn-default-small-over-sides.gif')}.x-nbr .x-btn-default-small-over .x-frame-mc{background-color:#ed9200;background-image:url('../../resources/themes/images/access/btn/btn-default-small-over-bg.gif')}.x-nbr .x-btn-default-small-focus .x-frame-tl,.x-nbr .x-btn-default-small-focus .x-frame-bl,.x-nbr .x-btn-default-small-focus .x-frame-tr,.x-nbr .x-btn-default-small-focus .x-frame-br,.x-nbr .x-btn-default-small-focus .x-frame-tc,.x-nbr .x-btn-default-small-focus .x-frame-bc{background-image:url('../../resources/themes/images/access/btn/btn-default-small-focus-corners.gif')}.x-nbr .x-btn-default-small-focus .x-frame-ml,.x-nbr .x-btn-default-small-focus .x-frame-mr{background-image:url('../../resources/themes/images/access/btn/btn-default-small-focus-sides.gif')}.x-nbr .x-btn-default-small-focus .x-frame-mc{background-color:#ed9200;background-image:url('../../resources/themes/images/access/btn/btn-default-small-focus-bg.gif')}.x-nbr .x-btn-default-small-menu-active .x-frame-tl,.x-nbr .x-btn-default-small-menu-active .x-frame-bl,.x-nbr .x-btn-default-small-menu-active .x-frame-tr,.x-nbr .x-btn-default-small-menu-active .x-frame-br,.x-nbr .x-btn-default-small-menu-active .x-frame-tc,.x-nbr .x-btn-default-small-menu-active .x-frame-bc,.x-nbr .x-btn-default-small-pressed .x-frame-tl,.x-nbr .x-btn-default-small-pressed .x-frame-bl,.x-nbr .x-btn-default-small-pressed .x-frame-tr,.x-nbr .x-btn-default-small-pressed .x-frame-br,.x-nbr .x-btn-default-small-pressed .x-frame-tc,.x-nbr .x-btn-default-small-pressed .x-frame-bc{background-image:url('../../resources/themes/images/access/btn/btn-default-small-pressed-corners.gif')}.x-nbr .x-btn-default-small-menu-active .x-frame-ml,.x-nbr .x-btn-default-small-menu-active .x-frame-mr,.x-nbr .x-btn-default-small-pressed .x-frame-ml,.x-nbr .x-btn-default-small-pressed .x-frame-mr{background-image:url('../../resources/themes/images/access/btn/btn-default-small-pressed-sides.gif')}.x-nbr .x-btn-default-small-menu-active .x-frame-mc,.x-nbr .x-btn-default-small-pressed .x-frame-mc{background-color:#da7b19;background-image:url('../../resources/themes/images/access/btn/btn-default-small-pressed-bg.gif')}.x-nbr .x-btn-default-small-disabled .x-frame-tl,.x-nbr .x-btn-default-small-disabled .x-frame-bl,.x-nbr .x-btn-default-small-disabled .x-frame-tr,.x-nbr .x-btn-default-small-disabled .x-frame-br,.x-nbr .x-btn-default-small-disabled .x-frame-tc,.x-nbr .x-btn-default-small-disabled .x-frame-bc{background-image:url('../../resources/themes/images/access/btn/btn-default-small-disabled-corners.gif')}.x-nbr .x-btn-default-small-disabled .x-frame-ml,.x-nbr .x-btn-default-small-disabled .x-frame-mr{background-image:url('../../resources/themes/images/access/btn/btn-default-small-disabled-sides.gif')}.x-nbr .x-btn-default-small-disabled .x-frame-mc{background-color:#6b6b6b;background-image:url('../../resources/themes/images/access/btn/btn-default-small-disabled-bg.gif')}.x-nlg .x-btn-default-small{background-repeat:repeat-x;background-image:url('../../resources/themes/images/access/btn/btn-default-small-bg.gif')}.x-nlg .x-btn-default-small-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/access/btn/btn-default-small-over-bg.gif')}.x-nlg .x-btn-default-small-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/access/btn/btn-default-small-focus-bg.gif')}.x-nlg .x-btn-default-small-menu-active,.x-nlg .x-btn-default-small-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/access/btn/btn-default-small-pressed-bg.gif')}.x-nlg .x-btn-default-small-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/access/btn/btn-default-small-disabled-bg.gif')}.x-btn-default-medium{border-color:#06070a}.x-btn-default-medium{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:#2a3142;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#2a3142),color-stop(48%,#252c3b),color-stop(52%,#13171f),color-stop(100%,#171b25));background-image:-webkit-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:-moz-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:-o-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:-ms-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25)}.x-nlg .x-btn-default-medium-mc{background-image:url('../../resources/themes/images/access/btn/btn-default-medium-bg.gif');background-color:#2a3142}.x-nbr .x-btn-default-medium{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-btn-default-medium-tl,.x-nbr .x-btn-default-medium-bl,.x-nbr .x-btn-default-medium-tr,.x-nbr .x-btn-default-medium-br,.x-nbr .x-btn-default-medium-tc,.x-nbr .x-btn-default-medium-bc,.x-nbr .x-btn-default-medium-ml,.x-nbr .x-btn-default-medium-mr{zoom:1;background-image:url('../../resources/themes/images/access/btn/btn-default-medium-corners.gif')}.x-nbr .x-btn-default-medium-ml,.x-nbr .x-btn-default-medium-mr{zoom:1;background-image:url('../../resources/themes/images/access/btn/btn-default-medium-sides.gif');background-position:0 0}.x-nbr .x-btn-default-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-medium-tl,.x-strict .x-ie7 .x-btn-default-medium-bl{position:relative;right:0}.x-btn-default-medium .x-btn-inner{font-size:14px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:white;background-repeat:no-repeat;padding:0 3px}.x-btn-default-medium-icon button,.x-btn-default-medium-icon a,.x-btn-default-medium-icon .x-btn-inner,.x-btn-default-medium-noicon button,.x-btn-default-medium-noicon a,.x-btn-default-medium-noicon .x-btn-inner{height:24px;line-height:24px}.x-btn-default-medium-icon button,.x-btn-default-medium-icon a{padding:0}.x-btn-default-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-medium-icon .x-btn-icon{width:24px;height:24px;top:0;left:0;bottom:0;right:0}.x-btn-default-medium-icon-text-left button,.x-btn-default-medium-icon-text-left a{height:24px}.x-btn-default-medium-icon-text-left .x-btn-inner{height:24px;line-height:24px;padding-left:28px}.x-btn-default-medium-icon-text-left .x-btn-icon{width:24px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon{height:24px}.x-btn-default-medium-icon-text-right button,.x-btn-default-medium-icon-text-right a{height:24px}.x-btn-default-medium-icon-text-right .x-btn-inner{height:24px;line-height:24px;padding-right:28px!important}.x-btn-default-medium-icon-text-right .x-btn-icon{width:24px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon{height:24px}.x-btn-default-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-medium-icon-text-top .x-btn-icon{width:auto;height:24px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon{width:24px}.x-btn-default-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-medium-icon-text-bottom .x-btn-icon{width:auto;height:24px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon{width:24px}.x-btn-default-medium-over{border-color:#947518;background-image:none;background-color:#ed9200;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ed9200),color-stop(48%,#e29200),color-stop(52%,#9d7921),color-stop(100%,#ab821b));background-image:-webkit-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-moz-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-o-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-ms-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b)}.x-btn-default-medium-focus{border-color:#947518;background-image:none;background-color:#ed9200;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ed9200),color-stop(48%,#e29200),color-stop(52%,#9d7921),color-stop(100%,#ab821b));background-image:-webkit-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-moz-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-o-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-ms-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b)}.x-btn-default-medium-menu-active,.x-btn-default-medium-pressed{border-color:#c9750f;background-image:none;background-color:#da7b19;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#da7b19),color-stop(48%,#e17b1d),color-stop(52%,#db6800),color-stop(100%,#e66e00));background-image:-webkit-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:-moz-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:-o-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:-ms-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00)}.x-btn-default-medium-disabled{border-color:#565656;background-image:none;background-color:#6b6b6b;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#6b6b6b),color-stop(48%,#656565),color-stop(52%,#4e4e4e),color-stop(100%,#535353));background-image:-webkit-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:-moz-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:-o-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:-ms-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353)}.x-nbr .x-btn-default-medium-over .x-frame-tl,.x-nbr .x-btn-default-medium-over .x-frame-bl,.x-nbr .x-btn-default-medium-over .x-frame-tr,.x-nbr .x-btn-default-medium-over .x-frame-br,.x-nbr .x-btn-default-medium-over .x-frame-tc,.x-nbr .x-btn-default-medium-over .x-frame-bc{background-image:url('../../resources/themes/images/access/btn/btn-default-medium-over-corners.gif')}.x-nbr .x-btn-default-medium-over .x-frame-ml,.x-nbr .x-btn-default-medium-over .x-frame-mr{background-image:url('../../resources/themes/images/access/btn/btn-default-medium-over-sides.gif')}.x-nbr .x-btn-default-medium-over .x-frame-mc{background-color:#ed9200;background-image:url('../../resources/themes/images/access/btn/btn-default-medium-over-bg.gif')}.x-nbr .x-btn-default-medium-focus .x-frame-tl,.x-nbr .x-btn-default-medium-focus .x-frame-bl,.x-nbr .x-btn-default-medium-focus .x-frame-tr,.x-nbr .x-btn-default-medium-focus .x-frame-br,.x-nbr .x-btn-default-medium-focus .x-frame-tc,.x-nbr .x-btn-default-medium-focus .x-frame-bc{background-image:url('../../resources/themes/images/access/btn/btn-default-medium-focus-corners.gif')}.x-nbr .x-btn-default-medium-focus .x-frame-ml,.x-nbr .x-btn-default-medium-focus .x-frame-mr{background-image:url('../../resources/themes/images/access/btn/btn-default-medium-focus-sides.gif')}.x-nbr .x-btn-default-medium-focus .x-frame-mc{background-color:#ed9200;background-image:url('../../resources/themes/images/access/btn/btn-default-medium-focus-bg.gif')}.x-nbr .x-btn-default-medium-menu-active .x-frame-tl,.x-nbr .x-btn-default-medium-menu-active .x-frame-bl,.x-nbr .x-btn-default-medium-menu-active .x-frame-tr,.x-nbr .x-btn-default-medium-menu-active .x-frame-br,.x-nbr .x-btn-default-medium-menu-active .x-frame-tc,.x-nbr .x-btn-default-medium-menu-active .x-frame-bc,.x-nbr .x-btn-default-medium-pressed .x-frame-tl,.x-nbr .x-btn-default-medium-pressed .x-frame-bl,.x-nbr .x-btn-default-medium-pressed .x-frame-tr,.x-nbr .x-btn-default-medium-pressed .x-frame-br,.x-nbr .x-btn-default-medium-pressed .x-frame-tc,.x-nbr .x-btn-default-medium-pressed .x-frame-bc{background-image:url('../../resources/themes/images/access/btn/btn-default-medium-pressed-corners.gif')}.x-nbr .x-btn-default-medium-menu-active .x-frame-ml,.x-nbr .x-btn-default-medium-menu-active .x-frame-mr,.x-nbr .x-btn-default-medium-pressed .x-frame-ml,.x-nbr .x-btn-default-medium-pressed .x-frame-mr{background-image:url('../../resources/themes/images/access/btn/btn-default-medium-pressed-sides.gif')}.x-nbr .x-btn-default-medium-menu-active .x-frame-mc,.x-nbr .x-btn-default-medium-pressed .x-frame-mc{background-color:#da7b19;background-image:url('../../resources/themes/images/access/btn/btn-default-medium-pressed-bg.gif')}.x-nbr .x-btn-default-medium-disabled .x-frame-tl,.x-nbr .x-btn-default-medium-disabled .x-frame-bl,.x-nbr .x-btn-default-medium-disabled .x-frame-tr,.x-nbr .x-btn-default-medium-disabled .x-frame-br,.x-nbr .x-btn-default-medium-disabled .x-frame-tc,.x-nbr .x-btn-default-medium-disabled .x-frame-bc{background-image:url('../../resources/themes/images/access/btn/btn-default-medium-disabled-corners.gif')}.x-nbr .x-btn-default-medium-disabled .x-frame-ml,.x-nbr .x-btn-default-medium-disabled .x-frame-mr{background-image:url('../../resources/themes/images/access/btn/btn-default-medium-disabled-sides.gif')}.x-nbr .x-btn-default-medium-disabled .x-frame-mc{background-color:#6b6b6b;background-image:url('../../resources/themes/images/access/btn/btn-default-medium-disabled-bg.gif')}.x-nlg .x-btn-default-medium{background-repeat:repeat-x;background-image:url('../../resources/themes/images/access/btn/btn-default-medium-bg.gif')}.x-nlg .x-btn-default-medium-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/access/btn/btn-default-medium-over-bg.gif')}.x-nlg .x-btn-default-medium-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/access/btn/btn-default-medium-focus-bg.gif')}.x-nlg .x-btn-default-medium-menu-active,.x-nlg .x-btn-default-medium-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/access/btn/btn-default-medium-pressed-bg.gif')}.x-nlg .x-btn-default-medium-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/access/btn/btn-default-medium-disabled-bg.gif')}.x-btn-default-large{border-color:#06070a}.x-btn-default-large{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:#2a3142;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#2a3142),color-stop(48%,#252c3b),color-stop(52%,#13171f),color-stop(100%,#171b25));background-image:-webkit-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:-moz-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:-o-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:-ms-linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25);background-image:linear-gradient(top,#2a3142,#252c3b 48%,#13171f 52%,#171b25)}.x-nlg .x-btn-default-large-mc{background-image:url('../../resources/themes/images/access/btn/btn-default-large-bg.gif');background-color:#2a3142}.x-nbr .x-btn-default-large{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-btn-default-large-tl,.x-nbr .x-btn-default-large-bl,.x-nbr .x-btn-default-large-tr,.x-nbr .x-btn-default-large-br,.x-nbr .x-btn-default-large-tc,.x-nbr .x-btn-default-large-bc,.x-nbr .x-btn-default-large-ml,.x-nbr .x-btn-default-large-mr{zoom:1;background-image:url('../../resources/themes/images/access/btn/btn-default-large-corners.gif')}.x-nbr .x-btn-default-large-ml,.x-nbr .x-btn-default-large-mr{zoom:1;background-image:url('../../resources/themes/images/access/btn/btn-default-large-sides.gif');background-position:0 0}.x-nbr .x-btn-default-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-large-tl,.x-strict .x-ie7 .x-btn-default-large-bl{position:relative;right:0}.x-btn-default-large .x-btn-inner{font-size:14px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:white;background-repeat:no-repeat;padding:0 3px}.x-btn-default-large-icon button,.x-btn-default-large-icon a,.x-btn-default-large-icon .x-btn-inner,.x-btn-default-large-noicon button,.x-btn-default-large-noicon a,.x-btn-default-large-noicon .x-btn-inner{height:32px;line-height:32px}.x-btn-default-large-icon button,.x-btn-default-large-icon a{padding:0}.x-btn-default-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-large-icon .x-btn-icon{width:32px;height:32px;top:0;left:0;bottom:0;right:0}.x-btn-default-large-icon-text-left button,.x-btn-default-large-icon-text-left a{height:32px}.x-btn-default-large-icon-text-left .x-btn-inner{height:32px;line-height:32px;padding-left:36px}.x-btn-default-large-icon-text-left .x-btn-icon{width:32px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-large-icon-text-left .x-btn-icon{height:32px}.x-btn-default-large-icon-text-right button,.x-btn-default-large-icon-text-right a{height:32px}.x-btn-default-large-icon-text-right .x-btn-inner{height:32px;line-height:32px;padding-right:36px!important}.x-btn-default-large-icon-text-right .x-btn-icon{width:32px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-large-icon-text-right .x-btn-icon{height:32px}.x-btn-default-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-large-icon-text-top .x-btn-icon{width:auto;height:32px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon{width:32px}.x-btn-default-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-large-icon-text-bottom .x-btn-icon{width:auto;height:32px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon{width:32px}.x-btn-default-large-over{border-color:#947518;background-image:none;background-color:#ed9200;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ed9200),color-stop(48%,#e29200),color-stop(52%,#9d7921),color-stop(100%,#ab821b));background-image:-webkit-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-moz-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-o-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-ms-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b)}.x-btn-default-large-focus{border-color:#947518;background-image:none;background-color:#ed9200;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ed9200),color-stop(48%,#e29200),color-stop(52%,#9d7921),color-stop(100%,#ab821b));background-image:-webkit-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-moz-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-o-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:-ms-linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b);background-image:linear-gradient(top,#ed9200,#e29200 48%,#9d7921 52%,#ab821b)}.x-btn-default-large-menu-active,.x-btn-default-large-pressed{border-color:#c9750f;background-image:none;background-color:#da7b19;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#da7b19),color-stop(48%,#e17b1d),color-stop(52%,#db6800),color-stop(100%,#e66e00));background-image:-webkit-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:-moz-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:-o-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:-ms-linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00);background-image:linear-gradient(top,#da7b19,#e17b1d 48%,#db6800 52%,#e66e00)}.x-btn-default-large-disabled{border-color:#565656;background-image:none;background-color:#6b6b6b;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#6b6b6b),color-stop(48%,#656565),color-stop(52%,#4e4e4e),color-stop(100%,#535353));background-image:-webkit-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:-moz-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:-o-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:-ms-linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353);background-image:linear-gradient(top,#6b6b6b,#656565 48%,#4e4e4e 52%,#535353)}.x-nbr .x-btn-default-large-over .x-frame-tl,.x-nbr .x-btn-default-large-over .x-frame-bl,.x-nbr .x-btn-default-large-over .x-frame-tr,.x-nbr .x-btn-default-large-over .x-frame-br,.x-nbr .x-btn-default-large-over .x-frame-tc,.x-nbr .x-btn-default-large-over .x-frame-bc{background-image:url('../../resources/themes/images/access/btn/btn-default-large-over-corners.gif')}.x-nbr .x-btn-default-large-over .x-frame-ml,.x-nbr .x-btn-default-large-over .x-frame-mr{background-image:url('../../resources/themes/images/access/btn/btn-default-large-over-sides.gif')}.x-nbr .x-btn-default-large-over .x-frame-mc{background-color:#ed9200;background-image:url('../../resources/themes/images/access/btn/btn-default-large-over-bg.gif')}.x-nbr .x-btn-default-large-focus .x-frame-tl,.x-nbr .x-btn-default-large-focus .x-frame-bl,.x-nbr .x-btn-default-large-focus .x-frame-tr,.x-nbr .x-btn-default-large-focus .x-frame-br,.x-nbr .x-btn-default-large-focus .x-frame-tc,.x-nbr .x-btn-default-large-focus .x-frame-bc{background-image:url('../../resources/themes/images/access/btn/btn-default-large-focus-corners.gif')}.x-nbr .x-btn-default-large-focus .x-frame-ml,.x-nbr .x-btn-default-large-focus .x-frame-mr{background-image:url('../../resources/themes/images/access/btn/btn-default-large-focus-sides.gif')}.x-nbr .x-btn-default-large-focus .x-frame-mc{background-color:#ed9200;background-image:url('../../resources/themes/images/access/btn/btn-default-large-focus-bg.gif')}.x-nbr .x-btn-default-large-menu-active .x-frame-tl,.x-nbr .x-btn-default-large-menu-active .x-frame-bl,.x-nbr .x-btn-default-large-menu-active .x-frame-tr,.x-nbr .x-btn-default-large-menu-active .x-frame-br,.x-nbr .x-btn-default-large-menu-active .x-frame-tc,.x-nbr .x-btn-default-large-menu-active .x-frame-bc,.x-nbr .x-btn-default-large-pressed .x-frame-tl,.x-nbr .x-btn-default-large-pressed .x-frame-bl,.x-nbr .x-btn-default-large-pressed .x-frame-tr,.x-nbr .x-btn-default-large-pressed .x-frame-br,.x-nbr .x-btn-default-large-pressed .x-frame-tc,.x-nbr .x-btn-default-large-pressed .x-frame-bc{background-image:url('../../resources/themes/images/access/btn/btn-default-large-pressed-corners.gif')}.x-nbr .x-btn-default-large-menu-active .x-frame-ml,.x-nbr .x-btn-default-large-menu-active .x-frame-mr,.x-nbr .x-btn-default-large-pressed .x-frame-ml,.x-nbr .x-btn-default-large-pressed .x-frame-mr{background-image:url('../../resources/themes/images/access/btn/btn-default-large-pressed-sides.gif')}.x-nbr .x-btn-default-large-menu-active .x-frame-mc,.x-nbr .x-btn-default-large-pressed .x-frame-mc{background-color:#da7b19;background-image:url('../../resources/themes/images/access/btn/btn-default-large-pressed-bg.gif')}.x-nbr .x-btn-default-large-disabled .x-frame-tl,.x-nbr .x-btn-default-large-disabled .x-frame-bl,.x-nbr .x-btn-default-large-disabled .x-frame-tr,.x-nbr .x-btn-default-large-disabled .x-frame-br,.x-nbr .x-btn-default-large-disabled .x-frame-tc,.x-nbr .x-btn-default-large-disabled .x-frame-bc{background-image:url('../../resources/themes/images/access/btn/btn-default-large-disabled-corners.gif')}.x-nbr .x-btn-default-large-disabled .x-frame-ml,.x-nbr .x-btn-default-large-disabled .x-frame-mr{background-image:url('../../resources/themes/images/access/btn/btn-default-large-disabled-sides.gif')}.x-nbr .x-btn-default-large-disabled .x-frame-mc{background-color:#6b6b6b;background-image:url('../../resources/themes/images/access/btn/btn-default-large-disabled-bg.gif')}.x-nlg .x-btn-default-large{background-repeat:repeat-x;background-image:url('../../resources/themes/images/access/btn/btn-default-large-bg.gif')}.x-nlg .x-btn-default-large-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/access/btn/btn-default-large-over-bg.gif')}.x-nlg .x-btn-default-large-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/access/btn/btn-default-large-focus-bg.gif')}.x-nlg .x-btn-default-large-menu-active,.x-nlg .x-btn-default-large-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/access/btn/btn-default-large-pressed-bg.gif')}.x-nlg .x-btn-default-large-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/access/btn/btn-default-large-disabled-bg.gif')}.x-btn-default-toolbar-small{border-color:transparent}.x-btn-default-toolbar-small{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:transparent}.x-nlg .x-btn-default-toolbar-small-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-small{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-btn-default-toolbar-small-tl,.x-nbr .x-btn-default-toolbar-small-bl,.x-nbr .x-btn-default-toolbar-small-tr,.x-nbr .x-btn-default-toolbar-small-br,.x-nbr .x-btn-default-toolbar-small-tc,.x-nbr .x-btn-default-toolbar-small-bc,.x-nbr .x-btn-default-toolbar-small-ml,.x-nbr .x-btn-default-toolbar-small-mr{zoom:1}.x-nbr .x-btn-default-toolbar-small-ml,.x-nbr .x-btn-default-toolbar-small-mr{zoom:1}.x-nbr .x-btn-default-toolbar-small-mc{padding:0}.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,.x-strict .x-ie7 .x-btn-default-toolbar-small-bl{position:relative;right:0}.x-btn-default-toolbar-small .x-btn-inner{font-size:14px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:white;background-repeat:no-repeat;padding:0 4px}.x-btn-default-toolbar-small-icon button,.x-btn-default-toolbar-small-icon a,.x-btn-default-toolbar-small-icon .x-btn-inner,.x-btn-default-toolbar-small-noicon button,.x-btn-default-toolbar-small-noicon a,.x-btn-default-toolbar-small-noicon .x-btn-inner{height:16px;line-height:16px}.x-btn-default-toolbar-small-icon button,.x-btn-default-toolbar-small-icon a{padding:0}.x-btn-default-toolbar-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-toolbar-small-icon .x-btn-icon{width:16px;height:16px;top:0;left:0;bottom:0;right:0}.x-btn-default-toolbar-small-icon-text-left button,.x-btn-default-toolbar-small-icon-text-left a{height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-inner{height:16px;line-height:16px;padding-left:20px}.x-btn-default-toolbar-small-icon-text-left .x-btn-icon{width:16px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon{height:16px}.x-btn-default-toolbar-small-icon-text-right button,.x-btn-default-toolbar-small-icon-text-right a{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-btn-inner{height:16px;line-height:16px;padding-right:20px!important}.x-btn-default-toolbar-small-icon-text-right .x-btn-icon{width:16px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon{height:16px}.x-btn-default-toolbar-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-toolbar-small-icon-text-top .x-btn-icon{width:auto;height:16px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon{width:16px}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon{width:auto;height:16px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon{width:16px}.x-btn-default-toolbar-small-over{border-color:#d97e27;background-image:none;background-color:#ed9200}.x-btn-default-toolbar-small-focus{border-color:#d97e27;background-image:none;background-color:#ed9200}.x-btn-default-toolbar-small-menu-active,.x-btn-default-toolbar-small-pressed{border-color:#c86e19;background-image:none;background-color:#db7b1f}.x-btn-default-toolbar-small-disabled{background-image:none;background-color:transparent}.x-nbr .x-btn-default-toolbar-small-over .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-over .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-over .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-over .x-frame-br,.x-nbr .x-btn-default-toolbar-small-over .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-over .x-frame-bc{background-image:url('../../resources/themes/images/access/btn/btn-default-toolbar-small-over-corners.gif')}.x-nbr .x-btn-default-toolbar-small-over .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-over .x-frame-mr{background-image:url('../../resources/themes/images/access/btn/btn-default-toolbar-small-over-sides.gif')}.x-nbr .x-btn-default-toolbar-small-over .x-frame-mc{background-color:#ed9200}.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-br,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-bc{background-image:url('../../resources/themes/images/access/btn/btn-default-toolbar-small-focus-corners.gif')}.x-nbr .x-btn-default-toolbar-small-focus .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-mr{background-image:url('../../resources/themes/images/access/btn/btn-default-toolbar-small-focus-sides.gif')}.x-nbr .x-btn-default-toolbar-small-focus .x-frame-mc{background-color:#ed9200}.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-br,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bc,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-br,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bc{background-image:url('../../resources/themes/images/access/btn/btn-default-toolbar-small-pressed-corners.gif')}.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mr,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mr{background-image:url('../../resources/themes/images/access/btn/btn-default-toolbar-small-pressed-sides.gif')}.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mc,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mc{background-color:#db7b1f}.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-br,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bc{background-image:url('../../resources/themes/images/access/btn/btn-default-toolbar-small-disabled-corners.gif')}.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mr{background-image:url('../../resources/themes/images/access/btn/btn-default-toolbar-small-disabled-sides.gif')}.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mc{background-color:transparent}.x-btn-default-toolbar-medium{border-color:transparent}.x-btn-default-toolbar-medium{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-nlg .x-btn-default-toolbar-medium-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-medium{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-btn-default-toolbar-medium-tl,.x-nbr .x-btn-default-toolbar-medium-bl,.x-nbr .x-btn-default-toolbar-medium-tr,.x-nbr .x-btn-default-toolbar-medium-br,.x-nbr .x-btn-default-toolbar-medium-tc,.x-nbr .x-btn-default-toolbar-medium-bc,.x-nbr .x-btn-default-toolbar-medium-ml,.x-nbr .x-btn-default-toolbar-medium-mr{zoom:1}.x-nbr .x-btn-default-toolbar-medium-ml,.x-nbr .x-btn-default-toolbar-medium-mr{zoom:1}.x-nbr .x-btn-default-toolbar-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl{position:relative;right:0}.x-btn-default-toolbar-medium .x-btn-inner{font-size:14px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:white;background-repeat:no-repeat;padding:0 3px}.x-btn-default-toolbar-medium-icon button,.x-btn-default-toolbar-medium-icon a,.x-btn-default-toolbar-medium-icon .x-btn-inner,.x-btn-default-toolbar-medium-noicon button,.x-btn-default-toolbar-medium-noicon a,.x-btn-default-toolbar-medium-noicon .x-btn-inner{height:24px;line-height:24px}.x-btn-default-toolbar-medium-icon button,.x-btn-default-toolbar-medium-icon a{padding:0}.x-btn-default-toolbar-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-toolbar-medium-icon .x-btn-icon{width:24px;height:24px;top:0;left:0;bottom:0;right:0}.x-btn-default-toolbar-medium-icon-text-left button,.x-btn-default-toolbar-medium-icon-text-left a{height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner{height:24px;line-height:24px;padding-left:28px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon{width:24px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon{height:24px}.x-btn-default-toolbar-medium-icon-text-right button,.x-btn-default-toolbar-medium-icon-text-right a{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner{height:24px;line-height:24px;padding-right:28px!important}.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon{width:24px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon{height:24px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon{width:auto;height:24px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon{width:24px}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon{width:auto;height:24px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon{width:24px}.x-btn-default-toolbar-medium-over{border-color:#d97e27;background-image:none;background-color:#ed9200}.x-btn-default-toolbar-medium-focus{border-color:#d97e27;background-image:none;background-color:#ed9200}.x-btn-default-toolbar-medium-menu-active,.x-btn-default-toolbar-medium-pressed{border-color:#c86e19;background-image:none;background-color:#db7b1f}.x-btn-default-toolbar-medium-disabled{background-image:none;background-color:transparent}.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-bc{background-image:url('../../resources/themes/images/access/btn/btn-default-toolbar-medium-over-corners.gif')}.x-nbr .x-btn-default-toolbar-medium-over .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-mr{background-image:url('../../resources/themes/images/access/btn/btn-default-toolbar-medium-over-sides.gif')}.x-nbr .x-btn-default-toolbar-medium-over .x-frame-mc{background-color:#ed9200}.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bc{background-image:url('../../resources/themes/images/access/btn/btn-default-toolbar-medium-focus-corners.gif')}.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mr{background-image:url('../../resources/themes/images/access/btn/btn-default-toolbar-medium-focus-sides.gif')}.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mc{background-color:#ed9200}.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bc,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bc{background-image:url('../../resources/themes/images/access/btn/btn-default-toolbar-medium-pressed-corners.gif')}.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mr,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mr{background-image:url('../../resources/themes/images/access/btn/btn-default-toolbar-medium-pressed-sides.gif')}.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mc,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mc{background-color:#db7b1f}.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bc{background-image:url('../../resources/themes/images/access/btn/btn-default-toolbar-medium-disabled-corners.gif')}.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mr{background-image:url('../../resources/themes/images/access/btn/btn-default-toolbar-medium-disabled-sides.gif')}.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mc{background-color:transparent}.x-btn-default-toolbar-large{border-color:transparent}.x-btn-default-toolbar-large{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-nlg .x-btn-default-toolbar-large-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-large{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-btn-default-toolbar-large-tl,.x-nbr .x-btn-default-toolbar-large-bl,.x-nbr .x-btn-default-toolbar-large-tr,.x-nbr .x-btn-default-toolbar-large-br,.x-nbr .x-btn-default-toolbar-large-tc,.x-nbr .x-btn-default-toolbar-large-bc,.x-nbr .x-btn-default-toolbar-large-ml,.x-nbr .x-btn-default-toolbar-large-mr{zoom:1}.x-nbr .x-btn-default-toolbar-large-ml,.x-nbr .x-btn-default-toolbar-large-mr{zoom:1}.x-nbr .x-btn-default-toolbar-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,.x-strict .x-ie7 .x-btn-default-toolbar-large-bl{position:relative;right:0}.x-btn-default-toolbar-large .x-btn-inner{font-size:14px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:white;background-repeat:no-repeat;padding:0 3px}.x-btn-default-toolbar-large-icon button,.x-btn-default-toolbar-large-icon a,.x-btn-default-toolbar-large-icon .x-btn-inner,.x-btn-default-toolbar-large-noicon button,.x-btn-default-toolbar-large-noicon a,.x-btn-default-toolbar-large-noicon .x-btn-inner{height:32px;line-height:32px}.x-btn-default-toolbar-large-icon button,.x-btn-default-toolbar-large-icon a{padding:0}.x-btn-default-toolbar-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-toolbar-large-icon .x-btn-icon{width:32px;height:32px;top:0;left:0;bottom:0;right:0}.x-btn-default-toolbar-large-icon-text-left button,.x-btn-default-toolbar-large-icon-text-left a{height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-inner{height:32px;line-height:32px;padding-left:36px}.x-btn-default-toolbar-large-icon-text-left .x-btn-icon{width:32px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon{height:32px}.x-btn-default-toolbar-large-icon-text-right button,.x-btn-default-toolbar-large-icon-text-right a{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-btn-inner{height:32px;line-height:32px;padding-right:36px!important}.x-btn-default-toolbar-large-icon-text-right .x-btn-icon{width:32px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon{height:32px}.x-btn-default-toolbar-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-toolbar-large-icon-text-top .x-btn-icon{width:auto;height:32px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon{width:32px}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon{width:auto;height:32px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon{width:32px}.x-btn-default-toolbar-large-over{border-color:#d97e27;background-image:none;background-color:#ed9200}.x-btn-default-toolbar-large-focus{border-color:#d97e27;background-image:none;background-color:#ed9200}.x-btn-default-toolbar-large-menu-active,.x-btn-default-toolbar-large-pressed{border-color:#c86e19;background-image:none;background-color:#db7b1f}.x-btn-default-toolbar-large-disabled{background-image:none;background-color:transparent}.x-nbr .x-btn-default-toolbar-large-over .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-over .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-over .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-over .x-frame-br,.x-nbr .x-btn-default-toolbar-large-over .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-over .x-frame-bc{background-image:url('../../resources/themes/images/access/btn/btn-default-toolbar-large-over-corners.gif')}.x-nbr .x-btn-default-toolbar-large-over .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-over .x-frame-mr{background-image:url('../../resources/themes/images/access/btn/btn-default-toolbar-large-over-sides.gif')}.x-nbr .x-btn-default-toolbar-large-over .x-frame-mc{background-color:#ed9200}.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-br,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-bc{background-image:url('../../resources/themes/images/access/btn/btn-default-toolbar-large-focus-corners.gif')}.x-nbr .x-btn-default-toolbar-large-focus .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-mr{background-image:url('../../resources/themes/images/access/btn/btn-default-toolbar-large-focus-sides.gif')}.x-nbr .x-btn-default-toolbar-large-focus .x-frame-mc{background-color:#ed9200}.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-br,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bc,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-br,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bc{background-image:url('../../resources/themes/images/access/btn/btn-default-toolbar-large-pressed-corners.gif')}.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mr,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mr{background-image:url('../../resources/themes/images/access/btn/btn-default-toolbar-large-pressed-sides.gif')}.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mc,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mc{background-color:#db7b1f}.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-br,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bc{background-image:url('../../resources/themes/images/access/btn/btn-default-toolbar-large-disabled-corners.gif')}.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mr{background-image:url('../../resources/themes/images/access/btn/btn-default-toolbar-large-disabled-sides.gif')}.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mc{background-color:transparent}.x-btn-default-toolbar-small-disabled,.x-btn-default-toolbar-medium-disabled,.x-btn-default-toolbar-large-disabled{border-color:transparent;background-image:none;background:transparent}.x-btn-group{position:relative;overflow:hidden}.x-btn-group-body{position:relative;zoom:1;padding:0 1px}.x-btn-group-body .x-table-layout-cell{vertical-align:top}.x-btn-group-header-text{white-space:nowrap}.x-btn-group-default-framed{-moz-border-radius:2px;-webkit-border-radius:2px;-o-border-radius:2px;-ms-border-radius:2px;-khtml-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#393d4e}.x-nlg .x-btn-group-default-framed-mc{background-color:#393d4e}.x-nbr .x-btn-group-default-framed{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000202px 1000202px}.x-nbr .x-btn-group-default-framed-tl,.x-nbr .x-btn-group-default-framed-bl,.x-nbr .x-btn-group-default-framed-tr,.x-nbr .x-btn-group-default-framed-br,.x-nbr .x-btn-group-default-framed-tc,.x-nbr .x-btn-group-default-framed-bc,.x-nbr .x-btn-group-default-framed-ml,.x-nbr .x-btn-group-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/access/btn-group/btn-group-default-framed-corners.gif')}.x-nbr .x-btn-group-default-framed-ml,.x-nbr .x-btn-group-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/access/btn-group/btn-group-default-framed-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-btn-group-default-framed-mc{padding:0}.x-strict .x-ie7 .x-btn-group-default-framed-tl,.x-strict .x-ie7 .x-btn-group-default-framed-bl{position:relative;right:0}.x-btn-group-default-framed{border-color:#606068;-moz-box-shadow:#757478 0 1px 0 0 inset,#757478 0 -1px 0 0 inset,#757478 -1px 0 0 0 inset,#757478 1px 0 0 0 inset;-webkit-box-shadow:#757478 0 1px 0 0 inset,#757478 0 -1px 0 0 inset,#757478 -1px 0 0 0 inset,#757478 1px 0 0 0 inset;-o-box-shadow:#757478 0 1px 0 0 inset,#757478 0 -1px 0 0 inset,#757478 -1px 0 0 0 inset,#757478 1px 0 0 0 inset;box-shadow:#757478 0 1px 0 0 inset,#757478 0 -1px 0 0 inset,#757478 -1px 0 0 0 inset,#757478 1px 0 0 0 inset}.x-btn-group-header-default-framed{margin:2px 2px 0 2px}.x-btn-group-header-body-default-framed{padding:1px 0;background:#676772;-moz-border-radius-topleft:2px;-webkit-border-top-left-radius:2px;-o-border-top-left-radius:2px;-ms-border-top-left-radius:2px;-khtml-border-top-left-radius:2px;border-top-left-radius:2px;-moz-border-radius-topright:2px;-webkit-border-top-right-radius:2px;-o-border-top-right-radius:2px;-ms-border-top-right-radius:2px;-khtml-border-top-right-radius:2px;border-top-right-radius:2px}.x-btn-group-header-text-default-framed{font:normal 14px tahoma,arial,verdana,sans-serif;color:#d2d2d2}.x-datepicker{border:1px solid #798294;background-color:#21252e;position:relative}.x-datepicker a{-moz-outline:0 none;outline:0 none;color:white;text-decoration:none;border-width:0}.x-datepicker-inner,.x-datepicker-inner td,.x-datepicker-inner th{border-collapse:separate}.x-datepicker-header{position:relative;height:26px;background-image:none;background-color:#5c6980;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#627089),color-stop(100%,#535f74));background-image:-webkit-linear-gradient(top,#627089,#535f74);background-image:-moz-linear-gradient(top,#627089,#535f74);background-image:-o-linear-gradient(top,#627089,#535f74);background-image:-ms-linear-gradient(top,#627089,#535f74);background-image:linear-gradient(top,#627089,#535f74)}.x-datepicker-prev,.x-datepicker-next{position:absolute;top:5px;width:18px}.x-datepicker-prev a,.x-datepicker-next a{display:block;width:16px;height:16px;background-position:top;background-repeat:no-repeat;cursor:pointer;text-decoration:none!important;filter:alpha(opacity=70);opacity:.7}.x-datepicker-prev a:hover,.x-datepicker-next a:hover{filter:alpha(opacity=100);opacity:1}.x-datepicker-next{right:5px}.x-datepicker-next a{background-image:url('../../resources/themes/images/access/shared/right-btn.gif')}.x-datepicker-prev{left:5px}.x-datepicker-prev a{background-image:url('../../resources/themes/images/access/shared/left-btn.gif')}.x-item-disabled .x-datepicker-prev a:hover,.x-item-disabled .x-datepicker-next a:hover{filter:alpha(opacity=60);opacity:.6}.x-datepicker-month{padding-top:3px}.x-datepicker-month .x-btn,.x-datepicker-month button,.x-datepicker-month .x-btn-tc,.x-datepicker-month .x-btn-tl,.x-datepicker-month .x-btn-tr,.x-datepicker-month .x-btn-mc,.x-datepicker-month .x-btn-ml,.x-datepicker-month .x-btn-mr,.x-datepicker-month .x-btn-bc,.x-datepicker-month .x-btn-bl,.x-datepicker-month .x-btn-br{background:transparent!important;border-width:0!important}.x-datepicker-month span{color:#fff!important}.x-datepicker-month .x-btn-split-right{background-image:url('../../resources/themes/images/access/button/s-arrow-light.gif');padding-right:12px}.x-datepicker-next{text-align:right}.x-datepicker-month{text-align:center}.x-datepicker-month button{color:white!important}table.x-datepicker-inner{width:100%;table-layout:fixed}table.x-datepicker-inner th{width:25px;height:19px;padding:0;color:white;font:normal 10px tahoma,arial,verdana,sans-serif;text-align:right;border-bottom:1px solid #535b5c;border-collapse:separate;background-image:none;background-color:#3a4051;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#40475a),color-stop(100%,#313745));background-image:-webkit-linear-gradient(top,#40475a,#313745);background-image:-moz-linear-gradient(top,#40475a,#313745);background-image:-o-linear-gradient(top,#40475a,#313745);background-image:-ms-linear-gradient(top,#40475a,#313745);background-image:linear-gradient(top,#40475a,#313745);cursor:default}table.x-datepicker-inner th span{display:block;padding-right:7px}table.x-datepicker-inner tr{height:20px}table.x-datepicker-inner td{border:1px solid;height:21px;border-color:#21252e;text-align:right;padding:0}table.x-datepicker-inner a{padding-right:4px;display:block;zoom:1;font:normal 14px tahoma,arial,verdana,sans-serif;color:white;text-decoration:none;text-align:right}table.x-datepicker-inner .x-datepicker-active{cursor:pointer;color:black}table.x-datepicker-inner .x-datepicker-selected a{background:repeat-x left top;background-color:#e5872c;border:1px solid #864900}table.x-datepicker-inner .x-datepicker-selected span{font-weight:bold}table.x-datepicker-inner .x-datepicker-today a{border:1px solid;border-color:#99a}table.x-datepicker-inner .x-datepicker-prevday a,table.x-datepicker-inner .x-datepicker-nextday a{text-decoration:none!important;color:#aaa}table.x-datepicker-inner a:hover,table.x-datepicker-inner .x-datepicker-disabled a:hover{text-decoration:none!important;color:#000;background-color:#7e5530}table.x-datepicker-inner .x-datepicker-disabled a{cursor:default;background-color:#eee;color:#bbb}.x-datepicker-footer,.x-monthpicker-buttons{position:relative;border-top:1px solid #535b5c;background-image:none;background-color:#3a4051;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#51596b),color-stop(49%,#4b525f),color-stop(51%,#454b58),color-stop(100%,#484e5a));background-image:-webkit-linear-gradient(top,#51596b,#4b525f 49%,#454b58 51%,#484e5a);background-image:-moz-linear-gradient(top,#51596b,#4b525f 49%,#454b58 51%,#484e5a);background-image:-o-linear-gradient(top,#51596b,#4b525f 49%,#454b58 51%,#484e5a);background-image:-ms-linear-gradient(top,#51596b,#4b525f 49%,#454b58 51%,#484e5a);background-image:linear-gradient(top,#51596b,#4b525f 49%,#454b58 51%,#484e5a);text-align:center}.x-datepicker-footer .x-btn,.x-monthpicker-buttons .x-btn{position:relative;margin:4px}.x-item-disabled .x-datepicker-inner a:hover{background:0}.x-datepicker .x-monthpicker{position:absolute;left:0;top:0}.x-monthpicker{border:1px solid #798294;background-color:#21252e}.x-monthpicker-months,.x-monthpicker-years{float:left;height:172px;width:88px}.x-monthpicker-item{float:left;margin:4px 0 5px 0;font:normal 14px tahoma,arial,verdana,sans-serif;text-align:center;vertical-align:middle;height:18px;width:43px;border:0 none}.x-monthpicker-item a{display:block;margin:0 5px;text-decoration:none;color:white;border:0 none;line-height:17px}.x-monthpicker-item a:hover{background-color:#7e5530}.x-monthpicker-item a.x-monthpicker-selected{background-color:#e5872c;border:1px solid #864900}.x-monthpicker-months{border-right:1px solid #798294;width:87px}.x-monthpicker-years .x-monthpicker-item{width:44px}.x-monthpicker-yearnav{height:28px}.x-monthpicker-yearnav button{background-image:url('../../resources/themes/images/access/tools/tool-sprites.gif');height:15px;width:15px;padding:0;margin:6px 12px 5px 15px;border:0;outline:0 none}.x-monthpicker-yearnav button::-moz-focus-inner{border:0;padding:0}.x-monthpicker-yearnav-next{background-position:0 -120px}.x-monthpicker-yearnav-next-over{cursor:pointer;cursor:hand;background-position:-15px -120px}.x-monthpicker-yearnav-prev{background-position:0 -105px}.x-monthpicker-yearnav-prev-over{cursor:pointer;cursor:hand;background-position:-15px -105px}.x-monthpicker-small .x-monthpicker-item{margin:2px 0 2px 0}.x-monthpicker-small .x-monthpicker-yearnav{height:23px}.x-monthpicker-small .x-monthpicker-months,.x-monthpicker-small .x-monthpicker-years{height:136px}.x-quirks .x-ie7 .x-monthpicker-buttons .x-btn,.x-quirks .x-ie8 .x-monthpicker-buttons .x-btn{margin-top:2px}.x-quirks .x-monthpicker-small .x-monthpicker-yearnav button{margin-top:3px;margin-bottom:3px}.x-ie6 .x-monthpicker-small .x-monthpicker-yearnav button{margin-top:3px;margin-bottom:3px}.x-nlg .x-datepicker-header{background-image:url('../../resources/themes/images/access/datepicker/datepicker-header-bg.gif');background-repeat:repeat-x;background-position:top left}.x-nlg .x-datepicker-footer,.x-nlg .x-monthpicker-buttons{background-image:url('../../resources/themes/images/access/datepicker/datepicker-footer-bg.gif');background-repeat:repeat-x;background-position:top left}.x-color-picker{width:144px;height:90px;cursor:pointer}.x-color-picker a{border:1px solid #fff;float:left;padding:2px;text-decoration:none;-moz-outline:0 none;outline:0 none;cursor:pointer}.x-color-picker a:hover,.x-color-picker a.x-color-picker-selected{border-color:#8bb8f3;background-color:#deecfd}.x-color-picker em{display:block;border:1px solid #aca899}.x-color-picker em span{cursor:pointer;display:block;height:10px;width:10px;line-height:10px}.x-menu-body{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;background:#414551!important;padding:2px}.x-menu-item .x-form-text{user-select:text;-webkit-user-select:text;-o-user-select:text;-ie-user-select:text;-moz-user-select:text;-ie-user-select:text}.x-menu-icon-separator{position:absolute;top:0;left:27px;z-index:0;border-left:solid 1px #223;background-color:#666;width:2px;overflow:hidden}.x-menu-plain .x-menu-icon-separator{display:none}.x-menu-focus{display:block;position:absolute;top:-10px;left:-10px;width:0;height:0}.x-menu-item{white-space:nowrap;overflow:hidden;z-index:1}.x-menu-item-cmp{margin-bottom:1px}.x-menu-item-link{display:block;margin:1px;padding:6px 2px 3px 32px;text-decoration:none!important;line-height:16px;cursor:default}.x-opera .x-menu-item-link{position:relative}.x-menu-item-icon{width:16px;height:16px;position:absolute;top:5px;left:4px;background:no-repeat center center}.x-menu-item-icon-right{width:16px;height:16px;position:absolute;top:6px;right:4px;background:no-repeat center center}.x-menu-item-text{font-size:14px;color:white}.x-menu-item-checked .x-menu-item-icon{background-image:url('../../resources/themes/images/access/menu/checked.gif')}.x-menu-item-checked .x-menu-group-icon{background-image:url('../../resources/themes/images/access/menu/group-checked.gif')}.x-menu-item-unchecked .x-menu-item-icon{background-image:url('../../resources/themes/images/access/menu/unchecked.gif')}.x-menu-item-unchecked .x-menu-group-icon{background-image:none}.x-menu-item-separator{height:2px;border-top:solid 1px #223;background-color:#666;margin:2px 0;overflow:hidden}.x-menu-item-arrow{position:absolute;width:12px;height:9px;top:9px;right:0;background:no-repeat center center;background-image:url('../../resources/themes/images/access/menu/menu-parent.gif')}.x-menu-item-indent{margin-left:31px}.x-menu-item-active{cursor:pointer}.x-menu-item-active .x-menu-item-link{background-image:none;background-color:#ed9200;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fc9b00),color-stop(100%,#d98500));background-image:-webkit-linear-gradient(top,#fc9b00,#d98500);background-image:-moz-linear-gradient(top,#fc9b00,#d98500);background-image:-o-linear-gradient(top,#fc9b00,#d98500);background-image:-ms-linear-gradient(top,#fc9b00,#d98500);background-image:linear-gradient(top,#fc9b00,#d98500);margin:0;border:1px solid #d38200;cursor:pointer;-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px}.x-menu-item-disabled{filter:alpha(opacity=50);opacity:.5}.x-ie .x-menu-item-disabled .x-menu-item-icon{filter:alpha(opacity=50);opacity:.5}.x-ie .x-menu-item-disabled .x-menu-item-text{background-color:transparent}.x-strict .x-ie7m .x-ie .x-menu-icon-separator{width:1px}.x-strict .x-ie7m .x-ie .x-menu-item-separator{height:1px}.x-ie6 .x-menu-item-link,.x-ie7 .x-menu-item-link,.x-quirks .x-ie8 .x-menu-item-link{padding-bottom:2px}.x-nlg .x-menu-item-active .x-menu-item-link{background:#ed9200 repeat-x left top;background-image:url('../../resources/themes/images/access/menu/menu-item-active-bg.gif')}.x-menu-date-item{border-color:#99bbe8}.x-panel .x-grid-body{background:#232d38;border-color:#18181a;border-style:solid;border-width:1px;border-top-color:#373c4b}.x-panel .x-grid-header-ct-hidden{visibility:hidden}.x-grid-empty{padding:10px;color:gray;font:normal 11px tahoma,arial,helvetica,sans-serif}.x-grid-header-hidden .x-grid-body{border-top-color:#18181a!important}.x-grid-view{overflow:hidden;position:relative}.x-grid-table{table-layout:fixed;border-collapse:separate}.x-autowidth-table table.x-grid-table{table-layout:auto;width:auto!important}.x-grid-row .x-grid-table{border-collapse:collapse}.x-grid-locked .x-grid-inner-locked{border-width:0 1px 0 0!important;border-style:solid}.x-grid-header-ct{cursor:default;zoom:1;padding:0;border:1px solid #18181a;border-bottom-color:#373c4b;background-image:none;background-color:#373c4b;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#575f77),color-stop(50%,#42485a),color-stop(51%,#373c4b),color-stop(100%,#2c303c));background-image:-webkit-linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c);background-image:-moz-linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c);background-image:-o-linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c);background-image:-ms-linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c);background-image:linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c)}.x-accordion-item .x-grid-header-ct{border-width:0 0 1px 0!important}.x-column-header{padding:0;position:absolute;overflow:hidden;border-right:1px solid #373c4b;border-left:0 none;border-top:0 none;border-bottom:0 none;text-shadow:0 1px 0 rgba(255,255,255,0.3);color:white;font:normal 14px tahoma,arial,verdana,sans-serif;background-image:none;background-color:#373c4b;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#575f77),color-stop(50%,#42485a),color-stop(51%,#373c4b),color-stop(100%,#2c303c));background-image:-webkit-linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c);background-image:-moz-linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c);background-image:-o-linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c);background-image:-ms-linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c);background-image:linear-gradient(top,#575f77,#42485a 50%,#373c4b 51%,#2c303c)}.x-group-header{padding:0;border-left-width:0}.x-group-sub-header{background:transparent;border-top:1px solid #373c4b;border-left-width:0}.x-column-header-inner{zoom:1;position:relative;white-space:nowrap;line-height:15px;padding:3px 6px 4px}.x-column-header-inner .x-column-header-text{white-space:nowrap}.x-column-header-over,.x-column-header-sort-ASC,.x-column-header-sort-DESC{border-left-color:#283b61;border-right-color:#283b61;background-image:none;background-color:#496085;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#6c86ae),color-stop(50%,#526c95),color-stop(51%,#496085),color-stop(100%,#405475));background-image:-webkit-linear-gradient(top,#6c86ae,#526c95 50%,#496085 51%,#405475);background-image:-moz-linear-gradient(top,#6c86ae,#526c95 50%,#496085 51%,#405475);background-image:-o-linear-gradient(top,#6c86ae,#526c95 50%,#496085 51%,#405475);background-image:-ms-linear-gradient(top,#6c86ae,#526c95 50%,#496085 51%,#405475);background-image:linear-gradient(top,#6c86ae,#526c95 50%,#496085 51%,#405475)}.x-nlg .x-grid-header-ct,.x-nlg .x-column-header{background:repeat-x 0 top;background-image:url('../../resources/themes/images/access/grid/column-header-bg.gif')}.x-nlg .x-column-header-over,.x-nlg .x-column-header-sort-ASC,.x-nlg .x-column-header-sort-DESC{background:#ebf3fd repeat-x 0 top;background-image:url('../../resources/themes/images/access/grid/column-header-over-bg.gif')}.x-column-header-trigger{display:none;height:100%;width:14px;background:no-repeat left center;background-color:#c3daf9;background-image:url('../../resources/themes/images/access/grid/grid3-hd-btn.gif');position:absolute;right:0;top:0;z-index:2;cursor:pointer}.x-column-header-over .x-column-header-trigger,.x-column-header-open .x-column-header-trigger{display:block}.x-column-header-align-right{text-align:right}.x-column-header-align-right .x-column-header-text{padding-right:.5ex;margin-right:6px}.x-column-header-align-center{text-align:center}.x-column-header-align-left{text-align:left}.x-column-header-sort-ASC .x-column-header-text{padding-right:16px;background:no-repeat right 6px;background-image:url('../../resources/themes/images/access/grid/sort_asc.gif')}.x-column-header-sort-DESC .x-column-header-text{padding-right:16px;background:no-repeat right 6px;background-image:url('../../resources/themes/images/access/grid/sort_desc.gif')}.x-grid-row{vertical-align:top}.x-grid-row .x-grid-cell{color:white;font:normal 14px/17px tahoma,arial,verdana,sans-serif;background-color:#1f2933;border-color:#101010;border-style:solid;border-top-color:#1d1d1d;border-width:0}.x-grid-with-row-lines .x-grid-cell{border-width:1px 0}.x-grid-rowwrap-div{border-width:1px 0;border-color:#101010;border-style:solid;border-top-color:#1d1d1d;overflow:hidden}.x-grid-row-alt .x-grid-cell,.x-grid-row-alt .x-grid-rowwrap-div{background-color:#1a232b}.x-grid-row-over .x-grid-cell,.x-grid-row-over .x-grid-rowwrap-div{border-color:#101010;background-color:#7e552f}.x-grid-row-focused .x-grid-cell,.x-grid-row-focused .x-grid-rowwrap-div{border-color:#ddd;background-color:#efefef}.x-grid-row-selected .x-grid-cell,.x-grid-row-selected .x-grid-rowwrap-div{border-style:dotted;border-color:#101010;background-color:#e48627!important}.x-grid-rowwrap-div .x-grid-cell,.x-grid-rowwrap-div .x-grid-cell-inner{border-width:0;background:transparent}.x-grid-row-body-hidden{display:none}.x-grid-rowbody{font:normal 11px/13px tahoma,arial,verdana,sans-serif;padding:4px}.x-grid-rowbody p{margin:5px 5px 10px 5px}.x-grid-cell{overflow:hidden}.x-grid-cell-inner{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding:2px 6px 3px;white-space:nowrap}.x-grid-with-row-lines .x-grid-cell-inner{line-height:15px;padding-bottom:4px}.x-action-col-cell .x-grid-cell-inner{line-height:0;padding:2px}.x-action-col-cell .x-item-disabled{filter:alpha(opacity=30);opacity:.3}.x-grid-with-row-lines .x-action-col-cell .x-grid-cell-inner{padding-top:1px}.x-grid-row .x-grid-cell-special{padding:0;border-right:1px solid #454545;background-image:none;background-color:#f6f6f6;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#f6f6f6),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-moz-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-o-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-ms-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:linear-gradient(left,#f6f6f6,#e9e9e9)}.x-grid-row .x-grid-cell-row-checker{vertical-align:middle}.x-ie6 .x-grid-header-row,.x-ie7 .x-grid-header-row,.x-quirks .x-ie8 .x-grid-header-row{position:absolute}.x-grid-row-selected .x-grid-cell-special{border-right:1px solid #283b61;background-image:none;background-color:#e48627;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#e48627),color-stop(100%,#d7791b));background-image:-webkit-linear-gradient(left,#e48627,#d7791b);background-image:-moz-linear-gradient(left,#e48627,#d7791b);background-image:-o-linear-gradient(left,#e48627,#d7791b);background-image:-ms-linear-gradient(left,#e48627,#d7791b);background-image:linear-gradient(left,#e48627,#d7791b)}.x-grid-dirty-cell{background-image:url('../../resources/themes/images/access/grid/dirty.gif');background-position:0 0;background-repeat:no-repeat}.x-grid-cell-selected{background-color:#b8cfee!important}.x-nlg .x-grid-cell-special{background-repeat:repeat-y;background-position:top right}.x-nlg .x-grid-row .x-grid-cell-special,.x-nlg .x-grid-row-over .x-grid-cell-special{background-image:url('../../resources/themes/images/access/grid/cell-special-bg.gif')}.x-nlg .x-grid-row-focused .x-grid-cell-special,.x-nlg .x-grid-row-selected .x-grid-cell-special{background-image:url('../../resources/themes/images/access/grid/cell-special-selected-bg.gif')}.x-grid-with-col-lines .x-grid-cell{padding-right:0;border-right:1px solid #454545}.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner{padding-left:12px;background-image:url('../../resources/themes/images/access/grid/property-cell-bg.gif');background-repeat:no-repeat;background-position:-16px 2px}.x-grid-with-row-lines.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,.x-grid-with-row-lines.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner{background-position:-16px 1px}.x-quirks .x-ie .x-grid-row .x-grid-property-name .x-grid-cell-inner{background-position:-16px 2px}.x-unselectable{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-grid-row-body-hidden{display:none}.x-grid-group-collapsed{display:none}.x-grid-view .x-grid-td-expander{vertical-align:top}.x-grid-td-expander{background:repeat-y right transparent}.x-grid-view .x-grid-td-expander .x-grid-cell-inner{padding:0!important}.x-grid-row-expander{background-image:url('../../resources/themes/images/access/grid/group-collapse.gif');background-color:transparent;width:9px;height:13px;margin-left:3px;background-repeat:no-repeat;background-position:0 -2px}.x-grid-row-collapsed .x-grid-row-expander{background-image:url('../../resources/themes/images/access/grid/group-expand.gif')}.x-grid-resize-marker{position:absolute;z-index:5;top:0;width:1px;background-color:#0f0f0f}.col-move-top,.col-move-bottom{width:9px;height:9px;position:absolute;top:0;line-height:0;font-size:0;overflow:hidden;z-index:20000;background:no-repeat left top transparent}.col-move-top{background-image:url('../../resources/themes/images/access/grid/col-move-top.gif')}.col-move-bottom{background-image:url('../../resources/themes/images/access/grid/col-move-bottom.gif')}.x-tbar-page-number{width:30px}.x-grid-group,.x-grid-group-body,.x-grid-group-hd{zoom:1}.x-grid-group-hd{padding-top:6px}.x-grid-group-hd .x-grid-cell-inner{padding:10px 4px 4px 4px;background:white;border-width:0 0 2px 0;border-style:solid;border-color:#283042;cursor:pointer}.x-grid-group-hd-collapsible .x-grid-group-title{background:transparent no-repeat 0 -1px;background-image:url('../../resources/themes/images/access/grid/group-collapse.gif');padding:0 0 0 14px}.x-grid-group-title{color:black;font:bold 14px tahoma,arial,verdana,sans-serif}.x-grid-group-hd-collapsed .x-grid-group-title{background-image:url('../../resources/themes/images/access/grid/group-expand.gif')}.x-grid-group-collapsed .x-grid-group-body{display:none}.x-grid-group-collapsed .x-grid-group-title{background-image:url('../../resources/themes/images/access/grid/group-expand.gif')}.x-group-by-icon{background-image:url('../../resources/themes/images/access/grid/group-by.gif')}.x-show-groups-icon{background-image:url('../../resources/themes/images/access/grid/group-by.gif')}.x-column-header-checkbox .x-column-header-inner{padding:0}.x-grid-cell-special .x-grid-cell-inner{padding-left:4px;padding-right:4px}.x-grid-row-checker,.x-column-header-checkbox .x-column-header-text{height:14px;width:14px;line-height:0;background-image:url('../../resources/themes/images/access/grid/unchecked.gif');background-position:-1px -1px;background-repeat:no-repeat;background-color:transparent}.x-column-header-checkbox .x-column-header-text{display:block;margin:0 5px}.x-quirks .x-ie .x-grid-row-checker,.x-quirks .x-ie .x-column-header-checkbox .x-column-header-text,.x-ie7m .x-grid-row-checker,.x-ie7m .x-column-header-checkbox .x-column-header-text{line-height:14px}.x-grid-hd-checker-on .x-column-header-text{background-image:url('../../resources/themes/images/access/grid/checked.gif')}.x-grid-cell-row-checker .x-grid-cell-inner{padding-top:4px;padding-bottom:2px;line-height:16px}.x-grid-with-row-lines .x-grid-cell-row-checker .x-grid-cell-inner{padding-top:3px}.x-grid-row-checker{margin-left:1px;background-position:50% -2px}.x-grid-row-selected .x-grid-row-checker,.x-grid-row-checked .x-grid-row-checker{background-image:url('../../resources/themes/images/access/grid/checked.gif')}.x-tbar-page-first{background-image:url('../../resources/themes/images/access/grid/page-first.gif')!important}.x-tbar-loading{background-image:url('../../resources/themes/images/access/grid/refresh.gif')!important}.x-tbar-page-last{background-image:url('../../resources/themes/images/access/grid/page-last.gif')!important}.x-tbar-page-next{background-image:url('../../resources/themes/images/access/grid/page-next.gif')!important}.x-tbar-page-prev{background-image:url('../../resources/themes/images/access/grid/page-prev.gif')!important}.x-item-disabled .x-tbar-loading{background-image:url('../../resources/themes/images/access/grid/refresh-disabled.gif')!important}.x-item-disabled .x-tbar-page-first{background-image:url('../../resources/themes/images/access/grid/page-first-disabled.gif')!important}.x-item-disabled .x-tbar-page-last{background-image:url('../../resources/themes/images/access/grid/page-last-disabled.gif')!important}.x-item-disabled .x-tbar-page-next{background-image:url('../../resources/themes/images/access/grid/page-next-disabled.gif')!important}.x-item-disabled .x-tbar-page-prev{background-image:url('../../resources/themes/images/access/grid/page-prev-disabled.gif')!important}.x-hmenu-sort-asc .x-menu-item-icon{background-image:url('../../resources/themes/images/access/grid/hmenu-asc.gif')}.x-hmenu-sort-desc .x-menu-item-icon{background-image:url('../../resources/themes/images/access/grid/hmenu-desc.gif')}.x-hmenu-lock .x-menu-item-icon{background-image:url('../../resources/themes/images/access/grid/hmenu-lock.gif')}.x-hmenu-unlock .x-menu-item-icon{background-image:url('../../resources/themes/images/access/grid/hmenu-unlock.gif')}.x-group-by-icon{background-image:url('../../resources/themes/images/access/grid/group-by.gif')}.x-cols-icon .x-menu-item-icon{background-image:url('../../resources/themes/images/access/grid/columns.gif')}.x-show-groups-icon{background-image:url('../../resources/themes/images/access/grid/group-by.gif')}.x-grid-drop-indicator{position:absolute;height:1px;line-height:0;background-color:#77bc71;overflow:visible}.x-grid-drop-indicator .x-grid-drop-indicator-left{position:absolute;top:-8px;left:-12px;background-image:url('../../resources/themes/images/access/grid/dd-insert-arrow-right.png');height:16px;width:16px}.x-grid-drop-indicator .x-grid-drop-indicator-right{position:absolute;top:-8px;right:-11px;background-image:url('../../resources/themes/images/access/grid/dd-insert-arrow-left.png');height:16px;width:16px}.x-ie6 .x-grid-drop-indicator-left{background-image:url('../../resources/themes/images/access/grid/dd-insert-arrow-right.gif')}.x-ie6 .x-grid-drop-indicator-right{background-image:url('../../resources/themes/images/access/grid/dd-insert-arrow-left.gif')}.x-grid-editor .x-form-text{padding:0 3px}.x-grid-editor .x-form-cb-wrap{padding-top:1px}.x-grid-row-editor{position:absolute!important;z-index:1;zoom:1;overflow:visible!important}.x-grid-row-editor .x-form-text{padding:0 1px}.x-grid-row-editor .x-form-cb-wrap{padding-top:0}.x-grid-row-editor .x-form-checkbox{margin-left:-4px}.x-grid-row-editor .x-form-display-field{font:normal 14px/15px tahoma,arial,verdana,sans-serif;padding-top:0;padding-left:1px}.x-grid-row-editor .x-panel-body{background-color:#4b5d83;border-top:1px solid #18181a!important;border-bottom:1px solid #18181a!important}.x-grid-editor .x-form-cb-wrap,.x-grid-row-editor .x-form-cb-wrap{text-align:center}.x-grid-editor .x-form-trigger,.x-grid-row-editor .x-form-trigger{height:20px}.x-grid-editor .x-form-trigger-wrap .x-form-spinner-up,.x-grid-editor .x-form-trigger-wrap .x-form-spinner-down,.x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-up,.x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-down{background-image:url('../../resources/themes/images/access/form/spinner-small.gif');height:10px!important}.x-grid-editor .x-form-text,.x-grid-row-editor .x-form-text{font:normal 14px/15px tahoma,arial,verdana,sans-serif;height:20px}.x-border-box .x-grid-editor .x-form-trigger,.x-border-box .x-grid-row-editor .x-form-trigger{height:22px}.x-border-box .x-grid-editor .x-form-text,.x-border-box .x-grid-row-editor .x-form-text{height:22px;padding-bottom:1px}.x-ie .x-grid-editor .x-form-text{padding-left:4px}.x-ie .x-grid-row-editor .x-form-text{padding-left:2px}.x-ie8m .x-grid-editor .x-form-text,.x-ie8m .x-grid-row-editor .x-form-text{padding-top:1px}.x-strict .x-ie6 .x-grid-editor .x-form-text,.x-strict .x-ie6 .x-grid-row-editor .x-form-text,.x-strict .x-ie7 .x-grid-editor .x-form-text,.x-strict .x-ie7 .x-grid-row-editor .x-form-text{height:16px}.x-quirks .x-ie9 .x-grid-editor .x-form-text,.x-quirks .x-ie9 .x-grid-row-editor .x-form-text{line-height:17px}.x-opera .x-grid-editor .x-form-text{padding-left:4px}.x-opera .x-grid-row-editor .x-form-text{padding-left:2px}.x-grid-row-editor-buttons{background-color:#4b5d83;position:absolute;bottom:-31px;padding:4px;height:32px}.x-strict .x-ie7m .x-grid-row-editor-buttons{width:192px;height:24px}.x-grid-row-editor-buttons-ml,.x-grid-row-editor-buttons-mr,.x-grid-row-editor-buttons-bl,.x-grid-row-editor-buttons-br,.x-grid-row-editor-buttons-bc{position:absolute;overflow:hidden}.x-grid-row-editor-buttons-bl,.x-grid-row-editor-buttons-br{width:4px;height:4px;bottom:0;background-image:url('../../resources/themes/images/access/panel/panel-default-framed-corners.gif')}.x-grid-row-editor-buttons-bl{left:0;background-position:0 -16px}.x-grid-row-editor-buttons-br{right:0;background-position:0 -20px}.x-grid-row-editor-buttons-bc{position:absolute;left:4px;bottom:0;width:192px;height:1px;background-color:#18181a}.x-grid-row-editor-buttons-ml,.x-grid-row-editor-buttons-mr{height:27px;width:1px;top:1px;background-color:#18181a}.x-grid-row-editor-buttons-ml{left:0}.x-grid-row-editor-buttons-mr{background-position:0 -20px;right:0}.x-grid-row-editor-errors ul{margin-left:5px}.x-grid-row-editor-errors li{list-style:disc;margin-left:15px}.x-webkit *:focus{outline:none!important}.x-form-item{vertical-align:top;table-layout:fixed}.x-autocontainer-form-item,.x-anchor-form-item,.x-vbox-form-item,.x-checkboxgroup-form-item,.x-table-form-item{margin-bottom:5px}.x-form-layout-table{border-collapse:separate;border-spacing:0 2px}.x-form-item-body{position:relative}.x-form-form-item td{border-top:1px solid transparent}.x-ie6 .x-form-layout-table{border-collapse:collapse;border-spacing:0}.x-ie6 .x-form-form-item td{border-top-width:0}.x-ie6 td.x-form-item-pad{height:5px}.x-editor .x-form-item-body{padding-bottom:0}.x-form-item-label{display:block;padding:3px 0 0;font-size:15px;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-form-item-label-top{display:block;zoom:1;padding:0 0 5px 0}.x-form-item-label-right{text-align:right}.x-form-invalid-under{padding:2px 2px 2px 18px;color:#c0272b;font:normal 14px tahoma,arial,verdana,sans-serif;line-height:16px;background:no-repeat 0 2px;background-image:url('../../resources/themes/images/access/form/exclamation.gif')}.x-form-invalid-icon{width:18px;height:14px;background:no-repeat center center;background-image:url('../../resources/themes/images/access/form/exclamation.gif');overflow:hidden}.x-form-invalid-icon ul{display:block;width:18px}.x-form-invalid-icon ul li{display:none}.x-lbl-top-err-icon{margin-bottom:4px}.x-form-field,.x-form-display-field{margin:0;font:normal 15px tahoma,arial,verdana,sans-serif;color:white}.x-form-item-hidden{margin:0}.x-form-text,textarea.x-form-field{padding:1px 3px;background:repeat-x 0 0;border:2px solid;background-color:#34383f;background-image:url('../../resources/themes/images/access/form/text-bg.gif');border-color:#737b8c}.x-form-text{height:20px;line-height:17px;vertical-align:top}.x-ie8m .x-form-text{line-height:17px}.x-border-box .x-form-text{height:26px}textarea.x-form-field{color:white;overflow:auto;height:auto;line-height:normal;background:repeat-x 0 0;background-color:#34383f;background-image:url('../../resources/themes/images/access/form/text-bg.gif');resize:none}.x-border-box textarea.x-form-field{height:auto}.x-safari.x-mac textarea.x-form-field{margin-bottom:-2px}.x-form-focus,textarea.x-form-focus{border-color:#ff9c33}.x-form-invalid-field,textarea.x-form-invalid-field{background-color:#15171a;background-image:url('../../resources/themes/images/access/grid/invalid_line.gif');background-repeat:repeat-x;background-position:bottom;border-color:#c30}.x-form-item{font:normal 15px tahoma,arial,verdana,sans-serif}.x-form-empty-field,textarea.x-form-empty-field{color:gray}.x-webkit .x-form-empty-field{line-height:17px}.x-form-display-field{padding-top:3px}.x-quirks .x-ie9p .x-form-text,.x-ie7m .x-form-text{margin-top:-1px;margin-bottom:-1px}.x-ie .x-form-file{height:27px;line-height:18px;vertical-align:middle}.x-field-default-toolbar .x-form-text{height:18px}.x-border-box .x-field-default-toolbar .x-form-text{height:24px}.x-field-default-toolbar .x-form-item-label-left{padding-left:4px}.x-fieldset{border:1px solid #727c8c;padding:10px;margin-bottom:10px;display:block;position:relative}.x-ie .x-fieldset{padding-top:0}.x-ie .x-fieldset .x-fieldset-body{padding-top:10px}.x-fieldset-header-checkbox{line-height:14px}.x-fieldset-header{font:14px/14px bold tahoma,arial,verdana,sans-serif;color:white;padding:0 3px 1px;overflow:hidden}.x-fieldset-header .x-fieldset-header-text{float:left;padding:1px 0}.x-fieldset-header .x-fieldset-header-text-collapsible{cursor:pointer}.x-fieldset-header .x-form-item,.x-fieldset-header .x-tool{float:left;margin:1px 0 0 0}.x-fieldset-header .x-form-cb-wrap{padding:1px 0;font-size:0;line-height:0}.x-fieldset-with-title .x-fieldset-header-checkbox,.x-fieldset-with-title .x-tool{margin-right:3px}.x-webkit .x-fieldset-header{-webkit-padding-start:3px;-webkit-padding-end:3px}.x-opera .x-fieldset-with-legend{margin-top:-1px}.x-opera.x-mac .x-fieldset-header-text{padding:2px 0 0}.x-strict .x-ie8 .x-fieldset-header{margin-bottom:-1px}.x-strict .x-ie8 .x-fieldset-header .x-tool,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox{position:relative;top:-1px}.x-quirks .x-ie .x-fieldset-header,.x-ie8m .x-fieldset-header{padding-left:1px;padding-right:1px}.x-fieldset-collapsed .x-fieldset-body{display:none}.x-fieldset-collapsed{padding-bottom:0!important;border-width:1px 1px 0 1px!important;border-left-color:transparent!important;border-right-color:transparent!important}.x-ie6 .x-fieldset-collapsed{border-width:1px 0 0 0!important;padding-bottom:0!important;margin-left:1px;margin-right:1px}.x-ie .x-fieldset-bwrap{zoom:1}.x-ie .x-fieldset-noborder legend{position:relative;margin-bottom:23px}.x-ie .x-fieldset-noborder legend span{position:absolute;left:16px}.x-fieldset{overflow:hidden}.x-fieldset-bwrap{overflow:hidden;zoom:1}.x-fieldset-body{overflow:hidden}.x-form-file-wrap .x-form-text{color:#777}.x-form-file-wrap .x-form-file-btn{overflow:hidden}.x-form-file-wrap .x-form-file-input{position:absolute;top:-4px;right:-2px;height:34px;filter:alpha(opacity=0);opacity:0;font-size:100px}.x-form-cb-wrap{padding-top:3px}.x-form-checkbox,.x-form-radio{vertical-align:-1px;width:19px;height:19px;background:no-repeat;background-image:url('../../resources/themes/images/access/form/checkbox.gif');overflow:hidden;padding:0;border:0}.x-form-checkbox::-moz-focus-inner,.x-form-radio::-moz-focus-inner{padding:0;border:0}.x-nbr.x-ie .x-form-checkbox,.x-nbr.x-ie .x-form-radio{font-size:0}.x-form-cb-checked .x-form-checkbox,.x-form-cb-checked .x-form-radio{background-position:0 -19px}.x-form-cb-focus{background-position:-19px 0}.x-form-cb-checked .x-form-cb-focus{background-position:-19px -19px}.x-form-radio{background-image:url('../../resources/themes/images/access/form/radio.gif')}.x-form-cb-label-before{margin-right:4px}.x-form-cb-label-after{margin-left:4px}.x-form-checkboxgroup-body{padding:1px 4px 1px 4px}.x-form-invalid .x-form-checkboxgroup-body{border:1px solid #c30!important;background:transparent repeat-x bottom;background-image:url('../../resources/themes/images/access/grid/invalid_line.gif');padding:1px 3px 0 3px}.x-check-group-alt{background:#4d515c;border-top:1px dotted #333;border-bottom:1px dotted #333}.x-form-check-group-label{color:#333;border-bottom:1px solid #333;margin:0 30px 5px 0;padding:2px}.x-form-trigger-wrap{vertical-align:top}.x-form-trigger{background-image:url('../../resources/themes/images/access/form/trigger.gif');background-position:0 0;width:20px;height:24px;border-bottom:2px solid #737b8c;cursor:pointer;cursor:hand;overflow:hidden}.x-border-box .x-form-trigger{height:26px}.x-field-default-toolbar .x-form-trigger{height:22px}.x-border-box .x-field-default-toolbar .x-form-trigger{height:24px}.x-form-trigger-over{background-position:-20px 0;border-bottom-color:#ff9c33}.x-form-trigger-wrap-focus .x-form-trigger{background-position:-60px 0;border-bottom-color:#737b8c}.x-form-trigger-wrap-focus .x-form-trigger-over{background-position:-80px 0;border-bottom-color:#ff9c33}.x-form-trigger-click,.x-form-trigger-wrap-focus .x-form-trigger-click{background-position:-40px 0;border-bottom-color:#c76e12}.x-form-trigger-icon{height:18px;background-repeat:no-repeat;background-position:7px 6px}.x-pickerfield-open .x-form-field{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0}.x-pickerfield-open-above .x-form-field{-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;-o-border-bottom-left-radius:3px;-ms-border-bottom-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0}.x-form-arrow-trigger .x-form-trigger-icon{background-image:url('../../resources/themes/images/access/boundlist/trigger-arrow.png')}.x-form-date-trigger{background-image:url('../../resources/themes/images/access/form/date-trigger.gif')}.x-form-trigger-wrap .x-form-spinner-up,.x-form-trigger-wrap .x-form-spinner-down{background-image:url('../../resources/themes/images/access/form/spinner.gif');width:20px!important;height:13px!important;font-size:0;border-bottom:0}.x-form-trigger-wrap .x-form-spinner-down{background-position:0 -13px}.x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-60px -13px}.x-form-trigger-wrap .x-form-spinner-down-over{background-position:-20px -13px}.x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-80px -13px}.x-form-trigger-wrap .x-form-spinner-down-click{background-position:-40px -13px}.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-up,.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down{background-image:url('../../resources/themes/images/access/form/spinner-small.gif');height:12px!important}.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down{background-position:0 -12px}.x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-60px -12px}.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-over{background-position:-20px -12px}.x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-80px -12px}.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-click{background-position:-40px -12px}.x-trigger-noedit{cursor:pointer;cursor:hand}.x-item-disabled .x-trigger-noedit,.x-item-disabled .x-form-trigger{cursor:auto}.x-form-clear-trigger{background-image:url('../../resources/themes/images/access/form/clear-trigger.gif')}.x-form-search-trigger{background-image:url('../../resources/themes/images/access/form/search-trigger.gif')}.x-quirks .prefixie6 .x-form-trigger-input-cell{height:26px}.x-quirks .prefixie6 .x-field-default-toolbar .x-form-trigger-input-cell{height:24px}.x-html-editor-wrap{border:1px solid #737b8c}.x-html-editor-wrap .x-toolbar{border-top-width:0;border-left-width:0;border-right-width:0}.x-html-editor-wrap textarea{background-color:#34383f}.x-html-editor-tb .x-btn-text{background:transparent no-repeat;background-image:url('../../resources/themes/images/access/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-bold,.x-menu-item img.x-edit-bold{background-position:0 0;background-image:url('../../resources/themes/images/access/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-italic,.x-menu-item img.x-edit-italic{background-position:-16px 0;background-image:url('../../resources/themes/images/access/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-underline,.x-menu-item img.x-edit-underline{background-position:-32px 0;background-image:url('../../resources/themes/images/access/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-forecolor,.x-menu-item img.x-edit-forecolor{background-position:-160px 0;background-image:url('../../resources/themes/images/access/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-backcolor,.x-menu-item img.x-edit-backcolor{background-position:-176px 0;background-image:url('../../resources/themes/images/access/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-justifyleft,.x-menu-item img.x-edit-justifyleft{background-position:-112px 0;background-image:url('../../resources/themes/images/access/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-justifycenter,.x-menu-item img.x-edit-justifycenter{background-position:-128px 0;background-image:url('../../resources/themes/images/access/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-justifyright,.x-menu-item img.x-edit-justifyright{background-position:-144px 0;background-image:url('../../resources/themes/images/access/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-insertorderedlist,.x-menu-item img.x-edit-insertorderedlist{background-position:-80px 0;background-image:url('../../resources/themes/images/access/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-insertunorderedlist,.x-menu-item img.x-edit-insertunorderedlist{background-position:-96px 0;background-image:url('../../resources/themes/images/access/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-increasefontsize,.x-menu-item img.x-edit-increasefontsize{background-position:-48px 0;background-image:url('../../resources/themes/images/access/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-decreasefontsize,.x-menu-item img.x-edit-decreasefontsize{background-position:-64px 0;background-image:url('../../resources/themes/images/access/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-sourceedit,.x-menu-item img.x-edit-sourceedit{background-position:-192px 0;background-image:url('../../resources/themes/images/access/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-createlink,.x-menu-item img.x-edit-createlink{background-position:-208px 0;background-image:url('../../resources/themes/images/access/editor/tb-sprite.gif')}.x-html-editor-tip .x-tip-bd .x-tip-bd-inner{padding:5px;padding-bottom:1px}.x-html-editor-tb .x-toolbar{position:static!important}.x-html-editor-tb .x-font-select{font-size:11px}.x-html-editor-wrap textarea{border:0;padding:3px 2px;overflow:auto}.x-panel,.x-plain{overflow:hidden;position:relative}.x-ie .x-panel-header,.x-ie .x-panel-header-tl,.x-ie .x-panel-header-tc,.x-ie .x-panel-header-tr,.x-ie .x-panel-header-ml,.x-ie .x-panel-header-mc,.x-ie .x-panel-header-mr,.x-ie .x-panel-header-bl,.x-ie .x-panel-header-bc,.x-ie .x-panel-header-br{zoom:1}.x-ie8 td.x-frame-mc{vertical-align:top}.x-panel-header-horizontal{padding:3px 5px 4px}.x-panel-header-vertical{padding:5px 4px}.x-panel-header-icon,.x-window-header-icon{width:16px;height:16px;background-repeat:no-repeat;background-position:0 0;vertical-align:middle;margin-right:4px}.x-vertical .x-panel-header-icon,.x-vertical .x-window-header-icon{margin:0 0 4px}.x-panel-header-draggable,.x-panel-header-draggable .x-panel-header-text,.x-window-header-draggable,.x-window-header-draggable .x-window-header-text{cursor:move}.x-panel-ghost,.x-window-ghost{filter:alpha(opacity=65);opacity:.65;cursor:move}.x-panel-header-horizontal .x-panel-header-body,.x-panel-header-horizontal .x-window-header-body,.x-panel-header-horizontal .x-btn-group-header-body,.x-window-header-horizontal .x-panel-header-body,.x-window-header-horizontal .x-window-header-body,.x-window-header-horizontal .x-btn-group-header-body,.x-btn-group-header-horizontal .x-panel-header-body,.x-btn-group-header-horizontal .x-window-header-body,.x-btn-group-header-horizontal .x-btn-group-header-body{width:100%}.x-panel-header-vertical .x-panel-header-body,.x-panel-header-vertical .x-window-header-body,.x-panel-header-vertical .x-btn-group-header-body,.x-window-header-vertical .x-panel-header-body,.x-window-header-vertical .x-window-header-body,.x-window-header-vertical .x-btn-group-header-body,.x-btn-group-header-vertical .x-panel-header-body,.x-btn-group-header-vertical .x-window-header-body,.x-btn-group-header-vertical .x-btn-group-header-body{height:100%}.x-panel-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-panel-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;white-space:nowrap}.x-panel-header-left .x-vml-base,.x-panel-header-right .x-vml-base{left:-3px!important}.x-panel-body{overflow:hidden;position:relative;font-size:12px}.x-panel-header-vertical .x-surface{padding-left:1px}.x-opera .x-panel-header-vertical .x-surface,.x-strict .x-ie9 .x-panel-header-vertical .x-surface{padding-left:2px}.x-panel-collapsed .x-panel-header-collapsed-border-top{border-bottom-width:1px!important}.x-panel-collapsed .x-panel-header-collapsed-border-right{border-left-width:1px!important}.x-panel-collapsed .x-panel-header-collapsed-border-bottom{border-top-width:1px!important}.x-panel-collapsed .x-panel-header-collapsed-border-left{border-right-width:1px!important}.x-nlg .x-panel-header-vertical .x-frame-mc{background-repeat:repeat-y}.x-panel-default{border-color:#18181a}.x-panel-header-default{font-size:14px;border-color:#18181a;border-width:1px;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-ms-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-nlg .x-panel-header-default-top{background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-top-bg.gif')}.x-nlg .x-panel-header-default-bottom{background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-bottom-bg.gif')}.x-nlg .x-panel-header-default-left{background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-left-bg.gif')}.x-nlg .x-panel-header-default-right{background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-right-bg.gif')}.x-nlg .x-panel-header-default-right{background-position:top right}.x-nlg .x-panel-header-default-bottom{background-position:bottom left}.x-panel-header-text-default{color:white;font-size:14px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:17px}.x-panel-body-default{background:#232d38;border-color:#18181a;color:white;border-width:1px;border-style:solid}.x-panel-collapsed .x-window-header-default,.x-panel-collapsed .x-panel-header-default{border-color:#18181a}.x-panel-header-default-vertical{border-color:#18181a}.x-panel-header-default-left,.x-panel-header-default-right{background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-ms-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-panel-collapsed .x-panel-header-default-top{-moz-border-radius-bottomleft:null;-webkit-border-bottom-left-radius:null;-o-border-bottom-left-radius:null;-ms-border-bottom-left-radius:null;-khtml-border-bottom-left-radius:null;border-bottom-left-radius:null;-moz-border-radius-bottomright:null;-webkit-border-bottom-right-radius:null;-o-border-bottom-right-radius:null;-ms-border-bottom-right-radius:null;-khtml-border-bottom-right-radius:null;border-bottom-right-radius:null}.x-panel-collapsed .x-panel-header-default-right{-moz-border-radius-topleft:null;-webkit-border-top-left-radius:null;-o-border-top-left-radius:null;-ms-border-top-left-radius:null;-khtml-border-top-left-radius:null;border-top-left-radius:null;-moz-border-radius-bottomleft:null;-webkit-border-bottom-left-radius:null;-o-border-bottom-left-radius:null;-ms-border-bottom-left-radius:null;-khtml-border-bottom-left-radius:null;border-bottom-left-radius:null}.x-panel-collapsed .x-panel-header-default-bottom{-moz-border-radius-topleft:null;-webkit-border-top-left-radius:null;-o-border-top-left-radius:null;-ms-border-top-left-radius:null;-khtml-border-top-left-radius:null;border-top-left-radius:null;-moz-border-radius-topright:null;-webkit-border-top-right-radius:null;-o-border-top-right-radius:null;-ms-border-top-right-radius:null;-khtml-border-top-right-radius:null;border-top-right-radius:null}.x-panel-collapsed .x-panel-header-default-left{-moz-border-radius-topright:null;-webkit-border-top-right-radius:null;-o-border-top-right-radius:null;-ms-border-top-right-radius:null;-khtml-border-top-right-radius:null;border-top-right-radius:null;-moz-border-radius-bottomright:null;-webkit-border-bottom-right-radius:null;-o-border-bottom-right-radius:null;-ms-border-bottom-right-radius:null;-khtml-border-bottom-right-radius:null;border-bottom-right-radius:null}.x-panel-header-default-top{-moz-box-shadow:#4f5873 0 1px 0 0 inset;-webkit-box-shadow:#4f5873 0 1px 0 0 inset;-o-box-shadow:#4f5873 0 1px 0 0 inset;box-shadow:#4f5873 0 1px 0 0 inset}.x-panel-header-default-right{-moz-box-shadow:#4f5873 -1px 0 0 0 inset;-webkit-box-shadow:#4f5873 -1px 0 0 0 inset;-o-box-shadow:#4f5873 -1px 0 0 0 inset;box-shadow:#4f5873 -1px 0 0 0 inset}.x-panel-header-default-bottom{-moz-box-shadow:#4f5873 0 -1px 0 0 inset;-webkit-box-shadow:#4f5873 0 -1px 0 0 inset;-o-box-shadow:#4f5873 0 -1px 0 0 inset;box-shadow:#4f5873 0 -1px 0 0 inset}.x-panel-header-default-left{-moz-box-shadow:#4f5873 1px 0 0 0 inset;-webkit-box-shadow:#4f5873 1px 0 0 0 inset;-o-box-shadow:#4f5873 1px 0 0 0 inset;box-shadow:#4f5873 1px 0 0 0 inset}.x-panel-header-default-right-tc,.x-panel-header-default-right-mc,.x-panel-header-default-right-bc{background-position:right 0}.x-panel-header-default-bottom-tc,.x-panel-header-default-bottom-mc,.x-panel-header-default-bottom-bc{background-position:0 bottom}.x-panel-default-framed{border-color:#18181a}.x-panel-header-default-framed{font-size:14px;border-color:#18181a;border-width:1px;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-ms-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-nlg .x-panel-header-default-framed-top{background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-top-bg.gif')}.x-nlg .x-panel-header-default-framed-bottom{background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-bottom-bg.gif')}.x-nlg .x-panel-header-default-framed-left{background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-left-bg.gif')}.x-nlg .x-panel-header-default-framed-right{background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-right-bg.gif')}.x-nlg .x-panel-header-default-framed-right{background-position:top right}.x-nlg .x-panel-header-default-framed-bottom{background-position:bottom left}.x-nbr .x-panel-header-default-framed{background-image:none}.x-strict .x-ie9 .x-panel-header-default-framed-top,.x-nlg.x-opera .x-panel-header-default-framed-top,.x-nlg.x-safari .x-panel-header-default-framed-top{background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-top-bg.gif')}.x-strict .x-ie9 .x-panel-header-default-framed-bottom,.x-nlg.x-opera .x-panel-header-default-framed-bottom,.x-nlg.x-safari .x-panel-header-default-framed-bottom{background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-bottom-bg.gif')}.x-strict .x-ie9 .x-panel-header-default-framed-left,.x-nlg.x-opera .x-panel-header-default-framed-left,.x-nlg.x-safari .x-panel-header-default-framed-left{background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-left-bg.gif')}.x-strict .x-ie9 .x-panel-header-default-framed-right,.x-nlg.x-opera .x-panel-header-default-framed-right,.x-nlg.x-safari .x-panel-header-default-framed-right{background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-right-bg.gif')}.x-panel-header-text-default-framed{color:white;font-size:14px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:17px}.x-panel-body-default-framed{background:#3f4757;border-color:#18181a;color:white;border-width:0;border-style:solid}.x-panel-collapsed .x-window-header-default-framed,.x-panel-collapsed .x-panel-header-default-framed{border-color:#18181a}.x-panel-header-default-framed-vertical{border-color:#18181a}.x-panel-header-default-framed-left,.x-panel-header-default-framed-right{background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-ms-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-panel-default-framed{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#3f4757}.x-nlg .x-panel-default-framed-mc{background-color:#3f4757}.x-nbr .x-panel-default-framed{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000303px 1000303px}.x-nbr .x-panel-default-framed-tl,.x-nbr .x-panel-default-framed-bl,.x-nbr .x-panel-default-framed-tr,.x-nbr .x-panel-default-framed-br,.x-nbr .x-panel-default-framed-tc,.x-nbr .x-panel-default-framed-bc,.x-nbr .x-panel-default-framed-ml,.x-nbr .x-panel-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/access/panel/panel-default-framed-corners.gif')}.x-nbr .x-panel-default-framed-ml,.x-nbr .x-panel-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/access/panel/panel-default-framed-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-panel-default-framed-mc{padding:2px 2px 2px 2px}.x-strict .x-ie7 .x-panel-default-framed-tl,.x-strict .x-ie7 .x-panel-default-framed-bl{position:relative;right:0}.x-panel-header-default-framed-top{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-o-border-top-left-radius:3px;-ms-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-o-border-top-right-radius:3px;-ms-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 5px 4px 5px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-ms-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-nlg .x-panel-header-default-framed-top-mc{background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-top-bg.gif');background-color:#3a4155}.x-nbr .x-panel-header-default-framed-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000303px 1000000px}.x-nbr .x-panel-header-default-framed-top-tl,.x-nbr .x-panel-header-default-framed-top-bl,.x-nbr .x-panel-header-default-framed-top-tr,.x-nbr .x-panel-header-default-framed-top-br,.x-nbr .x-panel-header-default-framed-top-tc,.x-nbr .x-panel-header-default-framed-top-bc,.x-nbr .x-panel-header-default-framed-top-ml,.x-nbr .x-panel-header-default-framed-top-mr{zoom:1;background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-top-corners.gif')}.x-nbr .x-panel-header-default-framed-top-ml,.x-nbr .x-panel-header-default-framed-top-mr{zoom:1;background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-top-sides.gif');background-position:0 0}.x-nbr .x-panel-header-default-framed-top-mc{padding:1px 3px 4px 3px}.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-top-bl{position:relative;right:0}.x-panel-header-default-framed-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-o-border-top-right-radius:3px;-ms-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;-o-border-bottom-right-radius:3px;-ms-border-bottom-right-radius:3px;-khtml-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 4px;border-width:1px 1px 1px 0;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-ms-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-nlg .x-panel-header-default-framed-right-mc{background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-right-bg.gif');background-color:#3a4155}.x-nbr .x-panel-header-default-framed-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000003px 1100300px}.x-nbr .x-panel-header-default-framed-right-tl,.x-nbr .x-panel-header-default-framed-right-bl,.x-nbr .x-panel-header-default-framed-right-tr,.x-nbr .x-panel-header-default-framed-right-br,.x-nbr .x-panel-header-default-framed-right-tc,.x-nbr .x-panel-header-default-framed-right-bc,.x-nbr .x-panel-header-default-framed-right-ml,.x-nbr .x-panel-header-default-framed-right-mr{zoom:1;background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-right-corners.gif')}.x-nbr .x-panel-header-default-framed-right-tc,.x-nbr .x-panel-header-default-framed-right-bc{zoom:1;background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-right-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-nbr .x-panel-header-default-framed-right-mc{padding:3px 2px 3px 4px}.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-right-bl{position:relative;right:0}.x-panel-header-default-framed-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;-o-border-bottom-right-radius:3px;-ms-border-bottom-right-radius:3px;-khtml-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;-o-border-bottom-left-radius:3px;-ms-border-bottom-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-left-radius:3px;padding:3px 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-ms-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-nlg .x-panel-header-default-framed-bottom-mc{background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-bottom-bg.gif');background-color:#3a4155}.x-nbr .x-panel-header-default-framed-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000000px 1000303px}.x-nbr .x-panel-header-default-framed-bottom-tl,.x-nbr .x-panel-header-default-framed-bottom-bl,.x-nbr .x-panel-header-default-framed-bottom-tr,.x-nbr .x-panel-header-default-framed-bottom-br,.x-nbr .x-panel-header-default-framed-bottom-tc,.x-nbr .x-panel-header-default-framed-bottom-bc,.x-nbr .x-panel-header-default-framed-bottom-ml,.x-nbr .x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-bottom-corners.gif')}.x-nbr .x-panel-header-default-framed-bottom-ml,.x-nbr .x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-bottom-sides.gif');background-position:0 0}.x-nbr .x-panel-header-default-framed-bottom-mc{padding:3px 3px 2px 3px}.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-left{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-o-border-top-left-radius:3px;-ms-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;-o-border-bottom-left-radius:3px;-ms-border-bottom-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-left-radius:3px;padding:5px 4px 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-ms-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-nlg .x-panel-header-default-framed-left-mc{background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-left-bg.gif');background-color:#3a4155}.x-nbr .x-panel-header-default-framed-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000300px 1100003px}.x-nbr .x-panel-header-default-framed-left-tl,.x-nbr .x-panel-header-default-framed-left-bl,.x-nbr .x-panel-header-default-framed-left-tr,.x-nbr .x-panel-header-default-framed-left-br,.x-nbr .x-panel-header-default-framed-left-tc,.x-nbr .x-panel-header-default-framed-left-bc,.x-nbr .x-panel-header-default-framed-left-ml,.x-nbr .x-panel-header-default-framed-left-mr{zoom:1;background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-left-corners.gif')}.x-nbr .x-panel-header-default-framed-left-tc,.x-nbr .x-panel-header-default-framed-left-bc{zoom:1;background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-left-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-nbr .x-panel-header-default-framed-left-mc{padding:3px 4px 3px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-left-bl{position:relative;right:0}.x-panel-header-default-framed-top{-moz-box-shadow:#4f5873 0 1px 0 0 inset,#4f5873 -1px 0 0 0 inset,#4f5873 1px 0 0 0 inset;-webkit-box-shadow:#4f5873 0 1px 0 0 inset,#4f5873 -1px 0 0 0 inset,#4f5873 1px 0 0 0 inset;-o-box-shadow:#4f5873 0 1px 0 0 inset,#4f5873 -1px 0 0 0 inset,#4f5873 1px 0 0 0 inset;box-shadow:#4f5873 0 1px 0 0 inset,#4f5873 -1px 0 0 0 inset,#4f5873 1px 0 0 0 inset}.x-panel-header-default-framed-right{-moz-box-shadow:#4f5873 0 1px 0 0 inset,#4f5873 0 -1px 0 0 inset,#4f5873 -1px 0 0 0 inset;-webkit-box-shadow:#4f5873 0 1px 0 0 inset,#4f5873 0 -1px 0 0 inset,#4f5873 -1px 0 0 0 inset;-o-box-shadow:#4f5873 0 1px 0 0 inset,#4f5873 0 -1px 0 0 inset,#4f5873 -1px 0 0 0 inset;box-shadow:#4f5873 0 1px 0 0 inset,#4f5873 0 -1px 0 0 inset,#4f5873 -1px 0 0 0 inset}.x-panel-header-default-framed-bottom{-moz-box-shadow:#4f5873 0 -1px 0 0 inset,#4f5873 -1px 0 0 0 inset,#4f5873 1px 0 0 0 inset;-webkit-box-shadow:#4f5873 0 -1px 0 0 inset,#4f5873 -1px 0 0 0 inset,#4f5873 1px 0 0 0 inset;-o-box-shadow:#4f5873 0 -1px 0 0 inset,#4f5873 -1px 0 0 0 inset,#4f5873 1px 0 0 0 inset;box-shadow:#4f5873 0 -1px 0 0 inset,#4f5873 -1px 0 0 0 inset,#4f5873 1px 0 0 0 inset}.x-panel-header-default-framed-left{-moz-box-shadow:#4f5873 0 1px 0 0 inset,#4f5873 0 -1px 0 0 inset,#4f5873 1px 0 0 0 inset;-webkit-box-shadow:#4f5873 0 1px 0 0 inset,#4f5873 0 -1px 0 0 inset,#4f5873 1px 0 0 0 inset;-o-box-shadow:#4f5873 0 1px 0 0 inset,#4f5873 0 -1px 0 0 inset,#4f5873 1px 0 0 0 inset;box-shadow:#4f5873 0 1px 0 0 inset,#4f5873 0 -1px 0 0 inset,#4f5873 1px 0 0 0 inset}.x-panel .x-panel-header-default-framed-top{border-bottom-width:1px!important}.x-panel .x-panel-header-default-framed-right{border-left-width:1px!important}.x-panel .x-panel-header-default-framed-bottom{border-top-width:1px!important}.x-panel .x-panel-header-default-framed-left{border-right-width:1px!important}.x-panel-header-default-framed-collapsed{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px}.x-panel-header-default-framed-collapsed-top{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-o-border-top-left-radius:3px;-ms-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-o-border-top-right-radius:3px;-ms-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;-o-border-bottom-right-radius:3px;-ms-border-bottom-right-radius:3px;-khtml-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;-o-border-bottom-left-radius:3px;-ms-border-bottom-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-left-radius:3px;padding:3px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-ms-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-nlg .x-panel-header-default-framed-collapsed-top-mc{background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-top-bg.gif');background-color:#3a4155}.x-nbr .x-panel-header-default-framed-collapsed-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000303px 1000303px}.x-nbr .x-panel-header-default-framed-collapsed-top-tl,.x-nbr .x-panel-header-default-framed-collapsed-top-bl,.x-nbr .x-panel-header-default-framed-collapsed-top-tr,.x-nbr .x-panel-header-default-framed-collapsed-top-br,.x-nbr .x-panel-header-default-framed-collapsed-top-tc,.x-nbr .x-panel-header-default-framed-collapsed-top-bc,.x-nbr .x-panel-header-default-framed-collapsed-top-ml,.x-nbr .x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-top-corners.gif')}.x-nbr .x-panel-header-default-framed-collapsed-top-ml,.x-nbr .x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-top-sides.gif');background-position:0 0}.x-nbr .x-panel-header-default-framed-collapsed-top-mc{padding:1px 3px 2px 3px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-right{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-o-border-top-left-radius:3px;-ms-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-o-border-top-right-radius:3px;-ms-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;-o-border-bottom-right-radius:3px;-ms-border-bottom-right-radius:3px;-khtml-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;-o-border-bottom-left-radius:3px;-ms-border-bottom-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-left-radius:3px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-ms-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-nlg .x-panel-header-default-framed-collapsed-right-mc{background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-right-bg.gif');background-color:#3a4155}.x-nbr .x-panel-header-default-framed-collapsed-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000303px 1100303px}.x-nbr .x-panel-header-default-framed-collapsed-right-tl,.x-nbr .x-panel-header-default-framed-collapsed-right-bl,.x-nbr .x-panel-header-default-framed-collapsed-right-tr,.x-nbr .x-panel-header-default-framed-collapsed-right-br,.x-nbr .x-panel-header-default-framed-collapsed-right-tc,.x-nbr .x-panel-header-default-framed-collapsed-right-bc,.x-nbr .x-panel-header-default-framed-collapsed-right-ml,.x-nbr .x-panel-header-default-framed-collapsed-right-mr{zoom:1;background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-right-corners.gif')}.x-nbr .x-panel-header-default-framed-collapsed-right-tc,.x-nbr .x-panel-header-default-framed-collapsed-right-bc{zoom:1;background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-right-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-nbr .x-panel-header-default-framed-collapsed-right-mc{padding:3px 2px 3px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-bottom{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-o-border-top-left-radius:3px;-ms-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-o-border-top-right-radius:3px;-ms-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;-o-border-bottom-right-radius:3px;-ms-border-bottom-right-radius:3px;-khtml-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;-o-border-bottom-left-radius:3px;-ms-border-bottom-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-left-radius:3px;padding:3px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-ms-linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(top,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-nlg .x-panel-header-default-framed-collapsed-bottom-mc{background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif');background-color:#3a4155}.x-nbr .x-panel-header-default-framed-collapsed-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000303px 1000303px}.x-nbr .x-panel-header-default-framed-collapsed-bottom-tl,.x-nbr .x-panel-header-default-framed-collapsed-bottom-bl,.x-nbr .x-panel-header-default-framed-collapsed-bottom-tr,.x-nbr .x-panel-header-default-framed-collapsed-bottom-br,.x-nbr .x-panel-header-default-framed-collapsed-bottom-tc,.x-nbr .x-panel-header-default-framed-collapsed-bottom-bc,.x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,.x-nbr .x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif')}.x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,.x-nbr .x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif');background-position:0 0}.x-nbr .x-panel-header-default-framed-collapsed-bottom-mc{padding:1px 3px 2px 3px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-left{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-o-border-top-left-radius:3px;-ms-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-o-border-top-right-radius:3px;-ms-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;-o-border-bottom-right-radius:3px;-ms-border-bottom-right-radius:3px;-khtml-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;-o-border-bottom-left-radius:3px;-ms-border-bottom-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-left-radius:3px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#3a4155;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#434a5e),color-stop(45%,#3c4255),color-stop(46%,#2a2f3e),color-stop(50%,#2a2f3e),color-stop(51%,#313646),color-stop(100%,#3a4155));background-image:-webkit-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-moz-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-o-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:-ms-linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155);background-image:linear-gradient(right,#434a5e,#3c4255 45%,#2a2f3e 46%,#2a2f3e 50%,#313646 51%,#3a4155)}.x-nlg .x-panel-header-default-framed-collapsed-left-mc{background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-left-bg.gif');background-color:#3a4155}.x-nbr .x-panel-header-default-framed-collapsed-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000303px 1100303px}.x-nbr .x-panel-header-default-framed-collapsed-left-tl,.x-nbr .x-panel-header-default-framed-collapsed-left-bl,.x-nbr .x-panel-header-default-framed-collapsed-left-tr,.x-nbr .x-panel-header-default-framed-collapsed-left-br,.x-nbr .x-panel-header-default-framed-collapsed-left-tc,.x-nbr .x-panel-header-default-framed-collapsed-left-bc,.x-nbr .x-panel-header-default-framed-collapsed-left-ml,.x-nbr .x-panel-header-default-framed-collapsed-left-mr{zoom:1;background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-left-corners.gif')}.x-nbr .x-panel-header-default-framed-collapsed-left-tc,.x-nbr .x-panel-header-default-framed-collapsed-left-bc{zoom:1;background-image:url('../../resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-left-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-nbr .x-panel-header-default-framed-collapsed-left-mc{padding:3px 2px 3px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl{position:relative;right:0}.x-panel-header-default-framed-right-tc,.x-panel-header-default-framed-right-mc,.x-panel-header-default-framed-right-bc{background-position:right 0}.x-panel-header-default-framed-bottom-tc,.x-panel-header-default-framed-bottom-mc,.x-panel-header-default-framed-bottom-bc{background-position:0 bottom}.x-panel-header-plain,.x-panel-body-plain{border:0;padding:0}.x-tip{position:absolute;overflow:visible;border-color:#122d5e}.x-tip .x-tip-header .x-box-item{padding:3px 3px 0}.x-tip .x-tip-header .x-tool{padding:0 1px 0 0!important}.x-tip{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:#5e6986}.x-nlg .x-tip-mc{background-color:#5e6986}.x-nbr .x-tip{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-tip-tl,.x-nbr .x-tip-bl,.x-nbr .x-tip-tr,.x-nbr .x-tip-br,.x-nbr .x-tip-tc,.x-nbr .x-tip-bc,.x-nbr .x-tip-ml,.x-nbr .x-tip-mr{zoom:1;background-image:url('../../resources/themes/images/access/tip/tip-corners.gif')}.x-nbr .x-tip-ml,.x-nbr .x-tip-mr{zoom:1;background-image:url('../../resources/themes/images/access/tip/tip-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-tip-mc{padding:0}.x-strict .x-ie7 .x-tip-tl,.x-strict .x-ie7 .x-tip-bl{position:relative;right:0}.x-tip-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;color:black;font-size:14px;font-weight:bold}.x-tip-header-draggable .x-tip-header-text{cursor:move}.x-tip-body,.x-form-invalid-tip-body{overflow:hidden;position:relative;padding:3px}.x-tip-header,.x-tip-body,.x-form-invalid-tip-body{color:black;font-size:14px;font-weight:normal}.x-tip-header a,.x-tip-body a,.x-form-invalid-tip-body a{color:black}.x-tip-anchor{position:absolute;overflow:hidden;height:0;width:0;border-style:solid;border-width:5px;border-color:#122d5e;zoom:1}.x-border-box .x-tip-anchor{width:10px;height:10px}.x-tip-anchor-top{border-top-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-bottom{border-bottom-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-bottom-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-left{border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-left-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-right{border-top-color:transparent;border-bottom-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-form-invalid-tip{border-color:#a1311f;-moz-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-webkit-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-o-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset}.x-form-invalid-tip-body{background:1px 1px no-repeat;background-image:url('../../resources/themes/images/access/form/exclamation.gif');padding-left:22px}.x-form-invalid-tip-body li{margin-bottom:4px}.x-form-invalid-tip-body li.last{margin-bottom:0}.x-form-invalid-tip-default{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:white}.x-nlg .x-form-invalid-tip-default-mc{background-color:white}.x-nbr .x-form-invalid-tip-default{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100505px 1000505px}.x-nbr .x-form-invalid-tip-default-tl,.x-nbr .x-form-invalid-tip-default-bl,.x-nbr .x-form-invalid-tip-default-tr,.x-nbr .x-form-invalid-tip-default-br,.x-nbr .x-form-invalid-tip-default-tc,.x-nbr .x-form-invalid-tip-default-bc,.x-nbr .x-form-invalid-tip-default-ml,.x-nbr .x-form-invalid-tip-default-mr{zoom:1;background-image:url('../../resources/themes/images/access/form-invalid-tip/form-invalid-tip-default-corners.gif')}.x-nbr .x-form-invalid-tip-default-ml,.x-nbr .x-form-invalid-tip-default-mr{zoom:1;background-image:url('../../resources/themes/images/access/form-invalid-tip/form-invalid-tip-default-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-form-invalid-tip-default-mc{padding:0}.x-strict .x-ie7 .x-form-invalid-tip-default-tl,.x-strict .x-ie7 .x-form-invalid-tip-default-bl{position:relative;right:0}.x-slider{zoom:1}.x-slider-inner{position:relative;left:0;top:0;overflow:visible;zoom:1}.x-slider-focus{position:absolute;left:0;top:0;width:1px;height:1px;line-height:1px;font-size:1px;-moz-outline:0 none;outline:0 none;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;display:block;overflow:hidden}.x-slider-horz{padding-left:7px;background:transparent no-repeat 0 -24px;width:100%}.x-slider-horz .x-slider-end{padding-right:7px;zoom:1;background:transparent no-repeat right -46px}.x-slider-horz .x-slider-inner{background:transparent repeat-x 0 -2px;height:18px}.x-slider-horz .x-slider-thumb{width:14px;height:15px;margin-left:-7px;position:absolute;left:0;top:1px;background:transparent no-repeat 0 0}.x-slider-horz .x-slider-thumb-over{background-position:-14px -15px}.x-slider-horz .x-slider-thumb-drag{background-position:-28px -30px}.x-slider-vert{padding-top:7px;background:transparent no-repeat -44px 0}.x-slider-vert .x-slider-end{padding-bottom:7px;zoom:1;background:transparent no-repeat -22px bottom;width:22px}.x-slider-vert .x-slider-inner{background:transparent repeat-y 0 0;width:22px}.x-slider-vert .x-slider-thumb{width:15px;height:14px;margin-bottom:-7px;position:absolute;left:3px;bottom:0;background:transparent no-repeat 0 0}.x-slider-vert .x-slider-thumb-over{background-position:-15px -14px}.x-slider-vert .x-slider-thumb-drag{background-position:-30px -28px}.x-slider-horz,.x-slider-horz .x-slider-end,.x-slider-horz .x-slider-inner{background-image:url('../../resources/themes/images/access/slider/slider-bg.png')}.x-slider-horz .x-slider-thumb{background-image:url('../../resources/themes/images/access/slider/slider-thumb.png')}.x-slider-vert,.x-slider-vert .x-slider-end,.x-slider-vert .x-slider-inner{background-image:url('../../resources/themes/images/access/slider/slider-v-bg.png')}.x-slider-vert .x-slider-thumb{background-image:url('../../resources/themes/images/access/slider/slider-v-thumb.png')}.x-ie6 .x-slider-horz,.x-ie6 .x-slider-horz .x-slider-end,.x-ie6 .x-slider-horz .x-slider-inner{background-image:url('../../resources/themes/images/access/slider/slider-bg.gif')}.x-ie6 .x-slider-horz .x-slider-thumb{background-image:url('../../resources/themes/images/access/slider/slider-thumb.gif')}.x-ie6 .x-slider-vert,.x-ie6 .x-slider-vert .x-slider-end,.x-ie6 .x-slider-vert .x-slider-inner{background-image:url('../../resources/themes/images/access/slider/slider-v-bg.gif')}.x-ie6 .x-slider-vert .x-slider-thumb{background-image:url('../../resources/themes/images/access/slider/slider-v-thumb.gif')}.x-progress{position:relative;border-width:1px;border-style:solid;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;overflow:hidden;height:20px}.x-progress-bar{height:18px;overflow:hidden;position:absolute;width:0;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;border-right:1px solid;border-top:1px solid}.x-progress-text{overflow:hidden;position:absolute;padding:0 5px;height:18px;font-weight:bold;font-size:14px;line-height:16px;text-align:center}.x-progress-text-back{padding-top:1px}.x-strict .x-ie7m .x-progress{height:18px}.x-progress-default{border-color:#18181a}.x-progress-default .x-progress-bar{border-right-color:#18181a;border-top-color:#55555c;background-image:none;background-color:#ed9200;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ffb43b),color-stop(50%,#ffa007),color-stop(51%,#ed9200),color-stop(100%,#d38200));background-image:-webkit-linear-gradient(top,#ffb43b,#ffa007 50%,#ed9200 51%,#d38200);background-image:-moz-linear-gradient(top,#ffb43b,#ffa007 50%,#ed9200 51%,#d38200);background-image:-o-linear-gradient(top,#ffb43b,#ffa007 50%,#ed9200 51%,#d38200);background-image:-ms-linear-gradient(top,#ffb43b,#ffa007 50%,#ed9200 51%,#d38200);background-image:linear-gradient(top,#ffb43b,#ffa007 50%,#ed9200 51%,#d38200)}.x-progress-default .x-progress-text{color:white}.x-progress-default .x-progress-text-back{color:#aaa}.x-nlg .x-progress-default .x-progress-bar{background:repeat-x;background-image:url('../../resources/themes/images/access/progress/progress-default-bg.gif')}.x-toolbar{font-size:14px;border:1px solid;padding:2px 0 2px 2px}.x-toolbar .x-form-item-label{font-size:14px;line-height:15px}.x-toolbar .x-toolbar-item{margin:0 2px 0 0}.x-toolbar .x-toolbar-text{margin-left:4px;margin-right:6px;white-space:nowrap;color:white;line-height:16px;font-family:tahoma,arial,verdana,sans-serif;font-size:14px;font-weight:normal}.x-toolbar .x-toolbar-separator{display:block;font-size:1px;overflow:hidden;cursor:default;border:0}.x-toolbar .x-toolbar-separator-horizontal{margin:0 3px 0 2px;height:14px;width:0;border-left:1px solid #1b1b29;border-right:1px solid #5d5d6e}.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal{width:2px}.x-toolbar-footer{background:transparent;border:0 none;margin-top:3px;padding:2px 0 2px 6px}.x-toolbar-footer .x-box-inner{border-width:0}.x-toolbar-footer .x-toolbar-item{margin:0 6px 0 0}.x-toolbar-vertical{padding:2px 2px 0 2px}.x-toolbar-vertical .x-toolbar-item{margin:0 0 2px 0}.x-toolbar-vertical .x-toolbar-text{margin-top:4px;margin-bottom:6px}.x-toolbar-vertical .x-toolbar-separator-vertical{margin:2px 5px 3px 5px;height:0;width:10px;line-height:0;border-top:1px solid #1b1b29;border-bottom:1px solid #5d5d6e}.x-toolbar-scroller{padding-left:0}.x-toolbar-spacer{width:2px}.x-toolbar-more-icon{background-image:url('../../resources/themes/images/access/toolbar/more.gif')!important;background-position:2px center!important;background-repeat:no-repeat}.x-toolbar-default{border-color:#18181a;background-image:none;background-color:#3a3e4f;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#404558),color-stop(100%,#3a3e4f));background-image:-webkit-linear-gradient(top,#404558,#3a3e4f);background-image:-moz-linear-gradient(top,#404558,#3a3e4f);background-image:-o-linear-gradient(top,#404558,#3a3e4f);background-image:-ms-linear-gradient(top,#404558,#3a3e4f);background-image:linear-gradient(top,#404558,#3a3e4f)}.x-nlg .x-toolbar-default{background-image:url('../../resources/themes/images/access/toolbar/toolbar-default-bg.gif')!important;background-repeat:repeat-x}.x-toolbar-plain{border:0}.x-window{outline:0;overflow:hidden}.x-window .x-window-wrap{position:relative}.x-window-body{position:relative;border-style:solid;overflow:hidden}.x-window-maximized .x-window-wrap .x-window-header{-moz-border-radius:0!important;-webkit-border-radius:0!important;-o-border-radius:0!important;-ms-border-radius:0!important;-khtml-border-radius:0!important;border-radius:0!important}.x-window-header-top{margin-bottom:-2px}.x-window-header-body-horizontal{margin-top:-1px}.x-window-header-bottom{margin-top:-1px;margin-bottom:-1px}.x-window-header-left{margin-right:-1px}.x-window-header-right{margin-left:-1px}.x-window-header-vertical .x-surface{padding-left:1px}.x-window-collapsed .x-window-header-vertical{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px}.x-window-collapsed .x-window-header-horizontal{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px}.x-window-collapsed .x-window-header-left{padding-right:5px!important;margin-right:0}.x-window-collapsed .x-window-header-right{padding-left:5px!important;margin-left:0}.x-window-collapsed .x-window-header-top{padding-bottom:5px!important;margin-bottom:-1px}.x-window-collapsed .x-window-header-bottom{padding-top:5px!important;margin-top:0}.x-window-header-left .x-vml-base,.x-window-header-right .x-vml-base{left:-3px!important}.x-opera .x-window-header-vertical .x-surface,.x-strict .x-ie9 .x-window-header-vertical .x-surface{padding-left:2px}.x-window-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-window-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;white-space:nowrap}.x-window-default{border-color:#282828;-moz-border-radius:5px 5px;-webkit-border-radius:5px 5px;-o-border-radius:5px 5px;-ms-border-radius:5px 5px;-khtml-border-radius:5px 5px;border-radius:5px 5px;-moz-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset;-webkit-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset;-o-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset;box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset}.x-window-default{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#3f4757}.x-nlg .x-window-default-mc{background-color:#3f4757}.x-nbr .x-window-default{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-nbr .x-window-default-tl,.x-nbr .x-window-default-bl,.x-nbr .x-window-default-tr,.x-nbr .x-window-default-br,.x-nbr .x-window-default-tc,.x-nbr .x-window-default-bc,.x-nbr .x-window-default-ml,.x-nbr .x-window-default-mr{zoom:1;background-image:url('../../resources/themes/images/access/window/window-default-corners.gif')}.x-nbr .x-window-default-ml,.x-nbr .x-window-default-mr{zoom:1;background-image:url('../../resources/themes/images/access/window/window-default-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-default-mc{padding:0}.x-strict .x-ie7 .x-window-default-tl,.x-strict .x-ie7 .x-window-default-bl{position:relative;right:0}.x-window-body-default{border-color:#18181a;border-width:1px;background:#1f2833;color:white}.x-window-header-default{font-size:14px;border-color:#282828;zoom:1}.x-window-header-text-default{color:white;font-weight:bold;line-height:17px;font-family:tahoma,arial,verdana,sans-serif;font-size:14px}.x-window-header-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 0 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#3f4757}.x-nlg .x-window-header-default-top-mc{background-color:#3f4757}.x-nbr .x-window-header-default-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000000px}.x-nbr .x-window-header-default-top-tl,.x-nbr .x-window-header-default-top-bl,.x-nbr .x-window-header-default-top-tr,.x-nbr .x-window-header-default-top-br,.x-nbr .x-window-header-default-top-tc,.x-nbr .x-window-header-default-top-bc,.x-nbr .x-window-header-default-top-ml,.x-nbr .x-window-header-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/access/window-header/window-header-default-top-corners.gif')}.x-nbr .x-window-header-default-top-ml,.x-nbr .x-window-header-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/access/window-header/window-header-default-top-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-top-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-top-tl,.x-strict .x-ie7 .x-window-header-default-top-bl{position:relative;right:0}.x-window-header-default-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 0;border-width:1px 1px 1px 0;border-style:solid;background-color:#3f4757}.x-nlg .x-window-header-default-right-mc{background-color:#3f4757}.x-nbr .x-window-header-default-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000005px 1000500px}.x-nbr .x-window-header-default-right-tl,.x-nbr .x-window-header-default-right-bl,.x-nbr .x-window-header-default-right-tr,.x-nbr .x-window-header-default-right-br,.x-nbr .x-window-header-default-right-tc,.x-nbr .x-window-header-default-right-bc,.x-nbr .x-window-header-default-right-ml,.x-nbr .x-window-header-default-right-mr{zoom:1;background-image:url('../../resources/themes/images/access/window-header/window-header-default-right-corners.gif')}.x-nbr .x-window-header-default-right-ml,.x-nbr .x-window-header-default-right-mr{zoom:1;background-image:url('../../resources/themes/images/access/window-header/window-header-default-right-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-right-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-right-tl,.x-strict .x-ie7 .x-window-header-default-right-bl{position:relative;right:0}.x-window-header-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:0 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#3f4757}.x-nlg .x-window-header-default-bottom-mc{background-color:#3f4757}.x-nbr .x-window-header-default-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000000px 1000505px}.x-nbr .x-window-header-default-bottom-tl,.x-nbr .x-window-header-default-bottom-bl,.x-nbr .x-window-header-default-bottom-tr,.x-nbr .x-window-header-default-bottom-br,.x-nbr .x-window-header-default-bottom-tc,.x-nbr .x-window-header-default-bottom-bc,.x-nbr .x-window-header-default-bottom-ml,.x-nbr .x-window-header-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/access/window-header/window-header-default-bottom-corners.gif')}.x-nbr .x-window-header-default-bottom-ml,.x-nbr .x-window-header-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/access/window-header/window-header-default-bottom-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-bottom-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-bottom-tl,.x-strict .x-ie7 .x-window-header-default-bottom-bl{position:relative;right:0}.x-window-header-default-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 0 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-color:#3f4757}.x-nlg .x-window-header-default-left-mc{background-color:#3f4757}.x-nbr .x-window-header-default-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000500px 1000005px}.x-nbr .x-window-header-default-left-tl,.x-nbr .x-window-header-default-left-bl,.x-nbr .x-window-header-default-left-tr,.x-nbr .x-window-header-default-left-br,.x-nbr .x-window-header-default-left-tc,.x-nbr .x-window-header-default-left-bc,.x-nbr .x-window-header-default-left-ml,.x-nbr .x-window-header-default-left-mr{zoom:1;background-image:url('../../resources/themes/images/access/window-header/window-header-default-left-corners.gif')}.x-nbr .x-window-header-default-left-ml,.x-nbr .x-window-header-default-left-mr{zoom:1;background-image:url('../../resources/themes/images/access/window-header/window-header-default-left-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-left-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-left-tl,.x-strict .x-ie7 .x-window-header-default-left-bl{position:relative;right:0}.x-window-header-default-collapsed-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#3f4757}.x-nlg .x-window-header-default-collapsed-top-mc{background-color:#3f4757}.x-nbr .x-window-header-default-collapsed-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-nbr .x-window-header-default-collapsed-top-tl,.x-nbr .x-window-header-default-collapsed-top-bl,.x-nbr .x-window-header-default-collapsed-top-tr,.x-nbr .x-window-header-default-collapsed-top-br,.x-nbr .x-window-header-default-collapsed-top-tc,.x-nbr .x-window-header-default-collapsed-top-bc,.x-nbr .x-window-header-default-collapsed-top-ml,.x-nbr .x-window-header-default-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/access/window-header/window-header-default-collapsed-top-corners.gif')}.x-nbr .x-window-header-default-collapsed-top-ml,.x-nbr .x-window-header-default-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/access/window-header/window-header-default-collapsed-top-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-collapsed-top-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl{position:relative;right:0}.x-window-header-default-collapsed-right{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#3f4757}.x-nlg .x-window-header-default-collapsed-right-mc{background-color:#3f4757}.x-nbr .x-window-header-default-collapsed-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-nbr .x-window-header-default-collapsed-right-tl,.x-nbr .x-window-header-default-collapsed-right-bl,.x-nbr .x-window-header-default-collapsed-right-tr,.x-nbr .x-window-header-default-collapsed-right-br,.x-nbr .x-window-header-default-collapsed-right-tc,.x-nbr .x-window-header-default-collapsed-right-bc,.x-nbr .x-window-header-default-collapsed-right-ml,.x-nbr .x-window-header-default-collapsed-right-mr{zoom:1;background-image:url('../../resources/themes/images/access/window-header/window-header-default-collapsed-right-corners.gif')}.x-nbr .x-window-header-default-collapsed-right-ml,.x-nbr .x-window-header-default-collapsed-right-mr{zoom:1;background-image:url('../../resources/themes/images/access/window-header/window-header-default-collapsed-right-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-collapsed-right-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl{position:relative;right:0}.x-window-header-default-collapsed-bottom{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#3f4757}.x-nlg .x-window-header-default-collapsed-bottom-mc{background-color:#3f4757}.x-nbr .x-window-header-default-collapsed-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-nbr .x-window-header-default-collapsed-bottom-tl,.x-nbr .x-window-header-default-collapsed-bottom-bl,.x-nbr .x-window-header-default-collapsed-bottom-tr,.x-nbr .x-window-header-default-collapsed-bottom-br,.x-nbr .x-window-header-default-collapsed-bottom-tc,.x-nbr .x-window-header-default-collapsed-bottom-bc,.x-nbr .x-window-header-default-collapsed-bottom-ml,.x-nbr .x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/access/window-header/window-header-default-collapsed-bottom-corners.gif')}.x-nbr .x-window-header-default-collapsed-bottom-ml,.x-nbr .x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/access/window-header/window-header-default-collapsed-bottom-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-collapsed-bottom-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl{position:relative;right:0}.x-window-header-default-collapsed-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#3f4757}.x-nlg .x-window-header-default-collapsed-left-mc{background-color:#3f4757}.x-nbr .x-window-header-default-collapsed-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-nbr .x-window-header-default-collapsed-left-tl,.x-nbr .x-window-header-default-collapsed-left-bl,.x-nbr .x-window-header-default-collapsed-left-tr,.x-nbr .x-window-header-default-collapsed-left-br,.x-nbr .x-window-header-default-collapsed-left-tc,.x-nbr .x-window-header-default-collapsed-left-bc,.x-nbr .x-window-header-default-collapsed-left-ml,.x-nbr .x-window-header-default-collapsed-left-mr{zoom:1;background-image:url('../../resources/themes/images/access/window-header/window-header-default-collapsed-left-corners.gif')}.x-nbr .x-window-header-default-collapsed-left-ml,.x-nbr .x-window-header-default-collapsed-left-mr{zoom:1;background-image:url('../../resources/themes/images/access/window-header/window-header-default-collapsed-left-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-collapsed-left-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl{position:relative;right:0}.x-window-header-default-top{-moz-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset;-webkit-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset;-o-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset;box-shadow:#414b5c 0 1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset}.x-window-header-default-right{-moz-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset;-webkit-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset;-o-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset;box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset}.x-window-header-default-bottom{-moz-box-shadow:#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset;-webkit-box-shadow:#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset;-o-box-shadow:#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset;box-shadow:#414b5c 0 -1px 0 0 inset,#414b5c -1px 0 0 0 inset,#414b5c 1px 0 0 0 inset}.x-window-header-default-left{-moz-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c 1px 0 0 0 inset;-webkit-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c 1px 0 0 0 inset;-o-box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c 1px 0 0 0 inset;box-shadow:#414b5c 0 1px 0 0 inset,#414b5c 0 -1px 0 0 inset,#414b5c 1px 0 0 0 inset}.x-window-body-plain{background:transparent}.x-message-box .x-window-body{background-color:#3f4757;border:0}.x-message-box .x-progress-wrap{margin-top:4px}.x-message-box-icon{width:47px;height:32px}.x-message-box-info,.x-message-box-warning,.x-message-box-question,.x-message-box-error{background:transparent no-repeat top left}.x-message-box .x-msg-box-wait{background-image:url('../../resources/themes/images/access/shared/blue-loading.gif')}.x-message-box-info{background-image:url('../../resources/themes/images/access/shared/icon-info.gif')}.x-message-box-warning{background-image:url('../../resources/themes/images/access/shared/icon-warning.gif')}.x-message-box-question{background-image:url('../../resources/themes/images/access/shared/icon-question.gif')}.x-message-box-error{background-image:url('../../resources/themes/images/access/shared/icon-error.gif')}.x-tab-bar{position:relative;background-color:transparent;background-image:none;background-color:#474e5c;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#4f596c),color-stop(100%,#474e5c));background-image:-webkit-linear-gradient(top,#4f596c,#474e5c);background-image:-moz-linear-gradient(top,#4f596c,#474e5c);background-image:-o-linear-gradient(top,#4f596c,#474e5c);background-image:-ms-linear-gradient(top,#4f596c,#474e5c);background-image:linear-gradient(top,#4f596c,#474e5c);font-size:14px}.x-nlg .x-tab-bar{background-image:url('../../resources/themes/images/access/tab-bar/tab-bar-default-bg.gif')}.x-tab-bar-default-plain,.x-nlg .x-tab-bar-default-plain{background:transparent none}.x-tab-bar-body{border-style:solid;border-color:#18181a;position:relative;z-index:2;zoom:1}.x-tab-bar-top .x-tab-bar-body{height:27px;border-width:1px 1px 0;padding:1px 0 3px}.x-tab-bar-top .x-tab-bar-strip{top:29px;border-width:1px 1px 0;height:2px}.x-border-box .x-tab-bar-top .x-tab-bar-body{height:32px}.x-border-box .x-tab-bar-top .x-tab-bar-strip{height:3px}.x-tab-bar-top .x-tab-bar-body-default-plain{height:27px;border-width:0;padding:0 0 2px}.x-tab-bar-top .x-tab-bar-strip-default-plain{top:27px;border-width:1px 1px 0 1px;height:2px}.x-border-box .x-tab-bar-top .x-tab-bar-body-default-plain{height:29px}.x-border-box .x-tab-bar-top .x-tab-bar-strip-default-plain{height:3px}.x-tab-bar-bottom .x-tab-bar-body{height:27px;border-width:0 1px 1px;padding:3px 0 1px}.x-tab-bar-bottom .x-tab-bar-body .x-box-inner{position:relative;top:-1px}.x-tab-bar-bottom .x-tab-bar-body .x-box-scroller,.x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-left,.x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-right{height:29px}.x-tab-bar-bottom .x-tab-bar-strip{top:0;border-width:0 1px 1px 1px;height:2px}.x-border-box .x-tab-bar-bottom .x-tab-bar-body{height:32px}.x-border-box .x-tab-bar-bottom .x-tab-bar-strip{height:3px}.x-tab-bar-bottom .x-tab-bar-body-default-plain{height:27px;border-width:0;padding:3px 0 0}.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-inner{position:relative;top:-1px}.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller,.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-left,.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-right{height:28px}.x-tab-bar-bottom .x-tab-bar-strip-default-plain{top:0;border-width:0 1px 1px 1px;height:2px}.x-border-box .x-tab-bar-bottom .x-tab-bar-body-default-plain{height:30px}.x-border-box .x-tab-bar-bottom .x-tab-bar-strip-default-plain{height:3px}.x-tab-bar-strip-default,.x-tab-bar-strip-default-plain{font-size:0;line-height:0;position:absolute;z-index:1;border-style:solid;overflow:hidden;border-color:#18181a;background-color:#ed9200;zoom:1}.x-tab-default-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 3px 0 3px;border-width:1px 1px 0 1px;border-style:solid;background-color:#616f8c}.x-nlg .x-tab-default-top-mc{background-color:#616f8c}.x-nbr .x-tab-default-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100404px 1000000px}.x-nbr .x-tab-default-top-tl,.x-nbr .x-tab-default-top-bl,.x-nbr .x-tab-default-top-tr,.x-nbr .x-tab-default-top-br,.x-nbr .x-tab-default-top-tc,.x-nbr .x-tab-default-top-bc,.x-nbr .x-tab-default-top-ml,.x-nbr .x-tab-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/access/tab/tab-default-top-corners.gif')}.x-nbr .x-tab-default-top-ml,.x-nbr .x-tab-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/access/tab/tab-default-top-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-tab-default-top-mc{padding:0}.x-strict .x-ie7 .x-tab-default-top-tl,.x-strict .x-ie7 .x-tab-default-top-bl{position:relative;right:0}.x-tab-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:0 3px 3px 3px;border-width:0 1px 1px 1px;border-style:solid;background-color:#616f8c}.x-nlg .x-tab-default-bottom-mc{background-color:#616f8c}.x-nbr .x-tab-default-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100000px 1000404px}.x-nbr .x-tab-default-bottom-tl,.x-nbr .x-tab-default-bottom-bl,.x-nbr .x-tab-default-bottom-tr,.x-nbr .x-tab-default-bottom-br,.x-nbr .x-tab-default-bottom-tc,.x-nbr .x-tab-default-bottom-bc,.x-nbr .x-tab-default-bottom-ml,.x-nbr .x-tab-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/access/tab/tab-default-bottom-corners.gif')}.x-nbr .x-tab-default-bottom-ml,.x-nbr .x-tab-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/access/tab/tab-default-bottom-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-tab-default-bottom-mc{padding:0}.x-strict .x-ie7 .x-tab-default-bottom-tl,.x-strict .x-ie7 .x-tab-default-bottom-bl{position:relative;right:0}.x-tab{z-index:1;margin:0 0 0 2px;display:inline-block;zoom:1;*display:inline;white-space:nowrap;height:27px;border-color:#2e3746;cursor:pointer;cursor:hand}.x-tab button{cursor:pointer;cursor:hand}.x-tab em{display:block;padding:0 6px;line-height:1px}.x-tab button{background:0;border:0;padding:0;margin:0;-webkit-appearance:none;font-size:14px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;color:white;outline:0 none;overflow-x:visible}.x-tab button::-moz-focus-inner{border:0;padding:0}.x-tab button .x-tab-inner{background-color:transparent;background-repeat:no-repeat;background-position:0 -2px;display:block;text-align:center;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden}.x-tab img{display:none}.x-border-box .x-tab-default-top{height:28px}.x-border-box .x-tab-default-bottom{height:28px}* html .x-ie .x-tab button{width:1px}.x-strict .x-ie6 .x-tab .x-frame-mc,.x-strict .x-ie7 .x-tab .x-frame-mc{height:100%}.x-ie .x-tab-active button:active{position:relative;top:-1px;left:-1px}.x-tab-default-top{border-bottom:1px solid #18181a!important}.x-tab-default-top em{padding-bottom:3px}.x-tab-default-top button,.x-tab-default-top .x-tab-inner{height:20px;line-height:20px}.x-safari4 .x-tab-default-top .x-tab-inner,.x-safari5_0 .x-tab-default-top .x-tab-inner{line-height:18px}.x-nbr .x-tab-default-top{border-bottom-width:1px!important}.x-tab-default-top-active{border-bottom-color:#ed9200!important}.x-tab-default-bottom{border-top:1px solid #18181a!important;-moz-box-shadow:#828a98 0 -1px 0 0 inset,#828a98 -1px 0 0 0 inset,#828a98 1px 0 0 0 inset;-webkit-box-shadow:#828a98 0 -1px 0 0 inset,#828a98 -1px 0 0 0 inset,#828a98 1px 0 0 0 inset;-o-box-shadow:#828a98 0 -1px 0 0 inset,#828a98 -1px 0 0 0 inset,#828a98 1px 0 0 0 inset;box-shadow:#828a98 0 -1px 0 0 inset,#828a98 -1px 0 0 0 inset,#828a98 1px 0 0 0 inset}.x-tab-default-bottom em{padding-top:3px}.x-tab-default-bottom button,.x-tab-default-bottom .x-tab-inner{height:20px;line-height:20px}.x-nbr .x-tab-default-bottom{border-top-width:1px!important}.x-tab-default-bottom-active{border-top-color:#ed9200!important}.x-tab-default-disabled{cursor:default;border-color:#39445a;background-image:none;background-color:#435881}.x-tab-default-disabled button{color:#c3b3b3!important}.x-tab-icon-text-left .x-tab-inner{padding-left:20px}.x-tab button{position:relative}.x-tab-icon{position:absolute;background-repeat:no-repeat;background-position:0 -1px;top:0;left:0;right:auto;bottom:0;width:18px;height:18px}.x-strict .x-ie8 .x-tab button,.x-strict .x-ie9 .x-tab button{overflow-y:visible}.x-tab-default-disabled .x-tab-icon{filter:alpha(opacity=50);opacity:.5}.x-tab-noicon .x-tab-icon{display:none}.x-tab-top-over{background-image:none;background-color:#6d7b9a}.x-tab-bottom-over{background-image:none;background-color:#6d7b9a}.x-tab-active{z-index:3;border-color:#74400e}.x-tab-top-active{background-image:none;background-color:#ed9200}.x-tab-bottom-active{background-image:none;background-color:#ed9200}.x-tab-disabled{border-color:#39445a}.x-tab-disabled button{color:#c3b3b3}.x-tab-top-disabled{background-image:none;background:transparent;background-image:none;background-color:#435881}.x-tab-bottom-disabled{background-image:none;background:transparent;background-image:none;background-color:#435881}.x-tab-closable em{padding-right:14px}.x-tab-close-btn{position:absolute;top:2px;right:2px;width:11px;height:11px;font-size:0;line-height:0;text-indent:-999px;background:no-repeat;background-image:url('../../resources/themes/images/access/tabs/tab-close.gif');filter:alpha(opacity=60);opacity:.6}.x-nbr .x-tab-close-btn{top:0;right:0}a.x-tab-close-btn:hover{filter:alpha(opacity=100);opacity:1}.x-tab-default-disabled a.x-tab-close-btn{filter:alpha(opacity=30);opacity:.3}.x-nbr .x-tab-top-over .x-frame-tl,.x-nbr .x-tab-top-over .x-frame-bl,.x-nbr .x-tab-top-over .x-frame-tr,.x-nbr .x-tab-top-over .x-frame-br,.x-nbr .x-tab-top-over .x-frame-tc,.x-nbr .x-tab-top-over .x-frame-bc{background-image:url('../../resources/themes/images/access/tab/tab-default-top-over-corners.gif')}.x-nbr .x-tab-top-over .x-frame-ml,.x-nbr .x-tab-top-over .x-frame-mr{background-image:url('../../resources/themes/images/access/tab/tab-default-top-over-sides.gif')}.x-nbr .x-tab-bottom-over .x-frame-tl,.x-nbr .x-tab-bottom-over .x-frame-bl,.x-nbr .x-tab-bottom-over .x-frame-tr,.x-nbr .x-tab-bottom-over .x-frame-br,.x-nbr .x-tab-bottom-over .x-frame-tc,.x-nbr .x-tab-bottom-over .x-frame-bc{background-image:url('../../resources/themes/images/access/tab/tab-default-bottom-over-corners.gif')}.x-nbr .x-tab-bottom-over .x-frame-ml,.x-nbr .x-tab-bottom-over .x-frame-mr{background-image:url('../../resources/themes/images/access/tab/tab-default-bottom-over-sides.gif')}.x-nbr .x-tab-top-active .x-frame-tl,.x-nbr .x-tab-top-active .x-frame-bl,.x-nbr .x-tab-top-active .x-frame-tr,.x-nbr .x-tab-top-active .x-frame-br,.x-nbr .x-tab-top-active .x-frame-tc,.x-nbr .x-tab-top-active .x-frame-bc{background-image:url('../../resources/themes/images/access/tab/tab-default-top-active-corners.gif')}.x-nbr .x-tab-top-active .x-frame-ml,.x-nbr .x-tab-top-active .x-frame-mr{background-image:url('../../resources/themes/images/access/tab/tab-default-top-active-sides.gif')}.x-nbr .x-tab-bottom-active .x-frame-tl,.x-nbr .x-tab-bottom-active .x-frame-bl,.x-nbr .x-tab-bottom-active .x-frame-tr,.x-nbr .x-tab-bottom-active .x-frame-br,.x-nbr .x-tab-bottom-active .x-frame-tc,.x-nbr .x-tab-bottom-active .x-frame-bc{background-image:url('../../resources/themes/images/access/tab/tab-default-bottom-active-corners.gif')}.x-nbr .x-tab-bottom-active .x-frame-ml,.x-nbr .x-tab-bottom-active .x-frame-mr{background-image:url('../../resources/themes/images/access/tab/tab-default-bottom-active-sides.gif')}.x-nbr .x-tab-top-disabled .x-frame-tl,.x-nbr .x-tab-top-disabled .x-frame-bl,.x-nbr .x-tab-top-disabled .x-frame-tr,.x-nbr .x-tab-top-disabled .x-frame-br,.x-nbr .x-tab-top-disabled .x-frame-tc,.x-nbr .x-tab-top-disabled .x-frame-bc{background-image:url('../../resources/themes/images/access/tab/tab-default-top-disabled-corners.gif')}.x-nbr .x-tab-top-disabled .x-frame-ml,.x-nbr .x-tab-top-disabled .x-frame-mr{background-image:url('../../resources/themes/images/access/tab/tab-default-top-disabled-sides.gif')}.x-nbr .x-tab-bottom-disabled .x-frame-tl,.x-nbr .x-tab-bottom-disabled .x-frame-bl,.x-nbr .x-tab-bottom-disabled .x-frame-tr,.x-nbr .x-tab-bottom-disabled .x-frame-br,.x-nbr .x-tab-bottom-disabled .x-frame-tc,.x-nbr .x-tab-bottom-disabled .x-frame-bc{background-image:url('../../resources/themes/images/access/tab/tab-default-bottom-disabled-corners.gif')}.x-nbr .x-tab-bottom-disabled .x-frame-ml,.x-nbr .x-tab-bottom-disabled .x-frame-mr{background-image:url('../../resources/themes/images/access/tab/tab-default-bottom-disabled-sides.gif')}.x-autowidth-table table.x-grid-table{table-layout:auto;width:auto!important}.x-tree-no-lines .x-tree-elbow{background-color:transparent}.x-tree-no-lines .x-tree-elbow-end{background-color:transparent}.x-tree-no-lines .x-tree-elbow-line{background-color:transparent}.x-tree-arrows .x-tree-elbow-plus{background:transparent no-repeat 0 0}.x-tree-arrows .x-tree-elbow-end-plus{background:transparent no-repeat 0 0}.x-tree-arrows .x-tree-elbow-end-minus{background:transparent no-repeat -16px 0}.x-tree-arrows .x-tree-elbow-minus{background:transparent no-repeat -16px 0}.x-tree-arrows .x-tree-elbow{background-color:transparent!important}.x-tree-arrows .x-tree-elbow-end{background-color:transparent!important}.x-tree-arrows .x-tree-elbow-line{background-color:transparent!important}.x-tree-arrows .x-tree-expander-over .x-tree-elbow-plus,.x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-plus{background-position:-32px 0}.x-tree-arrows .x-tree-expander-over .x-tree-elbow-minus,.x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-minus{background-position:-48px 0}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-plus,.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-position:-16px 0}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-plus,.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-end-plus{background-position:-48px 0}.x-tree-elbow-plus,.x-tree-elbow-minus,.x-tree-elbow-end-plus,.x-tree-elbow-end-minus{cursor:pointer}.x-tree-lines .x-tree-elbow{background-image:url('../../resources/themes/images/access/tree/elbow.gif')}.x-tree-lines .x-tree-elbow-end{background-image:url('../../resources/themes/images/access/tree/elbow-end.gif')}.x-tree-lines .x-tree-elbow-plus{background-image:url('../../resources/themes/images/access/tree/elbow-plus.gif')}.x-tree-lines .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/access/tree/elbow-end-plus.gif')}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus{background-image:url('../../resources/themes/images/access/tree/elbow-minus.gif')}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/access/tree/elbow-end-minus.gif')}.x-tree-lines .x-tree-elbow-line{background-image:url('../../resources/themes/images/access/tree/elbow-line.gif')}.x-tree-no-lines .x-tree-elbow-plus,.x-tree-no-lines .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/access/tree/elbow-plus-nl.gif')}.x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-plus,.x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/access/tree/elbow-end-minus-nl.gif')}.x-tree-arrows .x-tree-elbow-plus,.x-tree-arrows .x-tree-elbow-minus,.x-tree-arrows .x-tree-elbow-end-plus,.x-tree-arrows .x-tree-elbow-end-minus{background-image:url('../../resources/themes/images/access/tree/arrows.gif')}.x-tree-icon{margin:3px 3px 0 0}.x-grid-with-row-lines .x-tree-icon{margin-top:2px}.x-tree-elbow,.x-tree-elbow-end,.x-tree-elbow-plus,.x-tree-elbow-end-plus,.x-tree-elbow-empty,.x-tree-elbow-line{height:22px;width:16px}.x-grid-with-row-lines .x-tree-elbow,.x-grid-with-row-lines .x-tree-elbow-end,.x-grid-with-row-lines .x-tree-elbow-plus,.x-grid-with-row-lines .x-tree-elbow-end-plus,.x-grid-with-row-lines .x-tree-elbow-empty,.x-grid-with-row-lines .x-tree-elbow-line{height:21px;background-position:0 -1px}.x-tree-icon-leaf{width:16px;background-image:url('../../resources/themes/images/access/tree/leaf.gif')}.x-tree-icon-parent{width:16px;background-image:url('../../resources/themes/images/access/tree/folder.gif')}.x-grid-tree-node-expanded .x-tree-icon-parent{background-image:url('../../resources/themes/images/access/tree/folder-open.gif')}.x-grid-rowbody{padding:0}.x-grid-cell-treecolumn .x-grid-cell-inner{padding:0;line-height:21px}.x-grid-with-row-lines .x-grid-cell-treecolumn .x-grid-cell-inner{line-height:19px}.x-tree-panel .x-grid-cell-inner{cursor:pointer}.x-tree-panel .x-grid-cell-inner img{display:inline-block;vertical-align:top}.x-ie .x-tree-panel .x-tree-elbow,.x-ie .x-tree-panel .x-tree-elbow-end,.x-ie .x-tree-panel .x-tree-elbow-plus,.x-ie .x-tree-panel .x-tree-elbow-end-plus,.x-ie .x-tree-panel .x-tree-elbow-empty,.x-ie .x-tree-panel .x-tree-elbow-line{vertical-align:-6px}.x-grid-editor-on-text-node .x-form-text{padding-left:0;padding-right:0}.x-ie .x-grid-editor-on-text-node .x-form-text{padding-left:1px;padding-right:1px}.x-opera .x-grid-editor-on-text-node .x-form-text{padding-left:1px;padding-right:1px}.x-tree-checkbox{margin:2px 3px 0 0;display:inline-block;vertical-align:top;width:19px;height:19px;background:no-repeat;background-image:url('../../resources/themes/images/access/form/checkbox.gif');overflow:hidden;padding:0;border:0}.x-tree-checkbox::-moz-focus-inner{padding:0;border:0}.x-grid-with-row-lines .x-tree-checkbox{margin-top:1px}.x-tree-checkbox-checked{background-position:0 -19px}.x-tree-drop-ok-append .x-dd-drop-icon{background-image:url('../../resources/themes/images/access/tree/drop-append.gif')}.x-tree-drop-ok-above .x-dd-drop-icon{background-image:url('../../resources/themes/images/access/tree/drop-above.gif')}.x-tree-drop-ok-below .x-dd-drop-icon{background-image:url('../../resources/themes/images/access/tree/drop-below.gif')}.x-tree-drop-ok-between .x-dd-drop-icon{background-image:url('../../resources/themes/images/access/tree/drop-between.gif')}.x-grid-tree-loading .x-tree-icon{background-image:url('../../resources/themes/images/access/tree/loading.gif')}.x-tree-ddindicator{height:1px;border-width:1px 0 0;border-style:dotted;border-color:green}.x-grid-tree-loading span{font-style:italic;color:#444}.x-tree-animator-wrap{overflow:hidden}.x-surface{display:-moz-inline-box;-moz-box-orient:vertical;display:inline-block;vertical-align:middle;*vertical-align:auto;overflow:hidden}.x-surface{*display:inline}.rvml{behavior:url(#default#VML)}.x-surface tspan{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-vml-sprite{position:absolute;left:0;top:0;width:1px;height:1px}.x-vml-group{position:absolute;left:0;top:0;width:1000px;height:1000px}.x-vml-measure-span{position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;display:inline}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}svg,vml{overflow:hidden}.x-viewport,.x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;position:static}.x-dd-drag-proxy{z-index:1000000!important}.x-dd-drag-repair .x-dd-drag-ghost{filter:alpha(opacity=60);opacity:.6}.x-dd-drag-repair .x-dd-drop-icon{display:none}.x-dd-drag-ghost{filter:alpha(opacity=85);opacity:.85;padding:5px;padding-left:20px;white-space:nowrap;color:#000;font:normal 14px tahoma,arial,verdana,sans-serif;border:1px solid;border-color:#ddd #bbb #bbb #ddd;background-color:#fff}.x-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1}.x-view-selector{position:absolute;left:0;top:0;width:0;background-color:#c3daf9;border:1px dotted #39b;filter:alpha(opacity=50);opacity:.5;zoom:1}.x-dd-drop-nodrop .x-dd-drop-icon{background-image:url('../../resources/themes/images/access/dd/drop-no.gif')}.x-dd-drop-ok .x-dd-drop-icon{background-image:url('../../resources/themes/images/access/dd/drop-yes.gif')}.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url('../../resources/themes/images/access/dd/drop-add.gif')}.x-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;zoom:1;filter:alpha(opacity=0);opacity:0;background-color:#fff}.x-collapsed .x-resizable-handle{display:none}.x-resizable-handle-east{width:6px;height:100%;right:0;top:0}.x-resizable-over .x-resizable-handle-east{cursor:e-resize}.x-resizable-handle-south{width:100%;height:6px;left:0;bottom:0}.x-resizable-over .x-resizable-handle-south{cursor:s-resize}.x-resizable-handle-west{width:6px;height:100%;left:0;top:0}.x-resizable-over .x-resizable-handle-west{cursor:w-resize}.x-resizable-handle-north{width:100%;height:6px;left:0;top:0}.x-resizable-over .x-resizable-handle-north{cursor:n-resize}.x-resizable-handle-southeast{width:6px;height:6px;right:0;bottom:0;z-index:101}.x-resizable-over .x-resizable-handle-southeast{cursor:se-resize}.x-resizable-handle-northwest{width:6px;height:6px;left:0;top:0;z-index:101}.x-resizable-over .x-resizable-handle-northwest{cursor:nw-resize}.x-resizable-handle-northeast{width:6px;height:6px;right:0;top:0;z-index:101}.x-resizable-over .x-resizable-handle-northeast{cursor:ne-resize}.x-resizable-handle-southwest{width:6px;height:6px;left:0;bottom:0;z-index:101}.x-resizable-over .x-resizable-handle-southwest{cursor:sw-resize}.x-ie .x-resizable-handle-east{margin-right:-1px}.x-ie .x-resizable-handle-south{margin-bottom:-1px}.x-resizable-over .x-resizable-handle,.x-resizable-pinned .x-resizable-handle{filter:alpha(opacity=100);opacity:1}.x-window .x-window-handle{filter:alpha(opacity=0);opacity:0}.x-window-collapsed .x-window-handle{display:none}.x-resizable-proxy{border:1px dashed #3b5a82;position:absolute;left:0;top:0;overflow:hidden;z-index:50000}.x-resizable-overlay{position:absolute;left:0;top:0;width:100%;height:100%;display:none;z-index:200000;background-color:#fff;filter:alpha(opacity=0);opacity:0}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-position:left;background-image:url('../../resources/themes/images/access/sizer/e-handle.gif')}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-north{background-position:top;background-image:url('../../resources/themes/images/access/sizer/s-handle.gif')}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-position:top left;background-image:url('../../resources/themes/images/access/sizer/se-handle.gif')}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right;background-image:url('../../resources/themes/images/access/sizer/nw-handle.gif')}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left;background-image:url('../../resources/themes/images/access/sizer/ne-handle.gif')}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-position:top right;background-image:url('../../resources/themes/images/access/sizer/sw-handle.gif')}.x-splitter .x-collapse-el{position:absolute;cursor:pointer;background-color:transparent;background-repeat:no-repeat!important}.x-layout-split-left,.x-layout-split-right{top:50%;margin-top:-17px;width:5px;height:35px}.x-layout-split-top,.x-layout-split-bottom{left:50%;width:35px;height:5px;margin-left:-17px}.x-layout-split-left{background:no-repeat top right;background-image:url('../../resources/themes/images/access/util/splitter/mini-left.gif')}.x-layout-split-right{background:no-repeat top left;background-image:url('../../resources/themes/images/access/util/splitter/mini-right.gif')}.x-layout-split-top{background:no-repeat top left;background-image:url('../../resources/themes/images/access/util/splitter/mini-top.gif')}.x-layout-split-bottom{background:no-repeat top left;background-image:url('../../resources/themes/images/access/util/splitter/mini-bottom.gif')}.x-splitter-collapsed .x-layout-split-left{background:no-repeat top left;background-image:url('../../resources/themes/images/access/util/splitter/mini-right.gif')}.x-splitter-collapsed .x-layout-split-right{background:no-repeat top right;background-image:url('../../resources/themes/images/access/util/splitter/mini-left.gif')}.x-splitter-collapsed .x-layout-split-top{background:no-repeat top left;background-image:url('../../resources/themes/images/access/util/splitter/mini-bottom.gif')}.x-splitter-collapsed .x-layout-split-bottom{background:no-repeat top left;background-image:url('../../resources/themes/images/access/util/splitter/mini-top.gif')}.x-splitter-horizontal{cursor:e-resize;cursor:row-resize;font-size:1px}.x-splitter-vertical{cursor:e-resize;cursor:col-resize;font-size:1px}.x-splitter-collapsed,.x-splitter-horizontal-noresize,.x-splitter-vertical-noresize{cursor:default}.x-splitter-active{z-index:4;font-size:1px;background-color:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-splitter-active .x-collapse-el{filter:alpha(opacity=30);opacity:.3}.x-proxy-el{position:absolute;background:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-docked{position:absolute!important;z-index:1}.x-docked-top{border-bottom-width:0!important}.x-docked-bottom{border-top-width:0!important}.x-docked-left{border-right-width:0!important}.x-docked-right{border-left-width:0!important}.x-docked-noborder-top{border-top-width:0!important}.x-docked-noborder-right{border-right-width:0!important}.x-docked-noborder-bottom{border-bottom-width:0!important}.x-docked-noborder-left{border-left-width:0!important}.x-box-inner{overflow:hidden;zoom:1;position:relative;left:0;top:0}.x-box-item{position:absolute!important;left:0;top:0}.x-rtl .x-box-item{right:0;left:auto}.x-box-layout-ct,.x-border-layout-ct{overflow:hidden;zoom:1}.x-border-layout-ct{background-color:#3f4757;position:relative}.x-overflow-hidden{overflow:hidden!important}.x-inline-children>*{display:inline-block!important}.x-abs-layout-ct{position:relative}.x-abs-layout-item{position:absolute!important}.x-fit-item{position:relative}.x-border-region-slide-in{z-index:5}.x-region-collapsed-placeholder{z-index:4}.x-accordion-hd .x-panel-header-text{color:white;font-weight:normal}.x-accordion-hd{background:#5c6b82!important;-moz-box-shadow:inset 0 0 0 0 #5c6b82;-webkit-box-shadow:inset 0 0 0 0 #5c6b82;-o-box-shadow:inset 0 0 0 0 #5c6b82;box-shadow:inset 0 0 0 0 #5c6b82}.x-accordion-hd .x-tool-collapse-top,.x-accordion-hd .x-tool-collapse-right,.x-accordion-hd .x-tool-collapse-bottom,.x-accordion-hd .x-tool-collapse-left{background-position:0 -255px}.x-accordion-hd .x-tool-expand-top,.x-accordion-hd .x-tool-expand-right,.x-accordion-hd .x-tool-expand-bottom,.x-accordion-hd .x-tool-expand-left{background-position:0 -240px}.x-accordion-hd .x-tool-over .x-tool-collapse-top,.x-accordion-hd .x-tool-over .x-tool-collapse-right,.x-accordion-hd .x-tool-over .x-tool-collapse-bottom,.x-accordion-hd .x-tool-over .x-tool-collapse-left{background-position:-15px -255px}.x-accordion-hd .x-tool-over .x-tool-expand-top,.x-accordion-hd .x-tool-over .x-tool-expand-right,.x-accordion-hd .x-tool-over .x-tool-expand-bottom,.x-accordion-hd .x-tool-over .x-tool-expand-left{background-position:-15px -240px}.x-accordion-hd{border-width:1px 0 1px 0!important;padding:4px 5px 5px 5px;border-top-color:#606877!important}.x-accordion-body{border-width:0!important}.x-accordion-hd-sibling-expanded{border-top-color:#18181a!important;-moz-box-shadow:inset 0 1px 0 0 #606877;-webkit-box-shadow:inset 0 1px 0 0 #606877;-o-box-shadow:inset 0 1px 0 0 #606877;box-shadow:inset 0 1px 0 0 #606877}.x-accordion-hd-last-collapsed{border-bottom-color:#5c6b82!important}.x-frame-tl,.x-frame-tr,.x-frame-tc,.x-frame-bl,.x-frame-br,.x-frame-bc{overflow:hidden;background-repeat:no-repeat}.x-frame-tc,.x-frame-bc{background-repeat:repeat-x}.x-frame-mc{position:relative;background-repeat:repeat-x;overflow:hidden}.x-box-scroller-left{float:left;height:100%;z-index:5}.x-box-scroller-left .x-toolbar-scroll-left,.x-box-scroller-left .x-tabbar-scroll-left{width:18px;position:relative;cursor:pointer;height:27px;background:transparent no-repeat -18px 0;background-image:url('../../resources/themes/images/access/tab-bar/scroll-left.gif')}.x-box-scroller-left .x-toolbar-scroll-left-hover{background-position:0 0}.x-box-scroller-left .x-toolbar-scroll-left-disabled,.x-box-scroller-left .x-tabbar-scroll-left-disabled{background-position:-18px 0;filter:alpha(opacity=50);opacity:.5;cursor:default}.x-box-scroller-left .x-toolbar-scroll-left{background-image:url('../../resources/themes/images/access/toolbar/scroll-left.gif');background-position:-14px 0}.x-box-scroller-left .x-toolbar-scroll-left-hover{background-position:0 0}.x-box-scroller-left .x-toolbar-scroll-left-disabled{background-position:-14px 0}.x-box-scroller-left .x-toolbar-scroll-left{width:14px;height:22px;border-bottom:1px solid #8db2e3}.x-horizontal-box-overflow-body{float:left}.x-box-scroller-right{float:right;height:100%;z-index:5}.x-box-scroller-right .x-toolbar-scroll-right,.x-box-scroller-right .x-tabbar-scroll-right{width:18px;position:relative;cursor:pointer;height:27px;background:transparent no-repeat 0 0;background-image:url('../../resources/themes/images/access/tab-bar/scroll-right.gif')}.x-box-scroller-right .x-toolbar-scroll-right-hover{background-position:-18px 0}.x-box-scroller-right .x-toolbar-scroll-right-disabled,.x-box-scroller-right .x-tabbar-scroll-right-disabled{background-position:0 0;filter:alpha(opacity=50);opacity:.5;cursor:default}.x-box-scroller-right .x-toolbar-scroll-right{background-image:url('../../resources/themes/images/access/toolbar/scroll-right.gif')}.x-box-scroller-right .x-toolbar-scroll-right-hover{background-position:-14px 0}.x-box-scroller-right .x-toolbar-scroll-right-disabled{background-position:0 0}.x-box-scroller-right .x-toolbar-scroll-right{width:14px;height:22px;border-bottom:1px solid #8db2e3}.x-box-scroller-top .x-box-scroller{line-height:0;font-size:0}.x-box-scroller-top .x-menu-scroll-top{background:transparent no-repeat center center;background-image:url('../../resources/themes/images/access/layout/mini-top.gif');height:8px;cursor:pointer}.x-box-scroller-bottom .x-box-scroller{line-height:0;font-size:0}.x-box-scroller-bottom .x-menu-scroll-bottom{background:transparent no-repeat center center;background-image:url('../../resources/themes/images/access/layout/mini-bottom.gif');height:8px;cursor:pointer}.x-box-menu-right{float:right;padding-right:2px}.x-column{float:left}.x-ie6 .x-column{display:inline}.x-quirks .x-ie .x-form-layout-table,.x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item{position:relative}.x-tool{height:15px}.x-tool img{overflow:hidden;width:15px;height:15px;cursor:pointer;background-color:transparent;background-repeat:no-repeat;background-image:url('../../resources/themes/images/access/tools/tool-sprites.gif');margin:0}.x-panel-header-horizontal .x-tool,.x-window-header-horizontal .x-tool{margin-left:2px}.x-panel-header-vertical .x-tool,.x-window-header-vertical .x-tool{margin-top:2px}.x-panel-header-vertical .x-tool-top,.x-window-header-vertical .x-tool-top{margin:0 0 4px}.x-tool-placeholder{visibility:hidden}.x-tool-toggle{background-position:0 -60px}.x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-panel-collapsed .x-tool-toggle,.x-fieldset-collapsed .x-tool-toggle{background-position:0 -75px}.x-panel-collapsed .x-tool-over .x-tool-toggle,.x-fieldset-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.x-tool-close{background-position:0 0}.x-tool-minimize{background-position:0 -15px}.x-tool-maximize{background-position:0 -30px}.x-tool-restore{background-position:0 -45px}.x-tool-gear{background-position:0 -90px}.x-tool-prev{background-position:0 -105px}.x-tool-next{background-position:0 -120px}.x-tool-pin{background-position:0 -135px}.x-tool-unpin{background-position:0 -150px}.x-tool-right{background-position:0 -165px}.x-tool-left{background-position:0 -180px}.x-tool-help{background-position:0 -300px}.x-tool-save{background-position:0 -285px}.x-tool-search{background-position:0 -270px}.x-tool-minus{background-position:0 -255px}.x-tool-plus{background-position:0 -240px}.x-tool-refresh{background-position:0 -225px}.x-tool-up{background-position:0 -210px}.x-tool-down{background-position:0 -195px}.x-tool-collapse{background-position:0 -345px}.x-tool-expand{background-position:0 -330px}.x-tool-print{background-position:0 -315px}.x-tool-expand-bottom,.x-tool-collapse-bottom{background-position:0 -195px}.x-tool-expand-top,.x-tool-collapse-top{background-position:0 -210px}.x-tool-expand-left,.x-tool-collapse-left{background-position:0 -180px}.x-tool-expand-right,.x-tool-collapse-right{background-position:0 -165px}.x-tool-over .x-tool-close{background-position:-15px 0}.x-tool-over .x-tool-minimize{background-position:-15px -15px}.x-tool-over .x-tool-maximize{background-position:-15px -30px}.x-tool-over .x-tool-restore{background-position:-15px -45px}.x-tool-over .x-tool-gear{background-position:-15px -90px}.x-tool-over .x-tool-prev{background-position:-15px -105px}.x-tool-over .x-tool-next{background-position:-15px -120px}.x-tool-over .x-tool-pin{background-position:-15px -135px}.x-tool-over .x-tool-unpin{background-position:-15px -150px}.x-tool-over .x-tool-right{background-position:-15px -165px}.x-tool-over .x-tool-left{background-position:-15px -180px}.x-tool-over .x-tool-down{background-position:-15px -195px}.x-tool-over .x-tool-up{background-position:-15px -210px}.x-tool-over .x-tool-refresh{background-position:-15px -225px}.x-tool-over .x-tool-plus{background-position:-15px -240px}.x-tool-over .x-tool-minus{background-position:-15px -255px}.x-tool-over .x-tool-search{background-position:-15px -270px}.x-tool-over .x-tool-save{background-position:-15px -285px}.x-tool-over .x-tool-help{background-position:-15px -300px}.x-tool-over .x-tool-print{background-position:-15px -315px}.x-tool-over .x-tool-expand{background-position:-15px -330px}.x-tool-over .x-tool-collapse{background-position:-15px -345px}.x-tool-over .x-tool-expand-bottom,.x-tool-over .x-tool-collapse-bottom{background-position:-15px -195px}.x-tool-over .x-tool-expand-top,.x-tool-over .x-tool-collapse-top{background-position:-15px -210px}.x-tool-over .x-tool-expand-left,.x-tool-over .x-tool-collapse-left{background-position:-15px -180px}.x-tool-over .x-tool-expand-right,.x-tool-over .x-tool-collapse-right{background-position:-15px -165px}.x-horizontal-scroller-present .x-grid-body{border-bottom-width:0}.x-vertical-scroller-present .x-grid-body{border-right-width:0}.x-scroller{overflow:hidden}.x-scroller-vertical{border:1px solid #18181a;border-top-color:#373c4b}.x-scroller-horizontal{border:1px solid #18181a}.x-vertical-scroller-present .x-scroller-horizontal{border-right-width:0}.x-scroller-ct{overflow:hidden;position:absolute;margin:0;padding:0;border:0;left:0;top:0;box-sizing:content-box!important;-ms-box-sizing:content-box!important;-moz-box-sizing:content-box!important;-webkit-box-sizing:content-box!important}.x-scroller-vertical .x-scroller-ct{overflow-y:scroll}.x-scroller-horizontal .x-scroller-ct{overflow-x:scroll}.x-html html,.x-html address,.x-html blockquote,.x-html body,.x-html dd,.x-html div,.x-html dl,.x-html dt,.x-html fieldset,.x-html form,.x-html frame,.x-html frameset,.x-html h1,.x-html h2,.x-html h3,.x-html h4,.x-html h5,.x-html h6,.x-html noframes,.x-html ol,.x-html p,.x-html ul,.x-html center,.x-html dir,.x-html hr,.x-html menu,.x-html pre{display:block}.x-html li{display:list-item;list-style:disc}.x-html head{display:none}.x-html table{display:table}.x-html tr{display:table-row}.x-html thead{display:table-header-group}.x-html tbody{display:table-row-group}.x-html tfoot{display:table-footer-group}.x-html col{display:table-column}.x-html colgroup{display:table-column-group}.x-html td,.x-html th{display:table-cell}.x-html caption{display:table-caption}.x-html th{font-weight:bolder;text-align:center}.x-html caption{text-align:center}.x-html body{margin:8px}.x-html h1{font-size:2em;margin:.67em 0}.x-html h2{font-size:1.5em;margin:.75em 0}.x-html h3{font-size:1.17em;margin:.83em 0}.x-html h4,.x-html p,.x-html blockquote,.x-html ul,.x-html fieldset,.x-html form,.x-html ol,.x-html dl,.x-html dir,.x-html menu{margin:1.12em 0}.x-html h5{font-size:.83em;margin:1.5em 0}.x-html h6{font-size:.75em;margin:1.67em 0}.x-html h1,.x-html h2,.x-html h3,.x-html h4,.x-html h5,.x-html h6,.x-html b,.x-html strong{font-weight:bolder}.x-html blockquote{margin-left:40px;margin-right:40px}.x-html i,.x-html cite,.x-html em,.x-html var,.x-html address{font-style:italic}.x-html pre,.x-html tt,.x-html code,.x-html kbd,.x-html samp{font-family:monospace}.x-html pre{white-space:pre}.x-html button,.x-html textarea,.x-html input,.x-html select{display:inline-block}.x-html big{font-size:1.17em}.x-html small,.x-html sub,.x-html sup{font-size:.83em}.x-html sub{vertical-align:sub}.x-html sup{vertical-align:super}.x-html table{border-spacing:2px}.x-html thead,.x-html tbody,.x-html tfoot{vertical-align:middle}.x-html td,.x-html th{vertical-align:inherit}.x-html s,.x-html strike,.x-html del{text-decoration:line-through}.x-html hr{border:1px inset}.x-html ol,.x-html ul,.x-html dir,.x-html menu,.x-html dd{margin-left:40px}.x-html ul,.x-html menu,.x-html dir{list-style-type:disc}.x-html ol{list-style-type:decimal}.x-html ol ul,.x-html ul ol,.x-html ul ul,.x-html ol ol{margin-top:0;margin-bottom:0}.x-html u,.x-html ins{text-decoration:underline}.x-html br:before{content:"\A"}.x-html :before,.x-html :after{white-space:pre-line}.x-html center{text-align:center}.x-html :link,.x-html :visited{text-decoration:underline}.x-html :focus{outline:invert dotted thin}.x-html BDO[DIR="ltr"]{direction:ltr;unicode-bidi:bidi-override}.x-html BDO[DIR="rtl"]{direction:rtl;unicode-bidi:bidi-override}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-all-debug.css
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-all-debug.css	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-all-debug.css	(revision 18277)
@@ -0,0 +1,9954 @@
+/*
+This file is part of Ext JS 4.1
+
+Copyright (c) 2011-2012 Sencha Inc
+
+Contact:  http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2012-07-04 21:11:01 (65ff594cd80b9bad45df640c22cc0adb52c95a7b)
+*/
+/**
+ * @class Global_CSS
+ *
+ * Global CSS variables and mixins of Sencha Touch.
+ */
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+/**
+ * @var {string} $theme-name
+ * The name of the theme. This must match the the output directory of the images.
+ * (defaults to 'default')
+ */
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+/**
+ * @var {string} $font-family
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $base-gradient
+ * The base gradient to be used throughout the theme.
+ */
+/**
+ * @var {color} $base-color
+ * The base color to be used throughout the theme.
+ */
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules
+ */
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+/**
+ * @var {boolean} $compile-all
+ * True to copile all CSS, even if above include rules are false
+ */
+/**
+ * @var {boolean} $scope-reset-css
+ * True to scope the reset CSS within the $prefix variable.
+ */
+/**
+ * @var {color} $css-shadow-background-color
+ * The base color for CSS shadows
+ */
+/**
+ * @var {color} $include-shadow-images
+ * True to include all shadow images.
+ */
+/**
+ * @class Ext.form.field.Base
+ */
+/**
+ * @var {measurement} $form-field-height
+ * Height for form fields.
+ */
+/**
+ * @var {measurement} $form-toolbar-field-height
+ * Height for form fields in toolbar.
+ */
+/**
+ * @var {measurement} $form-error-icon-width
+ * Width for form error icons.
+ */
+/**
+ * @var {measurement} $form-field-padding
+ * Padding around form fields.
+ */
+/**
+ * @var {measurement} $form-field-font-size
+ * Font size for form fields.
+ */
+/**
+ * @var {font-family} $form-field-font-family
+ * Font family for form fields.
+ */
+/**
+ * @var {font-weight} $form-field-font-weight
+ * Font weight for form fields.
+ */
+/**
+ * @var {font} $form-field-font
+ * Font for form fields.
+ */
+/**
+ * @var {color} $form-field-color
+ * Text color for form fields.
+ */
+/**
+ * @var {color} $form-field-empty-color
+ * Text color for empty form fields.
+ */
+/**
+ * @var {color} $form-field-border-color
+ * Border color for form fields.
+ */
+/**
+ * @var {measurement} $form-field-border-width
+ * Border width for form fields.
+ */
+/**
+ * @var {color} $form-field-focus-border-color
+ * Border color for focused form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-border-color
+ * Border color for invalid form fields.
+ */
+/**
+ * @var {color} $form-field-background-color
+ * Background color for form fields.
+ */
+/**
+ * @var {string} $form-field-background-image
+ * Background image for form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-background-color
+ * Background color for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-image
+ * Background image for invalid form fields.
+ */
+/**
+ * @var {background-repeat} $form-field-invalid-background-repeat
+ * Background repeat for invalid form fields.
+ */
+/**
+ * @var {background-position} $form-field-invalid-background-position
+ * Background position for invalid form fields.
+ */
+/**
+ * @class Ext.form.field.TextArea
+ */
+/**
+ * @class Ext.form.Label
+ */
+/**
+ * @class Ext.form.field.Checkbox
+ */
+/**
+ * @class Ext.form.field.Radio
+ */
+/* Error messages */
+/**
+ * @class Ext.form.field.Trigger
+ */
+/**
+ * @class Ext.form.FieldSet
+ */
+/**
+ * @class Ext.slider.Multi
+ */
+/**
+ * Creates a background gradient.
+ *
+ * @param {Color} $bg-color The background color of the gradient
+ * @param {String/List} [$type] The type of gradient to be used. Can either
+ * be a String which is a predefined gradient, or it can can be a list of
+ * color_stops. If none is set, it will still set the `background-color`
+ * to the $background-color.
+ * @param {String} [$direction=top] The direction of the gradient. Can either be
+ * `top` or `left`.
+ * @member Global_CSS
+ */
+/*
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error.
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to
+ * be true.
+ */
+/* line 77, ../themes/stylesheets/ext4/default/core/_reset.scss */
+html, body, div, dl, dt, dd, ul, ol, li, h1, h2, h3,
+h4, h5, h6, pre, code, form, fieldset, legend,
+input, textarea, p, blockquote, th, td {
+  margin: 0;
+  padding: 0; }
+
+/* line 82, ../themes/stylesheets/ext4/default/core/_reset.scss */
+table {
+  border-collapse: collapse;
+  border-spacing: 0; }
+
+/* line 87, ../themes/stylesheets/ext4/default/core/_reset.scss */
+fieldset, img {
+  border: 0; }
+
+/* line 92, ../themes/stylesheets/ext4/default/core/_reset.scss */
+address, caption, cite, code,
+dfn, em, strong, th, var {
+  font-style: normal;
+  font-weight: normal; }
+
+/* line 97, ../themes/stylesheets/ext4/default/core/_reset.scss */
+li {
+  list-style: none; }
+
+/* line 101, ../themes/stylesheets/ext4/default/core/_reset.scss */
+caption, th {
+  text-align: left; }
+
+/* line 105, ../themes/stylesheets/ext4/default/core/_reset.scss */
+h1, h2, h3, h4, h5, h6 {
+  font-size: 100%; }
+
+/* line 110, ../themes/stylesheets/ext4/default/core/_reset.scss */
+q:before,
+q:after {
+  content: ""; }
+
+/* line 114, ../themes/stylesheets/ext4/default/core/_reset.scss */
+abbr, acronym {
+  border: 0;
+  font-variant: normal; }
+
+/* line 119, ../themes/stylesheets/ext4/default/core/_reset.scss */
+sup {
+  vertical-align: text-top; }
+
+/* line 123, ../themes/stylesheets/ext4/default/core/_reset.scss */
+sub {
+  vertical-align: text-bottom; }
+
+/* line 127, ../themes/stylesheets/ext4/default/core/_reset.scss */
+input, textarea, select {
+  font-family: inherit;
+  font-size: inherit;
+  font-weight: inherit; }
+
+/* line 133, ../themes/stylesheets/ext4/default/core/_reset.scss */
+*:focus {
+  outline: none; }
+
+/* line 138, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-border-box,
+.x-border-box * {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  -webkit-box-sizing: border-box; }
+
+/* line 1, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-body {
+  color: black;
+  font-size: 12px;
+  font-family: tahoma, arial, verdana, sans-serif; }
+
+/* line 7, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-rtl {
+  direction: rtl; }
+
+/* line 11, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ltr {
+  direction: ltr; }
+
+/* line 15, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-clear {
+  overflow: hidden;
+  clear: both;
+  font-size: 0;
+  line-height: 0;
+  display: table; }
+
+/* line 23, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-strict .x-ie7 .x-clear {
+  height: 0;
+  width: 0; }
+
+/* line 31, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-layer {
+  position: absolute !important;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 37, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-shim {
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 45, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hide-display {
+  display: none !important; }
+
+/* line 49, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hide-visibility {
+  visibility: hidden !important; }
+
+/* line 56, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-item-disabled .x-form-item-label,
+.x-item-disabled .x-form-field,
+.x-item-disabled .x-form-cb-label,
+.x-item-disabled .x-form-trigger {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 60, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ie6 .x-item-disabled {
+  filter: none; }
+
+/* line 65, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hidden,
+.x-hide-offsets {
+  display: block !important;
+  visibility: hidden !important;
+  position: absolute!important;
+  left: -10000px !important;
+  top: -10000px !important; }
+
+/* line 75, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hide-nosize {
+  height: 0!important;
+  width: 0!important; }
+
+/* line 80, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-masked-relative {
+  position: relative; }
+
+/* line 86, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ie6 .x-masked select,
+.x-ie6.x-body-masked select {
+  visibility: hidden !important; }
+
+/* line 92, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-css-shadow {
+  position: absolute;
+  -moz-border-radius: 5px 5px;
+  -webkit-border-radius: 5px 5px;
+  -o-border-radius: 5px 5px;
+  -ms-border-radius: 5px 5px;
+  -khtml-border-radius: 5px 5px;
+  border-radius: 5px 5px; }
+
+/* line 98, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ie-shadow {
+  background-color: #777;
+  display: none;
+  position: absolute;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 107, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tl {
+  background: transparent no-repeat 0 0;
+  zoom: 1; }
+
+/* line 112, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tc {
+  height: 8px;
+  background: transparent repeat-x 0 0;
+  overflow: hidden; }
+
+/* line 118, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tr {
+  background: transparent no-repeat right -8px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-ml {
+  background: transparent repeat-y 0;
+  padding-left: 4px;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 129, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc {
+  background: repeat-x 0 -16px;
+  padding: 4px 10px; }
+
+/* line 134, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc h3 {
+  margin: 0 0 4px 0;
+  zoom: 1; }
+
+/* line 139, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mr {
+  background: transparent repeat-y right;
+  padding-right: 4px;
+  overflow: hidden; }
+
+/* line 145, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bl {
+  background: transparent no-repeat 0 -16px;
+  zoom: 1; }
+
+/* line 150, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bc {
+  background: transparent repeat-x 0 -8px;
+  height: 8px;
+  overflow: hidden; }
+
+/* line 156, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-br {
+  background: transparent no-repeat right -24px; }
+
+/* line 160, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tl, .x-box-bl {
+  padding-left: 8px;
+  overflow: hidden; }
+
+/* line 165, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tr, .x-box-br {
+  padding-right: 8px;
+  overflow: hidden; }
+
+/* line 170, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tl {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 174, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tc {
+  background-image: url('../../resources/themes/images/default/box/tb.gif'); }
+
+/* line 178, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tr {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 182, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-ml {
+  background-image: url('../../resources/themes/images/default/box/l.gif'); }
+
+/* line 186, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc {
+  background-color: #eee;
+  background-image: url('../../resources/themes/images/default/box/tb.gif');
+  font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;
+  color: #393939;
+  font-size: 15px; }
+
+/* line 194, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc h3 {
+  font-size: 18px;
+  font-weight: bold; }
+
+/* line 199, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mr {
+  background-image: url('../../resources/themes/images/default/box/r.gif'); }
+
+/* line 203, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bl {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 207, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bc {
+  background-image: url('../../resources/themes/images/default/box/tb.gif'); }
+
+/* line 211, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-br {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 215, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr {
+  background-image: url('../../resources/themes/images/default/box/corners-blue.gif'); }
+
+/* line 219, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc {
+  background-image: url('../../resources/themes/images/default/box/tb-blue.gif'); }
+
+/* line 223, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-mc {
+  background-color: #c3daf9; }
+
+/* line 227, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-mc h3 {
+  color: #17385b; }
+
+/* line 231, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-ml {
+  background-image: url('../../resources/themes/images/default/box/l-blue.gif'); }
+
+/* line 235, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-mr {
+  background-image: url('../../resources/themes/images/default/box/r-blue.gif'); }
+
+/* line 239, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-container {
+  zoom: 1; }
+  /* line 244, ../themes/stylesheets/ext4/default/core/_core.scss */
+  .x-container:before {
+    content: "";
+    clear: both;
+    display: table; }
+
+/* line 254, ../themes/stylesheets/ext4/default/core/_core.scss */
+table.x-container:before,
+tbody.x-container:before,
+tr.x-container:before {
+  display: none; }
+
+/* line 1, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-element {
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px; }
+
+/* line 9, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame {
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  z-index: 100000000;
+  width: 0px;
+  height: 0px; }
+
+/* line 21, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom,
+.x-focus-frame-left,
+.x-focus-frame-right {
+  position: absolute;
+  top: 0px;
+  left: 0px; }
+
+/* line 28, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom {
+  border-top: solid 2px #15428b;
+  height: 2px; }
+
+/* line 34, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame-left,
+.x-focus-frame-right {
+  border-left: solid 2px #15428b;
+  width: 2px; }
+
+/**
+ * Creates the base structure of a BoundList.
+ * @member Ext.view.BoundList
+ */
+/**
+ * Creates the base structure of an Ext.Button
+ * @member Ext.button.Button
+ */
+/**
+ * Creates a visual theme of an Ext.Button
+ * @member Ext.button.Button
+ */
+/**
+ * Creates the base structure of a button group.
+ * @member Ext.container.ButtonGroup
+ */
+/**
+ * Creates a visual theme of a button group.
+ * @member Ext.container.ButtonGroup
+ */
+/**
+ * Creates the base structure of a date picker.
+ * @member Ext.picker.Date
+ */
+/**
+ * Creates base structure for Ext.picker.Color
+ * @member Ext.picker.Color
+ */
+/**
+ * Creates the base structure of a Menu
+ * @member Ext.menu.Menu
+ */
+/**
+ * Create the base structure of an Ext.Panel
+ * @member Ext.panel.Panel
+ */
+/**
+ * Creates a visual theme for an Ext.Panel
+ * @member Ext.panel.Panel
+ */
+/**
+ * Creates base structure for Toolbar
+ * @member Ext.toolbar.Toolbar
+ */
+/**
+ * Creates a visual theme for an Toolbar.
+ * @param {String} $ui The name of the UI
+ * @param {Color} $background-color The background color of the toolbar (defaults to transparent)
+ * @param {Gradient/color-stops} $background-gradient The background gradient of the toolbar (defaults to null)
+ * @param {Color} $border-color The border color of the toolbar (defaults to null)
+ * @member Ext.toolbar.Toolbar
+ */
+/**
+ * Creates the base structure of Ext.form.Panel.
+ * @member Ext.form.Panel
+ */
+/**
+ * Creates the base structure of form field.
+ * @member Ext.form.field.Base
+ */
+/**
+ * Creates the base structure of FieldSet.
+ * @member Ext.form.FieldSet
+ */
+/**
+ * Creates the base structure of file field.
+ * @member Ext.form.field.File
+ */
+/**
+ * Creates the base structure of checkbox field.
+ * @member Ext.form.field.Checkbox
+ */
+/**
+ * Creates the base structure of CheckboxGroup.
+ * @member Ext.form.CheckboxGroup
+ */
+/**
+ * Creates the base structure of trigger field.
+ * @member Ext.form.field.Trigger
+ */
+/**
+ * Creates the base structure of HtmlEditor field.
+ * @member Ext.form.field.HtmlEditor
+ */
+/**
+ * Creates the base structure of QuickTip.
+ * @member Ext.tip.QuickTip
+ */
+/**
+ * Creates the base structure of an Ext.Window
+ * @member Ext.window.Window
+ */
+/**
+ * Creates a visual theme for an Ext.Panel
+ * @member Ext.window.Window
+ */
+/**
+ * Creates a visual theme for TabBar
+ * @member Ext.tab.Bar
+ */
+/**
+ * Creates the base structure of a Tab.
+ * @member Ext.tab.Tab
+ */
+/**
+ * Creates the base structure of slider.
+ * @member Ext.slider.Multi
+ */
+/**
+ * Creates base structure for a Grid.
+ * @member Ext.grid.Panel
+ */
+/**
+ * Creates the base structure of Tree.
+ * @member Ext.tree.Panel
+ */
+/* Styles for Ext.LoadMask */
+/* line 3, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+.x-mask {
+  z-index: 100;
+  position: absolute;
+  top: 0;
+  left: 0;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  width: 100%;
+  height: 100%;
+  zoom: 1;
+  background: #cccccc; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+.x-mask-msg {
+  z-index: 20001;
+  position: absolute;
+  top: 0;
+  left: 0;
+  padding: 2px;
+  border: 1px solid;
+  border-color: #99bce8;
+  background-image: none;
+  background-color: #dfe9f6; }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+  .x-mask-msg div {
+    padding: 5px 10px 5px 25px;
+    background-image: url('../../resources/themes/images/default/grid/loading.gif');
+    background-repeat: no-repeat;
+    background-position: 5px center;
+    cursor: wait;
+    border: 1px solid #a3bad9;
+    background-color: #eeeeee;
+    color: #222222;
+    font: normal 11px tahoma, arial, verdana, sans-serif; }
+
+/**
+ * Creates the base structure of an Ext.ProgressBar
+ * @member Ext.ProgressBar
+ */
+/**
+ * Creates a visual theme for an Ext.ProgressBar
+ * @member Ext.ProgressBar
+ */
+/**
+ * Creates base structure for a Draw Component.
+ * @member Ext.draw.Component
+ */
+/**
+ * Creates the base structure of Viewport.
+ * @member Ext.container.Viewport
+ */
+/**
+ * W3C suggested default style sheet for HTML 4:
+ * [http://www.w3.org/TR/CSS21/sample.html](http://www.w3.org/TR/CSS21/sample.html)
+ *
+ * @member Global_CSS
+ */
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist {
+  border-width: 1px;
+  border-style: solid;
+  border-color: #98c0f4;
+  background: white; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-boundlist .x-toolbar {
+    border-width: 1px 0 0 0; }
+
+/* line 22, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-strict .x-ie6 .x-boundlist-list-ct,
+.x-strict .x-ie7 .x-boundlist-list-ct {
+  position: relative; }
+
+/* line 29, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-item {
+  padding: 2px;
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  cursor: pointer;
+  cursor: hand;
+  position: relative;
+  /*allow hover in IE on empty items*/
+  border-width: 1px;
+  border-style: dotted;
+  border-color: white; }
+
+/* line 43, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-selected {
+  background: #cbdaf0;
+  border-color: #8eabe4; }
+
+/* line 48, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-item-over {
+  background: #dfe8f6;
+  border-color: #a3bae9; }
+
+/* line 53, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-floating {
+  border-top-width: 0; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-above {
+  border-top-width: 1px;
+  border-bottom-width: 1px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn {
+  display: inline-block;
+  zoom: 1;
+  *display: inline;
+  position: relative;
+  cursor: pointer;
+  cursor: hand;
+  white-space: nowrap;
+  vertical-align: middle;
+  background-repeat: no-repeat; }
+  /* line 19, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn * {
+    cursor: pointer;
+    cursor: hand; }
+  /* line 26, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn em {
+    background-repeat: no-repeat; }
+    /* line 30, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-btn em a {
+      text-decoration: none;
+      display: block;
+      color: inherit;
+      width: 100%;
+      zoom: 1; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn button {
+    width: 100%;
+    display: block;
+    margin: 0;
+    padding: 0;
+    border: 0;
+    background: none;
+    outline: 0 none;
+    overflow: hidden;
+    vertical-align: bottom;
+    -webkit-appearance: none; }
+    /* line 59, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-btn button::-moz-focus-inner {
+      border: 0;
+      padding: 0; }
+  /* line 65, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn .x-btn-inner {
+    display: block;
+    white-space: nowrap;
+    background-color: transparent;
+    background-repeat: no-repeat;
+    background-position: left center;
+    overflow: hidden; }
+  /* line 74, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn .x-btn-left .x-btn-inner {
+    text-align: left; }
+  /* line 78, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn .x-btn-center .x-btn-inner {
+    text-align: center; }
+  /* line 82, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn .x-btn-right .x-btn-inner {
+    text-align: right; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-disabled span {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+  /* line 91, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-disabled span, .x-ie7 .x-btn-disabled span {
+    filter: none; }
+
+/* line 98, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie7 .x-btn-disabled,
+.x-ie8 .x-btn-disabled {
+  filter: none; }
+
+/* line 105, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-disabled .x-btn-icon,
+.x-ie7 .x-btn-disabled .x-btn-icon,
+.x-ie8 .x-btn-disabled .x-btn-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+
+/* IE9 shows scrollbars in a button unless this is set  */
+/* line 112, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie9 .x-btn button {
+  overflow: visible!important; }
+
+/* line 117, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+* html .x-ie .x-btn button {
+  width: 1px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn button {
+  overflow-x: visible;
+  /*prevents extra horiz space in IE*/
+  vertical-align: baseline;
+  /*IE doesn't like bottom*/ }
+
+/* line 129, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-strict .x-ie6 .x-btn .x-frame-mc,
+.x-strict .x-ie7 .x-btn .x-frame-mc {
+  height: 100%; }
+
+/* Keep the selector simple ".x-btn .x-frame-mc" is enough to target the center frame of the button table */
+/* line 138, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn .x-frame-mc {
+  vertical-align: middle;
+  white-space: nowrap;
+  cursor: pointer; }
+
+/* Only center when all there is is text. Otherwise solo icons get centered. */
+/* line 147, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-noicon .x-frame-mc {
+  text-align: center; }
+
+/* line 153, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-icon-text-left .x-btn-icon {
+  background-position: left center; }
+
+/* line 157, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-icon-text-right .x-btn-icon {
+  background-position: right center; }
+
+/* line 161, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-icon-text-top .x-btn-icon {
+  background-position: center top; }
+
+/* line 165, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-icon-text-bottom .x-btn-icon {
+  background-position: center bottom; }
+
+/* line 170, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn button, .x-btn a {
+  position: relative; }
+  /* line 173, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn button .x-btn-icon, .x-btn a .x-btn-icon {
+    position: absolute;
+    background-repeat: no-repeat; }
+
+/* line 180, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-arrow-right {
+  background: transparent no-repeat right center;
+  padding-right: 12px; }
+  /* line 184, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-arrow-right .x-btn-inner {
+    padding-right: 0 !important; }
+
+/* line 189, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-toolbar .x-btn-arrow-right {
+  padding-right: 12px; }
+
+/* line 193, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-arrow-bottom {
+  background: transparent no-repeat center bottom;
+  padding-bottom: 12px; }
+
+/* line 198, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-arrow {
+  background-image: url('../../resources/themes/images/default/button/arrow.gif');
+  display: block; }
+
+/* line 206, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-split-right,
+.x-btn-over .x-btn-split-right {
+  background: transparent no-repeat right center;
+  background-image: url('../../resources/themes/images/default/button/s-arrow.gif');
+  padding-right: 14px !important; }
+
+/* line 213, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-split-bottom,
+.x-btn-over .x-btn-split-bottom {
+  background: transparent no-repeat center bottom;
+  background-image: url('../../resources/themes/images/default/button/s-arrow-b.gif');
+  padding-bottom: 14px; }
+
+/* line 219, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-toolbar .x-btn-split-right {
+  background-image: url('../../resources/themes/images/default/button/s-arrow-noline.gif');
+  padding-right: 12px !important; }
+
+/* line 224, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-toolbar .x-btn-split-bottom {
+  background-image: url('../../resources/themes/images/default/button/s-arrow-b-noline.gif'); }
+
+/* line 228, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-split {
+  display: block; }
+
+/* line 233, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-item-disabled,
+.x-item-disabled * {
+  cursor: default; }
+
+/* line 237, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-cycle-fixed-width .x-btn-inner {
+  text-align: inherit; }
+
+/* line 241, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-over .x-btn-split-right {
+  background-image: url('../../resources/themes/images/default/button/s-arrow-o.gif'); }
+
+/* line 242, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-over .x-btn-split-bottom {
+  background-image: url('../../resources/themes/images/default/button/s-arrow-bo.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small {
+  border-color: #d1d1d1; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-small {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -ms-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-small-mc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-bg.gif');
+  background-color: white; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-small-tl,
+.x-nbr .x-btn-default-small-bl,
+.x-nbr .x-btn-default-small-tr,
+.x-nbr .x-btn-default-small-br,
+.x-nbr .x-btn-default-small-tc,
+.x-nbr .x-btn-default-small-bc,
+.x-nbr .x-btn-default-small-ml,
+.x-nbr .x-btn-default-small-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-small-ml,
+.x-nbr .x-btn-default-small-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-small-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-default-small-tl,
+.x-strict .x-ie7 .x-btn-default-small-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 4px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon button,
+.x-btn-default-small-icon a,
+.x-btn-default-small-icon .x-btn-inner,
+.x-btn-default-small-noicon button,
+.x-btn-default-small-noicon a,
+.x-btn-default-small-noicon .x-btn-inner {
+  height: 16px;
+  line-height: 16px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon button, .x-btn-default-small-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 16px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon .x-btn-icon {
+  width: 16px;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-left button, .x-btn-default-small-icon-text-left a {
+  height: 16px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-left .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-left: 20px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-left .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-small-icon-text-left .x-btn-icon {
+    height: 16px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-right button, .x-btn-default-small-icon-text-right a {
+  height: 16px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-right .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-right: 20px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-right .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-small-icon-text-right .x-btn-icon {
+    height: 16px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-top .x-btn-inner {
+  padding-top: 20px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon {
+    width: 16px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon {
+    width: 16px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-over {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-focus {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-menu-active,
+.x-btn-default-small-pressed {
+  border-color: #9ebae1;
+  background-image: none;
+  background-color: #b6cbe4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+  background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -ms-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -ms-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-default-small-disabled .x-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn-default-small-disabled .x-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-small-disabled .x-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-over .x-frame-tl,
+.x-nbr .x-btn-default-small-over .x-frame-bl,
+.x-nbr .x-btn-default-small-over .x-frame-tr,
+.x-nbr .x-btn-default-small-over .x-frame-br,
+.x-nbr .x-btn-default-small-over .x-frame-tc,
+.x-nbr .x-btn-default-small-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-over .x-frame-ml,
+.x-nbr .x-btn-default-small-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-over .x-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-focus .x-frame-tl,
+.x-nbr .x-btn-default-small-focus .x-frame-bl,
+.x-nbr .x-btn-default-small-focus .x-frame-tr,
+.x-nbr .x-btn-default-small-focus .x-frame-br,
+.x-nbr .x-btn-default-small-focus .x-frame-tc,
+.x-nbr .x-btn-default-small-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-focus .x-frame-ml,
+.x-nbr .x-btn-default-small-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-focus .x-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-small-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-small-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-small-menu-active .x-frame-br,
+.x-nbr .x-btn-default-small-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-small-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-small-pressed .x-frame-tl,
+.x-nbr .x-btn-default-small-pressed .x-frame-bl,
+.x-nbr .x-btn-default-small-pressed .x-frame-tr,
+.x-nbr .x-btn-default-small-pressed .x-frame-br,
+.x-nbr .x-btn-default-small-pressed .x-frame-tc,
+.x-nbr .x-btn-default-small-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-small-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-small-pressed .x-frame-ml,
+.x-nbr .x-btn-default-small-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-small-pressed .x-frame-mc {
+  background-color: #b6cbe4;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-disabled .x-frame-tl,
+.x-nbr .x-btn-default-small-disabled .x-frame-bl,
+.x-nbr .x-btn-default-small-disabled .x-frame-tr,
+.x-nbr .x-btn-default-small-disabled .x-frame-br,
+.x-nbr .x-btn-default-small-disabled .x-frame-tc,
+.x-nbr .x-btn-default-small-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-disabled .x-frame-ml,
+.x-nbr .x-btn-default-small-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-disabled .x-frame-mc {
+  background-color: #f7f7f7;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-disabled-bg.gif'); }
+
+/* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-bg.gif'); }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-menu-active,
+.x-nlg .x-btn-default-small-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-pressed-bg.gif'); }
+
+/* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-disabled-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium {
+  border-color: #d1d1d1; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-medium {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -ms-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-medium-mc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif');
+  background-color: white; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-medium-tl,
+.x-nbr .x-btn-default-medium-bl,
+.x-nbr .x-btn-default-medium-tr,
+.x-nbr .x-btn-default-medium-br,
+.x-nbr .x-btn-default-medium-tc,
+.x-nbr .x-btn-default-medium-bc,
+.x-nbr .x-btn-default-medium-ml,
+.x-nbr .x-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-medium-ml,
+.x-nbr .x-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-medium-mc {
+  padding: 1px 1px 1px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-default-medium-tl,
+.x-strict .x-ie7 .x-btn-default-medium-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 3px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon button,
+.x-btn-default-medium-icon a,
+.x-btn-default-medium-icon .x-btn-inner,
+.x-btn-default-medium-noicon button,
+.x-btn-default-medium-noicon a,
+.x-btn-default-medium-noicon .x-btn-inner {
+  height: 24px;
+  line-height: 24px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon button, .x-btn-default-medium-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 24px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon .x-btn-icon {
+  width: 24px;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-left button, .x-btn-default-medium-icon-text-left a {
+  height: 24px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-left: 28px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon {
+    height: 24px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-right button, .x-btn-default-medium-icon-text-right a {
+  height: 24px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-right: 28px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon {
+    height: 24px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon {
+    width: 24px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon {
+    width: 24px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-over {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-focus {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-menu-active,
+.x-btn-default-medium-pressed {
+  border-color: #9ebae1;
+  background-image: none;
+  background-color: #b6cbe4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+  background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -ms-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -ms-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-default-medium-disabled .x-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn-default-medium-disabled .x-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-medium-disabled .x-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-over .x-frame-tl,
+.x-nbr .x-btn-default-medium-over .x-frame-bl,
+.x-nbr .x-btn-default-medium-over .x-frame-tr,
+.x-nbr .x-btn-default-medium-over .x-frame-br,
+.x-nbr .x-btn-default-medium-over .x-frame-tc,
+.x-nbr .x-btn-default-medium-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-over .x-frame-ml,
+.x-nbr .x-btn-default-medium-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-over .x-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-focus .x-frame-tl,
+.x-nbr .x-btn-default-medium-focus .x-frame-bl,
+.x-nbr .x-btn-default-medium-focus .x-frame-tr,
+.x-nbr .x-btn-default-medium-focus .x-frame-br,
+.x-nbr .x-btn-default-medium-focus .x-frame-tc,
+.x-nbr .x-btn-default-medium-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-focus .x-frame-ml,
+.x-nbr .x-btn-default-medium-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-focus .x-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-br,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-medium-pressed .x-frame-tl,
+.x-nbr .x-btn-default-medium-pressed .x-frame-bl,
+.x-nbr .x-btn-default-medium-pressed .x-frame-tr,
+.x-nbr .x-btn-default-medium-pressed .x-frame-br,
+.x-nbr .x-btn-default-medium-pressed .x-frame-tc,
+.x-nbr .x-btn-default-medium-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-medium-pressed .x-frame-ml,
+.x-nbr .x-btn-default-medium-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-medium-pressed .x-frame-mc {
+  background-color: #b6cbe4;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-disabled .x-frame-tl,
+.x-nbr .x-btn-default-medium-disabled .x-frame-bl,
+.x-nbr .x-btn-default-medium-disabled .x-frame-tr,
+.x-nbr .x-btn-default-medium-disabled .x-frame-br,
+.x-nbr .x-btn-default-medium-disabled .x-frame-tc,
+.x-nbr .x-btn-default-medium-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-disabled .x-frame-ml,
+.x-nbr .x-btn-default-medium-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-disabled .x-frame-mc {
+  background-color: #f7f7f7;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif'); }
+
+/* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif'); }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-menu-active,
+.x-nlg .x-btn-default-medium-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif'); }
+
+/* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large {
+  border-color: #d1d1d1; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-large {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -ms-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-large-mc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-bg.gif');
+  background-color: white; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-large-tl,
+.x-nbr .x-btn-default-large-bl,
+.x-nbr .x-btn-default-large-tr,
+.x-nbr .x-btn-default-large-br,
+.x-nbr .x-btn-default-large-tc,
+.x-nbr .x-btn-default-large-bc,
+.x-nbr .x-btn-default-large-ml,
+.x-nbr .x-btn-default-large-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-large-ml,
+.x-nbr .x-btn-default-large-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-large-mc {
+  padding: 1px 1px 1px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-default-large-tl,
+.x-strict .x-ie7 .x-btn-default-large-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 3px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon button,
+.x-btn-default-large-icon a,
+.x-btn-default-large-icon .x-btn-inner,
+.x-btn-default-large-noicon button,
+.x-btn-default-large-noicon a,
+.x-btn-default-large-noicon .x-btn-inner {
+  height: 32px;
+  line-height: 32px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon button, .x-btn-default-large-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 32px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon .x-btn-icon {
+  width: 32px;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-left button, .x-btn-default-large-icon-text-left a {
+  height: 32px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-left .x-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-left: 36px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-left .x-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-large-icon-text-left .x-btn-icon {
+    height: 32px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-right button, .x-btn-default-large-icon-text-right a {
+  height: 32px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-right .x-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-right: 36px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-right .x-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-large-icon-text-right .x-btn-icon {
+    height: 32px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-top .x-btn-inner {
+  padding-top: 36px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon {
+    width: 32px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 36px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 32px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon {
+    width: 32px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-over {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-focus {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-menu-active,
+.x-btn-default-large-pressed {
+  border-color: #9ebae1;
+  background-image: none;
+  background-color: #b6cbe4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+  background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -ms-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -ms-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-default-large-disabled .x-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn-default-large-disabled .x-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-large-disabled .x-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-over .x-frame-tl,
+.x-nbr .x-btn-default-large-over .x-frame-bl,
+.x-nbr .x-btn-default-large-over .x-frame-tr,
+.x-nbr .x-btn-default-large-over .x-frame-br,
+.x-nbr .x-btn-default-large-over .x-frame-tc,
+.x-nbr .x-btn-default-large-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-over .x-frame-ml,
+.x-nbr .x-btn-default-large-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-over .x-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-focus .x-frame-tl,
+.x-nbr .x-btn-default-large-focus .x-frame-bl,
+.x-nbr .x-btn-default-large-focus .x-frame-tr,
+.x-nbr .x-btn-default-large-focus .x-frame-br,
+.x-nbr .x-btn-default-large-focus .x-frame-tc,
+.x-nbr .x-btn-default-large-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-focus .x-frame-ml,
+.x-nbr .x-btn-default-large-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-focus .x-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-large-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-large-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-large-menu-active .x-frame-br,
+.x-nbr .x-btn-default-large-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-large-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-large-pressed .x-frame-tl,
+.x-nbr .x-btn-default-large-pressed .x-frame-bl,
+.x-nbr .x-btn-default-large-pressed .x-frame-tr,
+.x-nbr .x-btn-default-large-pressed .x-frame-br,
+.x-nbr .x-btn-default-large-pressed .x-frame-tc,
+.x-nbr .x-btn-default-large-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-large-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-large-pressed .x-frame-ml,
+.x-nbr .x-btn-default-large-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-large-pressed .x-frame-mc {
+  background-color: #b6cbe4;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-disabled .x-frame-tl,
+.x-nbr .x-btn-default-large-disabled .x-frame-bl,
+.x-nbr .x-btn-default-large-disabled .x-frame-tr,
+.x-nbr .x-btn-default-large-disabled .x-frame-br,
+.x-nbr .x-btn-default-large-disabled .x-frame-tc,
+.x-nbr .x-btn-default-large-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-disabled .x-frame-ml,
+.x-nbr .x-btn-default-large-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-disabled .x-frame-mc {
+  background-color: #f7f7f7;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-disabled-bg.gif'); }
+
+/* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-bg.gif'); }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-menu-active,
+.x-nlg .x-btn-default-large-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-pressed-bg.gif'); }
+
+/* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-disabled-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small {
+  border-color: transparent; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-toolbar-small {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-toolbar-small-mc {
+  background-color: transparent; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-small-tl,
+.x-nbr .x-btn-default-toolbar-small-bl,
+.x-nbr .x-btn-default-toolbar-small-tr,
+.x-nbr .x-btn-default-toolbar-small-br,
+.x-nbr .x-btn-default-toolbar-small-tc,
+.x-nbr .x-btn-default-toolbar-small-bc,
+.x-nbr .x-btn-default-toolbar-small-ml,
+.x-nbr .x-btn-default-toolbar-small-mr {
+  zoom: 1; }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-small-ml,
+.x-nbr .x-btn-default-toolbar-small-mr {
+  zoom: 1; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-small-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-small-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 4px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon button,
+.x-btn-default-toolbar-small-icon a,
+.x-btn-default-toolbar-small-icon .x-btn-inner,
+.x-btn-default-toolbar-small-noicon button,
+.x-btn-default-toolbar-small-noicon a,
+.x-btn-default-toolbar-small-noicon .x-btn-inner {
+  height: 16px;
+  line-height: 16px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon button, .x-btn-default-toolbar-small-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 16px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-icon {
+  width: 16px;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-left button, .x-btn-default-toolbar-small-icon-text-left a {
+  height: 16px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-left: 20px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon {
+    height: 16px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-right button, .x-btn-default-toolbar-small-icon-text-right a {
+  height: 16px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-right: 20px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon {
+    height: 16px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-inner {
+  padding-top: 20px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon {
+    width: 16px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon {
+    width: 16px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-over {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-focus {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-menu-active,
+.x-btn-default-toolbar-small-pressed {
+  border-color: #7a9ac4;
+  background-image: none;
+  background-color: #bccfe5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+  background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -ms-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-disabled {
+  background-image: none;
+  background-color: transparent; }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-default-toolbar-small-disabled .x-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn-default-toolbar-small-disabled .x-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-toolbar-small-disabled .x-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-mc {
+  background-color: #dbeeff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-mc {
+  background-color: #dbeeff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mc {
+  background-color: #bccfe5;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mc {
+  background-color: transparent; }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-small-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-small-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-small-menu-active,
+.x-nlg .x-btn-default-toolbar-small-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium {
+  border-color: transparent; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-toolbar-medium {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-toolbar-medium-mc {
+  background-color: transparent; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-medium-tl,
+.x-nbr .x-btn-default-toolbar-medium-bl,
+.x-nbr .x-btn-default-toolbar-medium-tr,
+.x-nbr .x-btn-default-toolbar-medium-br,
+.x-nbr .x-btn-default-toolbar-medium-tc,
+.x-nbr .x-btn-default-toolbar-medium-bc,
+.x-nbr .x-btn-default-toolbar-medium-ml,
+.x-nbr .x-btn-default-toolbar-medium-mr {
+  zoom: 1; }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-medium-ml,
+.x-nbr .x-btn-default-toolbar-medium-mr {
+  zoom: 1; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-medium-mc {
+  padding: 1px 1px 1px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 3px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon button,
+.x-btn-default-toolbar-medium-icon a,
+.x-btn-default-toolbar-medium-icon .x-btn-inner,
+.x-btn-default-toolbar-medium-noicon button,
+.x-btn-default-toolbar-medium-noicon a,
+.x-btn-default-toolbar-medium-noicon .x-btn-inner {
+  height: 24px;
+  line-height: 24px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon button, .x-btn-default-toolbar-medium-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 24px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-icon {
+  width: 24px;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-left button, .x-btn-default-toolbar-medium-icon-text-left a {
+  height: 24px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-left: 28px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon {
+    height: 24px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-right button, .x-btn-default-toolbar-medium-icon-text-right a {
+  height: 24px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-right: 28px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon {
+    height: 24px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon {
+    width: 24px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon {
+    width: 24px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-over {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-focus {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-menu-active,
+.x-btn-default-toolbar-medium-pressed {
+  border-color: #7a9ac4;
+  background-image: none;
+  background-color: #bccfe5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+  background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -ms-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-disabled {
+  background-image: none;
+  background-color: transparent; }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-mc {
+  background-color: #dbeeff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mc {
+  background-color: #dbeeff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mc {
+  background-color: #bccfe5;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mc {
+  background-color: transparent; }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-medium-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-medium-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-medium-menu-active,
+.x-nlg .x-btn-default-toolbar-medium-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large {
+  border-color: transparent; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-toolbar-large {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-toolbar-large-mc {
+  background-color: transparent; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-large-tl,
+.x-nbr .x-btn-default-toolbar-large-bl,
+.x-nbr .x-btn-default-toolbar-large-tr,
+.x-nbr .x-btn-default-toolbar-large-br,
+.x-nbr .x-btn-default-toolbar-large-tc,
+.x-nbr .x-btn-default-toolbar-large-bc,
+.x-nbr .x-btn-default-toolbar-large-ml,
+.x-nbr .x-btn-default-toolbar-large-mr {
+  zoom: 1; }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-large-ml,
+.x-nbr .x-btn-default-toolbar-large-mr {
+  zoom: 1; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-large-mc {
+  padding: 1px 1px 1px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-large-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 3px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon button,
+.x-btn-default-toolbar-large-icon a,
+.x-btn-default-toolbar-large-icon .x-btn-inner,
+.x-btn-default-toolbar-large-noicon button,
+.x-btn-default-toolbar-large-noicon a,
+.x-btn-default-toolbar-large-noicon .x-btn-inner {
+  height: 32px;
+  line-height: 32px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon button, .x-btn-default-toolbar-large-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 32px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-icon {
+  width: 32px;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-left button, .x-btn-default-toolbar-large-icon-text-left a {
+  height: 32px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-left: 36px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon {
+    height: 32px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-right button, .x-btn-default-toolbar-large-icon-text-right a {
+  height: 32px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-right: 36px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon {
+    height: 32px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-inner {
+  padding-top: 36px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon {
+    width: 32px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 36px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 32px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon {
+    width: 32px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-over {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-focus {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-menu-active,
+.x-btn-default-toolbar-large-pressed {
+  border-color: #7a9ac4;
+  background-image: none;
+  background-color: #bccfe5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+  background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -ms-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-disabled {
+  background-image: none;
+  background-color: transparent; }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-default-toolbar-large-disabled .x-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn-default-toolbar-large-disabled .x-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-toolbar-large-disabled .x-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-mc {
+  background-color: #dbeeff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-mc {
+  background-color: #dbeeff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mc {
+  background-color: #bccfe5;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mc {
+  background-color: transparent; }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-large-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-large-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-large-menu-active,
+.x-nlg .x-btn-default-toolbar-large-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif'); }
+
+/* line 571, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-disabled,
+.x-btn-default-toolbar-medium-disabled,
+.x-btn-default-toolbar-large-disabled {
+  border-color: transparent;
+  background-image: none;
+  background: transparent; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group {
+  position: relative;
+  overflow: hidden; }
+
+/* line 11, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-body {
+  position: relative;
+  zoom: 1;
+  padding: 0 1px; }
+  /* line 15, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-btn-group-body .x-table-layout-cell {
+    vertical-align: top; }
+
+/* line 20, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-header-text {
+  white-space: nowrap; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-group-default-framed {
+  -moz-border-radius: 2px;
+  -webkit-border-radius: 2px;
+  -o-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -khtml-border-radius: 2px;
+  border-radius: 2px;
+  padding: 1px 1px 1px 1px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #d0def0; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-group-default-framed-mc {
+  background-color: #d0def0; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-group-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000202px 1000202px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-group-default-framed-tl,
+.x-nbr .x-btn-group-default-framed-bl,
+.x-nbr .x-btn-group-default-framed-tr,
+.x-nbr .x-btn-group-default-framed-br,
+.x-nbr .x-btn-group-default-framed-tc,
+.x-nbr .x-btn-group-default-framed-bc,
+.x-nbr .x-btn-group-default-framed-ml,
+.x-nbr .x-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/btn-group/btn-group-default-framed-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-group-default-framed-ml,
+.x-nbr .x-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/btn-group/btn-group-default-framed-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-group-default-framed-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-group-default-framed-tl,
+.x-strict .x-ie7 .x-btn-group-default-framed-bl {
+  position: relative;
+  right: 0; }
+
+/* line 60, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-default-framed {
+  border-color: #b7c8d7;
+  -moz-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  -webkit-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  -o-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset; }
+
+/* line 68, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-header-default-framed {
+  margin: 2px 2px 0 2px; }
+
+/* line 72, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-header-body-default-framed {
+  padding: 1px 0;
+  background: #c2d8f0;
+  -moz-border-radius-topleft: 2px;
+  -webkit-border-top-left-radius: 2px;
+  -o-border-top-left-radius: 2px;
+  -ms-border-top-left-radius: 2px;
+  -khtml-border-top-left-radius: 2px;
+  border-top-left-radius: 2px;
+  -moz-border-radius-topright: 2px;
+  -webkit-border-top-right-radius: 2px;
+  -o-border-top-right-radius: 2px;
+  -ms-border-top-right-radius: 2px;
+  -khtml-border-top-right-radius: 2px;
+  border-top-right-radius: 2px; }
+
+/* line 80, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-header-text-default-framed {
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  color: #3e6aaa; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker {
+  border: 1px solid #1b376c;
+  background-color: white;
+  position: relative; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker a {
+    -moz-outline: 0 none;
+    outline: 0 none;
+    color: #15428b;
+    text-decoration: none;
+    border-width: 0; }
+
+/* line 25, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-inner,
+.x-datepicker-inner td,
+.x-datepicker-inner th {
+  border-collapse: separate; }
+
+/* line 29, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-header {
+  position: relative;
+  height: 26px;
+  background-image: none;
+  background-color: #23427c;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #264888), color-stop(100%, #1f3a6c));
+  background-image: -webkit-linear-gradient(top, #264888, #1f3a6c);
+  background-image: -moz-linear-gradient(top, #264888, #1f3a6c);
+  background-image: -o-linear-gradient(top, #264888, #1f3a6c);
+  background-image: -ms-linear-gradient(top, #264888, #1f3a6c);
+  background-image: linear-gradient(top, #264888, #1f3a6c); }
+
+/* line 42, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-prev,
+.x-datepicker-next {
+  position: absolute;
+  top: 5px;
+  width: 18px; }
+  /* line 48, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-prev a,
+  .x-datepicker-next a {
+    display: block;
+    width: 16px;
+    height: 16px;
+    background-position: top;
+    background-repeat: no-repeat;
+    cursor: pointer;
+    text-decoration: none !important;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+    opacity: 0.7; }
+    /* line 63, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-datepicker-prev a:hover,
+    .x-datepicker-next a:hover {
+      filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+      opacity: 1; }
+
+/* line 69, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-next {
+  right: 5px; }
+  /* line 72, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-next a {
+    background-image: url('../../resources/themes/images/default/shared/right-btn.gif'); }
+
+/* line 77, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-prev {
+  left: 5px; }
+  /* line 80, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-prev a {
+    background-image: url('../../resources/themes/images/default/shared/left-btn.gif'); }
+
+/* line 86, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-item-disabled .x-datepicker-prev a:hover,
+.x-item-disabled .x-datepicker-next a:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+
+/* line 90, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-month {
+  padding-top: 3px; }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-month .x-btn,
+  .x-datepicker-month button,
+  .x-datepicker-month .x-btn-tc,
+  .x-datepicker-month .x-btn-tl,
+  .x-datepicker-month .x-btn-tr,
+  .x-datepicker-month .x-btn-mc,
+  .x-datepicker-month .x-btn-ml,
+  .x-datepicker-month .x-btn-mr,
+  .x-datepicker-month .x-btn-bc,
+  .x-datepicker-month .x-btn-bl,
+  .x-datepicker-month .x-btn-br {
+    background: transparent !important;
+    border-width: 0 !important; }
+  /* line 108, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-month span {
+    color: #fff !important; }
+  /* line 112, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-month .x-btn-split-right {
+    background-image: url('../../resources/themes/images/default/button/s-arrow-light.gif');
+    padding-right: 12px; }
+
+/* line 118, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-next {
+  text-align: right; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-month {
+  text-align: center; }
+  /* line 126, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-month button {
+    color: white !important; }
+
+/* line 132, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+table.x-datepicker-inner {
+  width: 100%;
+  table-layout: fixed; }
+  /* line 136, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner th {
+    width: 25px;
+    height: 19px;
+    padding: 0;
+    color: #233d6d;
+    font: normal 10px tahoma, arial, verdana, sans-serif;
+    text-align: right;
+    border-bottom: 1px solid #b2d1f5;
+    border-collapse: separate;
+    background-image: none;
+    background-color: #dfecfb;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #edf4fd), color-stop(100%, #cde1f9));
+    background-image: -webkit-linear-gradient(top, #edf4fd, #cde1f9);
+    background-image: -moz-linear-gradient(top, #edf4fd, #cde1f9);
+    background-image: -o-linear-gradient(top, #edf4fd, #cde1f9);
+    background-image: -ms-linear-gradient(top, #edf4fd, #cde1f9);
+    background-image: linear-gradient(top, #edf4fd, #cde1f9);
+    cursor: default; }
+    /* line 157, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    table.x-datepicker-inner th span {
+      display: block;
+      padding-right: 7px; }
+  /* line 163, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner tr {
+    height: 20px; }
+  /* line 167, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner td {
+    border: 1px solid;
+    height: 17px;
+    border-color: white;
+    text-align: right;
+    padding: 0; }
+  /* line 175, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner a {
+    padding-right: 4px;
+    display: block;
+    zoom: 1;
+    font: normal 11px tahoma, arial, verdana, sans-serif;
+    color: black;
+    text-decoration: none;
+    text-align: right; }
+  /* line 188, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-active {
+    cursor: pointer;
+    color: black; }
+  /* line 194, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-selected a {
+    background: repeat-x left top;
+    background-color: #dae5f3;
+    border: 1px solid #8db2e3; }
+  /* line 200, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-selected span {
+    font-weight: bold; }
+  /* line 206, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-today a {
+    border: 1px solid;
+    border-color: darkred; }
+  /* line 214, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-prevday a,
+  table.x-datepicker-inner .x-datepicker-nextday a {
+    text-decoration: none !important;
+    color: #aaa; }
+  /* line 221, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner a:hover,
+  table.x-datepicker-inner .x-datepicker-disabled a:hover {
+    text-decoration: none !important;
+    color: #000;
+    background-color: #ddecfe; }
+  /* line 229, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-disabled a {
+    cursor: default;
+    background-color: #eee;
+    color: #bbb; }
+
+/* line 237, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-footer,
+.x-monthpicker-buttons {
+  position: relative;
+  border-top: 1px solid #b2d1f5;
+  background-image: none;
+  background-color: #dfecfb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dee8f5), color-stop(49%, #d1dff0), color-stop(51%, #c7d8ed), color-stop(100%, #cbdaee));
+  background-image: -webkit-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: -moz-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: -o-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: -ms-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  text-align: center; }
+  /* line 250, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-footer .x-btn,
+  .x-monthpicker-buttons .x-btn {
+    position: relative;
+    margin: 4px; }
+
+/* line 256, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-item-disabled .x-datepicker-inner a:hover {
+  background: none; }
+
+/* line 261, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker .x-monthpicker {
+  position: absolute;
+  left: 0;
+  top: 0; }
+
+/* line 268, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker {
+  border: 1px solid #1b376c;
+  background-color: white; }
+
+/* line 274, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-months,
+.x-monthpicker-years {
+  float: left;
+  height: 167px;
+  width: 88px; }
+
+/* line 281, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-item {
+  float: left;
+  margin: 4px 0 5px 0;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  text-align: center;
+  vertical-align: middle;
+  height: 18px;
+  width: 43px;
+  border: 0 none; }
+  /* line 295, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-monthpicker-item a {
+    display: block;
+    margin: 0 5px;
+    text-decoration: none;
+    color: #15428b;
+    border: 1px solid white;
+    line-height: 17px; }
+    /* line 308, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-monthpicker-item a:hover {
+      background-color: #ddecfe; }
+    /* line 312, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-monthpicker-item a.x-monthpicker-selected {
+      background-color: #dfecfb;
+      border: 1px solid #8db2e3; }
+
+/* line 319, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-months {
+  border-right: 1px solid #1b376c;
+  width: 87px; }
+
+/* line 324, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-years .x-monthpicker-item {
+  width: 44px; }
+
+/* line 328, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav {
+  height: 28px; }
+  /* line 331, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-monthpicker-yearnav button {
+    background-image: url('../../resources/themes/images/default/tools/tool-sprites.gif');
+    height: 15px;
+    width: 15px;
+    padding: 0;
+    margin: 6px 12px 5px 15px;
+    border: 0;
+    outline: 0 none; }
+    /* line 339, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-monthpicker-yearnav button::-moz-focus-inner {
+      border: 0;
+      padding: 0; }
+
+/* line 346, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-next {
+  background-position: 0 -120px; }
+
+/* line 350, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-next-over {
+  cursor: pointer;
+  cursor: hand;
+  background-position: -15px -120px; }
+
+/* line 356, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-prev {
+  background-position: 0 -105px; }
+
+/* line 360, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-prev-over {
+  cursor: pointer;
+  cursor: hand;
+  background-position: -15px -105px; }
+
+/* line 367, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-small .x-monthpicker-item {
+  margin: 2px 0 2px 0; }
+/* line 371, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-small .x-monthpicker-yearnav {
+  height: 23px; }
+/* line 375, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-small .x-monthpicker-months, .x-monthpicker-small .x-monthpicker-years {
+  height: 136px; }
+
+/* line 385, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-quirks .x-ie7 .x-monthpicker-buttons .x-btn,
+.x-quirks .x-ie8 .x-monthpicker-buttons .x-btn {
+  margin-top: 2px; }
+/* line 391, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-quirks .x-monthpicker-small .x-monthpicker-yearnav button {
+  margin-top: 3px;
+  margin-bottom: 3px; }
+
+/* line 397, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-ie6 .x-monthpicker-small .x-monthpicker-yearnav button {
+  margin-top: 3px;
+  margin-bottom: 3px; }
+
+/* line 407, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-nlg .x-datepicker-header {
+  background-image: url('../../resources/themes/images/default/datepicker/datepicker-header-bg.gif');
+  background-repeat: repeat-x;
+  background-position: top left; }
+/* line 416, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-nlg .x-datepicker-footer,
+.x-nlg .x-monthpicker-buttons {
+  background-image: url('../../resources/themes/images/default/datepicker/datepicker-footer-bg.gif');
+  background-repeat: repeat-x;
+  background-position: top left; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker {
+  width: 144px;
+  height: 90px;
+  cursor: pointer; }
+
+/* line 12, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker a {
+  border: 1px solid #fff;
+  float: left;
+  padding: 2px;
+  text-decoration: none;
+  -moz-outline: 0 none;
+  outline: 0 none;
+  cursor: pointer; }
+
+/* line 28, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker a:hover,
+.x-color-picker a.x-color-picker-selected {
+  border-color: #8bb8f3;
+  background-color: #deecfd; }
+
+/* line 33, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker em {
+  display: block;
+  border: 1px solid #aca899; }
+
+/* line 39, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker em span {
+  cursor: pointer;
+  display: block;
+  height: 10px;
+  width: 10px;
+  line-height: 10px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-body {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  background: #f0f0f0 !important;
+  padding: 2px; }
+
+/* line 12, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item .x-form-text {
+  user-select: text;
+  -webkit-user-select: text;
+  -o-user-select: text;
+  -ie-user-select: text;
+  -moz-user-select: text;
+  -ie-user-select: text; }
+
+/* line 21, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-icon-separator {
+  position: absolute;
+  top: 0px;
+  left: 27px;
+  z-index: 0;
+  border-left: solid 1px #e0e0e0;
+  background-color: white;
+  width: 2px;
+  overflow: hidden; }
+
+/* line 33, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-plain .x-menu-icon-separator {
+  display: none; }
+
+/* line 38, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-focus {
+  display: block;
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px; }
+
+/* line 47, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item {
+  white-space: nowrap;
+  overflow: hidden;
+  z-index: 1; }
+
+/* line 53, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-cmp {
+  margin-bottom: 1px; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-link {
+  display: block;
+  margin: 1px;
+  padding: 6px 2px 3px 32px;
+  text-decoration: none !important;
+  line-height: 16px;
+  cursor: default; }
+
+/* line 70, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-opera .x-menu-item-link {
+  position: relative; }
+
+/* line 76, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-icon {
+  width: 16px;
+  height: 16px;
+  position: absolute;
+  top: 5px;
+  left: 4px;
+  background: no-repeat center center; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-icon-right {
+  width: 16px;
+  height: 16px;
+  position: absolute;
+  top: 6px;
+  right: 4px;
+  background: no-repeat center center; }
+
+/* line 96, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-text {
+  font-size: 11px;
+  color: #222222; }
+
+/* line 102, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-checked .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/menu/checked.gif'); }
+/* line 105, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-checked .x-menu-group-icon {
+  background-image: url('../../resources/themes/images/default/menu/group-checked.gif'); }
+
+/* line 111, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-unchecked .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/menu/unchecked.gif'); }
+/* line 114, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-unchecked .x-menu-group-icon {
+  background-image: none; }
+
+/* line 119, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-separator {
+  height: 2px;
+  border-top: solid 1px #e0e0e0;
+  background-color: white;
+  margin: 2px 0px;
+  overflow: hidden; }
+
+/* line 127, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-arrow {
+  position: absolute;
+  width: 12px;
+  height: 9px;
+  top: 9px;
+  right: 0px;
+  background: no-repeat center center;
+  background-image: url('../../resources/themes/images/default/menu/menu-parent.gif'); }
+
+/* line 137, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-indent {
+  margin-left: 31px;
+  /* The 2px is the width of the seperator */ }
+
+/* line 141, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-active {
+  cursor: pointer; }
+  /* line 144, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-menu-item-active .x-menu-item-link {
+    background-image: none;
+    background-color: #d9e8fb;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7f0fc), color-stop(100%, #c7ddf9));
+    background-image: -webkit-linear-gradient(top, #e7f0fc, #c7ddf9);
+    background-image: -moz-linear-gradient(top, #e7f0fc, #c7ddf9);
+    background-image: -o-linear-gradient(top, #e7f0fc, #c7ddf9);
+    background-image: -ms-linear-gradient(top, #e7f0fc, #c7ddf9);
+    background-image: linear-gradient(top, #e7f0fc, #c7ddf9);
+    margin: 0px;
+    border: 1px solid #a9cbf5;
+    cursor: pointer;
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    -o-border-radius: 3px;
+    -ms-border-radius: 3px;
+    -khtml-border-radius: 3px;
+    border-radius: 3px; }
+
+/* line 153, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+
+/* line 160, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+/* line 164, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-text {
+  background-color: transparent; }
+/* line 171, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-strict .x-ie7m .x-ie .x-menu-icon-separator {
+  width: 1px; }
+/* line 175, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-strict .x-ie7m .x-ie .x-menu-item-separator {
+  height: 1px; }
+
+/* line 184, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-ie6 .x-menu-item-link,
+.x-ie7 .x-menu-item-link,
+.x-quirks .x-ie8 .x-menu-item-link {
+  padding-bottom: 2px; }
+
+/* line 192, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-nlg .x-menu-item-active .x-menu-item-link {
+  background: #d9e8fb repeat-x left top;
+  background-image: url('../../resources/themes/images/default/menu/menu-item-active-bg.gif'); }
+
+/* line 199, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-date-item {
+  border-color: #99BBE8; }
+
+/* line 8, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-panel .x-grid-body {
+  background: white;
+  border-color: #99bce8;
+  border-style: solid;
+  border-width: 1px;
+  border-top-color: #c5c5c5; }
+/* line 17, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-panel .x-grid-header-ct-hidden {
+  visibility: hidden; }
+
+/* line 22, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-empty {
+  padding: 10px;
+  color: gray;
+  font: normal 11px tahoma, arial, helvetica, sans-serif; }
+
+/* line 28, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-header-hidden .x-grid-body {
+  border-top-color: #99bce8 !important; }
+
+/* line 32, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-view {
+  overflow: hidden;
+  position: relative; }
+
+/* line 38, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-table {
+  table-layout: fixed;
+  border-collapse: separate; }
+
+/* line 45, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-autowidth-table table.x-grid-table {
+  table-layout: auto;
+  width: auto!important; }
+
+/* line 50, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row .x-grid-table {
+  border-collapse: collapse; }
+
+/* line 54, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-locked .x-grid-inner-locked {
+  border-width: 0 1px 0 0 !important;
+  border-style: solid; }
+
+/* line 59, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-header-ct {
+  cursor: default;
+  zoom: 1;
+  padding: 0;
+  border: 1px solid #99bce8;
+  border-bottom-color: #c5c5c5;
+  background-image: none;
+  background-color: #c5c5c5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f9f9f9), color-stop(100%, #e3e4e6));
+  background-image: -webkit-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -moz-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -o-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -ms-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: linear-gradient(top, #f9f9f9, #e3e4e6); }
+
+/* line 73, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-accordion-item .x-grid-header-ct {
+  border-width: 0 0 1px 0!important; }
+
+/* line 77, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header {
+  padding: 0;
+  position: absolute;
+  overflow: hidden;
+  border-right: 1px solid #c5c5c5;
+  border-left: 0 none;
+  border-top: 0 none;
+  border-bottom: 0 none;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.3);
+  color: null;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  background-image: none;
+  background-color: #c5c5c5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f9f9f9), color-stop(100%, #e3e4e6));
+  background-image: -webkit-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -moz-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -o-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -ms-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: linear-gradient(top, #f9f9f9, #e3e4e6); }
+
+/* line 99, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-group-header {
+  padding: 0;
+  border-left-width: 0; }
+
+/* line 103, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-group-sub-header {
+  background: transparent;
+  border-top: 1px solid #c5c5c5;
+  border-left-width: 0; }
+
+/* line 109, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-inner {
+  zoom: 1;
+  position: relative;
+  white-space: nowrap;
+  line-height: 15px;
+  padding: 3px 6px 4px; }
+  /* line 116, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-column-header-inner .x-column-header-text {
+    white-space: nowrap; }
+
+/* line 123, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-over,
+.x-column-header-sort-ASC,
+.x-column-header-sort-DESC {
+  border-left-color: #aaccf6;
+  border-right-color: #aaccf6;
+  background-image: none;
+  background-color: #aaccf6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ebf3fd), color-stop(39%, #ebf3fd), color-stop(40%, #d9e8fb), color-stop(100%, #d9e8fb));
+  background-image: -webkit-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+  background-image: -moz-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+  background-image: -o-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+  background-image: -ms-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+  background-image: linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb); }
+
+/* line 135, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-grid-header-ct,
+.x-nlg .x-column-header {
+  background: repeat-x 0 top;
+  background-image: url('../../resources/themes/images/default/grid/column-header-bg.gif'); }
+/* line 142, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-column-header-over,
+.x-nlg .x-column-header-sort-ASC,
+.x-nlg .x-column-header-sort-DESC {
+  background: #ebf3fd repeat-x 0 top;
+  background-image: url('../../resources/themes/images/default/grid/column-header-over-bg.gif'); }
+
+/* line 149, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-trigger {
+  display: none;
+  height: 100%;
+  width: 14px;
+  background: no-repeat left center;
+  background-color: #c3daf9;
+  background-image: url('../../resources/themes/images/default/grid/grid3-hd-btn.gif');
+  position: absolute;
+  right: 0;
+  top: 0;
+  z-index: 2;
+  cursor: pointer; }
+
+/* line 164, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-over .x-column-header-trigger, .x-column-header-open .x-column-header-trigger {
+  display: block; }
+
+/* line 169, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-align-right {
+  text-align: right; }
+  /* line 172, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-column-header-align-right .x-column-header-text {
+    padding-right: 0.5ex;
+    margin-right: 6px; }
+
+/* line 177, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-align-center {
+  text-align: center; }
+
+/* line 180, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-align-left {
+  text-align: left; }
+
+/* line 185, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-sort-ASC .x-column-header-text {
+  padding-right: 16px;
+  background: no-repeat right 6px;
+  background-image: url('../../resources/themes/images/default/grid/sort_asc.gif'); }
+
+/* line 190, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-sort-DESC .x-column-header-text {
+  padding-right: 16px;
+  background: no-repeat right 6px;
+  background-image: url('../../resources/themes/images/default/grid/sort_desc.gif'); }
+
+/* line 197, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row {
+  vertical-align: top; }
+  /* line 199, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row .x-grid-cell {
+    color: null;
+    font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+    background-color: white;
+    border-color: #ededed;
+    border-style: solid;
+    border-top-color: #fafafa;
+    border-width: 0; }
+
+/* line 212, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-grid-cell {
+  border-width: 1px 0; }
+
+/* line 216, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-rowwrap-div {
+  border-width: 1px 0;
+  border-color: #ededed;
+  border-style: solid;
+  border-top-color: #fafafa;
+  overflow: hidden; }
+
+/* line 226, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-alt .x-grid-cell,
+.x-grid-row-alt .x-grid-rowwrap-div {
+  background-color: #fafafa; }
+
+/* line 231, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-over .x-grid-cell,
+.x-grid-row-over .x-grid-rowwrap-div {
+  border-color: #dddddd;
+  background-color: #efefef; }
+
+/* line 238, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-focused .x-grid-cell,
+.x-grid-row-focused .x-grid-rowwrap-div {
+  border-color: #dddddd;
+  background-color: #efefef; }
+
+/* line 245, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-selected .x-grid-cell,
+.x-grid-row-selected .x-grid-rowwrap-div {
+  border-style: dotted;
+  border-color: #a3bae9;
+  background-color: #dfe8f6 !important; }
+
+/* line 254, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-rowwrap-div .x-grid-cell,
+.x-grid-rowwrap-div .x-grid-cell-inner {
+  border-width: 0;
+  background: transparent; }
+
+/* line 261, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-body-hidden {
+  display: none; }
+
+/* line 265, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-rowbody {
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  padding: 4px; }
+  /* line 270, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-rowbody p {
+    margin: 5px 5px 10px 5px; }
+
+/* line 276, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell {
+  overflow: hidden; }
+
+/* line 280, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell-inner {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis;
+  padding: 2px 6px 3px;
+  white-space: nowrap; }
+
+/* line 291, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-grid-cell-inner {
+  line-height: 13px;
+  padding-bottom: 4px; }
+
+/* line 297, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-action-col-cell .x-grid-cell-inner {
+  line-height: 0;
+  padding: 2px; }
+
+/* line 302, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-action-col-cell .x-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 306, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-action-col-cell .x-grid-cell-inner {
+  padding-top: 1px; }
+
+/* line 310, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row .x-grid-cell-special {
+  padding: 0;
+  border-right: 1px solid #d0d0d0;
+  background-image: none;
+  background-color: #f6f6f6;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #f6f6f6), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(left, #f6f6f6, #e9e9e9);
+  background-image: -moz-linear-gradient(left, #f6f6f6, #e9e9e9);
+  background-image: -o-linear-gradient(left, #f6f6f6, #e9e9e9);
+  background-image: -ms-linear-gradient(left, #f6f6f6, #e9e9e9);
+  background-image: linear-gradient(left, #f6f6f6, #e9e9e9); }
+
+/* line 316, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row .x-grid-cell-row-checker {
+  vertical-align: middle; }
+
+/*
+IE6-8 have issues with shrinking the TR to 0px (even w/line-height=0), so we
+use an IE-specific trick to make the row disappear. We cannot do this on any
+other browser, because it is not a non-standard thing to do and those other
+browsers will do whacky things with it.
+*/
+/* line 330, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie6 .x-grid-header-row,
+.x-ie7 .x-grid-header-row,
+.x-quirks .x-ie8 .x-grid-header-row {
+  position: absolute; }
+
+/* line 335, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-selected .x-grid-cell-special {
+  border-right: 1px solid #aaccf6;
+  background-image: none;
+  background-color: #dfe8f6;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dfe8f6), color-stop(100%, #cbdaf0));
+  background-image: -webkit-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: -moz-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: -o-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: -ms-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: linear-gradient(left, #dfe8f6, #cbdaf0); }
+
+/* line 341, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-dirty-cell {
+  background-image: url('../../resources/themes/images/default/grid/dirty.gif');
+  background-position: 0 0;
+  background-repeat: no-repeat; }
+
+/* line 347, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell-selected {
+  background-color: #B8CFEE !important; }
+
+/* line 353, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-grid-cell-special {
+  background-repeat: repeat-y;
+  background-position: top right; }
+/* line 359, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-grid-row .x-grid-cell-special,
+.x-nlg .x-grid-row-over .x-grid-cell-special {
+  background-image: url('../../resources/themes/images/default/grid/cell-special-bg.gif'); }
+/* line 365, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-grid-row-focused .x-grid-cell-special,
+.x-nlg .x-grid-row-selected .x-grid-cell-special {
+  background-image: url('../../resources/themes/images/default/grid/cell-special-selected-bg.gif'); }
+
+/* line 371, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-col-lines .x-grid-cell {
+  padding-right: 0;
+  border-right: 1px solid #d0d0d0; }
+
+/* line 378, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,
+.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner {
+  padding-left: 12px;
+  background-image: url('../../resources/themes/images/default/grid/property-cell-bg.gif');
+  background-repeat: no-repeat;
+  background-position: -16px 2px; }
+
+/* line 388, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,
+.x-grid-with-row-lines.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner {
+  background-position: -16px 1px; }
+
+/* line 394, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-quirks .x-ie .x-grid-row .x-grid-property-name .x-grid-cell-inner {
+  background-position: -16px 2px; }
+
+/* line 399, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-unselectable {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default; }
+
+/* line 403, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-body-hidden {
+  display: none; }
+
+/* line 407, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-collapsed {
+  display: none; }
+
+/* line 413, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-view .x-grid-td-expander {
+  vertical-align: top; }
+
+/* line 418, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-td-expander {
+  background: repeat-y right transparent; }
+
+/* line 424, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-view .x-grid-td-expander .x-grid-cell-inner {
+  padding: 0 !important; }
+
+/* line 430, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-expander {
+  background-image: url('../../resources/themes/images/default/grid/group-collapse.gif');
+  background-color: transparent;
+  width: 9px;
+  height: 13px;
+  margin-left: 3px;
+  background-repeat: no-repeat;
+  background-position: 0 -2px; }
+
+/* line 444, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-collapsed .x-grid-row-expander {
+  background-image: url('../../resources/themes/images/default/grid/group-expand.gif'); }
+
+/* line 449, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-resize-marker {
+  position: absolute;
+  z-index: 5;
+  top: 0;
+  width: 1px;
+  background-color: #0f0f0f; }
+
+/* line 459, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.col-move-top, .col-move-bottom {
+  width: 9px;
+  height: 9px;
+  position: absolute;
+  top: 0;
+  line-height: 0;
+  font-size: 0;
+  overflow: hidden;
+  z-index: 20000;
+  background: no-repeat left top transparent; }
+
+/* line 471, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.col-move-top {
+  background-image: url('../../resources/themes/images/default/grid/col-move-top.gif'); }
+
+/* line 475, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.col-move-bottom {
+  background-image: url('../../resources/themes/images/default/grid/col-move-bottom.gif'); }
+
+/* line 480, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-number {
+  width: 30px; }
+
+/* line 487, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group,
+.x-grid-group-body,
+.x-grid-group-hd {
+  zoom: 1; }
+
+/* line 491, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-hd {
+  padding-top: 6px; }
+  /* line 494, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-group-hd .x-grid-cell-inner {
+    padding: 10px 4px 4px 4px;
+    background: white;
+    border-width: 0 0 2px 0;
+    border-style: solid;
+    border-color: #99bbe8;
+    cursor: pointer; }
+
+/* line 508, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-hd-collapsible .x-grid-group-title {
+  background: transparent no-repeat 0 -1px;
+  background-image: url('../../resources/themes/images/default/grid/group-collapse.gif');
+  padding: 0 0 0 14px; }
+
+/* line 515, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-title {
+  color: #3764a0;
+  font: bold 11px tahoma, arial, verdana, sans-serif; }
+
+/* line 521, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-hd-collapsed .x-grid-group-title {
+  background-image: url('../../resources/themes/images/default/grid/group-expand.gif'); }
+
+/* line 526, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-collapsed .x-grid-group-body {
+  display: none; }
+
+/* line 530, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-collapsed .x-grid-group-title {
+  background-image: url('../../resources/themes/images/default/grid/group-expand.gif'); }
+
+/* line 534, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-group-by-icon {
+  background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+
+/* line 538, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-show-groups-icon {
+  background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+
+/* line 542, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-checkbox .x-column-header-inner {
+  padding: 0; }
+
+/* line 546, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell-special .x-grid-cell-inner {
+  padding-left: 4px;
+  padding-right: 4px; }
+
+/* line 552, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-checker,
+.x-column-header-checkbox .x-column-header-text {
+  height: 14px;
+  width: 14px;
+  line-height: 0;
+  background-image: url('../../resources/themes/images/default/grid/unchecked.gif');
+  background-position: -1px -1px;
+  background-repeat: no-repeat;
+  background-color: transparent; }
+
+/* line 564, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-checkbox .x-column-header-text {
+  display: block;
+  margin: 0 5px; }
+
+/* IE6, IE7, and all IE Quirks mode need line-height to be the same as checkbox height or the header/row height will be too tall */
+/* line 573, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-quirks .x-ie .x-grid-row-checker,
+.x-quirks .x-ie .x-column-header-checkbox .x-column-header-text, .x-ie7m .x-grid-row-checker, .x-ie7m .x-column-header-checkbox .x-column-header-text {
+  line-height: 14px; }
+
+/* line 579, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-hd-checker-on .x-column-header-text {
+  background-image: url('../../resources/themes/images/default/grid/checked.gif'); }
+
+/* line 583, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell-row-checker .x-grid-cell-inner {
+  padding-top: 4px;
+  padding-bottom: 2px;
+  line-height: 14px; }
+
+/* line 588, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-grid-cell-row-checker .x-grid-cell-inner {
+  padding-top: 3px; }
+
+/* line 591, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-checker {
+  margin-left: 1px;
+  background-position: 50% -2px; }
+
+/* line 598, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-selected .x-grid-row-checker,
+.x-grid-row-checked .x-grid-row-checker {
+  background-image: url('../../resources/themes/images/default/grid/checked.gif'); }
+
+/* line 603, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-first {
+  background-image: url('../../resources/themes/images/default/grid/page-first.gif') !important; }
+
+/* line 607, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-loading {
+  background-image: url('../../resources/themes/images/default/grid/refresh.gif') !important; }
+
+/* line 611, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-last {
+  background-image: url('../../resources/themes/images/default/grid/page-last.gif') !important; }
+
+/* line 615, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-next {
+  background-image: url('../../resources/themes/images/default/grid/page-next.gif') !important; }
+
+/* line 619, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-prev {
+  background-image: url('../../resources/themes/images/default/grid/page-prev.gif') !important; }
+
+/* line 624, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-loading {
+  background-image: url('../../resources/themes/images/default/grid/refresh-disabled.gif') !important; }
+/* line 628, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-first {
+  background-image: url('../../resources/themes/images/default/grid/page-first-disabled.gif') !important; }
+/* line 632, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-last {
+  background-image: url('../../resources/themes/images/default/grid/page-last-disabled.gif') !important; }
+/* line 636, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-next {
+  background-image: url('../../resources/themes/images/default/grid/page-next-disabled.gif') !important; }
+/* line 640, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-prev {
+  background-image: url('../../resources/themes/images/default/grid/page-prev-disabled.gif') !important; }
+
+/* line 646, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-hmenu-sort-asc .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/grid/hmenu-asc.gif'); }
+
+/* line 650, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-hmenu-sort-desc .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/grid/hmenu-desc.gif'); }
+
+/* line 654, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-hmenu-lock .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/grid/hmenu-lock.gif'); }
+
+/* line 658, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-hmenu-unlock .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/grid/hmenu-unlock.gif'); }
+
+/* line 662, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-group-by-icon {
+  background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+
+/* line 666, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-cols-icon .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/grid/columns.gif'); }
+
+/* line 670, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-show-groups-icon {
+  background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-drop-indicator {
+  position: absolute;
+  height: 1px;
+  line-height: 0px;
+  background-color: #77BC71;
+  overflow: visible; }
+  /* line 682, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-drop-indicator .x-grid-drop-indicator-left {
+    position: absolute;
+    top: -8px;
+    left: -12px;
+    background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-right.png');
+    height: 16px;
+    width: 16px; }
+  /* line 691, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-drop-indicator .x-grid-drop-indicator-right {
+    position: absolute;
+    top: -8px;
+    right: -11px;
+    background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-left.png');
+    height: 16px;
+    width: 16px; }
+
+/* line 702, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie6 .x-grid-drop-indicator-left {
+  background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-right.gif'); }
+/* line 706, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie6 .x-grid-drop-indicator-right {
+  background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-left.gif'); }
+
+/* line 714, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-text {
+  padding: 0 4px; }
+/* line 717, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-cb-wrap {
+  padding-top: 3px; }
+
+/* line 723, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor {
+  position: absolute !important;
+  z-index: 1;
+  zoom: 1;
+  overflow: visible !important; }
+  /* line 729, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-text {
+    padding: 0 2px; }
+  /* line 732, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-cb-wrap {
+    padding-top: 0; }
+  /* line 735, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-checkbox {
+    margin-left: -4px; }
+  /* line 738, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-display-field {
+    font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+    padding-top: 0;
+    padding-left: 2px; }
+  /* line 744, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-panel-body {
+    background-color: #eaf1fb;
+    border-top: 1px solid #99bce8 !important;
+    border-bottom: 1px solid #99bce8 !important; }
+
+/* line 754, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-cb-wrap, .x-grid-row-editor .x-form-cb-wrap {
+  text-align: center; }
+/* line 757, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-trigger, .x-grid-row-editor .x-form-trigger {
+  height: 19px; }
+/* line 761, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-trigger-wrap .x-form-spinner-up, .x-grid-editor .x-form-trigger-wrap .x-form-spinner-down, .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-up, .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url('../../resources/themes/images/default/form/spinner-small.gif');
+  height: 10px !important; }
+
+/* line 768, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-text, .x-grid-row-editor .x-form-text {
+  font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+  height: 18px; }
+
+/* line 776, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-border-box .x-grid-editor .x-form-trigger,
+.x-border-box .x-grid-row-editor .x-form-trigger {
+  height: 20px; }
+/* line 779, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-border-box .x-grid-editor .x-form-text,
+.x-border-box .x-grid-row-editor .x-form-text {
+  height: 20px;
+  padding-bottom: 1px; }
+
+/* line 787, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie .x-grid-editor .x-form-text {
+  padding-left: 5px; }
+/* line 790, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie .x-grid-row-editor .x-form-text {
+  padding-left: 3px; }
+
+/* line 796, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie8m .x-grid-editor .x-form-text,
+.x-ie8m .x-grid-row-editor .x-form-text {
+  padding-top: 1px; }
+
+/* line 803, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-strict .x-ie6 .x-grid-editor .x-form-text,
+.x-strict .x-ie6 .x-grid-row-editor .x-form-text,
+.x-strict .x-ie7 .x-grid-editor .x-form-text,
+.x-strict .x-ie7 .x-grid-row-editor .x-form-text {
+  height: 17px; }
+
+/* line 809, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-quirks .x-ie9 .x-grid-editor .x-form-text, .x-quirks .x-ie9 .x-grid-row-editor .x-form-text {
+  line-height: 17px; }
+
+/* line 818, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-opera .x-grid-editor .x-form-text {
+  padding-left: 5px; }
+/* line 821, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-opera .x-grid-row-editor .x-form-text {
+  padding-left: 3px; }
+
+/* line 828, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons {
+  background-color: #eaf1fb;
+  position: absolute;
+  bottom: -31px;
+  padding: 4px;
+  height: 32px; }
+  /* line 835, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-strict .x-ie7m .x-grid-row-editor-buttons {
+    width: 192px;
+    height: 24px; }
+
+/* line 845, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-ml,
+.x-grid-row-editor-buttons-mr,
+.x-grid-row-editor-buttons-bl,
+.x-grid-row-editor-buttons-br,
+.x-grid-row-editor-buttons-bc {
+  position: absolute;
+  overflow: hidden; }
+
+/* line 851, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-bl,
+.x-grid-row-editor-buttons-br {
+  width: 4px;
+  height: 4px;
+  bottom: 0px;
+  background-image: url('../../resources/themes/images/default/panel/panel-default-framed-corners.gif'); }
+
+/* line 857, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-bl {
+  left: 0px;
+  background-position: 0px -16px; }
+
+/* line 861, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-br {
+  right: 0px;
+  background-position: 0px -20px; }
+
+/* line 866, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-bc {
+  position: absolute;
+  left: 4px;
+  bottom: 0px;
+  width: 192px;
+  height: 1px;
+  background-color: #99bce8; }
+
+/* line 876, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-ml,
+.x-grid-row-editor-buttons-mr {
+  height: 27px;
+  width: 1px;
+  top: 1px;
+  background-color: #99bce8; }
+
+/* line 882, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-ml {
+  left: 0px; }
+
+/* line 885, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-mr {
+  background-position: 0px -20px;
+  right: 0px; }
+
+/* line 891, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-errors ul {
+  margin-left: 5px; }
+/* line 894, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-errors li {
+  list-style: disc;
+  margin-left: 15px; }
+
+/*misc*/
+/* line 9, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-webkit *:focus {
+  outline: none !important; }
+
+/* line 16, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item {
+  vertical-align: top;
+  table-layout: fixed; }
+
+/* line 26, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-autocontainer-form-item,
+.x-anchor-form-item,
+.x-vbox-form-item,
+.x-checkboxgroup-form-item,
+.x-table-form-item {
+  margin-bottom: 5px; }
+
+/* line 31, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-layout-table {
+  border-collapse: separate;
+  border-spacing: 0 2px; }
+
+/* line 37, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item-body {
+  position: relative; }
+
+/* line 42, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-form-item td {
+  border-top: 1px solid transparent; }
+
+/* line 51, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-ie6 .x-form-layout-table {
+  border-collapse: collapse;
+  border-spacing: 0; }
+/* line 56, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-ie6 .x-form-form-item td {
+  border-top-width: 0; }
+/* line 62, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-ie6 td.x-form-item-pad {
+  height: 5px; }
+
+/* line 68, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-editor .x-form-item-body {
+  padding-bottom: 0; }
+
+/* line 72, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item-label {
+  display: block;
+  padding: 3px 0 0;
+  font-size: 12px;
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default; }
+
+/* line 79, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item-label-top {
+  display: block;
+  zoom: 1;
+  padding: 0 0 5px 0; }
+
+/* line 85, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item-label-right {
+  text-align: right; }
+
+/* line 89, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-invalid-under {
+  padding: 2px 2px 2px 18px;
+  color: #c0272b;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  line-height: 16px;
+  background: no-repeat 0 2px;
+  background-image: url('../../resources/themes/images/default/form/exclamation.gif'); }
+
+/* line 100, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-invalid-icon {
+  width: 18px;
+  height: 14px;
+  background: no-repeat center center;
+  background-image: url('../../resources/themes/images/default/form/exclamation.gif');
+  overflow: hidden; }
+  /* line 106, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-form-invalid-icon ul {
+    display: block;
+    width: 18px; }
+    /* line 109, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+    .x-form-invalid-icon ul li {
+      /* prevent inner elements from interfering with QuickTip hovering */
+      display: none; }
+
+/* line 117, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-lbl-top-err-icon {
+  margin-bottom: 4px; }
+
+/* line 7, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-field,
+.x-form-display-field {
+  margin: 0 0 0 0;
+  font: normal 12px tahoma, arial, verdana, sans-serif;
+  color: black; }
+
+/* line 14, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-item-hidden {
+  margin: 0; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-text,
+textarea.x-form-field {
+  padding: 1px 3px;
+  background: repeat-x 0 0;
+  border: 1px solid;
+  background-color: white;
+  background-image: url('../../resources/themes/images/default/form/text-bg.gif');
+  border-color: #b5b8c8; }
+
+/* line 36, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-text {
+  height: 18px;
+  line-height: 15px;
+  vertical-align: top; }
+
+/* line 43, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-ie8m .x-form-text {
+  line-height: 15px; }
+
+/* line 48, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-border-box .x-form-text {
+  height: 22px; }
+
+/* line 52, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+textarea.x-form-field {
+  color: black;
+  overflow: auto;
+  height: auto;
+  line-height: normal;
+  background: repeat-x 0 0;
+  background-color: white;
+  background-image: url('../../resources/themes/images/default/form/text-bg.gif');
+  resize: none; }
+
+/* line 65, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-border-box textarea.x-form-field {
+  height: auto; }
+
+/* line 70, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-safari.x-mac textarea.x-form-field {
+  margin-bottom: -2px; }
+
+/* line 76, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-focus,
+textarea.x-form-focus {
+  border-color: #7eadd9; }
+
+/* line 81, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-invalid-field,
+textarea.x-form-invalid-field {
+  background-color: white;
+  background-image: url('../../resources/themes/images/default/grid/invalid_line.gif');
+  background-repeat: repeat-x;
+  background-position: bottom;
+  border-color: #cc3300; }
+
+/* line 91, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-item {
+  font: normal 12px tahoma, arial, verdana, sans-serif; }
+
+/* line 95, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-empty-field, textarea.x-form-empty-field {
+  color: gray; }
+
+/* line 100, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-webkit .x-form-empty-field {
+  line-height: 15px; }
+
+/* line 105, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-display-field {
+  padding-top: 3px; }
+
+        /*
+        In oldIE, text inputs get a mysterious extra pixel of spacing above and below.
+        This is targeted at IE6-IE7 (all modes) and IE9+ Quirks mode.
+
+        IE8 quirks on Windows 7 requires this fix, but on
+        IE8 quirks on Windows XP, this is breaks the layout.
+        TODO: Check field input heights in IE8 quirks on Windows Vista.
+
+        Since we can't specifically target a specific version of Windows via CSS, we default to fixing it the XP way, for now.
+        */
+/* line 121, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-quirks .x-ie9p .x-form-text,
+.x-ie7m .x-form-text {
+  margin-top: -1px;
+  margin-bottom: -1px; }
+
+/* line 126, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-ie .x-form-file {
+  height: 23px;
+  line-height: 18px;
+  vertical-align: middle; }
+
+/* line 135, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-field-default-toolbar .x-form-text {
+  height: 16px; }
+
+/* line 139, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-border-box .x-field-default-toolbar .x-form-text {
+  height: 20px; }
+
+/* line 143, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-field-default-toolbar .x-form-item-label-left {
+  padding-left: 4px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset {
+  border: 1px solid #b5b8c8;
+  padding: 10px;
+  margin-bottom: 10px;
+  display: block;
+  /* preserve margins in IE */
+  position: relative; }
+
+/* line 18, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-ie .x-fieldset {
+  padding-top: 0; }
+  /* line 20, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-ie .x-fieldset .x-fieldset-body {
+    padding-top: 10px; }
+
+/* line 25, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-header-checkbox {
+  line-height: 14px; }
+
+/* line 29, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-header {
+  font: 11px/14px bold tahoma, arial, verdana, sans-serif;
+  color: #15428b;
+  padding: 0 3px 1px;
+  overflow: hidden; }
+  /* line 35, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-fieldset-header-text {
+    float: left;
+    padding: 1px 0; }
+  /* line 39, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-fieldset-header-text-collapsible {
+    cursor: pointer; }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-form-item,
+  .x-fieldset-header .x-tool {
+    float: left;
+    margin: 1px 0 0 0; }
+  /* line 49, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-form-cb-wrap {
+    padding: 1px 0;
+    font-size: 0;
+    line-height: 0; }
+
+/* line 58, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-with-title .x-fieldset-header-checkbox,
+.x-fieldset-with-title .x-tool {
+  margin-right: 3px; }
+
+/* line 65, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-webkit .x-fieldset-header {
+  -webkit-padding-start: 3px;
+  -webkit-padding-end: 3px; }
+
+/* line 75, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-opera .x-fieldset-with-legend {
+  margin-top: -1px; }
+/* line 78, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-opera.x-mac .x-fieldset-header-text {
+  padding: 2px 0 0; }
+
+/* line 86, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-strict .x-ie8 .x-fieldset-header {
+  margin-bottom: -1px; }
+  /* line 90, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-strict .x-ie8 .x-fieldset-header .x-tool,
+  .x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,
+  .x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox {
+    position: relative;
+    top: -1px; }
+
+/* line 100, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-quirks .x-ie .x-fieldset-header,
+.x-ie8m .x-fieldset-header {
+  padding-left: 1px;
+  padding-right: 1px; }
+
+/* line 108, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-collapsed .x-fieldset-body {
+  display: none; }
+
+/* line 113, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-collapsed {
+  padding-bottom: 0 !important;
+  border-width: 1px 1px 0 1px !important;
+  border-left-color: transparent !important;
+  border-right-color: transparent !important; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-ie6 .x-fieldset-collapsed {
+  border-width: 1px 0 0 0 !important;
+  padding-bottom: 0 !important;
+  margin-left: 1px;
+  margin-right: 1px; }
+
+/* line 130, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-ie .x-fieldset-bwrap {
+  zoom: 1; }
+
+/* IE legend positioning bug */
+/* line 137, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-ie .x-fieldset-noborder legend {
+  position: relative;
+  margin-bottom: 23px; }
+
+/* line 143, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-ie .x-fieldset-noborder legend span {
+  position: absolute;
+  left: 16px; }
+
+/* line 149, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset {
+  overflow: hidden; }
+
+/* line 153, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-bwrap {
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 159, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-body {
+  overflow: hidden; }
+
+/* line 8, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+.x-form-file-wrap .x-form-text {
+  color: #777; }
+/* line 12, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+.x-form-file-wrap .x-form-file-btn {
+  overflow: hidden; }
+/* line 16, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+.x-form-file-wrap .x-form-file-input {
+  position: absolute;
+  top: -4px;
+  right: -2px;
+  height: 30px;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  /* Yes, there's actually a good reason for this...
+   * If the configured buttonText is set to something longer than the default,
+   * then it will quickly exceed the width of the hidden file input's "Browse..."
+   * button, so part of the custom button's clickable area will be covered by
+   * the hidden file input's text box instead. This results in a text-selection
+   * mouse cursor over that part of the button, at least in Firefox, which is
+   * confusing to a user. Giving the hidden file input a huge font-size makes
+   * the native button part very large so it will cover the whole clickable area.
+   */
+  font-size: 100px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-wrap {
+  padding-top: 3px; }
+
+/* line 11, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-checkbox,
+.x-form-radio {
+  vertical-align: -1px;
+  width: 13px;
+  height: 13px;
+  background: no-repeat;
+  background-image: url('../../resources/themes/images/default/form/checkbox.gif');
+  overflow: hidden;
+  padding: 0;
+  border: 0; }
+  /* line 22, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-form-checkbox::-moz-focus-inner,
+  .x-form-radio::-moz-focus-inner {
+    padding: 0;
+    border: 0; }
+
+/* Hack for IE; causes alignment problem in IE9 standards mode so exclude that */
+/* line 31, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-nbr.x-ie .x-form-checkbox,
+.x-nbr.x-ie .x-form-radio {
+  font-size: 0; }
+
+/* line 38, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-checked .x-form-checkbox,
+.x-form-cb-checked .x-form-radio {
+  background-position: 0 -13px; }
+
+/* Focused */
+/* line 44, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-focus {
+  background-position: -13px 0; }
+
+/* line 48, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-checked .x-form-cb-focus {
+  background-position: -13px -13px; }
+
+/* Radios */
+/* line 54, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-radio {
+  background-image: url('../../resources/themes/images/default/form/radio.gif'); }
+
+/* boxLabel */
+/* line 59, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-label-before {
+  margin-right: 4px; }
+
+/* line 62, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-label-after {
+  margin-left: 4px; }
+
+/* line 7, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+.x-form-checkboxgroup-body {
+  padding: 1px 4px 1px 4px; }
+
+/* line 12, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+.x-form-invalid .x-form-checkboxgroup-body {
+  border: 1px solid #c30!important;
+  background: transparent repeat-x bottom;
+  background-image: url('../../resources/themes/images/default/grid/invalid_line.gif');
+  padding: 1px 3px 0 3px; }
+
+/* line 20, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+.x-check-group-alt {
+  background: #d1ddef;
+  border-top: 1px dotted #b5b8c8;
+  border-bottom: 1px dotted #b5b8c8; }
+
+/* line 27, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+.x-form-check-group-label {
+  color: #333;
+  border-bottom: 1px solid #333;
+  margin: 0 30px 5px 0;
+  padding: 2px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap {
+  vertical-align: top; }
+
+/* line 10, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger {
+  background-image: url('../../resources/themes/images/default/form/trigger.gif');
+  background-position: 0 0;
+  width: 17px;
+  height: 21px;
+  border-bottom: 1px solid #b5b8c8;
+  cursor: pointer;
+  cursor: hand;
+  overflow: hidden; }
+
+/* line 24, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-border-box .x-form-trigger {
+  height: 22px; }
+
+/* line 28, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger {
+  height: 19px; }
+
+/* line 32, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-border-box .x-field-default-toolbar .x-form-trigger {
+  height: 20px; }
+
+/* line 37, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-over {
+  background-position: -17px 0;
+  border-bottom-color: #7eadd9; }
+
+/* line 43, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap-focus .x-form-trigger {
+  background-position: -51px 0;
+  border-bottom-color: #7eadd9; }
+
+/* line 49, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap-focus .x-form-trigger-over {
+  background-position: -68px 0;
+  border-bottom-color: null; }
+
+/* line 58, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-click,
+.x-form-trigger-wrap-focus .x-form-trigger-click {
+  background-position: -34px 0;
+  border-bottom-color: null; }
+
+/* line 66, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-icon {
+  height: 16px;
+  background-repeat: no-repeat;
+  background-position: 7px 6px; }
+
+/* line 74, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-pickerfield-open .x-form-field {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 80, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-pickerfield-open-above .x-form-field {
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  -o-border-bottom-left-radius: 3px;
+  -ms-border-bottom-left-radius: 3px;
+  -khtml-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-arrow-trigger .x-form-trigger-icon {
+  background-image: url('../../resources/themes/images/default/boundlist/trigger-arrow.png'); }
+
+/* line 92, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-date-trigger {
+  background-image: url('../../resources/themes/images/default/form/date-trigger.gif'); }
+
+/* line 99, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap .x-form-spinner-up,
+.x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url('../../resources/themes/images/default/form/spinner.gif');
+  width: 17px !important;
+  height: 11px !important;
+  font-size: 0;
+  /*for IE*/
+  border-bottom: 0; }
+/* line 109, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap .x-form-spinner-down {
+  background-position: 0 -11px; }
+
+/* line 113, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down {
+  background-position: -51px -11px; }
+
+/* line 116, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap .x-form-spinner-down-over {
+  background-position: -17px -11px; }
+
+/* line 119, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down-over {
+  background-position: -68px -11px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap .x-form-spinner-down-click {
+  background-position: -34px -11px; }
+
+/* line 131, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-up,
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url('../../resources/themes/images/default/form/spinner-small.gif');
+  height: 10px !important; }
+/* line 135, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down {
+  background-position: 0 -10px; }
+/* line 139, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down {
+  background-position: -51px -10px; }
+/* line 142, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-over {
+  background-position: -17px -10px; }
+/* line 145, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down-over {
+  background-position: -68px -10px; }
+/* line 148, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-click {
+  background-position: -34px -10px; }
+
+/* line 154, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-trigger-noedit {
+  cursor: pointer;
+  cursor: hand; }
+
+/* line 160, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-item-disabled .x-trigger-noedit, .x-item-disabled .x-form-trigger {
+  cursor: auto; }
+
+/* line 166, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-clear-trigger {
+  background-image: url('../../resources/themes/images/default/form/clear-trigger.gif'); }
+
+/* line 169, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-search-trigger {
+  background-image: url('../../resources/themes/images/default/form/search-trigger.gif'); }
+
+/* line 177, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-quirks .prefixie6 .x-form-trigger-input-cell {
+  height: 22px; }
+/* line 180, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-quirks .prefixie6 .x-field-default-toolbar .x-form-trigger-input-cell {
+  height: 20px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-wrap {
+  border: 1px solid #b5b8c8; }
+  /* line 9, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-html-editor-wrap .x-toolbar {
+    border-top-width: 0;
+    border-left-width: 0;
+    border-right-width: 0; }
+  /* line 15, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-html-editor-wrap textarea {
+    background-color: white; }
+
+/* line 20, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-btn-text {
+  background: transparent no-repeat;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 26, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-bold,
+.x-menu-item img.x-edit-bold {
+  background-position: 0 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 32, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-italic,
+.x-menu-item img.x-edit-italic {
+  background-position: -16px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 38, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-underline,
+.x-menu-item img.x-edit-underline {
+  background-position: -32px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 44, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-forecolor,
+.x-menu-item img.x-edit-forecolor {
+  background-position: -160px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 50, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-backcolor,
+.x-menu-item img.x-edit-backcolor {
+  background-position: -176px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 56, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-justifyleft,
+.x-menu-item img.x-edit-justifyleft {
+  background-position: -112px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 62, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-justifycenter,
+.x-menu-item img.x-edit-justifycenter {
+  background-position: -128px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 68, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-justifyright,
+.x-menu-item img.x-edit-justifyright {
+  background-position: -144px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 74, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-insertorderedlist,
+.x-menu-item img.x-edit-insertorderedlist {
+  background-position: -80px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 80, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-insertunorderedlist,
+.x-menu-item img.x-edit-insertunorderedlist {
+  background-position: -96px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 86, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-increasefontsize,
+.x-menu-item img.x-edit-increasefontsize {
+  background-position: -48px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 92, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-decreasefontsize,
+.x-menu-item img.x-edit-decreasefontsize {
+  background-position: -64px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 98, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-sourceedit,
+.x-menu-item img.x-edit-sourceedit {
+  background-position: -192px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 104, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-createlink,
+.x-menu-item img.x-edit-createlink {
+  background-position: -208px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 109, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tip .x-tip-bd .x-tip-bd-inner {
+  padding: 5px;
+  padding-bottom: 1px; }
+
+/* line 115, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-toolbar {
+  position: static !important; }
+/* line 118, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-font-select {
+  font-size: 11px; }
+
+/* line 123, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-wrap textarea {
+  border: 0;
+  padding: 3px 2px;
+  overflow: auto; }
+
+/* line 7, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel,
+.x-plain {
+  overflow: hidden;
+  position: relative; }
+
+/* line 24, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-ie .x-panel-header,
+.x-ie .x-panel-header-tl,
+.x-ie .x-panel-header-tc,
+.x-ie .x-panel-header-tr,
+.x-ie .x-panel-header-ml,
+.x-ie .x-panel-header-mc,
+.x-ie .x-panel-header-mr,
+.x-ie .x-panel-header-bl,
+.x-ie .x-panel-header-bc,
+.x-ie .x-panel-header-br {
+  zoom: 1; }
+
+/* line 30, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-ie8 td.x-frame-mc {
+  vertical-align: top; }
+
+/* line 37, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-horizontal {
+  padding: 3px 5px 4px; }
+
+/* line 40, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-vertical {
+  padding: 5px 4px; }
+
+/* line 45, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-icon,
+.x-window-header-icon {
+  width: 16px;
+  height: 16px;
+  background-repeat: no-repeat;
+  background-position: 0 0;
+  vertical-align: middle;
+  margin-right: 4px; }
+
+/* line 56, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-vertical .x-panel-header-icon,
+.x-vertical .x-window-header-icon {
+  margin: 0 0 4px; }
+
+/* line 64, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-draggable,
+.x-panel-header-draggable .x-panel-header-text,
+.x-window-header-draggable,
+.x-window-header-draggable .x-window-header-text {
+  cursor: move; }
+
+/* line 70, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-ghost, .x-window-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+  opacity: 0.65;
+  cursor: move; }
+
+/* line 76, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-horizontal .x-panel-header-body, .x-panel-header-horizontal .x-window-header-body, .x-panel-header-horizontal .x-btn-group-header-body, .x-window-header-horizontal .x-panel-header-body, .x-window-header-horizontal .x-window-header-body, .x-window-header-horizontal .x-btn-group-header-body, .x-btn-group-header-horizontal .x-panel-header-body, .x-btn-group-header-horizontal .x-window-header-body, .x-btn-group-header-horizontal .x-btn-group-header-body {
+  width: 100%; }
+
+/* line 82, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-vertical .x-panel-header-body, .x-panel-header-vertical .x-window-header-body, .x-panel-header-vertical .x-btn-group-header-body, .x-window-header-vertical .x-panel-header-body, .x-window-header-vertical .x-window-header-body, .x-window-header-vertical .x-btn-group-header-body, .x-btn-group-header-vertical .x-panel-header-body, .x-btn-group-header-vertical .x-window-header-body, .x-btn-group-header-vertical .x-btn-group-header-body {
+  height: 100%; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-text-container {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis; }
+
+/* line 93, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-text {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  white-space: nowrap; }
+
+/* line 100, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-left .x-vml-base,
+.x-panel-header-right .x-vml-base {
+  left: -3px !important; }
+
+/* line 106, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-body {
+  overflow: hidden;
+  position: relative;
+  font-size: 12px; }
+
+/* line 114, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-vertical .x-surface {
+  padding-left: 1px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-opera .x-panel-header-vertical .x-surface,
+.x-strict .x-ie9 .x-panel-header-vertical .x-surface {
+  padding-left: 2px; }
+
+/* line 129, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-collapsed-border-top {
+  border-bottom-width: 1px !important; }
+/* line 132, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-collapsed-border-right {
+  border-left-width: 1px !important; }
+/* line 135, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-collapsed-border-bottom {
+  border-top-width: 1px !important; }
+/* line 138, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-collapsed-border-left {
+  border-right-width: 1px !important; }
+
+/* line 145, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-vertical .x-frame-mc {
+  background-repeat: repeat-y; }
+
+/* line 248, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-default {
+  border-color: #99bce8; }
+
+/* line 253, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default {
+  font-size: 11px;
+  border-color: #99bce8;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -ms-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+  box-shadow: #f4f8fd 0 1px 0px 0 inset; }
+
+/* line 277, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-top {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif'); }
+
+/* line 281, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-bottom {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif'); }
+
+/* line 285, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-left {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif'); }
+
+/* line 289, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-right {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif'); }
+
+/* line 293, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-right {
+  background-position: top right; }
+
+/* line 297, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-bottom {
+  background-position: bottom left; }
+
+/* line 338, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-text-default {
+  color: #04408c;
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 17px; }
+
+/* line 348, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-body-default {
+  background: white;
+  border-color: #99bce8;
+  color: black;
+  border-width: 1px;
+  border-style: solid; }
+
+/* line 363, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-window-header-default,
+.x-panel-collapsed .x-panel-header-default {
+  border-color: #99bce8; }
+
+/* line 368, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-vertical {
+  border-color: #99bce8; }
+
+/* line 375, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-left,
+.x-panel-header-default-right {
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -ms-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+
+/* line 416, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-top {
+  -moz-border-radius-bottomleft: null;
+  -webkit-border-bottom-left-radius: null;
+  -o-border-bottom-left-radius: null;
+  -ms-border-bottom-left-radius: null;
+  -khtml-border-bottom-left-radius: null;
+  border-bottom-left-radius: null;
+  -moz-border-radius-bottomright: null;
+  -webkit-border-bottom-right-radius: null;
+  -o-border-bottom-right-radius: null;
+  -ms-border-bottom-right-radius: null;
+  -khtml-border-bottom-right-radius: null;
+  border-bottom-right-radius: null; }
+/* line 420, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-right {
+  -moz-border-radius-topleft: null;
+  -webkit-border-top-left-radius: null;
+  -o-border-top-left-radius: null;
+  -ms-border-top-left-radius: null;
+  -khtml-border-top-left-radius: null;
+  border-top-left-radius: null;
+  -moz-border-radius-bottomleft: null;
+  -webkit-border-bottom-left-radius: null;
+  -o-border-bottom-left-radius: null;
+  -ms-border-bottom-left-radius: null;
+  -khtml-border-bottom-left-radius: null;
+  border-bottom-left-radius: null; }
+/* line 424, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-bottom {
+  -moz-border-radius-topleft: null;
+  -webkit-border-top-left-radius: null;
+  -o-border-top-left-radius: null;
+  -ms-border-top-left-radius: null;
+  -khtml-border-top-left-radius: null;
+  border-top-left-radius: null;
+  -moz-border-radius-topright: null;
+  -webkit-border-top-right-radius: null;
+  -o-border-top-right-radius: null;
+  -ms-border-top-right-radius: null;
+  -khtml-border-top-right-radius: null;
+  border-top-right-radius: null; }
+/* line 428, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-left {
+  -moz-border-radius-topright: null;
+  -webkit-border-top-right-radius: null;
+  -o-border-top-right-radius: null;
+  -ms-border-top-right-radius: null;
+  -khtml-border-top-right-radius: null;
+  border-top-right-radius: null;
+  -moz-border-radius-bottomright: null;
+  -webkit-border-bottom-right-radius: null;
+  -o-border-bottom-right-radius: null;
+  -ms-border-bottom-right-radius: null;
+  -khtml-border-bottom-right-radius: null;
+  border-bottom-right-radius: null; }
+
+/* line 434, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-top {
+  -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+  box-shadow: #f4f8fd 0 1px 0px 0 inset; }
+
+/* line 438, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-right {
+  -moz-box-shadow: #f4f8fd -1px 0 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd -1px 0 0px 0 inset;
+  -o-box-shadow: #f4f8fd -1px 0 0px 0 inset;
+  box-shadow: #f4f8fd -1px 0 0px 0 inset; }
+
+/* line 442, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-bottom {
+  -moz-box-shadow: #f4f8fd 0 -1px 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 -1px 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 -1px 0px 0 inset;
+  box-shadow: #f4f8fd 0 -1px 0px 0 inset; }
+
+/* line 446, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-left {
+  -moz-box-shadow: #f4f8fd 1px 0 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 1px 0 0px 0 inset;
+  -o-box-shadow: #f4f8fd 1px 0 0px 0 inset;
+  box-shadow: #f4f8fd 1px 0 0px 0 inset; }
+
+/* line 481, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-right-tc,
+.x-panel-header-default-right-mc,
+.x-panel-header-default-right-bc {
+  background-position: right 0; }
+
+/* line 487, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-bottom-tc,
+.x-panel-header-default-bottom-mc,
+.x-panel-header-default-bottom-bc {
+  background-position: 0 bottom; }
+
+/* line 248, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-default-framed {
+  border-color: #99bce8; }
+
+/* line 253, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed {
+  font-size: 11px;
+  border-color: #99bce8;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -ms-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+  box-shadow: #f4f8fd 0 1px 0px 0 inset; }
+
+/* line 277, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-top {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif'); }
+
+/* line 281, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-bottom {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif'); }
+
+/* line 285, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-left {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif'); }
+
+/* line 289, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-right {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif'); }
+
+/* line 293, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-right {
+  background-position: top right; }
+
+/* line 297, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-bottom {
+  background-position: bottom left; }
+
+/* line 305, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nbr .x-panel-header-default-framed {
+  background-image: none; }
+
+/* line 317, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-strict .x-ie9 .x-panel-header-default-framed-top,
+.x-nlg.x-opera .x-panel-header-default-framed-top,
+.x-nlg.x-safari .x-panel-header-default-framed-top {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif'); }
+/* line 321, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-strict .x-ie9 .x-panel-header-default-framed-bottom,
+.x-nlg.x-opera .x-panel-header-default-framed-bottom,
+.x-nlg.x-safari .x-panel-header-default-framed-bottom {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif'); }
+/* line 325, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-strict .x-ie9 .x-panel-header-default-framed-left,
+.x-nlg.x-opera .x-panel-header-default-framed-left,
+.x-nlg.x-safari .x-panel-header-default-framed-left {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif'); }
+/* line 329, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-strict .x-ie9 .x-panel-header-default-framed-right,
+.x-nlg.x-opera .x-panel-header-default-framed-right,
+.x-nlg.x-safari .x-panel-header-default-framed-right {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif'); }
+
+/* line 338, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-text-default-framed {
+  color: #04408c;
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 17px; }
+
+/* line 348, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-body-default-framed {
+  background: #dfe9f6;
+  border-color: #99bce8;
+  color: black;
+  border-width: 0;
+  border-style: solid; }
+
+/* line 363, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-window-header-default-framed,
+.x-panel-collapsed .x-panel-header-default-framed {
+  border-color: #99bce8; }
+
+/* line 368, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-vertical {
+  border-color: #99bce8; }
+
+/* line 375, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-left,
+.x-panel-header-default-framed-right {
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -ms-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-default-framed {
+  -moz-border-radius: 4px;
+  -webkit-border-radius: 4px;
+  -o-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -khtml-border-radius: 4px;
+  border-radius: 4px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #dfe9f6; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-default-framed-mc {
+  background-color: #dfe9f6; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1000404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-default-framed-tl,
+.x-nbr .x-panel-default-framed-bl,
+.x-nbr .x-panel-default-framed-tr,
+.x-nbr .x-panel-default-framed-br,
+.x-nbr .x-panel-default-framed-tc,
+.x-nbr .x-panel-default-framed-bc,
+.x-nbr .x-panel-default-framed-ml,
+.x-nbr .x-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel/panel-default-framed-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-default-framed-ml,
+.x-nbr .x-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel/panel-default-framed-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-default-framed-mc {
+  padding: 1px 1px 1px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-default-framed-tl,
+.x-strict .x-ie7 .x-panel-default-framed-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 5px 4px 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -ms-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-top-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1000000px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-top-tl,
+.x-nbr .x-panel-header-default-framed-top-bl,
+.x-nbr .x-panel-header-default-framed-top-tr,
+.x-nbr .x-panel-header-default-framed-top-br,
+.x-nbr .x-panel-header-default-framed-top-tc,
+.x-nbr .x-panel-header-default-framed-top-bc,
+.x-nbr .x-panel-header-default-framed-top-ml,
+.x-nbr .x-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-top-ml,
+.x-nbr .x-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-top-mc {
+  padding: 0px 2px 4px 2px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -ms-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-right-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000004px 1100400px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-right-tl,
+.x-nbr .x-panel-header-default-framed-right-bl,
+.x-nbr .x-panel-header-default-framed-right-tr,
+.x-nbr .x-panel-header-default-framed-right-br,
+.x-nbr .x-panel-header-default-framed-right-tc,
+.x-nbr .x-panel-header-default-framed-right-bc,
+.x-nbr .x-panel-header-default-framed-right-ml,
+.x-nbr .x-panel-header-default-framed-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-corners.gif'); }
+/* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-right-tc,
+.x-nbr .x-panel-header-default-framed-right-bc {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-x; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-right-mc {
+  padding: 2px 1px 2px 4px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-right-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 3px 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -ms-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-bottom-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000000px 1000404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-bottom-tl,
+.x-nbr .x-panel-header-default-framed-bottom-bl,
+.x-nbr .x-panel-header-default-framed-bottom-tr,
+.x-nbr .x-panel-header-default-framed-bottom-br,
+.x-nbr .x-panel-header-default-framed-bottom-tc,
+.x-nbr .x-panel-header-default-framed-bottom-bc,
+.x-nbr .x-panel-header-default-framed-bottom-ml,
+.x-nbr .x-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-bottom-ml,
+.x-nbr .x-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-bottom-mc {
+  padding: 3px 2px 1px 2px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -ms-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-left-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000400px 1100004px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-left-tl,
+.x-nbr .x-panel-header-default-framed-left-bl,
+.x-nbr .x-panel-header-default-framed-left-tr,
+.x-nbr .x-panel-header-default-framed-left-br,
+.x-nbr .x-panel-header-default-framed-left-tc,
+.x-nbr .x-panel-header-default-framed-left-bc,
+.x-nbr .x-panel-header-default-framed-left-ml,
+.x-nbr .x-panel-header-default-framed-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-corners.gif'); }
+/* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-left-tc,
+.x-nbr .x-panel-header-default-framed-left-bc {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-x; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-left-mc {
+  padding: 2px 4px 2px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-left-bl {
+  position: relative;
+  right: 0; }
+
+/* line 399, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-top {
+  -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset; }
+
+/* line 403, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-right {
+  -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset;
+  box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset; }
+
+/* line 407, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-bottom {
+  -moz-box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset; }
+
+/* line 411, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-left {
+  -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset; }
+
+/* line 452, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel .x-panel-header-default-framed-top {
+  border-bottom-width: 1px !important; }
+
+/* line 456, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel .x-panel-header-default-framed-right {
+  border-left-width: 1px !important; }
+
+/* line 460, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel .x-panel-header-default-framed-bottom {
+  border-top-width: 1px !important; }
+
+/* line 464, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel .x-panel-header-default-framed-left {
+  border-right-width: 1px !important; }
+
+/* line 468, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-collapsed {
+  -moz-border-radius: 4px;
+  -webkit-border-radius: 4px;
+  -o-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -khtml-border-radius: 4px;
+  border-radius: 4px; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-collapsed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 3px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -ms-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-top-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1000404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top-tl,
+.x-nbr .x-panel-header-default-framed-collapsed-top-bl,
+.x-nbr .x-panel-header-default-framed-collapsed-top-tr,
+.x-nbr .x-panel-header-default-framed-collapsed-top-br,
+.x-nbr .x-panel-header-default-framed-collapsed-top-tc,
+.x-nbr .x-panel-header-default-framed-collapsed-top-bc,
+.x-nbr .x-panel-header-default-framed-collapsed-top-ml,
+.x-nbr .x-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top-ml,
+.x-nbr .x-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top-mc {
+  padding: 0px 2px 1px 2px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-collapsed-right {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -ms-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-right-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1100404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right-tl,
+.x-nbr .x-panel-header-default-framed-collapsed-right-bl,
+.x-nbr .x-panel-header-default-framed-collapsed-right-tr,
+.x-nbr .x-panel-header-default-framed-collapsed-right-br,
+.x-nbr .x-panel-header-default-framed-collapsed-right-tc,
+.x-nbr .x-panel-header-default-framed-collapsed-right-bc,
+.x-nbr .x-panel-header-default-framed-collapsed-right-ml,
+.x-nbr .x-panel-header-default-framed-collapsed-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-corners.gif'); }
+/* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right-tc,
+.x-nbr .x-panel-header-default-framed-collapsed-right-bc {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-x; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right-mc {
+  padding: 2px 1px 2px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-collapsed-bottom {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 3px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -ms-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-bottom-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1000404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-tl,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-bl,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-tr,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-br,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-tc,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-bc,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-mc {
+  padding: 0px 2px 1px 2px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-collapsed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -ms-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-left-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1100404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left-tl,
+.x-nbr .x-panel-header-default-framed-collapsed-left-bl,
+.x-nbr .x-panel-header-default-framed-collapsed-left-tr,
+.x-nbr .x-panel-header-default-framed-collapsed-left-br,
+.x-nbr .x-panel-header-default-framed-collapsed-left-tc,
+.x-nbr .x-panel-header-default-framed-collapsed-left-bc,
+.x-nbr .x-panel-header-default-framed-collapsed-left-ml,
+.x-nbr .x-panel-header-default-framed-collapsed-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-corners.gif'); }
+/* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left-tc,
+.x-nbr .x-panel-header-default-framed-collapsed-left-bc {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-x; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left-mc {
+  padding: 2px 1px 2px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl {
+  position: relative;
+  right: 0; }
+
+/* line 481, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-right-tc,
+.x-panel-header-default-framed-right-mc,
+.x-panel-header-default-framed-right-bc {
+  background-position: right 0; }
+
+/* line 487, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-bottom-tc,
+.x-panel-header-default-framed-bottom-mc,
+.x-panel-header-default-framed-bottom-bc {
+  background-position: 0 bottom; }
+
+/* line 197, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-plain,
+.x-panel-body-plain {
+  border: 0;
+  padding: 0; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip {
+  position: absolute;
+  overflow: visible;
+  /*pointer needs to be able to stick out*/
+  border-color: #8eaace; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-tip .x-tip-header .x-box-item {
+    padding: 3px 3px 0; }
+  /* line 16, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-tip .x-tip-header .x-tool {
+    padding: 0px 1px 0 0 !important; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-tip {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #e9f2ff; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-tip-mc {
+  background-color: #e9f2ff; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tip {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tip-tl,
+.x-nbr .x-tip-bl,
+.x-nbr .x-tip-tr,
+.x-nbr .x-tip-br,
+.x-nbr .x-tip-tc,
+.x-nbr .x-tip-bc,
+.x-nbr .x-tip-ml,
+.x-nbr .x-tip-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/tip/tip-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tip-ml,
+.x-nbr .x-tip-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/tip/tip-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tip-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-tip-tl,
+.x-strict .x-ie7 .x-tip-bl {
+  position: relative;
+  right: 0; }
+
+/* line 31, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-header-text {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  color: #444444;
+  font-size: 11px;
+  font-weight: bold; }
+
+/* line 40, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-header-draggable .x-tip-header-text {
+  cursor: move; }
+
+/* line 47, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-body,
+.x-form-invalid-tip-body {
+  overflow: hidden;
+  position: relative;
+  padding: 3px; }
+
+/* line 55, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-header,
+.x-tip-body,
+.x-form-invalid-tip-body {
+  color: #444444;
+  font-size: 11px;
+  font-weight: normal; }
+  /* line 59, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-tip-header a,
+  .x-tip-body a,
+  .x-form-invalid-tip-body a {
+    color: #2a2a2a; }
+
+/* line 64, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  height: 0;
+  width: 0;
+  border-style: solid;
+  border-width: 5px;
+  border-color: #8eaace;
+  zoom: 1; }
+
+/* line 79, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-border-box .x-tip-anchor {
+  width: 10px;
+  height: 10px; }
+
+/* line 84, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor-top {
+  border-top-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 97, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor-bottom {
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 110, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor-left {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 123, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor-right {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 137, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-form-invalid-tip {
+  border-color: #a1311f;
+  -moz-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  -webkit-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  -o-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset; }
+
+/* line 146, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-form-invalid-tip-body {
+  background: 1px 1px no-repeat;
+  background-image: url('../../resources/themes/images/default/form/exclamation.gif');
+  padding-left: 22px; }
+  /* line 151, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-form-invalid-tip-body li {
+    margin-bottom: 4px; }
+    /* line 153, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+    .x-form-invalid-tip-body li.last {
+      margin-bottom: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-form-invalid-tip-default {
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  -o-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -khtml-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: white; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-form-invalid-tip-default-mc {
+  background-color: white; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-form-invalid-tip-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-form-invalid-tip-default-tl,
+.x-nbr .x-form-invalid-tip-default-bl,
+.x-nbr .x-form-invalid-tip-default-tr,
+.x-nbr .x-form-invalid-tip-default-br,
+.x-nbr .x-form-invalid-tip-default-tc,
+.x-nbr .x-form-invalid-tip-default-bc,
+.x-nbr .x-form-invalid-tip-default-ml,
+.x-nbr .x-form-invalid-tip-default-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-form-invalid-tip-default-ml,
+.x-nbr .x-form-invalid-tip-default-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-form-invalid-tip-default-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-form-invalid-tip-default-tl,
+.x-strict .x-ie7 .x-form-invalid-tip-default-bl {
+  position: relative;
+  right: 0; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider {
+  zoom: 1; }
+
+/* line 10, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-inner {
+  position: relative;
+  left: 0;
+  top: 0;
+  overflow: visible;
+  zoom: 1; }
+
+/* line 18, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-focus {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px;
+  line-height: 1px;
+  font-size: 1px;
+  -moz-outline: 0 none;
+  outline: 0 none;
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  display: block;
+  overflow: hidden; }
+
+/* Horizontal styles */
+/* line 34, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz {
+  padding-left: 7px;
+  background: transparent no-repeat 0 -24px;
+  width: 100%; }
+
+/* line 40, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-end {
+  padding-right: 7px;
+  zoom: 1;
+  background: transparent no-repeat right -46px; }
+
+/* line 46, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-inner {
+  background: transparent repeat-x 0 -2px;
+  height: 18px; }
+
+/* line 51, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb {
+  width: 14px;
+  height: 15px;
+  margin-left: -7px;
+  position: absolute;
+  left: 0;
+  top: 1px;
+  background: transparent no-repeat 0 0; }
+
+/* line 61, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb-over {
+  background-position: -14px -15px; }
+
+/* line 65, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb-drag {
+  background-position: -28px -30px; }
+
+/* Vertical styles */
+/* line 70, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert {
+  padding-top: 7px;
+  background: transparent no-repeat -44px 0; }
+
+/* line 75, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-end {
+  padding-bottom: 7px;
+  zoom: 1;
+  background: transparent no-repeat -22px bottom;
+  width: 22px; }
+
+/* line 82, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-inner {
+  background: transparent repeat-y 0 0;
+  width: 22px; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb {
+  width: 15px;
+  height: 14px;
+  margin-bottom: -7px;
+  position: absolute;
+  left: 3px;
+  bottom: 0;
+  background: transparent no-repeat 0 0; }
+
+/* line 97, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb-over {
+  background-position: -15px -14px; }
+
+/* line 101, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb-drag {
+  background-position: -30px -28px; }
+
+/* line 107, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz,
+.x-slider-horz .x-slider-end,
+.x-slider-horz .x-slider-inner {
+  background-image: url('../../resources/themes/images/default/slider/slider-bg.png'); }
+
+/* line 111, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb {
+  background-image: url('../../resources/themes/images/default/slider/slider-thumb.png'); }
+
+/* line 117, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert,
+.x-slider-vert .x-slider-end,
+.x-slider-vert .x-slider-inner {
+  background-image: url('../../resources/themes/images/default/slider/slider-v-bg.png'); }
+
+/* line 121, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb {
+  background-image: url('../../resources/themes/images/default/slider/slider-v-thumb.png'); }
+
+/* line 129, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-ie6 .x-slider-horz,
+.x-ie6 .x-slider-horz .x-slider-end,
+.x-ie6 .x-slider-horz .x-slider-inner {
+  background-image: url('../../resources/themes/images/default/slider/slider-bg.gif'); }
+/* line 133, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-ie6 .x-slider-horz .x-slider-thumb {
+  background-image: url('../../resources/themes/images/default/slider/slider-thumb.gif'); }
+/* line 139, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-ie6 .x-slider-vert,
+.x-ie6 .x-slider-vert .x-slider-end,
+.x-ie6 .x-slider-vert .x-slider-inner {
+  background-image: url('../../resources/themes/images/default/slider/slider-v-bg.gif'); }
+/* line 143, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-ie6 .x-slider-vert .x-slider-thumb {
+  background-image: url('../../resources/themes/images/default/slider/slider-v-thumb.gif'); }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress {
+  position: relative;
+  border-width: 1px;
+  border-style: solid;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0;
+  overflow: hidden;
+  height: 20px; }
+
+/* line 17, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress-bar {
+  height: 18px;
+  overflow: hidden;
+  position: absolute;
+  width: 0;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0;
+  border-right: 1px solid;
+  border-top: 1px solid; }
+
+/* line 30, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress-text {
+  overflow: hidden;
+  position: absolute;
+  padding: 0 5px;
+  height: 18px;
+  font-weight: bold;
+  font-size: 11px;
+  line-height: 16px;
+  text-align: center; }
+
+/* line 45, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress-text-back {
+  padding-top: 1px; }
+
+/* line 50, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-strict .x-ie7m .x-progress {
+  height: 18px; }
+
+/* line 93, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress-default {
+  border-color: #6594cf; }
+  /* line 96, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-progress-default .x-progress-bar {
+    border-right-color: #6594cf;
+    border-top-color: #c6d8ed;
+    background-image: none;
+    background-color: #73a3e0;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b2ccee), color-stop(50%, #88b1e5), color-stop(51%, #73a3e0), color-stop(100%, #5e96db));
+    background-image: -webkit-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+    background-image: -moz-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+    background-image: -o-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+    background-image: -ms-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+    background-image: linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db); }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-progress-default .x-progress-text {
+    color: white; }
+  /* line 107, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-progress-default .x-progress-text-back {
+    color: #396295; }
+
+/* line 116, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-nlg .x-progress-default .x-progress-bar {
+  background: repeat-x;
+  background-image: url('../../resources/themes/images/default/progress/progress-default-bg.gif'); }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar {
+  font-size: 11px;
+  border: 1px solid;
+  padding: 2px 0 2px 2px; }
+  /* line 13, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-form-item-label {
+    font-size: 11px;
+    line-height: 15px; }
+  /* line 18, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-item {
+    margin: 0 2px 0 0; }
+  /* line 22, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-text {
+    margin-left: 4px;
+    margin-right: 6px;
+    white-space: nowrap;
+    color: #4c4c4c;
+    line-height: 16px;
+    font-family: tahoma, arial, verdana, sans-serif;
+    font-size: 11px;
+    font-weight: normal; }
+  /* line 33, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-separator {
+    display: block;
+    font-size: 1px;
+    overflow: hidden;
+    cursor: default;
+    border: 0; }
+  /* line 41, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-separator-horizontal {
+    margin: 0 3px 0 2px;
+    height: 14px;
+    width: 0px;
+    border-left: 1px solid #98c8ff;
+    border-right: 1px solid white; }
+
+/* line 53, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal {
+  width: 2px; }
+
+/* line 58, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-footer {
+  background: transparent;
+  border: 0px none;
+  margin-top: 3px;
+  padding: 2px 0 2px 6px; }
+  /* line 65, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-footer .x-box-inner {
+    border-width: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-footer .x-toolbar-item {
+    margin: 0 6px 0 0; }
+
+/* line 74, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-vertical {
+  padding: 2px 2px 0 2px; }
+  /* line 77, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-vertical .x-toolbar-item {
+    margin: 0 0 2px 0; }
+  /* line 81, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-vertical .x-toolbar-text {
+    margin-top: 4px;
+    margin-bottom: 6px; }
+  /* line 86, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-vertical .x-toolbar-separator-vertical {
+    margin: 2px 5px 3px 5px;
+    height: 0px;
+    width: 10px;
+    line-height: 0px;
+    border-top: 1px solid #98c8ff;
+    border-bottom: 1px solid white; }
+
+/* line 98, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-scroller {
+  padding-left: 0; }
+
+/* line 102, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-spacer {
+  width: 2px; }
+
+/* line 107, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-more-icon {
+  background-image: url('../../resources/themes/images/default/toolbar/more.gif') !important;
+  background-position: 2px center !important;
+  background-repeat: no-repeat; }
+
+/* line 144, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-default {
+  border-color: #99bce8;
+  background-image: none;
+  background-color: #d3e1f1;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dfe9f5), color-stop(100%, #d3e1f1));
+  background-image: -webkit-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: -moz-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: -o-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: -ms-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: linear-gradient(top, #dfe9f5, #d3e1f1); }
+
+/* line 155, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-nlg .x-toolbar-default {
+  background-image: url('../../resources/themes/images/default/toolbar/toolbar-default-bg.gif') !important;
+  background-repeat: repeat-x; }
+
+/* line 123, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-plain {
+  border: 0; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window {
+  outline: none;
+  overflow: hidden; }
+  /* line 10, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-window .x-window-wrap {
+    position: relative; }
+
+/* line 15, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-body {
+  position: relative;
+  border-style: solid;
+  overflow: hidden; }
+
+/* line 24, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-maximized .x-window-wrap .x-window-header {
+  -moz-border-radius: 0 !important;
+  -webkit-border-radius: 0 !important;
+  -o-border-radius: 0 !important;
+  -ms-border-radius: 0 !important;
+  -khtml-border-radius: 0 !important;
+  border-radius: 0 !important; }
+
+/* line 30, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-top {
+  margin-bottom: -2px; }
+
+/* line 33, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-body-horizontal {
+  margin-top: -1px; }
+
+/* line 37, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-bottom {
+  margin-top: -1px;
+  margin-bottom: -1px; }
+
+/* line 42, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-left {
+  margin-right: -1px; }
+
+/* line 46, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-right {
+  margin-left: -1px; }
+
+/* line 51, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-vertical .x-surface {
+  padding-left: 1px; }
+
+/* line 58, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-vertical {
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  -o-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -khtml-border-radius: 5px;
+  border-radius: 5px; }
+/* line 61, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-horizontal {
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  -o-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -khtml-border-radius: 5px;
+  border-radius: 5px; }
+/* line 66, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-left {
+  padding-right: 5px !important;
+  margin-right: 0; }
+/* line 71, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-right {
+  padding-left: 5px !important;
+  margin-left: 0; }
+/* line 76, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-top {
+  padding-bottom: 5px !important;
+  margin-bottom: -1px; }
+/* line 81, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-bottom {
+  padding-top: 5px !important;
+  margin-top: 0; }
+
+/* line 89, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-left .x-vml-base,
+.x-window-header-right .x-vml-base {
+  left: -3px !important; }
+
+/* line 97, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-opera .x-window-header-vertical .x-surface,
+.x-strict .x-ie9 .x-window-header-vertical .x-surface {
+  padding-left: 2px; }
+
+/* line 103, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-text-container {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis; }
+
+/* line 109, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-text {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  white-space: nowrap; }
+
+/* line 159, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-default {
+  border-color: #a2b1c5;
+  -moz-border-radius: 5px 5px;
+  -webkit-border-radius: 5px 5px;
+  -o-border-radius: 5px 5px;
+  -ms-border-radius: 5px 5px;
+  -khtml-border-radius: 5px 5px;
+  border-radius: 5px 5px;
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-default {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-default-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-default-tl,
+.x-nbr .x-window-default-bl,
+.x-nbr .x-window-default-tr,
+.x-nbr .x-window-default-br,
+.x-nbr .x-window-default-tc,
+.x-nbr .x-window-default-bc,
+.x-nbr .x-window-default-ml,
+.x-nbr .x-window-default-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window/window-default-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-default-ml,
+.x-nbr .x-window-default-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window/window-default-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-default-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-default-tl,
+.x-strict .x-ie7 .x-window-default-bl {
+  position: relative;
+  right: 0; }
+
+/* line 178, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-body-default {
+  border-color: #99bbe8;
+  border-width: 1px;
+  background: #dfe8f6;
+  color: black; }
+
+/* line 188, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default {
+  font-size: 11px;
+  border-color: #a2b1c5;
+  zoom: 1; }
+
+/* line 194, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-text-default {
+  color: #04468c;
+  font-weight: bold;
+  line-height: 17px;
+  font-family: tahoma, arial, verdana, sans-serif;
+  font-size: 11px; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 5px 0 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-top-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000000px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-top-tl,
+.x-nbr .x-window-header-default-top-bl,
+.x-nbr .x-window-header-default-top-tr,
+.x-nbr .x-window-header-default-top-br,
+.x-nbr .x-window-header-default-top-tc,
+.x-nbr .x-window-header-default-top-bc,
+.x-nbr .x-window-header-default-top-ml,
+.x-nbr .x-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-top-ml,
+.x-nbr .x-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-top-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-top-mc {
+  padding: 0px 1px 0 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-top-tl,
+.x-strict .x-ie7 .x-window-header-default-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 0;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-right-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000005px 1000500px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-right-tl,
+.x-nbr .x-window-header-default-right-bl,
+.x-nbr .x-window-header-default-right-tr,
+.x-nbr .x-window-header-default-right-br,
+.x-nbr .x-window-header-default-right-tc,
+.x-nbr .x-window-header-default-right-bc,
+.x-nbr .x-window-header-default-right-ml,
+.x-nbr .x-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-right-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-right-ml,
+.x-nbr .x-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-right-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-right-mc {
+  padding: 1px 0px 1px 0; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-right-tl,
+.x-strict .x-ie7 .x-window-header-default-right-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 0 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-bottom-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000000px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-bottom-tl,
+.x-nbr .x-window-header-default-bottom-bl,
+.x-nbr .x-window-header-default-bottom-tr,
+.x-nbr .x-window-header-default-bottom-br,
+.x-nbr .x-window-header-default-bottom-tc,
+.x-nbr .x-window-header-default-bottom-bc,
+.x-nbr .x-window-header-default-bottom-ml,
+.x-nbr .x-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-bottom-ml,
+.x-nbr .x-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-bottom-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-bottom-mc {
+  padding: 0 1px 0px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-bottom-tl,
+.x-strict .x-ie7 .x-window-header-default-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-left {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 0px 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-left-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000500px 1000005px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-left-tl,
+.x-nbr .x-window-header-default-left-bl,
+.x-nbr .x-window-header-default-left-tr,
+.x-nbr .x-window-header-default-left-br,
+.x-nbr .x-window-header-default-left-tc,
+.x-nbr .x-window-header-default-left-bc,
+.x-nbr .x-window-header-default-left-ml,
+.x-nbr .x-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-left-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-left-ml,
+.x-nbr .x-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-left-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-left-mc {
+  padding: 1px 0px 1px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-left-tl,
+.x-strict .x-ie7 .x-window-header-default-left-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-collapsed-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-collapsed-top-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-top-tl,
+.x-nbr .x-window-header-default-collapsed-top-bl,
+.x-nbr .x-window-header-default-collapsed-top-tr,
+.x-nbr .x-window-header-default-collapsed-top-br,
+.x-nbr .x-window-header-default-collapsed-top-tc,
+.x-nbr .x-window-header-default-collapsed-top-bc,
+.x-nbr .x-window-header-default-collapsed-top-ml,
+.x-nbr .x-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-top-ml,
+.x-nbr .x-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-top-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-top-mc {
+  padding: 0px 1px 0px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-collapsed-right {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-collapsed-right-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-right-tl,
+.x-nbr .x-window-header-default-collapsed-right-bl,
+.x-nbr .x-window-header-default-collapsed-right-tr,
+.x-nbr .x-window-header-default-collapsed-right-br,
+.x-nbr .x-window-header-default-collapsed-right-tc,
+.x-nbr .x-window-header-default-collapsed-right-bc,
+.x-nbr .x-window-header-default-collapsed-right-ml,
+.x-nbr .x-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-right-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-right-ml,
+.x-nbr .x-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-right-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-right-mc {
+  padding: 1px 0px 1px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-collapsed-bottom {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-collapsed-bottom-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-bottom-tl,
+.x-nbr .x-window-header-default-collapsed-bottom-bl,
+.x-nbr .x-window-header-default-collapsed-bottom-tr,
+.x-nbr .x-window-header-default-collapsed-bottom-br,
+.x-nbr .x-window-header-default-collapsed-bottom-tc,
+.x-nbr .x-window-header-default-collapsed-bottom-bc,
+.x-nbr .x-window-header-default-collapsed-bottom-ml,
+.x-nbr .x-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-bottom-ml,
+.x-nbr .x-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-bottom-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-bottom-mc {
+  padding: 0px 1px 0px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-collapsed-left {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-collapsed-left-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-left-tl,
+.x-nbr .x-window-header-default-collapsed-left-bl,
+.x-nbr .x-window-header-default-collapsed-left-tr,
+.x-nbr .x-window-header-default-collapsed-left-br,
+.x-nbr .x-window-header-default-collapsed-left-tc,
+.x-nbr .x-window-header-default-collapsed-left-bc,
+.x-nbr .x-window-header-default-collapsed-left-ml,
+.x-nbr .x-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-left-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-left-ml,
+.x-nbr .x-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-left-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-left-mc {
+  padding: 1px 0px 1px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl {
+  position: relative;
+  right: 0; }
+
+/* line 217, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default-top {
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+
+/* line 221, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default-right {
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+  -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset; }
+
+/* line 225, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default-bottom {
+  -moz-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -webkit-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -o-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+
+/* line 229, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default-left {
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+
+/* line 130, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-body-plain {
+  background: transparent; }
+
+/* line 2, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box .x-window-body {
+  background-color: #ced9e7;
+  border: none; }
+
+/* line 7, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box .x-progress-wrap {
+  margin-top: 4px; }
+
+/* line 11, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-icon {
+  width: 47px;
+  height: 32px; }
+
+/* line 19, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-info,
+.x-message-box-warning,
+.x-message-box-question,
+.x-message-box-error {
+  background: transparent no-repeat top left; }
+
+/* line 23, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box .x-msg-box-wait {
+  background-image: url('../../resources/themes/images/default/shared/blue-loading.gif'); }
+
+/* line 27, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-info {
+  background-image: url('../../resources/themes/images/default/shared/icon-info.gif'); }
+
+/* line 31, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-warning {
+  background-image: url('../../resources/themes/images/default/shared/icon-warning.gif'); }
+
+/* line 35, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-question {
+  background-image: url('../../resources/themes/images/default/shared/icon-question.gif'); }
+
+/* line 39, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-error {
+  background-image: url('../../resources/themes/images/default/shared/icon-error.gif'); }
+
+/* line 73, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar {
+  position: relative;
+  background-color: transparent;
+  background-image: none;
+  background-color: #cbdbef;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef));
+  background-image: -webkit-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: -moz-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: -o-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: -ms-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: linear-gradient(top, #dde8f5, #cbdbef);
+  font-size: 11px; }
+
+/* line 80, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-nlg .x-tab-bar {
+  background-image: url('../../resources/themes/images/default/tab-bar/tab-bar-default-bg.gif'); }
+
+/* line 85, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-default-plain,
+.x-nlg .x-tab-bar-default-plain {
+  background: transparent none; }
+
+/* line 90, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-body {
+  border-style: solid;
+  border-color: #99bce8;
+  position: relative;
+  z-index: 2;
+  zoom: 1; }
+
+/* Top Tabs */
+/* line 4, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-top .x-tab-bar-body {
+  height: 20px;
+  border-width: 1px 1px 0;
+  padding: 1px 0 3px; }
+/* line 10, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-top .x-tab-bar-strip {
+  /*position strip from top rather than bottom to avoid off-by-one error in IE6*/
+  top: 22px;
+  border-width: 1px 1px 0;
+  height: 2px; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-top .x-tab-bar-body {
+  height: 25px; }
+/* line 23, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-top .x-tab-bar-strip {
+  height: 3px; }
+
+/* line 4, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-top .x-tab-bar-body-default-plain {
+  height: 20px;
+  border-width: 0;
+  padding: 0 0 2px; }
+/* line 10, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-top .x-tab-bar-strip-default-plain {
+  /*position strip from top rather than bottom to avoid off-by-one error in IE6*/
+  top: 20px;
+  border-width: 1px 1px 0 1px;
+  height: 2px; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-top .x-tab-bar-body-default-plain {
+  height: 22px; }
+/* line 23, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-top .x-tab-bar-strip-default-plain {
+  height: 3px; }
+
+/* Bottom Tabs */
+/* line 32, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-bottom .x-tab-bar-body {
+  height: 20px;
+  border-width: 0 1px 1px;
+  padding: 3px 0 1px; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-tab-bar-bottom .x-tab-bar-body .x-box-inner {
+    position: relative;
+    top: -1px; }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller,
+  .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-left,
+  .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-right {
+    height: 22px; }
+/* line 49, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-bottom .x-tab-bar-strip {
+  top: 0;
+  border-width: 0 1px 1px 1px;
+  height: 2px; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-bottom .x-tab-bar-body {
+  height: 25px; }
+/* line 61, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-bottom .x-tab-bar-strip {
+  height: 3px; }
+
+/* line 32, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-bottom .x-tab-bar-body-default-plain {
+  height: 20px;
+  border-width: 0;
+  padding: 3px 0 0; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-inner {
+    position: relative;
+    top: -1px; }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller,
+  .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-left,
+  .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-right {
+    height: 21px; }
+/* line 49, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-bottom .x-tab-bar-strip-default-plain {
+  top: 0;
+  border-width: 0 1px 1px 1px;
+  height: 2px; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-bottom .x-tab-bar-body-default-plain {
+  height: 23px; }
+/* line 61, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-bottom .x-tab-bar-strip-default-plain {
+  height: 3px; }
+
+/* line 141, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-strip-default,
+.x-tab-bar-strip-default-plain {
+  font-size: 0;
+  line-height: 0;
+  position: absolute;
+  z-index: 1;
+  border-style: solid;
+  overflow: hidden;
+  border-color: #99bce8;
+  background-color: #deecfd;
+  zoom: 1; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-tab-default-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 3px 0 3px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -ms-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-tab-default-top-mc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-bg.gif');
+  background-color: #deecfd; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100404px 1000000px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-top-tl,
+.x-nbr .x-tab-default-top-bl,
+.x-nbr .x-tab-default-top-tr,
+.x-nbr .x-tab-default-top-br,
+.x-nbr .x-tab-default-top-tc,
+.x-nbr .x-tab-default-top-bc,
+.x-nbr .x-tab-default-top-ml,
+.x-nbr .x-tab-default-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-top-ml,
+.x-nbr .x-tab-default-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-top-mc {
+  padding: 0px 0px 0 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-tab-default-top-tl,
+.x-strict .x-ie7 .x-tab-default-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-tab-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 0 3px 3px 3px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -ms-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-tab-default-bottom-mc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif');
+  background-color: #deecfd; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100000px 1000404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-bottom-tl,
+.x-nbr .x-tab-default-bottom-bl,
+.x-nbr .x-tab-default-bottom-tr,
+.x-nbr .x-tab-default-bottom-br,
+.x-nbr .x-tab-default-bottom-tc,
+.x-nbr .x-tab-default-bottom-bc,
+.x-nbr .x-tab-default-bottom-ml,
+.x-nbr .x-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-bottom-ml,
+.x-nbr .x-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-bottom-mc {
+  padding: 0 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-tab-default-bottom-tl,
+.x-strict .x-ie7 .x-tab-default-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 28, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab {
+  z-index: 1;
+  margin: 0 0 0 2px;
+  display: inline-block;
+  zoom: 1;
+  *display: inline;
+  white-space: nowrap;
+  height: 20px;
+  border-color: #8db3e3;
+  cursor: pointer;
+  cursor: hand; }
+  /* line 40, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab button {
+    cursor: pointer;
+    cursor: hand; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab em {
+    display: block;
+    padding: 0 6px;
+    line-height: 1px; }
+  /* line 51, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab button {
+    background: none;
+    border: 0;
+    padding: 0;
+    margin: 0;
+    -webkit-appearance: none;
+    font-size: 11px;
+    font-weight: bold;
+    font-family: tahoma, arial, verdana, sans-serif;
+    color: #416da3;
+    outline: 0 none;
+    overflow-x: visible; }
+    /* line 69, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-tab button::-moz-focus-inner {
+      border: 0;
+      padding: 0; }
+    /* line 74, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-tab button .x-tab-inner {
+      background-color: transparent;
+      background-repeat: no-repeat;
+      background-position: 0 -2px;
+      display: block;
+      text-align: center;
+      white-space: nowrap;
+      text-overflow: ellipsis;
+      -o-text-overflow: ellipsis;
+      overflow: hidden; }
+  /* line 87, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab img {
+    display: none; }
+
+/* line 93, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-border-box .x-tab-default-top {
+  height: 21px; }
+/* line 96, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-border-box .x-tab-default-bottom {
+  height: 21px; }
+
+/* line 103, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+* html .x-ie .x-tab button {
+  width: 1px; }
+
+/* line 110, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-strict .x-ie6 .x-tab .x-frame-mc,
+.x-strict .x-ie7 .x-tab .x-frame-mc {
+  height: 100%; }
+
+/* line 115, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-ie .x-tab-active button:active {
+  position: relative;
+  top: -1px;
+  left: -1px; }
+
+/* line 124, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-top {
+  -moz-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -webkit-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -o-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  border-bottom: 1px solid #99bce8 !important; }
+  /* line 134, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-top em {
+    padding-bottom: 3px; }
+  /* line 139, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-top button,
+  .x-tab-default-top .x-tab-inner {
+    height: 13px;
+    line-height: 13px; }
+
+/* line 148, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-safari4 .x-tab-default-top .x-tab-inner,
+.x-safari5_0 .x-tab-default-top .x-tab-inner {
+  line-height: 11px; }
+
+/* line 153, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-default-top {
+  border-bottom-width: 1px !important; }
+
+/* line 157, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-top-active {
+  border-bottom-color: #deecfd !important; }
+
+/* line 163, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-bottom {
+  -moz-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -webkit-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -o-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  border-top: 1px solid #99bce8 !important;
+  -moz-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -webkit-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -o-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset; }
+  /* line 178, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-bottom em {
+    padding-top: 3px; }
+  /* line 183, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-bottom button,
+  .x-tab-default-bottom .x-tab-inner {
+    height: 13px;
+    line-height: 13px; }
+
+/* line 189, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-default-bottom {
+  border-top-width: 1px !important; }
+
+/* line 193, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-bottom-active {
+  border-top-color: #deecfd !important; }
+
+/* line 197, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-disabled {
+  cursor: default;
+  border-color: #bbd2ef;
+  background-image: none;
+  background-color: #e1ecfa;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+  background-image: -webkit-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -moz-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -o-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -ms-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: linear-gradient(top, #e1ecfa, #ecf4fe); }
+  /* line 203, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-disabled button {
+    color: #c3b3b3 !important; }
+
+/* line 209, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-icon-text-left .x-tab-inner {
+  padding-left: 20px; }
+
+/* line 214, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab button {
+  position: relative; }
+
+/* line 218, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-icon {
+  position: absolute;
+  background-repeat: no-repeat;
+  background-position: 0 -1px;
+  top: 0;
+  left: 0;
+  right: auto;
+  bottom: 0;
+  width: 18px;
+  height: 18px; }
+
+/* line 233, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-strict .x-ie8 .x-tab button,
+.x-strict .x-ie9 .x-tab button {
+  overflow-y: visible; }
+
+/* line 238, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-disabled .x-tab-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+
+/* In IE a disabled icon needs to be hidden or the opacity effect covers some of the text */
+/* line 243, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-noicon .x-tab-icon {
+  display: none; }
+
+/* line 269, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-top-over {
+  background-image: none;
+  background-color: #e8f2ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff));
+  background-image: -webkit-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -moz-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -o-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -ms-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%); }
+
+/* line 272, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-bottom-over {
+  background-image: none;
+  background-color: #e8f2ff;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff));
+  background-image: -webkit-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -moz-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -o-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -ms-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%); }
+
+/* line 277, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-active {
+  z-index: 3; }
+  /* line 283, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-active button {
+    color: #15498b; }
+
+/* line 299, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-top-active {
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -ms-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%); }
+
+/* line 302, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-bottom-active {
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -ms-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%); }
+
+/* line 307, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-disabled {
+  border-color: #bbd2ef; }
+  /* line 312, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-disabled button {
+    color: #c3b3b3; }
+
+/* line 328, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-top-disabled {
+  background-image: none;
+  background: transparent;
+  background-image: none;
+  background-color: #e1ecfa;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+  background-image: -webkit-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -moz-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -o-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -ms-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: linear-gradient(top, #e1ecfa, #ecf4fe); }
+
+/* line 333, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-bottom-disabled {
+  background-image: none;
+  background: transparent;
+  background-image: none;
+  background-color: #e1ecfa;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+  background-image: -webkit-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: -moz-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: -o-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: -ms-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: linear-gradient(bottom, #e1ecfa, #ecf4fe); }
+
+/* line 342, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-top {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-bg.gif'); }
+/* line 343, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-bottom {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif'); }
+/* line 347, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-top-over {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-over-bg.gif'); }
+/* line 348, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-bottom-over {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-over-bg.gif'); }
+/* line 352, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-top-active {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-active-bg.gif'); }
+/* line 353, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-bottom-active {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-active-bg.gif'); }
+/* line 357, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-top-disabled {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-disabled-bg.gif') !important; }
+/* line 358, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-bottom-disabled {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif') !important; }
+
+/* line 363, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-closable em {
+  padding-right: 14px; }
+
+/* line 367, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-close-btn {
+  position: absolute;
+  top: 2px;
+  right: 2px;
+  width: 11px;
+  height: 11px;
+  font-size: 0;
+  line-height: 0;
+  text-indent: -999px;
+  background: no-repeat;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-close.gif');
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+
+/* line 381, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-close-btn {
+  top: 0px;
+  right: 0px; }
+
+/* Include the element name otherwise Internet Explorer 7 & 8 take a performance hit */
+/* line 387, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+a.x-tab-close-btn:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1; }
+
+/* Include the element name to raise the specificity to equal the :hover */
+/* line 392, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-disabled a.x-tab-close-btn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 404, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-over .x-frame-tl,
+.x-nbr .x-tab-top-over .x-frame-bl,
+.x-nbr .x-tab-top-over .x-frame-tr,
+.x-nbr .x-tab-top-over .x-frame-br,
+.x-nbr .x-tab-top-over .x-frame-tc,
+.x-nbr .x-tab-top-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-over-corners.gif'); }
+/* line 408, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-over .x-frame-ml,
+.x-nbr .x-tab-top-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-over-sides.gif'); }
+/* line 412, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-over .x-frame-mc {
+  background-color: #e8f2ff;
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-over-bg.gif'); }
+/* line 426, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-over .x-frame-tl,
+.x-nbr .x-tab-bottom-over .x-frame-bl,
+.x-nbr .x-tab-bottom-over .x-frame-tr,
+.x-nbr .x-tab-bottom-over .x-frame-br,
+.x-nbr .x-tab-bottom-over .x-frame-tc,
+.x-nbr .x-tab-bottom-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-over-corners.gif'); }
+/* line 430, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-over .x-frame-ml,
+.x-nbr .x-tab-bottom-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-over-sides.gif'); }
+/* line 434, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-over .x-frame-mc {
+  background-color: #e8f2ff;
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-over-bg.gif'); }
+/* line 448, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-active .x-frame-tl,
+.x-nbr .x-tab-top-active .x-frame-bl,
+.x-nbr .x-tab-top-active .x-frame-tr,
+.x-nbr .x-tab-top-active .x-frame-br,
+.x-nbr .x-tab-top-active .x-frame-tc,
+.x-nbr .x-tab-top-active .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-active-corners.gif'); }
+/* line 452, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-active .x-frame-ml,
+.x-nbr .x-tab-top-active .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-active-sides.gif'); }
+/* line 456, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-active .x-frame-mc {
+  background-color: #deecfd;
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-active-bg.gif'); }
+/* line 470, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-active .x-frame-tl,
+.x-nbr .x-tab-bottom-active .x-frame-bl,
+.x-nbr .x-tab-bottom-active .x-frame-tr,
+.x-nbr .x-tab-bottom-active .x-frame-br,
+.x-nbr .x-tab-bottom-active .x-frame-tc,
+.x-nbr .x-tab-bottom-active .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-active-corners.gif'); }
+/* line 474, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-active .x-frame-ml,
+.x-nbr .x-tab-bottom-active .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-active-sides.gif'); }
+/* line 478, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-active .x-frame-mc {
+  background-color: #deecfd;
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-active-bg.gif'); }
+/* line 492, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-disabled .x-frame-tl,
+.x-nbr .x-tab-top-disabled .x-frame-bl,
+.x-nbr .x-tab-top-disabled .x-frame-tr,
+.x-nbr .x-tab-top-disabled .x-frame-br,
+.x-nbr .x-tab-top-disabled .x-frame-tc,
+.x-nbr .x-tab-top-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-disabled-corners.gif'); }
+/* line 496, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-disabled .x-frame-ml,
+.x-nbr .x-tab-top-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-disabled-sides.gif'); }
+/* line 500, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-disabled .x-frame-mc {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-disabled-bg.gif'); }
+/* line 513, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-disabled .x-frame-tl,
+.x-nbr .x-tab-bottom-disabled .x-frame-bl,
+.x-nbr .x-tab-bottom-disabled .x-frame-tr,
+.x-nbr .x-tab-bottom-disabled .x-frame-br,
+.x-nbr .x-tab-bottom-disabled .x-frame-tc,
+.x-nbr .x-tab-bottom-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-corners.gif'); }
+/* line 517, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-disabled .x-frame-ml,
+.x-nbr .x-tab-bottom-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-sides.gif'); }
+/* line 521, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-disabled .x-frame-mc {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif'); }
+
+/* line 9, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-autowidth-table table.x-grid-table {
+  table-layout: auto;
+  width: auto!important; }
+
+/* line 14, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-tree-elbow {
+  background-color: transparent; }
+
+/* line 18, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-tree-elbow-end {
+  background-color: transparent; }
+
+/* line 22, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-tree-elbow-line {
+  background-color: transparent; }
+
+/* line 27, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-plus {
+  background: transparent no-repeat 0 0; }
+
+/* line 31, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-end-plus {
+  background: transparent no-repeat 0 0; }
+
+/* line 35, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-end-minus {
+  background: transparent no-repeat -16px 0; }
+
+/* line 39, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-minus {
+  background: transparent no-repeat -16px 0; }
+
+/* line 43, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow {
+  background-color: transparent !important; }
+
+/* line 47, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-end {
+  background-color: transparent !important; }
+
+/* line 51, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-line {
+  background-color: transparent !important; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-expander-over .x-tree-elbow-plus,
+.x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-plus {
+  background-position: -32px 0; }
+
+/* line 62, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-expander-over .x-tree-elbow-minus,
+.x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-minus {
+  background-position: -48px 0; }
+
+/* line 67, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-plus,
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-position: -16px 0; }
+
+/* line 72, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-plus,
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-end-plus {
+  background-position: -48px 0; }
+
+/* line 79, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-elbow-plus,
+.x-tree-elbow-minus,
+.x-tree-elbow-end-plus,
+.x-tree-elbow-end-minus {
+  cursor: pointer; }
+
+/* line 85, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow {
+  background-image: url('../../resources/themes/images/default/tree/elbow.gif'); }
+/* line 89, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-end {
+  background-image: url('../../resources/themes/images/default/tree/elbow-end.gif'); }
+/* line 93, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-plus {
+  background-image: url('../../resources/themes/images/default/tree/elbow-plus.gif'); }
+/* line 97, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/default/tree/elbow-end-plus.gif'); }
+/* line 101, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus {
+  background-image: url('../../resources/themes/images/default/tree/elbow-minus.gif'); }
+/* line 105, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/default/tree/elbow-end-minus.gif'); }
+/* line 109, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-line {
+  background-image: url('../../resources/themes/images/default/tree/elbow-line.gif'); }
+
+/* line 116, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-tree-elbow-plus,
+.x-tree-no-lines .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/default/tree/elbow-plus-nl.gif'); }
+/* line 121, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-plus,
+.x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/default/tree/elbow-end-minus-nl.gif'); }
+
+/* line 130, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-plus,
+.x-tree-arrows .x-tree-elbow-minus,
+.x-tree-arrows .x-tree-elbow-end-plus,
+.x-tree-arrows .x-tree-elbow-end-minus {
+  background-image: url('../../resources/themes/images/default/tree/arrows.gif'); }
+
+/* line 135, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-icon {
+  margin: 2px 3px 0 0; }
+
+/* line 139, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-with-row-lines .x-tree-icon {
+  margin-top: 1px; }
+
+/* line 148, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-elbow,
+.x-tree-elbow-end,
+.x-tree-elbow-plus,
+.x-tree-elbow-end-plus,
+.x-tree-elbow-empty,
+.x-tree-elbow-line {
+  height: 20px;
+  width: 16px; }
+
+/* line 159, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-with-row-lines .x-tree-elbow,
+.x-grid-with-row-lines .x-tree-elbow-end,
+.x-grid-with-row-lines .x-tree-elbow-plus,
+.x-grid-with-row-lines .x-tree-elbow-end-plus,
+.x-grid-with-row-lines .x-tree-elbow-empty,
+.x-grid-with-row-lines .x-tree-elbow-line {
+  height: 19px;
+  background-position: 0 -1px; }
+
+/* line 165, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-icon-leaf {
+  width: 16px;
+  background-image: url('../../resources/themes/images/default/tree/leaf.gif'); }
+
+/* line 170, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-icon-parent {
+  width: 16px;
+  background-image: url('../../resources/themes/images/default/tree/folder.gif'); }
+
+/* line 175, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-tree-node-expanded .x-tree-icon-parent {
+  background-image: url('../../resources/themes/images/default/tree/folder-open.gif'); }
+
+/* line 179, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-rowbody {
+  padding: 0; }
+
+/* line 183, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-cell-treecolumn .x-grid-cell-inner {
+  padding: 0;
+  line-height: 19px; }
+
+/* line 188, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-with-row-lines .x-grid-cell-treecolumn .x-grid-cell-inner {
+  line-height: 17px; }
+
+/* line 192, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-panel .x-grid-cell-inner {
+  cursor: pointer; }
+  /* line 194, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-tree-panel .x-grid-cell-inner img {
+    display: inline-block;
+    vertical-align: top; }
+
+/* line 207, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-ie .x-tree-panel .x-tree-elbow,
+.x-ie .x-tree-panel .x-tree-elbow-end,
+.x-ie .x-tree-panel .x-tree-elbow-plus,
+.x-ie .x-tree-panel .x-tree-elbow-end-plus,
+.x-ie .x-tree-panel .x-tree-elbow-empty,
+.x-ie .x-tree-panel .x-tree-elbow-line {
+  vertical-align: -6px; }
+
+/* line 215, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-editor-on-text-node .x-form-text {
+  padding-left: 1px;
+  padding-right: 1px; }
+
+/* line 222, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-ie .x-grid-editor-on-text-node .x-form-text {
+  padding-left: 2px;
+  padding-right: 2px; }
+
+/* line 228, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-opera .x-grid-editor-on-text-node .x-form-text {
+  padding-left: 2px;
+  padding-right: 2px; }
+
+/* line 234, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-checkbox {
+  margin: 4px 3px 0 0;
+  display: inline-block;
+  vertical-align: top;
+  width: 13px;
+  height: 13px;
+  background: no-repeat;
+  background-image: url('../../resources/themes/images/default/form/checkbox.gif');
+  overflow: hidden;
+  padding: 0;
+  border: 0; }
+  /* line 247, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-tree-checkbox::-moz-focus-inner {
+    padding: 0;
+    border: 0; }
+
+/* line 253, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-with-row-lines .x-tree-checkbox {
+  margin-top: 3px; }
+
+/* line 257, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-checkbox-checked {
+  background-position: 0 -13px; }
+
+/* line 261, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-drop-ok-append .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/tree/drop-append.gif'); }
+
+/* line 265, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-drop-ok-above .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/tree/drop-above.gif'); }
+
+/* line 269, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-drop-ok-below .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/tree/drop-below.gif'); }
+
+/* line 273, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-drop-ok-between .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/tree/drop-between.gif'); }
+
+/* line 277, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-tree-loading .x-tree-icon {
+  background-image: url('../../resources/themes/images/default/tree/loading.gif'); }
+
+/* line 281, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-ddindicator {
+  height: 1px;
+  border-width: 1px 0px 0px;
+  border-style: dotted;
+  border-color: green; }
+
+/* line 288, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-tree-loading span {
+  font-style: italic;
+  color: #444444; }
+
+/* line 293, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-animator-wrap {
+  overflow: hidden; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-surface {
+  display: -moz-inline-box;
+  -moz-box-orient: vertical;
+  display: inline-block;
+  vertical-align: middle;
+  *vertical-align: auto;
+  overflow: hidden; }
+  /* line 7, ../../../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.11.7/frameworks/compass/stylesheets/compass/css3/_inline-block.scss */
+  .x-surface {
+    *display: inline; }
+
+/* line 11, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.rvml {
+  behavior: url(#default#VML); }
+
+/* line 15, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-surface tspan {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-sprite {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px; }
+
+/* line 27, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-group {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1000px;
+  height: 1000px; }
+
+/* line 35, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-measure-span {
+  position: absolute;
+  left: -9999em;
+  top: -9999em;
+  padding: 0;
+  margin: 0;
+  display: inline; }
+
+/* line 44, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block; }
+
+/* line 52, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block; }
+
+/* line 60, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+svg, vml {
+  overflow: hidden; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_viewport.scss */
+.x-viewport, .x-viewport body {
+  margin: 0;
+  padding: 0;
+  border: 0 none;
+  overflow: hidden;
+  height: 100%;
+  position: static; }
+
+/* line 3, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drag-proxy {
+  z-index: 1000000!important; }
+
+/* line 8, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drag-repair .x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+/* line 12, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drag-repair .x-dd-drop-icon {
+  display: none; }
+
+/* line 17, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
+  opacity: 0.85;
+  padding: 5px;
+  padding-left: 20px;
+  white-space: nowrap;
+  color: #000;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  border: 1px solid;
+  border-color: #ddd #bbb #bbb #ddd;
+  background-color: #fff; }
+
+/* line 34, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drop-icon {
+  position: absolute;
+  top: 3px;
+  left: 3px;
+  display: block;
+  width: 16px;
+  height: 16px;
+  background-color: transparent;
+  background-position: center;
+  background-repeat: no-repeat;
+  z-index: 1; }
+
+/* line 51, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-view-selector {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 0;
+  background-color: #c3daf9;
+  border: 1px dotted #3399bb;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  zoom: 1; }
+
+/* line 66, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drop-nodrop .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/dd/drop-no.gif'); }
+
+/* line 70, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drop-ok .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/dd/drop-yes.gif'); }
+
+/* line 74, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drop-ok-add .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/dd/drop-add.gif'); }
+
+/* line 2, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle {
+  position: absolute;
+  z-index: 100;
+  font-size: 1px;
+  line-height: 6px;
+  overflow: hidden;
+  zoom: 1;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  background-color: #fff; }
+
+/* line 14, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-collapsed .x-resizable-handle {
+  display: none; }
+
+/* line 18, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-east {
+  width: 6px;
+  height: 100%;
+  right: 0;
+  top: 0; }
+
+/* line 27, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-east {
+  cursor: e-resize; }
+
+/* line 32, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-south {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  bottom: 0; }
+
+/* line 41, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-south {
+  cursor: s-resize; }
+
+/* line 46, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-west {
+  width: 6px;
+  height: 100%;
+  left: 0;
+  top: 0; }
+
+/* line 55, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-west {
+  cursor: w-resize; }
+
+/* line 60, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-north {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  top: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-north {
+  cursor: n-resize; }
+
+/* line 74, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-southeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  bottom: 0;
+  z-index: 101; }
+
+/* line 85, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southeast {
+  cursor: se-resize; }
+
+/* line 90, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-northwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  top: 0;
+  z-index: 101; }
+
+/* line 101, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northwest {
+  cursor: nw-resize; }
+
+/* line 106, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-northeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  top: 0;
+  z-index: 101; }
+
+/* line 117, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northeast {
+  cursor: ne-resize; }
+
+/* line 122, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-southwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+  z-index: 101; }
+
+/* line 133, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southwest {
+  cursor: sw-resize; }
+
+/*IE rounding error*/
+/* line 140, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-ie .x-resizable-handle-east {
+  margin-right: -1px;
+  /*IE rounding error*/ }
+/* line 144, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-ie .x-resizable-handle-south {
+  margin-bottom: -1px; }
+
+/* line 149, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle, .x-resizable-pinned .x-resizable-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1; }
+
+/* line 153, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-window .x-window-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 157, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-window-collapsed .x-window-handle {
+  display: none; }
+
+/* line 161, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-proxy {
+  border: 1px dashed #3b5a82;
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  z-index: 50000; }
+
+/* line 170, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-overlay {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  display: none;
+  z-index: 200000;
+  background-color: #fff;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 190, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-west {
+  background-position: left;
+  background-image: url('../../resources/themes/images/default/sizer/e-handle.gif'); }
+/* line 196, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-north {
+  background-position: top;
+  background-image: url('../../resources/themes/images/default/sizer/s-handle.gif'); }
+/* line 201, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+  background-position: top left;
+  background-image: url('../../resources/themes/images/default/sizer/se-handle.gif'); }
+/* line 206, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+  background-position: bottom right;
+  background-image: url('../../resources/themes/images/default/sizer/nw-handle.gif'); }
+/* line 211, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+  background-position: bottom left;
+  background-image: url('../../resources/themes/images/default/sizer/ne-handle.gif'); }
+/* line 216, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+  background-position: top right;
+  background-image: url('../../resources/themes/images/default/sizer/sw-handle.gif'); }
+
+/* line 3, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter .x-collapse-el {
+  position: absolute;
+  cursor: pointer;
+  background-color: transparent;
+  background-repeat: no-repeat !important; }
+
+/* line 14, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-left,
+.x-layout-split-right {
+  top: 50%;
+  margin-top: -17px;
+  width: 5px;
+  height: 35px; }
+
+/* line 24, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-top,
+.x-layout-split-bottom {
+  left: 50%;
+  width: 35px;
+  height: 5px;
+  margin-left: -17px; }
+
+/* line 33, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-left {
+  background: no-repeat top right;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-left.gif'); }
+
+/* line 38, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-right {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-right.gif'); }
+
+/* line 43, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-top {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-top.gif'); }
+
+/* line 48, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-bottom {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-bottom.gif'); }
+
+/* line 54, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-left {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-right.gif'); }
+/* line 59, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-right {
+  background: no-repeat top right;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-left.gif'); }
+/* line 64, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-top {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-bottom.gif'); }
+/* line 69, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-bottom {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-top.gif'); }
+
+/* line 75, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-horizontal {
+  cursor: e-resize;
+  cursor: row-resize;
+  font-size: 1px; }
+
+/* line 81, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-vertical {
+  cursor: e-resize;
+  cursor: col-resize;
+  font-size: 1px; }
+
+/* line 86, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed, .x-splitter-horizontal-noresize, .x-splitter-vertical-noresize {
+  cursor: default; }
+
+/* line 90, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-active {
+  z-index: 4;
+  font-size: 1px;
+  background-color: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8; }
+
+/* line 97, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-active .x-collapse-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 102, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-proxy-el {
+  position: absolute;
+  background: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8; }
+
+/*
+ * Dock Layouts
+ * @todo move this somewhere else?
+ */
+/* line 6, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked {
+  position: absolute !important;
+  z-index: 1; }
+
+/* line 11, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-top {
+  border-bottom-width: 0 !important; }
+
+/* line 15, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-bottom {
+  border-top-width: 0 !important; }
+
+/* line 19, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-left {
+  border-right-width: 0 !important; }
+
+/* line 23, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-right {
+  border-left-width: 0 !important; }
+
+/* line 27, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-noborder-top {
+  border-top-width: 0 !important; }
+
+/* line 31, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-noborder-right {
+  border-right-width: 0 !important; }
+
+/* line 35, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-noborder-bottom {
+  border-bottom-width: 0 !important; }
+
+/* line 39, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-noborder-left {
+  border-left-width: 0 !important; }
+
+/* line 43, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-inner {
+  overflow: hidden;
+  zoom: 1;
+  position: relative;
+  left: 0;
+  top: 0; }
+
+/* line 53, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-item {
+  position: absolute !important;
+  left: 0;
+  top: 0; }
+
+/* line 59, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-rtl .x-box-item {
+  right: 0;
+  left: auto; }
+
+/* line 65, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-layout-ct,
+.x-border-layout-ct {
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 70, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-border-layout-ct {
+  background-color: #dfe8f6;
+  position: relative; }
+
+/* line 75, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-overflow-hidden {
+  overflow: hidden !important; }
+
+/* line 79, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-inline-children > * {
+  display: inline-block !important; }
+
+/* line 83, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-abs-layout-ct {
+  position: relative; }
+
+/* line 87, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-abs-layout-item {
+  position: absolute !important; }
+
+/* line 91, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-fit-item {
+  position: relative; }
+
+/* line 95, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-border-region-slide-in {
+  z-index: 5; }
+
+/* line 99, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-region-collapsed-placeholder {
+  z-index: 4; }
+
+/* line 103, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd .x-panel-header-text {
+  color: black;
+  font-weight: normal; }
+
+/* line 108, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd {
+  background: #d9e7f8 !important;
+  -moz-box-shadow: inset 0 0 0 0 #d9e7f8;
+  -webkit-box-shadow: inset 0 0 0 0 #d9e7f8;
+  -o-box-shadow: inset 0 0 0 0 #d9e7f8;
+  box-shadow: inset 0 0 0 0 #d9e7f8; }
+  /* line 112, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-accordion-hd .x-tool-collapse-top,
+  .x-accordion-hd .x-tool-collapse-right,
+  .x-accordion-hd .x-tool-collapse-bottom,
+  .x-accordion-hd .x-tool-collapse-left {
+    background-position: 0 -255px; }
+  /* line 119, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-accordion-hd .x-tool-expand-top,
+  .x-accordion-hd .x-tool-expand-right,
+  .x-accordion-hd .x-tool-expand-bottom,
+  .x-accordion-hd .x-tool-expand-left {
+    background-position: 0 -240px; }
+  /* line 127, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-accordion-hd .x-tool-over .x-tool-collapse-top,
+  .x-accordion-hd .x-tool-over .x-tool-collapse-right,
+  .x-accordion-hd .x-tool-over .x-tool-collapse-bottom,
+  .x-accordion-hd .x-tool-over .x-tool-collapse-left {
+    background-position: -15px -255px; }
+  /* line 136, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-accordion-hd .x-tool-over .x-tool-expand-top,
+  .x-accordion-hd .x-tool-over .x-tool-expand-right,
+  .x-accordion-hd .x-tool-over .x-tool-expand-bottom,
+  .x-accordion-hd .x-tool-over .x-tool-expand-left {
+    background-position: -15px -240px; }
+
+/* line 145, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd {
+  border-width: 1px 0 1px 0 !important;
+  padding: 4px 5px 5px 5px;
+  border-top-color: #f3f7fb !important; }
+
+/* line 151, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-body {
+  border-width: 0 !important; }
+
+/* line 155, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd-sibling-expanded {
+  border-top-color: #99bce8 !important;
+  -moz-box-shadow: inset 0 1px 0 0 #f3f7fb;
+  -webkit-box-shadow: inset 0 1px 0 0 #f3f7fb;
+  -o-box-shadow: inset 0 1px 0 0 #f3f7fb;
+  box-shadow: inset 0 1px 0 0 #f3f7fb; }
+
+/* line 160, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd-last-collapsed {
+  border-bottom-color: #d9e7f8 !important; }
+
+/* line 169, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-frame-tl,
+.x-frame-tr,
+.x-frame-tc,
+.x-frame-bl,
+.x-frame-br,
+.x-frame-bc {
+  overflow: hidden;
+  background-repeat: no-repeat; }
+
+/* line 175, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-frame-tc,
+.x-frame-bc {
+  background-repeat: repeat-x; }
+
+/* line 179, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-frame-mc {
+  position: relative;
+  background-repeat: repeat-x;
+  overflow: hidden; }
+
+/* line 188, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-left {
+  float: left;
+  height: 100%;
+  z-index: 5; }
+  /* line 195, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left,
+  .x-box-scroller-left .x-tabbar-scroll-left {
+    width: 18px;
+    position: relative;
+    cursor: pointer;
+    height: 20px;
+    background: transparent no-repeat -18px 0;
+    background-image: url('../../resources/themes/images/default/tab-bar/scroll-left.gif'); }
+  /* line 203, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left-hover {
+    background-position: 0 0; }
+  /* line 207, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left-disabled,
+  .x-box-scroller-left .x-tabbar-scroll-left-disabled {
+    background-position: -18px 0;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5;
+    cursor: default; }
+  /* line 214, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left {
+    background-image: url('../../resources/themes/images/default/toolbar/scroll-left.gif');
+    background-position: -14px 0; }
+  /* line 218, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left-hover {
+    background-position: 0 0; }
+  /* line 221, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left-disabled {
+    background-position: -14px 0; }
+  /* line 225, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left {
+    width: 14px;
+    height: 22px;
+    border-bottom: 1px solid #8db2e3; }
+
+/* line 233, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-horizontal-box-overflow-body {
+  float: left; }
+
+/* line 236, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-right {
+  float: right;
+  height: 100%;
+  z-index: 5; }
+  /* line 243, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right,
+  .x-box-scroller-right .x-tabbar-scroll-right {
+    width: 18px;
+    position: relative;
+    cursor: pointer;
+    height: 20px;
+    background: transparent no-repeat 0 0;
+    background-image: url('../../resources/themes/images/default/tab-bar/scroll-right.gif'); }
+  /* line 251, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-hover {
+    background-position: -18px 0; }
+  /* line 255, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-disabled,
+  .x-box-scroller-right .x-tabbar-scroll-right-disabled {
+    background-position: 0 0;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5;
+    cursor: default; }
+  /* line 262, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right {
+    background-image: url('../../resources/themes/images/default/toolbar/scroll-right.gif'); }
+  /* line 265, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-hover {
+    background-position: -14px 0; }
+  /* line 268, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-disabled {
+    background-position: 0 0; }
+  /* line 272, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right {
+    width: 14px;
+    height: 22px;
+    border-bottom: 1px solid #8db2e3; }
+
+/* line 282, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-top .x-box-scroller {
+  line-height: 0;
+  font-size: 0; }
+/* line 286, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-top .x-menu-scroll-top {
+  background: transparent no-repeat center center;
+  background-image: url('../../resources/themes/images/default/layout/mini-top.gif');
+  height: 8px;
+  cursor: pointer; }
+
+/* line 294, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-bottom .x-box-scroller {
+  line-height: 0;
+  font-size: 0; }
+/* line 298, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-bottom .x-menu-scroll-bottom {
+  background: transparent no-repeat center center;
+  background-image: url('../../resources/themes/images/default/layout/mini-bottom.gif');
+  height: 8px;
+  cursor: pointer; }
+
+/* line 306, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-menu-right {
+  float: right;
+  padding-right: 2px; }
+
+/* line 311, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-column {
+  float: left; }
+
+/* line 315, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-ie6 .x-column {
+  display: inline;
+  /*prevent IE6 double-margin bug*/ }
+
+/* line 319, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-quirks .x-ie .x-form-layout-table, .x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item {
+  position: relative; }
+
+/* line 2, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool {
+  height: 15px; }
+  /* line 5, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-tool img {
+    overflow: hidden;
+    width: 15px;
+    height: 15px;
+    cursor: pointer;
+    background-color: transparent;
+    background-repeat: no-repeat;
+    background-image: url('../../resources/themes/images/default/tools/tool-sprites.gif');
+    margin: 0; }
+
+/* line 23, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-header-horizontal .x-tool,
+.x-window-header-horizontal .x-tool {
+  margin-left: 2px; }
+
+/* line 30, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-header-vertical .x-tool,
+.x-window-header-vertical .x-tool {
+  margin-top: 2px; }
+
+/* line 39, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-header-vertical .x-tool-top,
+.x-window-header-vertical .x-tool-top {
+  margin: 0 0 4px; }
+
+/* line 45, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-placeholder {
+  visibility: hidden; }
+
+/* line 49, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-toggle {
+  background-position: 0 -60px; }
+
+/* line 54, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-toggle {
+  background-position: -15px -60px; }
+
+/* line 61, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-collapsed .x-tool-toggle,
+.x-fieldset-collapsed .x-tool-toggle {
+  background-position: 0 -75px; }
+/* line 66, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-collapsed .x-tool-over .x-tool-toggle,
+.x-fieldset-collapsed .x-tool-over .x-tool-toggle {
+  background-position: -15px -75px; }
+
+/* line 72, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-close {
+  background-position: 0 0; }
+
+/* line 76, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-minimize {
+  background-position: 0 -15px; }
+
+/* line 80, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-maximize {
+  background-position: 0 -30px; }
+
+/* line 84, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-restore {
+  background-position: 0 -45px; }
+
+/* line 88, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-gear {
+  background-position: 0 -90px; }
+
+/* line 92, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-prev {
+  background-position: 0 -105px; }
+
+/* line 96, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-next {
+  background-position: 0 -120px; }
+
+/* line 100, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-pin {
+  background-position: 0 -135px; }
+
+/* line 104, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-unpin {
+  background-position: 0 -150px; }
+
+/* line 108, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-right {
+  background-position: 0 -165px; }
+
+/* line 112, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-left {
+  background-position: 0 -180px; }
+
+/* line 116, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-help {
+  background-position: 0 -300px; }
+
+/* line 120, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-save {
+  background-position: 0 -285px; }
+
+/* line 124, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-search {
+  background-position: 0 -270px; }
+
+/* line 128, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-minus {
+  background-position: 0 -255px; }
+
+/* line 132, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-plus {
+  background-position: 0 -240px; }
+
+/* line 136, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-refresh {
+  background-position: 0 -225px; }
+
+/* line 140, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-up {
+  background-position: 0 -210px; }
+
+/* line 144, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-down {
+  background-position: 0 -195px; }
+
+/* line 148, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-collapse {
+  background-position: 0 -345px; }
+
+/* line 152, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand {
+  background-position: 0 -330px; }
+
+/* line 156, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-print {
+  background-position: 0 -315px; }
+
+/* line 161, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand-bottom,
+.x-tool-collapse-bottom {
+  background-position: 0 -195px; }
+
+/* line 166, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand-top,
+.x-tool-collapse-top {
+  background-position: 0 -210px; }
+
+/* line 171, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand-left,
+.x-tool-collapse-left {
+  background-position: 0 -180px; }
+
+/* line 176, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand-right,
+.x-tool-collapse-right {
+  background-position: 0 -165px; }
+
+/* line 181, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-close {
+  background-position: -15px 0; }
+/* line 185, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-minimize {
+  background-position: -15px -15px; }
+/* line 189, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-maximize {
+  background-position: -15px -30px; }
+/* line 193, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-restore {
+  background-position: -15px -45px; }
+/* line 197, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-gear {
+  background-position: -15px -90px; }
+/* line 201, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-prev {
+  background-position: -15px -105px; }
+/* line 205, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-next {
+  background-position: -15px -120px; }
+/* line 209, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-pin {
+  background-position: -15px -135px; }
+/* line 213, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-unpin {
+  background-position: -15px -150px; }
+/* line 217, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-right {
+  background-position: -15px -165px; }
+/* line 221, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-left {
+  background-position: -15px -180px; }
+/* line 225, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-down {
+  background-position: -15px -195px; }
+/* line 229, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-up {
+  background-position: -15px -210px; }
+/* line 233, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-refresh {
+  background-position: -15px -225px; }
+/* line 237, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-plus {
+  background-position: -15px -240px; }
+/* line 241, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-minus {
+  background-position: -15px -255px; }
+/* line 245, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-search {
+  background-position: -15px -270px; }
+/* line 249, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-save {
+  background-position: -15px -285px; }
+/* line 253, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-help {
+  background-position: -15px -300px; }
+/* line 257, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-print {
+  background-position: -15px -315px; }
+/* line 261, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand {
+  background-position: -15px -330px; }
+/* line 265, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-collapse {
+  background-position: -15px -345px; }
+/* line 270, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand-bottom,
+.x-tool-over .x-tool-collapse-bottom {
+  background-position: -15px -195px; }
+/* line 275, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand-top,
+.x-tool-over .x-tool-collapse-top {
+  background-position: -15px -210px; }
+/* line 280, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand-left,
+.x-tool-over .x-tool-collapse-left {
+  background-position: -15px -180px; }
+/* line 285, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand-right,
+.x-tool-over .x-tool-collapse-right {
+  background-position: -15px -165px; }
+
+/* line 2, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-horizontal-scroller-present .x-grid-body {
+  border-bottom-width: 0px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-vertical-scroller-present .x-grid-body {
+  border-right-width: 0px; }
+
+/* line 10, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller {
+  overflow: hidden; }
+
+/* line 14, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-vertical {
+  border: 1px solid #99bce8;
+  border-top-color: #c5c5c5; }
+
+/* line 19, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-horizontal {
+  border: 1px solid #99bce8; }
+
+/* line 23, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-vertical-scroller-present .x-scroller-horizontal {
+  border-right-width: 0px; }
+
+/* line 27, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-ct {
+  overflow: hidden;
+  position: absolute;
+  margin: 0;
+  padding: 0;
+  border: none;
+  left: 0px;
+  top: 0px;
+  /*
+  In IE9 (only), the border-box style causes the scroller-ct to be 0px in the
+  perpendicular dimension and breaks the scroll as well as offsets it by the left
+  offset that we use to try and keep some size on this element. This works on all
+  browsers (including IE9).
+  */
+  box-sizing: content-box !important;
+  -ms-box-sizing: content-box !important;
+  -moz-box-sizing: content-box !important;
+  -webkit-box-sizing: content-box !important; }
+
+/* line 48, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-vertical .x-scroller-ct {
+  overflow-y: scroll; }
+
+/* line 52, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-horizontal .x-scroller-ct {
+  overflow-x: scroll; }
+
+/* line 8, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+.x-html {
+  /* Begin bidirectionality settings (do not change) */ }
+  /* line 34, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html html, .x-html address, .x-html blockquote, .x-html body, .x-html dd, .x-html div, .x-html dl, .x-html dt, .x-html fieldset, .x-html form, .x-html frame, .x-html frameset, .x-html h1, .x-html h2, .x-html h3, .x-html h4, .x-html h5, .x-html h6, .x-html noframes, .x-html ol, .x-html p, .x-html ul, .x-html center, .x-html dir, .x-html hr, .x-html menu, .x-html pre {
+    display: block; }
+  /* line 35, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html li {
+    display: list-item;
+    list-style: disc; }
+  /* line 36, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html head {
+    display: none; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html table {
+    display: table; }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html tr {
+    display: table-row; }
+  /* line 39, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html thead {
+    display: table-header-group; }
+  /* line 40, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html tbody {
+    display: table-row-group; }
+  /* line 41, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html tfoot {
+    display: table-footer-group; }
+  /* line 42, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html col {
+    display: table-column; }
+  /* line 43, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html colgroup {
+    display: table-column-group; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html td, .x-html th {
+    display: table-cell; }
+  /* line 46, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html caption {
+    display: table-caption; }
+  /* line 47, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html th {
+    font-weight: bolder;
+    text-align: center; }
+  /* line 48, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html caption {
+    text-align: center; }
+  /* line 49, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html body {
+    margin: 8px; }
+  /* line 50, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h1 {
+    font-size: 2em;
+    margin: .67em 0; }
+  /* line 51, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h2 {
+    font-size: 1.5em;
+    margin: .75em 0; }
+  /* line 52, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h3 {
+    font-size: 1.17em;
+    margin: .83em 0; }
+  /* line 62, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h4, .x-html p, .x-html blockquote, .x-html ul, .x-html fieldset, .x-html form, .x-html ol, .x-html dl, .x-html dir, .x-html menu {
+    margin: 1.12em 0; }
+  /* line 63, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h5 {
+    font-size: .83em;
+    margin: 1.5em 0; }
+  /* line 64, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h6 {
+    font-size: .75em;
+    margin: 1.67em 0; }
+  /* line 72, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h1, .x-html h2, .x-html h3, .x-html h4, .x-html h5, .x-html h6, .x-html b, .x-html strong {
+    font-weight: bolder; }
+  /* line 73, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html blockquote {
+    margin-left: 40px;
+    margin-right: 40px; }
+  /* line 78, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html i, .x-html cite, .x-html em, .x-html var, .x-html address {
+    font-style: italic; }
+  /* line 83, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html pre, .x-html tt, .x-html code, .x-html kbd, .x-html samp {
+    font-family: monospace; }
+  /* line 84, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html pre {
+    white-space: pre; }
+  /* line 88, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html button, .x-html textarea, .x-html input, .x-html select {
+    display: inline-block; }
+  /* line 89, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html big {
+    font-size: 1.17em; }
+  /* line 92, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html small, .x-html sub, .x-html sup {
+    font-size: .83em; }
+  /* line 93, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html sub {
+    vertical-align: sub; }
+  /* line 94, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html sup {
+    vertical-align: super; }
+  /* line 95, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html table {
+    border-spacing: 2px; }
+  /* line 98, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html thead, .x-html tbody, .x-html tfoot {
+    vertical-align: middle; }
+  /* line 100, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html td, .x-html th {
+    vertical-align: inherit; }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html s, .x-html strike, .x-html del {
+    text-decoration: line-through; }
+  /* line 104, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html hr {
+    border: 1px inset; }
+  /* line 109, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html ol, .x-html ul, .x-html dir, .x-html menu, .x-html dd {
+    margin-left: 40px; }
+  /* line 110, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html ul, .x-html menu, .x-html dir {
+    list-style-type: disc; }
+  /* line 111, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html ol {
+    list-style-type: decimal; }
+  /* line 115, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html ol ul, .x-html ul ol, .x-html ul ul, .x-html ol ol {
+    margin-top: 0;
+    margin-bottom: 0; }
+  /* line 117, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html u, .x-html ins {
+    text-decoration: underline; }
+  /* line 118, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html br:before {
+    content: "\A"; }
+  /* line 119, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html :before, .x-html :after {
+    white-space: pre-line; }
+  /* line 120, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html center {
+    text-align: center; }
+  /* line 121, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html :link, .x-html :visited {
+    text-decoration: underline; }
+  /* line 122, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html :focus {
+    outline: invert dotted thin; }
+  /* line 125, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html BDO[DIR="ltr"] {
+    direction: ltr;
+    unicode-bidi: bidi-override; }
+  /* line 126, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html BDO[DIR="rtl"] {
+    direction: rtl;
+    unicode-bidi: bidi-override; }
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-all-gray-debug.css
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-all-gray-debug.css	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-all-gray-debug.css	(revision 18277)
@@ -0,0 +1,9958 @@
+/*
+This file is part of Ext JS 4.1
+
+Copyright (c) 2011-2012 Sencha Inc
+
+Contact:  http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2012-07-04 21:11:01 (65ff594cd80b9bad45df640c22cc0adb52c95a7b)
+*/
+/**
+ * @class Global_CSS
+ *
+ * Global CSS variables and mixins of Sencha Touch.
+ */
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+/**
+ * @var {string} $theme-name
+ * The name of the theme. This must match the the output directory of the images.
+ * (defaults to 'default')
+ */
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+/**
+ * @var {string} $font-family
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $base-gradient
+ * The base gradient to be used throughout the theme.
+ */
+/**
+ * @var {color} $base-color
+ * The base color to be used throughout the theme.
+ */
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules
+ */
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+/**
+ * @var {boolean} $compile-all
+ * True to copile all CSS, even if above include rules are false
+ */
+/**
+ * @var {boolean} $scope-reset-css
+ * True to scope the reset CSS within the $prefix variable.
+ */
+/**
+ * @var {color} $css-shadow-background-color
+ * The base color for CSS shadows
+ */
+/**
+ * @var {color} $include-shadow-images
+ * True to include all shadow images.
+ */
+/**
+ * @class Ext.form.field.Base
+ */
+/**
+ * @var {measurement} $form-field-height
+ * Height for form fields.
+ */
+/**
+ * @var {measurement} $form-toolbar-field-height
+ * Height for form fields in toolbar.
+ */
+/**
+ * @var {measurement} $form-error-icon-width
+ * Width for form error icons.
+ */
+/**
+ * @var {measurement} $form-field-padding
+ * Padding around form fields.
+ */
+/**
+ * @var {measurement} $form-field-font-size
+ * Font size for form fields.
+ */
+/**
+ * @var {font-family} $form-field-font-family
+ * Font family for form fields.
+ */
+/**
+ * @var {font-weight} $form-field-font-weight
+ * Font weight for form fields.
+ */
+/**
+ * @var {font} $form-field-font
+ * Font for form fields.
+ */
+/**
+ * @var {color} $form-field-color
+ * Text color for form fields.
+ */
+/**
+ * @var {color} $form-field-empty-color
+ * Text color for empty form fields.
+ */
+/**
+ * @var {color} $form-field-border-color
+ * Border color for form fields.
+ */
+/**
+ * @var {measurement} $form-field-border-width
+ * Border width for form fields.
+ */
+/**
+ * @var {color} $form-field-focus-border-color
+ * Border color for focused form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-border-color
+ * Border color for invalid form fields.
+ */
+/**
+ * @var {color} $form-field-background-color
+ * Background color for form fields.
+ */
+/**
+ * @var {string} $form-field-background-image
+ * Background image for form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-background-color
+ * Background color for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-image
+ * Background image for invalid form fields.
+ */
+/**
+ * @var {background-repeat} $form-field-invalid-background-repeat
+ * Background repeat for invalid form fields.
+ */
+/**
+ * @var {background-position} $form-field-invalid-background-position
+ * Background position for invalid form fields.
+ */
+/**
+ * @class Ext.form.field.TextArea
+ */
+/**
+ * @class Ext.form.Label
+ */
+/**
+ * @class Ext.form.field.Checkbox
+ */
+/**
+ * @class Ext.form.field.Radio
+ */
+/* Error messages */
+/**
+ * @class Ext.form.field.Trigger
+ */
+/**
+ * @class Ext.form.FieldSet
+ */
+/**
+ * @class Ext.slider.Multi
+ */
+/**
+ * Creates a background gradient.
+ *
+ * @param {Color} $bg-color The background color of the gradient
+ * @param {String/List} [$type] The type of gradient to be used. Can either
+ * be a String which is a predefined gradient, or it can can be a list of
+ * color_stops. If none is set, it will still set the `background-color`
+ * to the $background-color.
+ * @param {String} [$direction=top] The direction of the gradient. Can either be
+ * `top` or `left`.
+ * @member Global_CSS
+ */
+/*
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error.
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to
+ * be true.
+ */
+/* line 77, ../themes/stylesheets/ext4/default/core/_reset.scss */
+html, body, div, dl, dt, dd, ul, ol, li, h1, h2, h3,
+h4, h5, h6, pre, code, form, fieldset, legend,
+input, textarea, p, blockquote, th, td {
+  margin: 0;
+  padding: 0; }
+
+/* line 82, ../themes/stylesheets/ext4/default/core/_reset.scss */
+table {
+  border-collapse: collapse;
+  border-spacing: 0; }
+
+/* line 87, ../themes/stylesheets/ext4/default/core/_reset.scss */
+fieldset, img {
+  border: 0; }
+
+/* line 92, ../themes/stylesheets/ext4/default/core/_reset.scss */
+address, caption, cite, code,
+dfn, em, strong, th, var {
+  font-style: normal;
+  font-weight: normal; }
+
+/* line 97, ../themes/stylesheets/ext4/default/core/_reset.scss */
+li {
+  list-style: none; }
+
+/* line 101, ../themes/stylesheets/ext4/default/core/_reset.scss */
+caption, th {
+  text-align: left; }
+
+/* line 105, ../themes/stylesheets/ext4/default/core/_reset.scss */
+h1, h2, h3, h4, h5, h6 {
+  font-size: 100%; }
+
+/* line 110, ../themes/stylesheets/ext4/default/core/_reset.scss */
+q:before,
+q:after {
+  content: ""; }
+
+/* line 114, ../themes/stylesheets/ext4/default/core/_reset.scss */
+abbr, acronym {
+  border: 0;
+  font-variant: normal; }
+
+/* line 119, ../themes/stylesheets/ext4/default/core/_reset.scss */
+sup {
+  vertical-align: text-top; }
+
+/* line 123, ../themes/stylesheets/ext4/default/core/_reset.scss */
+sub {
+  vertical-align: text-bottom; }
+
+/* line 127, ../themes/stylesheets/ext4/default/core/_reset.scss */
+input, textarea, select {
+  font-family: inherit;
+  font-size: inherit;
+  font-weight: inherit; }
+
+/* line 133, ../themes/stylesheets/ext4/default/core/_reset.scss */
+*:focus {
+  outline: none; }
+
+/* line 138, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-border-box,
+.x-border-box * {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  -webkit-box-sizing: border-box; }
+
+/* line 1, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-body {
+  color: black;
+  font-size: 12px;
+  font-family: tahoma, arial, verdana, sans-serif; }
+
+/* line 7, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-rtl {
+  direction: rtl; }
+
+/* line 11, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ltr {
+  direction: ltr; }
+
+/* line 15, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-clear {
+  overflow: hidden;
+  clear: both;
+  font-size: 0;
+  line-height: 0;
+  display: table; }
+
+/* line 23, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-strict .x-ie7 .x-clear {
+  height: 0;
+  width: 0; }
+
+/* line 31, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-layer {
+  position: absolute !important;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 37, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-shim {
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 45, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hide-display {
+  display: none !important; }
+
+/* line 49, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hide-visibility {
+  visibility: hidden !important; }
+
+/* line 56, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-item-disabled .x-form-item-label,
+.x-item-disabled .x-form-field,
+.x-item-disabled .x-form-cb-label,
+.x-item-disabled .x-form-trigger {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 60, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ie6 .x-item-disabled {
+  filter: none; }
+
+/* line 65, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hidden,
+.x-hide-offsets {
+  display: block !important;
+  visibility: hidden !important;
+  position: absolute!important;
+  left: -10000px !important;
+  top: -10000px !important; }
+
+/* line 75, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hide-nosize {
+  height: 0!important;
+  width: 0!important; }
+
+/* line 80, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-masked-relative {
+  position: relative; }
+
+/* line 86, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ie6 .x-masked select,
+.x-ie6.x-body-masked select {
+  visibility: hidden !important; }
+
+/* line 92, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-css-shadow {
+  position: absolute;
+  -moz-border-radius: 5px 5px;
+  -webkit-border-radius: 5px 5px;
+  -o-border-radius: 5px 5px;
+  -ms-border-radius: 5px 5px;
+  -khtml-border-radius: 5px 5px;
+  border-radius: 5px 5px; }
+
+/* line 98, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ie-shadow {
+  background-color: #777;
+  display: none;
+  position: absolute;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 107, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tl {
+  background: transparent no-repeat 0 0;
+  zoom: 1; }
+
+/* line 112, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tc {
+  height: 8px;
+  background: transparent repeat-x 0 0;
+  overflow: hidden; }
+
+/* line 118, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tr {
+  background: transparent no-repeat right -8px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-ml {
+  background: transparent repeat-y 0;
+  padding-left: 4px;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 129, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc {
+  background: repeat-x 0 -16px;
+  padding: 4px 10px; }
+
+/* line 134, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc h3 {
+  margin: 0 0 4px 0;
+  zoom: 1; }
+
+/* line 139, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mr {
+  background: transparent repeat-y right;
+  padding-right: 4px;
+  overflow: hidden; }
+
+/* line 145, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bl {
+  background: transparent no-repeat 0 -16px;
+  zoom: 1; }
+
+/* line 150, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bc {
+  background: transparent repeat-x 0 -8px;
+  height: 8px;
+  overflow: hidden; }
+
+/* line 156, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-br {
+  background: transparent no-repeat right -24px; }
+
+/* line 160, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tl, .x-box-bl {
+  padding-left: 8px;
+  overflow: hidden; }
+
+/* line 165, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tr, .x-box-br {
+  padding-right: 8px;
+  overflow: hidden; }
+
+/* line 170, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tl {
+  background-image: url('../../resources/themes/images/gray/box/corners.gif'); }
+
+/* line 174, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tc {
+  background-image: url('../../resources/themes/images/gray/box/tb.gif'); }
+
+/* line 178, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tr {
+  background-image: url('../../resources/themes/images/gray/box/corners.gif'); }
+
+/* line 182, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-ml {
+  background-image: url('../../resources/themes/images/gray/box/l.gif'); }
+
+/* line 186, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc {
+  background-color: #eee;
+  background-image: url('../../resources/themes/images/gray/box/tb.gif');
+  font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;
+  color: #393939;
+  font-size: 15px; }
+
+/* line 194, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc h3 {
+  font-size: 18px;
+  font-weight: bold; }
+
+/* line 199, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mr {
+  background-image: url('../../resources/themes/images/gray/box/r.gif'); }
+
+/* line 203, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bl {
+  background-image: url('../../resources/themes/images/gray/box/corners.gif'); }
+
+/* line 207, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bc {
+  background-image: url('../../resources/themes/images/gray/box/tb.gif'); }
+
+/* line 211, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-br {
+  background-image: url('../../resources/themes/images/gray/box/corners.gif'); }
+
+/* line 215, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr {
+  background-image: url('../../resources/themes/images/gray/box/corners-blue.gif'); }
+
+/* line 219, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc {
+  background-image: url('../../resources/themes/images/gray/box/tb-blue.gif'); }
+
+/* line 223, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-mc {
+  background-color: #c3daf9; }
+
+/* line 227, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-mc h3 {
+  color: #17385b; }
+
+/* line 231, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-ml {
+  background-image: url('../../resources/themes/images/gray/box/l-blue.gif'); }
+
+/* line 235, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-mr {
+  background-image: url('../../resources/themes/images/gray/box/r-blue.gif'); }
+
+/* line 239, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-container {
+  zoom: 1; }
+  /* line 244, ../themes/stylesheets/ext4/default/core/_core.scss */
+  .x-container:before {
+    content: "";
+    clear: both;
+    display: table; }
+
+/* line 254, ../themes/stylesheets/ext4/default/core/_core.scss */
+table.x-container:before,
+tbody.x-container:before,
+tr.x-container:before {
+  display: none; }
+
+/* line 1, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-element {
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px; }
+
+/* line 9, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame {
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  z-index: 100000000;
+  width: 0px;
+  height: 0px; }
+
+/* line 21, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom,
+.x-focus-frame-left,
+.x-focus-frame-right {
+  position: absolute;
+  top: 0px;
+  left: 0px; }
+
+/* line 28, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom {
+  border-top: solid 2px #15428b;
+  height: 2px; }
+
+/* line 34, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame-left,
+.x-focus-frame-right {
+  border-left: solid 2px #15428b;
+  width: 2px; }
+
+/**
+ * Creates the base structure of a BoundList.
+ * @member Ext.view.BoundList
+ */
+/**
+ * Creates the base structure of an Ext.Button
+ * @member Ext.button.Button
+ */
+/**
+ * Creates a visual theme of an Ext.Button
+ * @member Ext.button.Button
+ */
+/**
+ * Creates the base structure of a button group.
+ * @member Ext.container.ButtonGroup
+ */
+/**
+ * Creates a visual theme of a button group.
+ * @member Ext.container.ButtonGroup
+ */
+/**
+ * Creates the base structure of a date picker.
+ * @member Ext.picker.Date
+ */
+/**
+ * Creates base structure for Ext.picker.Color
+ * @member Ext.picker.Color
+ */
+/**
+ * Creates the base structure of a Menu
+ * @member Ext.menu.Menu
+ */
+/**
+ * Create the base structure of an Ext.Panel
+ * @member Ext.panel.Panel
+ */
+/**
+ * Creates a visual theme for an Ext.Panel
+ * @member Ext.panel.Panel
+ */
+/**
+ * Creates base structure for Toolbar
+ * @member Ext.toolbar.Toolbar
+ */
+/**
+ * Creates a visual theme for an Toolbar.
+ * @param {String} $ui The name of the UI
+ * @param {Color} $background-color The background color of the toolbar (defaults to transparent)
+ * @param {Gradient/color-stops} $background-gradient The background gradient of the toolbar (defaults to null)
+ * @param {Color} $border-color The border color of the toolbar (defaults to null)
+ * @member Ext.toolbar.Toolbar
+ */
+/**
+ * Creates the base structure of Ext.form.Panel.
+ * @member Ext.form.Panel
+ */
+/**
+ * Creates the base structure of form field.
+ * @member Ext.form.field.Base
+ */
+/**
+ * Creates the base structure of FieldSet.
+ * @member Ext.form.FieldSet
+ */
+/**
+ * Creates the base structure of file field.
+ * @member Ext.form.field.File
+ */
+/**
+ * Creates the base structure of checkbox field.
+ * @member Ext.form.field.Checkbox
+ */
+/**
+ * Creates the base structure of CheckboxGroup.
+ * @member Ext.form.CheckboxGroup
+ */
+/**
+ * Creates the base structure of trigger field.
+ * @member Ext.form.field.Trigger
+ */
+/**
+ * Creates the base structure of HtmlEditor field.
+ * @member Ext.form.field.HtmlEditor
+ */
+/**
+ * Creates the base structure of QuickTip.
+ * @member Ext.tip.QuickTip
+ */
+/**
+ * Creates the base structure of an Ext.Window
+ * @member Ext.window.Window
+ */
+/**
+ * Creates a visual theme for an Ext.Panel
+ * @member Ext.window.Window
+ */
+/**
+ * Creates a visual theme for TabBar
+ * @member Ext.tab.Bar
+ */
+/**
+ * Creates the base structure of a Tab.
+ * @member Ext.tab.Tab
+ */
+/**
+ * Creates the base structure of slider.
+ * @member Ext.slider.Multi
+ */
+/**
+ * Creates base structure for a Grid.
+ * @member Ext.grid.Panel
+ */
+/**
+ * Creates the base structure of Tree.
+ * @member Ext.tree.Panel
+ */
+/* Styles for Ext.LoadMask */
+/* line 3, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+.x-mask {
+  z-index: 100;
+  position: absolute;
+  top: 0;
+  left: 0;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  width: 100%;
+  height: 100%;
+  zoom: 1;
+  background: #cccccc; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+.x-mask-msg {
+  z-index: 20001;
+  position: absolute;
+  top: 0;
+  left: 0;
+  padding: 2px;
+  border: 1px solid;
+  border-color: #d0d0d0;
+  background-image: none;
+  background-color: #e0e0e0; }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+  .x-mask-msg div {
+    padding: 5px 10px 5px 25px;
+    background-image: url('../../resources/themes/images/gray/grid/loading.gif');
+    background-repeat: no-repeat;
+    background-position: 5px center;
+    cursor: wait;
+    border: 1px solid #b3b3b3;
+    background-color: #eeeeee;
+    color: #222222;
+    font: normal 11px tahoma, arial, verdana, sans-serif; }
+
+/**
+ * Creates the base structure of an Ext.ProgressBar
+ * @member Ext.ProgressBar
+ */
+/**
+ * Creates a visual theme for an Ext.ProgressBar
+ * @member Ext.ProgressBar
+ */
+/**
+ * Creates base structure for a Draw Component.
+ * @member Ext.draw.Component
+ */
+/**
+ * Creates the base structure of Viewport.
+ * @member Ext.container.Viewport
+ */
+/**
+ * W3C suggested default style sheet for HTML 4:
+ * [http://www.w3.org/TR/CSS21/sample.html](http://www.w3.org/TR/CSS21/sample.html)
+ *
+ * @member Global_CSS
+ */
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist {
+  border-width: 1px;
+  border-style: solid;
+  border-color: #b5b8c8;
+  background: white; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-boundlist .x-toolbar {
+    border-width: 1px 0 0 0; }
+
+/* line 22, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-strict .x-ie6 .x-boundlist-list-ct,
+.x-strict .x-ie7 .x-boundlist-list-ct {
+  position: relative; }
+
+/* line 29, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-item {
+  padding: 2px;
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  cursor: pointer;
+  cursor: hand;
+  position: relative;
+  /*allow hover in IE on empty items*/
+  border-width: 1px;
+  border-style: dotted;
+  border-color: white; }
+
+/* line 43, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-selected {
+  background: #d3d3d3;
+  border-color: #b3abaa; }
+
+/* line 48, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-item-over {
+  background: #e0e0e0;
+  border-color: #bfb8b8; }
+
+/* line 53, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-floating {
+  border-top-width: 0; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-above {
+  border-top-width: 1px;
+  border-bottom-width: 1px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn {
+  display: inline-block;
+  zoom: 1;
+  *display: inline;
+  position: relative;
+  cursor: pointer;
+  cursor: hand;
+  white-space: nowrap;
+  vertical-align: middle;
+  background-repeat: no-repeat; }
+  /* line 19, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn * {
+    cursor: pointer;
+    cursor: hand; }
+  /* line 26, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn em {
+    background-repeat: no-repeat; }
+    /* line 30, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-btn em a {
+      text-decoration: none;
+      display: block;
+      color: inherit;
+      width: 100%;
+      zoom: 1; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn button {
+    width: 100%;
+    display: block;
+    margin: 0;
+    padding: 0;
+    border: 0;
+    background: none;
+    outline: 0 none;
+    overflow: hidden;
+    vertical-align: bottom;
+    -webkit-appearance: none; }
+    /* line 59, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-btn button::-moz-focus-inner {
+      border: 0;
+      padding: 0; }
+  /* line 65, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn .x-btn-inner {
+    display: block;
+    white-space: nowrap;
+    background-color: transparent;
+    background-repeat: no-repeat;
+    background-position: left center;
+    overflow: hidden; }
+  /* line 74, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn .x-btn-left .x-btn-inner {
+    text-align: left; }
+  /* line 78, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn .x-btn-center .x-btn-inner {
+    text-align: center; }
+  /* line 82, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn .x-btn-right .x-btn-inner {
+    text-align: right; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-disabled span {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+  /* line 91, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-disabled span, .x-ie7 .x-btn-disabled span {
+    filter: none; }
+
+/* line 98, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie7 .x-btn-disabled,
+.x-ie8 .x-btn-disabled {
+  filter: none; }
+
+/* line 105, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-disabled .x-btn-icon,
+.x-ie7 .x-btn-disabled .x-btn-icon,
+.x-ie8 .x-btn-disabled .x-btn-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+
+/* IE9 shows scrollbars in a button unless this is set  */
+/* line 112, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie9 .x-btn button {
+  overflow: visible!important; }
+
+/* line 117, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+* html .x-ie .x-btn button {
+  width: 1px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn button {
+  overflow-x: visible;
+  /*prevents extra horiz space in IE*/
+  vertical-align: baseline;
+  /*IE doesn't like bottom*/ }
+
+/* line 129, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-strict .x-ie6 .x-btn .x-frame-mc,
+.x-strict .x-ie7 .x-btn .x-frame-mc {
+  height: 100%; }
+
+/* Keep the selector simple ".x-btn .x-frame-mc" is enough to target the center frame of the button table */
+/* line 138, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn .x-frame-mc {
+  vertical-align: middle;
+  white-space: nowrap;
+  cursor: pointer; }
+
+/* Only center when all there is is text. Otherwise solo icons get centered. */
+/* line 147, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-noicon .x-frame-mc {
+  text-align: center; }
+
+/* line 153, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-icon-text-left .x-btn-icon {
+  background-position: left center; }
+
+/* line 157, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-icon-text-right .x-btn-icon {
+  background-position: right center; }
+
+/* line 161, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-icon-text-top .x-btn-icon {
+  background-position: center top; }
+
+/* line 165, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-icon-text-bottom .x-btn-icon {
+  background-position: center bottom; }
+
+/* line 170, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn button, .x-btn a {
+  position: relative; }
+  /* line 173, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn button .x-btn-icon, .x-btn a .x-btn-icon {
+    position: absolute;
+    background-repeat: no-repeat; }
+
+/* line 180, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-arrow-right {
+  background: transparent no-repeat right center;
+  padding-right: 12px; }
+  /* line 184, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-arrow-right .x-btn-inner {
+    padding-right: 0 !important; }
+
+/* line 189, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-toolbar .x-btn-arrow-right {
+  padding-right: 12px; }
+
+/* line 193, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-arrow-bottom {
+  background: transparent no-repeat center bottom;
+  padding-bottom: 12px; }
+
+/* line 198, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-arrow {
+  background-image: url('../../resources/themes/images/gray/button/arrow.gif');
+  display: block; }
+
+/* line 206, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-split-right,
+.x-btn-over .x-btn-split-right {
+  background: transparent no-repeat right center;
+  background-image: url('../../resources/themes/images/gray/button/s-arrow.gif');
+  padding-right: 14px !important; }
+
+/* line 213, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-split-bottom,
+.x-btn-over .x-btn-split-bottom {
+  background: transparent no-repeat center bottom;
+  background-image: url('../../resources/themes/images/gray/button/s-arrow-b.gif');
+  padding-bottom: 14px; }
+
+/* line 219, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-toolbar .x-btn-split-right {
+  background-image: url('../../resources/themes/images/gray/button/s-arrow-noline.gif');
+  padding-right: 12px !important; }
+
+/* line 224, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-toolbar .x-btn-split-bottom {
+  background-image: url('../../resources/themes/images/gray/button/s-arrow-b-noline.gif'); }
+
+/* line 228, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-split {
+  display: block; }
+
+/* line 233, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-item-disabled,
+.x-item-disabled * {
+  cursor: default; }
+
+/* line 237, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-cycle-fixed-width .x-btn-inner {
+  text-align: inherit; }
+
+/* line 241, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-over .x-btn-split-right {
+  background-image: url('../../resources/themes/images/gray/button/s-arrow-o.gif'); }
+
+/* line 242, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-over .x-btn-split-bottom {
+  background-image: url('../../resources/themes/images/gray/button/s-arrow-bo.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small {
+  border-color: #bbbbbb; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-small {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #f8f8f8;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #eeeeee));
+  background-image: -webkit-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: -moz-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: -o-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: -ms-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: linear-gradient(top, #ffffff, #eeeeee); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-small-mc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-small-bg.gif');
+  background-color: #f8f8f8; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-small-tl,
+.x-nbr .x-btn-default-small-bl,
+.x-nbr .x-btn-default-small-tr,
+.x-nbr .x-btn-default-small-br,
+.x-nbr .x-btn-default-small-tc,
+.x-nbr .x-btn-default-small-bc,
+.x-nbr .x-btn-default-small-ml,
+.x-nbr .x-btn-default-small-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-small-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-small-ml,
+.x-nbr .x-btn-default-small-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-small-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-small-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-default-small-tl,
+.x-strict .x-ie7 .x-btn-default-small-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 4px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon button,
+.x-btn-default-small-icon a,
+.x-btn-default-small-icon .x-btn-inner,
+.x-btn-default-small-noicon button,
+.x-btn-default-small-noicon a,
+.x-btn-default-small-noicon .x-btn-inner {
+  height: 16px;
+  line-height: 16px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon button, .x-btn-default-small-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 16px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon .x-btn-icon {
+  width: 16px;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-left button, .x-btn-default-small-icon-text-left a {
+  height: 16px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-left .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-left: 20px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-left .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-small-icon-text-left .x-btn-icon {
+    height: 16px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-right button, .x-btn-default-small-icon-text-right a {
+  height: 16px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-right .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-right: 20px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-right .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-small-icon-text-right .x-btn-icon {
+    height: 16px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-top .x-btn-inner {
+  padding-top: 20px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon {
+    width: 16px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon {
+    width: 16px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-over {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -ms-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-focus {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -ms-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-menu-active,
+.x-btn-default-small-pressed {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #d6d6d6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c7c7c7), color-stop(100%, #e0e0e0));
+  background-image: -webkit-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -moz-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -o-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -ms-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: linear-gradient(top, #c7c7c7, #e0e0e0); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-disabled {
+  border-color: #d7d7d7;
+  background-image: none;
+  background-color: #ececec;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f4f4f4), color-stop(100%, #e2e2e2));
+  background-image: -webkit-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: -moz-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: -o-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: -ms-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: linear-gradient(top, #f4f4f4, #e2e2e2); }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-default-small-disabled .x-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn-default-small-disabled .x-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-small-disabled .x-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-over .x-frame-tl,
+.x-nbr .x-btn-default-small-over .x-frame-bl,
+.x-nbr .x-btn-default-small-over .x-frame-tr,
+.x-nbr .x-btn-default-small-over .x-frame-br,
+.x-nbr .x-btn-default-small-over .x-frame-tc,
+.x-nbr .x-btn-default-small-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-small-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-over .x-frame-ml,
+.x-nbr .x-btn-default-small-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-small-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-over .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-small-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-focus .x-frame-tl,
+.x-nbr .x-btn-default-small-focus .x-frame-bl,
+.x-nbr .x-btn-default-small-focus .x-frame-tr,
+.x-nbr .x-btn-default-small-focus .x-frame-br,
+.x-nbr .x-btn-default-small-focus .x-frame-tc,
+.x-nbr .x-btn-default-small-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-small-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-focus .x-frame-ml,
+.x-nbr .x-btn-default-small-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-small-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-focus .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-small-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-small-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-small-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-small-menu-active .x-frame-br,
+.x-nbr .x-btn-default-small-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-small-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-small-pressed .x-frame-tl,
+.x-nbr .x-btn-default-small-pressed .x-frame-bl,
+.x-nbr .x-btn-default-small-pressed .x-frame-tr,
+.x-nbr .x-btn-default-small-pressed .x-frame-br,
+.x-nbr .x-btn-default-small-pressed .x-frame-tc,
+.x-nbr .x-btn-default-small-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-small-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-small-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-small-pressed .x-frame-ml,
+.x-nbr .x-btn-default-small-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-small-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-small-pressed .x-frame-mc {
+  background-color: #d6d6d6;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-small-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-disabled .x-frame-tl,
+.x-nbr .x-btn-default-small-disabled .x-frame-bl,
+.x-nbr .x-btn-default-small-disabled .x-frame-tr,
+.x-nbr .x-btn-default-small-disabled .x-frame-br,
+.x-nbr .x-btn-default-small-disabled .x-frame-tc,
+.x-nbr .x-btn-default-small-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-small-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-disabled .x-frame-ml,
+.x-nbr .x-btn-default-small-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-small-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-disabled .x-frame-mc {
+  background-color: #ececec;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-small-disabled-bg.gif'); }
+
+/* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-small-bg.gif'); }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-small-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-small-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-menu-active,
+.x-nlg .x-btn-default-small-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-small-pressed-bg.gif'); }
+
+/* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-small-disabled-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium {
+  border-color: #bbbbbb; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-medium {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #f8f8f8;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #eeeeee));
+  background-image: -webkit-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: -moz-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: -o-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: -ms-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: linear-gradient(top, #ffffff, #eeeeee); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-medium-mc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-medium-bg.gif');
+  background-color: #f8f8f8; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-medium-tl,
+.x-nbr .x-btn-default-medium-bl,
+.x-nbr .x-btn-default-medium-tr,
+.x-nbr .x-btn-default-medium-br,
+.x-nbr .x-btn-default-medium-tc,
+.x-nbr .x-btn-default-medium-bc,
+.x-nbr .x-btn-default-medium-ml,
+.x-nbr .x-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-medium-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-medium-ml,
+.x-nbr .x-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-medium-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-medium-mc {
+  padding: 1px 1px 1px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-default-medium-tl,
+.x-strict .x-ie7 .x-btn-default-medium-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 3px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon button,
+.x-btn-default-medium-icon a,
+.x-btn-default-medium-icon .x-btn-inner,
+.x-btn-default-medium-noicon button,
+.x-btn-default-medium-noicon a,
+.x-btn-default-medium-noicon .x-btn-inner {
+  height: 24px;
+  line-height: 24px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon button, .x-btn-default-medium-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 24px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon .x-btn-icon {
+  width: 24px;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-left button, .x-btn-default-medium-icon-text-left a {
+  height: 24px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-left: 28px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon {
+    height: 24px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-right button, .x-btn-default-medium-icon-text-right a {
+  height: 24px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-right: 28px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon {
+    height: 24px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon {
+    width: 24px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon {
+    width: 24px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-over {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -ms-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-focus {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -ms-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-menu-active,
+.x-btn-default-medium-pressed {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #d6d6d6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c7c7c7), color-stop(100%, #e0e0e0));
+  background-image: -webkit-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -moz-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -o-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -ms-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: linear-gradient(top, #c7c7c7, #e0e0e0); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-disabled {
+  border-color: #d7d7d7;
+  background-image: none;
+  background-color: #ececec;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f4f4f4), color-stop(100%, #e2e2e2));
+  background-image: -webkit-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: -moz-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: -o-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: -ms-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: linear-gradient(top, #f4f4f4, #e2e2e2); }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-default-medium-disabled .x-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn-default-medium-disabled .x-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-medium-disabled .x-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-over .x-frame-tl,
+.x-nbr .x-btn-default-medium-over .x-frame-bl,
+.x-nbr .x-btn-default-medium-over .x-frame-tr,
+.x-nbr .x-btn-default-medium-over .x-frame-br,
+.x-nbr .x-btn-default-medium-over .x-frame-tc,
+.x-nbr .x-btn-default-medium-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-medium-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-over .x-frame-ml,
+.x-nbr .x-btn-default-medium-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-medium-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-over .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-medium-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-focus .x-frame-tl,
+.x-nbr .x-btn-default-medium-focus .x-frame-bl,
+.x-nbr .x-btn-default-medium-focus .x-frame-tr,
+.x-nbr .x-btn-default-medium-focus .x-frame-br,
+.x-nbr .x-btn-default-medium-focus .x-frame-tc,
+.x-nbr .x-btn-default-medium-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-medium-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-focus .x-frame-ml,
+.x-nbr .x-btn-default-medium-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-medium-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-focus .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-medium-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-br,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-medium-pressed .x-frame-tl,
+.x-nbr .x-btn-default-medium-pressed .x-frame-bl,
+.x-nbr .x-btn-default-medium-pressed .x-frame-tr,
+.x-nbr .x-btn-default-medium-pressed .x-frame-br,
+.x-nbr .x-btn-default-medium-pressed .x-frame-tc,
+.x-nbr .x-btn-default-medium-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-medium-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-medium-pressed .x-frame-ml,
+.x-nbr .x-btn-default-medium-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-medium-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-medium-pressed .x-frame-mc {
+  background-color: #d6d6d6;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-medium-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-disabled .x-frame-tl,
+.x-nbr .x-btn-default-medium-disabled .x-frame-bl,
+.x-nbr .x-btn-default-medium-disabled .x-frame-tr,
+.x-nbr .x-btn-default-medium-disabled .x-frame-br,
+.x-nbr .x-btn-default-medium-disabled .x-frame-tc,
+.x-nbr .x-btn-default-medium-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-medium-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-disabled .x-frame-ml,
+.x-nbr .x-btn-default-medium-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-medium-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-disabled .x-frame-mc {
+  background-color: #ececec;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-medium-disabled-bg.gif'); }
+
+/* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-medium-bg.gif'); }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-medium-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-medium-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-menu-active,
+.x-nlg .x-btn-default-medium-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-medium-pressed-bg.gif'); }
+
+/* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-medium-disabled-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large {
+  border-color: #bbbbbb; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-large {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #f8f8f8;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #eeeeee));
+  background-image: -webkit-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: -moz-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: -o-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: -ms-linear-gradient(top, #ffffff, #eeeeee);
+  background-image: linear-gradient(top, #ffffff, #eeeeee); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-large-mc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-large-bg.gif');
+  background-color: #f8f8f8; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-large-tl,
+.x-nbr .x-btn-default-large-bl,
+.x-nbr .x-btn-default-large-tr,
+.x-nbr .x-btn-default-large-br,
+.x-nbr .x-btn-default-large-tc,
+.x-nbr .x-btn-default-large-bc,
+.x-nbr .x-btn-default-large-ml,
+.x-nbr .x-btn-default-large-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-large-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-large-ml,
+.x-nbr .x-btn-default-large-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-large-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-large-mc {
+  padding: 1px 1px 1px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-default-large-tl,
+.x-strict .x-ie7 .x-btn-default-large-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 3px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon button,
+.x-btn-default-large-icon a,
+.x-btn-default-large-icon .x-btn-inner,
+.x-btn-default-large-noicon button,
+.x-btn-default-large-noicon a,
+.x-btn-default-large-noicon .x-btn-inner {
+  height: 32px;
+  line-height: 32px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon button, .x-btn-default-large-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 32px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon .x-btn-icon {
+  width: 32px;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-left button, .x-btn-default-large-icon-text-left a {
+  height: 32px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-left .x-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-left: 36px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-left .x-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-large-icon-text-left .x-btn-icon {
+    height: 32px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-right button, .x-btn-default-large-icon-text-right a {
+  height: 32px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-right .x-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-right: 36px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-right .x-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-large-icon-text-right .x-btn-icon {
+    height: 32px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-top .x-btn-inner {
+  padding-top: 36px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon {
+    width: 32px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 36px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 32px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon {
+    width: 32px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-over {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -ms-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-focus {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -ms-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-menu-active,
+.x-btn-default-large-pressed {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #d6d6d6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c7c7c7), color-stop(100%, #e0e0e0));
+  background-image: -webkit-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -moz-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -o-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -ms-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: linear-gradient(top, #c7c7c7, #e0e0e0); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-disabled {
+  border-color: #d7d7d7;
+  background-image: none;
+  background-color: #ececec;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f4f4f4), color-stop(100%, #e2e2e2));
+  background-image: -webkit-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: -moz-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: -o-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: -ms-linear-gradient(top, #f4f4f4, #e2e2e2);
+  background-image: linear-gradient(top, #f4f4f4, #e2e2e2); }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-default-large-disabled .x-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn-default-large-disabled .x-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-large-disabled .x-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-over .x-frame-tl,
+.x-nbr .x-btn-default-large-over .x-frame-bl,
+.x-nbr .x-btn-default-large-over .x-frame-tr,
+.x-nbr .x-btn-default-large-over .x-frame-br,
+.x-nbr .x-btn-default-large-over .x-frame-tc,
+.x-nbr .x-btn-default-large-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-large-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-over .x-frame-ml,
+.x-nbr .x-btn-default-large-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-large-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-over .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-large-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-focus .x-frame-tl,
+.x-nbr .x-btn-default-large-focus .x-frame-bl,
+.x-nbr .x-btn-default-large-focus .x-frame-tr,
+.x-nbr .x-btn-default-large-focus .x-frame-br,
+.x-nbr .x-btn-default-large-focus .x-frame-tc,
+.x-nbr .x-btn-default-large-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-large-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-focus .x-frame-ml,
+.x-nbr .x-btn-default-large-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-large-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-focus .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-large-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-large-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-large-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-large-menu-active .x-frame-br,
+.x-nbr .x-btn-default-large-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-large-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-large-pressed .x-frame-tl,
+.x-nbr .x-btn-default-large-pressed .x-frame-bl,
+.x-nbr .x-btn-default-large-pressed .x-frame-tr,
+.x-nbr .x-btn-default-large-pressed .x-frame-br,
+.x-nbr .x-btn-default-large-pressed .x-frame-tc,
+.x-nbr .x-btn-default-large-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-large-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-large-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-large-pressed .x-frame-ml,
+.x-nbr .x-btn-default-large-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-large-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-large-pressed .x-frame-mc {
+  background-color: #d6d6d6;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-large-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-disabled .x-frame-tl,
+.x-nbr .x-btn-default-large-disabled .x-frame-bl,
+.x-nbr .x-btn-default-large-disabled .x-frame-tr,
+.x-nbr .x-btn-default-large-disabled .x-frame-br,
+.x-nbr .x-btn-default-large-disabled .x-frame-tc,
+.x-nbr .x-btn-default-large-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-large-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-disabled .x-frame-ml,
+.x-nbr .x-btn-default-large-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-large-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-disabled .x-frame-mc {
+  background-color: #ececec;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-large-disabled-bg.gif'); }
+
+/* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-large-bg.gif'); }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-large-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-large-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-menu-active,
+.x-nlg .x-btn-default-large-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-large-pressed-bg.gif'); }
+
+/* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-large-disabled-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small {
+  border-color: transparent; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-toolbar-small {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-toolbar-small-mc {
+  background-color: transparent; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-small-tl,
+.x-nbr .x-btn-default-toolbar-small-bl,
+.x-nbr .x-btn-default-toolbar-small-tr,
+.x-nbr .x-btn-default-toolbar-small-br,
+.x-nbr .x-btn-default-toolbar-small-tc,
+.x-nbr .x-btn-default-toolbar-small-bc,
+.x-nbr .x-btn-default-toolbar-small-ml,
+.x-nbr .x-btn-default-toolbar-small-mr {
+  zoom: 1; }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-small-ml,
+.x-nbr .x-btn-default-toolbar-small-mr {
+  zoom: 1; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-small-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-small-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 4px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon button,
+.x-btn-default-toolbar-small-icon a,
+.x-btn-default-toolbar-small-icon .x-btn-inner,
+.x-btn-default-toolbar-small-noicon button,
+.x-btn-default-toolbar-small-noicon a,
+.x-btn-default-toolbar-small-noicon .x-btn-inner {
+  height: 16px;
+  line-height: 16px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon button, .x-btn-default-toolbar-small-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 16px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-icon {
+  width: 16px;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-left button, .x-btn-default-toolbar-small-icon-text-left a {
+  height: 16px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-left: 20px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon {
+    height: 16px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-right button, .x-btn-default-toolbar-small-icon-text-right a {
+  height: 16px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-right: 20px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon {
+    height: 16px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-inner {
+  padding-top: 20px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon {
+    width: 16px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon {
+    width: 16px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-over {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -ms-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-focus {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -ms-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-menu-active,
+.x-btn-default-toolbar-small-pressed {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #d6d6d6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c7c7c7), color-stop(100%, #e0e0e0));
+  background-image: -webkit-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -moz-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -o-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -ms-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: linear-gradient(top, #c7c7c7, #e0e0e0); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-disabled {
+  border-color: #d7d7d7;
+  background-image: none;
+  background-color: transparent; }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-default-toolbar-small-disabled .x-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn-default-toolbar-small-disabled .x-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-toolbar-small-disabled .x-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mc {
+  background-color: #d6d6d6;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mc {
+  background-color: transparent; }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-small-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-small-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-small-menu-active,
+.x-nlg .x-btn-default-toolbar-small-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-pressed-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium {
+  border-color: transparent; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-toolbar-medium {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-toolbar-medium-mc {
+  background-color: transparent; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-medium-tl,
+.x-nbr .x-btn-default-toolbar-medium-bl,
+.x-nbr .x-btn-default-toolbar-medium-tr,
+.x-nbr .x-btn-default-toolbar-medium-br,
+.x-nbr .x-btn-default-toolbar-medium-tc,
+.x-nbr .x-btn-default-toolbar-medium-bc,
+.x-nbr .x-btn-default-toolbar-medium-ml,
+.x-nbr .x-btn-default-toolbar-medium-mr {
+  zoom: 1; }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-medium-ml,
+.x-nbr .x-btn-default-toolbar-medium-mr {
+  zoom: 1; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-medium-mc {
+  padding: 1px 1px 1px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 3px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon button,
+.x-btn-default-toolbar-medium-icon a,
+.x-btn-default-toolbar-medium-icon .x-btn-inner,
+.x-btn-default-toolbar-medium-noicon button,
+.x-btn-default-toolbar-medium-noicon a,
+.x-btn-default-toolbar-medium-noicon .x-btn-inner {
+  height: 24px;
+  line-height: 24px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon button, .x-btn-default-toolbar-medium-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 24px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-icon {
+  width: 24px;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-left button, .x-btn-default-toolbar-medium-icon-text-left a {
+  height: 24px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-left: 28px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon {
+    height: 24px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-right button, .x-btn-default-toolbar-medium-icon-text-right a {
+  height: 24px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-right: 28px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon {
+    height: 24px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon {
+    width: 24px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon {
+    width: 24px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-over {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -ms-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-focus {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -ms-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-menu-active,
+.x-btn-default-toolbar-medium-pressed {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #d6d6d6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c7c7c7), color-stop(100%, #e0e0e0));
+  background-image: -webkit-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -moz-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -o-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -ms-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: linear-gradient(top, #c7c7c7, #e0e0e0); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-disabled {
+  border-color: #d7d7d7;
+  background-image: none;
+  background-color: transparent; }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mc {
+  background-color: #d6d6d6;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mc {
+  background-color: transparent; }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-medium-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-medium-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-medium-menu-active,
+.x-nlg .x-btn-default-toolbar-medium-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-pressed-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large {
+  border-color: transparent; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-toolbar-large {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-toolbar-large-mc {
+  background-color: transparent; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-large-tl,
+.x-nbr .x-btn-default-toolbar-large-bl,
+.x-nbr .x-btn-default-toolbar-large-tr,
+.x-nbr .x-btn-default-toolbar-large-br,
+.x-nbr .x-btn-default-toolbar-large-tc,
+.x-nbr .x-btn-default-toolbar-large-bc,
+.x-nbr .x-btn-default-toolbar-large-ml,
+.x-nbr .x-btn-default-toolbar-large-mr {
+  zoom: 1; }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-large-ml,
+.x-nbr .x-btn-default-toolbar-large-mr {
+  zoom: 1; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-large-mc {
+  padding: 1px 1px 1px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-large-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 3px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon button,
+.x-btn-default-toolbar-large-icon a,
+.x-btn-default-toolbar-large-icon .x-btn-inner,
+.x-btn-default-toolbar-large-noicon button,
+.x-btn-default-toolbar-large-noicon a,
+.x-btn-default-toolbar-large-noicon .x-btn-inner {
+  height: 32px;
+  line-height: 32px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon button, .x-btn-default-toolbar-large-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 32px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-icon {
+  width: 32px;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-left button, .x-btn-default-toolbar-large-icon-text-left a {
+  height: 32px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-left: 36px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon {
+    height: 32px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-right button, .x-btn-default-toolbar-large-icon-text-right a {
+  height: 32px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-right: 36px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon {
+    height: 32px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-inner {
+  padding-top: 36px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon {
+    width: 32px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 36px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 32px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon {
+    width: 32px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-over {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -ms-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-focus {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #f3f3f3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -moz-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -o-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: -ms-linear-gradient(top, #fbfbfb, #e9e9e9);
+  background-image: linear-gradient(top, #fbfbfb, #e9e9e9); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-menu-active,
+.x-btn-default-toolbar-large-pressed {
+  border-color: #9d9d9d;
+  background-image: none;
+  background-color: #d6d6d6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c7c7c7), color-stop(100%, #e0e0e0));
+  background-image: -webkit-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -moz-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -o-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: -ms-linear-gradient(top, #c7c7c7, #e0e0e0);
+  background-image: linear-gradient(top, #c7c7c7, #e0e0e0); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-disabled {
+  border-color: #d7d7d7;
+  background-image: none;
+  background-color: transparent; }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-default-toolbar-large-disabled .x-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn-default-toolbar-large-disabled .x-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-toolbar-large-disabled .x-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-mc {
+  background-color: #f3f3f3;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mc {
+  background-color: #d6d6d6;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mc {
+  background-color: transparent; }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-large-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-large-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-large-menu-active,
+.x-nlg .x-btn-default-toolbar-large-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-pressed-bg.gif'); }
+
+/* line 571, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-disabled,
+.x-btn-default-toolbar-medium-disabled,
+.x-btn-default-toolbar-large-disabled {
+  border-color: transparent;
+  background-image: none;
+  background: transparent; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group {
+  position: relative;
+  overflow: hidden; }
+
+/* line 11, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-body {
+  position: relative;
+  zoom: 1;
+  padding: 0 1px; }
+  /* line 15, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-btn-group-body .x-table-layout-cell {
+    vertical-align: top; }
+
+/* line 20, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-header-text {
+  white-space: nowrap; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-group-default-framed {
+  -moz-border-radius: 2px;
+  -webkit-border-radius: 2px;
+  -o-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -khtml-border-radius: 2px;
+  border-radius: 2px;
+  padding: 1px 1px 1px 1px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #f0f0f0; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-group-default-framed-mc {
+  background-color: #f0f0f0; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-group-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000202px 1000202px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-group-default-framed-tl,
+.x-nbr .x-btn-group-default-framed-bl,
+.x-nbr .x-btn-group-default-framed-tr,
+.x-nbr .x-btn-group-default-framed-br,
+.x-nbr .x-btn-group-default-framed-tc,
+.x-nbr .x-btn-group-default-framed-bc,
+.x-nbr .x-btn-group-default-framed-ml,
+.x-nbr .x-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/btn-group/btn-group-default-framed-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-group-default-framed-ml,
+.x-nbr .x-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/btn-group/btn-group-default-framed-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-group-default-framed-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-group-default-framed-tl,
+.x-strict .x-ie7 .x-btn-group-default-framed-bl {
+  position: relative;
+  right: 0; }
+
+/* line 60, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-default-framed {
+  border-color: #d0d0d0;
+  -moz-box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+  -webkit-box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+  -o-box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset;
+  box-shadow: #ececec 0 1px 0px 0 inset, #ececec 0 -1px 0px 0 inset, #ececec -1px 0 0px 0 inset, #ececec 1px 0 0px 0 inset; }
+
+/* line 68, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-header-default-framed {
+  margin: 2px 2px 0 2px; }
+
+/* line 72, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-header-body-default-framed {
+  padding: 1px 0;
+  background: #dfdfdf;
+  -moz-border-radius-topleft: 2px;
+  -webkit-border-top-left-radius: 2px;
+  -o-border-top-left-radius: 2px;
+  -ms-border-top-left-radius: 2px;
+  -khtml-border-top-left-radius: 2px;
+  border-top-left-radius: 2px;
+  -moz-border-radius-topright: 2px;
+  -webkit-border-top-right-radius: 2px;
+  -o-border-top-right-radius: 2px;
+  -ms-border-top-right-radius: 2px;
+  -khtml-border-top-right-radius: 2px;
+  border-top-right-radius: 2px; }
+
+/* line 80, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-header-text-default-framed {
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  color: #666666; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker {
+  border: 1px solid #585858;
+  background-color: white;
+  position: relative; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker a {
+    -moz-outline: 0 none;
+    outline: 0 none;
+    color: #523a39;
+    text-decoration: none;
+    border-width: 0; }
+
+/* line 25, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-inner,
+.x-datepicker-inner td,
+.x-datepicker-inner th {
+  border-collapse: separate; }
+
+/* line 29, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-header {
+  position: relative;
+  height: 26px;
+  background-image: none;
+  background-color: #6f6f6f;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #777777), color-stop(100%, #656565));
+  background-image: -webkit-linear-gradient(top, #777777, #656565);
+  background-image: -moz-linear-gradient(top, #777777, #656565);
+  background-image: -o-linear-gradient(top, #777777, #656565);
+  background-image: -ms-linear-gradient(top, #777777, #656565);
+  background-image: linear-gradient(top, #777777, #656565); }
+
+/* line 42, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-prev,
+.x-datepicker-next {
+  position: absolute;
+  top: 5px;
+  width: 18px; }
+  /* line 48, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-prev a,
+  .x-datepicker-next a {
+    display: block;
+    width: 16px;
+    height: 16px;
+    background-position: top;
+    background-repeat: no-repeat;
+    cursor: pointer;
+    text-decoration: none !important;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+    opacity: 0.7; }
+    /* line 63, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-datepicker-prev a:hover,
+    .x-datepicker-next a:hover {
+      filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+      opacity: 1; }
+
+/* line 69, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-next {
+  right: 5px; }
+  /* line 72, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-next a {
+    background-image: url('../../resources/themes/images/gray/shared/right-btn.gif'); }
+
+/* line 77, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-prev {
+  left: 5px; }
+  /* line 80, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-prev a {
+    background-image: url('../../resources/themes/images/gray/shared/left-btn.gif'); }
+
+/* line 86, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-item-disabled .x-datepicker-prev a:hover,
+.x-item-disabled .x-datepicker-next a:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+
+/* line 90, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-month {
+  padding-top: 3px; }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-month .x-btn,
+  .x-datepicker-month button,
+  .x-datepicker-month .x-btn-tc,
+  .x-datepicker-month .x-btn-tl,
+  .x-datepicker-month .x-btn-tr,
+  .x-datepicker-month .x-btn-mc,
+  .x-datepicker-month .x-btn-ml,
+  .x-datepicker-month .x-btn-mr,
+  .x-datepicker-month .x-btn-bc,
+  .x-datepicker-month .x-btn-bl,
+  .x-datepicker-month .x-btn-br {
+    background: transparent !important;
+    border-width: 0 !important; }
+  /* line 108, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-month span {
+    color: #fff !important; }
+  /* line 112, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-month .x-btn-split-right {
+    background-image: url('../../resources/themes/images/gray/button/s-arrow-light.gif');
+    padding-right: 12px; }
+
+/* line 118, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-next {
+  text-align: right; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-month {
+  text-align: center; }
+  /* line 126, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-month button {
+    color: white !important; }
+
+/* line 132, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+table.x-datepicker-inner {
+  width: 100%;
+  table-layout: fixed; }
+  /* line 136, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner th {
+    width: 25px;
+    height: 19px;
+    padding: 0;
+    color: #3e3e3e;
+    font: normal 10px tahoma, arial, verdana, sans-serif;
+    text-align: right;
+    border-bottom: 1px solid #d0d0d0;
+    border-collapse: separate;
+    background-image: none;
+    background-color: #e9e9e9;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f1f1f1), color-stop(100%, #dfdfdf));
+    background-image: -webkit-linear-gradient(top, #f1f1f1, #dfdfdf);
+    background-image: -moz-linear-gradient(top, #f1f1f1, #dfdfdf);
+    background-image: -o-linear-gradient(top, #f1f1f1, #dfdfdf);
+    background-image: -ms-linear-gradient(top, #f1f1f1, #dfdfdf);
+    background-image: linear-gradient(top, #f1f1f1, #dfdfdf);
+    cursor: default; }
+    /* line 157, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    table.x-datepicker-inner th span {
+      display: block;
+      padding-right: 7px; }
+  /* line 163, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner tr {
+    height: 20px; }
+  /* line 167, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner td {
+    border: 1px solid;
+    height: 17px;
+    border-color: white;
+    text-align: right;
+    padding: 0; }
+  /* line 175, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner a {
+    padding-right: 4px;
+    display: block;
+    zoom: 1;
+    font: normal 11px tahoma, arial, verdana, sans-serif;
+    color: black;
+    text-decoration: none;
+    text-align: right; }
+  /* line 188, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-active {
+    cursor: pointer;
+    color: black; }
+  /* line 194, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-selected a {
+    background: repeat-x left top;
+    background-color: #d8d8d8;
+    border: 1px solid #b2aaa9; }
+  /* line 200, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-selected span {
+    font-weight: bold; }
+  /* line 206, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-today a {
+    border: 1px solid;
+    border-color: darkred; }
+  /* line 214, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-prevday a,
+  table.x-datepicker-inner .x-datepicker-nextday a {
+    text-decoration: none !important;
+    color: #aaa; }
+  /* line 221, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner a:hover,
+  table.x-datepicker-inner .x-datepicker-disabled a:hover {
+    text-decoration: none !important;
+    color: #000;
+    background-color: transparent; }
+  /* line 229, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-disabled a {
+    cursor: default;
+    background-color: #eee;
+    color: #bbb; }
+
+/* line 237, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-footer,
+.x-monthpicker-buttons {
+  position: relative;
+  border-top: 1px solid #d0d0d0;
+  background-image: none;
+  background-color: #e9e9e9;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dfdfdf), color-stop(49%, #d6d6d6), color-stop(51%, #d0d0d0), color-stop(100%, #d2d2d2));
+  background-image: -webkit-linear-gradient(top, #dfdfdf, #d6d6d6 49%, #d0d0d0 51%, #d2d2d2);
+  background-image: -moz-linear-gradient(top, #dfdfdf, #d6d6d6 49%, #d0d0d0 51%, #d2d2d2);
+  background-image: -o-linear-gradient(top, #dfdfdf, #d6d6d6 49%, #d0d0d0 51%, #d2d2d2);
+  background-image: -ms-linear-gradient(top, #dfdfdf, #d6d6d6 49%, #d0d0d0 51%, #d2d2d2);
+  background-image: linear-gradient(top, #dfdfdf, #d6d6d6 49%, #d0d0d0 51%, #d2d2d2);
+  text-align: center; }
+  /* line 250, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-footer .x-btn,
+  .x-monthpicker-buttons .x-btn {
+    position: relative;
+    margin: 4px; }
+
+/* line 256, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-item-disabled .x-datepicker-inner a:hover {
+  background: none; }
+
+/* line 261, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker .x-monthpicker {
+  position: absolute;
+  left: 0;
+  top: 0; }
+
+/* line 268, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker {
+  border: 1px solid #585858;
+  background-color: white; }
+
+/* line 274, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-months,
+.x-monthpicker-years {
+  float: left;
+  height: 167px;
+  width: 88px; }
+
+/* line 281, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-item {
+  float: left;
+  margin: 4px 0 5px 0;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  text-align: center;
+  vertical-align: middle;
+  height: 18px;
+  width: 43px;
+  border: 0 none; }
+  /* line 295, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-monthpicker-item a {
+    display: block;
+    margin: 0 5px;
+    text-decoration: none;
+    color: #523a39;
+    border: 1px solid white;
+    line-height: 17px; }
+    /* line 308, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-monthpicker-item a:hover {
+      background-color: transparent; }
+    /* line 312, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-monthpicker-item a.x-monthpicker-selected {
+      background-color: #e9e9e9;
+      border: 1px solid #b2aaa9; }
+
+/* line 319, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-months {
+  border-right: 1px solid #585858;
+  width: 87px; }
+
+/* line 324, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-years .x-monthpicker-item {
+  width: 44px; }
+
+/* line 328, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav {
+  height: 28px; }
+  /* line 331, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-monthpicker-yearnav button {
+    background-image: url('../../resources/themes/images/gray/tools/tool-sprites.gif');
+    height: 15px;
+    width: 15px;
+    padding: 0;
+    margin: 6px 12px 5px 15px;
+    border: 0;
+    outline: 0 none; }
+    /* line 339, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-monthpicker-yearnav button::-moz-focus-inner {
+      border: 0;
+      padding: 0; }
+
+/* line 346, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-next {
+  background-position: 0 -120px; }
+
+/* line 350, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-next-over {
+  cursor: pointer;
+  cursor: hand;
+  background-position: -15px -120px; }
+
+/* line 356, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-prev {
+  background-position: 0 -105px; }
+
+/* line 360, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-prev-over {
+  cursor: pointer;
+  cursor: hand;
+  background-position: -15px -105px; }
+
+/* line 367, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-small .x-monthpicker-item {
+  margin: 2px 0 2px 0; }
+/* line 371, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-small .x-monthpicker-yearnav {
+  height: 23px; }
+/* line 375, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-small .x-monthpicker-months, .x-monthpicker-small .x-monthpicker-years {
+  height: 136px; }
+
+/* line 385, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-quirks .x-ie7 .x-monthpicker-buttons .x-btn,
+.x-quirks .x-ie8 .x-monthpicker-buttons .x-btn {
+  margin-top: 2px; }
+/* line 391, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-quirks .x-monthpicker-small .x-monthpicker-yearnav button {
+  margin-top: 3px;
+  margin-bottom: 3px; }
+
+/* line 397, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-ie6 .x-monthpicker-small .x-monthpicker-yearnav button {
+  margin-top: 3px;
+  margin-bottom: 3px; }
+
+/* line 407, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-nlg .x-datepicker-header {
+  background-image: url('../../resources/themes/images/gray/datepicker/datepicker-header-bg.gif');
+  background-repeat: repeat-x;
+  background-position: top left; }
+/* line 416, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-nlg .x-datepicker-footer,
+.x-nlg .x-monthpicker-buttons {
+  background-image: url('../../resources/themes/images/gray/datepicker/datepicker-footer-bg.gif');
+  background-repeat: repeat-x;
+  background-position: top left; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker {
+  width: 144px;
+  height: 90px;
+  cursor: pointer; }
+
+/* line 12, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker a {
+  border: 1px solid #fff;
+  float: left;
+  padding: 2px;
+  text-decoration: none;
+  -moz-outline: 0 none;
+  outline: 0 none;
+  cursor: pointer; }
+
+/* line 28, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker a:hover,
+.x-color-picker a.x-color-picker-selected {
+  border-color: #8bb8f3;
+  background-color: #deecfd; }
+
+/* line 33, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker em {
+  display: block;
+  border: 1px solid #aca899; }
+
+/* line 39, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker em span {
+  cursor: pointer;
+  display: block;
+  height: 10px;
+  width: 10px;
+  line-height: 10px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-body {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  background: #f0f0f0 !important;
+  padding: 2px; }
+
+/* line 12, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item .x-form-text {
+  user-select: text;
+  -webkit-user-select: text;
+  -o-user-select: text;
+  -ie-user-select: text;
+  -moz-user-select: text;
+  -ie-user-select: text; }
+
+/* line 21, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-icon-separator {
+  position: absolute;
+  top: 0px;
+  left: 27px;
+  z-index: 0;
+  border-left: solid 1px #e0e0e0;
+  background-color: white;
+  width: 2px;
+  overflow: hidden; }
+
+/* line 33, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-plain .x-menu-icon-separator {
+  display: none; }
+
+/* line 38, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-focus {
+  display: block;
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px; }
+
+/* line 47, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item {
+  white-space: nowrap;
+  overflow: hidden;
+  z-index: 1; }
+
+/* line 53, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-cmp {
+  margin-bottom: 1px; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-link {
+  display: block;
+  margin: 1px;
+  padding: 6px 2px 3px 32px;
+  text-decoration: none !important;
+  line-height: 16px;
+  cursor: default; }
+
+/* line 70, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-opera .x-menu-item-link {
+  position: relative; }
+
+/* line 76, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-icon {
+  width: 16px;
+  height: 16px;
+  position: absolute;
+  top: 5px;
+  left: 4px;
+  background: no-repeat center center; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-icon-right {
+  width: 16px;
+  height: 16px;
+  position: absolute;
+  top: 6px;
+  right: 4px;
+  background: no-repeat center center; }
+
+/* line 96, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-text {
+  font-size: 11px;
+  color: #222222; }
+
+/* line 102, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-checked .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/gray/menu/checked.gif'); }
+/* line 105, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-checked .x-menu-group-icon {
+  background-image: url('../../resources/themes/images/gray/menu/group-checked.gif'); }
+
+/* line 111, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-unchecked .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/gray/menu/unchecked.gif'); }
+/* line 114, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-unchecked .x-menu-group-icon {
+  background-image: none; }
+
+/* line 119, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-separator {
+  height: 2px;
+  border-top: solid 1px #e0e0e0;
+  background-color: white;
+  margin: 2px 0px;
+  overflow: hidden; }
+
+/* line 127, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-arrow {
+  position: absolute;
+  width: 12px;
+  height: 9px;
+  top: 9px;
+  right: 0px;
+  background: no-repeat center center;
+  background-image: url('../../resources/themes/images/gray/menu/menu-parent.gif'); }
+
+/* line 137, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-indent {
+  margin-left: 31px;
+  /* The 2px is the width of the seperator */ }
+
+/* line 141, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-active {
+  cursor: pointer; }
+  /* line 144, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-menu-item-active .x-menu-item-link {
+    background-image: none;
+    background-color: #e6e6e6;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #eeeeee), color-stop(100%, #dcdcdc));
+    background-image: -webkit-linear-gradient(top, #eeeeee, #dcdcdc);
+    background-image: -moz-linear-gradient(top, #eeeeee, #dcdcdc);
+    background-image: -o-linear-gradient(top, #eeeeee, #dcdcdc);
+    background-image: -ms-linear-gradient(top, #eeeeee, #dcdcdc);
+    background-image: linear-gradient(top, #eeeeee, #dcdcdc);
+    margin: 0px;
+    border: 1px solid #9d9d9d;
+    cursor: pointer;
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    -o-border-radius: 3px;
+    -ms-border-radius: 3px;
+    -khtml-border-radius: 3px;
+    border-radius: 3px; }
+
+/* line 153, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+
+/* line 160, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+/* line 164, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-text {
+  background-color: transparent; }
+/* line 171, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-strict .x-ie7m .x-ie .x-menu-icon-separator {
+  width: 1px; }
+/* line 175, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-strict .x-ie7m .x-ie .x-menu-item-separator {
+  height: 1px; }
+
+/* line 184, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-ie6 .x-menu-item-link,
+.x-ie7 .x-menu-item-link,
+.x-quirks .x-ie8 .x-menu-item-link {
+  padding-bottom: 2px; }
+
+/* line 192, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-nlg .x-menu-item-active .x-menu-item-link {
+  background: #e6e6e6 repeat-x left top;
+  background-image: url('../../resources/themes/images/gray/menu/menu-item-active-bg.gif'); }
+
+/* line 199, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-date-item {
+  border-color: #99BBE8; }
+
+/* line 8, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-panel .x-grid-body {
+  background: white;
+  border-color: #d0d0d0;
+  border-style: solid;
+  border-width: 1px;
+  border-top-color: #c5c5c5; }
+/* line 17, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-panel .x-grid-header-ct-hidden {
+  visibility: hidden; }
+
+/* line 22, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-empty {
+  padding: 10px;
+  color: gray;
+  font: normal 11px tahoma, arial, helvetica, sans-serif; }
+
+/* line 28, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-header-hidden .x-grid-body {
+  border-top-color: #d0d0d0 !important; }
+
+/* line 32, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-view {
+  overflow: hidden;
+  position: relative; }
+
+/* line 38, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-table {
+  table-layout: fixed;
+  border-collapse: separate; }
+
+/* line 45, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-autowidth-table table.x-grid-table {
+  table-layout: auto;
+  width: auto!important; }
+
+/* line 50, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row .x-grid-table {
+  border-collapse: collapse; }
+
+/* line 54, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-locked .x-grid-inner-locked {
+  border-width: 0 1px 0 0 !important;
+  border-style: solid; }
+
+/* line 59, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-header-ct {
+  cursor: default;
+  zoom: 1;
+  padding: 0;
+  border: 1px solid #d0d0d0;
+  border-bottom-color: #c5c5c5;
+  background-image: none;
+  background-color: #c5c5c5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f9f9f9), color-stop(100%, #e3e4e6));
+  background-image: -webkit-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -moz-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -o-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -ms-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: linear-gradient(top, #f9f9f9, #e3e4e6); }
+
+/* line 73, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-accordion-item .x-grid-header-ct {
+  border-width: 0 0 1px 0!important; }
+
+/* line 77, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header {
+  padding: 0;
+  position: absolute;
+  overflow: hidden;
+  border-right: 1px solid #c5c5c5;
+  border-left: 0 none;
+  border-top: 0 none;
+  border-bottom: 0 none;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.3);
+  color: null;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  background-image: none;
+  background-color: #c5c5c5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f9f9f9), color-stop(100%, #e3e4e6));
+  background-image: -webkit-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -moz-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -o-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -ms-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: linear-gradient(top, #f9f9f9, #e3e4e6); }
+
+/* line 99, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-group-header {
+  padding: 0;
+  border-left-width: 0; }
+
+/* line 103, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-group-sub-header {
+  background: transparent;
+  border-top: 1px solid #c5c5c5;
+  border-left-width: 0; }
+
+/* line 109, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-inner {
+  zoom: 1;
+  position: relative;
+  white-space: nowrap;
+  line-height: 15px;
+  padding: 3px 6px 4px; }
+  /* line 116, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-column-header-inner .x-column-header-text {
+    white-space: nowrap; }
+
+/* line 123, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-over,
+.x-column-header-sort-ASC,
+.x-column-header-sort-DESC {
+  border-left-color: #c4c4c4;
+  border-right-color: #c4c4c4;
+  background-image: none;
+  background-color: #c4c4c4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e9e8e8), color-stop(39%, #e9e8e8), color-stop(40%, #dedede), color-stop(100%, #dedede));
+  background-image: -webkit-linear-gradient(top, #e9e8e8, #e9e8e8 39%, #dedede 40%, #dedede);
+  background-image: -moz-linear-gradient(top, #e9e8e8, #e9e8e8 39%, #dedede 40%, #dedede);
+  background-image: -o-linear-gradient(top, #e9e8e8, #e9e8e8 39%, #dedede 40%, #dedede);
+  background-image: -ms-linear-gradient(top, #e9e8e8, #e9e8e8 39%, #dedede 40%, #dedede);
+  background-image: linear-gradient(top, #e9e8e8, #e9e8e8 39%, #dedede 40%, #dedede); }
+
+/* line 135, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-grid-header-ct,
+.x-nlg .x-column-header {
+  background: repeat-x 0 top;
+  background-image: url('../../resources/themes/images/gray/grid/column-header-bg.gif'); }
+/* line 142, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-column-header-over,
+.x-nlg .x-column-header-sort-ASC,
+.x-nlg .x-column-header-sort-DESC {
+  background: #ebf3fd repeat-x 0 top;
+  background-image: url('../../resources/themes/images/gray/grid/column-header-over-bg.gif'); }
+
+/* line 149, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-trigger {
+  display: none;
+  height: 100%;
+  width: 14px;
+  background: no-repeat left center;
+  background-color: #c3daf9;
+  background-image: url('../../resources/themes/images/gray/grid/grid3-hd-btn.gif');
+  position: absolute;
+  right: 0;
+  top: 0;
+  z-index: 2;
+  cursor: pointer; }
+
+/* line 164, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-over .x-column-header-trigger, .x-column-header-open .x-column-header-trigger {
+  display: block; }
+
+/* line 169, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-align-right {
+  text-align: right; }
+  /* line 172, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-column-header-align-right .x-column-header-text {
+    padding-right: 0.5ex;
+    margin-right: 6px; }
+
+/* line 177, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-align-center {
+  text-align: center; }
+
+/* line 180, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-align-left {
+  text-align: left; }
+
+/* line 185, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-sort-ASC .x-column-header-text {
+  padding-right: 16px;
+  background: no-repeat right 6px;
+  background-image: url('../../resources/themes/images/gray/grid/sort_asc.gif'); }
+
+/* line 190, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-sort-DESC .x-column-header-text {
+  padding-right: 16px;
+  background: no-repeat right 6px;
+  background-image: url('../../resources/themes/images/gray/grid/sort_desc.gif'); }
+
+/* line 197, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row {
+  vertical-align: top; }
+  /* line 199, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row .x-grid-cell {
+    color: null;
+    font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+    background-color: white;
+    border-color: #ededed;
+    border-style: solid;
+    border-top-color: #fafafa;
+    border-width: 0; }
+
+/* line 212, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-grid-cell {
+  border-width: 1px 0; }
+
+/* line 216, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-rowwrap-div {
+  border-width: 1px 0;
+  border-color: #ededed;
+  border-style: solid;
+  border-top-color: #fafafa;
+  overflow: hidden; }
+
+/* line 226, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-alt .x-grid-cell,
+.x-grid-row-alt .x-grid-rowwrap-div {
+  background-color: #fafafa; }
+
+/* line 231, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-over .x-grid-cell,
+.x-grid-row-over .x-grid-rowwrap-div {
+  border-color: #dddddd;
+  background-color: #efefef; }
+
+/* line 238, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-focused .x-grid-cell,
+.x-grid-row-focused .x-grid-rowwrap-div {
+  border-color: #dddddd;
+  background-color: #efefef; }
+
+/* line 245, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-selected .x-grid-cell,
+.x-grid-row-selected .x-grid-rowwrap-div {
+  border-style: dotted;
+  border-color: #bfb8b8;
+  background-color: #e0e0e0 !important; }
+
+/* line 254, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-rowwrap-div .x-grid-cell,
+.x-grid-rowwrap-div .x-grid-cell-inner {
+  border-width: 0;
+  background: transparent; }
+
+/* line 261, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-body-hidden {
+  display: none; }
+
+/* line 265, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-rowbody {
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  padding: 4px; }
+  /* line 270, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-rowbody p {
+    margin: 5px 5px 10px 5px; }
+
+/* line 276, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell {
+  overflow: hidden; }
+
+/* line 280, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell-inner {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis;
+  padding: 2px 6px 3px;
+  white-space: nowrap; }
+
+/* line 291, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-grid-cell-inner {
+  line-height: 13px;
+  padding-bottom: 4px; }
+
+/* line 297, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-action-col-cell .x-grid-cell-inner {
+  line-height: 0;
+  padding: 2px; }
+
+/* line 302, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-action-col-cell .x-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 306, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-action-col-cell .x-grid-cell-inner {
+  padding-top: 1px; }
+
+/* line 310, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row .x-grid-cell-special {
+  padding: 0;
+  border-right: 1px solid #c6c6c6;
+  background-image: none;
+  background-color: #f6f6f6;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #f6f6f6), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(left, #f6f6f6, #e9e9e9);
+  background-image: -moz-linear-gradient(left, #f6f6f6, #e9e9e9);
+  background-image: -o-linear-gradient(left, #f6f6f6, #e9e9e9);
+  background-image: -ms-linear-gradient(left, #f6f6f6, #e9e9e9);
+  background-image: linear-gradient(left, #f6f6f6, #e9e9e9); }
+
+/* line 316, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row .x-grid-cell-row-checker {
+  vertical-align: middle; }
+
+/*
+IE6-8 have issues with shrinking the TR to 0px (even w/line-height=0), so we
+use an IE-specific trick to make the row disappear. We cannot do this on any
+other browser, because it is not a non-standard thing to do and those other
+browsers will do whacky things with it.
+*/
+/* line 330, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie6 .x-grid-header-row,
+.x-ie7 .x-grid-header-row,
+.x-quirks .x-ie8 .x-grid-header-row {
+  position: absolute; }
+
+/* line 335, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-selected .x-grid-cell-special {
+  border-right: 1px solid #d4b7b7;
+  background-image: none;
+  background-color: #e0e0e0;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #e0e0e0), color-stop(100%, #d3d3d3));
+  background-image: -webkit-linear-gradient(left, #e0e0e0, #d3d3d3);
+  background-image: -moz-linear-gradient(left, #e0e0e0, #d3d3d3);
+  background-image: -o-linear-gradient(left, #e0e0e0, #d3d3d3);
+  background-image: -ms-linear-gradient(left, #e0e0e0, #d3d3d3);
+  background-image: linear-gradient(left, #e0e0e0, #d3d3d3); }
+
+/* line 341, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-dirty-cell {
+  background-image: url('../../resources/themes/images/gray/grid/dirty.gif');
+  background-position: 0 0;
+  background-repeat: no-repeat; }
+
+/* line 347, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell-selected {
+  background-color: #B8CFEE !important; }
+
+/* line 353, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-grid-cell-special {
+  background-repeat: repeat-y;
+  background-position: top right; }
+/* line 359, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-grid-row .x-grid-cell-special,
+.x-nlg .x-grid-row-over .x-grid-cell-special {
+  background-image: url('../../resources/themes/images/gray/grid/cell-special-bg.gif'); }
+/* line 365, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-grid-row-focused .x-grid-cell-special,
+.x-nlg .x-grid-row-selected .x-grid-cell-special {
+  background-image: url('../../resources/themes/images/gray/grid/cell-special-selected-bg.gif'); }
+
+/* line 371, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-col-lines .x-grid-cell {
+  padding-right: 0;
+  border-right: 1px solid #c6c6c6; }
+
+/* line 378, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,
+.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner {
+  padding-left: 12px;
+  background-image: url('../../resources/themes/images/gray/grid/property-cell-bg.gif');
+  background-repeat: no-repeat;
+  background-position: -16px 2px; }
+
+/* line 388, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,
+.x-grid-with-row-lines.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner {
+  background-position: -16px 1px; }
+
+/* line 394, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-quirks .x-ie .x-grid-row .x-grid-property-name .x-grid-cell-inner {
+  background-position: -16px 2px; }
+
+/* line 399, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-unselectable {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default; }
+
+/* line 403, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-body-hidden {
+  display: none; }
+
+/* line 407, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-collapsed {
+  display: none; }
+
+/* line 413, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-view .x-grid-td-expander {
+  vertical-align: top; }
+
+/* line 418, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-td-expander {
+  background: repeat-y right transparent; }
+
+/* line 424, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-view .x-grid-td-expander .x-grid-cell-inner {
+  padding: 0 !important; }
+
+/* line 430, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-expander {
+  background-image: url('../../resources/themes/images/gray/grid/group-collapse.gif');
+  background-color: transparent;
+  width: 9px;
+  height: 13px;
+  margin-left: 3px;
+  background-repeat: no-repeat;
+  background-position: 0 -2px; }
+
+/* line 444, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-collapsed .x-grid-row-expander {
+  background-image: url('../../resources/themes/images/gray/grid/group-expand.gif'); }
+
+/* line 449, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-resize-marker {
+  position: absolute;
+  z-index: 5;
+  top: 0;
+  width: 1px;
+  background-color: #0f0f0f; }
+
+/* line 459, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.col-move-top,
+.col-move-bottom {
+  width: 9px;
+  height: 9px;
+  position: absolute;
+  top: 0;
+  line-height: 0;
+  font-size: 0;
+  overflow: hidden;
+  z-index: 20000;
+  background: no-repeat left top transparent; }
+
+/* line 471, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.col-move-top {
+  background-image: url('../../resources/themes/images/gray/grid/col-move-top.gif'); }
+
+/* line 475, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.col-move-bottom {
+  background-image: url('../../resources/themes/images/gray/grid/col-move-bottom.gif'); }
+
+/* line 480, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-number {
+  width: 30px; }
+
+/* line 487, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group,
+.x-grid-group-body,
+.x-grid-group-hd {
+  zoom: 1; }
+
+/* line 491, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-hd {
+  padding-top: 6px; }
+  /* line 494, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-group-hd .x-grid-cell-inner {
+    padding: 10px 4px 4px 4px;
+    background: white;
+    border-width: 0 0 2px 0;
+    border-style: solid;
+    border-color: #bcb1b0;
+    cursor: pointer; }
+
+/* line 508, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-hd-collapsible .x-grid-group-title {
+  background: transparent no-repeat 0 -1px;
+  background-image: url('../../resources/themes/images/gray/grid/group-collapse.gif');
+  padding: 0 0 0 14px; }
+
+/* line 515, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-title {
+  color: #616161;
+  font: bold 11px tahoma, arial, verdana, sans-serif; }
+
+/* line 521, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-hd-collapsed .x-grid-group-title {
+  background-image: url('../../resources/themes/images/gray/grid/group-expand.gif'); }
+
+/* line 526, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-collapsed .x-grid-group-body {
+  display: none; }
+
+/* line 530, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-collapsed .x-grid-group-title {
+  background-image: url('../../resources/themes/images/gray/grid/group-expand.gif'); }
+
+/* line 534, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-group-by-icon {
+  background-image: url('../../resources/themes/images/gray/grid/group-by.gif'); }
+
+/* line 538, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-show-groups-icon {
+  background-image: url('../../resources/themes/images/gray/grid/group-by.gif'); }
+
+/* line 542, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-checkbox .x-column-header-inner {
+  padding: 0; }
+
+/* line 546, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell-special .x-grid-cell-inner {
+  padding-left: 4px;
+  padding-right: 4px; }
+
+/* line 552, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-checker,
+.x-column-header-checkbox .x-column-header-text {
+  height: 14px;
+  width: 14px;
+  line-height: 0;
+  background-image: url('../../resources/themes/images/gray/grid/unchecked.gif');
+  background-position: -1px -1px;
+  background-repeat: no-repeat;
+  background-color: transparent; }
+
+/* line 564, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-checkbox .x-column-header-text {
+  display: block;
+  margin: 0 5px; }
+
+/* IE6, IE7, and all IE Quirks mode need line-height to be the same as checkbox height or the header/row height will be too tall */
+/* line 573, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-quirks .x-ie .x-grid-row-checker,
+.x-quirks .x-ie .x-column-header-checkbox .x-column-header-text, .x-ie7m .x-grid-row-checker, .x-ie7m .x-column-header-checkbox .x-column-header-text {
+  line-height: 14px; }
+
+/* line 579, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-hd-checker-on .x-column-header-text {
+  background-image: url('../../resources/themes/images/gray/grid/checked.gif'); }
+
+/* line 583, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell-row-checker .x-grid-cell-inner {
+  padding-top: 4px;
+  padding-bottom: 2px;
+  line-height: 14px; }
+
+/* line 588, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-grid-cell-row-checker .x-grid-cell-inner {
+  padding-top: 3px; }
+
+/* line 591, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-checker {
+  margin-left: 1px;
+  background-position: 50% -2px; }
+
+/* line 598, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-selected .x-grid-row-checker,
+.x-grid-row-checked .x-grid-row-checker {
+  background-image: url('../../resources/themes/images/gray/grid/checked.gif'); }
+
+/* line 603, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-first {
+  background-image: url('../../resources/themes/images/gray/grid/page-first.gif') !important; }
+
+/* line 607, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-loading {
+  background-image: url('../../resources/themes/images/gray/grid/refresh.gif') !important; }
+
+/* line 611, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-last {
+  background-image: url('../../resources/themes/images/gray/grid/page-last.gif') !important; }
+
+/* line 615, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-next {
+  background-image: url('../../resources/themes/images/gray/grid/page-next.gif') !important; }
+
+/* line 619, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-prev {
+  background-image: url('../../resources/themes/images/gray/grid/page-prev.gif') !important; }
+
+/* line 624, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-loading {
+  background-image: url('../../resources/themes/images/gray/grid/refresh-disabled.gif') !important; }
+/* line 628, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-first {
+  background-image: url('../../resources/themes/images/gray/grid/page-first-disabled.gif') !important; }
+/* line 632, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-last {
+  background-image: url('../../resources/themes/images/gray/grid/page-last-disabled.gif') !important; }
+/* line 636, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-next {
+  background-image: url('../../resources/themes/images/gray/grid/page-next-disabled.gif') !important; }
+/* line 640, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-prev {
+  background-image: url('../../resources/themes/images/gray/grid/page-prev-disabled.gif') !important; }
+
+/* line 646, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-hmenu-sort-asc .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/gray/grid/hmenu-asc.gif'); }
+
+/* line 650, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-hmenu-sort-desc .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/gray/grid/hmenu-desc.gif'); }
+
+/* line 654, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-hmenu-lock .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/gray/grid/hmenu-lock.gif'); }
+
+/* line 658, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-hmenu-unlock .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/gray/grid/hmenu-unlock.gif'); }
+
+/* line 662, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-group-by-icon {
+  background-image: url('../../resources/themes/images/gray/grid/group-by.gif'); }
+
+/* line 666, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-cols-icon .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/gray/grid/columns.gif'); }
+
+/* line 670, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-show-groups-icon {
+  background-image: url('../../resources/themes/images/gray/grid/group-by.gif'); }
+
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-drop-indicator {
+  position: absolute;
+  height: 1px;
+  line-height: 0px;
+  background-color: #77BC71;
+  overflow: visible; }
+  /* line 682, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-drop-indicator .x-grid-drop-indicator-left {
+    position: absolute;
+    top: -8px;
+    left: -12px;
+    background-image: url('../../resources/themes/images/gray/grid/dd-insert-arrow-right.png');
+    height: 16px;
+    width: 16px; }
+  /* line 691, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-drop-indicator .x-grid-drop-indicator-right {
+    position: absolute;
+    top: -8px;
+    right: -11px;
+    background-image: url('../../resources/themes/images/gray/grid/dd-insert-arrow-left.png');
+    height: 16px;
+    width: 16px; }
+
+/* line 702, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie6 .x-grid-drop-indicator-left {
+  background-image: url('../../resources/themes/images/gray/grid/dd-insert-arrow-right.gif'); }
+/* line 706, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie6 .x-grid-drop-indicator-right {
+  background-image: url('../../resources/themes/images/gray/grid/dd-insert-arrow-left.gif'); }
+
+/* line 714, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-text {
+  padding: 0 4px; }
+/* line 717, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-cb-wrap {
+  padding-top: 3px; }
+
+/* line 723, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor {
+  position: absolute !important;
+  z-index: 1;
+  zoom: 1;
+  overflow: visible !important; }
+  /* line 729, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-text {
+    padding: 0 2px; }
+  /* line 732, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-cb-wrap {
+    padding-top: 0; }
+  /* line 735, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-checkbox {
+    margin-left: -4px; }
+  /* line 738, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-display-field {
+    font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+    padding-top: 0;
+    padding-left: 2px; }
+  /* line 744, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-panel-body {
+    background-color: #ebe6e6;
+    border-top: 1px solid #d0d0d0 !important;
+    border-bottom: 1px solid #d0d0d0 !important; }
+
+/* line 754, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-cb-wrap, .x-grid-row-editor .x-form-cb-wrap {
+  text-align: center; }
+/* line 757, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-trigger, .x-grid-row-editor .x-form-trigger {
+  height: 19px; }
+/* line 761, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-trigger-wrap .x-form-spinner-up, .x-grid-editor .x-form-trigger-wrap .x-form-spinner-down, .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-up, .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url('../../resources/themes/images/gray/form/spinner-small.gif');
+  height: 10px !important; }
+
+/* line 768, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-text, .x-grid-row-editor .x-form-text {
+  font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+  height: 18px; }
+
+/* line 776, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-border-box .x-grid-editor .x-form-trigger,
+.x-border-box .x-grid-row-editor .x-form-trigger {
+  height: 20px; }
+/* line 779, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-border-box .x-grid-editor .x-form-text,
+.x-border-box .x-grid-row-editor .x-form-text {
+  height: 20px;
+  padding-bottom: 1px; }
+
+/* line 787, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie .x-grid-editor .x-form-text {
+  padding-left: 5px; }
+/* line 790, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie .x-grid-row-editor .x-form-text {
+  padding-left: 3px; }
+
+/* line 796, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie8m .x-grid-editor .x-form-text,
+.x-ie8m .x-grid-row-editor .x-form-text {
+  padding-top: 1px; }
+
+/* line 803, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-strict .x-ie6 .x-grid-editor .x-form-text,
+.x-strict .x-ie6 .x-grid-row-editor .x-form-text,
+.x-strict .x-ie7 .x-grid-editor .x-form-text,
+.x-strict .x-ie7 .x-grid-row-editor .x-form-text {
+  height: 17px; }
+
+/* line 809, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-quirks .x-ie9 .x-grid-editor .x-form-text, .x-quirks .x-ie9 .x-grid-row-editor .x-form-text {
+  line-height: 17px; }
+
+/* line 818, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-opera .x-grid-editor .x-form-text {
+  padding-left: 5px; }
+/* line 821, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-opera .x-grid-row-editor .x-form-text {
+  padding-left: 3px; }
+
+/* line 828, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons {
+  background-color: #ebe6e6;
+  position: absolute;
+  bottom: -31px;
+  padding: 4px;
+  height: 32px; }
+  /* line 835, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-strict .x-ie7m .x-grid-row-editor-buttons {
+    width: 192px;
+    height: 24px; }
+
+/* line 845, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-ml,
+.x-grid-row-editor-buttons-mr,
+.x-grid-row-editor-buttons-bl,
+.x-grid-row-editor-buttons-br,
+.x-grid-row-editor-buttons-bc {
+  position: absolute;
+  overflow: hidden; }
+
+/* line 851, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-bl,
+.x-grid-row-editor-buttons-br {
+  width: 4px;
+  height: 4px;
+  bottom: 0px;
+  background-image: url('../../resources/themes/images/gray/panel/panel-default-framed-corners.gif'); }
+
+/* line 857, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-bl {
+  left: 0px;
+  background-position: 0px -16px; }
+
+/* line 861, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-br {
+  right: 0px;
+  background-position: 0px -20px; }
+
+/* line 866, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-bc {
+  position: absolute;
+  left: 4px;
+  bottom: 0px;
+  width: 192px;
+  height: 1px;
+  background-color: #d0d0d0; }
+
+/* line 876, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-ml,
+.x-grid-row-editor-buttons-mr {
+  height: 27px;
+  width: 1px;
+  top: 1px;
+  background-color: #d0d0d0; }
+
+/* line 882, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-ml {
+  left: 0px; }
+
+/* line 885, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-mr {
+  background-position: 0px -20px;
+  right: 0px; }
+
+/* line 891, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-errors ul {
+  margin-left: 5px; }
+/* line 894, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-errors li {
+  list-style: disc;
+  margin-left: 15px; }
+
+/*misc*/
+/* line 9, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-webkit *:focus {
+  outline: none !important; }
+
+/* line 16, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item {
+  vertical-align: top;
+  table-layout: fixed; }
+
+/* line 26, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-autocontainer-form-item,
+.x-anchor-form-item,
+.x-vbox-form-item,
+.x-checkboxgroup-form-item,
+.x-table-form-item {
+  margin-bottom: 5px; }
+
+/* line 31, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-layout-table {
+  border-collapse: separate;
+  border-spacing: 0 2px; }
+
+/* line 37, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item-body {
+  position: relative; }
+
+/* line 42, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-form-item td {
+  border-top: 1px solid transparent; }
+
+/* line 51, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-ie6 .x-form-layout-table {
+  border-collapse: collapse;
+  border-spacing: 0; }
+/* line 56, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-ie6 .x-form-form-item td {
+  border-top-width: 0; }
+/* line 62, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-ie6 td.x-form-item-pad {
+  height: 5px; }
+
+/* line 68, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-editor .x-form-item-body {
+  padding-bottom: 0; }
+
+/* line 72, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item-label {
+  display: block;
+  padding: 3px 0 0;
+  font-size: 12px;
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default; }
+
+/* line 79, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item-label-top {
+  display: block;
+  zoom: 1;
+  padding: 0 0 5px 0; }
+
+/* line 85, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item-label-right {
+  text-align: right; }
+
+/* line 89, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-invalid-under {
+  padding: 2px 2px 2px 18px;
+  color: #c0272b;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  line-height: 16px;
+  background: no-repeat 0 2px;
+  background-image: url('../../resources/themes/images/gray/form/exclamation.gif'); }
+
+/* line 100, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-invalid-icon {
+  width: 18px;
+  height: 14px;
+  background: no-repeat center center;
+  background-image: url('../../resources/themes/images/gray/form/exclamation.gif');
+  overflow: hidden; }
+  /* line 106, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-form-invalid-icon ul {
+    display: block;
+    width: 18px; }
+    /* line 109, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+    .x-form-invalid-icon ul li {
+      /* prevent inner elements from interfering with QuickTip hovering */
+      display: none; }
+
+/* line 117, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-lbl-top-err-icon {
+  margin-bottom: 4px; }
+
+/* line 7, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-field,
+.x-form-display-field {
+  margin: 0 0 0 0;
+  font: normal 12px tahoma, arial, verdana, sans-serif;
+  color: black; }
+
+/* line 14, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-item-hidden {
+  margin: 0; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-text,
+textarea.x-form-field {
+  padding: 1px 3px;
+  background: repeat-x 0 0;
+  border: 1px solid;
+  background-color: white;
+  background-image: url('../../resources/themes/images/gray/form/text-bg.gif');
+  border-color: #b5b8c8; }
+
+/* line 36, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-text {
+  height: 18px;
+  line-height: 15px;
+  vertical-align: top; }
+
+/* line 43, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-ie8m .x-form-text {
+  line-height: 15px; }
+
+/* line 48, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-border-box .x-form-text {
+  height: 22px; }
+
+/* line 52, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+textarea.x-form-field {
+  color: black;
+  overflow: auto;
+  height: auto;
+  line-height: normal;
+  background: repeat-x 0 0;
+  background-color: white;
+  background-image: url('../../resources/themes/images/gray/form/text-bg.gif');
+  resize: none; }
+
+/* line 65, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-border-box textarea.x-form-field {
+  height: auto; }
+
+/* line 70, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-safari.x-mac textarea.x-form-field {
+  margin-bottom: -2px; }
+
+/* line 76, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-focus,
+textarea.x-form-focus {
+  border-color: #a1a1a1; }
+
+/* line 81, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-invalid-field,
+textarea.x-form-invalid-field {
+  background-color: white;
+  background-image: url('../../resources/themes/images/gray/grid/invalid_line.gif');
+  background-repeat: repeat-x;
+  background-position: bottom;
+  border-color: #cc3300; }
+
+/* line 91, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-item {
+  font: normal 12px tahoma, arial, verdana, sans-serif; }
+
+/* line 95, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-empty-field, textarea.x-form-empty-field {
+  color: gray; }
+
+/* line 100, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-webkit .x-form-empty-field {
+  line-height: 15px; }
+
+/* line 105, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-display-field {
+  padding-top: 3px; }
+
+        /*
+        In oldIE, text inputs get a mysterious extra pixel of spacing above and below.
+        This is targeted at IE6-IE7 (all modes) and IE9+ Quirks mode.
+
+        IE8 quirks on Windows 7 requires this fix, but on
+        IE8 quirks on Windows XP, this is breaks the layout.
+        TODO: Check field input heights in IE8 quirks on Windows Vista.
+
+        Since we can't specifically target a specific version of Windows via CSS, we default to fixing it the XP way, for now.
+        */
+/* line 121, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-quirks .x-ie9p .x-form-text,
+.x-ie7m .x-form-text {
+  margin-top: -1px;
+  margin-bottom: -1px; }
+
+/* line 126, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-ie .x-form-file {
+  height: 23px;
+  line-height: 18px;
+  vertical-align: middle; }
+
+/* line 135, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-field-default-toolbar .x-form-text {
+  height: 16px; }
+
+/* line 139, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-border-box .x-field-default-toolbar .x-form-text {
+  height: 20px; }
+
+/* line 143, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-field-default-toolbar .x-form-item-label-left {
+  padding-left: 4px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset {
+  border: 1px solid #b5b8c8;
+  padding: 10px;
+  margin-bottom: 10px;
+  display: block;
+  /* preserve margins in IE */
+  position: relative; }
+
+/* line 18, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-ie .x-fieldset {
+  padding-top: 0; }
+  /* line 20, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-ie .x-fieldset .x-fieldset-body {
+    padding-top: 10px; }
+
+/* line 25, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-header-checkbox {
+  line-height: 14px; }
+
+/* line 29, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-header {
+  font: 11px/14px bold tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  padding: 0 3px 1px;
+  overflow: hidden; }
+  /* line 35, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-fieldset-header-text {
+    float: left;
+    padding: 1px 0; }
+  /* line 39, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-fieldset-header-text-collapsible {
+    cursor: pointer; }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-form-item,
+  .x-fieldset-header .x-tool {
+    float: left;
+    margin: 1px 0 0 0; }
+  /* line 49, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-form-cb-wrap {
+    padding: 1px 0;
+    font-size: 0;
+    line-height: 0; }
+
+/* line 58, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-with-title .x-fieldset-header-checkbox,
+.x-fieldset-with-title .x-tool {
+  margin-right: 3px; }
+
+/* line 65, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-webkit .x-fieldset-header {
+  -webkit-padding-start: 3px;
+  -webkit-padding-end: 3px; }
+
+/* line 75, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-opera .x-fieldset-with-legend {
+  margin-top: -1px; }
+/* line 78, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-opera.x-mac .x-fieldset-header-text {
+  padding: 2px 0 0; }
+
+/* line 86, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-strict .x-ie8 .x-fieldset-header {
+  margin-bottom: -1px; }
+  /* line 90, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-strict .x-ie8 .x-fieldset-header .x-tool,
+  .x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,
+  .x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox {
+    position: relative;
+    top: -1px; }
+
+/* line 100, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-quirks .x-ie .x-fieldset-header,
+.x-ie8m .x-fieldset-header {
+  padding-left: 1px;
+  padding-right: 1px; }
+
+/* line 108, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-collapsed .x-fieldset-body {
+  display: none; }
+
+/* line 113, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-collapsed {
+  padding-bottom: 0 !important;
+  border-width: 1px 1px 0 1px !important;
+  border-left-color: transparent !important;
+  border-right-color: transparent !important; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-ie6 .x-fieldset-collapsed {
+  border-width: 1px 0 0 0 !important;
+  padding-bottom: 0 !important;
+  margin-left: 1px;
+  margin-right: 1px; }
+
+/* line 130, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-ie .x-fieldset-bwrap {
+  zoom: 1; }
+
+/* IE legend positioning bug */
+/* line 137, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-ie .x-fieldset-noborder legend {
+  position: relative;
+  margin-bottom: 23px; }
+
+/* line 143, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-ie .x-fieldset-noborder legend span {
+  position: absolute;
+  left: 16px; }
+
+/* line 149, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset {
+  overflow: hidden; }
+
+/* line 153, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-bwrap {
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 159, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-body {
+  overflow: hidden; }
+
+/* line 8, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+.x-form-file-wrap .x-form-text {
+  color: #777; }
+/* line 12, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+.x-form-file-wrap .x-form-file-btn {
+  overflow: hidden; }
+/* line 16, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+.x-form-file-wrap .x-form-file-input {
+  position: absolute;
+  top: -4px;
+  right: -2px;
+  height: 30px;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  /* Yes, there's actually a good reason for this...
+   * If the configured buttonText is set to something longer than the default,
+   * then it will quickly exceed the width of the hidden file input's "Browse..."
+   * button, so part of the custom button's clickable area will be covered by
+   * the hidden file input's text box instead. This results in a text-selection
+   * mouse cursor over that part of the button, at least in Firefox, which is
+   * confusing to a user. Giving the hidden file input a huge font-size makes
+   * the native button part very large so it will cover the whole clickable area.
+   */
+  font-size: 100px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-wrap {
+  padding-top: 3px; }
+
+/* line 11, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-checkbox,
+.x-form-radio {
+  vertical-align: -1px;
+  width: 13px;
+  height: 13px;
+  background: no-repeat;
+  background-image: url('../../resources/themes/images/gray/form/checkbox.gif');
+  overflow: hidden;
+  padding: 0;
+  border: 0; }
+  /* line 22, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-form-checkbox::-moz-focus-inner,
+  .x-form-radio::-moz-focus-inner {
+    padding: 0;
+    border: 0; }
+
+/* Hack for IE; causes alignment problem in IE9 standards mode so exclude that */
+/* line 31, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-nbr.x-ie .x-form-checkbox,
+.x-nbr.x-ie .x-form-radio {
+  font-size: 0; }
+
+/* line 38, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-checked .x-form-checkbox,
+.x-form-cb-checked .x-form-radio {
+  background-position: 0 -13px; }
+
+/* Focused */
+/* line 44, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-focus {
+  background-position: -13px 0; }
+
+/* line 48, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-checked .x-form-cb-focus {
+  background-position: -13px -13px; }
+
+/* Radios */
+/* line 54, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-radio {
+  background-image: url('../../resources/themes/images/gray/form/radio.gif'); }
+
+/* boxLabel */
+/* line 59, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-label-before {
+  margin-right: 4px; }
+
+/* line 62, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-label-after {
+  margin-left: 4px; }
+
+/* line 7, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+.x-form-checkboxgroup-body {
+  padding: 1px 4px 1px 4px; }
+
+/* line 12, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+.x-form-invalid .x-form-checkboxgroup-body {
+  border: 1px solid #c30!important;
+  background: transparent repeat-x bottom;
+  background-image: url('../../resources/themes/images/gray/grid/invalid_line.gif');
+  padding: 1px 3px 0 3px; }
+
+/* line 20, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+.x-check-group-alt {
+  background: #d5d5d5;
+  border-top: 1px dotted #b4b4b4;
+  border-bottom: 1px dotted #b4b4b4; }
+
+/* line 27, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+.x-form-check-group-label {
+  color: #333;
+  border-bottom: 1px solid #333;
+  margin: 0 30px 5px 0;
+  padding: 2px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap {
+  vertical-align: top; }
+
+/* line 10, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger {
+  background-image: url('../../resources/themes/images/gray/form/trigger.gif');
+  background-position: 0 0;
+  width: 17px;
+  height: 21px;
+  border-bottom: 1px solid #b5b8c8;
+  cursor: pointer;
+  cursor: hand;
+  overflow: hidden; }
+
+/* line 24, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-border-box .x-form-trigger {
+  height: 22px; }
+
+/* line 28, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger {
+  height: 19px; }
+
+/* line 32, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-border-box .x-field-default-toolbar .x-form-trigger {
+  height: 20px; }
+
+/* line 37, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-over {
+  background-position: -17px 0;
+  border-bottom-color: #a1a1a1; }
+
+/* line 43, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap-focus .x-form-trigger {
+  background-position: -51px 0;
+  border-bottom-color: #a1a1a1; }
+
+/* line 49, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap-focus .x-form-trigger-over {
+  background-position: -68px 0;
+  border-bottom-color: null; }
+
+/* line 58, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-click,
+.x-form-trigger-wrap-focus .x-form-trigger-click {
+  background-position: -34px 0;
+  border-bottom-color: null; }
+
+/* line 66, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-icon {
+  height: 16px;
+  background-repeat: no-repeat;
+  background-position: 7px 6px; }
+
+/* line 74, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-pickerfield-open .x-form-field {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 80, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-pickerfield-open-above .x-form-field {
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  -o-border-bottom-left-radius: 3px;
+  -ms-border-bottom-left-radius: 3px;
+  -khtml-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-arrow-trigger .x-form-trigger-icon {
+  background-image: url('../../resources/themes/images/gray/boundlist/trigger-arrow.png'); }
+
+/* line 92, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-date-trigger {
+  background-image: url('../../resources/themes/images/gray/form/date-trigger.gif'); }
+
+/* line 99, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap .x-form-spinner-up,
+.x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url('../../resources/themes/images/gray/form/spinner.gif');
+  width: 17px !important;
+  height: 11px !important;
+  font-size: 0;
+  /*for IE*/
+  border-bottom: 0; }
+/* line 109, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap .x-form-spinner-down {
+  background-position: 0 -11px; }
+
+/* line 113, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down {
+  background-position: -51px -11px; }
+
+/* line 116, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap .x-form-spinner-down-over {
+  background-position: -17px -11px; }
+
+/* line 119, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down-over {
+  background-position: -68px -11px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap .x-form-spinner-down-click {
+  background-position: -34px -11px; }
+
+/* line 131, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-up,
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url('../../resources/themes/images/gray/form/spinner-small.gif');
+  height: 10px !important; }
+/* line 135, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down {
+  background-position: 0 -10px; }
+/* line 139, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down {
+  background-position: -51px -10px; }
+/* line 142, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-over {
+  background-position: -17px -10px; }
+/* line 145, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down-over {
+  background-position: -68px -10px; }
+/* line 148, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-click {
+  background-position: -34px -10px; }
+
+/* line 154, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-trigger-noedit {
+  cursor: pointer;
+  cursor: hand; }
+
+/* line 160, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-item-disabled .x-trigger-noedit, .x-item-disabled .x-form-trigger {
+  cursor: auto; }
+
+/* line 166, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-clear-trigger {
+  background-image: url('../../resources/themes/images/gray/form/clear-trigger.gif'); }
+
+/* line 169, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-search-trigger {
+  background-image: url('../../resources/themes/images/gray/form/search-trigger.gif'); }
+
+/* line 177, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-quirks .prefixie6 .x-form-trigger-input-cell {
+  height: 22px; }
+/* line 180, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-quirks .prefixie6 .x-field-default-toolbar .x-form-trigger-input-cell {
+  height: 20px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-wrap {
+  border: 1px solid #b5b8c8; }
+  /* line 9, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-html-editor-wrap .x-toolbar {
+    border-top-width: 0;
+    border-left-width: 0;
+    border-right-width: 0; }
+  /* line 15, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-html-editor-wrap textarea {
+    background-color: white; }
+
+/* line 20, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-btn-text {
+  background: transparent no-repeat;
+  background-image: url('../../resources/themes/images/gray/editor/tb-sprite.gif'); }
+
+/* line 26, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-bold,
+.x-menu-item img.x-edit-bold {
+  background-position: 0 0;
+  background-image: url('../../resources/themes/images/gray/editor/tb-sprite.gif'); }
+
+/* line 32, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-italic,
+.x-menu-item img.x-edit-italic {
+  background-position: -16px 0;
+  background-image: url('../../resources/themes/images/gray/editor/tb-sprite.gif'); }
+
+/* line 38, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-underline,
+.x-menu-item img.x-edit-underline {
+  background-position: -32px 0;
+  background-image: url('../../resources/themes/images/gray/editor/tb-sprite.gif'); }
+
+/* line 44, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-forecolor,
+.x-menu-item img.x-edit-forecolor {
+  background-position: -160px 0;
+  background-image: url('../../resources/themes/images/gray/editor/tb-sprite.gif'); }
+
+/* line 50, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-backcolor,
+.x-menu-item img.x-edit-backcolor {
+  background-position: -176px 0;
+  background-image: url('../../resources/themes/images/gray/editor/tb-sprite.gif'); }
+
+/* line 56, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-justifyleft,
+.x-menu-item img.x-edit-justifyleft {
+  background-position: -112px 0;
+  background-image: url('../../resources/themes/images/gray/editor/tb-sprite.gif'); }
+
+/* line 62, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-justifycenter,
+.x-menu-item img.x-edit-justifycenter {
+  background-position: -128px 0;
+  background-image: url('../../resources/themes/images/gray/editor/tb-sprite.gif'); }
+
+/* line 68, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-justifyright,
+.x-menu-item img.x-edit-justifyright {
+  background-position: -144px 0;
+  background-image: url('../../resources/themes/images/gray/editor/tb-sprite.gif'); }
+
+/* line 74, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-insertorderedlist,
+.x-menu-item img.x-edit-insertorderedlist {
+  background-position: -80px 0;
+  background-image: url('../../resources/themes/images/gray/editor/tb-sprite.gif'); }
+
+/* line 80, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-insertunorderedlist,
+.x-menu-item img.x-edit-insertunorderedlist {
+  background-position: -96px 0;
+  background-image: url('../../resources/themes/images/gray/editor/tb-sprite.gif'); }
+
+/* line 86, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-increasefontsize,
+.x-menu-item img.x-edit-increasefontsize {
+  background-position: -48px 0;
+  background-image: url('../../resources/themes/images/gray/editor/tb-sprite.gif'); }
+
+/* line 92, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-decreasefontsize,
+.x-menu-item img.x-edit-decreasefontsize {
+  background-position: -64px 0;
+  background-image: url('../../resources/themes/images/gray/editor/tb-sprite.gif'); }
+
+/* line 98, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-sourceedit,
+.x-menu-item img.x-edit-sourceedit {
+  background-position: -192px 0;
+  background-image: url('../../resources/themes/images/gray/editor/tb-sprite.gif'); }
+
+/* line 104, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-createlink,
+.x-menu-item img.x-edit-createlink {
+  background-position: -208px 0;
+  background-image: url('../../resources/themes/images/gray/editor/tb-sprite.gif'); }
+
+/* line 109, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tip .x-tip-bd .x-tip-bd-inner {
+  padding: 5px;
+  padding-bottom: 1px; }
+
+/* line 115, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-toolbar {
+  position: static !important; }
+/* line 118, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-font-select {
+  font-size: 11px; }
+
+/* line 123, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-wrap textarea {
+  border: 0;
+  padding: 3px 2px;
+  overflow: auto; }
+
+/* line 7, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel,
+.x-plain {
+  overflow: hidden;
+  position: relative; }
+
+/* line 24, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-ie .x-panel-header,
+.x-ie .x-panel-header-tl,
+.x-ie .x-panel-header-tc,
+.x-ie .x-panel-header-tr,
+.x-ie .x-panel-header-ml,
+.x-ie .x-panel-header-mc,
+.x-ie .x-panel-header-mr,
+.x-ie .x-panel-header-bl,
+.x-ie .x-panel-header-bc,
+.x-ie .x-panel-header-br {
+  zoom: 1; }
+
+/* line 30, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-ie8 td.x-frame-mc {
+  vertical-align: top; }
+
+/* line 37, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-horizontal {
+  padding: 3px 5px 4px; }
+
+/* line 40, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-vertical {
+  padding: 5px 4px; }
+
+/* line 45, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-icon,
+.x-window-header-icon {
+  width: 16px;
+  height: 16px;
+  background-repeat: no-repeat;
+  background-position: 0 0;
+  vertical-align: middle;
+  margin-right: 4px; }
+
+/* line 56, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-vertical .x-panel-header-icon,
+.x-vertical .x-window-header-icon {
+  margin: 0 0 4px; }
+
+/* line 64, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-draggable,
+.x-panel-header-draggable .x-panel-header-text,
+.x-window-header-draggable,
+.x-window-header-draggable .x-window-header-text {
+  cursor: move; }
+
+/* line 70, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-ghost, .x-window-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+  opacity: 0.65;
+  cursor: move; }
+
+/* line 76, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-horizontal .x-panel-header-body, .x-panel-header-horizontal .x-window-header-body, .x-panel-header-horizontal .x-btn-group-header-body, .x-window-header-horizontal .x-panel-header-body, .x-window-header-horizontal .x-window-header-body, .x-window-header-horizontal .x-btn-group-header-body, .x-btn-group-header-horizontal .x-panel-header-body, .x-btn-group-header-horizontal .x-window-header-body, .x-btn-group-header-horizontal .x-btn-group-header-body {
+  width: 100%; }
+
+/* line 82, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-vertical .x-panel-header-body, .x-panel-header-vertical .x-window-header-body, .x-panel-header-vertical .x-btn-group-header-body, .x-window-header-vertical .x-panel-header-body, .x-window-header-vertical .x-window-header-body, .x-window-header-vertical .x-btn-group-header-body, .x-btn-group-header-vertical .x-panel-header-body, .x-btn-group-header-vertical .x-window-header-body, .x-btn-group-header-vertical .x-btn-group-header-body {
+  height: 100%; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-text-container {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis; }
+
+/* line 93, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-text {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  white-space: nowrap; }
+
+/* line 100, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-left .x-vml-base,
+.x-panel-header-right .x-vml-base {
+  left: -3px !important; }
+
+/* line 106, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-body {
+  overflow: hidden;
+  position: relative;
+  font-size: 12px; }
+
+/* line 114, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-vertical .x-surface {
+  padding-left: 1px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-opera .x-panel-header-vertical .x-surface,
+.x-strict .x-ie9 .x-panel-header-vertical .x-surface {
+  padding-left: 2px; }
+
+/* line 129, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-collapsed-border-top {
+  border-bottom-width: 1px !important; }
+/* line 132, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-collapsed-border-right {
+  border-left-width: 1px !important; }
+/* line 135, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-collapsed-border-bottom {
+  border-top-width: 1px !important; }
+/* line 138, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-collapsed-border-left {
+  border-right-width: 1px !important; }
+
+/* line 145, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-vertical .x-frame-mc {
+  background-repeat: repeat-y; }
+
+/* line 248, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-default {
+  border-color: #d0d0d0; }
+
+/* line 253, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default {
+  font-size: 11px;
+  border-color: #d0d0d0;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -ms-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(top, #f0f0f0, #d7d7d7);
+  -moz-box-shadow: #efeded 0 1px 0px 0 inset;
+  -webkit-box-shadow: #efeded 0 1px 0px 0 inset;
+  -o-box-shadow: #efeded 0 1px 0px 0 inset;
+  box-shadow: #efeded 0 1px 0px 0 inset; }
+
+/* line 277, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-top {
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-top-bg.gif'); }
+
+/* line 281, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-bottom {
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-bottom-bg.gif'); }
+
+/* line 285, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-left {
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-left-bg.gif'); }
+
+/* line 289, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-right {
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-right-bg.gif'); }
+
+/* line 293, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-right {
+  background-position: top right; }
+
+/* line 297, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-bottom {
+  background-position: bottom left; }
+
+/* line 338, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-text-default {
+  color: #333333;
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 17px; }
+
+/* line 348, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-body-default {
+  background: white;
+  border-color: #d0d0d0;
+  color: black;
+  border-width: 1px;
+  border-style: solid; }
+
+/* line 363, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-window-header-default,
+.x-panel-collapsed .x-panel-header-default {
+  border-color: #d0d0d0; }
+
+/* line 368, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-vertical {
+  border-color: #d0d0d0; }
+
+/* line 375, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-left,
+.x-panel-header-default-right {
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -ms-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(right, #f0f0f0, #d7d7d7); }
+
+/* line 416, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-top {
+  -moz-border-radius-bottomleft: null;
+  -webkit-border-bottom-left-radius: null;
+  -o-border-bottom-left-radius: null;
+  -ms-border-bottom-left-radius: null;
+  -khtml-border-bottom-left-radius: null;
+  border-bottom-left-radius: null;
+  -moz-border-radius-bottomright: null;
+  -webkit-border-bottom-right-radius: null;
+  -o-border-bottom-right-radius: null;
+  -ms-border-bottom-right-radius: null;
+  -khtml-border-bottom-right-radius: null;
+  border-bottom-right-radius: null; }
+/* line 420, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-right {
+  -moz-border-radius-topleft: null;
+  -webkit-border-top-left-radius: null;
+  -o-border-top-left-radius: null;
+  -ms-border-top-left-radius: null;
+  -khtml-border-top-left-radius: null;
+  border-top-left-radius: null;
+  -moz-border-radius-bottomleft: null;
+  -webkit-border-bottom-left-radius: null;
+  -o-border-bottom-left-radius: null;
+  -ms-border-bottom-left-radius: null;
+  -khtml-border-bottom-left-radius: null;
+  border-bottom-left-radius: null; }
+/* line 424, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-bottom {
+  -moz-border-radius-topleft: null;
+  -webkit-border-top-left-radius: null;
+  -o-border-top-left-radius: null;
+  -ms-border-top-left-radius: null;
+  -khtml-border-top-left-radius: null;
+  border-top-left-radius: null;
+  -moz-border-radius-topright: null;
+  -webkit-border-top-right-radius: null;
+  -o-border-top-right-radius: null;
+  -ms-border-top-right-radius: null;
+  -khtml-border-top-right-radius: null;
+  border-top-right-radius: null; }
+/* line 428, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-left {
+  -moz-border-radius-topright: null;
+  -webkit-border-top-right-radius: null;
+  -o-border-top-right-radius: null;
+  -ms-border-top-right-radius: null;
+  -khtml-border-top-right-radius: null;
+  border-top-right-radius: null;
+  -moz-border-radius-bottomright: null;
+  -webkit-border-bottom-right-radius: null;
+  -o-border-bottom-right-radius: null;
+  -ms-border-bottom-right-radius: null;
+  -khtml-border-bottom-right-radius: null;
+  border-bottom-right-radius: null; }
+
+/* line 434, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-top {
+  -moz-box-shadow: #efeded 0 1px 0px 0 inset;
+  -webkit-box-shadow: #efeded 0 1px 0px 0 inset;
+  -o-box-shadow: #efeded 0 1px 0px 0 inset;
+  box-shadow: #efeded 0 1px 0px 0 inset; }
+
+/* line 438, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-right {
+  -moz-box-shadow: #efeded -1px 0 0px 0 inset;
+  -webkit-box-shadow: #efeded -1px 0 0px 0 inset;
+  -o-box-shadow: #efeded -1px 0 0px 0 inset;
+  box-shadow: #efeded -1px 0 0px 0 inset; }
+
+/* line 442, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-bottom {
+  -moz-box-shadow: #efeded 0 -1px 0px 0 inset;
+  -webkit-box-shadow: #efeded 0 -1px 0px 0 inset;
+  -o-box-shadow: #efeded 0 -1px 0px 0 inset;
+  box-shadow: #efeded 0 -1px 0px 0 inset; }
+
+/* line 446, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-left {
+  -moz-box-shadow: #efeded 1px 0 0px 0 inset;
+  -webkit-box-shadow: #efeded 1px 0 0px 0 inset;
+  -o-box-shadow: #efeded 1px 0 0px 0 inset;
+  box-shadow: #efeded 1px 0 0px 0 inset; }
+
+/* line 481, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-right-tc,
+.x-panel-header-default-right-mc,
+.x-panel-header-default-right-bc {
+  background-position: right 0; }
+
+/* line 487, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-bottom-tc,
+.x-panel-header-default-bottom-mc,
+.x-panel-header-default-bottom-bc {
+  background-position: 0 bottom; }
+
+/* line 248, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-default-framed {
+  border-color: #d0d0d0; }
+
+/* line 253, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed {
+  font-size: 11px;
+  border-color: #d0d0d0;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -ms-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(top, #f0f0f0, #d7d7d7);
+  -moz-box-shadow: #efeded 0 1px 0px 0 inset;
+  -webkit-box-shadow: #efeded 0 1px 0px 0 inset;
+  -o-box-shadow: #efeded 0 1px 0px 0 inset;
+  box-shadow: #efeded 0 1px 0px 0 inset; }
+
+/* line 277, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-top {
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-top-bg.gif'); }
+
+/* line 281, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-bottom {
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-bottom-bg.gif'); }
+
+/* line 285, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-left {
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-left-bg.gif'); }
+
+/* line 289, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-right {
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-right-bg.gif'); }
+
+/* line 293, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-right {
+  background-position: top right; }
+
+/* line 297, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-bottom {
+  background-position: bottom left; }
+
+/* line 305, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nbr .x-panel-header-default-framed {
+  background-image: none; }
+
+/* line 317, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-strict .x-ie9 .x-panel-header-default-framed-top,
+.x-nlg.x-opera .x-panel-header-default-framed-top,
+.x-nlg.x-safari .x-panel-header-default-framed-top {
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-top-bg.gif'); }
+/* line 321, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-strict .x-ie9 .x-panel-header-default-framed-bottom,
+.x-nlg.x-opera .x-panel-header-default-framed-bottom,
+.x-nlg.x-safari .x-panel-header-default-framed-bottom {
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-bottom-bg.gif'); }
+/* line 325, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-strict .x-ie9 .x-panel-header-default-framed-left,
+.x-nlg.x-opera .x-panel-header-default-framed-left,
+.x-nlg.x-safari .x-panel-header-default-framed-left {
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-left-bg.gif'); }
+/* line 329, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-strict .x-ie9 .x-panel-header-default-framed-right,
+.x-nlg.x-opera .x-panel-header-default-framed-right,
+.x-nlg.x-safari .x-panel-header-default-framed-right {
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-right-bg.gif'); }
+
+/* line 338, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-text-default-framed {
+  color: #333333;
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 17px; }
+
+/* line 348, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-body-default-framed {
+  background: #f1f1f1;
+  border-color: #d0d0d0;
+  color: black;
+  border-width: 0;
+  border-style: solid; }
+
+/* line 363, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-window-header-default-framed,
+.x-panel-collapsed .x-panel-header-default-framed {
+  border-color: #d0d0d0; }
+
+/* line 368, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-vertical {
+  border-color: #d0d0d0; }
+
+/* line 375, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-left,
+.x-panel-header-default-framed-right {
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -ms-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(right, #f0f0f0, #d7d7d7); }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-default-framed {
+  -moz-border-radius: 4px;
+  -webkit-border-radius: 4px;
+  -o-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -khtml-border-radius: 4px;
+  border-radius: 4px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #f1f1f1; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-default-framed-mc {
+  background-color: #f1f1f1; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1000404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-default-framed-tl,
+.x-nbr .x-panel-default-framed-bl,
+.x-nbr .x-panel-default-framed-tr,
+.x-nbr .x-panel-default-framed-br,
+.x-nbr .x-panel-default-framed-tc,
+.x-nbr .x-panel-default-framed-bc,
+.x-nbr .x-panel-default-framed-ml,
+.x-nbr .x-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/panel/panel-default-framed-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-default-framed-ml,
+.x-nbr .x-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/panel/panel-default-framed-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-default-framed-mc {
+  padding: 1px 1px 1px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-default-framed-tl,
+.x-strict .x-ie7 .x-panel-default-framed-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 5px 4px 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -ms-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(top, #f0f0f0, #d7d7d7); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-top-mc {
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-top-bg.gif');
+  background-color: #d7d2d2; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1000000px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-top-tl,
+.x-nbr .x-panel-header-default-framed-top-bl,
+.x-nbr .x-panel-header-default-framed-top-tr,
+.x-nbr .x-panel-header-default-framed-top-br,
+.x-nbr .x-panel-header-default-framed-top-tc,
+.x-nbr .x-panel-header-default-framed-top-bc,
+.x-nbr .x-panel-header-default-framed-top-ml,
+.x-nbr .x-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-top-ml,
+.x-nbr .x-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-top-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-top-mc {
+  padding: 0px 2px 4px 2px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -ms-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(right, #f0f0f0, #d7d7d7); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-right-mc {
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-right-bg.gif');
+  background-color: #d7d2d2; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000004px 1100400px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-right-tl,
+.x-nbr .x-panel-header-default-framed-right-bl,
+.x-nbr .x-panel-header-default-framed-right-tr,
+.x-nbr .x-panel-header-default-framed-right-br,
+.x-nbr .x-panel-header-default-framed-right-tc,
+.x-nbr .x-panel-header-default-framed-right-bc,
+.x-nbr .x-panel-header-default-framed-right-ml,
+.x-nbr .x-panel-header-default-framed-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-right-corners.gif'); }
+/* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-right-tc,
+.x-nbr .x-panel-header-default-framed-right-bc {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-right-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-x; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-right-mc {
+  padding: 2px 1px 2px 4px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-right-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 3px 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -ms-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(top, #f0f0f0, #d7d7d7); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-bottom-mc {
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-bottom-bg.gif');
+  background-color: #d7d2d2; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000000px 1000404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-bottom-tl,
+.x-nbr .x-panel-header-default-framed-bottom-bl,
+.x-nbr .x-panel-header-default-framed-bottom-tr,
+.x-nbr .x-panel-header-default-framed-bottom-br,
+.x-nbr .x-panel-header-default-framed-bottom-tc,
+.x-nbr .x-panel-header-default-framed-bottom-bc,
+.x-nbr .x-panel-header-default-framed-bottom-ml,
+.x-nbr .x-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-bottom-ml,
+.x-nbr .x-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-bottom-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-bottom-mc {
+  padding: 3px 2px 1px 2px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -ms-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(right, #f0f0f0, #d7d7d7); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-left-mc {
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-left-bg.gif');
+  background-color: #d7d2d2; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000400px 1100004px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-left-tl,
+.x-nbr .x-panel-header-default-framed-left-bl,
+.x-nbr .x-panel-header-default-framed-left-tr,
+.x-nbr .x-panel-header-default-framed-left-br,
+.x-nbr .x-panel-header-default-framed-left-tc,
+.x-nbr .x-panel-header-default-framed-left-bc,
+.x-nbr .x-panel-header-default-framed-left-ml,
+.x-nbr .x-panel-header-default-framed-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-left-corners.gif'); }
+/* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-left-tc,
+.x-nbr .x-panel-header-default-framed-left-bc {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-left-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-x; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-left-mc {
+  padding: 2px 4px 2px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-left-bl {
+  position: relative;
+  right: 0; }
+
+/* line 399, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-top {
+  -moz-box-shadow: #efeded 0 1px 0px 0 inset, #efeded -1px 0 0px 0 inset, #efeded 1px 0 0px 0 inset;
+  -webkit-box-shadow: #efeded 0 1px 0px 0 inset, #efeded -1px 0 0px 0 inset, #efeded 1px 0 0px 0 inset;
+  -o-box-shadow: #efeded 0 1px 0px 0 inset, #efeded -1px 0 0px 0 inset, #efeded 1px 0 0px 0 inset;
+  box-shadow: #efeded 0 1px 0px 0 inset, #efeded -1px 0 0px 0 inset, #efeded 1px 0 0px 0 inset; }
+
+/* line 403, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-right {
+  -moz-box-shadow: #efeded 0 1px 0px 0 inset, #efeded 0 -1px 0px 0 inset, #efeded -1px 0 0px 0 inset;
+  -webkit-box-shadow: #efeded 0 1px 0px 0 inset, #efeded 0 -1px 0px 0 inset, #efeded -1px 0 0px 0 inset;
+  -o-box-shadow: #efeded 0 1px 0px 0 inset, #efeded 0 -1px 0px 0 inset, #efeded -1px 0 0px 0 inset;
+  box-shadow: #efeded 0 1px 0px 0 inset, #efeded 0 -1px 0px 0 inset, #efeded -1px 0 0px 0 inset; }
+
+/* line 407, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-bottom {
+  -moz-box-shadow: #efeded 0 -1px 0px 0 inset, #efeded -1px 0 0px 0 inset, #efeded 1px 0 0px 0 inset;
+  -webkit-box-shadow: #efeded 0 -1px 0px 0 inset, #efeded -1px 0 0px 0 inset, #efeded 1px 0 0px 0 inset;
+  -o-box-shadow: #efeded 0 -1px 0px 0 inset, #efeded -1px 0 0px 0 inset, #efeded 1px 0 0px 0 inset;
+  box-shadow: #efeded 0 -1px 0px 0 inset, #efeded -1px 0 0px 0 inset, #efeded 1px 0 0px 0 inset; }
+
+/* line 411, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-left {
+  -moz-box-shadow: #efeded 0 1px 0px 0 inset, #efeded 0 -1px 0px 0 inset, #efeded 1px 0 0px 0 inset;
+  -webkit-box-shadow: #efeded 0 1px 0px 0 inset, #efeded 0 -1px 0px 0 inset, #efeded 1px 0 0px 0 inset;
+  -o-box-shadow: #efeded 0 1px 0px 0 inset, #efeded 0 -1px 0px 0 inset, #efeded 1px 0 0px 0 inset;
+  box-shadow: #efeded 0 1px 0px 0 inset, #efeded 0 -1px 0px 0 inset, #efeded 1px 0 0px 0 inset; }
+
+/* line 452, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel .x-panel-header-default-framed-top {
+  border-bottom-width: 1px !important; }
+
+/* line 456, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel .x-panel-header-default-framed-right {
+  border-left-width: 1px !important; }
+
+/* line 460, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel .x-panel-header-default-framed-bottom {
+  border-top-width: 1px !important; }
+
+/* line 464, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel .x-panel-header-default-framed-left {
+  border-right-width: 1px !important; }
+
+/* line 468, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-collapsed {
+  -moz-border-radius: 4px;
+  -webkit-border-radius: 4px;
+  -o-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -khtml-border-radius: 4px;
+  border-radius: 4px; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-collapsed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 3px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -ms-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(top, #f0f0f0, #d7d7d7); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-top-mc {
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-top-bg.gif');
+  background-color: #d7d2d2; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1000404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top-tl,
+.x-nbr .x-panel-header-default-framed-collapsed-top-bl,
+.x-nbr .x-panel-header-default-framed-collapsed-top-tr,
+.x-nbr .x-panel-header-default-framed-collapsed-top-br,
+.x-nbr .x-panel-header-default-framed-collapsed-top-tc,
+.x-nbr .x-panel-header-default-framed-collapsed-top-bc,
+.x-nbr .x-panel-header-default-framed-collapsed-top-ml,
+.x-nbr .x-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top-ml,
+.x-nbr .x-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-top-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top-mc {
+  padding: 0px 2px 1px 2px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-collapsed-right {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -ms-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(right, #f0f0f0, #d7d7d7); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-right-mc {
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-right-bg.gif');
+  background-color: #d7d2d2; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1100404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right-tl,
+.x-nbr .x-panel-header-default-framed-collapsed-right-bl,
+.x-nbr .x-panel-header-default-framed-collapsed-right-tr,
+.x-nbr .x-panel-header-default-framed-collapsed-right-br,
+.x-nbr .x-panel-header-default-framed-collapsed-right-tc,
+.x-nbr .x-panel-header-default-framed-collapsed-right-bc,
+.x-nbr .x-panel-header-default-framed-collapsed-right-ml,
+.x-nbr .x-panel-header-default-framed-collapsed-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-right-corners.gif'); }
+/* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right-tc,
+.x-nbr .x-panel-header-default-framed-collapsed-right-bc {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-right-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-x; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right-mc {
+  padding: 2px 1px 2px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-collapsed-bottom {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 3px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: -ms-linear-gradient(top, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(top, #f0f0f0, #d7d7d7); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-bottom-mc {
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif');
+  background-color: #d7d2d2; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1000404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-tl,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-bl,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-tr,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-br,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-tc,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-bc,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-mc {
+  padding: 0px 2px 1px 2px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-collapsed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #d7d2d2;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #f0f0f0), color-stop(100%, #d7d7d7));
+  background-image: -webkit-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -moz-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -o-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: -ms-linear-gradient(right, #f0f0f0, #d7d7d7);
+  background-image: linear-gradient(right, #f0f0f0, #d7d7d7); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-left-mc {
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-left-bg.gif');
+  background-color: #d7d2d2; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1100404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left-tl,
+.x-nbr .x-panel-header-default-framed-collapsed-left-bl,
+.x-nbr .x-panel-header-default-framed-collapsed-left-tr,
+.x-nbr .x-panel-header-default-framed-collapsed-left-br,
+.x-nbr .x-panel-header-default-framed-collapsed-left-tc,
+.x-nbr .x-panel-header-default-framed-collapsed-left-bc,
+.x-nbr .x-panel-header-default-framed-collapsed-left-ml,
+.x-nbr .x-panel-header-default-framed-collapsed-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-left-corners.gif'); }
+/* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left-tc,
+.x-nbr .x-panel-header-default-framed-collapsed-left-bc {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-left-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-x; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left-mc {
+  padding: 2px 1px 2px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl {
+  position: relative;
+  right: 0; }
+
+/* line 481, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-right-tc,
+.x-panel-header-default-framed-right-mc,
+.x-panel-header-default-framed-right-bc {
+  background-position: right 0; }
+
+/* line 487, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-bottom-tc,
+.x-panel-header-default-framed-bottom-mc,
+.x-panel-header-default-framed-bottom-bc {
+  background-position: 0 bottom; }
+
+/* line 197, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-plain,
+.x-panel-body-plain {
+  border: 0;
+  padding: 0; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip {
+  position: absolute;
+  overflow: visible;
+  /*pointer needs to be able to stick out*/
+  border-color: #868686; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-tip .x-tip-header .x-box-item {
+    padding: 3px 3px 0; }
+  /* line 16, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-tip .x-tip-header .x-tool {
+    padding: 0px 1px 0 0 !important; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-tip {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #cccccc; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-tip-mc {
+  background-color: #cccccc; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tip {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tip-tl,
+.x-nbr .x-tip-bl,
+.x-nbr .x-tip-tr,
+.x-nbr .x-tip-br,
+.x-nbr .x-tip-tc,
+.x-nbr .x-tip-bc,
+.x-nbr .x-tip-ml,
+.x-nbr .x-tip-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/tip/tip-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tip-ml,
+.x-nbr .x-tip-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/tip/tip-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tip-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-tip-tl,
+.x-strict .x-ie7 .x-tip-bl {
+  position: relative;
+  right: 0; }
+
+/* line 31, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-header-text {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  color: #444444;
+  font-size: 11px;
+  font-weight: bold; }
+
+/* line 40, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-header-draggable .x-tip-header-text {
+  cursor: move; }
+
+/* line 47, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-body,
+.x-form-invalid-tip-body {
+  overflow: hidden;
+  position: relative;
+  padding: 3px; }
+
+/* line 55, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-header,
+.x-tip-body,
+.x-form-invalid-tip-body {
+  color: #444444;
+  font-size: 11px;
+  font-weight: normal; }
+  /* line 59, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-tip-header a,
+  .x-tip-body a,
+  .x-form-invalid-tip-body a {
+    color: #2a2a2a; }
+
+/* line 64, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  height: 0;
+  width: 0;
+  border-style: solid;
+  border-width: 5px;
+  border-color: #868686;
+  zoom: 1; }
+
+/* line 79, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-border-box .x-tip-anchor {
+  width: 10px;
+  height: 10px; }
+
+/* line 84, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor-top {
+  border-top-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 97, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor-bottom {
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 110, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor-left {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 123, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor-right {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 137, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-form-invalid-tip {
+  border-color: #a1311f;
+  -moz-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  -webkit-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  -o-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset; }
+
+/* line 146, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-form-invalid-tip-body {
+  background: 1px 1px no-repeat;
+  background-image: url('../../resources/themes/images/gray/form/exclamation.gif');
+  padding-left: 22px; }
+  /* line 151, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-form-invalid-tip-body li {
+    margin-bottom: 4px; }
+    /* line 153, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+    .x-form-invalid-tip-body li.last {
+      margin-bottom: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-form-invalid-tip-default {
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  -o-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -khtml-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: white; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-form-invalid-tip-default-mc {
+  background-color: white; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-form-invalid-tip-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-form-invalid-tip-default-tl,
+.x-nbr .x-form-invalid-tip-default-bl,
+.x-nbr .x-form-invalid-tip-default-tr,
+.x-nbr .x-form-invalid-tip-default-br,
+.x-nbr .x-form-invalid-tip-default-tc,
+.x-nbr .x-form-invalid-tip-default-bc,
+.x-nbr .x-form-invalid-tip-default-ml,
+.x-nbr .x-form-invalid-tip-default-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/form-invalid-tip/form-invalid-tip-default-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-form-invalid-tip-default-ml,
+.x-nbr .x-form-invalid-tip-default-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/form-invalid-tip/form-invalid-tip-default-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-form-invalid-tip-default-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-form-invalid-tip-default-tl,
+.x-strict .x-ie7 .x-form-invalid-tip-default-bl {
+  position: relative;
+  right: 0; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider {
+  zoom: 1; }
+
+/* line 10, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-inner {
+  position: relative;
+  left: 0;
+  top: 0;
+  overflow: visible;
+  zoom: 1; }
+
+/* line 18, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-focus {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px;
+  line-height: 1px;
+  font-size: 1px;
+  -moz-outline: 0 none;
+  outline: 0 none;
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  display: block;
+  overflow: hidden; }
+
+/* Horizontal styles */
+/* line 34, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz {
+  padding-left: 7px;
+  background: transparent no-repeat 0 -24px;
+  width: 100%; }
+
+/* line 40, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-end {
+  padding-right: 7px;
+  zoom: 1;
+  background: transparent no-repeat right -46px; }
+
+/* line 46, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-inner {
+  background: transparent repeat-x 0 -2px;
+  height: 18px; }
+
+/* line 51, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb {
+  width: 14px;
+  height: 15px;
+  margin-left: -7px;
+  position: absolute;
+  left: 0;
+  top: 1px;
+  background: transparent no-repeat 0 0; }
+
+/* line 61, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb-over {
+  background-position: -14px -15px; }
+
+/* line 65, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb-drag {
+  background-position: -28px -30px; }
+
+/* Vertical styles */
+/* line 70, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert {
+  padding-top: 7px;
+  background: transparent no-repeat -44px 0; }
+
+/* line 75, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-end {
+  padding-bottom: 7px;
+  zoom: 1;
+  background: transparent no-repeat -22px bottom;
+  width: 22px; }
+
+/* line 82, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-inner {
+  background: transparent repeat-y 0 0;
+  width: 22px; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb {
+  width: 15px;
+  height: 14px;
+  margin-bottom: -7px;
+  position: absolute;
+  left: 3px;
+  bottom: 0;
+  background: transparent no-repeat 0 0; }
+
+/* line 97, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb-over {
+  background-position: -15px -14px; }
+
+/* line 101, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb-drag {
+  background-position: -30px -28px; }
+
+/* line 107, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz,
+.x-slider-horz .x-slider-end,
+.x-slider-horz .x-slider-inner {
+  background-image: url('../../resources/themes/images/gray/slider/slider-bg.png'); }
+
+/* line 111, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb {
+  background-image: url('../../resources/themes/images/gray/slider/slider-thumb.png'); }
+
+/* line 117, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert,
+.x-slider-vert .x-slider-end,
+.x-slider-vert .x-slider-inner {
+  background-image: url('../../resources/themes/images/gray/slider/slider-v-bg.png'); }
+
+/* line 121, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb {
+  background-image: url('../../resources/themes/images/gray/slider/slider-v-thumb.png'); }
+
+/* line 129, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-ie6 .x-slider-horz,
+.x-ie6 .x-slider-horz .x-slider-end,
+.x-ie6 .x-slider-horz .x-slider-inner {
+  background-image: url('../../resources/themes/images/gray/slider/slider-bg.gif'); }
+/* line 133, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-ie6 .x-slider-horz .x-slider-thumb {
+  background-image: url('../../resources/themes/images/gray/slider/slider-thumb.gif'); }
+/* line 139, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-ie6 .x-slider-vert,
+.x-ie6 .x-slider-vert .x-slider-end,
+.x-ie6 .x-slider-vert .x-slider-inner {
+  background-image: url('../../resources/themes/images/gray/slider/slider-v-bg.gif'); }
+/* line 143, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-ie6 .x-slider-vert .x-slider-thumb {
+  background-image: url('../../resources/themes/images/gray/slider/slider-v-thumb.gif'); }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress {
+  position: relative;
+  border-width: 1px;
+  border-style: solid;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0;
+  overflow: hidden;
+  height: 20px; }
+
+/* line 17, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress-bar {
+  height: 18px;
+  overflow: hidden;
+  position: absolute;
+  width: 0;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0;
+  border-right: 1px solid;
+  border-top: 1px solid; }
+
+/* line 30, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress-text {
+  overflow: hidden;
+  position: absolute;
+  padding: 0 5px;
+  height: 18px;
+  font-weight: bold;
+  font-size: 11px;
+  line-height: 16px;
+  text-align: center; }
+
+/* line 45, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress-text-back {
+  padding-top: 1px; }
+
+/* line 50, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-strict .x-ie7m .x-progress {
+  height: 18px; }
+
+/* line 93, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress-default {
+  border-color: #8e8e8e; }
+  /* line 96, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-progress-default .x-progress-bar {
+    border-right-color: #8e8e8e;
+    border-top-color: #cecece;
+    background-image: none;
+    background-color: #ababab;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d1d1d1), color-stop(50%, #b8b8b8), color-stop(51%, #ababab), color-stop(100%, #9e9e9e));
+    background-image: -webkit-linear-gradient(top, #d1d1d1, #b8b8b8 50%, #ababab 51%, #9e9e9e);
+    background-image: -moz-linear-gradient(top, #d1d1d1, #b8b8b8 50%, #ababab 51%, #9e9e9e);
+    background-image: -o-linear-gradient(top, #d1d1d1, #b8b8b8 50%, #ababab 51%, #9e9e9e);
+    background-image: -ms-linear-gradient(top, #d1d1d1, #b8b8b8 50%, #ababab 51%, #9e9e9e);
+    background-image: linear-gradient(top, #d1d1d1, #b8b8b8 50%, #ababab 51%, #9e9e9e); }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-progress-default .x-progress-text {
+    color: white; }
+  /* line 107, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-progress-default .x-progress-text-back {
+    color: #5d5d5d; }
+
+/* line 116, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-nlg .x-progress-default .x-progress-bar {
+  background: repeat-x;
+  background-image: url('../../resources/themes/images/gray/progress/progress-default-bg.gif'); }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar {
+  font-size: 11px;
+  border: 1px solid;
+  padding: 2px 0 2px 2px; }
+  /* line 13, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-form-item-label {
+    font-size: 11px;
+    line-height: 15px; }
+  /* line 18, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-item {
+    margin: 0 2px 0 0; }
+  /* line 22, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-text {
+    margin-left: 4px;
+    margin-right: 6px;
+    white-space: nowrap;
+    color: black;
+    line-height: 16px;
+    font-family: tahoma, arial, verdana, sans-serif;
+    font-size: 11px;
+    font-weight: normal; }
+  /* line 33, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-separator {
+    display: block;
+    font-size: 1px;
+    overflow: hidden;
+    cursor: default;
+    border: 0; }
+  /* line 41, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-separator-horizontal {
+    margin: 0 3px 0 2px;
+    height: 14px;
+    width: 0px;
+    border-left: 1px solid #aca899;
+    border-right: 1px solid white; }
+
+/* line 53, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal {
+  width: 2px; }
+
+/* line 58, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-footer {
+  background: transparent;
+  border: 0px none;
+  margin-top: 3px;
+  padding: 2px 0 2px 6px; }
+  /* line 65, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-footer .x-box-inner {
+    border-width: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-footer .x-toolbar-item {
+    margin: 0 6px 0 0; }
+
+/* line 74, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-vertical {
+  padding: 2px 2px 0 2px; }
+  /* line 77, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-vertical .x-toolbar-item {
+    margin: 0 0 2px 0; }
+  /* line 81, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-vertical .x-toolbar-text {
+    margin-top: 4px;
+    margin-bottom: 6px; }
+  /* line 86, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-vertical .x-toolbar-separator-vertical {
+    margin: 2px 5px 3px 5px;
+    height: 0px;
+    width: 10px;
+    line-height: 0px;
+    border-top: 1px solid #aca899;
+    border-bottom: 1px solid white; }
+
+/* line 98, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-scroller {
+  padding-left: 0; }
+
+/* line 102, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-spacer {
+  width: 2px; }
+
+/* line 107, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-more-icon {
+  background-image: url('../../resources/themes/images/gray/toolbar/more.gif') !important;
+  background-position: 2px center !important;
+  background-repeat: no-repeat; }
+
+/* line 144, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-default {
+  border-color: #d0d0d0;
+  background-image: none;
+  background-color: #d8d8d8;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e6e6e6), color-stop(100%, #efefef));
+  background-image: -webkit-linear-gradient(top, #e6e6e6, #efefef);
+  background-image: -moz-linear-gradient(top, #e6e6e6, #efefef);
+  background-image: -o-linear-gradient(top, #e6e6e6, #efefef);
+  background-image: -ms-linear-gradient(top, #e6e6e6, #efefef);
+  background-image: linear-gradient(top, #e6e6e6, #efefef); }
+
+/* line 155, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-nlg .x-toolbar-default {
+  background-image: url('../../resources/themes/images/gray/toolbar/toolbar-default-bg.gif') !important;
+  background-repeat: repeat-x; }
+
+/* line 123, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-plain {
+  border: 0; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window {
+  outline: none;
+  overflow: hidden; }
+  /* line 10, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-window .x-window-wrap {
+    position: relative; }
+
+/* line 15, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-body {
+  position: relative;
+  border-style: solid;
+  overflow: hidden; }
+
+/* line 24, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-maximized .x-window-wrap .x-window-header {
+  -moz-border-radius: 0 !important;
+  -webkit-border-radius: 0 !important;
+  -o-border-radius: 0 !important;
+  -ms-border-radius: 0 !important;
+  -khtml-border-radius: 0 !important;
+  border-radius: 0 !important; }
+
+/* line 30, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-top {
+  margin-bottom: -2px; }
+
+/* line 33, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-body-horizontal {
+  margin-top: -1px; }
+
+/* line 37, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-bottom {
+  margin-top: -1px;
+  margin-bottom: -1px; }
+
+/* line 42, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-left {
+  margin-right: -1px; }
+
+/* line 46, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-right {
+  margin-left: -1px; }
+
+/* line 51, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-vertical .x-surface {
+  padding-left: 1px; }
+
+/* line 58, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-vertical {
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  -o-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -khtml-border-radius: 5px;
+  border-radius: 5px; }
+/* line 61, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-horizontal {
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  -o-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -khtml-border-radius: 5px;
+  border-radius: 5px; }
+/* line 66, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-left {
+  padding-right: 5px !important;
+  margin-right: 0; }
+/* line 71, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-right {
+  padding-left: 5px !important;
+  margin-left: 0; }
+/* line 76, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-top {
+  padding-bottom: 5px !important;
+  margin-bottom: -1px; }
+/* line 81, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-bottom {
+  padding-top: 5px !important;
+  margin-top: 0; }
+
+/* line 89, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-left .x-vml-base,
+.x-window-header-right .x-vml-base {
+  left: -3px !important; }
+
+/* line 97, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-opera .x-window-header-vertical .x-surface,
+.x-strict .x-ie9 .x-window-header-vertical .x-surface {
+  padding-left: 2px; }
+
+/* line 103, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-text-container {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis; }
+
+/* line 109, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-text {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  white-space: nowrap; }
+
+/* line 159, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-default {
+  border-color: #a9a9a9;
+  -moz-border-radius: 5px 5px;
+  -webkit-border-radius: 5px 5px;
+  -o-border-radius: 5px 5px;
+  -ms-border-radius: 5px 5px;
+  -khtml-border-radius: 5px 5px;
+  border-radius: 5px 5px;
+  -moz-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  -webkit-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  -o-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-default {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #e8e8e8; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-default-mc {
+  background-color: #e8e8e8; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-default-tl,
+.x-nbr .x-window-default-bl,
+.x-nbr .x-window-default-tr,
+.x-nbr .x-window-default-br,
+.x-nbr .x-window-default-tc,
+.x-nbr .x-window-default-bc,
+.x-nbr .x-window-default-ml,
+.x-nbr .x-window-default-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/window/window-default-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-default-ml,
+.x-nbr .x-window-default-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/window/window-default-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-default-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-default-tl,
+.x-strict .x-ie7 .x-window-default-bl {
+  position: relative;
+  right: 0; }
+
+/* line 178, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-body-default {
+  border-color: #bcb1b0;
+  border-width: 1px;
+  background: #e0e0e0;
+  color: black; }
+
+/* line 188, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default {
+  font-size: 11px;
+  border-color: #a9a9a9;
+  zoom: 1; }
+
+/* line 194, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-text-default {
+  color: #333333;
+  font-weight: bold;
+  line-height: 17px;
+  font-family: tahoma, arial, verdana, sans-serif;
+  font-size: 11px; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 5px 0 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #e8e8e8; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-top-mc {
+  background-color: #e8e8e8; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000000px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-top-tl,
+.x-nbr .x-window-header-default-top-bl,
+.x-nbr .x-window-header-default-top-tr,
+.x-nbr .x-window-header-default-top-br,
+.x-nbr .x-window-header-default-top-tc,
+.x-nbr .x-window-header-default-top-bc,
+.x-nbr .x-window-header-default-top-ml,
+.x-nbr .x-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/window-header/window-header-default-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-top-ml,
+.x-nbr .x-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/window-header/window-header-default-top-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-top-mc {
+  padding: 0px 1px 0 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-top-tl,
+.x-strict .x-ie7 .x-window-header-default-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 0;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-color: #e8e8e8; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-right-mc {
+  background-color: #e8e8e8; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000005px 1000500px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-right-tl,
+.x-nbr .x-window-header-default-right-bl,
+.x-nbr .x-window-header-default-right-tr,
+.x-nbr .x-window-header-default-right-br,
+.x-nbr .x-window-header-default-right-tc,
+.x-nbr .x-window-header-default-right-bc,
+.x-nbr .x-window-header-default-right-ml,
+.x-nbr .x-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/window-header/window-header-default-right-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-right-ml,
+.x-nbr .x-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/window-header/window-header-default-right-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-right-mc {
+  padding: 1px 0px 1px 0; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-right-tl,
+.x-strict .x-ie7 .x-window-header-default-right-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 0 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #e8e8e8; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-bottom-mc {
+  background-color: #e8e8e8; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000000px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-bottom-tl,
+.x-nbr .x-window-header-default-bottom-bl,
+.x-nbr .x-window-header-default-bottom-tr,
+.x-nbr .x-window-header-default-bottom-br,
+.x-nbr .x-window-header-default-bottom-tc,
+.x-nbr .x-window-header-default-bottom-bc,
+.x-nbr .x-window-header-default-bottom-ml,
+.x-nbr .x-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/window-header/window-header-default-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-bottom-ml,
+.x-nbr .x-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/window-header/window-header-default-bottom-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-bottom-mc {
+  padding: 0 1px 0px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-bottom-tl,
+.x-strict .x-ie7 .x-window-header-default-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-left {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 0px 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-color: #e8e8e8; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-left-mc {
+  background-color: #e8e8e8; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000500px 1000005px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-left-tl,
+.x-nbr .x-window-header-default-left-bl,
+.x-nbr .x-window-header-default-left-tr,
+.x-nbr .x-window-header-default-left-br,
+.x-nbr .x-window-header-default-left-tc,
+.x-nbr .x-window-header-default-left-bc,
+.x-nbr .x-window-header-default-left-ml,
+.x-nbr .x-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/window-header/window-header-default-left-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-left-ml,
+.x-nbr .x-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/window-header/window-header-default-left-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-left-mc {
+  padding: 1px 0px 1px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-left-tl,
+.x-strict .x-ie7 .x-window-header-default-left-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-collapsed-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #e8e8e8; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-collapsed-top-mc {
+  background-color: #e8e8e8; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-top-tl,
+.x-nbr .x-window-header-default-collapsed-top-bl,
+.x-nbr .x-window-header-default-collapsed-top-tr,
+.x-nbr .x-window-header-default-collapsed-top-br,
+.x-nbr .x-window-header-default-collapsed-top-tc,
+.x-nbr .x-window-header-default-collapsed-top-bc,
+.x-nbr .x-window-header-default-collapsed-top-ml,
+.x-nbr .x-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/window-header/window-header-default-collapsed-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-top-ml,
+.x-nbr .x-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/window-header/window-header-default-collapsed-top-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-top-mc {
+  padding: 0px 1px 0px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-collapsed-right {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #e8e8e8; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-collapsed-right-mc {
+  background-color: #e8e8e8; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-right-tl,
+.x-nbr .x-window-header-default-collapsed-right-bl,
+.x-nbr .x-window-header-default-collapsed-right-tr,
+.x-nbr .x-window-header-default-collapsed-right-br,
+.x-nbr .x-window-header-default-collapsed-right-tc,
+.x-nbr .x-window-header-default-collapsed-right-bc,
+.x-nbr .x-window-header-default-collapsed-right-ml,
+.x-nbr .x-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/window-header/window-header-default-collapsed-right-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-right-ml,
+.x-nbr .x-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/window-header/window-header-default-collapsed-right-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-right-mc {
+  padding: 1px 0px 1px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-collapsed-bottom {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #e8e8e8; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-collapsed-bottom-mc {
+  background-color: #e8e8e8; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-bottom-tl,
+.x-nbr .x-window-header-default-collapsed-bottom-bl,
+.x-nbr .x-window-header-default-collapsed-bottom-tr,
+.x-nbr .x-window-header-default-collapsed-bottom-br,
+.x-nbr .x-window-header-default-collapsed-bottom-tc,
+.x-nbr .x-window-header-default-collapsed-bottom-bc,
+.x-nbr .x-window-header-default-collapsed-bottom-ml,
+.x-nbr .x-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/window-header/window-header-default-collapsed-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-bottom-ml,
+.x-nbr .x-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/window-header/window-header-default-collapsed-bottom-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-bottom-mc {
+  padding: 0px 1px 0px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-collapsed-left {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #e8e8e8; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-collapsed-left-mc {
+  background-color: #e8e8e8; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-left-tl,
+.x-nbr .x-window-header-default-collapsed-left-bl,
+.x-nbr .x-window-header-default-collapsed-left-tr,
+.x-nbr .x-window-header-default-collapsed-left-br,
+.x-nbr .x-window-header-default-collapsed-left-tc,
+.x-nbr .x-window-header-default-collapsed-left-bc,
+.x-nbr .x-window-header-default-collapsed-left-ml,
+.x-nbr .x-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/window-header/window-header-default-collapsed-left-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-left-ml,
+.x-nbr .x-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/window-header/window-header-default-collapsed-left-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-left-mc {
+  padding: 1px 0px 1px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl {
+  position: relative;
+  right: 0; }
+
+/* line 217, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default-top {
+  -moz-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  -webkit-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  -o-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset; }
+
+/* line 221, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default-right {
+  -moz-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset;
+  -webkit-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset;
+  -o-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset;
+  box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset; }
+
+/* line 225, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default-bottom {
+  -moz-box-shadow: #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  -webkit-box-shadow: #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  -o-box-shadow: #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  box-shadow: #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 -1px 0 0px 0 inset, #ebe7e7 1px 0 0px 0 inset; }
+
+/* line 229, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default-left {
+  -moz-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  -webkit-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  -o-box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 1px 0 0px 0 inset;
+  box-shadow: #ebe7e7 0 1px 0px 0 inset, #ebe7e7 0 -1px 0px 0 inset, #ebe7e7 1px 0 0px 0 inset; }
+
+/* line 130, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-body-plain {
+  background: transparent; }
+
+/* line 2, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box .x-window-body {
+  background-color: #e8e8e8;
+  border: none; }
+
+/* line 7, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box .x-progress-wrap {
+  margin-top: 4px; }
+
+/* line 11, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-icon {
+  width: 47px;
+  height: 32px; }
+
+/* line 19, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-info,
+.x-message-box-warning,
+.x-message-box-question,
+.x-message-box-error {
+  background: transparent no-repeat top left; }
+
+/* line 23, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box .x-msg-box-wait {
+  background-image: url('../../resources/themes/images/gray/shared/blue-loading.gif'); }
+
+/* line 27, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-info {
+  background-image: url('../../resources/themes/images/gray/shared/icon-info.gif'); }
+
+/* line 31, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-warning {
+  background-image: url('../../resources/themes/images/gray/shared/icon-warning.gif'); }
+
+/* line 35, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-question {
+  background-image: url('../../resources/themes/images/gray/shared/icon-question.gif'); }
+
+/* line 39, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-error {
+  background-image: url('../../resources/themes/images/gray/shared/icon-error.gif'); }
+
+/* line 73, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar {
+  position: relative;
+  background-color: transparent;
+  background-image: none;
+  background-color: #d2d2d2;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dfdede), color-stop(100%, #d2d2d2));
+  background-image: -webkit-linear-gradient(top, #dfdede, #d2d2d2);
+  background-image: -moz-linear-gradient(top, #dfdede, #d2d2d2);
+  background-image: -o-linear-gradient(top, #dfdede, #d2d2d2);
+  background-image: -ms-linear-gradient(top, #dfdede, #d2d2d2);
+  background-image: linear-gradient(top, #dfdede, #d2d2d2);
+  font-size: 11px; }
+
+/* line 80, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-nlg .x-tab-bar {
+  background-image: url('../../resources/themes/images/gray/tab-bar/tab-bar-default-bg.gif'); }
+
+/* line 85, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-default-plain,
+.x-nlg .x-tab-bar-default-plain {
+  background: transparent none; }
+
+/* line 90, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-body {
+  border-style: solid;
+  border-color: #d0d0d0;
+  position: relative;
+  z-index: 2;
+  zoom: 1; }
+
+/* Top Tabs */
+/* line 4, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-top .x-tab-bar-body {
+  height: 20px;
+  border-width: 1px 1px 0;
+  padding: 1px 0 3px; }
+/* line 10, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-top .x-tab-bar-strip {
+  /*position strip from top rather than bottom to avoid off-by-one error in IE6*/
+  top: 22px;
+  border-width: 1px 1px 0;
+  height: 2px; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-top .x-tab-bar-body {
+  height: 25px; }
+/* line 23, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-top .x-tab-bar-strip {
+  height: 3px; }
+
+/* line 4, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-top .x-tab-bar-body-default-plain {
+  height: 20px;
+  border-width: 0;
+  padding: 0 0 2px; }
+/* line 10, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-top .x-tab-bar-strip-default-plain {
+  /*position strip from top rather than bottom to avoid off-by-one error in IE6*/
+  top: 20px;
+  border-width: 1px 1px 0 1px;
+  height: 2px; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-top .x-tab-bar-body-default-plain {
+  height: 22px; }
+/* line 23, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-top .x-tab-bar-strip-default-plain {
+  height: 3px; }
+
+/* Bottom Tabs */
+/* line 32, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-bottom .x-tab-bar-body {
+  height: 20px;
+  border-width: 0 1px 1px;
+  padding: 3px 0 1px; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-tab-bar-bottom .x-tab-bar-body .x-box-inner {
+    position: relative;
+    top: -1px; }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller,
+  .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-left,
+  .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-right {
+    height: 22px; }
+/* line 49, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-bottom .x-tab-bar-strip {
+  top: 0;
+  border-width: 0 1px 1px 1px;
+  height: 2px; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-bottom .x-tab-bar-body {
+  height: 25px; }
+/* line 61, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-bottom .x-tab-bar-strip {
+  height: 3px; }
+
+/* line 32, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-bottom .x-tab-bar-body-default-plain {
+  height: 20px;
+  border-width: 0;
+  padding: 3px 0 0; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-inner {
+    position: relative;
+    top: -1px; }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller,
+  .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-left,
+  .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-right {
+    height: 21px; }
+/* line 49, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-bottom .x-tab-bar-strip-default-plain {
+  top: 0;
+  border-width: 0 1px 1px 1px;
+  height: 2px; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-bottom .x-tab-bar-body-default-plain {
+  height: 23px; }
+/* line 61, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-bottom .x-tab-bar-strip-default-plain {
+  height: 3px; }
+
+/* line 141, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-strip-default,
+.x-tab-bar-strip-default-plain {
+  font-size: 0;
+  line-height: 0;
+  position: absolute;
+  z-index: 1;
+  border-style: solid;
+  overflow: hidden;
+  border-color: #d0d0d0;
+  background-color: #eaeaea;
+  zoom: 1; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-tab-default-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 3px 0 3px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #eaeaea;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dcdcdc), color-stop(100%, #eaeaea));
+  background-image: -webkit-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: -moz-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: -o-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: -ms-linear-gradient(top, #dcdcdc, #eaeaea);
+  background-image: linear-gradient(top, #dcdcdc, #eaeaea); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-tab-default-top-mc {
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-top-bg.gif');
+  background-color: #eaeaea; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100404px 1000000px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-top-tl,
+.x-nbr .x-tab-default-top-bl,
+.x-nbr .x-tab-default-top-tr,
+.x-nbr .x-tab-default-top-br,
+.x-nbr .x-tab-default-top-tc,
+.x-nbr .x-tab-default-top-bc,
+.x-nbr .x-tab-default-top-ml,
+.x-nbr .x-tab-default-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-top-ml,
+.x-nbr .x-tab-default-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-top-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-top-mc {
+  padding: 0px 0px 0 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-tab-default-top-tl,
+.x-strict .x-ie7 .x-tab-default-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-tab-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 0 3px 3px 3px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #eaeaea;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #dcdcdc), color-stop(100%, #eaeaea));
+  background-image: -webkit-linear-gradient(bottom, #dcdcdc, #eaeaea);
+  background-image: -moz-linear-gradient(bottom, #dcdcdc, #eaeaea);
+  background-image: -o-linear-gradient(bottom, #dcdcdc, #eaeaea);
+  background-image: -ms-linear-gradient(bottom, #dcdcdc, #eaeaea);
+  background-image: linear-gradient(bottom, #dcdcdc, #eaeaea); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-tab-default-bottom-mc {
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-bottom-bg.gif');
+  background-color: #eaeaea; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100000px 1000404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-bottom-tl,
+.x-nbr .x-tab-default-bottom-bl,
+.x-nbr .x-tab-default-bottom-tr,
+.x-nbr .x-tab-default-bottom-br,
+.x-nbr .x-tab-default-bottom-tc,
+.x-nbr .x-tab-default-bottom-bc,
+.x-nbr .x-tab-default-bottom-ml,
+.x-nbr .x-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-bottom-ml,
+.x-nbr .x-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-bottom-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-bottom-mc {
+  padding: 0 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-tab-default-bottom-tl,
+.x-strict .x-ie7 .x-tab-default-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 28, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab {
+  z-index: 1;
+  margin: 0 0 0 2px;
+  display: inline-block;
+  zoom: 1;
+  *display: inline;
+  white-space: nowrap;
+  height: 20px;
+  border-color: #b5b5b5;
+  cursor: pointer;
+  cursor: hand; }
+  /* line 40, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab button {
+    cursor: pointer;
+    cursor: hand; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab em {
+    display: block;
+    padding: 0 6px;
+    line-height: 1px; }
+  /* line 51, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab button {
+    background: none;
+    border: 0;
+    padding: 0;
+    margin: 0;
+    -webkit-appearance: none;
+    font-size: 11px;
+    font-weight: bold;
+    font-family: tahoma, arial, verdana, sans-serif;
+    color: #6f6f6f;
+    outline: 0 none;
+    overflow-x: visible; }
+    /* line 69, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-tab button::-moz-focus-inner {
+      border: 0;
+      padding: 0; }
+    /* line 74, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-tab button .x-tab-inner {
+      background-color: transparent;
+      background-repeat: no-repeat;
+      background-position: 0 -2px;
+      display: block;
+      text-align: center;
+      white-space: nowrap;
+      text-overflow: ellipsis;
+      -o-text-overflow: ellipsis;
+      overflow: hidden; }
+  /* line 87, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab img {
+    display: none; }
+
+/* line 93, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-border-box .x-tab-default-top {
+  height: 21px; }
+/* line 96, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-border-box .x-tab-default-bottom {
+  height: 21px; }
+
+/* line 103, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+* html .x-ie .x-tab button {
+  width: 1px; }
+
+/* line 110, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-strict .x-ie6 .x-tab .x-frame-mc,
+.x-strict .x-ie7 .x-tab .x-frame-mc {
+  height: 100%; }
+
+/* line 115, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-ie .x-tab-active button:active {
+  position: relative;
+  top: -1px;
+  left: -1px; }
+
+/* line 124, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-top {
+  -moz-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -webkit-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -o-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  border-bottom: 1px solid #d0d0d0 !important; }
+  /* line 134, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-top em {
+    padding-bottom: 3px; }
+  /* line 139, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-top button,
+  .x-tab-default-top .x-tab-inner {
+    height: 13px;
+    line-height: 13px; }
+
+/* line 148, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-safari4 .x-tab-default-top .x-tab-inner,
+.x-safari5_0 .x-tab-default-top .x-tab-inner {
+  line-height: 11px; }
+
+/* line 153, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-default-top {
+  border-bottom-width: 1px !important; }
+
+/* line 157, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-top-active {
+  border-bottom-color: #eaeaea !important; }
+
+/* line 163, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-bottom {
+  -moz-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -webkit-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -o-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  border-top: 1px solid #d0d0d0 !important;
+  -moz-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -webkit-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -o-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset; }
+  /* line 178, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-bottom em {
+    padding-top: 3px; }
+  /* line 183, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-bottom button,
+  .x-tab-default-bottom .x-tab-inner {
+    height: 13px;
+    line-height: 13px; }
+
+/* line 189, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-default-bottom {
+  border-top-width: 1px !important; }
+
+/* line 193, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-bottom-active {
+  border-top-color: #eaeaea !important; }
+
+/* line 197, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-disabled {
+  cursor: default;
+  border-color: #cec7c7;
+  background-image: none;
+  background-color: #e7dfdf;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7dfdf), color-stop(100%, #f2e3e4));
+  background-image: -webkit-linear-gradient(top, #e7dfdf, #f2e3e4);
+  background-image: -moz-linear-gradient(top, #e7dfdf, #f2e3e4);
+  background-image: -o-linear-gradient(top, #e7dfdf, #f2e3e4);
+  background-image: -ms-linear-gradient(top, #e7dfdf, #f2e3e4);
+  background-image: linear-gradient(top, #e7dfdf, #f2e3e4); }
+  /* line 203, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-disabled button {
+    color: #c3b3b3 !important; }
+
+/* line 209, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-icon-text-left .x-tab-inner {
+  padding-left: 20px; }
+
+/* line 214, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab button {
+  position: relative; }
+
+/* line 218, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-icon {
+  position: absolute;
+  background-repeat: no-repeat;
+  background-position: 0 -1px;
+  top: 0;
+  left: 0;
+  right: auto;
+  bottom: 0;
+  width: 18px;
+  height: 18px; }
+
+/* line 233, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-strict .x-ie8 .x-tab button,
+.x-strict .x-ie9 .x-tab button {
+  overflow-y: visible; }
+
+/* line 238, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-disabled .x-tab-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+
+/* In IE a disabled icon needs to be hidden or the opacity effect covers some of the text */
+/* line 243, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-noicon .x-tab-icon {
+  display: none; }
+
+/* line 269, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-top-over {
+  background-image: none;
+  background-color: #f2eeee;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7e6e6), color-stop(25%, #eeeaea), color-stop(45%, #f2eeee));
+  background-image: -webkit-linear-gradient(top, #e7e6e6, #eeeaea 25%, #f2eeee 45%);
+  background-image: -moz-linear-gradient(top, #e7e6e6, #eeeaea 25%, #f2eeee 45%);
+  background-image: -o-linear-gradient(top, #e7e6e6, #eeeaea 25%, #f2eeee 45%);
+  background-image: -ms-linear-gradient(top, #e7e6e6, #eeeaea 25%, #f2eeee 45%);
+  background-image: linear-gradient(top, #e7e6e6, #eeeaea 25%, #f2eeee 45%); }
+
+/* line 272, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-bottom-over {
+  background-image: none;
+  background-color: #f2eeee;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #e7e6e6), color-stop(25%, #eeeaea), color-stop(45%, #f2eeee));
+  background-image: -webkit-linear-gradient(bottom, #e7e6e6, #eeeaea 25%, #f2eeee 45%);
+  background-image: -moz-linear-gradient(bottom, #e7e6e6, #eeeaea 25%, #f2eeee 45%);
+  background-image: -o-linear-gradient(bottom, #e7e6e6, #eeeaea 25%, #f2eeee 45%);
+  background-image: -ms-linear-gradient(bottom, #e7e6e6, #eeeaea 25%, #f2eeee 45%);
+  background-image: linear-gradient(bottom, #e7e6e6, #eeeaea 25%, #f2eeee 45%); }
+
+/* line 277, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-active {
+  z-index: 3; }
+  /* line 283, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-active button {
+    color: #333333; }
+
+/* line 299, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-top-active {
+  background-image: none;
+  background-color: #eaeaea;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #eaeaea));
+  background-image: -webkit-linear-gradient(top, #ffffff, #eaeaea);
+  background-image: -moz-linear-gradient(top, #ffffff, #eaeaea);
+  background-image: -o-linear-gradient(top, #ffffff, #eaeaea);
+  background-image: -ms-linear-gradient(top, #ffffff, #eaeaea);
+  background-image: linear-gradient(top, #ffffff, #eaeaea); }
+
+/* line 302, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-bottom-active {
+  background-image: none;
+  background-color: #eaeaea;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ffffff), color-stop(100%, #eaeaea));
+  background-image: -webkit-linear-gradient(bottom, #ffffff, #eaeaea);
+  background-image: -moz-linear-gradient(bottom, #ffffff, #eaeaea);
+  background-image: -o-linear-gradient(bottom, #ffffff, #eaeaea);
+  background-image: -ms-linear-gradient(bottom, #ffffff, #eaeaea);
+  background-image: linear-gradient(bottom, #ffffff, #eaeaea); }
+
+/* line 307, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-disabled {
+  border-color: #cec7c7; }
+  /* line 312, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-disabled button {
+    color: #c3b3b3; }
+
+/* line 328, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-top-disabled {
+  background-image: none;
+  background: transparent;
+  background-image: none;
+  background-color: #e7dfdf;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7dfdf), color-stop(100%, #f2e3e4));
+  background-image: -webkit-linear-gradient(top, #e7dfdf, #f2e3e4);
+  background-image: -moz-linear-gradient(top, #e7dfdf, #f2e3e4);
+  background-image: -o-linear-gradient(top, #e7dfdf, #f2e3e4);
+  background-image: -ms-linear-gradient(top, #e7dfdf, #f2e3e4);
+  background-image: linear-gradient(top, #e7dfdf, #f2e3e4); }
+
+/* line 333, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-bottom-disabled {
+  background-image: none;
+  background: transparent;
+  background-image: none;
+  background-color: #e7dfdf;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #e7dfdf), color-stop(100%, #f2e3e4));
+  background-image: -webkit-linear-gradient(bottom, #e7dfdf, #f2e3e4);
+  background-image: -moz-linear-gradient(bottom, #e7dfdf, #f2e3e4);
+  background-image: -o-linear-gradient(bottom, #e7dfdf, #f2e3e4);
+  background-image: -ms-linear-gradient(bottom, #e7dfdf, #f2e3e4);
+  background-image: linear-gradient(bottom, #e7dfdf, #f2e3e4); }
+
+/* line 342, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-top {
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-top-bg.gif'); }
+/* line 343, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-bottom {
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-bottom-bg.gif'); }
+/* line 347, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-top-over {
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-top-over-bg.gif'); }
+/* line 348, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-bottom-over {
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-bottom-over-bg.gif'); }
+/* line 352, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-top-active {
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-top-active-bg.gif'); }
+/* line 353, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-bottom-active {
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-bottom-active-bg.gif'); }
+/* line 357, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-top-disabled {
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-top-disabled-bg.gif') !important; }
+/* line 358, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-bottom-disabled {
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-bottom-disabled-bg.gif') !important; }
+
+/* line 363, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-closable em {
+  padding-right: 14px; }
+
+/* line 367, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-close-btn {
+  position: absolute;
+  top: 2px;
+  right: 2px;
+  width: 11px;
+  height: 11px;
+  font-size: 0;
+  line-height: 0;
+  text-indent: -999px;
+  background: no-repeat;
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-close.gif');
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+
+/* line 381, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-close-btn {
+  top: 0px;
+  right: 0px; }
+
+/* Include the element name otherwise Internet Explorer 7 & 8 take a performance hit */
+/* line 387, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+a.x-tab-close-btn:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1; }
+
+/* Include the element name to raise the specificity to equal the :hover */
+/* line 392, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-disabled a.x-tab-close-btn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 404, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-over .x-frame-tl,
+.x-nbr .x-tab-top-over .x-frame-bl,
+.x-nbr .x-tab-top-over .x-frame-tr,
+.x-nbr .x-tab-top-over .x-frame-br,
+.x-nbr .x-tab-top-over .x-frame-tc,
+.x-nbr .x-tab-top-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-top-over-corners.gif'); }
+/* line 408, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-over .x-frame-ml,
+.x-nbr .x-tab-top-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-top-over-sides.gif'); }
+/* line 412, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-over .x-frame-mc {
+  background-color: #f2eeee;
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-top-over-bg.gif'); }
+/* line 426, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-over .x-frame-tl,
+.x-nbr .x-tab-bottom-over .x-frame-bl,
+.x-nbr .x-tab-bottom-over .x-frame-tr,
+.x-nbr .x-tab-bottom-over .x-frame-br,
+.x-nbr .x-tab-bottom-over .x-frame-tc,
+.x-nbr .x-tab-bottom-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-bottom-over-corners.gif'); }
+/* line 430, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-over .x-frame-ml,
+.x-nbr .x-tab-bottom-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-bottom-over-sides.gif'); }
+/* line 434, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-over .x-frame-mc {
+  background-color: #f2eeee;
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-bottom-over-bg.gif'); }
+/* line 448, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-active .x-frame-tl,
+.x-nbr .x-tab-top-active .x-frame-bl,
+.x-nbr .x-tab-top-active .x-frame-tr,
+.x-nbr .x-tab-top-active .x-frame-br,
+.x-nbr .x-tab-top-active .x-frame-tc,
+.x-nbr .x-tab-top-active .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-top-active-corners.gif'); }
+/* line 452, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-active .x-frame-ml,
+.x-nbr .x-tab-top-active .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-top-active-sides.gif'); }
+/* line 456, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-active .x-frame-mc {
+  background-color: #eaeaea;
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-top-active-bg.gif'); }
+/* line 470, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-active .x-frame-tl,
+.x-nbr .x-tab-bottom-active .x-frame-bl,
+.x-nbr .x-tab-bottom-active .x-frame-tr,
+.x-nbr .x-tab-bottom-active .x-frame-br,
+.x-nbr .x-tab-bottom-active .x-frame-tc,
+.x-nbr .x-tab-bottom-active .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-bottom-active-corners.gif'); }
+/* line 474, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-active .x-frame-ml,
+.x-nbr .x-tab-bottom-active .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-bottom-active-sides.gif'); }
+/* line 478, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-active .x-frame-mc {
+  background-color: #eaeaea;
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-bottom-active-bg.gif'); }
+/* line 492, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-disabled .x-frame-tl,
+.x-nbr .x-tab-top-disabled .x-frame-bl,
+.x-nbr .x-tab-top-disabled .x-frame-tr,
+.x-nbr .x-tab-top-disabled .x-frame-br,
+.x-nbr .x-tab-top-disabled .x-frame-tc,
+.x-nbr .x-tab-top-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-top-disabled-corners.gif'); }
+/* line 496, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-disabled .x-frame-ml,
+.x-nbr .x-tab-top-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-top-disabled-sides.gif'); }
+/* line 500, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-disabled .x-frame-mc {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-top-disabled-bg.gif'); }
+/* line 513, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-disabled .x-frame-tl,
+.x-nbr .x-tab-bottom-disabled .x-frame-bl,
+.x-nbr .x-tab-bottom-disabled .x-frame-tr,
+.x-nbr .x-tab-bottom-disabled .x-frame-br,
+.x-nbr .x-tab-bottom-disabled .x-frame-tc,
+.x-nbr .x-tab-bottom-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-bottom-disabled-corners.gif'); }
+/* line 517, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-disabled .x-frame-ml,
+.x-nbr .x-tab-bottom-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-bottom-disabled-sides.gif'); }
+/* line 521, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-disabled .x-frame-mc {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/gray/tab/tab-default-bottom-disabled-bg.gif'); }
+
+/* line 9, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-autowidth-table table.x-grid-table {
+  table-layout: auto;
+  width: auto!important; }
+
+/* line 14, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-tree-elbow {
+  background-color: transparent; }
+
+/* line 18, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-tree-elbow-end {
+  background-color: transparent; }
+
+/* line 22, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-tree-elbow-line {
+  background-color: transparent; }
+
+/* line 27, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-plus {
+  background: transparent no-repeat 0 0; }
+
+/* line 31, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-end-plus {
+  background: transparent no-repeat 0 0; }
+
+/* line 35, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-end-minus {
+  background: transparent no-repeat -16px 0; }
+
+/* line 39, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-minus {
+  background: transparent no-repeat -16px 0; }
+
+/* line 43, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow {
+  background-color: transparent !important; }
+
+/* line 47, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-end {
+  background-color: transparent !important; }
+
+/* line 51, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-line {
+  background-color: transparent !important; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-expander-over .x-tree-elbow-plus,
+.x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-plus {
+  background-position: -32px 0; }
+
+/* line 62, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-expander-over .x-tree-elbow-minus,
+.x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-minus {
+  background-position: -48px 0; }
+
+/* line 67, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-plus,
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-position: -16px 0; }
+
+/* line 72, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-plus,
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-end-plus {
+  background-position: -48px 0; }
+
+/* line 79, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-elbow-plus,
+.x-tree-elbow-minus,
+.x-tree-elbow-end-plus,
+.x-tree-elbow-end-minus {
+  cursor: pointer; }
+
+/* line 85, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow {
+  background-image: url('../../resources/themes/images/gray/tree/elbow.gif'); }
+/* line 89, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-end {
+  background-image: url('../../resources/themes/images/gray/tree/elbow-end.gif'); }
+/* line 93, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-plus {
+  background-image: url('../../resources/themes/images/gray/tree/elbow-plus.gif'); }
+/* line 97, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/gray/tree/elbow-end-plus.gif'); }
+/* line 101, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus {
+  background-image: url('../../resources/themes/images/gray/tree/elbow-minus.gif'); }
+/* line 105, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/gray/tree/elbow-end-minus.gif'); }
+/* line 109, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-line {
+  background-image: url('../../resources/themes/images/gray/tree/elbow-line.gif'); }
+
+/* line 116, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-tree-elbow-plus,
+.x-tree-no-lines .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/gray/tree/elbow-plus-nl.gif'); }
+/* line 121, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-plus,
+.x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/gray/tree/elbow-end-minus-nl.gif'); }
+
+/* line 130, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-plus,
+.x-tree-arrows .x-tree-elbow-minus,
+.x-tree-arrows .x-tree-elbow-end-plus,
+.x-tree-arrows .x-tree-elbow-end-minus {
+  background-image: url('../../resources/themes/images/gray/tree/arrows.gif'); }
+
+/* line 135, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-icon {
+  margin: 2px 3px 0 0; }
+
+/* line 139, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-with-row-lines .x-tree-icon {
+  margin-top: 1px; }
+
+/* line 148, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-elbow,
+.x-tree-elbow-end,
+.x-tree-elbow-plus,
+.x-tree-elbow-end-plus,
+.x-tree-elbow-empty,
+.x-tree-elbow-line {
+  height: 20px;
+  width: 16px; }
+
+/* line 159, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-with-row-lines .x-tree-elbow,
+.x-grid-with-row-lines .x-tree-elbow-end,
+.x-grid-with-row-lines .x-tree-elbow-plus,
+.x-grid-with-row-lines .x-tree-elbow-end-plus,
+.x-grid-with-row-lines .x-tree-elbow-empty,
+.x-grid-with-row-lines .x-tree-elbow-line {
+  height: 19px;
+  background-position: 0 -1px; }
+
+/* line 165, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-icon-leaf {
+  width: 16px;
+  background-image: url('../../resources/themes/images/gray/tree/leaf.gif'); }
+
+/* line 170, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-icon-parent {
+  width: 16px;
+  background-image: url('../../resources/themes/images/gray/tree/folder.gif'); }
+
+/* line 175, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-tree-node-expanded .x-tree-icon-parent {
+  background-image: url('../../resources/themes/images/gray/tree/folder-open.gif'); }
+
+/* line 179, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-rowbody {
+  padding: 0; }
+
+/* line 183, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-cell-treecolumn .x-grid-cell-inner {
+  padding: 0;
+  line-height: 19px; }
+
+/* line 188, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-with-row-lines .x-grid-cell-treecolumn .x-grid-cell-inner {
+  line-height: 17px; }
+
+/* line 192, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-panel .x-grid-cell-inner {
+  cursor: pointer; }
+  /* line 194, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-tree-panel .x-grid-cell-inner img {
+    display: inline-block;
+    vertical-align: top; }
+
+/* line 207, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-ie .x-tree-panel .x-tree-elbow,
+.x-ie .x-tree-panel .x-tree-elbow-end,
+.x-ie .x-tree-panel .x-tree-elbow-plus,
+.x-ie .x-tree-panel .x-tree-elbow-end-plus,
+.x-ie .x-tree-panel .x-tree-elbow-empty,
+.x-ie .x-tree-panel .x-tree-elbow-line {
+  vertical-align: -6px; }
+
+/* line 215, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-editor-on-text-node .x-form-text {
+  padding-left: 1px;
+  padding-right: 1px; }
+
+/* line 222, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-ie .x-grid-editor-on-text-node .x-form-text {
+  padding-left: 2px;
+  padding-right: 2px; }
+
+/* line 228, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-opera .x-grid-editor-on-text-node .x-form-text {
+  padding-left: 2px;
+  padding-right: 2px; }
+
+/* line 234, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-checkbox {
+  margin: 4px 3px 0 0;
+  display: inline-block;
+  vertical-align: top;
+  width: 13px;
+  height: 13px;
+  background: no-repeat;
+  background-image: url('../../resources/themes/images/gray/form/checkbox.gif');
+  overflow: hidden;
+  padding: 0;
+  border: 0; }
+  /* line 247, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-tree-checkbox::-moz-focus-inner {
+    padding: 0;
+    border: 0; }
+
+/* line 253, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-with-row-lines .x-tree-checkbox {
+  margin-top: 3px; }
+
+/* line 257, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-checkbox-checked {
+  background-position: 0 -13px; }
+
+/* line 261, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-drop-ok-append .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/gray/tree/drop-append.gif'); }
+
+/* line 265, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-drop-ok-above .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/gray/tree/drop-above.gif'); }
+
+/* line 269, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-drop-ok-below .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/gray/tree/drop-below.gif'); }
+
+/* line 273, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-drop-ok-between .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/gray/tree/drop-between.gif'); }
+
+/* line 277, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-tree-loading .x-tree-icon {
+  background-image: url('../../resources/themes/images/gray/tree/loading.gif'); }
+
+/* line 281, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-ddindicator {
+  height: 1px;
+  border-width: 1px 0px 0px;
+  border-style: dotted;
+  border-color: green; }
+
+/* line 288, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-tree-loading span {
+  font-style: italic;
+  color: #444444; }
+
+/* line 293, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-animator-wrap {
+  overflow: hidden; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-surface {
+  display: -moz-inline-box;
+  -moz-box-orient: vertical;
+  display: inline-block;
+  vertical-align: middle;
+  *vertical-align: auto;
+  overflow: hidden; }
+  /* line 7, ../../../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.11.7/frameworks/compass/stylesheets/compass/css3/_inline-block.scss */
+  .x-surface {
+    *display: inline; }
+
+/* line 11, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.rvml {
+  behavior: url(#default#VML); }
+
+/* line 15, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-surface tspan {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-sprite {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px; }
+
+/* line 27, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-group {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1000px;
+  height: 1000px; }
+
+/* line 35, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-measure-span {
+  position: absolute;
+  left: -9999em;
+  top: -9999em;
+  padding: 0;
+  margin: 0;
+  display: inline; }
+
+/* line 44, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block; }
+
+/* line 52, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block; }
+
+/* line 60, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+svg, vml {
+  overflow: hidden; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_viewport.scss */
+.x-viewport, .x-viewport body {
+  margin: 0;
+  padding: 0;
+  border: 0 none;
+  overflow: hidden;
+  height: 100%;
+  position: static; }
+
+/* line 3, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drag-proxy {
+  z-index: 1000000!important; }
+
+/* line 8, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drag-repair .x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+/* line 12, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drag-repair .x-dd-drop-icon {
+  display: none; }
+
+/* line 17, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
+  opacity: 0.85;
+  padding: 5px;
+  padding-left: 20px;
+  white-space: nowrap;
+  color: #000;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  border: 1px solid;
+  border-color: #ddd #bbb #bbb #ddd;
+  background-color: #fff; }
+
+/* line 34, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drop-icon {
+  position: absolute;
+  top: 3px;
+  left: 3px;
+  display: block;
+  width: 16px;
+  height: 16px;
+  background-color: transparent;
+  background-position: center;
+  background-repeat: no-repeat;
+  z-index: 1; }
+
+/* line 51, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-view-selector {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 0;
+  background-color: #c3daf9;
+  border: 1px dotted #3399bb;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  zoom: 1; }
+
+/* line 66, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drop-nodrop .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/gray/dd/drop-no.gif'); }
+
+/* line 70, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drop-ok .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/gray/dd/drop-yes.gif'); }
+
+/* line 74, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drop-ok-add .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/gray/dd/drop-add.gif'); }
+
+/* line 2, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle {
+  position: absolute;
+  z-index: 100;
+  font-size: 1px;
+  line-height: 6px;
+  overflow: hidden;
+  zoom: 1;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  background-color: #fff; }
+
+/* line 14, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-collapsed .x-resizable-handle {
+  display: none; }
+
+/* line 18, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-east {
+  width: 6px;
+  height: 100%;
+  right: 0;
+  top: 0; }
+
+/* line 27, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-east {
+  cursor: e-resize; }
+
+/* line 32, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-south {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  bottom: 0; }
+
+/* line 41, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-south {
+  cursor: s-resize; }
+
+/* line 46, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-west {
+  width: 6px;
+  height: 100%;
+  left: 0;
+  top: 0; }
+
+/* line 55, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-west {
+  cursor: w-resize; }
+
+/* line 60, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-north {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  top: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-north {
+  cursor: n-resize; }
+
+/* line 74, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-southeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  bottom: 0;
+  z-index: 101; }
+
+/* line 85, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southeast {
+  cursor: se-resize; }
+
+/* line 90, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-northwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  top: 0;
+  z-index: 101; }
+
+/* line 101, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northwest {
+  cursor: nw-resize; }
+
+/* line 106, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-northeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  top: 0;
+  z-index: 101; }
+
+/* line 117, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northeast {
+  cursor: ne-resize; }
+
+/* line 122, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-southwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+  z-index: 101; }
+
+/* line 133, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southwest {
+  cursor: sw-resize; }
+
+/*IE rounding error*/
+/* line 140, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-ie .x-resizable-handle-east {
+  margin-right: -1px;
+  /*IE rounding error*/ }
+/* line 144, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-ie .x-resizable-handle-south {
+  margin-bottom: -1px; }
+
+/* line 149, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle, .x-resizable-pinned .x-resizable-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1; }
+
+/* line 153, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-window .x-window-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 157, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-window-collapsed .x-window-handle {
+  display: none; }
+
+/* line 161, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-proxy {
+  border: 1px dashed #3b5a82;
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  z-index: 50000; }
+
+/* line 170, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-overlay {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  display: none;
+  z-index: 200000;
+  background-color: #fff;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 190, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-west {
+  background-position: left;
+  background-image: url('../../resources/themes/images/gray/sizer/e-handle.gif'); }
+/* line 196, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-north {
+  background-position: top;
+  background-image: url('../../resources/themes/images/gray/sizer/s-handle.gif'); }
+/* line 201, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+  background-position: top left;
+  background-image: url('../../resources/themes/images/gray/sizer/se-handle.gif'); }
+/* line 206, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+  background-position: bottom right;
+  background-image: url('../../resources/themes/images/gray/sizer/nw-handle.gif'); }
+/* line 211, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+  background-position: bottom left;
+  background-image: url('../../resources/themes/images/gray/sizer/ne-handle.gif'); }
+/* line 216, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+  background-position: top right;
+  background-image: url('../../resources/themes/images/gray/sizer/sw-handle.gif'); }
+
+/* line 3, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter .x-collapse-el {
+  position: absolute;
+  cursor: pointer;
+  background-color: transparent;
+  background-repeat: no-repeat !important; }
+
+/* line 14, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-left,
+.x-layout-split-right {
+  top: 50%;
+  margin-top: -17px;
+  width: 5px;
+  height: 35px; }
+
+/* line 24, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-top,
+.x-layout-split-bottom {
+  left: 50%;
+  width: 35px;
+  height: 5px;
+  margin-left: -17px; }
+
+/* line 33, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-left {
+  background: no-repeat top right;
+  background-image: url('../../resources/themes/images/gray/util/splitter/mini-left.gif'); }
+
+/* line 38, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-right {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/gray/util/splitter/mini-right.gif'); }
+
+/* line 43, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-top {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/gray/util/splitter/mini-top.gif'); }
+
+/* line 48, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-bottom {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/gray/util/splitter/mini-bottom.gif'); }
+
+/* line 54, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-left {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/gray/util/splitter/mini-right.gif'); }
+/* line 59, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-right {
+  background: no-repeat top right;
+  background-image: url('../../resources/themes/images/gray/util/splitter/mini-left.gif'); }
+/* line 64, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-top {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/gray/util/splitter/mini-bottom.gif'); }
+/* line 69, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-bottom {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/gray/util/splitter/mini-top.gif'); }
+
+/* line 75, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-horizontal {
+  cursor: e-resize;
+  cursor: row-resize;
+  font-size: 1px; }
+
+/* line 81, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-vertical {
+  cursor: e-resize;
+  cursor: col-resize;
+  font-size: 1px; }
+
+/* line 86, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed, .x-splitter-horizontal-noresize, .x-splitter-vertical-noresize {
+  cursor: default; }
+
+/* line 90, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-active {
+  z-index: 4;
+  font-size: 1px;
+  background-color: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8; }
+
+/* line 97, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-active .x-collapse-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 102, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-proxy-el {
+  position: absolute;
+  background: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8; }
+
+/*
+ * Dock Layouts
+ * @todo move this somewhere else?
+ */
+/* line 6, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked {
+  position: absolute !important;
+  z-index: 1; }
+
+/* line 11, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-top {
+  border-bottom-width: 0 !important; }
+
+/* line 15, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-bottom {
+  border-top-width: 0 !important; }
+
+/* line 19, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-left {
+  border-right-width: 0 !important; }
+
+/* line 23, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-right {
+  border-left-width: 0 !important; }
+
+/* line 27, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-noborder-top {
+  border-top-width: 0 !important; }
+
+/* line 31, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-noborder-right {
+  border-right-width: 0 !important; }
+
+/* line 35, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-noborder-bottom {
+  border-bottom-width: 0 !important; }
+
+/* line 39, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-noborder-left {
+  border-left-width: 0 !important; }
+
+/* line 43, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-inner {
+  overflow: hidden;
+  zoom: 1;
+  position: relative;
+  left: 0;
+  top: 0; }
+
+/* line 53, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-item {
+  position: absolute !important;
+  left: 0;
+  top: 0; }
+
+/* line 59, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-rtl .x-box-item {
+  right: 0;
+  left: auto; }
+
+/* line 65, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-layout-ct,
+.x-border-layout-ct {
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 70, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-border-layout-ct {
+  background-color: #e0e0e0;
+  position: relative; }
+
+/* line 75, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-overflow-hidden {
+  overflow: hidden !important; }
+
+/* line 79, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-inline-children > * {
+  display: inline-block !important; }
+
+/* line 83, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-abs-layout-ct {
+  position: relative; }
+
+/* line 87, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-abs-layout-item {
+  position: absolute !important; }
+
+/* line 91, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-fit-item {
+  position: relative; }
+
+/* line 95, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-border-region-slide-in {
+  z-index: 5; }
+
+/* line 99, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-region-collapsed-placeholder {
+  z-index: 4; }
+
+/* line 103, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd .x-panel-header-text {
+  color: black;
+  font-weight: normal; }
+
+/* line 108, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd {
+  background: #e5e5e5 !important;
+  -moz-box-shadow: inset 0 0 0 0 #e5e5e5;
+  -webkit-box-shadow: inset 0 0 0 0 #e5e5e5;
+  -o-box-shadow: inset 0 0 0 0 #e5e5e5;
+  box-shadow: inset 0 0 0 0 #e5e5e5; }
+  /* line 112, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-accordion-hd .x-tool-collapse-top,
+  .x-accordion-hd .x-tool-collapse-right,
+  .x-accordion-hd .x-tool-collapse-bottom,
+  .x-accordion-hd .x-tool-collapse-left {
+    background-position: 0 -255px; }
+  /* line 119, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-accordion-hd .x-tool-expand-top,
+  .x-accordion-hd .x-tool-expand-right,
+  .x-accordion-hd .x-tool-expand-bottom,
+  .x-accordion-hd .x-tool-expand-left {
+    background-position: 0 -240px; }
+  /* line 127, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-accordion-hd .x-tool-over .x-tool-collapse-top,
+  .x-accordion-hd .x-tool-over .x-tool-collapse-right,
+  .x-accordion-hd .x-tool-over .x-tool-collapse-bottom,
+  .x-accordion-hd .x-tool-over .x-tool-collapse-left {
+    background-position: -15px -255px; }
+  /* line 136, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-accordion-hd .x-tool-over .x-tool-expand-top,
+  .x-accordion-hd .x-tool-over .x-tool-expand-right,
+  .x-accordion-hd .x-tool-over .x-tool-expand-bottom,
+  .x-accordion-hd .x-tool-over .x-tool-expand-left {
+    background-position: -15px -240px; }
+
+/* line 145, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd {
+  border-width: 1px 0 1px 0 !important;
+  padding: 4px 5px 5px 5px;
+  border-top-color: #ececec !important; }
+
+/* line 151, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-body {
+  border-width: 0 !important; }
+
+/* line 155, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd-sibling-expanded {
+  border-top-color: #d0d0d0 !important;
+  -moz-box-shadow: inset 0 1px 0 0 #ececec;
+  -webkit-box-shadow: inset 0 1px 0 0 #ececec;
+  -o-box-shadow: inset 0 1px 0 0 #ececec;
+  box-shadow: inset 0 1px 0 0 #ececec; }
+
+/* line 160, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd-last-collapsed {
+  border-bottom-color: #e5e5e5 !important; }
+
+/* line 169, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-frame-tl,
+.x-frame-tr,
+.x-frame-tc,
+.x-frame-bl,
+.x-frame-br,
+.x-frame-bc {
+  overflow: hidden;
+  background-repeat: no-repeat; }
+
+/* line 175, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-frame-tc,
+.x-frame-bc {
+  background-repeat: repeat-x; }
+
+/* line 179, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-frame-mc {
+  position: relative;
+  background-repeat: repeat-x;
+  overflow: hidden; }
+
+/* line 188, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-left {
+  float: left;
+  height: 100%;
+  z-index: 5; }
+  /* line 195, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left,
+  .x-box-scroller-left .x-tabbar-scroll-left {
+    width: 18px;
+    position: relative;
+    cursor: pointer;
+    height: 20px;
+    background: transparent no-repeat -18px 0;
+    background-image: url('../../resources/themes/images/gray/tab-bar/scroll-left.gif'); }
+  /* line 203, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left-hover {
+    background-position: 0 0; }
+  /* line 207, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left-disabled,
+  .x-box-scroller-left .x-tabbar-scroll-left-disabled {
+    background-position: -18px 0;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5;
+    cursor: default; }
+  /* line 214, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left {
+    background-image: url('../../resources/themes/images/gray/toolbar/scroll-left.gif');
+    background-position: -14px 0; }
+  /* line 218, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left-hover {
+    background-position: 0 0; }
+  /* line 221, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left-disabled {
+    background-position: -14px 0; }
+  /* line 225, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left {
+    width: 14px;
+    height: 22px;
+    border-bottom: 1px solid #8db2e3; }
+
+/* line 233, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-horizontal-box-overflow-body {
+  float: left; }
+
+/* line 236, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-right {
+  float: right;
+  height: 100%;
+  z-index: 5; }
+  /* line 243, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right,
+  .x-box-scroller-right .x-tabbar-scroll-right {
+    width: 18px;
+    position: relative;
+    cursor: pointer;
+    height: 20px;
+    background: transparent no-repeat 0 0;
+    background-image: url('../../resources/themes/images/gray/tab-bar/scroll-right.gif'); }
+  /* line 251, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-hover {
+    background-position: -18px 0; }
+  /* line 255, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-disabled,
+  .x-box-scroller-right .x-tabbar-scroll-right-disabled {
+    background-position: 0 0;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5;
+    cursor: default; }
+  /* line 262, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right {
+    background-image: url('../../resources/themes/images/gray/toolbar/scroll-right.gif'); }
+  /* line 265, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-hover {
+    background-position: -14px 0; }
+  /* line 268, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-disabled {
+    background-position: 0 0; }
+  /* line 272, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right {
+    width: 14px;
+    height: 22px;
+    border-bottom: 1px solid #8db2e3; }
+
+/* line 282, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-top .x-box-scroller {
+  line-height: 0;
+  font-size: 0; }
+/* line 286, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-top .x-menu-scroll-top {
+  background: transparent no-repeat center center;
+  background-image: url('../../resources/themes/images/gray/layout/mini-top.gif');
+  height: 8px;
+  cursor: pointer; }
+
+/* line 294, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-bottom .x-box-scroller {
+  line-height: 0;
+  font-size: 0; }
+/* line 298, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-bottom .x-menu-scroll-bottom {
+  background: transparent no-repeat center center;
+  background-image: url('../../resources/themes/images/gray/layout/mini-bottom.gif');
+  height: 8px;
+  cursor: pointer; }
+
+/* line 306, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-menu-right {
+  float: right;
+  padding-right: 2px; }
+
+/* line 311, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-column {
+  float: left; }
+
+/* line 315, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-ie6 .x-column {
+  display: inline;
+  /*prevent IE6 double-margin bug*/ }
+
+/* line 319, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-quirks .x-ie .x-form-layout-table, .x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item {
+  position: relative; }
+
+/* line 2, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool {
+  height: 15px; }
+  /* line 5, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-tool img {
+    overflow: hidden;
+    width: 15px;
+    height: 15px;
+    cursor: pointer;
+    background-color: transparent;
+    background-repeat: no-repeat;
+    background-image: url('../../resources/themes/images/gray/tools/tool-sprites.gif');
+    margin: 0; }
+
+/* line 23, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-header-horizontal .x-tool,
+.x-window-header-horizontal .x-tool {
+  margin-left: 2px; }
+
+/* line 30, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-header-vertical .x-tool,
+.x-window-header-vertical .x-tool {
+  margin-top: 2px; }
+
+/* line 39, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-header-vertical .x-tool-top,
+.x-window-header-vertical .x-tool-top {
+  margin: 0 0 4px; }
+
+/* line 45, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-placeholder {
+  visibility: hidden; }
+
+/* line 49, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-toggle {
+  background-position: 0 -60px; }
+
+/* line 54, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-toggle {
+  background-position: -15px -60px; }
+
+/* line 61, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-collapsed .x-tool-toggle,
+.x-fieldset-collapsed .x-tool-toggle {
+  background-position: 0 -75px; }
+/* line 66, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-collapsed .x-tool-over .x-tool-toggle,
+.x-fieldset-collapsed .x-tool-over .x-tool-toggle {
+  background-position: -15px -75px; }
+
+/* line 72, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-close {
+  background-position: 0 0; }
+
+/* line 76, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-minimize {
+  background-position: 0 -15px; }
+
+/* line 80, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-maximize {
+  background-position: 0 -30px; }
+
+/* line 84, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-restore {
+  background-position: 0 -45px; }
+
+/* line 88, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-gear {
+  background-position: 0 -90px; }
+
+/* line 92, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-prev {
+  background-position: 0 -105px; }
+
+/* line 96, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-next {
+  background-position: 0 -120px; }
+
+/* line 100, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-pin {
+  background-position: 0 -135px; }
+
+/* line 104, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-unpin {
+  background-position: 0 -150px; }
+
+/* line 108, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-right {
+  background-position: 0 -165px; }
+
+/* line 112, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-left {
+  background-position: 0 -180px; }
+
+/* line 116, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-help {
+  background-position: 0 -300px; }
+
+/* line 120, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-save {
+  background-position: 0 -285px; }
+
+/* line 124, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-search {
+  background-position: 0 -270px; }
+
+/* line 128, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-minus {
+  background-position: 0 -255px; }
+
+/* line 132, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-plus {
+  background-position: 0 -240px; }
+
+/* line 136, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-refresh {
+  background-position: 0 -225px; }
+
+/* line 140, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-up {
+  background-position: 0 -210px; }
+
+/* line 144, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-down {
+  background-position: 0 -195px; }
+
+/* line 148, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-collapse {
+  background-position: 0 -345px; }
+
+/* line 152, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand {
+  background-position: 0 -330px; }
+
+/* line 156, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-print {
+  background-position: 0 -315px; }
+
+/* line 161, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand-bottom,
+.x-tool-collapse-bottom {
+  background-position: 0 -195px; }
+
+/* line 166, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand-top,
+.x-tool-collapse-top {
+  background-position: 0 -210px; }
+
+/* line 171, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand-left,
+.x-tool-collapse-left {
+  background-position: 0 -180px; }
+
+/* line 176, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand-right,
+.x-tool-collapse-right {
+  background-position: 0 -165px; }
+
+/* line 181, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-close {
+  background-position: -15px 0; }
+/* line 185, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-minimize {
+  background-position: -15px -15px; }
+/* line 189, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-maximize {
+  background-position: -15px -30px; }
+/* line 193, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-restore {
+  background-position: -15px -45px; }
+/* line 197, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-gear {
+  background-position: -15px -90px; }
+/* line 201, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-prev {
+  background-position: -15px -105px; }
+/* line 205, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-next {
+  background-position: -15px -120px; }
+/* line 209, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-pin {
+  background-position: -15px -135px; }
+/* line 213, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-unpin {
+  background-position: -15px -150px; }
+/* line 217, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-right {
+  background-position: -15px -165px; }
+/* line 221, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-left {
+  background-position: -15px -180px; }
+/* line 225, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-down {
+  background-position: -15px -195px; }
+/* line 229, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-up {
+  background-position: -15px -210px; }
+/* line 233, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-refresh {
+  background-position: -15px -225px; }
+/* line 237, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-plus {
+  background-position: -15px -240px; }
+/* line 241, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-minus {
+  background-position: -15px -255px; }
+/* line 245, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-search {
+  background-position: -15px -270px; }
+/* line 249, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-save {
+  background-position: -15px -285px; }
+/* line 253, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-help {
+  background-position: -15px -300px; }
+/* line 257, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-print {
+  background-position: -15px -315px; }
+/* line 261, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand {
+  background-position: -15px -330px; }
+/* line 265, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-collapse {
+  background-position: -15px -345px; }
+/* line 270, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand-bottom,
+.x-tool-over .x-tool-collapse-bottom {
+  background-position: -15px -195px; }
+/* line 275, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand-top,
+.x-tool-over .x-tool-collapse-top {
+  background-position: -15px -210px; }
+/* line 280, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand-left,
+.x-tool-over .x-tool-collapse-left {
+  background-position: -15px -180px; }
+/* line 285, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand-right,
+.x-tool-over .x-tool-collapse-right {
+  background-position: -15px -165px; }
+
+/* line 2, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-horizontal-scroller-present .x-grid-body {
+  border-bottom-width: 0px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-vertical-scroller-present .x-grid-body {
+  border-right-width: 0px; }
+
+/* line 10, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller {
+  overflow: hidden; }
+
+/* line 14, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-vertical {
+  border: 1px solid #d0d0d0;
+  border-top-color: #c5c5c5; }
+
+/* line 19, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-horizontal {
+  border: 1px solid #d0d0d0; }
+
+/* line 23, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-vertical-scroller-present .x-scroller-horizontal {
+  border-right-width: 0px; }
+
+/* line 27, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-ct {
+  overflow: hidden;
+  position: absolute;
+  margin: 0;
+  padding: 0;
+  border: none;
+  left: 0px;
+  top: 0px;
+  /*
+  In IE9 (only), the border-box style causes the scroller-ct to be 0px in the
+  perpendicular dimension and breaks the scroll as well as offsets it by the left
+  offset that we use to try and keep some size on this element. This works on all
+  browsers (including IE9).
+  */
+  box-sizing: content-box !important;
+  -ms-box-sizing: content-box !important;
+  -moz-box-sizing: content-box !important;
+  -webkit-box-sizing: content-box !important; }
+
+/* line 48, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-vertical .x-scroller-ct {
+  overflow-y: scroll; }
+
+/* line 52, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-horizontal .x-scroller-ct {
+  overflow-x: scroll; }
+
+/* line 8, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+.x-html {
+  /* Begin bidirectionality settings (do not change) */ }
+  /* line 34, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html html, .x-html address, .x-html blockquote, .x-html body, .x-html dd, .x-html div, .x-html dl, .x-html dt, .x-html fieldset, .x-html form, .x-html frame, .x-html frameset, .x-html h1, .x-html h2, .x-html h3, .x-html h4, .x-html h5, .x-html h6, .x-html noframes, .x-html ol, .x-html p, .x-html ul, .x-html center, .x-html dir, .x-html hr, .x-html menu, .x-html pre {
+    display: block; }
+  /* line 35, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html li {
+    display: list-item;
+    list-style: disc; }
+  /* line 36, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html head {
+    display: none; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html table {
+    display: table; }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html tr {
+    display: table-row; }
+  /* line 39, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html thead {
+    display: table-header-group; }
+  /* line 40, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html tbody {
+    display: table-row-group; }
+  /* line 41, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html tfoot {
+    display: table-footer-group; }
+  /* line 42, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html col {
+    display: table-column; }
+  /* line 43, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html colgroup {
+    display: table-column-group; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html td, .x-html th {
+    display: table-cell; }
+  /* line 46, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html caption {
+    display: table-caption; }
+  /* line 47, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html th {
+    font-weight: bolder;
+    text-align: center; }
+  /* line 48, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html caption {
+    text-align: center; }
+  /* line 49, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html body {
+    margin: 8px; }
+  /* line 50, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h1 {
+    font-size: 2em;
+    margin: .67em 0; }
+  /* line 51, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h2 {
+    font-size: 1.5em;
+    margin: .75em 0; }
+  /* line 52, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h3 {
+    font-size: 1.17em;
+    margin: .83em 0; }
+  /* line 62, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h4, .x-html p, .x-html blockquote, .x-html ul, .x-html fieldset, .x-html form, .x-html ol, .x-html dl, .x-html dir, .x-html menu {
+    margin: 1.12em 0; }
+  /* line 63, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h5 {
+    font-size: .83em;
+    margin: 1.5em 0; }
+  /* line 64, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h6 {
+    font-size: .75em;
+    margin: 1.67em 0; }
+  /* line 72, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h1, .x-html h2, .x-html h3, .x-html h4, .x-html h5, .x-html h6, .x-html b, .x-html strong {
+    font-weight: bolder; }
+  /* line 73, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html blockquote {
+    margin-left: 40px;
+    margin-right: 40px; }
+  /* line 78, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html i, .x-html cite, .x-html em, .x-html var, .x-html address {
+    font-style: italic; }
+  /* line 83, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html pre, .x-html tt, .x-html code, .x-html kbd, .x-html samp {
+    font-family: monospace; }
+  /* line 84, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html pre {
+    white-space: pre; }
+  /* line 88, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html button, .x-html textarea, .x-html input, .x-html select {
+    display: inline-block; }
+  /* line 89, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html big {
+    font-size: 1.17em; }
+  /* line 92, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html small, .x-html sub, .x-html sup {
+    font-size: .83em; }
+  /* line 93, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html sub {
+    vertical-align: sub; }
+  /* line 94, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html sup {
+    vertical-align: super; }
+  /* line 95, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html table {
+    border-spacing: 2px; }
+  /* line 98, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html thead, .x-html tbody, .x-html tfoot {
+    vertical-align: middle; }
+  /* line 100, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html td, .x-html th {
+    vertical-align: inherit; }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html s, .x-html strike, .x-html del {
+    text-decoration: line-through; }
+  /* line 104, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html hr {
+    border: 1px inset; }
+  /* line 109, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html ol, .x-html ul, .x-html dir, .x-html menu, .x-html dd {
+    margin-left: 40px; }
+  /* line 110, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html ul, .x-html menu, .x-html dir {
+    list-style-type: disc; }
+  /* line 111, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html ol {
+    list-style-type: decimal; }
+  /* line 115, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html ol ul, .x-html ul ol, .x-html ul ul, .x-html ol ol {
+    margin-top: 0;
+    margin-bottom: 0; }
+  /* line 117, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html u, .x-html ins {
+    text-decoration: underline; }
+  /* line 118, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html br:before {
+    content: "\A"; }
+  /* line 119, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html :before, .x-html :after {
+    white-space: pre-line; }
+  /* line 120, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html center {
+    text-align: center; }
+  /* line 121, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html :link, .x-html :visited {
+    text-decoration: underline; }
+  /* line 122, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html :focus {
+    outline: invert dotted thin; }
+  /* line 125, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html BDO[DIR="ltr"] {
+    direction: ltr;
+    unicode-bidi: bidi-override; }
+  /* line 126, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html BDO[DIR="rtl"] {
+    direction: rtl;
+    unicode-bidi: bidi-override; }
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-all-gray.css
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-all-gray.css	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-all-gray.css	(revision 18277)
@@ -0,0 +1,21 @@
+/*
+This file is part of Ext JS 4.1
+
+Copyright (c) 2011-2012 Sencha Inc
+
+Contact:  http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2012-07-04 21:11:01 (65ff594cd80b9bad45df640c22cc0adb52c95a7b)
+*/
+html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}li{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%}q:before,q:after{content:""}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit}*:focus{outline:0}.x-border-box,.x-border-box *{box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box}.x-body{color:black;font-size:12px;font-family:tahoma,arial,verdana,sans-serif}.x-rtl{direction:rtl}.x-ltr{direction:ltr}.x-clear{overflow:hidden;clear:both;font-size:0;line-height:0;display:table}.x-strict .x-ie7 .x-clear{height:0;width:0}.x-layer{position:absolute!important;overflow:hidden;zoom:1}.x-shim{position:absolute;left:0;top:0;overflow:hidden;filter:alpha(opacity=0);opacity:0}.x-hide-display{display:none!important}.x-hide-visibility{visibility:hidden!important}.x-item-disabled .x-form-item-label,.x-item-disabled .x-form-field,.x-item-disabled .x-form-cb-label,.x-item-disabled .x-form-trigger{filter:alpha(opacity=30);opacity:.3}.x-ie6 .x-item-disabled{filter:none}.x-hidden,.x-hide-offsets{display:block!important;visibility:hidden!important;position:absolute!important;left:-10000px!important;top:-10000px!important}.x-hide-nosize{height:0!important;width:0!important}.x-masked-relative{position:relative}.x-ie6 .x-masked select,.x-ie6.x-body-masked select{visibility:hidden!important}.x-css-shadow{position:absolute;-moz-border-radius:5px 5px;-webkit-border-radius:5px 5px;-o-border-radius:5px 5px;-ms-border-radius:5px 5px;-khtml-border-radius:5px 5px;border-radius:5px 5px}.x-ie-shadow{background-color:#777;display:none;position:absolute;overflow:hidden;zoom:1}.x-box-tl{background:transparent no-repeat 0 0;zoom:1}.x-box-tc{height:8px;background:transparent repeat-x 0 0;overflow:hidden}.x-box-tr{background:transparent no-repeat right -8px}.x-box-ml{background:transparent repeat-y 0;padding-left:4px;overflow:hidden;zoom:1}.x-box-mc{background:repeat-x 0 -16px;padding:4px 10px}.x-box-mc h3{margin:0 0 4px 0;zoom:1}.x-box-mr{background:transparent repeat-y right;padding-right:4px;overflow:hidden}.x-box-bl{background:transparent no-repeat 0 -16px;zoom:1}.x-box-bc{background:transparent repeat-x 0 -8px;height:8px;overflow:hidden}.x-box-br{background:transparent no-repeat right -24px}.x-box-tl,.x-box-bl{padding-left:8px;overflow:hidden}.x-box-tr,.x-box-br{padding-right:8px;overflow:hidden}.x-box-tl{background-image:url('../../resources/themes/images/gray/box/corners.gif')}.x-box-tc{background-image:url('../../resources/themes/images/gray/box/tb.gif')}.x-box-tr{background-image:url('../../resources/themes/images/gray/box/corners.gif')}.x-box-ml{background-image:url('../../resources/themes/images/gray/box/l.gif')}.x-box-mc{background-color:#eee;background-image:url('../../resources/themes/images/gray/box/tb.gif');font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:15px}.x-box-mc h3{font-size:18px;font-weight:bold}.x-box-mr{background-image:url('../../resources/themes/images/gray/box/r.gif')}.x-box-bl{background-image:url('../../resources/themes/images/gray/box/corners.gif')}.x-box-bc{background-image:url('../../resources/themes/images/gray/box/tb.gif')}.x-box-br{background-image:url('../../resources/themes/images/gray/box/corners.gif')}.x-box-blue .x-box-bl,.x-box-blue .x-box-br,.x-box-blue .x-box-tl,.x-box-blue .x-box-tr{background-image:url('../../resources/themes/images/gray/box/corners-blue.gif')}.x-box-blue .x-box-bc,.x-box-blue .x-box-mc,.x-box-blue .x-box-tc{background-image:url('../../resources/themes/images/gray/box/tb-blue.gif')}.x-box-blue .x-box-mc{background-color:#c3daf9}.x-box-blue .x-box-mc h3{color:#17385b}.x-box-blue .x-box-ml{background-image:url('../../resources/themes/images/gray/box/l-blue.gif')}.x-box-blue .x-box-mr{background-image:url('../../resources/themes/images/gray/box/r-blue.gif')}.x-container{zoom:1}.x-container:before{content:"";clear:both;display:table}table.x-container:before,tbody.x-container:before,tr.x-container:before{display:none}.x-focus-element{position:absolute;top:-10px;left:-10px;width:0;height:0}.x-focus-frame{position:absolute;left:0;top:0;z-index:100000000;width:0;height:0}.x-focus-frame-top,.x-focus-frame-bottom,.x-focus-frame-left,.x-focus-frame-right{position:absolute;top:0;left:0}.x-focus-frame-top,.x-focus-frame-bottom{border-top:solid 2px #15428b;height:2px}.x-focus-frame-left,.x-focus-frame-right{border-left:solid 2px #15428b;width:2px}.x-mask{z-index:100;position:absolute;top:0;left:0;filter:alpha(opacity=50);opacity:.5;width:100%;height:100%;zoom:1;background:#ccc}.x-mask-msg{z-index:20001;position:absolute;top:0;left:0;padding:2px;border:1px solid;border-color:#d0d0d0;background-image:none;background-color:#e0e0e0}.x-mask-msg div{padding:5px 10px 5px 25px;background-image:url('../../resources/themes/images/gray/grid/loading.gif');background-repeat:no-repeat;background-position:5px center;cursor:wait;border:1px solid #b3b3b3;background-color:#eee;color:#222;font:normal 11px tahoma,arial,verdana,sans-serif}.x-boundlist{border-width:1px;border-style:solid;border-color:#b5b8c8;background:white}.x-boundlist .x-toolbar{border-width:1px 0 0 0}.x-strict .x-ie6 .x-boundlist-list-ct,.x-strict .x-ie7 .x-boundlist-list-ct{position:relative}.x-boundlist-item{padding:2px;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;cursor:pointer;cursor:hand;position:relative;border-width:1px;border-style:dotted;border-color:white}.x-boundlist-selected{background:#d3d3d3;border-color:#b3abaa}.x-boundlist-item-over{background:#e0e0e0;border-color:#bfb8b8}.x-boundlist-floating{border-top-width:0}.x-boundlist-above{border-top-width:1px;border-bottom-width:1px}.x-btn{display:inline-block;zoom:1;*display:inline;position:relative;cursor:pointer;cursor:hand;white-space:nowrap;vertical-align:middle;background-repeat:no-repeat}.x-btn *{cursor:pointer;cursor:hand}.x-btn em{background-repeat:no-repeat}.x-btn em a{text-decoration:none;display:block;color:inherit;width:100%;zoom:1}.x-btn button{width:100%;display:block;margin:0;padding:0;border:0;background:0;outline:0 none;overflow:hidden;vertical-align:bottom;-webkit-appearance:none}.x-btn button::-moz-focus-inner{border:0;padding:0}.x-btn .x-btn-inner{display:block;white-space:nowrap;background-color:transparent;background-repeat:no-repeat;background-position:left center;overflow:hidden}.x-btn .x-btn-left .x-btn-inner{text-align:left}.x-btn .x-btn-center .x-btn-inner{text-align:center}.x-btn .x-btn-right .x-btn-inner{text-align:right}.x-btn-disabled span{filter:alpha(opacity=50);opacity:.5}.x-ie6 .x-btn-disabled span,.x-ie7 .x-btn-disabled span{filter:none}.x-ie7 .x-btn-disabled,.x-ie8 .x-btn-disabled{filter:none}.x-ie6 .x-btn-disabled .x-btn-icon,.x-ie7 .x-btn-disabled .x-btn-icon,.x-ie8 .x-btn-disabled .x-btn-icon{filter:alpha(opacity=60);opacity:.6}.x-ie9 .x-btn button{overflow:visible!important}* html .x-ie .x-btn button{width:1px}.x-ie .x-btn button{overflow-x:visible;vertical-align:baseline}.x-strict .x-ie6 .x-btn .x-frame-mc,.x-strict .x-ie7 .x-btn .x-frame-mc{height:100%}.x-btn .x-frame-mc{vertical-align:middle;white-space:nowrap;cursor:pointer}.x-btn-noicon .x-frame-mc{text-align:center}.x-btn-icon-text-left .x-btn-icon{background-position:left center}.x-btn-icon-text-right .x-btn-icon{background-position:right center}.x-btn-icon-text-top .x-btn-icon{background-position:center top}.x-btn-icon-text-bottom .x-btn-icon{background-position:center bottom}.x-btn button,.x-btn a{position:relative}.x-btn button .x-btn-icon,.x-btn a .x-btn-icon{position:absolute;background-repeat:no-repeat}.x-btn-arrow-right{background:transparent no-repeat right center;padding-right:12px}.x-btn-arrow-right .x-btn-inner{padding-right:0!important}.x-toolbar .x-btn-arrow-right{padding-right:12px}.x-btn-arrow-bottom{background:transparent no-repeat center bottom;padding-bottom:12px}.x-btn-arrow{background-image:url('../../resources/themes/images/gray/button/arrow.gif');display:block}.x-btn-split-right,.x-btn-over .x-btn-split-right{background:transparent no-repeat right center;background-image:url('../../resources/themes/images/gray/button/s-arrow.gif');padding-right:14px!important}.x-btn-split-bottom,.x-btn-over .x-btn-split-bottom{background:transparent no-repeat center bottom;background-image:url('../../resources/themes/images/gray/button/s-arrow-b.gif');padding-bottom:14px}.x-toolbar .x-btn-split-right{background-image:url('../../resources/themes/images/gray/button/s-arrow-noline.gif');padding-right:12px!important}.x-toolbar .x-btn-split-bottom{background-image:url('../../resources/themes/images/gray/button/s-arrow-b-noline.gif')}.x-btn-split{display:block}.x-item-disabled,.x-item-disabled *{cursor:default}.x-cycle-fixed-width .x-btn-inner{text-align:inherit}.x-btn-over .x-btn-split-right{background-image:url('../../resources/themes/images/gray/button/s-arrow-o.gif')}.x-btn-over .x-btn-split-bottom{background-image:url('../../resources/themes/images/gray/button/s-arrow-bo.gif')}.x-btn-default-small{border-color:#bbb}.x-btn-default-small{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-image:none;background-color:#f8f8f8;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(100%,#eee));background-image:-webkit-linear-gradient(top,#fff,#eee);background-image:-moz-linear-gradient(top,#fff,#eee);background-image:-o-linear-gradient(top,#fff,#eee);background-image:-ms-linear-gradient(top,#fff,#eee);background-image:linear-gradient(top,#fff,#eee)}.x-nlg .x-btn-default-small-mc{background-image:url('../../resources/themes/images/gray/btn/btn-default-small-bg.gif');background-color:#f8f8f8}.x-nbr .x-btn-default-small{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-btn-default-small-tl,.x-nbr .x-btn-default-small-bl,.x-nbr .x-btn-default-small-tr,.x-nbr .x-btn-default-small-br,.x-nbr .x-btn-default-small-tc,.x-nbr .x-btn-default-small-bc,.x-nbr .x-btn-default-small-ml,.x-nbr .x-btn-default-small-mr{zoom:1;background-image:url('../../resources/themes/images/gray/btn/btn-default-small-corners.gif')}.x-nbr .x-btn-default-small-ml,.x-nbr .x-btn-default-small-mr{zoom:1;background-image:url('../../resources/themes/images/gray/btn/btn-default-small-sides.gif');background-position:0 0}.x-nbr .x-btn-default-small-mc{padding:0}.x-strict .x-ie7 .x-btn-default-small-tl,.x-strict .x-ie7 .x-btn-default-small-bl{position:relative;right:0}.x-btn-default-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 4px}.x-btn-default-small-icon button,.x-btn-default-small-icon a,.x-btn-default-small-icon .x-btn-inner,.x-btn-default-small-noicon button,.x-btn-default-small-noicon a,.x-btn-default-small-noicon .x-btn-inner{height:16px;line-height:16px}.x-btn-default-small-icon button,.x-btn-default-small-icon a{padding:0}.x-btn-default-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-small-icon .x-btn-icon{width:16px;height:16px;top:0;left:0;bottom:0;right:0}.x-btn-default-small-icon-text-left button,.x-btn-default-small-icon-text-left a{height:16px}.x-btn-default-small-icon-text-left .x-btn-inner{height:16px;line-height:16px;padding-left:20px}.x-btn-default-small-icon-text-left .x-btn-icon{width:16px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-small-icon-text-left .x-btn-icon{height:16px}.x-btn-default-small-icon-text-right button,.x-btn-default-small-icon-text-right a{height:16px}.x-btn-default-small-icon-text-right .x-btn-inner{height:16px;line-height:16px;padding-right:20px!important}.x-btn-default-small-icon-text-right .x-btn-icon{width:16px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-small-icon-text-right .x-btn-icon{height:16px}.x-btn-default-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-small-icon-text-top .x-btn-icon{width:auto;height:16px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon{width:16px}.x-btn-default-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-small-icon-text-bottom .x-btn-icon{width:auto;height:16px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon{width:16px}.x-btn-default-small-over{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-ms-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-small-focus{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-ms-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-small-menu-active,.x-btn-default-small-pressed{border-color:#9d9d9d;background-image:none;background-color:#d6d6d6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#c7c7c7),color-stop(100%,#e0e0e0));background-image:-webkit-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-moz-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-o-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-ms-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:linear-gradient(top,#c7c7c7,#e0e0e0)}.x-btn-default-small-disabled{border-color:#d7d7d7;background-image:none;background-color:#ececec;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f4f4f4),color-stop(100%,#e2e2e2));background-image:-webkit-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:-moz-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:-o-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:-ms-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:linear-gradient(top,#f4f4f4,#e2e2e2)}.x-btn-default-small-disabled .x-btn-inner{color:#333!important}.x-ie .x-btn-default-small-disabled .x-btn-inner{color:#595959!important}.x-ie6 .x-btn-default-small-disabled .x-btn-inner{color:#8c8c8c!important}.x-nbr .x-btn-default-small-over .x-frame-tl,.x-nbr .x-btn-default-small-over .x-frame-bl,.x-nbr .x-btn-default-small-over .x-frame-tr,.x-nbr .x-btn-default-small-over .x-frame-br,.x-nbr .x-btn-default-small-over .x-frame-tc,.x-nbr .x-btn-default-small-over .x-frame-bc{background-image:url('../../resources/themes/images/gray/btn/btn-default-small-over-corners.gif')}.x-nbr .x-btn-default-small-over .x-frame-ml,.x-nbr .x-btn-default-small-over .x-frame-mr{background-image:url('../../resources/themes/images/gray/btn/btn-default-small-over-sides.gif')}.x-nbr .x-btn-default-small-over .x-frame-mc{background-color:#f3f3f3;background-image:url('../../resources/themes/images/gray/btn/btn-default-small-over-bg.gif')}.x-nbr .x-btn-default-small-focus .x-frame-tl,.x-nbr .x-btn-default-small-focus .x-frame-bl,.x-nbr .x-btn-default-small-focus .x-frame-tr,.x-nbr .x-btn-default-small-focus .x-frame-br,.x-nbr .x-btn-default-small-focus .x-frame-tc,.x-nbr .x-btn-default-small-focus .x-frame-bc{background-image:url('../../resources/themes/images/gray/btn/btn-default-small-focus-corners.gif')}.x-nbr .x-btn-default-small-focus .x-frame-ml,.x-nbr .x-btn-default-small-focus .x-frame-mr{background-image:url('../../resources/themes/images/gray/btn/btn-default-small-focus-sides.gif')}.x-nbr .x-btn-default-small-focus .x-frame-mc{background-color:#f3f3f3;background-image:url('../../resources/themes/images/gray/btn/btn-default-small-focus-bg.gif')}.x-nbr .x-btn-default-small-menu-active .x-frame-tl,.x-nbr .x-btn-default-small-menu-active .x-frame-bl,.x-nbr .x-btn-default-small-menu-active .x-frame-tr,.x-nbr .x-btn-default-small-menu-active .x-frame-br,.x-nbr .x-btn-default-small-menu-active .x-frame-tc,.x-nbr .x-btn-default-small-menu-active .x-frame-bc,.x-nbr .x-btn-default-small-pressed .x-frame-tl,.x-nbr .x-btn-default-small-pressed .x-frame-bl,.x-nbr .x-btn-default-small-pressed .x-frame-tr,.x-nbr .x-btn-default-small-pressed .x-frame-br,.x-nbr .x-btn-default-small-pressed .x-frame-tc,.x-nbr .x-btn-default-small-pressed .x-frame-bc{background-image:url('../../resources/themes/images/gray/btn/btn-default-small-pressed-corners.gif')}.x-nbr .x-btn-default-small-menu-active .x-frame-ml,.x-nbr .x-btn-default-small-menu-active .x-frame-mr,.x-nbr .x-btn-default-small-pressed .x-frame-ml,.x-nbr .x-btn-default-small-pressed .x-frame-mr{background-image:url('../../resources/themes/images/gray/btn/btn-default-small-pressed-sides.gif')}.x-nbr .x-btn-default-small-menu-active .x-frame-mc,.x-nbr .x-btn-default-small-pressed .x-frame-mc{background-color:#d6d6d6;background-image:url('../../resources/themes/images/gray/btn/btn-default-small-pressed-bg.gif')}.x-nbr .x-btn-default-small-disabled .x-frame-tl,.x-nbr .x-btn-default-small-disabled .x-frame-bl,.x-nbr .x-btn-default-small-disabled .x-frame-tr,.x-nbr .x-btn-default-small-disabled .x-frame-br,.x-nbr .x-btn-default-small-disabled .x-frame-tc,.x-nbr .x-btn-default-small-disabled .x-frame-bc{background-image:url('../../resources/themes/images/gray/btn/btn-default-small-disabled-corners.gif')}.x-nbr .x-btn-default-small-disabled .x-frame-ml,.x-nbr .x-btn-default-small-disabled .x-frame-mr{background-image:url('../../resources/themes/images/gray/btn/btn-default-small-disabled-sides.gif')}.x-nbr .x-btn-default-small-disabled .x-frame-mc{background-color:#ececec;background-image:url('../../resources/themes/images/gray/btn/btn-default-small-disabled-bg.gif')}.x-nlg .x-btn-default-small{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/btn/btn-default-small-bg.gif')}.x-nlg .x-btn-default-small-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/btn/btn-default-small-over-bg.gif')}.x-nlg .x-btn-default-small-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/btn/btn-default-small-focus-bg.gif')}.x-nlg .x-btn-default-small-menu-active,.x-nlg .x-btn-default-small-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/btn/btn-default-small-pressed-bg.gif')}.x-nlg .x-btn-default-small-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/btn/btn-default-small-disabled-bg.gif')}.x-btn-default-medium{border-color:#bbb}.x-btn-default-medium{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:#f8f8f8;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(100%,#eee));background-image:-webkit-linear-gradient(top,#fff,#eee);background-image:-moz-linear-gradient(top,#fff,#eee);background-image:-o-linear-gradient(top,#fff,#eee);background-image:-ms-linear-gradient(top,#fff,#eee);background-image:linear-gradient(top,#fff,#eee)}.x-nlg .x-btn-default-medium-mc{background-image:url('../../resources/themes/images/gray/btn/btn-default-medium-bg.gif');background-color:#f8f8f8}.x-nbr .x-btn-default-medium{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-btn-default-medium-tl,.x-nbr .x-btn-default-medium-bl,.x-nbr .x-btn-default-medium-tr,.x-nbr .x-btn-default-medium-br,.x-nbr .x-btn-default-medium-tc,.x-nbr .x-btn-default-medium-bc,.x-nbr .x-btn-default-medium-ml,.x-nbr .x-btn-default-medium-mr{zoom:1;background-image:url('../../resources/themes/images/gray/btn/btn-default-medium-corners.gif')}.x-nbr .x-btn-default-medium-ml,.x-nbr .x-btn-default-medium-mr{zoom:1;background-image:url('../../resources/themes/images/gray/btn/btn-default-medium-sides.gif');background-position:0 0}.x-nbr .x-btn-default-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-medium-tl,.x-strict .x-ie7 .x-btn-default-medium-bl{position:relative;right:0}.x-btn-default-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-btn-default-medium-icon button,.x-btn-default-medium-icon a,.x-btn-default-medium-icon .x-btn-inner,.x-btn-default-medium-noicon button,.x-btn-default-medium-noicon a,.x-btn-default-medium-noicon .x-btn-inner{height:24px;line-height:24px}.x-btn-default-medium-icon button,.x-btn-default-medium-icon a{padding:0}.x-btn-default-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-medium-icon .x-btn-icon{width:24px;height:24px;top:0;left:0;bottom:0;right:0}.x-btn-default-medium-icon-text-left button,.x-btn-default-medium-icon-text-left a{height:24px}.x-btn-default-medium-icon-text-left .x-btn-inner{height:24px;line-height:24px;padding-left:28px}.x-btn-default-medium-icon-text-left .x-btn-icon{width:24px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon{height:24px}.x-btn-default-medium-icon-text-right button,.x-btn-default-medium-icon-text-right a{height:24px}.x-btn-default-medium-icon-text-right .x-btn-inner{height:24px;line-height:24px;padding-right:28px!important}.x-btn-default-medium-icon-text-right .x-btn-icon{width:24px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon{height:24px}.x-btn-default-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-medium-icon-text-top .x-btn-icon{width:auto;height:24px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon{width:24px}.x-btn-default-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-medium-icon-text-bottom .x-btn-icon{width:auto;height:24px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon{width:24px}.x-btn-default-medium-over{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-ms-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-medium-focus{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-ms-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-medium-menu-active,.x-btn-default-medium-pressed{border-color:#9d9d9d;background-image:none;background-color:#d6d6d6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#c7c7c7),color-stop(100%,#e0e0e0));background-image:-webkit-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-moz-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-o-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-ms-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:linear-gradient(top,#c7c7c7,#e0e0e0)}.x-btn-default-medium-disabled{border-color:#d7d7d7;background-image:none;background-color:#ececec;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f4f4f4),color-stop(100%,#e2e2e2));background-image:-webkit-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:-moz-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:-o-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:-ms-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:linear-gradient(top,#f4f4f4,#e2e2e2)}.x-btn-default-medium-disabled .x-btn-inner{color:#333!important}.x-ie .x-btn-default-medium-disabled .x-btn-inner{color:#595959!important}.x-ie6 .x-btn-default-medium-disabled .x-btn-inner{color:#8c8c8c!important}.x-nbr .x-btn-default-medium-over .x-frame-tl,.x-nbr .x-btn-default-medium-over .x-frame-bl,.x-nbr .x-btn-default-medium-over .x-frame-tr,.x-nbr .x-btn-default-medium-over .x-frame-br,.x-nbr .x-btn-default-medium-over .x-frame-tc,.x-nbr .x-btn-default-medium-over .x-frame-bc{background-image:url('../../resources/themes/images/gray/btn/btn-default-medium-over-corners.gif')}.x-nbr .x-btn-default-medium-over .x-frame-ml,.x-nbr .x-btn-default-medium-over .x-frame-mr{background-image:url('../../resources/themes/images/gray/btn/btn-default-medium-over-sides.gif')}.x-nbr .x-btn-default-medium-over .x-frame-mc{background-color:#f3f3f3;background-image:url('../../resources/themes/images/gray/btn/btn-default-medium-over-bg.gif')}.x-nbr .x-btn-default-medium-focus .x-frame-tl,.x-nbr .x-btn-default-medium-focus .x-frame-bl,.x-nbr .x-btn-default-medium-focus .x-frame-tr,.x-nbr .x-btn-default-medium-focus .x-frame-br,.x-nbr .x-btn-default-medium-focus .x-frame-tc,.x-nbr .x-btn-default-medium-focus .x-frame-bc{background-image:url('../../resources/themes/images/gray/btn/btn-default-medium-focus-corners.gif')}.x-nbr .x-btn-default-medium-focus .x-frame-ml,.x-nbr .x-btn-default-medium-focus .x-frame-mr{background-image:url('../../resources/themes/images/gray/btn/btn-default-medium-focus-sides.gif')}.x-nbr .x-btn-default-medium-focus .x-frame-mc{background-color:#f3f3f3;background-image:url('../../resources/themes/images/gray/btn/btn-default-medium-focus-bg.gif')}.x-nbr .x-btn-default-medium-menu-active .x-frame-tl,.x-nbr .x-btn-default-medium-menu-active .x-frame-bl,.x-nbr .x-btn-default-medium-menu-active .x-frame-tr,.x-nbr .x-btn-default-medium-menu-active .x-frame-br,.x-nbr .x-btn-default-medium-menu-active .x-frame-tc,.x-nbr .x-btn-default-medium-menu-active .x-frame-bc,.x-nbr .x-btn-default-medium-pressed .x-frame-tl,.x-nbr .x-btn-default-medium-pressed .x-frame-bl,.x-nbr .x-btn-default-medium-pressed .x-frame-tr,.x-nbr .x-btn-default-medium-pressed .x-frame-br,.x-nbr .x-btn-default-medium-pressed .x-frame-tc,.x-nbr .x-btn-default-medium-pressed .x-frame-bc{background-image:url('../../resources/themes/images/gray/btn/btn-default-medium-pressed-corners.gif')}.x-nbr .x-btn-default-medium-menu-active .x-frame-ml,.x-nbr .x-btn-default-medium-menu-active .x-frame-mr,.x-nbr .x-btn-default-medium-pressed .x-frame-ml,.x-nbr .x-btn-default-medium-pressed .x-frame-mr{background-image:url('../../resources/themes/images/gray/btn/btn-default-medium-pressed-sides.gif')}.x-nbr .x-btn-default-medium-menu-active .x-frame-mc,.x-nbr .x-btn-default-medium-pressed .x-frame-mc{background-color:#d6d6d6;background-image:url('../../resources/themes/images/gray/btn/btn-default-medium-pressed-bg.gif')}.x-nbr .x-btn-default-medium-disabled .x-frame-tl,.x-nbr .x-btn-default-medium-disabled .x-frame-bl,.x-nbr .x-btn-default-medium-disabled .x-frame-tr,.x-nbr .x-btn-default-medium-disabled .x-frame-br,.x-nbr .x-btn-default-medium-disabled .x-frame-tc,.x-nbr .x-btn-default-medium-disabled .x-frame-bc{background-image:url('../../resources/themes/images/gray/btn/btn-default-medium-disabled-corners.gif')}.x-nbr .x-btn-default-medium-disabled .x-frame-ml,.x-nbr .x-btn-default-medium-disabled .x-frame-mr{background-image:url('../../resources/themes/images/gray/btn/btn-default-medium-disabled-sides.gif')}.x-nbr .x-btn-default-medium-disabled .x-frame-mc{background-color:#ececec;background-image:url('../../resources/themes/images/gray/btn/btn-default-medium-disabled-bg.gif')}.x-nlg .x-btn-default-medium{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/btn/btn-default-medium-bg.gif')}.x-nlg .x-btn-default-medium-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/btn/btn-default-medium-over-bg.gif')}.x-nlg .x-btn-default-medium-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/btn/btn-default-medium-focus-bg.gif')}.x-nlg .x-btn-default-medium-menu-active,.x-nlg .x-btn-default-medium-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/btn/btn-default-medium-pressed-bg.gif')}.x-nlg .x-btn-default-medium-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/btn/btn-default-medium-disabled-bg.gif')}.x-btn-default-large{border-color:#bbb}.x-btn-default-large{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:#f8f8f8;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(100%,#eee));background-image:-webkit-linear-gradient(top,#fff,#eee);background-image:-moz-linear-gradient(top,#fff,#eee);background-image:-o-linear-gradient(top,#fff,#eee);background-image:-ms-linear-gradient(top,#fff,#eee);background-image:linear-gradient(top,#fff,#eee)}.x-nlg .x-btn-default-large-mc{background-image:url('../../resources/themes/images/gray/btn/btn-default-large-bg.gif');background-color:#f8f8f8}.x-nbr .x-btn-default-large{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-btn-default-large-tl,.x-nbr .x-btn-default-large-bl,.x-nbr .x-btn-default-large-tr,.x-nbr .x-btn-default-large-br,.x-nbr .x-btn-default-large-tc,.x-nbr .x-btn-default-large-bc,.x-nbr .x-btn-default-large-ml,.x-nbr .x-btn-default-large-mr{zoom:1;background-image:url('../../resources/themes/images/gray/btn/btn-default-large-corners.gif')}.x-nbr .x-btn-default-large-ml,.x-nbr .x-btn-default-large-mr{zoom:1;background-image:url('../../resources/themes/images/gray/btn/btn-default-large-sides.gif');background-position:0 0}.x-nbr .x-btn-default-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-large-tl,.x-strict .x-ie7 .x-btn-default-large-bl{position:relative;right:0}.x-btn-default-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-btn-default-large-icon button,.x-btn-default-large-icon a,.x-btn-default-large-icon .x-btn-inner,.x-btn-default-large-noicon button,.x-btn-default-large-noicon a,.x-btn-default-large-noicon .x-btn-inner{height:32px;line-height:32px}.x-btn-default-large-icon button,.x-btn-default-large-icon a{padding:0}.x-btn-default-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-large-icon .x-btn-icon{width:32px;height:32px;top:0;left:0;bottom:0;right:0}.x-btn-default-large-icon-text-left button,.x-btn-default-large-icon-text-left a{height:32px}.x-btn-default-large-icon-text-left .x-btn-inner{height:32px;line-height:32px;padding-left:36px}.x-btn-default-large-icon-text-left .x-btn-icon{width:32px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-large-icon-text-left .x-btn-icon{height:32px}.x-btn-default-large-icon-text-right button,.x-btn-default-large-icon-text-right a{height:32px}.x-btn-default-large-icon-text-right .x-btn-inner{height:32px;line-height:32px;padding-right:36px!important}.x-btn-default-large-icon-text-right .x-btn-icon{width:32px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-large-icon-text-right .x-btn-icon{height:32px}.x-btn-default-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-large-icon-text-top .x-btn-icon{width:auto;height:32px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon{width:32px}.x-btn-default-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-large-icon-text-bottom .x-btn-icon{width:auto;height:32px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon{width:32px}.x-btn-default-large-over{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-ms-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-large-focus{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-ms-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-large-menu-active,.x-btn-default-large-pressed{border-color:#9d9d9d;background-image:none;background-color:#d6d6d6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#c7c7c7),color-stop(100%,#e0e0e0));background-image:-webkit-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-moz-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-o-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-ms-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:linear-gradient(top,#c7c7c7,#e0e0e0)}.x-btn-default-large-disabled{border-color:#d7d7d7;background-image:none;background-color:#ececec;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f4f4f4),color-stop(100%,#e2e2e2));background-image:-webkit-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:-moz-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:-o-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:-ms-linear-gradient(top,#f4f4f4,#e2e2e2);background-image:linear-gradient(top,#f4f4f4,#e2e2e2)}.x-btn-default-large-disabled .x-btn-inner{color:#333!important}.x-ie .x-btn-default-large-disabled .x-btn-inner{color:#595959!important}.x-ie6 .x-btn-default-large-disabled .x-btn-inner{color:#8c8c8c!important}.x-nbr .x-btn-default-large-over .x-frame-tl,.x-nbr .x-btn-default-large-over .x-frame-bl,.x-nbr .x-btn-default-large-over .x-frame-tr,.x-nbr .x-btn-default-large-over .x-frame-br,.x-nbr .x-btn-default-large-over .x-frame-tc,.x-nbr .x-btn-default-large-over .x-frame-bc{background-image:url('../../resources/themes/images/gray/btn/btn-default-large-over-corners.gif')}.x-nbr .x-btn-default-large-over .x-frame-ml,.x-nbr .x-btn-default-large-over .x-frame-mr{background-image:url('../../resources/themes/images/gray/btn/btn-default-large-over-sides.gif')}.x-nbr .x-btn-default-large-over .x-frame-mc{background-color:#f3f3f3;background-image:url('../../resources/themes/images/gray/btn/btn-default-large-over-bg.gif')}.x-nbr .x-btn-default-large-focus .x-frame-tl,.x-nbr .x-btn-default-large-focus .x-frame-bl,.x-nbr .x-btn-default-large-focus .x-frame-tr,.x-nbr .x-btn-default-large-focus .x-frame-br,.x-nbr .x-btn-default-large-focus .x-frame-tc,.x-nbr .x-btn-default-large-focus .x-frame-bc{background-image:url('../../resources/themes/images/gray/btn/btn-default-large-focus-corners.gif')}.x-nbr .x-btn-default-large-focus .x-frame-ml,.x-nbr .x-btn-default-large-focus .x-frame-mr{background-image:url('../../resources/themes/images/gray/btn/btn-default-large-focus-sides.gif')}.x-nbr .x-btn-default-large-focus .x-frame-mc{background-color:#f3f3f3;background-image:url('../../resources/themes/images/gray/btn/btn-default-large-focus-bg.gif')}.x-nbr .x-btn-default-large-menu-active .x-frame-tl,.x-nbr .x-btn-default-large-menu-active .x-frame-bl,.x-nbr .x-btn-default-large-menu-active .x-frame-tr,.x-nbr .x-btn-default-large-menu-active .x-frame-br,.x-nbr .x-btn-default-large-menu-active .x-frame-tc,.x-nbr .x-btn-default-large-menu-active .x-frame-bc,.x-nbr .x-btn-default-large-pressed .x-frame-tl,.x-nbr .x-btn-default-large-pressed .x-frame-bl,.x-nbr .x-btn-default-large-pressed .x-frame-tr,.x-nbr .x-btn-default-large-pressed .x-frame-br,.x-nbr .x-btn-default-large-pressed .x-frame-tc,.x-nbr .x-btn-default-large-pressed .x-frame-bc{background-image:url('../../resources/themes/images/gray/btn/btn-default-large-pressed-corners.gif')}.x-nbr .x-btn-default-large-menu-active .x-frame-ml,.x-nbr .x-btn-default-large-menu-active .x-frame-mr,.x-nbr .x-btn-default-large-pressed .x-frame-ml,.x-nbr .x-btn-default-large-pressed .x-frame-mr{background-image:url('../../resources/themes/images/gray/btn/btn-default-large-pressed-sides.gif')}.x-nbr .x-btn-default-large-menu-active .x-frame-mc,.x-nbr .x-btn-default-large-pressed .x-frame-mc{background-color:#d6d6d6;background-image:url('../../resources/themes/images/gray/btn/btn-default-large-pressed-bg.gif')}.x-nbr .x-btn-default-large-disabled .x-frame-tl,.x-nbr .x-btn-default-large-disabled .x-frame-bl,.x-nbr .x-btn-default-large-disabled .x-frame-tr,.x-nbr .x-btn-default-large-disabled .x-frame-br,.x-nbr .x-btn-default-large-disabled .x-frame-tc,.x-nbr .x-btn-default-large-disabled .x-frame-bc{background-image:url('../../resources/themes/images/gray/btn/btn-default-large-disabled-corners.gif')}.x-nbr .x-btn-default-large-disabled .x-frame-ml,.x-nbr .x-btn-default-large-disabled .x-frame-mr{background-image:url('../../resources/themes/images/gray/btn/btn-default-large-disabled-sides.gif')}.x-nbr .x-btn-default-large-disabled .x-frame-mc{background-color:#ececec;background-image:url('../../resources/themes/images/gray/btn/btn-default-large-disabled-bg.gif')}.x-nlg .x-btn-default-large{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/btn/btn-default-large-bg.gif')}.x-nlg .x-btn-default-large-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/btn/btn-default-large-over-bg.gif')}.x-nlg .x-btn-default-large-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/btn/btn-default-large-focus-bg.gif')}.x-nlg .x-btn-default-large-menu-active,.x-nlg .x-btn-default-large-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/btn/btn-default-large-pressed-bg.gif')}.x-nlg .x-btn-default-large-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/btn/btn-default-large-disabled-bg.gif')}.x-btn-default-toolbar-small{border-color:transparent}.x-btn-default-toolbar-small{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:transparent}.x-nlg .x-btn-default-toolbar-small-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-small{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-btn-default-toolbar-small-tl,.x-nbr .x-btn-default-toolbar-small-bl,.x-nbr .x-btn-default-toolbar-small-tr,.x-nbr .x-btn-default-toolbar-small-br,.x-nbr .x-btn-default-toolbar-small-tc,.x-nbr .x-btn-default-toolbar-small-bc,.x-nbr .x-btn-default-toolbar-small-ml,.x-nbr .x-btn-default-toolbar-small-mr{zoom:1}.x-nbr .x-btn-default-toolbar-small-ml,.x-nbr .x-btn-default-toolbar-small-mr{zoom:1}.x-nbr .x-btn-default-toolbar-small-mc{padding:0}.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,.x-strict .x-ie7 .x-btn-default-toolbar-small-bl{position:relative;right:0}.x-btn-default-toolbar-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 4px}.x-btn-default-toolbar-small-icon button,.x-btn-default-toolbar-small-icon a,.x-btn-default-toolbar-small-icon .x-btn-inner,.x-btn-default-toolbar-small-noicon button,.x-btn-default-toolbar-small-noicon a,.x-btn-default-toolbar-small-noicon .x-btn-inner{height:16px;line-height:16px}.x-btn-default-toolbar-small-icon button,.x-btn-default-toolbar-small-icon a{padding:0}.x-btn-default-toolbar-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-toolbar-small-icon .x-btn-icon{width:16px;height:16px;top:0;left:0;bottom:0;right:0}.x-btn-default-toolbar-small-icon-text-left button,.x-btn-default-toolbar-small-icon-text-left a{height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-inner{height:16px;line-height:16px;padding-left:20px}.x-btn-default-toolbar-small-icon-text-left .x-btn-icon{width:16px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon{height:16px}.x-btn-default-toolbar-small-icon-text-right button,.x-btn-default-toolbar-small-icon-text-right a{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-btn-inner{height:16px;line-height:16px;padding-right:20px!important}.x-btn-default-toolbar-small-icon-text-right .x-btn-icon{width:16px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon{height:16px}.x-btn-default-toolbar-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-toolbar-small-icon-text-top .x-btn-icon{width:auto;height:16px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon{width:16px}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon{width:auto;height:16px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon{width:16px}.x-btn-default-toolbar-small-over{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-ms-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-toolbar-small-focus{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-ms-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-toolbar-small-menu-active,.x-btn-default-toolbar-small-pressed{border-color:#9d9d9d;background-image:none;background-color:#d6d6d6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#c7c7c7),color-stop(100%,#e0e0e0));background-image:-webkit-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-moz-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-o-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-ms-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:linear-gradient(top,#c7c7c7,#e0e0e0)}.x-btn-default-toolbar-small-disabled{border-color:#d7d7d7;background-image:none;background-color:transparent}.x-btn-default-toolbar-small-disabled .x-btn-inner{color:#333!important}.x-ie .x-btn-default-toolbar-small-disabled .x-btn-inner{color:#595959!important}.x-ie6 .x-btn-default-toolbar-small-disabled .x-btn-inner{color:#8c8c8c!important}.x-nbr .x-btn-default-toolbar-small-over .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-over .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-over .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-over .x-frame-br,.x-nbr .x-btn-default-toolbar-small-over .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-over .x-frame-bc{background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-over-corners.gif')}.x-nbr .x-btn-default-toolbar-small-over .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-over .x-frame-mr{background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-over-sides.gif')}.x-nbr .x-btn-default-toolbar-small-over .x-frame-mc{background-color:#f3f3f3;background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-over-bg.gif')}.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-br,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-bc{background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-focus-corners.gif')}.x-nbr .x-btn-default-toolbar-small-focus .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-mr{background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-focus-sides.gif')}.x-nbr .x-btn-default-toolbar-small-focus .x-frame-mc{background-color:#f3f3f3;background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-focus-bg.gif')}.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-br,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bc,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-br,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bc{background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-pressed-corners.gif')}.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mr,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mr{background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-pressed-sides.gif')}.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mc,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mc{background-color:#d6d6d6;background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-pressed-bg.gif')}.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-br,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bc{background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-disabled-corners.gif')}.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mr{background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-disabled-sides.gif')}.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-small-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-over-bg.gif')}.x-nlg .x-btn-default-toolbar-small-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-focus-bg.gif')}.x-nlg .x-btn-default-toolbar-small-menu-active,.x-nlg .x-btn-default-toolbar-small-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-small-pressed-bg.gif')}.x-btn-default-toolbar-medium{border-color:transparent}.x-btn-default-toolbar-medium{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-nlg .x-btn-default-toolbar-medium-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-medium{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-btn-default-toolbar-medium-tl,.x-nbr .x-btn-default-toolbar-medium-bl,.x-nbr .x-btn-default-toolbar-medium-tr,.x-nbr .x-btn-default-toolbar-medium-br,.x-nbr .x-btn-default-toolbar-medium-tc,.x-nbr .x-btn-default-toolbar-medium-bc,.x-nbr .x-btn-default-toolbar-medium-ml,.x-nbr .x-btn-default-toolbar-medium-mr{zoom:1}.x-nbr .x-btn-default-toolbar-medium-ml,.x-nbr .x-btn-default-toolbar-medium-mr{zoom:1}.x-nbr .x-btn-default-toolbar-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl{position:relative;right:0}.x-btn-default-toolbar-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-btn-default-toolbar-medium-icon button,.x-btn-default-toolbar-medium-icon a,.x-btn-default-toolbar-medium-icon .x-btn-inner,.x-btn-default-toolbar-medium-noicon button,.x-btn-default-toolbar-medium-noicon a,.x-btn-default-toolbar-medium-noicon .x-btn-inner{height:24px;line-height:24px}.x-btn-default-toolbar-medium-icon button,.x-btn-default-toolbar-medium-icon a{padding:0}.x-btn-default-toolbar-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-toolbar-medium-icon .x-btn-icon{width:24px;height:24px;top:0;left:0;bottom:0;right:0}.x-btn-default-toolbar-medium-icon-text-left button,.x-btn-default-toolbar-medium-icon-text-left a{height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner{height:24px;line-height:24px;padding-left:28px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon{width:24px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon{height:24px}.x-btn-default-toolbar-medium-icon-text-right button,.x-btn-default-toolbar-medium-icon-text-right a{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner{height:24px;line-height:24px;padding-right:28px!important}.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon{width:24px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon{height:24px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon{width:auto;height:24px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon{width:24px}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon{width:auto;height:24px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon{width:24px}.x-btn-default-toolbar-medium-over{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-ms-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-toolbar-medium-focus{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-ms-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-toolbar-medium-menu-active,.x-btn-default-toolbar-medium-pressed{border-color:#9d9d9d;background-image:none;background-color:#d6d6d6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#c7c7c7),color-stop(100%,#e0e0e0));background-image:-webkit-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-moz-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-o-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-ms-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:linear-gradient(top,#c7c7c7,#e0e0e0)}.x-btn-default-toolbar-medium-disabled{border-color:#d7d7d7;background-image:none;background-color:transparent}.x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#333!important}.x-ie .x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#595959!important}.x-ie6 .x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#8c8c8c!important}.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-bc{background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-over-corners.gif')}.x-nbr .x-btn-default-toolbar-medium-over .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-mr{background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-over-sides.gif')}.x-nbr .x-btn-default-toolbar-medium-over .x-frame-mc{background-color:#f3f3f3;background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-over-bg.gif')}.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bc{background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-focus-corners.gif')}.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mr{background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-focus-sides.gif')}.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mc{background-color:#f3f3f3;background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-focus-bg.gif')}.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bc,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bc{background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-pressed-corners.gif')}.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mr,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mr{background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-pressed-sides.gif')}.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mc,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mc{background-color:#d6d6d6;background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-pressed-bg.gif')}.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bc{background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-disabled-corners.gif')}.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mr{background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-disabled-sides.gif')}.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-medium-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-over-bg.gif')}.x-nlg .x-btn-default-toolbar-medium-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-focus-bg.gif')}.x-nlg .x-btn-default-toolbar-medium-menu-active,.x-nlg .x-btn-default-toolbar-medium-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-medium-pressed-bg.gif')}.x-btn-default-toolbar-large{border-color:transparent}.x-btn-default-toolbar-large{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-nlg .x-btn-default-toolbar-large-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-large{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-btn-default-toolbar-large-tl,.x-nbr .x-btn-default-toolbar-large-bl,.x-nbr .x-btn-default-toolbar-large-tr,.x-nbr .x-btn-default-toolbar-large-br,.x-nbr .x-btn-default-toolbar-large-tc,.x-nbr .x-btn-default-toolbar-large-bc,.x-nbr .x-btn-default-toolbar-large-ml,.x-nbr .x-btn-default-toolbar-large-mr{zoom:1}.x-nbr .x-btn-default-toolbar-large-ml,.x-nbr .x-btn-default-toolbar-large-mr{zoom:1}.x-nbr .x-btn-default-toolbar-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,.x-strict .x-ie7 .x-btn-default-toolbar-large-bl{position:relative;right:0}.x-btn-default-toolbar-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-btn-default-toolbar-large-icon button,.x-btn-default-toolbar-large-icon a,.x-btn-default-toolbar-large-icon .x-btn-inner,.x-btn-default-toolbar-large-noicon button,.x-btn-default-toolbar-large-noicon a,.x-btn-default-toolbar-large-noicon .x-btn-inner{height:32px;line-height:32px}.x-btn-default-toolbar-large-icon button,.x-btn-default-toolbar-large-icon a{padding:0}.x-btn-default-toolbar-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-toolbar-large-icon .x-btn-icon{width:32px;height:32px;top:0;left:0;bottom:0;right:0}.x-btn-default-toolbar-large-icon-text-left button,.x-btn-default-toolbar-large-icon-text-left a{height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-inner{height:32px;line-height:32px;padding-left:36px}.x-btn-default-toolbar-large-icon-text-left .x-btn-icon{width:32px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon{height:32px}.x-btn-default-toolbar-large-icon-text-right button,.x-btn-default-toolbar-large-icon-text-right a{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-btn-inner{height:32px;line-height:32px;padding-right:36px!important}.x-btn-default-toolbar-large-icon-text-right .x-btn-icon{width:32px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon{height:32px}.x-btn-default-toolbar-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-toolbar-large-icon-text-top .x-btn-icon{width:auto;height:32px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon{width:32px}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon{width:auto;height:32px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon{width:32px}.x-btn-default-toolbar-large-over{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-ms-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-toolbar-large-focus{border-color:#9d9d9d;background-image:none;background-color:#f3f3f3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fbfbfb),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-moz-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-o-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:-ms-linear-gradient(top,#fbfbfb,#e9e9e9);background-image:linear-gradient(top,#fbfbfb,#e9e9e9)}.x-btn-default-toolbar-large-menu-active,.x-btn-default-toolbar-large-pressed{border-color:#9d9d9d;background-image:none;background-color:#d6d6d6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#c7c7c7),color-stop(100%,#e0e0e0));background-image:-webkit-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-moz-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-o-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:-ms-linear-gradient(top,#c7c7c7,#e0e0e0);background-image:linear-gradient(top,#c7c7c7,#e0e0e0)}.x-btn-default-toolbar-large-disabled{border-color:#d7d7d7;background-image:none;background-color:transparent}.x-btn-default-toolbar-large-disabled .x-btn-inner{color:#333!important}.x-ie .x-btn-default-toolbar-large-disabled .x-btn-inner{color:#595959!important}.x-ie6 .x-btn-default-toolbar-large-disabled .x-btn-inner{color:#8c8c8c!important}.x-nbr .x-btn-default-toolbar-large-over .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-over .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-over .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-over .x-frame-br,.x-nbr .x-btn-default-toolbar-large-over .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-over .x-frame-bc{background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-over-corners.gif')}.x-nbr .x-btn-default-toolbar-large-over .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-over .x-frame-mr{background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-over-sides.gif')}.x-nbr .x-btn-default-toolbar-large-over .x-frame-mc{background-color:#f3f3f3;background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-over-bg.gif')}.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-br,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-bc{background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-focus-corners.gif')}.x-nbr .x-btn-default-toolbar-large-focus .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-mr{background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-focus-sides.gif')}.x-nbr .x-btn-default-toolbar-large-focus .x-frame-mc{background-color:#f3f3f3;background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-focus-bg.gif')}.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-br,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bc,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-br,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bc{background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-pressed-corners.gif')}.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mr,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mr{background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-pressed-sides.gif')}.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mc,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mc{background-color:#d6d6d6;background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-pressed-bg.gif')}.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-br,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bc{background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-disabled-corners.gif')}.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mr{background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-disabled-sides.gif')}.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-large-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-over-bg.gif')}.x-nlg .x-btn-default-toolbar-large-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-focus-bg.gif')}.x-nlg .x-btn-default-toolbar-large-menu-active,.x-nlg .x-btn-default-toolbar-large-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/btn/btn-default-toolbar-large-pressed-bg.gif')}.x-btn-default-toolbar-small-disabled,.x-btn-default-toolbar-medium-disabled,.x-btn-default-toolbar-large-disabled{border-color:transparent;background-image:none;background:transparent}.x-btn-group{position:relative;overflow:hidden}.x-btn-group-body{position:relative;zoom:1;padding:0 1px}.x-btn-group-body .x-table-layout-cell{vertical-align:top}.x-btn-group-header-text{white-space:nowrap}.x-btn-group-default-framed{-moz-border-radius:2px;-webkit-border-radius:2px;-o-border-radius:2px;-ms-border-radius:2px;-khtml-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#f0f0f0}.x-nlg .x-btn-group-default-framed-mc{background-color:#f0f0f0}.x-nbr .x-btn-group-default-framed{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000202px 1000202px}.x-nbr .x-btn-group-default-framed-tl,.x-nbr .x-btn-group-default-framed-bl,.x-nbr .x-btn-group-default-framed-tr,.x-nbr .x-btn-group-default-framed-br,.x-nbr .x-btn-group-default-framed-tc,.x-nbr .x-btn-group-default-framed-bc,.x-nbr .x-btn-group-default-framed-ml,.x-nbr .x-btn-group-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/gray/btn-group/btn-group-default-framed-corners.gif')}.x-nbr .x-btn-group-default-framed-ml,.x-nbr .x-btn-group-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/gray/btn-group/btn-group-default-framed-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-btn-group-default-framed-mc{padding:0}.x-strict .x-ie7 .x-btn-group-default-framed-tl,.x-strict .x-ie7 .x-btn-group-default-framed-bl{position:relative;right:0}.x-btn-group-default-framed{border-color:#d0d0d0;-moz-box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset;-webkit-box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset;-o-box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset;box-shadow:#ececec 0 1px 0 0 inset,#ececec 0 -1px 0 0 inset,#ececec -1px 0 0 0 inset,#ececec 1px 0 0 0 inset}.x-btn-group-header-default-framed{margin:2px 2px 0 2px}.x-btn-group-header-body-default-framed{padding:1px 0;background:#dfdfdf;-moz-border-radius-topleft:2px;-webkit-border-top-left-radius:2px;-o-border-top-left-radius:2px;-ms-border-top-left-radius:2px;-khtml-border-top-left-radius:2px;border-top-left-radius:2px;-moz-border-radius-topright:2px;-webkit-border-top-right-radius:2px;-o-border-top-right-radius:2px;-ms-border-top-right-radius:2px;-khtml-border-top-right-radius:2px;border-top-right-radius:2px}.x-btn-group-header-text-default-framed{font:normal 11px tahoma,arial,verdana,sans-serif;color:#666}.x-datepicker{border:1px solid #585858;background-color:white;position:relative}.x-datepicker a{-moz-outline:0 none;outline:0 none;color:#523a39;text-decoration:none;border-width:0}.x-datepicker-inner,.x-datepicker-inner td,.x-datepicker-inner th{border-collapse:separate}.x-datepicker-header{position:relative;height:26px;background-image:none;background-color:#6f6f6f;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#777),color-stop(100%,#656565));background-image:-webkit-linear-gradient(top,#777,#656565);background-image:-moz-linear-gradient(top,#777,#656565);background-image:-o-linear-gradient(top,#777,#656565);background-image:-ms-linear-gradient(top,#777,#656565);background-image:linear-gradient(top,#777,#656565)}.x-datepicker-prev,.x-datepicker-next{position:absolute;top:5px;width:18px}.x-datepicker-prev a,.x-datepicker-next a{display:block;width:16px;height:16px;background-position:top;background-repeat:no-repeat;cursor:pointer;text-decoration:none!important;filter:alpha(opacity=70);opacity:.7}.x-datepicker-prev a:hover,.x-datepicker-next a:hover{filter:alpha(opacity=100);opacity:1}.x-datepicker-next{right:5px}.x-datepicker-next a{background-image:url('../../resources/themes/images/gray/shared/right-btn.gif')}.x-datepicker-prev{left:5px}.x-datepicker-prev a{background-image:url('../../resources/themes/images/gray/shared/left-btn.gif')}.x-item-disabled .x-datepicker-prev a:hover,.x-item-disabled .x-datepicker-next a:hover{filter:alpha(opacity=60);opacity:.6}.x-datepicker-month{padding-top:3px}.x-datepicker-month .x-btn,.x-datepicker-month button,.x-datepicker-month .x-btn-tc,.x-datepicker-month .x-btn-tl,.x-datepicker-month .x-btn-tr,.x-datepicker-month .x-btn-mc,.x-datepicker-month .x-btn-ml,.x-datepicker-month .x-btn-mr,.x-datepicker-month .x-btn-bc,.x-datepicker-month .x-btn-bl,.x-datepicker-month .x-btn-br{background:transparent!important;border-width:0!important}.x-datepicker-month span{color:#fff!important}.x-datepicker-month .x-btn-split-right{background-image:url('../../resources/themes/images/gray/button/s-arrow-light.gif');padding-right:12px}.x-datepicker-next{text-align:right}.x-datepicker-month{text-align:center}.x-datepicker-month button{color:white!important}table.x-datepicker-inner{width:100%;table-layout:fixed}table.x-datepicker-inner th{width:25px;height:19px;padding:0;color:#3e3e3e;font:normal 10px tahoma,arial,verdana,sans-serif;text-align:right;border-bottom:1px solid #d0d0d0;border-collapse:separate;background-image:none;background-color:#e9e9e9;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f1f1f1),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f1f1f1,#dfdfdf);background-image:-moz-linear-gradient(top,#f1f1f1,#dfdfdf);background-image:-o-linear-gradient(top,#f1f1f1,#dfdfdf);background-image:-ms-linear-gradient(top,#f1f1f1,#dfdfdf);background-image:linear-gradient(top,#f1f1f1,#dfdfdf);cursor:default}table.x-datepicker-inner th span{display:block;padding-right:7px}table.x-datepicker-inner tr{height:20px}table.x-datepicker-inner td{border:1px solid;height:17px;border-color:white;text-align:right;padding:0}table.x-datepicker-inner a{padding-right:4px;display:block;zoom:1;font:normal 11px tahoma,arial,verdana,sans-serif;color:black;text-decoration:none;text-align:right}table.x-datepicker-inner .x-datepicker-active{cursor:pointer;color:black}table.x-datepicker-inner .x-datepicker-selected a{background:repeat-x left top;background-color:#d8d8d8;border:1px solid #b2aaa9}table.x-datepicker-inner .x-datepicker-selected span{font-weight:bold}table.x-datepicker-inner .x-datepicker-today a{border:1px solid;border-color:darkred}table.x-datepicker-inner .x-datepicker-prevday a,table.x-datepicker-inner .x-datepicker-nextday a{text-decoration:none!important;color:#aaa}table.x-datepicker-inner a:hover,table.x-datepicker-inner .x-datepicker-disabled a:hover{text-decoration:none!important;color:#000;background-color:transparent}table.x-datepicker-inner .x-datepicker-disabled a{cursor:default;background-color:#eee;color:#bbb}.x-datepicker-footer,.x-monthpicker-buttons{position:relative;border-top:1px solid #d0d0d0;background-image:none;background-color:#e9e9e9;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dfdfdf),color-stop(49%,#d6d6d6),color-stop(51%,#d0d0d0),color-stop(100%,#d2d2d2));background-image:-webkit-linear-gradient(top,#dfdfdf,#d6d6d6 49%,#d0d0d0 51%,#d2d2d2);background-image:-moz-linear-gradient(top,#dfdfdf,#d6d6d6 49%,#d0d0d0 51%,#d2d2d2);background-image:-o-linear-gradient(top,#dfdfdf,#d6d6d6 49%,#d0d0d0 51%,#d2d2d2);background-image:-ms-linear-gradient(top,#dfdfdf,#d6d6d6 49%,#d0d0d0 51%,#d2d2d2);background-image:linear-gradient(top,#dfdfdf,#d6d6d6 49%,#d0d0d0 51%,#d2d2d2);text-align:center}.x-datepicker-footer .x-btn,.x-monthpicker-buttons .x-btn{position:relative;margin:4px}.x-item-disabled .x-datepicker-inner a:hover{background:0}.x-datepicker .x-monthpicker{position:absolute;left:0;top:0}.x-monthpicker{border:1px solid #585858;background-color:white}.x-monthpicker-months,.x-monthpicker-years{float:left;height:167px;width:88px}.x-monthpicker-item{float:left;margin:4px 0 5px 0;font:normal 11px tahoma,arial,verdana,sans-serif;text-align:center;vertical-align:middle;height:18px;width:43px;border:0 none}.x-monthpicker-item a{display:block;margin:0 5px;text-decoration:none;color:#523a39;border:1px solid white;line-height:17px}.x-monthpicker-item a:hover{background-color:transparent}.x-monthpicker-item a.x-monthpicker-selected{background-color:#e9e9e9;border:1px solid #b2aaa9}.x-monthpicker-months{border-right:1px solid #585858;width:87px}.x-monthpicker-years .x-monthpicker-item{width:44px}.x-monthpicker-yearnav{height:28px}.x-monthpicker-yearnav button{background-image:url('../../resources/themes/images/gray/tools/tool-sprites.gif');height:15px;width:15px;padding:0;margin:6px 12px 5px 15px;border:0;outline:0 none}.x-monthpicker-yearnav button::-moz-focus-inner{border:0;padding:0}.x-monthpicker-yearnav-next{background-position:0 -120px}.x-monthpicker-yearnav-next-over{cursor:pointer;cursor:hand;background-position:-15px -120px}.x-monthpicker-yearnav-prev{background-position:0 -105px}.x-monthpicker-yearnav-prev-over{cursor:pointer;cursor:hand;background-position:-15px -105px}.x-monthpicker-small .x-monthpicker-item{margin:2px 0 2px 0}.x-monthpicker-small .x-monthpicker-yearnav{height:23px}.x-monthpicker-small .x-monthpicker-months,.x-monthpicker-small .x-monthpicker-years{height:136px}.x-quirks .x-ie7 .x-monthpicker-buttons .x-btn,.x-quirks .x-ie8 .x-monthpicker-buttons .x-btn{margin-top:2px}.x-quirks .x-monthpicker-small .x-monthpicker-yearnav button{margin-top:3px;margin-bottom:3px}.x-ie6 .x-monthpicker-small .x-monthpicker-yearnav button{margin-top:3px;margin-bottom:3px}.x-nlg .x-datepicker-header{background-image:url('../../resources/themes/images/gray/datepicker/datepicker-header-bg.gif');background-repeat:repeat-x;background-position:top left}.x-nlg .x-datepicker-footer,.x-nlg .x-monthpicker-buttons{background-image:url('../../resources/themes/images/gray/datepicker/datepicker-footer-bg.gif');background-repeat:repeat-x;background-position:top left}.x-color-picker{width:144px;height:90px;cursor:pointer}.x-color-picker a{border:1px solid #fff;float:left;padding:2px;text-decoration:none;-moz-outline:0 none;outline:0 none;cursor:pointer}.x-color-picker a:hover,.x-color-picker a.x-color-picker-selected{border-color:#8bb8f3;background-color:#deecfd}.x-color-picker em{display:block;border:1px solid #aca899}.x-color-picker em span{cursor:pointer;display:block;height:10px;width:10px;line-height:10px}.x-menu-body{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;background:#f0f0f0!important;padding:2px}.x-menu-item .x-form-text{user-select:text;-webkit-user-select:text;-o-user-select:text;-ie-user-select:text;-moz-user-select:text;-ie-user-select:text}.x-menu-icon-separator{position:absolute;top:0;left:27px;z-index:0;border-left:solid 1px #e0e0e0;background-color:white;width:2px;overflow:hidden}.x-menu-plain .x-menu-icon-separator{display:none}.x-menu-focus{display:block;position:absolute;top:-10px;left:-10px;width:0;height:0}.x-menu-item{white-space:nowrap;overflow:hidden;z-index:1}.x-menu-item-cmp{margin-bottom:1px}.x-menu-item-link{display:block;margin:1px;padding:6px 2px 3px 32px;text-decoration:none!important;line-height:16px;cursor:default}.x-opera .x-menu-item-link{position:relative}.x-menu-item-icon{width:16px;height:16px;position:absolute;top:5px;left:4px;background:no-repeat center center}.x-menu-item-icon-right{width:16px;height:16px;position:absolute;top:6px;right:4px;background:no-repeat center center}.x-menu-item-text{font-size:11px;color:#222}.x-menu-item-checked .x-menu-item-icon{background-image:url('../../resources/themes/images/gray/menu/checked.gif')}.x-menu-item-checked .x-menu-group-icon{background-image:url('../../resources/themes/images/gray/menu/group-checked.gif')}.x-menu-item-unchecked .x-menu-item-icon{background-image:url('../../resources/themes/images/gray/menu/unchecked.gif')}.x-menu-item-unchecked .x-menu-group-icon{background-image:none}.x-menu-item-separator{height:2px;border-top:solid 1px #e0e0e0;background-color:white;margin:2px 0;overflow:hidden}.x-menu-item-arrow{position:absolute;width:12px;height:9px;top:9px;right:0;background:no-repeat center center;background-image:url('../../resources/themes/images/gray/menu/menu-parent.gif')}.x-menu-item-indent{margin-left:31px}.x-menu-item-active{cursor:pointer}.x-menu-item-active .x-menu-item-link{background-image:none;background-color:#e6e6e6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#eee),color-stop(100%,#dcdcdc));background-image:-webkit-linear-gradient(top,#eee,#dcdcdc);background-image:-moz-linear-gradient(top,#eee,#dcdcdc);background-image:-o-linear-gradient(top,#eee,#dcdcdc);background-image:-ms-linear-gradient(top,#eee,#dcdcdc);background-image:linear-gradient(top,#eee,#dcdcdc);margin:0;border:1px solid #9d9d9d;cursor:pointer;-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px}.x-menu-item-disabled{filter:alpha(opacity=50);opacity:.5}.x-ie .x-menu-item-disabled .x-menu-item-icon{filter:alpha(opacity=50);opacity:.5}.x-ie .x-menu-item-disabled .x-menu-item-text{background-color:transparent}.x-strict .x-ie7m .x-ie .x-menu-icon-separator{width:1px}.x-strict .x-ie7m .x-ie .x-menu-item-separator{height:1px}.x-ie6 .x-menu-item-link,.x-ie7 .x-menu-item-link,.x-quirks .x-ie8 .x-menu-item-link{padding-bottom:2px}.x-nlg .x-menu-item-active .x-menu-item-link{background:#e6e6e6 repeat-x left top;background-image:url('../../resources/themes/images/gray/menu/menu-item-active-bg.gif')}.x-menu-date-item{border-color:#99bbe8}.x-panel .x-grid-body{background:white;border-color:#d0d0d0;border-style:solid;border-width:1px;border-top-color:#c5c5c5}.x-panel .x-grid-header-ct-hidden{visibility:hidden}.x-grid-empty{padding:10px;color:gray;font:normal 11px tahoma,arial,helvetica,sans-serif}.x-grid-header-hidden .x-grid-body{border-top-color:#d0d0d0!important}.x-grid-view{overflow:hidden;position:relative}.x-grid-table{table-layout:fixed;border-collapse:separate}.x-autowidth-table table.x-grid-table{table-layout:auto;width:auto!important}.x-grid-row .x-grid-table{border-collapse:collapse}.x-grid-locked .x-grid-inner-locked{border-width:0 1px 0 0!important;border-style:solid}.x-grid-header-ct{cursor:default;zoom:1;padding:0;border:1px solid #d0d0d0;border-bottom-color:#c5c5c5;background-image:none;background-color:#c5c5c5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f9f9f9),color-stop(100%,#e3e4e6));background-image:-webkit-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-moz-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-o-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-ms-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:linear-gradient(top,#f9f9f9,#e3e4e6)}.x-accordion-item .x-grid-header-ct{border-width:0 0 1px 0!important}.x-column-header{padding:0;position:absolute;overflow:hidden;border-right:1px solid #c5c5c5;border-left:0 none;border-top:0 none;border-bottom:0 none;text-shadow:0 1px 0 rgba(255,255,255,0.3);color:null;font:normal 11px tahoma,arial,verdana,sans-serif;background-image:none;background-color:#c5c5c5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f9f9f9),color-stop(100%,#e3e4e6));background-image:-webkit-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-moz-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-o-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-ms-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:linear-gradient(top,#f9f9f9,#e3e4e6)}.x-group-header{padding:0;border-left-width:0}.x-group-sub-header{background:transparent;border-top:1px solid #c5c5c5;border-left-width:0}.x-column-header-inner{zoom:1;position:relative;white-space:nowrap;line-height:15px;padding:3px 6px 4px}.x-column-header-inner .x-column-header-text{white-space:nowrap}.x-column-header-over,.x-column-header-sort-ASC,.x-column-header-sort-DESC{border-left-color:#c4c4c4;border-right-color:#c4c4c4;background-image:none;background-color:#c4c4c4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e9e8e8),color-stop(39%,#e9e8e8),color-stop(40%,#dedede),color-stop(100%,#dedede));background-image:-webkit-linear-gradient(top,#e9e8e8,#e9e8e8 39%,#dedede 40%,#dedede);background-image:-moz-linear-gradient(top,#e9e8e8,#e9e8e8 39%,#dedede 40%,#dedede);background-image:-o-linear-gradient(top,#e9e8e8,#e9e8e8 39%,#dedede 40%,#dedede);background-image:-ms-linear-gradient(top,#e9e8e8,#e9e8e8 39%,#dedede 40%,#dedede);background-image:linear-gradient(top,#e9e8e8,#e9e8e8 39%,#dedede 40%,#dedede)}.x-nlg .x-grid-header-ct,.x-nlg .x-column-header{background:repeat-x 0 top;background-image:url('../../resources/themes/images/gray/grid/column-header-bg.gif')}.x-nlg .x-column-header-over,.x-nlg .x-column-header-sort-ASC,.x-nlg .x-column-header-sort-DESC{background:#ebf3fd repeat-x 0 top;background-image:url('../../resources/themes/images/gray/grid/column-header-over-bg.gif')}.x-column-header-trigger{display:none;height:100%;width:14px;background:no-repeat left center;background-color:#c3daf9;background-image:url('../../resources/themes/images/gray/grid/grid3-hd-btn.gif');position:absolute;right:0;top:0;z-index:2;cursor:pointer}.x-column-header-over .x-column-header-trigger,.x-column-header-open .x-column-header-trigger{display:block}.x-column-header-align-right{text-align:right}.x-column-header-align-right .x-column-header-text{padding-right:.5ex;margin-right:6px}.x-column-header-align-center{text-align:center}.x-column-header-align-left{text-align:left}.x-column-header-sort-ASC .x-column-header-text{padding-right:16px;background:no-repeat right 6px;background-image:url('../../resources/themes/images/gray/grid/sort_asc.gif')}.x-column-header-sort-DESC .x-column-header-text{padding-right:16px;background:no-repeat right 6px;background-image:url('../../resources/themes/images/gray/grid/sort_desc.gif')}.x-grid-row{vertical-align:top}.x-grid-row .x-grid-cell{color:null;font:normal 11px/15px tahoma,arial,verdana,sans-serif;background-color:white;border-color:#ededed;border-style:solid;border-top-color:#fafafa;border-width:0}.x-grid-with-row-lines .x-grid-cell{border-width:1px 0}.x-grid-rowwrap-div{border-width:1px 0;border-color:#ededed;border-style:solid;border-top-color:#fafafa;overflow:hidden}.x-grid-row-alt .x-grid-cell,.x-grid-row-alt .x-grid-rowwrap-div{background-color:#fafafa}.x-grid-row-over .x-grid-cell,.x-grid-row-over .x-grid-rowwrap-div{border-color:#ddd;background-color:#efefef}.x-grid-row-focused .x-grid-cell,.x-grid-row-focused .x-grid-rowwrap-div{border-color:#ddd;background-color:#efefef}.x-grid-row-selected .x-grid-cell,.x-grid-row-selected .x-grid-rowwrap-div{border-style:dotted;border-color:#bfb8b8;background-color:#e0e0e0!important}.x-grid-rowwrap-div .x-grid-cell,.x-grid-rowwrap-div .x-grid-cell-inner{border-width:0;background:transparent}.x-grid-row-body-hidden{display:none}.x-grid-rowbody{font:normal 11px/13px tahoma,arial,verdana,sans-serif;padding:4px}.x-grid-rowbody p{margin:5px 5px 10px 5px}.x-grid-cell{overflow:hidden}.x-grid-cell-inner{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding:2px 6px 3px;white-space:nowrap}.x-grid-with-row-lines .x-grid-cell-inner{line-height:13px;padding-bottom:4px}.x-action-col-cell .x-grid-cell-inner{line-height:0;padding:2px}.x-action-col-cell .x-item-disabled{filter:alpha(opacity=30);opacity:.3}.x-grid-with-row-lines .x-action-col-cell .x-grid-cell-inner{padding-top:1px}.x-grid-row .x-grid-cell-special{padding:0;border-right:1px solid #c6c6c6;background-image:none;background-color:#f6f6f6;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#f6f6f6),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-moz-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-o-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-ms-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:linear-gradient(left,#f6f6f6,#e9e9e9)}.x-grid-row .x-grid-cell-row-checker{vertical-align:middle}.x-ie6 .x-grid-header-row,.x-ie7 .x-grid-header-row,.x-quirks .x-ie8 .x-grid-header-row{position:absolute}.x-grid-row-selected .x-grid-cell-special{border-right:1px solid #d4b7b7;background-image:none;background-color:#e0e0e0;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#e0e0e0),color-stop(100%,#d3d3d3));background-image:-webkit-linear-gradient(left,#e0e0e0,#d3d3d3);background-image:-moz-linear-gradient(left,#e0e0e0,#d3d3d3);background-image:-o-linear-gradient(left,#e0e0e0,#d3d3d3);background-image:-ms-linear-gradient(left,#e0e0e0,#d3d3d3);background-image:linear-gradient(left,#e0e0e0,#d3d3d3)}.x-grid-dirty-cell{background-image:url('../../resources/themes/images/gray/grid/dirty.gif');background-position:0 0;background-repeat:no-repeat}.x-grid-cell-selected{background-color:#b8cfee!important}.x-nlg .x-grid-cell-special{background-repeat:repeat-y;background-position:top right}.x-nlg .x-grid-row .x-grid-cell-special,.x-nlg .x-grid-row-over .x-grid-cell-special{background-image:url('../../resources/themes/images/gray/grid/cell-special-bg.gif')}.x-nlg .x-grid-row-focused .x-grid-cell-special,.x-nlg .x-grid-row-selected .x-grid-cell-special{background-image:url('../../resources/themes/images/gray/grid/cell-special-selected-bg.gif')}.x-grid-with-col-lines .x-grid-cell{padding-right:0;border-right:1px solid #c6c6c6}.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner{padding-left:12px;background-image:url('../../resources/themes/images/gray/grid/property-cell-bg.gif');background-repeat:no-repeat;background-position:-16px 2px}.x-grid-with-row-lines.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,.x-grid-with-row-lines.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner{background-position:-16px 1px}.x-quirks .x-ie .x-grid-row .x-grid-property-name .x-grid-cell-inner{background-position:-16px 2px}.x-unselectable{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-grid-row-body-hidden{display:none}.x-grid-group-collapsed{display:none}.x-grid-view .x-grid-td-expander{vertical-align:top}.x-grid-td-expander{background:repeat-y right transparent}.x-grid-view .x-grid-td-expander .x-grid-cell-inner{padding:0!important}.x-grid-row-expander{background-image:url('../../resources/themes/images/gray/grid/group-collapse.gif');background-color:transparent;width:9px;height:13px;margin-left:3px;background-repeat:no-repeat;background-position:0 -2px}.x-grid-row-collapsed .x-grid-row-expander{background-image:url('../../resources/themes/images/gray/grid/group-expand.gif')}.x-grid-resize-marker{position:absolute;z-index:5;top:0;width:1px;background-color:#0f0f0f}.col-move-top,.col-move-bottom{width:9px;height:9px;position:absolute;top:0;line-height:0;font-size:0;overflow:hidden;z-index:20000;background:no-repeat left top transparent}.col-move-top{background-image:url('../../resources/themes/images/gray/grid/col-move-top.gif')}.col-move-bottom{background-image:url('../../resources/themes/images/gray/grid/col-move-bottom.gif')}.x-tbar-page-number{width:30px}.x-grid-group,.x-grid-group-body,.x-grid-group-hd{zoom:1}.x-grid-group-hd{padding-top:6px}.x-grid-group-hd .x-grid-cell-inner{padding:10px 4px 4px 4px;background:white;border-width:0 0 2px 0;border-style:solid;border-color:#bcb1b0;cursor:pointer}.x-grid-group-hd-collapsible .x-grid-group-title{background:transparent no-repeat 0 -1px;background-image:url('../../resources/themes/images/gray/grid/group-collapse.gif');padding:0 0 0 14px}.x-grid-group-title{color:#616161;font:bold 11px tahoma,arial,verdana,sans-serif}.x-grid-group-hd-collapsed .x-grid-group-title{background-image:url('../../resources/themes/images/gray/grid/group-expand.gif')}.x-grid-group-collapsed .x-grid-group-body{display:none}.x-grid-group-collapsed .x-grid-group-title{background-image:url('../../resources/themes/images/gray/grid/group-expand.gif')}.x-group-by-icon{background-image:url('../../resources/themes/images/gray/grid/group-by.gif')}.x-show-groups-icon{background-image:url('../../resources/themes/images/gray/grid/group-by.gif')}.x-column-header-checkbox .x-column-header-inner{padding:0}.x-grid-cell-special .x-grid-cell-inner{padding-left:4px;padding-right:4px}.x-grid-row-checker,.x-column-header-checkbox .x-column-header-text{height:14px;width:14px;line-height:0;background-image:url('../../resources/themes/images/gray/grid/unchecked.gif');background-position:-1px -1px;background-repeat:no-repeat;background-color:transparent}.x-column-header-checkbox .x-column-header-text{display:block;margin:0 5px}.x-quirks .x-ie .x-grid-row-checker,.x-quirks .x-ie .x-column-header-checkbox .x-column-header-text,.x-ie7m .x-grid-row-checker,.x-ie7m .x-column-header-checkbox .x-column-header-text{line-height:14px}.x-grid-hd-checker-on .x-column-header-text{background-image:url('../../resources/themes/images/gray/grid/checked.gif')}.x-grid-cell-row-checker .x-grid-cell-inner{padding-top:4px;padding-bottom:2px;line-height:14px}.x-grid-with-row-lines .x-grid-cell-row-checker .x-grid-cell-inner{padding-top:3px}.x-grid-row-checker{margin-left:1px;background-position:50% -2px}.x-grid-row-selected .x-grid-row-checker,.x-grid-row-checked .x-grid-row-checker{background-image:url('../../resources/themes/images/gray/grid/checked.gif')}.x-tbar-page-first{background-image:url('../../resources/themes/images/gray/grid/page-first.gif')!important}.x-tbar-loading{background-image:url('../../resources/themes/images/gray/grid/refresh.gif')!important}.x-tbar-page-last{background-image:url('../../resources/themes/images/gray/grid/page-last.gif')!important}.x-tbar-page-next{background-image:url('../../resources/themes/images/gray/grid/page-next.gif')!important}.x-tbar-page-prev{background-image:url('../../resources/themes/images/gray/grid/page-prev.gif')!important}.x-item-disabled .x-tbar-loading{background-image:url('../../resources/themes/images/gray/grid/refresh-disabled.gif')!important}.x-item-disabled .x-tbar-page-first{background-image:url('../../resources/themes/images/gray/grid/page-first-disabled.gif')!important}.x-item-disabled .x-tbar-page-last{background-image:url('../../resources/themes/images/gray/grid/page-last-disabled.gif')!important}.x-item-disabled .x-tbar-page-next{background-image:url('../../resources/themes/images/gray/grid/page-next-disabled.gif')!important}.x-item-disabled .x-tbar-page-prev{background-image:url('../../resources/themes/images/gray/grid/page-prev-disabled.gif')!important}.x-hmenu-sort-asc .x-menu-item-icon{background-image:url('../../resources/themes/images/gray/grid/hmenu-asc.gif')}.x-hmenu-sort-desc .x-menu-item-icon{background-image:url('../../resources/themes/images/gray/grid/hmenu-desc.gif')}.x-hmenu-lock .x-menu-item-icon{background-image:url('../../resources/themes/images/gray/grid/hmenu-lock.gif')}.x-hmenu-unlock .x-menu-item-icon{background-image:url('../../resources/themes/images/gray/grid/hmenu-unlock.gif')}.x-group-by-icon{background-image:url('../../resources/themes/images/gray/grid/group-by.gif')}.x-cols-icon .x-menu-item-icon{background-image:url('../../resources/themes/images/gray/grid/columns.gif')}.x-show-groups-icon{background-image:url('../../resources/themes/images/gray/grid/group-by.gif')}.x-grid-drop-indicator{position:absolute;height:1px;line-height:0;background-color:#77bc71;overflow:visible}.x-grid-drop-indicator .x-grid-drop-indicator-left{position:absolute;top:-8px;left:-12px;background-image:url('../../resources/themes/images/gray/grid/dd-insert-arrow-right.png');height:16px;width:16px}.x-grid-drop-indicator .x-grid-drop-indicator-right{position:absolute;top:-8px;right:-11px;background-image:url('../../resources/themes/images/gray/grid/dd-insert-arrow-left.png');height:16px;width:16px}.x-ie6 .x-grid-drop-indicator-left{background-image:url('../../resources/themes/images/gray/grid/dd-insert-arrow-right.gif')}.x-ie6 .x-grid-drop-indicator-right{background-image:url('../../resources/themes/images/gray/grid/dd-insert-arrow-left.gif')}.x-grid-editor .x-form-text{padding:0 4px}.x-grid-editor .x-form-cb-wrap{padding-top:3px}.x-grid-row-editor{position:absolute!important;z-index:1;zoom:1;overflow:visible!important}.x-grid-row-editor .x-form-text{padding:0 2px}.x-grid-row-editor .x-form-cb-wrap{padding-top:0}.x-grid-row-editor .x-form-checkbox{margin-left:-4px}.x-grid-row-editor .x-form-display-field{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding-top:0;padding-left:2px}.x-grid-row-editor .x-panel-body{background-color:#ebe6e6;border-top:1px solid #d0d0d0!important;border-bottom:1px solid #d0d0d0!important}.x-grid-editor .x-form-cb-wrap,.x-grid-row-editor .x-form-cb-wrap{text-align:center}.x-grid-editor .x-form-trigger,.x-grid-row-editor .x-form-trigger{height:19px}.x-grid-editor .x-form-trigger-wrap .x-form-spinner-up,.x-grid-editor .x-form-trigger-wrap .x-form-spinner-down,.x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-up,.x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-down{background-image:url('../../resources/themes/images/gray/form/spinner-small.gif');height:10px!important}.x-grid-editor .x-form-text,.x-grid-row-editor .x-form-text{font:normal 11px/15px tahoma,arial,verdana,sans-serif;height:18px}.x-border-box .x-grid-editor .x-form-trigger,.x-border-box .x-grid-row-editor .x-form-trigger{height:20px}.x-border-box .x-grid-editor .x-form-text,.x-border-box .x-grid-row-editor .x-form-text{height:20px;padding-bottom:1px}.x-ie .x-grid-editor .x-form-text{padding-left:5px}.x-ie .x-grid-row-editor .x-form-text{padding-left:3px}.x-ie8m .x-grid-editor .x-form-text,.x-ie8m .x-grid-row-editor .x-form-text{padding-top:1px}.x-strict .x-ie6 .x-grid-editor .x-form-text,.x-strict .x-ie6 .x-grid-row-editor .x-form-text,.x-strict .x-ie7 .x-grid-editor .x-form-text,.x-strict .x-ie7 .x-grid-row-editor .x-form-text{height:17px}.x-quirks .x-ie9 .x-grid-editor .x-form-text,.x-quirks .x-ie9 .x-grid-row-editor .x-form-text{line-height:17px}.x-opera .x-grid-editor .x-form-text{padding-left:5px}.x-opera .x-grid-row-editor .x-form-text{padding-left:3px}.x-grid-row-editor-buttons{background-color:#ebe6e6;position:absolute;bottom:-31px;padding:4px;height:32px}.x-strict .x-ie7m .x-grid-row-editor-buttons{width:192px;height:24px}.x-grid-row-editor-buttons-ml,.x-grid-row-editor-buttons-mr,.x-grid-row-editor-buttons-bl,.x-grid-row-editor-buttons-br,.x-grid-row-editor-buttons-bc{position:absolute;overflow:hidden}.x-grid-row-editor-buttons-bl,.x-grid-row-editor-buttons-br{width:4px;height:4px;bottom:0;background-image:url('../../resources/themes/images/gray/panel/panel-default-framed-corners.gif')}.x-grid-row-editor-buttons-bl{left:0;background-position:0 -16px}.x-grid-row-editor-buttons-br{right:0;background-position:0 -20px}.x-grid-row-editor-buttons-bc{position:absolute;left:4px;bottom:0;width:192px;height:1px;background-color:#d0d0d0}.x-grid-row-editor-buttons-ml,.x-grid-row-editor-buttons-mr{height:27px;width:1px;top:1px;background-color:#d0d0d0}.x-grid-row-editor-buttons-ml{left:0}.x-grid-row-editor-buttons-mr{background-position:0 -20px;right:0}.x-grid-row-editor-errors ul{margin-left:5px}.x-grid-row-editor-errors li{list-style:disc;margin-left:15px}.x-webkit *:focus{outline:none!important}.x-form-item{vertical-align:top;table-layout:fixed}.x-autocontainer-form-item,.x-anchor-form-item,.x-vbox-form-item,.x-checkboxgroup-form-item,.x-table-form-item{margin-bottom:5px}.x-form-layout-table{border-collapse:separate;border-spacing:0 2px}.x-form-item-body{position:relative}.x-form-form-item td{border-top:1px solid transparent}.x-ie6 .x-form-layout-table{border-collapse:collapse;border-spacing:0}.x-ie6 .x-form-form-item td{border-top-width:0}.x-ie6 td.x-form-item-pad{height:5px}.x-editor .x-form-item-body{padding-bottom:0}.x-form-item-label{display:block;padding:3px 0 0;font-size:12px;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-form-item-label-top{display:block;zoom:1;padding:0 0 5px 0}.x-form-item-label-right{text-align:right}.x-form-invalid-under{padding:2px 2px 2px 18px;color:#c0272b;font:normal 11px tahoma,arial,verdana,sans-serif;line-height:16px;background:no-repeat 0 2px;background-image:url('../../resources/themes/images/gray/form/exclamation.gif')}.x-form-invalid-icon{width:18px;height:14px;background:no-repeat center center;background-image:url('../../resources/themes/images/gray/form/exclamation.gif');overflow:hidden}.x-form-invalid-icon ul{display:block;width:18px}.x-form-invalid-icon ul li{display:none}.x-lbl-top-err-icon{margin-bottom:4px}.x-form-field,.x-form-display-field{margin:0;font:normal 12px tahoma,arial,verdana,sans-serif;color:black}.x-form-item-hidden{margin:0}.x-form-text,textarea.x-form-field{padding:1px 3px;background:repeat-x 0 0;border:1px solid;background-color:white;background-image:url('../../resources/themes/images/gray/form/text-bg.gif');border-color:#b5b8c8}.x-form-text{height:18px;line-height:15px;vertical-align:top}.x-ie8m .x-form-text{line-height:15px}.x-border-box .x-form-text{height:22px}textarea.x-form-field{color:black;overflow:auto;height:auto;line-height:normal;background:repeat-x 0 0;background-color:white;background-image:url('../../resources/themes/images/gray/form/text-bg.gif');resize:none}.x-border-box textarea.x-form-field{height:auto}.x-safari.x-mac textarea.x-form-field{margin-bottom:-2px}.x-form-focus,textarea.x-form-focus{border-color:#a1a1a1}.x-form-invalid-field,textarea.x-form-invalid-field{background-color:white;background-image:url('../../resources/themes/images/gray/grid/invalid_line.gif');background-repeat:repeat-x;background-position:bottom;border-color:#c30}.x-form-item{font:normal 12px tahoma,arial,verdana,sans-serif}.x-form-empty-field,textarea.x-form-empty-field{color:gray}.x-webkit .x-form-empty-field{line-height:15px}.x-form-display-field{padding-top:3px}.x-quirks .x-ie9p .x-form-text,.x-ie7m .x-form-text{margin-top:-1px;margin-bottom:-1px}.x-ie .x-form-file{height:23px;line-height:18px;vertical-align:middle}.x-field-default-toolbar .x-form-text{height:16px}.x-border-box .x-field-default-toolbar .x-form-text{height:20px}.x-field-default-toolbar .x-form-item-label-left{padding-left:4px}.x-fieldset{border:1px solid #b5b8c8;padding:10px;margin-bottom:10px;display:block;position:relative}.x-ie .x-fieldset{padding-top:0}.x-ie .x-fieldset .x-fieldset-body{padding-top:10px}.x-fieldset-header-checkbox{line-height:14px}.x-fieldset-header{font:11px/14px bold tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px 1px;overflow:hidden}.x-fieldset-header .x-fieldset-header-text{float:left;padding:1px 0}.x-fieldset-header .x-fieldset-header-text-collapsible{cursor:pointer}.x-fieldset-header .x-form-item,.x-fieldset-header .x-tool{float:left;margin:1px 0 0 0}.x-fieldset-header .x-form-cb-wrap{padding:1px 0;font-size:0;line-height:0}.x-fieldset-with-title .x-fieldset-header-checkbox,.x-fieldset-with-title .x-tool{margin-right:3px}.x-webkit .x-fieldset-header{-webkit-padding-start:3px;-webkit-padding-end:3px}.x-opera .x-fieldset-with-legend{margin-top:-1px}.x-opera.x-mac .x-fieldset-header-text{padding:2px 0 0}.x-strict .x-ie8 .x-fieldset-header{margin-bottom:-1px}.x-strict .x-ie8 .x-fieldset-header .x-tool,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox{position:relative;top:-1px}.x-quirks .x-ie .x-fieldset-header,.x-ie8m .x-fieldset-header{padding-left:1px;padding-right:1px}.x-fieldset-collapsed .x-fieldset-body{display:none}.x-fieldset-collapsed{padding-bottom:0!important;border-width:1px 1px 0 1px!important;border-left-color:transparent!important;border-right-color:transparent!important}.x-ie6 .x-fieldset-collapsed{border-width:1px 0 0 0!important;padding-bottom:0!important;margin-left:1px;margin-right:1px}.x-ie .x-fieldset-bwrap{zoom:1}.x-ie .x-fieldset-noborder legend{position:relative;margin-bottom:23px}.x-ie .x-fieldset-noborder legend span{position:absolute;left:16px}.x-fieldset{overflow:hidden}.x-fieldset-bwrap{overflow:hidden;zoom:1}.x-fieldset-body{overflow:hidden}.x-form-file-wrap .x-form-text{color:#777}.x-form-file-wrap .x-form-file-btn{overflow:hidden}.x-form-file-wrap .x-form-file-input{position:absolute;top:-4px;right:-2px;height:30px;filter:alpha(opacity=0);opacity:0;font-size:100px}.x-form-cb-wrap{padding-top:3px}.x-form-checkbox,.x-form-radio{vertical-align:-1px;width:13px;height:13px;background:no-repeat;background-image:url('../../resources/themes/images/gray/form/checkbox.gif');overflow:hidden;padding:0;border:0}.x-form-checkbox::-moz-focus-inner,.x-form-radio::-moz-focus-inner{padding:0;border:0}.x-nbr.x-ie .x-form-checkbox,.x-nbr.x-ie .x-form-radio{font-size:0}.x-form-cb-checked .x-form-checkbox,.x-form-cb-checked .x-form-radio{background-position:0 -13px}.x-form-cb-focus{background-position:-13px 0}.x-form-cb-checked .x-form-cb-focus{background-position:-13px -13px}.x-form-radio{background-image:url('../../resources/themes/images/gray/form/radio.gif')}.x-form-cb-label-before{margin-right:4px}.x-form-cb-label-after{margin-left:4px}.x-form-checkboxgroup-body{padding:1px 4px 1px 4px}.x-form-invalid .x-form-checkboxgroup-body{border:1px solid #c30!important;background:transparent repeat-x bottom;background-image:url('../../resources/themes/images/gray/grid/invalid_line.gif');padding:1px 3px 0 3px}.x-check-group-alt{background:#d5d5d5;border-top:1px dotted #b4b4b4;border-bottom:1px dotted #b4b4b4}.x-form-check-group-label{color:#333;border-bottom:1px solid #333;margin:0 30px 5px 0;padding:2px}.x-form-trigger-wrap{vertical-align:top}.x-form-trigger{background-image:url('../../resources/themes/images/gray/form/trigger.gif');background-position:0 0;width:17px;height:21px;border-bottom:1px solid #b5b8c8;cursor:pointer;cursor:hand;overflow:hidden}.x-border-box .x-form-trigger{height:22px}.x-field-default-toolbar .x-form-trigger{height:19px}.x-border-box .x-field-default-toolbar .x-form-trigger{height:20px}.x-form-trigger-over{background-position:-17px 0;border-bottom-color:#a1a1a1}.x-form-trigger-wrap-focus .x-form-trigger{background-position:-51px 0;border-bottom-color:#a1a1a1}.x-form-trigger-wrap-focus .x-form-trigger-over{background-position:-68px 0;border-bottom-color:null}.x-form-trigger-click,.x-form-trigger-wrap-focus .x-form-trigger-click{background-position:-34px 0;border-bottom-color:null}.x-form-trigger-icon{height:16px;background-repeat:no-repeat;background-position:7px 6px}.x-pickerfield-open .x-form-field{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0}.x-pickerfield-open-above .x-form-field{-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;-o-border-bottom-left-radius:3px;-ms-border-bottom-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0}.x-form-arrow-trigger .x-form-trigger-icon{background-image:url('../../resources/themes/images/gray/boundlist/trigger-arrow.png')}.x-form-date-trigger{background-image:url('../../resources/themes/images/gray/form/date-trigger.gif')}.x-form-trigger-wrap .x-form-spinner-up,.x-form-trigger-wrap .x-form-spinner-down{background-image:url('../../resources/themes/images/gray/form/spinner.gif');width:17px!important;height:11px!important;font-size:0;border-bottom:0}.x-form-trigger-wrap .x-form-spinner-down{background-position:0 -11px}.x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -11px}.x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -11px}.x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -11px}.x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -11px}.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-up,.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down{background-image:url('../../resources/themes/images/gray/form/spinner-small.gif');height:10px!important}.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down{background-position:0 -10px}.x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -10px}.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -10px}.x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -10px}.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -10px}.x-trigger-noedit{cursor:pointer;cursor:hand}.x-item-disabled .x-trigger-noedit,.x-item-disabled .x-form-trigger{cursor:auto}.x-form-clear-trigger{background-image:url('../../resources/themes/images/gray/form/clear-trigger.gif')}.x-form-search-trigger{background-image:url('../../resources/themes/images/gray/form/search-trigger.gif')}.x-quirks .prefixie6 .x-form-trigger-input-cell{height:22px}.x-quirks .prefixie6 .x-field-default-toolbar .x-form-trigger-input-cell{height:20px}.x-html-editor-wrap{border:1px solid #b5b8c8}.x-html-editor-wrap .x-toolbar{border-top-width:0;border-left-width:0;border-right-width:0}.x-html-editor-wrap textarea{background-color:white}.x-html-editor-tb .x-btn-text{background:transparent no-repeat;background-image:url('../../resources/themes/images/gray/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-bold,.x-menu-item img.x-edit-bold{background-position:0 0;background-image:url('../../resources/themes/images/gray/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-italic,.x-menu-item img.x-edit-italic{background-position:-16px 0;background-image:url('../../resources/themes/images/gray/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-underline,.x-menu-item img.x-edit-underline{background-position:-32px 0;background-image:url('../../resources/themes/images/gray/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-forecolor,.x-menu-item img.x-edit-forecolor{background-position:-160px 0;background-image:url('../../resources/themes/images/gray/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-backcolor,.x-menu-item img.x-edit-backcolor{background-position:-176px 0;background-image:url('../../resources/themes/images/gray/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-justifyleft,.x-menu-item img.x-edit-justifyleft{background-position:-112px 0;background-image:url('../../resources/themes/images/gray/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-justifycenter,.x-menu-item img.x-edit-justifycenter{background-position:-128px 0;background-image:url('../../resources/themes/images/gray/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-justifyright,.x-menu-item img.x-edit-justifyright{background-position:-144px 0;background-image:url('../../resources/themes/images/gray/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-insertorderedlist,.x-menu-item img.x-edit-insertorderedlist{background-position:-80px 0;background-image:url('../../resources/themes/images/gray/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-insertunorderedlist,.x-menu-item img.x-edit-insertunorderedlist{background-position:-96px 0;background-image:url('../../resources/themes/images/gray/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-increasefontsize,.x-menu-item img.x-edit-increasefontsize{background-position:-48px 0;background-image:url('../../resources/themes/images/gray/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-decreasefontsize,.x-menu-item img.x-edit-decreasefontsize{background-position:-64px 0;background-image:url('../../resources/themes/images/gray/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-sourceedit,.x-menu-item img.x-edit-sourceedit{background-position:-192px 0;background-image:url('../../resources/themes/images/gray/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-createlink,.x-menu-item img.x-edit-createlink{background-position:-208px 0;background-image:url('../../resources/themes/images/gray/editor/tb-sprite.gif')}.x-html-editor-tip .x-tip-bd .x-tip-bd-inner{padding:5px;padding-bottom:1px}.x-html-editor-tb .x-toolbar{position:static!important}.x-html-editor-tb .x-font-select{font-size:11px}.x-html-editor-wrap textarea{border:0;padding:3px 2px;overflow:auto}.x-panel,.x-plain{overflow:hidden;position:relative}.x-ie .x-panel-header,.x-ie .x-panel-header-tl,.x-ie .x-panel-header-tc,.x-ie .x-panel-header-tr,.x-ie .x-panel-header-ml,.x-ie .x-panel-header-mc,.x-ie .x-panel-header-mr,.x-ie .x-panel-header-bl,.x-ie .x-panel-header-bc,.x-ie .x-panel-header-br{zoom:1}.x-ie8 td.x-frame-mc{vertical-align:top}.x-panel-header-horizontal{padding:3px 5px 4px}.x-panel-header-vertical{padding:5px 4px}.x-panel-header-icon,.x-window-header-icon{width:16px;height:16px;background-repeat:no-repeat;background-position:0 0;vertical-align:middle;margin-right:4px}.x-vertical .x-panel-header-icon,.x-vertical .x-window-header-icon{margin:0 0 4px}.x-panel-header-draggable,.x-panel-header-draggable .x-panel-header-text,.x-window-header-draggable,.x-window-header-draggable .x-window-header-text{cursor:move}.x-panel-ghost,.x-window-ghost{filter:alpha(opacity=65);opacity:.65;cursor:move}.x-panel-header-horizontal .x-panel-header-body,.x-panel-header-horizontal .x-window-header-body,.x-panel-header-horizontal .x-btn-group-header-body,.x-window-header-horizontal .x-panel-header-body,.x-window-header-horizontal .x-window-header-body,.x-window-header-horizontal .x-btn-group-header-body,.x-btn-group-header-horizontal .x-panel-header-body,.x-btn-group-header-horizontal .x-window-header-body,.x-btn-group-header-horizontal .x-btn-group-header-body{width:100%}.x-panel-header-vertical .x-panel-header-body,.x-panel-header-vertical .x-window-header-body,.x-panel-header-vertical .x-btn-group-header-body,.x-window-header-vertical .x-panel-header-body,.x-window-header-vertical .x-window-header-body,.x-window-header-vertical .x-btn-group-header-body,.x-btn-group-header-vertical .x-panel-header-body,.x-btn-group-header-vertical .x-window-header-body,.x-btn-group-header-vertical .x-btn-group-header-body{height:100%}.x-panel-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-panel-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;white-space:nowrap}.x-panel-header-left .x-vml-base,.x-panel-header-right .x-vml-base{left:-3px!important}.x-panel-body{overflow:hidden;position:relative;font-size:12px}.x-panel-header-vertical .x-surface{padding-left:1px}.x-opera .x-panel-header-vertical .x-surface,.x-strict .x-ie9 .x-panel-header-vertical .x-surface{padding-left:2px}.x-panel-collapsed .x-panel-header-collapsed-border-top{border-bottom-width:1px!important}.x-panel-collapsed .x-panel-header-collapsed-border-right{border-left-width:1px!important}.x-panel-collapsed .x-panel-header-collapsed-border-bottom{border-top-width:1px!important}.x-panel-collapsed .x-panel-header-collapsed-border-left{border-right-width:1px!important}.x-nlg .x-panel-header-vertical .x-frame-mc{background-repeat:repeat-y}.x-panel-default{border-color:#d0d0d0}.x-panel-header-default{font-size:11px;border-color:#d0d0d0;border-width:1px;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-ms-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:linear-gradient(top,#f0f0f0,#d7d7d7);-moz-box-shadow:#efeded 0 1px 0 0 inset;-webkit-box-shadow:#efeded 0 1px 0 0 inset;-o-box-shadow:#efeded 0 1px 0 0 inset;box-shadow:#efeded 0 1px 0 0 inset}.x-nlg .x-panel-header-default-top{background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-top-bg.gif')}.x-nlg .x-panel-header-default-bottom{background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-bottom-bg.gif')}.x-nlg .x-panel-header-default-left{background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-left-bg.gif')}.x-nlg .x-panel-header-default-right{background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-right-bg.gif')}.x-nlg .x-panel-header-default-right{background-position:top right}.x-nlg .x-panel-header-default-bottom{background-position:bottom left}.x-panel-header-text-default{color:#333;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:17px}.x-panel-body-default{background:white;border-color:#d0d0d0;color:black;border-width:1px;border-style:solid}.x-panel-collapsed .x-window-header-default,.x-panel-collapsed .x-panel-header-default{border-color:#d0d0d0}.x-panel-header-default-vertical{border-color:#d0d0d0}.x-panel-header-default-left,.x-panel-header-default-right{background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-ms-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:linear-gradient(right,#f0f0f0,#d7d7d7)}.x-panel-collapsed .x-panel-header-default-top{-moz-border-radius-bottomleft:null;-webkit-border-bottom-left-radius:null;-o-border-bottom-left-radius:null;-ms-border-bottom-left-radius:null;-khtml-border-bottom-left-radius:null;border-bottom-left-radius:null;-moz-border-radius-bottomright:null;-webkit-border-bottom-right-radius:null;-o-border-bottom-right-radius:null;-ms-border-bottom-right-radius:null;-khtml-border-bottom-right-radius:null;border-bottom-right-radius:null}.x-panel-collapsed .x-panel-header-default-right{-moz-border-radius-topleft:null;-webkit-border-top-left-radius:null;-o-border-top-left-radius:null;-ms-border-top-left-radius:null;-khtml-border-top-left-radius:null;border-top-left-radius:null;-moz-border-radius-bottomleft:null;-webkit-border-bottom-left-radius:null;-o-border-bottom-left-radius:null;-ms-border-bottom-left-radius:null;-khtml-border-bottom-left-radius:null;border-bottom-left-radius:null}.x-panel-collapsed .x-panel-header-default-bottom{-moz-border-radius-topleft:null;-webkit-border-top-left-radius:null;-o-border-top-left-radius:null;-ms-border-top-left-radius:null;-khtml-border-top-left-radius:null;border-top-left-radius:null;-moz-border-radius-topright:null;-webkit-border-top-right-radius:null;-o-border-top-right-radius:null;-ms-border-top-right-radius:null;-khtml-border-top-right-radius:null;border-top-right-radius:null}.x-panel-collapsed .x-panel-header-default-left{-moz-border-radius-topright:null;-webkit-border-top-right-radius:null;-o-border-top-right-radius:null;-ms-border-top-right-radius:null;-khtml-border-top-right-radius:null;border-top-right-radius:null;-moz-border-radius-bottomright:null;-webkit-border-bottom-right-radius:null;-o-border-bottom-right-radius:null;-ms-border-bottom-right-radius:null;-khtml-border-bottom-right-radius:null;border-bottom-right-radius:null}.x-panel-header-default-top{-moz-box-shadow:#efeded 0 1px 0 0 inset;-webkit-box-shadow:#efeded 0 1px 0 0 inset;-o-box-shadow:#efeded 0 1px 0 0 inset;box-shadow:#efeded 0 1px 0 0 inset}.x-panel-header-default-right{-moz-box-shadow:#efeded -1px 0 0 0 inset;-webkit-box-shadow:#efeded -1px 0 0 0 inset;-o-box-shadow:#efeded -1px 0 0 0 inset;box-shadow:#efeded -1px 0 0 0 inset}.x-panel-header-default-bottom{-moz-box-shadow:#efeded 0 -1px 0 0 inset;-webkit-box-shadow:#efeded 0 -1px 0 0 inset;-o-box-shadow:#efeded 0 -1px 0 0 inset;box-shadow:#efeded 0 -1px 0 0 inset}.x-panel-header-default-left{-moz-box-shadow:#efeded 1px 0 0 0 inset;-webkit-box-shadow:#efeded 1px 0 0 0 inset;-o-box-shadow:#efeded 1px 0 0 0 inset;box-shadow:#efeded 1px 0 0 0 inset}.x-panel-header-default-right-tc,.x-panel-header-default-right-mc,.x-panel-header-default-right-bc{background-position:right 0}.x-panel-header-default-bottom-tc,.x-panel-header-default-bottom-mc,.x-panel-header-default-bottom-bc{background-position:0 bottom}.x-panel-default-framed{border-color:#d0d0d0}.x-panel-header-default-framed{font-size:11px;border-color:#d0d0d0;border-width:1px;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-ms-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:linear-gradient(top,#f0f0f0,#d7d7d7);-moz-box-shadow:#efeded 0 1px 0 0 inset;-webkit-box-shadow:#efeded 0 1px 0 0 inset;-o-box-shadow:#efeded 0 1px 0 0 inset;box-shadow:#efeded 0 1px 0 0 inset}.x-nlg .x-panel-header-default-framed-top{background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-top-bg.gif')}.x-nlg .x-panel-header-default-framed-bottom{background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-bottom-bg.gif')}.x-nlg .x-panel-header-default-framed-left{background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-left-bg.gif')}.x-nlg .x-panel-header-default-framed-right{background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-right-bg.gif')}.x-nlg .x-panel-header-default-framed-right{background-position:top right}.x-nlg .x-panel-header-default-framed-bottom{background-position:bottom left}.x-nbr .x-panel-header-default-framed{background-image:none}.x-strict .x-ie9 .x-panel-header-default-framed-top,.x-nlg.x-opera .x-panel-header-default-framed-top,.x-nlg.x-safari .x-panel-header-default-framed-top{background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-top-bg.gif')}.x-strict .x-ie9 .x-panel-header-default-framed-bottom,.x-nlg.x-opera .x-panel-header-default-framed-bottom,.x-nlg.x-safari .x-panel-header-default-framed-bottom{background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-bottom-bg.gif')}.x-strict .x-ie9 .x-panel-header-default-framed-left,.x-nlg.x-opera .x-panel-header-default-framed-left,.x-nlg.x-safari .x-panel-header-default-framed-left{background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-left-bg.gif')}.x-strict .x-ie9 .x-panel-header-default-framed-right,.x-nlg.x-opera .x-panel-header-default-framed-right,.x-nlg.x-safari .x-panel-header-default-framed-right{background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-right-bg.gif')}.x-panel-header-text-default-framed{color:#333;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:17px}.x-panel-body-default-framed{background:#f1f1f1;border-color:#d0d0d0;color:black;border-width:0;border-style:solid}.x-panel-collapsed .x-window-header-default-framed,.x-panel-collapsed .x-panel-header-default-framed{border-color:#d0d0d0}.x-panel-header-default-framed-vertical{border-color:#d0d0d0}.x-panel-header-default-framed-left,.x-panel-header-default-framed-right{background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-ms-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:linear-gradient(right,#f0f0f0,#d7d7d7)}.x-panel-default-framed{-moz-border-radius:4px;-webkit-border-radius:4px;-o-border-radius:4px;-ms-border-radius:4px;-khtml-border-radius:4px;border-radius:4px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#f1f1f1}.x-nlg .x-panel-default-framed-mc{background-color:#f1f1f1}.x-nbr .x-panel-default-framed{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1000404px}.x-nbr .x-panel-default-framed-tl,.x-nbr .x-panel-default-framed-bl,.x-nbr .x-panel-default-framed-tr,.x-nbr .x-panel-default-framed-br,.x-nbr .x-panel-default-framed-tc,.x-nbr .x-panel-default-framed-bc,.x-nbr .x-panel-default-framed-ml,.x-nbr .x-panel-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/gray/panel/panel-default-framed-corners.gif')}.x-nbr .x-panel-default-framed-ml,.x-nbr .x-panel-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/gray/panel/panel-default-framed-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-panel-default-framed-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-panel-default-framed-tl,.x-strict .x-ie7 .x-panel-default-framed-bl{position:relative;right:0}.x-panel-header-default-framed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 5px 4px 5px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-ms-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:linear-gradient(top,#f0f0f0,#d7d7d7)}.x-nlg .x-panel-header-default-framed-top-mc{background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-top-bg.gif');background-color:#d7d2d2}.x-nbr .x-panel-header-default-framed-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1000000px}.x-nbr .x-panel-header-default-framed-top-tl,.x-nbr .x-panel-header-default-framed-top-bl,.x-nbr .x-panel-header-default-framed-top-tr,.x-nbr .x-panel-header-default-framed-top-br,.x-nbr .x-panel-header-default-framed-top-tc,.x-nbr .x-panel-header-default-framed-top-bc,.x-nbr .x-panel-header-default-framed-top-ml,.x-nbr .x-panel-header-default-framed-top-mr{zoom:1;background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-top-corners.gif')}.x-nbr .x-panel-header-default-framed-top-ml,.x-nbr .x-panel-header-default-framed-top-mr{zoom:1;background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-top-sides.gif');background-position:0 0}.x-nbr .x-panel-header-default-framed-top-mc{padding:0 2px 4px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-top-bl{position:relative;right:0}.x-panel-header-default-framed-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 4px;border-width:1px 1px 1px 0;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-ms-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:linear-gradient(right,#f0f0f0,#d7d7d7)}.x-nlg .x-panel-header-default-framed-right-mc{background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-right-bg.gif');background-color:#d7d2d2}.x-nbr .x-panel-header-default-framed-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000004px 1100400px}.x-nbr .x-panel-header-default-framed-right-tl,.x-nbr .x-panel-header-default-framed-right-bl,.x-nbr .x-panel-header-default-framed-right-tr,.x-nbr .x-panel-header-default-framed-right-br,.x-nbr .x-panel-header-default-framed-right-tc,.x-nbr .x-panel-header-default-framed-right-bc,.x-nbr .x-panel-header-default-framed-right-ml,.x-nbr .x-panel-header-default-framed-right-mr{zoom:1;background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-right-corners.gif')}.x-nbr .x-panel-header-default-framed-right-tc,.x-nbr .x-panel-header-default-framed-right-bc{zoom:1;background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-right-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-nbr .x-panel-header-default-framed-right-mc{padding:2px 1px 2px 4px}.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-right-bl{position:relative;right:0}.x-panel-header-default-framed-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-ms-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:linear-gradient(top,#f0f0f0,#d7d7d7)}.x-nlg .x-panel-header-default-framed-bottom-mc{background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-bottom-bg.gif');background-color:#d7d2d2}.x-nbr .x-panel-header-default-framed-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000000px 1000404px}.x-nbr .x-panel-header-default-framed-bottom-tl,.x-nbr .x-panel-header-default-framed-bottom-bl,.x-nbr .x-panel-header-default-framed-bottom-tr,.x-nbr .x-panel-header-default-framed-bottom-br,.x-nbr .x-panel-header-default-framed-bottom-tc,.x-nbr .x-panel-header-default-framed-bottom-bc,.x-nbr .x-panel-header-default-framed-bottom-ml,.x-nbr .x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-bottom-corners.gif')}.x-nbr .x-panel-header-default-framed-bottom-ml,.x-nbr .x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-bottom-sides.gif');background-position:0 0}.x-nbr .x-panel-header-default-framed-bottom-mc{padding:3px 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-ms-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:linear-gradient(right,#f0f0f0,#d7d7d7)}.x-nlg .x-panel-header-default-framed-left-mc{background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-left-bg.gif');background-color:#d7d2d2}.x-nbr .x-panel-header-default-framed-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000400px 1100004px}.x-nbr .x-panel-header-default-framed-left-tl,.x-nbr .x-panel-header-default-framed-left-bl,.x-nbr .x-panel-header-default-framed-left-tr,.x-nbr .x-panel-header-default-framed-left-br,.x-nbr .x-panel-header-default-framed-left-tc,.x-nbr .x-panel-header-default-framed-left-bc,.x-nbr .x-panel-header-default-framed-left-ml,.x-nbr .x-panel-header-default-framed-left-mr{zoom:1;background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-left-corners.gif')}.x-nbr .x-panel-header-default-framed-left-tc,.x-nbr .x-panel-header-default-framed-left-bc{zoom:1;background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-left-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-nbr .x-panel-header-default-framed-left-mc{padding:2px 4px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-left-bl{position:relative;right:0}.x-panel-header-default-framed-top{-moz-box-shadow:#efeded 0 1px 0 0 inset,#efeded -1px 0 0 0 inset,#efeded 1px 0 0 0 inset;-webkit-box-shadow:#efeded 0 1px 0 0 inset,#efeded -1px 0 0 0 inset,#efeded 1px 0 0 0 inset;-o-box-shadow:#efeded 0 1px 0 0 inset,#efeded -1px 0 0 0 inset,#efeded 1px 0 0 0 inset;box-shadow:#efeded 0 1px 0 0 inset,#efeded -1px 0 0 0 inset,#efeded 1px 0 0 0 inset}.x-panel-header-default-framed-right{-moz-box-shadow:#efeded 0 1px 0 0 inset,#efeded 0 -1px 0 0 inset,#efeded -1px 0 0 0 inset;-webkit-box-shadow:#efeded 0 1px 0 0 inset,#efeded 0 -1px 0 0 inset,#efeded -1px 0 0 0 inset;-o-box-shadow:#efeded 0 1px 0 0 inset,#efeded 0 -1px 0 0 inset,#efeded -1px 0 0 0 inset;box-shadow:#efeded 0 1px 0 0 inset,#efeded 0 -1px 0 0 inset,#efeded -1px 0 0 0 inset}.x-panel-header-default-framed-bottom{-moz-box-shadow:#efeded 0 -1px 0 0 inset,#efeded -1px 0 0 0 inset,#efeded 1px 0 0 0 inset;-webkit-box-shadow:#efeded 0 -1px 0 0 inset,#efeded -1px 0 0 0 inset,#efeded 1px 0 0 0 inset;-o-box-shadow:#efeded 0 -1px 0 0 inset,#efeded -1px 0 0 0 inset,#efeded 1px 0 0 0 inset;box-shadow:#efeded 0 -1px 0 0 inset,#efeded -1px 0 0 0 inset,#efeded 1px 0 0 0 inset}.x-panel-header-default-framed-left{-moz-box-shadow:#efeded 0 1px 0 0 inset,#efeded 0 -1px 0 0 inset,#efeded 1px 0 0 0 inset;-webkit-box-shadow:#efeded 0 1px 0 0 inset,#efeded 0 -1px 0 0 inset,#efeded 1px 0 0 0 inset;-o-box-shadow:#efeded 0 1px 0 0 inset,#efeded 0 -1px 0 0 inset,#efeded 1px 0 0 0 inset;box-shadow:#efeded 0 1px 0 0 inset,#efeded 0 -1px 0 0 inset,#efeded 1px 0 0 0 inset}.x-panel .x-panel-header-default-framed-top{border-bottom-width:1px!important}.x-panel .x-panel-header-default-framed-right{border-left-width:1px!important}.x-panel .x-panel-header-default-framed-bottom{border-top-width:1px!important}.x-panel .x-panel-header-default-framed-left{border-right-width:1px!important}.x-panel-header-default-framed-collapsed{-moz-border-radius:4px;-webkit-border-radius:4px;-o-border-radius:4px;-ms-border-radius:4px;-khtml-border-radius:4px;border-radius:4px}.x-panel-header-default-framed-collapsed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-ms-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:linear-gradient(top,#f0f0f0,#d7d7d7)}.x-nlg .x-panel-header-default-framed-collapsed-top-mc{background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-top-bg.gif');background-color:#d7d2d2}.x-nbr .x-panel-header-default-framed-collapsed-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1000404px}.x-nbr .x-panel-header-default-framed-collapsed-top-tl,.x-nbr .x-panel-header-default-framed-collapsed-top-bl,.x-nbr .x-panel-header-default-framed-collapsed-top-tr,.x-nbr .x-panel-header-default-framed-collapsed-top-br,.x-nbr .x-panel-header-default-framed-collapsed-top-tc,.x-nbr .x-panel-header-default-framed-collapsed-top-bc,.x-nbr .x-panel-header-default-framed-collapsed-top-ml,.x-nbr .x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-top-corners.gif')}.x-nbr .x-panel-header-default-framed-collapsed-top-ml,.x-nbr .x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-top-sides.gif');background-position:0 0}.x-nbr .x-panel-header-default-framed-collapsed-top-mc{padding:0 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-ms-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:linear-gradient(right,#f0f0f0,#d7d7d7)}.x-nlg .x-panel-header-default-framed-collapsed-right-mc{background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-right-bg.gif');background-color:#d7d2d2}.x-nbr .x-panel-header-default-framed-collapsed-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1100404px}.x-nbr .x-panel-header-default-framed-collapsed-right-tl,.x-nbr .x-panel-header-default-framed-collapsed-right-bl,.x-nbr .x-panel-header-default-framed-collapsed-right-tr,.x-nbr .x-panel-header-default-framed-collapsed-right-br,.x-nbr .x-panel-header-default-framed-collapsed-right-tc,.x-nbr .x-panel-header-default-framed-collapsed-right-bc,.x-nbr .x-panel-header-default-framed-collapsed-right-ml,.x-nbr .x-panel-header-default-framed-collapsed-right-mr{zoom:1;background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-right-corners.gif')}.x-nbr .x-panel-header-default-framed-collapsed-right-tc,.x-nbr .x-panel-header-default-framed-collapsed-right-bc{zoom:1;background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-right-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-nbr .x-panel-header-default-framed-collapsed-right-mc{padding:2px 1px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-bottom{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:-ms-linear-gradient(top,#f0f0f0,#d7d7d7);background-image:linear-gradient(top,#f0f0f0,#d7d7d7)}.x-nlg .x-panel-header-default-framed-collapsed-bottom-mc{background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif');background-color:#d7d2d2}.x-nbr .x-panel-header-default-framed-collapsed-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1000404px}.x-nbr .x-panel-header-default-framed-collapsed-bottom-tl,.x-nbr .x-panel-header-default-framed-collapsed-bottom-bl,.x-nbr .x-panel-header-default-framed-collapsed-bottom-tr,.x-nbr .x-panel-header-default-framed-collapsed-bottom-br,.x-nbr .x-panel-header-default-framed-collapsed-bottom-tc,.x-nbr .x-panel-header-default-framed-collapsed-bottom-bc,.x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,.x-nbr .x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif')}.x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,.x-nbr .x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif');background-position:0 0}.x-nbr .x-panel-header-default-framed-collapsed-bottom-mc{padding:0 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#d7d2d2;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#f0f0f0),color-stop(100%,#d7d7d7));background-image:-webkit-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-moz-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-o-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:-ms-linear-gradient(right,#f0f0f0,#d7d7d7);background-image:linear-gradient(right,#f0f0f0,#d7d7d7)}.x-nlg .x-panel-header-default-framed-collapsed-left-mc{background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-left-bg.gif');background-color:#d7d2d2}.x-nbr .x-panel-header-default-framed-collapsed-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1100404px}.x-nbr .x-panel-header-default-framed-collapsed-left-tl,.x-nbr .x-panel-header-default-framed-collapsed-left-bl,.x-nbr .x-panel-header-default-framed-collapsed-left-tr,.x-nbr .x-panel-header-default-framed-collapsed-left-br,.x-nbr .x-panel-header-default-framed-collapsed-left-tc,.x-nbr .x-panel-header-default-framed-collapsed-left-bc,.x-nbr .x-panel-header-default-framed-collapsed-left-ml,.x-nbr .x-panel-header-default-framed-collapsed-left-mr{zoom:1;background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-left-corners.gif')}.x-nbr .x-panel-header-default-framed-collapsed-left-tc,.x-nbr .x-panel-header-default-framed-collapsed-left-bc{zoom:1;background-image:url('../../resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-left-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-nbr .x-panel-header-default-framed-collapsed-left-mc{padding:2px 1px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl{position:relative;right:0}.x-panel-header-default-framed-right-tc,.x-panel-header-default-framed-right-mc,.x-panel-header-default-framed-right-bc{background-position:right 0}.x-panel-header-default-framed-bottom-tc,.x-panel-header-default-framed-bottom-mc,.x-panel-header-default-framed-bottom-bc{background-position:0 bottom}.x-panel-header-plain,.x-panel-body-plain{border:0;padding:0}.x-tip{position:absolute;overflow:visible;border-color:#868686}.x-tip .x-tip-header .x-box-item{padding:3px 3px 0}.x-tip .x-tip-header .x-tool{padding:0 1px 0 0!important}.x-tip{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:#ccc}.x-nlg .x-tip-mc{background-color:#ccc}.x-nbr .x-tip{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-tip-tl,.x-nbr .x-tip-bl,.x-nbr .x-tip-tr,.x-nbr .x-tip-br,.x-nbr .x-tip-tc,.x-nbr .x-tip-bc,.x-nbr .x-tip-ml,.x-nbr .x-tip-mr{zoom:1;background-image:url('../../resources/themes/images/gray/tip/tip-corners.gif')}.x-nbr .x-tip-ml,.x-nbr .x-tip-mr{zoom:1;background-image:url('../../resources/themes/images/gray/tip/tip-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-tip-mc{padding:0}.x-strict .x-ie7 .x-tip-tl,.x-strict .x-ie7 .x-tip-bl{position:relative;right:0}.x-tip-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;color:#444;font-size:11px;font-weight:bold}.x-tip-header-draggable .x-tip-header-text{cursor:move}.x-tip-body,.x-form-invalid-tip-body{overflow:hidden;position:relative;padding:3px}.x-tip-header,.x-tip-body,.x-form-invalid-tip-body{color:#444;font-size:11px;font-weight:normal}.x-tip-header a,.x-tip-body a,.x-form-invalid-tip-body a{color:#2a2a2a}.x-tip-anchor{position:absolute;overflow:hidden;height:0;width:0;border-style:solid;border-width:5px;border-color:#868686;zoom:1}.x-border-box .x-tip-anchor{width:10px;height:10px}.x-tip-anchor-top{border-top-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-bottom{border-bottom-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-bottom-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-left{border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-left-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-right{border-top-color:transparent;border-bottom-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-form-invalid-tip{border-color:#a1311f;-moz-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-webkit-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-o-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset}.x-form-invalid-tip-body{background:1px 1px no-repeat;background-image:url('../../resources/themes/images/gray/form/exclamation.gif');padding-left:22px}.x-form-invalid-tip-body li{margin-bottom:4px}.x-form-invalid-tip-body li.last{margin-bottom:0}.x-form-invalid-tip-default{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:white}.x-nlg .x-form-invalid-tip-default-mc{background-color:white}.x-nbr .x-form-invalid-tip-default{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100505px 1000505px}.x-nbr .x-form-invalid-tip-default-tl,.x-nbr .x-form-invalid-tip-default-bl,.x-nbr .x-form-invalid-tip-default-tr,.x-nbr .x-form-invalid-tip-default-br,.x-nbr .x-form-invalid-tip-default-tc,.x-nbr .x-form-invalid-tip-default-bc,.x-nbr .x-form-invalid-tip-default-ml,.x-nbr .x-form-invalid-tip-default-mr{zoom:1;background-image:url('../../resources/themes/images/gray/form-invalid-tip/form-invalid-tip-default-corners.gif')}.x-nbr .x-form-invalid-tip-default-ml,.x-nbr .x-form-invalid-tip-default-mr{zoom:1;background-image:url('../../resources/themes/images/gray/form-invalid-tip/form-invalid-tip-default-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-form-invalid-tip-default-mc{padding:0}.x-strict .x-ie7 .x-form-invalid-tip-default-tl,.x-strict .x-ie7 .x-form-invalid-tip-default-bl{position:relative;right:0}.x-slider{zoom:1}.x-slider-inner{position:relative;left:0;top:0;overflow:visible;zoom:1}.x-slider-focus{position:absolute;left:0;top:0;width:1px;height:1px;line-height:1px;font-size:1px;-moz-outline:0 none;outline:0 none;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;display:block;overflow:hidden}.x-slider-horz{padding-left:7px;background:transparent no-repeat 0 -24px;width:100%}.x-slider-horz .x-slider-end{padding-right:7px;zoom:1;background:transparent no-repeat right -46px}.x-slider-horz .x-slider-inner{background:transparent repeat-x 0 -2px;height:18px}.x-slider-horz .x-slider-thumb{width:14px;height:15px;margin-left:-7px;position:absolute;left:0;top:1px;background:transparent no-repeat 0 0}.x-slider-horz .x-slider-thumb-over{background-position:-14px -15px}.x-slider-horz .x-slider-thumb-drag{background-position:-28px -30px}.x-slider-vert{padding-top:7px;background:transparent no-repeat -44px 0}.x-slider-vert .x-slider-end{padding-bottom:7px;zoom:1;background:transparent no-repeat -22px bottom;width:22px}.x-slider-vert .x-slider-inner{background:transparent repeat-y 0 0;width:22px}.x-slider-vert .x-slider-thumb{width:15px;height:14px;margin-bottom:-7px;position:absolute;left:3px;bottom:0;background:transparent no-repeat 0 0}.x-slider-vert .x-slider-thumb-over{background-position:-15px -14px}.x-slider-vert .x-slider-thumb-drag{background-position:-30px -28px}.x-slider-horz,.x-slider-horz .x-slider-end,.x-slider-horz .x-slider-inner{background-image:url('../../resources/themes/images/gray/slider/slider-bg.png')}.x-slider-horz .x-slider-thumb{background-image:url('../../resources/themes/images/gray/slider/slider-thumb.png')}.x-slider-vert,.x-slider-vert .x-slider-end,.x-slider-vert .x-slider-inner{background-image:url('../../resources/themes/images/gray/slider/slider-v-bg.png')}.x-slider-vert .x-slider-thumb{background-image:url('../../resources/themes/images/gray/slider/slider-v-thumb.png')}.x-ie6 .x-slider-horz,.x-ie6 .x-slider-horz .x-slider-end,.x-ie6 .x-slider-horz .x-slider-inner{background-image:url('../../resources/themes/images/gray/slider/slider-bg.gif')}.x-ie6 .x-slider-horz .x-slider-thumb{background-image:url('../../resources/themes/images/gray/slider/slider-thumb.gif')}.x-ie6 .x-slider-vert,.x-ie6 .x-slider-vert .x-slider-end,.x-ie6 .x-slider-vert .x-slider-inner{background-image:url('../../resources/themes/images/gray/slider/slider-v-bg.gif')}.x-ie6 .x-slider-vert .x-slider-thumb{background-image:url('../../resources/themes/images/gray/slider/slider-v-thumb.gif')}.x-progress{position:relative;border-width:1px;border-style:solid;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;overflow:hidden;height:20px}.x-progress-bar{height:18px;overflow:hidden;position:absolute;width:0;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;border-right:1px solid;border-top:1px solid}.x-progress-text{overflow:hidden;position:absolute;padding:0 5px;height:18px;font-weight:bold;font-size:11px;line-height:16px;text-align:center}.x-progress-text-back{padding-top:1px}.x-strict .x-ie7m .x-progress{height:18px}.x-progress-default{border-color:#8e8e8e}.x-progress-default .x-progress-bar{border-right-color:#8e8e8e;border-top-color:#cecece;background-image:none;background-color:#ababab;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#d1d1d1),color-stop(50%,#b8b8b8),color-stop(51%,#ababab),color-stop(100%,#9e9e9e));background-image:-webkit-linear-gradient(top,#d1d1d1,#b8b8b8 50%,#ababab 51%,#9e9e9e);background-image:-moz-linear-gradient(top,#d1d1d1,#b8b8b8 50%,#ababab 51%,#9e9e9e);background-image:-o-linear-gradient(top,#d1d1d1,#b8b8b8 50%,#ababab 51%,#9e9e9e);background-image:-ms-linear-gradient(top,#d1d1d1,#b8b8b8 50%,#ababab 51%,#9e9e9e);background-image:linear-gradient(top,#d1d1d1,#b8b8b8 50%,#ababab 51%,#9e9e9e)}.x-progress-default .x-progress-text{color:white}.x-progress-default .x-progress-text-back{color:#5d5d5d}.x-nlg .x-progress-default .x-progress-bar{background:repeat-x;background-image:url('../../resources/themes/images/gray/progress/progress-default-bg.gif')}.x-toolbar{font-size:11px;border:1px solid;padding:2px 0 2px 2px}.x-toolbar .x-form-item-label{font-size:11px;line-height:15px}.x-toolbar .x-toolbar-item{margin:0 2px 0 0}.x-toolbar .x-toolbar-text{margin-left:4px;margin-right:6px;white-space:nowrap;color:black;line-height:16px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;font-weight:normal}.x-toolbar .x-toolbar-separator{display:block;font-size:1px;overflow:hidden;cursor:default;border:0}.x-toolbar .x-toolbar-separator-horizontal{margin:0 3px 0 2px;height:14px;width:0;border-left:1px solid #aca899;border-right:1px solid white}.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal{width:2px}.x-toolbar-footer{background:transparent;border:0 none;margin-top:3px;padding:2px 0 2px 6px}.x-toolbar-footer .x-box-inner{border-width:0}.x-toolbar-footer .x-toolbar-item{margin:0 6px 0 0}.x-toolbar-vertical{padding:2px 2px 0 2px}.x-toolbar-vertical .x-toolbar-item{margin:0 0 2px 0}.x-toolbar-vertical .x-toolbar-text{margin-top:4px;margin-bottom:6px}.x-toolbar-vertical .x-toolbar-separator-vertical{margin:2px 5px 3px 5px;height:0;width:10px;line-height:0;border-top:1px solid #aca899;border-bottom:1px solid white}.x-toolbar-scroller{padding-left:0}.x-toolbar-spacer{width:2px}.x-toolbar-more-icon{background-image:url('../../resources/themes/images/gray/toolbar/more.gif')!important;background-position:2px center!important;background-repeat:no-repeat}.x-toolbar-default{border-color:#d0d0d0;background-image:none;background-color:#d8d8d8;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e6e6e6),color-stop(100%,#efefef));background-image:-webkit-linear-gradient(top,#e6e6e6,#efefef);background-image:-moz-linear-gradient(top,#e6e6e6,#efefef);background-image:-o-linear-gradient(top,#e6e6e6,#efefef);background-image:-ms-linear-gradient(top,#e6e6e6,#efefef);background-image:linear-gradient(top,#e6e6e6,#efefef)}.x-nlg .x-toolbar-default{background-image:url('../../resources/themes/images/gray/toolbar/toolbar-default-bg.gif')!important;background-repeat:repeat-x}.x-toolbar-plain{border:0}.x-window{outline:0;overflow:hidden}.x-window .x-window-wrap{position:relative}.x-window-body{position:relative;border-style:solid;overflow:hidden}.x-window-maximized .x-window-wrap .x-window-header{-moz-border-radius:0!important;-webkit-border-radius:0!important;-o-border-radius:0!important;-ms-border-radius:0!important;-khtml-border-radius:0!important;border-radius:0!important}.x-window-header-top{margin-bottom:-2px}.x-window-header-body-horizontal{margin-top:-1px}.x-window-header-bottom{margin-top:-1px;margin-bottom:-1px}.x-window-header-left{margin-right:-1px}.x-window-header-right{margin-left:-1px}.x-window-header-vertical .x-surface{padding-left:1px}.x-window-collapsed .x-window-header-vertical{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px}.x-window-collapsed .x-window-header-horizontal{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px}.x-window-collapsed .x-window-header-left{padding-right:5px!important;margin-right:0}.x-window-collapsed .x-window-header-right{padding-left:5px!important;margin-left:0}.x-window-collapsed .x-window-header-top{padding-bottom:5px!important;margin-bottom:-1px}.x-window-collapsed .x-window-header-bottom{padding-top:5px!important;margin-top:0}.x-window-header-left .x-vml-base,.x-window-header-right .x-vml-base{left:-3px!important}.x-opera .x-window-header-vertical .x-surface,.x-strict .x-ie9 .x-window-header-vertical .x-surface{padding-left:2px}.x-window-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-window-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;white-space:nowrap}.x-window-default{border-color:#a9a9a9;-moz-border-radius:5px 5px;-webkit-border-radius:5px 5px;-o-border-radius:5px 5px;-ms-border-radius:5px 5px;-khtml-border-radius:5px 5px;border-radius:5px 5px;-moz-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset;-webkit-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset;-o-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset;box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset}.x-window-default{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#e8e8e8}.x-nlg .x-window-default-mc{background-color:#e8e8e8}.x-nbr .x-window-default{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-nbr .x-window-default-tl,.x-nbr .x-window-default-bl,.x-nbr .x-window-default-tr,.x-nbr .x-window-default-br,.x-nbr .x-window-default-tc,.x-nbr .x-window-default-bc,.x-nbr .x-window-default-ml,.x-nbr .x-window-default-mr{zoom:1;background-image:url('../../resources/themes/images/gray/window/window-default-corners.gif')}.x-nbr .x-window-default-ml,.x-nbr .x-window-default-mr{zoom:1;background-image:url('../../resources/themes/images/gray/window/window-default-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-default-mc{padding:0}.x-strict .x-ie7 .x-window-default-tl,.x-strict .x-ie7 .x-window-default-bl{position:relative;right:0}.x-window-body-default{border-color:#bcb1b0;border-width:1px;background:#e0e0e0;color:black}.x-window-header-default{font-size:11px;border-color:#a9a9a9;zoom:1}.x-window-header-text-default{color:#333;font-weight:bold;line-height:17px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px}.x-window-header-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 0 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#e8e8e8}.x-nlg .x-window-header-default-top-mc{background-color:#e8e8e8}.x-nbr .x-window-header-default-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000000px}.x-nbr .x-window-header-default-top-tl,.x-nbr .x-window-header-default-top-bl,.x-nbr .x-window-header-default-top-tr,.x-nbr .x-window-header-default-top-br,.x-nbr .x-window-header-default-top-tc,.x-nbr .x-window-header-default-top-bc,.x-nbr .x-window-header-default-top-ml,.x-nbr .x-window-header-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/gray/window-header/window-header-default-top-corners.gif')}.x-nbr .x-window-header-default-top-ml,.x-nbr .x-window-header-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/gray/window-header/window-header-default-top-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-top-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-top-tl,.x-strict .x-ie7 .x-window-header-default-top-bl{position:relative;right:0}.x-window-header-default-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 0;border-width:1px 1px 1px 0;border-style:solid;background-color:#e8e8e8}.x-nlg .x-window-header-default-right-mc{background-color:#e8e8e8}.x-nbr .x-window-header-default-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000005px 1000500px}.x-nbr .x-window-header-default-right-tl,.x-nbr .x-window-header-default-right-bl,.x-nbr .x-window-header-default-right-tr,.x-nbr .x-window-header-default-right-br,.x-nbr .x-window-header-default-right-tc,.x-nbr .x-window-header-default-right-bc,.x-nbr .x-window-header-default-right-ml,.x-nbr .x-window-header-default-right-mr{zoom:1;background-image:url('../../resources/themes/images/gray/window-header/window-header-default-right-corners.gif')}.x-nbr .x-window-header-default-right-ml,.x-nbr .x-window-header-default-right-mr{zoom:1;background-image:url('../../resources/themes/images/gray/window-header/window-header-default-right-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-right-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-right-tl,.x-strict .x-ie7 .x-window-header-default-right-bl{position:relative;right:0}.x-window-header-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:0 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#e8e8e8}.x-nlg .x-window-header-default-bottom-mc{background-color:#e8e8e8}.x-nbr .x-window-header-default-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000000px 1000505px}.x-nbr .x-window-header-default-bottom-tl,.x-nbr .x-window-header-default-bottom-bl,.x-nbr .x-window-header-default-bottom-tr,.x-nbr .x-window-header-default-bottom-br,.x-nbr .x-window-header-default-bottom-tc,.x-nbr .x-window-header-default-bottom-bc,.x-nbr .x-window-header-default-bottom-ml,.x-nbr .x-window-header-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/gray/window-header/window-header-default-bottom-corners.gif')}.x-nbr .x-window-header-default-bottom-ml,.x-nbr .x-window-header-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/gray/window-header/window-header-default-bottom-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-bottom-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-bottom-tl,.x-strict .x-ie7 .x-window-header-default-bottom-bl{position:relative;right:0}.x-window-header-default-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 0 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-color:#e8e8e8}.x-nlg .x-window-header-default-left-mc{background-color:#e8e8e8}.x-nbr .x-window-header-default-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000500px 1000005px}.x-nbr .x-window-header-default-left-tl,.x-nbr .x-window-header-default-left-bl,.x-nbr .x-window-header-default-left-tr,.x-nbr .x-window-header-default-left-br,.x-nbr .x-window-header-default-left-tc,.x-nbr .x-window-header-default-left-bc,.x-nbr .x-window-header-default-left-ml,.x-nbr .x-window-header-default-left-mr{zoom:1;background-image:url('../../resources/themes/images/gray/window-header/window-header-default-left-corners.gif')}.x-nbr .x-window-header-default-left-ml,.x-nbr .x-window-header-default-left-mr{zoom:1;background-image:url('../../resources/themes/images/gray/window-header/window-header-default-left-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-left-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-left-tl,.x-strict .x-ie7 .x-window-header-default-left-bl{position:relative;right:0}.x-window-header-default-collapsed-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#e8e8e8}.x-nlg .x-window-header-default-collapsed-top-mc{background-color:#e8e8e8}.x-nbr .x-window-header-default-collapsed-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-nbr .x-window-header-default-collapsed-top-tl,.x-nbr .x-window-header-default-collapsed-top-bl,.x-nbr .x-window-header-default-collapsed-top-tr,.x-nbr .x-window-header-default-collapsed-top-br,.x-nbr .x-window-header-default-collapsed-top-tc,.x-nbr .x-window-header-default-collapsed-top-bc,.x-nbr .x-window-header-default-collapsed-top-ml,.x-nbr .x-window-header-default-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/gray/window-header/window-header-default-collapsed-top-corners.gif')}.x-nbr .x-window-header-default-collapsed-top-ml,.x-nbr .x-window-header-default-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/gray/window-header/window-header-default-collapsed-top-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-collapsed-top-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl{position:relative;right:0}.x-window-header-default-collapsed-right{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#e8e8e8}.x-nlg .x-window-header-default-collapsed-right-mc{background-color:#e8e8e8}.x-nbr .x-window-header-default-collapsed-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-nbr .x-window-header-default-collapsed-right-tl,.x-nbr .x-window-header-default-collapsed-right-bl,.x-nbr .x-window-header-default-collapsed-right-tr,.x-nbr .x-window-header-default-collapsed-right-br,.x-nbr .x-window-header-default-collapsed-right-tc,.x-nbr .x-window-header-default-collapsed-right-bc,.x-nbr .x-window-header-default-collapsed-right-ml,.x-nbr .x-window-header-default-collapsed-right-mr{zoom:1;background-image:url('../../resources/themes/images/gray/window-header/window-header-default-collapsed-right-corners.gif')}.x-nbr .x-window-header-default-collapsed-right-ml,.x-nbr .x-window-header-default-collapsed-right-mr{zoom:1;background-image:url('../../resources/themes/images/gray/window-header/window-header-default-collapsed-right-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-collapsed-right-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl{position:relative;right:0}.x-window-header-default-collapsed-bottom{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#e8e8e8}.x-nlg .x-window-header-default-collapsed-bottom-mc{background-color:#e8e8e8}.x-nbr .x-window-header-default-collapsed-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-nbr .x-window-header-default-collapsed-bottom-tl,.x-nbr .x-window-header-default-collapsed-bottom-bl,.x-nbr .x-window-header-default-collapsed-bottom-tr,.x-nbr .x-window-header-default-collapsed-bottom-br,.x-nbr .x-window-header-default-collapsed-bottom-tc,.x-nbr .x-window-header-default-collapsed-bottom-bc,.x-nbr .x-window-header-default-collapsed-bottom-ml,.x-nbr .x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/gray/window-header/window-header-default-collapsed-bottom-corners.gif')}.x-nbr .x-window-header-default-collapsed-bottom-ml,.x-nbr .x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/gray/window-header/window-header-default-collapsed-bottom-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-collapsed-bottom-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl{position:relative;right:0}.x-window-header-default-collapsed-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#e8e8e8}.x-nlg .x-window-header-default-collapsed-left-mc{background-color:#e8e8e8}.x-nbr .x-window-header-default-collapsed-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-nbr .x-window-header-default-collapsed-left-tl,.x-nbr .x-window-header-default-collapsed-left-bl,.x-nbr .x-window-header-default-collapsed-left-tr,.x-nbr .x-window-header-default-collapsed-left-br,.x-nbr .x-window-header-default-collapsed-left-tc,.x-nbr .x-window-header-default-collapsed-left-bc,.x-nbr .x-window-header-default-collapsed-left-ml,.x-nbr .x-window-header-default-collapsed-left-mr{zoom:1;background-image:url('../../resources/themes/images/gray/window-header/window-header-default-collapsed-left-corners.gif')}.x-nbr .x-window-header-default-collapsed-left-ml,.x-nbr .x-window-header-default-collapsed-left-mr{zoom:1;background-image:url('../../resources/themes/images/gray/window-header/window-header-default-collapsed-left-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-collapsed-left-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl{position:relative;right:0}.x-window-header-default-top{-moz-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset;-webkit-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset;-o-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset;box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset}.x-window-header-default-right{-moz-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset;-webkit-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset;-o-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset;box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset}.x-window-header-default-bottom{-moz-box-shadow:#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset;-webkit-box-shadow:#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset;-o-box-shadow:#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset;box-shadow:#ebe7e7 0 -1px 0 0 inset,#ebe7e7 -1px 0 0 0 inset,#ebe7e7 1px 0 0 0 inset}.x-window-header-default-left{-moz-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 1px 0 0 0 inset;-webkit-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 1px 0 0 0 inset;-o-box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 1px 0 0 0 inset;box-shadow:#ebe7e7 0 1px 0 0 inset,#ebe7e7 0 -1px 0 0 inset,#ebe7e7 1px 0 0 0 inset}.x-window-body-plain{background:transparent}.x-message-box .x-window-body{background-color:#e8e8e8;border:0}.x-message-box .x-progress-wrap{margin-top:4px}.x-message-box-icon{width:47px;height:32px}.x-message-box-info,.x-message-box-warning,.x-message-box-question,.x-message-box-error{background:transparent no-repeat top left}.x-message-box .x-msg-box-wait{background-image:url('../../resources/themes/images/gray/shared/blue-loading.gif')}.x-message-box-info{background-image:url('../../resources/themes/images/gray/shared/icon-info.gif')}.x-message-box-warning{background-image:url('../../resources/themes/images/gray/shared/icon-warning.gif')}.x-message-box-question{background-image:url('../../resources/themes/images/gray/shared/icon-question.gif')}.x-message-box-error{background-image:url('../../resources/themes/images/gray/shared/icon-error.gif')}.x-tab-bar{position:relative;background-color:transparent;background-image:none;background-color:#d2d2d2;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dfdede),color-stop(100%,#d2d2d2));background-image:-webkit-linear-gradient(top,#dfdede,#d2d2d2);background-image:-moz-linear-gradient(top,#dfdede,#d2d2d2);background-image:-o-linear-gradient(top,#dfdede,#d2d2d2);background-image:-ms-linear-gradient(top,#dfdede,#d2d2d2);background-image:linear-gradient(top,#dfdede,#d2d2d2);font-size:11px}.x-nlg .x-tab-bar{background-image:url('../../resources/themes/images/gray/tab-bar/tab-bar-default-bg.gif')}.x-tab-bar-default-plain,.x-nlg .x-tab-bar-default-plain{background:transparent none}.x-tab-bar-body{border-style:solid;border-color:#d0d0d0;position:relative;z-index:2;zoom:1}.x-tab-bar-top .x-tab-bar-body{height:20px;border-width:1px 1px 0;padding:1px 0 3px}.x-tab-bar-top .x-tab-bar-strip{top:22px;border-width:1px 1px 0;height:2px}.x-border-box .x-tab-bar-top .x-tab-bar-body{height:25px}.x-border-box .x-tab-bar-top .x-tab-bar-strip{height:3px}.x-tab-bar-top .x-tab-bar-body-default-plain{height:20px;border-width:0;padding:0 0 2px}.x-tab-bar-top .x-tab-bar-strip-default-plain{top:20px;border-width:1px 1px 0 1px;height:2px}.x-border-box .x-tab-bar-top .x-tab-bar-body-default-plain{height:22px}.x-border-box .x-tab-bar-top .x-tab-bar-strip-default-plain{height:3px}.x-tab-bar-bottom .x-tab-bar-body{height:20px;border-width:0 1px 1px;padding:3px 0 1px}.x-tab-bar-bottom .x-tab-bar-body .x-box-inner{position:relative;top:-1px}.x-tab-bar-bottom .x-tab-bar-body .x-box-scroller,.x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-left,.x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-right{height:22px}.x-tab-bar-bottom .x-tab-bar-strip{top:0;border-width:0 1px 1px 1px;height:2px}.x-border-box .x-tab-bar-bottom .x-tab-bar-body{height:25px}.x-border-box .x-tab-bar-bottom .x-tab-bar-strip{height:3px}.x-tab-bar-bottom .x-tab-bar-body-default-plain{height:20px;border-width:0;padding:3px 0 0}.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-inner{position:relative;top:-1px}.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller,.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-left,.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-right{height:21px}.x-tab-bar-bottom .x-tab-bar-strip-default-plain{top:0;border-width:0 1px 1px 1px;height:2px}.x-border-box .x-tab-bar-bottom .x-tab-bar-body-default-plain{height:23px}.x-border-box .x-tab-bar-bottom .x-tab-bar-strip-default-plain{height:3px}.x-tab-bar-strip-default,.x-tab-bar-strip-default-plain{font-size:0;line-height:0;position:absolute;z-index:1;border-style:solid;overflow:hidden;border-color:#d0d0d0;background-color:#eaeaea;zoom:1}.x-tab-default-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 3px 0 3px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#eaeaea;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dcdcdc),color-stop(100%,#eaeaea));background-image:-webkit-linear-gradient(top,#dcdcdc,#eaeaea);background-image:-moz-linear-gradient(top,#dcdcdc,#eaeaea);background-image:-o-linear-gradient(top,#dcdcdc,#eaeaea);background-image:-ms-linear-gradient(top,#dcdcdc,#eaeaea);background-image:linear-gradient(top,#dcdcdc,#eaeaea)}.x-nlg .x-tab-default-top-mc{background-image:url('../../resources/themes/images/gray/tab/tab-default-top-bg.gif');background-color:#eaeaea}.x-nbr .x-tab-default-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100404px 1000000px}.x-nbr .x-tab-default-top-tl,.x-nbr .x-tab-default-top-bl,.x-nbr .x-tab-default-top-tr,.x-nbr .x-tab-default-top-br,.x-nbr .x-tab-default-top-tc,.x-nbr .x-tab-default-top-bc,.x-nbr .x-tab-default-top-ml,.x-nbr .x-tab-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/gray/tab/tab-default-top-corners.gif')}.x-nbr .x-tab-default-top-ml,.x-nbr .x-tab-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/gray/tab/tab-default-top-sides.gif');background-position:0 0}.x-nbr .x-tab-default-top-mc{padding:0}.x-strict .x-ie7 .x-tab-default-top-tl,.x-strict .x-ie7 .x-tab-default-top-bl{position:relative;right:0}.x-tab-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:0 3px 3px 3px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#eaeaea;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#dcdcdc),color-stop(100%,#eaeaea));background-image:-webkit-linear-gradient(bottom,#dcdcdc,#eaeaea);background-image:-moz-linear-gradient(bottom,#dcdcdc,#eaeaea);background-image:-o-linear-gradient(bottom,#dcdcdc,#eaeaea);background-image:-ms-linear-gradient(bottom,#dcdcdc,#eaeaea);background-image:linear-gradient(bottom,#dcdcdc,#eaeaea)}.x-nlg .x-tab-default-bottom-mc{background-image:url('../../resources/themes/images/gray/tab/tab-default-bottom-bg.gif');background-color:#eaeaea}.x-nbr .x-tab-default-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100000px 1000404px}.x-nbr .x-tab-default-bottom-tl,.x-nbr .x-tab-default-bottom-bl,.x-nbr .x-tab-default-bottom-tr,.x-nbr .x-tab-default-bottom-br,.x-nbr .x-tab-default-bottom-tc,.x-nbr .x-tab-default-bottom-bc,.x-nbr .x-tab-default-bottom-ml,.x-nbr .x-tab-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/gray/tab/tab-default-bottom-corners.gif')}.x-nbr .x-tab-default-bottom-ml,.x-nbr .x-tab-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/gray/tab/tab-default-bottom-sides.gif');background-position:0 0}.x-nbr .x-tab-default-bottom-mc{padding:0}.x-strict .x-ie7 .x-tab-default-bottom-tl,.x-strict .x-ie7 .x-tab-default-bottom-bl{position:relative;right:0}.x-tab{z-index:1;margin:0 0 0 2px;display:inline-block;zoom:1;*display:inline;white-space:nowrap;height:20px;border-color:#b5b5b5;cursor:pointer;cursor:hand}.x-tab button{cursor:pointer;cursor:hand}.x-tab em{display:block;padding:0 6px;line-height:1px}.x-tab button{background:0;border:0;padding:0;margin:0;-webkit-appearance:none;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;color:#6f6f6f;outline:0 none;overflow-x:visible}.x-tab button::-moz-focus-inner{border:0;padding:0}.x-tab button .x-tab-inner{background-color:transparent;background-repeat:no-repeat;background-position:0 -2px;display:block;text-align:center;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden}.x-tab img{display:none}.x-border-box .x-tab-default-top{height:21px}.x-border-box .x-tab-default-bottom{height:21px}* html .x-ie .x-tab button{width:1px}.x-strict .x-ie6 .x-tab .x-frame-mc,.x-strict .x-ie7 .x-tab .x-frame-mc{height:100%}.x-ie .x-tab-active button:active{position:relative;top:-1px;left:-1px}.x-tab-default-top{-moz-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-webkit-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-o-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;border-bottom:1px solid #d0d0d0!important}.x-tab-default-top em{padding-bottom:3px}.x-tab-default-top button,.x-tab-default-top .x-tab-inner{height:13px;line-height:13px}.x-safari4 .x-tab-default-top .x-tab-inner,.x-safari5_0 .x-tab-default-top .x-tab-inner{line-height:11px}.x-nbr .x-tab-default-top{border-bottom-width:1px!important}.x-tab-default-top-active{border-bottom-color:#eaeaea!important}.x-tab-default-bottom{-moz-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-webkit-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-o-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;border-top:1px solid #d0d0d0!important;-moz-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-webkit-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-o-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x-tab-default-bottom em{padding-top:3px}.x-tab-default-bottom button,.x-tab-default-bottom .x-tab-inner{height:13px;line-height:13px}.x-nbr .x-tab-default-bottom{border-top-width:1px!important}.x-tab-default-bottom-active{border-top-color:#eaeaea!important}.x-tab-default-disabled{cursor:default;border-color:#cec7c7;background-image:none;background-color:#e7dfdf;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e7dfdf),color-stop(100%,#f2e3e4));background-image:-webkit-linear-gradient(top,#e7dfdf,#f2e3e4);background-image:-moz-linear-gradient(top,#e7dfdf,#f2e3e4);background-image:-o-linear-gradient(top,#e7dfdf,#f2e3e4);background-image:-ms-linear-gradient(top,#e7dfdf,#f2e3e4);background-image:linear-gradient(top,#e7dfdf,#f2e3e4)}.x-tab-default-disabled button{color:#c3b3b3!important}.x-tab-icon-text-left .x-tab-inner{padding-left:20px}.x-tab button{position:relative}.x-tab-icon{position:absolute;background-repeat:no-repeat;background-position:0 -1px;top:0;left:0;right:auto;bottom:0;width:18px;height:18px}.x-strict .x-ie8 .x-tab button,.x-strict .x-ie9 .x-tab button{overflow-y:visible}.x-tab-default-disabled .x-tab-icon{filter:alpha(opacity=50);opacity:.5}.x-tab-noicon .x-tab-icon{display:none}.x-tab-top-over{background-image:none;background-color:#f2eeee;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e7e6e6),color-stop(25%,#eeeaea),color-stop(45%,#f2eeee));background-image:-webkit-linear-gradient(top,#e7e6e6,#eeeaea 25%,#f2eeee 45%);background-image:-moz-linear-gradient(top,#e7e6e6,#eeeaea 25%,#f2eeee 45%);background-image:-o-linear-gradient(top,#e7e6e6,#eeeaea 25%,#f2eeee 45%);background-image:-ms-linear-gradient(top,#e7e6e6,#eeeaea 25%,#f2eeee 45%);background-image:linear-gradient(top,#e7e6e6,#eeeaea 25%,#f2eeee 45%)}.x-tab-bottom-over{background-image:none;background-color:#f2eeee;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#e7e6e6),color-stop(25%,#eeeaea),color-stop(45%,#f2eeee));background-image:-webkit-linear-gradient(bottom,#e7e6e6,#eeeaea 25%,#f2eeee 45%);background-image:-moz-linear-gradient(bottom,#e7e6e6,#eeeaea 25%,#f2eeee 45%);background-image:-o-linear-gradient(bottom,#e7e6e6,#eeeaea 25%,#f2eeee 45%);background-image:-ms-linear-gradient(bottom,#e7e6e6,#eeeaea 25%,#f2eeee 45%);background-image:linear-gradient(bottom,#e7e6e6,#eeeaea 25%,#f2eeee 45%)}.x-tab-active{z-index:3}.x-tab-active button{color:#333}.x-tab-top-active{background-image:none;background-color:#eaeaea;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(100%,#eaeaea));background-image:-webkit-linear-gradient(top,#fff,#eaeaea);background-image:-moz-linear-gradient(top,#fff,#eaeaea);background-image:-o-linear-gradient(top,#fff,#eaeaea);background-image:-ms-linear-gradient(top,#fff,#eaeaea);background-image:linear-gradient(top,#fff,#eaeaea)}.x-tab-bottom-active{background-image:none;background-color:#eaeaea;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#fff),color-stop(100%,#eaeaea));background-image:-webkit-linear-gradient(bottom,#fff,#eaeaea);background-image:-moz-linear-gradient(bottom,#fff,#eaeaea);background-image:-o-linear-gradient(bottom,#fff,#eaeaea);background-image:-ms-linear-gradient(bottom,#fff,#eaeaea);background-image:linear-gradient(bottom,#fff,#eaeaea)}.x-tab-disabled{border-color:#cec7c7}.x-tab-disabled button{color:#c3b3b3}.x-tab-top-disabled{background-image:none;background:transparent;background-image:none;background-color:#e7dfdf;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e7dfdf),color-stop(100%,#f2e3e4));background-image:-webkit-linear-gradient(top,#e7dfdf,#f2e3e4);background-image:-moz-linear-gradient(top,#e7dfdf,#f2e3e4);background-image:-o-linear-gradient(top,#e7dfdf,#f2e3e4);background-image:-ms-linear-gradient(top,#e7dfdf,#f2e3e4);background-image:linear-gradient(top,#e7dfdf,#f2e3e4)}.x-tab-bottom-disabled{background-image:none;background:transparent;background-image:none;background-color:#e7dfdf;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#e7dfdf),color-stop(100%,#f2e3e4));background-image:-webkit-linear-gradient(bottom,#e7dfdf,#f2e3e4);background-image:-moz-linear-gradient(bottom,#e7dfdf,#f2e3e4);background-image:-o-linear-gradient(bottom,#e7dfdf,#f2e3e4);background-image:-ms-linear-gradient(bottom,#e7dfdf,#f2e3e4);background-image:linear-gradient(bottom,#e7dfdf,#f2e3e4)}.x-nlg .x-tab-top{background-image:url('../../resources/themes/images/gray/tab/tab-default-top-bg.gif')}.x-nlg .x-tab-bottom{background-image:url('../../resources/themes/images/gray/tab/tab-default-bottom-bg.gif')}.x-nlg .x-tab-top-over{background-image:url('../../resources/themes/images/gray/tab/tab-default-top-over-bg.gif')}.x-nlg .x-tab-bottom-over{background-image:url('../../resources/themes/images/gray/tab/tab-default-bottom-over-bg.gif')}.x-nlg .x-tab-top-active{background-image:url('../../resources/themes/images/gray/tab/tab-default-top-active-bg.gif')}.x-nlg .x-tab-bottom-active{background-image:url('../../resources/themes/images/gray/tab/tab-default-bottom-active-bg.gif')}.x-nlg .x-tab-top-disabled{background-image:url('../../resources/themes/images/gray/tab/tab-default-top-disabled-bg.gif')!important}.x-nlg .x-tab-bottom-disabled{background-image:url('../../resources/themes/images/gray/tab/tab-default-bottom-disabled-bg.gif')!important}.x-tab-closable em{padding-right:14px}.x-tab-close-btn{position:absolute;top:2px;right:2px;width:11px;height:11px;font-size:0;line-height:0;text-indent:-999px;background:no-repeat;background-image:url('../../resources/themes/images/gray/tab/tab-default-close.gif');filter:alpha(opacity=60);opacity:.6}.x-nbr .x-tab-close-btn{top:0;right:0}a.x-tab-close-btn:hover{filter:alpha(opacity=100);opacity:1}.x-tab-default-disabled a.x-tab-close-btn{filter:alpha(opacity=30);opacity:.3}.x-nbr .x-tab-top-over .x-frame-tl,.x-nbr .x-tab-top-over .x-frame-bl,.x-nbr .x-tab-top-over .x-frame-tr,.x-nbr .x-tab-top-over .x-frame-br,.x-nbr .x-tab-top-over .x-frame-tc,.x-nbr .x-tab-top-over .x-frame-bc{background-image:url('../../resources/themes/images/gray/tab/tab-default-top-over-corners.gif')}.x-nbr .x-tab-top-over .x-frame-ml,.x-nbr .x-tab-top-over .x-frame-mr{background-image:url('../../resources/themes/images/gray/tab/tab-default-top-over-sides.gif')}.x-nbr .x-tab-top-over .x-frame-mc{background-color:#f2eeee;background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/tab/tab-default-top-over-bg.gif')}.x-nbr .x-tab-bottom-over .x-frame-tl,.x-nbr .x-tab-bottom-over .x-frame-bl,.x-nbr .x-tab-bottom-over .x-frame-tr,.x-nbr .x-tab-bottom-over .x-frame-br,.x-nbr .x-tab-bottom-over .x-frame-tc,.x-nbr .x-tab-bottom-over .x-frame-bc{background-image:url('../../resources/themes/images/gray/tab/tab-default-bottom-over-corners.gif')}.x-nbr .x-tab-bottom-over .x-frame-ml,.x-nbr .x-tab-bottom-over .x-frame-mr{background-image:url('../../resources/themes/images/gray/tab/tab-default-bottom-over-sides.gif')}.x-nbr .x-tab-bottom-over .x-frame-mc{background-color:#f2eeee;background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/tab/tab-default-bottom-over-bg.gif')}.x-nbr .x-tab-top-active .x-frame-tl,.x-nbr .x-tab-top-active .x-frame-bl,.x-nbr .x-tab-top-active .x-frame-tr,.x-nbr .x-tab-top-active .x-frame-br,.x-nbr .x-tab-top-active .x-frame-tc,.x-nbr .x-tab-top-active .x-frame-bc{background-image:url('../../resources/themes/images/gray/tab/tab-default-top-active-corners.gif')}.x-nbr .x-tab-top-active .x-frame-ml,.x-nbr .x-tab-top-active .x-frame-mr{background-image:url('../../resources/themes/images/gray/tab/tab-default-top-active-sides.gif')}.x-nbr .x-tab-top-active .x-frame-mc{background-color:#eaeaea;background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/tab/tab-default-top-active-bg.gif')}.x-nbr .x-tab-bottom-active .x-frame-tl,.x-nbr .x-tab-bottom-active .x-frame-bl,.x-nbr .x-tab-bottom-active .x-frame-tr,.x-nbr .x-tab-bottom-active .x-frame-br,.x-nbr .x-tab-bottom-active .x-frame-tc,.x-nbr .x-tab-bottom-active .x-frame-bc{background-image:url('../../resources/themes/images/gray/tab/tab-default-bottom-active-corners.gif')}.x-nbr .x-tab-bottom-active .x-frame-ml,.x-nbr .x-tab-bottom-active .x-frame-mr{background-image:url('../../resources/themes/images/gray/tab/tab-default-bottom-active-sides.gif')}.x-nbr .x-tab-bottom-active .x-frame-mc{background-color:#eaeaea;background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/tab/tab-default-bottom-active-bg.gif')}.x-nbr .x-tab-top-disabled .x-frame-tl,.x-nbr .x-tab-top-disabled .x-frame-bl,.x-nbr .x-tab-top-disabled .x-frame-tr,.x-nbr .x-tab-top-disabled .x-frame-br,.x-nbr .x-tab-top-disabled .x-frame-tc,.x-nbr .x-tab-top-disabled .x-frame-bc{background-image:url('../../resources/themes/images/gray/tab/tab-default-top-disabled-corners.gif')}.x-nbr .x-tab-top-disabled .x-frame-ml,.x-nbr .x-tab-top-disabled .x-frame-mr{background-image:url('../../resources/themes/images/gray/tab/tab-default-top-disabled-sides.gif')}.x-nbr .x-tab-top-disabled .x-frame-mc{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/tab/tab-default-top-disabled-bg.gif')}.x-nbr .x-tab-bottom-disabled .x-frame-tl,.x-nbr .x-tab-bottom-disabled .x-frame-bl,.x-nbr .x-tab-bottom-disabled .x-frame-tr,.x-nbr .x-tab-bottom-disabled .x-frame-br,.x-nbr .x-tab-bottom-disabled .x-frame-tc,.x-nbr .x-tab-bottom-disabled .x-frame-bc{background-image:url('../../resources/themes/images/gray/tab/tab-default-bottom-disabled-corners.gif')}.x-nbr .x-tab-bottom-disabled .x-frame-ml,.x-nbr .x-tab-bottom-disabled .x-frame-mr{background-image:url('../../resources/themes/images/gray/tab/tab-default-bottom-disabled-sides.gif')}.x-nbr .x-tab-bottom-disabled .x-frame-mc{background-repeat:repeat-x;background-image:url('../../resources/themes/images/gray/tab/tab-default-bottom-disabled-bg.gif')}.x-autowidth-table table.x-grid-table{table-layout:auto;width:auto!important}.x-tree-no-lines .x-tree-elbow{background-color:transparent}.x-tree-no-lines .x-tree-elbow-end{background-color:transparent}.x-tree-no-lines .x-tree-elbow-line{background-color:transparent}.x-tree-arrows .x-tree-elbow-plus{background:transparent no-repeat 0 0}.x-tree-arrows .x-tree-elbow-end-plus{background:transparent no-repeat 0 0}.x-tree-arrows .x-tree-elbow-end-minus{background:transparent no-repeat -16px 0}.x-tree-arrows .x-tree-elbow-minus{background:transparent no-repeat -16px 0}.x-tree-arrows .x-tree-elbow{background-color:transparent!important}.x-tree-arrows .x-tree-elbow-end{background-color:transparent!important}.x-tree-arrows .x-tree-elbow-line{background-color:transparent!important}.x-tree-arrows .x-tree-expander-over .x-tree-elbow-plus,.x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-plus{background-position:-32px 0}.x-tree-arrows .x-tree-expander-over .x-tree-elbow-minus,.x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-minus{background-position:-48px 0}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-plus,.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-position:-16px 0}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-plus,.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-end-plus{background-position:-48px 0}.x-tree-elbow-plus,.x-tree-elbow-minus,.x-tree-elbow-end-plus,.x-tree-elbow-end-minus{cursor:pointer}.x-tree-lines .x-tree-elbow{background-image:url('../../resources/themes/images/gray/tree/elbow.gif')}.x-tree-lines .x-tree-elbow-end{background-image:url('../../resources/themes/images/gray/tree/elbow-end.gif')}.x-tree-lines .x-tree-elbow-plus{background-image:url('../../resources/themes/images/gray/tree/elbow-plus.gif')}.x-tree-lines .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/gray/tree/elbow-end-plus.gif')}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus{background-image:url('../../resources/themes/images/gray/tree/elbow-minus.gif')}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/gray/tree/elbow-end-minus.gif')}.x-tree-lines .x-tree-elbow-line{background-image:url('../../resources/themes/images/gray/tree/elbow-line.gif')}.x-tree-no-lines .x-tree-elbow-plus,.x-tree-no-lines .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/gray/tree/elbow-plus-nl.gif')}.x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-plus,.x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/gray/tree/elbow-end-minus-nl.gif')}.x-tree-arrows .x-tree-elbow-plus,.x-tree-arrows .x-tree-elbow-minus,.x-tree-arrows .x-tree-elbow-end-plus,.x-tree-arrows .x-tree-elbow-end-minus{background-image:url('../../resources/themes/images/gray/tree/arrows.gif')}.x-tree-icon{margin:2px 3px 0 0}.x-grid-with-row-lines .x-tree-icon{margin-top:1px}.x-tree-elbow,.x-tree-elbow-end,.x-tree-elbow-plus,.x-tree-elbow-end-plus,.x-tree-elbow-empty,.x-tree-elbow-line{height:20px;width:16px}.x-grid-with-row-lines .x-tree-elbow,.x-grid-with-row-lines .x-tree-elbow-end,.x-grid-with-row-lines .x-tree-elbow-plus,.x-grid-with-row-lines .x-tree-elbow-end-plus,.x-grid-with-row-lines .x-tree-elbow-empty,.x-grid-with-row-lines .x-tree-elbow-line{height:19px;background-position:0 -1px}.x-tree-icon-leaf{width:16px;background-image:url('../../resources/themes/images/gray/tree/leaf.gif')}.x-tree-icon-parent{width:16px;background-image:url('../../resources/themes/images/gray/tree/folder.gif')}.x-grid-tree-node-expanded .x-tree-icon-parent{background-image:url('../../resources/themes/images/gray/tree/folder-open.gif')}.x-grid-rowbody{padding:0}.x-grid-cell-treecolumn .x-grid-cell-inner{padding:0;line-height:19px}.x-grid-with-row-lines .x-grid-cell-treecolumn .x-grid-cell-inner{line-height:17px}.x-tree-panel .x-grid-cell-inner{cursor:pointer}.x-tree-panel .x-grid-cell-inner img{display:inline-block;vertical-align:top}.x-ie .x-tree-panel .x-tree-elbow,.x-ie .x-tree-panel .x-tree-elbow-end,.x-ie .x-tree-panel .x-tree-elbow-plus,.x-ie .x-tree-panel .x-tree-elbow-end-plus,.x-ie .x-tree-panel .x-tree-elbow-empty,.x-ie .x-tree-panel .x-tree-elbow-line{vertical-align:-6px}.x-grid-editor-on-text-node .x-form-text{padding-left:1px;padding-right:1px}.x-ie .x-grid-editor-on-text-node .x-form-text{padding-left:2px;padding-right:2px}.x-opera .x-grid-editor-on-text-node .x-form-text{padding-left:2px;padding-right:2px}.x-tree-checkbox{margin:4px 3px 0 0;display:inline-block;vertical-align:top;width:13px;height:13px;background:no-repeat;background-image:url('../../resources/themes/images/gray/form/checkbox.gif');overflow:hidden;padding:0;border:0}.x-tree-checkbox::-moz-focus-inner{padding:0;border:0}.x-grid-with-row-lines .x-tree-checkbox{margin-top:3px}.x-tree-checkbox-checked{background-position:0 -13px}.x-tree-drop-ok-append .x-dd-drop-icon{background-image:url('../../resources/themes/images/gray/tree/drop-append.gif')}.x-tree-drop-ok-above .x-dd-drop-icon{background-image:url('../../resources/themes/images/gray/tree/drop-above.gif')}.x-tree-drop-ok-below .x-dd-drop-icon{background-image:url('../../resources/themes/images/gray/tree/drop-below.gif')}.x-tree-drop-ok-between .x-dd-drop-icon{background-image:url('../../resources/themes/images/gray/tree/drop-between.gif')}.x-grid-tree-loading .x-tree-icon{background-image:url('../../resources/themes/images/gray/tree/loading.gif')}.x-tree-ddindicator{height:1px;border-width:1px 0 0;border-style:dotted;border-color:green}.x-grid-tree-loading span{font-style:italic;color:#444}.x-tree-animator-wrap{overflow:hidden}.x-surface{display:-moz-inline-box;-moz-box-orient:vertical;display:inline-block;vertical-align:middle;*vertical-align:auto;overflow:hidden}.x-surface{*display:inline}.rvml{behavior:url(#default#VML)}.x-surface tspan{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-vml-sprite{position:absolute;left:0;top:0;width:1px;height:1px}.x-vml-group{position:absolute;left:0;top:0;width:1000px;height:1000px}.x-vml-measure-span{position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;display:inline}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}svg,vml{overflow:hidden}.x-viewport,.x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;position:static}.x-dd-drag-proxy{z-index:1000000!important}.x-dd-drag-repair .x-dd-drag-ghost{filter:alpha(opacity=60);opacity:.6}.x-dd-drag-repair .x-dd-drop-icon{display:none}.x-dd-drag-ghost{filter:alpha(opacity=85);opacity:.85;padding:5px;padding-left:20px;white-space:nowrap;color:#000;font:normal 11px tahoma,arial,verdana,sans-serif;border:1px solid;border-color:#ddd #bbb #bbb #ddd;background-color:#fff}.x-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1}.x-view-selector{position:absolute;left:0;top:0;width:0;background-color:#c3daf9;border:1px dotted #39b;filter:alpha(opacity=50);opacity:.5;zoom:1}.x-dd-drop-nodrop .x-dd-drop-icon{background-image:url('../../resources/themes/images/gray/dd/drop-no.gif')}.x-dd-drop-ok .x-dd-drop-icon{background-image:url('../../resources/themes/images/gray/dd/drop-yes.gif')}.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url('../../resources/themes/images/gray/dd/drop-add.gif')}.x-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;zoom:1;filter:alpha(opacity=0);opacity:0;background-color:#fff}.x-collapsed .x-resizable-handle{display:none}.x-resizable-handle-east{width:6px;height:100%;right:0;top:0}.x-resizable-over .x-resizable-handle-east{cursor:e-resize}.x-resizable-handle-south{width:100%;height:6px;left:0;bottom:0}.x-resizable-over .x-resizable-handle-south{cursor:s-resize}.x-resizable-handle-west{width:6px;height:100%;left:0;top:0}.x-resizable-over .x-resizable-handle-west{cursor:w-resize}.x-resizable-handle-north{width:100%;height:6px;left:0;top:0}.x-resizable-over .x-resizable-handle-north{cursor:n-resize}.x-resizable-handle-southeast{width:6px;height:6px;right:0;bottom:0;z-index:101}.x-resizable-over .x-resizable-handle-southeast{cursor:se-resize}.x-resizable-handle-northwest{width:6px;height:6px;left:0;top:0;z-index:101}.x-resizable-over .x-resizable-handle-northwest{cursor:nw-resize}.x-resizable-handle-northeast{width:6px;height:6px;right:0;top:0;z-index:101}.x-resizable-over .x-resizable-handle-northeast{cursor:ne-resize}.x-resizable-handle-southwest{width:6px;height:6px;left:0;bottom:0;z-index:101}.x-resizable-over .x-resizable-handle-southwest{cursor:sw-resize}.x-ie .x-resizable-handle-east{margin-right:-1px}.x-ie .x-resizable-handle-south{margin-bottom:-1px}.x-resizable-over .x-resizable-handle,.x-resizable-pinned .x-resizable-handle{filter:alpha(opacity=100);opacity:1}.x-window .x-window-handle{filter:alpha(opacity=0);opacity:0}.x-window-collapsed .x-window-handle{display:none}.x-resizable-proxy{border:1px dashed #3b5a82;position:absolute;left:0;top:0;overflow:hidden;z-index:50000}.x-resizable-overlay{position:absolute;left:0;top:0;width:100%;height:100%;display:none;z-index:200000;background-color:#fff;filter:alpha(opacity=0);opacity:0}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-position:left;background-image:url('../../resources/themes/images/gray/sizer/e-handle.gif')}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-north{background-position:top;background-image:url('../../resources/themes/images/gray/sizer/s-handle.gif')}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-position:top left;background-image:url('../../resources/themes/images/gray/sizer/se-handle.gif')}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right;background-image:url('../../resources/themes/images/gray/sizer/nw-handle.gif')}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left;background-image:url('../../resources/themes/images/gray/sizer/ne-handle.gif')}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-position:top right;background-image:url('../../resources/themes/images/gray/sizer/sw-handle.gif')}.x-splitter .x-collapse-el{position:absolute;cursor:pointer;background-color:transparent;background-repeat:no-repeat!important}.x-layout-split-left,.x-layout-split-right{top:50%;margin-top:-17px;width:5px;height:35px}.x-layout-split-top,.x-layout-split-bottom{left:50%;width:35px;height:5px;margin-left:-17px}.x-layout-split-left{background:no-repeat top right;background-image:url('../../resources/themes/images/gray/util/splitter/mini-left.gif')}.x-layout-split-right{background:no-repeat top left;background-image:url('../../resources/themes/images/gray/util/splitter/mini-right.gif')}.x-layout-split-top{background:no-repeat top left;background-image:url('../../resources/themes/images/gray/util/splitter/mini-top.gif')}.x-layout-split-bottom{background:no-repeat top left;background-image:url('../../resources/themes/images/gray/util/splitter/mini-bottom.gif')}.x-splitter-collapsed .x-layout-split-left{background:no-repeat top left;background-image:url('../../resources/themes/images/gray/util/splitter/mini-right.gif')}.x-splitter-collapsed .x-layout-split-right{background:no-repeat top right;background-image:url('../../resources/themes/images/gray/util/splitter/mini-left.gif')}.x-splitter-collapsed .x-layout-split-top{background:no-repeat top left;background-image:url('../../resources/themes/images/gray/util/splitter/mini-bottom.gif')}.x-splitter-collapsed .x-layout-split-bottom{background:no-repeat top left;background-image:url('../../resources/themes/images/gray/util/splitter/mini-top.gif')}.x-splitter-horizontal{cursor:e-resize;cursor:row-resize;font-size:1px}.x-splitter-vertical{cursor:e-resize;cursor:col-resize;font-size:1px}.x-splitter-collapsed,.x-splitter-horizontal-noresize,.x-splitter-vertical-noresize{cursor:default}.x-splitter-active{z-index:4;font-size:1px;background-color:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-splitter-active .x-collapse-el{filter:alpha(opacity=30);opacity:.3}.x-proxy-el{position:absolute;background:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-docked{position:absolute!important;z-index:1}.x-docked-top{border-bottom-width:0!important}.x-docked-bottom{border-top-width:0!important}.x-docked-left{border-right-width:0!important}.x-docked-right{border-left-width:0!important}.x-docked-noborder-top{border-top-width:0!important}.x-docked-noborder-right{border-right-width:0!important}.x-docked-noborder-bottom{border-bottom-width:0!important}.x-docked-noborder-left{border-left-width:0!important}.x-box-inner{overflow:hidden;zoom:1;position:relative;left:0;top:0}.x-box-item{position:absolute!important;left:0;top:0}.x-rtl .x-box-item{right:0;left:auto}.x-box-layout-ct,.x-border-layout-ct{overflow:hidden;zoom:1}.x-border-layout-ct{background-color:#e0e0e0;position:relative}.x-overflow-hidden{overflow:hidden!important}.x-inline-children>*{display:inline-block!important}.x-abs-layout-ct{position:relative}.x-abs-layout-item{position:absolute!important}.x-fit-item{position:relative}.x-border-region-slide-in{z-index:5}.x-region-collapsed-placeholder{z-index:4}.x-accordion-hd .x-panel-header-text{color:black;font-weight:normal}.x-accordion-hd{background:#e5e5e5!important;-moz-box-shadow:inset 0 0 0 0 #e5e5e5;-webkit-box-shadow:inset 0 0 0 0 #e5e5e5;-o-box-shadow:inset 0 0 0 0 #e5e5e5;box-shadow:inset 0 0 0 0 #e5e5e5}.x-accordion-hd .x-tool-collapse-top,.x-accordion-hd .x-tool-collapse-right,.x-accordion-hd .x-tool-collapse-bottom,.x-accordion-hd .x-tool-collapse-left{background-position:0 -255px}.x-accordion-hd .x-tool-expand-top,.x-accordion-hd .x-tool-expand-right,.x-accordion-hd .x-tool-expand-bottom,.x-accordion-hd .x-tool-expand-left{background-position:0 -240px}.x-accordion-hd .x-tool-over .x-tool-collapse-top,.x-accordion-hd .x-tool-over .x-tool-collapse-right,.x-accordion-hd .x-tool-over .x-tool-collapse-bottom,.x-accordion-hd .x-tool-over .x-tool-collapse-left{background-position:-15px -255px}.x-accordion-hd .x-tool-over .x-tool-expand-top,.x-accordion-hd .x-tool-over .x-tool-expand-right,.x-accordion-hd .x-tool-over .x-tool-expand-bottom,.x-accordion-hd .x-tool-over .x-tool-expand-left{background-position:-15px -240px}.x-accordion-hd{border-width:1px 0 1px 0!important;padding:4px 5px 5px 5px;border-top-color:#ececec!important}.x-accordion-body{border-width:0!important}.x-accordion-hd-sibling-expanded{border-top-color:#d0d0d0!important;-moz-box-shadow:inset 0 1px 0 0 #ececec;-webkit-box-shadow:inset 0 1px 0 0 #ececec;-o-box-shadow:inset 0 1px 0 0 #ececec;box-shadow:inset 0 1px 0 0 #ececec}.x-accordion-hd-last-collapsed{border-bottom-color:#e5e5e5!important}.x-frame-tl,.x-frame-tr,.x-frame-tc,.x-frame-bl,.x-frame-br,.x-frame-bc{overflow:hidden;background-repeat:no-repeat}.x-frame-tc,.x-frame-bc{background-repeat:repeat-x}.x-frame-mc{position:relative;background-repeat:repeat-x;overflow:hidden}.x-box-scroller-left{float:left;height:100%;z-index:5}.x-box-scroller-left .x-toolbar-scroll-left,.x-box-scroller-left .x-tabbar-scroll-left{width:18px;position:relative;cursor:pointer;height:20px;background:transparent no-repeat -18px 0;background-image:url('../../resources/themes/images/gray/tab-bar/scroll-left.gif')}.x-box-scroller-left .x-toolbar-scroll-left-hover{background-position:0 0}.x-box-scroller-left .x-toolbar-scroll-left-disabled,.x-box-scroller-left .x-tabbar-scroll-left-disabled{background-position:-18px 0;filter:alpha(opacity=50);opacity:.5;cursor:default}.x-box-scroller-left .x-toolbar-scroll-left{background-image:url('../../resources/themes/images/gray/toolbar/scroll-left.gif');background-position:-14px 0}.x-box-scroller-left .x-toolbar-scroll-left-hover{background-position:0 0}.x-box-scroller-left .x-toolbar-scroll-left-disabled{background-position:-14px 0}.x-box-scroller-left .x-toolbar-scroll-left{width:14px;height:22px;border-bottom:1px solid #8db2e3}.x-horizontal-box-overflow-body{float:left}.x-box-scroller-right{float:right;height:100%;z-index:5}.x-box-scroller-right .x-toolbar-scroll-right,.x-box-scroller-right .x-tabbar-scroll-right{width:18px;position:relative;cursor:pointer;height:20px;background:transparent no-repeat 0 0;background-image:url('../../resources/themes/images/gray/tab-bar/scroll-right.gif')}.x-box-scroller-right .x-toolbar-scroll-right-hover{background-position:-18px 0}.x-box-scroller-right .x-toolbar-scroll-right-disabled,.x-box-scroller-right .x-tabbar-scroll-right-disabled{background-position:0 0;filter:alpha(opacity=50);opacity:.5;cursor:default}.x-box-scroller-right .x-toolbar-scroll-right{background-image:url('../../resources/themes/images/gray/toolbar/scroll-right.gif')}.x-box-scroller-right .x-toolbar-scroll-right-hover{background-position:-14px 0}.x-box-scroller-right .x-toolbar-scroll-right-disabled{background-position:0 0}.x-box-scroller-right .x-toolbar-scroll-right{width:14px;height:22px;border-bottom:1px solid #8db2e3}.x-box-scroller-top .x-box-scroller{line-height:0;font-size:0}.x-box-scroller-top .x-menu-scroll-top{background:transparent no-repeat center center;background-image:url('../../resources/themes/images/gray/layout/mini-top.gif');height:8px;cursor:pointer}.x-box-scroller-bottom .x-box-scroller{line-height:0;font-size:0}.x-box-scroller-bottom .x-menu-scroll-bottom{background:transparent no-repeat center center;background-image:url('../../resources/themes/images/gray/layout/mini-bottom.gif');height:8px;cursor:pointer}.x-box-menu-right{float:right;padding-right:2px}.x-column{float:left}.x-ie6 .x-column{display:inline}.x-quirks .x-ie .x-form-layout-table,.x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item{position:relative}.x-tool{height:15px}.x-tool img{overflow:hidden;width:15px;height:15px;cursor:pointer;background-color:transparent;background-repeat:no-repeat;background-image:url('../../resources/themes/images/gray/tools/tool-sprites.gif');margin:0}.x-panel-header-horizontal .x-tool,.x-window-header-horizontal .x-tool{margin-left:2px}.x-panel-header-vertical .x-tool,.x-window-header-vertical .x-tool{margin-top:2px}.x-panel-header-vertical .x-tool-top,.x-window-header-vertical .x-tool-top{margin:0 0 4px}.x-tool-placeholder{visibility:hidden}.x-tool-toggle{background-position:0 -60px}.x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-panel-collapsed .x-tool-toggle,.x-fieldset-collapsed .x-tool-toggle{background-position:0 -75px}.x-panel-collapsed .x-tool-over .x-tool-toggle,.x-fieldset-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.x-tool-close{background-position:0 0}.x-tool-minimize{background-position:0 -15px}.x-tool-maximize{background-position:0 -30px}.x-tool-restore{background-position:0 -45px}.x-tool-gear{background-position:0 -90px}.x-tool-prev{background-position:0 -105px}.x-tool-next{background-position:0 -120px}.x-tool-pin{background-position:0 -135px}.x-tool-unpin{background-position:0 -150px}.x-tool-right{background-position:0 -165px}.x-tool-left{background-position:0 -180px}.x-tool-help{background-position:0 -300px}.x-tool-save{background-position:0 -285px}.x-tool-search{background-position:0 -270px}.x-tool-minus{background-position:0 -255px}.x-tool-plus{background-position:0 -240px}.x-tool-refresh{background-position:0 -225px}.x-tool-up{background-position:0 -210px}.x-tool-down{background-position:0 -195px}.x-tool-collapse{background-position:0 -345px}.x-tool-expand{background-position:0 -330px}.x-tool-print{background-position:0 -315px}.x-tool-expand-bottom,.x-tool-collapse-bottom{background-position:0 -195px}.x-tool-expand-top,.x-tool-collapse-top{background-position:0 -210px}.x-tool-expand-left,.x-tool-collapse-left{background-position:0 -180px}.x-tool-expand-right,.x-tool-collapse-right{background-position:0 -165px}.x-tool-over .x-tool-close{background-position:-15px 0}.x-tool-over .x-tool-minimize{background-position:-15px -15px}.x-tool-over .x-tool-maximize{background-position:-15px -30px}.x-tool-over .x-tool-restore{background-position:-15px -45px}.x-tool-over .x-tool-gear{background-position:-15px -90px}.x-tool-over .x-tool-prev{background-position:-15px -105px}.x-tool-over .x-tool-next{background-position:-15px -120px}.x-tool-over .x-tool-pin{background-position:-15px -135px}.x-tool-over .x-tool-unpin{background-position:-15px -150px}.x-tool-over .x-tool-right{background-position:-15px -165px}.x-tool-over .x-tool-left{background-position:-15px -180px}.x-tool-over .x-tool-down{background-position:-15px -195px}.x-tool-over .x-tool-up{background-position:-15px -210px}.x-tool-over .x-tool-refresh{background-position:-15px -225px}.x-tool-over .x-tool-plus{background-position:-15px -240px}.x-tool-over .x-tool-minus{background-position:-15px -255px}.x-tool-over .x-tool-search{background-position:-15px -270px}.x-tool-over .x-tool-save{background-position:-15px -285px}.x-tool-over .x-tool-help{background-position:-15px -300px}.x-tool-over .x-tool-print{background-position:-15px -315px}.x-tool-over .x-tool-expand{background-position:-15px -330px}.x-tool-over .x-tool-collapse{background-position:-15px -345px}.x-tool-over .x-tool-expand-bottom,.x-tool-over .x-tool-collapse-bottom{background-position:-15px -195px}.x-tool-over .x-tool-expand-top,.x-tool-over .x-tool-collapse-top{background-position:-15px -210px}.x-tool-over .x-tool-expand-left,.x-tool-over .x-tool-collapse-left{background-position:-15px -180px}.x-tool-over .x-tool-expand-right,.x-tool-over .x-tool-collapse-right{background-position:-15px -165px}.x-horizontal-scroller-present .x-grid-body{border-bottom-width:0}.x-vertical-scroller-present .x-grid-body{border-right-width:0}.x-scroller{overflow:hidden}.x-scroller-vertical{border:1px solid #d0d0d0;border-top-color:#c5c5c5}.x-scroller-horizontal{border:1px solid #d0d0d0}.x-vertical-scroller-present .x-scroller-horizontal{border-right-width:0}.x-scroller-ct{overflow:hidden;position:absolute;margin:0;padding:0;border:0;left:0;top:0;box-sizing:content-box!important;-ms-box-sizing:content-box!important;-moz-box-sizing:content-box!important;-webkit-box-sizing:content-box!important}.x-scroller-vertical .x-scroller-ct{overflow-y:scroll}.x-scroller-horizontal .x-scroller-ct{overflow-x:scroll}.x-html html,.x-html address,.x-html blockquote,.x-html body,.x-html dd,.x-html div,.x-html dl,.x-html dt,.x-html fieldset,.x-html form,.x-html frame,.x-html frameset,.x-html h1,.x-html h2,.x-html h3,.x-html h4,.x-html h5,.x-html h6,.x-html noframes,.x-html ol,.x-html p,.x-html ul,.x-html center,.x-html dir,.x-html hr,.x-html menu,.x-html pre{display:block}.x-html li{display:list-item;list-style:disc}.x-html head{display:none}.x-html table{display:table}.x-html tr{display:table-row}.x-html thead{display:table-header-group}.x-html tbody{display:table-row-group}.x-html tfoot{display:table-footer-group}.x-html col{display:table-column}.x-html colgroup{display:table-column-group}.x-html td,.x-html th{display:table-cell}.x-html caption{display:table-caption}.x-html th{font-weight:bolder;text-align:center}.x-html caption{text-align:center}.x-html body{margin:8px}.x-html h1{font-size:2em;margin:.67em 0}.x-html h2{font-size:1.5em;margin:.75em 0}.x-html h3{font-size:1.17em;margin:.83em 0}.x-html h4,.x-html p,.x-html blockquote,.x-html ul,.x-html fieldset,.x-html form,.x-html ol,.x-html dl,.x-html dir,.x-html menu{margin:1.12em 0}.x-html h5{font-size:.83em;margin:1.5em 0}.x-html h6{font-size:.75em;margin:1.67em 0}.x-html h1,.x-html h2,.x-html h3,.x-html h4,.x-html h5,.x-html h6,.x-html b,.x-html strong{font-weight:bolder}.x-html blockquote{margin-left:40px;margin-right:40px}.x-html i,.x-html cite,.x-html em,.x-html var,.x-html address{font-style:italic}.x-html pre,.x-html tt,.x-html code,.x-html kbd,.x-html samp{font-family:monospace}.x-html pre{white-space:pre}.x-html button,.x-html textarea,.x-html input,.x-html select{display:inline-block}.x-html big{font-size:1.17em}.x-html small,.x-html sub,.x-html sup{font-size:.83em}.x-html sub{vertical-align:sub}.x-html sup{vertical-align:super}.x-html table{border-spacing:2px}.x-html thead,.x-html tbody,.x-html tfoot{vertical-align:middle}.x-html td,.x-html th{vertical-align:inherit}.x-html s,.x-html strike,.x-html del{text-decoration:line-through}.x-html hr{border:1px inset}.x-html ol,.x-html ul,.x-html dir,.x-html menu,.x-html dd{margin-left:40px}.x-html ul,.x-html menu,.x-html dir{list-style-type:disc}.x-html ol{list-style-type:decimal}.x-html ol ul,.x-html ul ol,.x-html ul ul,.x-html ol ol{margin-top:0;margin-bottom:0}.x-html u,.x-html ins{text-decoration:underline}.x-html br:before{content:"\A"}.x-html :before,.x-html :after{white-space:pre-line}.x-html center{text-align:center}.x-html :link,.x-html :visited{text-decoration:underline}.x-html :focus{outline:invert dotted thin}.x-html BDO[DIR="ltr"]{direction:ltr;unicode-bidi:bidi-override}.x-html BDO[DIR="rtl"]{direction:rtl;unicode-bidi:bidi-override}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-all-scoped-debug.css
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-all-scoped-debug.css	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-all-scoped-debug.css	(revision 18277)
@@ -0,0 +1,9078 @@
+/*
+This file is part of Ext JS 4.1
+
+Copyright (c) 2011-2012 Sencha Inc
+
+Contact:  http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2012-07-04 21:11:01 (65ff594cd80b9bad45df640c22cc0adb52c95a7b)
+*/
+/**
+ * @class Global_CSS
+ *
+ * Global CSS variables and mixins of Sencha Touch.
+ */
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+/**
+ * @var {string} $theme-name
+ * The name of the theme. This must match the the output directory of the images.
+ * (defaults to 'default')
+ */
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+/**
+ * @var {string} $font-family
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $base-gradient
+ * The base gradient to be used throughout the theme.
+ */
+/**
+ * @var {color} $base-color
+ * The base color to be used throughout the theme.
+ */
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules
+ */
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+/**
+ * @var {boolean} $compile-all
+ * True to copile all CSS, even if above include rules are false
+ */
+/**
+ * @var {boolean} $scope-reset-css
+ * True to scope the reset CSS within the $prefix variable.
+ */
+/**
+ * @var {color} $css-shadow-background-color
+ * The base color for CSS shadows
+ */
+/**
+ * @var {color} $include-shadow-images
+ * True to include all shadow images.
+ */
+/**
+ * @class Ext.form.field.Base
+ */
+/**
+ * @var {measurement} $form-field-height
+ * Height for form fields.
+ */
+/**
+ * @var {measurement} $form-toolbar-field-height
+ * Height for form fields in toolbar.
+ */
+/**
+ * @var {measurement} $form-error-icon-width
+ * Width for form error icons.
+ */
+/**
+ * @var {measurement} $form-field-padding
+ * Padding around form fields.
+ */
+/**
+ * @var {measurement} $form-field-font-size
+ * Font size for form fields.
+ */
+/**
+ * @var {font-family} $form-field-font-family
+ * Font family for form fields.
+ */
+/**
+ * @var {font-weight} $form-field-font-weight
+ * Font weight for form fields.
+ */
+/**
+ * @var {font} $form-field-font
+ * Font for form fields.
+ */
+/**
+ * @var {color} $form-field-color
+ * Text color for form fields.
+ */
+/**
+ * @var {color} $form-field-empty-color
+ * Text color for empty form fields.
+ */
+/**
+ * @var {color} $form-field-border-color
+ * Border color for form fields.
+ */
+/**
+ * @var {measurement} $form-field-border-width
+ * Border width for form fields.
+ */
+/**
+ * @var {color} $form-field-focus-border-color
+ * Border color for focused form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-border-color
+ * Border color for invalid form fields.
+ */
+/**
+ * @var {color} $form-field-background-color
+ * Background color for form fields.
+ */
+/**
+ * @var {string} $form-field-background-image
+ * Background image for form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-background-color
+ * Background color for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-image
+ * Background image for invalid form fields.
+ */
+/**
+ * @var {background-repeat} $form-field-invalid-background-repeat
+ * Background repeat for invalid form fields.
+ */
+/**
+ * @var {background-position} $form-field-invalid-background-position
+ * Background position for invalid form fields.
+ */
+/**
+ * @class Ext.form.field.TextArea
+ */
+/**
+ * @class Ext.form.Label
+ */
+/**
+ * @class Ext.form.field.Checkbox
+ */
+/**
+ * @class Ext.form.field.Radio
+ */
+/* Error messages */
+/**
+ * @class Ext.form.field.Trigger
+ */
+/**
+ * @class Ext.form.FieldSet
+ */
+/**
+ * @class Ext.slider.Multi
+ */
+/**
+ * Creates a background gradient.
+ *
+ * @param {Color} $bg-color The background color of the gradient
+ * @param {String/List} [$type] The type of gradient to be used. Can either
+ * be a String which is a predefined gradient, or it can can be a list of
+ * color_stops. If none is set, it will still set the `background-color`
+ * to the $background-color.
+ * @param {String} [$direction=top] The direction of the gradient. Can either be
+ * `top` or `left`.
+ * @member Global_CSS
+ */
+/*
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error.
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to
+ * be true.
+ */
+/* line 3, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-border-box .x-reset,
+.x-border-box .x-reset * {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  -webkit-box-sizing: border-box; }
+
+/* line 13, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset html, .x-reset body, .x-reset div, .x-reset dl, .x-reset dt, .x-reset dd, .x-reset ul, .x-reset ol, .x-reset li, .x-reset h1, .x-reset h2, .x-reset h3,
+.x-reset h4, .x-reset h5, .x-reset h6, .x-reset pre, .x-reset code, .x-reset form, .x-reset fieldset, .x-reset legend,
+.x-reset input, .x-reset textarea, .x-reset p, .x-reset blockquote, .x-reset th, .x-reset td {
+  margin: 0;
+  padding: 0; }
+/* line 18, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset table {
+  border-collapse: collapse;
+  border-spacing: 0; }
+/* line 23, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset fieldset, .x-reset img {
+  border: 0; }
+/* line 28, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset address, .x-reset caption, .x-reset cite, .x-reset code,
+.x-reset dfn, .x-reset em, .x-reset strong, .x-reset th, .x-reset var {
+  font-style: normal;
+  font-weight: normal; }
+/* line 33, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset li {
+  list-style: none; }
+/* line 37, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset caption, .x-reset th {
+  text-align: left; }
+/* line 41, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset h1, .x-reset h2, .x-reset h3, .x-reset h4, .x-reset h5, .x-reset h6 {
+  font-size: 100%; }
+/* line 46, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset q:before,
+.x-reset q:after {
+  content: ""; }
+/* line 50, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset abbr, .x-reset acronym {
+  border: 0;
+  font-variant: normal; }
+/* line 55, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset sup {
+  vertical-align: text-top; }
+/* line 59, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset sub {
+  vertical-align: text-bottom; }
+/* line 63, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset input, .x-reset textarea, .x-reset select {
+  font-family: inherit;
+  font-size: inherit;
+  font-weight: inherit; }
+/* line 69, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset *:focus {
+  outline: none; }
+
+/* line 1, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-body {
+  color: black;
+  font-size: 12px;
+  font-family: tahoma, arial, verdana, sans-serif; }
+
+/* line 7, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-rtl {
+  direction: rtl; }
+
+/* line 11, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ltr {
+  direction: ltr; }
+
+/* line 15, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-clear {
+  overflow: hidden;
+  clear: both;
+  font-size: 0;
+  line-height: 0;
+  display: table; }
+
+/* line 23, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-strict .x-ie7 .x-clear {
+  height: 0;
+  width: 0; }
+
+/* line 31, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-layer {
+  position: absolute !important;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 37, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-shim {
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 45, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hide-display {
+  display: none !important; }
+
+/* line 49, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hide-visibility {
+  visibility: hidden !important; }
+
+/* line 56, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-item-disabled .x-form-item-label,
+.x-item-disabled .x-form-field,
+.x-item-disabled .x-form-cb-label,
+.x-item-disabled .x-form-trigger {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 60, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ie6 .x-item-disabled {
+  filter: none; }
+
+/* line 65, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hidden,
+.x-hide-offsets {
+  display: block !important;
+  visibility: hidden !important;
+  position: absolute!important;
+  left: -10000px !important;
+  top: -10000px !important; }
+
+/* line 75, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hide-nosize {
+  height: 0!important;
+  width: 0!important; }
+
+/* line 80, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-masked-relative {
+  position: relative; }
+
+/* line 86, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ie6 .x-masked select,
+.x-ie6.x-body-masked select {
+  visibility: hidden !important; }
+
+/* line 92, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-css-shadow {
+  position: absolute;
+  -moz-border-radius: 5px 5px;
+  -webkit-border-radius: 5px 5px;
+  -o-border-radius: 5px 5px;
+  -ms-border-radius: 5px 5px;
+  -khtml-border-radius: 5px 5px;
+  border-radius: 5px 5px; }
+
+/* line 98, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ie-shadow {
+  background-color: #777;
+  display: none;
+  position: absolute;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 107, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tl {
+  background: transparent no-repeat 0 0;
+  zoom: 1; }
+
+/* line 112, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tc {
+  height: 8px;
+  background: transparent repeat-x 0 0;
+  overflow: hidden; }
+
+/* line 118, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tr {
+  background: transparent no-repeat right -8px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-ml {
+  background: transparent repeat-y 0;
+  padding-left: 4px;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 129, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc {
+  background: repeat-x 0 -16px;
+  padding: 4px 10px; }
+
+/* line 134, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc h3 {
+  margin: 0 0 4px 0;
+  zoom: 1; }
+
+/* line 139, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mr {
+  background: transparent repeat-y right;
+  padding-right: 4px;
+  overflow: hidden; }
+
+/* line 145, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bl {
+  background: transparent no-repeat 0 -16px;
+  zoom: 1; }
+
+/* line 150, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bc {
+  background: transparent repeat-x 0 -8px;
+  height: 8px;
+  overflow: hidden; }
+
+/* line 156, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-br {
+  background: transparent no-repeat right -24px; }
+
+/* line 160, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tl, .x-box-bl {
+  padding-left: 8px;
+  overflow: hidden; }
+
+/* line 165, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tr, .x-box-br {
+  padding-right: 8px;
+  overflow: hidden; }
+
+/* line 170, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tl {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 174, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tc {
+  background-image: url('../../resources/themes/images/default/box/tb.gif'); }
+
+/* line 178, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tr {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 182, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-ml {
+  background-image: url('../../resources/themes/images/default/box/l.gif'); }
+
+/* line 186, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc {
+  background-color: #eee;
+  background-image: url('../../resources/themes/images/default/box/tb.gif');
+  font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;
+  color: #393939;
+  font-size: 15px; }
+
+/* line 194, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc h3 {
+  font-size: 18px;
+  font-weight: bold; }
+
+/* line 199, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mr {
+  background-image: url('../../resources/themes/images/default/box/r.gif'); }
+
+/* line 203, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bl {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 207, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bc {
+  background-image: url('../../resources/themes/images/default/box/tb.gif'); }
+
+/* line 211, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-br {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 215, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr {
+  background-image: url('../../resources/themes/images/default/box/corners-blue.gif'); }
+
+/* line 219, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc {
+  background-image: url('../../resources/themes/images/default/box/tb-blue.gif'); }
+
+/* line 223, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-mc {
+  background-color: #c3daf9; }
+
+/* line 227, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-mc h3 {
+  color: #17385b; }
+
+/* line 231, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-ml {
+  background-image: url('../../resources/themes/images/default/box/l-blue.gif'); }
+
+/* line 235, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-mr {
+  background-image: url('../../resources/themes/images/default/box/r-blue.gif'); }
+
+/* line 239, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-container {
+  zoom: 1; }
+  /* line 244, ../themes/stylesheets/ext4/default/core/_core.scss */
+  .x-container:before {
+    content: "";
+    clear: both;
+    display: table; }
+
+/* line 254, ../themes/stylesheets/ext4/default/core/_core.scss */
+table.x-container:before,
+tbody.x-container:before,
+tr.x-container:before {
+  display: none; }
+
+/* line 1, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-element {
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px; }
+
+/* line 9, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame {
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  z-index: 100000000;
+  width: 0px;
+  height: 0px; }
+
+/* line 21, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom,
+.x-focus-frame-left,
+.x-focus-frame-right {
+  position: absolute;
+  top: 0px;
+  left: 0px; }
+
+/* line 28, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom {
+  border-top: solid 2px #15428b;
+  height: 2px; }
+
+/* line 34, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame-left,
+.x-focus-frame-right {
+  border-left: solid 2px #15428b;
+  width: 2px; }
+
+/**
+ * Creates the base structure of a BoundList.
+ * @member Ext.view.BoundList
+ */
+/**
+ * Creates the base structure of an Ext.Button
+ * @member Ext.button.Button
+ */
+/**
+ * Creates a visual theme of an Ext.Button
+ * @member Ext.button.Button
+ */
+/**
+ * Creates the base structure of a button group.
+ * @member Ext.container.ButtonGroup
+ */
+/**
+ * Creates a visual theme of a button group.
+ * @member Ext.container.ButtonGroup
+ */
+/**
+ * Creates the base structure of a date picker.
+ * @member Ext.picker.Date
+ */
+/**
+ * Creates base structure for Ext.picker.Color
+ * @member Ext.picker.Color
+ */
+/**
+ * Creates the base structure of a Menu
+ * @member Ext.menu.Menu
+ */
+/**
+ * Create the base structure of an Ext.Panel
+ * @member Ext.panel.Panel
+ */
+/**
+ * Creates a visual theme for an Ext.Panel
+ * @member Ext.panel.Panel
+ */
+/**
+ * Creates base structure for Toolbar
+ * @member Ext.toolbar.Toolbar
+ */
+/**
+ * Creates a visual theme for an Toolbar.
+ * @param {String} $ui The name of the UI
+ * @param {Color} $background-color The background color of the toolbar (defaults to transparent)
+ * @param {Gradient/color-stops} $background-gradient The background gradient of the toolbar (defaults to null)
+ * @param {Color} $border-color The border color of the toolbar (defaults to null)
+ * @member Ext.toolbar.Toolbar
+ */
+/**
+ * Creates the base structure of Ext.form.Panel.
+ * @member Ext.form.Panel
+ */
+/**
+ * Creates the base structure of form field.
+ * @member Ext.form.field.Base
+ */
+/**
+ * Creates the base structure of FieldSet.
+ * @member Ext.form.FieldSet
+ */
+/**
+ * Creates the base structure of file field.
+ * @member Ext.form.field.File
+ */
+/**
+ * Creates the base structure of checkbox field.
+ * @member Ext.form.field.Checkbox
+ */
+/**
+ * Creates the base structure of CheckboxGroup.
+ * @member Ext.form.CheckboxGroup
+ */
+/**
+ * Creates the base structure of trigger field.
+ * @member Ext.form.field.Trigger
+ */
+/**
+ * Creates the base structure of HtmlEditor field.
+ * @member Ext.form.field.HtmlEditor
+ */
+/**
+ * Creates the base structure of QuickTip.
+ * @member Ext.tip.QuickTip
+ */
+/**
+ * Creates the base structure of an Ext.Window
+ * @member Ext.window.Window
+ */
+/**
+ * Creates a visual theme for an Ext.Panel
+ * @member Ext.window.Window
+ */
+/**
+ * Creates a visual theme for TabBar
+ * @member Ext.tab.Bar
+ */
+/**
+ * Creates the base structure of a Tab.
+ * @member Ext.tab.Tab
+ */
+/**
+ * Creates the base structure of slider.
+ * @member Ext.slider.Multi
+ */
+/**
+ * Creates base structure for a Grid.
+ * @member Ext.grid.Panel
+ */
+/**
+ * Creates the base structure of Tree.
+ * @member Ext.tree.Panel
+ */
+/* Styles for Ext.LoadMask */
+/* line 3, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+.x-mask {
+  z-index: 100;
+  position: absolute;
+  top: 0;
+  left: 0;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  width: 100%;
+  height: 100%;
+  zoom: 1;
+  background: #cccccc; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+.x-mask-msg {
+  z-index: 20001;
+  position: absolute;
+  top: 0;
+  left: 0;
+  padding: 2px;
+  border: 1px solid;
+  border-color: #99bce8;
+  background-image: none;
+  background-color: #dfe9f6; }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+  .x-mask-msg div {
+    padding: 5px 10px 5px 25px;
+    background-image: url('../../resources/themes/images/default/grid/loading.gif');
+    background-repeat: no-repeat;
+    background-position: 5px center;
+    cursor: wait;
+    border: 1px solid #a3bad9;
+    background-color: #eeeeee;
+    color: #222222;
+    font: normal 11px tahoma, arial, verdana, sans-serif; }
+
+/**
+ * Creates the base structure of an Ext.ProgressBar
+ * @member Ext.ProgressBar
+ */
+/**
+ * Creates a visual theme for an Ext.ProgressBar
+ * @member Ext.ProgressBar
+ */
+/**
+ * Creates base structure for a Draw Component.
+ * @member Ext.draw.Component
+ */
+/**
+ * Creates the base structure of Viewport.
+ * @member Ext.container.Viewport
+ */
+/**
+ * W3C suggested default style sheet for HTML 4:
+ * [http://www.w3.org/TR/CSS21/sample.html](http://www.w3.org/TR/CSS21/sample.html)
+ *
+ * @member Global_CSS
+ */
+/* line 30, ../themes/stylesheets/ext4/default/_all.scss */
+.x-reset {
+  /* IE9 shows scrollbars in a button unless this is set  */
+  /* Keep the selector simple ".x-btn .x-frame-mc" is enough to target the center frame of the button table */
+  /* Only center when all there is is text. Otherwise solo icons get centered. */
+  /*
+  IE6-8 have issues with shrinking the TR to 0px (even w/line-height=0), so we
+  use an IE-specific trick to make the row disappear. We cannot do this on any
+  other browser, because it is not a non-standard thing to do and those other
+  browsers will do whacky things with it.
+  */
+  /* IE6, IE7, and all IE Quirks mode need line-height to be the same as checkbox height or the header/row height will be too tall */
+  /*misc*/
+        /*
+        In oldIE, text inputs get a mysterious extra pixel of spacing above and below.
+        This is targeted at IE6-IE7 (all modes) and IE9+ Quirks mode.
+
+        IE8 quirks on Windows 7 requires this fix, but on
+        IE8 quirks on Windows XP, this is breaks the layout.
+        TODO: Check field input heights in IE8 quirks on Windows Vista.
+
+        Since we can't specifically target a specific version of Windows via CSS, we default to fixing it the XP way, for now.
+        */
+  /* IE legend positioning bug */
+  /* Hack for IE; causes alignment problem in IE9 standards mode so exclude that */
+  /* Focused */
+  /* Radios */
+  /* boxLabel */
+  /* Horizontal styles */
+  /* Vertical styles */
+  /* Top Tabs */
+  /* Bottom Tabs */
+  /* In IE a disabled icon needs to be hidden or the opacity effect covers some of the text */
+  /* Include the element name otherwise Internet Explorer 7 & 8 take a performance hit */
+  /* Include the element name to raise the specificity to equal the :hover */
+  /*IE rounding error*/
+  /*
+   * Dock Layouts
+   * @todo move this somewhere else?
+   */ }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-reset .x-boundlist {
+    border-width: 1px;
+    border-style: solid;
+    border-color: #98c0f4;
+    background: white; }
+    /* line 12, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+    .x-reset .x-boundlist .x-toolbar {
+      border-width: 1px 0 0 0; }
+  /* line 22, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-reset .x-strict .x-ie6 .x-boundlist-list-ct,
+  .x-reset .x-strict .x-ie7 .x-boundlist-list-ct {
+    position: relative; }
+  /* line 29, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-reset .x-boundlist-item {
+    padding: 2px;
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default;
+    cursor: pointer;
+    cursor: hand;
+    position: relative;
+    /*allow hover in IE on empty items*/
+    border-width: 1px;
+    border-style: dotted;
+    border-color: white; }
+  /* line 43, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-reset .x-boundlist-selected {
+    background: #cbdaf0;
+    border-color: #8eabe4; }
+  /* line 48, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-reset .x-boundlist-item-over {
+    background: #dfe8f6;
+    border-color: #a3bae9; }
+  /* line 53, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-reset .x-boundlist-floating {
+    border-top-width: 0; }
+  /* line 57, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-reset .x-boundlist-above {
+    border-top-width: 1px;
+    border-bottom-width: 1px; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn {
+    display: inline-block;
+    zoom: 1;
+    *display: inline;
+    position: relative;
+    cursor: pointer;
+    cursor: hand;
+    white-space: nowrap;
+    vertical-align: middle;
+    background-repeat: no-repeat; }
+    /* line 19, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn * {
+      cursor: pointer;
+      cursor: hand; }
+    /* line 26, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn em {
+      background-repeat: no-repeat; }
+      /* line 30, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+      .x-reset .x-btn em a {
+        text-decoration: none;
+        display: block;
+        color: inherit;
+        width: 100%;
+        zoom: 1; }
+    /* line 45, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn button {
+      width: 100%;
+      display: block;
+      margin: 0;
+      padding: 0;
+      border: 0;
+      background: none;
+      outline: 0 none;
+      overflow: hidden;
+      vertical-align: bottom;
+      -webkit-appearance: none; }
+      /* line 59, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+      .x-reset .x-btn button::-moz-focus-inner {
+        border: 0;
+        padding: 0; }
+    /* line 65, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn .x-btn-inner {
+      display: block;
+      white-space: nowrap;
+      background-color: transparent;
+      background-repeat: no-repeat;
+      background-position: left center;
+      overflow: hidden; }
+    /* line 74, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn .x-btn-left .x-btn-inner {
+      text-align: left; }
+    /* line 78, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn .x-btn-center .x-btn-inner {
+      text-align: center; }
+    /* line 82, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn .x-btn-right .x-btn-inner {
+      text-align: right; }
+  /* line 87, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-disabled span {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5; }
+    /* line 91, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-disabled span, .x-ie7 .x-reset .x-btn-disabled span {
+      filter: none; }
+  /* line 98, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie7 .x-btn-disabled,
+  .x-reset .x-ie8 .x-btn-disabled {
+    filter: none; }
+  /* line 105, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie6 .x-btn-disabled .x-btn-icon,
+  .x-reset .x-ie7 .x-btn-disabled .x-btn-icon,
+  .x-reset .x-ie8 .x-btn-disabled .x-btn-icon {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+    opacity: 0.6; }
+  /* line 112, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie9 .x-btn button {
+    overflow: visible!important; }
+  /* line 117, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset * html .x-ie .x-btn button {
+    width: 1px; }
+  /* line 122, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie .x-btn button {
+    overflow-x: visible;
+    /*prevents extra horiz space in IE*/
+    vertical-align: baseline;
+    /*IE doesn't like bottom*/ }
+  /* line 129, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-strict .x-ie6 .x-btn .x-frame-mc,
+  .x-reset .x-strict .x-ie7 .x-btn .x-frame-mc {
+    height: 100%; }
+  /* line 138, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn .x-frame-mc {
+    vertical-align: middle;
+    white-space: nowrap;
+    cursor: pointer; }
+  /* line 147, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-noicon .x-frame-mc {
+    text-align: center; }
+  /* line 153, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-icon-text-left .x-btn-icon {
+    background-position: left center; }
+  /* line 157, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-icon-text-right .x-btn-icon {
+    background-position: right center; }
+  /* line 161, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-icon-text-top .x-btn-icon {
+    background-position: center top; }
+  /* line 165, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-icon-text-bottom .x-btn-icon {
+    background-position: center bottom; }
+  /* line 170, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn button, .x-reset .x-btn a {
+    position: relative; }
+    /* line 173, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn button .x-btn-icon, .x-reset .x-btn a .x-btn-icon {
+      position: absolute;
+      background-repeat: no-repeat; }
+  /* line 180, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-arrow-right {
+    background: transparent no-repeat right center;
+    padding-right: 12px; }
+    /* line 184, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn-arrow-right .x-btn-inner {
+      padding-right: 0 !important; }
+  /* line 189, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-toolbar .x-btn-arrow-right {
+    padding-right: 12px; }
+  /* line 193, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-arrow-bottom {
+    background: transparent no-repeat center bottom;
+    padding-bottom: 12px; }
+  /* line 198, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-arrow {
+    background-image: url('../../resources/themes/images/default/button/arrow.gif');
+    display: block; }
+  /* line 206, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-split-right,
+  .x-reset .x-btn-over .x-btn-split-right {
+    background: transparent no-repeat right center;
+    background-image: url('../../resources/themes/images/default/button/s-arrow.gif');
+    padding-right: 14px !important; }
+  /* line 213, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-split-bottom,
+  .x-reset .x-btn-over .x-btn-split-bottom {
+    background: transparent no-repeat center bottom;
+    background-image: url('../../resources/themes/images/default/button/s-arrow-b.gif');
+    padding-bottom: 14px; }
+  /* line 219, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-toolbar .x-btn-split-right {
+    background-image: url('../../resources/themes/images/default/button/s-arrow-noline.gif');
+    padding-right: 12px !important; }
+  /* line 224, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-toolbar .x-btn-split-bottom {
+    background-image: url('../../resources/themes/images/default/button/s-arrow-b-noline.gif'); }
+  /* line 228, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-split {
+    display: block; }
+  /* line 233, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-item-disabled,
+  .x-reset .x-item-disabled * {
+    cursor: default; }
+  /* line 237, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-cycle-fixed-width .x-btn-inner {
+    text-align: inherit; }
+  /* line 241, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-over .x-btn-split-right {
+    background-image: url('../../resources/themes/images/default/button/s-arrow-o.gif'); }
+  /* line 242, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-over .x-btn-split-bottom {
+    background-image: url('../../resources/themes/images/default/button/s-arrow-bo.gif'); }
+  /* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small {
+    border-color: #d1d1d1; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-btn-default-small {
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    -o-border-radius: 3px;
+    -ms-border-radius: 3px;
+    -khtml-border-radius: 3px;
+    border-radius: 3px;
+    padding: 2px 2px 2px 2px;
+    border-width: 1px;
+    border-style: solid;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7));
+    background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+    background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+    background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+    background-image: -ms-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+    background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-btn-default-small-mc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-bg.gif');
+    background-color: white; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-small {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1100303px 1000303px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-small-tl,
+  .x-reset .x-nbr .x-btn-default-small-bl,
+  .x-reset .x-nbr .x-btn-default-small-tr,
+  .x-reset .x-nbr .x-btn-default-small-br,
+  .x-reset .x-nbr .x-btn-default-small-tc,
+  .x-reset .x-nbr .x-btn-default-small-bc,
+  .x-reset .x-nbr .x-btn-default-small-ml,
+  .x-reset .x-nbr .x-btn-default-small-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-small-ml,
+  .x-reset .x-nbr .x-btn-default-small-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-sides.gif');
+    background-position: 0 0; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-small-mc {
+    padding: 0px 0px 0px 0px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-btn-default-small-tl,
+  .x-reset .x-strict .x-ie7 .x-btn-default-small-bl {
+    position: relative;
+    right: 0; }
+  /* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small .x-btn-inner {
+    font-size: 11px;
+    font-weight: normal;
+    font-family: tahoma, arial, verdana, sans-serif;
+    color: #333333;
+    background-repeat: no-repeat;
+    padding: 0 4px; }
+  /* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon button,
+  .x-reset .x-btn-default-small-icon a,
+  .x-reset .x-btn-default-small-icon .x-btn-inner,
+  .x-reset .x-btn-default-small-noicon button,
+  .x-reset .x-btn-default-small-noicon a,
+  .x-reset .x-btn-default-small-noicon .x-btn-inner {
+    height: 16px;
+    line-height: 16px; }
+  /* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon button, .x-reset .x-btn-default-small-icon a {
+    padding: 0; }
+  /* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon .x-btn-inner {
+    /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+    width: 16px;
+    padding: 0; }
+  /* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon .x-btn-icon {
+    width: 16px;
+    height: 16px;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+  /* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-left button, .x-reset .x-btn-default-small-icon-text-left a {
+    height: 16px; }
+  /* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-left .x-btn-inner {
+    height: 16px;
+    line-height: 16px;
+    padding-left: 20px; }
+  /* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-left .x-btn-icon {
+    width: 16px;
+    height: auto;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: auto; }
+    /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-small-icon-text-left .x-btn-icon, .x-quirks .x-reset .x-btn-default-small-icon-text-left .x-btn-icon {
+      height: 16px; }
+  /* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-right button, .x-reset .x-btn-default-small-icon-text-right a {
+    height: 16px; }
+  /* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-right .x-btn-inner {
+    height: 16px;
+    line-height: 16px;
+    padding-right: 20px !important; }
+  /* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-right .x-btn-icon {
+    width: 16px;
+    height: auto;
+    top: 0;
+    left: auto;
+    bottom: 0;
+    right: 0; }
+    /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-small-icon-text-right .x-btn-icon, .x-quirks .x-reset .x-btn-default-small-icon-text-right .x-btn-icon {
+      height: 16px; }
+  /* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-top .x-btn-inner {
+    padding-top: 20px; }
+  /* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-top .x-btn-icon {
+    width: auto;
+    height: 16px;
+    top: 0;
+    left: 0;
+    bottom: auto;
+    right: 0; }
+    /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-small-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-small-icon-text-top .x-btn-icon {
+      width: 16px; }
+  /* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-bottom .x-btn-inner {
+    padding-bottom: 20px; }
+  /* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-bottom .x-btn-icon {
+    width: auto;
+    height: 16px;
+    top: auto;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+    /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-small-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-small-icon-text-bottom .x-btn-icon {
+      width: 16px; }
+  /* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-over {
+    border-color: #b0ccf2;
+    background-image: none;
+    background-color: #e4f3ff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+    background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+  /* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-focus {
+    border-color: #b0ccf2;
+    background-image: none;
+    background-color: #e4f3ff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+    background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+  /* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-menu-active,
+  .x-reset .x-btn-default-small-pressed {
+    border-color: #9ebae1;
+    background-image: none;
+    background-color: #b6cbe4;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+    background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -ms-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); }
+  /* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-disabled {
+    border-color: #e1e1e1;
+    background-image: none;
+    background-color: #f7f7f7;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+    background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -ms-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); }
+    /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn-default-small-disabled .x-btn-inner {
+      color: #333333 !important; }
+  /* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie .x-btn-default-small-disabled .x-btn-inner {
+    color: #595959 !important; }
+  /* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie6 .x-btn-default-small-disabled .x-btn-inner {
+    color: #8c8c8c !important; }
+  /* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-small-over .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-small-over .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-small-over .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-small-over .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-small-over .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-small-over .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-over-corners.gif'); }
+  /* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-small-over .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-small-over .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-over-sides.gif'); }
+  /* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-small-over .x-frame-mc {
+    background-color: #e4f3ff;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-over-bg.gif'); }
+  /* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-small-focus .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-small-focus .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-small-focus .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-small-focus .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-small-focus .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-small-focus .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-focus-corners.gif'); }
+  /* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-small-focus .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-small-focus .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-focus-sides.gif'); }
+  /* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-small-focus .x-frame-mc {
+    background-color: #e4f3ff;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-focus-bg.gif'); }
+  /* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-bc,
+  .x-reset .x-nbr .x-btn-default-small-pressed .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-small-pressed .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-small-pressed .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-small-pressed .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-small-pressed .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-small-pressed .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-pressed-corners.gif'); }
+  /* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-mr,
+  .x-reset .x-nbr .x-btn-default-small-pressed .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-small-pressed .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-pressed-sides.gif'); }
+  /* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-mc,
+  .x-reset .x-nbr .x-btn-default-small-pressed .x-frame-mc {
+    background-color: #b6cbe4;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-pressed-bg.gif'); }
+  /* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-small-disabled .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-small-disabled .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-small-disabled .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-small-disabled .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-small-disabled .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-small-disabled .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-disabled-corners.gif'); }
+  /* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-small-disabled .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-small-disabled .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-disabled-sides.gif'); }
+  /* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-small-disabled .x-frame-mc {
+    background-color: #f7f7f7;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-disabled-bg.gif'); }
+  /* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-small {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-bg.gif'); }
+  /* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-small-over {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-over-bg.gif'); }
+  /* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-small-focus {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-focus-bg.gif'); }
+  /* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-small-menu-active,
+  .x-reset .x-nlg .x-btn-default-small-pressed {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-pressed-bg.gif'); }
+  /* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-small-disabled {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-disabled-bg.gif'); }
+  /* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium {
+    border-color: #d1d1d1; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-btn-default-medium {
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    -o-border-radius: 3px;
+    -ms-border-radius: 3px;
+    -khtml-border-radius: 3px;
+    border-radius: 3px;
+    padding: 3px 3px 3px 3px;
+    border-width: 1px;
+    border-style: solid;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7));
+    background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+    background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+    background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+    background-image: -ms-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+    background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-btn-default-medium-mc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif');
+    background-color: white; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-medium {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1100303px 1000303px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-medium-tl,
+  .x-reset .x-nbr .x-btn-default-medium-bl,
+  .x-reset .x-nbr .x-btn-default-medium-tr,
+  .x-reset .x-nbr .x-btn-default-medium-br,
+  .x-reset .x-nbr .x-btn-default-medium-tc,
+  .x-reset .x-nbr .x-btn-default-medium-bc,
+  .x-reset .x-nbr .x-btn-default-medium-ml,
+  .x-reset .x-nbr .x-btn-default-medium-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-medium-ml,
+  .x-reset .x-nbr .x-btn-default-medium-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-sides.gif');
+    background-position: 0 0; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-medium-mc {
+    padding: 1px 1px 1px 1px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-btn-default-medium-tl,
+  .x-reset .x-strict .x-ie7 .x-btn-default-medium-bl {
+    position: relative;
+    right: 0; }
+  /* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium .x-btn-inner {
+    font-size: 11px;
+    font-weight: normal;
+    font-family: tahoma, arial, verdana, sans-serif;
+    color: #333333;
+    background-repeat: no-repeat;
+    padding: 0 3px; }
+  /* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon button,
+  .x-reset .x-btn-default-medium-icon a,
+  .x-reset .x-btn-default-medium-icon .x-btn-inner,
+  .x-reset .x-btn-default-medium-noicon button,
+  .x-reset .x-btn-default-medium-noicon a,
+  .x-reset .x-btn-default-medium-noicon .x-btn-inner {
+    height: 24px;
+    line-height: 24px; }
+  /* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon button, .x-reset .x-btn-default-medium-icon a {
+    padding: 0; }
+  /* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon .x-btn-inner {
+    /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+    width: 24px;
+    padding: 0; }
+  /* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon .x-btn-icon {
+    width: 24px;
+    height: 24px;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+  /* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-left button, .x-reset .x-btn-default-medium-icon-text-left a {
+    height: 24px; }
+  /* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-left .x-btn-inner {
+    height: 24px;
+    line-height: 24px;
+    padding-left: 28px; }
+  /* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-left .x-btn-icon {
+    width: 24px;
+    height: auto;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: auto; }
+    /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-medium-icon-text-left .x-btn-icon, .x-quirks .x-reset .x-btn-default-medium-icon-text-left .x-btn-icon {
+      height: 24px; }
+  /* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-right button, .x-reset .x-btn-default-medium-icon-text-right a {
+    height: 24px; }
+  /* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-right .x-btn-inner {
+    height: 24px;
+    line-height: 24px;
+    padding-right: 28px !important; }
+  /* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-right .x-btn-icon {
+    width: 24px;
+    height: auto;
+    top: 0;
+    left: auto;
+    bottom: 0;
+    right: 0; }
+    /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-medium-icon-text-right .x-btn-icon, .x-quirks .x-reset .x-btn-default-medium-icon-text-right .x-btn-icon {
+      height: 24px; }
+  /* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-top .x-btn-inner {
+    padding-top: 28px; }
+  /* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-top .x-btn-icon {
+    width: auto;
+    height: 24px;
+    top: 0;
+    left: 0;
+    bottom: auto;
+    right: 0; }
+    /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-medium-icon-text-top .x-btn-icon {
+      width: 24px; }
+  /* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-bottom .x-btn-inner {
+    padding-bottom: 28px; }
+  /* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-bottom .x-btn-icon {
+    width: auto;
+    height: 24px;
+    top: auto;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+    /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-medium-icon-text-bottom .x-btn-icon {
+      width: 24px; }
+  /* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-over {
+    border-color: #b0ccf2;
+    background-image: none;
+    background-color: #e4f3ff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+    background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+  /* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-focus {
+    border-color: #b0ccf2;
+    background-image: none;
+    background-color: #e4f3ff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+    background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+  /* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-menu-active,
+  .x-reset .x-btn-default-medium-pressed {
+    border-color: #9ebae1;
+    background-image: none;
+    background-color: #b6cbe4;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+    background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -ms-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); }
+  /* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-disabled {
+    border-color: #e1e1e1;
+    background-image: none;
+    background-color: #f7f7f7;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+    background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -ms-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); }
+    /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn-default-medium-disabled .x-btn-inner {
+      color: #333333 !important; }
+  /* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie .x-btn-default-medium-disabled .x-btn-inner {
+    color: #595959 !important; }
+  /* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie6 .x-btn-default-medium-disabled .x-btn-inner {
+    color: #8c8c8c !important; }
+  /* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-medium-over .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-medium-over .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-medium-over .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-medium-over .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-medium-over .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-medium-over .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-over-corners.gif'); }
+  /* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-medium-over .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-medium-over .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-over-sides.gif'); }
+  /* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-medium-over .x-frame-mc {
+    background-color: #e4f3ff;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-over-bg.gif'); }
+  /* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-medium-focus .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-medium-focus .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-medium-focus .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-medium-focus .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-medium-focus .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-medium-focus .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-focus-corners.gif'); }
+  /* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-medium-focus .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-medium-focus .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-focus-sides.gif'); }
+  /* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-medium-focus .x-frame-mc {
+    background-color: #e4f3ff;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-focus-bg.gif'); }
+  /* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-bc,
+  .x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-pressed-corners.gif'); }
+  /* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-mr,
+  .x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-pressed-sides.gif'); }
+  /* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-mc,
+  .x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-mc {
+    background-color: #b6cbe4;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif'); }
+  /* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-disabled-corners.gif'); }
+  /* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-disabled-sides.gif'); }
+  /* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-mc {
+    background-color: #f7f7f7;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif'); }
+  /* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-medium {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif'); }
+  /* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-medium-over {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-over-bg.gif'); }
+  /* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-medium-focus {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-focus-bg.gif'); }
+  /* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-medium-menu-active,
+  .x-reset .x-nlg .x-btn-default-medium-pressed {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif'); }
+  /* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-medium-disabled {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif'); }
+  /* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large {
+    border-color: #d1d1d1; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-btn-default-large {
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    -o-border-radius: 3px;
+    -ms-border-radius: 3px;
+    -khtml-border-radius: 3px;
+    border-radius: 3px;
+    padding: 3px 3px 3px 3px;
+    border-width: 1px;
+    border-style: solid;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7));
+    background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+    background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+    background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+    background-image: -ms-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+    background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-btn-default-large-mc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-bg.gif');
+    background-color: white; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-large {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1100303px 1000303px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-large-tl,
+  .x-reset .x-nbr .x-btn-default-large-bl,
+  .x-reset .x-nbr .x-btn-default-large-tr,
+  .x-reset .x-nbr .x-btn-default-large-br,
+  .x-reset .x-nbr .x-btn-default-large-tc,
+  .x-reset .x-nbr .x-btn-default-large-bc,
+  .x-reset .x-nbr .x-btn-default-large-ml,
+  .x-reset .x-nbr .x-btn-default-large-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-large-ml,
+  .x-reset .x-nbr .x-btn-default-large-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-sides.gif');
+    background-position: 0 0; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-large-mc {
+    padding: 1px 1px 1px 1px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-btn-default-large-tl,
+  .x-reset .x-strict .x-ie7 .x-btn-default-large-bl {
+    position: relative;
+    right: 0; }
+  /* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large .x-btn-inner {
+    font-size: 11px;
+    font-weight: normal;
+    font-family: tahoma, arial, verdana, sans-serif;
+    color: #333333;
+    background-repeat: no-repeat;
+    padding: 0 3px; }
+  /* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon button,
+  .x-reset .x-btn-default-large-icon a,
+  .x-reset .x-btn-default-large-icon .x-btn-inner,
+  .x-reset .x-btn-default-large-noicon button,
+  .x-reset .x-btn-default-large-noicon a,
+  .x-reset .x-btn-default-large-noicon .x-btn-inner {
+    height: 32px;
+    line-height: 32px; }
+  /* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon button, .x-reset .x-btn-default-large-icon a {
+    padding: 0; }
+  /* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon .x-btn-inner {
+    /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+    width: 32px;
+    padding: 0; }
+  /* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon .x-btn-icon {
+    width: 32px;
+    height: 32px;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+  /* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-left button, .x-reset .x-btn-default-large-icon-text-left a {
+    height: 32px; }
+  /* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-left .x-btn-inner {
+    height: 32px;
+    line-height: 32px;
+    padding-left: 36px; }
+  /* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-left .x-btn-icon {
+    width: 32px;
+    height: auto;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: auto; }
+    /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-large-icon-text-left .x-btn-icon, .x-quirks .x-reset .x-btn-default-large-icon-text-left .x-btn-icon {
+      height: 32px; }
+  /* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-right button, .x-reset .x-btn-default-large-icon-text-right a {
+    height: 32px; }
+  /* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-right .x-btn-inner {
+    height: 32px;
+    line-height: 32px;
+    padding-right: 36px !important; }
+  /* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-right .x-btn-icon {
+    width: 32px;
+    height: auto;
+    top: 0;
+    left: auto;
+    bottom: 0;
+    right: 0; }
+    /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-large-icon-text-right .x-btn-icon, .x-quirks .x-reset .x-btn-default-large-icon-text-right .x-btn-icon {
+      height: 32px; }
+  /* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-top .x-btn-inner {
+    padding-top: 36px; }
+  /* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-top .x-btn-icon {
+    width: auto;
+    height: 32px;
+    top: 0;
+    left: 0;
+    bottom: auto;
+    right: 0; }
+    /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-large-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-large-icon-text-top .x-btn-icon {
+      width: 32px; }
+  /* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-bottom .x-btn-inner {
+    padding-bottom: 36px; }
+  /* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-bottom .x-btn-icon {
+    width: auto;
+    height: 32px;
+    top: auto;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+    /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-large-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-large-icon-text-bottom .x-btn-icon {
+      width: 32px; }
+  /* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-over {
+    border-color: #b0ccf2;
+    background-image: none;
+    background-color: #e4f3ff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+    background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+  /* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-focus {
+    border-color: #b0ccf2;
+    background-image: none;
+    background-color: #e4f3ff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+    background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+  /* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-menu-active,
+  .x-reset .x-btn-default-large-pressed {
+    border-color: #9ebae1;
+    background-image: none;
+    background-color: #b6cbe4;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+    background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -ms-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); }
+  /* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-disabled {
+    border-color: #e1e1e1;
+    background-image: none;
+    background-color: #f7f7f7;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+    background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -ms-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); }
+    /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn-default-large-disabled .x-btn-inner {
+      color: #333333 !important; }
+  /* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie .x-btn-default-large-disabled .x-btn-inner {
+    color: #595959 !important; }
+  /* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie6 .x-btn-default-large-disabled .x-btn-inner {
+    color: #8c8c8c !important; }
+  /* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-large-over .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-large-over .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-large-over .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-large-over .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-large-over .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-large-over .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-over-corners.gif'); }
+  /* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-large-over .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-large-over .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-over-sides.gif'); }
+  /* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-large-over .x-frame-mc {
+    background-color: #e4f3ff;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-over-bg.gif'); }
+  /* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-large-focus .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-large-focus .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-large-focus .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-large-focus .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-large-focus .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-large-focus .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-focus-corners.gif'); }
+  /* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-large-focus .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-large-focus .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-focus-sides.gif'); }
+  /* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-large-focus .x-frame-mc {
+    background-color: #e4f3ff;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-focus-bg.gif'); }
+  /* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-bc,
+  .x-reset .x-nbr .x-btn-default-large-pressed .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-large-pressed .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-large-pressed .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-large-pressed .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-large-pressed .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-large-pressed .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-pressed-corners.gif'); }
+  /* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-mr,
+  .x-reset .x-nbr .x-btn-default-large-pressed .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-large-pressed .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-pressed-sides.gif'); }
+  /* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-mc,
+  .x-reset .x-nbr .x-btn-default-large-pressed .x-frame-mc {
+    background-color: #b6cbe4;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-pressed-bg.gif'); }
+  /* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-large-disabled .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-large-disabled .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-large-disabled .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-large-disabled .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-large-disabled .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-large-disabled .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-disabled-corners.gif'); }
+  /* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-large-disabled .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-large-disabled .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-disabled-sides.gif'); }
+  /* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-large-disabled .x-frame-mc {
+    background-color: #f7f7f7;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-disabled-bg.gif'); }
+  /* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-large {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-bg.gif'); }
+  /* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-large-over {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-over-bg.gif'); }
+  /* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-large-focus {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-focus-bg.gif'); }
+  /* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-large-menu-active,
+  .x-reset .x-nlg .x-btn-default-large-pressed {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-pressed-bg.gif'); }
+  /* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-large-disabled {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-disabled-bg.gif'); }
+  /* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small {
+    border-color: transparent; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-btn-default-toolbar-small {
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    -o-border-radius: 3px;
+    -ms-border-radius: 3px;
+    -khtml-border-radius: 3px;
+    border-radius: 3px;
+    padding: 2px 2px 2px 2px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: transparent; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-small-mc {
+    background-color: transparent; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1100303px 1000303px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-bc,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-mr {
+    zoom: 1; }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-mr {
+    zoom: 1; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-mc {
+    padding: 0px 0px 0px 0px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-btn-default-toolbar-small-tl,
+  .x-reset .x-strict .x-ie7 .x-btn-default-toolbar-small-bl {
+    position: relative;
+    right: 0; }
+  /* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small .x-btn-inner {
+    font-size: 11px;
+    font-weight: normal;
+    font-family: tahoma, arial, verdana, sans-serif;
+    color: #333333;
+    background-repeat: no-repeat;
+    padding: 0 4px; }
+  /* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon button,
+  .x-reset .x-btn-default-toolbar-small-icon a,
+  .x-reset .x-btn-default-toolbar-small-icon .x-btn-inner,
+  .x-reset .x-btn-default-toolbar-small-noicon button,
+  .x-reset .x-btn-default-toolbar-small-noicon a,
+  .x-reset .x-btn-default-toolbar-small-noicon .x-btn-inner {
+    height: 16px;
+    line-height: 16px; }
+  /* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon button, .x-reset .x-btn-default-toolbar-small-icon a {
+    padding: 0; }
+  /* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon .x-btn-inner {
+    /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+    width: 16px;
+    padding: 0; }
+  /* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon .x-btn-icon {
+    width: 16px;
+    height: 16px;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+  /* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-left button, .x-reset .x-btn-default-toolbar-small-icon-text-left a {
+    height: 16px; }
+  /* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-left .x-btn-inner {
+    height: 16px;
+    line-height: 16px;
+    padding-left: 20px; }
+  /* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-left .x-btn-icon {
+    width: 16px;
+    height: auto;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: auto; }
+    /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-small-icon-text-left .x-btn-icon, .x-quirks .x-reset .x-btn-default-toolbar-small-icon-text-left .x-btn-icon {
+      height: 16px; }
+  /* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-right button, .x-reset .x-btn-default-toolbar-small-icon-text-right a {
+    height: 16px; }
+  /* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-right .x-btn-inner {
+    height: 16px;
+    line-height: 16px;
+    padding-right: 20px !important; }
+  /* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-right .x-btn-icon {
+    width: 16px;
+    height: auto;
+    top: 0;
+    left: auto;
+    bottom: 0;
+    right: 0; }
+    /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-small-icon-text-right .x-btn-icon, .x-quirks .x-reset .x-btn-default-toolbar-small-icon-text-right .x-btn-icon {
+      height: 16px; }
+  /* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-top .x-btn-inner {
+    padding-top: 20px; }
+  /* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-top .x-btn-icon {
+    width: auto;
+    height: 16px;
+    top: 0;
+    left: 0;
+    bottom: auto;
+    right: 0; }
+    /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-small-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-toolbar-small-icon-text-top .x-btn-icon {
+      width: 16px; }
+  /* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner {
+    padding-bottom: 20px; }
+  /* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon {
+    width: auto;
+    height: 16px;
+    top: auto;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+    /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon {
+      width: 16px; }
+  /* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-over {
+    border-color: #81a4d0;
+    background-image: none;
+    background-color: #dbeeff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+    background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+  /* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-focus {
+    border-color: #81a4d0;
+    background-image: none;
+    background-color: #dbeeff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+    background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+  /* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-menu-active,
+  .x-reset .x-btn-default-toolbar-small-pressed {
+    border-color: #7a9ac4;
+    background-image: none;
+    background-color: #bccfe5;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+    background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -ms-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); }
+  /* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-disabled {
+    background-image: none;
+    background-color: transparent; }
+    /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn-default-toolbar-small-disabled .x-btn-inner {
+      color: #333333 !important; }
+  /* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie .x-btn-default-toolbar-small-disabled .x-btn-inner {
+    color: #595959 !important; }
+  /* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie6 .x-btn-default-toolbar-small-disabled .x-btn-inner {
+    color: #8c8c8c !important; }
+  /* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-corners.gif'); }
+  /* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-sides.gif'); }
+  /* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-mc {
+    background-color: #dbeeff;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif'); }
+  /* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-corners.gif'); }
+  /* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-sides.gif'); }
+  /* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-mc {
+    background-color: #dbeeff;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif'); }
+  /* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bc,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-corners.gif'); }
+  /* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mr,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-sides.gif'); }
+  /* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mc,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mc {
+    background-color: #bccfe5;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif'); }
+  /* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-disabled-corners.gif'); }
+  /* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-disabled-sides.gif'); }
+  /* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mc {
+    background-color: transparent; }
+  /* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-small-over {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif'); }
+  /* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-small-focus {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif'); }
+  /* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-small-menu-active,
+  .x-reset .x-nlg .x-btn-default-toolbar-small-pressed {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif'); }
+  /* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium {
+    border-color: transparent; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-btn-default-toolbar-medium {
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    -o-border-radius: 3px;
+    -ms-border-radius: 3px;
+    -khtml-border-radius: 3px;
+    border-radius: 3px;
+    padding: 3px 3px 3px 3px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: transparent; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-medium-mc {
+    background-color: transparent; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1100303px 1000303px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-bc,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-mr {
+    zoom: 1; }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-mr {
+    zoom: 1; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-mc {
+    padding: 1px 1px 1px 1px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,
+  .x-reset .x-strict .x-ie7 .x-btn-default-toolbar-medium-bl {
+    position: relative;
+    right: 0; }
+  /* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium .x-btn-inner {
+    font-size: 11px;
+    font-weight: normal;
+    font-family: tahoma, arial, verdana, sans-serif;
+    color: #333333;
+    background-repeat: no-repeat;
+    padding: 0 3px; }
+  /* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon button,
+  .x-reset .x-btn-default-toolbar-medium-icon a,
+  .x-reset .x-btn-default-toolbar-medium-icon .x-btn-inner,
+  .x-reset .x-btn-default-toolbar-medium-noicon button,
+  .x-reset .x-btn-default-toolbar-medium-noicon a,
+  .x-reset .x-btn-default-toolbar-medium-noicon .x-btn-inner {
+    height: 24px;
+    line-height: 24px; }
+  /* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon button, .x-reset .x-btn-default-toolbar-medium-icon a {
+    padding: 0; }
+  /* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon .x-btn-inner {
+    /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+    width: 24px;
+    padding: 0; }
+  /* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon .x-btn-icon {
+    width: 24px;
+    height: 24px;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+  /* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-left button, .x-reset .x-btn-default-toolbar-medium-icon-text-left a {
+    height: 24px; }
+  /* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-left .x-btn-inner {
+    height: 24px;
+    line-height: 24px;
+    padding-left: 28px; }
+  /* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon {
+    width: 24px;
+    height: auto;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: auto; }
+    /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon, .x-quirks .x-reset .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon {
+      height: 24px; }
+  /* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-right button, .x-reset .x-btn-default-toolbar-medium-icon-text-right a {
+    height: 24px; }
+  /* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-right .x-btn-inner {
+    height: 24px;
+    line-height: 24px;
+    padding-right: 28px !important; }
+  /* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon {
+    width: 24px;
+    height: auto;
+    top: 0;
+    left: auto;
+    bottom: 0;
+    right: 0; }
+    /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon, .x-quirks .x-reset .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon {
+      height: 24px; }
+  /* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-top .x-btn-inner {
+    padding-top: 28px; }
+  /* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon {
+    width: auto;
+    height: 24px;
+    top: 0;
+    left: 0;
+    bottom: auto;
+    right: 0; }
+    /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon {
+      width: 24px; }
+  /* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner {
+    padding-bottom: 28px; }
+  /* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon {
+    width: auto;
+    height: 24px;
+    top: auto;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+    /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon {
+      width: 24px; }
+  /* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-over {
+    border-color: #81a4d0;
+    background-image: none;
+    background-color: #dbeeff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+    background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+  /* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-focus {
+    border-color: #81a4d0;
+    background-image: none;
+    background-color: #dbeeff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+    background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+  /* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-menu-active,
+  .x-reset .x-btn-default-toolbar-medium-pressed {
+    border-color: #7a9ac4;
+    background-image: none;
+    background-color: #bccfe5;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+    background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -ms-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); }
+  /* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-disabled {
+    background-image: none;
+    background-color: transparent; }
+    /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+      color: #333333 !important; }
+  /* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+    color: #595959 !important; }
+  /* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie6 .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+    color: #8c8c8c !important; }
+  /* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-corners.gif'); }
+  /* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-sides.gif'); }
+  /* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-mc {
+    background-color: #dbeeff;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif'); }
+  /* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-corners.gif'); }
+  /* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-sides.gif'); }
+  /* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mc {
+    background-color: #dbeeff;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif'); }
+  /* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bc,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-corners.gif'); }
+  /* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mr,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-sides.gif'); }
+  /* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mc,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mc {
+    background-color: #bccfe5;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif'); }
+  /* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-corners.gif'); }
+  /* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-sides.gif'); }
+  /* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mc {
+    background-color: transparent; }
+  /* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-medium-over {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif'); }
+  /* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-medium-focus {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif'); }
+  /* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-medium-menu-active,
+  .x-reset .x-nlg .x-btn-default-toolbar-medium-pressed {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif'); }
+  /* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large {
+    border-color: transparent; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-btn-default-toolbar-large {
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    -o-border-radius: 3px;
+    -ms-border-radius: 3px;
+    -khtml-border-radius: 3px;
+    border-radius: 3px;
+    padding: 3px 3px 3px 3px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: transparent; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-large-mc {
+    background-color: transparent; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1100303px 1000303px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-bc,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-mr {
+    zoom: 1; }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-mr {
+    zoom: 1; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-mc {
+    padding: 1px 1px 1px 1px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-btn-default-toolbar-large-tl,
+  .x-reset .x-strict .x-ie7 .x-btn-default-toolbar-large-bl {
+    position: relative;
+    right: 0; }
+  /* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large .x-btn-inner {
+    font-size: 11px;
+    font-weight: normal;
+    font-family: tahoma, arial, verdana, sans-serif;
+    color: #333333;
+    background-repeat: no-repeat;
+    padding: 0 3px; }
+  /* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon button,
+  .x-reset .x-btn-default-toolbar-large-icon a,
+  .x-reset .x-btn-default-toolbar-large-icon .x-btn-inner,
+  .x-reset .x-btn-default-toolbar-large-noicon button,
+  .x-reset .x-btn-default-toolbar-large-noicon a,
+  .x-reset .x-btn-default-toolbar-large-noicon .x-btn-inner {
+    height: 32px;
+    line-height: 32px; }
+  /* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon button, .x-reset .x-btn-default-toolbar-large-icon a {
+    padding: 0; }
+  /* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon .x-btn-inner {
+    /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+    width: 32px;
+    padding: 0; }
+  /* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon .x-btn-icon {
+    width: 32px;
+    height: 32px;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+  /* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-left button, .x-reset .x-btn-default-toolbar-large-icon-text-left a {
+    height: 32px; }
+  /* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-left .x-btn-inner {
+    height: 32px;
+    line-height: 32px;
+    padding-left: 36px; }
+  /* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-left .x-btn-icon {
+    width: 32px;
+    height: auto;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: auto; }
+    /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-large-icon-text-left .x-btn-icon, .x-quirks .x-reset .x-btn-default-toolbar-large-icon-text-left .x-btn-icon {
+      height: 32px; }
+  /* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-right button, .x-reset .x-btn-default-toolbar-large-icon-text-right a {
+    height: 32px; }
+  /* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-right .x-btn-inner {
+    height: 32px;
+    line-height: 32px;
+    padding-right: 36px !important; }
+  /* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-right .x-btn-icon {
+    width: 32px;
+    height: auto;
+    top: 0;
+    left: auto;
+    bottom: 0;
+    right: 0; }
+    /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-large-icon-text-right .x-btn-icon, .x-quirks .x-reset .x-btn-default-toolbar-large-icon-text-right .x-btn-icon {
+      height: 32px; }
+  /* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-top .x-btn-inner {
+    padding-top: 36px; }
+  /* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-top .x-btn-icon {
+    width: auto;
+    height: 32px;
+    top: 0;
+    left: 0;
+    bottom: auto;
+    right: 0; }
+    /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-large-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-toolbar-large-icon-text-top .x-btn-icon {
+      width: 32px; }
+  /* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner {
+    padding-bottom: 36px; }
+  /* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon {
+    width: auto;
+    height: 32px;
+    top: auto;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+    /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon {
+      width: 32px; }
+  /* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-over {
+    border-color: #81a4d0;
+    background-image: none;
+    background-color: #dbeeff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+    background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+  /* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-focus {
+    border-color: #81a4d0;
+    background-image: none;
+    background-color: #dbeeff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+    background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+  /* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-menu-active,
+  .x-reset .x-btn-default-toolbar-large-pressed {
+    border-color: #7a9ac4;
+    background-image: none;
+    background-color: #bccfe5;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+    background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -ms-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); }
+  /* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-disabled {
+    background-image: none;
+    background-color: transparent; }
+    /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn-default-toolbar-large-disabled .x-btn-inner {
+      color: #333333 !important; }
+  /* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie .x-btn-default-toolbar-large-disabled .x-btn-inner {
+    color: #595959 !important; }
+  /* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie6 .x-btn-default-toolbar-large-disabled .x-btn-inner {
+    color: #8c8c8c !important; }
+  /* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-corners.gif'); }
+  /* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-sides.gif'); }
+  /* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-mc {
+    background-color: #dbeeff;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif'); }
+  /* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-corners.gif'); }
+  /* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-sides.gif'); }
+  /* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-mc {
+    background-color: #dbeeff;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif'); }
+  /* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bc,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-corners.gif'); }
+  /* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mr,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-sides.gif'); }
+  /* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mc,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mc {
+    background-color: #bccfe5;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif'); }
+  /* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-disabled-corners.gif'); }
+  /* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-disabled-sides.gif'); }
+  /* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mc {
+    background-color: transparent; }
+  /* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-large-over {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif'); }
+  /* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-large-focus {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif'); }
+  /* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-large-menu-active,
+  .x-reset .x-nlg .x-btn-default-toolbar-large-pressed {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif'); }
+  /* line 571, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-disabled,
+  .x-reset .x-btn-default-toolbar-medium-disabled,
+  .x-reset .x-btn-default-toolbar-large-disabled {
+    border-color: transparent;
+    background-image: none;
+    background: transparent; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-reset .x-btn-group {
+    position: relative;
+    overflow: hidden; }
+  /* line 11, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-reset .x-btn-group-body {
+    position: relative;
+    zoom: 1;
+    padding: 0 1px; }
+    /* line 15, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+    .x-reset .x-btn-group-body .x-table-layout-cell {
+      vertical-align: top; }
+  /* line 20, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-reset .x-btn-group-header-text {
+    white-space: nowrap; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-btn-group-default-framed {
+    -moz-border-radius: 2px;
+    -webkit-border-radius: 2px;
+    -o-border-radius: 2px;
+    -ms-border-radius: 2px;
+    -khtml-border-radius: 2px;
+    border-radius: 2px;
+    padding: 1px 1px 1px 1px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #d0def0; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-btn-group-default-framed-mc {
+    background-color: #d0def0; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-group-default-framed {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000202px 1000202px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-group-default-framed-tl,
+  .x-reset .x-nbr .x-btn-group-default-framed-bl,
+  .x-reset .x-nbr .x-btn-group-default-framed-tr,
+  .x-reset .x-nbr .x-btn-group-default-framed-br,
+  .x-reset .x-nbr .x-btn-group-default-framed-tc,
+  .x-reset .x-nbr .x-btn-group-default-framed-bc,
+  .x-reset .x-nbr .x-btn-group-default-framed-ml,
+  .x-reset .x-nbr .x-btn-group-default-framed-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/btn-group/btn-group-default-framed-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-group-default-framed-ml,
+  .x-reset .x-nbr .x-btn-group-default-framed-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/btn-group/btn-group-default-framed-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-group-default-framed-mc {
+    padding: 0px 0px 0px 0px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-btn-group-default-framed-tl,
+  .x-reset .x-strict .x-ie7 .x-btn-group-default-framed-bl {
+    position: relative;
+    right: 0; }
+  /* line 60, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-reset .x-btn-group-default-framed {
+    border-color: #b7c8d7;
+    -moz-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+    -webkit-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+    -o-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+    box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset; }
+  /* line 68, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-reset .x-btn-group-header-default-framed {
+    margin: 2px 2px 0 2px; }
+  /* line 72, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-reset .x-btn-group-header-body-default-framed {
+    padding: 1px 0;
+    background: #c2d8f0;
+    -moz-border-radius-topleft: 2px;
+    -webkit-border-top-left-radius: 2px;
+    -o-border-top-left-radius: 2px;
+    -ms-border-top-left-radius: 2px;
+    -khtml-border-top-left-radius: 2px;
+    border-top-left-radius: 2px;
+    -moz-border-radius-topright: 2px;
+    -webkit-border-top-right-radius: 2px;
+    -o-border-top-right-radius: 2px;
+    -ms-border-top-right-radius: 2px;
+    -khtml-border-top-right-radius: 2px;
+    border-top-right-radius: 2px; }
+  /* line 80, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-reset .x-btn-group-header-text-default-framed {
+    font: normal 11px tahoma, arial, verdana, sans-serif;
+    color: #3e6aaa; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker {
+    border: 1px solid #1b376c;
+    background-color: white;
+    position: relative; }
+    /* line 12, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker a {
+      -moz-outline: 0 none;
+      outline: 0 none;
+      color: #15428b;
+      text-decoration: none;
+      border-width: 0; }
+  /* line 25, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-inner,
+  .x-reset .x-datepicker-inner td,
+  .x-reset .x-datepicker-inner th {
+    border-collapse: separate; }
+  /* line 29, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-header {
+    position: relative;
+    height: 26px;
+    background-image: none;
+    background-color: #23427c;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #264888), color-stop(100%, #1f3a6c));
+    background-image: -webkit-linear-gradient(top, #264888, #1f3a6c);
+    background-image: -moz-linear-gradient(top, #264888, #1f3a6c);
+    background-image: -o-linear-gradient(top, #264888, #1f3a6c);
+    background-image: -ms-linear-gradient(top, #264888, #1f3a6c);
+    background-image: linear-gradient(top, #264888, #1f3a6c); }
+  /* line 42, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-prev,
+  .x-reset .x-datepicker-next {
+    position: absolute;
+    top: 5px;
+    width: 18px; }
+    /* line 48, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker-prev a,
+    .x-reset .x-datepicker-next a {
+      display: block;
+      width: 16px;
+      height: 16px;
+      background-position: top;
+      background-repeat: no-repeat;
+      cursor: pointer;
+      text-decoration: none !important;
+      filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+      opacity: 0.7; }
+      /* line 63, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+      .x-reset .x-datepicker-prev a:hover,
+      .x-reset .x-datepicker-next a:hover {
+        filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+        opacity: 1; }
+  /* line 69, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-next {
+    right: 5px; }
+    /* line 72, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker-next a {
+      background-image: url('../../resources/themes/images/default/shared/right-btn.gif'); }
+  /* line 77, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-prev {
+    left: 5px; }
+    /* line 80, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker-prev a {
+      background-image: url('../../resources/themes/images/default/shared/left-btn.gif'); }
+  /* line 86, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-item-disabled .x-datepicker-prev a:hover,
+  .x-reset .x-item-disabled .x-datepicker-next a:hover {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+    opacity: 0.6; }
+  /* line 90, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-month {
+    padding-top: 3px; }
+    /* line 103, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker-month .x-btn,
+    .x-reset .x-datepicker-month button,
+    .x-reset .x-datepicker-month .x-btn-tc,
+    .x-reset .x-datepicker-month .x-btn-tl,
+    .x-reset .x-datepicker-month .x-btn-tr,
+    .x-reset .x-datepicker-month .x-btn-mc,
+    .x-reset .x-datepicker-month .x-btn-ml,
+    .x-reset .x-datepicker-month .x-btn-mr,
+    .x-reset .x-datepicker-month .x-btn-bc,
+    .x-reset .x-datepicker-month .x-btn-bl,
+    .x-reset .x-datepicker-month .x-btn-br {
+      background: transparent !important;
+      border-width: 0 !important; }
+    /* line 108, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker-month span {
+      color: #fff !important; }
+    /* line 112, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker-month .x-btn-split-right {
+      background-image: url('../../resources/themes/images/default/button/s-arrow-light.gif');
+      padding-right: 12px; }
+  /* line 118, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-next {
+    text-align: right; }
+  /* line 122, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-month {
+    text-align: center; }
+    /* line 126, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker-month button {
+      color: white !important; }
+  /* line 132, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset table.x-datepicker-inner {
+    width: 100%;
+    table-layout: fixed; }
+    /* line 136, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner th {
+      width: 25px;
+      height: 19px;
+      padding: 0;
+      color: #233d6d;
+      font: normal 10px tahoma, arial, verdana, sans-serif;
+      text-align: right;
+      border-bottom: 1px solid #b2d1f5;
+      border-collapse: separate;
+      background-image: none;
+      background-color: #dfecfb;
+      background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #edf4fd), color-stop(100%, #cde1f9));
+      background-image: -webkit-linear-gradient(top, #edf4fd, #cde1f9);
+      background-image: -moz-linear-gradient(top, #edf4fd, #cde1f9);
+      background-image: -o-linear-gradient(top, #edf4fd, #cde1f9);
+      background-image: -ms-linear-gradient(top, #edf4fd, #cde1f9);
+      background-image: linear-gradient(top, #edf4fd, #cde1f9);
+      cursor: default; }
+      /* line 157, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+      .x-reset table.x-datepicker-inner th span {
+        display: block;
+        padding-right: 7px; }
+    /* line 163, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner tr {
+      height: 20px; }
+    /* line 167, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner td {
+      border: 1px solid;
+      height: 17px;
+      border-color: white;
+      text-align: right;
+      padding: 0; }
+    /* line 175, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner a {
+      padding-right: 4px;
+      display: block;
+      zoom: 1;
+      font: normal 11px tahoma, arial, verdana, sans-serif;
+      color: black;
+      text-decoration: none;
+      text-align: right; }
+    /* line 188, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner .x-datepicker-active {
+      cursor: pointer;
+      color: black; }
+    /* line 194, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner .x-datepicker-selected a {
+      background: repeat-x left top;
+      background-color: #dae5f3;
+      border: 1px solid #8db2e3; }
+    /* line 200, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner .x-datepicker-selected span {
+      font-weight: bold; }
+    /* line 206, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner .x-datepicker-today a {
+      border: 1px solid;
+      border-color: darkred; }
+    /* line 214, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner .x-datepicker-prevday a,
+    .x-reset table.x-datepicker-inner .x-datepicker-nextday a {
+      text-decoration: none !important;
+      color: #aaa; }
+    /* line 221, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner a:hover,
+    .x-reset table.x-datepicker-inner .x-datepicker-disabled a:hover {
+      text-decoration: none !important;
+      color: #000;
+      background-color: #ddecfe; }
+    /* line 229, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner .x-datepicker-disabled a {
+      cursor: default;
+      background-color: #eee;
+      color: #bbb; }
+  /* line 237, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-footer,
+  .x-reset .x-monthpicker-buttons {
+    position: relative;
+    border-top: 1px solid #b2d1f5;
+    background-image: none;
+    background-color: #dfecfb;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dee8f5), color-stop(49%, #d1dff0), color-stop(51%, #c7d8ed), color-stop(100%, #cbdaee));
+    background-image: -webkit-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+    background-image: -moz-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+    background-image: -o-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+    background-image: -ms-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+    background-image: linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+    text-align: center; }
+    /* line 250, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker-footer .x-btn,
+    .x-reset .x-monthpicker-buttons .x-btn {
+      position: relative;
+      margin: 4px; }
+  /* line 256, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-item-disabled .x-datepicker-inner a:hover {
+    background: none; }
+  /* line 261, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker .x-monthpicker {
+    position: absolute;
+    left: 0;
+    top: 0; }
+  /* line 268, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker {
+    border: 1px solid #1b376c;
+    background-color: white; }
+  /* line 274, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-months,
+  .x-reset .x-monthpicker-years {
+    float: left;
+    height: 167px;
+    width: 88px; }
+  /* line 281, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-item {
+    float: left;
+    margin: 4px 0 5px 0;
+    font: normal 11px tahoma, arial, verdana, sans-serif;
+    text-align: center;
+    vertical-align: middle;
+    height: 18px;
+    width: 43px;
+    border: 0 none; }
+    /* line 295, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-monthpicker-item a {
+      display: block;
+      margin: 0 5px;
+      text-decoration: none;
+      color: #15428b;
+      border: 1px solid white;
+      line-height: 17px; }
+      /* line 308, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+      .x-reset .x-monthpicker-item a:hover {
+        background-color: #ddecfe; }
+      /* line 312, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+      .x-reset .x-monthpicker-item a.x-monthpicker-selected {
+        background-color: #dfecfb;
+        border: 1px solid #8db2e3; }
+  /* line 319, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-months {
+    border-right: 1px solid #1b376c;
+    width: 87px; }
+  /* line 324, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-years .x-monthpicker-item {
+    width: 44px; }
+  /* line 328, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-yearnav {
+    height: 28px; }
+    /* line 331, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-monthpicker-yearnav button {
+      background-image: url('../../resources/themes/images/default/tools/tool-sprites.gif');
+      height: 15px;
+      width: 15px;
+      padding: 0;
+      margin: 6px 12px 5px 15px;
+      border: 0;
+      outline: 0 none; }
+      /* line 339, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+      .x-reset .x-monthpicker-yearnav button::-moz-focus-inner {
+        border: 0;
+        padding: 0; }
+  /* line 346, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-yearnav-next {
+    background-position: 0 -120px; }
+  /* line 350, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-yearnav-next-over {
+    cursor: pointer;
+    cursor: hand;
+    background-position: -15px -120px; }
+  /* line 356, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-yearnav-prev {
+    background-position: 0 -105px; }
+  /* line 360, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-yearnav-prev-over {
+    cursor: pointer;
+    cursor: hand;
+    background-position: -15px -105px; }
+  /* line 367, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-small .x-monthpicker-item {
+    margin: 2px 0 2px 0; }
+  /* line 371, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-small .x-monthpicker-yearnav {
+    height: 23px; }
+  /* line 375, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-small .x-monthpicker-months, .x-reset .x-monthpicker-small .x-monthpicker-years {
+    height: 136px; }
+  /* line 385, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-quirks .x-ie7 .x-monthpicker-buttons .x-btn,
+  .x-reset .x-quirks .x-ie8 .x-monthpicker-buttons .x-btn {
+    margin-top: 2px; }
+  /* line 391, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-quirks .x-monthpicker-small .x-monthpicker-yearnav button {
+    margin-top: 3px;
+    margin-bottom: 3px; }
+  /* line 397, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-ie6 .x-monthpicker-small .x-monthpicker-yearnav button {
+    margin-top: 3px;
+    margin-bottom: 3px; }
+  /* line 407, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-nlg .x-datepicker-header {
+    background-image: url('../../resources/themes/images/default/datepicker/datepicker-header-bg.gif');
+    background-repeat: repeat-x;
+    background-position: top left; }
+  /* line 416, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-nlg .x-datepicker-footer,
+  .x-reset .x-nlg .x-monthpicker-buttons {
+    background-image: url('../../resources/themes/images/default/datepicker/datepicker-footer-bg.gif');
+    background-repeat: repeat-x;
+    background-position: top left; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+  .x-reset .x-color-picker {
+    width: 144px;
+    height: 90px;
+    cursor: pointer; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+  .x-reset .x-color-picker a {
+    border: 1px solid #fff;
+    float: left;
+    padding: 2px;
+    text-decoration: none;
+    -moz-outline: 0 none;
+    outline: 0 none;
+    cursor: pointer; }
+  /* line 28, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+  .x-reset .x-color-picker a:hover,
+  .x-reset .x-color-picker a.x-color-picker-selected {
+    border-color: #8bb8f3;
+    background-color: #deecfd; }
+  /* line 33, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+  .x-reset .x-color-picker em {
+    display: block;
+    border: 1px solid #aca899; }
+  /* line 39, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+  .x-reset .x-color-picker em span {
+    cursor: pointer;
+    display: block;
+    height: 10px;
+    width: 10px;
+    line-height: 10px; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-body {
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default;
+    background: #f0f0f0 !important;
+    padding: 2px; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item .x-form-text {
+    user-select: text;
+    -webkit-user-select: text;
+    -o-user-select: text;
+    -ie-user-select: text;
+    -moz-user-select: text;
+    -ie-user-select: text; }
+  /* line 21, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-icon-separator {
+    position: absolute;
+    top: 0px;
+    left: 27px;
+    z-index: 0;
+    border-left: solid 1px #e0e0e0;
+    background-color: white;
+    width: 2px;
+    overflow: hidden; }
+  /* line 33, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-plain .x-menu-icon-separator {
+    display: none; }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-focus {
+    display: block;
+    position: absolute;
+    top: -10px;
+    left: -10px;
+    width: 0px;
+    height: 0px; }
+  /* line 47, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item {
+    white-space: nowrap;
+    overflow: hidden;
+    z-index: 1; }
+  /* line 53, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-cmp {
+    margin-bottom: 1px; }
+  /* line 57, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-link {
+    display: block;
+    margin: 1px;
+    padding: 6px 2px 3px 32px;
+    text-decoration: none !important;
+    line-height: 16px;
+    cursor: default; }
+  /* line 70, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-opera .x-menu-item-link {
+    position: relative; }
+  /* line 76, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-icon {
+    width: 16px;
+    height: 16px;
+    position: absolute;
+    top: 5px;
+    left: 4px;
+    background: no-repeat center center; }
+  /* line 87, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-icon-right {
+    width: 16px;
+    height: 16px;
+    position: absolute;
+    top: 6px;
+    right: 4px;
+    background: no-repeat center center; }
+  /* line 96, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-text {
+    font-size: 11px;
+    color: #222222; }
+  /* line 102, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-checked .x-menu-item-icon {
+    background-image: url('../../resources/themes/images/default/menu/checked.gif'); }
+  /* line 105, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-checked .x-menu-group-icon {
+    background-image: url('../../resources/themes/images/default/menu/group-checked.gif'); }
+  /* line 111, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-unchecked .x-menu-item-icon {
+    background-image: url('../../resources/themes/images/default/menu/unchecked.gif'); }
+  /* line 114, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-unchecked .x-menu-group-icon {
+    background-image: none; }
+  /* line 119, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-separator {
+    height: 2px;
+    border-top: solid 1px #e0e0e0;
+    background-color: white;
+    margin: 2px 0px;
+    overflow: hidden; }
+  /* line 127, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-arrow {
+    position: absolute;
+    width: 12px;
+    height: 9px;
+    top: 9px;
+    right: 0px;
+    background: no-repeat center center;
+    background-image: url('../../resources/themes/images/default/menu/menu-parent.gif'); }
+  /* line 137, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-indent {
+    margin-left: 31px;
+    /* The 2px is the width of the seperator */ }
+  /* line 141, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-active {
+    cursor: pointer; }
+    /* line 144, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+    .x-reset .x-menu-item-active .x-menu-item-link {
+      background-image: none;
+      background-color: #d9e8fb;
+      background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7f0fc), color-stop(100%, #c7ddf9));
+      background-image: -webkit-linear-gradient(top, #e7f0fc, #c7ddf9);
+      background-image: -moz-linear-gradient(top, #e7f0fc, #c7ddf9);
+      background-image: -o-linear-gradient(top, #e7f0fc, #c7ddf9);
+      background-image: -ms-linear-gradient(top, #e7f0fc, #c7ddf9);
+      background-image: linear-gradient(top, #e7f0fc, #c7ddf9);
+      margin: 0px;
+      border: 1px solid #a9cbf5;
+      cursor: pointer;
+      -moz-border-radius: 3px;
+      -webkit-border-radius: 3px;
+      -o-border-radius: 3px;
+      -ms-border-radius: 3px;
+      -khtml-border-radius: 3px;
+      border-radius: 3px; }
+  /* line 153, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-disabled {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5; }
+  /* line 160, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-ie .x-menu-item-disabled .x-menu-item-icon {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5; }
+  /* line 164, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-ie .x-menu-item-disabled .x-menu-item-text {
+    background-color: transparent; }
+  /* line 171, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-strict .x-ie7m .x-reset .x-ie .x-menu-icon-separator {
+    width: 1px; }
+  /* line 175, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-strict .x-ie7m .x-reset .x-ie .x-menu-item-separator {
+    height: 1px; }
+  /* line 184, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-ie6 .x-menu-item-link,
+  .x-reset .x-ie7 .x-menu-item-link,
+  .x-reset .x-quirks .x-ie8 .x-menu-item-link {
+    padding-bottom: 2px; }
+  /* line 192, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-nlg .x-menu-item-active .x-menu-item-link {
+    background: #d9e8fb repeat-x left top;
+    background-image: url('../../resources/themes/images/default/menu/menu-item-active-bg.gif'); }
+  /* line 199, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-date-item {
+    border-color: #99BBE8; }
+  /* line 8, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-panel .x-grid-body {
+    background: white;
+    border-color: #99bce8;
+    border-style: solid;
+    border-width: 1px;
+    border-top-color: #c5c5c5; }
+  /* line 17, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-panel .x-grid-header-ct-hidden {
+    visibility: hidden; }
+  /* line 22, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-empty {
+    padding: 10px;
+    color: gray;
+    font: normal 11px tahoma, arial, helvetica, sans-serif; }
+  /* line 28, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-header-hidden .x-grid-body {
+    border-top-color: #99bce8 !important; }
+  /* line 32, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-view {
+    overflow: hidden;
+    position: relative; }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-table {
+    table-layout: fixed;
+    border-collapse: separate; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-autowidth-table table.x-grid-table {
+    table-layout: auto;
+    width: auto!important; }
+  /* line 50, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row .x-grid-table {
+    border-collapse: collapse; }
+  /* line 54, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-locked .x-grid-inner-locked {
+    border-width: 0 1px 0 0 !important;
+    border-style: solid; }
+  /* line 59, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-header-ct {
+    cursor: default;
+    zoom: 1;
+    padding: 0;
+    border: 1px solid #99bce8;
+    border-bottom-color: #c5c5c5;
+    background-image: none;
+    background-color: #c5c5c5;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f9f9f9), color-stop(100%, #e3e4e6));
+    background-image: -webkit-linear-gradient(top, #f9f9f9, #e3e4e6);
+    background-image: -moz-linear-gradient(top, #f9f9f9, #e3e4e6);
+    background-image: -o-linear-gradient(top, #f9f9f9, #e3e4e6);
+    background-image: -ms-linear-gradient(top, #f9f9f9, #e3e4e6);
+    background-image: linear-gradient(top, #f9f9f9, #e3e4e6); }
+  /* line 73, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-accordion-item .x-grid-header-ct {
+    border-width: 0 0 1px 0!important; }
+  /* line 77, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header {
+    padding: 0;
+    position: absolute;
+    overflow: hidden;
+    border-right: 1px solid #c5c5c5;
+    border-left: 0 none;
+    border-top: 0 none;
+    border-bottom: 0 none;
+    text-shadow: 0 1px 0 rgba(255, 255, 255, 0.3);
+    color: null;
+    font: normal 11px tahoma, arial, verdana, sans-serif;
+    background-image: none;
+    background-color: #c5c5c5;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f9f9f9), color-stop(100%, #e3e4e6));
+    background-image: -webkit-linear-gradient(top, #f9f9f9, #e3e4e6);
+    background-image: -moz-linear-gradient(top, #f9f9f9, #e3e4e6);
+    background-image: -o-linear-gradient(top, #f9f9f9, #e3e4e6);
+    background-image: -ms-linear-gradient(top, #f9f9f9, #e3e4e6);
+    background-image: linear-gradient(top, #f9f9f9, #e3e4e6); }
+  /* line 99, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-group-header {
+    padding: 0;
+    border-left-width: 0; }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-group-sub-header {
+    background: transparent;
+    border-top: 1px solid #c5c5c5;
+    border-left-width: 0; }
+  /* line 109, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-inner {
+    zoom: 1;
+    position: relative;
+    white-space: nowrap;
+    line-height: 15px;
+    padding: 3px 6px 4px; }
+    /* line 116, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-column-header-inner .x-column-header-text {
+      white-space: nowrap; }
+  /* line 123, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-over,
+  .x-reset .x-column-header-sort-ASC,
+  .x-reset .x-column-header-sort-DESC {
+    border-left-color: #aaccf6;
+    border-right-color: #aaccf6;
+    background-image: none;
+    background-color: #aaccf6;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ebf3fd), color-stop(39%, #ebf3fd), color-stop(40%, #d9e8fb), color-stop(100%, #d9e8fb));
+    background-image: -webkit-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+    background-image: -moz-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+    background-image: -o-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+    background-image: -ms-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+    background-image: linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb); }
+  /* line 135, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-nlg .x-grid-header-ct,
+  .x-reset .x-nlg .x-column-header {
+    background: repeat-x 0 top;
+    background-image: url('../../resources/themes/images/default/grid/column-header-bg.gif'); }
+  /* line 142, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-nlg .x-column-header-over,
+  .x-reset .x-nlg .x-column-header-sort-ASC,
+  .x-reset .x-nlg .x-column-header-sort-DESC {
+    background: #ebf3fd repeat-x 0 top;
+    background-image: url('../../resources/themes/images/default/grid/column-header-over-bg.gif'); }
+  /* line 149, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-trigger {
+    display: none;
+    height: 100%;
+    width: 14px;
+    background: no-repeat left center;
+    background-color: #c3daf9;
+    background-image: url('../../resources/themes/images/default/grid/grid3-hd-btn.gif');
+    position: absolute;
+    right: 0;
+    top: 0;
+    z-index: 2;
+    cursor: pointer; }
+  /* line 164, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-over .x-column-header-trigger, .x-reset .x-column-header-open .x-column-header-trigger {
+    display: block; }
+  /* line 169, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-align-right {
+    text-align: right; }
+    /* line 172, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-column-header-align-right .x-column-header-text {
+      padding-right: 0.5ex;
+      margin-right: 6px; }
+  /* line 177, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-align-center {
+    text-align: center; }
+  /* line 180, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-align-left {
+    text-align: left; }
+  /* line 185, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-sort-ASC .x-column-header-text {
+    padding-right: 16px;
+    background: no-repeat right 6px;
+    background-image: url('../../resources/themes/images/default/grid/sort_asc.gif'); }
+  /* line 190, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-sort-DESC .x-column-header-text {
+    padding-right: 16px;
+    background: no-repeat right 6px;
+    background-image: url('../../resources/themes/images/default/grid/sort_desc.gif'); }
+  /* line 197, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row {
+    vertical-align: top; }
+    /* line 199, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-row .x-grid-cell {
+      color: null;
+      font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+      background-color: white;
+      border-color: #ededed;
+      border-style: solid;
+      border-top-color: #fafafa;
+      border-width: 0; }
+  /* line 212, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-with-row-lines .x-grid-cell {
+    border-width: 1px 0; }
+  /* line 216, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-rowwrap-div {
+    border-width: 1px 0;
+    border-color: #ededed;
+    border-style: solid;
+    border-top-color: #fafafa;
+    overflow: hidden; }
+  /* line 226, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-alt .x-grid-cell,
+  .x-reset .x-grid-row-alt .x-grid-rowwrap-div {
+    background-color: #fafafa; }
+  /* line 231, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-over .x-grid-cell,
+  .x-reset .x-grid-row-over .x-grid-rowwrap-div {
+    border-color: #dddddd;
+    background-color: #efefef; }
+  /* line 238, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-focused .x-grid-cell,
+  .x-reset .x-grid-row-focused .x-grid-rowwrap-div {
+    border-color: #dddddd;
+    background-color: #efefef; }
+  /* line 245, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-selected .x-grid-cell,
+  .x-reset .x-grid-row-selected .x-grid-rowwrap-div {
+    border-style: dotted;
+    border-color: #a3bae9;
+    background-color: #dfe8f6 !important; }
+  /* line 254, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-rowwrap-div .x-grid-cell,
+  .x-reset .x-grid-rowwrap-div .x-grid-cell-inner {
+    border-width: 0;
+    background: transparent; }
+  /* line 261, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-body-hidden {
+    display: none; }
+  /* line 265, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-rowbody {
+    font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+    padding: 4px; }
+    /* line 270, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-rowbody p {
+      margin: 5px 5px 10px 5px; }
+  /* line 276, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-cell {
+    overflow: hidden; }
+  /* line 280, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-cell-inner {
+    overflow: hidden;
+    -o-text-overflow: ellipsis;
+    text-overflow: ellipsis;
+    padding: 2px 6px 3px;
+    white-space: nowrap; }
+  /* line 291, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-with-row-lines .x-grid-cell-inner {
+    line-height: 13px;
+    padding-bottom: 4px; }
+  /* line 297, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-action-col-cell .x-grid-cell-inner {
+    line-height: 0;
+    padding: 2px; }
+  /* line 302, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-action-col-cell .x-item-disabled {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+    opacity: 0.3; }
+  /* line 306, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-with-row-lines .x-action-col-cell .x-grid-cell-inner {
+    padding-top: 1px; }
+  /* line 310, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row .x-grid-cell-special {
+    padding: 0;
+    border-right: 1px solid #d0d0d0;
+    background-image: none;
+    background-color: #f6f6f6;
+    background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #f6f6f6), color-stop(100%, #e9e9e9));
+    background-image: -webkit-linear-gradient(left, #f6f6f6, #e9e9e9);
+    background-image: -moz-linear-gradient(left, #f6f6f6, #e9e9e9);
+    background-image: -o-linear-gradient(left, #f6f6f6, #e9e9e9);
+    background-image: -ms-linear-gradient(left, #f6f6f6, #e9e9e9);
+    background-image: linear-gradient(left, #f6f6f6, #e9e9e9); }
+  /* line 316, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row .x-grid-cell-row-checker {
+    vertical-align: middle; }
+  /* line 330, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-ie6 .x-grid-header-row,
+  .x-reset .x-ie7 .x-grid-header-row,
+  .x-reset .x-quirks .x-ie8 .x-grid-header-row {
+    position: absolute; }
+  /* line 335, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-selected .x-grid-cell-special {
+    border-right: 1px solid #aaccf6;
+    background-image: none;
+    background-color: #dfe8f6;
+    background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dfe8f6), color-stop(100%, #cbdaf0));
+    background-image: -webkit-linear-gradient(left, #dfe8f6, #cbdaf0);
+    background-image: -moz-linear-gradient(left, #dfe8f6, #cbdaf0);
+    background-image: -o-linear-gradient(left, #dfe8f6, #cbdaf0);
+    background-image: -ms-linear-gradient(left, #dfe8f6, #cbdaf0);
+    background-image: linear-gradient(left, #dfe8f6, #cbdaf0); }
+  /* line 341, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-dirty-cell {
+    background-image: url('../../resources/themes/images/default/grid/dirty.gif');
+    background-position: 0 0;
+    background-repeat: no-repeat; }
+  /* line 347, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-cell-selected {
+    background-color: #B8CFEE !important; }
+  /* line 353, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-nlg .x-grid-cell-special {
+    background-repeat: repeat-y;
+    background-position: top right; }
+  /* line 359, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-nlg .x-grid-row .x-grid-cell-special,
+  .x-reset .x-nlg .x-grid-row-over .x-grid-cell-special {
+    background-image: url('../../resources/themes/images/default/grid/cell-special-bg.gif'); }
+  /* line 365, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-nlg .x-grid-row-focused .x-grid-cell-special,
+  .x-reset .x-nlg .x-grid-row-selected .x-grid-cell-special {
+    background-image: url('../../resources/themes/images/default/grid/cell-special-selected-bg.gif'); }
+  /* line 371, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-with-col-lines .x-grid-cell {
+    padding-right: 0;
+    border-right: 1px solid #d0d0d0; }
+  /* line 378, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,
+  .x-reset .x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner {
+    padding-left: 12px;
+    background-image: url('../../resources/themes/images/default/grid/property-cell-bg.gif');
+    background-repeat: no-repeat;
+    background-position: -16px 2px; }
+  /* line 388, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-with-row-lines.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,
+  .x-reset .x-grid-with-row-lines.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner {
+    background-position: -16px 1px; }
+  /* line 394, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-quirks .x-ie .x-grid-row .x-grid-property-name .x-grid-cell-inner {
+    background-position: -16px 2px; }
+  /* line 399, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-unselectable {
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default; }
+  /* line 403, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-body-hidden {
+    display: none; }
+  /* line 407, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-group-collapsed {
+    display: none; }
+  /* line 413, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-view .x-grid-td-expander {
+    vertical-align: top; }
+  /* line 418, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-td-expander {
+    background: repeat-y right transparent; }
+  /* line 424, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-view .x-grid-td-expander .x-grid-cell-inner {
+    padding: 0 !important; }
+  /* line 430, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-expander {
+    background-image: url('../../resources/themes/images/default/grid/group-collapse.gif');
+    background-color: transparent;
+    width: 9px;
+    height: 13px;
+    margin-left: 3px;
+    background-repeat: no-repeat;
+    background-position: 0 -2px; }
+  /* line 444, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-collapsed .x-grid-row-expander {
+    background-image: url('../../resources/themes/images/default/grid/group-expand.gif'); }
+  /* line 449, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-resize-marker {
+    position: absolute;
+    z-index: 5;
+    top: 0;
+    width: 1px;
+    background-color: #0f0f0f; }
+  /* line 459, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .col-move-top,
+  .x-reset .col-move-bottom {
+    width: 9px;
+    height: 9px;
+    position: absolute;
+    top: 0;
+    line-height: 0;
+    font-size: 0;
+    overflow: hidden;
+    z-index: 20000;
+    background: no-repeat left top transparent; }
+  /* line 471, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .col-move-top {
+    background-image: url('../../resources/themes/images/default/grid/col-move-top.gif'); }
+  /* line 475, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .col-move-bottom {
+    background-image: url('../../resources/themes/images/default/grid/col-move-bottom.gif'); }
+  /* line 480, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-tbar-page-number {
+    width: 30px; }
+  /* line 487, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-group,
+  .x-reset .x-grid-group-body,
+  .x-reset .x-grid-group-hd {
+    zoom: 1; }
+  /* line 491, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-group-hd {
+    padding-top: 6px; }
+    /* line 494, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-group-hd .x-grid-cell-inner {
+      padding: 10px 4px 4px 4px;
+      background: white;
+      border-width: 0 0 2px 0;
+      border-style: solid;
+      border-color: #99bbe8;
+      cursor: pointer; }
+  /* line 508, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-group-hd-collapsible .x-grid-group-title {
+    background: transparent no-repeat 0 -1px;
+    background-image: url('../../resources/themes/images/default/grid/group-collapse.gif');
+    padding: 0 0 0 14px; }
+  /* line 515, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-group-title {
+    color: #3764a0;
+    font: bold 11px tahoma, arial, verdana, sans-serif; }
+  /* line 521, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-group-hd-collapsed .x-grid-group-title {
+    background-image: url('../../resources/themes/images/default/grid/group-expand.gif'); }
+  /* line 526, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-group-collapsed .x-grid-group-body {
+    display: none; }
+  /* line 530, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-group-collapsed .x-grid-group-title {
+    background-image: url('../../resources/themes/images/default/grid/group-expand.gif'); }
+  /* line 534, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-group-by-icon {
+    background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+  /* line 538, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-show-groups-icon {
+    background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+  /* line 542, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-checkbox .x-column-header-inner {
+    padding: 0; }
+  /* line 546, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-cell-special .x-grid-cell-inner {
+    padding-left: 4px;
+    padding-right: 4px; }
+  /* line 552, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-checker,
+  .x-reset .x-column-header-checkbox .x-column-header-text {
+    height: 14px;
+    width: 14px;
+    line-height: 0;
+    background-image: url('../../resources/themes/images/default/grid/unchecked.gif');
+    background-position: -1px -1px;
+    background-repeat: no-repeat;
+    background-color: transparent; }
+  /* line 564, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-checkbox .x-column-header-text {
+    display: block;
+    margin: 0 5px; }
+  /* line 573, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-quirks .x-ie .x-grid-row-checker,
+  .x-reset .x-quirks .x-ie .x-column-header-checkbox .x-column-header-text, .x-reset .x-ie7m .x-grid-row-checker, .x-reset .x-ie7m .x-column-header-checkbox .x-column-header-text {
+    line-height: 14px; }
+  /* line 579, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-hd-checker-on .x-column-header-text {
+    background-image: url('../../resources/themes/images/default/grid/checked.gif'); }
+  /* line 583, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-cell-row-checker .x-grid-cell-inner {
+    padding-top: 4px;
+    padding-bottom: 2px;
+    line-height: 14px; }
+  /* line 588, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-with-row-lines .x-grid-cell-row-checker .x-grid-cell-inner {
+    padding-top: 3px; }
+  /* line 591, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-checker {
+    margin-left: 1px;
+    background-position: 50% -2px; }
+  /* line 598, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-selected .x-grid-row-checker,
+  .x-reset .x-grid-row-checked .x-grid-row-checker {
+    background-image: url('../../resources/themes/images/default/grid/checked.gif'); }
+  /* line 603, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-tbar-page-first {
+    background-image: url('../../resources/themes/images/default/grid/page-first.gif') !important; }
+  /* line 607, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-tbar-loading {
+    background-image: url('../../resources/themes/images/default/grid/refresh.gif') !important; }
+  /* line 611, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-tbar-page-last {
+    background-image: url('../../resources/themes/images/default/grid/page-last.gif') !important; }
+  /* line 615, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-tbar-page-next {
+    background-image: url('../../resources/themes/images/default/grid/page-next.gif') !important; }
+  /* line 619, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-tbar-page-prev {
+    background-image: url('../../resources/themes/images/default/grid/page-prev.gif') !important; }
+  /* line 624, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-item-disabled .x-tbar-loading {
+    background-image: url('../../resources/themes/images/default/grid/refresh-disabled.gif') !important; }
+  /* line 628, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-item-disabled .x-tbar-page-first {
+    background-image: url('../../resources/themes/images/default/grid/page-first-disabled.gif') !important; }
+  /* line 632, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-item-disabled .x-tbar-page-last {
+    background-image: url('../../resources/themes/images/default/grid/page-last-disabled.gif') !important; }
+  /* line 636, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-item-disabled .x-tbar-page-next {
+    background-image: url('../../resources/themes/images/default/grid/page-next-disabled.gif') !important; }
+  /* line 640, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-item-disabled .x-tbar-page-prev {
+    background-image: url('../../resources/themes/images/default/grid/page-prev-disabled.gif') !important; }
+  /* line 646, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-hmenu-sort-asc .x-menu-item-icon {
+    background-image: url('../../resources/themes/images/default/grid/hmenu-asc.gif'); }
+  /* line 650, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-hmenu-sort-desc .x-menu-item-icon {
+    background-image: url('../../resources/themes/images/default/grid/hmenu-desc.gif'); }
+  /* line 654, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-hmenu-lock .x-menu-item-icon {
+    background-image: url('../../resources/themes/images/default/grid/hmenu-lock.gif'); }
+  /* line 658, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-hmenu-unlock .x-menu-item-icon {
+    background-image: url('../../resources/themes/images/default/grid/hmenu-unlock.gif'); }
+  /* line 662, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-group-by-icon {
+    background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+  /* line 666, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-cols-icon .x-menu-item-icon {
+    background-image: url('../../resources/themes/images/default/grid/columns.gif'); }
+  /* line 670, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-show-groups-icon {
+    background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+  /* line 675, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-drop-indicator {
+    position: absolute;
+    height: 1px;
+    line-height: 0px;
+    background-color: #77BC71;
+    overflow: visible; }
+    /* line 682, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-drop-indicator .x-grid-drop-indicator-left {
+      position: absolute;
+      top: -8px;
+      left: -12px;
+      background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-right.png');
+      height: 16px;
+      width: 16px; }
+    /* line 691, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-drop-indicator .x-grid-drop-indicator-right {
+      position: absolute;
+      top: -8px;
+      right: -11px;
+      background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-left.png');
+      height: 16px;
+      width: 16px; }
+  /* line 702, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-ie6 .x-grid-drop-indicator-left {
+    background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-right.gif'); }
+  /* line 706, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-ie6 .x-grid-drop-indicator-right {
+    background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-left.gif'); }
+  /* line 714, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-editor .x-form-text {
+    padding: 0 4px; }
+  /* line 717, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-editor .x-form-cb-wrap {
+    padding-top: 3px; }
+  /* line 723, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor {
+    position: absolute !important;
+    z-index: 1;
+    zoom: 1;
+    overflow: visible !important; }
+    /* line 729, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-row-editor .x-form-text {
+      padding: 0 2px; }
+    /* line 732, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-row-editor .x-form-cb-wrap {
+      padding-top: 0; }
+    /* line 735, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-row-editor .x-form-checkbox {
+      margin-left: -4px; }
+    /* line 738, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-row-editor .x-form-display-field {
+      font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+      padding-top: 0;
+      padding-left: 2px; }
+    /* line 744, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-row-editor .x-panel-body {
+      background-color: #eaf1fb;
+      border-top: 1px solid #99bce8 !important;
+      border-bottom: 1px solid #99bce8 !important; }
+  /* line 754, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-editor .x-form-cb-wrap, .x-reset .x-grid-row-editor .x-form-cb-wrap {
+    text-align: center; }
+  /* line 757, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-editor .x-form-trigger, .x-reset .x-grid-row-editor .x-form-trigger {
+    height: 19px; }
+  /* line 761, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-editor .x-form-trigger-wrap .x-form-spinner-up, .x-reset .x-grid-editor .x-form-trigger-wrap .x-form-spinner-down, .x-reset .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-up, .x-reset .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-down {
+    background-image: url('../../resources/themes/images/default/form/spinner-small.gif');
+    height: 10px !important; }
+  /* line 768, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-editor .x-form-text, .x-reset .x-grid-row-editor .x-form-text {
+    font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+    height: 18px; }
+  /* line 776, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-border-box .x-grid-editor .x-form-trigger,
+  .x-reset .x-border-box .x-grid-row-editor .x-form-trigger {
+    height: 20px; }
+  /* line 779, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-border-box .x-grid-editor .x-form-text,
+  .x-reset .x-border-box .x-grid-row-editor .x-form-text {
+    height: 20px;
+    padding-bottom: 1px; }
+  /* line 787, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-ie .x-grid-editor .x-form-text {
+    padding-left: 5px; }
+  /* line 790, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-ie .x-grid-row-editor .x-form-text {
+    padding-left: 3px; }
+  /* line 796, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-ie8m .x-grid-editor .x-form-text,
+  .x-reset .x-ie8m .x-grid-row-editor .x-form-text {
+    padding-top: 1px; }
+  /* line 803, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-strict .x-ie6 .x-grid-editor .x-form-text,
+  .x-reset .x-strict .x-ie6 .x-grid-row-editor .x-form-text,
+  .x-reset .x-strict .x-ie7 .x-grid-editor .x-form-text,
+  .x-reset .x-strict .x-ie7 .x-grid-row-editor .x-form-text {
+    height: 17px; }
+  /* line 809, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-quirks .x-ie9 .x-grid-editor .x-form-text, .x-reset .x-quirks .x-ie9 .x-grid-row-editor .x-form-text {
+    line-height: 17px; }
+  /* line 818, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-opera .x-grid-editor .x-form-text {
+    padding-left: 5px; }
+  /* line 821, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-opera .x-grid-row-editor .x-form-text {
+    padding-left: 3px; }
+  /* line 828, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons {
+    background-color: #eaf1fb;
+    position: absolute;
+    bottom: -31px;
+    padding: 4px;
+    height: 32px; }
+    /* line 835, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-strict .x-ie7m .x-reset .x-grid-row-editor-buttons {
+      width: 192px;
+      height: 24px; }
+  /* line 845, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons-ml,
+  .x-reset .x-grid-row-editor-buttons-mr,
+  .x-reset .x-grid-row-editor-buttons-bl,
+  .x-reset .x-grid-row-editor-buttons-br,
+  .x-reset .x-grid-row-editor-buttons-bc {
+    position: absolute;
+    overflow: hidden; }
+  /* line 851, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons-bl,
+  .x-reset .x-grid-row-editor-buttons-br {
+    width: 4px;
+    height: 4px;
+    bottom: 0px;
+    background-image: url('../../resources/themes/images/default/panel/panel-default-framed-corners.gif'); }
+  /* line 857, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons-bl {
+    left: 0px;
+    background-position: 0px -16px; }
+  /* line 861, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons-br {
+    right: 0px;
+    background-position: 0px -20px; }
+  /* line 866, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons-bc {
+    position: absolute;
+    left: 4px;
+    bottom: 0px;
+    width: 192px;
+    height: 1px;
+    background-color: #99bce8; }
+  /* line 876, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons-ml,
+  .x-reset .x-grid-row-editor-buttons-mr {
+    height: 27px;
+    width: 1px;
+    top: 1px;
+    background-color: #99bce8; }
+  /* line 882, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons-ml {
+    left: 0px; }
+  /* line 885, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons-mr {
+    background-position: 0px -20px;
+    right: 0px; }
+  /* line 891, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-errors ul {
+    margin-left: 5px; }
+  /* line 894, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-errors li {
+    list-style: disc;
+    margin-left: 15px; }
+  /* line 9, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-webkit *:focus {
+    outline: none !important; }
+  /* line 16, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-item {
+    vertical-align: top;
+    table-layout: fixed; }
+  /* line 26, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-autocontainer-form-item,
+  .x-reset .x-anchor-form-item,
+  .x-reset .x-vbox-form-item,
+  .x-reset .x-checkboxgroup-form-item,
+  .x-reset .x-table-form-item {
+    margin-bottom: 5px; }
+  /* line 31, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-layout-table {
+    border-collapse: separate;
+    border-spacing: 0 2px; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-item-body {
+    position: relative; }
+  /* line 42, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-form-item td {
+    border-top: 1px solid transparent; }
+  /* line 51, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-ie6 .x-form-layout-table {
+    border-collapse: collapse;
+    border-spacing: 0; }
+  /* line 56, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-ie6 .x-form-form-item td {
+    border-top-width: 0; }
+  /* line 62, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-ie6 td.x-form-item-pad {
+    height: 5px; }
+  /* line 68, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-editor .x-form-item-body {
+    padding-bottom: 0; }
+  /* line 72, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-item-label {
+    display: block;
+    padding: 3px 0 0;
+    font-size: 12px;
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default; }
+  /* line 79, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-item-label-top {
+    display: block;
+    zoom: 1;
+    padding: 0 0 5px 0; }
+  /* line 85, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-item-label-right {
+    text-align: right; }
+  /* line 89, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-invalid-under {
+    padding: 2px 2px 2px 18px;
+    color: #c0272b;
+    font: normal 11px tahoma, arial, verdana, sans-serif;
+    line-height: 16px;
+    background: no-repeat 0 2px;
+    background-image: url('../../resources/themes/images/default/form/exclamation.gif'); }
+  /* line 100, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-invalid-icon {
+    width: 18px;
+    height: 14px;
+    background: no-repeat center center;
+    background-image: url('../../resources/themes/images/default/form/exclamation.gif');
+    overflow: hidden; }
+    /* line 106, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+    .x-reset .x-form-invalid-icon ul {
+      display: block;
+      width: 18px; }
+      /* line 109, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+      .x-reset .x-form-invalid-icon ul li {
+        /* prevent inner elements from interfering with QuickTip hovering */
+        display: none; }
+  /* line 117, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-lbl-top-err-icon {
+    margin-bottom: 4px; }
+  /* line 7, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-field,
+  .x-reset .x-form-display-field {
+    margin: 0 0 0 0;
+    font: normal 12px tahoma, arial, verdana, sans-serif;
+    color: black; }
+  /* line 14, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-item-hidden {
+    margin: 0; }
+  /* line 19, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-text,
+  .x-reset textarea.x-form-field {
+    padding: 1px 3px;
+    background: repeat-x 0 0;
+    border: 1px solid;
+    background-color: white;
+    background-image: url('../../resources/themes/images/default/form/text-bg.gif');
+    border-color: #b5b8c8; }
+  /* line 36, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-text {
+    height: 18px;
+    line-height: 15px;
+    vertical-align: top; }
+  /* line 43, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-ie8m .x-form-text {
+    line-height: 15px; }
+  /* line 48, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-border-box .x-form-text {
+    height: 22px; }
+  /* line 52, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset textarea.x-form-field {
+    color: black;
+    overflow: auto;
+    height: auto;
+    line-height: normal;
+    background: repeat-x 0 0;
+    background-color: white;
+    background-image: url('../../resources/themes/images/default/form/text-bg.gif');
+    resize: none; }
+  /* line 65, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-border-box textarea.x-form-field {
+    height: auto; }
+  /* line 70, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-safari.x-mac textarea.x-form-field {
+    margin-bottom: -2px; }
+  /* line 76, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-focus,
+  .x-reset textarea.x-form-focus {
+    border-color: #7eadd9; }
+  /* line 81, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-invalid-field,
+  .x-reset textarea.x-form-invalid-field {
+    background-color: white;
+    background-image: url('../../resources/themes/images/default/grid/invalid_line.gif');
+    background-repeat: repeat-x;
+    background-position: bottom;
+    border-color: #cc3300; }
+  /* line 91, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-item {
+    font: normal 12px tahoma, arial, verdana, sans-serif; }
+  /* line 95, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-empty-field, .x-reset textarea.x-form-empty-field {
+    color: gray; }
+  /* line 100, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-webkit .x-form-empty-field {
+    line-height: 15px; }
+  /* line 105, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-display-field {
+    padding-top: 3px; }
+  /* line 121, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-quirks .x-ie9p .x-form-text,
+  .x-reset .x-ie7m .x-form-text {
+    margin-top: -1px;
+    margin-bottom: -1px; }
+  /* line 126, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-ie .x-form-file {
+    height: 23px;
+    line-height: 18px;
+    vertical-align: middle; }
+  /* line 135, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-field-default-toolbar .x-form-text {
+    height: 16px; }
+  /* line 139, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-border-box .x-field-default-toolbar .x-form-text {
+    height: 20px; }
+  /* line 143, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-field-default-toolbar .x-form-item-label-left {
+    padding-left: 4px; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset {
+    border: 1px solid #b5b8c8;
+    padding: 10px;
+    margin-bottom: 10px;
+    display: block;
+    /* preserve margins in IE */
+    position: relative; }
+  /* line 18, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-ie .x-fieldset {
+    padding-top: 0; }
+    /* line 20, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+    .x-reset .x-ie .x-fieldset .x-fieldset-body {
+      padding-top: 10px; }
+  /* line 25, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset-header-checkbox {
+    line-height: 14px; }
+  /* line 29, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset-header {
+    font: 11px/14px bold tahoma, arial, verdana, sans-serif;
+    color: #15428b;
+    padding: 0 3px 1px;
+    overflow: hidden; }
+    /* line 35, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+    .x-reset .x-fieldset-header .x-fieldset-header-text {
+      float: left;
+      padding: 1px 0; }
+    /* line 39, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+    .x-reset .x-fieldset-header .x-fieldset-header-text-collapsible {
+      cursor: pointer; }
+    /* line 44, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+    .x-reset .x-fieldset-header .x-form-item,
+    .x-reset .x-fieldset-header .x-tool {
+      float: left;
+      margin: 1px 0 0 0; }
+    /* line 49, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+    .x-reset .x-fieldset-header .x-form-cb-wrap {
+      padding: 1px 0;
+      font-size: 0;
+      line-height: 0; }
+  /* line 58, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset-with-title .x-fieldset-header-checkbox,
+  .x-reset .x-fieldset-with-title .x-tool {
+    margin-right: 3px; }
+  /* line 65, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-webkit .x-fieldset-header {
+    -webkit-padding-start: 3px;
+    -webkit-padding-end: 3px; }
+  /* line 75, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-opera .x-fieldset-with-legend {
+    margin-top: -1px; }
+  /* line 78, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-opera.x-mac .x-fieldset-header-text {
+    padding: 2px 0 0; }
+  /* line 86, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-strict .x-ie8 .x-fieldset-header {
+    margin-bottom: -1px; }
+    /* line 90, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+    .x-reset .x-strict .x-ie8 .x-fieldset-header .x-tool,
+    .x-reset .x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,
+    .x-reset .x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox {
+      position: relative;
+      top: -1px; }
+  /* line 100, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-quirks .x-ie .x-fieldset-header,
+  .x-reset .x-ie8m .x-fieldset-header {
+    padding-left: 1px;
+    padding-right: 1px; }
+  /* line 108, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset-collapsed .x-fieldset-body {
+    display: none; }
+  /* line 113, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset-collapsed {
+    padding-bottom: 0 !important;
+    border-width: 1px 1px 0 1px !important;
+    border-left-color: transparent !important;
+    border-right-color: transparent !important; }
+  /* line 122, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-ie6 .x-fieldset-collapsed {
+    border-width: 1px 0 0 0 !important;
+    padding-bottom: 0 !important;
+    margin-left: 1px;
+    margin-right: 1px; }
+  /* line 130, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-ie .x-fieldset-bwrap {
+    zoom: 1; }
+  /* line 137, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-ie .x-fieldset-noborder legend {
+    position: relative;
+    margin-bottom: 23px; }
+  /* line 143, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-ie .x-fieldset-noborder legend span {
+    position: absolute;
+    left: 16px; }
+  /* line 149, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset {
+    overflow: hidden; }
+  /* line 153, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset-bwrap {
+    overflow: hidden;
+    zoom: 1; }
+  /* line 159, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset-body {
+    overflow: hidden; }
+  /* line 8, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+  .x-reset .x-form-file-wrap .x-form-text {
+    color: #777; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+  .x-reset .x-form-file-wrap .x-form-file-btn {
+    overflow: hidden; }
+  /* line 16, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+  .x-reset .x-form-file-wrap .x-form-file-input {
+    position: absolute;
+    top: -4px;
+    right: -2px;
+    height: 30px;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+    opacity: 0;
+    /* Yes, there's actually a good reason for this...
+     * If the configured buttonText is set to something longer than the default,
+     * then it will quickly exceed the width of the hidden file input's "Browse..."
+     * button, so part of the custom button's clickable area will be covered by
+     * the hidden file input's text box instead. This results in a text-selection
+     * mouse cursor over that part of the button, at least in Firefox, which is
+     * confusing to a user. Giving the hidden file input a huge font-size makes
+     * the native button part very large so it will cover the whole clickable area.
+     */
+    font-size: 100px; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-form-cb-wrap {
+    padding-top: 3px; }
+  /* line 11, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-form-checkbox,
+  .x-reset .x-form-radio {
+    vertical-align: -1px;
+    width: 13px;
+    height: 13px;
+    background: no-repeat;
+    background-image: url('../../resources/themes/images/default/form/checkbox.gif');
+    overflow: hidden;
+    padding: 0;
+    border: 0; }
+    /* line 22, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+    .x-reset .x-form-checkbox::-moz-focus-inner,
+    .x-reset .x-form-radio::-moz-focus-inner {
+      padding: 0;
+      border: 0; }
+  /* line 31, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-nbr.x-ie .x-form-checkbox,
+  .x-reset .x-nbr.x-ie .x-form-radio {
+    font-size: 0; }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-form-cb-checked .x-form-checkbox,
+  .x-reset .x-form-cb-checked .x-form-radio {
+    background-position: 0 -13px; }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-form-cb-focus {
+    background-position: -13px 0; }
+  /* line 48, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-form-cb-checked .x-form-cb-focus {
+    background-position: -13px -13px; }
+  /* line 54, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-form-radio {
+    background-image: url('../../resources/themes/images/default/form/radio.gif'); }
+  /* line 59, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-form-cb-label-before {
+    margin-right: 4px; }
+  /* line 62, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-form-cb-label-after {
+    margin-left: 4px; }
+  /* line 7, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+  .x-reset .x-form-checkboxgroup-body {
+    padding: 1px 4px 1px 4px; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+  .x-reset .x-form-invalid .x-form-checkboxgroup-body {
+    border: 1px solid #c30!important;
+    background: transparent repeat-x bottom;
+    background-image: url('../../resources/themes/images/default/grid/invalid_line.gif');
+    padding: 1px 3px 0 3px; }
+  /* line 20, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+  .x-reset .x-check-group-alt {
+    background: #d1ddef;
+    border-top: 1px dotted #b5b8c8;
+    border-bottom: 1px dotted #b5b8c8; }
+  /* line 27, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+  .x-reset .x-form-check-group-label {
+    color: #333;
+    border-bottom: 1px solid #333;
+    margin: 0 30px 5px 0;
+    padding: 2px; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap {
+    vertical-align: top; }
+  /* line 10, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger {
+    background-image: url('../../resources/themes/images/default/form/trigger.gif');
+    background-position: 0 0;
+    width: 17px;
+    height: 21px;
+    border-bottom: 1px solid #b5b8c8;
+    cursor: pointer;
+    cursor: hand;
+    overflow: hidden; }
+  /* line 24, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-border-box .x-form-trigger {
+    height: 22px; }
+  /* line 28, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-field-default-toolbar .x-form-trigger {
+    height: 19px; }
+  /* line 32, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-border-box .x-field-default-toolbar .x-form-trigger {
+    height: 20px; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-over {
+    background-position: -17px 0;
+    border-bottom-color: #7eadd9; }
+  /* line 43, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap-focus .x-form-trigger {
+    background-position: -51px 0;
+    border-bottom-color: #7eadd9; }
+  /* line 49, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap-focus .x-form-trigger-over {
+    background-position: -68px 0;
+    border-bottom-color: null; }
+  /* line 58, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-click,
+  .x-reset .x-form-trigger-wrap-focus .x-form-trigger-click {
+    background-position: -34px 0;
+    border-bottom-color: null; }
+  /* line 66, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-icon {
+    height: 16px;
+    background-repeat: no-repeat;
+    background-position: 7px 6px; }
+  /* line 74, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-pickerfield-open .x-form-field {
+    -moz-border-radius-bottomleft: 0;
+    -webkit-border-bottom-left-radius: 0;
+    -o-border-bottom-left-radius: 0;
+    -ms-border-bottom-left-radius: 0;
+    -khtml-border-bottom-left-radius: 0;
+    border-bottom-left-radius: 0;
+    -moz-border-radius-bottomright: 0;
+    -webkit-border-bottom-right-radius: 0;
+    -o-border-bottom-right-radius: 0;
+    -ms-border-bottom-right-radius: 0;
+    -khtml-border-bottom-right-radius: 0;
+    border-bottom-right-radius: 0; }
+  /* line 80, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-pickerfield-open-above .x-form-field {
+    -moz-border-radius-bottomleft: 3px;
+    -webkit-border-bottom-left-radius: 3px;
+    -o-border-bottom-left-radius: 3px;
+    -ms-border-bottom-left-radius: 3px;
+    -khtml-border-bottom-left-radius: 3px;
+    border-bottom-left-radius: 3px;
+    -moz-border-radius-topleft: 0;
+    -webkit-border-top-left-radius: 0;
+    -o-border-top-left-radius: 0;
+    -ms-border-top-left-radius: 0;
+    -khtml-border-top-left-radius: 0;
+    border-top-left-radius: 0;
+    -moz-border-radius-topright: 0;
+    -webkit-border-top-right-radius: 0;
+    -o-border-top-right-radius: 0;
+    -ms-border-top-right-radius: 0;
+    -khtml-border-top-right-radius: 0;
+    border-top-right-radius: 0; }
+  /* line 87, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-arrow-trigger .x-form-trigger-icon {
+    background-image: url('../../resources/themes/images/default/boundlist/trigger-arrow.png'); }
+  /* line 92, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-date-trigger {
+    background-image: url('../../resources/themes/images/default/form/date-trigger.gif'); }
+  /* line 99, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap .x-form-spinner-up,
+  .x-reset .x-form-trigger-wrap .x-form-spinner-down {
+    background-image: url('../../resources/themes/images/default/form/spinner.gif');
+    width: 17px !important;
+    height: 11px !important;
+    font-size: 0;
+    /*for IE*/
+    border-bottom: 0; }
+  /* line 109, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap .x-form-spinner-down {
+    background-position: 0 -11px; }
+  /* line 113, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap-focus .x-form-spinner-down {
+    background-position: -51px -11px; }
+  /* line 116, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap .x-form-spinner-down-over {
+    background-position: -17px -11px; }
+  /* line 119, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap-focus .x-form-spinner-down-over {
+    background-position: -68px -11px; }
+  /* line 122, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap .x-form-spinner-down-click {
+    background-position: -34px -11px; }
+  /* line 131, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-up,
+  .x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down {
+    background-image: url('../../resources/themes/images/default/form/spinner-small.gif');
+    height: 10px !important; }
+  /* line 135, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down {
+    background-position: 0 -10px; }
+  /* line 139, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down {
+    background-position: -51px -10px; }
+  /* line 142, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-over {
+    background-position: -17px -10px; }
+  /* line 145, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down-over {
+    background-position: -68px -10px; }
+  /* line 148, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-click {
+    background-position: -34px -10px; }
+  /* line 154, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-trigger-noedit {
+    cursor: pointer;
+    cursor: hand; }
+  /* line 160, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-item-disabled .x-trigger-noedit, .x-reset .x-item-disabled .x-form-trigger {
+    cursor: auto; }
+  /* line 166, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-clear-trigger {
+    background-image: url('../../resources/themes/images/default/form/clear-trigger.gif'); }
+  /* line 169, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-search-trigger {
+    background-image: url('../../resources/themes/images/default/form/search-trigger.gif'); }
+  /* line 177, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-quirks .prefixie6 .x-form-trigger-input-cell {
+    height: 22px; }
+  /* line 180, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-quirks .prefixie6 .x-field-default-toolbar .x-form-trigger-input-cell {
+    height: 20px; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-wrap {
+    border: 1px solid #b5b8c8; }
+    /* line 9, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+    .x-reset .x-html-editor-wrap .x-toolbar {
+      border-top-width: 0;
+      border-left-width: 0;
+      border-right-width: 0; }
+    /* line 15, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+    .x-reset .x-html-editor-wrap textarea {
+      background-color: white; }
+  /* line 20, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-btn-text {
+    background: transparent no-repeat;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 26, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-bold,
+  .x-reset .x-menu-item img.x-edit-bold {
+    background-position: 0 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 32, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-italic,
+  .x-reset .x-menu-item img.x-edit-italic {
+    background-position: -16px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-underline,
+  .x-reset .x-menu-item img.x-edit-underline {
+    background-position: -32px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-forecolor,
+  .x-reset .x-menu-item img.x-edit-forecolor {
+    background-position: -160px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 50, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-backcolor,
+  .x-reset .x-menu-item img.x-edit-backcolor {
+    background-position: -176px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 56, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-justifyleft,
+  .x-reset .x-menu-item img.x-edit-justifyleft {
+    background-position: -112px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 62, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-justifycenter,
+  .x-reset .x-menu-item img.x-edit-justifycenter {
+    background-position: -128px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 68, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-justifyright,
+  .x-reset .x-menu-item img.x-edit-justifyright {
+    background-position: -144px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 74, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-insertorderedlist,
+  .x-reset .x-menu-item img.x-edit-insertorderedlist {
+    background-position: -80px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 80, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-insertunorderedlist,
+  .x-reset .x-menu-item img.x-edit-insertunorderedlist {
+    background-position: -96px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 86, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-increasefontsize,
+  .x-reset .x-menu-item img.x-edit-increasefontsize {
+    background-position: -48px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 92, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-decreasefontsize,
+  .x-reset .x-menu-item img.x-edit-decreasefontsize {
+    background-position: -64px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 98, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-sourceedit,
+  .x-reset .x-menu-item img.x-edit-sourceedit {
+    background-position: -192px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 104, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-createlink,
+  .x-reset .x-menu-item img.x-edit-createlink {
+    background-position: -208px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 109, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tip .x-tip-bd .x-tip-bd-inner {
+    padding: 5px;
+    padding-bottom: 1px; }
+  /* line 115, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-toolbar {
+    position: static !important; }
+  /* line 118, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-font-select {
+    font-size: 11px; }
+  /* line 123, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-wrap textarea {
+    border: 0;
+    padding: 3px 2px;
+    overflow: auto; }
+  /* line 7, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel,
+  .x-reset .x-plain {
+    overflow: hidden;
+    position: relative; }
+  /* line 24, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-ie .x-panel-header,
+  .x-reset .x-ie .x-panel-header-tl,
+  .x-reset .x-ie .x-panel-header-tc,
+  .x-reset .x-ie .x-panel-header-tr,
+  .x-reset .x-ie .x-panel-header-ml,
+  .x-reset .x-ie .x-panel-header-mc,
+  .x-reset .x-ie .x-panel-header-mr,
+  .x-reset .x-ie .x-panel-header-bl,
+  .x-reset .x-ie .x-panel-header-bc,
+  .x-reset .x-ie .x-panel-header-br {
+    zoom: 1; }
+  /* line 30, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-ie8 td.x-frame-mc {
+    vertical-align: top; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-horizontal {
+    padding: 3px 5px 4px; }
+  /* line 40, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-vertical {
+    padding: 5px 4px; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-icon,
+  .x-reset .x-window-header-icon {
+    width: 16px;
+    height: 16px;
+    background-repeat: no-repeat;
+    background-position: 0 0;
+    vertical-align: middle;
+    margin-right: 4px; }
+  /* line 56, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-vertical .x-panel-header-icon,
+  .x-reset .x-vertical .x-window-header-icon {
+    margin: 0 0 4px; }
+  /* line 64, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-draggable,
+  .x-reset .x-panel-header-draggable .x-panel-header-text,
+  .x-reset .x-window-header-draggable,
+  .x-reset .x-window-header-draggable .x-window-header-text {
+    cursor: move; }
+  /* line 70, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-ghost, .x-reset .x-window-ghost {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+    opacity: 0.65;
+    cursor: move; }
+  /* line 76, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-horizontal .x-panel-header-body, .x-reset .x-panel-header-horizontal .x-window-header-body, .x-reset .x-panel-header-horizontal .x-btn-group-header-body, .x-reset .x-window-header-horizontal .x-panel-header-body, .x-reset .x-window-header-horizontal .x-window-header-body, .x-reset .x-window-header-horizontal .x-btn-group-header-body, .x-reset .x-btn-group-header-horizontal .x-panel-header-body, .x-reset .x-btn-group-header-horizontal .x-window-header-body, .x-reset .x-btn-group-header-horizontal .x-btn-group-header-body {
+    width: 100%; }
+  /* line 82, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-vertical .x-panel-header-body, .x-reset .x-panel-header-vertical .x-window-header-body, .x-reset .x-panel-header-vertical .x-btn-group-header-body, .x-reset .x-window-header-vertical .x-panel-header-body, .x-reset .x-window-header-vertical .x-window-header-body, .x-reset .x-window-header-vertical .x-btn-group-header-body, .x-reset .x-btn-group-header-vertical .x-panel-header-body, .x-reset .x-btn-group-header-vertical .x-window-header-body, .x-reset .x-btn-group-header-vertical .x-btn-group-header-body {
+    height: 100%; }
+  /* line 87, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-text-container {
+    overflow: hidden;
+    -o-text-overflow: ellipsis;
+    text-overflow: ellipsis; }
+  /* line 93, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-text {
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default;
+    white-space: nowrap; }
+  /* line 100, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-left .x-vml-base,
+  .x-reset .x-panel-header-right .x-vml-base {
+    left: -3px !important; }
+  /* line 106, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-body {
+    overflow: hidden;
+    position: relative;
+    font-size: 12px; }
+  /* line 114, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-vertical .x-surface {
+    padding-left: 1px; }
+  /* line 122, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-opera .x-panel-header-vertical .x-surface,
+  .x-reset .x-strict .x-ie9 .x-panel-header-vertical .x-surface {
+    padding-left: 2px; }
+  /* line 129, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-panel-header-collapsed-border-top {
+    border-bottom-width: 1px !important; }
+  /* line 132, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-panel-header-collapsed-border-right {
+    border-left-width: 1px !important; }
+  /* line 135, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-panel-header-collapsed-border-bottom {
+    border-top-width: 1px !important; }
+  /* line 138, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-panel-header-collapsed-border-left {
+    border-right-width: 1px !important; }
+  /* line 145, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-vertical .x-frame-mc {
+    background-repeat: repeat-y; }
+  /* line 248, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-default {
+    border-color: #99bce8; }
+  /* line 253, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default {
+    font-size: 11px;
+    border-color: #99bce8;
+    border-width: 1px;
+    border-style: solid;
+    background-image: none;
+    background-color: #cbddf3;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+    background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -ms-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+    -o-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+    box-shadow: #f4f8fd 0 1px 0px 0 inset; }
+  /* line 277, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-top {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif'); }
+  /* line 281, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-bottom {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif'); }
+  /* line 285, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-left {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif'); }
+  /* line 289, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-right {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif'); }
+  /* line 293, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-right {
+    background-position: top right; }
+  /* line 297, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-bottom {
+    background-position: bottom left; }
+  /* line 338, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-text-default {
+    color: #04408c;
+    font-size: 11px;
+    font-weight: bold;
+    font-family: tahoma, arial, verdana, sans-serif;
+    line-height: 17px; }
+  /* line 348, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-body-default {
+    background: white;
+    border-color: #99bce8;
+    color: black;
+    border-width: 1px;
+    border-style: solid; }
+  /* line 363, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-window-header-default,
+  .x-reset .x-panel-collapsed .x-panel-header-default {
+    border-color: #99bce8; }
+  /* line 368, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-vertical {
+    border-color: #99bce8; }
+  /* line 375, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-left,
+  .x-reset .x-panel-header-default-right {
+    background-image: none;
+    background-color: #cbddf3;
+    background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+    background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -ms-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+  /* line 416, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-panel-header-default-top {
+    -moz-border-radius-bottomleft: null;
+    -webkit-border-bottom-left-radius: null;
+    -o-border-bottom-left-radius: null;
+    -ms-border-bottom-left-radius: null;
+    -khtml-border-bottom-left-radius: null;
+    border-bottom-left-radius: null;
+    -moz-border-radius-bottomright: null;
+    -webkit-border-bottom-right-radius: null;
+    -o-border-bottom-right-radius: null;
+    -ms-border-bottom-right-radius: null;
+    -khtml-border-bottom-right-radius: null;
+    border-bottom-right-radius: null; }
+  /* line 420, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-panel-header-default-right {
+    -moz-border-radius-topleft: null;
+    -webkit-border-top-left-radius: null;
+    -o-border-top-left-radius: null;
+    -ms-border-top-left-radius: null;
+    -khtml-border-top-left-radius: null;
+    border-top-left-radius: null;
+    -moz-border-radius-bottomleft: null;
+    -webkit-border-bottom-left-radius: null;
+    -o-border-bottom-left-radius: null;
+    -ms-border-bottom-left-radius: null;
+    -khtml-border-bottom-left-radius: null;
+    border-bottom-left-radius: null; }
+  /* line 424, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-panel-header-default-bottom {
+    -moz-border-radius-topleft: null;
+    -webkit-border-top-left-radius: null;
+    -o-border-top-left-radius: null;
+    -ms-border-top-left-radius: null;
+    -khtml-border-top-left-radius: null;
+    border-top-left-radius: null;
+    -moz-border-radius-topright: null;
+    -webkit-border-top-right-radius: null;
+    -o-border-top-right-radius: null;
+    -ms-border-top-right-radius: null;
+    -khtml-border-top-right-radius: null;
+    border-top-right-radius: null; }
+  /* line 428, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-panel-header-default-left {
+    -moz-border-radius-topright: null;
+    -webkit-border-top-right-radius: null;
+    -o-border-top-right-radius: null;
+    -ms-border-top-right-radius: null;
+    -khtml-border-top-right-radius: null;
+    border-top-right-radius: null;
+    -moz-border-radius-bottomright: null;
+    -webkit-border-bottom-right-radius: null;
+    -o-border-bottom-right-radius: null;
+    -ms-border-bottom-right-radius: null;
+    -khtml-border-bottom-right-radius: null;
+    border-bottom-right-radius: null; }
+  /* line 434, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-top {
+    -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+    -o-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+    box-shadow: #f4f8fd 0 1px 0px 0 inset; }
+  /* line 438, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-right {
+    -moz-box-shadow: #f4f8fd -1px 0 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd -1px 0 0px 0 inset;
+    -o-box-shadow: #f4f8fd -1px 0 0px 0 inset;
+    box-shadow: #f4f8fd -1px 0 0px 0 inset; }
+  /* line 442, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-bottom {
+    -moz-box-shadow: #f4f8fd 0 -1px 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd 0 -1px 0px 0 inset;
+    -o-box-shadow: #f4f8fd 0 -1px 0px 0 inset;
+    box-shadow: #f4f8fd 0 -1px 0px 0 inset; }
+  /* line 446, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-left {
+    -moz-box-shadow: #f4f8fd 1px 0 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd 1px 0 0px 0 inset;
+    -o-box-shadow: #f4f8fd 1px 0 0px 0 inset;
+    box-shadow: #f4f8fd 1px 0 0px 0 inset; }
+  /* line 481, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-right-tc,
+  .x-reset .x-panel-header-default-right-mc,
+  .x-reset .x-panel-header-default-right-bc {
+    background-position: right 0; }
+  /* line 487, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-bottom-tc,
+  .x-reset .x-panel-header-default-bottom-mc,
+  .x-reset .x-panel-header-default-bottom-bc {
+    background-position: 0 bottom; }
+  /* line 248, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-default-framed {
+    border-color: #99bce8; }
+  /* line 253, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed {
+    font-size: 11px;
+    border-color: #99bce8;
+    border-width: 1px;
+    border-style: solid;
+    background-image: none;
+    background-color: #cbddf3;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+    background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -ms-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+    -o-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+    box-shadow: #f4f8fd 0 1px 0px 0 inset; }
+  /* line 277, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-top {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif'); }
+  /* line 281, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-bottom {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif'); }
+  /* line 285, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-left {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif'); }
+  /* line 289, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-right {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif'); }
+  /* line 293, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-right {
+    background-position: top right; }
+  /* line 297, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-bottom {
+    background-position: bottom left; }
+  /* line 305, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed {
+    background-image: none; }
+  /* line 317, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-strict .x-ie9 .x-panel-header-default-framed-top,
+  .x-reset .x-nlg.x-opera .x-panel-header-default-framed-top,
+  .x-reset .x-nlg.x-safari .x-panel-header-default-framed-top {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif'); }
+  /* line 321, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-strict .x-ie9 .x-panel-header-default-framed-bottom,
+  .x-reset .x-nlg.x-opera .x-panel-header-default-framed-bottom,
+  .x-reset .x-nlg.x-safari .x-panel-header-default-framed-bottom {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif'); }
+  /* line 325, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-strict .x-ie9 .x-panel-header-default-framed-left,
+  .x-reset .x-nlg.x-opera .x-panel-header-default-framed-left,
+  .x-reset .x-nlg.x-safari .x-panel-header-default-framed-left {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif'); }
+  /* line 329, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-strict .x-ie9 .x-panel-header-default-framed-right,
+  .x-reset .x-nlg.x-opera .x-panel-header-default-framed-right,
+  .x-reset .x-nlg.x-safari .x-panel-header-default-framed-right {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif'); }
+  /* line 338, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-text-default-framed {
+    color: #04408c;
+    font-size: 11px;
+    font-weight: bold;
+    font-family: tahoma, arial, verdana, sans-serif;
+    line-height: 17px; }
+  /* line 348, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-body-default-framed {
+    background: #dfe9f6;
+    border-color: #99bce8;
+    color: black;
+    border-width: 0;
+    border-style: solid; }
+  /* line 363, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-window-header-default-framed,
+  .x-reset .x-panel-collapsed .x-panel-header-default-framed {
+    border-color: #99bce8; }
+  /* line 368, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-vertical {
+    border-color: #99bce8; }
+  /* line 375, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-left,
+  .x-reset .x-panel-header-default-framed-right {
+    background-image: none;
+    background-color: #cbddf3;
+    background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+    background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -ms-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-default-framed {
+    -moz-border-radius: 4px;
+    -webkit-border-radius: 4px;
+    -o-border-radius: 4px;
+    -ms-border-radius: 4px;
+    -khtml-border-radius: 4px;
+    border-radius: 4px;
+    padding: 4px 4px 4px 4px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #dfe9f6; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-default-framed-mc {
+    background-color: #dfe9f6; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-default-framed {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000404px 1000404px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-default-framed-tl,
+  .x-reset .x-nbr .x-panel-default-framed-bl,
+  .x-reset .x-nbr .x-panel-default-framed-tr,
+  .x-reset .x-nbr .x-panel-default-framed-br,
+  .x-reset .x-nbr .x-panel-default-framed-tc,
+  .x-reset .x-nbr .x-panel-default-framed-bc,
+  .x-reset .x-nbr .x-panel-default-framed-ml,
+  .x-reset .x-nbr .x-panel-default-framed-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel/panel-default-framed-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-default-framed-ml,
+  .x-reset .x-nbr .x-panel-default-framed-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel/panel-default-framed-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-default-framed-mc {
+    padding: 1px 1px 1px 1px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-panel-default-framed-tl,
+  .x-reset .x-strict .x-ie7 .x-panel-default-framed-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-header-default-framed-top {
+    -moz-border-radius-topleft: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -o-border-top-left-radius: 4px;
+    -ms-border-top-left-radius: 4px;
+    -khtml-border-top-left-radius: 4px;
+    border-top-left-radius: 4px;
+    -moz-border-radius-topright: 4px;
+    -webkit-border-top-right-radius: 4px;
+    -o-border-top-right-radius: 4px;
+    -ms-border-top-right-radius: 4px;
+    -khtml-border-top-right-radius: 4px;
+    border-top-right-radius: 4px;
+    -moz-border-radius-bottomright: 0;
+    -webkit-border-bottom-right-radius: 0;
+    -o-border-bottom-right-radius: 0;
+    -ms-border-bottom-right-radius: 0;
+    -khtml-border-bottom-right-radius: 0;
+    border-bottom-right-radius: 0;
+    -moz-border-radius-bottomleft: 0;
+    -webkit-border-bottom-left-radius: 0;
+    -o-border-bottom-left-radius: 0;
+    -ms-border-bottom-left-radius: 0;
+    -khtml-border-bottom-left-radius: 0;
+    border-bottom-left-radius: 0;
+    padding: 3px 5px 4px 5px;
+    border-width: 1px 1px 0 1px;
+    border-style: solid;
+    background-image: none;
+    background-color: #cbddf3;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+    background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -ms-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-top-mc {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif');
+    background-color: #cbddf3; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-top {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000404px 1000000px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-top-tl,
+  .x-reset .x-nbr .x-panel-header-default-framed-top-bl,
+  .x-reset .x-nbr .x-panel-header-default-framed-top-tr,
+  .x-reset .x-nbr .x-panel-header-default-framed-top-br,
+  .x-reset .x-nbr .x-panel-header-default-framed-top-tc,
+  .x-reset .x-nbr .x-panel-header-default-framed-top-bc,
+  .x-reset .x-nbr .x-panel-header-default-framed-top-ml,
+  .x-reset .x-nbr .x-panel-header-default-framed-top-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-top-ml,
+  .x-reset .x-nbr .x-panel-header-default-framed-top-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-sides.gif');
+    background-position: 0 0; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-top-mc {
+    padding: 0px 2px 4px 2px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-top-tl,
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-top-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-header-default-framed-right {
+    -moz-border-radius-topleft: 0;
+    -webkit-border-top-left-radius: 0;
+    -o-border-top-left-radius: 0;
+    -ms-border-top-left-radius: 0;
+    -khtml-border-top-left-radius: 0;
+    border-top-left-radius: 0;
+    -moz-border-radius-topright: 4px;
+    -webkit-border-top-right-radius: 4px;
+    -o-border-top-right-radius: 4px;
+    -ms-border-top-right-radius: 4px;
+    -khtml-border-top-right-radius: 4px;
+    border-top-right-radius: 4px;
+    -moz-border-radius-bottomright: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -o-border-bottom-right-radius: 4px;
+    -ms-border-bottom-right-radius: 4px;
+    -khtml-border-bottom-right-radius: 4px;
+    border-bottom-right-radius: 4px;
+    -moz-border-radius-bottomleft: 0;
+    -webkit-border-bottom-left-radius: 0;
+    -o-border-bottom-left-radius: 0;
+    -ms-border-bottom-left-radius: 0;
+    -khtml-border-bottom-left-radius: 0;
+    border-bottom-left-radius: 0;
+    padding: 5px 4px 5px 4px;
+    border-width: 1px 1px 1px 0;
+    border-style: solid;
+    background-image: none;
+    background-color: #cbddf3;
+    background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+    background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -ms-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-right-mc {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif');
+    background-color: #cbddf3; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-right {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000004px 1100400px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-right-tl,
+  .x-reset .x-nbr .x-panel-header-default-framed-right-bl,
+  .x-reset .x-nbr .x-panel-header-default-framed-right-tr,
+  .x-reset .x-nbr .x-panel-header-default-framed-right-br,
+  .x-reset .x-nbr .x-panel-header-default-framed-right-tc,
+  .x-reset .x-nbr .x-panel-header-default-framed-right-bc,
+  .x-reset .x-nbr .x-panel-header-default-framed-right-ml,
+  .x-reset .x-nbr .x-panel-header-default-framed-right-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-corners.gif'); }
+  /* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-right-tc,
+  .x-reset .x-nbr .x-panel-header-default-framed-right-bc {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-x; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-right-mc {
+    padding: 2px 1px 2px 4px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-right-tl,
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-right-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-header-default-framed-bottom {
+    -moz-border-radius-topleft: 0;
+    -webkit-border-top-left-radius: 0;
+    -o-border-top-left-radius: 0;
+    -ms-border-top-left-radius: 0;
+    -khtml-border-top-left-radius: 0;
+    border-top-left-radius: 0;
+    -moz-border-radius-topright: 0;
+    -webkit-border-top-right-radius: 0;
+    -o-border-top-right-radius: 0;
+    -ms-border-top-right-radius: 0;
+    -khtml-border-top-right-radius: 0;
+    border-top-right-radius: 0;
+    -moz-border-radius-bottomright: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -o-border-bottom-right-radius: 4px;
+    -ms-border-bottom-right-radius: 4px;
+    -khtml-border-bottom-right-radius: 4px;
+    border-bottom-right-radius: 4px;
+    -moz-border-radius-bottomleft: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -o-border-bottom-left-radius: 4px;
+    -ms-border-bottom-left-radius: 4px;
+    -khtml-border-bottom-left-radius: 4px;
+    border-bottom-left-radius: 4px;
+    padding: 3px 5px 4px 5px;
+    border-width: 0 1px 1px 1px;
+    border-style: solid;
+    background-image: none;
+    background-color: #cbddf3;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+    background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -ms-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-bottom-mc {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif');
+    background-color: #cbddf3; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-bottom {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000000px 1000404px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-bottom-tl,
+  .x-reset .x-nbr .x-panel-header-default-framed-bottom-bl,
+  .x-reset .x-nbr .x-panel-header-default-framed-bottom-tr,
+  .x-reset .x-nbr .x-panel-header-default-framed-bottom-br,
+  .x-reset .x-nbr .x-panel-header-default-framed-bottom-tc,
+  .x-reset .x-nbr .x-panel-header-default-framed-bottom-bc,
+  .x-reset .x-nbr .x-panel-header-default-framed-bottom-ml,
+  .x-reset .x-nbr .x-panel-header-default-framed-bottom-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-bottom-ml,
+  .x-reset .x-nbr .x-panel-header-default-framed-bottom-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-sides.gif');
+    background-position: 0 0; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-bottom-mc {
+    padding: 3px 2px 1px 2px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-header-default-framed-left {
+    -moz-border-radius-topleft: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -o-border-top-left-radius: 4px;
+    -ms-border-top-left-radius: 4px;
+    -khtml-border-top-left-radius: 4px;
+    border-top-left-radius: 4px;
+    -moz-border-radius-topright: 0;
+    -webkit-border-top-right-radius: 0;
+    -o-border-top-right-radius: 0;
+    -ms-border-top-right-radius: 0;
+    -khtml-border-top-right-radius: 0;
+    border-top-right-radius: 0;
+    -moz-border-radius-bottomright: 0;
+    -webkit-border-bottom-right-radius: 0;
+    -o-border-bottom-right-radius: 0;
+    -ms-border-bottom-right-radius: 0;
+    -khtml-border-bottom-right-radius: 0;
+    border-bottom-right-radius: 0;
+    -moz-border-radius-bottomleft: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -o-border-bottom-left-radius: 4px;
+    -ms-border-bottom-left-radius: 4px;
+    -khtml-border-bottom-left-radius: 4px;
+    border-bottom-left-radius: 4px;
+    padding: 5px 4px 5px 4px;
+    border-width: 1px 0 1px 1px;
+    border-style: solid;
+    background-image: none;
+    background-color: #cbddf3;
+    background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+    background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -ms-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-left-mc {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif');
+    background-color: #cbddf3; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-left {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000400px 1100004px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-left-tl,
+  .x-reset .x-nbr .x-panel-header-default-framed-left-bl,
+  .x-reset .x-nbr .x-panel-header-default-framed-left-tr,
+  .x-reset .x-nbr .x-panel-header-default-framed-left-br,
+  .x-reset .x-nbr .x-panel-header-default-framed-left-tc,
+  .x-reset .x-nbr .x-panel-header-default-framed-left-bc,
+  .x-reset .x-nbr .x-panel-header-default-framed-left-ml,
+  .x-reset .x-nbr .x-panel-header-default-framed-left-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-corners.gif'); }
+  /* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-left-tc,
+  .x-reset .x-nbr .x-panel-header-default-framed-left-bc {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-x; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-left-mc {
+    padding: 2px 4px 2px 1px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-left-tl,
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-left-bl {
+    position: relative;
+    right: 0; }
+  /* line 399, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-top {
+    -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    -o-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset; }
+  /* line 403, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-right {
+    -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset;
+    -o-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset;
+    box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset; }
+  /* line 407, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-bottom {
+    -moz-box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    -o-box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset; }
+  /* line 411, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-left {
+    -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    -o-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset; }
+  /* line 452, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel .x-panel-header-default-framed-top {
+    border-bottom-width: 1px !important; }
+  /* line 456, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel .x-panel-header-default-framed-right {
+    border-left-width: 1px !important; }
+  /* line 460, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel .x-panel-header-default-framed-bottom {
+    border-top-width: 1px !important; }
+  /* line 464, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel .x-panel-header-default-framed-left {
+    border-right-width: 1px !important; }
+  /* line 468, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-collapsed {
+    -moz-border-radius: 4px;
+    -webkit-border-radius: 4px;
+    -o-border-radius: 4px;
+    -ms-border-radius: 4px;
+    -khtml-border-radius: 4px;
+    border-radius: 4px; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-header-default-framed-collapsed-top {
+    -moz-border-radius-topleft: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -o-border-top-left-radius: 4px;
+    -ms-border-top-left-radius: 4px;
+    -khtml-border-top-left-radius: 4px;
+    border-top-left-radius: 4px;
+    -moz-border-radius-topright: 4px;
+    -webkit-border-top-right-radius: 4px;
+    -o-border-top-right-radius: 4px;
+    -ms-border-top-right-radius: 4px;
+    -khtml-border-top-right-radius: 4px;
+    border-top-right-radius: 4px;
+    -moz-border-radius-bottomright: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -o-border-bottom-right-radius: 4px;
+    -ms-border-bottom-right-radius: 4px;
+    -khtml-border-bottom-right-radius: 4px;
+    border-bottom-right-radius: 4px;
+    -moz-border-radius-bottomleft: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -o-border-bottom-left-radius: 4px;
+    -ms-border-bottom-left-radius: 4px;
+    -khtml-border-bottom-left-radius: 4px;
+    border-bottom-left-radius: 4px;
+    padding: 3px 5px 4px 5px;
+    border-width: 1px;
+    border-style: solid;
+    background-image: none;
+    background-color: #cbddf3;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+    background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -ms-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-collapsed-top-mc {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-bg.gif');
+    background-color: #cbddf3; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-top {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000404px 1000404px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-tl,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-bl,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-tr,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-br,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-tc,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-bc,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-ml,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-ml,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-sides.gif');
+    background-position: 0 0; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-mc {
+    padding: 0px 2px 1px 2px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-header-default-framed-collapsed-right {
+    -moz-border-radius-topleft: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -o-border-top-left-radius: 4px;
+    -ms-border-top-left-radius: 4px;
+    -khtml-border-top-left-radius: 4px;
+    border-top-left-radius: 4px;
+    -moz-border-radius-topright: 4px;
+    -webkit-border-top-right-radius: 4px;
+    -o-border-top-right-radius: 4px;
+    -ms-border-top-right-radius: 4px;
+    -khtml-border-top-right-radius: 4px;
+    border-top-right-radius: 4px;
+    -moz-border-radius-bottomright: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -o-border-bottom-right-radius: 4px;
+    -ms-border-bottom-right-radius: 4px;
+    -khtml-border-bottom-right-radius: 4px;
+    border-bottom-right-radius: 4px;
+    -moz-border-radius-bottomleft: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -o-border-bottom-left-radius: 4px;
+    -ms-border-bottom-left-radius: 4px;
+    -khtml-border-bottom-left-radius: 4px;
+    border-bottom-left-radius: 4px;
+    padding: 5px 4px 5px 4px;
+    border-width: 1px;
+    border-style: solid;
+    background-image: none;
+    background-color: #cbddf3;
+    background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+    background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -ms-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-collapsed-right-mc {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-bg.gif');
+    background-color: #cbddf3; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-right {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000404px 1100404px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-tl,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-bl,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-tr,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-br,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-tc,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-bc,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-ml,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-corners.gif'); }
+  /* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-tc,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-bc {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-x; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-mc {
+    padding: 2px 1px 2px 1px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-header-default-framed-collapsed-bottom {
+    -moz-border-radius-topleft: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -o-border-top-left-radius: 4px;
+    -ms-border-top-left-radius: 4px;
+    -khtml-border-top-left-radius: 4px;
+    border-top-left-radius: 4px;
+    -moz-border-radius-topright: 4px;
+    -webkit-border-top-right-radius: 4px;
+    -o-border-top-right-radius: 4px;
+    -ms-border-top-right-radius: 4px;
+    -khtml-border-top-right-radius: 4px;
+    border-top-right-radius: 4px;
+    -moz-border-radius-bottomright: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -o-border-bottom-right-radius: 4px;
+    -ms-border-bottom-right-radius: 4px;
+    -khtml-border-bottom-right-radius: 4px;
+    border-bottom-right-radius: 4px;
+    -moz-border-radius-bottomleft: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -o-border-bottom-left-radius: 4px;
+    -ms-border-bottom-left-radius: 4px;
+    -khtml-border-bottom-left-radius: 4px;
+    border-bottom-left-radius: 4px;
+    padding: 3px 5px 4px 5px;
+    border-width: 1px;
+    border-style: solid;
+    background-image: none;
+    background-color: #cbddf3;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+    background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -ms-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-collapsed-bottom-mc {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif');
+    background-color: #cbddf3; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000404px 1000404px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-tl,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-bl,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-tr,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-br,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-tc,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-bc,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif');
+    background-position: 0 0; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-mc {
+    padding: 0px 2px 1px 2px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-header-default-framed-collapsed-left {
+    -moz-border-radius-topleft: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -o-border-top-left-radius: 4px;
+    -ms-border-top-left-radius: 4px;
+    -khtml-border-top-left-radius: 4px;
+    border-top-left-radius: 4px;
+    -moz-border-radius-topright: 4px;
+    -webkit-border-top-right-radius: 4px;
+    -o-border-top-right-radius: 4px;
+    -ms-border-top-right-radius: 4px;
+    -khtml-border-top-right-radius: 4px;
+    border-top-right-radius: 4px;
+    -moz-border-radius-bottomright: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -o-border-bottom-right-radius: 4px;
+    -ms-border-bottom-right-radius: 4px;
+    -khtml-border-bottom-right-radius: 4px;
+    border-bottom-right-radius: 4px;
+    -moz-border-radius-bottomleft: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -o-border-bottom-left-radius: 4px;
+    -ms-border-bottom-left-radius: 4px;
+    -khtml-border-bottom-left-radius: 4px;
+    border-bottom-left-radius: 4px;
+    padding: 5px 4px 5px 4px;
+    border-width: 1px;
+    border-style: solid;
+    background-image: none;
+    background-color: #cbddf3;
+    background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+    background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: -ms-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+    background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-collapsed-left-mc {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-bg.gif');
+    background-color: #cbddf3; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-left {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000404px 1100404px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-tl,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-bl,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-tr,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-br,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-tc,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-bc,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-ml,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-corners.gif'); }
+  /* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-tc,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-bc {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-x; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-mc {
+    padding: 2px 1px 2px 1px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl {
+    position: relative;
+    right: 0; }
+  /* line 481, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-right-tc,
+  .x-reset .x-panel-header-default-framed-right-mc,
+  .x-reset .x-panel-header-default-framed-right-bc {
+    background-position: right 0; }
+  /* line 487, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-bottom-tc,
+  .x-reset .x-panel-header-default-framed-bottom-mc,
+  .x-reset .x-panel-header-default-framed-bottom-bc {
+    background-position: 0 bottom; }
+  /* line 197, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-plain,
+  .x-reset .x-panel-body-plain {
+    border: 0;
+    padding: 0; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip {
+    position: absolute;
+    overflow: visible;
+    /*pointer needs to be able to stick out*/
+    border-color: #8eaace; }
+    /* line 12, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+    .x-reset .x-tip .x-tip-header .x-box-item {
+      padding: 3px 3px 0; }
+    /* line 16, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+    .x-reset .x-tip .x-tip-header .x-tool {
+      padding: 0px 1px 0 0 !important; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-tip {
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    -o-border-radius: 3px;
+    -ms-border-radius: 3px;
+    -khtml-border-radius: 3px;
+    border-radius: 3px;
+    padding: 2px 2px 2px 2px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #e9f2ff; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-tip-mc {
+    background-color: #e9f2ff; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-tip {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1100303px 1000303px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-tip-tl,
+  .x-reset .x-nbr .x-tip-bl,
+  .x-reset .x-nbr .x-tip-tr,
+  .x-reset .x-nbr .x-tip-br,
+  .x-reset .x-nbr .x-tip-tc,
+  .x-reset .x-nbr .x-tip-bc,
+  .x-reset .x-nbr .x-tip-ml,
+  .x-reset .x-nbr .x-tip-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/tip/tip-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-tip-ml,
+  .x-reset .x-nbr .x-tip-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/tip/tip-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-tip-mc {
+    padding: 0px 0px 0px 0px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-tip-tl,
+  .x-reset .x-strict .x-ie7 .x-tip-bl {
+    position: relative;
+    right: 0; }
+  /* line 31, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-header-text {
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default;
+    color: #444444;
+    font-size: 11px;
+    font-weight: bold; }
+  /* line 40, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-header-draggable .x-tip-header-text {
+    cursor: move; }
+  /* line 47, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-body,
+  .x-reset .x-form-invalid-tip-body {
+    overflow: hidden;
+    position: relative;
+    padding: 3px; }
+  /* line 55, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-header,
+  .x-reset .x-tip-body,
+  .x-reset .x-form-invalid-tip-body {
+    color: #444444;
+    font-size: 11px;
+    font-weight: normal; }
+    /* line 59, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+    .x-reset .x-tip-header a,
+    .x-reset .x-tip-body a,
+    .x-reset .x-form-invalid-tip-body a {
+      color: #2a2a2a; }
+  /* line 64, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-anchor {
+    position: absolute;
+    overflow: hidden;
+    height: 0;
+    width: 0;
+    border-style: solid;
+    border-width: 5px;
+    border-color: #8eaace;
+    zoom: 1; }
+  /* line 79, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-border-box .x-tip-anchor {
+    width: 10px;
+    height: 10px; }
+  /* line 84, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-anchor-top {
+    border-top-color: transparent;
+    border-left-color: transparent;
+    border-right-color: transparent;
+    _border-top-color: pink;
+    _border-left-color: pink;
+    _border-right-color: pink;
+    _filter: chroma(color=pink); }
+  /* line 97, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-anchor-bottom {
+    border-bottom-color: transparent;
+    border-left-color: transparent;
+    border-right-color: transparent;
+    _border-bottom-color: pink;
+    _border-left-color: pink;
+    _border-right-color: pink;
+    _filter: chroma(color=pink); }
+  /* line 110, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-anchor-left {
+    border-top-color: transparent;
+    border-bottom-color: transparent;
+    border-left-color: transparent;
+    _border-top-color: pink;
+    _border-bottom-color: pink;
+    _border-left-color: pink;
+    _filter: chroma(color=pink); }
+  /* line 123, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-anchor-right {
+    border-top-color: transparent;
+    border-bottom-color: transparent;
+    border-right-color: transparent;
+    _border-top-color: pink;
+    _border-bottom-color: pink;
+    _border-right-color: pink;
+    _filter: chroma(color=pink); }
+  /* line 137, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-form-invalid-tip {
+    border-color: #a1311f;
+    -moz-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+    -webkit-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+    -o-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+    box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset; }
+  /* line 146, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-form-invalid-tip-body {
+    background: 1px 1px no-repeat;
+    background-image: url('../../resources/themes/images/default/form/exclamation.gif');
+    padding-left: 22px; }
+    /* line 151, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+    .x-reset .x-form-invalid-tip-body li {
+      margin-bottom: 4px; }
+      /* line 153, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+      .x-reset .x-form-invalid-tip-body li.last {
+        margin-bottom: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-form-invalid-tip-default {
+    -moz-border-radius: 5px;
+    -webkit-border-radius: 5px;
+    -o-border-radius: 5px;
+    -ms-border-radius: 5px;
+    -khtml-border-radius: 5px;
+    border-radius: 5px;
+    padding: 4px 4px 4px 4px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: white; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-form-invalid-tip-default-mc {
+    background-color: white; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-form-invalid-tip-default {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1100505px 1000505px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-form-invalid-tip-default-tl,
+  .x-reset .x-nbr .x-form-invalid-tip-default-bl,
+  .x-reset .x-nbr .x-form-invalid-tip-default-tr,
+  .x-reset .x-nbr .x-form-invalid-tip-default-br,
+  .x-reset .x-nbr .x-form-invalid-tip-default-tc,
+  .x-reset .x-nbr .x-form-invalid-tip-default-bc,
+  .x-reset .x-nbr .x-form-invalid-tip-default-ml,
+  .x-reset .x-nbr .x-form-invalid-tip-default-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-form-invalid-tip-default-ml,
+  .x-reset .x-nbr .x-form-invalid-tip-default-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-form-invalid-tip-default-mc {
+    padding: 0px 0px 0px 0px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-form-invalid-tip-default-tl,
+  .x-reset .x-strict .x-ie7 .x-form-invalid-tip-default-bl {
+    position: relative;
+    right: 0; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider {
+    zoom: 1; }
+  /* line 10, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-inner {
+    position: relative;
+    left: 0;
+    top: 0;
+    overflow: visible;
+    zoom: 1; }
+  /* line 18, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-focus {
+    position: absolute;
+    left: 0;
+    top: 0;
+    width: 1px;
+    height: 1px;
+    line-height: 1px;
+    font-size: 1px;
+    -moz-outline: 0 none;
+    outline: 0 none;
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default;
+    display: block;
+    overflow: hidden; }
+  /* line 34, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-horz {
+    padding-left: 7px;
+    background: transparent no-repeat 0 -24px;
+    width: 100%; }
+  /* line 40, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-horz .x-slider-end {
+    padding-right: 7px;
+    zoom: 1;
+    background: transparent no-repeat right -46px; }
+  /* line 46, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-horz .x-slider-inner {
+    background: transparent repeat-x 0 -2px;
+    height: 18px; }
+  /* line 51, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-horz .x-slider-thumb {
+    width: 14px;
+    height: 15px;
+    margin-left: -7px;
+    position: absolute;
+    left: 0;
+    top: 1px;
+    background: transparent no-repeat 0 0; }
+  /* line 61, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-horz .x-slider-thumb-over {
+    background-position: -14px -15px; }
+  /* line 65, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-horz .x-slider-thumb-drag {
+    background-position: -28px -30px; }
+  /* line 70, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-vert {
+    padding-top: 7px;
+    background: transparent no-repeat -44px 0; }
+  /* line 75, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-vert .x-slider-end {
+    padding-bottom: 7px;
+    zoom: 1;
+    background: transparent no-repeat -22px bottom;
+    width: 22px; }
+  /* line 82, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-vert .x-slider-inner {
+    background: transparent repeat-y 0 0;
+    width: 22px; }
+  /* line 87, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-vert .x-slider-thumb {
+    width: 15px;
+    height: 14px;
+    margin-bottom: -7px;
+    position: absolute;
+    left: 3px;
+    bottom: 0;
+    background: transparent no-repeat 0 0; }
+  /* line 97, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-vert .x-slider-thumb-over {
+    background-position: -15px -14px; }
+  /* line 101, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-vert .x-slider-thumb-drag {
+    background-position: -30px -28px; }
+  /* line 107, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-horz,
+  .x-reset .x-slider-horz .x-slider-end,
+  .x-reset .x-slider-horz .x-slider-inner {
+    background-image: url('../../resources/themes/images/default/slider/slider-bg.png'); }
+  /* line 111, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-horz .x-slider-thumb {
+    background-image: url('../../resources/themes/images/default/slider/slider-thumb.png'); }
+  /* line 117, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-vert,
+  .x-reset .x-slider-vert .x-slider-end,
+  .x-reset .x-slider-vert .x-slider-inner {
+    background-image: url('../../resources/themes/images/default/slider/slider-v-bg.png'); }
+  /* line 121, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-vert .x-slider-thumb {
+    background-image: url('../../resources/themes/images/default/slider/slider-v-thumb.png'); }
+  /* line 129, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-ie6 .x-slider-horz,
+  .x-reset .x-ie6 .x-slider-horz .x-slider-end,
+  .x-reset .x-ie6 .x-slider-horz .x-slider-inner {
+    background-image: url('../../resources/themes/images/default/slider/slider-bg.gif'); }
+  /* line 133, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-ie6 .x-slider-horz .x-slider-thumb {
+    background-image: url('../../resources/themes/images/default/slider/slider-thumb.gif'); }
+  /* line 139, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-ie6 .x-slider-vert,
+  .x-reset .x-ie6 .x-slider-vert .x-slider-end,
+  .x-reset .x-ie6 .x-slider-vert .x-slider-inner {
+    background-image: url('../../resources/themes/images/default/slider/slider-v-bg.gif'); }
+  /* line 143, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-ie6 .x-slider-vert .x-slider-thumb {
+    background-image: url('../../resources/themes/images/default/slider/slider-v-thumb.gif'); }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-reset .x-progress {
+    position: relative;
+    border-width: 1px;
+    border-style: solid;
+    -moz-border-radius: 0;
+    -webkit-border-radius: 0;
+    -o-border-radius: 0;
+    -ms-border-radius: 0;
+    -khtml-border-radius: 0;
+    border-radius: 0;
+    overflow: hidden;
+    height: 20px; }
+  /* line 17, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-reset .x-progress-bar {
+    height: 18px;
+    overflow: hidden;
+    position: absolute;
+    width: 0;
+    -moz-border-radius: 0;
+    -webkit-border-radius: 0;
+    -o-border-radius: 0;
+    -ms-border-radius: 0;
+    -khtml-border-radius: 0;
+    border-radius: 0;
+    border-right: 1px solid;
+    border-top: 1px solid; }
+  /* line 30, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-reset .x-progress-text {
+    overflow: hidden;
+    position: absolute;
+    padding: 0 5px;
+    height: 18px;
+    font-weight: bold;
+    font-size: 11px;
+    line-height: 16px;
+    text-align: center; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-reset .x-progress-text-back {
+    padding-top: 1px; }
+  /* line 50, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-reset .x-strict .x-ie7m .x-progress {
+    height: 18px; }
+  /* line 93, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-reset .x-progress-default {
+    border-color: #6594cf; }
+    /* line 96, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+    .x-reset .x-progress-default .x-progress-bar {
+      border-right-color: #6594cf;
+      border-top-color: #c6d8ed;
+      background-image: none;
+      background-color: #73a3e0;
+      background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b2ccee), color-stop(50%, #88b1e5), color-stop(51%, #73a3e0), color-stop(100%, #5e96db));
+      background-image: -webkit-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+      background-image: -moz-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+      background-image: -o-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+      background-image: -ms-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+      background-image: linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db); }
+    /* line 103, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+    .x-reset .x-progress-default .x-progress-text {
+      color: white; }
+    /* line 107, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+    .x-reset .x-progress-default .x-progress-text-back {
+      color: #396295; }
+  /* line 116, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-reset .x-nlg .x-progress-default .x-progress-bar {
+    background: repeat-x;
+    background-image: url('../../resources/themes/images/default/progress/progress-default-bg.gif'); }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-toolbar {
+    font-size: 11px;
+    border: 1px solid;
+    padding: 2px 0 2px 2px; }
+    /* line 13, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar .x-form-item-label {
+      font-size: 11px;
+      line-height: 15px; }
+    /* line 18, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar .x-toolbar-item {
+      margin: 0 2px 0 0; }
+    /* line 22, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar .x-toolbar-text {
+      margin-left: 4px;
+      margin-right: 6px;
+      white-space: nowrap;
+      color: #4c4c4c;
+      line-height: 16px;
+      font-family: tahoma, arial, verdana, sans-serif;
+      font-size: 11px;
+      font-weight: normal; }
+    /* line 33, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar .x-toolbar-separator {
+      display: block;
+      font-size: 1px;
+      overflow: hidden;
+      cursor: default;
+      border: 0; }
+    /* line 41, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar .x-toolbar-separator-horizontal {
+      margin: 0 3px 0 2px;
+      height: 14px;
+      width: 0px;
+      border-left: 1px solid #98c8ff;
+      border-right: 1px solid white; }
+  /* line 53, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal {
+    width: 2px; }
+  /* line 58, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-toolbar-footer {
+    background: transparent;
+    border: 0px none;
+    margin-top: 3px;
+    padding: 2px 0 2px 6px; }
+    /* line 65, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar-footer .x-box-inner {
+      border-width: 0; }
+    /* line 69, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar-footer .x-toolbar-item {
+      margin: 0 6px 0 0; }
+  /* line 74, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-toolbar-vertical {
+    padding: 2px 2px 0 2px; }
+    /* line 77, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar-vertical .x-toolbar-item {
+      margin: 0 0 2px 0; }
+    /* line 81, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar-vertical .x-toolbar-text {
+      margin-top: 4px;
+      margin-bottom: 6px; }
+    /* line 86, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar-vertical .x-toolbar-separator-vertical {
+      margin: 2px 5px 3px 5px;
+      height: 0px;
+      width: 10px;
+      line-height: 0px;
+      border-top: 1px solid #98c8ff;
+      border-bottom: 1px solid white; }
+  /* line 98, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-toolbar-scroller {
+    padding-left: 0; }
+  /* line 102, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-toolbar-spacer {
+    width: 2px; }
+  /* line 107, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-toolbar-more-icon {
+    background-image: url('../../resources/themes/images/default/toolbar/more.gif') !important;
+    background-position: 2px center !important;
+    background-repeat: no-repeat; }
+  /* line 144, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-toolbar-default {
+    border-color: #99bce8;
+    background-image: none;
+    background-color: #d3e1f1;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dfe9f5), color-stop(100%, #d3e1f1));
+    background-image: -webkit-linear-gradient(top, #dfe9f5, #d3e1f1);
+    background-image: -moz-linear-gradient(top, #dfe9f5, #d3e1f1);
+    background-image: -o-linear-gradient(top, #dfe9f5, #d3e1f1);
+    background-image: -ms-linear-gradient(top, #dfe9f5, #d3e1f1);
+    background-image: linear-gradient(top, #dfe9f5, #d3e1f1); }
+  /* line 155, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-nlg .x-toolbar-default {
+    background-image: url('../../resources/themes/images/default/toolbar/toolbar-default-bg.gif') !important;
+    background-repeat: repeat-x; }
+  /* line 123, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-toolbar-plain {
+    border: 0; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window {
+    outline: none;
+    overflow: hidden; }
+    /* line 10, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+    .x-reset .x-window .x-window-wrap {
+      position: relative; }
+  /* line 15, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-body {
+    position: relative;
+    border-style: solid;
+    overflow: hidden; }
+  /* line 24, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-maximized .x-window-wrap .x-window-header {
+    -moz-border-radius: 0 !important;
+    -webkit-border-radius: 0 !important;
+    -o-border-radius: 0 !important;
+    -ms-border-radius: 0 !important;
+    -khtml-border-radius: 0 !important;
+    border-radius: 0 !important; }
+  /* line 30, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-top {
+    margin-bottom: -2px; }
+  /* line 33, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-body-horizontal {
+    margin-top: -1px; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-bottom {
+    margin-top: -1px;
+    margin-bottom: -1px; }
+  /* line 42, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-left {
+    margin-right: -1px; }
+  /* line 46, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-right {
+    margin-left: -1px; }
+  /* line 51, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-vertical .x-surface {
+    padding-left: 1px; }
+  /* line 58, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-collapsed .x-window-header-vertical {
+    -moz-border-radius: 5px;
+    -webkit-border-radius: 5px;
+    -o-border-radius: 5px;
+    -ms-border-radius: 5px;
+    -khtml-border-radius: 5px;
+    border-radius: 5px; }
+  /* line 61, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-collapsed .x-window-header-horizontal {
+    -moz-border-radius: 5px;
+    -webkit-border-radius: 5px;
+    -o-border-radius: 5px;
+    -ms-border-radius: 5px;
+    -khtml-border-radius: 5px;
+    border-radius: 5px; }
+  /* line 66, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-collapsed .x-window-header-left {
+    padding-right: 5px !important;
+    margin-right: 0; }
+  /* line 71, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-collapsed .x-window-header-right {
+    padding-left: 5px !important;
+    margin-left: 0; }
+  /* line 76, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-collapsed .x-window-header-top {
+    padding-bottom: 5px !important;
+    margin-bottom: -1px; }
+  /* line 81, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-collapsed .x-window-header-bottom {
+    padding-top: 5px !important;
+    margin-top: 0; }
+  /* line 89, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-left .x-vml-base,
+  .x-reset .x-window-header-right .x-vml-base {
+    left: -3px !important; }
+  /* line 97, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-opera .x-window-header-vertical .x-surface,
+  .x-reset .x-strict .x-ie9 .x-window-header-vertical .x-surface {
+    padding-left: 2px; }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-text-container {
+    overflow: hidden;
+    -o-text-overflow: ellipsis;
+    text-overflow: ellipsis; }
+  /* line 109, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-text {
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default;
+    white-space: nowrap; }
+  /* line 159, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-default {
+    border-color: #a2b1c5;
+    -moz-border-radius: 5px 5px;
+    -webkit-border-radius: 5px 5px;
+    -o-border-radius: 5px 5px;
+    -ms-border-radius: 5px 5px;
+    -khtml-border-radius: 5px 5px;
+    border-radius: 5px 5px;
+    -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-default {
+    -moz-border-radius-topleft: 5px;
+    -webkit-border-top-left-radius: 5px;
+    -o-border-top-left-radius: 5px;
+    -ms-border-top-left-radius: 5px;
+    -khtml-border-top-left-radius: 5px;
+    border-top-left-radius: 5px;
+    -moz-border-radius-topright: 5px;
+    -webkit-border-top-right-radius: 5px;
+    -o-border-top-right-radius: 5px;
+    -ms-border-top-right-radius: 5px;
+    -khtml-border-top-right-radius: 5px;
+    border-top-right-radius: 5px;
+    -moz-border-radius-bottomright: 5px;
+    -webkit-border-bottom-right-radius: 5px;
+    -o-border-bottom-right-radius: 5px;
+    -ms-border-bottom-right-radius: 5px;
+    -khtml-border-bottom-right-radius: 5px;
+    border-bottom-right-radius: 5px;
+    -moz-border-radius-bottomleft: 5px;
+    -webkit-border-bottom-left-radius: 5px;
+    -o-border-bottom-left-radius: 5px;
+    -ms-border-bottom-left-radius: 5px;
+    -khtml-border-bottom-left-radius: 5px;
+    border-bottom-left-radius: 5px;
+    padding: 4px 4px 4px 4px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-default-mc {
+    background-color: #ced9e7; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-default {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000505px 1000505px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-default-tl,
+  .x-reset .x-nbr .x-window-default-bl,
+  .x-reset .x-nbr .x-window-default-tr,
+  .x-reset .x-nbr .x-window-default-br,
+  .x-reset .x-nbr .x-window-default-tc,
+  .x-reset .x-nbr .x-window-default-bc,
+  .x-reset .x-nbr .x-window-default-ml,
+  .x-reset .x-nbr .x-window-default-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window/window-default-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-default-ml,
+  .x-reset .x-nbr .x-window-default-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window/window-default-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-default-mc {
+    padding: 0px 0px 0px 0px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-window-default-tl,
+  .x-reset .x-strict .x-ie7 .x-window-default-bl {
+    position: relative;
+    right: 0; }
+  /* line 178, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-body-default {
+    border-color: #99bbe8;
+    border-width: 1px;
+    background: #dfe8f6;
+    color: black; }
+  /* line 188, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-default {
+    font-size: 11px;
+    border-color: #a2b1c5;
+    zoom: 1; }
+  /* line 194, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-text-default {
+    color: #04468c;
+    font-weight: bold;
+    line-height: 17px;
+    font-family: tahoma, arial, verdana, sans-serif;
+    font-size: 11px; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-header-default-top {
+    -moz-border-radius-topleft: 5px;
+    -webkit-border-top-left-radius: 5px;
+    -o-border-top-left-radius: 5px;
+    -ms-border-top-left-radius: 5px;
+    -khtml-border-top-left-radius: 5px;
+    border-top-left-radius: 5px;
+    -moz-border-radius-topright: 5px;
+    -webkit-border-top-right-radius: 5px;
+    -o-border-top-right-radius: 5px;
+    -ms-border-top-right-radius: 5px;
+    -khtml-border-top-right-radius: 5px;
+    border-top-right-radius: 5px;
+    -moz-border-radius-bottomright: 0;
+    -webkit-border-bottom-right-radius: 0;
+    -o-border-bottom-right-radius: 0;
+    -ms-border-bottom-right-radius: 0;
+    -khtml-border-bottom-right-radius: 0;
+    border-bottom-right-radius: 0;
+    -moz-border-radius-bottomleft: 0;
+    -webkit-border-bottom-left-radius: 0;
+    -o-border-bottom-left-radius: 0;
+    -ms-border-bottom-left-radius: 0;
+    -khtml-border-bottom-left-radius: 0;
+    border-bottom-left-radius: 0;
+    padding: 4px 5px 0 5px;
+    border-width: 1px 1px 0 1px;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-header-default-top-mc {
+    background-color: #ced9e7; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-top {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000505px 1000000px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-top-tl,
+  .x-reset .x-nbr .x-window-header-default-top-bl,
+  .x-reset .x-nbr .x-window-header-default-top-tr,
+  .x-reset .x-nbr .x-window-header-default-top-br,
+  .x-reset .x-nbr .x-window-header-default-top-tc,
+  .x-reset .x-nbr .x-window-header-default-top-bc,
+  .x-reset .x-nbr .x-window-header-default-top-ml,
+  .x-reset .x-nbr .x-window-header-default-top-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-top-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-top-ml,
+  .x-reset .x-nbr .x-window-header-default-top-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-top-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-top-mc {
+    padding: 0px 1px 0 1px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-window-header-default-top-tl,
+  .x-reset .x-strict .x-ie7 .x-window-header-default-top-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-header-default-right {
+    -moz-border-radius-topleft: 0;
+    -webkit-border-top-left-radius: 0;
+    -o-border-top-left-radius: 0;
+    -ms-border-top-left-radius: 0;
+    -khtml-border-top-left-radius: 0;
+    border-top-left-radius: 0;
+    -moz-border-radius-topright: 5px;
+    -webkit-border-top-right-radius: 5px;
+    -o-border-top-right-radius: 5px;
+    -ms-border-top-right-radius: 5px;
+    -khtml-border-top-right-radius: 5px;
+    border-top-right-radius: 5px;
+    -moz-border-radius-bottomright: 5px;
+    -webkit-border-bottom-right-radius: 5px;
+    -o-border-bottom-right-radius: 5px;
+    -ms-border-bottom-right-radius: 5px;
+    -khtml-border-bottom-right-radius: 5px;
+    border-bottom-right-radius: 5px;
+    -moz-border-radius-bottomleft: 0;
+    -webkit-border-bottom-left-radius: 0;
+    -o-border-bottom-left-radius: 0;
+    -ms-border-bottom-left-radius: 0;
+    -khtml-border-bottom-left-radius: 0;
+    border-bottom-left-radius: 0;
+    padding: 5px 4px 5px 0;
+    border-width: 1px 1px 1px 0;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-header-default-right-mc {
+    background-color: #ced9e7; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-right {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000005px 1000500px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-right-tl,
+  .x-reset .x-nbr .x-window-header-default-right-bl,
+  .x-reset .x-nbr .x-window-header-default-right-tr,
+  .x-reset .x-nbr .x-window-header-default-right-br,
+  .x-reset .x-nbr .x-window-header-default-right-tc,
+  .x-reset .x-nbr .x-window-header-default-right-bc,
+  .x-reset .x-nbr .x-window-header-default-right-ml,
+  .x-reset .x-nbr .x-window-header-default-right-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-right-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-right-ml,
+  .x-reset .x-nbr .x-window-header-default-right-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-right-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-right-mc {
+    padding: 1px 0px 1px 0; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-window-header-default-right-tl,
+  .x-reset .x-strict .x-ie7 .x-window-header-default-right-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-header-default-bottom {
+    -moz-border-radius-topleft: 0;
+    -webkit-border-top-left-radius: 0;
+    -o-border-top-left-radius: 0;
+    -ms-border-top-left-radius: 0;
+    -khtml-border-top-left-radius: 0;
+    border-top-left-radius: 0;
+    -moz-border-radius-topright: 0;
+    -webkit-border-top-right-radius: 0;
+    -o-border-top-right-radius: 0;
+    -ms-border-top-right-radius: 0;
+    -khtml-border-top-right-radius: 0;
+    border-top-right-radius: 0;
+    -moz-border-radius-bottomright: 5px;
+    -webkit-border-bottom-right-radius: 5px;
+    -o-border-bottom-right-radius: 5px;
+    -ms-border-bottom-right-radius: 5px;
+    -khtml-border-bottom-right-radius: 5px;
+    border-bottom-right-radius: 5px;
+    -moz-border-radius-bottomleft: 5px;
+    -webkit-border-bottom-left-radius: 5px;
+    -o-border-bottom-left-radius: 5px;
+    -ms-border-bottom-left-radius: 5px;
+    -khtml-border-bottom-left-radius: 5px;
+    border-bottom-left-radius: 5px;
+    padding: 0 5px 4px 5px;
+    border-width: 0 1px 1px 1px;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-header-default-bottom-mc {
+    background-color: #ced9e7; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-bottom {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000000px 1000505px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-bottom-tl,
+  .x-reset .x-nbr .x-window-header-default-bottom-bl,
+  .x-reset .x-nbr .x-window-header-default-bottom-tr,
+  .x-reset .x-nbr .x-window-header-default-bottom-br,
+  .x-reset .x-nbr .x-window-header-default-bottom-tc,
+  .x-reset .x-nbr .x-window-header-default-bottom-bc,
+  .x-reset .x-nbr .x-window-header-default-bottom-ml,
+  .x-reset .x-nbr .x-window-header-default-bottom-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-bottom-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-bottom-ml,
+  .x-reset .x-nbr .x-window-header-default-bottom-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-bottom-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-bottom-mc {
+    padding: 0 1px 0px 1px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-window-header-default-bottom-tl,
+  .x-reset .x-strict .x-ie7 .x-window-header-default-bottom-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-header-default-left {
+    -moz-border-radius-topleft: 5px;
+    -webkit-border-top-left-radius: 5px;
+    -o-border-top-left-radius: 5px;
+    -ms-border-top-left-radius: 5px;
+    -khtml-border-top-left-radius: 5px;
+    border-top-left-radius: 5px;
+    -moz-border-radius-topright: 0;
+    -webkit-border-top-right-radius: 0;
+    -o-border-top-right-radius: 0;
+    -ms-border-top-right-radius: 0;
+    -khtml-border-top-right-radius: 0;
+    border-top-right-radius: 0;
+    -moz-border-radius-bottomright: 0;
+    -webkit-border-bottom-right-radius: 0;
+    -o-border-bottom-right-radius: 0;
+    -ms-border-bottom-right-radius: 0;
+    -khtml-border-bottom-right-radius: 0;
+    border-bottom-right-radius: 0;
+    -moz-border-radius-bottomleft: 5px;
+    -webkit-border-bottom-left-radius: 5px;
+    -o-border-bottom-left-radius: 5px;
+    -ms-border-bottom-left-radius: 5px;
+    -khtml-border-bottom-left-radius: 5px;
+    border-bottom-left-radius: 5px;
+    padding: 5px 0px 5px 4px;
+    border-width: 1px 0 1px 1px;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-header-default-left-mc {
+    background-color: #ced9e7; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-left {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000500px 1000005px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-left-tl,
+  .x-reset .x-nbr .x-window-header-default-left-bl,
+  .x-reset .x-nbr .x-window-header-default-left-tr,
+  .x-reset .x-nbr .x-window-header-default-left-br,
+  .x-reset .x-nbr .x-window-header-default-left-tc,
+  .x-reset .x-nbr .x-window-header-default-left-bc,
+  .x-reset .x-nbr .x-window-header-default-left-ml,
+  .x-reset .x-nbr .x-window-header-default-left-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-left-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-left-ml,
+  .x-reset .x-nbr .x-window-header-default-left-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-left-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-left-mc {
+    padding: 1px 0px 1px 0px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-window-header-default-left-tl,
+  .x-reset .x-strict .x-ie7 .x-window-header-default-left-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-header-default-collapsed-top {
+    -moz-border-radius-topleft: 5px;
+    -webkit-border-top-left-radius: 5px;
+    -o-border-top-left-radius: 5px;
+    -ms-border-top-left-radius: 5px;
+    -khtml-border-top-left-radius: 5px;
+    border-top-left-radius: 5px;
+    -moz-border-radius-topright: 5px;
+    -webkit-border-top-right-radius: 5px;
+    -o-border-top-right-radius: 5px;
+    -ms-border-top-right-radius: 5px;
+    -khtml-border-top-right-radius: 5px;
+    border-top-right-radius: 5px;
+    -moz-border-radius-bottomright: 5px;
+    -webkit-border-bottom-right-radius: 5px;
+    -o-border-bottom-right-radius: 5px;
+    -ms-border-bottom-right-radius: 5px;
+    -khtml-border-bottom-right-radius: 5px;
+    border-bottom-right-radius: 5px;
+    -moz-border-radius-bottomleft: 5px;
+    -webkit-border-bottom-left-radius: 5px;
+    -o-border-bottom-left-radius: 5px;
+    -ms-border-bottom-left-radius: 5px;
+    -khtml-border-bottom-left-radius: 5px;
+    border-bottom-left-radius: 5px;
+    padding: 4px 5px 4px 5px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-header-default-collapsed-top-mc {
+    background-color: #ced9e7; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-top {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000505px 1000505px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-top-tl,
+  .x-reset .x-nbr .x-window-header-default-collapsed-top-bl,
+  .x-reset .x-nbr .x-window-header-default-collapsed-top-tr,
+  .x-reset .x-nbr .x-window-header-default-collapsed-top-br,
+  .x-reset .x-nbr .x-window-header-default-collapsed-top-tc,
+  .x-reset .x-nbr .x-window-header-default-collapsed-top-bc,
+  .x-reset .x-nbr .x-window-header-default-collapsed-top-ml,
+  .x-reset .x-nbr .x-window-header-default-collapsed-top-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-top-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-top-ml,
+  .x-reset .x-nbr .x-window-header-default-collapsed-top-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-top-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-top-mc {
+    padding: 0px 1px 0px 1px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,
+  .x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-top-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-header-default-collapsed-right {
+    -moz-border-radius-topleft: 5px;
+    -webkit-border-top-left-radius: 5px;
+    -o-border-top-left-radius: 5px;
+    -ms-border-top-left-radius: 5px;
+    -khtml-border-top-left-radius: 5px;
+    border-top-left-radius: 5px;
+    -moz-border-radius-topright: 5px;
+    -webkit-border-top-right-radius: 5px;
+    -o-border-top-right-radius: 5px;
+    -ms-border-top-right-radius: 5px;
+    -khtml-border-top-right-radius: 5px;
+    border-top-right-radius: 5px;
+    -moz-border-radius-bottomright: 5px;
+    -webkit-border-bottom-right-radius: 5px;
+    -o-border-bottom-right-radius: 5px;
+    -ms-border-bottom-right-radius: 5px;
+    -khtml-border-bottom-right-radius: 5px;
+    border-bottom-right-radius: 5px;
+    -moz-border-radius-bottomleft: 5px;
+    -webkit-border-bottom-left-radius: 5px;
+    -o-border-bottom-left-radius: 5px;
+    -ms-border-bottom-left-radius: 5px;
+    -khtml-border-bottom-left-radius: 5px;
+    border-bottom-left-radius: 5px;
+    padding: 5px 4px 5px 4px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-header-default-collapsed-right-mc {
+    background-color: #ced9e7; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-right {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000505px 1000505px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-right-tl,
+  .x-reset .x-nbr .x-window-header-default-collapsed-right-bl,
+  .x-reset .x-nbr .x-window-header-default-collapsed-right-tr,
+  .x-reset .x-nbr .x-window-header-default-collapsed-right-br,
+  .x-reset .x-nbr .x-window-header-default-collapsed-right-tc,
+  .x-reset .x-nbr .x-window-header-default-collapsed-right-bc,
+  .x-reset .x-nbr .x-window-header-default-collapsed-right-ml,
+  .x-reset .x-nbr .x-window-header-default-collapsed-right-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-right-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-right-ml,
+  .x-reset .x-nbr .x-window-header-default-collapsed-right-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-right-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-right-mc {
+    padding: 1px 0px 1px 0px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,
+  .x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-right-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-header-default-collapsed-bottom {
+    -moz-border-radius-topleft: 5px;
+    -webkit-border-top-left-radius: 5px;
+    -o-border-top-left-radius: 5px;
+    -ms-border-top-left-radius: 5px;
+    -khtml-border-top-left-radius: 5px;
+    border-top-left-radius: 5px;
+    -moz-border-radius-topright: 5px;
+    -webkit-border-top-right-radius: 5px;
+    -o-border-top-right-radius: 5px;
+    -ms-border-top-right-radius: 5px;
+    -khtml-border-top-right-radius: 5px;
+    border-top-right-radius: 5px;
+    -moz-border-radius-bottomright: 5px;
+    -webkit-border-bottom-right-radius: 5px;
+    -o-border-bottom-right-radius: 5px;
+    -ms-border-bottom-right-radius: 5px;
+    -khtml-border-bottom-right-radius: 5px;
+    border-bottom-right-radius: 5px;
+    -moz-border-radius-bottomleft: 5px;
+    -webkit-border-bottom-left-radius: 5px;
+    -o-border-bottom-left-radius: 5px;
+    -ms-border-bottom-left-radius: 5px;
+    -khtml-border-bottom-left-radius: 5px;
+    border-bottom-left-radius: 5px;
+    padding: 4px 5px 4px 5px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-header-default-collapsed-bottom-mc {
+    background-color: #ced9e7; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-bottom {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000505px 1000505px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-bottom-tl,
+  .x-reset .x-nbr .x-window-header-default-collapsed-bottom-bl,
+  .x-reset .x-nbr .x-window-header-default-collapsed-bottom-tr,
+  .x-reset .x-nbr .x-window-header-default-collapsed-bottom-br,
+  .x-reset .x-nbr .x-window-header-default-collapsed-bottom-tc,
+  .x-reset .x-nbr .x-window-header-default-collapsed-bottom-bc,
+  .x-reset .x-nbr .x-window-header-default-collapsed-bottom-ml,
+  .x-reset .x-nbr .x-window-header-default-collapsed-bottom-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-bottom-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-bottom-ml,
+  .x-reset .x-nbr .x-window-header-default-collapsed-bottom-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-bottom-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-bottom-mc {
+    padding: 0px 1px 0px 1px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,
+  .x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-header-default-collapsed-left {
+    -moz-border-radius-topleft: 5px;
+    -webkit-border-top-left-radius: 5px;
+    -o-border-top-left-radius: 5px;
+    -ms-border-top-left-radius: 5px;
+    -khtml-border-top-left-radius: 5px;
+    border-top-left-radius: 5px;
+    -moz-border-radius-topright: 5px;
+    -webkit-border-top-right-radius: 5px;
+    -o-border-top-right-radius: 5px;
+    -ms-border-top-right-radius: 5px;
+    -khtml-border-top-right-radius: 5px;
+    border-top-right-radius: 5px;
+    -moz-border-radius-bottomright: 5px;
+    -webkit-border-bottom-right-radius: 5px;
+    -o-border-bottom-right-radius: 5px;
+    -ms-border-bottom-right-radius: 5px;
+    -khtml-border-bottom-right-radius: 5px;
+    border-bottom-right-radius: 5px;
+    -moz-border-radius-bottomleft: 5px;
+    -webkit-border-bottom-left-radius: 5px;
+    -o-border-bottom-left-radius: 5px;
+    -ms-border-bottom-left-radius: 5px;
+    -khtml-border-bottom-left-radius: 5px;
+    border-bottom-left-radius: 5px;
+    padding: 5px 4px 5px 4px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-header-default-collapsed-left-mc {
+    background-color: #ced9e7; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-left {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000505px 1000505px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-left-tl,
+  .x-reset .x-nbr .x-window-header-default-collapsed-left-bl,
+  .x-reset .x-nbr .x-window-header-default-collapsed-left-tr,
+  .x-reset .x-nbr .x-window-header-default-collapsed-left-br,
+  .x-reset .x-nbr .x-window-header-default-collapsed-left-tc,
+  .x-reset .x-nbr .x-window-header-default-collapsed-left-bc,
+  .x-reset .x-nbr .x-window-header-default-collapsed-left-ml,
+  .x-reset .x-nbr .x-window-header-default-collapsed-left-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-left-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-left-ml,
+  .x-reset .x-nbr .x-window-header-default-collapsed-left-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-left-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-left-mc {
+    padding: 1px 0px 1px 0px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,
+  .x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-left-bl {
+    position: relative;
+    right: 0; }
+  /* line 217, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-default-top {
+    -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+  /* line 221, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-default-right {
+    -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+    -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+    -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+    box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset; }
+  /* line 225, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-default-bottom {
+    -moz-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    -webkit-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    -o-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+  /* line 229, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-default-left {
+    -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+  /* line 130, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-body-plain {
+    background: transparent; }
+  /* line 2, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box .x-window-body {
+    background-color: #ced9e7;
+    border: none; }
+  /* line 7, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box .x-progress-wrap {
+    margin-top: 4px; }
+  /* line 11, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box-icon {
+    width: 47px;
+    height: 32px; }
+  /* line 19, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box-info,
+  .x-reset .x-message-box-warning,
+  .x-reset .x-message-box-question,
+  .x-reset .x-message-box-error {
+    background: transparent no-repeat top left; }
+  /* line 23, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box .x-msg-box-wait {
+    background-image: url('../../resources/themes/images/default/shared/blue-loading.gif'); }
+  /* line 27, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box-info {
+    background-image: url('../../resources/themes/images/default/shared/icon-info.gif'); }
+  /* line 31, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box-warning {
+    background-image: url('../../resources/themes/images/default/shared/icon-warning.gif'); }
+  /* line 35, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box-question {
+    background-image: url('../../resources/themes/images/default/shared/icon-question.gif'); }
+  /* line 39, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box-error {
+    background-image: url('../../resources/themes/images/default/shared/icon-error.gif'); }
+  /* line 73, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar {
+    position: relative;
+    background-color: transparent;
+    background-image: none;
+    background-color: #cbdbef;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef));
+    background-image: -webkit-linear-gradient(top, #dde8f5, #cbdbef);
+    background-image: -moz-linear-gradient(top, #dde8f5, #cbdbef);
+    background-image: -o-linear-gradient(top, #dde8f5, #cbdbef);
+    background-image: -ms-linear-gradient(top, #dde8f5, #cbdbef);
+    background-image: linear-gradient(top, #dde8f5, #cbdbef);
+    font-size: 11px; }
+  /* line 80, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-nlg .x-tab-bar {
+    background-image: url('../../resources/themes/images/default/tab-bar/tab-bar-default-bg.gif'); }
+  /* line 85, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-default-plain,
+  .x-reset .x-nlg .x-tab-bar-default-plain {
+    background: transparent none; }
+  /* line 90, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-body {
+    border-style: solid;
+    border-color: #99bce8;
+    position: relative;
+    z-index: 2;
+    zoom: 1; }
+  /* line 4, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-top .x-tab-bar-body {
+    height: 20px;
+    border-width: 1px 1px 0;
+    padding: 1px 0 3px; }
+  /* line 10, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-top .x-tab-bar-strip {
+    /*position strip from top rather than bottom to avoid off-by-one error in IE6*/
+    top: 22px;
+    border-width: 1px 1px 0;
+    height: 2px; }
+  /* line 19, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-border-box .x-tab-bar-top .x-tab-bar-body {
+    height: 25px; }
+  /* line 23, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-border-box .x-tab-bar-top .x-tab-bar-strip {
+    height: 3px; }
+  /* line 4, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-top .x-tab-bar-body-default-plain {
+    height: 20px;
+    border-width: 0;
+    padding: 0 0 2px; }
+  /* line 10, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-top .x-tab-bar-strip-default-plain {
+    /*position strip from top rather than bottom to avoid off-by-one error in IE6*/
+    top: 20px;
+    border-width: 1px 1px 0 1px;
+    height: 2px; }
+  /* line 19, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-border-box .x-tab-bar-top .x-tab-bar-body-default-plain {
+    height: 22px; }
+  /* line 23, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-border-box .x-tab-bar-top .x-tab-bar-strip-default-plain {
+    height: 3px; }
+  /* line 32, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-bottom .x-tab-bar-body {
+    height: 20px;
+    border-width: 0 1px 1px;
+    padding: 3px 0 1px; }
+    /* line 37, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+    .x-reset .x-tab-bar-bottom .x-tab-bar-body .x-box-inner {
+      position: relative;
+      top: -1px; }
+    /* line 44, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+    .x-reset .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller,
+    .x-reset .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-left,
+    .x-reset .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-right {
+      height: 22px; }
+  /* line 49, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-bottom .x-tab-bar-strip {
+    top: 0;
+    border-width: 0 1px 1px 1px;
+    height: 2px; }
+  /* line 57, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-border-box .x-tab-bar-bottom .x-tab-bar-body {
+    height: 25px; }
+  /* line 61, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-border-box .x-tab-bar-bottom .x-tab-bar-strip {
+    height: 3px; }
+  /* line 32, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain {
+    height: 20px;
+    border-width: 0;
+    padding: 3px 0 0; }
+    /* line 37, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+    .x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-inner {
+      position: relative;
+      top: -1px; }
+    /* line 44, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+    .x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller,
+    .x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-left,
+    .x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-right {
+      height: 21px; }
+  /* line 49, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-bottom .x-tab-bar-strip-default-plain {
+    top: 0;
+    border-width: 0 1px 1px 1px;
+    height: 2px; }
+  /* line 57, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-border-box .x-tab-bar-bottom .x-tab-bar-body-default-plain {
+    height: 23px; }
+  /* line 61, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-border-box .x-tab-bar-bottom .x-tab-bar-strip-default-plain {
+    height: 3px; }
+  /* line 141, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-strip-default,
+  .x-reset .x-tab-bar-strip-default-plain {
+    font-size: 0;
+    line-height: 0;
+    position: absolute;
+    z-index: 1;
+    border-style: solid;
+    overflow: hidden;
+    border-color: #99bce8;
+    background-color: #deecfd;
+    zoom: 1; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-tab-default-top {
+    -moz-border-radius-topleft: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -o-border-top-left-radius: 4px;
+    -ms-border-top-left-radius: 4px;
+    -khtml-border-top-left-radius: 4px;
+    border-top-left-radius: 4px;
+    -moz-border-radius-topright: 4px;
+    -webkit-border-top-right-radius: 4px;
+    -o-border-top-right-radius: 4px;
+    -ms-border-top-right-radius: 4px;
+    -khtml-border-top-right-radius: 4px;
+    border-top-right-radius: 4px;
+    -moz-border-radius-bottomright: 0;
+    -webkit-border-bottom-right-radius: 0;
+    -o-border-bottom-right-radius: 0;
+    -ms-border-bottom-right-radius: 0;
+    -khtml-border-bottom-right-radius: 0;
+    border-bottom-right-radius: 0;
+    -moz-border-radius-bottomleft: 0;
+    -webkit-border-bottom-left-radius: 0;
+    -o-border-bottom-left-radius: 0;
+    -ms-border-bottom-left-radius: 0;
+    -khtml-border-bottom-left-radius: 0;
+    border-bottom-left-radius: 0;
+    padding: 3px 3px 0 3px;
+    border-width: 1px 1px 0 1px;
+    border-style: solid;
+    background-image: none;
+    background-color: #deecfd;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+    background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+    background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+    background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+    background-image: -ms-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+    background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-tab-default-top-mc {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-bg.gif');
+    background-color: #deecfd; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-tab-default-top {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1100404px 1000000px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-tab-default-top-tl,
+  .x-reset .x-nbr .x-tab-default-top-bl,
+  .x-reset .x-nbr .x-tab-default-top-tr,
+  .x-reset .x-nbr .x-tab-default-top-br,
+  .x-reset .x-nbr .x-tab-default-top-tc,
+  .x-reset .x-nbr .x-tab-default-top-bc,
+  .x-reset .x-nbr .x-tab-default-top-ml,
+  .x-reset .x-nbr .x-tab-default-top-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-tab-default-top-ml,
+  .x-reset .x-nbr .x-tab-default-top-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-sides.gif');
+    background-position: 0 0; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-tab-default-top-mc {
+    padding: 0px 0px 0 0px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-tab-default-top-tl,
+  .x-reset .x-strict .x-ie7 .x-tab-default-top-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-tab-default-bottom {
+    -moz-border-radius-topleft: 0;
+    -webkit-border-top-left-radius: 0;
+    -o-border-top-left-radius: 0;
+    -ms-border-top-left-radius: 0;
+    -khtml-border-top-left-radius: 0;
+    border-top-left-radius: 0;
+    -moz-border-radius-topright: 0;
+    -webkit-border-top-right-radius: 0;
+    -o-border-top-right-radius: 0;
+    -ms-border-top-right-radius: 0;
+    -khtml-border-top-right-radius: 0;
+    border-top-right-radius: 0;
+    -moz-border-radius-bottomright: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -o-border-bottom-right-radius: 4px;
+    -ms-border-bottom-right-radius: 4px;
+    -khtml-border-bottom-right-radius: 4px;
+    border-bottom-right-radius: 4px;
+    -moz-border-radius-bottomleft: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -o-border-bottom-left-radius: 4px;
+    -ms-border-bottom-left-radius: 4px;
+    -khtml-border-bottom-left-radius: 4px;
+    border-bottom-left-radius: 4px;
+    padding: 0 3px 3px 3px;
+    border-width: 0 1px 1px 1px;
+    border-style: solid;
+    background-image: none;
+    background-color: #deecfd;
+    background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+    background-image: -webkit-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+    background-image: -moz-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+    background-image: -o-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+    background-image: -ms-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+    background-image: linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%); }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-tab-default-bottom-mc {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif');
+    background-color: #deecfd; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-tab-default-bottom {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1100000px 1000404px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-tab-default-bottom-tl,
+  .x-reset .x-nbr .x-tab-default-bottom-bl,
+  .x-reset .x-nbr .x-tab-default-bottom-tr,
+  .x-reset .x-nbr .x-tab-default-bottom-br,
+  .x-reset .x-nbr .x-tab-default-bottom-tc,
+  .x-reset .x-nbr .x-tab-default-bottom-bc,
+  .x-reset .x-nbr .x-tab-default-bottom-ml,
+  .x-reset .x-nbr .x-tab-default-bottom-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-tab-default-bottom-ml,
+  .x-reset .x-nbr .x-tab-default-bottom-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-sides.gif');
+    background-position: 0 0; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-tab-default-bottom-mc {
+    padding: 0 0px 0px 0px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-tab-default-bottom-tl,
+  .x-reset .x-strict .x-ie7 .x-tab-default-bottom-bl {
+    position: relative;
+    right: 0; }
+  /* line 28, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab {
+    z-index: 1;
+    margin: 0 0 0 2px;
+    display: inline-block;
+    zoom: 1;
+    *display: inline;
+    white-space: nowrap;
+    height: 20px;
+    border-color: #8db3e3;
+    cursor: pointer;
+    cursor: hand; }
+    /* line 40, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab button {
+      cursor: pointer;
+      cursor: hand; }
+    /* line 45, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab em {
+      display: block;
+      padding: 0 6px;
+      line-height: 1px; }
+    /* line 51, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab button {
+      background: none;
+      border: 0;
+      padding: 0;
+      margin: 0;
+      -webkit-appearance: none;
+      font-size: 11px;
+      font-weight: bold;
+      font-family: tahoma, arial, verdana, sans-serif;
+      color: #416da3;
+      outline: 0 none;
+      overflow-x: visible; }
+      /* line 69, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+      .x-reset .x-tab button::-moz-focus-inner {
+        border: 0;
+        padding: 0; }
+      /* line 74, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+      .x-reset .x-tab button .x-tab-inner {
+        background-color: transparent;
+        background-repeat: no-repeat;
+        background-position: 0 -2px;
+        display: block;
+        text-align: center;
+        white-space: nowrap;
+        text-overflow: ellipsis;
+        -o-text-overflow: ellipsis;
+        overflow: hidden; }
+    /* line 87, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab img {
+      display: none; }
+  /* line 93, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-border-box .x-tab-default-top {
+    height: 21px; }
+  /* line 96, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-border-box .x-tab-default-bottom {
+    height: 21px; }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset * html .x-ie .x-tab button {
+    width: 1px; }
+  /* line 110, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-strict .x-ie6 .x-tab .x-frame-mc,
+  .x-reset .x-strict .x-ie7 .x-tab .x-frame-mc {
+    height: 100%; }
+  /* line 115, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-ie .x-tab-active button:active {
+    position: relative;
+    top: -1px;
+    left: -1px; }
+  /* line 124, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-default-top {
+    -moz-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    -webkit-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    -o-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    border-bottom: 1px solid #99bce8 !important; }
+    /* line 134, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab-default-top em {
+      padding-bottom: 3px; }
+    /* line 139, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab-default-top button,
+    .x-reset .x-tab-default-top .x-tab-inner {
+      height: 13px;
+      line-height: 13px; }
+  /* line 148, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-safari4 .x-tab-default-top .x-tab-inner,
+  .x-reset .x-safari5_0 .x-tab-default-top .x-tab-inner {
+    line-height: 11px; }
+  /* line 153, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-default-top {
+    border-bottom-width: 1px !important; }
+  /* line 157, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-default-top-active {
+    border-bottom-color: #deecfd !important; }
+  /* line 163, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-default-bottom {
+    -moz-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    -webkit-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    -o-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    border-top: 1px solid #99bce8 !important;
+    -moz-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    -webkit-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    -o-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset; }
+    /* line 178, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab-default-bottom em {
+      padding-top: 3px; }
+    /* line 183, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab-default-bottom button,
+    .x-reset .x-tab-default-bottom .x-tab-inner {
+      height: 13px;
+      line-height: 13px; }
+  /* line 189, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-default-bottom {
+    border-top-width: 1px !important; }
+  /* line 193, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-default-bottom-active {
+    border-top-color: #deecfd !important; }
+  /* line 197, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-default-disabled {
+    cursor: default;
+    border-color: #bbd2ef;
+    background-image: none;
+    background-color: #e1ecfa;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+    background-image: -webkit-linear-gradient(top, #e1ecfa, #ecf4fe);
+    background-image: -moz-linear-gradient(top, #e1ecfa, #ecf4fe);
+    background-image: -o-linear-gradient(top, #e1ecfa, #ecf4fe);
+    background-image: -ms-linear-gradient(top, #e1ecfa, #ecf4fe);
+    background-image: linear-gradient(top, #e1ecfa, #ecf4fe); }
+    /* line 203, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab-default-disabled button {
+      color: #c3b3b3 !important; }
+  /* line 209, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-icon-text-left .x-tab-inner {
+    padding-left: 20px; }
+  /* line 214, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab button {
+    position: relative; }
+  /* line 218, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-icon {
+    position: absolute;
+    background-repeat: no-repeat;
+    background-position: 0 -1px;
+    top: 0;
+    left: 0;
+    right: auto;
+    bottom: 0;
+    width: 18px;
+    height: 18px; }
+  /* line 233, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-strict .x-ie8 .x-tab button,
+  .x-reset .x-strict .x-ie9 .x-tab button {
+    overflow-y: visible; }
+  /* line 238, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-default-disabled .x-tab-icon {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5; }
+  /* line 243, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-noicon .x-tab-icon {
+    display: none; }
+  /* line 269, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-top-over {
+    background-image: none;
+    background-color: #e8f2ff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff));
+    background-image: -webkit-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+    background-image: -moz-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+    background-image: -o-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+    background-image: -ms-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+    background-image: linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%); }
+  /* line 272, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-bottom-over {
+    background-image: none;
+    background-color: #e8f2ff;
+    background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff));
+    background-image: -webkit-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+    background-image: -moz-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+    background-image: -o-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+    background-image: -ms-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+    background-image: linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%); }
+  /* line 277, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-active {
+    z-index: 3; }
+    /* line 283, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab-active button {
+      color: #15498b; }
+  /* line 299, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-top-active {
+    background-image: none;
+    background-color: #deecfd;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd));
+    background-image: -webkit-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+    background-image: -moz-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+    background-image: -o-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+    background-image: -ms-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+    background-image: linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%); }
+  /* line 302, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-bottom-active {
+    background-image: none;
+    background-color: #deecfd;
+    background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd));
+    background-image: -webkit-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+    background-image: -moz-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+    background-image: -o-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+    background-image: -ms-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+    background-image: linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%); }
+  /* line 307, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-disabled {
+    border-color: #bbd2ef; }
+    /* line 312, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab-disabled button {
+      color: #c3b3b3; }
+  /* line 328, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-top-disabled {
+    background-image: none;
+    background: transparent;
+    background-image: none;
+    background-color: #e1ecfa;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+    background-image: -webkit-linear-gradient(top, #e1ecfa, #ecf4fe);
+    background-image: -moz-linear-gradient(top, #e1ecfa, #ecf4fe);
+    background-image: -o-linear-gradient(top, #e1ecfa, #ecf4fe);
+    background-image: -ms-linear-gradient(top, #e1ecfa, #ecf4fe);
+    background-image: linear-gradient(top, #e1ecfa, #ecf4fe); }
+  /* line 333, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-bottom-disabled {
+    background-image: none;
+    background: transparent;
+    background-image: none;
+    background-color: #e1ecfa;
+    background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+    background-image: -webkit-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+    background-image: -moz-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+    background-image: -o-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+    background-image: -ms-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+    background-image: linear-gradient(bottom, #e1ecfa, #ecf4fe); }
+  /* line 342, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nlg .x-tab-top {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-bg.gif'); }
+  /* line 343, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nlg .x-tab-bottom {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif'); }
+  /* line 347, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nlg .x-tab-top-over {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-over-bg.gif'); }
+  /* line 348, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nlg .x-tab-bottom-over {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-over-bg.gif'); }
+  /* line 352, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nlg .x-tab-top-active {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-active-bg.gif'); }
+  /* line 353, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nlg .x-tab-bottom-active {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-active-bg.gif'); }
+  /* line 357, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nlg .x-tab-top-disabled {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-disabled-bg.gif') !important; }
+  /* line 358, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nlg .x-tab-bottom-disabled {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif') !important; }
+  /* line 363, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-closable em {
+    padding-right: 14px; }
+  /* line 367, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-close-btn {
+    position: absolute;
+    top: 2px;
+    right: 2px;
+    width: 11px;
+    height: 11px;
+    font-size: 0;
+    line-height: 0;
+    text-indent: -999px;
+    background: no-repeat;
+    background-image: url('../../resources/themes/images/default/tab/tab-default-close.gif');
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+    opacity: 0.6; }
+  /* line 381, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-close-btn {
+    top: 0px;
+    right: 0px; }
+  /* line 387, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset a.x-tab-close-btn:hover {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+    opacity: 1; }
+  /* line 392, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-default-disabled a.x-tab-close-btn {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+    opacity: 0.3; }
+  /* line 404, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-top-over .x-frame-tl,
+  .x-reset .x-nbr .x-tab-top-over .x-frame-bl,
+  .x-reset .x-nbr .x-tab-top-over .x-frame-tr,
+  .x-reset .x-nbr .x-tab-top-over .x-frame-br,
+  .x-reset .x-nbr .x-tab-top-over .x-frame-tc,
+  .x-reset .x-nbr .x-tab-top-over .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-over-corners.gif'); }
+  /* line 408, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-top-over .x-frame-ml,
+  .x-reset .x-nbr .x-tab-top-over .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-over-sides.gif'); }
+  /* line 412, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-top-over .x-frame-mc {
+    background-color: #e8f2ff;
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-over-bg.gif'); }
+  /* line 426, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-bottom-over .x-frame-tl,
+  .x-reset .x-nbr .x-tab-bottom-over .x-frame-bl,
+  .x-reset .x-nbr .x-tab-bottom-over .x-frame-tr,
+  .x-reset .x-nbr .x-tab-bottom-over .x-frame-br,
+  .x-reset .x-nbr .x-tab-bottom-over .x-frame-tc,
+  .x-reset .x-nbr .x-tab-bottom-over .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-over-corners.gif'); }
+  /* line 430, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-bottom-over .x-frame-ml,
+  .x-reset .x-nbr .x-tab-bottom-over .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-over-sides.gif'); }
+  /* line 434, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-bottom-over .x-frame-mc {
+    background-color: #e8f2ff;
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-over-bg.gif'); }
+  /* line 448, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-top-active .x-frame-tl,
+  .x-reset .x-nbr .x-tab-top-active .x-frame-bl,
+  .x-reset .x-nbr .x-tab-top-active .x-frame-tr,
+  .x-reset .x-nbr .x-tab-top-active .x-frame-br,
+  .x-reset .x-nbr .x-tab-top-active .x-frame-tc,
+  .x-reset .x-nbr .x-tab-top-active .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-active-corners.gif'); }
+  /* line 452, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-top-active .x-frame-ml,
+  .x-reset .x-nbr .x-tab-top-active .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-active-sides.gif'); }
+  /* line 456, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-top-active .x-frame-mc {
+    background-color: #deecfd;
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-active-bg.gif'); }
+  /* line 470, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-bottom-active .x-frame-tl,
+  .x-reset .x-nbr .x-tab-bottom-active .x-frame-bl,
+  .x-reset .x-nbr .x-tab-bottom-active .x-frame-tr,
+  .x-reset .x-nbr .x-tab-bottom-active .x-frame-br,
+  .x-reset .x-nbr .x-tab-bottom-active .x-frame-tc,
+  .x-reset .x-nbr .x-tab-bottom-active .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-active-corners.gif'); }
+  /* line 474, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-bottom-active .x-frame-ml,
+  .x-reset .x-nbr .x-tab-bottom-active .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-active-sides.gif'); }
+  /* line 478, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-bottom-active .x-frame-mc {
+    background-color: #deecfd;
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-active-bg.gif'); }
+  /* line 492, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-top-disabled .x-frame-tl,
+  .x-reset .x-nbr .x-tab-top-disabled .x-frame-bl,
+  .x-reset .x-nbr .x-tab-top-disabled .x-frame-tr,
+  .x-reset .x-nbr .x-tab-top-disabled .x-frame-br,
+  .x-reset .x-nbr .x-tab-top-disabled .x-frame-tc,
+  .x-reset .x-nbr .x-tab-top-disabled .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-disabled-corners.gif'); }
+  /* line 496, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-top-disabled .x-frame-ml,
+  .x-reset .x-nbr .x-tab-top-disabled .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-disabled-sides.gif'); }
+  /* line 500, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-top-disabled .x-frame-mc {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-disabled-bg.gif'); }
+  /* line 513, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-bottom-disabled .x-frame-tl,
+  .x-reset .x-nbr .x-tab-bottom-disabled .x-frame-bl,
+  .x-reset .x-nbr .x-tab-bottom-disabled .x-frame-tr,
+  .x-reset .x-nbr .x-tab-bottom-disabled .x-frame-br,
+  .x-reset .x-nbr .x-tab-bottom-disabled .x-frame-tc,
+  .x-reset .x-nbr .x-tab-bottom-disabled .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-corners.gif'); }
+  /* line 517, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-bottom-disabled .x-frame-ml,
+  .x-reset .x-nbr .x-tab-bottom-disabled .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-sides.gif'); }
+  /* line 521, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-bottom-disabled .x-frame-mc {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif'); }
+  /* line 9, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-autowidth-table table.x-grid-table {
+    table-layout: auto;
+    width: auto!important; }
+  /* line 14, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-no-lines .x-tree-elbow {
+    background-color: transparent; }
+  /* line 18, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-no-lines .x-tree-elbow-end {
+    background-color: transparent; }
+  /* line 22, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-no-lines .x-tree-elbow-line {
+    background-color: transparent; }
+  /* line 27, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-elbow-plus {
+    background: transparent no-repeat 0 0; }
+  /* line 31, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-elbow-end-plus {
+    background: transparent no-repeat 0 0; }
+  /* line 35, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-elbow-end-minus {
+    background: transparent no-repeat -16px 0; }
+  /* line 39, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-elbow-minus {
+    background: transparent no-repeat -16px 0; }
+  /* line 43, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-elbow {
+    background-color: transparent !important; }
+  /* line 47, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-elbow-end {
+    background-color: transparent !important; }
+  /* line 51, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-elbow-line {
+    background-color: transparent !important; }
+  /* line 57, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-expander-over .x-tree-elbow-plus,
+  .x-reset .x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-plus {
+    background-position: -32px 0; }
+  /* line 62, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-expander-over .x-tree-elbow-minus,
+  .x-reset .x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-minus {
+    background-position: -48px 0; }
+  /* line 67, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-plus,
+  .x-reset .x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+    background-position: -16px 0; }
+  /* line 72, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-plus,
+  .x-reset .x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-end-plus {
+    background-position: -48px 0; }
+  /* line 79, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-elbow-plus,
+  .x-reset .x-tree-elbow-minus,
+  .x-reset .x-tree-elbow-end-plus,
+  .x-reset .x-tree-elbow-end-minus {
+    cursor: pointer; }
+  /* line 85, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-lines .x-tree-elbow {
+    background-image: url('../../resources/themes/images/default/tree/elbow.gif'); }
+  /* line 89, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-lines .x-tree-elbow-end {
+    background-image: url('../../resources/themes/images/default/tree/elbow-end.gif'); }
+  /* line 93, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-lines .x-tree-elbow-plus {
+    background-image: url('../../resources/themes/images/default/tree/elbow-plus.gif'); }
+  /* line 97, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-lines .x-tree-elbow-end-plus {
+    background-image: url('../../resources/themes/images/default/tree/elbow-end-plus.gif'); }
+  /* line 101, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus {
+    background-image: url('../../resources/themes/images/default/tree/elbow-minus.gif'); }
+  /* line 105, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+    background-image: url('../../resources/themes/images/default/tree/elbow-end-minus.gif'); }
+  /* line 109, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-lines .x-tree-elbow-line {
+    background-image: url('../../resources/themes/images/default/tree/elbow-line.gif'); }
+  /* line 116, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-no-lines .x-tree-elbow-plus,
+  .x-reset .x-tree-no-lines .x-tree-elbow-end-plus {
+    background-image: url('../../resources/themes/images/default/tree/elbow-plus-nl.gif'); }
+  /* line 121, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-plus,
+  .x-reset .x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+    background-image: url('../../resources/themes/images/default/tree/elbow-end-minus-nl.gif'); }
+  /* line 130, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-elbow-plus,
+  .x-reset .x-tree-arrows .x-tree-elbow-minus,
+  .x-reset .x-tree-arrows .x-tree-elbow-end-plus,
+  .x-reset .x-tree-arrows .x-tree-elbow-end-minus {
+    background-image: url('../../resources/themes/images/default/tree/arrows.gif'); }
+  /* line 135, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-icon {
+    margin: 2px 3px 0 0; }
+  /* line 139, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-with-row-lines .x-tree-icon {
+    margin-top: 1px; }
+  /* line 148, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-elbow,
+  .x-reset .x-tree-elbow-end,
+  .x-reset .x-tree-elbow-plus,
+  .x-reset .x-tree-elbow-end-plus,
+  .x-reset .x-tree-elbow-empty,
+  .x-reset .x-tree-elbow-line {
+    height: 20px;
+    width: 16px; }
+  /* line 159, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-with-row-lines .x-tree-elbow,
+  .x-reset .x-grid-with-row-lines .x-tree-elbow-end,
+  .x-reset .x-grid-with-row-lines .x-tree-elbow-plus,
+  .x-reset .x-grid-with-row-lines .x-tree-elbow-end-plus,
+  .x-reset .x-grid-with-row-lines .x-tree-elbow-empty,
+  .x-reset .x-grid-with-row-lines .x-tree-elbow-line {
+    height: 19px;
+    background-position: 0 -1px; }
+  /* line 165, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-icon-leaf {
+    width: 16px;
+    background-image: url('../../resources/themes/images/default/tree/leaf.gif'); }
+  /* line 170, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-icon-parent {
+    width: 16px;
+    background-image: url('../../resources/themes/images/default/tree/folder.gif'); }
+  /* line 175, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-tree-node-expanded .x-tree-icon-parent {
+    background-image: url('../../resources/themes/images/default/tree/folder-open.gif'); }
+  /* line 179, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-rowbody {
+    padding: 0; }
+  /* line 183, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-cell-treecolumn .x-grid-cell-inner {
+    padding: 0;
+    line-height: 19px; }
+  /* line 188, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-with-row-lines .x-grid-cell-treecolumn .x-grid-cell-inner {
+    line-height: 17px; }
+  /* line 192, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-panel .x-grid-cell-inner {
+    cursor: pointer; }
+    /* line 194, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+    .x-reset .x-tree-panel .x-grid-cell-inner img {
+      display: inline-block;
+      vertical-align: top; }
+  /* line 207, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-ie .x-tree-panel .x-tree-elbow,
+  .x-reset .x-ie .x-tree-panel .x-tree-elbow-end,
+  .x-reset .x-ie .x-tree-panel .x-tree-elbow-plus,
+  .x-reset .x-ie .x-tree-panel .x-tree-elbow-end-plus,
+  .x-reset .x-ie .x-tree-panel .x-tree-elbow-empty,
+  .x-reset .x-ie .x-tree-panel .x-tree-elbow-line {
+    vertical-align: -6px; }
+  /* line 215, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-editor-on-text-node .x-form-text {
+    padding-left: 1px;
+    padding-right: 1px; }
+  /* line 222, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-ie .x-grid-editor-on-text-node .x-form-text {
+    padding-left: 2px;
+    padding-right: 2px; }
+  /* line 228, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-opera .x-grid-editor-on-text-node .x-form-text {
+    padding-left: 2px;
+    padding-right: 2px; }
+  /* line 234, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-checkbox {
+    margin: 4px 3px 0 0;
+    display: inline-block;
+    vertical-align: top;
+    width: 13px;
+    height: 13px;
+    background: no-repeat;
+    background-image: url('../../resources/themes/images/default/form/checkbox.gif');
+    overflow: hidden;
+    padding: 0;
+    border: 0; }
+    /* line 247, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+    .x-reset .x-tree-checkbox::-moz-focus-inner {
+      padding: 0;
+      border: 0; }
+  /* line 253, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-with-row-lines .x-tree-checkbox {
+    margin-top: 3px; }
+  /* line 257, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-checkbox-checked {
+    background-position: 0 -13px; }
+  /* line 261, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-drop-ok-append .x-dd-drop-icon {
+    background-image: url('../../resources/themes/images/default/tree/drop-append.gif'); }
+  /* line 265, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-drop-ok-above .x-dd-drop-icon {
+    background-image: url('../../resources/themes/images/default/tree/drop-above.gif'); }
+  /* line 269, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-drop-ok-below .x-dd-drop-icon {
+    background-image: url('../../resources/themes/images/default/tree/drop-below.gif'); }
+  /* line 273, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-drop-ok-between .x-dd-drop-icon {
+    background-image: url('../../resources/themes/images/default/tree/drop-between.gif'); }
+  /* line 277, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-tree-loading .x-tree-icon {
+    background-image: url('../../resources/themes/images/default/tree/loading.gif'); }
+  /* line 281, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-ddindicator {
+    height: 1px;
+    border-width: 1px 0px 0px;
+    border-style: dotted;
+    border-color: green; }
+  /* line 288, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-tree-loading span {
+    font-style: italic;
+    color: #444444; }
+  /* line 293, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-animator-wrap {
+    overflow: hidden; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset .x-surface {
+    display: -moz-inline-box;
+    -moz-box-orient: vertical;
+    display: inline-block;
+    vertical-align: middle;
+    *vertical-align: auto;
+    overflow: hidden; }
+    /* line 7, ../../../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.11.7/frameworks/compass/stylesheets/compass/css3/_inline-block.scss */
+    .x-reset .x-surface {
+      *display: inline; }
+  /* line 11, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset .rvml {
+    behavior: url(#default#VML); }
+  /* line 15, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset .x-surface tspan {
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default; }
+  /* line 19, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset .x-vml-sprite {
+    position: absolute;
+    left: 0;
+    top: 0;
+    width: 1px;
+    height: 1px; }
+  /* line 27, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset .x-vml-group {
+    position: absolute;
+    left: 0;
+    top: 0;
+    width: 1000px;
+    height: 1000px; }
+  /* line 35, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset .x-vml-measure-span {
+    position: absolute;
+    left: -9999em;
+    top: -9999em;
+    padding: 0;
+    margin: 0;
+    display: inline; }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset .x-vml-base {
+    position: relative;
+    top: 0;
+    left: 0;
+    overflow: hidden;
+    display: inline-block; }
+  /* line 52, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset .x-vml-base {
+    position: relative;
+    top: 0;
+    left: 0;
+    overflow: hidden;
+    display: inline-block; }
+  /* line 60, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset svg, .x-reset vml {
+    overflow: hidden; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_viewport.scss */
+  .x-reset .x-viewport, .x-reset .x-viewport body {
+    margin: 0;
+    padding: 0;
+    border: 0 none;
+    overflow: hidden;
+    height: 100%;
+    position: static; }
+  /* line 3, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-dd-drag-proxy {
+    z-index: 1000000!important; }
+  /* line 8, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-dd-drag-repair .x-dd-drag-ghost {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+    opacity: 0.6; }
+  /* line 12, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-dd-drag-repair .x-dd-drop-icon {
+    display: none; }
+  /* line 17, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-dd-drag-ghost {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
+    opacity: 0.85;
+    padding: 5px;
+    padding-left: 20px;
+    white-space: nowrap;
+    color: #000;
+    font: normal 11px tahoma, arial, verdana, sans-serif;
+    border: 1px solid;
+    border-color: #ddd #bbb #bbb #ddd;
+    background-color: #fff; }
+  /* line 34, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-dd-drop-icon {
+    position: absolute;
+    top: 3px;
+    left: 3px;
+    display: block;
+    width: 16px;
+    height: 16px;
+    background-color: transparent;
+    background-position: center;
+    background-repeat: no-repeat;
+    z-index: 1; }
+  /* line 51, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-view-selector {
+    position: absolute;
+    left: 0;
+    top: 0;
+    width: 0;
+    background-color: #c3daf9;
+    border: 1px dotted #3399bb;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5;
+    zoom: 1; }
+  /* line 66, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-dd-drop-nodrop .x-dd-drop-icon {
+    background-image: url('../../resources/themes/images/default/dd/drop-no.gif'); }
+  /* line 70, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-dd-drop-ok .x-dd-drop-icon {
+    background-image: url('../../resources/themes/images/default/dd/drop-yes.gif'); }
+  /* line 74, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-dd-drop-ok-add .x-dd-drop-icon {
+    background-image: url('../../resources/themes/images/default/dd/drop-add.gif'); }
+  /* line 2, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle {
+    position: absolute;
+    z-index: 100;
+    font-size: 1px;
+    line-height: 6px;
+    overflow: hidden;
+    zoom: 1;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+    opacity: 0;
+    background-color: #fff; }
+  /* line 14, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-collapsed .x-resizable-handle {
+    display: none; }
+  /* line 18, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle-east {
+    width: 6px;
+    height: 100%;
+    right: 0;
+    top: 0; }
+  /* line 27, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-east {
+    cursor: e-resize; }
+  /* line 32, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle-south {
+    width: 100%;
+    height: 6px;
+    left: 0;
+    bottom: 0; }
+  /* line 41, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-south {
+    cursor: s-resize; }
+  /* line 46, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle-west {
+    width: 6px;
+    height: 100%;
+    left: 0;
+    top: 0; }
+  /* line 55, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-west {
+    cursor: w-resize; }
+  /* line 60, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle-north {
+    width: 100%;
+    height: 6px;
+    left: 0;
+    top: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-north {
+    cursor: n-resize; }
+  /* line 74, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle-southeast {
+    width: 6px;
+    height: 6px;
+    right: 0;
+    bottom: 0;
+    z-index: 101; }
+  /* line 85, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-southeast {
+    cursor: se-resize; }
+  /* line 90, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle-northwest {
+    width: 6px;
+    height: 6px;
+    left: 0;
+    top: 0;
+    z-index: 101; }
+  /* line 101, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-northwest {
+    cursor: nw-resize; }
+  /* line 106, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle-northeast {
+    width: 6px;
+    height: 6px;
+    right: 0;
+    top: 0;
+    z-index: 101; }
+  /* line 117, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-northeast {
+    cursor: ne-resize; }
+  /* line 122, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle-southwest {
+    width: 6px;
+    height: 6px;
+    left: 0;
+    bottom: 0;
+    z-index: 101; }
+  /* line 133, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-southwest {
+    cursor: sw-resize; }
+  /* line 140, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-ie .x-resizable-handle-east {
+    margin-right: -1px;
+    /*IE rounding error*/ }
+  /* line 144, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-ie .x-resizable-handle-south {
+    margin-bottom: -1px; }
+  /* line 149, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle, .x-reset .x-resizable-pinned .x-resizable-handle {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+    opacity: 1; }
+  /* line 153, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-window .x-window-handle {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+    opacity: 0; }
+  /* line 157, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-window-collapsed .x-window-handle {
+    display: none; }
+  /* line 161, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-proxy {
+    border: 1px dashed #3b5a82;
+    position: absolute;
+    left: 0;
+    top: 0;
+    overflow: hidden;
+    z-index: 50000; }
+  /* line 170, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-overlay {
+    position: absolute;
+    left: 0;
+    top: 0;
+    width: 100%;
+    height: 100%;
+    display: none;
+    z-index: 200000;
+    background-color: #fff;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+    opacity: 0; }
+  /* line 190, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-east,
+  .x-reset .x-resizable-over .x-resizable-handle-west,
+  .x-reset .x-resizable-pinned .x-resizable-handle-east,
+  .x-reset .x-resizable-pinned .x-resizable-handle-west {
+    background-position: left;
+    background-image: url('../../resources/themes/images/default/sizer/e-handle.gif'); }
+  /* line 196, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-south,
+  .x-reset .x-resizable-over .x-resizable-handle-north,
+  .x-reset .x-resizable-pinned .x-resizable-handle-south,
+  .x-reset .x-resizable-pinned .x-resizable-handle-north {
+    background-position: top;
+    background-image: url('../../resources/themes/images/default/sizer/s-handle.gif'); }
+  /* line 201, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-southeast,
+  .x-reset .x-resizable-pinned .x-resizable-handle-southeast {
+    background-position: top left;
+    background-image: url('../../resources/themes/images/default/sizer/se-handle.gif'); }
+  /* line 206, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-northwest,
+  .x-reset .x-resizable-pinned .x-resizable-handle-northwest {
+    background-position: bottom right;
+    background-image: url('../../resources/themes/images/default/sizer/nw-handle.gif'); }
+  /* line 211, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-northeast,
+  .x-reset .x-resizable-pinned .x-resizable-handle-northeast {
+    background-position: bottom left;
+    background-image: url('../../resources/themes/images/default/sizer/ne-handle.gif'); }
+  /* line 216, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-southwest,
+  .x-reset .x-resizable-pinned .x-resizable-handle-southwest {
+    background-position: top right;
+    background-image: url('../../resources/themes/images/default/sizer/sw-handle.gif'); }
+  /* line 3, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter .x-collapse-el {
+    position: absolute;
+    cursor: pointer;
+    background-color: transparent;
+    background-repeat: no-repeat !important; }
+  /* line 14, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-layout-split-left,
+  .x-reset .x-layout-split-right {
+    top: 50%;
+    margin-top: -17px;
+    width: 5px;
+    height: 35px; }
+  /* line 24, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-layout-split-top,
+  .x-reset .x-layout-split-bottom {
+    left: 50%;
+    width: 35px;
+    height: 5px;
+    margin-left: -17px; }
+  /* line 33, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-layout-split-left {
+    background: no-repeat top right;
+    background-image: url('../../resources/themes/images/default/util/splitter/mini-left.gif'); }
+  /* line 38, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-layout-split-right {
+    background: no-repeat top left;
+    background-image: url('../../resources/themes/images/default/util/splitter/mini-right.gif'); }
+  /* line 43, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-layout-split-top {
+    background: no-repeat top left;
+    background-image: url('../../resources/themes/images/default/util/splitter/mini-top.gif'); }
+  /* line 48, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-layout-split-bottom {
+    background: no-repeat top left;
+    background-image: url('../../resources/themes/images/default/util/splitter/mini-bottom.gif'); }
+  /* line 54, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-collapsed .x-layout-split-left {
+    background: no-repeat top left;
+    background-image: url('../../resources/themes/images/default/util/splitter/mini-right.gif'); }
+  /* line 59, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-collapsed .x-layout-split-right {
+    background: no-repeat top right;
+    background-image: url('../../resources/themes/images/default/util/splitter/mini-left.gif'); }
+  /* line 64, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-collapsed .x-layout-split-top {
+    background: no-repeat top left;
+    background-image: url('../../resources/themes/images/default/util/splitter/mini-bottom.gif'); }
+  /* line 69, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-collapsed .x-layout-split-bottom {
+    background: no-repeat top left;
+    background-image: url('../../resources/themes/images/default/util/splitter/mini-top.gif'); }
+  /* line 75, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-horizontal {
+    cursor: e-resize;
+    cursor: row-resize;
+    font-size: 1px; }
+  /* line 81, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-vertical {
+    cursor: e-resize;
+    cursor: col-resize;
+    font-size: 1px; }
+  /* line 86, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-collapsed, .x-reset .x-splitter-horizontal-noresize, .x-reset .x-splitter-vertical-noresize {
+    cursor: default; }
+  /* line 90, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-active {
+    z-index: 4;
+    font-size: 1px;
+    background-color: #b4b4b4;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+    opacity: 0.8; }
+  /* line 97, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-active .x-collapse-el {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+    opacity: 0.3; }
+  /* line 102, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-proxy-el {
+    position: absolute;
+    background: #b4b4b4;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+    opacity: 0.8; }
+  /* line 6, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked {
+    position: absolute !important;
+    z-index: 1; }
+  /* line 11, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked-top {
+    border-bottom-width: 0 !important; }
+  /* line 15, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked-bottom {
+    border-top-width: 0 !important; }
+  /* line 19, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked-left {
+    border-right-width: 0 !important; }
+  /* line 23, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked-right {
+    border-left-width: 0 !important; }
+  /* line 27, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked-noborder-top {
+    border-top-width: 0 !important; }
+  /* line 31, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked-noborder-right {
+    border-right-width: 0 !important; }
+  /* line 35, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked-noborder-bottom {
+    border-bottom-width: 0 !important; }
+  /* line 39, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked-noborder-left {
+    border-left-width: 0 !important; }
+  /* line 43, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-inner {
+    overflow: hidden;
+    zoom: 1;
+    position: relative;
+    left: 0;
+    top: 0; }
+  /* line 53, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-item {
+    position: absolute !important;
+    left: 0;
+    top: 0; }
+  /* line 59, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-rtl .x-box-item {
+    right: 0;
+    left: auto; }
+  /* line 65, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-layout-ct,
+  .x-reset .x-border-layout-ct {
+    overflow: hidden;
+    zoom: 1; }
+  /* line 70, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-border-layout-ct {
+    background-color: #dfe8f6;
+    position: relative; }
+  /* line 75, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-overflow-hidden {
+    overflow: hidden !important; }
+  /* line 79, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-inline-children > * {
+    display: inline-block !important; }
+  /* line 83, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-abs-layout-ct {
+    position: relative; }
+  /* line 87, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-abs-layout-item {
+    position: absolute !important; }
+  /* line 91, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-fit-item {
+    position: relative; }
+  /* line 95, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-border-region-slide-in {
+    z-index: 5; }
+  /* line 99, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-region-collapsed-placeholder {
+    z-index: 4; }
+  /* line 103, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-accordion-hd .x-panel-header-text {
+    color: black;
+    font-weight: normal; }
+  /* line 108, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-accordion-hd {
+    background: #d9e7f8 !important;
+    -moz-box-shadow: inset 0 0 0 0 #d9e7f8;
+    -webkit-box-shadow: inset 0 0 0 0 #d9e7f8;
+    -o-box-shadow: inset 0 0 0 0 #d9e7f8;
+    box-shadow: inset 0 0 0 0 #d9e7f8; }
+    /* line 112, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-accordion-hd .x-tool-collapse-top,
+    .x-reset .x-accordion-hd .x-tool-collapse-right,
+    .x-reset .x-accordion-hd .x-tool-collapse-bottom,
+    .x-reset .x-accordion-hd .x-tool-collapse-left {
+      background-position: 0 -255px; }
+    /* line 119, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-accordion-hd .x-tool-expand-top,
+    .x-reset .x-accordion-hd .x-tool-expand-right,
+    .x-reset .x-accordion-hd .x-tool-expand-bottom,
+    .x-reset .x-accordion-hd .x-tool-expand-left {
+      background-position: 0 -240px; }
+    /* line 127, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-accordion-hd .x-tool-over .x-tool-collapse-top,
+    .x-reset .x-accordion-hd .x-tool-over .x-tool-collapse-right,
+    .x-reset .x-accordion-hd .x-tool-over .x-tool-collapse-bottom,
+    .x-reset .x-accordion-hd .x-tool-over .x-tool-collapse-left {
+      background-position: -15px -255px; }
+    /* line 136, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-accordion-hd .x-tool-over .x-tool-expand-top,
+    .x-reset .x-accordion-hd .x-tool-over .x-tool-expand-right,
+    .x-reset .x-accordion-hd .x-tool-over .x-tool-expand-bottom,
+    .x-reset .x-accordion-hd .x-tool-over .x-tool-expand-left {
+      background-position: -15px -240px; }
+  /* line 145, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-accordion-hd {
+    border-width: 1px 0 1px 0 !important;
+    padding: 4px 5px 5px 5px;
+    border-top-color: #f3f7fb !important; }
+  /* line 151, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-accordion-body {
+    border-width: 0 !important; }
+  /* line 155, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-accordion-hd-sibling-expanded {
+    border-top-color: #99bce8 !important;
+    -moz-box-shadow: inset 0 1px 0 0 #f3f7fb;
+    -webkit-box-shadow: inset 0 1px 0 0 #f3f7fb;
+    -o-box-shadow: inset 0 1px 0 0 #f3f7fb;
+    box-shadow: inset 0 1px 0 0 #f3f7fb; }
+  /* line 160, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-accordion-hd-last-collapsed {
+    border-bottom-color: #d9e7f8 !important; }
+  /* line 169, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-frame-tl,
+  .x-reset .x-frame-tr,
+  .x-reset .x-frame-tc,
+  .x-reset .x-frame-bl,
+  .x-reset .x-frame-br,
+  .x-reset .x-frame-bc {
+    overflow: hidden;
+    background-repeat: no-repeat; }
+  /* line 175, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-frame-tc,
+  .x-reset .x-frame-bc {
+    background-repeat: repeat-x; }
+  /* line 179, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-frame-mc {
+    position: relative;
+    background-repeat: repeat-x;
+    overflow: hidden; }
+  /* line 188, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-scroller-left {
+    float: left;
+    height: 100%;
+    z-index: 5; }
+    /* line 195, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-left .x-toolbar-scroll-left,
+    .x-reset .x-box-scroller-left .x-tabbar-scroll-left {
+      width: 18px;
+      position: relative;
+      cursor: pointer;
+      height: 20px;
+      background: transparent no-repeat -18px 0;
+      background-image: url('../../resources/themes/images/default/tab-bar/scroll-left.gif'); }
+    /* line 203, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-left .x-toolbar-scroll-left-hover {
+      background-position: 0 0; }
+    /* line 207, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-left .x-toolbar-scroll-left-disabled,
+    .x-reset .x-box-scroller-left .x-tabbar-scroll-left-disabled {
+      background-position: -18px 0;
+      filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+      opacity: 0.5;
+      cursor: default; }
+    /* line 214, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-left .x-toolbar-scroll-left {
+      background-image: url('../../resources/themes/images/default/toolbar/scroll-left.gif');
+      background-position: -14px 0; }
+    /* line 218, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-left .x-toolbar-scroll-left-hover {
+      background-position: 0 0; }
+    /* line 221, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-left .x-toolbar-scroll-left-disabled {
+      background-position: -14px 0; }
+    /* line 225, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-left .x-toolbar-scroll-left {
+      width: 14px;
+      height: 22px;
+      border-bottom: 1px solid #8db2e3; }
+  /* line 233, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-horizontal-box-overflow-body {
+    float: left; }
+  /* line 236, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-scroller-right {
+    float: right;
+    height: 100%;
+    z-index: 5; }
+    /* line 243, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-right .x-toolbar-scroll-right,
+    .x-reset .x-box-scroller-right .x-tabbar-scroll-right {
+      width: 18px;
+      position: relative;
+      cursor: pointer;
+      height: 20px;
+      background: transparent no-repeat 0 0;
+      background-image: url('../../resources/themes/images/default/tab-bar/scroll-right.gif'); }
+    /* line 251, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-right .x-toolbar-scroll-right-hover {
+      background-position: -18px 0; }
+    /* line 255, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-right .x-toolbar-scroll-right-disabled,
+    .x-reset .x-box-scroller-right .x-tabbar-scroll-right-disabled {
+      background-position: 0 0;
+      filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+      opacity: 0.5;
+      cursor: default; }
+    /* line 262, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-right .x-toolbar-scroll-right {
+      background-image: url('../../resources/themes/images/default/toolbar/scroll-right.gif'); }
+    /* line 265, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-right .x-toolbar-scroll-right-hover {
+      background-position: -14px 0; }
+    /* line 268, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-right .x-toolbar-scroll-right-disabled {
+      background-position: 0 0; }
+    /* line 272, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-right .x-toolbar-scroll-right {
+      width: 14px;
+      height: 22px;
+      border-bottom: 1px solid #8db2e3; }
+  /* line 282, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-scroller-top .x-box-scroller {
+    line-height: 0;
+    font-size: 0; }
+  /* line 286, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-scroller-top .x-menu-scroll-top {
+    background: transparent no-repeat center center;
+    background-image: url('../../resources/themes/images/default/layout/mini-top.gif');
+    height: 8px;
+    cursor: pointer; }
+  /* line 294, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-scroller-bottom .x-box-scroller {
+    line-height: 0;
+    font-size: 0; }
+  /* line 298, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-scroller-bottom .x-menu-scroll-bottom {
+    background: transparent no-repeat center center;
+    background-image: url('../../resources/themes/images/default/layout/mini-bottom.gif');
+    height: 8px;
+    cursor: pointer; }
+  /* line 306, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-menu-right {
+    float: right;
+    padding-right: 2px; }
+  /* line 311, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-column {
+    float: left; }
+  /* line 315, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-ie6 .x-column {
+    display: inline;
+    /*prevent IE6 double-margin bug*/ }
+  /* line 319, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-quirks .x-ie .x-form-layout-table, .x-reset .x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item {
+    position: relative; }
+  /* line 2, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool {
+    height: 15px; }
+    /* line 5, ../themes/stylesheets/ext4/default/util/_tool.scss */
+    .x-reset .x-tool img {
+      overflow: hidden;
+      width: 15px;
+      height: 15px;
+      cursor: pointer;
+      background-color: transparent;
+      background-repeat: no-repeat;
+      background-image: url('../../resources/themes/images/default/tools/tool-sprites.gif');
+      margin: 0; }
+  /* line 23, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-panel-header-horizontal .x-tool,
+  .x-reset .x-window-header-horizontal .x-tool {
+    margin-left: 2px; }
+  /* line 30, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-panel-header-vertical .x-tool,
+  .x-reset .x-window-header-vertical .x-tool {
+    margin-top: 2px; }
+  /* line 39, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-panel-header-vertical .x-tool-top,
+  .x-reset .x-window-header-vertical .x-tool-top {
+    margin: 0 0 4px; }
+  /* line 45, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-placeholder {
+    visibility: hidden; }
+  /* line 49, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-toggle {
+    background-position: 0 -60px; }
+  /* line 54, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-toggle {
+    background-position: -15px -60px; }
+  /* line 61, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-panel-collapsed .x-tool-toggle,
+  .x-reset .x-fieldset-collapsed .x-tool-toggle {
+    background-position: 0 -75px; }
+  /* line 66, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-panel-collapsed .x-tool-over .x-tool-toggle,
+  .x-reset .x-fieldset-collapsed .x-tool-over .x-tool-toggle {
+    background-position: -15px -75px; }
+  /* line 72, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-close {
+    background-position: 0 0; }
+  /* line 76, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-minimize {
+    background-position: 0 -15px; }
+  /* line 80, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-maximize {
+    background-position: 0 -30px; }
+  /* line 84, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-restore {
+    background-position: 0 -45px; }
+  /* line 88, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-gear {
+    background-position: 0 -90px; }
+  /* line 92, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-prev {
+    background-position: 0 -105px; }
+  /* line 96, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-next {
+    background-position: 0 -120px; }
+  /* line 100, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-pin {
+    background-position: 0 -135px; }
+  /* line 104, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-unpin {
+    background-position: 0 -150px; }
+  /* line 108, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-right {
+    background-position: 0 -165px; }
+  /* line 112, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-left {
+    background-position: 0 -180px; }
+  /* line 116, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-help {
+    background-position: 0 -300px; }
+  /* line 120, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-save {
+    background-position: 0 -285px; }
+  /* line 124, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-search {
+    background-position: 0 -270px; }
+  /* line 128, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-minus {
+    background-position: 0 -255px; }
+  /* line 132, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-plus {
+    background-position: 0 -240px; }
+  /* line 136, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-refresh {
+    background-position: 0 -225px; }
+  /* line 140, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-up {
+    background-position: 0 -210px; }
+  /* line 144, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-down {
+    background-position: 0 -195px; }
+  /* line 148, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-collapse {
+    background-position: 0 -345px; }
+  /* line 152, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-expand {
+    background-position: 0 -330px; }
+  /* line 156, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-print {
+    background-position: 0 -315px; }
+  /* line 161, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-expand-bottom,
+  .x-reset .x-tool-collapse-bottom {
+    background-position: 0 -195px; }
+  /* line 166, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-expand-top,
+  .x-reset .x-tool-collapse-top {
+    background-position: 0 -210px; }
+  /* line 171, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-expand-left,
+  .x-reset .x-tool-collapse-left {
+    background-position: 0 -180px; }
+  /* line 176, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-expand-right,
+  .x-reset .x-tool-collapse-right {
+    background-position: 0 -165px; }
+  /* line 181, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-close {
+    background-position: -15px 0; }
+  /* line 185, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-minimize {
+    background-position: -15px -15px; }
+  /* line 189, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-maximize {
+    background-position: -15px -30px; }
+  /* line 193, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-restore {
+    background-position: -15px -45px; }
+  /* line 197, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-gear {
+    background-position: -15px -90px; }
+  /* line 201, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-prev {
+    background-position: -15px -105px; }
+  /* line 205, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-next {
+    background-position: -15px -120px; }
+  /* line 209, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-pin {
+    background-position: -15px -135px; }
+  /* line 213, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-unpin {
+    background-position: -15px -150px; }
+  /* line 217, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-right {
+    background-position: -15px -165px; }
+  /* line 221, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-left {
+    background-position: -15px -180px; }
+  /* line 225, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-down {
+    background-position: -15px -195px; }
+  /* line 229, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-up {
+    background-position: -15px -210px; }
+  /* line 233, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-refresh {
+    background-position: -15px -225px; }
+  /* line 237, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-plus {
+    background-position: -15px -240px; }
+  /* line 241, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-minus {
+    background-position: -15px -255px; }
+  /* line 245, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-search {
+    background-position: -15px -270px; }
+  /* line 249, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-save {
+    background-position: -15px -285px; }
+  /* line 253, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-help {
+    background-position: -15px -300px; }
+  /* line 257, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-print {
+    background-position: -15px -315px; }
+  /* line 261, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-expand {
+    background-position: -15px -330px; }
+  /* line 265, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-collapse {
+    background-position: -15px -345px; }
+  /* line 270, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-expand-bottom,
+  .x-reset .x-tool-over .x-tool-collapse-bottom {
+    background-position: -15px -195px; }
+  /* line 275, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-expand-top,
+  .x-reset .x-tool-over .x-tool-collapse-top {
+    background-position: -15px -210px; }
+  /* line 280, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-expand-left,
+  .x-reset .x-tool-over .x-tool-collapse-left {
+    background-position: -15px -180px; }
+  /* line 285, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-expand-right,
+  .x-reset .x-tool-over .x-tool-collapse-right {
+    background-position: -15px -165px; }
+  /* line 2, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-horizontal-scroller-present .x-grid-body {
+    border-bottom-width: 0px; }
+  /* line 6, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-vertical-scroller-present .x-grid-body {
+    border-right-width: 0px; }
+  /* line 10, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-scroller {
+    overflow: hidden; }
+  /* line 14, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-scroller-vertical {
+    border: 1px solid #99bce8;
+    border-top-color: #c5c5c5; }
+  /* line 19, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-scroller-horizontal {
+    border: 1px solid #99bce8; }
+  /* line 23, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-vertical-scroller-present .x-scroller-horizontal {
+    border-right-width: 0px; }
+  /* line 27, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-scroller-ct {
+    overflow: hidden;
+    position: absolute;
+    margin: 0;
+    padding: 0;
+    border: none;
+    left: 0px;
+    top: 0px;
+    /*
+    In IE9 (only), the border-box style causes the scroller-ct to be 0px in the
+    perpendicular dimension and breaks the scroll as well as offsets it by the left
+    offset that we use to try and keep some size on this element. This works on all
+    browsers (including IE9).
+    */
+    box-sizing: content-box !important;
+    -ms-box-sizing: content-box !important;
+    -moz-box-sizing: content-box !important;
+    -webkit-box-sizing: content-box !important; }
+  /* line 48, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-scroller-vertical .x-scroller-ct {
+    overflow-y: scroll; }
+  /* line 52, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-scroller-horizontal .x-scroller-ct {
+    overflow-x: scroll; }
+  /* line 8, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-reset .x-html {
+    /* Begin bidirectionality settings (do not change) */ }
+    /* line 34, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html html, .x-reset .x-html address, .x-reset .x-html blockquote, .x-reset .x-html body, .x-reset .x-html dd, .x-reset .x-html div, .x-reset .x-html dl, .x-reset .x-html dt, .x-reset .x-html fieldset, .x-reset .x-html form, .x-reset .x-html frame, .x-reset .x-html frameset, .x-reset .x-html h1, .x-reset .x-html h2, .x-reset .x-html h3, .x-reset .x-html h4, .x-reset .x-html h5, .x-reset .x-html h6, .x-reset .x-html noframes, .x-reset .x-html ol, .x-reset .x-html p, .x-reset .x-html ul, .x-reset .x-html center, .x-reset .x-html dir, .x-reset .x-html hr, .x-reset .x-html menu, .x-reset .x-html pre {
+      display: block; }
+    /* line 35, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html li {
+      display: list-item;
+      list-style: disc; }
+    /* line 36, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html head {
+      display: none; }
+    /* line 37, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html table {
+      display: table; }
+    /* line 38, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html tr {
+      display: table-row; }
+    /* line 39, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html thead {
+      display: table-header-group; }
+    /* line 40, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html tbody {
+      display: table-row-group; }
+    /* line 41, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html tfoot {
+      display: table-footer-group; }
+    /* line 42, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html col {
+      display: table-column; }
+    /* line 43, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html colgroup {
+      display: table-column-group; }
+    /* line 45, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html td, .x-reset .x-html th {
+      display: table-cell; }
+    /* line 46, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html caption {
+      display: table-caption; }
+    /* line 47, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html th {
+      font-weight: bolder;
+      text-align: center; }
+    /* line 48, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html caption {
+      text-align: center; }
+    /* line 49, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html body {
+      margin: 8px; }
+    /* line 50, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html h1 {
+      font-size: 2em;
+      margin: .67em 0; }
+    /* line 51, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html h2 {
+      font-size: 1.5em;
+      margin: .75em 0; }
+    /* line 52, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html h3 {
+      font-size: 1.17em;
+      margin: .83em 0; }
+    /* line 62, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html h4, .x-reset .x-html p, .x-reset .x-html blockquote, .x-reset .x-html ul, .x-reset .x-html fieldset, .x-reset .x-html form, .x-reset .x-html ol, .x-reset .x-html dl, .x-reset .x-html dir, .x-reset .x-html menu {
+      margin: 1.12em 0; }
+    /* line 63, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html h5 {
+      font-size: .83em;
+      margin: 1.5em 0; }
+    /* line 64, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html h6 {
+      font-size: .75em;
+      margin: 1.67em 0; }
+    /* line 72, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html h1, .x-reset .x-html h2, .x-reset .x-html h3, .x-reset .x-html h4, .x-reset .x-html h5, .x-reset .x-html h6, .x-reset .x-html b, .x-reset .x-html strong {
+      font-weight: bolder; }
+    /* line 73, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html blockquote {
+      margin-left: 40px;
+      margin-right: 40px; }
+    /* line 78, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html i, .x-reset .x-html cite, .x-reset .x-html em, .x-reset .x-html var, .x-reset .x-html address {
+      font-style: italic; }
+    /* line 83, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html pre, .x-reset .x-html tt, .x-reset .x-html code, .x-reset .x-html kbd, .x-reset .x-html samp {
+      font-family: monospace; }
+    /* line 84, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html pre {
+      white-space: pre; }
+    /* line 88, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html button, .x-reset .x-html textarea, .x-reset .x-html input, .x-reset .x-html select {
+      display: inline-block; }
+    /* line 89, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html big {
+      font-size: 1.17em; }
+    /* line 92, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html small, .x-reset .x-html sub, .x-reset .x-html sup {
+      font-size: .83em; }
+    /* line 93, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html sub {
+      vertical-align: sub; }
+    /* line 94, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html sup {
+      vertical-align: super; }
+    /* line 95, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html table {
+      border-spacing: 2px; }
+    /* line 98, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html thead, .x-reset .x-html tbody, .x-reset .x-html tfoot {
+      vertical-align: middle; }
+    /* line 100, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html td, .x-reset .x-html th {
+      vertical-align: inherit; }
+    /* line 103, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html s, .x-reset .x-html strike, .x-reset .x-html del {
+      text-decoration: line-through; }
+    /* line 104, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html hr {
+      border: 1px inset; }
+    /* line 109, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html ol, .x-reset .x-html ul, .x-reset .x-html dir, .x-reset .x-html menu, .x-reset .x-html dd {
+      margin-left: 40px; }
+    /* line 110, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html ul, .x-reset .x-html menu, .x-reset .x-html dir {
+      list-style-type: disc; }
+    /* line 111, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html ol {
+      list-style-type: decimal; }
+    /* line 115, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html ol ul, .x-reset .x-html ul ol, .x-reset .x-html ul ul, .x-reset .x-html ol ol {
+      margin-top: 0;
+      margin-bottom: 0; }
+    /* line 117, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html u, .x-reset .x-html ins {
+      text-decoration: underline; }
+    /* line 118, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html br:before {
+      content: "\A"; }
+    /* line 119, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html :before, .x-reset .x-html :after {
+      white-space: pre-line; }
+    /* line 120, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html center {
+      text-align: center; }
+    /* line 121, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html :link, .x-reset .x-html :visited {
+      text-decoration: underline; }
+    /* line 122, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html :focus {
+      outline: invert dotted thin; }
+    /* line 125, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html BDO[DIR="ltr"] {
+      direction: ltr;
+      unicode-bidi: bidi-override; }
+    /* line 126, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html BDO[DIR="rtl"] {
+      direction: rtl;
+      unicode-bidi: bidi-override; }
+
+/* line 5, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-default-top {
+  height: 21px; }
+/* line 8, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-default-bottom {
+  height: 21px; }
+/* line 13, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tip-anchor {
+  width: 10px;
+  height: 10px; }
+/* line 19, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-form-text {
+  height: 22px; }
+/* line 23, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset textarea.x-form-field {
+  height: auto; }
+/* line 27, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-field-default-toolbar .x-form-text {
+  height: 20px; }
+/* line 32, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-form-trigger {
+  height: 22px; }
+/* line 36, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-field-default-toolbar .x-form-trigger {
+  height: 20px; }
+/* line 43, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset.x-ie9 .x-grid-header-ct {
+  padding-left: 1px; }
+
+/* line 55, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-webkit .x-reset *:focus {
+  outline: none !important; }
+/* line 61, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-webkit .x-reset .x-form-empty-field {
+  line-height: 15px; }
+/* line 66, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-webkit .x-reset .x-fieldset-header {
+  padding-top: 1px; }
+
+/* Top Tabs */
+/* line 118, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-bar-top .x-tab-bar-body {
+  height: 25px; }
+/* line 122, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-bar-top .x-tab-bar-strip {
+  height: 3px; }
+
+/* line 118, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-bar-top .x-tab-bar-body-default-plain {
+  height: 22px; }
+/* line 122, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-bar-top .x-tab-bar-strip-default-plain {
+  height: 3px; }
+
+/* Bottom Tabs */
+/* line 134, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-bar-bottom .x-tab-bar-body {
+  height: 25px; }
+/* line 138, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-bar-bottom .x-tab-bar-strip {
+  height: 3px; }
+
+/* line 134, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain {
+  height: 23px; }
+/* line 138, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-bar-bottom .x-tab-bar-strip-default-plain {
+  height: 3px; }
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-all-scoped.css
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-all-scoped.css	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-all-scoped.css	(revision 18277)
@@ -0,0 +1,21 @@
+/*
+This file is part of Ext JS 4.1
+
+Copyright (c) 2011-2012 Sencha Inc
+
+Contact:  http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2012-07-04 21:11:01 (65ff594cd80b9bad45df640c22cc0adb52c95a7b)
+*/
+.x-border-box .x-reset,.x-border-box .x-reset *{box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box}.x-reset html,.x-reset body,.x-reset div,.x-reset dl,.x-reset dt,.x-reset dd,.x-reset ul,.x-reset ol,.x-reset li,.x-reset h1,.x-reset h2,.x-reset h3,.x-reset h4,.x-reset h5,.x-reset h6,.x-reset pre,.x-reset code,.x-reset form,.x-reset fieldset,.x-reset legend,.x-reset input,.x-reset textarea,.x-reset p,.x-reset blockquote,.x-reset th,.x-reset td{margin:0;padding:0}.x-reset table{border-collapse:collapse;border-spacing:0}.x-reset fieldset,.x-reset img{border:0}.x-reset address,.x-reset caption,.x-reset cite,.x-reset code,.x-reset dfn,.x-reset em,.x-reset strong,.x-reset th,.x-reset var{font-style:normal;font-weight:normal}.x-reset li{list-style:none}.x-reset caption,.x-reset th{text-align:left}.x-reset h1,.x-reset h2,.x-reset h3,.x-reset h4,.x-reset h5,.x-reset h6{font-size:100%}.x-reset q:before,.x-reset q:after{content:""}.x-reset abbr,.x-reset acronym{border:0;font-variant:normal}.x-reset sup{vertical-align:text-top}.x-reset sub{vertical-align:text-bottom}.x-reset input,.x-reset textarea,.x-reset select{font-family:inherit;font-size:inherit;font-weight:inherit}.x-reset *:focus{outline:0}.x-body{color:black;font-size:12px;font-family:tahoma,arial,verdana,sans-serif}.x-rtl{direction:rtl}.x-ltr{direction:ltr}.x-clear{overflow:hidden;clear:both;font-size:0;line-height:0;display:table}.x-strict .x-ie7 .x-clear{height:0;width:0}.x-layer{position:absolute!important;overflow:hidden;zoom:1}.x-shim{position:absolute;left:0;top:0;overflow:hidden;filter:alpha(opacity=0);opacity:0}.x-hide-display{display:none!important}.x-hide-visibility{visibility:hidden!important}.x-item-disabled .x-form-item-label,.x-item-disabled .x-form-field,.x-item-disabled .x-form-cb-label,.x-item-disabled .x-form-trigger{filter:alpha(opacity=30);opacity:.3}.x-ie6 .x-item-disabled{filter:none}.x-hidden,.x-hide-offsets{display:block!important;visibility:hidden!important;position:absolute!important;left:-10000px!important;top:-10000px!important}.x-hide-nosize{height:0!important;width:0!important}.x-masked-relative{position:relative}.x-ie6 .x-masked select,.x-ie6.x-body-masked select{visibility:hidden!important}.x-css-shadow{position:absolute;-moz-border-radius:5px 5px;-webkit-border-radius:5px 5px;-o-border-radius:5px 5px;-ms-border-radius:5px 5px;-khtml-border-radius:5px 5px;border-radius:5px 5px}.x-ie-shadow{background-color:#777;display:none;position:absolute;overflow:hidden;zoom:1}.x-box-tl{background:transparent no-repeat 0 0;zoom:1}.x-box-tc{height:8px;background:transparent repeat-x 0 0;overflow:hidden}.x-box-tr{background:transparent no-repeat right -8px}.x-box-ml{background:transparent repeat-y 0;padding-left:4px;overflow:hidden;zoom:1}.x-box-mc{background:repeat-x 0 -16px;padding:4px 10px}.x-box-mc h3{margin:0 0 4px 0;zoom:1}.x-box-mr{background:transparent repeat-y right;padding-right:4px;overflow:hidden}.x-box-bl{background:transparent no-repeat 0 -16px;zoom:1}.x-box-bc{background:transparent repeat-x 0 -8px;height:8px;overflow:hidden}.x-box-br{background:transparent no-repeat right -24px}.x-box-tl,.x-box-bl{padding-left:8px;overflow:hidden}.x-box-tr,.x-box-br{padding-right:8px;overflow:hidden}.x-box-tl{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-tc{background-image:url('../../resources/themes/images/default/box/tb.gif')}.x-box-tr{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-ml{background-image:url('../../resources/themes/images/default/box/l.gif')}.x-box-mc{background-color:#eee;background-image:url('../../resources/themes/images/default/box/tb.gif');font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:15px}.x-box-mc h3{font-size:18px;font-weight:bold}.x-box-mr{background-image:url('../../resources/themes/images/default/box/r.gif')}.x-box-bl{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-bc{background-image:url('../../resources/themes/images/default/box/tb.gif')}.x-box-br{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-blue .x-box-bl,.x-box-blue .x-box-br,.x-box-blue .x-box-tl,.x-box-blue .x-box-tr{background-image:url('../../resources/themes/images/default/box/corners-blue.gif')}.x-box-blue .x-box-bc,.x-box-blue .x-box-mc,.x-box-blue .x-box-tc{background-image:url('../../resources/themes/images/default/box/tb-blue.gif')}.x-box-blue .x-box-mc{background-color:#c3daf9}.x-box-blue .x-box-mc h3{color:#17385b}.x-box-blue .x-box-ml{background-image:url('../../resources/themes/images/default/box/l-blue.gif')}.x-box-blue .x-box-mr{background-image:url('../../resources/themes/images/default/box/r-blue.gif')}.x-container{zoom:1}.x-container:before{content:"";clear:both;display:table}table.x-container:before,tbody.x-container:before,tr.x-container:before{display:none}.x-focus-element{position:absolute;top:-10px;left:-10px;width:0;height:0}.x-focus-frame{position:absolute;left:0;top:0;z-index:100000000;width:0;height:0}.x-focus-frame-top,.x-focus-frame-bottom,.x-focus-frame-left,.x-focus-frame-right{position:absolute;top:0;left:0}.x-focus-frame-top,.x-focus-frame-bottom{border-top:solid 2px #15428b;height:2px}.x-focus-frame-left,.x-focus-frame-right{border-left:solid 2px #15428b;width:2px}.x-mask{z-index:100;position:absolute;top:0;left:0;filter:alpha(opacity=50);opacity:.5;width:100%;height:100%;zoom:1;background:#ccc}.x-mask-msg{z-index:20001;position:absolute;top:0;left:0;padding:2px;border:1px solid;border-color:#99bce8;background-image:none;background-color:#dfe9f6}.x-mask-msg div{padding:5px 10px 5px 25px;background-image:url('../../resources/themes/images/default/grid/loading.gif');background-repeat:no-repeat;background-position:5px center;cursor:wait;border:1px solid #a3bad9;background-color:#eee;color:#222;font:normal 11px tahoma,arial,verdana,sans-serif}.x-reset .x-boundlist{border-width:1px;border-style:solid;border-color:#98c0f4;background:white}.x-reset .x-boundlist .x-toolbar{border-width:1px 0 0 0}.x-reset .x-strict .x-ie6 .x-boundlist-list-ct,.x-reset .x-strict .x-ie7 .x-boundlist-list-ct{position:relative}.x-reset .x-boundlist-item{padding:2px;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;cursor:pointer;cursor:hand;position:relative;border-width:1px;border-style:dotted;border-color:white}.x-reset .x-boundlist-selected{background:#cbdaf0;border-color:#8eabe4}.x-reset .x-boundlist-item-over{background:#dfe8f6;border-color:#a3bae9}.x-reset .x-boundlist-floating{border-top-width:0}.x-reset .x-boundlist-above{border-top-width:1px;border-bottom-width:1px}.x-reset .x-btn{display:inline-block;zoom:1;*display:inline;position:relative;cursor:pointer;cursor:hand;white-space:nowrap;vertical-align:middle;background-repeat:no-repeat}.x-reset .x-btn *{cursor:pointer;cursor:hand}.x-reset .x-btn em{background-repeat:no-repeat}.x-reset .x-btn em a{text-decoration:none;display:block;color:inherit;width:100%;zoom:1}.x-reset .x-btn button{width:100%;display:block;margin:0;padding:0;border:0;background:0;outline:0 none;overflow:hidden;vertical-align:bottom;-webkit-appearance:none}.x-reset .x-btn button::-moz-focus-inner{border:0;padding:0}.x-reset .x-btn .x-btn-inner{display:block;white-space:nowrap;background-color:transparent;background-repeat:no-repeat;background-position:left center;overflow:hidden}.x-reset .x-btn .x-btn-left .x-btn-inner{text-align:left}.x-reset .x-btn .x-btn-center .x-btn-inner{text-align:center}.x-reset .x-btn .x-btn-right .x-btn-inner{text-align:right}.x-reset .x-btn-disabled span{filter:alpha(opacity=50);opacity:.5}.x-ie6 .x-reset .x-btn-disabled span,.x-ie7 .x-reset .x-btn-disabled span{filter:none}.x-reset .x-ie7 .x-btn-disabled,.x-reset .x-ie8 .x-btn-disabled{filter:none}.x-reset .x-ie6 .x-btn-disabled .x-btn-icon,.x-reset .x-ie7 .x-btn-disabled .x-btn-icon,.x-reset .x-ie8 .x-btn-disabled .x-btn-icon{filter:alpha(opacity=60);opacity:.6}.x-reset .x-ie9 .x-btn button{overflow:visible!important}.x-reset * html .x-ie .x-btn button{width:1px}.x-reset .x-ie .x-btn button{overflow-x:visible;vertical-align:baseline}.x-reset .x-strict .x-ie6 .x-btn .x-frame-mc,.x-reset .x-strict .x-ie7 .x-btn .x-frame-mc{height:100%}.x-reset .x-btn .x-frame-mc{vertical-align:middle;white-space:nowrap;cursor:pointer}.x-reset .x-btn-noicon .x-frame-mc{text-align:center}.x-reset .x-btn-icon-text-left .x-btn-icon{background-position:left center}.x-reset .x-btn-icon-text-right .x-btn-icon{background-position:right center}.x-reset .x-btn-icon-text-top .x-btn-icon{background-position:center top}.x-reset .x-btn-icon-text-bottom .x-btn-icon{background-position:center bottom}.x-reset .x-btn button,.x-reset .x-btn a{position:relative}.x-reset .x-btn button .x-btn-icon,.x-reset .x-btn a .x-btn-icon{position:absolute;background-repeat:no-repeat}.x-reset .x-btn-arrow-right{background:transparent no-repeat right center;padding-right:12px}.x-reset .x-btn-arrow-right .x-btn-inner{padding-right:0!important}.x-reset .x-toolbar .x-btn-arrow-right{padding-right:12px}.x-reset .x-btn-arrow-bottom{background:transparent no-repeat center bottom;padding-bottom:12px}.x-reset .x-btn-arrow{background-image:url('../../resources/themes/images/default/button/arrow.gif');display:block}.x-reset .x-btn-split-right,.x-reset .x-btn-over .x-btn-split-right{background:transparent no-repeat right center;background-image:url('../../resources/themes/images/default/button/s-arrow.gif');padding-right:14px!important}.x-reset .x-btn-split-bottom,.x-reset .x-btn-over .x-btn-split-bottom{background:transparent no-repeat center bottom;background-image:url('../../resources/themes/images/default/button/s-arrow-b.gif');padding-bottom:14px}.x-reset .x-toolbar .x-btn-split-right{background-image:url('../../resources/themes/images/default/button/s-arrow-noline.gif');padding-right:12px!important}.x-reset .x-toolbar .x-btn-split-bottom{background-image:url('../../resources/themes/images/default/button/s-arrow-b-noline.gif')}.x-reset .x-btn-split{display:block}.x-reset .x-item-disabled,.x-reset .x-item-disabled *{cursor:default}.x-reset .x-cycle-fixed-width .x-btn-inner{text-align:inherit}.x-reset .x-btn-over .x-btn-split-right{background-image:url('../../resources/themes/images/default/button/s-arrow-o.gif')}.x-reset .x-btn-over .x-btn-split-bottom{background-image:url('../../resources/themes/images/default/button/s-arrow-bo.gif')}.x-reset .x-btn-default-small{border-color:#d1d1d1}.x-reset .x-btn-default-small{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-ms-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x-reset .x-nlg .x-btn-default-small-mc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-bg.gif');background-color:white}.x-reset .x-nbr .x-btn-default-small{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-reset .x-nbr .x-btn-default-small-tl,.x-reset .x-nbr .x-btn-default-small-bl,.x-reset .x-nbr .x-btn-default-small-tr,.x-reset .x-nbr .x-btn-default-small-br,.x-reset .x-nbr .x-btn-default-small-tc,.x-reset .x-nbr .x-btn-default-small-bc,.x-reset .x-nbr .x-btn-default-small-ml,.x-reset .x-nbr .x-btn-default-small-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-small-corners.gif')}.x-reset .x-nbr .x-btn-default-small-ml,.x-reset .x-nbr .x-btn-default-small-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-small-sides.gif');background-position:0 0}.x-reset .x-nbr .x-btn-default-small-mc{padding:0}.x-reset .x-strict .x-ie7 .x-btn-default-small-tl,.x-reset .x-strict .x-ie7 .x-btn-default-small-bl{position:relative;right:0}.x-reset .x-btn-default-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 4px}.x-reset .x-btn-default-small-icon button,.x-reset .x-btn-default-small-icon a,.x-reset .x-btn-default-small-icon .x-btn-inner,.x-reset .x-btn-default-small-noicon button,.x-reset .x-btn-default-small-noicon a,.x-reset .x-btn-default-small-noicon .x-btn-inner{height:16px;line-height:16px}.x-reset .x-btn-default-small-icon button,.x-reset .x-btn-default-small-icon a{padding:0}.x-reset .x-btn-default-small-icon .x-btn-inner{width:16px;padding:0}.x-reset .x-btn-default-small-icon .x-btn-icon{width:16px;height:16px;top:0;left:0;bottom:0;right:0}.x-reset .x-btn-default-small-icon-text-left button,.x-reset .x-btn-default-small-icon-text-left a{height:16px}.x-reset .x-btn-default-small-icon-text-left .x-btn-inner{height:16px;line-height:16px;padding-left:20px}.x-reset .x-btn-default-small-icon-text-left .x-btn-icon{width:16px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-reset .x-btn-default-small-icon-text-left .x-btn-icon,.x-quirks .x-reset .x-btn-default-small-icon-text-left .x-btn-icon{height:16px}.x-reset .x-btn-default-small-icon-text-right button,.x-reset .x-btn-default-small-icon-text-right a{height:16px}.x-reset .x-btn-default-small-icon-text-right .x-btn-inner{height:16px;line-height:16px;padding-right:20px!important}.x-reset .x-btn-default-small-icon-text-right .x-btn-icon{width:16px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-small-icon-text-right .x-btn-icon,.x-quirks .x-reset .x-btn-default-small-icon-text-right .x-btn-icon{height:16px}.x-reset .x-btn-default-small-icon-text-top .x-btn-inner{padding-top:20px}.x-reset .x-btn-default-small-icon-text-top .x-btn-icon{width:auto;height:16px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-reset .x-btn-default-small-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-small-icon-text-top .x-btn-icon{width:16px}.x-reset .x-btn-default-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-reset .x-btn-default-small-icon-text-bottom .x-btn-icon{width:auto;height:16px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-small-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-small-icon-text-bottom .x-btn-icon{width:16px}.x-reset .x-btn-default-small-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-reset .x-btn-default-small-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-reset .x-btn-default-small-menu-active,.x-reset .x-btn-default-small-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-ms-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-reset .x-btn-default-small-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-ms-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-reset .x-btn-default-small-disabled .x-btn-inner{color:#333!important}.x-reset .x-ie .x-btn-default-small-disabled .x-btn-inner{color:#595959!important}.x-reset .x-ie6 .x-btn-default-small-disabled .x-btn-inner{color:#8c8c8c!important}.x-reset .x-nbr .x-btn-default-small-over .x-frame-tl,.x-reset .x-nbr .x-btn-default-small-over .x-frame-bl,.x-reset .x-nbr .x-btn-default-small-over .x-frame-tr,.x-reset .x-nbr .x-btn-default-small-over .x-frame-br,.x-reset .x-nbr .x-btn-default-small-over .x-frame-tc,.x-reset .x-nbr .x-btn-default-small-over .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-over-corners.gif')}.x-reset .x-nbr .x-btn-default-small-over .x-frame-ml,.x-reset .x-nbr .x-btn-default-small-over .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-small-over-sides.gif')}.x-reset .x-nbr .x-btn-default-small-over .x-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-small-over-bg.gif')}.x-reset .x-nbr .x-btn-default-small-focus .x-frame-tl,.x-reset .x-nbr .x-btn-default-small-focus .x-frame-bl,.x-reset .x-nbr .x-btn-default-small-focus .x-frame-tr,.x-reset .x-nbr .x-btn-default-small-focus .x-frame-br,.x-reset .x-nbr .x-btn-default-small-focus .x-frame-tc,.x-reset .x-nbr .x-btn-default-small-focus .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-focus-corners.gif')}.x-reset .x-nbr .x-btn-default-small-focus .x-frame-ml,.x-reset .x-nbr .x-btn-default-small-focus .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-small-focus-sides.gif')}.x-reset .x-nbr .x-btn-default-small-focus .x-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-small-focus-bg.gif')}.x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-tl,.x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-bl,.x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-tr,.x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-br,.x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-tc,.x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-bc,.x-reset .x-nbr .x-btn-default-small-pressed .x-frame-tl,.x-reset .x-nbr .x-btn-default-small-pressed .x-frame-bl,.x-reset .x-nbr .x-btn-default-small-pressed .x-frame-tr,.x-reset .x-nbr .x-btn-default-small-pressed .x-frame-br,.x-reset .x-nbr .x-btn-default-small-pressed .x-frame-tc,.x-reset .x-nbr .x-btn-default-small-pressed .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-pressed-corners.gif')}.x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-ml,.x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-mr,.x-reset .x-nbr .x-btn-default-small-pressed .x-frame-ml,.x-reset .x-nbr .x-btn-default-small-pressed .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-small-pressed-sides.gif')}.x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-mc,.x-reset .x-nbr .x-btn-default-small-pressed .x-frame-mc{background-color:#b6cbe4;background-image:url('../../resources/themes/images/default/btn/btn-default-small-pressed-bg.gif')}.x-reset .x-nbr .x-btn-default-small-disabled .x-frame-tl,.x-reset .x-nbr .x-btn-default-small-disabled .x-frame-bl,.x-reset .x-nbr .x-btn-default-small-disabled .x-frame-tr,.x-reset .x-nbr .x-btn-default-small-disabled .x-frame-br,.x-reset .x-nbr .x-btn-default-small-disabled .x-frame-tc,.x-reset .x-nbr .x-btn-default-small-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-disabled-corners.gif')}.x-reset .x-nbr .x-btn-default-small-disabled .x-frame-ml,.x-reset .x-nbr .x-btn-default-small-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-small-disabled-sides.gif')}.x-reset .x-nbr .x-btn-default-small-disabled .x-frame-mc{background-color:#f7f7f7;background-image:url('../../resources/themes/images/default/btn/btn-default-small-disabled-bg.gif')}.x-reset .x-nlg .x-btn-default-small{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-bg.gif')}.x-reset .x-nlg .x-btn-default-small-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-over-bg.gif')}.x-reset .x-nlg .x-btn-default-small-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-focus-bg.gif')}.x-reset .x-nlg .x-btn-default-small-menu-active,.x-reset .x-nlg .x-btn-default-small-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-pressed-bg.gif')}.x-reset .x-nlg .x-btn-default-small-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-disabled-bg.gif')}.x-reset .x-btn-default-medium{border-color:#d1d1d1}.x-reset .x-btn-default-medium{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-ms-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x-reset .x-nlg .x-btn-default-medium-mc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif');background-color:white}.x-reset .x-nbr .x-btn-default-medium{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-reset .x-nbr .x-btn-default-medium-tl,.x-reset .x-nbr .x-btn-default-medium-bl,.x-reset .x-nbr .x-btn-default-medium-tr,.x-reset .x-nbr .x-btn-default-medium-br,.x-reset .x-nbr .x-btn-default-medium-tc,.x-reset .x-nbr .x-btn-default-medium-bc,.x-reset .x-nbr .x-btn-default-medium-ml,.x-reset .x-nbr .x-btn-default-medium-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-corners.gif')}.x-reset .x-nbr .x-btn-default-medium-ml,.x-reset .x-nbr .x-btn-default-medium-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-sides.gif');background-position:0 0}.x-reset .x-nbr .x-btn-default-medium-mc{padding:1px 1px 1px 1px}.x-reset .x-strict .x-ie7 .x-btn-default-medium-tl,.x-reset .x-strict .x-ie7 .x-btn-default-medium-bl{position:relative;right:0}.x-reset .x-btn-default-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-reset .x-btn-default-medium-icon button,.x-reset .x-btn-default-medium-icon a,.x-reset .x-btn-default-medium-icon .x-btn-inner,.x-reset .x-btn-default-medium-noicon button,.x-reset .x-btn-default-medium-noicon a,.x-reset .x-btn-default-medium-noicon .x-btn-inner{height:24px;line-height:24px}.x-reset .x-btn-default-medium-icon button,.x-reset .x-btn-default-medium-icon a{padding:0}.x-reset .x-btn-default-medium-icon .x-btn-inner{width:24px;padding:0}.x-reset .x-btn-default-medium-icon .x-btn-icon{width:24px;height:24px;top:0;left:0;bottom:0;right:0}.x-reset .x-btn-default-medium-icon-text-left button,.x-reset .x-btn-default-medium-icon-text-left a{height:24px}.x-reset .x-btn-default-medium-icon-text-left .x-btn-inner{height:24px;line-height:24px;padding-left:28px}.x-reset .x-btn-default-medium-icon-text-left .x-btn-icon{width:24px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-reset .x-btn-default-medium-icon-text-left .x-btn-icon,.x-quirks .x-reset .x-btn-default-medium-icon-text-left .x-btn-icon{height:24px}.x-reset .x-btn-default-medium-icon-text-right button,.x-reset .x-btn-default-medium-icon-text-right a{height:24px}.x-reset .x-btn-default-medium-icon-text-right .x-btn-inner{height:24px;line-height:24px;padding-right:28px!important}.x-reset .x-btn-default-medium-icon-text-right .x-btn-icon{width:24px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-medium-icon-text-right .x-btn-icon,.x-quirks .x-reset .x-btn-default-medium-icon-text-right .x-btn-icon{height:24px}.x-reset .x-btn-default-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-reset .x-btn-default-medium-icon-text-top .x-btn-icon{width:auto;height:24px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-reset .x-btn-default-medium-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-medium-icon-text-top .x-btn-icon{width:24px}.x-reset .x-btn-default-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-reset .x-btn-default-medium-icon-text-bottom .x-btn-icon{width:auto;height:24px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-medium-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-medium-icon-text-bottom .x-btn-icon{width:24px}.x-reset .x-btn-default-medium-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-reset .x-btn-default-medium-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-reset .x-btn-default-medium-menu-active,.x-reset .x-btn-default-medium-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-ms-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-reset .x-btn-default-medium-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-ms-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-reset .x-btn-default-medium-disabled .x-btn-inner{color:#333!important}.x-reset .x-ie .x-btn-default-medium-disabled .x-btn-inner{color:#595959!important}.x-reset .x-ie6 .x-btn-default-medium-disabled .x-btn-inner{color:#8c8c8c!important}.x-reset .x-nbr .x-btn-default-medium-over .x-frame-tl,.x-reset .x-nbr .x-btn-default-medium-over .x-frame-bl,.x-reset .x-nbr .x-btn-default-medium-over .x-frame-tr,.x-reset .x-nbr .x-btn-default-medium-over .x-frame-br,.x-reset .x-nbr .x-btn-default-medium-over .x-frame-tc,.x-reset .x-nbr .x-btn-default-medium-over .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-over-corners.gif')}.x-reset .x-nbr .x-btn-default-medium-over .x-frame-ml,.x-reset .x-nbr .x-btn-default-medium-over .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-over-sides.gif')}.x-reset .x-nbr .x-btn-default-medium-over .x-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-over-bg.gif')}.x-reset .x-nbr .x-btn-default-medium-focus .x-frame-tl,.x-reset .x-nbr .x-btn-default-medium-focus .x-frame-bl,.x-reset .x-nbr .x-btn-default-medium-focus .x-frame-tr,.x-reset .x-nbr .x-btn-default-medium-focus .x-frame-br,.x-reset .x-nbr .x-btn-default-medium-focus .x-frame-tc,.x-reset .x-nbr .x-btn-default-medium-focus .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-focus-corners.gif')}.x-reset .x-nbr .x-btn-default-medium-focus .x-frame-ml,.x-reset .x-nbr .x-btn-default-medium-focus .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-focus-sides.gif')}.x-reset .x-nbr .x-btn-default-medium-focus .x-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-focus-bg.gif')}.x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-tl,.x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-bl,.x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-tr,.x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-br,.x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-tc,.x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-bc,.x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-tl,.x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-bl,.x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-tr,.x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-br,.x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-tc,.x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-pressed-corners.gif')}.x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-ml,.x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-mr,.x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-ml,.x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-pressed-sides.gif')}.x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-mc,.x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-mc{background-color:#b6cbe4;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif')}.x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-tl,.x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-bl,.x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-tr,.x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-br,.x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-tc,.x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-disabled-corners.gif')}.x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-ml,.x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-disabled-sides.gif')}.x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-mc{background-color:#f7f7f7;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif')}.x-reset .x-nlg .x-btn-default-medium{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif')}.x-reset .x-nlg .x-btn-default-medium-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-over-bg.gif')}.x-reset .x-nlg .x-btn-default-medium-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-focus-bg.gif')}.x-reset .x-nlg .x-btn-default-medium-menu-active,.x-reset .x-nlg .x-btn-default-medium-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif')}.x-reset .x-nlg .x-btn-default-medium-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif')}.x-reset .x-btn-default-large{border-color:#d1d1d1}.x-reset .x-btn-default-large{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-ms-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x-reset .x-nlg .x-btn-default-large-mc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-bg.gif');background-color:white}.x-reset .x-nbr .x-btn-default-large{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-reset .x-nbr .x-btn-default-large-tl,.x-reset .x-nbr .x-btn-default-large-bl,.x-reset .x-nbr .x-btn-default-large-tr,.x-reset .x-nbr .x-btn-default-large-br,.x-reset .x-nbr .x-btn-default-large-tc,.x-reset .x-nbr .x-btn-default-large-bc,.x-reset .x-nbr .x-btn-default-large-ml,.x-reset .x-nbr .x-btn-default-large-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-large-corners.gif')}.x-reset .x-nbr .x-btn-default-large-ml,.x-reset .x-nbr .x-btn-default-large-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-large-sides.gif');background-position:0 0}.x-reset .x-nbr .x-btn-default-large-mc{padding:1px 1px 1px 1px}.x-reset .x-strict .x-ie7 .x-btn-default-large-tl,.x-reset .x-strict .x-ie7 .x-btn-default-large-bl{position:relative;right:0}.x-reset .x-btn-default-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-reset .x-btn-default-large-icon button,.x-reset .x-btn-default-large-icon a,.x-reset .x-btn-default-large-icon .x-btn-inner,.x-reset .x-btn-default-large-noicon button,.x-reset .x-btn-default-large-noicon a,.x-reset .x-btn-default-large-noicon .x-btn-inner{height:32px;line-height:32px}.x-reset .x-btn-default-large-icon button,.x-reset .x-btn-default-large-icon a{padding:0}.x-reset .x-btn-default-large-icon .x-btn-inner{width:32px;padding:0}.x-reset .x-btn-default-large-icon .x-btn-icon{width:32px;height:32px;top:0;left:0;bottom:0;right:0}.x-reset .x-btn-default-large-icon-text-left button,.x-reset .x-btn-default-large-icon-text-left a{height:32px}.x-reset .x-btn-default-large-icon-text-left .x-btn-inner{height:32px;line-height:32px;padding-left:36px}.x-reset .x-btn-default-large-icon-text-left .x-btn-icon{width:32px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-reset .x-btn-default-large-icon-text-left .x-btn-icon,.x-quirks .x-reset .x-btn-default-large-icon-text-left .x-btn-icon{height:32px}.x-reset .x-btn-default-large-icon-text-right button,.x-reset .x-btn-default-large-icon-text-right a{height:32px}.x-reset .x-btn-default-large-icon-text-right .x-btn-inner{height:32px;line-height:32px;padding-right:36px!important}.x-reset .x-btn-default-large-icon-text-right .x-btn-icon{width:32px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-large-icon-text-right .x-btn-icon,.x-quirks .x-reset .x-btn-default-large-icon-text-right .x-btn-icon{height:32px}.x-reset .x-btn-default-large-icon-text-top .x-btn-inner{padding-top:36px}.x-reset .x-btn-default-large-icon-text-top .x-btn-icon{width:auto;height:32px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-reset .x-btn-default-large-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-large-icon-text-top .x-btn-icon{width:32px}.x-reset .x-btn-default-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-reset .x-btn-default-large-icon-text-bottom .x-btn-icon{width:auto;height:32px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-large-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-large-icon-text-bottom .x-btn-icon{width:32px}.x-reset .x-btn-default-large-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-reset .x-btn-default-large-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-reset .x-btn-default-large-menu-active,.x-reset .x-btn-default-large-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-ms-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-reset .x-btn-default-large-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-ms-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-reset .x-btn-default-large-disabled .x-btn-inner{color:#333!important}.x-reset .x-ie .x-btn-default-large-disabled .x-btn-inner{color:#595959!important}.x-reset .x-ie6 .x-btn-default-large-disabled .x-btn-inner{color:#8c8c8c!important}.x-reset .x-nbr .x-btn-default-large-over .x-frame-tl,.x-reset .x-nbr .x-btn-default-large-over .x-frame-bl,.x-reset .x-nbr .x-btn-default-large-over .x-frame-tr,.x-reset .x-nbr .x-btn-default-large-over .x-frame-br,.x-reset .x-nbr .x-btn-default-large-over .x-frame-tc,.x-reset .x-nbr .x-btn-default-large-over .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-over-corners.gif')}.x-reset .x-nbr .x-btn-default-large-over .x-frame-ml,.x-reset .x-nbr .x-btn-default-large-over .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-large-over-sides.gif')}.x-reset .x-nbr .x-btn-default-large-over .x-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-large-over-bg.gif')}.x-reset .x-nbr .x-btn-default-large-focus .x-frame-tl,.x-reset .x-nbr .x-btn-default-large-focus .x-frame-bl,.x-reset .x-nbr .x-btn-default-large-focus .x-frame-tr,.x-reset .x-nbr .x-btn-default-large-focus .x-frame-br,.x-reset .x-nbr .x-btn-default-large-focus .x-frame-tc,.x-reset .x-nbr .x-btn-default-large-focus .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-focus-corners.gif')}.x-reset .x-nbr .x-btn-default-large-focus .x-frame-ml,.x-reset .x-nbr .x-btn-default-large-focus .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-large-focus-sides.gif')}.x-reset .x-nbr .x-btn-default-large-focus .x-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-large-focus-bg.gif')}.x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-tl,.x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-bl,.x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-tr,.x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-br,.x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-tc,.x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-bc,.x-reset .x-nbr .x-btn-default-large-pressed .x-frame-tl,.x-reset .x-nbr .x-btn-default-large-pressed .x-frame-bl,.x-reset .x-nbr .x-btn-default-large-pressed .x-frame-tr,.x-reset .x-nbr .x-btn-default-large-pressed .x-frame-br,.x-reset .x-nbr .x-btn-default-large-pressed .x-frame-tc,.x-reset .x-nbr .x-btn-default-large-pressed .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-pressed-corners.gif')}.x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-ml,.x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-mr,.x-reset .x-nbr .x-btn-default-large-pressed .x-frame-ml,.x-reset .x-nbr .x-btn-default-large-pressed .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-large-pressed-sides.gif')}.x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-mc,.x-reset .x-nbr .x-btn-default-large-pressed .x-frame-mc{background-color:#b6cbe4;background-image:url('../../resources/themes/images/default/btn/btn-default-large-pressed-bg.gif')}.x-reset .x-nbr .x-btn-default-large-disabled .x-frame-tl,.x-reset .x-nbr .x-btn-default-large-disabled .x-frame-bl,.x-reset .x-nbr .x-btn-default-large-disabled .x-frame-tr,.x-reset .x-nbr .x-btn-default-large-disabled .x-frame-br,.x-reset .x-nbr .x-btn-default-large-disabled .x-frame-tc,.x-reset .x-nbr .x-btn-default-large-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-disabled-corners.gif')}.x-reset .x-nbr .x-btn-default-large-disabled .x-frame-ml,.x-reset .x-nbr .x-btn-default-large-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-large-disabled-sides.gif')}.x-reset .x-nbr .x-btn-default-large-disabled .x-frame-mc{background-color:#f7f7f7;background-image:url('../../resources/themes/images/default/btn/btn-default-large-disabled-bg.gif')}.x-reset .x-nlg .x-btn-default-large{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-bg.gif')}.x-reset .x-nlg .x-btn-default-large-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-over-bg.gif')}.x-reset .x-nlg .x-btn-default-large-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-focus-bg.gif')}.x-reset .x-nlg .x-btn-default-large-menu-active,.x-reset .x-nlg .x-btn-default-large-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-pressed-bg.gif')}.x-reset .x-nlg .x-btn-default-large-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-disabled-bg.gif')}.x-reset .x-btn-default-toolbar-small{border-color:transparent}.x-reset .x-btn-default-toolbar-small{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:transparent}.x-reset .x-nlg .x-btn-default-toolbar-small-mc{background-color:transparent}.x-reset .x-nbr .x-btn-default-toolbar-small{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-reset .x-nbr .x-btn-default-toolbar-small-tl,.x-reset .x-nbr .x-btn-default-toolbar-small-bl,.x-reset .x-nbr .x-btn-default-toolbar-small-tr,.x-reset .x-nbr .x-btn-default-toolbar-small-br,.x-reset .x-nbr .x-btn-default-toolbar-small-tc,.x-reset .x-nbr .x-btn-default-toolbar-small-bc,.x-reset .x-nbr .x-btn-default-toolbar-small-ml,.x-reset .x-nbr .x-btn-default-toolbar-small-mr{zoom:1}.x-reset .x-nbr .x-btn-default-toolbar-small-ml,.x-reset .x-nbr .x-btn-default-toolbar-small-mr{zoom:1}.x-reset .x-nbr .x-btn-default-toolbar-small-mc{padding:0}.x-reset .x-strict .x-ie7 .x-btn-default-toolbar-small-tl,.x-reset .x-strict .x-ie7 .x-btn-default-toolbar-small-bl{position:relative;right:0}.x-reset .x-btn-default-toolbar-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 4px}.x-reset .x-btn-default-toolbar-small-icon button,.x-reset .x-btn-default-toolbar-small-icon a,.x-reset .x-btn-default-toolbar-small-icon .x-btn-inner,.x-reset .x-btn-default-toolbar-small-noicon button,.x-reset .x-btn-default-toolbar-small-noicon a,.x-reset .x-btn-default-toolbar-small-noicon .x-btn-inner{height:16px;line-height:16px}.x-reset .x-btn-default-toolbar-small-icon button,.x-reset .x-btn-default-toolbar-small-icon a{padding:0}.x-reset .x-btn-default-toolbar-small-icon .x-btn-inner{width:16px;padding:0}.x-reset .x-btn-default-toolbar-small-icon .x-btn-icon{width:16px;height:16px;top:0;left:0;bottom:0;right:0}.x-reset .x-btn-default-toolbar-small-icon-text-left button,.x-reset .x-btn-default-toolbar-small-icon-text-left a{height:16px}.x-reset .x-btn-default-toolbar-small-icon-text-left .x-btn-inner{height:16px;line-height:16px;padding-left:20px}.x-reset .x-btn-default-toolbar-small-icon-text-left .x-btn-icon{width:16px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-reset .x-btn-default-toolbar-small-icon-text-left .x-btn-icon,.x-quirks .x-reset .x-btn-default-toolbar-small-icon-text-left .x-btn-icon{height:16px}.x-reset .x-btn-default-toolbar-small-icon-text-right button,.x-reset .x-btn-default-toolbar-small-icon-text-right a{height:16px}.x-reset .x-btn-default-toolbar-small-icon-text-right .x-btn-inner{height:16px;line-height:16px;padding-right:20px!important}.x-reset .x-btn-default-toolbar-small-icon-text-right .x-btn-icon{width:16px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-small-icon-text-right .x-btn-icon,.x-quirks .x-reset .x-btn-default-toolbar-small-icon-text-right .x-btn-icon{height:16px}.x-reset .x-btn-default-toolbar-small-icon-text-top .x-btn-inner{padding-top:20px}.x-reset .x-btn-default-toolbar-small-icon-text-top .x-btn-icon{width:auto;height:16px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-small-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-toolbar-small-icon-text-top .x-btn-icon{width:16px}.x-reset .x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-reset .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon{width:auto;height:16px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon{width:16px}.x-reset .x-btn-default-toolbar-small-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-reset .x-btn-default-toolbar-small-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-reset .x-btn-default-toolbar-small-menu-active,.x-reset .x-btn-default-toolbar-small-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-ms-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-reset .x-btn-default-toolbar-small-disabled{background-image:none;background-color:transparent}.x-reset .x-btn-default-toolbar-small-disabled .x-btn-inner{color:#333!important}.x-reset .x-ie .x-btn-default-toolbar-small-disabled .x-btn-inner{color:#595959!important}.x-reset .x-ie6 .x-btn-default-toolbar-small-disabled .x-btn-inner{color:#8c8c8c!important}.x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-corners.gif')}.x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-sides.gif')}.x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif')}.x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-corners.gif')}.x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-sides.gif')}.x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif')}.x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bc,.x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-corners.gif')}.x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mr,.x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-sides.gif')}.x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mc,.x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mc{background-color:#bccfe5;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif')}.x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-disabled-corners.gif')}.x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-disabled-sides.gif')}.x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mc{background-color:transparent}.x-reset .x-nlg .x-btn-default-toolbar-small-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif')}.x-reset .x-nlg .x-btn-default-toolbar-small-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif')}.x-reset .x-nlg .x-btn-default-toolbar-small-menu-active,.x-reset .x-nlg .x-btn-default-toolbar-small-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif')}.x-reset .x-btn-default-toolbar-medium{border-color:transparent}.x-reset .x-btn-default-toolbar-medium{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-reset .x-nlg .x-btn-default-toolbar-medium-mc{background-color:transparent}.x-reset .x-nbr .x-btn-default-toolbar-medium{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-reset .x-nbr .x-btn-default-toolbar-medium-tl,.x-reset .x-nbr .x-btn-default-toolbar-medium-bl,.x-reset .x-nbr .x-btn-default-toolbar-medium-tr,.x-reset .x-nbr .x-btn-default-toolbar-medium-br,.x-reset .x-nbr .x-btn-default-toolbar-medium-tc,.x-reset .x-nbr .x-btn-default-toolbar-medium-bc,.x-reset .x-nbr .x-btn-default-toolbar-medium-ml,.x-reset .x-nbr .x-btn-default-toolbar-medium-mr{zoom:1}.x-reset .x-nbr .x-btn-default-toolbar-medium-ml,.x-reset .x-nbr .x-btn-default-toolbar-medium-mr{zoom:1}.x-reset .x-nbr .x-btn-default-toolbar-medium-mc{padding:1px 1px 1px 1px}.x-reset .x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,.x-reset .x-strict .x-ie7 .x-btn-default-toolbar-medium-bl{position:relative;right:0}.x-reset .x-btn-default-toolbar-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-reset .x-btn-default-toolbar-medium-icon button,.x-reset .x-btn-default-toolbar-medium-icon a,.x-reset .x-btn-default-toolbar-medium-icon .x-btn-inner,.x-reset .x-btn-default-toolbar-medium-noicon button,.x-reset .x-btn-default-toolbar-medium-noicon a,.x-reset .x-btn-default-toolbar-medium-noicon .x-btn-inner{height:24px;line-height:24px}.x-reset .x-btn-default-toolbar-medium-icon button,.x-reset .x-btn-default-toolbar-medium-icon a{padding:0}.x-reset .x-btn-default-toolbar-medium-icon .x-btn-inner{width:24px;padding:0}.x-reset .x-btn-default-toolbar-medium-icon .x-btn-icon{width:24px;height:24px;top:0;left:0;bottom:0;right:0}.x-reset .x-btn-default-toolbar-medium-icon-text-left button,.x-reset .x-btn-default-toolbar-medium-icon-text-left a{height:24px}.x-reset .x-btn-default-toolbar-medium-icon-text-left .x-btn-inner{height:24px;line-height:24px;padding-left:28px}.x-reset .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon{width:24px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-reset .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon,.x-quirks .x-reset .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon{height:24px}.x-reset .x-btn-default-toolbar-medium-icon-text-right button,.x-reset .x-btn-default-toolbar-medium-icon-text-right a{height:24px}.x-reset .x-btn-default-toolbar-medium-icon-text-right .x-btn-inner{height:24px;line-height:24px;padding-right:28px!important}.x-reset .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon{width:24px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon,.x-quirks .x-reset .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon{height:24px}.x-reset .x-btn-default-toolbar-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-reset .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon{width:auto;height:24px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon{width:24px}.x-reset .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-reset .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon{width:auto;height:24px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon{width:24px}.x-reset .x-btn-default-toolbar-medium-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-reset .x-btn-default-toolbar-medium-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-reset .x-btn-default-toolbar-medium-menu-active,.x-reset .x-btn-default-toolbar-medium-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-ms-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-reset .x-btn-default-toolbar-medium-disabled{background-image:none;background-color:transparent}.x-reset .x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#333!important}.x-reset .x-ie .x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#595959!important}.x-reset .x-ie6 .x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#8c8c8c!important}.x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-corners.gif')}.x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-sides.gif')}.x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif')}.x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-corners.gif')}.x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-sides.gif')}.x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif')}.x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bc,.x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-corners.gif')}.x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mr,.x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-sides.gif')}.x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mc,.x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mc{background-color:#bccfe5;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif')}.x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-corners.gif')}.x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-sides.gif')}.x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mc{background-color:transparent}.x-reset .x-nlg .x-btn-default-toolbar-medium-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif')}.x-reset .x-nlg .x-btn-default-toolbar-medium-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif')}.x-reset .x-nlg .x-btn-default-toolbar-medium-menu-active,.x-reset .x-nlg .x-btn-default-toolbar-medium-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif')}.x-reset .x-btn-default-toolbar-large{border-color:transparent}.x-reset .x-btn-default-toolbar-large{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-reset .x-nlg .x-btn-default-toolbar-large-mc{background-color:transparent}.x-reset .x-nbr .x-btn-default-toolbar-large{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-reset .x-nbr .x-btn-default-toolbar-large-tl,.x-reset .x-nbr .x-btn-default-toolbar-large-bl,.x-reset .x-nbr .x-btn-default-toolbar-large-tr,.x-reset .x-nbr .x-btn-default-toolbar-large-br,.x-reset .x-nbr .x-btn-default-toolbar-large-tc,.x-reset .x-nbr .x-btn-default-toolbar-large-bc,.x-reset .x-nbr .x-btn-default-toolbar-large-ml,.x-reset .x-nbr .x-btn-default-toolbar-large-mr{zoom:1}.x-reset .x-nbr .x-btn-default-toolbar-large-ml,.x-reset .x-nbr .x-btn-default-toolbar-large-mr{zoom:1}.x-reset .x-nbr .x-btn-default-toolbar-large-mc{padding:1px 1px 1px 1px}.x-reset .x-strict .x-ie7 .x-btn-default-toolbar-large-tl,.x-reset .x-strict .x-ie7 .x-btn-default-toolbar-large-bl{position:relative;right:0}.x-reset .x-btn-default-toolbar-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-reset .x-btn-default-toolbar-large-icon button,.x-reset .x-btn-default-toolbar-large-icon a,.x-reset .x-btn-default-toolbar-large-icon .x-btn-inner,.x-reset .x-btn-default-toolbar-large-noicon button,.x-reset .x-btn-default-toolbar-large-noicon a,.x-reset .x-btn-default-toolbar-large-noicon .x-btn-inner{height:32px;line-height:32px}.x-reset .x-btn-default-toolbar-large-icon button,.x-reset .x-btn-default-toolbar-large-icon a{padding:0}.x-reset .x-btn-default-toolbar-large-icon .x-btn-inner{width:32px;padding:0}.x-reset .x-btn-default-toolbar-large-icon .x-btn-icon{width:32px;height:32px;top:0;left:0;bottom:0;right:0}.x-reset .x-btn-default-toolbar-large-icon-text-left button,.x-reset .x-btn-default-toolbar-large-icon-text-left a{height:32px}.x-reset .x-btn-default-toolbar-large-icon-text-left .x-btn-inner{height:32px;line-height:32px;padding-left:36px}.x-reset .x-btn-default-toolbar-large-icon-text-left .x-btn-icon{width:32px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-reset .x-btn-default-toolbar-large-icon-text-left .x-btn-icon,.x-quirks .x-reset .x-btn-default-toolbar-large-icon-text-left .x-btn-icon{height:32px}.x-reset .x-btn-default-toolbar-large-icon-text-right button,.x-reset .x-btn-default-toolbar-large-icon-text-right a{height:32px}.x-reset .x-btn-default-toolbar-large-icon-text-right .x-btn-inner{height:32px;line-height:32px;padding-right:36px!important}.x-reset .x-btn-default-toolbar-large-icon-text-right .x-btn-icon{width:32px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-large-icon-text-right .x-btn-icon,.x-quirks .x-reset .x-btn-default-toolbar-large-icon-text-right .x-btn-icon{height:32px}.x-reset .x-btn-default-toolbar-large-icon-text-top .x-btn-inner{padding-top:36px}.x-reset .x-btn-default-toolbar-large-icon-text-top .x-btn-icon{width:auto;height:32px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-large-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-toolbar-large-icon-text-top .x-btn-icon{width:32px}.x-reset .x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-reset .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon{width:auto;height:32px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon{width:32px}.x-reset .x-btn-default-toolbar-large-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-reset .x-btn-default-toolbar-large-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-reset .x-btn-default-toolbar-large-menu-active,.x-reset .x-btn-default-toolbar-large-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-ms-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-reset .x-btn-default-toolbar-large-disabled{background-image:none;background-color:transparent}.x-reset .x-btn-default-toolbar-large-disabled .x-btn-inner{color:#333!important}.x-reset .x-ie .x-btn-default-toolbar-large-disabled .x-btn-inner{color:#595959!important}.x-reset .x-ie6 .x-btn-default-toolbar-large-disabled .x-btn-inner{color:#8c8c8c!important}.x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-corners.gif')}.x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-sides.gif')}.x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif')}.x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-corners.gif')}.x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-sides.gif')}.x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif')}.x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bc,.x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-corners.gif')}.x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mr,.x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-sides.gif')}.x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mc,.x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mc{background-color:#bccfe5;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif')}.x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-disabled-corners.gif')}.x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-disabled-sides.gif')}.x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mc{background-color:transparent}.x-reset .x-nlg .x-btn-default-toolbar-large-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif')}.x-reset .x-nlg .x-btn-default-toolbar-large-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif')}.x-reset .x-nlg .x-btn-default-toolbar-large-menu-active,.x-reset .x-nlg .x-btn-default-toolbar-large-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif')}.x-reset .x-btn-default-toolbar-small-disabled,.x-reset .x-btn-default-toolbar-medium-disabled,.x-reset .x-btn-default-toolbar-large-disabled{border-color:transparent;background-image:none;background:transparent}.x-reset .x-btn-group{position:relative;overflow:hidden}.x-reset .x-btn-group-body{position:relative;zoom:1;padding:0 1px}.x-reset .x-btn-group-body .x-table-layout-cell{vertical-align:top}.x-reset .x-btn-group-header-text{white-space:nowrap}.x-reset .x-btn-group-default-framed{-moz-border-radius:2px;-webkit-border-radius:2px;-o-border-radius:2px;-ms-border-radius:2px;-khtml-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#d0def0}.x-reset .x-nlg .x-btn-group-default-framed-mc{background-color:#d0def0}.x-reset .x-nbr .x-btn-group-default-framed{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000202px 1000202px}.x-reset .x-nbr .x-btn-group-default-framed-tl,.x-reset .x-nbr .x-btn-group-default-framed-bl,.x-reset .x-nbr .x-btn-group-default-framed-tr,.x-reset .x-nbr .x-btn-group-default-framed-br,.x-reset .x-nbr .x-btn-group-default-framed-tc,.x-reset .x-nbr .x-btn-group-default-framed-bc,.x-reset .x-nbr .x-btn-group-default-framed-ml,.x-reset .x-nbr .x-btn-group-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn-group/btn-group-default-framed-corners.gif')}.x-reset .x-nbr .x-btn-group-default-framed-ml,.x-reset .x-nbr .x-btn-group-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn-group/btn-group-default-framed-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-btn-group-default-framed-mc{padding:0}.x-reset .x-strict .x-ie7 .x-btn-group-default-framed-tl,.x-reset .x-strict .x-ie7 .x-btn-group-default-framed-bl{position:relative;right:0}.x-reset .x-btn-group-default-framed{border-color:#b7c8d7;-moz-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-webkit-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-o-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset}.x-reset .x-btn-group-header-default-framed{margin:2px 2px 0 2px}.x-reset .x-btn-group-header-body-default-framed{padding:1px 0;background:#c2d8f0;-moz-border-radius-topleft:2px;-webkit-border-top-left-radius:2px;-o-border-top-left-radius:2px;-ms-border-top-left-radius:2px;-khtml-border-top-left-radius:2px;border-top-left-radius:2px;-moz-border-radius-topright:2px;-webkit-border-top-right-radius:2px;-o-border-top-right-radius:2px;-ms-border-top-right-radius:2px;-khtml-border-top-right-radius:2px;border-top-right-radius:2px}.x-reset .x-btn-group-header-text-default-framed{font:normal 11px tahoma,arial,verdana,sans-serif;color:#3e6aaa}.x-reset .x-datepicker{border:1px solid #1b376c;background-color:white;position:relative}.x-reset .x-datepicker a{-moz-outline:0 none;outline:0 none;color:#15428b;text-decoration:none;border-width:0}.x-reset .x-datepicker-inner,.x-reset .x-datepicker-inner td,.x-reset .x-datepicker-inner th{border-collapse:separate}.x-reset .x-datepicker-header{position:relative;height:26px;background-image:none;background-color:#23427c;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#264888),color-stop(100%,#1f3a6c));background-image:-webkit-linear-gradient(top,#264888,#1f3a6c);background-image:-moz-linear-gradient(top,#264888,#1f3a6c);background-image:-o-linear-gradient(top,#264888,#1f3a6c);background-image:-ms-linear-gradient(top,#264888,#1f3a6c);background-image:linear-gradient(top,#264888,#1f3a6c)}.x-reset .x-datepicker-prev,.x-reset .x-datepicker-next{position:absolute;top:5px;width:18px}.x-reset .x-datepicker-prev a,.x-reset .x-datepicker-next a{display:block;width:16px;height:16px;background-position:top;background-repeat:no-repeat;cursor:pointer;text-decoration:none!important;filter:alpha(opacity=70);opacity:.7}.x-reset .x-datepicker-prev a:hover,.x-reset .x-datepicker-next a:hover{filter:alpha(opacity=100);opacity:1}.x-reset .x-datepicker-next{right:5px}.x-reset .x-datepicker-next a{background-image:url('../../resources/themes/images/default/shared/right-btn.gif')}.x-reset .x-datepicker-prev{left:5px}.x-reset .x-datepicker-prev a{background-image:url('../../resources/themes/images/default/shared/left-btn.gif')}.x-reset .x-item-disabled .x-datepicker-prev a:hover,.x-reset .x-item-disabled .x-datepicker-next a:hover{filter:alpha(opacity=60);opacity:.6}.x-reset .x-datepicker-month{padding-top:3px}.x-reset .x-datepicker-month .x-btn,.x-reset .x-datepicker-month button,.x-reset .x-datepicker-month .x-btn-tc,.x-reset .x-datepicker-month .x-btn-tl,.x-reset .x-datepicker-month .x-btn-tr,.x-reset .x-datepicker-month .x-btn-mc,.x-reset .x-datepicker-month .x-btn-ml,.x-reset .x-datepicker-month .x-btn-mr,.x-reset .x-datepicker-month .x-btn-bc,.x-reset .x-datepicker-month .x-btn-bl,.x-reset .x-datepicker-month .x-btn-br{background:transparent!important;border-width:0!important}.x-reset .x-datepicker-month span{color:#fff!important}.x-reset .x-datepicker-month .x-btn-split-right{background-image:url('../../resources/themes/images/default/button/s-arrow-light.gif');padding-right:12px}.x-reset .x-datepicker-next{text-align:right}.x-reset .x-datepicker-month{text-align:center}.x-reset .x-datepicker-month button{color:white!important}.x-reset table.x-datepicker-inner{width:100%;table-layout:fixed}.x-reset table.x-datepicker-inner th{width:25px;height:19px;padding:0;color:#233d6d;font:normal 10px tahoma,arial,verdana,sans-serif;text-align:right;border-bottom:1px solid #b2d1f5;border-collapse:separate;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#edf4fd),color-stop(100%,#cde1f9));background-image:-webkit-linear-gradient(top,#edf4fd,#cde1f9);background-image:-moz-linear-gradient(top,#edf4fd,#cde1f9);background-image:-o-linear-gradient(top,#edf4fd,#cde1f9);background-image:-ms-linear-gradient(top,#edf4fd,#cde1f9);background-image:linear-gradient(top,#edf4fd,#cde1f9);cursor:default}.x-reset table.x-datepicker-inner th span{display:block;padding-right:7px}.x-reset table.x-datepicker-inner tr{height:20px}.x-reset table.x-datepicker-inner td{border:1px solid;height:17px;border-color:white;text-align:right;padding:0}.x-reset table.x-datepicker-inner a{padding-right:4px;display:block;zoom:1;font:normal 11px tahoma,arial,verdana,sans-serif;color:black;text-decoration:none;text-align:right}.x-reset table.x-datepicker-inner .x-datepicker-active{cursor:pointer;color:black}.x-reset table.x-datepicker-inner .x-datepicker-selected a{background:repeat-x left top;background-color:#dae5f3;border:1px solid #8db2e3}.x-reset table.x-datepicker-inner .x-datepicker-selected span{font-weight:bold}.x-reset table.x-datepicker-inner .x-datepicker-today a{border:1px solid;border-color:darkred}.x-reset table.x-datepicker-inner .x-datepicker-prevday a,.x-reset table.x-datepicker-inner .x-datepicker-nextday a{text-decoration:none!important;color:#aaa}.x-reset table.x-datepicker-inner a:hover,.x-reset table.x-datepicker-inner .x-datepicker-disabled a:hover{text-decoration:none!important;color:#000;background-color:#ddecfe}.x-reset table.x-datepicker-inner .x-datepicker-disabled a{cursor:default;background-color:#eee;color:#bbb}.x-reset .x-datepicker-footer,.x-reset .x-monthpicker-buttons{position:relative;border-top:1px solid #b2d1f5;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dee8f5),color-stop(49%,#d1dff0),color-stop(51%,#c7d8ed),color-stop(100%,#cbdaee));background-image:-webkit-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-moz-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-o-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-ms-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);text-align:center}.x-reset .x-datepicker-footer .x-btn,.x-reset .x-monthpicker-buttons .x-btn{position:relative;margin:4px}.x-reset .x-item-disabled .x-datepicker-inner a:hover{background:0}.x-reset .x-datepicker .x-monthpicker{position:absolute;left:0;top:0}.x-reset .x-monthpicker{border:1px solid #1b376c;background-color:white}.x-reset .x-monthpicker-months,.x-reset .x-monthpicker-years{float:left;height:167px;width:88px}.x-reset .x-monthpicker-item{float:left;margin:4px 0 5px 0;font:normal 11px tahoma,arial,verdana,sans-serif;text-align:center;vertical-align:middle;height:18px;width:43px;border:0 none}.x-reset .x-monthpicker-item a{display:block;margin:0 5px;text-decoration:none;color:#15428b;border:1px solid white;line-height:17px}.x-reset .x-monthpicker-item a:hover{background-color:#ddecfe}.x-reset .x-monthpicker-item a.x-monthpicker-selected{background-color:#dfecfb;border:1px solid #8db2e3}.x-reset .x-monthpicker-months{border-right:1px solid #1b376c;width:87px}.x-reset .x-monthpicker-years .x-monthpicker-item{width:44px}.x-reset .x-monthpicker-yearnav{height:28px}.x-reset .x-monthpicker-yearnav button{background-image:url('../../resources/themes/images/default/tools/tool-sprites.gif');height:15px;width:15px;padding:0;margin:6px 12px 5px 15px;border:0;outline:0 none}.x-reset .x-monthpicker-yearnav button::-moz-focus-inner{border:0;padding:0}.x-reset .x-monthpicker-yearnav-next{background-position:0 -120px}.x-reset .x-monthpicker-yearnav-next-over{cursor:pointer;cursor:hand;background-position:-15px -120px}.x-reset .x-monthpicker-yearnav-prev{background-position:0 -105px}.x-reset .x-monthpicker-yearnav-prev-over{cursor:pointer;cursor:hand;background-position:-15px -105px}.x-reset .x-monthpicker-small .x-monthpicker-item{margin:2px 0 2px 0}.x-reset .x-monthpicker-small .x-monthpicker-yearnav{height:23px}.x-reset .x-monthpicker-small .x-monthpicker-months,.x-reset .x-monthpicker-small .x-monthpicker-years{height:136px}.x-reset .x-quirks .x-ie7 .x-monthpicker-buttons .x-btn,.x-reset .x-quirks .x-ie8 .x-monthpicker-buttons .x-btn{margin-top:2px}.x-reset .x-quirks .x-monthpicker-small .x-monthpicker-yearnav button{margin-top:3px;margin-bottom:3px}.x-reset .x-ie6 .x-monthpicker-small .x-monthpicker-yearnav button{margin-top:3px;margin-bottom:3px}.x-reset .x-nlg .x-datepicker-header{background-image:url('../../resources/themes/images/default/datepicker/datepicker-header-bg.gif');background-repeat:repeat-x;background-position:top left}.x-reset .x-nlg .x-datepicker-footer,.x-reset .x-nlg .x-monthpicker-buttons{background-image:url('../../resources/themes/images/default/datepicker/datepicker-footer-bg.gif');background-repeat:repeat-x;background-position:top left}.x-reset .x-color-picker{width:144px;height:90px;cursor:pointer}.x-reset .x-color-picker a{border:1px solid #fff;float:left;padding:2px;text-decoration:none;-moz-outline:0 none;outline:0 none;cursor:pointer}.x-reset .x-color-picker a:hover,.x-reset .x-color-picker a.x-color-picker-selected{border-color:#8bb8f3;background-color:#deecfd}.x-reset .x-color-picker em{display:block;border:1px solid #aca899}.x-reset .x-color-picker em span{cursor:pointer;display:block;height:10px;width:10px;line-height:10px}.x-reset .x-menu-body{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;background:#f0f0f0!important;padding:2px}.x-reset .x-menu-item .x-form-text{user-select:text;-webkit-user-select:text;-o-user-select:text;-ie-user-select:text;-moz-user-select:text;-ie-user-select:text}.x-reset .x-menu-icon-separator{position:absolute;top:0;left:27px;z-index:0;border-left:solid 1px #e0e0e0;background-color:white;width:2px;overflow:hidden}.x-reset .x-menu-plain .x-menu-icon-separator{display:none}.x-reset .x-menu-focus{display:block;position:absolute;top:-10px;left:-10px;width:0;height:0}.x-reset .x-menu-item{white-space:nowrap;overflow:hidden;z-index:1}.x-reset .x-menu-item-cmp{margin-bottom:1px}.x-reset .x-menu-item-link{display:block;margin:1px;padding:6px 2px 3px 32px;text-decoration:none!important;line-height:16px;cursor:default}.x-reset .x-opera .x-menu-item-link{position:relative}.x-reset .x-menu-item-icon{width:16px;height:16px;position:absolute;top:5px;left:4px;background:no-repeat center center}.x-reset .x-menu-item-icon-right{width:16px;height:16px;position:absolute;top:6px;right:4px;background:no-repeat center center}.x-reset .x-menu-item-text{font-size:11px;color:#222}.x-reset .x-menu-item-checked .x-menu-item-icon{background-image:url('../../resources/themes/images/default/menu/checked.gif')}.x-reset .x-menu-item-checked .x-menu-group-icon{background-image:url('../../resources/themes/images/default/menu/group-checked.gif')}.x-reset .x-menu-item-unchecked .x-menu-item-icon{background-image:url('../../resources/themes/images/default/menu/unchecked.gif')}.x-reset .x-menu-item-unchecked .x-menu-group-icon{background-image:none}.x-reset .x-menu-item-separator{height:2px;border-top:solid 1px #e0e0e0;background-color:white;margin:2px 0;overflow:hidden}.x-reset .x-menu-item-arrow{position:absolute;width:12px;height:9px;top:9px;right:0;background:no-repeat center center;background-image:url('../../resources/themes/images/default/menu/menu-parent.gif')}.x-reset .x-menu-item-indent{margin-left:31px}.x-reset .x-menu-item-active{cursor:pointer}.x-reset .x-menu-item-active .x-menu-item-link{background-image:none;background-color:#d9e8fb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e7f0fc),color-stop(100%,#c7ddf9));background-image:-webkit-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-moz-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-o-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-ms-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:linear-gradient(top,#e7f0fc,#c7ddf9);margin:0;border:1px solid #a9cbf5;cursor:pointer;-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px}.x-reset .x-menu-item-disabled{filter:alpha(opacity=50);opacity:.5}.x-reset .x-ie .x-menu-item-disabled .x-menu-item-icon{filter:alpha(opacity=50);opacity:.5}.x-reset .x-ie .x-menu-item-disabled .x-menu-item-text{background-color:transparent}.x-strict .x-ie7m .x-reset .x-ie .x-menu-icon-separator{width:1px}.x-strict .x-ie7m .x-reset .x-ie .x-menu-item-separator{height:1px}.x-reset .x-ie6 .x-menu-item-link,.x-reset .x-ie7 .x-menu-item-link,.x-reset .x-quirks .x-ie8 .x-menu-item-link{padding-bottom:2px}.x-reset .x-nlg .x-menu-item-active .x-menu-item-link{background:#d9e8fb repeat-x left top;background-image:url('../../resources/themes/images/default/menu/menu-item-active-bg.gif')}.x-reset .x-menu-date-item{border-color:#99bbe8}.x-reset .x-panel .x-grid-body{background:white;border-color:#99bce8;border-style:solid;border-width:1px;border-top-color:#c5c5c5}.x-reset .x-panel .x-grid-header-ct-hidden{visibility:hidden}.x-reset .x-grid-empty{padding:10px;color:gray;font:normal 11px tahoma,arial,helvetica,sans-serif}.x-reset .x-grid-header-hidden .x-grid-body{border-top-color:#99bce8!important}.x-reset .x-grid-view{overflow:hidden;position:relative}.x-reset .x-grid-table{table-layout:fixed;border-collapse:separate}.x-reset .x-autowidth-table table.x-grid-table{table-layout:auto;width:auto!important}.x-reset .x-grid-row .x-grid-table{border-collapse:collapse}.x-reset .x-grid-locked .x-grid-inner-locked{border-width:0 1px 0 0!important;border-style:solid}.x-reset .x-grid-header-ct{cursor:default;zoom:1;padding:0;border:1px solid #99bce8;border-bottom-color:#c5c5c5;background-image:none;background-color:#c5c5c5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f9f9f9),color-stop(100%,#e3e4e6));background-image:-webkit-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-moz-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-o-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-ms-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:linear-gradient(top,#f9f9f9,#e3e4e6)}.x-reset .x-accordion-item .x-grid-header-ct{border-width:0 0 1px 0!important}.x-reset .x-column-header{padding:0;position:absolute;overflow:hidden;border-right:1px solid #c5c5c5;border-left:0 none;border-top:0 none;border-bottom:0 none;text-shadow:0 1px 0 rgba(255,255,255,0.3);color:null;font:normal 11px tahoma,arial,verdana,sans-serif;background-image:none;background-color:#c5c5c5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f9f9f9),color-stop(100%,#e3e4e6));background-image:-webkit-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-moz-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-o-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-ms-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:linear-gradient(top,#f9f9f9,#e3e4e6)}.x-reset .x-group-header{padding:0;border-left-width:0}.x-reset .x-group-sub-header{background:transparent;border-top:1px solid #c5c5c5;border-left-width:0}.x-reset .x-column-header-inner{zoom:1;position:relative;white-space:nowrap;line-height:15px;padding:3px 6px 4px}.x-reset .x-column-header-inner .x-column-header-text{white-space:nowrap}.x-reset .x-column-header-over,.x-reset .x-column-header-sort-ASC,.x-reset .x-column-header-sort-DESC{border-left-color:#aaccf6;border-right-color:#aaccf6;background-image:none;background-color:#aaccf6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ebf3fd),color-stop(39%,#ebf3fd),color-stop(40%,#d9e8fb),color-stop(100%,#d9e8fb));background-image:-webkit-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:-moz-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:-o-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:-ms-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb)}.x-reset .x-nlg .x-grid-header-ct,.x-reset .x-nlg .x-column-header{background:repeat-x 0 top;background-image:url('../../resources/themes/images/default/grid/column-header-bg.gif')}.x-reset .x-nlg .x-column-header-over,.x-reset .x-nlg .x-column-header-sort-ASC,.x-reset .x-nlg .x-column-header-sort-DESC{background:#ebf3fd repeat-x 0 top;background-image:url('../../resources/themes/images/default/grid/column-header-over-bg.gif')}.x-reset .x-column-header-trigger{display:none;height:100%;width:14px;background:no-repeat left center;background-color:#c3daf9;background-image:url('../../resources/themes/images/default/grid/grid3-hd-btn.gif');position:absolute;right:0;top:0;z-index:2;cursor:pointer}.x-reset .x-column-header-over .x-column-header-trigger,.x-reset .x-column-header-open .x-column-header-trigger{display:block}.x-reset .x-column-header-align-right{text-align:right}.x-reset .x-column-header-align-right .x-column-header-text{padding-right:.5ex;margin-right:6px}.x-reset .x-column-header-align-center{text-align:center}.x-reset .x-column-header-align-left{text-align:left}.x-reset .x-column-header-sort-ASC .x-column-header-text{padding-right:16px;background:no-repeat right 6px;background-image:url('../../resources/themes/images/default/grid/sort_asc.gif')}.x-reset .x-column-header-sort-DESC .x-column-header-text{padding-right:16px;background:no-repeat right 6px;background-image:url('../../resources/themes/images/default/grid/sort_desc.gif')}.x-reset .x-grid-row{vertical-align:top}.x-reset .x-grid-row .x-grid-cell{color:null;font:normal 11px/15px tahoma,arial,verdana,sans-serif;background-color:white;border-color:#ededed;border-style:solid;border-top-color:#fafafa;border-width:0}.x-reset .x-grid-with-row-lines .x-grid-cell{border-width:1px 0}.x-reset .x-grid-rowwrap-div{border-width:1px 0;border-color:#ededed;border-style:solid;border-top-color:#fafafa;overflow:hidden}.x-reset .x-grid-row-alt .x-grid-cell,.x-reset .x-grid-row-alt .x-grid-rowwrap-div{background-color:#fafafa}.x-reset .x-grid-row-over .x-grid-cell,.x-reset .x-grid-row-over .x-grid-rowwrap-div{border-color:#ddd;background-color:#efefef}.x-reset .x-grid-row-focused .x-grid-cell,.x-reset .x-grid-row-focused .x-grid-rowwrap-div{border-color:#ddd;background-color:#efefef}.x-reset .x-grid-row-selected .x-grid-cell,.x-reset .x-grid-row-selected .x-grid-rowwrap-div{border-style:dotted;border-color:#a3bae9;background-color:#dfe8f6!important}.x-reset .x-grid-rowwrap-div .x-grid-cell,.x-reset .x-grid-rowwrap-div .x-grid-cell-inner{border-width:0;background:transparent}.x-reset .x-grid-row-body-hidden{display:none}.x-reset .x-grid-rowbody{font:normal 11px/13px tahoma,arial,verdana,sans-serif;padding:4px}.x-reset .x-grid-rowbody p{margin:5px 5px 10px 5px}.x-reset .x-grid-cell{overflow:hidden}.x-reset .x-grid-cell-inner{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding:2px 6px 3px;white-space:nowrap}.x-reset .x-grid-with-row-lines .x-grid-cell-inner{line-height:13px;padding-bottom:4px}.x-reset .x-action-col-cell .x-grid-cell-inner{line-height:0;padding:2px}.x-reset .x-action-col-cell .x-item-disabled{filter:alpha(opacity=30);opacity:.3}.x-reset .x-grid-with-row-lines .x-action-col-cell .x-grid-cell-inner{padding-top:1px}.x-reset .x-grid-row .x-grid-cell-special{padding:0;border-right:1px solid #d0d0d0;background-image:none;background-color:#f6f6f6;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#f6f6f6),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-moz-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-o-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-ms-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:linear-gradient(left,#f6f6f6,#e9e9e9)}.x-reset .x-grid-row .x-grid-cell-row-checker{vertical-align:middle}.x-reset .x-ie6 .x-grid-header-row,.x-reset .x-ie7 .x-grid-header-row,.x-reset .x-quirks .x-ie8 .x-grid-header-row{position:absolute}.x-reset .x-grid-row-selected .x-grid-cell-special{border-right:1px solid #aaccf6;background-image:none;background-color:#dfe8f6;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dfe8f6),color-stop(100%,#cbdaf0));background-image:-webkit-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-moz-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-o-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-ms-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:linear-gradient(left,#dfe8f6,#cbdaf0)}.x-reset .x-grid-dirty-cell{background-image:url('../../resources/themes/images/default/grid/dirty.gif');background-position:0 0;background-repeat:no-repeat}.x-reset .x-grid-cell-selected{background-color:#b8cfee!important}.x-reset .x-nlg .x-grid-cell-special{background-repeat:repeat-y;background-position:top right}.x-reset .x-nlg .x-grid-row .x-grid-cell-special,.x-reset .x-nlg .x-grid-row-over .x-grid-cell-special{background-image:url('../../resources/themes/images/default/grid/cell-special-bg.gif')}.x-reset .x-nlg .x-grid-row-focused .x-grid-cell-special,.x-reset .x-nlg .x-grid-row-selected .x-grid-cell-special{background-image:url('../../resources/themes/images/default/grid/cell-special-selected-bg.gif')}.x-reset .x-grid-with-col-lines .x-grid-cell{padding-right:0;border-right:1px solid #d0d0d0}.x-reset .x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,.x-reset .x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner{padding-left:12px;background-image:url('../../resources/themes/images/default/grid/property-cell-bg.gif');background-repeat:no-repeat;background-position:-16px 2px}.x-reset .x-grid-with-row-lines.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,.x-reset .x-grid-with-row-lines.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner{background-position:-16px 1px}.x-reset .x-quirks .x-ie .x-grid-row .x-grid-property-name .x-grid-cell-inner{background-position:-16px 2px}.x-reset .x-unselectable{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-reset .x-grid-row-body-hidden{display:none}.x-reset .x-grid-group-collapsed{display:none}.x-reset .x-grid-view .x-grid-td-expander{vertical-align:top}.x-reset .x-grid-td-expander{background:repeat-y right transparent}.x-reset .x-grid-view .x-grid-td-expander .x-grid-cell-inner{padding:0!important}.x-reset .x-grid-row-expander{background-image:url('../../resources/themes/images/default/grid/group-collapse.gif');background-color:transparent;width:9px;height:13px;margin-left:3px;background-repeat:no-repeat;background-position:0 -2px}.x-reset .x-grid-row-collapsed .x-grid-row-expander{background-image:url('../../resources/themes/images/default/grid/group-expand.gif')}.x-reset .x-grid-resize-marker{position:absolute;z-index:5;top:0;width:1px;background-color:#0f0f0f}.x-reset .col-move-top,.x-reset .col-move-bottom{width:9px;height:9px;position:absolute;top:0;line-height:0;font-size:0;overflow:hidden;z-index:20000;background:no-repeat left top transparent}.x-reset .col-move-top{background-image:url('../../resources/themes/images/default/grid/col-move-top.gif')}.x-reset .col-move-bottom{background-image:url('../../resources/themes/images/default/grid/col-move-bottom.gif')}.x-reset .x-tbar-page-number{width:30px}.x-reset .x-grid-group,.x-reset .x-grid-group-body,.x-reset .x-grid-group-hd{zoom:1}.x-reset .x-grid-group-hd{padding-top:6px}.x-reset .x-grid-group-hd .x-grid-cell-inner{padding:10px 4px 4px 4px;background:white;border-width:0 0 2px 0;border-style:solid;border-color:#99bbe8;cursor:pointer}.x-reset .x-grid-group-hd-collapsible .x-grid-group-title{background:transparent no-repeat 0 -1px;background-image:url('../../resources/themes/images/default/grid/group-collapse.gif');padding:0 0 0 14px}.x-reset .x-grid-group-title{color:#3764a0;font:bold 11px tahoma,arial,verdana,sans-serif}.x-reset .x-grid-group-hd-collapsed .x-grid-group-title{background-image:url('../../resources/themes/images/default/grid/group-expand.gif')}.x-reset .x-grid-group-collapsed .x-grid-group-body{display:none}.x-reset .x-grid-group-collapsed .x-grid-group-title{background-image:url('../../resources/themes/images/default/grid/group-expand.gif')}.x-reset .x-group-by-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x-reset .x-show-groups-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x-reset .x-column-header-checkbox .x-column-header-inner{padding:0}.x-reset .x-grid-cell-special .x-grid-cell-inner{padding-left:4px;padding-right:4px}.x-reset .x-grid-row-checker,.x-reset .x-column-header-checkbox .x-column-header-text{height:14px;width:14px;line-height:0;background-image:url('../../resources/themes/images/default/grid/unchecked.gif');background-position:-1px -1px;background-repeat:no-repeat;background-color:transparent}.x-reset .x-column-header-checkbox .x-column-header-text{display:block;margin:0 5px}.x-reset .x-quirks .x-ie .x-grid-row-checker,.x-reset .x-quirks .x-ie .x-column-header-checkbox .x-column-header-text,.x-reset .x-ie7m .x-grid-row-checker,.x-reset .x-ie7m .x-column-header-checkbox .x-column-header-text{line-height:14px}.x-reset .x-grid-hd-checker-on .x-column-header-text{background-image:url('../../resources/themes/images/default/grid/checked.gif')}.x-reset .x-grid-cell-row-checker .x-grid-cell-inner{padding-top:4px;padding-bottom:2px;line-height:14px}.x-reset .x-grid-with-row-lines .x-grid-cell-row-checker .x-grid-cell-inner{padding-top:3px}.x-reset .x-grid-row-checker{margin-left:1px;background-position:50% -2px}.x-reset .x-grid-row-selected .x-grid-row-checker,.x-reset .x-grid-row-checked .x-grid-row-checker{background-image:url('../../resources/themes/images/default/grid/checked.gif')}.x-reset .x-tbar-page-first{background-image:url('../../resources/themes/images/default/grid/page-first.gif')!important}.x-reset .x-tbar-loading{background-image:url('../../resources/themes/images/default/grid/refresh.gif')!important}.x-reset .x-tbar-page-last{background-image:url('../../resources/themes/images/default/grid/page-last.gif')!important}.x-reset .x-tbar-page-next{background-image:url('../../resources/themes/images/default/grid/page-next.gif')!important}.x-reset .x-tbar-page-prev{background-image:url('../../resources/themes/images/default/grid/page-prev.gif')!important}.x-reset .x-item-disabled .x-tbar-loading{background-image:url('../../resources/themes/images/default/grid/refresh-disabled.gif')!important}.x-reset .x-item-disabled .x-tbar-page-first{background-image:url('../../resources/themes/images/default/grid/page-first-disabled.gif')!important}.x-reset .x-item-disabled .x-tbar-page-last{background-image:url('../../resources/themes/images/default/grid/page-last-disabled.gif')!important}.x-reset .x-item-disabled .x-tbar-page-next{background-image:url('../../resources/themes/images/default/grid/page-next-disabled.gif')!important}.x-reset .x-item-disabled .x-tbar-page-prev{background-image:url('../../resources/themes/images/default/grid/page-prev-disabled.gif')!important}.x-reset .x-hmenu-sort-asc .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-asc.gif')}.x-reset .x-hmenu-sort-desc .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-desc.gif')}.x-reset .x-hmenu-lock .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-lock.gif')}.x-reset .x-hmenu-unlock .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-unlock.gif')}.x-reset .x-group-by-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x-reset .x-cols-icon .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/columns.gif')}.x-reset .x-show-groups-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x-reset .x-grid-drop-indicator{position:absolute;height:1px;line-height:0;background-color:#77bc71;overflow:visible}.x-reset .x-grid-drop-indicator .x-grid-drop-indicator-left{position:absolute;top:-8px;left:-12px;background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-right.png');height:16px;width:16px}.x-reset .x-grid-drop-indicator .x-grid-drop-indicator-right{position:absolute;top:-8px;right:-11px;background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-left.png');height:16px;width:16px}.x-reset .x-ie6 .x-grid-drop-indicator-left{background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-right.gif')}.x-reset .x-ie6 .x-grid-drop-indicator-right{background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-left.gif')}.x-reset .x-grid-editor .x-form-text{padding:0 4px}.x-reset .x-grid-editor .x-form-cb-wrap{padding-top:3px}.x-reset .x-grid-row-editor{position:absolute!important;z-index:1;zoom:1;overflow:visible!important}.x-reset .x-grid-row-editor .x-form-text{padding:0 2px}.x-reset .x-grid-row-editor .x-form-cb-wrap{padding-top:0}.x-reset .x-grid-row-editor .x-form-checkbox{margin-left:-4px}.x-reset .x-grid-row-editor .x-form-display-field{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding-top:0;padding-left:2px}.x-reset .x-grid-row-editor .x-panel-body{background-color:#eaf1fb;border-top:1px solid #99bce8!important;border-bottom:1px solid #99bce8!important}.x-reset .x-grid-editor .x-form-cb-wrap,.x-reset .x-grid-row-editor .x-form-cb-wrap{text-align:center}.x-reset .x-grid-editor .x-form-trigger,.x-reset .x-grid-row-editor .x-form-trigger{height:19px}.x-reset .x-grid-editor .x-form-trigger-wrap .x-form-spinner-up,.x-reset .x-grid-editor .x-form-trigger-wrap .x-form-spinner-down,.x-reset .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-up,.x-reset .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-down{background-image:url('../../resources/themes/images/default/form/spinner-small.gif');height:10px!important}.x-reset .x-grid-editor .x-form-text,.x-reset .x-grid-row-editor .x-form-text{font:normal 11px/15px tahoma,arial,verdana,sans-serif;height:18px}.x-reset .x-border-box .x-grid-editor .x-form-trigger,.x-reset .x-border-box .x-grid-row-editor .x-form-trigger{height:20px}.x-reset .x-border-box .x-grid-editor .x-form-text,.x-reset .x-border-box .x-grid-row-editor .x-form-text{height:20px;padding-bottom:1px}.x-reset .x-ie .x-grid-editor .x-form-text{padding-left:5px}.x-reset .x-ie .x-grid-row-editor .x-form-text{padding-left:3px}.x-reset .x-ie8m .x-grid-editor .x-form-text,.x-reset .x-ie8m .x-grid-row-editor .x-form-text{padding-top:1px}.x-reset .x-strict .x-ie6 .x-grid-editor .x-form-text,.x-reset .x-strict .x-ie6 .x-grid-row-editor .x-form-text,.x-reset .x-strict .x-ie7 .x-grid-editor .x-form-text,.x-reset .x-strict .x-ie7 .x-grid-row-editor .x-form-text{height:17px}.x-reset .x-quirks .x-ie9 .x-grid-editor .x-form-text,.x-reset .x-quirks .x-ie9 .x-grid-row-editor .x-form-text{line-height:17px}.x-reset .x-opera .x-grid-editor .x-form-text{padding-left:5px}.x-reset .x-opera .x-grid-row-editor .x-form-text{padding-left:3px}.x-reset .x-grid-row-editor-buttons{background-color:#eaf1fb;position:absolute;bottom:-31px;padding:4px;height:32px}.x-strict .x-ie7m .x-reset .x-grid-row-editor-buttons{width:192px;height:24px}.x-reset .x-grid-row-editor-buttons-ml,.x-reset .x-grid-row-editor-buttons-mr,.x-reset .x-grid-row-editor-buttons-bl,.x-reset .x-grid-row-editor-buttons-br,.x-reset .x-grid-row-editor-buttons-bc{position:absolute;overflow:hidden}.x-reset .x-grid-row-editor-buttons-bl,.x-reset .x-grid-row-editor-buttons-br{width:4px;height:4px;bottom:0;background-image:url('../../resources/themes/images/default/panel/panel-default-framed-corners.gif')}.x-reset .x-grid-row-editor-buttons-bl{left:0;background-position:0 -16px}.x-reset .x-grid-row-editor-buttons-br{right:0;background-position:0 -20px}.x-reset .x-grid-row-editor-buttons-bc{position:absolute;left:4px;bottom:0;width:192px;height:1px;background-color:#99bce8}.x-reset .x-grid-row-editor-buttons-ml,.x-reset .x-grid-row-editor-buttons-mr{height:27px;width:1px;top:1px;background-color:#99bce8}.x-reset .x-grid-row-editor-buttons-ml{left:0}.x-reset .x-grid-row-editor-buttons-mr{background-position:0 -20px;right:0}.x-reset .x-grid-row-editor-errors ul{margin-left:5px}.x-reset .x-grid-row-editor-errors li{list-style:disc;margin-left:15px}.x-reset .x-webkit *:focus{outline:none!important}.x-reset .x-form-item{vertical-align:top;table-layout:fixed}.x-reset .x-autocontainer-form-item,.x-reset .x-anchor-form-item,.x-reset .x-vbox-form-item,.x-reset .x-checkboxgroup-form-item,.x-reset .x-table-form-item{margin-bottom:5px}.x-reset .x-form-layout-table{border-collapse:separate;border-spacing:0 2px}.x-reset .x-form-item-body{position:relative}.x-reset .x-form-form-item td{border-top:1px solid transparent}.x-reset .x-ie6 .x-form-layout-table{border-collapse:collapse;border-spacing:0}.x-reset .x-ie6 .x-form-form-item td{border-top-width:0}.x-reset .x-ie6 td.x-form-item-pad{height:5px}.x-reset .x-editor .x-form-item-body{padding-bottom:0}.x-reset .x-form-item-label{display:block;padding:3px 0 0;font-size:12px;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-reset .x-form-item-label-top{display:block;zoom:1;padding:0 0 5px 0}.x-reset .x-form-item-label-right{text-align:right}.x-reset .x-form-invalid-under{padding:2px 2px 2px 18px;color:#c0272b;font:normal 11px tahoma,arial,verdana,sans-serif;line-height:16px;background:no-repeat 0 2px;background-image:url('../../resources/themes/images/default/form/exclamation.gif')}.x-reset .x-form-invalid-icon{width:18px;height:14px;background:no-repeat center center;background-image:url('../../resources/themes/images/default/form/exclamation.gif');overflow:hidden}.x-reset .x-form-invalid-icon ul{display:block;width:18px}.x-reset .x-form-invalid-icon ul li{display:none}.x-reset .x-lbl-top-err-icon{margin-bottom:4px}.x-reset .x-form-field,.x-reset .x-form-display-field{margin:0;font:normal 12px tahoma,arial,verdana,sans-serif;color:black}.x-reset .x-form-item-hidden{margin:0}.x-reset .x-form-text,.x-reset textarea.x-form-field{padding:1px 3px;background:repeat-x 0 0;border:1px solid;background-color:white;background-image:url('../../resources/themes/images/default/form/text-bg.gif');border-color:#b5b8c8}.x-reset .x-form-text{height:18px;line-height:15px;vertical-align:top}.x-reset .x-ie8m .x-form-text{line-height:15px}.x-reset .x-border-box .x-form-text{height:22px}.x-reset textarea.x-form-field{color:black;overflow:auto;height:auto;line-height:normal;background:repeat-x 0 0;background-color:white;background-image:url('../../resources/themes/images/default/form/text-bg.gif');resize:none}.x-reset .x-border-box textarea.x-form-field{height:auto}.x-reset .x-safari.x-mac textarea.x-form-field{margin-bottom:-2px}.x-reset .x-form-focus,.x-reset textarea.x-form-focus{border-color:#7eadd9}.x-reset .x-form-invalid-field,.x-reset textarea.x-form-invalid-field{background-color:white;background-image:url('../../resources/themes/images/default/grid/invalid_line.gif');background-repeat:repeat-x;background-position:bottom;border-color:#c30}.x-reset .x-form-item{font:normal 12px tahoma,arial,verdana,sans-serif}.x-reset .x-form-empty-field,.x-reset textarea.x-form-empty-field{color:gray}.x-reset .x-webkit .x-form-empty-field{line-height:15px}.x-reset .x-form-display-field{padding-top:3px}.x-reset .x-quirks .x-ie9p .x-form-text,.x-reset .x-ie7m .x-form-text{margin-top:-1px;margin-bottom:-1px}.x-reset .x-ie .x-form-file{height:23px;line-height:18px;vertical-align:middle}.x-reset .x-field-default-toolbar .x-form-text{height:16px}.x-reset .x-border-box .x-field-default-toolbar .x-form-text{height:20px}.x-reset .x-field-default-toolbar .x-form-item-label-left{padding-left:4px}.x-reset .x-fieldset{border:1px solid #b5b8c8;padding:10px;margin-bottom:10px;display:block;position:relative}.x-reset .x-ie .x-fieldset{padding-top:0}.x-reset .x-ie .x-fieldset .x-fieldset-body{padding-top:10px}.x-reset .x-fieldset-header-checkbox{line-height:14px}.x-reset .x-fieldset-header{font:11px/14px bold tahoma,arial,verdana,sans-serif;color:#15428b;padding:0 3px 1px;overflow:hidden}.x-reset .x-fieldset-header .x-fieldset-header-text{float:left;padding:1px 0}.x-reset .x-fieldset-header .x-fieldset-header-text-collapsible{cursor:pointer}.x-reset .x-fieldset-header .x-form-item,.x-reset .x-fieldset-header .x-tool{float:left;margin:1px 0 0 0}.x-reset .x-fieldset-header .x-form-cb-wrap{padding:1px 0;font-size:0;line-height:0}.x-reset .x-fieldset-with-title .x-fieldset-header-checkbox,.x-reset .x-fieldset-with-title .x-tool{margin-right:3px}.x-reset .x-webkit .x-fieldset-header{-webkit-padding-start:3px;-webkit-padding-end:3px}.x-reset .x-opera .x-fieldset-with-legend{margin-top:-1px}.x-reset .x-opera.x-mac .x-fieldset-header-text{padding:2px 0 0}.x-reset .x-strict .x-ie8 .x-fieldset-header{margin-bottom:-1px}.x-reset .x-strict .x-ie8 .x-fieldset-header .x-tool,.x-reset .x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,.x-reset .x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox{position:relative;top:-1px}.x-reset .x-quirks .x-ie .x-fieldset-header,.x-reset .x-ie8m .x-fieldset-header{padding-left:1px;padding-right:1px}.x-reset .x-fieldset-collapsed .x-fieldset-body{display:none}.x-reset .x-fieldset-collapsed{padding-bottom:0!important;border-width:1px 1px 0 1px!important;border-left-color:transparent!important;border-right-color:transparent!important}.x-reset .x-ie6 .x-fieldset-collapsed{border-width:1px 0 0 0!important;padding-bottom:0!important;margin-left:1px;margin-right:1px}.x-reset .x-ie .x-fieldset-bwrap{zoom:1}.x-reset .x-ie .x-fieldset-noborder legend{position:relative;margin-bottom:23px}.x-reset .x-ie .x-fieldset-noborder legend span{position:absolute;left:16px}.x-reset .x-fieldset{overflow:hidden}.x-reset .x-fieldset-bwrap{overflow:hidden;zoom:1}.x-reset .x-fieldset-body{overflow:hidden}.x-reset .x-form-file-wrap .x-form-text{color:#777}.x-reset .x-form-file-wrap .x-form-file-btn{overflow:hidden}.x-reset .x-form-file-wrap .x-form-file-input{position:absolute;top:-4px;right:-2px;height:30px;filter:alpha(opacity=0);opacity:0;font-size:100px}.x-reset .x-form-cb-wrap{padding-top:3px}.x-reset .x-form-checkbox,.x-reset .x-form-radio{vertical-align:-1px;width:13px;height:13px;background:no-repeat;background-image:url('../../resources/themes/images/default/form/checkbox.gif');overflow:hidden;padding:0;border:0}.x-reset .x-form-checkbox::-moz-focus-inner,.x-reset .x-form-radio::-moz-focus-inner{padding:0;border:0}.x-reset .x-nbr.x-ie .x-form-checkbox,.x-reset .x-nbr.x-ie .x-form-radio{font-size:0}.x-reset .x-form-cb-checked .x-form-checkbox,.x-reset .x-form-cb-checked .x-form-radio{background-position:0 -13px}.x-reset .x-form-cb-focus{background-position:-13px 0}.x-reset .x-form-cb-checked .x-form-cb-focus{background-position:-13px -13px}.x-reset .x-form-radio{background-image:url('../../resources/themes/images/default/form/radio.gif')}.x-reset .x-form-cb-label-before{margin-right:4px}.x-reset .x-form-cb-label-after{margin-left:4px}.x-reset .x-form-checkboxgroup-body{padding:1px 4px 1px 4px}.x-reset .x-form-invalid .x-form-checkboxgroup-body{border:1px solid #c30!important;background:transparent repeat-x bottom;background-image:url('../../resources/themes/images/default/grid/invalid_line.gif');padding:1px 3px 0 3px}.x-reset .x-check-group-alt{background:#d1ddef;border-top:1px dotted #b5b8c8;border-bottom:1px dotted #b5b8c8}.x-reset .x-form-check-group-label{color:#333;border-bottom:1px solid #333;margin:0 30px 5px 0;padding:2px}.x-reset .x-form-trigger-wrap{vertical-align:top}.x-reset .x-form-trigger{background-image:url('../../resources/themes/images/default/form/trigger.gif');background-position:0 0;width:17px;height:21px;border-bottom:1px solid #b5b8c8;cursor:pointer;cursor:hand;overflow:hidden}.x-reset .x-border-box .x-form-trigger{height:22px}.x-reset .x-field-default-toolbar .x-form-trigger{height:19px}.x-reset .x-border-box .x-field-default-toolbar .x-form-trigger{height:20px}.x-reset .x-form-trigger-over{background-position:-17px 0;border-bottom-color:#7eadd9}.x-reset .x-form-trigger-wrap-focus .x-form-trigger{background-position:-51px 0;border-bottom-color:#7eadd9}.x-reset .x-form-trigger-wrap-focus .x-form-trigger-over{background-position:-68px 0;border-bottom-color:null}.x-reset .x-form-trigger-click,.x-reset .x-form-trigger-wrap-focus .x-form-trigger-click{background-position:-34px 0;border-bottom-color:null}.x-reset .x-form-trigger-icon{height:16px;background-repeat:no-repeat;background-position:7px 6px}.x-reset .x-pickerfield-open .x-form-field{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0}.x-reset .x-pickerfield-open-above .x-form-field{-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;-o-border-bottom-left-radius:3px;-ms-border-bottom-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0}.x-reset .x-form-arrow-trigger .x-form-trigger-icon{background-image:url('../../resources/themes/images/default/boundlist/trigger-arrow.png')}.x-reset .x-form-date-trigger{background-image:url('../../resources/themes/images/default/form/date-trigger.gif')}.x-reset .x-form-trigger-wrap .x-form-spinner-up,.x-reset .x-form-trigger-wrap .x-form-spinner-down{background-image:url('../../resources/themes/images/default/form/spinner.gif');width:17px!important;height:11px!important;font-size:0;border-bottom:0}.x-reset .x-form-trigger-wrap .x-form-spinner-down{background-position:0 -11px}.x-reset .x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -11px}.x-reset .x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -11px}.x-reset .x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -11px}.x-reset .x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -11px}.x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-up,.x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down{background-image:url('../../resources/themes/images/default/form/spinner-small.gif');height:10px!important}.x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down{background-position:0 -10px}.x-reset .x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -10px}.x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -10px}.x-reset .x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -10px}.x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -10px}.x-reset .x-trigger-noedit{cursor:pointer;cursor:hand}.x-reset .x-item-disabled .x-trigger-noedit,.x-reset .x-item-disabled .x-form-trigger{cursor:auto}.x-reset .x-form-clear-trigger{background-image:url('../../resources/themes/images/default/form/clear-trigger.gif')}.x-reset .x-form-search-trigger{background-image:url('../../resources/themes/images/default/form/search-trigger.gif')}.x-reset .x-quirks .prefixie6 .x-form-trigger-input-cell{height:22px}.x-reset .x-quirks .prefixie6 .x-field-default-toolbar .x-form-trigger-input-cell{height:20px}.x-reset .x-html-editor-wrap{border:1px solid #b5b8c8}.x-reset .x-html-editor-wrap .x-toolbar{border-top-width:0;border-left-width:0;border-right-width:0}.x-reset .x-html-editor-wrap textarea{background-color:white}.x-reset .x-html-editor-tb .x-btn-text{background:transparent no-repeat;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-bold,.x-reset .x-menu-item img.x-edit-bold{background-position:0 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-italic,.x-reset .x-menu-item img.x-edit-italic{background-position:-16px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-underline,.x-reset .x-menu-item img.x-edit-underline{background-position:-32px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-forecolor,.x-reset .x-menu-item img.x-edit-forecolor{background-position:-160px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-backcolor,.x-reset .x-menu-item img.x-edit-backcolor{background-position:-176px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-justifyleft,.x-reset .x-menu-item img.x-edit-justifyleft{background-position:-112px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-justifycenter,.x-reset .x-menu-item img.x-edit-justifycenter{background-position:-128px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-justifyright,.x-reset .x-menu-item img.x-edit-justifyright{background-position:-144px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-insertorderedlist,.x-reset .x-menu-item img.x-edit-insertorderedlist{background-position:-80px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-insertunorderedlist,.x-reset .x-menu-item img.x-edit-insertunorderedlist{background-position:-96px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-increasefontsize,.x-reset .x-menu-item img.x-edit-increasefontsize{background-position:-48px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-decreasefontsize,.x-reset .x-menu-item img.x-edit-decreasefontsize{background-position:-64px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-sourceedit,.x-reset .x-menu-item img.x-edit-sourceedit{background-position:-192px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-createlink,.x-reset .x-menu-item img.x-edit-createlink{background-position:-208px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tip .x-tip-bd .x-tip-bd-inner{padding:5px;padding-bottom:1px}.x-reset .x-html-editor-tb .x-toolbar{position:static!important}.x-reset .x-html-editor-tb .x-font-select{font-size:11px}.x-reset .x-html-editor-wrap textarea{border:0;padding:3px 2px;overflow:auto}.x-reset .x-panel,.x-reset .x-plain{overflow:hidden;position:relative}.x-reset .x-ie .x-panel-header,.x-reset .x-ie .x-panel-header-tl,.x-reset .x-ie .x-panel-header-tc,.x-reset .x-ie .x-panel-header-tr,.x-reset .x-ie .x-panel-header-ml,.x-reset .x-ie .x-panel-header-mc,.x-reset .x-ie .x-panel-header-mr,.x-reset .x-ie .x-panel-header-bl,.x-reset .x-ie .x-panel-header-bc,.x-reset .x-ie .x-panel-header-br{zoom:1}.x-reset .x-ie8 td.x-frame-mc{vertical-align:top}.x-reset .x-panel-header-horizontal{padding:3px 5px 4px}.x-reset .x-panel-header-vertical{padding:5px 4px}.x-reset .x-panel-header-icon,.x-reset .x-window-header-icon{width:16px;height:16px;background-repeat:no-repeat;background-position:0 0;vertical-align:middle;margin-right:4px}.x-reset .x-vertical .x-panel-header-icon,.x-reset .x-vertical .x-window-header-icon{margin:0 0 4px}.x-reset .x-panel-header-draggable,.x-reset .x-panel-header-draggable .x-panel-header-text,.x-reset .x-window-header-draggable,.x-reset .x-window-header-draggable .x-window-header-text{cursor:move}.x-reset .x-panel-ghost,.x-reset .x-window-ghost{filter:alpha(opacity=65);opacity:.65;cursor:move}.x-reset .x-panel-header-horizontal .x-panel-header-body,.x-reset .x-panel-header-horizontal .x-window-header-body,.x-reset .x-panel-header-horizontal .x-btn-group-header-body,.x-reset .x-window-header-horizontal .x-panel-header-body,.x-reset .x-window-header-horizontal .x-window-header-body,.x-reset .x-window-header-horizontal .x-btn-group-header-body,.x-reset .x-btn-group-header-horizontal .x-panel-header-body,.x-reset .x-btn-group-header-horizontal .x-window-header-body,.x-reset .x-btn-group-header-horizontal .x-btn-group-header-body{width:100%}.x-reset .x-panel-header-vertical .x-panel-header-body,.x-reset .x-panel-header-vertical .x-window-header-body,.x-reset .x-panel-header-vertical .x-btn-group-header-body,.x-reset .x-window-header-vertical .x-panel-header-body,.x-reset .x-window-header-vertical .x-window-header-body,.x-reset .x-window-header-vertical .x-btn-group-header-body,.x-reset .x-btn-group-header-vertical .x-panel-header-body,.x-reset .x-btn-group-header-vertical .x-window-header-body,.x-reset .x-btn-group-header-vertical .x-btn-group-header-body{height:100%}.x-reset .x-panel-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-reset .x-panel-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;white-space:nowrap}.x-reset .x-panel-header-left .x-vml-base,.x-reset .x-panel-header-right .x-vml-base{left:-3px!important}.x-reset .x-panel-body{overflow:hidden;position:relative;font-size:12px}.x-reset .x-panel-header-vertical .x-surface{padding-left:1px}.x-reset .x-opera .x-panel-header-vertical .x-surface,.x-reset .x-strict .x-ie9 .x-panel-header-vertical .x-surface{padding-left:2px}.x-reset .x-panel-collapsed .x-panel-header-collapsed-border-top{border-bottom-width:1px!important}.x-reset .x-panel-collapsed .x-panel-header-collapsed-border-right{border-left-width:1px!important}.x-reset .x-panel-collapsed .x-panel-header-collapsed-border-bottom{border-top-width:1px!important}.x-reset .x-panel-collapsed .x-panel-header-collapsed-border-left{border-right-width:1px!important}.x-reset .x-nlg .x-panel-header-vertical .x-frame-mc{background-repeat:repeat-y}.x-reset .x-panel-default{border-color:#99bce8}.x-reset .x-panel-header-default{font-size:11px;border-color:#99bce8;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);-moz-box-shadow:#f4f8fd 0 1px 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset}.x-reset .x-nlg .x-panel-header-default-top{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif')}.x-reset .x-nlg .x-panel-header-default-bottom{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif')}.x-reset .x-nlg .x-panel-header-default-left{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif')}.x-reset .x-nlg .x-panel-header-default-right{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif')}.x-reset .x-nlg .x-panel-header-default-right{background-position:top right}.x-reset .x-nlg .x-panel-header-default-bottom{background-position:bottom left}.x-reset .x-panel-header-text-default{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:17px}.x-reset .x-panel-body-default{background:white;border-color:#99bce8;color:black;border-width:1px;border-style:solid}.x-reset .x-panel-collapsed .x-window-header-default,.x-reset .x-panel-collapsed .x-panel-header-default{border-color:#99bce8}.x-reset .x-panel-header-default-vertical{border-color:#99bce8}.x-reset .x-panel-header-default-left,.x-reset .x-panel-header-default-right{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-reset .x-panel-collapsed .x-panel-header-default-top{-moz-border-radius-bottomleft:null;-webkit-border-bottom-left-radius:null;-o-border-bottom-left-radius:null;-ms-border-bottom-left-radius:null;-khtml-border-bottom-left-radius:null;border-bottom-left-radius:null;-moz-border-radius-bottomright:null;-webkit-border-bottom-right-radius:null;-o-border-bottom-right-radius:null;-ms-border-bottom-right-radius:null;-khtml-border-bottom-right-radius:null;border-bottom-right-radius:null}.x-reset .x-panel-collapsed .x-panel-header-default-right{-moz-border-radius-topleft:null;-webkit-border-top-left-radius:null;-o-border-top-left-radius:null;-ms-border-top-left-radius:null;-khtml-border-top-left-radius:null;border-top-left-radius:null;-moz-border-radius-bottomleft:null;-webkit-border-bottom-left-radius:null;-o-border-bottom-left-radius:null;-ms-border-bottom-left-radius:null;-khtml-border-bottom-left-radius:null;border-bottom-left-radius:null}.x-reset .x-panel-collapsed .x-panel-header-default-bottom{-moz-border-radius-topleft:null;-webkit-border-top-left-radius:null;-o-border-top-left-radius:null;-ms-border-top-left-radius:null;-khtml-border-top-left-radius:null;border-top-left-radius:null;-moz-border-radius-topright:null;-webkit-border-top-right-radius:null;-o-border-top-right-radius:null;-ms-border-top-right-radius:null;-khtml-border-top-right-radius:null;border-top-right-radius:null}.x-reset .x-panel-collapsed .x-panel-header-default-left{-moz-border-radius-topright:null;-webkit-border-top-right-radius:null;-o-border-top-right-radius:null;-ms-border-top-right-radius:null;-khtml-border-top-right-radius:null;border-top-right-radius:null;-moz-border-radius-bottomright:null;-webkit-border-bottom-right-radius:null;-o-border-bottom-right-radius:null;-ms-border-bottom-right-radius:null;-khtml-border-bottom-right-radius:null;border-bottom-right-radius:null}.x-reset .x-panel-header-default-top{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset}.x-reset .x-panel-header-default-right{-moz-box-shadow:#f4f8fd -1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd -1px 0 0 0 inset;-o-box-shadow:#f4f8fd -1px 0 0 0 inset;box-shadow:#f4f8fd -1px 0 0 0 inset}.x-reset .x-panel-header-default-bottom{-moz-box-shadow:#f4f8fd 0 -1px 0 0 inset;-webkit-box-shadow:#f4f8fd 0 -1px 0 0 inset;-o-box-shadow:#f4f8fd 0 -1px 0 0 inset;box-shadow:#f4f8fd 0 -1px 0 0 inset}.x-reset .x-panel-header-default-left{-moz-box-shadow:#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 1px 0 0 0 inset}.x-reset .x-panel-header-default-right-tc,.x-reset .x-panel-header-default-right-mc,.x-reset .x-panel-header-default-right-bc{background-position:right 0}.x-reset .x-panel-header-default-bottom-tc,.x-reset .x-panel-header-default-bottom-mc,.x-reset .x-panel-header-default-bottom-bc{background-position:0 bottom}.x-reset .x-panel-default-framed{border-color:#99bce8}.x-reset .x-panel-header-default-framed{font-size:11px;border-color:#99bce8;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);-moz-box-shadow:#f4f8fd 0 1px 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset}.x-reset .x-nlg .x-panel-header-default-framed-top{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif')}.x-reset .x-nlg .x-panel-header-default-framed-bottom{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif')}.x-reset .x-nlg .x-panel-header-default-framed-left{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif')}.x-reset .x-nlg .x-panel-header-default-framed-right{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif')}.x-reset .x-nlg .x-panel-header-default-framed-right{background-position:top right}.x-reset .x-nlg .x-panel-header-default-framed-bottom{background-position:bottom left}.x-reset .x-nbr .x-panel-header-default-framed{background-image:none}.x-reset .x-strict .x-ie9 .x-panel-header-default-framed-top,.x-reset .x-nlg.x-opera .x-panel-header-default-framed-top,.x-reset .x-nlg.x-safari .x-panel-header-default-framed-top{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif')}.x-reset .x-strict .x-ie9 .x-panel-header-default-framed-bottom,.x-reset .x-nlg.x-opera .x-panel-header-default-framed-bottom,.x-reset .x-nlg.x-safari .x-panel-header-default-framed-bottom{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif')}.x-reset .x-strict .x-ie9 .x-panel-header-default-framed-left,.x-reset .x-nlg.x-opera .x-panel-header-default-framed-left,.x-reset .x-nlg.x-safari .x-panel-header-default-framed-left{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif')}.x-reset .x-strict .x-ie9 .x-panel-header-default-framed-right,.x-reset .x-nlg.x-opera .x-panel-header-default-framed-right,.x-reset .x-nlg.x-safari .x-panel-header-default-framed-right{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif')}.x-reset .x-panel-header-text-default-framed{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:17px}.x-reset .x-panel-body-default-framed{background:#dfe9f6;border-color:#99bce8;color:black;border-width:0;border-style:solid}.x-reset .x-panel-collapsed .x-window-header-default-framed,.x-reset .x-panel-collapsed .x-panel-header-default-framed{border-color:#99bce8}.x-reset .x-panel-header-default-framed-vertical{border-color:#99bce8}.x-reset .x-panel-header-default-framed-left,.x-reset .x-panel-header-default-framed-right{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-reset .x-panel-default-framed{-moz-border-radius:4px;-webkit-border-radius:4px;-o-border-radius:4px;-ms-border-radius:4px;-khtml-border-radius:4px;border-radius:4px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#dfe9f6}.x-reset .x-nlg .x-panel-default-framed-mc{background-color:#dfe9f6}.x-reset .x-nbr .x-panel-default-framed{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1000404px}.x-reset .x-nbr .x-panel-default-framed-tl,.x-reset .x-nbr .x-panel-default-framed-bl,.x-reset .x-nbr .x-panel-default-framed-tr,.x-reset .x-nbr .x-panel-default-framed-br,.x-reset .x-nbr .x-panel-default-framed-tc,.x-reset .x-nbr .x-panel-default-framed-bc,.x-reset .x-nbr .x-panel-default-framed-ml,.x-reset .x-nbr .x-panel-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel/panel-default-framed-corners.gif')}.x-reset .x-nbr .x-panel-default-framed-ml,.x-reset .x-nbr .x-panel-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel/panel-default-framed-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-panel-default-framed-mc{padding:1px 1px 1px 1px}.x-reset .x-strict .x-ie7 .x-panel-default-framed-tl,.x-reset .x-strict .x-ie7 .x-panel-default-framed-bl{position:relative;right:0}.x-reset .x-panel-header-default-framed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 5px 4px 5px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-reset .x-nlg .x-panel-header-default-framed-top-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif');background-color:#cbddf3}.x-reset .x-nbr .x-panel-header-default-framed-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1000000px}.x-reset .x-nbr .x-panel-header-default-framed-top-tl,.x-reset .x-nbr .x-panel-header-default-framed-top-bl,.x-reset .x-nbr .x-panel-header-default-framed-top-tr,.x-reset .x-nbr .x-panel-header-default-framed-top-br,.x-reset .x-nbr .x-panel-header-default-framed-top-tc,.x-reset .x-nbr .x-panel-header-default-framed-top-bc,.x-reset .x-nbr .x-panel-header-default-framed-top-ml,.x-reset .x-nbr .x-panel-header-default-framed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-corners.gif')}.x-reset .x-nbr .x-panel-header-default-framed-top-ml,.x-reset .x-nbr .x-panel-header-default-framed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-sides.gif');background-position:0 0}.x-reset .x-nbr .x-panel-header-default-framed-top-mc{padding:0 2px 4px 2px}.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-top-tl,.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-top-bl{position:relative;right:0}.x-reset .x-panel-header-default-framed-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 4px;border-width:1px 1px 1px 0;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-reset .x-nlg .x-panel-header-default-framed-right-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif');background-color:#cbddf3}.x-reset .x-nbr .x-panel-header-default-framed-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000004px 1100400px}.x-reset .x-nbr .x-panel-header-default-framed-right-tl,.x-reset .x-nbr .x-panel-header-default-framed-right-bl,.x-reset .x-nbr .x-panel-header-default-framed-right-tr,.x-reset .x-nbr .x-panel-header-default-framed-right-br,.x-reset .x-nbr .x-panel-header-default-framed-right-tc,.x-reset .x-nbr .x-panel-header-default-framed-right-bc,.x-reset .x-nbr .x-panel-header-default-framed-right-ml,.x-reset .x-nbr .x-panel-header-default-framed-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-corners.gif')}.x-reset .x-nbr .x-panel-header-default-framed-right-tc,.x-reset .x-nbr .x-panel-header-default-framed-right-bc{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-reset .x-nbr .x-panel-header-default-framed-right-mc{padding:2px 1px 2px 4px}.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-right-tl,.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-right-bl{position:relative;right:0}.x-reset .x-panel-header-default-framed-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-reset .x-nlg .x-panel-header-default-framed-bottom-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif');background-color:#cbddf3}.x-reset .x-nbr .x-panel-header-default-framed-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000000px 1000404px}.x-reset .x-nbr .x-panel-header-default-framed-bottom-tl,.x-reset .x-nbr .x-panel-header-default-framed-bottom-bl,.x-reset .x-nbr .x-panel-header-default-framed-bottom-tr,.x-reset .x-nbr .x-panel-header-default-framed-bottom-br,.x-reset .x-nbr .x-panel-header-default-framed-bottom-tc,.x-reset .x-nbr .x-panel-header-default-framed-bottom-bc,.x-reset .x-nbr .x-panel-header-default-framed-bottom-ml,.x-reset .x-nbr .x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-corners.gif')}.x-reset .x-nbr .x-panel-header-default-framed-bottom-ml,.x-reset .x-nbr .x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-sides.gif');background-position:0 0}.x-reset .x-nbr .x-panel-header-default-framed-bottom-mc{padding:3px 2px 1px 2px}.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl{position:relative;right:0}.x-reset .x-panel-header-default-framed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-reset .x-nlg .x-panel-header-default-framed-left-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif');background-color:#cbddf3}.x-reset .x-nbr .x-panel-header-default-framed-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000400px 1100004px}.x-reset .x-nbr .x-panel-header-default-framed-left-tl,.x-reset .x-nbr .x-panel-header-default-framed-left-bl,.x-reset .x-nbr .x-panel-header-default-framed-left-tr,.x-reset .x-nbr .x-panel-header-default-framed-left-br,.x-reset .x-nbr .x-panel-header-default-framed-left-tc,.x-reset .x-nbr .x-panel-header-default-framed-left-bc,.x-reset .x-nbr .x-panel-header-default-framed-left-ml,.x-reset .x-nbr .x-panel-header-default-framed-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-corners.gif')}.x-reset .x-nbr .x-panel-header-default-framed-left-tc,.x-reset .x-nbr .x-panel-header-default-framed-left-bc{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-reset .x-nbr .x-panel-header-default-framed-left-mc{padding:2px 4px 2px 1px}.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-left-tl,.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-left-bl{position:relative;right:0}.x-reset .x-panel-header-default-framed-top{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset}.x-reset .x-panel-header-default-framed-right{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset}.x-reset .x-panel-header-default-framed-bottom{-moz-box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset}.x-reset .x-panel-header-default-framed-left{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset}.x-reset .x-panel .x-panel-header-default-framed-top{border-bottom-width:1px!important}.x-reset .x-panel .x-panel-header-default-framed-right{border-left-width:1px!important}.x-reset .x-panel .x-panel-header-default-framed-bottom{border-top-width:1px!important}.x-reset .x-panel .x-panel-header-default-framed-left{border-right-width:1px!important}.x-reset .x-panel-header-default-framed-collapsed{-moz-border-radius:4px;-webkit-border-radius:4px;-o-border-radius:4px;-ms-border-radius:4px;-khtml-border-radius:4px;border-radius:4px}.x-reset .x-panel-header-default-framed-collapsed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-reset .x-nlg .x-panel-header-default-framed-collapsed-top-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-bg.gif');background-color:#cbddf3}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1000404px}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-tl,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-bl,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-tr,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-br,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-tc,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-bc,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-ml,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-corners.gif')}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-ml,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-sides.gif');background-position:0 0}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-mc{padding:0 2px 1px 2px}.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl{position:relative;right:0}.x-reset .x-panel-header-default-framed-collapsed-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-reset .x-nlg .x-panel-header-default-framed-collapsed-right-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-bg.gif');background-color:#cbddf3}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1100404px}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-tl,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-bl,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-tr,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-br,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-tc,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-bc,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-ml,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-corners.gif')}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-tc,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-bc{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-mc{padding:2px 1px 2px 1px}.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl{position:relative;right:0}.x-reset .x-panel-header-default-framed-collapsed-bottom{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-reset .x-nlg .x-panel-header-default-framed-collapsed-bottom-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif');background-color:#cbddf3}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1000404px}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-tl,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-bl,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-tr,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-br,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-tc,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-bc,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif')}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif');background-position:0 0}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-mc{padding:0 2px 1px 2px}.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl{position:relative;right:0}.x-reset .x-panel-header-default-framed-collapsed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-reset .x-nlg .x-panel-header-default-framed-collapsed-left-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-bg.gif');background-color:#cbddf3}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1100404px}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-tl,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-bl,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-tr,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-br,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-tc,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-bc,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-ml,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-corners.gif')}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-tc,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-bc{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-mc{padding:2px 1px 2px 1px}.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl{position:relative;right:0}.x-reset .x-panel-header-default-framed-right-tc,.x-reset .x-panel-header-default-framed-right-mc,.x-reset .x-panel-header-default-framed-right-bc{background-position:right 0}.x-reset .x-panel-header-default-framed-bottom-tc,.x-reset .x-panel-header-default-framed-bottom-mc,.x-reset .x-panel-header-default-framed-bottom-bc{background-position:0 bottom}.x-reset .x-panel-header-plain,.x-reset .x-panel-body-plain{border:0;padding:0}.x-reset .x-tip{position:absolute;overflow:visible;border-color:#8eaace}.x-reset .x-tip .x-tip-header .x-box-item{padding:3px 3px 0}.x-reset .x-tip .x-tip-header .x-tool{padding:0 1px 0 0!important}.x-reset .x-tip{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:#e9f2ff}.x-reset .x-nlg .x-tip-mc{background-color:#e9f2ff}.x-reset .x-nbr .x-tip{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-reset .x-nbr .x-tip-tl,.x-reset .x-nbr .x-tip-bl,.x-reset .x-nbr .x-tip-tr,.x-reset .x-nbr .x-tip-br,.x-reset .x-nbr .x-tip-tc,.x-reset .x-nbr .x-tip-bc,.x-reset .x-nbr .x-tip-ml,.x-reset .x-nbr .x-tip-mr{zoom:1;background-image:url('../../resources/themes/images/default/tip/tip-corners.gif')}.x-reset .x-nbr .x-tip-ml,.x-reset .x-nbr .x-tip-mr{zoom:1;background-image:url('../../resources/themes/images/default/tip/tip-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-tip-mc{padding:0}.x-reset .x-strict .x-ie7 .x-tip-tl,.x-reset .x-strict .x-ie7 .x-tip-bl{position:relative;right:0}.x-reset .x-tip-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;color:#444;font-size:11px;font-weight:bold}.x-reset .x-tip-header-draggable .x-tip-header-text{cursor:move}.x-reset .x-tip-body,.x-reset .x-form-invalid-tip-body{overflow:hidden;position:relative;padding:3px}.x-reset .x-tip-header,.x-reset .x-tip-body,.x-reset .x-form-invalid-tip-body{color:#444;font-size:11px;font-weight:normal}.x-reset .x-tip-header a,.x-reset .x-tip-body a,.x-reset .x-form-invalid-tip-body a{color:#2a2a2a}.x-reset .x-tip-anchor{position:absolute;overflow:hidden;height:0;width:0;border-style:solid;border-width:5px;border-color:#8eaace;zoom:1}.x-reset .x-border-box .x-tip-anchor{width:10px;height:10px}.x-reset .x-tip-anchor-top{border-top-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-reset .x-tip-anchor-bottom{border-bottom-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-bottom-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-reset .x-tip-anchor-left{border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-left-color:pink;_filter:chroma(color=pink)}.x-reset .x-tip-anchor-right{border-top-color:transparent;border-bottom-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-reset .x-form-invalid-tip{border-color:#a1311f;-moz-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-webkit-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-o-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset}.x-reset .x-form-invalid-tip-body{background:1px 1px no-repeat;background-image:url('../../resources/themes/images/default/form/exclamation.gif');padding-left:22px}.x-reset .x-form-invalid-tip-body li{margin-bottom:4px}.x-reset .x-form-invalid-tip-body li.last{margin-bottom:0}.x-reset .x-form-invalid-tip-default{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:white}.x-reset .x-nlg .x-form-invalid-tip-default-mc{background-color:white}.x-reset .x-nbr .x-form-invalid-tip-default{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100505px 1000505px}.x-reset .x-nbr .x-form-invalid-tip-default-tl,.x-reset .x-nbr .x-form-invalid-tip-default-bl,.x-reset .x-nbr .x-form-invalid-tip-default-tr,.x-reset .x-nbr .x-form-invalid-tip-default-br,.x-reset .x-nbr .x-form-invalid-tip-default-tc,.x-reset .x-nbr .x-form-invalid-tip-default-bc,.x-reset .x-nbr .x-form-invalid-tip-default-ml,.x-reset .x-nbr .x-form-invalid-tip-default-mr{zoom:1;background-image:url('../../resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-corners.gif')}.x-reset .x-nbr .x-form-invalid-tip-default-ml,.x-reset .x-nbr .x-form-invalid-tip-default-mr{zoom:1;background-image:url('../../resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-form-invalid-tip-default-mc{padding:0}.x-reset .x-strict .x-ie7 .x-form-invalid-tip-default-tl,.x-reset .x-strict .x-ie7 .x-form-invalid-tip-default-bl{position:relative;right:0}.x-reset .x-slider{zoom:1}.x-reset .x-slider-inner{position:relative;left:0;top:0;overflow:visible;zoom:1}.x-reset .x-slider-focus{position:absolute;left:0;top:0;width:1px;height:1px;line-height:1px;font-size:1px;-moz-outline:0 none;outline:0 none;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;display:block;overflow:hidden}.x-reset .x-slider-horz{padding-left:7px;background:transparent no-repeat 0 -24px;width:100%}.x-reset .x-slider-horz .x-slider-end{padding-right:7px;zoom:1;background:transparent no-repeat right -46px}.x-reset .x-slider-horz .x-slider-inner{background:transparent repeat-x 0 -2px;height:18px}.x-reset .x-slider-horz .x-slider-thumb{width:14px;height:15px;margin-left:-7px;position:absolute;left:0;top:1px;background:transparent no-repeat 0 0}.x-reset .x-slider-horz .x-slider-thumb-over{background-position:-14px -15px}.x-reset .x-slider-horz .x-slider-thumb-drag{background-position:-28px -30px}.x-reset .x-slider-vert{padding-top:7px;background:transparent no-repeat -44px 0}.x-reset .x-slider-vert .x-slider-end{padding-bottom:7px;zoom:1;background:transparent no-repeat -22px bottom;width:22px}.x-reset .x-slider-vert .x-slider-inner{background:transparent repeat-y 0 0;width:22px}.x-reset .x-slider-vert .x-slider-thumb{width:15px;height:14px;margin-bottom:-7px;position:absolute;left:3px;bottom:0;background:transparent no-repeat 0 0}.x-reset .x-slider-vert .x-slider-thumb-over{background-position:-15px -14px}.x-reset .x-slider-vert .x-slider-thumb-drag{background-position:-30px -28px}.x-reset .x-slider-horz,.x-reset .x-slider-horz .x-slider-end,.x-reset .x-slider-horz .x-slider-inner{background-image:url('../../resources/themes/images/default/slider/slider-bg.png')}.x-reset .x-slider-horz .x-slider-thumb{background-image:url('../../resources/themes/images/default/slider/slider-thumb.png')}.x-reset .x-slider-vert,.x-reset .x-slider-vert .x-slider-end,.x-reset .x-slider-vert .x-slider-inner{background-image:url('../../resources/themes/images/default/slider/slider-v-bg.png')}.x-reset .x-slider-vert .x-slider-thumb{background-image:url('../../resources/themes/images/default/slider/slider-v-thumb.png')}.x-reset .x-ie6 .x-slider-horz,.x-reset .x-ie6 .x-slider-horz .x-slider-end,.x-reset .x-ie6 .x-slider-horz .x-slider-inner{background-image:url('../../resources/themes/images/default/slider/slider-bg.gif')}.x-reset .x-ie6 .x-slider-horz .x-slider-thumb{background-image:url('../../resources/themes/images/default/slider/slider-thumb.gif')}.x-reset .x-ie6 .x-slider-vert,.x-reset .x-ie6 .x-slider-vert .x-slider-end,.x-reset .x-ie6 .x-slider-vert .x-slider-inner{background-image:url('../../resources/themes/images/default/slider/slider-v-bg.gif')}.x-reset .x-ie6 .x-slider-vert .x-slider-thumb{background-image:url('../../resources/themes/images/default/slider/slider-v-thumb.gif')}.x-reset .x-progress{position:relative;border-width:1px;border-style:solid;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;overflow:hidden;height:20px}.x-reset .x-progress-bar{height:18px;overflow:hidden;position:absolute;width:0;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;border-right:1px solid;border-top:1px solid}.x-reset .x-progress-text{overflow:hidden;position:absolute;padding:0 5px;height:18px;font-weight:bold;font-size:11px;line-height:16px;text-align:center}.x-reset .x-progress-text-back{padding-top:1px}.x-reset .x-strict .x-ie7m .x-progress{height:18px}.x-reset .x-progress-default{border-color:#6594cf}.x-reset .x-progress-default .x-progress-bar{border-right-color:#6594cf;border-top-color:#c6d8ed;background-image:none;background-color:#73a3e0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b2ccee),color-stop(50%,#88b1e5),color-stop(51%,#73a3e0),color-stop(100%,#5e96db));background-image:-webkit-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-moz-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-o-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-ms-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db)}.x-reset .x-progress-default .x-progress-text{color:white}.x-reset .x-progress-default .x-progress-text-back{color:#396295}.x-reset .x-nlg .x-progress-default .x-progress-bar{background:repeat-x;background-image:url('../../resources/themes/images/default/progress/progress-default-bg.gif')}.x-reset .x-toolbar{font-size:11px;border:1px solid;padding:2px 0 2px 2px}.x-reset .x-toolbar .x-form-item-label{font-size:11px;line-height:15px}.x-reset .x-toolbar .x-toolbar-item{margin:0 2px 0 0}.x-reset .x-toolbar .x-toolbar-text{margin-left:4px;margin-right:6px;white-space:nowrap;color:#4c4c4c;line-height:16px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;font-weight:normal}.x-reset .x-toolbar .x-toolbar-separator{display:block;font-size:1px;overflow:hidden;cursor:default;border:0}.x-reset .x-toolbar .x-toolbar-separator-horizontal{margin:0 3px 0 2px;height:14px;width:0;border-left:1px solid #98c8ff;border-right:1px solid white}.x-reset .x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal{width:2px}.x-reset .x-toolbar-footer{background:transparent;border:0 none;margin-top:3px;padding:2px 0 2px 6px}.x-reset .x-toolbar-footer .x-box-inner{border-width:0}.x-reset .x-toolbar-footer .x-toolbar-item{margin:0 6px 0 0}.x-reset .x-toolbar-vertical{padding:2px 2px 0 2px}.x-reset .x-toolbar-vertical .x-toolbar-item{margin:0 0 2px 0}.x-reset .x-toolbar-vertical .x-toolbar-text{margin-top:4px;margin-bottom:6px}.x-reset .x-toolbar-vertical .x-toolbar-separator-vertical{margin:2px 5px 3px 5px;height:0;width:10px;line-height:0;border-top:1px solid #98c8ff;border-bottom:1px solid white}.x-reset .x-toolbar-scroller{padding-left:0}.x-reset .x-toolbar-spacer{width:2px}.x-reset .x-toolbar-more-icon{background-image:url('../../resources/themes/images/default/toolbar/more.gif')!important;background-position:2px center!important;background-repeat:no-repeat}.x-reset .x-toolbar-default{border-color:#99bce8;background-image:none;background-color:#d3e1f1;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dfe9f5),color-stop(100%,#d3e1f1));background-image:-webkit-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-moz-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-o-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-ms-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:linear-gradient(top,#dfe9f5,#d3e1f1)}.x-reset .x-nlg .x-toolbar-default{background-image:url('../../resources/themes/images/default/toolbar/toolbar-default-bg.gif')!important;background-repeat:repeat-x}.x-reset .x-toolbar-plain{border:0}.x-reset .x-window{outline:0;overflow:hidden}.x-reset .x-window .x-window-wrap{position:relative}.x-reset .x-window-body{position:relative;border-style:solid;overflow:hidden}.x-reset .x-window-maximized .x-window-wrap .x-window-header{-moz-border-radius:0!important;-webkit-border-radius:0!important;-o-border-radius:0!important;-ms-border-radius:0!important;-khtml-border-radius:0!important;border-radius:0!important}.x-reset .x-window-header-top{margin-bottom:-2px}.x-reset .x-window-header-body-horizontal{margin-top:-1px}.x-reset .x-window-header-bottom{margin-top:-1px;margin-bottom:-1px}.x-reset .x-window-header-left{margin-right:-1px}.x-reset .x-window-header-right{margin-left:-1px}.x-reset .x-window-header-vertical .x-surface{padding-left:1px}.x-reset .x-window-collapsed .x-window-header-vertical{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px}.x-reset .x-window-collapsed .x-window-header-horizontal{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px}.x-reset .x-window-collapsed .x-window-header-left{padding-right:5px!important;margin-right:0}.x-reset .x-window-collapsed .x-window-header-right{padding-left:5px!important;margin-left:0}.x-reset .x-window-collapsed .x-window-header-top{padding-bottom:5px!important;margin-bottom:-1px}.x-reset .x-window-collapsed .x-window-header-bottom{padding-top:5px!important;margin-top:0}.x-reset .x-window-header-left .x-vml-base,.x-reset .x-window-header-right .x-vml-base{left:-3px!important}.x-reset .x-opera .x-window-header-vertical .x-surface,.x-reset .x-strict .x-ie9 .x-window-header-vertical .x-surface{padding-left:2px}.x-reset .x-window-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-reset .x-window-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;white-space:nowrap}.x-reset .x-window-default{border-color:#a2b1c5;-moz-border-radius:5px 5px;-webkit-border-radius:5px 5px;-o-border-radius:5px 5px;-ms-border-radius:5px 5px;-khtml-border-radius:5px 5px;border-radius:5px 5px;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-reset .x-window-default{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-default-mc{background-color:#ced9e7}.x-reset .x-nbr .x-window-default{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-reset .x-nbr .x-window-default-tl,.x-reset .x-nbr .x-window-default-bl,.x-reset .x-nbr .x-window-default-tr,.x-reset .x-nbr .x-window-default-br,.x-reset .x-nbr .x-window-default-tc,.x-reset .x-nbr .x-window-default-bc,.x-reset .x-nbr .x-window-default-ml,.x-reset .x-nbr .x-window-default-mr{zoom:1;background-image:url('../../resources/themes/images/default/window/window-default-corners.gif')}.x-reset .x-nbr .x-window-default-ml,.x-reset .x-nbr .x-window-default-mr{zoom:1;background-image:url('../../resources/themes/images/default/window/window-default-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-window-default-mc{padding:0}.x-reset .x-strict .x-ie7 .x-window-default-tl,.x-reset .x-strict .x-ie7 .x-window-default-bl{position:relative;right:0}.x-reset .x-window-body-default{border-color:#99bbe8;border-width:1px;background:#dfe8f6;color:black}.x-reset .x-window-header-default{font-size:11px;border-color:#a2b1c5;zoom:1}.x-reset .x-window-header-text-default{color:#04468c;font-weight:bold;line-height:17px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px}.x-reset .x-window-header-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 0 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-header-default-top-mc{background-color:#ced9e7}.x-reset .x-nbr .x-window-header-default-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000000px}.x-reset .x-nbr .x-window-header-default-top-tl,.x-reset .x-nbr .x-window-header-default-top-bl,.x-reset .x-nbr .x-window-header-default-top-tr,.x-reset .x-nbr .x-window-header-default-top-br,.x-reset .x-nbr .x-window-header-default-top-tc,.x-reset .x-nbr .x-window-header-default-top-bc,.x-reset .x-nbr .x-window-header-default-top-ml,.x-reset .x-nbr .x-window-header-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-top-corners.gif')}.x-reset .x-nbr .x-window-header-default-top-ml,.x-reset .x-nbr .x-window-header-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-top-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-window-header-default-top-mc{padding:0 1px 0 1px}.x-reset .x-strict .x-ie7 .x-window-header-default-top-tl,.x-reset .x-strict .x-ie7 .x-window-header-default-top-bl{position:relative;right:0}.x-reset .x-window-header-default-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 0;border-width:1px 1px 1px 0;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-header-default-right-mc{background-color:#ced9e7}.x-reset .x-nbr .x-window-header-default-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000005px 1000500px}.x-reset .x-nbr .x-window-header-default-right-tl,.x-reset .x-nbr .x-window-header-default-right-bl,.x-reset .x-nbr .x-window-header-default-right-tr,.x-reset .x-nbr .x-window-header-default-right-br,.x-reset .x-nbr .x-window-header-default-right-tc,.x-reset .x-nbr .x-window-header-default-right-bc,.x-reset .x-nbr .x-window-header-default-right-ml,.x-reset .x-nbr .x-window-header-default-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-right-corners.gif')}.x-reset .x-nbr .x-window-header-default-right-ml,.x-reset .x-nbr .x-window-header-default-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-right-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-window-header-default-right-mc{padding:1px 0 1px 0}.x-reset .x-strict .x-ie7 .x-window-header-default-right-tl,.x-reset .x-strict .x-ie7 .x-window-header-default-right-bl{position:relative;right:0}.x-reset .x-window-header-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:0 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-header-default-bottom-mc{background-color:#ced9e7}.x-reset .x-nbr .x-window-header-default-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000000px 1000505px}.x-reset .x-nbr .x-window-header-default-bottom-tl,.x-reset .x-nbr .x-window-header-default-bottom-bl,.x-reset .x-nbr .x-window-header-default-bottom-tr,.x-reset .x-nbr .x-window-header-default-bottom-br,.x-reset .x-nbr .x-window-header-default-bottom-tc,.x-reset .x-nbr .x-window-header-default-bottom-bc,.x-reset .x-nbr .x-window-header-default-bottom-ml,.x-reset .x-nbr .x-window-header-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-bottom-corners.gif')}.x-reset .x-nbr .x-window-header-default-bottom-ml,.x-reset .x-nbr .x-window-header-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-bottom-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-window-header-default-bottom-mc{padding:0 1px 0 1px}.x-reset .x-strict .x-ie7 .x-window-header-default-bottom-tl,.x-reset .x-strict .x-ie7 .x-window-header-default-bottom-bl{position:relative;right:0}.x-reset .x-window-header-default-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 0 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-header-default-left-mc{background-color:#ced9e7}.x-reset .x-nbr .x-window-header-default-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000500px 1000005px}.x-reset .x-nbr .x-window-header-default-left-tl,.x-reset .x-nbr .x-window-header-default-left-bl,.x-reset .x-nbr .x-window-header-default-left-tr,.x-reset .x-nbr .x-window-header-default-left-br,.x-reset .x-nbr .x-window-header-default-left-tc,.x-reset .x-nbr .x-window-header-default-left-bc,.x-reset .x-nbr .x-window-header-default-left-ml,.x-reset .x-nbr .x-window-header-default-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-left-corners.gif')}.x-reset .x-nbr .x-window-header-default-left-ml,.x-reset .x-nbr .x-window-header-default-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-left-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-window-header-default-left-mc{padding:1px 0 1px 0}.x-reset .x-strict .x-ie7 .x-window-header-default-left-tl,.x-reset .x-strict .x-ie7 .x-window-header-default-left-bl{position:relative;right:0}.x-reset .x-window-header-default-collapsed-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-header-default-collapsed-top-mc{background-color:#ced9e7}.x-reset .x-nbr .x-window-header-default-collapsed-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-reset .x-nbr .x-window-header-default-collapsed-top-tl,.x-reset .x-nbr .x-window-header-default-collapsed-top-bl,.x-reset .x-nbr .x-window-header-default-collapsed-top-tr,.x-reset .x-nbr .x-window-header-default-collapsed-top-br,.x-reset .x-nbr .x-window-header-default-collapsed-top-tc,.x-reset .x-nbr .x-window-header-default-collapsed-top-bc,.x-reset .x-nbr .x-window-header-default-collapsed-top-ml,.x-reset .x-nbr .x-window-header-default-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-top-corners.gif')}.x-reset .x-nbr .x-window-header-default-collapsed-top-ml,.x-reset .x-nbr .x-window-header-default-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-top-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-window-header-default-collapsed-top-mc{padding:0 1px 0 1px}.x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,.x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-top-bl{position:relative;right:0}.x-reset .x-window-header-default-collapsed-right{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-header-default-collapsed-right-mc{background-color:#ced9e7}.x-reset .x-nbr .x-window-header-default-collapsed-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-reset .x-nbr .x-window-header-default-collapsed-right-tl,.x-reset .x-nbr .x-window-header-default-collapsed-right-bl,.x-reset .x-nbr .x-window-header-default-collapsed-right-tr,.x-reset .x-nbr .x-window-header-default-collapsed-right-br,.x-reset .x-nbr .x-window-header-default-collapsed-right-tc,.x-reset .x-nbr .x-window-header-default-collapsed-right-bc,.x-reset .x-nbr .x-window-header-default-collapsed-right-ml,.x-reset .x-nbr .x-window-header-default-collapsed-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-right-corners.gif')}.x-reset .x-nbr .x-window-header-default-collapsed-right-ml,.x-reset .x-nbr .x-window-header-default-collapsed-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-right-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-window-header-default-collapsed-right-mc{padding:1px 0 1px 0}.x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,.x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-right-bl{position:relative;right:0}.x-reset .x-window-header-default-collapsed-bottom{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-header-default-collapsed-bottom-mc{background-color:#ced9e7}.x-reset .x-nbr .x-window-header-default-collapsed-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-reset .x-nbr .x-window-header-default-collapsed-bottom-tl,.x-reset .x-nbr .x-window-header-default-collapsed-bottom-bl,.x-reset .x-nbr .x-window-header-default-collapsed-bottom-tr,.x-reset .x-nbr .x-window-header-default-collapsed-bottom-br,.x-reset .x-nbr .x-window-header-default-collapsed-bottom-tc,.x-reset .x-nbr .x-window-header-default-collapsed-bottom-bc,.x-reset .x-nbr .x-window-header-default-collapsed-bottom-ml,.x-reset .x-nbr .x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-bottom-corners.gif')}.x-reset .x-nbr .x-window-header-default-collapsed-bottom-ml,.x-reset .x-nbr .x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-bottom-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-window-header-default-collapsed-bottom-mc{padding:0 1px 0 1px}.x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,.x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl{position:relative;right:0}.x-reset .x-window-header-default-collapsed-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-header-default-collapsed-left-mc{background-color:#ced9e7}.x-reset .x-nbr .x-window-header-default-collapsed-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-reset .x-nbr .x-window-header-default-collapsed-left-tl,.x-reset .x-nbr .x-window-header-default-collapsed-left-bl,.x-reset .x-nbr .x-window-header-default-collapsed-left-tr,.x-reset .x-nbr .x-window-header-default-collapsed-left-br,.x-reset .x-nbr .x-window-header-default-collapsed-left-tc,.x-reset .x-nbr .x-window-header-default-collapsed-left-bc,.x-reset .x-nbr .x-window-header-default-collapsed-left-ml,.x-reset .x-nbr .x-window-header-default-collapsed-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-left-corners.gif')}.x-reset .x-nbr .x-window-header-default-collapsed-left-ml,.x-reset .x-nbr .x-window-header-default-collapsed-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-left-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-window-header-default-collapsed-left-mc{padding:1px 0 1px 0}.x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,.x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-left-bl{position:relative;right:0}.x-reset .x-window-header-default-top{-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-reset .x-window-header-default-right{-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset}.x-reset .x-window-header-default-bottom{-moz-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-reset .x-window-header-default-left{-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-reset .x-window-body-plain{background:transparent}.x-reset .x-message-box .x-window-body{background-color:#ced9e7;border:0}.x-reset .x-message-box .x-progress-wrap{margin-top:4px}.x-reset .x-message-box-icon{width:47px;height:32px}.x-reset .x-message-box-info,.x-reset .x-message-box-warning,.x-reset .x-message-box-question,.x-reset .x-message-box-error{background:transparent no-repeat top left}.x-reset .x-message-box .x-msg-box-wait{background-image:url('../../resources/themes/images/default/shared/blue-loading.gif')}.x-reset .x-message-box-info{background-image:url('../../resources/themes/images/default/shared/icon-info.gif')}.x-reset .x-message-box-warning{background-image:url('../../resources/themes/images/default/shared/icon-warning.gif')}.x-reset .x-message-box-question{background-image:url('../../resources/themes/images/default/shared/icon-question.gif')}.x-reset .x-message-box-error{background-image:url('../../resources/themes/images/default/shared/icon-error.gif')}.x-reset .x-tab-bar{position:relative;background-color:transparent;background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(top,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(top,#dde8f5,#cbdbef);background-image:-o-linear-gradient(top,#dde8f5,#cbdbef);background-image:-ms-linear-gradient(top,#dde8f5,#cbdbef);background-image:linear-gradient(top,#dde8f5,#cbdbef);font-size:11px}.x-reset .x-nlg .x-tab-bar{background-image:url('../../resources/themes/images/default/tab-bar/tab-bar-default-bg.gif')}.x-reset .x-tab-bar-default-plain,.x-reset .x-nlg .x-tab-bar-default-plain{background:transparent none}.x-reset .x-tab-bar-body{border-style:solid;border-color:#99bce8;position:relative;z-index:2;zoom:1}.x-reset .x-tab-bar-top .x-tab-bar-body{height:20px;border-width:1px 1px 0;padding:1px 0 3px}.x-reset .x-tab-bar-top .x-tab-bar-strip{top:22px;border-width:1px 1px 0;height:2px}.x-reset .x-border-box .x-tab-bar-top .x-tab-bar-body{height:25px}.x-reset .x-border-box .x-tab-bar-top .x-tab-bar-strip{height:3px}.x-reset .x-tab-bar-top .x-tab-bar-body-default-plain{height:20px;border-width:0;padding:0 0 2px}.x-reset .x-tab-bar-top .x-tab-bar-strip-default-plain{top:20px;border-width:1px 1px 0 1px;height:2px}.x-reset .x-border-box .x-tab-bar-top .x-tab-bar-body-default-plain{height:22px}.x-reset .x-border-box .x-tab-bar-top .x-tab-bar-strip-default-plain{height:3px}.x-reset .x-tab-bar-bottom .x-tab-bar-body{height:20px;border-width:0 1px 1px;padding:3px 0 1px}.x-reset .x-tab-bar-bottom .x-tab-bar-body .x-box-inner{position:relative;top:-1px}.x-reset .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller,.x-reset .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-left,.x-reset .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-right{height:22px}.x-reset .x-tab-bar-bottom .x-tab-bar-strip{top:0;border-width:0 1px 1px 1px;height:2px}.x-reset .x-border-box .x-tab-bar-bottom .x-tab-bar-body{height:25px}.x-reset .x-border-box .x-tab-bar-bottom .x-tab-bar-strip{height:3px}.x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain{height:20px;border-width:0;padding:3px 0 0}.x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-inner{position:relative;top:-1px}.x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller,.x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-left,.x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-right{height:21px}.x-reset .x-tab-bar-bottom .x-tab-bar-strip-default-plain{top:0;border-width:0 1px 1px 1px;height:2px}.x-reset .x-border-box .x-tab-bar-bottom .x-tab-bar-body-default-plain{height:23px}.x-reset .x-border-box .x-tab-bar-bottom .x-tab-bar-strip-default-plain{height:3px}.x-reset .x-tab-bar-strip-default,.x-reset .x-tab-bar-strip-default-plain{font-size:0;line-height:0;position:absolute;z-index:1;border-style:solid;overflow:hidden;border-color:#99bce8;background-color:#deecfd;zoom:1}.x-reset .x-tab-default-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 3px 0 3px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-ms-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x-reset .x-nlg .x-tab-default-top-mc{background-image:url('../../resources/themes/images/default/tab/tab-default-top-bg.gif');background-color:#deecfd}.x-reset .x-nbr .x-tab-default-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100404px 1000000px}.x-reset .x-nbr .x-tab-default-top-tl,.x-reset .x-nbr .x-tab-default-top-bl,.x-reset .x-nbr .x-tab-default-top-tr,.x-reset .x-nbr .x-tab-default-top-br,.x-reset .x-nbr .x-tab-default-top-tc,.x-reset .x-nbr .x-tab-default-top-bc,.x-reset .x-nbr .x-tab-default-top-ml,.x-reset .x-nbr .x-tab-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/tab/tab-default-top-corners.gif')}.x-reset .x-nbr .x-tab-default-top-ml,.x-reset .x-nbr .x-tab-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/tab/tab-default-top-sides.gif');background-position:0 0}.x-reset .x-nbr .x-tab-default-top-mc{padding:0}.x-reset .x-strict .x-ie7 .x-tab-default-top-tl,.x-reset .x-strict .x-ie7 .x-tab-default-top-bl{position:relative;right:0}.x-reset .x-tab-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:0 3px 3px 3px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-ms-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x-reset .x-nlg .x-tab-default-bottom-mc{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif');background-color:#deecfd}.x-reset .x-nbr .x-tab-default-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100000px 1000404px}.x-reset .x-nbr .x-tab-default-bottom-tl,.x-reset .x-nbr .x-tab-default-bottom-bl,.x-reset .x-nbr .x-tab-default-bottom-tr,.x-reset .x-nbr .x-tab-default-bottom-br,.x-reset .x-nbr .x-tab-default-bottom-tc,.x-reset .x-nbr .x-tab-default-bottom-bc,.x-reset .x-nbr .x-tab-default-bottom-ml,.x-reset .x-nbr .x-tab-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-corners.gif')}.x-reset .x-nbr .x-tab-default-bottom-ml,.x-reset .x-nbr .x-tab-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-sides.gif');background-position:0 0}.x-reset .x-nbr .x-tab-default-bottom-mc{padding:0}.x-reset .x-strict .x-ie7 .x-tab-default-bottom-tl,.x-reset .x-strict .x-ie7 .x-tab-default-bottom-bl{position:relative;right:0}.x-reset .x-tab{z-index:1;margin:0 0 0 2px;display:inline-block;zoom:1;*display:inline;white-space:nowrap;height:20px;border-color:#8db3e3;cursor:pointer;cursor:hand}.x-reset .x-tab button{cursor:pointer;cursor:hand}.x-reset .x-tab em{display:block;padding:0 6px;line-height:1px}.x-reset .x-tab button{background:0;border:0;padding:0;margin:0;-webkit-appearance:none;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;color:#416da3;outline:0 none;overflow-x:visible}.x-reset .x-tab button::-moz-focus-inner{border:0;padding:0}.x-reset .x-tab button .x-tab-inner{background-color:transparent;background-repeat:no-repeat;background-position:0 -2px;display:block;text-align:center;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden}.x-reset .x-tab img{display:none}.x-reset .x-border-box .x-tab-default-top{height:21px}.x-reset .x-border-box .x-tab-default-bottom{height:21px}.x-reset * html .x-ie .x-tab button{width:1px}.x-reset .x-strict .x-ie6 .x-tab .x-frame-mc,.x-reset .x-strict .x-ie7 .x-tab .x-frame-mc{height:100%}.x-reset .x-ie .x-tab-active button:active{position:relative;top:-1px;left:-1px}.x-reset .x-tab-default-top{-moz-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-webkit-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-o-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;border-bottom:1px solid #99bce8!important}.x-reset .x-tab-default-top em{padding-bottom:3px}.x-reset .x-tab-default-top button,.x-reset .x-tab-default-top .x-tab-inner{height:13px;line-height:13px}.x-reset .x-safari4 .x-tab-default-top .x-tab-inner,.x-reset .x-safari5_0 .x-tab-default-top .x-tab-inner{line-height:11px}.x-reset .x-nbr .x-tab-default-top{border-bottom-width:1px!important}.x-reset .x-tab-default-top-active{border-bottom-color:#deecfd!important}.x-reset .x-tab-default-bottom{-moz-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-webkit-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-o-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;border-top:1px solid #99bce8!important;-moz-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-webkit-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-o-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x-reset .x-tab-default-bottom em{padding-top:3px}.x-reset .x-tab-default-bottom button,.x-reset .x-tab-default-bottom .x-tab-inner{height:13px;line-height:13px}.x-reset .x-nbr .x-tab-default-bottom{border-top-width:1px!important}.x-reset .x-tab-default-bottom-active{border-top-color:#deecfd!important}.x-reset .x-tab-default-disabled{cursor:default;border-color:#bbd2ef;background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-ms-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:linear-gradient(top,#e1ecfa,#ecf4fe)}.x-reset .x-tab-default-disabled button{color:#c3b3b3!important}.x-reset .x-tab-icon-text-left .x-tab-inner{padding-left:20px}.x-reset .x-tab button{position:relative}.x-reset .x-tab-icon{position:absolute;background-repeat:no-repeat;background-position:0 -1px;top:0;left:0;right:auto;bottom:0;width:18px;height:18px}.x-reset .x-strict .x-ie8 .x-tab button,.x-reset .x-strict .x-ie9 .x-tab button{overflow-y:visible}.x-reset .x-tab-default-disabled .x-tab-icon{filter:alpha(opacity=50);opacity:.5}.x-reset .x-tab-noicon .x-tab-icon{display:none}.x-reset .x-tab-top-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-ms-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x-reset .x-tab-bottom-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-ms-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x-reset .x-tab-active{z-index:3}.x-reset .x-tab-active button{color:#15498b}.x-reset .x-tab-top-active{background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-ms-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%)}.x-reset .x-tab-bottom-active{background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-ms-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%)}.x-reset .x-tab-disabled{border-color:#bbd2ef}.x-reset .x-tab-disabled button{color:#c3b3b3}.x-reset .x-tab-top-disabled{background-image:none;background:transparent;background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-ms-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:linear-gradient(top,#e1ecfa,#ecf4fe)}.x-reset .x-tab-bottom-disabled{background-image:none;background:transparent;background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-ms-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:linear-gradient(bottom,#e1ecfa,#ecf4fe)}.x-reset .x-nlg .x-tab-top{background-image:url('../../resources/themes/images/default/tab/tab-default-top-bg.gif')}.x-reset .x-nlg .x-tab-bottom{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif')}.x-reset .x-nlg .x-tab-top-over{background-image:url('../../resources/themes/images/default/tab/tab-default-top-over-bg.gif')}.x-reset .x-nlg .x-tab-bottom-over{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-over-bg.gif')}.x-reset .x-nlg .x-tab-top-active{background-image:url('../../resources/themes/images/default/tab/tab-default-top-active-bg.gif')}.x-reset .x-nlg .x-tab-bottom-active{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-active-bg.gif')}.x-reset .x-nlg .x-tab-top-disabled{background-image:url('../../resources/themes/images/default/tab/tab-default-top-disabled-bg.gif')!important}.x-reset .x-nlg .x-tab-bottom-disabled{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif')!important}.x-reset .x-tab-closable em{padding-right:14px}.x-reset .x-tab-close-btn{position:absolute;top:2px;right:2px;width:11px;height:11px;font-size:0;line-height:0;text-indent:-999px;background:no-repeat;background-image:url('../../resources/themes/images/default/tab/tab-default-close.gif');filter:alpha(opacity=60);opacity:.6}.x-reset .x-nbr .x-tab-close-btn{top:0;right:0}.x-reset a.x-tab-close-btn:hover{filter:alpha(opacity=100);opacity:1}.x-reset .x-tab-default-disabled a.x-tab-close-btn{filter:alpha(opacity=30);opacity:.3}.x-reset .x-nbr .x-tab-top-over .x-frame-tl,.x-reset .x-nbr .x-tab-top-over .x-frame-bl,.x-reset .x-nbr .x-tab-top-over .x-frame-tr,.x-reset .x-nbr .x-tab-top-over .x-frame-br,.x-reset .x-nbr .x-tab-top-over .x-frame-tc,.x-reset .x-nbr .x-tab-top-over .x-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-top-over-corners.gif')}.x-reset .x-nbr .x-tab-top-over .x-frame-ml,.x-reset .x-nbr .x-tab-top-over .x-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-top-over-sides.gif')}.x-reset .x-nbr .x-tab-top-over .x-frame-mc{background-color:#e8f2ff;background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-top-over-bg.gif')}.x-reset .x-nbr .x-tab-bottom-over .x-frame-tl,.x-reset .x-nbr .x-tab-bottom-over .x-frame-bl,.x-reset .x-nbr .x-tab-bottom-over .x-frame-tr,.x-reset .x-nbr .x-tab-bottom-over .x-frame-br,.x-reset .x-nbr .x-tab-bottom-over .x-frame-tc,.x-reset .x-nbr .x-tab-bottom-over .x-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-over-corners.gif')}.x-reset .x-nbr .x-tab-bottom-over .x-frame-ml,.x-reset .x-nbr .x-tab-bottom-over .x-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-over-sides.gif')}.x-reset .x-nbr .x-tab-bottom-over .x-frame-mc{background-color:#e8f2ff;background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-over-bg.gif')}.x-reset .x-nbr .x-tab-top-active .x-frame-tl,.x-reset .x-nbr .x-tab-top-active .x-frame-bl,.x-reset .x-nbr .x-tab-top-active .x-frame-tr,.x-reset .x-nbr .x-tab-top-active .x-frame-br,.x-reset .x-nbr .x-tab-top-active .x-frame-tc,.x-reset .x-nbr .x-tab-top-active .x-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-top-active-corners.gif')}.x-reset .x-nbr .x-tab-top-active .x-frame-ml,.x-reset .x-nbr .x-tab-top-active .x-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-top-active-sides.gif')}.x-reset .x-nbr .x-tab-top-active .x-frame-mc{background-color:#deecfd;background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-top-active-bg.gif')}.x-reset .x-nbr .x-tab-bottom-active .x-frame-tl,.x-reset .x-nbr .x-tab-bottom-active .x-frame-bl,.x-reset .x-nbr .x-tab-bottom-active .x-frame-tr,.x-reset .x-nbr .x-tab-bottom-active .x-frame-br,.x-reset .x-nbr .x-tab-bottom-active .x-frame-tc,.x-reset .x-nbr .x-tab-bottom-active .x-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-active-corners.gif')}.x-reset .x-nbr .x-tab-bottom-active .x-frame-ml,.x-reset .x-nbr .x-tab-bottom-active .x-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-active-sides.gif')}.x-reset .x-nbr .x-tab-bottom-active .x-frame-mc{background-color:#deecfd;background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-active-bg.gif')}.x-reset .x-nbr .x-tab-top-disabled .x-frame-tl,.x-reset .x-nbr .x-tab-top-disabled .x-frame-bl,.x-reset .x-nbr .x-tab-top-disabled .x-frame-tr,.x-reset .x-nbr .x-tab-top-disabled .x-frame-br,.x-reset .x-nbr .x-tab-top-disabled .x-frame-tc,.x-reset .x-nbr .x-tab-top-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-top-disabled-corners.gif')}.x-reset .x-nbr .x-tab-top-disabled .x-frame-ml,.x-reset .x-nbr .x-tab-top-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-top-disabled-sides.gif')}.x-reset .x-nbr .x-tab-top-disabled .x-frame-mc{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-top-disabled-bg.gif')}.x-reset .x-nbr .x-tab-bottom-disabled .x-frame-tl,.x-reset .x-nbr .x-tab-bottom-disabled .x-frame-bl,.x-reset .x-nbr .x-tab-bottom-disabled .x-frame-tr,.x-reset .x-nbr .x-tab-bottom-disabled .x-frame-br,.x-reset .x-nbr .x-tab-bottom-disabled .x-frame-tc,.x-reset .x-nbr .x-tab-bottom-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-corners.gif')}.x-reset .x-nbr .x-tab-bottom-disabled .x-frame-ml,.x-reset .x-nbr .x-tab-bottom-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-sides.gif')}.x-reset .x-nbr .x-tab-bottom-disabled .x-frame-mc{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif')}.x-reset .x-autowidth-table table.x-grid-table{table-layout:auto;width:auto!important}.x-reset .x-tree-no-lines .x-tree-elbow{background-color:transparent}.x-reset .x-tree-no-lines .x-tree-elbow-end{background-color:transparent}.x-reset .x-tree-no-lines .x-tree-elbow-line{background-color:transparent}.x-reset .x-tree-arrows .x-tree-elbow-plus{background:transparent no-repeat 0 0}.x-reset .x-tree-arrows .x-tree-elbow-end-plus{background:transparent no-repeat 0 0}.x-reset .x-tree-arrows .x-tree-elbow-end-minus{background:transparent no-repeat -16px 0}.x-reset .x-tree-arrows .x-tree-elbow-minus{background:transparent no-repeat -16px 0}.x-reset .x-tree-arrows .x-tree-elbow{background-color:transparent!important}.x-reset .x-tree-arrows .x-tree-elbow-end{background-color:transparent!important}.x-reset .x-tree-arrows .x-tree-elbow-line{background-color:transparent!important}.x-reset .x-tree-arrows .x-tree-expander-over .x-tree-elbow-plus,.x-reset .x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-plus{background-position:-32px 0}.x-reset .x-tree-arrows .x-tree-expander-over .x-tree-elbow-minus,.x-reset .x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-minus{background-position:-48px 0}.x-reset .x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-plus,.x-reset .x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-position:-16px 0}.x-reset .x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-plus,.x-reset .x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-end-plus{background-position:-48px 0}.x-reset .x-tree-elbow-plus,.x-reset .x-tree-elbow-minus,.x-reset .x-tree-elbow-end-plus,.x-reset .x-tree-elbow-end-minus{cursor:pointer}.x-reset .x-tree-lines .x-tree-elbow{background-image:url('../../resources/themes/images/default/tree/elbow.gif')}.x-reset .x-tree-lines .x-tree-elbow-end{background-image:url('../../resources/themes/images/default/tree/elbow-end.gif')}.x-reset .x-tree-lines .x-tree-elbow-plus{background-image:url('../../resources/themes/images/default/tree/elbow-plus.gif')}.x-reset .x-tree-lines .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-end-plus.gif')}.x-reset .x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus{background-image:url('../../resources/themes/images/default/tree/elbow-minus.gif')}.x-reset .x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-end-minus.gif')}.x-reset .x-tree-lines .x-tree-elbow-line{background-image:url('../../resources/themes/images/default/tree/elbow-line.gif')}.x-reset .x-tree-no-lines .x-tree-elbow-plus,.x-reset .x-tree-no-lines .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-plus-nl.gif')}.x-reset .x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-plus,.x-reset .x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-end-minus-nl.gif')}.x-reset .x-tree-arrows .x-tree-elbow-plus,.x-reset .x-tree-arrows .x-tree-elbow-minus,.x-reset .x-tree-arrows .x-tree-elbow-end-plus,.x-reset .x-tree-arrows .x-tree-elbow-end-minus{background-image:url('../../resources/themes/images/default/tree/arrows.gif')}.x-reset .x-tree-icon{margin:2px 3px 0 0}.x-reset .x-grid-with-row-lines .x-tree-icon{margin-top:1px}.x-reset .x-tree-elbow,.x-reset .x-tree-elbow-end,.x-reset .x-tree-elbow-plus,.x-reset .x-tree-elbow-end-plus,.x-reset .x-tree-elbow-empty,.x-reset .x-tree-elbow-line{height:20px;width:16px}.x-reset .x-grid-with-row-lines .x-tree-elbow,.x-reset .x-grid-with-row-lines .x-tree-elbow-end,.x-reset .x-grid-with-row-lines .x-tree-elbow-plus,.x-reset .x-grid-with-row-lines .x-tree-elbow-end-plus,.x-reset .x-grid-with-row-lines .x-tree-elbow-empty,.x-reset .x-grid-with-row-lines .x-tree-elbow-line{height:19px;background-position:0 -1px}.x-reset .x-tree-icon-leaf{width:16px;background-image:url('../../resources/themes/images/default/tree/leaf.gif')}.x-reset .x-tree-icon-parent{width:16px;background-image:url('../../resources/themes/images/default/tree/folder.gif')}.x-reset .x-grid-tree-node-expanded .x-tree-icon-parent{background-image:url('../../resources/themes/images/default/tree/folder-open.gif')}.x-reset .x-grid-rowbody{padding:0}.x-reset .x-grid-cell-treecolumn .x-grid-cell-inner{padding:0;line-height:19px}.x-reset .x-grid-with-row-lines .x-grid-cell-treecolumn .x-grid-cell-inner{line-height:17px}.x-reset .x-tree-panel .x-grid-cell-inner{cursor:pointer}.x-reset .x-tree-panel .x-grid-cell-inner img{display:inline-block;vertical-align:top}.x-reset .x-ie .x-tree-panel .x-tree-elbow,.x-reset .x-ie .x-tree-panel .x-tree-elbow-end,.x-reset .x-ie .x-tree-panel .x-tree-elbow-plus,.x-reset .x-ie .x-tree-panel .x-tree-elbow-end-plus,.x-reset .x-ie .x-tree-panel .x-tree-elbow-empty,.x-reset .x-ie .x-tree-panel .x-tree-elbow-line{vertical-align:-6px}.x-reset .x-grid-editor-on-text-node .x-form-text{padding-left:1px;padding-right:1px}.x-reset .x-ie .x-grid-editor-on-text-node .x-form-text{padding-left:2px;padding-right:2px}.x-reset .x-opera .x-grid-editor-on-text-node .x-form-text{padding-left:2px;padding-right:2px}.x-reset .x-tree-checkbox{margin:4px 3px 0 0;display:inline-block;vertical-align:top;width:13px;height:13px;background:no-repeat;background-image:url('../../resources/themes/images/default/form/checkbox.gif');overflow:hidden;padding:0;border:0}.x-reset .x-tree-checkbox::-moz-focus-inner{padding:0;border:0}.x-reset .x-grid-with-row-lines .x-tree-checkbox{margin-top:3px}.x-reset .x-tree-checkbox-checked{background-position:0 -13px}.x-reset .x-tree-drop-ok-append .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-append.gif')}.x-reset .x-tree-drop-ok-above .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-above.gif')}.x-reset .x-tree-drop-ok-below .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-below.gif')}.x-reset .x-tree-drop-ok-between .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-between.gif')}.x-reset .x-grid-tree-loading .x-tree-icon{background-image:url('../../resources/themes/images/default/tree/loading.gif')}.x-reset .x-tree-ddindicator{height:1px;border-width:1px 0 0;border-style:dotted;border-color:green}.x-reset .x-grid-tree-loading span{font-style:italic;color:#444}.x-reset .x-tree-animator-wrap{overflow:hidden}.x-reset .x-surface{display:-moz-inline-box;-moz-box-orient:vertical;display:inline-block;vertical-align:middle;*vertical-align:auto;overflow:hidden}.x-reset .x-surface{*display:inline}.x-reset .rvml{behavior:url(#default#VML)}.x-reset .x-surface tspan{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-reset .x-vml-sprite{position:absolute;left:0;top:0;width:1px;height:1px}.x-reset .x-vml-group{position:absolute;left:0;top:0;width:1000px;height:1000px}.x-reset .x-vml-measure-span{position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;display:inline}.x-reset .x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}.x-reset .x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}.x-reset svg,.x-reset vml{overflow:hidden}.x-reset .x-viewport,.x-reset .x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;position:static}.x-reset .x-dd-drag-proxy{z-index:1000000!important}.x-reset .x-dd-drag-repair .x-dd-drag-ghost{filter:alpha(opacity=60);opacity:.6}.x-reset .x-dd-drag-repair .x-dd-drop-icon{display:none}.x-reset .x-dd-drag-ghost{filter:alpha(opacity=85);opacity:.85;padding:5px;padding-left:20px;white-space:nowrap;color:#000;font:normal 11px tahoma,arial,verdana,sans-serif;border:1px solid;border-color:#ddd #bbb #bbb #ddd;background-color:#fff}.x-reset .x-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1}.x-reset .x-view-selector{position:absolute;left:0;top:0;width:0;background-color:#c3daf9;border:1px dotted #39b;filter:alpha(opacity=50);opacity:.5;zoom:1}.x-reset .x-dd-drop-nodrop .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/dd/drop-no.gif')}.x-reset .x-dd-drop-ok .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/dd/drop-yes.gif')}.x-reset .x-dd-drop-ok-add .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/dd/drop-add.gif')}.x-reset .x-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;zoom:1;filter:alpha(opacity=0);opacity:0;background-color:#fff}.x-reset .x-collapsed .x-resizable-handle{display:none}.x-reset .x-resizable-handle-east{width:6px;height:100%;right:0;top:0}.x-reset .x-resizable-over .x-resizable-handle-east{cursor:e-resize}.x-reset .x-resizable-handle-south{width:100%;height:6px;left:0;bottom:0}.x-reset .x-resizable-over .x-resizable-handle-south{cursor:s-resize}.x-reset .x-resizable-handle-west{width:6px;height:100%;left:0;top:0}.x-reset .x-resizable-over .x-resizable-handle-west{cursor:w-resize}.x-reset .x-resizable-handle-north{width:100%;height:6px;left:0;top:0}.x-reset .x-resizable-over .x-resizable-handle-north{cursor:n-resize}.x-reset .x-resizable-handle-southeast{width:6px;height:6px;right:0;bottom:0;z-index:101}.x-reset .x-resizable-over .x-resizable-handle-southeast{cursor:se-resize}.x-reset .x-resizable-handle-northwest{width:6px;height:6px;left:0;top:0;z-index:101}.x-reset .x-resizable-over .x-resizable-handle-northwest{cursor:nw-resize}.x-reset .x-resizable-handle-northeast{width:6px;height:6px;right:0;top:0;z-index:101}.x-reset .x-resizable-over .x-resizable-handle-northeast{cursor:ne-resize}.x-reset .x-resizable-handle-southwest{width:6px;height:6px;left:0;bottom:0;z-index:101}.x-reset .x-resizable-over .x-resizable-handle-southwest{cursor:sw-resize}.x-reset .x-ie .x-resizable-handle-east{margin-right:-1px}.x-reset .x-ie .x-resizable-handle-south{margin-bottom:-1px}.x-reset .x-resizable-over .x-resizable-handle,.x-reset .x-resizable-pinned .x-resizable-handle{filter:alpha(opacity=100);opacity:1}.x-reset .x-window .x-window-handle{filter:alpha(opacity=0);opacity:0}.x-reset .x-window-collapsed .x-window-handle{display:none}.x-reset .x-resizable-proxy{border:1px dashed #3b5a82;position:absolute;left:0;top:0;overflow:hidden;z-index:50000}.x-reset .x-resizable-overlay{position:absolute;left:0;top:0;width:100%;height:100%;display:none;z-index:200000;background-color:#fff;filter:alpha(opacity=0);opacity:0}.x-reset .x-resizable-over .x-resizable-handle-east,.x-reset .x-resizable-over .x-resizable-handle-west,.x-reset .x-resizable-pinned .x-resizable-handle-east,.x-reset .x-resizable-pinned .x-resizable-handle-west{background-position:left;background-image:url('../../resources/themes/images/default/sizer/e-handle.gif')}.x-reset .x-resizable-over .x-resizable-handle-south,.x-reset .x-resizable-over .x-resizable-handle-north,.x-reset .x-resizable-pinned .x-resizable-handle-south,.x-reset .x-resizable-pinned .x-resizable-handle-north{background-position:top;background-image:url('../../resources/themes/images/default/sizer/s-handle.gif')}.x-reset .x-resizable-over .x-resizable-handle-southeast,.x-reset .x-resizable-pinned .x-resizable-handle-southeast{background-position:top left;background-image:url('../../resources/themes/images/default/sizer/se-handle.gif')}.x-reset .x-resizable-over .x-resizable-handle-northwest,.x-reset .x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right;background-image:url('../../resources/themes/images/default/sizer/nw-handle.gif')}.x-reset .x-resizable-over .x-resizable-handle-northeast,.x-reset .x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left;background-image:url('../../resources/themes/images/default/sizer/ne-handle.gif')}.x-reset .x-resizable-over .x-resizable-handle-southwest,.x-reset .x-resizable-pinned .x-resizable-handle-southwest{background-position:top right;background-image:url('../../resources/themes/images/default/sizer/sw-handle.gif')}.x-reset .x-splitter .x-collapse-el{position:absolute;cursor:pointer;background-color:transparent;background-repeat:no-repeat!important}.x-reset .x-layout-split-left,.x-reset .x-layout-split-right{top:50%;margin-top:-17px;width:5px;height:35px}.x-reset .x-layout-split-top,.x-reset .x-layout-split-bottom{left:50%;width:35px;height:5px;margin-left:-17px}.x-reset .x-layout-split-left{background:no-repeat top right;background-image:url('../../resources/themes/images/default/util/splitter/mini-left.gif')}.x-reset .x-layout-split-right{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-right.gif')}.x-reset .x-layout-split-top{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-top.gif')}.x-reset .x-layout-split-bottom{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-bottom.gif')}.x-reset .x-splitter-collapsed .x-layout-split-left{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-right.gif')}.x-reset .x-splitter-collapsed .x-layout-split-right{background:no-repeat top right;background-image:url('../../resources/themes/images/default/util/splitter/mini-left.gif')}.x-reset .x-splitter-collapsed .x-layout-split-top{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-bottom.gif')}.x-reset .x-splitter-collapsed .x-layout-split-bottom{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-top.gif')}.x-reset .x-splitter-horizontal{cursor:e-resize;cursor:row-resize;font-size:1px}.x-reset .x-splitter-vertical{cursor:e-resize;cursor:col-resize;font-size:1px}.x-reset .x-splitter-collapsed,.x-reset .x-splitter-horizontal-noresize,.x-reset .x-splitter-vertical-noresize{cursor:default}.x-reset .x-splitter-active{z-index:4;font-size:1px;background-color:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-reset .x-splitter-active .x-collapse-el{filter:alpha(opacity=30);opacity:.3}.x-reset .x-proxy-el{position:absolute;background:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-reset .x-docked{position:absolute!important;z-index:1}.x-reset .x-docked-top{border-bottom-width:0!important}.x-reset .x-docked-bottom{border-top-width:0!important}.x-reset .x-docked-left{border-right-width:0!important}.x-reset .x-docked-right{border-left-width:0!important}.x-reset .x-docked-noborder-top{border-top-width:0!important}.x-reset .x-docked-noborder-right{border-right-width:0!important}.x-reset .x-docked-noborder-bottom{border-bottom-width:0!important}.x-reset .x-docked-noborder-left{border-left-width:0!important}.x-reset .x-box-inner{overflow:hidden;zoom:1;position:relative;left:0;top:0}.x-reset .x-box-item{position:absolute!important;left:0;top:0}.x-reset .x-rtl .x-box-item{right:0;left:auto}.x-reset .x-box-layout-ct,.x-reset .x-border-layout-ct{overflow:hidden;zoom:1}.x-reset .x-border-layout-ct{background-color:#dfe8f6;position:relative}.x-reset .x-overflow-hidden{overflow:hidden!important}.x-reset .x-inline-children>*{display:inline-block!important}.x-reset .x-abs-layout-ct{position:relative}.x-reset .x-abs-layout-item{position:absolute!important}.x-reset .x-fit-item{position:relative}.x-reset .x-border-region-slide-in{z-index:5}.x-reset .x-region-collapsed-placeholder{z-index:4}.x-reset .x-accordion-hd .x-panel-header-text{color:black;font-weight:normal}.x-reset .x-accordion-hd{background:#d9e7f8!important;-moz-box-shadow:inset 0 0 0 0 #d9e7f8;-webkit-box-shadow:inset 0 0 0 0 #d9e7f8;-o-box-shadow:inset 0 0 0 0 #d9e7f8;box-shadow:inset 0 0 0 0 #d9e7f8}.x-reset .x-accordion-hd .x-tool-collapse-top,.x-reset .x-accordion-hd .x-tool-collapse-right,.x-reset .x-accordion-hd .x-tool-collapse-bottom,.x-reset .x-accordion-hd .x-tool-collapse-left{background-position:0 -255px}.x-reset .x-accordion-hd .x-tool-expand-top,.x-reset .x-accordion-hd .x-tool-expand-right,.x-reset .x-accordion-hd .x-tool-expand-bottom,.x-reset .x-accordion-hd .x-tool-expand-left{background-position:0 -240px}.x-reset .x-accordion-hd .x-tool-over .x-tool-collapse-top,.x-reset .x-accordion-hd .x-tool-over .x-tool-collapse-right,.x-reset .x-accordion-hd .x-tool-over .x-tool-collapse-bottom,.x-reset .x-accordion-hd .x-tool-over .x-tool-collapse-left{background-position:-15px -255px}.x-reset .x-accordion-hd .x-tool-over .x-tool-expand-top,.x-reset .x-accordion-hd .x-tool-over .x-tool-expand-right,.x-reset .x-accordion-hd .x-tool-over .x-tool-expand-bottom,.x-reset .x-accordion-hd .x-tool-over .x-tool-expand-left{background-position:-15px -240px}.x-reset .x-accordion-hd{border-width:1px 0 1px 0!important;padding:4px 5px 5px 5px;border-top-color:#f3f7fb!important}.x-reset .x-accordion-body{border-width:0!important}.x-reset .x-accordion-hd-sibling-expanded{border-top-color:#99bce8!important;-moz-box-shadow:inset 0 1px 0 0 #f3f7fb;-webkit-box-shadow:inset 0 1px 0 0 #f3f7fb;-o-box-shadow:inset 0 1px 0 0 #f3f7fb;box-shadow:inset 0 1px 0 0 #f3f7fb}.x-reset .x-accordion-hd-last-collapsed{border-bottom-color:#d9e7f8!important}.x-reset .x-frame-tl,.x-reset .x-frame-tr,.x-reset .x-frame-tc,.x-reset .x-frame-bl,.x-reset .x-frame-br,.x-reset .x-frame-bc{overflow:hidden;background-repeat:no-repeat}.x-reset .x-frame-tc,.x-reset .x-frame-bc{background-repeat:repeat-x}.x-reset .x-frame-mc{position:relative;background-repeat:repeat-x;overflow:hidden}.x-reset .x-box-scroller-left{float:left;height:100%;z-index:5}.x-reset .x-box-scroller-left .x-toolbar-scroll-left,.x-reset .x-box-scroller-left .x-tabbar-scroll-left{width:18px;position:relative;cursor:pointer;height:20px;background:transparent no-repeat -18px 0;background-image:url('../../resources/themes/images/default/tab-bar/scroll-left.gif')}.x-reset .x-box-scroller-left .x-toolbar-scroll-left-hover{background-position:0 0}.x-reset .x-box-scroller-left .x-toolbar-scroll-left-disabled,.x-reset .x-box-scroller-left .x-tabbar-scroll-left-disabled{background-position:-18px 0;filter:alpha(opacity=50);opacity:.5;cursor:default}.x-reset .x-box-scroller-left .x-toolbar-scroll-left{background-image:url('../../resources/themes/images/default/toolbar/scroll-left.gif');background-position:-14px 0}.x-reset .x-box-scroller-left .x-toolbar-scroll-left-hover{background-position:0 0}.x-reset .x-box-scroller-left .x-toolbar-scroll-left-disabled{background-position:-14px 0}.x-reset .x-box-scroller-left .x-toolbar-scroll-left{width:14px;height:22px;border-bottom:1px solid #8db2e3}.x-reset .x-horizontal-box-overflow-body{float:left}.x-reset .x-box-scroller-right{float:right;height:100%;z-index:5}.x-reset .x-box-scroller-right .x-toolbar-scroll-right,.x-reset .x-box-scroller-right .x-tabbar-scroll-right{width:18px;position:relative;cursor:pointer;height:20px;background:transparent no-repeat 0 0;background-image:url('../../resources/themes/images/default/tab-bar/scroll-right.gif')}.x-reset .x-box-scroller-right .x-toolbar-scroll-right-hover{background-position:-18px 0}.x-reset .x-box-scroller-right .x-toolbar-scroll-right-disabled,.x-reset .x-box-scroller-right .x-tabbar-scroll-right-disabled{background-position:0 0;filter:alpha(opacity=50);opacity:.5;cursor:default}.x-reset .x-box-scroller-right .x-toolbar-scroll-right{background-image:url('../../resources/themes/images/default/toolbar/scroll-right.gif')}.x-reset .x-box-scroller-right .x-toolbar-scroll-right-hover{background-position:-14px 0}.x-reset .x-box-scroller-right .x-toolbar-scroll-right-disabled{background-position:0 0}.x-reset .x-box-scroller-right .x-toolbar-scroll-right{width:14px;height:22px;border-bottom:1px solid #8db2e3}.x-reset .x-box-scroller-top .x-box-scroller{line-height:0;font-size:0}.x-reset .x-box-scroller-top .x-menu-scroll-top{background:transparent no-repeat center center;background-image:url('../../resources/themes/images/default/layout/mini-top.gif');height:8px;cursor:pointer}.x-reset .x-box-scroller-bottom .x-box-scroller{line-height:0;font-size:0}.x-reset .x-box-scroller-bottom .x-menu-scroll-bottom{background:transparent no-repeat center center;background-image:url('../../resources/themes/images/default/layout/mini-bottom.gif');height:8px;cursor:pointer}.x-reset .x-box-menu-right{float:right;padding-right:2px}.x-reset .x-column{float:left}.x-reset .x-ie6 .x-column{display:inline}.x-reset .x-quirks .x-ie .x-form-layout-table,.x-reset .x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item{position:relative}.x-reset .x-tool{height:15px}.x-reset .x-tool img{overflow:hidden;width:15px;height:15px;cursor:pointer;background-color:transparent;background-repeat:no-repeat;background-image:url('../../resources/themes/images/default/tools/tool-sprites.gif');margin:0}.x-reset .x-panel-header-horizontal .x-tool,.x-reset .x-window-header-horizontal .x-tool{margin-left:2px}.x-reset .x-panel-header-vertical .x-tool,.x-reset .x-window-header-vertical .x-tool{margin-top:2px}.x-reset .x-panel-header-vertical .x-tool-top,.x-reset .x-window-header-vertical .x-tool-top{margin:0 0 4px}.x-reset .x-tool-placeholder{visibility:hidden}.x-reset .x-tool-toggle{background-position:0 -60px}.x-reset .x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-reset .x-panel-collapsed .x-tool-toggle,.x-reset .x-fieldset-collapsed .x-tool-toggle{background-position:0 -75px}.x-reset .x-panel-collapsed .x-tool-over .x-tool-toggle,.x-reset .x-fieldset-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.x-reset .x-tool-close{background-position:0 0}.x-reset .x-tool-minimize{background-position:0 -15px}.x-reset .x-tool-maximize{background-position:0 -30px}.x-reset .x-tool-restore{background-position:0 -45px}.x-reset .x-tool-gear{background-position:0 -90px}.x-reset .x-tool-prev{background-position:0 -105px}.x-reset .x-tool-next{background-position:0 -120px}.x-reset .x-tool-pin{background-position:0 -135px}.x-reset .x-tool-unpin{background-position:0 -150px}.x-reset .x-tool-right{background-position:0 -165px}.x-reset .x-tool-left{background-position:0 -180px}.x-reset .x-tool-help{background-position:0 -300px}.x-reset .x-tool-save{background-position:0 -285px}.x-reset .x-tool-search{background-position:0 -270px}.x-reset .x-tool-minus{background-position:0 -255px}.x-reset .x-tool-plus{background-position:0 -240px}.x-reset .x-tool-refresh{background-position:0 -225px}.x-reset .x-tool-up{background-position:0 -210px}.x-reset .x-tool-down{background-position:0 -195px}.x-reset .x-tool-collapse{background-position:0 -345px}.x-reset .x-tool-expand{background-position:0 -330px}.x-reset .x-tool-print{background-position:0 -315px}.x-reset .x-tool-expand-bottom,.x-reset .x-tool-collapse-bottom{background-position:0 -195px}.x-reset .x-tool-expand-top,.x-reset .x-tool-collapse-top{background-position:0 -210px}.x-reset .x-tool-expand-left,.x-reset .x-tool-collapse-left{background-position:0 -180px}.x-reset .x-tool-expand-right,.x-reset .x-tool-collapse-right{background-position:0 -165px}.x-reset .x-tool-over .x-tool-close{background-position:-15px 0}.x-reset .x-tool-over .x-tool-minimize{background-position:-15px -15px}.x-reset .x-tool-over .x-tool-maximize{background-position:-15px -30px}.x-reset .x-tool-over .x-tool-restore{background-position:-15px -45px}.x-reset .x-tool-over .x-tool-gear{background-position:-15px -90px}.x-reset .x-tool-over .x-tool-prev{background-position:-15px -105px}.x-reset .x-tool-over .x-tool-next{background-position:-15px -120px}.x-reset .x-tool-over .x-tool-pin{background-position:-15px -135px}.x-reset .x-tool-over .x-tool-unpin{background-position:-15px -150px}.x-reset .x-tool-over .x-tool-right{background-position:-15px -165px}.x-reset .x-tool-over .x-tool-left{background-position:-15px -180px}.x-reset .x-tool-over .x-tool-down{background-position:-15px -195px}.x-reset .x-tool-over .x-tool-up{background-position:-15px -210px}.x-reset .x-tool-over .x-tool-refresh{background-position:-15px -225px}.x-reset .x-tool-over .x-tool-plus{background-position:-15px -240px}.x-reset .x-tool-over .x-tool-minus{background-position:-15px -255px}.x-reset .x-tool-over .x-tool-search{background-position:-15px -270px}.x-reset .x-tool-over .x-tool-save{background-position:-15px -285px}.x-reset .x-tool-over .x-tool-help{background-position:-15px -300px}.x-reset .x-tool-over .x-tool-print{background-position:-15px -315px}.x-reset .x-tool-over .x-tool-expand{background-position:-15px -330px}.x-reset .x-tool-over .x-tool-collapse{background-position:-15px -345px}.x-reset .x-tool-over .x-tool-expand-bottom,.x-reset .x-tool-over .x-tool-collapse-bottom{background-position:-15px -195px}.x-reset .x-tool-over .x-tool-expand-top,.x-reset .x-tool-over .x-tool-collapse-top{background-position:-15px -210px}.x-reset .x-tool-over .x-tool-expand-left,.x-reset .x-tool-over .x-tool-collapse-left{background-position:-15px -180px}.x-reset .x-tool-over .x-tool-expand-right,.x-reset .x-tool-over .x-tool-collapse-right{background-position:-15px -165px}.x-reset .x-horizontal-scroller-present .x-grid-body{border-bottom-width:0}.x-reset .x-vertical-scroller-present .x-grid-body{border-right-width:0}.x-reset .x-scroller{overflow:hidden}.x-reset .x-scroller-vertical{border:1px solid #99bce8;border-top-color:#c5c5c5}.x-reset .x-scroller-horizontal{border:1px solid #99bce8}.x-reset .x-vertical-scroller-present .x-scroller-horizontal{border-right-width:0}.x-reset .x-scroller-ct{overflow:hidden;position:absolute;margin:0;padding:0;border:0;left:0;top:0;box-sizing:content-box!important;-ms-box-sizing:content-box!important;-moz-box-sizing:content-box!important;-webkit-box-sizing:content-box!important}.x-reset .x-scroller-vertical .x-scroller-ct{overflow-y:scroll}.x-reset .x-scroller-horizontal .x-scroller-ct{overflow-x:scroll}.x-reset .x-html html,.x-reset .x-html address,.x-reset .x-html blockquote,.x-reset .x-html body,.x-reset .x-html dd,.x-reset .x-html div,.x-reset .x-html dl,.x-reset .x-html dt,.x-reset .x-html fieldset,.x-reset .x-html form,.x-reset .x-html frame,.x-reset .x-html frameset,.x-reset .x-html h1,.x-reset .x-html h2,.x-reset .x-html h3,.x-reset .x-html h4,.x-reset .x-html h5,.x-reset .x-html h6,.x-reset .x-html noframes,.x-reset .x-html ol,.x-reset .x-html p,.x-reset .x-html ul,.x-reset .x-html center,.x-reset .x-html dir,.x-reset .x-html hr,.x-reset .x-html menu,.x-reset .x-html pre{display:block}.x-reset .x-html li{display:list-item;list-style:disc}.x-reset .x-html head{display:none}.x-reset .x-html table{display:table}.x-reset .x-html tr{display:table-row}.x-reset .x-html thead{display:table-header-group}.x-reset .x-html tbody{display:table-row-group}.x-reset .x-html tfoot{display:table-footer-group}.x-reset .x-html col{display:table-column}.x-reset .x-html colgroup{display:table-column-group}.x-reset .x-html td,.x-reset .x-html th{display:table-cell}.x-reset .x-html caption{display:table-caption}.x-reset .x-html th{font-weight:bolder;text-align:center}.x-reset .x-html caption{text-align:center}.x-reset .x-html body{margin:8px}.x-reset .x-html h1{font-size:2em;margin:.67em 0}.x-reset .x-html h2{font-size:1.5em;margin:.75em 0}.x-reset .x-html h3{font-size:1.17em;margin:.83em 0}.x-reset .x-html h4,.x-reset .x-html p,.x-reset .x-html blockquote,.x-reset .x-html ul,.x-reset .x-html fieldset,.x-reset .x-html form,.x-reset .x-html ol,.x-reset .x-html dl,.x-reset .x-html dir,.x-reset .x-html menu{margin:1.12em 0}.x-reset .x-html h5{font-size:.83em;margin:1.5em 0}.x-reset .x-html h6{font-size:.75em;margin:1.67em 0}.x-reset .x-html h1,.x-reset .x-html h2,.x-reset .x-html h3,.x-reset .x-html h4,.x-reset .x-html h5,.x-reset .x-html h6,.x-reset .x-html b,.x-reset .x-html strong{font-weight:bolder}.x-reset .x-html blockquote{margin-left:40px;margin-right:40px}.x-reset .x-html i,.x-reset .x-html cite,.x-reset .x-html em,.x-reset .x-html var,.x-reset .x-html address{font-style:italic}.x-reset .x-html pre,.x-reset .x-html tt,.x-reset .x-html code,.x-reset .x-html kbd,.x-reset .x-html samp{font-family:monospace}.x-reset .x-html pre{white-space:pre}.x-reset .x-html button,.x-reset .x-html textarea,.x-reset .x-html input,.x-reset .x-html select{display:inline-block}.x-reset .x-html big{font-size:1.17em}.x-reset .x-html small,.x-reset .x-html sub,.x-reset .x-html sup{font-size:.83em}.x-reset .x-html sub{vertical-align:sub}.x-reset .x-html sup{vertical-align:super}.x-reset .x-html table{border-spacing:2px}.x-reset .x-html thead,.x-reset .x-html tbody,.x-reset .x-html tfoot{vertical-align:middle}.x-reset .x-html td,.x-reset .x-html th{vertical-align:inherit}.x-reset .x-html s,.x-reset .x-html strike,.x-reset .x-html del{text-decoration:line-through}.x-reset .x-html hr{border:1px inset}.x-reset .x-html ol,.x-reset .x-html ul,.x-reset .x-html dir,.x-reset .x-html menu,.x-reset .x-html dd{margin-left:40px}.x-reset .x-html ul,.x-reset .x-html menu,.x-reset .x-html dir{list-style-type:disc}.x-reset .x-html ol{list-style-type:decimal}.x-reset .x-html ol ul,.x-reset .x-html ul ol,.x-reset .x-html ul ul,.x-reset .x-html ol ol{margin-top:0;margin-bottom:0}.x-reset .x-html u,.x-reset .x-html ins{text-decoration:underline}.x-reset .x-html br:before{content:"\A"}.x-reset .x-html :before,.x-reset .x-html :after{white-space:pre-line}.x-reset .x-html center{text-align:center}.x-reset .x-html :link,.x-reset .x-html :visited{text-decoration:underline}.x-reset .x-html :focus{outline:invert dotted thin}.x-reset .x-html BDO[DIR="ltr"]{direction:ltr;unicode-bidi:bidi-override}.x-reset .x-html BDO[DIR="rtl"]{direction:rtl;unicode-bidi:bidi-override}.x-border-box .x-reset .x-tab-default-top{height:21px}.x-border-box .x-reset .x-tab-default-bottom{height:21px}.x-border-box .x-reset .x-tip-anchor{width:10px;height:10px}.x-border-box .x-reset .x-form-text{height:22px}.x-border-box .x-reset textarea.x-form-field{height:auto}.x-border-box .x-reset .x-field-default-toolbar .x-form-text{height:20px}.x-border-box .x-reset .x-form-trigger{height:22px}.x-border-box .x-reset .x-field-default-toolbar .x-form-trigger{height:20px}.x-border-box .x-reset.x-ie9 .x-grid-header-ct{padding-left:1px}.x-webkit .x-reset *:focus{outline:none!important}.x-webkit .x-reset .x-form-empty-field{line-height:15px}.x-webkit .x-reset .x-fieldset-header{padding-top:1px}.x-border-box .x-reset .x-tab-bar-top .x-tab-bar-body{height:25px}.x-border-box .x-reset .x-tab-bar-top .x-tab-bar-strip{height:3px}.x-border-box .x-reset .x-tab-bar-top .x-tab-bar-body-default-plain{height:22px}.x-border-box .x-reset .x-tab-bar-top .x-tab-bar-strip-default-plain{height:3px}.x-border-box .x-reset .x-tab-bar-bottom .x-tab-bar-body{height:25px}.x-border-box .x-reset .x-tab-bar-bottom .x-tab-bar-strip{height:3px}.x-border-box .x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain{height:23px}.x-border-box .x-reset .x-tab-bar-bottom .x-tab-bar-strip-default-plain{height:3px}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-all.css
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-all.css	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-all.css	(revision 18277)
@@ -0,0 +1,21 @@
+/*
+This file is part of Ext JS 4.1
+
+Copyright (c) 2011-2012 Sencha Inc
+
+Contact:  http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2012-07-04 21:11:01 (65ff594cd80b9bad45df640c22cc0adb52c95a7b)
+*/
+html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}li{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%}q:before,q:after{content:""}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit}*:focus{outline:0}.x-border-box,.x-border-box *{box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box}.x-body{color:black;font-size:12px;font-family:tahoma,arial,verdana,sans-serif}.x-rtl{direction:rtl}.x-ltr{direction:ltr}.x-clear{overflow:hidden;clear:both;font-size:0;line-height:0;display:table}.x-strict .x-ie7 .x-clear{height:0;width:0}.x-layer{position:absolute!important;overflow:hidden;zoom:1}.x-shim{position:absolute;left:0;top:0;overflow:hidden;filter:alpha(opacity=0);opacity:0}.x-hide-display{display:none!important}.x-hide-visibility{visibility:hidden!important}.x-item-disabled .x-form-item-label,.x-item-disabled .x-form-field,.x-item-disabled .x-form-cb-label,.x-item-disabled .x-form-trigger{filter:alpha(opacity=30);opacity:.3}.x-ie6 .x-item-disabled{filter:none}.x-hidden,.x-hide-offsets{display:block!important;visibility:hidden!important;position:absolute!important;left:-10000px!important;top:-10000px!important}.x-hide-nosize{height:0!important;width:0!important}.x-masked-relative{position:relative}.x-ie6 .x-masked select,.x-ie6.x-body-masked select{visibility:hidden!important}.x-css-shadow{position:absolute;-moz-border-radius:5px 5px;-webkit-border-radius:5px 5px;-o-border-radius:5px 5px;-ms-border-radius:5px 5px;-khtml-border-radius:5px 5px;border-radius:5px 5px}.x-ie-shadow{background-color:#777;display:none;position:absolute;overflow:hidden;zoom:1}.x-box-tl{background:transparent no-repeat 0 0;zoom:1}.x-box-tc{height:8px;background:transparent repeat-x 0 0;overflow:hidden}.x-box-tr{background:transparent no-repeat right -8px}.x-box-ml{background:transparent repeat-y 0;padding-left:4px;overflow:hidden;zoom:1}.x-box-mc{background:repeat-x 0 -16px;padding:4px 10px}.x-box-mc h3{margin:0 0 4px 0;zoom:1}.x-box-mr{background:transparent repeat-y right;padding-right:4px;overflow:hidden}.x-box-bl{background:transparent no-repeat 0 -16px;zoom:1}.x-box-bc{background:transparent repeat-x 0 -8px;height:8px;overflow:hidden}.x-box-br{background:transparent no-repeat right -24px}.x-box-tl,.x-box-bl{padding-left:8px;overflow:hidden}.x-box-tr,.x-box-br{padding-right:8px;overflow:hidden}.x-box-tl{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-tc{background-image:url('../../resources/themes/images/default/box/tb.gif')}.x-box-tr{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-ml{background-image:url('../../resources/themes/images/default/box/l.gif')}.x-box-mc{background-color:#eee;background-image:url('../../resources/themes/images/default/box/tb.gif');font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:15px}.x-box-mc h3{font-size:18px;font-weight:bold}.x-box-mr{background-image:url('../../resources/themes/images/default/box/r.gif')}.x-box-bl{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-bc{background-image:url('../../resources/themes/images/default/box/tb.gif')}.x-box-br{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-blue .x-box-bl,.x-box-blue .x-box-br,.x-box-blue .x-box-tl,.x-box-blue .x-box-tr{background-image:url('../../resources/themes/images/default/box/corners-blue.gif')}.x-box-blue .x-box-bc,.x-box-blue .x-box-mc,.x-box-blue .x-box-tc{background-image:url('../../resources/themes/images/default/box/tb-blue.gif')}.x-box-blue .x-box-mc{background-color:#c3daf9}.x-box-blue .x-box-mc h3{color:#17385b}.x-box-blue .x-box-ml{background-image:url('../../resources/themes/images/default/box/l-blue.gif')}.x-box-blue .x-box-mr{background-image:url('../../resources/themes/images/default/box/r-blue.gif')}.x-container{zoom:1}.x-container:before{content:"";clear:both;display:table}table.x-container:before,tbody.x-container:before,tr.x-container:before{display:none}.x-focus-element{position:absolute;top:-10px;left:-10px;width:0;height:0}.x-focus-frame{position:absolute;left:0;top:0;z-index:100000000;width:0;height:0}.x-focus-frame-top,.x-focus-frame-bottom,.x-focus-frame-left,.x-focus-frame-right{position:absolute;top:0;left:0}.x-focus-frame-top,.x-focus-frame-bottom{border-top:solid 2px #15428b;height:2px}.x-focus-frame-left,.x-focus-frame-right{border-left:solid 2px #15428b;width:2px}.x-mask{z-index:100;position:absolute;top:0;left:0;filter:alpha(opacity=50);opacity:.5;width:100%;height:100%;zoom:1;background:#ccc}.x-mask-msg{z-index:20001;position:absolute;top:0;left:0;padding:2px;border:1px solid;border-color:#99bce8;background-image:none;background-color:#dfe9f6}.x-mask-msg div{padding:5px 10px 5px 25px;background-image:url('../../resources/themes/images/default/grid/loading.gif');background-repeat:no-repeat;background-position:5px center;cursor:wait;border:1px solid #a3bad9;background-color:#eee;color:#222;font:normal 11px tahoma,arial,verdana,sans-serif}.x-boundlist{border-width:1px;border-style:solid;border-color:#98c0f4;background:white}.x-boundlist .x-toolbar{border-width:1px 0 0 0}.x-strict .x-ie6 .x-boundlist-list-ct,.x-strict .x-ie7 .x-boundlist-list-ct{position:relative}.x-boundlist-item{padding:2px;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;cursor:pointer;cursor:hand;position:relative;border-width:1px;border-style:dotted;border-color:white}.x-boundlist-selected{background:#cbdaf0;border-color:#8eabe4}.x-boundlist-item-over{background:#dfe8f6;border-color:#a3bae9}.x-boundlist-floating{border-top-width:0}.x-boundlist-above{border-top-width:1px;border-bottom-width:1px}.x-btn{display:inline-block;zoom:1;*display:inline;position:relative;cursor:pointer;cursor:hand;white-space:nowrap;vertical-align:middle;background-repeat:no-repeat}.x-btn *{cursor:pointer;cursor:hand}.x-btn em{background-repeat:no-repeat}.x-btn em a{text-decoration:none;display:block;color:inherit;width:100%;zoom:1}.x-btn button{width:100%;display:block;margin:0;padding:0;border:0;background:0;outline:0 none;overflow:hidden;vertical-align:bottom;-webkit-appearance:none}.x-btn button::-moz-focus-inner{border:0;padding:0}.x-btn .x-btn-inner{display:block;white-space:nowrap;background-color:transparent;background-repeat:no-repeat;background-position:left center;overflow:hidden}.x-btn .x-btn-left .x-btn-inner{text-align:left}.x-btn .x-btn-center .x-btn-inner{text-align:center}.x-btn .x-btn-right .x-btn-inner{text-align:right}.x-btn-disabled span{filter:alpha(opacity=50);opacity:.5}.x-ie6 .x-btn-disabled span,.x-ie7 .x-btn-disabled span{filter:none}.x-ie7 .x-btn-disabled,.x-ie8 .x-btn-disabled{filter:none}.x-ie6 .x-btn-disabled .x-btn-icon,.x-ie7 .x-btn-disabled .x-btn-icon,.x-ie8 .x-btn-disabled .x-btn-icon{filter:alpha(opacity=60);opacity:.6}.x-ie9 .x-btn button{overflow:visible!important}* html .x-ie .x-btn button{width:1px}.x-ie .x-btn button{overflow-x:visible;vertical-align:baseline}.x-strict .x-ie6 .x-btn .x-frame-mc,.x-strict .x-ie7 .x-btn .x-frame-mc{height:100%}.x-btn .x-frame-mc{vertical-align:middle;white-space:nowrap;cursor:pointer}.x-btn-noicon .x-frame-mc{text-align:center}.x-btn-icon-text-left .x-btn-icon{background-position:left center}.x-btn-icon-text-right .x-btn-icon{background-position:right center}.x-btn-icon-text-top .x-btn-icon{background-position:center top}.x-btn-icon-text-bottom .x-btn-icon{background-position:center bottom}.x-btn button,.x-btn a{position:relative}.x-btn button .x-btn-icon,.x-btn a .x-btn-icon{position:absolute;background-repeat:no-repeat}.x-btn-arrow-right{background:transparent no-repeat right center;padding-right:12px}.x-btn-arrow-right .x-btn-inner{padding-right:0!important}.x-toolbar .x-btn-arrow-right{padding-right:12px}.x-btn-arrow-bottom{background:transparent no-repeat center bottom;padding-bottom:12px}.x-btn-arrow{background-image:url('../../resources/themes/images/default/button/arrow.gif');display:block}.x-btn-split-right,.x-btn-over .x-btn-split-right{background:transparent no-repeat right center;background-image:url('../../resources/themes/images/default/button/s-arrow.gif');padding-right:14px!important}.x-btn-split-bottom,.x-btn-over .x-btn-split-bottom{background:transparent no-repeat center bottom;background-image:url('../../resources/themes/images/default/button/s-arrow-b.gif');padding-bottom:14px}.x-toolbar .x-btn-split-right{background-image:url('../../resources/themes/images/default/button/s-arrow-noline.gif');padding-right:12px!important}.x-toolbar .x-btn-split-bottom{background-image:url('../../resources/themes/images/default/button/s-arrow-b-noline.gif')}.x-btn-split{display:block}.x-item-disabled,.x-item-disabled *{cursor:default}.x-cycle-fixed-width .x-btn-inner{text-align:inherit}.x-btn-over .x-btn-split-right{background-image:url('../../resources/themes/images/default/button/s-arrow-o.gif')}.x-btn-over .x-btn-split-bottom{background-image:url('../../resources/themes/images/default/button/s-arrow-bo.gif')}.x-btn-default-small{border-color:#d1d1d1}.x-btn-default-small{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-ms-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x-nlg .x-btn-default-small-mc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-bg.gif');background-color:white}.x-nbr .x-btn-default-small{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-btn-default-small-tl,.x-nbr .x-btn-default-small-bl,.x-nbr .x-btn-default-small-tr,.x-nbr .x-btn-default-small-br,.x-nbr .x-btn-default-small-tc,.x-nbr .x-btn-default-small-bc,.x-nbr .x-btn-default-small-ml,.x-nbr .x-btn-default-small-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-small-corners.gif')}.x-nbr .x-btn-default-small-ml,.x-nbr .x-btn-default-small-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-small-sides.gif');background-position:0 0}.x-nbr .x-btn-default-small-mc{padding:0}.x-strict .x-ie7 .x-btn-default-small-tl,.x-strict .x-ie7 .x-btn-default-small-bl{position:relative;right:0}.x-btn-default-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 4px}.x-btn-default-small-icon button,.x-btn-default-small-icon a,.x-btn-default-small-icon .x-btn-inner,.x-btn-default-small-noicon button,.x-btn-default-small-noicon a,.x-btn-default-small-noicon .x-btn-inner{height:16px;line-height:16px}.x-btn-default-small-icon button,.x-btn-default-small-icon a{padding:0}.x-btn-default-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-small-icon .x-btn-icon{width:16px;height:16px;top:0;left:0;bottom:0;right:0}.x-btn-default-small-icon-text-left button,.x-btn-default-small-icon-text-left a{height:16px}.x-btn-default-small-icon-text-left .x-btn-inner{height:16px;line-height:16px;padding-left:20px}.x-btn-default-small-icon-text-left .x-btn-icon{width:16px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-small-icon-text-left .x-btn-icon{height:16px}.x-btn-default-small-icon-text-right button,.x-btn-default-small-icon-text-right a{height:16px}.x-btn-default-small-icon-text-right .x-btn-inner{height:16px;line-height:16px;padding-right:20px!important}.x-btn-default-small-icon-text-right .x-btn-icon{width:16px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-small-icon-text-right .x-btn-icon{height:16px}.x-btn-default-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-small-icon-text-top .x-btn-icon{width:auto;height:16px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon{width:16px}.x-btn-default-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-small-icon-text-bottom .x-btn-icon{width:auto;height:16px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon{width:16px}.x-btn-default-small-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-small-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-small-menu-active,.x-btn-default-small-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-ms-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-btn-default-small-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-ms-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-btn-default-small-disabled .x-btn-inner{color:#333!important}.x-ie .x-btn-default-small-disabled .x-btn-inner{color:#595959!important}.x-ie6 .x-btn-default-small-disabled .x-btn-inner{color:#8c8c8c!important}.x-nbr .x-btn-default-small-over .x-frame-tl,.x-nbr .x-btn-default-small-over .x-frame-bl,.x-nbr .x-btn-default-small-over .x-frame-tr,.x-nbr .x-btn-default-small-over .x-frame-br,.x-nbr .x-btn-default-small-over .x-frame-tc,.x-nbr .x-btn-default-small-over .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-over-corners.gif')}.x-nbr .x-btn-default-small-over .x-frame-ml,.x-nbr .x-btn-default-small-over .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-small-over-sides.gif')}.x-nbr .x-btn-default-small-over .x-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-small-over-bg.gif')}.x-nbr .x-btn-default-small-focus .x-frame-tl,.x-nbr .x-btn-default-small-focus .x-frame-bl,.x-nbr .x-btn-default-small-focus .x-frame-tr,.x-nbr .x-btn-default-small-focus .x-frame-br,.x-nbr .x-btn-default-small-focus .x-frame-tc,.x-nbr .x-btn-default-small-focus .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-focus-corners.gif')}.x-nbr .x-btn-default-small-focus .x-frame-ml,.x-nbr .x-btn-default-small-focus .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-small-focus-sides.gif')}.x-nbr .x-btn-default-small-focus .x-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-small-focus-bg.gif')}.x-nbr .x-btn-default-small-menu-active .x-frame-tl,.x-nbr .x-btn-default-small-menu-active .x-frame-bl,.x-nbr .x-btn-default-small-menu-active .x-frame-tr,.x-nbr .x-btn-default-small-menu-active .x-frame-br,.x-nbr .x-btn-default-small-menu-active .x-frame-tc,.x-nbr .x-btn-default-small-menu-active .x-frame-bc,.x-nbr .x-btn-default-small-pressed .x-frame-tl,.x-nbr .x-btn-default-small-pressed .x-frame-bl,.x-nbr .x-btn-default-small-pressed .x-frame-tr,.x-nbr .x-btn-default-small-pressed .x-frame-br,.x-nbr .x-btn-default-small-pressed .x-frame-tc,.x-nbr .x-btn-default-small-pressed .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-pressed-corners.gif')}.x-nbr .x-btn-default-small-menu-active .x-frame-ml,.x-nbr .x-btn-default-small-menu-active .x-frame-mr,.x-nbr .x-btn-default-small-pressed .x-frame-ml,.x-nbr .x-btn-default-small-pressed .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-small-pressed-sides.gif')}.x-nbr .x-btn-default-small-menu-active .x-frame-mc,.x-nbr .x-btn-default-small-pressed .x-frame-mc{background-color:#b6cbe4;background-image:url('../../resources/themes/images/default/btn/btn-default-small-pressed-bg.gif')}.x-nbr .x-btn-default-small-disabled .x-frame-tl,.x-nbr .x-btn-default-small-disabled .x-frame-bl,.x-nbr .x-btn-default-small-disabled .x-frame-tr,.x-nbr .x-btn-default-small-disabled .x-frame-br,.x-nbr .x-btn-default-small-disabled .x-frame-tc,.x-nbr .x-btn-default-small-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-disabled-corners.gif')}.x-nbr .x-btn-default-small-disabled .x-frame-ml,.x-nbr .x-btn-default-small-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-small-disabled-sides.gif')}.x-nbr .x-btn-default-small-disabled .x-frame-mc{background-color:#f7f7f7;background-image:url('../../resources/themes/images/default/btn/btn-default-small-disabled-bg.gif')}.x-nlg .x-btn-default-small{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-bg.gif')}.x-nlg .x-btn-default-small-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-over-bg.gif')}.x-nlg .x-btn-default-small-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-focus-bg.gif')}.x-nlg .x-btn-default-small-menu-active,.x-nlg .x-btn-default-small-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-pressed-bg.gif')}.x-nlg .x-btn-default-small-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-disabled-bg.gif')}.x-btn-default-medium{border-color:#d1d1d1}.x-btn-default-medium{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-ms-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x-nlg .x-btn-default-medium-mc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif');background-color:white}.x-nbr .x-btn-default-medium{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-btn-default-medium-tl,.x-nbr .x-btn-default-medium-bl,.x-nbr .x-btn-default-medium-tr,.x-nbr .x-btn-default-medium-br,.x-nbr .x-btn-default-medium-tc,.x-nbr .x-btn-default-medium-bc,.x-nbr .x-btn-default-medium-ml,.x-nbr .x-btn-default-medium-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-corners.gif')}.x-nbr .x-btn-default-medium-ml,.x-nbr .x-btn-default-medium-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-sides.gif');background-position:0 0}.x-nbr .x-btn-default-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-medium-tl,.x-strict .x-ie7 .x-btn-default-medium-bl{position:relative;right:0}.x-btn-default-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-btn-default-medium-icon button,.x-btn-default-medium-icon a,.x-btn-default-medium-icon .x-btn-inner,.x-btn-default-medium-noicon button,.x-btn-default-medium-noicon a,.x-btn-default-medium-noicon .x-btn-inner{height:24px;line-height:24px}.x-btn-default-medium-icon button,.x-btn-default-medium-icon a{padding:0}.x-btn-default-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-medium-icon .x-btn-icon{width:24px;height:24px;top:0;left:0;bottom:0;right:0}.x-btn-default-medium-icon-text-left button,.x-btn-default-medium-icon-text-left a{height:24px}.x-btn-default-medium-icon-text-left .x-btn-inner{height:24px;line-height:24px;padding-left:28px}.x-btn-default-medium-icon-text-left .x-btn-icon{width:24px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon{height:24px}.x-btn-default-medium-icon-text-right button,.x-btn-default-medium-icon-text-right a{height:24px}.x-btn-default-medium-icon-text-right .x-btn-inner{height:24px;line-height:24px;padding-right:28px!important}.x-btn-default-medium-icon-text-right .x-btn-icon{width:24px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon{height:24px}.x-btn-default-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-medium-icon-text-top .x-btn-icon{width:auto;height:24px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon{width:24px}.x-btn-default-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-medium-icon-text-bottom .x-btn-icon{width:auto;height:24px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon{width:24px}.x-btn-default-medium-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-medium-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-medium-menu-active,.x-btn-default-medium-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-ms-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-btn-default-medium-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-ms-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-btn-default-medium-disabled .x-btn-inner{color:#333!important}.x-ie .x-btn-default-medium-disabled .x-btn-inner{color:#595959!important}.x-ie6 .x-btn-default-medium-disabled .x-btn-inner{color:#8c8c8c!important}.x-nbr .x-btn-default-medium-over .x-frame-tl,.x-nbr .x-btn-default-medium-over .x-frame-bl,.x-nbr .x-btn-default-medium-over .x-frame-tr,.x-nbr .x-btn-default-medium-over .x-frame-br,.x-nbr .x-btn-default-medium-over .x-frame-tc,.x-nbr .x-btn-default-medium-over .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-over-corners.gif')}.x-nbr .x-btn-default-medium-over .x-frame-ml,.x-nbr .x-btn-default-medium-over .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-over-sides.gif')}.x-nbr .x-btn-default-medium-over .x-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-over-bg.gif')}.x-nbr .x-btn-default-medium-focus .x-frame-tl,.x-nbr .x-btn-default-medium-focus .x-frame-bl,.x-nbr .x-btn-default-medium-focus .x-frame-tr,.x-nbr .x-btn-default-medium-focus .x-frame-br,.x-nbr .x-btn-default-medium-focus .x-frame-tc,.x-nbr .x-btn-default-medium-focus .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-focus-corners.gif')}.x-nbr .x-btn-default-medium-focus .x-frame-ml,.x-nbr .x-btn-default-medium-focus .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-focus-sides.gif')}.x-nbr .x-btn-default-medium-focus .x-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-focus-bg.gif')}.x-nbr .x-btn-default-medium-menu-active .x-frame-tl,.x-nbr .x-btn-default-medium-menu-active .x-frame-bl,.x-nbr .x-btn-default-medium-menu-active .x-frame-tr,.x-nbr .x-btn-default-medium-menu-active .x-frame-br,.x-nbr .x-btn-default-medium-menu-active .x-frame-tc,.x-nbr .x-btn-default-medium-menu-active .x-frame-bc,.x-nbr .x-btn-default-medium-pressed .x-frame-tl,.x-nbr .x-btn-default-medium-pressed .x-frame-bl,.x-nbr .x-btn-default-medium-pressed .x-frame-tr,.x-nbr .x-btn-default-medium-pressed .x-frame-br,.x-nbr .x-btn-default-medium-pressed .x-frame-tc,.x-nbr .x-btn-default-medium-pressed .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-pressed-corners.gif')}.x-nbr .x-btn-default-medium-menu-active .x-frame-ml,.x-nbr .x-btn-default-medium-menu-active .x-frame-mr,.x-nbr .x-btn-default-medium-pressed .x-frame-ml,.x-nbr .x-btn-default-medium-pressed .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-pressed-sides.gif')}.x-nbr .x-btn-default-medium-menu-active .x-frame-mc,.x-nbr .x-btn-default-medium-pressed .x-frame-mc{background-color:#b6cbe4;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif')}.x-nbr .x-btn-default-medium-disabled .x-frame-tl,.x-nbr .x-btn-default-medium-disabled .x-frame-bl,.x-nbr .x-btn-default-medium-disabled .x-frame-tr,.x-nbr .x-btn-default-medium-disabled .x-frame-br,.x-nbr .x-btn-default-medium-disabled .x-frame-tc,.x-nbr .x-btn-default-medium-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-disabled-corners.gif')}.x-nbr .x-btn-default-medium-disabled .x-frame-ml,.x-nbr .x-btn-default-medium-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-disabled-sides.gif')}.x-nbr .x-btn-default-medium-disabled .x-frame-mc{background-color:#f7f7f7;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif')}.x-nlg .x-btn-default-medium{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif')}.x-nlg .x-btn-default-medium-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-over-bg.gif')}.x-nlg .x-btn-default-medium-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-focus-bg.gif')}.x-nlg .x-btn-default-medium-menu-active,.x-nlg .x-btn-default-medium-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif')}.x-nlg .x-btn-default-medium-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif')}.x-btn-default-large{border-color:#d1d1d1}.x-btn-default-large{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-ms-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x-nlg .x-btn-default-large-mc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-bg.gif');background-color:white}.x-nbr .x-btn-default-large{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-btn-default-large-tl,.x-nbr .x-btn-default-large-bl,.x-nbr .x-btn-default-large-tr,.x-nbr .x-btn-default-large-br,.x-nbr .x-btn-default-large-tc,.x-nbr .x-btn-default-large-bc,.x-nbr .x-btn-default-large-ml,.x-nbr .x-btn-default-large-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-large-corners.gif')}.x-nbr .x-btn-default-large-ml,.x-nbr .x-btn-default-large-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-large-sides.gif');background-position:0 0}.x-nbr .x-btn-default-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-large-tl,.x-strict .x-ie7 .x-btn-default-large-bl{position:relative;right:0}.x-btn-default-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-btn-default-large-icon button,.x-btn-default-large-icon a,.x-btn-default-large-icon .x-btn-inner,.x-btn-default-large-noicon button,.x-btn-default-large-noicon a,.x-btn-default-large-noicon .x-btn-inner{height:32px;line-height:32px}.x-btn-default-large-icon button,.x-btn-default-large-icon a{padding:0}.x-btn-default-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-large-icon .x-btn-icon{width:32px;height:32px;top:0;left:0;bottom:0;right:0}.x-btn-default-large-icon-text-left button,.x-btn-default-large-icon-text-left a{height:32px}.x-btn-default-large-icon-text-left .x-btn-inner{height:32px;line-height:32px;padding-left:36px}.x-btn-default-large-icon-text-left .x-btn-icon{width:32px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-large-icon-text-left .x-btn-icon{height:32px}.x-btn-default-large-icon-text-right button,.x-btn-default-large-icon-text-right a{height:32px}.x-btn-default-large-icon-text-right .x-btn-inner{height:32px;line-height:32px;padding-right:36px!important}.x-btn-default-large-icon-text-right .x-btn-icon{width:32px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-large-icon-text-right .x-btn-icon{height:32px}.x-btn-default-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-large-icon-text-top .x-btn-icon{width:auto;height:32px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon{width:32px}.x-btn-default-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-large-icon-text-bottom .x-btn-icon{width:auto;height:32px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon{width:32px}.x-btn-default-large-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-large-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-large-menu-active,.x-btn-default-large-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-ms-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-btn-default-large-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-ms-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-btn-default-large-disabled .x-btn-inner{color:#333!important}.x-ie .x-btn-default-large-disabled .x-btn-inner{color:#595959!important}.x-ie6 .x-btn-default-large-disabled .x-btn-inner{color:#8c8c8c!important}.x-nbr .x-btn-default-large-over .x-frame-tl,.x-nbr .x-btn-default-large-over .x-frame-bl,.x-nbr .x-btn-default-large-over .x-frame-tr,.x-nbr .x-btn-default-large-over .x-frame-br,.x-nbr .x-btn-default-large-over .x-frame-tc,.x-nbr .x-btn-default-large-over .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-over-corners.gif')}.x-nbr .x-btn-default-large-over .x-frame-ml,.x-nbr .x-btn-default-large-over .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-large-over-sides.gif')}.x-nbr .x-btn-default-large-over .x-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-large-over-bg.gif')}.x-nbr .x-btn-default-large-focus .x-frame-tl,.x-nbr .x-btn-default-large-focus .x-frame-bl,.x-nbr .x-btn-default-large-focus .x-frame-tr,.x-nbr .x-btn-default-large-focus .x-frame-br,.x-nbr .x-btn-default-large-focus .x-frame-tc,.x-nbr .x-btn-default-large-focus .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-focus-corners.gif')}.x-nbr .x-btn-default-large-focus .x-frame-ml,.x-nbr .x-btn-default-large-focus .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-large-focus-sides.gif')}.x-nbr .x-btn-default-large-focus .x-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-large-focus-bg.gif')}.x-nbr .x-btn-default-large-menu-active .x-frame-tl,.x-nbr .x-btn-default-large-menu-active .x-frame-bl,.x-nbr .x-btn-default-large-menu-active .x-frame-tr,.x-nbr .x-btn-default-large-menu-active .x-frame-br,.x-nbr .x-btn-default-large-menu-active .x-frame-tc,.x-nbr .x-btn-default-large-menu-active .x-frame-bc,.x-nbr .x-btn-default-large-pressed .x-frame-tl,.x-nbr .x-btn-default-large-pressed .x-frame-bl,.x-nbr .x-btn-default-large-pressed .x-frame-tr,.x-nbr .x-btn-default-large-pressed .x-frame-br,.x-nbr .x-btn-default-large-pressed .x-frame-tc,.x-nbr .x-btn-default-large-pressed .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-pressed-corners.gif')}.x-nbr .x-btn-default-large-menu-active .x-frame-ml,.x-nbr .x-btn-default-large-menu-active .x-frame-mr,.x-nbr .x-btn-default-large-pressed .x-frame-ml,.x-nbr .x-btn-default-large-pressed .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-large-pressed-sides.gif')}.x-nbr .x-btn-default-large-menu-active .x-frame-mc,.x-nbr .x-btn-default-large-pressed .x-frame-mc{background-color:#b6cbe4;background-image:url('../../resources/themes/images/default/btn/btn-default-large-pressed-bg.gif')}.x-nbr .x-btn-default-large-disabled .x-frame-tl,.x-nbr .x-btn-default-large-disabled .x-frame-bl,.x-nbr .x-btn-default-large-disabled .x-frame-tr,.x-nbr .x-btn-default-large-disabled .x-frame-br,.x-nbr .x-btn-default-large-disabled .x-frame-tc,.x-nbr .x-btn-default-large-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-disabled-corners.gif')}.x-nbr .x-btn-default-large-disabled .x-frame-ml,.x-nbr .x-btn-default-large-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-large-disabled-sides.gif')}.x-nbr .x-btn-default-large-disabled .x-frame-mc{background-color:#f7f7f7;background-image:url('../../resources/themes/images/default/btn/btn-default-large-disabled-bg.gif')}.x-nlg .x-btn-default-large{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-bg.gif')}.x-nlg .x-btn-default-large-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-over-bg.gif')}.x-nlg .x-btn-default-large-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-focus-bg.gif')}.x-nlg .x-btn-default-large-menu-active,.x-nlg .x-btn-default-large-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-pressed-bg.gif')}.x-nlg .x-btn-default-large-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-disabled-bg.gif')}.x-btn-default-toolbar-small{border-color:transparent}.x-btn-default-toolbar-small{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:transparent}.x-nlg .x-btn-default-toolbar-small-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-small{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-btn-default-toolbar-small-tl,.x-nbr .x-btn-default-toolbar-small-bl,.x-nbr .x-btn-default-toolbar-small-tr,.x-nbr .x-btn-default-toolbar-small-br,.x-nbr .x-btn-default-toolbar-small-tc,.x-nbr .x-btn-default-toolbar-small-bc,.x-nbr .x-btn-default-toolbar-small-ml,.x-nbr .x-btn-default-toolbar-small-mr{zoom:1}.x-nbr .x-btn-default-toolbar-small-ml,.x-nbr .x-btn-default-toolbar-small-mr{zoom:1}.x-nbr .x-btn-default-toolbar-small-mc{padding:0}.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,.x-strict .x-ie7 .x-btn-default-toolbar-small-bl{position:relative;right:0}.x-btn-default-toolbar-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 4px}.x-btn-default-toolbar-small-icon button,.x-btn-default-toolbar-small-icon a,.x-btn-default-toolbar-small-icon .x-btn-inner,.x-btn-default-toolbar-small-noicon button,.x-btn-default-toolbar-small-noicon a,.x-btn-default-toolbar-small-noicon .x-btn-inner{height:16px;line-height:16px}.x-btn-default-toolbar-small-icon button,.x-btn-default-toolbar-small-icon a{padding:0}.x-btn-default-toolbar-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-toolbar-small-icon .x-btn-icon{width:16px;height:16px;top:0;left:0;bottom:0;right:0}.x-btn-default-toolbar-small-icon-text-left button,.x-btn-default-toolbar-small-icon-text-left a{height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-inner{height:16px;line-height:16px;padding-left:20px}.x-btn-default-toolbar-small-icon-text-left .x-btn-icon{width:16px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon{height:16px}.x-btn-default-toolbar-small-icon-text-right button,.x-btn-default-toolbar-small-icon-text-right a{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-btn-inner{height:16px;line-height:16px;padding-right:20px!important}.x-btn-default-toolbar-small-icon-text-right .x-btn-icon{width:16px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon{height:16px}.x-btn-default-toolbar-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-toolbar-small-icon-text-top .x-btn-icon{width:auto;height:16px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon{width:16px}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon{width:auto;height:16px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon{width:16px}.x-btn-default-toolbar-small-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-small-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-small-menu-active,.x-btn-default-toolbar-small-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-ms-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-btn-default-toolbar-small-disabled{background-image:none;background-color:transparent}.x-btn-default-toolbar-small-disabled .x-btn-inner{color:#333!important}.x-ie .x-btn-default-toolbar-small-disabled .x-btn-inner{color:#595959!important}.x-ie6 .x-btn-default-toolbar-small-disabled .x-btn-inner{color:#8c8c8c!important}.x-nbr .x-btn-default-toolbar-small-over .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-over .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-over .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-over .x-frame-br,.x-nbr .x-btn-default-toolbar-small-over .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-over .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-corners.gif')}.x-nbr .x-btn-default-toolbar-small-over .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-over .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-sides.gif')}.x-nbr .x-btn-default-toolbar-small-over .x-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif')}.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-br,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-corners.gif')}.x-nbr .x-btn-default-toolbar-small-focus .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-sides.gif')}.x-nbr .x-btn-default-toolbar-small-focus .x-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif')}.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-br,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bc,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-br,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-corners.gif')}.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mr,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-sides.gif')}.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mc,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mc{background-color:#bccfe5;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif')}.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-br,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-disabled-corners.gif')}.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-disabled-sides.gif')}.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-small-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif')}.x-nlg .x-btn-default-toolbar-small-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif')}.x-nlg .x-btn-default-toolbar-small-menu-active,.x-nlg .x-btn-default-toolbar-small-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif')}.x-btn-default-toolbar-medium{border-color:transparent}.x-btn-default-toolbar-medium{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-nlg .x-btn-default-toolbar-medium-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-medium{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-btn-default-toolbar-medium-tl,.x-nbr .x-btn-default-toolbar-medium-bl,.x-nbr .x-btn-default-toolbar-medium-tr,.x-nbr .x-btn-default-toolbar-medium-br,.x-nbr .x-btn-default-toolbar-medium-tc,.x-nbr .x-btn-default-toolbar-medium-bc,.x-nbr .x-btn-default-toolbar-medium-ml,.x-nbr .x-btn-default-toolbar-medium-mr{zoom:1}.x-nbr .x-btn-default-toolbar-medium-ml,.x-nbr .x-btn-default-toolbar-medium-mr{zoom:1}.x-nbr .x-btn-default-toolbar-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl{position:relative;right:0}.x-btn-default-toolbar-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-btn-default-toolbar-medium-icon button,.x-btn-default-toolbar-medium-icon a,.x-btn-default-toolbar-medium-icon .x-btn-inner,.x-btn-default-toolbar-medium-noicon button,.x-btn-default-toolbar-medium-noicon a,.x-btn-default-toolbar-medium-noicon .x-btn-inner{height:24px;line-height:24px}.x-btn-default-toolbar-medium-icon button,.x-btn-default-toolbar-medium-icon a{padding:0}.x-btn-default-toolbar-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-toolbar-medium-icon .x-btn-icon{width:24px;height:24px;top:0;left:0;bottom:0;right:0}.x-btn-default-toolbar-medium-icon-text-left button,.x-btn-default-toolbar-medium-icon-text-left a{height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner{height:24px;line-height:24px;padding-left:28px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon{width:24px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon{height:24px}.x-btn-default-toolbar-medium-icon-text-right button,.x-btn-default-toolbar-medium-icon-text-right a{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner{height:24px;line-height:24px;padding-right:28px!important}.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon{width:24px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon{height:24px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon{width:auto;height:24px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon{width:24px}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon{width:auto;height:24px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon{width:24px}.x-btn-default-toolbar-medium-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-medium-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-medium-menu-active,.x-btn-default-toolbar-medium-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-ms-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-btn-default-toolbar-medium-disabled{background-image:none;background-color:transparent}.x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#333!important}.x-ie .x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#595959!important}.x-ie6 .x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#8c8c8c!important}.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-corners.gif')}.x-nbr .x-btn-default-toolbar-medium-over .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-sides.gif')}.x-nbr .x-btn-default-toolbar-medium-over .x-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif')}.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-corners.gif')}.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-sides.gif')}.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif')}.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bc,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-corners.gif')}.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mr,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-sides.gif')}.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mc,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mc{background-color:#bccfe5;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif')}.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-corners.gif')}.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-sides.gif')}.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-medium-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif')}.x-nlg .x-btn-default-toolbar-medium-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif')}.x-nlg .x-btn-default-toolbar-medium-menu-active,.x-nlg .x-btn-default-toolbar-medium-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif')}.x-btn-default-toolbar-large{border-color:transparent}.x-btn-default-toolbar-large{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-nlg .x-btn-default-toolbar-large-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-large{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-btn-default-toolbar-large-tl,.x-nbr .x-btn-default-toolbar-large-bl,.x-nbr .x-btn-default-toolbar-large-tr,.x-nbr .x-btn-default-toolbar-large-br,.x-nbr .x-btn-default-toolbar-large-tc,.x-nbr .x-btn-default-toolbar-large-bc,.x-nbr .x-btn-default-toolbar-large-ml,.x-nbr .x-btn-default-toolbar-large-mr{zoom:1}.x-nbr .x-btn-default-toolbar-large-ml,.x-nbr .x-btn-default-toolbar-large-mr{zoom:1}.x-nbr .x-btn-default-toolbar-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,.x-strict .x-ie7 .x-btn-default-toolbar-large-bl{position:relative;right:0}.x-btn-default-toolbar-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-btn-default-toolbar-large-icon button,.x-btn-default-toolbar-large-icon a,.x-btn-default-toolbar-large-icon .x-btn-inner,.x-btn-default-toolbar-large-noicon button,.x-btn-default-toolbar-large-noicon a,.x-btn-default-toolbar-large-noicon .x-btn-inner{height:32px;line-height:32px}.x-btn-default-toolbar-large-icon button,.x-btn-default-toolbar-large-icon a{padding:0}.x-btn-default-toolbar-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-toolbar-large-icon .x-btn-icon{width:32px;height:32px;top:0;left:0;bottom:0;right:0}.x-btn-default-toolbar-large-icon-text-left button,.x-btn-default-toolbar-large-icon-text-left a{height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-inner{height:32px;line-height:32px;padding-left:36px}.x-btn-default-toolbar-large-icon-text-left .x-btn-icon{width:32px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon{height:32px}.x-btn-default-toolbar-large-icon-text-right button,.x-btn-default-toolbar-large-icon-text-right a{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-btn-inner{height:32px;line-height:32px;padding-right:36px!important}.x-btn-default-toolbar-large-icon-text-right .x-btn-icon{width:32px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon{height:32px}.x-btn-default-toolbar-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-toolbar-large-icon-text-top .x-btn-icon{width:auto;height:32px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon{width:32px}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon{width:auto;height:32px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon{width:32px}.x-btn-default-toolbar-large-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-large-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-large-menu-active,.x-btn-default-toolbar-large-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-ms-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-btn-default-toolbar-large-disabled{background-image:none;background-color:transparent}.x-btn-default-toolbar-large-disabled .x-btn-inner{color:#333!important}.x-ie .x-btn-default-toolbar-large-disabled .x-btn-inner{color:#595959!important}.x-ie6 .x-btn-default-toolbar-large-disabled .x-btn-inner{color:#8c8c8c!important}.x-nbr .x-btn-default-toolbar-large-over .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-over .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-over .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-over .x-frame-br,.x-nbr .x-btn-default-toolbar-large-over .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-over .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-corners.gif')}.x-nbr .x-btn-default-toolbar-large-over .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-over .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-sides.gif')}.x-nbr .x-btn-default-toolbar-large-over .x-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif')}.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-br,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-corners.gif')}.x-nbr .x-btn-default-toolbar-large-focus .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-sides.gif')}.x-nbr .x-btn-default-toolbar-large-focus .x-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif')}.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-br,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bc,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-br,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-corners.gif')}.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mr,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-sides.gif')}.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mc,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mc{background-color:#bccfe5;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif')}.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-br,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-disabled-corners.gif')}.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-disabled-sides.gif')}.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-large-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif')}.x-nlg .x-btn-default-toolbar-large-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif')}.x-nlg .x-btn-default-toolbar-large-menu-active,.x-nlg .x-btn-default-toolbar-large-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif')}.x-btn-default-toolbar-small-disabled,.x-btn-default-toolbar-medium-disabled,.x-btn-default-toolbar-large-disabled{border-color:transparent;background-image:none;background:transparent}.x-btn-group{position:relative;overflow:hidden}.x-btn-group-body{position:relative;zoom:1;padding:0 1px}.x-btn-group-body .x-table-layout-cell{vertical-align:top}.x-btn-group-header-text{white-space:nowrap}.x-btn-group-default-framed{-moz-border-radius:2px;-webkit-border-radius:2px;-o-border-radius:2px;-ms-border-radius:2px;-khtml-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#d0def0}.x-nlg .x-btn-group-default-framed-mc{background-color:#d0def0}.x-nbr .x-btn-group-default-framed{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000202px 1000202px}.x-nbr .x-btn-group-default-framed-tl,.x-nbr .x-btn-group-default-framed-bl,.x-nbr .x-btn-group-default-framed-tr,.x-nbr .x-btn-group-default-framed-br,.x-nbr .x-btn-group-default-framed-tc,.x-nbr .x-btn-group-default-framed-bc,.x-nbr .x-btn-group-default-framed-ml,.x-nbr .x-btn-group-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn-group/btn-group-default-framed-corners.gif')}.x-nbr .x-btn-group-default-framed-ml,.x-nbr .x-btn-group-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn-group/btn-group-default-framed-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-btn-group-default-framed-mc{padding:0}.x-strict .x-ie7 .x-btn-group-default-framed-tl,.x-strict .x-ie7 .x-btn-group-default-framed-bl{position:relative;right:0}.x-btn-group-default-framed{border-color:#b7c8d7;-moz-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-webkit-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-o-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset}.x-btn-group-header-default-framed{margin:2px 2px 0 2px}.x-btn-group-header-body-default-framed{padding:1px 0;background:#c2d8f0;-moz-border-radius-topleft:2px;-webkit-border-top-left-radius:2px;-o-border-top-left-radius:2px;-ms-border-top-left-radius:2px;-khtml-border-top-left-radius:2px;border-top-left-radius:2px;-moz-border-radius-topright:2px;-webkit-border-top-right-radius:2px;-o-border-top-right-radius:2px;-ms-border-top-right-radius:2px;-khtml-border-top-right-radius:2px;border-top-right-radius:2px}.x-btn-group-header-text-default-framed{font:normal 11px tahoma,arial,verdana,sans-serif;color:#3e6aaa}.x-datepicker{border:1px solid #1b376c;background-color:white;position:relative}.x-datepicker a{-moz-outline:0 none;outline:0 none;color:#15428b;text-decoration:none;border-width:0}.x-datepicker-inner,.x-datepicker-inner td,.x-datepicker-inner th{border-collapse:separate}.x-datepicker-header{position:relative;height:26px;background-image:none;background-color:#23427c;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#264888),color-stop(100%,#1f3a6c));background-image:-webkit-linear-gradient(top,#264888,#1f3a6c);background-image:-moz-linear-gradient(top,#264888,#1f3a6c);background-image:-o-linear-gradient(top,#264888,#1f3a6c);background-image:-ms-linear-gradient(top,#264888,#1f3a6c);background-image:linear-gradient(top,#264888,#1f3a6c)}.x-datepicker-prev,.x-datepicker-next{position:absolute;top:5px;width:18px}.x-datepicker-prev a,.x-datepicker-next a{display:block;width:16px;height:16px;background-position:top;background-repeat:no-repeat;cursor:pointer;text-decoration:none!important;filter:alpha(opacity=70);opacity:.7}.x-datepicker-prev a:hover,.x-datepicker-next a:hover{filter:alpha(opacity=100);opacity:1}.x-datepicker-next{right:5px}.x-datepicker-next a{background-image:url('../../resources/themes/images/default/shared/right-btn.gif')}.x-datepicker-prev{left:5px}.x-datepicker-prev a{background-image:url('../../resources/themes/images/default/shared/left-btn.gif')}.x-item-disabled .x-datepicker-prev a:hover,.x-item-disabled .x-datepicker-next a:hover{filter:alpha(opacity=60);opacity:.6}.x-datepicker-month{padding-top:3px}.x-datepicker-month .x-btn,.x-datepicker-month button,.x-datepicker-month .x-btn-tc,.x-datepicker-month .x-btn-tl,.x-datepicker-month .x-btn-tr,.x-datepicker-month .x-btn-mc,.x-datepicker-month .x-btn-ml,.x-datepicker-month .x-btn-mr,.x-datepicker-month .x-btn-bc,.x-datepicker-month .x-btn-bl,.x-datepicker-month .x-btn-br{background:transparent!important;border-width:0!important}.x-datepicker-month span{color:#fff!important}.x-datepicker-month .x-btn-split-right{background-image:url('../../resources/themes/images/default/button/s-arrow-light.gif');padding-right:12px}.x-datepicker-next{text-align:right}.x-datepicker-month{text-align:center}.x-datepicker-month button{color:white!important}table.x-datepicker-inner{width:100%;table-layout:fixed}table.x-datepicker-inner th{width:25px;height:19px;padding:0;color:#233d6d;font:normal 10px tahoma,arial,verdana,sans-serif;text-align:right;border-bottom:1px solid #b2d1f5;border-collapse:separate;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#edf4fd),color-stop(100%,#cde1f9));background-image:-webkit-linear-gradient(top,#edf4fd,#cde1f9);background-image:-moz-linear-gradient(top,#edf4fd,#cde1f9);background-image:-o-linear-gradient(top,#edf4fd,#cde1f9);background-image:-ms-linear-gradient(top,#edf4fd,#cde1f9);background-image:linear-gradient(top,#edf4fd,#cde1f9);cursor:default}table.x-datepicker-inner th span{display:block;padding-right:7px}table.x-datepicker-inner tr{height:20px}table.x-datepicker-inner td{border:1px solid;height:17px;border-color:white;text-align:right;padding:0}table.x-datepicker-inner a{padding-right:4px;display:block;zoom:1;font:normal 11px tahoma,arial,verdana,sans-serif;color:black;text-decoration:none;text-align:right}table.x-datepicker-inner .x-datepicker-active{cursor:pointer;color:black}table.x-datepicker-inner .x-datepicker-selected a{background:repeat-x left top;background-color:#dae5f3;border:1px solid #8db2e3}table.x-datepicker-inner .x-datepicker-selected span{font-weight:bold}table.x-datepicker-inner .x-datepicker-today a{border:1px solid;border-color:darkred}table.x-datepicker-inner .x-datepicker-prevday a,table.x-datepicker-inner .x-datepicker-nextday a{text-decoration:none!important;color:#aaa}table.x-datepicker-inner a:hover,table.x-datepicker-inner .x-datepicker-disabled a:hover{text-decoration:none!important;color:#000;background-color:#ddecfe}table.x-datepicker-inner .x-datepicker-disabled a{cursor:default;background-color:#eee;color:#bbb}.x-datepicker-footer,.x-monthpicker-buttons{position:relative;border-top:1px solid #b2d1f5;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dee8f5),color-stop(49%,#d1dff0),color-stop(51%,#c7d8ed),color-stop(100%,#cbdaee));background-image:-webkit-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-moz-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-o-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-ms-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);text-align:center}.x-datepicker-footer .x-btn,.x-monthpicker-buttons .x-btn{position:relative;margin:4px}.x-item-disabled .x-datepicker-inner a:hover{background:0}.x-datepicker .x-monthpicker{position:absolute;left:0;top:0}.x-monthpicker{border:1px solid #1b376c;background-color:white}.x-monthpicker-months,.x-monthpicker-years{float:left;height:167px;width:88px}.x-monthpicker-item{float:left;margin:4px 0 5px 0;font:normal 11px tahoma,arial,verdana,sans-serif;text-align:center;vertical-align:middle;height:18px;width:43px;border:0 none}.x-monthpicker-item a{display:block;margin:0 5px;text-decoration:none;color:#15428b;border:1px solid white;line-height:17px}.x-monthpicker-item a:hover{background-color:#ddecfe}.x-monthpicker-item a.x-monthpicker-selected{background-color:#dfecfb;border:1px solid #8db2e3}.x-monthpicker-months{border-right:1px solid #1b376c;width:87px}.x-monthpicker-years .x-monthpicker-item{width:44px}.x-monthpicker-yearnav{height:28px}.x-monthpicker-yearnav button{background-image:url('../../resources/themes/images/default/tools/tool-sprites.gif');height:15px;width:15px;padding:0;margin:6px 12px 5px 15px;border:0;outline:0 none}.x-monthpicker-yearnav button::-moz-focus-inner{border:0;padding:0}.x-monthpicker-yearnav-next{background-position:0 -120px}.x-monthpicker-yearnav-next-over{cursor:pointer;cursor:hand;background-position:-15px -120px}.x-monthpicker-yearnav-prev{background-position:0 -105px}.x-monthpicker-yearnav-prev-over{cursor:pointer;cursor:hand;background-position:-15px -105px}.x-monthpicker-small .x-monthpicker-item{margin:2px 0 2px 0}.x-monthpicker-small .x-monthpicker-yearnav{height:23px}.x-monthpicker-small .x-monthpicker-months,.x-monthpicker-small .x-monthpicker-years{height:136px}.x-quirks .x-ie7 .x-monthpicker-buttons .x-btn,.x-quirks .x-ie8 .x-monthpicker-buttons .x-btn{margin-top:2px}.x-quirks .x-monthpicker-small .x-monthpicker-yearnav button{margin-top:3px;margin-bottom:3px}.x-ie6 .x-monthpicker-small .x-monthpicker-yearnav button{margin-top:3px;margin-bottom:3px}.x-nlg .x-datepicker-header{background-image:url('../../resources/themes/images/default/datepicker/datepicker-header-bg.gif');background-repeat:repeat-x;background-position:top left}.x-nlg .x-datepicker-footer,.x-nlg .x-monthpicker-buttons{background-image:url('../../resources/themes/images/default/datepicker/datepicker-footer-bg.gif');background-repeat:repeat-x;background-position:top left}.x-color-picker{width:144px;height:90px;cursor:pointer}.x-color-picker a{border:1px solid #fff;float:left;padding:2px;text-decoration:none;-moz-outline:0 none;outline:0 none;cursor:pointer}.x-color-picker a:hover,.x-color-picker a.x-color-picker-selected{border-color:#8bb8f3;background-color:#deecfd}.x-color-picker em{display:block;border:1px solid #aca899}.x-color-picker em span{cursor:pointer;display:block;height:10px;width:10px;line-height:10px}.x-menu-body{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;background:#f0f0f0!important;padding:2px}.x-menu-item .x-form-text{user-select:text;-webkit-user-select:text;-o-user-select:text;-ie-user-select:text;-moz-user-select:text;-ie-user-select:text}.x-menu-icon-separator{position:absolute;top:0;left:27px;z-index:0;border-left:solid 1px #e0e0e0;background-color:white;width:2px;overflow:hidden}.x-menu-plain .x-menu-icon-separator{display:none}.x-menu-focus{display:block;position:absolute;top:-10px;left:-10px;width:0;height:0}.x-menu-item{white-space:nowrap;overflow:hidden;z-index:1}.x-menu-item-cmp{margin-bottom:1px}.x-menu-item-link{display:block;margin:1px;padding:6px 2px 3px 32px;text-decoration:none!important;line-height:16px;cursor:default}.x-opera .x-menu-item-link{position:relative}.x-menu-item-icon{width:16px;height:16px;position:absolute;top:5px;left:4px;background:no-repeat center center}.x-menu-item-icon-right{width:16px;height:16px;position:absolute;top:6px;right:4px;background:no-repeat center center}.x-menu-item-text{font-size:11px;color:#222}.x-menu-item-checked .x-menu-item-icon{background-image:url('../../resources/themes/images/default/menu/checked.gif')}.x-menu-item-checked .x-menu-group-icon{background-image:url('../../resources/themes/images/default/menu/group-checked.gif')}.x-menu-item-unchecked .x-menu-item-icon{background-image:url('../../resources/themes/images/default/menu/unchecked.gif')}.x-menu-item-unchecked .x-menu-group-icon{background-image:none}.x-menu-item-separator{height:2px;border-top:solid 1px #e0e0e0;background-color:white;margin:2px 0;overflow:hidden}.x-menu-item-arrow{position:absolute;width:12px;height:9px;top:9px;right:0;background:no-repeat center center;background-image:url('../../resources/themes/images/default/menu/menu-parent.gif')}.x-menu-item-indent{margin-left:31px}.x-menu-item-active{cursor:pointer}.x-menu-item-active .x-menu-item-link{background-image:none;background-color:#d9e8fb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e7f0fc),color-stop(100%,#c7ddf9));background-image:-webkit-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-moz-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-o-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-ms-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:linear-gradient(top,#e7f0fc,#c7ddf9);margin:0;border:1px solid #a9cbf5;cursor:pointer;-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px}.x-menu-item-disabled{filter:alpha(opacity=50);opacity:.5}.x-ie .x-menu-item-disabled .x-menu-item-icon{filter:alpha(opacity=50);opacity:.5}.x-ie .x-menu-item-disabled .x-menu-item-text{background-color:transparent}.x-strict .x-ie7m .x-ie .x-menu-icon-separator{width:1px}.x-strict .x-ie7m .x-ie .x-menu-item-separator{height:1px}.x-ie6 .x-menu-item-link,.x-ie7 .x-menu-item-link,.x-quirks .x-ie8 .x-menu-item-link{padding-bottom:2px}.x-nlg .x-menu-item-active .x-menu-item-link{background:#d9e8fb repeat-x left top;background-image:url('../../resources/themes/images/default/menu/menu-item-active-bg.gif')}.x-menu-date-item{border-color:#99bbe8}.x-panel .x-grid-body{background:white;border-color:#99bce8;border-style:solid;border-width:1px;border-top-color:#c5c5c5}.x-panel .x-grid-header-ct-hidden{visibility:hidden}.x-grid-empty{padding:10px;color:gray;font:normal 11px tahoma,arial,helvetica,sans-serif}.x-grid-header-hidden .x-grid-body{border-top-color:#99bce8!important}.x-grid-view{overflow:hidden;position:relative}.x-grid-table{table-layout:fixed;border-collapse:separate}.x-autowidth-table table.x-grid-table{table-layout:auto;width:auto!important}.x-grid-row .x-grid-table{border-collapse:collapse}.x-grid-locked .x-grid-inner-locked{border-width:0 1px 0 0!important;border-style:solid}.x-grid-header-ct{cursor:default;zoom:1;padding:0;border:1px solid #99bce8;border-bottom-color:#c5c5c5;background-image:none;background-color:#c5c5c5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f9f9f9),color-stop(100%,#e3e4e6));background-image:-webkit-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-moz-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-o-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-ms-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:linear-gradient(top,#f9f9f9,#e3e4e6)}.x-accordion-item .x-grid-header-ct{border-width:0 0 1px 0!important}.x-column-header{padding:0;position:absolute;overflow:hidden;border-right:1px solid #c5c5c5;border-left:0 none;border-top:0 none;border-bottom:0 none;text-shadow:0 1px 0 rgba(255,255,255,0.3);color:null;font:normal 11px tahoma,arial,verdana,sans-serif;background-image:none;background-color:#c5c5c5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f9f9f9),color-stop(100%,#e3e4e6));background-image:-webkit-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-moz-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-o-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-ms-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:linear-gradient(top,#f9f9f9,#e3e4e6)}.x-group-header{padding:0;border-left-width:0}.x-group-sub-header{background:transparent;border-top:1px solid #c5c5c5;border-left-width:0}.x-column-header-inner{zoom:1;position:relative;white-space:nowrap;line-height:15px;padding:3px 6px 4px}.x-column-header-inner .x-column-header-text{white-space:nowrap}.x-column-header-over,.x-column-header-sort-ASC,.x-column-header-sort-DESC{border-left-color:#aaccf6;border-right-color:#aaccf6;background-image:none;background-color:#aaccf6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ebf3fd),color-stop(39%,#ebf3fd),color-stop(40%,#d9e8fb),color-stop(100%,#d9e8fb));background-image:-webkit-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:-moz-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:-o-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:-ms-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb)}.x-nlg .x-grid-header-ct,.x-nlg .x-column-header{background:repeat-x 0 top;background-image:url('../../resources/themes/images/default/grid/column-header-bg.gif')}.x-nlg .x-column-header-over,.x-nlg .x-column-header-sort-ASC,.x-nlg .x-column-header-sort-DESC{background:#ebf3fd repeat-x 0 top;background-image:url('../../resources/themes/images/default/grid/column-header-over-bg.gif')}.x-column-header-trigger{display:none;height:100%;width:14px;background:no-repeat left center;background-color:#c3daf9;background-image:url('../../resources/themes/images/default/grid/grid3-hd-btn.gif');position:absolute;right:0;top:0;z-index:2;cursor:pointer}.x-column-header-over .x-column-header-trigger,.x-column-header-open .x-column-header-trigger{display:block}.x-column-header-align-right{text-align:right}.x-column-header-align-right .x-column-header-text{padding-right:.5ex;margin-right:6px}.x-column-header-align-center{text-align:center}.x-column-header-align-left{text-align:left}.x-column-header-sort-ASC .x-column-header-text{padding-right:16px;background:no-repeat right 6px;background-image:url('../../resources/themes/images/default/grid/sort_asc.gif')}.x-column-header-sort-DESC .x-column-header-text{padding-right:16px;background:no-repeat right 6px;background-image:url('../../resources/themes/images/default/grid/sort_desc.gif')}.x-grid-row{vertical-align:top}.x-grid-row .x-grid-cell{color:null;font:normal 11px/15px tahoma,arial,verdana,sans-serif;background-color:white;border-color:#ededed;border-style:solid;border-top-color:#fafafa;border-width:0}.x-grid-with-row-lines .x-grid-cell{border-width:1px 0}.x-grid-rowwrap-div{border-width:1px 0;border-color:#ededed;border-style:solid;border-top-color:#fafafa;overflow:hidden}.x-grid-row-alt .x-grid-cell,.x-grid-row-alt .x-grid-rowwrap-div{background-color:#fafafa}.x-grid-row-over .x-grid-cell,.x-grid-row-over .x-grid-rowwrap-div{border-color:#ddd;background-color:#efefef}.x-grid-row-focused .x-grid-cell,.x-grid-row-focused .x-grid-rowwrap-div{border-color:#ddd;background-color:#efefef}.x-grid-row-selected .x-grid-cell,.x-grid-row-selected .x-grid-rowwrap-div{border-style:dotted;border-color:#a3bae9;background-color:#dfe8f6!important}.x-grid-rowwrap-div .x-grid-cell,.x-grid-rowwrap-div .x-grid-cell-inner{border-width:0;background:transparent}.x-grid-row-body-hidden{display:none}.x-grid-rowbody{font:normal 11px/13px tahoma,arial,verdana,sans-serif;padding:4px}.x-grid-rowbody p{margin:5px 5px 10px 5px}.x-grid-cell{overflow:hidden}.x-grid-cell-inner{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding:2px 6px 3px;white-space:nowrap}.x-grid-with-row-lines .x-grid-cell-inner{line-height:13px;padding-bottom:4px}.x-action-col-cell .x-grid-cell-inner{line-height:0;padding:2px}.x-action-col-cell .x-item-disabled{filter:alpha(opacity=30);opacity:.3}.x-grid-with-row-lines .x-action-col-cell .x-grid-cell-inner{padding-top:1px}.x-grid-row .x-grid-cell-special{padding:0;border-right:1px solid #d0d0d0;background-image:none;background-color:#f6f6f6;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#f6f6f6),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-moz-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-o-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-ms-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:linear-gradient(left,#f6f6f6,#e9e9e9)}.x-grid-row .x-grid-cell-row-checker{vertical-align:middle}.x-ie6 .x-grid-header-row,.x-ie7 .x-grid-header-row,.x-quirks .x-ie8 .x-grid-header-row{position:absolute}.x-grid-row-selected .x-grid-cell-special{border-right:1px solid #aaccf6;background-image:none;background-color:#dfe8f6;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dfe8f6),color-stop(100%,#cbdaf0));background-image:-webkit-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-moz-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-o-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-ms-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:linear-gradient(left,#dfe8f6,#cbdaf0)}.x-grid-dirty-cell{background-image:url('../../resources/themes/images/default/grid/dirty.gif');background-position:0 0;background-repeat:no-repeat}.x-grid-cell-selected{background-color:#b8cfee!important}.x-nlg .x-grid-cell-special{background-repeat:repeat-y;background-position:top right}.x-nlg .x-grid-row .x-grid-cell-special,.x-nlg .x-grid-row-over .x-grid-cell-special{background-image:url('../../resources/themes/images/default/grid/cell-special-bg.gif')}.x-nlg .x-grid-row-focused .x-grid-cell-special,.x-nlg .x-grid-row-selected .x-grid-cell-special{background-image:url('../../resources/themes/images/default/grid/cell-special-selected-bg.gif')}.x-grid-with-col-lines .x-grid-cell{padding-right:0;border-right:1px solid #d0d0d0}.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner{padding-left:12px;background-image:url('../../resources/themes/images/default/grid/property-cell-bg.gif');background-repeat:no-repeat;background-position:-16px 2px}.x-grid-with-row-lines.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,.x-grid-with-row-lines.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner{background-position:-16px 1px}.x-quirks .x-ie .x-grid-row .x-grid-property-name .x-grid-cell-inner{background-position:-16px 2px}.x-unselectable{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-grid-row-body-hidden{display:none}.x-grid-group-collapsed{display:none}.x-grid-view .x-grid-td-expander{vertical-align:top}.x-grid-td-expander{background:repeat-y right transparent}.x-grid-view .x-grid-td-expander .x-grid-cell-inner{padding:0!important}.x-grid-row-expander{background-image:url('../../resources/themes/images/default/grid/group-collapse.gif');background-color:transparent;width:9px;height:13px;margin-left:3px;background-repeat:no-repeat;background-position:0 -2px}.x-grid-row-collapsed .x-grid-row-expander{background-image:url('../../resources/themes/images/default/grid/group-expand.gif')}.x-grid-resize-marker{position:absolute;z-index:5;top:0;width:1px;background-color:#0f0f0f}.col-move-top,.col-move-bottom{width:9px;height:9px;position:absolute;top:0;line-height:0;font-size:0;overflow:hidden;z-index:20000;background:no-repeat left top transparent}.col-move-top{background-image:url('../../resources/themes/images/default/grid/col-move-top.gif')}.col-move-bottom{background-image:url('../../resources/themes/images/default/grid/col-move-bottom.gif')}.x-tbar-page-number{width:30px}.x-grid-group,.x-grid-group-body,.x-grid-group-hd{zoom:1}.x-grid-group-hd{padding-top:6px}.x-grid-group-hd .x-grid-cell-inner{padding:10px 4px 4px 4px;background:white;border-width:0 0 2px 0;border-style:solid;border-color:#99bbe8;cursor:pointer}.x-grid-group-hd-collapsible .x-grid-group-title{background:transparent no-repeat 0 -1px;background-image:url('../../resources/themes/images/default/grid/group-collapse.gif');padding:0 0 0 14px}.x-grid-group-title{color:#3764a0;font:bold 11px tahoma,arial,verdana,sans-serif}.x-grid-group-hd-collapsed .x-grid-group-title{background-image:url('../../resources/themes/images/default/grid/group-expand.gif')}.x-grid-group-collapsed .x-grid-group-body{display:none}.x-grid-group-collapsed .x-grid-group-title{background-image:url('../../resources/themes/images/default/grid/group-expand.gif')}.x-group-by-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x-show-groups-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x-column-header-checkbox .x-column-header-inner{padding:0}.x-grid-cell-special .x-grid-cell-inner{padding-left:4px;padding-right:4px}.x-grid-row-checker,.x-column-header-checkbox .x-column-header-text{height:14px;width:14px;line-height:0;background-image:url('../../resources/themes/images/default/grid/unchecked.gif');background-position:-1px -1px;background-repeat:no-repeat;background-color:transparent}.x-column-header-checkbox .x-column-header-text{display:block;margin:0 5px}.x-quirks .x-ie .x-grid-row-checker,.x-quirks .x-ie .x-column-header-checkbox .x-column-header-text,.x-ie7m .x-grid-row-checker,.x-ie7m .x-column-header-checkbox .x-column-header-text{line-height:14px}.x-grid-hd-checker-on .x-column-header-text{background-image:url('../../resources/themes/images/default/grid/checked.gif')}.x-grid-cell-row-checker .x-grid-cell-inner{padding-top:4px;padding-bottom:2px;line-height:14px}.x-grid-with-row-lines .x-grid-cell-row-checker .x-grid-cell-inner{padding-top:3px}.x-grid-row-checker{margin-left:1px;background-position:50% -2px}.x-grid-row-selected .x-grid-row-checker,.x-grid-row-checked .x-grid-row-checker{background-image:url('../../resources/themes/images/default/grid/checked.gif')}.x-tbar-page-first{background-image:url('../../resources/themes/images/default/grid/page-first.gif')!important}.x-tbar-loading{background-image:url('../../resources/themes/images/default/grid/refresh.gif')!important}.x-tbar-page-last{background-image:url('../../resources/themes/images/default/grid/page-last.gif')!important}.x-tbar-page-next{background-image:url('../../resources/themes/images/default/grid/page-next.gif')!important}.x-tbar-page-prev{background-image:url('../../resources/themes/images/default/grid/page-prev.gif')!important}.x-item-disabled .x-tbar-loading{background-image:url('../../resources/themes/images/default/grid/refresh-disabled.gif')!important}.x-item-disabled .x-tbar-page-first{background-image:url('../../resources/themes/images/default/grid/page-first-disabled.gif')!important}.x-item-disabled .x-tbar-page-last{background-image:url('../../resources/themes/images/default/grid/page-last-disabled.gif')!important}.x-item-disabled .x-tbar-page-next{background-image:url('../../resources/themes/images/default/grid/page-next-disabled.gif')!important}.x-item-disabled .x-tbar-page-prev{background-image:url('../../resources/themes/images/default/grid/page-prev-disabled.gif')!important}.x-hmenu-sort-asc .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-asc.gif')}.x-hmenu-sort-desc .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-desc.gif')}.x-hmenu-lock .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-lock.gif')}.x-hmenu-unlock .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-unlock.gif')}.x-group-by-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x-cols-icon .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/columns.gif')}.x-show-groups-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x-grid-drop-indicator{position:absolute;height:1px;line-height:0;background-color:#77bc71;overflow:visible}.x-grid-drop-indicator .x-grid-drop-indicator-left{position:absolute;top:-8px;left:-12px;background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-right.png');height:16px;width:16px}.x-grid-drop-indicator .x-grid-drop-indicator-right{position:absolute;top:-8px;right:-11px;background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-left.png');height:16px;width:16px}.x-ie6 .x-grid-drop-indicator-left{background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-right.gif')}.x-ie6 .x-grid-drop-indicator-right{background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-left.gif')}.x-grid-editor .x-form-text{padding:0 4px}.x-grid-editor .x-form-cb-wrap{padding-top:3px}.x-grid-row-editor{position:absolute!important;z-index:1;zoom:1;overflow:visible!important}.x-grid-row-editor .x-form-text{padding:0 2px}.x-grid-row-editor .x-form-cb-wrap{padding-top:0}.x-grid-row-editor .x-form-checkbox{margin-left:-4px}.x-grid-row-editor .x-form-display-field{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding-top:0;padding-left:2px}.x-grid-row-editor .x-panel-body{background-color:#eaf1fb;border-top:1px solid #99bce8!important;border-bottom:1px solid #99bce8!important}.x-grid-editor .x-form-cb-wrap,.x-grid-row-editor .x-form-cb-wrap{text-align:center}.x-grid-editor .x-form-trigger,.x-grid-row-editor .x-form-trigger{height:19px}.x-grid-editor .x-form-trigger-wrap .x-form-spinner-up,.x-grid-editor .x-form-trigger-wrap .x-form-spinner-down,.x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-up,.x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-down{background-image:url('../../resources/themes/images/default/form/spinner-small.gif');height:10px!important}.x-grid-editor .x-form-text,.x-grid-row-editor .x-form-text{font:normal 11px/15px tahoma,arial,verdana,sans-serif;height:18px}.x-border-box .x-grid-editor .x-form-trigger,.x-border-box .x-grid-row-editor .x-form-trigger{height:20px}.x-border-box .x-grid-editor .x-form-text,.x-border-box .x-grid-row-editor .x-form-text{height:20px;padding-bottom:1px}.x-ie .x-grid-editor .x-form-text{padding-left:5px}.x-ie .x-grid-row-editor .x-form-text{padding-left:3px}.x-ie8m .x-grid-editor .x-form-text,.x-ie8m .x-grid-row-editor .x-form-text{padding-top:1px}.x-strict .x-ie6 .x-grid-editor .x-form-text,.x-strict .x-ie6 .x-grid-row-editor .x-form-text,.x-strict .x-ie7 .x-grid-editor .x-form-text,.x-strict .x-ie7 .x-grid-row-editor .x-form-text{height:17px}.x-quirks .x-ie9 .x-grid-editor .x-form-text,.x-quirks .x-ie9 .x-grid-row-editor .x-form-text{line-height:17px}.x-opera .x-grid-editor .x-form-text{padding-left:5px}.x-opera .x-grid-row-editor .x-form-text{padding-left:3px}.x-grid-row-editor-buttons{background-color:#eaf1fb;position:absolute;bottom:-31px;padding:4px;height:32px}.x-strict .x-ie7m .x-grid-row-editor-buttons{width:192px;height:24px}.x-grid-row-editor-buttons-ml,.x-grid-row-editor-buttons-mr,.x-grid-row-editor-buttons-bl,.x-grid-row-editor-buttons-br,.x-grid-row-editor-buttons-bc{position:absolute;overflow:hidden}.x-grid-row-editor-buttons-bl,.x-grid-row-editor-buttons-br{width:4px;height:4px;bottom:0;background-image:url('../../resources/themes/images/default/panel/panel-default-framed-corners.gif')}.x-grid-row-editor-buttons-bl{left:0;background-position:0 -16px}.x-grid-row-editor-buttons-br{right:0;background-position:0 -20px}.x-grid-row-editor-buttons-bc{position:absolute;left:4px;bottom:0;width:192px;height:1px;background-color:#99bce8}.x-grid-row-editor-buttons-ml,.x-grid-row-editor-buttons-mr{height:27px;width:1px;top:1px;background-color:#99bce8}.x-grid-row-editor-buttons-ml{left:0}.x-grid-row-editor-buttons-mr{background-position:0 -20px;right:0}.x-grid-row-editor-errors ul{margin-left:5px}.x-grid-row-editor-errors li{list-style:disc;margin-left:15px}.x-webkit *:focus{outline:none!important}.x-form-item{vertical-align:top;table-layout:fixed}.x-autocontainer-form-item,.x-anchor-form-item,.x-vbox-form-item,.x-checkboxgroup-form-item,.x-table-form-item{margin-bottom:5px}.x-form-layout-table{border-collapse:separate;border-spacing:0 2px}.x-form-item-body{position:relative}.x-form-form-item td{border-top:1px solid transparent}.x-ie6 .x-form-layout-table{border-collapse:collapse;border-spacing:0}.x-ie6 .x-form-form-item td{border-top-width:0}.x-ie6 td.x-form-item-pad{height:5px}.x-editor .x-form-item-body{padding-bottom:0}.x-form-item-label{display:block;padding:3px 0 0;font-size:12px;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-form-item-label-top{display:block;zoom:1;padding:0 0 5px 0}.x-form-item-label-right{text-align:right}.x-form-invalid-under{padding:2px 2px 2px 18px;color:#c0272b;font:normal 11px tahoma,arial,verdana,sans-serif;line-height:16px;background:no-repeat 0 2px;background-image:url('../../resources/themes/images/default/form/exclamation.gif')}.x-form-invalid-icon{width:18px;height:14px;background:no-repeat center center;background-image:url('../../resources/themes/images/default/form/exclamation.gif');overflow:hidden}.x-form-invalid-icon ul{display:block;width:18px}.x-form-invalid-icon ul li{display:none}.x-lbl-top-err-icon{margin-bottom:4px}.x-form-field,.x-form-display-field{margin:0;font:normal 12px tahoma,arial,verdana,sans-serif;color:black}.x-form-item-hidden{margin:0}.x-form-text,textarea.x-form-field{padding:1px 3px;background:repeat-x 0 0;border:1px solid;background-color:white;background-image:url('../../resources/themes/images/default/form/text-bg.gif');border-color:#b5b8c8}.x-form-text{height:18px;line-height:15px;vertical-align:top}.x-ie8m .x-form-text{line-height:15px}.x-border-box .x-form-text{height:22px}textarea.x-form-field{color:black;overflow:auto;height:auto;line-height:normal;background:repeat-x 0 0;background-color:white;background-image:url('../../resources/themes/images/default/form/text-bg.gif');resize:none}.x-border-box textarea.x-form-field{height:auto}.x-safari.x-mac textarea.x-form-field{margin-bottom:-2px}.x-form-focus,textarea.x-form-focus{border-color:#7eadd9}.x-form-invalid-field,textarea.x-form-invalid-field{background-color:white;background-image:url('../../resources/themes/images/default/grid/invalid_line.gif');background-repeat:repeat-x;background-position:bottom;border-color:#c30}.x-form-item{font:normal 12px tahoma,arial,verdana,sans-serif}.x-form-empty-field,textarea.x-form-empty-field{color:gray}.x-webkit .x-form-empty-field{line-height:15px}.x-form-display-field{padding-top:3px}.x-quirks .x-ie9p .x-form-text,.x-ie7m .x-form-text{margin-top:-1px;margin-bottom:-1px}.x-ie .x-form-file{height:23px;line-height:18px;vertical-align:middle}.x-field-default-toolbar .x-form-text{height:16px}.x-border-box .x-field-default-toolbar .x-form-text{height:20px}.x-field-default-toolbar .x-form-item-label-left{padding-left:4px}.x-fieldset{border:1px solid #b5b8c8;padding:10px;margin-bottom:10px;display:block;position:relative}.x-ie .x-fieldset{padding-top:0}.x-ie .x-fieldset .x-fieldset-body{padding-top:10px}.x-fieldset-header-checkbox{line-height:14px}.x-fieldset-header{font:11px/14px bold tahoma,arial,verdana,sans-serif;color:#15428b;padding:0 3px 1px;overflow:hidden}.x-fieldset-header .x-fieldset-header-text{float:left;padding:1px 0}.x-fieldset-header .x-fieldset-header-text-collapsible{cursor:pointer}.x-fieldset-header .x-form-item,.x-fieldset-header .x-tool{float:left;margin:1px 0 0 0}.x-fieldset-header .x-form-cb-wrap{padding:1px 0;font-size:0;line-height:0}.x-fieldset-with-title .x-fieldset-header-checkbox,.x-fieldset-with-title .x-tool{margin-right:3px}.x-webkit .x-fieldset-header{-webkit-padding-start:3px;-webkit-padding-end:3px}.x-opera .x-fieldset-with-legend{margin-top:-1px}.x-opera.x-mac .x-fieldset-header-text{padding:2px 0 0}.x-strict .x-ie8 .x-fieldset-header{margin-bottom:-1px}.x-strict .x-ie8 .x-fieldset-header .x-tool,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox{position:relative;top:-1px}.x-quirks .x-ie .x-fieldset-header,.x-ie8m .x-fieldset-header{padding-left:1px;padding-right:1px}.x-fieldset-collapsed .x-fieldset-body{display:none}.x-fieldset-collapsed{padding-bottom:0!important;border-width:1px 1px 0 1px!important;border-left-color:transparent!important;border-right-color:transparent!important}.x-ie6 .x-fieldset-collapsed{border-width:1px 0 0 0!important;padding-bottom:0!important;margin-left:1px;margin-right:1px}.x-ie .x-fieldset-bwrap{zoom:1}.x-ie .x-fieldset-noborder legend{position:relative;margin-bottom:23px}.x-ie .x-fieldset-noborder legend span{position:absolute;left:16px}.x-fieldset{overflow:hidden}.x-fieldset-bwrap{overflow:hidden;zoom:1}.x-fieldset-body{overflow:hidden}.x-form-file-wrap .x-form-text{color:#777}.x-form-file-wrap .x-form-file-btn{overflow:hidden}.x-form-file-wrap .x-form-file-input{position:absolute;top:-4px;right:-2px;height:30px;filter:alpha(opacity=0);opacity:0;font-size:100px}.x-form-cb-wrap{padding-top:3px}.x-form-checkbox,.x-form-radio{vertical-align:-1px;width:13px;height:13px;background:no-repeat;background-image:url('../../resources/themes/images/default/form/checkbox.gif');overflow:hidden;padding:0;border:0}.x-form-checkbox::-moz-focus-inner,.x-form-radio::-moz-focus-inner{padding:0;border:0}.x-nbr.x-ie .x-form-checkbox,.x-nbr.x-ie .x-form-radio{font-size:0}.x-form-cb-checked .x-form-checkbox,.x-form-cb-checked .x-form-radio{background-position:0 -13px}.x-form-cb-focus{background-position:-13px 0}.x-form-cb-checked .x-form-cb-focus{background-position:-13px -13px}.x-form-radio{background-image:url('../../resources/themes/images/default/form/radio.gif')}.x-form-cb-label-before{margin-right:4px}.x-form-cb-label-after{margin-left:4px}.x-form-checkboxgroup-body{padding:1px 4px 1px 4px}.x-form-invalid .x-form-checkboxgroup-body{border:1px solid #c30!important;background:transparent repeat-x bottom;background-image:url('../../resources/themes/images/default/grid/invalid_line.gif');padding:1px 3px 0 3px}.x-check-group-alt{background:#d1ddef;border-top:1px dotted #b5b8c8;border-bottom:1px dotted #b5b8c8}.x-form-check-group-label{color:#333;border-bottom:1px solid #333;margin:0 30px 5px 0;padding:2px}.x-form-trigger-wrap{vertical-align:top}.x-form-trigger{background-image:url('../../resources/themes/images/default/form/trigger.gif');background-position:0 0;width:17px;height:21px;border-bottom:1px solid #b5b8c8;cursor:pointer;cursor:hand;overflow:hidden}.x-border-box .x-form-trigger{height:22px}.x-field-default-toolbar .x-form-trigger{height:19px}.x-border-box .x-field-default-toolbar .x-form-trigger{height:20px}.x-form-trigger-over{background-position:-17px 0;border-bottom-color:#7eadd9}.x-form-trigger-wrap-focus .x-form-trigger{background-position:-51px 0;border-bottom-color:#7eadd9}.x-form-trigger-wrap-focus .x-form-trigger-over{background-position:-68px 0;border-bottom-color:null}.x-form-trigger-click,.x-form-trigger-wrap-focus .x-form-trigger-click{background-position:-34px 0;border-bottom-color:null}.x-form-trigger-icon{height:16px;background-repeat:no-repeat;background-position:7px 6px}.x-pickerfield-open .x-form-field{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0}.x-pickerfield-open-above .x-form-field{-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;-o-border-bottom-left-radius:3px;-ms-border-bottom-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0}.x-form-arrow-trigger .x-form-trigger-icon{background-image:url('../../resources/themes/images/default/boundlist/trigger-arrow.png')}.x-form-date-trigger{background-image:url('../../resources/themes/images/default/form/date-trigger.gif')}.x-form-trigger-wrap .x-form-spinner-up,.x-form-trigger-wrap .x-form-spinner-down{background-image:url('../../resources/themes/images/default/form/spinner.gif');width:17px!important;height:11px!important;font-size:0;border-bottom:0}.x-form-trigger-wrap .x-form-spinner-down{background-position:0 -11px}.x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -11px}.x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -11px}.x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -11px}.x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -11px}.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-up,.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down{background-image:url('../../resources/themes/images/default/form/spinner-small.gif');height:10px!important}.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down{background-position:0 -10px}.x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -10px}.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -10px}.x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -10px}.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -10px}.x-trigger-noedit{cursor:pointer;cursor:hand}.x-item-disabled .x-trigger-noedit,.x-item-disabled .x-form-trigger{cursor:auto}.x-form-clear-trigger{background-image:url('../../resources/themes/images/default/form/clear-trigger.gif')}.x-form-search-trigger{background-image:url('../../resources/themes/images/default/form/search-trigger.gif')}.x-quirks .prefixie6 .x-form-trigger-input-cell{height:22px}.x-quirks .prefixie6 .x-field-default-toolbar .x-form-trigger-input-cell{height:20px}.x-html-editor-wrap{border:1px solid #b5b8c8}.x-html-editor-wrap .x-toolbar{border-top-width:0;border-left-width:0;border-right-width:0}.x-html-editor-wrap textarea{background-color:white}.x-html-editor-tb .x-btn-text{background:transparent no-repeat;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-bold,.x-menu-item img.x-edit-bold{background-position:0 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-italic,.x-menu-item img.x-edit-italic{background-position:-16px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-underline,.x-menu-item img.x-edit-underline{background-position:-32px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-forecolor,.x-menu-item img.x-edit-forecolor{background-position:-160px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-backcolor,.x-menu-item img.x-edit-backcolor{background-position:-176px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-justifyleft,.x-menu-item img.x-edit-justifyleft{background-position:-112px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-justifycenter,.x-menu-item img.x-edit-justifycenter{background-position:-128px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-justifyright,.x-menu-item img.x-edit-justifyright{background-position:-144px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-insertorderedlist,.x-menu-item img.x-edit-insertorderedlist{background-position:-80px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-insertunorderedlist,.x-menu-item img.x-edit-insertunorderedlist{background-position:-96px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-increasefontsize,.x-menu-item img.x-edit-increasefontsize{background-position:-48px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-decreasefontsize,.x-menu-item img.x-edit-decreasefontsize{background-position:-64px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-sourceedit,.x-menu-item img.x-edit-sourceedit{background-position:-192px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-createlink,.x-menu-item img.x-edit-createlink{background-position:-208px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tip .x-tip-bd .x-tip-bd-inner{padding:5px;padding-bottom:1px}.x-html-editor-tb .x-toolbar{position:static!important}.x-html-editor-tb .x-font-select{font-size:11px}.x-html-editor-wrap textarea{border:0;padding:3px 2px;overflow:auto}.x-panel,.x-plain{overflow:hidden;position:relative}.x-ie .x-panel-header,.x-ie .x-panel-header-tl,.x-ie .x-panel-header-tc,.x-ie .x-panel-header-tr,.x-ie .x-panel-header-ml,.x-ie .x-panel-header-mc,.x-ie .x-panel-header-mr,.x-ie .x-panel-header-bl,.x-ie .x-panel-header-bc,.x-ie .x-panel-header-br{zoom:1}.x-ie8 td.x-frame-mc{vertical-align:top}.x-panel-header-horizontal{padding:3px 5px 4px}.x-panel-header-vertical{padding:5px 4px}.x-panel-header-icon,.x-window-header-icon{width:16px;height:16px;background-repeat:no-repeat;background-position:0 0;vertical-align:middle;margin-right:4px}.x-vertical .x-panel-header-icon,.x-vertical .x-window-header-icon{margin:0 0 4px}.x-panel-header-draggable,.x-panel-header-draggable .x-panel-header-text,.x-window-header-draggable,.x-window-header-draggable .x-window-header-text{cursor:move}.x-panel-ghost,.x-window-ghost{filter:alpha(opacity=65);opacity:.65;cursor:move}.x-panel-header-horizontal .x-panel-header-body,.x-panel-header-horizontal .x-window-header-body,.x-panel-header-horizontal .x-btn-group-header-body,.x-window-header-horizontal .x-panel-header-body,.x-window-header-horizontal .x-window-header-body,.x-window-header-horizontal .x-btn-group-header-body,.x-btn-group-header-horizontal .x-panel-header-body,.x-btn-group-header-horizontal .x-window-header-body,.x-btn-group-header-horizontal .x-btn-group-header-body{width:100%}.x-panel-header-vertical .x-panel-header-body,.x-panel-header-vertical .x-window-header-body,.x-panel-header-vertical .x-btn-group-header-body,.x-window-header-vertical .x-panel-header-body,.x-window-header-vertical .x-window-header-body,.x-window-header-vertical .x-btn-group-header-body,.x-btn-group-header-vertical .x-panel-header-body,.x-btn-group-header-vertical .x-window-header-body,.x-btn-group-header-vertical .x-btn-group-header-body{height:100%}.x-panel-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-panel-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;white-space:nowrap}.x-panel-header-left .x-vml-base,.x-panel-header-right .x-vml-base{left:-3px!important}.x-panel-body{overflow:hidden;position:relative;font-size:12px}.x-panel-header-vertical .x-surface{padding-left:1px}.x-opera .x-panel-header-vertical .x-surface,.x-strict .x-ie9 .x-panel-header-vertical .x-surface{padding-left:2px}.x-panel-collapsed .x-panel-header-collapsed-border-top{border-bottom-width:1px!important}.x-panel-collapsed .x-panel-header-collapsed-border-right{border-left-width:1px!important}.x-panel-collapsed .x-panel-header-collapsed-border-bottom{border-top-width:1px!important}.x-panel-collapsed .x-panel-header-collapsed-border-left{border-right-width:1px!important}.x-nlg .x-panel-header-vertical .x-frame-mc{background-repeat:repeat-y}.x-panel-default{border-color:#99bce8}.x-panel-header-default{font-size:11px;border-color:#99bce8;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);-moz-box-shadow:#f4f8fd 0 1px 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset}.x-nlg .x-panel-header-default-top{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif')}.x-nlg .x-panel-header-default-bottom{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif')}.x-nlg .x-panel-header-default-left{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif')}.x-nlg .x-panel-header-default-right{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif')}.x-nlg .x-panel-header-default-right{background-position:top right}.x-nlg .x-panel-header-default-bottom{background-position:bottom left}.x-panel-header-text-default{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:17px}.x-panel-body-default{background:white;border-color:#99bce8;color:black;border-width:1px;border-style:solid}.x-panel-collapsed .x-window-header-default,.x-panel-collapsed .x-panel-header-default{border-color:#99bce8}.x-panel-header-default-vertical{border-color:#99bce8}.x-panel-header-default-left,.x-panel-header-default-right{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-collapsed .x-panel-header-default-top{-moz-border-radius-bottomleft:null;-webkit-border-bottom-left-radius:null;-o-border-bottom-left-radius:null;-ms-border-bottom-left-radius:null;-khtml-border-bottom-left-radius:null;border-bottom-left-radius:null;-moz-border-radius-bottomright:null;-webkit-border-bottom-right-radius:null;-o-border-bottom-right-radius:null;-ms-border-bottom-right-radius:null;-khtml-border-bottom-right-radius:null;border-bottom-right-radius:null}.x-panel-collapsed .x-panel-header-default-right{-moz-border-radius-topleft:null;-webkit-border-top-left-radius:null;-o-border-top-left-radius:null;-ms-border-top-left-radius:null;-khtml-border-top-left-radius:null;border-top-left-radius:null;-moz-border-radius-bottomleft:null;-webkit-border-bottom-left-radius:null;-o-border-bottom-left-radius:null;-ms-border-bottom-left-radius:null;-khtml-border-bottom-left-radius:null;border-bottom-left-radius:null}.x-panel-collapsed .x-panel-header-default-bottom{-moz-border-radius-topleft:null;-webkit-border-top-left-radius:null;-o-border-top-left-radius:null;-ms-border-top-left-radius:null;-khtml-border-top-left-radius:null;border-top-left-radius:null;-moz-border-radius-topright:null;-webkit-border-top-right-radius:null;-o-border-top-right-radius:null;-ms-border-top-right-radius:null;-khtml-border-top-right-radius:null;border-top-right-radius:null}.x-panel-collapsed .x-panel-header-default-left{-moz-border-radius-topright:null;-webkit-border-top-right-radius:null;-o-border-top-right-radius:null;-ms-border-top-right-radius:null;-khtml-border-top-right-radius:null;border-top-right-radius:null;-moz-border-radius-bottomright:null;-webkit-border-bottom-right-radius:null;-o-border-bottom-right-radius:null;-ms-border-bottom-right-radius:null;-khtml-border-bottom-right-radius:null;border-bottom-right-radius:null}.x-panel-header-default-top{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset}.x-panel-header-default-right{-moz-box-shadow:#f4f8fd -1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd -1px 0 0 0 inset;-o-box-shadow:#f4f8fd -1px 0 0 0 inset;box-shadow:#f4f8fd -1px 0 0 0 inset}.x-panel-header-default-bottom{-moz-box-shadow:#f4f8fd 0 -1px 0 0 inset;-webkit-box-shadow:#f4f8fd 0 -1px 0 0 inset;-o-box-shadow:#f4f8fd 0 -1px 0 0 inset;box-shadow:#f4f8fd 0 -1px 0 0 inset}.x-panel-header-default-left{-moz-box-shadow:#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 1px 0 0 0 inset}.x-panel-header-default-right-tc,.x-panel-header-default-right-mc,.x-panel-header-default-right-bc{background-position:right 0}.x-panel-header-default-bottom-tc,.x-panel-header-default-bottom-mc,.x-panel-header-default-bottom-bc{background-position:0 bottom}.x-panel-default-framed{border-color:#99bce8}.x-panel-header-default-framed{font-size:11px;border-color:#99bce8;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);-moz-box-shadow:#f4f8fd 0 1px 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset}.x-nlg .x-panel-header-default-framed-top{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif')}.x-nlg .x-panel-header-default-framed-bottom{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif')}.x-nlg .x-panel-header-default-framed-left{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif')}.x-nlg .x-panel-header-default-framed-right{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif')}.x-nlg .x-panel-header-default-framed-right{background-position:top right}.x-nlg .x-panel-header-default-framed-bottom{background-position:bottom left}.x-nbr .x-panel-header-default-framed{background-image:none}.x-strict .x-ie9 .x-panel-header-default-framed-top,.x-nlg.x-opera .x-panel-header-default-framed-top,.x-nlg.x-safari .x-panel-header-default-framed-top{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif')}.x-strict .x-ie9 .x-panel-header-default-framed-bottom,.x-nlg.x-opera .x-panel-header-default-framed-bottom,.x-nlg.x-safari .x-panel-header-default-framed-bottom{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif')}.x-strict .x-ie9 .x-panel-header-default-framed-left,.x-nlg.x-opera .x-panel-header-default-framed-left,.x-nlg.x-safari .x-panel-header-default-framed-left{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif')}.x-strict .x-ie9 .x-panel-header-default-framed-right,.x-nlg.x-opera .x-panel-header-default-framed-right,.x-nlg.x-safari .x-panel-header-default-framed-right{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif')}.x-panel-header-text-default-framed{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:17px}.x-panel-body-default-framed{background:#dfe9f6;border-color:#99bce8;color:black;border-width:0;border-style:solid}.x-panel-collapsed .x-window-header-default-framed,.x-panel-collapsed .x-panel-header-default-framed{border-color:#99bce8}.x-panel-header-default-framed-vertical{border-color:#99bce8}.x-panel-header-default-framed-left,.x-panel-header-default-framed-right{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-default-framed{-moz-border-radius:4px;-webkit-border-radius:4px;-o-border-radius:4px;-ms-border-radius:4px;-khtml-border-radius:4px;border-radius:4px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#dfe9f6}.x-nlg .x-panel-default-framed-mc{background-color:#dfe9f6}.x-nbr .x-panel-default-framed{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1000404px}.x-nbr .x-panel-default-framed-tl,.x-nbr .x-panel-default-framed-bl,.x-nbr .x-panel-default-framed-tr,.x-nbr .x-panel-default-framed-br,.x-nbr .x-panel-default-framed-tc,.x-nbr .x-panel-default-framed-bc,.x-nbr .x-panel-default-framed-ml,.x-nbr .x-panel-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel/panel-default-framed-corners.gif')}.x-nbr .x-panel-default-framed-ml,.x-nbr .x-panel-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel/panel-default-framed-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-panel-default-framed-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-panel-default-framed-tl,.x-strict .x-ie7 .x-panel-default-framed-bl{position:relative;right:0}.x-panel-header-default-framed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 5px 4px 5px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-nlg .x-panel-header-default-framed-top-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif');background-color:#cbddf3}.x-nbr .x-panel-header-default-framed-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1000000px}.x-nbr .x-panel-header-default-framed-top-tl,.x-nbr .x-panel-header-default-framed-top-bl,.x-nbr .x-panel-header-default-framed-top-tr,.x-nbr .x-panel-header-default-framed-top-br,.x-nbr .x-panel-header-default-framed-top-tc,.x-nbr .x-panel-header-default-framed-top-bc,.x-nbr .x-panel-header-default-framed-top-ml,.x-nbr .x-panel-header-default-framed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-corners.gif')}.x-nbr .x-panel-header-default-framed-top-ml,.x-nbr .x-panel-header-default-framed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-sides.gif');background-position:0 0}.x-nbr .x-panel-header-default-framed-top-mc{padding:0 2px 4px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-top-bl{position:relative;right:0}.x-panel-header-default-framed-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 4px;border-width:1px 1px 1px 0;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-nlg .x-panel-header-default-framed-right-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif');background-color:#cbddf3}.x-nbr .x-panel-header-default-framed-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000004px 1100400px}.x-nbr .x-panel-header-default-framed-right-tl,.x-nbr .x-panel-header-default-framed-right-bl,.x-nbr .x-panel-header-default-framed-right-tr,.x-nbr .x-panel-header-default-framed-right-br,.x-nbr .x-panel-header-default-framed-right-tc,.x-nbr .x-panel-header-default-framed-right-bc,.x-nbr .x-panel-header-default-framed-right-ml,.x-nbr .x-panel-header-default-framed-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-corners.gif')}.x-nbr .x-panel-header-default-framed-right-tc,.x-nbr .x-panel-header-default-framed-right-bc{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-nbr .x-panel-header-default-framed-right-mc{padding:2px 1px 2px 4px}.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-right-bl{position:relative;right:0}.x-panel-header-default-framed-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-nlg .x-panel-header-default-framed-bottom-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif');background-color:#cbddf3}.x-nbr .x-panel-header-default-framed-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000000px 1000404px}.x-nbr .x-panel-header-default-framed-bottom-tl,.x-nbr .x-panel-header-default-framed-bottom-bl,.x-nbr .x-panel-header-default-framed-bottom-tr,.x-nbr .x-panel-header-default-framed-bottom-br,.x-nbr .x-panel-header-default-framed-bottom-tc,.x-nbr .x-panel-header-default-framed-bottom-bc,.x-nbr .x-panel-header-default-framed-bottom-ml,.x-nbr .x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-corners.gif')}.x-nbr .x-panel-header-default-framed-bottom-ml,.x-nbr .x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-sides.gif');background-position:0 0}.x-nbr .x-panel-header-default-framed-bottom-mc{padding:3px 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-nlg .x-panel-header-default-framed-left-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif');background-color:#cbddf3}.x-nbr .x-panel-header-default-framed-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000400px 1100004px}.x-nbr .x-panel-header-default-framed-left-tl,.x-nbr .x-panel-header-default-framed-left-bl,.x-nbr .x-panel-header-default-framed-left-tr,.x-nbr .x-panel-header-default-framed-left-br,.x-nbr .x-panel-header-default-framed-left-tc,.x-nbr .x-panel-header-default-framed-left-bc,.x-nbr .x-panel-header-default-framed-left-ml,.x-nbr .x-panel-header-default-framed-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-corners.gif')}.x-nbr .x-panel-header-default-framed-left-tc,.x-nbr .x-panel-header-default-framed-left-bc{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-nbr .x-panel-header-default-framed-left-mc{padding:2px 4px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-left-bl{position:relative;right:0}.x-panel-header-default-framed-top{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset}.x-panel-header-default-framed-right{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset}.x-panel-header-default-framed-bottom{-moz-box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset}.x-panel-header-default-framed-left{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset}.x-panel .x-panel-header-default-framed-top{border-bottom-width:1px!important}.x-panel .x-panel-header-default-framed-right{border-left-width:1px!important}.x-panel .x-panel-header-default-framed-bottom{border-top-width:1px!important}.x-panel .x-panel-header-default-framed-left{border-right-width:1px!important}.x-panel-header-default-framed-collapsed{-moz-border-radius:4px;-webkit-border-radius:4px;-o-border-radius:4px;-ms-border-radius:4px;-khtml-border-radius:4px;border-radius:4px}.x-panel-header-default-framed-collapsed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-nlg .x-panel-header-default-framed-collapsed-top-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-bg.gif');background-color:#cbddf3}.x-nbr .x-panel-header-default-framed-collapsed-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1000404px}.x-nbr .x-panel-header-default-framed-collapsed-top-tl,.x-nbr .x-panel-header-default-framed-collapsed-top-bl,.x-nbr .x-panel-header-default-framed-collapsed-top-tr,.x-nbr .x-panel-header-default-framed-collapsed-top-br,.x-nbr .x-panel-header-default-framed-collapsed-top-tc,.x-nbr .x-panel-header-default-framed-collapsed-top-bc,.x-nbr .x-panel-header-default-framed-collapsed-top-ml,.x-nbr .x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-corners.gif')}.x-nbr .x-panel-header-default-framed-collapsed-top-ml,.x-nbr .x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-sides.gif');background-position:0 0}.x-nbr .x-panel-header-default-framed-collapsed-top-mc{padding:0 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-nlg .x-panel-header-default-framed-collapsed-right-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-bg.gif');background-color:#cbddf3}.x-nbr .x-panel-header-default-framed-collapsed-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1100404px}.x-nbr .x-panel-header-default-framed-collapsed-right-tl,.x-nbr .x-panel-header-default-framed-collapsed-right-bl,.x-nbr .x-panel-header-default-framed-collapsed-right-tr,.x-nbr .x-panel-header-default-framed-collapsed-right-br,.x-nbr .x-panel-header-default-framed-collapsed-right-tc,.x-nbr .x-panel-header-default-framed-collapsed-right-bc,.x-nbr .x-panel-header-default-framed-collapsed-right-ml,.x-nbr .x-panel-header-default-framed-collapsed-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-corners.gif')}.x-nbr .x-panel-header-default-framed-collapsed-right-tc,.x-nbr .x-panel-header-default-framed-collapsed-right-bc{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-nbr .x-panel-header-default-framed-collapsed-right-mc{padding:2px 1px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-bottom{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-nlg .x-panel-header-default-framed-collapsed-bottom-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif');background-color:#cbddf3}.x-nbr .x-panel-header-default-framed-collapsed-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1000404px}.x-nbr .x-panel-header-default-framed-collapsed-bottom-tl,.x-nbr .x-panel-header-default-framed-collapsed-bottom-bl,.x-nbr .x-panel-header-default-framed-collapsed-bottom-tr,.x-nbr .x-panel-header-default-framed-collapsed-bottom-br,.x-nbr .x-panel-header-default-framed-collapsed-bottom-tc,.x-nbr .x-panel-header-default-framed-collapsed-bottom-bc,.x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,.x-nbr .x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif')}.x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,.x-nbr .x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif');background-position:0 0}.x-nbr .x-panel-header-default-framed-collapsed-bottom-mc{padding:0 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-nlg .x-panel-header-default-framed-collapsed-left-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-bg.gif');background-color:#cbddf3}.x-nbr .x-panel-header-default-framed-collapsed-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1100404px}.x-nbr .x-panel-header-default-framed-collapsed-left-tl,.x-nbr .x-panel-header-default-framed-collapsed-left-bl,.x-nbr .x-panel-header-default-framed-collapsed-left-tr,.x-nbr .x-panel-header-default-framed-collapsed-left-br,.x-nbr .x-panel-header-default-framed-collapsed-left-tc,.x-nbr .x-panel-header-default-framed-collapsed-left-bc,.x-nbr .x-panel-header-default-framed-collapsed-left-ml,.x-nbr .x-panel-header-default-framed-collapsed-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-corners.gif')}.x-nbr .x-panel-header-default-framed-collapsed-left-tc,.x-nbr .x-panel-header-default-framed-collapsed-left-bc{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-nbr .x-panel-header-default-framed-collapsed-left-mc{padding:2px 1px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl{position:relative;right:0}.x-panel-header-default-framed-right-tc,.x-panel-header-default-framed-right-mc,.x-panel-header-default-framed-right-bc{background-position:right 0}.x-panel-header-default-framed-bottom-tc,.x-panel-header-default-framed-bottom-mc,.x-panel-header-default-framed-bottom-bc{background-position:0 bottom}.x-panel-header-plain,.x-panel-body-plain{border:0;padding:0}.x-tip{position:absolute;overflow:visible;border-color:#8eaace}.x-tip .x-tip-header .x-box-item{padding:3px 3px 0}.x-tip .x-tip-header .x-tool{padding:0 1px 0 0!important}.x-tip{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:#e9f2ff}.x-nlg .x-tip-mc{background-color:#e9f2ff}.x-nbr .x-tip{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-tip-tl,.x-nbr .x-tip-bl,.x-nbr .x-tip-tr,.x-nbr .x-tip-br,.x-nbr .x-tip-tc,.x-nbr .x-tip-bc,.x-nbr .x-tip-ml,.x-nbr .x-tip-mr{zoom:1;background-image:url('../../resources/themes/images/default/tip/tip-corners.gif')}.x-nbr .x-tip-ml,.x-nbr .x-tip-mr{zoom:1;background-image:url('../../resources/themes/images/default/tip/tip-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-tip-mc{padding:0}.x-strict .x-ie7 .x-tip-tl,.x-strict .x-ie7 .x-tip-bl{position:relative;right:0}.x-tip-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;color:#444;font-size:11px;font-weight:bold}.x-tip-header-draggable .x-tip-header-text{cursor:move}.x-tip-body,.x-form-invalid-tip-body{overflow:hidden;position:relative;padding:3px}.x-tip-header,.x-tip-body,.x-form-invalid-tip-body{color:#444;font-size:11px;font-weight:normal}.x-tip-header a,.x-tip-body a,.x-form-invalid-tip-body a{color:#2a2a2a}.x-tip-anchor{position:absolute;overflow:hidden;height:0;width:0;border-style:solid;border-width:5px;border-color:#8eaace;zoom:1}.x-border-box .x-tip-anchor{width:10px;height:10px}.x-tip-anchor-top{border-top-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-bottom{border-bottom-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-bottom-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-left{border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-left-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-right{border-top-color:transparent;border-bottom-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-form-invalid-tip{border-color:#a1311f;-moz-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-webkit-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-o-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset}.x-form-invalid-tip-body{background:1px 1px no-repeat;background-image:url('../../resources/themes/images/default/form/exclamation.gif');padding-left:22px}.x-form-invalid-tip-body li{margin-bottom:4px}.x-form-invalid-tip-body li.last{margin-bottom:0}.x-form-invalid-tip-default{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:white}.x-nlg .x-form-invalid-tip-default-mc{background-color:white}.x-nbr .x-form-invalid-tip-default{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100505px 1000505px}.x-nbr .x-form-invalid-tip-default-tl,.x-nbr .x-form-invalid-tip-default-bl,.x-nbr .x-form-invalid-tip-default-tr,.x-nbr .x-form-invalid-tip-default-br,.x-nbr .x-form-invalid-tip-default-tc,.x-nbr .x-form-invalid-tip-default-bc,.x-nbr .x-form-invalid-tip-default-ml,.x-nbr .x-form-invalid-tip-default-mr{zoom:1;background-image:url('../../resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-corners.gif')}.x-nbr .x-form-invalid-tip-default-ml,.x-nbr .x-form-invalid-tip-default-mr{zoom:1;background-image:url('../../resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-form-invalid-tip-default-mc{padding:0}.x-strict .x-ie7 .x-form-invalid-tip-default-tl,.x-strict .x-ie7 .x-form-invalid-tip-default-bl{position:relative;right:0}.x-slider{zoom:1}.x-slider-inner{position:relative;left:0;top:0;overflow:visible;zoom:1}.x-slider-focus{position:absolute;left:0;top:0;width:1px;height:1px;line-height:1px;font-size:1px;-moz-outline:0 none;outline:0 none;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;display:block;overflow:hidden}.x-slider-horz{padding-left:7px;background:transparent no-repeat 0 -24px;width:100%}.x-slider-horz .x-slider-end{padding-right:7px;zoom:1;background:transparent no-repeat right -46px}.x-slider-horz .x-slider-inner{background:transparent repeat-x 0 -2px;height:18px}.x-slider-horz .x-slider-thumb{width:14px;height:15px;margin-left:-7px;position:absolute;left:0;top:1px;background:transparent no-repeat 0 0}.x-slider-horz .x-slider-thumb-over{background-position:-14px -15px}.x-slider-horz .x-slider-thumb-drag{background-position:-28px -30px}.x-slider-vert{padding-top:7px;background:transparent no-repeat -44px 0}.x-slider-vert .x-slider-end{padding-bottom:7px;zoom:1;background:transparent no-repeat -22px bottom;width:22px}.x-slider-vert .x-slider-inner{background:transparent repeat-y 0 0;width:22px}.x-slider-vert .x-slider-thumb{width:15px;height:14px;margin-bottom:-7px;position:absolute;left:3px;bottom:0;background:transparent no-repeat 0 0}.x-slider-vert .x-slider-thumb-over{background-position:-15px -14px}.x-slider-vert .x-slider-thumb-drag{background-position:-30px -28px}.x-slider-horz,.x-slider-horz .x-slider-end,.x-slider-horz .x-slider-inner{background-image:url('../../resources/themes/images/default/slider/slider-bg.png')}.x-slider-horz .x-slider-thumb{background-image:url('../../resources/themes/images/default/slider/slider-thumb.png')}.x-slider-vert,.x-slider-vert .x-slider-end,.x-slider-vert .x-slider-inner{background-image:url('../../resources/themes/images/default/slider/slider-v-bg.png')}.x-slider-vert .x-slider-thumb{background-image:url('../../resources/themes/images/default/slider/slider-v-thumb.png')}.x-ie6 .x-slider-horz,.x-ie6 .x-slider-horz .x-slider-end,.x-ie6 .x-slider-horz .x-slider-inner{background-image:url('../../resources/themes/images/default/slider/slider-bg.gif')}.x-ie6 .x-slider-horz .x-slider-thumb{background-image:url('../../resources/themes/images/default/slider/slider-thumb.gif')}.x-ie6 .x-slider-vert,.x-ie6 .x-slider-vert .x-slider-end,.x-ie6 .x-slider-vert .x-slider-inner{background-image:url('../../resources/themes/images/default/slider/slider-v-bg.gif')}.x-ie6 .x-slider-vert .x-slider-thumb{background-image:url('../../resources/themes/images/default/slider/slider-v-thumb.gif')}.x-progress{position:relative;border-width:1px;border-style:solid;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;overflow:hidden;height:20px}.x-progress-bar{height:18px;overflow:hidden;position:absolute;width:0;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;border-right:1px solid;border-top:1px solid}.x-progress-text{overflow:hidden;position:absolute;padding:0 5px;height:18px;font-weight:bold;font-size:11px;line-height:16px;text-align:center}.x-progress-text-back{padding-top:1px}.x-strict .x-ie7m .x-progress{height:18px}.x-progress-default{border-color:#6594cf}.x-progress-default .x-progress-bar{border-right-color:#6594cf;border-top-color:#c6d8ed;background-image:none;background-color:#73a3e0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b2ccee),color-stop(50%,#88b1e5),color-stop(51%,#73a3e0),color-stop(100%,#5e96db));background-image:-webkit-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-moz-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-o-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-ms-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db)}.x-progress-default .x-progress-text{color:white}.x-progress-default .x-progress-text-back{color:#396295}.x-nlg .x-progress-default .x-progress-bar{background:repeat-x;background-image:url('../../resources/themes/images/default/progress/progress-default-bg.gif')}.x-toolbar{font-size:11px;border:1px solid;padding:2px 0 2px 2px}.x-toolbar .x-form-item-label{font-size:11px;line-height:15px}.x-toolbar .x-toolbar-item{margin:0 2px 0 0}.x-toolbar .x-toolbar-text{margin-left:4px;margin-right:6px;white-space:nowrap;color:#4c4c4c;line-height:16px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;font-weight:normal}.x-toolbar .x-toolbar-separator{display:block;font-size:1px;overflow:hidden;cursor:default;border:0}.x-toolbar .x-toolbar-separator-horizontal{margin:0 3px 0 2px;height:14px;width:0;border-left:1px solid #98c8ff;border-right:1px solid white}.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal{width:2px}.x-toolbar-footer{background:transparent;border:0 none;margin-top:3px;padding:2px 0 2px 6px}.x-toolbar-footer .x-box-inner{border-width:0}.x-toolbar-footer .x-toolbar-item{margin:0 6px 0 0}.x-toolbar-vertical{padding:2px 2px 0 2px}.x-toolbar-vertical .x-toolbar-item{margin:0 0 2px 0}.x-toolbar-vertical .x-toolbar-text{margin-top:4px;margin-bottom:6px}.x-toolbar-vertical .x-toolbar-separator-vertical{margin:2px 5px 3px 5px;height:0;width:10px;line-height:0;border-top:1px solid #98c8ff;border-bottom:1px solid white}.x-toolbar-scroller{padding-left:0}.x-toolbar-spacer{width:2px}.x-toolbar-more-icon{background-image:url('../../resources/themes/images/default/toolbar/more.gif')!important;background-position:2px center!important;background-repeat:no-repeat}.x-toolbar-default{border-color:#99bce8;background-image:none;background-color:#d3e1f1;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dfe9f5),color-stop(100%,#d3e1f1));background-image:-webkit-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-moz-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-o-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-ms-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:linear-gradient(top,#dfe9f5,#d3e1f1)}.x-nlg .x-toolbar-default{background-image:url('../../resources/themes/images/default/toolbar/toolbar-default-bg.gif')!important;background-repeat:repeat-x}.x-toolbar-plain{border:0}.x-window{outline:0;overflow:hidden}.x-window .x-window-wrap{position:relative}.x-window-body{position:relative;border-style:solid;overflow:hidden}.x-window-maximized .x-window-wrap .x-window-header{-moz-border-radius:0!important;-webkit-border-radius:0!important;-o-border-radius:0!important;-ms-border-radius:0!important;-khtml-border-radius:0!important;border-radius:0!important}.x-window-header-top{margin-bottom:-2px}.x-window-header-body-horizontal{margin-top:-1px}.x-window-header-bottom{margin-top:-1px;margin-bottom:-1px}.x-window-header-left{margin-right:-1px}.x-window-header-right{margin-left:-1px}.x-window-header-vertical .x-surface{padding-left:1px}.x-window-collapsed .x-window-header-vertical{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px}.x-window-collapsed .x-window-header-horizontal{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px}.x-window-collapsed .x-window-header-left{padding-right:5px!important;margin-right:0}.x-window-collapsed .x-window-header-right{padding-left:5px!important;margin-left:0}.x-window-collapsed .x-window-header-top{padding-bottom:5px!important;margin-bottom:-1px}.x-window-collapsed .x-window-header-bottom{padding-top:5px!important;margin-top:0}.x-window-header-left .x-vml-base,.x-window-header-right .x-vml-base{left:-3px!important}.x-opera .x-window-header-vertical .x-surface,.x-strict .x-ie9 .x-window-header-vertical .x-surface{padding-left:2px}.x-window-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-window-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;white-space:nowrap}.x-window-default{border-color:#a2b1c5;-moz-border-radius:5px 5px;-webkit-border-radius:5px 5px;-o-border-radius:5px 5px;-ms-border-radius:5px 5px;-khtml-border-radius:5px 5px;border-radius:5px 5px;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-default{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-default-mc{background-color:#ced9e7}.x-nbr .x-window-default{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-nbr .x-window-default-tl,.x-nbr .x-window-default-bl,.x-nbr .x-window-default-tr,.x-nbr .x-window-default-br,.x-nbr .x-window-default-tc,.x-nbr .x-window-default-bc,.x-nbr .x-window-default-ml,.x-nbr .x-window-default-mr{zoom:1;background-image:url('../../resources/themes/images/default/window/window-default-corners.gif')}.x-nbr .x-window-default-ml,.x-nbr .x-window-default-mr{zoom:1;background-image:url('../../resources/themes/images/default/window/window-default-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-default-mc{padding:0}.x-strict .x-ie7 .x-window-default-tl,.x-strict .x-ie7 .x-window-default-bl{position:relative;right:0}.x-window-body-default{border-color:#99bbe8;border-width:1px;background:#dfe8f6;color:black}.x-window-header-default{font-size:11px;border-color:#a2b1c5;zoom:1}.x-window-header-text-default{color:#04468c;font-weight:bold;line-height:17px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px}.x-window-header-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 0 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-header-default-top-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000000px}.x-nbr .x-window-header-default-top-tl,.x-nbr .x-window-header-default-top-bl,.x-nbr .x-window-header-default-top-tr,.x-nbr .x-window-header-default-top-br,.x-nbr .x-window-header-default-top-tc,.x-nbr .x-window-header-default-top-bc,.x-nbr .x-window-header-default-top-ml,.x-nbr .x-window-header-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-top-corners.gif')}.x-nbr .x-window-header-default-top-ml,.x-nbr .x-window-header-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-top-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-top-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-top-tl,.x-strict .x-ie7 .x-window-header-default-top-bl{position:relative;right:0}.x-window-header-default-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 0;border-width:1px 1px 1px 0;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-header-default-right-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000005px 1000500px}.x-nbr .x-window-header-default-right-tl,.x-nbr .x-window-header-default-right-bl,.x-nbr .x-window-header-default-right-tr,.x-nbr .x-window-header-default-right-br,.x-nbr .x-window-header-default-right-tc,.x-nbr .x-window-header-default-right-bc,.x-nbr .x-window-header-default-right-ml,.x-nbr .x-window-header-default-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-right-corners.gif')}.x-nbr .x-window-header-default-right-ml,.x-nbr .x-window-header-default-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-right-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-right-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-right-tl,.x-strict .x-ie7 .x-window-header-default-right-bl{position:relative;right:0}.x-window-header-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:0 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-header-default-bottom-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000000px 1000505px}.x-nbr .x-window-header-default-bottom-tl,.x-nbr .x-window-header-default-bottom-bl,.x-nbr .x-window-header-default-bottom-tr,.x-nbr .x-window-header-default-bottom-br,.x-nbr .x-window-header-default-bottom-tc,.x-nbr .x-window-header-default-bottom-bc,.x-nbr .x-window-header-default-bottom-ml,.x-nbr .x-window-header-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-bottom-corners.gif')}.x-nbr .x-window-header-default-bottom-ml,.x-nbr .x-window-header-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-bottom-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-bottom-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-bottom-tl,.x-strict .x-ie7 .x-window-header-default-bottom-bl{position:relative;right:0}.x-window-header-default-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 0 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-header-default-left-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000500px 1000005px}.x-nbr .x-window-header-default-left-tl,.x-nbr .x-window-header-default-left-bl,.x-nbr .x-window-header-default-left-tr,.x-nbr .x-window-header-default-left-br,.x-nbr .x-window-header-default-left-tc,.x-nbr .x-window-header-default-left-bc,.x-nbr .x-window-header-default-left-ml,.x-nbr .x-window-header-default-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-left-corners.gif')}.x-nbr .x-window-header-default-left-ml,.x-nbr .x-window-header-default-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-left-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-left-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-left-tl,.x-strict .x-ie7 .x-window-header-default-left-bl{position:relative;right:0}.x-window-header-default-collapsed-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-header-default-collapsed-top-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-collapsed-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-nbr .x-window-header-default-collapsed-top-tl,.x-nbr .x-window-header-default-collapsed-top-bl,.x-nbr .x-window-header-default-collapsed-top-tr,.x-nbr .x-window-header-default-collapsed-top-br,.x-nbr .x-window-header-default-collapsed-top-tc,.x-nbr .x-window-header-default-collapsed-top-bc,.x-nbr .x-window-header-default-collapsed-top-ml,.x-nbr .x-window-header-default-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-top-corners.gif')}.x-nbr .x-window-header-default-collapsed-top-ml,.x-nbr .x-window-header-default-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-top-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-collapsed-top-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl{position:relative;right:0}.x-window-header-default-collapsed-right{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-header-default-collapsed-right-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-collapsed-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-nbr .x-window-header-default-collapsed-right-tl,.x-nbr .x-window-header-default-collapsed-right-bl,.x-nbr .x-window-header-default-collapsed-right-tr,.x-nbr .x-window-header-default-collapsed-right-br,.x-nbr .x-window-header-default-collapsed-right-tc,.x-nbr .x-window-header-default-collapsed-right-bc,.x-nbr .x-window-header-default-collapsed-right-ml,.x-nbr .x-window-header-default-collapsed-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-right-corners.gif')}.x-nbr .x-window-header-default-collapsed-right-ml,.x-nbr .x-window-header-default-collapsed-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-right-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-collapsed-right-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl{position:relative;right:0}.x-window-header-default-collapsed-bottom{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-header-default-collapsed-bottom-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-collapsed-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-nbr .x-window-header-default-collapsed-bottom-tl,.x-nbr .x-window-header-default-collapsed-bottom-bl,.x-nbr .x-window-header-default-collapsed-bottom-tr,.x-nbr .x-window-header-default-collapsed-bottom-br,.x-nbr .x-window-header-default-collapsed-bottom-tc,.x-nbr .x-window-header-default-collapsed-bottom-bc,.x-nbr .x-window-header-default-collapsed-bottom-ml,.x-nbr .x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-bottom-corners.gif')}.x-nbr .x-window-header-default-collapsed-bottom-ml,.x-nbr .x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-bottom-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-collapsed-bottom-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl{position:relative;right:0}.x-window-header-default-collapsed-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-header-default-collapsed-left-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-collapsed-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-nbr .x-window-header-default-collapsed-left-tl,.x-nbr .x-window-header-default-collapsed-left-bl,.x-nbr .x-window-header-default-collapsed-left-tr,.x-nbr .x-window-header-default-collapsed-left-br,.x-nbr .x-window-header-default-collapsed-left-tc,.x-nbr .x-window-header-default-collapsed-left-bc,.x-nbr .x-window-header-default-collapsed-left-ml,.x-nbr .x-window-header-default-collapsed-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-left-corners.gif')}.x-nbr .x-window-header-default-collapsed-left-ml,.x-nbr .x-window-header-default-collapsed-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-left-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-collapsed-left-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl{position:relative;right:0}.x-window-header-default-top{-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-header-default-right{-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset}.x-window-header-default-bottom{-moz-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-header-default-left{-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-body-plain{background:transparent}.x-message-box .x-window-body{background-color:#ced9e7;border:0}.x-message-box .x-progress-wrap{margin-top:4px}.x-message-box-icon{width:47px;height:32px}.x-message-box-info,.x-message-box-warning,.x-message-box-question,.x-message-box-error{background:transparent no-repeat top left}.x-message-box .x-msg-box-wait{background-image:url('../../resources/themes/images/default/shared/blue-loading.gif')}.x-message-box-info{background-image:url('../../resources/themes/images/default/shared/icon-info.gif')}.x-message-box-warning{background-image:url('../../resources/themes/images/default/shared/icon-warning.gif')}.x-message-box-question{background-image:url('../../resources/themes/images/default/shared/icon-question.gif')}.x-message-box-error{background-image:url('../../resources/themes/images/default/shared/icon-error.gif')}.x-tab-bar{position:relative;background-color:transparent;background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(top,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(top,#dde8f5,#cbdbef);background-image:-o-linear-gradient(top,#dde8f5,#cbdbef);background-image:-ms-linear-gradient(top,#dde8f5,#cbdbef);background-image:linear-gradient(top,#dde8f5,#cbdbef);font-size:11px}.x-nlg .x-tab-bar{background-image:url('../../resources/themes/images/default/tab-bar/tab-bar-default-bg.gif')}.x-tab-bar-default-plain,.x-nlg .x-tab-bar-default-plain{background:transparent none}.x-tab-bar-body{border-style:solid;border-color:#99bce8;position:relative;z-index:2;zoom:1}.x-tab-bar-top .x-tab-bar-body{height:20px;border-width:1px 1px 0;padding:1px 0 3px}.x-tab-bar-top .x-tab-bar-strip{top:22px;border-width:1px 1px 0;height:2px}.x-border-box .x-tab-bar-top .x-tab-bar-body{height:25px}.x-border-box .x-tab-bar-top .x-tab-bar-strip{height:3px}.x-tab-bar-top .x-tab-bar-body-default-plain{height:20px;border-width:0;padding:0 0 2px}.x-tab-bar-top .x-tab-bar-strip-default-plain{top:20px;border-width:1px 1px 0 1px;height:2px}.x-border-box .x-tab-bar-top .x-tab-bar-body-default-plain{height:22px}.x-border-box .x-tab-bar-top .x-tab-bar-strip-default-plain{height:3px}.x-tab-bar-bottom .x-tab-bar-body{height:20px;border-width:0 1px 1px;padding:3px 0 1px}.x-tab-bar-bottom .x-tab-bar-body .x-box-inner{position:relative;top:-1px}.x-tab-bar-bottom .x-tab-bar-body .x-box-scroller,.x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-left,.x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-right{height:22px}.x-tab-bar-bottom .x-tab-bar-strip{top:0;border-width:0 1px 1px 1px;height:2px}.x-border-box .x-tab-bar-bottom .x-tab-bar-body{height:25px}.x-border-box .x-tab-bar-bottom .x-tab-bar-strip{height:3px}.x-tab-bar-bottom .x-tab-bar-body-default-plain{height:20px;border-width:0;padding:3px 0 0}.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-inner{position:relative;top:-1px}.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller,.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-left,.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-right{height:21px}.x-tab-bar-bottom .x-tab-bar-strip-default-plain{top:0;border-width:0 1px 1px 1px;height:2px}.x-border-box .x-tab-bar-bottom .x-tab-bar-body-default-plain{height:23px}.x-border-box .x-tab-bar-bottom .x-tab-bar-strip-default-plain{height:3px}.x-tab-bar-strip-default,.x-tab-bar-strip-default-plain{font-size:0;line-height:0;position:absolute;z-index:1;border-style:solid;overflow:hidden;border-color:#99bce8;background-color:#deecfd;zoom:1}.x-tab-default-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 3px 0 3px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-ms-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x-nlg .x-tab-default-top-mc{background-image:url('../../resources/themes/images/default/tab/tab-default-top-bg.gif');background-color:#deecfd}.x-nbr .x-tab-default-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100404px 1000000px}.x-nbr .x-tab-default-top-tl,.x-nbr .x-tab-default-top-bl,.x-nbr .x-tab-default-top-tr,.x-nbr .x-tab-default-top-br,.x-nbr .x-tab-default-top-tc,.x-nbr .x-tab-default-top-bc,.x-nbr .x-tab-default-top-ml,.x-nbr .x-tab-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/tab/tab-default-top-corners.gif')}.x-nbr .x-tab-default-top-ml,.x-nbr .x-tab-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/tab/tab-default-top-sides.gif');background-position:0 0}.x-nbr .x-tab-default-top-mc{padding:0}.x-strict .x-ie7 .x-tab-default-top-tl,.x-strict .x-ie7 .x-tab-default-top-bl{position:relative;right:0}.x-tab-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:0 3px 3px 3px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-ms-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x-nlg .x-tab-default-bottom-mc{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif');background-color:#deecfd}.x-nbr .x-tab-default-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100000px 1000404px}.x-nbr .x-tab-default-bottom-tl,.x-nbr .x-tab-default-bottom-bl,.x-nbr .x-tab-default-bottom-tr,.x-nbr .x-tab-default-bottom-br,.x-nbr .x-tab-default-bottom-tc,.x-nbr .x-tab-default-bottom-bc,.x-nbr .x-tab-default-bottom-ml,.x-nbr .x-tab-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-corners.gif')}.x-nbr .x-tab-default-bottom-ml,.x-nbr .x-tab-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-sides.gif');background-position:0 0}.x-nbr .x-tab-default-bottom-mc{padding:0}.x-strict .x-ie7 .x-tab-default-bottom-tl,.x-strict .x-ie7 .x-tab-default-bottom-bl{position:relative;right:0}.x-tab{z-index:1;margin:0 0 0 2px;display:inline-block;zoom:1;*display:inline;white-space:nowrap;height:20px;border-color:#8db3e3;cursor:pointer;cursor:hand}.x-tab button{cursor:pointer;cursor:hand}.x-tab em{display:block;padding:0 6px;line-height:1px}.x-tab button{background:0;border:0;padding:0;margin:0;-webkit-appearance:none;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;color:#416da3;outline:0 none;overflow-x:visible}.x-tab button::-moz-focus-inner{border:0;padding:0}.x-tab button .x-tab-inner{background-color:transparent;background-repeat:no-repeat;background-position:0 -2px;display:block;text-align:center;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden}.x-tab img{display:none}.x-border-box .x-tab-default-top{height:21px}.x-border-box .x-tab-default-bottom{height:21px}* html .x-ie .x-tab button{width:1px}.x-strict .x-ie6 .x-tab .x-frame-mc,.x-strict .x-ie7 .x-tab .x-frame-mc{height:100%}.x-ie .x-tab-active button:active{position:relative;top:-1px;left:-1px}.x-tab-default-top{-moz-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-webkit-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-o-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;border-bottom:1px solid #99bce8!important}.x-tab-default-top em{padding-bottom:3px}.x-tab-default-top button,.x-tab-default-top .x-tab-inner{height:13px;line-height:13px}.x-safari4 .x-tab-default-top .x-tab-inner,.x-safari5_0 .x-tab-default-top .x-tab-inner{line-height:11px}.x-nbr .x-tab-default-top{border-bottom-width:1px!important}.x-tab-default-top-active{border-bottom-color:#deecfd!important}.x-tab-default-bottom{-moz-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-webkit-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-o-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;border-top:1px solid #99bce8!important;-moz-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-webkit-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-o-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x-tab-default-bottom em{padding-top:3px}.x-tab-default-bottom button,.x-tab-default-bottom .x-tab-inner{height:13px;line-height:13px}.x-nbr .x-tab-default-bottom{border-top-width:1px!important}.x-tab-default-bottom-active{border-top-color:#deecfd!important}.x-tab-default-disabled{cursor:default;border-color:#bbd2ef;background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-ms-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:linear-gradient(top,#e1ecfa,#ecf4fe)}.x-tab-default-disabled button{color:#c3b3b3!important}.x-tab-icon-text-left .x-tab-inner{padding-left:20px}.x-tab button{position:relative}.x-tab-icon{position:absolute;background-repeat:no-repeat;background-position:0 -1px;top:0;left:0;right:auto;bottom:0;width:18px;height:18px}.x-strict .x-ie8 .x-tab button,.x-strict .x-ie9 .x-tab button{overflow-y:visible}.x-tab-default-disabled .x-tab-icon{filter:alpha(opacity=50);opacity:.5}.x-tab-noicon .x-tab-icon{display:none}.x-tab-top-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-ms-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x-tab-bottom-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-ms-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x-tab-active{z-index:3}.x-tab-active button{color:#15498b}.x-tab-top-active{background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-ms-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%)}.x-tab-bottom-active{background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-ms-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%)}.x-tab-disabled{border-color:#bbd2ef}.x-tab-disabled button{color:#c3b3b3}.x-tab-top-disabled{background-image:none;background:transparent;background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-ms-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:linear-gradient(top,#e1ecfa,#ecf4fe)}.x-tab-bottom-disabled{background-image:none;background:transparent;background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-ms-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:linear-gradient(bottom,#e1ecfa,#ecf4fe)}.x-nlg .x-tab-top{background-image:url('../../resources/themes/images/default/tab/tab-default-top-bg.gif')}.x-nlg .x-tab-bottom{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif')}.x-nlg .x-tab-top-over{background-image:url('../../resources/themes/images/default/tab/tab-default-top-over-bg.gif')}.x-nlg .x-tab-bottom-over{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-over-bg.gif')}.x-nlg .x-tab-top-active{background-image:url('../../resources/themes/images/default/tab/tab-default-top-active-bg.gif')}.x-nlg .x-tab-bottom-active{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-active-bg.gif')}.x-nlg .x-tab-top-disabled{background-image:url('../../resources/themes/images/default/tab/tab-default-top-disabled-bg.gif')!important}.x-nlg .x-tab-bottom-disabled{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif')!important}.x-tab-closable em{padding-right:14px}.x-tab-close-btn{position:absolute;top:2px;right:2px;width:11px;height:11px;font-size:0;line-height:0;text-indent:-999px;background:no-repeat;background-image:url('../../resources/themes/images/default/tab/tab-default-close.gif');filter:alpha(opacity=60);opacity:.6}.x-nbr .x-tab-close-btn{top:0;right:0}a.x-tab-close-btn:hover{filter:alpha(opacity=100);opacity:1}.x-tab-default-disabled a.x-tab-close-btn{filter:alpha(opacity=30);opacity:.3}.x-nbr .x-tab-top-over .x-frame-tl,.x-nbr .x-tab-top-over .x-frame-bl,.x-nbr .x-tab-top-over .x-frame-tr,.x-nbr .x-tab-top-over .x-frame-br,.x-nbr .x-tab-top-over .x-frame-tc,.x-nbr .x-tab-top-over .x-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-top-over-corners.gif')}.x-nbr .x-tab-top-over .x-frame-ml,.x-nbr .x-tab-top-over .x-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-top-over-sides.gif')}.x-nbr .x-tab-top-over .x-frame-mc{background-color:#e8f2ff;background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-top-over-bg.gif')}.x-nbr .x-tab-bottom-over .x-frame-tl,.x-nbr .x-tab-bottom-over .x-frame-bl,.x-nbr .x-tab-bottom-over .x-frame-tr,.x-nbr .x-tab-bottom-over .x-frame-br,.x-nbr .x-tab-bottom-over .x-frame-tc,.x-nbr .x-tab-bottom-over .x-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-over-corners.gif')}.x-nbr .x-tab-bottom-over .x-frame-ml,.x-nbr .x-tab-bottom-over .x-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-over-sides.gif')}.x-nbr .x-tab-bottom-over .x-frame-mc{background-color:#e8f2ff;background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-over-bg.gif')}.x-nbr .x-tab-top-active .x-frame-tl,.x-nbr .x-tab-top-active .x-frame-bl,.x-nbr .x-tab-top-active .x-frame-tr,.x-nbr .x-tab-top-active .x-frame-br,.x-nbr .x-tab-top-active .x-frame-tc,.x-nbr .x-tab-top-active .x-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-top-active-corners.gif')}.x-nbr .x-tab-top-active .x-frame-ml,.x-nbr .x-tab-top-active .x-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-top-active-sides.gif')}.x-nbr .x-tab-top-active .x-frame-mc{background-color:#deecfd;background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-top-active-bg.gif')}.x-nbr .x-tab-bottom-active .x-frame-tl,.x-nbr .x-tab-bottom-active .x-frame-bl,.x-nbr .x-tab-bottom-active .x-frame-tr,.x-nbr .x-tab-bottom-active .x-frame-br,.x-nbr .x-tab-bottom-active .x-frame-tc,.x-nbr .x-tab-bottom-active .x-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-active-corners.gif')}.x-nbr .x-tab-bottom-active .x-frame-ml,.x-nbr .x-tab-bottom-active .x-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-active-sides.gif')}.x-nbr .x-tab-bottom-active .x-frame-mc{background-color:#deecfd;background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-active-bg.gif')}.x-nbr .x-tab-top-disabled .x-frame-tl,.x-nbr .x-tab-top-disabled .x-frame-bl,.x-nbr .x-tab-top-disabled .x-frame-tr,.x-nbr .x-tab-top-disabled .x-frame-br,.x-nbr .x-tab-top-disabled .x-frame-tc,.x-nbr .x-tab-top-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-top-disabled-corners.gif')}.x-nbr .x-tab-top-disabled .x-frame-ml,.x-nbr .x-tab-top-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-top-disabled-sides.gif')}.x-nbr .x-tab-top-disabled .x-frame-mc{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-top-disabled-bg.gif')}.x-nbr .x-tab-bottom-disabled .x-frame-tl,.x-nbr .x-tab-bottom-disabled .x-frame-bl,.x-nbr .x-tab-bottom-disabled .x-frame-tr,.x-nbr .x-tab-bottom-disabled .x-frame-br,.x-nbr .x-tab-bottom-disabled .x-frame-tc,.x-nbr .x-tab-bottom-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-corners.gif')}.x-nbr .x-tab-bottom-disabled .x-frame-ml,.x-nbr .x-tab-bottom-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-sides.gif')}.x-nbr .x-tab-bottom-disabled .x-frame-mc{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif')}.x-autowidth-table table.x-grid-table{table-layout:auto;width:auto!important}.x-tree-no-lines .x-tree-elbow{background-color:transparent}.x-tree-no-lines .x-tree-elbow-end{background-color:transparent}.x-tree-no-lines .x-tree-elbow-line{background-color:transparent}.x-tree-arrows .x-tree-elbow-plus{background:transparent no-repeat 0 0}.x-tree-arrows .x-tree-elbow-end-plus{background:transparent no-repeat 0 0}.x-tree-arrows .x-tree-elbow-end-minus{background:transparent no-repeat -16px 0}.x-tree-arrows .x-tree-elbow-minus{background:transparent no-repeat -16px 0}.x-tree-arrows .x-tree-elbow{background-color:transparent!important}.x-tree-arrows .x-tree-elbow-end{background-color:transparent!important}.x-tree-arrows .x-tree-elbow-line{background-color:transparent!important}.x-tree-arrows .x-tree-expander-over .x-tree-elbow-plus,.x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-plus{background-position:-32px 0}.x-tree-arrows .x-tree-expander-over .x-tree-elbow-minus,.x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-minus{background-position:-48px 0}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-plus,.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-position:-16px 0}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-plus,.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-end-plus{background-position:-48px 0}.x-tree-elbow-plus,.x-tree-elbow-minus,.x-tree-elbow-end-plus,.x-tree-elbow-end-minus{cursor:pointer}.x-tree-lines .x-tree-elbow{background-image:url('../../resources/themes/images/default/tree/elbow.gif')}.x-tree-lines .x-tree-elbow-end{background-image:url('../../resources/themes/images/default/tree/elbow-end.gif')}.x-tree-lines .x-tree-elbow-plus{background-image:url('../../resources/themes/images/default/tree/elbow-plus.gif')}.x-tree-lines .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-end-plus.gif')}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus{background-image:url('../../resources/themes/images/default/tree/elbow-minus.gif')}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-end-minus.gif')}.x-tree-lines .x-tree-elbow-line{background-image:url('../../resources/themes/images/default/tree/elbow-line.gif')}.x-tree-no-lines .x-tree-elbow-plus,.x-tree-no-lines .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-plus-nl.gif')}.x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-plus,.x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-end-minus-nl.gif')}.x-tree-arrows .x-tree-elbow-plus,.x-tree-arrows .x-tree-elbow-minus,.x-tree-arrows .x-tree-elbow-end-plus,.x-tree-arrows .x-tree-elbow-end-minus{background-image:url('../../resources/themes/images/default/tree/arrows.gif')}.x-tree-icon{margin:2px 3px 0 0}.x-grid-with-row-lines .x-tree-icon{margin-top:1px}.x-tree-elbow,.x-tree-elbow-end,.x-tree-elbow-plus,.x-tree-elbow-end-plus,.x-tree-elbow-empty,.x-tree-elbow-line{height:20px;width:16px}.x-grid-with-row-lines .x-tree-elbow,.x-grid-with-row-lines .x-tree-elbow-end,.x-grid-with-row-lines .x-tree-elbow-plus,.x-grid-with-row-lines .x-tree-elbow-end-plus,.x-grid-with-row-lines .x-tree-elbow-empty,.x-grid-with-row-lines .x-tree-elbow-line{height:19px;background-position:0 -1px}.x-tree-icon-leaf{width:16px;background-image:url('../../resources/themes/images/default/tree/leaf.gif')}.x-tree-icon-parent{width:16px;background-image:url('../../resources/themes/images/default/tree/folder.gif')}.x-grid-tree-node-expanded .x-tree-icon-parent{background-image:url('../../resources/themes/images/default/tree/folder-open.gif')}.x-grid-rowbody{padding:0}.x-grid-cell-treecolumn .x-grid-cell-inner{padding:0;line-height:19px}.x-grid-with-row-lines .x-grid-cell-treecolumn .x-grid-cell-inner{line-height:17px}.x-tree-panel .x-grid-cell-inner{cursor:pointer}.x-tree-panel .x-grid-cell-inner img{display:inline-block;vertical-align:top}.x-ie .x-tree-panel .x-tree-elbow,.x-ie .x-tree-panel .x-tree-elbow-end,.x-ie .x-tree-panel .x-tree-elbow-plus,.x-ie .x-tree-panel .x-tree-elbow-end-plus,.x-ie .x-tree-panel .x-tree-elbow-empty,.x-ie .x-tree-panel .x-tree-elbow-line{vertical-align:-6px}.x-grid-editor-on-text-node .x-form-text{padding-left:1px;padding-right:1px}.x-ie .x-grid-editor-on-text-node .x-form-text{padding-left:2px;padding-right:2px}.x-opera .x-grid-editor-on-text-node .x-form-text{padding-left:2px;padding-right:2px}.x-tree-checkbox{margin:4px 3px 0 0;display:inline-block;vertical-align:top;width:13px;height:13px;background:no-repeat;background-image:url('../../resources/themes/images/default/form/checkbox.gif');overflow:hidden;padding:0;border:0}.x-tree-checkbox::-moz-focus-inner{padding:0;border:0}.x-grid-with-row-lines .x-tree-checkbox{margin-top:3px}.x-tree-checkbox-checked{background-position:0 -13px}.x-tree-drop-ok-append .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-append.gif')}.x-tree-drop-ok-above .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-above.gif')}.x-tree-drop-ok-below .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-below.gif')}.x-tree-drop-ok-between .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-between.gif')}.x-grid-tree-loading .x-tree-icon{background-image:url('../../resources/themes/images/default/tree/loading.gif')}.x-tree-ddindicator{height:1px;border-width:1px 0 0;border-style:dotted;border-color:green}.x-grid-tree-loading span{font-style:italic;color:#444}.x-tree-animator-wrap{overflow:hidden}.x-surface{display:-moz-inline-box;-moz-box-orient:vertical;display:inline-block;vertical-align:middle;*vertical-align:auto;overflow:hidden}.x-surface{*display:inline}.rvml{behavior:url(#default#VML)}.x-surface tspan{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-vml-sprite{position:absolute;left:0;top:0;width:1px;height:1px}.x-vml-group{position:absolute;left:0;top:0;width:1000px;height:1000px}.x-vml-measure-span{position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;display:inline}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}svg,vml{overflow:hidden}.x-viewport,.x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;position:static}.x-dd-drag-proxy{z-index:1000000!important}.x-dd-drag-repair .x-dd-drag-ghost{filter:alpha(opacity=60);opacity:.6}.x-dd-drag-repair .x-dd-drop-icon{display:none}.x-dd-drag-ghost{filter:alpha(opacity=85);opacity:.85;padding:5px;padding-left:20px;white-space:nowrap;color:#000;font:normal 11px tahoma,arial,verdana,sans-serif;border:1px solid;border-color:#ddd #bbb #bbb #ddd;background-color:#fff}.x-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1}.x-view-selector{position:absolute;left:0;top:0;width:0;background-color:#c3daf9;border:1px dotted #39b;filter:alpha(opacity=50);opacity:.5;zoom:1}.x-dd-drop-nodrop .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/dd/drop-no.gif')}.x-dd-drop-ok .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/dd/drop-yes.gif')}.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/dd/drop-add.gif')}.x-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;zoom:1;filter:alpha(opacity=0);opacity:0;background-color:#fff}.x-collapsed .x-resizable-handle{display:none}.x-resizable-handle-east{width:6px;height:100%;right:0;top:0}.x-resizable-over .x-resizable-handle-east{cursor:e-resize}.x-resizable-handle-south{width:100%;height:6px;left:0;bottom:0}.x-resizable-over .x-resizable-handle-south{cursor:s-resize}.x-resizable-handle-west{width:6px;height:100%;left:0;top:0}.x-resizable-over .x-resizable-handle-west{cursor:w-resize}.x-resizable-handle-north{width:100%;height:6px;left:0;top:0}.x-resizable-over .x-resizable-handle-north{cursor:n-resize}.x-resizable-handle-southeast{width:6px;height:6px;right:0;bottom:0;z-index:101}.x-resizable-over .x-resizable-handle-southeast{cursor:se-resize}.x-resizable-handle-northwest{width:6px;height:6px;left:0;top:0;z-index:101}.x-resizable-over .x-resizable-handle-northwest{cursor:nw-resize}.x-resizable-handle-northeast{width:6px;height:6px;right:0;top:0;z-index:101}.x-resizable-over .x-resizable-handle-northeast{cursor:ne-resize}.x-resizable-handle-southwest{width:6px;height:6px;left:0;bottom:0;z-index:101}.x-resizable-over .x-resizable-handle-southwest{cursor:sw-resize}.x-ie .x-resizable-handle-east{margin-right:-1px}.x-ie .x-resizable-handle-south{margin-bottom:-1px}.x-resizable-over .x-resizable-handle,.x-resizable-pinned .x-resizable-handle{filter:alpha(opacity=100);opacity:1}.x-window .x-window-handle{filter:alpha(opacity=0);opacity:0}.x-window-collapsed .x-window-handle{display:none}.x-resizable-proxy{border:1px dashed #3b5a82;position:absolute;left:0;top:0;overflow:hidden;z-index:50000}.x-resizable-overlay{position:absolute;left:0;top:0;width:100%;height:100%;display:none;z-index:200000;background-color:#fff;filter:alpha(opacity=0);opacity:0}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-position:left;background-image:url('../../resources/themes/images/default/sizer/e-handle.gif')}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-north{background-position:top;background-image:url('../../resources/themes/images/default/sizer/s-handle.gif')}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-position:top left;background-image:url('../../resources/themes/images/default/sizer/se-handle.gif')}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right;background-image:url('../../resources/themes/images/default/sizer/nw-handle.gif')}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left;background-image:url('../../resources/themes/images/default/sizer/ne-handle.gif')}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-position:top right;background-image:url('../../resources/themes/images/default/sizer/sw-handle.gif')}.x-splitter .x-collapse-el{position:absolute;cursor:pointer;background-color:transparent;background-repeat:no-repeat!important}.x-layout-split-left,.x-layout-split-right{top:50%;margin-top:-17px;width:5px;height:35px}.x-layout-split-top,.x-layout-split-bottom{left:50%;width:35px;height:5px;margin-left:-17px}.x-layout-split-left{background:no-repeat top right;background-image:url('../../resources/themes/images/default/util/splitter/mini-left.gif')}.x-layout-split-right{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-right.gif')}.x-layout-split-top{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-top.gif')}.x-layout-split-bottom{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-bottom.gif')}.x-splitter-collapsed .x-layout-split-left{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-right.gif')}.x-splitter-collapsed .x-layout-split-right{background:no-repeat top right;background-image:url('../../resources/themes/images/default/util/splitter/mini-left.gif')}.x-splitter-collapsed .x-layout-split-top{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-bottom.gif')}.x-splitter-collapsed .x-layout-split-bottom{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-top.gif')}.x-splitter-horizontal{cursor:e-resize;cursor:row-resize;font-size:1px}.x-splitter-vertical{cursor:e-resize;cursor:col-resize;font-size:1px}.x-splitter-collapsed,.x-splitter-horizontal-noresize,.x-splitter-vertical-noresize{cursor:default}.x-splitter-active{z-index:4;font-size:1px;background-color:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-splitter-active .x-collapse-el{filter:alpha(opacity=30);opacity:.3}.x-proxy-el{position:absolute;background:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-docked{position:absolute!important;z-index:1}.x-docked-top{border-bottom-width:0!important}.x-docked-bottom{border-top-width:0!important}.x-docked-left{border-right-width:0!important}.x-docked-right{border-left-width:0!important}.x-docked-noborder-top{border-top-width:0!important}.x-docked-noborder-right{border-right-width:0!important}.x-docked-noborder-bottom{border-bottom-width:0!important}.x-docked-noborder-left{border-left-width:0!important}.x-box-inner{overflow:hidden;zoom:1;position:relative;left:0;top:0}.x-box-item{position:absolute!important;left:0;top:0}.x-rtl .x-box-item{right:0;left:auto}.x-box-layout-ct,.x-border-layout-ct{overflow:hidden;zoom:1}.x-border-layout-ct{background-color:#dfe8f6;position:relative}.x-overflow-hidden{overflow:hidden!important}.x-inline-children>*{display:inline-block!important}.x-abs-layout-ct{position:relative}.x-abs-layout-item{position:absolute!important}.x-fit-item{position:relative}.x-border-region-slide-in{z-index:5}.x-region-collapsed-placeholder{z-index:4}.x-accordion-hd .x-panel-header-text{color:black;font-weight:normal}.x-accordion-hd{background:#d9e7f8!important;-moz-box-shadow:inset 0 0 0 0 #d9e7f8;-webkit-box-shadow:inset 0 0 0 0 #d9e7f8;-o-box-shadow:inset 0 0 0 0 #d9e7f8;box-shadow:inset 0 0 0 0 #d9e7f8}.x-accordion-hd .x-tool-collapse-top,.x-accordion-hd .x-tool-collapse-right,.x-accordion-hd .x-tool-collapse-bottom,.x-accordion-hd .x-tool-collapse-left{background-position:0 -255px}.x-accordion-hd .x-tool-expand-top,.x-accordion-hd .x-tool-expand-right,.x-accordion-hd .x-tool-expand-bottom,.x-accordion-hd .x-tool-expand-left{background-position:0 -240px}.x-accordion-hd .x-tool-over .x-tool-collapse-top,.x-accordion-hd .x-tool-over .x-tool-collapse-right,.x-accordion-hd .x-tool-over .x-tool-collapse-bottom,.x-accordion-hd .x-tool-over .x-tool-collapse-left{background-position:-15px -255px}.x-accordion-hd .x-tool-over .x-tool-expand-top,.x-accordion-hd .x-tool-over .x-tool-expand-right,.x-accordion-hd .x-tool-over .x-tool-expand-bottom,.x-accordion-hd .x-tool-over .x-tool-expand-left{background-position:-15px -240px}.x-accordion-hd{border-width:1px 0 1px 0!important;padding:4px 5px 5px 5px;border-top-color:#f3f7fb!important}.x-accordion-body{border-width:0!important}.x-accordion-hd-sibling-expanded{border-top-color:#99bce8!important;-moz-box-shadow:inset 0 1px 0 0 #f3f7fb;-webkit-box-shadow:inset 0 1px 0 0 #f3f7fb;-o-box-shadow:inset 0 1px 0 0 #f3f7fb;box-shadow:inset 0 1px 0 0 #f3f7fb}.x-accordion-hd-last-collapsed{border-bottom-color:#d9e7f8!important}.x-frame-tl,.x-frame-tr,.x-frame-tc,.x-frame-bl,.x-frame-br,.x-frame-bc{overflow:hidden;background-repeat:no-repeat}.x-frame-tc,.x-frame-bc{background-repeat:repeat-x}.x-frame-mc{position:relative;background-repeat:repeat-x;overflow:hidden}.x-box-scroller-left{float:left;height:100%;z-index:5}.x-box-scroller-left .x-toolbar-scroll-left,.x-box-scroller-left .x-tabbar-scroll-left{width:18px;position:relative;cursor:pointer;height:20px;background:transparent no-repeat -18px 0;background-image:url('../../resources/themes/images/default/tab-bar/scroll-left.gif')}.x-box-scroller-left .x-toolbar-scroll-left-hover{background-position:0 0}.x-box-scroller-left .x-toolbar-scroll-left-disabled,.x-box-scroller-left .x-tabbar-scroll-left-disabled{background-position:-18px 0;filter:alpha(opacity=50);opacity:.5;cursor:default}.x-box-scroller-left .x-toolbar-scroll-left{background-image:url('../../resources/themes/images/default/toolbar/scroll-left.gif');background-position:-14px 0}.x-box-scroller-left .x-toolbar-scroll-left-hover{background-position:0 0}.x-box-scroller-left .x-toolbar-scroll-left-disabled{background-position:-14px 0}.x-box-scroller-left .x-toolbar-scroll-left{width:14px;height:22px;border-bottom:1px solid #8db2e3}.x-horizontal-box-overflow-body{float:left}.x-box-scroller-right{float:right;height:100%;z-index:5}.x-box-scroller-right .x-toolbar-scroll-right,.x-box-scroller-right .x-tabbar-scroll-right{width:18px;position:relative;cursor:pointer;height:20px;background:transparent no-repeat 0 0;background-image:url('../../resources/themes/images/default/tab-bar/scroll-right.gif')}.x-box-scroller-right .x-toolbar-scroll-right-hover{background-position:-18px 0}.x-box-scroller-right .x-toolbar-scroll-right-disabled,.x-box-scroller-right .x-tabbar-scroll-right-disabled{background-position:0 0;filter:alpha(opacity=50);opacity:.5;cursor:default}.x-box-scroller-right .x-toolbar-scroll-right{background-image:url('../../resources/themes/images/default/toolbar/scroll-right.gif')}.x-box-scroller-right .x-toolbar-scroll-right-hover{background-position:-14px 0}.x-box-scroller-right .x-toolbar-scroll-right-disabled{background-position:0 0}.x-box-scroller-right .x-toolbar-scroll-right{width:14px;height:22px;border-bottom:1px solid #8db2e3}.x-box-scroller-top .x-box-scroller{line-height:0;font-size:0}.x-box-scroller-top .x-menu-scroll-top{background:transparent no-repeat center center;background-image:url('../../resources/themes/images/default/layout/mini-top.gif');height:8px;cursor:pointer}.x-box-scroller-bottom .x-box-scroller{line-height:0;font-size:0}.x-box-scroller-bottom .x-menu-scroll-bottom{background:transparent no-repeat center center;background-image:url('../../resources/themes/images/default/layout/mini-bottom.gif');height:8px;cursor:pointer}.x-box-menu-right{float:right;padding-right:2px}.x-column{float:left}.x-ie6 .x-column{display:inline}.x-quirks .x-ie .x-form-layout-table,.x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item{position:relative}.x-tool{height:15px}.x-tool img{overflow:hidden;width:15px;height:15px;cursor:pointer;background-color:transparent;background-repeat:no-repeat;background-image:url('../../resources/themes/images/default/tools/tool-sprites.gif');margin:0}.x-panel-header-horizontal .x-tool,.x-window-header-horizontal .x-tool{margin-left:2px}.x-panel-header-vertical .x-tool,.x-window-header-vertical .x-tool{margin-top:2px}.x-panel-header-vertical .x-tool-top,.x-window-header-vertical .x-tool-top{margin:0 0 4px}.x-tool-placeholder{visibility:hidden}.x-tool-toggle{background-position:0 -60px}.x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-panel-collapsed .x-tool-toggle,.x-fieldset-collapsed .x-tool-toggle{background-position:0 -75px}.x-panel-collapsed .x-tool-over .x-tool-toggle,.x-fieldset-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.x-tool-close{background-position:0 0}.x-tool-minimize{background-position:0 -15px}.x-tool-maximize{background-position:0 -30px}.x-tool-restore{background-position:0 -45px}.x-tool-gear{background-position:0 -90px}.x-tool-prev{background-position:0 -105px}.x-tool-next{background-position:0 -120px}.x-tool-pin{background-position:0 -135px}.x-tool-unpin{background-position:0 -150px}.x-tool-right{background-position:0 -165px}.x-tool-left{background-position:0 -180px}.x-tool-help{background-position:0 -300px}.x-tool-save{background-position:0 -285px}.x-tool-search{background-position:0 -270px}.x-tool-minus{background-position:0 -255px}.x-tool-plus{background-position:0 -240px}.x-tool-refresh{background-position:0 -225px}.x-tool-up{background-position:0 -210px}.x-tool-down{background-position:0 -195px}.x-tool-collapse{background-position:0 -345px}.x-tool-expand{background-position:0 -330px}.x-tool-print{background-position:0 -315px}.x-tool-expand-bottom,.x-tool-collapse-bottom{background-position:0 -195px}.x-tool-expand-top,.x-tool-collapse-top{background-position:0 -210px}.x-tool-expand-left,.x-tool-collapse-left{background-position:0 -180px}.x-tool-expand-right,.x-tool-collapse-right{background-position:0 -165px}.x-tool-over .x-tool-close{background-position:-15px 0}.x-tool-over .x-tool-minimize{background-position:-15px -15px}.x-tool-over .x-tool-maximize{background-position:-15px -30px}.x-tool-over .x-tool-restore{background-position:-15px -45px}.x-tool-over .x-tool-gear{background-position:-15px -90px}.x-tool-over .x-tool-prev{background-position:-15px -105px}.x-tool-over .x-tool-next{background-position:-15px -120px}.x-tool-over .x-tool-pin{background-position:-15px -135px}.x-tool-over .x-tool-unpin{background-position:-15px -150px}.x-tool-over .x-tool-right{background-position:-15px -165px}.x-tool-over .x-tool-left{background-position:-15px -180px}.x-tool-over .x-tool-down{background-position:-15px -195px}.x-tool-over .x-tool-up{background-position:-15px -210px}.x-tool-over .x-tool-refresh{background-position:-15px -225px}.x-tool-over .x-tool-plus{background-position:-15px -240px}.x-tool-over .x-tool-minus{background-position:-15px -255px}.x-tool-over .x-tool-search{background-position:-15px -270px}.x-tool-over .x-tool-save{background-position:-15px -285px}.x-tool-over .x-tool-help{background-position:-15px -300px}.x-tool-over .x-tool-print{background-position:-15px -315px}.x-tool-over .x-tool-expand{background-position:-15px -330px}.x-tool-over .x-tool-collapse{background-position:-15px -345px}.x-tool-over .x-tool-expand-bottom,.x-tool-over .x-tool-collapse-bottom{background-position:-15px -195px}.x-tool-over .x-tool-expand-top,.x-tool-over .x-tool-collapse-top{background-position:-15px -210px}.x-tool-over .x-tool-expand-left,.x-tool-over .x-tool-collapse-left{background-position:-15px -180px}.x-tool-over .x-tool-expand-right,.x-tool-over .x-tool-collapse-right{background-position:-15px -165px}.x-horizontal-scroller-present .x-grid-body{border-bottom-width:0}.x-vertical-scroller-present .x-grid-body{border-right-width:0}.x-scroller{overflow:hidden}.x-scroller-vertical{border:1px solid #99bce8;border-top-color:#c5c5c5}.x-scroller-horizontal{border:1px solid #99bce8}.x-vertical-scroller-present .x-scroller-horizontal{border-right-width:0}.x-scroller-ct{overflow:hidden;position:absolute;margin:0;padding:0;border:0;left:0;top:0;box-sizing:content-box!important;-ms-box-sizing:content-box!important;-moz-box-sizing:content-box!important;-webkit-box-sizing:content-box!important}.x-scroller-vertical .x-scroller-ct{overflow-y:scroll}.x-scroller-horizontal .x-scroller-ct{overflow-x:scroll}.x-html html,.x-html address,.x-html blockquote,.x-html body,.x-html dd,.x-html div,.x-html dl,.x-html dt,.x-html fieldset,.x-html form,.x-html frame,.x-html frameset,.x-html h1,.x-html h2,.x-html h3,.x-html h4,.x-html h5,.x-html h6,.x-html noframes,.x-html ol,.x-html p,.x-html ul,.x-html center,.x-html dir,.x-html hr,.x-html menu,.x-html pre{display:block}.x-html li{display:list-item;list-style:disc}.x-html head{display:none}.x-html table{display:table}.x-html tr{display:table-row}.x-html thead{display:table-header-group}.x-html tbody{display:table-row-group}.x-html tfoot{display:table-footer-group}.x-html col{display:table-column}.x-html colgroup{display:table-column-group}.x-html td,.x-html th{display:table-cell}.x-html caption{display:table-caption}.x-html th{font-weight:bolder;text-align:center}.x-html caption{text-align:center}.x-html body{margin:8px}.x-html h1{font-size:2em;margin:.67em 0}.x-html h2{font-size:1.5em;margin:.75em 0}.x-html h3{font-size:1.17em;margin:.83em 0}.x-html h4,.x-html p,.x-html blockquote,.x-html ul,.x-html fieldset,.x-html form,.x-html ol,.x-html dl,.x-html dir,.x-html menu{margin:1.12em 0}.x-html h5{font-size:.83em;margin:1.5em 0}.x-html h6{font-size:.75em;margin:1.67em 0}.x-html h1,.x-html h2,.x-html h3,.x-html h4,.x-html h5,.x-html h6,.x-html b,.x-html strong{font-weight:bolder}.x-html blockquote{margin-left:40px;margin-right:40px}.x-html i,.x-html cite,.x-html em,.x-html var,.x-html address{font-style:italic}.x-html pre,.x-html tt,.x-html code,.x-html kbd,.x-html samp{font-family:monospace}.x-html pre{white-space:pre}.x-html button,.x-html textarea,.x-html input,.x-html select{display:inline-block}.x-html big{font-size:1.17em}.x-html small,.x-html sub,.x-html sup{font-size:.83em}.x-html sub{vertical-align:sub}.x-html sup{vertical-align:super}.x-html table{border-spacing:2px}.x-html thead,.x-html tbody,.x-html tfoot{vertical-align:middle}.x-html td,.x-html th{vertical-align:inherit}.x-html s,.x-html strike,.x-html del{text-decoration:line-through}.x-html hr{border:1px inset}.x-html ol,.x-html ul,.x-html dir,.x-html menu,.x-html dd{margin-left:40px}.x-html ul,.x-html menu,.x-html dir{list-style-type:disc}.x-html ol{list-style-type:decimal}.x-html ol ul,.x-html ul ol,.x-html ul ul,.x-html ol ol{margin-top:0;margin-bottom:0}.x-html u,.x-html ins{text-decoration:underline}.x-html br:before{content:"\A"}.x-html :before,.x-html :after{white-space:pre-line}.x-html center{text-align:center}.x-html :link,.x-html :visited{text-decoration:underline}.x-html :focus{outline:invert dotted thin}.x-html BDO[DIR="ltr"]{direction:ltr;unicode-bidi:bidi-override}.x-html BDO[DIR="rtl"]{direction:rtl;unicode-bidi:bidi-override}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-ie-debug.css
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-ie-debug.css	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-ie-debug.css	(revision 18277)
@@ -0,0 +1,9246 @@
+/*
+This file is part of Ext JS 4.1
+
+Copyright (c) 2011-2012 Sencha Inc
+
+Contact:  http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2012-07-04 21:11:01 (65ff594cd80b9bad45df640c22cc0adb52c95a7b)
+*/
+/**
+ * @class Global_CSS
+ *
+ * Global CSS variables and mixins of Sencha Touch.
+ */
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+/**
+ * @var {string} $theme-name
+ * The name of the theme. This must match the the output directory of the images.
+ * (defaults to 'default')
+ */
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+/**
+ * @var {string} $font-family
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $base-gradient
+ * The base gradient to be used throughout the theme.
+ */
+/**
+ * @var {color} $base-color
+ * The base color to be used throughout the theme.
+ */
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules
+ */
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+/**
+ * @var {boolean} $compile-all
+ * True to copile all CSS, even if above include rules are false
+ */
+/**
+ * @var {boolean} $scope-reset-css
+ * True to scope the reset CSS within the $prefix variable.
+ */
+/**
+ * @var {color} $css-shadow-background-color
+ * The base color for CSS shadows
+ */
+/**
+ * @var {color} $include-shadow-images
+ * True to include all shadow images.
+ */
+/**
+ * @class Ext.form.field.Base
+ */
+/**
+ * @var {measurement} $form-field-height
+ * Height for form fields.
+ */
+/**
+ * @var {measurement} $form-toolbar-field-height
+ * Height for form fields in toolbar.
+ */
+/**
+ * @var {measurement} $form-error-icon-width
+ * Width for form error icons.
+ */
+/**
+ * @var {measurement} $form-field-padding
+ * Padding around form fields.
+ */
+/**
+ * @var {measurement} $form-field-font-size
+ * Font size for form fields.
+ */
+/**
+ * @var {font-family} $form-field-font-family
+ * Font family for form fields.
+ */
+/**
+ * @var {font-weight} $form-field-font-weight
+ * Font weight for form fields.
+ */
+/**
+ * @var {font} $form-field-font
+ * Font for form fields.
+ */
+/**
+ * @var {color} $form-field-color
+ * Text color for form fields.
+ */
+/**
+ * @var {color} $form-field-empty-color
+ * Text color for empty form fields.
+ */
+/**
+ * @var {color} $form-field-border-color
+ * Border color for form fields.
+ */
+/**
+ * @var {measurement} $form-field-border-width
+ * Border width for form fields.
+ */
+/**
+ * @var {color} $form-field-focus-border-color
+ * Border color for focused form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-border-color
+ * Border color for invalid form fields.
+ */
+/**
+ * @var {color} $form-field-background-color
+ * Background color for form fields.
+ */
+/**
+ * @var {string} $form-field-background-image
+ * Background image for form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-background-color
+ * Background color for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-image
+ * Background image for invalid form fields.
+ */
+/**
+ * @var {background-repeat} $form-field-invalid-background-repeat
+ * Background repeat for invalid form fields.
+ */
+/**
+ * @var {background-position} $form-field-invalid-background-position
+ * Background position for invalid form fields.
+ */
+/**
+ * @class Ext.form.field.TextArea
+ */
+/**
+ * @class Ext.form.Label
+ */
+/**
+ * @class Ext.form.field.Checkbox
+ */
+/**
+ * @class Ext.form.field.Radio
+ */
+/* Error messages */
+/**
+ * @class Ext.form.field.Trigger
+ */
+/**
+ * @class Ext.form.FieldSet
+ */
+/**
+ * @class Ext.slider.Multi
+ */
+/**
+ * Creates a background gradient.
+ *
+ * @param {Color} $bg-color The background color of the gradient
+ * @param {String/List} [$type] The type of gradient to be used. Can either
+ * be a String which is a predefined gradient, or it can can be a list of
+ * color_stops. If none is set, it will still set the `background-color`
+ * to the $background-color.
+ * @param {String} [$direction=top] The direction of the gradient. Can either be
+ * `top` or `left`.
+ * @member Global_CSS
+ */
+/*
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error.
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to
+ * be true.
+ */
+/* line 77, ../themes/stylesheets/ext4/default/core/_reset.scss */
+html, body, div, dl, dt, dd, ul, ol, li, h1, h2, h3,
+h4, h5, h6, pre, code, form, fieldset, legend,
+input, textarea, p, blockquote, th, td {
+  margin: 0;
+  padding: 0; }
+
+/* line 82, ../themes/stylesheets/ext4/default/core/_reset.scss */
+table {
+  border-collapse: collapse;
+  border-spacing: 0; }
+
+/* line 87, ../themes/stylesheets/ext4/default/core/_reset.scss */
+fieldset, img {
+  border: 0; }
+
+/* line 92, ../themes/stylesheets/ext4/default/core/_reset.scss */
+address, caption, cite, code,
+dfn, em, strong, th, var {
+  font-style: normal;
+  font-weight: normal; }
+
+/* line 97, ../themes/stylesheets/ext4/default/core/_reset.scss */
+li {
+  list-style: none; }
+
+/* line 101, ../themes/stylesheets/ext4/default/core/_reset.scss */
+caption, th {
+  text-align: left; }
+
+/* line 105, ../themes/stylesheets/ext4/default/core/_reset.scss */
+h1, h2, h3, h4, h5, h6 {
+  font-size: 100%; }
+
+/* line 110, ../themes/stylesheets/ext4/default/core/_reset.scss */
+q:before,
+q:after {
+  content: ""; }
+
+/* line 114, ../themes/stylesheets/ext4/default/core/_reset.scss */
+abbr, acronym {
+  border: 0;
+  font-variant: normal; }
+
+/* line 119, ../themes/stylesheets/ext4/default/core/_reset.scss */
+sup {
+  vertical-align: text-top; }
+
+/* line 123, ../themes/stylesheets/ext4/default/core/_reset.scss */
+sub {
+  vertical-align: text-bottom; }
+
+/* line 127, ../themes/stylesheets/ext4/default/core/_reset.scss */
+input, textarea, select {
+  font-family: inherit;
+  font-size: inherit;
+  font-weight: inherit; }
+
+/* line 133, ../themes/stylesheets/ext4/default/core/_reset.scss */
+*:focus {
+  outline: none; }
+
+/* line 138, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-border-box,
+.x-border-box * {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  -webkit-box-sizing: border-box; }
+
+/* line 1, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-body {
+  color: black;
+  font-size: 12px;
+  font-family: tahoma, arial, verdana, sans-serif; }
+
+/* line 7, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-rtl {
+  direction: rtl; }
+
+/* line 11, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ltr {
+  direction: ltr; }
+
+/* line 15, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-clear {
+  overflow: hidden;
+  clear: both;
+  font-size: 0;
+  line-height: 0;
+  display: table; }
+
+/* line 23, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-strict .x-ie7 .x-clear {
+  height: 0;
+  width: 0; }
+
+/* line 31, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-layer {
+  position: absolute !important;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 37, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-shim {
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 45, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hide-display {
+  display: none !important; }
+
+/* line 49, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hide-visibility {
+  visibility: hidden !important; }
+
+/* line 56, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-item-disabled .x-form-item-label,
+.x-item-disabled .x-form-field,
+.x-item-disabled .x-form-cb-label,
+.x-item-disabled .x-form-trigger {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 60, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ie6 .x-item-disabled {
+  filter: none; }
+
+/* line 65, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hidden,
+.x-hide-offsets {
+  display: block !important;
+  visibility: hidden !important;
+  position: absolute!important;
+  left: -10000px !important;
+  top: -10000px !important; }
+
+/* line 75, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hide-nosize {
+  height: 0!important;
+  width: 0!important; }
+
+/* line 80, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-masked-relative {
+  position: relative; }
+
+/* line 86, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ie6 .x-masked select,
+.x-ie6.x-body-masked select {
+  visibility: hidden !important; }
+
+/* line 92, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-css-shadow {
+  position: absolute;
+  -moz-border-radius: 5px 5px;
+  -webkit-border-radius: 5px 5px;
+  -o-border-radius: 5px 5px;
+  -ms-border-radius: 5px 5px;
+  -khtml-border-radius: 5px 5px;
+  border-radius: 5px 5px; }
+
+/* line 98, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ie-shadow {
+  background-color: #777;
+  display: none;
+  position: absolute;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 107, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tl {
+  background: transparent no-repeat 0 0;
+  zoom: 1; }
+
+/* line 112, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tc {
+  height: 8px;
+  background: transparent repeat-x 0 0;
+  overflow: hidden; }
+
+/* line 118, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tr {
+  background: transparent no-repeat right -8px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-ml {
+  background: transparent repeat-y 0;
+  padding-left: 4px;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 129, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc {
+  background: repeat-x 0 -16px;
+  padding: 4px 10px; }
+
+/* line 134, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc h3 {
+  margin: 0 0 4px 0;
+  zoom: 1; }
+
+/* line 139, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mr {
+  background: transparent repeat-y right;
+  padding-right: 4px;
+  overflow: hidden; }
+
+/* line 145, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bl {
+  background: transparent no-repeat 0 -16px;
+  zoom: 1; }
+
+/* line 150, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bc {
+  background: transparent repeat-x 0 -8px;
+  height: 8px;
+  overflow: hidden; }
+
+/* line 156, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-br {
+  background: transparent no-repeat right -24px; }
+
+/* line 160, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tl, .x-box-bl {
+  padding-left: 8px;
+  overflow: hidden; }
+
+/* line 165, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tr, .x-box-br {
+  padding-right: 8px;
+  overflow: hidden; }
+
+/* line 170, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tl {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 174, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tc {
+  background-image: url('../../resources/themes/images/default/box/tb.gif'); }
+
+/* line 178, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tr {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 182, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-ml {
+  background-image: url('../../resources/themes/images/default/box/l.gif'); }
+
+/* line 186, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc {
+  background-color: #eee;
+  background-image: url('../../resources/themes/images/default/box/tb.gif');
+  font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;
+  color: #393939;
+  font-size: 15px; }
+
+/* line 194, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc h3 {
+  font-size: 18px;
+  font-weight: bold; }
+
+/* line 199, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mr {
+  background-image: url('../../resources/themes/images/default/box/r.gif'); }
+
+/* line 203, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bl {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 207, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bc {
+  background-image: url('../../resources/themes/images/default/box/tb.gif'); }
+
+/* line 211, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-br {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 215, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr {
+  background-image: url('../../resources/themes/images/default/box/corners-blue.gif'); }
+
+/* line 219, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc {
+  background-image: url('../../resources/themes/images/default/box/tb-blue.gif'); }
+
+/* line 223, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-mc {
+  background-color: #c3daf9; }
+
+/* line 227, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-mc h3 {
+  color: #17385b; }
+
+/* line 231, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-ml {
+  background-image: url('../../resources/themes/images/default/box/l-blue.gif'); }
+
+/* line 235, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-mr {
+  background-image: url('../../resources/themes/images/default/box/r-blue.gif'); }
+
+/* line 239, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-container {
+  zoom: 1; }
+  /* line 244, ../themes/stylesheets/ext4/default/core/_core.scss */
+  .x-container:before {
+    content: "";
+    clear: both;
+    display: table; }
+
+/* line 254, ../themes/stylesheets/ext4/default/core/_core.scss */
+table.x-container:before,
+tbody.x-container:before,
+tr.x-container:before {
+  display: none; }
+
+/* line 1, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-element {
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px; }
+
+/* line 9, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame {
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  z-index: 100000000;
+  width: 0px;
+  height: 0px; }
+
+/* line 21, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom,
+.x-focus-frame-left,
+.x-focus-frame-right {
+  position: absolute;
+  top: 0px;
+  left: 0px; }
+
+/* line 28, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom {
+  border-top: solid 2px #15428b;
+  height: 2px; }
+
+/* line 34, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame-left,
+.x-focus-frame-right {
+  border-left: solid 2px #15428b;
+  width: 2px; }
+
+/**
+ * Creates the base structure of a BoundList.
+ * @member Ext.view.BoundList
+ */
+/**
+ * Creates the base structure of an Ext.Button
+ * @member Ext.button.Button
+ */
+/**
+ * Creates a visual theme of an Ext.Button
+ * @member Ext.button.Button
+ */
+/**
+ * Creates the base structure of a button group.
+ * @member Ext.container.ButtonGroup
+ */
+/**
+ * Creates a visual theme of a button group.
+ * @member Ext.container.ButtonGroup
+ */
+/**
+ * Creates the base structure of a date picker.
+ * @member Ext.picker.Date
+ */
+/**
+ * Creates base structure for Ext.picker.Color
+ * @member Ext.picker.Color
+ */
+/**
+ * Creates the base structure of a Menu
+ * @member Ext.menu.Menu
+ */
+/**
+ * Create the base structure of an Ext.Panel
+ * @member Ext.panel.Panel
+ */
+/**
+ * Creates a visual theme for an Ext.Panel
+ * @member Ext.panel.Panel
+ */
+/**
+ * Creates base structure for Toolbar
+ * @member Ext.toolbar.Toolbar
+ */
+/**
+ * Creates a visual theme for an Toolbar.
+ * @param {String} $ui The name of the UI
+ * @param {Color} $background-color The background color of the toolbar (defaults to transparent)
+ * @param {Gradient/color-stops} $background-gradient The background gradient of the toolbar (defaults to null)
+ * @param {Color} $border-color The border color of the toolbar (defaults to null)
+ * @member Ext.toolbar.Toolbar
+ */
+/**
+ * Creates the base structure of Ext.form.Panel.
+ * @member Ext.form.Panel
+ */
+/**
+ * Creates the base structure of form field.
+ * @member Ext.form.field.Base
+ */
+/**
+ * Creates the base structure of FieldSet.
+ * @member Ext.form.FieldSet
+ */
+/**
+ * Creates the base structure of file field.
+ * @member Ext.form.field.File
+ */
+/**
+ * Creates the base structure of checkbox field.
+ * @member Ext.form.field.Checkbox
+ */
+/**
+ * Creates the base structure of CheckboxGroup.
+ * @member Ext.form.CheckboxGroup
+ */
+/**
+ * Creates the base structure of trigger field.
+ * @member Ext.form.field.Trigger
+ */
+/**
+ * Creates the base structure of HtmlEditor field.
+ * @member Ext.form.field.HtmlEditor
+ */
+/**
+ * Creates the base structure of QuickTip.
+ * @member Ext.tip.QuickTip
+ */
+/**
+ * Creates the base structure of an Ext.Window
+ * @member Ext.window.Window
+ */
+/**
+ * Creates a visual theme for an Ext.Panel
+ * @member Ext.window.Window
+ */
+/**
+ * Creates a visual theme for TabBar
+ * @member Ext.tab.Bar
+ */
+/**
+ * Creates the base structure of a Tab.
+ * @member Ext.tab.Tab
+ */
+/**
+ * Creates the base structure of slider.
+ * @member Ext.slider.Multi
+ */
+/**
+ * Creates base structure for a Grid.
+ * @member Ext.grid.Panel
+ */
+/**
+ * Creates the base structure of Tree.
+ * @member Ext.tree.Panel
+ */
+/* Styles for Ext.LoadMask */
+/* line 3, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+.x-mask {
+  z-index: 100;
+  position: absolute;
+  top: 0;
+  left: 0;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  width: 100%;
+  height: 100%;
+  zoom: 1;
+  background: #cccccc; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+.x-mask-msg {
+  z-index: 20001;
+  position: absolute;
+  top: 0;
+  left: 0;
+  padding: 2px;
+  border: 1px solid;
+  border-color: #99bce8; }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+  .x-mask-msg div {
+    padding: 5px 10px 5px 25px;
+    background-image: url('../../resources/themes/images/default/grid/loading.gif');
+    background-repeat: no-repeat;
+    background-position: 5px center;
+    cursor: wait;
+    border: 1px solid #a3bad9;
+    background-color: #eeeeee;
+    color: #222222;
+    font: normal 11px tahoma, arial, verdana, sans-serif; }
+
+/**
+ * Creates the base structure of an Ext.ProgressBar
+ * @member Ext.ProgressBar
+ */
+/**
+ * Creates a visual theme for an Ext.ProgressBar
+ * @member Ext.ProgressBar
+ */
+/**
+ * Creates base structure for a Draw Component.
+ * @member Ext.draw.Component
+ */
+/**
+ * Creates the base structure of Viewport.
+ * @member Ext.container.Viewport
+ */
+/**
+ * W3C suggested default style sheet for HTML 4:
+ * [http://www.w3.org/TR/CSS21/sample.html](http://www.w3.org/TR/CSS21/sample.html)
+ *
+ * @member Global_CSS
+ */
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist {
+  border-width: 1px;
+  border-style: solid;
+  border-color: #98c0f4;
+  background: white; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-boundlist .x-toolbar {
+    border-width: 1px 0 0 0; }
+
+/* line 22, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-strict .x-ie6 .x-boundlist-list-ct,
+.x-strict .x-ie7 .x-boundlist-list-ct {
+  position: relative; }
+
+/* line 29, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-item {
+  padding: 2px;
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  cursor: pointer;
+  cursor: hand;
+  position: relative;
+  /*allow hover in IE on empty items*/
+  border-width: 1px;
+  border-style: dotted;
+  border-color: white; }
+
+/* line 43, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-selected {
+  background: #cbdaf0;
+  border-color: #8eabe4; }
+
+/* line 48, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-item-over {
+  background: #dfe8f6;
+  border-color: #a3bae9; }
+
+/* line 53, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-floating {
+  border-top-width: 0; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-above {
+  border-top-width: 1px;
+  border-bottom-width: 1px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn {
+  display: inline-block;
+  zoom: 1;
+  *display: inline;
+  position: relative;
+  cursor: pointer;
+  cursor: hand;
+  white-space: nowrap;
+  vertical-align: middle;
+  background-repeat: no-repeat; }
+  /* line 19, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn * {
+    cursor: pointer;
+    cursor: hand; }
+  /* line 26, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn em {
+    background-repeat: no-repeat; }
+    /* line 30, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-btn em a {
+      text-decoration: none;
+      display: block;
+      color: inherit;
+      width: 100%;
+      zoom: 1; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn button {
+    width: 100%;
+    display: block;
+    margin: 0;
+    padding: 0;
+    border: 0;
+    background: none;
+    outline: 0 none;
+    overflow: hidden;
+    vertical-align: bottom;
+    -webkit-appearance: none; }
+    /* line 59, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-btn button::-moz-focus-inner {
+      border: 0;
+      padding: 0; }
+  /* line 65, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn .x-btn-inner {
+    display: block;
+    white-space: nowrap;
+    background-color: transparent;
+    background-repeat: no-repeat;
+    background-position: left center;
+    overflow: hidden; }
+  /* line 74, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn .x-btn-left .x-btn-inner {
+    text-align: left; }
+  /* line 78, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn .x-btn-center .x-btn-inner {
+    text-align: center; }
+  /* line 82, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn .x-btn-right .x-btn-inner {
+    text-align: right; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-disabled span {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+  /* line 91, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-disabled span, .x-ie7 .x-btn-disabled span {
+    filter: none; }
+
+/* line 98, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie7 .x-btn-disabled,
+.x-ie8 .x-btn-disabled {
+  filter: none; }
+
+/* line 105, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-disabled .x-btn-icon,
+.x-ie7 .x-btn-disabled .x-btn-icon,
+.x-ie8 .x-btn-disabled .x-btn-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+
+/* IE9 shows scrollbars in a button unless this is set  */
+/* line 112, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie9 .x-btn button {
+  overflow: visible!important; }
+
+/* line 117, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+* html .x-ie .x-btn button {
+  width: 1px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn button {
+  overflow-x: visible;
+  /*prevents extra horiz space in IE*/
+  vertical-align: baseline;
+  /*IE doesn't like bottom*/ }
+
+/* line 129, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-strict .x-ie6 .x-btn .x-frame-mc,
+.x-strict .x-ie7 .x-btn .x-frame-mc {
+  height: 100%; }
+
+/* Keep the selector simple ".x-btn .x-frame-mc" is enough to target the center frame of the button table */
+/* line 138, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn .x-frame-mc {
+  vertical-align: middle;
+  white-space: nowrap;
+  cursor: pointer; }
+
+/* Only center when all there is is text. Otherwise solo icons get centered. */
+/* line 147, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-noicon .x-frame-mc {
+  text-align: center; }
+
+/* line 153, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-icon-text-left .x-btn-icon {
+  background-position: left center; }
+
+/* line 157, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-icon-text-right .x-btn-icon {
+  background-position: right center; }
+
+/* line 161, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-icon-text-top .x-btn-icon {
+  background-position: center top; }
+
+/* line 165, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-icon-text-bottom .x-btn-icon {
+  background-position: center bottom; }
+
+/* line 170, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn button, .x-btn a {
+  position: relative; }
+  /* line 173, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn button .x-btn-icon, .x-btn a .x-btn-icon {
+    position: absolute;
+    background-repeat: no-repeat; }
+
+/* line 180, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-arrow-right {
+  background: transparent no-repeat right center;
+  padding-right: 12px; }
+  /* line 184, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-arrow-right .x-btn-inner {
+    padding-right: 0 !important; }
+
+/* line 189, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-toolbar .x-btn-arrow-right {
+  padding-right: 12px; }
+
+/* line 193, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-arrow-bottom {
+  background: transparent no-repeat center bottom;
+  padding-bottom: 12px; }
+
+/* line 198, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-arrow {
+  background-image: url('../../resources/themes/images/default/button/arrow.gif');
+  display: block; }
+
+/* line 206, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-split-right,
+.x-btn-over .x-btn-split-right {
+  background: transparent no-repeat right center;
+  background-image: url('../../resources/themes/images/default/button/s-arrow.gif');
+  padding-right: 14px !important; }
+
+/* line 213, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-split-bottom,
+.x-btn-over .x-btn-split-bottom {
+  background: transparent no-repeat center bottom;
+  background-image: url('../../resources/themes/images/default/button/s-arrow-b.gif');
+  padding-bottom: 14px; }
+
+/* line 219, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-toolbar .x-btn-split-right {
+  background-image: url('../../resources/themes/images/default/button/s-arrow-noline.gif');
+  padding-right: 12px !important; }
+
+/* line 224, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-toolbar .x-btn-split-bottom {
+  background-image: url('../../resources/themes/images/default/button/s-arrow-b-noline.gif'); }
+
+/* line 228, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-split {
+  display: block; }
+
+/* line 233, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-item-disabled,
+.x-item-disabled * {
+  cursor: default; }
+
+/* line 237, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-cycle-fixed-width .x-btn-inner {
+  text-align: inherit; }
+
+/* line 241, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-over .x-btn-split-right {
+  background-image: url('../../resources/themes/images/default/button/s-arrow-o.gif'); }
+
+/* line 242, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-over .x-btn-split-bottom {
+  background-image: url('../../resources/themes/images/default/button/s-arrow-bo.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small {
+  border-color: #d1d1d1; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-small {
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: white; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-small-mc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-bg.gif');
+  background-color: white; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-small-tl,
+.x-nbr .x-btn-default-small-bl,
+.x-nbr .x-btn-default-small-tr,
+.x-nbr .x-btn-default-small-br,
+.x-nbr .x-btn-default-small-tc,
+.x-nbr .x-btn-default-small-bc,
+.x-nbr .x-btn-default-small-ml,
+.x-nbr .x-btn-default-small-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-small-ml,
+.x-nbr .x-btn-default-small-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-small-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-default-small-tl,
+.x-strict .x-ie7 .x-btn-default-small-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 4px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon button,
+.x-btn-default-small-icon a,
+.x-btn-default-small-icon .x-btn-inner,
+.x-btn-default-small-noicon button,
+.x-btn-default-small-noicon a,
+.x-btn-default-small-noicon .x-btn-inner {
+  height: 16px;
+  line-height: 16px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon button, .x-btn-default-small-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 16px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon .x-btn-icon {
+  width: 16px;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-left button, .x-btn-default-small-icon-text-left a {
+  height: 16px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-left .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-left: 20px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-left .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-small-icon-text-left .x-btn-icon {
+    height: 16px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-right button, .x-btn-default-small-icon-text-right a {
+  height: 16px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-right .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-right: 20px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-right .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-small-icon-text-right .x-btn-icon {
+    height: 16px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-top .x-btn-inner {
+  padding-top: 20px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon {
+    width: 16px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon {
+    width: 16px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-over {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-focus {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-menu-active,
+.x-btn-default-small-pressed {
+  border-color: #9ebae1;
+  background-image: none;
+  background-color: #b6cbe4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+  background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -ms-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -ms-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-default-small-disabled .x-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn-default-small-disabled .x-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-small-disabled .x-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-over .x-frame-tl,
+.x-nbr .x-btn-default-small-over .x-frame-bl,
+.x-nbr .x-btn-default-small-over .x-frame-tr,
+.x-nbr .x-btn-default-small-over .x-frame-br,
+.x-nbr .x-btn-default-small-over .x-frame-tc,
+.x-nbr .x-btn-default-small-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-over .x-frame-ml,
+.x-nbr .x-btn-default-small-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-over .x-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-focus .x-frame-tl,
+.x-nbr .x-btn-default-small-focus .x-frame-bl,
+.x-nbr .x-btn-default-small-focus .x-frame-tr,
+.x-nbr .x-btn-default-small-focus .x-frame-br,
+.x-nbr .x-btn-default-small-focus .x-frame-tc,
+.x-nbr .x-btn-default-small-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-focus .x-frame-ml,
+.x-nbr .x-btn-default-small-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-focus .x-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-small-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-small-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-small-menu-active .x-frame-br,
+.x-nbr .x-btn-default-small-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-small-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-small-pressed .x-frame-tl,
+.x-nbr .x-btn-default-small-pressed .x-frame-bl,
+.x-nbr .x-btn-default-small-pressed .x-frame-tr,
+.x-nbr .x-btn-default-small-pressed .x-frame-br,
+.x-nbr .x-btn-default-small-pressed .x-frame-tc,
+.x-nbr .x-btn-default-small-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-small-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-small-pressed .x-frame-ml,
+.x-nbr .x-btn-default-small-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-small-pressed .x-frame-mc {
+  background-color: #b6cbe4;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-disabled .x-frame-tl,
+.x-nbr .x-btn-default-small-disabled .x-frame-bl,
+.x-nbr .x-btn-default-small-disabled .x-frame-tr,
+.x-nbr .x-btn-default-small-disabled .x-frame-br,
+.x-nbr .x-btn-default-small-disabled .x-frame-tc,
+.x-nbr .x-btn-default-small-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-disabled .x-frame-ml,
+.x-nbr .x-btn-default-small-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-disabled .x-frame-mc {
+  background-color: #f7f7f7;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-disabled-bg.gif'); }
+
+/* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-bg.gif'); }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-menu-active,
+.x-nlg .x-btn-default-small-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-pressed-bg.gif'); }
+
+/* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-disabled-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium {
+  border-color: #d1d1d1; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-medium {
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: white; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-medium-mc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif');
+  background-color: white; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-medium-tl,
+.x-nbr .x-btn-default-medium-bl,
+.x-nbr .x-btn-default-medium-tr,
+.x-nbr .x-btn-default-medium-br,
+.x-nbr .x-btn-default-medium-tc,
+.x-nbr .x-btn-default-medium-bc,
+.x-nbr .x-btn-default-medium-ml,
+.x-nbr .x-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-medium-ml,
+.x-nbr .x-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-medium-mc {
+  padding: 1px 1px 1px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-default-medium-tl,
+.x-strict .x-ie7 .x-btn-default-medium-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 3px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon button,
+.x-btn-default-medium-icon a,
+.x-btn-default-medium-icon .x-btn-inner,
+.x-btn-default-medium-noicon button,
+.x-btn-default-medium-noicon a,
+.x-btn-default-medium-noicon .x-btn-inner {
+  height: 24px;
+  line-height: 24px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon button, .x-btn-default-medium-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 24px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon .x-btn-icon {
+  width: 24px;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-left button, .x-btn-default-medium-icon-text-left a {
+  height: 24px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-left: 28px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon {
+    height: 24px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-right button, .x-btn-default-medium-icon-text-right a {
+  height: 24px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-right: 28px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon {
+    height: 24px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon {
+    width: 24px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon {
+    width: 24px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-over {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-focus {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-menu-active,
+.x-btn-default-medium-pressed {
+  border-color: #9ebae1;
+  background-image: none;
+  background-color: #b6cbe4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+  background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -ms-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -ms-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-default-medium-disabled .x-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn-default-medium-disabled .x-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-medium-disabled .x-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-over .x-frame-tl,
+.x-nbr .x-btn-default-medium-over .x-frame-bl,
+.x-nbr .x-btn-default-medium-over .x-frame-tr,
+.x-nbr .x-btn-default-medium-over .x-frame-br,
+.x-nbr .x-btn-default-medium-over .x-frame-tc,
+.x-nbr .x-btn-default-medium-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-over .x-frame-ml,
+.x-nbr .x-btn-default-medium-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-over .x-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-focus .x-frame-tl,
+.x-nbr .x-btn-default-medium-focus .x-frame-bl,
+.x-nbr .x-btn-default-medium-focus .x-frame-tr,
+.x-nbr .x-btn-default-medium-focus .x-frame-br,
+.x-nbr .x-btn-default-medium-focus .x-frame-tc,
+.x-nbr .x-btn-default-medium-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-focus .x-frame-ml,
+.x-nbr .x-btn-default-medium-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-focus .x-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-br,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-medium-pressed .x-frame-tl,
+.x-nbr .x-btn-default-medium-pressed .x-frame-bl,
+.x-nbr .x-btn-default-medium-pressed .x-frame-tr,
+.x-nbr .x-btn-default-medium-pressed .x-frame-br,
+.x-nbr .x-btn-default-medium-pressed .x-frame-tc,
+.x-nbr .x-btn-default-medium-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-medium-pressed .x-frame-ml,
+.x-nbr .x-btn-default-medium-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-medium-pressed .x-frame-mc {
+  background-color: #b6cbe4;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-disabled .x-frame-tl,
+.x-nbr .x-btn-default-medium-disabled .x-frame-bl,
+.x-nbr .x-btn-default-medium-disabled .x-frame-tr,
+.x-nbr .x-btn-default-medium-disabled .x-frame-br,
+.x-nbr .x-btn-default-medium-disabled .x-frame-tc,
+.x-nbr .x-btn-default-medium-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-disabled .x-frame-ml,
+.x-nbr .x-btn-default-medium-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-disabled .x-frame-mc {
+  background-color: #f7f7f7;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif'); }
+
+/* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif'); }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-menu-active,
+.x-nlg .x-btn-default-medium-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif'); }
+
+/* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large {
+  border-color: #d1d1d1; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-large {
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: white; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-large-mc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-bg.gif');
+  background-color: white; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-large-tl,
+.x-nbr .x-btn-default-large-bl,
+.x-nbr .x-btn-default-large-tr,
+.x-nbr .x-btn-default-large-br,
+.x-nbr .x-btn-default-large-tc,
+.x-nbr .x-btn-default-large-bc,
+.x-nbr .x-btn-default-large-ml,
+.x-nbr .x-btn-default-large-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-large-ml,
+.x-nbr .x-btn-default-large-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-large-mc {
+  padding: 1px 1px 1px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-default-large-tl,
+.x-strict .x-ie7 .x-btn-default-large-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 3px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon button,
+.x-btn-default-large-icon a,
+.x-btn-default-large-icon .x-btn-inner,
+.x-btn-default-large-noicon button,
+.x-btn-default-large-noicon a,
+.x-btn-default-large-noicon .x-btn-inner {
+  height: 32px;
+  line-height: 32px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon button, .x-btn-default-large-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 32px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon .x-btn-icon {
+  width: 32px;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-left button, .x-btn-default-large-icon-text-left a {
+  height: 32px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-left .x-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-left: 36px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-left .x-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-large-icon-text-left .x-btn-icon {
+    height: 32px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-right button, .x-btn-default-large-icon-text-right a {
+  height: 32px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-right .x-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-right: 36px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-right .x-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-large-icon-text-right .x-btn-icon {
+    height: 32px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-top .x-btn-inner {
+  padding-top: 36px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon {
+    width: 32px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 36px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 32px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon {
+    width: 32px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-over {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-focus {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-menu-active,
+.x-btn-default-large-pressed {
+  border-color: #9ebae1;
+  background-image: none;
+  background-color: #b6cbe4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+  background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -ms-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -ms-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-default-large-disabled .x-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn-default-large-disabled .x-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-large-disabled .x-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-over .x-frame-tl,
+.x-nbr .x-btn-default-large-over .x-frame-bl,
+.x-nbr .x-btn-default-large-over .x-frame-tr,
+.x-nbr .x-btn-default-large-over .x-frame-br,
+.x-nbr .x-btn-default-large-over .x-frame-tc,
+.x-nbr .x-btn-default-large-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-over .x-frame-ml,
+.x-nbr .x-btn-default-large-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-over .x-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-focus .x-frame-tl,
+.x-nbr .x-btn-default-large-focus .x-frame-bl,
+.x-nbr .x-btn-default-large-focus .x-frame-tr,
+.x-nbr .x-btn-default-large-focus .x-frame-br,
+.x-nbr .x-btn-default-large-focus .x-frame-tc,
+.x-nbr .x-btn-default-large-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-focus .x-frame-ml,
+.x-nbr .x-btn-default-large-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-focus .x-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-large-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-large-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-large-menu-active .x-frame-br,
+.x-nbr .x-btn-default-large-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-large-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-large-pressed .x-frame-tl,
+.x-nbr .x-btn-default-large-pressed .x-frame-bl,
+.x-nbr .x-btn-default-large-pressed .x-frame-tr,
+.x-nbr .x-btn-default-large-pressed .x-frame-br,
+.x-nbr .x-btn-default-large-pressed .x-frame-tc,
+.x-nbr .x-btn-default-large-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-large-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-large-pressed .x-frame-ml,
+.x-nbr .x-btn-default-large-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-large-pressed .x-frame-mc {
+  background-color: #b6cbe4;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-disabled .x-frame-tl,
+.x-nbr .x-btn-default-large-disabled .x-frame-bl,
+.x-nbr .x-btn-default-large-disabled .x-frame-tr,
+.x-nbr .x-btn-default-large-disabled .x-frame-br,
+.x-nbr .x-btn-default-large-disabled .x-frame-tc,
+.x-nbr .x-btn-default-large-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-disabled .x-frame-ml,
+.x-nbr .x-btn-default-large-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-disabled .x-frame-mc {
+  background-color: #f7f7f7;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-disabled-bg.gif'); }
+
+/* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-bg.gif'); }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-menu-active,
+.x-nlg .x-btn-default-large-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-pressed-bg.gif'); }
+
+/* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-disabled-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small {
+  border-color: transparent; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-toolbar-small {
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-toolbar-small-mc {
+  background-color: transparent; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-small-tl,
+.x-nbr .x-btn-default-toolbar-small-bl,
+.x-nbr .x-btn-default-toolbar-small-tr,
+.x-nbr .x-btn-default-toolbar-small-br,
+.x-nbr .x-btn-default-toolbar-small-tc,
+.x-nbr .x-btn-default-toolbar-small-bc,
+.x-nbr .x-btn-default-toolbar-small-ml,
+.x-nbr .x-btn-default-toolbar-small-mr {
+  zoom: 1; }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-small-ml,
+.x-nbr .x-btn-default-toolbar-small-mr {
+  zoom: 1; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-small-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-small-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 4px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon button,
+.x-btn-default-toolbar-small-icon a,
+.x-btn-default-toolbar-small-icon .x-btn-inner,
+.x-btn-default-toolbar-small-noicon button,
+.x-btn-default-toolbar-small-noicon a,
+.x-btn-default-toolbar-small-noicon .x-btn-inner {
+  height: 16px;
+  line-height: 16px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon button, .x-btn-default-toolbar-small-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 16px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-icon {
+  width: 16px;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-left button, .x-btn-default-toolbar-small-icon-text-left a {
+  height: 16px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-left: 20px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon {
+    height: 16px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-right button, .x-btn-default-toolbar-small-icon-text-right a {
+  height: 16px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-right: 20px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon {
+    height: 16px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-inner {
+  padding-top: 20px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon {
+    width: 16px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon {
+    width: 16px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-over {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-focus {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-menu-active,
+.x-btn-default-toolbar-small-pressed {
+  border-color: #7a9ac4;
+  background-image: none;
+  background-color: #bccfe5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+  background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -ms-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-disabled {
+  background-image: none;
+  background-color: transparent; }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-default-toolbar-small-disabled .x-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn-default-toolbar-small-disabled .x-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-toolbar-small-disabled .x-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-mc {
+  background-color: #dbeeff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-mc {
+  background-color: #dbeeff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mc {
+  background-color: #bccfe5;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mc {
+  background-color: transparent; }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-small-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-small-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-small-menu-active,
+.x-nlg .x-btn-default-toolbar-small-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium {
+  border-color: transparent; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-toolbar-medium {
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-toolbar-medium-mc {
+  background-color: transparent; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-medium-tl,
+.x-nbr .x-btn-default-toolbar-medium-bl,
+.x-nbr .x-btn-default-toolbar-medium-tr,
+.x-nbr .x-btn-default-toolbar-medium-br,
+.x-nbr .x-btn-default-toolbar-medium-tc,
+.x-nbr .x-btn-default-toolbar-medium-bc,
+.x-nbr .x-btn-default-toolbar-medium-ml,
+.x-nbr .x-btn-default-toolbar-medium-mr {
+  zoom: 1; }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-medium-ml,
+.x-nbr .x-btn-default-toolbar-medium-mr {
+  zoom: 1; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-medium-mc {
+  padding: 1px 1px 1px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 3px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon button,
+.x-btn-default-toolbar-medium-icon a,
+.x-btn-default-toolbar-medium-icon .x-btn-inner,
+.x-btn-default-toolbar-medium-noicon button,
+.x-btn-default-toolbar-medium-noicon a,
+.x-btn-default-toolbar-medium-noicon .x-btn-inner {
+  height: 24px;
+  line-height: 24px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon button, .x-btn-default-toolbar-medium-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 24px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-icon {
+  width: 24px;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-left button, .x-btn-default-toolbar-medium-icon-text-left a {
+  height: 24px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-left: 28px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon {
+    height: 24px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-right button, .x-btn-default-toolbar-medium-icon-text-right a {
+  height: 24px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-right: 28px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon {
+    height: 24px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon {
+    width: 24px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon {
+    width: 24px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-over {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-focus {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-menu-active,
+.x-btn-default-toolbar-medium-pressed {
+  border-color: #7a9ac4;
+  background-image: none;
+  background-color: #bccfe5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+  background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -ms-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-disabled {
+  background-image: none;
+  background-color: transparent; }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-mc {
+  background-color: #dbeeff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mc {
+  background-color: #dbeeff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mc {
+  background-color: #bccfe5;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mc {
+  background-color: transparent; }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-medium-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-medium-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-medium-menu-active,
+.x-nlg .x-btn-default-toolbar-medium-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large {
+  border-color: transparent; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-toolbar-large {
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-toolbar-large-mc {
+  background-color: transparent; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-large-tl,
+.x-nbr .x-btn-default-toolbar-large-bl,
+.x-nbr .x-btn-default-toolbar-large-tr,
+.x-nbr .x-btn-default-toolbar-large-br,
+.x-nbr .x-btn-default-toolbar-large-tc,
+.x-nbr .x-btn-default-toolbar-large-bc,
+.x-nbr .x-btn-default-toolbar-large-ml,
+.x-nbr .x-btn-default-toolbar-large-mr {
+  zoom: 1; }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-large-ml,
+.x-nbr .x-btn-default-toolbar-large-mr {
+  zoom: 1; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-large-mc {
+  padding: 1px 1px 1px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,
+.x-strict .x-ie7 .x-btn-default-toolbar-large-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 3px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon button,
+.x-btn-default-toolbar-large-icon a,
+.x-btn-default-toolbar-large-icon .x-btn-inner,
+.x-btn-default-toolbar-large-noicon button,
+.x-btn-default-toolbar-large-noicon a,
+.x-btn-default-toolbar-large-noicon .x-btn-inner {
+  height: 32px;
+  line-height: 32px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon button, .x-btn-default-toolbar-large-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 32px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-icon {
+  width: 32px;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-left button, .x-btn-default-toolbar-large-icon-text-left a {
+  height: 32px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-left: 36px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon {
+    height: 32px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-right button, .x-btn-default-toolbar-large-icon-text-right a {
+  height: 32px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-right: 36px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon {
+    height: 32px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-inner {
+  padding-top: 36px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon {
+    width: 32px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 36px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 32px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon {
+    width: 32px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-over {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-focus {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-menu-active,
+.x-btn-default-toolbar-large-pressed {
+  border-color: #7a9ac4;
+  background-image: none;
+  background-color: #bccfe5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+  background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -ms-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-disabled {
+  background-image: none;
+  background-color: transparent; }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-default-toolbar-large-disabled .x-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn-default-toolbar-large-disabled .x-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-toolbar-large-disabled .x-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-mc {
+  background-color: #dbeeff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-mc {
+  background-color: #dbeeff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mc {
+  background-color: #bccfe5;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mc {
+  background-color: transparent; }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-large-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-large-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-large-menu-active,
+.x-nlg .x-btn-default-toolbar-large-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif'); }
+
+/* line 571, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-disabled,
+.x-btn-default-toolbar-medium-disabled,
+.x-btn-default-toolbar-large-disabled {
+  border-color: transparent;
+  background-image: none;
+  background: transparent; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group {
+  position: relative;
+  overflow: hidden; }
+
+/* line 11, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-body {
+  position: relative;
+  zoom: 1;
+  padding: 0 1px; }
+  /* line 15, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-btn-group-body .x-table-layout-cell {
+    vertical-align: top; }
+
+/* line 20, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-header-text {
+  white-space: nowrap; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-group-default-framed {
+  padding: 1px 1px 1px 1px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #d0def0; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-group-default-framed-mc {
+  background-color: #d0def0; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-group-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000202px 1000202px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-group-default-framed-tl,
+.x-nbr .x-btn-group-default-framed-bl,
+.x-nbr .x-btn-group-default-framed-tr,
+.x-nbr .x-btn-group-default-framed-br,
+.x-nbr .x-btn-group-default-framed-tc,
+.x-nbr .x-btn-group-default-framed-bc,
+.x-nbr .x-btn-group-default-framed-ml,
+.x-nbr .x-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/btn-group/btn-group-default-framed-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-group-default-framed-ml,
+.x-nbr .x-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/btn-group/btn-group-default-framed-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-btn-group-default-framed-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-btn-group-default-framed-tl,
+.x-strict .x-ie7 .x-btn-group-default-framed-bl {
+  position: relative;
+  right: 0; }
+
+/* line 60, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-default-framed {
+  border-color: #b7c8d7;
+  -moz-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  -webkit-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  -o-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset; }
+
+/* line 68, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-header-default-framed {
+  margin: 2px 2px 0 2px; }
+
+/* line 72, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-header-body-default-framed {
+  padding: 1px 0;
+  background: #c2d8f0;
+  -moz-border-radius-topleft: 2px;
+  -webkit-border-top-left-radius: 2px;
+  -o-border-top-left-radius: 2px;
+  -ms-border-top-left-radius: 2px;
+  -khtml-border-top-left-radius: 2px;
+  border-top-left-radius: 2px;
+  -moz-border-radius-topright: 2px;
+  -webkit-border-top-right-radius: 2px;
+  -o-border-top-right-radius: 2px;
+  -ms-border-top-right-radius: 2px;
+  -khtml-border-top-right-radius: 2px;
+  border-top-right-radius: 2px; }
+
+/* line 80, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-header-text-default-framed {
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  color: #3e6aaa; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker {
+  border: 1px solid #1b376c;
+  background-color: white;
+  position: relative; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker a {
+    -moz-outline: 0 none;
+    outline: 0 none;
+    color: #15428b;
+    text-decoration: none;
+    border-width: 0; }
+
+/* line 25, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-inner,
+.x-datepicker-inner td,
+.x-datepicker-inner th {
+  border-collapse: separate; }
+
+/* line 29, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-header {
+  position: relative;
+  height: 26px;
+  background-image: none;
+  background-color: #23427c;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #264888), color-stop(100%, #1f3a6c));
+  background-image: -webkit-linear-gradient(top, #264888, #1f3a6c);
+  background-image: -moz-linear-gradient(top, #264888, #1f3a6c);
+  background-image: -o-linear-gradient(top, #264888, #1f3a6c);
+  background-image: -ms-linear-gradient(top, #264888, #1f3a6c);
+  background-image: linear-gradient(top, #264888, #1f3a6c); }
+
+/* line 42, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-prev,
+.x-datepicker-next {
+  position: absolute;
+  top: 5px;
+  width: 18px; }
+  /* line 48, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-prev a,
+  .x-datepicker-next a {
+    display: block;
+    width: 16px;
+    height: 16px;
+    background-position: top;
+    background-repeat: no-repeat;
+    cursor: pointer;
+    text-decoration: none !important;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+    opacity: 0.7; }
+    /* line 63, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-datepicker-prev a:hover,
+    .x-datepicker-next a:hover {
+      filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+      opacity: 1; }
+
+/* line 69, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-next {
+  right: 5px; }
+  /* line 72, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-next a {
+    background-image: url('../../resources/themes/images/default/shared/right-btn.gif'); }
+
+/* line 77, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-prev {
+  left: 5px; }
+  /* line 80, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-prev a {
+    background-image: url('../../resources/themes/images/default/shared/left-btn.gif'); }
+
+/* line 86, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-item-disabled .x-datepicker-prev a:hover,
+.x-item-disabled .x-datepicker-next a:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+
+/* line 90, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-month {
+  padding-top: 3px; }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-month .x-btn,
+  .x-datepicker-month button,
+  .x-datepicker-month .x-btn-tc,
+  .x-datepicker-month .x-btn-tl,
+  .x-datepicker-month .x-btn-tr,
+  .x-datepicker-month .x-btn-mc,
+  .x-datepicker-month .x-btn-ml,
+  .x-datepicker-month .x-btn-mr,
+  .x-datepicker-month .x-btn-bc,
+  .x-datepicker-month .x-btn-bl,
+  .x-datepicker-month .x-btn-br {
+    background: transparent !important;
+    border-width: 0 !important; }
+  /* line 108, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-month span {
+    color: #fff !important; }
+  /* line 112, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-month .x-btn-split-right {
+    background-image: url('../../resources/themes/images/default/button/s-arrow-light.gif');
+    padding-right: 12px; }
+
+/* line 118, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-next {
+  text-align: right; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-month {
+  text-align: center; }
+  /* line 126, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-month button {
+    color: white !important; }
+
+/* line 132, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+table.x-datepicker-inner {
+  width: 100%;
+  table-layout: fixed; }
+  /* line 136, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner th {
+    width: 25px;
+    height: 19px;
+    padding: 0;
+    color: #233d6d;
+    font: normal 10px tahoma, arial, verdana, sans-serif;
+    text-align: right;
+    border-bottom: 1px solid #b2d1f5;
+    border-collapse: separate;
+    background-image: none;
+    background-color: #dfecfb;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #edf4fd), color-stop(100%, #cde1f9));
+    background-image: -webkit-linear-gradient(top, #edf4fd, #cde1f9);
+    background-image: -moz-linear-gradient(top, #edf4fd, #cde1f9);
+    background-image: -o-linear-gradient(top, #edf4fd, #cde1f9);
+    background-image: -ms-linear-gradient(top, #edf4fd, #cde1f9);
+    background-image: linear-gradient(top, #edf4fd, #cde1f9);
+    cursor: default; }
+    /* line 157, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    table.x-datepicker-inner th span {
+      display: block;
+      padding-right: 7px; }
+  /* line 163, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner tr {
+    height: 20px; }
+  /* line 167, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner td {
+    border: 1px solid;
+    height: 17px;
+    border-color: white;
+    text-align: right;
+    padding: 0; }
+  /* line 175, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner a {
+    padding-right: 4px;
+    display: block;
+    zoom: 1;
+    font: normal 11px tahoma, arial, verdana, sans-serif;
+    color: black;
+    text-decoration: none;
+    text-align: right; }
+  /* line 188, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-active {
+    cursor: pointer;
+    color: black; }
+  /* line 194, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-selected a {
+    background: repeat-x left top;
+    background-color: #dae5f3;
+    border: 1px solid #8db2e3; }
+  /* line 200, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-selected span {
+    font-weight: bold; }
+  /* line 206, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-today a {
+    border: 1px solid;
+    border-color: darkred; }
+  /* line 214, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-prevday a,
+  table.x-datepicker-inner .x-datepicker-nextday a {
+    text-decoration: none !important;
+    color: #aaa; }
+  /* line 221, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner a:hover,
+  table.x-datepicker-inner .x-datepicker-disabled a:hover {
+    text-decoration: none !important;
+    color: #000;
+    background-color: #ddecfe; }
+  /* line 229, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-disabled a {
+    cursor: default;
+    background-color: #eee;
+    color: #bbb; }
+
+/* line 237, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-footer,
+.x-monthpicker-buttons {
+  position: relative;
+  border-top: 1px solid #b2d1f5;
+  background-image: none;
+  background-color: #dfecfb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dee8f5), color-stop(49%, #d1dff0), color-stop(51%, #c7d8ed), color-stop(100%, #cbdaee));
+  background-image: -webkit-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: -moz-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: -o-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: -ms-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  text-align: center; }
+  /* line 250, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-footer .x-btn,
+  .x-monthpicker-buttons .x-btn {
+    position: relative;
+    margin: 4px; }
+
+/* line 256, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-item-disabled .x-datepicker-inner a:hover {
+  background: none; }
+
+/* line 261, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker .x-monthpicker {
+  position: absolute;
+  left: 0;
+  top: 0; }
+
+/* line 268, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker {
+  border: 1px solid #1b376c;
+  background-color: white; }
+
+/* line 274, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-months,
+.x-monthpicker-years {
+  float: left;
+  height: 167px;
+  width: 88px; }
+
+/* line 281, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-item {
+  float: left;
+  margin: 4px 0 5px 0;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  text-align: center;
+  vertical-align: middle;
+  height: 18px;
+  width: 43px;
+  border: 0 none; }
+  /* line 295, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-monthpicker-item a {
+    display: block;
+    margin: 0 5px;
+    text-decoration: none;
+    color: #15428b;
+    border: 1px solid white;
+    line-height: 17px; }
+    /* line 308, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-monthpicker-item a:hover {
+      background-color: #ddecfe; }
+    /* line 312, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-monthpicker-item a.x-monthpicker-selected {
+      background-color: #dfecfb;
+      border: 1px solid #8db2e3; }
+
+/* line 319, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-months {
+  border-right: 1px solid #1b376c;
+  width: 87px; }
+
+/* line 324, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-years .x-monthpicker-item {
+  width: 44px; }
+
+/* line 328, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav {
+  height: 28px; }
+  /* line 331, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-monthpicker-yearnav button {
+    background-image: url('../../resources/themes/images/default/tools/tool-sprites.gif');
+    height: 15px;
+    width: 15px;
+    padding: 0;
+    margin: 6px 12px 5px 15px;
+    border: 0;
+    outline: 0 none; }
+    /* line 339, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-monthpicker-yearnav button::-moz-focus-inner {
+      border: 0;
+      padding: 0; }
+
+/* line 346, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-next {
+  background-position: 0 -120px; }
+
+/* line 350, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-next-over {
+  cursor: pointer;
+  cursor: hand;
+  background-position: -15px -120px; }
+
+/* line 356, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-prev {
+  background-position: 0 -105px; }
+
+/* line 360, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-prev-over {
+  cursor: pointer;
+  cursor: hand;
+  background-position: -15px -105px; }
+
+/* line 367, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-small .x-monthpicker-item {
+  margin: 2px 0 2px 0; }
+/* line 371, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-small .x-monthpicker-yearnav {
+  height: 23px; }
+/* line 375, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-small .x-monthpicker-months, .x-monthpicker-small .x-monthpicker-years {
+  height: 136px; }
+
+/* line 385, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-quirks .x-ie7 .x-monthpicker-buttons .x-btn,
+.x-quirks .x-ie8 .x-monthpicker-buttons .x-btn {
+  margin-top: 2px; }
+/* line 391, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-quirks .x-monthpicker-small .x-monthpicker-yearnav button {
+  margin-top: 3px;
+  margin-bottom: 3px; }
+
+/* line 397, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-ie6 .x-monthpicker-small .x-monthpicker-yearnav button {
+  margin-top: 3px;
+  margin-bottom: 3px; }
+
+/* line 407, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-nlg .x-datepicker-header {
+  background-image: url('../../resources/themes/images/default/datepicker/datepicker-header-bg.gif');
+  background-repeat: repeat-x;
+  background-position: top left; }
+/* line 416, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-nlg .x-datepicker-footer,
+.x-nlg .x-monthpicker-buttons {
+  background-image: url('../../resources/themes/images/default/datepicker/datepicker-footer-bg.gif');
+  background-repeat: repeat-x;
+  background-position: top left; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker {
+  width: 144px;
+  height: 90px;
+  cursor: pointer; }
+
+/* line 12, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker a {
+  border: 1px solid #fff;
+  float: left;
+  padding: 2px;
+  text-decoration: none;
+  -moz-outline: 0 none;
+  outline: 0 none;
+  cursor: pointer; }
+
+/* line 28, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker a:hover,
+.x-color-picker a.x-color-picker-selected {
+  border-color: #8bb8f3;
+  background-color: #deecfd; }
+
+/* line 33, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker em {
+  display: block;
+  border: 1px solid #aca899; }
+
+/* line 39, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker em span {
+  cursor: pointer;
+  display: block;
+  height: 10px;
+  width: 10px;
+  line-height: 10px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-body {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  background: #f0f0f0 !important;
+  padding: 2px; }
+
+/* line 12, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item .x-form-text {
+  user-select: text;
+  -webkit-user-select: text;
+  -o-user-select: text;
+  -ie-user-select: text;
+  -moz-user-select: text;
+  -ie-user-select: text; }
+
+/* line 21, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-icon-separator {
+  position: absolute;
+  top: 0px;
+  left: 27px;
+  z-index: 0;
+  border-left: solid 1px #e0e0e0;
+  background-color: white;
+  width: 2px;
+  overflow: hidden; }
+
+/* line 33, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-plain .x-menu-icon-separator {
+  display: none; }
+
+/* line 38, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-focus {
+  display: block;
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px; }
+
+/* line 47, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item {
+  white-space: nowrap;
+  overflow: hidden;
+  z-index: 1; }
+
+/* line 53, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-cmp {
+  margin-bottom: 1px; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-link {
+  display: block;
+  margin: 1px;
+  padding: 6px 2px 3px 32px;
+  text-decoration: none !important;
+  line-height: 16px;
+  cursor: default; }
+
+/* line 76, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-icon {
+  width: 16px;
+  height: 16px;
+  position: absolute;
+  top: 5px;
+  left: 4px;
+  background: no-repeat center center; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-icon-right {
+  width: 16px;
+  height: 16px;
+  position: absolute;
+  top: 6px;
+  right: 4px;
+  background: no-repeat center center; }
+
+/* line 96, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-text {
+  font-size: 11px;
+  color: #222222; }
+
+/* line 102, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-checked .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/menu/checked.gif'); }
+/* line 105, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-checked .x-menu-group-icon {
+  background-image: url('../../resources/themes/images/default/menu/group-checked.gif'); }
+
+/* line 111, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-unchecked .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/menu/unchecked.gif'); }
+/* line 114, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-unchecked .x-menu-group-icon {
+  background-image: none; }
+
+/* line 119, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-separator {
+  height: 2px;
+  border-top: solid 1px #e0e0e0;
+  background-color: white;
+  margin: 2px 0px;
+  overflow: hidden; }
+
+/* line 127, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-arrow {
+  position: absolute;
+  width: 12px;
+  height: 9px;
+  top: 9px;
+  right: 0px;
+  background: no-repeat center center;
+  background-image: url('../../resources/themes/images/default/menu/menu-parent.gif'); }
+
+/* line 137, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-indent {
+  margin-left: 31px;
+  /* The 2px is the width of the seperator */ }
+
+/* line 141, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-active {
+  cursor: pointer; }
+  /* line 144, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-menu-item-active .x-menu-item-link {
+    background-image: none;
+    background-color: #d9e8fb;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7f0fc), color-stop(100%, #c7ddf9));
+    background-image: -webkit-linear-gradient(top, #e7f0fc, #c7ddf9);
+    background-image: -moz-linear-gradient(top, #e7f0fc, #c7ddf9);
+    background-image: -o-linear-gradient(top, #e7f0fc, #c7ddf9);
+    background-image: -ms-linear-gradient(top, #e7f0fc, #c7ddf9);
+    background-image: linear-gradient(top, #e7f0fc, #c7ddf9);
+    margin: 0px;
+    border: 1px solid #a9cbf5;
+    cursor: pointer;
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    -o-border-radius: 3px;
+    -ms-border-radius: 3px;
+    -khtml-border-radius: 3px;
+    border-radius: 3px; }
+
+/* line 153, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+
+/* line 160, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+/* line 164, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-text {
+  background-color: transparent; }
+/* line 171, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-strict .x-ie7m .x-ie .x-menu-icon-separator {
+  width: 1px; }
+/* line 175, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-strict .x-ie7m .x-ie .x-menu-item-separator {
+  height: 1px; }
+
+/* line 184, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-ie6 .x-menu-item-link,
+.x-ie7 .x-menu-item-link,
+.x-quirks .x-ie8 .x-menu-item-link {
+  padding-bottom: 2px; }
+
+/* line 192, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-nlg .x-menu-item-active .x-menu-item-link {
+  background: #d9e8fb repeat-x left top;
+  background-image: url('../../resources/themes/images/default/menu/menu-item-active-bg.gif'); }
+
+/* line 199, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-date-item {
+  border-color: #99BBE8; }
+
+/* line 8, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-panel .x-grid-body {
+  background: white;
+  border-color: #99bce8;
+  border-style: solid;
+  border-width: 1px;
+  border-top-color: #c5c5c5; }
+/* line 17, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-panel .x-grid-header-ct-hidden {
+  visibility: hidden; }
+
+/* line 22, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-empty {
+  padding: 10px;
+  color: gray;
+  font: normal 11px tahoma, arial, helvetica, sans-serif; }
+
+/* line 28, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-header-hidden .x-grid-body {
+  border-top-color: #99bce8 !important; }
+
+/* line 32, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-view {
+  overflow: hidden;
+  position: relative; }
+
+/* line 38, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-table {
+  table-layout: fixed;
+  border-collapse: separate; }
+
+/* line 45, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-autowidth-table table.x-grid-table {
+  table-layout: auto;
+  width: auto!important; }
+
+/* line 50, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row .x-grid-table {
+  border-collapse: collapse; }
+
+/* line 54, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-locked .x-grid-inner-locked {
+  border-width: 0 1px 0 0 !important;
+  border-style: solid; }
+
+/* line 59, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-header-ct {
+  cursor: default;
+  zoom: 1;
+  padding: 0;
+  border: 1px solid #99bce8;
+  border-bottom-color: #c5c5c5; }
+
+/* line 73, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-accordion-item .x-grid-header-ct {
+  border-width: 0 0 1px 0!important; }
+
+/* line 77, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header {
+  padding: 0;
+  position: absolute;
+  overflow: hidden;
+  border-right: 1px solid #c5c5c5;
+  border-left: 0 none;
+  border-top: 0 none;
+  border-bottom: 0 none;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.3);
+  color: null;
+  font: normal 11px tahoma, arial, verdana, sans-serif; }
+
+/* line 99, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-group-header {
+  padding: 0;
+  border-left-width: 0; }
+
+/* line 103, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-group-sub-header {
+  background: transparent;
+  border-top: 1px solid #c5c5c5;
+  border-left-width: 0; }
+
+/* line 109, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-inner {
+  zoom: 1;
+  position: relative;
+  white-space: nowrap;
+  line-height: 15px;
+  padding: 3px 6px 4px; }
+  /* line 116, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-column-header-inner .x-column-header-text {
+    white-space: nowrap; }
+
+/* line 123, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-over,
+.x-column-header-sort-ASC,
+.x-column-header-sort-DESC {
+  border-left-color: #aaccf6;
+  border-right-color: #aaccf6; }
+
+/* line 135, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-grid-header-ct,
+.x-nlg .x-column-header {
+  background: repeat-x 0 top;
+  background-image: url('../../resources/themes/images/default/grid/column-header-bg.gif'); }
+/* line 142, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-column-header-over,
+.x-nlg .x-column-header-sort-ASC,
+.x-nlg .x-column-header-sort-DESC {
+  background: #ebf3fd repeat-x 0 top;
+  background-image: url('../../resources/themes/images/default/grid/column-header-over-bg.gif'); }
+
+/* line 149, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-trigger {
+  display: none;
+  height: 100%;
+  width: 14px;
+  background: no-repeat left center;
+  background-color: #c3daf9;
+  background-image: url('../../resources/themes/images/default/grid/grid3-hd-btn.gif');
+  position: absolute;
+  right: 0;
+  top: 0;
+  z-index: 2;
+  cursor: pointer; }
+
+/* line 164, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-over .x-column-header-trigger, .x-column-header-open .x-column-header-trigger {
+  display: block; }
+
+/* line 169, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-align-right {
+  text-align: right; }
+  /* line 172, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-column-header-align-right .x-column-header-text {
+    padding-right: 0.5ex;
+    margin-right: 6px; }
+
+/* line 177, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-align-center {
+  text-align: center; }
+
+/* line 180, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-align-left {
+  text-align: left; }
+
+/* line 185, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-sort-ASC .x-column-header-text {
+  padding-right: 16px;
+  background: no-repeat right 6px;
+  background-image: url('../../resources/themes/images/default/grid/sort_asc.gif'); }
+
+/* line 190, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-sort-DESC .x-column-header-text {
+  padding-right: 16px;
+  background: no-repeat right 6px;
+  background-image: url('../../resources/themes/images/default/grid/sort_desc.gif'); }
+
+/* line 197, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row {
+  vertical-align: top; }
+  /* line 199, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row .x-grid-cell {
+    color: null;
+    font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+    background-color: white;
+    border-color: #ededed;
+    border-style: solid;
+    border-top-color: #fafafa;
+    border-width: 0; }
+
+/* line 212, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-grid-cell {
+  border-width: 1px 0; }
+
+/* line 216, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-rowwrap-div {
+  border-width: 1px 0;
+  border-color: #ededed;
+  border-style: solid;
+  border-top-color: #fafafa;
+  overflow: hidden; }
+
+/* line 226, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-alt .x-grid-cell,
+.x-grid-row-alt .x-grid-rowwrap-div {
+  background-color: #fafafa; }
+
+/* line 231, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-over .x-grid-cell,
+.x-grid-row-over .x-grid-rowwrap-div {
+  border-color: #dddddd;
+  background-color: #efefef; }
+
+/* line 238, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-focused .x-grid-cell,
+.x-grid-row-focused .x-grid-rowwrap-div {
+  border-color: #dddddd;
+  background-color: #efefef; }
+
+/* line 245, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-selected .x-grid-cell,
+.x-grid-row-selected .x-grid-rowwrap-div {
+  border-style: dotted;
+  border-color: #a3bae9;
+  background-color: #dfe8f6 !important; }
+
+/* line 254, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-rowwrap-div .x-grid-cell,
+.x-grid-rowwrap-div .x-grid-cell-inner {
+  border-width: 0;
+  background: transparent; }
+
+/* line 261, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-body-hidden {
+  display: none; }
+
+/* line 265, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-rowbody {
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  padding: 4px; }
+  /* line 270, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-rowbody p {
+    margin: 5px 5px 10px 5px; }
+
+/* line 276, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell {
+  overflow: hidden; }
+
+/* line 280, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell-inner {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis;
+  padding: 2px 6px 3px;
+  white-space: nowrap; }
+
+/* line 291, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-grid-cell-inner {
+  line-height: 13px;
+  padding-bottom: 4px; }
+
+/* line 297, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-action-col-cell .x-grid-cell-inner {
+  line-height: 0;
+  padding: 2px; }
+
+/* line 302, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-action-col-cell .x-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 306, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-action-col-cell .x-grid-cell-inner {
+  padding-top: 1px; }
+
+/* line 310, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row .x-grid-cell-special {
+  padding: 0;
+  border-right: 1px solid #d0d0d0;
+  background-image: none;
+  background-color: #f6f6f6;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #f6f6f6), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(left, #f6f6f6, #e9e9e9);
+  background-image: -moz-linear-gradient(left, #f6f6f6, #e9e9e9);
+  background-image: -o-linear-gradient(left, #f6f6f6, #e9e9e9);
+  background-image: -ms-linear-gradient(left, #f6f6f6, #e9e9e9);
+  background-image: linear-gradient(left, #f6f6f6, #e9e9e9); }
+
+/* line 316, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row .x-grid-cell-row-checker {
+  vertical-align: middle; }
+
+/*
+IE6-8 have issues with shrinking the TR to 0px (even w/line-height=0), so we
+use an IE-specific trick to make the row disappear. We cannot do this on any
+other browser, because it is not a non-standard thing to do and those other
+browsers will do whacky things with it.
+*/
+/* line 330, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie6 .x-grid-header-row,
+.x-ie7 .x-grid-header-row,
+.x-quirks .x-ie8 .x-grid-header-row {
+  position: absolute; }
+
+/* line 335, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-selected .x-grid-cell-special {
+  border-right: 1px solid #aaccf6;
+  background-image: none;
+  background-color: #dfe8f6;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dfe8f6), color-stop(100%, #cbdaf0));
+  background-image: -webkit-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: -moz-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: -o-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: -ms-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: linear-gradient(left, #dfe8f6, #cbdaf0); }
+
+/* line 341, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-dirty-cell {
+  background-image: url('../../resources/themes/images/default/grid/dirty.gif');
+  background-position: 0 0;
+  background-repeat: no-repeat; }
+
+/* line 347, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell-selected {
+  background-color: #B8CFEE !important; }
+
+/* line 353, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-grid-cell-special {
+  background-repeat: repeat-y;
+  background-position: top right; }
+/* line 359, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-grid-row .x-grid-cell-special,
+.x-nlg .x-grid-row-over .x-grid-cell-special {
+  background-image: url('../../resources/themes/images/default/grid/cell-special-bg.gif'); }
+/* line 365, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-grid-row-focused .x-grid-cell-special,
+.x-nlg .x-grid-row-selected .x-grid-cell-special {
+  background-image: url('../../resources/themes/images/default/grid/cell-special-selected-bg.gif'); }
+
+/* line 371, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-col-lines .x-grid-cell {
+  padding-right: 0;
+  border-right: 1px solid #d0d0d0; }
+
+/* line 378, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,
+.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner {
+  padding-left: 12px;
+  background-image: url('../../resources/themes/images/default/grid/property-cell-bg.gif');
+  background-repeat: no-repeat;
+  background-position: -16px 2px; }
+
+/* line 388, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,
+.x-grid-with-row-lines.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner {
+  background-position: -16px 1px; }
+
+/* line 394, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-quirks .x-ie .x-grid-row .x-grid-property-name .x-grid-cell-inner {
+  background-position: -16px 2px; }
+
+/* line 399, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-unselectable {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default; }
+
+/* line 403, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-body-hidden {
+  display: none; }
+
+/* line 407, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-collapsed {
+  display: none; }
+
+/* line 413, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-view .x-grid-td-expander {
+  vertical-align: top; }
+
+/* line 418, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-td-expander {
+  background: repeat-y right transparent; }
+
+/* line 424, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-view .x-grid-td-expander .x-grid-cell-inner {
+  padding: 0 !important; }
+
+/* line 430, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-expander {
+  background-image: url('../../resources/themes/images/default/grid/group-collapse.gif');
+  background-color: transparent;
+  width: 9px;
+  height: 13px;
+  margin-left: 3px;
+  background-repeat: no-repeat;
+  background-position: 0 -2px; }
+
+/* line 444, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-collapsed .x-grid-row-expander {
+  background-image: url('../../resources/themes/images/default/grid/group-expand.gif'); }
+
+/* line 449, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-resize-marker {
+  position: absolute;
+  z-index: 5;
+  top: 0;
+  width: 1px;
+  background-color: #0f0f0f; }
+
+/* line 459, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.col-move-top, .col-move-bottom {
+  width: 9px;
+  height: 9px;
+  position: absolute;
+  top: 0;
+  line-height: 0;
+  font-size: 0;
+  overflow: hidden;
+  z-index: 20000;
+  background: no-repeat left top transparent; }
+
+/* line 471, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.col-move-top {
+  background-image: url('../../resources/themes/images/default/grid/col-move-top.gif'); }
+
+/* line 475, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.col-move-bottom {
+  background-image: url('../../resources/themes/images/default/grid/col-move-bottom.gif'); }
+
+/* line 480, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-number {
+  width: 30px; }
+
+/* line 487, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group,
+.x-grid-group-body,
+.x-grid-group-hd {
+  zoom: 1; }
+
+/* line 491, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-hd {
+  padding-top: 6px; }
+  /* line 494, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-group-hd .x-grid-cell-inner {
+    padding: 10px 4px 4px 4px;
+    background: white;
+    border-width: 0 0 2px 0;
+    border-style: solid;
+    border-color: #99bbe8;
+    cursor: pointer; }
+
+/* line 508, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-hd-collapsible .x-grid-group-title {
+  background: transparent no-repeat 0 -1px;
+  background-image: url('../../resources/themes/images/default/grid/group-collapse.gif');
+  padding: 0 0 0 14px; }
+
+/* line 515, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-title {
+  color: #3764a0;
+  font: bold 11px tahoma, arial, verdana, sans-serif; }
+
+/* line 521, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-hd-collapsed .x-grid-group-title {
+  background-image: url('../../resources/themes/images/default/grid/group-expand.gif'); }
+
+/* line 526, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-collapsed .x-grid-group-body {
+  display: none; }
+
+/* line 530, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-collapsed .x-grid-group-title {
+  background-image: url('../../resources/themes/images/default/grid/group-expand.gif'); }
+
+/* line 534, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-group-by-icon {
+  background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+
+/* line 538, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-show-groups-icon {
+  background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+
+/* line 542, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-checkbox .x-column-header-inner {
+  padding: 0; }
+
+/* line 546, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell-special .x-grid-cell-inner {
+  padding-left: 4px;
+  padding-right: 4px; }
+
+/* line 552, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-checker,
+.x-column-header-checkbox .x-column-header-text {
+  height: 14px;
+  width: 14px;
+  line-height: 0;
+  background-image: url('../../resources/themes/images/default/grid/unchecked.gif');
+  background-position: -1px -1px;
+  background-repeat: no-repeat;
+  background-color: transparent; }
+
+/* line 564, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-checkbox .x-column-header-text {
+  display: block;
+  margin: 0 5px; }
+
+/* IE6, IE7, and all IE Quirks mode need line-height to be the same as checkbox height or the header/row height will be too tall */
+/* line 573, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-quirks .x-ie .x-grid-row-checker,
+.x-quirks .x-ie .x-column-header-checkbox .x-column-header-text, .x-ie7m .x-grid-row-checker, .x-ie7m .x-column-header-checkbox .x-column-header-text {
+  line-height: 14px; }
+
+/* line 579, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-hd-checker-on .x-column-header-text {
+  background-image: url('../../resources/themes/images/default/grid/checked.gif'); }
+
+/* line 583, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell-row-checker .x-grid-cell-inner {
+  padding-top: 4px;
+  padding-bottom: 2px;
+  line-height: 14px; }
+
+/* line 588, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-grid-cell-row-checker .x-grid-cell-inner {
+  padding-top: 3px; }
+
+/* line 591, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-checker {
+  margin-left: 1px;
+  background-position: 50% -2px; }
+
+/* line 598, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-selected .x-grid-row-checker,
+.x-grid-row-checked .x-grid-row-checker {
+  background-image: url('../../resources/themes/images/default/grid/checked.gif'); }
+
+/* line 603, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-first {
+  background-image: url('../../resources/themes/images/default/grid/page-first.gif') !important; }
+
+/* line 607, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-loading {
+  background-image: url('../../resources/themes/images/default/grid/refresh.gif') !important; }
+
+/* line 611, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-last {
+  background-image: url('../../resources/themes/images/default/grid/page-last.gif') !important; }
+
+/* line 615, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-next {
+  background-image: url('../../resources/themes/images/default/grid/page-next.gif') !important; }
+
+/* line 619, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-prev {
+  background-image: url('../../resources/themes/images/default/grid/page-prev.gif') !important; }
+
+/* line 624, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-loading {
+  background-image: url('../../resources/themes/images/default/grid/refresh-disabled.gif') !important; }
+/* line 628, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-first {
+  background-image: url('../../resources/themes/images/default/grid/page-first-disabled.gif') !important; }
+/* line 632, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-last {
+  background-image: url('../../resources/themes/images/default/grid/page-last-disabled.gif') !important; }
+/* line 636, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-next {
+  background-image: url('../../resources/themes/images/default/grid/page-next-disabled.gif') !important; }
+/* line 640, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-prev {
+  background-image: url('../../resources/themes/images/default/grid/page-prev-disabled.gif') !important; }
+
+/* line 646, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-hmenu-sort-asc .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/grid/hmenu-asc.gif'); }
+
+/* line 650, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-hmenu-sort-desc .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/grid/hmenu-desc.gif'); }
+
+/* line 654, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-hmenu-lock .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/grid/hmenu-lock.gif'); }
+
+/* line 658, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-hmenu-unlock .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/grid/hmenu-unlock.gif'); }
+
+/* line 662, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-group-by-icon {
+  background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+
+/* line 666, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-cols-icon .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/grid/columns.gif'); }
+
+/* line 670, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-show-groups-icon {
+  background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-drop-indicator {
+  position: absolute;
+  height: 1px;
+  line-height: 0px;
+  background-color: #77BC71;
+  overflow: visible; }
+  /* line 682, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-drop-indicator .x-grid-drop-indicator-left {
+    position: absolute;
+    top: -8px;
+    left: -12px;
+    background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-right.png');
+    height: 16px;
+    width: 16px; }
+  /* line 691, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-drop-indicator .x-grid-drop-indicator-right {
+    position: absolute;
+    top: -8px;
+    right: -11px;
+    background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-left.png');
+    height: 16px;
+    width: 16px; }
+
+/* line 702, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie6 .x-grid-drop-indicator-left {
+  background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-right.gif'); }
+/* line 706, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie6 .x-grid-drop-indicator-right {
+  background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-left.gif'); }
+
+/* line 714, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-text {
+  padding: 0 4px; }
+/* line 717, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-cb-wrap {
+  padding-top: 3px; }
+
+/* line 723, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor {
+  position: absolute !important;
+  z-index: 1;
+  zoom: 1;
+  overflow: visible !important; }
+  /* line 729, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-text {
+    padding: 0 2px; }
+  /* line 732, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-cb-wrap {
+    padding-top: 0; }
+  /* line 735, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-checkbox {
+    margin-left: -4px; }
+  /* line 738, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-display-field {
+    font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+    padding-top: 0;
+    padding-left: 2px; }
+  /* line 744, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-panel-body {
+    background-color: #eaf1fb;
+    border-top: 1px solid #99bce8 !important;
+    border-bottom: 1px solid #99bce8 !important; }
+
+/* line 754, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-cb-wrap, .x-grid-row-editor .x-form-cb-wrap {
+  text-align: center; }
+/* line 757, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-trigger, .x-grid-row-editor .x-form-trigger {
+  height: 19px; }
+/* line 761, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-trigger-wrap .x-form-spinner-up, .x-grid-editor .x-form-trigger-wrap .x-form-spinner-down, .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-up, .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url('../../resources/themes/images/default/form/spinner-small.gif');
+  height: 10px !important; }
+
+/* line 768, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-text, .x-grid-row-editor .x-form-text {
+  font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+  height: 18px; }
+
+/* line 776, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-border-box .x-grid-editor .x-form-trigger,
+.x-border-box .x-grid-row-editor .x-form-trigger {
+  height: 20px; }
+/* line 779, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-border-box .x-grid-editor .x-form-text,
+.x-border-box .x-grid-row-editor .x-form-text {
+  height: 20px;
+  padding-bottom: 1px; }
+
+/* line 787, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie .x-grid-editor .x-form-text {
+  padding-left: 5px; }
+/* line 790, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie .x-grid-row-editor .x-form-text {
+  padding-left: 3px; }
+
+/* line 796, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie8m .x-grid-editor .x-form-text,
+.x-ie8m .x-grid-row-editor .x-form-text {
+  padding-top: 1px; }
+
+/* line 803, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-strict .x-ie6 .x-grid-editor .x-form-text,
+.x-strict .x-ie6 .x-grid-row-editor .x-form-text,
+.x-strict .x-ie7 .x-grid-editor .x-form-text,
+.x-strict .x-ie7 .x-grid-row-editor .x-form-text {
+  height: 17px; }
+
+/* line 809, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-quirks .x-ie9 .x-grid-editor .x-form-text, .x-quirks .x-ie9 .x-grid-row-editor .x-form-text {
+  line-height: 17px; }
+
+/* line 828, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons {
+  background-color: #eaf1fb;
+  position: absolute;
+  bottom: -31px;
+  padding: 4px;
+  height: 32px; }
+  /* line 835, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-strict .x-ie7m .x-grid-row-editor-buttons {
+    width: 192px;
+    height: 24px; }
+
+/* line 845, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-ml,
+.x-grid-row-editor-buttons-mr,
+.x-grid-row-editor-buttons-bl,
+.x-grid-row-editor-buttons-br,
+.x-grid-row-editor-buttons-bc {
+  position: absolute;
+  overflow: hidden; }
+
+/* line 851, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-bl,
+.x-grid-row-editor-buttons-br {
+  width: 4px;
+  height: 4px;
+  bottom: 0px;
+  background-image: url('../../resources/themes/images/default/panel/panel-default-framed-corners.gif'); }
+
+/* line 857, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-bl {
+  left: 0px;
+  background-position: 0px -16px; }
+
+/* line 861, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-br {
+  right: 0px;
+  background-position: 0px -20px; }
+
+/* line 866, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-bc {
+  position: absolute;
+  left: 4px;
+  bottom: 0px;
+  width: 192px;
+  height: 1px;
+  background-color: #99bce8; }
+
+/* line 876, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-ml,
+.x-grid-row-editor-buttons-mr {
+  height: 27px;
+  width: 1px;
+  top: 1px;
+  background-color: #99bce8; }
+
+/* line 882, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-ml {
+  left: 0px; }
+
+/* line 885, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-mr {
+  background-position: 0px -20px;
+  right: 0px; }
+
+/* line 891, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-errors ul {
+  margin-left: 5px; }
+/* line 894, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-errors li {
+  list-style: disc;
+  margin-left: 15px; }
+
+/*misc*/
+/* line 9, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-webkit *:focus {
+  outline: none !important; }
+
+/* line 16, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item {
+  vertical-align: top;
+  table-layout: fixed; }
+
+/* line 26, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-autocontainer-form-item,
+.x-anchor-form-item,
+.x-vbox-form-item,
+.x-checkboxgroup-form-item,
+.x-table-form-item {
+  margin-bottom: 5px; }
+
+/* line 31, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-layout-table {
+  border-collapse: separate;
+  border-spacing: 0 2px; }
+
+/* line 37, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item-body {
+  position: relative; }
+
+/* line 42, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-form-item td {
+  border-top: 1px solid transparent; }
+
+/* line 51, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-ie6 .x-form-layout-table {
+  border-collapse: collapse;
+  border-spacing: 0; }
+/* line 56, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-ie6 .x-form-form-item td {
+  border-top-width: 0; }
+/* line 62, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-ie6 td.x-form-item-pad {
+  height: 5px; }
+
+/* line 68, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-editor .x-form-item-body {
+  padding-bottom: 0; }
+
+/* line 72, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item-label {
+  display: block;
+  padding: 3px 0 0;
+  font-size: 12px;
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default; }
+
+/* line 79, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item-label-top {
+  display: block;
+  zoom: 1;
+  padding: 0 0 5px 0; }
+
+/* line 85, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item-label-right {
+  text-align: right; }
+
+/* line 89, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-invalid-under {
+  padding: 2px 2px 2px 18px;
+  color: #c0272b;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  line-height: 16px;
+  background: no-repeat 0 2px;
+  background-image: url('../../resources/themes/images/default/form/exclamation.gif'); }
+
+/* line 100, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-invalid-icon {
+  width: 18px;
+  height: 14px;
+  background: no-repeat center center;
+  background-image: url('../../resources/themes/images/default/form/exclamation.gif');
+  overflow: hidden; }
+  /* line 106, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-form-invalid-icon ul {
+    display: block;
+    width: 18px; }
+    /* line 109, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+    .x-form-invalid-icon ul li {
+      /* prevent inner elements from interfering with QuickTip hovering */
+      display: none; }
+
+/* line 117, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-lbl-top-err-icon {
+  margin-bottom: 4px; }
+
+/* line 7, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-field,
+.x-form-display-field {
+  margin: 0 0 0 0;
+  font: normal 12px tahoma, arial, verdana, sans-serif;
+  color: black; }
+
+/* line 14, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-item-hidden {
+  margin: 0; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-text,
+textarea.x-form-field {
+  padding: 1px 3px;
+  background: repeat-x 0 0;
+  border: 1px solid;
+  background-color: white;
+  background-image: url('../../resources/themes/images/default/form/text-bg.gif');
+  border-color: #b5b8c8; }
+
+/* line 36, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-text {
+  height: 18px;
+  line-height: 15px;
+  vertical-align: top; }
+
+/* line 43, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-ie8m .x-form-text {
+  line-height: 15px; }
+
+/* line 48, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-border-box .x-form-text {
+  height: 22px; }
+
+/* line 52, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+textarea.x-form-field {
+  color: black;
+  overflow: auto;
+  height: auto;
+  line-height: normal;
+  background: repeat-x 0 0;
+  background-color: white;
+  background-image: url('../../resources/themes/images/default/form/text-bg.gif');
+  resize: none; }
+
+/* line 65, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-border-box textarea.x-form-field {
+  height: auto; }
+
+/* line 76, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-focus,
+textarea.x-form-focus {
+  border-color: #7eadd9; }
+
+/* line 81, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-invalid-field,
+textarea.x-form-invalid-field {
+  background-color: white;
+  background-image: url('../../resources/themes/images/default/grid/invalid_line.gif');
+  background-repeat: repeat-x;
+  background-position: bottom;
+  border-color: #cc3300; }
+
+/* line 91, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-item {
+  font: normal 12px tahoma, arial, verdana, sans-serif; }
+
+/* line 95, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-empty-field, textarea.x-form-empty-field {
+  color: gray; }
+
+/* line 100, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-webkit .x-form-empty-field {
+  line-height: 15px; }
+
+/* line 105, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-display-field {
+  padding-top: 3px; }
+
+        /*
+        In oldIE, text inputs get a mysterious extra pixel of spacing above and below.
+        This is targeted at IE6-IE7 (all modes) and IE9+ Quirks mode.
+
+        IE8 quirks on Windows 7 requires this fix, but on
+        IE8 quirks on Windows XP, this is breaks the layout.
+        TODO: Check field input heights in IE8 quirks on Windows Vista.
+
+        Since we can't specifically target a specific version of Windows via CSS, we default to fixing it the XP way, for now.
+        */
+/* line 121, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-quirks .x-ie9p .x-form-text,
+.x-ie7m .x-form-text {
+  margin-top: -1px;
+  margin-bottom: -1px; }
+
+/* line 126, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-ie .x-form-file {
+  height: 23px;
+  line-height: 18px;
+  vertical-align: middle; }
+
+/* line 135, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-field-default-toolbar .x-form-text {
+  height: 16px; }
+
+/* line 139, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-border-box .x-field-default-toolbar .x-form-text {
+  height: 20px; }
+
+/* line 143, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-field-default-toolbar .x-form-item-label-left {
+  padding-left: 4px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset {
+  border: 1px solid #b5b8c8;
+  padding: 10px;
+  margin-bottom: 10px;
+  display: block;
+  /* preserve margins in IE */
+  position: relative; }
+
+/* line 18, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-ie .x-fieldset {
+  padding-top: 0; }
+  /* line 20, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-ie .x-fieldset .x-fieldset-body {
+    padding-top: 10px; }
+
+/* line 25, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-header-checkbox {
+  line-height: 14px; }
+
+/* line 29, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-header {
+  font: 11px/14px bold tahoma, arial, verdana, sans-serif;
+  color: #15428b;
+  padding: 0 3px 1px;
+  overflow: hidden; }
+  /* line 35, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-fieldset-header-text {
+    float: left;
+    padding: 1px 0; }
+  /* line 39, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-fieldset-header-text-collapsible {
+    cursor: pointer; }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-form-item,
+  .x-fieldset-header .x-tool {
+    float: left;
+    margin: 1px 0 0 0; }
+  /* line 49, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-form-cb-wrap {
+    padding: 1px 0;
+    font-size: 0;
+    line-height: 0; }
+
+/* line 58, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-with-title .x-fieldset-header-checkbox,
+.x-fieldset-with-title .x-tool {
+  margin-right: 3px; }
+
+/* line 65, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-webkit .x-fieldset-header {
+  -webkit-padding-start: 3px;
+  -webkit-padding-end: 3px; }
+
+/* line 86, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-strict .x-ie8 .x-fieldset-header {
+  margin-bottom: -1px; }
+  /* line 90, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-strict .x-ie8 .x-fieldset-header .x-tool,
+  .x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,
+  .x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox {
+    position: relative;
+    top: -1px; }
+
+/* line 100, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-quirks .x-ie .x-fieldset-header,
+.x-ie8m .x-fieldset-header {
+  padding-left: 1px;
+  padding-right: 1px; }
+
+/* line 108, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-collapsed .x-fieldset-body {
+  display: none; }
+
+/* line 113, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-collapsed {
+  padding-bottom: 0 !important;
+  border-width: 1px 1px 0 1px !important;
+  border-left-color: transparent !important;
+  border-right-color: transparent !important; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-ie6 .x-fieldset-collapsed {
+  border-width: 1px 0 0 0 !important;
+  padding-bottom: 0 !important;
+  margin-left: 1px;
+  margin-right: 1px; }
+
+/* line 130, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-ie .x-fieldset-bwrap {
+  zoom: 1; }
+
+/* IE legend positioning bug */
+/* line 137, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-ie .x-fieldset-noborder legend {
+  position: relative;
+  margin-bottom: 23px; }
+
+/* line 143, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-ie .x-fieldset-noborder legend span {
+  position: absolute;
+  left: 16px; }
+
+/* line 149, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset {
+  overflow: hidden; }
+
+/* line 153, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-bwrap {
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 159, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-body {
+  overflow: hidden; }
+
+/* line 8, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+.x-form-file-wrap .x-form-text {
+  color: #777; }
+/* line 12, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+.x-form-file-wrap .x-form-file-btn {
+  overflow: hidden; }
+/* line 16, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+.x-form-file-wrap .x-form-file-input {
+  position: absolute;
+  top: -4px;
+  right: -2px;
+  height: 30px;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  /* Yes, there's actually a good reason for this...
+   * If the configured buttonText is set to something longer than the default,
+   * then it will quickly exceed the width of the hidden file input's "Browse..."
+   * button, so part of the custom button's clickable area will be covered by
+   * the hidden file input's text box instead. This results in a text-selection
+   * mouse cursor over that part of the button, at least in Firefox, which is
+   * confusing to a user. Giving the hidden file input a huge font-size makes
+   * the native button part very large so it will cover the whole clickable area.
+   */
+  font-size: 100px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-wrap {
+  padding-top: 3px; }
+
+/* line 11, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-checkbox,
+.x-form-radio {
+  vertical-align: -1px;
+  width: 13px;
+  height: 13px;
+  background: no-repeat;
+  background-image: url('../../resources/themes/images/default/form/checkbox.gif');
+  overflow: hidden;
+  padding: 0;
+  border: 0; }
+  /* line 22, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-form-checkbox::-moz-focus-inner,
+  .x-form-radio::-moz-focus-inner {
+    padding: 0;
+    border: 0; }
+
+/* Hack for IE; causes alignment problem in IE9 standards mode so exclude that */
+/* line 31, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-nbr.x-ie .x-form-checkbox,
+.x-nbr.x-ie .x-form-radio {
+  font-size: 0; }
+
+/* line 38, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-checked .x-form-checkbox,
+.x-form-cb-checked .x-form-radio {
+  background-position: 0 -13px; }
+
+/* Focused */
+/* line 44, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-focus {
+  background-position: -13px 0; }
+
+/* line 48, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-checked .x-form-cb-focus {
+  background-position: -13px -13px; }
+
+/* Radios */
+/* line 54, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-radio {
+  background-image: url('../../resources/themes/images/default/form/radio.gif'); }
+
+/* boxLabel */
+/* line 59, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-label-before {
+  margin-right: 4px; }
+
+/* line 62, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-label-after {
+  margin-left: 4px; }
+
+/* line 7, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+.x-form-checkboxgroup-body {
+  padding: 1px 4px 1px 4px; }
+
+/* line 12, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+.x-form-invalid .x-form-checkboxgroup-body {
+  border: 1px solid #c30!important;
+  background: transparent repeat-x bottom;
+  background-image: url('../../resources/themes/images/default/grid/invalid_line.gif');
+  padding: 1px 3px 0 3px; }
+
+/* line 20, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+.x-check-group-alt {
+  background: #d1ddef;
+  border-top: 1px dotted #b5b8c8;
+  border-bottom: 1px dotted #b5b8c8; }
+
+/* line 27, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+.x-form-check-group-label {
+  color: #333;
+  border-bottom: 1px solid #333;
+  margin: 0 30px 5px 0;
+  padding: 2px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap {
+  vertical-align: top; }
+
+/* line 10, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger {
+  background-image: url('../../resources/themes/images/default/form/trigger.gif');
+  background-position: 0 0;
+  width: 17px;
+  height: 21px;
+  border-bottom: 1px solid #b5b8c8;
+  cursor: pointer;
+  cursor: hand;
+  overflow: hidden; }
+
+/* line 24, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-border-box .x-form-trigger {
+  height: 22px; }
+
+/* line 28, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger {
+  height: 19px; }
+
+/* line 32, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-border-box .x-field-default-toolbar .x-form-trigger {
+  height: 20px; }
+
+/* line 37, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-over {
+  background-position: -17px 0;
+  border-bottom-color: #7eadd9; }
+
+/* line 43, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap-focus .x-form-trigger {
+  background-position: -51px 0;
+  border-bottom-color: #7eadd9; }
+
+/* line 49, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap-focus .x-form-trigger-over {
+  background-position: -68px 0;
+  border-bottom-color: null; }
+
+/* line 58, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-click,
+.x-form-trigger-wrap-focus .x-form-trigger-click {
+  background-position: -34px 0;
+  border-bottom-color: null; }
+
+/* line 66, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-icon {
+  height: 16px;
+  background-repeat: no-repeat;
+  background-position: 7px 6px; }
+
+/* line 74, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-pickerfield-open .x-form-field {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 80, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-pickerfield-open-above .x-form-field {
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  -o-border-bottom-left-radius: 3px;
+  -ms-border-bottom-left-radius: 3px;
+  -khtml-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-arrow-trigger .x-form-trigger-icon {
+  background-image: url('../../resources/themes/images/default/boundlist/trigger-arrow.png'); }
+
+/* line 92, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-date-trigger {
+  background-image: url('../../resources/themes/images/default/form/date-trigger.gif'); }
+
+/* line 99, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap .x-form-spinner-up,
+.x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url('../../resources/themes/images/default/form/spinner.gif');
+  width: 17px !important;
+  height: 11px !important;
+  font-size: 0;
+  /*for IE*/
+  border-bottom: 0; }
+/* line 109, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap .x-form-spinner-down {
+  background-position: 0 -11px; }
+
+/* line 113, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down {
+  background-position: -51px -11px; }
+
+/* line 116, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap .x-form-spinner-down-over {
+  background-position: -17px -11px; }
+
+/* line 119, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down-over {
+  background-position: -68px -11px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap .x-form-spinner-down-click {
+  background-position: -34px -11px; }
+
+/* line 131, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-up,
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url('../../resources/themes/images/default/form/spinner-small.gif');
+  height: 10px !important; }
+/* line 135, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down {
+  background-position: 0 -10px; }
+/* line 139, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down {
+  background-position: -51px -10px; }
+/* line 142, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-over {
+  background-position: -17px -10px; }
+/* line 145, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down-over {
+  background-position: -68px -10px; }
+/* line 148, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-click {
+  background-position: -34px -10px; }
+
+/* line 154, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-trigger-noedit {
+  cursor: pointer;
+  cursor: hand; }
+
+/* line 160, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-item-disabled .x-trigger-noedit, .x-item-disabled .x-form-trigger {
+  cursor: auto; }
+
+/* line 166, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-clear-trigger {
+  background-image: url('../../resources/themes/images/default/form/clear-trigger.gif'); }
+
+/* line 169, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-search-trigger {
+  background-image: url('../../resources/themes/images/default/form/search-trigger.gif'); }
+
+/* line 177, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-quirks .prefixie6 .x-form-trigger-input-cell {
+  height: 22px; }
+/* line 180, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-quirks .prefixie6 .x-field-default-toolbar .x-form-trigger-input-cell {
+  height: 20px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-wrap {
+  border: 1px solid #b5b8c8; }
+  /* line 9, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-html-editor-wrap .x-toolbar {
+    border-top-width: 0;
+    border-left-width: 0;
+    border-right-width: 0; }
+  /* line 15, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-html-editor-wrap textarea {
+    background-color: white; }
+
+/* line 20, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-btn-text {
+  background: transparent no-repeat;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 26, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-bold,
+.x-menu-item img.x-edit-bold {
+  background-position: 0 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 32, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-italic,
+.x-menu-item img.x-edit-italic {
+  background-position: -16px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 38, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-underline,
+.x-menu-item img.x-edit-underline {
+  background-position: -32px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 44, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-forecolor,
+.x-menu-item img.x-edit-forecolor {
+  background-position: -160px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 50, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-backcolor,
+.x-menu-item img.x-edit-backcolor {
+  background-position: -176px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 56, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-justifyleft,
+.x-menu-item img.x-edit-justifyleft {
+  background-position: -112px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 62, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-justifycenter,
+.x-menu-item img.x-edit-justifycenter {
+  background-position: -128px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 68, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-justifyright,
+.x-menu-item img.x-edit-justifyright {
+  background-position: -144px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 74, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-insertorderedlist,
+.x-menu-item img.x-edit-insertorderedlist {
+  background-position: -80px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 80, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-insertunorderedlist,
+.x-menu-item img.x-edit-insertunorderedlist {
+  background-position: -96px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 86, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-increasefontsize,
+.x-menu-item img.x-edit-increasefontsize {
+  background-position: -48px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 92, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-decreasefontsize,
+.x-menu-item img.x-edit-decreasefontsize {
+  background-position: -64px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 98, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-sourceedit,
+.x-menu-item img.x-edit-sourceedit {
+  background-position: -192px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 104, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-createlink,
+.x-menu-item img.x-edit-createlink {
+  background-position: -208px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 109, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tip .x-tip-bd .x-tip-bd-inner {
+  padding: 5px;
+  padding-bottom: 1px; }
+
+/* line 115, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-toolbar {
+  position: static !important; }
+/* line 118, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-font-select {
+  font-size: 11px; }
+
+/* line 123, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-wrap textarea {
+  border: 0;
+  padding: 3px 2px;
+  overflow: auto; }
+
+/* line 7, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel,
+.x-plain {
+  overflow: hidden;
+  position: relative; }
+
+/* line 24, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-ie .x-panel-header,
+.x-ie .x-panel-header-tl,
+.x-ie .x-panel-header-tc,
+.x-ie .x-panel-header-tr,
+.x-ie .x-panel-header-ml,
+.x-ie .x-panel-header-mc,
+.x-ie .x-panel-header-mr,
+.x-ie .x-panel-header-bl,
+.x-ie .x-panel-header-bc,
+.x-ie .x-panel-header-br {
+  zoom: 1; }
+
+/* line 30, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-ie8 td.x-frame-mc {
+  vertical-align: top; }
+
+/* line 37, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-horizontal {
+  padding: 3px 5px 4px; }
+
+/* line 40, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-vertical {
+  padding: 5px 4px; }
+
+/* line 45, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-icon,
+.x-window-header-icon {
+  width: 16px;
+  height: 16px;
+  background-repeat: no-repeat;
+  background-position: 0 0;
+  vertical-align: middle;
+  margin-right: 4px; }
+
+/* line 56, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-vertical .x-panel-header-icon,
+.x-vertical .x-window-header-icon {
+  margin: 0 0 4px; }
+
+/* line 64, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-draggable,
+.x-panel-header-draggable .x-panel-header-text,
+.x-window-header-draggable,
+.x-window-header-draggable .x-window-header-text {
+  cursor: move; }
+
+/* line 70, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-ghost, .x-window-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+  opacity: 0.65;
+  cursor: move; }
+
+/* line 76, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-horizontal .x-panel-header-body, .x-panel-header-horizontal .x-window-header-body, .x-panel-header-horizontal .x-btn-group-header-body, .x-window-header-horizontal .x-panel-header-body, .x-window-header-horizontal .x-window-header-body, .x-window-header-horizontal .x-btn-group-header-body, .x-btn-group-header-horizontal .x-panel-header-body, .x-btn-group-header-horizontal .x-window-header-body, .x-btn-group-header-horizontal .x-btn-group-header-body {
+  width: 100%; }
+
+/* line 82, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-vertical .x-panel-header-body, .x-panel-header-vertical .x-window-header-body, .x-panel-header-vertical .x-btn-group-header-body, .x-window-header-vertical .x-panel-header-body, .x-window-header-vertical .x-window-header-body, .x-window-header-vertical .x-btn-group-header-body, .x-btn-group-header-vertical .x-panel-header-body, .x-btn-group-header-vertical .x-window-header-body, .x-btn-group-header-vertical .x-btn-group-header-body {
+  height: 100%; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-text-container {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis; }
+
+/* line 93, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-text {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  white-space: nowrap; }
+
+/* line 100, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-left .x-vml-base,
+.x-panel-header-right .x-vml-base {
+  left: -3px !important; }
+
+/* line 106, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-body {
+  overflow: hidden;
+  position: relative;
+  font-size: 12px; }
+
+/* line 114, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-vertical .x-surface {
+  padding-left: 1px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-opera .x-panel-header-vertical .x-surface,
+.x-strict .x-ie9 .x-panel-header-vertical .x-surface {
+  padding-left: 2px; }
+
+/* line 129, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-collapsed-border-top {
+  border-bottom-width: 1px !important; }
+/* line 132, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-collapsed-border-right {
+  border-left-width: 1px !important; }
+/* line 135, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-collapsed-border-bottom {
+  border-top-width: 1px !important; }
+/* line 138, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-collapsed-border-left {
+  border-right-width: 1px !important; }
+
+/* line 145, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-vertical .x-frame-mc {
+  background-repeat: repeat-y; }
+
+/* line 248, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-default {
+  border-color: #99bce8; }
+
+/* line 253, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default {
+  font-size: 11px;
+  border-color: #99bce8;
+  border-width: 1px;
+  border-style: solid; }
+
+/* line 277, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-top {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif'); }
+
+/* line 281, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-bottom {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif'); }
+
+/* line 285, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-left {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif'); }
+
+/* line 289, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-right {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif'); }
+
+/* line 293, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-right {
+  background-position: top right; }
+
+/* line 297, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-bottom {
+  background-position: bottom left; }
+
+/* line 338, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-text-default {
+  color: #04408c;
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 17px; }
+
+/* line 348, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-body-default {
+  background: white;
+  border-color: #99bce8;
+  color: black;
+  border-width: 1px;
+  border-style: solid; }
+
+/* line 363, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-window-header-default,
+.x-panel-collapsed .x-panel-header-default {
+  border-color: #99bce8; }
+
+/* line 368, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-vertical {
+  border-color: #99bce8; }
+
+/* line 416, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-top {
+  -moz-border-radius-bottomleft: null;
+  -webkit-border-bottom-left-radius: null;
+  -o-border-bottom-left-radius: null;
+  -ms-border-bottom-left-radius: null;
+  -khtml-border-bottom-left-radius: null;
+  border-bottom-left-radius: null;
+  -moz-border-radius-bottomright: null;
+  -webkit-border-bottom-right-radius: null;
+  -o-border-bottom-right-radius: null;
+  -ms-border-bottom-right-radius: null;
+  -khtml-border-bottom-right-radius: null;
+  border-bottom-right-radius: null; }
+/* line 420, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-right {
+  -moz-border-radius-topleft: null;
+  -webkit-border-top-left-radius: null;
+  -o-border-top-left-radius: null;
+  -ms-border-top-left-radius: null;
+  -khtml-border-top-left-radius: null;
+  border-top-left-radius: null;
+  -moz-border-radius-bottomleft: null;
+  -webkit-border-bottom-left-radius: null;
+  -o-border-bottom-left-radius: null;
+  -ms-border-bottom-left-radius: null;
+  -khtml-border-bottom-left-radius: null;
+  border-bottom-left-radius: null; }
+/* line 424, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-bottom {
+  -moz-border-radius-topleft: null;
+  -webkit-border-top-left-radius: null;
+  -o-border-top-left-radius: null;
+  -ms-border-top-left-radius: null;
+  -khtml-border-top-left-radius: null;
+  border-top-left-radius: null;
+  -moz-border-radius-topright: null;
+  -webkit-border-top-right-radius: null;
+  -o-border-top-right-radius: null;
+  -ms-border-top-right-radius: null;
+  -khtml-border-top-right-radius: null;
+  border-top-right-radius: null; }
+/* line 428, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-left {
+  -moz-border-radius-topright: null;
+  -webkit-border-top-right-radius: null;
+  -o-border-top-right-radius: null;
+  -ms-border-top-right-radius: null;
+  -khtml-border-top-right-radius: null;
+  border-top-right-radius: null;
+  -moz-border-radius-bottomright: null;
+  -webkit-border-bottom-right-radius: null;
+  -o-border-bottom-right-radius: null;
+  -ms-border-bottom-right-radius: null;
+  -khtml-border-bottom-right-radius: null;
+  border-bottom-right-radius: null; }
+
+/* line 434, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-top {
+  -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+  box-shadow: #f4f8fd 0 1px 0px 0 inset; }
+
+/* line 438, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-right {
+  -moz-box-shadow: #f4f8fd -1px 0 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd -1px 0 0px 0 inset;
+  -o-box-shadow: #f4f8fd -1px 0 0px 0 inset;
+  box-shadow: #f4f8fd -1px 0 0px 0 inset; }
+
+/* line 442, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-bottom {
+  -moz-box-shadow: #f4f8fd 0 -1px 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 -1px 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 -1px 0px 0 inset;
+  box-shadow: #f4f8fd 0 -1px 0px 0 inset; }
+
+/* line 446, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-left {
+  -moz-box-shadow: #f4f8fd 1px 0 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 1px 0 0px 0 inset;
+  -o-box-shadow: #f4f8fd 1px 0 0px 0 inset;
+  box-shadow: #f4f8fd 1px 0 0px 0 inset; }
+
+/* line 481, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-right-tc,
+.x-panel-header-default-right-mc,
+.x-panel-header-default-right-bc {
+  background-position: right 0; }
+
+/* line 487, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-bottom-tc,
+.x-panel-header-default-bottom-mc,
+.x-panel-header-default-bottom-bc {
+  background-position: 0 bottom; }
+
+/* line 248, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-default-framed {
+  border-color: #99bce8; }
+
+/* line 253, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed {
+  font-size: 11px;
+  border-color: #99bce8;
+  border-width: 1px;
+  border-style: solid; }
+
+/* line 277, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-top {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif'); }
+
+/* line 281, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-bottom {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif'); }
+
+/* line 285, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-left {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif'); }
+
+/* line 289, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-right {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif'); }
+
+/* line 293, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-right {
+  background-position: top right; }
+
+/* line 297, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-bottom {
+  background-position: bottom left; }
+
+/* line 305, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nbr .x-panel-header-default-framed {
+  background-image: none; }
+
+/* line 317, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-strict .x-ie9 .x-panel-header-default-framed-top,
+.x-nlg.x-opera .x-panel-header-default-framed-top,
+.x-nlg.x-safari .x-panel-header-default-framed-top {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif'); }
+/* line 321, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-strict .x-ie9 .x-panel-header-default-framed-bottom,
+.x-nlg.x-opera .x-panel-header-default-framed-bottom,
+.x-nlg.x-safari .x-panel-header-default-framed-bottom {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif'); }
+/* line 325, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-strict .x-ie9 .x-panel-header-default-framed-left,
+.x-nlg.x-opera .x-panel-header-default-framed-left,
+.x-nlg.x-safari .x-panel-header-default-framed-left {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif'); }
+/* line 329, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-strict .x-ie9 .x-panel-header-default-framed-right,
+.x-nlg.x-opera .x-panel-header-default-framed-right,
+.x-nlg.x-safari .x-panel-header-default-framed-right {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif'); }
+
+/* line 338, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-text-default-framed {
+  color: #04408c;
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 17px; }
+
+/* line 348, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-body-default-framed {
+  background: #dfe9f6;
+  border-color: #99bce8;
+  color: black;
+  border-width: 0;
+  border-style: solid; }
+
+/* line 363, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-window-header-default-framed,
+.x-panel-collapsed .x-panel-header-default-framed {
+  border-color: #99bce8; }
+
+/* line 368, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-vertical {
+  border-color: #99bce8; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-default-framed {
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #dfe9f6; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-default-framed-mc {
+  background-color: #dfe9f6; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1000404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-default-framed-tl,
+.x-nbr .x-panel-default-framed-bl,
+.x-nbr .x-panel-default-framed-tr,
+.x-nbr .x-panel-default-framed-br,
+.x-nbr .x-panel-default-framed-tc,
+.x-nbr .x-panel-default-framed-bc,
+.x-nbr .x-panel-default-framed-ml,
+.x-nbr .x-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel/panel-default-framed-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-default-framed-ml,
+.x-nbr .x-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel/panel-default-framed-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-default-framed-mc {
+  padding: 1px 1px 1px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-default-framed-tl,
+.x-strict .x-ie7 .x-panel-default-framed-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-top {
+  padding: 3px 5px 4px 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #cbddf3; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-top-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1000000px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-top-tl,
+.x-nbr .x-panel-header-default-framed-top-bl,
+.x-nbr .x-panel-header-default-framed-top-tr,
+.x-nbr .x-panel-header-default-framed-top-br,
+.x-nbr .x-panel-header-default-framed-top-tc,
+.x-nbr .x-panel-header-default-framed-top-bc,
+.x-nbr .x-panel-header-default-framed-top-ml,
+.x-nbr .x-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-top-ml,
+.x-nbr .x-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-top-mc {
+  padding: 0px 2px 4px 2px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-right {
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-color: #cbddf3; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-right-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000004px 1100400px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-right-tl,
+.x-nbr .x-panel-header-default-framed-right-bl,
+.x-nbr .x-panel-header-default-framed-right-tr,
+.x-nbr .x-panel-header-default-framed-right-br,
+.x-nbr .x-panel-header-default-framed-right-tc,
+.x-nbr .x-panel-header-default-framed-right-bc,
+.x-nbr .x-panel-header-default-framed-right-ml,
+.x-nbr .x-panel-header-default-framed-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-corners.gif'); }
+/* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-right-tc,
+.x-nbr .x-panel-header-default-framed-right-bc {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-x; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-right-mc {
+  padding: 2px 1px 2px 4px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-right-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-bottom {
+  padding: 3px 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #cbddf3; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-bottom-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000000px 1000404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-bottom-tl,
+.x-nbr .x-panel-header-default-framed-bottom-bl,
+.x-nbr .x-panel-header-default-framed-bottom-tr,
+.x-nbr .x-panel-header-default-framed-bottom-br,
+.x-nbr .x-panel-header-default-framed-bottom-tc,
+.x-nbr .x-panel-header-default-framed-bottom-bc,
+.x-nbr .x-panel-header-default-framed-bottom-ml,
+.x-nbr .x-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-bottom-ml,
+.x-nbr .x-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-bottom-mc {
+  padding: 3px 2px 1px 2px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-left {
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-color: #cbddf3; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-left-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000400px 1100004px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-left-tl,
+.x-nbr .x-panel-header-default-framed-left-bl,
+.x-nbr .x-panel-header-default-framed-left-tr,
+.x-nbr .x-panel-header-default-framed-left-br,
+.x-nbr .x-panel-header-default-framed-left-tc,
+.x-nbr .x-panel-header-default-framed-left-bc,
+.x-nbr .x-panel-header-default-framed-left-ml,
+.x-nbr .x-panel-header-default-framed-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-corners.gif'); }
+/* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-left-tc,
+.x-nbr .x-panel-header-default-framed-left-bc {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-x; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-left-mc {
+  padding: 2px 4px 2px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-left-bl {
+  position: relative;
+  right: 0; }
+
+/* line 399, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-top {
+  -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset; }
+
+/* line 403, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-right {
+  -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset;
+  box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset; }
+
+/* line 407, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-bottom {
+  -moz-box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset; }
+
+/* line 411, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-left {
+  -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset; }
+
+/* line 452, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel .x-panel-header-default-framed-top {
+  border-bottom-width: 1px !important; }
+
+/* line 456, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel .x-panel-header-default-framed-right {
+  border-left-width: 1px !important; }
+
+/* line 460, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel .x-panel-header-default-framed-bottom {
+  border-top-width: 1px !important; }
+
+/* line 464, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel .x-panel-header-default-framed-left {
+  border-right-width: 1px !important; }
+
+/* line 468, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-collapsed {
+  -moz-border-radius: 4px;
+  -webkit-border-radius: 4px;
+  -o-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -khtml-border-radius: 4px;
+  border-radius: 4px; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-collapsed-top {
+  padding: 3px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #cbddf3; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-top-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1000404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top-tl,
+.x-nbr .x-panel-header-default-framed-collapsed-top-bl,
+.x-nbr .x-panel-header-default-framed-collapsed-top-tr,
+.x-nbr .x-panel-header-default-framed-collapsed-top-br,
+.x-nbr .x-panel-header-default-framed-collapsed-top-tc,
+.x-nbr .x-panel-header-default-framed-collapsed-top-bc,
+.x-nbr .x-panel-header-default-framed-collapsed-top-ml,
+.x-nbr .x-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top-ml,
+.x-nbr .x-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-top-mc {
+  padding: 0px 2px 1px 2px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-collapsed-right {
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #cbddf3; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-right-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1100404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right-tl,
+.x-nbr .x-panel-header-default-framed-collapsed-right-bl,
+.x-nbr .x-panel-header-default-framed-collapsed-right-tr,
+.x-nbr .x-panel-header-default-framed-collapsed-right-br,
+.x-nbr .x-panel-header-default-framed-collapsed-right-tc,
+.x-nbr .x-panel-header-default-framed-collapsed-right-bc,
+.x-nbr .x-panel-header-default-framed-collapsed-right-ml,
+.x-nbr .x-panel-header-default-framed-collapsed-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-corners.gif'); }
+/* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right-tc,
+.x-nbr .x-panel-header-default-framed-collapsed-right-bc {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-x; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-right-mc {
+  padding: 2px 1px 2px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-collapsed-bottom {
+  padding: 3px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #cbddf3; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-bottom-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1000404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-tl,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-bl,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-tr,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-br,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-tc,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-bc,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-bottom-mc {
+  padding: 0px 2px 1px 2px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-collapsed-left {
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #cbddf3; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-left-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1100404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left-tl,
+.x-nbr .x-panel-header-default-framed-collapsed-left-bl,
+.x-nbr .x-panel-header-default-framed-collapsed-left-tr,
+.x-nbr .x-panel-header-default-framed-collapsed-left-br,
+.x-nbr .x-panel-header-default-framed-collapsed-left-tc,
+.x-nbr .x-panel-header-default-framed-collapsed-left-bc,
+.x-nbr .x-panel-header-default-framed-collapsed-left-ml,
+.x-nbr .x-panel-header-default-framed-collapsed-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-corners.gif'); }
+/* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left-tc,
+.x-nbr .x-panel-header-default-framed-collapsed-left-bc {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-x; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-panel-header-default-framed-collapsed-left-mc {
+  padding: 2px 1px 2px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,
+.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl {
+  position: relative;
+  right: 0; }
+
+/* line 481, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-right-tc,
+.x-panel-header-default-framed-right-mc,
+.x-panel-header-default-framed-right-bc {
+  background-position: right 0; }
+
+/* line 487, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-bottom-tc,
+.x-panel-header-default-framed-bottom-mc,
+.x-panel-header-default-framed-bottom-bc {
+  background-position: 0 bottom; }
+
+/* line 197, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-plain,
+.x-panel-body-plain {
+  border: 0;
+  padding: 0; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip {
+  position: absolute;
+  overflow: visible;
+  /*pointer needs to be able to stick out*/
+  border-color: #8eaace; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-tip .x-tip-header .x-box-item {
+    padding: 3px 3px 0; }
+  /* line 16, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-tip .x-tip-header .x-tool {
+    padding: 0px 1px 0 0 !important; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-tip {
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #e9f2ff; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-tip-mc {
+  background-color: #e9f2ff; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tip {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tip-tl,
+.x-nbr .x-tip-bl,
+.x-nbr .x-tip-tr,
+.x-nbr .x-tip-br,
+.x-nbr .x-tip-tc,
+.x-nbr .x-tip-bc,
+.x-nbr .x-tip-ml,
+.x-nbr .x-tip-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/tip/tip-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tip-ml,
+.x-nbr .x-tip-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/tip/tip-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tip-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-tip-tl,
+.x-strict .x-ie7 .x-tip-bl {
+  position: relative;
+  right: 0; }
+
+/* line 31, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-header-text {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  color: #444444;
+  font-size: 11px;
+  font-weight: bold; }
+
+/* line 40, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-header-draggable .x-tip-header-text {
+  cursor: move; }
+
+/* line 47, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-body,
+.x-form-invalid-tip-body {
+  overflow: hidden;
+  position: relative;
+  padding: 3px; }
+
+/* line 55, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-header,
+.x-tip-body,
+.x-form-invalid-tip-body {
+  color: #444444;
+  font-size: 11px;
+  font-weight: normal; }
+  /* line 59, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-tip-header a,
+  .x-tip-body a,
+  .x-form-invalid-tip-body a {
+    color: #2a2a2a; }
+
+/* line 64, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  height: 0;
+  width: 0;
+  border-style: solid;
+  border-width: 5px;
+  border-color: #8eaace;
+  zoom: 1; }
+
+/* line 79, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-border-box .x-tip-anchor {
+  width: 10px;
+  height: 10px; }
+
+/* line 84, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor-top {
+  border-top-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 97, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor-bottom {
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 110, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor-left {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 123, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor-right {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 137, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-form-invalid-tip {
+  border-color: #a1311f;
+  -moz-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  -webkit-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  -o-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset; }
+
+/* line 146, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-form-invalid-tip-body {
+  background: 1px 1px no-repeat;
+  background-image: url('../../resources/themes/images/default/form/exclamation.gif');
+  padding-left: 22px; }
+  /* line 151, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-form-invalid-tip-body li {
+    margin-bottom: 4px; }
+    /* line 153, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+    .x-form-invalid-tip-body li.last {
+      margin-bottom: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-form-invalid-tip-default {
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: white; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-form-invalid-tip-default-mc {
+  background-color: white; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-form-invalid-tip-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-form-invalid-tip-default-tl,
+.x-nbr .x-form-invalid-tip-default-bl,
+.x-nbr .x-form-invalid-tip-default-tr,
+.x-nbr .x-form-invalid-tip-default-br,
+.x-nbr .x-form-invalid-tip-default-tc,
+.x-nbr .x-form-invalid-tip-default-bc,
+.x-nbr .x-form-invalid-tip-default-ml,
+.x-nbr .x-form-invalid-tip-default-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-form-invalid-tip-default-ml,
+.x-nbr .x-form-invalid-tip-default-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-form-invalid-tip-default-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-form-invalid-tip-default-tl,
+.x-strict .x-ie7 .x-form-invalid-tip-default-bl {
+  position: relative;
+  right: 0; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider {
+  zoom: 1; }
+
+/* line 10, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-inner {
+  position: relative;
+  left: 0;
+  top: 0;
+  overflow: visible;
+  zoom: 1; }
+
+/* line 18, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-focus {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px;
+  line-height: 1px;
+  font-size: 1px;
+  -moz-outline: 0 none;
+  outline: 0 none;
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  display: block;
+  overflow: hidden; }
+
+/* Horizontal styles */
+/* line 34, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz {
+  padding-left: 7px;
+  background: transparent no-repeat 0 -24px;
+  width: 100%; }
+
+/* line 40, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-end {
+  padding-right: 7px;
+  zoom: 1;
+  background: transparent no-repeat right -46px; }
+
+/* line 46, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-inner {
+  background: transparent repeat-x 0 -2px;
+  height: 18px; }
+
+/* line 51, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb {
+  width: 14px;
+  height: 15px;
+  margin-left: -7px;
+  position: absolute;
+  left: 0;
+  top: 1px;
+  background: transparent no-repeat 0 0; }
+
+/* line 61, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb-over {
+  background-position: -14px -15px; }
+
+/* line 65, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb-drag {
+  background-position: -28px -30px; }
+
+/* Vertical styles */
+/* line 70, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert {
+  padding-top: 7px;
+  background: transparent no-repeat -44px 0; }
+
+/* line 75, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-end {
+  padding-bottom: 7px;
+  zoom: 1;
+  background: transparent no-repeat -22px bottom;
+  width: 22px; }
+
+/* line 82, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-inner {
+  background: transparent repeat-y 0 0;
+  width: 22px; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb {
+  width: 15px;
+  height: 14px;
+  margin-bottom: -7px;
+  position: absolute;
+  left: 3px;
+  bottom: 0;
+  background: transparent no-repeat 0 0; }
+
+/* line 97, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb-over {
+  background-position: -15px -14px; }
+
+/* line 101, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb-drag {
+  background-position: -30px -28px; }
+
+/* line 107, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz,
+.x-slider-horz .x-slider-end,
+.x-slider-horz .x-slider-inner {
+  background-image: url('../../resources/themes/images/default/slider/slider-bg.png'); }
+
+/* line 111, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb {
+  background-image: url('../../resources/themes/images/default/slider/slider-thumb.png'); }
+
+/* line 117, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert,
+.x-slider-vert .x-slider-end,
+.x-slider-vert .x-slider-inner {
+  background-image: url('../../resources/themes/images/default/slider/slider-v-bg.png'); }
+
+/* line 121, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb {
+  background-image: url('../../resources/themes/images/default/slider/slider-v-thumb.png'); }
+
+/* line 129, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-ie6 .x-slider-horz,
+.x-ie6 .x-slider-horz .x-slider-end,
+.x-ie6 .x-slider-horz .x-slider-inner {
+  background-image: url('../../resources/themes/images/default/slider/slider-bg.gif'); }
+/* line 133, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-ie6 .x-slider-horz .x-slider-thumb {
+  background-image: url('../../resources/themes/images/default/slider/slider-thumb.gif'); }
+/* line 139, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-ie6 .x-slider-vert,
+.x-ie6 .x-slider-vert .x-slider-end,
+.x-ie6 .x-slider-vert .x-slider-inner {
+  background-image: url('../../resources/themes/images/default/slider/slider-v-bg.gif'); }
+/* line 143, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-ie6 .x-slider-vert .x-slider-thumb {
+  background-image: url('../../resources/themes/images/default/slider/slider-v-thumb.gif'); }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress {
+  position: relative;
+  border-width: 1px;
+  border-style: solid;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0;
+  overflow: hidden;
+  height: 20px; }
+
+/* line 17, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress-bar {
+  height: 18px;
+  overflow: hidden;
+  position: absolute;
+  width: 0;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0;
+  border-right: 1px solid;
+  border-top: 1px solid; }
+
+/* line 30, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress-text {
+  overflow: hidden;
+  position: absolute;
+  padding: 0 5px;
+  height: 18px;
+  font-weight: bold;
+  font-size: 11px;
+  line-height: 16px;
+  text-align: center; }
+
+/* line 45, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress-text-back {
+  padding-top: 1px; }
+
+/* line 50, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-strict .x-ie7m .x-progress {
+  height: 18px; }
+
+/* line 93, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress-default {
+  border-color: #6594cf; }
+  /* line 96, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-progress-default .x-progress-bar {
+    border-right-color: #6594cf;
+    border-top-color: #c6d8ed;
+    background-image: none;
+    background-color: #73a3e0;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b2ccee), color-stop(50%, #88b1e5), color-stop(51%, #73a3e0), color-stop(100%, #5e96db));
+    background-image: -webkit-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+    background-image: -moz-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+    background-image: -o-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+    background-image: -ms-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+    background-image: linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db); }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-progress-default .x-progress-text {
+    color: white; }
+  /* line 107, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-progress-default .x-progress-text-back {
+    color: #396295; }
+
+/* line 116, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-nlg .x-progress-default .x-progress-bar {
+  background: repeat-x;
+  background-image: url('../../resources/themes/images/default/progress/progress-default-bg.gif'); }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar {
+  font-size: 11px;
+  border: 1px solid;
+  padding: 2px 0 2px 2px; }
+  /* line 13, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-form-item-label {
+    font-size: 11px;
+    line-height: 15px; }
+  /* line 18, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-item {
+    margin: 0 2px 0 0; }
+  /* line 22, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-text {
+    margin-left: 4px;
+    margin-right: 6px;
+    white-space: nowrap;
+    color: #4c4c4c;
+    line-height: 16px;
+    font-family: tahoma, arial, verdana, sans-serif;
+    font-size: 11px;
+    font-weight: normal; }
+  /* line 33, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-separator {
+    display: block;
+    font-size: 1px;
+    overflow: hidden;
+    cursor: default;
+    border: 0; }
+  /* line 41, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-separator-horizontal {
+    margin: 0 3px 0 2px;
+    height: 14px;
+    width: 0px;
+    border-left: 1px solid #98c8ff;
+    border-right: 1px solid white; }
+
+/* line 53, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal {
+  width: 2px; }
+
+/* line 58, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-footer {
+  background: transparent;
+  border: 0px none;
+  margin-top: 3px;
+  padding: 2px 0 2px 6px; }
+  /* line 65, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-footer .x-box-inner {
+    border-width: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-footer .x-toolbar-item {
+    margin: 0 6px 0 0; }
+
+/* line 74, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-vertical {
+  padding: 2px 2px 0 2px; }
+  /* line 77, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-vertical .x-toolbar-item {
+    margin: 0 0 2px 0; }
+  /* line 81, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-vertical .x-toolbar-text {
+    margin-top: 4px;
+    margin-bottom: 6px; }
+  /* line 86, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-vertical .x-toolbar-separator-vertical {
+    margin: 2px 5px 3px 5px;
+    height: 0px;
+    width: 10px;
+    line-height: 0px;
+    border-top: 1px solid #98c8ff;
+    border-bottom: 1px solid white; }
+
+/* line 98, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-scroller {
+  padding-left: 0; }
+
+/* line 102, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-spacer {
+  width: 2px; }
+
+/* line 107, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-more-icon {
+  background-image: url('../../resources/themes/images/default/toolbar/more.gif') !important;
+  background-position: 2px center !important;
+  background-repeat: no-repeat; }
+
+/* line 144, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-default {
+  border-color: #99bce8;
+  background-image: none;
+  background-color: #d3e1f1;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dfe9f5), color-stop(100%, #d3e1f1));
+  background-image: -webkit-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: -moz-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: -o-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: -ms-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: linear-gradient(top, #dfe9f5, #d3e1f1); }
+
+/* line 155, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-nlg .x-toolbar-default {
+  background-image: url('../../resources/themes/images/default/toolbar/toolbar-default-bg.gif') !important;
+  background-repeat: repeat-x; }
+
+/* line 123, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-plain {
+  border: 0; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window {
+  outline: none;
+  overflow: hidden; }
+  /* line 10, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-window .x-window-wrap {
+    position: relative; }
+
+/* line 15, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-body {
+  position: relative;
+  border-style: solid;
+  overflow: hidden; }
+
+/* line 24, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-maximized .x-window-wrap .x-window-header {
+  -moz-border-radius: 0 !important;
+  -webkit-border-radius: 0 !important;
+  -o-border-radius: 0 !important;
+  -ms-border-radius: 0 !important;
+  -khtml-border-radius: 0 !important;
+  border-radius: 0 !important; }
+
+/* line 30, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-top {
+  margin-bottom: -2px; }
+
+/* line 33, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-body-horizontal {
+  margin-top: -1px; }
+
+/* line 37, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-bottom {
+  margin-top: -1px;
+  margin-bottom: -1px; }
+
+/* line 42, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-left {
+  margin-right: -1px; }
+
+/* line 46, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-right {
+  margin-left: -1px; }
+
+/* line 51, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-vertical .x-surface {
+  padding-left: 1px; }
+
+/* line 58, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-vertical {
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  -o-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -khtml-border-radius: 5px;
+  border-radius: 5px; }
+/* line 61, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-horizontal {
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  -o-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -khtml-border-radius: 5px;
+  border-radius: 5px; }
+/* line 66, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-left {
+  padding-right: 5px !important;
+  margin-right: 0; }
+/* line 71, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-right {
+  padding-left: 5px !important;
+  margin-left: 0; }
+/* line 76, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-top {
+  padding-bottom: 5px !important;
+  margin-bottom: -1px; }
+/* line 81, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-bottom {
+  padding-top: 5px !important;
+  margin-top: 0; }
+
+/* line 89, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-left .x-vml-base,
+.x-window-header-right .x-vml-base {
+  left: -3px !important; }
+
+/* line 97, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-opera .x-window-header-vertical .x-surface,
+.x-strict .x-ie9 .x-window-header-vertical .x-surface {
+  padding-left: 2px; }
+
+/* line 103, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-text-container {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis; }
+
+/* line 109, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-text {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  white-space: nowrap; }
+
+/* line 159, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-default {
+  border-color: #a2b1c5;
+  -moz-border-radius: 5px 5px;
+  -webkit-border-radius: 5px 5px;
+  -o-border-radius: 5px 5px;
+  -ms-border-radius: 5px 5px;
+  -khtml-border-radius: 5px 5px;
+  border-radius: 5px 5px;
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-default {
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-default-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-default-tl,
+.x-nbr .x-window-default-bl,
+.x-nbr .x-window-default-tr,
+.x-nbr .x-window-default-br,
+.x-nbr .x-window-default-tc,
+.x-nbr .x-window-default-bc,
+.x-nbr .x-window-default-ml,
+.x-nbr .x-window-default-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window/window-default-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-default-ml,
+.x-nbr .x-window-default-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window/window-default-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-default-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-default-tl,
+.x-strict .x-ie7 .x-window-default-bl {
+  position: relative;
+  right: 0; }
+
+/* line 178, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-body-default {
+  border-color: #99bbe8;
+  border-width: 1px;
+  background: #dfe8f6;
+  color: black; }
+
+/* line 188, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default {
+  font-size: 11px;
+  border-color: #a2b1c5;
+  zoom: 1; }
+
+/* line 194, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-text-default {
+  color: #04468c;
+  font-weight: bold;
+  line-height: 17px;
+  font-family: tahoma, arial, verdana, sans-serif;
+  font-size: 11px; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-top {
+  padding: 4px 5px 0 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-top-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000000px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-top-tl,
+.x-nbr .x-window-header-default-top-bl,
+.x-nbr .x-window-header-default-top-tr,
+.x-nbr .x-window-header-default-top-br,
+.x-nbr .x-window-header-default-top-tc,
+.x-nbr .x-window-header-default-top-bc,
+.x-nbr .x-window-header-default-top-ml,
+.x-nbr .x-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-top-ml,
+.x-nbr .x-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-top-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-top-mc {
+  padding: 0px 1px 0 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-top-tl,
+.x-strict .x-ie7 .x-window-header-default-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-right {
+  padding: 5px 4px 5px 0;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-right-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000005px 1000500px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-right-tl,
+.x-nbr .x-window-header-default-right-bl,
+.x-nbr .x-window-header-default-right-tr,
+.x-nbr .x-window-header-default-right-br,
+.x-nbr .x-window-header-default-right-tc,
+.x-nbr .x-window-header-default-right-bc,
+.x-nbr .x-window-header-default-right-ml,
+.x-nbr .x-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-right-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-right-ml,
+.x-nbr .x-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-right-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-right-mc {
+  padding: 1px 0px 1px 0; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-right-tl,
+.x-strict .x-ie7 .x-window-header-default-right-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-bottom {
+  padding: 0 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-bottom-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000000px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-bottom-tl,
+.x-nbr .x-window-header-default-bottom-bl,
+.x-nbr .x-window-header-default-bottom-tr,
+.x-nbr .x-window-header-default-bottom-br,
+.x-nbr .x-window-header-default-bottom-tc,
+.x-nbr .x-window-header-default-bottom-bc,
+.x-nbr .x-window-header-default-bottom-ml,
+.x-nbr .x-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-bottom-ml,
+.x-nbr .x-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-bottom-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-bottom-mc {
+  padding: 0 1px 0px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-bottom-tl,
+.x-strict .x-ie7 .x-window-header-default-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-left {
+  padding: 5px 0px 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-left-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000500px 1000005px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-left-tl,
+.x-nbr .x-window-header-default-left-bl,
+.x-nbr .x-window-header-default-left-tr,
+.x-nbr .x-window-header-default-left-br,
+.x-nbr .x-window-header-default-left-tc,
+.x-nbr .x-window-header-default-left-bc,
+.x-nbr .x-window-header-default-left-ml,
+.x-nbr .x-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-left-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-left-ml,
+.x-nbr .x-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-left-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-left-mc {
+  padding: 1px 0px 1px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-left-tl,
+.x-strict .x-ie7 .x-window-header-default-left-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-collapsed-top {
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-collapsed-top-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-top-tl,
+.x-nbr .x-window-header-default-collapsed-top-bl,
+.x-nbr .x-window-header-default-collapsed-top-tr,
+.x-nbr .x-window-header-default-collapsed-top-br,
+.x-nbr .x-window-header-default-collapsed-top-tc,
+.x-nbr .x-window-header-default-collapsed-top-bc,
+.x-nbr .x-window-header-default-collapsed-top-ml,
+.x-nbr .x-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-top-ml,
+.x-nbr .x-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-top-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-top-mc {
+  padding: 0px 1px 0px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-collapsed-right {
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-collapsed-right-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-right-tl,
+.x-nbr .x-window-header-default-collapsed-right-bl,
+.x-nbr .x-window-header-default-collapsed-right-tr,
+.x-nbr .x-window-header-default-collapsed-right-br,
+.x-nbr .x-window-header-default-collapsed-right-tc,
+.x-nbr .x-window-header-default-collapsed-right-bc,
+.x-nbr .x-window-header-default-collapsed-right-ml,
+.x-nbr .x-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-right-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-right-ml,
+.x-nbr .x-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-right-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-right-mc {
+  padding: 1px 0px 1px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-collapsed-bottom {
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-collapsed-bottom-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-bottom-tl,
+.x-nbr .x-window-header-default-collapsed-bottom-bl,
+.x-nbr .x-window-header-default-collapsed-bottom-tr,
+.x-nbr .x-window-header-default-collapsed-bottom-br,
+.x-nbr .x-window-header-default-collapsed-bottom-tc,
+.x-nbr .x-window-header-default-collapsed-bottom-bc,
+.x-nbr .x-window-header-default-collapsed-bottom-ml,
+.x-nbr .x-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-bottom-ml,
+.x-nbr .x-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-bottom-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-bottom-mc {
+  padding: 0px 1px 0px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-collapsed-left {
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-collapsed-left-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-left-tl,
+.x-nbr .x-window-header-default-collapsed-left-bl,
+.x-nbr .x-window-header-default-collapsed-left-tr,
+.x-nbr .x-window-header-default-collapsed-left-br,
+.x-nbr .x-window-header-default-collapsed-left-tc,
+.x-nbr .x-window-header-default-collapsed-left-bc,
+.x-nbr .x-window-header-default-collapsed-left-ml,
+.x-nbr .x-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-left-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-left-ml,
+.x-nbr .x-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-left-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-window-header-default-collapsed-left-mc {
+  padding: 1px 0px 1px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,
+.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl {
+  position: relative;
+  right: 0; }
+
+/* line 217, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default-top {
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+
+/* line 221, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default-right {
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+  -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset; }
+
+/* line 225, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default-bottom {
+  -moz-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -webkit-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -o-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+
+/* line 229, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default-left {
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+
+/* line 130, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-body-plain {
+  background: transparent; }
+
+/* line 2, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box .x-window-body {
+  background-color: #ced9e7;
+  border: none; }
+
+/* line 7, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box .x-progress-wrap {
+  margin-top: 4px; }
+
+/* line 11, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-icon {
+  width: 47px;
+  height: 32px; }
+
+/* line 19, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-info,
+.x-message-box-warning,
+.x-message-box-question,
+.x-message-box-error {
+  background: transparent no-repeat top left; }
+
+/* line 23, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box .x-msg-box-wait {
+  background-image: url('../../resources/themes/images/default/shared/blue-loading.gif'); }
+
+/* line 27, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-info {
+  background-image: url('../../resources/themes/images/default/shared/icon-info.gif'); }
+
+/* line 31, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-warning {
+  background-image: url('../../resources/themes/images/default/shared/icon-warning.gif'); }
+
+/* line 35, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-question {
+  background-image: url('../../resources/themes/images/default/shared/icon-question.gif'); }
+
+/* line 39, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-error {
+  background-image: url('../../resources/themes/images/default/shared/icon-error.gif'); }
+
+/* line 73, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar {
+  position: relative;
+  background-color: transparent;
+  background-image: none;
+  background-color: #cbdbef;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef));
+  background-image: -webkit-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: -moz-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: -o-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: -ms-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: linear-gradient(top, #dde8f5, #cbdbef);
+  font-size: 11px; }
+
+/* line 80, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-nlg .x-tab-bar {
+  background-image: url('../../resources/themes/images/default/tab-bar/tab-bar-default-bg.gif'); }
+
+/* line 85, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-default-plain,
+.x-nlg .x-tab-bar-default-plain {
+  background: transparent none; }
+
+/* line 90, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-body {
+  border-style: solid;
+  border-color: #99bce8;
+  position: relative;
+  z-index: 2;
+  zoom: 1; }
+
+/* Top Tabs */
+/* line 4, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-top .x-tab-bar-body {
+  height: 20px;
+  border-width: 1px 1px 0;
+  padding: 1px 0 3px; }
+/* line 10, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-top .x-tab-bar-strip {
+  /*position strip from top rather than bottom to avoid off-by-one error in IE6*/
+  top: 22px;
+  border-width: 1px 1px 0;
+  height: 2px; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-top .x-tab-bar-body {
+  height: 25px; }
+/* line 23, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-top .x-tab-bar-strip {
+  height: 3px; }
+
+/* line 4, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-top .x-tab-bar-body-default-plain {
+  height: 20px;
+  border-width: 0;
+  padding: 0 0 2px; }
+/* line 10, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-top .x-tab-bar-strip-default-plain {
+  /*position strip from top rather than bottom to avoid off-by-one error in IE6*/
+  top: 20px;
+  border-width: 1px 1px 0 1px;
+  height: 2px; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-top .x-tab-bar-body-default-plain {
+  height: 22px; }
+/* line 23, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-top .x-tab-bar-strip-default-plain {
+  height: 3px; }
+
+/* Bottom Tabs */
+/* line 32, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-bottom .x-tab-bar-body {
+  height: 20px;
+  border-width: 0 1px 1px;
+  padding: 3px 0 1px; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-tab-bar-bottom .x-tab-bar-body .x-box-inner {
+    position: relative;
+    top: -1px; }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller,
+  .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-left,
+  .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-right {
+    height: 22px; }
+/* line 49, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-bottom .x-tab-bar-strip {
+  top: 0;
+  border-width: 0 1px 1px 1px;
+  height: 2px; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-bottom .x-tab-bar-body {
+  height: 25px; }
+/* line 61, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-bottom .x-tab-bar-strip {
+  height: 3px; }
+
+/* line 32, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-bottom .x-tab-bar-body-default-plain {
+  height: 20px;
+  border-width: 0;
+  padding: 3px 0 0; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-inner {
+    position: relative;
+    top: -1px; }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller,
+  .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-left,
+  .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-right {
+    height: 21px; }
+/* line 49, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-bottom .x-tab-bar-strip-default-plain {
+  top: 0;
+  border-width: 0 1px 1px 1px;
+  height: 2px; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-bottom .x-tab-bar-body-default-plain {
+  height: 23px; }
+/* line 61, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-bottom .x-tab-bar-strip-default-plain {
+  height: 3px; }
+
+/* line 141, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-strip-default,
+.x-tab-bar-strip-default-plain {
+  font-size: 0;
+  line-height: 0;
+  position: absolute;
+  z-index: 1;
+  border-style: solid;
+  overflow: hidden;
+  border-color: #99bce8;
+  background-color: #deecfd;
+  zoom: 1; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-tab-default-top {
+  padding: 3px 3px 0 3px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #deecfd; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-tab-default-top-mc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-bg.gif');
+  background-color: #deecfd; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100404px 1000000px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-top-tl,
+.x-nbr .x-tab-default-top-bl,
+.x-nbr .x-tab-default-top-tr,
+.x-nbr .x-tab-default-top-br,
+.x-nbr .x-tab-default-top-tc,
+.x-nbr .x-tab-default-top-bc,
+.x-nbr .x-tab-default-top-ml,
+.x-nbr .x-tab-default-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-top-ml,
+.x-nbr .x-tab-default-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-top-mc {
+  padding: 0px 0px 0 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-tab-default-top-tl,
+.x-strict .x-ie7 .x-tab-default-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-tab-default-bottom {
+  padding: 0 3px 3px 3px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #deecfd; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-tab-default-bottom-mc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif');
+  background-color: #deecfd; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100000px 1000404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-bottom-tl,
+.x-nbr .x-tab-default-bottom-bl,
+.x-nbr .x-tab-default-bottom-tr,
+.x-nbr .x-tab-default-bottom-br,
+.x-nbr .x-tab-default-bottom-tc,
+.x-nbr .x-tab-default-bottom-bc,
+.x-nbr .x-tab-default-bottom-ml,
+.x-nbr .x-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-bottom-ml,
+.x-nbr .x-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nbr .x-tab-default-bottom-mc {
+  padding: 0 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-strict .x-ie7 .x-tab-default-bottom-tl,
+.x-strict .x-ie7 .x-tab-default-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 28, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab {
+  z-index: 1;
+  margin: 0 0 0 2px;
+  display: inline-block;
+  zoom: 1;
+  *display: inline;
+  white-space: nowrap;
+  height: 20px;
+  border-color: #8db3e3;
+  cursor: pointer;
+  cursor: hand; }
+  /* line 40, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab button {
+    cursor: pointer;
+    cursor: hand; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab em {
+    display: block;
+    padding: 0 6px;
+    line-height: 1px; }
+  /* line 51, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab button {
+    background: none;
+    border: 0;
+    padding: 0;
+    margin: 0;
+    -webkit-appearance: none;
+    font-size: 11px;
+    font-weight: bold;
+    font-family: tahoma, arial, verdana, sans-serif;
+    color: #416da3;
+    outline: 0 none;
+    overflow-x: visible; }
+    /* line 69, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-tab button::-moz-focus-inner {
+      border: 0;
+      padding: 0; }
+    /* line 74, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-tab button .x-tab-inner {
+      background-color: transparent;
+      background-repeat: no-repeat;
+      background-position: 0 -2px;
+      display: block;
+      text-align: center;
+      white-space: nowrap;
+      text-overflow: ellipsis;
+      -o-text-overflow: ellipsis;
+      overflow: hidden; }
+  /* line 87, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab img {
+    display: none; }
+
+/* line 93, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-border-box .x-tab-default-top {
+  height: 21px; }
+/* line 96, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-border-box .x-tab-default-bottom {
+  height: 21px; }
+
+/* line 103, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+* html .x-ie .x-tab button {
+  width: 1px; }
+
+/* line 110, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-strict .x-ie6 .x-tab .x-frame-mc,
+.x-strict .x-ie7 .x-tab .x-frame-mc {
+  height: 100%; }
+
+/* line 115, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-ie .x-tab-active button:active {
+  position: relative;
+  top: -1px;
+  left: -1px; }
+
+/* line 124, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-top {
+  -moz-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -webkit-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -o-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  border-bottom: 1px solid #99bce8 !important; }
+  /* line 134, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-top em {
+    padding-bottom: 3px; }
+  /* line 139, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-top button,
+  .x-tab-default-top .x-tab-inner {
+    height: 13px;
+    line-height: 13px; }
+
+/* line 148, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-safari4 .x-tab-default-top .x-tab-inner,
+.x-safari5_0 .x-tab-default-top .x-tab-inner {
+  line-height: 11px; }
+
+/* line 153, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-default-top {
+  border-bottom-width: 1px !important; }
+
+/* line 157, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-top-active {
+  border-bottom-color: #deecfd !important; }
+
+/* line 163, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-bottom {
+  -moz-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -webkit-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -o-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  border-top: 1px solid #99bce8 !important;
+  -moz-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -webkit-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -o-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset; }
+  /* line 178, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-bottom em {
+    padding-top: 3px; }
+  /* line 183, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-bottom button,
+  .x-tab-default-bottom .x-tab-inner {
+    height: 13px;
+    line-height: 13px; }
+
+/* line 189, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-default-bottom {
+  border-top-width: 1px !important; }
+
+/* line 193, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-bottom-active {
+  border-top-color: #deecfd !important; }
+
+/* line 197, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-disabled {
+  cursor: default;
+  border-color: #bbd2ef;
+  background-image: none;
+  background-color: #e1ecfa;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+  background-image: -webkit-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -moz-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -o-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -ms-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: linear-gradient(top, #e1ecfa, #ecf4fe); }
+  /* line 203, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-disabled button {
+    color: #c3b3b3 !important; }
+
+/* line 209, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-icon-text-left .x-tab-inner {
+  padding-left: 20px; }
+
+/* line 214, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab button {
+  position: relative; }
+
+/* line 218, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-icon {
+  position: absolute;
+  background-repeat: no-repeat;
+  background-position: 0 -1px;
+  top: 0;
+  left: 0;
+  right: auto;
+  bottom: 0;
+  width: 18px;
+  height: 18px; }
+
+/* line 233, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-strict .x-ie8 .x-tab button,
+.x-strict .x-ie9 .x-tab button {
+  overflow-y: visible; }
+
+/* line 238, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-disabled .x-tab-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+
+/* In IE a disabled icon needs to be hidden or the opacity effect covers some of the text */
+/* line 243, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-noicon .x-tab-icon {
+  display: none; }
+
+/* line 269, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-top-over {
+  background-image: none;
+  background-color: #e8f2ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff));
+  background-image: -webkit-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -moz-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -o-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -ms-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%); }
+
+/* line 272, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-bottom-over {
+  background-image: none;
+  background-color: #e8f2ff;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff));
+  background-image: -webkit-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -moz-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -o-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -ms-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%); }
+
+/* line 277, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-active {
+  z-index: 3; }
+  /* line 283, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-active button {
+    color: #15498b; }
+
+/* line 299, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-top-active {
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -ms-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%); }
+
+/* line 302, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-bottom-active {
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -ms-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%); }
+
+/* line 307, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-disabled {
+  border-color: #bbd2ef; }
+  /* line 312, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-disabled button {
+    color: #c3b3b3; }
+
+/* line 328, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-top-disabled {
+  background-image: none;
+  background: transparent;
+  background-image: none;
+  background-color: #e1ecfa;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+  background-image: -webkit-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -moz-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -o-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -ms-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: linear-gradient(top, #e1ecfa, #ecf4fe); }
+
+/* line 333, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-bottom-disabled {
+  background-image: none;
+  background: transparent;
+  background-image: none;
+  background-color: #e1ecfa;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+  background-image: -webkit-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: -moz-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: -o-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: -ms-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: linear-gradient(bottom, #e1ecfa, #ecf4fe); }
+
+/* line 342, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-top {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-bg.gif'); }
+/* line 343, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-bottom {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif'); }
+/* line 347, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-top-over {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-over-bg.gif'); }
+/* line 348, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-bottom-over {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-over-bg.gif'); }
+/* line 352, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-top-active {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-active-bg.gif'); }
+/* line 353, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-bottom-active {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-active-bg.gif'); }
+/* line 357, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-top-disabled {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-disabled-bg.gif') !important; }
+/* line 358, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-bottom-disabled {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif') !important; }
+
+/* line 363, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-closable em {
+  padding-right: 14px; }
+
+/* line 367, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-close-btn {
+  position: absolute;
+  top: 2px;
+  right: 2px;
+  width: 11px;
+  height: 11px;
+  font-size: 0;
+  line-height: 0;
+  text-indent: -999px;
+  background: no-repeat;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-close.gif');
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+
+/* line 381, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-close-btn {
+  top: 0px;
+  right: 0px; }
+
+/* Include the element name otherwise Internet Explorer 7 & 8 take a performance hit */
+/* line 387, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+a.x-tab-close-btn:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1; }
+
+/* Include the element name to raise the specificity to equal the :hover */
+/* line 392, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-disabled a.x-tab-close-btn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 404, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-over .x-frame-tl,
+.x-nbr .x-tab-top-over .x-frame-bl,
+.x-nbr .x-tab-top-over .x-frame-tr,
+.x-nbr .x-tab-top-over .x-frame-br,
+.x-nbr .x-tab-top-over .x-frame-tc,
+.x-nbr .x-tab-top-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-over-corners.gif'); }
+/* line 408, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-over .x-frame-ml,
+.x-nbr .x-tab-top-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-over-sides.gif'); }
+/* line 412, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-over .x-frame-mc {
+  background-color: #e8f2ff;
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-over-bg.gif'); }
+/* line 426, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-over .x-frame-tl,
+.x-nbr .x-tab-bottom-over .x-frame-bl,
+.x-nbr .x-tab-bottom-over .x-frame-tr,
+.x-nbr .x-tab-bottom-over .x-frame-br,
+.x-nbr .x-tab-bottom-over .x-frame-tc,
+.x-nbr .x-tab-bottom-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-over-corners.gif'); }
+/* line 430, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-over .x-frame-ml,
+.x-nbr .x-tab-bottom-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-over-sides.gif'); }
+/* line 434, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-over .x-frame-mc {
+  background-color: #e8f2ff;
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-over-bg.gif'); }
+/* line 448, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-active .x-frame-tl,
+.x-nbr .x-tab-top-active .x-frame-bl,
+.x-nbr .x-tab-top-active .x-frame-tr,
+.x-nbr .x-tab-top-active .x-frame-br,
+.x-nbr .x-tab-top-active .x-frame-tc,
+.x-nbr .x-tab-top-active .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-active-corners.gif'); }
+/* line 452, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-active .x-frame-ml,
+.x-nbr .x-tab-top-active .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-active-sides.gif'); }
+/* line 456, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-active .x-frame-mc {
+  background-color: #deecfd;
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-active-bg.gif'); }
+/* line 470, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-active .x-frame-tl,
+.x-nbr .x-tab-bottom-active .x-frame-bl,
+.x-nbr .x-tab-bottom-active .x-frame-tr,
+.x-nbr .x-tab-bottom-active .x-frame-br,
+.x-nbr .x-tab-bottom-active .x-frame-tc,
+.x-nbr .x-tab-bottom-active .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-active-corners.gif'); }
+/* line 474, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-active .x-frame-ml,
+.x-nbr .x-tab-bottom-active .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-active-sides.gif'); }
+/* line 478, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-active .x-frame-mc {
+  background-color: #deecfd;
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-active-bg.gif'); }
+/* line 492, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-disabled .x-frame-tl,
+.x-nbr .x-tab-top-disabled .x-frame-bl,
+.x-nbr .x-tab-top-disabled .x-frame-tr,
+.x-nbr .x-tab-top-disabled .x-frame-br,
+.x-nbr .x-tab-top-disabled .x-frame-tc,
+.x-nbr .x-tab-top-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-disabled-corners.gif'); }
+/* line 496, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-disabled .x-frame-ml,
+.x-nbr .x-tab-top-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-disabled-sides.gif'); }
+/* line 500, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-disabled .x-frame-mc {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-disabled-bg.gif'); }
+/* line 513, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-disabled .x-frame-tl,
+.x-nbr .x-tab-bottom-disabled .x-frame-bl,
+.x-nbr .x-tab-bottom-disabled .x-frame-tr,
+.x-nbr .x-tab-bottom-disabled .x-frame-br,
+.x-nbr .x-tab-bottom-disabled .x-frame-tc,
+.x-nbr .x-tab-bottom-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-corners.gif'); }
+/* line 517, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-disabled .x-frame-ml,
+.x-nbr .x-tab-bottom-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-sides.gif'); }
+/* line 521, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-disabled .x-frame-mc {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif'); }
+
+/* line 9, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-autowidth-table table.x-grid-table {
+  table-layout: auto;
+  width: auto!important; }
+
+/* line 14, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-tree-elbow {
+  background-color: transparent; }
+
+/* line 18, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-tree-elbow-end {
+  background-color: transparent; }
+
+/* line 22, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-tree-elbow-line {
+  background-color: transparent; }
+
+/* line 27, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-plus {
+  background: transparent no-repeat 0 0; }
+
+/* line 31, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-end-plus {
+  background: transparent no-repeat 0 0; }
+
+/* line 35, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-end-minus {
+  background: transparent no-repeat -16px 0; }
+
+/* line 39, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-minus {
+  background: transparent no-repeat -16px 0; }
+
+/* line 43, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow {
+  background-color: transparent !important; }
+
+/* line 47, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-end {
+  background-color: transparent !important; }
+
+/* line 51, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-line {
+  background-color: transparent !important; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-expander-over .x-tree-elbow-plus,
+.x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-plus {
+  background-position: -32px 0; }
+
+/* line 62, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-expander-over .x-tree-elbow-minus,
+.x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-minus {
+  background-position: -48px 0; }
+
+/* line 67, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-plus,
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-position: -16px 0; }
+
+/* line 72, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-plus,
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-end-plus {
+  background-position: -48px 0; }
+
+/* line 79, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-elbow-plus,
+.x-tree-elbow-minus,
+.x-tree-elbow-end-plus,
+.x-tree-elbow-end-minus {
+  cursor: pointer; }
+
+/* line 85, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow {
+  background-image: url('../../resources/themes/images/default/tree/elbow.gif'); }
+/* line 89, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-end {
+  background-image: url('../../resources/themes/images/default/tree/elbow-end.gif'); }
+/* line 93, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-plus {
+  background-image: url('../../resources/themes/images/default/tree/elbow-plus.gif'); }
+/* line 97, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/default/tree/elbow-end-plus.gif'); }
+/* line 101, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus {
+  background-image: url('../../resources/themes/images/default/tree/elbow-minus.gif'); }
+/* line 105, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/default/tree/elbow-end-minus.gif'); }
+/* line 109, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-line {
+  background-image: url('../../resources/themes/images/default/tree/elbow-line.gif'); }
+
+/* line 116, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-tree-elbow-plus,
+.x-tree-no-lines .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/default/tree/elbow-plus-nl.gif'); }
+/* line 121, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-plus,
+.x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/default/tree/elbow-end-minus-nl.gif'); }
+
+/* line 130, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-plus,
+.x-tree-arrows .x-tree-elbow-minus,
+.x-tree-arrows .x-tree-elbow-end-plus,
+.x-tree-arrows .x-tree-elbow-end-minus {
+  background-image: url('../../resources/themes/images/default/tree/arrows.gif'); }
+
+/* line 135, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-icon {
+  margin: 2px 3px 0 0; }
+
+/* line 139, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-with-row-lines .x-tree-icon {
+  margin-top: 1px; }
+
+/* line 148, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-elbow,
+.x-tree-elbow-end,
+.x-tree-elbow-plus,
+.x-tree-elbow-end-plus,
+.x-tree-elbow-empty,
+.x-tree-elbow-line {
+  height: 20px;
+  width: 16px; }
+
+/* line 159, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-with-row-lines .x-tree-elbow,
+.x-grid-with-row-lines .x-tree-elbow-end,
+.x-grid-with-row-lines .x-tree-elbow-plus,
+.x-grid-with-row-lines .x-tree-elbow-end-plus,
+.x-grid-with-row-lines .x-tree-elbow-empty,
+.x-grid-with-row-lines .x-tree-elbow-line {
+  height: 19px;
+  background-position: 0 -1px; }
+
+/* line 165, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-icon-leaf {
+  width: 16px;
+  background-image: url('../../resources/themes/images/default/tree/leaf.gif'); }
+
+/* line 170, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-icon-parent {
+  width: 16px;
+  background-image: url('../../resources/themes/images/default/tree/folder.gif'); }
+
+/* line 175, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-tree-node-expanded .x-tree-icon-parent {
+  background-image: url('../../resources/themes/images/default/tree/folder-open.gif'); }
+
+/* line 179, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-rowbody {
+  padding: 0; }
+
+/* line 183, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-cell-treecolumn .x-grid-cell-inner {
+  padding: 0;
+  line-height: 19px; }
+
+/* line 188, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-with-row-lines .x-grid-cell-treecolumn .x-grid-cell-inner {
+  line-height: 17px; }
+
+/* line 192, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-panel .x-grid-cell-inner {
+  cursor: pointer; }
+  /* line 194, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-tree-panel .x-grid-cell-inner img {
+    display: inline-block;
+    vertical-align: top; }
+
+/* line 207, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-ie .x-tree-panel .x-tree-elbow,
+.x-ie .x-tree-panel .x-tree-elbow-end,
+.x-ie .x-tree-panel .x-tree-elbow-plus,
+.x-ie .x-tree-panel .x-tree-elbow-end-plus,
+.x-ie .x-tree-panel .x-tree-elbow-empty,
+.x-ie .x-tree-panel .x-tree-elbow-line {
+  vertical-align: -6px; }
+
+/* line 215, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-editor-on-text-node .x-form-text {
+  padding-left: 1px;
+  padding-right: 1px; }
+
+/* line 222, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-ie .x-grid-editor-on-text-node .x-form-text {
+  padding-left: 2px;
+  padding-right: 2px; }
+
+/* line 234, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-checkbox {
+  margin: 4px 3px 0 0;
+  display: inline-block;
+  vertical-align: top;
+  width: 13px;
+  height: 13px;
+  background: no-repeat;
+  background-image: url('../../resources/themes/images/default/form/checkbox.gif');
+  overflow: hidden;
+  padding: 0;
+  border: 0; }
+  /* line 247, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-tree-checkbox::-moz-focus-inner {
+    padding: 0;
+    border: 0; }
+
+/* line 253, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-with-row-lines .x-tree-checkbox {
+  margin-top: 3px; }
+
+/* line 257, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-checkbox-checked {
+  background-position: 0 -13px; }
+
+/* line 261, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-drop-ok-append .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/tree/drop-append.gif'); }
+
+/* line 265, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-drop-ok-above .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/tree/drop-above.gif'); }
+
+/* line 269, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-drop-ok-below .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/tree/drop-below.gif'); }
+
+/* line 273, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-drop-ok-between .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/tree/drop-between.gif'); }
+
+/* line 277, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-tree-loading .x-tree-icon {
+  background-image: url('../../resources/themes/images/default/tree/loading.gif'); }
+
+/* line 281, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-ddindicator {
+  height: 1px;
+  border-width: 1px 0px 0px;
+  border-style: dotted;
+  border-color: green; }
+
+/* line 288, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-tree-loading span {
+  font-style: italic;
+  color: #444444; }
+
+/* line 293, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-animator-wrap {
+  overflow: hidden; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-surface {
+  display: -moz-inline-box;
+  -moz-box-orient: vertical;
+  display: inline-block;
+  vertical-align: middle;
+  *vertical-align: auto;
+  overflow: hidden; }
+  /* line 7, ../../../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.11.7/frameworks/compass/stylesheets/compass/css3/_inline-block.scss */
+  .x-surface {
+    *display: inline; }
+
+/* line 11, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.rvml {
+  behavior: url(#default#VML); }
+
+/* line 15, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-surface tspan {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-sprite {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px; }
+
+/* line 27, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-group {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1000px;
+  height: 1000px; }
+
+/* line 35, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-measure-span {
+  position: absolute;
+  left: -9999em;
+  top: -9999em;
+  padding: 0;
+  margin: 0;
+  display: inline; }
+
+/* line 44, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block; }
+
+/* line 52, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block; }
+
+/* line 60, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+svg, vml {
+  overflow: hidden; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_viewport.scss */
+.x-viewport, .x-viewport body {
+  margin: 0;
+  padding: 0;
+  border: 0 none;
+  overflow: hidden;
+  height: 100%;
+  position: static; }
+
+/* line 3, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drag-proxy {
+  z-index: 1000000!important; }
+
+/* line 8, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drag-repair .x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+/* line 12, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drag-repair .x-dd-drop-icon {
+  display: none; }
+
+/* line 17, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
+  opacity: 0.85;
+  padding: 5px;
+  padding-left: 20px;
+  white-space: nowrap;
+  color: #000;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  border: 1px solid;
+  border-color: #ddd #bbb #bbb #ddd;
+  background-color: #fff; }
+
+/* line 34, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drop-icon {
+  position: absolute;
+  top: 3px;
+  left: 3px;
+  display: block;
+  width: 16px;
+  height: 16px;
+  background-color: transparent;
+  background-position: center;
+  background-repeat: no-repeat;
+  z-index: 1; }
+
+/* line 51, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-view-selector {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 0;
+  background-color: #c3daf9;
+  border: 1px dotted #3399bb;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  zoom: 1; }
+
+/* line 66, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drop-nodrop .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/dd/drop-no.gif'); }
+
+/* line 70, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drop-ok .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/dd/drop-yes.gif'); }
+
+/* line 74, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drop-ok-add .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/dd/drop-add.gif'); }
+
+/* line 2, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle {
+  position: absolute;
+  z-index: 100;
+  font-size: 1px;
+  line-height: 6px;
+  overflow: hidden;
+  zoom: 1;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  background-color: #fff; }
+
+/* line 14, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-collapsed .x-resizable-handle {
+  display: none; }
+
+/* line 18, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-east {
+  width: 6px;
+  height: 100%;
+  right: 0;
+  top: 0; }
+
+/* line 27, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-east {
+  cursor: e-resize; }
+
+/* line 32, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-south {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  bottom: 0; }
+
+/* line 41, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-south {
+  cursor: s-resize; }
+
+/* line 46, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-west {
+  width: 6px;
+  height: 100%;
+  left: 0;
+  top: 0; }
+
+/* line 55, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-west {
+  cursor: w-resize; }
+
+/* line 60, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-north {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  top: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-north {
+  cursor: n-resize; }
+
+/* line 74, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-southeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  bottom: 0;
+  z-index: 101; }
+
+/* line 85, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southeast {
+  cursor: se-resize; }
+
+/* line 90, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-northwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  top: 0;
+  z-index: 101; }
+
+/* line 101, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northwest {
+  cursor: nw-resize; }
+
+/* line 106, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-northeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  top: 0;
+  z-index: 101; }
+
+/* line 117, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northeast {
+  cursor: ne-resize; }
+
+/* line 122, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-southwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+  z-index: 101; }
+
+/* line 133, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southwest {
+  cursor: sw-resize; }
+
+/*IE rounding error*/
+/* line 140, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-ie .x-resizable-handle-east {
+  margin-right: -1px;
+  /*IE rounding error*/ }
+/* line 144, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-ie .x-resizable-handle-south {
+  margin-bottom: -1px; }
+
+/* line 149, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle, .x-resizable-pinned .x-resizable-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1; }
+
+/* line 153, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-window .x-window-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 157, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-window-collapsed .x-window-handle {
+  display: none; }
+
+/* line 161, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-proxy {
+  border: 1px dashed #3b5a82;
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  z-index: 50000; }
+
+/* line 170, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-overlay {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  display: none;
+  z-index: 200000;
+  background-color: #fff;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 190, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-west {
+  background-position: left;
+  background-image: url('../../resources/themes/images/default/sizer/e-handle.gif'); }
+/* line 196, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-north {
+  background-position: top;
+  background-image: url('../../resources/themes/images/default/sizer/s-handle.gif'); }
+/* line 201, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+  background-position: top left;
+  background-image: url('../../resources/themes/images/default/sizer/se-handle.gif'); }
+/* line 206, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+  background-position: bottom right;
+  background-image: url('../../resources/themes/images/default/sizer/nw-handle.gif'); }
+/* line 211, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+  background-position: bottom left;
+  background-image: url('../../resources/themes/images/default/sizer/ne-handle.gif'); }
+/* line 216, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+  background-position: top right;
+  background-image: url('../../resources/themes/images/default/sizer/sw-handle.gif'); }
+
+/* line 3, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter .x-collapse-el {
+  position: absolute;
+  cursor: pointer;
+  background-color: transparent;
+  background-repeat: no-repeat !important; }
+
+/* line 14, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-left,
+.x-layout-split-right {
+  top: 50%;
+  margin-top: -17px;
+  width: 5px;
+  height: 35px; }
+
+/* line 24, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-top,
+.x-layout-split-bottom {
+  left: 50%;
+  width: 35px;
+  height: 5px;
+  margin-left: -17px; }
+
+/* line 33, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-left {
+  background: no-repeat top right;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-left.gif'); }
+
+/* line 38, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-right {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-right.gif'); }
+
+/* line 43, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-top {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-top.gif'); }
+
+/* line 48, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-bottom {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-bottom.gif'); }
+
+/* line 54, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-left {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-right.gif'); }
+/* line 59, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-right {
+  background: no-repeat top right;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-left.gif'); }
+/* line 64, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-top {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-bottom.gif'); }
+/* line 69, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-bottom {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-top.gif'); }
+
+/* line 75, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-horizontal {
+  cursor: e-resize;
+  cursor: row-resize;
+  font-size: 1px; }
+
+/* line 81, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-vertical {
+  cursor: e-resize;
+  cursor: col-resize;
+  font-size: 1px; }
+
+/* line 86, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed, .x-splitter-horizontal-noresize, .x-splitter-vertical-noresize {
+  cursor: default; }
+
+/* line 90, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-active {
+  z-index: 4;
+  font-size: 1px;
+  background-color: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8; }
+
+/* line 97, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-active .x-collapse-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 102, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-proxy-el {
+  position: absolute;
+  background: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8; }
+
+/*
+ * Dock Layouts
+ * @todo move this somewhere else?
+ */
+/* line 6, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked {
+  position: absolute !important;
+  z-index: 1; }
+
+/* line 11, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-top {
+  border-bottom-width: 0 !important; }
+
+/* line 15, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-bottom {
+  border-top-width: 0 !important; }
+
+/* line 19, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-left {
+  border-right-width: 0 !important; }
+
+/* line 23, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-right {
+  border-left-width: 0 !important; }
+
+/* line 27, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-noborder-top {
+  border-top-width: 0 !important; }
+
+/* line 31, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-noborder-right {
+  border-right-width: 0 !important; }
+
+/* line 35, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-noborder-bottom {
+  border-bottom-width: 0 !important; }
+
+/* line 39, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-noborder-left {
+  border-left-width: 0 !important; }
+
+/* line 43, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-inner {
+  overflow: hidden;
+  zoom: 1;
+  position: relative;
+  left: 0;
+  top: 0; }
+
+/* line 53, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-item {
+  position: absolute !important;
+  left: 0;
+  top: 0; }
+
+/* line 59, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-rtl .x-box-item {
+  right: 0;
+  left: auto; }
+
+/* line 65, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-layout-ct,
+.x-border-layout-ct {
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 70, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-border-layout-ct {
+  background-color: #dfe8f6;
+  position: relative; }
+
+/* line 75, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-overflow-hidden {
+  overflow: hidden !important; }
+
+/* line 79, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-inline-children > * {
+  display: inline-block !important; }
+
+/* line 83, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-abs-layout-ct {
+  position: relative; }
+
+/* line 87, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-abs-layout-item {
+  position: absolute !important; }
+
+/* line 91, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-fit-item {
+  position: relative; }
+
+/* line 95, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-border-region-slide-in {
+  z-index: 5; }
+
+/* line 99, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-region-collapsed-placeholder {
+  z-index: 4; }
+
+/* line 103, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd .x-panel-header-text {
+  color: black;
+  font-weight: normal; }
+
+/* line 108, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd {
+  background: #d9e7f8 !important;
+  -moz-box-shadow: inset 0 0 0 0 #d9e7f8;
+  -webkit-box-shadow: inset 0 0 0 0 #d9e7f8;
+  -o-box-shadow: inset 0 0 0 0 #d9e7f8;
+  box-shadow: inset 0 0 0 0 #d9e7f8; }
+  /* line 112, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-accordion-hd .x-tool-collapse-top,
+  .x-accordion-hd .x-tool-collapse-right,
+  .x-accordion-hd .x-tool-collapse-bottom,
+  .x-accordion-hd .x-tool-collapse-left {
+    background-position: 0 -255px; }
+  /* line 119, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-accordion-hd .x-tool-expand-top,
+  .x-accordion-hd .x-tool-expand-right,
+  .x-accordion-hd .x-tool-expand-bottom,
+  .x-accordion-hd .x-tool-expand-left {
+    background-position: 0 -240px; }
+  /* line 127, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-accordion-hd .x-tool-over .x-tool-collapse-top,
+  .x-accordion-hd .x-tool-over .x-tool-collapse-right,
+  .x-accordion-hd .x-tool-over .x-tool-collapse-bottom,
+  .x-accordion-hd .x-tool-over .x-tool-collapse-left {
+    background-position: -15px -255px; }
+  /* line 136, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-accordion-hd .x-tool-over .x-tool-expand-top,
+  .x-accordion-hd .x-tool-over .x-tool-expand-right,
+  .x-accordion-hd .x-tool-over .x-tool-expand-bottom,
+  .x-accordion-hd .x-tool-over .x-tool-expand-left {
+    background-position: -15px -240px; }
+
+/* line 145, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd {
+  border-width: 1px 0 1px 0 !important;
+  padding: 4px 5px 5px 5px;
+  border-top-color: #f3f7fb !important; }
+
+/* line 151, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-body {
+  border-width: 0 !important; }
+
+/* line 155, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd-sibling-expanded {
+  border-top-color: #99bce8 !important;
+  -moz-box-shadow: inset 0 1px 0 0 #f3f7fb;
+  -webkit-box-shadow: inset 0 1px 0 0 #f3f7fb;
+  -o-box-shadow: inset 0 1px 0 0 #f3f7fb;
+  box-shadow: inset 0 1px 0 0 #f3f7fb; }
+
+/* line 160, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd-last-collapsed {
+  border-bottom-color: #d9e7f8 !important; }
+
+/* line 169, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-frame-tl,
+.x-frame-tr,
+.x-frame-tc,
+.x-frame-bl,
+.x-frame-br,
+.x-frame-bc {
+  overflow: hidden;
+  background-repeat: no-repeat; }
+
+/* line 175, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-frame-tc,
+.x-frame-bc {
+  background-repeat: repeat-x; }
+
+/* line 179, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-frame-mc {
+  position: relative;
+  background-repeat: repeat-x;
+  overflow: hidden; }
+
+/* line 188, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-left {
+  float: left;
+  height: 100%;
+  z-index: 5; }
+  /* line 195, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left,
+  .x-box-scroller-left .x-tabbar-scroll-left {
+    width: 18px;
+    position: relative;
+    cursor: pointer;
+    height: 20px;
+    background: transparent no-repeat -18px 0;
+    background-image: url('../../resources/themes/images/default/tab-bar/scroll-left.gif'); }
+  /* line 203, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left-hover {
+    background-position: 0 0; }
+  /* line 207, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left-disabled,
+  .x-box-scroller-left .x-tabbar-scroll-left-disabled {
+    background-position: -18px 0;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5;
+    cursor: default; }
+  /* line 214, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left {
+    background-image: url('../../resources/themes/images/default/toolbar/scroll-left.gif');
+    background-position: -14px 0; }
+  /* line 218, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left-hover {
+    background-position: 0 0; }
+  /* line 221, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left-disabled {
+    background-position: -14px 0; }
+  /* line 225, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left {
+    width: 14px;
+    height: 22px;
+    border-bottom: 1px solid #8db2e3; }
+
+/* line 233, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-horizontal-box-overflow-body {
+  float: left; }
+
+/* line 236, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-right {
+  float: right;
+  height: 100%;
+  z-index: 5; }
+  /* line 243, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right,
+  .x-box-scroller-right .x-tabbar-scroll-right {
+    width: 18px;
+    position: relative;
+    cursor: pointer;
+    height: 20px;
+    background: transparent no-repeat 0 0;
+    background-image: url('../../resources/themes/images/default/tab-bar/scroll-right.gif'); }
+  /* line 251, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-hover {
+    background-position: -18px 0; }
+  /* line 255, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-disabled,
+  .x-box-scroller-right .x-tabbar-scroll-right-disabled {
+    background-position: 0 0;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5;
+    cursor: default; }
+  /* line 262, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right {
+    background-image: url('../../resources/themes/images/default/toolbar/scroll-right.gif'); }
+  /* line 265, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-hover {
+    background-position: -14px 0; }
+  /* line 268, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-disabled {
+    background-position: 0 0; }
+  /* line 272, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right {
+    width: 14px;
+    height: 22px;
+    border-bottom: 1px solid #8db2e3; }
+
+/* line 282, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-top .x-box-scroller {
+  line-height: 0;
+  font-size: 0; }
+/* line 286, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-top .x-menu-scroll-top {
+  background: transparent no-repeat center center;
+  background-image: url('../../resources/themes/images/default/layout/mini-top.gif');
+  height: 8px;
+  cursor: pointer; }
+
+/* line 294, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-bottom .x-box-scroller {
+  line-height: 0;
+  font-size: 0; }
+/* line 298, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-bottom .x-menu-scroll-bottom {
+  background: transparent no-repeat center center;
+  background-image: url('../../resources/themes/images/default/layout/mini-bottom.gif');
+  height: 8px;
+  cursor: pointer; }
+
+/* line 306, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-menu-right {
+  float: right;
+  padding-right: 2px; }
+
+/* line 311, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-column {
+  float: left; }
+
+/* line 315, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-ie6 .x-column {
+  display: inline;
+  /*prevent IE6 double-margin bug*/ }
+
+/* line 319, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-quirks .x-ie .x-form-layout-table, .x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item {
+  position: relative; }
+
+/* line 2, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool {
+  height: 15px; }
+  /* line 5, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-tool img {
+    overflow: hidden;
+    width: 15px;
+    height: 15px;
+    cursor: pointer;
+    background-color: transparent;
+    background-repeat: no-repeat;
+    background-image: url('../../resources/themes/images/default/tools/tool-sprites.gif');
+    margin: 0; }
+
+/* line 23, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-header-horizontal .x-tool,
+.x-window-header-horizontal .x-tool {
+  margin-left: 2px; }
+
+/* line 30, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-header-vertical .x-tool,
+.x-window-header-vertical .x-tool {
+  margin-top: 2px; }
+
+/* line 39, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-header-vertical .x-tool-top,
+.x-window-header-vertical .x-tool-top {
+  margin: 0 0 4px; }
+
+/* line 45, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-placeholder {
+  visibility: hidden; }
+
+/* line 49, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-toggle {
+  background-position: 0 -60px; }
+
+/* line 54, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-toggle {
+  background-position: -15px -60px; }
+
+/* line 61, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-collapsed .x-tool-toggle,
+.x-fieldset-collapsed .x-tool-toggle {
+  background-position: 0 -75px; }
+/* line 66, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-collapsed .x-tool-over .x-tool-toggle,
+.x-fieldset-collapsed .x-tool-over .x-tool-toggle {
+  background-position: -15px -75px; }
+
+/* line 72, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-close {
+  background-position: 0 0; }
+
+/* line 76, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-minimize {
+  background-position: 0 -15px; }
+
+/* line 80, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-maximize {
+  background-position: 0 -30px; }
+
+/* line 84, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-restore {
+  background-position: 0 -45px; }
+
+/* line 88, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-gear {
+  background-position: 0 -90px; }
+
+/* line 92, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-prev {
+  background-position: 0 -105px; }
+
+/* line 96, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-next {
+  background-position: 0 -120px; }
+
+/* line 100, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-pin {
+  background-position: 0 -135px; }
+
+/* line 104, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-unpin {
+  background-position: 0 -150px; }
+
+/* line 108, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-right {
+  background-position: 0 -165px; }
+
+/* line 112, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-left {
+  background-position: 0 -180px; }
+
+/* line 116, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-help {
+  background-position: 0 -300px; }
+
+/* line 120, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-save {
+  background-position: 0 -285px; }
+
+/* line 124, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-search {
+  background-position: 0 -270px; }
+
+/* line 128, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-minus {
+  background-position: 0 -255px; }
+
+/* line 132, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-plus {
+  background-position: 0 -240px; }
+
+/* line 136, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-refresh {
+  background-position: 0 -225px; }
+
+/* line 140, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-up {
+  background-position: 0 -210px; }
+
+/* line 144, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-down {
+  background-position: 0 -195px; }
+
+/* line 148, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-collapse {
+  background-position: 0 -345px; }
+
+/* line 152, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand {
+  background-position: 0 -330px; }
+
+/* line 156, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-print {
+  background-position: 0 -315px; }
+
+/* line 161, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand-bottom,
+.x-tool-collapse-bottom {
+  background-position: 0 -195px; }
+
+/* line 166, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand-top,
+.x-tool-collapse-top {
+  background-position: 0 -210px; }
+
+/* line 171, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand-left,
+.x-tool-collapse-left {
+  background-position: 0 -180px; }
+
+/* line 176, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand-right,
+.x-tool-collapse-right {
+  background-position: 0 -165px; }
+
+/* line 181, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-close {
+  background-position: -15px 0; }
+/* line 185, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-minimize {
+  background-position: -15px -15px; }
+/* line 189, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-maximize {
+  background-position: -15px -30px; }
+/* line 193, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-restore {
+  background-position: -15px -45px; }
+/* line 197, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-gear {
+  background-position: -15px -90px; }
+/* line 201, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-prev {
+  background-position: -15px -105px; }
+/* line 205, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-next {
+  background-position: -15px -120px; }
+/* line 209, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-pin {
+  background-position: -15px -135px; }
+/* line 213, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-unpin {
+  background-position: -15px -150px; }
+/* line 217, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-right {
+  background-position: -15px -165px; }
+/* line 221, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-left {
+  background-position: -15px -180px; }
+/* line 225, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-down {
+  background-position: -15px -195px; }
+/* line 229, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-up {
+  background-position: -15px -210px; }
+/* line 233, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-refresh {
+  background-position: -15px -225px; }
+/* line 237, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-plus {
+  background-position: -15px -240px; }
+/* line 241, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-minus {
+  background-position: -15px -255px; }
+/* line 245, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-search {
+  background-position: -15px -270px; }
+/* line 249, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-save {
+  background-position: -15px -285px; }
+/* line 253, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-help {
+  background-position: -15px -300px; }
+/* line 257, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-print {
+  background-position: -15px -315px; }
+/* line 261, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand {
+  background-position: -15px -330px; }
+/* line 265, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-collapse {
+  background-position: -15px -345px; }
+/* line 270, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand-bottom,
+.x-tool-over .x-tool-collapse-bottom {
+  background-position: -15px -195px; }
+/* line 275, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand-top,
+.x-tool-over .x-tool-collapse-top {
+  background-position: -15px -210px; }
+/* line 280, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand-left,
+.x-tool-over .x-tool-collapse-left {
+  background-position: -15px -180px; }
+/* line 285, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand-right,
+.x-tool-over .x-tool-collapse-right {
+  background-position: -15px -165px; }
+
+/* line 2, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-horizontal-scroller-present .x-grid-body {
+  border-bottom-width: 0px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-vertical-scroller-present .x-grid-body {
+  border-right-width: 0px; }
+
+/* line 10, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller {
+  overflow: hidden; }
+
+/* line 14, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-vertical {
+  border: 1px solid #99bce8;
+  border-top-color: #c5c5c5; }
+
+/* line 19, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-horizontal {
+  border: 1px solid #99bce8; }
+
+/* line 23, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-vertical-scroller-present .x-scroller-horizontal {
+  border-right-width: 0px; }
+
+/* line 27, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-ct {
+  overflow: hidden;
+  position: absolute;
+  margin: 0;
+  padding: 0;
+  border: none;
+  left: 0px;
+  top: 0px;
+  /*
+  In IE9 (only), the border-box style causes the scroller-ct to be 0px in the
+  perpendicular dimension and breaks the scroll as well as offsets it by the left
+  offset that we use to try and keep some size on this element. This works on all
+  browsers (including IE9).
+  */
+  box-sizing: content-box !important;
+  -ms-box-sizing: content-box !important;
+  -moz-box-sizing: content-box !important;
+  -webkit-box-sizing: content-box !important; }
+
+/* line 48, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-vertical .x-scroller-ct {
+  overflow-y: scroll; }
+
+/* line 52, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-horizontal .x-scroller-ct {
+  overflow-x: scroll; }
+
+/* line 8, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+.x-html {
+  /* Begin bidirectionality settings (do not change) */ }
+  /* line 34, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html html, .x-html address, .x-html blockquote, .x-html body, .x-html dd, .x-html div, .x-html dl, .x-html dt, .x-html fieldset, .x-html form, .x-html frame, .x-html frameset, .x-html h1, .x-html h2, .x-html h3, .x-html h4, .x-html h5, .x-html h6, .x-html noframes, .x-html ol, .x-html p, .x-html ul, .x-html center, .x-html dir, .x-html hr, .x-html menu, .x-html pre {
+    display: block; }
+  /* line 35, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html li {
+    display: list-item;
+    list-style: disc; }
+  /* line 36, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html head {
+    display: none; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html table {
+    display: table; }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html tr {
+    display: table-row; }
+  /* line 39, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html thead {
+    display: table-header-group; }
+  /* line 40, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html tbody {
+    display: table-row-group; }
+  /* line 41, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html tfoot {
+    display: table-footer-group; }
+  /* line 42, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html col {
+    display: table-column; }
+  /* line 43, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html colgroup {
+    display: table-column-group; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html td, .x-html th {
+    display: table-cell; }
+  /* line 46, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html caption {
+    display: table-caption; }
+  /* line 47, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html th {
+    font-weight: bolder;
+    text-align: center; }
+  /* line 48, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html caption {
+    text-align: center; }
+  /* line 49, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html body {
+    margin: 8px; }
+  /* line 50, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h1 {
+    font-size: 2em;
+    margin: .67em 0; }
+  /* line 51, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h2 {
+    font-size: 1.5em;
+    margin: .75em 0; }
+  /* line 52, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h3 {
+    font-size: 1.17em;
+    margin: .83em 0; }
+  /* line 62, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h4, .x-html p, .x-html blockquote, .x-html ul, .x-html fieldset, .x-html form, .x-html ol, .x-html dl, .x-html dir, .x-html menu {
+    margin: 1.12em 0; }
+  /* line 63, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h5 {
+    font-size: .83em;
+    margin: 1.5em 0; }
+  /* line 64, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h6 {
+    font-size: .75em;
+    margin: 1.67em 0; }
+  /* line 72, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h1, .x-html h2, .x-html h3, .x-html h4, .x-html h5, .x-html h6, .x-html b, .x-html strong {
+    font-weight: bolder; }
+  /* line 73, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html blockquote {
+    margin-left: 40px;
+    margin-right: 40px; }
+  /* line 78, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html i, .x-html cite, .x-html em, .x-html var, .x-html address {
+    font-style: italic; }
+  /* line 83, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html pre, .x-html tt, .x-html code, .x-html kbd, .x-html samp {
+    font-family: monospace; }
+  /* line 84, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html pre {
+    white-space: pre; }
+  /* line 88, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html button, .x-html textarea, .x-html input, .x-html select {
+    display: inline-block; }
+  /* line 89, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html big {
+    font-size: 1.17em; }
+  /* line 92, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html small, .x-html sub, .x-html sup {
+    font-size: .83em; }
+  /* line 93, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html sub {
+    vertical-align: sub; }
+  /* line 94, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html sup {
+    vertical-align: super; }
+  /* line 95, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html table {
+    border-spacing: 2px; }
+  /* line 98, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html thead, .x-html tbody, .x-html tfoot {
+    vertical-align: middle; }
+  /* line 100, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html td, .x-html th {
+    vertical-align: inherit; }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html s, .x-html strike, .x-html del {
+    text-decoration: line-through; }
+  /* line 104, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html hr {
+    border: 1px inset; }
+  /* line 109, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html ol, .x-html ul, .x-html dir, .x-html menu, .x-html dd {
+    margin-left: 40px; }
+  /* line 110, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html ul, .x-html menu, .x-html dir {
+    list-style-type: disc; }
+  /* line 111, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html ol {
+    list-style-type: decimal; }
+  /* line 115, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html ol ul, .x-html ul ol, .x-html ul ul, .x-html ol ol {
+    margin-top: 0;
+    margin-bottom: 0; }
+  /* line 117, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html u, .x-html ins {
+    text-decoration: underline; }
+  /* line 118, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html br:before {
+    content: "\A"; }
+  /* line 119, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html :before, .x-html :after {
+    white-space: pre-line; }
+  /* line 120, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html center {
+    text-align: center; }
+  /* line 121, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html :link, .x-html :visited {
+    text-decoration: underline; }
+  /* line 122, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html :focus {
+    outline: invert dotted thin; }
+  /* line 125, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html BDO[DIR="ltr"] {
+    direction: ltr;
+    unicode-bidi: bidi-override; }
+  /* line 126, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html BDO[DIR="rtl"] {
+    direction: rtl;
+    unicode-bidi: bidi-override; }
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-ie-scoped-debug.css
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-ie-scoped-debug.css	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-ie-scoped-debug.css	(revision 18277)
@@ -0,0 +1,8372 @@
+/*
+This file is part of Ext JS 4.1
+
+Copyright (c) 2011-2012 Sencha Inc
+
+Contact:  http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2012-07-04 21:11:01 (65ff594cd80b9bad45df640c22cc0adb52c95a7b)
+*/
+/**
+ * @class Global_CSS
+ *
+ * Global CSS variables and mixins of Sencha Touch.
+ */
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+/**
+ * @var {string} $theme-name
+ * The name of the theme. This must match the the output directory of the images.
+ * (defaults to 'default')
+ */
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+/**
+ * @var {string} $font-family
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $base-gradient
+ * The base gradient to be used throughout the theme.
+ */
+/**
+ * @var {color} $base-color
+ * The base color to be used throughout the theme.
+ */
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules
+ */
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+/**
+ * @var {boolean} $compile-all
+ * True to copile all CSS, even if above include rules are false
+ */
+/**
+ * @var {boolean} $scope-reset-css
+ * True to scope the reset CSS within the $prefix variable.
+ */
+/**
+ * @var {color} $css-shadow-background-color
+ * The base color for CSS shadows
+ */
+/**
+ * @var {color} $include-shadow-images
+ * True to include all shadow images.
+ */
+/**
+ * @class Ext.form.field.Base
+ */
+/**
+ * @var {measurement} $form-field-height
+ * Height for form fields.
+ */
+/**
+ * @var {measurement} $form-toolbar-field-height
+ * Height for form fields in toolbar.
+ */
+/**
+ * @var {measurement} $form-error-icon-width
+ * Width for form error icons.
+ */
+/**
+ * @var {measurement} $form-field-padding
+ * Padding around form fields.
+ */
+/**
+ * @var {measurement} $form-field-font-size
+ * Font size for form fields.
+ */
+/**
+ * @var {font-family} $form-field-font-family
+ * Font family for form fields.
+ */
+/**
+ * @var {font-weight} $form-field-font-weight
+ * Font weight for form fields.
+ */
+/**
+ * @var {font} $form-field-font
+ * Font for form fields.
+ */
+/**
+ * @var {color} $form-field-color
+ * Text color for form fields.
+ */
+/**
+ * @var {color} $form-field-empty-color
+ * Text color for empty form fields.
+ */
+/**
+ * @var {color} $form-field-border-color
+ * Border color for form fields.
+ */
+/**
+ * @var {measurement} $form-field-border-width
+ * Border width for form fields.
+ */
+/**
+ * @var {color} $form-field-focus-border-color
+ * Border color for focused form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-border-color
+ * Border color for invalid form fields.
+ */
+/**
+ * @var {color} $form-field-background-color
+ * Background color for form fields.
+ */
+/**
+ * @var {string} $form-field-background-image
+ * Background image for form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-background-color
+ * Background color for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-image
+ * Background image for invalid form fields.
+ */
+/**
+ * @var {background-repeat} $form-field-invalid-background-repeat
+ * Background repeat for invalid form fields.
+ */
+/**
+ * @var {background-position} $form-field-invalid-background-position
+ * Background position for invalid form fields.
+ */
+/**
+ * @class Ext.form.field.TextArea
+ */
+/**
+ * @class Ext.form.Label
+ */
+/**
+ * @class Ext.form.field.Checkbox
+ */
+/**
+ * @class Ext.form.field.Radio
+ */
+/* Error messages */
+/**
+ * @class Ext.form.field.Trigger
+ */
+/**
+ * @class Ext.form.FieldSet
+ */
+/**
+ * @class Ext.slider.Multi
+ */
+/**
+ * Creates a background gradient.
+ *
+ * @param {Color} $bg-color The background color of the gradient
+ * @param {String/List} [$type] The type of gradient to be used. Can either
+ * be a String which is a predefined gradient, or it can can be a list of
+ * color_stops. If none is set, it will still set the `background-color`
+ * to the $background-color.
+ * @param {String} [$direction=top] The direction of the gradient. Can either be
+ * `top` or `left`.
+ * @member Global_CSS
+ */
+/*
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error.
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to
+ * be true.
+ */
+/* line 3, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-border-box .x-reset,
+.x-border-box .x-reset * {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  -webkit-box-sizing: border-box; }
+
+/* line 13, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset html, .x-reset body, .x-reset div, .x-reset dl, .x-reset dt, .x-reset dd, .x-reset ul, .x-reset ol, .x-reset li, .x-reset h1, .x-reset h2, .x-reset h3, .x-reset h4, .x-reset h5, .x-reset h6, .x-reset pre, .x-reset code, .x-reset form, .x-reset fieldset, .x-reset legend, .x-reset input, .x-reset textarea, .x-reset p, .x-reset blockquote, .x-reset th, .x-reset td {
+  margin: 0;
+  padding: 0; }
+/* line 18, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset table {
+  border-collapse: collapse;
+  border-spacing: 0; }
+/* line 23, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset fieldset, .x-reset img {
+  border: 0; }
+/* line 28, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset address, .x-reset caption, .x-reset cite, .x-reset code, .x-reset dfn, .x-reset em, .x-reset strong, .x-reset th, .x-reset var {
+  font-style: normal;
+  font-weight: normal; }
+/* line 33, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset li {
+  list-style: none; }
+/* line 37, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset caption, .x-reset th {
+  text-align: left; }
+/* line 41, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset h1, .x-reset h2, .x-reset h3, .x-reset h4, .x-reset h5, .x-reset h6 {
+  font-size: 100%; }
+/* line 46, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset q:before, .x-reset q:after {
+  content: ""; }
+/* line 50, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset abbr, .x-reset acronym {
+  border: 0;
+  font-variant: normal; }
+/* line 55, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset sup {
+  vertical-align: text-top; }
+/* line 59, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset sub {
+  vertical-align: text-bottom; }
+/* line 63, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset input, .x-reset textarea, .x-reset select {
+  font-family: inherit;
+  font-size: inherit;
+  font-weight: inherit; }
+/* line 69, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset *:focus {
+  outline: none; }
+
+/* line 1, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-body {
+  color: black;
+  font-size: 12px;
+  font-family: tahoma, arial, verdana, sans-serif; }
+
+/* line 7, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-rtl {
+  direction: rtl; }
+
+/* line 11, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ltr {
+  direction: ltr; }
+
+/* line 15, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-clear {
+  overflow: hidden;
+  clear: both;
+  font-size: 0;
+  line-height: 0;
+  display: table; }
+
+/* line 23, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-strict .x-ie7 .x-clear {
+  height: 0;
+  width: 0; }
+
+/* line 31, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-layer {
+  position: absolute !important;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 37, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-shim {
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 45, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hide-display {
+  display: none !important; }
+
+/* line 49, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hide-visibility {
+  visibility: hidden !important; }
+
+/* line 56, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-item-disabled .x-form-item-label,
+.x-item-disabled .x-form-field,
+.x-item-disabled .x-form-cb-label,
+.x-item-disabled .x-form-trigger {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 60, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ie6 .x-item-disabled {
+  filter: none; }
+
+/* line 65, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hidden,
+.x-hide-offsets {
+  display: block !important;
+  visibility: hidden !important;
+  position: absolute!important;
+  left: -10000px !important;
+  top: -10000px !important; }
+
+/* line 75, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hide-nosize {
+  height: 0!important;
+  width: 0!important; }
+
+/* line 80, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-masked-relative {
+  position: relative; }
+
+/* line 86, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ie6 .x-masked select,
+.x-ie6.x-body-masked select {
+  visibility: hidden !important; }
+
+/* line 92, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-css-shadow {
+  position: absolute;
+  -moz-border-radius: 5px 5px;
+  -webkit-border-radius: 5px 5px;
+  -o-border-radius: 5px 5px;
+  -ms-border-radius: 5px 5px;
+  -khtml-border-radius: 5px 5px;
+  border-radius: 5px 5px; }
+
+/* line 98, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ie-shadow {
+  background-color: #777;
+  display: none;
+  position: absolute;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 107, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tl {
+  background: transparent no-repeat 0 0;
+  zoom: 1; }
+
+/* line 112, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tc {
+  height: 8px;
+  background: transparent repeat-x 0 0;
+  overflow: hidden; }
+
+/* line 118, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tr {
+  background: transparent no-repeat right -8px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-ml {
+  background: transparent repeat-y 0;
+  padding-left: 4px;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 129, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc {
+  background: repeat-x 0 -16px;
+  padding: 4px 10px; }
+
+/* line 134, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc h3 {
+  margin: 0 0 4px 0;
+  zoom: 1; }
+
+/* line 139, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mr {
+  background: transparent repeat-y right;
+  padding-right: 4px;
+  overflow: hidden; }
+
+/* line 145, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bl {
+  background: transparent no-repeat 0 -16px;
+  zoom: 1; }
+
+/* line 150, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bc {
+  background: transparent repeat-x 0 -8px;
+  height: 8px;
+  overflow: hidden; }
+
+/* line 156, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-br {
+  background: transparent no-repeat right -24px; }
+
+/* line 160, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tl, .x-box-bl {
+  padding-left: 8px;
+  overflow: hidden; }
+
+/* line 165, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tr, .x-box-br {
+  padding-right: 8px;
+  overflow: hidden; }
+
+/* line 170, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tl {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 174, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tc {
+  background-image: url('../../resources/themes/images/default/box/tb.gif'); }
+
+/* line 178, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tr {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 182, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-ml {
+  background-image: url('../../resources/themes/images/default/box/l.gif'); }
+
+/* line 186, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc {
+  background-color: #eee;
+  background-image: url('../../resources/themes/images/default/box/tb.gif');
+  font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;
+  color: #393939;
+  font-size: 15px; }
+
+/* line 194, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc h3 {
+  font-size: 18px;
+  font-weight: bold; }
+
+/* line 199, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mr {
+  background-image: url('../../resources/themes/images/default/box/r.gif'); }
+
+/* line 203, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bl {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 207, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bc {
+  background-image: url('../../resources/themes/images/default/box/tb.gif'); }
+
+/* line 211, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-br {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 215, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr {
+  background-image: url('../../resources/themes/images/default/box/corners-blue.gif'); }
+
+/* line 219, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc {
+  background-image: url('../../resources/themes/images/default/box/tb-blue.gif'); }
+
+/* line 223, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-mc {
+  background-color: #c3daf9; }
+
+/* line 227, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-mc h3 {
+  color: #17385b; }
+
+/* line 231, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-ml {
+  background-image: url('../../resources/themes/images/default/box/l-blue.gif'); }
+
+/* line 235, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-mr {
+  background-image: url('../../resources/themes/images/default/box/r-blue.gif'); }
+
+/* line 239, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-container {
+  zoom: 1; }
+  /* line 244, ../themes/stylesheets/ext4/default/core/_core.scss */
+  .x-container:before {
+    content: "";
+    clear: both;
+    display: table; }
+
+/* line 254, ../themes/stylesheets/ext4/default/core/_core.scss */
+table.x-container:before,
+tbody.x-container:before,
+tr.x-container:before {
+  display: none; }
+
+/* line 1, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-element {
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px; }
+
+/* line 9, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame {
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  z-index: 100000000;
+  width: 0px;
+  height: 0px; }
+
+/* line 21, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom,
+.x-focus-frame-left,
+.x-focus-frame-right {
+  position: absolute;
+  top: 0px;
+  left: 0px; }
+
+/* line 28, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom {
+  border-top: solid 2px #15428b;
+  height: 2px; }
+
+/* line 34, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame-left,
+.x-focus-frame-right {
+  border-left: solid 2px #15428b;
+  width: 2px; }
+
+/**
+ * Creates the base structure of a BoundList.
+ * @member Ext.view.BoundList
+ */
+/**
+ * Creates the base structure of an Ext.Button
+ * @member Ext.button.Button
+ */
+/**
+ * Creates a visual theme of an Ext.Button
+ * @member Ext.button.Button
+ */
+/**
+ * Creates the base structure of a button group.
+ * @member Ext.container.ButtonGroup
+ */
+/**
+ * Creates a visual theme of a button group.
+ * @member Ext.container.ButtonGroup
+ */
+/**
+ * Creates the base structure of a date picker.
+ * @member Ext.picker.Date
+ */
+/**
+ * Creates base structure for Ext.picker.Color
+ * @member Ext.picker.Color
+ */
+/**
+ * Creates the base structure of a Menu
+ * @member Ext.menu.Menu
+ */
+/**
+ * Create the base structure of an Ext.Panel
+ * @member Ext.panel.Panel
+ */
+/**
+ * Creates a visual theme for an Ext.Panel
+ * @member Ext.panel.Panel
+ */
+/**
+ * Creates base structure for Toolbar
+ * @member Ext.toolbar.Toolbar
+ */
+/**
+ * Creates a visual theme for an Toolbar.
+ * @param {String} $ui The name of the UI
+ * @param {Color} $background-color The background color of the toolbar (defaults to transparent)
+ * @param {Gradient/color-stops} $background-gradient The background gradient of the toolbar (defaults to null)
+ * @param {Color} $border-color The border color of the toolbar (defaults to null)
+ * @member Ext.toolbar.Toolbar
+ */
+/**
+ * Creates the base structure of Ext.form.Panel.
+ * @member Ext.form.Panel
+ */
+/**
+ * Creates the base structure of form field.
+ * @member Ext.form.field.Base
+ */
+/**
+ * Creates the base structure of FieldSet.
+ * @member Ext.form.FieldSet
+ */
+/**
+ * Creates the base structure of file field.
+ * @member Ext.form.field.File
+ */
+/**
+ * Creates the base structure of checkbox field.
+ * @member Ext.form.field.Checkbox
+ */
+/**
+ * Creates the base structure of CheckboxGroup.
+ * @member Ext.form.CheckboxGroup
+ */
+/**
+ * Creates the base structure of trigger field.
+ * @member Ext.form.field.Trigger
+ */
+/**
+ * Creates the base structure of HtmlEditor field.
+ * @member Ext.form.field.HtmlEditor
+ */
+/**
+ * Creates the base structure of QuickTip.
+ * @member Ext.tip.QuickTip
+ */
+/**
+ * Creates the base structure of an Ext.Window
+ * @member Ext.window.Window
+ */
+/**
+ * Creates a visual theme for an Ext.Panel
+ * @member Ext.window.Window
+ */
+/**
+ * Creates a visual theme for TabBar
+ * @member Ext.tab.Bar
+ */
+/**
+ * Creates the base structure of a Tab.
+ * @member Ext.tab.Tab
+ */
+/**
+ * Creates the base structure of slider.
+ * @member Ext.slider.Multi
+ */
+/**
+ * Creates base structure for a Grid.
+ * @member Ext.grid.Panel
+ */
+/**
+ * Creates the base structure of Tree.
+ * @member Ext.tree.Panel
+ */
+/* Styles for Ext.LoadMask */
+/* line 3, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+.x-mask {
+  z-index: 100;
+  position: absolute;
+  top: 0;
+  left: 0;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  width: 100%;
+  height: 100%;
+  zoom: 1;
+  background: #cccccc; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+.x-mask-msg {
+  z-index: 20001;
+  position: absolute;
+  top: 0;
+  left: 0;
+  padding: 2px;
+  border: 1px solid;
+  border-color: #99bce8; }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+  .x-mask-msg div {
+    padding: 5px 10px 5px 25px;
+    background-image: url('../../resources/themes/images/default/grid/loading.gif');
+    background-repeat: no-repeat;
+    background-position: 5px center;
+    cursor: wait;
+    border: 1px solid #a3bad9;
+    background-color: #eeeeee;
+    color: #222222;
+    font: normal 11px tahoma, arial, verdana, sans-serif; }
+
+/**
+ * Creates the base structure of an Ext.ProgressBar
+ * @member Ext.ProgressBar
+ */
+/**
+ * Creates a visual theme for an Ext.ProgressBar
+ * @member Ext.ProgressBar
+ */
+/**
+ * Creates base structure for a Draw Component.
+ * @member Ext.draw.Component
+ */
+/**
+ * Creates the base structure of Viewport.
+ * @member Ext.container.Viewport
+ */
+/**
+ * W3C suggested default style sheet for HTML 4:
+ * [http://www.w3.org/TR/CSS21/sample.html](http://www.w3.org/TR/CSS21/sample.html)
+ *
+ * @member Global_CSS
+ */
+/* line 30, ../themes/stylesheets/ext4/default/_all.scss */
+.x-reset {
+  /* IE9 shows scrollbars in a button unless this is set  */
+  /* Keep the selector simple ".x-btn .x-frame-mc" is enough to target the center frame of the button table */
+  /* Only center when all there is is text. Otherwise solo icons get centered. */
+  /*
+  IE6-8 have issues with shrinking the TR to 0px (even w/line-height=0), so we
+  use an IE-specific trick to make the row disappear. We cannot do this on any
+  other browser, because it is not a non-standard thing to do and those other
+  browsers will do whacky things with it.
+  */
+  /* IE6, IE7, and all IE Quirks mode need line-height to be the same as checkbox height or the header/row height will be too tall */
+  /*misc*/
+        /*
+        In oldIE, text inputs get a mysterious extra pixel of spacing above and below.
+        This is targeted at IE6-IE7 (all modes) and IE9+ Quirks mode.
+
+        IE8 quirks on Windows 7 requires this fix, but on
+        IE8 quirks on Windows XP, this is breaks the layout.
+        TODO: Check field input heights in IE8 quirks on Windows Vista.
+
+        Since we can't specifically target a specific version of Windows via CSS, we default to fixing it the XP way, for now.
+        */
+  /* IE legend positioning bug */
+  /* Hack for IE; causes alignment problem in IE9 standards mode so exclude that */
+  /* Focused */
+  /* Radios */
+  /* boxLabel */
+  /* Horizontal styles */
+  /* Vertical styles */
+  /* Top Tabs */
+  /* Bottom Tabs */
+  /* In IE a disabled icon needs to be hidden or the opacity effect covers some of the text */
+  /* Include the element name otherwise Internet Explorer 7 & 8 take a performance hit */
+  /* Include the element name to raise the specificity to equal the :hover */
+  /*IE rounding error*/
+  /*
+   * Dock Layouts
+   * @todo move this somewhere else?
+   */ }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-reset .x-boundlist {
+    border-width: 1px;
+    border-style: solid;
+    border-color: #98c0f4;
+    background: white; }
+    /* line 12, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+    .x-reset .x-boundlist .x-toolbar {
+      border-width: 1px 0 0 0; }
+  /* line 22, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-reset .x-strict .x-ie6 .x-boundlist-list-ct,
+  .x-reset .x-strict .x-ie7 .x-boundlist-list-ct {
+    position: relative; }
+  /* line 29, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-reset .x-boundlist-item {
+    padding: 2px;
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default;
+    cursor: pointer;
+    cursor: hand;
+    position: relative;
+    /*allow hover in IE on empty items*/
+    border-width: 1px;
+    border-style: dotted;
+    border-color: white; }
+  /* line 43, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-reset .x-boundlist-selected {
+    background: #cbdaf0;
+    border-color: #8eabe4; }
+  /* line 48, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-reset .x-boundlist-item-over {
+    background: #dfe8f6;
+    border-color: #a3bae9; }
+  /* line 53, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-reset .x-boundlist-floating {
+    border-top-width: 0; }
+  /* line 57, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-reset .x-boundlist-above {
+    border-top-width: 1px;
+    border-bottom-width: 1px; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn {
+    display: inline-block;
+    zoom: 1;
+    *display: inline;
+    position: relative;
+    cursor: pointer;
+    cursor: hand;
+    white-space: nowrap;
+    vertical-align: middle;
+    background-repeat: no-repeat; }
+    /* line 19, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn * {
+      cursor: pointer;
+      cursor: hand; }
+    /* line 26, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn em {
+      background-repeat: no-repeat; }
+      /* line 30, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+      .x-reset .x-btn em a {
+        text-decoration: none;
+        display: block;
+        color: inherit;
+        width: 100%;
+        zoom: 1; }
+    /* line 45, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn button {
+      width: 100%;
+      display: block;
+      margin: 0;
+      padding: 0;
+      border: 0;
+      background: none;
+      outline: 0 none;
+      overflow: hidden;
+      vertical-align: bottom;
+      -webkit-appearance: none; }
+      /* line 59, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+      .x-reset .x-btn button::-moz-focus-inner {
+        border: 0;
+        padding: 0; }
+    /* line 65, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn .x-btn-inner {
+      display: block;
+      white-space: nowrap;
+      background-color: transparent;
+      background-repeat: no-repeat;
+      background-position: left center;
+      overflow: hidden; }
+    /* line 74, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn .x-btn-left .x-btn-inner {
+      text-align: left; }
+    /* line 78, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn .x-btn-center .x-btn-inner {
+      text-align: center; }
+    /* line 82, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn .x-btn-right .x-btn-inner {
+      text-align: right; }
+  /* line 87, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-disabled span {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5; }
+    /* line 91, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-disabled span, .x-ie7 .x-reset .x-btn-disabled span {
+      filter: none; }
+  /* line 98, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie7 .x-btn-disabled,
+  .x-reset .x-ie8 .x-btn-disabled {
+    filter: none; }
+  /* line 105, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie6 .x-btn-disabled .x-btn-icon,
+  .x-reset .x-ie7 .x-btn-disabled .x-btn-icon,
+  .x-reset .x-ie8 .x-btn-disabled .x-btn-icon {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+    opacity: 0.6; }
+  /* line 112, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie9 .x-btn button {
+    overflow: visible!important; }
+  /* line 117, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset * html .x-ie .x-btn button {
+    width: 1px; }
+  /* line 122, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie .x-btn button {
+    overflow-x: visible;
+    /*prevents extra horiz space in IE*/
+    vertical-align: baseline;
+    /*IE doesn't like bottom*/ }
+  /* line 129, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-strict .x-ie6 .x-btn .x-frame-mc,
+  .x-reset .x-strict .x-ie7 .x-btn .x-frame-mc {
+    height: 100%; }
+  /* line 138, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn .x-frame-mc {
+    vertical-align: middle;
+    white-space: nowrap;
+    cursor: pointer; }
+  /* line 147, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-noicon .x-frame-mc {
+    text-align: center; }
+  /* line 153, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-icon-text-left .x-btn-icon {
+    background-position: left center; }
+  /* line 157, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-icon-text-right .x-btn-icon {
+    background-position: right center; }
+  /* line 161, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-icon-text-top .x-btn-icon {
+    background-position: center top; }
+  /* line 165, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-icon-text-bottom .x-btn-icon {
+    background-position: center bottom; }
+  /* line 170, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn button, .x-reset .x-btn a {
+    position: relative; }
+    /* line 173, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn button .x-btn-icon, .x-reset .x-btn a .x-btn-icon {
+      position: absolute;
+      background-repeat: no-repeat; }
+  /* line 180, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-arrow-right {
+    background: transparent no-repeat right center;
+    padding-right: 12px; }
+    /* line 184, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn-arrow-right .x-btn-inner {
+      padding-right: 0 !important; }
+  /* line 189, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-toolbar .x-btn-arrow-right {
+    padding-right: 12px; }
+  /* line 193, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-arrow-bottom {
+    background: transparent no-repeat center bottom;
+    padding-bottom: 12px; }
+  /* line 198, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-arrow {
+    background-image: url('../../resources/themes/images/default/button/arrow.gif');
+    display: block; }
+  /* line 206, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-split-right,
+  .x-reset .x-btn-over .x-btn-split-right {
+    background: transparent no-repeat right center;
+    background-image: url('../../resources/themes/images/default/button/s-arrow.gif');
+    padding-right: 14px !important; }
+  /* line 213, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-split-bottom,
+  .x-reset .x-btn-over .x-btn-split-bottom {
+    background: transparent no-repeat center bottom;
+    background-image: url('../../resources/themes/images/default/button/s-arrow-b.gif');
+    padding-bottom: 14px; }
+  /* line 219, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-toolbar .x-btn-split-right {
+    background-image: url('../../resources/themes/images/default/button/s-arrow-noline.gif');
+    padding-right: 12px !important; }
+  /* line 224, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-toolbar .x-btn-split-bottom {
+    background-image: url('../../resources/themes/images/default/button/s-arrow-b-noline.gif'); }
+  /* line 228, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-split {
+    display: block; }
+  /* line 233, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-item-disabled,
+  .x-reset .x-item-disabled * {
+    cursor: default; }
+  /* line 237, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-cycle-fixed-width .x-btn-inner {
+    text-align: inherit; }
+  /* line 241, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-over .x-btn-split-right {
+    background-image: url('../../resources/themes/images/default/button/s-arrow-o.gif'); }
+  /* line 242, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-over .x-btn-split-bottom {
+    background-image: url('../../resources/themes/images/default/button/s-arrow-bo.gif'); }
+  /* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small {
+    border-color: #d1d1d1; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-btn-default-small {
+    padding: 2px 2px 2px 2px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: white; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-btn-default-small-mc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-bg.gif');
+    background-color: white; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-small {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1100303px 1000303px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-small-tl,
+  .x-reset .x-nbr .x-btn-default-small-bl,
+  .x-reset .x-nbr .x-btn-default-small-tr,
+  .x-reset .x-nbr .x-btn-default-small-br,
+  .x-reset .x-nbr .x-btn-default-small-tc,
+  .x-reset .x-nbr .x-btn-default-small-bc,
+  .x-reset .x-nbr .x-btn-default-small-ml,
+  .x-reset .x-nbr .x-btn-default-small-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-small-ml,
+  .x-reset .x-nbr .x-btn-default-small-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-sides.gif');
+    background-position: 0 0; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-small-mc {
+    padding: 0px 0px 0px 0px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-btn-default-small-tl,
+  .x-reset .x-strict .x-ie7 .x-btn-default-small-bl {
+    position: relative;
+    right: 0; }
+  /* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small .x-btn-inner {
+    font-size: 11px;
+    font-weight: normal;
+    font-family: tahoma, arial, verdana, sans-serif;
+    color: #333333;
+    background-repeat: no-repeat;
+    padding: 0 4px; }
+  /* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon button,
+  .x-reset .x-btn-default-small-icon a,
+  .x-reset .x-btn-default-small-icon .x-btn-inner,
+  .x-reset .x-btn-default-small-noicon button,
+  .x-reset .x-btn-default-small-noicon a,
+  .x-reset .x-btn-default-small-noicon .x-btn-inner {
+    height: 16px;
+    line-height: 16px; }
+  /* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon button, .x-reset .x-btn-default-small-icon a {
+    padding: 0; }
+  /* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon .x-btn-inner {
+    /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+    width: 16px;
+    padding: 0; }
+  /* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon .x-btn-icon {
+    width: 16px;
+    height: 16px;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+  /* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-left button, .x-reset .x-btn-default-small-icon-text-left a {
+    height: 16px; }
+  /* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-left .x-btn-inner {
+    height: 16px;
+    line-height: 16px;
+    padding-left: 20px; }
+  /* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-left .x-btn-icon {
+    width: 16px;
+    height: auto;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: auto; }
+    /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-small-icon-text-left .x-btn-icon, .x-quirks .x-reset .x-btn-default-small-icon-text-left .x-btn-icon {
+      height: 16px; }
+  /* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-right button, .x-reset .x-btn-default-small-icon-text-right a {
+    height: 16px; }
+  /* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-right .x-btn-inner {
+    height: 16px;
+    line-height: 16px;
+    padding-right: 20px !important; }
+  /* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-right .x-btn-icon {
+    width: 16px;
+    height: auto;
+    top: 0;
+    left: auto;
+    bottom: 0;
+    right: 0; }
+    /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-small-icon-text-right .x-btn-icon, .x-quirks .x-reset .x-btn-default-small-icon-text-right .x-btn-icon {
+      height: 16px; }
+  /* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-top .x-btn-inner {
+    padding-top: 20px; }
+  /* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-top .x-btn-icon {
+    width: auto;
+    height: 16px;
+    top: 0;
+    left: 0;
+    bottom: auto;
+    right: 0; }
+    /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-small-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-small-icon-text-top .x-btn-icon {
+      width: 16px; }
+  /* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-bottom .x-btn-inner {
+    padding-bottom: 20px; }
+  /* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-bottom .x-btn-icon {
+    width: auto;
+    height: 16px;
+    top: auto;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+    /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-small-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-small-icon-text-bottom .x-btn-icon {
+      width: 16px; }
+  /* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-over {
+    border-color: #b0ccf2;
+    background-image: none;
+    background-color: #e4f3ff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+    background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+  /* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-focus {
+    border-color: #b0ccf2;
+    background-image: none;
+    background-color: #e4f3ff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+    background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+  /* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-menu-active,
+  .x-reset .x-btn-default-small-pressed {
+    border-color: #9ebae1;
+    background-image: none;
+    background-color: #b6cbe4;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+    background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -ms-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); }
+  /* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-disabled {
+    border-color: #e1e1e1;
+    background-image: none;
+    background-color: #f7f7f7;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+    background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -ms-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); }
+    /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn-default-small-disabled .x-btn-inner {
+      color: #333333 !important; }
+  /* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie .x-btn-default-small-disabled .x-btn-inner {
+    color: #595959 !important; }
+  /* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie6 .x-btn-default-small-disabled .x-btn-inner {
+    color: #8c8c8c !important; }
+  /* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-small-over .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-small-over .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-small-over .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-small-over .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-small-over .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-small-over .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-over-corners.gif'); }
+  /* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-small-over .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-small-over .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-over-sides.gif'); }
+  /* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-small-over .x-frame-mc {
+    background-color: #e4f3ff;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-over-bg.gif'); }
+  /* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-small-focus .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-small-focus .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-small-focus .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-small-focus .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-small-focus .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-small-focus .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-focus-corners.gif'); }
+  /* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-small-focus .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-small-focus .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-focus-sides.gif'); }
+  /* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-small-focus .x-frame-mc {
+    background-color: #e4f3ff;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-focus-bg.gif'); }
+  /* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-bc,
+  .x-reset .x-nbr .x-btn-default-small-pressed .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-small-pressed .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-small-pressed .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-small-pressed .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-small-pressed .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-small-pressed .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-pressed-corners.gif'); }
+  /* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-mr,
+  .x-reset .x-nbr .x-btn-default-small-pressed .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-small-pressed .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-pressed-sides.gif'); }
+  /* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-mc,
+  .x-reset .x-nbr .x-btn-default-small-pressed .x-frame-mc {
+    background-color: #b6cbe4;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-pressed-bg.gif'); }
+  /* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-small-disabled .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-small-disabled .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-small-disabled .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-small-disabled .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-small-disabled .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-small-disabled .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-disabled-corners.gif'); }
+  /* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-small-disabled .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-small-disabled .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-disabled-sides.gif'); }
+  /* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-small-disabled .x-frame-mc {
+    background-color: #f7f7f7;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-disabled-bg.gif'); }
+  /* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-small {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-bg.gif'); }
+  /* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-small-over {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-over-bg.gif'); }
+  /* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-small-focus {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-focus-bg.gif'); }
+  /* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-small-menu-active,
+  .x-reset .x-nlg .x-btn-default-small-pressed {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-pressed-bg.gif'); }
+  /* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-small-disabled {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-disabled-bg.gif'); }
+  /* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium {
+    border-color: #d1d1d1; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-btn-default-medium {
+    padding: 3px 3px 3px 3px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: white; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-btn-default-medium-mc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif');
+    background-color: white; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-medium {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1100303px 1000303px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-medium-tl,
+  .x-reset .x-nbr .x-btn-default-medium-bl,
+  .x-reset .x-nbr .x-btn-default-medium-tr,
+  .x-reset .x-nbr .x-btn-default-medium-br,
+  .x-reset .x-nbr .x-btn-default-medium-tc,
+  .x-reset .x-nbr .x-btn-default-medium-bc,
+  .x-reset .x-nbr .x-btn-default-medium-ml,
+  .x-reset .x-nbr .x-btn-default-medium-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-medium-ml,
+  .x-reset .x-nbr .x-btn-default-medium-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-sides.gif');
+    background-position: 0 0; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-medium-mc {
+    padding: 1px 1px 1px 1px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-btn-default-medium-tl,
+  .x-reset .x-strict .x-ie7 .x-btn-default-medium-bl {
+    position: relative;
+    right: 0; }
+  /* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium .x-btn-inner {
+    font-size: 11px;
+    font-weight: normal;
+    font-family: tahoma, arial, verdana, sans-serif;
+    color: #333333;
+    background-repeat: no-repeat;
+    padding: 0 3px; }
+  /* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon button,
+  .x-reset .x-btn-default-medium-icon a,
+  .x-reset .x-btn-default-medium-icon .x-btn-inner,
+  .x-reset .x-btn-default-medium-noicon button,
+  .x-reset .x-btn-default-medium-noicon a,
+  .x-reset .x-btn-default-medium-noicon .x-btn-inner {
+    height: 24px;
+    line-height: 24px; }
+  /* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon button, .x-reset .x-btn-default-medium-icon a {
+    padding: 0; }
+  /* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon .x-btn-inner {
+    /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+    width: 24px;
+    padding: 0; }
+  /* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon .x-btn-icon {
+    width: 24px;
+    height: 24px;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+  /* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-left button, .x-reset .x-btn-default-medium-icon-text-left a {
+    height: 24px; }
+  /* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-left .x-btn-inner {
+    height: 24px;
+    line-height: 24px;
+    padding-left: 28px; }
+  /* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-left .x-btn-icon {
+    width: 24px;
+    height: auto;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: auto; }
+    /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-medium-icon-text-left .x-btn-icon, .x-quirks .x-reset .x-btn-default-medium-icon-text-left .x-btn-icon {
+      height: 24px; }
+  /* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-right button, .x-reset .x-btn-default-medium-icon-text-right a {
+    height: 24px; }
+  /* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-right .x-btn-inner {
+    height: 24px;
+    line-height: 24px;
+    padding-right: 28px !important; }
+  /* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-right .x-btn-icon {
+    width: 24px;
+    height: auto;
+    top: 0;
+    left: auto;
+    bottom: 0;
+    right: 0; }
+    /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-medium-icon-text-right .x-btn-icon, .x-quirks .x-reset .x-btn-default-medium-icon-text-right .x-btn-icon {
+      height: 24px; }
+  /* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-top .x-btn-inner {
+    padding-top: 28px; }
+  /* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-top .x-btn-icon {
+    width: auto;
+    height: 24px;
+    top: 0;
+    left: 0;
+    bottom: auto;
+    right: 0; }
+    /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-medium-icon-text-top .x-btn-icon {
+      width: 24px; }
+  /* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-bottom .x-btn-inner {
+    padding-bottom: 28px; }
+  /* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-bottom .x-btn-icon {
+    width: auto;
+    height: 24px;
+    top: auto;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+    /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-medium-icon-text-bottom .x-btn-icon {
+      width: 24px; }
+  /* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-over {
+    border-color: #b0ccf2;
+    background-image: none;
+    background-color: #e4f3ff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+    background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+  /* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-focus {
+    border-color: #b0ccf2;
+    background-image: none;
+    background-color: #e4f3ff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+    background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+  /* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-menu-active,
+  .x-reset .x-btn-default-medium-pressed {
+    border-color: #9ebae1;
+    background-image: none;
+    background-color: #b6cbe4;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+    background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -ms-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); }
+  /* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-disabled {
+    border-color: #e1e1e1;
+    background-image: none;
+    background-color: #f7f7f7;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+    background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -ms-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); }
+    /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn-default-medium-disabled .x-btn-inner {
+      color: #333333 !important; }
+  /* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie .x-btn-default-medium-disabled .x-btn-inner {
+    color: #595959 !important; }
+  /* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie6 .x-btn-default-medium-disabled .x-btn-inner {
+    color: #8c8c8c !important; }
+  /* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-medium-over .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-medium-over .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-medium-over .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-medium-over .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-medium-over .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-medium-over .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-over-corners.gif'); }
+  /* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-medium-over .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-medium-over .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-over-sides.gif'); }
+  /* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-medium-over .x-frame-mc {
+    background-color: #e4f3ff;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-over-bg.gif'); }
+  /* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-medium-focus .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-medium-focus .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-medium-focus .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-medium-focus .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-medium-focus .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-medium-focus .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-focus-corners.gif'); }
+  /* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-medium-focus .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-medium-focus .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-focus-sides.gif'); }
+  /* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-medium-focus .x-frame-mc {
+    background-color: #e4f3ff;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-focus-bg.gif'); }
+  /* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-bc,
+  .x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-pressed-corners.gif'); }
+  /* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-mr,
+  .x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-pressed-sides.gif'); }
+  /* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-mc,
+  .x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-mc {
+    background-color: #b6cbe4;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif'); }
+  /* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-disabled-corners.gif'); }
+  /* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-disabled-sides.gif'); }
+  /* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-mc {
+    background-color: #f7f7f7;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif'); }
+  /* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-medium {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif'); }
+  /* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-medium-over {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-over-bg.gif'); }
+  /* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-medium-focus {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-focus-bg.gif'); }
+  /* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-medium-menu-active,
+  .x-reset .x-nlg .x-btn-default-medium-pressed {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif'); }
+  /* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-medium-disabled {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif'); }
+  /* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large {
+    border-color: #d1d1d1; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-btn-default-large {
+    padding: 3px 3px 3px 3px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: white; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-btn-default-large-mc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-bg.gif');
+    background-color: white; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-large {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1100303px 1000303px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-large-tl,
+  .x-reset .x-nbr .x-btn-default-large-bl,
+  .x-reset .x-nbr .x-btn-default-large-tr,
+  .x-reset .x-nbr .x-btn-default-large-br,
+  .x-reset .x-nbr .x-btn-default-large-tc,
+  .x-reset .x-nbr .x-btn-default-large-bc,
+  .x-reset .x-nbr .x-btn-default-large-ml,
+  .x-reset .x-nbr .x-btn-default-large-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-large-ml,
+  .x-reset .x-nbr .x-btn-default-large-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-sides.gif');
+    background-position: 0 0; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-large-mc {
+    padding: 1px 1px 1px 1px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-btn-default-large-tl,
+  .x-reset .x-strict .x-ie7 .x-btn-default-large-bl {
+    position: relative;
+    right: 0; }
+  /* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large .x-btn-inner {
+    font-size: 11px;
+    font-weight: normal;
+    font-family: tahoma, arial, verdana, sans-serif;
+    color: #333333;
+    background-repeat: no-repeat;
+    padding: 0 3px; }
+  /* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon button,
+  .x-reset .x-btn-default-large-icon a,
+  .x-reset .x-btn-default-large-icon .x-btn-inner,
+  .x-reset .x-btn-default-large-noicon button,
+  .x-reset .x-btn-default-large-noicon a,
+  .x-reset .x-btn-default-large-noicon .x-btn-inner {
+    height: 32px;
+    line-height: 32px; }
+  /* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon button, .x-reset .x-btn-default-large-icon a {
+    padding: 0; }
+  /* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon .x-btn-inner {
+    /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+    width: 32px;
+    padding: 0; }
+  /* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon .x-btn-icon {
+    width: 32px;
+    height: 32px;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+  /* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-left button, .x-reset .x-btn-default-large-icon-text-left a {
+    height: 32px; }
+  /* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-left .x-btn-inner {
+    height: 32px;
+    line-height: 32px;
+    padding-left: 36px; }
+  /* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-left .x-btn-icon {
+    width: 32px;
+    height: auto;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: auto; }
+    /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-large-icon-text-left .x-btn-icon, .x-quirks .x-reset .x-btn-default-large-icon-text-left .x-btn-icon {
+      height: 32px; }
+  /* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-right button, .x-reset .x-btn-default-large-icon-text-right a {
+    height: 32px; }
+  /* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-right .x-btn-inner {
+    height: 32px;
+    line-height: 32px;
+    padding-right: 36px !important; }
+  /* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-right .x-btn-icon {
+    width: 32px;
+    height: auto;
+    top: 0;
+    left: auto;
+    bottom: 0;
+    right: 0; }
+    /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-large-icon-text-right .x-btn-icon, .x-quirks .x-reset .x-btn-default-large-icon-text-right .x-btn-icon {
+      height: 32px; }
+  /* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-top .x-btn-inner {
+    padding-top: 36px; }
+  /* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-top .x-btn-icon {
+    width: auto;
+    height: 32px;
+    top: 0;
+    left: 0;
+    bottom: auto;
+    right: 0; }
+    /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-large-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-large-icon-text-top .x-btn-icon {
+      width: 32px; }
+  /* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-bottom .x-btn-inner {
+    padding-bottom: 36px; }
+  /* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-bottom .x-btn-icon {
+    width: auto;
+    height: 32px;
+    top: auto;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+    /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-large-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-large-icon-text-bottom .x-btn-icon {
+      width: 32px; }
+  /* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-over {
+    border-color: #b0ccf2;
+    background-image: none;
+    background-color: #e4f3ff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+    background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+  /* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-focus {
+    border-color: #b0ccf2;
+    background-image: none;
+    background-color: #e4f3ff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+    background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+  /* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-menu-active,
+  .x-reset .x-btn-default-large-pressed {
+    border-color: #9ebae1;
+    background-image: none;
+    background-color: #b6cbe4;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+    background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -ms-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); }
+  /* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-disabled {
+    border-color: #e1e1e1;
+    background-image: none;
+    background-color: #f7f7f7;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+    background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -ms-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); }
+    /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn-default-large-disabled .x-btn-inner {
+      color: #333333 !important; }
+  /* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie .x-btn-default-large-disabled .x-btn-inner {
+    color: #595959 !important; }
+  /* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie6 .x-btn-default-large-disabled .x-btn-inner {
+    color: #8c8c8c !important; }
+  /* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-large-over .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-large-over .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-large-over .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-large-over .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-large-over .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-large-over .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-over-corners.gif'); }
+  /* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-large-over .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-large-over .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-over-sides.gif'); }
+  /* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-large-over .x-frame-mc {
+    background-color: #e4f3ff;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-over-bg.gif'); }
+  /* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-large-focus .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-large-focus .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-large-focus .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-large-focus .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-large-focus .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-large-focus .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-focus-corners.gif'); }
+  /* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-large-focus .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-large-focus .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-focus-sides.gif'); }
+  /* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-large-focus .x-frame-mc {
+    background-color: #e4f3ff;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-focus-bg.gif'); }
+  /* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-bc,
+  .x-reset .x-nbr .x-btn-default-large-pressed .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-large-pressed .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-large-pressed .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-large-pressed .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-large-pressed .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-large-pressed .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-pressed-corners.gif'); }
+  /* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-mr,
+  .x-reset .x-nbr .x-btn-default-large-pressed .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-large-pressed .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-pressed-sides.gif'); }
+  /* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-mc,
+  .x-reset .x-nbr .x-btn-default-large-pressed .x-frame-mc {
+    background-color: #b6cbe4;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-pressed-bg.gif'); }
+  /* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-large-disabled .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-large-disabled .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-large-disabled .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-large-disabled .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-large-disabled .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-large-disabled .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-disabled-corners.gif'); }
+  /* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-large-disabled .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-large-disabled .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-disabled-sides.gif'); }
+  /* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-large-disabled .x-frame-mc {
+    background-color: #f7f7f7;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-disabled-bg.gif'); }
+  /* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-large {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-bg.gif'); }
+  /* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-large-over {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-over-bg.gif'); }
+  /* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-large-focus {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-focus-bg.gif'); }
+  /* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-large-menu-active,
+  .x-reset .x-nlg .x-btn-default-large-pressed {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-pressed-bg.gif'); }
+  /* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-large-disabled {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-disabled-bg.gif'); }
+  /* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small {
+    border-color: transparent; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-btn-default-toolbar-small {
+    padding: 2px 2px 2px 2px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: transparent; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-small-mc {
+    background-color: transparent; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1100303px 1000303px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-bc,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-mr {
+    zoom: 1; }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-mr {
+    zoom: 1; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-mc {
+    padding: 0px 0px 0px 0px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-btn-default-toolbar-small-tl,
+  .x-reset .x-strict .x-ie7 .x-btn-default-toolbar-small-bl {
+    position: relative;
+    right: 0; }
+  /* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small .x-btn-inner {
+    font-size: 11px;
+    font-weight: normal;
+    font-family: tahoma, arial, verdana, sans-serif;
+    color: #333333;
+    background-repeat: no-repeat;
+    padding: 0 4px; }
+  /* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon button,
+  .x-reset .x-btn-default-toolbar-small-icon a,
+  .x-reset .x-btn-default-toolbar-small-icon .x-btn-inner,
+  .x-reset .x-btn-default-toolbar-small-noicon button,
+  .x-reset .x-btn-default-toolbar-small-noicon a,
+  .x-reset .x-btn-default-toolbar-small-noicon .x-btn-inner {
+    height: 16px;
+    line-height: 16px; }
+  /* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon button, .x-reset .x-btn-default-toolbar-small-icon a {
+    padding: 0; }
+  /* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon .x-btn-inner {
+    /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+    width: 16px;
+    padding: 0; }
+  /* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon .x-btn-icon {
+    width: 16px;
+    height: 16px;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+  /* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-left button, .x-reset .x-btn-default-toolbar-small-icon-text-left a {
+    height: 16px; }
+  /* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-left .x-btn-inner {
+    height: 16px;
+    line-height: 16px;
+    padding-left: 20px; }
+  /* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-left .x-btn-icon {
+    width: 16px;
+    height: auto;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: auto; }
+    /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-small-icon-text-left .x-btn-icon, .x-quirks .x-reset .x-btn-default-toolbar-small-icon-text-left .x-btn-icon {
+      height: 16px; }
+  /* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-right button, .x-reset .x-btn-default-toolbar-small-icon-text-right a {
+    height: 16px; }
+  /* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-right .x-btn-inner {
+    height: 16px;
+    line-height: 16px;
+    padding-right: 20px !important; }
+  /* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-right .x-btn-icon {
+    width: 16px;
+    height: auto;
+    top: 0;
+    left: auto;
+    bottom: 0;
+    right: 0; }
+    /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-small-icon-text-right .x-btn-icon, .x-quirks .x-reset .x-btn-default-toolbar-small-icon-text-right .x-btn-icon {
+      height: 16px; }
+  /* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-top .x-btn-inner {
+    padding-top: 20px; }
+  /* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-top .x-btn-icon {
+    width: auto;
+    height: 16px;
+    top: 0;
+    left: 0;
+    bottom: auto;
+    right: 0; }
+    /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-small-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-toolbar-small-icon-text-top .x-btn-icon {
+      width: 16px; }
+  /* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner {
+    padding-bottom: 20px; }
+  /* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon {
+    width: auto;
+    height: 16px;
+    top: auto;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+    /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon {
+      width: 16px; }
+  /* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-over {
+    border-color: #81a4d0;
+    background-image: none;
+    background-color: #dbeeff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+    background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+  /* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-focus {
+    border-color: #81a4d0;
+    background-image: none;
+    background-color: #dbeeff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+    background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+  /* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-menu-active,
+  .x-reset .x-btn-default-toolbar-small-pressed {
+    border-color: #7a9ac4;
+    background-image: none;
+    background-color: #bccfe5;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+    background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -ms-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); }
+  /* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-disabled {
+    background-image: none;
+    background-color: transparent; }
+    /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn-default-toolbar-small-disabled .x-btn-inner {
+      color: #333333 !important; }
+  /* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie .x-btn-default-toolbar-small-disabled .x-btn-inner {
+    color: #595959 !important; }
+  /* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie6 .x-btn-default-toolbar-small-disabled .x-btn-inner {
+    color: #8c8c8c !important; }
+  /* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-corners.gif'); }
+  /* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-sides.gif'); }
+  /* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-mc {
+    background-color: #dbeeff;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif'); }
+  /* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-corners.gif'); }
+  /* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-sides.gif'); }
+  /* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-mc {
+    background-color: #dbeeff;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif'); }
+  /* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bc,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-corners.gif'); }
+  /* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mr,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-sides.gif'); }
+  /* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mc,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mc {
+    background-color: #bccfe5;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif'); }
+  /* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-disabled-corners.gif'); }
+  /* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-disabled-sides.gif'); }
+  /* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mc {
+    background-color: transparent; }
+  /* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-small-over {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif'); }
+  /* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-small-focus {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif'); }
+  /* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-small-menu-active,
+  .x-reset .x-nlg .x-btn-default-toolbar-small-pressed {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif'); }
+  /* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium {
+    border-color: transparent; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-btn-default-toolbar-medium {
+    padding: 3px 3px 3px 3px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: transparent; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-medium-mc {
+    background-color: transparent; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1100303px 1000303px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-bc,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-mr {
+    zoom: 1; }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-mr {
+    zoom: 1; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-mc {
+    padding: 1px 1px 1px 1px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,
+  .x-reset .x-strict .x-ie7 .x-btn-default-toolbar-medium-bl {
+    position: relative;
+    right: 0; }
+  /* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium .x-btn-inner {
+    font-size: 11px;
+    font-weight: normal;
+    font-family: tahoma, arial, verdana, sans-serif;
+    color: #333333;
+    background-repeat: no-repeat;
+    padding: 0 3px; }
+  /* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon button,
+  .x-reset .x-btn-default-toolbar-medium-icon a,
+  .x-reset .x-btn-default-toolbar-medium-icon .x-btn-inner,
+  .x-reset .x-btn-default-toolbar-medium-noicon button,
+  .x-reset .x-btn-default-toolbar-medium-noicon a,
+  .x-reset .x-btn-default-toolbar-medium-noicon .x-btn-inner {
+    height: 24px;
+    line-height: 24px; }
+  /* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon button, .x-reset .x-btn-default-toolbar-medium-icon a {
+    padding: 0; }
+  /* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon .x-btn-inner {
+    /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+    width: 24px;
+    padding: 0; }
+  /* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon .x-btn-icon {
+    width: 24px;
+    height: 24px;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+  /* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-left button, .x-reset .x-btn-default-toolbar-medium-icon-text-left a {
+    height: 24px; }
+  /* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-left .x-btn-inner {
+    height: 24px;
+    line-height: 24px;
+    padding-left: 28px; }
+  /* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon {
+    width: 24px;
+    height: auto;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: auto; }
+    /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon, .x-quirks .x-reset .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon {
+      height: 24px; }
+  /* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-right button, .x-reset .x-btn-default-toolbar-medium-icon-text-right a {
+    height: 24px; }
+  /* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-right .x-btn-inner {
+    height: 24px;
+    line-height: 24px;
+    padding-right: 28px !important; }
+  /* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon {
+    width: 24px;
+    height: auto;
+    top: 0;
+    left: auto;
+    bottom: 0;
+    right: 0; }
+    /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon, .x-quirks .x-reset .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon {
+      height: 24px; }
+  /* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-top .x-btn-inner {
+    padding-top: 28px; }
+  /* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon {
+    width: auto;
+    height: 24px;
+    top: 0;
+    left: 0;
+    bottom: auto;
+    right: 0; }
+    /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon {
+      width: 24px; }
+  /* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner {
+    padding-bottom: 28px; }
+  /* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon {
+    width: auto;
+    height: 24px;
+    top: auto;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+    /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon {
+      width: 24px; }
+  /* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-over {
+    border-color: #81a4d0;
+    background-image: none;
+    background-color: #dbeeff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+    background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+  /* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-focus {
+    border-color: #81a4d0;
+    background-image: none;
+    background-color: #dbeeff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+    background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+  /* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-menu-active,
+  .x-reset .x-btn-default-toolbar-medium-pressed {
+    border-color: #7a9ac4;
+    background-image: none;
+    background-color: #bccfe5;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+    background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -ms-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); }
+  /* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-disabled {
+    background-image: none;
+    background-color: transparent; }
+    /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+      color: #333333 !important; }
+  /* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+    color: #595959 !important; }
+  /* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie6 .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+    color: #8c8c8c !important; }
+  /* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-corners.gif'); }
+  /* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-sides.gif'); }
+  /* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-mc {
+    background-color: #dbeeff;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif'); }
+  /* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-corners.gif'); }
+  /* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-sides.gif'); }
+  /* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mc {
+    background-color: #dbeeff;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif'); }
+  /* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bc,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-corners.gif'); }
+  /* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mr,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-sides.gif'); }
+  /* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mc,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mc {
+    background-color: #bccfe5;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif'); }
+  /* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-corners.gif'); }
+  /* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-sides.gif'); }
+  /* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mc {
+    background-color: transparent; }
+  /* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-medium-over {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif'); }
+  /* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-medium-focus {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif'); }
+  /* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-medium-menu-active,
+  .x-reset .x-nlg .x-btn-default-toolbar-medium-pressed {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif'); }
+  /* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large {
+    border-color: transparent; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-btn-default-toolbar-large {
+    padding: 3px 3px 3px 3px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: transparent; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-large-mc {
+    background-color: transparent; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1100303px 1000303px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-bc,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-mr {
+    zoom: 1; }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-mr {
+    zoom: 1; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-mc {
+    padding: 1px 1px 1px 1px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-btn-default-toolbar-large-tl,
+  .x-reset .x-strict .x-ie7 .x-btn-default-toolbar-large-bl {
+    position: relative;
+    right: 0; }
+  /* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large .x-btn-inner {
+    font-size: 11px;
+    font-weight: normal;
+    font-family: tahoma, arial, verdana, sans-serif;
+    color: #333333;
+    background-repeat: no-repeat;
+    padding: 0 3px; }
+  /* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon button,
+  .x-reset .x-btn-default-toolbar-large-icon a,
+  .x-reset .x-btn-default-toolbar-large-icon .x-btn-inner,
+  .x-reset .x-btn-default-toolbar-large-noicon button,
+  .x-reset .x-btn-default-toolbar-large-noicon a,
+  .x-reset .x-btn-default-toolbar-large-noicon .x-btn-inner {
+    height: 32px;
+    line-height: 32px; }
+  /* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon button, .x-reset .x-btn-default-toolbar-large-icon a {
+    padding: 0; }
+  /* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon .x-btn-inner {
+    /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+    width: 32px;
+    padding: 0; }
+  /* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon .x-btn-icon {
+    width: 32px;
+    height: 32px;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+  /* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-left button, .x-reset .x-btn-default-toolbar-large-icon-text-left a {
+    height: 32px; }
+  /* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-left .x-btn-inner {
+    height: 32px;
+    line-height: 32px;
+    padding-left: 36px; }
+  /* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-left .x-btn-icon {
+    width: 32px;
+    height: auto;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: auto; }
+    /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-large-icon-text-left .x-btn-icon, .x-quirks .x-reset .x-btn-default-toolbar-large-icon-text-left .x-btn-icon {
+      height: 32px; }
+  /* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-right button, .x-reset .x-btn-default-toolbar-large-icon-text-right a {
+    height: 32px; }
+  /* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-right .x-btn-inner {
+    height: 32px;
+    line-height: 32px;
+    padding-right: 36px !important; }
+  /* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-right .x-btn-icon {
+    width: 32px;
+    height: auto;
+    top: 0;
+    left: auto;
+    bottom: 0;
+    right: 0; }
+    /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-large-icon-text-right .x-btn-icon, .x-quirks .x-reset .x-btn-default-toolbar-large-icon-text-right .x-btn-icon {
+      height: 32px; }
+  /* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-top .x-btn-inner {
+    padding-top: 36px; }
+  /* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-top .x-btn-icon {
+    width: auto;
+    height: 32px;
+    top: 0;
+    left: 0;
+    bottom: auto;
+    right: 0; }
+    /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-large-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-toolbar-large-icon-text-top .x-btn-icon {
+      width: 32px; }
+  /* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner {
+    padding-bottom: 36px; }
+  /* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon {
+    width: auto;
+    height: 32px;
+    top: auto;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+    /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon {
+      width: 32px; }
+  /* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-over {
+    border-color: #81a4d0;
+    background-image: none;
+    background-color: #dbeeff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+    background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+  /* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-focus {
+    border-color: #81a4d0;
+    background-image: none;
+    background-color: #dbeeff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+    background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+  /* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-menu-active,
+  .x-reset .x-btn-default-toolbar-large-pressed {
+    border-color: #7a9ac4;
+    background-image: none;
+    background-color: #bccfe5;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+    background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -ms-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); }
+  /* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-disabled {
+    background-image: none;
+    background-color: transparent; }
+    /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn-default-toolbar-large-disabled .x-btn-inner {
+      color: #333333 !important; }
+  /* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie .x-btn-default-toolbar-large-disabled .x-btn-inner {
+    color: #595959 !important; }
+  /* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie6 .x-btn-default-toolbar-large-disabled .x-btn-inner {
+    color: #8c8c8c !important; }
+  /* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-corners.gif'); }
+  /* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-sides.gif'); }
+  /* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-mc {
+    background-color: #dbeeff;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif'); }
+  /* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-corners.gif'); }
+  /* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-sides.gif'); }
+  /* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-mc {
+    background-color: #dbeeff;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif'); }
+  /* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bc,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-corners.gif'); }
+  /* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mr,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-sides.gif'); }
+  /* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mc,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mc {
+    background-color: #bccfe5;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif'); }
+  /* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tl,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bl,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tr,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-br,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tc,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-disabled-corners.gif'); }
+  /* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-ml,
+  .x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-disabled-sides.gif'); }
+  /* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mc {
+    background-color: transparent; }
+  /* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-large-over {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif'); }
+  /* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-large-focus {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif'); }
+  /* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-large-menu-active,
+  .x-reset .x-nlg .x-btn-default-toolbar-large-pressed {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif'); }
+  /* line 571, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-disabled,
+  .x-reset .x-btn-default-toolbar-medium-disabled,
+  .x-reset .x-btn-default-toolbar-large-disabled {
+    border-color: transparent;
+    background-image: none;
+    background: transparent; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-reset .x-btn-group {
+    position: relative;
+    overflow: hidden; }
+  /* line 11, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-reset .x-btn-group-body {
+    position: relative;
+    zoom: 1;
+    padding: 0 1px; }
+    /* line 15, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+    .x-reset .x-btn-group-body .x-table-layout-cell {
+      vertical-align: top; }
+  /* line 20, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-reset .x-btn-group-header-text {
+    white-space: nowrap; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-btn-group-default-framed {
+    padding: 1px 1px 1px 1px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #d0def0; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-btn-group-default-framed-mc {
+    background-color: #d0def0; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-group-default-framed {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000202px 1000202px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-group-default-framed-tl,
+  .x-reset .x-nbr .x-btn-group-default-framed-bl,
+  .x-reset .x-nbr .x-btn-group-default-framed-tr,
+  .x-reset .x-nbr .x-btn-group-default-framed-br,
+  .x-reset .x-nbr .x-btn-group-default-framed-tc,
+  .x-reset .x-nbr .x-btn-group-default-framed-bc,
+  .x-reset .x-nbr .x-btn-group-default-framed-ml,
+  .x-reset .x-nbr .x-btn-group-default-framed-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/btn-group/btn-group-default-framed-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-group-default-framed-ml,
+  .x-reset .x-nbr .x-btn-group-default-framed-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/btn-group/btn-group-default-framed-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-btn-group-default-framed-mc {
+    padding: 0px 0px 0px 0px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-btn-group-default-framed-tl,
+  .x-reset .x-strict .x-ie7 .x-btn-group-default-framed-bl {
+    position: relative;
+    right: 0; }
+  /* line 60, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-reset .x-btn-group-default-framed {
+    border-color: #b7c8d7;
+    -moz-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+    -webkit-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+    -o-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+    box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset; }
+  /* line 68, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-reset .x-btn-group-header-default-framed {
+    margin: 2px 2px 0 2px; }
+  /* line 72, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-reset .x-btn-group-header-body-default-framed {
+    padding: 1px 0;
+    background: #c2d8f0;
+    -moz-border-radius-topleft: 2px;
+    -webkit-border-top-left-radius: 2px;
+    -o-border-top-left-radius: 2px;
+    -ms-border-top-left-radius: 2px;
+    -khtml-border-top-left-radius: 2px;
+    border-top-left-radius: 2px;
+    -moz-border-radius-topright: 2px;
+    -webkit-border-top-right-radius: 2px;
+    -o-border-top-right-radius: 2px;
+    -ms-border-top-right-radius: 2px;
+    -khtml-border-top-right-radius: 2px;
+    border-top-right-radius: 2px; }
+  /* line 80, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-reset .x-btn-group-header-text-default-framed {
+    font: normal 11px tahoma, arial, verdana, sans-serif;
+    color: #3e6aaa; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker {
+    border: 1px solid #1b376c;
+    background-color: white;
+    position: relative; }
+    /* line 12, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker a {
+      -moz-outline: 0 none;
+      outline: 0 none;
+      color: #15428b;
+      text-decoration: none;
+      border-width: 0; }
+  /* line 25, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-inner,
+  .x-reset .x-datepicker-inner td,
+  .x-reset .x-datepicker-inner th {
+    border-collapse: separate; }
+  /* line 29, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-header {
+    position: relative;
+    height: 26px;
+    background-image: none;
+    background-color: #23427c;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #264888), color-stop(100%, #1f3a6c));
+    background-image: -webkit-linear-gradient(top, #264888, #1f3a6c);
+    background-image: -moz-linear-gradient(top, #264888, #1f3a6c);
+    background-image: -o-linear-gradient(top, #264888, #1f3a6c);
+    background-image: -ms-linear-gradient(top, #264888, #1f3a6c);
+    background-image: linear-gradient(top, #264888, #1f3a6c); }
+  /* line 42, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-prev,
+  .x-reset .x-datepicker-next {
+    position: absolute;
+    top: 5px;
+    width: 18px; }
+    /* line 48, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker-prev a,
+    .x-reset .x-datepicker-next a {
+      display: block;
+      width: 16px;
+      height: 16px;
+      background-position: top;
+      background-repeat: no-repeat;
+      cursor: pointer;
+      text-decoration: none !important;
+      filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+      opacity: 0.7; }
+      /* line 63, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+      .x-reset .x-datepicker-prev a:hover,
+      .x-reset .x-datepicker-next a:hover {
+        filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+        opacity: 1; }
+  /* line 69, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-next {
+    right: 5px; }
+    /* line 72, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker-next a {
+      background-image: url('../../resources/themes/images/default/shared/right-btn.gif'); }
+  /* line 77, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-prev {
+    left: 5px; }
+    /* line 80, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker-prev a {
+      background-image: url('../../resources/themes/images/default/shared/left-btn.gif'); }
+  /* line 86, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-item-disabled .x-datepicker-prev a:hover,
+  .x-reset .x-item-disabled .x-datepicker-next a:hover {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+    opacity: 0.6; }
+  /* line 90, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-month {
+    padding-top: 3px; }
+    /* line 103, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker-month .x-btn,
+    .x-reset .x-datepicker-month button,
+    .x-reset .x-datepicker-month .x-btn-tc,
+    .x-reset .x-datepicker-month .x-btn-tl,
+    .x-reset .x-datepicker-month .x-btn-tr,
+    .x-reset .x-datepicker-month .x-btn-mc,
+    .x-reset .x-datepicker-month .x-btn-ml,
+    .x-reset .x-datepicker-month .x-btn-mr,
+    .x-reset .x-datepicker-month .x-btn-bc,
+    .x-reset .x-datepicker-month .x-btn-bl,
+    .x-reset .x-datepicker-month .x-btn-br {
+      background: transparent !important;
+      border-width: 0 !important; }
+    /* line 108, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker-month span {
+      color: #fff !important; }
+    /* line 112, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker-month .x-btn-split-right {
+      background-image: url('../../resources/themes/images/default/button/s-arrow-light.gif');
+      padding-right: 12px; }
+  /* line 118, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-next {
+    text-align: right; }
+  /* line 122, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-month {
+    text-align: center; }
+    /* line 126, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker-month button {
+      color: white !important; }
+  /* line 132, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset table.x-datepicker-inner {
+    width: 100%;
+    table-layout: fixed; }
+    /* line 136, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner th {
+      width: 25px;
+      height: 19px;
+      padding: 0;
+      color: #233d6d;
+      font: normal 10px tahoma, arial, verdana, sans-serif;
+      text-align: right;
+      border-bottom: 1px solid #b2d1f5;
+      border-collapse: separate;
+      background-image: none;
+      background-color: #dfecfb;
+      background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #edf4fd), color-stop(100%, #cde1f9));
+      background-image: -webkit-linear-gradient(top, #edf4fd, #cde1f9);
+      background-image: -moz-linear-gradient(top, #edf4fd, #cde1f9);
+      background-image: -o-linear-gradient(top, #edf4fd, #cde1f9);
+      background-image: -ms-linear-gradient(top, #edf4fd, #cde1f9);
+      background-image: linear-gradient(top, #edf4fd, #cde1f9);
+      cursor: default; }
+      /* line 157, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+      .x-reset table.x-datepicker-inner th span {
+        display: block;
+        padding-right: 7px; }
+    /* line 163, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner tr {
+      height: 20px; }
+    /* line 167, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner td {
+      border: 1px solid;
+      height: 17px;
+      border-color: white;
+      text-align: right;
+      padding: 0; }
+    /* line 175, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner a {
+      padding-right: 4px;
+      display: block;
+      zoom: 1;
+      font: normal 11px tahoma, arial, verdana, sans-serif;
+      color: black;
+      text-decoration: none;
+      text-align: right; }
+    /* line 188, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner .x-datepicker-active {
+      cursor: pointer;
+      color: black; }
+    /* line 194, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner .x-datepicker-selected a {
+      background: repeat-x left top;
+      background-color: #dae5f3;
+      border: 1px solid #8db2e3; }
+    /* line 200, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner .x-datepicker-selected span {
+      font-weight: bold; }
+    /* line 206, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner .x-datepicker-today a {
+      border: 1px solid;
+      border-color: darkred; }
+    /* line 214, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner .x-datepicker-prevday a,
+    .x-reset table.x-datepicker-inner .x-datepicker-nextday a {
+      text-decoration: none !important;
+      color: #aaa; }
+    /* line 221, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner a:hover,
+    .x-reset table.x-datepicker-inner .x-datepicker-disabled a:hover {
+      text-decoration: none !important;
+      color: #000;
+      background-color: #ddecfe; }
+    /* line 229, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner .x-datepicker-disabled a {
+      cursor: default;
+      background-color: #eee;
+      color: #bbb; }
+  /* line 237, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-footer,
+  .x-reset .x-monthpicker-buttons {
+    position: relative;
+    border-top: 1px solid #b2d1f5;
+    background-image: none;
+    background-color: #dfecfb;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dee8f5), color-stop(49%, #d1dff0), color-stop(51%, #c7d8ed), color-stop(100%, #cbdaee));
+    background-image: -webkit-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+    background-image: -moz-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+    background-image: -o-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+    background-image: -ms-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+    background-image: linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+    text-align: center; }
+    /* line 250, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker-footer .x-btn,
+    .x-reset .x-monthpicker-buttons .x-btn {
+      position: relative;
+      margin: 4px; }
+  /* line 256, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-item-disabled .x-datepicker-inner a:hover {
+    background: none; }
+  /* line 261, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker .x-monthpicker {
+    position: absolute;
+    left: 0;
+    top: 0; }
+  /* line 268, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker {
+    border: 1px solid #1b376c;
+    background-color: white; }
+  /* line 274, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-months,
+  .x-reset .x-monthpicker-years {
+    float: left;
+    height: 167px;
+    width: 88px; }
+  /* line 281, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-item {
+    float: left;
+    margin: 4px 0 5px 0;
+    font: normal 11px tahoma, arial, verdana, sans-serif;
+    text-align: center;
+    vertical-align: middle;
+    height: 18px;
+    width: 43px;
+    border: 0 none; }
+    /* line 295, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-monthpicker-item a {
+      display: block;
+      margin: 0 5px;
+      text-decoration: none;
+      color: #15428b;
+      border: 1px solid white;
+      line-height: 17px; }
+      /* line 308, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+      .x-reset .x-monthpicker-item a:hover {
+        background-color: #ddecfe; }
+      /* line 312, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+      .x-reset .x-monthpicker-item a.x-monthpicker-selected {
+        background-color: #dfecfb;
+        border: 1px solid #8db2e3; }
+  /* line 319, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-months {
+    border-right: 1px solid #1b376c;
+    width: 87px; }
+  /* line 324, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-years .x-monthpicker-item {
+    width: 44px; }
+  /* line 328, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-yearnav {
+    height: 28px; }
+    /* line 331, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-monthpicker-yearnav button {
+      background-image: url('../../resources/themes/images/default/tools/tool-sprites.gif');
+      height: 15px;
+      width: 15px;
+      padding: 0;
+      margin: 6px 12px 5px 15px;
+      border: 0;
+      outline: 0 none; }
+      /* line 339, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+      .x-reset .x-monthpicker-yearnav button::-moz-focus-inner {
+        border: 0;
+        padding: 0; }
+  /* line 346, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-yearnav-next {
+    background-position: 0 -120px; }
+  /* line 350, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-yearnav-next-over {
+    cursor: pointer;
+    cursor: hand;
+    background-position: -15px -120px; }
+  /* line 356, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-yearnav-prev {
+    background-position: 0 -105px; }
+  /* line 360, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-yearnav-prev-over {
+    cursor: pointer;
+    cursor: hand;
+    background-position: -15px -105px; }
+  /* line 367, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-small .x-monthpicker-item {
+    margin: 2px 0 2px 0; }
+  /* line 371, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-small .x-monthpicker-yearnav {
+    height: 23px; }
+  /* line 375, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-small .x-monthpicker-months, .x-reset .x-monthpicker-small .x-monthpicker-years {
+    height: 136px; }
+  /* line 385, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-quirks .x-ie7 .x-monthpicker-buttons .x-btn,
+  .x-reset .x-quirks .x-ie8 .x-monthpicker-buttons .x-btn {
+    margin-top: 2px; }
+  /* line 391, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-quirks .x-monthpicker-small .x-monthpicker-yearnav button {
+    margin-top: 3px;
+    margin-bottom: 3px; }
+  /* line 397, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-ie6 .x-monthpicker-small .x-monthpicker-yearnav button {
+    margin-top: 3px;
+    margin-bottom: 3px; }
+  /* line 407, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-nlg .x-datepicker-header {
+    background-image: url('../../resources/themes/images/default/datepicker/datepicker-header-bg.gif');
+    background-repeat: repeat-x;
+    background-position: top left; }
+  /* line 416, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-nlg .x-datepicker-footer,
+  .x-reset .x-nlg .x-monthpicker-buttons {
+    background-image: url('../../resources/themes/images/default/datepicker/datepicker-footer-bg.gif');
+    background-repeat: repeat-x;
+    background-position: top left; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+  .x-reset .x-color-picker {
+    width: 144px;
+    height: 90px;
+    cursor: pointer; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+  .x-reset .x-color-picker a {
+    border: 1px solid #fff;
+    float: left;
+    padding: 2px;
+    text-decoration: none;
+    -moz-outline: 0 none;
+    outline: 0 none;
+    cursor: pointer; }
+  /* line 28, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+  .x-reset .x-color-picker a:hover,
+  .x-reset .x-color-picker a.x-color-picker-selected {
+    border-color: #8bb8f3;
+    background-color: #deecfd; }
+  /* line 33, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+  .x-reset .x-color-picker em {
+    display: block;
+    border: 1px solid #aca899; }
+  /* line 39, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+  .x-reset .x-color-picker em span {
+    cursor: pointer;
+    display: block;
+    height: 10px;
+    width: 10px;
+    line-height: 10px; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-body {
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default;
+    background: #f0f0f0 !important;
+    padding: 2px; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item .x-form-text {
+    user-select: text;
+    -webkit-user-select: text;
+    -o-user-select: text;
+    -ie-user-select: text;
+    -moz-user-select: text;
+    -ie-user-select: text; }
+  /* line 21, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-icon-separator {
+    position: absolute;
+    top: 0px;
+    left: 27px;
+    z-index: 0;
+    border-left: solid 1px #e0e0e0;
+    background-color: white;
+    width: 2px;
+    overflow: hidden; }
+  /* line 33, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-plain .x-menu-icon-separator {
+    display: none; }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-focus {
+    display: block;
+    position: absolute;
+    top: -10px;
+    left: -10px;
+    width: 0px;
+    height: 0px; }
+  /* line 47, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item {
+    white-space: nowrap;
+    overflow: hidden;
+    z-index: 1; }
+  /* line 53, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-cmp {
+    margin-bottom: 1px; }
+  /* line 57, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-link {
+    display: block;
+    margin: 1px;
+    padding: 6px 2px 3px 32px;
+    text-decoration: none !important;
+    line-height: 16px;
+    cursor: default; }
+  /* line 76, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-icon {
+    width: 16px;
+    height: 16px;
+    position: absolute;
+    top: 5px;
+    left: 4px;
+    background: no-repeat center center; }
+  /* line 87, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-icon-right {
+    width: 16px;
+    height: 16px;
+    position: absolute;
+    top: 6px;
+    right: 4px;
+    background: no-repeat center center; }
+  /* line 96, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-text {
+    font-size: 11px;
+    color: #222222; }
+  /* line 102, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-checked .x-menu-item-icon {
+    background-image: url('../../resources/themes/images/default/menu/checked.gif'); }
+  /* line 105, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-checked .x-menu-group-icon {
+    background-image: url('../../resources/themes/images/default/menu/group-checked.gif'); }
+  /* line 111, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-unchecked .x-menu-item-icon {
+    background-image: url('../../resources/themes/images/default/menu/unchecked.gif'); }
+  /* line 114, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-unchecked .x-menu-group-icon {
+    background-image: none; }
+  /* line 119, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-separator {
+    height: 2px;
+    border-top: solid 1px #e0e0e0;
+    background-color: white;
+    margin: 2px 0px;
+    overflow: hidden; }
+  /* line 127, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-arrow {
+    position: absolute;
+    width: 12px;
+    height: 9px;
+    top: 9px;
+    right: 0px;
+    background: no-repeat center center;
+    background-image: url('../../resources/themes/images/default/menu/menu-parent.gif'); }
+  /* line 137, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-indent {
+    margin-left: 31px;
+    /* The 2px is the width of the seperator */ }
+  /* line 141, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-active {
+    cursor: pointer; }
+    /* line 144, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+    .x-reset .x-menu-item-active .x-menu-item-link {
+      background-image: none;
+      background-color: #d9e8fb;
+      background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7f0fc), color-stop(100%, #c7ddf9));
+      background-image: -webkit-linear-gradient(top, #e7f0fc, #c7ddf9);
+      background-image: -moz-linear-gradient(top, #e7f0fc, #c7ddf9);
+      background-image: -o-linear-gradient(top, #e7f0fc, #c7ddf9);
+      background-image: -ms-linear-gradient(top, #e7f0fc, #c7ddf9);
+      background-image: linear-gradient(top, #e7f0fc, #c7ddf9);
+      margin: 0px;
+      border: 1px solid #a9cbf5;
+      cursor: pointer;
+      -moz-border-radius: 3px;
+      -webkit-border-radius: 3px;
+      -o-border-radius: 3px;
+      -ms-border-radius: 3px;
+      -khtml-border-radius: 3px;
+      border-radius: 3px; }
+  /* line 153, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-disabled {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5; }
+  /* line 160, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-ie .x-menu-item-disabled .x-menu-item-icon {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5; }
+  /* line 164, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-ie .x-menu-item-disabled .x-menu-item-text {
+    background-color: transparent; }
+  /* line 171, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-strict .x-ie7m .x-reset .x-ie .x-menu-icon-separator {
+    width: 1px; }
+  /* line 175, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-strict .x-ie7m .x-reset .x-ie .x-menu-item-separator {
+    height: 1px; }
+  /* line 184, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-ie6 .x-menu-item-link,
+  .x-reset .x-ie7 .x-menu-item-link,
+  .x-reset .x-quirks .x-ie8 .x-menu-item-link {
+    padding-bottom: 2px; }
+  /* line 192, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-nlg .x-menu-item-active .x-menu-item-link {
+    background: #d9e8fb repeat-x left top;
+    background-image: url('../../resources/themes/images/default/menu/menu-item-active-bg.gif'); }
+  /* line 199, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-date-item {
+    border-color: #99BBE8; }
+  /* line 8, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-panel .x-grid-body {
+    background: white;
+    border-color: #99bce8;
+    border-style: solid;
+    border-width: 1px;
+    border-top-color: #c5c5c5; }
+  /* line 17, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-panel .x-grid-header-ct-hidden {
+    visibility: hidden; }
+  /* line 22, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-empty {
+    padding: 10px;
+    color: gray;
+    font: normal 11px tahoma, arial, helvetica, sans-serif; }
+  /* line 28, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-header-hidden .x-grid-body {
+    border-top-color: #99bce8 !important; }
+  /* line 32, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-view {
+    overflow: hidden;
+    position: relative; }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-table {
+    table-layout: fixed;
+    border-collapse: separate; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-autowidth-table table.x-grid-table {
+    table-layout: auto;
+    width: auto!important; }
+  /* line 50, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row .x-grid-table {
+    border-collapse: collapse; }
+  /* line 54, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-locked .x-grid-inner-locked {
+    border-width: 0 1px 0 0 !important;
+    border-style: solid; }
+  /* line 59, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-header-ct {
+    cursor: default;
+    zoom: 1;
+    padding: 0;
+    border: 1px solid #99bce8;
+    border-bottom-color: #c5c5c5; }
+  /* line 73, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-accordion-item .x-grid-header-ct {
+    border-width: 0 0 1px 0!important; }
+  /* line 77, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header {
+    padding: 0;
+    position: absolute;
+    overflow: hidden;
+    border-right: 1px solid #c5c5c5;
+    border-left: 0 none;
+    border-top: 0 none;
+    border-bottom: 0 none;
+    text-shadow: 0 1px 0 rgba(255, 255, 255, 0.3);
+    color: null;
+    font: normal 11px tahoma, arial, verdana, sans-serif; }
+  /* line 99, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-group-header {
+    padding: 0;
+    border-left-width: 0; }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-group-sub-header {
+    background: transparent;
+    border-top: 1px solid #c5c5c5;
+    border-left-width: 0; }
+  /* line 109, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-inner {
+    zoom: 1;
+    position: relative;
+    white-space: nowrap;
+    line-height: 15px;
+    padding: 3px 6px 4px; }
+    /* line 116, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-column-header-inner .x-column-header-text {
+      white-space: nowrap; }
+  /* line 123, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-over,
+  .x-reset .x-column-header-sort-ASC,
+  .x-reset .x-column-header-sort-DESC {
+    border-left-color: #aaccf6;
+    border-right-color: #aaccf6; }
+  /* line 135, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-nlg .x-grid-header-ct,
+  .x-reset .x-nlg .x-column-header {
+    background: repeat-x 0 top;
+    background-image: url('../../resources/themes/images/default/grid/column-header-bg.gif'); }
+  /* line 142, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-nlg .x-column-header-over,
+  .x-reset .x-nlg .x-column-header-sort-ASC,
+  .x-reset .x-nlg .x-column-header-sort-DESC {
+    background: #ebf3fd repeat-x 0 top;
+    background-image: url('../../resources/themes/images/default/grid/column-header-over-bg.gif'); }
+  /* line 149, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-trigger {
+    display: none;
+    height: 100%;
+    width: 14px;
+    background: no-repeat left center;
+    background-color: #c3daf9;
+    background-image: url('../../resources/themes/images/default/grid/grid3-hd-btn.gif');
+    position: absolute;
+    right: 0;
+    top: 0;
+    z-index: 2;
+    cursor: pointer; }
+  /* line 164, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-over .x-column-header-trigger, .x-reset .x-column-header-open .x-column-header-trigger {
+    display: block; }
+  /* line 169, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-align-right {
+    text-align: right; }
+    /* line 172, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-column-header-align-right .x-column-header-text {
+      padding-right: 0.5ex;
+      margin-right: 6px; }
+  /* line 177, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-align-center {
+    text-align: center; }
+  /* line 180, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-align-left {
+    text-align: left; }
+  /* line 185, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-sort-ASC .x-column-header-text {
+    padding-right: 16px;
+    background: no-repeat right 6px;
+    background-image: url('../../resources/themes/images/default/grid/sort_asc.gif'); }
+  /* line 190, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-sort-DESC .x-column-header-text {
+    padding-right: 16px;
+    background: no-repeat right 6px;
+    background-image: url('../../resources/themes/images/default/grid/sort_desc.gif'); }
+  /* line 197, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row {
+    vertical-align: top; }
+    /* line 199, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-row .x-grid-cell {
+      color: null;
+      font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+      background-color: white;
+      border-color: #ededed;
+      border-style: solid;
+      border-top-color: #fafafa;
+      border-width: 0; }
+  /* line 212, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-with-row-lines .x-grid-cell {
+    border-width: 1px 0; }
+  /* line 216, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-rowwrap-div {
+    border-width: 1px 0;
+    border-color: #ededed;
+    border-style: solid;
+    border-top-color: #fafafa;
+    overflow: hidden; }
+  /* line 226, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-alt .x-grid-cell,
+  .x-reset .x-grid-row-alt .x-grid-rowwrap-div {
+    background-color: #fafafa; }
+  /* line 231, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-over .x-grid-cell,
+  .x-reset .x-grid-row-over .x-grid-rowwrap-div {
+    border-color: #dddddd;
+    background-color: #efefef; }
+  /* line 238, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-focused .x-grid-cell,
+  .x-reset .x-grid-row-focused .x-grid-rowwrap-div {
+    border-color: #dddddd;
+    background-color: #efefef; }
+  /* line 245, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-selected .x-grid-cell,
+  .x-reset .x-grid-row-selected .x-grid-rowwrap-div {
+    border-style: dotted;
+    border-color: #a3bae9;
+    background-color: #dfe8f6 !important; }
+  /* line 254, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-rowwrap-div .x-grid-cell,
+  .x-reset .x-grid-rowwrap-div .x-grid-cell-inner {
+    border-width: 0;
+    background: transparent; }
+  /* line 261, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-body-hidden {
+    display: none; }
+  /* line 265, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-rowbody {
+    font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+    padding: 4px; }
+    /* line 270, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-rowbody p {
+      margin: 5px 5px 10px 5px; }
+  /* line 276, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-cell {
+    overflow: hidden; }
+  /* line 280, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-cell-inner {
+    overflow: hidden;
+    -o-text-overflow: ellipsis;
+    text-overflow: ellipsis;
+    padding: 2px 6px 3px;
+    white-space: nowrap; }
+  /* line 291, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-with-row-lines .x-grid-cell-inner {
+    line-height: 13px;
+    padding-bottom: 4px; }
+  /* line 297, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-action-col-cell .x-grid-cell-inner {
+    line-height: 0;
+    padding: 2px; }
+  /* line 302, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-action-col-cell .x-item-disabled {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+    opacity: 0.3; }
+  /* line 306, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-with-row-lines .x-action-col-cell .x-grid-cell-inner {
+    padding-top: 1px; }
+  /* line 310, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row .x-grid-cell-special {
+    padding: 0;
+    border-right: 1px solid #d0d0d0;
+    background-image: none;
+    background-color: #f6f6f6;
+    background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #f6f6f6), color-stop(100%, #e9e9e9));
+    background-image: -webkit-linear-gradient(left, #f6f6f6, #e9e9e9);
+    background-image: -moz-linear-gradient(left, #f6f6f6, #e9e9e9);
+    background-image: -o-linear-gradient(left, #f6f6f6, #e9e9e9);
+    background-image: -ms-linear-gradient(left, #f6f6f6, #e9e9e9);
+    background-image: linear-gradient(left, #f6f6f6, #e9e9e9); }
+  /* line 316, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row .x-grid-cell-row-checker {
+    vertical-align: middle; }
+  /* line 330, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-ie6 .x-grid-header-row,
+  .x-reset .x-ie7 .x-grid-header-row,
+  .x-reset .x-quirks .x-ie8 .x-grid-header-row {
+    position: absolute; }
+  /* line 335, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-selected .x-grid-cell-special {
+    border-right: 1px solid #aaccf6;
+    background-image: none;
+    background-color: #dfe8f6;
+    background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dfe8f6), color-stop(100%, #cbdaf0));
+    background-image: -webkit-linear-gradient(left, #dfe8f6, #cbdaf0);
+    background-image: -moz-linear-gradient(left, #dfe8f6, #cbdaf0);
+    background-image: -o-linear-gradient(left, #dfe8f6, #cbdaf0);
+    background-image: -ms-linear-gradient(left, #dfe8f6, #cbdaf0);
+    background-image: linear-gradient(left, #dfe8f6, #cbdaf0); }
+  /* line 341, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-dirty-cell {
+    background-image: url('../../resources/themes/images/default/grid/dirty.gif');
+    background-position: 0 0;
+    background-repeat: no-repeat; }
+  /* line 347, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-cell-selected {
+    background-color: #B8CFEE !important; }
+  /* line 353, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-nlg .x-grid-cell-special {
+    background-repeat: repeat-y;
+    background-position: top right; }
+  /* line 359, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-nlg .x-grid-row .x-grid-cell-special,
+  .x-reset .x-nlg .x-grid-row-over .x-grid-cell-special {
+    background-image: url('../../resources/themes/images/default/grid/cell-special-bg.gif'); }
+  /* line 365, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-nlg .x-grid-row-focused .x-grid-cell-special,
+  .x-reset .x-nlg .x-grid-row-selected .x-grid-cell-special {
+    background-image: url('../../resources/themes/images/default/grid/cell-special-selected-bg.gif'); }
+  /* line 371, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-with-col-lines .x-grid-cell {
+    padding-right: 0;
+    border-right: 1px solid #d0d0d0; }
+  /* line 378, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,
+  .x-reset .x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner {
+    padding-left: 12px;
+    background-image: url('../../resources/themes/images/default/grid/property-cell-bg.gif');
+    background-repeat: no-repeat;
+    background-position: -16px 2px; }
+  /* line 388, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-with-row-lines.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,
+  .x-reset .x-grid-with-row-lines.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner {
+    background-position: -16px 1px; }
+  /* line 394, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-quirks .x-ie .x-grid-row .x-grid-property-name .x-grid-cell-inner {
+    background-position: -16px 2px; }
+  /* line 399, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-unselectable {
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default; }
+  /* line 403, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-body-hidden {
+    display: none; }
+  /* line 407, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-group-collapsed {
+    display: none; }
+  /* line 413, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-view .x-grid-td-expander {
+    vertical-align: top; }
+  /* line 418, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-td-expander {
+    background: repeat-y right transparent; }
+  /* line 424, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-view .x-grid-td-expander .x-grid-cell-inner {
+    padding: 0 !important; }
+  /* line 430, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-expander {
+    background-image: url('../../resources/themes/images/default/grid/group-collapse.gif');
+    background-color: transparent;
+    width: 9px;
+    height: 13px;
+    margin-left: 3px;
+    background-repeat: no-repeat;
+    background-position: 0 -2px; }
+  /* line 444, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-collapsed .x-grid-row-expander {
+    background-image: url('../../resources/themes/images/default/grid/group-expand.gif'); }
+  /* line 449, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-resize-marker {
+    position: absolute;
+    z-index: 5;
+    top: 0;
+    width: 1px;
+    background-color: #0f0f0f; }
+  /* line 459, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .col-move-top, .x-reset .col-move-bottom {
+    width: 9px;
+    height: 9px;
+    position: absolute;
+    top: 0;
+    line-height: 0;
+    font-size: 0;
+    overflow: hidden;
+    z-index: 20000;
+    background: no-repeat left top transparent; }
+  /* line 471, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .col-move-top {
+    background-image: url('../../resources/themes/images/default/grid/col-move-top.gif'); }
+  /* line 475, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .col-move-bottom {
+    background-image: url('../../resources/themes/images/default/grid/col-move-bottom.gif'); }
+  /* line 480, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-tbar-page-number {
+    width: 30px; }
+  /* line 487, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-group,
+  .x-reset .x-grid-group-body,
+  .x-reset .x-grid-group-hd {
+    zoom: 1; }
+  /* line 491, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-group-hd {
+    padding-top: 6px; }
+    /* line 494, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-group-hd .x-grid-cell-inner {
+      padding: 10px 4px 4px 4px;
+      background: white;
+      border-width: 0 0 2px 0;
+      border-style: solid;
+      border-color: #99bbe8;
+      cursor: pointer; }
+  /* line 508, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-group-hd-collapsible .x-grid-group-title {
+    background: transparent no-repeat 0 -1px;
+    background-image: url('../../resources/themes/images/default/grid/group-collapse.gif');
+    padding: 0 0 0 14px; }
+  /* line 515, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-group-title {
+    color: #3764a0;
+    font: bold 11px tahoma, arial, verdana, sans-serif; }
+  /* line 521, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-group-hd-collapsed .x-grid-group-title {
+    background-image: url('../../resources/themes/images/default/grid/group-expand.gif'); }
+  /* line 526, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-group-collapsed .x-grid-group-body {
+    display: none; }
+  /* line 530, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-group-collapsed .x-grid-group-title {
+    background-image: url('../../resources/themes/images/default/grid/group-expand.gif'); }
+  /* line 534, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-group-by-icon {
+    background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+  /* line 538, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-show-groups-icon {
+    background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+  /* line 542, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-checkbox .x-column-header-inner {
+    padding: 0; }
+  /* line 546, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-cell-special .x-grid-cell-inner {
+    padding-left: 4px;
+    padding-right: 4px; }
+  /* line 552, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-checker,
+  .x-reset .x-column-header-checkbox .x-column-header-text {
+    height: 14px;
+    width: 14px;
+    line-height: 0;
+    background-image: url('../../resources/themes/images/default/grid/unchecked.gif');
+    background-position: -1px -1px;
+    background-repeat: no-repeat;
+    background-color: transparent; }
+  /* line 564, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-checkbox .x-column-header-text {
+    display: block;
+    margin: 0 5px; }
+  /* line 573, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-quirks .x-ie .x-grid-row-checker,
+  .x-reset .x-quirks .x-ie .x-column-header-checkbox .x-column-header-text, .x-reset .x-ie7m .x-grid-row-checker, .x-reset .x-ie7m .x-column-header-checkbox .x-column-header-text {
+    line-height: 14px; }
+  /* line 579, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-hd-checker-on .x-column-header-text {
+    background-image: url('../../resources/themes/images/default/grid/checked.gif'); }
+  /* line 583, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-cell-row-checker .x-grid-cell-inner {
+    padding-top: 4px;
+    padding-bottom: 2px;
+    line-height: 14px; }
+  /* line 588, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-with-row-lines .x-grid-cell-row-checker .x-grid-cell-inner {
+    padding-top: 3px; }
+  /* line 591, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-checker {
+    margin-left: 1px;
+    background-position: 50% -2px; }
+  /* line 598, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-selected .x-grid-row-checker,
+  .x-reset .x-grid-row-checked .x-grid-row-checker {
+    background-image: url('../../resources/themes/images/default/grid/checked.gif'); }
+  /* line 603, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-tbar-page-first {
+    background-image: url('../../resources/themes/images/default/grid/page-first.gif') !important; }
+  /* line 607, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-tbar-loading {
+    background-image: url('../../resources/themes/images/default/grid/refresh.gif') !important; }
+  /* line 611, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-tbar-page-last {
+    background-image: url('../../resources/themes/images/default/grid/page-last.gif') !important; }
+  /* line 615, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-tbar-page-next {
+    background-image: url('../../resources/themes/images/default/grid/page-next.gif') !important; }
+  /* line 619, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-tbar-page-prev {
+    background-image: url('../../resources/themes/images/default/grid/page-prev.gif') !important; }
+  /* line 624, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-item-disabled .x-tbar-loading {
+    background-image: url('../../resources/themes/images/default/grid/refresh-disabled.gif') !important; }
+  /* line 628, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-item-disabled .x-tbar-page-first {
+    background-image: url('../../resources/themes/images/default/grid/page-first-disabled.gif') !important; }
+  /* line 632, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-item-disabled .x-tbar-page-last {
+    background-image: url('../../resources/themes/images/default/grid/page-last-disabled.gif') !important; }
+  /* line 636, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-item-disabled .x-tbar-page-next {
+    background-image: url('../../resources/themes/images/default/grid/page-next-disabled.gif') !important; }
+  /* line 640, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-item-disabled .x-tbar-page-prev {
+    background-image: url('../../resources/themes/images/default/grid/page-prev-disabled.gif') !important; }
+  /* line 646, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-hmenu-sort-asc .x-menu-item-icon {
+    background-image: url('../../resources/themes/images/default/grid/hmenu-asc.gif'); }
+  /* line 650, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-hmenu-sort-desc .x-menu-item-icon {
+    background-image: url('../../resources/themes/images/default/grid/hmenu-desc.gif'); }
+  /* line 654, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-hmenu-lock .x-menu-item-icon {
+    background-image: url('../../resources/themes/images/default/grid/hmenu-lock.gif'); }
+  /* line 658, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-hmenu-unlock .x-menu-item-icon {
+    background-image: url('../../resources/themes/images/default/grid/hmenu-unlock.gif'); }
+  /* line 662, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-group-by-icon {
+    background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+  /* line 666, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-cols-icon .x-menu-item-icon {
+    background-image: url('../../resources/themes/images/default/grid/columns.gif'); }
+  /* line 670, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-show-groups-icon {
+    background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+  /* line 675, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-drop-indicator {
+    position: absolute;
+    height: 1px;
+    line-height: 0px;
+    background-color: #77BC71;
+    overflow: visible; }
+    /* line 682, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-drop-indicator .x-grid-drop-indicator-left {
+      position: absolute;
+      top: -8px;
+      left: -12px;
+      background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-right.png');
+      height: 16px;
+      width: 16px; }
+    /* line 691, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-drop-indicator .x-grid-drop-indicator-right {
+      position: absolute;
+      top: -8px;
+      right: -11px;
+      background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-left.png');
+      height: 16px;
+      width: 16px; }
+  /* line 702, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-ie6 .x-grid-drop-indicator-left {
+    background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-right.gif'); }
+  /* line 706, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-ie6 .x-grid-drop-indicator-right {
+    background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-left.gif'); }
+  /* line 714, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-editor .x-form-text {
+    padding: 0 4px; }
+  /* line 717, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-editor .x-form-cb-wrap {
+    padding-top: 3px; }
+  /* line 723, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor {
+    position: absolute !important;
+    z-index: 1;
+    zoom: 1;
+    overflow: visible !important; }
+    /* line 729, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-row-editor .x-form-text {
+      padding: 0 2px; }
+    /* line 732, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-row-editor .x-form-cb-wrap {
+      padding-top: 0; }
+    /* line 735, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-row-editor .x-form-checkbox {
+      margin-left: -4px; }
+    /* line 738, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-row-editor .x-form-display-field {
+      font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+      padding-top: 0;
+      padding-left: 2px; }
+    /* line 744, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-row-editor .x-panel-body {
+      background-color: #eaf1fb;
+      border-top: 1px solid #99bce8 !important;
+      border-bottom: 1px solid #99bce8 !important; }
+  /* line 754, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-editor .x-form-cb-wrap, .x-reset .x-grid-row-editor .x-form-cb-wrap {
+    text-align: center; }
+  /* line 757, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-editor .x-form-trigger, .x-reset .x-grid-row-editor .x-form-trigger {
+    height: 19px; }
+  /* line 761, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-editor .x-form-trigger-wrap .x-form-spinner-up, .x-reset .x-grid-editor .x-form-trigger-wrap .x-form-spinner-down, .x-reset .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-up, .x-reset .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-down {
+    background-image: url('../../resources/themes/images/default/form/spinner-small.gif');
+    height: 10px !important; }
+  /* line 768, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-editor .x-form-text, .x-reset .x-grid-row-editor .x-form-text {
+    font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+    height: 18px; }
+  /* line 776, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-border-box .x-grid-editor .x-form-trigger,
+  .x-reset .x-border-box .x-grid-row-editor .x-form-trigger {
+    height: 20px; }
+  /* line 779, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-border-box .x-grid-editor .x-form-text,
+  .x-reset .x-border-box .x-grid-row-editor .x-form-text {
+    height: 20px;
+    padding-bottom: 1px; }
+  /* line 787, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-ie .x-grid-editor .x-form-text {
+    padding-left: 5px; }
+  /* line 790, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-ie .x-grid-row-editor .x-form-text {
+    padding-left: 3px; }
+  /* line 796, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-ie8m .x-grid-editor .x-form-text,
+  .x-reset .x-ie8m .x-grid-row-editor .x-form-text {
+    padding-top: 1px; }
+  /* line 803, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-strict .x-ie6 .x-grid-editor .x-form-text,
+  .x-reset .x-strict .x-ie6 .x-grid-row-editor .x-form-text,
+  .x-reset .x-strict .x-ie7 .x-grid-editor .x-form-text,
+  .x-reset .x-strict .x-ie7 .x-grid-row-editor .x-form-text {
+    height: 17px; }
+  /* line 809, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-quirks .x-ie9 .x-grid-editor .x-form-text, .x-reset .x-quirks .x-ie9 .x-grid-row-editor .x-form-text {
+    line-height: 17px; }
+  /* line 828, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons {
+    background-color: #eaf1fb;
+    position: absolute;
+    bottom: -31px;
+    padding: 4px;
+    height: 32px; }
+    /* line 835, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-strict .x-ie7m .x-reset .x-grid-row-editor-buttons {
+      width: 192px;
+      height: 24px; }
+  /* line 845, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons-ml,
+  .x-reset .x-grid-row-editor-buttons-mr,
+  .x-reset .x-grid-row-editor-buttons-bl,
+  .x-reset .x-grid-row-editor-buttons-br,
+  .x-reset .x-grid-row-editor-buttons-bc {
+    position: absolute;
+    overflow: hidden; }
+  /* line 851, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons-bl,
+  .x-reset .x-grid-row-editor-buttons-br {
+    width: 4px;
+    height: 4px;
+    bottom: 0px;
+    background-image: url('../../resources/themes/images/default/panel/panel-default-framed-corners.gif'); }
+  /* line 857, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons-bl {
+    left: 0px;
+    background-position: 0px -16px; }
+  /* line 861, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons-br {
+    right: 0px;
+    background-position: 0px -20px; }
+  /* line 866, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons-bc {
+    position: absolute;
+    left: 4px;
+    bottom: 0px;
+    width: 192px;
+    height: 1px;
+    background-color: #99bce8; }
+  /* line 876, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons-ml,
+  .x-reset .x-grid-row-editor-buttons-mr {
+    height: 27px;
+    width: 1px;
+    top: 1px;
+    background-color: #99bce8; }
+  /* line 882, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons-ml {
+    left: 0px; }
+  /* line 885, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons-mr {
+    background-position: 0px -20px;
+    right: 0px; }
+  /* line 891, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-errors ul {
+    margin-left: 5px; }
+  /* line 894, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-errors li {
+    list-style: disc;
+    margin-left: 15px; }
+  /* line 9, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-webkit *:focus {
+    outline: none !important; }
+  /* line 16, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-item {
+    vertical-align: top;
+    table-layout: fixed; }
+  /* line 26, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-autocontainer-form-item,
+  .x-reset .x-anchor-form-item,
+  .x-reset .x-vbox-form-item,
+  .x-reset .x-checkboxgroup-form-item,
+  .x-reset .x-table-form-item {
+    margin-bottom: 5px; }
+  /* line 31, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-layout-table {
+    border-collapse: separate;
+    border-spacing: 0 2px; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-item-body {
+    position: relative; }
+  /* line 42, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-form-item td {
+    border-top: 1px solid transparent; }
+  /* line 51, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-ie6 .x-form-layout-table {
+    border-collapse: collapse;
+    border-spacing: 0; }
+  /* line 56, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-ie6 .x-form-form-item td {
+    border-top-width: 0; }
+  /* line 62, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-ie6 td.x-form-item-pad {
+    height: 5px; }
+  /* line 68, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-editor .x-form-item-body {
+    padding-bottom: 0; }
+  /* line 72, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-item-label {
+    display: block;
+    padding: 3px 0 0;
+    font-size: 12px;
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default; }
+  /* line 79, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-item-label-top {
+    display: block;
+    zoom: 1;
+    padding: 0 0 5px 0; }
+  /* line 85, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-item-label-right {
+    text-align: right; }
+  /* line 89, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-invalid-under {
+    padding: 2px 2px 2px 18px;
+    color: #c0272b;
+    font: normal 11px tahoma, arial, verdana, sans-serif;
+    line-height: 16px;
+    background: no-repeat 0 2px;
+    background-image: url('../../resources/themes/images/default/form/exclamation.gif'); }
+  /* line 100, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-invalid-icon {
+    width: 18px;
+    height: 14px;
+    background: no-repeat center center;
+    background-image: url('../../resources/themes/images/default/form/exclamation.gif');
+    overflow: hidden; }
+    /* line 106, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+    .x-reset .x-form-invalid-icon ul {
+      display: block;
+      width: 18px; }
+      /* line 109, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+      .x-reset .x-form-invalid-icon ul li {
+        /* prevent inner elements from interfering with QuickTip hovering */
+        display: none; }
+  /* line 117, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-lbl-top-err-icon {
+    margin-bottom: 4px; }
+  /* line 7, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-field,
+  .x-reset .x-form-display-field {
+    margin: 0 0 0 0;
+    font: normal 12px tahoma, arial, verdana, sans-serif;
+    color: black; }
+  /* line 14, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-item-hidden {
+    margin: 0; }
+  /* line 19, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-text,
+  .x-reset textarea.x-form-field {
+    padding: 1px 3px;
+    background: repeat-x 0 0;
+    border: 1px solid;
+    background-color: white;
+    background-image: url('../../resources/themes/images/default/form/text-bg.gif');
+    border-color: #b5b8c8; }
+  /* line 36, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-text {
+    height: 18px;
+    line-height: 15px;
+    vertical-align: top; }
+  /* line 43, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-ie8m .x-form-text {
+    line-height: 15px; }
+  /* line 48, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-border-box .x-form-text {
+    height: 22px; }
+  /* line 52, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset textarea.x-form-field {
+    color: black;
+    overflow: auto;
+    height: auto;
+    line-height: normal;
+    background: repeat-x 0 0;
+    background-color: white;
+    background-image: url('../../resources/themes/images/default/form/text-bg.gif');
+    resize: none; }
+  /* line 65, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-border-box textarea.x-form-field {
+    height: auto; }
+  /* line 76, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-focus,
+  .x-reset textarea.x-form-focus {
+    border-color: #7eadd9; }
+  /* line 81, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-invalid-field,
+  .x-reset textarea.x-form-invalid-field {
+    background-color: white;
+    background-image: url('../../resources/themes/images/default/grid/invalid_line.gif');
+    background-repeat: repeat-x;
+    background-position: bottom;
+    border-color: #cc3300; }
+  /* line 91, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-item {
+    font: normal 12px tahoma, arial, verdana, sans-serif; }
+  /* line 95, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-empty-field, .x-reset textarea.x-form-empty-field {
+    color: gray; }
+  /* line 100, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-webkit .x-form-empty-field {
+    line-height: 15px; }
+  /* line 105, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-display-field {
+    padding-top: 3px; }
+  /* line 121, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-quirks .x-ie9p .x-form-text,
+  .x-reset .x-ie7m .x-form-text {
+    margin-top: -1px;
+    margin-bottom: -1px; }
+  /* line 126, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-ie .x-form-file {
+    height: 23px;
+    line-height: 18px;
+    vertical-align: middle; }
+  /* line 135, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-field-default-toolbar .x-form-text {
+    height: 16px; }
+  /* line 139, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-border-box .x-field-default-toolbar .x-form-text {
+    height: 20px; }
+  /* line 143, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-field-default-toolbar .x-form-item-label-left {
+    padding-left: 4px; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset {
+    border: 1px solid #b5b8c8;
+    padding: 10px;
+    margin-bottom: 10px;
+    display: block;
+    /* preserve margins in IE */
+    position: relative; }
+  /* line 18, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-ie .x-fieldset {
+    padding-top: 0; }
+    /* line 20, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+    .x-reset .x-ie .x-fieldset .x-fieldset-body {
+      padding-top: 10px; }
+  /* line 25, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset-header-checkbox {
+    line-height: 14px; }
+  /* line 29, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset-header {
+    font: 11px/14px bold tahoma, arial, verdana, sans-serif;
+    color: #15428b;
+    padding: 0 3px 1px;
+    overflow: hidden; }
+    /* line 35, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+    .x-reset .x-fieldset-header .x-fieldset-header-text {
+      float: left;
+      padding: 1px 0; }
+    /* line 39, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+    .x-reset .x-fieldset-header .x-fieldset-header-text-collapsible {
+      cursor: pointer; }
+    /* line 44, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+    .x-reset .x-fieldset-header .x-form-item,
+    .x-reset .x-fieldset-header .x-tool {
+      float: left;
+      margin: 1px 0 0 0; }
+    /* line 49, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+    .x-reset .x-fieldset-header .x-form-cb-wrap {
+      padding: 1px 0;
+      font-size: 0;
+      line-height: 0; }
+  /* line 58, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset-with-title .x-fieldset-header-checkbox,
+  .x-reset .x-fieldset-with-title .x-tool {
+    margin-right: 3px; }
+  /* line 65, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-webkit .x-fieldset-header {
+    -webkit-padding-start: 3px;
+    -webkit-padding-end: 3px; }
+  /* line 86, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-strict .x-ie8 .x-fieldset-header {
+    margin-bottom: -1px; }
+    /* line 90, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+    .x-reset .x-strict .x-ie8 .x-fieldset-header .x-tool,
+    .x-reset .x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,
+    .x-reset .x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox {
+      position: relative;
+      top: -1px; }
+  /* line 100, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-quirks .x-ie .x-fieldset-header,
+  .x-reset .x-ie8m .x-fieldset-header {
+    padding-left: 1px;
+    padding-right: 1px; }
+  /* line 108, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset-collapsed .x-fieldset-body {
+    display: none; }
+  /* line 113, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset-collapsed {
+    padding-bottom: 0 !important;
+    border-width: 1px 1px 0 1px !important;
+    border-left-color: transparent !important;
+    border-right-color: transparent !important; }
+  /* line 122, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-ie6 .x-fieldset-collapsed {
+    border-width: 1px 0 0 0 !important;
+    padding-bottom: 0 !important;
+    margin-left: 1px;
+    margin-right: 1px; }
+  /* line 130, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-ie .x-fieldset-bwrap {
+    zoom: 1; }
+  /* line 137, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-ie .x-fieldset-noborder legend {
+    position: relative;
+    margin-bottom: 23px; }
+  /* line 143, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-ie .x-fieldset-noborder legend span {
+    position: absolute;
+    left: 16px; }
+  /* line 149, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset {
+    overflow: hidden; }
+  /* line 153, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset-bwrap {
+    overflow: hidden;
+    zoom: 1; }
+  /* line 159, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset-body {
+    overflow: hidden; }
+  /* line 8, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+  .x-reset .x-form-file-wrap .x-form-text {
+    color: #777; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+  .x-reset .x-form-file-wrap .x-form-file-btn {
+    overflow: hidden; }
+  /* line 16, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+  .x-reset .x-form-file-wrap .x-form-file-input {
+    position: absolute;
+    top: -4px;
+    right: -2px;
+    height: 30px;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+    opacity: 0;
+    /* Yes, there's actually a good reason for this...
+     * If the configured buttonText is set to something longer than the default,
+     * then it will quickly exceed the width of the hidden file input's "Browse..."
+     * button, so part of the custom button's clickable area will be covered by
+     * the hidden file input's text box instead. This results in a text-selection
+     * mouse cursor over that part of the button, at least in Firefox, which is
+     * confusing to a user. Giving the hidden file input a huge font-size makes
+     * the native button part very large so it will cover the whole clickable area.
+     */
+    font-size: 100px; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-form-cb-wrap {
+    padding-top: 3px; }
+  /* line 11, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-form-checkbox,
+  .x-reset .x-form-radio {
+    vertical-align: -1px;
+    width: 13px;
+    height: 13px;
+    background: no-repeat;
+    background-image: url('../../resources/themes/images/default/form/checkbox.gif');
+    overflow: hidden;
+    padding: 0;
+    border: 0; }
+    /* line 22, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+    .x-reset .x-form-checkbox::-moz-focus-inner,
+    .x-reset .x-form-radio::-moz-focus-inner {
+      padding: 0;
+      border: 0; }
+  /* line 31, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-nbr.x-ie .x-form-checkbox,
+  .x-reset .x-nbr.x-ie .x-form-radio {
+    font-size: 0; }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-form-cb-checked .x-form-checkbox,
+  .x-reset .x-form-cb-checked .x-form-radio {
+    background-position: 0 -13px; }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-form-cb-focus {
+    background-position: -13px 0; }
+  /* line 48, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-form-cb-checked .x-form-cb-focus {
+    background-position: -13px -13px; }
+  /* line 54, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-form-radio {
+    background-image: url('../../resources/themes/images/default/form/radio.gif'); }
+  /* line 59, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-form-cb-label-before {
+    margin-right: 4px; }
+  /* line 62, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-form-cb-label-after {
+    margin-left: 4px; }
+  /* line 7, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+  .x-reset .x-form-checkboxgroup-body {
+    padding: 1px 4px 1px 4px; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+  .x-reset .x-form-invalid .x-form-checkboxgroup-body {
+    border: 1px solid #c30!important;
+    background: transparent repeat-x bottom;
+    background-image: url('../../resources/themes/images/default/grid/invalid_line.gif');
+    padding: 1px 3px 0 3px; }
+  /* line 20, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+  .x-reset .x-check-group-alt {
+    background: #d1ddef;
+    border-top: 1px dotted #b5b8c8;
+    border-bottom: 1px dotted #b5b8c8; }
+  /* line 27, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+  .x-reset .x-form-check-group-label {
+    color: #333;
+    border-bottom: 1px solid #333;
+    margin: 0 30px 5px 0;
+    padding: 2px; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap {
+    vertical-align: top; }
+  /* line 10, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger {
+    background-image: url('../../resources/themes/images/default/form/trigger.gif');
+    background-position: 0 0;
+    width: 17px;
+    height: 21px;
+    border-bottom: 1px solid #b5b8c8;
+    cursor: pointer;
+    cursor: hand;
+    overflow: hidden; }
+  /* line 24, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-border-box .x-form-trigger {
+    height: 22px; }
+  /* line 28, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-field-default-toolbar .x-form-trigger {
+    height: 19px; }
+  /* line 32, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-border-box .x-field-default-toolbar .x-form-trigger {
+    height: 20px; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-over {
+    background-position: -17px 0;
+    border-bottom-color: #7eadd9; }
+  /* line 43, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap-focus .x-form-trigger {
+    background-position: -51px 0;
+    border-bottom-color: #7eadd9; }
+  /* line 49, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap-focus .x-form-trigger-over {
+    background-position: -68px 0;
+    border-bottom-color: null; }
+  /* line 58, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-click,
+  .x-reset .x-form-trigger-wrap-focus .x-form-trigger-click {
+    background-position: -34px 0;
+    border-bottom-color: null; }
+  /* line 66, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-icon {
+    height: 16px;
+    background-repeat: no-repeat;
+    background-position: 7px 6px; }
+  /* line 74, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-pickerfield-open .x-form-field {
+    -moz-border-radius-bottomleft: 0;
+    -webkit-border-bottom-left-radius: 0;
+    -o-border-bottom-left-radius: 0;
+    -ms-border-bottom-left-radius: 0;
+    -khtml-border-bottom-left-radius: 0;
+    border-bottom-left-radius: 0;
+    -moz-border-radius-bottomright: 0;
+    -webkit-border-bottom-right-radius: 0;
+    -o-border-bottom-right-radius: 0;
+    -ms-border-bottom-right-radius: 0;
+    -khtml-border-bottom-right-radius: 0;
+    border-bottom-right-radius: 0; }
+  /* line 80, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-pickerfield-open-above .x-form-field {
+    -moz-border-radius-bottomleft: 3px;
+    -webkit-border-bottom-left-radius: 3px;
+    -o-border-bottom-left-radius: 3px;
+    -ms-border-bottom-left-radius: 3px;
+    -khtml-border-bottom-left-radius: 3px;
+    border-bottom-left-radius: 3px;
+    -moz-border-radius-topleft: 0;
+    -webkit-border-top-left-radius: 0;
+    -o-border-top-left-radius: 0;
+    -ms-border-top-left-radius: 0;
+    -khtml-border-top-left-radius: 0;
+    border-top-left-radius: 0;
+    -moz-border-radius-topright: 0;
+    -webkit-border-top-right-radius: 0;
+    -o-border-top-right-radius: 0;
+    -ms-border-top-right-radius: 0;
+    -khtml-border-top-right-radius: 0;
+    border-top-right-radius: 0; }
+  /* line 87, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-arrow-trigger .x-form-trigger-icon {
+    background-image: url('../../resources/themes/images/default/boundlist/trigger-arrow.png'); }
+  /* line 92, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-date-trigger {
+    background-image: url('../../resources/themes/images/default/form/date-trigger.gif'); }
+  /* line 99, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap .x-form-spinner-up,
+  .x-reset .x-form-trigger-wrap .x-form-spinner-down {
+    background-image: url('../../resources/themes/images/default/form/spinner.gif');
+    width: 17px !important;
+    height: 11px !important;
+    font-size: 0;
+    /*for IE*/
+    border-bottom: 0; }
+  /* line 109, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap .x-form-spinner-down {
+    background-position: 0 -11px; }
+  /* line 113, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap-focus .x-form-spinner-down {
+    background-position: -51px -11px; }
+  /* line 116, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap .x-form-spinner-down-over {
+    background-position: -17px -11px; }
+  /* line 119, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap-focus .x-form-spinner-down-over {
+    background-position: -68px -11px; }
+  /* line 122, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap .x-form-spinner-down-click {
+    background-position: -34px -11px; }
+  /* line 131, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-up,
+  .x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down {
+    background-image: url('../../resources/themes/images/default/form/spinner-small.gif');
+    height: 10px !important; }
+  /* line 135, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down {
+    background-position: 0 -10px; }
+  /* line 139, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down {
+    background-position: -51px -10px; }
+  /* line 142, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-over {
+    background-position: -17px -10px; }
+  /* line 145, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down-over {
+    background-position: -68px -10px; }
+  /* line 148, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-click {
+    background-position: -34px -10px; }
+  /* line 154, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-trigger-noedit {
+    cursor: pointer;
+    cursor: hand; }
+  /* line 160, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-item-disabled .x-trigger-noedit, .x-reset .x-item-disabled .x-form-trigger {
+    cursor: auto; }
+  /* line 166, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-clear-trigger {
+    background-image: url('../../resources/themes/images/default/form/clear-trigger.gif'); }
+  /* line 169, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-search-trigger {
+    background-image: url('../../resources/themes/images/default/form/search-trigger.gif'); }
+  /* line 177, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-quirks .prefixie6 .x-form-trigger-input-cell {
+    height: 22px; }
+  /* line 180, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-quirks .prefixie6 .x-field-default-toolbar .x-form-trigger-input-cell {
+    height: 20px; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-wrap {
+    border: 1px solid #b5b8c8; }
+    /* line 9, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+    .x-reset .x-html-editor-wrap .x-toolbar {
+      border-top-width: 0;
+      border-left-width: 0;
+      border-right-width: 0; }
+    /* line 15, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+    .x-reset .x-html-editor-wrap textarea {
+      background-color: white; }
+  /* line 20, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-btn-text {
+    background: transparent no-repeat;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 26, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-bold,
+  .x-reset .x-menu-item img.x-edit-bold {
+    background-position: 0 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 32, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-italic,
+  .x-reset .x-menu-item img.x-edit-italic {
+    background-position: -16px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-underline,
+  .x-reset .x-menu-item img.x-edit-underline {
+    background-position: -32px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-forecolor,
+  .x-reset .x-menu-item img.x-edit-forecolor {
+    background-position: -160px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 50, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-backcolor,
+  .x-reset .x-menu-item img.x-edit-backcolor {
+    background-position: -176px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 56, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-justifyleft,
+  .x-reset .x-menu-item img.x-edit-justifyleft {
+    background-position: -112px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 62, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-justifycenter,
+  .x-reset .x-menu-item img.x-edit-justifycenter {
+    background-position: -128px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 68, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-justifyright,
+  .x-reset .x-menu-item img.x-edit-justifyright {
+    background-position: -144px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 74, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-insertorderedlist,
+  .x-reset .x-menu-item img.x-edit-insertorderedlist {
+    background-position: -80px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 80, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-insertunorderedlist,
+  .x-reset .x-menu-item img.x-edit-insertunorderedlist {
+    background-position: -96px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 86, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-increasefontsize,
+  .x-reset .x-menu-item img.x-edit-increasefontsize {
+    background-position: -48px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 92, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-decreasefontsize,
+  .x-reset .x-menu-item img.x-edit-decreasefontsize {
+    background-position: -64px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 98, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-sourceedit,
+  .x-reset .x-menu-item img.x-edit-sourceedit {
+    background-position: -192px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 104, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-createlink,
+  .x-reset .x-menu-item img.x-edit-createlink {
+    background-position: -208px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 109, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tip .x-tip-bd .x-tip-bd-inner {
+    padding: 5px;
+    padding-bottom: 1px; }
+  /* line 115, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-toolbar {
+    position: static !important; }
+  /* line 118, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-font-select {
+    font-size: 11px; }
+  /* line 123, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-wrap textarea {
+    border: 0;
+    padding: 3px 2px;
+    overflow: auto; }
+  /* line 7, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel,
+  .x-reset .x-plain {
+    overflow: hidden;
+    position: relative; }
+  /* line 24, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-ie .x-panel-header,
+  .x-reset .x-ie .x-panel-header-tl,
+  .x-reset .x-ie .x-panel-header-tc,
+  .x-reset .x-ie .x-panel-header-tr,
+  .x-reset .x-ie .x-panel-header-ml,
+  .x-reset .x-ie .x-panel-header-mc,
+  .x-reset .x-ie .x-panel-header-mr,
+  .x-reset .x-ie .x-panel-header-bl,
+  .x-reset .x-ie .x-panel-header-bc,
+  .x-reset .x-ie .x-panel-header-br {
+    zoom: 1; }
+  /* line 30, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-ie8 td.x-frame-mc {
+    vertical-align: top; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-horizontal {
+    padding: 3px 5px 4px; }
+  /* line 40, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-vertical {
+    padding: 5px 4px; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-icon,
+  .x-reset .x-window-header-icon {
+    width: 16px;
+    height: 16px;
+    background-repeat: no-repeat;
+    background-position: 0 0;
+    vertical-align: middle;
+    margin-right: 4px; }
+  /* line 56, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-vertical .x-panel-header-icon,
+  .x-reset .x-vertical .x-window-header-icon {
+    margin: 0 0 4px; }
+  /* line 64, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-draggable,
+  .x-reset .x-panel-header-draggable .x-panel-header-text,
+  .x-reset .x-window-header-draggable,
+  .x-reset .x-window-header-draggable .x-window-header-text {
+    cursor: move; }
+  /* line 70, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-ghost, .x-reset .x-window-ghost {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+    opacity: 0.65;
+    cursor: move; }
+  /* line 76, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-horizontal .x-panel-header-body, .x-reset .x-panel-header-horizontal .x-window-header-body, .x-reset .x-panel-header-horizontal .x-btn-group-header-body, .x-reset .x-window-header-horizontal .x-panel-header-body, .x-reset .x-window-header-horizontal .x-window-header-body, .x-reset .x-window-header-horizontal .x-btn-group-header-body, .x-reset .x-btn-group-header-horizontal .x-panel-header-body, .x-reset .x-btn-group-header-horizontal .x-window-header-body, .x-reset .x-btn-group-header-horizontal .x-btn-group-header-body {
+    width: 100%; }
+  /* line 82, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-vertical .x-panel-header-body, .x-reset .x-panel-header-vertical .x-window-header-body, .x-reset .x-panel-header-vertical .x-btn-group-header-body, .x-reset .x-window-header-vertical .x-panel-header-body, .x-reset .x-window-header-vertical .x-window-header-body, .x-reset .x-window-header-vertical .x-btn-group-header-body, .x-reset .x-btn-group-header-vertical .x-panel-header-body, .x-reset .x-btn-group-header-vertical .x-window-header-body, .x-reset .x-btn-group-header-vertical .x-btn-group-header-body {
+    height: 100%; }
+  /* line 87, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-text-container {
+    overflow: hidden;
+    -o-text-overflow: ellipsis;
+    text-overflow: ellipsis; }
+  /* line 93, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-text {
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default;
+    white-space: nowrap; }
+  /* line 100, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-left .x-vml-base,
+  .x-reset .x-panel-header-right .x-vml-base {
+    left: -3px !important; }
+  /* line 106, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-body {
+    overflow: hidden;
+    position: relative;
+    font-size: 12px; }
+  /* line 114, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-vertical .x-surface {
+    padding-left: 1px; }
+  /* line 122, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-opera .x-panel-header-vertical .x-surface,
+  .x-reset .x-strict .x-ie9 .x-panel-header-vertical .x-surface {
+    padding-left: 2px; }
+  /* line 129, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-panel-header-collapsed-border-top {
+    border-bottom-width: 1px !important; }
+  /* line 132, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-panel-header-collapsed-border-right {
+    border-left-width: 1px !important; }
+  /* line 135, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-panel-header-collapsed-border-bottom {
+    border-top-width: 1px !important; }
+  /* line 138, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-panel-header-collapsed-border-left {
+    border-right-width: 1px !important; }
+  /* line 145, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-vertical .x-frame-mc {
+    background-repeat: repeat-y; }
+  /* line 248, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-default {
+    border-color: #99bce8; }
+  /* line 253, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default {
+    font-size: 11px;
+    border-color: #99bce8;
+    border-width: 1px;
+    border-style: solid; }
+  /* line 277, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-top {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif'); }
+  /* line 281, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-bottom {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif'); }
+  /* line 285, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-left {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif'); }
+  /* line 289, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-right {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif'); }
+  /* line 293, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-right {
+    background-position: top right; }
+  /* line 297, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-bottom {
+    background-position: bottom left; }
+  /* line 338, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-text-default {
+    color: #04408c;
+    font-size: 11px;
+    font-weight: bold;
+    font-family: tahoma, arial, verdana, sans-serif;
+    line-height: 17px; }
+  /* line 348, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-body-default {
+    background: white;
+    border-color: #99bce8;
+    color: black;
+    border-width: 1px;
+    border-style: solid; }
+  /* line 363, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-window-header-default,
+  .x-reset .x-panel-collapsed .x-panel-header-default {
+    border-color: #99bce8; }
+  /* line 368, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-vertical {
+    border-color: #99bce8; }
+  /* line 416, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-panel-header-default-top {
+    -moz-border-radius-bottomleft: null;
+    -webkit-border-bottom-left-radius: null;
+    -o-border-bottom-left-radius: null;
+    -ms-border-bottom-left-radius: null;
+    -khtml-border-bottom-left-radius: null;
+    border-bottom-left-radius: null;
+    -moz-border-radius-bottomright: null;
+    -webkit-border-bottom-right-radius: null;
+    -o-border-bottom-right-radius: null;
+    -ms-border-bottom-right-radius: null;
+    -khtml-border-bottom-right-radius: null;
+    border-bottom-right-radius: null; }
+  /* line 420, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-panel-header-default-right {
+    -moz-border-radius-topleft: null;
+    -webkit-border-top-left-radius: null;
+    -o-border-top-left-radius: null;
+    -ms-border-top-left-radius: null;
+    -khtml-border-top-left-radius: null;
+    border-top-left-radius: null;
+    -moz-border-radius-bottomleft: null;
+    -webkit-border-bottom-left-radius: null;
+    -o-border-bottom-left-radius: null;
+    -ms-border-bottom-left-radius: null;
+    -khtml-border-bottom-left-radius: null;
+    border-bottom-left-radius: null; }
+  /* line 424, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-panel-header-default-bottom {
+    -moz-border-radius-topleft: null;
+    -webkit-border-top-left-radius: null;
+    -o-border-top-left-radius: null;
+    -ms-border-top-left-radius: null;
+    -khtml-border-top-left-radius: null;
+    border-top-left-radius: null;
+    -moz-border-radius-topright: null;
+    -webkit-border-top-right-radius: null;
+    -o-border-top-right-radius: null;
+    -ms-border-top-right-radius: null;
+    -khtml-border-top-right-radius: null;
+    border-top-right-radius: null; }
+  /* line 428, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-panel-header-default-left {
+    -moz-border-radius-topright: null;
+    -webkit-border-top-right-radius: null;
+    -o-border-top-right-radius: null;
+    -ms-border-top-right-radius: null;
+    -khtml-border-top-right-radius: null;
+    border-top-right-radius: null;
+    -moz-border-radius-bottomright: null;
+    -webkit-border-bottom-right-radius: null;
+    -o-border-bottom-right-radius: null;
+    -ms-border-bottom-right-radius: null;
+    -khtml-border-bottom-right-radius: null;
+    border-bottom-right-radius: null; }
+  /* line 434, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-top {
+    -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+    -o-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+    box-shadow: #f4f8fd 0 1px 0px 0 inset; }
+  /* line 438, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-right {
+    -moz-box-shadow: #f4f8fd -1px 0 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd -1px 0 0px 0 inset;
+    -o-box-shadow: #f4f8fd -1px 0 0px 0 inset;
+    box-shadow: #f4f8fd -1px 0 0px 0 inset; }
+  /* line 442, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-bottom {
+    -moz-box-shadow: #f4f8fd 0 -1px 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd 0 -1px 0px 0 inset;
+    -o-box-shadow: #f4f8fd 0 -1px 0px 0 inset;
+    box-shadow: #f4f8fd 0 -1px 0px 0 inset; }
+  /* line 446, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-left {
+    -moz-box-shadow: #f4f8fd 1px 0 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd 1px 0 0px 0 inset;
+    -o-box-shadow: #f4f8fd 1px 0 0px 0 inset;
+    box-shadow: #f4f8fd 1px 0 0px 0 inset; }
+  /* line 481, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-right-tc,
+  .x-reset .x-panel-header-default-right-mc,
+  .x-reset .x-panel-header-default-right-bc {
+    background-position: right 0; }
+  /* line 487, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-bottom-tc,
+  .x-reset .x-panel-header-default-bottom-mc,
+  .x-reset .x-panel-header-default-bottom-bc {
+    background-position: 0 bottom; }
+  /* line 248, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-default-framed {
+    border-color: #99bce8; }
+  /* line 253, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed {
+    font-size: 11px;
+    border-color: #99bce8;
+    border-width: 1px;
+    border-style: solid; }
+  /* line 277, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-top {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif'); }
+  /* line 281, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-bottom {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif'); }
+  /* line 285, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-left {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif'); }
+  /* line 289, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-right {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif'); }
+  /* line 293, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-right {
+    background-position: top right; }
+  /* line 297, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-bottom {
+    background-position: bottom left; }
+  /* line 305, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed {
+    background-image: none; }
+  /* line 317, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-strict .x-ie9 .x-panel-header-default-framed-top,
+  .x-reset .x-nlg.x-opera .x-panel-header-default-framed-top,
+  .x-reset .x-nlg.x-safari .x-panel-header-default-framed-top {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif'); }
+  /* line 321, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-strict .x-ie9 .x-panel-header-default-framed-bottom,
+  .x-reset .x-nlg.x-opera .x-panel-header-default-framed-bottom,
+  .x-reset .x-nlg.x-safari .x-panel-header-default-framed-bottom {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif'); }
+  /* line 325, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-strict .x-ie9 .x-panel-header-default-framed-left,
+  .x-reset .x-nlg.x-opera .x-panel-header-default-framed-left,
+  .x-reset .x-nlg.x-safari .x-panel-header-default-framed-left {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif'); }
+  /* line 329, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-strict .x-ie9 .x-panel-header-default-framed-right,
+  .x-reset .x-nlg.x-opera .x-panel-header-default-framed-right,
+  .x-reset .x-nlg.x-safari .x-panel-header-default-framed-right {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif'); }
+  /* line 338, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-text-default-framed {
+    color: #04408c;
+    font-size: 11px;
+    font-weight: bold;
+    font-family: tahoma, arial, verdana, sans-serif;
+    line-height: 17px; }
+  /* line 348, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-body-default-framed {
+    background: #dfe9f6;
+    border-color: #99bce8;
+    color: black;
+    border-width: 0;
+    border-style: solid; }
+  /* line 363, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-window-header-default-framed,
+  .x-reset .x-panel-collapsed .x-panel-header-default-framed {
+    border-color: #99bce8; }
+  /* line 368, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-vertical {
+    border-color: #99bce8; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-default-framed {
+    padding: 4px 4px 4px 4px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #dfe9f6; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-default-framed-mc {
+    background-color: #dfe9f6; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-default-framed {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000404px 1000404px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-default-framed-tl,
+  .x-reset .x-nbr .x-panel-default-framed-bl,
+  .x-reset .x-nbr .x-panel-default-framed-tr,
+  .x-reset .x-nbr .x-panel-default-framed-br,
+  .x-reset .x-nbr .x-panel-default-framed-tc,
+  .x-reset .x-nbr .x-panel-default-framed-bc,
+  .x-reset .x-nbr .x-panel-default-framed-ml,
+  .x-reset .x-nbr .x-panel-default-framed-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel/panel-default-framed-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-default-framed-ml,
+  .x-reset .x-nbr .x-panel-default-framed-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel/panel-default-framed-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-default-framed-mc {
+    padding: 1px 1px 1px 1px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-panel-default-framed-tl,
+  .x-reset .x-strict .x-ie7 .x-panel-default-framed-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-header-default-framed-top {
+    padding: 3px 5px 4px 5px;
+    border-width: 1px 1px 0 1px;
+    border-style: solid;
+    background-color: #cbddf3; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-top-mc {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif');
+    background-color: #cbddf3; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-top {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000404px 1000000px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-top-tl,
+  .x-reset .x-nbr .x-panel-header-default-framed-top-bl,
+  .x-reset .x-nbr .x-panel-header-default-framed-top-tr,
+  .x-reset .x-nbr .x-panel-header-default-framed-top-br,
+  .x-reset .x-nbr .x-panel-header-default-framed-top-tc,
+  .x-reset .x-nbr .x-panel-header-default-framed-top-bc,
+  .x-reset .x-nbr .x-panel-header-default-framed-top-ml,
+  .x-reset .x-nbr .x-panel-header-default-framed-top-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-top-ml,
+  .x-reset .x-nbr .x-panel-header-default-framed-top-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-sides.gif');
+    background-position: 0 0; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-top-mc {
+    padding: 0px 2px 4px 2px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-top-tl,
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-top-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-header-default-framed-right {
+    padding: 5px 4px 5px 4px;
+    border-width: 1px 1px 1px 0;
+    border-style: solid;
+    background-color: #cbddf3; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-right-mc {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif');
+    background-color: #cbddf3; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-right {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000004px 1100400px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-right-tl,
+  .x-reset .x-nbr .x-panel-header-default-framed-right-bl,
+  .x-reset .x-nbr .x-panel-header-default-framed-right-tr,
+  .x-reset .x-nbr .x-panel-header-default-framed-right-br,
+  .x-reset .x-nbr .x-panel-header-default-framed-right-tc,
+  .x-reset .x-nbr .x-panel-header-default-framed-right-bc,
+  .x-reset .x-nbr .x-panel-header-default-framed-right-ml,
+  .x-reset .x-nbr .x-panel-header-default-framed-right-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-corners.gif'); }
+  /* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-right-tc,
+  .x-reset .x-nbr .x-panel-header-default-framed-right-bc {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-x; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-right-mc {
+    padding: 2px 1px 2px 4px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-right-tl,
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-right-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-header-default-framed-bottom {
+    padding: 3px 5px 4px 5px;
+    border-width: 0 1px 1px 1px;
+    border-style: solid;
+    background-color: #cbddf3; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-bottom-mc {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif');
+    background-color: #cbddf3; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-bottom {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000000px 1000404px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-bottom-tl,
+  .x-reset .x-nbr .x-panel-header-default-framed-bottom-bl,
+  .x-reset .x-nbr .x-panel-header-default-framed-bottom-tr,
+  .x-reset .x-nbr .x-panel-header-default-framed-bottom-br,
+  .x-reset .x-nbr .x-panel-header-default-framed-bottom-tc,
+  .x-reset .x-nbr .x-panel-header-default-framed-bottom-bc,
+  .x-reset .x-nbr .x-panel-header-default-framed-bottom-ml,
+  .x-reset .x-nbr .x-panel-header-default-framed-bottom-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-bottom-ml,
+  .x-reset .x-nbr .x-panel-header-default-framed-bottom-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-sides.gif');
+    background-position: 0 0; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-bottom-mc {
+    padding: 3px 2px 1px 2px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-header-default-framed-left {
+    padding: 5px 4px 5px 4px;
+    border-width: 1px 0 1px 1px;
+    border-style: solid;
+    background-color: #cbddf3; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-left-mc {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif');
+    background-color: #cbddf3; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-left {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000400px 1100004px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-left-tl,
+  .x-reset .x-nbr .x-panel-header-default-framed-left-bl,
+  .x-reset .x-nbr .x-panel-header-default-framed-left-tr,
+  .x-reset .x-nbr .x-panel-header-default-framed-left-br,
+  .x-reset .x-nbr .x-panel-header-default-framed-left-tc,
+  .x-reset .x-nbr .x-panel-header-default-framed-left-bc,
+  .x-reset .x-nbr .x-panel-header-default-framed-left-ml,
+  .x-reset .x-nbr .x-panel-header-default-framed-left-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-corners.gif'); }
+  /* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-left-tc,
+  .x-reset .x-nbr .x-panel-header-default-framed-left-bc {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-x; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-left-mc {
+    padding: 2px 4px 2px 1px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-left-tl,
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-left-bl {
+    position: relative;
+    right: 0; }
+  /* line 399, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-top {
+    -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    -o-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset; }
+  /* line 403, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-right {
+    -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset;
+    -o-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset;
+    box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset; }
+  /* line 407, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-bottom {
+    -moz-box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    -o-box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset; }
+  /* line 411, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-left {
+    -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    -o-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset; }
+  /* line 452, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel .x-panel-header-default-framed-top {
+    border-bottom-width: 1px !important; }
+  /* line 456, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel .x-panel-header-default-framed-right {
+    border-left-width: 1px !important; }
+  /* line 460, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel .x-panel-header-default-framed-bottom {
+    border-top-width: 1px !important; }
+  /* line 464, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel .x-panel-header-default-framed-left {
+    border-right-width: 1px !important; }
+  /* line 468, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-collapsed {
+    -moz-border-radius: 4px;
+    -webkit-border-radius: 4px;
+    -o-border-radius: 4px;
+    -ms-border-radius: 4px;
+    -khtml-border-radius: 4px;
+    border-radius: 4px; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-header-default-framed-collapsed-top {
+    padding: 3px 5px 4px 5px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #cbddf3; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-collapsed-top-mc {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-bg.gif');
+    background-color: #cbddf3; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-top {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000404px 1000404px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-tl,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-bl,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-tr,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-br,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-tc,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-bc,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-ml,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-ml,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-sides.gif');
+    background-position: 0 0; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-mc {
+    padding: 0px 2px 1px 2px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-header-default-framed-collapsed-right {
+    padding: 5px 4px 5px 4px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #cbddf3; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-collapsed-right-mc {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-bg.gif');
+    background-color: #cbddf3; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-right {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000404px 1100404px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-tl,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-bl,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-tr,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-br,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-tc,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-bc,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-ml,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-corners.gif'); }
+  /* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-tc,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-bc {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-x; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-mc {
+    padding: 2px 1px 2px 1px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-header-default-framed-collapsed-bottom {
+    padding: 3px 5px 4px 5px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #cbddf3; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-collapsed-bottom-mc {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif');
+    background-color: #cbddf3; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000404px 1000404px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-tl,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-bl,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-tr,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-br,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-tc,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-bc,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif');
+    background-position: 0 0; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-mc {
+    padding: 0px 2px 1px 2px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-header-default-framed-collapsed-left {
+    padding: 5px 4px 5px 4px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #cbddf3; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-collapsed-left-mc {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-bg.gif');
+    background-color: #cbddf3; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-left {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000404px 1100404px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-tl,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-bl,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-tr,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-br,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-tc,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-bc,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-ml,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-corners.gif'); }
+  /* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-tc,
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-bc {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-x; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-mc {
+    padding: 2px 1px 2px 1px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,
+  .x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl {
+    position: relative;
+    right: 0; }
+  /* line 481, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-right-tc,
+  .x-reset .x-panel-header-default-framed-right-mc,
+  .x-reset .x-panel-header-default-framed-right-bc {
+    background-position: right 0; }
+  /* line 487, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-bottom-tc,
+  .x-reset .x-panel-header-default-framed-bottom-mc,
+  .x-reset .x-panel-header-default-framed-bottom-bc {
+    background-position: 0 bottom; }
+  /* line 197, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-plain,
+  .x-reset .x-panel-body-plain {
+    border: 0;
+    padding: 0; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip {
+    position: absolute;
+    overflow: visible;
+    /*pointer needs to be able to stick out*/
+    border-color: #8eaace; }
+    /* line 12, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+    .x-reset .x-tip .x-tip-header .x-box-item {
+      padding: 3px 3px 0; }
+    /* line 16, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+    .x-reset .x-tip .x-tip-header .x-tool {
+      padding: 0px 1px 0 0 !important; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-tip {
+    padding: 2px 2px 2px 2px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #e9f2ff; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-tip-mc {
+    background-color: #e9f2ff; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-tip {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1100303px 1000303px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-tip-tl,
+  .x-reset .x-nbr .x-tip-bl,
+  .x-reset .x-nbr .x-tip-tr,
+  .x-reset .x-nbr .x-tip-br,
+  .x-reset .x-nbr .x-tip-tc,
+  .x-reset .x-nbr .x-tip-bc,
+  .x-reset .x-nbr .x-tip-ml,
+  .x-reset .x-nbr .x-tip-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/tip/tip-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-tip-ml,
+  .x-reset .x-nbr .x-tip-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/tip/tip-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-tip-mc {
+    padding: 0px 0px 0px 0px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-tip-tl,
+  .x-reset .x-strict .x-ie7 .x-tip-bl {
+    position: relative;
+    right: 0; }
+  /* line 31, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-header-text {
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default;
+    color: #444444;
+    font-size: 11px;
+    font-weight: bold; }
+  /* line 40, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-header-draggable .x-tip-header-text {
+    cursor: move; }
+  /* line 47, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-body,
+  .x-reset .x-form-invalid-tip-body {
+    overflow: hidden;
+    position: relative;
+    padding: 3px; }
+  /* line 55, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-header,
+  .x-reset .x-tip-body,
+  .x-reset .x-form-invalid-tip-body {
+    color: #444444;
+    font-size: 11px;
+    font-weight: normal; }
+    /* line 59, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+    .x-reset .x-tip-header a,
+    .x-reset .x-tip-body a,
+    .x-reset .x-form-invalid-tip-body a {
+      color: #2a2a2a; }
+  /* line 64, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-anchor {
+    position: absolute;
+    overflow: hidden;
+    height: 0;
+    width: 0;
+    border-style: solid;
+    border-width: 5px;
+    border-color: #8eaace;
+    zoom: 1; }
+  /* line 79, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-border-box .x-tip-anchor {
+    width: 10px;
+    height: 10px; }
+  /* line 84, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-anchor-top {
+    border-top-color: transparent;
+    border-left-color: transparent;
+    border-right-color: transparent;
+    _border-top-color: pink;
+    _border-left-color: pink;
+    _border-right-color: pink;
+    _filter: chroma(color=pink); }
+  /* line 97, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-anchor-bottom {
+    border-bottom-color: transparent;
+    border-left-color: transparent;
+    border-right-color: transparent;
+    _border-bottom-color: pink;
+    _border-left-color: pink;
+    _border-right-color: pink;
+    _filter: chroma(color=pink); }
+  /* line 110, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-anchor-left {
+    border-top-color: transparent;
+    border-bottom-color: transparent;
+    border-left-color: transparent;
+    _border-top-color: pink;
+    _border-bottom-color: pink;
+    _border-left-color: pink;
+    _filter: chroma(color=pink); }
+  /* line 123, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-anchor-right {
+    border-top-color: transparent;
+    border-bottom-color: transparent;
+    border-right-color: transparent;
+    _border-top-color: pink;
+    _border-bottom-color: pink;
+    _border-right-color: pink;
+    _filter: chroma(color=pink); }
+  /* line 137, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-form-invalid-tip {
+    border-color: #a1311f;
+    -moz-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+    -webkit-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+    -o-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+    box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset; }
+  /* line 146, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-form-invalid-tip-body {
+    background: 1px 1px no-repeat;
+    background-image: url('../../resources/themes/images/default/form/exclamation.gif');
+    padding-left: 22px; }
+    /* line 151, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+    .x-reset .x-form-invalid-tip-body li {
+      margin-bottom: 4px; }
+      /* line 153, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+      .x-reset .x-form-invalid-tip-body li.last {
+        margin-bottom: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-form-invalid-tip-default {
+    padding: 4px 4px 4px 4px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: white; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-form-invalid-tip-default-mc {
+    background-color: white; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-form-invalid-tip-default {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1100505px 1000505px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-form-invalid-tip-default-tl,
+  .x-reset .x-nbr .x-form-invalid-tip-default-bl,
+  .x-reset .x-nbr .x-form-invalid-tip-default-tr,
+  .x-reset .x-nbr .x-form-invalid-tip-default-br,
+  .x-reset .x-nbr .x-form-invalid-tip-default-tc,
+  .x-reset .x-nbr .x-form-invalid-tip-default-bc,
+  .x-reset .x-nbr .x-form-invalid-tip-default-ml,
+  .x-reset .x-nbr .x-form-invalid-tip-default-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-form-invalid-tip-default-ml,
+  .x-reset .x-nbr .x-form-invalid-tip-default-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-form-invalid-tip-default-mc {
+    padding: 0px 0px 0px 0px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-form-invalid-tip-default-tl,
+  .x-reset .x-strict .x-ie7 .x-form-invalid-tip-default-bl {
+    position: relative;
+    right: 0; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider {
+    zoom: 1; }
+  /* line 10, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-inner {
+    position: relative;
+    left: 0;
+    top: 0;
+    overflow: visible;
+    zoom: 1; }
+  /* line 18, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-focus {
+    position: absolute;
+    left: 0;
+    top: 0;
+    width: 1px;
+    height: 1px;
+    line-height: 1px;
+    font-size: 1px;
+    -moz-outline: 0 none;
+    outline: 0 none;
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default;
+    display: block;
+    overflow: hidden; }
+  /* line 34, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-horz {
+    padding-left: 7px;
+    background: transparent no-repeat 0 -24px;
+    width: 100%; }
+  /* line 40, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-horz .x-slider-end {
+    padding-right: 7px;
+    zoom: 1;
+    background: transparent no-repeat right -46px; }
+  /* line 46, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-horz .x-slider-inner {
+    background: transparent repeat-x 0 -2px;
+    height: 18px; }
+  /* line 51, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-horz .x-slider-thumb {
+    width: 14px;
+    height: 15px;
+    margin-left: -7px;
+    position: absolute;
+    left: 0;
+    top: 1px;
+    background: transparent no-repeat 0 0; }
+  /* line 61, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-horz .x-slider-thumb-over {
+    background-position: -14px -15px; }
+  /* line 65, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-horz .x-slider-thumb-drag {
+    background-position: -28px -30px; }
+  /* line 70, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-vert {
+    padding-top: 7px;
+    background: transparent no-repeat -44px 0; }
+  /* line 75, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-vert .x-slider-end {
+    padding-bottom: 7px;
+    zoom: 1;
+    background: transparent no-repeat -22px bottom;
+    width: 22px; }
+  /* line 82, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-vert .x-slider-inner {
+    background: transparent repeat-y 0 0;
+    width: 22px; }
+  /* line 87, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-vert .x-slider-thumb {
+    width: 15px;
+    height: 14px;
+    margin-bottom: -7px;
+    position: absolute;
+    left: 3px;
+    bottom: 0;
+    background: transparent no-repeat 0 0; }
+  /* line 97, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-vert .x-slider-thumb-over {
+    background-position: -15px -14px; }
+  /* line 101, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-vert .x-slider-thumb-drag {
+    background-position: -30px -28px; }
+  /* line 107, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-horz,
+  .x-reset .x-slider-horz .x-slider-end,
+  .x-reset .x-slider-horz .x-slider-inner {
+    background-image: url('../../resources/themes/images/default/slider/slider-bg.png'); }
+  /* line 111, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-horz .x-slider-thumb {
+    background-image: url('../../resources/themes/images/default/slider/slider-thumb.png'); }
+  /* line 117, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-vert,
+  .x-reset .x-slider-vert .x-slider-end,
+  .x-reset .x-slider-vert .x-slider-inner {
+    background-image: url('../../resources/themes/images/default/slider/slider-v-bg.png'); }
+  /* line 121, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-vert .x-slider-thumb {
+    background-image: url('../../resources/themes/images/default/slider/slider-v-thumb.png'); }
+  /* line 129, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-ie6 .x-slider-horz,
+  .x-reset .x-ie6 .x-slider-horz .x-slider-end,
+  .x-reset .x-ie6 .x-slider-horz .x-slider-inner {
+    background-image: url('../../resources/themes/images/default/slider/slider-bg.gif'); }
+  /* line 133, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-ie6 .x-slider-horz .x-slider-thumb {
+    background-image: url('../../resources/themes/images/default/slider/slider-thumb.gif'); }
+  /* line 139, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-ie6 .x-slider-vert,
+  .x-reset .x-ie6 .x-slider-vert .x-slider-end,
+  .x-reset .x-ie6 .x-slider-vert .x-slider-inner {
+    background-image: url('../../resources/themes/images/default/slider/slider-v-bg.gif'); }
+  /* line 143, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-ie6 .x-slider-vert .x-slider-thumb {
+    background-image: url('../../resources/themes/images/default/slider/slider-v-thumb.gif'); }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-reset .x-progress {
+    position: relative;
+    border-width: 1px;
+    border-style: solid;
+    -moz-border-radius: 0;
+    -webkit-border-radius: 0;
+    -o-border-radius: 0;
+    -ms-border-radius: 0;
+    -khtml-border-radius: 0;
+    border-radius: 0;
+    overflow: hidden;
+    height: 20px; }
+  /* line 17, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-reset .x-progress-bar {
+    height: 18px;
+    overflow: hidden;
+    position: absolute;
+    width: 0;
+    -moz-border-radius: 0;
+    -webkit-border-radius: 0;
+    -o-border-radius: 0;
+    -ms-border-radius: 0;
+    -khtml-border-radius: 0;
+    border-radius: 0;
+    border-right: 1px solid;
+    border-top: 1px solid; }
+  /* line 30, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-reset .x-progress-text {
+    overflow: hidden;
+    position: absolute;
+    padding: 0 5px;
+    height: 18px;
+    font-weight: bold;
+    font-size: 11px;
+    line-height: 16px;
+    text-align: center; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-reset .x-progress-text-back {
+    padding-top: 1px; }
+  /* line 50, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-reset .x-strict .x-ie7m .x-progress {
+    height: 18px; }
+  /* line 93, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-reset .x-progress-default {
+    border-color: #6594cf; }
+    /* line 96, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+    .x-reset .x-progress-default .x-progress-bar {
+      border-right-color: #6594cf;
+      border-top-color: #c6d8ed;
+      background-image: none;
+      background-color: #73a3e0;
+      background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b2ccee), color-stop(50%, #88b1e5), color-stop(51%, #73a3e0), color-stop(100%, #5e96db));
+      background-image: -webkit-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+      background-image: -moz-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+      background-image: -o-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+      background-image: -ms-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+      background-image: linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db); }
+    /* line 103, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+    .x-reset .x-progress-default .x-progress-text {
+      color: white; }
+    /* line 107, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+    .x-reset .x-progress-default .x-progress-text-back {
+      color: #396295; }
+  /* line 116, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-reset .x-nlg .x-progress-default .x-progress-bar {
+    background: repeat-x;
+    background-image: url('../../resources/themes/images/default/progress/progress-default-bg.gif'); }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-toolbar {
+    font-size: 11px;
+    border: 1px solid;
+    padding: 2px 0 2px 2px; }
+    /* line 13, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar .x-form-item-label {
+      font-size: 11px;
+      line-height: 15px; }
+    /* line 18, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar .x-toolbar-item {
+      margin: 0 2px 0 0; }
+    /* line 22, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar .x-toolbar-text {
+      margin-left: 4px;
+      margin-right: 6px;
+      white-space: nowrap;
+      color: #4c4c4c;
+      line-height: 16px;
+      font-family: tahoma, arial, verdana, sans-serif;
+      font-size: 11px;
+      font-weight: normal; }
+    /* line 33, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar .x-toolbar-separator {
+      display: block;
+      font-size: 1px;
+      overflow: hidden;
+      cursor: default;
+      border: 0; }
+    /* line 41, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar .x-toolbar-separator-horizontal {
+      margin: 0 3px 0 2px;
+      height: 14px;
+      width: 0px;
+      border-left: 1px solid #98c8ff;
+      border-right: 1px solid white; }
+  /* line 53, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal {
+    width: 2px; }
+  /* line 58, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-toolbar-footer {
+    background: transparent;
+    border: 0px none;
+    margin-top: 3px;
+    padding: 2px 0 2px 6px; }
+    /* line 65, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar-footer .x-box-inner {
+      border-width: 0; }
+    /* line 69, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar-footer .x-toolbar-item {
+      margin: 0 6px 0 0; }
+  /* line 74, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-toolbar-vertical {
+    padding: 2px 2px 0 2px; }
+    /* line 77, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar-vertical .x-toolbar-item {
+      margin: 0 0 2px 0; }
+    /* line 81, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar-vertical .x-toolbar-text {
+      margin-top: 4px;
+      margin-bottom: 6px; }
+    /* line 86, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar-vertical .x-toolbar-separator-vertical {
+      margin: 2px 5px 3px 5px;
+      height: 0px;
+      width: 10px;
+      line-height: 0px;
+      border-top: 1px solid #98c8ff;
+      border-bottom: 1px solid white; }
+  /* line 98, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-toolbar-scroller {
+    padding-left: 0; }
+  /* line 102, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-toolbar-spacer {
+    width: 2px; }
+  /* line 107, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-toolbar-more-icon {
+    background-image: url('../../resources/themes/images/default/toolbar/more.gif') !important;
+    background-position: 2px center !important;
+    background-repeat: no-repeat; }
+  /* line 144, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-toolbar-default {
+    border-color: #99bce8;
+    background-image: none;
+    background-color: #d3e1f1;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dfe9f5), color-stop(100%, #d3e1f1));
+    background-image: -webkit-linear-gradient(top, #dfe9f5, #d3e1f1);
+    background-image: -moz-linear-gradient(top, #dfe9f5, #d3e1f1);
+    background-image: -o-linear-gradient(top, #dfe9f5, #d3e1f1);
+    background-image: -ms-linear-gradient(top, #dfe9f5, #d3e1f1);
+    background-image: linear-gradient(top, #dfe9f5, #d3e1f1); }
+  /* line 155, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-nlg .x-toolbar-default {
+    background-image: url('../../resources/themes/images/default/toolbar/toolbar-default-bg.gif') !important;
+    background-repeat: repeat-x; }
+  /* line 123, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-toolbar-plain {
+    border: 0; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window {
+    outline: none;
+    overflow: hidden; }
+    /* line 10, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+    .x-reset .x-window .x-window-wrap {
+      position: relative; }
+  /* line 15, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-body {
+    position: relative;
+    border-style: solid;
+    overflow: hidden; }
+  /* line 24, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-maximized .x-window-wrap .x-window-header {
+    -moz-border-radius: 0 !important;
+    -webkit-border-radius: 0 !important;
+    -o-border-radius: 0 !important;
+    -ms-border-radius: 0 !important;
+    -khtml-border-radius: 0 !important;
+    border-radius: 0 !important; }
+  /* line 30, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-top {
+    margin-bottom: -2px; }
+  /* line 33, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-body-horizontal {
+    margin-top: -1px; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-bottom {
+    margin-top: -1px;
+    margin-bottom: -1px; }
+  /* line 42, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-left {
+    margin-right: -1px; }
+  /* line 46, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-right {
+    margin-left: -1px; }
+  /* line 51, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-vertical .x-surface {
+    padding-left: 1px; }
+  /* line 58, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-collapsed .x-window-header-vertical {
+    -moz-border-radius: 5px;
+    -webkit-border-radius: 5px;
+    -o-border-radius: 5px;
+    -ms-border-radius: 5px;
+    -khtml-border-radius: 5px;
+    border-radius: 5px; }
+  /* line 61, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-collapsed .x-window-header-horizontal {
+    -moz-border-radius: 5px;
+    -webkit-border-radius: 5px;
+    -o-border-radius: 5px;
+    -ms-border-radius: 5px;
+    -khtml-border-radius: 5px;
+    border-radius: 5px; }
+  /* line 66, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-collapsed .x-window-header-left {
+    padding-right: 5px !important;
+    margin-right: 0; }
+  /* line 71, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-collapsed .x-window-header-right {
+    padding-left: 5px !important;
+    margin-left: 0; }
+  /* line 76, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-collapsed .x-window-header-top {
+    padding-bottom: 5px !important;
+    margin-bottom: -1px; }
+  /* line 81, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-collapsed .x-window-header-bottom {
+    padding-top: 5px !important;
+    margin-top: 0; }
+  /* line 89, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-left .x-vml-base,
+  .x-reset .x-window-header-right .x-vml-base {
+    left: -3px !important; }
+  /* line 97, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-opera .x-window-header-vertical .x-surface,
+  .x-reset .x-strict .x-ie9 .x-window-header-vertical .x-surface {
+    padding-left: 2px; }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-text-container {
+    overflow: hidden;
+    -o-text-overflow: ellipsis;
+    text-overflow: ellipsis; }
+  /* line 109, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-text {
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default;
+    white-space: nowrap; }
+  /* line 159, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-default {
+    border-color: #a2b1c5;
+    -moz-border-radius: 5px 5px;
+    -webkit-border-radius: 5px 5px;
+    -o-border-radius: 5px 5px;
+    -ms-border-radius: 5px 5px;
+    -khtml-border-radius: 5px 5px;
+    border-radius: 5px 5px;
+    -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-default {
+    padding: 4px 4px 4px 4px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-default-mc {
+    background-color: #ced9e7; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-default {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000505px 1000505px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-default-tl,
+  .x-reset .x-nbr .x-window-default-bl,
+  .x-reset .x-nbr .x-window-default-tr,
+  .x-reset .x-nbr .x-window-default-br,
+  .x-reset .x-nbr .x-window-default-tc,
+  .x-reset .x-nbr .x-window-default-bc,
+  .x-reset .x-nbr .x-window-default-ml,
+  .x-reset .x-nbr .x-window-default-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window/window-default-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-default-ml,
+  .x-reset .x-nbr .x-window-default-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window/window-default-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-default-mc {
+    padding: 0px 0px 0px 0px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-window-default-tl,
+  .x-reset .x-strict .x-ie7 .x-window-default-bl {
+    position: relative;
+    right: 0; }
+  /* line 178, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-body-default {
+    border-color: #99bbe8;
+    border-width: 1px;
+    background: #dfe8f6;
+    color: black; }
+  /* line 188, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-default {
+    font-size: 11px;
+    border-color: #a2b1c5;
+    zoom: 1; }
+  /* line 194, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-text-default {
+    color: #04468c;
+    font-weight: bold;
+    line-height: 17px;
+    font-family: tahoma, arial, verdana, sans-serif;
+    font-size: 11px; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-header-default-top {
+    padding: 4px 5px 0 5px;
+    border-width: 1px 1px 0 1px;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-header-default-top-mc {
+    background-color: #ced9e7; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-top {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000505px 1000000px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-top-tl,
+  .x-reset .x-nbr .x-window-header-default-top-bl,
+  .x-reset .x-nbr .x-window-header-default-top-tr,
+  .x-reset .x-nbr .x-window-header-default-top-br,
+  .x-reset .x-nbr .x-window-header-default-top-tc,
+  .x-reset .x-nbr .x-window-header-default-top-bc,
+  .x-reset .x-nbr .x-window-header-default-top-ml,
+  .x-reset .x-nbr .x-window-header-default-top-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-top-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-top-ml,
+  .x-reset .x-nbr .x-window-header-default-top-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-top-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-top-mc {
+    padding: 0px 1px 0 1px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-window-header-default-top-tl,
+  .x-reset .x-strict .x-ie7 .x-window-header-default-top-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-header-default-right {
+    padding: 5px 4px 5px 0;
+    border-width: 1px 1px 1px 0;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-header-default-right-mc {
+    background-color: #ced9e7; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-right {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000005px 1000500px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-right-tl,
+  .x-reset .x-nbr .x-window-header-default-right-bl,
+  .x-reset .x-nbr .x-window-header-default-right-tr,
+  .x-reset .x-nbr .x-window-header-default-right-br,
+  .x-reset .x-nbr .x-window-header-default-right-tc,
+  .x-reset .x-nbr .x-window-header-default-right-bc,
+  .x-reset .x-nbr .x-window-header-default-right-ml,
+  .x-reset .x-nbr .x-window-header-default-right-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-right-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-right-ml,
+  .x-reset .x-nbr .x-window-header-default-right-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-right-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-right-mc {
+    padding: 1px 0px 1px 0; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-window-header-default-right-tl,
+  .x-reset .x-strict .x-ie7 .x-window-header-default-right-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-header-default-bottom {
+    padding: 0 5px 4px 5px;
+    border-width: 0 1px 1px 1px;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-header-default-bottom-mc {
+    background-color: #ced9e7; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-bottom {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000000px 1000505px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-bottom-tl,
+  .x-reset .x-nbr .x-window-header-default-bottom-bl,
+  .x-reset .x-nbr .x-window-header-default-bottom-tr,
+  .x-reset .x-nbr .x-window-header-default-bottom-br,
+  .x-reset .x-nbr .x-window-header-default-bottom-tc,
+  .x-reset .x-nbr .x-window-header-default-bottom-bc,
+  .x-reset .x-nbr .x-window-header-default-bottom-ml,
+  .x-reset .x-nbr .x-window-header-default-bottom-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-bottom-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-bottom-ml,
+  .x-reset .x-nbr .x-window-header-default-bottom-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-bottom-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-bottom-mc {
+    padding: 0 1px 0px 1px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-window-header-default-bottom-tl,
+  .x-reset .x-strict .x-ie7 .x-window-header-default-bottom-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-header-default-left {
+    padding: 5px 0px 5px 4px;
+    border-width: 1px 0 1px 1px;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-header-default-left-mc {
+    background-color: #ced9e7; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-left {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000500px 1000005px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-left-tl,
+  .x-reset .x-nbr .x-window-header-default-left-bl,
+  .x-reset .x-nbr .x-window-header-default-left-tr,
+  .x-reset .x-nbr .x-window-header-default-left-br,
+  .x-reset .x-nbr .x-window-header-default-left-tc,
+  .x-reset .x-nbr .x-window-header-default-left-bc,
+  .x-reset .x-nbr .x-window-header-default-left-ml,
+  .x-reset .x-nbr .x-window-header-default-left-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-left-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-left-ml,
+  .x-reset .x-nbr .x-window-header-default-left-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-left-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-left-mc {
+    padding: 1px 0px 1px 0px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-window-header-default-left-tl,
+  .x-reset .x-strict .x-ie7 .x-window-header-default-left-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-header-default-collapsed-top {
+    padding: 4px 5px 4px 5px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-header-default-collapsed-top-mc {
+    background-color: #ced9e7; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-top {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000505px 1000505px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-top-tl,
+  .x-reset .x-nbr .x-window-header-default-collapsed-top-bl,
+  .x-reset .x-nbr .x-window-header-default-collapsed-top-tr,
+  .x-reset .x-nbr .x-window-header-default-collapsed-top-br,
+  .x-reset .x-nbr .x-window-header-default-collapsed-top-tc,
+  .x-reset .x-nbr .x-window-header-default-collapsed-top-bc,
+  .x-reset .x-nbr .x-window-header-default-collapsed-top-ml,
+  .x-reset .x-nbr .x-window-header-default-collapsed-top-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-top-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-top-ml,
+  .x-reset .x-nbr .x-window-header-default-collapsed-top-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-top-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-top-mc {
+    padding: 0px 1px 0px 1px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,
+  .x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-top-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-header-default-collapsed-right {
+    padding: 5px 4px 5px 4px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-header-default-collapsed-right-mc {
+    background-color: #ced9e7; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-right {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000505px 1000505px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-right-tl,
+  .x-reset .x-nbr .x-window-header-default-collapsed-right-bl,
+  .x-reset .x-nbr .x-window-header-default-collapsed-right-tr,
+  .x-reset .x-nbr .x-window-header-default-collapsed-right-br,
+  .x-reset .x-nbr .x-window-header-default-collapsed-right-tc,
+  .x-reset .x-nbr .x-window-header-default-collapsed-right-bc,
+  .x-reset .x-nbr .x-window-header-default-collapsed-right-ml,
+  .x-reset .x-nbr .x-window-header-default-collapsed-right-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-right-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-right-ml,
+  .x-reset .x-nbr .x-window-header-default-collapsed-right-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-right-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-right-mc {
+    padding: 1px 0px 1px 0px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,
+  .x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-right-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-header-default-collapsed-bottom {
+    padding: 4px 5px 4px 5px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-header-default-collapsed-bottom-mc {
+    background-color: #ced9e7; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-bottom {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000505px 1000505px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-bottom-tl,
+  .x-reset .x-nbr .x-window-header-default-collapsed-bottom-bl,
+  .x-reset .x-nbr .x-window-header-default-collapsed-bottom-tr,
+  .x-reset .x-nbr .x-window-header-default-collapsed-bottom-br,
+  .x-reset .x-nbr .x-window-header-default-collapsed-bottom-tc,
+  .x-reset .x-nbr .x-window-header-default-collapsed-bottom-bc,
+  .x-reset .x-nbr .x-window-header-default-collapsed-bottom-ml,
+  .x-reset .x-nbr .x-window-header-default-collapsed-bottom-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-bottom-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-bottom-ml,
+  .x-reset .x-nbr .x-window-header-default-collapsed-bottom-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-bottom-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-bottom-mc {
+    padding: 0px 1px 0px 1px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,
+  .x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-header-default-collapsed-left {
+    padding: 5px 4px 5px 4px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-header-default-collapsed-left-mc {
+    background-color: #ced9e7; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-left {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1000505px 1000505px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-left-tl,
+  .x-reset .x-nbr .x-window-header-default-collapsed-left-bl,
+  .x-reset .x-nbr .x-window-header-default-collapsed-left-tr,
+  .x-reset .x-nbr .x-window-header-default-collapsed-left-br,
+  .x-reset .x-nbr .x-window-header-default-collapsed-left-tc,
+  .x-reset .x-nbr .x-window-header-default-collapsed-left-bc,
+  .x-reset .x-nbr .x-window-header-default-collapsed-left-ml,
+  .x-reset .x-nbr .x-window-header-default-collapsed-left-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-left-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-left-ml,
+  .x-reset .x-nbr .x-window-header-default-collapsed-left-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-left-sides.gif');
+    background-position: 0 0;
+    background-repeat: repeat-y; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-window-header-default-collapsed-left-mc {
+    padding: 1px 0px 1px 0px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,
+  .x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-left-bl {
+    position: relative;
+    right: 0; }
+  /* line 217, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-default-top {
+    -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+  /* line 221, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-default-right {
+    -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+    -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+    -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+    box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset; }
+  /* line 225, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-default-bottom {
+    -moz-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    -webkit-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    -o-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+  /* line 229, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-default-left {
+    -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+  /* line 130, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-body-plain {
+    background: transparent; }
+  /* line 2, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box .x-window-body {
+    background-color: #ced9e7;
+    border: none; }
+  /* line 7, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box .x-progress-wrap {
+    margin-top: 4px; }
+  /* line 11, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box-icon {
+    width: 47px;
+    height: 32px; }
+  /* line 19, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box-info,
+  .x-reset .x-message-box-warning,
+  .x-reset .x-message-box-question,
+  .x-reset .x-message-box-error {
+    background: transparent no-repeat top left; }
+  /* line 23, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box .x-msg-box-wait {
+    background-image: url('../../resources/themes/images/default/shared/blue-loading.gif'); }
+  /* line 27, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box-info {
+    background-image: url('../../resources/themes/images/default/shared/icon-info.gif'); }
+  /* line 31, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box-warning {
+    background-image: url('../../resources/themes/images/default/shared/icon-warning.gif'); }
+  /* line 35, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box-question {
+    background-image: url('../../resources/themes/images/default/shared/icon-question.gif'); }
+  /* line 39, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box-error {
+    background-image: url('../../resources/themes/images/default/shared/icon-error.gif'); }
+  /* line 73, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar {
+    position: relative;
+    background-color: transparent;
+    background-image: none;
+    background-color: #cbdbef;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef));
+    background-image: -webkit-linear-gradient(top, #dde8f5, #cbdbef);
+    background-image: -moz-linear-gradient(top, #dde8f5, #cbdbef);
+    background-image: -o-linear-gradient(top, #dde8f5, #cbdbef);
+    background-image: -ms-linear-gradient(top, #dde8f5, #cbdbef);
+    background-image: linear-gradient(top, #dde8f5, #cbdbef);
+    font-size: 11px; }
+  /* line 80, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-nlg .x-tab-bar {
+    background-image: url('../../resources/themes/images/default/tab-bar/tab-bar-default-bg.gif'); }
+  /* line 85, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-default-plain,
+  .x-reset .x-nlg .x-tab-bar-default-plain {
+    background: transparent none; }
+  /* line 90, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-body {
+    border-style: solid;
+    border-color: #99bce8;
+    position: relative;
+    z-index: 2;
+    zoom: 1; }
+  /* line 4, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-top .x-tab-bar-body {
+    height: 20px;
+    border-width: 1px 1px 0;
+    padding: 1px 0 3px; }
+  /* line 10, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-top .x-tab-bar-strip {
+    /*position strip from top rather than bottom to avoid off-by-one error in IE6*/
+    top: 22px;
+    border-width: 1px 1px 0;
+    height: 2px; }
+  /* line 19, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-border-box .x-tab-bar-top .x-tab-bar-body {
+    height: 25px; }
+  /* line 23, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-border-box .x-tab-bar-top .x-tab-bar-strip {
+    height: 3px; }
+  /* line 4, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-top .x-tab-bar-body-default-plain {
+    height: 20px;
+    border-width: 0;
+    padding: 0 0 2px; }
+  /* line 10, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-top .x-tab-bar-strip-default-plain {
+    /*position strip from top rather than bottom to avoid off-by-one error in IE6*/
+    top: 20px;
+    border-width: 1px 1px 0 1px;
+    height: 2px; }
+  /* line 19, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-border-box .x-tab-bar-top .x-tab-bar-body-default-plain {
+    height: 22px; }
+  /* line 23, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-border-box .x-tab-bar-top .x-tab-bar-strip-default-plain {
+    height: 3px; }
+  /* line 32, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-bottom .x-tab-bar-body {
+    height: 20px;
+    border-width: 0 1px 1px;
+    padding: 3px 0 1px; }
+    /* line 37, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+    .x-reset .x-tab-bar-bottom .x-tab-bar-body .x-box-inner {
+      position: relative;
+      top: -1px; }
+    /* line 44, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+    .x-reset .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller,
+    .x-reset .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-left,
+    .x-reset .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-right {
+      height: 22px; }
+  /* line 49, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-bottom .x-tab-bar-strip {
+    top: 0;
+    border-width: 0 1px 1px 1px;
+    height: 2px; }
+  /* line 57, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-border-box .x-tab-bar-bottom .x-tab-bar-body {
+    height: 25px; }
+  /* line 61, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-border-box .x-tab-bar-bottom .x-tab-bar-strip {
+    height: 3px; }
+  /* line 32, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain {
+    height: 20px;
+    border-width: 0;
+    padding: 3px 0 0; }
+    /* line 37, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+    .x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-inner {
+      position: relative;
+      top: -1px; }
+    /* line 44, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+    .x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller,
+    .x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-left,
+    .x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-right {
+      height: 21px; }
+  /* line 49, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-bottom .x-tab-bar-strip-default-plain {
+    top: 0;
+    border-width: 0 1px 1px 1px;
+    height: 2px; }
+  /* line 57, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-border-box .x-tab-bar-bottom .x-tab-bar-body-default-plain {
+    height: 23px; }
+  /* line 61, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-border-box .x-tab-bar-bottom .x-tab-bar-strip-default-plain {
+    height: 3px; }
+  /* line 141, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-strip-default,
+  .x-reset .x-tab-bar-strip-default-plain {
+    font-size: 0;
+    line-height: 0;
+    position: absolute;
+    z-index: 1;
+    border-style: solid;
+    overflow: hidden;
+    border-color: #99bce8;
+    background-color: #deecfd;
+    zoom: 1; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-tab-default-top {
+    padding: 3px 3px 0 3px;
+    border-width: 1px 1px 0 1px;
+    border-style: solid;
+    background-color: #deecfd; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-tab-default-top-mc {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-bg.gif');
+    background-color: #deecfd; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-tab-default-top {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1100404px 1000000px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-tab-default-top-tl,
+  .x-reset .x-nbr .x-tab-default-top-bl,
+  .x-reset .x-nbr .x-tab-default-top-tr,
+  .x-reset .x-nbr .x-tab-default-top-br,
+  .x-reset .x-nbr .x-tab-default-top-tc,
+  .x-reset .x-nbr .x-tab-default-top-bc,
+  .x-reset .x-nbr .x-tab-default-top-ml,
+  .x-reset .x-nbr .x-tab-default-top-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-tab-default-top-ml,
+  .x-reset .x-nbr .x-tab-default-top-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-sides.gif');
+    background-position: 0 0; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-tab-default-top-mc {
+    padding: 0px 0px 0 0px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-tab-default-top-tl,
+  .x-reset .x-strict .x-ie7 .x-tab-default-top-bl {
+    position: relative;
+    right: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-tab-default-bottom {
+    padding: 0 3px 3px 3px;
+    border-width: 0 1px 1px 1px;
+    border-style: solid;
+    background-color: #deecfd; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-tab-default-bottom-mc {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif');
+    background-color: #deecfd; }
+  /* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-tab-default-bottom {
+    padding: 0 !important;
+    border-width: 0 !important;
+    -moz-border-radius: 0px;
+    -webkit-border-radius: 0px;
+    -o-border-radius: 0px;
+    -ms-border-radius: 0px;
+    -khtml-border-radius: 0px;
+    border-radius: 0px;
+    background-color: transparent;
+    background-position: 1100000px 1000404px; }
+  /* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-tab-default-bottom-tl,
+  .x-reset .x-nbr .x-tab-default-bottom-bl,
+  .x-reset .x-nbr .x-tab-default-bottom-tr,
+  .x-reset .x-nbr .x-tab-default-bottom-br,
+  .x-reset .x-nbr .x-tab-default-bottom-tc,
+  .x-reset .x-nbr .x-tab-default-bottom-bc,
+  .x-reset .x-nbr .x-tab-default-bottom-ml,
+  .x-reset .x-nbr .x-tab-default-bottom-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-corners.gif'); }
+  /* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-tab-default-bottom-ml,
+  .x-reset .x-nbr .x-tab-default-bottom-mr {
+    zoom: 1;
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-sides.gif');
+    background-position: 0 0; }
+  /* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nbr .x-tab-default-bottom-mc {
+    padding: 0 0px 0px 0px; }
+  /* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-strict .x-ie7 .x-tab-default-bottom-tl,
+  .x-reset .x-strict .x-ie7 .x-tab-default-bottom-bl {
+    position: relative;
+    right: 0; }
+  /* line 28, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab {
+    z-index: 1;
+    margin: 0 0 0 2px;
+    display: inline-block;
+    zoom: 1;
+    *display: inline;
+    white-space: nowrap;
+    height: 20px;
+    border-color: #8db3e3;
+    cursor: pointer;
+    cursor: hand; }
+    /* line 40, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab button {
+      cursor: pointer;
+      cursor: hand; }
+    /* line 45, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab em {
+      display: block;
+      padding: 0 6px;
+      line-height: 1px; }
+    /* line 51, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab button {
+      background: none;
+      border: 0;
+      padding: 0;
+      margin: 0;
+      -webkit-appearance: none;
+      font-size: 11px;
+      font-weight: bold;
+      font-family: tahoma, arial, verdana, sans-serif;
+      color: #416da3;
+      outline: 0 none;
+      overflow-x: visible; }
+      /* line 69, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+      .x-reset .x-tab button::-moz-focus-inner {
+        border: 0;
+        padding: 0; }
+      /* line 74, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+      .x-reset .x-tab button .x-tab-inner {
+        background-color: transparent;
+        background-repeat: no-repeat;
+        background-position: 0 -2px;
+        display: block;
+        text-align: center;
+        white-space: nowrap;
+        text-overflow: ellipsis;
+        -o-text-overflow: ellipsis;
+        overflow: hidden; }
+    /* line 87, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab img {
+      display: none; }
+  /* line 93, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-border-box .x-tab-default-top {
+    height: 21px; }
+  /* line 96, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-border-box .x-tab-default-bottom {
+    height: 21px; }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset * html .x-ie .x-tab button {
+    width: 1px; }
+  /* line 110, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-strict .x-ie6 .x-tab .x-frame-mc,
+  .x-reset .x-strict .x-ie7 .x-tab .x-frame-mc {
+    height: 100%; }
+  /* line 115, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-ie .x-tab-active button:active {
+    position: relative;
+    top: -1px;
+    left: -1px; }
+  /* line 124, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-default-top {
+    -moz-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    -webkit-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    -o-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    border-bottom: 1px solid #99bce8 !important; }
+    /* line 134, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab-default-top em {
+      padding-bottom: 3px; }
+    /* line 139, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab-default-top button,
+    .x-reset .x-tab-default-top .x-tab-inner {
+      height: 13px;
+      line-height: 13px; }
+  /* line 148, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-safari4 .x-tab-default-top .x-tab-inner,
+  .x-reset .x-safari5_0 .x-tab-default-top .x-tab-inner {
+    line-height: 11px; }
+  /* line 153, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-default-top {
+    border-bottom-width: 1px !important; }
+  /* line 157, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-default-top-active {
+    border-bottom-color: #deecfd !important; }
+  /* line 163, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-default-bottom {
+    -moz-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    -webkit-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    -o-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    border-top: 1px solid #99bce8 !important;
+    -moz-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    -webkit-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    -o-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset; }
+    /* line 178, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab-default-bottom em {
+      padding-top: 3px; }
+    /* line 183, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab-default-bottom button,
+    .x-reset .x-tab-default-bottom .x-tab-inner {
+      height: 13px;
+      line-height: 13px; }
+  /* line 189, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-default-bottom {
+    border-top-width: 1px !important; }
+  /* line 193, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-default-bottom-active {
+    border-top-color: #deecfd !important; }
+  /* line 197, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-default-disabled {
+    cursor: default;
+    border-color: #bbd2ef;
+    background-image: none;
+    background-color: #e1ecfa;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+    background-image: -webkit-linear-gradient(top, #e1ecfa, #ecf4fe);
+    background-image: -moz-linear-gradient(top, #e1ecfa, #ecf4fe);
+    background-image: -o-linear-gradient(top, #e1ecfa, #ecf4fe);
+    background-image: -ms-linear-gradient(top, #e1ecfa, #ecf4fe);
+    background-image: linear-gradient(top, #e1ecfa, #ecf4fe); }
+    /* line 203, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab-default-disabled button {
+      color: #c3b3b3 !important; }
+  /* line 209, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-icon-text-left .x-tab-inner {
+    padding-left: 20px; }
+  /* line 214, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab button {
+    position: relative; }
+  /* line 218, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-icon {
+    position: absolute;
+    background-repeat: no-repeat;
+    background-position: 0 -1px;
+    top: 0;
+    left: 0;
+    right: auto;
+    bottom: 0;
+    width: 18px;
+    height: 18px; }
+  /* line 233, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-strict .x-ie8 .x-tab button,
+  .x-reset .x-strict .x-ie9 .x-tab button {
+    overflow-y: visible; }
+  /* line 238, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-default-disabled .x-tab-icon {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5; }
+  /* line 243, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-noicon .x-tab-icon {
+    display: none; }
+  /* line 269, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-top-over {
+    background-image: none;
+    background-color: #e8f2ff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff));
+    background-image: -webkit-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+    background-image: -moz-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+    background-image: -o-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+    background-image: -ms-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+    background-image: linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%); }
+  /* line 272, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-bottom-over {
+    background-image: none;
+    background-color: #e8f2ff;
+    background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff));
+    background-image: -webkit-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+    background-image: -moz-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+    background-image: -o-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+    background-image: -ms-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+    background-image: linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%); }
+  /* line 277, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-active {
+    z-index: 3; }
+    /* line 283, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab-active button {
+      color: #15498b; }
+  /* line 299, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-top-active {
+    background-image: none;
+    background-color: #deecfd;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd));
+    background-image: -webkit-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+    background-image: -moz-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+    background-image: -o-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+    background-image: -ms-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+    background-image: linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%); }
+  /* line 302, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-bottom-active {
+    background-image: none;
+    background-color: #deecfd;
+    background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd));
+    background-image: -webkit-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+    background-image: -moz-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+    background-image: -o-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+    background-image: -ms-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+    background-image: linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%); }
+  /* line 307, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-disabled {
+    border-color: #bbd2ef; }
+    /* line 312, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab-disabled button {
+      color: #c3b3b3; }
+  /* line 328, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-top-disabled {
+    background-image: none;
+    background: transparent;
+    background-image: none;
+    background-color: #e1ecfa;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+    background-image: -webkit-linear-gradient(top, #e1ecfa, #ecf4fe);
+    background-image: -moz-linear-gradient(top, #e1ecfa, #ecf4fe);
+    background-image: -o-linear-gradient(top, #e1ecfa, #ecf4fe);
+    background-image: -ms-linear-gradient(top, #e1ecfa, #ecf4fe);
+    background-image: linear-gradient(top, #e1ecfa, #ecf4fe); }
+  /* line 333, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-bottom-disabled {
+    background-image: none;
+    background: transparent;
+    background-image: none;
+    background-color: #e1ecfa;
+    background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+    background-image: -webkit-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+    background-image: -moz-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+    background-image: -o-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+    background-image: -ms-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+    background-image: linear-gradient(bottom, #e1ecfa, #ecf4fe); }
+  /* line 342, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nlg .x-tab-top {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-bg.gif'); }
+  /* line 343, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nlg .x-tab-bottom {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif'); }
+  /* line 347, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nlg .x-tab-top-over {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-over-bg.gif'); }
+  /* line 348, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nlg .x-tab-bottom-over {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-over-bg.gif'); }
+  /* line 352, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nlg .x-tab-top-active {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-active-bg.gif'); }
+  /* line 353, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nlg .x-tab-bottom-active {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-active-bg.gif'); }
+  /* line 357, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nlg .x-tab-top-disabled {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-disabled-bg.gif') !important; }
+  /* line 358, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nlg .x-tab-bottom-disabled {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif') !important; }
+  /* line 363, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-closable em {
+    padding-right: 14px; }
+  /* line 367, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-close-btn {
+    position: absolute;
+    top: 2px;
+    right: 2px;
+    width: 11px;
+    height: 11px;
+    font-size: 0;
+    line-height: 0;
+    text-indent: -999px;
+    background: no-repeat;
+    background-image: url('../../resources/themes/images/default/tab/tab-default-close.gif');
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+    opacity: 0.6; }
+  /* line 381, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-close-btn {
+    top: 0px;
+    right: 0px; }
+  /* line 387, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset a.x-tab-close-btn:hover {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+    opacity: 1; }
+  /* line 392, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-default-disabled a.x-tab-close-btn {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+    opacity: 0.3; }
+  /* line 404, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-top-over .x-frame-tl,
+  .x-reset .x-nbr .x-tab-top-over .x-frame-bl,
+  .x-reset .x-nbr .x-tab-top-over .x-frame-tr,
+  .x-reset .x-nbr .x-tab-top-over .x-frame-br,
+  .x-reset .x-nbr .x-tab-top-over .x-frame-tc,
+  .x-reset .x-nbr .x-tab-top-over .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-over-corners.gif'); }
+  /* line 408, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-top-over .x-frame-ml,
+  .x-reset .x-nbr .x-tab-top-over .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-over-sides.gif'); }
+  /* line 412, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-top-over .x-frame-mc {
+    background-color: #e8f2ff;
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-over-bg.gif'); }
+  /* line 426, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-bottom-over .x-frame-tl,
+  .x-reset .x-nbr .x-tab-bottom-over .x-frame-bl,
+  .x-reset .x-nbr .x-tab-bottom-over .x-frame-tr,
+  .x-reset .x-nbr .x-tab-bottom-over .x-frame-br,
+  .x-reset .x-nbr .x-tab-bottom-over .x-frame-tc,
+  .x-reset .x-nbr .x-tab-bottom-over .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-over-corners.gif'); }
+  /* line 430, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-bottom-over .x-frame-ml,
+  .x-reset .x-nbr .x-tab-bottom-over .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-over-sides.gif'); }
+  /* line 434, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-bottom-over .x-frame-mc {
+    background-color: #e8f2ff;
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-over-bg.gif'); }
+  /* line 448, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-top-active .x-frame-tl,
+  .x-reset .x-nbr .x-tab-top-active .x-frame-bl,
+  .x-reset .x-nbr .x-tab-top-active .x-frame-tr,
+  .x-reset .x-nbr .x-tab-top-active .x-frame-br,
+  .x-reset .x-nbr .x-tab-top-active .x-frame-tc,
+  .x-reset .x-nbr .x-tab-top-active .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-active-corners.gif'); }
+  /* line 452, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-top-active .x-frame-ml,
+  .x-reset .x-nbr .x-tab-top-active .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-active-sides.gif'); }
+  /* line 456, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-top-active .x-frame-mc {
+    background-color: #deecfd;
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-active-bg.gif'); }
+  /* line 470, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-bottom-active .x-frame-tl,
+  .x-reset .x-nbr .x-tab-bottom-active .x-frame-bl,
+  .x-reset .x-nbr .x-tab-bottom-active .x-frame-tr,
+  .x-reset .x-nbr .x-tab-bottom-active .x-frame-br,
+  .x-reset .x-nbr .x-tab-bottom-active .x-frame-tc,
+  .x-reset .x-nbr .x-tab-bottom-active .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-active-corners.gif'); }
+  /* line 474, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-bottom-active .x-frame-ml,
+  .x-reset .x-nbr .x-tab-bottom-active .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-active-sides.gif'); }
+  /* line 478, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-bottom-active .x-frame-mc {
+    background-color: #deecfd;
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-active-bg.gif'); }
+  /* line 492, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-top-disabled .x-frame-tl,
+  .x-reset .x-nbr .x-tab-top-disabled .x-frame-bl,
+  .x-reset .x-nbr .x-tab-top-disabled .x-frame-tr,
+  .x-reset .x-nbr .x-tab-top-disabled .x-frame-br,
+  .x-reset .x-nbr .x-tab-top-disabled .x-frame-tc,
+  .x-reset .x-nbr .x-tab-top-disabled .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-disabled-corners.gif'); }
+  /* line 496, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-top-disabled .x-frame-ml,
+  .x-reset .x-nbr .x-tab-top-disabled .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-disabled-sides.gif'); }
+  /* line 500, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-top-disabled .x-frame-mc {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-disabled-bg.gif'); }
+  /* line 513, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-bottom-disabled .x-frame-tl,
+  .x-reset .x-nbr .x-tab-bottom-disabled .x-frame-bl,
+  .x-reset .x-nbr .x-tab-bottom-disabled .x-frame-tr,
+  .x-reset .x-nbr .x-tab-bottom-disabled .x-frame-br,
+  .x-reset .x-nbr .x-tab-bottom-disabled .x-frame-tc,
+  .x-reset .x-nbr .x-tab-bottom-disabled .x-frame-bc {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-corners.gif'); }
+  /* line 517, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-bottom-disabled .x-frame-ml,
+  .x-reset .x-nbr .x-tab-bottom-disabled .x-frame-mr {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-sides.gif'); }
+  /* line 521, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-bottom-disabled .x-frame-mc {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif'); }
+  /* line 9, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-autowidth-table table.x-grid-table {
+    table-layout: auto;
+    width: auto!important; }
+  /* line 14, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-no-lines .x-tree-elbow {
+    background-color: transparent; }
+  /* line 18, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-no-lines .x-tree-elbow-end {
+    background-color: transparent; }
+  /* line 22, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-no-lines .x-tree-elbow-line {
+    background-color: transparent; }
+  /* line 27, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-elbow-plus {
+    background: transparent no-repeat 0 0; }
+  /* line 31, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-elbow-end-plus {
+    background: transparent no-repeat 0 0; }
+  /* line 35, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-elbow-end-minus {
+    background: transparent no-repeat -16px 0; }
+  /* line 39, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-elbow-minus {
+    background: transparent no-repeat -16px 0; }
+  /* line 43, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-elbow {
+    background-color: transparent !important; }
+  /* line 47, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-elbow-end {
+    background-color: transparent !important; }
+  /* line 51, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-elbow-line {
+    background-color: transparent !important; }
+  /* line 57, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-expander-over .x-tree-elbow-plus,
+  .x-reset .x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-plus {
+    background-position: -32px 0; }
+  /* line 62, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-expander-over .x-tree-elbow-minus,
+  .x-reset .x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-minus {
+    background-position: -48px 0; }
+  /* line 67, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-plus,
+  .x-reset .x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+    background-position: -16px 0; }
+  /* line 72, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-plus,
+  .x-reset .x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-end-plus {
+    background-position: -48px 0; }
+  /* line 79, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-elbow-plus,
+  .x-reset .x-tree-elbow-minus,
+  .x-reset .x-tree-elbow-end-plus,
+  .x-reset .x-tree-elbow-end-minus {
+    cursor: pointer; }
+  /* line 85, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-lines .x-tree-elbow {
+    background-image: url('../../resources/themes/images/default/tree/elbow.gif'); }
+  /* line 89, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-lines .x-tree-elbow-end {
+    background-image: url('../../resources/themes/images/default/tree/elbow-end.gif'); }
+  /* line 93, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-lines .x-tree-elbow-plus {
+    background-image: url('../../resources/themes/images/default/tree/elbow-plus.gif'); }
+  /* line 97, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-lines .x-tree-elbow-end-plus {
+    background-image: url('../../resources/themes/images/default/tree/elbow-end-plus.gif'); }
+  /* line 101, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus {
+    background-image: url('../../resources/themes/images/default/tree/elbow-minus.gif'); }
+  /* line 105, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+    background-image: url('../../resources/themes/images/default/tree/elbow-end-minus.gif'); }
+  /* line 109, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-lines .x-tree-elbow-line {
+    background-image: url('../../resources/themes/images/default/tree/elbow-line.gif'); }
+  /* line 116, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-no-lines .x-tree-elbow-plus,
+  .x-reset .x-tree-no-lines .x-tree-elbow-end-plus {
+    background-image: url('../../resources/themes/images/default/tree/elbow-plus-nl.gif'); }
+  /* line 121, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-plus,
+  .x-reset .x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+    background-image: url('../../resources/themes/images/default/tree/elbow-end-minus-nl.gif'); }
+  /* line 130, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-elbow-plus,
+  .x-reset .x-tree-arrows .x-tree-elbow-minus,
+  .x-reset .x-tree-arrows .x-tree-elbow-end-plus,
+  .x-reset .x-tree-arrows .x-tree-elbow-end-minus {
+    background-image: url('../../resources/themes/images/default/tree/arrows.gif'); }
+  /* line 135, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-icon {
+    margin: 2px 3px 0 0; }
+  /* line 139, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-with-row-lines .x-tree-icon {
+    margin-top: 1px; }
+  /* line 148, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-elbow,
+  .x-reset .x-tree-elbow-end,
+  .x-reset .x-tree-elbow-plus,
+  .x-reset .x-tree-elbow-end-plus,
+  .x-reset .x-tree-elbow-empty,
+  .x-reset .x-tree-elbow-line {
+    height: 20px;
+    width: 16px; }
+  /* line 159, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-with-row-lines .x-tree-elbow,
+  .x-reset .x-grid-with-row-lines .x-tree-elbow-end,
+  .x-reset .x-grid-with-row-lines .x-tree-elbow-plus,
+  .x-reset .x-grid-with-row-lines .x-tree-elbow-end-plus,
+  .x-reset .x-grid-with-row-lines .x-tree-elbow-empty,
+  .x-reset .x-grid-with-row-lines .x-tree-elbow-line {
+    height: 19px;
+    background-position: 0 -1px; }
+  /* line 165, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-icon-leaf {
+    width: 16px;
+    background-image: url('../../resources/themes/images/default/tree/leaf.gif'); }
+  /* line 170, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-icon-parent {
+    width: 16px;
+    background-image: url('../../resources/themes/images/default/tree/folder.gif'); }
+  /* line 175, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-tree-node-expanded .x-tree-icon-parent {
+    background-image: url('../../resources/themes/images/default/tree/folder-open.gif'); }
+  /* line 179, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-rowbody {
+    padding: 0; }
+  /* line 183, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-cell-treecolumn .x-grid-cell-inner {
+    padding: 0;
+    line-height: 19px; }
+  /* line 188, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-with-row-lines .x-grid-cell-treecolumn .x-grid-cell-inner {
+    line-height: 17px; }
+  /* line 192, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-panel .x-grid-cell-inner {
+    cursor: pointer; }
+    /* line 194, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+    .x-reset .x-tree-panel .x-grid-cell-inner img {
+      display: inline-block;
+      vertical-align: top; }
+  /* line 207, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-ie .x-tree-panel .x-tree-elbow,
+  .x-reset .x-ie .x-tree-panel .x-tree-elbow-end,
+  .x-reset .x-ie .x-tree-panel .x-tree-elbow-plus,
+  .x-reset .x-ie .x-tree-panel .x-tree-elbow-end-plus,
+  .x-reset .x-ie .x-tree-panel .x-tree-elbow-empty,
+  .x-reset .x-ie .x-tree-panel .x-tree-elbow-line {
+    vertical-align: -6px; }
+  /* line 215, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-editor-on-text-node .x-form-text {
+    padding-left: 1px;
+    padding-right: 1px; }
+  /* line 222, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-ie .x-grid-editor-on-text-node .x-form-text {
+    padding-left: 2px;
+    padding-right: 2px; }
+  /* line 234, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-checkbox {
+    margin: 4px 3px 0 0;
+    display: inline-block;
+    vertical-align: top;
+    width: 13px;
+    height: 13px;
+    background: no-repeat;
+    background-image: url('../../resources/themes/images/default/form/checkbox.gif');
+    overflow: hidden;
+    padding: 0;
+    border: 0; }
+    /* line 247, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+    .x-reset .x-tree-checkbox::-moz-focus-inner {
+      padding: 0;
+      border: 0; }
+  /* line 253, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-with-row-lines .x-tree-checkbox {
+    margin-top: 3px; }
+  /* line 257, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-checkbox-checked {
+    background-position: 0 -13px; }
+  /* line 261, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-drop-ok-append .x-dd-drop-icon {
+    background-image: url('../../resources/themes/images/default/tree/drop-append.gif'); }
+  /* line 265, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-drop-ok-above .x-dd-drop-icon {
+    background-image: url('../../resources/themes/images/default/tree/drop-above.gif'); }
+  /* line 269, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-drop-ok-below .x-dd-drop-icon {
+    background-image: url('../../resources/themes/images/default/tree/drop-below.gif'); }
+  /* line 273, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-drop-ok-between .x-dd-drop-icon {
+    background-image: url('../../resources/themes/images/default/tree/drop-between.gif'); }
+  /* line 277, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-tree-loading .x-tree-icon {
+    background-image: url('../../resources/themes/images/default/tree/loading.gif'); }
+  /* line 281, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-ddindicator {
+    height: 1px;
+    border-width: 1px 0px 0px;
+    border-style: dotted;
+    border-color: green; }
+  /* line 288, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-tree-loading span {
+    font-style: italic;
+    color: #444444; }
+  /* line 293, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-animator-wrap {
+    overflow: hidden; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset .x-surface {
+    display: -moz-inline-box;
+    -moz-box-orient: vertical;
+    display: inline-block;
+    vertical-align: middle;
+    *vertical-align: auto;
+    overflow: hidden; }
+    /* line 7, ../../../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.11.7/frameworks/compass/stylesheets/compass/css3/_inline-block.scss */
+    .x-reset .x-surface {
+      *display: inline; }
+  /* line 11, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset .rvml {
+    behavior: url(#default#VML); }
+  /* line 15, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset .x-surface tspan {
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default; }
+  /* line 19, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset .x-vml-sprite {
+    position: absolute;
+    left: 0;
+    top: 0;
+    width: 1px;
+    height: 1px; }
+  /* line 27, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset .x-vml-group {
+    position: absolute;
+    left: 0;
+    top: 0;
+    width: 1000px;
+    height: 1000px; }
+  /* line 35, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset .x-vml-measure-span {
+    position: absolute;
+    left: -9999em;
+    top: -9999em;
+    padding: 0;
+    margin: 0;
+    display: inline; }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset .x-vml-base {
+    position: relative;
+    top: 0;
+    left: 0;
+    overflow: hidden;
+    display: inline-block; }
+  /* line 52, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset .x-vml-base {
+    position: relative;
+    top: 0;
+    left: 0;
+    overflow: hidden;
+    display: inline-block; }
+  /* line 60, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset svg, .x-reset vml {
+    overflow: hidden; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_viewport.scss */
+  .x-reset .x-viewport, .x-reset .x-viewport body {
+    margin: 0;
+    padding: 0;
+    border: 0 none;
+    overflow: hidden;
+    height: 100%;
+    position: static; }
+  /* line 3, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-dd-drag-proxy {
+    z-index: 1000000!important; }
+  /* line 8, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-dd-drag-repair .x-dd-drag-ghost {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+    opacity: 0.6; }
+  /* line 12, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-dd-drag-repair .x-dd-drop-icon {
+    display: none; }
+  /* line 17, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-dd-drag-ghost {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
+    opacity: 0.85;
+    padding: 5px;
+    padding-left: 20px;
+    white-space: nowrap;
+    color: #000;
+    font: normal 11px tahoma, arial, verdana, sans-serif;
+    border: 1px solid;
+    border-color: #ddd #bbb #bbb #ddd;
+    background-color: #fff; }
+  /* line 34, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-dd-drop-icon {
+    position: absolute;
+    top: 3px;
+    left: 3px;
+    display: block;
+    width: 16px;
+    height: 16px;
+    background-color: transparent;
+    background-position: center;
+    background-repeat: no-repeat;
+    z-index: 1; }
+  /* line 51, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-view-selector {
+    position: absolute;
+    left: 0;
+    top: 0;
+    width: 0;
+    background-color: #c3daf9;
+    border: 1px dotted #3399bb;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5;
+    zoom: 1; }
+  /* line 66, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-dd-drop-nodrop .x-dd-drop-icon {
+    background-image: url('../../resources/themes/images/default/dd/drop-no.gif'); }
+  /* line 70, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-dd-drop-ok .x-dd-drop-icon {
+    background-image: url('../../resources/themes/images/default/dd/drop-yes.gif'); }
+  /* line 74, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-dd-drop-ok-add .x-dd-drop-icon {
+    background-image: url('../../resources/themes/images/default/dd/drop-add.gif'); }
+  /* line 2, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle {
+    position: absolute;
+    z-index: 100;
+    font-size: 1px;
+    line-height: 6px;
+    overflow: hidden;
+    zoom: 1;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+    opacity: 0;
+    background-color: #fff; }
+  /* line 14, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-collapsed .x-resizable-handle {
+    display: none; }
+  /* line 18, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle-east {
+    width: 6px;
+    height: 100%;
+    right: 0;
+    top: 0; }
+  /* line 27, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-east {
+    cursor: e-resize; }
+  /* line 32, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle-south {
+    width: 100%;
+    height: 6px;
+    left: 0;
+    bottom: 0; }
+  /* line 41, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-south {
+    cursor: s-resize; }
+  /* line 46, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle-west {
+    width: 6px;
+    height: 100%;
+    left: 0;
+    top: 0; }
+  /* line 55, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-west {
+    cursor: w-resize; }
+  /* line 60, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle-north {
+    width: 100%;
+    height: 6px;
+    left: 0;
+    top: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-north {
+    cursor: n-resize; }
+  /* line 74, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle-southeast {
+    width: 6px;
+    height: 6px;
+    right: 0;
+    bottom: 0;
+    z-index: 101; }
+  /* line 85, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-southeast {
+    cursor: se-resize; }
+  /* line 90, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle-northwest {
+    width: 6px;
+    height: 6px;
+    left: 0;
+    top: 0;
+    z-index: 101; }
+  /* line 101, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-northwest {
+    cursor: nw-resize; }
+  /* line 106, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle-northeast {
+    width: 6px;
+    height: 6px;
+    right: 0;
+    top: 0;
+    z-index: 101; }
+  /* line 117, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-northeast {
+    cursor: ne-resize; }
+  /* line 122, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle-southwest {
+    width: 6px;
+    height: 6px;
+    left: 0;
+    bottom: 0;
+    z-index: 101; }
+  /* line 133, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-southwest {
+    cursor: sw-resize; }
+  /* line 140, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-ie .x-resizable-handle-east {
+    margin-right: -1px;
+    /*IE rounding error*/ }
+  /* line 144, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-ie .x-resizable-handle-south {
+    margin-bottom: -1px; }
+  /* line 149, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle, .x-reset .x-resizable-pinned .x-resizable-handle {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+    opacity: 1; }
+  /* line 153, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-window .x-window-handle {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+    opacity: 0; }
+  /* line 157, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-window-collapsed .x-window-handle {
+    display: none; }
+  /* line 161, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-proxy {
+    border: 1px dashed #3b5a82;
+    position: absolute;
+    left: 0;
+    top: 0;
+    overflow: hidden;
+    z-index: 50000; }
+  /* line 170, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-overlay {
+    position: absolute;
+    left: 0;
+    top: 0;
+    width: 100%;
+    height: 100%;
+    display: none;
+    z-index: 200000;
+    background-color: #fff;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+    opacity: 0; }
+  /* line 190, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-east,
+  .x-reset .x-resizable-over .x-resizable-handle-west,
+  .x-reset .x-resizable-pinned .x-resizable-handle-east,
+  .x-reset .x-resizable-pinned .x-resizable-handle-west {
+    background-position: left;
+    background-image: url('../../resources/themes/images/default/sizer/e-handle.gif'); }
+  /* line 196, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-south,
+  .x-reset .x-resizable-over .x-resizable-handle-north,
+  .x-reset .x-resizable-pinned .x-resizable-handle-south,
+  .x-reset .x-resizable-pinned .x-resizable-handle-north {
+    background-position: top;
+    background-image: url('../../resources/themes/images/default/sizer/s-handle.gif'); }
+  /* line 201, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-southeast,
+  .x-reset .x-resizable-pinned .x-resizable-handle-southeast {
+    background-position: top left;
+    background-image: url('../../resources/themes/images/default/sizer/se-handle.gif'); }
+  /* line 206, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-northwest,
+  .x-reset .x-resizable-pinned .x-resizable-handle-northwest {
+    background-position: bottom right;
+    background-image: url('../../resources/themes/images/default/sizer/nw-handle.gif'); }
+  /* line 211, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-northeast,
+  .x-reset .x-resizable-pinned .x-resizable-handle-northeast {
+    background-position: bottom left;
+    background-image: url('../../resources/themes/images/default/sizer/ne-handle.gif'); }
+  /* line 216, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-southwest,
+  .x-reset .x-resizable-pinned .x-resizable-handle-southwest {
+    background-position: top right;
+    background-image: url('../../resources/themes/images/default/sizer/sw-handle.gif'); }
+  /* line 3, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter .x-collapse-el {
+    position: absolute;
+    cursor: pointer;
+    background-color: transparent;
+    background-repeat: no-repeat !important; }
+  /* line 14, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-layout-split-left,
+  .x-reset .x-layout-split-right {
+    top: 50%;
+    margin-top: -17px;
+    width: 5px;
+    height: 35px; }
+  /* line 24, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-layout-split-top,
+  .x-reset .x-layout-split-bottom {
+    left: 50%;
+    width: 35px;
+    height: 5px;
+    margin-left: -17px; }
+  /* line 33, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-layout-split-left {
+    background: no-repeat top right;
+    background-image: url('../../resources/themes/images/default/util/splitter/mini-left.gif'); }
+  /* line 38, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-layout-split-right {
+    background: no-repeat top left;
+    background-image: url('../../resources/themes/images/default/util/splitter/mini-right.gif'); }
+  /* line 43, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-layout-split-top {
+    background: no-repeat top left;
+    background-image: url('../../resources/themes/images/default/util/splitter/mini-top.gif'); }
+  /* line 48, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-layout-split-bottom {
+    background: no-repeat top left;
+    background-image: url('../../resources/themes/images/default/util/splitter/mini-bottom.gif'); }
+  /* line 54, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-collapsed .x-layout-split-left {
+    background: no-repeat top left;
+    background-image: url('../../resources/themes/images/default/util/splitter/mini-right.gif'); }
+  /* line 59, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-collapsed .x-layout-split-right {
+    background: no-repeat top right;
+    background-image: url('../../resources/themes/images/default/util/splitter/mini-left.gif'); }
+  /* line 64, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-collapsed .x-layout-split-top {
+    background: no-repeat top left;
+    background-image: url('../../resources/themes/images/default/util/splitter/mini-bottom.gif'); }
+  /* line 69, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-collapsed .x-layout-split-bottom {
+    background: no-repeat top left;
+    background-image: url('../../resources/themes/images/default/util/splitter/mini-top.gif'); }
+  /* line 75, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-horizontal {
+    cursor: e-resize;
+    cursor: row-resize;
+    font-size: 1px; }
+  /* line 81, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-vertical {
+    cursor: e-resize;
+    cursor: col-resize;
+    font-size: 1px; }
+  /* line 86, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-collapsed, .x-reset .x-splitter-horizontal-noresize, .x-reset .x-splitter-vertical-noresize {
+    cursor: default; }
+  /* line 90, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-active {
+    z-index: 4;
+    font-size: 1px;
+    background-color: #b4b4b4;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+    opacity: 0.8; }
+  /* line 97, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-active .x-collapse-el {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+    opacity: 0.3; }
+  /* line 102, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-proxy-el {
+    position: absolute;
+    background: #b4b4b4;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+    opacity: 0.8; }
+  /* line 6, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked {
+    position: absolute !important;
+    z-index: 1; }
+  /* line 11, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked-top {
+    border-bottom-width: 0 !important; }
+  /* line 15, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked-bottom {
+    border-top-width: 0 !important; }
+  /* line 19, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked-left {
+    border-right-width: 0 !important; }
+  /* line 23, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked-right {
+    border-left-width: 0 !important; }
+  /* line 27, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked-noborder-top {
+    border-top-width: 0 !important; }
+  /* line 31, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked-noborder-right {
+    border-right-width: 0 !important; }
+  /* line 35, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked-noborder-bottom {
+    border-bottom-width: 0 !important; }
+  /* line 39, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked-noborder-left {
+    border-left-width: 0 !important; }
+  /* line 43, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-inner {
+    overflow: hidden;
+    zoom: 1;
+    position: relative;
+    left: 0;
+    top: 0; }
+  /* line 53, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-item {
+    position: absolute !important;
+    left: 0;
+    top: 0; }
+  /* line 59, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-rtl .x-box-item {
+    right: 0;
+    left: auto; }
+  /* line 65, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-layout-ct,
+  .x-reset .x-border-layout-ct {
+    overflow: hidden;
+    zoom: 1; }
+  /* line 70, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-border-layout-ct {
+    background-color: #dfe8f6;
+    position: relative; }
+  /* line 75, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-overflow-hidden {
+    overflow: hidden !important; }
+  /* line 79, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-inline-children > * {
+    display: inline-block !important; }
+  /* line 83, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-abs-layout-ct {
+    position: relative; }
+  /* line 87, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-abs-layout-item {
+    position: absolute !important; }
+  /* line 91, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-fit-item {
+    position: relative; }
+  /* line 95, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-border-region-slide-in {
+    z-index: 5; }
+  /* line 99, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-region-collapsed-placeholder {
+    z-index: 4; }
+  /* line 103, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-accordion-hd .x-panel-header-text {
+    color: black;
+    font-weight: normal; }
+  /* line 108, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-accordion-hd {
+    background: #d9e7f8 !important;
+    -moz-box-shadow: inset 0 0 0 0 #d9e7f8;
+    -webkit-box-shadow: inset 0 0 0 0 #d9e7f8;
+    -o-box-shadow: inset 0 0 0 0 #d9e7f8;
+    box-shadow: inset 0 0 0 0 #d9e7f8; }
+    /* line 112, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-accordion-hd .x-tool-collapse-top,
+    .x-reset .x-accordion-hd .x-tool-collapse-right,
+    .x-reset .x-accordion-hd .x-tool-collapse-bottom,
+    .x-reset .x-accordion-hd .x-tool-collapse-left {
+      background-position: 0 -255px; }
+    /* line 119, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-accordion-hd .x-tool-expand-top,
+    .x-reset .x-accordion-hd .x-tool-expand-right,
+    .x-reset .x-accordion-hd .x-tool-expand-bottom,
+    .x-reset .x-accordion-hd .x-tool-expand-left {
+      background-position: 0 -240px; }
+    /* line 127, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-accordion-hd .x-tool-over .x-tool-collapse-top,
+    .x-reset .x-accordion-hd .x-tool-over .x-tool-collapse-right,
+    .x-reset .x-accordion-hd .x-tool-over .x-tool-collapse-bottom,
+    .x-reset .x-accordion-hd .x-tool-over .x-tool-collapse-left {
+      background-position: -15px -255px; }
+    /* line 136, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-accordion-hd .x-tool-over .x-tool-expand-top,
+    .x-reset .x-accordion-hd .x-tool-over .x-tool-expand-right,
+    .x-reset .x-accordion-hd .x-tool-over .x-tool-expand-bottom,
+    .x-reset .x-accordion-hd .x-tool-over .x-tool-expand-left {
+      background-position: -15px -240px; }
+  /* line 145, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-accordion-hd {
+    border-width: 1px 0 1px 0 !important;
+    padding: 4px 5px 5px 5px;
+    border-top-color: #f3f7fb !important; }
+  /* line 151, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-accordion-body {
+    border-width: 0 !important; }
+  /* line 155, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-accordion-hd-sibling-expanded {
+    border-top-color: #99bce8 !important;
+    -moz-box-shadow: inset 0 1px 0 0 #f3f7fb;
+    -webkit-box-shadow: inset 0 1px 0 0 #f3f7fb;
+    -o-box-shadow: inset 0 1px 0 0 #f3f7fb;
+    box-shadow: inset 0 1px 0 0 #f3f7fb; }
+  /* line 160, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-accordion-hd-last-collapsed {
+    border-bottom-color: #d9e7f8 !important; }
+  /* line 169, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-frame-tl,
+  .x-reset .x-frame-tr,
+  .x-reset .x-frame-tc,
+  .x-reset .x-frame-bl,
+  .x-reset .x-frame-br,
+  .x-reset .x-frame-bc {
+    overflow: hidden;
+    background-repeat: no-repeat; }
+  /* line 175, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-frame-tc,
+  .x-reset .x-frame-bc {
+    background-repeat: repeat-x; }
+  /* line 179, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-frame-mc {
+    position: relative;
+    background-repeat: repeat-x;
+    overflow: hidden; }
+  /* line 188, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-scroller-left {
+    float: left;
+    height: 100%;
+    z-index: 5; }
+    /* line 195, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-left .x-toolbar-scroll-left,
+    .x-reset .x-box-scroller-left .x-tabbar-scroll-left {
+      width: 18px;
+      position: relative;
+      cursor: pointer;
+      height: 20px;
+      background: transparent no-repeat -18px 0;
+      background-image: url('../../resources/themes/images/default/tab-bar/scroll-left.gif'); }
+    /* line 203, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-left .x-toolbar-scroll-left-hover {
+      background-position: 0 0; }
+    /* line 207, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-left .x-toolbar-scroll-left-disabled,
+    .x-reset .x-box-scroller-left .x-tabbar-scroll-left-disabled {
+      background-position: -18px 0;
+      filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+      opacity: 0.5;
+      cursor: default; }
+    /* line 214, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-left .x-toolbar-scroll-left {
+      background-image: url('../../resources/themes/images/default/toolbar/scroll-left.gif');
+      background-position: -14px 0; }
+    /* line 218, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-left .x-toolbar-scroll-left-hover {
+      background-position: 0 0; }
+    /* line 221, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-left .x-toolbar-scroll-left-disabled {
+      background-position: -14px 0; }
+    /* line 225, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-left .x-toolbar-scroll-left {
+      width: 14px;
+      height: 22px;
+      border-bottom: 1px solid #8db2e3; }
+  /* line 233, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-horizontal-box-overflow-body {
+    float: left; }
+  /* line 236, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-scroller-right {
+    float: right;
+    height: 100%;
+    z-index: 5; }
+    /* line 243, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-right .x-toolbar-scroll-right,
+    .x-reset .x-box-scroller-right .x-tabbar-scroll-right {
+      width: 18px;
+      position: relative;
+      cursor: pointer;
+      height: 20px;
+      background: transparent no-repeat 0 0;
+      background-image: url('../../resources/themes/images/default/tab-bar/scroll-right.gif'); }
+    /* line 251, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-right .x-toolbar-scroll-right-hover {
+      background-position: -18px 0; }
+    /* line 255, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-right .x-toolbar-scroll-right-disabled,
+    .x-reset .x-box-scroller-right .x-tabbar-scroll-right-disabled {
+      background-position: 0 0;
+      filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+      opacity: 0.5;
+      cursor: default; }
+    /* line 262, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-right .x-toolbar-scroll-right {
+      background-image: url('../../resources/themes/images/default/toolbar/scroll-right.gif'); }
+    /* line 265, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-right .x-toolbar-scroll-right-hover {
+      background-position: -14px 0; }
+    /* line 268, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-right .x-toolbar-scroll-right-disabled {
+      background-position: 0 0; }
+    /* line 272, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-right .x-toolbar-scroll-right {
+      width: 14px;
+      height: 22px;
+      border-bottom: 1px solid #8db2e3; }
+  /* line 282, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-scroller-top .x-box-scroller {
+    line-height: 0;
+    font-size: 0; }
+  /* line 286, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-scroller-top .x-menu-scroll-top {
+    background: transparent no-repeat center center;
+    background-image: url('../../resources/themes/images/default/layout/mini-top.gif');
+    height: 8px;
+    cursor: pointer; }
+  /* line 294, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-scroller-bottom .x-box-scroller {
+    line-height: 0;
+    font-size: 0; }
+  /* line 298, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-scroller-bottom .x-menu-scroll-bottom {
+    background: transparent no-repeat center center;
+    background-image: url('../../resources/themes/images/default/layout/mini-bottom.gif');
+    height: 8px;
+    cursor: pointer; }
+  /* line 306, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-menu-right {
+    float: right;
+    padding-right: 2px; }
+  /* line 311, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-column {
+    float: left; }
+  /* line 315, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-ie6 .x-column {
+    display: inline;
+    /*prevent IE6 double-margin bug*/ }
+  /* line 319, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-quirks .x-ie .x-form-layout-table, .x-reset .x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item {
+    position: relative; }
+  /* line 2, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool {
+    height: 15px; }
+    /* line 5, ../themes/stylesheets/ext4/default/util/_tool.scss */
+    .x-reset .x-tool img {
+      overflow: hidden;
+      width: 15px;
+      height: 15px;
+      cursor: pointer;
+      background-color: transparent;
+      background-repeat: no-repeat;
+      background-image: url('../../resources/themes/images/default/tools/tool-sprites.gif');
+      margin: 0; }
+  /* line 23, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-panel-header-horizontal .x-tool,
+  .x-reset .x-window-header-horizontal .x-tool {
+    margin-left: 2px; }
+  /* line 30, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-panel-header-vertical .x-tool,
+  .x-reset .x-window-header-vertical .x-tool {
+    margin-top: 2px; }
+  /* line 39, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-panel-header-vertical .x-tool-top,
+  .x-reset .x-window-header-vertical .x-tool-top {
+    margin: 0 0 4px; }
+  /* line 45, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-placeholder {
+    visibility: hidden; }
+  /* line 49, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-toggle {
+    background-position: 0 -60px; }
+  /* line 54, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-toggle {
+    background-position: -15px -60px; }
+  /* line 61, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-panel-collapsed .x-tool-toggle,
+  .x-reset .x-fieldset-collapsed .x-tool-toggle {
+    background-position: 0 -75px; }
+  /* line 66, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-panel-collapsed .x-tool-over .x-tool-toggle,
+  .x-reset .x-fieldset-collapsed .x-tool-over .x-tool-toggle {
+    background-position: -15px -75px; }
+  /* line 72, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-close {
+    background-position: 0 0; }
+  /* line 76, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-minimize {
+    background-position: 0 -15px; }
+  /* line 80, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-maximize {
+    background-position: 0 -30px; }
+  /* line 84, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-restore {
+    background-position: 0 -45px; }
+  /* line 88, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-gear {
+    background-position: 0 -90px; }
+  /* line 92, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-prev {
+    background-position: 0 -105px; }
+  /* line 96, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-next {
+    background-position: 0 -120px; }
+  /* line 100, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-pin {
+    background-position: 0 -135px; }
+  /* line 104, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-unpin {
+    background-position: 0 -150px; }
+  /* line 108, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-right {
+    background-position: 0 -165px; }
+  /* line 112, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-left {
+    background-position: 0 -180px; }
+  /* line 116, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-help {
+    background-position: 0 -300px; }
+  /* line 120, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-save {
+    background-position: 0 -285px; }
+  /* line 124, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-search {
+    background-position: 0 -270px; }
+  /* line 128, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-minus {
+    background-position: 0 -255px; }
+  /* line 132, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-plus {
+    background-position: 0 -240px; }
+  /* line 136, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-refresh {
+    background-position: 0 -225px; }
+  /* line 140, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-up {
+    background-position: 0 -210px; }
+  /* line 144, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-down {
+    background-position: 0 -195px; }
+  /* line 148, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-collapse {
+    background-position: 0 -345px; }
+  /* line 152, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-expand {
+    background-position: 0 -330px; }
+  /* line 156, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-print {
+    background-position: 0 -315px; }
+  /* line 161, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-expand-bottom,
+  .x-reset .x-tool-collapse-bottom {
+    background-position: 0 -195px; }
+  /* line 166, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-expand-top,
+  .x-reset .x-tool-collapse-top {
+    background-position: 0 -210px; }
+  /* line 171, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-expand-left,
+  .x-reset .x-tool-collapse-left {
+    background-position: 0 -180px; }
+  /* line 176, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-expand-right,
+  .x-reset .x-tool-collapse-right {
+    background-position: 0 -165px; }
+  /* line 181, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-close {
+    background-position: -15px 0; }
+  /* line 185, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-minimize {
+    background-position: -15px -15px; }
+  /* line 189, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-maximize {
+    background-position: -15px -30px; }
+  /* line 193, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-restore {
+    background-position: -15px -45px; }
+  /* line 197, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-gear {
+    background-position: -15px -90px; }
+  /* line 201, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-prev {
+    background-position: -15px -105px; }
+  /* line 205, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-next {
+    background-position: -15px -120px; }
+  /* line 209, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-pin {
+    background-position: -15px -135px; }
+  /* line 213, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-unpin {
+    background-position: -15px -150px; }
+  /* line 217, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-right {
+    background-position: -15px -165px; }
+  /* line 221, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-left {
+    background-position: -15px -180px; }
+  /* line 225, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-down {
+    background-position: -15px -195px; }
+  /* line 229, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-up {
+    background-position: -15px -210px; }
+  /* line 233, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-refresh {
+    background-position: -15px -225px; }
+  /* line 237, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-plus {
+    background-position: -15px -240px; }
+  /* line 241, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-minus {
+    background-position: -15px -255px; }
+  /* line 245, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-search {
+    background-position: -15px -270px; }
+  /* line 249, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-save {
+    background-position: -15px -285px; }
+  /* line 253, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-help {
+    background-position: -15px -300px; }
+  /* line 257, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-print {
+    background-position: -15px -315px; }
+  /* line 261, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-expand {
+    background-position: -15px -330px; }
+  /* line 265, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-collapse {
+    background-position: -15px -345px; }
+  /* line 270, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-expand-bottom,
+  .x-reset .x-tool-over .x-tool-collapse-bottom {
+    background-position: -15px -195px; }
+  /* line 275, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-expand-top,
+  .x-reset .x-tool-over .x-tool-collapse-top {
+    background-position: -15px -210px; }
+  /* line 280, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-expand-left,
+  .x-reset .x-tool-over .x-tool-collapse-left {
+    background-position: -15px -180px; }
+  /* line 285, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-expand-right,
+  .x-reset .x-tool-over .x-tool-collapse-right {
+    background-position: -15px -165px; }
+  /* line 2, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-horizontal-scroller-present .x-grid-body {
+    border-bottom-width: 0px; }
+  /* line 6, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-vertical-scroller-present .x-grid-body {
+    border-right-width: 0px; }
+  /* line 10, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-scroller {
+    overflow: hidden; }
+  /* line 14, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-scroller-vertical {
+    border: 1px solid #99bce8;
+    border-top-color: #c5c5c5; }
+  /* line 19, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-scroller-horizontal {
+    border: 1px solid #99bce8; }
+  /* line 23, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-vertical-scroller-present .x-scroller-horizontal {
+    border-right-width: 0px; }
+  /* line 27, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-scroller-ct {
+    overflow: hidden;
+    position: absolute;
+    margin: 0;
+    padding: 0;
+    border: none;
+    left: 0px;
+    top: 0px;
+    /*
+    In IE9 (only), the border-box style causes the scroller-ct to be 0px in the
+    perpendicular dimension and breaks the scroll as well as offsets it by the left
+    offset that we use to try and keep some size on this element. This works on all
+    browsers (including IE9).
+    */
+    box-sizing: content-box !important;
+    -ms-box-sizing: content-box !important;
+    -moz-box-sizing: content-box !important;
+    -webkit-box-sizing: content-box !important; }
+  /* line 48, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-scroller-vertical .x-scroller-ct {
+    overflow-y: scroll; }
+  /* line 52, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-scroller-horizontal .x-scroller-ct {
+    overflow-x: scroll; }
+  /* line 8, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-reset .x-html {
+    /* Begin bidirectionality settings (do not change) */ }
+    /* line 34, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html html, .x-reset .x-html address, .x-reset .x-html blockquote, .x-reset .x-html body, .x-reset .x-html dd, .x-reset .x-html div, .x-reset .x-html dl, .x-reset .x-html dt, .x-reset .x-html fieldset, .x-reset .x-html form, .x-reset .x-html frame, .x-reset .x-html frameset, .x-reset .x-html h1, .x-reset .x-html h2, .x-reset .x-html h3, .x-reset .x-html h4, .x-reset .x-html h5, .x-reset .x-html h6, .x-reset .x-html noframes, .x-reset .x-html ol, .x-reset .x-html p, .x-reset .x-html ul, .x-reset .x-html center, .x-reset .x-html dir, .x-reset .x-html hr, .x-reset .x-html menu, .x-reset .x-html pre {
+      display: block; }
+    /* line 35, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html li {
+      display: list-item;
+      list-style: disc; }
+    /* line 36, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html head {
+      display: none; }
+    /* line 37, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html table {
+      display: table; }
+    /* line 38, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html tr {
+      display: table-row; }
+    /* line 39, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html thead {
+      display: table-header-group; }
+    /* line 40, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html tbody {
+      display: table-row-group; }
+    /* line 41, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html tfoot {
+      display: table-footer-group; }
+    /* line 42, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html col {
+      display: table-column; }
+    /* line 43, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html colgroup {
+      display: table-column-group; }
+    /* line 45, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html td, .x-reset .x-html th {
+      display: table-cell; }
+    /* line 46, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html caption {
+      display: table-caption; }
+    /* line 47, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html th {
+      font-weight: bolder;
+      text-align: center; }
+    /* line 48, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html caption {
+      text-align: center; }
+    /* line 49, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html body {
+      margin: 8px; }
+    /* line 50, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html h1 {
+      font-size: 2em;
+      margin: .67em 0; }
+    /* line 51, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html h2 {
+      font-size: 1.5em;
+      margin: .75em 0; }
+    /* line 52, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html h3 {
+      font-size: 1.17em;
+      margin: .83em 0; }
+    /* line 62, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html h4, .x-reset .x-html p, .x-reset .x-html blockquote, .x-reset .x-html ul, .x-reset .x-html fieldset, .x-reset .x-html form, .x-reset .x-html ol, .x-reset .x-html dl, .x-reset .x-html dir, .x-reset .x-html menu {
+      margin: 1.12em 0; }
+    /* line 63, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html h5 {
+      font-size: .83em;
+      margin: 1.5em 0; }
+    /* line 64, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html h6 {
+      font-size: .75em;
+      margin: 1.67em 0; }
+    /* line 72, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html h1, .x-reset .x-html h2, .x-reset .x-html h3, .x-reset .x-html h4, .x-reset .x-html h5, .x-reset .x-html h6, .x-reset .x-html b, .x-reset .x-html strong {
+      font-weight: bolder; }
+    /* line 73, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html blockquote {
+      margin-left: 40px;
+      margin-right: 40px; }
+    /* line 78, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html i, .x-reset .x-html cite, .x-reset .x-html em, .x-reset .x-html var, .x-reset .x-html address {
+      font-style: italic; }
+    /* line 83, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html pre, .x-reset .x-html tt, .x-reset .x-html code, .x-reset .x-html kbd, .x-reset .x-html samp {
+      font-family: monospace; }
+    /* line 84, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html pre {
+      white-space: pre; }
+    /* line 88, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html button, .x-reset .x-html textarea, .x-reset .x-html input, .x-reset .x-html select {
+      display: inline-block; }
+    /* line 89, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html big {
+      font-size: 1.17em; }
+    /* line 92, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html small, .x-reset .x-html sub, .x-reset .x-html sup {
+      font-size: .83em; }
+    /* line 93, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html sub {
+      vertical-align: sub; }
+    /* line 94, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html sup {
+      vertical-align: super; }
+    /* line 95, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html table {
+      border-spacing: 2px; }
+    /* line 98, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html thead, .x-reset .x-html tbody, .x-reset .x-html tfoot {
+      vertical-align: middle; }
+    /* line 100, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html td, .x-reset .x-html th {
+      vertical-align: inherit; }
+    /* line 103, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html s, .x-reset .x-html strike, .x-reset .x-html del {
+      text-decoration: line-through; }
+    /* line 104, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html hr {
+      border: 1px inset; }
+    /* line 109, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html ol, .x-reset .x-html ul, .x-reset .x-html dir, .x-reset .x-html menu, .x-reset .x-html dd {
+      margin-left: 40px; }
+    /* line 110, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html ul, .x-reset .x-html menu, .x-reset .x-html dir {
+      list-style-type: disc; }
+    /* line 111, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html ol {
+      list-style-type: decimal; }
+    /* line 115, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html ol ul, .x-reset .x-html ul ol, .x-reset .x-html ul ul, .x-reset .x-html ol ol {
+      margin-top: 0;
+      margin-bottom: 0; }
+    /* line 117, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html u, .x-reset .x-html ins {
+      text-decoration: underline; }
+    /* line 118, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html br:before {
+      content: "\A"; }
+    /* line 119, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html :before, .x-reset .x-html :after {
+      white-space: pre-line; }
+    /* line 120, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html center {
+      text-align: center; }
+    /* line 121, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html :link, .x-reset .x-html :visited {
+      text-decoration: underline; }
+    /* line 122, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html :focus {
+      outline: invert dotted thin; }
+    /* line 125, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html BDO[DIR="ltr"] {
+      direction: ltr;
+      unicode-bidi: bidi-override; }
+    /* line 126, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html BDO[DIR="rtl"] {
+      direction: rtl;
+      unicode-bidi: bidi-override; }
+
+/* line 5, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-default-top {
+  height: 21px; }
+/* line 8, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-default-bottom {
+  height: 21px; }
+/* line 13, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tip-anchor {
+  width: 10px;
+  height: 10px; }
+/* line 19, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-form-text {
+  height: 22px; }
+/* line 23, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset textarea.x-form-field {
+  height: auto; }
+/* line 27, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-field-default-toolbar .x-form-text {
+  height: 20px; }
+/* line 32, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-form-trigger {
+  height: 22px; }
+/* line 36, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-field-default-toolbar .x-form-trigger {
+  height: 20px; }
+/* line 43, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset.x-ie9 .x-grid-header-ct {
+  padding-left: 1px; }
+
+/* line 55, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-webkit .x-reset *:focus {
+  outline: none !important; }
+/* line 61, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-webkit .x-reset .x-form-empty-field {
+  line-height: 15px; }
+/* line 66, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-webkit .x-reset .x-fieldset-header {
+  padding-top: 1px; }
+
+/* Top Tabs */
+/* line 118, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-bar-top .x-tab-bar-body {
+  height: 25px; }
+/* line 122, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-bar-top .x-tab-bar-strip {
+  height: 3px; }
+
+/* line 118, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-bar-top .x-tab-bar-body-default-plain {
+  height: 22px; }
+/* line 122, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-bar-top .x-tab-bar-strip-default-plain {
+  height: 3px; }
+
+/* Bottom Tabs */
+/* line 134, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-bar-bottom .x-tab-bar-body {
+  height: 25px; }
+/* line 138, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-bar-bottom .x-tab-bar-strip {
+  height: 3px; }
+
+/* line 134, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain {
+  height: 23px; }
+/* line 138, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-bar-bottom .x-tab-bar-strip-default-plain {
+  height: 3px; }
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-ie-scoped.css
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-ie-scoped.css	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-ie-scoped.css	(revision 18277)
@@ -0,0 +1,21 @@
+/*
+This file is part of Ext JS 4.1
+
+Copyright (c) 2011-2012 Sencha Inc
+
+Contact:  http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2012-07-04 21:11:01 (65ff594cd80b9bad45df640c22cc0adb52c95a7b)
+*/
+.x-border-box .x-reset,.x-border-box .x-reset *{box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box}.x-reset html,.x-reset body,.x-reset div,.x-reset dl,.x-reset dt,.x-reset dd,.x-reset ul,.x-reset ol,.x-reset li,.x-reset h1,.x-reset h2,.x-reset h3,.x-reset h4,.x-reset h5,.x-reset h6,.x-reset pre,.x-reset code,.x-reset form,.x-reset fieldset,.x-reset legend,.x-reset input,.x-reset textarea,.x-reset p,.x-reset blockquote,.x-reset th,.x-reset td{margin:0;padding:0}.x-reset table{border-collapse:collapse;border-spacing:0}.x-reset fieldset,.x-reset img{border:0}.x-reset address,.x-reset caption,.x-reset cite,.x-reset code,.x-reset dfn,.x-reset em,.x-reset strong,.x-reset th,.x-reset var{font-style:normal;font-weight:normal}.x-reset li{list-style:none}.x-reset caption,.x-reset th{text-align:left}.x-reset h1,.x-reset h2,.x-reset h3,.x-reset h4,.x-reset h5,.x-reset h6{font-size:100%}.x-reset q:before,.x-reset q:after{content:""}.x-reset abbr,.x-reset acronym{border:0;font-variant:normal}.x-reset sup{vertical-align:text-top}.x-reset sub{vertical-align:text-bottom}.x-reset input,.x-reset textarea,.x-reset select{font-family:inherit;font-size:inherit;font-weight:inherit}.x-reset *:focus{outline:0}.x-body{color:black;font-size:12px;font-family:tahoma,arial,verdana,sans-serif}.x-rtl{direction:rtl}.x-ltr{direction:ltr}.x-clear{overflow:hidden;clear:both;font-size:0;line-height:0;display:table}.x-strict .x-ie7 .x-clear{height:0;width:0}.x-layer{position:absolute!important;overflow:hidden;zoom:1}.x-shim{position:absolute;left:0;top:0;overflow:hidden;filter:alpha(opacity=0);opacity:0}.x-hide-display{display:none!important}.x-hide-visibility{visibility:hidden!important}.x-item-disabled .x-form-item-label,.x-item-disabled .x-form-field,.x-item-disabled .x-form-cb-label,.x-item-disabled .x-form-trigger{filter:alpha(opacity=30);opacity:.3}.x-ie6 .x-item-disabled{filter:none}.x-hidden,.x-hide-offsets{display:block!important;visibility:hidden!important;position:absolute!important;left:-10000px!important;top:-10000px!important}.x-hide-nosize{height:0!important;width:0!important}.x-masked-relative{position:relative}.x-ie6 .x-masked select,.x-ie6.x-body-masked select{visibility:hidden!important}.x-css-shadow{position:absolute;-moz-border-radius:5px 5px;-webkit-border-radius:5px 5px;-o-border-radius:5px 5px;-ms-border-radius:5px 5px;-khtml-border-radius:5px 5px;border-radius:5px 5px}.x-ie-shadow{background-color:#777;display:none;position:absolute;overflow:hidden;zoom:1}.x-box-tl{background:transparent no-repeat 0 0;zoom:1}.x-box-tc{height:8px;background:transparent repeat-x 0 0;overflow:hidden}.x-box-tr{background:transparent no-repeat right -8px}.x-box-ml{background:transparent repeat-y 0;padding-left:4px;overflow:hidden;zoom:1}.x-box-mc{background:repeat-x 0 -16px;padding:4px 10px}.x-box-mc h3{margin:0 0 4px 0;zoom:1}.x-box-mr{background:transparent repeat-y right;padding-right:4px;overflow:hidden}.x-box-bl{background:transparent no-repeat 0 -16px;zoom:1}.x-box-bc{background:transparent repeat-x 0 -8px;height:8px;overflow:hidden}.x-box-br{background:transparent no-repeat right -24px}.x-box-tl,.x-box-bl{padding-left:8px;overflow:hidden}.x-box-tr,.x-box-br{padding-right:8px;overflow:hidden}.x-box-tl{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-tc{background-image:url('../../resources/themes/images/default/box/tb.gif')}.x-box-tr{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-ml{background-image:url('../../resources/themes/images/default/box/l.gif')}.x-box-mc{background-color:#eee;background-image:url('../../resources/themes/images/default/box/tb.gif');font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:15px}.x-box-mc h3{font-size:18px;font-weight:bold}.x-box-mr{background-image:url('../../resources/themes/images/default/box/r.gif')}.x-box-bl{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-bc{background-image:url('../../resources/themes/images/default/box/tb.gif')}.x-box-br{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-blue .x-box-bl,.x-box-blue .x-box-br,.x-box-blue .x-box-tl,.x-box-blue .x-box-tr{background-image:url('../../resources/themes/images/default/box/corners-blue.gif')}.x-box-blue .x-box-bc,.x-box-blue .x-box-mc,.x-box-blue .x-box-tc{background-image:url('../../resources/themes/images/default/box/tb-blue.gif')}.x-box-blue .x-box-mc{background-color:#c3daf9}.x-box-blue .x-box-mc h3{color:#17385b}.x-box-blue .x-box-ml{background-image:url('../../resources/themes/images/default/box/l-blue.gif')}.x-box-blue .x-box-mr{background-image:url('../../resources/themes/images/default/box/r-blue.gif')}.x-container{zoom:1}.x-container:before{content:"";clear:both;display:table}table.x-container:before,tbody.x-container:before,tr.x-container:before{display:none}.x-focus-element{position:absolute;top:-10px;left:-10px;width:0;height:0}.x-focus-frame{position:absolute;left:0;top:0;z-index:100000000;width:0;height:0}.x-focus-frame-top,.x-focus-frame-bottom,.x-focus-frame-left,.x-focus-frame-right{position:absolute;top:0;left:0}.x-focus-frame-top,.x-focus-frame-bottom{border-top:solid 2px #15428b;height:2px}.x-focus-frame-left,.x-focus-frame-right{border-left:solid 2px #15428b;width:2px}.x-mask{z-index:100;position:absolute;top:0;left:0;filter:alpha(opacity=50);opacity:.5;width:100%;height:100%;zoom:1;background:#ccc}.x-mask-msg{z-index:20001;position:absolute;top:0;left:0;padding:2px;border:1px solid;border-color:#99bce8}.x-mask-msg div{padding:5px 10px 5px 25px;background-image:url('../../resources/themes/images/default/grid/loading.gif');background-repeat:no-repeat;background-position:5px center;cursor:wait;border:1px solid #a3bad9;background-color:#eee;color:#222;font:normal 11px tahoma,arial,verdana,sans-serif}.x-reset .x-boundlist{border-width:1px;border-style:solid;border-color:#98c0f4;background:white}.x-reset .x-boundlist .x-toolbar{border-width:1px 0 0 0}.x-reset .x-strict .x-ie6 .x-boundlist-list-ct,.x-reset .x-strict .x-ie7 .x-boundlist-list-ct{position:relative}.x-reset .x-boundlist-item{padding:2px;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;cursor:pointer;cursor:hand;position:relative;border-width:1px;border-style:dotted;border-color:white}.x-reset .x-boundlist-selected{background:#cbdaf0;border-color:#8eabe4}.x-reset .x-boundlist-item-over{background:#dfe8f6;border-color:#a3bae9}.x-reset .x-boundlist-floating{border-top-width:0}.x-reset .x-boundlist-above{border-top-width:1px;border-bottom-width:1px}.x-reset .x-btn{display:inline-block;zoom:1;*display:inline;position:relative;cursor:pointer;cursor:hand;white-space:nowrap;vertical-align:middle;background-repeat:no-repeat}.x-reset .x-btn *{cursor:pointer;cursor:hand}.x-reset .x-btn em{background-repeat:no-repeat}.x-reset .x-btn em a{text-decoration:none;display:block;color:inherit;width:100%;zoom:1}.x-reset .x-btn button{width:100%;display:block;margin:0;padding:0;border:0;background:0;outline:0 none;overflow:hidden;vertical-align:bottom;-webkit-appearance:none}.x-reset .x-btn button::-moz-focus-inner{border:0;padding:0}.x-reset .x-btn .x-btn-inner{display:block;white-space:nowrap;background-color:transparent;background-repeat:no-repeat;background-position:left center;overflow:hidden}.x-reset .x-btn .x-btn-left .x-btn-inner{text-align:left}.x-reset .x-btn .x-btn-center .x-btn-inner{text-align:center}.x-reset .x-btn .x-btn-right .x-btn-inner{text-align:right}.x-reset .x-btn-disabled span{filter:alpha(opacity=50);opacity:.5}.x-ie6 .x-reset .x-btn-disabled span,.x-ie7 .x-reset .x-btn-disabled span{filter:none}.x-reset .x-ie7 .x-btn-disabled,.x-reset .x-ie8 .x-btn-disabled{filter:none}.x-reset .x-ie6 .x-btn-disabled .x-btn-icon,.x-reset .x-ie7 .x-btn-disabled .x-btn-icon,.x-reset .x-ie8 .x-btn-disabled .x-btn-icon{filter:alpha(opacity=60);opacity:.6}.x-reset .x-ie9 .x-btn button{overflow:visible!important}.x-reset * html .x-ie .x-btn button{width:1px}.x-reset .x-ie .x-btn button{overflow-x:visible;vertical-align:baseline}.x-reset .x-strict .x-ie6 .x-btn .x-frame-mc,.x-reset .x-strict .x-ie7 .x-btn .x-frame-mc{height:100%}.x-reset .x-btn .x-frame-mc{vertical-align:middle;white-space:nowrap;cursor:pointer}.x-reset .x-btn-noicon .x-frame-mc{text-align:center}.x-reset .x-btn-icon-text-left .x-btn-icon{background-position:left center}.x-reset .x-btn-icon-text-right .x-btn-icon{background-position:right center}.x-reset .x-btn-icon-text-top .x-btn-icon{background-position:center top}.x-reset .x-btn-icon-text-bottom .x-btn-icon{background-position:center bottom}.x-reset .x-btn button,.x-reset .x-btn a{position:relative}.x-reset .x-btn button .x-btn-icon,.x-reset .x-btn a .x-btn-icon{position:absolute;background-repeat:no-repeat}.x-reset .x-btn-arrow-right{background:transparent no-repeat right center;padding-right:12px}.x-reset .x-btn-arrow-right .x-btn-inner{padding-right:0!important}.x-reset .x-toolbar .x-btn-arrow-right{padding-right:12px}.x-reset .x-btn-arrow-bottom{background:transparent no-repeat center bottom;padding-bottom:12px}.x-reset .x-btn-arrow{background-image:url('../../resources/themes/images/default/button/arrow.gif');display:block}.x-reset .x-btn-split-right,.x-reset .x-btn-over .x-btn-split-right{background:transparent no-repeat right center;background-image:url('../../resources/themes/images/default/button/s-arrow.gif');padding-right:14px!important}.x-reset .x-btn-split-bottom,.x-reset .x-btn-over .x-btn-split-bottom{background:transparent no-repeat center bottom;background-image:url('../../resources/themes/images/default/button/s-arrow-b.gif');padding-bottom:14px}.x-reset .x-toolbar .x-btn-split-right{background-image:url('../../resources/themes/images/default/button/s-arrow-noline.gif');padding-right:12px!important}.x-reset .x-toolbar .x-btn-split-bottom{background-image:url('../../resources/themes/images/default/button/s-arrow-b-noline.gif')}.x-reset .x-btn-split{display:block}.x-reset .x-item-disabled,.x-reset .x-item-disabled *{cursor:default}.x-reset .x-cycle-fixed-width .x-btn-inner{text-align:inherit}.x-reset .x-btn-over .x-btn-split-right{background-image:url('../../resources/themes/images/default/button/s-arrow-o.gif')}.x-reset .x-btn-over .x-btn-split-bottom{background-image:url('../../resources/themes/images/default/button/s-arrow-bo.gif')}.x-reset .x-btn-default-small{border-color:#d1d1d1}.x-reset .x-btn-default-small{padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:white}.x-reset .x-nlg .x-btn-default-small-mc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-bg.gif');background-color:white}.x-reset .x-nbr .x-btn-default-small{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-reset .x-nbr .x-btn-default-small-tl,.x-reset .x-nbr .x-btn-default-small-bl,.x-reset .x-nbr .x-btn-default-small-tr,.x-reset .x-nbr .x-btn-default-small-br,.x-reset .x-nbr .x-btn-default-small-tc,.x-reset .x-nbr .x-btn-default-small-bc,.x-reset .x-nbr .x-btn-default-small-ml,.x-reset .x-nbr .x-btn-default-small-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-small-corners.gif')}.x-reset .x-nbr .x-btn-default-small-ml,.x-reset .x-nbr .x-btn-default-small-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-small-sides.gif');background-position:0 0}.x-reset .x-nbr .x-btn-default-small-mc{padding:0}.x-reset .x-strict .x-ie7 .x-btn-default-small-tl,.x-reset .x-strict .x-ie7 .x-btn-default-small-bl{position:relative;right:0}.x-reset .x-btn-default-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 4px}.x-reset .x-btn-default-small-icon button,.x-reset .x-btn-default-small-icon a,.x-reset .x-btn-default-small-icon .x-btn-inner,.x-reset .x-btn-default-small-noicon button,.x-reset .x-btn-default-small-noicon a,.x-reset .x-btn-default-small-noicon .x-btn-inner{height:16px;line-height:16px}.x-reset .x-btn-default-small-icon button,.x-reset .x-btn-default-small-icon a{padding:0}.x-reset .x-btn-default-small-icon .x-btn-inner{width:16px;padding:0}.x-reset .x-btn-default-small-icon .x-btn-icon{width:16px;height:16px;top:0;left:0;bottom:0;right:0}.x-reset .x-btn-default-small-icon-text-left button,.x-reset .x-btn-default-small-icon-text-left a{height:16px}.x-reset .x-btn-default-small-icon-text-left .x-btn-inner{height:16px;line-height:16px;padding-left:20px}.x-reset .x-btn-default-small-icon-text-left .x-btn-icon{width:16px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-reset .x-btn-default-small-icon-text-left .x-btn-icon,.x-quirks .x-reset .x-btn-default-small-icon-text-left .x-btn-icon{height:16px}.x-reset .x-btn-default-small-icon-text-right button,.x-reset .x-btn-default-small-icon-text-right a{height:16px}.x-reset .x-btn-default-small-icon-text-right .x-btn-inner{height:16px;line-height:16px;padding-right:20px!important}.x-reset .x-btn-default-small-icon-text-right .x-btn-icon{width:16px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-small-icon-text-right .x-btn-icon,.x-quirks .x-reset .x-btn-default-small-icon-text-right .x-btn-icon{height:16px}.x-reset .x-btn-default-small-icon-text-top .x-btn-inner{padding-top:20px}.x-reset .x-btn-default-small-icon-text-top .x-btn-icon{width:auto;height:16px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-reset .x-btn-default-small-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-small-icon-text-top .x-btn-icon{width:16px}.x-reset .x-btn-default-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-reset .x-btn-default-small-icon-text-bottom .x-btn-icon{width:auto;height:16px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-small-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-small-icon-text-bottom .x-btn-icon{width:16px}.x-reset .x-btn-default-small-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-reset .x-btn-default-small-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-reset .x-btn-default-small-menu-active,.x-reset .x-btn-default-small-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-ms-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-reset .x-btn-default-small-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-ms-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-reset .x-btn-default-small-disabled .x-btn-inner{color:#333!important}.x-reset .x-ie .x-btn-default-small-disabled .x-btn-inner{color:#595959!important}.x-reset .x-ie6 .x-btn-default-small-disabled .x-btn-inner{color:#8c8c8c!important}.x-reset .x-nbr .x-btn-default-small-over .x-frame-tl,.x-reset .x-nbr .x-btn-default-small-over .x-frame-bl,.x-reset .x-nbr .x-btn-default-small-over .x-frame-tr,.x-reset .x-nbr .x-btn-default-small-over .x-frame-br,.x-reset .x-nbr .x-btn-default-small-over .x-frame-tc,.x-reset .x-nbr .x-btn-default-small-over .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-over-corners.gif')}.x-reset .x-nbr .x-btn-default-small-over .x-frame-ml,.x-reset .x-nbr .x-btn-default-small-over .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-small-over-sides.gif')}.x-reset .x-nbr .x-btn-default-small-over .x-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-small-over-bg.gif')}.x-reset .x-nbr .x-btn-default-small-focus .x-frame-tl,.x-reset .x-nbr .x-btn-default-small-focus .x-frame-bl,.x-reset .x-nbr .x-btn-default-small-focus .x-frame-tr,.x-reset .x-nbr .x-btn-default-small-focus .x-frame-br,.x-reset .x-nbr .x-btn-default-small-focus .x-frame-tc,.x-reset .x-nbr .x-btn-default-small-focus .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-focus-corners.gif')}.x-reset .x-nbr .x-btn-default-small-focus .x-frame-ml,.x-reset .x-nbr .x-btn-default-small-focus .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-small-focus-sides.gif')}.x-reset .x-nbr .x-btn-default-small-focus .x-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-small-focus-bg.gif')}.x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-tl,.x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-bl,.x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-tr,.x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-br,.x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-tc,.x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-bc,.x-reset .x-nbr .x-btn-default-small-pressed .x-frame-tl,.x-reset .x-nbr .x-btn-default-small-pressed .x-frame-bl,.x-reset .x-nbr .x-btn-default-small-pressed .x-frame-tr,.x-reset .x-nbr .x-btn-default-small-pressed .x-frame-br,.x-reset .x-nbr .x-btn-default-small-pressed .x-frame-tc,.x-reset .x-nbr .x-btn-default-small-pressed .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-pressed-corners.gif')}.x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-ml,.x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-mr,.x-reset .x-nbr .x-btn-default-small-pressed .x-frame-ml,.x-reset .x-nbr .x-btn-default-small-pressed .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-small-pressed-sides.gif')}.x-reset .x-nbr .x-btn-default-small-menu-active .x-frame-mc,.x-reset .x-nbr .x-btn-default-small-pressed .x-frame-mc{background-color:#b6cbe4;background-image:url('../../resources/themes/images/default/btn/btn-default-small-pressed-bg.gif')}.x-reset .x-nbr .x-btn-default-small-disabled .x-frame-tl,.x-reset .x-nbr .x-btn-default-small-disabled .x-frame-bl,.x-reset .x-nbr .x-btn-default-small-disabled .x-frame-tr,.x-reset .x-nbr .x-btn-default-small-disabled .x-frame-br,.x-reset .x-nbr .x-btn-default-small-disabled .x-frame-tc,.x-reset .x-nbr .x-btn-default-small-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-disabled-corners.gif')}.x-reset .x-nbr .x-btn-default-small-disabled .x-frame-ml,.x-reset .x-nbr .x-btn-default-small-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-small-disabled-sides.gif')}.x-reset .x-nbr .x-btn-default-small-disabled .x-frame-mc{background-color:#f7f7f7;background-image:url('../../resources/themes/images/default/btn/btn-default-small-disabled-bg.gif')}.x-reset .x-nlg .x-btn-default-small{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-bg.gif')}.x-reset .x-nlg .x-btn-default-small-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-over-bg.gif')}.x-reset .x-nlg .x-btn-default-small-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-focus-bg.gif')}.x-reset .x-nlg .x-btn-default-small-menu-active,.x-reset .x-nlg .x-btn-default-small-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-pressed-bg.gif')}.x-reset .x-nlg .x-btn-default-small-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-disabled-bg.gif')}.x-reset .x-btn-default-medium{border-color:#d1d1d1}.x-reset .x-btn-default-medium{padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:white}.x-reset .x-nlg .x-btn-default-medium-mc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif');background-color:white}.x-reset .x-nbr .x-btn-default-medium{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-reset .x-nbr .x-btn-default-medium-tl,.x-reset .x-nbr .x-btn-default-medium-bl,.x-reset .x-nbr .x-btn-default-medium-tr,.x-reset .x-nbr .x-btn-default-medium-br,.x-reset .x-nbr .x-btn-default-medium-tc,.x-reset .x-nbr .x-btn-default-medium-bc,.x-reset .x-nbr .x-btn-default-medium-ml,.x-reset .x-nbr .x-btn-default-medium-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-corners.gif')}.x-reset .x-nbr .x-btn-default-medium-ml,.x-reset .x-nbr .x-btn-default-medium-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-sides.gif');background-position:0 0}.x-reset .x-nbr .x-btn-default-medium-mc{padding:1px 1px 1px 1px}.x-reset .x-strict .x-ie7 .x-btn-default-medium-tl,.x-reset .x-strict .x-ie7 .x-btn-default-medium-bl{position:relative;right:0}.x-reset .x-btn-default-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-reset .x-btn-default-medium-icon button,.x-reset .x-btn-default-medium-icon a,.x-reset .x-btn-default-medium-icon .x-btn-inner,.x-reset .x-btn-default-medium-noicon button,.x-reset .x-btn-default-medium-noicon a,.x-reset .x-btn-default-medium-noicon .x-btn-inner{height:24px;line-height:24px}.x-reset .x-btn-default-medium-icon button,.x-reset .x-btn-default-medium-icon a{padding:0}.x-reset .x-btn-default-medium-icon .x-btn-inner{width:24px;padding:0}.x-reset .x-btn-default-medium-icon .x-btn-icon{width:24px;height:24px;top:0;left:0;bottom:0;right:0}.x-reset .x-btn-default-medium-icon-text-left button,.x-reset .x-btn-default-medium-icon-text-left a{height:24px}.x-reset .x-btn-default-medium-icon-text-left .x-btn-inner{height:24px;line-height:24px;padding-left:28px}.x-reset .x-btn-default-medium-icon-text-left .x-btn-icon{width:24px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-reset .x-btn-default-medium-icon-text-left .x-btn-icon,.x-quirks .x-reset .x-btn-default-medium-icon-text-left .x-btn-icon{height:24px}.x-reset .x-btn-default-medium-icon-text-right button,.x-reset .x-btn-default-medium-icon-text-right a{height:24px}.x-reset .x-btn-default-medium-icon-text-right .x-btn-inner{height:24px;line-height:24px;padding-right:28px!important}.x-reset .x-btn-default-medium-icon-text-right .x-btn-icon{width:24px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-medium-icon-text-right .x-btn-icon,.x-quirks .x-reset .x-btn-default-medium-icon-text-right .x-btn-icon{height:24px}.x-reset .x-btn-default-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-reset .x-btn-default-medium-icon-text-top .x-btn-icon{width:auto;height:24px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-reset .x-btn-default-medium-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-medium-icon-text-top .x-btn-icon{width:24px}.x-reset .x-btn-default-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-reset .x-btn-default-medium-icon-text-bottom .x-btn-icon{width:auto;height:24px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-medium-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-medium-icon-text-bottom .x-btn-icon{width:24px}.x-reset .x-btn-default-medium-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-reset .x-btn-default-medium-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-reset .x-btn-default-medium-menu-active,.x-reset .x-btn-default-medium-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-ms-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-reset .x-btn-default-medium-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-ms-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-reset .x-btn-default-medium-disabled .x-btn-inner{color:#333!important}.x-reset .x-ie .x-btn-default-medium-disabled .x-btn-inner{color:#595959!important}.x-reset .x-ie6 .x-btn-default-medium-disabled .x-btn-inner{color:#8c8c8c!important}.x-reset .x-nbr .x-btn-default-medium-over .x-frame-tl,.x-reset .x-nbr .x-btn-default-medium-over .x-frame-bl,.x-reset .x-nbr .x-btn-default-medium-over .x-frame-tr,.x-reset .x-nbr .x-btn-default-medium-over .x-frame-br,.x-reset .x-nbr .x-btn-default-medium-over .x-frame-tc,.x-reset .x-nbr .x-btn-default-medium-over .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-over-corners.gif')}.x-reset .x-nbr .x-btn-default-medium-over .x-frame-ml,.x-reset .x-nbr .x-btn-default-medium-over .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-over-sides.gif')}.x-reset .x-nbr .x-btn-default-medium-over .x-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-over-bg.gif')}.x-reset .x-nbr .x-btn-default-medium-focus .x-frame-tl,.x-reset .x-nbr .x-btn-default-medium-focus .x-frame-bl,.x-reset .x-nbr .x-btn-default-medium-focus .x-frame-tr,.x-reset .x-nbr .x-btn-default-medium-focus .x-frame-br,.x-reset .x-nbr .x-btn-default-medium-focus .x-frame-tc,.x-reset .x-nbr .x-btn-default-medium-focus .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-focus-corners.gif')}.x-reset .x-nbr .x-btn-default-medium-focus .x-frame-ml,.x-reset .x-nbr .x-btn-default-medium-focus .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-focus-sides.gif')}.x-reset .x-nbr .x-btn-default-medium-focus .x-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-focus-bg.gif')}.x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-tl,.x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-bl,.x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-tr,.x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-br,.x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-tc,.x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-bc,.x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-tl,.x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-bl,.x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-tr,.x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-br,.x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-tc,.x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-pressed-corners.gif')}.x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-ml,.x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-mr,.x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-ml,.x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-pressed-sides.gif')}.x-reset .x-nbr .x-btn-default-medium-menu-active .x-frame-mc,.x-reset .x-nbr .x-btn-default-medium-pressed .x-frame-mc{background-color:#b6cbe4;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif')}.x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-tl,.x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-bl,.x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-tr,.x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-br,.x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-tc,.x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-disabled-corners.gif')}.x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-ml,.x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-disabled-sides.gif')}.x-reset .x-nbr .x-btn-default-medium-disabled .x-frame-mc{background-color:#f7f7f7;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif')}.x-reset .x-nlg .x-btn-default-medium{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif')}.x-reset .x-nlg .x-btn-default-medium-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-over-bg.gif')}.x-reset .x-nlg .x-btn-default-medium-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-focus-bg.gif')}.x-reset .x-nlg .x-btn-default-medium-menu-active,.x-reset .x-nlg .x-btn-default-medium-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif')}.x-reset .x-nlg .x-btn-default-medium-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif')}.x-reset .x-btn-default-large{border-color:#d1d1d1}.x-reset .x-btn-default-large{padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:white}.x-reset .x-nlg .x-btn-default-large-mc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-bg.gif');background-color:white}.x-reset .x-nbr .x-btn-default-large{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-reset .x-nbr .x-btn-default-large-tl,.x-reset .x-nbr .x-btn-default-large-bl,.x-reset .x-nbr .x-btn-default-large-tr,.x-reset .x-nbr .x-btn-default-large-br,.x-reset .x-nbr .x-btn-default-large-tc,.x-reset .x-nbr .x-btn-default-large-bc,.x-reset .x-nbr .x-btn-default-large-ml,.x-reset .x-nbr .x-btn-default-large-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-large-corners.gif')}.x-reset .x-nbr .x-btn-default-large-ml,.x-reset .x-nbr .x-btn-default-large-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-large-sides.gif');background-position:0 0}.x-reset .x-nbr .x-btn-default-large-mc{padding:1px 1px 1px 1px}.x-reset .x-strict .x-ie7 .x-btn-default-large-tl,.x-reset .x-strict .x-ie7 .x-btn-default-large-bl{position:relative;right:0}.x-reset .x-btn-default-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-reset .x-btn-default-large-icon button,.x-reset .x-btn-default-large-icon a,.x-reset .x-btn-default-large-icon .x-btn-inner,.x-reset .x-btn-default-large-noicon button,.x-reset .x-btn-default-large-noicon a,.x-reset .x-btn-default-large-noicon .x-btn-inner{height:32px;line-height:32px}.x-reset .x-btn-default-large-icon button,.x-reset .x-btn-default-large-icon a{padding:0}.x-reset .x-btn-default-large-icon .x-btn-inner{width:32px;padding:0}.x-reset .x-btn-default-large-icon .x-btn-icon{width:32px;height:32px;top:0;left:0;bottom:0;right:0}.x-reset .x-btn-default-large-icon-text-left button,.x-reset .x-btn-default-large-icon-text-left a{height:32px}.x-reset .x-btn-default-large-icon-text-left .x-btn-inner{height:32px;line-height:32px;padding-left:36px}.x-reset .x-btn-default-large-icon-text-left .x-btn-icon{width:32px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-reset .x-btn-default-large-icon-text-left .x-btn-icon,.x-quirks .x-reset .x-btn-default-large-icon-text-left .x-btn-icon{height:32px}.x-reset .x-btn-default-large-icon-text-right button,.x-reset .x-btn-default-large-icon-text-right a{height:32px}.x-reset .x-btn-default-large-icon-text-right .x-btn-inner{height:32px;line-height:32px;padding-right:36px!important}.x-reset .x-btn-default-large-icon-text-right .x-btn-icon{width:32px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-large-icon-text-right .x-btn-icon,.x-quirks .x-reset .x-btn-default-large-icon-text-right .x-btn-icon{height:32px}.x-reset .x-btn-default-large-icon-text-top .x-btn-inner{padding-top:36px}.x-reset .x-btn-default-large-icon-text-top .x-btn-icon{width:auto;height:32px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-reset .x-btn-default-large-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-large-icon-text-top .x-btn-icon{width:32px}.x-reset .x-btn-default-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-reset .x-btn-default-large-icon-text-bottom .x-btn-icon{width:auto;height:32px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-large-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-large-icon-text-bottom .x-btn-icon{width:32px}.x-reset .x-btn-default-large-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-reset .x-btn-default-large-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-reset .x-btn-default-large-menu-active,.x-reset .x-btn-default-large-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-ms-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-reset .x-btn-default-large-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-ms-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-reset .x-btn-default-large-disabled .x-btn-inner{color:#333!important}.x-reset .x-ie .x-btn-default-large-disabled .x-btn-inner{color:#595959!important}.x-reset .x-ie6 .x-btn-default-large-disabled .x-btn-inner{color:#8c8c8c!important}.x-reset .x-nbr .x-btn-default-large-over .x-frame-tl,.x-reset .x-nbr .x-btn-default-large-over .x-frame-bl,.x-reset .x-nbr .x-btn-default-large-over .x-frame-tr,.x-reset .x-nbr .x-btn-default-large-over .x-frame-br,.x-reset .x-nbr .x-btn-default-large-over .x-frame-tc,.x-reset .x-nbr .x-btn-default-large-over .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-over-corners.gif')}.x-reset .x-nbr .x-btn-default-large-over .x-frame-ml,.x-reset .x-nbr .x-btn-default-large-over .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-large-over-sides.gif')}.x-reset .x-nbr .x-btn-default-large-over .x-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-large-over-bg.gif')}.x-reset .x-nbr .x-btn-default-large-focus .x-frame-tl,.x-reset .x-nbr .x-btn-default-large-focus .x-frame-bl,.x-reset .x-nbr .x-btn-default-large-focus .x-frame-tr,.x-reset .x-nbr .x-btn-default-large-focus .x-frame-br,.x-reset .x-nbr .x-btn-default-large-focus .x-frame-tc,.x-reset .x-nbr .x-btn-default-large-focus .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-focus-corners.gif')}.x-reset .x-nbr .x-btn-default-large-focus .x-frame-ml,.x-reset .x-nbr .x-btn-default-large-focus .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-large-focus-sides.gif')}.x-reset .x-nbr .x-btn-default-large-focus .x-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-large-focus-bg.gif')}.x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-tl,.x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-bl,.x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-tr,.x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-br,.x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-tc,.x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-bc,.x-reset .x-nbr .x-btn-default-large-pressed .x-frame-tl,.x-reset .x-nbr .x-btn-default-large-pressed .x-frame-bl,.x-reset .x-nbr .x-btn-default-large-pressed .x-frame-tr,.x-reset .x-nbr .x-btn-default-large-pressed .x-frame-br,.x-reset .x-nbr .x-btn-default-large-pressed .x-frame-tc,.x-reset .x-nbr .x-btn-default-large-pressed .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-pressed-corners.gif')}.x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-ml,.x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-mr,.x-reset .x-nbr .x-btn-default-large-pressed .x-frame-ml,.x-reset .x-nbr .x-btn-default-large-pressed .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-large-pressed-sides.gif')}.x-reset .x-nbr .x-btn-default-large-menu-active .x-frame-mc,.x-reset .x-nbr .x-btn-default-large-pressed .x-frame-mc{background-color:#b6cbe4;background-image:url('../../resources/themes/images/default/btn/btn-default-large-pressed-bg.gif')}.x-reset .x-nbr .x-btn-default-large-disabled .x-frame-tl,.x-reset .x-nbr .x-btn-default-large-disabled .x-frame-bl,.x-reset .x-nbr .x-btn-default-large-disabled .x-frame-tr,.x-reset .x-nbr .x-btn-default-large-disabled .x-frame-br,.x-reset .x-nbr .x-btn-default-large-disabled .x-frame-tc,.x-reset .x-nbr .x-btn-default-large-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-disabled-corners.gif')}.x-reset .x-nbr .x-btn-default-large-disabled .x-frame-ml,.x-reset .x-nbr .x-btn-default-large-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-large-disabled-sides.gif')}.x-reset .x-nbr .x-btn-default-large-disabled .x-frame-mc{background-color:#f7f7f7;background-image:url('../../resources/themes/images/default/btn/btn-default-large-disabled-bg.gif')}.x-reset .x-nlg .x-btn-default-large{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-bg.gif')}.x-reset .x-nlg .x-btn-default-large-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-over-bg.gif')}.x-reset .x-nlg .x-btn-default-large-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-focus-bg.gif')}.x-reset .x-nlg .x-btn-default-large-menu-active,.x-reset .x-nlg .x-btn-default-large-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-pressed-bg.gif')}.x-reset .x-nlg .x-btn-default-large-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-disabled-bg.gif')}.x-reset .x-btn-default-toolbar-small{border-color:transparent}.x-reset .x-btn-default-toolbar-small{padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:transparent}.x-reset .x-nlg .x-btn-default-toolbar-small-mc{background-color:transparent}.x-reset .x-nbr .x-btn-default-toolbar-small{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-reset .x-nbr .x-btn-default-toolbar-small-tl,.x-reset .x-nbr .x-btn-default-toolbar-small-bl,.x-reset .x-nbr .x-btn-default-toolbar-small-tr,.x-reset .x-nbr .x-btn-default-toolbar-small-br,.x-reset .x-nbr .x-btn-default-toolbar-small-tc,.x-reset .x-nbr .x-btn-default-toolbar-small-bc,.x-reset .x-nbr .x-btn-default-toolbar-small-ml,.x-reset .x-nbr .x-btn-default-toolbar-small-mr{zoom:1}.x-reset .x-nbr .x-btn-default-toolbar-small-ml,.x-reset .x-nbr .x-btn-default-toolbar-small-mr{zoom:1}.x-reset .x-nbr .x-btn-default-toolbar-small-mc{padding:0}.x-reset .x-strict .x-ie7 .x-btn-default-toolbar-small-tl,.x-reset .x-strict .x-ie7 .x-btn-default-toolbar-small-bl{position:relative;right:0}.x-reset .x-btn-default-toolbar-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 4px}.x-reset .x-btn-default-toolbar-small-icon button,.x-reset .x-btn-default-toolbar-small-icon a,.x-reset .x-btn-default-toolbar-small-icon .x-btn-inner,.x-reset .x-btn-default-toolbar-small-noicon button,.x-reset .x-btn-default-toolbar-small-noicon a,.x-reset .x-btn-default-toolbar-small-noicon .x-btn-inner{height:16px;line-height:16px}.x-reset .x-btn-default-toolbar-small-icon button,.x-reset .x-btn-default-toolbar-small-icon a{padding:0}.x-reset .x-btn-default-toolbar-small-icon .x-btn-inner{width:16px;padding:0}.x-reset .x-btn-default-toolbar-small-icon .x-btn-icon{width:16px;height:16px;top:0;left:0;bottom:0;right:0}.x-reset .x-btn-default-toolbar-small-icon-text-left button,.x-reset .x-btn-default-toolbar-small-icon-text-left a{height:16px}.x-reset .x-btn-default-toolbar-small-icon-text-left .x-btn-inner{height:16px;line-height:16px;padding-left:20px}.x-reset .x-btn-default-toolbar-small-icon-text-left .x-btn-icon{width:16px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-reset .x-btn-default-toolbar-small-icon-text-left .x-btn-icon,.x-quirks .x-reset .x-btn-default-toolbar-small-icon-text-left .x-btn-icon{height:16px}.x-reset .x-btn-default-toolbar-small-icon-text-right button,.x-reset .x-btn-default-toolbar-small-icon-text-right a{height:16px}.x-reset .x-btn-default-toolbar-small-icon-text-right .x-btn-inner{height:16px;line-height:16px;padding-right:20px!important}.x-reset .x-btn-default-toolbar-small-icon-text-right .x-btn-icon{width:16px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-small-icon-text-right .x-btn-icon,.x-quirks .x-reset .x-btn-default-toolbar-small-icon-text-right .x-btn-icon{height:16px}.x-reset .x-btn-default-toolbar-small-icon-text-top .x-btn-inner{padding-top:20px}.x-reset .x-btn-default-toolbar-small-icon-text-top .x-btn-icon{width:auto;height:16px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-small-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-toolbar-small-icon-text-top .x-btn-icon{width:16px}.x-reset .x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-reset .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon{width:auto;height:16px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon{width:16px}.x-reset .x-btn-default-toolbar-small-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-reset .x-btn-default-toolbar-small-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-reset .x-btn-default-toolbar-small-menu-active,.x-reset .x-btn-default-toolbar-small-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-ms-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-reset .x-btn-default-toolbar-small-disabled{background-image:none;background-color:transparent}.x-reset .x-btn-default-toolbar-small-disabled .x-btn-inner{color:#333!important}.x-reset .x-ie .x-btn-default-toolbar-small-disabled .x-btn-inner{color:#595959!important}.x-reset .x-ie6 .x-btn-default-toolbar-small-disabled .x-btn-inner{color:#8c8c8c!important}.x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-corners.gif')}.x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-sides.gif')}.x-reset .x-nbr .x-btn-default-toolbar-small-over .x-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif')}.x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-corners.gif')}.x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-sides.gif')}.x-reset .x-nbr .x-btn-default-toolbar-small-focus .x-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif')}.x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bc,.x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-corners.gif')}.x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mr,.x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-sides.gif')}.x-reset .x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mc,.x-reset .x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mc{background-color:#bccfe5;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif')}.x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-disabled-corners.gif')}.x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-disabled-sides.gif')}.x-reset .x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mc{background-color:transparent}.x-reset .x-nlg .x-btn-default-toolbar-small-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif')}.x-reset .x-nlg .x-btn-default-toolbar-small-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif')}.x-reset .x-nlg .x-btn-default-toolbar-small-menu-active,.x-reset .x-nlg .x-btn-default-toolbar-small-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif')}.x-reset .x-btn-default-toolbar-medium{border-color:transparent}.x-reset .x-btn-default-toolbar-medium{padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-reset .x-nlg .x-btn-default-toolbar-medium-mc{background-color:transparent}.x-reset .x-nbr .x-btn-default-toolbar-medium{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-reset .x-nbr .x-btn-default-toolbar-medium-tl,.x-reset .x-nbr .x-btn-default-toolbar-medium-bl,.x-reset .x-nbr .x-btn-default-toolbar-medium-tr,.x-reset .x-nbr .x-btn-default-toolbar-medium-br,.x-reset .x-nbr .x-btn-default-toolbar-medium-tc,.x-reset .x-nbr .x-btn-default-toolbar-medium-bc,.x-reset .x-nbr .x-btn-default-toolbar-medium-ml,.x-reset .x-nbr .x-btn-default-toolbar-medium-mr{zoom:1}.x-reset .x-nbr .x-btn-default-toolbar-medium-ml,.x-reset .x-nbr .x-btn-default-toolbar-medium-mr{zoom:1}.x-reset .x-nbr .x-btn-default-toolbar-medium-mc{padding:1px 1px 1px 1px}.x-reset .x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,.x-reset .x-strict .x-ie7 .x-btn-default-toolbar-medium-bl{position:relative;right:0}.x-reset .x-btn-default-toolbar-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-reset .x-btn-default-toolbar-medium-icon button,.x-reset .x-btn-default-toolbar-medium-icon a,.x-reset .x-btn-default-toolbar-medium-icon .x-btn-inner,.x-reset .x-btn-default-toolbar-medium-noicon button,.x-reset .x-btn-default-toolbar-medium-noicon a,.x-reset .x-btn-default-toolbar-medium-noicon .x-btn-inner{height:24px;line-height:24px}.x-reset .x-btn-default-toolbar-medium-icon button,.x-reset .x-btn-default-toolbar-medium-icon a{padding:0}.x-reset .x-btn-default-toolbar-medium-icon .x-btn-inner{width:24px;padding:0}.x-reset .x-btn-default-toolbar-medium-icon .x-btn-icon{width:24px;height:24px;top:0;left:0;bottom:0;right:0}.x-reset .x-btn-default-toolbar-medium-icon-text-left button,.x-reset .x-btn-default-toolbar-medium-icon-text-left a{height:24px}.x-reset .x-btn-default-toolbar-medium-icon-text-left .x-btn-inner{height:24px;line-height:24px;padding-left:28px}.x-reset .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon{width:24px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-reset .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon,.x-quirks .x-reset .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon{height:24px}.x-reset .x-btn-default-toolbar-medium-icon-text-right button,.x-reset .x-btn-default-toolbar-medium-icon-text-right a{height:24px}.x-reset .x-btn-default-toolbar-medium-icon-text-right .x-btn-inner{height:24px;line-height:24px;padding-right:28px!important}.x-reset .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon{width:24px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon,.x-quirks .x-reset .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon{height:24px}.x-reset .x-btn-default-toolbar-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-reset .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon{width:auto;height:24px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon{width:24px}.x-reset .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-reset .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon{width:auto;height:24px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon{width:24px}.x-reset .x-btn-default-toolbar-medium-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-reset .x-btn-default-toolbar-medium-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-reset .x-btn-default-toolbar-medium-menu-active,.x-reset .x-btn-default-toolbar-medium-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-ms-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-reset .x-btn-default-toolbar-medium-disabled{background-image:none;background-color:transparent}.x-reset .x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#333!important}.x-reset .x-ie .x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#595959!important}.x-reset .x-ie6 .x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#8c8c8c!important}.x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-corners.gif')}.x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-sides.gif')}.x-reset .x-nbr .x-btn-default-toolbar-medium-over .x-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif')}.x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-corners.gif')}.x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-sides.gif')}.x-reset .x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif')}.x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bc,.x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-corners.gif')}.x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mr,.x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-sides.gif')}.x-reset .x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mc,.x-reset .x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mc{background-color:#bccfe5;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif')}.x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-corners.gif')}.x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-sides.gif')}.x-reset .x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mc{background-color:transparent}.x-reset .x-nlg .x-btn-default-toolbar-medium-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif')}.x-reset .x-nlg .x-btn-default-toolbar-medium-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif')}.x-reset .x-nlg .x-btn-default-toolbar-medium-menu-active,.x-reset .x-nlg .x-btn-default-toolbar-medium-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif')}.x-reset .x-btn-default-toolbar-large{border-color:transparent}.x-reset .x-btn-default-toolbar-large{padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-reset .x-nlg .x-btn-default-toolbar-large-mc{background-color:transparent}.x-reset .x-nbr .x-btn-default-toolbar-large{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-reset .x-nbr .x-btn-default-toolbar-large-tl,.x-reset .x-nbr .x-btn-default-toolbar-large-bl,.x-reset .x-nbr .x-btn-default-toolbar-large-tr,.x-reset .x-nbr .x-btn-default-toolbar-large-br,.x-reset .x-nbr .x-btn-default-toolbar-large-tc,.x-reset .x-nbr .x-btn-default-toolbar-large-bc,.x-reset .x-nbr .x-btn-default-toolbar-large-ml,.x-reset .x-nbr .x-btn-default-toolbar-large-mr{zoom:1}.x-reset .x-nbr .x-btn-default-toolbar-large-ml,.x-reset .x-nbr .x-btn-default-toolbar-large-mr{zoom:1}.x-reset .x-nbr .x-btn-default-toolbar-large-mc{padding:1px 1px 1px 1px}.x-reset .x-strict .x-ie7 .x-btn-default-toolbar-large-tl,.x-reset .x-strict .x-ie7 .x-btn-default-toolbar-large-bl{position:relative;right:0}.x-reset .x-btn-default-toolbar-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-reset .x-btn-default-toolbar-large-icon button,.x-reset .x-btn-default-toolbar-large-icon a,.x-reset .x-btn-default-toolbar-large-icon .x-btn-inner,.x-reset .x-btn-default-toolbar-large-noicon button,.x-reset .x-btn-default-toolbar-large-noicon a,.x-reset .x-btn-default-toolbar-large-noicon .x-btn-inner{height:32px;line-height:32px}.x-reset .x-btn-default-toolbar-large-icon button,.x-reset .x-btn-default-toolbar-large-icon a{padding:0}.x-reset .x-btn-default-toolbar-large-icon .x-btn-inner{width:32px;padding:0}.x-reset .x-btn-default-toolbar-large-icon .x-btn-icon{width:32px;height:32px;top:0;left:0;bottom:0;right:0}.x-reset .x-btn-default-toolbar-large-icon-text-left button,.x-reset .x-btn-default-toolbar-large-icon-text-left a{height:32px}.x-reset .x-btn-default-toolbar-large-icon-text-left .x-btn-inner{height:32px;line-height:32px;padding-left:36px}.x-reset .x-btn-default-toolbar-large-icon-text-left .x-btn-icon{width:32px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-reset .x-btn-default-toolbar-large-icon-text-left .x-btn-icon,.x-quirks .x-reset .x-btn-default-toolbar-large-icon-text-left .x-btn-icon{height:32px}.x-reset .x-btn-default-toolbar-large-icon-text-right button,.x-reset .x-btn-default-toolbar-large-icon-text-right a{height:32px}.x-reset .x-btn-default-toolbar-large-icon-text-right .x-btn-inner{height:32px;line-height:32px;padding-right:36px!important}.x-reset .x-btn-default-toolbar-large-icon-text-right .x-btn-icon{width:32px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-large-icon-text-right .x-btn-icon,.x-quirks .x-reset .x-btn-default-toolbar-large-icon-text-right .x-btn-icon{height:32px}.x-reset .x-btn-default-toolbar-large-icon-text-top .x-btn-inner{padding-top:36px}.x-reset .x-btn-default-toolbar-large-icon-text-top .x-btn-icon{width:auto;height:32px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-large-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-toolbar-large-icon-text-top .x-btn-icon{width:32px}.x-reset .x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-reset .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon{width:auto;height:32px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon{width:32px}.x-reset .x-btn-default-toolbar-large-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-reset .x-btn-default-toolbar-large-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-reset .x-btn-default-toolbar-large-menu-active,.x-reset .x-btn-default-toolbar-large-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-ms-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-reset .x-btn-default-toolbar-large-disabled{background-image:none;background-color:transparent}.x-reset .x-btn-default-toolbar-large-disabled .x-btn-inner{color:#333!important}.x-reset .x-ie .x-btn-default-toolbar-large-disabled .x-btn-inner{color:#595959!important}.x-reset .x-ie6 .x-btn-default-toolbar-large-disabled .x-btn-inner{color:#8c8c8c!important}.x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-corners.gif')}.x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-sides.gif')}.x-reset .x-nbr .x-btn-default-toolbar-large-over .x-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif')}.x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-corners.gif')}.x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-sides.gif')}.x-reset .x-nbr .x-btn-default-toolbar-large-focus .x-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif')}.x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bc,.x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-corners.gif')}.x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mr,.x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-sides.gif')}.x-reset .x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mc,.x-reset .x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mc{background-color:#bccfe5;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif')}.x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tl,.x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bl,.x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tr,.x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-br,.x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tc,.x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-disabled-corners.gif')}.x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-ml,.x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-disabled-sides.gif')}.x-reset .x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mc{background-color:transparent}.x-reset .x-nlg .x-btn-default-toolbar-large-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif')}.x-reset .x-nlg .x-btn-default-toolbar-large-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif')}.x-reset .x-nlg .x-btn-default-toolbar-large-menu-active,.x-reset .x-nlg .x-btn-default-toolbar-large-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif')}.x-reset .x-btn-default-toolbar-small-disabled,.x-reset .x-btn-default-toolbar-medium-disabled,.x-reset .x-btn-default-toolbar-large-disabled{border-color:transparent;background-image:none;background:transparent}.x-reset .x-btn-group{position:relative;overflow:hidden}.x-reset .x-btn-group-body{position:relative;zoom:1;padding:0 1px}.x-reset .x-btn-group-body .x-table-layout-cell{vertical-align:top}.x-reset .x-btn-group-header-text{white-space:nowrap}.x-reset .x-btn-group-default-framed{padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#d0def0}.x-reset .x-nlg .x-btn-group-default-framed-mc{background-color:#d0def0}.x-reset .x-nbr .x-btn-group-default-framed{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000202px 1000202px}.x-reset .x-nbr .x-btn-group-default-framed-tl,.x-reset .x-nbr .x-btn-group-default-framed-bl,.x-reset .x-nbr .x-btn-group-default-framed-tr,.x-reset .x-nbr .x-btn-group-default-framed-br,.x-reset .x-nbr .x-btn-group-default-framed-tc,.x-reset .x-nbr .x-btn-group-default-framed-bc,.x-reset .x-nbr .x-btn-group-default-framed-ml,.x-reset .x-nbr .x-btn-group-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn-group/btn-group-default-framed-corners.gif')}.x-reset .x-nbr .x-btn-group-default-framed-ml,.x-reset .x-nbr .x-btn-group-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn-group/btn-group-default-framed-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-btn-group-default-framed-mc{padding:0}.x-reset .x-strict .x-ie7 .x-btn-group-default-framed-tl,.x-reset .x-strict .x-ie7 .x-btn-group-default-framed-bl{position:relative;right:0}.x-reset .x-btn-group-default-framed{border-color:#b7c8d7;-moz-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-webkit-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-o-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset}.x-reset .x-btn-group-header-default-framed{margin:2px 2px 0 2px}.x-reset .x-btn-group-header-body-default-framed{padding:1px 0;background:#c2d8f0;-moz-border-radius-topleft:2px;-webkit-border-top-left-radius:2px;-o-border-top-left-radius:2px;-ms-border-top-left-radius:2px;-khtml-border-top-left-radius:2px;border-top-left-radius:2px;-moz-border-radius-topright:2px;-webkit-border-top-right-radius:2px;-o-border-top-right-radius:2px;-ms-border-top-right-radius:2px;-khtml-border-top-right-radius:2px;border-top-right-radius:2px}.x-reset .x-btn-group-header-text-default-framed{font:normal 11px tahoma,arial,verdana,sans-serif;color:#3e6aaa}.x-reset .x-datepicker{border:1px solid #1b376c;background-color:white;position:relative}.x-reset .x-datepicker a{-moz-outline:0 none;outline:0 none;color:#15428b;text-decoration:none;border-width:0}.x-reset .x-datepicker-inner,.x-reset .x-datepicker-inner td,.x-reset .x-datepicker-inner th{border-collapse:separate}.x-reset .x-datepicker-header{position:relative;height:26px;background-image:none;background-color:#23427c;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#264888),color-stop(100%,#1f3a6c));background-image:-webkit-linear-gradient(top,#264888,#1f3a6c);background-image:-moz-linear-gradient(top,#264888,#1f3a6c);background-image:-o-linear-gradient(top,#264888,#1f3a6c);background-image:-ms-linear-gradient(top,#264888,#1f3a6c);background-image:linear-gradient(top,#264888,#1f3a6c)}.x-reset .x-datepicker-prev,.x-reset .x-datepicker-next{position:absolute;top:5px;width:18px}.x-reset .x-datepicker-prev a,.x-reset .x-datepicker-next a{display:block;width:16px;height:16px;background-position:top;background-repeat:no-repeat;cursor:pointer;text-decoration:none!important;filter:alpha(opacity=70);opacity:.7}.x-reset .x-datepicker-prev a:hover,.x-reset .x-datepicker-next a:hover{filter:alpha(opacity=100);opacity:1}.x-reset .x-datepicker-next{right:5px}.x-reset .x-datepicker-next a{background-image:url('../../resources/themes/images/default/shared/right-btn.gif')}.x-reset .x-datepicker-prev{left:5px}.x-reset .x-datepicker-prev a{background-image:url('../../resources/themes/images/default/shared/left-btn.gif')}.x-reset .x-item-disabled .x-datepicker-prev a:hover,.x-reset .x-item-disabled .x-datepicker-next a:hover{filter:alpha(opacity=60);opacity:.6}.x-reset .x-datepicker-month{padding-top:3px}.x-reset .x-datepicker-month .x-btn,.x-reset .x-datepicker-month button,.x-reset .x-datepicker-month .x-btn-tc,.x-reset .x-datepicker-month .x-btn-tl,.x-reset .x-datepicker-month .x-btn-tr,.x-reset .x-datepicker-month .x-btn-mc,.x-reset .x-datepicker-month .x-btn-ml,.x-reset .x-datepicker-month .x-btn-mr,.x-reset .x-datepicker-month .x-btn-bc,.x-reset .x-datepicker-month .x-btn-bl,.x-reset .x-datepicker-month .x-btn-br{background:transparent!important;border-width:0!important}.x-reset .x-datepicker-month span{color:#fff!important}.x-reset .x-datepicker-month .x-btn-split-right{background-image:url('../../resources/themes/images/default/button/s-arrow-light.gif');padding-right:12px}.x-reset .x-datepicker-next{text-align:right}.x-reset .x-datepicker-month{text-align:center}.x-reset .x-datepicker-month button{color:white!important}.x-reset table.x-datepicker-inner{width:100%;table-layout:fixed}.x-reset table.x-datepicker-inner th{width:25px;height:19px;padding:0;color:#233d6d;font:normal 10px tahoma,arial,verdana,sans-serif;text-align:right;border-bottom:1px solid #b2d1f5;border-collapse:separate;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#edf4fd),color-stop(100%,#cde1f9));background-image:-webkit-linear-gradient(top,#edf4fd,#cde1f9);background-image:-moz-linear-gradient(top,#edf4fd,#cde1f9);background-image:-o-linear-gradient(top,#edf4fd,#cde1f9);background-image:-ms-linear-gradient(top,#edf4fd,#cde1f9);background-image:linear-gradient(top,#edf4fd,#cde1f9);cursor:default}.x-reset table.x-datepicker-inner th span{display:block;padding-right:7px}.x-reset table.x-datepicker-inner tr{height:20px}.x-reset table.x-datepicker-inner td{border:1px solid;height:17px;border-color:white;text-align:right;padding:0}.x-reset table.x-datepicker-inner a{padding-right:4px;display:block;zoom:1;font:normal 11px tahoma,arial,verdana,sans-serif;color:black;text-decoration:none;text-align:right}.x-reset table.x-datepicker-inner .x-datepicker-active{cursor:pointer;color:black}.x-reset table.x-datepicker-inner .x-datepicker-selected a{background:repeat-x left top;background-color:#dae5f3;border:1px solid #8db2e3}.x-reset table.x-datepicker-inner .x-datepicker-selected span{font-weight:bold}.x-reset table.x-datepicker-inner .x-datepicker-today a{border:1px solid;border-color:darkred}.x-reset table.x-datepicker-inner .x-datepicker-prevday a,.x-reset table.x-datepicker-inner .x-datepicker-nextday a{text-decoration:none!important;color:#aaa}.x-reset table.x-datepicker-inner a:hover,.x-reset table.x-datepicker-inner .x-datepicker-disabled a:hover{text-decoration:none!important;color:#000;background-color:#ddecfe}.x-reset table.x-datepicker-inner .x-datepicker-disabled a{cursor:default;background-color:#eee;color:#bbb}.x-reset .x-datepicker-footer,.x-reset .x-monthpicker-buttons{position:relative;border-top:1px solid #b2d1f5;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dee8f5),color-stop(49%,#d1dff0),color-stop(51%,#c7d8ed),color-stop(100%,#cbdaee));background-image:-webkit-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-moz-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-o-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-ms-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);text-align:center}.x-reset .x-datepicker-footer .x-btn,.x-reset .x-monthpicker-buttons .x-btn{position:relative;margin:4px}.x-reset .x-item-disabled .x-datepicker-inner a:hover{background:0}.x-reset .x-datepicker .x-monthpicker{position:absolute;left:0;top:0}.x-reset .x-monthpicker{border:1px solid #1b376c;background-color:white}.x-reset .x-monthpicker-months,.x-reset .x-monthpicker-years{float:left;height:167px;width:88px}.x-reset .x-monthpicker-item{float:left;margin:4px 0 5px 0;font:normal 11px tahoma,arial,verdana,sans-serif;text-align:center;vertical-align:middle;height:18px;width:43px;border:0 none}.x-reset .x-monthpicker-item a{display:block;margin:0 5px;text-decoration:none;color:#15428b;border:1px solid white;line-height:17px}.x-reset .x-monthpicker-item a:hover{background-color:#ddecfe}.x-reset .x-monthpicker-item a.x-monthpicker-selected{background-color:#dfecfb;border:1px solid #8db2e3}.x-reset .x-monthpicker-months{border-right:1px solid #1b376c;width:87px}.x-reset .x-monthpicker-years .x-monthpicker-item{width:44px}.x-reset .x-monthpicker-yearnav{height:28px}.x-reset .x-monthpicker-yearnav button{background-image:url('../../resources/themes/images/default/tools/tool-sprites.gif');height:15px;width:15px;padding:0;margin:6px 12px 5px 15px;border:0;outline:0 none}.x-reset .x-monthpicker-yearnav button::-moz-focus-inner{border:0;padding:0}.x-reset .x-monthpicker-yearnav-next{background-position:0 -120px}.x-reset .x-monthpicker-yearnav-next-over{cursor:pointer;cursor:hand;background-position:-15px -120px}.x-reset .x-monthpicker-yearnav-prev{background-position:0 -105px}.x-reset .x-monthpicker-yearnav-prev-over{cursor:pointer;cursor:hand;background-position:-15px -105px}.x-reset .x-monthpicker-small .x-monthpicker-item{margin:2px 0 2px 0}.x-reset .x-monthpicker-small .x-monthpicker-yearnav{height:23px}.x-reset .x-monthpicker-small .x-monthpicker-months,.x-reset .x-monthpicker-small .x-monthpicker-years{height:136px}.x-reset .x-quirks .x-ie7 .x-monthpicker-buttons .x-btn,.x-reset .x-quirks .x-ie8 .x-monthpicker-buttons .x-btn{margin-top:2px}.x-reset .x-quirks .x-monthpicker-small .x-monthpicker-yearnav button{margin-top:3px;margin-bottom:3px}.x-reset .x-ie6 .x-monthpicker-small .x-monthpicker-yearnav button{margin-top:3px;margin-bottom:3px}.x-reset .x-nlg .x-datepicker-header{background-image:url('../../resources/themes/images/default/datepicker/datepicker-header-bg.gif');background-repeat:repeat-x;background-position:top left}.x-reset .x-nlg .x-datepicker-footer,.x-reset .x-nlg .x-monthpicker-buttons{background-image:url('../../resources/themes/images/default/datepicker/datepicker-footer-bg.gif');background-repeat:repeat-x;background-position:top left}.x-reset .x-color-picker{width:144px;height:90px;cursor:pointer}.x-reset .x-color-picker a{border:1px solid #fff;float:left;padding:2px;text-decoration:none;-moz-outline:0 none;outline:0 none;cursor:pointer}.x-reset .x-color-picker a:hover,.x-reset .x-color-picker a.x-color-picker-selected{border-color:#8bb8f3;background-color:#deecfd}.x-reset .x-color-picker em{display:block;border:1px solid #aca899}.x-reset .x-color-picker em span{cursor:pointer;display:block;height:10px;width:10px;line-height:10px}.x-reset .x-menu-body{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;background:#f0f0f0!important;padding:2px}.x-reset .x-menu-item .x-form-text{user-select:text;-webkit-user-select:text;-o-user-select:text;-ie-user-select:text;-moz-user-select:text;-ie-user-select:text}.x-reset .x-menu-icon-separator{position:absolute;top:0;left:27px;z-index:0;border-left:solid 1px #e0e0e0;background-color:white;width:2px;overflow:hidden}.x-reset .x-menu-plain .x-menu-icon-separator{display:none}.x-reset .x-menu-focus{display:block;position:absolute;top:-10px;left:-10px;width:0;height:0}.x-reset .x-menu-item{white-space:nowrap;overflow:hidden;z-index:1}.x-reset .x-menu-item-cmp{margin-bottom:1px}.x-reset .x-menu-item-link{display:block;margin:1px;padding:6px 2px 3px 32px;text-decoration:none!important;line-height:16px;cursor:default}.x-reset .x-menu-item-icon{width:16px;height:16px;position:absolute;top:5px;left:4px;background:no-repeat center center}.x-reset .x-menu-item-icon-right{width:16px;height:16px;position:absolute;top:6px;right:4px;background:no-repeat center center}.x-reset .x-menu-item-text{font-size:11px;color:#222}.x-reset .x-menu-item-checked .x-menu-item-icon{background-image:url('../../resources/themes/images/default/menu/checked.gif')}.x-reset .x-menu-item-checked .x-menu-group-icon{background-image:url('../../resources/themes/images/default/menu/group-checked.gif')}.x-reset .x-menu-item-unchecked .x-menu-item-icon{background-image:url('../../resources/themes/images/default/menu/unchecked.gif')}.x-reset .x-menu-item-unchecked .x-menu-group-icon{background-image:none}.x-reset .x-menu-item-separator{height:2px;border-top:solid 1px #e0e0e0;background-color:white;margin:2px 0;overflow:hidden}.x-reset .x-menu-item-arrow{position:absolute;width:12px;height:9px;top:9px;right:0;background:no-repeat center center;background-image:url('../../resources/themes/images/default/menu/menu-parent.gif')}.x-reset .x-menu-item-indent{margin-left:31px}.x-reset .x-menu-item-active{cursor:pointer}.x-reset .x-menu-item-active .x-menu-item-link{background-image:none;background-color:#d9e8fb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e7f0fc),color-stop(100%,#c7ddf9));background-image:-webkit-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-moz-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-o-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-ms-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:linear-gradient(top,#e7f0fc,#c7ddf9);margin:0;border:1px solid #a9cbf5;cursor:pointer;-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px}.x-reset .x-menu-item-disabled{filter:alpha(opacity=50);opacity:.5}.x-reset .x-ie .x-menu-item-disabled .x-menu-item-icon{filter:alpha(opacity=50);opacity:.5}.x-reset .x-ie .x-menu-item-disabled .x-menu-item-text{background-color:transparent}.x-strict .x-ie7m .x-reset .x-ie .x-menu-icon-separator{width:1px}.x-strict .x-ie7m .x-reset .x-ie .x-menu-item-separator{height:1px}.x-reset .x-ie6 .x-menu-item-link,.x-reset .x-ie7 .x-menu-item-link,.x-reset .x-quirks .x-ie8 .x-menu-item-link{padding-bottom:2px}.x-reset .x-nlg .x-menu-item-active .x-menu-item-link{background:#d9e8fb repeat-x left top;background-image:url('../../resources/themes/images/default/menu/menu-item-active-bg.gif')}.x-reset .x-menu-date-item{border-color:#99bbe8}.x-reset .x-panel .x-grid-body{background:white;border-color:#99bce8;border-style:solid;border-width:1px;border-top-color:#c5c5c5}.x-reset .x-panel .x-grid-header-ct-hidden{visibility:hidden}.x-reset .x-grid-empty{padding:10px;color:gray;font:normal 11px tahoma,arial,helvetica,sans-serif}.x-reset .x-grid-header-hidden .x-grid-body{border-top-color:#99bce8!important}.x-reset .x-grid-view{overflow:hidden;position:relative}.x-reset .x-grid-table{table-layout:fixed;border-collapse:separate}.x-reset .x-autowidth-table table.x-grid-table{table-layout:auto;width:auto!important}.x-reset .x-grid-row .x-grid-table{border-collapse:collapse}.x-reset .x-grid-locked .x-grid-inner-locked{border-width:0 1px 0 0!important;border-style:solid}.x-reset .x-grid-header-ct{cursor:default;zoom:1;padding:0;border:1px solid #99bce8;border-bottom-color:#c5c5c5}.x-reset .x-accordion-item .x-grid-header-ct{border-width:0 0 1px 0!important}.x-reset .x-column-header{padding:0;position:absolute;overflow:hidden;border-right:1px solid #c5c5c5;border-left:0 none;border-top:0 none;border-bottom:0 none;text-shadow:0 1px 0 rgba(255,255,255,0.3);color:null;font:normal 11px tahoma,arial,verdana,sans-serif}.x-reset .x-group-header{padding:0;border-left-width:0}.x-reset .x-group-sub-header{background:transparent;border-top:1px solid #c5c5c5;border-left-width:0}.x-reset .x-column-header-inner{zoom:1;position:relative;white-space:nowrap;line-height:15px;padding:3px 6px 4px}.x-reset .x-column-header-inner .x-column-header-text{white-space:nowrap}.x-reset .x-column-header-over,.x-reset .x-column-header-sort-ASC,.x-reset .x-column-header-sort-DESC{border-left-color:#aaccf6;border-right-color:#aaccf6}.x-reset .x-nlg .x-grid-header-ct,.x-reset .x-nlg .x-column-header{background:repeat-x 0 top;background-image:url('../../resources/themes/images/default/grid/column-header-bg.gif')}.x-reset .x-nlg .x-column-header-over,.x-reset .x-nlg .x-column-header-sort-ASC,.x-reset .x-nlg .x-column-header-sort-DESC{background:#ebf3fd repeat-x 0 top;background-image:url('../../resources/themes/images/default/grid/column-header-over-bg.gif')}.x-reset .x-column-header-trigger{display:none;height:100%;width:14px;background:no-repeat left center;background-color:#c3daf9;background-image:url('../../resources/themes/images/default/grid/grid3-hd-btn.gif');position:absolute;right:0;top:0;z-index:2;cursor:pointer}.x-reset .x-column-header-over .x-column-header-trigger,.x-reset .x-column-header-open .x-column-header-trigger{display:block}.x-reset .x-column-header-align-right{text-align:right}.x-reset .x-column-header-align-right .x-column-header-text{padding-right:.5ex;margin-right:6px}.x-reset .x-column-header-align-center{text-align:center}.x-reset .x-column-header-align-left{text-align:left}.x-reset .x-column-header-sort-ASC .x-column-header-text{padding-right:16px;background:no-repeat right 6px;background-image:url('../../resources/themes/images/default/grid/sort_asc.gif')}.x-reset .x-column-header-sort-DESC .x-column-header-text{padding-right:16px;background:no-repeat right 6px;background-image:url('../../resources/themes/images/default/grid/sort_desc.gif')}.x-reset .x-grid-row{vertical-align:top}.x-reset .x-grid-row .x-grid-cell{color:null;font:normal 11px/15px tahoma,arial,verdana,sans-serif;background-color:white;border-color:#ededed;border-style:solid;border-top-color:#fafafa;border-width:0}.x-reset .x-grid-with-row-lines .x-grid-cell{border-width:1px 0}.x-reset .x-grid-rowwrap-div{border-width:1px 0;border-color:#ededed;border-style:solid;border-top-color:#fafafa;overflow:hidden}.x-reset .x-grid-row-alt .x-grid-cell,.x-reset .x-grid-row-alt .x-grid-rowwrap-div{background-color:#fafafa}.x-reset .x-grid-row-over .x-grid-cell,.x-reset .x-grid-row-over .x-grid-rowwrap-div{border-color:#ddd;background-color:#efefef}.x-reset .x-grid-row-focused .x-grid-cell,.x-reset .x-grid-row-focused .x-grid-rowwrap-div{border-color:#ddd;background-color:#efefef}.x-reset .x-grid-row-selected .x-grid-cell,.x-reset .x-grid-row-selected .x-grid-rowwrap-div{border-style:dotted;border-color:#a3bae9;background-color:#dfe8f6!important}.x-reset .x-grid-rowwrap-div .x-grid-cell,.x-reset .x-grid-rowwrap-div .x-grid-cell-inner{border-width:0;background:transparent}.x-reset .x-grid-row-body-hidden{display:none}.x-reset .x-grid-rowbody{font:normal 11px/13px tahoma,arial,verdana,sans-serif;padding:4px}.x-reset .x-grid-rowbody p{margin:5px 5px 10px 5px}.x-reset .x-grid-cell{overflow:hidden}.x-reset .x-grid-cell-inner{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding:2px 6px 3px;white-space:nowrap}.x-reset .x-grid-with-row-lines .x-grid-cell-inner{line-height:13px;padding-bottom:4px}.x-reset .x-action-col-cell .x-grid-cell-inner{line-height:0;padding:2px}.x-reset .x-action-col-cell .x-item-disabled{filter:alpha(opacity=30);opacity:.3}.x-reset .x-grid-with-row-lines .x-action-col-cell .x-grid-cell-inner{padding-top:1px}.x-reset .x-grid-row .x-grid-cell-special{padding:0;border-right:1px solid #d0d0d0;background-image:none;background-color:#f6f6f6;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#f6f6f6),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-moz-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-o-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-ms-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:linear-gradient(left,#f6f6f6,#e9e9e9)}.x-reset .x-grid-row .x-grid-cell-row-checker{vertical-align:middle}.x-reset .x-ie6 .x-grid-header-row,.x-reset .x-ie7 .x-grid-header-row,.x-reset .x-quirks .x-ie8 .x-grid-header-row{position:absolute}.x-reset .x-grid-row-selected .x-grid-cell-special{border-right:1px solid #aaccf6;background-image:none;background-color:#dfe8f6;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dfe8f6),color-stop(100%,#cbdaf0));background-image:-webkit-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-moz-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-o-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-ms-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:linear-gradient(left,#dfe8f6,#cbdaf0)}.x-reset .x-grid-dirty-cell{background-image:url('../../resources/themes/images/default/grid/dirty.gif');background-position:0 0;background-repeat:no-repeat}.x-reset .x-grid-cell-selected{background-color:#b8cfee!important}.x-reset .x-nlg .x-grid-cell-special{background-repeat:repeat-y;background-position:top right}.x-reset .x-nlg .x-grid-row .x-grid-cell-special,.x-reset .x-nlg .x-grid-row-over .x-grid-cell-special{background-image:url('../../resources/themes/images/default/grid/cell-special-bg.gif')}.x-reset .x-nlg .x-grid-row-focused .x-grid-cell-special,.x-reset .x-nlg .x-grid-row-selected .x-grid-cell-special{background-image:url('../../resources/themes/images/default/grid/cell-special-selected-bg.gif')}.x-reset .x-grid-with-col-lines .x-grid-cell{padding-right:0;border-right:1px solid #d0d0d0}.x-reset .x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,.x-reset .x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner{padding-left:12px;background-image:url('../../resources/themes/images/default/grid/property-cell-bg.gif');background-repeat:no-repeat;background-position:-16px 2px}.x-reset .x-grid-with-row-lines.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,.x-reset .x-grid-with-row-lines.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner{background-position:-16px 1px}.x-reset .x-quirks .x-ie .x-grid-row .x-grid-property-name .x-grid-cell-inner{background-position:-16px 2px}.x-reset .x-unselectable{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-reset .x-grid-row-body-hidden{display:none}.x-reset .x-grid-group-collapsed{display:none}.x-reset .x-grid-view .x-grid-td-expander{vertical-align:top}.x-reset .x-grid-td-expander{background:repeat-y right transparent}.x-reset .x-grid-view .x-grid-td-expander .x-grid-cell-inner{padding:0!important}.x-reset .x-grid-row-expander{background-image:url('../../resources/themes/images/default/grid/group-collapse.gif');background-color:transparent;width:9px;height:13px;margin-left:3px;background-repeat:no-repeat;background-position:0 -2px}.x-reset .x-grid-row-collapsed .x-grid-row-expander{background-image:url('../../resources/themes/images/default/grid/group-expand.gif')}.x-reset .x-grid-resize-marker{position:absolute;z-index:5;top:0;width:1px;background-color:#0f0f0f}.x-reset .col-move-top,.x-reset .col-move-bottom{width:9px;height:9px;position:absolute;top:0;line-height:0;font-size:0;overflow:hidden;z-index:20000;background:no-repeat left top transparent}.x-reset .col-move-top{background-image:url('../../resources/themes/images/default/grid/col-move-top.gif')}.x-reset .col-move-bottom{background-image:url('../../resources/themes/images/default/grid/col-move-bottom.gif')}.x-reset .x-tbar-page-number{width:30px}.x-reset .x-grid-group,.x-reset .x-grid-group-body,.x-reset .x-grid-group-hd{zoom:1}.x-reset .x-grid-group-hd{padding-top:6px}.x-reset .x-grid-group-hd .x-grid-cell-inner{padding:10px 4px 4px 4px;background:white;border-width:0 0 2px 0;border-style:solid;border-color:#99bbe8;cursor:pointer}.x-reset .x-grid-group-hd-collapsible .x-grid-group-title{background:transparent no-repeat 0 -1px;background-image:url('../../resources/themes/images/default/grid/group-collapse.gif');padding:0 0 0 14px}.x-reset .x-grid-group-title{color:#3764a0;font:bold 11px tahoma,arial,verdana,sans-serif}.x-reset .x-grid-group-hd-collapsed .x-grid-group-title{background-image:url('../../resources/themes/images/default/grid/group-expand.gif')}.x-reset .x-grid-group-collapsed .x-grid-group-body{display:none}.x-reset .x-grid-group-collapsed .x-grid-group-title{background-image:url('../../resources/themes/images/default/grid/group-expand.gif')}.x-reset .x-group-by-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x-reset .x-show-groups-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x-reset .x-column-header-checkbox .x-column-header-inner{padding:0}.x-reset .x-grid-cell-special .x-grid-cell-inner{padding-left:4px;padding-right:4px}.x-reset .x-grid-row-checker,.x-reset .x-column-header-checkbox .x-column-header-text{height:14px;width:14px;line-height:0;background-image:url('../../resources/themes/images/default/grid/unchecked.gif');background-position:-1px -1px;background-repeat:no-repeat;background-color:transparent}.x-reset .x-column-header-checkbox .x-column-header-text{display:block;margin:0 5px}.x-reset .x-quirks .x-ie .x-grid-row-checker,.x-reset .x-quirks .x-ie .x-column-header-checkbox .x-column-header-text,.x-reset .x-ie7m .x-grid-row-checker,.x-reset .x-ie7m .x-column-header-checkbox .x-column-header-text{line-height:14px}.x-reset .x-grid-hd-checker-on .x-column-header-text{background-image:url('../../resources/themes/images/default/grid/checked.gif')}.x-reset .x-grid-cell-row-checker .x-grid-cell-inner{padding-top:4px;padding-bottom:2px;line-height:14px}.x-reset .x-grid-with-row-lines .x-grid-cell-row-checker .x-grid-cell-inner{padding-top:3px}.x-reset .x-grid-row-checker{margin-left:1px;background-position:50% -2px}.x-reset .x-grid-row-selected .x-grid-row-checker,.x-reset .x-grid-row-checked .x-grid-row-checker{background-image:url('../../resources/themes/images/default/grid/checked.gif')}.x-reset .x-tbar-page-first{background-image:url('../../resources/themes/images/default/grid/page-first.gif')!important}.x-reset .x-tbar-loading{background-image:url('../../resources/themes/images/default/grid/refresh.gif')!important}.x-reset .x-tbar-page-last{background-image:url('../../resources/themes/images/default/grid/page-last.gif')!important}.x-reset .x-tbar-page-next{background-image:url('../../resources/themes/images/default/grid/page-next.gif')!important}.x-reset .x-tbar-page-prev{background-image:url('../../resources/themes/images/default/grid/page-prev.gif')!important}.x-reset .x-item-disabled .x-tbar-loading{background-image:url('../../resources/themes/images/default/grid/refresh-disabled.gif')!important}.x-reset .x-item-disabled .x-tbar-page-first{background-image:url('../../resources/themes/images/default/grid/page-first-disabled.gif')!important}.x-reset .x-item-disabled .x-tbar-page-last{background-image:url('../../resources/themes/images/default/grid/page-last-disabled.gif')!important}.x-reset .x-item-disabled .x-tbar-page-next{background-image:url('../../resources/themes/images/default/grid/page-next-disabled.gif')!important}.x-reset .x-item-disabled .x-tbar-page-prev{background-image:url('../../resources/themes/images/default/grid/page-prev-disabled.gif')!important}.x-reset .x-hmenu-sort-asc .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-asc.gif')}.x-reset .x-hmenu-sort-desc .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-desc.gif')}.x-reset .x-hmenu-lock .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-lock.gif')}.x-reset .x-hmenu-unlock .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-unlock.gif')}.x-reset .x-group-by-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x-reset .x-cols-icon .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/columns.gif')}.x-reset .x-show-groups-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x-reset .x-grid-drop-indicator{position:absolute;height:1px;line-height:0;background-color:#77bc71;overflow:visible}.x-reset .x-grid-drop-indicator .x-grid-drop-indicator-left{position:absolute;top:-8px;left:-12px;background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-right.png');height:16px;width:16px}.x-reset .x-grid-drop-indicator .x-grid-drop-indicator-right{position:absolute;top:-8px;right:-11px;background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-left.png');height:16px;width:16px}.x-reset .x-ie6 .x-grid-drop-indicator-left{background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-right.gif')}.x-reset .x-ie6 .x-grid-drop-indicator-right{background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-left.gif')}.x-reset .x-grid-editor .x-form-text{padding:0 4px}.x-reset .x-grid-editor .x-form-cb-wrap{padding-top:3px}.x-reset .x-grid-row-editor{position:absolute!important;z-index:1;zoom:1;overflow:visible!important}.x-reset .x-grid-row-editor .x-form-text{padding:0 2px}.x-reset .x-grid-row-editor .x-form-cb-wrap{padding-top:0}.x-reset .x-grid-row-editor .x-form-checkbox{margin-left:-4px}.x-reset .x-grid-row-editor .x-form-display-field{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding-top:0;padding-left:2px}.x-reset .x-grid-row-editor .x-panel-body{background-color:#eaf1fb;border-top:1px solid #99bce8!important;border-bottom:1px solid #99bce8!important}.x-reset .x-grid-editor .x-form-cb-wrap,.x-reset .x-grid-row-editor .x-form-cb-wrap{text-align:center}.x-reset .x-grid-editor .x-form-trigger,.x-reset .x-grid-row-editor .x-form-trigger{height:19px}.x-reset .x-grid-editor .x-form-trigger-wrap .x-form-spinner-up,.x-reset .x-grid-editor .x-form-trigger-wrap .x-form-spinner-down,.x-reset .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-up,.x-reset .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-down{background-image:url('../../resources/themes/images/default/form/spinner-small.gif');height:10px!important}.x-reset .x-grid-editor .x-form-text,.x-reset .x-grid-row-editor .x-form-text{font:normal 11px/15px tahoma,arial,verdana,sans-serif;height:18px}.x-reset .x-border-box .x-grid-editor .x-form-trigger,.x-reset .x-border-box .x-grid-row-editor .x-form-trigger{height:20px}.x-reset .x-border-box .x-grid-editor .x-form-text,.x-reset .x-border-box .x-grid-row-editor .x-form-text{height:20px;padding-bottom:1px}.x-reset .x-ie .x-grid-editor .x-form-text{padding-left:5px}.x-reset .x-ie .x-grid-row-editor .x-form-text{padding-left:3px}.x-reset .x-ie8m .x-grid-editor .x-form-text,.x-reset .x-ie8m .x-grid-row-editor .x-form-text{padding-top:1px}.x-reset .x-strict .x-ie6 .x-grid-editor .x-form-text,.x-reset .x-strict .x-ie6 .x-grid-row-editor .x-form-text,.x-reset .x-strict .x-ie7 .x-grid-editor .x-form-text,.x-reset .x-strict .x-ie7 .x-grid-row-editor .x-form-text{height:17px}.x-reset .x-quirks .x-ie9 .x-grid-editor .x-form-text,.x-reset .x-quirks .x-ie9 .x-grid-row-editor .x-form-text{line-height:17px}.x-reset .x-grid-row-editor-buttons{background-color:#eaf1fb;position:absolute;bottom:-31px;padding:4px;height:32px}.x-strict .x-ie7m .x-reset .x-grid-row-editor-buttons{width:192px;height:24px}.x-reset .x-grid-row-editor-buttons-ml,.x-reset .x-grid-row-editor-buttons-mr,.x-reset .x-grid-row-editor-buttons-bl,.x-reset .x-grid-row-editor-buttons-br,.x-reset .x-grid-row-editor-buttons-bc{position:absolute;overflow:hidden}.x-reset .x-grid-row-editor-buttons-bl,.x-reset .x-grid-row-editor-buttons-br{width:4px;height:4px;bottom:0;background-image:url('../../resources/themes/images/default/panel/panel-default-framed-corners.gif')}.x-reset .x-grid-row-editor-buttons-bl{left:0;background-position:0 -16px}.x-reset .x-grid-row-editor-buttons-br{right:0;background-position:0 -20px}.x-reset .x-grid-row-editor-buttons-bc{position:absolute;left:4px;bottom:0;width:192px;height:1px;background-color:#99bce8}.x-reset .x-grid-row-editor-buttons-ml,.x-reset .x-grid-row-editor-buttons-mr{height:27px;width:1px;top:1px;background-color:#99bce8}.x-reset .x-grid-row-editor-buttons-ml{left:0}.x-reset .x-grid-row-editor-buttons-mr{background-position:0 -20px;right:0}.x-reset .x-grid-row-editor-errors ul{margin-left:5px}.x-reset .x-grid-row-editor-errors li{list-style:disc;margin-left:15px}.x-reset .x-webkit *:focus{outline:none!important}.x-reset .x-form-item{vertical-align:top;table-layout:fixed}.x-reset .x-autocontainer-form-item,.x-reset .x-anchor-form-item,.x-reset .x-vbox-form-item,.x-reset .x-checkboxgroup-form-item,.x-reset .x-table-form-item{margin-bottom:5px}.x-reset .x-form-layout-table{border-collapse:separate;border-spacing:0 2px}.x-reset .x-form-item-body{position:relative}.x-reset .x-form-form-item td{border-top:1px solid transparent}.x-reset .x-ie6 .x-form-layout-table{border-collapse:collapse;border-spacing:0}.x-reset .x-ie6 .x-form-form-item td{border-top-width:0}.x-reset .x-ie6 td.x-form-item-pad{height:5px}.x-reset .x-editor .x-form-item-body{padding-bottom:0}.x-reset .x-form-item-label{display:block;padding:3px 0 0;font-size:12px;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-reset .x-form-item-label-top{display:block;zoom:1;padding:0 0 5px 0}.x-reset .x-form-item-label-right{text-align:right}.x-reset .x-form-invalid-under{padding:2px 2px 2px 18px;color:#c0272b;font:normal 11px tahoma,arial,verdana,sans-serif;line-height:16px;background:no-repeat 0 2px;background-image:url('../../resources/themes/images/default/form/exclamation.gif')}.x-reset .x-form-invalid-icon{width:18px;height:14px;background:no-repeat center center;background-image:url('../../resources/themes/images/default/form/exclamation.gif');overflow:hidden}.x-reset .x-form-invalid-icon ul{display:block;width:18px}.x-reset .x-form-invalid-icon ul li{display:none}.x-reset .x-lbl-top-err-icon{margin-bottom:4px}.x-reset .x-form-field,.x-reset .x-form-display-field{margin:0;font:normal 12px tahoma,arial,verdana,sans-serif;color:black}.x-reset .x-form-item-hidden{margin:0}.x-reset .x-form-text,.x-reset textarea.x-form-field{padding:1px 3px;background:repeat-x 0 0;border:1px solid;background-color:white;background-image:url('../../resources/themes/images/default/form/text-bg.gif');border-color:#b5b8c8}.x-reset .x-form-text{height:18px;line-height:15px;vertical-align:top}.x-reset .x-ie8m .x-form-text{line-height:15px}.x-reset .x-border-box .x-form-text{height:22px}.x-reset textarea.x-form-field{color:black;overflow:auto;height:auto;line-height:normal;background:repeat-x 0 0;background-color:white;background-image:url('../../resources/themes/images/default/form/text-bg.gif');resize:none}.x-reset .x-border-box textarea.x-form-field{height:auto}.x-reset .x-form-focus,.x-reset textarea.x-form-focus{border-color:#7eadd9}.x-reset .x-form-invalid-field,.x-reset textarea.x-form-invalid-field{background-color:white;background-image:url('../../resources/themes/images/default/grid/invalid_line.gif');background-repeat:repeat-x;background-position:bottom;border-color:#c30}.x-reset .x-form-item{font:normal 12px tahoma,arial,verdana,sans-serif}.x-reset .x-form-empty-field,.x-reset textarea.x-form-empty-field{color:gray}.x-reset .x-webkit .x-form-empty-field{line-height:15px}.x-reset .x-form-display-field{padding-top:3px}.x-reset .x-quirks .x-ie9p .x-form-text,.x-reset .x-ie7m .x-form-text{margin-top:-1px;margin-bottom:-1px}.x-reset .x-ie .x-form-file{height:23px;line-height:18px;vertical-align:middle}.x-reset .x-field-default-toolbar .x-form-text{height:16px}.x-reset .x-border-box .x-field-default-toolbar .x-form-text{height:20px}.x-reset .x-field-default-toolbar .x-form-item-label-left{padding-left:4px}.x-reset .x-fieldset{border:1px solid #b5b8c8;padding:10px;margin-bottom:10px;display:block;position:relative}.x-reset .x-ie .x-fieldset{padding-top:0}.x-reset .x-ie .x-fieldset .x-fieldset-body{padding-top:10px}.x-reset .x-fieldset-header-checkbox{line-height:14px}.x-reset .x-fieldset-header{font:11px/14px bold tahoma,arial,verdana,sans-serif;color:#15428b;padding:0 3px 1px;overflow:hidden}.x-reset .x-fieldset-header .x-fieldset-header-text{float:left;padding:1px 0}.x-reset .x-fieldset-header .x-fieldset-header-text-collapsible{cursor:pointer}.x-reset .x-fieldset-header .x-form-item,.x-reset .x-fieldset-header .x-tool{float:left;margin:1px 0 0 0}.x-reset .x-fieldset-header .x-form-cb-wrap{padding:1px 0;font-size:0;line-height:0}.x-reset .x-fieldset-with-title .x-fieldset-header-checkbox,.x-reset .x-fieldset-with-title .x-tool{margin-right:3px}.x-reset .x-webkit .x-fieldset-header{-webkit-padding-start:3px;-webkit-padding-end:3px}.x-reset .x-strict .x-ie8 .x-fieldset-header{margin-bottom:-1px}.x-reset .x-strict .x-ie8 .x-fieldset-header .x-tool,.x-reset .x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,.x-reset .x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox{position:relative;top:-1px}.x-reset .x-quirks .x-ie .x-fieldset-header,.x-reset .x-ie8m .x-fieldset-header{padding-left:1px;padding-right:1px}.x-reset .x-fieldset-collapsed .x-fieldset-body{display:none}.x-reset .x-fieldset-collapsed{padding-bottom:0!important;border-width:1px 1px 0 1px!important;border-left-color:transparent!important;border-right-color:transparent!important}.x-reset .x-ie6 .x-fieldset-collapsed{border-width:1px 0 0 0!important;padding-bottom:0!important;margin-left:1px;margin-right:1px}.x-reset .x-ie .x-fieldset-bwrap{zoom:1}.x-reset .x-ie .x-fieldset-noborder legend{position:relative;margin-bottom:23px}.x-reset .x-ie .x-fieldset-noborder legend span{position:absolute;left:16px}.x-reset .x-fieldset{overflow:hidden}.x-reset .x-fieldset-bwrap{overflow:hidden;zoom:1}.x-reset .x-fieldset-body{overflow:hidden}.x-reset .x-form-file-wrap .x-form-text{color:#777}.x-reset .x-form-file-wrap .x-form-file-btn{overflow:hidden}.x-reset .x-form-file-wrap .x-form-file-input{position:absolute;top:-4px;right:-2px;height:30px;filter:alpha(opacity=0);opacity:0;font-size:100px}.x-reset .x-form-cb-wrap{padding-top:3px}.x-reset .x-form-checkbox,.x-reset .x-form-radio{vertical-align:-1px;width:13px;height:13px;background:no-repeat;background-image:url('../../resources/themes/images/default/form/checkbox.gif');overflow:hidden;padding:0;border:0}.x-reset .x-form-checkbox::-moz-focus-inner,.x-reset .x-form-radio::-moz-focus-inner{padding:0;border:0}.x-reset .x-nbr.x-ie .x-form-checkbox,.x-reset .x-nbr.x-ie .x-form-radio{font-size:0}.x-reset .x-form-cb-checked .x-form-checkbox,.x-reset .x-form-cb-checked .x-form-radio{background-position:0 -13px}.x-reset .x-form-cb-focus{background-position:-13px 0}.x-reset .x-form-cb-checked .x-form-cb-focus{background-position:-13px -13px}.x-reset .x-form-radio{background-image:url('../../resources/themes/images/default/form/radio.gif')}.x-reset .x-form-cb-label-before{margin-right:4px}.x-reset .x-form-cb-label-after{margin-left:4px}.x-reset .x-form-checkboxgroup-body{padding:1px 4px 1px 4px}.x-reset .x-form-invalid .x-form-checkboxgroup-body{border:1px solid #c30!important;background:transparent repeat-x bottom;background-image:url('../../resources/themes/images/default/grid/invalid_line.gif');padding:1px 3px 0 3px}.x-reset .x-check-group-alt{background:#d1ddef;border-top:1px dotted #b5b8c8;border-bottom:1px dotted #b5b8c8}.x-reset .x-form-check-group-label{color:#333;border-bottom:1px solid #333;margin:0 30px 5px 0;padding:2px}.x-reset .x-form-trigger-wrap{vertical-align:top}.x-reset .x-form-trigger{background-image:url('../../resources/themes/images/default/form/trigger.gif');background-position:0 0;width:17px;height:21px;border-bottom:1px solid #b5b8c8;cursor:pointer;cursor:hand;overflow:hidden}.x-reset .x-border-box .x-form-trigger{height:22px}.x-reset .x-field-default-toolbar .x-form-trigger{height:19px}.x-reset .x-border-box .x-field-default-toolbar .x-form-trigger{height:20px}.x-reset .x-form-trigger-over{background-position:-17px 0;border-bottom-color:#7eadd9}.x-reset .x-form-trigger-wrap-focus .x-form-trigger{background-position:-51px 0;border-bottom-color:#7eadd9}.x-reset .x-form-trigger-wrap-focus .x-form-trigger-over{background-position:-68px 0;border-bottom-color:null}.x-reset .x-form-trigger-click,.x-reset .x-form-trigger-wrap-focus .x-form-trigger-click{background-position:-34px 0;border-bottom-color:null}.x-reset .x-form-trigger-icon{height:16px;background-repeat:no-repeat;background-position:7px 6px}.x-reset .x-pickerfield-open .x-form-field{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0}.x-reset .x-pickerfield-open-above .x-form-field{-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;-o-border-bottom-left-radius:3px;-ms-border-bottom-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0}.x-reset .x-form-arrow-trigger .x-form-trigger-icon{background-image:url('../../resources/themes/images/default/boundlist/trigger-arrow.png')}.x-reset .x-form-date-trigger{background-image:url('../../resources/themes/images/default/form/date-trigger.gif')}.x-reset .x-form-trigger-wrap .x-form-spinner-up,.x-reset .x-form-trigger-wrap .x-form-spinner-down{background-image:url('../../resources/themes/images/default/form/spinner.gif');width:17px!important;height:11px!important;font-size:0;border-bottom:0}.x-reset .x-form-trigger-wrap .x-form-spinner-down{background-position:0 -11px}.x-reset .x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -11px}.x-reset .x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -11px}.x-reset .x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -11px}.x-reset .x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -11px}.x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-up,.x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down{background-image:url('../../resources/themes/images/default/form/spinner-small.gif');height:10px!important}.x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down{background-position:0 -10px}.x-reset .x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -10px}.x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -10px}.x-reset .x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -10px}.x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -10px}.x-reset .x-trigger-noedit{cursor:pointer;cursor:hand}.x-reset .x-item-disabled .x-trigger-noedit,.x-reset .x-item-disabled .x-form-trigger{cursor:auto}.x-reset .x-form-clear-trigger{background-image:url('../../resources/themes/images/default/form/clear-trigger.gif')}.x-reset .x-form-search-trigger{background-image:url('../../resources/themes/images/default/form/search-trigger.gif')}.x-reset .x-quirks .prefixie6 .x-form-trigger-input-cell{height:22px}.x-reset .x-quirks .prefixie6 .x-field-default-toolbar .x-form-trigger-input-cell{height:20px}.x-reset .x-html-editor-wrap{border:1px solid #b5b8c8}.x-reset .x-html-editor-wrap .x-toolbar{border-top-width:0;border-left-width:0;border-right-width:0}.x-reset .x-html-editor-wrap textarea{background-color:white}.x-reset .x-html-editor-tb .x-btn-text{background:transparent no-repeat;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-bold,.x-reset .x-menu-item img.x-edit-bold{background-position:0 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-italic,.x-reset .x-menu-item img.x-edit-italic{background-position:-16px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-underline,.x-reset .x-menu-item img.x-edit-underline{background-position:-32px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-forecolor,.x-reset .x-menu-item img.x-edit-forecolor{background-position:-160px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-backcolor,.x-reset .x-menu-item img.x-edit-backcolor{background-position:-176px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-justifyleft,.x-reset .x-menu-item img.x-edit-justifyleft{background-position:-112px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-justifycenter,.x-reset .x-menu-item img.x-edit-justifycenter{background-position:-128px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-justifyright,.x-reset .x-menu-item img.x-edit-justifyright{background-position:-144px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-insertorderedlist,.x-reset .x-menu-item img.x-edit-insertorderedlist{background-position:-80px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-insertunorderedlist,.x-reset .x-menu-item img.x-edit-insertunorderedlist{background-position:-96px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-increasefontsize,.x-reset .x-menu-item img.x-edit-increasefontsize{background-position:-48px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-decreasefontsize,.x-reset .x-menu-item img.x-edit-decreasefontsize{background-position:-64px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-sourceedit,.x-reset .x-menu-item img.x-edit-sourceedit{background-position:-192px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-createlink,.x-reset .x-menu-item img.x-edit-createlink{background-position:-208px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tip .x-tip-bd .x-tip-bd-inner{padding:5px;padding-bottom:1px}.x-reset .x-html-editor-tb .x-toolbar{position:static!important}.x-reset .x-html-editor-tb .x-font-select{font-size:11px}.x-reset .x-html-editor-wrap textarea{border:0;padding:3px 2px;overflow:auto}.x-reset .x-panel,.x-reset .x-plain{overflow:hidden;position:relative}.x-reset .x-ie .x-panel-header,.x-reset .x-ie .x-panel-header-tl,.x-reset .x-ie .x-panel-header-tc,.x-reset .x-ie .x-panel-header-tr,.x-reset .x-ie .x-panel-header-ml,.x-reset .x-ie .x-panel-header-mc,.x-reset .x-ie .x-panel-header-mr,.x-reset .x-ie .x-panel-header-bl,.x-reset .x-ie .x-panel-header-bc,.x-reset .x-ie .x-panel-header-br{zoom:1}.x-reset .x-ie8 td.x-frame-mc{vertical-align:top}.x-reset .x-panel-header-horizontal{padding:3px 5px 4px}.x-reset .x-panel-header-vertical{padding:5px 4px}.x-reset .x-panel-header-icon,.x-reset .x-window-header-icon{width:16px;height:16px;background-repeat:no-repeat;background-position:0 0;vertical-align:middle;margin-right:4px}.x-reset .x-vertical .x-panel-header-icon,.x-reset .x-vertical .x-window-header-icon{margin:0 0 4px}.x-reset .x-panel-header-draggable,.x-reset .x-panel-header-draggable .x-panel-header-text,.x-reset .x-window-header-draggable,.x-reset .x-window-header-draggable .x-window-header-text{cursor:move}.x-reset .x-panel-ghost,.x-reset .x-window-ghost{filter:alpha(opacity=65);opacity:.65;cursor:move}.x-reset .x-panel-header-horizontal .x-panel-header-body,.x-reset .x-panel-header-horizontal .x-window-header-body,.x-reset .x-panel-header-horizontal .x-btn-group-header-body,.x-reset .x-window-header-horizontal .x-panel-header-body,.x-reset .x-window-header-horizontal .x-window-header-body,.x-reset .x-window-header-horizontal .x-btn-group-header-body,.x-reset .x-btn-group-header-horizontal .x-panel-header-body,.x-reset .x-btn-group-header-horizontal .x-window-header-body,.x-reset .x-btn-group-header-horizontal .x-btn-group-header-body{width:100%}.x-reset .x-panel-header-vertical .x-panel-header-body,.x-reset .x-panel-header-vertical .x-window-header-body,.x-reset .x-panel-header-vertical .x-btn-group-header-body,.x-reset .x-window-header-vertical .x-panel-header-body,.x-reset .x-window-header-vertical .x-window-header-body,.x-reset .x-window-header-vertical .x-btn-group-header-body,.x-reset .x-btn-group-header-vertical .x-panel-header-body,.x-reset .x-btn-group-header-vertical .x-window-header-body,.x-reset .x-btn-group-header-vertical .x-btn-group-header-body{height:100%}.x-reset .x-panel-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-reset .x-panel-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;white-space:nowrap}.x-reset .x-panel-header-left .x-vml-base,.x-reset .x-panel-header-right .x-vml-base{left:-3px!important}.x-reset .x-panel-body{overflow:hidden;position:relative;font-size:12px}.x-reset .x-panel-header-vertical .x-surface{padding-left:1px}.x-reset .x-opera .x-panel-header-vertical .x-surface,.x-reset .x-strict .x-ie9 .x-panel-header-vertical .x-surface{padding-left:2px}.x-reset .x-panel-collapsed .x-panel-header-collapsed-border-top{border-bottom-width:1px!important}.x-reset .x-panel-collapsed .x-panel-header-collapsed-border-right{border-left-width:1px!important}.x-reset .x-panel-collapsed .x-panel-header-collapsed-border-bottom{border-top-width:1px!important}.x-reset .x-panel-collapsed .x-panel-header-collapsed-border-left{border-right-width:1px!important}.x-reset .x-nlg .x-panel-header-vertical .x-frame-mc{background-repeat:repeat-y}.x-reset .x-panel-default{border-color:#99bce8}.x-reset .x-panel-header-default{font-size:11px;border-color:#99bce8;border-width:1px;border-style:solid}.x-reset .x-nlg .x-panel-header-default-top{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif')}.x-reset .x-nlg .x-panel-header-default-bottom{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif')}.x-reset .x-nlg .x-panel-header-default-left{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif')}.x-reset .x-nlg .x-panel-header-default-right{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif')}.x-reset .x-nlg .x-panel-header-default-right{background-position:top right}.x-reset .x-nlg .x-panel-header-default-bottom{background-position:bottom left}.x-reset .x-panel-header-text-default{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:17px}.x-reset .x-panel-body-default{background:white;border-color:#99bce8;color:black;border-width:1px;border-style:solid}.x-reset .x-panel-collapsed .x-window-header-default,.x-reset .x-panel-collapsed .x-panel-header-default{border-color:#99bce8}.x-reset .x-panel-header-default-vertical{border-color:#99bce8}.x-reset .x-panel-collapsed .x-panel-header-default-top{-moz-border-radius-bottomleft:null;-webkit-border-bottom-left-radius:null;-o-border-bottom-left-radius:null;-ms-border-bottom-left-radius:null;-khtml-border-bottom-left-radius:null;border-bottom-left-radius:null;-moz-border-radius-bottomright:null;-webkit-border-bottom-right-radius:null;-o-border-bottom-right-radius:null;-ms-border-bottom-right-radius:null;-khtml-border-bottom-right-radius:null;border-bottom-right-radius:null}.x-reset .x-panel-collapsed .x-panel-header-default-right{-moz-border-radius-topleft:null;-webkit-border-top-left-radius:null;-o-border-top-left-radius:null;-ms-border-top-left-radius:null;-khtml-border-top-left-radius:null;border-top-left-radius:null;-moz-border-radius-bottomleft:null;-webkit-border-bottom-left-radius:null;-o-border-bottom-left-radius:null;-ms-border-bottom-left-radius:null;-khtml-border-bottom-left-radius:null;border-bottom-left-radius:null}.x-reset .x-panel-collapsed .x-panel-header-default-bottom{-moz-border-radius-topleft:null;-webkit-border-top-left-radius:null;-o-border-top-left-radius:null;-ms-border-top-left-radius:null;-khtml-border-top-left-radius:null;border-top-left-radius:null;-moz-border-radius-topright:null;-webkit-border-top-right-radius:null;-o-border-top-right-radius:null;-ms-border-top-right-radius:null;-khtml-border-top-right-radius:null;border-top-right-radius:null}.x-reset .x-panel-collapsed .x-panel-header-default-left{-moz-border-radius-topright:null;-webkit-border-top-right-radius:null;-o-border-top-right-radius:null;-ms-border-top-right-radius:null;-khtml-border-top-right-radius:null;border-top-right-radius:null;-moz-border-radius-bottomright:null;-webkit-border-bottom-right-radius:null;-o-border-bottom-right-radius:null;-ms-border-bottom-right-radius:null;-khtml-border-bottom-right-radius:null;border-bottom-right-radius:null}.x-reset .x-panel-header-default-top{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset}.x-reset .x-panel-header-default-right{-moz-box-shadow:#f4f8fd -1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd -1px 0 0 0 inset;-o-box-shadow:#f4f8fd -1px 0 0 0 inset;box-shadow:#f4f8fd -1px 0 0 0 inset}.x-reset .x-panel-header-default-bottom{-moz-box-shadow:#f4f8fd 0 -1px 0 0 inset;-webkit-box-shadow:#f4f8fd 0 -1px 0 0 inset;-o-box-shadow:#f4f8fd 0 -1px 0 0 inset;box-shadow:#f4f8fd 0 -1px 0 0 inset}.x-reset .x-panel-header-default-left{-moz-box-shadow:#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 1px 0 0 0 inset}.x-reset .x-panel-header-default-right-tc,.x-reset .x-panel-header-default-right-mc,.x-reset .x-panel-header-default-right-bc{background-position:right 0}.x-reset .x-panel-header-default-bottom-tc,.x-reset .x-panel-header-default-bottom-mc,.x-reset .x-panel-header-default-bottom-bc{background-position:0 bottom}.x-reset .x-panel-default-framed{border-color:#99bce8}.x-reset .x-panel-header-default-framed{font-size:11px;border-color:#99bce8;border-width:1px;border-style:solid}.x-reset .x-nlg .x-panel-header-default-framed-top{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif')}.x-reset .x-nlg .x-panel-header-default-framed-bottom{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif')}.x-reset .x-nlg .x-panel-header-default-framed-left{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif')}.x-reset .x-nlg .x-panel-header-default-framed-right{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif')}.x-reset .x-nlg .x-panel-header-default-framed-right{background-position:top right}.x-reset .x-nlg .x-panel-header-default-framed-bottom{background-position:bottom left}.x-reset .x-nbr .x-panel-header-default-framed{background-image:none}.x-reset .x-strict .x-ie9 .x-panel-header-default-framed-top,.x-reset .x-nlg.x-opera .x-panel-header-default-framed-top,.x-reset .x-nlg.x-safari .x-panel-header-default-framed-top{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif')}.x-reset .x-strict .x-ie9 .x-panel-header-default-framed-bottom,.x-reset .x-nlg.x-opera .x-panel-header-default-framed-bottom,.x-reset .x-nlg.x-safari .x-panel-header-default-framed-bottom{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif')}.x-reset .x-strict .x-ie9 .x-panel-header-default-framed-left,.x-reset .x-nlg.x-opera .x-panel-header-default-framed-left,.x-reset .x-nlg.x-safari .x-panel-header-default-framed-left{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif')}.x-reset .x-strict .x-ie9 .x-panel-header-default-framed-right,.x-reset .x-nlg.x-opera .x-panel-header-default-framed-right,.x-reset .x-nlg.x-safari .x-panel-header-default-framed-right{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif')}.x-reset .x-panel-header-text-default-framed{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:17px}.x-reset .x-panel-body-default-framed{background:#dfe9f6;border-color:#99bce8;color:black;border-width:0;border-style:solid}.x-reset .x-panel-collapsed .x-window-header-default-framed,.x-reset .x-panel-collapsed .x-panel-header-default-framed{border-color:#99bce8}.x-reset .x-panel-header-default-framed-vertical{border-color:#99bce8}.x-reset .x-panel-default-framed{padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#dfe9f6}.x-reset .x-nlg .x-panel-default-framed-mc{background-color:#dfe9f6}.x-reset .x-nbr .x-panel-default-framed{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1000404px}.x-reset .x-nbr .x-panel-default-framed-tl,.x-reset .x-nbr .x-panel-default-framed-bl,.x-reset .x-nbr .x-panel-default-framed-tr,.x-reset .x-nbr .x-panel-default-framed-br,.x-reset .x-nbr .x-panel-default-framed-tc,.x-reset .x-nbr .x-panel-default-framed-bc,.x-reset .x-nbr .x-panel-default-framed-ml,.x-reset .x-nbr .x-panel-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel/panel-default-framed-corners.gif')}.x-reset .x-nbr .x-panel-default-framed-ml,.x-reset .x-nbr .x-panel-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel/panel-default-framed-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-panel-default-framed-mc{padding:1px 1px 1px 1px}.x-reset .x-strict .x-ie7 .x-panel-default-framed-tl,.x-reset .x-strict .x-ie7 .x-panel-default-framed-bl{position:relative;right:0}.x-reset .x-panel-header-default-framed-top{padding:3px 5px 4px 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#cbddf3}.x-reset .x-nlg .x-panel-header-default-framed-top-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif');background-color:#cbddf3}.x-reset .x-nbr .x-panel-header-default-framed-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1000000px}.x-reset .x-nbr .x-panel-header-default-framed-top-tl,.x-reset .x-nbr .x-panel-header-default-framed-top-bl,.x-reset .x-nbr .x-panel-header-default-framed-top-tr,.x-reset .x-nbr .x-panel-header-default-framed-top-br,.x-reset .x-nbr .x-panel-header-default-framed-top-tc,.x-reset .x-nbr .x-panel-header-default-framed-top-bc,.x-reset .x-nbr .x-panel-header-default-framed-top-ml,.x-reset .x-nbr .x-panel-header-default-framed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-corners.gif')}.x-reset .x-nbr .x-panel-header-default-framed-top-ml,.x-reset .x-nbr .x-panel-header-default-framed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-sides.gif');background-position:0 0}.x-reset .x-nbr .x-panel-header-default-framed-top-mc{padding:0 2px 4px 2px}.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-top-tl,.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-top-bl{position:relative;right:0}.x-reset .x-panel-header-default-framed-right{padding:5px 4px 5px 4px;border-width:1px 1px 1px 0;border-style:solid;background-color:#cbddf3}.x-reset .x-nlg .x-panel-header-default-framed-right-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif');background-color:#cbddf3}.x-reset .x-nbr .x-panel-header-default-framed-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000004px 1100400px}.x-reset .x-nbr .x-panel-header-default-framed-right-tl,.x-reset .x-nbr .x-panel-header-default-framed-right-bl,.x-reset .x-nbr .x-panel-header-default-framed-right-tr,.x-reset .x-nbr .x-panel-header-default-framed-right-br,.x-reset .x-nbr .x-panel-header-default-framed-right-tc,.x-reset .x-nbr .x-panel-header-default-framed-right-bc,.x-reset .x-nbr .x-panel-header-default-framed-right-ml,.x-reset .x-nbr .x-panel-header-default-framed-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-corners.gif')}.x-reset .x-nbr .x-panel-header-default-framed-right-tc,.x-reset .x-nbr .x-panel-header-default-framed-right-bc{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-reset .x-nbr .x-panel-header-default-framed-right-mc{padding:2px 1px 2px 4px}.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-right-tl,.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-right-bl{position:relative;right:0}.x-reset .x-panel-header-default-framed-bottom{padding:3px 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#cbddf3}.x-reset .x-nlg .x-panel-header-default-framed-bottom-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif');background-color:#cbddf3}.x-reset .x-nbr .x-panel-header-default-framed-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000000px 1000404px}.x-reset .x-nbr .x-panel-header-default-framed-bottom-tl,.x-reset .x-nbr .x-panel-header-default-framed-bottom-bl,.x-reset .x-nbr .x-panel-header-default-framed-bottom-tr,.x-reset .x-nbr .x-panel-header-default-framed-bottom-br,.x-reset .x-nbr .x-panel-header-default-framed-bottom-tc,.x-reset .x-nbr .x-panel-header-default-framed-bottom-bc,.x-reset .x-nbr .x-panel-header-default-framed-bottom-ml,.x-reset .x-nbr .x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-corners.gif')}.x-reset .x-nbr .x-panel-header-default-framed-bottom-ml,.x-reset .x-nbr .x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-sides.gif');background-position:0 0}.x-reset .x-nbr .x-panel-header-default-framed-bottom-mc{padding:3px 2px 1px 2px}.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl{position:relative;right:0}.x-reset .x-panel-header-default-framed-left{padding:5px 4px 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-color:#cbddf3}.x-reset .x-nlg .x-panel-header-default-framed-left-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif');background-color:#cbddf3}.x-reset .x-nbr .x-panel-header-default-framed-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000400px 1100004px}.x-reset .x-nbr .x-panel-header-default-framed-left-tl,.x-reset .x-nbr .x-panel-header-default-framed-left-bl,.x-reset .x-nbr .x-panel-header-default-framed-left-tr,.x-reset .x-nbr .x-panel-header-default-framed-left-br,.x-reset .x-nbr .x-panel-header-default-framed-left-tc,.x-reset .x-nbr .x-panel-header-default-framed-left-bc,.x-reset .x-nbr .x-panel-header-default-framed-left-ml,.x-reset .x-nbr .x-panel-header-default-framed-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-corners.gif')}.x-reset .x-nbr .x-panel-header-default-framed-left-tc,.x-reset .x-nbr .x-panel-header-default-framed-left-bc{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-reset .x-nbr .x-panel-header-default-framed-left-mc{padding:2px 4px 2px 1px}.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-left-tl,.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-left-bl{position:relative;right:0}.x-reset .x-panel-header-default-framed-top{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset}.x-reset .x-panel-header-default-framed-right{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset}.x-reset .x-panel-header-default-framed-bottom{-moz-box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset}.x-reset .x-panel-header-default-framed-left{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset}.x-reset .x-panel .x-panel-header-default-framed-top{border-bottom-width:1px!important}.x-reset .x-panel .x-panel-header-default-framed-right{border-left-width:1px!important}.x-reset .x-panel .x-panel-header-default-framed-bottom{border-top-width:1px!important}.x-reset .x-panel .x-panel-header-default-framed-left{border-right-width:1px!important}.x-reset .x-panel-header-default-framed-collapsed{-moz-border-radius:4px;-webkit-border-radius:4px;-o-border-radius:4px;-ms-border-radius:4px;-khtml-border-radius:4px;border-radius:4px}.x-reset .x-panel-header-default-framed-collapsed-top{padding:3px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#cbddf3}.x-reset .x-nlg .x-panel-header-default-framed-collapsed-top-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-bg.gif');background-color:#cbddf3}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1000404px}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-tl,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-bl,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-tr,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-br,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-tc,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-bc,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-ml,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-corners.gif')}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-ml,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-sides.gif');background-position:0 0}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-top-mc{padding:0 2px 1px 2px}.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl{position:relative;right:0}.x-reset .x-panel-header-default-framed-collapsed-right{padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#cbddf3}.x-reset .x-nlg .x-panel-header-default-framed-collapsed-right-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-bg.gif');background-color:#cbddf3}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1100404px}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-tl,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-bl,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-tr,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-br,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-tc,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-bc,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-ml,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-corners.gif')}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-tc,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-bc{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-right-mc{padding:2px 1px 2px 1px}.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl{position:relative;right:0}.x-reset .x-panel-header-default-framed-collapsed-bottom{padding:3px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#cbddf3}.x-reset .x-nlg .x-panel-header-default-framed-collapsed-bottom-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif');background-color:#cbddf3}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1000404px}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-tl,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-bl,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-tr,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-br,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-tc,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-bc,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif')}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif');background-position:0 0}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-bottom-mc{padding:0 2px 1px 2px}.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl{position:relative;right:0}.x-reset .x-panel-header-default-framed-collapsed-left{padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#cbddf3}.x-reset .x-nlg .x-panel-header-default-framed-collapsed-left-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-bg.gif');background-color:#cbddf3}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1100404px}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-tl,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-bl,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-tr,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-br,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-tc,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-bc,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-ml,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-corners.gif')}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-tc,.x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-bc{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-reset .x-nbr .x-panel-header-default-framed-collapsed-left-mc{padding:2px 1px 2px 1px}.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,.x-reset .x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl{position:relative;right:0}.x-reset .x-panel-header-default-framed-right-tc,.x-reset .x-panel-header-default-framed-right-mc,.x-reset .x-panel-header-default-framed-right-bc{background-position:right 0}.x-reset .x-panel-header-default-framed-bottom-tc,.x-reset .x-panel-header-default-framed-bottom-mc,.x-reset .x-panel-header-default-framed-bottom-bc{background-position:0 bottom}.x-reset .x-panel-header-plain,.x-reset .x-panel-body-plain{border:0;padding:0}.x-reset .x-tip{position:absolute;overflow:visible;border-color:#8eaace}.x-reset .x-tip .x-tip-header .x-box-item{padding:3px 3px 0}.x-reset .x-tip .x-tip-header .x-tool{padding:0 1px 0 0!important}.x-reset .x-tip{padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:#e9f2ff}.x-reset .x-nlg .x-tip-mc{background-color:#e9f2ff}.x-reset .x-nbr .x-tip{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-reset .x-nbr .x-tip-tl,.x-reset .x-nbr .x-tip-bl,.x-reset .x-nbr .x-tip-tr,.x-reset .x-nbr .x-tip-br,.x-reset .x-nbr .x-tip-tc,.x-reset .x-nbr .x-tip-bc,.x-reset .x-nbr .x-tip-ml,.x-reset .x-nbr .x-tip-mr{zoom:1;background-image:url('../../resources/themes/images/default/tip/tip-corners.gif')}.x-reset .x-nbr .x-tip-ml,.x-reset .x-nbr .x-tip-mr{zoom:1;background-image:url('../../resources/themes/images/default/tip/tip-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-tip-mc{padding:0}.x-reset .x-strict .x-ie7 .x-tip-tl,.x-reset .x-strict .x-ie7 .x-tip-bl{position:relative;right:0}.x-reset .x-tip-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;color:#444;font-size:11px;font-weight:bold}.x-reset .x-tip-header-draggable .x-tip-header-text{cursor:move}.x-reset .x-tip-body,.x-reset .x-form-invalid-tip-body{overflow:hidden;position:relative;padding:3px}.x-reset .x-tip-header,.x-reset .x-tip-body,.x-reset .x-form-invalid-tip-body{color:#444;font-size:11px;font-weight:normal}.x-reset .x-tip-header a,.x-reset .x-tip-body a,.x-reset .x-form-invalid-tip-body a{color:#2a2a2a}.x-reset .x-tip-anchor{position:absolute;overflow:hidden;height:0;width:0;border-style:solid;border-width:5px;border-color:#8eaace;zoom:1}.x-reset .x-border-box .x-tip-anchor{width:10px;height:10px}.x-reset .x-tip-anchor-top{border-top-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-reset .x-tip-anchor-bottom{border-bottom-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-bottom-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-reset .x-tip-anchor-left{border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-left-color:pink;_filter:chroma(color=pink)}.x-reset .x-tip-anchor-right{border-top-color:transparent;border-bottom-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-reset .x-form-invalid-tip{border-color:#a1311f;-moz-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-webkit-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-o-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset}.x-reset .x-form-invalid-tip-body{background:1px 1px no-repeat;background-image:url('../../resources/themes/images/default/form/exclamation.gif');padding-left:22px}.x-reset .x-form-invalid-tip-body li{margin-bottom:4px}.x-reset .x-form-invalid-tip-body li.last{margin-bottom:0}.x-reset .x-form-invalid-tip-default{padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:white}.x-reset .x-nlg .x-form-invalid-tip-default-mc{background-color:white}.x-reset .x-nbr .x-form-invalid-tip-default{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100505px 1000505px}.x-reset .x-nbr .x-form-invalid-tip-default-tl,.x-reset .x-nbr .x-form-invalid-tip-default-bl,.x-reset .x-nbr .x-form-invalid-tip-default-tr,.x-reset .x-nbr .x-form-invalid-tip-default-br,.x-reset .x-nbr .x-form-invalid-tip-default-tc,.x-reset .x-nbr .x-form-invalid-tip-default-bc,.x-reset .x-nbr .x-form-invalid-tip-default-ml,.x-reset .x-nbr .x-form-invalid-tip-default-mr{zoom:1;background-image:url('../../resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-corners.gif')}.x-reset .x-nbr .x-form-invalid-tip-default-ml,.x-reset .x-nbr .x-form-invalid-tip-default-mr{zoom:1;background-image:url('../../resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-form-invalid-tip-default-mc{padding:0}.x-reset .x-strict .x-ie7 .x-form-invalid-tip-default-tl,.x-reset .x-strict .x-ie7 .x-form-invalid-tip-default-bl{position:relative;right:0}.x-reset .x-slider{zoom:1}.x-reset .x-slider-inner{position:relative;left:0;top:0;overflow:visible;zoom:1}.x-reset .x-slider-focus{position:absolute;left:0;top:0;width:1px;height:1px;line-height:1px;font-size:1px;-moz-outline:0 none;outline:0 none;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;display:block;overflow:hidden}.x-reset .x-slider-horz{padding-left:7px;background:transparent no-repeat 0 -24px;width:100%}.x-reset .x-slider-horz .x-slider-end{padding-right:7px;zoom:1;background:transparent no-repeat right -46px}.x-reset .x-slider-horz .x-slider-inner{background:transparent repeat-x 0 -2px;height:18px}.x-reset .x-slider-horz .x-slider-thumb{width:14px;height:15px;margin-left:-7px;position:absolute;left:0;top:1px;background:transparent no-repeat 0 0}.x-reset .x-slider-horz .x-slider-thumb-over{background-position:-14px -15px}.x-reset .x-slider-horz .x-slider-thumb-drag{background-position:-28px -30px}.x-reset .x-slider-vert{padding-top:7px;background:transparent no-repeat -44px 0}.x-reset .x-slider-vert .x-slider-end{padding-bottom:7px;zoom:1;background:transparent no-repeat -22px bottom;width:22px}.x-reset .x-slider-vert .x-slider-inner{background:transparent repeat-y 0 0;width:22px}.x-reset .x-slider-vert .x-slider-thumb{width:15px;height:14px;margin-bottom:-7px;position:absolute;left:3px;bottom:0;background:transparent no-repeat 0 0}.x-reset .x-slider-vert .x-slider-thumb-over{background-position:-15px -14px}.x-reset .x-slider-vert .x-slider-thumb-drag{background-position:-30px -28px}.x-reset .x-slider-horz,.x-reset .x-slider-horz .x-slider-end,.x-reset .x-slider-horz .x-slider-inner{background-image:url('../../resources/themes/images/default/slider/slider-bg.png')}.x-reset .x-slider-horz .x-slider-thumb{background-image:url('../../resources/themes/images/default/slider/slider-thumb.png')}.x-reset .x-slider-vert,.x-reset .x-slider-vert .x-slider-end,.x-reset .x-slider-vert .x-slider-inner{background-image:url('../../resources/themes/images/default/slider/slider-v-bg.png')}.x-reset .x-slider-vert .x-slider-thumb{background-image:url('../../resources/themes/images/default/slider/slider-v-thumb.png')}.x-reset .x-ie6 .x-slider-horz,.x-reset .x-ie6 .x-slider-horz .x-slider-end,.x-reset .x-ie6 .x-slider-horz .x-slider-inner{background-image:url('../../resources/themes/images/default/slider/slider-bg.gif')}.x-reset .x-ie6 .x-slider-horz .x-slider-thumb{background-image:url('../../resources/themes/images/default/slider/slider-thumb.gif')}.x-reset .x-ie6 .x-slider-vert,.x-reset .x-ie6 .x-slider-vert .x-slider-end,.x-reset .x-ie6 .x-slider-vert .x-slider-inner{background-image:url('../../resources/themes/images/default/slider/slider-v-bg.gif')}.x-reset .x-ie6 .x-slider-vert .x-slider-thumb{background-image:url('../../resources/themes/images/default/slider/slider-v-thumb.gif')}.x-reset .x-progress{position:relative;border-width:1px;border-style:solid;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;overflow:hidden;height:20px}.x-reset .x-progress-bar{height:18px;overflow:hidden;position:absolute;width:0;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;border-right:1px solid;border-top:1px solid}.x-reset .x-progress-text{overflow:hidden;position:absolute;padding:0 5px;height:18px;font-weight:bold;font-size:11px;line-height:16px;text-align:center}.x-reset .x-progress-text-back{padding-top:1px}.x-reset .x-strict .x-ie7m .x-progress{height:18px}.x-reset .x-progress-default{border-color:#6594cf}.x-reset .x-progress-default .x-progress-bar{border-right-color:#6594cf;border-top-color:#c6d8ed;background-image:none;background-color:#73a3e0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b2ccee),color-stop(50%,#88b1e5),color-stop(51%,#73a3e0),color-stop(100%,#5e96db));background-image:-webkit-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-moz-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-o-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-ms-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db)}.x-reset .x-progress-default .x-progress-text{color:white}.x-reset .x-progress-default .x-progress-text-back{color:#396295}.x-reset .x-nlg .x-progress-default .x-progress-bar{background:repeat-x;background-image:url('../../resources/themes/images/default/progress/progress-default-bg.gif')}.x-reset .x-toolbar{font-size:11px;border:1px solid;padding:2px 0 2px 2px}.x-reset .x-toolbar .x-form-item-label{font-size:11px;line-height:15px}.x-reset .x-toolbar .x-toolbar-item{margin:0 2px 0 0}.x-reset .x-toolbar .x-toolbar-text{margin-left:4px;margin-right:6px;white-space:nowrap;color:#4c4c4c;line-height:16px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;font-weight:normal}.x-reset .x-toolbar .x-toolbar-separator{display:block;font-size:1px;overflow:hidden;cursor:default;border:0}.x-reset .x-toolbar .x-toolbar-separator-horizontal{margin:0 3px 0 2px;height:14px;width:0;border-left:1px solid #98c8ff;border-right:1px solid white}.x-reset .x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal{width:2px}.x-reset .x-toolbar-footer{background:transparent;border:0 none;margin-top:3px;padding:2px 0 2px 6px}.x-reset .x-toolbar-footer .x-box-inner{border-width:0}.x-reset .x-toolbar-footer .x-toolbar-item{margin:0 6px 0 0}.x-reset .x-toolbar-vertical{padding:2px 2px 0 2px}.x-reset .x-toolbar-vertical .x-toolbar-item{margin:0 0 2px 0}.x-reset .x-toolbar-vertical .x-toolbar-text{margin-top:4px;margin-bottom:6px}.x-reset .x-toolbar-vertical .x-toolbar-separator-vertical{margin:2px 5px 3px 5px;height:0;width:10px;line-height:0;border-top:1px solid #98c8ff;border-bottom:1px solid white}.x-reset .x-toolbar-scroller{padding-left:0}.x-reset .x-toolbar-spacer{width:2px}.x-reset .x-toolbar-more-icon{background-image:url('../../resources/themes/images/default/toolbar/more.gif')!important;background-position:2px center!important;background-repeat:no-repeat}.x-reset .x-toolbar-default{border-color:#99bce8;background-image:none;background-color:#d3e1f1;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dfe9f5),color-stop(100%,#d3e1f1));background-image:-webkit-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-moz-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-o-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-ms-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:linear-gradient(top,#dfe9f5,#d3e1f1)}.x-reset .x-nlg .x-toolbar-default{background-image:url('../../resources/themes/images/default/toolbar/toolbar-default-bg.gif')!important;background-repeat:repeat-x}.x-reset .x-toolbar-plain{border:0}.x-reset .x-window{outline:0;overflow:hidden}.x-reset .x-window .x-window-wrap{position:relative}.x-reset .x-window-body{position:relative;border-style:solid;overflow:hidden}.x-reset .x-window-maximized .x-window-wrap .x-window-header{-moz-border-radius:0!important;-webkit-border-radius:0!important;-o-border-radius:0!important;-ms-border-radius:0!important;-khtml-border-radius:0!important;border-radius:0!important}.x-reset .x-window-header-top{margin-bottom:-2px}.x-reset .x-window-header-body-horizontal{margin-top:-1px}.x-reset .x-window-header-bottom{margin-top:-1px;margin-bottom:-1px}.x-reset .x-window-header-left{margin-right:-1px}.x-reset .x-window-header-right{margin-left:-1px}.x-reset .x-window-header-vertical .x-surface{padding-left:1px}.x-reset .x-window-collapsed .x-window-header-vertical{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px}.x-reset .x-window-collapsed .x-window-header-horizontal{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px}.x-reset .x-window-collapsed .x-window-header-left{padding-right:5px!important;margin-right:0}.x-reset .x-window-collapsed .x-window-header-right{padding-left:5px!important;margin-left:0}.x-reset .x-window-collapsed .x-window-header-top{padding-bottom:5px!important;margin-bottom:-1px}.x-reset .x-window-collapsed .x-window-header-bottom{padding-top:5px!important;margin-top:0}.x-reset .x-window-header-left .x-vml-base,.x-reset .x-window-header-right .x-vml-base{left:-3px!important}.x-reset .x-opera .x-window-header-vertical .x-surface,.x-reset .x-strict .x-ie9 .x-window-header-vertical .x-surface{padding-left:2px}.x-reset .x-window-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-reset .x-window-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;white-space:nowrap}.x-reset .x-window-default{border-color:#a2b1c5;-moz-border-radius:5px 5px;-webkit-border-radius:5px 5px;-o-border-radius:5px 5px;-ms-border-radius:5px 5px;-khtml-border-radius:5px 5px;border-radius:5px 5px;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-reset .x-window-default{padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-default-mc{background-color:#ced9e7}.x-reset .x-nbr .x-window-default{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-reset .x-nbr .x-window-default-tl,.x-reset .x-nbr .x-window-default-bl,.x-reset .x-nbr .x-window-default-tr,.x-reset .x-nbr .x-window-default-br,.x-reset .x-nbr .x-window-default-tc,.x-reset .x-nbr .x-window-default-bc,.x-reset .x-nbr .x-window-default-ml,.x-reset .x-nbr .x-window-default-mr{zoom:1;background-image:url('../../resources/themes/images/default/window/window-default-corners.gif')}.x-reset .x-nbr .x-window-default-ml,.x-reset .x-nbr .x-window-default-mr{zoom:1;background-image:url('../../resources/themes/images/default/window/window-default-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-window-default-mc{padding:0}.x-reset .x-strict .x-ie7 .x-window-default-tl,.x-reset .x-strict .x-ie7 .x-window-default-bl{position:relative;right:0}.x-reset .x-window-body-default{border-color:#99bbe8;border-width:1px;background:#dfe8f6;color:black}.x-reset .x-window-header-default{font-size:11px;border-color:#a2b1c5;zoom:1}.x-reset .x-window-header-text-default{color:#04468c;font-weight:bold;line-height:17px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px}.x-reset .x-window-header-default-top{padding:4px 5px 0 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-header-default-top-mc{background-color:#ced9e7}.x-reset .x-nbr .x-window-header-default-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000000px}.x-reset .x-nbr .x-window-header-default-top-tl,.x-reset .x-nbr .x-window-header-default-top-bl,.x-reset .x-nbr .x-window-header-default-top-tr,.x-reset .x-nbr .x-window-header-default-top-br,.x-reset .x-nbr .x-window-header-default-top-tc,.x-reset .x-nbr .x-window-header-default-top-bc,.x-reset .x-nbr .x-window-header-default-top-ml,.x-reset .x-nbr .x-window-header-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-top-corners.gif')}.x-reset .x-nbr .x-window-header-default-top-ml,.x-reset .x-nbr .x-window-header-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-top-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-window-header-default-top-mc{padding:0 1px 0 1px}.x-reset .x-strict .x-ie7 .x-window-header-default-top-tl,.x-reset .x-strict .x-ie7 .x-window-header-default-top-bl{position:relative;right:0}.x-reset .x-window-header-default-right{padding:5px 4px 5px 0;border-width:1px 1px 1px 0;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-header-default-right-mc{background-color:#ced9e7}.x-reset .x-nbr .x-window-header-default-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000005px 1000500px}.x-reset .x-nbr .x-window-header-default-right-tl,.x-reset .x-nbr .x-window-header-default-right-bl,.x-reset .x-nbr .x-window-header-default-right-tr,.x-reset .x-nbr .x-window-header-default-right-br,.x-reset .x-nbr .x-window-header-default-right-tc,.x-reset .x-nbr .x-window-header-default-right-bc,.x-reset .x-nbr .x-window-header-default-right-ml,.x-reset .x-nbr .x-window-header-default-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-right-corners.gif')}.x-reset .x-nbr .x-window-header-default-right-ml,.x-reset .x-nbr .x-window-header-default-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-right-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-window-header-default-right-mc{padding:1px 0 1px 0}.x-reset .x-strict .x-ie7 .x-window-header-default-right-tl,.x-reset .x-strict .x-ie7 .x-window-header-default-right-bl{position:relative;right:0}.x-reset .x-window-header-default-bottom{padding:0 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-header-default-bottom-mc{background-color:#ced9e7}.x-reset .x-nbr .x-window-header-default-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000000px 1000505px}.x-reset .x-nbr .x-window-header-default-bottom-tl,.x-reset .x-nbr .x-window-header-default-bottom-bl,.x-reset .x-nbr .x-window-header-default-bottom-tr,.x-reset .x-nbr .x-window-header-default-bottom-br,.x-reset .x-nbr .x-window-header-default-bottom-tc,.x-reset .x-nbr .x-window-header-default-bottom-bc,.x-reset .x-nbr .x-window-header-default-bottom-ml,.x-reset .x-nbr .x-window-header-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-bottom-corners.gif')}.x-reset .x-nbr .x-window-header-default-bottom-ml,.x-reset .x-nbr .x-window-header-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-bottom-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-window-header-default-bottom-mc{padding:0 1px 0 1px}.x-reset .x-strict .x-ie7 .x-window-header-default-bottom-tl,.x-reset .x-strict .x-ie7 .x-window-header-default-bottom-bl{position:relative;right:0}.x-reset .x-window-header-default-left{padding:5px 0 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-header-default-left-mc{background-color:#ced9e7}.x-reset .x-nbr .x-window-header-default-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000500px 1000005px}.x-reset .x-nbr .x-window-header-default-left-tl,.x-reset .x-nbr .x-window-header-default-left-bl,.x-reset .x-nbr .x-window-header-default-left-tr,.x-reset .x-nbr .x-window-header-default-left-br,.x-reset .x-nbr .x-window-header-default-left-tc,.x-reset .x-nbr .x-window-header-default-left-bc,.x-reset .x-nbr .x-window-header-default-left-ml,.x-reset .x-nbr .x-window-header-default-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-left-corners.gif')}.x-reset .x-nbr .x-window-header-default-left-ml,.x-reset .x-nbr .x-window-header-default-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-left-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-window-header-default-left-mc{padding:1px 0 1px 0}.x-reset .x-strict .x-ie7 .x-window-header-default-left-tl,.x-reset .x-strict .x-ie7 .x-window-header-default-left-bl{position:relative;right:0}.x-reset .x-window-header-default-collapsed-top{padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-header-default-collapsed-top-mc{background-color:#ced9e7}.x-reset .x-nbr .x-window-header-default-collapsed-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-reset .x-nbr .x-window-header-default-collapsed-top-tl,.x-reset .x-nbr .x-window-header-default-collapsed-top-bl,.x-reset .x-nbr .x-window-header-default-collapsed-top-tr,.x-reset .x-nbr .x-window-header-default-collapsed-top-br,.x-reset .x-nbr .x-window-header-default-collapsed-top-tc,.x-reset .x-nbr .x-window-header-default-collapsed-top-bc,.x-reset .x-nbr .x-window-header-default-collapsed-top-ml,.x-reset .x-nbr .x-window-header-default-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-top-corners.gif')}.x-reset .x-nbr .x-window-header-default-collapsed-top-ml,.x-reset .x-nbr .x-window-header-default-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-top-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-window-header-default-collapsed-top-mc{padding:0 1px 0 1px}.x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,.x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-top-bl{position:relative;right:0}.x-reset .x-window-header-default-collapsed-right{padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-header-default-collapsed-right-mc{background-color:#ced9e7}.x-reset .x-nbr .x-window-header-default-collapsed-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-reset .x-nbr .x-window-header-default-collapsed-right-tl,.x-reset .x-nbr .x-window-header-default-collapsed-right-bl,.x-reset .x-nbr .x-window-header-default-collapsed-right-tr,.x-reset .x-nbr .x-window-header-default-collapsed-right-br,.x-reset .x-nbr .x-window-header-default-collapsed-right-tc,.x-reset .x-nbr .x-window-header-default-collapsed-right-bc,.x-reset .x-nbr .x-window-header-default-collapsed-right-ml,.x-reset .x-nbr .x-window-header-default-collapsed-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-right-corners.gif')}.x-reset .x-nbr .x-window-header-default-collapsed-right-ml,.x-reset .x-nbr .x-window-header-default-collapsed-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-right-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-window-header-default-collapsed-right-mc{padding:1px 0 1px 0}.x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,.x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-right-bl{position:relative;right:0}.x-reset .x-window-header-default-collapsed-bottom{padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-header-default-collapsed-bottom-mc{background-color:#ced9e7}.x-reset .x-nbr .x-window-header-default-collapsed-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-reset .x-nbr .x-window-header-default-collapsed-bottom-tl,.x-reset .x-nbr .x-window-header-default-collapsed-bottom-bl,.x-reset .x-nbr .x-window-header-default-collapsed-bottom-tr,.x-reset .x-nbr .x-window-header-default-collapsed-bottom-br,.x-reset .x-nbr .x-window-header-default-collapsed-bottom-tc,.x-reset .x-nbr .x-window-header-default-collapsed-bottom-bc,.x-reset .x-nbr .x-window-header-default-collapsed-bottom-ml,.x-reset .x-nbr .x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-bottom-corners.gif')}.x-reset .x-nbr .x-window-header-default-collapsed-bottom-ml,.x-reset .x-nbr .x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-bottom-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-window-header-default-collapsed-bottom-mc{padding:0 1px 0 1px}.x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,.x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl{position:relative;right:0}.x-reset .x-window-header-default-collapsed-left{padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-header-default-collapsed-left-mc{background-color:#ced9e7}.x-reset .x-nbr .x-window-header-default-collapsed-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-reset .x-nbr .x-window-header-default-collapsed-left-tl,.x-reset .x-nbr .x-window-header-default-collapsed-left-bl,.x-reset .x-nbr .x-window-header-default-collapsed-left-tr,.x-reset .x-nbr .x-window-header-default-collapsed-left-br,.x-reset .x-nbr .x-window-header-default-collapsed-left-tc,.x-reset .x-nbr .x-window-header-default-collapsed-left-bc,.x-reset .x-nbr .x-window-header-default-collapsed-left-ml,.x-reset .x-nbr .x-window-header-default-collapsed-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-left-corners.gif')}.x-reset .x-nbr .x-window-header-default-collapsed-left-ml,.x-reset .x-nbr .x-window-header-default-collapsed-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-left-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-reset .x-nbr .x-window-header-default-collapsed-left-mc{padding:1px 0 1px 0}.x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,.x-reset .x-strict .x-ie7 .x-window-header-default-collapsed-left-bl{position:relative;right:0}.x-reset .x-window-header-default-top{-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-reset .x-window-header-default-right{-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset}.x-reset .x-window-header-default-bottom{-moz-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-reset .x-window-header-default-left{-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-reset .x-window-body-plain{background:transparent}.x-reset .x-message-box .x-window-body{background-color:#ced9e7;border:0}.x-reset .x-message-box .x-progress-wrap{margin-top:4px}.x-reset .x-message-box-icon{width:47px;height:32px}.x-reset .x-message-box-info,.x-reset .x-message-box-warning,.x-reset .x-message-box-question,.x-reset .x-message-box-error{background:transparent no-repeat top left}.x-reset .x-message-box .x-msg-box-wait{background-image:url('../../resources/themes/images/default/shared/blue-loading.gif')}.x-reset .x-message-box-info{background-image:url('../../resources/themes/images/default/shared/icon-info.gif')}.x-reset .x-message-box-warning{background-image:url('../../resources/themes/images/default/shared/icon-warning.gif')}.x-reset .x-message-box-question{background-image:url('../../resources/themes/images/default/shared/icon-question.gif')}.x-reset .x-message-box-error{background-image:url('../../resources/themes/images/default/shared/icon-error.gif')}.x-reset .x-tab-bar{position:relative;background-color:transparent;background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(top,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(top,#dde8f5,#cbdbef);background-image:-o-linear-gradient(top,#dde8f5,#cbdbef);background-image:-ms-linear-gradient(top,#dde8f5,#cbdbef);background-image:linear-gradient(top,#dde8f5,#cbdbef);font-size:11px}.x-reset .x-nlg .x-tab-bar{background-image:url('../../resources/themes/images/default/tab-bar/tab-bar-default-bg.gif')}.x-reset .x-tab-bar-default-plain,.x-reset .x-nlg .x-tab-bar-default-plain{background:transparent none}.x-reset .x-tab-bar-body{border-style:solid;border-color:#99bce8;position:relative;z-index:2;zoom:1}.x-reset .x-tab-bar-top .x-tab-bar-body{height:20px;border-width:1px 1px 0;padding:1px 0 3px}.x-reset .x-tab-bar-top .x-tab-bar-strip{top:22px;border-width:1px 1px 0;height:2px}.x-reset .x-border-box .x-tab-bar-top .x-tab-bar-body{height:25px}.x-reset .x-border-box .x-tab-bar-top .x-tab-bar-strip{height:3px}.x-reset .x-tab-bar-top .x-tab-bar-body-default-plain{height:20px;border-width:0;padding:0 0 2px}.x-reset .x-tab-bar-top .x-tab-bar-strip-default-plain{top:20px;border-width:1px 1px 0 1px;height:2px}.x-reset .x-border-box .x-tab-bar-top .x-tab-bar-body-default-plain{height:22px}.x-reset .x-border-box .x-tab-bar-top .x-tab-bar-strip-default-plain{height:3px}.x-reset .x-tab-bar-bottom .x-tab-bar-body{height:20px;border-width:0 1px 1px;padding:3px 0 1px}.x-reset .x-tab-bar-bottom .x-tab-bar-body .x-box-inner{position:relative;top:-1px}.x-reset .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller,.x-reset .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-left,.x-reset .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-right{height:22px}.x-reset .x-tab-bar-bottom .x-tab-bar-strip{top:0;border-width:0 1px 1px 1px;height:2px}.x-reset .x-border-box .x-tab-bar-bottom .x-tab-bar-body{height:25px}.x-reset .x-border-box .x-tab-bar-bottom .x-tab-bar-strip{height:3px}.x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain{height:20px;border-width:0;padding:3px 0 0}.x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-inner{position:relative;top:-1px}.x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller,.x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-left,.x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-right{height:21px}.x-reset .x-tab-bar-bottom .x-tab-bar-strip-default-plain{top:0;border-width:0 1px 1px 1px;height:2px}.x-reset .x-border-box .x-tab-bar-bottom .x-tab-bar-body-default-plain{height:23px}.x-reset .x-border-box .x-tab-bar-bottom .x-tab-bar-strip-default-plain{height:3px}.x-reset .x-tab-bar-strip-default,.x-reset .x-tab-bar-strip-default-plain{font-size:0;line-height:0;position:absolute;z-index:1;border-style:solid;overflow:hidden;border-color:#99bce8;background-color:#deecfd;zoom:1}.x-reset .x-tab-default-top{padding:3px 3px 0 3px;border-width:1px 1px 0 1px;border-style:solid;background-color:#deecfd}.x-reset .x-nlg .x-tab-default-top-mc{background-image:url('../../resources/themes/images/default/tab/tab-default-top-bg.gif');background-color:#deecfd}.x-reset .x-nbr .x-tab-default-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100404px 1000000px}.x-reset .x-nbr .x-tab-default-top-tl,.x-reset .x-nbr .x-tab-default-top-bl,.x-reset .x-nbr .x-tab-default-top-tr,.x-reset .x-nbr .x-tab-default-top-br,.x-reset .x-nbr .x-tab-default-top-tc,.x-reset .x-nbr .x-tab-default-top-bc,.x-reset .x-nbr .x-tab-default-top-ml,.x-reset .x-nbr .x-tab-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/tab/tab-default-top-corners.gif')}.x-reset .x-nbr .x-tab-default-top-ml,.x-reset .x-nbr .x-tab-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/tab/tab-default-top-sides.gif');background-position:0 0}.x-reset .x-nbr .x-tab-default-top-mc{padding:0}.x-reset .x-strict .x-ie7 .x-tab-default-top-tl,.x-reset .x-strict .x-ie7 .x-tab-default-top-bl{position:relative;right:0}.x-reset .x-tab-default-bottom{padding:0 3px 3px 3px;border-width:0 1px 1px 1px;border-style:solid;background-color:#deecfd}.x-reset .x-nlg .x-tab-default-bottom-mc{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif');background-color:#deecfd}.x-reset .x-nbr .x-tab-default-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100000px 1000404px}.x-reset .x-nbr .x-tab-default-bottom-tl,.x-reset .x-nbr .x-tab-default-bottom-bl,.x-reset .x-nbr .x-tab-default-bottom-tr,.x-reset .x-nbr .x-tab-default-bottom-br,.x-reset .x-nbr .x-tab-default-bottom-tc,.x-reset .x-nbr .x-tab-default-bottom-bc,.x-reset .x-nbr .x-tab-default-bottom-ml,.x-reset .x-nbr .x-tab-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-corners.gif')}.x-reset .x-nbr .x-tab-default-bottom-ml,.x-reset .x-nbr .x-tab-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-sides.gif');background-position:0 0}.x-reset .x-nbr .x-tab-default-bottom-mc{padding:0}.x-reset .x-strict .x-ie7 .x-tab-default-bottom-tl,.x-reset .x-strict .x-ie7 .x-tab-default-bottom-bl{position:relative;right:0}.x-reset .x-tab{z-index:1;margin:0 0 0 2px;display:inline-block;zoom:1;*display:inline;white-space:nowrap;height:20px;border-color:#8db3e3;cursor:pointer;cursor:hand}.x-reset .x-tab button{cursor:pointer;cursor:hand}.x-reset .x-tab em{display:block;padding:0 6px;line-height:1px}.x-reset .x-tab button{background:0;border:0;padding:0;margin:0;-webkit-appearance:none;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;color:#416da3;outline:0 none;overflow-x:visible}.x-reset .x-tab button::-moz-focus-inner{border:0;padding:0}.x-reset .x-tab button .x-tab-inner{background-color:transparent;background-repeat:no-repeat;background-position:0 -2px;display:block;text-align:center;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden}.x-reset .x-tab img{display:none}.x-reset .x-border-box .x-tab-default-top{height:21px}.x-reset .x-border-box .x-tab-default-bottom{height:21px}.x-reset * html .x-ie .x-tab button{width:1px}.x-reset .x-strict .x-ie6 .x-tab .x-frame-mc,.x-reset .x-strict .x-ie7 .x-tab .x-frame-mc{height:100%}.x-reset .x-ie .x-tab-active button:active{position:relative;top:-1px;left:-1px}.x-reset .x-tab-default-top{-moz-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-webkit-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-o-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;border-bottom:1px solid #99bce8!important}.x-reset .x-tab-default-top em{padding-bottom:3px}.x-reset .x-tab-default-top button,.x-reset .x-tab-default-top .x-tab-inner{height:13px;line-height:13px}.x-reset .x-safari4 .x-tab-default-top .x-tab-inner,.x-reset .x-safari5_0 .x-tab-default-top .x-tab-inner{line-height:11px}.x-reset .x-nbr .x-tab-default-top{border-bottom-width:1px!important}.x-reset .x-tab-default-top-active{border-bottom-color:#deecfd!important}.x-reset .x-tab-default-bottom{-moz-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-webkit-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-o-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;border-top:1px solid #99bce8!important;-moz-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-webkit-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-o-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x-reset .x-tab-default-bottom em{padding-top:3px}.x-reset .x-tab-default-bottom button,.x-reset .x-tab-default-bottom .x-tab-inner{height:13px;line-height:13px}.x-reset .x-nbr .x-tab-default-bottom{border-top-width:1px!important}.x-reset .x-tab-default-bottom-active{border-top-color:#deecfd!important}.x-reset .x-tab-default-disabled{cursor:default;border-color:#bbd2ef;background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-ms-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:linear-gradient(top,#e1ecfa,#ecf4fe)}.x-reset .x-tab-default-disabled button{color:#c3b3b3!important}.x-reset .x-tab-icon-text-left .x-tab-inner{padding-left:20px}.x-reset .x-tab button{position:relative}.x-reset .x-tab-icon{position:absolute;background-repeat:no-repeat;background-position:0 -1px;top:0;left:0;right:auto;bottom:0;width:18px;height:18px}.x-reset .x-strict .x-ie8 .x-tab button,.x-reset .x-strict .x-ie9 .x-tab button{overflow-y:visible}.x-reset .x-tab-default-disabled .x-tab-icon{filter:alpha(opacity=50);opacity:.5}.x-reset .x-tab-noicon .x-tab-icon{display:none}.x-reset .x-tab-top-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-ms-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x-reset .x-tab-bottom-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-ms-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x-reset .x-tab-active{z-index:3}.x-reset .x-tab-active button{color:#15498b}.x-reset .x-tab-top-active{background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-ms-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%)}.x-reset .x-tab-bottom-active{background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-ms-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%)}.x-reset .x-tab-disabled{border-color:#bbd2ef}.x-reset .x-tab-disabled button{color:#c3b3b3}.x-reset .x-tab-top-disabled{background-image:none;background:transparent;background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-ms-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:linear-gradient(top,#e1ecfa,#ecf4fe)}.x-reset .x-tab-bottom-disabled{background-image:none;background:transparent;background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-ms-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:linear-gradient(bottom,#e1ecfa,#ecf4fe)}.x-reset .x-nlg .x-tab-top{background-image:url('../../resources/themes/images/default/tab/tab-default-top-bg.gif')}.x-reset .x-nlg .x-tab-bottom{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif')}.x-reset .x-nlg .x-tab-top-over{background-image:url('../../resources/themes/images/default/tab/tab-default-top-over-bg.gif')}.x-reset .x-nlg .x-tab-bottom-over{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-over-bg.gif')}.x-reset .x-nlg .x-tab-top-active{background-image:url('../../resources/themes/images/default/tab/tab-default-top-active-bg.gif')}.x-reset .x-nlg .x-tab-bottom-active{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-active-bg.gif')}.x-reset .x-nlg .x-tab-top-disabled{background-image:url('../../resources/themes/images/default/tab/tab-default-top-disabled-bg.gif')!important}.x-reset .x-nlg .x-tab-bottom-disabled{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif')!important}.x-reset .x-tab-closable em{padding-right:14px}.x-reset .x-tab-close-btn{position:absolute;top:2px;right:2px;width:11px;height:11px;font-size:0;line-height:0;text-indent:-999px;background:no-repeat;background-image:url('../../resources/themes/images/default/tab/tab-default-close.gif');filter:alpha(opacity=60);opacity:.6}.x-reset .x-nbr .x-tab-close-btn{top:0;right:0}.x-reset a.x-tab-close-btn:hover{filter:alpha(opacity=100);opacity:1}.x-reset .x-tab-default-disabled a.x-tab-close-btn{filter:alpha(opacity=30);opacity:.3}.x-reset .x-nbr .x-tab-top-over .x-frame-tl,.x-reset .x-nbr .x-tab-top-over .x-frame-bl,.x-reset .x-nbr .x-tab-top-over .x-frame-tr,.x-reset .x-nbr .x-tab-top-over .x-frame-br,.x-reset .x-nbr .x-tab-top-over .x-frame-tc,.x-reset .x-nbr .x-tab-top-over .x-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-top-over-corners.gif')}.x-reset .x-nbr .x-tab-top-over .x-frame-ml,.x-reset .x-nbr .x-tab-top-over .x-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-top-over-sides.gif')}.x-reset .x-nbr .x-tab-top-over .x-frame-mc{background-color:#e8f2ff;background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-top-over-bg.gif')}.x-reset .x-nbr .x-tab-bottom-over .x-frame-tl,.x-reset .x-nbr .x-tab-bottom-over .x-frame-bl,.x-reset .x-nbr .x-tab-bottom-over .x-frame-tr,.x-reset .x-nbr .x-tab-bottom-over .x-frame-br,.x-reset .x-nbr .x-tab-bottom-over .x-frame-tc,.x-reset .x-nbr .x-tab-bottom-over .x-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-over-corners.gif')}.x-reset .x-nbr .x-tab-bottom-over .x-frame-ml,.x-reset .x-nbr .x-tab-bottom-over .x-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-over-sides.gif')}.x-reset .x-nbr .x-tab-bottom-over .x-frame-mc{background-color:#e8f2ff;background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-over-bg.gif')}.x-reset .x-nbr .x-tab-top-active .x-frame-tl,.x-reset .x-nbr .x-tab-top-active .x-frame-bl,.x-reset .x-nbr .x-tab-top-active .x-frame-tr,.x-reset .x-nbr .x-tab-top-active .x-frame-br,.x-reset .x-nbr .x-tab-top-active .x-frame-tc,.x-reset .x-nbr .x-tab-top-active .x-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-top-active-corners.gif')}.x-reset .x-nbr .x-tab-top-active .x-frame-ml,.x-reset .x-nbr .x-tab-top-active .x-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-top-active-sides.gif')}.x-reset .x-nbr .x-tab-top-active .x-frame-mc{background-color:#deecfd;background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-top-active-bg.gif')}.x-reset .x-nbr .x-tab-bottom-active .x-frame-tl,.x-reset .x-nbr .x-tab-bottom-active .x-frame-bl,.x-reset .x-nbr .x-tab-bottom-active .x-frame-tr,.x-reset .x-nbr .x-tab-bottom-active .x-frame-br,.x-reset .x-nbr .x-tab-bottom-active .x-frame-tc,.x-reset .x-nbr .x-tab-bottom-active .x-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-active-corners.gif')}.x-reset .x-nbr .x-tab-bottom-active .x-frame-ml,.x-reset .x-nbr .x-tab-bottom-active .x-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-active-sides.gif')}.x-reset .x-nbr .x-tab-bottom-active .x-frame-mc{background-color:#deecfd;background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-active-bg.gif')}.x-reset .x-nbr .x-tab-top-disabled .x-frame-tl,.x-reset .x-nbr .x-tab-top-disabled .x-frame-bl,.x-reset .x-nbr .x-tab-top-disabled .x-frame-tr,.x-reset .x-nbr .x-tab-top-disabled .x-frame-br,.x-reset .x-nbr .x-tab-top-disabled .x-frame-tc,.x-reset .x-nbr .x-tab-top-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-top-disabled-corners.gif')}.x-reset .x-nbr .x-tab-top-disabled .x-frame-ml,.x-reset .x-nbr .x-tab-top-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-top-disabled-sides.gif')}.x-reset .x-nbr .x-tab-top-disabled .x-frame-mc{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-top-disabled-bg.gif')}.x-reset .x-nbr .x-tab-bottom-disabled .x-frame-tl,.x-reset .x-nbr .x-tab-bottom-disabled .x-frame-bl,.x-reset .x-nbr .x-tab-bottom-disabled .x-frame-tr,.x-reset .x-nbr .x-tab-bottom-disabled .x-frame-br,.x-reset .x-nbr .x-tab-bottom-disabled .x-frame-tc,.x-reset .x-nbr .x-tab-bottom-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-corners.gif')}.x-reset .x-nbr .x-tab-bottom-disabled .x-frame-ml,.x-reset .x-nbr .x-tab-bottom-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-sides.gif')}.x-reset .x-nbr .x-tab-bottom-disabled .x-frame-mc{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif')}.x-reset .x-autowidth-table table.x-grid-table{table-layout:auto;width:auto!important}.x-reset .x-tree-no-lines .x-tree-elbow{background-color:transparent}.x-reset .x-tree-no-lines .x-tree-elbow-end{background-color:transparent}.x-reset .x-tree-no-lines .x-tree-elbow-line{background-color:transparent}.x-reset .x-tree-arrows .x-tree-elbow-plus{background:transparent no-repeat 0 0}.x-reset .x-tree-arrows .x-tree-elbow-end-plus{background:transparent no-repeat 0 0}.x-reset .x-tree-arrows .x-tree-elbow-end-minus{background:transparent no-repeat -16px 0}.x-reset .x-tree-arrows .x-tree-elbow-minus{background:transparent no-repeat -16px 0}.x-reset .x-tree-arrows .x-tree-elbow{background-color:transparent!important}.x-reset .x-tree-arrows .x-tree-elbow-end{background-color:transparent!important}.x-reset .x-tree-arrows .x-tree-elbow-line{background-color:transparent!important}.x-reset .x-tree-arrows .x-tree-expander-over .x-tree-elbow-plus,.x-reset .x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-plus{background-position:-32px 0}.x-reset .x-tree-arrows .x-tree-expander-over .x-tree-elbow-minus,.x-reset .x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-minus{background-position:-48px 0}.x-reset .x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-plus,.x-reset .x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-position:-16px 0}.x-reset .x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-plus,.x-reset .x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-end-plus{background-position:-48px 0}.x-reset .x-tree-elbow-plus,.x-reset .x-tree-elbow-minus,.x-reset .x-tree-elbow-end-plus,.x-reset .x-tree-elbow-end-minus{cursor:pointer}.x-reset .x-tree-lines .x-tree-elbow{background-image:url('../../resources/themes/images/default/tree/elbow.gif')}.x-reset .x-tree-lines .x-tree-elbow-end{background-image:url('../../resources/themes/images/default/tree/elbow-end.gif')}.x-reset .x-tree-lines .x-tree-elbow-plus{background-image:url('../../resources/themes/images/default/tree/elbow-plus.gif')}.x-reset .x-tree-lines .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-end-plus.gif')}.x-reset .x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus{background-image:url('../../resources/themes/images/default/tree/elbow-minus.gif')}.x-reset .x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-end-minus.gif')}.x-reset .x-tree-lines .x-tree-elbow-line{background-image:url('../../resources/themes/images/default/tree/elbow-line.gif')}.x-reset .x-tree-no-lines .x-tree-elbow-plus,.x-reset .x-tree-no-lines .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-plus-nl.gif')}.x-reset .x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-plus,.x-reset .x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-end-minus-nl.gif')}.x-reset .x-tree-arrows .x-tree-elbow-plus,.x-reset .x-tree-arrows .x-tree-elbow-minus,.x-reset .x-tree-arrows .x-tree-elbow-end-plus,.x-reset .x-tree-arrows .x-tree-elbow-end-minus{background-image:url('../../resources/themes/images/default/tree/arrows.gif')}.x-reset .x-tree-icon{margin:2px 3px 0 0}.x-reset .x-grid-with-row-lines .x-tree-icon{margin-top:1px}.x-reset .x-tree-elbow,.x-reset .x-tree-elbow-end,.x-reset .x-tree-elbow-plus,.x-reset .x-tree-elbow-end-plus,.x-reset .x-tree-elbow-empty,.x-reset .x-tree-elbow-line{height:20px;width:16px}.x-reset .x-grid-with-row-lines .x-tree-elbow,.x-reset .x-grid-with-row-lines .x-tree-elbow-end,.x-reset .x-grid-with-row-lines .x-tree-elbow-plus,.x-reset .x-grid-with-row-lines .x-tree-elbow-end-plus,.x-reset .x-grid-with-row-lines .x-tree-elbow-empty,.x-reset .x-grid-with-row-lines .x-tree-elbow-line{height:19px;background-position:0 -1px}.x-reset .x-tree-icon-leaf{width:16px;background-image:url('../../resources/themes/images/default/tree/leaf.gif')}.x-reset .x-tree-icon-parent{width:16px;background-image:url('../../resources/themes/images/default/tree/folder.gif')}.x-reset .x-grid-tree-node-expanded .x-tree-icon-parent{background-image:url('../../resources/themes/images/default/tree/folder-open.gif')}.x-reset .x-grid-rowbody{padding:0}.x-reset .x-grid-cell-treecolumn .x-grid-cell-inner{padding:0;line-height:19px}.x-reset .x-grid-with-row-lines .x-grid-cell-treecolumn .x-grid-cell-inner{line-height:17px}.x-reset .x-tree-panel .x-grid-cell-inner{cursor:pointer}.x-reset .x-tree-panel .x-grid-cell-inner img{display:inline-block;vertical-align:top}.x-reset .x-ie .x-tree-panel .x-tree-elbow,.x-reset .x-ie .x-tree-panel .x-tree-elbow-end,.x-reset .x-ie .x-tree-panel .x-tree-elbow-plus,.x-reset .x-ie .x-tree-panel .x-tree-elbow-end-plus,.x-reset .x-ie .x-tree-panel .x-tree-elbow-empty,.x-reset .x-ie .x-tree-panel .x-tree-elbow-line{vertical-align:-6px}.x-reset .x-grid-editor-on-text-node .x-form-text{padding-left:1px;padding-right:1px}.x-reset .x-ie .x-grid-editor-on-text-node .x-form-text{padding-left:2px;padding-right:2px}.x-reset .x-tree-checkbox{margin:4px 3px 0 0;display:inline-block;vertical-align:top;width:13px;height:13px;background:no-repeat;background-image:url('../../resources/themes/images/default/form/checkbox.gif');overflow:hidden;padding:0;border:0}.x-reset .x-tree-checkbox::-moz-focus-inner{padding:0;border:0}.x-reset .x-grid-with-row-lines .x-tree-checkbox{margin-top:3px}.x-reset .x-tree-checkbox-checked{background-position:0 -13px}.x-reset .x-tree-drop-ok-append .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-append.gif')}.x-reset .x-tree-drop-ok-above .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-above.gif')}.x-reset .x-tree-drop-ok-below .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-below.gif')}.x-reset .x-tree-drop-ok-between .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-between.gif')}.x-reset .x-grid-tree-loading .x-tree-icon{background-image:url('../../resources/themes/images/default/tree/loading.gif')}.x-reset .x-tree-ddindicator{height:1px;border-width:1px 0 0;border-style:dotted;border-color:green}.x-reset .x-grid-tree-loading span{font-style:italic;color:#444}.x-reset .x-tree-animator-wrap{overflow:hidden}.x-reset .x-surface{display:-moz-inline-box;-moz-box-orient:vertical;display:inline-block;vertical-align:middle;*vertical-align:auto;overflow:hidden}.x-reset .x-surface{*display:inline}.x-reset .rvml{behavior:url(#default#VML)}.x-reset .x-surface tspan{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-reset .x-vml-sprite{position:absolute;left:0;top:0;width:1px;height:1px}.x-reset .x-vml-group{position:absolute;left:0;top:0;width:1000px;height:1000px}.x-reset .x-vml-measure-span{position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;display:inline}.x-reset .x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}.x-reset .x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}.x-reset svg,.x-reset vml{overflow:hidden}.x-reset .x-viewport,.x-reset .x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;position:static}.x-reset .x-dd-drag-proxy{z-index:1000000!important}.x-reset .x-dd-drag-repair .x-dd-drag-ghost{filter:alpha(opacity=60);opacity:.6}.x-reset .x-dd-drag-repair .x-dd-drop-icon{display:none}.x-reset .x-dd-drag-ghost{filter:alpha(opacity=85);opacity:.85;padding:5px;padding-left:20px;white-space:nowrap;color:#000;font:normal 11px tahoma,arial,verdana,sans-serif;border:1px solid;border-color:#ddd #bbb #bbb #ddd;background-color:#fff}.x-reset .x-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1}.x-reset .x-view-selector{position:absolute;left:0;top:0;width:0;background-color:#c3daf9;border:1px dotted #39b;filter:alpha(opacity=50);opacity:.5;zoom:1}.x-reset .x-dd-drop-nodrop .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/dd/drop-no.gif')}.x-reset .x-dd-drop-ok .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/dd/drop-yes.gif')}.x-reset .x-dd-drop-ok-add .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/dd/drop-add.gif')}.x-reset .x-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;zoom:1;filter:alpha(opacity=0);opacity:0;background-color:#fff}.x-reset .x-collapsed .x-resizable-handle{display:none}.x-reset .x-resizable-handle-east{width:6px;height:100%;right:0;top:0}.x-reset .x-resizable-over .x-resizable-handle-east{cursor:e-resize}.x-reset .x-resizable-handle-south{width:100%;height:6px;left:0;bottom:0}.x-reset .x-resizable-over .x-resizable-handle-south{cursor:s-resize}.x-reset .x-resizable-handle-west{width:6px;height:100%;left:0;top:0}.x-reset .x-resizable-over .x-resizable-handle-west{cursor:w-resize}.x-reset .x-resizable-handle-north{width:100%;height:6px;left:0;top:0}.x-reset .x-resizable-over .x-resizable-handle-north{cursor:n-resize}.x-reset .x-resizable-handle-southeast{width:6px;height:6px;right:0;bottom:0;z-index:101}.x-reset .x-resizable-over .x-resizable-handle-southeast{cursor:se-resize}.x-reset .x-resizable-handle-northwest{width:6px;height:6px;left:0;top:0;z-index:101}.x-reset .x-resizable-over .x-resizable-handle-northwest{cursor:nw-resize}.x-reset .x-resizable-handle-northeast{width:6px;height:6px;right:0;top:0;z-index:101}.x-reset .x-resizable-over .x-resizable-handle-northeast{cursor:ne-resize}.x-reset .x-resizable-handle-southwest{width:6px;height:6px;left:0;bottom:0;z-index:101}.x-reset .x-resizable-over .x-resizable-handle-southwest{cursor:sw-resize}.x-reset .x-ie .x-resizable-handle-east{margin-right:-1px}.x-reset .x-ie .x-resizable-handle-south{margin-bottom:-1px}.x-reset .x-resizable-over .x-resizable-handle,.x-reset .x-resizable-pinned .x-resizable-handle{filter:alpha(opacity=100);opacity:1}.x-reset .x-window .x-window-handle{filter:alpha(opacity=0);opacity:0}.x-reset .x-window-collapsed .x-window-handle{display:none}.x-reset .x-resizable-proxy{border:1px dashed #3b5a82;position:absolute;left:0;top:0;overflow:hidden;z-index:50000}.x-reset .x-resizable-overlay{position:absolute;left:0;top:0;width:100%;height:100%;display:none;z-index:200000;background-color:#fff;filter:alpha(opacity=0);opacity:0}.x-reset .x-resizable-over .x-resizable-handle-east,.x-reset .x-resizable-over .x-resizable-handle-west,.x-reset .x-resizable-pinned .x-resizable-handle-east,.x-reset .x-resizable-pinned .x-resizable-handle-west{background-position:left;background-image:url('../../resources/themes/images/default/sizer/e-handle.gif')}.x-reset .x-resizable-over .x-resizable-handle-south,.x-reset .x-resizable-over .x-resizable-handle-north,.x-reset .x-resizable-pinned .x-resizable-handle-south,.x-reset .x-resizable-pinned .x-resizable-handle-north{background-position:top;background-image:url('../../resources/themes/images/default/sizer/s-handle.gif')}.x-reset .x-resizable-over .x-resizable-handle-southeast,.x-reset .x-resizable-pinned .x-resizable-handle-southeast{background-position:top left;background-image:url('../../resources/themes/images/default/sizer/se-handle.gif')}.x-reset .x-resizable-over .x-resizable-handle-northwest,.x-reset .x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right;background-image:url('../../resources/themes/images/default/sizer/nw-handle.gif')}.x-reset .x-resizable-over .x-resizable-handle-northeast,.x-reset .x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left;background-image:url('../../resources/themes/images/default/sizer/ne-handle.gif')}.x-reset .x-resizable-over .x-resizable-handle-southwest,.x-reset .x-resizable-pinned .x-resizable-handle-southwest{background-position:top right;background-image:url('../../resources/themes/images/default/sizer/sw-handle.gif')}.x-reset .x-splitter .x-collapse-el{position:absolute;cursor:pointer;background-color:transparent;background-repeat:no-repeat!important}.x-reset .x-layout-split-left,.x-reset .x-layout-split-right{top:50%;margin-top:-17px;width:5px;height:35px}.x-reset .x-layout-split-top,.x-reset .x-layout-split-bottom{left:50%;width:35px;height:5px;margin-left:-17px}.x-reset .x-layout-split-left{background:no-repeat top right;background-image:url('../../resources/themes/images/default/util/splitter/mini-left.gif')}.x-reset .x-layout-split-right{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-right.gif')}.x-reset .x-layout-split-top{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-top.gif')}.x-reset .x-layout-split-bottom{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-bottom.gif')}.x-reset .x-splitter-collapsed .x-layout-split-left{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-right.gif')}.x-reset .x-splitter-collapsed .x-layout-split-right{background:no-repeat top right;background-image:url('../../resources/themes/images/default/util/splitter/mini-left.gif')}.x-reset .x-splitter-collapsed .x-layout-split-top{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-bottom.gif')}.x-reset .x-splitter-collapsed .x-layout-split-bottom{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-top.gif')}.x-reset .x-splitter-horizontal{cursor:e-resize;cursor:row-resize;font-size:1px}.x-reset .x-splitter-vertical{cursor:e-resize;cursor:col-resize;font-size:1px}.x-reset .x-splitter-collapsed,.x-reset .x-splitter-horizontal-noresize,.x-reset .x-splitter-vertical-noresize{cursor:default}.x-reset .x-splitter-active{z-index:4;font-size:1px;background-color:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-reset .x-splitter-active .x-collapse-el{filter:alpha(opacity=30);opacity:.3}.x-reset .x-proxy-el{position:absolute;background:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-reset .x-docked{position:absolute!important;z-index:1}.x-reset .x-docked-top{border-bottom-width:0!important}.x-reset .x-docked-bottom{border-top-width:0!important}.x-reset .x-docked-left{border-right-width:0!important}.x-reset .x-docked-right{border-left-width:0!important}.x-reset .x-docked-noborder-top{border-top-width:0!important}.x-reset .x-docked-noborder-right{border-right-width:0!important}.x-reset .x-docked-noborder-bottom{border-bottom-width:0!important}.x-reset .x-docked-noborder-left{border-left-width:0!important}.x-reset .x-box-inner{overflow:hidden;zoom:1;position:relative;left:0;top:0}.x-reset .x-box-item{position:absolute!important;left:0;top:0}.x-reset .x-rtl .x-box-item{right:0;left:auto}.x-reset .x-box-layout-ct,.x-reset .x-border-layout-ct{overflow:hidden;zoom:1}.x-reset .x-border-layout-ct{background-color:#dfe8f6;position:relative}.x-reset .x-overflow-hidden{overflow:hidden!important}.x-reset .x-inline-children>*{display:inline-block!important}.x-reset .x-abs-layout-ct{position:relative}.x-reset .x-abs-layout-item{position:absolute!important}.x-reset .x-fit-item{position:relative}.x-reset .x-border-region-slide-in{z-index:5}.x-reset .x-region-collapsed-placeholder{z-index:4}.x-reset .x-accordion-hd .x-panel-header-text{color:black;font-weight:normal}.x-reset .x-accordion-hd{background:#d9e7f8!important;-moz-box-shadow:inset 0 0 0 0 #d9e7f8;-webkit-box-shadow:inset 0 0 0 0 #d9e7f8;-o-box-shadow:inset 0 0 0 0 #d9e7f8;box-shadow:inset 0 0 0 0 #d9e7f8}.x-reset .x-accordion-hd .x-tool-collapse-top,.x-reset .x-accordion-hd .x-tool-collapse-right,.x-reset .x-accordion-hd .x-tool-collapse-bottom,.x-reset .x-accordion-hd .x-tool-collapse-left{background-position:0 -255px}.x-reset .x-accordion-hd .x-tool-expand-top,.x-reset .x-accordion-hd .x-tool-expand-right,.x-reset .x-accordion-hd .x-tool-expand-bottom,.x-reset .x-accordion-hd .x-tool-expand-left{background-position:0 -240px}.x-reset .x-accordion-hd .x-tool-over .x-tool-collapse-top,.x-reset .x-accordion-hd .x-tool-over .x-tool-collapse-right,.x-reset .x-accordion-hd .x-tool-over .x-tool-collapse-bottom,.x-reset .x-accordion-hd .x-tool-over .x-tool-collapse-left{background-position:-15px -255px}.x-reset .x-accordion-hd .x-tool-over .x-tool-expand-top,.x-reset .x-accordion-hd .x-tool-over .x-tool-expand-right,.x-reset .x-accordion-hd .x-tool-over .x-tool-expand-bottom,.x-reset .x-accordion-hd .x-tool-over .x-tool-expand-left{background-position:-15px -240px}.x-reset .x-accordion-hd{border-width:1px 0 1px 0!important;padding:4px 5px 5px 5px;border-top-color:#f3f7fb!important}.x-reset .x-accordion-body{border-width:0!important}.x-reset .x-accordion-hd-sibling-expanded{border-top-color:#99bce8!important;-moz-box-shadow:inset 0 1px 0 0 #f3f7fb;-webkit-box-shadow:inset 0 1px 0 0 #f3f7fb;-o-box-shadow:inset 0 1px 0 0 #f3f7fb;box-shadow:inset 0 1px 0 0 #f3f7fb}.x-reset .x-accordion-hd-last-collapsed{border-bottom-color:#d9e7f8!important}.x-reset .x-frame-tl,.x-reset .x-frame-tr,.x-reset .x-frame-tc,.x-reset .x-frame-bl,.x-reset .x-frame-br,.x-reset .x-frame-bc{overflow:hidden;background-repeat:no-repeat}.x-reset .x-frame-tc,.x-reset .x-frame-bc{background-repeat:repeat-x}.x-reset .x-frame-mc{position:relative;background-repeat:repeat-x;overflow:hidden}.x-reset .x-box-scroller-left{float:left;height:100%;z-index:5}.x-reset .x-box-scroller-left .x-toolbar-scroll-left,.x-reset .x-box-scroller-left .x-tabbar-scroll-left{width:18px;position:relative;cursor:pointer;height:20px;background:transparent no-repeat -18px 0;background-image:url('../../resources/themes/images/default/tab-bar/scroll-left.gif')}.x-reset .x-box-scroller-left .x-toolbar-scroll-left-hover{background-position:0 0}.x-reset .x-box-scroller-left .x-toolbar-scroll-left-disabled,.x-reset .x-box-scroller-left .x-tabbar-scroll-left-disabled{background-position:-18px 0;filter:alpha(opacity=50);opacity:.5;cursor:default}.x-reset .x-box-scroller-left .x-toolbar-scroll-left{background-image:url('../../resources/themes/images/default/toolbar/scroll-left.gif');background-position:-14px 0}.x-reset .x-box-scroller-left .x-toolbar-scroll-left-hover{background-position:0 0}.x-reset .x-box-scroller-left .x-toolbar-scroll-left-disabled{background-position:-14px 0}.x-reset .x-box-scroller-left .x-toolbar-scroll-left{width:14px;height:22px;border-bottom:1px solid #8db2e3}.x-reset .x-horizontal-box-overflow-body{float:left}.x-reset .x-box-scroller-right{float:right;height:100%;z-index:5}.x-reset .x-box-scroller-right .x-toolbar-scroll-right,.x-reset .x-box-scroller-right .x-tabbar-scroll-right{width:18px;position:relative;cursor:pointer;height:20px;background:transparent no-repeat 0 0;background-image:url('../../resources/themes/images/default/tab-bar/scroll-right.gif')}.x-reset .x-box-scroller-right .x-toolbar-scroll-right-hover{background-position:-18px 0}.x-reset .x-box-scroller-right .x-toolbar-scroll-right-disabled,.x-reset .x-box-scroller-right .x-tabbar-scroll-right-disabled{background-position:0 0;filter:alpha(opacity=50);opacity:.5;cursor:default}.x-reset .x-box-scroller-right .x-toolbar-scroll-right{background-image:url('../../resources/themes/images/default/toolbar/scroll-right.gif')}.x-reset .x-box-scroller-right .x-toolbar-scroll-right-hover{background-position:-14px 0}.x-reset .x-box-scroller-right .x-toolbar-scroll-right-disabled{background-position:0 0}.x-reset .x-box-scroller-right .x-toolbar-scroll-right{width:14px;height:22px;border-bottom:1px solid #8db2e3}.x-reset .x-box-scroller-top .x-box-scroller{line-height:0;font-size:0}.x-reset .x-box-scroller-top .x-menu-scroll-top{background:transparent no-repeat center center;background-image:url('../../resources/themes/images/default/layout/mini-top.gif');height:8px;cursor:pointer}.x-reset .x-box-scroller-bottom .x-box-scroller{line-height:0;font-size:0}.x-reset .x-box-scroller-bottom .x-menu-scroll-bottom{background:transparent no-repeat center center;background-image:url('../../resources/themes/images/default/layout/mini-bottom.gif');height:8px;cursor:pointer}.x-reset .x-box-menu-right{float:right;padding-right:2px}.x-reset .x-column{float:left}.x-reset .x-ie6 .x-column{display:inline}.x-reset .x-quirks .x-ie .x-form-layout-table,.x-reset .x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item{position:relative}.x-reset .x-tool{height:15px}.x-reset .x-tool img{overflow:hidden;width:15px;height:15px;cursor:pointer;background-color:transparent;background-repeat:no-repeat;background-image:url('../../resources/themes/images/default/tools/tool-sprites.gif');margin:0}.x-reset .x-panel-header-horizontal .x-tool,.x-reset .x-window-header-horizontal .x-tool{margin-left:2px}.x-reset .x-panel-header-vertical .x-tool,.x-reset .x-window-header-vertical .x-tool{margin-top:2px}.x-reset .x-panel-header-vertical .x-tool-top,.x-reset .x-window-header-vertical .x-tool-top{margin:0 0 4px}.x-reset .x-tool-placeholder{visibility:hidden}.x-reset .x-tool-toggle{background-position:0 -60px}.x-reset .x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-reset .x-panel-collapsed .x-tool-toggle,.x-reset .x-fieldset-collapsed .x-tool-toggle{background-position:0 -75px}.x-reset .x-panel-collapsed .x-tool-over .x-tool-toggle,.x-reset .x-fieldset-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.x-reset .x-tool-close{background-position:0 0}.x-reset .x-tool-minimize{background-position:0 -15px}.x-reset .x-tool-maximize{background-position:0 -30px}.x-reset .x-tool-restore{background-position:0 -45px}.x-reset .x-tool-gear{background-position:0 -90px}.x-reset .x-tool-prev{background-position:0 -105px}.x-reset .x-tool-next{background-position:0 -120px}.x-reset .x-tool-pin{background-position:0 -135px}.x-reset .x-tool-unpin{background-position:0 -150px}.x-reset .x-tool-right{background-position:0 -165px}.x-reset .x-tool-left{background-position:0 -180px}.x-reset .x-tool-help{background-position:0 -300px}.x-reset .x-tool-save{background-position:0 -285px}.x-reset .x-tool-search{background-position:0 -270px}.x-reset .x-tool-minus{background-position:0 -255px}.x-reset .x-tool-plus{background-position:0 -240px}.x-reset .x-tool-refresh{background-position:0 -225px}.x-reset .x-tool-up{background-position:0 -210px}.x-reset .x-tool-down{background-position:0 -195px}.x-reset .x-tool-collapse{background-position:0 -345px}.x-reset .x-tool-expand{background-position:0 -330px}.x-reset .x-tool-print{background-position:0 -315px}.x-reset .x-tool-expand-bottom,.x-reset .x-tool-collapse-bottom{background-position:0 -195px}.x-reset .x-tool-expand-top,.x-reset .x-tool-collapse-top{background-position:0 -210px}.x-reset .x-tool-expand-left,.x-reset .x-tool-collapse-left{background-position:0 -180px}.x-reset .x-tool-expand-right,.x-reset .x-tool-collapse-right{background-position:0 -165px}.x-reset .x-tool-over .x-tool-close{background-position:-15px 0}.x-reset .x-tool-over .x-tool-minimize{background-position:-15px -15px}.x-reset .x-tool-over .x-tool-maximize{background-position:-15px -30px}.x-reset .x-tool-over .x-tool-restore{background-position:-15px -45px}.x-reset .x-tool-over .x-tool-gear{background-position:-15px -90px}.x-reset .x-tool-over .x-tool-prev{background-position:-15px -105px}.x-reset .x-tool-over .x-tool-next{background-position:-15px -120px}.x-reset .x-tool-over .x-tool-pin{background-position:-15px -135px}.x-reset .x-tool-over .x-tool-unpin{background-position:-15px -150px}.x-reset .x-tool-over .x-tool-right{background-position:-15px -165px}.x-reset .x-tool-over .x-tool-left{background-position:-15px -180px}.x-reset .x-tool-over .x-tool-down{background-position:-15px -195px}.x-reset .x-tool-over .x-tool-up{background-position:-15px -210px}.x-reset .x-tool-over .x-tool-refresh{background-position:-15px -225px}.x-reset .x-tool-over .x-tool-plus{background-position:-15px -240px}.x-reset .x-tool-over .x-tool-minus{background-position:-15px -255px}.x-reset .x-tool-over .x-tool-search{background-position:-15px -270px}.x-reset .x-tool-over .x-tool-save{background-position:-15px -285px}.x-reset .x-tool-over .x-tool-help{background-position:-15px -300px}.x-reset .x-tool-over .x-tool-print{background-position:-15px -315px}.x-reset .x-tool-over .x-tool-expand{background-position:-15px -330px}.x-reset .x-tool-over .x-tool-collapse{background-position:-15px -345px}.x-reset .x-tool-over .x-tool-expand-bottom,.x-reset .x-tool-over .x-tool-collapse-bottom{background-position:-15px -195px}.x-reset .x-tool-over .x-tool-expand-top,.x-reset .x-tool-over .x-tool-collapse-top{background-position:-15px -210px}.x-reset .x-tool-over .x-tool-expand-left,.x-reset .x-tool-over .x-tool-collapse-left{background-position:-15px -180px}.x-reset .x-tool-over .x-tool-expand-right,.x-reset .x-tool-over .x-tool-collapse-right{background-position:-15px -165px}.x-reset .x-horizontal-scroller-present .x-grid-body{border-bottom-width:0}.x-reset .x-vertical-scroller-present .x-grid-body{border-right-width:0}.x-reset .x-scroller{overflow:hidden}.x-reset .x-scroller-vertical{border:1px solid #99bce8;border-top-color:#c5c5c5}.x-reset .x-scroller-horizontal{border:1px solid #99bce8}.x-reset .x-vertical-scroller-present .x-scroller-horizontal{border-right-width:0}.x-reset .x-scroller-ct{overflow:hidden;position:absolute;margin:0;padding:0;border:0;left:0;top:0;box-sizing:content-box!important;-ms-box-sizing:content-box!important;-moz-box-sizing:content-box!important;-webkit-box-sizing:content-box!important}.x-reset .x-scroller-vertical .x-scroller-ct{overflow-y:scroll}.x-reset .x-scroller-horizontal .x-scroller-ct{overflow-x:scroll}.x-reset .x-html html,.x-reset .x-html address,.x-reset .x-html blockquote,.x-reset .x-html body,.x-reset .x-html dd,.x-reset .x-html div,.x-reset .x-html dl,.x-reset .x-html dt,.x-reset .x-html fieldset,.x-reset .x-html form,.x-reset .x-html frame,.x-reset .x-html frameset,.x-reset .x-html h1,.x-reset .x-html h2,.x-reset .x-html h3,.x-reset .x-html h4,.x-reset .x-html h5,.x-reset .x-html h6,.x-reset .x-html noframes,.x-reset .x-html ol,.x-reset .x-html p,.x-reset .x-html ul,.x-reset .x-html center,.x-reset .x-html dir,.x-reset .x-html hr,.x-reset .x-html menu,.x-reset .x-html pre{display:block}.x-reset .x-html li{display:list-item;list-style:disc}.x-reset .x-html head{display:none}.x-reset .x-html table{display:table}.x-reset .x-html tr{display:table-row}.x-reset .x-html thead{display:table-header-group}.x-reset .x-html tbody{display:table-row-group}.x-reset .x-html tfoot{display:table-footer-group}.x-reset .x-html col{display:table-column}.x-reset .x-html colgroup{display:table-column-group}.x-reset .x-html td,.x-reset .x-html th{display:table-cell}.x-reset .x-html caption{display:table-caption}.x-reset .x-html th{font-weight:bolder;text-align:center}.x-reset .x-html caption{text-align:center}.x-reset .x-html body{margin:8px}.x-reset .x-html h1{font-size:2em;margin:.67em 0}.x-reset .x-html h2{font-size:1.5em;margin:.75em 0}.x-reset .x-html h3{font-size:1.17em;margin:.83em 0}.x-reset .x-html h4,.x-reset .x-html p,.x-reset .x-html blockquote,.x-reset .x-html ul,.x-reset .x-html fieldset,.x-reset .x-html form,.x-reset .x-html ol,.x-reset .x-html dl,.x-reset .x-html dir,.x-reset .x-html menu{margin:1.12em 0}.x-reset .x-html h5{font-size:.83em;margin:1.5em 0}.x-reset .x-html h6{font-size:.75em;margin:1.67em 0}.x-reset .x-html h1,.x-reset .x-html h2,.x-reset .x-html h3,.x-reset .x-html h4,.x-reset .x-html h5,.x-reset .x-html h6,.x-reset .x-html b,.x-reset .x-html strong{font-weight:bolder}.x-reset .x-html blockquote{margin-left:40px;margin-right:40px}.x-reset .x-html i,.x-reset .x-html cite,.x-reset .x-html em,.x-reset .x-html var,.x-reset .x-html address{font-style:italic}.x-reset .x-html pre,.x-reset .x-html tt,.x-reset .x-html code,.x-reset .x-html kbd,.x-reset .x-html samp{font-family:monospace}.x-reset .x-html pre{white-space:pre}.x-reset .x-html button,.x-reset .x-html textarea,.x-reset .x-html input,.x-reset .x-html select{display:inline-block}.x-reset .x-html big{font-size:1.17em}.x-reset .x-html small,.x-reset .x-html sub,.x-reset .x-html sup{font-size:.83em}.x-reset .x-html sub{vertical-align:sub}.x-reset .x-html sup{vertical-align:super}.x-reset .x-html table{border-spacing:2px}.x-reset .x-html thead,.x-reset .x-html tbody,.x-reset .x-html tfoot{vertical-align:middle}.x-reset .x-html td,.x-reset .x-html th{vertical-align:inherit}.x-reset .x-html s,.x-reset .x-html strike,.x-reset .x-html del{text-decoration:line-through}.x-reset .x-html hr{border:1px inset}.x-reset .x-html ol,.x-reset .x-html ul,.x-reset .x-html dir,.x-reset .x-html menu,.x-reset .x-html dd{margin-left:40px}.x-reset .x-html ul,.x-reset .x-html menu,.x-reset .x-html dir{list-style-type:disc}.x-reset .x-html ol{list-style-type:decimal}.x-reset .x-html ol ul,.x-reset .x-html ul ol,.x-reset .x-html ul ul,.x-reset .x-html ol ol{margin-top:0;margin-bottom:0}.x-reset .x-html u,.x-reset .x-html ins{text-decoration:underline}.x-reset .x-html br:before{content:"\A"}.x-reset .x-html :before,.x-reset .x-html :after{white-space:pre-line}.x-reset .x-html center{text-align:center}.x-reset .x-html :link,.x-reset .x-html :visited{text-decoration:underline}.x-reset .x-html :focus{outline:invert dotted thin}.x-reset .x-html BDO[DIR="ltr"]{direction:ltr;unicode-bidi:bidi-override}.x-reset .x-html BDO[DIR="rtl"]{direction:rtl;unicode-bidi:bidi-override}.x-border-box .x-reset .x-tab-default-top{height:21px}.x-border-box .x-reset .x-tab-default-bottom{height:21px}.x-border-box .x-reset .x-tip-anchor{width:10px;height:10px}.x-border-box .x-reset .x-form-text{height:22px}.x-border-box .x-reset textarea.x-form-field{height:auto}.x-border-box .x-reset .x-field-default-toolbar .x-form-text{height:20px}.x-border-box .x-reset .x-form-trigger{height:22px}.x-border-box .x-reset .x-field-default-toolbar .x-form-trigger{height:20px}.x-border-box .x-reset.x-ie9 .x-grid-header-ct{padding-left:1px}.x-webkit .x-reset *:focus{outline:none!important}.x-webkit .x-reset .x-form-empty-field{line-height:15px}.x-webkit .x-reset .x-fieldset-header{padding-top:1px}.x-border-box .x-reset .x-tab-bar-top .x-tab-bar-body{height:25px}.x-border-box .x-reset .x-tab-bar-top .x-tab-bar-strip{height:3px}.x-border-box .x-reset .x-tab-bar-top .x-tab-bar-body-default-plain{height:22px}.x-border-box .x-reset .x-tab-bar-top .x-tab-bar-strip-default-plain{height:3px}.x-border-box .x-reset .x-tab-bar-bottom .x-tab-bar-body{height:25px}.x-border-box .x-reset .x-tab-bar-bottom .x-tab-bar-strip{height:3px}.x-border-box .x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain{height:23px}.x-border-box .x-reset .x-tab-bar-bottom .x-tab-bar-strip-default-plain{height:3px}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-ie.css
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-ie.css	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-ie.css	(revision 18277)
@@ -0,0 +1,21 @@
+/*
+This file is part of Ext JS 4.1
+
+Copyright (c) 2011-2012 Sencha Inc
+
+Contact:  http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2012-07-04 21:11:01 (65ff594cd80b9bad45df640c22cc0adb52c95a7b)
+*/
+html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}li{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%}q:before,q:after{content:""}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit}*:focus{outline:0}.x-border-box,.x-border-box *{box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box}.x-body{color:black;font-size:12px;font-family:tahoma,arial,verdana,sans-serif}.x-rtl{direction:rtl}.x-ltr{direction:ltr}.x-clear{overflow:hidden;clear:both;font-size:0;line-height:0;display:table}.x-strict .x-ie7 .x-clear{height:0;width:0}.x-layer{position:absolute!important;overflow:hidden;zoom:1}.x-shim{position:absolute;left:0;top:0;overflow:hidden;filter:alpha(opacity=0);opacity:0}.x-hide-display{display:none!important}.x-hide-visibility{visibility:hidden!important}.x-item-disabled .x-form-item-label,.x-item-disabled .x-form-field,.x-item-disabled .x-form-cb-label,.x-item-disabled .x-form-trigger{filter:alpha(opacity=30);opacity:.3}.x-ie6 .x-item-disabled{filter:none}.x-hidden,.x-hide-offsets{display:block!important;visibility:hidden!important;position:absolute!important;left:-10000px!important;top:-10000px!important}.x-hide-nosize{height:0!important;width:0!important}.x-masked-relative{position:relative}.x-ie6 .x-masked select,.x-ie6.x-body-masked select{visibility:hidden!important}.x-css-shadow{position:absolute;-moz-border-radius:5px 5px;-webkit-border-radius:5px 5px;-o-border-radius:5px 5px;-ms-border-radius:5px 5px;-khtml-border-radius:5px 5px;border-radius:5px 5px}.x-ie-shadow{background-color:#777;display:none;position:absolute;overflow:hidden;zoom:1}.x-box-tl{background:transparent no-repeat 0 0;zoom:1}.x-box-tc{height:8px;background:transparent repeat-x 0 0;overflow:hidden}.x-box-tr{background:transparent no-repeat right -8px}.x-box-ml{background:transparent repeat-y 0;padding-left:4px;overflow:hidden;zoom:1}.x-box-mc{background:repeat-x 0 -16px;padding:4px 10px}.x-box-mc h3{margin:0 0 4px 0;zoom:1}.x-box-mr{background:transparent repeat-y right;padding-right:4px;overflow:hidden}.x-box-bl{background:transparent no-repeat 0 -16px;zoom:1}.x-box-bc{background:transparent repeat-x 0 -8px;height:8px;overflow:hidden}.x-box-br{background:transparent no-repeat right -24px}.x-box-tl,.x-box-bl{padding-left:8px;overflow:hidden}.x-box-tr,.x-box-br{padding-right:8px;overflow:hidden}.x-box-tl{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-tc{background-image:url('../../resources/themes/images/default/box/tb.gif')}.x-box-tr{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-ml{background-image:url('../../resources/themes/images/default/box/l.gif')}.x-box-mc{background-color:#eee;background-image:url('../../resources/themes/images/default/box/tb.gif');font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:15px}.x-box-mc h3{font-size:18px;font-weight:bold}.x-box-mr{background-image:url('../../resources/themes/images/default/box/r.gif')}.x-box-bl{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-bc{background-image:url('../../resources/themes/images/default/box/tb.gif')}.x-box-br{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-blue .x-box-bl,.x-box-blue .x-box-br,.x-box-blue .x-box-tl,.x-box-blue .x-box-tr{background-image:url('../../resources/themes/images/default/box/corners-blue.gif')}.x-box-blue .x-box-bc,.x-box-blue .x-box-mc,.x-box-blue .x-box-tc{background-image:url('../../resources/themes/images/default/box/tb-blue.gif')}.x-box-blue .x-box-mc{background-color:#c3daf9}.x-box-blue .x-box-mc h3{color:#17385b}.x-box-blue .x-box-ml{background-image:url('../../resources/themes/images/default/box/l-blue.gif')}.x-box-blue .x-box-mr{background-image:url('../../resources/themes/images/default/box/r-blue.gif')}.x-container{zoom:1}.x-container:before{content:"";clear:both;display:table}table.x-container:before,tbody.x-container:before,tr.x-container:before{display:none}.x-focus-element{position:absolute;top:-10px;left:-10px;width:0;height:0}.x-focus-frame{position:absolute;left:0;top:0;z-index:100000000;width:0;height:0}.x-focus-frame-top,.x-focus-frame-bottom,.x-focus-frame-left,.x-focus-frame-right{position:absolute;top:0;left:0}.x-focus-frame-top,.x-focus-frame-bottom{border-top:solid 2px #15428b;height:2px}.x-focus-frame-left,.x-focus-frame-right{border-left:solid 2px #15428b;width:2px}.x-mask{z-index:100;position:absolute;top:0;left:0;filter:alpha(opacity=50);opacity:.5;width:100%;height:100%;zoom:1;background:#ccc}.x-mask-msg{z-index:20001;position:absolute;top:0;left:0;padding:2px;border:1px solid;border-color:#99bce8}.x-mask-msg div{padding:5px 10px 5px 25px;background-image:url('../../resources/themes/images/default/grid/loading.gif');background-repeat:no-repeat;background-position:5px center;cursor:wait;border:1px solid #a3bad9;background-color:#eee;color:#222;font:normal 11px tahoma,arial,verdana,sans-serif}.x-boundlist{border-width:1px;border-style:solid;border-color:#98c0f4;background:white}.x-boundlist .x-toolbar{border-width:1px 0 0 0}.x-strict .x-ie6 .x-boundlist-list-ct,.x-strict .x-ie7 .x-boundlist-list-ct{position:relative}.x-boundlist-item{padding:2px;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;cursor:pointer;cursor:hand;position:relative;border-width:1px;border-style:dotted;border-color:white}.x-boundlist-selected{background:#cbdaf0;border-color:#8eabe4}.x-boundlist-item-over{background:#dfe8f6;border-color:#a3bae9}.x-boundlist-floating{border-top-width:0}.x-boundlist-above{border-top-width:1px;border-bottom-width:1px}.x-btn{display:inline-block;zoom:1;*display:inline;position:relative;cursor:pointer;cursor:hand;white-space:nowrap;vertical-align:middle;background-repeat:no-repeat}.x-btn *{cursor:pointer;cursor:hand}.x-btn em{background-repeat:no-repeat}.x-btn em a{text-decoration:none;display:block;color:inherit;width:100%;zoom:1}.x-btn button{width:100%;display:block;margin:0;padding:0;border:0;background:0;outline:0 none;overflow:hidden;vertical-align:bottom;-webkit-appearance:none}.x-btn button::-moz-focus-inner{border:0;padding:0}.x-btn .x-btn-inner{display:block;white-space:nowrap;background-color:transparent;background-repeat:no-repeat;background-position:left center;overflow:hidden}.x-btn .x-btn-left .x-btn-inner{text-align:left}.x-btn .x-btn-center .x-btn-inner{text-align:center}.x-btn .x-btn-right .x-btn-inner{text-align:right}.x-btn-disabled span{filter:alpha(opacity=50);opacity:.5}.x-ie6 .x-btn-disabled span,.x-ie7 .x-btn-disabled span{filter:none}.x-ie7 .x-btn-disabled,.x-ie8 .x-btn-disabled{filter:none}.x-ie6 .x-btn-disabled .x-btn-icon,.x-ie7 .x-btn-disabled .x-btn-icon,.x-ie8 .x-btn-disabled .x-btn-icon{filter:alpha(opacity=60);opacity:.6}.x-ie9 .x-btn button{overflow:visible!important}* html .x-ie .x-btn button{width:1px}.x-ie .x-btn button{overflow-x:visible;vertical-align:baseline}.x-strict .x-ie6 .x-btn .x-frame-mc,.x-strict .x-ie7 .x-btn .x-frame-mc{height:100%}.x-btn .x-frame-mc{vertical-align:middle;white-space:nowrap;cursor:pointer}.x-btn-noicon .x-frame-mc{text-align:center}.x-btn-icon-text-left .x-btn-icon{background-position:left center}.x-btn-icon-text-right .x-btn-icon{background-position:right center}.x-btn-icon-text-top .x-btn-icon{background-position:center top}.x-btn-icon-text-bottom .x-btn-icon{background-position:center bottom}.x-btn button,.x-btn a{position:relative}.x-btn button .x-btn-icon,.x-btn a .x-btn-icon{position:absolute;background-repeat:no-repeat}.x-btn-arrow-right{background:transparent no-repeat right center;padding-right:12px}.x-btn-arrow-right .x-btn-inner{padding-right:0!important}.x-toolbar .x-btn-arrow-right{padding-right:12px}.x-btn-arrow-bottom{background:transparent no-repeat center bottom;padding-bottom:12px}.x-btn-arrow{background-image:url('../../resources/themes/images/default/button/arrow.gif');display:block}.x-btn-split-right,.x-btn-over .x-btn-split-right{background:transparent no-repeat right center;background-image:url('../../resources/themes/images/default/button/s-arrow.gif');padding-right:14px!important}.x-btn-split-bottom,.x-btn-over .x-btn-split-bottom{background:transparent no-repeat center bottom;background-image:url('../../resources/themes/images/default/button/s-arrow-b.gif');padding-bottom:14px}.x-toolbar .x-btn-split-right{background-image:url('../../resources/themes/images/default/button/s-arrow-noline.gif');padding-right:12px!important}.x-toolbar .x-btn-split-bottom{background-image:url('../../resources/themes/images/default/button/s-arrow-b-noline.gif')}.x-btn-split{display:block}.x-item-disabled,.x-item-disabled *{cursor:default}.x-cycle-fixed-width .x-btn-inner{text-align:inherit}.x-btn-over .x-btn-split-right{background-image:url('../../resources/themes/images/default/button/s-arrow-o.gif')}.x-btn-over .x-btn-split-bottom{background-image:url('../../resources/themes/images/default/button/s-arrow-bo.gif')}.x-btn-default-small{border-color:#d1d1d1}.x-btn-default-small{padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:white}.x-nlg .x-btn-default-small-mc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-bg.gif');background-color:white}.x-nbr .x-btn-default-small{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-btn-default-small-tl,.x-nbr .x-btn-default-small-bl,.x-nbr .x-btn-default-small-tr,.x-nbr .x-btn-default-small-br,.x-nbr .x-btn-default-small-tc,.x-nbr .x-btn-default-small-bc,.x-nbr .x-btn-default-small-ml,.x-nbr .x-btn-default-small-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-small-corners.gif')}.x-nbr .x-btn-default-small-ml,.x-nbr .x-btn-default-small-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-small-sides.gif');background-position:0 0}.x-nbr .x-btn-default-small-mc{padding:0}.x-strict .x-ie7 .x-btn-default-small-tl,.x-strict .x-ie7 .x-btn-default-small-bl{position:relative;right:0}.x-btn-default-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 4px}.x-btn-default-small-icon button,.x-btn-default-small-icon a,.x-btn-default-small-icon .x-btn-inner,.x-btn-default-small-noicon button,.x-btn-default-small-noicon a,.x-btn-default-small-noicon .x-btn-inner{height:16px;line-height:16px}.x-btn-default-small-icon button,.x-btn-default-small-icon a{padding:0}.x-btn-default-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-small-icon .x-btn-icon{width:16px;height:16px;top:0;left:0;bottom:0;right:0}.x-btn-default-small-icon-text-left button,.x-btn-default-small-icon-text-left a{height:16px}.x-btn-default-small-icon-text-left .x-btn-inner{height:16px;line-height:16px;padding-left:20px}.x-btn-default-small-icon-text-left .x-btn-icon{width:16px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-small-icon-text-left .x-btn-icon{height:16px}.x-btn-default-small-icon-text-right button,.x-btn-default-small-icon-text-right a{height:16px}.x-btn-default-small-icon-text-right .x-btn-inner{height:16px;line-height:16px;padding-right:20px!important}.x-btn-default-small-icon-text-right .x-btn-icon{width:16px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-small-icon-text-right .x-btn-icon{height:16px}.x-btn-default-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-small-icon-text-top .x-btn-icon{width:auto;height:16px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon{width:16px}.x-btn-default-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-small-icon-text-bottom .x-btn-icon{width:auto;height:16px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon{width:16px}.x-btn-default-small-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-small-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-small-menu-active,.x-btn-default-small-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-ms-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-btn-default-small-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-ms-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-btn-default-small-disabled .x-btn-inner{color:#333!important}.x-ie .x-btn-default-small-disabled .x-btn-inner{color:#595959!important}.x-ie6 .x-btn-default-small-disabled .x-btn-inner{color:#8c8c8c!important}.x-nbr .x-btn-default-small-over .x-frame-tl,.x-nbr .x-btn-default-small-over .x-frame-bl,.x-nbr .x-btn-default-small-over .x-frame-tr,.x-nbr .x-btn-default-small-over .x-frame-br,.x-nbr .x-btn-default-small-over .x-frame-tc,.x-nbr .x-btn-default-small-over .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-over-corners.gif')}.x-nbr .x-btn-default-small-over .x-frame-ml,.x-nbr .x-btn-default-small-over .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-small-over-sides.gif')}.x-nbr .x-btn-default-small-over .x-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-small-over-bg.gif')}.x-nbr .x-btn-default-small-focus .x-frame-tl,.x-nbr .x-btn-default-small-focus .x-frame-bl,.x-nbr .x-btn-default-small-focus .x-frame-tr,.x-nbr .x-btn-default-small-focus .x-frame-br,.x-nbr .x-btn-default-small-focus .x-frame-tc,.x-nbr .x-btn-default-small-focus .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-focus-corners.gif')}.x-nbr .x-btn-default-small-focus .x-frame-ml,.x-nbr .x-btn-default-small-focus .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-small-focus-sides.gif')}.x-nbr .x-btn-default-small-focus .x-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-small-focus-bg.gif')}.x-nbr .x-btn-default-small-menu-active .x-frame-tl,.x-nbr .x-btn-default-small-menu-active .x-frame-bl,.x-nbr .x-btn-default-small-menu-active .x-frame-tr,.x-nbr .x-btn-default-small-menu-active .x-frame-br,.x-nbr .x-btn-default-small-menu-active .x-frame-tc,.x-nbr .x-btn-default-small-menu-active .x-frame-bc,.x-nbr .x-btn-default-small-pressed .x-frame-tl,.x-nbr .x-btn-default-small-pressed .x-frame-bl,.x-nbr .x-btn-default-small-pressed .x-frame-tr,.x-nbr .x-btn-default-small-pressed .x-frame-br,.x-nbr .x-btn-default-small-pressed .x-frame-tc,.x-nbr .x-btn-default-small-pressed .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-pressed-corners.gif')}.x-nbr .x-btn-default-small-menu-active .x-frame-ml,.x-nbr .x-btn-default-small-menu-active .x-frame-mr,.x-nbr .x-btn-default-small-pressed .x-frame-ml,.x-nbr .x-btn-default-small-pressed .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-small-pressed-sides.gif')}.x-nbr .x-btn-default-small-menu-active .x-frame-mc,.x-nbr .x-btn-default-small-pressed .x-frame-mc{background-color:#b6cbe4;background-image:url('../../resources/themes/images/default/btn/btn-default-small-pressed-bg.gif')}.x-nbr .x-btn-default-small-disabled .x-frame-tl,.x-nbr .x-btn-default-small-disabled .x-frame-bl,.x-nbr .x-btn-default-small-disabled .x-frame-tr,.x-nbr .x-btn-default-small-disabled .x-frame-br,.x-nbr .x-btn-default-small-disabled .x-frame-tc,.x-nbr .x-btn-default-small-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-disabled-corners.gif')}.x-nbr .x-btn-default-small-disabled .x-frame-ml,.x-nbr .x-btn-default-small-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-small-disabled-sides.gif')}.x-nbr .x-btn-default-small-disabled .x-frame-mc{background-color:#f7f7f7;background-image:url('../../resources/themes/images/default/btn/btn-default-small-disabled-bg.gif')}.x-nlg .x-btn-default-small{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-bg.gif')}.x-nlg .x-btn-default-small-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-over-bg.gif')}.x-nlg .x-btn-default-small-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-focus-bg.gif')}.x-nlg .x-btn-default-small-menu-active,.x-nlg .x-btn-default-small-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-pressed-bg.gif')}.x-nlg .x-btn-default-small-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-disabled-bg.gif')}.x-btn-default-medium{border-color:#d1d1d1}.x-btn-default-medium{padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:white}.x-nlg .x-btn-default-medium-mc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif');background-color:white}.x-nbr .x-btn-default-medium{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-btn-default-medium-tl,.x-nbr .x-btn-default-medium-bl,.x-nbr .x-btn-default-medium-tr,.x-nbr .x-btn-default-medium-br,.x-nbr .x-btn-default-medium-tc,.x-nbr .x-btn-default-medium-bc,.x-nbr .x-btn-default-medium-ml,.x-nbr .x-btn-default-medium-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-corners.gif')}.x-nbr .x-btn-default-medium-ml,.x-nbr .x-btn-default-medium-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-sides.gif');background-position:0 0}.x-nbr .x-btn-default-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-medium-tl,.x-strict .x-ie7 .x-btn-default-medium-bl{position:relative;right:0}.x-btn-default-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-btn-default-medium-icon button,.x-btn-default-medium-icon a,.x-btn-default-medium-icon .x-btn-inner,.x-btn-default-medium-noicon button,.x-btn-default-medium-noicon a,.x-btn-default-medium-noicon .x-btn-inner{height:24px;line-height:24px}.x-btn-default-medium-icon button,.x-btn-default-medium-icon a{padding:0}.x-btn-default-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-medium-icon .x-btn-icon{width:24px;height:24px;top:0;left:0;bottom:0;right:0}.x-btn-default-medium-icon-text-left button,.x-btn-default-medium-icon-text-left a{height:24px}.x-btn-default-medium-icon-text-left .x-btn-inner{height:24px;line-height:24px;padding-left:28px}.x-btn-default-medium-icon-text-left .x-btn-icon{width:24px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon{height:24px}.x-btn-default-medium-icon-text-right button,.x-btn-default-medium-icon-text-right a{height:24px}.x-btn-default-medium-icon-text-right .x-btn-inner{height:24px;line-height:24px;padding-right:28px!important}.x-btn-default-medium-icon-text-right .x-btn-icon{width:24px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon{height:24px}.x-btn-default-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-medium-icon-text-top .x-btn-icon{width:auto;height:24px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon{width:24px}.x-btn-default-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-medium-icon-text-bottom .x-btn-icon{width:auto;height:24px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon{width:24px}.x-btn-default-medium-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-medium-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-medium-menu-active,.x-btn-default-medium-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-ms-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-btn-default-medium-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-ms-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-btn-default-medium-disabled .x-btn-inner{color:#333!important}.x-ie .x-btn-default-medium-disabled .x-btn-inner{color:#595959!important}.x-ie6 .x-btn-default-medium-disabled .x-btn-inner{color:#8c8c8c!important}.x-nbr .x-btn-default-medium-over .x-frame-tl,.x-nbr .x-btn-default-medium-over .x-frame-bl,.x-nbr .x-btn-default-medium-over .x-frame-tr,.x-nbr .x-btn-default-medium-over .x-frame-br,.x-nbr .x-btn-default-medium-over .x-frame-tc,.x-nbr .x-btn-default-medium-over .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-over-corners.gif')}.x-nbr .x-btn-default-medium-over .x-frame-ml,.x-nbr .x-btn-default-medium-over .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-over-sides.gif')}.x-nbr .x-btn-default-medium-over .x-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-over-bg.gif')}.x-nbr .x-btn-default-medium-focus .x-frame-tl,.x-nbr .x-btn-default-medium-focus .x-frame-bl,.x-nbr .x-btn-default-medium-focus .x-frame-tr,.x-nbr .x-btn-default-medium-focus .x-frame-br,.x-nbr .x-btn-default-medium-focus .x-frame-tc,.x-nbr .x-btn-default-medium-focus .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-focus-corners.gif')}.x-nbr .x-btn-default-medium-focus .x-frame-ml,.x-nbr .x-btn-default-medium-focus .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-focus-sides.gif')}.x-nbr .x-btn-default-medium-focus .x-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-focus-bg.gif')}.x-nbr .x-btn-default-medium-menu-active .x-frame-tl,.x-nbr .x-btn-default-medium-menu-active .x-frame-bl,.x-nbr .x-btn-default-medium-menu-active .x-frame-tr,.x-nbr .x-btn-default-medium-menu-active .x-frame-br,.x-nbr .x-btn-default-medium-menu-active .x-frame-tc,.x-nbr .x-btn-default-medium-menu-active .x-frame-bc,.x-nbr .x-btn-default-medium-pressed .x-frame-tl,.x-nbr .x-btn-default-medium-pressed .x-frame-bl,.x-nbr .x-btn-default-medium-pressed .x-frame-tr,.x-nbr .x-btn-default-medium-pressed .x-frame-br,.x-nbr .x-btn-default-medium-pressed .x-frame-tc,.x-nbr .x-btn-default-medium-pressed .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-pressed-corners.gif')}.x-nbr .x-btn-default-medium-menu-active .x-frame-ml,.x-nbr .x-btn-default-medium-menu-active .x-frame-mr,.x-nbr .x-btn-default-medium-pressed .x-frame-ml,.x-nbr .x-btn-default-medium-pressed .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-pressed-sides.gif')}.x-nbr .x-btn-default-medium-menu-active .x-frame-mc,.x-nbr .x-btn-default-medium-pressed .x-frame-mc{background-color:#b6cbe4;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif')}.x-nbr .x-btn-default-medium-disabled .x-frame-tl,.x-nbr .x-btn-default-medium-disabled .x-frame-bl,.x-nbr .x-btn-default-medium-disabled .x-frame-tr,.x-nbr .x-btn-default-medium-disabled .x-frame-br,.x-nbr .x-btn-default-medium-disabled .x-frame-tc,.x-nbr .x-btn-default-medium-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-disabled-corners.gif')}.x-nbr .x-btn-default-medium-disabled .x-frame-ml,.x-nbr .x-btn-default-medium-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-disabled-sides.gif')}.x-nbr .x-btn-default-medium-disabled .x-frame-mc{background-color:#f7f7f7;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif')}.x-nlg .x-btn-default-medium{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif')}.x-nlg .x-btn-default-medium-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-over-bg.gif')}.x-nlg .x-btn-default-medium-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-focus-bg.gif')}.x-nlg .x-btn-default-medium-menu-active,.x-nlg .x-btn-default-medium-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif')}.x-nlg .x-btn-default-medium-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif')}.x-btn-default-large{border-color:#d1d1d1}.x-btn-default-large{padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:white}.x-nlg .x-btn-default-large-mc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-bg.gif');background-color:white}.x-nbr .x-btn-default-large{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-btn-default-large-tl,.x-nbr .x-btn-default-large-bl,.x-nbr .x-btn-default-large-tr,.x-nbr .x-btn-default-large-br,.x-nbr .x-btn-default-large-tc,.x-nbr .x-btn-default-large-bc,.x-nbr .x-btn-default-large-ml,.x-nbr .x-btn-default-large-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-large-corners.gif')}.x-nbr .x-btn-default-large-ml,.x-nbr .x-btn-default-large-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-large-sides.gif');background-position:0 0}.x-nbr .x-btn-default-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-large-tl,.x-strict .x-ie7 .x-btn-default-large-bl{position:relative;right:0}.x-btn-default-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-btn-default-large-icon button,.x-btn-default-large-icon a,.x-btn-default-large-icon .x-btn-inner,.x-btn-default-large-noicon button,.x-btn-default-large-noicon a,.x-btn-default-large-noicon .x-btn-inner{height:32px;line-height:32px}.x-btn-default-large-icon button,.x-btn-default-large-icon a{padding:0}.x-btn-default-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-large-icon .x-btn-icon{width:32px;height:32px;top:0;left:0;bottom:0;right:0}.x-btn-default-large-icon-text-left button,.x-btn-default-large-icon-text-left a{height:32px}.x-btn-default-large-icon-text-left .x-btn-inner{height:32px;line-height:32px;padding-left:36px}.x-btn-default-large-icon-text-left .x-btn-icon{width:32px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-large-icon-text-left .x-btn-icon{height:32px}.x-btn-default-large-icon-text-right button,.x-btn-default-large-icon-text-right a{height:32px}.x-btn-default-large-icon-text-right .x-btn-inner{height:32px;line-height:32px;padding-right:36px!important}.x-btn-default-large-icon-text-right .x-btn-icon{width:32px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-large-icon-text-right .x-btn-icon{height:32px}.x-btn-default-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-large-icon-text-top .x-btn-icon{width:auto;height:32px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon{width:32px}.x-btn-default-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-large-icon-text-bottom .x-btn-icon{width:auto;height:32px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon{width:32px}.x-btn-default-large-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-large-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-large-menu-active,.x-btn-default-large-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-ms-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-btn-default-large-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-ms-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-btn-default-large-disabled .x-btn-inner{color:#333!important}.x-ie .x-btn-default-large-disabled .x-btn-inner{color:#595959!important}.x-ie6 .x-btn-default-large-disabled .x-btn-inner{color:#8c8c8c!important}.x-nbr .x-btn-default-large-over .x-frame-tl,.x-nbr .x-btn-default-large-over .x-frame-bl,.x-nbr .x-btn-default-large-over .x-frame-tr,.x-nbr .x-btn-default-large-over .x-frame-br,.x-nbr .x-btn-default-large-over .x-frame-tc,.x-nbr .x-btn-default-large-over .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-over-corners.gif')}.x-nbr .x-btn-default-large-over .x-frame-ml,.x-nbr .x-btn-default-large-over .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-large-over-sides.gif')}.x-nbr .x-btn-default-large-over .x-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-large-over-bg.gif')}.x-nbr .x-btn-default-large-focus .x-frame-tl,.x-nbr .x-btn-default-large-focus .x-frame-bl,.x-nbr .x-btn-default-large-focus .x-frame-tr,.x-nbr .x-btn-default-large-focus .x-frame-br,.x-nbr .x-btn-default-large-focus .x-frame-tc,.x-nbr .x-btn-default-large-focus .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-focus-corners.gif')}.x-nbr .x-btn-default-large-focus .x-frame-ml,.x-nbr .x-btn-default-large-focus .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-large-focus-sides.gif')}.x-nbr .x-btn-default-large-focus .x-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-large-focus-bg.gif')}.x-nbr .x-btn-default-large-menu-active .x-frame-tl,.x-nbr .x-btn-default-large-menu-active .x-frame-bl,.x-nbr .x-btn-default-large-menu-active .x-frame-tr,.x-nbr .x-btn-default-large-menu-active .x-frame-br,.x-nbr .x-btn-default-large-menu-active .x-frame-tc,.x-nbr .x-btn-default-large-menu-active .x-frame-bc,.x-nbr .x-btn-default-large-pressed .x-frame-tl,.x-nbr .x-btn-default-large-pressed .x-frame-bl,.x-nbr .x-btn-default-large-pressed .x-frame-tr,.x-nbr .x-btn-default-large-pressed .x-frame-br,.x-nbr .x-btn-default-large-pressed .x-frame-tc,.x-nbr .x-btn-default-large-pressed .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-pressed-corners.gif')}.x-nbr .x-btn-default-large-menu-active .x-frame-ml,.x-nbr .x-btn-default-large-menu-active .x-frame-mr,.x-nbr .x-btn-default-large-pressed .x-frame-ml,.x-nbr .x-btn-default-large-pressed .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-large-pressed-sides.gif')}.x-nbr .x-btn-default-large-menu-active .x-frame-mc,.x-nbr .x-btn-default-large-pressed .x-frame-mc{background-color:#b6cbe4;background-image:url('../../resources/themes/images/default/btn/btn-default-large-pressed-bg.gif')}.x-nbr .x-btn-default-large-disabled .x-frame-tl,.x-nbr .x-btn-default-large-disabled .x-frame-bl,.x-nbr .x-btn-default-large-disabled .x-frame-tr,.x-nbr .x-btn-default-large-disabled .x-frame-br,.x-nbr .x-btn-default-large-disabled .x-frame-tc,.x-nbr .x-btn-default-large-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-disabled-corners.gif')}.x-nbr .x-btn-default-large-disabled .x-frame-ml,.x-nbr .x-btn-default-large-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-large-disabled-sides.gif')}.x-nbr .x-btn-default-large-disabled .x-frame-mc{background-color:#f7f7f7;background-image:url('../../resources/themes/images/default/btn/btn-default-large-disabled-bg.gif')}.x-nlg .x-btn-default-large{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-bg.gif')}.x-nlg .x-btn-default-large-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-over-bg.gif')}.x-nlg .x-btn-default-large-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-focus-bg.gif')}.x-nlg .x-btn-default-large-menu-active,.x-nlg .x-btn-default-large-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-pressed-bg.gif')}.x-nlg .x-btn-default-large-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-disabled-bg.gif')}.x-btn-default-toolbar-small{border-color:transparent}.x-btn-default-toolbar-small{padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:transparent}.x-nlg .x-btn-default-toolbar-small-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-small{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-btn-default-toolbar-small-tl,.x-nbr .x-btn-default-toolbar-small-bl,.x-nbr .x-btn-default-toolbar-small-tr,.x-nbr .x-btn-default-toolbar-small-br,.x-nbr .x-btn-default-toolbar-small-tc,.x-nbr .x-btn-default-toolbar-small-bc,.x-nbr .x-btn-default-toolbar-small-ml,.x-nbr .x-btn-default-toolbar-small-mr{zoom:1}.x-nbr .x-btn-default-toolbar-small-ml,.x-nbr .x-btn-default-toolbar-small-mr{zoom:1}.x-nbr .x-btn-default-toolbar-small-mc{padding:0}.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,.x-strict .x-ie7 .x-btn-default-toolbar-small-bl{position:relative;right:0}.x-btn-default-toolbar-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 4px}.x-btn-default-toolbar-small-icon button,.x-btn-default-toolbar-small-icon a,.x-btn-default-toolbar-small-icon .x-btn-inner,.x-btn-default-toolbar-small-noicon button,.x-btn-default-toolbar-small-noicon a,.x-btn-default-toolbar-small-noicon .x-btn-inner{height:16px;line-height:16px}.x-btn-default-toolbar-small-icon button,.x-btn-default-toolbar-small-icon a{padding:0}.x-btn-default-toolbar-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-toolbar-small-icon .x-btn-icon{width:16px;height:16px;top:0;left:0;bottom:0;right:0}.x-btn-default-toolbar-small-icon-text-left button,.x-btn-default-toolbar-small-icon-text-left a{height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-inner{height:16px;line-height:16px;padding-left:20px}.x-btn-default-toolbar-small-icon-text-left .x-btn-icon{width:16px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon{height:16px}.x-btn-default-toolbar-small-icon-text-right button,.x-btn-default-toolbar-small-icon-text-right a{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-btn-inner{height:16px;line-height:16px;padding-right:20px!important}.x-btn-default-toolbar-small-icon-text-right .x-btn-icon{width:16px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon{height:16px}.x-btn-default-toolbar-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-toolbar-small-icon-text-top .x-btn-icon{width:auto;height:16px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon{width:16px}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon{width:auto;height:16px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon{width:16px}.x-btn-default-toolbar-small-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-small-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-small-menu-active,.x-btn-default-toolbar-small-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-ms-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-btn-default-toolbar-small-disabled{background-image:none;background-color:transparent}.x-btn-default-toolbar-small-disabled .x-btn-inner{color:#333!important}.x-ie .x-btn-default-toolbar-small-disabled .x-btn-inner{color:#595959!important}.x-ie6 .x-btn-default-toolbar-small-disabled .x-btn-inner{color:#8c8c8c!important}.x-nbr .x-btn-default-toolbar-small-over .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-over .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-over .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-over .x-frame-br,.x-nbr .x-btn-default-toolbar-small-over .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-over .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-corners.gif')}.x-nbr .x-btn-default-toolbar-small-over .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-over .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-sides.gif')}.x-nbr .x-btn-default-toolbar-small-over .x-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif')}.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-br,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-corners.gif')}.x-nbr .x-btn-default-toolbar-small-focus .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-sides.gif')}.x-nbr .x-btn-default-toolbar-small-focus .x-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif')}.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-br,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bc,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-br,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-corners.gif')}.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mr,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-sides.gif')}.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mc,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mc{background-color:#bccfe5;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif')}.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-br,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-disabled-corners.gif')}.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-disabled-sides.gif')}.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-small-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif')}.x-nlg .x-btn-default-toolbar-small-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif')}.x-nlg .x-btn-default-toolbar-small-menu-active,.x-nlg .x-btn-default-toolbar-small-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif')}.x-btn-default-toolbar-medium{border-color:transparent}.x-btn-default-toolbar-medium{padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-nlg .x-btn-default-toolbar-medium-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-medium{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-btn-default-toolbar-medium-tl,.x-nbr .x-btn-default-toolbar-medium-bl,.x-nbr .x-btn-default-toolbar-medium-tr,.x-nbr .x-btn-default-toolbar-medium-br,.x-nbr .x-btn-default-toolbar-medium-tc,.x-nbr .x-btn-default-toolbar-medium-bc,.x-nbr .x-btn-default-toolbar-medium-ml,.x-nbr .x-btn-default-toolbar-medium-mr{zoom:1}.x-nbr .x-btn-default-toolbar-medium-ml,.x-nbr .x-btn-default-toolbar-medium-mr{zoom:1}.x-nbr .x-btn-default-toolbar-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl{position:relative;right:0}.x-btn-default-toolbar-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-btn-default-toolbar-medium-icon button,.x-btn-default-toolbar-medium-icon a,.x-btn-default-toolbar-medium-icon .x-btn-inner,.x-btn-default-toolbar-medium-noicon button,.x-btn-default-toolbar-medium-noicon a,.x-btn-default-toolbar-medium-noicon .x-btn-inner{height:24px;line-height:24px}.x-btn-default-toolbar-medium-icon button,.x-btn-default-toolbar-medium-icon a{padding:0}.x-btn-default-toolbar-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-toolbar-medium-icon .x-btn-icon{width:24px;height:24px;top:0;left:0;bottom:0;right:0}.x-btn-default-toolbar-medium-icon-text-left button,.x-btn-default-toolbar-medium-icon-text-left a{height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner{height:24px;line-height:24px;padding-left:28px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon{width:24px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon{height:24px}.x-btn-default-toolbar-medium-icon-text-right button,.x-btn-default-toolbar-medium-icon-text-right a{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner{height:24px;line-height:24px;padding-right:28px!important}.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon{width:24px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon{height:24px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon{width:auto;height:24px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon{width:24px}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon{width:auto;height:24px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon{width:24px}.x-btn-default-toolbar-medium-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-medium-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-medium-menu-active,.x-btn-default-toolbar-medium-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-ms-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-btn-default-toolbar-medium-disabled{background-image:none;background-color:transparent}.x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#333!important}.x-ie .x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#595959!important}.x-ie6 .x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#8c8c8c!important}.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-corners.gif')}.x-nbr .x-btn-default-toolbar-medium-over .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-sides.gif')}.x-nbr .x-btn-default-toolbar-medium-over .x-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif')}.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-corners.gif')}.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-sides.gif')}.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif')}.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bc,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-corners.gif')}.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mr,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-sides.gif')}.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mc,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mc{background-color:#bccfe5;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif')}.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-corners.gif')}.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-sides.gif')}.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-medium-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif')}.x-nlg .x-btn-default-toolbar-medium-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif')}.x-nlg .x-btn-default-toolbar-medium-menu-active,.x-nlg .x-btn-default-toolbar-medium-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif')}.x-btn-default-toolbar-large{border-color:transparent}.x-btn-default-toolbar-large{padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-nlg .x-btn-default-toolbar-large-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-large{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-btn-default-toolbar-large-tl,.x-nbr .x-btn-default-toolbar-large-bl,.x-nbr .x-btn-default-toolbar-large-tr,.x-nbr .x-btn-default-toolbar-large-br,.x-nbr .x-btn-default-toolbar-large-tc,.x-nbr .x-btn-default-toolbar-large-bc,.x-nbr .x-btn-default-toolbar-large-ml,.x-nbr .x-btn-default-toolbar-large-mr{zoom:1}.x-nbr .x-btn-default-toolbar-large-ml,.x-nbr .x-btn-default-toolbar-large-mr{zoom:1}.x-nbr .x-btn-default-toolbar-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,.x-strict .x-ie7 .x-btn-default-toolbar-large-bl{position:relative;right:0}.x-btn-default-toolbar-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-btn-default-toolbar-large-icon button,.x-btn-default-toolbar-large-icon a,.x-btn-default-toolbar-large-icon .x-btn-inner,.x-btn-default-toolbar-large-noicon button,.x-btn-default-toolbar-large-noicon a,.x-btn-default-toolbar-large-noicon .x-btn-inner{height:32px;line-height:32px}.x-btn-default-toolbar-large-icon button,.x-btn-default-toolbar-large-icon a{padding:0}.x-btn-default-toolbar-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-toolbar-large-icon .x-btn-icon{width:32px;height:32px;top:0;left:0;bottom:0;right:0}.x-btn-default-toolbar-large-icon-text-left button,.x-btn-default-toolbar-large-icon-text-left a{height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-inner{height:32px;line-height:32px;padding-left:36px}.x-btn-default-toolbar-large-icon-text-left .x-btn-icon{width:32px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon{height:32px}.x-btn-default-toolbar-large-icon-text-right button,.x-btn-default-toolbar-large-icon-text-right a{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-btn-inner{height:32px;line-height:32px;padding-right:36px!important}.x-btn-default-toolbar-large-icon-text-right .x-btn-icon{width:32px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon{height:32px}.x-btn-default-toolbar-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-toolbar-large-icon-text-top .x-btn-icon{width:auto;height:32px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon{width:32px}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon{width:auto;height:32px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon{width:32px}.x-btn-default-toolbar-large-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-large-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-large-menu-active,.x-btn-default-toolbar-large-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-ms-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-btn-default-toolbar-large-disabled{background-image:none;background-color:transparent}.x-btn-default-toolbar-large-disabled .x-btn-inner{color:#333!important}.x-ie .x-btn-default-toolbar-large-disabled .x-btn-inner{color:#595959!important}.x-ie6 .x-btn-default-toolbar-large-disabled .x-btn-inner{color:#8c8c8c!important}.x-nbr .x-btn-default-toolbar-large-over .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-over .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-over .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-over .x-frame-br,.x-nbr .x-btn-default-toolbar-large-over .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-over .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-corners.gif')}.x-nbr .x-btn-default-toolbar-large-over .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-over .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-sides.gif')}.x-nbr .x-btn-default-toolbar-large-over .x-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif')}.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-br,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-corners.gif')}.x-nbr .x-btn-default-toolbar-large-focus .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-sides.gif')}.x-nbr .x-btn-default-toolbar-large-focus .x-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif')}.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-br,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bc,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-br,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-corners.gif')}.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mr,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-sides.gif')}.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mc,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mc{background-color:#bccfe5;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif')}.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-br,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-disabled-corners.gif')}.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-disabled-sides.gif')}.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-large-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif')}.x-nlg .x-btn-default-toolbar-large-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif')}.x-nlg .x-btn-default-toolbar-large-menu-active,.x-nlg .x-btn-default-toolbar-large-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif')}.x-btn-default-toolbar-small-disabled,.x-btn-default-toolbar-medium-disabled,.x-btn-default-toolbar-large-disabled{border-color:transparent;background-image:none;background:transparent}.x-btn-group{position:relative;overflow:hidden}.x-btn-group-body{position:relative;zoom:1;padding:0 1px}.x-btn-group-body .x-table-layout-cell{vertical-align:top}.x-btn-group-header-text{white-space:nowrap}.x-btn-group-default-framed{padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#d0def0}.x-nlg .x-btn-group-default-framed-mc{background-color:#d0def0}.x-nbr .x-btn-group-default-framed{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000202px 1000202px}.x-nbr .x-btn-group-default-framed-tl,.x-nbr .x-btn-group-default-framed-bl,.x-nbr .x-btn-group-default-framed-tr,.x-nbr .x-btn-group-default-framed-br,.x-nbr .x-btn-group-default-framed-tc,.x-nbr .x-btn-group-default-framed-bc,.x-nbr .x-btn-group-default-framed-ml,.x-nbr .x-btn-group-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn-group/btn-group-default-framed-corners.gif')}.x-nbr .x-btn-group-default-framed-ml,.x-nbr .x-btn-group-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn-group/btn-group-default-framed-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-btn-group-default-framed-mc{padding:0}.x-strict .x-ie7 .x-btn-group-default-framed-tl,.x-strict .x-ie7 .x-btn-group-default-framed-bl{position:relative;right:0}.x-btn-group-default-framed{border-color:#b7c8d7;-moz-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-webkit-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-o-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset}.x-btn-group-header-default-framed{margin:2px 2px 0 2px}.x-btn-group-header-body-default-framed{padding:1px 0;background:#c2d8f0;-moz-border-radius-topleft:2px;-webkit-border-top-left-radius:2px;-o-border-top-left-radius:2px;-ms-border-top-left-radius:2px;-khtml-border-top-left-radius:2px;border-top-left-radius:2px;-moz-border-radius-topright:2px;-webkit-border-top-right-radius:2px;-o-border-top-right-radius:2px;-ms-border-top-right-radius:2px;-khtml-border-top-right-radius:2px;border-top-right-radius:2px}.x-btn-group-header-text-default-framed{font:normal 11px tahoma,arial,verdana,sans-serif;color:#3e6aaa}.x-datepicker{border:1px solid #1b376c;background-color:white;position:relative}.x-datepicker a{-moz-outline:0 none;outline:0 none;color:#15428b;text-decoration:none;border-width:0}.x-datepicker-inner,.x-datepicker-inner td,.x-datepicker-inner th{border-collapse:separate}.x-datepicker-header{position:relative;height:26px;background-image:none;background-color:#23427c;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#264888),color-stop(100%,#1f3a6c));background-image:-webkit-linear-gradient(top,#264888,#1f3a6c);background-image:-moz-linear-gradient(top,#264888,#1f3a6c);background-image:-o-linear-gradient(top,#264888,#1f3a6c);background-image:-ms-linear-gradient(top,#264888,#1f3a6c);background-image:linear-gradient(top,#264888,#1f3a6c)}.x-datepicker-prev,.x-datepicker-next{position:absolute;top:5px;width:18px}.x-datepicker-prev a,.x-datepicker-next a{display:block;width:16px;height:16px;background-position:top;background-repeat:no-repeat;cursor:pointer;text-decoration:none!important;filter:alpha(opacity=70);opacity:.7}.x-datepicker-prev a:hover,.x-datepicker-next a:hover{filter:alpha(opacity=100);opacity:1}.x-datepicker-next{right:5px}.x-datepicker-next a{background-image:url('../../resources/themes/images/default/shared/right-btn.gif')}.x-datepicker-prev{left:5px}.x-datepicker-prev a{background-image:url('../../resources/themes/images/default/shared/left-btn.gif')}.x-item-disabled .x-datepicker-prev a:hover,.x-item-disabled .x-datepicker-next a:hover{filter:alpha(opacity=60);opacity:.6}.x-datepicker-month{padding-top:3px}.x-datepicker-month .x-btn,.x-datepicker-month button,.x-datepicker-month .x-btn-tc,.x-datepicker-month .x-btn-tl,.x-datepicker-month .x-btn-tr,.x-datepicker-month .x-btn-mc,.x-datepicker-month .x-btn-ml,.x-datepicker-month .x-btn-mr,.x-datepicker-month .x-btn-bc,.x-datepicker-month .x-btn-bl,.x-datepicker-month .x-btn-br{background:transparent!important;border-width:0!important}.x-datepicker-month span{color:#fff!important}.x-datepicker-month .x-btn-split-right{background-image:url('../../resources/themes/images/default/button/s-arrow-light.gif');padding-right:12px}.x-datepicker-next{text-align:right}.x-datepicker-month{text-align:center}.x-datepicker-month button{color:white!important}table.x-datepicker-inner{width:100%;table-layout:fixed}table.x-datepicker-inner th{width:25px;height:19px;padding:0;color:#233d6d;font:normal 10px tahoma,arial,verdana,sans-serif;text-align:right;border-bottom:1px solid #b2d1f5;border-collapse:separate;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#edf4fd),color-stop(100%,#cde1f9));background-image:-webkit-linear-gradient(top,#edf4fd,#cde1f9);background-image:-moz-linear-gradient(top,#edf4fd,#cde1f9);background-image:-o-linear-gradient(top,#edf4fd,#cde1f9);background-image:-ms-linear-gradient(top,#edf4fd,#cde1f9);background-image:linear-gradient(top,#edf4fd,#cde1f9);cursor:default}table.x-datepicker-inner th span{display:block;padding-right:7px}table.x-datepicker-inner tr{height:20px}table.x-datepicker-inner td{border:1px solid;height:17px;border-color:white;text-align:right;padding:0}table.x-datepicker-inner a{padding-right:4px;display:block;zoom:1;font:normal 11px tahoma,arial,verdana,sans-serif;color:black;text-decoration:none;text-align:right}table.x-datepicker-inner .x-datepicker-active{cursor:pointer;color:black}table.x-datepicker-inner .x-datepicker-selected a{background:repeat-x left top;background-color:#dae5f3;border:1px solid #8db2e3}table.x-datepicker-inner .x-datepicker-selected span{font-weight:bold}table.x-datepicker-inner .x-datepicker-today a{border:1px solid;border-color:darkred}table.x-datepicker-inner .x-datepicker-prevday a,table.x-datepicker-inner .x-datepicker-nextday a{text-decoration:none!important;color:#aaa}table.x-datepicker-inner a:hover,table.x-datepicker-inner .x-datepicker-disabled a:hover{text-decoration:none!important;color:#000;background-color:#ddecfe}table.x-datepicker-inner .x-datepicker-disabled a{cursor:default;background-color:#eee;color:#bbb}.x-datepicker-footer,.x-monthpicker-buttons{position:relative;border-top:1px solid #b2d1f5;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dee8f5),color-stop(49%,#d1dff0),color-stop(51%,#c7d8ed),color-stop(100%,#cbdaee));background-image:-webkit-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-moz-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-o-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-ms-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);text-align:center}.x-datepicker-footer .x-btn,.x-monthpicker-buttons .x-btn{position:relative;margin:4px}.x-item-disabled .x-datepicker-inner a:hover{background:0}.x-datepicker .x-monthpicker{position:absolute;left:0;top:0}.x-monthpicker{border:1px solid #1b376c;background-color:white}.x-monthpicker-months,.x-monthpicker-years{float:left;height:167px;width:88px}.x-monthpicker-item{float:left;margin:4px 0 5px 0;font:normal 11px tahoma,arial,verdana,sans-serif;text-align:center;vertical-align:middle;height:18px;width:43px;border:0 none}.x-monthpicker-item a{display:block;margin:0 5px;text-decoration:none;color:#15428b;border:1px solid white;line-height:17px}.x-monthpicker-item a:hover{background-color:#ddecfe}.x-monthpicker-item a.x-monthpicker-selected{background-color:#dfecfb;border:1px solid #8db2e3}.x-monthpicker-months{border-right:1px solid #1b376c;width:87px}.x-monthpicker-years .x-monthpicker-item{width:44px}.x-monthpicker-yearnav{height:28px}.x-monthpicker-yearnav button{background-image:url('../../resources/themes/images/default/tools/tool-sprites.gif');height:15px;width:15px;padding:0;margin:6px 12px 5px 15px;border:0;outline:0 none}.x-monthpicker-yearnav button::-moz-focus-inner{border:0;padding:0}.x-monthpicker-yearnav-next{background-position:0 -120px}.x-monthpicker-yearnav-next-over{cursor:pointer;cursor:hand;background-position:-15px -120px}.x-monthpicker-yearnav-prev{background-position:0 -105px}.x-monthpicker-yearnav-prev-over{cursor:pointer;cursor:hand;background-position:-15px -105px}.x-monthpicker-small .x-monthpicker-item{margin:2px 0 2px 0}.x-monthpicker-small .x-monthpicker-yearnav{height:23px}.x-monthpicker-small .x-monthpicker-months,.x-monthpicker-small .x-monthpicker-years{height:136px}.x-quirks .x-ie7 .x-monthpicker-buttons .x-btn,.x-quirks .x-ie8 .x-monthpicker-buttons .x-btn{margin-top:2px}.x-quirks .x-monthpicker-small .x-monthpicker-yearnav button{margin-top:3px;margin-bottom:3px}.x-ie6 .x-monthpicker-small .x-monthpicker-yearnav button{margin-top:3px;margin-bottom:3px}.x-nlg .x-datepicker-header{background-image:url('../../resources/themes/images/default/datepicker/datepicker-header-bg.gif');background-repeat:repeat-x;background-position:top left}.x-nlg .x-datepicker-footer,.x-nlg .x-monthpicker-buttons{background-image:url('../../resources/themes/images/default/datepicker/datepicker-footer-bg.gif');background-repeat:repeat-x;background-position:top left}.x-color-picker{width:144px;height:90px;cursor:pointer}.x-color-picker a{border:1px solid #fff;float:left;padding:2px;text-decoration:none;-moz-outline:0 none;outline:0 none;cursor:pointer}.x-color-picker a:hover,.x-color-picker a.x-color-picker-selected{border-color:#8bb8f3;background-color:#deecfd}.x-color-picker em{display:block;border:1px solid #aca899}.x-color-picker em span{cursor:pointer;display:block;height:10px;width:10px;line-height:10px}.x-menu-body{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;background:#f0f0f0!important;padding:2px}.x-menu-item .x-form-text{user-select:text;-webkit-user-select:text;-o-user-select:text;-ie-user-select:text;-moz-user-select:text;-ie-user-select:text}.x-menu-icon-separator{position:absolute;top:0;left:27px;z-index:0;border-left:solid 1px #e0e0e0;background-color:white;width:2px;overflow:hidden}.x-menu-plain .x-menu-icon-separator{display:none}.x-menu-focus{display:block;position:absolute;top:-10px;left:-10px;width:0;height:0}.x-menu-item{white-space:nowrap;overflow:hidden;z-index:1}.x-menu-item-cmp{margin-bottom:1px}.x-menu-item-link{display:block;margin:1px;padding:6px 2px 3px 32px;text-decoration:none!important;line-height:16px;cursor:default}.x-menu-item-icon{width:16px;height:16px;position:absolute;top:5px;left:4px;background:no-repeat center center}.x-menu-item-icon-right{width:16px;height:16px;position:absolute;top:6px;right:4px;background:no-repeat center center}.x-menu-item-text{font-size:11px;color:#222}.x-menu-item-checked .x-menu-item-icon{background-image:url('../../resources/themes/images/default/menu/checked.gif')}.x-menu-item-checked .x-menu-group-icon{background-image:url('../../resources/themes/images/default/menu/group-checked.gif')}.x-menu-item-unchecked .x-menu-item-icon{background-image:url('../../resources/themes/images/default/menu/unchecked.gif')}.x-menu-item-unchecked .x-menu-group-icon{background-image:none}.x-menu-item-separator{height:2px;border-top:solid 1px #e0e0e0;background-color:white;margin:2px 0;overflow:hidden}.x-menu-item-arrow{position:absolute;width:12px;height:9px;top:9px;right:0;background:no-repeat center center;background-image:url('../../resources/themes/images/default/menu/menu-parent.gif')}.x-menu-item-indent{margin-left:31px}.x-menu-item-active{cursor:pointer}.x-menu-item-active .x-menu-item-link{background-image:none;background-color:#d9e8fb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e7f0fc),color-stop(100%,#c7ddf9));background-image:-webkit-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-moz-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-o-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-ms-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:linear-gradient(top,#e7f0fc,#c7ddf9);margin:0;border:1px solid #a9cbf5;cursor:pointer;-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px}.x-menu-item-disabled{filter:alpha(opacity=50);opacity:.5}.x-ie .x-menu-item-disabled .x-menu-item-icon{filter:alpha(opacity=50);opacity:.5}.x-ie .x-menu-item-disabled .x-menu-item-text{background-color:transparent}.x-strict .x-ie7m .x-ie .x-menu-icon-separator{width:1px}.x-strict .x-ie7m .x-ie .x-menu-item-separator{height:1px}.x-ie6 .x-menu-item-link,.x-ie7 .x-menu-item-link,.x-quirks .x-ie8 .x-menu-item-link{padding-bottom:2px}.x-nlg .x-menu-item-active .x-menu-item-link{background:#d9e8fb repeat-x left top;background-image:url('../../resources/themes/images/default/menu/menu-item-active-bg.gif')}.x-menu-date-item{border-color:#99bbe8}.x-panel .x-grid-body{background:white;border-color:#99bce8;border-style:solid;border-width:1px;border-top-color:#c5c5c5}.x-panel .x-grid-header-ct-hidden{visibility:hidden}.x-grid-empty{padding:10px;color:gray;font:normal 11px tahoma,arial,helvetica,sans-serif}.x-grid-header-hidden .x-grid-body{border-top-color:#99bce8!important}.x-grid-view{overflow:hidden;position:relative}.x-grid-table{table-layout:fixed;border-collapse:separate}.x-autowidth-table table.x-grid-table{table-layout:auto;width:auto!important}.x-grid-row .x-grid-table{border-collapse:collapse}.x-grid-locked .x-grid-inner-locked{border-width:0 1px 0 0!important;border-style:solid}.x-grid-header-ct{cursor:default;zoom:1;padding:0;border:1px solid #99bce8;border-bottom-color:#c5c5c5}.x-accordion-item .x-grid-header-ct{border-width:0 0 1px 0!important}.x-column-header{padding:0;position:absolute;overflow:hidden;border-right:1px solid #c5c5c5;border-left:0 none;border-top:0 none;border-bottom:0 none;text-shadow:0 1px 0 rgba(255,255,255,0.3);color:null;font:normal 11px tahoma,arial,verdana,sans-serif}.x-group-header{padding:0;border-left-width:0}.x-group-sub-header{background:transparent;border-top:1px solid #c5c5c5;border-left-width:0}.x-column-header-inner{zoom:1;position:relative;white-space:nowrap;line-height:15px;padding:3px 6px 4px}.x-column-header-inner .x-column-header-text{white-space:nowrap}.x-column-header-over,.x-column-header-sort-ASC,.x-column-header-sort-DESC{border-left-color:#aaccf6;border-right-color:#aaccf6}.x-nlg .x-grid-header-ct,.x-nlg .x-column-header{background:repeat-x 0 top;background-image:url('../../resources/themes/images/default/grid/column-header-bg.gif')}.x-nlg .x-column-header-over,.x-nlg .x-column-header-sort-ASC,.x-nlg .x-column-header-sort-DESC{background:#ebf3fd repeat-x 0 top;background-image:url('../../resources/themes/images/default/grid/column-header-over-bg.gif')}.x-column-header-trigger{display:none;height:100%;width:14px;background:no-repeat left center;background-color:#c3daf9;background-image:url('../../resources/themes/images/default/grid/grid3-hd-btn.gif');position:absolute;right:0;top:0;z-index:2;cursor:pointer}.x-column-header-over .x-column-header-trigger,.x-column-header-open .x-column-header-trigger{display:block}.x-column-header-align-right{text-align:right}.x-column-header-align-right .x-column-header-text{padding-right:.5ex;margin-right:6px}.x-column-header-align-center{text-align:center}.x-column-header-align-left{text-align:left}.x-column-header-sort-ASC .x-column-header-text{padding-right:16px;background:no-repeat right 6px;background-image:url('../../resources/themes/images/default/grid/sort_asc.gif')}.x-column-header-sort-DESC .x-column-header-text{padding-right:16px;background:no-repeat right 6px;background-image:url('../../resources/themes/images/default/grid/sort_desc.gif')}.x-grid-row{vertical-align:top}.x-grid-row .x-grid-cell{color:null;font:normal 11px/15px tahoma,arial,verdana,sans-serif;background-color:white;border-color:#ededed;border-style:solid;border-top-color:#fafafa;border-width:0}.x-grid-with-row-lines .x-grid-cell{border-width:1px 0}.x-grid-rowwrap-div{border-width:1px 0;border-color:#ededed;border-style:solid;border-top-color:#fafafa;overflow:hidden}.x-grid-row-alt .x-grid-cell,.x-grid-row-alt .x-grid-rowwrap-div{background-color:#fafafa}.x-grid-row-over .x-grid-cell,.x-grid-row-over .x-grid-rowwrap-div{border-color:#ddd;background-color:#efefef}.x-grid-row-focused .x-grid-cell,.x-grid-row-focused .x-grid-rowwrap-div{border-color:#ddd;background-color:#efefef}.x-grid-row-selected .x-grid-cell,.x-grid-row-selected .x-grid-rowwrap-div{border-style:dotted;border-color:#a3bae9;background-color:#dfe8f6!important}.x-grid-rowwrap-div .x-grid-cell,.x-grid-rowwrap-div .x-grid-cell-inner{border-width:0;background:transparent}.x-grid-row-body-hidden{display:none}.x-grid-rowbody{font:normal 11px/13px tahoma,arial,verdana,sans-serif;padding:4px}.x-grid-rowbody p{margin:5px 5px 10px 5px}.x-grid-cell{overflow:hidden}.x-grid-cell-inner{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding:2px 6px 3px;white-space:nowrap}.x-grid-with-row-lines .x-grid-cell-inner{line-height:13px;padding-bottom:4px}.x-action-col-cell .x-grid-cell-inner{line-height:0;padding:2px}.x-action-col-cell .x-item-disabled{filter:alpha(opacity=30);opacity:.3}.x-grid-with-row-lines .x-action-col-cell .x-grid-cell-inner{padding-top:1px}.x-grid-row .x-grid-cell-special{padding:0;border-right:1px solid #d0d0d0;background-image:none;background-color:#f6f6f6;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#f6f6f6),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-moz-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-o-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-ms-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:linear-gradient(left,#f6f6f6,#e9e9e9)}.x-grid-row .x-grid-cell-row-checker{vertical-align:middle}.x-ie6 .x-grid-header-row,.x-ie7 .x-grid-header-row,.x-quirks .x-ie8 .x-grid-header-row{position:absolute}.x-grid-row-selected .x-grid-cell-special{border-right:1px solid #aaccf6;background-image:none;background-color:#dfe8f6;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dfe8f6),color-stop(100%,#cbdaf0));background-image:-webkit-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-moz-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-o-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-ms-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:linear-gradient(left,#dfe8f6,#cbdaf0)}.x-grid-dirty-cell{background-image:url('../../resources/themes/images/default/grid/dirty.gif');background-position:0 0;background-repeat:no-repeat}.x-grid-cell-selected{background-color:#b8cfee!important}.x-nlg .x-grid-cell-special{background-repeat:repeat-y;background-position:top right}.x-nlg .x-grid-row .x-grid-cell-special,.x-nlg .x-grid-row-over .x-grid-cell-special{background-image:url('../../resources/themes/images/default/grid/cell-special-bg.gif')}.x-nlg .x-grid-row-focused .x-grid-cell-special,.x-nlg .x-grid-row-selected .x-grid-cell-special{background-image:url('../../resources/themes/images/default/grid/cell-special-selected-bg.gif')}.x-grid-with-col-lines .x-grid-cell{padding-right:0;border-right:1px solid #d0d0d0}.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner{padding-left:12px;background-image:url('../../resources/themes/images/default/grid/property-cell-bg.gif');background-repeat:no-repeat;background-position:-16px 2px}.x-grid-with-row-lines.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,.x-grid-with-row-lines.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner{background-position:-16px 1px}.x-quirks .x-ie .x-grid-row .x-grid-property-name .x-grid-cell-inner{background-position:-16px 2px}.x-unselectable{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-grid-row-body-hidden{display:none}.x-grid-group-collapsed{display:none}.x-grid-view .x-grid-td-expander{vertical-align:top}.x-grid-td-expander{background:repeat-y right transparent}.x-grid-view .x-grid-td-expander .x-grid-cell-inner{padding:0!important}.x-grid-row-expander{background-image:url('../../resources/themes/images/default/grid/group-collapse.gif');background-color:transparent;width:9px;height:13px;margin-left:3px;background-repeat:no-repeat;background-position:0 -2px}.x-grid-row-collapsed .x-grid-row-expander{background-image:url('../../resources/themes/images/default/grid/group-expand.gif')}.x-grid-resize-marker{position:absolute;z-index:5;top:0;width:1px;background-color:#0f0f0f}.col-move-top,.col-move-bottom{width:9px;height:9px;position:absolute;top:0;line-height:0;font-size:0;overflow:hidden;z-index:20000;background:no-repeat left top transparent}.col-move-top{background-image:url('../../resources/themes/images/default/grid/col-move-top.gif')}.col-move-bottom{background-image:url('../../resources/themes/images/default/grid/col-move-bottom.gif')}.x-tbar-page-number{width:30px}.x-grid-group,.x-grid-group-body,.x-grid-group-hd{zoom:1}.x-grid-group-hd{padding-top:6px}.x-grid-group-hd .x-grid-cell-inner{padding:10px 4px 4px 4px;background:white;border-width:0 0 2px 0;border-style:solid;border-color:#99bbe8;cursor:pointer}.x-grid-group-hd-collapsible .x-grid-group-title{background:transparent no-repeat 0 -1px;background-image:url('../../resources/themes/images/default/grid/group-collapse.gif');padding:0 0 0 14px}.x-grid-group-title{color:#3764a0;font:bold 11px tahoma,arial,verdana,sans-serif}.x-grid-group-hd-collapsed .x-grid-group-title{background-image:url('../../resources/themes/images/default/grid/group-expand.gif')}.x-grid-group-collapsed .x-grid-group-body{display:none}.x-grid-group-collapsed .x-grid-group-title{background-image:url('../../resources/themes/images/default/grid/group-expand.gif')}.x-group-by-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x-show-groups-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x-column-header-checkbox .x-column-header-inner{padding:0}.x-grid-cell-special .x-grid-cell-inner{padding-left:4px;padding-right:4px}.x-grid-row-checker,.x-column-header-checkbox .x-column-header-text{height:14px;width:14px;line-height:0;background-image:url('../../resources/themes/images/default/grid/unchecked.gif');background-position:-1px -1px;background-repeat:no-repeat;background-color:transparent}.x-column-header-checkbox .x-column-header-text{display:block;margin:0 5px}.x-quirks .x-ie .x-grid-row-checker,.x-quirks .x-ie .x-column-header-checkbox .x-column-header-text,.x-ie7m .x-grid-row-checker,.x-ie7m .x-column-header-checkbox .x-column-header-text{line-height:14px}.x-grid-hd-checker-on .x-column-header-text{background-image:url('../../resources/themes/images/default/grid/checked.gif')}.x-grid-cell-row-checker .x-grid-cell-inner{padding-top:4px;padding-bottom:2px;line-height:14px}.x-grid-with-row-lines .x-grid-cell-row-checker .x-grid-cell-inner{padding-top:3px}.x-grid-row-checker{margin-left:1px;background-position:50% -2px}.x-grid-row-selected .x-grid-row-checker,.x-grid-row-checked .x-grid-row-checker{background-image:url('../../resources/themes/images/default/grid/checked.gif')}.x-tbar-page-first{background-image:url('../../resources/themes/images/default/grid/page-first.gif')!important}.x-tbar-loading{background-image:url('../../resources/themes/images/default/grid/refresh.gif')!important}.x-tbar-page-last{background-image:url('../../resources/themes/images/default/grid/page-last.gif')!important}.x-tbar-page-next{background-image:url('../../resources/themes/images/default/grid/page-next.gif')!important}.x-tbar-page-prev{background-image:url('../../resources/themes/images/default/grid/page-prev.gif')!important}.x-item-disabled .x-tbar-loading{background-image:url('../../resources/themes/images/default/grid/refresh-disabled.gif')!important}.x-item-disabled .x-tbar-page-first{background-image:url('../../resources/themes/images/default/grid/page-first-disabled.gif')!important}.x-item-disabled .x-tbar-page-last{background-image:url('../../resources/themes/images/default/grid/page-last-disabled.gif')!important}.x-item-disabled .x-tbar-page-next{background-image:url('../../resources/themes/images/default/grid/page-next-disabled.gif')!important}.x-item-disabled .x-tbar-page-prev{background-image:url('../../resources/themes/images/default/grid/page-prev-disabled.gif')!important}.x-hmenu-sort-asc .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-asc.gif')}.x-hmenu-sort-desc .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-desc.gif')}.x-hmenu-lock .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-lock.gif')}.x-hmenu-unlock .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-unlock.gif')}.x-group-by-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x-cols-icon .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/columns.gif')}.x-show-groups-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x-grid-drop-indicator{position:absolute;height:1px;line-height:0;background-color:#77bc71;overflow:visible}.x-grid-drop-indicator .x-grid-drop-indicator-left{position:absolute;top:-8px;left:-12px;background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-right.png');height:16px;width:16px}.x-grid-drop-indicator .x-grid-drop-indicator-right{position:absolute;top:-8px;right:-11px;background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-left.png');height:16px;width:16px}.x-ie6 .x-grid-drop-indicator-left{background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-right.gif')}.x-ie6 .x-grid-drop-indicator-right{background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-left.gif')}.x-grid-editor .x-form-text{padding:0 4px}.x-grid-editor .x-form-cb-wrap{padding-top:3px}.x-grid-row-editor{position:absolute!important;z-index:1;zoom:1;overflow:visible!important}.x-grid-row-editor .x-form-text{padding:0 2px}.x-grid-row-editor .x-form-cb-wrap{padding-top:0}.x-grid-row-editor .x-form-checkbox{margin-left:-4px}.x-grid-row-editor .x-form-display-field{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding-top:0;padding-left:2px}.x-grid-row-editor .x-panel-body{background-color:#eaf1fb;border-top:1px solid #99bce8!important;border-bottom:1px solid #99bce8!important}.x-grid-editor .x-form-cb-wrap,.x-grid-row-editor .x-form-cb-wrap{text-align:center}.x-grid-editor .x-form-trigger,.x-grid-row-editor .x-form-trigger{height:19px}.x-grid-editor .x-form-trigger-wrap .x-form-spinner-up,.x-grid-editor .x-form-trigger-wrap .x-form-spinner-down,.x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-up,.x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-down{background-image:url('../../resources/themes/images/default/form/spinner-small.gif');height:10px!important}.x-grid-editor .x-form-text,.x-grid-row-editor .x-form-text{font:normal 11px/15px tahoma,arial,verdana,sans-serif;height:18px}.x-border-box .x-grid-editor .x-form-trigger,.x-border-box .x-grid-row-editor .x-form-trigger{height:20px}.x-border-box .x-grid-editor .x-form-text,.x-border-box .x-grid-row-editor .x-form-text{height:20px;padding-bottom:1px}.x-ie .x-grid-editor .x-form-text{padding-left:5px}.x-ie .x-grid-row-editor .x-form-text{padding-left:3px}.x-ie8m .x-grid-editor .x-form-text,.x-ie8m .x-grid-row-editor .x-form-text{padding-top:1px}.x-strict .x-ie6 .x-grid-editor .x-form-text,.x-strict .x-ie6 .x-grid-row-editor .x-form-text,.x-strict .x-ie7 .x-grid-editor .x-form-text,.x-strict .x-ie7 .x-grid-row-editor .x-form-text{height:17px}.x-quirks .x-ie9 .x-grid-editor .x-form-text,.x-quirks .x-ie9 .x-grid-row-editor .x-form-text{line-height:17px}.x-grid-row-editor-buttons{background-color:#eaf1fb;position:absolute;bottom:-31px;padding:4px;height:32px}.x-strict .x-ie7m .x-grid-row-editor-buttons{width:192px;height:24px}.x-grid-row-editor-buttons-ml,.x-grid-row-editor-buttons-mr,.x-grid-row-editor-buttons-bl,.x-grid-row-editor-buttons-br,.x-grid-row-editor-buttons-bc{position:absolute;overflow:hidden}.x-grid-row-editor-buttons-bl,.x-grid-row-editor-buttons-br{width:4px;height:4px;bottom:0;background-image:url('../../resources/themes/images/default/panel/panel-default-framed-corners.gif')}.x-grid-row-editor-buttons-bl{left:0;background-position:0 -16px}.x-grid-row-editor-buttons-br{right:0;background-position:0 -20px}.x-grid-row-editor-buttons-bc{position:absolute;left:4px;bottom:0;width:192px;height:1px;background-color:#99bce8}.x-grid-row-editor-buttons-ml,.x-grid-row-editor-buttons-mr{height:27px;width:1px;top:1px;background-color:#99bce8}.x-grid-row-editor-buttons-ml{left:0}.x-grid-row-editor-buttons-mr{background-position:0 -20px;right:0}.x-grid-row-editor-errors ul{margin-left:5px}.x-grid-row-editor-errors li{list-style:disc;margin-left:15px}.x-webkit *:focus{outline:none!important}.x-form-item{vertical-align:top;table-layout:fixed}.x-autocontainer-form-item,.x-anchor-form-item,.x-vbox-form-item,.x-checkboxgroup-form-item,.x-table-form-item{margin-bottom:5px}.x-form-layout-table{border-collapse:separate;border-spacing:0 2px}.x-form-item-body{position:relative}.x-form-form-item td{border-top:1px solid transparent}.x-ie6 .x-form-layout-table{border-collapse:collapse;border-spacing:0}.x-ie6 .x-form-form-item td{border-top-width:0}.x-ie6 td.x-form-item-pad{height:5px}.x-editor .x-form-item-body{padding-bottom:0}.x-form-item-label{display:block;padding:3px 0 0;font-size:12px;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-form-item-label-top{display:block;zoom:1;padding:0 0 5px 0}.x-form-item-label-right{text-align:right}.x-form-invalid-under{padding:2px 2px 2px 18px;color:#c0272b;font:normal 11px tahoma,arial,verdana,sans-serif;line-height:16px;background:no-repeat 0 2px;background-image:url('../../resources/themes/images/default/form/exclamation.gif')}.x-form-invalid-icon{width:18px;height:14px;background:no-repeat center center;background-image:url('../../resources/themes/images/default/form/exclamation.gif');overflow:hidden}.x-form-invalid-icon ul{display:block;width:18px}.x-form-invalid-icon ul li{display:none}.x-lbl-top-err-icon{margin-bottom:4px}.x-form-field,.x-form-display-field{margin:0;font:normal 12px tahoma,arial,verdana,sans-serif;color:black}.x-form-item-hidden{margin:0}.x-form-text,textarea.x-form-field{padding:1px 3px;background:repeat-x 0 0;border:1px solid;background-color:white;background-image:url('../../resources/themes/images/default/form/text-bg.gif');border-color:#b5b8c8}.x-form-text{height:18px;line-height:15px;vertical-align:top}.x-ie8m .x-form-text{line-height:15px}.x-border-box .x-form-text{height:22px}textarea.x-form-field{color:black;overflow:auto;height:auto;line-height:normal;background:repeat-x 0 0;background-color:white;background-image:url('../../resources/themes/images/default/form/text-bg.gif');resize:none}.x-border-box textarea.x-form-field{height:auto}.x-form-focus,textarea.x-form-focus{border-color:#7eadd9}.x-form-invalid-field,textarea.x-form-invalid-field{background-color:white;background-image:url('../../resources/themes/images/default/grid/invalid_line.gif');background-repeat:repeat-x;background-position:bottom;border-color:#c30}.x-form-item{font:normal 12px tahoma,arial,verdana,sans-serif}.x-form-empty-field,textarea.x-form-empty-field{color:gray}.x-webkit .x-form-empty-field{line-height:15px}.x-form-display-field{padding-top:3px}.x-quirks .x-ie9p .x-form-text,.x-ie7m .x-form-text{margin-top:-1px;margin-bottom:-1px}.x-ie .x-form-file{height:23px;line-height:18px;vertical-align:middle}.x-field-default-toolbar .x-form-text{height:16px}.x-border-box .x-field-default-toolbar .x-form-text{height:20px}.x-field-default-toolbar .x-form-item-label-left{padding-left:4px}.x-fieldset{border:1px solid #b5b8c8;padding:10px;margin-bottom:10px;display:block;position:relative}.x-ie .x-fieldset{padding-top:0}.x-ie .x-fieldset .x-fieldset-body{padding-top:10px}.x-fieldset-header-checkbox{line-height:14px}.x-fieldset-header{font:11px/14px bold tahoma,arial,verdana,sans-serif;color:#15428b;padding:0 3px 1px;overflow:hidden}.x-fieldset-header .x-fieldset-header-text{float:left;padding:1px 0}.x-fieldset-header .x-fieldset-header-text-collapsible{cursor:pointer}.x-fieldset-header .x-form-item,.x-fieldset-header .x-tool{float:left;margin:1px 0 0 0}.x-fieldset-header .x-form-cb-wrap{padding:1px 0;font-size:0;line-height:0}.x-fieldset-with-title .x-fieldset-header-checkbox,.x-fieldset-with-title .x-tool{margin-right:3px}.x-webkit .x-fieldset-header{-webkit-padding-start:3px;-webkit-padding-end:3px}.x-strict .x-ie8 .x-fieldset-header{margin-bottom:-1px}.x-strict .x-ie8 .x-fieldset-header .x-tool,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox{position:relative;top:-1px}.x-quirks .x-ie .x-fieldset-header,.x-ie8m .x-fieldset-header{padding-left:1px;padding-right:1px}.x-fieldset-collapsed .x-fieldset-body{display:none}.x-fieldset-collapsed{padding-bottom:0!important;border-width:1px 1px 0 1px!important;border-left-color:transparent!important;border-right-color:transparent!important}.x-ie6 .x-fieldset-collapsed{border-width:1px 0 0 0!important;padding-bottom:0!important;margin-left:1px;margin-right:1px}.x-ie .x-fieldset-bwrap{zoom:1}.x-ie .x-fieldset-noborder legend{position:relative;margin-bottom:23px}.x-ie .x-fieldset-noborder legend span{position:absolute;left:16px}.x-fieldset{overflow:hidden}.x-fieldset-bwrap{overflow:hidden;zoom:1}.x-fieldset-body{overflow:hidden}.x-form-file-wrap .x-form-text{color:#777}.x-form-file-wrap .x-form-file-btn{overflow:hidden}.x-form-file-wrap .x-form-file-input{position:absolute;top:-4px;right:-2px;height:30px;filter:alpha(opacity=0);opacity:0;font-size:100px}.x-form-cb-wrap{padding-top:3px}.x-form-checkbox,.x-form-radio{vertical-align:-1px;width:13px;height:13px;background:no-repeat;background-image:url('../../resources/themes/images/default/form/checkbox.gif');overflow:hidden;padding:0;border:0}.x-form-checkbox::-moz-focus-inner,.x-form-radio::-moz-focus-inner{padding:0;border:0}.x-nbr.x-ie .x-form-checkbox,.x-nbr.x-ie .x-form-radio{font-size:0}.x-form-cb-checked .x-form-checkbox,.x-form-cb-checked .x-form-radio{background-position:0 -13px}.x-form-cb-focus{background-position:-13px 0}.x-form-cb-checked .x-form-cb-focus{background-position:-13px -13px}.x-form-radio{background-image:url('../../resources/themes/images/default/form/radio.gif')}.x-form-cb-label-before{margin-right:4px}.x-form-cb-label-after{margin-left:4px}.x-form-checkboxgroup-body{padding:1px 4px 1px 4px}.x-form-invalid .x-form-checkboxgroup-body{border:1px solid #c30!important;background:transparent repeat-x bottom;background-image:url('../../resources/themes/images/default/grid/invalid_line.gif');padding:1px 3px 0 3px}.x-check-group-alt{background:#d1ddef;border-top:1px dotted #b5b8c8;border-bottom:1px dotted #b5b8c8}.x-form-check-group-label{color:#333;border-bottom:1px solid #333;margin:0 30px 5px 0;padding:2px}.x-form-trigger-wrap{vertical-align:top}.x-form-trigger{background-image:url('../../resources/themes/images/default/form/trigger.gif');background-position:0 0;width:17px;height:21px;border-bottom:1px solid #b5b8c8;cursor:pointer;cursor:hand;overflow:hidden}.x-border-box .x-form-trigger{height:22px}.x-field-default-toolbar .x-form-trigger{height:19px}.x-border-box .x-field-default-toolbar .x-form-trigger{height:20px}.x-form-trigger-over{background-position:-17px 0;border-bottom-color:#7eadd9}.x-form-trigger-wrap-focus .x-form-trigger{background-position:-51px 0;border-bottom-color:#7eadd9}.x-form-trigger-wrap-focus .x-form-trigger-over{background-position:-68px 0;border-bottom-color:null}.x-form-trigger-click,.x-form-trigger-wrap-focus .x-form-trigger-click{background-position:-34px 0;border-bottom-color:null}.x-form-trigger-icon{height:16px;background-repeat:no-repeat;background-position:7px 6px}.x-pickerfield-open .x-form-field{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0}.x-pickerfield-open-above .x-form-field{-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;-o-border-bottom-left-radius:3px;-ms-border-bottom-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0}.x-form-arrow-trigger .x-form-trigger-icon{background-image:url('../../resources/themes/images/default/boundlist/trigger-arrow.png')}.x-form-date-trigger{background-image:url('../../resources/themes/images/default/form/date-trigger.gif')}.x-form-trigger-wrap .x-form-spinner-up,.x-form-trigger-wrap .x-form-spinner-down{background-image:url('../../resources/themes/images/default/form/spinner.gif');width:17px!important;height:11px!important;font-size:0;border-bottom:0}.x-form-trigger-wrap .x-form-spinner-down{background-position:0 -11px}.x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -11px}.x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -11px}.x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -11px}.x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -11px}.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-up,.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down{background-image:url('../../resources/themes/images/default/form/spinner-small.gif');height:10px!important}.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down{background-position:0 -10px}.x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -10px}.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -10px}.x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -10px}.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -10px}.x-trigger-noedit{cursor:pointer;cursor:hand}.x-item-disabled .x-trigger-noedit,.x-item-disabled .x-form-trigger{cursor:auto}.x-form-clear-trigger{background-image:url('../../resources/themes/images/default/form/clear-trigger.gif')}.x-form-search-trigger{background-image:url('../../resources/themes/images/default/form/search-trigger.gif')}.x-quirks .prefixie6 .x-form-trigger-input-cell{height:22px}.x-quirks .prefixie6 .x-field-default-toolbar .x-form-trigger-input-cell{height:20px}.x-html-editor-wrap{border:1px solid #b5b8c8}.x-html-editor-wrap .x-toolbar{border-top-width:0;border-left-width:0;border-right-width:0}.x-html-editor-wrap textarea{background-color:white}.x-html-editor-tb .x-btn-text{background:transparent no-repeat;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-bold,.x-menu-item img.x-edit-bold{background-position:0 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-italic,.x-menu-item img.x-edit-italic{background-position:-16px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-underline,.x-menu-item img.x-edit-underline{background-position:-32px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-forecolor,.x-menu-item img.x-edit-forecolor{background-position:-160px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-backcolor,.x-menu-item img.x-edit-backcolor{background-position:-176px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-justifyleft,.x-menu-item img.x-edit-justifyleft{background-position:-112px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-justifycenter,.x-menu-item img.x-edit-justifycenter{background-position:-128px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-justifyright,.x-menu-item img.x-edit-justifyright{background-position:-144px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-insertorderedlist,.x-menu-item img.x-edit-insertorderedlist{background-position:-80px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-insertunorderedlist,.x-menu-item img.x-edit-insertunorderedlist{background-position:-96px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-increasefontsize,.x-menu-item img.x-edit-increasefontsize{background-position:-48px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-decreasefontsize,.x-menu-item img.x-edit-decreasefontsize{background-position:-64px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-sourceedit,.x-menu-item img.x-edit-sourceedit{background-position:-192px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-createlink,.x-menu-item img.x-edit-createlink{background-position:-208px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tip .x-tip-bd .x-tip-bd-inner{padding:5px;padding-bottom:1px}.x-html-editor-tb .x-toolbar{position:static!important}.x-html-editor-tb .x-font-select{font-size:11px}.x-html-editor-wrap textarea{border:0;padding:3px 2px;overflow:auto}.x-panel,.x-plain{overflow:hidden;position:relative}.x-ie .x-panel-header,.x-ie .x-panel-header-tl,.x-ie .x-panel-header-tc,.x-ie .x-panel-header-tr,.x-ie .x-panel-header-ml,.x-ie .x-panel-header-mc,.x-ie .x-panel-header-mr,.x-ie .x-panel-header-bl,.x-ie .x-panel-header-bc,.x-ie .x-panel-header-br{zoom:1}.x-ie8 td.x-frame-mc{vertical-align:top}.x-panel-header-horizontal{padding:3px 5px 4px}.x-panel-header-vertical{padding:5px 4px}.x-panel-header-icon,.x-window-header-icon{width:16px;height:16px;background-repeat:no-repeat;background-position:0 0;vertical-align:middle;margin-right:4px}.x-vertical .x-panel-header-icon,.x-vertical .x-window-header-icon{margin:0 0 4px}.x-panel-header-draggable,.x-panel-header-draggable .x-panel-header-text,.x-window-header-draggable,.x-window-header-draggable .x-window-header-text{cursor:move}.x-panel-ghost,.x-window-ghost{filter:alpha(opacity=65);opacity:.65;cursor:move}.x-panel-header-horizontal .x-panel-header-body,.x-panel-header-horizontal .x-window-header-body,.x-panel-header-horizontal .x-btn-group-header-body,.x-window-header-horizontal .x-panel-header-body,.x-window-header-horizontal .x-window-header-body,.x-window-header-horizontal .x-btn-group-header-body,.x-btn-group-header-horizontal .x-panel-header-body,.x-btn-group-header-horizontal .x-window-header-body,.x-btn-group-header-horizontal .x-btn-group-header-body{width:100%}.x-panel-header-vertical .x-panel-header-body,.x-panel-header-vertical .x-window-header-body,.x-panel-header-vertical .x-btn-group-header-body,.x-window-header-vertical .x-panel-header-body,.x-window-header-vertical .x-window-header-body,.x-window-header-vertical .x-btn-group-header-body,.x-btn-group-header-vertical .x-panel-header-body,.x-btn-group-header-vertical .x-window-header-body,.x-btn-group-header-vertical .x-btn-group-header-body{height:100%}.x-panel-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-panel-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;white-space:nowrap}.x-panel-header-left .x-vml-base,.x-panel-header-right .x-vml-base{left:-3px!important}.x-panel-body{overflow:hidden;position:relative;font-size:12px}.x-panel-header-vertical .x-surface{padding-left:1px}.x-opera .x-panel-header-vertical .x-surface,.x-strict .x-ie9 .x-panel-header-vertical .x-surface{padding-left:2px}.x-panel-collapsed .x-panel-header-collapsed-border-top{border-bottom-width:1px!important}.x-panel-collapsed .x-panel-header-collapsed-border-right{border-left-width:1px!important}.x-panel-collapsed .x-panel-header-collapsed-border-bottom{border-top-width:1px!important}.x-panel-collapsed .x-panel-header-collapsed-border-left{border-right-width:1px!important}.x-nlg .x-panel-header-vertical .x-frame-mc{background-repeat:repeat-y}.x-panel-default{border-color:#99bce8}.x-panel-header-default{font-size:11px;border-color:#99bce8;border-width:1px;border-style:solid}.x-nlg .x-panel-header-default-top{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif')}.x-nlg .x-panel-header-default-bottom{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif')}.x-nlg .x-panel-header-default-left{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif')}.x-nlg .x-panel-header-default-right{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif')}.x-nlg .x-panel-header-default-right{background-position:top right}.x-nlg .x-panel-header-default-bottom{background-position:bottom left}.x-panel-header-text-default{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:17px}.x-panel-body-default{background:white;border-color:#99bce8;color:black;border-width:1px;border-style:solid}.x-panel-collapsed .x-window-header-default,.x-panel-collapsed .x-panel-header-default{border-color:#99bce8}.x-panel-header-default-vertical{border-color:#99bce8}.x-panel-collapsed .x-panel-header-default-top{-moz-border-radius-bottomleft:null;-webkit-border-bottom-left-radius:null;-o-border-bottom-left-radius:null;-ms-border-bottom-left-radius:null;-khtml-border-bottom-left-radius:null;border-bottom-left-radius:null;-moz-border-radius-bottomright:null;-webkit-border-bottom-right-radius:null;-o-border-bottom-right-radius:null;-ms-border-bottom-right-radius:null;-khtml-border-bottom-right-radius:null;border-bottom-right-radius:null}.x-panel-collapsed .x-panel-header-default-right{-moz-border-radius-topleft:null;-webkit-border-top-left-radius:null;-o-border-top-left-radius:null;-ms-border-top-left-radius:null;-khtml-border-top-left-radius:null;border-top-left-radius:null;-moz-border-radius-bottomleft:null;-webkit-border-bottom-left-radius:null;-o-border-bottom-left-radius:null;-ms-border-bottom-left-radius:null;-khtml-border-bottom-left-radius:null;border-bottom-left-radius:null}.x-panel-collapsed .x-panel-header-default-bottom{-moz-border-radius-topleft:null;-webkit-border-top-left-radius:null;-o-border-top-left-radius:null;-ms-border-top-left-radius:null;-khtml-border-top-left-radius:null;border-top-left-radius:null;-moz-border-radius-topright:null;-webkit-border-top-right-radius:null;-o-border-top-right-radius:null;-ms-border-top-right-radius:null;-khtml-border-top-right-radius:null;border-top-right-radius:null}.x-panel-collapsed .x-panel-header-default-left{-moz-border-radius-topright:null;-webkit-border-top-right-radius:null;-o-border-top-right-radius:null;-ms-border-top-right-radius:null;-khtml-border-top-right-radius:null;border-top-right-radius:null;-moz-border-radius-bottomright:null;-webkit-border-bottom-right-radius:null;-o-border-bottom-right-radius:null;-ms-border-bottom-right-radius:null;-khtml-border-bottom-right-radius:null;border-bottom-right-radius:null}.x-panel-header-default-top{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset}.x-panel-header-default-right{-moz-box-shadow:#f4f8fd -1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd -1px 0 0 0 inset;-o-box-shadow:#f4f8fd -1px 0 0 0 inset;box-shadow:#f4f8fd -1px 0 0 0 inset}.x-panel-header-default-bottom{-moz-box-shadow:#f4f8fd 0 -1px 0 0 inset;-webkit-box-shadow:#f4f8fd 0 -1px 0 0 inset;-o-box-shadow:#f4f8fd 0 -1px 0 0 inset;box-shadow:#f4f8fd 0 -1px 0 0 inset}.x-panel-header-default-left{-moz-box-shadow:#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 1px 0 0 0 inset}.x-panel-header-default-right-tc,.x-panel-header-default-right-mc,.x-panel-header-default-right-bc{background-position:right 0}.x-panel-header-default-bottom-tc,.x-panel-header-default-bottom-mc,.x-panel-header-default-bottom-bc{background-position:0 bottom}.x-panel-default-framed{border-color:#99bce8}.x-panel-header-default-framed{font-size:11px;border-color:#99bce8;border-width:1px;border-style:solid}.x-nlg .x-panel-header-default-framed-top{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif')}.x-nlg .x-panel-header-default-framed-bottom{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif')}.x-nlg .x-panel-header-default-framed-left{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif')}.x-nlg .x-panel-header-default-framed-right{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif')}.x-nlg .x-panel-header-default-framed-right{background-position:top right}.x-nlg .x-panel-header-default-framed-bottom{background-position:bottom left}.x-nbr .x-panel-header-default-framed{background-image:none}.x-strict .x-ie9 .x-panel-header-default-framed-top,.x-nlg.x-opera .x-panel-header-default-framed-top,.x-nlg.x-safari .x-panel-header-default-framed-top{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif')}.x-strict .x-ie9 .x-panel-header-default-framed-bottom,.x-nlg.x-opera .x-panel-header-default-framed-bottom,.x-nlg.x-safari .x-panel-header-default-framed-bottom{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif')}.x-strict .x-ie9 .x-panel-header-default-framed-left,.x-nlg.x-opera .x-panel-header-default-framed-left,.x-nlg.x-safari .x-panel-header-default-framed-left{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif')}.x-strict .x-ie9 .x-panel-header-default-framed-right,.x-nlg.x-opera .x-panel-header-default-framed-right,.x-nlg.x-safari .x-panel-header-default-framed-right{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif')}.x-panel-header-text-default-framed{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:17px}.x-panel-body-default-framed{background:#dfe9f6;border-color:#99bce8;color:black;border-width:0;border-style:solid}.x-panel-collapsed .x-window-header-default-framed,.x-panel-collapsed .x-panel-header-default-framed{border-color:#99bce8}.x-panel-header-default-framed-vertical{border-color:#99bce8}.x-panel-default-framed{padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#dfe9f6}.x-nlg .x-panel-default-framed-mc{background-color:#dfe9f6}.x-nbr .x-panel-default-framed{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1000404px}.x-nbr .x-panel-default-framed-tl,.x-nbr .x-panel-default-framed-bl,.x-nbr .x-panel-default-framed-tr,.x-nbr .x-panel-default-framed-br,.x-nbr .x-panel-default-framed-tc,.x-nbr .x-panel-default-framed-bc,.x-nbr .x-panel-default-framed-ml,.x-nbr .x-panel-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel/panel-default-framed-corners.gif')}.x-nbr .x-panel-default-framed-ml,.x-nbr .x-panel-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel/panel-default-framed-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-panel-default-framed-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-panel-default-framed-tl,.x-strict .x-ie7 .x-panel-default-framed-bl{position:relative;right:0}.x-panel-header-default-framed-top{padding:3px 5px 4px 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-top-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif');background-color:#cbddf3}.x-nbr .x-panel-header-default-framed-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1000000px}.x-nbr .x-panel-header-default-framed-top-tl,.x-nbr .x-panel-header-default-framed-top-bl,.x-nbr .x-panel-header-default-framed-top-tr,.x-nbr .x-panel-header-default-framed-top-br,.x-nbr .x-panel-header-default-framed-top-tc,.x-nbr .x-panel-header-default-framed-top-bc,.x-nbr .x-panel-header-default-framed-top-ml,.x-nbr .x-panel-header-default-framed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-corners.gif')}.x-nbr .x-panel-header-default-framed-top-ml,.x-nbr .x-panel-header-default-framed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-sides.gif');background-position:0 0}.x-nbr .x-panel-header-default-framed-top-mc{padding:0 2px 4px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-top-bl{position:relative;right:0}.x-panel-header-default-framed-right{padding:5px 4px 5px 4px;border-width:1px 1px 1px 0;border-style:solid;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-right-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif');background-color:#cbddf3}.x-nbr .x-panel-header-default-framed-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000004px 1100400px}.x-nbr .x-panel-header-default-framed-right-tl,.x-nbr .x-panel-header-default-framed-right-bl,.x-nbr .x-panel-header-default-framed-right-tr,.x-nbr .x-panel-header-default-framed-right-br,.x-nbr .x-panel-header-default-framed-right-tc,.x-nbr .x-panel-header-default-framed-right-bc,.x-nbr .x-panel-header-default-framed-right-ml,.x-nbr .x-panel-header-default-framed-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-corners.gif')}.x-nbr .x-panel-header-default-framed-right-tc,.x-nbr .x-panel-header-default-framed-right-bc{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-nbr .x-panel-header-default-framed-right-mc{padding:2px 1px 2px 4px}.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-right-bl{position:relative;right:0}.x-panel-header-default-framed-bottom{padding:3px 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-bottom-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif');background-color:#cbddf3}.x-nbr .x-panel-header-default-framed-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000000px 1000404px}.x-nbr .x-panel-header-default-framed-bottom-tl,.x-nbr .x-panel-header-default-framed-bottom-bl,.x-nbr .x-panel-header-default-framed-bottom-tr,.x-nbr .x-panel-header-default-framed-bottom-br,.x-nbr .x-panel-header-default-framed-bottom-tc,.x-nbr .x-panel-header-default-framed-bottom-bc,.x-nbr .x-panel-header-default-framed-bottom-ml,.x-nbr .x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-corners.gif')}.x-nbr .x-panel-header-default-framed-bottom-ml,.x-nbr .x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-sides.gif');background-position:0 0}.x-nbr .x-panel-header-default-framed-bottom-mc{padding:3px 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-left{padding:5px 4px 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-left-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif');background-color:#cbddf3}.x-nbr .x-panel-header-default-framed-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000400px 1100004px}.x-nbr .x-panel-header-default-framed-left-tl,.x-nbr .x-panel-header-default-framed-left-bl,.x-nbr .x-panel-header-default-framed-left-tr,.x-nbr .x-panel-header-default-framed-left-br,.x-nbr .x-panel-header-default-framed-left-tc,.x-nbr .x-panel-header-default-framed-left-bc,.x-nbr .x-panel-header-default-framed-left-ml,.x-nbr .x-panel-header-default-framed-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-corners.gif')}.x-nbr .x-panel-header-default-framed-left-tc,.x-nbr .x-panel-header-default-framed-left-bc{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-nbr .x-panel-header-default-framed-left-mc{padding:2px 4px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-left-bl{position:relative;right:0}.x-panel-header-default-framed-top{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset}.x-panel-header-default-framed-right{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset}.x-panel-header-default-framed-bottom{-moz-box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset}.x-panel-header-default-framed-left{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset}.x-panel .x-panel-header-default-framed-top{border-bottom-width:1px!important}.x-panel .x-panel-header-default-framed-right{border-left-width:1px!important}.x-panel .x-panel-header-default-framed-bottom{border-top-width:1px!important}.x-panel .x-panel-header-default-framed-left{border-right-width:1px!important}.x-panel-header-default-framed-collapsed{-moz-border-radius:4px;-webkit-border-radius:4px;-o-border-radius:4px;-ms-border-radius:4px;-khtml-border-radius:4px;border-radius:4px}.x-panel-header-default-framed-collapsed-top{padding:3px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-collapsed-top-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-bg.gif');background-color:#cbddf3}.x-nbr .x-panel-header-default-framed-collapsed-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1000404px}.x-nbr .x-panel-header-default-framed-collapsed-top-tl,.x-nbr .x-panel-header-default-framed-collapsed-top-bl,.x-nbr .x-panel-header-default-framed-collapsed-top-tr,.x-nbr .x-panel-header-default-framed-collapsed-top-br,.x-nbr .x-panel-header-default-framed-collapsed-top-tc,.x-nbr .x-panel-header-default-framed-collapsed-top-bc,.x-nbr .x-panel-header-default-framed-collapsed-top-ml,.x-nbr .x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-corners.gif')}.x-nbr .x-panel-header-default-framed-collapsed-top-ml,.x-nbr .x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-sides.gif');background-position:0 0}.x-nbr .x-panel-header-default-framed-collapsed-top-mc{padding:0 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-right{padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-collapsed-right-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-bg.gif');background-color:#cbddf3}.x-nbr .x-panel-header-default-framed-collapsed-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1100404px}.x-nbr .x-panel-header-default-framed-collapsed-right-tl,.x-nbr .x-panel-header-default-framed-collapsed-right-bl,.x-nbr .x-panel-header-default-framed-collapsed-right-tr,.x-nbr .x-panel-header-default-framed-collapsed-right-br,.x-nbr .x-panel-header-default-framed-collapsed-right-tc,.x-nbr .x-panel-header-default-framed-collapsed-right-bc,.x-nbr .x-panel-header-default-framed-collapsed-right-ml,.x-nbr .x-panel-header-default-framed-collapsed-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-corners.gif')}.x-nbr .x-panel-header-default-framed-collapsed-right-tc,.x-nbr .x-panel-header-default-framed-collapsed-right-bc{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-nbr .x-panel-header-default-framed-collapsed-right-mc{padding:2px 1px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-bottom{padding:3px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-collapsed-bottom-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif');background-color:#cbddf3}.x-nbr .x-panel-header-default-framed-collapsed-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1000404px}.x-nbr .x-panel-header-default-framed-collapsed-bottom-tl,.x-nbr .x-panel-header-default-framed-collapsed-bottom-bl,.x-nbr .x-panel-header-default-framed-collapsed-bottom-tr,.x-nbr .x-panel-header-default-framed-collapsed-bottom-br,.x-nbr .x-panel-header-default-framed-collapsed-bottom-tc,.x-nbr .x-panel-header-default-framed-collapsed-bottom-bc,.x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,.x-nbr .x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif')}.x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,.x-nbr .x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif');background-position:0 0}.x-nbr .x-panel-header-default-framed-collapsed-bottom-mc{padding:0 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-left{padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-collapsed-left-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-bg.gif');background-color:#cbddf3}.x-nbr .x-panel-header-default-framed-collapsed-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1100404px}.x-nbr .x-panel-header-default-framed-collapsed-left-tl,.x-nbr .x-panel-header-default-framed-collapsed-left-bl,.x-nbr .x-panel-header-default-framed-collapsed-left-tr,.x-nbr .x-panel-header-default-framed-collapsed-left-br,.x-nbr .x-panel-header-default-framed-collapsed-left-tc,.x-nbr .x-panel-header-default-framed-collapsed-left-bc,.x-nbr .x-panel-header-default-framed-collapsed-left-ml,.x-nbr .x-panel-header-default-framed-collapsed-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-corners.gif')}.x-nbr .x-panel-header-default-framed-collapsed-left-tc,.x-nbr .x-panel-header-default-framed-collapsed-left-bc{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-nbr .x-panel-header-default-framed-collapsed-left-mc{padding:2px 1px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl{position:relative;right:0}.x-panel-header-default-framed-right-tc,.x-panel-header-default-framed-right-mc,.x-panel-header-default-framed-right-bc{background-position:right 0}.x-panel-header-default-framed-bottom-tc,.x-panel-header-default-framed-bottom-mc,.x-panel-header-default-framed-bottom-bc{background-position:0 bottom}.x-panel-header-plain,.x-panel-body-plain{border:0;padding:0}.x-tip{position:absolute;overflow:visible;border-color:#8eaace}.x-tip .x-tip-header .x-box-item{padding:3px 3px 0}.x-tip .x-tip-header .x-tool{padding:0 1px 0 0!important}.x-tip{padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:#e9f2ff}.x-nlg .x-tip-mc{background-color:#e9f2ff}.x-nbr .x-tip{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x-nbr .x-tip-tl,.x-nbr .x-tip-bl,.x-nbr .x-tip-tr,.x-nbr .x-tip-br,.x-nbr .x-tip-tc,.x-nbr .x-tip-bc,.x-nbr .x-tip-ml,.x-nbr .x-tip-mr{zoom:1;background-image:url('../../resources/themes/images/default/tip/tip-corners.gif')}.x-nbr .x-tip-ml,.x-nbr .x-tip-mr{zoom:1;background-image:url('../../resources/themes/images/default/tip/tip-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-tip-mc{padding:0}.x-strict .x-ie7 .x-tip-tl,.x-strict .x-ie7 .x-tip-bl{position:relative;right:0}.x-tip-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;color:#444;font-size:11px;font-weight:bold}.x-tip-header-draggable .x-tip-header-text{cursor:move}.x-tip-body,.x-form-invalid-tip-body{overflow:hidden;position:relative;padding:3px}.x-tip-header,.x-tip-body,.x-form-invalid-tip-body{color:#444;font-size:11px;font-weight:normal}.x-tip-header a,.x-tip-body a,.x-form-invalid-tip-body a{color:#2a2a2a}.x-tip-anchor{position:absolute;overflow:hidden;height:0;width:0;border-style:solid;border-width:5px;border-color:#8eaace;zoom:1}.x-border-box .x-tip-anchor{width:10px;height:10px}.x-tip-anchor-top{border-top-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-bottom{border-bottom-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-bottom-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-left{border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-left-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-right{border-top-color:transparent;border-bottom-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-form-invalid-tip{border-color:#a1311f;-moz-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-webkit-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-o-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset}.x-form-invalid-tip-body{background:1px 1px no-repeat;background-image:url('../../resources/themes/images/default/form/exclamation.gif');padding-left:22px}.x-form-invalid-tip-body li{margin-bottom:4px}.x-form-invalid-tip-body li.last{margin-bottom:0}.x-form-invalid-tip-default{padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:white}.x-nlg .x-form-invalid-tip-default-mc{background-color:white}.x-nbr .x-form-invalid-tip-default{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100505px 1000505px}.x-nbr .x-form-invalid-tip-default-tl,.x-nbr .x-form-invalid-tip-default-bl,.x-nbr .x-form-invalid-tip-default-tr,.x-nbr .x-form-invalid-tip-default-br,.x-nbr .x-form-invalid-tip-default-tc,.x-nbr .x-form-invalid-tip-default-bc,.x-nbr .x-form-invalid-tip-default-ml,.x-nbr .x-form-invalid-tip-default-mr{zoom:1;background-image:url('../../resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-corners.gif')}.x-nbr .x-form-invalid-tip-default-ml,.x-nbr .x-form-invalid-tip-default-mr{zoom:1;background-image:url('../../resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-form-invalid-tip-default-mc{padding:0}.x-strict .x-ie7 .x-form-invalid-tip-default-tl,.x-strict .x-ie7 .x-form-invalid-tip-default-bl{position:relative;right:0}.x-slider{zoom:1}.x-slider-inner{position:relative;left:0;top:0;overflow:visible;zoom:1}.x-slider-focus{position:absolute;left:0;top:0;width:1px;height:1px;line-height:1px;font-size:1px;-moz-outline:0 none;outline:0 none;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;display:block;overflow:hidden}.x-slider-horz{padding-left:7px;background:transparent no-repeat 0 -24px;width:100%}.x-slider-horz .x-slider-end{padding-right:7px;zoom:1;background:transparent no-repeat right -46px}.x-slider-horz .x-slider-inner{background:transparent repeat-x 0 -2px;height:18px}.x-slider-horz .x-slider-thumb{width:14px;height:15px;margin-left:-7px;position:absolute;left:0;top:1px;background:transparent no-repeat 0 0}.x-slider-horz .x-slider-thumb-over{background-position:-14px -15px}.x-slider-horz .x-slider-thumb-drag{background-position:-28px -30px}.x-slider-vert{padding-top:7px;background:transparent no-repeat -44px 0}.x-slider-vert .x-slider-end{padding-bottom:7px;zoom:1;background:transparent no-repeat -22px bottom;width:22px}.x-slider-vert .x-slider-inner{background:transparent repeat-y 0 0;width:22px}.x-slider-vert .x-slider-thumb{width:15px;height:14px;margin-bottom:-7px;position:absolute;left:3px;bottom:0;background:transparent no-repeat 0 0}.x-slider-vert .x-slider-thumb-over{background-position:-15px -14px}.x-slider-vert .x-slider-thumb-drag{background-position:-30px -28px}.x-slider-horz,.x-slider-horz .x-slider-end,.x-slider-horz .x-slider-inner{background-image:url('../../resources/themes/images/default/slider/slider-bg.png')}.x-slider-horz .x-slider-thumb{background-image:url('../../resources/themes/images/default/slider/slider-thumb.png')}.x-slider-vert,.x-slider-vert .x-slider-end,.x-slider-vert .x-slider-inner{background-image:url('../../resources/themes/images/default/slider/slider-v-bg.png')}.x-slider-vert .x-slider-thumb{background-image:url('../../resources/themes/images/default/slider/slider-v-thumb.png')}.x-ie6 .x-slider-horz,.x-ie6 .x-slider-horz .x-slider-end,.x-ie6 .x-slider-horz .x-slider-inner{background-image:url('../../resources/themes/images/default/slider/slider-bg.gif')}.x-ie6 .x-slider-horz .x-slider-thumb{background-image:url('../../resources/themes/images/default/slider/slider-thumb.gif')}.x-ie6 .x-slider-vert,.x-ie6 .x-slider-vert .x-slider-end,.x-ie6 .x-slider-vert .x-slider-inner{background-image:url('../../resources/themes/images/default/slider/slider-v-bg.gif')}.x-ie6 .x-slider-vert .x-slider-thumb{background-image:url('../../resources/themes/images/default/slider/slider-v-thumb.gif')}.x-progress{position:relative;border-width:1px;border-style:solid;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;overflow:hidden;height:20px}.x-progress-bar{height:18px;overflow:hidden;position:absolute;width:0;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;border-right:1px solid;border-top:1px solid}.x-progress-text{overflow:hidden;position:absolute;padding:0 5px;height:18px;font-weight:bold;font-size:11px;line-height:16px;text-align:center}.x-progress-text-back{padding-top:1px}.x-strict .x-ie7m .x-progress{height:18px}.x-progress-default{border-color:#6594cf}.x-progress-default .x-progress-bar{border-right-color:#6594cf;border-top-color:#c6d8ed;background-image:none;background-color:#73a3e0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b2ccee),color-stop(50%,#88b1e5),color-stop(51%,#73a3e0),color-stop(100%,#5e96db));background-image:-webkit-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-moz-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-o-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-ms-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db)}.x-progress-default .x-progress-text{color:white}.x-progress-default .x-progress-text-back{color:#396295}.x-nlg .x-progress-default .x-progress-bar{background:repeat-x;background-image:url('../../resources/themes/images/default/progress/progress-default-bg.gif')}.x-toolbar{font-size:11px;border:1px solid;padding:2px 0 2px 2px}.x-toolbar .x-form-item-label{font-size:11px;line-height:15px}.x-toolbar .x-toolbar-item{margin:0 2px 0 0}.x-toolbar .x-toolbar-text{margin-left:4px;margin-right:6px;white-space:nowrap;color:#4c4c4c;line-height:16px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;font-weight:normal}.x-toolbar .x-toolbar-separator{display:block;font-size:1px;overflow:hidden;cursor:default;border:0}.x-toolbar .x-toolbar-separator-horizontal{margin:0 3px 0 2px;height:14px;width:0;border-left:1px solid #98c8ff;border-right:1px solid white}.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal{width:2px}.x-toolbar-footer{background:transparent;border:0 none;margin-top:3px;padding:2px 0 2px 6px}.x-toolbar-footer .x-box-inner{border-width:0}.x-toolbar-footer .x-toolbar-item{margin:0 6px 0 0}.x-toolbar-vertical{padding:2px 2px 0 2px}.x-toolbar-vertical .x-toolbar-item{margin:0 0 2px 0}.x-toolbar-vertical .x-toolbar-text{margin-top:4px;margin-bottom:6px}.x-toolbar-vertical .x-toolbar-separator-vertical{margin:2px 5px 3px 5px;height:0;width:10px;line-height:0;border-top:1px solid #98c8ff;border-bottom:1px solid white}.x-toolbar-scroller{padding-left:0}.x-toolbar-spacer{width:2px}.x-toolbar-more-icon{background-image:url('../../resources/themes/images/default/toolbar/more.gif')!important;background-position:2px center!important;background-repeat:no-repeat}.x-toolbar-default{border-color:#99bce8;background-image:none;background-color:#d3e1f1;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dfe9f5),color-stop(100%,#d3e1f1));background-image:-webkit-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-moz-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-o-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-ms-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:linear-gradient(top,#dfe9f5,#d3e1f1)}.x-nlg .x-toolbar-default{background-image:url('../../resources/themes/images/default/toolbar/toolbar-default-bg.gif')!important;background-repeat:repeat-x}.x-toolbar-plain{border:0}.x-window{outline:0;overflow:hidden}.x-window .x-window-wrap{position:relative}.x-window-body{position:relative;border-style:solid;overflow:hidden}.x-window-maximized .x-window-wrap .x-window-header{-moz-border-radius:0!important;-webkit-border-radius:0!important;-o-border-radius:0!important;-ms-border-radius:0!important;-khtml-border-radius:0!important;border-radius:0!important}.x-window-header-top{margin-bottom:-2px}.x-window-header-body-horizontal{margin-top:-1px}.x-window-header-bottom{margin-top:-1px;margin-bottom:-1px}.x-window-header-left{margin-right:-1px}.x-window-header-right{margin-left:-1px}.x-window-header-vertical .x-surface{padding-left:1px}.x-window-collapsed .x-window-header-vertical{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px}.x-window-collapsed .x-window-header-horizontal{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px}.x-window-collapsed .x-window-header-left{padding-right:5px!important;margin-right:0}.x-window-collapsed .x-window-header-right{padding-left:5px!important;margin-left:0}.x-window-collapsed .x-window-header-top{padding-bottom:5px!important;margin-bottom:-1px}.x-window-collapsed .x-window-header-bottom{padding-top:5px!important;margin-top:0}.x-window-header-left .x-vml-base,.x-window-header-right .x-vml-base{left:-3px!important}.x-opera .x-window-header-vertical .x-surface,.x-strict .x-ie9 .x-window-header-vertical .x-surface{padding-left:2px}.x-window-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-window-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;white-space:nowrap}.x-window-default{border-color:#a2b1c5;-moz-border-radius:5px 5px;-webkit-border-radius:5px 5px;-o-border-radius:5px 5px;-ms-border-radius:5px 5px;-khtml-border-radius:5px 5px;border-radius:5px 5px;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-default{padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-default-mc{background-color:#ced9e7}.x-nbr .x-window-default{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-nbr .x-window-default-tl,.x-nbr .x-window-default-bl,.x-nbr .x-window-default-tr,.x-nbr .x-window-default-br,.x-nbr .x-window-default-tc,.x-nbr .x-window-default-bc,.x-nbr .x-window-default-ml,.x-nbr .x-window-default-mr{zoom:1;background-image:url('../../resources/themes/images/default/window/window-default-corners.gif')}.x-nbr .x-window-default-ml,.x-nbr .x-window-default-mr{zoom:1;background-image:url('../../resources/themes/images/default/window/window-default-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-default-mc{padding:0}.x-strict .x-ie7 .x-window-default-tl,.x-strict .x-ie7 .x-window-default-bl{position:relative;right:0}.x-window-body-default{border-color:#99bbe8;border-width:1px;background:#dfe8f6;color:black}.x-window-header-default{font-size:11px;border-color:#a2b1c5;zoom:1}.x-window-header-text-default{color:#04468c;font-weight:bold;line-height:17px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px}.x-window-header-default-top{padding:4px 5px 0 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-header-default-top-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000000px}.x-nbr .x-window-header-default-top-tl,.x-nbr .x-window-header-default-top-bl,.x-nbr .x-window-header-default-top-tr,.x-nbr .x-window-header-default-top-br,.x-nbr .x-window-header-default-top-tc,.x-nbr .x-window-header-default-top-bc,.x-nbr .x-window-header-default-top-ml,.x-nbr .x-window-header-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-top-corners.gif')}.x-nbr .x-window-header-default-top-ml,.x-nbr .x-window-header-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-top-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-top-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-top-tl,.x-strict .x-ie7 .x-window-header-default-top-bl{position:relative;right:0}.x-window-header-default-right{padding:5px 4px 5px 0;border-width:1px 1px 1px 0;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-header-default-right-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000005px 1000500px}.x-nbr .x-window-header-default-right-tl,.x-nbr .x-window-header-default-right-bl,.x-nbr .x-window-header-default-right-tr,.x-nbr .x-window-header-default-right-br,.x-nbr .x-window-header-default-right-tc,.x-nbr .x-window-header-default-right-bc,.x-nbr .x-window-header-default-right-ml,.x-nbr .x-window-header-default-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-right-corners.gif')}.x-nbr .x-window-header-default-right-ml,.x-nbr .x-window-header-default-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-right-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-right-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-right-tl,.x-strict .x-ie7 .x-window-header-default-right-bl{position:relative;right:0}.x-window-header-default-bottom{padding:0 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-header-default-bottom-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000000px 1000505px}.x-nbr .x-window-header-default-bottom-tl,.x-nbr .x-window-header-default-bottom-bl,.x-nbr .x-window-header-default-bottom-tr,.x-nbr .x-window-header-default-bottom-br,.x-nbr .x-window-header-default-bottom-tc,.x-nbr .x-window-header-default-bottom-bc,.x-nbr .x-window-header-default-bottom-ml,.x-nbr .x-window-header-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-bottom-corners.gif')}.x-nbr .x-window-header-default-bottom-ml,.x-nbr .x-window-header-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-bottom-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-bottom-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-bottom-tl,.x-strict .x-ie7 .x-window-header-default-bottom-bl{position:relative;right:0}.x-window-header-default-left{padding:5px 0 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-header-default-left-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000500px 1000005px}.x-nbr .x-window-header-default-left-tl,.x-nbr .x-window-header-default-left-bl,.x-nbr .x-window-header-default-left-tr,.x-nbr .x-window-header-default-left-br,.x-nbr .x-window-header-default-left-tc,.x-nbr .x-window-header-default-left-bc,.x-nbr .x-window-header-default-left-ml,.x-nbr .x-window-header-default-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-left-corners.gif')}.x-nbr .x-window-header-default-left-ml,.x-nbr .x-window-header-default-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-left-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-left-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-left-tl,.x-strict .x-ie7 .x-window-header-default-left-bl{position:relative;right:0}.x-window-header-default-collapsed-top{padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-header-default-collapsed-top-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-collapsed-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-nbr .x-window-header-default-collapsed-top-tl,.x-nbr .x-window-header-default-collapsed-top-bl,.x-nbr .x-window-header-default-collapsed-top-tr,.x-nbr .x-window-header-default-collapsed-top-br,.x-nbr .x-window-header-default-collapsed-top-tc,.x-nbr .x-window-header-default-collapsed-top-bc,.x-nbr .x-window-header-default-collapsed-top-ml,.x-nbr .x-window-header-default-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-top-corners.gif')}.x-nbr .x-window-header-default-collapsed-top-ml,.x-nbr .x-window-header-default-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-top-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-collapsed-top-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl{position:relative;right:0}.x-window-header-default-collapsed-right{padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-header-default-collapsed-right-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-collapsed-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-nbr .x-window-header-default-collapsed-right-tl,.x-nbr .x-window-header-default-collapsed-right-bl,.x-nbr .x-window-header-default-collapsed-right-tr,.x-nbr .x-window-header-default-collapsed-right-br,.x-nbr .x-window-header-default-collapsed-right-tc,.x-nbr .x-window-header-default-collapsed-right-bc,.x-nbr .x-window-header-default-collapsed-right-ml,.x-nbr .x-window-header-default-collapsed-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-right-corners.gif')}.x-nbr .x-window-header-default-collapsed-right-ml,.x-nbr .x-window-header-default-collapsed-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-right-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-collapsed-right-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl{position:relative;right:0}.x-window-header-default-collapsed-bottom{padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-header-default-collapsed-bottom-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-collapsed-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-nbr .x-window-header-default-collapsed-bottom-tl,.x-nbr .x-window-header-default-collapsed-bottom-bl,.x-nbr .x-window-header-default-collapsed-bottom-tr,.x-nbr .x-window-header-default-collapsed-bottom-br,.x-nbr .x-window-header-default-collapsed-bottom-tc,.x-nbr .x-window-header-default-collapsed-bottom-bc,.x-nbr .x-window-header-default-collapsed-bottom-ml,.x-nbr .x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-bottom-corners.gif')}.x-nbr .x-window-header-default-collapsed-bottom-ml,.x-nbr .x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-bottom-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-collapsed-bottom-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl{position:relative;right:0}.x-window-header-default-collapsed-left{padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-header-default-collapsed-left-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-collapsed-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x-nbr .x-window-header-default-collapsed-left-tl,.x-nbr .x-window-header-default-collapsed-left-bl,.x-nbr .x-window-header-default-collapsed-left-tr,.x-nbr .x-window-header-default-collapsed-left-br,.x-nbr .x-window-header-default-collapsed-left-tc,.x-nbr .x-window-header-default-collapsed-left-bc,.x-nbr .x-window-header-default-collapsed-left-ml,.x-nbr .x-window-header-default-collapsed-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-left-corners.gif')}.x-nbr .x-window-header-default-collapsed-left-ml,.x-nbr .x-window-header-default-collapsed-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-left-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-collapsed-left-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl{position:relative;right:0}.x-window-header-default-top{-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-header-default-right{-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset}.x-window-header-default-bottom{-moz-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-header-default-left{-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-body-plain{background:transparent}.x-message-box .x-window-body{background-color:#ced9e7;border:0}.x-message-box .x-progress-wrap{margin-top:4px}.x-message-box-icon{width:47px;height:32px}.x-message-box-info,.x-message-box-warning,.x-message-box-question,.x-message-box-error{background:transparent no-repeat top left}.x-message-box .x-msg-box-wait{background-image:url('../../resources/themes/images/default/shared/blue-loading.gif')}.x-message-box-info{background-image:url('../../resources/themes/images/default/shared/icon-info.gif')}.x-message-box-warning{background-image:url('../../resources/themes/images/default/shared/icon-warning.gif')}.x-message-box-question{background-image:url('../../resources/themes/images/default/shared/icon-question.gif')}.x-message-box-error{background-image:url('../../resources/themes/images/default/shared/icon-error.gif')}.x-tab-bar{position:relative;background-color:transparent;background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(top,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(top,#dde8f5,#cbdbef);background-image:-o-linear-gradient(top,#dde8f5,#cbdbef);background-image:-ms-linear-gradient(top,#dde8f5,#cbdbef);background-image:linear-gradient(top,#dde8f5,#cbdbef);font-size:11px}.x-nlg .x-tab-bar{background-image:url('../../resources/themes/images/default/tab-bar/tab-bar-default-bg.gif')}.x-tab-bar-default-plain,.x-nlg .x-tab-bar-default-plain{background:transparent none}.x-tab-bar-body{border-style:solid;border-color:#99bce8;position:relative;z-index:2;zoom:1}.x-tab-bar-top .x-tab-bar-body{height:20px;border-width:1px 1px 0;padding:1px 0 3px}.x-tab-bar-top .x-tab-bar-strip{top:22px;border-width:1px 1px 0;height:2px}.x-border-box .x-tab-bar-top .x-tab-bar-body{height:25px}.x-border-box .x-tab-bar-top .x-tab-bar-strip{height:3px}.x-tab-bar-top .x-tab-bar-body-default-plain{height:20px;border-width:0;padding:0 0 2px}.x-tab-bar-top .x-tab-bar-strip-default-plain{top:20px;border-width:1px 1px 0 1px;height:2px}.x-border-box .x-tab-bar-top .x-tab-bar-body-default-plain{height:22px}.x-border-box .x-tab-bar-top .x-tab-bar-strip-default-plain{height:3px}.x-tab-bar-bottom .x-tab-bar-body{height:20px;border-width:0 1px 1px;padding:3px 0 1px}.x-tab-bar-bottom .x-tab-bar-body .x-box-inner{position:relative;top:-1px}.x-tab-bar-bottom .x-tab-bar-body .x-box-scroller,.x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-left,.x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-right{height:22px}.x-tab-bar-bottom .x-tab-bar-strip{top:0;border-width:0 1px 1px 1px;height:2px}.x-border-box .x-tab-bar-bottom .x-tab-bar-body{height:25px}.x-border-box .x-tab-bar-bottom .x-tab-bar-strip{height:3px}.x-tab-bar-bottom .x-tab-bar-body-default-plain{height:20px;border-width:0;padding:3px 0 0}.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-inner{position:relative;top:-1px}.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller,.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-left,.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-right{height:21px}.x-tab-bar-bottom .x-tab-bar-strip-default-plain{top:0;border-width:0 1px 1px 1px;height:2px}.x-border-box .x-tab-bar-bottom .x-tab-bar-body-default-plain{height:23px}.x-border-box .x-tab-bar-bottom .x-tab-bar-strip-default-plain{height:3px}.x-tab-bar-strip-default,.x-tab-bar-strip-default-plain{font-size:0;line-height:0;position:absolute;z-index:1;border-style:solid;overflow:hidden;border-color:#99bce8;background-color:#deecfd;zoom:1}.x-tab-default-top{padding:3px 3px 0 3px;border-width:1px 1px 0 1px;border-style:solid;background-color:#deecfd}.x-nlg .x-tab-default-top-mc{background-image:url('../../resources/themes/images/default/tab/tab-default-top-bg.gif');background-color:#deecfd}.x-nbr .x-tab-default-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100404px 1000000px}.x-nbr .x-tab-default-top-tl,.x-nbr .x-tab-default-top-bl,.x-nbr .x-tab-default-top-tr,.x-nbr .x-tab-default-top-br,.x-nbr .x-tab-default-top-tc,.x-nbr .x-tab-default-top-bc,.x-nbr .x-tab-default-top-ml,.x-nbr .x-tab-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/tab/tab-default-top-corners.gif')}.x-nbr .x-tab-default-top-ml,.x-nbr .x-tab-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/tab/tab-default-top-sides.gif');background-position:0 0}.x-nbr .x-tab-default-top-mc{padding:0}.x-strict .x-ie7 .x-tab-default-top-tl,.x-strict .x-ie7 .x-tab-default-top-bl{position:relative;right:0}.x-tab-default-bottom{padding:0 3px 3px 3px;border-width:0 1px 1px 1px;border-style:solid;background-color:#deecfd}.x-nlg .x-tab-default-bottom-mc{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif');background-color:#deecfd}.x-nbr .x-tab-default-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100000px 1000404px}.x-nbr .x-tab-default-bottom-tl,.x-nbr .x-tab-default-bottom-bl,.x-nbr .x-tab-default-bottom-tr,.x-nbr .x-tab-default-bottom-br,.x-nbr .x-tab-default-bottom-tc,.x-nbr .x-tab-default-bottom-bc,.x-nbr .x-tab-default-bottom-ml,.x-nbr .x-tab-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-corners.gif')}.x-nbr .x-tab-default-bottom-ml,.x-nbr .x-tab-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-sides.gif');background-position:0 0}.x-nbr .x-tab-default-bottom-mc{padding:0}.x-strict .x-ie7 .x-tab-default-bottom-tl,.x-strict .x-ie7 .x-tab-default-bottom-bl{position:relative;right:0}.x-tab{z-index:1;margin:0 0 0 2px;display:inline-block;zoom:1;*display:inline;white-space:nowrap;height:20px;border-color:#8db3e3;cursor:pointer;cursor:hand}.x-tab button{cursor:pointer;cursor:hand}.x-tab em{display:block;padding:0 6px;line-height:1px}.x-tab button{background:0;border:0;padding:0;margin:0;-webkit-appearance:none;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;color:#416da3;outline:0 none;overflow-x:visible}.x-tab button::-moz-focus-inner{border:0;padding:0}.x-tab button .x-tab-inner{background-color:transparent;background-repeat:no-repeat;background-position:0 -2px;display:block;text-align:center;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden}.x-tab img{display:none}.x-border-box .x-tab-default-top{height:21px}.x-border-box .x-tab-default-bottom{height:21px}* html .x-ie .x-tab button{width:1px}.x-strict .x-ie6 .x-tab .x-frame-mc,.x-strict .x-ie7 .x-tab .x-frame-mc{height:100%}.x-ie .x-tab-active button:active{position:relative;top:-1px;left:-1px}.x-tab-default-top{-moz-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-webkit-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-o-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;border-bottom:1px solid #99bce8!important}.x-tab-default-top em{padding-bottom:3px}.x-tab-default-top button,.x-tab-default-top .x-tab-inner{height:13px;line-height:13px}.x-safari4 .x-tab-default-top .x-tab-inner,.x-safari5_0 .x-tab-default-top .x-tab-inner{line-height:11px}.x-nbr .x-tab-default-top{border-bottom-width:1px!important}.x-tab-default-top-active{border-bottom-color:#deecfd!important}.x-tab-default-bottom{-moz-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-webkit-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-o-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;border-top:1px solid #99bce8!important;-moz-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-webkit-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-o-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x-tab-default-bottom em{padding-top:3px}.x-tab-default-bottom button,.x-tab-default-bottom .x-tab-inner{height:13px;line-height:13px}.x-nbr .x-tab-default-bottom{border-top-width:1px!important}.x-tab-default-bottom-active{border-top-color:#deecfd!important}.x-tab-default-disabled{cursor:default;border-color:#bbd2ef;background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-ms-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:linear-gradient(top,#e1ecfa,#ecf4fe)}.x-tab-default-disabled button{color:#c3b3b3!important}.x-tab-icon-text-left .x-tab-inner{padding-left:20px}.x-tab button{position:relative}.x-tab-icon{position:absolute;background-repeat:no-repeat;background-position:0 -1px;top:0;left:0;right:auto;bottom:0;width:18px;height:18px}.x-strict .x-ie8 .x-tab button,.x-strict .x-ie9 .x-tab button{overflow-y:visible}.x-tab-default-disabled .x-tab-icon{filter:alpha(opacity=50);opacity:.5}.x-tab-noicon .x-tab-icon{display:none}.x-tab-top-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-ms-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x-tab-bottom-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-ms-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x-tab-active{z-index:3}.x-tab-active button{color:#15498b}.x-tab-top-active{background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-ms-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%)}.x-tab-bottom-active{background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-ms-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%)}.x-tab-disabled{border-color:#bbd2ef}.x-tab-disabled button{color:#c3b3b3}.x-tab-top-disabled{background-image:none;background:transparent;background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-ms-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:linear-gradient(top,#e1ecfa,#ecf4fe)}.x-tab-bottom-disabled{background-image:none;background:transparent;background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-ms-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:linear-gradient(bottom,#e1ecfa,#ecf4fe)}.x-nlg .x-tab-top{background-image:url('../../resources/themes/images/default/tab/tab-default-top-bg.gif')}.x-nlg .x-tab-bottom{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif')}.x-nlg .x-tab-top-over{background-image:url('../../resources/themes/images/default/tab/tab-default-top-over-bg.gif')}.x-nlg .x-tab-bottom-over{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-over-bg.gif')}.x-nlg .x-tab-top-active{background-image:url('../../resources/themes/images/default/tab/tab-default-top-active-bg.gif')}.x-nlg .x-tab-bottom-active{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-active-bg.gif')}.x-nlg .x-tab-top-disabled{background-image:url('../../resources/themes/images/default/tab/tab-default-top-disabled-bg.gif')!important}.x-nlg .x-tab-bottom-disabled{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif')!important}.x-tab-closable em{padding-right:14px}.x-tab-close-btn{position:absolute;top:2px;right:2px;width:11px;height:11px;font-size:0;line-height:0;text-indent:-999px;background:no-repeat;background-image:url('../../resources/themes/images/default/tab/tab-default-close.gif');filter:alpha(opacity=60);opacity:.6}.x-nbr .x-tab-close-btn{top:0;right:0}a.x-tab-close-btn:hover{filter:alpha(opacity=100);opacity:1}.x-tab-default-disabled a.x-tab-close-btn{filter:alpha(opacity=30);opacity:.3}.x-nbr .x-tab-top-over .x-frame-tl,.x-nbr .x-tab-top-over .x-frame-bl,.x-nbr .x-tab-top-over .x-frame-tr,.x-nbr .x-tab-top-over .x-frame-br,.x-nbr .x-tab-top-over .x-frame-tc,.x-nbr .x-tab-top-over .x-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-top-over-corners.gif')}.x-nbr .x-tab-top-over .x-frame-ml,.x-nbr .x-tab-top-over .x-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-top-over-sides.gif')}.x-nbr .x-tab-top-over .x-frame-mc{background-color:#e8f2ff;background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-top-over-bg.gif')}.x-nbr .x-tab-bottom-over .x-frame-tl,.x-nbr .x-tab-bottom-over .x-frame-bl,.x-nbr .x-tab-bottom-over .x-frame-tr,.x-nbr .x-tab-bottom-over .x-frame-br,.x-nbr .x-tab-bottom-over .x-frame-tc,.x-nbr .x-tab-bottom-over .x-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-over-corners.gif')}.x-nbr .x-tab-bottom-over .x-frame-ml,.x-nbr .x-tab-bottom-over .x-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-over-sides.gif')}.x-nbr .x-tab-bottom-over .x-frame-mc{background-color:#e8f2ff;background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-over-bg.gif')}.x-nbr .x-tab-top-active .x-frame-tl,.x-nbr .x-tab-top-active .x-frame-bl,.x-nbr .x-tab-top-active .x-frame-tr,.x-nbr .x-tab-top-active .x-frame-br,.x-nbr .x-tab-top-active .x-frame-tc,.x-nbr .x-tab-top-active .x-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-top-active-corners.gif')}.x-nbr .x-tab-top-active .x-frame-ml,.x-nbr .x-tab-top-active .x-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-top-active-sides.gif')}.x-nbr .x-tab-top-active .x-frame-mc{background-color:#deecfd;background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-top-active-bg.gif')}.x-nbr .x-tab-bottom-active .x-frame-tl,.x-nbr .x-tab-bottom-active .x-frame-bl,.x-nbr .x-tab-bottom-active .x-frame-tr,.x-nbr .x-tab-bottom-active .x-frame-br,.x-nbr .x-tab-bottom-active .x-frame-tc,.x-nbr .x-tab-bottom-active .x-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-active-corners.gif')}.x-nbr .x-tab-bottom-active .x-frame-ml,.x-nbr .x-tab-bottom-active .x-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-active-sides.gif')}.x-nbr .x-tab-bottom-active .x-frame-mc{background-color:#deecfd;background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-active-bg.gif')}.x-nbr .x-tab-top-disabled .x-frame-tl,.x-nbr .x-tab-top-disabled .x-frame-bl,.x-nbr .x-tab-top-disabled .x-frame-tr,.x-nbr .x-tab-top-disabled .x-frame-br,.x-nbr .x-tab-top-disabled .x-frame-tc,.x-nbr .x-tab-top-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-top-disabled-corners.gif')}.x-nbr .x-tab-top-disabled .x-frame-ml,.x-nbr .x-tab-top-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-top-disabled-sides.gif')}.x-nbr .x-tab-top-disabled .x-frame-mc{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-top-disabled-bg.gif')}.x-nbr .x-tab-bottom-disabled .x-frame-tl,.x-nbr .x-tab-bottom-disabled .x-frame-bl,.x-nbr .x-tab-bottom-disabled .x-frame-tr,.x-nbr .x-tab-bottom-disabled .x-frame-br,.x-nbr .x-tab-bottom-disabled .x-frame-tc,.x-nbr .x-tab-bottom-disabled .x-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-corners.gif')}.x-nbr .x-tab-bottom-disabled .x-frame-ml,.x-nbr .x-tab-bottom-disabled .x-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-sides.gif')}.x-nbr .x-tab-bottom-disabled .x-frame-mc{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif')}.x-autowidth-table table.x-grid-table{table-layout:auto;width:auto!important}.x-tree-no-lines .x-tree-elbow{background-color:transparent}.x-tree-no-lines .x-tree-elbow-end{background-color:transparent}.x-tree-no-lines .x-tree-elbow-line{background-color:transparent}.x-tree-arrows .x-tree-elbow-plus{background:transparent no-repeat 0 0}.x-tree-arrows .x-tree-elbow-end-plus{background:transparent no-repeat 0 0}.x-tree-arrows .x-tree-elbow-end-minus{background:transparent no-repeat -16px 0}.x-tree-arrows .x-tree-elbow-minus{background:transparent no-repeat -16px 0}.x-tree-arrows .x-tree-elbow{background-color:transparent!important}.x-tree-arrows .x-tree-elbow-end{background-color:transparent!important}.x-tree-arrows .x-tree-elbow-line{background-color:transparent!important}.x-tree-arrows .x-tree-expander-over .x-tree-elbow-plus,.x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-plus{background-position:-32px 0}.x-tree-arrows .x-tree-expander-over .x-tree-elbow-minus,.x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-minus{background-position:-48px 0}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-plus,.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-position:-16px 0}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-plus,.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-end-plus{background-position:-48px 0}.x-tree-elbow-plus,.x-tree-elbow-minus,.x-tree-elbow-end-plus,.x-tree-elbow-end-minus{cursor:pointer}.x-tree-lines .x-tree-elbow{background-image:url('../../resources/themes/images/default/tree/elbow.gif')}.x-tree-lines .x-tree-elbow-end{background-image:url('../../resources/themes/images/default/tree/elbow-end.gif')}.x-tree-lines .x-tree-elbow-plus{background-image:url('../../resources/themes/images/default/tree/elbow-plus.gif')}.x-tree-lines .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-end-plus.gif')}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus{background-image:url('../../resources/themes/images/default/tree/elbow-minus.gif')}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-end-minus.gif')}.x-tree-lines .x-tree-elbow-line{background-image:url('../../resources/themes/images/default/tree/elbow-line.gif')}.x-tree-no-lines .x-tree-elbow-plus,.x-tree-no-lines .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-plus-nl.gif')}.x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-plus,.x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-end-minus-nl.gif')}.x-tree-arrows .x-tree-elbow-plus,.x-tree-arrows .x-tree-elbow-minus,.x-tree-arrows .x-tree-elbow-end-plus,.x-tree-arrows .x-tree-elbow-end-minus{background-image:url('../../resources/themes/images/default/tree/arrows.gif')}.x-tree-icon{margin:2px 3px 0 0}.x-grid-with-row-lines .x-tree-icon{margin-top:1px}.x-tree-elbow,.x-tree-elbow-end,.x-tree-elbow-plus,.x-tree-elbow-end-plus,.x-tree-elbow-empty,.x-tree-elbow-line{height:20px;width:16px}.x-grid-with-row-lines .x-tree-elbow,.x-grid-with-row-lines .x-tree-elbow-end,.x-grid-with-row-lines .x-tree-elbow-plus,.x-grid-with-row-lines .x-tree-elbow-end-plus,.x-grid-with-row-lines .x-tree-elbow-empty,.x-grid-with-row-lines .x-tree-elbow-line{height:19px;background-position:0 -1px}.x-tree-icon-leaf{width:16px;background-image:url('../../resources/themes/images/default/tree/leaf.gif')}.x-tree-icon-parent{width:16px;background-image:url('../../resources/themes/images/default/tree/folder.gif')}.x-grid-tree-node-expanded .x-tree-icon-parent{background-image:url('../../resources/themes/images/default/tree/folder-open.gif')}.x-grid-rowbody{padding:0}.x-grid-cell-treecolumn .x-grid-cell-inner{padding:0;line-height:19px}.x-grid-with-row-lines .x-grid-cell-treecolumn .x-grid-cell-inner{line-height:17px}.x-tree-panel .x-grid-cell-inner{cursor:pointer}.x-tree-panel .x-grid-cell-inner img{display:inline-block;vertical-align:top}.x-ie .x-tree-panel .x-tree-elbow,.x-ie .x-tree-panel .x-tree-elbow-end,.x-ie .x-tree-panel .x-tree-elbow-plus,.x-ie .x-tree-panel .x-tree-elbow-end-plus,.x-ie .x-tree-panel .x-tree-elbow-empty,.x-ie .x-tree-panel .x-tree-elbow-line{vertical-align:-6px}.x-grid-editor-on-text-node .x-form-text{padding-left:1px;padding-right:1px}.x-ie .x-grid-editor-on-text-node .x-form-text{padding-left:2px;padding-right:2px}.x-tree-checkbox{margin:4px 3px 0 0;display:inline-block;vertical-align:top;width:13px;height:13px;background:no-repeat;background-image:url('../../resources/themes/images/default/form/checkbox.gif');overflow:hidden;padding:0;border:0}.x-tree-checkbox::-moz-focus-inner{padding:0;border:0}.x-grid-with-row-lines .x-tree-checkbox{margin-top:3px}.x-tree-checkbox-checked{background-position:0 -13px}.x-tree-drop-ok-append .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-append.gif')}.x-tree-drop-ok-above .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-above.gif')}.x-tree-drop-ok-below .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-below.gif')}.x-tree-drop-ok-between .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-between.gif')}.x-grid-tree-loading .x-tree-icon{background-image:url('../../resources/themes/images/default/tree/loading.gif')}.x-tree-ddindicator{height:1px;border-width:1px 0 0;border-style:dotted;border-color:green}.x-grid-tree-loading span{font-style:italic;color:#444}.x-tree-animator-wrap{overflow:hidden}.x-surface{display:-moz-inline-box;-moz-box-orient:vertical;display:inline-block;vertical-align:middle;*vertical-align:auto;overflow:hidden}.x-surface{*display:inline}.rvml{behavior:url(#default#VML)}.x-surface tspan{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-vml-sprite{position:absolute;left:0;top:0;width:1px;height:1px}.x-vml-group{position:absolute;left:0;top:0;width:1000px;height:1000px}.x-vml-measure-span{position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;display:inline}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}svg,vml{overflow:hidden}.x-viewport,.x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;position:static}.x-dd-drag-proxy{z-index:1000000!important}.x-dd-drag-repair .x-dd-drag-ghost{filter:alpha(opacity=60);opacity:.6}.x-dd-drag-repair .x-dd-drop-icon{display:none}.x-dd-drag-ghost{filter:alpha(opacity=85);opacity:.85;padding:5px;padding-left:20px;white-space:nowrap;color:#000;font:normal 11px tahoma,arial,verdana,sans-serif;border:1px solid;border-color:#ddd #bbb #bbb #ddd;background-color:#fff}.x-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1}.x-view-selector{position:absolute;left:0;top:0;width:0;background-color:#c3daf9;border:1px dotted #39b;filter:alpha(opacity=50);opacity:.5;zoom:1}.x-dd-drop-nodrop .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/dd/drop-no.gif')}.x-dd-drop-ok .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/dd/drop-yes.gif')}.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/dd/drop-add.gif')}.x-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;zoom:1;filter:alpha(opacity=0);opacity:0;background-color:#fff}.x-collapsed .x-resizable-handle{display:none}.x-resizable-handle-east{width:6px;height:100%;right:0;top:0}.x-resizable-over .x-resizable-handle-east{cursor:e-resize}.x-resizable-handle-south{width:100%;height:6px;left:0;bottom:0}.x-resizable-over .x-resizable-handle-south{cursor:s-resize}.x-resizable-handle-west{width:6px;height:100%;left:0;top:0}.x-resizable-over .x-resizable-handle-west{cursor:w-resize}.x-resizable-handle-north{width:100%;height:6px;left:0;top:0}.x-resizable-over .x-resizable-handle-north{cursor:n-resize}.x-resizable-handle-southeast{width:6px;height:6px;right:0;bottom:0;z-index:101}.x-resizable-over .x-resizable-handle-southeast{cursor:se-resize}.x-resizable-handle-northwest{width:6px;height:6px;left:0;top:0;z-index:101}.x-resizable-over .x-resizable-handle-northwest{cursor:nw-resize}.x-resizable-handle-northeast{width:6px;height:6px;right:0;top:0;z-index:101}.x-resizable-over .x-resizable-handle-northeast{cursor:ne-resize}.x-resizable-handle-southwest{width:6px;height:6px;left:0;bottom:0;z-index:101}.x-resizable-over .x-resizable-handle-southwest{cursor:sw-resize}.x-ie .x-resizable-handle-east{margin-right:-1px}.x-ie .x-resizable-handle-south{margin-bottom:-1px}.x-resizable-over .x-resizable-handle,.x-resizable-pinned .x-resizable-handle{filter:alpha(opacity=100);opacity:1}.x-window .x-window-handle{filter:alpha(opacity=0);opacity:0}.x-window-collapsed .x-window-handle{display:none}.x-resizable-proxy{border:1px dashed #3b5a82;position:absolute;left:0;top:0;overflow:hidden;z-index:50000}.x-resizable-overlay{position:absolute;left:0;top:0;width:100%;height:100%;display:none;z-index:200000;background-color:#fff;filter:alpha(opacity=0);opacity:0}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-position:left;background-image:url('../../resources/themes/images/default/sizer/e-handle.gif')}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-north{background-position:top;background-image:url('../../resources/themes/images/default/sizer/s-handle.gif')}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-position:top left;background-image:url('../../resources/themes/images/default/sizer/se-handle.gif')}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right;background-image:url('../../resources/themes/images/default/sizer/nw-handle.gif')}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left;background-image:url('../../resources/themes/images/default/sizer/ne-handle.gif')}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-position:top right;background-image:url('../../resources/themes/images/default/sizer/sw-handle.gif')}.x-splitter .x-collapse-el{position:absolute;cursor:pointer;background-color:transparent;background-repeat:no-repeat!important}.x-layout-split-left,.x-layout-split-right{top:50%;margin-top:-17px;width:5px;height:35px}.x-layout-split-top,.x-layout-split-bottom{left:50%;width:35px;height:5px;margin-left:-17px}.x-layout-split-left{background:no-repeat top right;background-image:url('../../resources/themes/images/default/util/splitter/mini-left.gif')}.x-layout-split-right{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-right.gif')}.x-layout-split-top{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-top.gif')}.x-layout-split-bottom{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-bottom.gif')}.x-splitter-collapsed .x-layout-split-left{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-right.gif')}.x-splitter-collapsed .x-layout-split-right{background:no-repeat top right;background-image:url('../../resources/themes/images/default/util/splitter/mini-left.gif')}.x-splitter-collapsed .x-layout-split-top{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-bottom.gif')}.x-splitter-collapsed .x-layout-split-bottom{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-top.gif')}.x-splitter-horizontal{cursor:e-resize;cursor:row-resize;font-size:1px}.x-splitter-vertical{cursor:e-resize;cursor:col-resize;font-size:1px}.x-splitter-collapsed,.x-splitter-horizontal-noresize,.x-splitter-vertical-noresize{cursor:default}.x-splitter-active{z-index:4;font-size:1px;background-color:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-splitter-active .x-collapse-el{filter:alpha(opacity=30);opacity:.3}.x-proxy-el{position:absolute;background:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-docked{position:absolute!important;z-index:1}.x-docked-top{border-bottom-width:0!important}.x-docked-bottom{border-top-width:0!important}.x-docked-left{border-right-width:0!important}.x-docked-right{border-left-width:0!important}.x-docked-noborder-top{border-top-width:0!important}.x-docked-noborder-right{border-right-width:0!important}.x-docked-noborder-bottom{border-bottom-width:0!important}.x-docked-noborder-left{border-left-width:0!important}.x-box-inner{overflow:hidden;zoom:1;position:relative;left:0;top:0}.x-box-item{position:absolute!important;left:0;top:0}.x-rtl .x-box-item{right:0;left:auto}.x-box-layout-ct,.x-border-layout-ct{overflow:hidden;zoom:1}.x-border-layout-ct{background-color:#dfe8f6;position:relative}.x-overflow-hidden{overflow:hidden!important}.x-inline-children>*{display:inline-block!important}.x-abs-layout-ct{position:relative}.x-abs-layout-item{position:absolute!important}.x-fit-item{position:relative}.x-border-region-slide-in{z-index:5}.x-region-collapsed-placeholder{z-index:4}.x-accordion-hd .x-panel-header-text{color:black;font-weight:normal}.x-accordion-hd{background:#d9e7f8!important;-moz-box-shadow:inset 0 0 0 0 #d9e7f8;-webkit-box-shadow:inset 0 0 0 0 #d9e7f8;-o-box-shadow:inset 0 0 0 0 #d9e7f8;box-shadow:inset 0 0 0 0 #d9e7f8}.x-accordion-hd .x-tool-collapse-top,.x-accordion-hd .x-tool-collapse-right,.x-accordion-hd .x-tool-collapse-bottom,.x-accordion-hd .x-tool-collapse-left{background-position:0 -255px}.x-accordion-hd .x-tool-expand-top,.x-accordion-hd .x-tool-expand-right,.x-accordion-hd .x-tool-expand-bottom,.x-accordion-hd .x-tool-expand-left{background-position:0 -240px}.x-accordion-hd .x-tool-over .x-tool-collapse-top,.x-accordion-hd .x-tool-over .x-tool-collapse-right,.x-accordion-hd .x-tool-over .x-tool-collapse-bottom,.x-accordion-hd .x-tool-over .x-tool-collapse-left{background-position:-15px -255px}.x-accordion-hd .x-tool-over .x-tool-expand-top,.x-accordion-hd .x-tool-over .x-tool-expand-right,.x-accordion-hd .x-tool-over .x-tool-expand-bottom,.x-accordion-hd .x-tool-over .x-tool-expand-left{background-position:-15px -240px}.x-accordion-hd{border-width:1px 0 1px 0!important;padding:4px 5px 5px 5px;border-top-color:#f3f7fb!important}.x-accordion-body{border-width:0!important}.x-accordion-hd-sibling-expanded{border-top-color:#99bce8!important;-moz-box-shadow:inset 0 1px 0 0 #f3f7fb;-webkit-box-shadow:inset 0 1px 0 0 #f3f7fb;-o-box-shadow:inset 0 1px 0 0 #f3f7fb;box-shadow:inset 0 1px 0 0 #f3f7fb}.x-accordion-hd-last-collapsed{border-bottom-color:#d9e7f8!important}.x-frame-tl,.x-frame-tr,.x-frame-tc,.x-frame-bl,.x-frame-br,.x-frame-bc{overflow:hidden;background-repeat:no-repeat}.x-frame-tc,.x-frame-bc{background-repeat:repeat-x}.x-frame-mc{position:relative;background-repeat:repeat-x;overflow:hidden}.x-box-scroller-left{float:left;height:100%;z-index:5}.x-box-scroller-left .x-toolbar-scroll-left,.x-box-scroller-left .x-tabbar-scroll-left{width:18px;position:relative;cursor:pointer;height:20px;background:transparent no-repeat -18px 0;background-image:url('../../resources/themes/images/default/tab-bar/scroll-left.gif')}.x-box-scroller-left .x-toolbar-scroll-left-hover{background-position:0 0}.x-box-scroller-left .x-toolbar-scroll-left-disabled,.x-box-scroller-left .x-tabbar-scroll-left-disabled{background-position:-18px 0;filter:alpha(opacity=50);opacity:.5;cursor:default}.x-box-scroller-left .x-toolbar-scroll-left{background-image:url('../../resources/themes/images/default/toolbar/scroll-left.gif');background-position:-14px 0}.x-box-scroller-left .x-toolbar-scroll-left-hover{background-position:0 0}.x-box-scroller-left .x-toolbar-scroll-left-disabled{background-position:-14px 0}.x-box-scroller-left .x-toolbar-scroll-left{width:14px;height:22px;border-bottom:1px solid #8db2e3}.x-horizontal-box-overflow-body{float:left}.x-box-scroller-right{float:right;height:100%;z-index:5}.x-box-scroller-right .x-toolbar-scroll-right,.x-box-scroller-right .x-tabbar-scroll-right{width:18px;position:relative;cursor:pointer;height:20px;background:transparent no-repeat 0 0;background-image:url('../../resources/themes/images/default/tab-bar/scroll-right.gif')}.x-box-scroller-right .x-toolbar-scroll-right-hover{background-position:-18px 0}.x-box-scroller-right .x-toolbar-scroll-right-disabled,.x-box-scroller-right .x-tabbar-scroll-right-disabled{background-position:0 0;filter:alpha(opacity=50);opacity:.5;cursor:default}.x-box-scroller-right .x-toolbar-scroll-right{background-image:url('../../resources/themes/images/default/toolbar/scroll-right.gif')}.x-box-scroller-right .x-toolbar-scroll-right-hover{background-position:-14px 0}.x-box-scroller-right .x-toolbar-scroll-right-disabled{background-position:0 0}.x-box-scroller-right .x-toolbar-scroll-right{width:14px;height:22px;border-bottom:1px solid #8db2e3}.x-box-scroller-top .x-box-scroller{line-height:0;font-size:0}.x-box-scroller-top .x-menu-scroll-top{background:transparent no-repeat center center;background-image:url('../../resources/themes/images/default/layout/mini-top.gif');height:8px;cursor:pointer}.x-box-scroller-bottom .x-box-scroller{line-height:0;font-size:0}.x-box-scroller-bottom .x-menu-scroll-bottom{background:transparent no-repeat center center;background-image:url('../../resources/themes/images/default/layout/mini-bottom.gif');height:8px;cursor:pointer}.x-box-menu-right{float:right;padding-right:2px}.x-column{float:left}.x-ie6 .x-column{display:inline}.x-quirks .x-ie .x-form-layout-table,.x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item{position:relative}.x-tool{height:15px}.x-tool img{overflow:hidden;width:15px;height:15px;cursor:pointer;background-color:transparent;background-repeat:no-repeat;background-image:url('../../resources/themes/images/default/tools/tool-sprites.gif');margin:0}.x-panel-header-horizontal .x-tool,.x-window-header-horizontal .x-tool{margin-left:2px}.x-panel-header-vertical .x-tool,.x-window-header-vertical .x-tool{margin-top:2px}.x-panel-header-vertical .x-tool-top,.x-window-header-vertical .x-tool-top{margin:0 0 4px}.x-tool-placeholder{visibility:hidden}.x-tool-toggle{background-position:0 -60px}.x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-panel-collapsed .x-tool-toggle,.x-fieldset-collapsed .x-tool-toggle{background-position:0 -75px}.x-panel-collapsed .x-tool-over .x-tool-toggle,.x-fieldset-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.x-tool-close{background-position:0 0}.x-tool-minimize{background-position:0 -15px}.x-tool-maximize{background-position:0 -30px}.x-tool-restore{background-position:0 -45px}.x-tool-gear{background-position:0 -90px}.x-tool-prev{background-position:0 -105px}.x-tool-next{background-position:0 -120px}.x-tool-pin{background-position:0 -135px}.x-tool-unpin{background-position:0 -150px}.x-tool-right{background-position:0 -165px}.x-tool-left{background-position:0 -180px}.x-tool-help{background-position:0 -300px}.x-tool-save{background-position:0 -285px}.x-tool-search{background-position:0 -270px}.x-tool-minus{background-position:0 -255px}.x-tool-plus{background-position:0 -240px}.x-tool-refresh{background-position:0 -225px}.x-tool-up{background-position:0 -210px}.x-tool-down{background-position:0 -195px}.x-tool-collapse{background-position:0 -345px}.x-tool-expand{background-position:0 -330px}.x-tool-print{background-position:0 -315px}.x-tool-expand-bottom,.x-tool-collapse-bottom{background-position:0 -195px}.x-tool-expand-top,.x-tool-collapse-top{background-position:0 -210px}.x-tool-expand-left,.x-tool-collapse-left{background-position:0 -180px}.x-tool-expand-right,.x-tool-collapse-right{background-position:0 -165px}.x-tool-over .x-tool-close{background-position:-15px 0}.x-tool-over .x-tool-minimize{background-position:-15px -15px}.x-tool-over .x-tool-maximize{background-position:-15px -30px}.x-tool-over .x-tool-restore{background-position:-15px -45px}.x-tool-over .x-tool-gear{background-position:-15px -90px}.x-tool-over .x-tool-prev{background-position:-15px -105px}.x-tool-over .x-tool-next{background-position:-15px -120px}.x-tool-over .x-tool-pin{background-position:-15px -135px}.x-tool-over .x-tool-unpin{background-position:-15px -150px}.x-tool-over .x-tool-right{background-position:-15px -165px}.x-tool-over .x-tool-left{background-position:-15px -180px}.x-tool-over .x-tool-down{background-position:-15px -195px}.x-tool-over .x-tool-up{background-position:-15px -210px}.x-tool-over .x-tool-refresh{background-position:-15px -225px}.x-tool-over .x-tool-plus{background-position:-15px -240px}.x-tool-over .x-tool-minus{background-position:-15px -255px}.x-tool-over .x-tool-search{background-position:-15px -270px}.x-tool-over .x-tool-save{background-position:-15px -285px}.x-tool-over .x-tool-help{background-position:-15px -300px}.x-tool-over .x-tool-print{background-position:-15px -315px}.x-tool-over .x-tool-expand{background-position:-15px -330px}.x-tool-over .x-tool-collapse{background-position:-15px -345px}.x-tool-over .x-tool-expand-bottom,.x-tool-over .x-tool-collapse-bottom{background-position:-15px -195px}.x-tool-over .x-tool-expand-top,.x-tool-over .x-tool-collapse-top{background-position:-15px -210px}.x-tool-over .x-tool-expand-left,.x-tool-over .x-tool-collapse-left{background-position:-15px -180px}.x-tool-over .x-tool-expand-right,.x-tool-over .x-tool-collapse-right{background-position:-15px -165px}.x-horizontal-scroller-present .x-grid-body{border-bottom-width:0}.x-vertical-scroller-present .x-grid-body{border-right-width:0}.x-scroller{overflow:hidden}.x-scroller-vertical{border:1px solid #99bce8;border-top-color:#c5c5c5}.x-scroller-horizontal{border:1px solid #99bce8}.x-vertical-scroller-present .x-scroller-horizontal{border-right-width:0}.x-scroller-ct{overflow:hidden;position:absolute;margin:0;padding:0;border:0;left:0;top:0;box-sizing:content-box!important;-ms-box-sizing:content-box!important;-moz-box-sizing:content-box!important;-webkit-box-sizing:content-box!important}.x-scroller-vertical .x-scroller-ct{overflow-y:scroll}.x-scroller-horizontal .x-scroller-ct{overflow-x:scroll}.x-html html,.x-html address,.x-html blockquote,.x-html body,.x-html dd,.x-html div,.x-html dl,.x-html dt,.x-html fieldset,.x-html form,.x-html frame,.x-html frameset,.x-html h1,.x-html h2,.x-html h3,.x-html h4,.x-html h5,.x-html h6,.x-html noframes,.x-html ol,.x-html p,.x-html ul,.x-html center,.x-html dir,.x-html hr,.x-html menu,.x-html pre{display:block}.x-html li{display:list-item;list-style:disc}.x-html head{display:none}.x-html table{display:table}.x-html tr{display:table-row}.x-html thead{display:table-header-group}.x-html tbody{display:table-row-group}.x-html tfoot{display:table-footer-group}.x-html col{display:table-column}.x-html colgroup{display:table-column-group}.x-html td,.x-html th{display:table-cell}.x-html caption{display:table-caption}.x-html th{font-weight:bolder;text-align:center}.x-html caption{text-align:center}.x-html body{margin:8px}.x-html h1{font-size:2em;margin:.67em 0}.x-html h2{font-size:1.5em;margin:.75em 0}.x-html h3{font-size:1.17em;margin:.83em 0}.x-html h4,.x-html p,.x-html blockquote,.x-html ul,.x-html fieldset,.x-html form,.x-html ol,.x-html dl,.x-html dir,.x-html menu{margin:1.12em 0}.x-html h5{font-size:.83em;margin:1.5em 0}.x-html h6{font-size:.75em;margin:1.67em 0}.x-html h1,.x-html h2,.x-html h3,.x-html h4,.x-html h5,.x-html h6,.x-html b,.x-html strong{font-weight:bolder}.x-html blockquote{margin-left:40px;margin-right:40px}.x-html i,.x-html cite,.x-html em,.x-html var,.x-html address{font-style:italic}.x-html pre,.x-html tt,.x-html code,.x-html kbd,.x-html samp{font-family:monospace}.x-html pre{white-space:pre}.x-html button,.x-html textarea,.x-html input,.x-html select{display:inline-block}.x-html big{font-size:1.17em}.x-html small,.x-html sub,.x-html sup{font-size:.83em}.x-html sub{vertical-align:sub}.x-html sup{vertical-align:super}.x-html table{border-spacing:2px}.x-html thead,.x-html tbody,.x-html tfoot{vertical-align:middle}.x-html td,.x-html th{vertical-align:inherit}.x-html s,.x-html strike,.x-html del{text-decoration:line-through}.x-html hr{border:1px inset}.x-html ol,.x-html ul,.x-html dir,.x-html menu,.x-html dd{margin-left:40px}.x-html ul,.x-html menu,.x-html dir{list-style-type:disc}.x-html ol{list-style-type:decimal}.x-html ol ul,.x-html ul ol,.x-html ul ul,.x-html ol ol{margin-top:0;margin-bottom:0}.x-html u,.x-html ins{text-decoration:underline}.x-html br:before{content:"\A"}.x-html :before,.x-html :after{white-space:pre-line}.x-html center{text-align:center}.x-html :link,.x-html :visited{text-decoration:underline}.x-html :focus{outline:invert dotted thin}.x-html BDO[DIR="ltr"]{direction:ltr;unicode-bidi:bidi-override}.x-html BDO[DIR="rtl"]{direction:rtl;unicode-bidi:bidi-override}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-neptune-debug.css
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-neptune-debug.css	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-neptune-debug.css	(revision 18277)
@@ -0,0 +1,12450 @@
+/*
+This file is part of Ext JS 4.1
+
+Copyright (c) 2011-2012 Sencha Inc
+
+Contact:  http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2012-07-04 21:11:01 (65ff594cd80b9bad45df640c22cc0adb52c95a7b)
+*/
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+/**
+ * @var {string} $theme-name
+ * The name of the theme. This must match the the output directory of the images.
+ * (defaults to 'default')
+ */
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+/**
+ * @var {string} $font-family
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $font-size
+ * The default font-size to be used throughout the theme.
+ */
+/**
+ * @var {string} $base-gradient
+ * The base gradient to be used throughout the theme.
+ * Used for elements like buttons, panels, etc.
+ */
+/**
+ * @var {color} $base-color
+ * The base color to be used throughout the theme.
+ */
+/**
+ * @var {color} $neutral-color
+ * The neutral color to be used throughout the theme.
+ */
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules
+ */
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+/**
+ * @var {boolean} $compile-all
+ * True to copile all CSS, even if above include rules are false
+ */
+/**
+ * @var {boolean} $scope-reset-css
+ * True to scope the reset CSS within the $prefix variable.
+ */
+/**
+ * @var {color} $css-shadow-background-color
+ * The base color for CSS shadows
+ */
+/**
+ * @var {boolean} $include-shadow-images
+ * True to include all shadow images.
+ */
+/**
+ * @var {boolean} $include-highlights
+ * True to include all shadows, highlights, and gradients
+ */
+/* line 85, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+.base-pictos, .forbidden:after, .forbidden:before, .people:after, .people:before, .information:after, .information:before, .link:after, .link:before, .love:after, .love:before, .list:after, .list:before, .music:after, .music:before, .edit2:after, .edit2:before, .chat2:after, .chat2:before, .retweet:after, .retweet:before, .search:after, .search:before, .time:after, .time:before, .photo:after, .photo:before, .chat:after, .chat:before, .settings:after, .settings:before, .settings2:after, .settings2:before, .bookmark:after, .bookmark:before, .link2:after, .link2:before, .tweet:after, .tweet:before, .cloud:after, .cloud:before, .close:after, .close:before, .home:after, .home:before, .key:after, .key:before, .mail:after, .mail:before, .paste:after, .paste:before, .power:after, .power:before, .open:after, .open:before, .star:after, .star:before, .person:after, .person:before, .video:after, .video:before, .edit:after, .edit:before, .charts:after, .charts:before, .expand:after, .expand:before, .refresh:after, .refresh:before, .tick:after, .tick:before, .tick2:after, .tick2:before, .play:after, .play:before, .pause:after, .pause:before, .stop:after, .stop:before, .forward:after, .forward:before, .rewind:after, .rewind:before, .play2:after, .play2:before, .refresh2:after, .refresh2:before, .minus:after, .minus:before, .left:after, .left:before, .right:after, .right:before, .date:after, .date:before, .shuffle:after, .shuffle:before, .wifi:after, .wifi:before, .speed:after, .speed:before, .more:after, .more:before, .print:after, .print:before, .warning:after, .warning:before, .location:after, .location:before, .trash:after, .trash:before, .cart:after, .cart:before, .flag:after, .flag:before, .add:after, .add:before, .lock:after, .lock:before, .unlock:after, .unlock:before, .remove:after, .remove:before, .add2:after, .add2:before, .up:after, .up:before, .down:after, .down:before, .bell:after, .bell:before, .quote:after, .quote:before, .novolume:after, .novolume:before, .volume:after, .volume:before, .question:after, .question:before, .x-form-invalid-icon ul:after, .x-form-invalid-icon ul:before, .x-tab-close-btn:after, .x-tab-close-btn:before {
+  font-family: Pictos;
+  color: transparent;
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  position: absolute;
+  top: 0;
+  left: 0; }
+
+/* Pictos Font
+* Copyright © 2010 Drew Wilson
+* http://www.drewwilson.com  -  http://pictos.drewwilson.com
+*
+* The fonts included in this stylesheet are subject to the End User License you purchased
+* from Drew Wilson. The fonts are protected under domestic and international trademark and 
+* copyright law. You are prohibited from modifying, reverse engineering, duplicating, or
+* distributing this font software.
+*
+* This font is NOT free. It is illegal to use this font without paying for a license. 
+*/
+@font-face {
+  font-family: 'Pictos';
+  src: url("pictos-web.eot");
+  src: local("☺"), url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAADJoAA0AAAAAR2QAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABMAAAABwAAAAcWF3wvkdERUYAAAFMAAAAHQAAACAAkQAET1MvMgAAAWwAAABIAAAAYIMUf1ljbWFwAAABtAAAAKkAAAFKznYCbGdhc3AAAAJgAAAACAAAAAj//wADZ2x5ZgAAAmgAACuvAAA9aCcOMcFoZWFkAAAuGAAAADEAAAA29KtLLWhoZWEAAC5MAAAAHgAAACQGhQMnaG10eAAALmwAAAEzAAABkElMDS1sb2NhAAAvoAAAAMoAAADKAij1am1heHAAADBsAAAAHgAAACAAvATkbmFtZQAAMIwAAAEyAAADaDtfCVNwb3N0AAAxwAAAAKYAAADtXH4MXwAAAAEAAAAAxtQumQAAAADIj74XAAAAAMj6BA142mNgZGBg4ANiCQYQYGJgBMJkIGYB8xgACIsAlgAAAHjaY2BiVmKcwMDKwMK0h6mLgYGhB0Iz3mUwYvjFgAqYkTkFlUXFDA4MCgz/md79ZwNKmjBsAQozguSYpjKtBVIKDIwAh2YNZHjaY2BgYGaAYBkGRgYQcAHyGMF8FgYNIM0GpBkZmBjqGP7//w/kK4Do/4//J0PVAwEjGwOcw8gEJJgYUAFQkpmFlY2dg5OLm4eXj19AUEhYRFRMXEJSSlpGVk5eQVFJWUVVTV1DU0tbR1dP38DQyNjE1MzcwtLK2sbWzt7B0cnZxdXN3cPTy9vH188/IDAoOCQ0LDwiMio6JjYuPiGRgVYgiUh1AHjTHZwAAAAAAAAB//8AAnjadXsJgBvFlXa/qj50Sy31MYdGGkmj7vHMeMYjqdX2jGfG53h8cNhgbINvY7ANDtiY08SYK0A4HSDYEBKuQFggwG4AGwxZQjAJ5NzdJCSBJBzJJhDC7iaY3azVs++1NNjkzz8adVdXVVe9evXe996rKglcGBz/ET+bPSeEBV1oFoSiIRdyecuFasnkpWrFKuRlzXBThRRfV6yM1W4dKxeh2nFmx1IzmzWNbHZ6y2UtZw6vWDHMjOHh2pPtPdlsT/uNUPG+J+AfEyrjf+QWe0hoEkqCkBoWXT0v60q5ZOiqJndD3nLUYmWY/53sSgWinbO3Hz9rQDw52dKSfCvZAgdilDO7kfObVAvkZp5+5mifdPeqjdCS8jzKBqb8vUwJ6ZGFzvEb2Is43g6hIswRThZOF3YIAhjdgP3SyB21kLdGoDoITsW/lbJgtEG5ZBb18hBU+sBC8uIg61LFziF3kGCjnCtVHfgU8dVyqn4fbOQXyn/zzF4MqlNCSm1cCVUUScwGkwsjUyLJ15ORSnReMuid4kWCkeRdyYgcgbGE94cVSiikwDlKyHtFCYcVnS6X1FNYcDpdDL/K27HadynB3IDcG5ulhfoj2KQ6EkuKYloLhSLYYnJ3goUVr8N/4WBI8a72Uzux9Q31+7F59bTPPwPn81Q2U+CCIsQFUygLU5F/BXsQlIIrlwxNzluVjsY9Zeiawn2+2hz5WqnzM+dWyyXu5swcfHx24tKnkpvgm1MnTZo6CboHOjsHOv/czJYrzd6aSIotvj2mabEnWpQkfCzJLcoFVa93MmyF1jlz5vyh06/t/8PTSguXvV82x8MwT0trLfPjTd7b//Qs0iwK7eOX8A1svzADZ3uXcC3Sq8mKiaTRZNnWELiY+NSzZSsFP1VxkWSz6tp+sozE48U0+DCKh43KEQfbVGS86i5qAyhl2zTKpRFKcLOUEU0DW8Wmepld6AVnGKRhMI0Ys6p8w8KZ4XBUv02PhpkcCbFwxKB0+BSrR0xG4vFIUuzOz2fN4XgsvLu55Z7PbHt2aO7qtde1NQWvZZETWpWFC5XcafHozmAh2tJkdgR3xr+qKEYm32GpgUAgEg40jU6Ki+EEqF4t1RMJB63uphDoJ9zQt1ZUo/F4VJWSoEqN5KnTV4mRiL5Xj0TEpVM/A5COK8oY33C69/lJF8294OSlIhx3RWDaMkO5LGCsHQyeu0BkXFy4A94BUY4kmhNKUyAYMLMBADUcSVynRcLhns6I0UM4AII6/hP2GrsZcUaAsl7QC07BKTtl+PFf/3oI/+F2uv5V8OcrOv4DfhnrwrqmYAvYQBHRqKQrecfKK/YwEKMrBatDKWplxbY6RCWv2261QyTUUiB4/JvHgwvul9ynlv723aUwFbZ4P97CDrCpbJP3e+8PmzDnIpgBI96VLQtaRq4/3q/tfmPp0JBfGbY8Q1UXLKCKFy5d6sWam0cElPjJ4//IzmPPCjGhVbBoHGpOLTso1AxVmttVx4dLXTOVFCa7WV5uA2YdV3t24aXLRHH5ztva2610q53LPT7cw6XuYTjTWwhP7V526aXLvNYbtWLastJW8ibYuLt7eLh7t4+fzeNP8hXYZ5vQhT2WEIoKjou8m2ifaMgRDQDHEsCuXn7plo6O4R4m9QwfV9sPey5dzr1aLme3ppEA9uzO5bvb8tFKz9BQz25vATy9e/nO2uhNSINtp4vaTf6c2eOvsrfYVf6cKaZiK7Zru6bL3nrppTsn/uG9l76976WX9n2bHpDezvEL+LnsBUQHF9toNxJyu5WQiFzERVQiuiPZPk7S3Rj0B+Xfq1hOCFGFDKw8fNh74DC7W49fHNeN+CS6XJTQ9cRFcUPHR8MvYC9QrcOw8lt+Bcyh7GMq1F8XAkjXxfws9ryQEBxhrjBfOE5YLCwVVvg0kub7WmrZllORjrLRMKtkkjTFIK12S9UylhMAVIv+S/QKZjj2CKBAo1TaplPWc/hFPinQBqf+pXdw2+rNG1dtH+pnPwrvv/yK/REu600zV0lioGvS5C6mMGnVDFOXvFqzlOgKR22Yqp9nv9g6p3Xm2tr7a7rTs1vZ8x89tmnZeUPlKdO3rdr0WG2SfcX+/VfYvcGEvHKmqjFEDtFIzlglx29MZWMhG9sBmX0UTK1Zs7B1TnqnhX/3t85O+/LUOX4u34byFCRrj6xP4CCsRBVozLn6jJA1g+9//fDhrz+OrN2bTnnXptLpFFyUSrNnP/Ye+PhjWPmxN2ZTpq21tgqkG67wY34JXIvtJlE7hBSxjUxAtb1uC5wJo+BUbi1WnUXVKszFyyIHdtKtCtdWixY9U5FVr2EV63jQOf4E38IOot4lBQMRgRBELehKzimoCCI5s6CXi8h27qCFLuuYo/sJlT311FPXek889RS8vnPz5to7cPZ111Vn1x6YWWXNl3n/6lz7PEy+7P43nF9u3Vpbe+2V7uUvv3xO0vU+Qj61jr/JV7PdgkZ6V8xCDJBPdjdzzW5iUanqIvQMQl1UlD4YRhcB5Zhdaaf7rj/hhpchzGbvuqycvnnj9M3fqVy2q5S5eePQ5jyVLr7+0L2drdPnfvuGXbtOv8l9btcutvHmaVPs9NDooesZ6l16/Hz2ffRR8thzGdnY3pC6IciyOBuCunQapC9l9kTbd723X3315kSw/25dv7s/qZy04/wHdmTez9z83VdvuvlVOGFe6W5du7s0upztOGnJjh1LMnU5OJ+fg/oQFHKfkoMqeTjk3+ANrxp6P6iRLrxG8vAYysOzsuzKSeXP8cTyRNyV5evjRoumsucbinjYew1Lq7L8lwRWSFSVpHxDPF63ARGB8+PZZpI81yLvinyrklu/awr45tcIhU4KtYauxS+ch5eTQiFvuClntzd9GErT0zWhEOwIhZZgmTfU1ITtDo6Ps/9B+WAod0EYZC/UZrGD3r3efZgzKAD7CHlJ/orgIlimEC8HQf46yN5fgT1bG6Vvnb5BgbHD2A5HvmMtdrg2lz3HUFn8su38BrYMPSABnCg4kgoPwW+9Vu82uPfpP/8Xithv/TZiwja+hp3i19Mng15U4S9eC/wOzgIb6z39tNfa0MMdiJMHkarQUZyEyfAJ9AGDx73F7GCDr94lr79etwdn8QB7WehEHBOKJuFoXdMIh3AKHZdQturSsw9dGYQhDTTThy0U17zMvrK5Sf0vcI934T8TzZth44kipvmJG72DLG2YrTzbkzn9jESzGLBd12YB1pw4I6D+aPkN6XCccmKR9I3LfqTC/0ohSQqgx5FBjsXG/x3ndiX6hFlhOtmLGFMQTrvBKSN4pkYAr27ZMRWHQDOVR8TFGrKCXkDJrbrDgJd6MXR3ibGwlAz2t2/cODiYu7qnPRGqtJ/y+OOnTJ3ReouZK3Sn5g23nbhgw4aWXFtJutZePG/5448vh/t6pHhESiid50Kn7v2iLx8LdLHVt31heacKTYY5OXXccNMMONdIlqQ97TNg5a23nlqfdz7+JixmFwsYIaRc1S445/3qV+fCnb+unf6rXxO2TRdG+W4ULgUtYZzmVdFRPHSO0uSaCDu7R478L5fm12768FfeBtj5RPPZ8OxWrwaW94vDhw7VMSw2fh7y523sIyakcfYaPRVR7u1qxXYkdEnRtalYtuNmgGcgMfG8i4h5YOHCfKEATSuPyw+Ojg7mjlu16oIbb7wgt+HCC0+HvT6lmdI3+menl6fZgpX7emblL7zhwjyb2XMXrJr1nvf792bOmvrKH1+Z6mM1yd52tNFBjMpOOFb7U1XfqVVkUyaDl6o6jec4mDg//ofcX99g+tOHH0Qi3SQkbEwjfB/NxuNf//jjV1MprS2toYHSUm3tV4QmWaP9HblMsDfEVCURiiqxTCCsRIJiMIz+aCQgAYSXB4KRWEaNsRcmDE1tTXIgqapoZzQVTmqyBgr5SFiTlwUgJMoiY6GwFo0kAmIgxBNJrcVIiQkxHGlJJGIxI6X6utY6fgO8xb6Jc9fqj1bXuNzfC8x3m9TSJ/beALbyyteamhftunKl2DV9elf39Onsm1eddpY3v+Q8AHOrK6/0fjC9u16CfEyPX8TXog63ITrMw5ZN2ULUbABbBr2BagNLCUVBzvdBL7imTKA3UgdarGL42Ceg5wpkH22wYHDU2thxi2VtsM6ybung7aOhxC3B1uCGUOiWBDxpbbH2FMT2ucGjmfpceqFYrL2Q7oyBHcOr9/MYdI+2i5h9dnGDhe1stOZqyVuC+EYLvuJdWizuKWy0RrXELaHQBmxpTyI82s6x37MseClNDXSmY2DF6nF8Uhjjy1hRKAq9OFKcfYznelkfZDhijW25VVTvquvbKRyRTasGtHzAfhVLR+zR88aOu/r4qeGwlBoYWFKc0a5HlaTzFSW2evaMldIZv021tFitLeC2mpmpM2zkr65zJRFQYq0zusOKWgoGktLs1ctG+i9stagq6mwHCvJmNldoR2oygAiIAlzIdSOHnQb6oaD6Rhlnm/dOXTeHyeAlgc1dN9mS5/RZuexF88/8AgwlTyrPWQewfnTycUYi1TenecbxezaFhAkbuRXh/9O+rD/BE1Yyf8wMa417acKyUT0bqTv1o4+8Bw8zIxzeGg5nI7nw2fjdGs6Fs34OZYb9jMjZ+MVM9uxh78GPPoJTvxNpj1DlYytixt/JJL3OCHP4OpbCqKkgdCPFpQzLgh4T/YlyhnnqGFGvNkJ0uHzX1esX63ogfdqqa44mvz2wePHAtMWLsxXLqhRZqm/27CYzEMweP70fk2ZTEJOD3kG/zrSBxa9hpWKFeOaMf559DnVCoqiBbK3qAmJlQf0NPFh7/BFY773zKDt45Afsc4/UUuwfHvUYyZeBvN6O9pB4XeJn88/z+/kh/jP+Jn+L/zv/kB8W7xcfEZ8RXxa/K/5A/BfxZ+Ib4m+OmRNF1soIQ1q/YWbAzVcLiFtOuWI5eTnv4FyV3DxJqZKXOWFa3s5bGEFWMUc20c2X9ZKrlWUTbyV6LBtOxUGt1JBTcXT99LyCH6tgl1C8KEqwSw5asbKLNjevaFhQkSm7YKFylxASewEfKgXMy/di6FQyXL1qlDXbMg3sF0vRl5QLMegjTQLqx3KmQ9UxB1jVKSmGk3eq1JXhomnIkG10jKqrIfoiwlpOCdFCK2Pftk+WVbbcMkp9ntB5GDBULtE7hp6XC3rJUDBuwVG5aE7cXnRjFWMEUE5LZsEgKi3ZREhHGs0SNW9X7Uq5alVLrkH5jqFjP04JWVLSyRktKHIGTDuPOFNykX8WMciRdUPPQBnHWK6gfcgbZt406EWLqMY2rTxeUBuraN1cjerJ/SUHP/hWhuPb6AUgrfhmQUPGWMgWHZ1smhcdm9LxjbyuFEagjHNawA8qW5yR+ckTI/UM07XCFJyTCs5FwSqgNBAkULkvGiUDiUM+WsjGEWYoeSJbM5SyU5KpHLmEjEfIQvrdaj/RU6KYDxNZKJtYI8sQ48rIKRybbmJtoywTU5BrJYfkLg4a0q75M4pETVGwYSTQxDSqHBHcBiRIWAcFr4RGFKtg/TZwKya9oyOlJnK/UnasqoPGHye1j5YTccZ9y1LF/HLFRaS1nQpOZC9zkLc0hw6KAf6TZGEJKrlFKqDLSD6KHAqng+LUi/JWKVj9yCILBYtggAIZLMUm8evYFZIazPJ1QtaROD3PMYdksIRigy/aJHCK7GAH6ALYWsH32vHFQrWMnibKWIkaMZGmiuEaCvEHvQkFmYsqhTNXUWQXB4Kyg19kdd4tG26pH6lEpuIsK9R9CZ1HZK2M3DCr6OVaBXQjkeeuhvzU0e3QiMvI4LJZ11PMyhMzdXJWkHbkZoMtlV4oV/w0Wl+kEzlkIduIWVgT2ZL3mUMcQQZXSKer5Yazg3peRakpV8s+mperKK3ICx37RWL0AbLyyOAyCTTKBbLbMCmtyEXN1ey8WyqTfCOliDlkE7JQQBtftlF4UALyZbeky/i1FDOvFRQEAE2quPLR9Y9nAdBuiRACDphURLyLjHNAZ4lJTJZGICiKuoxFEmMKY0zEAh7CK2eciSL+i4EIV0QZy0HCqxRgIarDGZOxThTfAcVvXQSsj3EHF7E5GRuQReyJnrAivoMtcFBErgBSFA9TeyKWBhnVDOKbnF7GNxhAAK8S3olYxoNMweaZCXIMSVMjzAAJsxM8KWEJl8EfngJ91yz63Dp8B3gARyhyQA+PKGNBJBaIUinM6hwBFpQVGiUERBpNCLtEHkgsgG9hhqiExTDSEpTBfxGZg8qIpDJiIZd8XnLsB0cvE9VAHIEG2WEIRSR8H/sNIBHAJUkiKrmMw6B/5tdFBkCQOIdPIiYiRKXEYzTuAF38VmUZu6+PA6LIIyZBRMFu/AmQaIoi/vhBlJBeSiKN1KI/aKrD5IAkgYRMJScZ/AFSfSB6kSQu4kUhuaA3/I5EZCBrRQokzOQoHsQXjjVFmlSsSvIQkHFeozjrWBLh2LISDNBs4jQjV6hVpBV7CisBBqHcKzcsuakPu0FaRBaiEfE6w5DauayZelaQDF9UOPUSxMRtIOGkIemi4g8QX7EZcRzlDakDhd7mEZGGrYCBaVEiftLoONW7B/irzO8IaGoMWjODbXJIlohL2EcQYr6Y0Ft+o/gXVyAVJ2GWaPLAb04UZZnzMERDIVBCPCgGiBd1mUcisCuRdIDaQOqlIASiKIiBUEJmgWBD/Jgky8TZEBLkbeDUr0qcBxYQUUQKRHiUuIfMZVlRwqkHi/vjSSBZn8VGnm2E9GWag4AYpon21QfqMo58Ih1kkvfPp56VCqLsIxVIqeITh+rCJVQi7g8Uo3N8G6cJx6iIESkSQ+6HxaBIvA/6QkdDi5DIY7uAQCKGSOTxJZwcH0a4zCPYnVKX0STy35ctHH7IFySSeRw0Igiw+kcWA3VtQZEh+eMhRuqEcBQNiNxXDRwYaS3xViJ9njrjNKwtkxb68kmi66sEdUFdohCHFCQvRAoS9qVfIuoh7DftDyTuq7ooh+pSzUizRJSJIAFPlPuIhQ8k1yQ4vuCjNJEukJBFSQIJZmgCcYzIklBdLRkyF2VURncMAigGARoaI+FnMRVll/olWSVFp26wH4mgkxSSKzJhGUlYCCbEEOryjwMOBugtTliE/ElKoUiMY/MI1ViBwBfxIkA8wykWiSsyCg5xihNrRKorBovBGIlBMiHmxEAUZy4oSZwrnKlIDdITDUk+OEkEQkBQz6JJrigipRQsBjQTDFkJhOTBEGcxbgbmLLrh0IIRFlbjNDilLi4oN2Eg1kscq2f8eeYEuDIJiE8oiqOySfJHzH0Moj8+mYbpaw+yWQLCXgmBhFQWAgkm+zCJlwgKuYb8ieIQlSApSpTkeidKdJi4ihTgJ9Yky9iRrxaKGPMVNRAMYRMBtD/hcFBENuJ0JoMxWQzLMd/oEOqh6KuiKHGSvTBiN00k0QkcJUvyzYwvc0lOQs1JTMIBHiO8xlHGsdwlHKC6ZDSkiK8W/sRzXyqwRgsNeAc+1deP9PG7+SL2j7SSB2rBKWC0UwgC+/qTe5/ZB1+Cu8D0Pvf++3AJ3OVtpBhpyvgTfAe7AWOkqCAU/TVJXuZFXjbLfMeRg3ez0J5Dm73Vm17uv+I97xAMwH3eapgF3vNrBX8PNjZ+IT8RYyUZ308IKYyemv0dGillumAXua3YKdN2dVuyTcUx+YmXLPFu6l58Se2NJbAN7/d/7eU330/DEF2ZccmSLtiGhb9Y0u3dtOSS+2HLnOQJS0/809zU8UsX+3FwbPxi7O85QRPSghAEvb8bHBymLftbuhRhd1CsjzE/S8Lw12D37qHO7q1f+tIvvuTdtaBSWeDAGu9bX7t891Dsrjfuuusz3eEK5dJYJD/GPpc97+8mN9VXFyaiOqG9mrDa5QQ0QtUq7cPWw9csVM1Gl8bRFdM8iAcOeEcOwMiZt37hR7fe2pGbmxEDQ+dAl/V4osnMNzV9skztmftB3r/f+yvsvBVr/ujWf8gVO+EzQzJvH32sCWvmm+rrdtPGPX4ZKyOvVaGF1sqLUKT9+2IfFKvlXMmUFMjlbUDOk12gLX5+qfchqNxbNdbhfRAS2dtiyPugAybVMmjAtS1nQSpw5D1QvQ95O8jvBRSvL3BoIPM+Y+9nvJ8imC1b5n3MWPI976+BAPxYIToUjKt/wi9gX8a5LgqThMlCv+AI0+qrWf6hg1xh4ngBLX1gyN2Googf2ljLcb3gSPg1/W8O0zmHr1AjEfXs2q/mpcsRdWVEZZfU7uyfZyjzWP5Pv4Y3D+CfV4A3vQL7ckStbVMjTgu8pUbWqJHaZrZxQcmbDc97FcVgxV//Olssbi8W9xaL5xUbezZTxsf5dnYlrQwj3zK+ZqgFf8fUPwJBoZa/F4juslRWC3z76Pl9tX+rzKn+sH3undFkMropqqpR74tz54LnAYzT9+rFnckWVW1JRjzAGWkRgK9mBzEVFCKoCaaQre/KOrxo2pKS8hf7JTPnmq4p12VVYz+8ubb1SXZmquw99NAWlxVrv4QDA96JZ87aaXk9mUxPBv7DUwG+/8H3rr56hvc+DHtr4PLbXzi368l5PEMVfJ3Ija/j3Si3WVppqa9A+ds0GPtg7KTU92cwpMCYYxhYfW78uWIPD81913vh3dEhzVFVri3f94t9sFzjSdX5CS2iWCxYvWPpvb/97b1L91axPOWox1+w9c47t55/fLKipbh3g9UCd7RYVou3uaW+NjdJEPhWdh6iAcmnQ7scOYqOlIIKkpNXYjwOlWFxBBz2pU21IsxDfF1Wncve8F45tdy/uLddljtHjj9uRNM2Lxv1/srCCKP2dO8VmPqv12G0X8yHI9WVg71NCcZ2Ed4lx6/lsxAP5tPJGYzEZIqlTb2+LtwNVmNNzA87K9hrlXIoTSEV7SZVHT+8MujIBMZNmGUafCCETlV0P/ohi9F3T0FCe4HH2FPJpB4KiGNouA6E5HAgqETiv5MlZbYoRTUtypVZiiT/LhiOwdXhaDQuhi6GiCh+EI7EQwmI3cX5nTFgajiuxP4oIpZfoijReCwU5BJ6ax/GlCQ6PKL6oUSBjI/lveM7fTzSaHclDrZrcztlk+hkoWhKJu8fuW/lSOzh34xc9ETKqqaegF+OeDd+7cCM0+6fcdvD3o0j8MvHNcdKPX7RyFtfw/baxt/h67C9TmwvA1lAzaPjTsPM9Tli1VfUMxiy0pp6hrH/7nU4P3IQwlp3W+TkU/tzNpphnt19WRZ9vpCVL61YeqfWH4udcgoLGEYmKk2xgvnT02PKlELknHMihb7AWHqtFbD6J/a0uvgu5tB4wFVtR5845lQh9DJ0duv777ekPJZqaUmBl2qBe87xRs6BM/3nJ+kq+HsGA+PP8dsRf9qEDtqBJSn7VEumkjt6FioIJvQrrmkr7J9XjpU9rTw2VoY/qsoKbympNvwxmkSMXH+V9+WXRnas6K4+tcr7k1/ng/IYOzUZ9VJYDVS/xshLW1Zc6dsKlG5+OsugtqfQVnQIU3xU6UUQQUnndHXcsmrZetkpmP4GdMHfF8sdk+anz4pWZzmxN27KVaNnnbM/9617NxyX6e7OZLu64AO8ZPGBZbwVbYVCGzzk7Su0fWOn9+7kzQNXve6XZRp18E78lcZ38VH2AqIcgpFNAmO2csXm8PCeXYuN3vvWPnL3lTuG3Ovg996ZLy7S7DtuhXdq98Pd3o2Jf/QW1/W3MP5Zvh5xLOjvLqm5CShBsnMqfAHOe937wes/O7zv596NbI13877XX9+39/XVP98H2+tznMS5OYV9xd9zVHP0DjwP+7wzvaXsK957BxDDtvs2ZNr4Wt6GfkMrzmBZGBFmCxuELcecY6EN7E/f9YKulf1zGbQN5K8XYZp2vI/Jxz7VIvHXdmk9yaE9rKq/PmU3jk/ohqvYODUFdmhZLb2ic2xSZdJYJ34nnVtIqWqq8AP8Yur79SfWUdsL1VG3o6gUrKZ0rnukq61dyZcmV2bOP7uinJYdYbNrbeyd3gKtr/bmaS0Hr3Z+Z3tc3anG2/0vpevPtQhjNe/Q5FKsEjNUlPmKlEvHK/GOdMkAbZFW6fFeJz4qyMeFdT5KaESIj1/xNsFeeHQu6AfA8G6qz9f08XXsA5yvdkJeoIWrGM9bbpV2w2x1mOGQaW2RdsOKaPX8PRH2gdHclAq0jE0fzkrxkaGLiy3G2N6NGPSEM+vytZeXNifVZja995SltzMxIibVKYz1xsJws5xs5yY3TTOKERgsP/JD3q82Nzd0+xD7H7iR9qtdJ6cPshcOvfIK2t7B8dv5Z9h3fP9Q8/e8bEXNKSYCQM61XQdBLaeiy6KYRdWE0t41oK/ZC59b472/Zu+yZfiorfYKeMdnuGTfWir1Llnj/XHNHcvuqGd7P6ZqoK/1+RFH/7AVdWCFsF4Q/GMetBYpHz1UY+cnXMU2NJWmQZuJE+4jol+56vrbNr6wyIpmYE653oytFLJAO0uoEIK/XIlOH/u3rrY2HUPfruJJC+alYosXndhpY5ijZzJdbcFStG9du8ivrcRSalOTaoRfYNDeOTipa7Azy+H5sEG5eti5Rs6dMKnUC97DWcPMtvfc0taVgQ7T1XsmG05rO2Sok0AgHcyyO9avjqhm3kyONYWcfNfgYFfOCSmzzSTmqZF/vlNszrQzUYcjdPo16/s/5fHr+Ea0kRJqdRR9RwEkVSqqoOJ3MjqKqqTC92Gvt8k7Ay70fgAnQ4/3E+/f2G7v++y5bbUnt29nJ9RugWdO8ebBPScvWeJFYP9Sb8yf94LAEAfn0onauufRzRw6NtWwu8Yg07u58/d2wth4r7t2TvBQZlFEVvYEzMCegBxdlDmEAc6cdT2WNHuKnaF9sT0wnFpSnrP2vmjosRD+R+8DWD+nd5GZTPTNbppx/J4zQ/4+8vkoZ3R2OPXJzmoDZuuAAdUizRm5xq99/aOP/PMjvz9wxelL4OnB2vX7rzjzRG/BIHvu8GP1Qm/VFfsHvAWLN+INnjlJqOPrdczy+Yj4WgYEB+vFL3vsw3vYc94/eB1wBdIxFW32xT5++hFKqoQyVqDtGLUkGklMso5CshFETL39yG1wD9u2/d6Hofybq+AeeMp77emZK2fiP3zl1iO337ttOzx/1a+91x5+BpxveCN+Ud0GtiEJ6+A2HOs04TS0gXphiPyaumdTMhsWHI25WaRjehXU/wk7f8y+uXzUDzi2fKI4w/i6O8RyKCJB9IyoGI9pHQUxpUPt5DuYnpJyHVosLkK4UkY8iAcd2N/cxphX4m0tcm+pNanLoN6QRHcile7v7yj0QXcmkQ23FcWenkmZkB0X4ykW0DBo6SvgPcA0zLFDGSoXi5lQR6Q9Gm4NBPr6eDgd4S26pDvRbocPDXFnUryqSVq6HoPmcO43o18zTZglLBSuF24XvkJY6B+Ko10t3wmmg68wgjyqA8HECVqM4ibcnjgQGJRL/racgq9zW0al93dezMbOMh1CIASwG3hCBxJ8XJHpXJ7iH9RTKN04nUAHSsqlomaS8Lu2DHnFP/3iWvzE5uZQRhYVdzsT4/Gxsflj8bjIzh1QuNIWamkJtfGAPHBuvWzhKJVtmyYHeFvGNB7UtOmdXau7O4fmzrEjUpMWlgOBRCIQUEKpZiUUCIWVnG3llHAoEJGaU1SqJoJBMZJIS5FjSr28+VVNf9CES+ZglNzbhw3Cw3P2zkkDO2dASaTl5mY5nSAKIT1622iawXlVP7tFwuyp24B5/zIye9aMSV2ru7zDX9W0r5pvK0G1RY6oqXbsIpmMyM1J9IHFREIUlWCyWY4kkx2FDrStYcUwQopfctuMWZMm90zumTQbBk2/FaFxNuQ89H+fQ10y/XM8n5wNMWOINP4pTZqPlNsHtAPjH5KvnxJpHBKhXXCaEYRq+J5/aOzjj9/JdrSa0GZH462cJaXYJJH3yrISb141mWPzGu+WQ0HVXINQ0DhFdgV0NTVnJ6XNmOpN4qIlxtIgKdGDze3JSGRaF58sZgNy/OlMpjkcGiAbZIw/zJex64RNwo9IM03d1yZ/h55b9Tik6jrDMMJQ6xy3cRlBTdQMzdD9XViFto3QdOuYoCFkuX+Wu1oXwb76QG0jywxTKxqkr7QJibFPnNU3nfx7H/Syik09VNBZqhJ/6GBEoxHeCI389uucMq0+ZtmVgmM7PhL4xwcYnw0pKZKbUb6ldFxfrhhmnIv1XaD6ihYtLkJanCayZtpnoFVUAFERQ9M6p+vZdm1GROZciq4HHumz29ndybD3uh3kIu2U1DeT6kvqjMnYCr0/0Q41xKkhe0gf1j9pRwxN6cxSO3AMYb/Hhgo9yebe/Ei5vGhKrljVwmoyEk8ByNQUrS/XLzJLS1P9Rd3m+pogLalRSTAaVwMR6gz7UsORUDgVWS+H9dScKZEM9qfDj+1KPBFuikSMeqv++jStf3P5/2kToF4cDv/dVk11ZrnRKv5Zkz6hnGxNFuPadWz9UVsWhyD0inULavQPi2zPigsrLS3eK94rYqwjbVyw4tSNKTHe1zeLrd+4tX9Ta9r7DkwVY729s7NbN56lS+rkXAMvp6Jy7fDPFir+ufaC0Ie9kLOOnhvQ9xjrmfr/pMFkq2r3N74yHdVutelA96fu7ODV3m+vvtp79+qr2cGJXO93E3W8dyfyGrHDIs4xJkjTuTY1Bg2XDN0T/8Rrfexqucg5nHbFypUzO/LePbByxkxMFvIMnmbPnlTzKmMLNi2IQuVkT63MX+BUFkQZbKJxBzFuPI9fieOOC3QupVXI4shtoZdOL078EGYiiJSQG1JBL9sUvqF9LKILbuMzJ9hxChLFGzmdfTywZMlA7Yd0ZSfXxhnU/rCW/i7AFD2NG/igx4bWspNjOuYc/KR2/8CSfzn/S9uvwc92ffvnz/c+H9PPP1+PLTm/HkcNjL/NL2Xbkc6/pW0Q3PpPV/iGcCwWPvIfdLXaws1fbg6nWS4eqv2Zclg0FB80jEGc5eD4BfxEtI8Bf2VKwIB4GijuNLzbGB0rNsvs8ypvz98CO5u9q5h258Z9rIg5C95pgp0tmLNh3+n7CNcy499FmbwG410M6DHKqps8hKFc3q66OeIJuoAKkUoT5q+x9AIdAfXDe76u0hkvR/TJcyuTvZ90FTItoC3Y3DfjIYzKf9p/hp3npURnZawCXy2P3dM1K9xtB+Rwe3Nva7J584L3pdEp51bGSj1hzqye8KzuD8rz55eFxvrXPr4B7UTcX3MbAVUr5HTbbQP6KVQxDmqlnHNMBWcsL+vsp02n7fb4I4/Auwmj9jo+QO2RR7x0wgCj6TTvyO6zH330PNlI3Nt0GoiXnf0IPpiJej/a+PV8nr8ek6Zfp+kTDoZvk/yj+1Z9GbjEp5haKt1u/nLBysufeQbYM32nnXHLGWfcIprZtlTK/OUUynvm8lMXrqLcMxrnIM9p+K89n/Zfk42156JBaF3wj+4VJn4PRGEMfA+d2cfQvvWAuH+/d+QAk2PBJkkWJelF2heWFLlXCfm+rX9wupY/UK/YEYrZMuOX0xb7u4okhZQXBZSS6eM/5ZexCz/5XVUWtaSbMIKWMGmPINlYvxQbd+FvfmvFMdJMOQV9Op995HlWq83f1tHS0tEMb/m32nc7mps7Wpjm31a/+7Wt7MLamlFm1N6DW1v8TP/q/fSYB5jjPQdzvT9ecEF9Llyhg+9kO1CLi39HQypltHkodOjbHv3lIF8fisdDR/5E18fAFI0QjDSHm95YuGXLwgVbtrDJsZDXSaoDr4diMCUYNaaAt3DzF7ds+eJmXyfd8Uf4+exhQSfvkuJrf1nRrdp0xAots8jPT7z56PDAys19QS4vD8w9JZB449FHEbhvvO6NlKKsCUtRUZx1gn3BvGvf1FIPUmyWH78IYzM6+66jVl1Ivy9y3CxT+sDNNw7FOBULlLzix6h2xc1AY2GjWq6SzEmVaqWX2/T7L8P3MkgqLd90+z7oCAyLFBnUBYdOjtDhDzo7RHdF7mcxtv761aFNxdF1yebmZKq52fvhejk0r71pwYWgjiSKbfMjQ3G+4KIEfB54INqc4KGmXwQSTPquBOHkpLE0569iSg2GvuVvDQPniR5I2HKKpcbUoKzJOVHUeEa8cH53/PSQvP76udam0Opqc6reH6xaz0bjFy3AzkJjmY7U9CRcvKA18zEPptMd2UzQ+HlbErAzFl7bxsRXOQ/zb8myGA1GY0pbsCinIvp8nP5cQmsRsY9/KqF8tI9f6q91LhXW+JEp/cyH3CMccv0HBf4T/RCIuFLPQt74T4RYmK7n4Av4MAykanSStp6FL5jSUclaGIxGg5cGZWkskpiTSG5R0P+ERHBdMIH3uLJZi89JRMYkGetQRSMyFsac1Oa/qbclmZgTD49FDO8/R5YvHxlevhzOnChmkcCWFDYenSdJwc9SM58NStK8CLWzJRBhn7Qjq1tSn+6uQVc8tUWV/3v5pStWXLrc96/z4+vZN33cLNBel4T+pUkjs2nZHAzuDzPvP9V/hkpwj05iiY5m5+HJvP6EHY978YR3X5wF4ARzCqxOJDwlKVOGyhLd8RR/3vhNLBbtbInGrJyJ9RNeIgGr4/o670mTHfDuT8THZRlWq9oLRqwnqrKRaGc02tIZjdXtYHj8VvYh+5m/nphDWMkB+7Cxjgjd9QWxRqxwAT/L9x16KFZI0fk2a8L0+BHw0d8UFf1feflw4df42x8cPc3pxCmsHFi8SY95D8R0PcYmT1uyZJr3gF+wS2vkwsqYBk2J1NzFA3+hks2bKfcvMX3zkoE/k5nHi3f5n+OaFqdLfTxX4HgO0XgQTcs4nnBjPQ8m19dJPx37KL6ncvRXGU7B9Xd16XdGSrkPnLJ+9ITWogf3nLvw3Fvu22Pvsr9Y+ySC8Vb9/qFrrnno97bdddtt/weKnOiWAHjaY2BkYGAAYn/ZBMN4fpuvDNzML4AiDCd+sfDCaeb/PsxTmR4BuRwMTCBRABIICg8AAAB42mNgZGBgevefjYGBeQ8DEDBPZWBkQAUpAFpTA7MAAHjaLVBNK4RRGD3vPWma8MqEYsaYd0Z5CY2MfG7sWWI1MsXSwkqz8BWlfDWSz82ULGyQNCUs/BALOxtLK1k493Lr9Nzuc855nnu8L7jjTQq68xqjLCBnPhFyBU3cRsq8oZ57qDVl9LCIZkbRwTP1j4Rz4R6DLKkWETcfSPBU93nUmG95ZYU+4cLBd7pAHsvwvV2QDxiTzlcv9H4Q18wElxDjIdp5LO4akuYVA05XQCOvkOWs+Av/Xo8Y5p36l3rfRwsnEKh2ckoem+jlKlpZ0ewnjGjXgHlUcQMZ1Rinpc0jwoh2yIlj/96FOu3fr/9meILQdItfwpDz2ZHezlxULuto463eQ/m8yPtGmEGUB0hyS7w5NLgcnuVt8ykLFaQ1O2XekVY21TY/V63n+F/+vzVQRI0AAAAAAAAAAAAAAAAwAHgBGAFyAjQCSgKWAtADDgMoA3QD+AQkBFIEjATKBPwFNgViBXAFhgWUBagFvAXYBiQGggaSBrQG+gdyB54IFAhcCI4I5gkoCUQPog+6D9oQEhBAEJAQ1BEsEV4RnBHiEhoSiBKwEvATFBNWE6ATwhPiE/YUhhSaFN4U6hUiFawV2hYeFlAWYhaWFxwYCBhkGYYZtBoAGjAahhqsGtAbHBtQG34bxBwWHFAceh0mHbgeCh4eHnIehh60HrQetAAAeNpjYGRgYEhhecggxgACTEDMyAAScwDzGQAlIAGlAAB42uVSS0rEQBB9yURBkfEKfQFzAFeiLmUcNDC4nGR6YiCmJYkGQXDrCTyAO6/g2Wbhq/6MEfEEpujqV1XvVVc3AXCIT0SQb+wTTOkniJI97qeMHJbq3OOYFvCE+SuPE+YD3sEGmce7iKPA38cmCpwCaTzzeIWD+NljjWn86vGa+TePS+L3eVX0plMLna9N0+MDCudoqRmIFqhQo4NBg2PGg7WU3R1jGNVTnm9whxdahltWOiqcX3LdU2PQU1dYv7L9NHLOJPre8hqbD9rGMiXn+MJsuZ/hmqZwstUeES3ZWTP7QLXsl5jhAjecTPEdNR65Wl+TrqU9QdtsZWPFTmHy76lc3BELT6av8bS9kfBzLnen9J/fPvuzw+8XSPnXu46GDJmx5PQ1b9L+qIzwF/y2jGwAAHjabc1XN4IBAIDhp89eyd6VzLKJZGRkbyEzcY6/6Mafo9O155z3+hWo+v227D9flUICNWrVqdegUZNmLVq1CWsX0aFTl249evXpN2DQkGEjomLiRiWMGTdh0pRpSSkzZs2Zt2DRUuW9Im3Vmox1WRs2bdmWs2PXnn15Bw4dOXbi1JlzFy5duXbjVsGdew+KHj159uLVm5J3ZR8+/YSCIF/4A0JgFjIAAA==) format("woff"), url(data:font/truetype;charset=utf-8;base64,AAEAAAANAIAAAwBQRkZUTVhd8L4AAADcAAAAHEdERUYAkQAEAAAA+AAAACBPUy8ygxR/WQAAARgAAABgY21hcM52AmwAAAF4AAABSmdhc3D//wADAAACxAAAAAhnbHlmJw4xwQAAAswAAD1oaGVhZPSrSy0AAEA0AAAANmhoZWEGhQMnAABAbAAAACRobXR4SUwNLQAAQJAAAAGQbG9jYQIo9WoAAEIgAAAAym1heHAAvATkAABC7AAAACBuYW1lO18JUwAAQwwAAANocG9zdFx+DF8AAEZ0AAAA7QAAAAEAAAAAxtQumQAAAADIj74XAAAAAMj6BA0AAQAAAA4AAAAYAAAAAAACAAEAAQBjAAEABAAAAAIAAAACAyIBkAAFAAQCvAKKAAAAjAK8AooAAAHdADIA+gAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAABweXJzAEAAIAD/Au7/BgAAAzQAtAAAAAEAAAAAApUCrQAAACAAAQAAAAMAAAADAAAAHAABAAAAAABEAAMAAQAAABwABAAoAAAABgAEAAEAAgB+AP///wAAACAA/////+P/YwABAAAAAAAAAAABBgAAAQAAAAAAAAABAgAAAAIAAAAAAAAAAAAAAAAAAAABAAADBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//AAIAAwA7/9ADbAK7AAsAFQAZAAAlFgYjISImNwE2MhcDMjY0JiMiBhQWNxMjEwNhJTRI/ZNIMyUBNiRnJFUXHx8XFh8fPBp/Gmc+WVk+AhY+Pv2xICwfHywgjQE0/swAAAAAAgA0/+wDJgKnABgAMgAAEz4ENxUiBhUHMzIWFREUBisBIiY1ESU0PgM3FSIGFQczMhYVERQGKwEiJjURNDQBDShDck5COgRUEhoaEuESGgG5DihDck5DOgRUEhoaEuATGgEhQWRnRi8FnV1lARoT/v4SGhoSAQIHQWRnRi8FnV1lARoT/v4SGhoSAQIFAAAABgAo/4wCwQK7ACQANABEAFQAZAB0AAABFisBERQGIyEiJjURIyImPwE2OwE1ND8BNjsBMh8BFh0BMzIXJRUzPQE0LwEmKwEiDwEGFQU0JyEjIgYVERQWMyEyNjUBMhYVERQGKwEiJjURNDYzEyImNRE0NjsBMhYVERQGIzMiJjURNDY7ATIWFREUBiMCwQkRMAoH/f8HCjQHBQQfCRJLDDAMEtgSDDQNRxIJ/lb+DAkMEpsSDAYMAUgQ/ulZBwoKBwFvBwr+xwcLCwcVBwsLB3oHCwsHFQcKCgdkBwoKBxYHCgoHAeIO/ckHCgoHAjcIBi4OQhQKMQwMNA0RPw4SBAQcFAoKDAwGDBKAEAILB/4kBwoKBwG8Cgf+hQcKCgcBewcK/mMKBwF7BwoKB/6FBwoKBwF7BwoKB/6FBwoAAAAGABb/7ANaAkEAAwAHAA8AFwAzADgAAAEjJzsBByM3BjIWFAYiJjQkMhYUBiImNBMWFRQHAwYjISImJwMjIiY0NjsBMh8BITc2MzIDNyEXIQH3bBB8tRJoAb84KSk4KQErOigoOijzGQJYBxn+XwwTAlGVDhQUDrAaBxIB9wUGGgd2Nv4uLQFtARtERETpKDooKDooKDooKDoBtgcaAwb+2xkPCwFHFBwUGkkPGP7is7oAAAAEACD/egNjArgAQABkAH4AiAAAARQGBxcVFAcGKwEiJyY9ATcGKwEXFRQHBisBIicmPQE3JicHIyInJj0BNDc2OwEXNjcnPQE0NzYzMh8BNjMyFxYDPgE1NCcmIyIPAScXBwYPAScVNxcWHwEHMycXFjMyPwEHMycDFzIeBBcWFAcGIyInLgInIy4BNT4BBT4BFxYOAiY2A2NLQQsLDRWUFQ0LAgYMCgILDBaUFQ0LC1YmLAQSDA8PDBIEKyJJAhkLDw4LgBkaoG5xuj1FXmCJHRgJiAIMTxsHS0sHIVsPDXsJIw0aGBckCXsPpQcHFh4iJCYRCAgIDAsIGEYpDwQLEAER/v0TLAwLCSYrGAoBFU+ML2AEEQ0PDw0RBRIBEQURDQ8PDREFWjxdBAwMFZgVDAwEVThuAQEcDwcHSANjZP6KKXhFdlRVBAFNggg5VxYHfwgWYDsJcEoEAgMES3QB4wEEBgwQGRAHGAgJCBcfCAEBEQsMEIkUDAsLLCgMFiwAAAAAAQAR/9UCywKPAAsAAAEzFSMVIzUjNTM1MwHR+vrG+vrGAZXG+vrG+gAAAAAEAA3/zgN/AioACwAXACcALAAAJTYyFzIVByI1JiIHJz4BFh8BBzQjJiQHJRQzBycmJAQHIhUnNzYkBAE2MhcHAQlO3U4BNwE3nDe1VeXkVQE4AWr+0WoCuQI4Amj+6P7paAE4AXgBQAE//oMaSho/i05OATcBNze0VT09VQE4AWoBarcCOAJoSkpoATgBd1VV/g4ZGT8AAAMALf+yAnMCugAOABsAJgAAATMRIREzNTQ2OwIyFhUDJzY1NCYjIgYVFBcHEzU0JisCIgYdAQImTf26S3xXBARYe5QgICYcGychIa8+LAMFKz4BZ/5LAbWAV3x8V/4bjRQlHCYmHCYSjgFlgCs+PiuAAAAAAgAZ/7EDWQK6AB0AKgAAATIWHQEjNTc1IzU0JisCIgYdATMRIREhNTQ2OwEBJzY1NCYjIgYVFBcHAoVYfGokJD4sAgUsPk39uAGRfFgD/v0hIScbHCchIQK6e1iAHSINNCw9PSyA/koBtoBYe/1GjhQlHCcnHCUUjgAAAAEAJ//KAuEChAALAAABBxcHJwcnNyc3FzcC4cPDmsPDmsPDmsPDAerDxJnDw5nEw5rDwwACACj/dgNwAr4ABwA3AAAAIBYQBiAmEAU1NCYrASImPQE0JisBIgYdARQGKwEiBh0BFBY7ATIWHQEUFjsBMjY9ATQ2OwEyNgEeAVz29v6k9gKdFQ95DxUWDykPFRYPeBAVFRB4DxYVDykPFhUPeQ8VAr72/qT29gFcwikPFRYPeQ8VFQ95DxYVDykPFhUPeQ8VFQ95DxUWAAgAKP95A2sCvQAQADUARQBJAE0AUQBVAFkAAAAgFhUUBwYHBiMiJyYnJjU0BTY1NCYjIgYVFBcWFzYzMhYVFAcWFxYzMjcyNjMmNTQ2MzIXNiUWFRQHBiMiJyY1NDY1Jz8BFSM1HwEHJxc1MxUhNTMVJzcXBwEdAVr0LjtxXmllXXI9MQLQC7iBgrgMAwYVGEFdBQQIKiktKgIHAgVdQBcVBf79GQUQKgsNJwE4FXMnwRtEG0Fg/etfKxxDGwK99a1oV3M9MzA8cV1orf0pJ4K4uIInLgkQBlxBERQCAgsMBBYSQF0GD40THw4KJwUQKgEGAvUJE19fSxtEHHsmJiYmoxtDHAAAAAIAKP9wA3ECugAJABkAAAEyFhAGIyImEDYBNTQmIyEiBh0BFBYzITI2Ac2u9vaur/b2AZgcE/6IExwcEwF4ExwCuvf+pPf3AVz3/kgnExwcEycUGxsAAAADADcA0QN6AYgACQASABsAABMyFhUUBiImNDYgMhYUBiImNTQkMhYUBiImNTSTJTY1TDY2AUVMNjZMNQF7TDY2TDYBiDYlJjY2TDU1TDY2JiU2NUw2NiYlAAAAAAQAKP+wA2oCvAAOABIAFgAnAAABMxURIxUHITUjETUzNSEXIxUzJRUhNQM1Mz0BMxUzNSEVMz0BMxURArW1tYj+sLW1Adh7aWn94wFsiYk2Q/2kQTYCGX/+0zWIvQEtf6PcNdttbf1giIM3gcXFbxI3/vUAAgAb/90DXgKAABQAKgAAJR8BDgEjIiYnKwI3FysBFBYzMjY3MwcnOwE1NCYjIgYHLwE+ATMyFh0BAoMnHC+LT4zFAQsCQ35/MxyPZTxpyDR/fjIej2U9aSInHC+LUYvGoSgbPEXEjH5+ZI43u35+AmWPOTAnHD1GxosCAAEAHP91As0CuwAiAAAlMxUUBiAmNTQ2MzIXPQEfAg8CPQEmIyIGFRQWMjY9ATMCsB3J/uLKyo8QCTGdFRWdMRIHU3R1pHQe6x6PycqOj8oBT0cynRUUnTJGWAJ0U1J0dFIeAAACACj/dQNvAr0ACQAhAAABMhYQBiMiJhA2ATY0LwEmIg8BBi8BJg8BBhQfARY7ATI3Acuu9vaurfb2AboGBjcGEgfzDxBYEA83BgaLDxYaFBECvfb+pPb2AVz2/ssGEgc2Bgb0EBBYEBA2BxIGjA8PAAAAAAEADAADA04CaQAZAAA3JjQ/ATYyHwEWMjcBNjIfARYUBwEGKwEiJxYKClMKGwqIChsKAXMKGwpTCgr+PhghJyAY7wocClMKCocKCgF0CgpSChsK/j0YGAABADv//wL5ArwAAgAAEwkBOwK+/UICvP6h/qIAAgA7AAEC9QK7AAMABwAANxEhERMhESE7AQauAQb++gECuv1GArr9RgAAAAABADsAAgL2ArwAAwAAJSERIQL2/UUCuwICugAAAQA7AHIDjAJXAAYAAAE1DQE1BREBpwHl/hv+lAGhtvPytbUB5QAAAAEADgBxA18CVgAGAAABFS0BFSURAfT+GgHmAWsBJ7bz8ra2/hsAAAACACj/dANwArwABwAKAAAAIBYQBiAmEAEtAQEeAVz29v6k9gECAa/+UQK89v6k9vYBXP562NgAAAIAGf9rAwgCxQAoADUAACUXFAYrARYVFAYiJjU0NjUjIiY1NyY9ATQ2NyY1NDYyFhUUBx4BHQEUARQXNjMyFzY1NCYiBgKfaRgR8gE3TjcB8RAZaQFlUAQ3TjcDUGX+vAIcFhcbAx8sHmRmEBkECCc3NycCCAIZEGYIEdBYjBwLDyc3NycODByNV9ARAfsFCgUFCAcWHh4AAwAO/+cDTgJcAA8AHwA8AAABBw4CByYnJisBNTMWFxYTPwEWFxY3MzUXBzUjIicmEyIHBgcOAgcGByM1MzI3Njc+ATc2NzM1Fwc1IwErKgQOCwUSCTEgZWU7OyGFLCAQCjQgVq+vVjhAG5AXISMrE0c+HVBKY2MaIR0yBYgnUUdYr69YAaIsBQ8MBRAHKHABKBX+2i8iDggqAl6UklgoEQEYFhctE00+GEABcBYSMgWRIEABXJOTWgAAAAABAAP/3QFRAnkABQAAEzcRJyM1c97ecAGa3/1k3t8AAAMAPABGA4ACAAAHAAsADwAAARUHFSERIRUDESERNxchNQOAP/z7AwVJ/Y7v3v5jAXuwGWwBum3+/QEm/tr2xsYAAAAABAAO/3MDTgLiAAUADgAcACgAABM3EScjNSUWFAcnNjQnNQUUBgcnPgE0Jic1Nx4BAx4BEAYHJz4BNCYnft7ecAGkS0siIyMBGFxNIjtGRjshTV1ddo2NdiFjd3dkAZjf/WTe3x4ytDFDHFgcAkpcmSxCIneMdyICQSybAV1C6v7o6kFCOMfsxzgAAAADACj/dANyAr4ACQAYAE8AAAEyFhAGIyImEDYTNjQnJiMiBwYXBhcWMzITNjU0JyYjIgcGDwEXNzY3Njc2NzYzMhcWFRQHBgcOAgcGBwYHBhUUFhUXOwE1NDc2Nz4BNzYBza/29q+u9/fKExMUHRwUFAICFBMdIIIKKSZGMSQhHgkuCgIRBxAKDQcOHggLBwwJBAkLBBENDAgFAQELWAgJDA4eEQ4Cvvf+pPf3AVz3/V8SOhIRERQbGxQRAVMYJjojIgwLFAZXCAEKBAYEAgIKCxQNDBAIBAgKAxASFBoWEwQQBAsMGhAQDg4WExEAAAACABv/jAHhAr8ADwAbAAABMhYVFAMGMS4BAjU0NjsBETI2NTQmIyIGFRQWAQJcg8sYGUx+g1wEKjw8Kis8PAK/hFtr/kkyNaQBRTZcg/7OPCsqPDwqKzwAAwAc/3gDYAK8AB0AOwBHAAABFwYmLwEmND8BNjIfAR4BByc2LwEmIg8BBhQfARYBBiIvAS4BNxcGHwEWMj8BNjQvASYHJzYWHwEWFAcANjIXARYUBiInASYBO0YmZSSQJiZjJmsmkCQDIEYKEJAJGwljCgqQEAGxJmomkSMEIEUJEJAJGwljCgqQEBVFJmUkkCUl/b4cKA4BJw4cKA7+2Q4BK0YgBCSQJWwlYyYmkCRlJkUUEpAJCWMKGgqQEP58JSWRI2UmRhQQkAoKYwkbCZEQC0YgAySQJmsmAcMcDv7ZDigcDgEmDgAAAAACABIASANXAiUAJQAuAAABBgcOAyMiLgIvAR4DNjcmJyY3NhcWNzY3NTQ2MzIWHwEnIgYUFjI2NCYC3g4cDCdGc0hNhU44CwsFEzo6UiVAIBUNBxI1nwcOXkNAXAVm5RMaGiYbGgE3GxceOEAnKjw8FRUDBxAIBw4bQCsLBxEyCQgSBUNeVz8xdxsmGhomGwABACQAAANpAkUAIAAAAR4BFRQGIyImIyErAS4BNTQ2NyY1NDYzMhc+ATMyFhUUAwMuOGFEAgYB/hIBAkVhLSYGRC8mIR94SWeSAT0SUzNEYQEBYkYtTRYQEy9EGUBOkWgKAAAAAgAo/3UDbQK6AAcANwAAACAWEAYgJhAFJjQ/ATY0LwEmIg8BBiIvASYiDwEGFB8BFhQPAQYUHwEWMj8BNjIfARYyPwE2NCcBHgFa9fX+pvYCFgsLbQsLHwwhC2wMIQttCyELHwsLbQsLbQsLHwshC20LIQxsCyEMHwsLArr2/qb19QFayAwgDGwMIQsfCwttCwttCwsfCyEMbAwgDGwMIQsfCwttCwttCwsfCyEMAAADAB4ARANhAhMAFwAjACsAAAAyHgIfARUOBCIuAi8BNT4DEzI2NTQmIyIGFRQWNjIWFAYiJjQBgX6FYlEVFQgcW12HfoViURUVCBxbXcQ6UVE6OVFRHzQmJjQlAhMvQ0MYFwgJH048MS9DQxcYCQkfTjv+vFE6OVFROTpRyyY0JSU0AAACADX/igKGArwABQALAAATIREhETcBESEVIxHgAab9r6sBYv7jrAK8/M4Chqv9EwKqrP4CAAAAABYAKP9yA3ACugAHADIDbAOKA6MDxgPXA90D4QPnA+8D9gSjBKsEtwTFBMkEzgTSBNcE3ATgAAAAIBYQBiAmEAUHBhQzFBYVFDEWFx4BNyI2IzQnJjUzNCY1IgYiNTQvATI3IjcmJyYHIgYDNjU0JyInIiYHNCM2JyYHBhcUFxYGFTI3FDMGFxUyNzIUFxYGMxY1NDUWFAcUBhUUDwEOARUiByIHIiYjJzIuATUnJicmJzI1IicmMzc0NjUiBxQmIyc0BicmJyYjJgYfATIHBhUuAScmIzQjJyYnIi4BBxcyFjcVNhYzFCcmFxYHNCMuASciJicGIw4BLwEGBw4BBxQGFSY1PAE2NRc6AjY1MgcWNSI1Ni4BNScWNzQnNR4BNzY3NRY2NxQ3NjM+ATcmNTI2MhcUMzY1IiciByImIyYzJjczNDY3Ijc2MzI+ARcyFTIeATc2FhUiBiMVMhYHMjYzFBcWNyc+ATcuASMiBxY/ARQfATIXIxYnJiM0JgYXMhcWFzIWFzI2Mz4BJzYnNDM2JjYyNxYXMhcWNRYVNjUiNTIzFjUyFTMVFAYjBwYeARcnIg4BJzI3JgcGJg8BDgE1BhUWFR4BMxYzFDM0FxYVIhYXIhcWNjUiNSY3FDc2JzYnJiInNiczMhY2Nx4BNxQWMxQzBjEyNTI1Mh4BMx4DFRYVMjc2FTIWFSIWIxQjDgEmBw4BFTI2NzI3FDMVIhcWFRYzFCIVByM/ATM1IgYjBiMGDwEGDwIGBwYVIgYjDgEVHgIVFCMwJyYzNCc0BiMmIxQWFQYjIiYHBhUiFDMUFhUyFjMWMzc2NyY2NxQ/AhYHIg8BDgEUFgczNTIGMxQWFRYHMjUyBzI2NDM0Fzc2MRYVMjcyFjMyNxYVMh8BMxcUFhUfAjYXFjMXFhcWFyIVFzI1MhYzBhY1MhUyNjMyNRYXHgEPARQjFCMUBgcOAQciBiMwBwYzFAYHBhciBiMiBhUGDwEGHQEiByIHFCMUJyYHMhUUBzAHBiMUBh0BNzQXDgEHIhUUMxQXJzQzNDM1JjY1PgE0MzQ2LwEiJjUmNTImLwEmNDY1JjYzNDcWNzYnNTQjIgcuAjU2JzYmIzQmNSImIyImIy4BJyI1NCM0JiMmIzQnJhUGFhUyFxYHBicmNS4BNS4BLwE0IyYxNCc0Jjc0JwYVFBYzMjY3BicmNxY3JjcWNSc0NzYWFTI2NxQXFgYVBhUjFAYVIgMWFTI1HgE3MhY/ASc0JiciJiMmBwY1JiM0Bw4CJxQjBisBIic0NzYjNjMdARQ+ATcyNzYWFRc0JjU0FjcWBxUyNjMGFxYHMgcyNRYUIwYjNAcGNzY1JjcmByY3Jjc2MSI3MxY3MjEWBwYXMjUzFCIHNjcUFzIHJicyFTIGJzQzFzYXFAYmIzMWFzI1MjcUBhciFQcGBxQHDgEHBjMUMxcWFAcUBhUHBgciBiMUBhUHBg8BBhUGByIVIzQmNSImIzQuATM0IzQmNSIuATc0NzYnIjUmNTYnJiMuAQ8BBi4BNSImNS4BNSY3NCc0NjU0NzQ2NTYzNjc2NzY3NicyNTYzNzYzNjMWMj8BNjM2HgEzNR4BFTMUMzI1MhU6AR4BBzIXFjMUFjMUFxYXBhYVFhcUFjMUBwYlFDcUJyI3MjMeATMeAQcGJyInMh8BFh8BIwYiJzMnMhYzBzIVIjM3MhUGNzIVJgcXIhQjBzY1FxQFNDcGAR4BXPb2/qT2AroBAQIGAQQBCgEDAQEBAgcEAQMBBAIDAwEFAQECBQIGBT8BCQQEFQYBAgcFAgIHAgICBAEBAgMKBAEBAwIDAgQEAgQEBAgMAwcEBgUCAgEFBgUCBQgCCgEBAgMDAgIGAwIDDQICAgEHAwEBAQIEAQQEAgECAQMEAQIHBgEDAgYEAwMBAwQBAgYDAgoBAQUCAgMBBwQDBwEBBAEPCwICAQUEAwQBCQIDAgYECQIBAgMBAgEDAwEDAgEBCAEDAgUCAQEEAgMDAgMJAgcBAgQCFwEGDgoEAREMAhYBBQMCAxADEgUCBwEDBgEBAwEBAQcBL4dMhmEBBAIBAwgBBQEEAwEGBAIBAQECAgkCAgYBAgICAQULAgECBgEEAQECCQYHAQEDAgEIBAECAwMKAQgBBwUCBQIIAwEGAQIDBAcLBAsDAQMJBgEBAgICAQIHAgYHBgIDAgIBAwEEAwUCBwQBAwMDCAECAQcGAQMDAQEDAwICAQEDAgUCAQELAQoMBQQLAwkCAggBBgQBAwUFBQYBAQMDBgIEAgIEAgICAgIBAQMBBQQBCQEBAgQCAgEECQEBDAIGAQIFAw4BAQQCCAEBBAIBAQMDAgYGAgECAgEBAQICAQ0DAQICBQEMBwIFAgICBgMCBQQCBAQMAQMBAQEBBAUBAwkBAwEBAgEDAgIBBAICBgECBgMCBQIGCAUFAQUIAQMFAQELAQEGAQIDAQEBBAEBAQMCBgIEAwQGAgQHAgMDAQIGAQIBAQICAQQBBQECGwQCAQUDAQIDAgcFCAMBBgMEAwQEBAMDAQIDAwUCAgEIBgIKAQ0EBAIGAwQMAwELAQcJCAIDAgYDAQcBBwYDBAYCAgUBAwEBCwcIAgEKIceMUo4vBwIDBQUBBAIKAgEBAQMBAQMCBQIDAgJFAhkBAgEBBwQHAgoBAQUCAwMDAQIJAQUClAEFBQsCCAEDBAcBBAUBAwMBAScCBgEDAwIEAQIBBQEHAgMCAgMMBAMBAQIHARYCAgMEBQQCAgEBBAEBAwYBAwOgAQPKAgMBAQMCAQUCAQEWAgcCBQFxBgoGBQEDAgICCQEJAQ4EAgEBAQQCAgECBAECAQEBAQ8HARMPAgECAQUEAQMFAQIBAQQBBAQGBgMDCwENCgoBBwoDCQQIBAQDAwQEAgECAQIDAgEDAwQCBAEEAQIEAQMDAwUJAQgNAQMICAoQBgIICQYBAgICAQUCBQYGAQUBAgoDAQH+YwMEAgEBEQQHAgMBAggEBQUGIwICAQENAQcBBwIBCAIfBAUGAgEBJgMEAgIBARABAQF9AgICuvb+pPb2AVwzAwMFAggECwIBBAIECQIBAgECBgECAgIEBwECAQMEAgX+wFprEwkCCQIBAwgEBAMHAgQBBAEHAQMDBQoEAQMEAQIBAQIIAgEEAgYCAgMFAQcEDAUMDgIKAQsECQQBAgkBCQICAQEBAQIDAgwDAQQDBAcBAQEKAQQKAQIBBwQCBgkBBQEFAQECAwYDDAMEAgcBAgIBAQESAgMEAwEBAQQJAQgKAQICAQQDBgIEBgYBBAYFAQIBAgECAQIGBAgBAwMCAgEDAQsDAgYCAwoCAgcEAQIGBQ0IBAMCAgIBAQIIBAICCQIEAgECBQQCAQM4QFsBAwEGAgcCBgIBAQICBAEBAQIBAQECAQICAQIDBAMCBAMKBwEKAQoDAQICCwICAQQCBQEBAQEBCwIHBAECAQEBAQIPCAQBAgMEBgoCAQUDAQICAgYGAgQFAgEJAwECAQ0DAQMCBgQBCQMCAQgGBgEDAwMBAgMCAwQFAQQBBQIDAgINBAcBBAEBBwEBBQECAwEBBAMECgIBAQECAgIDBwILAggGAQYHAQgDAwQIAgEDAQICAgUBAg4RAggBCAQBAgIBBQECBAICAwEDAgIGBAUCAw0CCAEDBQMHBgUDAgMCAQEECgECAQEBBAICAQECAwMDAQIBBgIJCAECBAIDBAsDAQIGBRIFCgwOAwgCAQcCAgMDAQ0CAgICBQMIAwICAggEBAQEAQEBBgEIAgMBBgIDAgECAgQDCAIBBAklCQ4CCQIBEhAEIQQIDQYJAQkFBQMDBwMCEQMBAwEDAg0KBQEBAwMGBQQJAQEBBgUCAgINEgMHBwQFAgICBwINCgEBCQQCAQsCAQYDAgoJCgMCDgMXCERMjMZKPwILEQ8CAgEFBwkCAgEBAQIJAQsBAgUBAQUDCwIBHgEDAwICAwYBBAEGBwECAgMCAgIIAQMIB2gFAwIBAQQDAQQBAQEBAQEBAy0CBAIDAQQBAgQEBwEFAQsDAQMFBgMBBQIBAQEIEAIGAQECBAIBAQIMBgECFAECAw0GAgMHCQEHAgENBAEEAXsBAwQLBAUCAwECCQIJAg4YBgYIAQMJAgECAQcEDgQEAwMECAkKAgQCCAMHAQsLCQQOAwgHAQQSCQ4GBAsGDgEDAgEBAgEEAQkEAREEBAUDCQIEAgsIAQYBAwECAQQDAQEDCgMBBQMBAQEHAgECAgESAwQGBgEDAQMDAwsIAw4EAggBBgEEDwEBATcDAwQCAwEFAwIBAgcFDAECAgEBAgQCAgMDAgEDAQIBAQEaAQEBAXQCAQMAAAAAAQAV/50DTAKyAAoAAAERIzUjFSMRIwkBAq6xmLeZAZwBmwEX/obr6wF6AZv+ZQAAAgAw/7ADdAKMAAUADQAAJREhERMhAzMDJQMzFzMDdPy8nQIKkcZp/l5oxTGC6v7GAToBov5eAUIB/r1gAAAAAAYADv93A1ACugAGAA0AEAATABYAGQAAAQcXBRMXNwEnJQMnBycTFyc3FScFJxcHNRcDUHpS/o4rUXr93FIBcStReqOoxd3rHAE9xd3rHAIWelIqAXFRev3aUiv+jlJ6owFqRBJPVVDuRRNOVVEAAAACAA7/eQNQArsAFAAcAAAJARUxKwE1IzUjJwYjIiY0NjIWFRQkMjY0JiIGFAISAT6oAYCAPSgrbZyc2pz+m0o0NEo1AV/+wqiBgD0Om9ybm24rCzRKNDRKAAAAAAUAKP91A3ACvQAHAA8AGAAlAC4AAAAgFhAGICYQACA2ECYgBhABMhYUBiImNDYXNjcnJiMiBhUUHwE2FzI2NCYiBhQWAR4BXPb2/qT2ASIBBLm5/vy5AT9nk5LQk5MkIUUeBAg9bwEqJq8QGBciGBgCvfb+pPb2AVz+F7gBBri4/voBe5PQk5PQk6ohJSgBbj0GAyBGrRgiGBgiGAAAAAAEADn//gN/AjMABgARABoAIQAAJQElFhURFCUvASU2MyEyFwUHASEiJwEXNwEGAQUBJjURNAN8/u8BEQP+XUgk/u0KBALiBAr+7SQBKf0eBQgBFGprARMI/OoBEf7vAyABBuoIB/4vCMY6HusCAuse/tYCAQlXV/73AgIS6v76CAgB0QcAAAAABwA1/9UDdgKeABYAJQApAC0AMQA1ADkAAAEyFhURFAYrASEjIiY1ETQ2OwE1NDYzAREhHQERIxEjERQWOwEhAxUjNQUVIzUXFSM1FxUhNQUVITUDWREMDBFs/d5HHDMMEVwMEQJ6/ZoxRxYHRwIi7t8B3bm5ubn+IwHd/iMCngwR/XERDDUaAeERDF8RDP1pAmVKMv5DAb3+NAcWAiXf3x8lJXIlJZglJXMlJQAAAAAEADD//wNyAoMAAwAOABoAHgAAAREjESMzESERMzY7ATIWBzI2NCYrASIGFBYzBTMRIwNyRnUv/dQ0RDbPIEWaDRISDWgNEREN/pZFRQH+/gEB//4BAf+FUSgSGhERGhIM/gEABgAaAAEDXgK8AAYACQAMABAAFwAfAAABMxEhNQMlFycFBxMREyERIQUXITcXNxcGIiY0NjIWFALPj/1tsQJnEzP+p6dqNwIl/dsBuTr+UGdCeyb+LB4eLB4B8P4RAQHN7cyFhUD+6wE+/l8BgZW+cCqxRwMeLB4eLAAAAAIAIf9hAysCvQAfACsAAAEeARUUBiAmNTQ2NzYWFxYGBwYVFBYyNjc0Jy4BNz4BAiImNRE0NjIWFREUAqk9ReT+vuRGPRQ1EREDFFiZ2pkBWBQDEhE11TQlJTQmAgk2l1Wh5eWhVZg2EQMUEzURTnZtmpptdU4SNBQTA/6MJhoBlxomJhr+aRoAAAAAAgApAAADbQJzAA0AIQAAJTU3ESERIQ4BBwYHIxEBBTUiBw4DDwE0PgQ/ATUCnGj9JQFHAgkCVzZFAtz+x1ozMVEuIAYGKD9OTT8UFGlXRv76AgsBBAEnPP7HATjTiQcGHiUiCww2XDsuGBACAn4AAAEAEv+IA0ICuwBJAAABFgcUBwYPAQ4BFxUXFhUUBwYrASYvASYiDwEGBwYnJjU0PwE1NiYvASYnJjU0NzY3NjsBMjc2NTc2NzY3FhcWHwEUFxY7ATIXFgM6CgIKAw24AgcBUQQHCxMBEBS+Aw4CtRISFQoIBEgBBgO5CgYLCAkHDA/mBgUHQwQFDRQUDQMHQgcFBuYJCw4BhQsNDQ8ECnkBDAQE7QsMDwoQAQ6bAwOaDgECEQsPBw7sBAUMAXoHBw0PDgoJAwUEBQXvDgcSAQESBBHvBQUEAwQAAAABAC7/ewNwAr0AFAAAJRcPASc3JwMnEycmNDYyHwElFwUXAzE/olw/DqngP3iwEyY2E7AB2z/+jai5QFujQJSp/o0/AduvFDUmE694P+GoAAEAHf/jA2ECvQAoAAAlHgEfARUhNTQ+Azc+AjcmJyY1NCY2NzYzMhceAQYVFAcGBx4CAvguNQMD/LwBCxQrHQxUWjEhJwsCAQMfgH8fBAEDCiYiMllVmhQxDg5WVgIIFhYeDQUwJgkiZBxIBzAjDG9vDCMvCEgcYCYIJjEAAAAAAQA7ACoDfgI1ABQAAAE3ESc1FRQGIyEiJjURNDYzITIWFQKT6+saE/4CExoaEwH+ExoBoG/+P28BZxMaGhMBsRMaGhMAAAAAAwA6/7sDlQKeAB0AJAAnAAAlNTcRFAYjISImNRE0NjMhMhcHISIGFREUFjMhMjYJARcBMQc3FycHAsBcSDP+FDNISDMB7BEHWf5VDRISDQHsDRL+7wFihP6ewz90WSs2tV3+7jNISDMB7TNIAloSDf4TDRISAREBYoT+nj/DalmDAAAABQAhAAADZAIeAAkAEwAYACQAMAAAAREjLgEiBgcjEQMiBgcjNTczESYnFTM1IxcyFhUUBiMiJjU0NiEyFhUUBiMiJjU0NgNkQg02QjUO3I4hNg1rb7ghwqFjTR4rKx4fKioB7R8qKh8eKysCHv5ZHSMjHQGn/pkjHbR7/uQtaTqE2CofHisrHh8qKh8eKyseHyoAAAEABf9+A0YCvgAOAAABAycPASc3FxsDBycDAamRflEWLqJgq52DdD03iQHo/mfBTBQnl5MB4/2jAZ3+jRCy/lEAAAAAAgAj/30DYgK8AAkADwAAAREhFAYgJjU0NjcyFhUhEQGSAXPY/s7Y1/aZ2f6NAl/+j5nY2JmY2F7ZmQFyAAAAAAEAEv+7A1YCnwAGAAABESEVIREBAb0Bmf5n/lUCn/7quf7rAXIAAAAHADn/YAMdAroAGwAnADMAPwBDAGMAagAAATMRIREzNTQ2MhYdATM1NDYyFh0BMzU0NjIWFSMVFDMyNj0BNCYjIgcVFBYzMj0BNCMiBgcVFDMyNj0BNCYjIgERIRElFAYjIic3FjMyNjU0Jic1NjU0IyIHJzYzMhYVFAcVFjcHJzczESMCxlf9HFkoSCk0KUgoNClIKXAjExEREyPOERMjIxMRzSMTERETIwIk/ZgBNkY3JCUHIyYYHCErPyodIAciMi00QUlsNAdbHz8CQ/0dAuMuIyYnIi4uIicmIy4uIicnInsgDxF7EQ8gexEPIHsgDxF7IA8RexEP/QwCAv3+xi0yDjQOFhEWFQI0BSEcDzQPJBwyFgEUTBQ0LP7YAAABAAf/uwNLAp8ABgAABREhNSERAQGf/mgBmAGsRQEVuQEW/o4AAAAAAgA8/2EC7QK8ACAAKQAAARYHBhcOAyImNzYHBgcGJxE+AhYVFA4BFBY3PgE3JREjETQ2MzIWAu0WGRgTCBpIPD4fBQ8/PXklGhZImGUEAwoLHmEi/cVVGRIRGQI8LlZVlQIEDAQSETACAi4OCwGPBhIgAxcDFxcXDQEEBgFY/M8DMREZGQAAAAEAOwDGAvkBjQADAAA3NSEVOwK+xsfHAAQAO/+VA24CyAAGAA0AFAAbAAABJwcRIQcXATcRITcnNzUnNychEScBFwcXJREXATKYXwEVX5gBhl/+61+YV1eYXwEUXv4jV5hf/utfAXqZYAEVX5j+el/+7F+XV5dXmF/+61/+0VeYXwEBFWAAAAACAA//eQMbAr4AWQBiAAAkMhYUBiMiJiMGBwYHBiMiJyYnJiciBiMiJjQ2MhYdAR4BFxYXNzY3IycGIyImNDYzMhczNjcuATU0NjMyFhUUBgcUFhczNjMyFhQGIyInByMfARY3NjcmNTQAFBYzMjY0JiIC1CodHRUCCAIqJVNKRxMOUUxQKCcCBwIVHh4qHQkyDS9hIAQDiDQOExEYGBEWC74CASAoOykqOygfAwG9CxYRGBgRFQs1hwYhTykyLgH+qR8WFx8gLJAdKh4BJBc3FSwtFjUbIAEeKh0dFQgIHAkfApdiXgwRFyIXEkgYCjUiKjs7KiE1CgdDFxIXIhcRDMCaBBkeIAIEFQH8LB8fLB8AAAAEADP/iQNlArsABQAJAA0AEQAAAQURBSURARElEQEtAQUBEQURAc0BmP5o/mYBd/7OAVQBLP7V/tQCgP7NArtx/bFycgJP/ZABt1b+RwGgVFJS/gwBuFX+SAAAAAEAIwACA2QCRQAyAAABHgEVFAYrAjU7ATI2LwEmIg8BBhY7AhUrAzUuATU0NjcmNTQ2MzIXPgEzMhYVFAL/LjdgRAnGHkwMBgeRCBcIkQgGDUwexgEBAkRhLCYFQzAnHh94SWeRAT4TUjNEYKINCq0KCq0KDaIBAWJELkwXEhAvQxhATpFnCgADACj/dQNuArsACwATABsAAAEyFhUUBiMiJjU0NgE0JiMiBwE2JRQWMzI3AQYBy6719a6t9vYB6LmCZFIBtjv9i7iCZ1D+SjsCu/atrvX1rq32/l2CuDr+SlFlgrg6AbdTAAAAAQAF/4kCJgK7AAUAAAEDMwETIwImwZ7+Au+gArv+qv4kAYIAAwA4/3sDeQK8AAkAFAAcAAATMh4BFyMmJyYjETIEFhIXIyYCJCMSMhYUBiImNDiV/JQBoAJxcqGpATPghAGgAbX+y7ZBXEFBXEEBn5P8laFxcgG9hN/+y6m3ATW0/j9BXEFBXAAAAAADAB0AAQNhAZQAGwA5AFsAACUVIz0BJicmJyY1NDc2MhcVFAcGBx4CFx4BFyUdASM1ND4BNz4CNyYnJjU0NzYzMhcWFRQHBgcGJR4BHwEVITU0PgE3PgI3JicmNTQ3NjIXFhUUBwYHHgIDYZcEMwoMBQENZg0EDw4UJCMEExUB/VSXAhUTBSEkFA4PBAELNDMNAQQPCTUBuBkdAgL+MgMdGgYuMhsSFQYBEYwSAQYVExwxMSQjLwErHhAfCx0lBCwsKR4KJw8EDxMCCBQFBwEvIwIIFAgCFA8EDycKHiUELCwEJR4KJAwgDQsbCAgvLwMLHAwDGhUFFTUNKzUDPT0DNSkPNhQFFBwAAAAABgAh/3UDaQK9ADkAQgBLAIsAlQCfAAABFhQHBiMiLwEGBxcWBgcGIyInLgE/ASYnBwYjIicmNDc2MzIfATY3JyY2NzYzMhceAQ8BFhc3NjMyAzY1NCcHFhQHAycGIicHFjMyNxYXNjcmJyY3NjU0JyY3NjcmJwYHBiMiJyYjIgcGIyInJicGBxYXFgcGFRQXFgcGBxYXNjc2MzIXFjMyNzYzMiUUFzcmNTQ3JwYBIgcXNjMyFzcmA1AZGQoeBgQHN3ICBA8PSEhJSA8PBAJwOgcDBx0KGhoKHQMIBjpwAgQPD0hIS0YPDwQCcTkGCAMdHhcWphQUPCgqXisoPUVEJwwFGBQLBggIEBAICAcKExkHCggKCwchJyYhBwsKCAwFGRMLBggIERAJCQQMEBwFDAgKCwchJyYhBwsK/iIXpRQVphcBekQ9KCsuLysoPQGpRJhEHAECbzoHEBwGGRkGHBAHN3ICARxGlEYcAgFzNgcQHAYZGgUcEAc4cQEC/tI/Q0JAKSpeKv72pRQUpRfiBwkRGgYMERMgJyYhEhIMBhkSDAQEBBAQBAQHCRIZBgwSEiQjJCMTEQsHFhYKBwQEEBAElEBCKS0sLSwpQwE7F6UUFKUXAAAAAAMAKP9zA3ACuwAJABcAPAAAATIWEAYjIiYQNhcOARUUFjsBMjY1NCcmEzcvAQcOAQc1ND8BNjU0JyYjIgYPARc3NjcUDwEGFRQXFjMyNgHMrvb2rq339+MfJBsXAR0nDQ8bAwISBQ4pBAMuBgYHDxldLQMQBiMUAysGCgkRF18Cu/b+pPb2AVz2ggEqGBkfKRwXDhH+KQMEJgQOHAEFBw28GSASDAw5KgMtBB8IBg+2Hh4ZCwo6AAACABb/qQNXAokAaADQAAAlFRcVFhUUBwYPAQYiLwMmJyY1ND8BNjc1PgE/Aj4BNzU3PgE3NTc+AT8BHwEUFhQWFQcOAQcUBxUGByIUDgEVBxUGFRQXFh8DFjMyPwE2NzY1NCcmLwE2NTQnJicWHwIWFxQlFhcWFRQPAQYPAQ4BDwIGDwEGFQYPAgYPAS8BLgI0Jzc+ATc0Mj0BNj8BNjU2NzU0NzY1NCcmLwMmIg8BBgcGFRQXFh8BBhUUFxYXJi8CJic0IzUnNSY1NDc2PwE2Mh8CA0MBEwUMIUAzkDJNLyElCwIDAwQKAQMBAQEBAwECAQQBAgEGARwEOQQCGQEEAgECAgECAQEEBwQKOSg8FR8gFEAMBgMDBQ1iAQMMLycgAp0SC/7YJwkDBAMDCgEBAwEBAQIDAQEDAgECAgYcBDkBAgIBGQEEAgECAgEBAgEBAwcECjknPRU+FUAMBgMDBQ1iAQQKMCgfAp0SCwEBEwUMIUAzkDJNL+gBAQEjLBIZLiI/MzNMMCElNhQLERIMDxMBAQYCAgEBBQEBAgEFAQECAQYCHAU4AQQCBQEZAQUCAQEBAgQCAgUBAQIJDQ8RCAw5Jz0VFUAMEQsMCgsTDGIGCxUTRDAMHgKdEhUB0Sc0DxALGAwMFgEBBgICAQQDAQEBAwQBAgMGHAU4AQQCBQEZAQUCAQEBAgQBAQEEAwEBAQsLDxEIDDknPRUVQAwRCwwKCxMMYgYLFxFBMwweAp0SFQEBAQEmKRIZLiI/MzNMMAAAAQAf/4gDYQJiABsAAAEyFhUUBg8BCQEuBDU0NjMyFxYxPgQCkVl3NBoa/sf+xwQOJBwWdllaZRMEDy8vQgJiZW0xaBsc/sgBOAQOLi5DH21laxUFES0hHAAAAAAGADgAAAN0ArwAAwAHAAsAFwAjAC8AAAEhFSERNSEVATUhFQEyFhUUBiMiJjU0NhMyFhUUBiMiJjU0NhMyFhUUBiMiJjU0NgEXAl39owJd/aMCXf0GHCcnHBsnJxscJyccGycnGxwnJxwbJycCvIX+5YWF/uSFhQK8JxscJyccGyf+5iccGycnGxwn/uQnGxwnJxwbJwAAAAEAEv9MAwMCugAcAAABFREOASImNDYzMhcRBREOASMiJjU0NjMyFxEzJQMDAVuCXFxBJCL+oAFcQEFcXEEjIgIBtgK6U/3+NEhKaEoNATRU/hE0SUo1NEoNAgFoAAAAAAkAOv9zA4MCvAAPABMAFwAbAB8AIwAnAC4ANQAAATIWFREUBiMhIiY1ETQ2MwUhFSEFIxUzJzM1IxcVITUlITUhJyMVMwMUFjsBNSMFMjY9ASEVAvc6UlI6/c86UlI6AlT9/wIB/elgYGBgYHYCAf3/AgH9/xZgYGAVDj1gAlQOFf3/ArxSOv3POlJSOgIxOlLSdZxyh3KHcnIVcop1/ooOFXV1FQ5SdQAAAAABADr/4gN8AnIAFwAAATIWFREUBiMhIiY1ETQ2OwE3NjsBMh8BA2MLDg4L/PALDg4LJh0LGZ4ZCxwCIQ8K/fMLDg4LAg0KDzsWFjsAAwAJ/3YDUAK9AAgADAAQAAABFwE5AQc3OQEXAScJARcHJwIemf404klqAXsZ/oQCFJplmQIlmf40SuMYAXsa/oQCY5lkmQAAAgAe/8kDYQKHABgAMQAAJRQGBxYXFgcGJyYnISInNjchMjY9AR4BFQcUBiMhDgEjIjU0NzY3LgE9ATQ2MyEyFhUDYTQoDzMMFS1FNC3+1SojHhoBFEppL0CnSDP+1jFmJyIDMhAoNEg0AaUzSKAqQgsrJwgGCyAZLhsSGWlK6wVGMHA0SDIsCwMCJiwLQivtM0lJMwAAAAACACH/mQNjArsADwAfAAABPwERFCMhFSc3HQEhMjY1JQ8BETQzITUXBz0BISIGFQLWGFuA/gOrqwHkEBb92BhbgAH9q6v+HBAWARYYW/78gGysrHMGFhChGFsBBH9sq6xzBhcQAAAAAAIAFP+LA0cCvQAUABwAACUWFRQHBiMiLwEGIyImEDYgFhUUByY0JiIGFBYyAzAXFBMcIBfbSlyBt7cBArcvW2aQZmaQBBcfHRMTF9swtwECt7eBWktdkGZmkGYAAwAo/3QDbwK7AAsAEwAsAAABMhYVFAYjIiY1NDYSIDYQJiAGECUWDwEGByMiLwEuASMmPQE0NzY7ATIWHQEBzK329q2u9vYsAQS4uP78uQIGDgkYBQYEBQXBAQMBBQUHBi4HCgK79q2u9vaurfb9IrkBBLi4/vwkCg4nBgIDgQECBwbkBwUFCgfBAAAIADz/1gN/AncAAwAHAA8AFwAfACcAKwAvAAATIREhJREhERIiJjQ2MhYUBCImNDYyFhQAMhYUBiImNCQyFhQGIiY0AxEjERM1IxU8A0P8vQL9/UlxJBoaJBkB4SQaGiQZ/ckkGRkkGgIUJBkZJBpe5KhtAnf9X0YCFv3qAZMaJBkZJBoaJBkZJP7WGiQZGSQaGiQZGSQBRP67AUX+7HZ2AAAAAAIANwAkA3sCdAAbACUAAAEyFhURFAYjISImNRE0NjsBNDM3PgEzITIfARUDMjY0JiMiBhQWA2IKDw8K/O4KDw8KrQEXBBYKAT8ZCxjcS2pqS0pqagItDgr+KAsODgsB2AoOATAJDRYwAf5LaZZqapZpAAAAAQA3/6sDdQKpABUAAAEWBgcGJwYHBicmNzYnLgEnJjY3NgQDdRDdrD46XGkvCQMGWAhFVggQ3KysAQkBjYncEwcHXwsFDQQEQk8ndkeI3RQTpgAABAAi/3gDZQK9AAkAFQAxAHcAACU2NTcfAgcvATciBhUUFjMyNjU0JgEHIgcnBiMiJic0Nx4BMzI2NTQmJzYzNhYVFAcFNDY0LgMnIyIPARYHBg8BBgcGIyImNzY/ATY3NjMyFz8BPgQmJyYnIyIvAS4BPwE2MzIfARYXFhcWMh8BFgcGMQIOAmKLXgpoJUZhEhkZEhMZGf7PYgYKRyAYSncBET8QJR1JDD0PA0p4EAGKAQMIDRkQAwoY2ggQAgXJBQELEilIHAMDygUBCxEJCsIEBAMHAgEDAxAsARAnBhMCE0gRCQYUBiEEBBQDHgR3SSsPZAoGYotFJmgKXjYZExIZGRITGQFdYgJGD3hKARE/CkgeJBM8EgF5Shse9wMJHBwkHx4JFtkdEgEFyQUCC2AdAgTKAwMLA8IGBgQNCQ0OBx0JJQYTDBVJERQGIRAUGgQEd0mzMgACACD/fANhAr0AVQBfAAABHgEdARQGDwEOAR8BFg8BBi8BJgYPAQ4BKwEiJi8BLgEPAQYvASY/ATYmLwEuAT0BNDY/ATYvASY/ATYfARY2PwE+ATsBMhYfAR4BPwE2HwEWDwEGFwUyNjQmIyIGFBYDSwkNDQl8CQYFSAwQRBASagcPARcBEAlhCRABFwEPB2kUD0QQDEgFBgl8CQ0NCXwWDEgLD0QQE2kHDwEXARAJYQkQARcBDwdqEhBEDwtIDBb+8T9YWD8+WFgBZwEQCWEJEAEXAgwIahMQRBANRwUFCX0JDQ0JfQkFBUcMD0QQE2oIDAIXARAJYQkQARcGEWoTD0QQDEgFBgl8CQ0NCXwJBgVIDBBEDxNqEQb4WHxZWXxYAAAAAwAi/2ICvwK7AA8AIwAuAAAFMj8BFxYPAQYnASYvAQEWAwEWDwEGIicBJi8BJj8BNjsBFxYHBhQXFjI2NCcmIgGxIhWwJw8P/g8Q/qIPAggBTxcwAV4QEP4HEgb+og8CEQIQKw8TA70W4A4ODSgaDQ4mIRewJw8Q/hAQAV4PFWH+sRcCuf6jEA//BgYBXhEUvhYOLA0RAj8NKA0NGigNDgAAAAABAAv/kwLvAtcABgAAASERIxEhAQLv/uq5/usBcgEr/mgBmAGsAAAAAwAo/3YDawK6ABwALAA8AAATBh0BIiY9ATQ2MyEyFh0BIzU0JiMhIgYdARQWMyUyFh0BFAYjISImPQE0NjMBNTQmIyEiBh0BFBYzITI2tgM6UVE6AVw6UWgVDv6kDhUVDgItOVJSOf6kOlFROgF+FA7+pA4VFQ4BXA4UARgQE0VROvQ6UVE6aWkOFRUO9A4VaVI68zpSUjrzOlL+gfMPFBQP8w8UFAAAAQAL/4IC7wLGAAYAABMhETMRIQELARW5ARb+jgEtAZn+Z/5VAAAAAAMAKP9zA3ACuwAHABcAGwAAACAWEAYgJhABNSM3IzUjFSMXIxUzBzMvATUzFQEeAVz29v6k9gJMppFwS3CQopEnfieW/QK79v6k9vYBXP5d6KeHh6foJycqlJQAAQAAAAEAAE8dYDFfDzz1AAsD6AAAAADI+gQNAAAAAMj6BA0AA/9MA5UC4gAAAAgAAgAAAAAAAAABAAAC7v8GAAADvAAAAAADlQABAAAAAAAAAAAAAAAAAAAAZAH0AAAAAAAAAU0AAAH0AAADqAA7A2EANALsACgDfQAWA4cAIALcABEDjAANAp8ALQN5ABkDCQAnA5gAKAOTACgDmQAoA7EANwOQACgDeQAbAucAHAOXACgDZAAMAvoAOwMwADsDMQA7A5oAOwOaAA4DmAAoAyEAGQN3AA4BiwADA7MAPAN5AA4DmgAoAfwAGwN9ABwDcQASA5EAJAOVACgDfwAeAsAANQOYACgDYQAVA6QAMANeAA4DZQAOA5gAKAO4ADkDrwA1A6IAMAONABoDTAAhA40AKQNVABIDgwAuA34AHQO1ADsDugA6A5kAIQNdAAUDgQAjA10AEgNWADkDXQAHAwcAPAM0ADsDqAA7AyoADwOXADMDjAAjA5YAKAIsAAUDkAA4A34AHQOKACEDmAAoA20AFgOAAB8DrgA4AygAEgO8ADoDrQA6A1cACQOOAB4DhAAhA2AAFAOXACgDuwA8A7EANwOfADcDtQAiA4EAIALgACIC+gALA5MAKAL6AAsDmAAoA0EAAAH0AAAAAAAAAAAAAAAAADAAeAEYAXICNAJKApYC0AMOAygDdAP4BCQEUgSMBMoE/AU2BWIFcAWGBZQFqAW8BdgGJAaCBpIGtAb6B3IHnggUCFwIjgjmCSgJRA+iD7oP2hASEEAQkBDUESwRXhGcEeISGhKIErAS8BMUE1YToBPCE+IT9hSGFJoU3hTqFSIVrBXaFh4WUBZiFpYXHBgIGGQZhhm0GgAaMBqGGqwa0BscG1AbfhvEHBYcUBx6HSYduB4KHh4ech6GHrQetB60AAAAAQAAAGQE4QAWAAAAAAACAAAAAQABAAAAQAAAAAAAAAAAAA8AugABAAAAAAABAAAAAAABAAAAAAAEAA4AAAADAAEECQAAAEIADgADAAEECQABAAAAUAADAAEECQACAAIAUAADAAEECQADAAAAUgADAAEECQAEAAIAUgADAAEECQAFAPwAVAADAAEECQAGAAIBUAADAAEECQAKAPwBUgADAAEECQBjAC4CTgADAAEECQBkAAwCfAADAAEECQBlAA4CiAADAAEECQBmAAwClgADAAEECQBnAAwColBpY3RvcyBXZWJmb250AKkAIABEAHIAZQB3ACAAVwBpAGwAcwBvAG4AOgAgAHcAdwB3AC4AZAByAGUAdwB3AGkAbABzAG8AbgAuAGMAbwBtAH8AfwBUAGgAaQBzACAAaQBzACAAYQAgAHAAcgBvAHQAZQBjAHQAZQBkACAAdwBlAGIAZgBvAG4AdAAgAGEAbgBkACAAaQBzACAAaQBuAHQAZQBuAGQAZQBkACAAZgBvAHIAIABDAFMAUwAgAEAAZgBvAG4AdAAtAGYAYQBjAGUAIAB1AHMAZQAgAE8ATgBMAFkALgAgAFIAZQB2AGUAcgBzAGUAIABlAG4AZwBpAG4AZQBlAHIAaQBuAGcAIAB0AGgAaQBzACAAZgBvAG4AdAAgAGkAcwAgAHMAdAByAGkAYwB0AGwAeQAgAHAAcgBvAGgAaQBiAGkAdABlAGQALgB/AFQAaABpAHMAIABpAHMAIABhACAAcAByAG8AdABlAGMAdABlAGQAIAB3AGUAYgBmAG8AbgB0ACAAYQBuAGQAIABpAHMAIABpAG4AdABlAG4AZABlAGQAIABmAG8AcgAgAEMAUwBTACAAQABmAG8AbgB0AC0AZgBhAGMAZQAgAHUAcwBlACAATwBOAEwAWQAuACAAUgBlAHYAZQByAHMAZQAgAGUAbgBnAGkAbgBlAGUAcgBpAG4AZwAgAHQAaABpAHMAIABmAG8AbgB0ACAAaQBzACAAcwB0AHIAaQBjAHQAbAB5ACAAcAByAG8AaABpAGIAaQB0AGUAZAAuAFQAaABpAHMAIABmAG8AbgB0ACAAaQBzACAAcAByAG8AdABlAGMAdABlAGQALgBQAGkAYwB0AG8AcwBSAGUAZwB1AGwAYQByAFAAaQBjAHQAbwBzAFAAaQBjAHQAbwBzAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAugECAkNSAAAA) format("truetype"), url("pictos-web.svg#webfontIyfZbseF") format("svg");
+  font-weight: normal;
+  font-style: normal; }
+
+@import url("//fonts.googleapis.com/css?family=false:false");
+/* line 3, ../themes/stylesheets/neptune/default/accessories/scss/_shapes.scss */
+.base-shape {
+  display: block;
+  content: ''; }
+
+/*$base-color: #3196FF;
+$neutral-color: #222;
+$base-gradient: flat;
+$toolbar-background-gradient: matte;*/
+/*$base-color: #3b5998;
+$neutral-color: #627aad;
+$base-gradient: flat;
+$color-mode: light;
+$include-highlights: false;*/
+/*$base-color: #A09DBC;
+$neutral-color: #eee;*/
+/*$stroke-color: #000;*/
+/*$base-gradient: flat;*/
+/*$include-highlights: false;*/
+/*$default-text-contrast: 100%;*/
+/*$base-color: #A13B18;
+$neutral-color: #303235;*/
+/*$neutral-color: #E0E6EF;*/
+/*$base-color: #d0d8da;
+$neutral-color: #d0d8da;
+$include-highlights: false;
+$base-gradient: flat;
+$stroke-color: $base-color;
+$panel-base-color: $neutral-color;
+$frame-base-color: lighten($neutral-color, 5%);
+$panel-border-color: $neutral-color;*/
+/*$grid-row-cell-focus-background-gradient: 'grid-row-over' !default;*/
+/*$grid-cell-special-background-gradient: 'grid-cell-special';*/
+/**
+ * Toolbar buttons
+ */
+/**
+ * @class Ext.form.*
+ */
+/**
+ * @class Ext.form.field.Base
+ */
+/**
+ * @class Ext.form.field.TextArea
+ */
+/**
+ * @class Ext.form.Label
+ */
+/**
+ * @class Ext.form.field.Checkbox
+ */
+/**
+ * @class Ext.form.field.Radio
+ */
+/**
+ * Error messages
+ */
+/**
+ * Trigger Field
+ */
+/**
+ * Fieldsets
+ */
+/**
+ * Sliders
+ */
+/**
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error. 
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to 
+ * be true. 
+ */
+/* line 4, ../themes/stylesheets/neptune/default/core/_reset.scss */
+html, body, div, dl, dt, dd, ul, ol, li, h1, h2, h3,
+h4, h5, h6, pre, code, form, fieldset, legend,
+input, textarea, p, blockquote, th, td {
+  margin: 0;
+  padding: 0; }
+
+/* line 9, ../themes/stylesheets/neptune/default/core/_reset.scss */
+table {
+  border-collapse: collapse;
+  border-spacing: 0; }
+
+/* line 14, ../themes/stylesheets/neptune/default/core/_reset.scss */
+fieldset, img {
+  border: 0; }
+
+/* line 19, ../themes/stylesheets/neptune/default/core/_reset.scss */
+address, caption, cite, code,
+dfn, em, strong, th, var {
+  font-style: normal;
+  font-weight: normal; }
+
+/* line 24, ../themes/stylesheets/neptune/default/core/_reset.scss */
+li {
+  list-style: none; }
+
+/* line 28, ../themes/stylesheets/neptune/default/core/_reset.scss */
+caption, th {
+  text-align: left; }
+
+/* line 32, ../themes/stylesheets/neptune/default/core/_reset.scss */
+h1, h2, h3, h4, h5, h6 {
+  font-size: 100%; }
+
+/* line 37, ../themes/stylesheets/neptune/default/core/_reset.scss */
+q:before,
+q:after {
+  content: ""; }
+
+/* line 41, ../themes/stylesheets/neptune/default/core/_reset.scss */
+abbr, acronym {
+  border: 0;
+  font-variant: normal; }
+
+/* line 46, ../themes/stylesheets/neptune/default/core/_reset.scss */
+sup {
+  vertical-align: text-top; }
+
+/* line 50, ../themes/stylesheets/neptune/default/core/_reset.scss */
+sub {
+  vertical-align: text-bottom; }
+
+/* line 54, ../themes/stylesheets/neptune/default/core/_reset.scss */
+input, textarea, select {
+  font-family: inherit;
+  font-size: inherit;
+  font-weight: inherit; }
+
+/* line 74, ../themes/stylesheets/neptune/default/core/_reset.scss */
+.x-border-box,
+.x-border-box * {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  -webkit-box-sizing: border-box; }
+
+/* line 1, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-body {
+  color: black;
+  font-size: 12px;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+  background-color: #e8ebed;
+  color: #22262a; }
+  /* line 8, ../themes/stylesheets/neptune/default/core/_core.scss */
+  .x-body * {
+    zoom: 1; }
+
+/* line 13, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-rtl {
+  direction: rtl; }
+
+/* line 17, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-ltr {
+  direction: ltr; }
+
+/* line 21, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-clear {
+  overflow: hidden;
+  clear: both;
+  height: 0;
+  width: 0;
+  font-size: 0;
+  line-height: 0; }
+
+/* line 30, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-layer {
+  position: absolute !important;
+  overflow: hidden; }
+
+/* line 37, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-shim {
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 45, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-hide-display, .x-grid-row-body-hidden, .x-grid-group-collapsed {
+  display: none !important; }
+
+/* line 49, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-hide-visibility {
+  visibility: hidden !important; }
+
+/* line 53, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 57, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-ie6 .x-item-disabled {
+  filter: none; }
+
+/* line 62, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-hidden,
+.x-hide-offsets {
+  display: block !important;
+  position: absolute !important;
+  left: -10000px !important;
+  top: -10000px !important; }
+
+/* line 69, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-hide-nosize {
+  height: 0 !important;
+  width: 0 !important; }
+
+/* line 74, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-masked-relative {
+  position: relative; }
+
+/* line 80, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-ie6 .x-masked select,
+.x-ie6.x-body-masked select {
+  visibility: hidden !important; }
+
+/* line 87, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-css-shadow {
+  position: absolute;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px; }
+
+/* line 92, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-ie-shadow {
+  background-color: #777;
+  display: none;
+  position: absolute;
+  overflow: hidden; }
+
+/* line 100, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow {
+  display: none;
+  position: absolute;
+  overflow: hidden; }
+
+/* line 106, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow * {
+  overflow: hidden; }
+
+/* line 110, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow * {
+  padding: 0;
+  border: 0;
+  margin: 0;
+  clear: none; }
+
+/* top  bottom */
+/* line 120, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xstc,
+.x-frame-shadow .xsbc {
+  height: 6px;
+  float: left; }
+
+/* line 125, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xsc {
+  width: 100%; }
+
+/* line 129, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xsml {
+  background: transparent repeat-y 0 0; }
+
+/* line 133, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xsmr {
+  background: transparent repeat-y -6px 0; }
+
+/* line 137, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xstl {
+  background: transparent no-repeat 0 0; }
+
+/* line 141, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xstc {
+  background: transparent repeat-x 0 -30px; }
+
+/* line 145, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xstr {
+  background: transparent repeat-x 0 -18px; }
+
+/* line 149, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xsbl {
+  background: transparent no-repeat 0 -12px; }
+
+/* line 153, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xsbc {
+  background: transparent repeat-x 0 -36px; }
+
+/* line 157, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xsbr {
+  background: transparent repeat-x 0 -6px; }
+
+/* line 165, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xstl,
+.x-frame-shadow .xstc,
+.x-frame-shadow .xstr,
+.x-frame-shadow .xsbl,
+.x-frame-shadow .xsbc,
+.x-frame-shadow .xsbr {
+  width: 6px;
+  height: 6px;
+  float: left;
+  background-image: url('../../resources/themes/images/neptune/shared/shadow.png'); }
+
+/* line 176, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xsml,
+.x-frame-shadow .xsmr {
+  width: 6px;
+  float: left;
+  height: 100%;
+  background-image: url('../../resources/themes/images/neptune/shared/shadow-lr.png'); }
+
+/* line 186, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xsmc {
+  float: left;
+  height: 100%;
+  background-image: url('../../resources/themes/images/neptune/shared/shadow-c.png'); }
+
+/* line 196, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xst,
+.x-frame-shadow .xsb {
+  height: 6px;
+  overflow: hidden;
+  width: 100%; }
+
+/* line 202, ../themes/stylesheets/neptune/default/core/_core.scss */
+.no-select, .x-boundlist-item, .x-menu .x-menu-body, .x-grid-row, .x-grid-cell, .x-unselectable, .x-form-item-label, .x-panel-header-text, .x-tip-header-text, .x-slider-focus, .x-window-header-text, .x-surface tspan {
+  -moz-user-select: none;
+  -khtml-user-select: none;
+  -webkit-user-select: ignore;
+  cursor: default; }
+
+/* line 209, ../themes/stylesheets/neptune/default/core/_core.scss */
+.mr-white-glove, .x-boundlist-item, .x-btn, .x-color-picker, .x-tab, .x-toolbar-scroll-left, .x-tabbar-scroll-left,
+.x-toolbar-scroll-right, .x-tabbar-scroll-right {
+  cursor: pointer;
+  cursor: hand; }
+  /* line 212, ../themes/stylesheets/neptune/default/core/_core.scss */
+  .mr-white-glove *, .x-boundlist-item *, .x-btn *, .x-color-picker *, .x-tab *, .x-toolbar-scroll-left *, .x-tabbar-scroll-left *,
+  .x-toolbar-scroll-right *, .x-tabbar-scroll-right * {
+    cursor: pointer;
+    cursor: hand; }
+
+/* line 218, ../themes/stylesheets/neptune/default/core/_core.scss */
+.overflow-ellipsis, .x-btn-group-header-text, .x-grid-cell-inner, .x-panel-header-text-container {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis;
+  white-space: nowrap; }
+
+/* line 225, ../themes/stylesheets/neptune/default/core/_core.scss */
+.outline-none, *:focus, .x-btn button, .x-datepicker a, .x-monthpicker-yearnav button, .x-color-picker a, .x-slider-focus, .x-window, .x-tab button {
+  -moz-outline: 0 none;
+  outline: 0 none; }
+
+/* line 230, ../themes/stylesheets/neptune/default/core/_core.scss */
+.bigtext, .x-form-item, .x-panel-header-default .x-panel-header-text-container, .x-panel-header-default-framed .x-panel-header-text-container, .x-window-header-text {
+  text-rendering: optimizeLegibility;
+  -webkit-font-smoothing: antialiased; }
+
+/* line 236, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-tl {
+  background: transparent no-repeat 0 0; }
+
+/* line 241, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-tc {
+  height: 8px;
+  background: transparent repeat-x 0 0;
+  overflow: hidden; }
+
+/* line 247, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-tr {
+  background: transparent no-repeat right -8px; }
+
+/* line 251, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-ml {
+  background: transparent repeat-y 0;
+  padding-left: 4px;
+  overflow: hidden; }
+
+/* line 258, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-mc {
+  background: repeat-x 0 -16px;
+  padding: 4px 10px; }
+
+/* line 263, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-mc h3 {
+  margin: 0 0 4px 0; }
+
+/* line 268, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-mr {
+  background: transparent repeat-y right;
+  padding-right: 4px;
+  overflow: hidden; }
+
+/* line 274, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-bl {
+  background: transparent no-repeat 0 -16px; }
+
+/* line 279, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-bc {
+  background: transparent repeat-x 0 -8px;
+  height: 8px;
+  overflow: hidden; }
+
+/* line 285, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-br {
+  background: transparent no-repeat right -24px; }
+
+/* line 289, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-tl, .x-box-bl {
+  padding-left: 8px;
+  overflow: hidden; }
+
+/* line 294, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-tr, .x-box-br {
+  padding-right: 8px;
+  overflow: hidden; }
+
+/* line 299, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-tl {
+  background-image: url('../../resources/themes/images/neptune/box/corners.gif'); }
+
+/* line 303, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-tc {
+  background-image: url('../../resources/themes/images/neptune/box/tb.gif'); }
+
+/* line 307, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-tr {
+  background-image: url('../../resources/themes/images/neptune/box/corners.gif'); }
+
+/* line 311, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-ml {
+  background-image: url('../../resources/themes/images/neptune/box/l.gif'); }
+
+/* line 315, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-mc {
+  background-color: #eee;
+  background-image: url('../../resources/themes/images/neptune/box/tb.gif');
+  font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;
+  color: #393939;
+  font-size: 15px; }
+
+/* line 323, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-mc h3 {
+  font-size: 18px;
+  font-weight: bold; }
+
+/* line 328, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-mr {
+  background-image: url('../../resources/themes/images/neptune/box/r.gif'); }
+
+/* line 332, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-bl {
+  background-image: url('../../resources/themes/images/neptune/box/corners.gif'); }
+
+/* line 336, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-bc {
+  background-image: url('../../resources/themes/images/neptune/box/tb.gif'); }
+
+/* line 340, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-br {
+  background-image: url('../../resources/themes/images/neptune/box/corners.gif'); }
+
+/* line 344, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr {
+  background-image: url('../../resources/themes/images/neptune/box/corners-blue.gif'); }
+
+/* line 348, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc {
+  background-image: url('../../resources/themes/images/neptune/box/tb-blue.gif'); }
+
+/* line 352, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-blue .x-box-mc {
+  background-color: #c3daf9; }
+
+/* line 356, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-blue .x-box-mc h3 {
+  color: #17385b; }
+
+/* line 360, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-blue .x-box-ml {
+  background-image: url('../../resources/themes/images/neptune/box/l-blue.gif'); }
+
+/* line 364, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-blue .x-box-mr {
+  background-image: url('../../resources/themes/images/neptune/box/r-blue.gif'); }
+
+/* line 193, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-base, .x-tool-maximize, .x-tool-minimize, .x-tool-restore, .x-tool-save, .x-tool-refresh, .x-tool-help, .x-tool-info, .x-tool-search, .x-tool-gear, .x-tool-close, .x-tool-minus, .x-tool-plus, .x-tool-print, .x-tool-up, .x-tool-toggle, .x-tool-collapse, .x-tool-collapse-top, .x-tool-left, .x-tool-prev, .x-tool-down, .x-tool-collapse-bottom, .x-tool-expand-bottom, .x-tool-expand, .x-tool-right, .x-tool-next, .x-tool-collapse-all, .x-tool-expand-all, .x-tool-pin, .x-tool-unpin, .x-collapsed .x-tool-toggle {
+  width: 16px;
+  height: 16px;
+  background-image: url('../../resources/themes/images/neptune/tools.png'); }
+
+/* line 199, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-base-over, .x-tool-over .x-tool-maximize, .x-tool-over .x-tool-minimize, .x-tool-over .x-tool-restore, .x-tool-over .x-tool-save, .x-tool-over .x-tool-refresh, .x-tool-over .x-tool-help, .x-tool-over .x-tool-info, .x-tool-over .x-tool-search, .x-tool-over .x-tool-gear, .x-tool-over .x-tool-close, .x-tool-over .x-tool-minus, .x-tool-over .x-tool-plus, .x-tool-over .x-tool-print, .x-tool-over .x-tool-up, .x-tool-over .x-tool-toggle, .x-tool-over .x-tool-collapse, .x-tool-over .x-tool-collapse-top, .x-tool-over .x-tool-left, .x-tool-over .x-tool-prev, .x-tool-over .x-tool-down, .x-tool-over .x-tool-collapse-bottom, .x-tool-over .x-tool-expand-bottom, .x-tool-over .x-tool-expand, .x-tool-over .x-tool-right, .x-tool-over .x-tool-next, .x-tool-over .x-tool-collapse-all, .x-tool-over .x-tool-expand-all, .x-tool-over .x-tool-pin, .x-tool-over .x-tool-unpin, .x-collapsed .x-tool-over .x-tool-toggle {
+  background-position-y: -16px; }
+
+/* line 202, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-base-pressed, .x-tool-pressed .x-tool-maximize, .x-tool-pressed .x-tool-minimize, .x-tool-pressed .x-tool-restore, .x-tool-pressed .x-tool-save, .x-tool-pressed .x-tool-refresh, .x-tool-pressed .x-tool-help, .x-tool-pressed .x-tool-info, .x-tool-pressed .x-tool-search, .x-tool-pressed .x-tool-gear, .x-tool-pressed .x-tool-close, .x-tool-pressed .x-tool-minus, .x-tool-pressed .x-tool-plus, .x-tool-pressed .x-tool-print, .x-tool-pressed .x-tool-up, .x-tool-pressed .x-tool-toggle, .x-tool-pressed .x-tool-collapse, .x-tool-pressed .x-tool-collapse-top, .x-tool-pressed .x-tool-left, .x-tool-pressed .x-tool-prev, .x-tool-pressed .x-tool-down, .x-tool-pressed .x-tool-collapse-bottom, .x-tool-pressed .x-tool-expand-bottom, .x-tool-pressed .x-tool-expand, .x-tool-pressed .x-tool-right, .x-tool-pressed .x-tool-next, .x-tool-pressed .x-tool-collapse-all, .x-tool-pressed .x-tool-expand-all, .x-tool-pressed .x-tool-pin, .x-tool-pressed .x-tool-unpin, .x-collapsed .x-tool-pressed .x-tool-toggle {
+  background-position-y: -32px; }
+
+/* line 206, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-accordion-tool-base, .x-accordion-hd .x-tool-collapse-top, .x-accordion-hd .x-tool-collapse-bottom, .x-accordion-hd .x-tool-expand-top, .x-accordion-hd .x-tool-expand-bottom {
+  width: 12px;
+  height: 12px;
+  background-image: url('../../resources/themes/images/neptune/tools-small.png'); }
+
+/* line 212, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-accordion-tool-base-over, .x-accordion-hd .x-tool-over .x-tool-collapse-top, .x-accordion-hd .x-tool-over .x-tool-collapse-bottom, .x-accordion-hd .x-tool-over .x-tool-expand-top, .x-accordion-hd .x-tool-over .x-tool-expand-bottom {
+  background-position-y: -12px; }
+
+/* line 215, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-accordion-tool-base-pressed, .x-accordion-hd .x-tool-pressed .x-tool-collapse-top, .x-accordion-hd .x-tool-pressed .x-tool-collapse-bottom, .x-accordion-hd .x-tool-pressed .x-tool-expand-top, .x-accordion-hd .x-tool-pressed .x-tool-expand-bottom {
+  background-position-y: -24px; }
+
+/* line 1, ../themes/stylesheets/neptune/default/util/_focus.scss */
+.x-focus-element {
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px; }
+
+/* line 9, ../themes/stylesheets/neptune/default/util/_focus.scss */
+.x-focus-frame {
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  z-index: 100000000;
+  width: 0px;
+  height: 0px; }
+
+/* line 21, ../themes/stylesheets/neptune/default/util/_focus.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom,
+.x-focus-frame-left,
+.x-focus-frame-right {
+  position: absolute;
+  top: 0px;
+  left: 0px; }
+
+/* line 28, ../themes/stylesheets/neptune/default/util/_focus.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom {
+  border-top: solid 2px #15428b;
+  height: 2px; }
+
+/* line 34, ../themes/stylesheets/neptune/default/util/_focus.scss */
+.x-focus-frame-left,
+.x-focus-frame-right {
+  border-left: solid 2px #15428b;
+  width: 2px; }
+
+/**
+  * @class Ext.Button
+  * Used to create the base structure of an Ext.Button
+  */
+/**
+ * @mixin extjs-btn-group-ui
+ * @class Ext.ButtonGroup
+ */
+/**
+  * @class Ext.menu.*
+  */
+/**
+  * @class Ext.Panel
+  * Used to create the base structure of an Ext.Panel
+  */
+/**
+  * @class Ext.Panel
+  * Used to create a visual theme for an Ext.Panel
+  */
+/**
+ * @mixin ext-toolbar-ui
+ * @class Ext.toolbar.Toolbar
+ * @param {String} $ui The name of the UI
+ * @param {Color} $background-color The background color of the toolbar (defaults to transparent)
+ * @param {Gradient/color-stops} $background-gradient The background gradient of the toolbar (defaults to null)
+ * @param {Color} $border-color The border color of the toolbar (defaults to null)
+ */
+/**
+  * @class Ext.Window
+  * Used to create a visual theme for an Ext.Panel
+  */
+/**
+  * @class Ext.tab.Bar
+  */
+/**
+  * @class Ext.Tab
+  */
+/**
+  * @class Ext.LoadMask
+  * Component used to mask a component
+  */
+/* line 5, ../themes/stylesheets/neptune/default/widgets/_loadmask.scss */
+.x-mask {
+  z-index: 100;
+  position: absolute;
+  top: 0;
+  left: 0;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=90);
+  opacity: 0.9;
+  width: 100%;
+  height: 100%;
+  background: white; }
+
+/* line 23, ../themes/stylesheets/neptune/default/widgets/_loadmask.scss */
+.x-mask-msg {
+  z-index: 20001;
+  position: absolute;
+  top: 0;
+  left: 0;
+  -moz-box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px;
+  -webkit-box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px;
+  -o-box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px;
+  box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px;
+  padding: 2px;
+  -moz-border-radius: 6px;
+  -webkit-border-radius: 6px;
+  -o-border-radius: 6px;
+  -ms-border-radius: 6px;
+  -khtml-border-radius: 6px;
+  border-radius: 6px;
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f4f5f6));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f4f5f6);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f4f5f6);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f4f5f6);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f4f5f6);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f4f5f6); }
+  /* line 45, ../themes/stylesheets/neptune/default/widgets/_loadmask.scss */
+  .x-mask-msg div {
+    padding: 5px 10px 5px 25px;
+    background-image: url('../../resources/themes/images/neptune/grid/loading.gif');
+    background-repeat: no-repeat;
+    background-position: 5px center;
+    cursor: default;
+    font-size: 11px;
+    font-weight: bold;
+    color: #75b9f0;
+    text-shadow: white 0 1px 0; }
+
+/**
+ * @mixin extjs-progress-ui
+ */
+/**
+ * W3C Suggested Default style sheet for HTML 4
+ * http://www.w3.org/TR/CSS21/sample.html
+ */
+/* line 2, ../themes/stylesheets/neptune/default/widgets/_boundlist.scss */
+.x-boundlist {
+  background: white; }
+  /* line 8, ../themes/stylesheets/neptune/default/widgets/_boundlist.scss */
+  .x-boundlist .x-toolbar {
+    border-width: 1px 0 0 0; }
+
+/* line 13, ../themes/stylesheets/neptune/default/widgets/_boundlist.scss */
+.x-boundlist-item {
+  padding: 5px 6px;
+  font-size: 11px;
+  position: relative;
+  /*allow hover in IE on empty items*/
+  border: 0 solid white; }
+  /* line 26, ../themes/stylesheets/neptune/default/widgets/_boundlist.scss */
+  .x-boundlist-item:last-child {
+    -moz-border-radius-bottomleft: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -o-border-bottom-left-radius: 4px;
+    -ms-border-bottom-left-radius: 4px;
+    -khtml-border-bottom-left-radius: 4px;
+    border-bottom-left-radius: 4px;
+    -moz-border-radius-bottomright: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -o-border-bottom-right-radius: 4px;
+    -ms-border-bottom-right-radius: 4px;
+    -khtml-border-bottom-right-radius: 4px;
+    border-bottom-right-radius: 4px; }
+
+/* line 31, ../themes/stylesheets/neptune/default/widgets/_boundlist.scss */
+.x-boundlist-item-over {
+  background: #f2fbff;
+  border-color: #0d57b6;
+  color: #002c40; }
+
+/* line 37, ../themes/stylesheets/neptune/default/widgets/_boundlist.scss */
+.x-boundlist-selected {
+  background: #094cb0;
+  border-color: #0b4c9e;
+  color: white; }
+
+/* line 43, ../themes/stylesheets/neptune/default/widgets/_boundlist.scss */
+.x-boundlist-selected.x-boundlist-item-over {
+  background: #0a56c8; }
+
+/* line 47, ../themes/stylesheets/neptune/default/widgets/_boundlist.scss */
+.x-boundlist-floating {
+  border-top-width: 0;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px; }
+
+/* line 53, ../themes/stylesheets/neptune/default/widgets/_boundlist.scss */
+.x-boundlist-above {
+  border-top-width: 1px;
+  border-bottom-width: 0;
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+  /* line 60, ../themes/stylesheets/neptune/default/widgets/_boundlist.scss */
+  .x-boundlist-above:first-child {
+    -moz-border-radius-topleft: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -o-border-top-left-radius: 4px;
+    -ms-border-top-left-radius: 4px;
+    -khtml-border-top-left-radius: 4px;
+    border-top-left-radius: 4px;
+    -moz-border-radius-topright: 4px;
+    -webkit-border-top-right-radius: 4px;
+    -o-border-top-right-radius: 4px;
+    -ms-border-top-right-radius: 4px;
+    -khtml-border-top-right-radius: 4px;
+    border-top-right-radius: 4px; }
+  /* line 64, ../themes/stylesheets/neptune/default/widgets/_boundlist.scss */
+  .x-boundlist-above:last-child {
+    -moz-border-radius-bottomleft: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -o-border-bottom-left-radius: 4px;
+    -ms-border-bottom-left-radius: 4px;
+    -khtml-border-bottom-left-radius: 4px;
+    border-bottom-left-radius: 4px;
+    -moz-border-radius-bottomright: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -o-border-bottom-right-radius: 4px;
+    -ms-border-bottom-right-radius: 4px;
+    -khtml-border-bottom-right-radius: 4px;
+    border-bottom-right-radius: 4px; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.forbidden {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .forbidden:after, .forbidden:before {
+    font-size: 17px;
+    content: "d";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .forbidden:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .forbidden:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.people {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .people:after, .people:before {
+    font-size: 17px;
+    content: "g";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .people:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .people:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.information {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .information:after, .information:before {
+    font-size: 17px;
+    content: "i";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .information:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .information:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.link {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .link:after, .link:before {
+    font-size: 17px;
+    content: "j";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .link:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .link:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.love {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .love:after, .love:before {
+    font-size: 17px;
+    content: "k";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .love:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .love:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.list {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .list:after, .list:before {
+    font-size: 17px;
+    content: "l";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .list:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .list:after {
+    top: 1px;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.music {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .music:after, .music:before {
+    font-size: 17px;
+    content: "m";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .music:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .music:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.edit2 {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .edit2:after, .edit2:before {
+    font-size: 17px;
+    content: "p";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .edit2:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .edit2:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.chat2 {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .chat2:after, .chat2:before {
+    font-size: 17px;
+    content: "q";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .chat2:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .chat2:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.retweet {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .retweet:after, .retweet:before {
+    font-size: 17px;
+    content: "r";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .retweet:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .retweet:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.search {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .search:after, .search:before {
+    font-size: 17px;
+    content: "s";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .search:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .search:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.time {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .time:after, .time:before {
+    font-size: 17px;
+    content: "t";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .time:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .time:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.photo {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .photo:after, .photo:before {
+    font-size: 17px;
+    content: "v";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .photo:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .photo:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.chat {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .chat:after, .chat:before {
+    font-size: 17px;
+    content: "w";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .chat:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .chat:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.settings {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .settings:after, .settings:before {
+    font-size: 17px;
+    content: "x";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .settings:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .settings:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.settings2 {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .settings2:after, .settings2:before {
+    font-size: 17px;
+    content: "y";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .settings2:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .settings2:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.bookmark {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .bookmark:after, .bookmark:before {
+    font-size: 17px;
+    content: "z";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .bookmark:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .bookmark:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.link2 {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .link2:after, .link2:before {
+    font-size: 17px;
+    content: "A";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .link2:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .link2:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.tweet {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .tweet:after, .tweet:before {
+    font-size: 17px;
+    content: "B";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .tweet:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .tweet:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.cloud {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .cloud:after, .cloud:before {
+    font-size: 17px;
+    content: "C";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .cloud:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .cloud:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.close {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .close:after, .close:before {
+    font-size: 17px;
+    content: "D";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .close:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .close:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.home {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .home:after, .home:before {
+    font-size: 17px;
+    content: "H";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .home:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .home:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.key {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .key:after, .key:before {
+    font-size: 17px;
+    content: "K";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .key:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .key:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.mail {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .mail:after, .mail:before {
+    font-size: 17px;
+    content: "M";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .mail:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .mail:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.paste {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .paste:after, .paste:before {
+    font-size: 17px;
+    content: "N";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .paste:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .paste:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.power {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .power:after, .power:before {
+    font-size: 17px;
+    content: "Q";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .power:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .power:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.open {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .open:after, .open:before {
+    font-size: 17px;
+    content: "R";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .open:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .open:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.star {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .star:after, .star:before {
+    font-size: 17px;
+    content: "S";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .star:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .star:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.person {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .person:after, .person:before {
+    font-size: 17px;
+    content: "U";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .person:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .person:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.video {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .video:after, .video:before {
+    font-size: 17px;
+    content: "V";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .video:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .video:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.edit {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .edit:after, .edit:before {
+    font-size: 17px;
+    content: "W";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .edit:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .edit:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.charts {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .charts:after, .charts:before {
+    font-size: 17px;
+    content: "Z";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .charts:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .charts:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.expand {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .expand:after, .expand:before {
+    font-size: 17px;
+    content: "`";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .expand:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .expand:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.refresh {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .refresh:after, .refresh:before {
+    font-size: 17px;
+    content: "1";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .refresh:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .refresh:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.tick {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .tick:after, .tick:before {
+    font-size: 17px;
+    content: "2";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .tick:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .tick:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.tick2 {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .tick2:after, .tick2:before {
+    font-size: 17px;
+    content: "3";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .tick2:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .tick2:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.play {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .play:after, .play:before {
+    font-size: 17px;
+    content: "4";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .play:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .play:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.pause {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .pause:after, .pause:before {
+    font-size: 17px;
+    content: "5";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .pause:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .pause:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.stop {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .stop:after, .stop:before {
+    font-size: 17px;
+    content: "6";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .stop:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .stop:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.forward {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .forward:after, .forward:before {
+    font-size: 17px;
+    content: "7";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .forward:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .forward:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.rewind {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .rewind:after, .rewind:before {
+    font-size: 17px;
+    content: "8";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .rewind:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .rewind:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.play2 {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .play2:after, .play2:before {
+    font-size: 17px;
+    content: "9";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .play2:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .play2:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.refresh2 {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .refresh2:after, .refresh2:before {
+    font-size: 17px;
+    content: "0";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .refresh2:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .refresh2:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.minus {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .minus:after, .minus:before {
+    font-size: 17px;
+    content: "-";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .minus:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .minus:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.power {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .power:after, .power:before {
+    font-size: 17px;
+    content: "-";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .power:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .power:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.left {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .left:after, .left:before {
+    font-size: 17px;
+    content: "[";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .left:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .left:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.right {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .right:after, .right:before {
+    font-size: 17px;
+    content: "]";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .right:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .right:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.date {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .date:after, .date:before {
+    font-size: 17px;
+    content: "\\";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .date:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .date:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.shuffle {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .shuffle:after, .shuffle:before {
+    font-size: 17px;
+    content: ";";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .shuffle:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .shuffle:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.wifi {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .wifi:after, .wifi:before {
+    font-size: 17px;
+    content: "'";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .wifi:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .wifi:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.speed {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .speed:after, .speed:before {
+    font-size: 17px;
+    content: ",";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .speed:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .speed:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.more {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .more:after, .more:before {
+    font-size: 17px;
+    content: ".";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .more:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .more:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.print {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .print:after, .print:before {
+    font-size: 17px;
+    content: "/";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .print:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .print:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.warning {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .warning:after, .warning:before {
+    font-size: 17px;
+    content: "!";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .warning:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .warning:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.location {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .location:after, .location:before {
+    font-size: 17px;
+    content: "@";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .location:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .location:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.trash {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .trash:after, .trash:before {
+    font-size: 17px;
+    content: "#";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .trash:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .trash:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.cart {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .cart:after, .cart:before {
+    font-size: 17px;
+    content: "$";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .cart:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .cart:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.flag {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .flag:after, .flag:before {
+    font-size: 17px;
+    content: "^";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .flag:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .flag:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.add {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .add:after, .add:before {
+    font-size: 17px;
+    content: "&";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .add:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .add:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.close {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .close:after, .close:before {
+    font-size: 17px;
+    content: "*";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .close:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .close:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.lock {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .lock:after, .lock:before {
+    font-size: 17px;
+    content: "(";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .lock:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .lock:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.unlock {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .unlock:after, .unlock:before {
+    font-size: 17px;
+    content: ")";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .unlock:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .unlock:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.remove {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .remove:after, .remove:before {
+    font-size: 17px;
+    content: "_";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .remove:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .remove:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.add2 {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .add2:after, .add2:before {
+    font-size: 17px;
+    content: "+";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .add2:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .add2:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.up {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .up:after, .up:before {
+    font-size: 17px;
+    content: "{";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .up:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .up:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.down {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .down:after, .down:before {
+    font-size: 17px;
+    content: "}";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .down:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .down:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.bell {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .bell:after, .bell:before {
+    font-size: 17px;
+    content: ":";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .bell:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .bell:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.quote {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .quote:after, .quote:before {
+    font-size: 17px;
+    content: '"';
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .quote:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .quote:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.novolume {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .novolume:after, .novolume:before {
+    font-size: 17px;
+    content: "<";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .novolume:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .novolume:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.volume {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .volume:after, .volume:before {
+    font-size: 17px;
+    content: ">";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .volume:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .volume:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.question {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .question:after, .question:before {
+    font-size: 17px;
+    content: "?";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .question:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .question:after {
+    top: null;
+    left: null; }
+
+/* line 83, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn {
+  display: inline-block;
+  *display: inline;
+  position: relative;
+  vertical-align: middle;
+  background-repeat: no-repeat; }
+  /* line 95, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn.small .x-btn-icon:after {
+    font-size: 16px; }
+  /* line 102, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn.medium .x-btn-icon:before,
+  .x-btn.medium .x-btn-icon:after {
+    font-size: 24px; }
+  /* line 109, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn.large .x-btn-icon:before,
+  .x-btn.large .x-btn-icon:after {
+    font-size: 30px; }
+  /* line 114, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn em {
+    background-repeat: no-repeat; }
+    /* line 118, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+    .x-btn em a {
+      text-decoration: none;
+      display: inline-block;
+      color: inherit; }
+  /* line 125, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn button {
+    margin: 0;
+    padding: 0;
+    border: 0;
+    width: auto;
+    background: none;
+    overflow: hidden;
+    vertical-align: bottom;
+    -webkit-appearance: none; }
+    /* line 136, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+    .x-btn button::-moz-focus-inner {
+      border: 0;
+      padding: 0; }
+  /* line 142, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn .x-btn-inner {
+    display: block;
+    white-space: nowrap;
+    background-color: transparent;
+    background-repeat: no-repeat;
+    background-position: left center;
+    -moz-transition: color;
+    -webkit-transition: color;
+    -o-transition: color;
+    transition: color; }
+  /* line 151, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn .x-btn-left .x-btn-inner {
+    text-align: left; }
+  /* line 155, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn .x-btn-center .x-btn-inner {
+    text-align: center; }
+  /* line 159, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn .x-btn-right .x-btn-inner {
+    text-align: right; }
+
+/* line 164, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1; }
+
+/* line 168, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-disabled span {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+  /* line 172, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-disabled span, .x-ie7 .x-btn-disabled span {
+    filter: none; }
+
+/* line 179, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie7 .x-btn-disabled,
+.x-ie8 .x-btn-disabled {
+  filter: none; }
+
+/* line 186, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie6 .x-btn-disabled .x-btn-icon,
+.x-ie7 .x-btn-disabled .x-btn-icon,
+.x-ie8 .x-btn-disabled .x-btn-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+
+/* line 193, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+* html .x-ie .x-btn button {
+  width: 1px; }
+
+/* line 198, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie .x-btn button {
+  overflow-x: visible;
+  /*prevents extra horiz space in IE*/
+  vertical-align: baseline;
+  /*IE doesn't like bottom*/ }
+
+/* line 205, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-strict .x-ie6 .x-btn .x-frame-mc,
+.x-strict .x-ie7 .x-btn .x-frame-mc {
+  height: 100%; }
+
+/* line 214, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn .x-frame-mc {
+  vertical-align: middle;
+  white-space: nowrap;
+  text-align: center;
+  cursor: pointer; }
+
+/* line 225, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon-text-left .x-btn-icon {
+  background-position: left center; }
+
+/* line 226, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon-text-right .x-btn-icon {
+  background-position: right center; }
+
+/* line 227, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon-text-top .x-btn-icon {
+  background-position: center top; }
+
+/* line 228, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon-text-bottom .x-btn-icon {
+  background-position: center bottom; }
+
+/* line 231, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn button, .x-btn a {
+  position: relative; }
+  /* line 234, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn button .x-btn-icon, .x-btn a .x-btn-icon {
+    position: absolute;
+    background-repeat: no-repeat; }
+
+/* line 241, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-arrow-right {
+  background: transparent no-repeat right 4px;
+  padding-right: 15px; }
+  /* line 245, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-arrow-right .x-btn-inner {
+    padding-right: 0 !important; }
+
+/* line 251, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-pressed .x-btn-arrow-right {
+  background-position: right -17px; }
+
+/* line 262, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-toolbar .x-btn-arrow-right {
+  padding-right: 15px; }
+
+/* line 266, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-arrow-bottom {
+  background: transparent no-repeat center bottom;
+  padding-bottom: 15px; }
+
+/* line 271, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-arrow {
+  background-image: url('../../resources/themes/images/neptune/button/arrow.png');
+  display: block; }
+
+/* line 278, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-split-right,
+.x-btn-over .x-btn-split-right {
+  background: transparent no-repeat right center;
+  background-image: url('../../resources/themes/images/neptune/button/s-arrow.png');
+  padding-right: 19px !important; }
+
+/* line 285, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-split-bottom,
+.x-btn-over .x-btn-split-bottom {
+  background: transparent no-repeat center bottom;
+  background-image: url('../../resources/themes/images/neptune/button/s-arrow-b.png');
+  padding-bottom: 19px; }
+
+/* line 291, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-toolbar .x-btn-split-right {
+  background-image: url('../../resources/themes/images/neptune/button/s-arrow-noline.png');
+  padding-right: 17px !important; }
+
+/* line 296, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-toolbar .x-btn-split-bottom {
+  background-image: url('../../resources/themes/images/neptune/button/s-arrow-b-noline.png'); }
+
+/* line 300, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-split {
+  display: block; }
+
+/* line 305, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-item-disabled,
+.x-item-disabled * {
+  cursor: default; }
+
+/* line 309, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-cycle-fixed-width .x-btn-inner {
+  text-align: inherit; }
+
+/* line 313, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-over .x-btn-split-right {
+  background-image: url('../../resources/themes/images/neptune/button/s-arrow-o.png'); }
+
+/* line 314, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-over .x-btn-split-bottom {
+  background-image: url('../../resources/themes/images/neptune/button/s-arrow-bo.png'); }
+
+/* line 317, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-menu-active .x-btn-split-right,
+.x-btn-pressed .x-btn-split-right {
+  background-image: url('../../resources/themes/images/neptune/button/s-arrow-p.png'); }
+
+/* line 319, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-menu-active .x-btn-split-bottom,
+.x-btn-pressed .x-btn-split-bottom {
+  background-image: url('../../resources/themes/images/neptune/button/s-arrow-bp.png'); }
+
+/* line 461, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small {
+  border-color: #093152; }
+
+/* line 465, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small .x-btn-inner {
+  font-size: 12px;
+  font-weight: bold;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: #f4fafe;
+  background-repeat: no-repeat;
+  padding: 0 3px;
+  text-shadow: #0e4d80 0 -1px 0; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-btn-default-small {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 6px 4px 6px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #1369ae;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2591e8), color-stop(3%, #1574c0), color-stop(100%, #115d9b));
+  background-image: -webkit-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -moz-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -o-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -ms-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: linear-gradient(top, #2591e8, #1574c0 3%, #115d9b); }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-small-mc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-bg.gif');
+  background-color: #1369ae; }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-small-tl,
+.x-nbr .x-btn-default-small-bl,
+.x-nbr .x-btn-default-small-tr,
+.x-nbr .x-btn-default-small-br,
+.x-nbr .x-btn-default-small-tc,
+.x-nbr .x-btn-default-small-bc,
+.x-nbr .x-btn-default-small-ml,
+.x-nbr .x-btn-default-small-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-small-ml,
+.x-nbr .x-btn-default-small-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-small-mc {
+  padding: 0px 3px 1px 3px; }
+
+/* line 481, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon:after {
+  background-image: none;
+  background-color: #f4fafe;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #e2f0fc));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc); }
+
+/* line 487, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-over .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #edf6fd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd); }
+
+/* line 504, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-menu-active .x-btn-icon:after,
+.x-btn-default-small-pressed .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #edf6fd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd); }
+
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon button,
+.x-btn-default-small-icon .x-btn-inner,
+.x-btn-default-small-noicon button,
+.x-btn-default-small-noicon .x-btn-inner {
+  height: 16px;
+  line-height: 16px; }
+
+/* line 522, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon button {
+  padding: 0;
+  width: 16px !important;
+  height: 16px; }
+/* line 528, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon .x-btn-icon {
+  width: 16px;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 539, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-left button {
+  height: 16px; }
+/* line 542, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-left .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-left: 20px; }
+/* line 548, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-left .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 557, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-small-icon-text-left .x-btn-icon {
+    height: 16px; }
+
+/* line 564, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-right button {
+  height: 16px; }
+/* line 567, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-right .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-right: 20px !important; }
+/* line 573, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-right .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 582, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-small-icon-text-right .x-btn-icon {
+    height: 16px; }
+
+/* line 589, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-top .x-btn-inner {
+  padding-top: 20px; }
+/* line 593, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 602, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon {
+    width: 16px; }
+
+/* line 609, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px; }
+/* line 613, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 622, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon {
+    width: 16px; }
+
+/* line 628, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-over {
+  background-image: none;
+  background-color: #1784dc;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #53a8ed), color-stop(3%, #208fe7), color-stop(100%, #1679c9));
+  background-image: -webkit-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -moz-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -o-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -ms-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9); }
+  /* line 636, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-small-over .x-btn-inner {
+    color: white; }
+
+/* line 660, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-focus {
+  background-image: none;
+  background-color: #1784dc;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #53a8ed), color-stop(3%, #208fe7), color-stop(100%, #1679c9));
+  background-image: -webkit-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -moz-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -o-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -ms-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9); }
+
+/* line 685, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-menu-active,
+.x-btn-default-small-pressed {
+  -moz-box-shadow: none;
+  -webkit-box-shadow: none;
+  -o-box-shadow: none;
+  box-shadow: none;
+  background-image: none;
+  background-color: #0e4d80;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #1576c5), color-stop(3%, #105892), color-stop(100%, #0c426d));
+  background-image: -webkit-linear-gradient(top, #1576c5, #105892 3%, #0c426d);
+  background-image: -moz-linear-gradient(top, #1576c5, #105892 3%, #0c426d);
+  background-image: -o-linear-gradient(top, #1576c5, #105892 3%, #0c426d);
+  background-image: -ms-linear-gradient(top, #1576c5, #105892 3%, #0c426d);
+  background-image: linear-gradient(top, #1576c5, #105892 3%, #0c426d); }
+  /* line 696, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-small-menu-active .x-btn-inner,
+  .x-btn-default-small-pressed .x-btn-inner {
+    color: white;
+    text-shadow: #093152 0 -1px 0; }
+
+/* line 715, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-menu-active {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 735, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-disabled {
+  background-image: none;
+  background-color: #1369ae;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2591e8), color-stop(3%, #1574c0), color-stop(100%, #115d9b));
+  background-image: -webkit-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -moz-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -o-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -ms-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: linear-gradient(top, #2591e8, #1574c0 3%, #115d9b); }
+  /* line 743, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-small-disabled .x-btn-inner {
+    color: #f4fafe !important; }
+
+/* line 760, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie .x-btn-default-small-disabled .x-btn-inner {
+  color: #a3d0f5 !important; }
+
+/* line 768, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-small-disabled .x-btn-inner {
+  color: white !important; }
+
+/* line 783, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-over .x-frame-tl,
+.x-nbr .x-btn-default-small-over .x-frame-bl,
+.x-nbr .x-btn-default-small-over .x-frame-tr,
+.x-nbr .x-btn-default-small-over .x-frame-br,
+.x-nbr .x-btn-default-small-over .x-frame-tc,
+.x-nbr .x-btn-default-small-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-over-corners.gif'); }
+/* line 787, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-over .x-frame-ml,
+.x-nbr .x-btn-default-small-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-over-sides.gif'); }
+/* line 790, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-over .x-frame-mc {
+  background-color: #1784dc;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-over-bg.gif'); }
+/* line 804, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-focus .x-frame-tl,
+.x-nbr .x-btn-default-small-focus .x-frame-bl,
+.x-nbr .x-btn-default-small-focus .x-frame-tr,
+.x-nbr .x-btn-default-small-focus .x-frame-br,
+.x-nbr .x-btn-default-small-focus .x-frame-tc,
+.x-nbr .x-btn-default-small-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-focus-corners.gif'); }
+/* line 808, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-focus .x-frame-ml,
+.x-nbr .x-btn-default-small-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-focus-sides.gif'); }
+/* line 811, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-focus .x-frame-mc {
+  background-color: #1784dc;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-focus-bg.gif'); }
+/* line 826, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-small-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-small-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-small-menu-active .x-frame-br,
+.x-nbr .x-btn-default-small-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-small-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-small-pressed .x-frame-tl,
+.x-nbr .x-btn-default-small-pressed .x-frame-bl,
+.x-nbr .x-btn-default-small-pressed .x-frame-tr,
+.x-nbr .x-btn-default-small-pressed .x-frame-br,
+.x-nbr .x-btn-default-small-pressed .x-frame-tc,
+.x-nbr .x-btn-default-small-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-pressed-corners.gif'); }
+/* line 830, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-small-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-small-pressed .x-frame-ml,
+.x-nbr .x-btn-default-small-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-pressed-sides.gif'); }
+/* line 833, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-small-pressed .x-frame-mc {
+  background-color: #0e4d80;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-pressed-bg.gif'); }
+/* line 847, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-disabled .x-frame-tl,
+.x-nbr .x-btn-default-small-disabled .x-frame-bl,
+.x-nbr .x-btn-default-small-disabled .x-frame-tr,
+.x-nbr .x-btn-default-small-disabled .x-frame-br,
+.x-nbr .x-btn-default-small-disabled .x-frame-tc,
+.x-nbr .x-btn-default-small-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-disabled-corners.gif'); }
+/* line 851, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-disabled .x-frame-ml,
+.x-nbr .x-btn-default-small-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-disabled-sides.gif'); }
+/* line 854, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-disabled .x-frame-mc {
+  background-color: #1369ae;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-disabled-bg.gif'); }
+
+/* line 867, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-bg.gif'); }
+
+/* line 876, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-over-bg.gif'); }
+
+/* line 885, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-focus-bg.gif'); }
+
+/* line 895, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-menu-active,
+.x-nlg .x-btn-default-small-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-pressed-bg.gif'); }
+
+/* line 904, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-disabled-bg.gif'); }
+
+/* line 461, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium {
+  border-color: #093152; }
+
+/* line 465, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium .x-btn-inner {
+  font-size: 12px;
+  font-weight: bold;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: #f4fafe;
+  background-repeat: no-repeat;
+  padding: 0 3px;
+  text-shadow: #0e4d80 0 -1px 0; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-btn-default-medium {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #1369ae;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2591e8), color-stop(3%, #1574c0), color-stop(100%, #115d9b));
+  background-image: -webkit-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -moz-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -o-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -ms-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: linear-gradient(top, #2591e8, #1574c0 3%, #115d9b); }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-medium-mc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-bg.gif');
+  background-color: #1369ae; }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-medium-tl,
+.x-nbr .x-btn-default-medium-bl,
+.x-nbr .x-btn-default-medium-tr,
+.x-nbr .x-btn-default-medium-br,
+.x-nbr .x-btn-default-medium-tc,
+.x-nbr .x-btn-default-medium-bc,
+.x-nbr .x-btn-default-medium-ml,
+.x-nbr .x-btn-default-medium-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-medium-ml,
+.x-nbr .x-btn-default-medium-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-medium-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 481, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon:after {
+  background-image: none;
+  background-color: #f4fafe;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #e2f0fc));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc); }
+
+/* line 487, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-over .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #edf6fd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd); }
+
+/* line 504, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-menu-active .x-btn-icon:after,
+.x-btn-default-medium-pressed .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #edf6fd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd); }
+
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon button,
+.x-btn-default-medium-icon .x-btn-inner,
+.x-btn-default-medium-noicon button,
+.x-btn-default-medium-noicon .x-btn-inner {
+  height: 24px;
+  line-height: 24px; }
+
+/* line 522, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon button {
+  padding: 0;
+  width: 24px !important;
+  height: 24px; }
+/* line 528, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon .x-btn-icon {
+  width: 24px;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 539, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-left button {
+  height: 24px; }
+/* line 542, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-left: 28px; }
+/* line 548, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 557, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon {
+    height: 24px; }
+
+/* line 564, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-right button {
+  height: 24px; }
+/* line 567, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-right: 28px !important; }
+/* line 573, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 582, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon {
+    height: 24px; }
+
+/* line 589, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px; }
+/* line 593, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 602, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon {
+    width: 24px; }
+
+/* line 609, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px; }
+/* line 613, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 622, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon {
+    width: 24px; }
+
+/* line 628, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-over {
+  background-image: none;
+  background-color: #1784dc;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #53a8ed), color-stop(3%, #208fe7), color-stop(100%, #1679c9));
+  background-image: -webkit-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -moz-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -o-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -ms-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9); }
+  /* line 636, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-medium-over .x-btn-inner {
+    color: white; }
+
+/* line 660, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-focus {
+  background-image: none;
+  background-color: #1784dc;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #53a8ed), color-stop(3%, #208fe7), color-stop(100%, #1679c9));
+  background-image: -webkit-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -moz-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -o-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -ms-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9); }
+
+/* line 685, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-menu-active,
+.x-btn-default-medium-pressed {
+  -moz-box-shadow: none;
+  -webkit-box-shadow: none;
+  -o-box-shadow: none;
+  box-shadow: none;
+  background-image: none;
+  background-color: #0e4d80;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #1576c5), color-stop(3%, #105892), color-stop(100%, #0c426d));
+  background-image: -webkit-linear-gradient(top, #1576c5, #105892 3%, #0c426d);
+  background-image: -moz-linear-gradient(top, #1576c5, #105892 3%, #0c426d);
+  background-image: -o-linear-gradient(top, #1576c5, #105892 3%, #0c426d);
+  background-image: -ms-linear-gradient(top, #1576c5, #105892 3%, #0c426d);
+  background-image: linear-gradient(top, #1576c5, #105892 3%, #0c426d); }
+  /* line 696, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-medium-menu-active .x-btn-inner,
+  .x-btn-default-medium-pressed .x-btn-inner {
+    color: white;
+    text-shadow: #093152 0 -1px 0; }
+
+/* line 715, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-menu-active {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 735, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-disabled {
+  background-image: none;
+  background-color: #1369ae;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2591e8), color-stop(3%, #1574c0), color-stop(100%, #115d9b));
+  background-image: -webkit-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -moz-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -o-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -ms-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: linear-gradient(top, #2591e8, #1574c0 3%, #115d9b); }
+  /* line 743, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-medium-disabled .x-btn-inner {
+    color: #f4fafe !important; }
+
+/* line 760, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie .x-btn-default-medium-disabled .x-btn-inner {
+  color: #a3d0f5 !important; }
+
+/* line 768, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-medium-disabled .x-btn-inner {
+  color: white !important; }
+
+/* line 783, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-over .x-frame-tl,
+.x-nbr .x-btn-default-medium-over .x-frame-bl,
+.x-nbr .x-btn-default-medium-over .x-frame-tr,
+.x-nbr .x-btn-default-medium-over .x-frame-br,
+.x-nbr .x-btn-default-medium-over .x-frame-tc,
+.x-nbr .x-btn-default-medium-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-over-corners.gif'); }
+/* line 787, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-over .x-frame-ml,
+.x-nbr .x-btn-default-medium-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-over-sides.gif'); }
+/* line 790, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-over .x-frame-mc {
+  background-color: #1784dc;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-over-bg.gif'); }
+/* line 804, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-focus .x-frame-tl,
+.x-nbr .x-btn-default-medium-focus .x-frame-bl,
+.x-nbr .x-btn-default-medium-focus .x-frame-tr,
+.x-nbr .x-btn-default-medium-focus .x-frame-br,
+.x-nbr .x-btn-default-medium-focus .x-frame-tc,
+.x-nbr .x-btn-default-medium-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-focus-corners.gif'); }
+/* line 808, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-focus .x-frame-ml,
+.x-nbr .x-btn-default-medium-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-focus-sides.gif'); }
+/* line 811, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-focus .x-frame-mc {
+  background-color: #1784dc;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-focus-bg.gif'); }
+/* line 826, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-br,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-medium-pressed .x-frame-tl,
+.x-nbr .x-btn-default-medium-pressed .x-frame-bl,
+.x-nbr .x-btn-default-medium-pressed .x-frame-tr,
+.x-nbr .x-btn-default-medium-pressed .x-frame-br,
+.x-nbr .x-btn-default-medium-pressed .x-frame-tc,
+.x-nbr .x-btn-default-medium-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-pressed-corners.gif'); }
+/* line 830, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-medium-pressed .x-frame-ml,
+.x-nbr .x-btn-default-medium-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-pressed-sides.gif'); }
+/* line 833, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-medium-pressed .x-frame-mc {
+  background-color: #0e4d80;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-pressed-bg.gif'); }
+/* line 847, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-disabled .x-frame-tl,
+.x-nbr .x-btn-default-medium-disabled .x-frame-bl,
+.x-nbr .x-btn-default-medium-disabled .x-frame-tr,
+.x-nbr .x-btn-default-medium-disabled .x-frame-br,
+.x-nbr .x-btn-default-medium-disabled .x-frame-tc,
+.x-nbr .x-btn-default-medium-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-disabled-corners.gif'); }
+/* line 851, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-disabled .x-frame-ml,
+.x-nbr .x-btn-default-medium-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-disabled-sides.gif'); }
+/* line 854, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-disabled .x-frame-mc {
+  background-color: #1369ae;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-disabled-bg.gif'); }
+
+/* line 867, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-bg.gif'); }
+
+/* line 876, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-over-bg.gif'); }
+
+/* line 885, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-focus-bg.gif'); }
+
+/* line 895, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-menu-active,
+.x-nlg .x-btn-default-medium-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-pressed-bg.gif'); }
+
+/* line 904, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-disabled-bg.gif'); }
+
+/* line 461, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large {
+  border-color: #093152; }
+
+/* line 465, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large .x-btn-inner {
+  font-size: 12px;
+  font-weight: bold;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: #f4fafe;
+  background-repeat: no-repeat;
+  padding: 0 3px;
+  text-shadow: #0e4d80 0 -1px 0; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-btn-default-large {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #1369ae;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2591e8), color-stop(3%, #1574c0), color-stop(100%, #115d9b));
+  background-image: -webkit-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -moz-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -o-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -ms-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: linear-gradient(top, #2591e8, #1574c0 3%, #115d9b); }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-large-mc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-bg.gif');
+  background-color: #1369ae; }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-large-tl,
+.x-nbr .x-btn-default-large-bl,
+.x-nbr .x-btn-default-large-tr,
+.x-nbr .x-btn-default-large-br,
+.x-nbr .x-btn-default-large-tc,
+.x-nbr .x-btn-default-large-bc,
+.x-nbr .x-btn-default-large-ml,
+.x-nbr .x-btn-default-large-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-large-ml,
+.x-nbr .x-btn-default-large-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-large-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 481, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon:after {
+  background-image: none;
+  background-color: #f4fafe;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #e2f0fc));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc); }
+
+/* line 487, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-over .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #edf6fd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd); }
+
+/* line 504, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-menu-active .x-btn-icon:after,
+.x-btn-default-large-pressed .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #edf6fd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd); }
+
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon button,
+.x-btn-default-large-icon .x-btn-inner,
+.x-btn-default-large-noicon button,
+.x-btn-default-large-noicon .x-btn-inner {
+  height: 32px;
+  line-height: 32px; }
+
+/* line 522, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon button {
+  padding: 0;
+  width: 32px !important;
+  height: 32px; }
+/* line 528, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon .x-btn-icon {
+  width: 32px;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 539, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-left button {
+  height: 32px; }
+/* line 542, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-left .x-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-left: 36px; }
+/* line 548, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-left .x-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 557, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-large-icon-text-left .x-btn-icon {
+    height: 32px; }
+
+/* line 564, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-right button {
+  height: 32px; }
+/* line 567, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-right .x-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-right: 36px !important; }
+/* line 573, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-right .x-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 582, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-large-icon-text-right .x-btn-icon {
+    height: 32px; }
+
+/* line 589, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-top .x-btn-inner {
+  padding-top: 36px; }
+/* line 593, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 602, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon {
+    width: 32px; }
+
+/* line 609, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 36px; }
+/* line 613, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 32px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 622, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon {
+    width: 32px; }
+
+/* line 628, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-over {
+  background-image: none;
+  background-color: #1784dc;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #53a8ed), color-stop(3%, #208fe7), color-stop(100%, #1679c9));
+  background-image: -webkit-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -moz-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -o-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -ms-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9); }
+  /* line 636, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-large-over .x-btn-inner {
+    color: white; }
+
+/* line 660, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-focus {
+  background-image: none;
+  background-color: #1784dc;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #53a8ed), color-stop(3%, #208fe7), color-stop(100%, #1679c9));
+  background-image: -webkit-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -moz-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -o-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -ms-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9); }
+
+/* line 685, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-menu-active,
+.x-btn-default-large-pressed {
+  -moz-box-shadow: none;
+  -webkit-box-shadow: none;
+  -o-box-shadow: none;
+  box-shadow: none;
+  background-image: none;
+  background-color: #0e4d80;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #1576c5), color-stop(3%, #105892), color-stop(100%, #0c426d));
+  background-image: -webkit-linear-gradient(top, #1576c5, #105892 3%, #0c426d);
+  background-image: -moz-linear-gradient(top, #1576c5, #105892 3%, #0c426d);
+  background-image: -o-linear-gradient(top, #1576c5, #105892 3%, #0c426d);
+  background-image: -ms-linear-gradient(top, #1576c5, #105892 3%, #0c426d);
+  background-image: linear-gradient(top, #1576c5, #105892 3%, #0c426d); }
+  /* line 696, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-large-menu-active .x-btn-inner,
+  .x-btn-default-large-pressed .x-btn-inner {
+    color: white;
+    text-shadow: #093152 0 -1px 0; }
+
+/* line 715, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-menu-active {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 735, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-disabled {
+  background-image: none;
+  background-color: #1369ae;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2591e8), color-stop(3%, #1574c0), color-stop(100%, #115d9b));
+  background-image: -webkit-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -moz-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -o-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -ms-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: linear-gradient(top, #2591e8, #1574c0 3%, #115d9b); }
+  /* line 743, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-large-disabled .x-btn-inner {
+    color: #f4fafe !important; }
+
+/* line 760, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie .x-btn-default-large-disabled .x-btn-inner {
+  color: #a3d0f5 !important; }
+
+/* line 768, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-large-disabled .x-btn-inner {
+  color: white !important; }
+
+/* line 783, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-over .x-frame-tl,
+.x-nbr .x-btn-default-large-over .x-frame-bl,
+.x-nbr .x-btn-default-large-over .x-frame-tr,
+.x-nbr .x-btn-default-large-over .x-frame-br,
+.x-nbr .x-btn-default-large-over .x-frame-tc,
+.x-nbr .x-btn-default-large-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-over-corners.gif'); }
+/* line 787, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-over .x-frame-ml,
+.x-nbr .x-btn-default-large-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-over-sides.gif'); }
+/* line 790, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-over .x-frame-mc {
+  background-color: #1784dc;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-over-bg.gif'); }
+/* line 804, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-focus .x-frame-tl,
+.x-nbr .x-btn-default-large-focus .x-frame-bl,
+.x-nbr .x-btn-default-large-focus .x-frame-tr,
+.x-nbr .x-btn-default-large-focus .x-frame-br,
+.x-nbr .x-btn-default-large-focus .x-frame-tc,
+.x-nbr .x-btn-default-large-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-focus-corners.gif'); }
+/* line 808, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-focus .x-frame-ml,
+.x-nbr .x-btn-default-large-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-focus-sides.gif'); }
+/* line 811, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-focus .x-frame-mc {
+  background-color: #1784dc;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-focus-bg.gif'); }
+/* line 826, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-large-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-large-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-large-menu-active .x-frame-br,
+.x-nbr .x-btn-default-large-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-large-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-large-pressed .x-frame-tl,
+.x-nbr .x-btn-default-large-pressed .x-frame-bl,
+.x-nbr .x-btn-default-large-pressed .x-frame-tr,
+.x-nbr .x-btn-default-large-pressed .x-frame-br,
+.x-nbr .x-btn-default-large-pressed .x-frame-tc,
+.x-nbr .x-btn-default-large-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-pressed-corners.gif'); }
+/* line 830, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-large-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-large-pressed .x-frame-ml,
+.x-nbr .x-btn-default-large-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-pressed-sides.gif'); }
+/* line 833, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-large-pressed .x-frame-mc {
+  background-color: #0e4d80;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-pressed-bg.gif'); }
+/* line 847, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-disabled .x-frame-tl,
+.x-nbr .x-btn-default-large-disabled .x-frame-bl,
+.x-nbr .x-btn-default-large-disabled .x-frame-tr,
+.x-nbr .x-btn-default-large-disabled .x-frame-br,
+.x-nbr .x-btn-default-large-disabled .x-frame-tc,
+.x-nbr .x-btn-default-large-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-disabled-corners.gif'); }
+/* line 851, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-disabled .x-frame-ml,
+.x-nbr .x-btn-default-large-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-disabled-sides.gif'); }
+/* line 854, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-disabled .x-frame-mc {
+  background-color: #1369ae;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-disabled-bg.gif'); }
+
+/* line 867, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-bg.gif'); }
+
+/* line 876, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-over-bg.gif'); }
+
+/* line 885, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-focus-bg.gif'); }
+
+/* line 895, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-menu-active,
+.x-nlg .x-btn-default-large-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-pressed-bg.gif'); }
+
+/* line 904, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-disabled-bg.gif'); }
+
+/* line 461, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small {
+  border-color: #424e04; }
+
+/* line 465, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small .x-btn-inner {
+  font-size: 12px;
+  font-weight: bold;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: #fbfeec;
+  background-repeat: no-repeat;
+  padding: 0 3px;
+  text-shadow: #6b7e07 0 -1px 0; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-btn-confirm-small {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #94ae0a;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #cef113), color-stop(3%, #a4c10b), color-stop(100%, #849b09));
+  background-image: -webkit-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: -moz-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: -o-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: -ms-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: linear-gradient(top, #cef113, #a4c10b 3%, #849b09); }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-btn-confirm-small-mc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-bg.gif');
+  background-color: #94ae0a; }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-confirm-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-confirm-small-tl,
+.x-nbr .x-btn-confirm-small-bl,
+.x-nbr .x-btn-confirm-small-tr,
+.x-nbr .x-btn-confirm-small-br,
+.x-nbr .x-btn-confirm-small-tc,
+.x-nbr .x-btn-confirm-small-bc,
+.x-nbr .x-btn-confirm-small-ml,
+.x-nbr .x-btn-confirm-small-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-confirm-small-ml,
+.x-nbr .x-btn-confirm-small-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-confirm-small-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 481, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon:after {
+  background-image: none;
+  background-color: #fbfeec;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f7fdd9));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f7fdd9);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f7fdd9);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f7fdd9);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f7fdd9);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f7fdd9); }
+
+/* line 487, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-over .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #fbfeec));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec); }
+
+/* line 504, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-menu-active .x-btn-icon:after,
+.x-btn-confirm-small-pressed .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #fbfeec));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec); }
+
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon button,
+.x-btn-confirm-small-icon .x-btn-inner,
+.x-btn-confirm-small-noicon button,
+.x-btn-confirm-small-noicon .x-btn-inner {
+  height: 16px;
+  line-height: 16px; }
+
+/* line 522, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon button {
+  padding: 0;
+  width: 16px !important;
+  height: 16px; }
+/* line 528, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon .x-btn-icon {
+  width: 16px;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 539, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon-text-left button {
+  height: 16px; }
+/* line 542, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon-text-left .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-left: 20px; }
+/* line 548, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon-text-left .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 557, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-confirm-small-icon-text-left .x-btn-icon, .x-quirks .x-btn-confirm-small-icon-text-left .x-btn-icon {
+    height: 16px; }
+
+/* line 564, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon-text-right button {
+  height: 16px; }
+/* line 567, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon-text-right .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-right: 20px !important; }
+/* line 573, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon-text-right .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 582, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-confirm-small-icon-text-right .x-btn-icon, .x-quirks .x-btn-confirm-small-icon-text-right .x-btn-icon {
+    height: 16px; }
+
+/* line 589, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon-text-top .x-btn-inner {
+  padding-top: 20px; }
+/* line 593, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 602, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-confirm-small-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-confirm-small-icon-text-top .x-btn-icon {
+    width: 16px; }
+
+/* line 609, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px; }
+/* line 613, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 622, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-confirm-small-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-confirm-small-icon-text-bottom .x-btn-icon {
+    width: 16px; }
+
+/* line 628, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-over {
+  background-image: none;
+  background-color: #bdde0d;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d8f443), color-stop(3%, #cdf10e), color-stop(100%, #adcb0c));
+  background-image: -webkit-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: -moz-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: -o-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: -ms-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c); }
+  /* line 636, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-confirm-small-over .x-btn-inner {
+    color: white; }
+
+/* line 660, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-focus {
+  background-image: none;
+  background-color: #bdde0d;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d8f443), color-stop(3%, #cdf10e), color-stop(100%, #adcb0c));
+  background-image: -webkit-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: -moz-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: -o-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: -ms-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c); }
+
+/* line 685, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-menu-active,
+.x-btn-confirm-small-pressed {
+  -moz-box-shadow: none;
+  -webkit-box-shadow: none;
+  -o-box-shadow: none;
+  box-shadow: none;
+  background-image: none;
+  background-color: #6b7e07;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #a9c60b), color-stop(3%, #7b9108), color-stop(100%, #5b6a06));
+  background-image: -webkit-linear-gradient(top, #a9c60b, #7b9108 3%, #5b6a06);
+  background-image: -moz-linear-gradient(top, #a9c60b, #7b9108 3%, #5b6a06);
+  background-image: -o-linear-gradient(top, #a9c60b, #7b9108 3%, #5b6a06);
+  background-image: -ms-linear-gradient(top, #a9c60b, #7b9108 3%, #5b6a06);
+  background-image: linear-gradient(top, #a9c60b, #7b9108 3%, #5b6a06); }
+  /* line 696, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-confirm-small-menu-active .x-btn-inner,
+  .x-btn-confirm-small-pressed .x-btn-inner {
+    color: white;
+    text-shadow: #424e04 0 -1px 0; }
+
+/* line 715, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-menu-active {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 735, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-disabled {
+  background-image: none;
+  background-color: #94ae0a;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #cef113), color-stop(3%, #a4c10b), color-stop(100%, #849b09));
+  background-image: -webkit-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: -moz-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: -o-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: -ms-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: linear-gradient(top, #cef113, #a4c10b 3%, #849b09); }
+  /* line 743, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-confirm-small-disabled .x-btn-inner {
+    color: #fbfeec !important; }
+
+/* line 760, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie .x-btn-confirm-small-disabled .x-btn-inner {
+  color: #a3d0f5 !important; }
+
+/* line 768, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie6 .x-btn-confirm-small-disabled .x-btn-inner {
+  color: white !important; }
+
+/* line 783, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-small-over .x-frame-tl,
+.x-nbr .x-btn-confirm-small-over .x-frame-bl,
+.x-nbr .x-btn-confirm-small-over .x-frame-tr,
+.x-nbr .x-btn-confirm-small-over .x-frame-br,
+.x-nbr .x-btn-confirm-small-over .x-frame-tc,
+.x-nbr .x-btn-confirm-small-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-over-corners.gif'); }
+/* line 787, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-small-over .x-frame-ml,
+.x-nbr .x-btn-confirm-small-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-over-sides.gif'); }
+/* line 790, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-small-over .x-frame-mc {
+  background-color: #bdde0d;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-over-bg.gif'); }
+/* line 804, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-small-focus .x-frame-tl,
+.x-nbr .x-btn-confirm-small-focus .x-frame-bl,
+.x-nbr .x-btn-confirm-small-focus .x-frame-tr,
+.x-nbr .x-btn-confirm-small-focus .x-frame-br,
+.x-nbr .x-btn-confirm-small-focus .x-frame-tc,
+.x-nbr .x-btn-confirm-small-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-focus-corners.gif'); }
+/* line 808, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-small-focus .x-frame-ml,
+.x-nbr .x-btn-confirm-small-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-focus-sides.gif'); }
+/* line 811, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-small-focus .x-frame-mc {
+  background-color: #bdde0d;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-focus-bg.gif'); }
+/* line 826, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-small-menu-active .x-frame-tl,
+.x-nbr .x-btn-confirm-small-menu-active .x-frame-bl,
+.x-nbr .x-btn-confirm-small-menu-active .x-frame-tr,
+.x-nbr .x-btn-confirm-small-menu-active .x-frame-br,
+.x-nbr .x-btn-confirm-small-menu-active .x-frame-tc,
+.x-nbr .x-btn-confirm-small-menu-active .x-frame-bc,
+.x-nbr .x-btn-confirm-small-pressed .x-frame-tl,
+.x-nbr .x-btn-confirm-small-pressed .x-frame-bl,
+.x-nbr .x-btn-confirm-small-pressed .x-frame-tr,
+.x-nbr .x-btn-confirm-small-pressed .x-frame-br,
+.x-nbr .x-btn-confirm-small-pressed .x-frame-tc,
+.x-nbr .x-btn-confirm-small-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-pressed-corners.gif'); }
+/* line 830, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-small-menu-active .x-frame-ml,
+.x-nbr .x-btn-confirm-small-menu-active .x-frame-mr,
+.x-nbr .x-btn-confirm-small-pressed .x-frame-ml,
+.x-nbr .x-btn-confirm-small-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-pressed-sides.gif'); }
+/* line 833, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-small-menu-active .x-frame-mc,
+.x-nbr .x-btn-confirm-small-pressed .x-frame-mc {
+  background-color: #6b7e07;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-pressed-bg.gif'); }
+/* line 847, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-small-disabled .x-frame-tl,
+.x-nbr .x-btn-confirm-small-disabled .x-frame-bl,
+.x-nbr .x-btn-confirm-small-disabled .x-frame-tr,
+.x-nbr .x-btn-confirm-small-disabled .x-frame-br,
+.x-nbr .x-btn-confirm-small-disabled .x-frame-tc,
+.x-nbr .x-btn-confirm-small-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-disabled-corners.gif'); }
+/* line 851, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-small-disabled .x-frame-ml,
+.x-nbr .x-btn-confirm-small-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-disabled-sides.gif'); }
+/* line 854, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-small-disabled .x-frame-mc {
+  background-color: #94ae0a;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-disabled-bg.gif'); }
+
+/* line 867, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-confirm-small {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-bg.gif'); }
+
+/* line 876, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-confirm-small-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-over-bg.gif'); }
+
+/* line 885, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-confirm-small-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-focus-bg.gif'); }
+
+/* line 895, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-confirm-small-menu-active,
+.x-nlg .x-btn-confirm-small-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-pressed-bg.gif'); }
+
+/* line 904, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-confirm-small-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-disabled-bg.gif'); }
+
+/* line 461, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium {
+  border-color: #424e04; }
+
+/* line 465, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium .x-btn-inner {
+  font-size: 12px;
+  font-weight: bold;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: #fbfeec;
+  background-repeat: no-repeat;
+  padding: 0 3px;
+  text-shadow: #6b7e07 0 -1px 0; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-btn-confirm-medium {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #94ae0a;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #cef113), color-stop(3%, #a4c10b), color-stop(100%, #849b09));
+  background-image: -webkit-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: -moz-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: -o-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: -ms-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: linear-gradient(top, #cef113, #a4c10b 3%, #849b09); }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-btn-confirm-medium-mc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-bg.gif');
+  background-color: #94ae0a; }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-confirm-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-confirm-medium-tl,
+.x-nbr .x-btn-confirm-medium-bl,
+.x-nbr .x-btn-confirm-medium-tr,
+.x-nbr .x-btn-confirm-medium-br,
+.x-nbr .x-btn-confirm-medium-tc,
+.x-nbr .x-btn-confirm-medium-bc,
+.x-nbr .x-btn-confirm-medium-ml,
+.x-nbr .x-btn-confirm-medium-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-confirm-medium-ml,
+.x-nbr .x-btn-confirm-medium-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-confirm-medium-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 481, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon:after {
+  background-image: none;
+  background-color: #fbfeec;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f7fdd9));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f7fdd9);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f7fdd9);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f7fdd9);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f7fdd9);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f7fdd9); }
+
+/* line 487, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-over .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #fbfeec));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec); }
+
+/* line 504, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-menu-active .x-btn-icon:after,
+.x-btn-confirm-medium-pressed .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #fbfeec));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec); }
+
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon button,
+.x-btn-confirm-medium-icon .x-btn-inner,
+.x-btn-confirm-medium-noicon button,
+.x-btn-confirm-medium-noicon .x-btn-inner {
+  height: 24px;
+  line-height: 24px; }
+
+/* line 522, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon button {
+  padding: 0;
+  width: 24px !important;
+  height: 24px; }
+/* line 528, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon .x-btn-icon {
+  width: 24px;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 539, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon-text-left button {
+  height: 24px; }
+/* line 542, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon-text-left .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-left: 28px; }
+/* line 548, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon-text-left .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 557, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-confirm-medium-icon-text-left .x-btn-icon, .x-quirks .x-btn-confirm-medium-icon-text-left .x-btn-icon {
+    height: 24px; }
+
+/* line 564, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon-text-right button {
+  height: 24px; }
+/* line 567, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon-text-right .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-right: 28px !important; }
+/* line 573, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon-text-right .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 582, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-confirm-medium-icon-text-right .x-btn-icon, .x-quirks .x-btn-confirm-medium-icon-text-right .x-btn-icon {
+    height: 24px; }
+
+/* line 589, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px; }
+/* line 593, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 602, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-confirm-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-confirm-medium-icon-text-top .x-btn-icon {
+    width: 24px; }
+
+/* line 609, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px; }
+/* line 613, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 622, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-confirm-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-confirm-medium-icon-text-bottom .x-btn-icon {
+    width: 24px; }
+
+/* line 628, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-over {
+  background-image: none;
+  background-color: #bdde0d;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d8f443), color-stop(3%, #cdf10e), color-stop(100%, #adcb0c));
+  background-image: -webkit-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: -moz-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: -o-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: -ms-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c); }
+  /* line 636, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-confirm-medium-over .x-btn-inner {
+    color: white; }
+
+/* line 660, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-focus {
+  background-image: none;
+  background-color: #bdde0d;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d8f443), color-stop(3%, #cdf10e), color-stop(100%, #adcb0c));
+  background-image: -webkit-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: -moz-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: -o-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: -ms-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c); }
+
+/* line 685, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-menu-active,
+.x-btn-confirm-medium-pressed {
+  -moz-box-shadow: none;
+  -webkit-box-shadow: none;
+  -o-box-shadow: none;
+  box-shadow: none;
+  background-image: none;
+  background-color: #6b7e07;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #a9c60b), color-stop(3%, #7b9108), color-stop(100%, #5b6a06));
+  background-image: -webkit-linear-gradient(top, #a9c60b, #7b9108 3%, #5b6a06);
+  background-image: -moz-linear-gradient(top, #a9c60b, #7b9108 3%, #5b6a06);
+  background-image: -o-linear-gradient(top, #a9c60b, #7b9108 3%, #5b6a06);
+  background-image: -ms-linear-gradient(top, #a9c60b, #7b9108 3%, #5b6a06);
+  background-image: linear-gradient(top, #a9c60b, #7b9108 3%, #5b6a06); }
+  /* line 696, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-confirm-medium-menu-active .x-btn-inner,
+  .x-btn-confirm-medium-pressed .x-btn-inner {
+    color: white;
+    text-shadow: #424e04 0 -1px 0; }
+
+/* line 715, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-menu-active {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 735, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-disabled {
+  background-image: none;
+  background-color: #94ae0a;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #cef113), color-stop(3%, #a4c10b), color-stop(100%, #849b09));
+  background-image: -webkit-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: -moz-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: -o-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: -ms-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: linear-gradient(top, #cef113, #a4c10b 3%, #849b09); }
+  /* line 743, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-confirm-medium-disabled .x-btn-inner {
+    color: #fbfeec !important; }
+
+/* line 760, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie .x-btn-confirm-medium-disabled .x-btn-inner {
+  color: #a3d0f5 !important; }
+
+/* line 768, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie6 .x-btn-confirm-medium-disabled .x-btn-inner {
+  color: white !important; }
+
+/* line 783, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-medium-over .x-frame-tl,
+.x-nbr .x-btn-confirm-medium-over .x-frame-bl,
+.x-nbr .x-btn-confirm-medium-over .x-frame-tr,
+.x-nbr .x-btn-confirm-medium-over .x-frame-br,
+.x-nbr .x-btn-confirm-medium-over .x-frame-tc,
+.x-nbr .x-btn-confirm-medium-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-over-corners.gif'); }
+/* line 787, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-medium-over .x-frame-ml,
+.x-nbr .x-btn-confirm-medium-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-over-sides.gif'); }
+/* line 790, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-medium-over .x-frame-mc {
+  background-color: #bdde0d;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-over-bg.gif'); }
+/* line 804, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-medium-focus .x-frame-tl,
+.x-nbr .x-btn-confirm-medium-focus .x-frame-bl,
+.x-nbr .x-btn-confirm-medium-focus .x-frame-tr,
+.x-nbr .x-btn-confirm-medium-focus .x-frame-br,
+.x-nbr .x-btn-confirm-medium-focus .x-frame-tc,
+.x-nbr .x-btn-confirm-medium-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-focus-corners.gif'); }
+/* line 808, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-medium-focus .x-frame-ml,
+.x-nbr .x-btn-confirm-medium-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-focus-sides.gif'); }
+/* line 811, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-medium-focus .x-frame-mc {
+  background-color: #bdde0d;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-focus-bg.gif'); }
+/* line 826, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-medium-menu-active .x-frame-tl,
+.x-nbr .x-btn-confirm-medium-menu-active .x-frame-bl,
+.x-nbr .x-btn-confirm-medium-menu-active .x-frame-tr,
+.x-nbr .x-btn-confirm-medium-menu-active .x-frame-br,
+.x-nbr .x-btn-confirm-medium-menu-active .x-frame-tc,
+.x-nbr .x-btn-confirm-medium-menu-active .x-frame-bc,
+.x-nbr .x-btn-confirm-medium-pressed .x-frame-tl,
+.x-nbr .x-btn-confirm-medium-pressed .x-frame-bl,
+.x-nbr .x-btn-confirm-medium-pressed .x-frame-tr,
+.x-nbr .x-btn-confirm-medium-pressed .x-frame-br,
+.x-nbr .x-btn-confirm-medium-pressed .x-frame-tc,
+.x-nbr .x-btn-confirm-medium-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-pressed-corners.gif'); }
+/* line 830, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-medium-menu-active .x-frame-ml,
+.x-nbr .x-btn-confirm-medium-menu-active .x-frame-mr,
+.x-nbr .x-btn-confirm-medium-pressed .x-frame-ml,
+.x-nbr .x-btn-confirm-medium-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-pressed-sides.gif'); }
+/* line 833, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-medium-menu-active .x-frame-mc,
+.x-nbr .x-btn-confirm-medium-pressed .x-frame-mc {
+  background-color: #6b7e07;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-pressed-bg.gif'); }
+/* line 847, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-medium-disabled .x-frame-tl,
+.x-nbr .x-btn-confirm-medium-disabled .x-frame-bl,
+.x-nbr .x-btn-confirm-medium-disabled .x-frame-tr,
+.x-nbr .x-btn-confirm-medium-disabled .x-frame-br,
+.x-nbr .x-btn-confirm-medium-disabled .x-frame-tc,
+.x-nbr .x-btn-confirm-medium-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-disabled-corners.gif'); }
+/* line 851, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-medium-disabled .x-frame-ml,
+.x-nbr .x-btn-confirm-medium-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-disabled-sides.gif'); }
+/* line 854, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-medium-disabled .x-frame-mc {
+  background-color: #94ae0a;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-disabled-bg.gif'); }
+
+/* line 867, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-confirm-medium {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-bg.gif'); }
+
+/* line 876, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-confirm-medium-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-over-bg.gif'); }
+
+/* line 885, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-confirm-medium-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-focus-bg.gif'); }
+
+/* line 895, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-confirm-medium-menu-active,
+.x-nlg .x-btn-confirm-medium-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-pressed-bg.gif'); }
+
+/* line 904, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-confirm-medium-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-disabled-bg.gif'); }
+
+/* line 461, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium {
+  border-color: #49080e; }
+
+/* line 465, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium .x-btn-inner {
+  font-size: 12px;
+  font-weight: bold;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: #fdecee;
+  background-repeat: no-repeat;
+  padding: 0 3px;
+  text-shadow: #780c17 0 -1px 0; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-btn-drastic-medium {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #a61120;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e81c30), color-stop(3%, #b91324), color-stop(100%, #930f1c));
+  background-image: -webkit-linear-gradient(top, #e81c30, #b91324 3%, #930f1c);
+  background-image: -moz-linear-gradient(top, #e81c30, #b91324 3%, #930f1c);
+  background-image: -o-linear-gradient(top, #e81c30, #b91324 3%, #930f1c);
+  background-image: -ms-linear-gradient(top, #e81c30, #b91324 3%, #930f1c);
+  background-image: linear-gradient(top, #e81c30, #b91324 3%, #930f1c); }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-btn-drastic-medium-mc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-bg.gif');
+  background-color: #a61120; }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-drastic-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-drastic-medium-tl,
+.x-nbr .x-btn-drastic-medium-bl,
+.x-nbr .x-btn-drastic-medium-tr,
+.x-nbr .x-btn-drastic-medium-br,
+.x-nbr .x-btn-drastic-medium-tc,
+.x-nbr .x-btn-drastic-medium-bc,
+.x-nbr .x-btn-drastic-medium-ml,
+.x-nbr .x-btn-drastic-medium-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-drastic-medium-ml,
+.x-nbr .x-btn-drastic-medium-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-drastic-medium-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 481, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon:after {
+  background-image: none;
+  background-color: #fdecee;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #fffeff), color-stop(100%, #fbd9dd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #fffeff 3%, #fbd9dd);
+  background-image: -moz-linear-gradient(top, #ffffff, #fffeff 3%, #fbd9dd);
+  background-image: -o-linear-gradient(top, #ffffff, #fffeff 3%, #fbd9dd);
+  background-image: -ms-linear-gradient(top, #ffffff, #fffeff 3%, #fbd9dd);
+  background-image: linear-gradient(top, #ffffff, #fffeff 3%, #fbd9dd); }
+
+/* line 487, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-over .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #fdecee));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #fdecee);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #fdecee);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #fdecee);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #fdecee);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #fdecee); }
+
+/* line 504, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-menu-active .x-btn-icon:after,
+.x-btn-drastic-medium-pressed .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #fdecee));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #fdecee);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #fdecee);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #fdecee);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #fdecee);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #fdecee); }
+
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon button,
+.x-btn-drastic-medium-icon .x-btn-inner,
+.x-btn-drastic-medium-noicon button,
+.x-btn-drastic-medium-noicon .x-btn-inner {
+  height: 24px;
+  line-height: 24px; }
+
+/* line 522, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon button {
+  padding: 0;
+  width: 24px !important;
+  height: 24px; }
+/* line 528, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon .x-btn-icon {
+  width: 24px;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 539, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon-text-left button {
+  height: 24px; }
+/* line 542, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon-text-left .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-left: 28px; }
+/* line 548, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon-text-left .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 557, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-drastic-medium-icon-text-left .x-btn-icon, .x-quirks .x-btn-drastic-medium-icon-text-left .x-btn-icon {
+    height: 24px; }
+
+/* line 564, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon-text-right button {
+  height: 24px; }
+/* line 567, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon-text-right .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-right: 28px !important; }
+/* line 573, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon-text-right .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 582, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-drastic-medium-icon-text-right .x-btn-icon, .x-quirks .x-btn-drastic-medium-icon-text-right .x-btn-icon {
+    height: 24px; }
+
+/* line 589, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px; }
+/* line 593, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 602, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-drastic-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-drastic-medium-icon-text-top .x-btn-icon {
+    width: 24px; }
+
+/* line 609, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px; }
+/* line 613, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 622, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-drastic-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-drastic-medium-icon-text-bottom .x-btn-icon {
+    width: 24px; }
+
+/* line 628, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-over {
+  background-image: none;
+  background-color: #d41629;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ec4a5a), color-stop(3%, #e7182c), color-stop(100%, #c21425));
+  background-image: -webkit-linear-gradient(top, #ec4a5a, #e7182c 3%, #c21425);
+  background-image: -moz-linear-gradient(top, #ec4a5a, #e7182c 3%, #c21425);
+  background-image: -o-linear-gradient(top, #ec4a5a, #e7182c 3%, #c21425);
+  background-image: -ms-linear-gradient(top, #ec4a5a, #e7182c 3%, #c21425);
+  background-image: linear-gradient(top, #ec4a5a, #e7182c 3%, #c21425); }
+  /* line 636, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-drastic-medium-over .x-btn-inner {
+    color: white; }
+
+/* line 660, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-focus {
+  background-image: none;
+  background-color: #d41629;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ec4a5a), color-stop(3%, #e7182c), color-stop(100%, #c21425));
+  background-image: -webkit-linear-gradient(top, #ec4a5a, #e7182c 3%, #c21425);
+  background-image: -moz-linear-gradient(top, #ec4a5a, #e7182c 3%, #c21425);
+  background-image: -o-linear-gradient(top, #ec4a5a, #e7182c 3%, #c21425);
+  background-image: -ms-linear-gradient(top, #ec4a5a, #e7182c 3%, #c21425);
+  background-image: linear-gradient(top, #ec4a5a, #e7182c 3%, #c21425); }
+
+/* line 685, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-menu-active,
+.x-btn-drastic-medium-pressed {
+  -moz-box-shadow: none;
+  -webkit-box-shadow: none;
+  -o-box-shadow: none;
+  box-shadow: none;
+  background-image: none;
+  background-color: #780c17;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bd1324), color-stop(3%, #8a0e1b), color-stop(100%, #650a14));
+  background-image: -webkit-linear-gradient(top, #bd1324, #8a0e1b 3%, #650a14);
+  background-image: -moz-linear-gradient(top, #bd1324, #8a0e1b 3%, #650a14);
+  background-image: -o-linear-gradient(top, #bd1324, #8a0e1b 3%, #650a14);
+  background-image: -ms-linear-gradient(top, #bd1324, #8a0e1b 3%, #650a14);
+  background-image: linear-gradient(top, #bd1324, #8a0e1b 3%, #650a14); }
+  /* line 696, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-drastic-medium-menu-active .x-btn-inner,
+  .x-btn-drastic-medium-pressed .x-btn-inner {
+    color: white;
+    text-shadow: #49080e 0 -1px 0; }
+
+/* line 715, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-menu-active {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 735, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-disabled {
+  background-image: none;
+  background-color: #a61120;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e81c30), color-stop(3%, #b91324), color-stop(100%, #930f1c));
+  background-image: -webkit-linear-gradient(top, #e81c30, #b91324 3%, #930f1c);
+  background-image: -moz-linear-gradient(top, #e81c30, #b91324 3%, #930f1c);
+  background-image: -o-linear-gradient(top, #e81c30, #b91324 3%, #930f1c);
+  background-image: -ms-linear-gradient(top, #e81c30, #b91324 3%, #930f1c);
+  background-image: linear-gradient(top, #e81c30, #b91324 3%, #930f1c); }
+  /* line 743, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-drastic-medium-disabled .x-btn-inner {
+    color: #fdecee !important; }
+
+/* line 760, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie .x-btn-drastic-medium-disabled .x-btn-inner {
+  color: #a3d0f5 !important; }
+
+/* line 768, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie6 .x-btn-drastic-medium-disabled .x-btn-inner {
+  color: white !important; }
+
+/* line 783, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-drastic-medium-over .x-frame-tl,
+.x-nbr .x-btn-drastic-medium-over .x-frame-bl,
+.x-nbr .x-btn-drastic-medium-over .x-frame-tr,
+.x-nbr .x-btn-drastic-medium-over .x-frame-br,
+.x-nbr .x-btn-drastic-medium-over .x-frame-tc,
+.x-nbr .x-btn-drastic-medium-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-over-corners.gif'); }
+/* line 787, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-drastic-medium-over .x-frame-ml,
+.x-nbr .x-btn-drastic-medium-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-over-sides.gif'); }
+/* line 790, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-drastic-medium-over .x-frame-mc {
+  background-color: #d41629;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-over-bg.gif'); }
+/* line 804, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-drastic-medium-focus .x-frame-tl,
+.x-nbr .x-btn-drastic-medium-focus .x-frame-bl,
+.x-nbr .x-btn-drastic-medium-focus .x-frame-tr,
+.x-nbr .x-btn-drastic-medium-focus .x-frame-br,
+.x-nbr .x-btn-drastic-medium-focus .x-frame-tc,
+.x-nbr .x-btn-drastic-medium-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-focus-corners.gif'); }
+/* line 808, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-drastic-medium-focus .x-frame-ml,
+.x-nbr .x-btn-drastic-medium-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-focus-sides.gif'); }
+/* line 811, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-drastic-medium-focus .x-frame-mc {
+  background-color: #d41629;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-focus-bg.gif'); }
+/* line 826, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-drastic-medium-menu-active .x-frame-tl,
+.x-nbr .x-btn-drastic-medium-menu-active .x-frame-bl,
+.x-nbr .x-btn-drastic-medium-menu-active .x-frame-tr,
+.x-nbr .x-btn-drastic-medium-menu-active .x-frame-br,
+.x-nbr .x-btn-drastic-medium-menu-active .x-frame-tc,
+.x-nbr .x-btn-drastic-medium-menu-active .x-frame-bc,
+.x-nbr .x-btn-drastic-medium-pressed .x-frame-tl,
+.x-nbr .x-btn-drastic-medium-pressed .x-frame-bl,
+.x-nbr .x-btn-drastic-medium-pressed .x-frame-tr,
+.x-nbr .x-btn-drastic-medium-pressed .x-frame-br,
+.x-nbr .x-btn-drastic-medium-pressed .x-frame-tc,
+.x-nbr .x-btn-drastic-medium-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-pressed-corners.gif'); }
+/* line 830, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-drastic-medium-menu-active .x-frame-ml,
+.x-nbr .x-btn-drastic-medium-menu-active .x-frame-mr,
+.x-nbr .x-btn-drastic-medium-pressed .x-frame-ml,
+.x-nbr .x-btn-drastic-medium-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-pressed-sides.gif'); }
+/* line 833, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-drastic-medium-menu-active .x-frame-mc,
+.x-nbr .x-btn-drastic-medium-pressed .x-frame-mc {
+  background-color: #780c17;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-pressed-bg.gif'); }
+/* line 847, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-drastic-medium-disabled .x-frame-tl,
+.x-nbr .x-btn-drastic-medium-disabled .x-frame-bl,
+.x-nbr .x-btn-drastic-medium-disabled .x-frame-tr,
+.x-nbr .x-btn-drastic-medium-disabled .x-frame-br,
+.x-nbr .x-btn-drastic-medium-disabled .x-frame-tc,
+.x-nbr .x-btn-drastic-medium-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-disabled-corners.gif'); }
+/* line 851, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-drastic-medium-disabled .x-frame-ml,
+.x-nbr .x-btn-drastic-medium-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-disabled-sides.gif'); }
+/* line 854, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-drastic-medium-disabled .x-frame-mc {
+  background-color: #a61120;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-disabled-bg.gif'); }
+
+/* line 867, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-drastic-medium {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-bg.gif'); }
+
+/* line 876, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-drastic-medium-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-over-bg.gif'); }
+
+/* line 885, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-drastic-medium-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-focus-bg.gif'); }
+
+/* line 895, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-drastic-medium-menu-active,
+.x-nlg .x-btn-drastic-medium-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-pressed-bg.gif'); }
+
+/* line 904, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-drastic-medium-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-disabled-bg.gif'); }
+
+/* line 461, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium {
+  border-color: #0c4572; }
+
+/* line 465, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium .x-btn-inner {
+  font-size: 12px;
+  font-weight: bold;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: white;
+  background-repeat: no-repeat;
+  padding: 0 3px;
+  text-shadow: #1160a0 0 -1px 0; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-btn-action-medium {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #167cce;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #45a1eb), color-stop(3%, #1887e0), color-stop(100%, #1471bc));
+  background-image: -webkit-linear-gradient(top, #45a1eb, #1887e0 3%, #1471bc);
+  background-image: -moz-linear-gradient(top, #45a1eb, #1887e0 3%, #1471bc);
+  background-image: -o-linear-gradient(top, #45a1eb, #1887e0 3%, #1471bc);
+  background-image: -ms-linear-gradient(top, #45a1eb, #1887e0 3%, #1471bc);
+  background-image: linear-gradient(top, #45a1eb, #1887e0 3%, #1471bc); }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-btn-action-medium-mc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-bg.gif');
+  background-color: #167cce; }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-action-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-action-medium-tl,
+.x-nbr .x-btn-action-medium-bl,
+.x-nbr .x-btn-action-medium-tr,
+.x-nbr .x-btn-action-medium-br,
+.x-nbr .x-btn-action-medium-tc,
+.x-nbr .x-btn-action-medium-bc,
+.x-nbr .x-btn-action-medium-ml,
+.x-nbr .x-btn-action-medium-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-action-medium-ml,
+.x-nbr .x-btn-action-medium-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-action-medium-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 481, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #edf6fd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd); }
+
+/* line 487, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-over .x-btn-icon:after {
+  background-image: none;
+  background-color: black;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #072a45), color-stop(3%, #020b12), color-stop(100%, #000000));
+  background-image: -webkit-linear-gradient(top, #072a45, #020b12 3%, #000000);
+  background-image: -moz-linear-gradient(top, #072a45, #020b12 3%, #000000);
+  background-image: -o-linear-gradient(top, #072a45, #020b12 3%, #000000);
+  background-image: -ms-linear-gradient(top, #072a45, #020b12 3%, #000000);
+  background-image: linear-gradient(top, #072a45, #020b12 3%, #000000); }
+
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon button,
+.x-btn-action-medium-icon .x-btn-inner,
+.x-btn-action-medium-noicon button,
+.x-btn-action-medium-noicon .x-btn-inner {
+  height: 24px;
+  line-height: 24px; }
+
+/* line 522, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon button {
+  padding: 0;
+  width: 24px !important;
+  height: 24px; }
+/* line 528, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon .x-btn-icon {
+  width: 24px;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 539, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon-text-left button {
+  height: 24px; }
+/* line 542, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon-text-left .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-left: 28px; }
+/* line 548, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon-text-left .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 557, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-action-medium-icon-text-left .x-btn-icon, .x-quirks .x-btn-action-medium-icon-text-left .x-btn-icon {
+    height: 24px; }
+
+/* line 564, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon-text-right button {
+  height: 24px; }
+/* line 567, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon-text-right .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-right: 28px !important; }
+/* line 573, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon-text-right .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 582, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-action-medium-icon-text-right .x-btn-icon, .x-quirks .x-btn-action-medium-icon-text-right .x-btn-icon {
+    height: 24px; }
+
+/* line 589, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px; }
+/* line 593, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 602, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-action-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-action-medium-icon-text-top .x-btn-icon {
+    width: 24px; }
+
+/* line 609, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px; }
+/* line 613, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 622, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-action-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-action-medium-icon-text-bottom .x-btn-icon {
+    width: 24px; }
+
+/* line 628, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-over {
+  background-image: none;
+  background-color: #2e96e9;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #73b9f0), color-stop(3%, #419feb), color-stop(100%, #1c8ce7));
+  background-image: -webkit-linear-gradient(top, #73b9f0, #419feb 3%, #1c8ce7);
+  background-image: -moz-linear-gradient(top, #73b9f0, #419feb 3%, #1c8ce7);
+  background-image: -o-linear-gradient(top, #73b9f0, #419feb 3%, #1c8ce7);
+  background-image: -ms-linear-gradient(top, #73b9f0, #419feb 3%, #1c8ce7);
+  background-image: linear-gradient(top, #73b9f0, #419feb 3%, #1c8ce7); }
+  /* line 636, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-action-medium-over .x-btn-inner {
+    color: black; }
+
+/* line 660, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-focus {
+  background-image: none;
+  background-color: #2e96e9;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #73b9f0), color-stop(3%, #419feb), color-stop(100%, #1c8ce7));
+  background-image: -webkit-linear-gradient(top, #73b9f0, #419feb 3%, #1c8ce7);
+  background-image: -moz-linear-gradient(top, #73b9f0, #419feb 3%, #1c8ce7);
+  background-image: -o-linear-gradient(top, #73b9f0, #419feb 3%, #1c8ce7);
+  background-image: -ms-linear-gradient(top, #73b9f0, #419feb 3%, #1c8ce7);
+  background-image: linear-gradient(top, #73b9f0, #419feb 3%, #1c8ce7); }
+
+/* line 685, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-menu-active,
+.x-btn-action-medium-pressed {
+  -moz-box-shadow: none;
+  -webkit-box-shadow: none;
+  -o-box-shadow: none;
+  box-shadow: none;
+  background-image: none;
+  background-color: #1160a0;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #188ae5), color-stop(3%, #136bb2), color-stop(100%, #0f558d));
+  background-image: -webkit-linear-gradient(top, #188ae5, #136bb2 3%, #0f558d);
+  background-image: -moz-linear-gradient(top, #188ae5, #136bb2 3%, #0f558d);
+  background-image: -o-linear-gradient(top, #188ae5, #136bb2 3%, #0f558d);
+  background-image: -ms-linear-gradient(top, #188ae5, #136bb2 3%, #0f558d);
+  background-image: linear-gradient(top, #188ae5, #136bb2 3%, #0f558d); }
+  /* line 696, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-action-medium-menu-active .x-btn-inner,
+  .x-btn-action-medium-pressed .x-btn-inner {
+    text-shadow: #0c4572 0 -1px 0; }
+
+/* line 715, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-menu-active {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 735, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-disabled {
+  background-image: none;
+  background-color: #167cce;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #45a1eb), color-stop(3%, #1887e0), color-stop(100%, #1471bc));
+  background-image: -webkit-linear-gradient(top, #45a1eb, #1887e0 3%, #1471bc);
+  background-image: -moz-linear-gradient(top, #45a1eb, #1887e0 3%, #1471bc);
+  background-image: -o-linear-gradient(top, #45a1eb, #1887e0 3%, #1471bc);
+  background-image: -ms-linear-gradient(top, #45a1eb, #1887e0 3%, #1471bc);
+  background-image: linear-gradient(top, #45a1eb, #1887e0 3%, #1471bc); }
+
+/* line 783, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-action-medium-over .x-frame-tl,
+.x-nbr .x-btn-action-medium-over .x-frame-bl,
+.x-nbr .x-btn-action-medium-over .x-frame-tr,
+.x-nbr .x-btn-action-medium-over .x-frame-br,
+.x-nbr .x-btn-action-medium-over .x-frame-tc,
+.x-nbr .x-btn-action-medium-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-over-corners.gif'); }
+/* line 787, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-action-medium-over .x-frame-ml,
+.x-nbr .x-btn-action-medium-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-over-sides.gif'); }
+/* line 790, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-action-medium-over .x-frame-mc {
+  background-color: #2e96e9;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-over-bg.gif'); }
+/* line 804, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-action-medium-focus .x-frame-tl,
+.x-nbr .x-btn-action-medium-focus .x-frame-bl,
+.x-nbr .x-btn-action-medium-focus .x-frame-tr,
+.x-nbr .x-btn-action-medium-focus .x-frame-br,
+.x-nbr .x-btn-action-medium-focus .x-frame-tc,
+.x-nbr .x-btn-action-medium-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-focus-corners.gif'); }
+/* line 808, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-action-medium-focus .x-frame-ml,
+.x-nbr .x-btn-action-medium-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-focus-sides.gif'); }
+/* line 811, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-action-medium-focus .x-frame-mc {
+  background-color: #2e96e9;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-focus-bg.gif'); }
+/* line 826, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-action-medium-menu-active .x-frame-tl,
+.x-nbr .x-btn-action-medium-menu-active .x-frame-bl,
+.x-nbr .x-btn-action-medium-menu-active .x-frame-tr,
+.x-nbr .x-btn-action-medium-menu-active .x-frame-br,
+.x-nbr .x-btn-action-medium-menu-active .x-frame-tc,
+.x-nbr .x-btn-action-medium-menu-active .x-frame-bc,
+.x-nbr .x-btn-action-medium-pressed .x-frame-tl,
+.x-nbr .x-btn-action-medium-pressed .x-frame-bl,
+.x-nbr .x-btn-action-medium-pressed .x-frame-tr,
+.x-nbr .x-btn-action-medium-pressed .x-frame-br,
+.x-nbr .x-btn-action-medium-pressed .x-frame-tc,
+.x-nbr .x-btn-action-medium-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-pressed-corners.gif'); }
+/* line 830, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-action-medium-menu-active .x-frame-ml,
+.x-nbr .x-btn-action-medium-menu-active .x-frame-mr,
+.x-nbr .x-btn-action-medium-pressed .x-frame-ml,
+.x-nbr .x-btn-action-medium-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-pressed-sides.gif'); }
+/* line 833, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-action-medium-menu-active .x-frame-mc,
+.x-nbr .x-btn-action-medium-pressed .x-frame-mc {
+  background-color: #1160a0;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-pressed-bg.gif'); }
+/* line 847, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-action-medium-disabled .x-frame-tl,
+.x-nbr .x-btn-action-medium-disabled .x-frame-bl,
+.x-nbr .x-btn-action-medium-disabled .x-frame-tr,
+.x-nbr .x-btn-action-medium-disabled .x-frame-br,
+.x-nbr .x-btn-action-medium-disabled .x-frame-tc,
+.x-nbr .x-btn-action-medium-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-disabled-corners.gif'); }
+/* line 851, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-action-medium-disabled .x-frame-ml,
+.x-nbr .x-btn-action-medium-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-disabled-sides.gif'); }
+/* line 854, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-action-medium-disabled .x-frame-mc {
+  background-color: #167cce;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-disabled-bg.gif'); }
+
+/* line 867, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-action-medium {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-bg.gif'); }
+
+/* line 876, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-action-medium-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-over-bg.gif'); }
+
+/* line 885, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-action-medium-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-focus-bg.gif'); }
+
+/* line 895, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-action-medium-menu-active,
+.x-nlg .x-btn-action-medium-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-pressed-bg.gif'); }
+
+/* line 904, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-action-medium-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-disabled-bg.gif'); }
+
+/* line 461, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small {
+  border-color: rgba(204, 229, 250, 0); }
+
+/* line 465, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small .x-btn-inner {
+  font-size: 11px;
+  font-weight: bold;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: #136cb4;
+  background-repeat: no-repeat;
+  padding: 0 3px;
+  text-shadow: #fafdff 0 1px 0; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-btn-default-toolbar-small {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: rgba(204, 229, 250, 0); }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-toolbar-small-mc {
+  background-color: rgba(204, 229, 250, 0); }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-small-tl,
+.x-nbr .x-btn-default-toolbar-small-bl,
+.x-nbr .x-btn-default-toolbar-small-tr,
+.x-nbr .x-btn-default-toolbar-small-br,
+.x-nbr .x-btn-default-toolbar-small-tc,
+.x-nbr .x-btn-default-toolbar-small-bc,
+.x-nbr .x-btn-default-toolbar-small-ml,
+.x-nbr .x-btn-default-toolbar-small-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-small-ml,
+.x-nbr .x-btn-default-toolbar-small-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-small-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 481, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon:after {
+  background-image: none;
+  background-color: #136cb4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2b94e8), color-stop(3%, #1577c6), color-stop(100%, #1161a1));
+  background-image: -webkit-linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1);
+  background-image: -moz-linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1);
+  background-image: -o-linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1);
+  background-image: -ms-linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1);
+  background-image: linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1); }
+
+/* line 487, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-over .x-btn-icon:after {
+  background-image: none;
+  background-color: #093558;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #115e9d), color-stop(3%, #0b406a), color-stop(100%, #072a45));
+  background-image: -webkit-linear-gradient(top, #115e9d, #0b406a 3%, #072a45);
+  background-image: -moz-linear-gradient(top, #115e9d, #0b406a 3%, #072a45);
+  background-image: -o-linear-gradient(top, #115e9d, #0b406a 3%, #072a45);
+  background-image: -ms-linear-gradient(top, #115e9d, #0b406a 3%, #072a45);
+  background-image: linear-gradient(top, #115e9d, #0b406a 3%, #072a45); }
+
+/* line 504, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-menu-active .x-btn-icon:after,
+.x-btn-default-toolbar-small-pressed .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #ecf3fd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd); }
+
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon button,
+.x-btn-default-toolbar-small-icon .x-btn-inner,
+.x-btn-default-toolbar-small-noicon button,
+.x-btn-default-toolbar-small-noicon .x-btn-inner {
+  height: 16px;
+  line-height: 16px; }
+
+/* line 522, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon button {
+  padding: 0;
+  width: 16px !important;
+  height: 16px; }
+/* line 528, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-icon {
+  width: 16px;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 539, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-left button {
+  height: 16px; }
+/* line 542, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-left: 20px; }
+/* line 548, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 557, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon {
+    height: 16px; }
+
+/* line 564, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-right button {
+  height: 16px; }
+/* line 567, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-right: 20px !important; }
+/* line 573, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 582, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon {
+    height: 16px; }
+
+/* line 589, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-inner {
+  padding-top: 20px; }
+/* line 593, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 602, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon {
+    width: 16px; }
+
+/* line 609, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px; }
+/* line 613, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 622, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon {
+    width: 16px; }
+
+/* line 628, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-over {
+  border-color: #91c1e8;
+  background-image: none;
+  background-color: #cce5fa;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #dfeffc), color-stop(100%, #badcf8));
+  background-image: -webkit-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -moz-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -o-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -ms-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8); }
+  /* line 636, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-toolbar-small-over .x-btn-inner {
+    color: #093558; }
+
+/* line 660, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-focus {
+  background-image: none;
+  background-color: #cce5fa;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #dfeffc), color-stop(100%, #badcf8));
+  background-image: -webkit-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -moz-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -o-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -ms-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8); }
+
+/* line 685, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-menu-active,
+.x-btn-default-toolbar-small-pressed {
+  border-color: #002d71;
+  -moz-box-shadow: none;
+  -webkit-box-shadow: none;
+  -o-box-shadow: none;
+  box-shadow: none;
+  background-image: none;
+  background-color: #0e4dad;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #1b6eed), color-stop(3%, #1055c0), color-stop(100%, #0c459a));
+  background-image: -webkit-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: -moz-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: -o-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: -ms-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a); }
+  /* line 696, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-toolbar-small-menu-active .x-btn-inner,
+  .x-btn-default-toolbar-small-pressed .x-btn-inner {
+    color: white;
+    text-shadow: #0a387e 0 -1px 0; }
+
+/* line 715, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-menu-active {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 735, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-disabled {
+  background-image: none;
+  background-color: rgba(204, 229, 250, 0);
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(3%, rgba(223, 239, 252, 0)), color-stop(100%, rgba(186, 220, 248, 0)));
+  background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0));
+  background-image: -moz-linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0));
+  background-image: -o-linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0));
+  background-image: -ms-linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0));
+  background-image: linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0)); }
+  /* line 743, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-toolbar-small-disabled .x-btn-inner {
+    color: #136cb4 !important; }
+
+/* line 760, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie .x-btn-default-toolbar-small-disabled .x-btn-inner {
+  color: #a3d0f5 !important; }
+
+/* line 768, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-toolbar-small-disabled .x-btn-inner {
+  color: white !important; }
+
+/* line 783, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-over-corners.gif'); }
+/* line 787, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-over-sides.gif'); }
+/* line 790, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-mc {
+  background-color: #cce5fa;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-over-bg.gif'); }
+/* line 804, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-focus-corners.gif'); }
+/* line 808, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-focus-sides.gif'); }
+/* line 811, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-mc {
+  background-color: #cce5fa;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-focus-bg.gif'); }
+/* line 826, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-pressed-corners.gif'); }
+/* line 830, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-pressed-sides.gif'); }
+/* line 833, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mc {
+  background-color: #0e4dad;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-pressed-bg.gif'); }
+/* line 847, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-disabled-corners.gif'); }
+/* line 851, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-disabled-sides.gif'); }
+/* line 854, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mc {
+  background-color: rgba(204, 229, 250, 0);
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-disabled-bg.gif'); }
+
+/* line 876, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-small-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-over-bg.gif'); }
+
+/* line 885, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-small-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-focus-bg.gif'); }
+
+/* line 895, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-small-menu-active,
+.x-nlg .x-btn-default-toolbar-small-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-pressed-bg.gif'); }
+
+/* line 904, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-small-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-disabled-bg.gif'); }
+
+/* line 461, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium {
+  border-color: rgba(204, 229, 250, 0); }
+
+/* line 465, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium .x-btn-inner {
+  font-size: 11px;
+  font-weight: bold;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: #136cb4;
+  background-repeat: no-repeat;
+  padding: 0 3px;
+  text-shadow: #fafdff 0 1px 0; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-btn-default-toolbar-medium {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: rgba(204, 229, 250, 0); }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-toolbar-medium-mc {
+  background-color: rgba(204, 229, 250, 0); }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-medium-tl,
+.x-nbr .x-btn-default-toolbar-medium-bl,
+.x-nbr .x-btn-default-toolbar-medium-tr,
+.x-nbr .x-btn-default-toolbar-medium-br,
+.x-nbr .x-btn-default-toolbar-medium-tc,
+.x-nbr .x-btn-default-toolbar-medium-bc,
+.x-nbr .x-btn-default-toolbar-medium-ml,
+.x-nbr .x-btn-default-toolbar-medium-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-medium-ml,
+.x-nbr .x-btn-default-toolbar-medium-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-medium-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 481, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon:after {
+  background-image: none;
+  background-color: #136cb4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2b94e8), color-stop(3%, #1577c6), color-stop(100%, #1161a1));
+  background-image: -webkit-linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1);
+  background-image: -moz-linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1);
+  background-image: -o-linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1);
+  background-image: -ms-linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1);
+  background-image: linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1); }
+
+/* line 487, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-over .x-btn-icon:after {
+  background-image: none;
+  background-color: #093558;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #115e9d), color-stop(3%, #0b406a), color-stop(100%, #072a45));
+  background-image: -webkit-linear-gradient(top, #115e9d, #0b406a 3%, #072a45);
+  background-image: -moz-linear-gradient(top, #115e9d, #0b406a 3%, #072a45);
+  background-image: -o-linear-gradient(top, #115e9d, #0b406a 3%, #072a45);
+  background-image: -ms-linear-gradient(top, #115e9d, #0b406a 3%, #072a45);
+  background-image: linear-gradient(top, #115e9d, #0b406a 3%, #072a45); }
+
+/* line 504, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-btn-icon:after,
+.x-btn-default-toolbar-medium-pressed .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #ecf3fd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd); }
+
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon button,
+.x-btn-default-toolbar-medium-icon .x-btn-inner,
+.x-btn-default-toolbar-medium-noicon button,
+.x-btn-default-toolbar-medium-noicon .x-btn-inner {
+  height: 16px;
+  line-height: 16px; }
+
+/* line 522, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon button {
+  padding: 0;
+  width: 16px !important;
+  height: 16px; }
+/* line 528, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-icon {
+  width: 16px;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 539, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-left button {
+  height: 16px; }
+/* line 542, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-left: 20px; }
+/* line 548, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 557, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon {
+    height: 16px; }
+
+/* line 564, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-right button {
+  height: 16px; }
+/* line 567, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-right: 20px !important; }
+/* line 573, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 582, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon {
+    height: 16px; }
+
+/* line 589, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner {
+  padding-top: 20px; }
+/* line 593, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 602, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon {
+    width: 16px; }
+
+/* line 609, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px; }
+/* line 613, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 622, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon {
+    width: 16px; }
+
+/* line 628, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-over {
+  border-color: #91c1e8;
+  background-image: none;
+  background-color: #cce5fa;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #dfeffc), color-stop(100%, #badcf8));
+  background-image: -webkit-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -moz-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -o-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -ms-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8); }
+  /* line 636, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-toolbar-medium-over .x-btn-inner {
+    color: #093558; }
+
+/* line 660, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-focus {
+  background-image: none;
+  background-color: #cce5fa;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #dfeffc), color-stop(100%, #badcf8));
+  background-image: -webkit-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -moz-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -o-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -ms-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8); }
+
+/* line 685, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-menu-active,
+.x-btn-default-toolbar-medium-pressed {
+  border-color: #002d71;
+  -moz-box-shadow: none;
+  -webkit-box-shadow: none;
+  -o-box-shadow: none;
+  box-shadow: none;
+  background-image: none;
+  background-color: #0e4dad;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #1b6eed), color-stop(3%, #1055c0), color-stop(100%, #0c459a));
+  background-image: -webkit-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: -moz-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: -o-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: -ms-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a); }
+  /* line 696, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-toolbar-medium-menu-active .x-btn-inner,
+  .x-btn-default-toolbar-medium-pressed .x-btn-inner {
+    color: white;
+    text-shadow: #0a387e 0 -1px 0; }
+
+/* line 715, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-menu-active {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 735, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-disabled {
+  background-image: none;
+  background-color: rgba(204, 229, 250, 0);
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(3%, rgba(223, 239, 252, 0)), color-stop(100%, rgba(186, 220, 248, 0)));
+  background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0));
+  background-image: -moz-linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0));
+  background-image: -o-linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0));
+  background-image: -ms-linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0));
+  background-image: linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0)); }
+  /* line 743, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+    color: #136cb4 !important; }
+
+/* line 760, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+  color: #a3d0f5 !important; }
+
+/* line 768, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+  color: white !important; }
+
+/* line 783, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-over-corners.gif'); }
+/* line 787, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-over-sides.gif'); }
+/* line 790, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-mc {
+  background-color: #cce5fa;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-over-bg.gif'); }
+/* line 804, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-focus-corners.gif'); }
+/* line 808, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-focus-sides.gif'); }
+/* line 811, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mc {
+  background-color: #cce5fa;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-focus-bg.gif'); }
+/* line 826, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-pressed-corners.gif'); }
+/* line 830, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-pressed-sides.gif'); }
+/* line 833, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mc {
+  background-color: #0e4dad;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-pressed-bg.gif'); }
+/* line 847, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-disabled-corners.gif'); }
+/* line 851, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-disabled-sides.gif'); }
+/* line 854, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mc {
+  background-color: rgba(204, 229, 250, 0);
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-disabled-bg.gif'); }
+
+/* line 876, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-medium-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-over-bg.gif'); }
+
+/* line 885, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-medium-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-focus-bg.gif'); }
+
+/* line 895, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-medium-menu-active,
+.x-nlg .x-btn-default-toolbar-medium-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-pressed-bg.gif'); }
+
+/* line 904, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-medium-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-disabled-bg.gif'); }
+
+/* line 461, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large {
+  border-color: rgba(204, 229, 250, 0); }
+
+/* line 465, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large .x-btn-inner {
+  font-size: 11px;
+  font-weight: bold;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: #136cb4;
+  background-repeat: no-repeat;
+  padding: 0 3px;
+  text-shadow: #fafdff 0 1px 0; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-btn-default-toolbar-large {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: rgba(204, 229, 250, 0); }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-toolbar-large-mc {
+  background-color: rgba(204, 229, 250, 0); }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-large-tl,
+.x-nbr .x-btn-default-toolbar-large-bl,
+.x-nbr .x-btn-default-toolbar-large-tr,
+.x-nbr .x-btn-default-toolbar-large-br,
+.x-nbr .x-btn-default-toolbar-large-tc,
+.x-nbr .x-btn-default-toolbar-large-bc,
+.x-nbr .x-btn-default-toolbar-large-ml,
+.x-nbr .x-btn-default-toolbar-large-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-large-ml,
+.x-nbr .x-btn-default-toolbar-large-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-large-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 481, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon:after {
+  background-image: none;
+  background-color: #136cb4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2b94e8), color-stop(3%, #1577c6), color-stop(100%, #1161a1));
+  background-image: -webkit-linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1);
+  background-image: -moz-linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1);
+  background-image: -o-linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1);
+  background-image: -ms-linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1);
+  background-image: linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1); }
+
+/* line 487, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-over .x-btn-icon:after {
+  background-image: none;
+  background-color: #093558;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #115e9d), color-stop(3%, #0b406a), color-stop(100%, #072a45));
+  background-image: -webkit-linear-gradient(top, #115e9d, #0b406a 3%, #072a45);
+  background-image: -moz-linear-gradient(top, #115e9d, #0b406a 3%, #072a45);
+  background-image: -o-linear-gradient(top, #115e9d, #0b406a 3%, #072a45);
+  background-image: -ms-linear-gradient(top, #115e9d, #0b406a 3%, #072a45);
+  background-image: linear-gradient(top, #115e9d, #0b406a 3%, #072a45); }
+
+/* line 504, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-menu-active .x-btn-icon:after,
+.x-btn-default-toolbar-large-pressed .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #ecf3fd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd); }
+
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon button,
+.x-btn-default-toolbar-large-icon .x-btn-inner,
+.x-btn-default-toolbar-large-noicon button,
+.x-btn-default-toolbar-large-noicon .x-btn-inner {
+  height: 16px;
+  line-height: 16px; }
+
+/* line 522, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon button {
+  padding: 0;
+  width: 16px !important;
+  height: 16px; }
+/* line 528, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-icon {
+  width: 16px;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 539, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-left button {
+  height: 16px; }
+/* line 542, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-left: 20px; }
+/* line 548, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 557, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon {
+    height: 16px; }
+
+/* line 564, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-right button {
+  height: 16px; }
+/* line 567, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-right: 20px !important; }
+/* line 573, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 582, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon {
+    height: 16px; }
+
+/* line 589, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-inner {
+  padding-top: 20px; }
+/* line 593, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 602, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon {
+    width: 16px; }
+
+/* line 609, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px; }
+/* line 613, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 622, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon {
+    width: 16px; }
+
+/* line 628, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-over {
+  border-color: #91c1e8;
+  background-image: none;
+  background-color: #cce5fa;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #dfeffc), color-stop(100%, #badcf8));
+  background-image: -webkit-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -moz-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -o-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -ms-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8); }
+  /* line 636, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-toolbar-large-over .x-btn-inner {
+    color: #093558; }
+
+/* line 660, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-focus {
+  background-image: none;
+  background-color: #cce5fa;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #dfeffc), color-stop(100%, #badcf8));
+  background-image: -webkit-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -moz-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -o-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -ms-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8); }
+
+/* line 685, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-menu-active,
+.x-btn-default-toolbar-large-pressed {
+  border-color: #002d71;
+  -moz-box-shadow: none;
+  -webkit-box-shadow: none;
+  -o-box-shadow: none;
+  box-shadow: none;
+  background-image: none;
+  background-color: #0e4dad;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #1b6eed), color-stop(3%, #1055c0), color-stop(100%, #0c459a));
+  background-image: -webkit-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: -moz-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: -o-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: -ms-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a); }
+  /* line 696, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-toolbar-large-menu-active .x-btn-inner,
+  .x-btn-default-toolbar-large-pressed .x-btn-inner {
+    color: white;
+    text-shadow: #0a387e 0 -1px 0; }
+
+/* line 715, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-menu-active {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 735, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-disabled {
+  background-image: none;
+  background-color: rgba(204, 229, 250, 0);
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(3%, rgba(223, 239, 252, 0)), color-stop(100%, rgba(186, 220, 248, 0)));
+  background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0));
+  background-image: -moz-linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0));
+  background-image: -o-linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0));
+  background-image: -ms-linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0));
+  background-image: linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0)); }
+  /* line 743, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-toolbar-large-disabled .x-btn-inner {
+    color: #136cb4 !important; }
+
+/* line 760, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie .x-btn-default-toolbar-large-disabled .x-btn-inner {
+  color: #a3d0f5 !important; }
+
+/* line 768, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-toolbar-large-disabled .x-btn-inner {
+  color: white !important; }
+
+/* line 783, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-over-corners.gif'); }
+/* line 787, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-over-sides.gif'); }
+/* line 790, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-mc {
+  background-color: #cce5fa;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-over-bg.gif'); }
+/* line 804, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-focus-corners.gif'); }
+/* line 808, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-focus-sides.gif'); }
+/* line 811, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-mc {
+  background-color: #cce5fa;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-focus-bg.gif'); }
+/* line 826, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-pressed-corners.gif'); }
+/* line 830, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-pressed-sides.gif'); }
+/* line 833, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mc {
+  background-color: #0e4dad;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-pressed-bg.gif'); }
+/* line 847, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-disabled-corners.gif'); }
+/* line 851, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-disabled-sides.gif'); }
+/* line 854, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mc {
+  background-color: rgba(204, 229, 250, 0);
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-disabled-bg.gif'); }
+
+/* line 876, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-large-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-over-bg.gif'); }
+
+/* line 885, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-large-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-focus-bg.gif'); }
+
+/* line 895, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-large-menu-active,
+.x-nlg .x-btn-default-toolbar-large-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-pressed-bg.gif'); }
+
+/* line 904, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-large-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-disabled-bg.gif'); }
+
+/* line 374, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-disabled,
+.x-btn-default-toolbar-medium-disabled,
+.x-btn-default-toolbar-large-disabled {
+  border-color: transparent;
+  background-image: none;
+  background: transparent; }
+
+/* line 2, ../themes/stylesheets/neptune/default/widgets/_btn-group.scss */
+.x-btn-group {
+  position: relative;
+  overflow: hidden; }
+
+/* line 7, ../themes/stylesheets/neptune/default/widgets/_btn-group.scss */
+.x-btn-group-header-body {
+  padding-bottom: 5px; }
+
+/* line 11, ../themes/stylesheets/neptune/default/widgets/_btn-group.scss */
+.x-btn-group-body {
+  position: relative; }
+  /* line 16, ../themes/stylesheets/neptune/default/widgets/_btn-group.scss */
+  .x-btn-group-body .x-table-layout-cell {
+    padding-right: 5px; }
+  /* line 20, ../themes/stylesheets/neptune/default/widgets/_btn-group.scss */
+  .x-btn-group-body .x-table-layout-cell {
+    vertical-align: top; }
+
+/* line 65, ../themes/stylesheets/neptune/default/widgets/_btn-group.scss */
+.x-btn-group-default-framed {
+  border-style: solid;
+  border-width: 0 1px 0 0;
+  border-color: #e2e3e5; }
+
+/* line 79, ../themes/stylesheets/neptune/default/widgets/_btn-group.scss */
+.x-btn-group-header-body-default-framed {
+  background: transparent;
+  -moz-border-radius-topleft: 2px;
+  -webkit-border-top-left-radius: 2px;
+  -o-border-top-left-radius: 2px;
+  -ms-border-top-left-radius: 2px;
+  -khtml-border-top-left-radius: 2px;
+  border-top-left-radius: 2px;
+  -moz-border-radius-topright: 2px;
+  -webkit-border-top-right-radius: 2px;
+  -o-border-top-right-radius: 2px;
+  -ms-border-top-right-radius: 2px;
+  -khtml-border-top-right-radius: 2px;
+  border-top-right-radius: 2px; }
+
+/* line 87, ../themes/stylesheets/neptune/default/widgets/_btn-group.scss */
+.x-btn-group-header-text-default-framed {
+  font: bold 12px "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: #333130; }
+
+/* line 2, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-datepicker {
+  border: 1px solid #dddddc;
+  background-color: white;
+  position: relative; }
+  /* line 8, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  .x-datepicker a {
+    color: black;
+    text-decoration: none;
+    border-width: 0; }
+
+/* line 20, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-datepicker-inner,
+.x-datepicker-inner td,
+.x-datepicker-inner th {
+  border-collapse: separate; }
+
+/* line 24, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-datepicker-header {
+  position: relative;
+  height: 26px;
+  background-color: #D8DDE3; }
+
+/* line 37, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-datepicker-prev,
+.x-datepicker-next {
+  position: absolute;
+  top: 5px;
+  width: 18px; }
+  /* line 43, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  .x-datepicker-prev a,
+  .x-datepicker-next a {
+    display: block;
+    width: 16px;
+    height: 16px;
+    background-position: top;
+    background-repeat: no-repeat;
+    cursor: pointer;
+    text-decoration: none !important;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+    opacity: 0.7; }
+    /* line 58, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+    .x-datepicker-prev a:hover,
+    .x-datepicker-next a:hover {
+      filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+      opacity: 1; }
+
+/* line 64, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-datepicker-next {
+  right: 5px; }
+  /* line 67, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  .x-datepicker-next a {
+    background-image: url('../../resources/themes/images/neptune/shared/right-btn.gif'); }
+
+/* line 72, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-datepicker-prev {
+  left: 5px; }
+  /* line 75, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  .x-datepicker-prev a {
+    background-image: url('../../resources/themes/images/neptune/shared/left-btn.gif'); }
+
+/* line 81, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-item-disabled .x-datepicker-prev a:hover,
+.x-item-disabled .x-datepicker-next a:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+
+/* line 85, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-datepicker-month {
+  padding-top: 3px; }
+  /* line 98, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  .x-datepicker-month .x-btn,
+  .x-datepicker-month button,
+  .x-datepicker-month .x-btn-tc,
+  .x-datepicker-month .x-btn-tl,
+  .x-datepicker-month .x-btn-tr,
+  .x-datepicker-month .x-btn-mc,
+  .x-datepicker-month .x-btn-ml,
+  .x-datepicker-month .x-btn-mr,
+  .x-datepicker-month .x-btn-bc,
+  .x-datepicker-month .x-btn-bl,
+  .x-datepicker-month .x-btn-br {
+    background: transparent !important;
+    border-width: 0 !important; }
+  /* line 103, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  .x-datepicker-month span {
+    color: #2669B4 !important;
+    text-shadow: 0 0 0 !important;
+    font-weight: normal !important; }
+  /* line 109, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  .x-datepicker-month .x-btn-split-right {
+    background-image: url('../../resources/themes/images/neptune/button/s-arrow-light.gif');
+    padding-right: 12px; }
+
+/* line 115, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-datepicker-next {
+  text-align: right; }
+
+/* line 119, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-datepicker-month {
+  text-align: center; }
+  /* line 123, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  .x-datepicker-month button {
+    color: #2669B4 !important; }
+
+/* line 129, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+table.x-datepicker-inner {
+  width: 100%;
+  table-layout: fixed; }
+  /* line 133, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner th {
+    width: 25px;
+    height: 19px;
+    padding: 0;
+    color: black;
+    font: normal 10px "Helvetica Neue", Arial, Verdana, sans-serif;
+    font-weight: bold;
+    text-align: right;
+    border-collapse: separate;
+    cursor: default; }
+    /* line 155, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+    table.x-datepicker-inner th span {
+      display: block;
+      padding-right: 7px; }
+  /* line 161, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner tr {
+    height: 20px; }
+  /* line 165, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner td {
+    height: 19px;
+    text-align: right;
+    padding: 0; }
+  /* line 173, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner a {
+    padding: 3px 5px 3px 3px;
+    display: block;
+    font: normal 12px "Helvetica Neue", Arial, Verdana, sans-serif;
+    color: #666567;
+    text-decoration: none;
+    text-align: right; }
+  /* line 183, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-active {
+    cursor: pointer;
+    color: black; }
+  /* line 189, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner a:hover,
+  table.x-datepicker-inner .x-datepicker-disabled a:hover {
+    text-decoration: none !important;
+    background: #F2FAFF; }
+  /* line 196, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-selected a {
+    color: #fff;
+    background-color: #0E56B0;
+    -moz-border-radius: 4px;
+    -webkit-border-radius: 4px;
+    -o-border-radius: 4px;
+    -ms-border-radius: 4px;
+    -khtml-border-radius: 4px;
+    border-radius: 4px; }
+  /* line 208, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-today a {
+    color: #28A02A;
+    position: relative;
+    top: -1px; }
+    /* line 218, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+    table.x-datepicker-inner .x-datepicker-today a:hover {
+      background: #28A02A;
+      color: #fff;
+      -moz-border-radius: 4px;
+      -webkit-border-radius: 4px;
+      -o-border-radius: 4px;
+      -ms-border-radius: 4px;
+      -khtml-border-radius: 4px;
+      border-radius: 4px; }
+  /* line 225, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-today.x-datepicker-selected a {
+    background: #28A02A;
+    color: #fff;
+    -moz-border-radius: 4px;
+    -webkit-border-radius: 4px;
+    -o-border-radius: 4px;
+    -ms-border-radius: 4px;
+    -khtml-border-radius: 4px;
+    border-radius: 4px; }
+  /* line 231, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-today span {
+    font-weight: bold; }
+  /* line 238, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-prevday a,
+  table.x-datepicker-inner .x-datepicker-nextday a {
+    text-decoration: none !important;
+    color: #aaa; }
+  /* line 244, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-disabled a {
+    cursor: default;
+    background-color: #eee;
+    color: #bbb; }
+
+/* line 252, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-datepicker-footer,
+.x-monthpicker-buttons {
+  position: relative;
+  text-align: center; }
+  /* line 265, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  .x-datepicker-footer .x-btn,
+  .x-monthpicker-buttons .x-btn {
+    position: relative;
+    margin: 4px; }
+
+/* line 271, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-item-disabled .x-datepicker-inner a:hover {
+  background: none; }
+
+/* line 276, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-datepicker .x-monthpicker {
+  position: absolute;
+  left: 0;
+  top: 0; }
+
+/* line 283, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker {
+  border: 1px solid #dddddc;
+  background-color: white; }
+
+/* line 289, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker-months,
+.x-monthpicker-years {
+  float: left;
+  height: 167px;
+  width: 88px; }
+
+/* line 296, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker-item {
+  float: left;
+  margin: 4px 0 5px 0;
+  font: normal 11px "Helvetica Neue", Arial, Verdana, sans-serif;
+  text-align: center;
+  vertical-align: middle;
+  height: 18px;
+  width: 43px;
+  border: 0 none; }
+  /* line 310, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  .x-monthpicker-item a {
+    display: block;
+    margin: 0 5px 0 5px;
+    text-decoration: none;
+    color: black;
+    border: 1px solid white;
+    line-height: 17px; }
+    /* line 323, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+    .x-monthpicker-item a:hover {
+      background-color: #1398ff; }
+    /* line 327, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+    .x-monthpicker-item a.x-monthpicker-selected {
+      background-color: #129aff;
+      border: 1px solid #0c599b; }
+
+/* line 334, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker-months {
+  border-right: 1px solid #dddddc;
+  width: 87px; }
+
+/* line 339, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker-years .x-monthpicker-item {
+  width: 44px; }
+
+/* line 343, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav {
+  height: 28px; }
+  /* line 346, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  .x-monthpicker-yearnav button {
+    background-image: url('../../resources/themes/images/neptune/tools/tool-sprites.gif');
+    height: 15px;
+    width: 15px;
+    padding: 0;
+    margin: 6px 12px 5px 15px;
+    border: 0; }
+    /* line 354, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+    .x-monthpicker-yearnav button::-moz-focus-inner {
+      border: 0;
+      padding: 0; }
+
+/* line 361, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-next {
+  background-position: 0 -120px; }
+
+/* line 365, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-next-over {
+  cursor: pointer;
+  cursor: hand;
+  background-position: -15px -120px; }
+
+/* line 371, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-prev {
+  background-position: 0 -105px; }
+
+/* line 375, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-prev-over {
+  cursor: pointer;
+  cursor: hand;
+  background-position: -15px -105px; }
+
+/* line 382, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker-small .x-monthpicker-item {
+  margin: 2px 0 2px 0; }
+/* line 386, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker-small .x-monthpicker-yearnav {
+  height: 23px; }
+/* line 390, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker-small .x-monthpicker-months, .x-monthpicker-small .x-monthpicker-years {
+  height: 136px; }
+
+/* line 400, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-quirks .x-ie7 .x-monthpicker-buttons .x-btn,
+.x-quirks .x-ie8 .x-monthpicker-buttons .x-btn {
+  margin-top: 2px; }
+/* line 406, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-quirks .x-monthpicker-small .x-monthpicker-yearnav button {
+  margin-top: 3px;
+  margin-bottom: 3px; }
+
+/* line 412, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-ie6 .x-monthpicker-small .x-monthpicker-yearnav button {
+  margin-top: 3px;
+  margin-bottom: 3px; }
+
+/* line 422, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-nlg .x-datepicker-header {
+  background-image: url('../../resources/themes/images/neptune/datepicker/datepicker-header-bg.gif');
+  background-repeat: repeat-x;
+  background-position: top left; }
+/* line 431, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-nlg .x-datepicker-footer,
+.x-nlg .x-monthpicker-buttons {
+  background-image: url('../../resources/themes/images/neptune/datepicker/datepicker-footer-bg.gif');
+  background-repeat: repeat-x;
+  background-position: top left; }
+
+/* line 4, ../themes/stylesheets/neptune/default/widgets/_colorpicker.scss */
+.x-color-picker {
+  width: 144px;
+  height: 90px; }
+
+/* line 10, ../themes/stylesheets/neptune/default/widgets/_colorpicker.scss */
+.x-color-picker a {
+  border: 1px solid #fff;
+  float: left;
+  padding: 2px;
+  text-decoration: none; }
+
+/* line 19, ../themes/stylesheets/neptune/default/widgets/_colorpicker.scss */
+.x-color-picker a:hover,
+.x-color-picker a.x-color-picker-selected {
+  border-color: #8bb8f3;
+  background-color: #deecfd; }
+
+/* line 24, ../themes/stylesheets/neptune/default/widgets/_colorpicker.scss */
+.x-color-picker em {
+  display: block;
+  border: 1px solid #aca899; }
+
+/* line 29, ../themes/stylesheets/neptune/default/widgets/_colorpicker.scss */
+.x-color-picker em span {
+  display: block;
+  height: 10px;
+  width: 10px;
+  line-height: 10px; }
+
+/* line 7, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu {
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  background: white !important; }
+
+/* line 27, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item .x-form-text {
+  user-select: text;
+  -webkit-user-select: text;
+  -o-user-select: text;
+  -ie-user-select: text;
+  -moz-user-select: text;
+  -ie-user-select: text; }
+
+/* line 36, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-icon-separator {
+  position: absolute;
+  top: 0px;
+  left: 0;
+  z-index: 0;
+  width: 2px;
+  height: 100%!important;
+  overflow: hidden; }
+
+/* line 49, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-plain .x-menu-icon-separator {
+  display: none; }
+
+/* line 54, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-focus {
+  display: block;
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px; }
+
+/* line 63, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item {
+  white-space: nowrap;
+  overflow: hidden;
+  z-index: 1; }
+  /* line 74, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+  .x-menu-item:last-child .x-menu-item-link {
+    -moz-border-radius-bottomleft: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -o-border-bottom-left-radius: 4px;
+    -ms-border-bottom-left-radius: 4px;
+    -khtml-border-bottom-left-radius: 4px;
+    border-bottom-left-radius: 4px;
+    -moz-border-radius-bottomright: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -o-border-bottom-right-radius: 4px;
+    -ms-border-bottom-right-radius: 4px;
+    -khtml-border-bottom-right-radius: 4px;
+    border-bottom-right-radius: 4px; }
+
+/* line 80, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item-cmp {
+  margin-bottom: 1px; }
+
+/* line 84, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item-link {
+  display: block;
+  padding: 3px 30px 3px 8px;
+  text-decoration: none !important;
+  line-height: 16px;
+  cursor: default; }
+
+/* line 97, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-opera .x-menu-item-link {
+  position: relative; }
+
+/* line 103, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item-icon {
+  width: 16px;
+  height: 16px;
+  position: absolute;
+  top: 5px;
+  left: 4px;
+  background: no-repeat center center; }
+
+/* line 112, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item-text {
+  font-size: 11px;
+  color: #0e4dad;
+  font-weight: bold; }
+
+/* line 119, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item-checked .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/neptune/menu/checked.gif'); }
+/* line 122, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item-checked .x-menu-group-icon {
+  background-image: url('../../resources/themes/images/neptune/menu/group-checked.gif'); }
+
+/* line 128, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item-unchecked .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/neptune/menu/unchecked.gif'); }
+/* line 131, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item-unchecked .x-menu-group-icon {
+  background-image: none; }
+
+/* line 136, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item-separator {
+  height: 2px;
+  background-color: transparent;
+  overflow: hidden; }
+
+/* line 144, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item-arrow {
+  position: absolute;
+  width: 12px;
+  height: 9px;
+  top: 9px;
+  right: 0px;
+  background: no-repeat center center;
+  background-image: url('../../resources/themes/images/neptune/menu/menu-parent.gif'); }
+
+/* line 158, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item-active {
+  cursor: pointer; }
+  /* line 161, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+  .x-menu-item-active .x-menu-item-link {
+    background: #a6ddff;
+    margin: 0px;
+    cursor: pointer; }
+  /* line 173, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+  .x-menu-item-active .x-menu-item-text {
+    color: null; }
+
+/* line 178, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+
+/* line 185, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+/* line 189, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-text {
+  background-color: transparent; }
+/* line 196, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-strict .x-ie7m .x-ie .x-menu-icon-separator {
+  width: 1px; }
+/* line 200, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-strict .x-ie7m .x-ie .x-menu-item-separator {
+  height: 1px; }
+
+/* line 209, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-ie6 .x-menu-item-link,
+.x-ie7 .x-menu-item-link,
+.x-quirks .x-ie8 .x-menu-item-link {
+  padding-bottom: 0; }
+
+/* line 217, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-nlg .x-menu-item-active .x-menu-item-link {
+  background: #a6ddff repeat-x left top;
+  background-image: url('../../resources/themes/images/neptune/menu/menu-item-active-bg.gif'); }
+
+/* line 224, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-date-item {
+  border-color: #99BBE8; }
+
+/* line 4, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-panel .x-grid-body {
+  background: white;
+  border-bottom: 2px solid #D7DCE0; }
+/* line 15, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-panel .x-grid-header-ct-hidden {
+  visibility: hidden; }
+
+/* line 24, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-view {
+  overflow: hidden;
+  position: relative; }
+
+/* line 29, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-table {
+  table-layout: fixed;
+  border-collapse: separate; }
+
+/* line 36, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-autowidth-table table.x-grid-table {
+  table-layout: auto;
+  width: auto !important; }
+
+/* line 41, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row .x-grid-table {
+  border-collapse: collapse; }
+
+/* line 45, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-locked .x-grid-inner-locked {
+  border-width: 0 1px 0 0 !important;
+  border-style: solid; }
+
+/* line 51, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-header-ct {
+  border-bottom-color: white;
+  background-image: none;
+  background-color: white;
+  border-bottom: 2px solid #D7DCE0 !important; }
+
+/* line 69, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-panel .x-grid-header-ct {
+  border-bottom-width: 2px; }
+
+/* line 74, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-accordion-item .x-grid-header-ct {
+  border-width: 0 0 1px 0!important; }
+
+/* line 78, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-column-header {
+  padding: 0;
+  position: absolute;
+  overflow: hidden;
+  -webkit-border-image: url('../../resources/themes/images/neptune/grid/header-border.png') 1 1 1 1 stretch stretch;
+  border-right: 1px solid #eaeaea;
+  border-left: 0 none;
+  border-top: 0 none;
+  border-bottom: 0 none;
+  color: #606060;
+  font: normal 11px "Helvetica Neue", Arial, Verdana, sans-serif;
+  background-image: none;
+  background-color: white; }
+
+/* line 103, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-group-header {
+  padding: 0;
+  border-left-width: 0; }
+
+/* line 107, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-group-sub-header {
+  background: transparent;
+  -webkit-border-image: none;
+  border-top: 1px solid #eaeaea;
+  border-left-width: 0; }
+
+/* line 114, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-column-header-inner {
+  position: relative;
+  white-space: nowrap;
+  line-height: 22px;
+  padding: 4px 6px; }
+  /* line 121, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-column-header-inner .x-column-header-text {
+    white-space: nowrap; }
+
+/* line 126, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-column-header-sortable {
+  color: #0e4dad; }
+
+/* line 147, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-column-header-trigger {
+  display: none;
+  height: 100%;
+  width: 14px;
+  background: no-repeat left center;
+  position: absolute;
+  right: 0;
+  top: 0;
+  z-index: 2;
+  cursor: pointer; }
+
+/* line 165, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-column-header-over .x-column-header-trigger, .x-column-header-open .x-column-header-trigger {
+  display: block; }
+
+/* line 170, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-column-header-align-right {
+  text-align: right; }
+  /* line 173, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-column-header-align-right .x-column-header-text {
+    padding-right: 0.5ex;
+    margin-right: 6px; }
+
+/* line 178, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-column-header-align-center {
+  text-align: center; }
+
+/* line 181, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-column-header-align-left {
+  text-align: left; }
+
+/* line 186, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-column-header-sort-ASC .x-column-header-text {
+  padding-right: 16px;
+  background: no-repeat top right;
+  background-position-y: 1px;
+  background-image: url('../../resources/themes/images/neptune/grid/sort.png'); }
+
+/* line 192, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-column-header-sort-DESC .x-column-header-text {
+  padding-right: 16px;
+  background: no-repeat top right;
+  background-position-y: -47px;
+  background-image: url('../../resources/themes/images/neptune/grid/sort.png'); }
+
+/* line 200, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row {
+  height: 24px;
+  vertical-align: top;
+  padding: 0 1px 0 2px;
+  font: normal 11px "Helvetica Neue", Arial, Verdana, sans-serif;
+  background-color: white;
+  border-color: #f1f2f4;
+  border-style: solid;
+  border-width: 0; }
+  /* line 209, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-grid-row .x-grid-cell {
+    color: #22262a;
+    font: normal 11px "Helvetica Neue", Arial, Verdana, sans-serif;
+    background-color: white;
+    border-color: #f1f2f4;
+    border-style: solid;
+    border-width: 0; }
+
+/* line 228, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-grid-cell {
+  border-width: 0; }
+
+/* line 232, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-rowwrap-div {
+  border-width: 0;
+  border-color: #f1f2f4;
+  border-style: solid;
+  border-top-color: white;
+  overflow: hidden; }
+
+/* line 242, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-alt .x-grid-cell,
+.x-grid-row-alt .x-grid-rowwrap-div {
+  background-color: #f7f7f8; }
+
+/* line 247, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-over .x-grid-cell,
+.x-grid-row-over .x-grid-rowwrap-div {
+  border-color: transparent;
+  background-color: #a6ddff;
+  color: black; }
+  /* line 252, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-grid-row-over .x-grid-cell .x-grid-cell,
+  .x-grid-row-over .x-grid-rowwrap-div .x-grid-cell {
+    color: black; }
+
+/* line 258, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-focused .x-grid-cell,
+.x-grid-row-focused .x-grid-rowwrap-div {
+  border-color: #cdd2d7;
+  color: #0a0b0c;
+  background-color: #e1e4e7; }
+
+/* line 265, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-selected .x-grid-cell,
+.x-grid-row-selected .x-grid-rowwrap-div {
+  border-style: solid;
+  border-color: #188ae5;
+  color: white;
+  background-color: #0e4dad !important;
+  text-shadow: #0a387e 0 -1px 0; }
+
+/* line 275, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-rowwrap-div .x-grid-cell,
+.x-grid-rowwrap-div .x-grid-cell-inner {
+  border-width: 0;
+  background: transparent; }
+
+/* line 282, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-body-hidden {
+  display: none; }
+
+/* line 286, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-rowbody {
+  font: normal 11px "Helvetica Neue", Arial, Verdana, sans-serif;
+  padding: 4px; }
+  /* line 289, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-grid-rowbody p {
+    margin: 5px 5px 10px 5px; }
+
+/* line 295, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-cell {
+  overflow: hidden;
+  font: normal 11px "Helvetica Neue", Arial, Verdana, sans-serif; }
+
+/* line 301, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-cell-inner {
+  padding: 6px 8px; }
+
+/* line 307, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-grid-cell-inner {
+  line-height: 13px;
+  padding-bottom: 4px; }
+
+/* line 313, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-action-col-cell .x-grid-cell-inner {
+  line-height: 0;
+  padding: 2px; }
+
+/* line 318, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-action-col-cell .x-grid-cell-inner {
+  padding-top: 1px; }
+
+/* line 322, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row .x-grid-cell-special {
+  padding: 0;
+  border-right: 1px solid #e0e3e6; }
+
+/*
+    IE6-8 have issues with shrinking the TR to 0px (even w/line-height=0), so we
+    use an IE-specific trick to make the row disappear. We cannot do this on any
+    other browser, because it is not a non-standard thing to do and those other
+    browsers will do whacky things with it.
+*/
+/* line 338, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-ie6 .x-grid-header-row,
+.x-ie7 .x-grid-header-row,
+.x-quirks .x-ie8 .x-grid-header-row {
+  position: absolute; }
+
+/* line 343, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-over .x-grid-cell-special {
+  border-right: 1px solid #e0e3e6;
+  background-image: none;
+  background-color: #a6ddff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f3faff), color-stop(3%, #bae5ff), color-stop(100%, #92d5ff));
+  background-image: -webkit-linear-gradient(top, #f3faff, #bae5ff 3%, #92d5ff);
+  background-image: -moz-linear-gradient(top, #f3faff, #bae5ff 3%, #92d5ff);
+  background-image: -o-linear-gradient(top, #f3faff, #bae5ff 3%, #92d5ff);
+  background-image: -ms-linear-gradient(top, #f3faff, #bae5ff 3%, #92d5ff);
+  background-image: linear-gradient(top, #f3faff, #bae5ff 3%, #92d5ff); }
+
+/* line 348, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-selected .x-grid-cell-special {
+  border-right: 1px solid #0078d7;
+  background-image: none;
+  background-color: #0e4dad;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #1b6eed), color-stop(3%, #1055c0), color-stop(100%, #0c459a));
+  background-image: -webkit-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: -moz-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: -o-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: -ms-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a); }
+
+/* line 354, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-dirty-cell {
+  background-image: url('../../resources/themes/images/neptune/grid/dirty.gif');
+  background-position: 0 0;
+  background-repeat: no-repeat; }
+
+/* line 366, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-nlg .x-grid-cell-special {
+  background-repeat: repeat-y;
+  background-position: top right; }
+/* line 372, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-nlg .x-grid-row .x-grid-cell-special,
+.x-nlg .x-grid-row-over .x-grid-cell-special {
+  background-image: url('../../resources/themes/images/neptune/grid/cell-special-bg.gif'); }
+/* line 378, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-nlg .x-grid-row-focused .x-grid-cell-special,
+.x-nlg .x-grid-row-selected .x-grid-cell-special {
+  background-image: url('../../resources/themes/images/neptune/grid/cell-special-selected-bg.gif'); }
+
+/* line 384, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-with-col-lines .x-grid-cell {
+  padding-right: 0;
+  border-right: 1px solid #e0e3e6; }
+
+/* line 391, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,
+.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner {
+  padding-left: 12px;
+  background-image: url('../../resources/themes/images/neptune/grid/property-cell-bg.gif');
+  background-repeat: no-repeat;
+  background-position: -16px 2px; }
+
+/* line 401, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-with-row-lines.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,
+.x-grid-with-row-lines.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner {
+  background-position: -16px 1px; }
+
+/* line 407, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-quirks .x-ie .x-grid-row .x-grid-property-name .x-grid-cell-inner {
+  background-position: -16px 2px; }
+
+/* line 427, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-view .x-grid-td-expander {
+  vertical-align: top; }
+
+/* line 432, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-td-expander {
+  background: repeat-y right transparent; }
+
+/* line 438, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-view .x-grid-td-expander .x-grid-cell-inner {
+  padding: 0 !important; }
+
+/* line 444, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-expander {
+  background-image: url('../../resources/themes/images/neptune/grid/group-collapse.gif');
+  background-color: transparent;
+  width: 9px;
+  height: 13px;
+  margin-left: 3px;
+  background-repeat: no-repeat;
+  background-position: 0 -2px; }
+
+/* line 455, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-collapsed .x-grid-row-expander {
+  background-image: url('../../resources/themes/images/neptune/grid/group-expand.gif'); }
+
+/* line 460, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-resize-marker {
+  position: absolute;
+  z-index: 5;
+  top: 0;
+  width: 1px;
+  background-color: #0f0f0f; }
+
+/* line 470, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.col-move-top,
+.col-move-bottom {
+  width: 9px;
+  height: 9px;
+  position: absolute;
+  top: 0;
+  line-height: 0;
+  font-size: 0;
+  overflow: hidden;
+  z-index: 20000;
+  background: no-repeat left top transparent; }
+
+/* line 482, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.col-move-top {
+  background-image: url('../../resources/themes/images/neptune/grid/col-move-top.gif'); }
+
+/* line 486, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.col-move-bottom {
+  background-image: url('../../resources/themes/images/neptune/grid/col-move-bottom.gif'); }
+
+/* line 491, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-tbar-page-number {
+  width: 30px; }
+
+/* line 502, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-group-hd {
+  height: 24px; }
+  /* line 506, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-grid-group-hd .x-grid-cell-inner {
+    background: #e0e3e6;
+    cursor: pointer;
+    padding: 4px 8px 6px 8px; }
+
+/* line 519, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-group-title {
+  color: #090a0b;
+  font: bold 12px "Helvetica Neue", Arial, Verdana, sans-serif; }
+
+/* line 533, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-group-collapsed .x-grid-group-body {
+  display: none; }
+
+/* line 537, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-group-collapsed .x-grid-group-title {
+  background-image: url('../../resources/themes/images/neptune/grid/group-expand.gif'); }
+
+/* line 541, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-group-by-icon {
+  background-image: url('../../resources/themes/images/neptune/grid/group-by.gif'); }
+
+/* line 545, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-show-groups-icon {
+  background-image: url('../../resources/themes/images/neptune/grid/group-by.gif'); }
+
+/* line 549, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-column-header-checkbox .x-column-header-inner {
+  padding: 0; }
+
+/* line 553, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-cell-special .x-grid-cell-inner {
+  padding-left: 4px;
+  padding-right: 4px; }
+
+/* line 559, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-checker,
+.x-column-header-checkbox .x-column-header-text {
+  height: 14px;
+  width: 14px;
+  line-height: 0;
+  background-image: url('../../resources/themes/images/neptune/grid/unchecked.gif');
+  background-position: -1px -1px;
+  background-repeat: no-repeat;
+  background-color: transparent; }
+
+/* line 571, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-column-header-checkbox .x-column-header-text {
+  display: block;
+  margin: 4px 5px; }
+
+/* IE6, IE7, and all IE Quirks mode need line-height to be the same as checkbox height or the header/row height will be too tall */
+/* line 580, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-quirks .x-ie .x-grid-row-checker,
+.x-quirks .x-ie .x-column-header-checkbox .x-column-header-text, .x-ie7m .x-grid-row-checker, .x-ie7m .x-column-header-checkbox .x-column-header-text {
+  line-height: 14px; }
+
+/* line 586, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-hd-checker-on .x-column-header-text {
+  background-image: url('../../resources/themes/images/neptune/grid/checked.gif'); }
+
+/* line 590, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-cell-row-checker .x-grid-cell-inner {
+  padding-top: 4px;
+  padding-bottom: 2px;
+  line-height: 18px; }
+
+/* line 595, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-grid-cell-row-checker .x-grid-cell-inner {
+  padding-top: 3px; }
+
+/* line 598, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-checker {
+  margin-left: 1px;
+  background-position: 50% -2px; }
+
+/* line 605, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-selected .x-grid-row-checker,
+.x-grid-row-checked .x-grid-row-checker {
+  background-image: url('../../resources/themes/images/neptune/grid/checked.gif'); }
+
+/* line 610, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-tbar-page-first {
+  background-image: url('../../resources/themes/images/neptune/grid/page-first.gif') !important; }
+
+/* line 614, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-tbar-loading {
+  background-image: url('../../resources/themes/images/neptune/grid/refresh.gif') !important; }
+
+/* line 618, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-tbar-page-last {
+  background-image: url('../../resources/themes/images/neptune/grid/page-last.gif') !important; }
+
+/* line 622, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-tbar-page-next {
+  background-image: url('../../resources/themes/images/neptune/grid/page-next.gif') !important; }
+
+/* line 626, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-tbar-page-prev {
+  background-image: url('../../resources/themes/images/neptune/grid/page-prev.gif') !important; }
+
+/* line 631, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-loading {
+  background-image: url('../../resources/themes/images/neptune/grid/refresh-disabled.gif') !important; }
+/* line 635, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-first {
+  background-image: url('../../resources/themes/images/neptune/grid/page-first-disabled.gif') !important; }
+/* line 639, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-last {
+  background-image: url('../../resources/themes/images/neptune/grid/page-last-disabled.gif') !important; }
+/* line 643, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-next {
+  background-image: url('../../resources/themes/images/neptune/grid/page-next-disabled.gif') !important; }
+/* line 647, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-prev {
+  background-image: url('../../resources/themes/images/neptune/grid/page-prev-disabled.gif') !important; }
+
+/* line 653, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-hmenu-sort-asc .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/neptune/grid/hmenu-asc.gif'); }
+
+/* line 657, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-hmenu-sort-desc .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/neptune/grid/hmenu-desc.gif'); }
+
+/* line 661, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-hmenu-lock .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/neptune/grid/hmenu-lock.gif'); }
+
+/* line 665, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-hmenu-unlock .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/neptune/grid/hmenu-unlock.gif'); }
+
+/* line 669, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-group-by-icon {
+  background-image: url('../../resources/themes/images/neptune/grid/group-by.gif'); }
+
+/* line 673, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-cols-icon .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/neptune/grid/columns.gif'); }
+
+/* line 677, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-show-groups-icon {
+  background-image: url('../../resources/themes/images/neptune/grid/group-by.gif'); }
+
+/* line 682, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-drop-indicator {
+  position: absolute;
+  height: 1px;
+  line-height: 0px;
+  background-color: #77BC71;
+  overflow: visible; }
+  /* line 689, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-grid-drop-indicator .x-grid-drop-indicator-left {
+    position: absolute;
+    top: -8px;
+    left: -12px;
+    background-image: url('../../resources/themes/images/neptune/grid/dd-insert-arrow-right.png');
+    height: 16px;
+    width: 16px; }
+  /* line 698, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-grid-drop-indicator .x-grid-drop-indicator-right {
+    position: absolute;
+    top: -8px;
+    right: -11px;
+    background-image: url('../../resources/themes/images/neptune/grid/dd-insert-arrow-left.png');
+    height: 16px;
+    width: 16px; }
+
+/* line 709, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-ie6 .x-grid-drop-indicator-left {
+  background-image: url('../../resources/themes/images/neptune/grid/dd-insert-arrow-right.gif'); }
+/* line 713, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-ie6 .x-grid-drop-indicator-right {
+  background-image: url('../../resources/themes/images/neptune/grid/dd-insert-arrow-left.gif'); }
+
+/* line 721, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-editor .x-form-text {
+  padding: 0 4px; }
+/* line 724, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-editor .x-form-cb-wrap {
+  padding-top: 3px; }
+
+/* line 730, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-editor {
+  position: absolute !important;
+  z-index: 1;
+  overflow: visible !important; }
+  /* line 736, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-text {
+    padding: 0 2px; }
+  /* line 739, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-cb-wrap {
+    padding-top: 2px; }
+  /* line 742, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-display-field {
+    font: normal 11px/19px "Helvetica Neue", Arial, Verdana, sans-serif;
+    padding-top: 0;
+    padding-left: 2px; }
+  /* line 748, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-panel-body {
+    background-color: #2696f6;
+    border-top: 1px solid #167cce !important;
+    border-bottom: 1px solid #167cce !important; }
+
+/* line 758, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-editor .x-form-cb-wrap, .x-grid-row-editor .x-form-cb-wrap {
+  text-align: center; }
+/* line 761, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-editor .x-form-trigger, .x-grid-row-editor .x-form-trigger {
+  height: 24px; }
+/* line 765, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-editor .x-form-trigger-wrap .x-form-spinner-up, .x-grid-editor .x-form-trigger-wrap .x-form-spinner-down, .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-up, .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url('../../resources/themes/images/neptune/form/spinner-small.gif');
+  height: 10px !important; }
+
+/* line 773, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid .x-grid-editor .x-form-text, .x-grid .x-grid-row-editor .x-form-text {
+  font: normal 11px/19px "Helvetica Neue", Arial, Verdana, sans-serif;
+  height: 22px; }
+
+/* line 781, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-border-box .x-grid-editor .x-form-trigger,
+.x-border-box .x-grid-row-editor .x-form-trigger {
+  height: 24px; }
+/* line 784, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-border-box .x-grid-editor .x-form-text,
+.x-border-box .x-grid-row-editor .x-form-text {
+  height: 24px;
+  padding-bottom: 1px; }
+
+/* line 792, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-ie .x-grid-editor .x-form-text {
+  padding-left: 5px; }
+/* line 795, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-ie .x-grid-row-editor .x-form-text {
+  padding-left: 3px; }
+
+/* line 801, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-ie8m .x-grid-editor .x-form-text,
+.x-ie8m .x-grid-row-editor .x-form-text {
+  padding-top: 1px; }
+
+/* line 808, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-ie6 .x-grid-editor .x-form-text,
+.x-ie6 .x-grid-row-editor .x-form-text,
+.x-strict .x-ie7 .x-grid-editor .x-form-text,
+.x-strict .x-ie7 .x-grid-row-editor .x-form-text {
+  height: 21px; }
+
+/* line 814, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-quirks .x-ie9 .x-grid-editor .x-form-text, .x-quirks .x-ie9 .x-grid-row-editor .x-form-text {
+  line-height: 21px; }
+
+/* line 823, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-opera .x-grid-editor .x-form-text {
+  padding-left: 5px; }
+/* line 826, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-opera .x-grid-row-editor .x-form-text {
+  padding-left: 3px; }
+
+/* line 837, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons {
+  background-color: #2696f6;
+  position: absolute;
+  bottom: -31px;
+  padding: 4px;
+  height: 32px; }
+  /* line 844, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-strict .x-ie7m .x-grid-row-editor-buttons {
+    width: 192px;
+    height: 24px; }
+
+/* line 854, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-ml,
+.x-grid-row-editor-buttons-mr,
+.x-grid-row-editor-buttons-bl,
+.x-grid-row-editor-buttons-br,
+.x-grid-row-editor-buttons-bc {
+  position: absolute;
+  overflow: hidden; }
+
+/* line 860, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-bl,
+.x-grid-row-editor-buttons-br {
+  width: 4px;
+  height: 4px;
+  bottom: 0px;
+  background-image: url('../../resources/themes/images/neptune/panel/panel-default-framed-corners.gif'); }
+
+/* line 866, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-bl {
+  left: 0px;
+  background-position: 0px -16px; }
+
+/* line 870, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-br {
+  right: 0px;
+  background-position: 0px -20px; }
+
+/* line 874, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-bc {
+  position: absolute;
+  left: 4px;
+  bottom: 0px;
+  width: 192px;
+  height: 1px;
+  background-color: #167cce; }
+
+/* line 883, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-ml,
+.x-grid-row-editor-buttons-mr {
+  height: 27px;
+  width: 1px;
+  top: 1px;
+  background-color: #167cce; }
+
+/* line 889, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-ml {
+  left: 0px; }
+
+/* line 892, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-mr {
+  background-position: 0px -20px;
+  right: 0px; }
+
+/* line 898, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-editor-errors ul {
+  margin-left: 5px; }
+/* line 901, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-editor-errors li {
+  list-style: disc;
+  margin-left: 15px; }
+
+/* line 11, ../themes/stylesheets/neptune/default/widgets/form/_all.scss */
+.x-form-item {
+  vertical-align: top;
+  margin-bottom: 5px;
+  table-layout: fixed; }
+
+/* line 18, ../themes/stylesheets/neptune/default/widgets/form/_all.scss */
+td.x-form-item-pad {
+  height: 5px; }
+
+/* line 23, ../themes/stylesheets/neptune/default/widgets/form/_all.scss */
+.x-editor .x-form-item-body {
+  padding-bottom: 0; }
+
+/* line 27, ../themes/stylesheets/neptune/default/widgets/form/_all.scss */
+.x-form-item-label {
+  display: block;
+  padding: 3px 5px 0 0;
+  font-size: 12px; }
+
+/* line 34, ../themes/stylesheets/neptune/default/widgets/form/_all.scss */
+.x-form-item-label-left {
+  text-align: right; }
+
+/* line 38, ../themes/stylesheets/neptune/default/widgets/form/_all.scss */
+.x-form-item-label-top {
+  padding: 0; }
+
+/* line 42, ../themes/stylesheets/neptune/default/widgets/form/_all.scss */
+.x-form-item-label-right {
+  text-align: right; }
+
+/* line 46, ../themes/stylesheets/neptune/default/widgets/form/_all.scss */
+.x-form-invalid-under {
+  padding: 2px 2px 2px 20px;
+  color: #a61120;
+  font: normal 11px "Helvetica Neue", Arial, Verdana, sans-serif;
+  line-height: 16px;
+  background: no-repeat 0 2px;
+  background-image: url('../../resources/themes/images/neptune/invalid.gif'); }
+
+/* line 57, ../themes/stylesheets/neptune/default/widgets/form/_all.scss */
+.x-external-error-icon {
+  position: absolute;
+  right: 19px;
+  height: 23px; }
+
+/* line 63, ../themes/stylesheets/neptune/default/widgets/form/_all.scss */
+.x-form-invalid-icon {
+  position: relative;
+  width: 23px;
+  overflow: hidden; }
+  /* line 67, ../themes/stylesheets/neptune/default/widgets/form/_all.scss */
+  .x-form-invalid-icon ul {
+    -moz-background-clip: text;
+    -webkit-background-clip: text;
+    -o-background-clip: text;
+    -ms-background-clip: text;
+    -khtml-background-clip: text;
+    background-clip: text;
+    overflow: visible;
+    text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+    position: relative;
+    height: 21px;
+    line-height: 21px;
+    display: block;
+    margin-left: 3px;
+    width: 20px; }
+    /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+    .x-form-invalid-icon ul:after, .x-form-invalid-icon ul:before {
+      font-size: 21px;
+      content: "!";
+      background-image: none;
+      background-color: #fc0d1b;
+      background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fd5962), color-stop(3%, #fc212e), color-stop(100%, #f20311));
+      background-image: -webkit-linear-gradient(top, #fd5962, #fc212e 3%, #f20311);
+      background-image: -moz-linear-gradient(top, #fd5962, #fc212e 3%, #f20311);
+      background-image: -o-linear-gradient(top, #fd5962, #fc212e 3%, #f20311);
+      background-image: -ms-linear-gradient(top, #fd5962, #fc212e 3%, #f20311);
+      background-image: linear-gradient(top, #fd5962, #fc212e 3%, #f20311); }
+    /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+    .x-form-invalid-icon ul:before {
+      -moz-background-clip: padding;
+      -webkit-background-clip: padding;
+      -o-background-clip: padding-box;
+      -ms-background-clip: padding-box;
+      -khtml-background-clip: padding-box;
+      background-clip: padding-box;
+      background: none; }
+    /* line 72, ../themes/stylesheets/neptune/default/widgets/form/_all.scss */
+    .x-form-invalid-icon ul li {
+      /* prevent inner elements from interfering with QuickTip hovering */
+      display: none; }
+
+/* line 3, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-form-field,
+.x-form-display-field {
+  float: left;
+  margin: 0 0 0 0;
+  font: normal 12px "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: #22262a; }
+
+/* line 13, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-form-text,
+textarea.x-form-field {
+  padding: 1px 3px;
+  background: repeat-x 0 0;
+  border: 1px solid;
+  background-color: white;
+  /*        @if $form-field-background-image {
+              background-image: theme-background-image($theme-name, $form-field-background-image);
+          }*/
+  border-color: #BEC0C0 #E0E1E2 #E0E1E2 #E0E1E2; }
+
+/* line 32, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-form-text {
+  height: 19px;
+  line-height: 16px;
+  vertical-align: middle; }
+
+/* line 41, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-ie6 .x-form-text,
+.x-ie7 .x-form-text,
+.x-ie8 .x-form-text {
+  line-height: 16px; }
+
+/* line 46, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-border-box .x-form-text {
+  height: 23px; }
+
+/* line 50, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+textarea.x-form-field {
+  color: #22262a;
+  overflow: auto;
+  height: auto;
+  line-height: normal;
+  background: repeat-x 0 0;
+  background-color: white;
+  /*        @if $form-field-background-image {
+              background-image: theme-background-image($theme-name, $form-field-background-image);
+          }*/
+  resize: none; }
+
+/* line 65, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-border-box textarea.x-form-field {
+  height: auto; }
+
+/* line 70, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-safari.x-mac textarea.x-form-field {
+  margin-bottom: -2px; }
+
+/* line 76, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-form-focus,
+textarea.x-form-focus {
+  border-color: #C0BCA7 #E7E3C8 #E7E3C8 #E7E3C8;
+  background: #FFFBE6; }
+
+/* line 82, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-form-invalid-field,
+textarea.x-form-invalid-field {
+  background-color: #ffede9;
+  background-image: url('../../resources/themes/images/neptune/null');
+  background-repeat: null;
+  background-position: null;
+  border-color: #DFCCC5;
+  border-top-color: #BEAAA3; }
+
+/* line 93, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-form-item {
+  font: normal 12px "Helvetica Neue", Arial, Verdana, sans-serif;
+  text-shadow: white 0 1px 0; }
+
+/* line 99, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-form-empty-field, textarea.x-form-empty-field {
+  color: #b8bfc6; }
+
+/* line 104, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-webkit .x-form-empty-field {
+  line-height: 16px; }
+
+/* line 109, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-form-display-field {
+  padding-top: 3px; }
+
+/* line 114, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-ie .x-form-file {
+  height: 24px;
+  line-height: 18px;
+  vertical-align: middle; }
+
+/* line 123, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-field-default-toolbar .x-form-text {
+  height: 18px; }
+
+/* line 127, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-border-box .x-field-default-toolbar .x-form-text {
+  height: 22px; }
+
+/* line 131, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-field-default-toolbar .x-form-item-label-left {
+  padding-left: 4px; }
+
+/* line 2, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+.x-fieldset {
+  border: 1px solid #b6bdc4;
+  border-color: #BEC0C0 #E0E1E2 #E0E1E2 #E0E1E2;
+  background: #fafafa;
+  padding: 10px;
+  margin-bottom: 10px;
+  display: block;
+  /* preserve margins in IE */
+  position: relative; }
+
+/* line 15, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+.x-ie .x-fieldset {
+  padding-top: 0;
+  padding-bottom: 10px; }
+
+/* line 20, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+.x-fieldset-header {
+  font: 12px bold "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: gray;
+  padding: 0 5px; }
+  /* line 26, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-fieldset-header-text {
+    float: left; }
+  /* line 31, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-form-item,
+  .x-fieldset-header .x-tool {
+    float: left;
+    margin: 0 3px 0 0; }
+  /* line 36, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-form-cb-wrap {
+    padding: 0; }
+
+/* line 41, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+.x-webkit .x-fieldset-header {
+  padding-top: 1px; }
+
+/* line 49, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+.x-quirks .x-ie .x-fieldset-header,
+.x-ie6 .x-fieldset-header,
+.x-ie7 .x-fieldset-header,
+.x-ie8 .x-fieldset-header {
+  padding: 0; }
+
+/* line 53, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+.x-ie9 .x-fieldset-header {
+  padding-top: 1px; }
+
+/* line 59, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+.x-fieldset-collapsed .x-fieldset-body {
+  display: none; }
+
+/* line 64, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+.x-fieldset-collapsed {
+  padding-bottom: 0 !important;
+  border-width: 1px 1px 0 1px !important;
+  border-left-color: transparent !important;
+  border-right-color: transparent !important; }
+
+/* line 73, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+.x-ie6 .x-fieldset-collapsed {
+  border-width: 1px 0 0 0 !important;
+  padding-bottom: 0 !important;
+  margin-left: 1px;
+  margin-right: 1px; }
+
+/* IE legend positioning bug */
+/* line 88, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+.x-ie .x-fieldset-noborder legend {
+  position: relative;
+  margin-bottom: 23px; }
+
+/* line 94, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+.x-ie .x-fieldset-noborder legend span {
+  position: absolute;
+  left: 16px; }
+
+/* line 100, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+.x-fieldset, .x-fieldset-bwrap, .x-fieldset-body {
+  overflow: hidden; }
+
+/* line 4, ../themes/stylesheets/neptune/default/widgets/form/_file.scss */
+.x-form-file-wrap .x-form-text {
+  color: #777; }
+/* line 8, ../themes/stylesheets/neptune/default/widgets/form/_file.scss */
+.x-form-file-wrap .x-form-file-btn {
+  overflow: hidden;
+  float: left; }
+/* line 13, ../themes/stylesheets/neptune/default/widgets/form/_file.scss */
+.x-form-file-wrap .x-form-file-input {
+  position: absolute;
+  top: -4px;
+  right: -2px;
+  height: 31px;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  /* Yes, there's actually a good reason for this...
+   * If the configured buttonText is set to something longer than the default,
+   * then it will quickly exceed the width of the hidden file input's "Browse..."
+   * button, so part of the custom button's clickable area will be covered by
+   * the hidden file input's text box instead. This results in a text-selection
+   * mouse cursor over that part of the button, at least in Firefox, which is
+   * confusing to a user. Giving the hidden file input a huge font-size makes
+   * the native button part very large so it will cover the whole clickable area.
+   */
+  font-size: 100px; }
+
+/* line 2, ../themes/stylesheets/neptune/default/widgets/form/_checkbox.scss */
+.x-form-cb-wrap {
+  padding-top: 3px; }
+
+/* line 7, ../themes/stylesheets/neptune/default/widgets/form/_checkbox.scss */
+.x-form-checkbox,
+.x-form-radio {
+  float: none;
+  position: relative;
+  top: -2px;
+  width: 17px;
+  height: 17px;
+  background: no-repeat;
+  background-image: url('../../resources/themes/images/neptune/checkbox.gif');
+  overflow: hidden;
+  padding: 0;
+  border: 0; }
+  /* line 22, ../themes/stylesheets/neptune/default/widgets/form/_checkbox.scss */
+  .x-form-checkbox::-moz-focus-inner,
+  .x-form-radio::-moz-focus-inner {
+    padding: 0;
+    border: 0; }
+
+/* Hack for IE; causes alignment problem in IE9 standards mode so exclude that */
+/* line 31, ../themes/stylesheets/neptune/default/widgets/form/_checkbox.scss */
+.x-nbr.x-ie .x-form-checkbox,
+.x-nbr.x-ie .x-form-radio {
+  font-size: 0; }
+
+/* line 38, ../themes/stylesheets/neptune/default/widgets/form/_checkbox.scss */
+.x-form-cb-checked .x-form-checkbox {
+  background-position: 0 -17px; }
+
+/* Radios */
+/* line 44, ../themes/stylesheets/neptune/default/widgets/form/_checkbox.scss */
+.x-form-radio {
+  background-image: url('../../resources/themes/images/neptune/radio.gif');
+  width: 19px;
+  height: 19px; }
+
+/* line 52, ../themes/stylesheets/neptune/default/widgets/form/_checkbox.scss */
+.x-form-cb-checked .x-form-radio {
+  background-position: 0 -19px; }
+
+/* boxLabel */
+/* line 58, ../themes/stylesheets/neptune/default/widgets/form/_checkbox.scss */
+.x-form-cb-label-before {
+  margin-right: 4px; }
+
+/* line 61, ../themes/stylesheets/neptune/default/widgets/form/_checkbox.scss */
+.x-form-cb-label-after {
+  margin-left: 4px; }
+
+/* line 8, ../themes/stylesheets/neptune/default/widgets/form/_checkboxgroup.scss */
+.x-form-invalid .x-form-checkboxgroup-body {
+  border: 1px solid #c30;
+  background: transparent repeat-x bottom;
+  background-image: url('../../resources/themes/images/neptune/grid/invalid_line.gif');
+  padding: 0 3px 2px 3px; }
+
+/* line 16, ../themes/stylesheets/neptune/default/widgets/form/_checkboxgroup.scss */
+.x-check-group-alt {
+  background: #217dd6;
+  border-top: 1px dotted #36497e;
+  border-bottom: 1px dotted #36497e; }
+
+/* line 23, ../themes/stylesheets/neptune/default/widgets/form/_checkboxgroup.scss */
+.x-form-check-group-label {
+  color: #333;
+  border-bottom: 1px solid #333;
+  margin: 0 30px 5px 0;
+  padding: 2px; }
+
+/* line 2, ../themes/stylesheets/neptune/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap {
+  vertical-align: top; }
+
+/* line 6, ../themes/stylesheets/neptune/default/widgets/form/_triggerfield.scss */
+.x-form-trigger {
+  width: 19px;
+  height: 22px;
+  cursor: pointer;
+  margin-left: 2px; }
+  /* line 14, ../themes/stylesheets/neptune/default/widgets/form/_triggerfield.scss */
+  .x-form-trigger:after {
+    position: absolute;
+    top: 5px;
+    left: 6px;
+    width: 11px;
+    height: 11px;
+    content: "";
+    background: url('../../resources/themes/images/neptune/triggerfield.png') no-repeat; }
+
+/* line 26, ../themes/stylesheets/neptune/default/widgets/form/_triggerfield.scss */
+.x-trigger-cell {
+  position: relative; }
+
+/* line 30, ../themes/stylesheets/neptune/default/widgets/form/_triggerfield.scss */
+.x-form-date-trigger:after {
+  background-position: -11px 0; }
+
+/* line 34, ../themes/stylesheets/neptune/default/widgets/form/_triggerfield.scss */
+.x-form-spinner-down:after {
+  background-position: -22px 0; }
+
+/* line 38, ../themes/stylesheets/neptune/default/widgets/form/_triggerfield.scss */
+.x-form-spinner-up:after {
+  background-position: -33px 0; }
+
+/* line 42, ../themes/stylesheets/neptune/default/widgets/form/_triggerfield.scss */
+.x-form-search-trigger:after {
+  background-position: -44px 0; }
+
+/* line 46, ../themes/stylesheets/neptune/default/widgets/form/_triggerfield.scss */
+.x-form-clear-trigger:after {
+  background-position: -55px 0; }
+
+/* line 51, ../themes/stylesheets/neptune/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-over,
+.x-pickerfield-open .x-form-trigger {
+  -moz-border-radius: 2px;
+  -webkit-border-radius: 2px;
+  -o-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -khtml-border-radius: 2px;
+  border-radius: 2px;
+  border: 1px solid #C7DBEE;
+  background-image: none;
+  background-color: #e2f0fc; }
+
+/* line 5, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-wrap .x-toolbar {
+  border-top-width: 0;
+  border-left-width: 0;
+  border-right-width: 0; }
+/* line 15, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-wrap iframe {
+  padding: 1px 3px 1px 3px;
+  background: repeat-x 0 0;
+  border: 1px solid;
+  background-color: white;
+  /*        @if $form-field-background-image {
+              background-image: theme-background-image($theme-name, $form-field-background-image);
+          }*/
+  border-color: #BEC0C0 #E0E1E2 #E0E1E2 #E0E1E2; }
+
+/* line 66, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb span.x-btn-icon {
+  background-image: url('../../resources/themes/images/neptune/WYSIWYG.png'); }
+/* line 71, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-btn-over span.x-btn-icon {
+  background-position-y: -16px; }
+/* line 77, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-btn-pressed span.x-btn-icon {
+  background-position-y: -48px; }
+
+/* line 83, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-btn-text {
+  background: transparent no-repeat; }
+
+/* line 86, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-bold,
+.x-menu-item img.x-edit-bold {
+  background-position: 0 0; }
+
+/* line 89, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-italic,
+.x-menu-item img.x-edit-italic {
+  background-position: -16px 0; }
+
+/* line 92, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-underline,
+.x-menu-item img.x-edit-underline {
+  background-position: -32px 0; }
+
+/* line 95, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-forecolor,
+.x-menu-item img.x-edit-forecolor {
+  background-position: -160px 0; }
+
+/* line 98, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-backcolor,
+.x-menu-item img.x-edit-backcolor {
+  background-position: -176px 0; }
+
+/* line 101, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-justifyleft,
+.x-menu-item img.x-edit-justifyleft {
+  background-position: -80px 0; }
+
+/* line 104, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-justifycenter,
+.x-menu-item img.x-edit-justifycenter {
+  background-position: -96px 0; }
+
+/* line 107, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-justifyright,
+.x-menu-item img.x-edit-justifyright {
+  background-position: -112px 0; }
+
+/* line 110, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-insertorderedlist,
+.x-menu-item img.x-edit-insertorderedlist {
+  background-position: -144px 0; }
+
+/* line 113, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-insertunorderedlist,
+.x-menu-item img.x-edit-insertunorderedlist {
+  background-position: -160px 0; }
+
+/* line 116, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-increasefontsize,
+.x-menu-item img.x-edit-increasefontsize {
+  background-position: -48px 0; }
+
+/* line 119, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-decreasefontsize,
+.x-menu-item img.x-edit-decreasefontsize {
+  background-position: -64px 0; }
+
+/* line 122, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-sourceedit,
+.x-menu-item img.x-edit-sourceedit {
+  background-position: -176px 0; }
+
+/* line 125, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-createlink,
+.x-menu-item img.x-edit-createlink {
+  background-position: -128px 0; }
+
+/* line 128, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tip .x-tip-bd .x-tip-bd-inner {
+  padding: 5px;
+  padding-bottom: 1px; }
+
+/* line 134, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-toolbar {
+  position: static !important; }
+/* line 137, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-font-select {
+  font-size: 11px; }
+
+/* line 142, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-wrap textarea {
+  border: 0;
+  padding: 3px 2px;
+  overflow: auto; }
+
+/* line 7, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel,
+.x-plain {
+  overflow: hidden;
+  position: relative; }
+
+/* line 31, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-ie8 td.x-frame-mc {
+  vertical-align: top; }
+
+/* line 37, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  border: 0 solid #a8b0b8;
+  background-color: white;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0;
+  -moz-background-clip: padding;
+  -webkit-background-clip: padding;
+  -o-background-clip: padding-box;
+  -ms-background-clip: padding-box;
+  -khtml-background-clip: padding-box;
+  background-clip: padding-box; }
+
+/* line 46, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-default.x-tab-panel {
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0; }
+
+/* line 51, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header {
+  padding: 8px 10px 8px 10px;
+  border: 0 solid #e0e3e6;
+  border-bottom-width: 0; }
+  /* line 57, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+  .x-panel-header .x-panel-header-body,
+  .x-panel-header .x-panel-header-body > .x-box-inner {
+    overflow: visible; }
+
+/* line 63, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-icon,
+.x-window-header-icon {
+  width: 16px;
+  height: 16px;
+  background-repeat: no-repeat;
+  background-position: 0 0;
+  vertical-align: middle;
+  margin-right: 4px;
+  margin-top: -1px;
+  margin-bottom: -1px; }
+
+/* line 77, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-draggable,
+.x-panel-header-draggable .x-panel-header-text,
+.x-window-header-draggable,
+.x-window-header-draggable .x-window-header-text {
+  cursor: move; }
+
+/* line 83, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-ghost, .x-window-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+  opacity: 0.65;
+  cursor: move; }
+
+/* line 89, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-horizontal .x-panel-header-body, .x-panel-header-horizontal .x-window-header-body, .x-panel-header-horizontal .x-btn-group-header-body, .x-window-header-horizontal .x-panel-header-body, .x-window-header-horizontal .x-window-header-body, .x-window-header-horizontal .x-btn-group-header-body, .x-btn-group-header-horizontal .x-panel-header-body, .x-btn-group-header-horizontal .x-window-header-body, .x-btn-group-header-horizontal .x-btn-group-header-body {
+  width: 100%; }
+
+/* line 95, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-vertical .x-panel-header-body, .x-panel-header-vertical .x-window-header-body, .x-panel-header-vertical .x-btn-group-header-body, .x-window-header-vertical .x-panel-header-body, .x-window-header-vertical .x-window-header-body, .x-window-header-vertical .x-btn-group-header-body, .x-btn-group-header-vertical .x-panel-header-body, .x-btn-group-header-vertical .x-window-header-body, .x-btn-group-header-vertical .x-btn-group-header-body {
+  height: 100%; }
+
+/* line 110, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-left .x-vml-base,
+.x-panel-header-right .x-vml-base {
+  left: -3px !important; }
+
+/* line 116, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-body {
+  overflow: hidden;
+  position: relative;
+  -moz-background-clip: padding;
+  -webkit-background-clip: padding;
+  -o-background-clip: padding-box;
+  -ms-background-clip: padding-box;
+  -khtml-background-clip: padding-box;
+  background-clip: padding-box; }
+
+/* line 124, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-default-framed {
+  padding: 4px; }
+  /* line 126, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+  .x-panel-default-framed .x-panel-body {
+    -moz-border-radius: 0;
+    -webkit-border-radius: 0;
+    -o-border-radius: 0;
+    -ms-border-radius: 0;
+    -khtml-border-radius: 0;
+    border-radius: 0;
+    border: 0; }
+
+/* line 133, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-hasheader-top,
+.x-window-hasheader-top {
+  padding-top: 0 !important; }
+
+/* line 138, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-hasheader-bottom,
+.x-window-hasheader-bottom {
+  padding-bottom: 0 !important; }
+
+/* line 143, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-hasheader-left,
+.x-window-hasheader-left {
+  padding-left: 0 !important; }
+
+/* line 148, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-hasheader-right,
+.x-window-hasheader-right {
+  padding-right: 0 !important; }
+
+/* line 154, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-vertical .x-surface {
+  margin-top: 2px; }
+
+/* line 158, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-plain-vertical .x-surface {
+  margin-top: 0; }
+
+/* line 179, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-vertical .x-frame-mc {
+  background-repeat: repeat-y; }
+
+/* line 280, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-default {
+  border-color: #167cce;
+  background: #167cce;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0; }
+  /* line 289, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+  .x-panel-default .x-panel-header-collapsed-border-top {
+    border-bottom-width: 0 !important; }
+  /* line 292, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+  .x-panel-default .x-panel-header-collapsed-border-right {
+    border-left-width: 0 !important; }
+  /* line 295, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+  .x-panel-default .x-panel-header-collapsed-border-bottom {
+    border-top-width: 0 !important; }
+  /* line 298, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+  .x-panel-default .x-panel-header-collapsed-border-left {
+    border-right-width: 0 !important; }
+
+/* line 305, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-default {
+  border-color: #a8b0b8;
+  border-width: 0;
+  border-style: solid;
+  border-width: 0;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #188ae5), color-stop(100%, #167cce));
+  background-image: -webkit-linear-gradient(top, #188ae5, #167cce 100%);
+  background-image: -moz-linear-gradient(top, #188ae5, #167cce 100%);
+  background-image: -o-linear-gradient(top, #188ae5, #167cce 100%);
+  background-image: -ms-linear-gradient(top, #188ae5, #167cce 100%);
+  background-image: linear-gradient(top, #188ae5, #167cce 100%); }
+  /* line 306, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+  .x-panel-header-default .x-panel-header-text-container {
+    font-size: 15px;
+    line-height: 1.2em; }
+
+/* line 361, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-default .x-panel-header-text-container {
+  color: white;
+  font-size: 15px;
+  font-weight: normal;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif; }
+
+/* line 369, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-body-default {
+  background: white;
+  margin: 0;
+  color: #333333; }
+
+/* line 379, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-collapsed .x-window-header-default,
+.x-panel-collapsed .x-panel-header-default {
+  border-color: #a8b0b8; }
+
+/* line 384, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-default-vertical {
+  border-color: #a8b0b8; }
+
+/* line 415, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-default-top {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0; }
+
+/* line 433, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-top {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+/* line 437, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0; }
+/* line 441, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0; }
+/* line 445, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-left {
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 490, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-bottom {
+  background-position: bottom left; }
+
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-default-collapsed {
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0; }
+
+/* line 280, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-default-framed {
+  border-color: #a8b0b8;
+  background: #167cce;
+  -moz-border-radius: 4px;
+  -webkit-border-radius: 4px;
+  -o-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -khtml-border-radius: 4px;
+  border-radius: 4px; }
+  /* line 289, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+  .x-panel-default-framed .x-panel-header-collapsed-border-top {
+    border-bottom-width: 0 !important; }
+  /* line 292, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+  .x-panel-default-framed .x-panel-header-collapsed-border-right {
+    border-left-width: 0 !important; }
+  /* line 295, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+  .x-panel-default-framed .x-panel-header-collapsed-border-bottom {
+    border-top-width: 0 !important; }
+  /* line 298, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+  .x-panel-default-framed .x-panel-header-collapsed-border-left {
+    border-right-width: 0 !important; }
+
+/* line 305, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-default-framed {
+  border-color: #a8b0b8;
+  border-width: 0;
+  border-style: solid;
+  border-width: 0;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #188ae5), color-stop(100%, #167cce));
+  background-image: -webkit-linear-gradient(top, #188ae5, #167cce 100%);
+  background-image: -moz-linear-gradient(top, #188ae5, #167cce 100%);
+  background-image: -o-linear-gradient(top, #188ae5, #167cce 100%);
+  background-image: -ms-linear-gradient(top, #188ae5, #167cce 100%);
+  background-image: linear-gradient(top, #188ae5, #167cce 100%); }
+  /* line 306, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+  .x-panel-header-default-framed .x-panel-header-text-container {
+    font-size: 15px;
+    line-height: 1.2em; }
+
+/* line 361, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-default-framed .x-panel-header-text-container {
+  color: white;
+  font-size: 15px;
+  font-weight: normal;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif; }
+
+/* line 369, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-body-default-framed {
+  background: white;
+  color: #22262a; }
+
+/* line 379, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-collapsed .x-window-header-default-framed,
+.x-panel-collapsed .x-panel-header-default-framed {
+  border-color: #a8b0b8; }
+
+/* line 384, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-default-framed-vertical {
+  border-color: #a8b0b8; }
+
+/* line 415, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-default-framed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px; }
+
+/* line 433, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-framed-top {
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px; }
+/* line 437, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-framed-right {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px; }
+/* line 441, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-framed-bottom {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px; }
+/* line 445, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-framed-left {
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px; }
+
+/* line 490, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-bottom {
+  background-position: bottom left; }
+
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-default-framed-collapsed {
+  -moz-border-radius: 4px;
+  -webkit-border-radius: 4px;
+  -o-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -khtml-border-radius: 4px;
+  border-radius: 4px; }
+
+/* line 232, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-plain,
+.x-panel-body-plain {
+  border: 0;
+  padding: 0; }
+
+/* line 2, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-tip {
+  position: absolute;
+  overflow: visible;
+  /*pointer needs to be able to stick out*/
+  border-color: white; }
+  /* line 8, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+  .x-tip .x-tip-header .x-box-item {
+    padding: 3px 3px 0; }
+  /* line 12, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+  .x-tip .x-tip-header .x-tool {
+    padding: 0px 1px 0 0 !important; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-tip {
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  -o-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -khtml-border-radius: 5px;
+  border-radius: 5px;
+  padding: 5px 5px 5px 5px;
+  border-width: 0;
+  border-style: solid;
+  background-color: white; }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-tip-mc {
+  background-color: white; }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-tip {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100505px 1000505px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-tip-tl,
+.x-nbr .x-tip-bl,
+.x-nbr .x-tip-tr,
+.x-nbr .x-tip-br,
+.x-nbr .x-tip-tc,
+.x-nbr .x-tip-bc,
+.x-nbr .x-tip-ml,
+.x-nbr .x-tip-mr {
+  background-image: url('../../resources/themes/images/neptune/tip/tip-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-tip-ml,
+.x-nbr .x-tip-mr {
+  background-image: url('../../resources/themes/images/neptune/tip/tip-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-tip-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 27, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-tip-header-text {
+  color: #188ae5;
+  font-size: 11px;
+  font-weight: bold; }
+
+/* line 35, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-tip-header-draggable .x-tip-header-text {
+  cursor: move; }
+
+/* line 41, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-tip-body,
+.x-form-invalid-tip-body {
+  overflow: hidden;
+  position: relative;
+  padding: 3px 3px 0; }
+
+/* line 49, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-tip-header,
+.x-tip-body,
+.x-form-invalid-tip-body {
+  color: #188ae5;
+  font-size: 11px;
+  font-weight: normal;
+  text-shadow: white 0 1px 0; }
+  /* line 57, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+  .x-tip-header a,
+  .x-tip-body a,
+  .x-form-invalid-tip-body a {
+    color: #146eb7; }
+
+/* line 62, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  height: 0;
+  width: 0;
+  border-style: solid;
+  border-width: 5px;
+  border-color: white; }
+
+/* line 73, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-border-box .x-tip-anchor {
+  width: 10px;
+  height: 10px; }
+
+/* line 78, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-tip-anchor-top {
+  border-top-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 91, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-tip-anchor-bottom {
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 104, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-tip-anchor-left {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 117, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-tip-anchor-right {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 131, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-form-invalid-tip {
+  border-color: #a1311f;
+  -moz-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  -webkit-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  -o-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset; }
+
+/* line 140, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-form-invalid-tip-body {
+  background: 1px 1px no-repeat;
+  background-image: url('../../resources/themes/images/neptune/form/exclamation.gif');
+  padding-left: 22px; }
+  /* line 145, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+  .x-form-invalid-tip-body li {
+    margin-bottom: 4px; }
+    /* line 147, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+    .x-form-invalid-tip-body li.last {
+      margin-bottom: 0; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-form-invalid-tip-default {
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  -o-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -khtml-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: white; }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-form-invalid-tip-default-mc {
+  background-color: white; }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-form-invalid-tip-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100505px 1000505px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-form-invalid-tip-default-tl,
+.x-nbr .x-form-invalid-tip-default-bl,
+.x-nbr .x-form-invalid-tip-default-tr,
+.x-nbr .x-form-invalid-tip-default-br,
+.x-nbr .x-form-invalid-tip-default-tc,
+.x-nbr .x-form-invalid-tip-default-bc,
+.x-nbr .x-form-invalid-tip-default-ml,
+.x-nbr .x-form-invalid-tip-default-mr {
+  background-image: url('../../resources/themes/images/neptune/form-invalid-tip/form-invalid-tip-default-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-form-invalid-tip-default-ml,
+.x-nbr .x-form-invalid-tip-default-mr {
+  background-image: url('../../resources/themes/images/neptune/form-invalid-tip/form-invalid-tip-default-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-form-invalid-tip-default-mc {
+  padding: 0 0 0 0; }
+
+/* line 6, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-inner {
+  position: relative;
+  left: 0;
+  top: 0;
+  overflow: visible; }
+
+/* line 14, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-focus {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px;
+  line-height: 1px;
+  font-size: 1px;
+  display: block;
+  overflow: hidden; }
+
+/* Horizontal styles */
+/* line 29, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-horz {
+  padding-left: 7px;
+  background: transparent no-repeat 0 -24px; }
+
+/* line 34, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-end {
+  padding-right: 7px;
+  background: transparent no-repeat right -46px; }
+
+/* line 40, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-inner {
+  background: transparent repeat-x 0 -2px;
+  height: 18px; }
+
+/* line 45, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb {
+  width: 14px;
+  height: 15px;
+  margin-left: -7px;
+  position: absolute;
+  left: 0;
+  top: 1px;
+  background: transparent no-repeat 0 0; }
+
+/* line 55, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb-over {
+  background-position: -14px -15px; }
+
+/* line 59, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb-drag {
+  background-position: -28px -30px; }
+
+/* Vertical styles */
+/* line 64, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-vert {
+  padding-top: 7px;
+  background: transparent no-repeat -44px 0; }
+
+/* line 69, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-end {
+  padding-bottom: 7px;
+  background: transparent no-repeat -22px bottom;
+  width: 22px; }
+
+/* line 76, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-inner {
+  background: transparent repeat-y 0 0;
+  width: 22px; }
+
+/* line 81, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb {
+  width: 15px;
+  height: 14px;
+  margin-bottom: -7px;
+  position: absolute;
+  left: 3px;
+  bottom: 0;
+  background: transparent no-repeat 0 0; }
+
+/* line 91, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb-over {
+  background-position: -15px -14px; }
+
+/* line 95, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb-drag {
+  background-position: -30px -28px; }
+
+/* line 101, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-horz,
+.x-slider-horz .x-slider-end,
+.x-slider-horz .x-slider-inner {
+  background-image: url('../../resources/themes/images/neptune/slider/slider-bg.png'); }
+
+/* line 105, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb {
+  background-image: url('../../resources/themes/images/neptune/slider/slider-thumb.png'); }
+
+/* line 111, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-vert,
+.x-slider-vert .x-slider-end,
+.x-slider-vert .x-slider-inner {
+  background-image: url('../../resources/themes/images/neptune/slider/slider-v-bg.png'); }
+
+/* line 115, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb {
+  background-image: url('../../resources/themes/images/neptune/slider/slider-v-thumb.png'); }
+
+/* line 123, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-ie6 .x-slider-horz,
+.x-ie6 .x-slider-horz .x-slider-end,
+.x-ie6 .x-slider-horz .x-slider-inner {
+  background-image: url('../../resources/themes/images/neptune/slider/slider-bg.gif'); }
+/* line 127, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-ie6 .x-slider-horz .x-slider-thumb {
+  background-image: url('../../resources/themes/images/neptune/slider/slider-thumb.gif'); }
+/* line 133, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-ie6 .x-slider-vert,
+.x-ie6 .x-slider-vert .x-slider-end,
+.x-ie6 .x-slider-vert .x-slider-inner {
+  background-image: url('../../resources/themes/images/neptune/slider/slider-v-bg.gif'); }
+/* line 137, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-ie6 .x-slider-vert .x-slider-thumb {
+  background-image: url('../../resources/themes/images/neptune/slider/slider-v-thumb.gif'); }
+
+/* line 2, ../themes/stylesheets/neptune/default/widgets/_progress-bar.scss */
+.x-progress {
+  border-width: 1px;
+  border-style: solid;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0;
+  overflow: hidden;
+  height: 20px; }
+
+/* line 12, ../themes/stylesheets/neptune/default/widgets/_progress-bar.scss */
+.x-progress-bar {
+  height: 18px;
+  overflow: hidden;
+  position: absolute;
+  width: 0;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0;
+  border-right: 1px solid;
+  border-top: 1px solid; }
+
+/* line 25, ../themes/stylesheets/neptune/default/widgets/_progress-bar.scss */
+.x-progress-text {
+  overflow: hidden;
+  position: absolute;
+  padding: 0 5px;
+  height: 18px;
+  font-weight: bold;
+  font-size: 11px;
+  line-height: 16px;
+  text-align: center; }
+
+/* line 40, ../themes/stylesheets/neptune/default/widgets/_progress-bar.scss */
+.x-progress-text-back {
+  padding-top: 1px; }
+
+/* line 45, ../themes/stylesheets/neptune/default/widgets/_progress-bar.scss */
+.x-strict .x-ie7m .x-progress {
+  height: 18px; }
+
+/* line 87, ../themes/stylesheets/neptune/default/widgets/_progress-bar.scss */
+.x-progress-default {
+  border-color: #0c3a5f; }
+  /* line 90, ../themes/stylesheets/neptune/default/widgets/_progress-bar.scss */
+  .x-progress-default .x-progress-bar {
+    border-right-color: #0c3a5f;
+    border-top-color: #1a7fd0;
+    background-image: none;
+    background-color: #084c82;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #0c76cb), color-stop(50%, #095a9a), color-stop(51%, #084c82), color-stop(100%, #063e6a));
+    background-image: -webkit-linear-gradient(top, #0c76cb, #095a9a 50%, #084c82 51%, #063e6a);
+    background-image: -moz-linear-gradient(top, #0c76cb, #095a9a 50%, #084c82 51%, #063e6a);
+    background-image: -o-linear-gradient(top, #0c76cb, #095a9a 50%, #084c82 51%, #063e6a);
+    background-image: -ms-linear-gradient(top, #0c76cb, #095a9a 50%, #084c82 51%, #063e6a);
+    background-image: linear-gradient(top, #0c76cb, #095a9a 50%, #084c82 51%, #063e6a); }
+  /* line 97, ../themes/stylesheets/neptune/default/widgets/_progress-bar.scss */
+  .x-progress-default .x-progress-text {
+    color: white; }
+  /* line 101, ../themes/stylesheets/neptune/default/widgets/_progress-bar.scss */
+  .x-progress-default .x-progress-text-back {
+    color: #010304; }
+
+/* line 110, ../themes/stylesheets/neptune/default/widgets/_progress-bar.scss */
+.x-nlg .x-progress-default .x-progress-bar {
+  background: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/progress/progress-default-bg.gif'); }
+
+/* line 2, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-toolbar {
+  font-size: 11px;
+  overflow: visible;
+  padding: 5px 0 5px 5px; }
+  /* line 8, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+  .x-toolbar .x-box-inner {
+    overflow: visible; }
+  /* line 14, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+  .x-toolbar .x-form-item-label {
+    font-size: 11px;
+    line-height: 15px; }
+  /* line 19, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-item {
+    margin: 0 5px 0 0; }
+  /* line 23, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-text {
+    margin-left: 4px;
+    margin-right: 6px;
+    white-space: nowrap;
+    color: #727f8d !important;
+    line-height: 16px;
+    font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+    font-size: 11px;
+    font-weight: normal; }
+  /* line 34, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-separator {
+    display: block;
+    font-size: 1px;
+    overflow: hidden;
+    cursor: default;
+    border: 0; }
+  /* line 42, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-separator-horizontal {
+    margin: 0 6px 0 1px;
+    height: 24px;
+    width: 0px;
+    border-left: 1px solid #ebedef;
+    border-right: 1px solid white; }
+
+/* line 53, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-toolbar-docked-top {
+  padding-bottom: 0; }
+
+/* line 54, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-toolbar-docked-bottom {
+  padding-top: 0; }
+
+/* line 55, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-toolbar-docked-left {
+  padding-right: 0; }
+
+/* line 56, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-toolbar-docked-right {
+  padding-left: 0; }
+
+/* line 59, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal {
+  width: 2px; }
+
+/* line 64, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-toolbar-footer {
+  background: transparent;
+  border: 0px none;
+  margin-top: 3px;
+  padding: 2px 0 2px 6px; }
+  /* line 71, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+  .x-toolbar-footer .x-box-inner {
+    border-width: 0; }
+  /* line 75, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+  .x-toolbar-footer .x-toolbar-item {
+    margin: 0 6px 0 0; }
+
+/* line 80, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-toolbar-vertical {
+  padding: 5px 5px 0 5px; }
+  /* line 83, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+  .x-toolbar-vertical .x-toolbar-item {
+    margin: 0 0 5px 0; }
+  /* line 87, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+  .x-toolbar-vertical .x-toolbar-text {
+    margin-top: 4px;
+    margin-bottom: 6px; }
+  /* line 92, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+  .x-toolbar-vertical .x-toolbar-separator-vertical {
+    margin: 2px 5px 3px 5px;
+    height: 0px;
+    width: 10px;
+    line-height: 0px;
+    border-top: 1px solid #ebedef;
+    border-bottom: 1px solid white; }
+
+/* line 104, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-toolbar-scroller {
+  padding-left: 0; }
+
+/* line 108, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-toolbar-spacer {
+  width: 4px; }
+
+/* line 113, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-toolbar-more-icon {
+  background-image: url('../../resources/themes/images/neptune/toolbar/more.gif') !important;
+  background-position: 2px center !important;
+  background-repeat: no-repeat; }
+
+/* line 155, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-toolbar-default {
+  border-color: transparent;
+  background-image: none;
+  background-color: white; }
+
+/* line 166, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-nlg .x-toolbar-default {
+  background-image: url('../../resources/themes/images/neptune/toolbar/toolbar-default-bg.gif') !important;
+  background-repeat: repeat-x; }
+
+/* line 129, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-toolbar-plain {
+  border: 0; }
+
+/* line 7, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-wrap {
+  position: relative; }
+
+/* line 11, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-body {
+  position: relative;
+  overflow: hidden; }
+
+/* line 20, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-maximized .x-window-wrap .x-window-header {
+  -moz-border-radius: 0 !important;
+  -webkit-border-radius: 0 !important;
+  -o-border-radius: 0 !important;
+  -ms-border-radius: 0 !important;
+  -khtml-border-radius: 0 !important;
+  border-radius: 0 !important; }
+
+/* line 28, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-vertical, .x-window-collapsed .x-window-header-horizontal {
+  -moz-border-radius: 4px;
+  -webkit-border-radius: 4px;
+  -o-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -khtml-border-radius: 4px;
+  border-radius: 4px; }
+
+/* line 52, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-header-left .x-vml-base,
+.x-window-header-right .x-vml-base {
+  left: -3px !important; }
+
+/* line 57, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-header-text {
+  white-space: nowrap;
+  display: block; }
+
+/* line 64, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-body-plain {
+  background: transparent; }
+
+/* line 70, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-header .x-window-header-body,
+.x-window-header .x-window-header-body > .x-box-inner {
+  overflow: visible; }
+
+/* line 101, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-default {
+  border-color: #1058a6;
+  -moz-border-radius: 4px;
+  -webkit-border-radius: 4px;
+  -o-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -khtml-border-radius: 4px;
+  border-radius: 4px; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-window-default {
+  -moz-border-radius: 4px;
+  -webkit-border-radius: 4px;
+  -o-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -khtml-border-radius: 4px;
+  border-radius: 4px;
+  padding: 4px 4px 4px 4px;
+  border-width: 0;
+  border-style: solid;
+  background-color: #1264bd; }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-window-default-mc {
+  background-color: #1264bd; }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-window-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1000404px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-window-default-tl,
+.x-nbr .x-window-default-bl,
+.x-nbr .x-window-default-tr,
+.x-nbr .x-window-default-br,
+.x-nbr .x-window-default-tc,
+.x-nbr .x-window-default-bc,
+.x-nbr .x-window-default-ml,
+.x-nbr .x-window-default-mr {
+  background-image: url('../../resources/themes/images/neptune/window/window-default-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-window-default-ml,
+.x-nbr .x-window-default-mr {
+  background-image: url('../../resources/themes/images/neptune/window/window-default-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-window-default-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 125, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-body-default {
+  background: white;
+  color: #5b6671; }
+
+/* line 132, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-header-default {
+  border-color: #1058a6;
+  padding: 8px 10px 8px 10px;
+  text-shadow: #0e4b8e 0 -1px 0;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #1470d4), color-stop(100%, #1264bd));
+  background-image: -webkit-linear-gradient(top, #1470d4, #1264bd 100%);
+  background-image: -moz-linear-gradient(top, #1470d4, #1264bd 100%);
+  background-image: -o-linear-gradient(top, #1470d4, #1264bd 100%);
+  background-image: -ms-linear-gradient(top, #1470d4, #1264bd 100%);
+  background-image: linear-gradient(top, #1470d4, #1264bd 100%); }
+
+/* line 145, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-header-text-default {
+  color: white;
+  font-weight: normal;
+  line-height: 1.2em;
+  font-size: 15px; }
+
+/* line 153, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-header-default-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px; }
+
+/* line 2, ../themes/stylesheets/neptune/default/util/_messagebox.scss */
+.x-message-box .x-window-body {
+  background-color: transparent;
+  color: white;
+  text-shadow: #0e4b8e 0 -1px 0;
+  border: none; }
+
+/* line 9, ../themes/stylesheets/neptune/default/util/_messagebox.scss */
+.x-message-box .x-progress-wrap {
+  margin-top: 4px; }
+
+/* line 13, ../themes/stylesheets/neptune/default/util/_messagebox.scss */
+.x-message-box-icon {
+  width: 47px;
+  height: 32px; }
+
+/* line 18, ../themes/stylesheets/neptune/default/util/_messagebox.scss */
+.x-message-box .x-form-item .x-form-display-field {
+  color: white;
+  text-shadow: #0e4b8e 0 -1px 0; }
+
+/* line 25, ../themes/stylesheets/neptune/default/util/_messagebox.scss */
+.x-message-box-info,
+.x-message-box-warning,
+.x-message-box-question,
+.x-message-box-error {
+  background: transparent no-repeat top left; }
+
+/* line 29, ../themes/stylesheets/neptune/default/util/_messagebox.scss */
+.x-message-box .x-msg-box-wait {
+  background-image: url('../../resources/themes/images/neptune/shared/blue-loading.gif'); }
+
+/* line 33, ../themes/stylesheets/neptune/default/util/_messagebox.scss */
+.x-message-box-info {
+  background-image: url('../../resources/themes/images/neptune/shared/icon-info.gif'); }
+
+/* line 37, ../themes/stylesheets/neptune/default/util/_messagebox.scss */
+.x-message-box-warning {
+  background-image: url('../../resources/themes/images/neptune/shared/icon-warning.gif'); }
+
+/* line 41, ../themes/stylesheets/neptune/default/util/_messagebox.scss */
+.x-message-box-question {
+  background-image: url('../../resources/themes/images/neptune/shared/icon-question.gif'); }
+
+/* line 45, ../themes/stylesheets/neptune/default/util/_messagebox.scss */
+.x-message-box-error {
+  background-image: url('../../resources/themes/images/neptune/shared/icon-error.gif'); }
+
+/* line 5, ../themes/stylesheets/neptune/default/widgets/_tabbar.scss */
+.x-tab-bar {
+  position: relative;
+  background-color: transparent;
+  font-size: 12px; }
+
+/* line 17, ../themes/stylesheets/neptune/default/widgets/_tabbar.scss */
+.x-tab-bar-default-plain,
+.x-nlg .x-tab-bar-default-plain {
+  background: transparent none; }
+
+/* line 22, ../themes/stylesheets/neptune/default/widgets/_tabbar.scss */
+.x-tab-bar-body {
+  position: relative;
+  z-index: 2; }
+
+/* line 31, ../themes/stylesheets/neptune/default/widgets/_tabbar.scss */
+.tab-bar-strip {
+  display: none !important; }
+
+/* Top Tabs */
+/* Bottom Tabs */
+/* line 136, ../themes/stylesheets/neptune/default/widgets/_tabbar.scss */
+.x-tab-bar-bottom .x-tab-bar-body .x-box-inner {
+  position: relative; }
+
+/* line 136, ../themes/stylesheets/neptune/default/widgets/_tabbar.scss */
+.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-inner {
+  position: relative; }
+
+/* line 27, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab {
+  z-index: 1;
+  margin: 0 1px 0 0;
+  display: inline-block;
+  *display: inline; }
+  /* line 37, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+  .x-tab em {
+    display: block;
+    padding: 7px 22px 8px 22px;
+    line-height: 1px; }
+  /* line 43, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+  .x-tab button {
+    background: none;
+    border: 0;
+    padding: 0;
+    margin: 0;
+    -webkit-appearance: none;
+    color: white; }
+    /* line 55, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+    .x-tab button::-moz-focus-inner {
+      border: 0;
+      padding: 0; }
+    /* line 60, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+    .x-tab button .x-tab-inner {
+      font-size: 12px;
+      font-weight: bold;
+      font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+      background-color: transparent;
+      background-repeat: no-repeat;
+      background-position: 0 -2px;
+      display: block;
+      text-align: center;
+      white-space: nowrap;
+      text-overflow: ellipsis;
+      -o-text-overflow: ellipsis;
+      overflow: hidden; }
+  /* line 82, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+  .x-tab img {
+    display: none; }
+
+/* line 87, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-close-btn {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 12px;
+  line-height: 12px;
+  display: block;
+  position: absolute !important;
+  top: 5px;
+  right: 2px;
+  width: 13px;
+  height: 13px;
+  text-decoration: none;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .x-tab-close-btn:after, .x-tab-close-btn:before {
+    font-size: 12px;
+    content: "*";
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .x-tab-close-btn:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+
+/* line 103, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-close-btn:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1; }
+
+/* line 107, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-panel-default-framed .x-tab-default-top {
+  -moz-border-radius: 3px 3px 0 0;
+  -webkit-border-radius: 3px 3px 0 0;
+  -o-border-radius: 3px 3px 0 0;
+  -ms-border-radius: 3px 3px 0 0;
+  -khtml-border-radius: 3px 3px 0 0;
+  border-radius: 3px 3px 0 0; }
+
+/* line 111, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-panel-default-framed .x-tab-default-bottom {
+  -moz-border-radius: 0 0 3px 3px;
+  -webkit-border-radius: 0 0 3px 3px;
+  -o-border-radius: 0 0 3px 3px;
+  -ms-border-radius: 0 0 3px 3px;
+  -khtml-border-radius: 0 0 3px 3px;
+  border-radius: 0 0 3px 3px; }
+
+/* line 115, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1; }
+
+/* line 130, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+* html .x-ie .x-tab button {
+  width: 1px; }
+
+/* line 137, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-strict .x-ie6 .x-tab .x-frame-mc,
+.x-strict .x-ie7 .x-tab .x-frame-mc {
+  height: 100%; }
+
+/* line 142, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-ie .x-tab-active button:active {
+  position: relative;
+  top: -1px;
+  left: -1px; }
+
+/* line 216, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-default-disabled {
+  border-color: #a8b0b8;
+  background-image: none;
+  background-color: rgba(0, 0, 0, 0); }
+  /* line 217, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+  .x-tab-default-disabled, .x-tab-default-disabled * {
+    cursor: default; }
+  /* line 224, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+  .x-tab-default-disabled button {
+    color: rgba(255, 255, 255, 0.5) !important; }
+
+/* line 230, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-icon-text-left .x-tab-inner {
+  padding-left: 24px; }
+
+/* line 235, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab {
+  background: rgba(255, 255, 255, 0.2); }
+  /* line 238, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+  .x-tab button, .x-tab a {
+    position: relative; }
+    /* line 241, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+    .x-tab button .x-tab-icon, .x-tab a .x-tab-icon {
+      position: absolute;
+      background-repeat: no-repeat;
+      top: 0;
+      left: 0;
+      right: auto;
+      bottom: 0;
+      width: 16px;
+      height: 16px; }
+  /* line 258, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+  .x-tab.x-icon button {
+    width: 16px;
+    height: 16px; }
+
+/* line 271, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-default-plain {
+  background: transparent; }
+
+/* line 298, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-top-over, .x-tab-over {
+  background-image: none;
+  background-color: #45a1eb; }
+
+/* line 301, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-bottom-over {
+  background-image: none;
+  background-color: #45a1eb; }
+
+/* line 306, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-active {
+  z-index: 3; }
+  /* line 312, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+  .x-tab-active button {
+    color: #2e3338; }
+  /* line 328, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+  .x-tab-active .x-tab-close-btn:after {
+    background-image: none;
+    background-color: #cccccc; }
+  /* line 334, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+  .x-tab-active .x-tab-icon:after {
+    color: #2e3338; }
+
+/* line 340, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-top-active {
+  background-image: none;
+  background-color: white; }
+
+/* line 343, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-bottom-active {
+  background-image: none;
+  background-color: white; }
+
+/* line 353, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-disabled button {
+  color: rgba(255, 255, 255, 0.5); }
+/* line 369, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-disabled .x-tab-icon:after {
+  opacity: .5; }
+
+/* line 385, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nlg .x-tab-top {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-bg.gif'); }
+/* line 386, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nlg .x-tab-bottom {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-bg.gif'); }
+/* line 390, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nlg .x-tab-top-over {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-over-bg.gif'); }
+/* line 391, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nlg .x-tab-bottom-over {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-over-bg.gif'); }
+/* line 395, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nlg .x-tab-top-active {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-active-bg.gif'); }
+/* line 396, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nlg .x-tab-bottom-active {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-active-bg.gif'); }
+/* line 400, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nlg .x-tab-top-disabled {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-disabled-bg.gif') !important; }
+/* line 401, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nlg .x-tab-bottom-disabled {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-disabled-bg.gif') !important; }
+
+/* line 418, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-over .x-frame-tl,
+.x-nbr .x-tab-top-over .x-frame-bl,
+.x-nbr .x-tab-top-over .x-frame-tr,
+.x-nbr .x-tab-top-over .x-frame-br,
+.x-nbr .x-tab-top-over .x-frame-tc,
+.x-nbr .x-tab-top-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-over-corners.gif'); }
+/* line 422, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-over .x-frame-ml,
+.x-nbr .x-tab-top-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-over-sides.gif'); }
+/* line 426, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-over .x-frame-mc {
+  background-color: #45a1eb;
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-over-bg.gif'); }
+/* line 440, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-over .x-frame-tl,
+.x-nbr .x-tab-bottom-over .x-frame-bl,
+.x-nbr .x-tab-bottom-over .x-frame-tr,
+.x-nbr .x-tab-bottom-over .x-frame-br,
+.x-nbr .x-tab-bottom-over .x-frame-tc,
+.x-nbr .x-tab-bottom-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-over-corners.gif'); }
+/* line 444, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-over .x-frame-ml,
+.x-nbr .x-tab-bottom-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-over-sides.gif'); }
+/* line 448, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-over .x-frame-mc {
+  background-color: #45a1eb;
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-over-bg.gif'); }
+/* line 462, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-active .x-frame-tl,
+.x-nbr .x-tab-top-active .x-frame-bl,
+.x-nbr .x-tab-top-active .x-frame-tr,
+.x-nbr .x-tab-top-active .x-frame-br,
+.x-nbr .x-tab-top-active .x-frame-tc,
+.x-nbr .x-tab-top-active .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-active-corners.gif'); }
+/* line 466, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-active .x-frame-ml,
+.x-nbr .x-tab-top-active .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-active-sides.gif'); }
+/* line 470, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-active .x-frame-mc {
+  background-color: white;
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-active-bg.gif'); }
+/* line 484, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-active .x-frame-tl,
+.x-nbr .x-tab-bottom-active .x-frame-bl,
+.x-nbr .x-tab-bottom-active .x-frame-tr,
+.x-nbr .x-tab-bottom-active .x-frame-br,
+.x-nbr .x-tab-bottom-active .x-frame-tc,
+.x-nbr .x-tab-bottom-active .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-active-corners.gif'); }
+/* line 488, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-active .x-frame-ml,
+.x-nbr .x-tab-bottom-active .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-active-sides.gif'); }
+/* line 492, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-active .x-frame-mc {
+  background-color: white;
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-active-bg.gif'); }
+/* line 506, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-disabled .x-frame-tl,
+.x-nbr .x-tab-top-disabled .x-frame-bl,
+.x-nbr .x-tab-top-disabled .x-frame-tr,
+.x-nbr .x-tab-top-disabled .x-frame-br,
+.x-nbr .x-tab-top-disabled .x-frame-tc,
+.x-nbr .x-tab-top-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-disabled-corners.gif'); }
+/* line 510, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-disabled .x-frame-ml,
+.x-nbr .x-tab-top-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-disabled-sides.gif'); }
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-disabled .x-frame-mc {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-disabled-bg.gif'); }
+/* line 527, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-disabled .x-frame-tl,
+.x-nbr .x-tab-bottom-disabled .x-frame-bl,
+.x-nbr .x-tab-bottom-disabled .x-frame-tr,
+.x-nbr .x-tab-bottom-disabled .x-frame-br,
+.x-nbr .x-tab-bottom-disabled .x-frame-tc,
+.x-nbr .x-tab-bottom-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-disabled-corners.gif'); }
+/* line 531, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-disabled .x-frame-ml,
+.x-nbr .x-tab-bottom-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-disabled-sides.gif'); }
+/* line 535, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-disabled .x-frame-mc {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-disabled-bg.gif'); }
+
+/* line 25, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-autowidth-table table.x-grid-table {
+  table-layout: auto;
+  width: auto !important; }
+
+/* line 33, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-elbow-plus,
+.x-tree-elbow-minus,
+.x-tree-elbow-end-plus,
+.x-tree-elbow-end-minus {
+  cursor: pointer; }
+
+/* line 37, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-icon {
+  margin-right: 4px; }
+
+/* line 52, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-elbow,
+.x-tree-elbow-line,
+.x-tree-elbow-end,
+.x-tree-elbow-plus,
+.x-tree-elbow-minus,
+.x-tree-elbow-end-plus,
+.x-tree-elbow-end-minus,
+.x-tree-icon-end,
+.x-tree-icon-end-plus,
+.x-tree-icon-leaf,
+.x-tree-elbow-empty,
+.x-tree-icon-parent {
+  height: 24px;
+  width: 20px; }
+
+/* line 67, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow,
+.x-tree-lines .x-tree-elbow-line,
+.x-tree-lines .x-tree-elbow-end,
+.x-tree-elbow-plus,
+.x-tree-elbow-minus,
+.x-tree-elbow-end-plus,
+.x-tree-elbow-end-minus,
+.x-tree-icon-end,
+.x-tree-icon-end-plus,
+.x-tree-icon-leaf,
+.x-tree-icon-parent {
+  background-image: url('../../resources/themes/images/neptune/tree/elbows.png'); }
+
+/* line 73, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-elbow-plus,
+.x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/neptune/tree/icons-gray.png');
+  background-position: 0px 0; }
+
+/* line 79, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-grid-tree-node-expanded .x-tree-elbow-plus,
+.x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/neptune/tree/icons-gray.png');
+  background-position: -20px 0; }
+
+/* line 86, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-plus {
+  background-image: url('../../resources/themes/images/neptune/tree/icons-gray.png');
+  background-position: -80px 0; }
+/* line 91, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/neptune/tree/icons-gray.png');
+  background-position: -100px 0; }
+/* line 96, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus {
+  background-image: url('../../resources/themes/images/neptune/tree/icons-gray.png');
+  background-position: -120px 0; }
+/* line 101, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/neptune/tree/icons-gray.png');
+  background-position: -140px 0; }
+
+/* line 110, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-plus,
+.x-tree-arrows .x-tree-elbow-end-plus {
+  background-position: -40px 0; }
+/* line 115, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-plus,
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-position: -60px 0; }
+
+/* line 122, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-arrows.x-tree-lines .x-tree-elbow-plus {
+  background-position: -160px 0; }
+/* line 126, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-arrows.x-tree-lines .x-tree-elbow-end-plus {
+  background-position: -180px 0; }
+/* line 130, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-arrows.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus {
+  background-position: -200px 0; }
+/* line 134, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-arrows.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-position: -220px 0; }
+
+/* line 141, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-icon-parent {
+  background-position: -240px 0 !important;
+  background-image: url('../../resources/themes/images/neptune/tree/icons-orange.png'); }
+
+/* line 146, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-grid-tree-node-expanded .x-tree-icon-parent {
+  background-position: -300px 0 !important; }
+
+/* line 150, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-icon-leaf {
+  background-position: -360px 0 !important; }
+
+/* line 156, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-icon-parent {
+  width: 20px;
+  background-position: -260px 0 !important; }
+/* line 161, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-icon-parent {
+  background-position: -320px 0 !important; }
+
+/* line 167, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-icon-leaf {
+  width: 20px;
+  background-position: -360px 0 !important;
+  background-image: url('../../resources/themes/images/neptune/tree/icons-orange.png'); }
+
+/* line 174, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-icon-leaf {
+  background-position: -380px 0 !important; }
+
+/* line 188, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-grid-row-selected .x-tree-elbow-plus,
+.x-grid-row-selected .x-tree-elbow-minus,
+.x-grid-row-selected .x-tree-elbow-end-plus,
+.x-grid-row-selected .x-tree-elbow-end-minus,
+.x-grid-row-selected .x-tree-icon-end,
+.x-grid-row-selected .x-tree-icon-end-plus,
+.x-grid-row-selected .x-tree-icon-leaf,
+.x-grid-row-selected .x-tree-icon-parent {
+  background-image: url('../../resources/themes/images/neptune/tree/icons-white.png') !important; }
+
+/* line 195, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-line {
+  background-image: url('../../resources/themes/images/neptune/tree/elbows.png');
+  background-position: 0 48px; }
+/* line 200, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow {
+  background-image: url('../../resources/themes/images/neptune/tree/elbows.png');
+  background-position: 0 0px; }
+/* line 205, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-end {
+  background-image: url('../../resources/themes/images/neptune/tree/elbows.png');
+  background-position: 0 24px; }
+
+/* line 223, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-grid-cell-treecolumn .x-grid-cell-inner {
+  padding: 0;
+  line-height: 23px; }
+
+/* line 228, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-grid-with-row-lines .x-grid-cell-treecolumn .x-grid-cell-inner {
+  line-height: 21px; }
+
+/* line 232, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-panel .x-grid-cell-inner {
+  cursor: pointer; }
+  /* line 234, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+  .x-tree-panel .x-grid-cell-inner img {
+    display: inline-block;
+    vertical-align: top; }
+
+/* line 274, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-checkbox {
+  margin: 4px 3px 0 0;
+  display: inline-block;
+  vertical-align: top;
+  width: 17px;
+  height: 17px;
+  background: no-repeat;
+  background-image: url('../../resources/themes/images/neptune/checkbox.gif');
+  overflow: hidden;
+  padding: 0;
+  border: 0; }
+  /* line 287, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+  .x-tree-checkbox::-moz-focus-inner {
+    padding: 0;
+    border: 0; }
+
+/* line 293, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-grid-with-row-lines .x-tree-checkbox {
+  margin-top: 3px; }
+
+/* line 297, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-checkbox-checked {
+  background-position: 0 -17px; }
+
+/* line 301, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-drop-ok-append .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/neptune/tree/drop-append.gif'); }
+
+/* line 305, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-drop-ok-above .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/neptune/tree/drop-above.gif'); }
+
+/* line 309, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-drop-ok-below .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/neptune/tree/drop-below.gif'); }
+
+/* line 313, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-drop-ok-between .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/neptune/tree/drop-between.gif'); }
+
+/* line 317, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-grid-tree-loading .x-tree-icon {
+  background-image: url('../../resources/themes/images/neptune/tree/loading.gif'); }
+
+/* line 321, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-ddindicator {
+  height: 1px;
+  border-width: 1px 0px 0px;
+  border-style: dotted;
+  border-color: green; }
+
+/* line 328, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-grid-tree-loading span {
+  font-style: italic;
+  color: #444444; }
+
+/* line 333, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-animator-wrap {
+  overflow: hidden; }
+
+/* line 2, ../themes/stylesheets/neptune/default/widgets/_drawcomponent.scss */
+.x-surface {
+  display: -moz-inline-box;
+  -moz-box-orient: vertical;
+  display: inline-block;
+  vertical-align: middle;
+  *vertical-align: auto;
+  overflow: hidden; }
+  /* line 7, ../../../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.11.7/frameworks/compass/stylesheets/compass/css3/_inline-block.scss */
+  .x-surface {
+    *display: inline; }
+
+/* line 7, ../themes/stylesheets/neptune/default/widgets/_drawcomponent.scss */
+.rvml {
+  behavior: url(#default#VML); }
+
+/* line 15, ../themes/stylesheets/neptune/default/widgets/_drawcomponent.scss */
+.x-vml-sprite {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px; }
+
+/* line 23, ../themes/stylesheets/neptune/default/widgets/_drawcomponent.scss */
+.x-vml-group {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1000px;
+  height: 1000px; }
+
+/* line 31, ../themes/stylesheets/neptune/default/widgets/_drawcomponent.scss */
+.x-vml-measure-span {
+  position: absolute;
+  left: -9999em;
+  top: -9999em;
+  padding: 0;
+  margin: 0;
+  display: inline; }
+
+/* line 40, ../themes/stylesheets/neptune/default/widgets/_drawcomponent.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block; }
+
+/* line 48, ../themes/stylesheets/neptune/default/widgets/_drawcomponent.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block; }
+
+/* line 2, ../themes/stylesheets/neptune/default/widgets/_viewport.scss */
+.x-viewport, .x-viewport body {
+  margin: 0;
+  padding: 0;
+  border: 0 none;
+  overflow: hidden;
+  height: 100%;
+  position: static; }
+
+/* line 7, ../themes/stylesheets/neptune/default/util/_dragdrop.scss */
+.x-dd-drag-repair .x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+/* line 11, ../themes/stylesheets/neptune/default/util/_dragdrop.scss */
+.x-dd-drag-repair .x-dd-drop-icon {
+  display: none; }
+
+/* line 16, ../themes/stylesheets/neptune/default/util/_dragdrop.scss */
+.x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
+  opacity: 0.85;
+  padding: 5px;
+  padding-left: 20px;
+  white-space: nowrap;
+  color: #000;
+  font: normal 11px "Helvetica Neue", Arial, Verdana, sans-serif;
+  border: 1px solid;
+  border-color: #ddd #bbb #bbb #ddd;
+  background-color: #fff; }
+
+/* line 33, ../themes/stylesheets/neptune/default/util/_dragdrop.scss */
+.x-dd-drop-icon {
+  position: absolute;
+  top: 3px;
+  left: 3px;
+  display: block;
+  width: 16px;
+  height: 16px;
+  background-color: transparent;
+  background-position: center;
+  background-repeat: no-repeat;
+  z-index: 1; }
+
+/* line 50, ../themes/stylesheets/neptune/default/util/_dragdrop.scss */
+.x-view-selector {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 0;
+  background-color: #c3daf9;
+  border: 1px dotted #3399bb;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+
+/* line 65, ../themes/stylesheets/neptune/default/util/_dragdrop.scss */
+.x-dd-drop-nodrop .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/neptune/dd/drop-no.gif'); }
+
+/* line 69, ../themes/stylesheets/neptune/default/util/_dragdrop.scss */
+.x-dd-drop-ok .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/neptune/dd/drop-yes.gif'); }
+
+/* line 73, ../themes/stylesheets/neptune/default/util/_dragdrop.scss */
+.x-dd-drop-ok-add .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/neptune/dd/drop-add.gif'); }
+
+/* line 2, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-handle {
+  position: absolute;
+  z-index: 100;
+  font-size: 1px;
+  line-height: 6px;
+  overflow: hidden;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 13, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-handle-east {
+  width: 6px;
+  height: 100%;
+  right: 0;
+  top: 0; }
+
+/* line 24, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-east {
+  cursor: e-resize; }
+/* line 28, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-south {
+  cursor: s-resize; }
+/* line 32, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-west {
+  cursor: w-resize; }
+/* line 36, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-north {
+  cursor: n-resize; }
+/* line 40, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southeast {
+  cursor: se-resize; }
+/* line 44, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northwest {
+  cursor: nw-resize; }
+/* line 48, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northeast {
+  cursor: ne-resize; }
+/* line 52, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southwest {
+  cursor: sw-resize; }
+
+/* line 57, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-handle-south {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  bottom: 0; }
+
+/* line 65, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-handle-west {
+  width: 6px;
+  height: 100%;
+  left: 0;
+  top: 0; }
+
+/* line 73, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-handle-north {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  top: 0; }
+
+/* line 81, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-handle-southeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  bottom: 0;
+  z-index: 101; }
+
+/* line 91, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-handle-northwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  top: 0;
+  z-index: 101; }
+
+/* line 101, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-handle-northeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  top: 0;
+  z-index: 101; }
+
+/* line 111, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-handle-southwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+  z-index: 101; }
+
+/* line 123, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-ie .x-resizable-handle-east {
+  margin-right: -1px;
+  /*IE rounding error*/ }
+/* line 127, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-ie .x-resizable-handle-south {
+  margin-bottom: -1px; }
+
+/* line 132, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle, .x-resizable-pinned .x-resizable-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1; }
+
+/* line 136, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-window .x-window-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 140, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-window-collapsed .x-window-handle {
+  display: none; }
+
+/* line 144, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-proxy {
+  border: 1px dashed #3b5a82;
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  z-index: 50000; }
+
+/* line 153, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-overlay {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  display: none;
+  z-index: 200000;
+  background-color: #fff;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 173, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-west {
+  background-position: left;
+  background-image: url('../../resources/themes/images/neptune/sizer/e-handle.gif'); }
+/* line 179, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-north {
+  background-position: top;
+  background-image: url('../../resources/themes/images/neptune/sizer/s-handle.gif'); }
+/* line 184, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+  background-position: top left;
+  background-image: url('../../resources/themes/images/neptune/sizer/se-handle.gif'); }
+/* line 189, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+  background-position: bottom right;
+  background-image: url('../../resources/themes/images/neptune/sizer/nw-handle.gif'); }
+/* line 194, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+  background-position: bottom left;
+  background-image: url('../../resources/themes/images/neptune/sizer/ne-handle.gif'); }
+/* line 199, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+  background-position: top right;
+  background-image: url('../../resources/themes/images/neptune/sizer/sw-handle.gif'); }
+
+/* line 3, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-splitter .x-collapse-el {
+  position: absolute;
+  cursor: pointer;
+  background-color: transparent;
+  background-repeat: no-repeat !important; }
+
+/* line 13, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-splitter-over {
+  background: rgba(0, 0, 0, 0.3); }
+
+/* line 18, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-layout-split-left,
+.x-layout-split-right {
+  top: 50%;
+  margin-top: -17px;
+  width: 5px;
+  height: 35px; }
+
+/* line 28, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-layout-split-top,
+.x-layout-split-bottom {
+  left: 50%;
+  width: 35px;
+  height: 5px;
+  margin-left: -17px; }
+
+/* line 37, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-layout-split-left {
+  background: no-repeat top right;
+  background-image: url('../../resources/themes/images/neptune/util/splitter/mini-left.gif'); }
+
+/* line 42, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-layout-split-right {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/neptune/util/splitter/mini-right.gif'); }
+
+/* line 47, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-layout-split-top {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/neptune/util/splitter/mini-top.gif'); }
+
+/* line 52, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-layout-split-bottom {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/neptune/util/splitter/mini-bottom.gif'); }
+
+/* line 58, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-left {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/neptune/util/splitter/mini-right.gif'); }
+/* line 63, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-right {
+  background: no-repeat top right;
+  background-image: url('../../resources/themes/images/neptune/util/splitter/mini-left.gif'); }
+/* line 68, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-top {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/neptune/util/splitter/mini-bottom.gif'); }
+/* line 73, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-bottom {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/neptune/util/splitter/mini-top.gif'); }
+
+/* line 79, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-splitter-horizontal {
+  cursor: e-resize;
+  cursor: row-resize;
+  font-size: 1px; }
+
+/* line 84, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-splitter-vertical {
+  cursor: e-resize;
+  cursor: col-resize;
+  font-size: 1px; }
+
+/* line 89, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-splitter-collapsed {
+  cursor: default; }
+
+/* line 93, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-splitter-active {
+  z-index: 4;
+  font-size: 1px;
+  background: #000; }
+
+/* line 101, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-splitter-active .x-collapse-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 106, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-proxy-el {
+  position: absolute;
+  background: #000; }
+
+/* line 6, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-docked {
+  position: absolute !important;
+  z-index: 1; }
+
+/**
+  * Dock Layouts
+  * @todo move this somewhere else?
+  */
+/* line 19, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-docked-bottom {
+  border-top-width: 0 !important; }
+
+/* line 23, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-docked-left {
+  border-right-width: 0 !important; }
+
+/* line 27, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-docked-right {
+  border-left-width: 0 !important; }
+
+/* line 31, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-docked-noborder-top {
+  border-top-width: 0 !important; }
+
+/* line 35, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-docked-noborder-right {
+  border-right-width: 0 !important; }
+
+/* line 39, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-docked-noborder-bottom {
+  border-bottom-width: 0 !important; }
+
+/* line 43, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-docked-noborder-left {
+  border-left-width: 0 !important; }
+
+/* line 47, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-box-inner {
+  overflow: hidden;
+  position: relative;
+  left: 0;
+  top: 0; }
+
+/* line 55, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-box-item {
+  position: absolute !important;
+  left: 0;
+  top: 0; }
+
+/* line 61, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-rtl .x-box-item {
+  right: 0;
+  left: auto; }
+
+/* line 67, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-box-layout-ct,
+.x-border-layout-ct {
+  overflow: hidden; }
+
+/* line 72, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-border-layout-ct {
+  background-color: #E4E5E5; }
+  /* line 75, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+  .x-border-layout-ct .x-border-layout-ct {
+    background-color: #d7d8d8; }
+
+/* line 80, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-panel-default-framed > .x-border-layout-ct {
+  background-color: #167cce; }
+  /* line 83, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+  .x-panel-default-framed > .x-border-layout-ct .x-border-layout-ct {
+    background-color: #146eb7; }
+
+/* line 97, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-overflow-hidden {
+  overflow: hidden !important; }
+
+/* line 101, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-inline-children > * {
+  display: inline-block !important; }
+
+/* line 105, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-abs-layout-ct {
+  position: relative; }
+
+/* line 109, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-abs-layout-item {
+  position: absolute !important; }
+
+/* line 113, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-fit-item {
+  position: relative; }
+
+/* line 117, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-border-region-slide-in {
+  z-index: 5; }
+
+/* line 121, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-region-collapsed-placeholder {
+  z-index: 4; }
+
+/* line 132, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-frame-tl,
+.x-frame-tr,
+.x-frame-tc,
+.x-frame-bl,
+.x-frame-br,
+.x-frame-bc {
+  overflow: hidden;
+  background-repeat: no-repeat; }
+
+/* line 138, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-frame-tc,
+.x-frame-bc {
+  background-repeat: repeat-x; }
+
+/* line 142, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-frame-mc {
+  position: relative;
+  background-repeat: repeat-x;
+  overflow: hidden; }
+
+/* line 151, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-box-scroller-left, .x-box-scroller-right {
+  height: 100%;
+  z-index: 5; }
+
+/* line 157, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-toolbar-scroll-left, .x-tabbar-scroll-left,
+.x-toolbar-scroll-right, .x-tabbar-scroll-right {
+  position: relative; }
+
+/* line 173, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-toolbar-scroll-left-disabled,
+.x-tabbar-scroll-left-disabled,
+.x-toolbar-scroll-right-disabled,
+.x-tabbar-scroll-right-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  cursor: default; }
+
+/* line 178, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-box-scroller-left {
+  float: left; }
+
+/* line 204, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-horizontal-box-overflow-body {
+  float: left; }
+
+/* line 208, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-box-scroller-right {
+  float: right; }
+  /* line 212, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right,
+  .x-box-scroller-right .x-tabbar-scroll-right {
+    background: url('../../resources/themes/images/neptune/tab-bar/scroll-right.gif') no-repeat 0 0; }
+  /* line 215, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-hover {
+    background-position: -18px 0; }
+  /* line 219, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-disabled,
+  .x-box-scroller-right .x-tabbar-scroll-right-disabled {
+    background-position: 0 0; }
+  /* line 223, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right {
+    background-image: url('../../resources/themes/images/neptune/toolbar/scroll-right.gif'); }
+  /* line 226, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-hover {
+    background-position: -14px 0; }
+  /* line 229, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-disabled {
+    background-position: 0 0; }
+
+/* line 236, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-box-scroller-top .x-box-scroller {
+  line-height: 0;
+  font-size: 0; }
+/* line 240, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-box-scroller-top .x-menu-scroll-top {
+  background: transparent no-repeat center center;
+  background-image: url('../../resources/themes/images/neptune/layout/mini-top.gif');
+  height: 8px;
+  cursor: pointer; }
+
+/* line 248, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-box-scroller-bottom .x-box-scroller {
+  line-height: 0;
+  font-size: 0; }
+/* line 252, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-box-scroller-bottom .x-menu-scroll-bottom {
+  background: transparent no-repeat center center;
+  background-image: url('../../resources/themes/images/neptune/layout/mini-bottom.gif');
+  height: 8px;
+  cursor: pointer; }
+
+/* line 260, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-box-menu-right {
+  float: right;
+  padding-right: 5px; }
+
+/* line 265, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-column {
+  float: left; }
+
+/* line 269, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-ie6 .x-column {
+  display: inline;
+  /*prevent IE6 double-margin bug*/ }
+
+/* line 10, ../themes/stylesheets/neptune/default/layout/_accordion.scss */
+.x-accordion-hd .x-panel-header-text {
+  color: black;
+  font-weight: bold;
+  font-size: 12px; }
+
+/* line 16, ../themes/stylesheets/neptune/default/layout/_accordion.scss */
+.x-accordion-hd {
+  padding: 5px 5px 7px 5px;
+  cursor: pointer;
+  background-image: none;
+  background-color: #f7f7f8; }
+  /* line 45, ../themes/stylesheets/neptune/default/layout/_accordion.scss */
+  .x-accordion-hd.x-panel-header-over {
+    background-color: #A6DDFF; }
+  /* line 49, ../themes/stylesheets/neptune/default/layout/_accordion.scss */
+  .x-accordion-hd.x-panel-header-pressed {
+    background-color: #0E4DAD; }
+    /* line 52, ../themes/stylesheets/neptune/default/layout/_accordion.scss */
+    .x-accordion-hd.x-panel-header-pressed .x-panel-header-text {
+      color: #fff; }
+
+/* line 58, ../themes/stylesheets/neptune/default/layout/_accordion.scss */
+.x-accordion-body {
+  border-bottom: 0;
+  background: #fff; }
+
+/* line 64, ../themes/stylesheets/neptune/default/layout/_accordion.scss */
+.x-accordion-item {
+  margin: 5px 5px 0 5px; }
+
+/* line 68, ../themes/stylesheets/neptune/default/layout/_accordion.scss */
+.x-accordion-body {
+  border-width: 0 !important; }
+
+/*    .#{$prefix}accordion-hd-sibling-expanded {
+    border-top-color: $accordion-border-color !important;
+    @include single-box-shadow($panel-header-inner-border-color, 0, 1px, 0, 0, true);
+}*/
+/* line 77, ../themes/stylesheets/neptune/default/layout/_accordion.scss */
+.x-accordion-hd-last-collapsed {
+  border-bottom-color: #f7f7f8 !important; }
+
+/* line 2, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool {
+  cursor: pointer; }
+  /* line 5, ../themes/stylesheets/neptune/default/util/_tool.scss */
+  .x-tool img {
+    overflow: hidden;
+    width: 16px;
+    height: 16px;
+    cursor: pointer;
+    background-color: transparent;
+    background-repeat: no-repeat;
+    margin: 0; }
+
+/* line 23, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-panel-header-horizontal .x-tool,
+.x-window-header-horizontal .x-tool {
+  margin-left: 5px; }
+
+/* line 29, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-panel-header-tools-first .x-tool {
+  margin-left: 0;
+  margin-right: 5px; }
+
+/* line 37, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-panel-header-vertical .x-tool,
+.x-window-header-vertical .x-tool {
+  margin-bottom: 5px; }
+
+/* line 42, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-placeholder {
+  visibility: hidden; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-maximize {
+  background-position-x: 0px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-minimize {
+  background-position-x: -16px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-restore {
+  background-position-x: -32px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-save {
+  background-position-x: -48px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-refresh {
+  background-position-x: -64px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-help {
+  background-position-x: -80px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-info {
+  background-position-x: -96px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-search {
+  background-position-x: -112px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-gear {
+  background-position-x: -128px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-close {
+  background-position-x: -144px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-minus {
+  background-position-x: -160px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-plus {
+  background-position-x: -176px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-print {
+  background-position-x: -192px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-up {
+  background-position-x: -208px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-toggle {
+  background-position-x: -208px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-collapse {
+  background-position-x: -208px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-collapse-top {
+  background-position-x: -208px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-left {
+  background-position-x: -224px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-prev {
+  background-position-x: -224px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-down {
+  background-position-x: -240px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-collapse-bottom {
+  background-position-x: -240px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-expand-bottom {
+  background-position-x: -240px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-expand {
+  background-position-x: -208px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-right {
+  background-position-x: -256px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-next {
+  background-position-x: -256px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-collapse-all {
+  background-position-x: -272px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-expand-all {
+  background-position-x: -288px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-pin {
+  background-position-x: -304px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-unpin {
+  background-position-x: -320px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-collapsed .x-tool-toggle {
+  background-position-x: -240px; }
+
+/* line 221, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-accordion-hd .x-tool-collapse-top {
+  background-position-x: -12px; }
+/* line 221, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-accordion-hd .x-tool-collapse-bottom {
+  background-position-x: 0px; }
+/* line 221, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-accordion-hd .x-tool-expand-top {
+  background-position-x: -12px; }
+/* line 221, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-accordion-hd .x-tool-expand-bottom {
+  background-position-x: 0px; }
+
+/* line 2, ../themes/stylesheets/neptune/default/util/_scroller.scss */
+.x-horizontal-scroller-present .x-grid-body {
+  border-bottom-width: 0px; }
+
+/* line 6, ../themes/stylesheets/neptune/default/util/_scroller.scss */
+.x-vertical-scroller-present .x-grid-body {
+  border-right-width: 0px; }
+
+/* line 10, ../themes/stylesheets/neptune/default/util/_scroller.scss */
+.x-scroller {
+  overflow: hidden; }
+
+/* line 14, ../themes/stylesheets/neptune/default/util/_scroller.scss */
+.x-scroller-vertical {
+  border: 1px solid #167cce;
+  border-top-color: white; }
+
+/* line 19, ../themes/stylesheets/neptune/default/util/_scroller.scss */
+.x-scroller-horizontal {
+  border: 1px solid #167cce; }
+
+/* line 23, ../themes/stylesheets/neptune/default/util/_scroller.scss */
+.x-vertical-scroller-present .x-scroller-horizontal {
+  border-right-width: 0px; }
+
+/* line 27, ../themes/stylesheets/neptune/default/util/_scroller.scss */
+.x-scroller-ct {
+  overflow: hidden;
+  position: absolute;
+  margin: 0;
+  padding: 0;
+  border: none;
+  left: 0px;
+  top: 0px;
+  /*
+  In IE9 (only), the border-box style causes the scroller-ct to be 0px in the
+  perpendicular dimension and breaks the scroll as well as offsets it by the left
+  offset that we use to try and keep some size on this element. This works on all
+  browsers (including IE9).
+  */
+  box-sizing: content-box !important;
+  -ms-box-sizing: content-box !important;
+  -moz-box-sizing: content-box !important;
+  -webkit-box-sizing: content-box !important; }
+
+/* line 48, ../themes/stylesheets/neptune/default/util/_scroller.scss */
+.x-scroller-vertical .x-scroller-ct {
+  overflow-y: scroll; }
+
+/* line 52, ../themes/stylesheets/neptune/default/util/_scroller.scss */
+.x-scroller-horizontal .x-scroller-ct {
+  overflow-x: scroll; }
+
+/* line 6, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+.x-html {
+  /* Begin bidirectionality settings (do not change) */ }
+  /* line 32, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html html,
+  .x-html address,
+  .x-html blockquote,
+  .x-html body,
+  .x-html dd,
+  .x-html div,
+  .x-html dl,
+  .x-html dt,
+  .x-html fieldset,
+  .x-html form,
+  .x-html frame, .x-html frameset,
+  .x-html h1,
+  .x-html h2,
+  .x-html h3,
+  .x-html h4,
+  .x-html h5,
+  .x-html h6,
+  .x-html noframes,
+  .x-html ol,
+  .x-html p,
+  .x-html ul,
+  .x-html center,
+  .x-html dir,
+  .x-html hr,
+  .x-html menu,
+  .x-html pre {
+    display: block; }
+  /* line 33, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html li {
+    display: list-item;
+    list-style: disc; }
+  /* line 34, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html head {
+    display: none; }
+  /* line 35, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html table {
+    display: table; }
+  /* line 36, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html tr {
+    display: table-row; }
+  /* line 37, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html thead {
+    display: table-header-group; }
+  /* line 38, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html tbody {
+    display: table-row-group; }
+  /* line 39, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html tfoot {
+    display: table-footer-group; }
+  /* line 40, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html col {
+    display: table-column; }
+  /* line 41, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html colgroup {
+    display: table-column-group; }
+  /* line 43, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html td,
+  .x-html th {
+    display: table-cell; }
+  /* line 44, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html caption {
+    display: table-caption; }
+  /* line 45, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html th {
+    font-weight: bolder;
+    text-align: center; }
+  /* line 46, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html caption {
+    text-align: center; }
+  /* line 47, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html body {
+    margin: 8px; }
+  /* line 48, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html h1 {
+    font-size: 2em;
+    margin: .67em 0; }
+  /* line 49, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html h2 {
+    font-size: 1.5em;
+    margin: .75em 0; }
+  /* line 50, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html h3 {
+    font-size: 1.17em;
+    margin: .83em 0; }
+  /* line 60, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html h4,
+  .x-html p,
+  .x-html blockquote,
+  .x-html ul,
+  .x-html fieldset,
+  .x-html form,
+  .x-html ol,
+  .x-html dl,
+  .x-html dir,
+  .x-html menu {
+    margin: 1.12em 0; }
+  /* line 61, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html h5 {
+    font-size: .83em;
+    margin: 1.5em 0; }
+  /* line 62, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html h6 {
+    font-size: .75em;
+    margin: 1.67em 0; }
+  /* line 70, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html h1,
+  .x-html h2,
+  .x-html h3,
+  .x-html h4,
+  .x-html h5,
+  .x-html h6,
+  .x-html b,
+  .x-html strong {
+    font-weight: bolder; }
+  /* line 71, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html blockquote {
+    margin-left: 40px;
+    margin-right: 40px; }
+  /* line 76, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html i,
+  .x-html cite,
+  .x-html em,
+  .x-html var,
+  .x-html address {
+    font-style: italic; }
+  /* line 81, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html pre,
+  .x-html tt,
+  .x-html code,
+  .x-html kbd,
+  .x-html samp {
+    font-family: monospace; }
+  /* line 82, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html pre {
+    white-space: pre; }
+  /* line 86, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html button,
+  .x-html textarea,
+  .x-html input,
+  .x-html select {
+    display: inline-block; }
+  /* line 87, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html big {
+    font-size: 1.17em; }
+  /* line 90, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html small,
+  .x-html sub,
+  .x-html sup {
+    font-size: .83em; }
+  /* line 91, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html sub {
+    vertical-align: sub; }
+  /* line 92, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html sup {
+    vertical-align: super; }
+  /* line 93, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html table {
+    border-spacing: 2px; }
+  /* line 96, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html thead,
+  .x-html tbody,
+  .x-html tfoot {
+    vertical-align: middle; }
+  /* line 98, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html td,
+  .x-html th {
+    vertical-align: inherit; }
+  /* line 101, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html s,
+  .x-html strike,
+  .x-html del {
+    text-decoration: line-through; }
+  /* line 102, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html hr {
+    border: 1px inset; }
+  /* line 107, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html ol,
+  .x-html ul,
+  .x-html dir,
+  .x-html menu,
+  .x-html dd {
+    margin-left: 40px; }
+  /* line 108, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html ul, .x-html menu, .x-html dir {
+    list-style-type: disc; }
+  /* line 109, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html ol {
+    list-style-type: decimal; }
+  /* line 113, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html ol ul,
+  .x-html ul ol,
+  .x-html ul ul,
+  .x-html ol ol {
+    margin-top: 0;
+    margin-bottom: 0; }
+  /* line 115, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html u,
+  .x-html ins {
+    text-decoration: underline; }
+  /* line 116, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html br:before {
+    content: "\A"; }
+  /* line 117, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html :before, .x-html :after {
+    white-space: pre-line; }
+  /* line 118, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html center {
+    text-align: center; }
+  /* line 119, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html :link, .x-html :visited {
+    text-decoration: underline; }
+  /* line 120, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html :focus {
+    outline: invert dotted thin; }
+  /* line 123, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html BDO[DIR="ltr"] {
+    direction: ltr;
+    unicode-bidi: bidi-override; }
+  /* line 124, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html BDO[DIR="rtl"] {
+    direction: rtl;
+    unicode-bidi: bidi-override; }
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-neptune.css
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-neptune.css	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-neptune.css	(revision 18277)
@@ -0,0 +1,12450 @@
+/*
+This file is part of Ext JS 4.1
+
+Copyright (c) 2011-2012 Sencha Inc
+
+Contact:  http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2012-07-04 21:11:01 (65ff594cd80b9bad45df640c22cc0adb52c95a7b)
+*/
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+/**
+ * @var {string} $theme-name
+ * The name of the theme. This must match the the output directory of the images.
+ * (defaults to 'default')
+ */
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+/**
+ * @var {string} $font-family
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $font-size
+ * The default font-size to be used throughout the theme.
+ */
+/**
+ * @var {string} $base-gradient
+ * The base gradient to be used throughout the theme.
+ * Used for elements like buttons, panels, etc.
+ */
+/**
+ * @var {color} $base-color
+ * The base color to be used throughout the theme.
+ */
+/**
+ * @var {color} $neutral-color
+ * The neutral color to be used throughout the theme.
+ */
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules
+ */
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+/**
+ * @var {boolean} $compile-all
+ * True to copile all CSS, even if above include rules are false
+ */
+/**
+ * @var {boolean} $scope-reset-css
+ * True to scope the reset CSS within the $prefix variable.
+ */
+/**
+ * @var {color} $css-shadow-background-color
+ * The base color for CSS shadows
+ */
+/**
+ * @var {boolean} $include-shadow-images
+ * True to include all shadow images.
+ */
+/**
+ * @var {boolean} $include-highlights
+ * True to include all shadows, highlights, and gradients
+ */
+/* line 85, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+.base-pictos, .forbidden:after, .forbidden:before, .people:after, .people:before, .information:after, .information:before, .link:after, .link:before, .love:after, .love:before, .list:after, .list:before, .music:after, .music:before, .edit2:after, .edit2:before, .chat2:after, .chat2:before, .retweet:after, .retweet:before, .search:after, .search:before, .time:after, .time:before, .photo:after, .photo:before, .chat:after, .chat:before, .settings:after, .settings:before, .settings2:after, .settings2:before, .bookmark:after, .bookmark:before, .link2:after, .link2:before, .tweet:after, .tweet:before, .cloud:after, .cloud:before, .close:after, .close:before, .home:after, .home:before, .key:after, .key:before, .mail:after, .mail:before, .paste:after, .paste:before, .power:after, .power:before, .open:after, .open:before, .star:after, .star:before, .person:after, .person:before, .video:after, .video:before, .edit:after, .edit:before, .charts:after, .charts:before, .expand:after, .expand:before, .refresh:after, .refresh:before, .tick:after, .tick:before, .tick2:after, .tick2:before, .play:after, .play:before, .pause:after, .pause:before, .stop:after, .stop:before, .forward:after, .forward:before, .rewind:after, .rewind:before, .play2:after, .play2:before, .refresh2:after, .refresh2:before, .minus:after, .minus:before, .left:after, .left:before, .right:after, .right:before, .date:after, .date:before, .shuffle:after, .shuffle:before, .wifi:after, .wifi:before, .speed:after, .speed:before, .more:after, .more:before, .print:after, .print:before, .warning:after, .warning:before, .location:after, .location:before, .trash:after, .trash:before, .cart:after, .cart:before, .flag:after, .flag:before, .add:after, .add:before, .lock:after, .lock:before, .unlock:after, .unlock:before, .remove:after, .remove:before, .add2:after, .add2:before, .up:after, .up:before, .down:after, .down:before, .bell:after, .bell:before, .quote:after, .quote:before, .novolume:after, .novolume:before, .volume:after, .volume:before, .question:after, .question:before, .x-form-invalid-icon ul:after, .x-form-invalid-icon ul:before, .x-tab-close-btn:after, .x-tab-close-btn:before {
+  font-family: Pictos;
+  color: transparent;
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  position: absolute;
+  top: 0;
+  left: 0; }
+
+/* Pictos Font
+* Copyright © 2010 Drew Wilson
+* http://www.drewwilson.com  -  http://pictos.drewwilson.com
+*
+* The fonts included in this stylesheet are subject to the End User License you purchased
+* from Drew Wilson. The fonts are protected under domestic and international trademark and 
+* copyright law. You are prohibited from modifying, reverse engineering, duplicating, or
+* distributing this font software.
+*
+* This font is NOT free. It is illegal to use this font without paying for a license. 
+*/
+@font-face {
+  font-family: 'Pictos';
+  src: url("pictos-web.eot");
+  src: local("☺"), url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAADJoAA0AAAAAR2QAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABMAAAABwAAAAcWF3wvkdERUYAAAFMAAAAHQAAACAAkQAET1MvMgAAAWwAAABIAAAAYIMUf1ljbWFwAAABtAAAAKkAAAFKznYCbGdhc3AAAAJgAAAACAAAAAj//wADZ2x5ZgAAAmgAACuvAAA9aCcOMcFoZWFkAAAuGAAAADEAAAA29KtLLWhoZWEAAC5MAAAAHgAAACQGhQMnaG10eAAALmwAAAEzAAABkElMDS1sb2NhAAAvoAAAAMoAAADKAij1am1heHAAADBsAAAAHgAAACAAvATkbmFtZQAAMIwAAAEyAAADaDtfCVNwb3N0AAAxwAAAAKYAAADtXH4MXwAAAAEAAAAAxtQumQAAAADIj74XAAAAAMj6BA142mNgZGBg4ANiCQYQYGJgBMJkIGYB8xgACIsAlgAAAHjaY2BiVmKcwMDKwMK0h6mLgYGhB0Iz3mUwYvjFgAqYkTkFlUXFDA4MCgz/md79ZwNKmjBsAQozguSYpjKtBVIKDIwAh2YNZHjaY2BgYGaAYBkGRgYQcAHyGMF8FgYNIM0GpBkZmBjqGP7//w/kK4Do/4//J0PVAwEjGwOcw8gEJJgYUAFQkpmFlY2dg5OLm4eXj19AUEhYRFRMXEJSSlpGVk5eQVFJWUVVTV1DU0tbR1dP38DQyNjE1MzcwtLK2sbWzt7B0cnZxdXN3cPTy9vH188/IDAoOCQ0LDwiMio6JjYuPiGRgVYgiUh1AHjTHZwAAAAAAAAB//8AAnjadXsJgBvFlXa/qj50Sy31MYdGGkmj7vHMeMYjqdX2jGfG53h8cNhgbINvY7ANDtiY08SYK0A4HSDYEBKuQFggwG4AGwxZQjAJ5NzdJCSBJBzJJhDC7iaY3azVs++1NNjkzz8adVdXVVe9evXe996rKglcGBz/ET+bPSeEBV1oFoSiIRdyecuFasnkpWrFKuRlzXBThRRfV6yM1W4dKxeh2nFmx1IzmzWNbHZ6y2UtZw6vWDHMjOHh2pPtPdlsT/uNUPG+J+AfEyrjf+QWe0hoEkqCkBoWXT0v60q5ZOiqJndD3nLUYmWY/53sSgWinbO3Hz9rQDw52dKSfCvZAgdilDO7kfObVAvkZp5+5mifdPeqjdCS8jzKBqb8vUwJ6ZGFzvEb2Is43g6hIswRThZOF3YIAhjdgP3SyB21kLdGoDoITsW/lbJgtEG5ZBb18hBU+sBC8uIg61LFziF3kGCjnCtVHfgU8dVyqn4fbOQXyn/zzF4MqlNCSm1cCVUUScwGkwsjUyLJ15ORSnReMuid4kWCkeRdyYgcgbGE94cVSiikwDlKyHtFCYcVnS6X1FNYcDpdDL/K27HadynB3IDcG5ulhfoj2KQ6EkuKYloLhSLYYnJ3goUVr8N/4WBI8a72Uzux9Q31+7F59bTPPwPn81Q2U+CCIsQFUygLU5F/BXsQlIIrlwxNzluVjsY9Zeiawn2+2hz5WqnzM+dWyyXu5swcfHx24tKnkpvgm1MnTZo6CboHOjsHOv/czJYrzd6aSIotvj2mabEnWpQkfCzJLcoFVa93MmyF1jlz5vyh06/t/8PTSguXvV82x8MwT0trLfPjTd7b//Qs0iwK7eOX8A1svzADZ3uXcC3Sq8mKiaTRZNnWELiY+NSzZSsFP1VxkWSz6tp+sozE48U0+DCKh43KEQfbVGS86i5qAyhl2zTKpRFKcLOUEU0DW8Wmepld6AVnGKRhMI0Ys6p8w8KZ4XBUv02PhpkcCbFwxKB0+BSrR0xG4vFIUuzOz2fN4XgsvLu55Z7PbHt2aO7qtde1NQWvZZETWpWFC5XcafHozmAh2tJkdgR3xr+qKEYm32GpgUAgEg40jU6Ki+EEqF4t1RMJB63uphDoJ9zQt1ZUo/F4VJWSoEqN5KnTV4mRiL5Xj0TEpVM/A5COK8oY33C69/lJF8294OSlIhx3RWDaMkO5LGCsHQyeu0BkXFy4A94BUY4kmhNKUyAYMLMBADUcSVynRcLhns6I0UM4AII6/hP2GrsZcUaAsl7QC07BKTtl+PFf/3oI/+F2uv5V8OcrOv4DfhnrwrqmYAvYQBHRqKQrecfKK/YwEKMrBatDKWplxbY6RCWv2261QyTUUiB4/JvHgwvul9ynlv723aUwFbZ4P97CDrCpbJP3e+8PmzDnIpgBI96VLQtaRq4/3q/tfmPp0JBfGbY8Q1UXLKCKFy5d6sWam0cElPjJ4//IzmPPCjGhVbBoHGpOLTso1AxVmttVx4dLXTOVFCa7WV5uA2YdV3t24aXLRHH5ztva2610q53LPT7cw6XuYTjTWwhP7V526aXLvNYbtWLastJW8ibYuLt7eLh7t4+fzeNP8hXYZ5vQhT2WEIoKjou8m2ifaMgRDQDHEsCuXn7plo6O4R4m9QwfV9sPey5dzr1aLme3ppEA9uzO5bvb8tFKz9BQz25vATy9e/nO2uhNSINtp4vaTf6c2eOvsrfYVf6cKaZiK7Zru6bL3nrppTsn/uG9l76976WX9n2bHpDezvEL+LnsBUQHF9toNxJyu5WQiFzERVQiuiPZPk7S3Rj0B+Xfq1hOCFGFDKw8fNh74DC7W49fHNeN+CS6XJTQ9cRFcUPHR8MvYC9QrcOw8lt+Bcyh7GMq1F8XAkjXxfws9ryQEBxhrjBfOE5YLCwVVvg0kub7WmrZllORjrLRMKtkkjTFIK12S9UylhMAVIv+S/QKZjj2CKBAo1TaplPWc/hFPinQBqf+pXdw2+rNG1dtH+pnPwrvv/yK/REu600zV0lioGvS5C6mMGnVDFOXvFqzlOgKR22Yqp9nv9g6p3Xm2tr7a7rTs1vZ8x89tmnZeUPlKdO3rdr0WG2SfcX+/VfYvcGEvHKmqjFEDtFIzlglx29MZWMhG9sBmX0UTK1Zs7B1TnqnhX/3t85O+/LUOX4u34byFCRrj6xP4CCsRBVozLn6jJA1g+9//fDhrz+OrN2bTnnXptLpFFyUSrNnP/Ye+PhjWPmxN2ZTpq21tgqkG67wY34JXIvtJlE7hBSxjUxAtb1uC5wJo+BUbi1WnUXVKszFyyIHdtKtCtdWixY9U5FVr2EV63jQOf4E38IOot4lBQMRgRBELehKzimoCCI5s6CXi8h27qCFLuuYo/sJlT311FPXek889RS8vnPz5to7cPZ111Vn1x6YWWXNl3n/6lz7PEy+7P43nF9u3Vpbe+2V7uUvv3xO0vU+Qj61jr/JV7PdgkZ6V8xCDJBPdjdzzW5iUanqIvQMQl1UlD4YRhcB5Zhdaaf7rj/hhpchzGbvuqycvnnj9M3fqVy2q5S5eePQ5jyVLr7+0L2drdPnfvuGXbtOv8l9btcutvHmaVPs9NDooesZ6l16/Hz2ffRR8thzGdnY3pC6IciyOBuCunQapC9l9kTbd723X3315kSw/25dv7s/qZy04/wHdmTez9z83VdvuvlVOGFe6W5du7s0upztOGnJjh1LMnU5OJ+fg/oQFHKfkoMqeTjk3+ANrxp6P6iRLrxG8vAYysOzsuzKSeXP8cTyRNyV5evjRoumsucbinjYew1Lq7L8lwRWSFSVpHxDPF63ARGB8+PZZpI81yLvinyrklu/awr45tcIhU4KtYauxS+ch5eTQiFvuClntzd9GErT0zWhEOwIhZZgmTfU1ITtDo6Ps/9B+WAod0EYZC/UZrGD3r3efZgzKAD7CHlJ/orgIlimEC8HQf46yN5fgT1bG6Vvnb5BgbHD2A5HvmMtdrg2lz3HUFn8su38BrYMPSABnCg4kgoPwW+9Vu82uPfpP/8Xithv/TZiwja+hp3i19Mng15U4S9eC/wOzgIb6z39tNfa0MMdiJMHkarQUZyEyfAJ9AGDx73F7GCDr94lr79etwdn8QB7WehEHBOKJuFoXdMIh3AKHZdQturSsw9dGYQhDTTThy0U17zMvrK5Sf0vcI934T8TzZth44kipvmJG72DLG2YrTzbkzn9jESzGLBd12YB1pw4I6D+aPkN6XCccmKR9I3LfqTC/0ohSQqgx5FBjsXG/x3ndiX6hFlhOtmLGFMQTrvBKSN4pkYAr27ZMRWHQDOVR8TFGrKCXkDJrbrDgJd6MXR3ibGwlAz2t2/cODiYu7qnPRGqtJ/y+OOnTJ3ReouZK3Sn5g23nbhgw4aWXFtJutZePG/5448vh/t6pHhESiid50Kn7v2iLx8LdLHVt31heacKTYY5OXXccNMMONdIlqQ97TNg5a23nlqfdz7+JixmFwsYIaRc1S445/3qV+fCnb+unf6rXxO2TRdG+W4ULgUtYZzmVdFRPHSO0uSaCDu7R478L5fm12768FfeBtj5RPPZ8OxWrwaW94vDhw7VMSw2fh7y523sIyakcfYaPRVR7u1qxXYkdEnRtalYtuNmgGcgMfG8i4h5YOHCfKEATSuPyw+Ojg7mjlu16oIbb7wgt+HCC0+HvT6lmdI3+menl6fZgpX7emblL7zhwjyb2XMXrJr1nvf792bOmvrKH1+Z6mM1yd52tNFBjMpOOFb7U1XfqVVkUyaDl6o6jec4mDg//ofcX99g+tOHH0Qi3SQkbEwjfB/NxuNf//jjV1MprS2toYHSUm3tV4QmWaP9HblMsDfEVCURiiqxTCCsRIJiMIz+aCQgAYSXB4KRWEaNsRcmDE1tTXIgqapoZzQVTmqyBgr5SFiTlwUgJMoiY6GwFo0kAmIgxBNJrcVIiQkxHGlJJGIxI6X6utY6fgO8xb6Jc9fqj1bXuNzfC8x3m9TSJ/beALbyyteamhftunKl2DV9elf39Onsm1eddpY3v+Q8AHOrK6/0fjC9u16CfEyPX8TXog63ITrMw5ZN2ULUbABbBr2BagNLCUVBzvdBL7imTKA3UgdarGL42Ceg5wpkH22wYHDU2thxi2VtsM6ybung7aOhxC3B1uCGUOiWBDxpbbH2FMT2ucGjmfpceqFYrL2Q7oyBHcOr9/MYdI+2i5h9dnGDhe1stOZqyVuC+EYLvuJdWizuKWy0RrXELaHQBmxpTyI82s6x37MseClNDXSmY2DF6nF8Uhjjy1hRKAq9OFKcfYznelkfZDhijW25VVTvquvbKRyRTasGtHzAfhVLR+zR88aOu/r4qeGwlBoYWFKc0a5HlaTzFSW2evaMldIZv021tFitLeC2mpmpM2zkr65zJRFQYq0zusOKWgoGktLs1ctG+i9stagq6mwHCvJmNldoR2oygAiIAlzIdSOHnQb6oaD6Rhlnm/dOXTeHyeAlgc1dN9mS5/RZuexF88/8AgwlTyrPWQewfnTycUYi1TenecbxezaFhAkbuRXh/9O+rD/BE1Yyf8wMa417acKyUT0bqTv1o4+8Bw8zIxzeGg5nI7nw2fjdGs6Fs34OZYb9jMjZ+MVM9uxh78GPPoJTvxNpj1DlYytixt/JJL3OCHP4OpbCqKkgdCPFpQzLgh4T/YlyhnnqGFGvNkJ0uHzX1esX63ogfdqqa44mvz2wePHAtMWLsxXLqhRZqm/27CYzEMweP70fk2ZTEJOD3kG/zrSBxa9hpWKFeOaMf559DnVCoqiBbK3qAmJlQf0NPFh7/BFY773zKDt45Afsc4/UUuwfHvUYyZeBvN6O9pB4XeJn88/z+/kh/jP+Jn+L/zv/kB8W7xcfEZ8RXxa/K/5A/BfxZ+Ib4m+OmRNF1soIQ1q/YWbAzVcLiFtOuWI5eTnv4FyV3DxJqZKXOWFa3s5bGEFWMUc20c2X9ZKrlWUTbyV6LBtOxUGt1JBTcXT99LyCH6tgl1C8KEqwSw5asbKLNjevaFhQkSm7YKFylxASewEfKgXMy/di6FQyXL1qlDXbMg3sF0vRl5QLMegjTQLqx3KmQ9UxB1jVKSmGk3eq1JXhomnIkG10jKqrIfoiwlpOCdFCK2Pftk+WVbbcMkp9ntB5GDBULtE7hp6XC3rJUDBuwVG5aE7cXnRjFWMEUE5LZsEgKi3ZREhHGs0SNW9X7Uq5alVLrkH5jqFjP04JWVLSyRktKHIGTDuPOFNykX8WMciRdUPPQBnHWK6gfcgbZt406EWLqMY2rTxeUBuraN1cjerJ/SUHP/hWhuPb6AUgrfhmQUPGWMgWHZ1smhcdm9LxjbyuFEagjHNawA8qW5yR+ckTI/UM07XCFJyTCs5FwSqgNBAkULkvGiUDiUM+WsjGEWYoeSJbM5SyU5KpHLmEjEfIQvrdaj/RU6KYDxNZKJtYI8sQ48rIKRybbmJtoywTU5BrJYfkLg4a0q75M4pETVGwYSTQxDSqHBHcBiRIWAcFr4RGFKtg/TZwKya9oyOlJnK/UnasqoPGHye1j5YTccZ9y1LF/HLFRaS1nQpOZC9zkLc0hw6KAf6TZGEJKrlFKqDLSD6KHAqng+LUi/JWKVj9yCILBYtggAIZLMUm8evYFZIazPJ1QtaROD3PMYdksIRigy/aJHCK7GAH6ALYWsH32vHFQrWMnibKWIkaMZGmiuEaCvEHvQkFmYsqhTNXUWQXB4Kyg19kdd4tG26pH6lEpuIsK9R9CZ1HZK2M3DCr6OVaBXQjkeeuhvzU0e3QiMvI4LJZ11PMyhMzdXJWkHbkZoMtlV4oV/w0Wl+kEzlkIduIWVgT2ZL3mUMcQQZXSKer5Yazg3peRakpV8s+mperKK3ICx37RWL0AbLyyOAyCTTKBbLbMCmtyEXN1ey8WyqTfCOliDlkE7JQQBtftlF4UALyZbeky/i1FDOvFRQEAE2quPLR9Y9nAdBuiRACDphURLyLjHNAZ4lJTJZGICiKuoxFEmMKY0zEAh7CK2eciSL+i4EIV0QZy0HCqxRgIarDGZOxThTfAcVvXQSsj3EHF7E5GRuQReyJnrAivoMtcFBErgBSFA9TeyKWBhnVDOKbnF7GNxhAAK8S3olYxoNMweaZCXIMSVMjzAAJsxM8KWEJl8EfngJ91yz63Dp8B3gARyhyQA+PKGNBJBaIUinM6hwBFpQVGiUERBpNCLtEHkgsgG9hhqiExTDSEpTBfxGZg8qIpDJiIZd8XnLsB0cvE9VAHIEG2WEIRSR8H/sNIBHAJUkiKrmMw6B/5tdFBkCQOIdPIiYiRKXEYzTuAF38VmUZu6+PA6LIIyZBRMFu/AmQaIoi/vhBlJBeSiKN1KI/aKrD5IAkgYRMJScZ/AFSfSB6kSQu4kUhuaA3/I5EZCBrRQokzOQoHsQXjjVFmlSsSvIQkHFeozjrWBLh2LISDNBs4jQjV6hVpBV7CisBBqHcKzcsuakPu0FaRBaiEfE6w5DauayZelaQDF9UOPUSxMRtIOGkIemi4g8QX7EZcRzlDakDhd7mEZGGrYCBaVEiftLoONW7B/irzO8IaGoMWjODbXJIlohL2EcQYr6Y0Ft+o/gXVyAVJ2GWaPLAb04UZZnzMERDIVBCPCgGiBd1mUcisCuRdIDaQOqlIASiKIiBUEJmgWBD/Jgky8TZEBLkbeDUr0qcBxYQUUQKRHiUuIfMZVlRwqkHi/vjSSBZn8VGnm2E9GWag4AYpon21QfqMo58Ih1kkvfPp56VCqLsIxVIqeITh+rCJVQi7g8Uo3N8G6cJx6iIESkSQ+6HxaBIvA/6QkdDi5DIY7uAQCKGSOTxJZwcH0a4zCPYnVKX0STy35ctHH7IFySSeRw0Igiw+kcWA3VtQZEh+eMhRuqEcBQNiNxXDRwYaS3xViJ9njrjNKwtkxb68kmi66sEdUFdohCHFCQvRAoS9qVfIuoh7DftDyTuq7ooh+pSzUizRJSJIAFPlPuIhQ8k1yQ4vuCjNJEukJBFSQIJZmgCcYzIklBdLRkyF2VURncMAigGARoaI+FnMRVll/olWSVFp26wH4mgkxSSKzJhGUlYCCbEEOryjwMOBugtTliE/ElKoUiMY/MI1ViBwBfxIkA8wykWiSsyCg5xihNrRKorBovBGIlBMiHmxEAUZy4oSZwrnKlIDdITDUk+OEkEQkBQz6JJrigipRQsBjQTDFkJhOTBEGcxbgbmLLrh0IIRFlbjNDilLi4oN2Eg1kscq2f8eeYEuDIJiE8oiqOySfJHzH0Moj8+mYbpaw+yWQLCXgmBhFQWAgkm+zCJlwgKuYb8ieIQlSApSpTkeidKdJi4ihTgJ9Yky9iRrxaKGPMVNRAMYRMBtD/hcFBENuJ0JoMxWQzLMd/oEOqh6KuiKHGSvTBiN00k0QkcJUvyzYwvc0lOQs1JTMIBHiO8xlHGsdwlHKC6ZDSkiK8W/sRzXyqwRgsNeAc+1deP9PG7+SL2j7SSB2rBKWC0UwgC+/qTe5/ZB1+Cu8D0Pvf++3AJ3OVtpBhpyvgTfAe7AWOkqCAU/TVJXuZFXjbLfMeRg3ez0J5Dm73Vm17uv+I97xAMwH3eapgF3vNrBX8PNjZ+IT8RYyUZ308IKYyemv0dGillumAXua3YKdN2dVuyTcUx+YmXLPFu6l58Se2NJbAN7/d/7eU330/DEF2ZccmSLtiGhb9Y0u3dtOSS+2HLnOQJS0/809zU8UsX+3FwbPxi7O85QRPSghAEvb8bHBymLftbuhRhd1CsjzE/S8Lw12D37qHO7q1f+tIvvuTdtaBSWeDAGu9bX7t891Dsrjfuuusz3eEK5dJYJD/GPpc97+8mN9VXFyaiOqG9mrDa5QQ0QtUq7cPWw9csVM1Gl8bRFdM8iAcOeEcOwMiZt37hR7fe2pGbmxEDQ+dAl/V4osnMNzV9skztmftB3r/f+yvsvBVr/ujWf8gVO+EzQzJvH32sCWvmm+rrdtPGPX4ZKyOvVaGF1sqLUKT9+2IfFKvlXMmUFMjlbUDOk12gLX5+qfchqNxbNdbhfRAS2dtiyPugAybVMmjAtS1nQSpw5D1QvQ95O8jvBRSvL3BoIPM+Y+9nvJ8imC1b5n3MWPI976+BAPxYIToUjKt/wi9gX8a5LgqThMlCv+AI0+qrWf6hg1xh4ngBLX1gyN2Googf2ljLcb3gSPg1/W8O0zmHr1AjEfXs2q/mpcsRdWVEZZfU7uyfZyjzWP5Pv4Y3D+CfV4A3vQL7ckStbVMjTgu8pUbWqJHaZrZxQcmbDc97FcVgxV//Olssbi8W9xaL5xUbezZTxsf5dnYlrQwj3zK+ZqgFf8fUPwJBoZa/F4juslRWC3z76Pl9tX+rzKn+sH3undFkMropqqpR74tz54LnAYzT9+rFnckWVW1JRjzAGWkRgK9mBzEVFCKoCaaQre/KOrxo2pKS8hf7JTPnmq4p12VVYz+8ubb1SXZmquw99NAWlxVrv4QDA96JZ87aaXk9mUxPBv7DUwG+/8H3rr56hvc+DHtr4PLbXzi368l5PEMVfJ3Ija/j3Si3WVppqa9A+ds0GPtg7KTU92cwpMCYYxhYfW78uWIPD81913vh3dEhzVFVri3f94t9sFzjSdX5CS2iWCxYvWPpvb/97b1L91axPOWox1+w9c47t55/fLKipbh3g9UCd7RYVou3uaW+NjdJEPhWdh6iAcmnQ7scOYqOlIIKkpNXYjwOlWFxBBz2pU21IsxDfF1Wncve8F45tdy/uLddljtHjj9uRNM2Lxv1/srCCKP2dO8VmPqv12G0X8yHI9WVg71NCcZ2Ed4lx6/lsxAP5tPJGYzEZIqlTb2+LtwNVmNNzA87K9hrlXIoTSEV7SZVHT+8MujIBMZNmGUafCCETlV0P/ohi9F3T0FCe4HH2FPJpB4KiGNouA6E5HAgqETiv5MlZbYoRTUtypVZiiT/LhiOwdXhaDQuhi6GiCh+EI7EQwmI3cX5nTFgajiuxP4oIpZfoijReCwU5BJ6ax/GlCQ6PKL6oUSBjI/lveM7fTzSaHclDrZrcztlk+hkoWhKJu8fuW/lSOzh34xc9ETKqqaegF+OeDd+7cCM0+6fcdvD3o0j8MvHNcdKPX7RyFtfw/baxt/h67C9TmwvA1lAzaPjTsPM9Tli1VfUMxiy0pp6hrH/7nU4P3IQwlp3W+TkU/tzNpphnt19WRZ9vpCVL61YeqfWH4udcgoLGEYmKk2xgvnT02PKlELknHMihb7AWHqtFbD6J/a0uvgu5tB4wFVtR5845lQh9DJ0duv777ekPJZqaUmBl2qBe87xRs6BM/3nJ+kq+HsGA+PP8dsRf9qEDtqBJSn7VEumkjt6FioIJvQrrmkr7J9XjpU9rTw2VoY/qsoKbympNvwxmkSMXH+V9+WXRnas6K4+tcr7k1/ng/IYOzUZ9VJYDVS/xshLW1Zc6dsKlG5+OsugtqfQVnQIU3xU6UUQQUnndHXcsmrZetkpmP4GdMHfF8sdk+anz4pWZzmxN27KVaNnnbM/9617NxyX6e7OZLu64AO8ZPGBZbwVbYVCGzzk7Su0fWOn9+7kzQNXve6XZRp18E78lcZ38VH2AqIcgpFNAmO2csXm8PCeXYuN3vvWPnL3lTuG3Ovg996ZLy7S7DtuhXdq98Pd3o2Jf/QW1/W3MP5Zvh5xLOjvLqm5CShBsnMqfAHOe937wes/O7zv596NbI13877XX9+39/XVP98H2+tznMS5OYV9xd9zVHP0DjwP+7wzvaXsK957BxDDtvs2ZNr4Wt6GfkMrzmBZGBFmCxuELcecY6EN7E/f9YKulf1zGbQN5K8XYZp2vI/Jxz7VIvHXdmk9yaE9rKq/PmU3jk/ohqvYODUFdmhZLb2ic2xSZdJYJ34nnVtIqWqq8AP8Yur79SfWUdsL1VG3o6gUrKZ0rnukq61dyZcmV2bOP7uinJYdYbNrbeyd3gKtr/bmaS0Hr3Z+Z3tc3anG2/0vpevPtQhjNe/Q5FKsEjNUlPmKlEvHK/GOdMkAbZFW6fFeJz4qyMeFdT5KaESIj1/xNsFeeHQu6AfA8G6qz9f08XXsA5yvdkJeoIWrGM9bbpV2w2x1mOGQaW2RdsOKaPX8PRH2gdHclAq0jE0fzkrxkaGLiy3G2N6NGPSEM+vytZeXNifVZja995SltzMxIibVKYz1xsJws5xs5yY3TTOKERgsP/JD3q82Nzd0+xD7H7iR9qtdJ6cPshcOvfIK2t7B8dv5Z9h3fP9Q8/e8bEXNKSYCQM61XQdBLaeiy6KYRdWE0t41oK/ZC59b472/Zu+yZfiorfYKeMdnuGTfWir1Llnj/XHNHcvuqGd7P6ZqoK/1+RFH/7AVdWCFsF4Q/GMetBYpHz1UY+cnXMU2NJWmQZuJE+4jol+56vrbNr6wyIpmYE653oytFLJAO0uoEIK/XIlOH/u3rrY2HUPfruJJC+alYosXndhpY5ijZzJdbcFStG9du8ivrcRSalOTaoRfYNDeOTipa7Azy+H5sEG5eti5Rs6dMKnUC97DWcPMtvfc0taVgQ7T1XsmG05rO2Sok0AgHcyyO9avjqhm3kyONYWcfNfgYFfOCSmzzSTmqZF/vlNszrQzUYcjdPo16/s/5fHr+Ea0kRJqdRR9RwEkVSqqoOJ3MjqKqqTC92Gvt8k7Ay70fgAnQ4/3E+/f2G7v++y5bbUnt29nJ9RugWdO8ebBPScvWeJFYP9Sb8yf94LAEAfn0onauufRzRw6NtWwu8Yg07u58/d2wth4r7t2TvBQZlFEVvYEzMCegBxdlDmEAc6cdT2WNHuKnaF9sT0wnFpSnrP2vmjosRD+R+8DWD+nd5GZTPTNbppx/J4zQ/4+8vkoZ3R2OPXJzmoDZuuAAdUizRm5xq99/aOP/PMjvz9wxelL4OnB2vX7rzjzRG/BIHvu8GP1Qm/VFfsHvAWLN+INnjlJqOPrdczy+Yj4WgYEB+vFL3vsw3vYc94/eB1wBdIxFW32xT5++hFKqoQyVqDtGLUkGklMso5CshFETL39yG1wD9u2/d6Hofybq+AeeMp77emZK2fiP3zl1iO337ttOzx/1a+91x5+BpxveCN+Ud0GtiEJ6+A2HOs04TS0gXphiPyaumdTMhsWHI25WaRjehXU/wk7f8y+uXzUDzi2fKI4w/i6O8RyKCJB9IyoGI9pHQUxpUPt5DuYnpJyHVosLkK4UkY8iAcd2N/cxphX4m0tcm+pNanLoN6QRHcile7v7yj0QXcmkQ23FcWenkmZkB0X4ykW0DBo6SvgPcA0zLFDGSoXi5lQR6Q9Gm4NBPr6eDgd4S26pDvRbocPDXFnUryqSVq6HoPmcO43o18zTZglLBSuF24XvkJY6B+Ko10t3wmmg68wgjyqA8HECVqM4ibcnjgQGJRL/racgq9zW0al93dezMbOMh1CIASwG3hCBxJ8XJHpXJ7iH9RTKN04nUAHSsqlomaS8Lu2DHnFP/3iWvzE5uZQRhYVdzsT4/Gxsflj8bjIzh1QuNIWamkJtfGAPHBuvWzhKJVtmyYHeFvGNB7UtOmdXau7O4fmzrEjUpMWlgOBRCIQUEKpZiUUCIWVnG3llHAoEJGaU1SqJoJBMZJIS5FjSr28+VVNf9CES+ZglNzbhw3Cw3P2zkkDO2dASaTl5mY5nSAKIT1622iawXlVP7tFwuyp24B5/zIye9aMSV2ru7zDX9W0r5pvK0G1RY6oqXbsIpmMyM1J9IHFREIUlWCyWY4kkx2FDrStYcUwQopfctuMWZMm90zumTQbBk2/FaFxNuQ89H+fQ10y/XM8n5wNMWOINP4pTZqPlNsHtAPjH5KvnxJpHBKhXXCaEYRq+J5/aOzjj9/JdrSa0GZH462cJaXYJJH3yrISb141mWPzGu+WQ0HVXINQ0DhFdgV0NTVnJ6XNmOpN4qIlxtIgKdGDze3JSGRaF58sZgNy/OlMpjkcGiAbZIw/zJex64RNwo9IM03d1yZ/h55b9Tik6jrDMMJQ6xy3cRlBTdQMzdD9XViFto3QdOuYoCFkuX+Wu1oXwb76QG0jywxTKxqkr7QJibFPnNU3nfx7H/Syik09VNBZqhJ/6GBEoxHeCI389uucMq0+ZtmVgmM7PhL4xwcYnw0pKZKbUb6ldFxfrhhmnIv1XaD6ihYtLkJanCayZtpnoFVUAFERQ9M6p+vZdm1GROZciq4HHumz29ndybD3uh3kIu2U1DeT6kvqjMnYCr0/0Q41xKkhe0gf1j9pRwxN6cxSO3AMYb/Hhgo9yebe/Ei5vGhKrljVwmoyEk8ByNQUrS/XLzJLS1P9Rd3m+pogLalRSTAaVwMR6gz7UsORUDgVWS+H9dScKZEM9qfDj+1KPBFuikSMeqv++jStf3P5/2kToF4cDv/dVk11ZrnRKv5Zkz6hnGxNFuPadWz9UVsWhyD0inULavQPi2zPigsrLS3eK94rYqwjbVyw4tSNKTHe1zeLrd+4tX9Ta9r7DkwVY729s7NbN56lS+rkXAMvp6Jy7fDPFir+ufaC0Ie9kLOOnhvQ9xjrmfr/pMFkq2r3N74yHdVutelA96fu7ODV3m+vvtp79+qr2cGJXO93E3W8dyfyGrHDIs4xJkjTuTY1Bg2XDN0T/8Rrfexqucg5nHbFypUzO/LePbByxkxMFvIMnmbPnlTzKmMLNi2IQuVkT63MX+BUFkQZbKJxBzFuPI9fieOOC3QupVXI4shtoZdOL078EGYiiJSQG1JBL9sUvqF9LKILbuMzJ9hxChLFGzmdfTywZMlA7Yd0ZSfXxhnU/rCW/i7AFD2NG/igx4bWspNjOuYc/KR2/8CSfzn/S9uvwc92ffvnz/c+H9PPP1+PLTm/HkcNjL/NL2Xbkc6/pW0Q3PpPV/iGcCwWPvIfdLXaws1fbg6nWS4eqv2Zclg0FB80jEGc5eD4BfxEtI8Bf2VKwIB4GijuNLzbGB0rNsvs8ypvz98CO5u9q5h258Z9rIg5C95pgp0tmLNh3+n7CNcy499FmbwG410M6DHKqps8hKFc3q66OeIJuoAKkUoT5q+x9AIdAfXDe76u0hkvR/TJcyuTvZ90FTItoC3Y3DfjIYzKf9p/hp3npURnZawCXy2P3dM1K9xtB+Rwe3Nva7J584L3pdEp51bGSj1hzqye8KzuD8rz55eFxvrXPr4B7UTcX3MbAVUr5HTbbQP6KVQxDmqlnHNMBWcsL+vsp02n7fb4I4/Auwmj9jo+QO2RR7x0wgCj6TTvyO6zH330PNlI3Nt0GoiXnf0IPpiJej/a+PV8nr8ek6Zfp+kTDoZvk/yj+1Z9GbjEp5haKt1u/nLBysufeQbYM32nnXHLGWfcIprZtlTK/OUUynvm8lMXrqLcMxrnIM9p+K89n/Zfk42156JBaF3wj+4VJn4PRGEMfA+d2cfQvvWAuH+/d+QAk2PBJkkWJelF2heWFLlXCfm+rX9wupY/UK/YEYrZMuOX0xb7u4okhZQXBZSS6eM/5ZexCz/5XVUWtaSbMIKWMGmPINlYvxQbd+FvfmvFMdJMOQV9Op995HlWq83f1tHS0tEMb/m32nc7mps7Wpjm31a/+7Wt7MLamlFm1N6DW1v8TP/q/fSYB5jjPQdzvT9ecEF9Llyhg+9kO1CLi39HQypltHkodOjbHv3lIF8fisdDR/5E18fAFI0QjDSHm95YuGXLwgVbtrDJsZDXSaoDr4diMCUYNaaAt3DzF7ds+eJmXyfd8Uf4+exhQSfvkuJrf1nRrdp0xAots8jPT7z56PDAys19QS4vD8w9JZB449FHEbhvvO6NlKKsCUtRUZx1gn3BvGvf1FIPUmyWH78IYzM6+66jVl1Ivy9y3CxT+sDNNw7FOBULlLzix6h2xc1AY2GjWq6SzEmVaqWX2/T7L8P3MkgqLd90+z7oCAyLFBnUBYdOjtDhDzo7RHdF7mcxtv761aFNxdF1yebmZKq52fvhejk0r71pwYWgjiSKbfMjQ3G+4KIEfB54INqc4KGmXwQSTPquBOHkpLE0569iSg2GvuVvDQPniR5I2HKKpcbUoKzJOVHUeEa8cH53/PSQvP76udam0Opqc6reH6xaz0bjFy3AzkJjmY7U9CRcvKA18zEPptMd2UzQ+HlbErAzFl7bxsRXOQ/zb8myGA1GY0pbsCinIvp8nP5cQmsRsY9/KqF8tI9f6q91LhXW+JEp/cyH3CMccv0HBf4T/RCIuFLPQt74T4RYmK7n4Av4MAykanSStp6FL5jSUclaGIxGg5cGZWkskpiTSG5R0P+ERHBdMIH3uLJZi89JRMYkGetQRSMyFsac1Oa/qbclmZgTD49FDO8/R5YvHxlevhzOnChmkcCWFDYenSdJwc9SM58NStK8CLWzJRBhn7Qjq1tSn+6uQVc8tUWV/3v5pStWXLrc96/z4+vZN33cLNBel4T+pUkjs2nZHAzuDzPvP9V/hkpwj05iiY5m5+HJvP6EHY978YR3X5wF4ARzCqxOJDwlKVOGyhLd8RR/3vhNLBbtbInGrJyJ9RNeIgGr4/o670mTHfDuT8THZRlWq9oLRqwnqrKRaGc02tIZjdXtYHj8VvYh+5m/nphDWMkB+7Cxjgjd9QWxRqxwAT/L9x16KFZI0fk2a8L0+BHw0d8UFf1feflw4df42x8cPc3pxCmsHFi8SY95D8R0PcYmT1uyZJr3gF+wS2vkwsqYBk2J1NzFA3+hks2bKfcvMX3zkoE/k5nHi3f5n+OaFqdLfTxX4HgO0XgQTcs4nnBjPQ8m19dJPx37KL6ncvRXGU7B9Xd16XdGSrkPnLJ+9ITWogf3nLvw3Fvu22Pvsr9Y+ySC8Vb9/qFrrnno97bdddtt/weKnOiWAHjaY2BkYGAAYn/ZBMN4fpuvDNzML4AiDCd+sfDCaeb/PsxTmR4BuRwMTCBRABIICg8AAAB42mNgZGBgevefjYGBeQ8DEDBPZWBkQAUpAFpTA7MAAHjaLVBNK4RRGD3vPWma8MqEYsaYd0Z5CY2MfG7sWWI1MsXSwkqz8BWlfDWSz82ULGyQNCUs/BALOxtLK1k493Lr9Nzuc855nnu8L7jjTQq68xqjLCBnPhFyBU3cRsq8oZ57qDVl9LCIZkbRwTP1j4Rz4R6DLKkWETcfSPBU93nUmG95ZYU+4cLBd7pAHsvwvV2QDxiTzlcv9H4Q18wElxDjIdp5LO4akuYVA05XQCOvkOWs+Av/Xo8Y5p36l3rfRwsnEKh2ckoem+jlKlpZ0ewnjGjXgHlUcQMZ1Rinpc0jwoh2yIlj/96FOu3fr/9meILQdItfwpDz2ZHezlxULuto463eQ/m8yPtGmEGUB0hyS7w5NLgcnuVt8ykLFaQ1O2XekVY21TY/V63n+F/+vzVQRI0AAAAAAAAAAAAAAAAwAHgBGAFyAjQCSgKWAtADDgMoA3QD+AQkBFIEjATKBPwFNgViBXAFhgWUBagFvAXYBiQGggaSBrQG+gdyB54IFAhcCI4I5gkoCUQPog+6D9oQEhBAEJAQ1BEsEV4RnBHiEhoSiBKwEvATFBNWE6ATwhPiE/YUhhSaFN4U6hUiFawV2hYeFlAWYhaWFxwYCBhkGYYZtBoAGjAahhqsGtAbHBtQG34bxBwWHFAceh0mHbgeCh4eHnIehh60HrQetAAAeNpjYGRgYEhhecggxgACTEDMyAAScwDzGQAlIAGlAAB42uVSS0rEQBB9yURBkfEKfQFzAFeiLmUcNDC4nGR6YiCmJYkGQXDrCTyAO6/g2Wbhq/6MEfEEpujqV1XvVVc3AXCIT0SQb+wTTOkniJI97qeMHJbq3OOYFvCE+SuPE+YD3sEGmce7iKPA38cmCpwCaTzzeIWD+NljjWn86vGa+TePS+L3eVX0plMLna9N0+MDCudoqRmIFqhQo4NBg2PGg7WU3R1jGNVTnm9whxdahltWOiqcX3LdU2PQU1dYv7L9NHLOJPre8hqbD9rGMiXn+MJsuZ/hmqZwstUeES3ZWTP7QLXsl5jhAjecTPEdNR65Wl+TrqU9QdtsZWPFTmHy76lc3BELT6av8bS9kfBzLnen9J/fPvuzw+8XSPnXu46GDJmx5PQ1b9L+qIzwF/y2jGwAAHjabc1XN4IBAIDhp89eyd6VzLKJZGRkbyEzcY6/6Mafo9O155z3+hWo+v227D9flUICNWrVqdegUZNmLVq1CWsX0aFTl249evXpN2DQkGEjomLiRiWMGTdh0pRpSSkzZs2Zt2DRUuW9Im3Vmox1WRs2bdmWs2PXnn15Bw4dOXbi1JlzFy5duXbjVsGdew+KHj159uLVm5J3ZR8+/YSCIF/4A0JgFjIAAA==) format("woff"), url(data:font/truetype;charset=utf-8;base64,AAEAAAANAIAAAwBQRkZUTVhd8L4AAADcAAAAHEdERUYAkQAEAAAA+AAAACBPUy8ygxR/WQAAARgAAABgY21hcM52AmwAAAF4AAABSmdhc3D//wADAAACxAAAAAhnbHlmJw4xwQAAAswAAD1oaGVhZPSrSy0AAEA0AAAANmhoZWEGhQMnAABAbAAAACRobXR4SUwNLQAAQJAAAAGQbG9jYQIo9WoAAEIgAAAAym1heHAAvATkAABC7AAAACBuYW1lO18JUwAAQwwAAANocG9zdFx+DF8AAEZ0AAAA7QAAAAEAAAAAxtQumQAAAADIj74XAAAAAMj6BA0AAQAAAA4AAAAYAAAAAAACAAEAAQBjAAEABAAAAAIAAAACAyIBkAAFAAQCvAKKAAAAjAK8AooAAAHdADIA+gAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAABweXJzAEAAIAD/Au7/BgAAAzQAtAAAAAEAAAAAApUCrQAAACAAAQAAAAMAAAADAAAAHAABAAAAAABEAAMAAQAAABwABAAoAAAABgAEAAEAAgB+AP///wAAACAA/////+P/YwABAAAAAAAAAAABBgAAAQAAAAAAAAABAgAAAAIAAAAAAAAAAAAAAAAAAAABAAADBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//AAIAAwA7/9ADbAK7AAsAFQAZAAAlFgYjISImNwE2MhcDMjY0JiMiBhQWNxMjEwNhJTRI/ZNIMyUBNiRnJFUXHx8XFh8fPBp/Gmc+WVk+AhY+Pv2xICwfHywgjQE0/swAAAAAAgA0/+wDJgKnABgAMgAAEz4ENxUiBhUHMzIWFREUBisBIiY1ESU0PgM3FSIGFQczMhYVERQGKwEiJjURNDQBDShDck5COgRUEhoaEuESGgG5DihDck5DOgRUEhoaEuATGgEhQWRnRi8FnV1lARoT/v4SGhoSAQIHQWRnRi8FnV1lARoT/v4SGhoSAQIFAAAABgAo/4wCwQK7ACQANABEAFQAZAB0AAABFisBERQGIyEiJjURIyImPwE2OwE1ND8BNjsBMh8BFh0BMzIXJRUzPQE0LwEmKwEiDwEGFQU0JyEjIgYVERQWMyEyNjUBMhYVERQGKwEiJjURNDYzEyImNRE0NjsBMhYVERQGIzMiJjURNDY7ATIWFREUBiMCwQkRMAoH/f8HCjQHBQQfCRJLDDAMEtgSDDQNRxIJ/lb+DAkMEpsSDAYMAUgQ/ulZBwoKBwFvBwr+xwcLCwcVBwsLB3oHCwsHFQcKCgdkBwoKBxYHCgoHAeIO/ckHCgoHAjcIBi4OQhQKMQwMNA0RPw4SBAQcFAoKDAwGDBKAEAILB/4kBwoKBwG8Cgf+hQcKCgcBewcK/mMKBwF7BwoKB/6FBwoKBwF7BwoKB/6FBwoAAAAGABb/7ANaAkEAAwAHAA8AFwAzADgAAAEjJzsBByM3BjIWFAYiJjQkMhYUBiImNBMWFRQHAwYjISImJwMjIiY0NjsBMh8BITc2MzIDNyEXIQH3bBB8tRJoAb84KSk4KQErOigoOijzGQJYBxn+XwwTAlGVDhQUDrAaBxIB9wUGGgd2Nv4uLQFtARtERETpKDooKDooKDooKDoBtgcaAwb+2xkPCwFHFBwUGkkPGP7is7oAAAAEACD/egNjArgAQABkAH4AiAAAARQGBxcVFAcGKwEiJyY9ATcGKwEXFRQHBisBIicmPQE3JicHIyInJj0BNDc2OwEXNjcnPQE0NzYzMh8BNjMyFxYDPgE1NCcmIyIPAScXBwYPAScVNxcWHwEHMycXFjMyPwEHMycDFzIeBBcWFAcGIyInLgInIy4BNT4BBT4BFxYOAiY2A2NLQQsLDRWUFQ0LAgYMCgILDBaUFQ0LC1YmLAQSDA8PDBIEKyJJAhkLDw4LgBkaoG5xuj1FXmCJHRgJiAIMTxsHS0sHIVsPDXsJIw0aGBckCXsPpQcHFh4iJCYRCAgIDAsIGEYpDwQLEAER/v0TLAwLCSYrGAoBFU+ML2AEEQ0PDw0RBRIBEQURDQ8PDREFWjxdBAwMFZgVDAwEVThuAQEcDwcHSANjZP6KKXhFdlRVBAFNggg5VxYHfwgWYDsJcEoEAgMES3QB4wEEBgwQGRAHGAgJCBcfCAEBEQsMEIkUDAsLLCgMFiwAAAAAAQAR/9UCywKPAAsAAAEzFSMVIzUjNTM1MwHR+vrG+vrGAZXG+vrG+gAAAAAEAA3/zgN/AioACwAXACcALAAAJTYyFzIVByI1JiIHJz4BFh8BBzQjJiQHJRQzBycmJAQHIhUnNzYkBAE2MhcHAQlO3U4BNwE3nDe1VeXkVQE4AWr+0WoCuQI4Amj+6P7paAE4AXgBQAE//oMaSho/i05OATcBNze0VT09VQE4AWoBarcCOAJoSkpoATgBd1VV/g4ZGT8AAAMALf+yAnMCugAOABsAJgAAATMRIREzNTQ2OwIyFhUDJzY1NCYjIgYVFBcHEzU0JisCIgYdAQImTf26S3xXBARYe5QgICYcGychIa8+LAMFKz4BZ/5LAbWAV3x8V/4bjRQlHCYmHCYSjgFlgCs+PiuAAAAAAgAZ/7EDWQK6AB0AKgAAATIWHQEjNTc1IzU0JisCIgYdATMRIREhNTQ2OwEBJzY1NCYjIgYVFBcHAoVYfGokJD4sAgUsPk39uAGRfFgD/v0hIScbHCchIQK6e1iAHSINNCw9PSyA/koBtoBYe/1GjhQlHCcnHCUUjgAAAAEAJ//KAuEChAALAAABBxcHJwcnNyc3FzcC4cPDmsPDmsPDmsPDAerDxJnDw5nEw5rDwwACACj/dgNwAr4ABwA3AAAAIBYQBiAmEAU1NCYrASImPQE0JisBIgYdARQGKwEiBh0BFBY7ATIWHQEUFjsBMjY9ATQ2OwEyNgEeAVz29v6k9gKdFQ95DxUWDykPFRYPeBAVFRB4DxYVDykPFhUPeQ8VAr72/qT29gFcwikPFRYPeQ8VFQ95DxYVDykPFhUPeQ8VFQ95DxUWAAgAKP95A2sCvQAQADUARQBJAE0AUQBVAFkAAAAgFhUUBwYHBiMiJyYnJjU0BTY1NCYjIgYVFBcWFzYzMhYVFAcWFxYzMjcyNjMmNTQ2MzIXNiUWFRQHBiMiJyY1NDY1Jz8BFSM1HwEHJxc1MxUhNTMVJzcXBwEdAVr0LjtxXmllXXI9MQLQC7iBgrgMAwYVGEFdBQQIKiktKgIHAgVdQBcVBf79GQUQKgsNJwE4FXMnwRtEG0Fg/etfKxxDGwK99a1oV3M9MzA8cV1orf0pJ4K4uIInLgkQBlxBERQCAgsMBBYSQF0GD40THw4KJwUQKgEGAvUJE19fSxtEHHsmJiYmoxtDHAAAAAIAKP9wA3ECugAJABkAAAEyFhAGIyImEDYBNTQmIyEiBh0BFBYzITI2Ac2u9vaur/b2AZgcE/6IExwcEwF4ExwCuvf+pPf3AVz3/kgnExwcEycUGxsAAAADADcA0QN6AYgACQASABsAABMyFhUUBiImNDYgMhYUBiImNTQkMhYUBiImNTSTJTY1TDY2AUVMNjZMNQF7TDY2TDYBiDYlJjY2TDU1TDY2JiU2NUw2NiYlAAAAAAQAKP+wA2oCvAAOABIAFgAnAAABMxURIxUHITUjETUzNSEXIxUzJRUhNQM1Mz0BMxUzNSEVMz0BMxURArW1tYj+sLW1Adh7aWn94wFsiYk2Q/2kQTYCGX/+0zWIvQEtf6PcNdttbf1giIM3gcXFbxI3/vUAAgAb/90DXgKAABQAKgAAJR8BDgEjIiYnKwI3FysBFBYzMjY3MwcnOwE1NCYjIgYHLwE+ATMyFh0BAoMnHC+LT4zFAQsCQ35/MxyPZTxpyDR/fjIej2U9aSInHC+LUYvGoSgbPEXEjH5+ZI43u35+AmWPOTAnHD1GxosCAAEAHP91As0CuwAiAAAlMxUUBiAmNTQ2MzIXPQEfAg8CPQEmIyIGFRQWMjY9ATMCsB3J/uLKyo8QCTGdFRWdMRIHU3R1pHQe6x6PycqOj8oBT0cynRUUnTJGWAJ0U1J0dFIeAAACACj/dQNvAr0ACQAhAAABMhYQBiMiJhA2ATY0LwEmIg8BBi8BJg8BBhQfARY7ATI3Acuu9vaurfb2AboGBjcGEgfzDxBYEA83BgaLDxYaFBECvfb+pPb2AVz2/ssGEgc2Bgb0EBBYEBA2BxIGjA8PAAAAAAEADAADA04CaQAZAAA3JjQ/ATYyHwEWMjcBNjIfARYUBwEGKwEiJxYKClMKGwqIChsKAXMKGwpTCgr+PhghJyAY7wocClMKCocKCgF0CgpSChsK/j0YGAABADv//wL5ArwAAgAAEwkBOwK+/UICvP6h/qIAAgA7AAEC9QK7AAMABwAANxEhERMhESE7AQauAQb++gECuv1GArr9RgAAAAABADsAAgL2ArwAAwAAJSERIQL2/UUCuwICugAAAQA7AHIDjAJXAAYAAAE1DQE1BREBpwHl/hv+lAGhtvPytbUB5QAAAAEADgBxA18CVgAGAAABFS0BFSURAfT+GgHmAWsBJ7bz8ra2/hsAAAACACj/dANwArwABwAKAAAAIBYQBiAmEAEtAQEeAVz29v6k9gECAa/+UQK89v6k9vYBXP562NgAAAIAGf9rAwgCxQAoADUAACUXFAYrARYVFAYiJjU0NjUjIiY1NyY9ATQ2NyY1NDYyFhUUBx4BHQEUARQXNjMyFzY1NCYiBgKfaRgR8gE3TjcB8RAZaQFlUAQ3TjcDUGX+vAIcFhcbAx8sHmRmEBkECCc3NycCCAIZEGYIEdBYjBwLDyc3NycODByNV9ARAfsFCgUFCAcWHh4AAwAO/+cDTgJcAA8AHwA8AAABBw4CByYnJisBNTMWFxYTPwEWFxY3MzUXBzUjIicmEyIHBgcOAgcGByM1MzI3Njc+ATc2NzM1Fwc1IwErKgQOCwUSCTEgZWU7OyGFLCAQCjQgVq+vVjhAG5AXISMrE0c+HVBKY2MaIR0yBYgnUUdYr69YAaIsBQ8MBRAHKHABKBX+2i8iDggqAl6UklgoEQEYFhctE00+GEABcBYSMgWRIEABXJOTWgAAAAABAAP/3QFRAnkABQAAEzcRJyM1c97ecAGa3/1k3t8AAAMAPABGA4ACAAAHAAsADwAAARUHFSERIRUDESERNxchNQOAP/z7AwVJ/Y7v3v5jAXuwGWwBum3+/QEm/tr2xsYAAAAABAAO/3MDTgLiAAUADgAcACgAABM3EScjNSUWFAcnNjQnNQUUBgcnPgE0Jic1Nx4BAx4BEAYHJz4BNCYnft7ecAGkS0siIyMBGFxNIjtGRjshTV1ddo2NdiFjd3dkAZjf/WTe3x4ytDFDHFgcAkpcmSxCIneMdyICQSybAV1C6v7o6kFCOMfsxzgAAAADACj/dANyAr4ACQAYAE8AAAEyFhAGIyImEDYTNjQnJiMiBwYXBhcWMzITNjU0JyYjIgcGDwEXNzY3Njc2NzYzMhcWFRQHBgcOAgcGBwYHBhUUFhUXOwE1NDc2Nz4BNzYBza/29q+u9/fKExMUHRwUFAICFBMdIIIKKSZGMSQhHgkuCgIRBxAKDQcOHggLBwwJBAkLBBENDAgFAQELWAgJDA4eEQ4Cvvf+pPf3AVz3/V8SOhIRERQbGxQRAVMYJjojIgwLFAZXCAEKBAYEAgIKCxQNDBAIBAgKAxASFBoWEwQQBAsMGhAQDg4WExEAAAACABv/jAHhAr8ADwAbAAABMhYVFAMGMS4BAjU0NjsBETI2NTQmIyIGFRQWAQJcg8sYGUx+g1wEKjw8Kis8PAK/hFtr/kkyNaQBRTZcg/7OPCsqPDwqKzwAAwAc/3gDYAK8AB0AOwBHAAABFwYmLwEmND8BNjIfAR4BByc2LwEmIg8BBhQfARYBBiIvAS4BNxcGHwEWMj8BNjQvASYHJzYWHwEWFAcANjIXARYUBiInASYBO0YmZSSQJiZjJmsmkCQDIEYKEJAJGwljCgqQEAGxJmomkSMEIEUJEJAJGwljCgqQEBVFJmUkkCUl/b4cKA4BJw4cKA7+2Q4BK0YgBCSQJWwlYyYmkCRlJkUUEpAJCWMKGgqQEP58JSWRI2UmRhQQkAoKYwkbCZEQC0YgAySQJmsmAcMcDv7ZDigcDgEmDgAAAAACABIASANXAiUAJQAuAAABBgcOAyMiLgIvAR4DNjcmJyY3NhcWNzY3NTQ2MzIWHwEnIgYUFjI2NCYC3g4cDCdGc0hNhU44CwsFEzo6UiVAIBUNBxI1nwcOXkNAXAVm5RMaGiYbGgE3GxceOEAnKjw8FRUDBxAIBw4bQCsLBxEyCQgSBUNeVz8xdxsmGhomGwABACQAAANpAkUAIAAAAR4BFRQGIyImIyErAS4BNTQ2NyY1NDYzMhc+ATMyFhUUAwMuOGFEAgYB/hIBAkVhLSYGRC8mIR94SWeSAT0SUzNEYQEBYkYtTRYQEy9EGUBOkWgKAAAAAgAo/3UDbQK6AAcANwAAACAWEAYgJhAFJjQ/ATY0LwEmIg8BBiIvASYiDwEGFB8BFhQPAQYUHwEWMj8BNjIfARYyPwE2NCcBHgFa9fX+pvYCFgsLbQsLHwwhC2wMIQttCyELHwsLbQsLbQsLHwshC20LIQxsCyEMHwsLArr2/qb19QFayAwgDGwMIQsfCwttCwttCwsfCyEMbAwgDGwMIQsfCwttCwttCwsfCyEMAAADAB4ARANhAhMAFwAjACsAAAAyHgIfARUOBCIuAi8BNT4DEzI2NTQmIyIGFRQWNjIWFAYiJjQBgX6FYlEVFQgcW12HfoViURUVCBxbXcQ6UVE6OVFRHzQmJjQlAhMvQ0MYFwgJH048MS9DQxcYCQkfTjv+vFE6OVFROTpRyyY0JSU0AAACADX/igKGArwABQALAAATIREhETcBESEVIxHgAab9r6sBYv7jrAK8/M4Chqv9EwKqrP4CAAAAABYAKP9yA3ACugAHADIDbAOKA6MDxgPXA90D4QPnA+8D9gSjBKsEtwTFBMkEzgTSBNcE3ATgAAAAIBYQBiAmEAUHBhQzFBYVFDEWFx4BNyI2IzQnJjUzNCY1IgYiNTQvATI3IjcmJyYHIgYDNjU0JyInIiYHNCM2JyYHBhcUFxYGFTI3FDMGFxUyNzIUFxYGMxY1NDUWFAcUBhUUDwEOARUiByIHIiYjJzIuATUnJicmJzI1IicmMzc0NjUiBxQmIyc0BicmJyYjJgYfATIHBhUuAScmIzQjJyYnIi4BBxcyFjcVNhYzFCcmFxYHNCMuASciJicGIw4BLwEGBw4BBxQGFSY1PAE2NRc6AjY1MgcWNSI1Ni4BNScWNzQnNR4BNzY3NRY2NxQ3NjM+ATcmNTI2MhcUMzY1IiciByImIyYzJjczNDY3Ijc2MzI+ARcyFTIeATc2FhUiBiMVMhYHMjYzFBcWNyc+ATcuASMiBxY/ARQfATIXIxYnJiM0JgYXMhcWFzIWFzI2Mz4BJzYnNDM2JjYyNxYXMhcWNRYVNjUiNTIzFjUyFTMVFAYjBwYeARcnIg4BJzI3JgcGJg8BDgE1BhUWFR4BMxYzFDM0FxYVIhYXIhcWNjUiNSY3FDc2JzYnJiInNiczMhY2Nx4BNxQWMxQzBjEyNTI1Mh4BMx4DFRYVMjc2FTIWFSIWIxQjDgEmBw4BFTI2NzI3FDMVIhcWFRYzFCIVByM/ATM1IgYjBiMGDwEGDwIGBwYVIgYjDgEVHgIVFCMwJyYzNCc0BiMmIxQWFQYjIiYHBhUiFDMUFhUyFjMWMzc2NyY2NxQ/AhYHIg8BDgEUFgczNTIGMxQWFRYHMjUyBzI2NDM0Fzc2MRYVMjcyFjMyNxYVMh8BMxcUFhUfAjYXFjMXFhcWFyIVFzI1MhYzBhY1MhUyNjMyNRYXHgEPARQjFCMUBgcOAQciBiMwBwYzFAYHBhciBiMiBhUGDwEGHQEiByIHFCMUJyYHMhUUBzAHBiMUBh0BNzQXDgEHIhUUMxQXJzQzNDM1JjY1PgE0MzQ2LwEiJjUmNTImLwEmNDY1JjYzNDcWNzYnNTQjIgcuAjU2JzYmIzQmNSImIyImIy4BJyI1NCM0JiMmIzQnJhUGFhUyFxYHBicmNS4BNS4BLwE0IyYxNCc0Jjc0JwYVFBYzMjY3BicmNxY3JjcWNSc0NzYWFTI2NxQXFgYVBhUjFAYVIgMWFTI1HgE3MhY/ASc0JiciJiMmBwY1JiM0Bw4CJxQjBisBIic0NzYjNjMdARQ+ATcyNzYWFRc0JjU0FjcWBxUyNjMGFxYHMgcyNRYUIwYjNAcGNzY1JjcmByY3Jjc2MSI3MxY3MjEWBwYXMjUzFCIHNjcUFzIHJicyFTIGJzQzFzYXFAYmIzMWFzI1MjcUBhciFQcGBxQHDgEHBjMUMxcWFAcUBhUHBgciBiMUBhUHBg8BBhUGByIVIzQmNSImIzQuATM0IzQmNSIuATc0NzYnIjUmNTYnJiMuAQ8BBi4BNSImNS4BNSY3NCc0NjU0NzQ2NTYzNjc2NzY3NicyNTYzNzYzNjMWMj8BNjM2HgEzNR4BFTMUMzI1MhU6AR4BBzIXFjMUFjMUFxYXBhYVFhcUFjMUBwYlFDcUJyI3MjMeATMeAQcGJyInMh8BFh8BIwYiJzMnMhYzBzIVIjM3MhUGNzIVJgcXIhQjBzY1FxQFNDcGAR4BXPb2/qT2AroBAQIGAQQBCgEDAQEBAgcEAQMBBAIDAwEFAQECBQIGBT8BCQQEFQYBAgcFAgIHAgICBAEBAgMKBAEBAwIDAgQEAgQEBAgMAwcEBgUCAgEFBgUCBQgCCgEBAgMDAgIGAwIDDQICAgEHAwEBAQIEAQQEAgECAQMEAQIHBgEDAgYEAwMBAwQBAgYDAgoBAQUCAgMBBwQDBwEBBAEPCwICAQUEAwQBCQIDAgYECQIBAgMBAgEDAwEDAgEBCAEDAgUCAQEEAgMDAgMJAgcBAgQCFwEGDgoEAREMAhYBBQMCAxADEgUCBwEDBgEBAwEBAQcBL4dMhmEBBAIBAwgBBQEEAwEGBAIBAQECAgkCAgYBAgICAQULAgECBgEEAQECCQYHAQEDAgEIBAECAwMKAQgBBwUCBQIIAwEGAQIDBAcLBAsDAQMJBgEBAgICAQIHAgYHBgIDAgIBAwEEAwUCBwQBAwMDCAECAQcGAQMDAQEDAwICAQEDAgUCAQELAQoMBQQLAwkCAggBBgQBAwUFBQYBAQMDBgIEAgIEAgICAgIBAQMBBQQBCQEBAgQCAgEECQEBDAIGAQIFAw4BAQQCCAEBBAIBAQMDAgYGAgECAgEBAQICAQ0DAQICBQEMBwIFAgICBgMCBQQCBAQMAQMBAQEBBAUBAwkBAwEBAgEDAgIBBAICBgECBgMCBQIGCAUFAQUIAQMFAQELAQEGAQIDAQEBBAEBAQMCBgIEAwQGAgQHAgMDAQIGAQIBAQICAQQBBQECGwQCAQUDAQIDAgcFCAMBBgMEAwQEBAMDAQIDAwUCAgEIBgIKAQ0EBAIGAwQMAwELAQcJCAIDAgYDAQcBBwYDBAYCAgUBAwEBCwcIAgEKIceMUo4vBwIDBQUBBAIKAgEBAQMBAQMCBQIDAgJFAhkBAgEBBwQHAgoBAQUCAwMDAQIJAQUClAEFBQsCCAEDBAcBBAUBAwMBAScCBgEDAwIEAQIBBQEHAgMCAgMMBAMBAQIHARYCAgMEBQQCAgEBBAEBAwYBAwOgAQPKAgMBAQMCAQUCAQEWAgcCBQFxBgoGBQEDAgICCQEJAQ4EAgEBAQQCAgECBAECAQEBAQ8HARMPAgECAQUEAQMFAQIBAQQBBAQGBgMDCwENCgoBBwoDCQQIBAQDAwQEAgECAQIDAgEDAwQCBAEEAQIEAQMDAwUJAQgNAQMICAoQBgIICQYBAgICAQUCBQYGAQUBAgoDAQH+YwMEAgEBEQQHAgMBAggEBQUGIwICAQENAQcBBwIBCAIfBAUGAgEBJgMEAgIBARABAQF9AgICuvb+pPb2AVwzAwMFAggECwIBBAIECQIBAgECBgECAgIEBwECAQMEAgX+wFprEwkCCQIBAwgEBAMHAgQBBAEHAQMDBQoEAQMEAQIBAQIIAgEEAgYCAgMFAQcEDAUMDgIKAQsECQQBAgkBCQICAQEBAQIDAgwDAQQDBAcBAQEKAQQKAQIBBwQCBgkBBQEFAQECAwYDDAMEAgcBAgIBAQESAgMEAwEBAQQJAQgKAQICAQQDBgIEBgYBBAYFAQIBAgECAQIGBAgBAwMCAgEDAQsDAgYCAwoCAgcEAQIGBQ0IBAMCAgIBAQIIBAICCQIEAgECBQQCAQM4QFsBAwEGAgcCBgIBAQICBAEBAQIBAQECAQICAQIDBAMCBAMKBwEKAQoDAQICCwICAQQCBQEBAQEBCwIHBAECAQEBAQIPCAQBAgMEBgoCAQUDAQICAgYGAgQFAgEJAwECAQ0DAQMCBgQBCQMCAQgGBgEDAwMBAgMCAwQFAQQBBQIDAgINBAcBBAEBBwEBBQECAwEBBAMECgIBAQECAgIDBwILAggGAQYHAQgDAwQIAgEDAQICAgUBAg4RAggBCAQBAgIBBQECBAICAwEDAgIGBAUCAw0CCAEDBQMHBgUDAgMCAQEECgECAQEBBAICAQECAwMDAQIBBgIJCAECBAIDBAsDAQIGBRIFCgwOAwgCAQcCAgMDAQ0CAgICBQMIAwICAggEBAQEAQEBBgEIAgMBBgIDAgECAgQDCAIBBAklCQ4CCQIBEhAEIQQIDQYJAQkFBQMDBwMCEQMBAwEDAg0KBQEBAwMGBQQJAQEBBgUCAgINEgMHBwQFAgICBwINCgEBCQQCAQsCAQYDAgoJCgMCDgMXCERMjMZKPwILEQ8CAgEFBwkCAgEBAQIJAQsBAgUBAQUDCwIBHgEDAwICAwYBBAEGBwECAgMCAgIIAQMIB2gFAwIBAQQDAQQBAQEBAQEBAy0CBAIDAQQBAgQEBwEFAQsDAQMFBgMBBQIBAQEIEAIGAQECBAIBAQIMBgECFAECAw0GAgMHCQEHAgENBAEEAXsBAwQLBAUCAwECCQIJAg4YBgYIAQMJAgECAQcEDgQEAwMECAkKAgQCCAMHAQsLCQQOAwgHAQQSCQ4GBAsGDgEDAgEBAgEEAQkEAREEBAUDCQIEAgsIAQYBAwECAQQDAQEDCgMBBQMBAQEHAgECAgESAwQGBgEDAQMDAwsIAw4EAggBBgEEDwEBATcDAwQCAwEFAwIBAgcFDAECAgEBAgQCAgMDAgEDAQIBAQEaAQEBAXQCAQMAAAAAAQAV/50DTAKyAAoAAAERIzUjFSMRIwkBAq6xmLeZAZwBmwEX/obr6wF6AZv+ZQAAAgAw/7ADdAKMAAUADQAAJREhERMhAzMDJQMzFzMDdPy8nQIKkcZp/l5oxTGC6v7GAToBov5eAUIB/r1gAAAAAAYADv93A1ACugAGAA0AEAATABYAGQAAAQcXBRMXNwEnJQMnBycTFyc3FScFJxcHNRcDUHpS/o4rUXr93FIBcStReqOoxd3rHAE9xd3rHAIWelIqAXFRev3aUiv+jlJ6owFqRBJPVVDuRRNOVVEAAAACAA7/eQNQArsAFAAcAAAJARUxKwE1IzUjJwYjIiY0NjIWFRQkMjY0JiIGFAISAT6oAYCAPSgrbZyc2pz+m0o0NEo1AV/+wqiBgD0Om9ybm24rCzRKNDRKAAAAAAUAKP91A3ACvQAHAA8AGAAlAC4AAAAgFhAGICYQACA2ECYgBhABMhYUBiImNDYXNjcnJiMiBhUUHwE2FzI2NCYiBhQWAR4BXPb2/qT2ASIBBLm5/vy5AT9nk5LQk5MkIUUeBAg9bwEqJq8QGBciGBgCvfb+pPb2AVz+F7gBBri4/voBe5PQk5PQk6ohJSgBbj0GAyBGrRgiGBgiGAAAAAAEADn//gN/AjMABgARABoAIQAAJQElFhURFCUvASU2MyEyFwUHASEiJwEXNwEGAQUBJjURNAN8/u8BEQP+XUgk/u0KBALiBAr+7SQBKf0eBQgBFGprARMI/OoBEf7vAyABBuoIB/4vCMY6HusCAuse/tYCAQlXV/73AgIS6v76CAgB0QcAAAAABwA1/9UDdgKeABYAJQApAC0AMQA1ADkAAAEyFhURFAYrASEjIiY1ETQ2OwE1NDYzAREhHQERIxEjERQWOwEhAxUjNQUVIzUXFSM1FxUhNQUVITUDWREMDBFs/d5HHDMMEVwMEQJ6/ZoxRxYHRwIi7t8B3bm5ubn+IwHd/iMCngwR/XERDDUaAeERDF8RDP1pAmVKMv5DAb3+NAcWAiXf3x8lJXIlJZglJXMlJQAAAAAEADD//wNyAoMAAwAOABoAHgAAAREjESMzESERMzY7ATIWBzI2NCYrASIGFBYzBTMRIwNyRnUv/dQ0RDbPIEWaDRISDWgNEREN/pZFRQH+/gEB//4BAf+FUSgSGhERGhIM/gEABgAaAAEDXgK8AAYACQAMABAAFwAfAAABMxEhNQMlFycFBxMREyERIQUXITcXNxcGIiY0NjIWFALPj/1tsQJnEzP+p6dqNwIl/dsBuTr+UGdCeyb+LB4eLB4B8P4RAQHN7cyFhUD+6wE+/l8BgZW+cCqxRwMeLB4eLAAAAAIAIf9hAysCvQAfACsAAAEeARUUBiAmNTQ2NzYWFxYGBwYVFBYyNjc0Jy4BNz4BAiImNRE0NjIWFREUAqk9ReT+vuRGPRQ1EREDFFiZ2pkBWBQDEhE11TQlJTQmAgk2l1Wh5eWhVZg2EQMUEzURTnZtmpptdU4SNBQTA/6MJhoBlxomJhr+aRoAAAAAAgApAAADbQJzAA0AIQAAJTU3ESERIQ4BBwYHIxEBBTUiBw4DDwE0PgQ/ATUCnGj9JQFHAgkCVzZFAtz+x1ozMVEuIAYGKD9OTT8UFGlXRv76AgsBBAEnPP7HATjTiQcGHiUiCww2XDsuGBACAn4AAAEAEv+IA0ICuwBJAAABFgcUBwYPAQ4BFxUXFhUUBwYrASYvASYiDwEGBwYnJjU0PwE1NiYvASYnJjU0NzY3NjsBMjc2NTc2NzY3FhcWHwEUFxY7ATIXFgM6CgIKAw24AgcBUQQHCxMBEBS+Aw4CtRISFQoIBEgBBgO5CgYLCAkHDA/mBgUHQwQFDRQUDQMHQgcFBuYJCw4BhQsNDQ8ECnkBDAQE7QsMDwoQAQ6bAwOaDgECEQsPBw7sBAUMAXoHBw0PDgoJAwUEBQXvDgcSAQESBBHvBQUEAwQAAAABAC7/ewNwAr0AFAAAJRcPASc3JwMnEycmNDYyHwElFwUXAzE/olw/DqngP3iwEyY2E7AB2z/+jai5QFujQJSp/o0/AduvFDUmE694P+GoAAEAHf/jA2ECvQAoAAAlHgEfARUhNTQ+Azc+AjcmJyY1NCY2NzYzMhceAQYVFAcGBx4CAvguNQMD/LwBCxQrHQxUWjEhJwsCAQMfgH8fBAEDCiYiMllVmhQxDg5WVgIIFhYeDQUwJgkiZBxIBzAjDG9vDCMvCEgcYCYIJjEAAAAAAQA7ACoDfgI1ABQAAAE3ESc1FRQGIyEiJjURNDYzITIWFQKT6+saE/4CExoaEwH+ExoBoG/+P28BZxMaGhMBsRMaGhMAAAAAAwA6/7sDlQKeAB0AJAAnAAAlNTcRFAYjISImNRE0NjMhMhcHISIGFREUFjMhMjYJARcBMQc3FycHAsBcSDP+FDNISDMB7BEHWf5VDRISDQHsDRL+7wFihP6ewz90WSs2tV3+7jNISDMB7TNIAloSDf4TDRISAREBYoT+nj/DalmDAAAABQAhAAADZAIeAAkAEwAYACQAMAAAAREjLgEiBgcjEQMiBgcjNTczESYnFTM1IxcyFhUUBiMiJjU0NiEyFhUUBiMiJjU0NgNkQg02QjUO3I4hNg1rb7ghwqFjTR4rKx4fKioB7R8qKh8eKysCHv5ZHSMjHQGn/pkjHbR7/uQtaTqE2CofHisrHh8qKh8eKyseHyoAAAEABf9+A0YCvgAOAAABAycPASc3FxsDBycDAamRflEWLqJgq52DdD03iQHo/mfBTBQnl5MB4/2jAZ3+jRCy/lEAAAAAAgAj/30DYgK8AAkADwAAAREhFAYgJjU0NjcyFhUhEQGSAXPY/s7Y1/aZ2f6NAl/+j5nY2JmY2F7ZmQFyAAAAAAEAEv+7A1YCnwAGAAABESEVIREBAb0Bmf5n/lUCn/7quf7rAXIAAAAHADn/YAMdAroAGwAnADMAPwBDAGMAagAAATMRIREzNTQ2MhYdATM1NDYyFh0BMzU0NjIWFSMVFDMyNj0BNCYjIgcVFBYzMj0BNCMiBgcVFDMyNj0BNCYjIgERIRElFAYjIic3FjMyNjU0Jic1NjU0IyIHJzYzMhYVFAcVFjcHJzczESMCxlf9HFkoSCk0KUgoNClIKXAjExEREyPOERMjIxMRzSMTERETIwIk/ZgBNkY3JCUHIyYYHCErPyodIAciMi00QUlsNAdbHz8CQ/0dAuMuIyYnIi4uIicmIy4uIicnInsgDxF7EQ8gexEPIHsgDxF7IA8RexEP/QwCAv3+xi0yDjQOFhEWFQI0BSEcDzQPJBwyFgEUTBQ0LP7YAAABAAf/uwNLAp8ABgAABREhNSERAQGf/mgBmAGsRQEVuQEW/o4AAAAAAgA8/2EC7QK8ACAAKQAAARYHBhcOAyImNzYHBgcGJxE+AhYVFA4BFBY3PgE3JREjETQ2MzIWAu0WGRgTCBpIPD4fBQ8/PXklGhZImGUEAwoLHmEi/cVVGRIRGQI8LlZVlQIEDAQSETACAi4OCwGPBhIgAxcDFxcXDQEEBgFY/M8DMREZGQAAAAEAOwDGAvkBjQADAAA3NSEVOwK+xsfHAAQAO/+VA24CyAAGAA0AFAAbAAABJwcRIQcXATcRITcnNzUnNychEScBFwcXJREXATKYXwEVX5gBhl/+61+YV1eYXwEUXv4jV5hf/utfAXqZYAEVX5j+el/+7F+XV5dXmF/+61/+0VeYXwEBFWAAAAACAA//eQMbAr4AWQBiAAAkMhYUBiMiJiMGBwYHBiMiJyYnJiciBiMiJjQ2MhYdAR4BFxYXNzY3IycGIyImNDYzMhczNjcuATU0NjMyFhUUBgcUFhczNjMyFhQGIyInByMfARY3NjcmNTQAFBYzMjY0JiIC1CodHRUCCAIqJVNKRxMOUUxQKCcCBwIVHh4qHQkyDS9hIAQDiDQOExEYGBEWC74CASAoOykqOygfAwG9CxYRGBgRFQs1hwYhTykyLgH+qR8WFx8gLJAdKh4BJBc3FSwtFjUbIAEeKh0dFQgIHAkfApdiXgwRFyIXEkgYCjUiKjs7KiE1CgdDFxIXIhcRDMCaBBkeIAIEFQH8LB8fLB8AAAAEADP/iQNlArsABQAJAA0AEQAAAQURBSURARElEQEtAQUBEQURAc0BmP5o/mYBd/7OAVQBLP7V/tQCgP7NArtx/bFycgJP/ZABt1b+RwGgVFJS/gwBuFX+SAAAAAEAIwACA2QCRQAyAAABHgEVFAYrAjU7ATI2LwEmIg8BBhY7AhUrAzUuATU0NjcmNTQ2MzIXPgEzMhYVFAL/LjdgRAnGHkwMBgeRCBcIkQgGDUwexgEBAkRhLCYFQzAnHh94SWeRAT4TUjNEYKINCq0KCq0KDaIBAWJELkwXEhAvQxhATpFnCgADACj/dQNuArsACwATABsAAAEyFhUUBiMiJjU0NgE0JiMiBwE2JRQWMzI3AQYBy6719a6t9vYB6LmCZFIBtjv9i7iCZ1D+SjsCu/atrvX1rq32/l2CuDr+SlFlgrg6AbdTAAAAAQAF/4kCJgK7AAUAAAEDMwETIwImwZ7+Au+gArv+qv4kAYIAAwA4/3sDeQK8AAkAFAAcAAATMh4BFyMmJyYjETIEFhIXIyYCJCMSMhYUBiImNDiV/JQBoAJxcqGpATPghAGgAbX+y7ZBXEFBXEEBn5P8laFxcgG9hN/+y6m3ATW0/j9BXEFBXAAAAAADAB0AAQNhAZQAGwA5AFsAACUVIz0BJicmJyY1NDc2MhcVFAcGBx4CFx4BFyUdASM1ND4BNz4CNyYnJjU0NzYzMhcWFRQHBgcGJR4BHwEVITU0PgE3PgI3JicmNTQ3NjIXFhUUBwYHHgIDYZcEMwoMBQENZg0EDw4UJCMEExUB/VSXAhUTBSEkFA4PBAELNDMNAQQPCTUBuBkdAgL+MgMdGgYuMhsSFQYBEYwSAQYVExwxMSQjLwErHhAfCx0lBCwsKR4KJw8EDxMCCBQFBwEvIwIIFAgCFA8EDycKHiUELCwEJR4KJAwgDQsbCAgvLwMLHAwDGhUFFTUNKzUDPT0DNSkPNhQFFBwAAAAABgAh/3UDaQK9ADkAQgBLAIsAlQCfAAABFhQHBiMiLwEGBxcWBgcGIyInLgE/ASYnBwYjIicmNDc2MzIfATY3JyY2NzYzMhceAQ8BFhc3NjMyAzY1NCcHFhQHAycGIicHFjMyNxYXNjcmJyY3NjU0JyY3NjcmJwYHBiMiJyYjIgcGIyInJicGBxYXFgcGFRQXFgcGBxYXNjc2MzIXFjMyNzYzMiUUFzcmNTQ3JwYBIgcXNjMyFzcmA1AZGQoeBgQHN3ICBA8PSEhJSA8PBAJwOgcDBx0KGhoKHQMIBjpwAgQPD0hIS0YPDwQCcTkGCAMdHhcWphQUPCgqXisoPUVEJwwFGBQLBggIEBAICAcKExkHCggKCwchJyYhBwsKCAwFGRMLBggIERAJCQQMEBwFDAgKCwchJyYhBwsK/iIXpRQVphcBekQ9KCsuLysoPQGpRJhEHAECbzoHEBwGGRkGHBAHN3ICARxGlEYcAgFzNgcQHAYZGgUcEAc4cQEC/tI/Q0JAKSpeKv72pRQUpRfiBwkRGgYMERMgJyYhEhIMBhkSDAQEBBAQBAQHCRIZBgwSEiQjJCMTEQsHFhYKBwQEEBAElEBCKS0sLSwpQwE7F6UUFKUXAAAAAAMAKP9zA3ACuwAJABcAPAAAATIWEAYjIiYQNhcOARUUFjsBMjY1NCcmEzcvAQcOAQc1ND8BNjU0JyYjIgYPARc3NjcUDwEGFRQXFjMyNgHMrvb2rq339+MfJBsXAR0nDQ8bAwISBQ4pBAMuBgYHDxldLQMQBiMUAysGCgkRF18Cu/b+pPb2AVz2ggEqGBkfKRwXDhH+KQMEJgQOHAEFBw28GSASDAw5KgMtBB8IBg+2Hh4ZCwo6AAACABb/qQNXAokAaADQAAAlFRcVFhUUBwYPAQYiLwMmJyY1ND8BNjc1PgE/Aj4BNzU3PgE3NTc+AT8BHwEUFhQWFQcOAQcUBxUGByIUDgEVBxUGFRQXFh8DFjMyPwE2NzY1NCcmLwE2NTQnJicWHwIWFxQlFhcWFRQPAQYPAQ4BDwIGDwEGFQYPAgYPAS8BLgI0Jzc+ATc0Mj0BNj8BNjU2NzU0NzY1NCcmLwMmIg8BBgcGFRQXFh8BBhUUFxYXJi8CJic0IzUnNSY1NDc2PwE2Mh8CA0MBEwUMIUAzkDJNLyElCwIDAwQKAQMBAQEBAwECAQQBAgEGARwEOQQCGQEEAgECAgECAQEEBwQKOSg8FR8gFEAMBgMDBQ1iAQMMLycgAp0SC/7YJwkDBAMDCgEBAwEBAQIDAQEDAgECAgYcBDkBAgIBGQEEAgECAgEBAgEBAwcECjknPRU+FUAMBgMDBQ1iAQQKMCgfAp0SCwEBEwUMIUAzkDJNL+gBAQEjLBIZLiI/MzNMMCElNhQLERIMDxMBAQYCAgEBBQEBAgEFAQECAQYCHAU4AQQCBQEZAQUCAQEBAgQCAgUBAQIJDQ8RCAw5Jz0VFUAMEQsMCgsTDGIGCxUTRDAMHgKdEhUB0Sc0DxALGAwMFgEBBgICAQQDAQEBAwQBAgMGHAU4AQQCBQEZAQUCAQEBAgQBAQEEAwEBAQsLDxEIDDknPRUVQAwRCwwKCxMMYgYLFxFBMwweAp0SFQEBAQEmKRIZLiI/MzNMMAAAAQAf/4gDYQJiABsAAAEyFhUUBg8BCQEuBDU0NjMyFxYxPgQCkVl3NBoa/sf+xwQOJBwWdllaZRMEDy8vQgJiZW0xaBsc/sgBOAQOLi5DH21laxUFES0hHAAAAAAGADgAAAN0ArwAAwAHAAsAFwAjAC8AAAEhFSERNSEVATUhFQEyFhUUBiMiJjU0NhMyFhUUBiMiJjU0NhMyFhUUBiMiJjU0NgEXAl39owJd/aMCXf0GHCcnHBsnJxscJyccGycnGxwnJxwbJycCvIX+5YWF/uSFhQK8JxscJyccGyf+5iccGycnGxwn/uQnGxwnJxwbJwAAAAEAEv9MAwMCugAcAAABFREOASImNDYzMhcRBREOASMiJjU0NjMyFxEzJQMDAVuCXFxBJCL+oAFcQEFcXEEjIgIBtgK6U/3+NEhKaEoNATRU/hE0SUo1NEoNAgFoAAAAAAkAOv9zA4MCvAAPABMAFwAbAB8AIwAnAC4ANQAAATIWFREUBiMhIiY1ETQ2MwUhFSEFIxUzJzM1IxcVITUlITUhJyMVMwMUFjsBNSMFMjY9ASEVAvc6UlI6/c86UlI6AlT9/wIB/elgYGBgYHYCAf3/AgH9/xZgYGAVDj1gAlQOFf3/ArxSOv3POlJSOgIxOlLSdZxyh3KHcnIVcop1/ooOFXV1FQ5SdQAAAAABADr/4gN8AnIAFwAAATIWFREUBiMhIiY1ETQ2OwE3NjsBMh8BA2MLDg4L/PALDg4LJh0LGZ4ZCxwCIQ8K/fMLDg4LAg0KDzsWFjsAAwAJ/3YDUAK9AAgADAAQAAABFwE5AQc3OQEXAScJARcHJwIemf404klqAXsZ/oQCFJplmQIlmf40SuMYAXsa/oQCY5lkmQAAAgAe/8kDYQKHABgAMQAAJRQGBxYXFgcGJyYnISInNjchMjY9AR4BFQcUBiMhDgEjIjU0NzY3LgE9ATQ2MyEyFhUDYTQoDzMMFS1FNC3+1SojHhoBFEppL0CnSDP+1jFmJyIDMhAoNEg0AaUzSKAqQgsrJwgGCyAZLhsSGWlK6wVGMHA0SDIsCwMCJiwLQivtM0lJMwAAAAACACH/mQNjArsADwAfAAABPwERFCMhFSc3HQEhMjY1JQ8BETQzITUXBz0BISIGFQLWGFuA/gOrqwHkEBb92BhbgAH9q6v+HBAWARYYW/78gGysrHMGFhChGFsBBH9sq6xzBhcQAAAAAAIAFP+LA0cCvQAUABwAACUWFRQHBiMiLwEGIyImEDYgFhUUByY0JiIGFBYyAzAXFBMcIBfbSlyBt7cBArcvW2aQZmaQBBcfHRMTF9swtwECt7eBWktdkGZmkGYAAwAo/3QDbwK7AAsAEwAsAAABMhYVFAYjIiY1NDYSIDYQJiAGECUWDwEGByMiLwEuASMmPQE0NzY7ATIWHQEBzK329q2u9vYsAQS4uP78uQIGDgkYBQYEBQXBAQMBBQUHBi4HCgK79q2u9vaurfb9IrkBBLi4/vwkCg4nBgIDgQECBwbkBwUFCgfBAAAIADz/1gN/AncAAwAHAA8AFwAfACcAKwAvAAATIREhJREhERIiJjQ2MhYUBCImNDYyFhQAMhYUBiImNCQyFhQGIiY0AxEjERM1IxU8A0P8vQL9/UlxJBoaJBkB4SQaGiQZ/ckkGRkkGgIUJBkZJBpe5KhtAnf9X0YCFv3qAZMaJBkZJBoaJBkZJP7WGiQZGSQaGiQZGSQBRP67AUX+7HZ2AAAAAAIANwAkA3sCdAAbACUAAAEyFhURFAYjISImNRE0NjsBNDM3PgEzITIfARUDMjY0JiMiBhQWA2IKDw8K/O4KDw8KrQEXBBYKAT8ZCxjcS2pqS0pqagItDgr+KAsODgsB2AoOATAJDRYwAf5LaZZqapZpAAAAAQA3/6sDdQKpABUAAAEWBgcGJwYHBicmNzYnLgEnJjY3NgQDdRDdrD46XGkvCQMGWAhFVggQ3KysAQkBjYncEwcHXwsFDQQEQk8ndkeI3RQTpgAABAAi/3gDZQK9AAkAFQAxAHcAACU2NTcfAgcvATciBhUUFjMyNjU0JgEHIgcnBiMiJic0Nx4BMzI2NTQmJzYzNhYVFAcFNDY0LgMnIyIPARYHBg8BBgcGIyImNzY/ATY3NjMyFz8BPgQmJyYnIyIvAS4BPwE2MzIfARYXFhcWMh8BFgcGMQIOAmKLXgpoJUZhEhkZEhMZGf7PYgYKRyAYSncBET8QJR1JDD0PA0p4EAGKAQMIDRkQAwoY2ggQAgXJBQELEilIHAMDygUBCxEJCsIEBAMHAgEDAxAsARAnBhMCE0gRCQYUBiEEBBQDHgR3SSsPZAoGYotFJmgKXjYZExIZGRITGQFdYgJGD3hKARE/CkgeJBM8EgF5Shse9wMJHBwkHx4JFtkdEgEFyQUCC2AdAgTKAwMLA8IGBgQNCQ0OBx0JJQYTDBVJERQGIRAUGgQEd0mzMgACACD/fANhAr0AVQBfAAABHgEdARQGDwEOAR8BFg8BBi8BJgYPAQ4BKwEiJi8BLgEPAQYvASY/ATYmLwEuAT0BNDY/ATYvASY/ATYfARY2PwE+ATsBMhYfAR4BPwE2HwEWDwEGFwUyNjQmIyIGFBYDSwkNDQl8CQYFSAwQRBASagcPARcBEAlhCRABFwEPB2kUD0QQDEgFBgl8CQ0NCXwWDEgLD0QQE2kHDwEXARAJYQkQARcBDwdqEhBEDwtIDBb+8T9YWD8+WFgBZwEQCWEJEAEXAgwIahMQRBANRwUFCX0JDQ0JfQkFBUcMD0QQE2oIDAIXARAJYQkQARcGEWoTD0QQDEgFBgl8CQ0NCXwJBgVIDBBEDxNqEQb4WHxZWXxYAAAAAwAi/2ICvwK7AA8AIwAuAAAFMj8BFxYPAQYnASYvAQEWAwEWDwEGIicBJi8BJj8BNjsBFxYHBhQXFjI2NCcmIgGxIhWwJw8P/g8Q/qIPAggBTxcwAV4QEP4HEgb+og8CEQIQKw8TA70W4A4ODSgaDQ4mIRewJw8Q/hAQAV4PFWH+sRcCuf6jEA//BgYBXhEUvhYOLA0RAj8NKA0NGigNDgAAAAABAAv/kwLvAtcABgAAASERIxEhAQLv/uq5/usBcgEr/mgBmAGsAAAAAwAo/3YDawK6ABwALAA8AAATBh0BIiY9ATQ2MyEyFh0BIzU0JiMhIgYdARQWMyUyFh0BFAYjISImPQE0NjMBNTQmIyEiBh0BFBYzITI2tgM6UVE6AVw6UWgVDv6kDhUVDgItOVJSOf6kOlFROgF+FA7+pA4VFQ4BXA4UARgQE0VROvQ6UVE6aWkOFRUO9A4VaVI68zpSUjrzOlL+gfMPFBQP8w8UFAAAAQAL/4IC7wLGAAYAABMhETMRIQELARW5ARb+jgEtAZn+Z/5VAAAAAAMAKP9zA3ACuwAHABcAGwAAACAWEAYgJhABNSM3IzUjFSMXIxUzBzMvATUzFQEeAVz29v6k9gJMppFwS3CQopEnfieW/QK79v6k9vYBXP5d6KeHh6foJycqlJQAAQAAAAEAAE8dYDFfDzz1AAsD6AAAAADI+gQNAAAAAMj6BA0AA/9MA5UC4gAAAAgAAgAAAAAAAAABAAAC7v8GAAADvAAAAAADlQABAAAAAAAAAAAAAAAAAAAAZAH0AAAAAAAAAU0AAAH0AAADqAA7A2EANALsACgDfQAWA4cAIALcABEDjAANAp8ALQN5ABkDCQAnA5gAKAOTACgDmQAoA7EANwOQACgDeQAbAucAHAOXACgDZAAMAvoAOwMwADsDMQA7A5oAOwOaAA4DmAAoAyEAGQN3AA4BiwADA7MAPAN5AA4DmgAoAfwAGwN9ABwDcQASA5EAJAOVACgDfwAeAsAANQOYACgDYQAVA6QAMANeAA4DZQAOA5gAKAO4ADkDrwA1A6IAMAONABoDTAAhA40AKQNVABIDgwAuA34AHQO1ADsDugA6A5kAIQNdAAUDgQAjA10AEgNWADkDXQAHAwcAPAM0ADsDqAA7AyoADwOXADMDjAAjA5YAKAIsAAUDkAA4A34AHQOKACEDmAAoA20AFgOAAB8DrgA4AygAEgO8ADoDrQA6A1cACQOOAB4DhAAhA2AAFAOXACgDuwA8A7EANwOfADcDtQAiA4EAIALgACIC+gALA5MAKAL6AAsDmAAoA0EAAAH0AAAAAAAAAAAAAAAAADAAeAEYAXICNAJKApYC0AMOAygDdAP4BCQEUgSMBMoE/AU2BWIFcAWGBZQFqAW8BdgGJAaCBpIGtAb6B3IHnggUCFwIjgjmCSgJRA+iD7oP2hASEEAQkBDUESwRXhGcEeISGhKIErAS8BMUE1YToBPCE+IT9hSGFJoU3hTqFSIVrBXaFh4WUBZiFpYXHBgIGGQZhhm0GgAaMBqGGqwa0BscG1AbfhvEHBYcUBx6HSYduB4KHh4ech6GHrQetB60AAAAAQAAAGQE4QAWAAAAAAACAAAAAQABAAAAQAAAAAAAAAAAAA8AugABAAAAAAABAAAAAAABAAAAAAAEAA4AAAADAAEECQAAAEIADgADAAEECQABAAAAUAADAAEECQACAAIAUAADAAEECQADAAAAUgADAAEECQAEAAIAUgADAAEECQAFAPwAVAADAAEECQAGAAIBUAADAAEECQAKAPwBUgADAAEECQBjAC4CTgADAAEECQBkAAwCfAADAAEECQBlAA4CiAADAAEECQBmAAwClgADAAEECQBnAAwColBpY3RvcyBXZWJmb250AKkAIABEAHIAZQB3ACAAVwBpAGwAcwBvAG4AOgAgAHcAdwB3AC4AZAByAGUAdwB3AGkAbABzAG8AbgAuAGMAbwBtAH8AfwBUAGgAaQBzACAAaQBzACAAYQAgAHAAcgBvAHQAZQBjAHQAZQBkACAAdwBlAGIAZgBvAG4AdAAgAGEAbgBkACAAaQBzACAAaQBuAHQAZQBuAGQAZQBkACAAZgBvAHIAIABDAFMAUwAgAEAAZgBvAG4AdAAtAGYAYQBjAGUAIAB1AHMAZQAgAE8ATgBMAFkALgAgAFIAZQB2AGUAcgBzAGUAIABlAG4AZwBpAG4AZQBlAHIAaQBuAGcAIAB0AGgAaQBzACAAZgBvAG4AdAAgAGkAcwAgAHMAdAByAGkAYwB0AGwAeQAgAHAAcgBvAGgAaQBiAGkAdABlAGQALgB/AFQAaABpAHMAIABpAHMAIABhACAAcAByAG8AdABlAGMAdABlAGQAIAB3AGUAYgBmAG8AbgB0ACAAYQBuAGQAIABpAHMAIABpAG4AdABlAG4AZABlAGQAIABmAG8AcgAgAEMAUwBTACAAQABmAG8AbgB0AC0AZgBhAGMAZQAgAHUAcwBlACAATwBOAEwAWQAuACAAUgBlAHYAZQByAHMAZQAgAGUAbgBnAGkAbgBlAGUAcgBpAG4AZwAgAHQAaABpAHMAIABmAG8AbgB0ACAAaQBzACAAcwB0AHIAaQBjAHQAbAB5ACAAcAByAG8AaABpAGIAaQB0AGUAZAAuAFQAaABpAHMAIABmAG8AbgB0ACAAaQBzACAAcAByAG8AdABlAGMAdABlAGQALgBQAGkAYwB0AG8AcwBSAGUAZwB1AGwAYQByAFAAaQBjAHQAbwBzAFAAaQBjAHQAbwBzAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAugECAkNSAAAA) format("truetype"), url("pictos-web.svg#webfontIyfZbseF") format("svg");
+  font-weight: normal;
+  font-style: normal; }
+
+@import url("//fonts.googleapis.com/css?family=false:false");
+/* line 3, ../themes/stylesheets/neptune/default/accessories/scss/_shapes.scss */
+.base-shape {
+  display: block;
+  content: ''; }
+
+/*$base-color: #3196FF;
+$neutral-color: #222;
+$base-gradient: flat;
+$toolbar-background-gradient: matte;*/
+/*$base-color: #3b5998;
+$neutral-color: #627aad;
+$base-gradient: flat;
+$color-mode: light;
+$include-highlights: false;*/
+/*$base-color: #A09DBC;
+$neutral-color: #eee;*/
+/*$stroke-color: #000;*/
+/*$base-gradient: flat;*/
+/*$include-highlights: false;*/
+/*$default-text-contrast: 100%;*/
+/*$base-color: #A13B18;
+$neutral-color: #303235;*/
+/*$neutral-color: #E0E6EF;*/
+/*$base-color: #d0d8da;
+$neutral-color: #d0d8da;
+$include-highlights: false;
+$base-gradient: flat;
+$stroke-color: $base-color;
+$panel-base-color: $neutral-color;
+$frame-base-color: lighten($neutral-color, 5%);
+$panel-border-color: $neutral-color;*/
+/*$grid-row-cell-focus-background-gradient: 'grid-row-over' !default;*/
+/*$grid-cell-special-background-gradient: 'grid-cell-special';*/
+/**
+ * Toolbar buttons
+ */
+/**
+ * @class Ext.form.*
+ */
+/**
+ * @class Ext.form.field.Base
+ */
+/**
+ * @class Ext.form.field.TextArea
+ */
+/**
+ * @class Ext.form.Label
+ */
+/**
+ * @class Ext.form.field.Checkbox
+ */
+/**
+ * @class Ext.form.field.Radio
+ */
+/**
+ * Error messages
+ */
+/**
+ * Trigger Field
+ */
+/**
+ * Fieldsets
+ */
+/**
+ * Sliders
+ */
+/**
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error. 
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to 
+ * be true. 
+ */
+/* line 4, ../themes/stylesheets/neptune/default/core/_reset.scss */
+html, body, div, dl, dt, dd, ul, ol, li, h1, h2, h3,
+h4, h5, h6, pre, code, form, fieldset, legend,
+input, textarea, p, blockquote, th, td {
+  margin: 0;
+  padding: 0; }
+
+/* line 9, ../themes/stylesheets/neptune/default/core/_reset.scss */
+table {
+  border-collapse: collapse;
+  border-spacing: 0; }
+
+/* line 14, ../themes/stylesheets/neptune/default/core/_reset.scss */
+fieldset, img {
+  border: 0; }
+
+/* line 19, ../themes/stylesheets/neptune/default/core/_reset.scss */
+address, caption, cite, code,
+dfn, em, strong, th, var {
+  font-style: normal;
+  font-weight: normal; }
+
+/* line 24, ../themes/stylesheets/neptune/default/core/_reset.scss */
+li {
+  list-style: none; }
+
+/* line 28, ../themes/stylesheets/neptune/default/core/_reset.scss */
+caption, th {
+  text-align: left; }
+
+/* line 32, ../themes/stylesheets/neptune/default/core/_reset.scss */
+h1, h2, h3, h4, h5, h6 {
+  font-size: 100%; }
+
+/* line 37, ../themes/stylesheets/neptune/default/core/_reset.scss */
+q:before,
+q:after {
+  content: ""; }
+
+/* line 41, ../themes/stylesheets/neptune/default/core/_reset.scss */
+abbr, acronym {
+  border: 0;
+  font-variant: normal; }
+
+/* line 46, ../themes/stylesheets/neptune/default/core/_reset.scss */
+sup {
+  vertical-align: text-top; }
+
+/* line 50, ../themes/stylesheets/neptune/default/core/_reset.scss */
+sub {
+  vertical-align: text-bottom; }
+
+/* line 54, ../themes/stylesheets/neptune/default/core/_reset.scss */
+input, textarea, select {
+  font-family: inherit;
+  font-size: inherit;
+  font-weight: inherit; }
+
+/* line 74, ../themes/stylesheets/neptune/default/core/_reset.scss */
+.x-border-box,
+.x-border-box * {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  -webkit-box-sizing: border-box; }
+
+/* line 1, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-body {
+  color: black;
+  font-size: 12px;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+  background-color: #e8ebed;
+  color: #22262a; }
+  /* line 8, ../themes/stylesheets/neptune/default/core/_core.scss */
+  .x-body * {
+    zoom: 1; }
+
+/* line 13, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-rtl {
+  direction: rtl; }
+
+/* line 17, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-ltr {
+  direction: ltr; }
+
+/* line 21, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-clear {
+  overflow: hidden;
+  clear: both;
+  height: 0;
+  width: 0;
+  font-size: 0;
+  line-height: 0; }
+
+/* line 30, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-layer {
+  position: absolute !important;
+  overflow: hidden; }
+
+/* line 37, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-shim {
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 45, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-hide-display, .x-grid-row-body-hidden, .x-grid-group-collapsed {
+  display: none !important; }
+
+/* line 49, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-hide-visibility {
+  visibility: hidden !important; }
+
+/* line 53, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 57, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-ie6 .x-item-disabled {
+  filter: none; }
+
+/* line 62, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-hidden,
+.x-hide-offsets {
+  display: block !important;
+  position: absolute !important;
+  left: -10000px !important;
+  top: -10000px !important; }
+
+/* line 69, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-hide-nosize {
+  height: 0 !important;
+  width: 0 !important; }
+
+/* line 74, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-masked-relative {
+  position: relative; }
+
+/* line 80, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-ie6 .x-masked select,
+.x-ie6.x-body-masked select {
+  visibility: hidden !important; }
+
+/* line 87, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-css-shadow {
+  position: absolute;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px; }
+
+/* line 92, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-ie-shadow {
+  background-color: #777;
+  display: none;
+  position: absolute;
+  overflow: hidden; }
+
+/* line 100, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow {
+  display: none;
+  position: absolute;
+  overflow: hidden; }
+
+/* line 106, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow * {
+  overflow: hidden; }
+
+/* line 110, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow * {
+  padding: 0;
+  border: 0;
+  margin: 0;
+  clear: none; }
+
+/* top  bottom */
+/* line 120, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xstc,
+.x-frame-shadow .xsbc {
+  height: 6px;
+  float: left; }
+
+/* line 125, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xsc {
+  width: 100%; }
+
+/* line 129, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xsml {
+  background: transparent repeat-y 0 0; }
+
+/* line 133, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xsmr {
+  background: transparent repeat-y -6px 0; }
+
+/* line 137, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xstl {
+  background: transparent no-repeat 0 0; }
+
+/* line 141, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xstc {
+  background: transparent repeat-x 0 -30px; }
+
+/* line 145, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xstr {
+  background: transparent repeat-x 0 -18px; }
+
+/* line 149, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xsbl {
+  background: transparent no-repeat 0 -12px; }
+
+/* line 153, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xsbc {
+  background: transparent repeat-x 0 -36px; }
+
+/* line 157, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xsbr {
+  background: transparent repeat-x 0 -6px; }
+
+/* line 165, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xstl,
+.x-frame-shadow .xstc,
+.x-frame-shadow .xstr,
+.x-frame-shadow .xsbl,
+.x-frame-shadow .xsbc,
+.x-frame-shadow .xsbr {
+  width: 6px;
+  height: 6px;
+  float: left;
+  background-image: url('../../resources/themes/images/neptune/shared/shadow.png'); }
+
+/* line 176, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xsml,
+.x-frame-shadow .xsmr {
+  width: 6px;
+  float: left;
+  height: 100%;
+  background-image: url('../../resources/themes/images/neptune/shared/shadow-lr.png'); }
+
+/* line 186, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xsmc {
+  float: left;
+  height: 100%;
+  background-image: url('../../resources/themes/images/neptune/shared/shadow-c.png'); }
+
+/* line 196, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-frame-shadow .xst,
+.x-frame-shadow .xsb {
+  height: 6px;
+  overflow: hidden;
+  width: 100%; }
+
+/* line 202, ../themes/stylesheets/neptune/default/core/_core.scss */
+.no-select, .x-boundlist-item, .x-menu .x-menu-body, .x-grid-row, .x-grid-cell, .x-unselectable, .x-form-item-label, .x-panel-header-text, .x-tip-header-text, .x-slider-focus, .x-window-header-text, .x-surface tspan {
+  -moz-user-select: none;
+  -khtml-user-select: none;
+  -webkit-user-select: ignore;
+  cursor: default; }
+
+/* line 209, ../themes/stylesheets/neptune/default/core/_core.scss */
+.mr-white-glove, .x-boundlist-item, .x-btn, .x-color-picker, .x-tab, .x-toolbar-scroll-left, .x-tabbar-scroll-left,
+.x-toolbar-scroll-right, .x-tabbar-scroll-right {
+  cursor: pointer;
+  cursor: hand; }
+  /* line 212, ../themes/stylesheets/neptune/default/core/_core.scss */
+  .mr-white-glove *, .x-boundlist-item *, .x-btn *, .x-color-picker *, .x-tab *, .x-toolbar-scroll-left *, .x-tabbar-scroll-left *,
+  .x-toolbar-scroll-right *, .x-tabbar-scroll-right * {
+    cursor: pointer;
+    cursor: hand; }
+
+/* line 218, ../themes/stylesheets/neptune/default/core/_core.scss */
+.overflow-ellipsis, .x-btn-group-header-text, .x-grid-cell-inner, .x-panel-header-text-container {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis;
+  white-space: nowrap; }
+
+/* line 225, ../themes/stylesheets/neptune/default/core/_core.scss */
+.outline-none, *:focus, .x-btn button, .x-datepicker a, .x-monthpicker-yearnav button, .x-color-picker a, .x-slider-focus, .x-window, .x-tab button {
+  -moz-outline: 0 none;
+  outline: 0 none; }
+
+/* line 230, ../themes/stylesheets/neptune/default/core/_core.scss */
+.bigtext, .x-form-item, .x-panel-header-default .x-panel-header-text-container, .x-panel-header-default-framed .x-panel-header-text-container, .x-window-header-text {
+  text-rendering: optimizeLegibility;
+  -webkit-font-smoothing: antialiased; }
+
+/* line 236, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-tl {
+  background: transparent no-repeat 0 0; }
+
+/* line 241, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-tc {
+  height: 8px;
+  background: transparent repeat-x 0 0;
+  overflow: hidden; }
+
+/* line 247, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-tr {
+  background: transparent no-repeat right -8px; }
+
+/* line 251, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-ml {
+  background: transparent repeat-y 0;
+  padding-left: 4px;
+  overflow: hidden; }
+
+/* line 258, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-mc {
+  background: repeat-x 0 -16px;
+  padding: 4px 10px; }
+
+/* line 263, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-mc h3 {
+  margin: 0 0 4px 0; }
+
+/* line 268, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-mr {
+  background: transparent repeat-y right;
+  padding-right: 4px;
+  overflow: hidden; }
+
+/* line 274, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-bl {
+  background: transparent no-repeat 0 -16px; }
+
+/* line 279, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-bc {
+  background: transparent repeat-x 0 -8px;
+  height: 8px;
+  overflow: hidden; }
+
+/* line 285, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-br {
+  background: transparent no-repeat right -24px; }
+
+/* line 289, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-tl, .x-box-bl {
+  padding-left: 8px;
+  overflow: hidden; }
+
+/* line 294, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-tr, .x-box-br {
+  padding-right: 8px;
+  overflow: hidden; }
+
+/* line 299, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-tl {
+  background-image: url('../../resources/themes/images/neptune/box/corners.gif'); }
+
+/* line 303, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-tc {
+  background-image: url('../../resources/themes/images/neptune/box/tb.gif'); }
+
+/* line 307, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-tr {
+  background-image: url('../../resources/themes/images/neptune/box/corners.gif'); }
+
+/* line 311, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-ml {
+  background-image: url('../../resources/themes/images/neptune/box/l.gif'); }
+
+/* line 315, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-mc {
+  background-color: #eee;
+  background-image: url('../../resources/themes/images/neptune/box/tb.gif');
+  font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;
+  color: #393939;
+  font-size: 15px; }
+
+/* line 323, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-mc h3 {
+  font-size: 18px;
+  font-weight: bold; }
+
+/* line 328, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-mr {
+  background-image: url('../../resources/themes/images/neptune/box/r.gif'); }
+
+/* line 332, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-bl {
+  background-image: url('../../resources/themes/images/neptune/box/corners.gif'); }
+
+/* line 336, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-bc {
+  background-image: url('../../resources/themes/images/neptune/box/tb.gif'); }
+
+/* line 340, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-br {
+  background-image: url('../../resources/themes/images/neptune/box/corners.gif'); }
+
+/* line 344, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr {
+  background-image: url('../../resources/themes/images/neptune/box/corners-blue.gif'); }
+
+/* line 348, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc {
+  background-image: url('../../resources/themes/images/neptune/box/tb-blue.gif'); }
+
+/* line 352, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-blue .x-box-mc {
+  background-color: #c3daf9; }
+
+/* line 356, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-blue .x-box-mc h3 {
+  color: #17385b; }
+
+/* line 360, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-blue .x-box-ml {
+  background-image: url('../../resources/themes/images/neptune/box/l-blue.gif'); }
+
+/* line 364, ../themes/stylesheets/neptune/default/core/_core.scss */
+.x-box-blue .x-box-mr {
+  background-image: url('../../resources/themes/images/neptune/box/r-blue.gif'); }
+
+/* line 193, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-base, .x-tool-maximize, .x-tool-minimize, .x-tool-restore, .x-tool-save, .x-tool-refresh, .x-tool-help, .x-tool-info, .x-tool-search, .x-tool-gear, .x-tool-close, .x-tool-minus, .x-tool-plus, .x-tool-print, .x-tool-up, .x-tool-toggle, .x-tool-collapse, .x-tool-collapse-top, .x-tool-left, .x-tool-prev, .x-tool-down, .x-tool-collapse-bottom, .x-tool-expand-bottom, .x-tool-expand, .x-tool-right, .x-tool-next, .x-tool-collapse-all, .x-tool-expand-all, .x-tool-pin, .x-tool-unpin, .x-collapsed .x-tool-toggle {
+  width: 16px;
+  height: 16px;
+  background-image: url('../../resources/themes/images/neptune/tools.png'); }
+
+/* line 199, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-base-over, .x-tool-over .x-tool-maximize, .x-tool-over .x-tool-minimize, .x-tool-over .x-tool-restore, .x-tool-over .x-tool-save, .x-tool-over .x-tool-refresh, .x-tool-over .x-tool-help, .x-tool-over .x-tool-info, .x-tool-over .x-tool-search, .x-tool-over .x-tool-gear, .x-tool-over .x-tool-close, .x-tool-over .x-tool-minus, .x-tool-over .x-tool-plus, .x-tool-over .x-tool-print, .x-tool-over .x-tool-up, .x-tool-over .x-tool-toggle, .x-tool-over .x-tool-collapse, .x-tool-over .x-tool-collapse-top, .x-tool-over .x-tool-left, .x-tool-over .x-tool-prev, .x-tool-over .x-tool-down, .x-tool-over .x-tool-collapse-bottom, .x-tool-over .x-tool-expand-bottom, .x-tool-over .x-tool-expand, .x-tool-over .x-tool-right, .x-tool-over .x-tool-next, .x-tool-over .x-tool-collapse-all, .x-tool-over .x-tool-expand-all, .x-tool-over .x-tool-pin, .x-tool-over .x-tool-unpin, .x-collapsed .x-tool-over .x-tool-toggle {
+  background-position-y: -16px; }
+
+/* line 202, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-base-pressed, .x-tool-pressed .x-tool-maximize, .x-tool-pressed .x-tool-minimize, .x-tool-pressed .x-tool-restore, .x-tool-pressed .x-tool-save, .x-tool-pressed .x-tool-refresh, .x-tool-pressed .x-tool-help, .x-tool-pressed .x-tool-info, .x-tool-pressed .x-tool-search, .x-tool-pressed .x-tool-gear, .x-tool-pressed .x-tool-close, .x-tool-pressed .x-tool-minus, .x-tool-pressed .x-tool-plus, .x-tool-pressed .x-tool-print, .x-tool-pressed .x-tool-up, .x-tool-pressed .x-tool-toggle, .x-tool-pressed .x-tool-collapse, .x-tool-pressed .x-tool-collapse-top, .x-tool-pressed .x-tool-left, .x-tool-pressed .x-tool-prev, .x-tool-pressed .x-tool-down, .x-tool-pressed .x-tool-collapse-bottom, .x-tool-pressed .x-tool-expand-bottom, .x-tool-pressed .x-tool-expand, .x-tool-pressed .x-tool-right, .x-tool-pressed .x-tool-next, .x-tool-pressed .x-tool-collapse-all, .x-tool-pressed .x-tool-expand-all, .x-tool-pressed .x-tool-pin, .x-tool-pressed .x-tool-unpin, .x-collapsed .x-tool-pressed .x-tool-toggle {
+  background-position-y: -32px; }
+
+/* line 206, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-accordion-tool-base, .x-accordion-hd .x-tool-collapse-top, .x-accordion-hd .x-tool-collapse-bottom, .x-accordion-hd .x-tool-expand-top, .x-accordion-hd .x-tool-expand-bottom {
+  width: 12px;
+  height: 12px;
+  background-image: url('../../resources/themes/images/neptune/tools-small.png'); }
+
+/* line 212, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-accordion-tool-base-over, .x-accordion-hd .x-tool-over .x-tool-collapse-top, .x-accordion-hd .x-tool-over .x-tool-collapse-bottom, .x-accordion-hd .x-tool-over .x-tool-expand-top, .x-accordion-hd .x-tool-over .x-tool-expand-bottom {
+  background-position-y: -12px; }
+
+/* line 215, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-accordion-tool-base-pressed, .x-accordion-hd .x-tool-pressed .x-tool-collapse-top, .x-accordion-hd .x-tool-pressed .x-tool-collapse-bottom, .x-accordion-hd .x-tool-pressed .x-tool-expand-top, .x-accordion-hd .x-tool-pressed .x-tool-expand-bottom {
+  background-position-y: -24px; }
+
+/* line 1, ../themes/stylesheets/neptune/default/util/_focus.scss */
+.x-focus-element {
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px; }
+
+/* line 9, ../themes/stylesheets/neptune/default/util/_focus.scss */
+.x-focus-frame {
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  z-index: 100000000;
+  width: 0px;
+  height: 0px; }
+
+/* line 21, ../themes/stylesheets/neptune/default/util/_focus.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom,
+.x-focus-frame-left,
+.x-focus-frame-right {
+  position: absolute;
+  top: 0px;
+  left: 0px; }
+
+/* line 28, ../themes/stylesheets/neptune/default/util/_focus.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom {
+  border-top: solid 2px #15428b;
+  height: 2px; }
+
+/* line 34, ../themes/stylesheets/neptune/default/util/_focus.scss */
+.x-focus-frame-left,
+.x-focus-frame-right {
+  border-left: solid 2px #15428b;
+  width: 2px; }
+
+/**
+  * @class Ext.Button
+  * Used to create the base structure of an Ext.Button
+  */
+/**
+ * @mixin extjs-btn-group-ui
+ * @class Ext.ButtonGroup
+ */
+/**
+  * @class Ext.menu.*
+  */
+/**
+  * @class Ext.Panel
+  * Used to create the base structure of an Ext.Panel
+  */
+/**
+  * @class Ext.Panel
+  * Used to create a visual theme for an Ext.Panel
+  */
+/**
+ * @mixin ext-toolbar-ui
+ * @class Ext.toolbar.Toolbar
+ * @param {String} $ui The name of the UI
+ * @param {Color} $background-color The background color of the toolbar (defaults to transparent)
+ * @param {Gradient/color-stops} $background-gradient The background gradient of the toolbar (defaults to null)
+ * @param {Color} $border-color The border color of the toolbar (defaults to null)
+ */
+/**
+  * @class Ext.Window
+  * Used to create a visual theme for an Ext.Panel
+  */
+/**
+  * @class Ext.tab.Bar
+  */
+/**
+  * @class Ext.Tab
+  */
+/**
+  * @class Ext.LoadMask
+  * Component used to mask a component
+  */
+/* line 5, ../themes/stylesheets/neptune/default/widgets/_loadmask.scss */
+.x-mask {
+  z-index: 100;
+  position: absolute;
+  top: 0;
+  left: 0;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=90);
+  opacity: 0.9;
+  width: 100%;
+  height: 100%;
+  background: white; }
+
+/* line 23, ../themes/stylesheets/neptune/default/widgets/_loadmask.scss */
+.x-mask-msg {
+  z-index: 20001;
+  position: absolute;
+  top: 0;
+  left: 0;
+  -moz-box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px;
+  -webkit-box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px;
+  -o-box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px;
+  box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px;
+  padding: 2px;
+  -moz-border-radius: 6px;
+  -webkit-border-radius: 6px;
+  -o-border-radius: 6px;
+  -ms-border-radius: 6px;
+  -khtml-border-radius: 6px;
+  border-radius: 6px;
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f4f5f6));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f4f5f6);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f4f5f6);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f4f5f6);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f4f5f6);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f4f5f6); }
+  /* line 45, ../themes/stylesheets/neptune/default/widgets/_loadmask.scss */
+  .x-mask-msg div {
+    padding: 5px 10px 5px 25px;
+    background-image: url('../../resources/themes/images/neptune/grid/loading.gif');
+    background-repeat: no-repeat;
+    background-position: 5px center;
+    cursor: default;
+    font-size: 11px;
+    font-weight: bold;
+    color: #75b9f0;
+    text-shadow: white 0 1px 0; }
+
+/**
+ * @mixin extjs-progress-ui
+ */
+/**
+ * W3C Suggested Default style sheet for HTML 4
+ * http://www.w3.org/TR/CSS21/sample.html
+ */
+/* line 2, ../themes/stylesheets/neptune/default/widgets/_boundlist.scss */
+.x-boundlist {
+  background: white; }
+  /* line 8, ../themes/stylesheets/neptune/default/widgets/_boundlist.scss */
+  .x-boundlist .x-toolbar {
+    border-width: 1px 0 0 0; }
+
+/* line 13, ../themes/stylesheets/neptune/default/widgets/_boundlist.scss */
+.x-boundlist-item {
+  padding: 5px 6px;
+  font-size: 11px;
+  position: relative;
+  /*allow hover in IE on empty items*/
+  border: 0 solid white; }
+  /* line 26, ../themes/stylesheets/neptune/default/widgets/_boundlist.scss */
+  .x-boundlist-item:last-child {
+    -moz-border-radius-bottomleft: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -o-border-bottom-left-radius: 4px;
+    -ms-border-bottom-left-radius: 4px;
+    -khtml-border-bottom-left-radius: 4px;
+    border-bottom-left-radius: 4px;
+    -moz-border-radius-bottomright: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -o-border-bottom-right-radius: 4px;
+    -ms-border-bottom-right-radius: 4px;
+    -khtml-border-bottom-right-radius: 4px;
+    border-bottom-right-radius: 4px; }
+
+/* line 31, ../themes/stylesheets/neptune/default/widgets/_boundlist.scss */
+.x-boundlist-item-over {
+  background: #f2fbff;
+  border-color: #0d57b6;
+  color: #002c40; }
+
+/* line 37, ../themes/stylesheets/neptune/default/widgets/_boundlist.scss */
+.x-boundlist-selected {
+  background: #094cb0;
+  border-color: #0b4c9e;
+  color: white; }
+
+/* line 43, ../themes/stylesheets/neptune/default/widgets/_boundlist.scss */
+.x-boundlist-selected.x-boundlist-item-over {
+  background: #0a56c8; }
+
+/* line 47, ../themes/stylesheets/neptune/default/widgets/_boundlist.scss */
+.x-boundlist-floating {
+  border-top-width: 0;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px; }
+
+/* line 53, ../themes/stylesheets/neptune/default/widgets/_boundlist.scss */
+.x-boundlist-above {
+  border-top-width: 1px;
+  border-bottom-width: 0;
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+  /* line 60, ../themes/stylesheets/neptune/default/widgets/_boundlist.scss */
+  .x-boundlist-above:first-child {
+    -moz-border-radius-topleft: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -o-border-top-left-radius: 4px;
+    -ms-border-top-left-radius: 4px;
+    -khtml-border-top-left-radius: 4px;
+    border-top-left-radius: 4px;
+    -moz-border-radius-topright: 4px;
+    -webkit-border-top-right-radius: 4px;
+    -o-border-top-right-radius: 4px;
+    -ms-border-top-right-radius: 4px;
+    -khtml-border-top-right-radius: 4px;
+    border-top-right-radius: 4px; }
+  /* line 64, ../themes/stylesheets/neptune/default/widgets/_boundlist.scss */
+  .x-boundlist-above:last-child {
+    -moz-border-radius-bottomleft: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -o-border-bottom-left-radius: 4px;
+    -ms-border-bottom-left-radius: 4px;
+    -khtml-border-bottom-left-radius: 4px;
+    border-bottom-left-radius: 4px;
+    -moz-border-radius-bottomright: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -o-border-bottom-right-radius: 4px;
+    -ms-border-bottom-right-radius: 4px;
+    -khtml-border-bottom-right-radius: 4px;
+    border-bottom-right-radius: 4px; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.forbidden {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .forbidden:after, .forbidden:before {
+    font-size: 17px;
+    content: "d";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .forbidden:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .forbidden:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.people {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .people:after, .people:before {
+    font-size: 17px;
+    content: "g";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .people:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .people:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.information {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .information:after, .information:before {
+    font-size: 17px;
+    content: "i";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .information:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .information:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.link {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .link:after, .link:before {
+    font-size: 17px;
+    content: "j";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .link:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .link:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.love {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .love:after, .love:before {
+    font-size: 17px;
+    content: "k";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .love:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .love:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.list {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .list:after, .list:before {
+    font-size: 17px;
+    content: "l";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .list:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .list:after {
+    top: 1px;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.music {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .music:after, .music:before {
+    font-size: 17px;
+    content: "m";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .music:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .music:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.edit2 {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .edit2:after, .edit2:before {
+    font-size: 17px;
+    content: "p";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .edit2:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .edit2:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.chat2 {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .chat2:after, .chat2:before {
+    font-size: 17px;
+    content: "q";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .chat2:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .chat2:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.retweet {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .retweet:after, .retweet:before {
+    font-size: 17px;
+    content: "r";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .retweet:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .retweet:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.search {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .search:after, .search:before {
+    font-size: 17px;
+    content: "s";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .search:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .search:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.time {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .time:after, .time:before {
+    font-size: 17px;
+    content: "t";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .time:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .time:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.photo {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .photo:after, .photo:before {
+    font-size: 17px;
+    content: "v";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .photo:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .photo:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.chat {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .chat:after, .chat:before {
+    font-size: 17px;
+    content: "w";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .chat:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .chat:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.settings {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .settings:after, .settings:before {
+    font-size: 17px;
+    content: "x";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .settings:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .settings:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.settings2 {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .settings2:after, .settings2:before {
+    font-size: 17px;
+    content: "y";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .settings2:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .settings2:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.bookmark {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .bookmark:after, .bookmark:before {
+    font-size: 17px;
+    content: "z";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .bookmark:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .bookmark:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.link2 {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .link2:after, .link2:before {
+    font-size: 17px;
+    content: "A";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .link2:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .link2:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.tweet {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .tweet:after, .tweet:before {
+    font-size: 17px;
+    content: "B";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .tweet:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .tweet:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.cloud {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .cloud:after, .cloud:before {
+    font-size: 17px;
+    content: "C";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .cloud:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .cloud:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.close {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .close:after, .close:before {
+    font-size: 17px;
+    content: "D";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .close:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .close:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.home {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .home:after, .home:before {
+    font-size: 17px;
+    content: "H";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .home:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .home:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.key {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .key:after, .key:before {
+    font-size: 17px;
+    content: "K";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .key:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .key:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.mail {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .mail:after, .mail:before {
+    font-size: 17px;
+    content: "M";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .mail:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .mail:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.paste {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .paste:after, .paste:before {
+    font-size: 17px;
+    content: "N";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .paste:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .paste:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.power {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .power:after, .power:before {
+    font-size: 17px;
+    content: "Q";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .power:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .power:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.open {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .open:after, .open:before {
+    font-size: 17px;
+    content: "R";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .open:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .open:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.star {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .star:after, .star:before {
+    font-size: 17px;
+    content: "S";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .star:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .star:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.person {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .person:after, .person:before {
+    font-size: 17px;
+    content: "U";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .person:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .person:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.video {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .video:after, .video:before {
+    font-size: 17px;
+    content: "V";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .video:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .video:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.edit {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .edit:after, .edit:before {
+    font-size: 17px;
+    content: "W";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .edit:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .edit:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.charts {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .charts:after, .charts:before {
+    font-size: 17px;
+    content: "Z";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .charts:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .charts:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.expand {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .expand:after, .expand:before {
+    font-size: 17px;
+    content: "`";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .expand:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .expand:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.refresh {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .refresh:after, .refresh:before {
+    font-size: 17px;
+    content: "1";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .refresh:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .refresh:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.tick {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .tick:after, .tick:before {
+    font-size: 17px;
+    content: "2";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .tick:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .tick:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.tick2 {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .tick2:after, .tick2:before {
+    font-size: 17px;
+    content: "3";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .tick2:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .tick2:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.play {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .play:after, .play:before {
+    font-size: 17px;
+    content: "4";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .play:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .play:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.pause {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .pause:after, .pause:before {
+    font-size: 17px;
+    content: "5";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .pause:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .pause:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.stop {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .stop:after, .stop:before {
+    font-size: 17px;
+    content: "6";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .stop:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .stop:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.forward {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .forward:after, .forward:before {
+    font-size: 17px;
+    content: "7";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .forward:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .forward:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.rewind {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .rewind:after, .rewind:before {
+    font-size: 17px;
+    content: "8";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .rewind:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .rewind:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.play2 {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .play2:after, .play2:before {
+    font-size: 17px;
+    content: "9";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .play2:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .play2:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.refresh2 {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .refresh2:after, .refresh2:before {
+    font-size: 17px;
+    content: "0";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .refresh2:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .refresh2:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.minus {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .minus:after, .minus:before {
+    font-size: 17px;
+    content: "-";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .minus:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .minus:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.power {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .power:after, .power:before {
+    font-size: 17px;
+    content: "-";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .power:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .power:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.left {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .left:after, .left:before {
+    font-size: 17px;
+    content: "[";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .left:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .left:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.right {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .right:after, .right:before {
+    font-size: 17px;
+    content: "]";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .right:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .right:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.date {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .date:after, .date:before {
+    font-size: 17px;
+    content: "\\";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .date:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .date:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.shuffle {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .shuffle:after, .shuffle:before {
+    font-size: 17px;
+    content: ";";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .shuffle:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .shuffle:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.wifi {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .wifi:after, .wifi:before {
+    font-size: 17px;
+    content: "'";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .wifi:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .wifi:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.speed {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .speed:after, .speed:before {
+    font-size: 17px;
+    content: ",";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .speed:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .speed:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.more {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .more:after, .more:before {
+    font-size: 17px;
+    content: ".";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .more:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .more:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.print {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .print:after, .print:before {
+    font-size: 17px;
+    content: "/";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .print:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .print:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.warning {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .warning:after, .warning:before {
+    font-size: 17px;
+    content: "!";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .warning:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .warning:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.location {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .location:after, .location:before {
+    font-size: 17px;
+    content: "@";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .location:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .location:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.trash {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .trash:after, .trash:before {
+    font-size: 17px;
+    content: "#";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .trash:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .trash:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.cart {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .cart:after, .cart:before {
+    font-size: 17px;
+    content: "$";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .cart:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .cart:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.flag {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .flag:after, .flag:before {
+    font-size: 17px;
+    content: "^";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .flag:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .flag:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.add {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .add:after, .add:before {
+    font-size: 17px;
+    content: "&";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .add:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .add:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.close {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .close:after, .close:before {
+    font-size: 17px;
+    content: "*";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .close:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .close:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.lock {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .lock:after, .lock:before {
+    font-size: 17px;
+    content: "(";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .lock:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .lock:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.unlock {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .unlock:after, .unlock:before {
+    font-size: 17px;
+    content: ")";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .unlock:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .unlock:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.remove {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .remove:after, .remove:before {
+    font-size: 17px;
+    content: "_";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .remove:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .remove:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.add2 {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .add2:after, .add2:before {
+    font-size: 17px;
+    content: "+";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .add2:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .add2:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.up {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .up:after, .up:before {
+    font-size: 17px;
+    content: "{";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .up:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .up:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.down {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .down:after, .down:before {
+    font-size: 17px;
+    content: "}";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .down:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .down:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.bell {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .bell:after, .bell:before {
+    font-size: 17px;
+    content: ":";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .bell:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .bell:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.quote {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .quote:after, .quote:before {
+    font-size: 17px;
+    content: '"';
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .quote:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .quote:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.novolume {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .novolume:after, .novolume:before {
+    font-size: 17px;
+    content: "<";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .novolume:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .novolume:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.volume {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .volume:after, .volume:before {
+    font-size: 17px;
+    content: ">";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .volume:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .volume:after {
+    top: null;
+    left: null; }
+
+/* line 914, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.question {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 17px;
+  line-height: 17px; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .question:after, .question:before {
+    font-size: 17px;
+    content: "?";
+    -webkit-text-stroke: 1px false;
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .question:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+  /* line 917, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .question:after {
+    top: null;
+    left: null; }
+
+/* line 83, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn {
+  display: inline-block;
+  *display: inline;
+  position: relative;
+  vertical-align: middle;
+  background-repeat: no-repeat; }
+  /* line 95, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn.small .x-btn-icon:after {
+    font-size: 16px; }
+  /* line 102, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn.medium .x-btn-icon:before,
+  .x-btn.medium .x-btn-icon:after {
+    font-size: 24px; }
+  /* line 109, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn.large .x-btn-icon:before,
+  .x-btn.large .x-btn-icon:after {
+    font-size: 30px; }
+  /* line 114, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn em {
+    background-repeat: no-repeat; }
+    /* line 118, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+    .x-btn em a {
+      text-decoration: none;
+      display: inline-block;
+      color: inherit; }
+  /* line 125, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn button {
+    margin: 0;
+    padding: 0;
+    border: 0;
+    width: auto;
+    background: none;
+    overflow: hidden;
+    vertical-align: bottom;
+    -webkit-appearance: none; }
+    /* line 136, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+    .x-btn button::-moz-focus-inner {
+      border: 0;
+      padding: 0; }
+  /* line 142, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn .x-btn-inner {
+    display: block;
+    white-space: nowrap;
+    background-color: transparent;
+    background-repeat: no-repeat;
+    background-position: left center;
+    -moz-transition: color;
+    -webkit-transition: color;
+    -o-transition: color;
+    transition: color; }
+  /* line 151, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn .x-btn-left .x-btn-inner {
+    text-align: left; }
+  /* line 155, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn .x-btn-center .x-btn-inner {
+    text-align: center; }
+  /* line 159, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn .x-btn-right .x-btn-inner {
+    text-align: right; }
+
+/* line 164, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1; }
+
+/* line 168, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-disabled span {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+  /* line 172, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-disabled span, .x-ie7 .x-btn-disabled span {
+    filter: none; }
+
+/* line 179, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie7 .x-btn-disabled,
+.x-ie8 .x-btn-disabled {
+  filter: none; }
+
+/* line 186, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie6 .x-btn-disabled .x-btn-icon,
+.x-ie7 .x-btn-disabled .x-btn-icon,
+.x-ie8 .x-btn-disabled .x-btn-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+
+/* line 193, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+* html .x-ie .x-btn button {
+  width: 1px; }
+
+/* line 198, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie .x-btn button {
+  overflow-x: visible;
+  /*prevents extra horiz space in IE*/
+  vertical-align: baseline;
+  /*IE doesn't like bottom*/ }
+
+/* line 205, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-strict .x-ie6 .x-btn .x-frame-mc,
+.x-strict .x-ie7 .x-btn .x-frame-mc {
+  height: 100%; }
+
+/* line 214, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn .x-frame-mc {
+  vertical-align: middle;
+  white-space: nowrap;
+  text-align: center;
+  cursor: pointer; }
+
+/* line 225, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon-text-left .x-btn-icon {
+  background-position: left center; }
+
+/* line 226, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon-text-right .x-btn-icon {
+  background-position: right center; }
+
+/* line 227, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon-text-top .x-btn-icon {
+  background-position: center top; }
+
+/* line 228, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon-text-bottom .x-btn-icon {
+  background-position: center bottom; }
+
+/* line 231, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn button, .x-btn a {
+  position: relative; }
+  /* line 234, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn button .x-btn-icon, .x-btn a .x-btn-icon {
+    position: absolute;
+    background-repeat: no-repeat; }
+
+/* line 241, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-arrow-right {
+  background: transparent no-repeat right 4px;
+  padding-right: 15px; }
+  /* line 245, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-arrow-right .x-btn-inner {
+    padding-right: 0 !important; }
+
+/* line 251, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-pressed .x-btn-arrow-right {
+  background-position: right -17px; }
+
+/* line 262, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-toolbar .x-btn-arrow-right {
+  padding-right: 15px; }
+
+/* line 266, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-arrow-bottom {
+  background: transparent no-repeat center bottom;
+  padding-bottom: 15px; }
+
+/* line 271, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-arrow {
+  background-image: url('../../resources/themes/images/neptune/button/arrow.png');
+  display: block; }
+
+/* line 278, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-split-right,
+.x-btn-over .x-btn-split-right {
+  background: transparent no-repeat right center;
+  background-image: url('../../resources/themes/images/neptune/button/s-arrow.png');
+  padding-right: 19px !important; }
+
+/* line 285, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-split-bottom,
+.x-btn-over .x-btn-split-bottom {
+  background: transparent no-repeat center bottom;
+  background-image: url('../../resources/themes/images/neptune/button/s-arrow-b.png');
+  padding-bottom: 19px; }
+
+/* line 291, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-toolbar .x-btn-split-right {
+  background-image: url('../../resources/themes/images/neptune/button/s-arrow-noline.png');
+  padding-right: 17px !important; }
+
+/* line 296, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-toolbar .x-btn-split-bottom {
+  background-image: url('../../resources/themes/images/neptune/button/s-arrow-b-noline.png'); }
+
+/* line 300, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-split {
+  display: block; }
+
+/* line 305, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-item-disabled,
+.x-item-disabled * {
+  cursor: default; }
+
+/* line 309, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-cycle-fixed-width .x-btn-inner {
+  text-align: inherit; }
+
+/* line 313, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-over .x-btn-split-right {
+  background-image: url('../../resources/themes/images/neptune/button/s-arrow-o.png'); }
+
+/* line 314, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-over .x-btn-split-bottom {
+  background-image: url('../../resources/themes/images/neptune/button/s-arrow-bo.png'); }
+
+/* line 317, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-menu-active .x-btn-split-right,
+.x-btn-pressed .x-btn-split-right {
+  background-image: url('../../resources/themes/images/neptune/button/s-arrow-p.png'); }
+
+/* line 319, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-menu-active .x-btn-split-bottom,
+.x-btn-pressed .x-btn-split-bottom {
+  background-image: url('../../resources/themes/images/neptune/button/s-arrow-bp.png'); }
+
+/* line 461, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small {
+  border-color: #093152; }
+
+/* line 465, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small .x-btn-inner {
+  font-size: 12px;
+  font-weight: bold;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: #f4fafe;
+  background-repeat: no-repeat;
+  padding: 0 3px;
+  text-shadow: #0e4d80 0 -1px 0; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-btn-default-small {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 6px 4px 6px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #1369ae;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2591e8), color-stop(3%, #1574c0), color-stop(100%, #115d9b));
+  background-image: -webkit-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -moz-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -o-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -ms-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: linear-gradient(top, #2591e8, #1574c0 3%, #115d9b); }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-small-mc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-bg.gif');
+  background-color: #1369ae; }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-small-tl,
+.x-nbr .x-btn-default-small-bl,
+.x-nbr .x-btn-default-small-tr,
+.x-nbr .x-btn-default-small-br,
+.x-nbr .x-btn-default-small-tc,
+.x-nbr .x-btn-default-small-bc,
+.x-nbr .x-btn-default-small-ml,
+.x-nbr .x-btn-default-small-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-small-ml,
+.x-nbr .x-btn-default-small-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-small-mc {
+  padding: 0px 3px 1px 3px; }
+
+/* line 481, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon:after {
+  background-image: none;
+  background-color: #f4fafe;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #e2f0fc));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc); }
+
+/* line 487, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-over .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #edf6fd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd); }
+
+/* line 504, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-menu-active .x-btn-icon:after,
+.x-btn-default-small-pressed .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #edf6fd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd); }
+
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon button,
+.x-btn-default-small-icon .x-btn-inner,
+.x-btn-default-small-noicon button,
+.x-btn-default-small-noicon .x-btn-inner {
+  height: 16px;
+  line-height: 16px; }
+
+/* line 522, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon button {
+  padding: 0;
+  width: 16px !important;
+  height: 16px; }
+/* line 528, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon .x-btn-icon {
+  width: 16px;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 539, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-left button {
+  height: 16px; }
+/* line 542, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-left .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-left: 20px; }
+/* line 548, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-left .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 557, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-small-icon-text-left .x-btn-icon {
+    height: 16px; }
+
+/* line 564, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-right button {
+  height: 16px; }
+/* line 567, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-right .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-right: 20px !important; }
+/* line 573, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-right .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 582, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-small-icon-text-right .x-btn-icon {
+    height: 16px; }
+
+/* line 589, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-top .x-btn-inner {
+  padding-top: 20px; }
+/* line 593, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 602, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon {
+    width: 16px; }
+
+/* line 609, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px; }
+/* line 613, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 622, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon {
+    width: 16px; }
+
+/* line 628, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-over {
+  background-image: none;
+  background-color: #1784dc;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #53a8ed), color-stop(3%, #208fe7), color-stop(100%, #1679c9));
+  background-image: -webkit-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -moz-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -o-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -ms-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9); }
+  /* line 636, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-small-over .x-btn-inner {
+    color: white; }
+
+/* line 660, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-focus {
+  background-image: none;
+  background-color: #1784dc;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #53a8ed), color-stop(3%, #208fe7), color-stop(100%, #1679c9));
+  background-image: -webkit-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -moz-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -o-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -ms-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9); }
+
+/* line 685, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-menu-active,
+.x-btn-default-small-pressed {
+  -moz-box-shadow: none;
+  -webkit-box-shadow: none;
+  -o-box-shadow: none;
+  box-shadow: none;
+  background-image: none;
+  background-color: #0e4d80;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #1576c5), color-stop(3%, #105892), color-stop(100%, #0c426d));
+  background-image: -webkit-linear-gradient(top, #1576c5, #105892 3%, #0c426d);
+  background-image: -moz-linear-gradient(top, #1576c5, #105892 3%, #0c426d);
+  background-image: -o-linear-gradient(top, #1576c5, #105892 3%, #0c426d);
+  background-image: -ms-linear-gradient(top, #1576c5, #105892 3%, #0c426d);
+  background-image: linear-gradient(top, #1576c5, #105892 3%, #0c426d); }
+  /* line 696, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-small-menu-active .x-btn-inner,
+  .x-btn-default-small-pressed .x-btn-inner {
+    color: white;
+    text-shadow: #093152 0 -1px 0; }
+
+/* line 715, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-menu-active {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 735, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-small-disabled {
+  background-image: none;
+  background-color: #1369ae;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2591e8), color-stop(3%, #1574c0), color-stop(100%, #115d9b));
+  background-image: -webkit-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -moz-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -o-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -ms-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: linear-gradient(top, #2591e8, #1574c0 3%, #115d9b); }
+  /* line 743, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-small-disabled .x-btn-inner {
+    color: #f4fafe !important; }
+
+/* line 760, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie .x-btn-default-small-disabled .x-btn-inner {
+  color: #a3d0f5 !important; }
+
+/* line 768, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-small-disabled .x-btn-inner {
+  color: white !important; }
+
+/* line 783, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-over .x-frame-tl,
+.x-nbr .x-btn-default-small-over .x-frame-bl,
+.x-nbr .x-btn-default-small-over .x-frame-tr,
+.x-nbr .x-btn-default-small-over .x-frame-br,
+.x-nbr .x-btn-default-small-over .x-frame-tc,
+.x-nbr .x-btn-default-small-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-over-corners.gif'); }
+/* line 787, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-over .x-frame-ml,
+.x-nbr .x-btn-default-small-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-over-sides.gif'); }
+/* line 790, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-over .x-frame-mc {
+  background-color: #1784dc;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-over-bg.gif'); }
+/* line 804, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-focus .x-frame-tl,
+.x-nbr .x-btn-default-small-focus .x-frame-bl,
+.x-nbr .x-btn-default-small-focus .x-frame-tr,
+.x-nbr .x-btn-default-small-focus .x-frame-br,
+.x-nbr .x-btn-default-small-focus .x-frame-tc,
+.x-nbr .x-btn-default-small-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-focus-corners.gif'); }
+/* line 808, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-focus .x-frame-ml,
+.x-nbr .x-btn-default-small-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-focus-sides.gif'); }
+/* line 811, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-focus .x-frame-mc {
+  background-color: #1784dc;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-focus-bg.gif'); }
+/* line 826, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-small-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-small-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-small-menu-active .x-frame-br,
+.x-nbr .x-btn-default-small-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-small-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-small-pressed .x-frame-tl,
+.x-nbr .x-btn-default-small-pressed .x-frame-bl,
+.x-nbr .x-btn-default-small-pressed .x-frame-tr,
+.x-nbr .x-btn-default-small-pressed .x-frame-br,
+.x-nbr .x-btn-default-small-pressed .x-frame-tc,
+.x-nbr .x-btn-default-small-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-pressed-corners.gif'); }
+/* line 830, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-small-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-small-pressed .x-frame-ml,
+.x-nbr .x-btn-default-small-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-pressed-sides.gif'); }
+/* line 833, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-small-pressed .x-frame-mc {
+  background-color: #0e4d80;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-pressed-bg.gif'); }
+/* line 847, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-disabled .x-frame-tl,
+.x-nbr .x-btn-default-small-disabled .x-frame-bl,
+.x-nbr .x-btn-default-small-disabled .x-frame-tr,
+.x-nbr .x-btn-default-small-disabled .x-frame-br,
+.x-nbr .x-btn-default-small-disabled .x-frame-tc,
+.x-nbr .x-btn-default-small-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-disabled-corners.gif'); }
+/* line 851, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-disabled .x-frame-ml,
+.x-nbr .x-btn-default-small-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-disabled-sides.gif'); }
+/* line 854, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-small-disabled .x-frame-mc {
+  background-color: #1369ae;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-disabled-bg.gif'); }
+
+/* line 867, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-bg.gif'); }
+
+/* line 876, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-over-bg.gif'); }
+
+/* line 885, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-focus-bg.gif'); }
+
+/* line 895, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-menu-active,
+.x-nlg .x-btn-default-small-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-pressed-bg.gif'); }
+
+/* line 904, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-small-disabled-bg.gif'); }
+
+/* line 461, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium {
+  border-color: #093152; }
+
+/* line 465, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium .x-btn-inner {
+  font-size: 12px;
+  font-weight: bold;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: #f4fafe;
+  background-repeat: no-repeat;
+  padding: 0 3px;
+  text-shadow: #0e4d80 0 -1px 0; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-btn-default-medium {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #1369ae;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2591e8), color-stop(3%, #1574c0), color-stop(100%, #115d9b));
+  background-image: -webkit-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -moz-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -o-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -ms-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: linear-gradient(top, #2591e8, #1574c0 3%, #115d9b); }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-medium-mc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-bg.gif');
+  background-color: #1369ae; }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-medium-tl,
+.x-nbr .x-btn-default-medium-bl,
+.x-nbr .x-btn-default-medium-tr,
+.x-nbr .x-btn-default-medium-br,
+.x-nbr .x-btn-default-medium-tc,
+.x-nbr .x-btn-default-medium-bc,
+.x-nbr .x-btn-default-medium-ml,
+.x-nbr .x-btn-default-medium-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-medium-ml,
+.x-nbr .x-btn-default-medium-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-medium-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 481, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon:after {
+  background-image: none;
+  background-color: #f4fafe;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #e2f0fc));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc); }
+
+/* line 487, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-over .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #edf6fd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd); }
+
+/* line 504, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-menu-active .x-btn-icon:after,
+.x-btn-default-medium-pressed .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #edf6fd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd); }
+
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon button,
+.x-btn-default-medium-icon .x-btn-inner,
+.x-btn-default-medium-noicon button,
+.x-btn-default-medium-noicon .x-btn-inner {
+  height: 24px;
+  line-height: 24px; }
+
+/* line 522, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon button {
+  padding: 0;
+  width: 24px !important;
+  height: 24px; }
+/* line 528, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon .x-btn-icon {
+  width: 24px;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 539, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-left button {
+  height: 24px; }
+/* line 542, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-left: 28px; }
+/* line 548, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 557, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon {
+    height: 24px; }
+
+/* line 564, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-right button {
+  height: 24px; }
+/* line 567, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-right: 28px !important; }
+/* line 573, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 582, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon {
+    height: 24px; }
+
+/* line 589, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px; }
+/* line 593, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 602, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon {
+    width: 24px; }
+
+/* line 609, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px; }
+/* line 613, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 622, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon {
+    width: 24px; }
+
+/* line 628, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-over {
+  background-image: none;
+  background-color: #1784dc;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #53a8ed), color-stop(3%, #208fe7), color-stop(100%, #1679c9));
+  background-image: -webkit-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -moz-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -o-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -ms-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9); }
+  /* line 636, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-medium-over .x-btn-inner {
+    color: white; }
+
+/* line 660, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-focus {
+  background-image: none;
+  background-color: #1784dc;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #53a8ed), color-stop(3%, #208fe7), color-stop(100%, #1679c9));
+  background-image: -webkit-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -moz-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -o-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -ms-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9); }
+
+/* line 685, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-menu-active,
+.x-btn-default-medium-pressed {
+  -moz-box-shadow: none;
+  -webkit-box-shadow: none;
+  -o-box-shadow: none;
+  box-shadow: none;
+  background-image: none;
+  background-color: #0e4d80;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #1576c5), color-stop(3%, #105892), color-stop(100%, #0c426d));
+  background-image: -webkit-linear-gradient(top, #1576c5, #105892 3%, #0c426d);
+  background-image: -moz-linear-gradient(top, #1576c5, #105892 3%, #0c426d);
+  background-image: -o-linear-gradient(top, #1576c5, #105892 3%, #0c426d);
+  background-image: -ms-linear-gradient(top, #1576c5, #105892 3%, #0c426d);
+  background-image: linear-gradient(top, #1576c5, #105892 3%, #0c426d); }
+  /* line 696, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-medium-menu-active .x-btn-inner,
+  .x-btn-default-medium-pressed .x-btn-inner {
+    color: white;
+    text-shadow: #093152 0 -1px 0; }
+
+/* line 715, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-menu-active {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 735, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-medium-disabled {
+  background-image: none;
+  background-color: #1369ae;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2591e8), color-stop(3%, #1574c0), color-stop(100%, #115d9b));
+  background-image: -webkit-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -moz-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -o-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -ms-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: linear-gradient(top, #2591e8, #1574c0 3%, #115d9b); }
+  /* line 743, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-medium-disabled .x-btn-inner {
+    color: #f4fafe !important; }
+
+/* line 760, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie .x-btn-default-medium-disabled .x-btn-inner {
+  color: #a3d0f5 !important; }
+
+/* line 768, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-medium-disabled .x-btn-inner {
+  color: white !important; }
+
+/* line 783, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-over .x-frame-tl,
+.x-nbr .x-btn-default-medium-over .x-frame-bl,
+.x-nbr .x-btn-default-medium-over .x-frame-tr,
+.x-nbr .x-btn-default-medium-over .x-frame-br,
+.x-nbr .x-btn-default-medium-over .x-frame-tc,
+.x-nbr .x-btn-default-medium-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-over-corners.gif'); }
+/* line 787, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-over .x-frame-ml,
+.x-nbr .x-btn-default-medium-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-over-sides.gif'); }
+/* line 790, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-over .x-frame-mc {
+  background-color: #1784dc;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-over-bg.gif'); }
+/* line 804, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-focus .x-frame-tl,
+.x-nbr .x-btn-default-medium-focus .x-frame-bl,
+.x-nbr .x-btn-default-medium-focus .x-frame-tr,
+.x-nbr .x-btn-default-medium-focus .x-frame-br,
+.x-nbr .x-btn-default-medium-focus .x-frame-tc,
+.x-nbr .x-btn-default-medium-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-focus-corners.gif'); }
+/* line 808, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-focus .x-frame-ml,
+.x-nbr .x-btn-default-medium-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-focus-sides.gif'); }
+/* line 811, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-focus .x-frame-mc {
+  background-color: #1784dc;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-focus-bg.gif'); }
+/* line 826, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-br,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-medium-pressed .x-frame-tl,
+.x-nbr .x-btn-default-medium-pressed .x-frame-bl,
+.x-nbr .x-btn-default-medium-pressed .x-frame-tr,
+.x-nbr .x-btn-default-medium-pressed .x-frame-br,
+.x-nbr .x-btn-default-medium-pressed .x-frame-tc,
+.x-nbr .x-btn-default-medium-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-pressed-corners.gif'); }
+/* line 830, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-medium-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-medium-pressed .x-frame-ml,
+.x-nbr .x-btn-default-medium-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-pressed-sides.gif'); }
+/* line 833, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-medium-pressed .x-frame-mc {
+  background-color: #0e4d80;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-pressed-bg.gif'); }
+/* line 847, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-disabled .x-frame-tl,
+.x-nbr .x-btn-default-medium-disabled .x-frame-bl,
+.x-nbr .x-btn-default-medium-disabled .x-frame-tr,
+.x-nbr .x-btn-default-medium-disabled .x-frame-br,
+.x-nbr .x-btn-default-medium-disabled .x-frame-tc,
+.x-nbr .x-btn-default-medium-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-disabled-corners.gif'); }
+/* line 851, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-disabled .x-frame-ml,
+.x-nbr .x-btn-default-medium-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-disabled-sides.gif'); }
+/* line 854, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-medium-disabled .x-frame-mc {
+  background-color: #1369ae;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-disabled-bg.gif'); }
+
+/* line 867, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-bg.gif'); }
+
+/* line 876, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-over-bg.gif'); }
+
+/* line 885, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-focus-bg.gif'); }
+
+/* line 895, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-menu-active,
+.x-nlg .x-btn-default-medium-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-pressed-bg.gif'); }
+
+/* line 904, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-medium-disabled-bg.gif'); }
+
+/* line 461, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large {
+  border-color: #093152; }
+
+/* line 465, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large .x-btn-inner {
+  font-size: 12px;
+  font-weight: bold;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: #f4fafe;
+  background-repeat: no-repeat;
+  padding: 0 3px;
+  text-shadow: #0e4d80 0 -1px 0; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-btn-default-large {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #1369ae;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2591e8), color-stop(3%, #1574c0), color-stop(100%, #115d9b));
+  background-image: -webkit-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -moz-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -o-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -ms-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: linear-gradient(top, #2591e8, #1574c0 3%, #115d9b); }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-large-mc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-bg.gif');
+  background-color: #1369ae; }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-large-tl,
+.x-nbr .x-btn-default-large-bl,
+.x-nbr .x-btn-default-large-tr,
+.x-nbr .x-btn-default-large-br,
+.x-nbr .x-btn-default-large-tc,
+.x-nbr .x-btn-default-large-bc,
+.x-nbr .x-btn-default-large-ml,
+.x-nbr .x-btn-default-large-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-large-ml,
+.x-nbr .x-btn-default-large-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-large-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 481, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon:after {
+  background-image: none;
+  background-color: #f4fafe;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #e2f0fc));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #e2f0fc); }
+
+/* line 487, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-over .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #edf6fd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd); }
+
+/* line 504, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-menu-active .x-btn-icon:after,
+.x-btn-default-large-pressed .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #edf6fd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd); }
+
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon button,
+.x-btn-default-large-icon .x-btn-inner,
+.x-btn-default-large-noicon button,
+.x-btn-default-large-noicon .x-btn-inner {
+  height: 32px;
+  line-height: 32px; }
+
+/* line 522, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon button {
+  padding: 0;
+  width: 32px !important;
+  height: 32px; }
+/* line 528, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon .x-btn-icon {
+  width: 32px;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 539, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-left button {
+  height: 32px; }
+/* line 542, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-left .x-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-left: 36px; }
+/* line 548, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-left .x-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 557, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-large-icon-text-left .x-btn-icon {
+    height: 32px; }
+
+/* line 564, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-right button {
+  height: 32px; }
+/* line 567, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-right .x-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-right: 36px !important; }
+/* line 573, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-right .x-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 582, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-large-icon-text-right .x-btn-icon {
+    height: 32px; }
+
+/* line 589, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-top .x-btn-inner {
+  padding-top: 36px; }
+/* line 593, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 602, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon {
+    width: 32px; }
+
+/* line 609, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 36px; }
+/* line 613, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 32px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 622, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon {
+    width: 32px; }
+
+/* line 628, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-over {
+  background-image: none;
+  background-color: #1784dc;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #53a8ed), color-stop(3%, #208fe7), color-stop(100%, #1679c9));
+  background-image: -webkit-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -moz-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -o-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -ms-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9); }
+  /* line 636, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-large-over .x-btn-inner {
+    color: white; }
+
+/* line 660, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-focus {
+  background-image: none;
+  background-color: #1784dc;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #53a8ed), color-stop(3%, #208fe7), color-stop(100%, #1679c9));
+  background-image: -webkit-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -moz-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -o-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: -ms-linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9);
+  background-image: linear-gradient(top, #53a8ed, #208fe7 3%, #1679c9); }
+
+/* line 685, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-menu-active,
+.x-btn-default-large-pressed {
+  -moz-box-shadow: none;
+  -webkit-box-shadow: none;
+  -o-box-shadow: none;
+  box-shadow: none;
+  background-image: none;
+  background-color: #0e4d80;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #1576c5), color-stop(3%, #105892), color-stop(100%, #0c426d));
+  background-image: -webkit-linear-gradient(top, #1576c5, #105892 3%, #0c426d);
+  background-image: -moz-linear-gradient(top, #1576c5, #105892 3%, #0c426d);
+  background-image: -o-linear-gradient(top, #1576c5, #105892 3%, #0c426d);
+  background-image: -ms-linear-gradient(top, #1576c5, #105892 3%, #0c426d);
+  background-image: linear-gradient(top, #1576c5, #105892 3%, #0c426d); }
+  /* line 696, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-large-menu-active .x-btn-inner,
+  .x-btn-default-large-pressed .x-btn-inner {
+    color: white;
+    text-shadow: #093152 0 -1px 0; }
+
+/* line 715, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-menu-active {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 735, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-large-disabled {
+  background-image: none;
+  background-color: #1369ae;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2591e8), color-stop(3%, #1574c0), color-stop(100%, #115d9b));
+  background-image: -webkit-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -moz-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -o-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: -ms-linear-gradient(top, #2591e8, #1574c0 3%, #115d9b);
+  background-image: linear-gradient(top, #2591e8, #1574c0 3%, #115d9b); }
+  /* line 743, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-large-disabled .x-btn-inner {
+    color: #f4fafe !important; }
+
+/* line 760, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie .x-btn-default-large-disabled .x-btn-inner {
+  color: #a3d0f5 !important; }
+
+/* line 768, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-large-disabled .x-btn-inner {
+  color: white !important; }
+
+/* line 783, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-over .x-frame-tl,
+.x-nbr .x-btn-default-large-over .x-frame-bl,
+.x-nbr .x-btn-default-large-over .x-frame-tr,
+.x-nbr .x-btn-default-large-over .x-frame-br,
+.x-nbr .x-btn-default-large-over .x-frame-tc,
+.x-nbr .x-btn-default-large-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-over-corners.gif'); }
+/* line 787, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-over .x-frame-ml,
+.x-nbr .x-btn-default-large-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-over-sides.gif'); }
+/* line 790, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-over .x-frame-mc {
+  background-color: #1784dc;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-over-bg.gif'); }
+/* line 804, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-focus .x-frame-tl,
+.x-nbr .x-btn-default-large-focus .x-frame-bl,
+.x-nbr .x-btn-default-large-focus .x-frame-tr,
+.x-nbr .x-btn-default-large-focus .x-frame-br,
+.x-nbr .x-btn-default-large-focus .x-frame-tc,
+.x-nbr .x-btn-default-large-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-focus-corners.gif'); }
+/* line 808, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-focus .x-frame-ml,
+.x-nbr .x-btn-default-large-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-focus-sides.gif'); }
+/* line 811, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-focus .x-frame-mc {
+  background-color: #1784dc;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-focus-bg.gif'); }
+/* line 826, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-large-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-large-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-large-menu-active .x-frame-br,
+.x-nbr .x-btn-default-large-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-large-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-large-pressed .x-frame-tl,
+.x-nbr .x-btn-default-large-pressed .x-frame-bl,
+.x-nbr .x-btn-default-large-pressed .x-frame-tr,
+.x-nbr .x-btn-default-large-pressed .x-frame-br,
+.x-nbr .x-btn-default-large-pressed .x-frame-tc,
+.x-nbr .x-btn-default-large-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-pressed-corners.gif'); }
+/* line 830, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-large-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-large-pressed .x-frame-ml,
+.x-nbr .x-btn-default-large-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-pressed-sides.gif'); }
+/* line 833, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-large-pressed .x-frame-mc {
+  background-color: #0e4d80;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-pressed-bg.gif'); }
+/* line 847, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-disabled .x-frame-tl,
+.x-nbr .x-btn-default-large-disabled .x-frame-bl,
+.x-nbr .x-btn-default-large-disabled .x-frame-tr,
+.x-nbr .x-btn-default-large-disabled .x-frame-br,
+.x-nbr .x-btn-default-large-disabled .x-frame-tc,
+.x-nbr .x-btn-default-large-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-disabled-corners.gif'); }
+/* line 851, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-disabled .x-frame-ml,
+.x-nbr .x-btn-default-large-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-disabled-sides.gif'); }
+/* line 854, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-large-disabled .x-frame-mc {
+  background-color: #1369ae;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-disabled-bg.gif'); }
+
+/* line 867, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-bg.gif'); }
+
+/* line 876, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-over-bg.gif'); }
+
+/* line 885, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-focus-bg.gif'); }
+
+/* line 895, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-menu-active,
+.x-nlg .x-btn-default-large-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-pressed-bg.gif'); }
+
+/* line 904, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-large-disabled-bg.gif'); }
+
+/* line 461, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small {
+  border-color: #424e04; }
+
+/* line 465, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small .x-btn-inner {
+  font-size: 12px;
+  font-weight: bold;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: #fbfeec;
+  background-repeat: no-repeat;
+  padding: 0 3px;
+  text-shadow: #6b7e07 0 -1px 0; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-btn-confirm-small {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #94ae0a;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #cef113), color-stop(3%, #a4c10b), color-stop(100%, #849b09));
+  background-image: -webkit-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: -moz-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: -o-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: -ms-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: linear-gradient(top, #cef113, #a4c10b 3%, #849b09); }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-btn-confirm-small-mc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-bg.gif');
+  background-color: #94ae0a; }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-confirm-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-confirm-small-tl,
+.x-nbr .x-btn-confirm-small-bl,
+.x-nbr .x-btn-confirm-small-tr,
+.x-nbr .x-btn-confirm-small-br,
+.x-nbr .x-btn-confirm-small-tc,
+.x-nbr .x-btn-confirm-small-bc,
+.x-nbr .x-btn-confirm-small-ml,
+.x-nbr .x-btn-confirm-small-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-confirm-small-ml,
+.x-nbr .x-btn-confirm-small-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-confirm-small-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 481, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon:after {
+  background-image: none;
+  background-color: #fbfeec;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f7fdd9));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f7fdd9);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f7fdd9);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f7fdd9);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f7fdd9);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f7fdd9); }
+
+/* line 487, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-over .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #fbfeec));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec); }
+
+/* line 504, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-menu-active .x-btn-icon:after,
+.x-btn-confirm-small-pressed .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #fbfeec));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec); }
+
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon button,
+.x-btn-confirm-small-icon .x-btn-inner,
+.x-btn-confirm-small-noicon button,
+.x-btn-confirm-small-noicon .x-btn-inner {
+  height: 16px;
+  line-height: 16px; }
+
+/* line 522, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon button {
+  padding: 0;
+  width: 16px !important;
+  height: 16px; }
+/* line 528, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon .x-btn-icon {
+  width: 16px;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 539, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon-text-left button {
+  height: 16px; }
+/* line 542, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon-text-left .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-left: 20px; }
+/* line 548, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon-text-left .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 557, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-confirm-small-icon-text-left .x-btn-icon, .x-quirks .x-btn-confirm-small-icon-text-left .x-btn-icon {
+    height: 16px; }
+
+/* line 564, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon-text-right button {
+  height: 16px; }
+/* line 567, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon-text-right .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-right: 20px !important; }
+/* line 573, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon-text-right .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 582, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-confirm-small-icon-text-right .x-btn-icon, .x-quirks .x-btn-confirm-small-icon-text-right .x-btn-icon {
+    height: 16px; }
+
+/* line 589, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon-text-top .x-btn-inner {
+  padding-top: 20px; }
+/* line 593, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 602, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-confirm-small-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-confirm-small-icon-text-top .x-btn-icon {
+    width: 16px; }
+
+/* line 609, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px; }
+/* line 613, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 622, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-confirm-small-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-confirm-small-icon-text-bottom .x-btn-icon {
+    width: 16px; }
+
+/* line 628, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-over {
+  background-image: none;
+  background-color: #bdde0d;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d8f443), color-stop(3%, #cdf10e), color-stop(100%, #adcb0c));
+  background-image: -webkit-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: -moz-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: -o-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: -ms-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c); }
+  /* line 636, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-confirm-small-over .x-btn-inner {
+    color: white; }
+
+/* line 660, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-focus {
+  background-image: none;
+  background-color: #bdde0d;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d8f443), color-stop(3%, #cdf10e), color-stop(100%, #adcb0c));
+  background-image: -webkit-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: -moz-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: -o-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: -ms-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c); }
+
+/* line 685, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-menu-active,
+.x-btn-confirm-small-pressed {
+  -moz-box-shadow: none;
+  -webkit-box-shadow: none;
+  -o-box-shadow: none;
+  box-shadow: none;
+  background-image: none;
+  background-color: #6b7e07;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #a9c60b), color-stop(3%, #7b9108), color-stop(100%, #5b6a06));
+  background-image: -webkit-linear-gradient(top, #a9c60b, #7b9108 3%, #5b6a06);
+  background-image: -moz-linear-gradient(top, #a9c60b, #7b9108 3%, #5b6a06);
+  background-image: -o-linear-gradient(top, #a9c60b, #7b9108 3%, #5b6a06);
+  background-image: -ms-linear-gradient(top, #a9c60b, #7b9108 3%, #5b6a06);
+  background-image: linear-gradient(top, #a9c60b, #7b9108 3%, #5b6a06); }
+  /* line 696, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-confirm-small-menu-active .x-btn-inner,
+  .x-btn-confirm-small-pressed .x-btn-inner {
+    color: white;
+    text-shadow: #424e04 0 -1px 0; }
+
+/* line 715, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-menu-active {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 735, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-small-disabled {
+  background-image: none;
+  background-color: #94ae0a;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #cef113), color-stop(3%, #a4c10b), color-stop(100%, #849b09));
+  background-image: -webkit-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: -moz-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: -o-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: -ms-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: linear-gradient(top, #cef113, #a4c10b 3%, #849b09); }
+  /* line 743, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-confirm-small-disabled .x-btn-inner {
+    color: #fbfeec !important; }
+
+/* line 760, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie .x-btn-confirm-small-disabled .x-btn-inner {
+  color: #a3d0f5 !important; }
+
+/* line 768, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie6 .x-btn-confirm-small-disabled .x-btn-inner {
+  color: white !important; }
+
+/* line 783, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-small-over .x-frame-tl,
+.x-nbr .x-btn-confirm-small-over .x-frame-bl,
+.x-nbr .x-btn-confirm-small-over .x-frame-tr,
+.x-nbr .x-btn-confirm-small-over .x-frame-br,
+.x-nbr .x-btn-confirm-small-over .x-frame-tc,
+.x-nbr .x-btn-confirm-small-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-over-corners.gif'); }
+/* line 787, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-small-over .x-frame-ml,
+.x-nbr .x-btn-confirm-small-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-over-sides.gif'); }
+/* line 790, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-small-over .x-frame-mc {
+  background-color: #bdde0d;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-over-bg.gif'); }
+/* line 804, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-small-focus .x-frame-tl,
+.x-nbr .x-btn-confirm-small-focus .x-frame-bl,
+.x-nbr .x-btn-confirm-small-focus .x-frame-tr,
+.x-nbr .x-btn-confirm-small-focus .x-frame-br,
+.x-nbr .x-btn-confirm-small-focus .x-frame-tc,
+.x-nbr .x-btn-confirm-small-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-focus-corners.gif'); }
+/* line 808, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-small-focus .x-frame-ml,
+.x-nbr .x-btn-confirm-small-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-focus-sides.gif'); }
+/* line 811, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-small-focus .x-frame-mc {
+  background-color: #bdde0d;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-focus-bg.gif'); }
+/* line 826, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-small-menu-active .x-frame-tl,
+.x-nbr .x-btn-confirm-small-menu-active .x-frame-bl,
+.x-nbr .x-btn-confirm-small-menu-active .x-frame-tr,
+.x-nbr .x-btn-confirm-small-menu-active .x-frame-br,
+.x-nbr .x-btn-confirm-small-menu-active .x-frame-tc,
+.x-nbr .x-btn-confirm-small-menu-active .x-frame-bc,
+.x-nbr .x-btn-confirm-small-pressed .x-frame-tl,
+.x-nbr .x-btn-confirm-small-pressed .x-frame-bl,
+.x-nbr .x-btn-confirm-small-pressed .x-frame-tr,
+.x-nbr .x-btn-confirm-small-pressed .x-frame-br,
+.x-nbr .x-btn-confirm-small-pressed .x-frame-tc,
+.x-nbr .x-btn-confirm-small-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-pressed-corners.gif'); }
+/* line 830, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-small-menu-active .x-frame-ml,
+.x-nbr .x-btn-confirm-small-menu-active .x-frame-mr,
+.x-nbr .x-btn-confirm-small-pressed .x-frame-ml,
+.x-nbr .x-btn-confirm-small-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-pressed-sides.gif'); }
+/* line 833, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-small-menu-active .x-frame-mc,
+.x-nbr .x-btn-confirm-small-pressed .x-frame-mc {
+  background-color: #6b7e07;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-pressed-bg.gif'); }
+/* line 847, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-small-disabled .x-frame-tl,
+.x-nbr .x-btn-confirm-small-disabled .x-frame-bl,
+.x-nbr .x-btn-confirm-small-disabled .x-frame-tr,
+.x-nbr .x-btn-confirm-small-disabled .x-frame-br,
+.x-nbr .x-btn-confirm-small-disabled .x-frame-tc,
+.x-nbr .x-btn-confirm-small-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-disabled-corners.gif'); }
+/* line 851, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-small-disabled .x-frame-ml,
+.x-nbr .x-btn-confirm-small-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-disabled-sides.gif'); }
+/* line 854, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-small-disabled .x-frame-mc {
+  background-color: #94ae0a;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-disabled-bg.gif'); }
+
+/* line 867, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-confirm-small {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-bg.gif'); }
+
+/* line 876, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-confirm-small-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-over-bg.gif'); }
+
+/* line 885, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-confirm-small-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-focus-bg.gif'); }
+
+/* line 895, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-confirm-small-menu-active,
+.x-nlg .x-btn-confirm-small-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-pressed-bg.gif'); }
+
+/* line 904, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-confirm-small-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-small-disabled-bg.gif'); }
+
+/* line 461, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium {
+  border-color: #424e04; }
+
+/* line 465, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium .x-btn-inner {
+  font-size: 12px;
+  font-weight: bold;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: #fbfeec;
+  background-repeat: no-repeat;
+  padding: 0 3px;
+  text-shadow: #6b7e07 0 -1px 0; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-btn-confirm-medium {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #94ae0a;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #cef113), color-stop(3%, #a4c10b), color-stop(100%, #849b09));
+  background-image: -webkit-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: -moz-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: -o-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: -ms-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: linear-gradient(top, #cef113, #a4c10b 3%, #849b09); }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-btn-confirm-medium-mc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-bg.gif');
+  background-color: #94ae0a; }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-confirm-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-confirm-medium-tl,
+.x-nbr .x-btn-confirm-medium-bl,
+.x-nbr .x-btn-confirm-medium-tr,
+.x-nbr .x-btn-confirm-medium-br,
+.x-nbr .x-btn-confirm-medium-tc,
+.x-nbr .x-btn-confirm-medium-bc,
+.x-nbr .x-btn-confirm-medium-ml,
+.x-nbr .x-btn-confirm-medium-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-confirm-medium-ml,
+.x-nbr .x-btn-confirm-medium-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-confirm-medium-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 481, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon:after {
+  background-image: none;
+  background-color: #fbfeec;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f7fdd9));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f7fdd9);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f7fdd9);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f7fdd9);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f7fdd9);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f7fdd9); }
+
+/* line 487, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-over .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #fbfeec));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec); }
+
+/* line 504, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-menu-active .x-btn-icon:after,
+.x-btn-confirm-medium-pressed .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #fbfeec));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #fbfeec); }
+
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon button,
+.x-btn-confirm-medium-icon .x-btn-inner,
+.x-btn-confirm-medium-noicon button,
+.x-btn-confirm-medium-noicon .x-btn-inner {
+  height: 24px;
+  line-height: 24px; }
+
+/* line 522, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon button {
+  padding: 0;
+  width: 24px !important;
+  height: 24px; }
+/* line 528, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon .x-btn-icon {
+  width: 24px;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 539, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon-text-left button {
+  height: 24px; }
+/* line 542, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon-text-left .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-left: 28px; }
+/* line 548, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon-text-left .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 557, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-confirm-medium-icon-text-left .x-btn-icon, .x-quirks .x-btn-confirm-medium-icon-text-left .x-btn-icon {
+    height: 24px; }
+
+/* line 564, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon-text-right button {
+  height: 24px; }
+/* line 567, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon-text-right .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-right: 28px !important; }
+/* line 573, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon-text-right .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 582, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-confirm-medium-icon-text-right .x-btn-icon, .x-quirks .x-btn-confirm-medium-icon-text-right .x-btn-icon {
+    height: 24px; }
+
+/* line 589, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px; }
+/* line 593, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 602, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-confirm-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-confirm-medium-icon-text-top .x-btn-icon {
+    width: 24px; }
+
+/* line 609, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px; }
+/* line 613, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 622, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-confirm-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-confirm-medium-icon-text-bottom .x-btn-icon {
+    width: 24px; }
+
+/* line 628, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-over {
+  background-image: none;
+  background-color: #bdde0d;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d8f443), color-stop(3%, #cdf10e), color-stop(100%, #adcb0c));
+  background-image: -webkit-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: -moz-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: -o-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: -ms-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c); }
+  /* line 636, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-confirm-medium-over .x-btn-inner {
+    color: white; }
+
+/* line 660, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-focus {
+  background-image: none;
+  background-color: #bdde0d;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d8f443), color-stop(3%, #cdf10e), color-stop(100%, #adcb0c));
+  background-image: -webkit-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: -moz-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: -o-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: -ms-linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c);
+  background-image: linear-gradient(top, #d8f443, #cdf10e 3%, #adcb0c); }
+
+/* line 685, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-menu-active,
+.x-btn-confirm-medium-pressed {
+  -moz-box-shadow: none;
+  -webkit-box-shadow: none;
+  -o-box-shadow: none;
+  box-shadow: none;
+  background-image: none;
+  background-color: #6b7e07;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #a9c60b), color-stop(3%, #7b9108), color-stop(100%, #5b6a06));
+  background-image: -webkit-linear-gradient(top, #a9c60b, #7b9108 3%, #5b6a06);
+  background-image: -moz-linear-gradient(top, #a9c60b, #7b9108 3%, #5b6a06);
+  background-image: -o-linear-gradient(top, #a9c60b, #7b9108 3%, #5b6a06);
+  background-image: -ms-linear-gradient(top, #a9c60b, #7b9108 3%, #5b6a06);
+  background-image: linear-gradient(top, #a9c60b, #7b9108 3%, #5b6a06); }
+  /* line 696, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-confirm-medium-menu-active .x-btn-inner,
+  .x-btn-confirm-medium-pressed .x-btn-inner {
+    color: white;
+    text-shadow: #424e04 0 -1px 0; }
+
+/* line 715, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-menu-active {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 735, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-confirm-medium-disabled {
+  background-image: none;
+  background-color: #94ae0a;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #cef113), color-stop(3%, #a4c10b), color-stop(100%, #849b09));
+  background-image: -webkit-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: -moz-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: -o-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: -ms-linear-gradient(top, #cef113, #a4c10b 3%, #849b09);
+  background-image: linear-gradient(top, #cef113, #a4c10b 3%, #849b09); }
+  /* line 743, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-confirm-medium-disabled .x-btn-inner {
+    color: #fbfeec !important; }
+
+/* line 760, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie .x-btn-confirm-medium-disabled .x-btn-inner {
+  color: #a3d0f5 !important; }
+
+/* line 768, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie6 .x-btn-confirm-medium-disabled .x-btn-inner {
+  color: white !important; }
+
+/* line 783, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-medium-over .x-frame-tl,
+.x-nbr .x-btn-confirm-medium-over .x-frame-bl,
+.x-nbr .x-btn-confirm-medium-over .x-frame-tr,
+.x-nbr .x-btn-confirm-medium-over .x-frame-br,
+.x-nbr .x-btn-confirm-medium-over .x-frame-tc,
+.x-nbr .x-btn-confirm-medium-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-over-corners.gif'); }
+/* line 787, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-medium-over .x-frame-ml,
+.x-nbr .x-btn-confirm-medium-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-over-sides.gif'); }
+/* line 790, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-medium-over .x-frame-mc {
+  background-color: #bdde0d;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-over-bg.gif'); }
+/* line 804, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-medium-focus .x-frame-tl,
+.x-nbr .x-btn-confirm-medium-focus .x-frame-bl,
+.x-nbr .x-btn-confirm-medium-focus .x-frame-tr,
+.x-nbr .x-btn-confirm-medium-focus .x-frame-br,
+.x-nbr .x-btn-confirm-medium-focus .x-frame-tc,
+.x-nbr .x-btn-confirm-medium-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-focus-corners.gif'); }
+/* line 808, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-medium-focus .x-frame-ml,
+.x-nbr .x-btn-confirm-medium-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-focus-sides.gif'); }
+/* line 811, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-medium-focus .x-frame-mc {
+  background-color: #bdde0d;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-focus-bg.gif'); }
+/* line 826, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-medium-menu-active .x-frame-tl,
+.x-nbr .x-btn-confirm-medium-menu-active .x-frame-bl,
+.x-nbr .x-btn-confirm-medium-menu-active .x-frame-tr,
+.x-nbr .x-btn-confirm-medium-menu-active .x-frame-br,
+.x-nbr .x-btn-confirm-medium-menu-active .x-frame-tc,
+.x-nbr .x-btn-confirm-medium-menu-active .x-frame-bc,
+.x-nbr .x-btn-confirm-medium-pressed .x-frame-tl,
+.x-nbr .x-btn-confirm-medium-pressed .x-frame-bl,
+.x-nbr .x-btn-confirm-medium-pressed .x-frame-tr,
+.x-nbr .x-btn-confirm-medium-pressed .x-frame-br,
+.x-nbr .x-btn-confirm-medium-pressed .x-frame-tc,
+.x-nbr .x-btn-confirm-medium-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-pressed-corners.gif'); }
+/* line 830, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-medium-menu-active .x-frame-ml,
+.x-nbr .x-btn-confirm-medium-menu-active .x-frame-mr,
+.x-nbr .x-btn-confirm-medium-pressed .x-frame-ml,
+.x-nbr .x-btn-confirm-medium-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-pressed-sides.gif'); }
+/* line 833, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-medium-menu-active .x-frame-mc,
+.x-nbr .x-btn-confirm-medium-pressed .x-frame-mc {
+  background-color: #6b7e07;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-pressed-bg.gif'); }
+/* line 847, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-medium-disabled .x-frame-tl,
+.x-nbr .x-btn-confirm-medium-disabled .x-frame-bl,
+.x-nbr .x-btn-confirm-medium-disabled .x-frame-tr,
+.x-nbr .x-btn-confirm-medium-disabled .x-frame-br,
+.x-nbr .x-btn-confirm-medium-disabled .x-frame-tc,
+.x-nbr .x-btn-confirm-medium-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-disabled-corners.gif'); }
+/* line 851, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-medium-disabled .x-frame-ml,
+.x-nbr .x-btn-confirm-medium-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-disabled-sides.gif'); }
+/* line 854, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-confirm-medium-disabled .x-frame-mc {
+  background-color: #94ae0a;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-disabled-bg.gif'); }
+
+/* line 867, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-confirm-medium {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-bg.gif'); }
+
+/* line 876, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-confirm-medium-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-over-bg.gif'); }
+
+/* line 885, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-confirm-medium-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-focus-bg.gif'); }
+
+/* line 895, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-confirm-medium-menu-active,
+.x-nlg .x-btn-confirm-medium-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-pressed-bg.gif'); }
+
+/* line 904, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-confirm-medium-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-confirm-medium-disabled-bg.gif'); }
+
+/* line 461, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium {
+  border-color: #49080e; }
+
+/* line 465, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium .x-btn-inner {
+  font-size: 12px;
+  font-weight: bold;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: #fdecee;
+  background-repeat: no-repeat;
+  padding: 0 3px;
+  text-shadow: #780c17 0 -1px 0; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-btn-drastic-medium {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #a61120;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e81c30), color-stop(3%, #b91324), color-stop(100%, #930f1c));
+  background-image: -webkit-linear-gradient(top, #e81c30, #b91324 3%, #930f1c);
+  background-image: -moz-linear-gradient(top, #e81c30, #b91324 3%, #930f1c);
+  background-image: -o-linear-gradient(top, #e81c30, #b91324 3%, #930f1c);
+  background-image: -ms-linear-gradient(top, #e81c30, #b91324 3%, #930f1c);
+  background-image: linear-gradient(top, #e81c30, #b91324 3%, #930f1c); }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-btn-drastic-medium-mc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-bg.gif');
+  background-color: #a61120; }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-drastic-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-drastic-medium-tl,
+.x-nbr .x-btn-drastic-medium-bl,
+.x-nbr .x-btn-drastic-medium-tr,
+.x-nbr .x-btn-drastic-medium-br,
+.x-nbr .x-btn-drastic-medium-tc,
+.x-nbr .x-btn-drastic-medium-bc,
+.x-nbr .x-btn-drastic-medium-ml,
+.x-nbr .x-btn-drastic-medium-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-drastic-medium-ml,
+.x-nbr .x-btn-drastic-medium-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-drastic-medium-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 481, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon:after {
+  background-image: none;
+  background-color: #fdecee;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #fffeff), color-stop(100%, #fbd9dd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #fffeff 3%, #fbd9dd);
+  background-image: -moz-linear-gradient(top, #ffffff, #fffeff 3%, #fbd9dd);
+  background-image: -o-linear-gradient(top, #ffffff, #fffeff 3%, #fbd9dd);
+  background-image: -ms-linear-gradient(top, #ffffff, #fffeff 3%, #fbd9dd);
+  background-image: linear-gradient(top, #ffffff, #fffeff 3%, #fbd9dd); }
+
+/* line 487, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-over .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #fdecee));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #fdecee);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #fdecee);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #fdecee);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #fdecee);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #fdecee); }
+
+/* line 504, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-menu-active .x-btn-icon:after,
+.x-btn-drastic-medium-pressed .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #fdecee));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #fdecee);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #fdecee);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #fdecee);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #fdecee);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #fdecee); }
+
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon button,
+.x-btn-drastic-medium-icon .x-btn-inner,
+.x-btn-drastic-medium-noicon button,
+.x-btn-drastic-medium-noicon .x-btn-inner {
+  height: 24px;
+  line-height: 24px; }
+
+/* line 522, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon button {
+  padding: 0;
+  width: 24px !important;
+  height: 24px; }
+/* line 528, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon .x-btn-icon {
+  width: 24px;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 539, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon-text-left button {
+  height: 24px; }
+/* line 542, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon-text-left .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-left: 28px; }
+/* line 548, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon-text-left .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 557, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-drastic-medium-icon-text-left .x-btn-icon, .x-quirks .x-btn-drastic-medium-icon-text-left .x-btn-icon {
+    height: 24px; }
+
+/* line 564, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon-text-right button {
+  height: 24px; }
+/* line 567, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon-text-right .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-right: 28px !important; }
+/* line 573, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon-text-right .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 582, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-drastic-medium-icon-text-right .x-btn-icon, .x-quirks .x-btn-drastic-medium-icon-text-right .x-btn-icon {
+    height: 24px; }
+
+/* line 589, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px; }
+/* line 593, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 602, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-drastic-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-drastic-medium-icon-text-top .x-btn-icon {
+    width: 24px; }
+
+/* line 609, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px; }
+/* line 613, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 622, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-drastic-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-drastic-medium-icon-text-bottom .x-btn-icon {
+    width: 24px; }
+
+/* line 628, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-over {
+  background-image: none;
+  background-color: #d41629;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ec4a5a), color-stop(3%, #e7182c), color-stop(100%, #c21425));
+  background-image: -webkit-linear-gradient(top, #ec4a5a, #e7182c 3%, #c21425);
+  background-image: -moz-linear-gradient(top, #ec4a5a, #e7182c 3%, #c21425);
+  background-image: -o-linear-gradient(top, #ec4a5a, #e7182c 3%, #c21425);
+  background-image: -ms-linear-gradient(top, #ec4a5a, #e7182c 3%, #c21425);
+  background-image: linear-gradient(top, #ec4a5a, #e7182c 3%, #c21425); }
+  /* line 636, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-drastic-medium-over .x-btn-inner {
+    color: white; }
+
+/* line 660, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-focus {
+  background-image: none;
+  background-color: #d41629;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ec4a5a), color-stop(3%, #e7182c), color-stop(100%, #c21425));
+  background-image: -webkit-linear-gradient(top, #ec4a5a, #e7182c 3%, #c21425);
+  background-image: -moz-linear-gradient(top, #ec4a5a, #e7182c 3%, #c21425);
+  background-image: -o-linear-gradient(top, #ec4a5a, #e7182c 3%, #c21425);
+  background-image: -ms-linear-gradient(top, #ec4a5a, #e7182c 3%, #c21425);
+  background-image: linear-gradient(top, #ec4a5a, #e7182c 3%, #c21425); }
+
+/* line 685, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-menu-active,
+.x-btn-drastic-medium-pressed {
+  -moz-box-shadow: none;
+  -webkit-box-shadow: none;
+  -o-box-shadow: none;
+  box-shadow: none;
+  background-image: none;
+  background-color: #780c17;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bd1324), color-stop(3%, #8a0e1b), color-stop(100%, #650a14));
+  background-image: -webkit-linear-gradient(top, #bd1324, #8a0e1b 3%, #650a14);
+  background-image: -moz-linear-gradient(top, #bd1324, #8a0e1b 3%, #650a14);
+  background-image: -o-linear-gradient(top, #bd1324, #8a0e1b 3%, #650a14);
+  background-image: -ms-linear-gradient(top, #bd1324, #8a0e1b 3%, #650a14);
+  background-image: linear-gradient(top, #bd1324, #8a0e1b 3%, #650a14); }
+  /* line 696, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-drastic-medium-menu-active .x-btn-inner,
+  .x-btn-drastic-medium-pressed .x-btn-inner {
+    color: white;
+    text-shadow: #49080e 0 -1px 0; }
+
+/* line 715, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-menu-active {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 735, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-drastic-medium-disabled {
+  background-image: none;
+  background-color: #a61120;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e81c30), color-stop(3%, #b91324), color-stop(100%, #930f1c));
+  background-image: -webkit-linear-gradient(top, #e81c30, #b91324 3%, #930f1c);
+  background-image: -moz-linear-gradient(top, #e81c30, #b91324 3%, #930f1c);
+  background-image: -o-linear-gradient(top, #e81c30, #b91324 3%, #930f1c);
+  background-image: -ms-linear-gradient(top, #e81c30, #b91324 3%, #930f1c);
+  background-image: linear-gradient(top, #e81c30, #b91324 3%, #930f1c); }
+  /* line 743, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-drastic-medium-disabled .x-btn-inner {
+    color: #fdecee !important; }
+
+/* line 760, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie .x-btn-drastic-medium-disabled .x-btn-inner {
+  color: #a3d0f5 !important; }
+
+/* line 768, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie6 .x-btn-drastic-medium-disabled .x-btn-inner {
+  color: white !important; }
+
+/* line 783, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-drastic-medium-over .x-frame-tl,
+.x-nbr .x-btn-drastic-medium-over .x-frame-bl,
+.x-nbr .x-btn-drastic-medium-over .x-frame-tr,
+.x-nbr .x-btn-drastic-medium-over .x-frame-br,
+.x-nbr .x-btn-drastic-medium-over .x-frame-tc,
+.x-nbr .x-btn-drastic-medium-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-over-corners.gif'); }
+/* line 787, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-drastic-medium-over .x-frame-ml,
+.x-nbr .x-btn-drastic-medium-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-over-sides.gif'); }
+/* line 790, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-drastic-medium-over .x-frame-mc {
+  background-color: #d41629;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-over-bg.gif'); }
+/* line 804, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-drastic-medium-focus .x-frame-tl,
+.x-nbr .x-btn-drastic-medium-focus .x-frame-bl,
+.x-nbr .x-btn-drastic-medium-focus .x-frame-tr,
+.x-nbr .x-btn-drastic-medium-focus .x-frame-br,
+.x-nbr .x-btn-drastic-medium-focus .x-frame-tc,
+.x-nbr .x-btn-drastic-medium-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-focus-corners.gif'); }
+/* line 808, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-drastic-medium-focus .x-frame-ml,
+.x-nbr .x-btn-drastic-medium-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-focus-sides.gif'); }
+/* line 811, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-drastic-medium-focus .x-frame-mc {
+  background-color: #d41629;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-focus-bg.gif'); }
+/* line 826, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-drastic-medium-menu-active .x-frame-tl,
+.x-nbr .x-btn-drastic-medium-menu-active .x-frame-bl,
+.x-nbr .x-btn-drastic-medium-menu-active .x-frame-tr,
+.x-nbr .x-btn-drastic-medium-menu-active .x-frame-br,
+.x-nbr .x-btn-drastic-medium-menu-active .x-frame-tc,
+.x-nbr .x-btn-drastic-medium-menu-active .x-frame-bc,
+.x-nbr .x-btn-drastic-medium-pressed .x-frame-tl,
+.x-nbr .x-btn-drastic-medium-pressed .x-frame-bl,
+.x-nbr .x-btn-drastic-medium-pressed .x-frame-tr,
+.x-nbr .x-btn-drastic-medium-pressed .x-frame-br,
+.x-nbr .x-btn-drastic-medium-pressed .x-frame-tc,
+.x-nbr .x-btn-drastic-medium-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-pressed-corners.gif'); }
+/* line 830, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-drastic-medium-menu-active .x-frame-ml,
+.x-nbr .x-btn-drastic-medium-menu-active .x-frame-mr,
+.x-nbr .x-btn-drastic-medium-pressed .x-frame-ml,
+.x-nbr .x-btn-drastic-medium-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-pressed-sides.gif'); }
+/* line 833, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-drastic-medium-menu-active .x-frame-mc,
+.x-nbr .x-btn-drastic-medium-pressed .x-frame-mc {
+  background-color: #780c17;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-pressed-bg.gif'); }
+/* line 847, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-drastic-medium-disabled .x-frame-tl,
+.x-nbr .x-btn-drastic-medium-disabled .x-frame-bl,
+.x-nbr .x-btn-drastic-medium-disabled .x-frame-tr,
+.x-nbr .x-btn-drastic-medium-disabled .x-frame-br,
+.x-nbr .x-btn-drastic-medium-disabled .x-frame-tc,
+.x-nbr .x-btn-drastic-medium-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-disabled-corners.gif'); }
+/* line 851, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-drastic-medium-disabled .x-frame-ml,
+.x-nbr .x-btn-drastic-medium-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-disabled-sides.gif'); }
+/* line 854, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-drastic-medium-disabled .x-frame-mc {
+  background-color: #a61120;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-disabled-bg.gif'); }
+
+/* line 867, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-drastic-medium {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-bg.gif'); }
+
+/* line 876, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-drastic-medium-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-over-bg.gif'); }
+
+/* line 885, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-drastic-medium-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-focus-bg.gif'); }
+
+/* line 895, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-drastic-medium-menu-active,
+.x-nlg .x-btn-drastic-medium-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-pressed-bg.gif'); }
+
+/* line 904, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-drastic-medium-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-drastic-medium-disabled-bg.gif'); }
+
+/* line 461, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium {
+  border-color: #0c4572; }
+
+/* line 465, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium .x-btn-inner {
+  font-size: 12px;
+  font-weight: bold;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: white;
+  background-repeat: no-repeat;
+  padding: 0 3px;
+  text-shadow: #1160a0 0 -1px 0; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-btn-action-medium {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #167cce;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #45a1eb), color-stop(3%, #1887e0), color-stop(100%, #1471bc));
+  background-image: -webkit-linear-gradient(top, #45a1eb, #1887e0 3%, #1471bc);
+  background-image: -moz-linear-gradient(top, #45a1eb, #1887e0 3%, #1471bc);
+  background-image: -o-linear-gradient(top, #45a1eb, #1887e0 3%, #1471bc);
+  background-image: -ms-linear-gradient(top, #45a1eb, #1887e0 3%, #1471bc);
+  background-image: linear-gradient(top, #45a1eb, #1887e0 3%, #1471bc); }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-btn-action-medium-mc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-bg.gif');
+  background-color: #167cce; }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-action-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-action-medium-tl,
+.x-nbr .x-btn-action-medium-bl,
+.x-nbr .x-btn-action-medium-tr,
+.x-nbr .x-btn-action-medium-br,
+.x-nbr .x-btn-action-medium-tc,
+.x-nbr .x-btn-action-medium-bc,
+.x-nbr .x-btn-action-medium-ml,
+.x-nbr .x-btn-action-medium-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-action-medium-ml,
+.x-nbr .x-btn-action-medium-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-action-medium-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 481, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #edf6fd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #edf6fd); }
+
+/* line 487, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-over .x-btn-icon:after {
+  background-image: none;
+  background-color: black;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #072a45), color-stop(3%, #020b12), color-stop(100%, #000000));
+  background-image: -webkit-linear-gradient(top, #072a45, #020b12 3%, #000000);
+  background-image: -moz-linear-gradient(top, #072a45, #020b12 3%, #000000);
+  background-image: -o-linear-gradient(top, #072a45, #020b12 3%, #000000);
+  background-image: -ms-linear-gradient(top, #072a45, #020b12 3%, #000000);
+  background-image: linear-gradient(top, #072a45, #020b12 3%, #000000); }
+
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon button,
+.x-btn-action-medium-icon .x-btn-inner,
+.x-btn-action-medium-noicon button,
+.x-btn-action-medium-noicon .x-btn-inner {
+  height: 24px;
+  line-height: 24px; }
+
+/* line 522, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon button {
+  padding: 0;
+  width: 24px !important;
+  height: 24px; }
+/* line 528, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon .x-btn-icon {
+  width: 24px;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 539, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon-text-left button {
+  height: 24px; }
+/* line 542, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon-text-left .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-left: 28px; }
+/* line 548, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon-text-left .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 557, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-action-medium-icon-text-left .x-btn-icon, .x-quirks .x-btn-action-medium-icon-text-left .x-btn-icon {
+    height: 24px; }
+
+/* line 564, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon-text-right button {
+  height: 24px; }
+/* line 567, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon-text-right .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-right: 28px !important; }
+/* line 573, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon-text-right .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 582, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-action-medium-icon-text-right .x-btn-icon, .x-quirks .x-btn-action-medium-icon-text-right .x-btn-icon {
+    height: 24px; }
+
+/* line 589, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px; }
+/* line 593, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 602, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-action-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-action-medium-icon-text-top .x-btn-icon {
+    width: 24px; }
+
+/* line 609, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px; }
+/* line 613, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 622, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-action-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-action-medium-icon-text-bottom .x-btn-icon {
+    width: 24px; }
+
+/* line 628, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-over {
+  background-image: none;
+  background-color: #2e96e9;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #73b9f0), color-stop(3%, #419feb), color-stop(100%, #1c8ce7));
+  background-image: -webkit-linear-gradient(top, #73b9f0, #419feb 3%, #1c8ce7);
+  background-image: -moz-linear-gradient(top, #73b9f0, #419feb 3%, #1c8ce7);
+  background-image: -o-linear-gradient(top, #73b9f0, #419feb 3%, #1c8ce7);
+  background-image: -ms-linear-gradient(top, #73b9f0, #419feb 3%, #1c8ce7);
+  background-image: linear-gradient(top, #73b9f0, #419feb 3%, #1c8ce7); }
+  /* line 636, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-action-medium-over .x-btn-inner {
+    color: black; }
+
+/* line 660, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-focus {
+  background-image: none;
+  background-color: #2e96e9;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #73b9f0), color-stop(3%, #419feb), color-stop(100%, #1c8ce7));
+  background-image: -webkit-linear-gradient(top, #73b9f0, #419feb 3%, #1c8ce7);
+  background-image: -moz-linear-gradient(top, #73b9f0, #419feb 3%, #1c8ce7);
+  background-image: -o-linear-gradient(top, #73b9f0, #419feb 3%, #1c8ce7);
+  background-image: -ms-linear-gradient(top, #73b9f0, #419feb 3%, #1c8ce7);
+  background-image: linear-gradient(top, #73b9f0, #419feb 3%, #1c8ce7); }
+
+/* line 685, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-menu-active,
+.x-btn-action-medium-pressed {
+  -moz-box-shadow: none;
+  -webkit-box-shadow: none;
+  -o-box-shadow: none;
+  box-shadow: none;
+  background-image: none;
+  background-color: #1160a0;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #188ae5), color-stop(3%, #136bb2), color-stop(100%, #0f558d));
+  background-image: -webkit-linear-gradient(top, #188ae5, #136bb2 3%, #0f558d);
+  background-image: -moz-linear-gradient(top, #188ae5, #136bb2 3%, #0f558d);
+  background-image: -o-linear-gradient(top, #188ae5, #136bb2 3%, #0f558d);
+  background-image: -ms-linear-gradient(top, #188ae5, #136bb2 3%, #0f558d);
+  background-image: linear-gradient(top, #188ae5, #136bb2 3%, #0f558d); }
+  /* line 696, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-action-medium-menu-active .x-btn-inner,
+  .x-btn-action-medium-pressed .x-btn-inner {
+    text-shadow: #0c4572 0 -1px 0; }
+
+/* line 715, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-menu-active {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 735, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-action-medium-disabled {
+  background-image: none;
+  background-color: #167cce;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #45a1eb), color-stop(3%, #1887e0), color-stop(100%, #1471bc));
+  background-image: -webkit-linear-gradient(top, #45a1eb, #1887e0 3%, #1471bc);
+  background-image: -moz-linear-gradient(top, #45a1eb, #1887e0 3%, #1471bc);
+  background-image: -o-linear-gradient(top, #45a1eb, #1887e0 3%, #1471bc);
+  background-image: -ms-linear-gradient(top, #45a1eb, #1887e0 3%, #1471bc);
+  background-image: linear-gradient(top, #45a1eb, #1887e0 3%, #1471bc); }
+
+/* line 783, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-action-medium-over .x-frame-tl,
+.x-nbr .x-btn-action-medium-over .x-frame-bl,
+.x-nbr .x-btn-action-medium-over .x-frame-tr,
+.x-nbr .x-btn-action-medium-over .x-frame-br,
+.x-nbr .x-btn-action-medium-over .x-frame-tc,
+.x-nbr .x-btn-action-medium-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-over-corners.gif'); }
+/* line 787, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-action-medium-over .x-frame-ml,
+.x-nbr .x-btn-action-medium-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-over-sides.gif'); }
+/* line 790, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-action-medium-over .x-frame-mc {
+  background-color: #2e96e9;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-over-bg.gif'); }
+/* line 804, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-action-medium-focus .x-frame-tl,
+.x-nbr .x-btn-action-medium-focus .x-frame-bl,
+.x-nbr .x-btn-action-medium-focus .x-frame-tr,
+.x-nbr .x-btn-action-medium-focus .x-frame-br,
+.x-nbr .x-btn-action-medium-focus .x-frame-tc,
+.x-nbr .x-btn-action-medium-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-focus-corners.gif'); }
+/* line 808, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-action-medium-focus .x-frame-ml,
+.x-nbr .x-btn-action-medium-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-focus-sides.gif'); }
+/* line 811, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-action-medium-focus .x-frame-mc {
+  background-color: #2e96e9;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-focus-bg.gif'); }
+/* line 826, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-action-medium-menu-active .x-frame-tl,
+.x-nbr .x-btn-action-medium-menu-active .x-frame-bl,
+.x-nbr .x-btn-action-medium-menu-active .x-frame-tr,
+.x-nbr .x-btn-action-medium-menu-active .x-frame-br,
+.x-nbr .x-btn-action-medium-menu-active .x-frame-tc,
+.x-nbr .x-btn-action-medium-menu-active .x-frame-bc,
+.x-nbr .x-btn-action-medium-pressed .x-frame-tl,
+.x-nbr .x-btn-action-medium-pressed .x-frame-bl,
+.x-nbr .x-btn-action-medium-pressed .x-frame-tr,
+.x-nbr .x-btn-action-medium-pressed .x-frame-br,
+.x-nbr .x-btn-action-medium-pressed .x-frame-tc,
+.x-nbr .x-btn-action-medium-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-pressed-corners.gif'); }
+/* line 830, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-action-medium-menu-active .x-frame-ml,
+.x-nbr .x-btn-action-medium-menu-active .x-frame-mr,
+.x-nbr .x-btn-action-medium-pressed .x-frame-ml,
+.x-nbr .x-btn-action-medium-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-pressed-sides.gif'); }
+/* line 833, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-action-medium-menu-active .x-frame-mc,
+.x-nbr .x-btn-action-medium-pressed .x-frame-mc {
+  background-color: #1160a0;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-pressed-bg.gif'); }
+/* line 847, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-action-medium-disabled .x-frame-tl,
+.x-nbr .x-btn-action-medium-disabled .x-frame-bl,
+.x-nbr .x-btn-action-medium-disabled .x-frame-tr,
+.x-nbr .x-btn-action-medium-disabled .x-frame-br,
+.x-nbr .x-btn-action-medium-disabled .x-frame-tc,
+.x-nbr .x-btn-action-medium-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-disabled-corners.gif'); }
+/* line 851, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-action-medium-disabled .x-frame-ml,
+.x-nbr .x-btn-action-medium-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-disabled-sides.gif'); }
+/* line 854, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-action-medium-disabled .x-frame-mc {
+  background-color: #167cce;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-disabled-bg.gif'); }
+
+/* line 867, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-action-medium {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-bg.gif'); }
+
+/* line 876, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-action-medium-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-over-bg.gif'); }
+
+/* line 885, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-action-medium-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-focus-bg.gif'); }
+
+/* line 895, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-action-medium-menu-active,
+.x-nlg .x-btn-action-medium-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-pressed-bg.gif'); }
+
+/* line 904, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-action-medium-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-action-medium-disabled-bg.gif'); }
+
+/* line 461, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small {
+  border-color: rgba(204, 229, 250, 0); }
+
+/* line 465, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small .x-btn-inner {
+  font-size: 11px;
+  font-weight: bold;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: #136cb4;
+  background-repeat: no-repeat;
+  padding: 0 3px;
+  text-shadow: #fafdff 0 1px 0; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-btn-default-toolbar-small {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: rgba(204, 229, 250, 0); }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-toolbar-small-mc {
+  background-color: rgba(204, 229, 250, 0); }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-small-tl,
+.x-nbr .x-btn-default-toolbar-small-bl,
+.x-nbr .x-btn-default-toolbar-small-tr,
+.x-nbr .x-btn-default-toolbar-small-br,
+.x-nbr .x-btn-default-toolbar-small-tc,
+.x-nbr .x-btn-default-toolbar-small-bc,
+.x-nbr .x-btn-default-toolbar-small-ml,
+.x-nbr .x-btn-default-toolbar-small-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-small-ml,
+.x-nbr .x-btn-default-toolbar-small-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-small-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 481, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon:after {
+  background-image: none;
+  background-color: #136cb4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2b94e8), color-stop(3%, #1577c6), color-stop(100%, #1161a1));
+  background-image: -webkit-linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1);
+  background-image: -moz-linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1);
+  background-image: -o-linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1);
+  background-image: -ms-linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1);
+  background-image: linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1); }
+
+/* line 487, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-over .x-btn-icon:after {
+  background-image: none;
+  background-color: #093558;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #115e9d), color-stop(3%, #0b406a), color-stop(100%, #072a45));
+  background-image: -webkit-linear-gradient(top, #115e9d, #0b406a 3%, #072a45);
+  background-image: -moz-linear-gradient(top, #115e9d, #0b406a 3%, #072a45);
+  background-image: -o-linear-gradient(top, #115e9d, #0b406a 3%, #072a45);
+  background-image: -ms-linear-gradient(top, #115e9d, #0b406a 3%, #072a45);
+  background-image: linear-gradient(top, #115e9d, #0b406a 3%, #072a45); }
+
+/* line 504, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-menu-active .x-btn-icon:after,
+.x-btn-default-toolbar-small-pressed .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #ecf3fd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd); }
+
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon button,
+.x-btn-default-toolbar-small-icon .x-btn-inner,
+.x-btn-default-toolbar-small-noicon button,
+.x-btn-default-toolbar-small-noicon .x-btn-inner {
+  height: 16px;
+  line-height: 16px; }
+
+/* line 522, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon button {
+  padding: 0;
+  width: 16px !important;
+  height: 16px; }
+/* line 528, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-icon {
+  width: 16px;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 539, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-left button {
+  height: 16px; }
+/* line 542, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-left: 20px; }
+/* line 548, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 557, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon {
+    height: 16px; }
+
+/* line 564, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-right button {
+  height: 16px; }
+/* line 567, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-right: 20px !important; }
+/* line 573, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 582, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon {
+    height: 16px; }
+
+/* line 589, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-inner {
+  padding-top: 20px; }
+/* line 593, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 602, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon {
+    width: 16px; }
+
+/* line 609, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px; }
+/* line 613, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 622, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon {
+    width: 16px; }
+
+/* line 628, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-over {
+  border-color: #91c1e8;
+  background-image: none;
+  background-color: #cce5fa;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #dfeffc), color-stop(100%, #badcf8));
+  background-image: -webkit-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -moz-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -o-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -ms-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8); }
+  /* line 636, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-toolbar-small-over .x-btn-inner {
+    color: #093558; }
+
+/* line 660, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-focus {
+  background-image: none;
+  background-color: #cce5fa;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #dfeffc), color-stop(100%, #badcf8));
+  background-image: -webkit-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -moz-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -o-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -ms-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8); }
+
+/* line 685, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-menu-active,
+.x-btn-default-toolbar-small-pressed {
+  border-color: #002d71;
+  -moz-box-shadow: none;
+  -webkit-box-shadow: none;
+  -o-box-shadow: none;
+  box-shadow: none;
+  background-image: none;
+  background-color: #0e4dad;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #1b6eed), color-stop(3%, #1055c0), color-stop(100%, #0c459a));
+  background-image: -webkit-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: -moz-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: -o-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: -ms-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a); }
+  /* line 696, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-toolbar-small-menu-active .x-btn-inner,
+  .x-btn-default-toolbar-small-pressed .x-btn-inner {
+    color: white;
+    text-shadow: #0a387e 0 -1px 0; }
+
+/* line 715, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-menu-active {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 735, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-disabled {
+  background-image: none;
+  background-color: rgba(204, 229, 250, 0);
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(3%, rgba(223, 239, 252, 0)), color-stop(100%, rgba(186, 220, 248, 0)));
+  background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0));
+  background-image: -moz-linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0));
+  background-image: -o-linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0));
+  background-image: -ms-linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0));
+  background-image: linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0)); }
+  /* line 743, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-toolbar-small-disabled .x-btn-inner {
+    color: #136cb4 !important; }
+
+/* line 760, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie .x-btn-default-toolbar-small-disabled .x-btn-inner {
+  color: #a3d0f5 !important; }
+
+/* line 768, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-toolbar-small-disabled .x-btn-inner {
+  color: white !important; }
+
+/* line 783, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-over-corners.gif'); }
+/* line 787, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-over-sides.gif'); }
+/* line 790, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-over .x-frame-mc {
+  background-color: #cce5fa;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-over-bg.gif'); }
+/* line 804, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-focus-corners.gif'); }
+/* line 808, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-focus-sides.gif'); }
+/* line 811, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-focus .x-frame-mc {
+  background-color: #cce5fa;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-focus-bg.gif'); }
+/* line 826, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-pressed-corners.gif'); }
+/* line 830, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-pressed-sides.gif'); }
+/* line 833, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mc {
+  background-color: #0e4dad;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-pressed-bg.gif'); }
+/* line 847, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-br,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-disabled-corners.gif'); }
+/* line 851, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-disabled-sides.gif'); }
+/* line 854, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mc {
+  background-color: rgba(204, 229, 250, 0);
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-disabled-bg.gif'); }
+
+/* line 876, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-small-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-over-bg.gif'); }
+
+/* line 885, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-small-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-focus-bg.gif'); }
+
+/* line 895, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-small-menu-active,
+.x-nlg .x-btn-default-toolbar-small-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-pressed-bg.gif'); }
+
+/* line 904, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-small-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-small-disabled-bg.gif'); }
+
+/* line 461, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium {
+  border-color: rgba(204, 229, 250, 0); }
+
+/* line 465, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium .x-btn-inner {
+  font-size: 11px;
+  font-weight: bold;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: #136cb4;
+  background-repeat: no-repeat;
+  padding: 0 3px;
+  text-shadow: #fafdff 0 1px 0; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-btn-default-toolbar-medium {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: rgba(204, 229, 250, 0); }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-toolbar-medium-mc {
+  background-color: rgba(204, 229, 250, 0); }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-medium-tl,
+.x-nbr .x-btn-default-toolbar-medium-bl,
+.x-nbr .x-btn-default-toolbar-medium-tr,
+.x-nbr .x-btn-default-toolbar-medium-br,
+.x-nbr .x-btn-default-toolbar-medium-tc,
+.x-nbr .x-btn-default-toolbar-medium-bc,
+.x-nbr .x-btn-default-toolbar-medium-ml,
+.x-nbr .x-btn-default-toolbar-medium-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-medium-ml,
+.x-nbr .x-btn-default-toolbar-medium-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-medium-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 481, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon:after {
+  background-image: none;
+  background-color: #136cb4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2b94e8), color-stop(3%, #1577c6), color-stop(100%, #1161a1));
+  background-image: -webkit-linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1);
+  background-image: -moz-linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1);
+  background-image: -o-linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1);
+  background-image: -ms-linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1);
+  background-image: linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1); }
+
+/* line 487, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-over .x-btn-icon:after {
+  background-image: none;
+  background-color: #093558;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #115e9d), color-stop(3%, #0b406a), color-stop(100%, #072a45));
+  background-image: -webkit-linear-gradient(top, #115e9d, #0b406a 3%, #072a45);
+  background-image: -moz-linear-gradient(top, #115e9d, #0b406a 3%, #072a45);
+  background-image: -o-linear-gradient(top, #115e9d, #0b406a 3%, #072a45);
+  background-image: -ms-linear-gradient(top, #115e9d, #0b406a 3%, #072a45);
+  background-image: linear-gradient(top, #115e9d, #0b406a 3%, #072a45); }
+
+/* line 504, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-menu-active .x-btn-icon:after,
+.x-btn-default-toolbar-medium-pressed .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #ecf3fd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd); }
+
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon button,
+.x-btn-default-toolbar-medium-icon .x-btn-inner,
+.x-btn-default-toolbar-medium-noicon button,
+.x-btn-default-toolbar-medium-noicon .x-btn-inner {
+  height: 16px;
+  line-height: 16px; }
+
+/* line 522, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon button {
+  padding: 0;
+  width: 16px !important;
+  height: 16px; }
+/* line 528, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-icon {
+  width: 16px;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 539, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-left button {
+  height: 16px; }
+/* line 542, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-left: 20px; }
+/* line 548, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 557, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon {
+    height: 16px; }
+
+/* line 564, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-right button {
+  height: 16px; }
+/* line 567, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-right: 20px !important; }
+/* line 573, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 582, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon {
+    height: 16px; }
+
+/* line 589, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner {
+  padding-top: 20px; }
+/* line 593, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 602, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon {
+    width: 16px; }
+
+/* line 609, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px; }
+/* line 613, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 622, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon {
+    width: 16px; }
+
+/* line 628, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-over {
+  border-color: #91c1e8;
+  background-image: none;
+  background-color: #cce5fa;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #dfeffc), color-stop(100%, #badcf8));
+  background-image: -webkit-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -moz-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -o-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -ms-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8); }
+  /* line 636, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-toolbar-medium-over .x-btn-inner {
+    color: #093558; }
+
+/* line 660, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-focus {
+  background-image: none;
+  background-color: #cce5fa;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #dfeffc), color-stop(100%, #badcf8));
+  background-image: -webkit-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -moz-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -o-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -ms-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8); }
+
+/* line 685, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-menu-active,
+.x-btn-default-toolbar-medium-pressed {
+  border-color: #002d71;
+  -moz-box-shadow: none;
+  -webkit-box-shadow: none;
+  -o-box-shadow: none;
+  box-shadow: none;
+  background-image: none;
+  background-color: #0e4dad;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #1b6eed), color-stop(3%, #1055c0), color-stop(100%, #0c459a));
+  background-image: -webkit-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: -moz-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: -o-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: -ms-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a); }
+  /* line 696, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-toolbar-medium-menu-active .x-btn-inner,
+  .x-btn-default-toolbar-medium-pressed .x-btn-inner {
+    color: white;
+    text-shadow: #0a387e 0 -1px 0; }
+
+/* line 715, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-menu-active {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 735, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-disabled {
+  background-image: none;
+  background-color: rgba(204, 229, 250, 0);
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(3%, rgba(223, 239, 252, 0)), color-stop(100%, rgba(186, 220, 248, 0)));
+  background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0));
+  background-image: -moz-linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0));
+  background-image: -o-linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0));
+  background-image: -ms-linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0));
+  background-image: linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0)); }
+  /* line 743, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+    color: #136cb4 !important; }
+
+/* line 760, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+  color: #a3d0f5 !important; }
+
+/* line 768, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+  color: white !important; }
+
+/* line 783, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-over-corners.gif'); }
+/* line 787, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-over-sides.gif'); }
+/* line 790, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-over .x-frame-mc {
+  background-color: #cce5fa;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-over-bg.gif'); }
+/* line 804, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-focus-corners.gif'); }
+/* line 808, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-focus-sides.gif'); }
+/* line 811, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mc {
+  background-color: #cce5fa;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-focus-bg.gif'); }
+/* line 826, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-pressed-corners.gif'); }
+/* line 830, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-pressed-sides.gif'); }
+/* line 833, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mc {
+  background-color: #0e4dad;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-pressed-bg.gif'); }
+/* line 847, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-br,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-disabled-corners.gif'); }
+/* line 851, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-disabled-sides.gif'); }
+/* line 854, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mc {
+  background-color: rgba(204, 229, 250, 0);
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-disabled-bg.gif'); }
+
+/* line 876, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-medium-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-over-bg.gif'); }
+
+/* line 885, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-medium-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-focus-bg.gif'); }
+
+/* line 895, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-medium-menu-active,
+.x-nlg .x-btn-default-toolbar-medium-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-pressed-bg.gif'); }
+
+/* line 904, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-medium-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-medium-disabled-bg.gif'); }
+
+/* line 461, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large {
+  border-color: rgba(204, 229, 250, 0); }
+
+/* line 465, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large .x-btn-inner {
+  font-size: 11px;
+  font-weight: bold;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: #136cb4;
+  background-repeat: no-repeat;
+  padding: 0 3px;
+  text-shadow: #fafdff 0 1px 0; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-btn-default-toolbar-large {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: rgba(204, 229, 250, 0); }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-toolbar-large-mc {
+  background-color: rgba(204, 229, 250, 0); }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-large-tl,
+.x-nbr .x-btn-default-toolbar-large-bl,
+.x-nbr .x-btn-default-toolbar-large-tr,
+.x-nbr .x-btn-default-toolbar-large-br,
+.x-nbr .x-btn-default-toolbar-large-tc,
+.x-nbr .x-btn-default-toolbar-large-bc,
+.x-nbr .x-btn-default-toolbar-large-ml,
+.x-nbr .x-btn-default-toolbar-large-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-large-ml,
+.x-nbr .x-btn-default-toolbar-large-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-btn-default-toolbar-large-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 481, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-icon:after {
+  background-image: none;
+  background-color: #136cb4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2b94e8), color-stop(3%, #1577c6), color-stop(100%, #1161a1));
+  background-image: -webkit-linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1);
+  background-image: -moz-linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1);
+  background-image: -o-linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1);
+  background-image: -ms-linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1);
+  background-image: linear-gradient(top, #2b94e8, #1577c6 3%, #1161a1); }
+
+/* line 487, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-over .x-btn-icon:after {
+  background-image: none;
+  background-color: #093558;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #115e9d), color-stop(3%, #0b406a), color-stop(100%, #072a45));
+  background-image: -webkit-linear-gradient(top, #115e9d, #0b406a 3%, #072a45);
+  background-image: -moz-linear-gradient(top, #115e9d, #0b406a 3%, #072a45);
+  background-image: -o-linear-gradient(top, #115e9d, #0b406a 3%, #072a45);
+  background-image: -ms-linear-gradient(top, #115e9d, #0b406a 3%, #072a45);
+  background-image: linear-gradient(top, #115e9d, #0b406a 3%, #072a45); }
+
+/* line 504, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-menu-active .x-btn-icon:after,
+.x-btn-default-toolbar-large-pressed .x-btn-icon:after {
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #ecf3fd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd);
+  background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd);
+  background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd);
+  background-image: linear-gradient(top, #ffffff, #ffffff 3%, #ecf3fd); }
+
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon button,
+.x-btn-default-toolbar-large-icon .x-btn-inner,
+.x-btn-default-toolbar-large-noicon button,
+.x-btn-default-toolbar-large-noicon .x-btn-inner {
+  height: 16px;
+  line-height: 16px; }
+
+/* line 522, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon button {
+  padding: 0;
+  width: 16px !important;
+  height: 16px; }
+/* line 528, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-icon {
+  width: 16px;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 539, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-left button {
+  height: 16px; }
+/* line 542, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-left: 20px; }
+/* line 548, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 557, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon {
+    height: 16px; }
+
+/* line 564, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-right button {
+  height: 16px; }
+/* line 567, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-right: 20px !important; }
+/* line 573, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 582, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon {
+    height: 16px; }
+
+/* line 589, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-inner {
+  padding-top: 20px; }
+/* line 593, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 602, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon {
+    width: 16px; }
+
+/* line 609, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px; }
+/* line 613, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 622, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon {
+    width: 16px; }
+
+/* line 628, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-over {
+  border-color: #91c1e8;
+  background-image: none;
+  background-color: #cce5fa;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #dfeffc), color-stop(100%, #badcf8));
+  background-image: -webkit-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -moz-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -o-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -ms-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8); }
+  /* line 636, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-toolbar-large-over .x-btn-inner {
+    color: #093558; }
+
+/* line 660, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-focus {
+  background-image: none;
+  background-color: #cce5fa;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #dfeffc), color-stop(100%, #badcf8));
+  background-image: -webkit-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -moz-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -o-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: -ms-linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8);
+  background-image: linear-gradient(top, #ffffff, #dfeffc 3%, #badcf8); }
+
+/* line 685, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-menu-active,
+.x-btn-default-toolbar-large-pressed {
+  border-color: #002d71;
+  -moz-box-shadow: none;
+  -webkit-box-shadow: none;
+  -o-box-shadow: none;
+  box-shadow: none;
+  background-image: none;
+  background-color: #0e4dad;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #1b6eed), color-stop(3%, #1055c0), color-stop(100%, #0c459a));
+  background-image: -webkit-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: -moz-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: -o-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: -ms-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a); }
+  /* line 696, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-toolbar-large-menu-active .x-btn-inner,
+  .x-btn-default-toolbar-large-pressed .x-btn-inner {
+    color: white;
+    text-shadow: #0a387e 0 -1px 0; }
+
+/* line 715, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-menu-active {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 735, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-disabled {
+  background-image: none;
+  background-color: rgba(204, 229, 250, 0);
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(3%, rgba(223, 239, 252, 0)), color-stop(100%, rgba(186, 220, 248, 0)));
+  background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0));
+  background-image: -moz-linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0));
+  background-image: -o-linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0));
+  background-image: -ms-linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0));
+  background-image: linear-gradient(top, rgba(255, 255, 255, 0), rgba(223, 239, 252, 0) 3%, rgba(186, 220, 248, 0)); }
+  /* line 743, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+  .x-btn-default-toolbar-large-disabled .x-btn-inner {
+    color: #136cb4 !important; }
+
+/* line 760, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie .x-btn-default-toolbar-large-disabled .x-btn-inner {
+  color: #a3d0f5 !important; }
+
+/* line 768, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-toolbar-large-disabled .x-btn-inner {
+  color: white !important; }
+
+/* line 783, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-over-corners.gif'); }
+/* line 787, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-over-sides.gif'); }
+/* line 790, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-over .x-frame-mc {
+  background-color: #cce5fa;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-over-bg.gif'); }
+/* line 804, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-focus-corners.gif'); }
+/* line 808, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-focus-sides.gif'); }
+/* line 811, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-focus .x-frame-mc {
+  background-color: #cce5fa;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-focus-bg.gif'); }
+/* line 826, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bc,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-pressed-corners.gif'); }
+/* line 830, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mr,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-pressed-sides.gif'); }
+/* line 833, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mc,
+.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mc {
+  background-color: #0e4dad;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-pressed-bg.gif'); }
+/* line 847, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tl,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bl,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tr,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-br,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tc,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-disabled-corners.gif'); }
+/* line 851, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-ml,
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-disabled-sides.gif'); }
+/* line 854, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mc {
+  background-color: rgba(204, 229, 250, 0);
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-disabled-bg.gif'); }
+
+/* line 876, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-large-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-over-bg.gif'); }
+
+/* line 885, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-large-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-focus-bg.gif'); }
+
+/* line 895, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-large-menu-active,
+.x-nlg .x-btn-default-toolbar-large-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-pressed-bg.gif'); }
+
+/* line 904, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-large-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/btn/btn-default-toolbar-large-disabled-bg.gif'); }
+
+/* line 374, ../themes/stylesheets/neptune/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-disabled,
+.x-btn-default-toolbar-medium-disabled,
+.x-btn-default-toolbar-large-disabled {
+  border-color: transparent;
+  background-image: none;
+  background: transparent; }
+
+/* line 2, ../themes/stylesheets/neptune/default/widgets/_btn-group.scss */
+.x-btn-group {
+  position: relative;
+  overflow: hidden; }
+
+/* line 7, ../themes/stylesheets/neptune/default/widgets/_btn-group.scss */
+.x-btn-group-header-body {
+  padding-bottom: 5px; }
+
+/* line 11, ../themes/stylesheets/neptune/default/widgets/_btn-group.scss */
+.x-btn-group-body {
+  position: relative; }
+  /* line 16, ../themes/stylesheets/neptune/default/widgets/_btn-group.scss */
+  .x-btn-group-body .x-table-layout-cell {
+    padding-right: 5px; }
+  /* line 20, ../themes/stylesheets/neptune/default/widgets/_btn-group.scss */
+  .x-btn-group-body .x-table-layout-cell {
+    vertical-align: top; }
+
+/* line 65, ../themes/stylesheets/neptune/default/widgets/_btn-group.scss */
+.x-btn-group-default-framed {
+  border-style: solid;
+  border-width: 0 1px 0 0;
+  border-color: #e2e3e5; }
+
+/* line 79, ../themes/stylesheets/neptune/default/widgets/_btn-group.scss */
+.x-btn-group-header-body-default-framed {
+  background: transparent;
+  -moz-border-radius-topleft: 2px;
+  -webkit-border-top-left-radius: 2px;
+  -o-border-top-left-radius: 2px;
+  -ms-border-top-left-radius: 2px;
+  -khtml-border-top-left-radius: 2px;
+  border-top-left-radius: 2px;
+  -moz-border-radius-topright: 2px;
+  -webkit-border-top-right-radius: 2px;
+  -o-border-top-right-radius: 2px;
+  -ms-border-top-right-radius: 2px;
+  -khtml-border-top-right-radius: 2px;
+  border-top-right-radius: 2px; }
+
+/* line 87, ../themes/stylesheets/neptune/default/widgets/_btn-group.scss */
+.x-btn-group-header-text-default-framed {
+  font: bold 12px "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: #333130; }
+
+/* line 2, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-datepicker {
+  border: 1px solid #dddddc;
+  background-color: white;
+  position: relative; }
+  /* line 8, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  .x-datepicker a {
+    color: black;
+    text-decoration: none;
+    border-width: 0; }
+
+/* line 20, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-datepicker-inner,
+.x-datepicker-inner td,
+.x-datepicker-inner th {
+  border-collapse: separate; }
+
+/* line 24, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-datepicker-header {
+  position: relative;
+  height: 26px;
+  background-color: #D8DDE3; }
+
+/* line 37, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-datepicker-prev,
+.x-datepicker-next {
+  position: absolute;
+  top: 5px;
+  width: 18px; }
+  /* line 43, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  .x-datepicker-prev a,
+  .x-datepicker-next a {
+    display: block;
+    width: 16px;
+    height: 16px;
+    background-position: top;
+    background-repeat: no-repeat;
+    cursor: pointer;
+    text-decoration: none !important;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+    opacity: 0.7; }
+    /* line 58, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+    .x-datepicker-prev a:hover,
+    .x-datepicker-next a:hover {
+      filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+      opacity: 1; }
+
+/* line 64, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-datepicker-next {
+  right: 5px; }
+  /* line 67, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  .x-datepicker-next a {
+    background-image: url('../../resources/themes/images/neptune/shared/right-btn.gif'); }
+
+/* line 72, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-datepicker-prev {
+  left: 5px; }
+  /* line 75, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  .x-datepicker-prev a {
+    background-image: url('../../resources/themes/images/neptune/shared/left-btn.gif'); }
+
+/* line 81, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-item-disabled .x-datepicker-prev a:hover,
+.x-item-disabled .x-datepicker-next a:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+
+/* line 85, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-datepicker-month {
+  padding-top: 3px; }
+  /* line 98, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  .x-datepicker-month .x-btn,
+  .x-datepicker-month button,
+  .x-datepicker-month .x-btn-tc,
+  .x-datepicker-month .x-btn-tl,
+  .x-datepicker-month .x-btn-tr,
+  .x-datepicker-month .x-btn-mc,
+  .x-datepicker-month .x-btn-ml,
+  .x-datepicker-month .x-btn-mr,
+  .x-datepicker-month .x-btn-bc,
+  .x-datepicker-month .x-btn-bl,
+  .x-datepicker-month .x-btn-br {
+    background: transparent !important;
+    border-width: 0 !important; }
+  /* line 103, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  .x-datepicker-month span {
+    color: #2669B4 !important;
+    text-shadow: 0 0 0 !important;
+    font-weight: normal !important; }
+  /* line 109, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  .x-datepicker-month .x-btn-split-right {
+    background-image: url('../../resources/themes/images/neptune/button/s-arrow-light.gif');
+    padding-right: 12px; }
+
+/* line 115, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-datepicker-next {
+  text-align: right; }
+
+/* line 119, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-datepicker-month {
+  text-align: center; }
+  /* line 123, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  .x-datepicker-month button {
+    color: #2669B4 !important; }
+
+/* line 129, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+table.x-datepicker-inner {
+  width: 100%;
+  table-layout: fixed; }
+  /* line 133, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner th {
+    width: 25px;
+    height: 19px;
+    padding: 0;
+    color: black;
+    font: normal 10px "Helvetica Neue", Arial, Verdana, sans-serif;
+    font-weight: bold;
+    text-align: right;
+    border-collapse: separate;
+    cursor: default; }
+    /* line 155, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+    table.x-datepicker-inner th span {
+      display: block;
+      padding-right: 7px; }
+  /* line 161, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner tr {
+    height: 20px; }
+  /* line 165, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner td {
+    height: 19px;
+    text-align: right;
+    padding: 0; }
+  /* line 173, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner a {
+    padding: 3px 5px 3px 3px;
+    display: block;
+    font: normal 12px "Helvetica Neue", Arial, Verdana, sans-serif;
+    color: #666567;
+    text-decoration: none;
+    text-align: right; }
+  /* line 183, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-active {
+    cursor: pointer;
+    color: black; }
+  /* line 189, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner a:hover,
+  table.x-datepicker-inner .x-datepicker-disabled a:hover {
+    text-decoration: none !important;
+    background: #F2FAFF; }
+  /* line 196, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-selected a {
+    color: #fff;
+    background-color: #0E56B0;
+    -moz-border-radius: 4px;
+    -webkit-border-radius: 4px;
+    -o-border-radius: 4px;
+    -ms-border-radius: 4px;
+    -khtml-border-radius: 4px;
+    border-radius: 4px; }
+  /* line 208, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-today a {
+    color: #28A02A;
+    position: relative;
+    top: -1px; }
+    /* line 218, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+    table.x-datepicker-inner .x-datepicker-today a:hover {
+      background: #28A02A;
+      color: #fff;
+      -moz-border-radius: 4px;
+      -webkit-border-radius: 4px;
+      -o-border-radius: 4px;
+      -ms-border-radius: 4px;
+      -khtml-border-radius: 4px;
+      border-radius: 4px; }
+  /* line 225, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-today.x-datepicker-selected a {
+    background: #28A02A;
+    color: #fff;
+    -moz-border-radius: 4px;
+    -webkit-border-radius: 4px;
+    -o-border-radius: 4px;
+    -ms-border-radius: 4px;
+    -khtml-border-radius: 4px;
+    border-radius: 4px; }
+  /* line 231, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-today span {
+    font-weight: bold; }
+  /* line 238, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-prevday a,
+  table.x-datepicker-inner .x-datepicker-nextday a {
+    text-decoration: none !important;
+    color: #aaa; }
+  /* line 244, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-disabled a {
+    cursor: default;
+    background-color: #eee;
+    color: #bbb; }
+
+/* line 252, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-datepicker-footer,
+.x-monthpicker-buttons {
+  position: relative;
+  text-align: center; }
+  /* line 265, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  .x-datepicker-footer .x-btn,
+  .x-monthpicker-buttons .x-btn {
+    position: relative;
+    margin: 4px; }
+
+/* line 271, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-item-disabled .x-datepicker-inner a:hover {
+  background: none; }
+
+/* line 276, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-datepicker .x-monthpicker {
+  position: absolute;
+  left: 0;
+  top: 0; }
+
+/* line 283, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker {
+  border: 1px solid #dddddc;
+  background-color: white; }
+
+/* line 289, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker-months,
+.x-monthpicker-years {
+  float: left;
+  height: 167px;
+  width: 88px; }
+
+/* line 296, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker-item {
+  float: left;
+  margin: 4px 0 5px 0;
+  font: normal 11px "Helvetica Neue", Arial, Verdana, sans-serif;
+  text-align: center;
+  vertical-align: middle;
+  height: 18px;
+  width: 43px;
+  border: 0 none; }
+  /* line 310, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  .x-monthpicker-item a {
+    display: block;
+    margin: 0 5px 0 5px;
+    text-decoration: none;
+    color: black;
+    border: 1px solid white;
+    line-height: 17px; }
+    /* line 323, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+    .x-monthpicker-item a:hover {
+      background-color: #1398ff; }
+    /* line 327, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+    .x-monthpicker-item a.x-monthpicker-selected {
+      background-color: #129aff;
+      border: 1px solid #0c599b; }
+
+/* line 334, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker-months {
+  border-right: 1px solid #dddddc;
+  width: 87px; }
+
+/* line 339, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker-years .x-monthpicker-item {
+  width: 44px; }
+
+/* line 343, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav {
+  height: 28px; }
+  /* line 346, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+  .x-monthpicker-yearnav button {
+    background-image: url('../../resources/themes/images/neptune/tools/tool-sprites.gif');
+    height: 15px;
+    width: 15px;
+    padding: 0;
+    margin: 6px 12px 5px 15px;
+    border: 0; }
+    /* line 354, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+    .x-monthpicker-yearnav button::-moz-focus-inner {
+      border: 0;
+      padding: 0; }
+
+/* line 361, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-next {
+  background-position: 0 -120px; }
+
+/* line 365, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-next-over {
+  cursor: pointer;
+  cursor: hand;
+  background-position: -15px -120px; }
+
+/* line 371, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-prev {
+  background-position: 0 -105px; }
+
+/* line 375, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-prev-over {
+  cursor: pointer;
+  cursor: hand;
+  background-position: -15px -105px; }
+
+/* line 382, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker-small .x-monthpicker-item {
+  margin: 2px 0 2px 0; }
+/* line 386, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker-small .x-monthpicker-yearnav {
+  height: 23px; }
+/* line 390, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-monthpicker-small .x-monthpicker-months, .x-monthpicker-small .x-monthpicker-years {
+  height: 136px; }
+
+/* line 400, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-quirks .x-ie7 .x-monthpicker-buttons .x-btn,
+.x-quirks .x-ie8 .x-monthpicker-buttons .x-btn {
+  margin-top: 2px; }
+/* line 406, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-quirks .x-monthpicker-small .x-monthpicker-yearnav button {
+  margin-top: 3px;
+  margin-bottom: 3px; }
+
+/* line 412, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-ie6 .x-monthpicker-small .x-monthpicker-yearnav button {
+  margin-top: 3px;
+  margin-bottom: 3px; }
+
+/* line 422, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-nlg .x-datepicker-header {
+  background-image: url('../../resources/themes/images/neptune/datepicker/datepicker-header-bg.gif');
+  background-repeat: repeat-x;
+  background-position: top left; }
+/* line 431, ../themes/stylesheets/neptune/default/widgets/_datepicker.scss */
+.x-nlg .x-datepicker-footer,
+.x-nlg .x-monthpicker-buttons {
+  background-image: url('../../resources/themes/images/neptune/datepicker/datepicker-footer-bg.gif');
+  background-repeat: repeat-x;
+  background-position: top left; }
+
+/* line 4, ../themes/stylesheets/neptune/default/widgets/_colorpicker.scss */
+.x-color-picker {
+  width: 144px;
+  height: 90px; }
+
+/* line 10, ../themes/stylesheets/neptune/default/widgets/_colorpicker.scss */
+.x-color-picker a {
+  border: 1px solid #fff;
+  float: left;
+  padding: 2px;
+  text-decoration: none; }
+
+/* line 19, ../themes/stylesheets/neptune/default/widgets/_colorpicker.scss */
+.x-color-picker a:hover,
+.x-color-picker a.x-color-picker-selected {
+  border-color: #8bb8f3;
+  background-color: #deecfd; }
+
+/* line 24, ../themes/stylesheets/neptune/default/widgets/_colorpicker.scss */
+.x-color-picker em {
+  display: block;
+  border: 1px solid #aca899; }
+
+/* line 29, ../themes/stylesheets/neptune/default/widgets/_colorpicker.scss */
+.x-color-picker em span {
+  display: block;
+  height: 10px;
+  width: 10px;
+  line-height: 10px; }
+
+/* line 7, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu {
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  background: white !important; }
+
+/* line 27, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item .x-form-text {
+  user-select: text;
+  -webkit-user-select: text;
+  -o-user-select: text;
+  -ie-user-select: text;
+  -moz-user-select: text;
+  -ie-user-select: text; }
+
+/* line 36, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-icon-separator {
+  position: absolute;
+  top: 0px;
+  left: 0;
+  z-index: 0;
+  width: 2px;
+  height: 100%!important;
+  overflow: hidden; }
+
+/* line 49, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-plain .x-menu-icon-separator {
+  display: none; }
+
+/* line 54, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-focus {
+  display: block;
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px; }
+
+/* line 63, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item {
+  white-space: nowrap;
+  overflow: hidden;
+  z-index: 1; }
+  /* line 74, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+  .x-menu-item:last-child .x-menu-item-link {
+    -moz-border-radius-bottomleft: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -o-border-bottom-left-radius: 4px;
+    -ms-border-bottom-left-radius: 4px;
+    -khtml-border-bottom-left-radius: 4px;
+    border-bottom-left-radius: 4px;
+    -moz-border-radius-bottomright: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -o-border-bottom-right-radius: 4px;
+    -ms-border-bottom-right-radius: 4px;
+    -khtml-border-bottom-right-radius: 4px;
+    border-bottom-right-radius: 4px; }
+
+/* line 80, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item-cmp {
+  margin-bottom: 1px; }
+
+/* line 84, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item-link {
+  display: block;
+  padding: 3px 30px 3px 8px;
+  text-decoration: none !important;
+  line-height: 16px;
+  cursor: default; }
+
+/* line 97, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-opera .x-menu-item-link {
+  position: relative; }
+
+/* line 103, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item-icon {
+  width: 16px;
+  height: 16px;
+  position: absolute;
+  top: 5px;
+  left: 4px;
+  background: no-repeat center center; }
+
+/* line 112, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item-text {
+  font-size: 11px;
+  color: #0e4dad;
+  font-weight: bold; }
+
+/* line 119, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item-checked .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/neptune/menu/checked.gif'); }
+/* line 122, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item-checked .x-menu-group-icon {
+  background-image: url('../../resources/themes/images/neptune/menu/group-checked.gif'); }
+
+/* line 128, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item-unchecked .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/neptune/menu/unchecked.gif'); }
+/* line 131, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item-unchecked .x-menu-group-icon {
+  background-image: none; }
+
+/* line 136, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item-separator {
+  height: 2px;
+  background-color: transparent;
+  overflow: hidden; }
+
+/* line 144, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item-arrow {
+  position: absolute;
+  width: 12px;
+  height: 9px;
+  top: 9px;
+  right: 0px;
+  background: no-repeat center center;
+  background-image: url('../../resources/themes/images/neptune/menu/menu-parent.gif'); }
+
+/* line 158, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item-active {
+  cursor: pointer; }
+  /* line 161, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+  .x-menu-item-active .x-menu-item-link {
+    background: #a6ddff;
+    margin: 0px;
+    cursor: pointer; }
+  /* line 173, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+  .x-menu-item-active .x-menu-item-text {
+    color: null; }
+
+/* line 178, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+
+/* line 185, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+/* line 189, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-ie .x-menu-item-disabled .x-menu-item-text {
+  background-color: transparent; }
+/* line 196, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-strict .x-ie7m .x-ie .x-menu-icon-separator {
+  width: 1px; }
+/* line 200, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-strict .x-ie7m .x-ie .x-menu-item-separator {
+  height: 1px; }
+
+/* line 209, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-ie6 .x-menu-item-link,
+.x-ie7 .x-menu-item-link,
+.x-quirks .x-ie8 .x-menu-item-link {
+  padding-bottom: 0; }
+
+/* line 217, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-nlg .x-menu-item-active .x-menu-item-link {
+  background: #a6ddff repeat-x left top;
+  background-image: url('../../resources/themes/images/neptune/menu/menu-item-active-bg.gif'); }
+
+/* line 224, ../themes/stylesheets/neptune/default/widgets/_menu.scss */
+.x-menu-date-item {
+  border-color: #99BBE8; }
+
+/* line 4, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-panel .x-grid-body {
+  background: white;
+  border-bottom: 2px solid #D7DCE0; }
+/* line 15, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-panel .x-grid-header-ct-hidden {
+  visibility: hidden; }
+
+/* line 24, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-view {
+  overflow: hidden;
+  position: relative; }
+
+/* line 29, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-table {
+  table-layout: fixed;
+  border-collapse: separate; }
+
+/* line 36, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-autowidth-table table.x-grid-table {
+  table-layout: auto;
+  width: auto !important; }
+
+/* line 41, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row .x-grid-table {
+  border-collapse: collapse; }
+
+/* line 45, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-locked .x-grid-inner-locked {
+  border-width: 0 1px 0 0 !important;
+  border-style: solid; }
+
+/* line 51, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-header-ct {
+  border-bottom-color: white;
+  background-image: none;
+  background-color: white;
+  border-bottom: 2px solid #D7DCE0 !important; }
+
+/* line 69, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-panel .x-grid-header-ct {
+  border-bottom-width: 2px; }
+
+/* line 74, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-accordion-item .x-grid-header-ct {
+  border-width: 0 0 1px 0!important; }
+
+/* line 78, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-column-header {
+  padding: 0;
+  position: absolute;
+  overflow: hidden;
+  -webkit-border-image: url('../../resources/themes/images/neptune/grid/header-border.png') 1 1 1 1 stretch stretch;
+  border-right: 1px solid #eaeaea;
+  border-left: 0 none;
+  border-top: 0 none;
+  border-bottom: 0 none;
+  color: #606060;
+  font: normal 11px "Helvetica Neue", Arial, Verdana, sans-serif;
+  background-image: none;
+  background-color: white; }
+
+/* line 103, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-group-header {
+  padding: 0;
+  border-left-width: 0; }
+
+/* line 107, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-group-sub-header {
+  background: transparent;
+  -webkit-border-image: none;
+  border-top: 1px solid #eaeaea;
+  border-left-width: 0; }
+
+/* line 114, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-column-header-inner {
+  position: relative;
+  white-space: nowrap;
+  line-height: 22px;
+  padding: 4px 6px; }
+  /* line 121, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-column-header-inner .x-column-header-text {
+    white-space: nowrap; }
+
+/* line 126, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-column-header-sortable {
+  color: #0e4dad; }
+
+/* line 147, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-column-header-trigger {
+  display: none;
+  height: 100%;
+  width: 14px;
+  background: no-repeat left center;
+  position: absolute;
+  right: 0;
+  top: 0;
+  z-index: 2;
+  cursor: pointer; }
+
+/* line 165, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-column-header-over .x-column-header-trigger, .x-column-header-open .x-column-header-trigger {
+  display: block; }
+
+/* line 170, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-column-header-align-right {
+  text-align: right; }
+  /* line 173, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-column-header-align-right .x-column-header-text {
+    padding-right: 0.5ex;
+    margin-right: 6px; }
+
+/* line 178, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-column-header-align-center {
+  text-align: center; }
+
+/* line 181, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-column-header-align-left {
+  text-align: left; }
+
+/* line 186, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-column-header-sort-ASC .x-column-header-text {
+  padding-right: 16px;
+  background: no-repeat top right;
+  background-position-y: 1px;
+  background-image: url('../../resources/themes/images/neptune/grid/sort.png'); }
+
+/* line 192, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-column-header-sort-DESC .x-column-header-text {
+  padding-right: 16px;
+  background: no-repeat top right;
+  background-position-y: -47px;
+  background-image: url('../../resources/themes/images/neptune/grid/sort.png'); }
+
+/* line 200, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row {
+  height: 24px;
+  vertical-align: top;
+  padding: 0 1px 0 2px;
+  font: normal 11px "Helvetica Neue", Arial, Verdana, sans-serif;
+  background-color: white;
+  border-color: #f1f2f4;
+  border-style: solid;
+  border-width: 0; }
+  /* line 209, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-grid-row .x-grid-cell {
+    color: #22262a;
+    font: normal 11px "Helvetica Neue", Arial, Verdana, sans-serif;
+    background-color: white;
+    border-color: #f1f2f4;
+    border-style: solid;
+    border-width: 0; }
+
+/* line 228, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-grid-cell {
+  border-width: 0; }
+
+/* line 232, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-rowwrap-div {
+  border-width: 0;
+  border-color: #f1f2f4;
+  border-style: solid;
+  border-top-color: white;
+  overflow: hidden; }
+
+/* line 242, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-alt .x-grid-cell,
+.x-grid-row-alt .x-grid-rowwrap-div {
+  background-color: #f7f7f8; }
+
+/* line 247, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-over .x-grid-cell,
+.x-grid-row-over .x-grid-rowwrap-div {
+  border-color: transparent;
+  background-color: #a6ddff;
+  color: black; }
+  /* line 252, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-grid-row-over .x-grid-cell .x-grid-cell,
+  .x-grid-row-over .x-grid-rowwrap-div .x-grid-cell {
+    color: black; }
+
+/* line 258, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-focused .x-grid-cell,
+.x-grid-row-focused .x-grid-rowwrap-div {
+  border-color: #cdd2d7;
+  color: #0a0b0c;
+  background-color: #e1e4e7; }
+
+/* line 265, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-selected .x-grid-cell,
+.x-grid-row-selected .x-grid-rowwrap-div {
+  border-style: solid;
+  border-color: #188ae5;
+  color: white;
+  background-color: #0e4dad !important;
+  text-shadow: #0a387e 0 -1px 0; }
+
+/* line 275, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-rowwrap-div .x-grid-cell,
+.x-grid-rowwrap-div .x-grid-cell-inner {
+  border-width: 0;
+  background: transparent; }
+
+/* line 282, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-body-hidden {
+  display: none; }
+
+/* line 286, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-rowbody {
+  font: normal 11px "Helvetica Neue", Arial, Verdana, sans-serif;
+  padding: 4px; }
+  /* line 289, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-grid-rowbody p {
+    margin: 5px 5px 10px 5px; }
+
+/* line 295, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-cell {
+  overflow: hidden;
+  font: normal 11px "Helvetica Neue", Arial, Verdana, sans-serif; }
+
+/* line 301, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-cell-inner {
+  padding: 6px 8px; }
+
+/* line 307, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-grid-cell-inner {
+  line-height: 13px;
+  padding-bottom: 4px; }
+
+/* line 313, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-action-col-cell .x-grid-cell-inner {
+  line-height: 0;
+  padding: 2px; }
+
+/* line 318, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-action-col-cell .x-grid-cell-inner {
+  padding-top: 1px; }
+
+/* line 322, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row .x-grid-cell-special {
+  padding: 0;
+  border-right: 1px solid #e0e3e6; }
+
+/*
+    IE6-8 have issues with shrinking the TR to 0px (even w/line-height=0), so we
+    use an IE-specific trick to make the row disappear. We cannot do this on any
+    other browser, because it is not a non-standard thing to do and those other
+    browsers will do whacky things with it.
+*/
+/* line 338, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-ie6 .x-grid-header-row,
+.x-ie7 .x-grid-header-row,
+.x-quirks .x-ie8 .x-grid-header-row {
+  position: absolute; }
+
+/* line 343, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-over .x-grid-cell-special {
+  border-right: 1px solid #e0e3e6;
+  background-image: none;
+  background-color: #a6ddff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f3faff), color-stop(3%, #bae5ff), color-stop(100%, #92d5ff));
+  background-image: -webkit-linear-gradient(top, #f3faff, #bae5ff 3%, #92d5ff);
+  background-image: -moz-linear-gradient(top, #f3faff, #bae5ff 3%, #92d5ff);
+  background-image: -o-linear-gradient(top, #f3faff, #bae5ff 3%, #92d5ff);
+  background-image: -ms-linear-gradient(top, #f3faff, #bae5ff 3%, #92d5ff);
+  background-image: linear-gradient(top, #f3faff, #bae5ff 3%, #92d5ff); }
+
+/* line 348, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-selected .x-grid-cell-special {
+  border-right: 1px solid #0078d7;
+  background-image: none;
+  background-color: #0e4dad;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #1b6eed), color-stop(3%, #1055c0), color-stop(100%, #0c459a));
+  background-image: -webkit-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: -moz-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: -o-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: -ms-linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a);
+  background-image: linear-gradient(top, #1b6eed, #1055c0 3%, #0c459a); }
+
+/* line 354, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-dirty-cell {
+  background-image: url('../../resources/themes/images/neptune/grid/dirty.gif');
+  background-position: 0 0;
+  background-repeat: no-repeat; }
+
+/* line 366, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-nlg .x-grid-cell-special {
+  background-repeat: repeat-y;
+  background-position: top right; }
+/* line 372, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-nlg .x-grid-row .x-grid-cell-special,
+.x-nlg .x-grid-row-over .x-grid-cell-special {
+  background-image: url('../../resources/themes/images/neptune/grid/cell-special-bg.gif'); }
+/* line 378, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-nlg .x-grid-row-focused .x-grid-cell-special,
+.x-nlg .x-grid-row-selected .x-grid-cell-special {
+  background-image: url('../../resources/themes/images/neptune/grid/cell-special-selected-bg.gif'); }
+
+/* line 384, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-with-col-lines .x-grid-cell {
+  padding-right: 0;
+  border-right: 1px solid #e0e3e6; }
+
+/* line 391, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,
+.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner {
+  padding-left: 12px;
+  background-image: url('../../resources/themes/images/neptune/grid/property-cell-bg.gif');
+  background-repeat: no-repeat;
+  background-position: -16px 2px; }
+
+/* line 401, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-with-row-lines.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,
+.x-grid-with-row-lines.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner {
+  background-position: -16px 1px; }
+
+/* line 407, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-quirks .x-ie .x-grid-row .x-grid-property-name .x-grid-cell-inner {
+  background-position: -16px 2px; }
+
+/* line 427, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-view .x-grid-td-expander {
+  vertical-align: top; }
+
+/* line 432, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-td-expander {
+  background: repeat-y right transparent; }
+
+/* line 438, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-view .x-grid-td-expander .x-grid-cell-inner {
+  padding: 0 !important; }
+
+/* line 444, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-expander {
+  background-image: url('../../resources/themes/images/neptune/grid/group-collapse.gif');
+  background-color: transparent;
+  width: 9px;
+  height: 13px;
+  margin-left: 3px;
+  background-repeat: no-repeat;
+  background-position: 0 -2px; }
+
+/* line 455, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-collapsed .x-grid-row-expander {
+  background-image: url('../../resources/themes/images/neptune/grid/group-expand.gif'); }
+
+/* line 460, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-resize-marker {
+  position: absolute;
+  z-index: 5;
+  top: 0;
+  width: 1px;
+  background-color: #0f0f0f; }
+
+/* line 470, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.col-move-top,
+.col-move-bottom {
+  width: 9px;
+  height: 9px;
+  position: absolute;
+  top: 0;
+  line-height: 0;
+  font-size: 0;
+  overflow: hidden;
+  z-index: 20000;
+  background: no-repeat left top transparent; }
+
+/* line 482, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.col-move-top {
+  background-image: url('../../resources/themes/images/neptune/grid/col-move-top.gif'); }
+
+/* line 486, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.col-move-bottom {
+  background-image: url('../../resources/themes/images/neptune/grid/col-move-bottom.gif'); }
+
+/* line 491, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-tbar-page-number {
+  width: 30px; }
+
+/* line 502, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-group-hd {
+  height: 24px; }
+  /* line 506, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-grid-group-hd .x-grid-cell-inner {
+    background: #e0e3e6;
+    cursor: pointer;
+    padding: 4px 8px 6px 8px; }
+
+/* line 519, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-group-title {
+  color: #090a0b;
+  font: bold 12px "Helvetica Neue", Arial, Verdana, sans-serif; }
+
+/* line 533, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-group-collapsed .x-grid-group-body {
+  display: none; }
+
+/* line 537, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-group-collapsed .x-grid-group-title {
+  background-image: url('../../resources/themes/images/neptune/grid/group-expand.gif'); }
+
+/* line 541, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-group-by-icon {
+  background-image: url('../../resources/themes/images/neptune/grid/group-by.gif'); }
+
+/* line 545, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-show-groups-icon {
+  background-image: url('../../resources/themes/images/neptune/grid/group-by.gif'); }
+
+/* line 549, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-column-header-checkbox .x-column-header-inner {
+  padding: 0; }
+
+/* line 553, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-cell-special .x-grid-cell-inner {
+  padding-left: 4px;
+  padding-right: 4px; }
+
+/* line 559, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-checker,
+.x-column-header-checkbox .x-column-header-text {
+  height: 14px;
+  width: 14px;
+  line-height: 0;
+  background-image: url('../../resources/themes/images/neptune/grid/unchecked.gif');
+  background-position: -1px -1px;
+  background-repeat: no-repeat;
+  background-color: transparent; }
+
+/* line 571, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-column-header-checkbox .x-column-header-text {
+  display: block;
+  margin: 4px 5px; }
+
+/* IE6, IE7, and all IE Quirks mode need line-height to be the same as checkbox height or the header/row height will be too tall */
+/* line 580, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-quirks .x-ie .x-grid-row-checker,
+.x-quirks .x-ie .x-column-header-checkbox .x-column-header-text, .x-ie7m .x-grid-row-checker, .x-ie7m .x-column-header-checkbox .x-column-header-text {
+  line-height: 14px; }
+
+/* line 586, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-hd-checker-on .x-column-header-text {
+  background-image: url('../../resources/themes/images/neptune/grid/checked.gif'); }
+
+/* line 590, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-cell-row-checker .x-grid-cell-inner {
+  padding-top: 4px;
+  padding-bottom: 2px;
+  line-height: 18px; }
+
+/* line 595, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-grid-cell-row-checker .x-grid-cell-inner {
+  padding-top: 3px; }
+
+/* line 598, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-checker {
+  margin-left: 1px;
+  background-position: 50% -2px; }
+
+/* line 605, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-selected .x-grid-row-checker,
+.x-grid-row-checked .x-grid-row-checker {
+  background-image: url('../../resources/themes/images/neptune/grid/checked.gif'); }
+
+/* line 610, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-tbar-page-first {
+  background-image: url('../../resources/themes/images/neptune/grid/page-first.gif') !important; }
+
+/* line 614, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-tbar-loading {
+  background-image: url('../../resources/themes/images/neptune/grid/refresh.gif') !important; }
+
+/* line 618, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-tbar-page-last {
+  background-image: url('../../resources/themes/images/neptune/grid/page-last.gif') !important; }
+
+/* line 622, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-tbar-page-next {
+  background-image: url('../../resources/themes/images/neptune/grid/page-next.gif') !important; }
+
+/* line 626, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-tbar-page-prev {
+  background-image: url('../../resources/themes/images/neptune/grid/page-prev.gif') !important; }
+
+/* line 631, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-loading {
+  background-image: url('../../resources/themes/images/neptune/grid/refresh-disabled.gif') !important; }
+/* line 635, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-first {
+  background-image: url('../../resources/themes/images/neptune/grid/page-first-disabled.gif') !important; }
+/* line 639, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-last {
+  background-image: url('../../resources/themes/images/neptune/grid/page-last-disabled.gif') !important; }
+/* line 643, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-next {
+  background-image: url('../../resources/themes/images/neptune/grid/page-next-disabled.gif') !important; }
+/* line 647, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-prev {
+  background-image: url('../../resources/themes/images/neptune/grid/page-prev-disabled.gif') !important; }
+
+/* line 653, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-hmenu-sort-asc .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/neptune/grid/hmenu-asc.gif'); }
+
+/* line 657, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-hmenu-sort-desc .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/neptune/grid/hmenu-desc.gif'); }
+
+/* line 661, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-hmenu-lock .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/neptune/grid/hmenu-lock.gif'); }
+
+/* line 665, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-hmenu-unlock .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/neptune/grid/hmenu-unlock.gif'); }
+
+/* line 669, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-group-by-icon {
+  background-image: url('../../resources/themes/images/neptune/grid/group-by.gif'); }
+
+/* line 673, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-cols-icon .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/neptune/grid/columns.gif'); }
+
+/* line 677, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-show-groups-icon {
+  background-image: url('../../resources/themes/images/neptune/grid/group-by.gif'); }
+
+/* line 682, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-drop-indicator {
+  position: absolute;
+  height: 1px;
+  line-height: 0px;
+  background-color: #77BC71;
+  overflow: visible; }
+  /* line 689, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-grid-drop-indicator .x-grid-drop-indicator-left {
+    position: absolute;
+    top: -8px;
+    left: -12px;
+    background-image: url('../../resources/themes/images/neptune/grid/dd-insert-arrow-right.png');
+    height: 16px;
+    width: 16px; }
+  /* line 698, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-grid-drop-indicator .x-grid-drop-indicator-right {
+    position: absolute;
+    top: -8px;
+    right: -11px;
+    background-image: url('../../resources/themes/images/neptune/grid/dd-insert-arrow-left.png');
+    height: 16px;
+    width: 16px; }
+
+/* line 709, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-ie6 .x-grid-drop-indicator-left {
+  background-image: url('../../resources/themes/images/neptune/grid/dd-insert-arrow-right.gif'); }
+/* line 713, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-ie6 .x-grid-drop-indicator-right {
+  background-image: url('../../resources/themes/images/neptune/grid/dd-insert-arrow-left.gif'); }
+
+/* line 721, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-editor .x-form-text {
+  padding: 0 4px; }
+/* line 724, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-editor .x-form-cb-wrap {
+  padding-top: 3px; }
+
+/* line 730, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-editor {
+  position: absolute !important;
+  z-index: 1;
+  overflow: visible !important; }
+  /* line 736, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-text {
+    padding: 0 2px; }
+  /* line 739, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-cb-wrap {
+    padding-top: 2px; }
+  /* line 742, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-display-field {
+    font: normal 11px/19px "Helvetica Neue", Arial, Verdana, sans-serif;
+    padding-top: 0;
+    padding-left: 2px; }
+  /* line 748, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-panel-body {
+    background-color: #2696f6;
+    border-top: 1px solid #167cce !important;
+    border-bottom: 1px solid #167cce !important; }
+
+/* line 758, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-editor .x-form-cb-wrap, .x-grid-row-editor .x-form-cb-wrap {
+  text-align: center; }
+/* line 761, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-editor .x-form-trigger, .x-grid-row-editor .x-form-trigger {
+  height: 24px; }
+/* line 765, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-editor .x-form-trigger-wrap .x-form-spinner-up, .x-grid-editor .x-form-trigger-wrap .x-form-spinner-down, .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-up, .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url('../../resources/themes/images/neptune/form/spinner-small.gif');
+  height: 10px !important; }
+
+/* line 773, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid .x-grid-editor .x-form-text, .x-grid .x-grid-row-editor .x-form-text {
+  font: normal 11px/19px "Helvetica Neue", Arial, Verdana, sans-serif;
+  height: 22px; }
+
+/* line 781, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-border-box .x-grid-editor .x-form-trigger,
+.x-border-box .x-grid-row-editor .x-form-trigger {
+  height: 24px; }
+/* line 784, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-border-box .x-grid-editor .x-form-text,
+.x-border-box .x-grid-row-editor .x-form-text {
+  height: 24px;
+  padding-bottom: 1px; }
+
+/* line 792, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-ie .x-grid-editor .x-form-text {
+  padding-left: 5px; }
+/* line 795, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-ie .x-grid-row-editor .x-form-text {
+  padding-left: 3px; }
+
+/* line 801, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-ie8m .x-grid-editor .x-form-text,
+.x-ie8m .x-grid-row-editor .x-form-text {
+  padding-top: 1px; }
+
+/* line 808, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-ie6 .x-grid-editor .x-form-text,
+.x-ie6 .x-grid-row-editor .x-form-text,
+.x-strict .x-ie7 .x-grid-editor .x-form-text,
+.x-strict .x-ie7 .x-grid-row-editor .x-form-text {
+  height: 21px; }
+
+/* line 814, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-quirks .x-ie9 .x-grid-editor .x-form-text, .x-quirks .x-ie9 .x-grid-row-editor .x-form-text {
+  line-height: 21px; }
+
+/* line 823, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-opera .x-grid-editor .x-form-text {
+  padding-left: 5px; }
+/* line 826, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-opera .x-grid-row-editor .x-form-text {
+  padding-left: 3px; }
+
+/* line 837, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons {
+  background-color: #2696f6;
+  position: absolute;
+  bottom: -31px;
+  padding: 4px;
+  height: 32px; }
+  /* line 844, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+  .x-strict .x-ie7m .x-grid-row-editor-buttons {
+    width: 192px;
+    height: 24px; }
+
+/* line 854, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-ml,
+.x-grid-row-editor-buttons-mr,
+.x-grid-row-editor-buttons-bl,
+.x-grid-row-editor-buttons-br,
+.x-grid-row-editor-buttons-bc {
+  position: absolute;
+  overflow: hidden; }
+
+/* line 860, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-bl,
+.x-grid-row-editor-buttons-br {
+  width: 4px;
+  height: 4px;
+  bottom: 0px;
+  background-image: url('../../resources/themes/images/neptune/panel/panel-default-framed-corners.gif'); }
+
+/* line 866, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-bl {
+  left: 0px;
+  background-position: 0px -16px; }
+
+/* line 870, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-br {
+  right: 0px;
+  background-position: 0px -20px; }
+
+/* line 874, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-bc {
+  position: absolute;
+  left: 4px;
+  bottom: 0px;
+  width: 192px;
+  height: 1px;
+  background-color: #167cce; }
+
+/* line 883, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-ml,
+.x-grid-row-editor-buttons-mr {
+  height: 27px;
+  width: 1px;
+  top: 1px;
+  background-color: #167cce; }
+
+/* line 889, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-ml {
+  left: 0px; }
+
+/* line 892, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-mr {
+  background-position: 0px -20px;
+  right: 0px; }
+
+/* line 898, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-editor-errors ul {
+  margin-left: 5px; }
+/* line 901, ../themes/stylesheets/neptune/default/widgets/_grid.scss */
+.x-grid-row-editor-errors li {
+  list-style: disc;
+  margin-left: 15px; }
+
+/* line 11, ../themes/stylesheets/neptune/default/widgets/form/_all.scss */
+.x-form-item {
+  vertical-align: top;
+  margin-bottom: 5px;
+  table-layout: fixed; }
+
+/* line 18, ../themes/stylesheets/neptune/default/widgets/form/_all.scss */
+td.x-form-item-pad {
+  height: 5px; }
+
+/* line 23, ../themes/stylesheets/neptune/default/widgets/form/_all.scss */
+.x-editor .x-form-item-body {
+  padding-bottom: 0; }
+
+/* line 27, ../themes/stylesheets/neptune/default/widgets/form/_all.scss */
+.x-form-item-label {
+  display: block;
+  padding: 3px 5px 0 0;
+  font-size: 12px; }
+
+/* line 34, ../themes/stylesheets/neptune/default/widgets/form/_all.scss */
+.x-form-item-label-left {
+  text-align: right; }
+
+/* line 38, ../themes/stylesheets/neptune/default/widgets/form/_all.scss */
+.x-form-item-label-top {
+  padding: 0; }
+
+/* line 42, ../themes/stylesheets/neptune/default/widgets/form/_all.scss */
+.x-form-item-label-right {
+  text-align: right; }
+
+/* line 46, ../themes/stylesheets/neptune/default/widgets/form/_all.scss */
+.x-form-invalid-under {
+  padding: 2px 2px 2px 20px;
+  color: #a61120;
+  font: normal 11px "Helvetica Neue", Arial, Verdana, sans-serif;
+  line-height: 16px;
+  background: no-repeat 0 2px;
+  background-image: url('../../resources/themes/images/neptune/invalid.gif'); }
+
+/* line 57, ../themes/stylesheets/neptune/default/widgets/form/_all.scss */
+.x-external-error-icon {
+  position: absolute;
+  right: 19px;
+  height: 23px; }
+
+/* line 63, ../themes/stylesheets/neptune/default/widgets/form/_all.scss */
+.x-form-invalid-icon {
+  position: relative;
+  width: 23px;
+  overflow: hidden; }
+  /* line 67, ../themes/stylesheets/neptune/default/widgets/form/_all.scss */
+  .x-form-invalid-icon ul {
+    -moz-background-clip: text;
+    -webkit-background-clip: text;
+    -o-background-clip: text;
+    -ms-background-clip: text;
+    -khtml-background-clip: text;
+    background-clip: text;
+    overflow: visible;
+    text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+    position: relative;
+    height: 21px;
+    line-height: 21px;
+    display: block;
+    margin-left: 3px;
+    width: 20px; }
+    /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+    .x-form-invalid-icon ul:after, .x-form-invalid-icon ul:before {
+      font-size: 21px;
+      content: "!";
+      background-image: none;
+      background-color: #fc0d1b;
+      background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fd5962), color-stop(3%, #fc212e), color-stop(100%, #f20311));
+      background-image: -webkit-linear-gradient(top, #fd5962, #fc212e 3%, #f20311);
+      background-image: -moz-linear-gradient(top, #fd5962, #fc212e 3%, #f20311);
+      background-image: -o-linear-gradient(top, #fd5962, #fc212e 3%, #f20311);
+      background-image: -ms-linear-gradient(top, #fd5962, #fc212e 3%, #f20311);
+      background-image: linear-gradient(top, #fd5962, #fc212e 3%, #f20311); }
+    /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+    .x-form-invalid-icon ul:before {
+      -moz-background-clip: padding;
+      -webkit-background-clip: padding;
+      -o-background-clip: padding-box;
+      -ms-background-clip: padding-box;
+      -khtml-background-clip: padding-box;
+      background-clip: padding-box;
+      background: none; }
+    /* line 72, ../themes/stylesheets/neptune/default/widgets/form/_all.scss */
+    .x-form-invalid-icon ul li {
+      /* prevent inner elements from interfering with QuickTip hovering */
+      display: none; }
+
+/* line 3, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-form-field,
+.x-form-display-field {
+  float: left;
+  margin: 0 0 0 0;
+  font: normal 12px "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: #22262a; }
+
+/* line 13, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-form-text,
+textarea.x-form-field {
+  padding: 1px 3px;
+  background: repeat-x 0 0;
+  border: 1px solid;
+  background-color: white;
+  /*        @if $form-field-background-image {
+              background-image: theme-background-image($theme-name, $form-field-background-image);
+          }*/
+  border-color: #BEC0C0 #E0E1E2 #E0E1E2 #E0E1E2; }
+
+/* line 32, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-form-text {
+  height: 19px;
+  line-height: 16px;
+  vertical-align: middle; }
+
+/* line 41, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-ie6 .x-form-text,
+.x-ie7 .x-form-text,
+.x-ie8 .x-form-text {
+  line-height: 16px; }
+
+/* line 46, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-border-box .x-form-text {
+  height: 23px; }
+
+/* line 50, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+textarea.x-form-field {
+  color: #22262a;
+  overflow: auto;
+  height: auto;
+  line-height: normal;
+  background: repeat-x 0 0;
+  background-color: white;
+  /*        @if $form-field-background-image {
+              background-image: theme-background-image($theme-name, $form-field-background-image);
+          }*/
+  resize: none; }
+
+/* line 65, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-border-box textarea.x-form-field {
+  height: auto; }
+
+/* line 70, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-safari.x-mac textarea.x-form-field {
+  margin-bottom: -2px; }
+
+/* line 76, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-form-focus,
+textarea.x-form-focus {
+  border-color: #C0BCA7 #E7E3C8 #E7E3C8 #E7E3C8;
+  background: #FFFBE6; }
+
+/* line 82, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-form-invalid-field,
+textarea.x-form-invalid-field {
+  background-color: #ffede9;
+  background-image: url('../../resources/themes/images/neptune/null');
+  background-repeat: null;
+  background-position: null;
+  border-color: #DFCCC5;
+  border-top-color: #BEAAA3; }
+
+/* line 93, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-form-item {
+  font: normal 12px "Helvetica Neue", Arial, Verdana, sans-serif;
+  text-shadow: white 0 1px 0; }
+
+/* line 99, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-form-empty-field, textarea.x-form-empty-field {
+  color: #b8bfc6; }
+
+/* line 104, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-webkit .x-form-empty-field {
+  line-height: 16px; }
+
+/* line 109, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-form-display-field {
+  padding-top: 3px; }
+
+/* line 114, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-ie .x-form-file {
+  height: 24px;
+  line-height: 18px;
+  vertical-align: middle; }
+
+/* line 123, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-field-default-toolbar .x-form-text {
+  height: 18px; }
+
+/* line 127, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-border-box .x-field-default-toolbar .x-form-text {
+  height: 22px; }
+
+/* line 131, ../themes/stylesheets/neptune/default/widgets/form/_field.scss */
+.x-field-default-toolbar .x-form-item-label-left {
+  padding-left: 4px; }
+
+/* line 2, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+.x-fieldset {
+  border: 1px solid #b6bdc4;
+  border-color: #BEC0C0 #E0E1E2 #E0E1E2 #E0E1E2;
+  background: #fafafa;
+  padding: 10px;
+  margin-bottom: 10px;
+  display: block;
+  /* preserve margins in IE */
+  position: relative; }
+
+/* line 15, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+.x-ie .x-fieldset {
+  padding-top: 0;
+  padding-bottom: 10px; }
+
+/* line 20, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+.x-fieldset-header {
+  font: 12px bold "Helvetica Neue", Arial, Verdana, sans-serif;
+  color: gray;
+  padding: 0 5px; }
+  /* line 26, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-fieldset-header-text {
+    float: left; }
+  /* line 31, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-form-item,
+  .x-fieldset-header .x-tool {
+    float: left;
+    margin: 0 3px 0 0; }
+  /* line 36, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-form-cb-wrap {
+    padding: 0; }
+
+/* line 41, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+.x-webkit .x-fieldset-header {
+  padding-top: 1px; }
+
+/* line 49, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+.x-quirks .x-ie .x-fieldset-header,
+.x-ie6 .x-fieldset-header,
+.x-ie7 .x-fieldset-header,
+.x-ie8 .x-fieldset-header {
+  padding: 0; }
+
+/* line 53, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+.x-ie9 .x-fieldset-header {
+  padding-top: 1px; }
+
+/* line 59, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+.x-fieldset-collapsed .x-fieldset-body {
+  display: none; }
+
+/* line 64, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+.x-fieldset-collapsed {
+  padding-bottom: 0 !important;
+  border-width: 1px 1px 0 1px !important;
+  border-left-color: transparent !important;
+  border-right-color: transparent !important; }
+
+/* line 73, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+.x-ie6 .x-fieldset-collapsed {
+  border-width: 1px 0 0 0 !important;
+  padding-bottom: 0 !important;
+  margin-left: 1px;
+  margin-right: 1px; }
+
+/* IE legend positioning bug */
+/* line 88, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+.x-ie .x-fieldset-noborder legend {
+  position: relative;
+  margin-bottom: 23px; }
+
+/* line 94, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+.x-ie .x-fieldset-noborder legend span {
+  position: absolute;
+  left: 16px; }
+
+/* line 100, ../themes/stylesheets/neptune/default/widgets/form/_fieldset.scss */
+.x-fieldset, .x-fieldset-bwrap, .x-fieldset-body {
+  overflow: hidden; }
+
+/* line 4, ../themes/stylesheets/neptune/default/widgets/form/_file.scss */
+.x-form-file-wrap .x-form-text {
+  color: #777; }
+/* line 8, ../themes/stylesheets/neptune/default/widgets/form/_file.scss */
+.x-form-file-wrap .x-form-file-btn {
+  overflow: hidden;
+  float: left; }
+/* line 13, ../themes/stylesheets/neptune/default/widgets/form/_file.scss */
+.x-form-file-wrap .x-form-file-input {
+  position: absolute;
+  top: -4px;
+  right: -2px;
+  height: 31px;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  /* Yes, there's actually a good reason for this...
+   * If the configured buttonText is set to something longer than the default,
+   * then it will quickly exceed the width of the hidden file input's "Browse..."
+   * button, so part of the custom button's clickable area will be covered by
+   * the hidden file input's text box instead. This results in a text-selection
+   * mouse cursor over that part of the button, at least in Firefox, which is
+   * confusing to a user. Giving the hidden file input a huge font-size makes
+   * the native button part very large so it will cover the whole clickable area.
+   */
+  font-size: 100px; }
+
+/* line 2, ../themes/stylesheets/neptune/default/widgets/form/_checkbox.scss */
+.x-form-cb-wrap {
+  padding-top: 3px; }
+
+/* line 7, ../themes/stylesheets/neptune/default/widgets/form/_checkbox.scss */
+.x-form-checkbox,
+.x-form-radio {
+  float: none;
+  position: relative;
+  top: -2px;
+  width: 17px;
+  height: 17px;
+  background: no-repeat;
+  background-image: url('../../resources/themes/images/neptune/checkbox.gif');
+  overflow: hidden;
+  padding: 0;
+  border: 0; }
+  /* line 22, ../themes/stylesheets/neptune/default/widgets/form/_checkbox.scss */
+  .x-form-checkbox::-moz-focus-inner,
+  .x-form-radio::-moz-focus-inner {
+    padding: 0;
+    border: 0; }
+
+/* Hack for IE; causes alignment problem in IE9 standards mode so exclude that */
+/* line 31, ../themes/stylesheets/neptune/default/widgets/form/_checkbox.scss */
+.x-nbr.x-ie .x-form-checkbox,
+.x-nbr.x-ie .x-form-radio {
+  font-size: 0; }
+
+/* line 38, ../themes/stylesheets/neptune/default/widgets/form/_checkbox.scss */
+.x-form-cb-checked .x-form-checkbox {
+  background-position: 0 -17px; }
+
+/* Radios */
+/* line 44, ../themes/stylesheets/neptune/default/widgets/form/_checkbox.scss */
+.x-form-radio {
+  background-image: url('../../resources/themes/images/neptune/radio.gif');
+  width: 19px;
+  height: 19px; }
+
+/* line 52, ../themes/stylesheets/neptune/default/widgets/form/_checkbox.scss */
+.x-form-cb-checked .x-form-radio {
+  background-position: 0 -19px; }
+
+/* boxLabel */
+/* line 58, ../themes/stylesheets/neptune/default/widgets/form/_checkbox.scss */
+.x-form-cb-label-before {
+  margin-right: 4px; }
+
+/* line 61, ../themes/stylesheets/neptune/default/widgets/form/_checkbox.scss */
+.x-form-cb-label-after {
+  margin-left: 4px; }
+
+/* line 8, ../themes/stylesheets/neptune/default/widgets/form/_checkboxgroup.scss */
+.x-form-invalid .x-form-checkboxgroup-body {
+  border: 1px solid #c30;
+  background: transparent repeat-x bottom;
+  background-image: url('../../resources/themes/images/neptune/grid/invalid_line.gif');
+  padding: 0 3px 2px 3px; }
+
+/* line 16, ../themes/stylesheets/neptune/default/widgets/form/_checkboxgroup.scss */
+.x-check-group-alt {
+  background: #217dd6;
+  border-top: 1px dotted #36497e;
+  border-bottom: 1px dotted #36497e; }
+
+/* line 23, ../themes/stylesheets/neptune/default/widgets/form/_checkboxgroup.scss */
+.x-form-check-group-label {
+  color: #333;
+  border-bottom: 1px solid #333;
+  margin: 0 30px 5px 0;
+  padding: 2px; }
+
+/* line 2, ../themes/stylesheets/neptune/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap {
+  vertical-align: top; }
+
+/* line 6, ../themes/stylesheets/neptune/default/widgets/form/_triggerfield.scss */
+.x-form-trigger {
+  width: 19px;
+  height: 22px;
+  cursor: pointer;
+  margin-left: 2px; }
+  /* line 14, ../themes/stylesheets/neptune/default/widgets/form/_triggerfield.scss */
+  .x-form-trigger:after {
+    position: absolute;
+    top: 5px;
+    left: 6px;
+    width: 11px;
+    height: 11px;
+    content: "";
+    background: url('../../resources/themes/images/neptune/triggerfield.png') no-repeat; }
+
+/* line 26, ../themes/stylesheets/neptune/default/widgets/form/_triggerfield.scss */
+.x-trigger-cell {
+  position: relative; }
+
+/* line 30, ../themes/stylesheets/neptune/default/widgets/form/_triggerfield.scss */
+.x-form-date-trigger:after {
+  background-position: -11px 0; }
+
+/* line 34, ../themes/stylesheets/neptune/default/widgets/form/_triggerfield.scss */
+.x-form-spinner-down:after {
+  background-position: -22px 0; }
+
+/* line 38, ../themes/stylesheets/neptune/default/widgets/form/_triggerfield.scss */
+.x-form-spinner-up:after {
+  background-position: -33px 0; }
+
+/* line 42, ../themes/stylesheets/neptune/default/widgets/form/_triggerfield.scss */
+.x-form-search-trigger:after {
+  background-position: -44px 0; }
+
+/* line 46, ../themes/stylesheets/neptune/default/widgets/form/_triggerfield.scss */
+.x-form-clear-trigger:after {
+  background-position: -55px 0; }
+
+/* line 51, ../themes/stylesheets/neptune/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-over,
+.x-pickerfield-open .x-form-trigger {
+  -moz-border-radius: 2px;
+  -webkit-border-radius: 2px;
+  -o-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -khtml-border-radius: 2px;
+  border-radius: 2px;
+  border: 1px solid #C7DBEE;
+  background-image: none;
+  background-color: #e2f0fc; }
+
+/* line 5, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-wrap .x-toolbar {
+  border-top-width: 0;
+  border-left-width: 0;
+  border-right-width: 0; }
+/* line 15, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-wrap iframe {
+  padding: 1px 3px 1px 3px;
+  background: repeat-x 0 0;
+  border: 1px solid;
+  background-color: white;
+  /*        @if $form-field-background-image {
+              background-image: theme-background-image($theme-name, $form-field-background-image);
+          }*/
+  border-color: #BEC0C0 #E0E1E2 #E0E1E2 #E0E1E2; }
+
+/* line 66, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb span.x-btn-icon {
+  background-image: url('../../resources/themes/images/neptune/WYSIWYG.png'); }
+/* line 71, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-btn-over span.x-btn-icon {
+  background-position-y: -16px; }
+/* line 77, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-btn-pressed span.x-btn-icon {
+  background-position-y: -48px; }
+
+/* line 83, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-btn-text {
+  background: transparent no-repeat; }
+
+/* line 86, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-bold,
+.x-menu-item img.x-edit-bold {
+  background-position: 0 0; }
+
+/* line 89, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-italic,
+.x-menu-item img.x-edit-italic {
+  background-position: -16px 0; }
+
+/* line 92, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-underline,
+.x-menu-item img.x-edit-underline {
+  background-position: -32px 0; }
+
+/* line 95, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-forecolor,
+.x-menu-item img.x-edit-forecolor {
+  background-position: -160px 0; }
+
+/* line 98, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-backcolor,
+.x-menu-item img.x-edit-backcolor {
+  background-position: -176px 0; }
+
+/* line 101, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-justifyleft,
+.x-menu-item img.x-edit-justifyleft {
+  background-position: -80px 0; }
+
+/* line 104, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-justifycenter,
+.x-menu-item img.x-edit-justifycenter {
+  background-position: -96px 0; }
+
+/* line 107, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-justifyright,
+.x-menu-item img.x-edit-justifyright {
+  background-position: -112px 0; }
+
+/* line 110, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-insertorderedlist,
+.x-menu-item img.x-edit-insertorderedlist {
+  background-position: -144px 0; }
+
+/* line 113, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-insertunorderedlist,
+.x-menu-item img.x-edit-insertunorderedlist {
+  background-position: -160px 0; }
+
+/* line 116, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-increasefontsize,
+.x-menu-item img.x-edit-increasefontsize {
+  background-position: -48px 0; }
+
+/* line 119, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-decreasefontsize,
+.x-menu-item img.x-edit-decreasefontsize {
+  background-position: -64px 0; }
+
+/* line 122, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-sourceedit,
+.x-menu-item img.x-edit-sourceedit {
+  background-position: -176px 0; }
+
+/* line 125, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-createlink,
+.x-menu-item img.x-edit-createlink {
+  background-position: -128px 0; }
+
+/* line 128, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tip .x-tip-bd .x-tip-bd-inner {
+  padding: 5px;
+  padding-bottom: 1px; }
+
+/* line 134, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-toolbar {
+  position: static !important; }
+/* line 137, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-font-select {
+  font-size: 11px; }
+
+/* line 142, ../themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss */
+.x-html-editor-wrap textarea {
+  border: 0;
+  padding: 3px 2px;
+  overflow: auto; }
+
+/* line 7, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel,
+.x-plain {
+  overflow: hidden;
+  position: relative; }
+
+/* line 31, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-ie8 td.x-frame-mc {
+  vertical-align: top; }
+
+/* line 37, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  border: 0 solid #a8b0b8;
+  background-color: white;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0;
+  -moz-background-clip: padding;
+  -webkit-background-clip: padding;
+  -o-background-clip: padding-box;
+  -ms-background-clip: padding-box;
+  -khtml-background-clip: padding-box;
+  background-clip: padding-box; }
+
+/* line 46, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-default.x-tab-panel {
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0; }
+
+/* line 51, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header {
+  padding: 8px 10px 8px 10px;
+  border: 0 solid #e0e3e6;
+  border-bottom-width: 0; }
+  /* line 57, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+  .x-panel-header .x-panel-header-body,
+  .x-panel-header .x-panel-header-body > .x-box-inner {
+    overflow: visible; }
+
+/* line 63, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-icon,
+.x-window-header-icon {
+  width: 16px;
+  height: 16px;
+  background-repeat: no-repeat;
+  background-position: 0 0;
+  vertical-align: middle;
+  margin-right: 4px;
+  margin-top: -1px;
+  margin-bottom: -1px; }
+
+/* line 77, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-draggable,
+.x-panel-header-draggable .x-panel-header-text,
+.x-window-header-draggable,
+.x-window-header-draggable .x-window-header-text {
+  cursor: move; }
+
+/* line 83, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-ghost, .x-window-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+  opacity: 0.65;
+  cursor: move; }
+
+/* line 89, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-horizontal .x-panel-header-body, .x-panel-header-horizontal .x-window-header-body, .x-panel-header-horizontal .x-btn-group-header-body, .x-window-header-horizontal .x-panel-header-body, .x-window-header-horizontal .x-window-header-body, .x-window-header-horizontal .x-btn-group-header-body, .x-btn-group-header-horizontal .x-panel-header-body, .x-btn-group-header-horizontal .x-window-header-body, .x-btn-group-header-horizontal .x-btn-group-header-body {
+  width: 100%; }
+
+/* line 95, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-vertical .x-panel-header-body, .x-panel-header-vertical .x-window-header-body, .x-panel-header-vertical .x-btn-group-header-body, .x-window-header-vertical .x-panel-header-body, .x-window-header-vertical .x-window-header-body, .x-window-header-vertical .x-btn-group-header-body, .x-btn-group-header-vertical .x-panel-header-body, .x-btn-group-header-vertical .x-window-header-body, .x-btn-group-header-vertical .x-btn-group-header-body {
+  height: 100%; }
+
+/* line 110, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-left .x-vml-base,
+.x-panel-header-right .x-vml-base {
+  left: -3px !important; }
+
+/* line 116, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-body {
+  overflow: hidden;
+  position: relative;
+  -moz-background-clip: padding;
+  -webkit-background-clip: padding;
+  -o-background-clip: padding-box;
+  -ms-background-clip: padding-box;
+  -khtml-background-clip: padding-box;
+  background-clip: padding-box; }
+
+/* line 124, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-default-framed {
+  padding: 4px; }
+  /* line 126, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+  .x-panel-default-framed .x-panel-body {
+    -moz-border-radius: 0;
+    -webkit-border-radius: 0;
+    -o-border-radius: 0;
+    -ms-border-radius: 0;
+    -khtml-border-radius: 0;
+    border-radius: 0;
+    border: 0; }
+
+/* line 133, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-hasheader-top,
+.x-window-hasheader-top {
+  padding-top: 0 !important; }
+
+/* line 138, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-hasheader-bottom,
+.x-window-hasheader-bottom {
+  padding-bottom: 0 !important; }
+
+/* line 143, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-hasheader-left,
+.x-window-hasheader-left {
+  padding-left: 0 !important; }
+
+/* line 148, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-hasheader-right,
+.x-window-hasheader-right {
+  padding-right: 0 !important; }
+
+/* line 154, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-vertical .x-surface {
+  margin-top: 2px; }
+
+/* line 158, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-plain-vertical .x-surface {
+  margin-top: 0; }
+
+/* line 179, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-vertical .x-frame-mc {
+  background-repeat: repeat-y; }
+
+/* line 280, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-default {
+  border-color: #167cce;
+  background: #167cce;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0; }
+  /* line 289, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+  .x-panel-default .x-panel-header-collapsed-border-top {
+    border-bottom-width: 0 !important; }
+  /* line 292, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+  .x-panel-default .x-panel-header-collapsed-border-right {
+    border-left-width: 0 !important; }
+  /* line 295, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+  .x-panel-default .x-panel-header-collapsed-border-bottom {
+    border-top-width: 0 !important; }
+  /* line 298, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+  .x-panel-default .x-panel-header-collapsed-border-left {
+    border-right-width: 0 !important; }
+
+/* line 305, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-default {
+  border-color: #a8b0b8;
+  border-width: 0;
+  border-style: solid;
+  border-width: 0;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #188ae5), color-stop(100%, #167cce));
+  background-image: -webkit-linear-gradient(top, #188ae5, #167cce 100%);
+  background-image: -moz-linear-gradient(top, #188ae5, #167cce 100%);
+  background-image: -o-linear-gradient(top, #188ae5, #167cce 100%);
+  background-image: -ms-linear-gradient(top, #188ae5, #167cce 100%);
+  background-image: linear-gradient(top, #188ae5, #167cce 100%); }
+  /* line 306, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+  .x-panel-header-default .x-panel-header-text-container {
+    font-size: 15px;
+    line-height: 1.2em; }
+
+/* line 361, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-default .x-panel-header-text-container {
+  color: white;
+  font-size: 15px;
+  font-weight: normal;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif; }
+
+/* line 369, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-body-default {
+  background: white;
+  margin: 0;
+  color: #333333; }
+
+/* line 379, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-collapsed .x-window-header-default,
+.x-panel-collapsed .x-panel-header-default {
+  border-color: #a8b0b8; }
+
+/* line 384, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-default-vertical {
+  border-color: #a8b0b8; }
+
+/* line 415, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-default-top {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0; }
+
+/* line 433, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-top {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+/* line 437, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0; }
+/* line 441, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0; }
+/* line 445, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-left {
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 490, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-bottom {
+  background-position: bottom left; }
+
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-default-collapsed {
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0; }
+
+/* line 280, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-default-framed {
+  border-color: #a8b0b8;
+  background: #167cce;
+  -moz-border-radius: 4px;
+  -webkit-border-radius: 4px;
+  -o-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -khtml-border-radius: 4px;
+  border-radius: 4px; }
+  /* line 289, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+  .x-panel-default-framed .x-panel-header-collapsed-border-top {
+    border-bottom-width: 0 !important; }
+  /* line 292, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+  .x-panel-default-framed .x-panel-header-collapsed-border-right {
+    border-left-width: 0 !important; }
+  /* line 295, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+  .x-panel-default-framed .x-panel-header-collapsed-border-bottom {
+    border-top-width: 0 !important; }
+  /* line 298, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+  .x-panel-default-framed .x-panel-header-collapsed-border-left {
+    border-right-width: 0 !important; }
+
+/* line 305, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-default-framed {
+  border-color: #a8b0b8;
+  border-width: 0;
+  border-style: solid;
+  border-width: 0;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #188ae5), color-stop(100%, #167cce));
+  background-image: -webkit-linear-gradient(top, #188ae5, #167cce 100%);
+  background-image: -moz-linear-gradient(top, #188ae5, #167cce 100%);
+  background-image: -o-linear-gradient(top, #188ae5, #167cce 100%);
+  background-image: -ms-linear-gradient(top, #188ae5, #167cce 100%);
+  background-image: linear-gradient(top, #188ae5, #167cce 100%); }
+  /* line 306, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+  .x-panel-header-default-framed .x-panel-header-text-container {
+    font-size: 15px;
+    line-height: 1.2em; }
+
+/* line 361, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-default-framed .x-panel-header-text-container {
+  color: white;
+  font-size: 15px;
+  font-weight: normal;
+  font-family: "Helvetica Neue", Arial, Verdana, sans-serif; }
+
+/* line 369, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-body-default-framed {
+  background: white;
+  color: #22262a; }
+
+/* line 379, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-collapsed .x-window-header-default-framed,
+.x-panel-collapsed .x-panel-header-default-framed {
+  border-color: #a8b0b8; }
+
+/* line 384, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-default-framed-vertical {
+  border-color: #a8b0b8; }
+
+/* line 415, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-default-framed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px; }
+
+/* line 433, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-framed-top {
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px; }
+/* line 437, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-framed-right {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px; }
+/* line 441, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-framed-bottom {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px; }
+/* line 445, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-framed-left {
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px; }
+
+/* line 490, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-bottom {
+  background-position: bottom left; }
+
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-default-framed-collapsed {
+  -moz-border-radius: 4px;
+  -webkit-border-radius: 4px;
+  -o-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -khtml-border-radius: 4px;
+  border-radius: 4px; }
+
+/* line 232, ../themes/stylesheets/neptune/default/widgets/_panel.scss */
+.x-panel-header-plain,
+.x-panel-body-plain {
+  border: 0;
+  padding: 0; }
+
+/* line 2, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-tip {
+  position: absolute;
+  overflow: visible;
+  /*pointer needs to be able to stick out*/
+  border-color: white; }
+  /* line 8, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+  .x-tip .x-tip-header .x-box-item {
+    padding: 3px 3px 0; }
+  /* line 12, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+  .x-tip .x-tip-header .x-tool {
+    padding: 0px 1px 0 0 !important; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-tip {
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  -o-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -khtml-border-radius: 5px;
+  border-radius: 5px;
+  padding: 5px 5px 5px 5px;
+  border-width: 0;
+  border-style: solid;
+  background-color: white; }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-tip-mc {
+  background-color: white; }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-tip {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100505px 1000505px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-tip-tl,
+.x-nbr .x-tip-bl,
+.x-nbr .x-tip-tr,
+.x-nbr .x-tip-br,
+.x-nbr .x-tip-tc,
+.x-nbr .x-tip-bc,
+.x-nbr .x-tip-ml,
+.x-nbr .x-tip-mr {
+  background-image: url('../../resources/themes/images/neptune/tip/tip-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-tip-ml,
+.x-nbr .x-tip-mr {
+  background-image: url('../../resources/themes/images/neptune/tip/tip-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-tip-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 27, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-tip-header-text {
+  color: #188ae5;
+  font-size: 11px;
+  font-weight: bold; }
+
+/* line 35, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-tip-header-draggable .x-tip-header-text {
+  cursor: move; }
+
+/* line 41, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-tip-body,
+.x-form-invalid-tip-body {
+  overflow: hidden;
+  position: relative;
+  padding: 3px 3px 0; }
+
+/* line 49, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-tip-header,
+.x-tip-body,
+.x-form-invalid-tip-body {
+  color: #188ae5;
+  font-size: 11px;
+  font-weight: normal;
+  text-shadow: white 0 1px 0; }
+  /* line 57, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+  .x-tip-header a,
+  .x-tip-body a,
+  .x-form-invalid-tip-body a {
+    color: #146eb7; }
+
+/* line 62, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  height: 0;
+  width: 0;
+  border-style: solid;
+  border-width: 5px;
+  border-color: white; }
+
+/* line 73, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-border-box .x-tip-anchor {
+  width: 10px;
+  height: 10px; }
+
+/* line 78, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-tip-anchor-top {
+  border-top-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 91, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-tip-anchor-bottom {
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 104, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-tip-anchor-left {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 117, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-tip-anchor-right {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 131, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-form-invalid-tip {
+  border-color: #a1311f;
+  -moz-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  -webkit-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  -o-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset; }
+
+/* line 140, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+.x-form-invalid-tip-body {
+  background: 1px 1px no-repeat;
+  background-image: url('../../resources/themes/images/neptune/form/exclamation.gif');
+  padding-left: 22px; }
+  /* line 145, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+  .x-form-invalid-tip-body li {
+    margin-bottom: 4px; }
+    /* line 147, ../themes/stylesheets/neptune/default/widgets/_qtip.scss */
+    .x-form-invalid-tip-body li.last {
+      margin-bottom: 0; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-form-invalid-tip-default {
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  -o-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -khtml-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: white; }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-form-invalid-tip-default-mc {
+  background-color: white; }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-form-invalid-tip-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100505px 1000505px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-form-invalid-tip-default-tl,
+.x-nbr .x-form-invalid-tip-default-bl,
+.x-nbr .x-form-invalid-tip-default-tr,
+.x-nbr .x-form-invalid-tip-default-br,
+.x-nbr .x-form-invalid-tip-default-tc,
+.x-nbr .x-form-invalid-tip-default-bc,
+.x-nbr .x-form-invalid-tip-default-ml,
+.x-nbr .x-form-invalid-tip-default-mr {
+  background-image: url('../../resources/themes/images/neptune/form-invalid-tip/form-invalid-tip-default-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-form-invalid-tip-default-ml,
+.x-nbr .x-form-invalid-tip-default-mr {
+  background-image: url('../../resources/themes/images/neptune/form-invalid-tip/form-invalid-tip-default-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-form-invalid-tip-default-mc {
+  padding: 0 0 0 0; }
+
+/* line 6, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-inner {
+  position: relative;
+  left: 0;
+  top: 0;
+  overflow: visible; }
+
+/* line 14, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-focus {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px;
+  line-height: 1px;
+  font-size: 1px;
+  display: block;
+  overflow: hidden; }
+
+/* Horizontal styles */
+/* line 29, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-horz {
+  padding-left: 7px;
+  background: transparent no-repeat 0 -24px; }
+
+/* line 34, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-end {
+  padding-right: 7px;
+  background: transparent no-repeat right -46px; }
+
+/* line 40, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-inner {
+  background: transparent repeat-x 0 -2px;
+  height: 18px; }
+
+/* line 45, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb {
+  width: 14px;
+  height: 15px;
+  margin-left: -7px;
+  position: absolute;
+  left: 0;
+  top: 1px;
+  background: transparent no-repeat 0 0; }
+
+/* line 55, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb-over {
+  background-position: -14px -15px; }
+
+/* line 59, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb-drag {
+  background-position: -28px -30px; }
+
+/* Vertical styles */
+/* line 64, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-vert {
+  padding-top: 7px;
+  background: transparent no-repeat -44px 0; }
+
+/* line 69, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-end {
+  padding-bottom: 7px;
+  background: transparent no-repeat -22px bottom;
+  width: 22px; }
+
+/* line 76, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-inner {
+  background: transparent repeat-y 0 0;
+  width: 22px; }
+
+/* line 81, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb {
+  width: 15px;
+  height: 14px;
+  margin-bottom: -7px;
+  position: absolute;
+  left: 3px;
+  bottom: 0;
+  background: transparent no-repeat 0 0; }
+
+/* line 91, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb-over {
+  background-position: -15px -14px; }
+
+/* line 95, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb-drag {
+  background-position: -30px -28px; }
+
+/* line 101, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-horz,
+.x-slider-horz .x-slider-end,
+.x-slider-horz .x-slider-inner {
+  background-image: url('../../resources/themes/images/neptune/slider/slider-bg.png'); }
+
+/* line 105, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb {
+  background-image: url('../../resources/themes/images/neptune/slider/slider-thumb.png'); }
+
+/* line 111, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-vert,
+.x-slider-vert .x-slider-end,
+.x-slider-vert .x-slider-inner {
+  background-image: url('../../resources/themes/images/neptune/slider/slider-v-bg.png'); }
+
+/* line 115, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb {
+  background-image: url('../../resources/themes/images/neptune/slider/slider-v-thumb.png'); }
+
+/* line 123, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-ie6 .x-slider-horz,
+.x-ie6 .x-slider-horz .x-slider-end,
+.x-ie6 .x-slider-horz .x-slider-inner {
+  background-image: url('../../resources/themes/images/neptune/slider/slider-bg.gif'); }
+/* line 127, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-ie6 .x-slider-horz .x-slider-thumb {
+  background-image: url('../../resources/themes/images/neptune/slider/slider-thumb.gif'); }
+/* line 133, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-ie6 .x-slider-vert,
+.x-ie6 .x-slider-vert .x-slider-end,
+.x-ie6 .x-slider-vert .x-slider-inner {
+  background-image: url('../../resources/themes/images/neptune/slider/slider-v-bg.gif'); }
+/* line 137, ../themes/stylesheets/neptune/default/widgets/_slider.scss */
+.x-ie6 .x-slider-vert .x-slider-thumb {
+  background-image: url('../../resources/themes/images/neptune/slider/slider-v-thumb.gif'); }
+
+/* line 2, ../themes/stylesheets/neptune/default/widgets/_progress-bar.scss */
+.x-progress {
+  border-width: 1px;
+  border-style: solid;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0;
+  overflow: hidden;
+  height: 20px; }
+
+/* line 12, ../themes/stylesheets/neptune/default/widgets/_progress-bar.scss */
+.x-progress-bar {
+  height: 18px;
+  overflow: hidden;
+  position: absolute;
+  width: 0;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0;
+  border-right: 1px solid;
+  border-top: 1px solid; }
+
+/* line 25, ../themes/stylesheets/neptune/default/widgets/_progress-bar.scss */
+.x-progress-text {
+  overflow: hidden;
+  position: absolute;
+  padding: 0 5px;
+  height: 18px;
+  font-weight: bold;
+  font-size: 11px;
+  line-height: 16px;
+  text-align: center; }
+
+/* line 40, ../themes/stylesheets/neptune/default/widgets/_progress-bar.scss */
+.x-progress-text-back {
+  padding-top: 1px; }
+
+/* line 45, ../themes/stylesheets/neptune/default/widgets/_progress-bar.scss */
+.x-strict .x-ie7m .x-progress {
+  height: 18px; }
+
+/* line 87, ../themes/stylesheets/neptune/default/widgets/_progress-bar.scss */
+.x-progress-default {
+  border-color: #0c3a5f; }
+  /* line 90, ../themes/stylesheets/neptune/default/widgets/_progress-bar.scss */
+  .x-progress-default .x-progress-bar {
+    border-right-color: #0c3a5f;
+    border-top-color: #1a7fd0;
+    background-image: none;
+    background-color: #084c82;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #0c76cb), color-stop(50%, #095a9a), color-stop(51%, #084c82), color-stop(100%, #063e6a));
+    background-image: -webkit-linear-gradient(top, #0c76cb, #095a9a 50%, #084c82 51%, #063e6a);
+    background-image: -moz-linear-gradient(top, #0c76cb, #095a9a 50%, #084c82 51%, #063e6a);
+    background-image: -o-linear-gradient(top, #0c76cb, #095a9a 50%, #084c82 51%, #063e6a);
+    background-image: -ms-linear-gradient(top, #0c76cb, #095a9a 50%, #084c82 51%, #063e6a);
+    background-image: linear-gradient(top, #0c76cb, #095a9a 50%, #084c82 51%, #063e6a); }
+  /* line 97, ../themes/stylesheets/neptune/default/widgets/_progress-bar.scss */
+  .x-progress-default .x-progress-text {
+    color: white; }
+  /* line 101, ../themes/stylesheets/neptune/default/widgets/_progress-bar.scss */
+  .x-progress-default .x-progress-text-back {
+    color: #010304; }
+
+/* line 110, ../themes/stylesheets/neptune/default/widgets/_progress-bar.scss */
+.x-nlg .x-progress-default .x-progress-bar {
+  background: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/progress/progress-default-bg.gif'); }
+
+/* line 2, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-toolbar {
+  font-size: 11px;
+  overflow: visible;
+  padding: 5px 0 5px 5px; }
+  /* line 8, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+  .x-toolbar .x-box-inner {
+    overflow: visible; }
+  /* line 14, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+  .x-toolbar .x-form-item-label {
+    font-size: 11px;
+    line-height: 15px; }
+  /* line 19, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-item {
+    margin: 0 5px 0 0; }
+  /* line 23, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-text {
+    margin-left: 4px;
+    margin-right: 6px;
+    white-space: nowrap;
+    color: #727f8d !important;
+    line-height: 16px;
+    font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+    font-size: 11px;
+    font-weight: normal; }
+  /* line 34, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-separator {
+    display: block;
+    font-size: 1px;
+    overflow: hidden;
+    cursor: default;
+    border: 0; }
+  /* line 42, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-separator-horizontal {
+    margin: 0 6px 0 1px;
+    height: 24px;
+    width: 0px;
+    border-left: 1px solid #ebedef;
+    border-right: 1px solid white; }
+
+/* line 53, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-toolbar-docked-top {
+  padding-bottom: 0; }
+
+/* line 54, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-toolbar-docked-bottom {
+  padding-top: 0; }
+
+/* line 55, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-toolbar-docked-left {
+  padding-right: 0; }
+
+/* line 56, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-toolbar-docked-right {
+  padding-left: 0; }
+
+/* line 59, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal {
+  width: 2px; }
+
+/* line 64, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-toolbar-footer {
+  background: transparent;
+  border: 0px none;
+  margin-top: 3px;
+  padding: 2px 0 2px 6px; }
+  /* line 71, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+  .x-toolbar-footer .x-box-inner {
+    border-width: 0; }
+  /* line 75, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+  .x-toolbar-footer .x-toolbar-item {
+    margin: 0 6px 0 0; }
+
+/* line 80, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-toolbar-vertical {
+  padding: 5px 5px 0 5px; }
+  /* line 83, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+  .x-toolbar-vertical .x-toolbar-item {
+    margin: 0 0 5px 0; }
+  /* line 87, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+  .x-toolbar-vertical .x-toolbar-text {
+    margin-top: 4px;
+    margin-bottom: 6px; }
+  /* line 92, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+  .x-toolbar-vertical .x-toolbar-separator-vertical {
+    margin: 2px 5px 3px 5px;
+    height: 0px;
+    width: 10px;
+    line-height: 0px;
+    border-top: 1px solid #ebedef;
+    border-bottom: 1px solid white; }
+
+/* line 104, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-toolbar-scroller {
+  padding-left: 0; }
+
+/* line 108, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-toolbar-spacer {
+  width: 4px; }
+
+/* line 113, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-toolbar-more-icon {
+  background-image: url('../../resources/themes/images/neptune/toolbar/more.gif') !important;
+  background-position: 2px center !important;
+  background-repeat: no-repeat; }
+
+/* line 155, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-toolbar-default {
+  border-color: transparent;
+  background-image: none;
+  background-color: white; }
+
+/* line 166, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-nlg .x-toolbar-default {
+  background-image: url('../../resources/themes/images/neptune/toolbar/toolbar-default-bg.gif') !important;
+  background-repeat: repeat-x; }
+
+/* line 129, ../themes/stylesheets/neptune/default/widgets/_toolbar.scss */
+.x-toolbar-plain {
+  border: 0; }
+
+/* line 7, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-wrap {
+  position: relative; }
+
+/* line 11, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-body {
+  position: relative;
+  overflow: hidden; }
+
+/* line 20, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-maximized .x-window-wrap .x-window-header {
+  -moz-border-radius: 0 !important;
+  -webkit-border-radius: 0 !important;
+  -o-border-radius: 0 !important;
+  -ms-border-radius: 0 !important;
+  -khtml-border-radius: 0 !important;
+  border-radius: 0 !important; }
+
+/* line 28, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-vertical, .x-window-collapsed .x-window-header-horizontal {
+  -moz-border-radius: 4px;
+  -webkit-border-radius: 4px;
+  -o-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -khtml-border-radius: 4px;
+  border-radius: 4px; }
+
+/* line 52, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-header-left .x-vml-base,
+.x-window-header-right .x-vml-base {
+  left: -3px !important; }
+
+/* line 57, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-header-text {
+  white-space: nowrap;
+  display: block; }
+
+/* line 64, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-body-plain {
+  background: transparent; }
+
+/* line 70, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-header .x-window-header-body,
+.x-window-header .x-window-header-body > .x-box-inner {
+  overflow: visible; }
+
+/* line 101, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-default {
+  border-color: #1058a6;
+  -moz-border-radius: 4px;
+  -webkit-border-radius: 4px;
+  -o-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -khtml-border-radius: 4px;
+  border-radius: 4px; }
+
+/* line 69, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-window-default {
+  -moz-border-radius: 4px;
+  -webkit-border-radius: 4px;
+  -o-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -khtml-border-radius: 4px;
+  border-radius: 4px;
+  padding: 4px 4px 4px 4px;
+  border-width: 0;
+  border-style: solid;
+  background-color: #1264bd; }
+
+/* line 102, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nlg .x-window-default-mc {
+  background-color: #1264bd; }
+
+/* line 115, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-window-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1000404px; }
+/* line 147, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-window-default-tl,
+.x-nbr .x-window-default-bl,
+.x-nbr .x-window-default-tr,
+.x-nbr .x-window-default-br,
+.x-nbr .x-window-default-tc,
+.x-nbr .x-window-default-bc,
+.x-nbr .x-window-default-ml,
+.x-nbr .x-window-default-mr {
+  background-image: url('../../resources/themes/images/neptune/window/window-default-corners.gif'); }
+/* line 168, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-window-default-ml,
+.x-nbr .x-window-default-mr {
+  background-image: url('../../resources/themes/images/neptune/window/window-default-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/neptune/default/mixins/_frame.scss */
+.x-nbr .x-window-default-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 125, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-body-default {
+  background: white;
+  color: #5b6671; }
+
+/* line 132, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-header-default {
+  border-color: #1058a6;
+  padding: 8px 10px 8px 10px;
+  text-shadow: #0e4b8e 0 -1px 0;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #1470d4), color-stop(100%, #1264bd));
+  background-image: -webkit-linear-gradient(top, #1470d4, #1264bd 100%);
+  background-image: -moz-linear-gradient(top, #1470d4, #1264bd 100%);
+  background-image: -o-linear-gradient(top, #1470d4, #1264bd 100%);
+  background-image: -ms-linear-gradient(top, #1470d4, #1264bd 100%);
+  background-image: linear-gradient(top, #1470d4, #1264bd 100%); }
+
+/* line 145, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-header-text-default {
+  color: white;
+  font-weight: normal;
+  line-height: 1.2em;
+  font-size: 15px; }
+
+/* line 153, ../themes/stylesheets/neptune/default/widgets/_window.scss */
+.x-window-header-default-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px; }
+
+/* line 2, ../themes/stylesheets/neptune/default/util/_messagebox.scss */
+.x-message-box .x-window-body {
+  background-color: transparent;
+  color: white;
+  text-shadow: #0e4b8e 0 -1px 0;
+  border: none; }
+
+/* line 9, ../themes/stylesheets/neptune/default/util/_messagebox.scss */
+.x-message-box .x-progress-wrap {
+  margin-top: 4px; }
+
+/* line 13, ../themes/stylesheets/neptune/default/util/_messagebox.scss */
+.x-message-box-icon {
+  width: 47px;
+  height: 32px; }
+
+/* line 18, ../themes/stylesheets/neptune/default/util/_messagebox.scss */
+.x-message-box .x-form-item .x-form-display-field {
+  color: white;
+  text-shadow: #0e4b8e 0 -1px 0; }
+
+/* line 25, ../themes/stylesheets/neptune/default/util/_messagebox.scss */
+.x-message-box-info,
+.x-message-box-warning,
+.x-message-box-question,
+.x-message-box-error {
+  background: transparent no-repeat top left; }
+
+/* line 29, ../themes/stylesheets/neptune/default/util/_messagebox.scss */
+.x-message-box .x-msg-box-wait {
+  background-image: url('../../resources/themes/images/neptune/shared/blue-loading.gif'); }
+
+/* line 33, ../themes/stylesheets/neptune/default/util/_messagebox.scss */
+.x-message-box-info {
+  background-image: url('../../resources/themes/images/neptune/shared/icon-info.gif'); }
+
+/* line 37, ../themes/stylesheets/neptune/default/util/_messagebox.scss */
+.x-message-box-warning {
+  background-image: url('../../resources/themes/images/neptune/shared/icon-warning.gif'); }
+
+/* line 41, ../themes/stylesheets/neptune/default/util/_messagebox.scss */
+.x-message-box-question {
+  background-image: url('../../resources/themes/images/neptune/shared/icon-question.gif'); }
+
+/* line 45, ../themes/stylesheets/neptune/default/util/_messagebox.scss */
+.x-message-box-error {
+  background-image: url('../../resources/themes/images/neptune/shared/icon-error.gif'); }
+
+/* line 5, ../themes/stylesheets/neptune/default/widgets/_tabbar.scss */
+.x-tab-bar {
+  position: relative;
+  background-color: transparent;
+  font-size: 12px; }
+
+/* line 17, ../themes/stylesheets/neptune/default/widgets/_tabbar.scss */
+.x-tab-bar-default-plain,
+.x-nlg .x-tab-bar-default-plain {
+  background: transparent none; }
+
+/* line 22, ../themes/stylesheets/neptune/default/widgets/_tabbar.scss */
+.x-tab-bar-body {
+  position: relative;
+  z-index: 2; }
+
+/* line 31, ../themes/stylesheets/neptune/default/widgets/_tabbar.scss */
+.tab-bar-strip {
+  display: none !important; }
+
+/* Top Tabs */
+/* Bottom Tabs */
+/* line 136, ../themes/stylesheets/neptune/default/widgets/_tabbar.scss */
+.x-tab-bar-bottom .x-tab-bar-body .x-box-inner {
+  position: relative; }
+
+/* line 136, ../themes/stylesheets/neptune/default/widgets/_tabbar.scss */
+.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-inner {
+  position: relative; }
+
+/* line 27, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab {
+  z-index: 1;
+  margin: 0 1px 0 0;
+  display: inline-block;
+  *display: inline; }
+  /* line 37, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+  .x-tab em {
+    display: block;
+    padding: 7px 22px 8px 22px;
+    line-height: 1px; }
+  /* line 43, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+  .x-tab button {
+    background: none;
+    border: 0;
+    padding: 0;
+    margin: 0;
+    -webkit-appearance: none;
+    color: white; }
+    /* line 55, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+    .x-tab button::-moz-focus-inner {
+      border: 0;
+      padding: 0; }
+    /* line 60, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+    .x-tab button .x-tab-inner {
+      font-size: 12px;
+      font-weight: bold;
+      font-family: "Helvetica Neue", Arial, Verdana, sans-serif;
+      background-color: transparent;
+      background-repeat: no-repeat;
+      background-position: 0 -2px;
+      display: block;
+      text-align: center;
+      white-space: nowrap;
+      text-overflow: ellipsis;
+      -o-text-overflow: ellipsis;
+      overflow: hidden; }
+  /* line 82, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+  .x-tab img {
+    display: none; }
+
+/* line 87, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-close-btn {
+  -moz-background-clip: text;
+  -webkit-background-clip: text;
+  -o-background-clip: text;
+  -ms-background-clip: text;
+  -khtml-background-clip: text;
+  background-clip: text;
+  overflow: visible;
+  text-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+  position: relative;
+  height: 12px;
+  line-height: 12px;
+  display: block;
+  position: absolute !important;
+  top: 5px;
+  right: 2px;
+  width: 13px;
+  height: 13px;
+  text-decoration: none;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+  /* line 28, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .x-tab-close-btn:after, .x-tab-close-btn:before {
+    font-size: 12px;
+    content: "*";
+    background-image: none;
+    background-color: white;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(3%, #ffffff), color-stop(100%, #f5f5f5));
+    background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -moz-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -o-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: -ms-linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5);
+    background-image: linear-gradient(top, #ffffff, #ffffff 3%, #f5f5f5); }
+  /* line 38, ../themes/stylesheets/neptune/default/accessories/scss/_pictos.scss */
+  .x-tab-close-btn:before {
+    -moz-background-clip: padding;
+    -webkit-background-clip: padding;
+    -o-background-clip: padding-box;
+    -ms-background-clip: padding-box;
+    -khtml-background-clip: padding-box;
+    background-clip: padding-box;
+    background: none; }
+
+/* line 103, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-close-btn:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1; }
+
+/* line 107, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-panel-default-framed .x-tab-default-top {
+  -moz-border-radius: 3px 3px 0 0;
+  -webkit-border-radius: 3px 3px 0 0;
+  -o-border-radius: 3px 3px 0 0;
+  -ms-border-radius: 3px 3px 0 0;
+  -khtml-border-radius: 3px 3px 0 0;
+  border-radius: 3px 3px 0 0; }
+
+/* line 111, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-panel-default-framed .x-tab-default-bottom {
+  -moz-border-radius: 0 0 3px 3px;
+  -webkit-border-radius: 0 0 3px 3px;
+  -o-border-radius: 0 0 3px 3px;
+  -ms-border-radius: 0 0 3px 3px;
+  -khtml-border-radius: 0 0 3px 3px;
+  border-radius: 0 0 3px 3px; }
+
+/* line 115, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1; }
+
+/* line 130, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+* html .x-ie .x-tab button {
+  width: 1px; }
+
+/* line 137, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-strict .x-ie6 .x-tab .x-frame-mc,
+.x-strict .x-ie7 .x-tab .x-frame-mc {
+  height: 100%; }
+
+/* line 142, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-ie .x-tab-active button:active {
+  position: relative;
+  top: -1px;
+  left: -1px; }
+
+/* line 216, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-default-disabled {
+  border-color: #a8b0b8;
+  background-image: none;
+  background-color: rgba(0, 0, 0, 0); }
+  /* line 217, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+  .x-tab-default-disabled, .x-tab-default-disabled * {
+    cursor: default; }
+  /* line 224, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+  .x-tab-default-disabled button {
+    color: rgba(255, 255, 255, 0.5) !important; }
+
+/* line 230, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-icon-text-left .x-tab-inner {
+  padding-left: 24px; }
+
+/* line 235, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab {
+  background: rgba(255, 255, 255, 0.2); }
+  /* line 238, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+  .x-tab button, .x-tab a {
+    position: relative; }
+    /* line 241, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+    .x-tab button .x-tab-icon, .x-tab a .x-tab-icon {
+      position: absolute;
+      background-repeat: no-repeat;
+      top: 0;
+      left: 0;
+      right: auto;
+      bottom: 0;
+      width: 16px;
+      height: 16px; }
+  /* line 258, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+  .x-tab.x-icon button {
+    width: 16px;
+    height: 16px; }
+
+/* line 271, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-default-plain {
+  background: transparent; }
+
+/* line 298, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-top-over, .x-tab-over {
+  background-image: none;
+  background-color: #45a1eb; }
+
+/* line 301, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-bottom-over {
+  background-image: none;
+  background-color: #45a1eb; }
+
+/* line 306, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-active {
+  z-index: 3; }
+  /* line 312, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+  .x-tab-active button {
+    color: #2e3338; }
+  /* line 328, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+  .x-tab-active .x-tab-close-btn:after {
+    background-image: none;
+    background-color: #cccccc; }
+  /* line 334, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+  .x-tab-active .x-tab-icon:after {
+    color: #2e3338; }
+
+/* line 340, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-top-active {
+  background-image: none;
+  background-color: white; }
+
+/* line 343, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-bottom-active {
+  background-image: none;
+  background-color: white; }
+
+/* line 353, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-disabled button {
+  color: rgba(255, 255, 255, 0.5); }
+/* line 369, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-tab-disabled .x-tab-icon:after {
+  opacity: .5; }
+
+/* line 385, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nlg .x-tab-top {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-bg.gif'); }
+/* line 386, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nlg .x-tab-bottom {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-bg.gif'); }
+/* line 390, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nlg .x-tab-top-over {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-over-bg.gif'); }
+/* line 391, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nlg .x-tab-bottom-over {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-over-bg.gif'); }
+/* line 395, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nlg .x-tab-top-active {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-active-bg.gif'); }
+/* line 396, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nlg .x-tab-bottom-active {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-active-bg.gif'); }
+/* line 400, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nlg .x-tab-top-disabled {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-disabled-bg.gif') !important; }
+/* line 401, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nlg .x-tab-bottom-disabled {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-disabled-bg.gif') !important; }
+
+/* line 418, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-over .x-frame-tl,
+.x-nbr .x-tab-top-over .x-frame-bl,
+.x-nbr .x-tab-top-over .x-frame-tr,
+.x-nbr .x-tab-top-over .x-frame-br,
+.x-nbr .x-tab-top-over .x-frame-tc,
+.x-nbr .x-tab-top-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-over-corners.gif'); }
+/* line 422, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-over .x-frame-ml,
+.x-nbr .x-tab-top-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-over-sides.gif'); }
+/* line 426, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-over .x-frame-mc {
+  background-color: #45a1eb;
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-over-bg.gif'); }
+/* line 440, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-over .x-frame-tl,
+.x-nbr .x-tab-bottom-over .x-frame-bl,
+.x-nbr .x-tab-bottom-over .x-frame-tr,
+.x-nbr .x-tab-bottom-over .x-frame-br,
+.x-nbr .x-tab-bottom-over .x-frame-tc,
+.x-nbr .x-tab-bottom-over .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-over-corners.gif'); }
+/* line 444, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-over .x-frame-ml,
+.x-nbr .x-tab-bottom-over .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-over-sides.gif'); }
+/* line 448, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-over .x-frame-mc {
+  background-color: #45a1eb;
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-over-bg.gif'); }
+/* line 462, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-active .x-frame-tl,
+.x-nbr .x-tab-top-active .x-frame-bl,
+.x-nbr .x-tab-top-active .x-frame-tr,
+.x-nbr .x-tab-top-active .x-frame-br,
+.x-nbr .x-tab-top-active .x-frame-tc,
+.x-nbr .x-tab-top-active .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-active-corners.gif'); }
+/* line 466, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-active .x-frame-ml,
+.x-nbr .x-tab-top-active .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-active-sides.gif'); }
+/* line 470, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-active .x-frame-mc {
+  background-color: white;
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-active-bg.gif'); }
+/* line 484, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-active .x-frame-tl,
+.x-nbr .x-tab-bottom-active .x-frame-bl,
+.x-nbr .x-tab-bottom-active .x-frame-tr,
+.x-nbr .x-tab-bottom-active .x-frame-br,
+.x-nbr .x-tab-bottom-active .x-frame-tc,
+.x-nbr .x-tab-bottom-active .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-active-corners.gif'); }
+/* line 488, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-active .x-frame-ml,
+.x-nbr .x-tab-bottom-active .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-active-sides.gif'); }
+/* line 492, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-active .x-frame-mc {
+  background-color: white;
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-active-bg.gif'); }
+/* line 506, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-disabled .x-frame-tl,
+.x-nbr .x-tab-top-disabled .x-frame-bl,
+.x-nbr .x-tab-top-disabled .x-frame-tr,
+.x-nbr .x-tab-top-disabled .x-frame-br,
+.x-nbr .x-tab-top-disabled .x-frame-tc,
+.x-nbr .x-tab-top-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-disabled-corners.gif'); }
+/* line 510, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-disabled .x-frame-ml,
+.x-nbr .x-tab-top-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-disabled-sides.gif'); }
+/* line 514, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-top-disabled .x-frame-mc {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-top-disabled-bg.gif'); }
+/* line 527, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-disabled .x-frame-tl,
+.x-nbr .x-tab-bottom-disabled .x-frame-bl,
+.x-nbr .x-tab-bottom-disabled .x-frame-tr,
+.x-nbr .x-tab-bottom-disabled .x-frame-br,
+.x-nbr .x-tab-bottom-disabled .x-frame-tc,
+.x-nbr .x-tab-bottom-disabled .x-frame-bc {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-disabled-corners.gif'); }
+/* line 531, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-disabled .x-frame-ml,
+.x-nbr .x-tab-bottom-disabled .x-frame-mr {
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-disabled-sides.gif'); }
+/* line 535, ../themes/stylesheets/neptune/default/widgets/_tab.scss */
+.x-nbr .x-tab-bottom-disabled .x-frame-mc {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/neptune/tab/tab-default-bottom-disabled-bg.gif'); }
+
+/* line 25, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-autowidth-table table.x-grid-table {
+  table-layout: auto;
+  width: auto !important; }
+
+/* line 33, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-elbow-plus,
+.x-tree-elbow-minus,
+.x-tree-elbow-end-plus,
+.x-tree-elbow-end-minus {
+  cursor: pointer; }
+
+/* line 37, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-icon {
+  margin-right: 4px; }
+
+/* line 52, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-elbow,
+.x-tree-elbow-line,
+.x-tree-elbow-end,
+.x-tree-elbow-plus,
+.x-tree-elbow-minus,
+.x-tree-elbow-end-plus,
+.x-tree-elbow-end-minus,
+.x-tree-icon-end,
+.x-tree-icon-end-plus,
+.x-tree-icon-leaf,
+.x-tree-elbow-empty,
+.x-tree-icon-parent {
+  height: 24px;
+  width: 20px; }
+
+/* line 67, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow,
+.x-tree-lines .x-tree-elbow-line,
+.x-tree-lines .x-tree-elbow-end,
+.x-tree-elbow-plus,
+.x-tree-elbow-minus,
+.x-tree-elbow-end-plus,
+.x-tree-elbow-end-minus,
+.x-tree-icon-end,
+.x-tree-icon-end-plus,
+.x-tree-icon-leaf,
+.x-tree-icon-parent {
+  background-image: url('../../resources/themes/images/neptune/tree/elbows.png'); }
+
+/* line 73, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-elbow-plus,
+.x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/neptune/tree/icons-gray.png');
+  background-position: 0px 0; }
+
+/* line 79, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-grid-tree-node-expanded .x-tree-elbow-plus,
+.x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/neptune/tree/icons-gray.png');
+  background-position: -20px 0; }
+
+/* line 86, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-plus {
+  background-image: url('../../resources/themes/images/neptune/tree/icons-gray.png');
+  background-position: -80px 0; }
+/* line 91, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/neptune/tree/icons-gray.png');
+  background-position: -100px 0; }
+/* line 96, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus {
+  background-image: url('../../resources/themes/images/neptune/tree/icons-gray.png');
+  background-position: -120px 0; }
+/* line 101, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/neptune/tree/icons-gray.png');
+  background-position: -140px 0; }
+
+/* line 110, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-plus,
+.x-tree-arrows .x-tree-elbow-end-plus {
+  background-position: -40px 0; }
+/* line 115, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-plus,
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-position: -60px 0; }
+
+/* line 122, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-arrows.x-tree-lines .x-tree-elbow-plus {
+  background-position: -160px 0; }
+/* line 126, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-arrows.x-tree-lines .x-tree-elbow-end-plus {
+  background-position: -180px 0; }
+/* line 130, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-arrows.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus {
+  background-position: -200px 0; }
+/* line 134, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-arrows.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-position: -220px 0; }
+
+/* line 141, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-icon-parent {
+  background-position: -240px 0 !important;
+  background-image: url('../../resources/themes/images/neptune/tree/icons-orange.png'); }
+
+/* line 146, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-grid-tree-node-expanded .x-tree-icon-parent {
+  background-position: -300px 0 !important; }
+
+/* line 150, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-icon-leaf {
+  background-position: -360px 0 !important; }
+
+/* line 156, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-icon-parent {
+  width: 20px;
+  background-position: -260px 0 !important; }
+/* line 161, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-icon-parent {
+  background-position: -320px 0 !important; }
+
+/* line 167, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-icon-leaf {
+  width: 20px;
+  background-position: -360px 0 !important;
+  background-image: url('../../resources/themes/images/neptune/tree/icons-orange.png'); }
+
+/* line 174, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-icon-leaf {
+  background-position: -380px 0 !important; }
+
+/* line 188, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-grid-row-selected .x-tree-elbow-plus,
+.x-grid-row-selected .x-tree-elbow-minus,
+.x-grid-row-selected .x-tree-elbow-end-plus,
+.x-grid-row-selected .x-tree-elbow-end-minus,
+.x-grid-row-selected .x-tree-icon-end,
+.x-grid-row-selected .x-tree-icon-end-plus,
+.x-grid-row-selected .x-tree-icon-leaf,
+.x-grid-row-selected .x-tree-icon-parent {
+  background-image: url('../../resources/themes/images/neptune/tree/icons-white.png') !important; }
+
+/* line 195, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-line {
+  background-image: url('../../resources/themes/images/neptune/tree/elbows.png');
+  background-position: 0 48px; }
+/* line 200, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow {
+  background-image: url('../../resources/themes/images/neptune/tree/elbows.png');
+  background-position: 0 0px; }
+/* line 205, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-end {
+  background-image: url('../../resources/themes/images/neptune/tree/elbows.png');
+  background-position: 0 24px; }
+
+/* line 223, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-grid-cell-treecolumn .x-grid-cell-inner {
+  padding: 0;
+  line-height: 23px; }
+
+/* line 228, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-grid-with-row-lines .x-grid-cell-treecolumn .x-grid-cell-inner {
+  line-height: 21px; }
+
+/* line 232, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-panel .x-grid-cell-inner {
+  cursor: pointer; }
+  /* line 234, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+  .x-tree-panel .x-grid-cell-inner img {
+    display: inline-block;
+    vertical-align: top; }
+
+/* line 274, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-checkbox {
+  margin: 4px 3px 0 0;
+  display: inline-block;
+  vertical-align: top;
+  width: 17px;
+  height: 17px;
+  background: no-repeat;
+  background-image: url('../../resources/themes/images/neptune/checkbox.gif');
+  overflow: hidden;
+  padding: 0;
+  border: 0; }
+  /* line 287, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+  .x-tree-checkbox::-moz-focus-inner {
+    padding: 0;
+    border: 0; }
+
+/* line 293, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-grid-with-row-lines .x-tree-checkbox {
+  margin-top: 3px; }
+
+/* line 297, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-checkbox-checked {
+  background-position: 0 -17px; }
+
+/* line 301, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-drop-ok-append .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/neptune/tree/drop-append.gif'); }
+
+/* line 305, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-drop-ok-above .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/neptune/tree/drop-above.gif'); }
+
+/* line 309, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-drop-ok-below .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/neptune/tree/drop-below.gif'); }
+
+/* line 313, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-drop-ok-between .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/neptune/tree/drop-between.gif'); }
+
+/* line 317, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-grid-tree-loading .x-tree-icon {
+  background-image: url('../../resources/themes/images/neptune/tree/loading.gif'); }
+
+/* line 321, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-ddindicator {
+  height: 1px;
+  border-width: 1px 0px 0px;
+  border-style: dotted;
+  border-color: green; }
+
+/* line 328, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-grid-tree-loading span {
+  font-style: italic;
+  color: #444444; }
+
+/* line 333, ../themes/stylesheets/neptune/default/widgets/_tree.scss */
+.x-tree-animator-wrap {
+  overflow: hidden; }
+
+/* line 2, ../themes/stylesheets/neptune/default/widgets/_drawcomponent.scss */
+.x-surface {
+  display: -moz-inline-box;
+  -moz-box-orient: vertical;
+  display: inline-block;
+  vertical-align: middle;
+  *vertical-align: auto;
+  overflow: hidden; }
+  /* line 7, ../../../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.11.7/frameworks/compass/stylesheets/compass/css3/_inline-block.scss */
+  .x-surface {
+    *display: inline; }
+
+/* line 7, ../themes/stylesheets/neptune/default/widgets/_drawcomponent.scss */
+.rvml {
+  behavior: url(#default#VML); }
+
+/* line 15, ../themes/stylesheets/neptune/default/widgets/_drawcomponent.scss */
+.x-vml-sprite {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px; }
+
+/* line 23, ../themes/stylesheets/neptune/default/widgets/_drawcomponent.scss */
+.x-vml-group {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1000px;
+  height: 1000px; }
+
+/* line 31, ../themes/stylesheets/neptune/default/widgets/_drawcomponent.scss */
+.x-vml-measure-span {
+  position: absolute;
+  left: -9999em;
+  top: -9999em;
+  padding: 0;
+  margin: 0;
+  display: inline; }
+
+/* line 40, ../themes/stylesheets/neptune/default/widgets/_drawcomponent.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block; }
+
+/* line 48, ../themes/stylesheets/neptune/default/widgets/_drawcomponent.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block; }
+
+/* line 2, ../themes/stylesheets/neptune/default/widgets/_viewport.scss */
+.x-viewport, .x-viewport body {
+  margin: 0;
+  padding: 0;
+  border: 0 none;
+  overflow: hidden;
+  height: 100%;
+  position: static; }
+
+/* line 7, ../themes/stylesheets/neptune/default/util/_dragdrop.scss */
+.x-dd-drag-repair .x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+/* line 11, ../themes/stylesheets/neptune/default/util/_dragdrop.scss */
+.x-dd-drag-repair .x-dd-drop-icon {
+  display: none; }
+
+/* line 16, ../themes/stylesheets/neptune/default/util/_dragdrop.scss */
+.x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
+  opacity: 0.85;
+  padding: 5px;
+  padding-left: 20px;
+  white-space: nowrap;
+  color: #000;
+  font: normal 11px "Helvetica Neue", Arial, Verdana, sans-serif;
+  border: 1px solid;
+  border-color: #ddd #bbb #bbb #ddd;
+  background-color: #fff; }
+
+/* line 33, ../themes/stylesheets/neptune/default/util/_dragdrop.scss */
+.x-dd-drop-icon {
+  position: absolute;
+  top: 3px;
+  left: 3px;
+  display: block;
+  width: 16px;
+  height: 16px;
+  background-color: transparent;
+  background-position: center;
+  background-repeat: no-repeat;
+  z-index: 1; }
+
+/* line 50, ../themes/stylesheets/neptune/default/util/_dragdrop.scss */
+.x-view-selector {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 0;
+  background-color: #c3daf9;
+  border: 1px dotted #3399bb;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+
+/* line 65, ../themes/stylesheets/neptune/default/util/_dragdrop.scss */
+.x-dd-drop-nodrop .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/neptune/dd/drop-no.gif'); }
+
+/* line 69, ../themes/stylesheets/neptune/default/util/_dragdrop.scss */
+.x-dd-drop-ok .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/neptune/dd/drop-yes.gif'); }
+
+/* line 73, ../themes/stylesheets/neptune/default/util/_dragdrop.scss */
+.x-dd-drop-ok-add .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/neptune/dd/drop-add.gif'); }
+
+/* line 2, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-handle {
+  position: absolute;
+  z-index: 100;
+  font-size: 1px;
+  line-height: 6px;
+  overflow: hidden;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 13, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-handle-east {
+  width: 6px;
+  height: 100%;
+  right: 0;
+  top: 0; }
+
+/* line 24, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-east {
+  cursor: e-resize; }
+/* line 28, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-south {
+  cursor: s-resize; }
+/* line 32, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-west {
+  cursor: w-resize; }
+/* line 36, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-north {
+  cursor: n-resize; }
+/* line 40, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southeast {
+  cursor: se-resize; }
+/* line 44, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northwest {
+  cursor: nw-resize; }
+/* line 48, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northeast {
+  cursor: ne-resize; }
+/* line 52, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southwest {
+  cursor: sw-resize; }
+
+/* line 57, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-handle-south {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  bottom: 0; }
+
+/* line 65, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-handle-west {
+  width: 6px;
+  height: 100%;
+  left: 0;
+  top: 0; }
+
+/* line 73, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-handle-north {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  top: 0; }
+
+/* line 81, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-handle-southeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  bottom: 0;
+  z-index: 101; }
+
+/* line 91, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-handle-northwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  top: 0;
+  z-index: 101; }
+
+/* line 101, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-handle-northeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  top: 0;
+  z-index: 101; }
+
+/* line 111, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-handle-southwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+  z-index: 101; }
+
+/* line 123, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-ie .x-resizable-handle-east {
+  margin-right: -1px;
+  /*IE rounding error*/ }
+/* line 127, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-ie .x-resizable-handle-south {
+  margin-bottom: -1px; }
+
+/* line 132, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle, .x-resizable-pinned .x-resizable-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1; }
+
+/* line 136, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-window .x-window-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 140, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-window-collapsed .x-window-handle {
+  display: none; }
+
+/* line 144, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-proxy {
+  border: 1px dashed #3b5a82;
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  z-index: 50000; }
+
+/* line 153, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-overlay {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  display: none;
+  z-index: 200000;
+  background-color: #fff;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 173, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-west {
+  background-position: left;
+  background-image: url('../../resources/themes/images/neptune/sizer/e-handle.gif'); }
+/* line 179, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-north {
+  background-position: top;
+  background-image: url('../../resources/themes/images/neptune/sizer/s-handle.gif'); }
+/* line 184, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+  background-position: top left;
+  background-image: url('../../resources/themes/images/neptune/sizer/se-handle.gif'); }
+/* line 189, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+  background-position: bottom right;
+  background-image: url('../../resources/themes/images/neptune/sizer/nw-handle.gif'); }
+/* line 194, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+  background-position: bottom left;
+  background-image: url('../../resources/themes/images/neptune/sizer/ne-handle.gif'); }
+/* line 199, ../themes/stylesheets/neptune/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+  background-position: top right;
+  background-image: url('../../resources/themes/images/neptune/sizer/sw-handle.gif'); }
+
+/* line 3, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-splitter .x-collapse-el {
+  position: absolute;
+  cursor: pointer;
+  background-color: transparent;
+  background-repeat: no-repeat !important; }
+
+/* line 13, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-splitter-over {
+  background: rgba(0, 0, 0, 0.3); }
+
+/* line 18, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-layout-split-left,
+.x-layout-split-right {
+  top: 50%;
+  margin-top: -17px;
+  width: 5px;
+  height: 35px; }
+
+/* line 28, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-layout-split-top,
+.x-layout-split-bottom {
+  left: 50%;
+  width: 35px;
+  height: 5px;
+  margin-left: -17px; }
+
+/* line 37, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-layout-split-left {
+  background: no-repeat top right;
+  background-image: url('../../resources/themes/images/neptune/util/splitter/mini-left.gif'); }
+
+/* line 42, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-layout-split-right {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/neptune/util/splitter/mini-right.gif'); }
+
+/* line 47, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-layout-split-top {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/neptune/util/splitter/mini-top.gif'); }
+
+/* line 52, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-layout-split-bottom {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/neptune/util/splitter/mini-bottom.gif'); }
+
+/* line 58, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-left {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/neptune/util/splitter/mini-right.gif'); }
+/* line 63, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-right {
+  background: no-repeat top right;
+  background-image: url('../../resources/themes/images/neptune/util/splitter/mini-left.gif'); }
+/* line 68, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-top {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/neptune/util/splitter/mini-bottom.gif'); }
+/* line 73, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-bottom {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/neptune/util/splitter/mini-top.gif'); }
+
+/* line 79, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-splitter-horizontal {
+  cursor: e-resize;
+  cursor: row-resize;
+  font-size: 1px; }
+
+/* line 84, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-splitter-vertical {
+  cursor: e-resize;
+  cursor: col-resize;
+  font-size: 1px; }
+
+/* line 89, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-splitter-collapsed {
+  cursor: default; }
+
+/* line 93, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-splitter-active {
+  z-index: 4;
+  font-size: 1px;
+  background: #000; }
+
+/* line 101, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-splitter-active .x-collapse-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 106, ../themes/stylesheets/neptune/default/util/_splitter.scss */
+.x-proxy-el {
+  position: absolute;
+  background: #000; }
+
+/* line 6, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-docked {
+  position: absolute !important;
+  z-index: 1; }
+
+/**
+  * Dock Layouts
+  * @todo move this somewhere else?
+  */
+/* line 19, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-docked-bottom {
+  border-top-width: 0 !important; }
+
+/* line 23, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-docked-left {
+  border-right-width: 0 !important; }
+
+/* line 27, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-docked-right {
+  border-left-width: 0 !important; }
+
+/* line 31, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-docked-noborder-top {
+  border-top-width: 0 !important; }
+
+/* line 35, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-docked-noborder-right {
+  border-right-width: 0 !important; }
+
+/* line 39, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-docked-noborder-bottom {
+  border-bottom-width: 0 !important; }
+
+/* line 43, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-docked-noborder-left {
+  border-left-width: 0 !important; }
+
+/* line 47, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-box-inner {
+  overflow: hidden;
+  position: relative;
+  left: 0;
+  top: 0; }
+
+/* line 55, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-box-item {
+  position: absolute !important;
+  left: 0;
+  top: 0; }
+
+/* line 61, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-rtl .x-box-item {
+  right: 0;
+  left: auto; }
+
+/* line 67, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-box-layout-ct,
+.x-border-layout-ct {
+  overflow: hidden; }
+
+/* line 72, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-border-layout-ct {
+  background-color: #E4E5E5; }
+  /* line 75, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+  .x-border-layout-ct .x-border-layout-ct {
+    background-color: #d7d8d8; }
+
+/* line 80, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-panel-default-framed > .x-border-layout-ct {
+  background-color: #167cce; }
+  /* line 83, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+  .x-panel-default-framed > .x-border-layout-ct .x-border-layout-ct {
+    background-color: #146eb7; }
+
+/* line 97, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-overflow-hidden {
+  overflow: hidden !important; }
+
+/* line 101, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-inline-children > * {
+  display: inline-block !important; }
+
+/* line 105, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-abs-layout-ct {
+  position: relative; }
+
+/* line 109, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-abs-layout-item {
+  position: absolute !important; }
+
+/* line 113, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-fit-item {
+  position: relative; }
+
+/* line 117, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-border-region-slide-in {
+  z-index: 5; }
+
+/* line 121, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-region-collapsed-placeholder {
+  z-index: 4; }
+
+/* line 132, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-frame-tl,
+.x-frame-tr,
+.x-frame-tc,
+.x-frame-bl,
+.x-frame-br,
+.x-frame-bc {
+  overflow: hidden;
+  background-repeat: no-repeat; }
+
+/* line 138, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-frame-tc,
+.x-frame-bc {
+  background-repeat: repeat-x; }
+
+/* line 142, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-frame-mc {
+  position: relative;
+  background-repeat: repeat-x;
+  overflow: hidden; }
+
+/* line 151, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-box-scroller-left, .x-box-scroller-right {
+  height: 100%;
+  z-index: 5; }
+
+/* line 157, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-toolbar-scroll-left, .x-tabbar-scroll-left,
+.x-toolbar-scroll-right, .x-tabbar-scroll-right {
+  position: relative; }
+
+/* line 173, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-toolbar-scroll-left-disabled,
+.x-tabbar-scroll-left-disabled,
+.x-toolbar-scroll-right-disabled,
+.x-tabbar-scroll-right-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  cursor: default; }
+
+/* line 178, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-box-scroller-left {
+  float: left; }
+
+/* line 204, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-horizontal-box-overflow-body {
+  float: left; }
+
+/* line 208, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-box-scroller-right {
+  float: right; }
+  /* line 212, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right,
+  .x-box-scroller-right .x-tabbar-scroll-right {
+    background: url('../../resources/themes/images/neptune/tab-bar/scroll-right.gif') no-repeat 0 0; }
+  /* line 215, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-hover {
+    background-position: -18px 0; }
+  /* line 219, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-disabled,
+  .x-box-scroller-right .x-tabbar-scroll-right-disabled {
+    background-position: 0 0; }
+  /* line 223, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right {
+    background-image: url('../../resources/themes/images/neptune/toolbar/scroll-right.gif'); }
+  /* line 226, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-hover {
+    background-position: -14px 0; }
+  /* line 229, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-disabled {
+    background-position: 0 0; }
+
+/* line 236, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-box-scroller-top .x-box-scroller {
+  line-height: 0;
+  font-size: 0; }
+/* line 240, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-box-scroller-top .x-menu-scroll-top {
+  background: transparent no-repeat center center;
+  background-image: url('../../resources/themes/images/neptune/layout/mini-top.gif');
+  height: 8px;
+  cursor: pointer; }
+
+/* line 248, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-box-scroller-bottom .x-box-scroller {
+  line-height: 0;
+  font-size: 0; }
+/* line 252, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-box-scroller-bottom .x-menu-scroll-bottom {
+  background: transparent no-repeat center center;
+  background-image: url('../../resources/themes/images/neptune/layout/mini-bottom.gif');
+  height: 8px;
+  cursor: pointer; }
+
+/* line 260, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-box-menu-right {
+  float: right;
+  padding-right: 5px; }
+
+/* line 265, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-column {
+  float: left; }
+
+/* line 269, ../themes/stylesheets/neptune/default/layout/_layout.scss */
+.x-ie6 .x-column {
+  display: inline;
+  /*prevent IE6 double-margin bug*/ }
+
+/* line 10, ../themes/stylesheets/neptune/default/layout/_accordion.scss */
+.x-accordion-hd .x-panel-header-text {
+  color: black;
+  font-weight: bold;
+  font-size: 12px; }
+
+/* line 16, ../themes/stylesheets/neptune/default/layout/_accordion.scss */
+.x-accordion-hd {
+  padding: 5px 5px 7px 5px;
+  cursor: pointer;
+  background-image: none;
+  background-color: #f7f7f8; }
+  /* line 45, ../themes/stylesheets/neptune/default/layout/_accordion.scss */
+  .x-accordion-hd.x-panel-header-over {
+    background-color: #A6DDFF; }
+  /* line 49, ../themes/stylesheets/neptune/default/layout/_accordion.scss */
+  .x-accordion-hd.x-panel-header-pressed {
+    background-color: #0E4DAD; }
+    /* line 52, ../themes/stylesheets/neptune/default/layout/_accordion.scss */
+    .x-accordion-hd.x-panel-header-pressed .x-panel-header-text {
+      color: #fff; }
+
+/* line 58, ../themes/stylesheets/neptune/default/layout/_accordion.scss */
+.x-accordion-body {
+  border-bottom: 0;
+  background: #fff; }
+
+/* line 64, ../themes/stylesheets/neptune/default/layout/_accordion.scss */
+.x-accordion-item {
+  margin: 5px 5px 0 5px; }
+
+/* line 68, ../themes/stylesheets/neptune/default/layout/_accordion.scss */
+.x-accordion-body {
+  border-width: 0 !important; }
+
+/*    .#{$prefix}accordion-hd-sibling-expanded {
+    border-top-color: $accordion-border-color !important;
+    @include single-box-shadow($panel-header-inner-border-color, 0, 1px, 0, 0, true);
+}*/
+/* line 77, ../themes/stylesheets/neptune/default/layout/_accordion.scss */
+.x-accordion-hd-last-collapsed {
+  border-bottom-color: #f7f7f8 !important; }
+
+/* line 2, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool {
+  cursor: pointer; }
+  /* line 5, ../themes/stylesheets/neptune/default/util/_tool.scss */
+  .x-tool img {
+    overflow: hidden;
+    width: 16px;
+    height: 16px;
+    cursor: pointer;
+    background-color: transparent;
+    background-repeat: no-repeat;
+    margin: 0; }
+
+/* line 23, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-panel-header-horizontal .x-tool,
+.x-window-header-horizontal .x-tool {
+  margin-left: 5px; }
+
+/* line 29, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-panel-header-tools-first .x-tool {
+  margin-left: 0;
+  margin-right: 5px; }
+
+/* line 37, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-panel-header-vertical .x-tool,
+.x-window-header-vertical .x-tool {
+  margin-bottom: 5px; }
+
+/* line 42, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-placeholder {
+  visibility: hidden; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-maximize {
+  background-position-x: 0px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-minimize {
+  background-position-x: -16px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-restore {
+  background-position-x: -32px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-save {
+  background-position-x: -48px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-refresh {
+  background-position-x: -64px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-help {
+  background-position-x: -80px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-info {
+  background-position-x: -96px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-search {
+  background-position-x: -112px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-gear {
+  background-position-x: -128px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-close {
+  background-position-x: -144px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-minus {
+  background-position-x: -160px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-plus {
+  background-position-x: -176px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-print {
+  background-position-x: -192px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-up {
+  background-position-x: -208px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-toggle {
+  background-position-x: -208px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-collapse {
+  background-position-x: -208px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-collapse-top {
+  background-position-x: -208px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-left {
+  background-position-x: -224px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-prev {
+  background-position-x: -224px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-down {
+  background-position-x: -240px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-collapse-bottom {
+  background-position-x: -240px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-expand-bottom {
+  background-position-x: -240px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-expand {
+  background-position-x: -208px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-right {
+  background-position-x: -256px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-next {
+  background-position-x: -256px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-collapse-all {
+  background-position-x: -272px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-expand-all {
+  background-position-x: -288px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-pin {
+  background-position-x: -304px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-tool-unpin {
+  background-position-x: -320px; }
+
+/* line 238, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-collapsed .x-tool-toggle {
+  background-position-x: -240px; }
+
+/* line 221, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-accordion-hd .x-tool-collapse-top {
+  background-position-x: -12px; }
+/* line 221, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-accordion-hd .x-tool-collapse-bottom {
+  background-position-x: 0px; }
+/* line 221, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-accordion-hd .x-tool-expand-top {
+  background-position-x: -12px; }
+/* line 221, ../themes/stylesheets/neptune/default/util/_tool.scss */
+.x-accordion-hd .x-tool-expand-bottom {
+  background-position-x: 0px; }
+
+/* line 2, ../themes/stylesheets/neptune/default/util/_scroller.scss */
+.x-horizontal-scroller-present .x-grid-body {
+  border-bottom-width: 0px; }
+
+/* line 6, ../themes/stylesheets/neptune/default/util/_scroller.scss */
+.x-vertical-scroller-present .x-grid-body {
+  border-right-width: 0px; }
+
+/* line 10, ../themes/stylesheets/neptune/default/util/_scroller.scss */
+.x-scroller {
+  overflow: hidden; }
+
+/* line 14, ../themes/stylesheets/neptune/default/util/_scroller.scss */
+.x-scroller-vertical {
+  border: 1px solid #167cce;
+  border-top-color: white; }
+
+/* line 19, ../themes/stylesheets/neptune/default/util/_scroller.scss */
+.x-scroller-horizontal {
+  border: 1px solid #167cce; }
+
+/* line 23, ../themes/stylesheets/neptune/default/util/_scroller.scss */
+.x-vertical-scroller-present .x-scroller-horizontal {
+  border-right-width: 0px; }
+
+/* line 27, ../themes/stylesheets/neptune/default/util/_scroller.scss */
+.x-scroller-ct {
+  overflow: hidden;
+  position: absolute;
+  margin: 0;
+  padding: 0;
+  border: none;
+  left: 0px;
+  top: 0px;
+  /*
+  In IE9 (only), the border-box style causes the scroller-ct to be 0px in the
+  perpendicular dimension and breaks the scroll as well as offsets it by the left
+  offset that we use to try and keep some size on this element. This works on all
+  browsers (including IE9).
+  */
+  box-sizing: content-box !important;
+  -ms-box-sizing: content-box !important;
+  -moz-box-sizing: content-box !important;
+  -webkit-box-sizing: content-box !important; }
+
+/* line 48, ../themes/stylesheets/neptune/default/util/_scroller.scss */
+.x-scroller-vertical .x-scroller-ct {
+  overflow-y: scroll; }
+
+/* line 52, ../themes/stylesheets/neptune/default/util/_scroller.scss */
+.x-scroller-horizontal .x-scroller-ct {
+  overflow-x: scroll; }
+
+/* line 6, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+.x-html {
+  /* Begin bidirectionality settings (do not change) */ }
+  /* line 32, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html html,
+  .x-html address,
+  .x-html blockquote,
+  .x-html body,
+  .x-html dd,
+  .x-html div,
+  .x-html dl,
+  .x-html dt,
+  .x-html fieldset,
+  .x-html form,
+  .x-html frame, .x-html frameset,
+  .x-html h1,
+  .x-html h2,
+  .x-html h3,
+  .x-html h4,
+  .x-html h5,
+  .x-html h6,
+  .x-html noframes,
+  .x-html ol,
+  .x-html p,
+  .x-html ul,
+  .x-html center,
+  .x-html dir,
+  .x-html hr,
+  .x-html menu,
+  .x-html pre {
+    display: block; }
+  /* line 33, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html li {
+    display: list-item;
+    list-style: disc; }
+  /* line 34, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html head {
+    display: none; }
+  /* line 35, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html table {
+    display: table; }
+  /* line 36, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html tr {
+    display: table-row; }
+  /* line 37, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html thead {
+    display: table-header-group; }
+  /* line 38, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html tbody {
+    display: table-row-group; }
+  /* line 39, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html tfoot {
+    display: table-footer-group; }
+  /* line 40, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html col {
+    display: table-column; }
+  /* line 41, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html colgroup {
+    display: table-column-group; }
+  /* line 43, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html td,
+  .x-html th {
+    display: table-cell; }
+  /* line 44, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html caption {
+    display: table-caption; }
+  /* line 45, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html th {
+    font-weight: bolder;
+    text-align: center; }
+  /* line 46, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html caption {
+    text-align: center; }
+  /* line 47, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html body {
+    margin: 8px; }
+  /* line 48, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html h1 {
+    font-size: 2em;
+    margin: .67em 0; }
+  /* line 49, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html h2 {
+    font-size: 1.5em;
+    margin: .75em 0; }
+  /* line 50, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html h3 {
+    font-size: 1.17em;
+    margin: .83em 0; }
+  /* line 60, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html h4,
+  .x-html p,
+  .x-html blockquote,
+  .x-html ul,
+  .x-html fieldset,
+  .x-html form,
+  .x-html ol,
+  .x-html dl,
+  .x-html dir,
+  .x-html menu {
+    margin: 1.12em 0; }
+  /* line 61, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html h5 {
+    font-size: .83em;
+    margin: 1.5em 0; }
+  /* line 62, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html h6 {
+    font-size: .75em;
+    margin: 1.67em 0; }
+  /* line 70, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html h1,
+  .x-html h2,
+  .x-html h3,
+  .x-html h4,
+  .x-html h5,
+  .x-html h6,
+  .x-html b,
+  .x-html strong {
+    font-weight: bolder; }
+  /* line 71, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html blockquote {
+    margin-left: 40px;
+    margin-right: 40px; }
+  /* line 76, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html i,
+  .x-html cite,
+  .x-html em,
+  .x-html var,
+  .x-html address {
+    font-style: italic; }
+  /* line 81, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html pre,
+  .x-html tt,
+  .x-html code,
+  .x-html kbd,
+  .x-html samp {
+    font-family: monospace; }
+  /* line 82, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html pre {
+    white-space: pre; }
+  /* line 86, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html button,
+  .x-html textarea,
+  .x-html input,
+  .x-html select {
+    display: inline-block; }
+  /* line 87, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html big {
+    font-size: 1.17em; }
+  /* line 90, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html small,
+  .x-html sub,
+  .x-html sup {
+    font-size: .83em; }
+  /* line 91, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html sub {
+    vertical-align: sub; }
+  /* line 92, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html sup {
+    vertical-align: super; }
+  /* line 93, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html table {
+    border-spacing: 2px; }
+  /* line 96, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html thead,
+  .x-html tbody,
+  .x-html tfoot {
+    vertical-align: middle; }
+  /* line 98, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html td,
+  .x-html th {
+    vertical-align: inherit; }
+  /* line 101, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html s,
+  .x-html strike,
+  .x-html del {
+    text-decoration: line-through; }
+  /* line 102, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html hr {
+    border: 1px inset; }
+  /* line 107, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html ol,
+  .x-html ul,
+  .x-html dir,
+  .x-html menu,
+  .x-html dd {
+    margin-left: 40px; }
+  /* line 108, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html ul, .x-html menu, .x-html dir {
+    list-style-type: disc; }
+  /* line 109, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html ol {
+    list-style-type: decimal; }
+  /* line 113, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html ol ul,
+  .x-html ul ol,
+  .x-html ul ul,
+  .x-html ol ol {
+    margin-top: 0;
+    margin-bottom: 0; }
+  /* line 115, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html u,
+  .x-html ins {
+    text-decoration: underline; }
+  /* line 116, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html br:before {
+    content: "\A"; }
+  /* line 117, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html :before, .x-html :after {
+    white-space: pre-line; }
+  /* line 118, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html center {
+    text-align: center; }
+  /* line 119, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html :link, .x-html :visited {
+    text-decoration: underline; }
+  /* line 120, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html :focus {
+    outline: invert dotted thin; }
+  /* line 123, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html BDO[DIR="ltr"] {
+    direction: ltr;
+    unicode-bidi: bidi-override; }
+  /* line 124, ../themes/stylesheets/neptune/default/widgets/_html.scss */
+  .x-html BDO[DIR="rtl"] {
+    direction: rtl;
+    unicode-bidi: bidi-override; }
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-sandbox-debug.css
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-sandbox-debug.css	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-sandbox-debug.css	(revision 18277)
@@ -0,0 +1,9954 @@
+/*
+This file is part of Ext JS 4.1
+
+Copyright (c) 2011-2012 Sencha Inc
+
+Contact:  http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2012-07-04 21:11:01 (65ff594cd80b9bad45df640c22cc0adb52c95a7b)
+*/
+/**
+ * @class Global_CSS
+ *
+ * Global CSS variables and mixins of Sencha Touch.
+ */
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+/**
+ * @var {string} $theme-name
+ * The name of the theme. This must match the the output directory of the images.
+ * (defaults to 'default')
+ */
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+/**
+ * @var {string} $font-family
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $base-gradient
+ * The base gradient to be used throughout the theme.
+ */
+/**
+ * @var {color} $base-color
+ * The base color to be used throughout the theme.
+ */
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules
+ */
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+/**
+ * @var {boolean} $compile-all
+ * True to copile all CSS, even if above include rules are false
+ */
+/**
+ * @var {boolean} $scope-reset-css
+ * True to scope the reset CSS within the $prefix variable.
+ */
+/**
+ * @var {color} $css-shadow-background-color
+ * The base color for CSS shadows
+ */
+/**
+ * @var {color} $include-shadow-images
+ * True to include all shadow images.
+ */
+/**
+ * @class Ext.form.field.Base
+ */
+/**
+ * @var {measurement} $form-field-height
+ * Height for form fields.
+ */
+/**
+ * @var {measurement} $form-toolbar-field-height
+ * Height for form fields in toolbar.
+ */
+/**
+ * @var {measurement} $form-error-icon-width
+ * Width for form error icons.
+ */
+/**
+ * @var {measurement} $form-field-padding
+ * Padding around form fields.
+ */
+/**
+ * @var {measurement} $form-field-font-size
+ * Font size for form fields.
+ */
+/**
+ * @var {font-family} $form-field-font-family
+ * Font family for form fields.
+ */
+/**
+ * @var {font-weight} $form-field-font-weight
+ * Font weight for form fields.
+ */
+/**
+ * @var {font} $form-field-font
+ * Font for form fields.
+ */
+/**
+ * @var {color} $form-field-color
+ * Text color for form fields.
+ */
+/**
+ * @var {color} $form-field-empty-color
+ * Text color for empty form fields.
+ */
+/**
+ * @var {color} $form-field-border-color
+ * Border color for form fields.
+ */
+/**
+ * @var {measurement} $form-field-border-width
+ * Border width for form fields.
+ */
+/**
+ * @var {color} $form-field-focus-border-color
+ * Border color for focused form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-border-color
+ * Border color for invalid form fields.
+ */
+/**
+ * @var {color} $form-field-background-color
+ * Background color for form fields.
+ */
+/**
+ * @var {string} $form-field-background-image
+ * Background image for form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-background-color
+ * Background color for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-image
+ * Background image for invalid form fields.
+ */
+/**
+ * @var {background-repeat} $form-field-invalid-background-repeat
+ * Background repeat for invalid form fields.
+ */
+/**
+ * @var {background-position} $form-field-invalid-background-position
+ * Background position for invalid form fields.
+ */
+/**
+ * @class Ext.form.field.TextArea
+ */
+/**
+ * @class Ext.form.Label
+ */
+/**
+ * @class Ext.form.field.Checkbox
+ */
+/**
+ * @class Ext.form.field.Radio
+ */
+/* Error messages */
+/**
+ * @class Ext.form.field.Trigger
+ */
+/**
+ * @class Ext.form.FieldSet
+ */
+/**
+ * @class Ext.slider.Multi
+ */
+/**
+ * Creates a background gradient.
+ *
+ * @param {Color} $bg-color The background color of the gradient
+ * @param {String/List} [$type] The type of gradient to be used. Can either
+ * be a String which is a predefined gradient, or it can can be a list of
+ * color_stops. If none is set, it will still set the `background-color`
+ * to the $background-color.
+ * @param {String} [$direction=top] The direction of the gradient. Can either be
+ * `top` or `left`.
+ * @member Global_CSS
+ */
+/*
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error.
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to
+ * be true.
+ */
+/* line 77, ../themes/stylesheets/ext4/default/core/_reset.scss */
+html, body, div, dl, dt, dd, ul, ol, li, h1, h2, h3,
+h4, h5, h6, pre, code, form, fieldset, legend,
+input, textarea, p, blockquote, th, td {
+  margin: 0;
+  padding: 0; }
+
+/* line 82, ../themes/stylesheets/ext4/default/core/_reset.scss */
+table {
+  border-collapse: collapse;
+  border-spacing: 0; }
+
+/* line 87, ../themes/stylesheets/ext4/default/core/_reset.scss */
+fieldset, img {
+  border: 0; }
+
+/* line 92, ../themes/stylesheets/ext4/default/core/_reset.scss */
+address, caption, cite, code,
+dfn, em, strong, th, var {
+  font-style: normal;
+  font-weight: normal; }
+
+/* line 97, ../themes/stylesheets/ext4/default/core/_reset.scss */
+li {
+  list-style: none; }
+
+/* line 101, ../themes/stylesheets/ext4/default/core/_reset.scss */
+caption, th {
+  text-align: left; }
+
+/* line 105, ../themes/stylesheets/ext4/default/core/_reset.scss */
+h1, h2, h3, h4, h5, h6 {
+  font-size: 100%; }
+
+/* line 110, ../themes/stylesheets/ext4/default/core/_reset.scss */
+q:before,
+q:after {
+  content: ""; }
+
+/* line 114, ../themes/stylesheets/ext4/default/core/_reset.scss */
+abbr, acronym {
+  border: 0;
+  font-variant: normal; }
+
+/* line 119, ../themes/stylesheets/ext4/default/core/_reset.scss */
+sup {
+  vertical-align: text-top; }
+
+/* line 123, ../themes/stylesheets/ext4/default/core/_reset.scss */
+sub {
+  vertical-align: text-bottom; }
+
+/* line 127, ../themes/stylesheets/ext4/default/core/_reset.scss */
+input, textarea, select {
+  font-family: inherit;
+  font-size: inherit;
+  font-weight: inherit; }
+
+/* line 133, ../themes/stylesheets/ext4/default/core/_reset.scss */
+*:focus {
+  outline: none; }
+
+/* line 138, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x4-border-box,
+.x4-border-box * {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  -webkit-box-sizing: border-box; }
+
+/* line 1, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-body {
+  color: black;
+  font-size: 12px;
+  font-family: tahoma, arial, verdana, sans-serif; }
+
+/* line 7, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-rtl {
+  direction: rtl; }
+
+/* line 11, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-ltr {
+  direction: ltr; }
+
+/* line 15, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-clear {
+  overflow: hidden;
+  clear: both;
+  font-size: 0;
+  line-height: 0;
+  display: table; }
+
+/* line 23, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-strict .x4-ie7 .x4-clear {
+  height: 0;
+  width: 0; }
+
+/* line 31, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-layer {
+  position: absolute !important;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 37, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-shim {
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 45, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-hide-display {
+  display: none !important; }
+
+/* line 49, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-hide-visibility {
+  visibility: hidden !important; }
+
+/* line 56, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-item-disabled .x4-form-item-label,
+.x4-item-disabled .x4-form-field,
+.x4-item-disabled .x4-form-cb-label,
+.x4-item-disabled .x4-form-trigger {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 60, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-ie6 .x4-item-disabled {
+  filter: none; }
+
+/* line 65, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-hidden,
+.x4-hide-offsets {
+  display: block !important;
+  visibility: hidden !important;
+  position: absolute!important;
+  left: -10000px !important;
+  top: -10000px !important; }
+
+/* line 75, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-hide-nosize {
+  height: 0!important;
+  width: 0!important; }
+
+/* line 80, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-masked-relative {
+  position: relative; }
+
+/* line 86, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-ie6 .x4-masked select,
+.x4-ie6.x4-body-masked select {
+  visibility: hidden !important; }
+
+/* line 92, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-css-shadow {
+  position: absolute;
+  -moz-border-radius: 5px 5px;
+  -webkit-border-radius: 5px 5px;
+  -o-border-radius: 5px 5px;
+  -ms-border-radius: 5px 5px;
+  -khtml-border-radius: 5px 5px;
+  border-radius: 5px 5px; }
+
+/* line 98, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-ie-shadow {
+  background-color: #777;
+  display: none;
+  position: absolute;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 107, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-tl {
+  background: transparent no-repeat 0 0;
+  zoom: 1; }
+
+/* line 112, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-tc {
+  height: 8px;
+  background: transparent repeat-x 0 0;
+  overflow: hidden; }
+
+/* line 118, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-tr {
+  background: transparent no-repeat right -8px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-ml {
+  background: transparent repeat-y 0;
+  padding-left: 4px;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 129, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-mc {
+  background: repeat-x 0 -16px;
+  padding: 4px 10px; }
+
+/* line 134, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-mc h3 {
+  margin: 0 0 4px 0;
+  zoom: 1; }
+
+/* line 139, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-mr {
+  background: transparent repeat-y right;
+  padding-right: 4px;
+  overflow: hidden; }
+
+/* line 145, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-bl {
+  background: transparent no-repeat 0 -16px;
+  zoom: 1; }
+
+/* line 150, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-bc {
+  background: transparent repeat-x 0 -8px;
+  height: 8px;
+  overflow: hidden; }
+
+/* line 156, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-br {
+  background: transparent no-repeat right -24px; }
+
+/* line 160, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-tl, .x4-box-bl {
+  padding-left: 8px;
+  overflow: hidden; }
+
+/* line 165, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-tr, .x4-box-br {
+  padding-right: 8px;
+  overflow: hidden; }
+
+/* line 170, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-tl {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 174, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-tc {
+  background-image: url('../../resources/themes/images/default/box/tb.gif'); }
+
+/* line 178, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-tr {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 182, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-ml {
+  background-image: url('../../resources/themes/images/default/box/l.gif'); }
+
+/* line 186, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-mc {
+  background-color: #eee;
+  background-image: url('../../resources/themes/images/default/box/tb.gif');
+  font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;
+  color: #393939;
+  font-size: 15px; }
+
+/* line 194, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-mc h3 {
+  font-size: 18px;
+  font-weight: bold; }
+
+/* line 199, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-mr {
+  background-image: url('../../resources/themes/images/default/box/r.gif'); }
+
+/* line 203, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-bl {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 207, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-bc {
+  background-image: url('../../resources/themes/images/default/box/tb.gif'); }
+
+/* line 211, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-br {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 215, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-blue .x4-box-bl, .x4-box-blue .x4-box-br, .x4-box-blue .x4-box-tl, .x4-box-blue .x4-box-tr {
+  background-image: url('../../resources/themes/images/default/box/corners-blue.gif'); }
+
+/* line 219, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-blue .x4-box-bc, .x4-box-blue .x4-box-mc, .x4-box-blue .x4-box-tc {
+  background-image: url('../../resources/themes/images/default/box/tb-blue.gif'); }
+
+/* line 223, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-blue .x4-box-mc {
+  background-color: #c3daf9; }
+
+/* line 227, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-blue .x4-box-mc h3 {
+  color: #17385b; }
+
+/* line 231, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-blue .x4-box-ml {
+  background-image: url('../../resources/themes/images/default/box/l-blue.gif'); }
+
+/* line 235, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-box-blue .x4-box-mr {
+  background-image: url('../../resources/themes/images/default/box/r-blue.gif'); }
+
+/* line 239, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x4-container {
+  zoom: 1; }
+  /* line 244, ../themes/stylesheets/ext4/default/core/_core.scss */
+  .x4-container:before {
+    content: "";
+    clear: both;
+    display: table; }
+
+/* line 254, ../themes/stylesheets/ext4/default/core/_core.scss */
+table.x4-container:before,
+tbody.x4-container:before,
+tr.x4-container:before {
+  display: none; }
+
+/* line 1, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x4-focus-element {
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px; }
+
+/* line 9, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x4-focus-frame {
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  z-index: 100000000;
+  width: 0px;
+  height: 0px; }
+
+/* line 21, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x4-focus-frame-top,
+.x4-focus-frame-bottom,
+.x4-focus-frame-left,
+.x4-focus-frame-right {
+  position: absolute;
+  top: 0px;
+  left: 0px; }
+
+/* line 28, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x4-focus-frame-top,
+.x4-focus-frame-bottom {
+  border-top: solid 2px #15428b;
+  height: 2px; }
+
+/* line 34, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x4-focus-frame-left,
+.x4-focus-frame-right {
+  border-left: solid 2px #15428b;
+  width: 2px; }
+
+/**
+ * Creates the base structure of a BoundList.
+ * @member Ext.view.BoundList
+ */
+/**
+ * Creates the base structure of an Ext.Button
+ * @member Ext.button.Button
+ */
+/**
+ * Creates a visual theme of an Ext.Button
+ * @member Ext.button.Button
+ */
+/**
+ * Creates the base structure of a button group.
+ * @member Ext.container.ButtonGroup
+ */
+/**
+ * Creates a visual theme of a button group.
+ * @member Ext.container.ButtonGroup
+ */
+/**
+ * Creates the base structure of a date picker.
+ * @member Ext.picker.Date
+ */
+/**
+ * Creates base structure for Ext.picker.Color
+ * @member Ext.picker.Color
+ */
+/**
+ * Creates the base structure of a Menu
+ * @member Ext.menu.Menu
+ */
+/**
+ * Create the base structure of an Ext.Panel
+ * @member Ext.panel.Panel
+ */
+/**
+ * Creates a visual theme for an Ext.Panel
+ * @member Ext.panel.Panel
+ */
+/**
+ * Creates base structure for Toolbar
+ * @member Ext.toolbar.Toolbar
+ */
+/**
+ * Creates a visual theme for an Toolbar.
+ * @param {String} $ui The name of the UI
+ * @param {Color} $background-color The background color of the toolbar (defaults to transparent)
+ * @param {Gradient/color-stops} $background-gradient The background gradient of the toolbar (defaults to null)
+ * @param {Color} $border-color The border color of the toolbar (defaults to null)
+ * @member Ext.toolbar.Toolbar
+ */
+/**
+ * Creates the base structure of Ext.form.Panel.
+ * @member Ext.form.Panel
+ */
+/**
+ * Creates the base structure of form field.
+ * @member Ext.form.field.Base
+ */
+/**
+ * Creates the base structure of FieldSet.
+ * @member Ext.form.FieldSet
+ */
+/**
+ * Creates the base structure of file field.
+ * @member Ext.form.field.File
+ */
+/**
+ * Creates the base structure of checkbox field.
+ * @member Ext.form.field.Checkbox
+ */
+/**
+ * Creates the base structure of CheckboxGroup.
+ * @member Ext.form.CheckboxGroup
+ */
+/**
+ * Creates the base structure of trigger field.
+ * @member Ext.form.field.Trigger
+ */
+/**
+ * Creates the base structure of HtmlEditor field.
+ * @member Ext.form.field.HtmlEditor
+ */
+/**
+ * Creates the base structure of QuickTip.
+ * @member Ext.tip.QuickTip
+ */
+/**
+ * Creates the base structure of an Ext.Window
+ * @member Ext.window.Window
+ */
+/**
+ * Creates a visual theme for an Ext.Panel
+ * @member Ext.window.Window
+ */
+/**
+ * Creates a visual theme for TabBar
+ * @member Ext.tab.Bar
+ */
+/**
+ * Creates the base structure of a Tab.
+ * @member Ext.tab.Tab
+ */
+/**
+ * Creates the base structure of slider.
+ * @member Ext.slider.Multi
+ */
+/**
+ * Creates base structure for a Grid.
+ * @member Ext.grid.Panel
+ */
+/**
+ * Creates the base structure of Tree.
+ * @member Ext.tree.Panel
+ */
+/* Styles for Ext.LoadMask */
+/* line 3, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+.x4-mask {
+  z-index: 100;
+  position: absolute;
+  top: 0;
+  left: 0;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  width: 100%;
+  height: 100%;
+  zoom: 1;
+  background: #cccccc; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+.x4-mask-msg {
+  z-index: 20001;
+  position: absolute;
+  top: 0;
+  left: 0;
+  padding: 2px;
+  border: 1px solid;
+  border-color: #99bce8;
+  background-image: none;
+  background-color: #dfe9f6; }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+  .x4-mask-msg div {
+    padding: 5px 10px 5px 25px;
+    background-image: url('../../resources/themes/images/default/grid/loading.gif');
+    background-repeat: no-repeat;
+    background-position: 5px center;
+    cursor: wait;
+    border: 1px solid #a3bad9;
+    background-color: #eeeeee;
+    color: #222222;
+    font: normal 11px tahoma, arial, verdana, sans-serif; }
+
+/**
+ * Creates the base structure of an Ext.ProgressBar
+ * @member Ext.ProgressBar
+ */
+/**
+ * Creates a visual theme for an Ext.ProgressBar
+ * @member Ext.ProgressBar
+ */
+/**
+ * Creates base structure for a Draw Component.
+ * @member Ext.draw.Component
+ */
+/**
+ * Creates the base structure of Viewport.
+ * @member Ext.container.Viewport
+ */
+/**
+ * W3C suggested default style sheet for HTML 4:
+ * [http://www.w3.org/TR/CSS21/sample.html](http://www.w3.org/TR/CSS21/sample.html)
+ *
+ * @member Global_CSS
+ */
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x4-boundlist {
+  border-width: 1px;
+  border-style: solid;
+  border-color: #98c0f4;
+  background: white; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x4-boundlist .x4-toolbar {
+    border-width: 1px 0 0 0; }
+
+/* line 22, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x4-strict .x4-ie6 .x4-boundlist-list-ct,
+.x4-strict .x4-ie7 .x4-boundlist-list-ct {
+  position: relative; }
+
+/* line 29, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x4-boundlist-item {
+  padding: 2px;
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  cursor: pointer;
+  cursor: hand;
+  position: relative;
+  /*allow hover in IE on empty items*/
+  border-width: 1px;
+  border-style: dotted;
+  border-color: white; }
+
+/* line 43, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x4-boundlist-selected {
+  background: #cbdaf0;
+  border-color: #8eabe4; }
+
+/* line 48, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x4-boundlist-item-over {
+  background: #dfe8f6;
+  border-color: #a3bae9; }
+
+/* line 53, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x4-boundlist-floating {
+  border-top-width: 0; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x4-boundlist-above {
+  border-top-width: 1px;
+  border-bottom-width: 1px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn {
+  display: inline-block;
+  zoom: 1;
+  *display: inline;
+  position: relative;
+  cursor: pointer;
+  cursor: hand;
+  white-space: nowrap;
+  vertical-align: middle;
+  background-repeat: no-repeat; }
+  /* line 19, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-btn * {
+    cursor: pointer;
+    cursor: hand; }
+  /* line 26, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-btn em {
+    background-repeat: no-repeat; }
+    /* line 30, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x4-btn em a {
+      text-decoration: none;
+      display: block;
+      color: inherit;
+      width: 100%;
+      zoom: 1; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-btn button {
+    width: 100%;
+    display: block;
+    margin: 0;
+    padding: 0;
+    border: 0;
+    background: none;
+    outline: 0 none;
+    overflow: hidden;
+    vertical-align: bottom;
+    -webkit-appearance: none; }
+    /* line 59, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x4-btn button::-moz-focus-inner {
+      border: 0;
+      padding: 0; }
+  /* line 65, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-btn .x4-btn-inner {
+    display: block;
+    white-space: nowrap;
+    background-color: transparent;
+    background-repeat: no-repeat;
+    background-position: left center;
+    overflow: hidden; }
+  /* line 74, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-btn .x4-btn-left .x4-btn-inner {
+    text-align: left; }
+  /* line 78, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-btn .x4-btn-center .x4-btn-inner {
+    text-align: center; }
+  /* line 82, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-btn .x4-btn-right .x4-btn-inner {
+    text-align: right; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-disabled span {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+  /* line 91, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-disabled span, .x4-ie7 .x4-btn-disabled span {
+    filter: none; }
+
+/* line 98, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-ie7 .x4-btn-disabled,
+.x4-ie8 .x4-btn-disabled {
+  filter: none; }
+
+/* line 105, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-ie6 .x4-btn-disabled .x4-btn-icon,
+.x4-ie7 .x4-btn-disabled .x4-btn-icon,
+.x4-ie8 .x4-btn-disabled .x4-btn-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+
+/* IE9 shows scrollbars in a button unless this is set  */
+/* line 112, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-ie9 .x4-btn button {
+  overflow: visible!important; }
+
+/* line 117, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+* html .x4-ie .x4-btn button {
+  width: 1px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-ie .x4-btn button {
+  overflow-x: visible;
+  /*prevents extra horiz space in IE*/
+  vertical-align: baseline;
+  /*IE doesn't like bottom*/ }
+
+/* line 129, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-strict .x4-ie6 .x4-btn .x4-frame-mc,
+.x4-strict .x4-ie7 .x4-btn .x4-frame-mc {
+  height: 100%; }
+
+/* Keep the selector simple ".x-btn .x-frame-mc" is enough to target the center frame of the button table */
+/* line 138, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn .x4-frame-mc {
+  vertical-align: middle;
+  white-space: nowrap;
+  cursor: pointer; }
+
+/* Only center when all there is is text. Otherwise solo icons get centered. */
+/* line 147, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-noicon .x4-frame-mc {
+  text-align: center; }
+
+/* line 153, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-icon-text-left .x4-btn-icon {
+  background-position: left center; }
+
+/* line 157, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-icon-text-right .x4-btn-icon {
+  background-position: right center; }
+
+/* line 161, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-icon-text-top .x4-btn-icon {
+  background-position: center top; }
+
+/* line 165, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-icon-text-bottom .x4-btn-icon {
+  background-position: center bottom; }
+
+/* line 170, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn button, .x4-btn a {
+  position: relative; }
+  /* line 173, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-btn button .x4-btn-icon, .x4-btn a .x4-btn-icon {
+    position: absolute;
+    background-repeat: no-repeat; }
+
+/* line 180, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-arrow-right {
+  background: transparent no-repeat right center;
+  padding-right: 12px; }
+  /* line 184, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-btn-arrow-right .x4-btn-inner {
+    padding-right: 0 !important; }
+
+/* line 189, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-toolbar .x4-btn-arrow-right {
+  padding-right: 12px; }
+
+/* line 193, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-arrow-bottom {
+  background: transparent no-repeat center bottom;
+  padding-bottom: 12px; }
+
+/* line 198, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-arrow {
+  background-image: url('../../resources/themes/images/default/button/arrow.gif');
+  display: block; }
+
+/* line 206, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-split-right,
+.x4-btn-over .x4-btn-split-right {
+  background: transparent no-repeat right center;
+  background-image: url('../../resources/themes/images/default/button/s-arrow.gif');
+  padding-right: 14px !important; }
+
+/* line 213, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-split-bottom,
+.x4-btn-over .x4-btn-split-bottom {
+  background: transparent no-repeat center bottom;
+  background-image: url('../../resources/themes/images/default/button/s-arrow-b.gif');
+  padding-bottom: 14px; }
+
+/* line 219, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-toolbar .x4-btn-split-right {
+  background-image: url('../../resources/themes/images/default/button/s-arrow-noline.gif');
+  padding-right: 12px !important; }
+
+/* line 224, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-toolbar .x4-btn-split-bottom {
+  background-image: url('../../resources/themes/images/default/button/s-arrow-b-noline.gif'); }
+
+/* line 228, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-split {
+  display: block; }
+
+/* line 233, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-item-disabled,
+.x4-item-disabled * {
+  cursor: default; }
+
+/* line 237, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-cycle-fixed-width .x4-btn-inner {
+  text-align: inherit; }
+
+/* line 241, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-over .x4-btn-split-right {
+  background-image: url('../../resources/themes/images/default/button/s-arrow-o.gif'); }
+
+/* line 242, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-over .x4-btn-split-bottom {
+  background-image: url('../../resources/themes/images/default/button/s-arrow-bo.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-small {
+  border-color: #d1d1d1; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-btn-default-small {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -ms-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-btn-default-small-mc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-bg.gif');
+  background-color: white; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-default-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-default-small-tl,
+.x4-nbr .x4-btn-default-small-bl,
+.x4-nbr .x4-btn-default-small-tr,
+.x4-nbr .x4-btn-default-small-br,
+.x4-nbr .x4-btn-default-small-tc,
+.x4-nbr .x4-btn-default-small-bc,
+.x4-nbr .x4-btn-default-small-ml,
+.x4-nbr .x4-btn-default-small-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-default-small-ml,
+.x4-nbr .x4-btn-default-small-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-default-small-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-btn-default-small-tl,
+.x4-strict .x4-ie7 .x4-btn-default-small-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-small .x4-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 4px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-small-icon button,
+.x4-btn-default-small-icon a,
+.x4-btn-default-small-icon .x4-btn-inner,
+.x4-btn-default-small-noicon button,
+.x4-btn-default-small-noicon a,
+.x4-btn-default-small-noicon .x4-btn-inner {
+  height: 16px;
+  line-height: 16px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-small-icon button, .x4-btn-default-small-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-small-icon .x4-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 16px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-small-icon .x4-btn-icon {
+  width: 16px;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-small-icon-text-left button, .x4-btn-default-small-icon-text-left a {
+  height: 16px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-small-icon-text-left .x4-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-left: 20px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-small-icon-text-left .x4-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-default-small-icon-text-left .x4-btn-icon, .x4-quirks .x4-btn-default-small-icon-text-left .x4-btn-icon {
+    height: 16px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-small-icon-text-right button, .x4-btn-default-small-icon-text-right a {
+  height: 16px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-small-icon-text-right .x4-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-right: 20px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-small-icon-text-right .x4-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-default-small-icon-text-right .x4-btn-icon, .x4-quirks .x4-btn-default-small-icon-text-right .x4-btn-icon {
+    height: 16px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-small-icon-text-top .x4-btn-inner {
+  padding-top: 20px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-small-icon-text-top .x4-btn-icon {
+  width: auto;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-default-small-icon-text-top .x4-btn-icon, .x4-quirks .x4-ie .x4-btn-default-small-icon-text-top .x4-btn-icon {
+    width: 16px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-small-icon-text-bottom .x4-btn-inner {
+  padding-bottom: 20px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-small-icon-text-bottom .x4-btn-icon {
+  width: auto;
+  height: 16px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-default-small-icon-text-bottom .x4-btn-icon, .x4-quirks .x4-ie .x4-btn-default-small-icon-text-bottom .x4-btn-icon {
+    width: 16px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-small-over {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-small-focus {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-small-menu-active,
+.x4-btn-default-small-pressed {
+  border-color: #9ebae1;
+  background-image: none;
+  background-color: #b6cbe4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+  background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -ms-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-small-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -ms-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-btn-default-small-disabled .x4-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-ie .x4-btn-default-small-disabled .x4-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-ie6 .x4-btn-default-small-disabled .x4-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-small-over .x4-frame-tl,
+.x4-nbr .x4-btn-default-small-over .x4-frame-bl,
+.x4-nbr .x4-btn-default-small-over .x4-frame-tr,
+.x4-nbr .x4-btn-default-small-over .x4-frame-br,
+.x4-nbr .x4-btn-default-small-over .x4-frame-tc,
+.x4-nbr .x4-btn-default-small-over .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-small-over .x4-frame-ml,
+.x4-nbr .x4-btn-default-small-over .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-small-over .x4-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-small-focus .x4-frame-tl,
+.x4-nbr .x4-btn-default-small-focus .x4-frame-bl,
+.x4-nbr .x4-btn-default-small-focus .x4-frame-tr,
+.x4-nbr .x4-btn-default-small-focus .x4-frame-br,
+.x4-nbr .x4-btn-default-small-focus .x4-frame-tc,
+.x4-nbr .x4-btn-default-small-focus .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-small-focus .x4-frame-ml,
+.x4-nbr .x4-btn-default-small-focus .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-small-focus .x4-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-small-menu-active .x4-frame-tl,
+.x4-nbr .x4-btn-default-small-menu-active .x4-frame-bl,
+.x4-nbr .x4-btn-default-small-menu-active .x4-frame-tr,
+.x4-nbr .x4-btn-default-small-menu-active .x4-frame-br,
+.x4-nbr .x4-btn-default-small-menu-active .x4-frame-tc,
+.x4-nbr .x4-btn-default-small-menu-active .x4-frame-bc,
+.x4-nbr .x4-btn-default-small-pressed .x4-frame-tl,
+.x4-nbr .x4-btn-default-small-pressed .x4-frame-bl,
+.x4-nbr .x4-btn-default-small-pressed .x4-frame-tr,
+.x4-nbr .x4-btn-default-small-pressed .x4-frame-br,
+.x4-nbr .x4-btn-default-small-pressed .x4-frame-tc,
+.x4-nbr .x4-btn-default-small-pressed .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-small-menu-active .x4-frame-ml,
+.x4-nbr .x4-btn-default-small-menu-active .x4-frame-mr,
+.x4-nbr .x4-btn-default-small-pressed .x4-frame-ml,
+.x4-nbr .x4-btn-default-small-pressed .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-small-menu-active .x4-frame-mc,
+.x4-nbr .x4-btn-default-small-pressed .x4-frame-mc {
+  background-color: #b6cbe4;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-small-disabled .x4-frame-tl,
+.x4-nbr .x4-btn-default-small-disabled .x4-frame-bl,
+.x4-nbr .x4-btn-default-small-disabled .x4-frame-tr,
+.x4-nbr .x4-btn-default-small-disabled .x4-frame-br,
+.x4-nbr .x4-btn-default-small-disabled .x4-frame-tc,
+.x4-nbr .x4-btn-default-small-disabled .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-small-disabled .x4-frame-ml,
+.x4-nbr .x4-btn-default-small-disabled .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-small-disabled .x4-frame-mc {
+  background-color: #f7f7f7;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-disabled-bg.gif'); }
+
+/* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nlg .x4-btn-default-small {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-bg.gif'); }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nlg .x4-btn-default-small-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nlg .x4-btn-default-small-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nlg .x4-btn-default-small-menu-active,
+.x4-nlg .x4-btn-default-small-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-pressed-bg.gif'); }
+
+/* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nlg .x4-btn-default-small-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-disabled-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-medium {
+  border-color: #d1d1d1; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-btn-default-medium {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -ms-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-btn-default-medium-mc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif');
+  background-color: white; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-default-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-default-medium-tl,
+.x4-nbr .x4-btn-default-medium-bl,
+.x4-nbr .x4-btn-default-medium-tr,
+.x4-nbr .x4-btn-default-medium-br,
+.x4-nbr .x4-btn-default-medium-tc,
+.x4-nbr .x4-btn-default-medium-bc,
+.x4-nbr .x4-btn-default-medium-ml,
+.x4-nbr .x4-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-default-medium-ml,
+.x4-nbr .x4-btn-default-medium-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-default-medium-mc {
+  padding: 1px 1px 1px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-btn-default-medium-tl,
+.x4-strict .x4-ie7 .x4-btn-default-medium-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-medium .x4-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 3px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-medium-icon button,
+.x4-btn-default-medium-icon a,
+.x4-btn-default-medium-icon .x4-btn-inner,
+.x4-btn-default-medium-noicon button,
+.x4-btn-default-medium-noicon a,
+.x4-btn-default-medium-noicon .x4-btn-inner {
+  height: 24px;
+  line-height: 24px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-medium-icon button, .x4-btn-default-medium-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-medium-icon .x4-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 24px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-medium-icon .x4-btn-icon {
+  width: 24px;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-medium-icon-text-left button, .x4-btn-default-medium-icon-text-left a {
+  height: 24px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-medium-icon-text-left .x4-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-left: 28px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-medium-icon-text-left .x4-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-default-medium-icon-text-left .x4-btn-icon, .x4-quirks .x4-btn-default-medium-icon-text-left .x4-btn-icon {
+    height: 24px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-medium-icon-text-right button, .x4-btn-default-medium-icon-text-right a {
+  height: 24px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-medium-icon-text-right .x4-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-right: 28px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-medium-icon-text-right .x4-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-default-medium-icon-text-right .x4-btn-icon, .x4-quirks .x4-btn-default-medium-icon-text-right .x4-btn-icon {
+    height: 24px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-medium-icon-text-top .x4-btn-inner {
+  padding-top: 28px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-medium-icon-text-top .x4-btn-icon {
+  width: auto;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-default-medium-icon-text-top .x4-btn-icon, .x4-quirks .x4-ie .x4-btn-default-medium-icon-text-top .x4-btn-icon {
+    width: 24px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-medium-icon-text-bottom .x4-btn-inner {
+  padding-bottom: 28px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-medium-icon-text-bottom .x4-btn-icon {
+  width: auto;
+  height: 24px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-default-medium-icon-text-bottom .x4-btn-icon, .x4-quirks .x4-ie .x4-btn-default-medium-icon-text-bottom .x4-btn-icon {
+    width: 24px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-medium-over {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-medium-focus {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-medium-menu-active,
+.x4-btn-default-medium-pressed {
+  border-color: #9ebae1;
+  background-image: none;
+  background-color: #b6cbe4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+  background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -ms-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-medium-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -ms-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-btn-default-medium-disabled .x4-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-ie .x4-btn-default-medium-disabled .x4-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-ie6 .x4-btn-default-medium-disabled .x4-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-medium-over .x4-frame-tl,
+.x4-nbr .x4-btn-default-medium-over .x4-frame-bl,
+.x4-nbr .x4-btn-default-medium-over .x4-frame-tr,
+.x4-nbr .x4-btn-default-medium-over .x4-frame-br,
+.x4-nbr .x4-btn-default-medium-over .x4-frame-tc,
+.x4-nbr .x4-btn-default-medium-over .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-medium-over .x4-frame-ml,
+.x4-nbr .x4-btn-default-medium-over .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-medium-over .x4-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-medium-focus .x4-frame-tl,
+.x4-nbr .x4-btn-default-medium-focus .x4-frame-bl,
+.x4-nbr .x4-btn-default-medium-focus .x4-frame-tr,
+.x4-nbr .x4-btn-default-medium-focus .x4-frame-br,
+.x4-nbr .x4-btn-default-medium-focus .x4-frame-tc,
+.x4-nbr .x4-btn-default-medium-focus .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-medium-focus .x4-frame-ml,
+.x4-nbr .x4-btn-default-medium-focus .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-medium-focus .x4-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-medium-menu-active .x4-frame-tl,
+.x4-nbr .x4-btn-default-medium-menu-active .x4-frame-bl,
+.x4-nbr .x4-btn-default-medium-menu-active .x4-frame-tr,
+.x4-nbr .x4-btn-default-medium-menu-active .x4-frame-br,
+.x4-nbr .x4-btn-default-medium-menu-active .x4-frame-tc,
+.x4-nbr .x4-btn-default-medium-menu-active .x4-frame-bc,
+.x4-nbr .x4-btn-default-medium-pressed .x4-frame-tl,
+.x4-nbr .x4-btn-default-medium-pressed .x4-frame-bl,
+.x4-nbr .x4-btn-default-medium-pressed .x4-frame-tr,
+.x4-nbr .x4-btn-default-medium-pressed .x4-frame-br,
+.x4-nbr .x4-btn-default-medium-pressed .x4-frame-tc,
+.x4-nbr .x4-btn-default-medium-pressed .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-medium-menu-active .x4-frame-ml,
+.x4-nbr .x4-btn-default-medium-menu-active .x4-frame-mr,
+.x4-nbr .x4-btn-default-medium-pressed .x4-frame-ml,
+.x4-nbr .x4-btn-default-medium-pressed .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-medium-menu-active .x4-frame-mc,
+.x4-nbr .x4-btn-default-medium-pressed .x4-frame-mc {
+  background-color: #b6cbe4;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-medium-disabled .x4-frame-tl,
+.x4-nbr .x4-btn-default-medium-disabled .x4-frame-bl,
+.x4-nbr .x4-btn-default-medium-disabled .x4-frame-tr,
+.x4-nbr .x4-btn-default-medium-disabled .x4-frame-br,
+.x4-nbr .x4-btn-default-medium-disabled .x4-frame-tc,
+.x4-nbr .x4-btn-default-medium-disabled .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-medium-disabled .x4-frame-ml,
+.x4-nbr .x4-btn-default-medium-disabled .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-medium-disabled .x4-frame-mc {
+  background-color: #f7f7f7;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif'); }
+
+/* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nlg .x4-btn-default-medium {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif'); }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nlg .x4-btn-default-medium-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nlg .x4-btn-default-medium-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nlg .x4-btn-default-medium-menu-active,
+.x4-nlg .x4-btn-default-medium-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif'); }
+
+/* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nlg .x4-btn-default-medium-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-large {
+  border-color: #d1d1d1; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-btn-default-large {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: white;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: -ms-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7);
+  background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-btn-default-large-mc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-bg.gif');
+  background-color: white; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-default-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-default-large-tl,
+.x4-nbr .x4-btn-default-large-bl,
+.x4-nbr .x4-btn-default-large-tr,
+.x4-nbr .x4-btn-default-large-br,
+.x4-nbr .x4-btn-default-large-tc,
+.x4-nbr .x4-btn-default-large-bc,
+.x4-nbr .x4-btn-default-large-ml,
+.x4-nbr .x4-btn-default-large-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-default-large-ml,
+.x4-nbr .x4-btn-default-large-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-default-large-mc {
+  padding: 1px 1px 1px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-btn-default-large-tl,
+.x4-strict .x4-ie7 .x4-btn-default-large-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-large .x4-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 3px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-large-icon button,
+.x4-btn-default-large-icon a,
+.x4-btn-default-large-icon .x4-btn-inner,
+.x4-btn-default-large-noicon button,
+.x4-btn-default-large-noicon a,
+.x4-btn-default-large-noicon .x4-btn-inner {
+  height: 32px;
+  line-height: 32px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-large-icon button, .x4-btn-default-large-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-large-icon .x4-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 32px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-large-icon .x4-btn-icon {
+  width: 32px;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-large-icon-text-left button, .x4-btn-default-large-icon-text-left a {
+  height: 32px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-large-icon-text-left .x4-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-left: 36px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-large-icon-text-left .x4-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-default-large-icon-text-left .x4-btn-icon, .x4-quirks .x4-btn-default-large-icon-text-left .x4-btn-icon {
+    height: 32px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-large-icon-text-right button, .x4-btn-default-large-icon-text-right a {
+  height: 32px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-large-icon-text-right .x4-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-right: 36px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-large-icon-text-right .x4-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-default-large-icon-text-right .x4-btn-icon, .x4-quirks .x4-btn-default-large-icon-text-right .x4-btn-icon {
+    height: 32px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-large-icon-text-top .x4-btn-inner {
+  padding-top: 36px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-large-icon-text-top .x4-btn-icon {
+  width: auto;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-default-large-icon-text-top .x4-btn-icon, .x4-quirks .x4-ie .x4-btn-default-large-icon-text-top .x4-btn-icon {
+    width: 32px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-large-icon-text-bottom .x4-btn-inner {
+  padding-bottom: 36px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-large-icon-text-bottom .x4-btn-icon {
+  width: auto;
+  height: 32px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-default-large-icon-text-bottom .x4-btn-icon, .x4-quirks .x4-ie .x4-btn-default-large-icon-text-bottom .x4-btn-icon {
+    width: 32px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-large-over {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-large-focus {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-large-menu-active,
+.x4-btn-default-large-pressed {
+  border-color: #9ebae1;
+  background-image: none;
+  background-color: #b6cbe4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+  background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -ms-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-large-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -ms-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-btn-default-large-disabled .x4-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-ie .x4-btn-default-large-disabled .x4-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-ie6 .x4-btn-default-large-disabled .x4-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-large-over .x4-frame-tl,
+.x4-nbr .x4-btn-default-large-over .x4-frame-bl,
+.x4-nbr .x4-btn-default-large-over .x4-frame-tr,
+.x4-nbr .x4-btn-default-large-over .x4-frame-br,
+.x4-nbr .x4-btn-default-large-over .x4-frame-tc,
+.x4-nbr .x4-btn-default-large-over .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-large-over .x4-frame-ml,
+.x4-nbr .x4-btn-default-large-over .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-large-over .x4-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-large-focus .x4-frame-tl,
+.x4-nbr .x4-btn-default-large-focus .x4-frame-bl,
+.x4-nbr .x4-btn-default-large-focus .x4-frame-tr,
+.x4-nbr .x4-btn-default-large-focus .x4-frame-br,
+.x4-nbr .x4-btn-default-large-focus .x4-frame-tc,
+.x4-nbr .x4-btn-default-large-focus .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-large-focus .x4-frame-ml,
+.x4-nbr .x4-btn-default-large-focus .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-large-focus .x4-frame-mc {
+  background-color: #e4f3ff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-large-menu-active .x4-frame-tl,
+.x4-nbr .x4-btn-default-large-menu-active .x4-frame-bl,
+.x4-nbr .x4-btn-default-large-menu-active .x4-frame-tr,
+.x4-nbr .x4-btn-default-large-menu-active .x4-frame-br,
+.x4-nbr .x4-btn-default-large-menu-active .x4-frame-tc,
+.x4-nbr .x4-btn-default-large-menu-active .x4-frame-bc,
+.x4-nbr .x4-btn-default-large-pressed .x4-frame-tl,
+.x4-nbr .x4-btn-default-large-pressed .x4-frame-bl,
+.x4-nbr .x4-btn-default-large-pressed .x4-frame-tr,
+.x4-nbr .x4-btn-default-large-pressed .x4-frame-br,
+.x4-nbr .x4-btn-default-large-pressed .x4-frame-tc,
+.x4-nbr .x4-btn-default-large-pressed .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-large-menu-active .x4-frame-ml,
+.x4-nbr .x4-btn-default-large-menu-active .x4-frame-mr,
+.x4-nbr .x4-btn-default-large-pressed .x4-frame-ml,
+.x4-nbr .x4-btn-default-large-pressed .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-large-menu-active .x4-frame-mc,
+.x4-nbr .x4-btn-default-large-pressed .x4-frame-mc {
+  background-color: #b6cbe4;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-large-disabled .x4-frame-tl,
+.x4-nbr .x4-btn-default-large-disabled .x4-frame-bl,
+.x4-nbr .x4-btn-default-large-disabled .x4-frame-tr,
+.x4-nbr .x4-btn-default-large-disabled .x4-frame-br,
+.x4-nbr .x4-btn-default-large-disabled .x4-frame-tc,
+.x4-nbr .x4-btn-default-large-disabled .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-large-disabled .x4-frame-ml,
+.x4-nbr .x4-btn-default-large-disabled .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-large-disabled .x4-frame-mc {
+  background-color: #f7f7f7;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-disabled-bg.gif'); }
+
+/* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nlg .x4-btn-default-large {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-bg.gif'); }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nlg .x4-btn-default-large-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nlg .x4-btn-default-large-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nlg .x4-btn-default-large-menu-active,
+.x4-nlg .x4-btn-default-large-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-pressed-bg.gif'); }
+
+/* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nlg .x4-btn-default-large-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-disabled-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-small {
+  border-color: transparent; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-btn-default-toolbar-small {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-btn-default-toolbar-small-mc {
+  background-color: transparent; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-default-toolbar-small {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-default-toolbar-small-tl,
+.x4-nbr .x4-btn-default-toolbar-small-bl,
+.x4-nbr .x4-btn-default-toolbar-small-tr,
+.x4-nbr .x4-btn-default-toolbar-small-br,
+.x4-nbr .x4-btn-default-toolbar-small-tc,
+.x4-nbr .x4-btn-default-toolbar-small-bc,
+.x4-nbr .x4-btn-default-toolbar-small-ml,
+.x4-nbr .x4-btn-default-toolbar-small-mr {
+  zoom: 1; }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-default-toolbar-small-ml,
+.x4-nbr .x4-btn-default-toolbar-small-mr {
+  zoom: 1; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-default-toolbar-small-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-btn-default-toolbar-small-tl,
+.x4-strict .x4-ie7 .x4-btn-default-toolbar-small-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-small .x4-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 4px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-small-icon button,
+.x4-btn-default-toolbar-small-icon a,
+.x4-btn-default-toolbar-small-icon .x4-btn-inner,
+.x4-btn-default-toolbar-small-noicon button,
+.x4-btn-default-toolbar-small-noicon a,
+.x4-btn-default-toolbar-small-noicon .x4-btn-inner {
+  height: 16px;
+  line-height: 16px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-small-icon button, .x4-btn-default-toolbar-small-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-small-icon .x4-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 16px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-small-icon .x4-btn-icon {
+  width: 16px;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-small-icon-text-left button, .x4-btn-default-toolbar-small-icon-text-left a {
+  height: 16px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-small-icon-text-left .x4-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-left: 20px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-small-icon-text-left .x4-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-default-toolbar-small-icon-text-left .x4-btn-icon, .x4-quirks .x4-btn-default-toolbar-small-icon-text-left .x4-btn-icon {
+    height: 16px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-small-icon-text-right button, .x4-btn-default-toolbar-small-icon-text-right a {
+  height: 16px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-small-icon-text-right .x4-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-right: 20px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-small-icon-text-right .x4-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-default-toolbar-small-icon-text-right .x4-btn-icon, .x4-quirks .x4-btn-default-toolbar-small-icon-text-right .x4-btn-icon {
+    height: 16px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-small-icon-text-top .x4-btn-inner {
+  padding-top: 20px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-small-icon-text-top .x4-btn-icon {
+  width: auto;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-default-toolbar-small-icon-text-top .x4-btn-icon, .x4-quirks .x4-ie .x4-btn-default-toolbar-small-icon-text-top .x4-btn-icon {
+    width: 16px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-small-icon-text-bottom .x4-btn-inner {
+  padding-bottom: 20px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-small-icon-text-bottom .x4-btn-icon {
+  width: auto;
+  height: 16px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-default-toolbar-small-icon-text-bottom .x4-btn-icon, .x4-quirks .x4-ie .x4-btn-default-toolbar-small-icon-text-bottom .x4-btn-icon {
+    width: 16px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-small-over {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-small-focus {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-small-menu-active,
+.x4-btn-default-toolbar-small-pressed {
+  border-color: #7a9ac4;
+  background-image: none;
+  background-color: #bccfe5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+  background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -ms-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-small-disabled {
+  background-image: none;
+  background-color: transparent; }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-btn-default-toolbar-small-disabled .x4-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-ie .x4-btn-default-toolbar-small-disabled .x4-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-ie6 .x4-btn-default-toolbar-small-disabled .x4-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-small-over .x4-frame-tl,
+.x4-nbr .x4-btn-default-toolbar-small-over .x4-frame-bl,
+.x4-nbr .x4-btn-default-toolbar-small-over .x4-frame-tr,
+.x4-nbr .x4-btn-default-toolbar-small-over .x4-frame-br,
+.x4-nbr .x4-btn-default-toolbar-small-over .x4-frame-tc,
+.x4-nbr .x4-btn-default-toolbar-small-over .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-small-over .x4-frame-ml,
+.x4-nbr .x4-btn-default-toolbar-small-over .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-small-over .x4-frame-mc {
+  background-color: #dbeeff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-small-focus .x4-frame-tl,
+.x4-nbr .x4-btn-default-toolbar-small-focus .x4-frame-bl,
+.x4-nbr .x4-btn-default-toolbar-small-focus .x4-frame-tr,
+.x4-nbr .x4-btn-default-toolbar-small-focus .x4-frame-br,
+.x4-nbr .x4-btn-default-toolbar-small-focus .x4-frame-tc,
+.x4-nbr .x4-btn-default-toolbar-small-focus .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-small-focus .x4-frame-ml,
+.x4-nbr .x4-btn-default-toolbar-small-focus .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-small-focus .x4-frame-mc {
+  background-color: #dbeeff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-small-menu-active .x4-frame-tl,
+.x4-nbr .x4-btn-default-toolbar-small-menu-active .x4-frame-bl,
+.x4-nbr .x4-btn-default-toolbar-small-menu-active .x4-frame-tr,
+.x4-nbr .x4-btn-default-toolbar-small-menu-active .x4-frame-br,
+.x4-nbr .x4-btn-default-toolbar-small-menu-active .x4-frame-tc,
+.x4-nbr .x4-btn-default-toolbar-small-menu-active .x4-frame-bc,
+.x4-nbr .x4-btn-default-toolbar-small-pressed .x4-frame-tl,
+.x4-nbr .x4-btn-default-toolbar-small-pressed .x4-frame-bl,
+.x4-nbr .x4-btn-default-toolbar-small-pressed .x4-frame-tr,
+.x4-nbr .x4-btn-default-toolbar-small-pressed .x4-frame-br,
+.x4-nbr .x4-btn-default-toolbar-small-pressed .x4-frame-tc,
+.x4-nbr .x4-btn-default-toolbar-small-pressed .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-small-menu-active .x4-frame-ml,
+.x4-nbr .x4-btn-default-toolbar-small-menu-active .x4-frame-mr,
+.x4-nbr .x4-btn-default-toolbar-small-pressed .x4-frame-ml,
+.x4-nbr .x4-btn-default-toolbar-small-pressed .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-small-menu-active .x4-frame-mc,
+.x4-nbr .x4-btn-default-toolbar-small-pressed .x4-frame-mc {
+  background-color: #bccfe5;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-small-disabled .x4-frame-tl,
+.x4-nbr .x4-btn-default-toolbar-small-disabled .x4-frame-bl,
+.x4-nbr .x4-btn-default-toolbar-small-disabled .x4-frame-tr,
+.x4-nbr .x4-btn-default-toolbar-small-disabled .x4-frame-br,
+.x4-nbr .x4-btn-default-toolbar-small-disabled .x4-frame-tc,
+.x4-nbr .x4-btn-default-toolbar-small-disabled .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-small-disabled .x4-frame-ml,
+.x4-nbr .x4-btn-default-toolbar-small-disabled .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-small-disabled .x4-frame-mc {
+  background-color: transparent; }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nlg .x4-btn-default-toolbar-small-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nlg .x4-btn-default-toolbar-small-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nlg .x4-btn-default-toolbar-small-menu-active,
+.x4-nlg .x4-btn-default-toolbar-small-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-medium {
+  border-color: transparent; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-btn-default-toolbar-medium {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-btn-default-toolbar-medium-mc {
+  background-color: transparent; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-default-toolbar-medium {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-default-toolbar-medium-tl,
+.x4-nbr .x4-btn-default-toolbar-medium-bl,
+.x4-nbr .x4-btn-default-toolbar-medium-tr,
+.x4-nbr .x4-btn-default-toolbar-medium-br,
+.x4-nbr .x4-btn-default-toolbar-medium-tc,
+.x4-nbr .x4-btn-default-toolbar-medium-bc,
+.x4-nbr .x4-btn-default-toolbar-medium-ml,
+.x4-nbr .x4-btn-default-toolbar-medium-mr {
+  zoom: 1; }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-default-toolbar-medium-ml,
+.x4-nbr .x4-btn-default-toolbar-medium-mr {
+  zoom: 1; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-default-toolbar-medium-mc {
+  padding: 1px 1px 1px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-btn-default-toolbar-medium-tl,
+.x4-strict .x4-ie7 .x4-btn-default-toolbar-medium-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-medium .x4-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 3px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-medium-icon button,
+.x4-btn-default-toolbar-medium-icon a,
+.x4-btn-default-toolbar-medium-icon .x4-btn-inner,
+.x4-btn-default-toolbar-medium-noicon button,
+.x4-btn-default-toolbar-medium-noicon a,
+.x4-btn-default-toolbar-medium-noicon .x4-btn-inner {
+  height: 24px;
+  line-height: 24px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-medium-icon button, .x4-btn-default-toolbar-medium-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-medium-icon .x4-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 24px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-medium-icon .x4-btn-icon {
+  width: 24px;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-medium-icon-text-left button, .x4-btn-default-toolbar-medium-icon-text-left a {
+  height: 24px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-medium-icon-text-left .x4-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-left: 28px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-medium-icon-text-left .x4-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-default-toolbar-medium-icon-text-left .x4-btn-icon, .x4-quirks .x4-btn-default-toolbar-medium-icon-text-left .x4-btn-icon {
+    height: 24px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-medium-icon-text-right button, .x4-btn-default-toolbar-medium-icon-text-right a {
+  height: 24px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-medium-icon-text-right .x4-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-right: 28px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-medium-icon-text-right .x4-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-default-toolbar-medium-icon-text-right .x4-btn-icon, .x4-quirks .x4-btn-default-toolbar-medium-icon-text-right .x4-btn-icon {
+    height: 24px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-medium-icon-text-top .x4-btn-inner {
+  padding-top: 28px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-medium-icon-text-top .x4-btn-icon {
+  width: auto;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-default-toolbar-medium-icon-text-top .x4-btn-icon, .x4-quirks .x4-ie .x4-btn-default-toolbar-medium-icon-text-top .x4-btn-icon {
+    width: 24px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-medium-icon-text-bottom .x4-btn-inner {
+  padding-bottom: 28px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-medium-icon-text-bottom .x4-btn-icon {
+  width: auto;
+  height: 24px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-default-toolbar-medium-icon-text-bottom .x4-btn-icon, .x4-quirks .x4-ie .x4-btn-default-toolbar-medium-icon-text-bottom .x4-btn-icon {
+    width: 24px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-medium-over {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-medium-focus {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-medium-menu-active,
+.x4-btn-default-toolbar-medium-pressed {
+  border-color: #7a9ac4;
+  background-image: none;
+  background-color: #bccfe5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+  background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -ms-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-medium-disabled {
+  background-image: none;
+  background-color: transparent; }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-btn-default-toolbar-medium-disabled .x4-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-ie .x4-btn-default-toolbar-medium-disabled .x4-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-ie6 .x4-btn-default-toolbar-medium-disabled .x4-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-medium-over .x4-frame-tl,
+.x4-nbr .x4-btn-default-toolbar-medium-over .x4-frame-bl,
+.x4-nbr .x4-btn-default-toolbar-medium-over .x4-frame-tr,
+.x4-nbr .x4-btn-default-toolbar-medium-over .x4-frame-br,
+.x4-nbr .x4-btn-default-toolbar-medium-over .x4-frame-tc,
+.x4-nbr .x4-btn-default-toolbar-medium-over .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-medium-over .x4-frame-ml,
+.x4-nbr .x4-btn-default-toolbar-medium-over .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-medium-over .x4-frame-mc {
+  background-color: #dbeeff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-medium-focus .x4-frame-tl,
+.x4-nbr .x4-btn-default-toolbar-medium-focus .x4-frame-bl,
+.x4-nbr .x4-btn-default-toolbar-medium-focus .x4-frame-tr,
+.x4-nbr .x4-btn-default-toolbar-medium-focus .x4-frame-br,
+.x4-nbr .x4-btn-default-toolbar-medium-focus .x4-frame-tc,
+.x4-nbr .x4-btn-default-toolbar-medium-focus .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-medium-focus .x4-frame-ml,
+.x4-nbr .x4-btn-default-toolbar-medium-focus .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-medium-focus .x4-frame-mc {
+  background-color: #dbeeff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-medium-menu-active .x4-frame-tl,
+.x4-nbr .x4-btn-default-toolbar-medium-menu-active .x4-frame-bl,
+.x4-nbr .x4-btn-default-toolbar-medium-menu-active .x4-frame-tr,
+.x4-nbr .x4-btn-default-toolbar-medium-menu-active .x4-frame-br,
+.x4-nbr .x4-btn-default-toolbar-medium-menu-active .x4-frame-tc,
+.x4-nbr .x4-btn-default-toolbar-medium-menu-active .x4-frame-bc,
+.x4-nbr .x4-btn-default-toolbar-medium-pressed .x4-frame-tl,
+.x4-nbr .x4-btn-default-toolbar-medium-pressed .x4-frame-bl,
+.x4-nbr .x4-btn-default-toolbar-medium-pressed .x4-frame-tr,
+.x4-nbr .x4-btn-default-toolbar-medium-pressed .x4-frame-br,
+.x4-nbr .x4-btn-default-toolbar-medium-pressed .x4-frame-tc,
+.x4-nbr .x4-btn-default-toolbar-medium-pressed .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-medium-menu-active .x4-frame-ml,
+.x4-nbr .x4-btn-default-toolbar-medium-menu-active .x4-frame-mr,
+.x4-nbr .x4-btn-default-toolbar-medium-pressed .x4-frame-ml,
+.x4-nbr .x4-btn-default-toolbar-medium-pressed .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-medium-menu-active .x4-frame-mc,
+.x4-nbr .x4-btn-default-toolbar-medium-pressed .x4-frame-mc {
+  background-color: #bccfe5;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-medium-disabled .x4-frame-tl,
+.x4-nbr .x4-btn-default-toolbar-medium-disabled .x4-frame-bl,
+.x4-nbr .x4-btn-default-toolbar-medium-disabled .x4-frame-tr,
+.x4-nbr .x4-btn-default-toolbar-medium-disabled .x4-frame-br,
+.x4-nbr .x4-btn-default-toolbar-medium-disabled .x4-frame-tc,
+.x4-nbr .x4-btn-default-toolbar-medium-disabled .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-medium-disabled .x4-frame-ml,
+.x4-nbr .x4-btn-default-toolbar-medium-disabled .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-medium-disabled .x4-frame-mc {
+  background-color: transparent; }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nlg .x4-btn-default-toolbar-medium-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nlg .x4-btn-default-toolbar-medium-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nlg .x4-btn-default-toolbar-medium-menu-active,
+.x4-nlg .x4-btn-default-toolbar-medium-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-large {
+  border-color: transparent; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-btn-default-toolbar-large {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-btn-default-toolbar-large-mc {
+  background-color: transparent; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-default-toolbar-large {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-default-toolbar-large-tl,
+.x4-nbr .x4-btn-default-toolbar-large-bl,
+.x4-nbr .x4-btn-default-toolbar-large-tr,
+.x4-nbr .x4-btn-default-toolbar-large-br,
+.x4-nbr .x4-btn-default-toolbar-large-tc,
+.x4-nbr .x4-btn-default-toolbar-large-bc,
+.x4-nbr .x4-btn-default-toolbar-large-ml,
+.x4-nbr .x4-btn-default-toolbar-large-mr {
+  zoom: 1; }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-default-toolbar-large-ml,
+.x4-nbr .x4-btn-default-toolbar-large-mr {
+  zoom: 1; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-default-toolbar-large-mc {
+  padding: 1px 1px 1px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-btn-default-toolbar-large-tl,
+.x4-strict .x4-ie7 .x4-btn-default-toolbar-large-bl {
+  position: relative;
+  right: 0; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-large .x4-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 3px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-large-icon button,
+.x4-btn-default-toolbar-large-icon a,
+.x4-btn-default-toolbar-large-icon .x4-btn-inner,
+.x4-btn-default-toolbar-large-noicon button,
+.x4-btn-default-toolbar-large-noicon a,
+.x4-btn-default-toolbar-large-noicon .x4-btn-inner {
+  height: 32px;
+  line-height: 32px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-large-icon button, .x4-btn-default-toolbar-large-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-large-icon .x4-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 32px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-large-icon .x4-btn-icon {
+  width: 32px;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-large-icon-text-left button, .x4-btn-default-toolbar-large-icon-text-left a {
+  height: 32px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-large-icon-text-left .x4-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-left: 36px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-large-icon-text-left .x4-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-default-toolbar-large-icon-text-left .x4-btn-icon, .x4-quirks .x4-btn-default-toolbar-large-icon-text-left .x4-btn-icon {
+    height: 32px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-large-icon-text-right button, .x4-btn-default-toolbar-large-icon-text-right a {
+  height: 32px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-large-icon-text-right .x4-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-right: 36px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-large-icon-text-right .x4-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-default-toolbar-large-icon-text-right .x4-btn-icon, .x4-quirks .x4-btn-default-toolbar-large-icon-text-right .x4-btn-icon {
+    height: 32px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-large-icon-text-top .x4-btn-inner {
+  padding-top: 36px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-large-icon-text-top .x4-btn-icon {
+  width: auto;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-default-toolbar-large-icon-text-top .x4-btn-icon, .x4-quirks .x4-ie .x4-btn-default-toolbar-large-icon-text-top .x4-btn-icon {
+    width: 32px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-large-icon-text-bottom .x4-btn-inner {
+  padding-bottom: 36px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-large-icon-text-bottom .x4-btn-icon {
+  width: auto;
+  height: 32px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-ie6 .x4-btn-default-toolbar-large-icon-text-bottom .x4-btn-icon, .x4-quirks .x4-ie .x4-btn-default-toolbar-large-icon-text-bottom .x4-btn-icon {
+    width: 32px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-large-over {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-large-focus {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-large-menu-active,
+.x4-btn-default-toolbar-large-pressed {
+  border-color: #7a9ac4;
+  background-image: none;
+  background-color: #bccfe5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+  background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -ms-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-large-disabled {
+  background-image: none;
+  background-color: transparent; }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x4-btn-default-toolbar-large-disabled .x4-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-ie .x4-btn-default-toolbar-large-disabled .x4-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-ie6 .x4-btn-default-toolbar-large-disabled .x4-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 898, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-large-over .x4-frame-tl,
+.x4-nbr .x4-btn-default-toolbar-large-over .x4-frame-bl,
+.x4-nbr .x4-btn-default-toolbar-large-over .x4-frame-tr,
+.x4-nbr .x4-btn-default-toolbar-large-over .x4-frame-br,
+.x4-nbr .x4-btn-default-toolbar-large-over .x4-frame-tc,
+.x4-nbr .x4-btn-default-toolbar-large-over .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-corners.gif'); }
+/* line 902, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-large-over .x4-frame-ml,
+.x4-nbr .x4-btn-default-toolbar-large-over .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-sides.gif'); }
+/* line 905, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-large-over .x4-frame-mc {
+  background-color: #dbeeff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif'); }
+/* line 919, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-large-focus .x4-frame-tl,
+.x4-nbr .x4-btn-default-toolbar-large-focus .x4-frame-bl,
+.x4-nbr .x4-btn-default-toolbar-large-focus .x4-frame-tr,
+.x4-nbr .x4-btn-default-toolbar-large-focus .x4-frame-br,
+.x4-nbr .x4-btn-default-toolbar-large-focus .x4-frame-tc,
+.x4-nbr .x4-btn-default-toolbar-large-focus .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-corners.gif'); }
+/* line 923, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-large-focus .x4-frame-ml,
+.x4-nbr .x4-btn-default-toolbar-large-focus .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-sides.gif'); }
+/* line 926, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-large-focus .x4-frame-mc {
+  background-color: #dbeeff;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif'); }
+/* line 941, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-large-menu-active .x4-frame-tl,
+.x4-nbr .x4-btn-default-toolbar-large-menu-active .x4-frame-bl,
+.x4-nbr .x4-btn-default-toolbar-large-menu-active .x4-frame-tr,
+.x4-nbr .x4-btn-default-toolbar-large-menu-active .x4-frame-br,
+.x4-nbr .x4-btn-default-toolbar-large-menu-active .x4-frame-tc,
+.x4-nbr .x4-btn-default-toolbar-large-menu-active .x4-frame-bc,
+.x4-nbr .x4-btn-default-toolbar-large-pressed .x4-frame-tl,
+.x4-nbr .x4-btn-default-toolbar-large-pressed .x4-frame-bl,
+.x4-nbr .x4-btn-default-toolbar-large-pressed .x4-frame-tr,
+.x4-nbr .x4-btn-default-toolbar-large-pressed .x4-frame-br,
+.x4-nbr .x4-btn-default-toolbar-large-pressed .x4-frame-tc,
+.x4-nbr .x4-btn-default-toolbar-large-pressed .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-corners.gif'); }
+/* line 945, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-large-menu-active .x4-frame-ml,
+.x4-nbr .x4-btn-default-toolbar-large-menu-active .x4-frame-mr,
+.x4-nbr .x4-btn-default-toolbar-large-pressed .x4-frame-ml,
+.x4-nbr .x4-btn-default-toolbar-large-pressed .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-sides.gif'); }
+/* line 948, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-large-menu-active .x4-frame-mc,
+.x4-nbr .x4-btn-default-toolbar-large-pressed .x4-frame-mc {
+  background-color: #bccfe5;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif'); }
+/* line 962, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-large-disabled .x4-frame-tl,
+.x4-nbr .x4-btn-default-toolbar-large-disabled .x4-frame-bl,
+.x4-nbr .x4-btn-default-toolbar-large-disabled .x4-frame-tr,
+.x4-nbr .x4-btn-default-toolbar-large-disabled .x4-frame-br,
+.x4-nbr .x4-btn-default-toolbar-large-disabled .x4-frame-tc,
+.x4-nbr .x4-btn-default-toolbar-large-disabled .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-disabled-corners.gif'); }
+/* line 966, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-large-disabled .x4-frame-ml,
+.x4-nbr .x4-btn-default-toolbar-large-disabled .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-disabled-sides.gif'); }
+/* line 969, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nbr .x4-btn-default-toolbar-large-disabled .x4-frame-mc {
+  background-color: transparent; }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nlg .x4-btn-default-toolbar-large-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nlg .x4-btn-default-toolbar-large-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-nlg .x4-btn-default-toolbar-large-menu-active,
+.x4-nlg .x4-btn-default-toolbar-large-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif'); }
+
+/* line 571, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x4-btn-default-toolbar-small-disabled,
+.x4-btn-default-toolbar-medium-disabled,
+.x4-btn-default-toolbar-large-disabled {
+  border-color: transparent;
+  background-image: none;
+  background: transparent; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x4-btn-group {
+  position: relative;
+  overflow: hidden; }
+
+/* line 11, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x4-btn-group-body {
+  position: relative;
+  zoom: 1;
+  padding: 0 1px; }
+  /* line 15, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x4-btn-group-body .x4-table-layout-cell {
+    vertical-align: top; }
+
+/* line 20, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x4-btn-group-header-text {
+  white-space: nowrap; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-btn-group-default-framed {
+  -moz-border-radius: 2px;
+  -webkit-border-radius: 2px;
+  -o-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -khtml-border-radius: 2px;
+  border-radius: 2px;
+  padding: 1px 1px 1px 1px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #d0def0; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-btn-group-default-framed-mc {
+  background-color: #d0def0; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-group-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000202px 1000202px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-group-default-framed-tl,
+.x4-nbr .x4-btn-group-default-framed-bl,
+.x4-nbr .x4-btn-group-default-framed-tr,
+.x4-nbr .x4-btn-group-default-framed-br,
+.x4-nbr .x4-btn-group-default-framed-tc,
+.x4-nbr .x4-btn-group-default-framed-bc,
+.x4-nbr .x4-btn-group-default-framed-ml,
+.x4-nbr .x4-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/btn-group/btn-group-default-framed-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-group-default-framed-ml,
+.x4-nbr .x4-btn-group-default-framed-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/btn-group/btn-group-default-framed-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-btn-group-default-framed-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-btn-group-default-framed-tl,
+.x4-strict .x4-ie7 .x4-btn-group-default-framed-bl {
+  position: relative;
+  right: 0; }
+
+/* line 60, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x4-btn-group-default-framed {
+  border-color: #b7c8d7;
+  -moz-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  -webkit-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  -o-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset; }
+
+/* line 68, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x4-btn-group-header-default-framed {
+  margin: 2px 2px 0 2px; }
+
+/* line 72, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x4-btn-group-header-body-default-framed {
+  padding: 1px 0;
+  background: #c2d8f0;
+  -moz-border-radius-topleft: 2px;
+  -webkit-border-top-left-radius: 2px;
+  -o-border-top-left-radius: 2px;
+  -ms-border-top-left-radius: 2px;
+  -khtml-border-top-left-radius: 2px;
+  border-top-left-radius: 2px;
+  -moz-border-radius-topright: 2px;
+  -webkit-border-top-right-radius: 2px;
+  -o-border-top-right-radius: 2px;
+  -ms-border-top-right-radius: 2px;
+  -khtml-border-top-right-radius: 2px;
+  border-top-right-radius: 2px; }
+
+/* line 80, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x4-btn-group-header-text-default-framed {
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  color: #3e6aaa; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-datepicker {
+  border: 1px solid #1b376c;
+  background-color: white;
+  position: relative; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x4-datepicker a {
+    -moz-outline: 0 none;
+    outline: 0 none;
+    color: #15428b;
+    text-decoration: none;
+    border-width: 0; }
+
+/* line 25, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-datepicker-inner,
+.x4-datepicker-inner td,
+.x4-datepicker-inner th {
+  border-collapse: separate; }
+
+/* line 29, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-datepicker-header {
+  position: relative;
+  height: 26px;
+  background-image: none;
+  background-color: #23427c;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #264888), color-stop(100%, #1f3a6c));
+  background-image: -webkit-linear-gradient(top, #264888, #1f3a6c);
+  background-image: -moz-linear-gradient(top, #264888, #1f3a6c);
+  background-image: -o-linear-gradient(top, #264888, #1f3a6c);
+  background-image: -ms-linear-gradient(top, #264888, #1f3a6c);
+  background-image: linear-gradient(top, #264888, #1f3a6c); }
+
+/* line 42, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-datepicker-prev,
+.x4-datepicker-next {
+  position: absolute;
+  top: 5px;
+  width: 18px; }
+  /* line 48, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x4-datepicker-prev a,
+  .x4-datepicker-next a {
+    display: block;
+    width: 16px;
+    height: 16px;
+    background-position: top;
+    background-repeat: no-repeat;
+    cursor: pointer;
+    text-decoration: none !important;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+    opacity: 0.7; }
+    /* line 63, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x4-datepicker-prev a:hover,
+    .x4-datepicker-next a:hover {
+      filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+      opacity: 1; }
+
+/* line 69, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-datepicker-next {
+  right: 5px; }
+  /* line 72, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x4-datepicker-next a {
+    background-image: url('../../resources/themes/images/default/shared/right-btn.gif'); }
+
+/* line 77, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-datepicker-prev {
+  left: 5px; }
+  /* line 80, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x4-datepicker-prev a {
+    background-image: url('../../resources/themes/images/default/shared/left-btn.gif'); }
+
+/* line 86, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-item-disabled .x4-datepicker-prev a:hover,
+.x4-item-disabled .x4-datepicker-next a:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+
+/* line 90, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-datepicker-month {
+  padding-top: 3px; }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x4-datepicker-month .x4-btn,
+  .x4-datepicker-month button,
+  .x4-datepicker-month .x4-btn-tc,
+  .x4-datepicker-month .x4-btn-tl,
+  .x4-datepicker-month .x4-btn-tr,
+  .x4-datepicker-month .x4-btn-mc,
+  .x4-datepicker-month .x4-btn-ml,
+  .x4-datepicker-month .x4-btn-mr,
+  .x4-datepicker-month .x4-btn-bc,
+  .x4-datepicker-month .x4-btn-bl,
+  .x4-datepicker-month .x4-btn-br {
+    background: transparent !important;
+    border-width: 0 !important; }
+  /* line 108, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x4-datepicker-month span {
+    color: #fff !important; }
+  /* line 112, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x4-datepicker-month .x4-btn-split-right {
+    background-image: url('../../resources/themes/images/default/button/s-arrow-light.gif');
+    padding-right: 12px; }
+
+/* line 118, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-datepicker-next {
+  text-align: right; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-datepicker-month {
+  text-align: center; }
+  /* line 126, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x4-datepicker-month button {
+    color: white !important; }
+
+/* line 132, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+table.x4-datepicker-inner {
+  width: 100%;
+  table-layout: fixed; }
+  /* line 136, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x4-datepicker-inner th {
+    width: 25px;
+    height: 19px;
+    padding: 0;
+    color: #233d6d;
+    font: normal 10px tahoma, arial, verdana, sans-serif;
+    text-align: right;
+    border-bottom: 1px solid #b2d1f5;
+    border-collapse: separate;
+    background-image: none;
+    background-color: #dfecfb;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #edf4fd), color-stop(100%, #cde1f9));
+    background-image: -webkit-linear-gradient(top, #edf4fd, #cde1f9);
+    background-image: -moz-linear-gradient(top, #edf4fd, #cde1f9);
+    background-image: -o-linear-gradient(top, #edf4fd, #cde1f9);
+    background-image: -ms-linear-gradient(top, #edf4fd, #cde1f9);
+    background-image: linear-gradient(top, #edf4fd, #cde1f9);
+    cursor: default; }
+    /* line 157, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    table.x4-datepicker-inner th span {
+      display: block;
+      padding-right: 7px; }
+  /* line 163, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x4-datepicker-inner tr {
+    height: 20px; }
+  /* line 167, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x4-datepicker-inner td {
+    border: 1px solid;
+    height: 17px;
+    border-color: white;
+    text-align: right;
+    padding: 0; }
+  /* line 175, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x4-datepicker-inner a {
+    padding-right: 4px;
+    display: block;
+    zoom: 1;
+    font: normal 11px tahoma, arial, verdana, sans-serif;
+    color: black;
+    text-decoration: none;
+    text-align: right; }
+  /* line 188, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x4-datepicker-inner .x4-datepicker-active {
+    cursor: pointer;
+    color: black; }
+  /* line 194, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x4-datepicker-inner .x4-datepicker-selected a {
+    background: repeat-x left top;
+    background-color: #dae5f3;
+    border: 1px solid #8db2e3; }
+  /* line 200, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x4-datepicker-inner .x4-datepicker-selected span {
+    font-weight: bold; }
+  /* line 206, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x4-datepicker-inner .x4-datepicker-today a {
+    border: 1px solid;
+    border-color: darkred; }
+  /* line 214, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x4-datepicker-inner .x4-datepicker-prevday a,
+  table.x4-datepicker-inner .x4-datepicker-nextday a {
+    text-decoration: none !important;
+    color: #aaa; }
+  /* line 221, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x4-datepicker-inner a:hover,
+  table.x4-datepicker-inner .x4-datepicker-disabled a:hover {
+    text-decoration: none !important;
+    color: #000;
+    background-color: #ddecfe; }
+  /* line 229, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x4-datepicker-inner .x4-datepicker-disabled a {
+    cursor: default;
+    background-color: #eee;
+    color: #bbb; }
+
+/* line 237, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-datepicker-footer,
+.x4-monthpicker-buttons {
+  position: relative;
+  border-top: 1px solid #b2d1f5;
+  background-image: none;
+  background-color: #dfecfb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dee8f5), color-stop(49%, #d1dff0), color-stop(51%, #c7d8ed), color-stop(100%, #cbdaee));
+  background-image: -webkit-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: -moz-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: -o-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: -ms-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  text-align: center; }
+  /* line 250, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x4-datepicker-footer .x4-btn,
+  .x4-monthpicker-buttons .x4-btn {
+    position: relative;
+    margin: 4px; }
+
+/* line 256, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-item-disabled .x4-datepicker-inner a:hover {
+  background: none; }
+
+/* line 261, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-datepicker .x4-monthpicker {
+  position: absolute;
+  left: 0;
+  top: 0; }
+
+/* line 268, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-monthpicker {
+  border: 1px solid #1b376c;
+  background-color: white; }
+
+/* line 274, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-monthpicker-months,
+.x4-monthpicker-years {
+  float: left;
+  height: 167px;
+  width: 88px; }
+
+/* line 281, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-monthpicker-item {
+  float: left;
+  margin: 4px 0 5px 0;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  text-align: center;
+  vertical-align: middle;
+  height: 18px;
+  width: 43px;
+  border: 0 none; }
+  /* line 295, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x4-monthpicker-item a {
+    display: block;
+    margin: 0 5px;
+    text-decoration: none;
+    color: #15428b;
+    border: 1px solid white;
+    line-height: 17px; }
+    /* line 308, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x4-monthpicker-item a:hover {
+      background-color: #ddecfe; }
+    /* line 312, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x4-monthpicker-item a.x4-monthpicker-selected {
+      background-color: #dfecfb;
+      border: 1px solid #8db2e3; }
+
+/* line 319, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-monthpicker-months {
+  border-right: 1px solid #1b376c;
+  width: 87px; }
+
+/* line 324, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-monthpicker-years .x4-monthpicker-item {
+  width: 44px; }
+
+/* line 328, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-monthpicker-yearnav {
+  height: 28px; }
+  /* line 331, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x4-monthpicker-yearnav button {
+    background-image: url('../../resources/themes/images/default/tools/tool-sprites.gif');
+    height: 15px;
+    width: 15px;
+    padding: 0;
+    margin: 6px 12px 5px 15px;
+    border: 0;
+    outline: 0 none; }
+    /* line 339, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x4-monthpicker-yearnav button::-moz-focus-inner {
+      border: 0;
+      padding: 0; }
+
+/* line 346, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-monthpicker-yearnav-next {
+  background-position: 0 -120px; }
+
+/* line 350, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-monthpicker-yearnav-next-over {
+  cursor: pointer;
+  cursor: hand;
+  background-position: -15px -120px; }
+
+/* line 356, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-monthpicker-yearnav-prev {
+  background-position: 0 -105px; }
+
+/* line 360, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-monthpicker-yearnav-prev-over {
+  cursor: pointer;
+  cursor: hand;
+  background-position: -15px -105px; }
+
+/* line 367, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-monthpicker-small .x4-monthpicker-item {
+  margin: 2px 0 2px 0; }
+/* line 371, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-monthpicker-small .x4-monthpicker-yearnav {
+  height: 23px; }
+/* line 375, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-monthpicker-small .x4-monthpicker-months, .x4-monthpicker-small .x4-monthpicker-years {
+  height: 136px; }
+
+/* line 385, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-quirks .x4-ie7 .x4-monthpicker-buttons .x4-btn,
+.x4-quirks .x4-ie8 .x4-monthpicker-buttons .x4-btn {
+  margin-top: 2px; }
+/* line 391, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-quirks .x4-monthpicker-small .x4-monthpicker-yearnav button {
+  margin-top: 3px;
+  margin-bottom: 3px; }
+
+/* line 397, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-ie6 .x4-monthpicker-small .x4-monthpicker-yearnav button {
+  margin-top: 3px;
+  margin-bottom: 3px; }
+
+/* line 407, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-nlg .x4-datepicker-header {
+  background-image: url('../../resources/themes/images/default/datepicker/datepicker-header-bg.gif');
+  background-repeat: repeat-x;
+  background-position: top left; }
+/* line 416, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x4-nlg .x4-datepicker-footer,
+.x4-nlg .x4-monthpicker-buttons {
+  background-image: url('../../resources/themes/images/default/datepicker/datepicker-footer-bg.gif');
+  background-repeat: repeat-x;
+  background-position: top left; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x4-color-picker {
+  width: 144px;
+  height: 90px;
+  cursor: pointer; }
+
+/* line 12, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x4-color-picker a {
+  border: 1px solid #fff;
+  float: left;
+  padding: 2px;
+  text-decoration: none;
+  -moz-outline: 0 none;
+  outline: 0 none;
+  cursor: pointer; }
+
+/* line 28, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x4-color-picker a:hover,
+.x4-color-picker a.x4-color-picker-selected {
+  border-color: #8bb8f3;
+  background-color: #deecfd; }
+
+/* line 33, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x4-color-picker em {
+  display: block;
+  border: 1px solid #aca899; }
+
+/* line 39, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x4-color-picker em span {
+  cursor: pointer;
+  display: block;
+  height: 10px;
+  width: 10px;
+  line-height: 10px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-menu-body {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  background: #f0f0f0 !important;
+  padding: 2px; }
+
+/* line 12, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-menu-item .x4-form-text {
+  user-select: text;
+  -webkit-user-select: text;
+  -o-user-select: text;
+  -ie-user-select: text;
+  -moz-user-select: text;
+  -ie-user-select: text; }
+
+/* line 21, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-menu-icon-separator {
+  position: absolute;
+  top: 0px;
+  left: 27px;
+  z-index: 0;
+  border-left: solid 1px #e0e0e0;
+  background-color: white;
+  width: 2px;
+  overflow: hidden; }
+
+/* line 33, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-menu-plain .x4-menu-icon-separator {
+  display: none; }
+
+/* line 38, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-menu-focus {
+  display: block;
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px; }
+
+/* line 47, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-menu-item {
+  white-space: nowrap;
+  overflow: hidden;
+  z-index: 1; }
+
+/* line 53, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-menu-item-cmp {
+  margin-bottom: 1px; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-menu-item-link {
+  display: block;
+  margin: 1px;
+  padding: 6px 2px 3px 32px;
+  text-decoration: none !important;
+  line-height: 16px;
+  cursor: default; }
+
+/* line 70, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-opera .x4-menu-item-link {
+  position: relative; }
+
+/* line 76, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-menu-item-icon {
+  width: 16px;
+  height: 16px;
+  position: absolute;
+  top: 5px;
+  left: 4px;
+  background: no-repeat center center; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-menu-item-icon-right {
+  width: 16px;
+  height: 16px;
+  position: absolute;
+  top: 6px;
+  right: 4px;
+  background: no-repeat center center; }
+
+/* line 96, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-menu-item-text {
+  font-size: 11px;
+  color: #222222; }
+
+/* line 102, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-menu-item-checked .x4-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/menu/checked.gif'); }
+/* line 105, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-menu-item-checked .x4-menu-group-icon {
+  background-image: url('../../resources/themes/images/default/menu/group-checked.gif'); }
+
+/* line 111, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-menu-item-unchecked .x4-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/menu/unchecked.gif'); }
+/* line 114, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-menu-item-unchecked .x4-menu-group-icon {
+  background-image: none; }
+
+/* line 119, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-menu-item-separator {
+  height: 2px;
+  border-top: solid 1px #e0e0e0;
+  background-color: white;
+  margin: 2px 0px;
+  overflow: hidden; }
+
+/* line 127, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-menu-item-arrow {
+  position: absolute;
+  width: 12px;
+  height: 9px;
+  top: 9px;
+  right: 0px;
+  background: no-repeat center center;
+  background-image: url('../../resources/themes/images/default/menu/menu-parent.gif'); }
+
+/* line 137, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-menu-item-indent {
+  margin-left: 31px;
+  /* The 2px is the width of the seperator */ }
+
+/* line 141, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-menu-item-active {
+  cursor: pointer; }
+  /* line 144, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x4-menu-item-active .x4-menu-item-link {
+    background-image: none;
+    background-color: #d9e8fb;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7f0fc), color-stop(100%, #c7ddf9));
+    background-image: -webkit-linear-gradient(top, #e7f0fc, #c7ddf9);
+    background-image: -moz-linear-gradient(top, #e7f0fc, #c7ddf9);
+    background-image: -o-linear-gradient(top, #e7f0fc, #c7ddf9);
+    background-image: -ms-linear-gradient(top, #e7f0fc, #c7ddf9);
+    background-image: linear-gradient(top, #e7f0fc, #c7ddf9);
+    margin: 0px;
+    border: 1px solid #a9cbf5;
+    cursor: pointer;
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    -o-border-radius: 3px;
+    -ms-border-radius: 3px;
+    -khtml-border-radius: 3px;
+    border-radius: 3px; }
+
+/* line 153, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-menu-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+
+/* line 160, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-ie .x4-menu-item-disabled .x4-menu-item-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+/* line 164, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-ie .x4-menu-item-disabled .x4-menu-item-text {
+  background-color: transparent; }
+/* line 171, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-strict .x4-ie7m .x4-ie .x4-menu-icon-separator {
+  width: 1px; }
+/* line 175, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-strict .x4-ie7m .x4-ie .x4-menu-item-separator {
+  height: 1px; }
+
+/* line 184, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-ie6 .x4-menu-item-link,
+.x4-ie7 .x4-menu-item-link,
+.x4-quirks .x4-ie8 .x4-menu-item-link {
+  padding-bottom: 2px; }
+
+/* line 192, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-nlg .x4-menu-item-active .x4-menu-item-link {
+  background: #d9e8fb repeat-x left top;
+  background-image: url('../../resources/themes/images/default/menu/menu-item-active-bg.gif'); }
+
+/* line 199, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x4-menu-date-item {
+  border-color: #99BBE8; }
+
+/* line 8, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-panel .x4-grid-body {
+  background: white;
+  border-color: #99bce8;
+  border-style: solid;
+  border-width: 1px;
+  border-top-color: #c5c5c5; }
+/* line 17, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-panel .x4-grid-header-ct-hidden {
+  visibility: hidden; }
+
+/* line 22, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-empty {
+  padding: 10px;
+  color: gray;
+  font: normal 11px tahoma, arial, helvetica, sans-serif; }
+
+/* line 28, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-header-hidden .x4-grid-body {
+  border-top-color: #99bce8 !important; }
+
+/* line 32, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-view {
+  overflow: hidden;
+  position: relative; }
+
+/* line 38, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-table {
+  table-layout: fixed;
+  border-collapse: separate; }
+
+/* line 45, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-autowidth-table table.x4-grid-table {
+  table-layout: auto;
+  width: auto!important; }
+
+/* line 50, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row .x4-grid-table {
+  border-collapse: collapse; }
+
+/* line 54, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-locked .x4-grid-inner-locked {
+  border-width: 0 1px 0 0 !important;
+  border-style: solid; }
+
+/* line 59, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-header-ct {
+  cursor: default;
+  zoom: 1;
+  padding: 0;
+  border: 1px solid #99bce8;
+  border-bottom-color: #c5c5c5;
+  background-image: none;
+  background-color: #c5c5c5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f9f9f9), color-stop(100%, #e3e4e6));
+  background-image: -webkit-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -moz-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -o-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -ms-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: linear-gradient(top, #f9f9f9, #e3e4e6); }
+
+/* line 73, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-accordion-item .x4-grid-header-ct {
+  border-width: 0 0 1px 0!important; }
+
+/* line 77, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-column-header {
+  padding: 0;
+  position: absolute;
+  overflow: hidden;
+  border-right: 1px solid #c5c5c5;
+  border-left: 0 none;
+  border-top: 0 none;
+  border-bottom: 0 none;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.3);
+  color: null;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  background-image: none;
+  background-color: #c5c5c5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f9f9f9), color-stop(100%, #e3e4e6));
+  background-image: -webkit-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -moz-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -o-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: -ms-linear-gradient(top, #f9f9f9, #e3e4e6);
+  background-image: linear-gradient(top, #f9f9f9, #e3e4e6); }
+
+/* line 99, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-group-header {
+  padding: 0;
+  border-left-width: 0; }
+
+/* line 103, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-group-sub-header {
+  background: transparent;
+  border-top: 1px solid #c5c5c5;
+  border-left-width: 0; }
+
+/* line 109, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-column-header-inner {
+  zoom: 1;
+  position: relative;
+  white-space: nowrap;
+  line-height: 15px;
+  padding: 3px 6px 4px; }
+  /* line 116, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x4-column-header-inner .x4-column-header-text {
+    white-space: nowrap; }
+
+/* line 123, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-column-header-over,
+.x4-column-header-sort-ASC,
+.x4-column-header-sort-DESC {
+  border-left-color: #aaccf6;
+  border-right-color: #aaccf6;
+  background-image: none;
+  background-color: #aaccf6;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ebf3fd), color-stop(39%, #ebf3fd), color-stop(40%, #d9e8fb), color-stop(100%, #d9e8fb));
+  background-image: -webkit-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+  background-image: -moz-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+  background-image: -o-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+  background-image: -ms-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb);
+  background-image: linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb); }
+
+/* line 135, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-nlg .x4-grid-header-ct,
+.x4-nlg .x4-column-header {
+  background: repeat-x 0 top;
+  background-image: url('../../resources/themes/images/default/grid/column-header-bg.gif'); }
+/* line 142, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-nlg .x4-column-header-over,
+.x4-nlg .x4-column-header-sort-ASC,
+.x4-nlg .x4-column-header-sort-DESC {
+  background: #ebf3fd repeat-x 0 top;
+  background-image: url('../../resources/themes/images/default/grid/column-header-over-bg.gif'); }
+
+/* line 149, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-column-header-trigger {
+  display: none;
+  height: 100%;
+  width: 14px;
+  background: no-repeat left center;
+  background-color: #c3daf9;
+  background-image: url('../../resources/themes/images/default/grid/grid3-hd-btn.gif');
+  position: absolute;
+  right: 0;
+  top: 0;
+  z-index: 2;
+  cursor: pointer; }
+
+/* line 164, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-column-header-over .x4-column-header-trigger, .x4-column-header-open .x4-column-header-trigger {
+  display: block; }
+
+/* line 169, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-column-header-align-right {
+  text-align: right; }
+  /* line 172, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x4-column-header-align-right .x4-column-header-text {
+    padding-right: 0.5ex;
+    margin-right: 6px; }
+
+/* line 177, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-column-header-align-center {
+  text-align: center; }
+
+/* line 180, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-column-header-align-left {
+  text-align: left; }
+
+/* line 185, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-column-header-sort-ASC .x4-column-header-text {
+  padding-right: 16px;
+  background: no-repeat right 6px;
+  background-image: url('../../resources/themes/images/default/grid/sort_asc.gif'); }
+
+/* line 190, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-column-header-sort-DESC .x4-column-header-text {
+  padding-right: 16px;
+  background: no-repeat right 6px;
+  background-image: url('../../resources/themes/images/default/grid/sort_desc.gif'); }
+
+/* line 197, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row {
+  vertical-align: top; }
+  /* line 199, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x4-grid-row .x4-grid-cell {
+    color: null;
+    font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+    background-color: white;
+    border-color: #ededed;
+    border-style: solid;
+    border-top-color: #fafafa;
+    border-width: 0; }
+
+/* line 212, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-with-row-lines .x4-grid-cell {
+  border-width: 1px 0; }
+
+/* line 216, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-rowwrap-div {
+  border-width: 1px 0;
+  border-color: #ededed;
+  border-style: solid;
+  border-top-color: #fafafa;
+  overflow: hidden; }
+
+/* line 226, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row-alt .x4-grid-cell,
+.x4-grid-row-alt .x4-grid-rowwrap-div {
+  background-color: #fafafa; }
+
+/* line 231, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row-over .x4-grid-cell,
+.x4-grid-row-over .x4-grid-rowwrap-div {
+  border-color: #dddddd;
+  background-color: #efefef; }
+
+/* line 238, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row-focused .x4-grid-cell,
+.x4-grid-row-focused .x4-grid-rowwrap-div {
+  border-color: #dddddd;
+  background-color: #efefef; }
+
+/* line 245, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row-selected .x4-grid-cell,
+.x4-grid-row-selected .x4-grid-rowwrap-div {
+  border-style: dotted;
+  border-color: #a3bae9;
+  background-color: #dfe8f6 !important; }
+
+/* line 254, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-rowwrap-div .x4-grid-cell,
+.x4-grid-rowwrap-div .x4-grid-cell-inner {
+  border-width: 0;
+  background: transparent; }
+
+/* line 261, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row-body-hidden {
+  display: none; }
+
+/* line 265, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-rowbody {
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  padding: 4px; }
+  /* line 270, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x4-grid-rowbody p {
+    margin: 5px 5px 10px 5px; }
+
+/* line 276, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-cell {
+  overflow: hidden; }
+
+/* line 280, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-cell-inner {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis;
+  padding: 2px 6px 3px;
+  white-space: nowrap; }
+
+/* line 291, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-with-row-lines .x4-grid-cell-inner {
+  line-height: 13px;
+  padding-bottom: 4px; }
+
+/* line 297, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-action-col-cell .x4-grid-cell-inner {
+  line-height: 0;
+  padding: 2px; }
+
+/* line 302, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-action-col-cell .x4-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 306, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-with-row-lines .x4-action-col-cell .x4-grid-cell-inner {
+  padding-top: 1px; }
+
+/* line 310, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row .x4-grid-cell-special {
+  padding: 0;
+  border-right: 1px solid #d0d0d0;
+  background-image: none;
+  background-color: #f6f6f6;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #f6f6f6), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(left, #f6f6f6, #e9e9e9);
+  background-image: -moz-linear-gradient(left, #f6f6f6, #e9e9e9);
+  background-image: -o-linear-gradient(left, #f6f6f6, #e9e9e9);
+  background-image: -ms-linear-gradient(left, #f6f6f6, #e9e9e9);
+  background-image: linear-gradient(left, #f6f6f6, #e9e9e9); }
+
+/* line 316, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row .x4-grid-cell-row-checker {
+  vertical-align: middle; }
+
+/*
+IE6-8 have issues with shrinking the TR to 0px (even w/line-height=0), so we
+use an IE-specific trick to make the row disappear. We cannot do this on any
+other browser, because it is not a non-standard thing to do and those other
+browsers will do whacky things with it.
+*/
+/* line 330, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-ie6 .x4-grid-header-row,
+.x4-ie7 .x4-grid-header-row,
+.x4-quirks .x4-ie8 .x4-grid-header-row {
+  position: absolute; }
+
+/* line 335, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row-selected .x4-grid-cell-special {
+  border-right: 1px solid #aaccf6;
+  background-image: none;
+  background-color: #dfe8f6;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dfe8f6), color-stop(100%, #cbdaf0));
+  background-image: -webkit-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: -moz-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: -o-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: -ms-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: linear-gradient(left, #dfe8f6, #cbdaf0); }
+
+/* line 341, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-dirty-cell {
+  background-image: url('../../resources/themes/images/default/grid/dirty.gif');
+  background-position: 0 0;
+  background-repeat: no-repeat; }
+
+/* line 347, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-cell-selected {
+  background-color: #B8CFEE !important; }
+
+/* line 353, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-nlg .x4-grid-cell-special {
+  background-repeat: repeat-y;
+  background-position: top right; }
+/* line 359, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-nlg .x4-grid-row .x4-grid-cell-special,
+.x4-nlg .x4-grid-row-over .x4-grid-cell-special {
+  background-image: url('../../resources/themes/images/default/grid/cell-special-bg.gif'); }
+/* line 365, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-nlg .x4-grid-row-focused .x4-grid-cell-special,
+.x4-nlg .x4-grid-row-selected .x4-grid-cell-special {
+  background-image: url('../../resources/themes/images/default/grid/cell-special-selected-bg.gif'); }
+
+/* line 371, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-with-col-lines .x4-grid-cell {
+  padding-right: 0;
+  border-right: 1px solid #d0d0d0; }
+
+/* line 378, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-property-grid .x4-grid-row .x4-grid-property-name .x4-grid-cell-inner,
+.x4-property-grid .x4-grid-row-over .x4-grid-property-name .x4-grid-cell-inner {
+  padding-left: 12px;
+  background-image: url('../../resources/themes/images/default/grid/property-cell-bg.gif');
+  background-repeat: no-repeat;
+  background-position: -16px 2px; }
+
+/* line 388, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-with-row-lines.x4-property-grid .x4-grid-row .x4-grid-property-name .x4-grid-cell-inner,
+.x4-grid-with-row-lines.x4-property-grid .x4-grid-row-over .x4-grid-property-name .x4-grid-cell-inner {
+  background-position: -16px 1px; }
+
+/* line 394, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-quirks .x4-ie .x4-grid-row .x4-grid-property-name .x4-grid-cell-inner {
+  background-position: -16px 2px; }
+
+/* line 399, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-unselectable {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default; }
+
+/* line 403, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row-body-hidden {
+  display: none; }
+
+/* line 407, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-group-collapsed {
+  display: none; }
+
+/* line 413, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-view .x4-grid-td-expander {
+  vertical-align: top; }
+
+/* line 418, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-td-expander {
+  background: repeat-y right transparent; }
+
+/* line 424, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-view .x4-grid-td-expander .x4-grid-cell-inner {
+  padding: 0 !important; }
+
+/* line 430, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row-expander {
+  background-image: url('../../resources/themes/images/default/grid/group-collapse.gif');
+  background-color: transparent;
+  width: 9px;
+  height: 13px;
+  margin-left: 3px;
+  background-repeat: no-repeat;
+  background-position: 0 -2px; }
+
+/* line 444, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row-collapsed .x4-grid-row-expander {
+  background-image: url('../../resources/themes/images/default/grid/group-expand.gif'); }
+
+/* line 449, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-resize-marker {
+  position: absolute;
+  z-index: 5;
+  top: 0;
+  width: 1px;
+  background-color: #0f0f0f; }
+
+/* line 459, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.col-move-top, .col-move-bottom {
+  width: 9px;
+  height: 9px;
+  position: absolute;
+  top: 0;
+  line-height: 0;
+  font-size: 0;
+  overflow: hidden;
+  z-index: 20000;
+  background: no-repeat left top transparent; }
+
+/* line 471, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.col-move-top {
+  background-image: url('../../resources/themes/images/default/grid/col-move-top.gif'); }
+
+/* line 475, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.col-move-bottom {
+  background-image: url('../../resources/themes/images/default/grid/col-move-bottom.gif'); }
+
+/* line 480, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-tbar-page-number {
+  width: 30px; }
+
+/* line 487, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-group,
+.x4-grid-group-body,
+.x4-grid-group-hd {
+  zoom: 1; }
+
+/* line 491, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-group-hd {
+  padding-top: 6px; }
+  /* line 494, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x4-grid-group-hd .x4-grid-cell-inner {
+    padding: 10px 4px 4px 4px;
+    background: white;
+    border-width: 0 0 2px 0;
+    border-style: solid;
+    border-color: #99bbe8;
+    cursor: pointer; }
+
+/* line 508, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-group-hd-collapsible .x4-grid-group-title {
+  background: transparent no-repeat 0 -1px;
+  background-image: url('../../resources/themes/images/default/grid/group-collapse.gif');
+  padding: 0 0 0 14px; }
+
+/* line 515, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-group-title {
+  color: #3764a0;
+  font: bold 11px tahoma, arial, verdana, sans-serif; }
+
+/* line 521, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-group-hd-collapsed .x4-grid-group-title {
+  background-image: url('../../resources/themes/images/default/grid/group-expand.gif'); }
+
+/* line 526, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-group-collapsed .x4-grid-group-body {
+  display: none; }
+
+/* line 530, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-group-collapsed .x4-grid-group-title {
+  background-image: url('../../resources/themes/images/default/grid/group-expand.gif'); }
+
+/* line 534, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-group-by-icon {
+  background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+
+/* line 538, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-show-groups-icon {
+  background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+
+/* line 542, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-column-header-checkbox .x4-column-header-inner {
+  padding: 0; }
+
+/* line 546, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-cell-special .x4-grid-cell-inner {
+  padding-left: 4px;
+  padding-right: 4px; }
+
+/* line 552, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row-checker,
+.x4-column-header-checkbox .x4-column-header-text {
+  height: 14px;
+  width: 14px;
+  line-height: 0;
+  background-image: url('../../resources/themes/images/default/grid/unchecked.gif');
+  background-position: -1px -1px;
+  background-repeat: no-repeat;
+  background-color: transparent; }
+
+/* line 564, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-column-header-checkbox .x4-column-header-text {
+  display: block;
+  margin: 0 5px; }
+
+/* IE6, IE7, and all IE Quirks mode need line-height to be the same as checkbox height or the header/row height will be too tall */
+/* line 573, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-quirks .x4-ie .x4-grid-row-checker,
+.x4-quirks .x4-ie .x4-column-header-checkbox .x4-column-header-text, .x4-ie7m .x4-grid-row-checker, .x4-ie7m .x4-column-header-checkbox .x4-column-header-text {
+  line-height: 14px; }
+
+/* line 579, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-hd-checker-on .x4-column-header-text {
+  background-image: url('../../resources/themes/images/default/grid/checked.gif'); }
+
+/* line 583, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-cell-row-checker .x4-grid-cell-inner {
+  padding-top: 4px;
+  padding-bottom: 2px;
+  line-height: 14px; }
+
+/* line 588, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-with-row-lines .x4-grid-cell-row-checker .x4-grid-cell-inner {
+  padding-top: 3px; }
+
+/* line 591, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row-checker {
+  margin-left: 1px;
+  background-position: 50% -2px; }
+
+/* line 598, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row-selected .x4-grid-row-checker,
+.x4-grid-row-checked .x4-grid-row-checker {
+  background-image: url('../../resources/themes/images/default/grid/checked.gif'); }
+
+/* line 603, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-tbar-page-first {
+  background-image: url('../../resources/themes/images/default/grid/page-first.gif') !important; }
+
+/* line 607, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-tbar-loading {
+  background-image: url('../../resources/themes/images/default/grid/refresh.gif') !important; }
+
+/* line 611, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-tbar-page-last {
+  background-image: url('../../resources/themes/images/default/grid/page-last.gif') !important; }
+
+/* line 615, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-tbar-page-next {
+  background-image: url('../../resources/themes/images/default/grid/page-next.gif') !important; }
+
+/* line 619, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-tbar-page-prev {
+  background-image: url('../../resources/themes/images/default/grid/page-prev.gif') !important; }
+
+/* line 624, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-item-disabled .x4-tbar-loading {
+  background-image: url('../../resources/themes/images/default/grid/refresh-disabled.gif') !important; }
+/* line 628, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-item-disabled .x4-tbar-page-first {
+  background-image: url('../../resources/themes/images/default/grid/page-first-disabled.gif') !important; }
+/* line 632, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-item-disabled .x4-tbar-page-last {
+  background-image: url('../../resources/themes/images/default/grid/page-last-disabled.gif') !important; }
+/* line 636, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-item-disabled .x4-tbar-page-next {
+  background-image: url('../../resources/themes/images/default/grid/page-next-disabled.gif') !important; }
+/* line 640, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-item-disabled .x4-tbar-page-prev {
+  background-image: url('../../resources/themes/images/default/grid/page-prev-disabled.gif') !important; }
+
+/* line 646, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-hmenu-sort-asc .x4-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/grid/hmenu-asc.gif'); }
+
+/* line 650, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-hmenu-sort-desc .x4-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/grid/hmenu-desc.gif'); }
+
+/* line 654, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-hmenu-lock .x4-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/grid/hmenu-lock.gif'); }
+
+/* line 658, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-hmenu-unlock .x4-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/grid/hmenu-unlock.gif'); }
+
+/* line 662, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-group-by-icon {
+  background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+
+/* line 666, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-cols-icon .x4-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/grid/columns.gif'); }
+
+/* line 670, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-show-groups-icon {
+  background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-drop-indicator {
+  position: absolute;
+  height: 1px;
+  line-height: 0px;
+  background-color: #77BC71;
+  overflow: visible; }
+  /* line 682, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x4-grid-drop-indicator .x4-grid-drop-indicator-left {
+    position: absolute;
+    top: -8px;
+    left: -12px;
+    background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-right.png');
+    height: 16px;
+    width: 16px; }
+  /* line 691, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x4-grid-drop-indicator .x4-grid-drop-indicator-right {
+    position: absolute;
+    top: -8px;
+    right: -11px;
+    background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-left.png');
+    height: 16px;
+    width: 16px; }
+
+/* line 702, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-ie6 .x4-grid-drop-indicator-left {
+  background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-right.gif'); }
+/* line 706, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-ie6 .x4-grid-drop-indicator-right {
+  background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-left.gif'); }
+
+/* line 714, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-editor .x4-form-text {
+  padding: 0 4px; }
+/* line 717, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-editor .x4-form-cb-wrap {
+  padding-top: 3px; }
+
+/* line 723, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row-editor {
+  position: absolute !important;
+  z-index: 1;
+  zoom: 1;
+  overflow: visible !important; }
+  /* line 729, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x4-grid-row-editor .x4-form-text {
+    padding: 0 2px; }
+  /* line 732, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x4-grid-row-editor .x4-form-cb-wrap {
+    padding-top: 0; }
+  /* line 735, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x4-grid-row-editor .x4-form-checkbox {
+    margin-left: -4px; }
+  /* line 738, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x4-grid-row-editor .x4-form-display-field {
+    font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+    padding-top: 0;
+    padding-left: 2px; }
+  /* line 744, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x4-grid-row-editor .x4-panel-body {
+    background-color: #eaf1fb;
+    border-top: 1px solid #99bce8 !important;
+    border-bottom: 1px solid #99bce8 !important; }
+
+/* line 754, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-editor .x4-form-cb-wrap, .x4-grid-row-editor .x4-form-cb-wrap {
+  text-align: center; }
+/* line 757, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-editor .x4-form-trigger, .x4-grid-row-editor .x4-form-trigger {
+  height: 19px; }
+/* line 761, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-editor .x4-form-trigger-wrap .x4-form-spinner-up, .x4-grid-editor .x4-form-trigger-wrap .x4-form-spinner-down, .x4-grid-row-editor .x4-form-trigger-wrap .x4-form-spinner-up, .x4-grid-row-editor .x4-form-trigger-wrap .x4-form-spinner-down {
+  background-image: url('../../resources/themes/images/default/form/spinner-small.gif');
+  height: 10px !important; }
+
+/* line 768, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-editor .x4-form-text, .x4-grid-row-editor .x4-form-text {
+  font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+  height: 18px; }
+
+/* line 776, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-border-box .x4-grid-editor .x4-form-trigger,
+.x4-border-box .x4-grid-row-editor .x4-form-trigger {
+  height: 20px; }
+/* line 779, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-border-box .x4-grid-editor .x4-form-text,
+.x4-border-box .x4-grid-row-editor .x4-form-text {
+  height: 20px;
+  padding-bottom: 1px; }
+
+/* line 787, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-ie .x4-grid-editor .x4-form-text {
+  padding-left: 5px; }
+/* line 790, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-ie .x4-grid-row-editor .x4-form-text {
+  padding-left: 3px; }
+
+/* line 796, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-ie8m .x4-grid-editor .x4-form-text,
+.x4-ie8m .x4-grid-row-editor .x4-form-text {
+  padding-top: 1px; }
+
+/* line 803, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-strict .x4-ie6 .x4-grid-editor .x4-form-text,
+.x4-strict .x4-ie6 .x4-grid-row-editor .x4-form-text,
+.x4-strict .x4-ie7 .x4-grid-editor .x4-form-text,
+.x4-strict .x4-ie7 .x4-grid-row-editor .x4-form-text {
+  height: 17px; }
+
+/* line 809, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-quirks .x4-ie9 .x4-grid-editor .x4-form-text, .x4-quirks .x4-ie9 .x4-grid-row-editor .x4-form-text {
+  line-height: 17px; }
+
+/* line 818, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-opera .x4-grid-editor .x4-form-text {
+  padding-left: 5px; }
+/* line 821, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-opera .x4-grid-row-editor .x4-form-text {
+  padding-left: 3px; }
+
+/* line 828, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row-editor-buttons {
+  background-color: #eaf1fb;
+  position: absolute;
+  bottom: -31px;
+  padding: 4px;
+  height: 32px; }
+  /* line 835, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x4-strict .x4-ie7m .x4-grid-row-editor-buttons {
+    width: 192px;
+    height: 24px; }
+
+/* line 845, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row-editor-buttons-ml,
+.x4-grid-row-editor-buttons-mr,
+.x4-grid-row-editor-buttons-bl,
+.x4-grid-row-editor-buttons-br,
+.x4-grid-row-editor-buttons-bc {
+  position: absolute;
+  overflow: hidden; }
+
+/* line 851, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row-editor-buttons-bl,
+.x4-grid-row-editor-buttons-br {
+  width: 4px;
+  height: 4px;
+  bottom: 0px;
+  background-image: url('../../resources/themes/images/default/panel/panel-default-framed-corners.gif'); }
+
+/* line 857, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row-editor-buttons-bl {
+  left: 0px;
+  background-position: 0px -16px; }
+
+/* line 861, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row-editor-buttons-br {
+  right: 0px;
+  background-position: 0px -20px; }
+
+/* line 866, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row-editor-buttons-bc {
+  position: absolute;
+  left: 4px;
+  bottom: 0px;
+  width: 192px;
+  height: 1px;
+  background-color: #99bce8; }
+
+/* line 876, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row-editor-buttons-ml,
+.x4-grid-row-editor-buttons-mr {
+  height: 27px;
+  width: 1px;
+  top: 1px;
+  background-color: #99bce8; }
+
+/* line 882, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row-editor-buttons-ml {
+  left: 0px; }
+
+/* line 885, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row-editor-buttons-mr {
+  background-position: 0px -20px;
+  right: 0px; }
+
+/* line 891, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row-editor-errors ul {
+  margin-left: 5px; }
+/* line 894, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x4-grid-row-editor-errors li {
+  list-style: disc;
+  margin-left: 15px; }
+
+/*misc*/
+/* line 9, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x4-webkit *:focus {
+  outline: none !important; }
+
+/* line 16, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x4-form-item {
+  vertical-align: top;
+  table-layout: fixed; }
+
+/* line 26, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x4-autocontainer-form-item,
+.x4-anchor-form-item,
+.x4-vbox-form-item,
+.x4-checkboxgroup-form-item,
+.x4-table-form-item {
+  margin-bottom: 5px; }
+
+/* line 31, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x4-form-layout-table {
+  border-collapse: separate;
+  border-spacing: 0 2px; }
+
+/* line 37, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x4-form-item-body {
+  position: relative; }
+
+/* line 42, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x4-form-form-item td {
+  border-top: 1px solid transparent; }
+
+/* line 51, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x4-ie6 .x4-form-layout-table {
+  border-collapse: collapse;
+  border-spacing: 0; }
+/* line 56, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x4-ie6 .x4-form-form-item td {
+  border-top-width: 0; }
+/* line 62, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x4-ie6 td.x4-form-item-pad {
+  height: 5px; }
+
+/* line 68, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x4-editor .x4-form-item-body {
+  padding-bottom: 0; }
+
+/* line 72, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x4-form-item-label {
+  display: block;
+  padding: 3px 0 0;
+  font-size: 12px;
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default; }
+
+/* line 79, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x4-form-item-label-top {
+  display: block;
+  zoom: 1;
+  padding: 0 0 5px 0; }
+
+/* line 85, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x4-form-item-label-right {
+  text-align: right; }
+
+/* line 89, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x4-form-invalid-under {
+  padding: 2px 2px 2px 18px;
+  color: #c0272b;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  line-height: 16px;
+  background: no-repeat 0 2px;
+  background-image: url('../../resources/themes/images/default/form/exclamation.gif'); }
+
+/* line 100, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x4-form-invalid-icon {
+  width: 18px;
+  height: 14px;
+  background: no-repeat center center;
+  background-image: url('../../resources/themes/images/default/form/exclamation.gif');
+  overflow: hidden; }
+  /* line 106, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x4-form-invalid-icon ul {
+    display: block;
+    width: 18px; }
+    /* line 109, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+    .x4-form-invalid-icon ul li {
+      /* prevent inner elements from interfering with QuickTip hovering */
+      display: none; }
+
+/* line 117, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x4-lbl-top-err-icon {
+  margin-bottom: 4px; }
+
+/* line 7, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x4-form-field,
+.x4-form-display-field {
+  margin: 0 0 0 0;
+  font: normal 12px tahoma, arial, verdana, sans-serif;
+  color: black; }
+
+/* line 14, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x4-form-item-hidden {
+  margin: 0; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x4-form-text,
+textarea.x4-form-field {
+  padding: 1px 3px;
+  background: repeat-x 0 0;
+  border: 1px solid;
+  background-color: white;
+  background-image: url('../../resources/themes/images/default/form/text-bg.gif');
+  border-color: #b5b8c8; }
+
+/* line 36, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x4-form-text {
+  height: 18px;
+  line-height: 15px;
+  vertical-align: top; }
+
+/* line 43, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x4-ie8m .x4-form-text {
+  line-height: 15px; }
+
+/* line 48, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x4-border-box .x4-form-text {
+  height: 22px; }
+
+/* line 52, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+textarea.x4-form-field {
+  color: black;
+  overflow: auto;
+  height: auto;
+  line-height: normal;
+  background: repeat-x 0 0;
+  background-color: white;
+  background-image: url('../../resources/themes/images/default/form/text-bg.gif');
+  resize: none; }
+
+/* line 65, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x4-border-box textarea.x4-form-field {
+  height: auto; }
+
+/* line 70, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x4-safari.x4-mac textarea.x4-form-field {
+  margin-bottom: -2px; }
+
+/* line 76, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x4-form-focus,
+textarea.x4-form-focus {
+  border-color: #7eadd9; }
+
+/* line 81, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x4-form-invalid-field,
+textarea.x4-form-invalid-field {
+  background-color: white;
+  background-image: url('../../resources/themes/images/default/grid/invalid_line.gif');
+  background-repeat: repeat-x;
+  background-position: bottom;
+  border-color: #cc3300; }
+
+/* line 91, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x4-form-item {
+  font: normal 12px tahoma, arial, verdana, sans-serif; }
+
+/* line 95, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x4-form-empty-field, textarea.x4-form-empty-field {
+  color: gray; }
+
+/* line 100, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x4-webkit .x4-form-empty-field {
+  line-height: 15px; }
+
+/* line 105, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x4-form-display-field {
+  padding-top: 3px; }
+
+        /*
+        In oldIE, text inputs get a mysterious extra pixel of spacing above and below.
+        This is targeted at IE6-IE7 (all modes) and IE9+ Quirks mode.
+
+        IE8 quirks on Windows 7 requires this fix, but on
+        IE8 quirks on Windows XP, this is breaks the layout.
+        TODO: Check field input heights in IE8 quirks on Windows Vista.
+
+        Since we can't specifically target a specific version of Windows via CSS, we default to fixing it the XP way, for now.
+        */
+/* line 121, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x4-quirks .x4-ie9p .x4-form-text,
+.x4-ie7m .x4-form-text {
+  margin-top: -1px;
+  margin-bottom: -1px; }
+
+/* line 126, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x4-ie .x4-form-file {
+  height: 23px;
+  line-height: 18px;
+  vertical-align: middle; }
+
+/* line 135, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x4-field-default-toolbar .x4-form-text {
+  height: 16px; }
+
+/* line 139, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x4-border-box .x4-field-default-toolbar .x4-form-text {
+  height: 20px; }
+
+/* line 143, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x4-field-default-toolbar .x4-form-item-label-left {
+  padding-left: 4px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x4-fieldset {
+  border: 1px solid #b5b8c8;
+  padding: 10px;
+  margin-bottom: 10px;
+  display: block;
+  /* preserve margins in IE */
+  position: relative; }
+
+/* line 18, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x4-ie .x4-fieldset {
+  padding-top: 0; }
+  /* line 20, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x4-ie .x4-fieldset .x4-fieldset-body {
+    padding-top: 10px; }
+
+/* line 25, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x4-fieldset-header-checkbox {
+  line-height: 14px; }
+
+/* line 29, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x4-fieldset-header {
+  font: 11px/14px bold tahoma, arial, verdana, sans-serif;
+  color: #15428b;
+  padding: 0 3px 1px;
+  overflow: hidden; }
+  /* line 35, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x4-fieldset-header .x4-fieldset-header-text {
+    float: left;
+    padding: 1px 0; }
+  /* line 39, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x4-fieldset-header .x4-fieldset-header-text-collapsible {
+    cursor: pointer; }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x4-fieldset-header .x4-form-item,
+  .x4-fieldset-header .x4-tool {
+    float: left;
+    margin: 1px 0 0 0; }
+  /* line 49, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x4-fieldset-header .x4-form-cb-wrap {
+    padding: 1px 0;
+    font-size: 0;
+    line-height: 0; }
+
+/* line 58, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x4-fieldset-with-title .x4-fieldset-header-checkbox,
+.x4-fieldset-with-title .x4-tool {
+  margin-right: 3px; }
+
+/* line 65, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x4-webkit .x4-fieldset-header {
+  -webkit-padding-start: 3px;
+  -webkit-padding-end: 3px; }
+
+/* line 75, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x4-opera .x4-fieldset-with-legend {
+  margin-top: -1px; }
+/* line 78, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x4-opera.x4-mac .x4-fieldset-header-text {
+  padding: 2px 0 0; }
+
+/* line 86, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x4-strict .x4-ie8 .x4-fieldset-header {
+  margin-bottom: -1px; }
+  /* line 90, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x4-strict .x4-ie8 .x4-fieldset-header .x4-tool,
+  .x4-strict .x4-ie8 .x4-fieldset-header .x4-fieldset-header-text,
+  .x4-strict .x4-ie8 .x4-fieldset-header .x4-fieldset-header-checkbox {
+    position: relative;
+    top: -1px; }
+
+/* line 100, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x4-quirks .x4-ie .x4-fieldset-header,
+.x4-ie8m .x4-fieldset-header {
+  padding-left: 1px;
+  padding-right: 1px; }
+
+/* line 108, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x4-fieldset-collapsed .x4-fieldset-body {
+  display: none; }
+
+/* line 113, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x4-fieldset-collapsed {
+  padding-bottom: 0 !important;
+  border-width: 1px 1px 0 1px !important;
+  border-left-color: transparent !important;
+  border-right-color: transparent !important; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x4-ie6 .x4-fieldset-collapsed {
+  border-width: 1px 0 0 0 !important;
+  padding-bottom: 0 !important;
+  margin-left: 1px;
+  margin-right: 1px; }
+
+/* line 130, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x4-ie .x4-fieldset-bwrap {
+  zoom: 1; }
+
+/* IE legend positioning bug */
+/* line 137, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x4-ie .x4-fieldset-noborder legend {
+  position: relative;
+  margin-bottom: 23px; }
+
+/* line 143, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x4-ie .x4-fieldset-noborder legend span {
+  position: absolute;
+  left: 16px; }
+
+/* line 149, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x4-fieldset {
+  overflow: hidden; }
+
+/* line 153, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x4-fieldset-bwrap {
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 159, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x4-fieldset-body {
+  overflow: hidden; }
+
+/* line 8, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+.x4-form-file-wrap .x4-form-text {
+  color: #777; }
+/* line 12, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+.x4-form-file-wrap .x4-form-file-btn {
+  overflow: hidden; }
+/* line 16, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+.x4-form-file-wrap .x4-form-file-input {
+  position: absolute;
+  top: -4px;
+  right: -2px;
+  height: 30px;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  /* Yes, there's actually a good reason for this...
+   * If the configured buttonText is set to something longer than the default,
+   * then it will quickly exceed the width of the hidden file input's "Browse..."
+   * button, so part of the custom button's clickable area will be covered by
+   * the hidden file input's text box instead. This results in a text-selection
+   * mouse cursor over that part of the button, at least in Firefox, which is
+   * confusing to a user. Giving the hidden file input a huge font-size makes
+   * the native button part very large so it will cover the whole clickable area.
+   */
+  font-size: 100px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x4-form-cb-wrap {
+  padding-top: 3px; }
+
+/* line 11, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x4-form-checkbox,
+.x4-form-radio {
+  vertical-align: -1px;
+  width: 13px;
+  height: 13px;
+  background: no-repeat;
+  background-image: url('../../resources/themes/images/default/form/checkbox.gif');
+  overflow: hidden;
+  padding: 0;
+  border: 0; }
+  /* line 22, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x4-form-checkbox::-moz-focus-inner,
+  .x4-form-radio::-moz-focus-inner {
+    padding: 0;
+    border: 0; }
+
+/* Hack for IE; causes alignment problem in IE9 standards mode so exclude that */
+/* line 31, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x4-nbr.x4-ie .x4-form-checkbox,
+.x4-nbr.x4-ie .x4-form-radio {
+  font-size: 0; }
+
+/* line 38, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x4-form-cb-checked .x4-form-checkbox,
+.x4-form-cb-checked .x4-form-radio {
+  background-position: 0 -13px; }
+
+/* Focused */
+/* line 44, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x4-form-cb-focus {
+  background-position: -13px 0; }
+
+/* line 48, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x4-form-cb-checked .x4-form-cb-focus {
+  background-position: -13px -13px; }
+
+/* Radios */
+/* line 54, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x4-form-radio {
+  background-image: url('../../resources/themes/images/default/form/radio.gif'); }
+
+/* boxLabel */
+/* line 59, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x4-form-cb-label-before {
+  margin-right: 4px; }
+
+/* line 62, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x4-form-cb-label-after {
+  margin-left: 4px; }
+
+/* line 7, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+.x4-form-checkboxgroup-body {
+  padding: 1px 4px 1px 4px; }
+
+/* line 12, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+.x4-form-invalid .x4-form-checkboxgroup-body {
+  border: 1px solid #c30!important;
+  background: transparent repeat-x bottom;
+  background-image: url('../../resources/themes/images/default/grid/invalid_line.gif');
+  padding: 1px 3px 0 3px; }
+
+/* line 20, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+.x4-check-group-alt {
+  background: #d1ddef;
+  border-top: 1px dotted #b5b8c8;
+  border-bottom: 1px dotted #b5b8c8; }
+
+/* line 27, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+.x4-form-check-group-label {
+  color: #333;
+  border-bottom: 1px solid #333;
+  margin: 0 30px 5px 0;
+  padding: 2px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-form-trigger-wrap {
+  vertical-align: top; }
+
+/* line 10, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-form-trigger {
+  background-image: url('../../resources/themes/images/default/form/trigger.gif');
+  background-position: 0 0;
+  width: 17px;
+  height: 21px;
+  border-bottom: 1px solid #b5b8c8;
+  cursor: pointer;
+  cursor: hand;
+  overflow: hidden; }
+
+/* line 24, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-border-box .x4-form-trigger {
+  height: 22px; }
+
+/* line 28, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-field-default-toolbar .x4-form-trigger {
+  height: 19px; }
+
+/* line 32, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-border-box .x4-field-default-toolbar .x4-form-trigger {
+  height: 20px; }
+
+/* line 37, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-form-trigger-over {
+  background-position: -17px 0;
+  border-bottom-color: #7eadd9; }
+
+/* line 43, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-form-trigger-wrap-focus .x4-form-trigger {
+  background-position: -51px 0;
+  border-bottom-color: #7eadd9; }
+
+/* line 49, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-form-trigger-wrap-focus .x4-form-trigger-over {
+  background-position: -68px 0;
+  border-bottom-color: null; }
+
+/* line 58, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-form-trigger-click,
+.x4-form-trigger-wrap-focus .x4-form-trigger-click {
+  background-position: -34px 0;
+  border-bottom-color: null; }
+
+/* line 66, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-form-trigger-icon {
+  height: 16px;
+  background-repeat: no-repeat;
+  background-position: 7px 6px; }
+
+/* line 74, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-pickerfield-open .x4-form-field {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 80, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-pickerfield-open-above .x4-form-field {
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  -o-border-bottom-left-radius: 3px;
+  -ms-border-bottom-left-radius: 3px;
+  -khtml-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-form-arrow-trigger .x4-form-trigger-icon {
+  background-image: url('../../resources/themes/images/default/boundlist/trigger-arrow.png'); }
+
+/* line 92, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-form-date-trigger {
+  background-image: url('../../resources/themes/images/default/form/date-trigger.gif'); }
+
+/* line 99, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-form-trigger-wrap .x4-form-spinner-up,
+.x4-form-trigger-wrap .x4-form-spinner-down {
+  background-image: url('../../resources/themes/images/default/form/spinner.gif');
+  width: 17px !important;
+  height: 11px !important;
+  font-size: 0;
+  /*for IE*/
+  border-bottom: 0; }
+/* line 109, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-form-trigger-wrap .x4-form-spinner-down {
+  background-position: 0 -11px; }
+
+/* line 113, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-form-trigger-wrap-focus .x4-form-spinner-down {
+  background-position: -51px -11px; }
+
+/* line 116, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-form-trigger-wrap .x4-form-spinner-down-over {
+  background-position: -17px -11px; }
+
+/* line 119, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-form-trigger-wrap-focus .x4-form-spinner-down-over {
+  background-position: -68px -11px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-form-trigger-wrap .x4-form-spinner-down-click {
+  background-position: -34px -11px; }
+
+/* line 131, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-field-default-toolbar .x4-form-trigger-wrap .x4-form-spinner-up,
+.x4-field-default-toolbar .x4-form-trigger-wrap .x4-form-spinner-down {
+  background-image: url('../../resources/themes/images/default/form/spinner-small.gif');
+  height: 10px !important; }
+/* line 135, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-field-default-toolbar .x4-form-trigger-wrap .x4-form-spinner-down {
+  background-position: 0 -10px; }
+/* line 139, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-field-default-toolbar .x4-form-trigger-wrap-focus .x4-form-spinner-down {
+  background-position: -51px -10px; }
+/* line 142, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-field-default-toolbar .x4-form-trigger-wrap .x4-form-spinner-down-over {
+  background-position: -17px -10px; }
+/* line 145, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-field-default-toolbar .x4-form-trigger-wrap-focus .x4-form-spinner-down-over {
+  background-position: -68px -10px; }
+/* line 148, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-field-default-toolbar .x4-form-trigger-wrap .x4-form-spinner-down-click {
+  background-position: -34px -10px; }
+
+/* line 154, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-trigger-noedit {
+  cursor: pointer;
+  cursor: hand; }
+
+/* line 160, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-item-disabled .x4-trigger-noedit, .x4-item-disabled .x4-form-trigger {
+  cursor: auto; }
+
+/* line 166, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-form-clear-trigger {
+  background-image: url('../../resources/themes/images/default/form/clear-trigger.gif'); }
+
+/* line 169, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-form-search-trigger {
+  background-image: url('../../resources/themes/images/default/form/search-trigger.gif'); }
+
+/* line 177, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-quirks .prefixie6 .x4-form-trigger-input-cell {
+  height: 22px; }
+/* line 180, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x4-quirks .prefixie6 .x4-field-default-toolbar .x4-form-trigger-input-cell {
+  height: 20px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x4-html-editor-wrap {
+  border: 1px solid #b5b8c8; }
+  /* line 9, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x4-html-editor-wrap .x4-toolbar {
+    border-top-width: 0;
+    border-left-width: 0;
+    border-right-width: 0; }
+  /* line 15, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x4-html-editor-wrap textarea {
+    background-color: white; }
+
+/* line 20, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x4-html-editor-tb .x4-btn-text {
+  background: transparent no-repeat;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 26, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x4-html-editor-tb .x4-edit-bold,
+.x4-menu-item img.x4-edit-bold {
+  background-position: 0 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 32, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x4-html-editor-tb .x4-edit-italic,
+.x4-menu-item img.x4-edit-italic {
+  background-position: -16px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 38, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x4-html-editor-tb .x4-edit-underline,
+.x4-menu-item img.x4-edit-underline {
+  background-position: -32px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 44, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x4-html-editor-tb .x4-edit-forecolor,
+.x4-menu-item img.x4-edit-forecolor {
+  background-position: -160px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 50, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x4-html-editor-tb .x4-edit-backcolor,
+.x4-menu-item img.x4-edit-backcolor {
+  background-position: -176px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 56, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x4-html-editor-tb .x4-edit-justifyleft,
+.x4-menu-item img.x4-edit-justifyleft {
+  background-position: -112px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 62, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x4-html-editor-tb .x4-edit-justifycenter,
+.x4-menu-item img.x4-edit-justifycenter {
+  background-position: -128px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 68, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x4-html-editor-tb .x4-edit-justifyright,
+.x4-menu-item img.x4-edit-justifyright {
+  background-position: -144px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 74, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x4-html-editor-tb .x4-edit-insertorderedlist,
+.x4-menu-item img.x4-edit-insertorderedlist {
+  background-position: -80px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 80, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x4-html-editor-tb .x4-edit-insertunorderedlist,
+.x4-menu-item img.x4-edit-insertunorderedlist {
+  background-position: -96px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 86, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x4-html-editor-tb .x4-edit-increasefontsize,
+.x4-menu-item img.x4-edit-increasefontsize {
+  background-position: -48px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 92, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x4-html-editor-tb .x4-edit-decreasefontsize,
+.x4-menu-item img.x4-edit-decreasefontsize {
+  background-position: -64px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 98, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x4-html-editor-tb .x4-edit-sourceedit,
+.x4-menu-item img.x4-edit-sourceedit {
+  background-position: -192px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 104, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x4-html-editor-tb .x4-edit-createlink,
+.x4-menu-item img.x4-edit-createlink {
+  background-position: -208px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 109, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x4-html-editor-tip .x4-tip-bd .x4-tip-bd-inner {
+  padding: 5px;
+  padding-bottom: 1px; }
+
+/* line 115, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x4-html-editor-tb .x4-toolbar {
+  position: static !important; }
+/* line 118, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x4-html-editor-tb .x4-font-select {
+  font-size: 11px; }
+
+/* line 123, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x4-html-editor-wrap textarea {
+  border: 0;
+  padding: 3px 2px;
+  overflow: auto; }
+
+/* line 7, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel,
+.x4-plain {
+  overflow: hidden;
+  position: relative; }
+
+/* line 24, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-ie .x4-panel-header,
+.x4-ie .x4-panel-header-tl,
+.x4-ie .x4-panel-header-tc,
+.x4-ie .x4-panel-header-tr,
+.x4-ie .x4-panel-header-ml,
+.x4-ie .x4-panel-header-mc,
+.x4-ie .x4-panel-header-mr,
+.x4-ie .x4-panel-header-bl,
+.x4-ie .x4-panel-header-bc,
+.x4-ie .x4-panel-header-br {
+  zoom: 1; }
+
+/* line 30, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-ie8 td.x4-frame-mc {
+  vertical-align: top; }
+
+/* line 37, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-horizontal {
+  padding: 3px 5px 4px; }
+
+/* line 40, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-vertical {
+  padding: 5px 4px; }
+
+/* line 45, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-icon,
+.x4-window-header-icon {
+  width: 16px;
+  height: 16px;
+  background-repeat: no-repeat;
+  background-position: 0 0;
+  vertical-align: middle;
+  margin-right: 4px; }
+
+/* line 56, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-vertical .x4-panel-header-icon,
+.x4-vertical .x4-window-header-icon {
+  margin: 0 0 4px; }
+
+/* line 64, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-draggable,
+.x4-panel-header-draggable .x4-panel-header-text,
+.x4-window-header-draggable,
+.x4-window-header-draggable .x4-window-header-text {
+  cursor: move; }
+
+/* line 70, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-ghost, .x4-window-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+  opacity: 0.65;
+  cursor: move; }
+
+/* line 76, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-horizontal .x4-panel-header-body, .x4-panel-header-horizontal .x4-window-header-body, .x4-panel-header-horizontal .x4-btn-group-header-body, .x4-window-header-horizontal .x4-panel-header-body, .x4-window-header-horizontal .x4-window-header-body, .x4-window-header-horizontal .x4-btn-group-header-body, .x4-btn-group-header-horizontal .x4-panel-header-body, .x4-btn-group-header-horizontal .x4-window-header-body, .x4-btn-group-header-horizontal .x4-btn-group-header-body {
+  width: 100%; }
+
+/* line 82, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-vertical .x4-panel-header-body, .x4-panel-header-vertical .x4-window-header-body, .x4-panel-header-vertical .x4-btn-group-header-body, .x4-window-header-vertical .x4-panel-header-body, .x4-window-header-vertical .x4-window-header-body, .x4-window-header-vertical .x4-btn-group-header-body, .x4-btn-group-header-vertical .x4-panel-header-body, .x4-btn-group-header-vertical .x4-window-header-body, .x4-btn-group-header-vertical .x4-btn-group-header-body {
+  height: 100%; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-text-container {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis; }
+
+/* line 93, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-text {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  white-space: nowrap; }
+
+/* line 100, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-left .x4-vml-base,
+.x4-panel-header-right .x4-vml-base {
+  left: -3px !important; }
+
+/* line 106, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-body {
+  overflow: hidden;
+  position: relative;
+  font-size: 12px; }
+
+/* line 114, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-vertical .x4-surface {
+  padding-left: 1px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-opera .x4-panel-header-vertical .x4-surface,
+.x4-strict .x4-ie9 .x4-panel-header-vertical .x4-surface {
+  padding-left: 2px; }
+
+/* line 129, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-collapsed .x4-panel-header-collapsed-border-top {
+  border-bottom-width: 1px !important; }
+/* line 132, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-collapsed .x4-panel-header-collapsed-border-right {
+  border-left-width: 1px !important; }
+/* line 135, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-collapsed .x4-panel-header-collapsed-border-bottom {
+  border-top-width: 1px !important; }
+/* line 138, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-collapsed .x4-panel-header-collapsed-border-left {
+  border-right-width: 1px !important; }
+
+/* line 145, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-nlg .x4-panel-header-vertical .x4-frame-mc {
+  background-repeat: repeat-y; }
+
+/* line 248, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-default {
+  border-color: #99bce8; }
+
+/* line 253, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-default {
+  font-size: 11px;
+  border-color: #99bce8;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -ms-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+  box-shadow: #f4f8fd 0 1px 0px 0 inset; }
+
+/* line 277, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-nlg .x4-panel-header-default-top {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif'); }
+
+/* line 281, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-nlg .x4-panel-header-default-bottom {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif'); }
+
+/* line 285, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-nlg .x4-panel-header-default-left {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif'); }
+
+/* line 289, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-nlg .x4-panel-header-default-right {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif'); }
+
+/* line 293, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-nlg .x4-panel-header-default-right {
+  background-position: top right; }
+
+/* line 297, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-nlg .x4-panel-header-default-bottom {
+  background-position: bottom left; }
+
+/* line 338, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-text-default {
+  color: #04408c;
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 17px; }
+
+/* line 348, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-body-default {
+  background: white;
+  border-color: #99bce8;
+  color: black;
+  border-width: 1px;
+  border-style: solid; }
+
+/* line 363, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-collapsed .x4-window-header-default,
+.x4-panel-collapsed .x4-panel-header-default {
+  border-color: #99bce8; }
+
+/* line 368, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-default-vertical {
+  border-color: #99bce8; }
+
+/* line 375, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-default-left,
+.x4-panel-header-default-right {
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -ms-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+
+/* line 416, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-collapsed .x4-panel-header-default-top {
+  -moz-border-radius-bottomleft: null;
+  -webkit-border-bottom-left-radius: null;
+  -o-border-bottom-left-radius: null;
+  -ms-border-bottom-left-radius: null;
+  -khtml-border-bottom-left-radius: null;
+  border-bottom-left-radius: null;
+  -moz-border-radius-bottomright: null;
+  -webkit-border-bottom-right-radius: null;
+  -o-border-bottom-right-radius: null;
+  -ms-border-bottom-right-radius: null;
+  -khtml-border-bottom-right-radius: null;
+  border-bottom-right-radius: null; }
+/* line 420, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-collapsed .x4-panel-header-default-right {
+  -moz-border-radius-topleft: null;
+  -webkit-border-top-left-radius: null;
+  -o-border-top-left-radius: null;
+  -ms-border-top-left-radius: null;
+  -khtml-border-top-left-radius: null;
+  border-top-left-radius: null;
+  -moz-border-radius-bottomleft: null;
+  -webkit-border-bottom-left-radius: null;
+  -o-border-bottom-left-radius: null;
+  -ms-border-bottom-left-radius: null;
+  -khtml-border-bottom-left-radius: null;
+  border-bottom-left-radius: null; }
+/* line 424, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-collapsed .x4-panel-header-default-bottom {
+  -moz-border-radius-topleft: null;
+  -webkit-border-top-left-radius: null;
+  -o-border-top-left-radius: null;
+  -ms-border-top-left-radius: null;
+  -khtml-border-top-left-radius: null;
+  border-top-left-radius: null;
+  -moz-border-radius-topright: null;
+  -webkit-border-top-right-radius: null;
+  -o-border-top-right-radius: null;
+  -ms-border-top-right-radius: null;
+  -khtml-border-top-right-radius: null;
+  border-top-right-radius: null; }
+/* line 428, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-collapsed .x4-panel-header-default-left {
+  -moz-border-radius-topright: null;
+  -webkit-border-top-right-radius: null;
+  -o-border-top-right-radius: null;
+  -ms-border-top-right-radius: null;
+  -khtml-border-top-right-radius: null;
+  border-top-right-radius: null;
+  -moz-border-radius-bottomright: null;
+  -webkit-border-bottom-right-radius: null;
+  -o-border-bottom-right-radius: null;
+  -ms-border-bottom-right-radius: null;
+  -khtml-border-bottom-right-radius: null;
+  border-bottom-right-radius: null; }
+
+/* line 434, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-default-top {
+  -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+  box-shadow: #f4f8fd 0 1px 0px 0 inset; }
+
+/* line 438, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-default-right {
+  -moz-box-shadow: #f4f8fd -1px 0 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd -1px 0 0px 0 inset;
+  -o-box-shadow: #f4f8fd -1px 0 0px 0 inset;
+  box-shadow: #f4f8fd -1px 0 0px 0 inset; }
+
+/* line 442, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-default-bottom {
+  -moz-box-shadow: #f4f8fd 0 -1px 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 -1px 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 -1px 0px 0 inset;
+  box-shadow: #f4f8fd 0 -1px 0px 0 inset; }
+
+/* line 446, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-default-left {
+  -moz-box-shadow: #f4f8fd 1px 0 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 1px 0 0px 0 inset;
+  -o-box-shadow: #f4f8fd 1px 0 0px 0 inset;
+  box-shadow: #f4f8fd 1px 0 0px 0 inset; }
+
+/* line 481, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-default-right-tc,
+.x4-panel-header-default-right-mc,
+.x4-panel-header-default-right-bc {
+  background-position: right 0; }
+
+/* line 487, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-default-bottom-tc,
+.x4-panel-header-default-bottom-mc,
+.x4-panel-header-default-bottom-bc {
+  background-position: 0 bottom; }
+
+/* line 248, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-default-framed {
+  border-color: #99bce8; }
+
+/* line 253, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-default-framed {
+  font-size: 11px;
+  border-color: #99bce8;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -ms-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+  box-shadow: #f4f8fd 0 1px 0px 0 inset; }
+
+/* line 277, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-nlg .x4-panel-header-default-framed-top {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif'); }
+
+/* line 281, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-nlg .x4-panel-header-default-framed-bottom {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif'); }
+
+/* line 285, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-nlg .x4-panel-header-default-framed-left {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif'); }
+
+/* line 289, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-nlg .x4-panel-header-default-framed-right {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif'); }
+
+/* line 293, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-nlg .x4-panel-header-default-framed-right {
+  background-position: top right; }
+
+/* line 297, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-nlg .x4-panel-header-default-framed-bottom {
+  background-position: bottom left; }
+
+/* line 305, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-nbr .x4-panel-header-default-framed {
+  background-image: none; }
+
+/* line 317, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-strict .x4-ie9 .x4-panel-header-default-framed-top,
+.x4-nlg.x4-opera .x4-panel-header-default-framed-top,
+.x4-nlg.x4-safari .x4-panel-header-default-framed-top {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif'); }
+/* line 321, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-strict .x4-ie9 .x4-panel-header-default-framed-bottom,
+.x4-nlg.x4-opera .x4-panel-header-default-framed-bottom,
+.x4-nlg.x4-safari .x4-panel-header-default-framed-bottom {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif'); }
+/* line 325, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-strict .x4-ie9 .x4-panel-header-default-framed-left,
+.x4-nlg.x4-opera .x4-panel-header-default-framed-left,
+.x4-nlg.x4-safari .x4-panel-header-default-framed-left {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif'); }
+/* line 329, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-strict .x4-ie9 .x4-panel-header-default-framed-right,
+.x4-nlg.x4-opera .x4-panel-header-default-framed-right,
+.x4-nlg.x4-safari .x4-panel-header-default-framed-right {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif'); }
+
+/* line 338, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-text-default-framed {
+  color: #04408c;
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 17px; }
+
+/* line 348, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-body-default-framed {
+  background: #dfe9f6;
+  border-color: #99bce8;
+  color: black;
+  border-width: 0;
+  border-style: solid; }
+
+/* line 363, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-collapsed .x4-window-header-default-framed,
+.x4-panel-collapsed .x4-panel-header-default-framed {
+  border-color: #99bce8; }
+
+/* line 368, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-default-framed-vertical {
+  border-color: #99bce8; }
+
+/* line 375, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-default-framed-left,
+.x4-panel-header-default-framed-right {
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -ms-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-panel-default-framed {
+  -moz-border-radius: 4px;
+  -webkit-border-radius: 4px;
+  -o-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -khtml-border-radius: 4px;
+  border-radius: 4px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #dfe9f6; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-panel-default-framed-mc {
+  background-color: #dfe9f6; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-default-framed {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1000404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-default-framed-tl,
+.x4-nbr .x4-panel-default-framed-bl,
+.x4-nbr .x4-panel-default-framed-tr,
+.x4-nbr .x4-panel-default-framed-br,
+.x4-nbr .x4-panel-default-framed-tc,
+.x4-nbr .x4-panel-default-framed-bc,
+.x4-nbr .x4-panel-default-framed-ml,
+.x4-nbr .x4-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel/panel-default-framed-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-default-framed-ml,
+.x4-nbr .x4-panel-default-framed-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel/panel-default-framed-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-default-framed-mc {
+  padding: 1px 1px 1px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-panel-default-framed-tl,
+.x4-strict .x4-ie7 .x4-panel-default-framed-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-panel-header-default-framed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 5px 4px 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -ms-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-panel-header-default-framed-top-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1000000px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-top-tl,
+.x4-nbr .x4-panel-header-default-framed-top-bl,
+.x4-nbr .x4-panel-header-default-framed-top-tr,
+.x4-nbr .x4-panel-header-default-framed-top-br,
+.x4-nbr .x4-panel-header-default-framed-top-tc,
+.x4-nbr .x4-panel-header-default-framed-top-bc,
+.x4-nbr .x4-panel-header-default-framed-top-ml,
+.x4-nbr .x4-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-top-ml,
+.x4-nbr .x4-panel-header-default-framed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-top-mc {
+  padding: 0px 2px 4px 2px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-top-tl,
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-panel-header-default-framed-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -ms-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-panel-header-default-framed-right-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000004px 1100400px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-right-tl,
+.x4-nbr .x4-panel-header-default-framed-right-bl,
+.x4-nbr .x4-panel-header-default-framed-right-tr,
+.x4-nbr .x4-panel-header-default-framed-right-br,
+.x4-nbr .x4-panel-header-default-framed-right-tc,
+.x4-nbr .x4-panel-header-default-framed-right-bc,
+.x4-nbr .x4-panel-header-default-framed-right-ml,
+.x4-nbr .x4-panel-header-default-framed-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-corners.gif'); }
+/* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-right-tc,
+.x4-nbr .x4-panel-header-default-framed-right-bc {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-x; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-right-mc {
+  padding: 2px 1px 2px 4px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-right-tl,
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-right-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-panel-header-default-framed-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 3px 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -ms-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-panel-header-default-framed-bottom-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000000px 1000404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-bottom-tl,
+.x4-nbr .x4-panel-header-default-framed-bottom-bl,
+.x4-nbr .x4-panel-header-default-framed-bottom-tr,
+.x4-nbr .x4-panel-header-default-framed-bottom-br,
+.x4-nbr .x4-panel-header-default-framed-bottom-tc,
+.x4-nbr .x4-panel-header-default-framed-bottom-bc,
+.x4-nbr .x4-panel-header-default-framed-bottom-ml,
+.x4-nbr .x4-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-bottom-ml,
+.x4-nbr .x4-panel-header-default-framed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-bottom-mc {
+  padding: 3px 2px 1px 2px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-bottom-tl,
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-panel-header-default-framed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -ms-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-panel-header-default-framed-left-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000400px 1100004px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-left-tl,
+.x4-nbr .x4-panel-header-default-framed-left-bl,
+.x4-nbr .x4-panel-header-default-framed-left-tr,
+.x4-nbr .x4-panel-header-default-framed-left-br,
+.x4-nbr .x4-panel-header-default-framed-left-tc,
+.x4-nbr .x4-panel-header-default-framed-left-bc,
+.x4-nbr .x4-panel-header-default-framed-left-ml,
+.x4-nbr .x4-panel-header-default-framed-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-corners.gif'); }
+/* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-left-tc,
+.x4-nbr .x4-panel-header-default-framed-left-bc {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-x; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-left-mc {
+  padding: 2px 4px 2px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-left-tl,
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-left-bl {
+  position: relative;
+  right: 0; }
+
+/* line 399, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-default-framed-top {
+  -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset; }
+
+/* line 403, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-default-framed-right {
+  -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset;
+  box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset; }
+
+/* line 407, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-default-framed-bottom {
+  -moz-box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset; }
+
+/* line 411, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-default-framed-left {
+  -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset; }
+
+/* line 452, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel .x4-panel-header-default-framed-top {
+  border-bottom-width: 1px !important; }
+
+/* line 456, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel .x4-panel-header-default-framed-right {
+  border-left-width: 1px !important; }
+
+/* line 460, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel .x4-panel-header-default-framed-bottom {
+  border-top-width: 1px !important; }
+
+/* line 464, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel .x4-panel-header-default-framed-left {
+  border-right-width: 1px !important; }
+
+/* line 468, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-default-framed-collapsed {
+  -moz-border-radius: 4px;
+  -webkit-border-radius: 4px;
+  -o-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -khtml-border-radius: 4px;
+  border-radius: 4px; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-panel-header-default-framed-collapsed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 3px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -ms-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-panel-header-default-framed-collapsed-top-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1000404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-top-tl,
+.x4-nbr .x4-panel-header-default-framed-collapsed-top-bl,
+.x4-nbr .x4-panel-header-default-framed-collapsed-top-tr,
+.x4-nbr .x4-panel-header-default-framed-collapsed-top-br,
+.x4-nbr .x4-panel-header-default-framed-collapsed-top-tc,
+.x4-nbr .x4-panel-header-default-framed-collapsed-top-bc,
+.x4-nbr .x4-panel-header-default-framed-collapsed-top-ml,
+.x4-nbr .x4-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-top-ml,
+.x4-nbr .x4-panel-header-default-framed-collapsed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-top-mc {
+  padding: 0px 2px 1px 2px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-top-tl,
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-panel-header-default-framed-collapsed-right {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -ms-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-panel-header-default-framed-collapsed-right-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1100404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-right-tl,
+.x4-nbr .x4-panel-header-default-framed-collapsed-right-bl,
+.x4-nbr .x4-panel-header-default-framed-collapsed-right-tr,
+.x4-nbr .x4-panel-header-default-framed-collapsed-right-br,
+.x4-nbr .x4-panel-header-default-framed-collapsed-right-tc,
+.x4-nbr .x4-panel-header-default-framed-collapsed-right-bc,
+.x4-nbr .x4-panel-header-default-framed-collapsed-right-ml,
+.x4-nbr .x4-panel-header-default-framed-collapsed-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-corners.gif'); }
+/* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-right-tc,
+.x4-nbr .x4-panel-header-default-framed-collapsed-right-bc {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-x; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-right-mc {
+  padding: 2px 1px 2px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-right-tl,
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-right-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-panel-header-default-framed-collapsed-bottom {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 3px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -ms-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-panel-header-default-framed-collapsed-bottom-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1000404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-tl,
+.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-bl,
+.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-tr,
+.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-br,
+.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-tc,
+.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-bc,
+.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-ml,
+.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-ml,
+.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-mc {
+  padding: 0px 2px 1px 2px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-bottom-tl,
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-panel-header-default-framed-collapsed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #cbddf3;
+  background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3));
+  background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: -ms-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3);
+  background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-panel-header-default-framed-collapsed-left-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000404px 1100404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-left-tl,
+.x4-nbr .x4-panel-header-default-framed-collapsed-left-bl,
+.x4-nbr .x4-panel-header-default-framed-collapsed-left-tr,
+.x4-nbr .x4-panel-header-default-framed-collapsed-left-br,
+.x4-nbr .x4-panel-header-default-framed-collapsed-left-tc,
+.x4-nbr .x4-panel-header-default-framed-collapsed-left-bc,
+.x4-nbr .x4-panel-header-default-framed-collapsed-left-ml,
+.x4-nbr .x4-panel-header-default-framed-collapsed-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-corners.gif'); }
+/* line 157, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-left-tc,
+.x4-nbr .x4-panel-header-default-framed-collapsed-left-bc {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-x; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-panel-header-default-framed-collapsed-left-mc {
+  padding: 2px 1px 2px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-left-tl,
+.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-left-bl {
+  position: relative;
+  right: 0; }
+
+/* line 481, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-default-framed-right-tc,
+.x4-panel-header-default-framed-right-mc,
+.x4-panel-header-default-framed-right-bc {
+  background-position: right 0; }
+
+/* line 487, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-default-framed-bottom-tc,
+.x4-panel-header-default-framed-bottom-mc,
+.x4-panel-header-default-framed-bottom-bc {
+  background-position: 0 bottom; }
+
+/* line 197, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x4-panel-header-plain,
+.x4-panel-body-plain {
+  border: 0;
+  padding: 0; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x4-tip {
+  position: absolute;
+  overflow: visible;
+  /*pointer needs to be able to stick out*/
+  border-color: #8eaace; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x4-tip .x4-tip-header .x4-box-item {
+    padding: 3px 3px 0; }
+  /* line 16, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x4-tip .x4-tip-header .x4-tool {
+    padding: 0px 1px 0 0 !important; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-tip {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #e9f2ff; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-tip-mc {
+  background-color: #e9f2ff; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-tip {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100303px 1000303px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-tip-tl,
+.x4-nbr .x4-tip-bl,
+.x4-nbr .x4-tip-tr,
+.x4-nbr .x4-tip-br,
+.x4-nbr .x4-tip-tc,
+.x4-nbr .x4-tip-bc,
+.x4-nbr .x4-tip-ml,
+.x4-nbr .x4-tip-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/tip/tip-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-tip-ml,
+.x4-nbr .x4-tip-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/tip/tip-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-tip-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-tip-tl,
+.x4-strict .x4-ie7 .x4-tip-bl {
+  position: relative;
+  right: 0; }
+
+/* line 31, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x4-tip-header-text {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  color: #444444;
+  font-size: 11px;
+  font-weight: bold; }
+
+/* line 40, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x4-tip-header-draggable .x4-tip-header-text {
+  cursor: move; }
+
+/* line 47, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x4-tip-body,
+.x4-form-invalid-tip-body {
+  overflow: hidden;
+  position: relative;
+  padding: 3px; }
+
+/* line 55, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x4-tip-header,
+.x4-tip-body,
+.x4-form-invalid-tip-body {
+  color: #444444;
+  font-size: 11px;
+  font-weight: normal; }
+  /* line 59, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x4-tip-header a,
+  .x4-tip-body a,
+  .x4-form-invalid-tip-body a {
+    color: #2a2a2a; }
+
+/* line 64, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x4-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  height: 0;
+  width: 0;
+  border-style: solid;
+  border-width: 5px;
+  border-color: #8eaace;
+  zoom: 1; }
+
+/* line 79, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x4-border-box .x4-tip-anchor {
+  width: 10px;
+  height: 10px; }
+
+/* line 84, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x4-tip-anchor-top {
+  border-top-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 97, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x4-tip-anchor-bottom {
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 110, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x4-tip-anchor-left {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-left-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 123, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x4-tip-anchor-right {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-right-color: transparent;
+  _border-top-color: pink;
+  _border-bottom-color: pink;
+  _border-right-color: pink;
+  _filter: chroma(color=pink); }
+
+/* line 137, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x4-form-invalid-tip {
+  border-color: #a1311f;
+  -moz-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  -webkit-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  -o-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset; }
+
+/* line 146, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x4-form-invalid-tip-body {
+  background: 1px 1px no-repeat;
+  background-image: url('../../resources/themes/images/default/form/exclamation.gif');
+  padding-left: 22px; }
+  /* line 151, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x4-form-invalid-tip-body li {
+    margin-bottom: 4px; }
+    /* line 153, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+    .x4-form-invalid-tip-body li.last {
+      margin-bottom: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-form-invalid-tip-default {
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  -o-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -khtml-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: white; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-form-invalid-tip-default-mc {
+  background-color: white; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-form-invalid-tip-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-form-invalid-tip-default-tl,
+.x4-nbr .x4-form-invalid-tip-default-bl,
+.x4-nbr .x4-form-invalid-tip-default-tr,
+.x4-nbr .x4-form-invalid-tip-default-br,
+.x4-nbr .x4-form-invalid-tip-default-tc,
+.x4-nbr .x4-form-invalid-tip-default-bc,
+.x4-nbr .x4-form-invalid-tip-default-ml,
+.x4-nbr .x4-form-invalid-tip-default-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-form-invalid-tip-default-ml,
+.x4-nbr .x4-form-invalid-tip-default-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-form-invalid-tip-default-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-form-invalid-tip-default-tl,
+.x4-strict .x4-ie7 .x4-form-invalid-tip-default-bl {
+  position: relative;
+  right: 0; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x4-slider {
+  zoom: 1; }
+
+/* line 10, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x4-slider-inner {
+  position: relative;
+  left: 0;
+  top: 0;
+  overflow: visible;
+  zoom: 1; }
+
+/* line 18, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x4-slider-focus {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px;
+  line-height: 1px;
+  font-size: 1px;
+  -moz-outline: 0 none;
+  outline: 0 none;
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  display: block;
+  overflow: hidden; }
+
+/* Horizontal styles */
+/* line 34, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x4-slider-horz {
+  padding-left: 7px;
+  background: transparent no-repeat 0 -24px;
+  width: 100%; }
+
+/* line 40, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x4-slider-horz .x4-slider-end {
+  padding-right: 7px;
+  zoom: 1;
+  background: transparent no-repeat right -46px; }
+
+/* line 46, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x4-slider-horz .x4-slider-inner {
+  background: transparent repeat-x 0 -2px;
+  height: 18px; }
+
+/* line 51, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x4-slider-horz .x4-slider-thumb {
+  width: 14px;
+  height: 15px;
+  margin-left: -7px;
+  position: absolute;
+  left: 0;
+  top: 1px;
+  background: transparent no-repeat 0 0; }
+
+/* line 61, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x4-slider-horz .x4-slider-thumb-over {
+  background-position: -14px -15px; }
+
+/* line 65, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x4-slider-horz .x4-slider-thumb-drag {
+  background-position: -28px -30px; }
+
+/* Vertical styles */
+/* line 70, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x4-slider-vert {
+  padding-top: 7px;
+  background: transparent no-repeat -44px 0; }
+
+/* line 75, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x4-slider-vert .x4-slider-end {
+  padding-bottom: 7px;
+  zoom: 1;
+  background: transparent no-repeat -22px bottom;
+  width: 22px; }
+
+/* line 82, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x4-slider-vert .x4-slider-inner {
+  background: transparent repeat-y 0 0;
+  width: 22px; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x4-slider-vert .x4-slider-thumb {
+  width: 15px;
+  height: 14px;
+  margin-bottom: -7px;
+  position: absolute;
+  left: 3px;
+  bottom: 0;
+  background: transparent no-repeat 0 0; }
+
+/* line 97, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x4-slider-vert .x4-slider-thumb-over {
+  background-position: -15px -14px; }
+
+/* line 101, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x4-slider-vert .x4-slider-thumb-drag {
+  background-position: -30px -28px; }
+
+/* line 107, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x4-slider-horz,
+.x4-slider-horz .x4-slider-end,
+.x4-slider-horz .x4-slider-inner {
+  background-image: url('../../resources/themes/images/default/slider/slider-bg.png'); }
+
+/* line 111, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x4-slider-horz .x4-slider-thumb {
+  background-image: url('../../resources/themes/images/default/slider/slider-thumb.png'); }
+
+/* line 117, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x4-slider-vert,
+.x4-slider-vert .x4-slider-end,
+.x4-slider-vert .x4-slider-inner {
+  background-image: url('../../resources/themes/images/default/slider/slider-v-bg.png'); }
+
+/* line 121, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x4-slider-vert .x4-slider-thumb {
+  background-image: url('../../resources/themes/images/default/slider/slider-v-thumb.png'); }
+
+/* line 129, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x4-ie6 .x4-slider-horz,
+.x4-ie6 .x4-slider-horz .x4-slider-end,
+.x4-ie6 .x4-slider-horz .x4-slider-inner {
+  background-image: url('../../resources/themes/images/default/slider/slider-bg.gif'); }
+/* line 133, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x4-ie6 .x4-slider-horz .x4-slider-thumb {
+  background-image: url('../../resources/themes/images/default/slider/slider-thumb.gif'); }
+/* line 139, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x4-ie6 .x4-slider-vert,
+.x4-ie6 .x4-slider-vert .x4-slider-end,
+.x4-ie6 .x4-slider-vert .x4-slider-inner {
+  background-image: url('../../resources/themes/images/default/slider/slider-v-bg.gif'); }
+/* line 143, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x4-ie6 .x4-slider-vert .x4-slider-thumb {
+  background-image: url('../../resources/themes/images/default/slider/slider-v-thumb.gif'); }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x4-progress {
+  position: relative;
+  border-width: 1px;
+  border-style: solid;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0;
+  overflow: hidden;
+  height: 20px; }
+
+/* line 17, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x4-progress-bar {
+  height: 18px;
+  overflow: hidden;
+  position: absolute;
+  width: 0;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0;
+  border-right: 1px solid;
+  border-top: 1px solid; }
+
+/* line 30, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x4-progress-text {
+  overflow: hidden;
+  position: absolute;
+  padding: 0 5px;
+  height: 18px;
+  font-weight: bold;
+  font-size: 11px;
+  line-height: 16px;
+  text-align: center; }
+
+/* line 45, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x4-progress-text-back {
+  padding-top: 1px; }
+
+/* line 50, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x4-strict .x4-ie7m .x4-progress {
+  height: 18px; }
+
+/* line 93, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x4-progress-default {
+  border-color: #6594cf; }
+  /* line 96, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x4-progress-default .x4-progress-bar {
+    border-right-color: #6594cf;
+    border-top-color: #c6d8ed;
+    background-image: none;
+    background-color: #73a3e0;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b2ccee), color-stop(50%, #88b1e5), color-stop(51%, #73a3e0), color-stop(100%, #5e96db));
+    background-image: -webkit-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+    background-image: -moz-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+    background-image: -o-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+    background-image: -ms-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+    background-image: linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db); }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x4-progress-default .x4-progress-text {
+    color: white; }
+  /* line 107, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x4-progress-default .x4-progress-text-back {
+    color: #396295; }
+
+/* line 116, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x4-nlg .x4-progress-default .x4-progress-bar {
+  background: repeat-x;
+  background-image: url('../../resources/themes/images/default/progress/progress-default-bg.gif'); }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x4-toolbar {
+  font-size: 11px;
+  border: 1px solid;
+  padding: 2px 0 2px 2px; }
+  /* line 13, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x4-toolbar .x4-form-item-label {
+    font-size: 11px;
+    line-height: 15px; }
+  /* line 18, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x4-toolbar .x4-toolbar-item {
+    margin: 0 2px 0 0; }
+  /* line 22, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x4-toolbar .x4-toolbar-text {
+    margin-left: 4px;
+    margin-right: 6px;
+    white-space: nowrap;
+    color: #4c4c4c;
+    line-height: 16px;
+    font-family: tahoma, arial, verdana, sans-serif;
+    font-size: 11px;
+    font-weight: normal; }
+  /* line 33, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x4-toolbar .x4-toolbar-separator {
+    display: block;
+    font-size: 1px;
+    overflow: hidden;
+    cursor: default;
+    border: 0; }
+  /* line 41, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x4-toolbar .x4-toolbar-separator-horizontal {
+    margin: 0 3px 0 2px;
+    height: 14px;
+    width: 0px;
+    border-left: 1px solid #98c8ff;
+    border-right: 1px solid white; }
+
+/* line 53, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x4-quirks .x4-ie .x4-toolbar .x4-toolbar-separator-horizontal {
+  width: 2px; }
+
+/* line 58, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x4-toolbar-footer {
+  background: transparent;
+  border: 0px none;
+  margin-top: 3px;
+  padding: 2px 0 2px 6px; }
+  /* line 65, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x4-toolbar-footer .x4-box-inner {
+    border-width: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x4-toolbar-footer .x4-toolbar-item {
+    margin: 0 6px 0 0; }
+
+/* line 74, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x4-toolbar-vertical {
+  padding: 2px 2px 0 2px; }
+  /* line 77, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x4-toolbar-vertical .x4-toolbar-item {
+    margin: 0 0 2px 0; }
+  /* line 81, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x4-toolbar-vertical .x4-toolbar-text {
+    margin-top: 4px;
+    margin-bottom: 6px; }
+  /* line 86, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x4-toolbar-vertical .x4-toolbar-separator-vertical {
+    margin: 2px 5px 3px 5px;
+    height: 0px;
+    width: 10px;
+    line-height: 0px;
+    border-top: 1px solid #98c8ff;
+    border-bottom: 1px solid white; }
+
+/* line 98, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x4-toolbar-scroller {
+  padding-left: 0; }
+
+/* line 102, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x4-toolbar-spacer {
+  width: 2px; }
+
+/* line 107, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x4-toolbar-more-icon {
+  background-image: url('../../resources/themes/images/default/toolbar/more.gif') !important;
+  background-position: 2px center !important;
+  background-repeat: no-repeat; }
+
+/* line 144, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x4-toolbar-default {
+  border-color: #99bce8;
+  background-image: none;
+  background-color: #d3e1f1;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dfe9f5), color-stop(100%, #d3e1f1));
+  background-image: -webkit-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: -moz-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: -o-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: -ms-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: linear-gradient(top, #dfe9f5, #d3e1f1); }
+
+/* line 155, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x4-nlg .x4-toolbar-default {
+  background-image: url('../../resources/themes/images/default/toolbar/toolbar-default-bg.gif') !important;
+  background-repeat: repeat-x; }
+
+/* line 123, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x4-toolbar-plain {
+  border: 0; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window {
+  outline: none;
+  overflow: hidden; }
+  /* line 10, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x4-window .x4-window-wrap {
+    position: relative; }
+
+/* line 15, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-body {
+  position: relative;
+  border-style: solid;
+  overflow: hidden; }
+
+/* line 24, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-maximized .x4-window-wrap .x4-window-header {
+  -moz-border-radius: 0 !important;
+  -webkit-border-radius: 0 !important;
+  -o-border-radius: 0 !important;
+  -ms-border-radius: 0 !important;
+  -khtml-border-radius: 0 !important;
+  border-radius: 0 !important; }
+
+/* line 30, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-header-top {
+  margin-bottom: -2px; }
+
+/* line 33, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-header-body-horizontal {
+  margin-top: -1px; }
+
+/* line 37, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-header-bottom {
+  margin-top: -1px;
+  margin-bottom: -1px; }
+
+/* line 42, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-header-left {
+  margin-right: -1px; }
+
+/* line 46, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-header-right {
+  margin-left: -1px; }
+
+/* line 51, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-header-vertical .x4-surface {
+  padding-left: 1px; }
+
+/* line 58, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-collapsed .x4-window-header-vertical {
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  -o-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -khtml-border-radius: 5px;
+  border-radius: 5px; }
+/* line 61, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-collapsed .x4-window-header-horizontal {
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  -o-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -khtml-border-radius: 5px;
+  border-radius: 5px; }
+/* line 66, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-collapsed .x4-window-header-left {
+  padding-right: 5px !important;
+  margin-right: 0; }
+/* line 71, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-collapsed .x4-window-header-right {
+  padding-left: 5px !important;
+  margin-left: 0; }
+/* line 76, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-collapsed .x4-window-header-top {
+  padding-bottom: 5px !important;
+  margin-bottom: -1px; }
+/* line 81, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-collapsed .x4-window-header-bottom {
+  padding-top: 5px !important;
+  margin-top: 0; }
+
+/* line 89, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-header-left .x4-vml-base,
+.x4-window-header-right .x4-vml-base {
+  left: -3px !important; }
+
+/* line 97, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-opera .x4-window-header-vertical .x4-surface,
+.x4-strict .x4-ie9 .x4-window-header-vertical .x4-surface {
+  padding-left: 2px; }
+
+/* line 103, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-header-text-container {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis; }
+
+/* line 109, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-header-text {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  white-space: nowrap; }
+
+/* line 159, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-default {
+  border-color: #a2b1c5;
+  -moz-border-radius: 5px 5px;
+  -webkit-border-radius: 5px 5px;
+  -o-border-radius: 5px 5px;
+  -ms-border-radius: 5px 5px;
+  -khtml-border-radius: 5px 5px;
+  border-radius: 5px 5px;
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-window-default {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-window-default-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-default {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-default-tl,
+.x4-nbr .x4-window-default-bl,
+.x4-nbr .x4-window-default-tr,
+.x4-nbr .x4-window-default-br,
+.x4-nbr .x4-window-default-tc,
+.x4-nbr .x4-window-default-bc,
+.x4-nbr .x4-window-default-ml,
+.x4-nbr .x4-window-default-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window/window-default-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-default-ml,
+.x4-nbr .x4-window-default-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window/window-default-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-default-mc {
+  padding: 0px 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-window-default-tl,
+.x4-strict .x4-ie7 .x4-window-default-bl {
+  position: relative;
+  right: 0; }
+
+/* line 178, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-body-default {
+  border-color: #99bbe8;
+  border-width: 1px;
+  background: #dfe8f6;
+  color: black; }
+
+/* line 188, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-header-default {
+  font-size: 11px;
+  border-color: #a2b1c5;
+  zoom: 1; }
+
+/* line 194, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-header-text-default {
+  color: #04468c;
+  font-weight: bold;
+  line-height: 17px;
+  font-family: tahoma, arial, verdana, sans-serif;
+  font-size: 11px; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-window-header-default-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 5px 0 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-window-header-default-top-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000000px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-top-tl,
+.x4-nbr .x4-window-header-default-top-bl,
+.x4-nbr .x4-window-header-default-top-tr,
+.x4-nbr .x4-window-header-default-top-br,
+.x4-nbr .x4-window-header-default-top-tc,
+.x4-nbr .x4-window-header-default-top-bc,
+.x4-nbr .x4-window-header-default-top-ml,
+.x4-nbr .x4-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-top-ml,
+.x4-nbr .x4-window-header-default-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-top-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-top-mc {
+  padding: 0px 1px 0 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-window-header-default-top-tl,
+.x4-strict .x4-ie7 .x4-window-header-default-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-window-header-default-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 0;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-window-header-default-right-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000005px 1000500px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-right-tl,
+.x4-nbr .x4-window-header-default-right-bl,
+.x4-nbr .x4-window-header-default-right-tr,
+.x4-nbr .x4-window-header-default-right-br,
+.x4-nbr .x4-window-header-default-right-tc,
+.x4-nbr .x4-window-header-default-right-bc,
+.x4-nbr .x4-window-header-default-right-ml,
+.x4-nbr .x4-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-right-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-right-ml,
+.x4-nbr .x4-window-header-default-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-right-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-right-mc {
+  padding: 1px 0px 1px 0; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-window-header-default-right-tl,
+.x4-strict .x4-ie7 .x4-window-header-default-right-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-window-header-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 0 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-window-header-default-bottom-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000000px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-bottom-tl,
+.x4-nbr .x4-window-header-default-bottom-bl,
+.x4-nbr .x4-window-header-default-bottom-tr,
+.x4-nbr .x4-window-header-default-bottom-br,
+.x4-nbr .x4-window-header-default-bottom-tc,
+.x4-nbr .x4-window-header-default-bottom-bc,
+.x4-nbr .x4-window-header-default-bottom-ml,
+.x4-nbr .x4-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-bottom-ml,
+.x4-nbr .x4-window-header-default-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-bottom-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-bottom-mc {
+  padding: 0 1px 0px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-window-header-default-bottom-tl,
+.x4-strict .x4-ie7 .x4-window-header-default-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-window-header-default-left {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 0px 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-window-header-default-left-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000500px 1000005px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-left-tl,
+.x4-nbr .x4-window-header-default-left-bl,
+.x4-nbr .x4-window-header-default-left-tr,
+.x4-nbr .x4-window-header-default-left-br,
+.x4-nbr .x4-window-header-default-left-tc,
+.x4-nbr .x4-window-header-default-left-bc,
+.x4-nbr .x4-window-header-default-left-ml,
+.x4-nbr .x4-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-left-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-left-ml,
+.x4-nbr .x4-window-header-default-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-left-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-left-mc {
+  padding: 1px 0px 1px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-window-header-default-left-tl,
+.x4-strict .x4-ie7 .x4-window-header-default-left-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-window-header-default-collapsed-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-window-header-default-collapsed-top-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-collapsed-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-collapsed-top-tl,
+.x4-nbr .x4-window-header-default-collapsed-top-bl,
+.x4-nbr .x4-window-header-default-collapsed-top-tr,
+.x4-nbr .x4-window-header-default-collapsed-top-br,
+.x4-nbr .x4-window-header-default-collapsed-top-tc,
+.x4-nbr .x4-window-header-default-collapsed-top-bc,
+.x4-nbr .x4-window-header-default-collapsed-top-ml,
+.x4-nbr .x4-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-collapsed-top-ml,
+.x4-nbr .x4-window-header-default-collapsed-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-top-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-collapsed-top-mc {
+  padding: 0px 1px 0px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-window-header-default-collapsed-top-tl,
+.x4-strict .x4-ie7 .x4-window-header-default-collapsed-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-window-header-default-collapsed-right {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-window-header-default-collapsed-right-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-collapsed-right {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-collapsed-right-tl,
+.x4-nbr .x4-window-header-default-collapsed-right-bl,
+.x4-nbr .x4-window-header-default-collapsed-right-tr,
+.x4-nbr .x4-window-header-default-collapsed-right-br,
+.x4-nbr .x4-window-header-default-collapsed-right-tc,
+.x4-nbr .x4-window-header-default-collapsed-right-bc,
+.x4-nbr .x4-window-header-default-collapsed-right-ml,
+.x4-nbr .x4-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-right-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-collapsed-right-ml,
+.x4-nbr .x4-window-header-default-collapsed-right-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-right-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-collapsed-right-mc {
+  padding: 1px 0px 1px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-window-header-default-collapsed-right-tl,
+.x4-strict .x4-ie7 .x4-window-header-default-collapsed-right-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-window-header-default-collapsed-bottom {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-window-header-default-collapsed-bottom-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-collapsed-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-collapsed-bottom-tl,
+.x4-nbr .x4-window-header-default-collapsed-bottom-bl,
+.x4-nbr .x4-window-header-default-collapsed-bottom-tr,
+.x4-nbr .x4-window-header-default-collapsed-bottom-br,
+.x4-nbr .x4-window-header-default-collapsed-bottom-tc,
+.x4-nbr .x4-window-header-default-collapsed-bottom-bc,
+.x4-nbr .x4-window-header-default-collapsed-bottom-ml,
+.x4-nbr .x4-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-collapsed-bottom-ml,
+.x4-nbr .x4-window-header-default-collapsed-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-bottom-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-collapsed-bottom-mc {
+  padding: 0px 1px 0px 1px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-window-header-default-collapsed-bottom-tl,
+.x4-strict .x4-ie7 .x4-window-header-default-collapsed-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-window-header-default-collapsed-left {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-window-header-default-collapsed-left-mc {
+  background-color: #ced9e7; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-collapsed-left {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1000505px 1000505px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-collapsed-left-tl,
+.x4-nbr .x4-window-header-default-collapsed-left-bl,
+.x4-nbr .x4-window-header-default-collapsed-left-tr,
+.x4-nbr .x4-window-header-default-collapsed-left-br,
+.x4-nbr .x4-window-header-default-collapsed-left-tc,
+.x4-nbr .x4-window-header-default-collapsed-left-bc,
+.x4-nbr .x4-window-header-default-collapsed-left-ml,
+.x4-nbr .x4-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-left-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-collapsed-left-ml,
+.x4-nbr .x4-window-header-default-collapsed-left-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/window-header/window-header-default-collapsed-left-sides.gif');
+  background-position: 0 0;
+  background-repeat: repeat-y; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-window-header-default-collapsed-left-mc {
+  padding: 1px 0px 1px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-window-header-default-collapsed-left-tl,
+.x4-strict .x4-ie7 .x4-window-header-default-collapsed-left-bl {
+  position: relative;
+  right: 0; }
+
+/* line 217, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-header-default-top {
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+
+/* line 221, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-header-default-right {
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+  -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset; }
+
+/* line 225, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-header-default-bottom {
+  -moz-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -webkit-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -o-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+
+/* line 229, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-header-default-left {
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+
+/* line 130, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x4-window-body-plain {
+  background: transparent; }
+
+/* line 2, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x4-message-box .x4-window-body {
+  background-color: #ced9e7;
+  border: none; }
+
+/* line 7, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x4-message-box .x4-progress-wrap {
+  margin-top: 4px; }
+
+/* line 11, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x4-message-box-icon {
+  width: 47px;
+  height: 32px; }
+
+/* line 19, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x4-message-box-info,
+.x4-message-box-warning,
+.x4-message-box-question,
+.x4-message-box-error {
+  background: transparent no-repeat top left; }
+
+/* line 23, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x4-message-box .x4-msg-box-wait {
+  background-image: url('../../resources/themes/images/default/shared/blue-loading.gif'); }
+
+/* line 27, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x4-message-box-info {
+  background-image: url('../../resources/themes/images/default/shared/icon-info.gif'); }
+
+/* line 31, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x4-message-box-warning {
+  background-image: url('../../resources/themes/images/default/shared/icon-warning.gif'); }
+
+/* line 35, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x4-message-box-question {
+  background-image: url('../../resources/themes/images/default/shared/icon-question.gif'); }
+
+/* line 39, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x4-message-box-error {
+  background-image: url('../../resources/themes/images/default/shared/icon-error.gif'); }
+
+/* line 73, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x4-tab-bar {
+  position: relative;
+  background-color: transparent;
+  background-image: none;
+  background-color: #cbdbef;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef));
+  background-image: -webkit-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: -moz-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: -o-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: -ms-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: linear-gradient(top, #dde8f5, #cbdbef);
+  font-size: 11px; }
+
+/* line 80, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x4-nlg .x4-tab-bar {
+  background-image: url('../../resources/themes/images/default/tab-bar/tab-bar-default-bg.gif'); }
+
+/* line 85, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x4-tab-bar-default-plain,
+.x4-nlg .x4-tab-bar-default-plain {
+  background: transparent none; }
+
+/* line 90, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x4-tab-bar-body {
+  border-style: solid;
+  border-color: #99bce8;
+  position: relative;
+  z-index: 2;
+  zoom: 1; }
+
+/* Top Tabs */
+/* line 4, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x4-tab-bar-top .x4-tab-bar-body {
+  height: 20px;
+  border-width: 1px 1px 0;
+  padding: 1px 0 3px; }
+/* line 10, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x4-tab-bar-top .x4-tab-bar-strip {
+  /*position strip from top rather than bottom to avoid off-by-one error in IE6*/
+  top: 22px;
+  border-width: 1px 1px 0;
+  height: 2px; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x4-border-box .x4-tab-bar-top .x4-tab-bar-body {
+  height: 25px; }
+/* line 23, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x4-border-box .x4-tab-bar-top .x4-tab-bar-strip {
+  height: 3px; }
+
+/* line 4, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x4-tab-bar-top .x4-tab-bar-body-default-plain {
+  height: 20px;
+  border-width: 0;
+  padding: 0 0 2px; }
+/* line 10, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x4-tab-bar-top .x4-tab-bar-strip-default-plain {
+  /*position strip from top rather than bottom to avoid off-by-one error in IE6*/
+  top: 20px;
+  border-width: 1px 1px 0 1px;
+  height: 2px; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x4-border-box .x4-tab-bar-top .x4-tab-bar-body-default-plain {
+  height: 22px; }
+/* line 23, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x4-border-box .x4-tab-bar-top .x4-tab-bar-strip-default-plain {
+  height: 3px; }
+
+/* Bottom Tabs */
+/* line 32, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x4-tab-bar-bottom .x4-tab-bar-body {
+  height: 20px;
+  border-width: 0 1px 1px;
+  padding: 3px 0 1px; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x4-tab-bar-bottom .x4-tab-bar-body .x4-box-inner {
+    position: relative;
+    top: -1px; }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x4-tab-bar-bottom .x4-tab-bar-body .x4-box-scroller,
+  .x4-tab-bar-bottom .x4-tab-bar-body .x4-box-scroller-left,
+  .x4-tab-bar-bottom .x4-tab-bar-body .x4-box-scroller-right {
+    height: 22px; }
+/* line 49, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x4-tab-bar-bottom .x4-tab-bar-strip {
+  top: 0;
+  border-width: 0 1px 1px 1px;
+  height: 2px; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x4-border-box .x4-tab-bar-bottom .x4-tab-bar-body {
+  height: 25px; }
+/* line 61, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x4-border-box .x4-tab-bar-bottom .x4-tab-bar-strip {
+  height: 3px; }
+
+/* line 32, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x4-tab-bar-bottom .x4-tab-bar-body-default-plain {
+  height: 20px;
+  border-width: 0;
+  padding: 3px 0 0; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x4-tab-bar-bottom .x4-tab-bar-body-default-plain .x4-box-inner {
+    position: relative;
+    top: -1px; }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x4-tab-bar-bottom .x4-tab-bar-body-default-plain .x4-box-scroller,
+  .x4-tab-bar-bottom .x4-tab-bar-body-default-plain .x4-box-scroller-left,
+  .x4-tab-bar-bottom .x4-tab-bar-body-default-plain .x4-box-scroller-right {
+    height: 21px; }
+/* line 49, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x4-tab-bar-bottom .x4-tab-bar-strip-default-plain {
+  top: 0;
+  border-width: 0 1px 1px 1px;
+  height: 2px; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x4-border-box .x4-tab-bar-bottom .x4-tab-bar-body-default-plain {
+  height: 23px; }
+/* line 61, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x4-border-box .x4-tab-bar-bottom .x4-tab-bar-strip-default-plain {
+  height: 3px; }
+
+/* line 141, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x4-tab-bar-strip-default,
+.x4-tab-bar-strip-default-plain {
+  font-size: 0;
+  line-height: 0;
+  position: absolute;
+  z-index: 1;
+  border-style: solid;
+  overflow: hidden;
+  border-color: #99bce8;
+  background-color: #deecfd;
+  zoom: 1; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-tab-default-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 3px 0 3px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -ms-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-tab-default-top-mc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-bg.gif');
+  background-color: #deecfd; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-tab-default-top {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100404px 1000000px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-tab-default-top-tl,
+.x4-nbr .x4-tab-default-top-bl,
+.x4-nbr .x4-tab-default-top-tr,
+.x4-nbr .x4-tab-default-top-br,
+.x4-nbr .x4-tab-default-top-tc,
+.x4-nbr .x4-tab-default-top-bc,
+.x4-nbr .x4-tab-default-top-ml,
+.x4-nbr .x4-tab-default-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-tab-default-top-ml,
+.x4-nbr .x4-tab-default-top-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-tab-default-top-mc {
+  padding: 0px 0px 0 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-tab-default-top-tl,
+.x4-strict .x4-ie7 .x4-tab-default-top-bl {
+  position: relative;
+  right: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-tab-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 0 3px 3px 3px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: -ms-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%);
+  background-image: linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%); }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nlg .x4-tab-default-bottom-mc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif');
+  background-color: #deecfd; }
+
+/* line 115, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-tab-default-bottom {
+  padding: 0 !important;
+  border-width: 0 !important;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -khtml-border-radius: 0px;
+  border-radius: 0px;
+  background-color: transparent;
+  background-position: 1100000px 1000404px; }
+/* line 147, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-tab-default-bottom-tl,
+.x4-nbr .x4-tab-default-bottom-bl,
+.x4-nbr .x4-tab-default-bottom-tr,
+.x4-nbr .x4-tab-default-bottom-br,
+.x4-nbr .x4-tab-default-bottom-tc,
+.x4-nbr .x4-tab-default-bottom-bc,
+.x4-nbr .x4-tab-default-bottom-ml,
+.x4-nbr .x4-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-corners.gif'); }
+/* line 168, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-tab-default-bottom-ml,
+.x4-nbr .x4-tab-default-bottom-mr {
+  zoom: 1;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-sides.gif');
+  background-position: 0 0; }
+/* line 200, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-nbr .x4-tab-default-bottom-mc {
+  padding: 0 0px 0px 0px; }
+
+/* line 210, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x4-strict .x4-ie7 .x4-tab-default-bottom-tl,
+.x4-strict .x4-ie7 .x4-tab-default-bottom-bl {
+  position: relative;
+  right: 0; }
+
+/* line 28, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-tab {
+  z-index: 1;
+  margin: 0 0 0 2px;
+  display: inline-block;
+  zoom: 1;
+  *display: inline;
+  white-space: nowrap;
+  height: 20px;
+  border-color: #8db3e3;
+  cursor: pointer;
+  cursor: hand; }
+  /* line 40, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x4-tab button {
+    cursor: pointer;
+    cursor: hand; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x4-tab em {
+    display: block;
+    padding: 0 6px;
+    line-height: 1px; }
+  /* line 51, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x4-tab button {
+    background: none;
+    border: 0;
+    padding: 0;
+    margin: 0;
+    -webkit-appearance: none;
+    font-size: 11px;
+    font-weight: bold;
+    font-family: tahoma, arial, verdana, sans-serif;
+    color: #416da3;
+    outline: 0 none;
+    overflow-x: visible; }
+    /* line 69, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x4-tab button::-moz-focus-inner {
+      border: 0;
+      padding: 0; }
+    /* line 74, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x4-tab button .x4-tab-inner {
+      background-color: transparent;
+      background-repeat: no-repeat;
+      background-position: 0 -2px;
+      display: block;
+      text-align: center;
+      white-space: nowrap;
+      text-overflow: ellipsis;
+      -o-text-overflow: ellipsis;
+      overflow: hidden; }
+  /* line 87, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x4-tab img {
+    display: none; }
+
+/* line 93, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-border-box .x4-tab-default-top {
+  height: 21px; }
+/* line 96, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-border-box .x4-tab-default-bottom {
+  height: 21px; }
+
+/* line 103, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+* html .x4-ie .x4-tab button {
+  width: 1px; }
+
+/* line 110, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-strict .x4-ie6 .x4-tab .x4-frame-mc,
+.x4-strict .x4-ie7 .x4-tab .x4-frame-mc {
+  height: 100%; }
+
+/* line 115, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-ie .x4-tab-active button:active {
+  position: relative;
+  top: -1px;
+  left: -1px; }
+
+/* line 124, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-tab-default-top {
+  -moz-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -webkit-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -o-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  border-bottom: 1px solid #99bce8 !important; }
+  /* line 134, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x4-tab-default-top em {
+    padding-bottom: 3px; }
+  /* line 139, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x4-tab-default-top button,
+  .x4-tab-default-top .x4-tab-inner {
+    height: 13px;
+    line-height: 13px; }
+
+/* line 148, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-safari4 .x4-tab-default-top .x4-tab-inner,
+.x4-safari5_0 .x4-tab-default-top .x4-tab-inner {
+  line-height: 11px; }
+
+/* line 153, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nbr .x4-tab-default-top {
+  border-bottom-width: 1px !important; }
+
+/* line 157, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-tab-default-top-active {
+  border-bottom-color: #deecfd !important; }
+
+/* line 163, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-tab-default-bottom {
+  -moz-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -webkit-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -o-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  border-top: 1px solid #99bce8 !important;
+  -moz-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -webkit-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -o-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset; }
+  /* line 178, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x4-tab-default-bottom em {
+    padding-top: 3px; }
+  /* line 183, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x4-tab-default-bottom button,
+  .x4-tab-default-bottom .x4-tab-inner {
+    height: 13px;
+    line-height: 13px; }
+
+/* line 189, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nbr .x4-tab-default-bottom {
+  border-top-width: 1px !important; }
+
+/* line 193, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-tab-default-bottom-active {
+  border-top-color: #deecfd !important; }
+
+/* line 197, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-tab-default-disabled {
+  cursor: default;
+  border-color: #bbd2ef;
+  background-image: none;
+  background-color: #e1ecfa;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+  background-image: -webkit-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -moz-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -o-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -ms-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: linear-gradient(top, #e1ecfa, #ecf4fe); }
+  /* line 203, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x4-tab-default-disabled button {
+    color: #c3b3b3 !important; }
+
+/* line 209, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-tab-icon-text-left .x4-tab-inner {
+  padding-left: 20px; }
+
+/* line 214, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-tab button {
+  position: relative; }
+
+/* line 218, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-tab-icon {
+  position: absolute;
+  background-repeat: no-repeat;
+  background-position: 0 -1px;
+  top: 0;
+  left: 0;
+  right: auto;
+  bottom: 0;
+  width: 18px;
+  height: 18px; }
+
+/* line 233, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-strict .x4-ie8 .x4-tab button,
+.x4-strict .x4-ie9 .x4-tab button {
+  overflow-y: visible; }
+
+/* line 238, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-tab-default-disabled .x4-tab-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+
+/* In IE a disabled icon needs to be hidden or the opacity effect covers some of the text */
+/* line 243, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-tab-noicon .x4-tab-icon {
+  display: none; }
+
+/* line 269, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-tab-top-over {
+  background-image: none;
+  background-color: #e8f2ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff));
+  background-image: -webkit-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -moz-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -o-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -ms-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%); }
+
+/* line 272, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-tab-bottom-over {
+  background-image: none;
+  background-color: #e8f2ff;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff));
+  background-image: -webkit-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -moz-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -o-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -ms-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%); }
+
+/* line 277, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-tab-active {
+  z-index: 3; }
+  /* line 283, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x4-tab-active button {
+    color: #15498b; }
+
+/* line 299, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-tab-top-active {
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -ms-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%); }
+
+/* line 302, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-tab-bottom-active {
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -ms-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%); }
+
+/* line 307, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-tab-disabled {
+  border-color: #bbd2ef; }
+  /* line 312, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x4-tab-disabled button {
+    color: #c3b3b3; }
+
+/* line 328, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-tab-top-disabled {
+  background-image: none;
+  background: transparent;
+  background-image: none;
+  background-color: #e1ecfa;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+  background-image: -webkit-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -moz-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -o-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -ms-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: linear-gradient(top, #e1ecfa, #ecf4fe); }
+
+/* line 333, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-tab-bottom-disabled {
+  background-image: none;
+  background: transparent;
+  background-image: none;
+  background-color: #e1ecfa;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+  background-image: -webkit-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: -moz-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: -o-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: -ms-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: linear-gradient(bottom, #e1ecfa, #ecf4fe); }
+
+/* line 342, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nlg .x4-tab-top {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-bg.gif'); }
+/* line 343, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nlg .x4-tab-bottom {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif'); }
+/* line 347, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nlg .x4-tab-top-over {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-over-bg.gif'); }
+/* line 348, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nlg .x4-tab-bottom-over {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-over-bg.gif'); }
+/* line 352, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nlg .x4-tab-top-active {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-active-bg.gif'); }
+/* line 353, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nlg .x4-tab-bottom-active {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-active-bg.gif'); }
+/* line 357, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nlg .x4-tab-top-disabled {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-disabled-bg.gif') !important; }
+/* line 358, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nlg .x4-tab-bottom-disabled {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif') !important; }
+
+/* line 363, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-tab-closable em {
+  padding-right: 14px; }
+
+/* line 367, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-tab-close-btn {
+  position: absolute;
+  top: 2px;
+  right: 2px;
+  width: 11px;
+  height: 11px;
+  font-size: 0;
+  line-height: 0;
+  text-indent: -999px;
+  background: no-repeat;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-close.gif');
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+
+/* line 381, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nbr .x4-tab-close-btn {
+  top: 0px;
+  right: 0px; }
+
+/* Include the element name otherwise Internet Explorer 7 & 8 take a performance hit */
+/* line 387, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+a.x4-tab-close-btn:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1; }
+
+/* Include the element name to raise the specificity to equal the :hover */
+/* line 392, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-tab-default-disabled a.x4-tab-close-btn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 404, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nbr .x4-tab-top-over .x4-frame-tl,
+.x4-nbr .x4-tab-top-over .x4-frame-bl,
+.x4-nbr .x4-tab-top-over .x4-frame-tr,
+.x4-nbr .x4-tab-top-over .x4-frame-br,
+.x4-nbr .x4-tab-top-over .x4-frame-tc,
+.x4-nbr .x4-tab-top-over .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-over-corners.gif'); }
+/* line 408, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nbr .x4-tab-top-over .x4-frame-ml,
+.x4-nbr .x4-tab-top-over .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-over-sides.gif'); }
+/* line 412, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nbr .x4-tab-top-over .x4-frame-mc {
+  background-color: #e8f2ff;
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-over-bg.gif'); }
+/* line 426, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nbr .x4-tab-bottom-over .x4-frame-tl,
+.x4-nbr .x4-tab-bottom-over .x4-frame-bl,
+.x4-nbr .x4-tab-bottom-over .x4-frame-tr,
+.x4-nbr .x4-tab-bottom-over .x4-frame-br,
+.x4-nbr .x4-tab-bottom-over .x4-frame-tc,
+.x4-nbr .x4-tab-bottom-over .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-over-corners.gif'); }
+/* line 430, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nbr .x4-tab-bottom-over .x4-frame-ml,
+.x4-nbr .x4-tab-bottom-over .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-over-sides.gif'); }
+/* line 434, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nbr .x4-tab-bottom-over .x4-frame-mc {
+  background-color: #e8f2ff;
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-over-bg.gif'); }
+/* line 448, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nbr .x4-tab-top-active .x4-frame-tl,
+.x4-nbr .x4-tab-top-active .x4-frame-bl,
+.x4-nbr .x4-tab-top-active .x4-frame-tr,
+.x4-nbr .x4-tab-top-active .x4-frame-br,
+.x4-nbr .x4-tab-top-active .x4-frame-tc,
+.x4-nbr .x4-tab-top-active .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-active-corners.gif'); }
+/* line 452, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nbr .x4-tab-top-active .x4-frame-ml,
+.x4-nbr .x4-tab-top-active .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-active-sides.gif'); }
+/* line 456, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nbr .x4-tab-top-active .x4-frame-mc {
+  background-color: #deecfd;
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-active-bg.gif'); }
+/* line 470, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nbr .x4-tab-bottom-active .x4-frame-tl,
+.x4-nbr .x4-tab-bottom-active .x4-frame-bl,
+.x4-nbr .x4-tab-bottom-active .x4-frame-tr,
+.x4-nbr .x4-tab-bottom-active .x4-frame-br,
+.x4-nbr .x4-tab-bottom-active .x4-frame-tc,
+.x4-nbr .x4-tab-bottom-active .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-active-corners.gif'); }
+/* line 474, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nbr .x4-tab-bottom-active .x4-frame-ml,
+.x4-nbr .x4-tab-bottom-active .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-active-sides.gif'); }
+/* line 478, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nbr .x4-tab-bottom-active .x4-frame-mc {
+  background-color: #deecfd;
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-active-bg.gif'); }
+/* line 492, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nbr .x4-tab-top-disabled .x4-frame-tl,
+.x4-nbr .x4-tab-top-disabled .x4-frame-bl,
+.x4-nbr .x4-tab-top-disabled .x4-frame-tr,
+.x4-nbr .x4-tab-top-disabled .x4-frame-br,
+.x4-nbr .x4-tab-top-disabled .x4-frame-tc,
+.x4-nbr .x4-tab-top-disabled .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-disabled-corners.gif'); }
+/* line 496, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nbr .x4-tab-top-disabled .x4-frame-ml,
+.x4-nbr .x4-tab-top-disabled .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-disabled-sides.gif'); }
+/* line 500, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nbr .x4-tab-top-disabled .x4-frame-mc {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-disabled-bg.gif'); }
+/* line 513, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nbr .x4-tab-bottom-disabled .x4-frame-tl,
+.x4-nbr .x4-tab-bottom-disabled .x4-frame-bl,
+.x4-nbr .x4-tab-bottom-disabled .x4-frame-tr,
+.x4-nbr .x4-tab-bottom-disabled .x4-frame-br,
+.x4-nbr .x4-tab-bottom-disabled .x4-frame-tc,
+.x4-nbr .x4-tab-bottom-disabled .x4-frame-bc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-corners.gif'); }
+/* line 517, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nbr .x4-tab-bottom-disabled .x4-frame-ml,
+.x4-nbr .x4-tab-bottom-disabled .x4-frame-mr {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-sides.gif'); }
+/* line 521, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x4-nbr .x4-tab-bottom-disabled .x4-frame-mc {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif'); }
+
+/* line 9, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-autowidth-table table.x4-grid-table {
+  table-layout: auto;
+  width: auto!important; }
+
+/* line 14, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-no-lines .x4-tree-elbow {
+  background-color: transparent; }
+
+/* line 18, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-no-lines .x4-tree-elbow-end {
+  background-color: transparent; }
+
+/* line 22, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-no-lines .x4-tree-elbow-line {
+  background-color: transparent; }
+
+/* line 27, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-arrows .x4-tree-elbow-plus {
+  background: transparent no-repeat 0 0; }
+
+/* line 31, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-arrows .x4-tree-elbow-end-plus {
+  background: transparent no-repeat 0 0; }
+
+/* line 35, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-arrows .x4-tree-elbow-end-minus {
+  background: transparent no-repeat -16px 0; }
+
+/* line 39, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-arrows .x4-tree-elbow-minus {
+  background: transparent no-repeat -16px 0; }
+
+/* line 43, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-arrows .x4-tree-elbow {
+  background-color: transparent !important; }
+
+/* line 47, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-arrows .x4-tree-elbow-end {
+  background-color: transparent !important; }
+
+/* line 51, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-arrows .x4-tree-elbow-line {
+  background-color: transparent !important; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-arrows .x4-tree-expander-over .x4-tree-elbow-plus,
+.x4-tree-arrows .x4-tree-expander-over .x4-tree-elbow-end-plus {
+  background-position: -32px 0; }
+
+/* line 62, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-arrows .x4-tree-expander-over .x4-tree-elbow-minus,
+.x4-tree-arrows .x4-tree-expander-over .x4-tree-elbow-end-minus {
+  background-position: -48px 0; }
+
+/* line 67, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-arrows .x4-grid-tree-node-expanded .x4-tree-elbow-plus,
+.x4-tree-arrows .x4-grid-tree-node-expanded .x4-tree-elbow-end-plus {
+  background-position: -16px 0; }
+
+/* line 72, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-arrows .x4-grid-tree-node-expanded .x4-tree-expander-over .x4-tree-elbow-plus,
+.x4-tree-arrows .x4-grid-tree-node-expanded .x4-tree-expander-over .x4-tree-elbow-end-plus {
+  background-position: -48px 0; }
+
+/* line 79, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-elbow-plus,
+.x4-tree-elbow-minus,
+.x4-tree-elbow-end-plus,
+.x4-tree-elbow-end-minus {
+  cursor: pointer; }
+
+/* line 85, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-lines .x4-tree-elbow {
+  background-image: url('../../resources/themes/images/default/tree/elbow.gif'); }
+/* line 89, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-lines .x4-tree-elbow-end {
+  background-image: url('../../resources/themes/images/default/tree/elbow-end.gif'); }
+/* line 93, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-lines .x4-tree-elbow-plus {
+  background-image: url('../../resources/themes/images/default/tree/elbow-plus.gif'); }
+/* line 97, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-lines .x4-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/default/tree/elbow-end-plus.gif'); }
+/* line 101, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-lines .x4-grid-tree-node-expanded .x4-tree-elbow-plus {
+  background-image: url('../../resources/themes/images/default/tree/elbow-minus.gif'); }
+/* line 105, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-lines .x4-grid-tree-node-expanded .x4-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/default/tree/elbow-end-minus.gif'); }
+/* line 109, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-lines .x4-tree-elbow-line {
+  background-image: url('../../resources/themes/images/default/tree/elbow-line.gif'); }
+
+/* line 116, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-no-lines .x4-tree-elbow-plus,
+.x4-tree-no-lines .x4-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/default/tree/elbow-plus-nl.gif'); }
+/* line 121, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-no-lines .x4-grid-tree-node-expanded .x4-tree-elbow-plus,
+.x4-tree-no-lines .x4-grid-tree-node-expanded .x4-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/default/tree/elbow-end-minus-nl.gif'); }
+
+/* line 130, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-arrows .x4-tree-elbow-plus,
+.x4-tree-arrows .x4-tree-elbow-minus,
+.x4-tree-arrows .x4-tree-elbow-end-plus,
+.x4-tree-arrows .x4-tree-elbow-end-minus {
+  background-image: url('../../resources/themes/images/default/tree/arrows.gif'); }
+
+/* line 135, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-icon {
+  margin: 2px 3px 0 0; }
+
+/* line 139, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-grid-with-row-lines .x4-tree-icon {
+  margin-top: 1px; }
+
+/* line 148, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-elbow,
+.x4-tree-elbow-end,
+.x4-tree-elbow-plus,
+.x4-tree-elbow-end-plus,
+.x4-tree-elbow-empty,
+.x4-tree-elbow-line {
+  height: 20px;
+  width: 16px; }
+
+/* line 159, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-grid-with-row-lines .x4-tree-elbow,
+.x4-grid-with-row-lines .x4-tree-elbow-end,
+.x4-grid-with-row-lines .x4-tree-elbow-plus,
+.x4-grid-with-row-lines .x4-tree-elbow-end-plus,
+.x4-grid-with-row-lines .x4-tree-elbow-empty,
+.x4-grid-with-row-lines .x4-tree-elbow-line {
+  height: 19px;
+  background-position: 0 -1px; }
+
+/* line 165, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-icon-leaf {
+  width: 16px;
+  background-image: url('../../resources/themes/images/default/tree/leaf.gif'); }
+
+/* line 170, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-icon-parent {
+  width: 16px;
+  background-image: url('../../resources/themes/images/default/tree/folder.gif'); }
+
+/* line 175, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-grid-tree-node-expanded .x4-tree-icon-parent {
+  background-image: url('../../resources/themes/images/default/tree/folder-open.gif'); }
+
+/* line 179, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-grid-rowbody {
+  padding: 0; }
+
+/* line 183, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-grid-cell-treecolumn .x4-grid-cell-inner {
+  padding: 0;
+  line-height: 19px; }
+
+/* line 188, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-grid-with-row-lines .x4-grid-cell-treecolumn .x4-grid-cell-inner {
+  line-height: 17px; }
+
+/* line 192, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-panel .x4-grid-cell-inner {
+  cursor: pointer; }
+  /* line 194, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x4-tree-panel .x4-grid-cell-inner img {
+    display: inline-block;
+    vertical-align: top; }
+
+/* line 207, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-ie .x4-tree-panel .x4-tree-elbow,
+.x4-ie .x4-tree-panel .x4-tree-elbow-end,
+.x4-ie .x4-tree-panel .x4-tree-elbow-plus,
+.x4-ie .x4-tree-panel .x4-tree-elbow-end-plus,
+.x4-ie .x4-tree-panel .x4-tree-elbow-empty,
+.x4-ie .x4-tree-panel .x4-tree-elbow-line {
+  vertical-align: -6px; }
+
+/* line 215, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-grid-editor-on-text-node .x4-form-text {
+  padding-left: 1px;
+  padding-right: 1px; }
+
+/* line 222, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-ie .x4-grid-editor-on-text-node .x4-form-text {
+  padding-left: 2px;
+  padding-right: 2px; }
+
+/* line 228, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-opera .x4-grid-editor-on-text-node .x4-form-text {
+  padding-left: 2px;
+  padding-right: 2px; }
+
+/* line 234, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-checkbox {
+  margin: 4px 3px 0 0;
+  display: inline-block;
+  vertical-align: top;
+  width: 13px;
+  height: 13px;
+  background: no-repeat;
+  background-image: url('../../resources/themes/images/default/form/checkbox.gif');
+  overflow: hidden;
+  padding: 0;
+  border: 0; }
+  /* line 247, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x4-tree-checkbox::-moz-focus-inner {
+    padding: 0;
+    border: 0; }
+
+/* line 253, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-grid-with-row-lines .x4-tree-checkbox {
+  margin-top: 3px; }
+
+/* line 257, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-checkbox-checked {
+  background-position: 0 -13px; }
+
+/* line 261, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-drop-ok-append .x4-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/tree/drop-append.gif'); }
+
+/* line 265, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-drop-ok-above .x4-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/tree/drop-above.gif'); }
+
+/* line 269, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-drop-ok-below .x4-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/tree/drop-below.gif'); }
+
+/* line 273, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-drop-ok-between .x4-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/tree/drop-between.gif'); }
+
+/* line 277, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-grid-tree-loading .x4-tree-icon {
+  background-image: url('../../resources/themes/images/default/tree/loading.gif'); }
+
+/* line 281, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-ddindicator {
+  height: 1px;
+  border-width: 1px 0px 0px;
+  border-style: dotted;
+  border-color: green; }
+
+/* line 288, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-grid-tree-loading span {
+  font-style: italic;
+  color: #444444; }
+
+/* line 293, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x4-tree-animator-wrap {
+  overflow: hidden; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x4-surface {
+  display: -moz-inline-box;
+  -moz-box-orient: vertical;
+  display: inline-block;
+  vertical-align: middle;
+  *vertical-align: auto;
+  overflow: hidden; }
+  /* line 7, ../../../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.11.7/frameworks/compass/stylesheets/compass/css3/_inline-block.scss */
+  .x4-surface {
+    *display: inline; }
+
+/* line 11, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.rvml {
+  behavior: url(#default#VML); }
+
+/* line 15, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x4-surface tspan {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x4-vml-sprite {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px; }
+
+/* line 27, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x4-vml-group {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1000px;
+  height: 1000px; }
+
+/* line 35, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x4-vml-measure-span {
+  position: absolute;
+  left: -9999em;
+  top: -9999em;
+  padding: 0;
+  margin: 0;
+  display: inline; }
+
+/* line 44, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x4-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block; }
+
+/* line 52, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x4-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block; }
+
+/* line 60, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+svg, vml {
+  overflow: hidden; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_viewport.scss */
+.x4-viewport, .x4-viewport body {
+  margin: 0;
+  padding: 0;
+  border: 0 none;
+  overflow: hidden;
+  height: 100%;
+  position: static; }
+
+/* line 3, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x4-dd-drag-proxy {
+  z-index: 1000000!important; }
+
+/* line 8, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x4-dd-drag-repair .x4-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+/* line 12, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x4-dd-drag-repair .x4-dd-drop-icon {
+  display: none; }
+
+/* line 17, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x4-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
+  opacity: 0.85;
+  padding: 5px;
+  padding-left: 20px;
+  white-space: nowrap;
+  color: #000;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  border: 1px solid;
+  border-color: #ddd #bbb #bbb #ddd;
+  background-color: #fff; }
+
+/* line 34, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x4-dd-drop-icon {
+  position: absolute;
+  top: 3px;
+  left: 3px;
+  display: block;
+  width: 16px;
+  height: 16px;
+  background-color: transparent;
+  background-position: center;
+  background-repeat: no-repeat;
+  z-index: 1; }
+
+/* line 51, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x4-view-selector {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 0;
+  background-color: #c3daf9;
+  border: 1px dotted #3399bb;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  zoom: 1; }
+
+/* line 66, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x4-dd-drop-nodrop .x4-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/dd/drop-no.gif'); }
+
+/* line 70, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x4-dd-drop-ok .x4-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/dd/drop-yes.gif'); }
+
+/* line 74, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x4-dd-drop-ok-add .x4-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/dd/drop-add.gif'); }
+
+/* line 2, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-handle {
+  position: absolute;
+  z-index: 100;
+  font-size: 1px;
+  line-height: 6px;
+  overflow: hidden;
+  zoom: 1;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  background-color: #fff; }
+
+/* line 14, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-collapsed .x4-resizable-handle {
+  display: none; }
+
+/* line 18, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-handle-east {
+  width: 6px;
+  height: 100%;
+  right: 0;
+  top: 0; }
+
+/* line 27, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-over .x4-resizable-handle-east {
+  cursor: e-resize; }
+
+/* line 32, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-handle-south {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  bottom: 0; }
+
+/* line 41, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-over .x4-resizable-handle-south {
+  cursor: s-resize; }
+
+/* line 46, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-handle-west {
+  width: 6px;
+  height: 100%;
+  left: 0;
+  top: 0; }
+
+/* line 55, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-over .x4-resizable-handle-west {
+  cursor: w-resize; }
+
+/* line 60, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-handle-north {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  top: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-over .x4-resizable-handle-north {
+  cursor: n-resize; }
+
+/* line 74, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-handle-southeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  bottom: 0;
+  z-index: 101; }
+
+/* line 85, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-over .x4-resizable-handle-southeast {
+  cursor: se-resize; }
+
+/* line 90, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-handle-northwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  top: 0;
+  z-index: 101; }
+
+/* line 101, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-over .x4-resizable-handle-northwest {
+  cursor: nw-resize; }
+
+/* line 106, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-handle-northeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  top: 0;
+  z-index: 101; }
+
+/* line 117, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-over .x4-resizable-handle-northeast {
+  cursor: ne-resize; }
+
+/* line 122, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-handle-southwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+  z-index: 101; }
+
+/* line 133, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-over .x4-resizable-handle-southwest {
+  cursor: sw-resize; }
+
+/*IE rounding error*/
+/* line 140, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-ie .x4-resizable-handle-east {
+  margin-right: -1px;
+  /*IE rounding error*/ }
+/* line 144, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-ie .x4-resizable-handle-south {
+  margin-bottom: -1px; }
+
+/* line 149, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-over .x4-resizable-handle, .x4-resizable-pinned .x4-resizable-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1; }
+
+/* line 153, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-window .x4-window-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 157, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-window-collapsed .x4-window-handle {
+  display: none; }
+
+/* line 161, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-proxy {
+  border: 1px dashed #3b5a82;
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  z-index: 50000; }
+
+/* line 170, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-overlay {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  display: none;
+  z-index: 200000;
+  background-color: #fff;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 190, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-over .x4-resizable-handle-east,
+.x4-resizable-over .x4-resizable-handle-west,
+.x4-resizable-pinned .x4-resizable-handle-east,
+.x4-resizable-pinned .x4-resizable-handle-west {
+  background-position: left;
+  background-image: url('../../resources/themes/images/default/sizer/e-handle.gif'); }
+/* line 196, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-over .x4-resizable-handle-south,
+.x4-resizable-over .x4-resizable-handle-north,
+.x4-resizable-pinned .x4-resizable-handle-south,
+.x4-resizable-pinned .x4-resizable-handle-north {
+  background-position: top;
+  background-image: url('../../resources/themes/images/default/sizer/s-handle.gif'); }
+/* line 201, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-over .x4-resizable-handle-southeast,
+.x4-resizable-pinned .x4-resizable-handle-southeast {
+  background-position: top left;
+  background-image: url('../../resources/themes/images/default/sizer/se-handle.gif'); }
+/* line 206, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-over .x4-resizable-handle-northwest,
+.x4-resizable-pinned .x4-resizable-handle-northwest {
+  background-position: bottom right;
+  background-image: url('../../resources/themes/images/default/sizer/nw-handle.gif'); }
+/* line 211, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-over .x4-resizable-handle-northeast,
+.x4-resizable-pinned .x4-resizable-handle-northeast {
+  background-position: bottom left;
+  background-image: url('../../resources/themes/images/default/sizer/ne-handle.gif'); }
+/* line 216, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x4-resizable-over .x4-resizable-handle-southwest,
+.x4-resizable-pinned .x4-resizable-handle-southwest {
+  background-position: top right;
+  background-image: url('../../resources/themes/images/default/sizer/sw-handle.gif'); }
+
+/* line 3, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x4-splitter .x4-collapse-el {
+  position: absolute;
+  cursor: pointer;
+  background-color: transparent;
+  background-repeat: no-repeat !important; }
+
+/* line 14, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x4-layout-split-left,
+.x4-layout-split-right {
+  top: 50%;
+  margin-top: -17px;
+  width: 5px;
+  height: 35px; }
+
+/* line 24, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x4-layout-split-top,
+.x4-layout-split-bottom {
+  left: 50%;
+  width: 35px;
+  height: 5px;
+  margin-left: -17px; }
+
+/* line 33, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x4-layout-split-left {
+  background: no-repeat top right;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-left.gif'); }
+
+/* line 38, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x4-layout-split-right {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-right.gif'); }
+
+/* line 43, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x4-layout-split-top {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-top.gif'); }
+
+/* line 48, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x4-layout-split-bottom {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-bottom.gif'); }
+
+/* line 54, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x4-splitter-collapsed .x4-layout-split-left {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-right.gif'); }
+/* line 59, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x4-splitter-collapsed .x4-layout-split-right {
+  background: no-repeat top right;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-left.gif'); }
+/* line 64, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x4-splitter-collapsed .x4-layout-split-top {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-bottom.gif'); }
+/* line 69, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x4-splitter-collapsed .x4-layout-split-bottom {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-top.gif'); }
+
+/* line 75, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x4-splitter-horizontal {
+  cursor: e-resize;
+  cursor: row-resize;
+  font-size: 1px; }
+
+/* line 81, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x4-splitter-vertical {
+  cursor: e-resize;
+  cursor: col-resize;
+  font-size: 1px; }
+
+/* line 86, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x4-splitter-collapsed, .x4-splitter-horizontal-noresize, .x4-splitter-vertical-noresize {
+  cursor: default; }
+
+/* line 90, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x4-splitter-active {
+  z-index: 4;
+  font-size: 1px;
+  background-color: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8; }
+
+/* line 97, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x4-splitter-active .x4-collapse-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 102, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x4-proxy-el {
+  position: absolute;
+  background: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8; }
+
+/*
+ * Dock Layouts
+ * @todo move this somewhere else?
+ */
+/* line 6, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-docked {
+  position: absolute !important;
+  z-index: 1; }
+
+/* line 11, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-docked-top {
+  border-bottom-width: 0 !important; }
+
+/* line 15, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-docked-bottom {
+  border-top-width: 0 !important; }
+
+/* line 19, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-docked-left {
+  border-right-width: 0 !important; }
+
+/* line 23, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-docked-right {
+  border-left-width: 0 !important; }
+
+/* line 27, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-docked-noborder-top {
+  border-top-width: 0 !important; }
+
+/* line 31, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-docked-noborder-right {
+  border-right-width: 0 !important; }
+
+/* line 35, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-docked-noborder-bottom {
+  border-bottom-width: 0 !important; }
+
+/* line 39, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-docked-noborder-left {
+  border-left-width: 0 !important; }
+
+/* line 43, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-box-inner {
+  overflow: hidden;
+  zoom: 1;
+  position: relative;
+  left: 0;
+  top: 0; }
+
+/* line 53, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-box-item {
+  position: absolute !important;
+  left: 0;
+  top: 0; }
+
+/* line 59, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-rtl .x4-box-item {
+  right: 0;
+  left: auto; }
+
+/* line 65, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-box-layout-ct,
+.x4-border-layout-ct {
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 70, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-border-layout-ct {
+  background-color: #dfe8f6;
+  position: relative; }
+
+/* line 75, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-overflow-hidden {
+  overflow: hidden !important; }
+
+/* line 79, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-inline-children > * {
+  display: inline-block !important; }
+
+/* line 83, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-abs-layout-ct {
+  position: relative; }
+
+/* line 87, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-abs-layout-item {
+  position: absolute !important; }
+
+/* line 91, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-fit-item {
+  position: relative; }
+
+/* line 95, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-border-region-slide-in {
+  z-index: 5; }
+
+/* line 99, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-region-collapsed-placeholder {
+  z-index: 4; }
+
+/* line 103, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-accordion-hd .x4-panel-header-text {
+  color: black;
+  font-weight: normal; }
+
+/* line 108, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-accordion-hd {
+  background: #d9e7f8 !important;
+  -moz-box-shadow: inset 0 0 0 0 #d9e7f8;
+  -webkit-box-shadow: inset 0 0 0 0 #d9e7f8;
+  -o-box-shadow: inset 0 0 0 0 #d9e7f8;
+  box-shadow: inset 0 0 0 0 #d9e7f8; }
+  /* line 112, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x4-accordion-hd .x4-tool-collapse-top,
+  .x4-accordion-hd .x4-tool-collapse-right,
+  .x4-accordion-hd .x4-tool-collapse-bottom,
+  .x4-accordion-hd .x4-tool-collapse-left {
+    background-position: 0 -255px; }
+  /* line 119, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x4-accordion-hd .x4-tool-expand-top,
+  .x4-accordion-hd .x4-tool-expand-right,
+  .x4-accordion-hd .x4-tool-expand-bottom,
+  .x4-accordion-hd .x4-tool-expand-left {
+    background-position: 0 -240px; }
+  /* line 127, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x4-accordion-hd .x4-tool-over .x4-tool-collapse-top,
+  .x4-accordion-hd .x4-tool-over .x4-tool-collapse-right,
+  .x4-accordion-hd .x4-tool-over .x4-tool-collapse-bottom,
+  .x4-accordion-hd .x4-tool-over .x4-tool-collapse-left {
+    background-position: -15px -255px; }
+  /* line 136, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x4-accordion-hd .x4-tool-over .x4-tool-expand-top,
+  .x4-accordion-hd .x4-tool-over .x4-tool-expand-right,
+  .x4-accordion-hd .x4-tool-over .x4-tool-expand-bottom,
+  .x4-accordion-hd .x4-tool-over .x4-tool-expand-left {
+    background-position: -15px -240px; }
+
+/* line 145, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-accordion-hd {
+  border-width: 1px 0 1px 0 !important;
+  padding: 4px 5px 5px 5px;
+  border-top-color: #f3f7fb !important; }
+
+/* line 151, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-accordion-body {
+  border-width: 0 !important; }
+
+/* line 155, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-accordion-hd-sibling-expanded {
+  border-top-color: #99bce8 !important;
+  -moz-box-shadow: inset 0 1px 0 0 #f3f7fb;
+  -webkit-box-shadow: inset 0 1px 0 0 #f3f7fb;
+  -o-box-shadow: inset 0 1px 0 0 #f3f7fb;
+  box-shadow: inset 0 1px 0 0 #f3f7fb; }
+
+/* line 160, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-accordion-hd-last-collapsed {
+  border-bottom-color: #d9e7f8 !important; }
+
+/* line 169, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-frame-tl,
+.x4-frame-tr,
+.x4-frame-tc,
+.x4-frame-bl,
+.x4-frame-br,
+.x4-frame-bc {
+  overflow: hidden;
+  background-repeat: no-repeat; }
+
+/* line 175, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-frame-tc,
+.x4-frame-bc {
+  background-repeat: repeat-x; }
+
+/* line 179, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-frame-mc {
+  position: relative;
+  background-repeat: repeat-x;
+  overflow: hidden; }
+
+/* line 188, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-box-scroller-left {
+  float: left;
+  height: 100%;
+  z-index: 5; }
+  /* line 195, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x4-box-scroller-left .x4-toolbar-scroll-left,
+  .x4-box-scroller-left .x4-tabbar-scroll-left {
+    width: 18px;
+    position: relative;
+    cursor: pointer;
+    height: 20px;
+    background: transparent no-repeat -18px 0;
+    background-image: url('../../resources/themes/images/default/tab-bar/scroll-left.gif'); }
+  /* line 203, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x4-box-scroller-left .x4-toolbar-scroll-left-hover {
+    background-position: 0 0; }
+  /* line 207, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x4-box-scroller-left .x4-toolbar-scroll-left-disabled,
+  .x4-box-scroller-left .x4-tabbar-scroll-left-disabled {
+    background-position: -18px 0;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5;
+    cursor: default; }
+  /* line 214, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x4-box-scroller-left .x4-toolbar-scroll-left {
+    background-image: url('../../resources/themes/images/default/toolbar/scroll-left.gif');
+    background-position: -14px 0; }
+  /* line 218, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x4-box-scroller-left .x4-toolbar-scroll-left-hover {
+    background-position: 0 0; }
+  /* line 221, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x4-box-scroller-left .x4-toolbar-scroll-left-disabled {
+    background-position: -14px 0; }
+  /* line 225, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x4-box-scroller-left .x4-toolbar-scroll-left {
+    width: 14px;
+    height: 22px;
+    border-bottom: 1px solid #8db2e3; }
+
+/* line 233, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-horizontal-box-overflow-body {
+  float: left; }
+
+/* line 236, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-box-scroller-right {
+  float: right;
+  height: 100%;
+  z-index: 5; }
+  /* line 243, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x4-box-scroller-right .x4-toolbar-scroll-right,
+  .x4-box-scroller-right .x4-tabbar-scroll-right {
+    width: 18px;
+    position: relative;
+    cursor: pointer;
+    height: 20px;
+    background: transparent no-repeat 0 0;
+    background-image: url('../../resources/themes/images/default/tab-bar/scroll-right.gif'); }
+  /* line 251, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x4-box-scroller-right .x4-toolbar-scroll-right-hover {
+    background-position: -18px 0; }
+  /* line 255, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x4-box-scroller-right .x4-toolbar-scroll-right-disabled,
+  .x4-box-scroller-right .x4-tabbar-scroll-right-disabled {
+    background-position: 0 0;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5;
+    cursor: default; }
+  /* line 262, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x4-box-scroller-right .x4-toolbar-scroll-right {
+    background-image: url('../../resources/themes/images/default/toolbar/scroll-right.gif'); }
+  /* line 265, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x4-box-scroller-right .x4-toolbar-scroll-right-hover {
+    background-position: -14px 0; }
+  /* line 268, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x4-box-scroller-right .x4-toolbar-scroll-right-disabled {
+    background-position: 0 0; }
+  /* line 272, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x4-box-scroller-right .x4-toolbar-scroll-right {
+    width: 14px;
+    height: 22px;
+    border-bottom: 1px solid #8db2e3; }
+
+/* line 282, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-box-scroller-top .x4-box-scroller {
+  line-height: 0;
+  font-size: 0; }
+/* line 286, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-box-scroller-top .x4-menu-scroll-top {
+  background: transparent no-repeat center center;
+  background-image: url('../../resources/themes/images/default/layout/mini-top.gif');
+  height: 8px;
+  cursor: pointer; }
+
+/* line 294, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-box-scroller-bottom .x4-box-scroller {
+  line-height: 0;
+  font-size: 0; }
+/* line 298, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-box-scroller-bottom .x4-menu-scroll-bottom {
+  background: transparent no-repeat center center;
+  background-image: url('../../resources/themes/images/default/layout/mini-bottom.gif');
+  height: 8px;
+  cursor: pointer; }
+
+/* line 306, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-box-menu-right {
+  float: right;
+  padding-right: 2px; }
+
+/* line 311, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-column {
+  float: left; }
+
+/* line 315, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-ie6 .x4-column {
+  display: inline;
+  /*prevent IE6 double-margin bug*/ }
+
+/* line 319, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x4-quirks .x4-ie .x4-form-layout-table, .x4-quirks .x4-ie .x4-form-layout-table tbody tr.x4-form-item {
+  position: relative; }
+
+/* line 2, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool {
+  height: 15px; }
+  /* line 5, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x4-tool img {
+    overflow: hidden;
+    width: 15px;
+    height: 15px;
+    cursor: pointer;
+    background-color: transparent;
+    background-repeat: no-repeat;
+    background-image: url('../../resources/themes/images/default/tools/tool-sprites.gif');
+    margin: 0; }
+
+/* line 23, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-panel-header-horizontal .x4-tool,
+.x4-window-header-horizontal .x4-tool {
+  margin-left: 2px; }
+
+/* line 30, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-panel-header-vertical .x4-tool,
+.x4-window-header-vertical .x4-tool {
+  margin-top: 2px; }
+
+/* line 39, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-panel-header-vertical .x4-tool-top,
+.x4-window-header-vertical .x4-tool-top {
+  margin: 0 0 4px; }
+
+/* line 45, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-placeholder {
+  visibility: hidden; }
+
+/* line 49, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-toggle {
+  background-position: 0 -60px; }
+
+/* line 54, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-toggle {
+  background-position: -15px -60px; }
+
+/* line 61, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-panel-collapsed .x4-tool-toggle,
+.x4-fieldset-collapsed .x4-tool-toggle {
+  background-position: 0 -75px; }
+/* line 66, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-panel-collapsed .x4-tool-over .x4-tool-toggle,
+.x4-fieldset-collapsed .x4-tool-over .x4-tool-toggle {
+  background-position: -15px -75px; }
+
+/* line 72, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-close {
+  background-position: 0 0; }
+
+/* line 76, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-minimize {
+  background-position: 0 -15px; }
+
+/* line 80, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-maximize {
+  background-position: 0 -30px; }
+
+/* line 84, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-restore {
+  background-position: 0 -45px; }
+
+/* line 88, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-gear {
+  background-position: 0 -90px; }
+
+/* line 92, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-prev {
+  background-position: 0 -105px; }
+
+/* line 96, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-next {
+  background-position: 0 -120px; }
+
+/* line 100, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-pin {
+  background-position: 0 -135px; }
+
+/* line 104, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-unpin {
+  background-position: 0 -150px; }
+
+/* line 108, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-right {
+  background-position: 0 -165px; }
+
+/* line 112, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-left {
+  background-position: 0 -180px; }
+
+/* line 116, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-help {
+  background-position: 0 -300px; }
+
+/* line 120, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-save {
+  background-position: 0 -285px; }
+
+/* line 124, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-search {
+  background-position: 0 -270px; }
+
+/* line 128, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-minus {
+  background-position: 0 -255px; }
+
+/* line 132, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-plus {
+  background-position: 0 -240px; }
+
+/* line 136, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-refresh {
+  background-position: 0 -225px; }
+
+/* line 140, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-up {
+  background-position: 0 -210px; }
+
+/* line 144, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-down {
+  background-position: 0 -195px; }
+
+/* line 148, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-collapse {
+  background-position: 0 -345px; }
+
+/* line 152, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-expand {
+  background-position: 0 -330px; }
+
+/* line 156, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-print {
+  background-position: 0 -315px; }
+
+/* line 161, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-expand-bottom,
+.x4-tool-collapse-bottom {
+  background-position: 0 -195px; }
+
+/* line 166, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-expand-top,
+.x4-tool-collapse-top {
+  background-position: 0 -210px; }
+
+/* line 171, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-expand-left,
+.x4-tool-collapse-left {
+  background-position: 0 -180px; }
+
+/* line 176, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-expand-right,
+.x4-tool-collapse-right {
+  background-position: 0 -165px; }
+
+/* line 181, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-close {
+  background-position: -15px 0; }
+/* line 185, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-minimize {
+  background-position: -15px -15px; }
+/* line 189, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-maximize {
+  background-position: -15px -30px; }
+/* line 193, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-restore {
+  background-position: -15px -45px; }
+/* line 197, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-gear {
+  background-position: -15px -90px; }
+/* line 201, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-prev {
+  background-position: -15px -105px; }
+/* line 205, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-next {
+  background-position: -15px -120px; }
+/* line 209, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-pin {
+  background-position: -15px -135px; }
+/* line 213, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-unpin {
+  background-position: -15px -150px; }
+/* line 217, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-right {
+  background-position: -15px -165px; }
+/* line 221, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-left {
+  background-position: -15px -180px; }
+/* line 225, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-down {
+  background-position: -15px -195px; }
+/* line 229, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-up {
+  background-position: -15px -210px; }
+/* line 233, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-refresh {
+  background-position: -15px -225px; }
+/* line 237, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-plus {
+  background-position: -15px -240px; }
+/* line 241, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-minus {
+  background-position: -15px -255px; }
+/* line 245, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-search {
+  background-position: -15px -270px; }
+/* line 249, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-save {
+  background-position: -15px -285px; }
+/* line 253, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-help {
+  background-position: -15px -300px; }
+/* line 257, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-print {
+  background-position: -15px -315px; }
+/* line 261, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-expand {
+  background-position: -15px -330px; }
+/* line 265, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-collapse {
+  background-position: -15px -345px; }
+/* line 270, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-expand-bottom,
+.x4-tool-over .x4-tool-collapse-bottom {
+  background-position: -15px -195px; }
+/* line 275, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-expand-top,
+.x4-tool-over .x4-tool-collapse-top {
+  background-position: -15px -210px; }
+/* line 280, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-expand-left,
+.x4-tool-over .x4-tool-collapse-left {
+  background-position: -15px -180px; }
+/* line 285, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x4-tool-over .x4-tool-expand-right,
+.x4-tool-over .x4-tool-collapse-right {
+  background-position: -15px -165px; }
+
+/* line 2, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x4-horizontal-scroller-present .x4-grid-body {
+  border-bottom-width: 0px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x4-vertical-scroller-present .x4-grid-body {
+  border-right-width: 0px; }
+
+/* line 10, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x4-scroller {
+  overflow: hidden; }
+
+/* line 14, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x4-scroller-vertical {
+  border: 1px solid #99bce8;
+  border-top-color: #c5c5c5; }
+
+/* line 19, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x4-scroller-horizontal {
+  border: 1px solid #99bce8; }
+
+/* line 23, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x4-vertical-scroller-present .x4-scroller-horizontal {
+  border-right-width: 0px; }
+
+/* line 27, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x4-scroller-ct {
+  overflow: hidden;
+  position: absolute;
+  margin: 0;
+  padding: 0;
+  border: none;
+  left: 0px;
+  top: 0px;
+  /*
+  In IE9 (only), the border-box style causes the scroller-ct to be 0px in the
+  perpendicular dimension and breaks the scroll as well as offsets it by the left
+  offset that we use to try and keep some size on this element. This works on all
+  browsers (including IE9).
+  */
+  box-sizing: content-box !important;
+  -ms-box-sizing: content-box !important;
+  -moz-box-sizing: content-box !important;
+  -webkit-box-sizing: content-box !important; }
+
+/* line 48, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x4-scroller-vertical .x4-scroller-ct {
+  overflow-y: scroll; }
+
+/* line 52, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x4-scroller-horizontal .x4-scroller-ct {
+  overflow-x: scroll; }
+
+/* line 8, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+.x4-html {
+  /* Begin bidirectionality settings (do not change) */ }
+  /* line 34, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html html, .x4-html address, .x4-html blockquote, .x4-html body, .x4-html dd, .x4-html div, .x4-html dl, .x4-html dt, .x4-html fieldset, .x4-html form, .x4-html frame, .x4-html frameset, .x4-html h1, .x4-html h2, .x4-html h3, .x4-html h4, .x4-html h5, .x4-html h6, .x4-html noframes, .x4-html ol, .x4-html p, .x4-html ul, .x4-html center, .x4-html dir, .x4-html hr, .x4-html menu, .x4-html pre {
+    display: block; }
+  /* line 35, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html li {
+    display: list-item;
+    list-style: disc; }
+  /* line 36, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html head {
+    display: none; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html table {
+    display: table; }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html tr {
+    display: table-row; }
+  /* line 39, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html thead {
+    display: table-header-group; }
+  /* line 40, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html tbody {
+    display: table-row-group; }
+  /* line 41, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html tfoot {
+    display: table-footer-group; }
+  /* line 42, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html col {
+    display: table-column; }
+  /* line 43, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html colgroup {
+    display: table-column-group; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html td, .x4-html th {
+    display: table-cell; }
+  /* line 46, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html caption {
+    display: table-caption; }
+  /* line 47, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html th {
+    font-weight: bolder;
+    text-align: center; }
+  /* line 48, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html caption {
+    text-align: center; }
+  /* line 49, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html body {
+    margin: 8px; }
+  /* line 50, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html h1 {
+    font-size: 2em;
+    margin: .67em 0; }
+  /* line 51, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html h2 {
+    font-size: 1.5em;
+    margin: .75em 0; }
+  /* line 52, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html h3 {
+    font-size: 1.17em;
+    margin: .83em 0; }
+  /* line 62, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html h4, .x4-html p, .x4-html blockquote, .x4-html ul, .x4-html fieldset, .x4-html form, .x4-html ol, .x4-html dl, .x4-html dir, .x4-html menu {
+    margin: 1.12em 0; }
+  /* line 63, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html h5 {
+    font-size: .83em;
+    margin: 1.5em 0; }
+  /* line 64, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html h6 {
+    font-size: .75em;
+    margin: 1.67em 0; }
+  /* line 72, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html h1, .x4-html h2, .x4-html h3, .x4-html h4, .x4-html h5, .x4-html h6, .x4-html b, .x4-html strong {
+    font-weight: bolder; }
+  /* line 73, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html blockquote {
+    margin-left: 40px;
+    margin-right: 40px; }
+  /* line 78, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html i, .x4-html cite, .x4-html em, .x4-html var, .x4-html address {
+    font-style: italic; }
+  /* line 83, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html pre, .x4-html tt, .x4-html code, .x4-html kbd, .x4-html samp {
+    font-family: monospace; }
+  /* line 84, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html pre {
+    white-space: pre; }
+  /* line 88, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html button, .x4-html textarea, .x4-html input, .x4-html select {
+    display: inline-block; }
+  /* line 89, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html big {
+    font-size: 1.17em; }
+  /* line 92, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html small, .x4-html sub, .x4-html sup {
+    font-size: .83em; }
+  /* line 93, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html sub {
+    vertical-align: sub; }
+  /* line 94, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html sup {
+    vertical-align: super; }
+  /* line 95, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html table {
+    border-spacing: 2px; }
+  /* line 98, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html thead, .x4-html tbody, .x4-html tfoot {
+    vertical-align: middle; }
+  /* line 100, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html td, .x4-html th {
+    vertical-align: inherit; }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html s, .x4-html strike, .x4-html del {
+    text-decoration: line-through; }
+  /* line 104, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html hr {
+    border: 1px inset; }
+  /* line 109, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html ol, .x4-html ul, .x4-html dir, .x4-html menu, .x4-html dd {
+    margin-left: 40px; }
+  /* line 110, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html ul, .x4-html menu, .x4-html dir {
+    list-style-type: disc; }
+  /* line 111, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html ol {
+    list-style-type: decimal; }
+  /* line 115, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html ol ul, .x4-html ul ol, .x4-html ul ul, .x4-html ol ol {
+    margin-top: 0;
+    margin-bottom: 0; }
+  /* line 117, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html u, .x4-html ins {
+    text-decoration: underline; }
+  /* line 118, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html br:before {
+    content: "\A"; }
+  /* line 119, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html :before, .x4-html :after {
+    white-space: pre-line; }
+  /* line 120, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html center {
+    text-align: center; }
+  /* line 121, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html :link, .x4-html :visited {
+    text-decoration: underline; }
+  /* line 122, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html :focus {
+    outline: invert dotted thin; }
+  /* line 125, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html BDO[DIR="ltr"] {
+    direction: ltr;
+    unicode-bidi: bidi-override; }
+  /* line 126, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x4-html BDO[DIR="rtl"] {
+    direction: rtl;
+    unicode-bidi: bidi-override; }
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-sandbox.css
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-sandbox.css	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-sandbox.css	(revision 18277)
@@ -0,0 +1,21 @@
+/*
+This file is part of Ext JS 4.1
+
+Copyright (c) 2011-2012 Sencha Inc
+
+Contact:  http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2012-07-04 21:11:01 (65ff594cd80b9bad45df640c22cc0adb52c95a7b)
+*/
+html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}li{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%}q:before,q:after{content:""}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit}*:focus{outline:0}.x4-border-box,.x4-border-box *{box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box}.x4-body{color:black;font-size:12px;font-family:tahoma,arial,verdana,sans-serif}.x4-rtl{direction:rtl}.x4-ltr{direction:ltr}.x4-clear{overflow:hidden;clear:both;font-size:0;line-height:0;display:table}.x4-strict .x4-ie7 .x4-clear{height:0;width:0}.x4-layer{position:absolute!important;overflow:hidden;zoom:1}.x4-shim{position:absolute;left:0;top:0;overflow:hidden;filter:alpha(opacity=0);opacity:0}.x4-hide-display{display:none!important}.x4-hide-visibility{visibility:hidden!important}.x4-item-disabled .x4-form-item-label,.x4-item-disabled .x4-form-field,.x4-item-disabled .x4-form-cb-label,.x4-item-disabled .x4-form-trigger{filter:alpha(opacity=30);opacity:.3}.x4-ie6 .x4-item-disabled{filter:none}.x4-hidden,.x4-hide-offsets{display:block!important;visibility:hidden!important;position:absolute!important;left:-10000px!important;top:-10000px!important}.x4-hide-nosize{height:0!important;width:0!important}.x4-masked-relative{position:relative}.x4-ie6 .x4-masked select,.x4-ie6.x4-body-masked select{visibility:hidden!important}.x4-css-shadow{position:absolute;-moz-border-radius:5px 5px;-webkit-border-radius:5px 5px;-o-border-radius:5px 5px;-ms-border-radius:5px 5px;-khtml-border-radius:5px 5px;border-radius:5px 5px}.x4-ie-shadow{background-color:#777;display:none;position:absolute;overflow:hidden;zoom:1}.x4-box-tl{background:transparent no-repeat 0 0;zoom:1}.x4-box-tc{height:8px;background:transparent repeat-x 0 0;overflow:hidden}.x4-box-tr{background:transparent no-repeat right -8px}.x4-box-ml{background:transparent repeat-y 0;padding-left:4px;overflow:hidden;zoom:1}.x4-box-mc{background:repeat-x 0 -16px;padding:4px 10px}.x4-box-mc h3{margin:0 0 4px 0;zoom:1}.x4-box-mr{background:transparent repeat-y right;padding-right:4px;overflow:hidden}.x4-box-bl{background:transparent no-repeat 0 -16px;zoom:1}.x4-box-bc{background:transparent repeat-x 0 -8px;height:8px;overflow:hidden}.x4-box-br{background:transparent no-repeat right -24px}.x4-box-tl,.x4-box-bl{padding-left:8px;overflow:hidden}.x4-box-tr,.x4-box-br{padding-right:8px;overflow:hidden}.x4-box-tl{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x4-box-tc{background-image:url('../../resources/themes/images/default/box/tb.gif')}.x4-box-tr{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x4-box-ml{background-image:url('../../resources/themes/images/default/box/l.gif')}.x4-box-mc{background-color:#eee;background-image:url('../../resources/themes/images/default/box/tb.gif');font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:15px}.x4-box-mc h3{font-size:18px;font-weight:bold}.x4-box-mr{background-image:url('../../resources/themes/images/default/box/r.gif')}.x4-box-bl{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x4-box-bc{background-image:url('../../resources/themes/images/default/box/tb.gif')}.x4-box-br{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x4-box-blue .x4-box-bl,.x4-box-blue .x4-box-br,.x4-box-blue .x4-box-tl,.x4-box-blue .x4-box-tr{background-image:url('../../resources/themes/images/default/box/corners-blue.gif')}.x4-box-blue .x4-box-bc,.x4-box-blue .x4-box-mc,.x4-box-blue .x4-box-tc{background-image:url('../../resources/themes/images/default/box/tb-blue.gif')}.x4-box-blue .x4-box-mc{background-color:#c3daf9}.x4-box-blue .x4-box-mc h3{color:#17385b}.x4-box-blue .x4-box-ml{background-image:url('../../resources/themes/images/default/box/l-blue.gif')}.x4-box-blue .x4-box-mr{background-image:url('../../resources/themes/images/default/box/r-blue.gif')}.x4-container{zoom:1}.x4-container:before{content:"";clear:both;display:table}table.x4-container:before,tbody.x4-container:before,tr.x4-container:before{display:none}.x4-focus-element{position:absolute;top:-10px;left:-10px;width:0;height:0}.x4-focus-frame{position:absolute;left:0;top:0;z-index:100000000;width:0;height:0}.x4-focus-frame-top,.x4-focus-frame-bottom,.x4-focus-frame-left,.x4-focus-frame-right{position:absolute;top:0;left:0}.x4-focus-frame-top,.x4-focus-frame-bottom{border-top:solid 2px #15428b;height:2px}.x4-focus-frame-left,.x4-focus-frame-right{border-left:solid 2px #15428b;width:2px}.x4-mask{z-index:100;position:absolute;top:0;left:0;filter:alpha(opacity=50);opacity:.5;width:100%;height:100%;zoom:1;background:#ccc}.x4-mask-msg{z-index:20001;position:absolute;top:0;left:0;padding:2px;border:1px solid;border-color:#99bce8;background-image:none;background-color:#dfe9f6}.x4-mask-msg div{padding:5px 10px 5px 25px;background-image:url('../../resources/themes/images/default/grid/loading.gif');background-repeat:no-repeat;background-position:5px center;cursor:wait;border:1px solid #a3bad9;background-color:#eee;color:#222;font:normal 11px tahoma,arial,verdana,sans-serif}.x4-boundlist{border-width:1px;border-style:solid;border-color:#98c0f4;background:white}.x4-boundlist .x4-toolbar{border-width:1px 0 0 0}.x4-strict .x4-ie6 .x4-boundlist-list-ct,.x4-strict .x4-ie7 .x4-boundlist-list-ct{position:relative}.x4-boundlist-item{padding:2px;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;cursor:pointer;cursor:hand;position:relative;border-width:1px;border-style:dotted;border-color:white}.x4-boundlist-selected{background:#cbdaf0;border-color:#8eabe4}.x4-boundlist-item-over{background:#dfe8f6;border-color:#a3bae9}.x4-boundlist-floating{border-top-width:0}.x4-boundlist-above{border-top-width:1px;border-bottom-width:1px}.x4-btn{display:inline-block;zoom:1;*display:inline;position:relative;cursor:pointer;cursor:hand;white-space:nowrap;vertical-align:middle;background-repeat:no-repeat}.x4-btn *{cursor:pointer;cursor:hand}.x4-btn em{background-repeat:no-repeat}.x4-btn em a{text-decoration:none;display:block;color:inherit;width:100%;zoom:1}.x4-btn button{width:100%;display:block;margin:0;padding:0;border:0;background:0;outline:0 none;overflow:hidden;vertical-align:bottom;-webkit-appearance:none}.x4-btn button::-moz-focus-inner{border:0;padding:0}.x4-btn .x4-btn-inner{display:block;white-space:nowrap;background-color:transparent;background-repeat:no-repeat;background-position:left center;overflow:hidden}.x4-btn .x4-btn-left .x4-btn-inner{text-align:left}.x4-btn .x4-btn-center .x4-btn-inner{text-align:center}.x4-btn .x4-btn-right .x4-btn-inner{text-align:right}.x4-btn-disabled span{filter:alpha(opacity=50);opacity:.5}.x4-ie6 .x4-btn-disabled span,.x4-ie7 .x4-btn-disabled span{filter:none}.x4-ie7 .x4-btn-disabled,.x4-ie8 .x4-btn-disabled{filter:none}.x4-ie6 .x4-btn-disabled .x4-btn-icon,.x4-ie7 .x4-btn-disabled .x4-btn-icon,.x4-ie8 .x4-btn-disabled .x4-btn-icon{filter:alpha(opacity=60);opacity:.6}.x4-ie9 .x4-btn button{overflow:visible!important}* html .x4-ie .x4-btn button{width:1px}.x4-ie .x4-btn button{overflow-x:visible;vertical-align:baseline}.x4-strict .x4-ie6 .x4-btn .x4-frame-mc,.x4-strict .x4-ie7 .x4-btn .x4-frame-mc{height:100%}.x4-btn .x4-frame-mc{vertical-align:middle;white-space:nowrap;cursor:pointer}.x4-btn-noicon .x4-frame-mc{text-align:center}.x4-btn-icon-text-left .x4-btn-icon{background-position:left center}.x4-btn-icon-text-right .x4-btn-icon{background-position:right center}.x4-btn-icon-text-top .x4-btn-icon{background-position:center top}.x4-btn-icon-text-bottom .x4-btn-icon{background-position:center bottom}.x4-btn button,.x4-btn a{position:relative}.x4-btn button .x4-btn-icon,.x4-btn a .x4-btn-icon{position:absolute;background-repeat:no-repeat}.x4-btn-arrow-right{background:transparent no-repeat right center;padding-right:12px}.x4-btn-arrow-right .x4-btn-inner{padding-right:0!important}.x4-toolbar .x4-btn-arrow-right{padding-right:12px}.x4-btn-arrow-bottom{background:transparent no-repeat center bottom;padding-bottom:12px}.x4-btn-arrow{background-image:url('../../resources/themes/images/default/button/arrow.gif');display:block}.x4-btn-split-right,.x4-btn-over .x4-btn-split-right{background:transparent no-repeat right center;background-image:url('../../resources/themes/images/default/button/s-arrow.gif');padding-right:14px!important}.x4-btn-split-bottom,.x4-btn-over .x4-btn-split-bottom{background:transparent no-repeat center bottom;background-image:url('../../resources/themes/images/default/button/s-arrow-b.gif');padding-bottom:14px}.x4-toolbar .x4-btn-split-right{background-image:url('../../resources/themes/images/default/button/s-arrow-noline.gif');padding-right:12px!important}.x4-toolbar .x4-btn-split-bottom{background-image:url('../../resources/themes/images/default/button/s-arrow-b-noline.gif')}.x4-btn-split{display:block}.x4-item-disabled,.x4-item-disabled *{cursor:default}.x4-cycle-fixed-width .x4-btn-inner{text-align:inherit}.x4-btn-over .x4-btn-split-right{background-image:url('../../resources/themes/images/default/button/s-arrow-o.gif')}.x4-btn-over .x4-btn-split-bottom{background-image:url('../../resources/themes/images/default/button/s-arrow-bo.gif')}.x4-btn-default-small{border-color:#d1d1d1}.x4-btn-default-small{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-ms-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x4-nlg .x4-btn-default-small-mc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-bg.gif');background-color:white}.x4-nbr .x4-btn-default-small{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x4-nbr .x4-btn-default-small-tl,.x4-nbr .x4-btn-default-small-bl,.x4-nbr .x4-btn-default-small-tr,.x4-nbr .x4-btn-default-small-br,.x4-nbr .x4-btn-default-small-tc,.x4-nbr .x4-btn-default-small-bc,.x4-nbr .x4-btn-default-small-ml,.x4-nbr .x4-btn-default-small-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-small-corners.gif')}.x4-nbr .x4-btn-default-small-ml,.x4-nbr .x4-btn-default-small-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-small-sides.gif');background-position:0 0}.x4-nbr .x4-btn-default-small-mc{padding:0}.x4-strict .x4-ie7 .x4-btn-default-small-tl,.x4-strict .x4-ie7 .x4-btn-default-small-bl{position:relative;right:0}.x4-btn-default-small .x4-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 4px}.x4-btn-default-small-icon button,.x4-btn-default-small-icon a,.x4-btn-default-small-icon .x4-btn-inner,.x4-btn-default-small-noicon button,.x4-btn-default-small-noicon a,.x4-btn-default-small-noicon .x4-btn-inner{height:16px;line-height:16px}.x4-btn-default-small-icon button,.x4-btn-default-small-icon a{padding:0}.x4-btn-default-small-icon .x4-btn-inner{width:16px;padding:0}.x4-btn-default-small-icon .x4-btn-icon{width:16px;height:16px;top:0;left:0;bottom:0;right:0}.x4-btn-default-small-icon-text-left button,.x4-btn-default-small-icon-text-left a{height:16px}.x4-btn-default-small-icon-text-left .x4-btn-inner{height:16px;line-height:16px;padding-left:20px}.x4-btn-default-small-icon-text-left .x4-btn-icon{width:16px;height:auto;top:0;left:0;bottom:0;right:auto}.x4-ie6 .x4-btn-default-small-icon-text-left .x4-btn-icon,.x4-quirks .x4-btn-default-small-icon-text-left .x4-btn-icon{height:16px}.x4-btn-default-small-icon-text-right button,.x4-btn-default-small-icon-text-right a{height:16px}.x4-btn-default-small-icon-text-right .x4-btn-inner{height:16px;line-height:16px;padding-right:20px!important}.x4-btn-default-small-icon-text-right .x4-btn-icon{width:16px;height:auto;top:0;left:auto;bottom:0;right:0}.x4-ie6 .x4-btn-default-small-icon-text-right .x4-btn-icon,.x4-quirks .x4-btn-default-small-icon-text-right .x4-btn-icon{height:16px}.x4-btn-default-small-icon-text-top .x4-btn-inner{padding-top:20px}.x4-btn-default-small-icon-text-top .x4-btn-icon{width:auto;height:16px;top:0;left:0;bottom:auto;right:0}.x4-ie6 .x4-btn-default-small-icon-text-top .x4-btn-icon,.x4-quirks .x4-ie .x4-btn-default-small-icon-text-top .x4-btn-icon{width:16px}.x4-btn-default-small-icon-text-bottom .x4-btn-inner{padding-bottom:20px}.x4-btn-default-small-icon-text-bottom .x4-btn-icon{width:auto;height:16px;top:auto;left:0;bottom:0;right:0}.x4-ie6 .x4-btn-default-small-icon-text-bottom .x4-btn-icon,.x4-quirks .x4-ie .x4-btn-default-small-icon-text-bottom .x4-btn-icon{width:16px}.x4-btn-default-small-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x4-btn-default-small-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x4-btn-default-small-menu-active,.x4-btn-default-small-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-ms-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x4-btn-default-small-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-ms-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x4-btn-default-small-disabled .x4-btn-inner{color:#333!important}.x4-ie .x4-btn-default-small-disabled .x4-btn-inner{color:#595959!important}.x4-ie6 .x4-btn-default-small-disabled .x4-btn-inner{color:#8c8c8c!important}.x4-nbr .x4-btn-default-small-over .x4-frame-tl,.x4-nbr .x4-btn-default-small-over .x4-frame-bl,.x4-nbr .x4-btn-default-small-over .x4-frame-tr,.x4-nbr .x4-btn-default-small-over .x4-frame-br,.x4-nbr .x4-btn-default-small-over .x4-frame-tc,.x4-nbr .x4-btn-default-small-over .x4-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-over-corners.gif')}.x4-nbr .x4-btn-default-small-over .x4-frame-ml,.x4-nbr .x4-btn-default-small-over .x4-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-small-over-sides.gif')}.x4-nbr .x4-btn-default-small-over .x4-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-small-over-bg.gif')}.x4-nbr .x4-btn-default-small-focus .x4-frame-tl,.x4-nbr .x4-btn-default-small-focus .x4-frame-bl,.x4-nbr .x4-btn-default-small-focus .x4-frame-tr,.x4-nbr .x4-btn-default-small-focus .x4-frame-br,.x4-nbr .x4-btn-default-small-focus .x4-frame-tc,.x4-nbr .x4-btn-default-small-focus .x4-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-focus-corners.gif')}.x4-nbr .x4-btn-default-small-focus .x4-frame-ml,.x4-nbr .x4-btn-default-small-focus .x4-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-small-focus-sides.gif')}.x4-nbr .x4-btn-default-small-focus .x4-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-small-focus-bg.gif')}.x4-nbr .x4-btn-default-small-menu-active .x4-frame-tl,.x4-nbr .x4-btn-default-small-menu-active .x4-frame-bl,.x4-nbr .x4-btn-default-small-menu-active .x4-frame-tr,.x4-nbr .x4-btn-default-small-menu-active .x4-frame-br,.x4-nbr .x4-btn-default-small-menu-active .x4-frame-tc,.x4-nbr .x4-btn-default-small-menu-active .x4-frame-bc,.x4-nbr .x4-btn-default-small-pressed .x4-frame-tl,.x4-nbr .x4-btn-default-small-pressed .x4-frame-bl,.x4-nbr .x4-btn-default-small-pressed .x4-frame-tr,.x4-nbr .x4-btn-default-small-pressed .x4-frame-br,.x4-nbr .x4-btn-default-small-pressed .x4-frame-tc,.x4-nbr .x4-btn-default-small-pressed .x4-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-pressed-corners.gif')}.x4-nbr .x4-btn-default-small-menu-active .x4-frame-ml,.x4-nbr .x4-btn-default-small-menu-active .x4-frame-mr,.x4-nbr .x4-btn-default-small-pressed .x4-frame-ml,.x4-nbr .x4-btn-default-small-pressed .x4-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-small-pressed-sides.gif')}.x4-nbr .x4-btn-default-small-menu-active .x4-frame-mc,.x4-nbr .x4-btn-default-small-pressed .x4-frame-mc{background-color:#b6cbe4;background-image:url('../../resources/themes/images/default/btn/btn-default-small-pressed-bg.gif')}.x4-nbr .x4-btn-default-small-disabled .x4-frame-tl,.x4-nbr .x4-btn-default-small-disabled .x4-frame-bl,.x4-nbr .x4-btn-default-small-disabled .x4-frame-tr,.x4-nbr .x4-btn-default-small-disabled .x4-frame-br,.x4-nbr .x4-btn-default-small-disabled .x4-frame-tc,.x4-nbr .x4-btn-default-small-disabled .x4-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-disabled-corners.gif')}.x4-nbr .x4-btn-default-small-disabled .x4-frame-ml,.x4-nbr .x4-btn-default-small-disabled .x4-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-small-disabled-sides.gif')}.x4-nbr .x4-btn-default-small-disabled .x4-frame-mc{background-color:#f7f7f7;background-image:url('../../resources/themes/images/default/btn/btn-default-small-disabled-bg.gif')}.x4-nlg .x4-btn-default-small{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-bg.gif')}.x4-nlg .x4-btn-default-small-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-over-bg.gif')}.x4-nlg .x4-btn-default-small-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-focus-bg.gif')}.x4-nlg .x4-btn-default-small-menu-active,.x4-nlg .x4-btn-default-small-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-pressed-bg.gif')}.x4-nlg .x4-btn-default-small-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-disabled-bg.gif')}.x4-btn-default-medium{border-color:#d1d1d1}.x4-btn-default-medium{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-ms-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x4-nlg .x4-btn-default-medium-mc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif');background-color:white}.x4-nbr .x4-btn-default-medium{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x4-nbr .x4-btn-default-medium-tl,.x4-nbr .x4-btn-default-medium-bl,.x4-nbr .x4-btn-default-medium-tr,.x4-nbr .x4-btn-default-medium-br,.x4-nbr .x4-btn-default-medium-tc,.x4-nbr .x4-btn-default-medium-bc,.x4-nbr .x4-btn-default-medium-ml,.x4-nbr .x4-btn-default-medium-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-corners.gif')}.x4-nbr .x4-btn-default-medium-ml,.x4-nbr .x4-btn-default-medium-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-sides.gif');background-position:0 0}.x4-nbr .x4-btn-default-medium-mc{padding:1px 1px 1px 1px}.x4-strict .x4-ie7 .x4-btn-default-medium-tl,.x4-strict .x4-ie7 .x4-btn-default-medium-bl{position:relative;right:0}.x4-btn-default-medium .x4-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x4-btn-default-medium-icon button,.x4-btn-default-medium-icon a,.x4-btn-default-medium-icon .x4-btn-inner,.x4-btn-default-medium-noicon button,.x4-btn-default-medium-noicon a,.x4-btn-default-medium-noicon .x4-btn-inner{height:24px;line-height:24px}.x4-btn-default-medium-icon button,.x4-btn-default-medium-icon a{padding:0}.x4-btn-default-medium-icon .x4-btn-inner{width:24px;padding:0}.x4-btn-default-medium-icon .x4-btn-icon{width:24px;height:24px;top:0;left:0;bottom:0;right:0}.x4-btn-default-medium-icon-text-left button,.x4-btn-default-medium-icon-text-left a{height:24px}.x4-btn-default-medium-icon-text-left .x4-btn-inner{height:24px;line-height:24px;padding-left:28px}.x4-btn-default-medium-icon-text-left .x4-btn-icon{width:24px;height:auto;top:0;left:0;bottom:0;right:auto}.x4-ie6 .x4-btn-default-medium-icon-text-left .x4-btn-icon,.x4-quirks .x4-btn-default-medium-icon-text-left .x4-btn-icon{height:24px}.x4-btn-default-medium-icon-text-right button,.x4-btn-default-medium-icon-text-right a{height:24px}.x4-btn-default-medium-icon-text-right .x4-btn-inner{height:24px;line-height:24px;padding-right:28px!important}.x4-btn-default-medium-icon-text-right .x4-btn-icon{width:24px;height:auto;top:0;left:auto;bottom:0;right:0}.x4-ie6 .x4-btn-default-medium-icon-text-right .x4-btn-icon,.x4-quirks .x4-btn-default-medium-icon-text-right .x4-btn-icon{height:24px}.x4-btn-default-medium-icon-text-top .x4-btn-inner{padding-top:28px}.x4-btn-default-medium-icon-text-top .x4-btn-icon{width:auto;height:24px;top:0;left:0;bottom:auto;right:0}.x4-ie6 .x4-btn-default-medium-icon-text-top .x4-btn-icon,.x4-quirks .x4-ie .x4-btn-default-medium-icon-text-top .x4-btn-icon{width:24px}.x4-btn-default-medium-icon-text-bottom .x4-btn-inner{padding-bottom:28px}.x4-btn-default-medium-icon-text-bottom .x4-btn-icon{width:auto;height:24px;top:auto;left:0;bottom:0;right:0}.x4-ie6 .x4-btn-default-medium-icon-text-bottom .x4-btn-icon,.x4-quirks .x4-ie .x4-btn-default-medium-icon-text-bottom .x4-btn-icon{width:24px}.x4-btn-default-medium-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x4-btn-default-medium-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x4-btn-default-medium-menu-active,.x4-btn-default-medium-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-ms-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x4-btn-default-medium-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-ms-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x4-btn-default-medium-disabled .x4-btn-inner{color:#333!important}.x4-ie .x4-btn-default-medium-disabled .x4-btn-inner{color:#595959!important}.x4-ie6 .x4-btn-default-medium-disabled .x4-btn-inner{color:#8c8c8c!important}.x4-nbr .x4-btn-default-medium-over .x4-frame-tl,.x4-nbr .x4-btn-default-medium-over .x4-frame-bl,.x4-nbr .x4-btn-default-medium-over .x4-frame-tr,.x4-nbr .x4-btn-default-medium-over .x4-frame-br,.x4-nbr .x4-btn-default-medium-over .x4-frame-tc,.x4-nbr .x4-btn-default-medium-over .x4-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-over-corners.gif')}.x4-nbr .x4-btn-default-medium-over .x4-frame-ml,.x4-nbr .x4-btn-default-medium-over .x4-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-over-sides.gif')}.x4-nbr .x4-btn-default-medium-over .x4-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-over-bg.gif')}.x4-nbr .x4-btn-default-medium-focus .x4-frame-tl,.x4-nbr .x4-btn-default-medium-focus .x4-frame-bl,.x4-nbr .x4-btn-default-medium-focus .x4-frame-tr,.x4-nbr .x4-btn-default-medium-focus .x4-frame-br,.x4-nbr .x4-btn-default-medium-focus .x4-frame-tc,.x4-nbr .x4-btn-default-medium-focus .x4-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-focus-corners.gif')}.x4-nbr .x4-btn-default-medium-focus .x4-frame-ml,.x4-nbr .x4-btn-default-medium-focus .x4-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-focus-sides.gif')}.x4-nbr .x4-btn-default-medium-focus .x4-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-focus-bg.gif')}.x4-nbr .x4-btn-default-medium-menu-active .x4-frame-tl,.x4-nbr .x4-btn-default-medium-menu-active .x4-frame-bl,.x4-nbr .x4-btn-default-medium-menu-active .x4-frame-tr,.x4-nbr .x4-btn-default-medium-menu-active .x4-frame-br,.x4-nbr .x4-btn-default-medium-menu-active .x4-frame-tc,.x4-nbr .x4-btn-default-medium-menu-active .x4-frame-bc,.x4-nbr .x4-btn-default-medium-pressed .x4-frame-tl,.x4-nbr .x4-btn-default-medium-pressed .x4-frame-bl,.x4-nbr .x4-btn-default-medium-pressed .x4-frame-tr,.x4-nbr .x4-btn-default-medium-pressed .x4-frame-br,.x4-nbr .x4-btn-default-medium-pressed .x4-frame-tc,.x4-nbr .x4-btn-default-medium-pressed .x4-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-pressed-corners.gif')}.x4-nbr .x4-btn-default-medium-menu-active .x4-frame-ml,.x4-nbr .x4-btn-default-medium-menu-active .x4-frame-mr,.x4-nbr .x4-btn-default-medium-pressed .x4-frame-ml,.x4-nbr .x4-btn-default-medium-pressed .x4-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-pressed-sides.gif')}.x4-nbr .x4-btn-default-medium-menu-active .x4-frame-mc,.x4-nbr .x4-btn-default-medium-pressed .x4-frame-mc{background-color:#b6cbe4;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif')}.x4-nbr .x4-btn-default-medium-disabled .x4-frame-tl,.x4-nbr .x4-btn-default-medium-disabled .x4-frame-bl,.x4-nbr .x4-btn-default-medium-disabled .x4-frame-tr,.x4-nbr .x4-btn-default-medium-disabled .x4-frame-br,.x4-nbr .x4-btn-default-medium-disabled .x4-frame-tc,.x4-nbr .x4-btn-default-medium-disabled .x4-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-disabled-corners.gif')}.x4-nbr .x4-btn-default-medium-disabled .x4-frame-ml,.x4-nbr .x4-btn-default-medium-disabled .x4-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-disabled-sides.gif')}.x4-nbr .x4-btn-default-medium-disabled .x4-frame-mc{background-color:#f7f7f7;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif')}.x4-nlg .x4-btn-default-medium{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif')}.x4-nlg .x4-btn-default-medium-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-over-bg.gif')}.x4-nlg .x4-btn-default-medium-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-focus-bg.gif')}.x4-nlg .x4-btn-default-medium-menu-active,.x4-nlg .x4-btn-default-medium-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif')}.x4-nlg .x4-btn-default-medium-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif')}.x4-btn-default-large{border-color:#d1d1d1}.x4-btn-default-large{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-ms-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x4-nlg .x4-btn-default-large-mc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-bg.gif');background-color:white}.x4-nbr .x4-btn-default-large{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x4-nbr .x4-btn-default-large-tl,.x4-nbr .x4-btn-default-large-bl,.x4-nbr .x4-btn-default-large-tr,.x4-nbr .x4-btn-default-large-br,.x4-nbr .x4-btn-default-large-tc,.x4-nbr .x4-btn-default-large-bc,.x4-nbr .x4-btn-default-large-ml,.x4-nbr .x4-btn-default-large-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-large-corners.gif')}.x4-nbr .x4-btn-default-large-ml,.x4-nbr .x4-btn-default-large-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn/btn-default-large-sides.gif');background-position:0 0}.x4-nbr .x4-btn-default-large-mc{padding:1px 1px 1px 1px}.x4-strict .x4-ie7 .x4-btn-default-large-tl,.x4-strict .x4-ie7 .x4-btn-default-large-bl{position:relative;right:0}.x4-btn-default-large .x4-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x4-btn-default-large-icon button,.x4-btn-default-large-icon a,.x4-btn-default-large-icon .x4-btn-inner,.x4-btn-default-large-noicon button,.x4-btn-default-large-noicon a,.x4-btn-default-large-noicon .x4-btn-inner{height:32px;line-height:32px}.x4-btn-default-large-icon button,.x4-btn-default-large-icon a{padding:0}.x4-btn-default-large-icon .x4-btn-inner{width:32px;padding:0}.x4-btn-default-large-icon .x4-btn-icon{width:32px;height:32px;top:0;left:0;bottom:0;right:0}.x4-btn-default-large-icon-text-left button,.x4-btn-default-large-icon-text-left a{height:32px}.x4-btn-default-large-icon-text-left .x4-btn-inner{height:32px;line-height:32px;padding-left:36px}.x4-btn-default-large-icon-text-left .x4-btn-icon{width:32px;height:auto;top:0;left:0;bottom:0;right:auto}.x4-ie6 .x4-btn-default-large-icon-text-left .x4-btn-icon,.x4-quirks .x4-btn-default-large-icon-text-left .x4-btn-icon{height:32px}.x4-btn-default-large-icon-text-right button,.x4-btn-default-large-icon-text-right a{height:32px}.x4-btn-default-large-icon-text-right .x4-btn-inner{height:32px;line-height:32px;padding-right:36px!important}.x4-btn-default-large-icon-text-right .x4-btn-icon{width:32px;height:auto;top:0;left:auto;bottom:0;right:0}.x4-ie6 .x4-btn-default-large-icon-text-right .x4-btn-icon,.x4-quirks .x4-btn-default-large-icon-text-right .x4-btn-icon{height:32px}.x4-btn-default-large-icon-text-top .x4-btn-inner{padding-top:36px}.x4-btn-default-large-icon-text-top .x4-btn-icon{width:auto;height:32px;top:0;left:0;bottom:auto;right:0}.x4-ie6 .x4-btn-default-large-icon-text-top .x4-btn-icon,.x4-quirks .x4-ie .x4-btn-default-large-icon-text-top .x4-btn-icon{width:32px}.x4-btn-default-large-icon-text-bottom .x4-btn-inner{padding-bottom:36px}.x4-btn-default-large-icon-text-bottom .x4-btn-icon{width:auto;height:32px;top:auto;left:0;bottom:0;right:0}.x4-ie6 .x4-btn-default-large-icon-text-bottom .x4-btn-icon,.x4-quirks .x4-ie .x4-btn-default-large-icon-text-bottom .x4-btn-icon{width:32px}.x4-btn-default-large-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x4-btn-default-large-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x4-btn-default-large-menu-active,.x4-btn-default-large-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-ms-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x4-btn-default-large-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-ms-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x4-btn-default-large-disabled .x4-btn-inner{color:#333!important}.x4-ie .x4-btn-default-large-disabled .x4-btn-inner{color:#595959!important}.x4-ie6 .x4-btn-default-large-disabled .x4-btn-inner{color:#8c8c8c!important}.x4-nbr .x4-btn-default-large-over .x4-frame-tl,.x4-nbr .x4-btn-default-large-over .x4-frame-bl,.x4-nbr .x4-btn-default-large-over .x4-frame-tr,.x4-nbr .x4-btn-default-large-over .x4-frame-br,.x4-nbr .x4-btn-default-large-over .x4-frame-tc,.x4-nbr .x4-btn-default-large-over .x4-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-over-corners.gif')}.x4-nbr .x4-btn-default-large-over .x4-frame-ml,.x4-nbr .x4-btn-default-large-over .x4-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-large-over-sides.gif')}.x4-nbr .x4-btn-default-large-over .x4-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-large-over-bg.gif')}.x4-nbr .x4-btn-default-large-focus .x4-frame-tl,.x4-nbr .x4-btn-default-large-focus .x4-frame-bl,.x4-nbr .x4-btn-default-large-focus .x4-frame-tr,.x4-nbr .x4-btn-default-large-focus .x4-frame-br,.x4-nbr .x4-btn-default-large-focus .x4-frame-tc,.x4-nbr .x4-btn-default-large-focus .x4-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-focus-corners.gif')}.x4-nbr .x4-btn-default-large-focus .x4-frame-ml,.x4-nbr .x4-btn-default-large-focus .x4-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-large-focus-sides.gif')}.x4-nbr .x4-btn-default-large-focus .x4-frame-mc{background-color:#e4f3ff;background-image:url('../../resources/themes/images/default/btn/btn-default-large-focus-bg.gif')}.x4-nbr .x4-btn-default-large-menu-active .x4-frame-tl,.x4-nbr .x4-btn-default-large-menu-active .x4-frame-bl,.x4-nbr .x4-btn-default-large-menu-active .x4-frame-tr,.x4-nbr .x4-btn-default-large-menu-active .x4-frame-br,.x4-nbr .x4-btn-default-large-menu-active .x4-frame-tc,.x4-nbr .x4-btn-default-large-menu-active .x4-frame-bc,.x4-nbr .x4-btn-default-large-pressed .x4-frame-tl,.x4-nbr .x4-btn-default-large-pressed .x4-frame-bl,.x4-nbr .x4-btn-default-large-pressed .x4-frame-tr,.x4-nbr .x4-btn-default-large-pressed .x4-frame-br,.x4-nbr .x4-btn-default-large-pressed .x4-frame-tc,.x4-nbr .x4-btn-default-large-pressed .x4-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-pressed-corners.gif')}.x4-nbr .x4-btn-default-large-menu-active .x4-frame-ml,.x4-nbr .x4-btn-default-large-menu-active .x4-frame-mr,.x4-nbr .x4-btn-default-large-pressed .x4-frame-ml,.x4-nbr .x4-btn-default-large-pressed .x4-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-large-pressed-sides.gif')}.x4-nbr .x4-btn-default-large-menu-active .x4-frame-mc,.x4-nbr .x4-btn-default-large-pressed .x4-frame-mc{background-color:#b6cbe4;background-image:url('../../resources/themes/images/default/btn/btn-default-large-pressed-bg.gif')}.x4-nbr .x4-btn-default-large-disabled .x4-frame-tl,.x4-nbr .x4-btn-default-large-disabled .x4-frame-bl,.x4-nbr .x4-btn-default-large-disabled .x4-frame-tr,.x4-nbr .x4-btn-default-large-disabled .x4-frame-br,.x4-nbr .x4-btn-default-large-disabled .x4-frame-tc,.x4-nbr .x4-btn-default-large-disabled .x4-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-disabled-corners.gif')}.x4-nbr .x4-btn-default-large-disabled .x4-frame-ml,.x4-nbr .x4-btn-default-large-disabled .x4-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-large-disabled-sides.gif')}.x4-nbr .x4-btn-default-large-disabled .x4-frame-mc{background-color:#f7f7f7;background-image:url('../../resources/themes/images/default/btn/btn-default-large-disabled-bg.gif')}.x4-nlg .x4-btn-default-large{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-bg.gif')}.x4-nlg .x4-btn-default-large-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-over-bg.gif')}.x4-nlg .x4-btn-default-large-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-focus-bg.gif')}.x4-nlg .x4-btn-default-large-menu-active,.x4-nlg .x4-btn-default-large-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-pressed-bg.gif')}.x4-nlg .x4-btn-default-large-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-disabled-bg.gif')}.x4-btn-default-toolbar-small{border-color:transparent}.x4-btn-default-toolbar-small{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:transparent}.x4-nlg .x4-btn-default-toolbar-small-mc{background-color:transparent}.x4-nbr .x4-btn-default-toolbar-small{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x4-nbr .x4-btn-default-toolbar-small-tl,.x4-nbr .x4-btn-default-toolbar-small-bl,.x4-nbr .x4-btn-default-toolbar-small-tr,.x4-nbr .x4-btn-default-toolbar-small-br,.x4-nbr .x4-btn-default-toolbar-small-tc,.x4-nbr .x4-btn-default-toolbar-small-bc,.x4-nbr .x4-btn-default-toolbar-small-ml,.x4-nbr .x4-btn-default-toolbar-small-mr{zoom:1}.x4-nbr .x4-btn-default-toolbar-small-ml,.x4-nbr .x4-btn-default-toolbar-small-mr{zoom:1}.x4-nbr .x4-btn-default-toolbar-small-mc{padding:0}.x4-strict .x4-ie7 .x4-btn-default-toolbar-small-tl,.x4-strict .x4-ie7 .x4-btn-default-toolbar-small-bl{position:relative;right:0}.x4-btn-default-toolbar-small .x4-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 4px}.x4-btn-default-toolbar-small-icon button,.x4-btn-default-toolbar-small-icon a,.x4-btn-default-toolbar-small-icon .x4-btn-inner,.x4-btn-default-toolbar-small-noicon button,.x4-btn-default-toolbar-small-noicon a,.x4-btn-default-toolbar-small-noicon .x4-btn-inner{height:16px;line-height:16px}.x4-btn-default-toolbar-small-icon button,.x4-btn-default-toolbar-small-icon a{padding:0}.x4-btn-default-toolbar-small-icon .x4-btn-inner{width:16px;padding:0}.x4-btn-default-toolbar-small-icon .x4-btn-icon{width:16px;height:16px;top:0;left:0;bottom:0;right:0}.x4-btn-default-toolbar-small-icon-text-left button,.x4-btn-default-toolbar-small-icon-text-left a{height:16px}.x4-btn-default-toolbar-small-icon-text-left .x4-btn-inner{height:16px;line-height:16px;padding-left:20px}.x4-btn-default-toolbar-small-icon-text-left .x4-btn-icon{width:16px;height:auto;top:0;left:0;bottom:0;right:auto}.x4-ie6 .x4-btn-default-toolbar-small-icon-text-left .x4-btn-icon,.x4-quirks .x4-btn-default-toolbar-small-icon-text-left .x4-btn-icon{height:16px}.x4-btn-default-toolbar-small-icon-text-right button,.x4-btn-default-toolbar-small-icon-text-right a{height:16px}.x4-btn-default-toolbar-small-icon-text-right .x4-btn-inner{height:16px;line-height:16px;padding-right:20px!important}.x4-btn-default-toolbar-small-icon-text-right .x4-btn-icon{width:16px;height:auto;top:0;left:auto;bottom:0;right:0}.x4-ie6 .x4-btn-default-toolbar-small-icon-text-right .x4-btn-icon,.x4-quirks .x4-btn-default-toolbar-small-icon-text-right .x4-btn-icon{height:16px}.x4-btn-default-toolbar-small-icon-text-top .x4-btn-inner{padding-top:20px}.x4-btn-default-toolbar-small-icon-text-top .x4-btn-icon{width:auto;height:16px;top:0;left:0;bottom:auto;right:0}.x4-ie6 .x4-btn-default-toolbar-small-icon-text-top .x4-btn-icon,.x4-quirks .x4-ie .x4-btn-default-toolbar-small-icon-text-top .x4-btn-icon{width:16px}.x4-btn-default-toolbar-small-icon-text-bottom .x4-btn-inner{padding-bottom:20px}.x4-btn-default-toolbar-small-icon-text-bottom .x4-btn-icon{width:auto;height:16px;top:auto;left:0;bottom:0;right:0}.x4-ie6 .x4-btn-default-toolbar-small-icon-text-bottom .x4-btn-icon,.x4-quirks .x4-ie .x4-btn-default-toolbar-small-icon-text-bottom .x4-btn-icon{width:16px}.x4-btn-default-toolbar-small-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x4-btn-default-toolbar-small-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x4-btn-default-toolbar-small-menu-active,.x4-btn-default-toolbar-small-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-ms-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x4-btn-default-toolbar-small-disabled{background-image:none;background-color:transparent}.x4-btn-default-toolbar-small-disabled .x4-btn-inner{color:#333!important}.x4-ie .x4-btn-default-toolbar-small-disabled .x4-btn-inner{color:#595959!important}.x4-ie6 .x4-btn-default-toolbar-small-disabled .x4-btn-inner{color:#8c8c8c!important}.x4-nbr .x4-btn-default-toolbar-small-over .x4-frame-tl,.x4-nbr .x4-btn-default-toolbar-small-over .x4-frame-bl,.x4-nbr .x4-btn-default-toolbar-small-over .x4-frame-tr,.x4-nbr .x4-btn-default-toolbar-small-over .x4-frame-br,.x4-nbr .x4-btn-default-toolbar-small-over .x4-frame-tc,.x4-nbr .x4-btn-default-toolbar-small-over .x4-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-corners.gif')}.x4-nbr .x4-btn-default-toolbar-small-over .x4-frame-ml,.x4-nbr .x4-btn-default-toolbar-small-over .x4-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-sides.gif')}.x4-nbr .x4-btn-default-toolbar-small-over .x4-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif')}.x4-nbr .x4-btn-default-toolbar-small-focus .x4-frame-tl,.x4-nbr .x4-btn-default-toolbar-small-focus .x4-frame-bl,.x4-nbr .x4-btn-default-toolbar-small-focus .x4-frame-tr,.x4-nbr .x4-btn-default-toolbar-small-focus .x4-frame-br,.x4-nbr .x4-btn-default-toolbar-small-focus .x4-frame-tc,.x4-nbr .x4-btn-default-toolbar-small-focus .x4-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-corners.gif')}.x4-nbr .x4-btn-default-toolbar-small-focus .x4-frame-ml,.x4-nbr .x4-btn-default-toolbar-small-focus .x4-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-sides.gif')}.x4-nbr .x4-btn-default-toolbar-small-focus .x4-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif')}.x4-nbr .x4-btn-default-toolbar-small-menu-active .x4-frame-tl,.x4-nbr .x4-btn-default-toolbar-small-menu-active .x4-frame-bl,.x4-nbr .x4-btn-default-toolbar-small-menu-active .x4-frame-tr,.x4-nbr .x4-btn-default-toolbar-small-menu-active .x4-frame-br,.x4-nbr .x4-btn-default-toolbar-small-menu-active .x4-frame-tc,.x4-nbr .x4-btn-default-toolbar-small-menu-active .x4-frame-bc,.x4-nbr .x4-btn-default-toolbar-small-pressed .x4-frame-tl,.x4-nbr .x4-btn-default-toolbar-small-pressed .x4-frame-bl,.x4-nbr .x4-btn-default-toolbar-small-pressed .x4-frame-tr,.x4-nbr .x4-btn-default-toolbar-small-pressed .x4-frame-br,.x4-nbr .x4-btn-default-toolbar-small-pressed .x4-frame-tc,.x4-nbr .x4-btn-default-toolbar-small-pressed .x4-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-corners.gif')}.x4-nbr .x4-btn-default-toolbar-small-menu-active .x4-frame-ml,.x4-nbr .x4-btn-default-toolbar-small-menu-active .x4-frame-mr,.x4-nbr .x4-btn-default-toolbar-small-pressed .x4-frame-ml,.x4-nbr .x4-btn-default-toolbar-small-pressed .x4-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-sides.gif')}.x4-nbr .x4-btn-default-toolbar-small-menu-active .x4-frame-mc,.x4-nbr .x4-btn-default-toolbar-small-pressed .x4-frame-mc{background-color:#bccfe5;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif')}.x4-nbr .x4-btn-default-toolbar-small-disabled .x4-frame-tl,.x4-nbr .x4-btn-default-toolbar-small-disabled .x4-frame-bl,.x4-nbr .x4-btn-default-toolbar-small-disabled .x4-frame-tr,.x4-nbr .x4-btn-default-toolbar-small-disabled .x4-frame-br,.x4-nbr .x4-btn-default-toolbar-small-disabled .x4-frame-tc,.x4-nbr .x4-btn-default-toolbar-small-disabled .x4-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-disabled-corners.gif')}.x4-nbr .x4-btn-default-toolbar-small-disabled .x4-frame-ml,.x4-nbr .x4-btn-default-toolbar-small-disabled .x4-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-disabled-sides.gif')}.x4-nbr .x4-btn-default-toolbar-small-disabled .x4-frame-mc{background-color:transparent}.x4-nlg .x4-btn-default-toolbar-small-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif')}.x4-nlg .x4-btn-default-toolbar-small-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif')}.x4-nlg .x4-btn-default-toolbar-small-menu-active,.x4-nlg .x4-btn-default-toolbar-small-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif')}.x4-btn-default-toolbar-medium{border-color:transparent}.x4-btn-default-toolbar-medium{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x4-nlg .x4-btn-default-toolbar-medium-mc{background-color:transparent}.x4-nbr .x4-btn-default-toolbar-medium{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x4-nbr .x4-btn-default-toolbar-medium-tl,.x4-nbr .x4-btn-default-toolbar-medium-bl,.x4-nbr .x4-btn-default-toolbar-medium-tr,.x4-nbr .x4-btn-default-toolbar-medium-br,.x4-nbr .x4-btn-default-toolbar-medium-tc,.x4-nbr .x4-btn-default-toolbar-medium-bc,.x4-nbr .x4-btn-default-toolbar-medium-ml,.x4-nbr .x4-btn-default-toolbar-medium-mr{zoom:1}.x4-nbr .x4-btn-default-toolbar-medium-ml,.x4-nbr .x4-btn-default-toolbar-medium-mr{zoom:1}.x4-nbr .x4-btn-default-toolbar-medium-mc{padding:1px 1px 1px 1px}.x4-strict .x4-ie7 .x4-btn-default-toolbar-medium-tl,.x4-strict .x4-ie7 .x4-btn-default-toolbar-medium-bl{position:relative;right:0}.x4-btn-default-toolbar-medium .x4-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x4-btn-default-toolbar-medium-icon button,.x4-btn-default-toolbar-medium-icon a,.x4-btn-default-toolbar-medium-icon .x4-btn-inner,.x4-btn-default-toolbar-medium-noicon button,.x4-btn-default-toolbar-medium-noicon a,.x4-btn-default-toolbar-medium-noicon .x4-btn-inner{height:24px;line-height:24px}.x4-btn-default-toolbar-medium-icon button,.x4-btn-default-toolbar-medium-icon a{padding:0}.x4-btn-default-toolbar-medium-icon .x4-btn-inner{width:24px;padding:0}.x4-btn-default-toolbar-medium-icon .x4-btn-icon{width:24px;height:24px;top:0;left:0;bottom:0;right:0}.x4-btn-default-toolbar-medium-icon-text-left button,.x4-btn-default-toolbar-medium-icon-text-left a{height:24px}.x4-btn-default-toolbar-medium-icon-text-left .x4-btn-inner{height:24px;line-height:24px;padding-left:28px}.x4-btn-default-toolbar-medium-icon-text-left .x4-btn-icon{width:24px;height:auto;top:0;left:0;bottom:0;right:auto}.x4-ie6 .x4-btn-default-toolbar-medium-icon-text-left .x4-btn-icon,.x4-quirks .x4-btn-default-toolbar-medium-icon-text-left .x4-btn-icon{height:24px}.x4-btn-default-toolbar-medium-icon-text-right button,.x4-btn-default-toolbar-medium-icon-text-right a{height:24px}.x4-btn-default-toolbar-medium-icon-text-right .x4-btn-inner{height:24px;line-height:24px;padding-right:28px!important}.x4-btn-default-toolbar-medium-icon-text-right .x4-btn-icon{width:24px;height:auto;top:0;left:auto;bottom:0;right:0}.x4-ie6 .x4-btn-default-toolbar-medium-icon-text-right .x4-btn-icon,.x4-quirks .x4-btn-default-toolbar-medium-icon-text-right .x4-btn-icon{height:24px}.x4-btn-default-toolbar-medium-icon-text-top .x4-btn-inner{padding-top:28px}.x4-btn-default-toolbar-medium-icon-text-top .x4-btn-icon{width:auto;height:24px;top:0;left:0;bottom:auto;right:0}.x4-ie6 .x4-btn-default-toolbar-medium-icon-text-top .x4-btn-icon,.x4-quirks .x4-ie .x4-btn-default-toolbar-medium-icon-text-top .x4-btn-icon{width:24px}.x4-btn-default-toolbar-medium-icon-text-bottom .x4-btn-inner{padding-bottom:28px}.x4-btn-default-toolbar-medium-icon-text-bottom .x4-btn-icon{width:auto;height:24px;top:auto;left:0;bottom:0;right:0}.x4-ie6 .x4-btn-default-toolbar-medium-icon-text-bottom .x4-btn-icon,.x4-quirks .x4-ie .x4-btn-default-toolbar-medium-icon-text-bottom .x4-btn-icon{width:24px}.x4-btn-default-toolbar-medium-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x4-btn-default-toolbar-medium-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x4-btn-default-toolbar-medium-menu-active,.x4-btn-default-toolbar-medium-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-ms-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x4-btn-default-toolbar-medium-disabled{background-image:none;background-color:transparent}.x4-btn-default-toolbar-medium-disabled .x4-btn-inner{color:#333!important}.x4-ie .x4-btn-default-toolbar-medium-disabled .x4-btn-inner{color:#595959!important}.x4-ie6 .x4-btn-default-toolbar-medium-disabled .x4-btn-inner{color:#8c8c8c!important}.x4-nbr .x4-btn-default-toolbar-medium-over .x4-frame-tl,.x4-nbr .x4-btn-default-toolbar-medium-over .x4-frame-bl,.x4-nbr .x4-btn-default-toolbar-medium-over .x4-frame-tr,.x4-nbr .x4-btn-default-toolbar-medium-over .x4-frame-br,.x4-nbr .x4-btn-default-toolbar-medium-over .x4-frame-tc,.x4-nbr .x4-btn-default-toolbar-medium-over .x4-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-corners.gif')}.x4-nbr .x4-btn-default-toolbar-medium-over .x4-frame-ml,.x4-nbr .x4-btn-default-toolbar-medium-over .x4-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-sides.gif')}.x4-nbr .x4-btn-default-toolbar-medium-over .x4-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif')}.x4-nbr .x4-btn-default-toolbar-medium-focus .x4-frame-tl,.x4-nbr .x4-btn-default-toolbar-medium-focus .x4-frame-bl,.x4-nbr .x4-btn-default-toolbar-medium-focus .x4-frame-tr,.x4-nbr .x4-btn-default-toolbar-medium-focus .x4-frame-br,.x4-nbr .x4-btn-default-toolbar-medium-focus .x4-frame-tc,.x4-nbr .x4-btn-default-toolbar-medium-focus .x4-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-corners.gif')}.x4-nbr .x4-btn-default-toolbar-medium-focus .x4-frame-ml,.x4-nbr .x4-btn-default-toolbar-medium-focus .x4-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-sides.gif')}.x4-nbr .x4-btn-default-toolbar-medium-focus .x4-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif')}.x4-nbr .x4-btn-default-toolbar-medium-menu-active .x4-frame-tl,.x4-nbr .x4-btn-default-toolbar-medium-menu-active .x4-frame-bl,.x4-nbr .x4-btn-default-toolbar-medium-menu-active .x4-frame-tr,.x4-nbr .x4-btn-default-toolbar-medium-menu-active .x4-frame-br,.x4-nbr .x4-btn-default-toolbar-medium-menu-active .x4-frame-tc,.x4-nbr .x4-btn-default-toolbar-medium-menu-active .x4-frame-bc,.x4-nbr .x4-btn-default-toolbar-medium-pressed .x4-frame-tl,.x4-nbr .x4-btn-default-toolbar-medium-pressed .x4-frame-bl,.x4-nbr .x4-btn-default-toolbar-medium-pressed .x4-frame-tr,.x4-nbr .x4-btn-default-toolbar-medium-pressed .x4-frame-br,.x4-nbr .x4-btn-default-toolbar-medium-pressed .x4-frame-tc,.x4-nbr .x4-btn-default-toolbar-medium-pressed .x4-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-corners.gif')}.x4-nbr .x4-btn-default-toolbar-medium-menu-active .x4-frame-ml,.x4-nbr .x4-btn-default-toolbar-medium-menu-active .x4-frame-mr,.x4-nbr .x4-btn-default-toolbar-medium-pressed .x4-frame-ml,.x4-nbr .x4-btn-default-toolbar-medium-pressed .x4-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-sides.gif')}.x4-nbr .x4-btn-default-toolbar-medium-menu-active .x4-frame-mc,.x4-nbr .x4-btn-default-toolbar-medium-pressed .x4-frame-mc{background-color:#bccfe5;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif')}.x4-nbr .x4-btn-default-toolbar-medium-disabled .x4-frame-tl,.x4-nbr .x4-btn-default-toolbar-medium-disabled .x4-frame-bl,.x4-nbr .x4-btn-default-toolbar-medium-disabled .x4-frame-tr,.x4-nbr .x4-btn-default-toolbar-medium-disabled .x4-frame-br,.x4-nbr .x4-btn-default-toolbar-medium-disabled .x4-frame-tc,.x4-nbr .x4-btn-default-toolbar-medium-disabled .x4-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-corners.gif')}.x4-nbr .x4-btn-default-toolbar-medium-disabled .x4-frame-ml,.x4-nbr .x4-btn-default-toolbar-medium-disabled .x4-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-sides.gif')}.x4-nbr .x4-btn-default-toolbar-medium-disabled .x4-frame-mc{background-color:transparent}.x4-nlg .x4-btn-default-toolbar-medium-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif')}.x4-nlg .x4-btn-default-toolbar-medium-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif')}.x4-nlg .x4-btn-default-toolbar-medium-menu-active,.x4-nlg .x4-btn-default-toolbar-medium-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif')}.x4-btn-default-toolbar-large{border-color:transparent}.x4-btn-default-toolbar-large{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x4-nlg .x4-btn-default-toolbar-large-mc{background-color:transparent}.x4-nbr .x4-btn-default-toolbar-large{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x4-nbr .x4-btn-default-toolbar-large-tl,.x4-nbr .x4-btn-default-toolbar-large-bl,.x4-nbr .x4-btn-default-toolbar-large-tr,.x4-nbr .x4-btn-default-toolbar-large-br,.x4-nbr .x4-btn-default-toolbar-large-tc,.x4-nbr .x4-btn-default-toolbar-large-bc,.x4-nbr .x4-btn-default-toolbar-large-ml,.x4-nbr .x4-btn-default-toolbar-large-mr{zoom:1}.x4-nbr .x4-btn-default-toolbar-large-ml,.x4-nbr .x4-btn-default-toolbar-large-mr{zoom:1}.x4-nbr .x4-btn-default-toolbar-large-mc{padding:1px 1px 1px 1px}.x4-strict .x4-ie7 .x4-btn-default-toolbar-large-tl,.x4-strict .x4-ie7 .x4-btn-default-toolbar-large-bl{position:relative;right:0}.x4-btn-default-toolbar-large .x4-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x4-btn-default-toolbar-large-icon button,.x4-btn-default-toolbar-large-icon a,.x4-btn-default-toolbar-large-icon .x4-btn-inner,.x4-btn-default-toolbar-large-noicon button,.x4-btn-default-toolbar-large-noicon a,.x4-btn-default-toolbar-large-noicon .x4-btn-inner{height:32px;line-height:32px}.x4-btn-default-toolbar-large-icon button,.x4-btn-default-toolbar-large-icon a{padding:0}.x4-btn-default-toolbar-large-icon .x4-btn-inner{width:32px;padding:0}.x4-btn-default-toolbar-large-icon .x4-btn-icon{width:32px;height:32px;top:0;left:0;bottom:0;right:0}.x4-btn-default-toolbar-large-icon-text-left button,.x4-btn-default-toolbar-large-icon-text-left a{height:32px}.x4-btn-default-toolbar-large-icon-text-left .x4-btn-inner{height:32px;line-height:32px;padding-left:36px}.x4-btn-default-toolbar-large-icon-text-left .x4-btn-icon{width:32px;height:auto;top:0;left:0;bottom:0;right:auto}.x4-ie6 .x4-btn-default-toolbar-large-icon-text-left .x4-btn-icon,.x4-quirks .x4-btn-default-toolbar-large-icon-text-left .x4-btn-icon{height:32px}.x4-btn-default-toolbar-large-icon-text-right button,.x4-btn-default-toolbar-large-icon-text-right a{height:32px}.x4-btn-default-toolbar-large-icon-text-right .x4-btn-inner{height:32px;line-height:32px;padding-right:36px!important}.x4-btn-default-toolbar-large-icon-text-right .x4-btn-icon{width:32px;height:auto;top:0;left:auto;bottom:0;right:0}.x4-ie6 .x4-btn-default-toolbar-large-icon-text-right .x4-btn-icon,.x4-quirks .x4-btn-default-toolbar-large-icon-text-right .x4-btn-icon{height:32px}.x4-btn-default-toolbar-large-icon-text-top .x4-btn-inner{padding-top:36px}.x4-btn-default-toolbar-large-icon-text-top .x4-btn-icon{width:auto;height:32px;top:0;left:0;bottom:auto;right:0}.x4-ie6 .x4-btn-default-toolbar-large-icon-text-top .x4-btn-icon,.x4-quirks .x4-ie .x4-btn-default-toolbar-large-icon-text-top .x4-btn-icon{width:32px}.x4-btn-default-toolbar-large-icon-text-bottom .x4-btn-inner{padding-bottom:36px}.x4-btn-default-toolbar-large-icon-text-bottom .x4-btn-icon{width:auto;height:32px;top:auto;left:0;bottom:0;right:0}.x4-ie6 .x4-btn-default-toolbar-large-icon-text-bottom .x4-btn-icon,.x4-quirks .x4-ie .x4-btn-default-toolbar-large-icon-text-bottom .x4-btn-icon{width:32px}.x4-btn-default-toolbar-large-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x4-btn-default-toolbar-large-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x4-btn-default-toolbar-large-menu-active,.x4-btn-default-toolbar-large-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-ms-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x4-btn-default-toolbar-large-disabled{background-image:none;background-color:transparent}.x4-btn-default-toolbar-large-disabled .x4-btn-inner{color:#333!important}.x4-ie .x4-btn-default-toolbar-large-disabled .x4-btn-inner{color:#595959!important}.x4-ie6 .x4-btn-default-toolbar-large-disabled .x4-btn-inner{color:#8c8c8c!important}.x4-nbr .x4-btn-default-toolbar-large-over .x4-frame-tl,.x4-nbr .x4-btn-default-toolbar-large-over .x4-frame-bl,.x4-nbr .x4-btn-default-toolbar-large-over .x4-frame-tr,.x4-nbr .x4-btn-default-toolbar-large-over .x4-frame-br,.x4-nbr .x4-btn-default-toolbar-large-over .x4-frame-tc,.x4-nbr .x4-btn-default-toolbar-large-over .x4-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-corners.gif')}.x4-nbr .x4-btn-default-toolbar-large-over .x4-frame-ml,.x4-nbr .x4-btn-default-toolbar-large-over .x4-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-sides.gif')}.x4-nbr .x4-btn-default-toolbar-large-over .x4-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif')}.x4-nbr .x4-btn-default-toolbar-large-focus .x4-frame-tl,.x4-nbr .x4-btn-default-toolbar-large-focus .x4-frame-bl,.x4-nbr .x4-btn-default-toolbar-large-focus .x4-frame-tr,.x4-nbr .x4-btn-default-toolbar-large-focus .x4-frame-br,.x4-nbr .x4-btn-default-toolbar-large-focus .x4-frame-tc,.x4-nbr .x4-btn-default-toolbar-large-focus .x4-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-corners.gif')}.x4-nbr .x4-btn-default-toolbar-large-focus .x4-frame-ml,.x4-nbr .x4-btn-default-toolbar-large-focus .x4-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-sides.gif')}.x4-nbr .x4-btn-default-toolbar-large-focus .x4-frame-mc{background-color:#dbeeff;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif')}.x4-nbr .x4-btn-default-toolbar-large-menu-active .x4-frame-tl,.x4-nbr .x4-btn-default-toolbar-large-menu-active .x4-frame-bl,.x4-nbr .x4-btn-default-toolbar-large-menu-active .x4-frame-tr,.x4-nbr .x4-btn-default-toolbar-large-menu-active .x4-frame-br,.x4-nbr .x4-btn-default-toolbar-large-menu-active .x4-frame-tc,.x4-nbr .x4-btn-default-toolbar-large-menu-active .x4-frame-bc,.x4-nbr .x4-btn-default-toolbar-large-pressed .x4-frame-tl,.x4-nbr .x4-btn-default-toolbar-large-pressed .x4-frame-bl,.x4-nbr .x4-btn-default-toolbar-large-pressed .x4-frame-tr,.x4-nbr .x4-btn-default-toolbar-large-pressed .x4-frame-br,.x4-nbr .x4-btn-default-toolbar-large-pressed .x4-frame-tc,.x4-nbr .x4-btn-default-toolbar-large-pressed .x4-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-corners.gif')}.x4-nbr .x4-btn-default-toolbar-large-menu-active .x4-frame-ml,.x4-nbr .x4-btn-default-toolbar-large-menu-active .x4-frame-mr,.x4-nbr .x4-btn-default-toolbar-large-pressed .x4-frame-ml,.x4-nbr .x4-btn-default-toolbar-large-pressed .x4-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-sides.gif')}.x4-nbr .x4-btn-default-toolbar-large-menu-active .x4-frame-mc,.x4-nbr .x4-btn-default-toolbar-large-pressed .x4-frame-mc{background-color:#bccfe5;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif')}.x4-nbr .x4-btn-default-toolbar-large-disabled .x4-frame-tl,.x4-nbr .x4-btn-default-toolbar-large-disabled .x4-frame-bl,.x4-nbr .x4-btn-default-toolbar-large-disabled .x4-frame-tr,.x4-nbr .x4-btn-default-toolbar-large-disabled .x4-frame-br,.x4-nbr .x4-btn-default-toolbar-large-disabled .x4-frame-tc,.x4-nbr .x4-btn-default-toolbar-large-disabled .x4-frame-bc{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-disabled-corners.gif')}.x4-nbr .x4-btn-default-toolbar-large-disabled .x4-frame-ml,.x4-nbr .x4-btn-default-toolbar-large-disabled .x4-frame-mr{background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-disabled-sides.gif')}.x4-nbr .x4-btn-default-toolbar-large-disabled .x4-frame-mc{background-color:transparent}.x4-nlg .x4-btn-default-toolbar-large-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif')}.x4-nlg .x4-btn-default-toolbar-large-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif')}.x4-nlg .x4-btn-default-toolbar-large-menu-active,.x4-nlg .x4-btn-default-toolbar-large-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif')}.x4-btn-default-toolbar-small-disabled,.x4-btn-default-toolbar-medium-disabled,.x4-btn-default-toolbar-large-disabled{border-color:transparent;background-image:none;background:transparent}.x4-btn-group{position:relative;overflow:hidden}.x4-btn-group-body{position:relative;zoom:1;padding:0 1px}.x4-btn-group-body .x4-table-layout-cell{vertical-align:top}.x4-btn-group-header-text{white-space:nowrap}.x4-btn-group-default-framed{-moz-border-radius:2px;-webkit-border-radius:2px;-o-border-radius:2px;-ms-border-radius:2px;-khtml-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#d0def0}.x4-nlg .x4-btn-group-default-framed-mc{background-color:#d0def0}.x4-nbr .x4-btn-group-default-framed{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000202px 1000202px}.x4-nbr .x4-btn-group-default-framed-tl,.x4-nbr .x4-btn-group-default-framed-bl,.x4-nbr .x4-btn-group-default-framed-tr,.x4-nbr .x4-btn-group-default-framed-br,.x4-nbr .x4-btn-group-default-framed-tc,.x4-nbr .x4-btn-group-default-framed-bc,.x4-nbr .x4-btn-group-default-framed-ml,.x4-nbr .x4-btn-group-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn-group/btn-group-default-framed-corners.gif')}.x4-nbr .x4-btn-group-default-framed-ml,.x4-nbr .x4-btn-group-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/default/btn-group/btn-group-default-framed-sides.gif');background-position:0 0;background-repeat:repeat-y}.x4-nbr .x4-btn-group-default-framed-mc{padding:0}.x4-strict .x4-ie7 .x4-btn-group-default-framed-tl,.x4-strict .x4-ie7 .x4-btn-group-default-framed-bl{position:relative;right:0}.x4-btn-group-default-framed{border-color:#b7c8d7;-moz-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-webkit-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-o-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset}.x4-btn-group-header-default-framed{margin:2px 2px 0 2px}.x4-btn-group-header-body-default-framed{padding:1px 0;background:#c2d8f0;-moz-border-radius-topleft:2px;-webkit-border-top-left-radius:2px;-o-border-top-left-radius:2px;-ms-border-top-left-radius:2px;-khtml-border-top-left-radius:2px;border-top-left-radius:2px;-moz-border-radius-topright:2px;-webkit-border-top-right-radius:2px;-o-border-top-right-radius:2px;-ms-border-top-right-radius:2px;-khtml-border-top-right-radius:2px;border-top-right-radius:2px}.x4-btn-group-header-text-default-framed{font:normal 11px tahoma,arial,verdana,sans-serif;color:#3e6aaa}.x4-datepicker{border:1px solid #1b376c;background-color:white;position:relative}.x4-datepicker a{-moz-outline:0 none;outline:0 none;color:#15428b;text-decoration:none;border-width:0}.x4-datepicker-inner,.x4-datepicker-inner td,.x4-datepicker-inner th{border-collapse:separate}.x4-datepicker-header{position:relative;height:26px;background-image:none;background-color:#23427c;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#264888),color-stop(100%,#1f3a6c));background-image:-webkit-linear-gradient(top,#264888,#1f3a6c);background-image:-moz-linear-gradient(top,#264888,#1f3a6c);background-image:-o-linear-gradient(top,#264888,#1f3a6c);background-image:-ms-linear-gradient(top,#264888,#1f3a6c);background-image:linear-gradient(top,#264888,#1f3a6c)}.x4-datepicker-prev,.x4-datepicker-next{position:absolute;top:5px;width:18px}.x4-datepicker-prev a,.x4-datepicker-next a{display:block;width:16px;height:16px;background-position:top;background-repeat:no-repeat;cursor:pointer;text-decoration:none!important;filter:alpha(opacity=70);opacity:.7}.x4-datepicker-prev a:hover,.x4-datepicker-next a:hover{filter:alpha(opacity=100);opacity:1}.x4-datepicker-next{right:5px}.x4-datepicker-next a{background-image:url('../../resources/themes/images/default/shared/right-btn.gif')}.x4-datepicker-prev{left:5px}.x4-datepicker-prev a{background-image:url('../../resources/themes/images/default/shared/left-btn.gif')}.x4-item-disabled .x4-datepicker-prev a:hover,.x4-item-disabled .x4-datepicker-next a:hover{filter:alpha(opacity=60);opacity:.6}.x4-datepicker-month{padding-top:3px}.x4-datepicker-month .x4-btn,.x4-datepicker-month button,.x4-datepicker-month .x4-btn-tc,.x4-datepicker-month .x4-btn-tl,.x4-datepicker-month .x4-btn-tr,.x4-datepicker-month .x4-btn-mc,.x4-datepicker-month .x4-btn-ml,.x4-datepicker-month .x4-btn-mr,.x4-datepicker-month .x4-btn-bc,.x4-datepicker-month .x4-btn-bl,.x4-datepicker-month .x4-btn-br{background:transparent!important;border-width:0!important}.x4-datepicker-month span{color:#fff!important}.x4-datepicker-month .x4-btn-split-right{background-image:url('../../resources/themes/images/default/button/s-arrow-light.gif');padding-right:12px}.x4-datepicker-next{text-align:right}.x4-datepicker-month{text-align:center}.x4-datepicker-month button{color:white!important}table.x4-datepicker-inner{width:100%;table-layout:fixed}table.x4-datepicker-inner th{width:25px;height:19px;padding:0;color:#233d6d;font:normal 10px tahoma,arial,verdana,sans-serif;text-align:right;border-bottom:1px solid #b2d1f5;border-collapse:separate;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#edf4fd),color-stop(100%,#cde1f9));background-image:-webkit-linear-gradient(top,#edf4fd,#cde1f9);background-image:-moz-linear-gradient(top,#edf4fd,#cde1f9);background-image:-o-linear-gradient(top,#edf4fd,#cde1f9);background-image:-ms-linear-gradient(top,#edf4fd,#cde1f9);background-image:linear-gradient(top,#edf4fd,#cde1f9);cursor:default}table.x4-datepicker-inner th span{display:block;padding-right:7px}table.x4-datepicker-inner tr{height:20px}table.x4-datepicker-inner td{border:1px solid;height:17px;border-color:white;text-align:right;padding:0}table.x4-datepicker-inner a{padding-right:4px;display:block;zoom:1;font:normal 11px tahoma,arial,verdana,sans-serif;color:black;text-decoration:none;text-align:right}table.x4-datepicker-inner .x4-datepicker-active{cursor:pointer;color:black}table.x4-datepicker-inner .x4-datepicker-selected a{background:repeat-x left top;background-color:#dae5f3;border:1px solid #8db2e3}table.x4-datepicker-inner .x4-datepicker-selected span{font-weight:bold}table.x4-datepicker-inner .x4-datepicker-today a{border:1px solid;border-color:darkred}table.x4-datepicker-inner .x4-datepicker-prevday a,table.x4-datepicker-inner .x4-datepicker-nextday a{text-decoration:none!important;color:#aaa}table.x4-datepicker-inner a:hover,table.x4-datepicker-inner .x4-datepicker-disabled a:hover{text-decoration:none!important;color:#000;background-color:#ddecfe}table.x4-datepicker-inner .x4-datepicker-disabled a{cursor:default;background-color:#eee;color:#bbb}.x4-datepicker-footer,.x4-monthpicker-buttons{position:relative;border-top:1px solid #b2d1f5;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dee8f5),color-stop(49%,#d1dff0),color-stop(51%,#c7d8ed),color-stop(100%,#cbdaee));background-image:-webkit-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-moz-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-o-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-ms-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);text-align:center}.x4-datepicker-footer .x4-btn,.x4-monthpicker-buttons .x4-btn{position:relative;margin:4px}.x4-item-disabled .x4-datepicker-inner a:hover{background:0}.x4-datepicker .x4-monthpicker{position:absolute;left:0;top:0}.x4-monthpicker{border:1px solid #1b376c;background-color:white}.x4-monthpicker-months,.x4-monthpicker-years{float:left;height:167px;width:88px}.x4-monthpicker-item{float:left;margin:4px 0 5px 0;font:normal 11px tahoma,arial,verdana,sans-serif;text-align:center;vertical-align:middle;height:18px;width:43px;border:0 none}.x4-monthpicker-item a{display:block;margin:0 5px;text-decoration:none;color:#15428b;border:1px solid white;line-height:17px}.x4-monthpicker-item a:hover{background-color:#ddecfe}.x4-monthpicker-item a.x4-monthpicker-selected{background-color:#dfecfb;border:1px solid #8db2e3}.x4-monthpicker-months{border-right:1px solid #1b376c;width:87px}.x4-monthpicker-years .x4-monthpicker-item{width:44px}.x4-monthpicker-yearnav{height:28px}.x4-monthpicker-yearnav button{background-image:url('../../resources/themes/images/default/tools/tool-sprites.gif');height:15px;width:15px;padding:0;margin:6px 12px 5px 15px;border:0;outline:0 none}.x4-monthpicker-yearnav button::-moz-focus-inner{border:0;padding:0}.x4-monthpicker-yearnav-next{background-position:0 -120px}.x4-monthpicker-yearnav-next-over{cursor:pointer;cursor:hand;background-position:-15px -120px}.x4-monthpicker-yearnav-prev{background-position:0 -105px}.x4-monthpicker-yearnav-prev-over{cursor:pointer;cursor:hand;background-position:-15px -105px}.x4-monthpicker-small .x4-monthpicker-item{margin:2px 0 2px 0}.x4-monthpicker-small .x4-monthpicker-yearnav{height:23px}.x4-monthpicker-small .x4-monthpicker-months,.x4-monthpicker-small .x4-monthpicker-years{height:136px}.x4-quirks .x4-ie7 .x4-monthpicker-buttons .x4-btn,.x4-quirks .x4-ie8 .x4-monthpicker-buttons .x4-btn{margin-top:2px}.x4-quirks .x4-monthpicker-small .x4-monthpicker-yearnav button{margin-top:3px;margin-bottom:3px}.x4-ie6 .x4-monthpicker-small .x4-monthpicker-yearnav button{margin-top:3px;margin-bottom:3px}.x4-nlg .x4-datepicker-header{background-image:url('../../resources/themes/images/default/datepicker/datepicker-header-bg.gif');background-repeat:repeat-x;background-position:top left}.x4-nlg .x4-datepicker-footer,.x4-nlg .x4-monthpicker-buttons{background-image:url('../../resources/themes/images/default/datepicker/datepicker-footer-bg.gif');background-repeat:repeat-x;background-position:top left}.x4-color-picker{width:144px;height:90px;cursor:pointer}.x4-color-picker a{border:1px solid #fff;float:left;padding:2px;text-decoration:none;-moz-outline:0 none;outline:0 none;cursor:pointer}.x4-color-picker a:hover,.x4-color-picker a.x4-color-picker-selected{border-color:#8bb8f3;background-color:#deecfd}.x4-color-picker em{display:block;border:1px solid #aca899}.x4-color-picker em span{cursor:pointer;display:block;height:10px;width:10px;line-height:10px}.x4-menu-body{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;background:#f0f0f0!important;padding:2px}.x4-menu-item .x4-form-text{user-select:text;-webkit-user-select:text;-o-user-select:text;-ie-user-select:text;-moz-user-select:text;-ie-user-select:text}.x4-menu-icon-separator{position:absolute;top:0;left:27px;z-index:0;border-left:solid 1px #e0e0e0;background-color:white;width:2px;overflow:hidden}.x4-menu-plain .x4-menu-icon-separator{display:none}.x4-menu-focus{display:block;position:absolute;top:-10px;left:-10px;width:0;height:0}.x4-menu-item{white-space:nowrap;overflow:hidden;z-index:1}.x4-menu-item-cmp{margin-bottom:1px}.x4-menu-item-link{display:block;margin:1px;padding:6px 2px 3px 32px;text-decoration:none!important;line-height:16px;cursor:default}.x4-opera .x4-menu-item-link{position:relative}.x4-menu-item-icon{width:16px;height:16px;position:absolute;top:5px;left:4px;background:no-repeat center center}.x4-menu-item-icon-right{width:16px;height:16px;position:absolute;top:6px;right:4px;background:no-repeat center center}.x4-menu-item-text{font-size:11px;color:#222}.x4-menu-item-checked .x4-menu-item-icon{background-image:url('../../resources/themes/images/default/menu/checked.gif')}.x4-menu-item-checked .x4-menu-group-icon{background-image:url('../../resources/themes/images/default/menu/group-checked.gif')}.x4-menu-item-unchecked .x4-menu-item-icon{background-image:url('../../resources/themes/images/default/menu/unchecked.gif')}.x4-menu-item-unchecked .x4-menu-group-icon{background-image:none}.x4-menu-item-separator{height:2px;border-top:solid 1px #e0e0e0;background-color:white;margin:2px 0;overflow:hidden}.x4-menu-item-arrow{position:absolute;width:12px;height:9px;top:9px;right:0;background:no-repeat center center;background-image:url('../../resources/themes/images/default/menu/menu-parent.gif')}.x4-menu-item-indent{margin-left:31px}.x4-menu-item-active{cursor:pointer}.x4-menu-item-active .x4-menu-item-link{background-image:none;background-color:#d9e8fb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e7f0fc),color-stop(100%,#c7ddf9));background-image:-webkit-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-moz-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-o-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-ms-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:linear-gradient(top,#e7f0fc,#c7ddf9);margin:0;border:1px solid #a9cbf5;cursor:pointer;-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px}.x4-menu-item-disabled{filter:alpha(opacity=50);opacity:.5}.x4-ie .x4-menu-item-disabled .x4-menu-item-icon{filter:alpha(opacity=50);opacity:.5}.x4-ie .x4-menu-item-disabled .x4-menu-item-text{background-color:transparent}.x4-strict .x4-ie7m .x4-ie .x4-menu-icon-separator{width:1px}.x4-strict .x4-ie7m .x4-ie .x4-menu-item-separator{height:1px}.x4-ie6 .x4-menu-item-link,.x4-ie7 .x4-menu-item-link,.x4-quirks .x4-ie8 .x4-menu-item-link{padding-bottom:2px}.x4-nlg .x4-menu-item-active .x4-menu-item-link{background:#d9e8fb repeat-x left top;background-image:url('../../resources/themes/images/default/menu/menu-item-active-bg.gif')}.x4-menu-date-item{border-color:#99bbe8}.x4-panel .x4-grid-body{background:white;border-color:#99bce8;border-style:solid;border-width:1px;border-top-color:#c5c5c5}.x4-panel .x4-grid-header-ct-hidden{visibility:hidden}.x4-grid-empty{padding:10px;color:gray;font:normal 11px tahoma,arial,helvetica,sans-serif}.x4-grid-header-hidden .x4-grid-body{border-top-color:#99bce8!important}.x4-grid-view{overflow:hidden;position:relative}.x4-grid-table{table-layout:fixed;border-collapse:separate}.x4-autowidth-table table.x4-grid-table{table-layout:auto;width:auto!important}.x4-grid-row .x4-grid-table{border-collapse:collapse}.x4-grid-locked .x4-grid-inner-locked{border-width:0 1px 0 0!important;border-style:solid}.x4-grid-header-ct{cursor:default;zoom:1;padding:0;border:1px solid #99bce8;border-bottom-color:#c5c5c5;background-image:none;background-color:#c5c5c5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f9f9f9),color-stop(100%,#e3e4e6));background-image:-webkit-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-moz-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-o-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-ms-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:linear-gradient(top,#f9f9f9,#e3e4e6)}.x4-accordion-item .x4-grid-header-ct{border-width:0 0 1px 0!important}.x4-column-header{padding:0;position:absolute;overflow:hidden;border-right:1px solid #c5c5c5;border-left:0 none;border-top:0 none;border-bottom:0 none;text-shadow:0 1px 0 rgba(255,255,255,0.3);color:null;font:normal 11px tahoma,arial,verdana,sans-serif;background-image:none;background-color:#c5c5c5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f9f9f9),color-stop(100%,#e3e4e6));background-image:-webkit-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-moz-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-o-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-ms-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:linear-gradient(top,#f9f9f9,#e3e4e6)}.x4-group-header{padding:0;border-left-width:0}.x4-group-sub-header{background:transparent;border-top:1px solid #c5c5c5;border-left-width:0}.x4-column-header-inner{zoom:1;position:relative;white-space:nowrap;line-height:15px;padding:3px 6px 4px}.x4-column-header-inner .x4-column-header-text{white-space:nowrap}.x4-column-header-over,.x4-column-header-sort-ASC,.x4-column-header-sort-DESC{border-left-color:#aaccf6;border-right-color:#aaccf6;background-image:none;background-color:#aaccf6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ebf3fd),color-stop(39%,#ebf3fd),color-stop(40%,#d9e8fb),color-stop(100%,#d9e8fb));background-image:-webkit-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:-moz-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:-o-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:-ms-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb)}.x4-nlg .x4-grid-header-ct,.x4-nlg .x4-column-header{background:repeat-x 0 top;background-image:url('../../resources/themes/images/default/grid/column-header-bg.gif')}.x4-nlg .x4-column-header-over,.x4-nlg .x4-column-header-sort-ASC,.x4-nlg .x4-column-header-sort-DESC{background:#ebf3fd repeat-x 0 top;background-image:url('../../resources/themes/images/default/grid/column-header-over-bg.gif')}.x4-column-header-trigger{display:none;height:100%;width:14px;background:no-repeat left center;background-color:#c3daf9;background-image:url('../../resources/themes/images/default/grid/grid3-hd-btn.gif');position:absolute;right:0;top:0;z-index:2;cursor:pointer}.x4-column-header-over .x4-column-header-trigger,.x4-column-header-open .x4-column-header-trigger{display:block}.x4-column-header-align-right{text-align:right}.x4-column-header-align-right .x4-column-header-text{padding-right:.5ex;margin-right:6px}.x4-column-header-align-center{text-align:center}.x4-column-header-align-left{text-align:left}.x4-column-header-sort-ASC .x4-column-header-text{padding-right:16px;background:no-repeat right 6px;background-image:url('../../resources/themes/images/default/grid/sort_asc.gif')}.x4-column-header-sort-DESC .x4-column-header-text{padding-right:16px;background:no-repeat right 6px;background-image:url('../../resources/themes/images/default/grid/sort_desc.gif')}.x4-grid-row{vertical-align:top}.x4-grid-row .x4-grid-cell{color:null;font:normal 11px/15px tahoma,arial,verdana,sans-serif;background-color:white;border-color:#ededed;border-style:solid;border-top-color:#fafafa;border-width:0}.x4-grid-with-row-lines .x4-grid-cell{border-width:1px 0}.x4-grid-rowwrap-div{border-width:1px 0;border-color:#ededed;border-style:solid;border-top-color:#fafafa;overflow:hidden}.x4-grid-row-alt .x4-grid-cell,.x4-grid-row-alt .x4-grid-rowwrap-div{background-color:#fafafa}.x4-grid-row-over .x4-grid-cell,.x4-grid-row-over .x4-grid-rowwrap-div{border-color:#ddd;background-color:#efefef}.x4-grid-row-focused .x4-grid-cell,.x4-grid-row-focused .x4-grid-rowwrap-div{border-color:#ddd;background-color:#efefef}.x4-grid-row-selected .x4-grid-cell,.x4-grid-row-selected .x4-grid-rowwrap-div{border-style:dotted;border-color:#a3bae9;background-color:#dfe8f6!important}.x4-grid-rowwrap-div .x4-grid-cell,.x4-grid-rowwrap-div .x4-grid-cell-inner{border-width:0;background:transparent}.x4-grid-row-body-hidden{display:none}.x4-grid-rowbody{font:normal 11px/13px tahoma,arial,verdana,sans-serif;padding:4px}.x4-grid-rowbody p{margin:5px 5px 10px 5px}.x4-grid-cell{overflow:hidden}.x4-grid-cell-inner{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding:2px 6px 3px;white-space:nowrap}.x4-grid-with-row-lines .x4-grid-cell-inner{line-height:13px;padding-bottom:4px}.x4-action-col-cell .x4-grid-cell-inner{line-height:0;padding:2px}.x4-action-col-cell .x4-item-disabled{filter:alpha(opacity=30);opacity:.3}.x4-grid-with-row-lines .x4-action-col-cell .x4-grid-cell-inner{padding-top:1px}.x4-grid-row .x4-grid-cell-special{padding:0;border-right:1px solid #d0d0d0;background-image:none;background-color:#f6f6f6;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#f6f6f6),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-moz-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-o-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-ms-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:linear-gradient(left,#f6f6f6,#e9e9e9)}.x4-grid-row .x4-grid-cell-row-checker{vertical-align:middle}.x4-ie6 .x4-grid-header-row,.x4-ie7 .x4-grid-header-row,.x4-quirks .x4-ie8 .x4-grid-header-row{position:absolute}.x4-grid-row-selected .x4-grid-cell-special{border-right:1px solid #aaccf6;background-image:none;background-color:#dfe8f6;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dfe8f6),color-stop(100%,#cbdaf0));background-image:-webkit-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-moz-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-o-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-ms-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:linear-gradient(left,#dfe8f6,#cbdaf0)}.x4-grid-dirty-cell{background-image:url('../../resources/themes/images/default/grid/dirty.gif');background-position:0 0;background-repeat:no-repeat}.x4-grid-cell-selected{background-color:#b8cfee!important}.x4-nlg .x4-grid-cell-special{background-repeat:repeat-y;background-position:top right}.x4-nlg .x4-grid-row .x4-grid-cell-special,.x4-nlg .x4-grid-row-over .x4-grid-cell-special{background-image:url('../../resources/themes/images/default/grid/cell-special-bg.gif')}.x4-nlg .x4-grid-row-focused .x4-grid-cell-special,.x4-nlg .x4-grid-row-selected .x4-grid-cell-special{background-image:url('../../resources/themes/images/default/grid/cell-special-selected-bg.gif')}.x4-grid-with-col-lines .x4-grid-cell{padding-right:0;border-right:1px solid #d0d0d0}.x4-property-grid .x4-grid-row .x4-grid-property-name .x4-grid-cell-inner,.x4-property-grid .x4-grid-row-over .x4-grid-property-name .x4-grid-cell-inner{padding-left:12px;background-image:url('../../resources/themes/images/default/grid/property-cell-bg.gif');background-repeat:no-repeat;background-position:-16px 2px}.x4-grid-with-row-lines.x4-property-grid .x4-grid-row .x4-grid-property-name .x4-grid-cell-inner,.x4-grid-with-row-lines.x4-property-grid .x4-grid-row-over .x4-grid-property-name .x4-grid-cell-inner{background-position:-16px 1px}.x4-quirks .x4-ie .x4-grid-row .x4-grid-property-name .x4-grid-cell-inner{background-position:-16px 2px}.x4-unselectable{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x4-grid-row-body-hidden{display:none}.x4-grid-group-collapsed{display:none}.x4-grid-view .x4-grid-td-expander{vertical-align:top}.x4-grid-td-expander{background:repeat-y right transparent}.x4-grid-view .x4-grid-td-expander .x4-grid-cell-inner{padding:0!important}.x4-grid-row-expander{background-image:url('../../resources/themes/images/default/grid/group-collapse.gif');background-color:transparent;width:9px;height:13px;margin-left:3px;background-repeat:no-repeat;background-position:0 -2px}.x4-grid-row-collapsed .x4-grid-row-expander{background-image:url('../../resources/themes/images/default/grid/group-expand.gif')}.x4-grid-resize-marker{position:absolute;z-index:5;top:0;width:1px;background-color:#0f0f0f}.col-move-top,.col-move-bottom{width:9px;height:9px;position:absolute;top:0;line-height:0;font-size:0;overflow:hidden;z-index:20000;background:no-repeat left top transparent}.col-move-top{background-image:url('../../resources/themes/images/default/grid/col-move-top.gif')}.col-move-bottom{background-image:url('../../resources/themes/images/default/grid/col-move-bottom.gif')}.x4-tbar-page-number{width:30px}.x4-grid-group,.x4-grid-group-body,.x4-grid-group-hd{zoom:1}.x4-grid-group-hd{padding-top:6px}.x4-grid-group-hd .x4-grid-cell-inner{padding:10px 4px 4px 4px;background:white;border-width:0 0 2px 0;border-style:solid;border-color:#99bbe8;cursor:pointer}.x4-grid-group-hd-collapsible .x4-grid-group-title{background:transparent no-repeat 0 -1px;background-image:url('../../resources/themes/images/default/grid/group-collapse.gif');padding:0 0 0 14px}.x4-grid-group-title{color:#3764a0;font:bold 11px tahoma,arial,verdana,sans-serif}.x4-grid-group-hd-collapsed .x4-grid-group-title{background-image:url('../../resources/themes/images/default/grid/group-expand.gif')}.x4-grid-group-collapsed .x4-grid-group-body{display:none}.x4-grid-group-collapsed .x4-grid-group-title{background-image:url('../../resources/themes/images/default/grid/group-expand.gif')}.x4-group-by-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x4-show-groups-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x4-column-header-checkbox .x4-column-header-inner{padding:0}.x4-grid-cell-special .x4-grid-cell-inner{padding-left:4px;padding-right:4px}.x4-grid-row-checker,.x4-column-header-checkbox .x4-column-header-text{height:14px;width:14px;line-height:0;background-image:url('../../resources/themes/images/default/grid/unchecked.gif');background-position:-1px -1px;background-repeat:no-repeat;background-color:transparent}.x4-column-header-checkbox .x4-column-header-text{display:block;margin:0 5px}.x4-quirks .x4-ie .x4-grid-row-checker,.x4-quirks .x4-ie .x4-column-header-checkbox .x4-column-header-text,.x4-ie7m .x4-grid-row-checker,.x4-ie7m .x4-column-header-checkbox .x4-column-header-text{line-height:14px}.x4-grid-hd-checker-on .x4-column-header-text{background-image:url('../../resources/themes/images/default/grid/checked.gif')}.x4-grid-cell-row-checker .x4-grid-cell-inner{padding-top:4px;padding-bottom:2px;line-height:14px}.x4-grid-with-row-lines .x4-grid-cell-row-checker .x4-grid-cell-inner{padding-top:3px}.x4-grid-row-checker{margin-left:1px;background-position:50% -2px}.x4-grid-row-selected .x4-grid-row-checker,.x4-grid-row-checked .x4-grid-row-checker{background-image:url('../../resources/themes/images/default/grid/checked.gif')}.x4-tbar-page-first{background-image:url('../../resources/themes/images/default/grid/page-first.gif')!important}.x4-tbar-loading{background-image:url('../../resources/themes/images/default/grid/refresh.gif')!important}.x4-tbar-page-last{background-image:url('../../resources/themes/images/default/grid/page-last.gif')!important}.x4-tbar-page-next{background-image:url('../../resources/themes/images/default/grid/page-next.gif')!important}.x4-tbar-page-prev{background-image:url('../../resources/themes/images/default/grid/page-prev.gif')!important}.x4-item-disabled .x4-tbar-loading{background-image:url('../../resources/themes/images/default/grid/refresh-disabled.gif')!important}.x4-item-disabled .x4-tbar-page-first{background-image:url('../../resources/themes/images/default/grid/page-first-disabled.gif')!important}.x4-item-disabled .x4-tbar-page-last{background-image:url('../../resources/themes/images/default/grid/page-last-disabled.gif')!important}.x4-item-disabled .x4-tbar-page-next{background-image:url('../../resources/themes/images/default/grid/page-next-disabled.gif')!important}.x4-item-disabled .x4-tbar-page-prev{background-image:url('../../resources/themes/images/default/grid/page-prev-disabled.gif')!important}.x4-hmenu-sort-asc .x4-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-asc.gif')}.x4-hmenu-sort-desc .x4-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-desc.gif')}.x4-hmenu-lock .x4-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-lock.gif')}.x4-hmenu-unlock .x4-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-unlock.gif')}.x4-group-by-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x4-cols-icon .x4-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/columns.gif')}.x4-show-groups-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x4-grid-drop-indicator{position:absolute;height:1px;line-height:0;background-color:#77bc71;overflow:visible}.x4-grid-drop-indicator .x4-grid-drop-indicator-left{position:absolute;top:-8px;left:-12px;background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-right.png');height:16px;width:16px}.x4-grid-drop-indicator .x4-grid-drop-indicator-right{position:absolute;top:-8px;right:-11px;background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-left.png');height:16px;width:16px}.x4-ie6 .x4-grid-drop-indicator-left{background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-right.gif')}.x4-ie6 .x4-grid-drop-indicator-right{background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-left.gif')}.x4-grid-editor .x4-form-text{padding:0 4px}.x4-grid-editor .x4-form-cb-wrap{padding-top:3px}.x4-grid-row-editor{position:absolute!important;z-index:1;zoom:1;overflow:visible!important}.x4-grid-row-editor .x4-form-text{padding:0 2px}.x4-grid-row-editor .x4-form-cb-wrap{padding-top:0}.x4-grid-row-editor .x4-form-checkbox{margin-left:-4px}.x4-grid-row-editor .x4-form-display-field{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding-top:0;padding-left:2px}.x4-grid-row-editor .x4-panel-body{background-color:#eaf1fb;border-top:1px solid #99bce8!important;border-bottom:1px solid #99bce8!important}.x4-grid-editor .x4-form-cb-wrap,.x4-grid-row-editor .x4-form-cb-wrap{text-align:center}.x4-grid-editor .x4-form-trigger,.x4-grid-row-editor .x4-form-trigger{height:19px}.x4-grid-editor .x4-form-trigger-wrap .x4-form-spinner-up,.x4-grid-editor .x4-form-trigger-wrap .x4-form-spinner-down,.x4-grid-row-editor .x4-form-trigger-wrap .x4-form-spinner-up,.x4-grid-row-editor .x4-form-trigger-wrap .x4-form-spinner-down{background-image:url('../../resources/themes/images/default/form/spinner-small.gif');height:10px!important}.x4-grid-editor .x4-form-text,.x4-grid-row-editor .x4-form-text{font:normal 11px/15px tahoma,arial,verdana,sans-serif;height:18px}.x4-border-box .x4-grid-editor .x4-form-trigger,.x4-border-box .x4-grid-row-editor .x4-form-trigger{height:20px}.x4-border-box .x4-grid-editor .x4-form-text,.x4-border-box .x4-grid-row-editor .x4-form-text{height:20px;padding-bottom:1px}.x4-ie .x4-grid-editor .x4-form-text{padding-left:5px}.x4-ie .x4-grid-row-editor .x4-form-text{padding-left:3px}.x4-ie8m .x4-grid-editor .x4-form-text,.x4-ie8m .x4-grid-row-editor .x4-form-text{padding-top:1px}.x4-strict .x4-ie6 .x4-grid-editor .x4-form-text,.x4-strict .x4-ie6 .x4-grid-row-editor .x4-form-text,.x4-strict .x4-ie7 .x4-grid-editor .x4-form-text,.x4-strict .x4-ie7 .x4-grid-row-editor .x4-form-text{height:17px}.x4-quirks .x4-ie9 .x4-grid-editor .x4-form-text,.x4-quirks .x4-ie9 .x4-grid-row-editor .x4-form-text{line-height:17px}.x4-opera .x4-grid-editor .x4-form-text{padding-left:5px}.x4-opera .x4-grid-row-editor .x4-form-text{padding-left:3px}.x4-grid-row-editor-buttons{background-color:#eaf1fb;position:absolute;bottom:-31px;padding:4px;height:32px}.x4-strict .x4-ie7m .x4-grid-row-editor-buttons{width:192px;height:24px}.x4-grid-row-editor-buttons-ml,.x4-grid-row-editor-buttons-mr,.x4-grid-row-editor-buttons-bl,.x4-grid-row-editor-buttons-br,.x4-grid-row-editor-buttons-bc{position:absolute;overflow:hidden}.x4-grid-row-editor-buttons-bl,.x4-grid-row-editor-buttons-br{width:4px;height:4px;bottom:0;background-image:url('../../resources/themes/images/default/panel/panel-default-framed-corners.gif')}.x4-grid-row-editor-buttons-bl{left:0;background-position:0 -16px}.x4-grid-row-editor-buttons-br{right:0;background-position:0 -20px}.x4-grid-row-editor-buttons-bc{position:absolute;left:4px;bottom:0;width:192px;height:1px;background-color:#99bce8}.x4-grid-row-editor-buttons-ml,.x4-grid-row-editor-buttons-mr{height:27px;width:1px;top:1px;background-color:#99bce8}.x4-grid-row-editor-buttons-ml{left:0}.x4-grid-row-editor-buttons-mr{background-position:0 -20px;right:0}.x4-grid-row-editor-errors ul{margin-left:5px}.x4-grid-row-editor-errors li{list-style:disc;margin-left:15px}.x4-webkit *:focus{outline:none!important}.x4-form-item{vertical-align:top;table-layout:fixed}.x4-autocontainer-form-item,.x4-anchor-form-item,.x4-vbox-form-item,.x4-checkboxgroup-form-item,.x4-table-form-item{margin-bottom:5px}.x4-form-layout-table{border-collapse:separate;border-spacing:0 2px}.x4-form-item-body{position:relative}.x4-form-form-item td{border-top:1px solid transparent}.x4-ie6 .x4-form-layout-table{border-collapse:collapse;border-spacing:0}.x4-ie6 .x4-form-form-item td{border-top-width:0}.x4-ie6 td.x4-form-item-pad{height:5px}.x4-editor .x4-form-item-body{padding-bottom:0}.x4-form-item-label{display:block;padding:3px 0 0;font-size:12px;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x4-form-item-label-top{display:block;zoom:1;padding:0 0 5px 0}.x4-form-item-label-right{text-align:right}.x4-form-invalid-under{padding:2px 2px 2px 18px;color:#c0272b;font:normal 11px tahoma,arial,verdana,sans-serif;line-height:16px;background:no-repeat 0 2px;background-image:url('../../resources/themes/images/default/form/exclamation.gif')}.x4-form-invalid-icon{width:18px;height:14px;background:no-repeat center center;background-image:url('../../resources/themes/images/default/form/exclamation.gif');overflow:hidden}.x4-form-invalid-icon ul{display:block;width:18px}.x4-form-invalid-icon ul li{display:none}.x4-lbl-top-err-icon{margin-bottom:4px}.x4-form-field,.x4-form-display-field{margin:0;font:normal 12px tahoma,arial,verdana,sans-serif;color:black}.x4-form-item-hidden{margin:0}.x4-form-text,textarea.x4-form-field{padding:1px 3px;background:repeat-x 0 0;border:1px solid;background-color:white;background-image:url('../../resources/themes/images/default/form/text-bg.gif');border-color:#b5b8c8}.x4-form-text{height:18px;line-height:15px;vertical-align:top}.x4-ie8m .x4-form-text{line-height:15px}.x4-border-box .x4-form-text{height:22px}textarea.x4-form-field{color:black;overflow:auto;height:auto;line-height:normal;background:repeat-x 0 0;background-color:white;background-image:url('../../resources/themes/images/default/form/text-bg.gif');resize:none}.x4-border-box textarea.x4-form-field{height:auto}.x4-safari.x4-mac textarea.x4-form-field{margin-bottom:-2px}.x4-form-focus,textarea.x4-form-focus{border-color:#7eadd9}.x4-form-invalid-field,textarea.x4-form-invalid-field{background-color:white;background-image:url('../../resources/themes/images/default/grid/invalid_line.gif');background-repeat:repeat-x;background-position:bottom;border-color:#c30}.x4-form-item{font:normal 12px tahoma,arial,verdana,sans-serif}.x4-form-empty-field,textarea.x4-form-empty-field{color:gray}.x4-webkit .x4-form-empty-field{line-height:15px}.x4-form-display-field{padding-top:3px}.x4-quirks .x4-ie9p .x4-form-text,.x4-ie7m .x4-form-text{margin-top:-1px;margin-bottom:-1px}.x4-ie .x4-form-file{height:23px;line-height:18px;vertical-align:middle}.x4-field-default-toolbar .x4-form-text{height:16px}.x4-border-box .x4-field-default-toolbar .x4-form-text{height:20px}.x4-field-default-toolbar .x4-form-item-label-left{padding-left:4px}.x4-fieldset{border:1px solid #b5b8c8;padding:10px;margin-bottom:10px;display:block;position:relative}.x4-ie .x4-fieldset{padding-top:0}.x4-ie .x4-fieldset .x4-fieldset-body{padding-top:10px}.x4-fieldset-header-checkbox{line-height:14px}.x4-fieldset-header{font:11px/14px bold tahoma,arial,verdana,sans-serif;color:#15428b;padding:0 3px 1px;overflow:hidden}.x4-fieldset-header .x4-fieldset-header-text{float:left;padding:1px 0}.x4-fieldset-header .x4-fieldset-header-text-collapsible{cursor:pointer}.x4-fieldset-header .x4-form-item,.x4-fieldset-header .x4-tool{float:left;margin:1px 0 0 0}.x4-fieldset-header .x4-form-cb-wrap{padding:1px 0;font-size:0;line-height:0}.x4-fieldset-with-title .x4-fieldset-header-checkbox,.x4-fieldset-with-title .x4-tool{margin-right:3px}.x4-webkit .x4-fieldset-header{-webkit-padding-start:3px;-webkit-padding-end:3px}.x4-opera .x4-fieldset-with-legend{margin-top:-1px}.x4-opera.x4-mac .x4-fieldset-header-text{padding:2px 0 0}.x4-strict .x4-ie8 .x4-fieldset-header{margin-bottom:-1px}.x4-strict .x4-ie8 .x4-fieldset-header .x4-tool,.x4-strict .x4-ie8 .x4-fieldset-header .x4-fieldset-header-text,.x4-strict .x4-ie8 .x4-fieldset-header .x4-fieldset-header-checkbox{position:relative;top:-1px}.x4-quirks .x4-ie .x4-fieldset-header,.x4-ie8m .x4-fieldset-header{padding-left:1px;padding-right:1px}.x4-fieldset-collapsed .x4-fieldset-body{display:none}.x4-fieldset-collapsed{padding-bottom:0!important;border-width:1px 1px 0 1px!important;border-left-color:transparent!important;border-right-color:transparent!important}.x4-ie6 .x4-fieldset-collapsed{border-width:1px 0 0 0!important;padding-bottom:0!important;margin-left:1px;margin-right:1px}.x4-ie .x4-fieldset-bwrap{zoom:1}.x4-ie .x4-fieldset-noborder legend{position:relative;margin-bottom:23px}.x4-ie .x4-fieldset-noborder legend span{position:absolute;left:16px}.x4-fieldset{overflow:hidden}.x4-fieldset-bwrap{overflow:hidden;zoom:1}.x4-fieldset-body{overflow:hidden}.x4-form-file-wrap .x4-form-text{color:#777}.x4-form-file-wrap .x4-form-file-btn{overflow:hidden}.x4-form-file-wrap .x4-form-file-input{position:absolute;top:-4px;right:-2px;height:30px;filter:alpha(opacity=0);opacity:0;font-size:100px}.x4-form-cb-wrap{padding-top:3px}.x4-form-checkbox,.x4-form-radio{vertical-align:-1px;width:13px;height:13px;background:no-repeat;background-image:url('../../resources/themes/images/default/form/checkbox.gif');overflow:hidden;padding:0;border:0}.x4-form-checkbox::-moz-focus-inner,.x4-form-radio::-moz-focus-inner{padding:0;border:0}.x4-nbr.x4-ie .x4-form-checkbox,.x4-nbr.x4-ie .x4-form-radio{font-size:0}.x4-form-cb-checked .x4-form-checkbox,.x4-form-cb-checked .x4-form-radio{background-position:0 -13px}.x4-form-cb-focus{background-position:-13px 0}.x4-form-cb-checked .x4-form-cb-focus{background-position:-13px -13px}.x4-form-radio{background-image:url('../../resources/themes/images/default/form/radio.gif')}.x4-form-cb-label-before{margin-right:4px}.x4-form-cb-label-after{margin-left:4px}.x4-form-checkboxgroup-body{padding:1px 4px 1px 4px}.x4-form-invalid .x4-form-checkboxgroup-body{border:1px solid #c30!important;background:transparent repeat-x bottom;background-image:url('../../resources/themes/images/default/grid/invalid_line.gif');padding:1px 3px 0 3px}.x4-check-group-alt{background:#d1ddef;border-top:1px dotted #b5b8c8;border-bottom:1px dotted #b5b8c8}.x4-form-check-group-label{color:#333;border-bottom:1px solid #333;margin:0 30px 5px 0;padding:2px}.x4-form-trigger-wrap{vertical-align:top}.x4-form-trigger{background-image:url('../../resources/themes/images/default/form/trigger.gif');background-position:0 0;width:17px;height:21px;border-bottom:1px solid #b5b8c8;cursor:pointer;cursor:hand;overflow:hidden}.x4-border-box .x4-form-trigger{height:22px}.x4-field-default-toolbar .x4-form-trigger{height:19px}.x4-border-box .x4-field-default-toolbar .x4-form-trigger{height:20px}.x4-form-trigger-over{background-position:-17px 0;border-bottom-color:#7eadd9}.x4-form-trigger-wrap-focus .x4-form-trigger{background-position:-51px 0;border-bottom-color:#7eadd9}.x4-form-trigger-wrap-focus .x4-form-trigger-over{background-position:-68px 0;border-bottom-color:null}.x4-form-trigger-click,.x4-form-trigger-wrap-focus .x4-form-trigger-click{background-position:-34px 0;border-bottom-color:null}.x4-form-trigger-icon{height:16px;background-repeat:no-repeat;background-position:7px 6px}.x4-pickerfield-open .x4-form-field{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0}.x4-pickerfield-open-above .x4-form-field{-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;-o-border-bottom-left-radius:3px;-ms-border-bottom-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0}.x4-form-arrow-trigger .x4-form-trigger-icon{background-image:url('../../resources/themes/images/default/boundlist/trigger-arrow.png')}.x4-form-date-trigger{background-image:url('../../resources/themes/images/default/form/date-trigger.gif')}.x4-form-trigger-wrap .x4-form-spinner-up,.x4-form-trigger-wrap .x4-form-spinner-down{background-image:url('../../resources/themes/images/default/form/spinner.gif');width:17px!important;height:11px!important;font-size:0;border-bottom:0}.x4-form-trigger-wrap .x4-form-spinner-down{background-position:0 -11px}.x4-form-trigger-wrap-focus .x4-form-spinner-down{background-position:-51px -11px}.x4-form-trigger-wrap .x4-form-spinner-down-over{background-position:-17px -11px}.x4-form-trigger-wrap-focus .x4-form-spinner-down-over{background-position:-68px -11px}.x4-form-trigger-wrap .x4-form-spinner-down-click{background-position:-34px -11px}.x4-field-default-toolbar .x4-form-trigger-wrap .x4-form-spinner-up,.x4-field-default-toolbar .x4-form-trigger-wrap .x4-form-spinner-down{background-image:url('../../resources/themes/images/default/form/spinner-small.gif');height:10px!important}.x4-field-default-toolbar .x4-form-trigger-wrap .x4-form-spinner-down{background-position:0 -10px}.x4-field-default-toolbar .x4-form-trigger-wrap-focus .x4-form-spinner-down{background-position:-51px -10px}.x4-field-default-toolbar .x4-form-trigger-wrap .x4-form-spinner-down-over{background-position:-17px -10px}.x4-field-default-toolbar .x4-form-trigger-wrap-focus .x4-form-spinner-down-over{background-position:-68px -10px}.x4-field-default-toolbar .x4-form-trigger-wrap .x4-form-spinner-down-click{background-position:-34px -10px}.x4-trigger-noedit{cursor:pointer;cursor:hand}.x4-item-disabled .x4-trigger-noedit,.x4-item-disabled .x4-form-trigger{cursor:auto}.x4-form-clear-trigger{background-image:url('../../resources/themes/images/default/form/clear-trigger.gif')}.x4-form-search-trigger{background-image:url('../../resources/themes/images/default/form/search-trigger.gif')}.x4-quirks .prefixie6 .x4-form-trigger-input-cell{height:22px}.x4-quirks .prefixie6 .x4-field-default-toolbar .x4-form-trigger-input-cell{height:20px}.x4-html-editor-wrap{border:1px solid #b5b8c8}.x4-html-editor-wrap .x4-toolbar{border-top-width:0;border-left-width:0;border-right-width:0}.x4-html-editor-wrap textarea{background-color:white}.x4-html-editor-tb .x4-btn-text{background:transparent no-repeat;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x4-html-editor-tb .x4-edit-bold,.x4-menu-item img.x4-edit-bold{background-position:0 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x4-html-editor-tb .x4-edit-italic,.x4-menu-item img.x4-edit-italic{background-position:-16px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x4-html-editor-tb .x4-edit-underline,.x4-menu-item img.x4-edit-underline{background-position:-32px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x4-html-editor-tb .x4-edit-forecolor,.x4-menu-item img.x4-edit-forecolor{background-position:-160px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x4-html-editor-tb .x4-edit-backcolor,.x4-menu-item img.x4-edit-backcolor{background-position:-176px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x4-html-editor-tb .x4-edit-justifyleft,.x4-menu-item img.x4-edit-justifyleft{background-position:-112px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x4-html-editor-tb .x4-edit-justifycenter,.x4-menu-item img.x4-edit-justifycenter{background-position:-128px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x4-html-editor-tb .x4-edit-justifyright,.x4-menu-item img.x4-edit-justifyright{background-position:-144px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x4-html-editor-tb .x4-edit-insertorderedlist,.x4-menu-item img.x4-edit-insertorderedlist{background-position:-80px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x4-html-editor-tb .x4-edit-insertunorderedlist,.x4-menu-item img.x4-edit-insertunorderedlist{background-position:-96px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x4-html-editor-tb .x4-edit-increasefontsize,.x4-menu-item img.x4-edit-increasefontsize{background-position:-48px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x4-html-editor-tb .x4-edit-decreasefontsize,.x4-menu-item img.x4-edit-decreasefontsize{background-position:-64px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x4-html-editor-tb .x4-edit-sourceedit,.x4-menu-item img.x4-edit-sourceedit{background-position:-192px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x4-html-editor-tb .x4-edit-createlink,.x4-menu-item img.x4-edit-createlink{background-position:-208px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x4-html-editor-tip .x4-tip-bd .x4-tip-bd-inner{padding:5px;padding-bottom:1px}.x4-html-editor-tb .x4-toolbar{position:static!important}.x4-html-editor-tb .x4-font-select{font-size:11px}.x4-html-editor-wrap textarea{border:0;padding:3px 2px;overflow:auto}.x4-panel,.x4-plain{overflow:hidden;position:relative}.x4-ie .x4-panel-header,.x4-ie .x4-panel-header-tl,.x4-ie .x4-panel-header-tc,.x4-ie .x4-panel-header-tr,.x4-ie .x4-panel-header-ml,.x4-ie .x4-panel-header-mc,.x4-ie .x4-panel-header-mr,.x4-ie .x4-panel-header-bl,.x4-ie .x4-panel-header-bc,.x4-ie .x4-panel-header-br{zoom:1}.x4-ie8 td.x4-frame-mc{vertical-align:top}.x4-panel-header-horizontal{padding:3px 5px 4px}.x4-panel-header-vertical{padding:5px 4px}.x4-panel-header-icon,.x4-window-header-icon{width:16px;height:16px;background-repeat:no-repeat;background-position:0 0;vertical-align:middle;margin-right:4px}.x4-vertical .x4-panel-header-icon,.x4-vertical .x4-window-header-icon{margin:0 0 4px}.x4-panel-header-draggable,.x4-panel-header-draggable .x4-panel-header-text,.x4-window-header-draggable,.x4-window-header-draggable .x4-window-header-text{cursor:move}.x4-panel-ghost,.x4-window-ghost{filter:alpha(opacity=65);opacity:.65;cursor:move}.x4-panel-header-horizontal .x4-panel-header-body,.x4-panel-header-horizontal .x4-window-header-body,.x4-panel-header-horizontal .x4-btn-group-header-body,.x4-window-header-horizontal .x4-panel-header-body,.x4-window-header-horizontal .x4-window-header-body,.x4-window-header-horizontal .x4-btn-group-header-body,.x4-btn-group-header-horizontal .x4-panel-header-body,.x4-btn-group-header-horizontal .x4-window-header-body,.x4-btn-group-header-horizontal .x4-btn-group-header-body{width:100%}.x4-panel-header-vertical .x4-panel-header-body,.x4-panel-header-vertical .x4-window-header-body,.x4-panel-header-vertical .x4-btn-group-header-body,.x4-window-header-vertical .x4-panel-header-body,.x4-window-header-vertical .x4-window-header-body,.x4-window-header-vertical .x4-btn-group-header-body,.x4-btn-group-header-vertical .x4-panel-header-body,.x4-btn-group-header-vertical .x4-window-header-body,.x4-btn-group-header-vertical .x4-btn-group-header-body{height:100%}.x4-panel-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x4-panel-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;white-space:nowrap}.x4-panel-header-left .x4-vml-base,.x4-panel-header-right .x4-vml-base{left:-3px!important}.x4-panel-body{overflow:hidden;position:relative;font-size:12px}.x4-panel-header-vertical .x4-surface{padding-left:1px}.x4-opera .x4-panel-header-vertical .x4-surface,.x4-strict .x4-ie9 .x4-panel-header-vertical .x4-surface{padding-left:2px}.x4-panel-collapsed .x4-panel-header-collapsed-border-top{border-bottom-width:1px!important}.x4-panel-collapsed .x4-panel-header-collapsed-border-right{border-left-width:1px!important}.x4-panel-collapsed .x4-panel-header-collapsed-border-bottom{border-top-width:1px!important}.x4-panel-collapsed .x4-panel-header-collapsed-border-left{border-right-width:1px!important}.x4-nlg .x4-panel-header-vertical .x4-frame-mc{background-repeat:repeat-y}.x4-panel-default{border-color:#99bce8}.x4-panel-header-default{font-size:11px;border-color:#99bce8;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);-moz-box-shadow:#f4f8fd 0 1px 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset}.x4-nlg .x4-panel-header-default-top{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif')}.x4-nlg .x4-panel-header-default-bottom{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif')}.x4-nlg .x4-panel-header-default-left{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif')}.x4-nlg .x4-panel-header-default-right{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif')}.x4-nlg .x4-panel-header-default-right{background-position:top right}.x4-nlg .x4-panel-header-default-bottom{background-position:bottom left}.x4-panel-header-text-default{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:17px}.x4-panel-body-default{background:white;border-color:#99bce8;color:black;border-width:1px;border-style:solid}.x4-panel-collapsed .x4-window-header-default,.x4-panel-collapsed .x4-panel-header-default{border-color:#99bce8}.x4-panel-header-default-vertical{border-color:#99bce8}.x4-panel-header-default-left,.x4-panel-header-default-right{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-panel-collapsed .x4-panel-header-default-top{-moz-border-radius-bottomleft:null;-webkit-border-bottom-left-radius:null;-o-border-bottom-left-radius:null;-ms-border-bottom-left-radius:null;-khtml-border-bottom-left-radius:null;border-bottom-left-radius:null;-moz-border-radius-bottomright:null;-webkit-border-bottom-right-radius:null;-o-border-bottom-right-radius:null;-ms-border-bottom-right-radius:null;-khtml-border-bottom-right-radius:null;border-bottom-right-radius:null}.x4-panel-collapsed .x4-panel-header-default-right{-moz-border-radius-topleft:null;-webkit-border-top-left-radius:null;-o-border-top-left-radius:null;-ms-border-top-left-radius:null;-khtml-border-top-left-radius:null;border-top-left-radius:null;-moz-border-radius-bottomleft:null;-webkit-border-bottom-left-radius:null;-o-border-bottom-left-radius:null;-ms-border-bottom-left-radius:null;-khtml-border-bottom-left-radius:null;border-bottom-left-radius:null}.x4-panel-collapsed .x4-panel-header-default-bottom{-moz-border-radius-topleft:null;-webkit-border-top-left-radius:null;-o-border-top-left-radius:null;-ms-border-top-left-radius:null;-khtml-border-top-left-radius:null;border-top-left-radius:null;-moz-border-radius-topright:null;-webkit-border-top-right-radius:null;-o-border-top-right-radius:null;-ms-border-top-right-radius:null;-khtml-border-top-right-radius:null;border-top-right-radius:null}.x4-panel-collapsed .x4-panel-header-default-left{-moz-border-radius-topright:null;-webkit-border-top-right-radius:null;-o-border-top-right-radius:null;-ms-border-top-right-radius:null;-khtml-border-top-right-radius:null;border-top-right-radius:null;-moz-border-radius-bottomright:null;-webkit-border-bottom-right-radius:null;-o-border-bottom-right-radius:null;-ms-border-bottom-right-radius:null;-khtml-border-bottom-right-radius:null;border-bottom-right-radius:null}.x4-panel-header-default-top{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset}.x4-panel-header-default-right{-moz-box-shadow:#f4f8fd -1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd -1px 0 0 0 inset;-o-box-shadow:#f4f8fd -1px 0 0 0 inset;box-shadow:#f4f8fd -1px 0 0 0 inset}.x4-panel-header-default-bottom{-moz-box-shadow:#f4f8fd 0 -1px 0 0 inset;-webkit-box-shadow:#f4f8fd 0 -1px 0 0 inset;-o-box-shadow:#f4f8fd 0 -1px 0 0 inset;box-shadow:#f4f8fd 0 -1px 0 0 inset}.x4-panel-header-default-left{-moz-box-shadow:#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 1px 0 0 0 inset}.x4-panel-header-default-right-tc,.x4-panel-header-default-right-mc,.x4-panel-header-default-right-bc{background-position:right 0}.x4-panel-header-default-bottom-tc,.x4-panel-header-default-bottom-mc,.x4-panel-header-default-bottom-bc{background-position:0 bottom}.x4-panel-default-framed{border-color:#99bce8}.x4-panel-header-default-framed{font-size:11px;border-color:#99bce8;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);-moz-box-shadow:#f4f8fd 0 1px 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset}.x4-nlg .x4-panel-header-default-framed-top{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif')}.x4-nlg .x4-panel-header-default-framed-bottom{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif')}.x4-nlg .x4-panel-header-default-framed-left{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif')}.x4-nlg .x4-panel-header-default-framed-right{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif')}.x4-nlg .x4-panel-header-default-framed-right{background-position:top right}.x4-nlg .x4-panel-header-default-framed-bottom{background-position:bottom left}.x4-nbr .x4-panel-header-default-framed{background-image:none}.x4-strict .x4-ie9 .x4-panel-header-default-framed-top,.x4-nlg.x4-opera .x4-panel-header-default-framed-top,.x4-nlg.x4-safari .x4-panel-header-default-framed-top{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif')}.x4-strict .x4-ie9 .x4-panel-header-default-framed-bottom,.x4-nlg.x4-opera .x4-panel-header-default-framed-bottom,.x4-nlg.x4-safari .x4-panel-header-default-framed-bottom{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif')}.x4-strict .x4-ie9 .x4-panel-header-default-framed-left,.x4-nlg.x4-opera .x4-panel-header-default-framed-left,.x4-nlg.x4-safari .x4-panel-header-default-framed-left{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif')}.x4-strict .x4-ie9 .x4-panel-header-default-framed-right,.x4-nlg.x4-opera .x4-panel-header-default-framed-right,.x4-nlg.x4-safari .x4-panel-header-default-framed-right{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif')}.x4-panel-header-text-default-framed{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:17px}.x4-panel-body-default-framed{background:#dfe9f6;border-color:#99bce8;color:black;border-width:0;border-style:solid}.x4-panel-collapsed .x4-window-header-default-framed,.x4-panel-collapsed .x4-panel-header-default-framed{border-color:#99bce8}.x4-panel-header-default-framed-vertical{border-color:#99bce8}.x4-panel-header-default-framed-left,.x4-panel-header-default-framed-right{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-panel-default-framed{-moz-border-radius:4px;-webkit-border-radius:4px;-o-border-radius:4px;-ms-border-radius:4px;-khtml-border-radius:4px;border-radius:4px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#dfe9f6}.x4-nlg .x4-panel-default-framed-mc{background-color:#dfe9f6}.x4-nbr .x4-panel-default-framed{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1000404px}.x4-nbr .x4-panel-default-framed-tl,.x4-nbr .x4-panel-default-framed-bl,.x4-nbr .x4-panel-default-framed-tr,.x4-nbr .x4-panel-default-framed-br,.x4-nbr .x4-panel-default-framed-tc,.x4-nbr .x4-panel-default-framed-bc,.x4-nbr .x4-panel-default-framed-ml,.x4-nbr .x4-panel-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel/panel-default-framed-corners.gif')}.x4-nbr .x4-panel-default-framed-ml,.x4-nbr .x4-panel-default-framed-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel/panel-default-framed-sides.gif');background-position:0 0;background-repeat:repeat-y}.x4-nbr .x4-panel-default-framed-mc{padding:1px 1px 1px 1px}.x4-strict .x4-ie7 .x4-panel-default-framed-tl,.x4-strict .x4-ie7 .x4-panel-default-framed-bl{position:relative;right:0}.x4-panel-header-default-framed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 5px 4px 5px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-nlg .x4-panel-header-default-framed-top-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif');background-color:#cbddf3}.x4-nbr .x4-panel-header-default-framed-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1000000px}.x4-nbr .x4-panel-header-default-framed-top-tl,.x4-nbr .x4-panel-header-default-framed-top-bl,.x4-nbr .x4-panel-header-default-framed-top-tr,.x4-nbr .x4-panel-header-default-framed-top-br,.x4-nbr .x4-panel-header-default-framed-top-tc,.x4-nbr .x4-panel-header-default-framed-top-bc,.x4-nbr .x4-panel-header-default-framed-top-ml,.x4-nbr .x4-panel-header-default-framed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-corners.gif')}.x4-nbr .x4-panel-header-default-framed-top-ml,.x4-nbr .x4-panel-header-default-framed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-sides.gif');background-position:0 0}.x4-nbr .x4-panel-header-default-framed-top-mc{padding:0 2px 4px 2px}.x4-strict .x4-ie7 .x4-panel-header-default-framed-top-tl,.x4-strict .x4-ie7 .x4-panel-header-default-framed-top-bl{position:relative;right:0}.x4-panel-header-default-framed-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 4px;border-width:1px 1px 1px 0;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-nlg .x4-panel-header-default-framed-right-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif');background-color:#cbddf3}.x4-nbr .x4-panel-header-default-framed-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000004px 1100400px}.x4-nbr .x4-panel-header-default-framed-right-tl,.x4-nbr .x4-panel-header-default-framed-right-bl,.x4-nbr .x4-panel-header-default-framed-right-tr,.x4-nbr .x4-panel-header-default-framed-right-br,.x4-nbr .x4-panel-header-default-framed-right-tc,.x4-nbr .x4-panel-header-default-framed-right-bc,.x4-nbr .x4-panel-header-default-framed-right-ml,.x4-nbr .x4-panel-header-default-framed-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-corners.gif')}.x4-nbr .x4-panel-header-default-framed-right-tc,.x4-nbr .x4-panel-header-default-framed-right-bc{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-sides.gif');background-position:0 0;background-repeat:repeat-x}.x4-nbr .x4-panel-header-default-framed-right-mc{padding:2px 1px 2px 4px}.x4-strict .x4-ie7 .x4-panel-header-default-framed-right-tl,.x4-strict .x4-ie7 .x4-panel-header-default-framed-right-bl{position:relative;right:0}.x4-panel-header-default-framed-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-nlg .x4-panel-header-default-framed-bottom-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif');background-color:#cbddf3}.x4-nbr .x4-panel-header-default-framed-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000000px 1000404px}.x4-nbr .x4-panel-header-default-framed-bottom-tl,.x4-nbr .x4-panel-header-default-framed-bottom-bl,.x4-nbr .x4-panel-header-default-framed-bottom-tr,.x4-nbr .x4-panel-header-default-framed-bottom-br,.x4-nbr .x4-panel-header-default-framed-bottom-tc,.x4-nbr .x4-panel-header-default-framed-bottom-bc,.x4-nbr .x4-panel-header-default-framed-bottom-ml,.x4-nbr .x4-panel-header-default-framed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-corners.gif')}.x4-nbr .x4-panel-header-default-framed-bottom-ml,.x4-nbr .x4-panel-header-default-framed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-sides.gif');background-position:0 0}.x4-nbr .x4-panel-header-default-framed-bottom-mc{padding:3px 2px 1px 2px}.x4-strict .x4-ie7 .x4-panel-header-default-framed-bottom-tl,.x4-strict .x4-ie7 .x4-panel-header-default-framed-bottom-bl{position:relative;right:0}.x4-panel-header-default-framed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-nlg .x4-panel-header-default-framed-left-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif');background-color:#cbddf3}.x4-nbr .x4-panel-header-default-framed-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000400px 1100004px}.x4-nbr .x4-panel-header-default-framed-left-tl,.x4-nbr .x4-panel-header-default-framed-left-bl,.x4-nbr .x4-panel-header-default-framed-left-tr,.x4-nbr .x4-panel-header-default-framed-left-br,.x4-nbr .x4-panel-header-default-framed-left-tc,.x4-nbr .x4-panel-header-default-framed-left-bc,.x4-nbr .x4-panel-header-default-framed-left-ml,.x4-nbr .x4-panel-header-default-framed-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-corners.gif')}.x4-nbr .x4-panel-header-default-framed-left-tc,.x4-nbr .x4-panel-header-default-framed-left-bc{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-sides.gif');background-position:0 0;background-repeat:repeat-x}.x4-nbr .x4-panel-header-default-framed-left-mc{padding:2px 4px 2px 1px}.x4-strict .x4-ie7 .x4-panel-header-default-framed-left-tl,.x4-strict .x4-ie7 .x4-panel-header-default-framed-left-bl{position:relative;right:0}.x4-panel-header-default-framed-top{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset}.x4-panel-header-default-framed-right{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset}.x4-panel-header-default-framed-bottom{-moz-box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset}.x4-panel-header-default-framed-left{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset}.x4-panel .x4-panel-header-default-framed-top{border-bottom-width:1px!important}.x4-panel .x4-panel-header-default-framed-right{border-left-width:1px!important}.x4-panel .x4-panel-header-default-framed-bottom{border-top-width:1px!important}.x4-panel .x4-panel-header-default-framed-left{border-right-width:1px!important}.x4-panel-header-default-framed-collapsed{-moz-border-radius:4px;-webkit-border-radius:4px;-o-border-radius:4px;-ms-border-radius:4px;-khtml-border-radius:4px;border-radius:4px}.x4-panel-header-default-framed-collapsed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-nlg .x4-panel-header-default-framed-collapsed-top-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-bg.gif');background-color:#cbddf3}.x4-nbr .x4-panel-header-default-framed-collapsed-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1000404px}.x4-nbr .x4-panel-header-default-framed-collapsed-top-tl,.x4-nbr .x4-panel-header-default-framed-collapsed-top-bl,.x4-nbr .x4-panel-header-default-framed-collapsed-top-tr,.x4-nbr .x4-panel-header-default-framed-collapsed-top-br,.x4-nbr .x4-panel-header-default-framed-collapsed-top-tc,.x4-nbr .x4-panel-header-default-framed-collapsed-top-bc,.x4-nbr .x4-panel-header-default-framed-collapsed-top-ml,.x4-nbr .x4-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-corners.gif')}.x4-nbr .x4-panel-header-default-framed-collapsed-top-ml,.x4-nbr .x4-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-sides.gif');background-position:0 0}.x4-nbr .x4-panel-header-default-framed-collapsed-top-mc{padding:0 2px 1px 2px}.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-top-tl,.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-top-bl{position:relative;right:0}.x4-panel-header-default-framed-collapsed-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-nlg .x4-panel-header-default-framed-collapsed-right-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-bg.gif');background-color:#cbddf3}.x4-nbr .x4-panel-header-default-framed-collapsed-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1100404px}.x4-nbr .x4-panel-header-default-framed-collapsed-right-tl,.x4-nbr .x4-panel-header-default-framed-collapsed-right-bl,.x4-nbr .x4-panel-header-default-framed-collapsed-right-tr,.x4-nbr .x4-panel-header-default-framed-collapsed-right-br,.x4-nbr .x4-panel-header-default-framed-collapsed-right-tc,.x4-nbr .x4-panel-header-default-framed-collapsed-right-bc,.x4-nbr .x4-panel-header-default-framed-collapsed-right-ml,.x4-nbr .x4-panel-header-default-framed-collapsed-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-corners.gif')}.x4-nbr .x4-panel-header-default-framed-collapsed-right-tc,.x4-nbr .x4-panel-header-default-framed-collapsed-right-bc{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-sides.gif');background-position:0 0;background-repeat:repeat-x}.x4-nbr .x4-panel-header-default-framed-collapsed-right-mc{padding:2px 1px 2px 1px}.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-right-tl,.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-right-bl{position:relative;right:0}.x4-panel-header-default-framed-collapsed-bottom{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-nlg .x4-panel-header-default-framed-collapsed-bottom-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif');background-color:#cbddf3}.x4-nbr .x4-panel-header-default-framed-collapsed-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1000404px}.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-tl,.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-bl,.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-tr,.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-br,.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-tc,.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-bc,.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-ml,.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif')}.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-ml,.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif');background-position:0 0}.x4-nbr .x4-panel-header-default-framed-collapsed-bottom-mc{padding:0 2px 1px 2px}.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-bottom-tl,.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-bottom-bl{position:relative;right:0}.x4-panel-header-default-framed-collapsed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-ms-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x4-nlg .x4-panel-header-default-framed-collapsed-left-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-bg.gif');background-color:#cbddf3}.x4-nbr .x4-panel-header-default-framed-collapsed-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000404px 1100404px}.x4-nbr .x4-panel-header-default-framed-collapsed-left-tl,.x4-nbr .x4-panel-header-default-framed-collapsed-left-bl,.x4-nbr .x4-panel-header-default-framed-collapsed-left-tr,.x4-nbr .x4-panel-header-default-framed-collapsed-left-br,.x4-nbr .x4-panel-header-default-framed-collapsed-left-tc,.x4-nbr .x4-panel-header-default-framed-collapsed-left-bc,.x4-nbr .x4-panel-header-default-framed-collapsed-left-ml,.x4-nbr .x4-panel-header-default-framed-collapsed-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-corners.gif')}.x4-nbr .x4-panel-header-default-framed-collapsed-left-tc,.x4-nbr .x4-panel-header-default-framed-collapsed-left-bc{zoom:1;background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-sides.gif');background-position:0 0;background-repeat:repeat-x}.x4-nbr .x4-panel-header-default-framed-collapsed-left-mc{padding:2px 1px 2px 1px}.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-left-tl,.x4-strict .x4-ie7 .x4-panel-header-default-framed-collapsed-left-bl{position:relative;right:0}.x4-panel-header-default-framed-right-tc,.x4-panel-header-default-framed-right-mc,.x4-panel-header-default-framed-right-bc{background-position:right 0}.x4-panel-header-default-framed-bottom-tc,.x4-panel-header-default-framed-bottom-mc,.x4-panel-header-default-framed-bottom-bc{background-position:0 bottom}.x4-panel-header-plain,.x4-panel-body-plain{border:0;padding:0}.x4-tip{position:absolute;overflow:visible;border-color:#8eaace}.x4-tip .x4-tip-header .x4-box-item{padding:3px 3px 0}.x4-tip .x4-tip-header .x4-tool{padding:0 1px 0 0!important}.x4-tip{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:#e9f2ff}.x4-nlg .x4-tip-mc{background-color:#e9f2ff}.x4-nbr .x4-tip{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100303px 1000303px}.x4-nbr .x4-tip-tl,.x4-nbr .x4-tip-bl,.x4-nbr .x4-tip-tr,.x4-nbr .x4-tip-br,.x4-nbr .x4-tip-tc,.x4-nbr .x4-tip-bc,.x4-nbr .x4-tip-ml,.x4-nbr .x4-tip-mr{zoom:1;background-image:url('../../resources/themes/images/default/tip/tip-corners.gif')}.x4-nbr .x4-tip-ml,.x4-nbr .x4-tip-mr{zoom:1;background-image:url('../../resources/themes/images/default/tip/tip-sides.gif');background-position:0 0;background-repeat:repeat-y}.x4-nbr .x4-tip-mc{padding:0}.x4-strict .x4-ie7 .x4-tip-tl,.x4-strict .x4-ie7 .x4-tip-bl{position:relative;right:0}.x4-tip-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;color:#444;font-size:11px;font-weight:bold}.x4-tip-header-draggable .x4-tip-header-text{cursor:move}.x4-tip-body,.x4-form-invalid-tip-body{overflow:hidden;position:relative;padding:3px}.x4-tip-header,.x4-tip-body,.x4-form-invalid-tip-body{color:#444;font-size:11px;font-weight:normal}.x4-tip-header a,.x4-tip-body a,.x4-form-invalid-tip-body a{color:#2a2a2a}.x4-tip-anchor{position:absolute;overflow:hidden;height:0;width:0;border-style:solid;border-width:5px;border-color:#8eaace;zoom:1}.x4-border-box .x4-tip-anchor{width:10px;height:10px}.x4-tip-anchor-top{border-top-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x4-tip-anchor-bottom{border-bottom-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-bottom-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x4-tip-anchor-left{border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-left-color:pink;_filter:chroma(color=pink)}.x4-tip-anchor-right{border-top-color:transparent;border-bottom-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x4-form-invalid-tip{border-color:#a1311f;-moz-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-webkit-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-o-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset}.x4-form-invalid-tip-body{background:1px 1px no-repeat;background-image:url('../../resources/themes/images/default/form/exclamation.gif');padding-left:22px}.x4-form-invalid-tip-body li{margin-bottom:4px}.x4-form-invalid-tip-body li.last{margin-bottom:0}.x4-form-invalid-tip-default{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:white}.x4-nlg .x4-form-invalid-tip-default-mc{background-color:white}.x4-nbr .x4-form-invalid-tip-default{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100505px 1000505px}.x4-nbr .x4-form-invalid-tip-default-tl,.x4-nbr .x4-form-invalid-tip-default-bl,.x4-nbr .x4-form-invalid-tip-default-tr,.x4-nbr .x4-form-invalid-tip-default-br,.x4-nbr .x4-form-invalid-tip-default-tc,.x4-nbr .x4-form-invalid-tip-default-bc,.x4-nbr .x4-form-invalid-tip-default-ml,.x4-nbr .x4-form-invalid-tip-default-mr{zoom:1;background-image:url('../../resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-corners.gif')}.x4-nbr .x4-form-invalid-tip-default-ml,.x4-nbr .x4-form-invalid-tip-default-mr{zoom:1;background-image:url('../../resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-sides.gif');background-position:0 0;background-repeat:repeat-y}.x4-nbr .x4-form-invalid-tip-default-mc{padding:0}.x4-strict .x4-ie7 .x4-form-invalid-tip-default-tl,.x4-strict .x4-ie7 .x4-form-invalid-tip-default-bl{position:relative;right:0}.x4-slider{zoom:1}.x4-slider-inner{position:relative;left:0;top:0;overflow:visible;zoom:1}.x4-slider-focus{position:absolute;left:0;top:0;width:1px;height:1px;line-height:1px;font-size:1px;-moz-outline:0 none;outline:0 none;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;display:block;overflow:hidden}.x4-slider-horz{padding-left:7px;background:transparent no-repeat 0 -24px;width:100%}.x4-slider-horz .x4-slider-end{padding-right:7px;zoom:1;background:transparent no-repeat right -46px}.x4-slider-horz .x4-slider-inner{background:transparent repeat-x 0 -2px;height:18px}.x4-slider-horz .x4-slider-thumb{width:14px;height:15px;margin-left:-7px;position:absolute;left:0;top:1px;background:transparent no-repeat 0 0}.x4-slider-horz .x4-slider-thumb-over{background-position:-14px -15px}.x4-slider-horz .x4-slider-thumb-drag{background-position:-28px -30px}.x4-slider-vert{padding-top:7px;background:transparent no-repeat -44px 0}.x4-slider-vert .x4-slider-end{padding-bottom:7px;zoom:1;background:transparent no-repeat -22px bottom;width:22px}.x4-slider-vert .x4-slider-inner{background:transparent repeat-y 0 0;width:22px}.x4-slider-vert .x4-slider-thumb{width:15px;height:14px;margin-bottom:-7px;position:absolute;left:3px;bottom:0;background:transparent no-repeat 0 0}.x4-slider-vert .x4-slider-thumb-over{background-position:-15px -14px}.x4-slider-vert .x4-slider-thumb-drag{background-position:-30px -28px}.x4-slider-horz,.x4-slider-horz .x4-slider-end,.x4-slider-horz .x4-slider-inner{background-image:url('../../resources/themes/images/default/slider/slider-bg.png')}.x4-slider-horz .x4-slider-thumb{background-image:url('../../resources/themes/images/default/slider/slider-thumb.png')}.x4-slider-vert,.x4-slider-vert .x4-slider-end,.x4-slider-vert .x4-slider-inner{background-image:url('../../resources/themes/images/default/slider/slider-v-bg.png')}.x4-slider-vert .x4-slider-thumb{background-image:url('../../resources/themes/images/default/slider/slider-v-thumb.png')}.x4-ie6 .x4-slider-horz,.x4-ie6 .x4-slider-horz .x4-slider-end,.x4-ie6 .x4-slider-horz .x4-slider-inner{background-image:url('../../resources/themes/images/default/slider/slider-bg.gif')}.x4-ie6 .x4-slider-horz .x4-slider-thumb{background-image:url('../../resources/themes/images/default/slider/slider-thumb.gif')}.x4-ie6 .x4-slider-vert,.x4-ie6 .x4-slider-vert .x4-slider-end,.x4-ie6 .x4-slider-vert .x4-slider-inner{background-image:url('../../resources/themes/images/default/slider/slider-v-bg.gif')}.x4-ie6 .x4-slider-vert .x4-slider-thumb{background-image:url('../../resources/themes/images/default/slider/slider-v-thumb.gif')}.x4-progress{position:relative;border-width:1px;border-style:solid;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;overflow:hidden;height:20px}.x4-progress-bar{height:18px;overflow:hidden;position:absolute;width:0;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;border-right:1px solid;border-top:1px solid}.x4-progress-text{overflow:hidden;position:absolute;padding:0 5px;height:18px;font-weight:bold;font-size:11px;line-height:16px;text-align:center}.x4-progress-text-back{padding-top:1px}.x4-strict .x4-ie7m .x4-progress{height:18px}.x4-progress-default{border-color:#6594cf}.x4-progress-default .x4-progress-bar{border-right-color:#6594cf;border-top-color:#c6d8ed;background-image:none;background-color:#73a3e0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b2ccee),color-stop(50%,#88b1e5),color-stop(51%,#73a3e0),color-stop(100%,#5e96db));background-image:-webkit-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-moz-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-o-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-ms-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db)}.x4-progress-default .x4-progress-text{color:white}.x4-progress-default .x4-progress-text-back{color:#396295}.x4-nlg .x4-progress-default .x4-progress-bar{background:repeat-x;background-image:url('../../resources/themes/images/default/progress/progress-default-bg.gif')}.x4-toolbar{font-size:11px;border:1px solid;padding:2px 0 2px 2px}.x4-toolbar .x4-form-item-label{font-size:11px;line-height:15px}.x4-toolbar .x4-toolbar-item{margin:0 2px 0 0}.x4-toolbar .x4-toolbar-text{margin-left:4px;margin-right:6px;white-space:nowrap;color:#4c4c4c;line-height:16px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;font-weight:normal}.x4-toolbar .x4-toolbar-separator{display:block;font-size:1px;overflow:hidden;cursor:default;border:0}.x4-toolbar .x4-toolbar-separator-horizontal{margin:0 3px 0 2px;height:14px;width:0;border-left:1px solid #98c8ff;border-right:1px solid white}.x4-quirks .x4-ie .x4-toolbar .x4-toolbar-separator-horizontal{width:2px}.x4-toolbar-footer{background:transparent;border:0 none;margin-top:3px;padding:2px 0 2px 6px}.x4-toolbar-footer .x4-box-inner{border-width:0}.x4-toolbar-footer .x4-toolbar-item{margin:0 6px 0 0}.x4-toolbar-vertical{padding:2px 2px 0 2px}.x4-toolbar-vertical .x4-toolbar-item{margin:0 0 2px 0}.x4-toolbar-vertical .x4-toolbar-text{margin-top:4px;margin-bottom:6px}.x4-toolbar-vertical .x4-toolbar-separator-vertical{margin:2px 5px 3px 5px;height:0;width:10px;line-height:0;border-top:1px solid #98c8ff;border-bottom:1px solid white}.x4-toolbar-scroller{padding-left:0}.x4-toolbar-spacer{width:2px}.x4-toolbar-more-icon{background-image:url('../../resources/themes/images/default/toolbar/more.gif')!important;background-position:2px center!important;background-repeat:no-repeat}.x4-toolbar-default{border-color:#99bce8;background-image:none;background-color:#d3e1f1;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dfe9f5),color-stop(100%,#d3e1f1));background-image:-webkit-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-moz-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-o-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-ms-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:linear-gradient(top,#dfe9f5,#d3e1f1)}.x4-nlg .x4-toolbar-default{background-image:url('../../resources/themes/images/default/toolbar/toolbar-default-bg.gif')!important;background-repeat:repeat-x}.x4-toolbar-plain{border:0}.x4-window{outline:0;overflow:hidden}.x4-window .x4-window-wrap{position:relative}.x4-window-body{position:relative;border-style:solid;overflow:hidden}.x4-window-maximized .x4-window-wrap .x4-window-header{-moz-border-radius:0!important;-webkit-border-radius:0!important;-o-border-radius:0!important;-ms-border-radius:0!important;-khtml-border-radius:0!important;border-radius:0!important}.x4-window-header-top{margin-bottom:-2px}.x4-window-header-body-horizontal{margin-top:-1px}.x4-window-header-bottom{margin-top:-1px;margin-bottom:-1px}.x4-window-header-left{margin-right:-1px}.x4-window-header-right{margin-left:-1px}.x4-window-header-vertical .x4-surface{padding-left:1px}.x4-window-collapsed .x4-window-header-vertical{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px}.x4-window-collapsed .x4-window-header-horizontal{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px}.x4-window-collapsed .x4-window-header-left{padding-right:5px!important;margin-right:0}.x4-window-collapsed .x4-window-header-right{padding-left:5px!important;margin-left:0}.x4-window-collapsed .x4-window-header-top{padding-bottom:5px!important;margin-bottom:-1px}.x4-window-collapsed .x4-window-header-bottom{padding-top:5px!important;margin-top:0}.x4-window-header-left .x4-vml-base,.x4-window-header-right .x4-vml-base{left:-3px!important}.x4-opera .x4-window-header-vertical .x4-surface,.x4-strict .x4-ie9 .x4-window-header-vertical .x4-surface{padding-left:2px}.x4-window-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x4-window-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;white-space:nowrap}.x4-window-default{border-color:#a2b1c5;-moz-border-radius:5px 5px;-webkit-border-radius:5px 5px;-o-border-radius:5px 5px;-ms-border-radius:5px 5px;-khtml-border-radius:5px 5px;border-radius:5px 5px;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x4-window-default{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x4-nlg .x4-window-default-mc{background-color:#ced9e7}.x4-nbr .x4-window-default{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x4-nbr .x4-window-default-tl,.x4-nbr .x4-window-default-bl,.x4-nbr .x4-window-default-tr,.x4-nbr .x4-window-default-br,.x4-nbr .x4-window-default-tc,.x4-nbr .x4-window-default-bc,.x4-nbr .x4-window-default-ml,.x4-nbr .x4-window-default-mr{zoom:1;background-image:url('../../resources/themes/images/default/window/window-default-corners.gif')}.x4-nbr .x4-window-default-ml,.x4-nbr .x4-window-default-mr{zoom:1;background-image:url('../../resources/themes/images/default/window/window-default-sides.gif');background-position:0 0;background-repeat:repeat-y}.x4-nbr .x4-window-default-mc{padding:0}.x4-strict .x4-ie7 .x4-window-default-tl,.x4-strict .x4-ie7 .x4-window-default-bl{position:relative;right:0}.x4-window-body-default{border-color:#99bbe8;border-width:1px;background:#dfe8f6;color:black}.x4-window-header-default{font-size:11px;border-color:#a2b1c5;zoom:1}.x4-window-header-text-default{color:#04468c;font-weight:bold;line-height:17px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px}.x4-window-header-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 0 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#ced9e7}.x4-nlg .x4-window-header-default-top-mc{background-color:#ced9e7}.x4-nbr .x4-window-header-default-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000000px}.x4-nbr .x4-window-header-default-top-tl,.x4-nbr .x4-window-header-default-top-bl,.x4-nbr .x4-window-header-default-top-tr,.x4-nbr .x4-window-header-default-top-br,.x4-nbr .x4-window-header-default-top-tc,.x4-nbr .x4-window-header-default-top-bc,.x4-nbr .x4-window-header-default-top-ml,.x4-nbr .x4-window-header-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-top-corners.gif')}.x4-nbr .x4-window-header-default-top-ml,.x4-nbr .x4-window-header-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-top-sides.gif');background-position:0 0;background-repeat:repeat-y}.x4-nbr .x4-window-header-default-top-mc{padding:0 1px 0 1px}.x4-strict .x4-ie7 .x4-window-header-default-top-tl,.x4-strict .x4-ie7 .x4-window-header-default-top-bl{position:relative;right:0}.x4-window-header-default-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 0;border-width:1px 1px 1px 0;border-style:solid;background-color:#ced9e7}.x4-nlg .x4-window-header-default-right-mc{background-color:#ced9e7}.x4-nbr .x4-window-header-default-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000005px 1000500px}.x4-nbr .x4-window-header-default-right-tl,.x4-nbr .x4-window-header-default-right-bl,.x4-nbr .x4-window-header-default-right-tr,.x4-nbr .x4-window-header-default-right-br,.x4-nbr .x4-window-header-default-right-tc,.x4-nbr .x4-window-header-default-right-bc,.x4-nbr .x4-window-header-default-right-ml,.x4-nbr .x4-window-header-default-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-right-corners.gif')}.x4-nbr .x4-window-header-default-right-ml,.x4-nbr .x4-window-header-default-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-right-sides.gif');background-position:0 0;background-repeat:repeat-y}.x4-nbr .x4-window-header-default-right-mc{padding:1px 0 1px 0}.x4-strict .x4-ie7 .x4-window-header-default-right-tl,.x4-strict .x4-ie7 .x4-window-header-default-right-bl{position:relative;right:0}.x4-window-header-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:0 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#ced9e7}.x4-nlg .x4-window-header-default-bottom-mc{background-color:#ced9e7}.x4-nbr .x4-window-header-default-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000000px 1000505px}.x4-nbr .x4-window-header-default-bottom-tl,.x4-nbr .x4-window-header-default-bottom-bl,.x4-nbr .x4-window-header-default-bottom-tr,.x4-nbr .x4-window-header-default-bottom-br,.x4-nbr .x4-window-header-default-bottom-tc,.x4-nbr .x4-window-header-default-bottom-bc,.x4-nbr .x4-window-header-default-bottom-ml,.x4-nbr .x4-window-header-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-bottom-corners.gif')}.x4-nbr .x4-window-header-default-bottom-ml,.x4-nbr .x4-window-header-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-bottom-sides.gif');background-position:0 0;background-repeat:repeat-y}.x4-nbr .x4-window-header-default-bottom-mc{padding:0 1px 0 1px}.x4-strict .x4-ie7 .x4-window-header-default-bottom-tl,.x4-strict .x4-ie7 .x4-window-header-default-bottom-bl{position:relative;right:0}.x4-window-header-default-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 0 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-color:#ced9e7}.x4-nlg .x4-window-header-default-left-mc{background-color:#ced9e7}.x4-nbr .x4-window-header-default-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000500px 1000005px}.x4-nbr .x4-window-header-default-left-tl,.x4-nbr .x4-window-header-default-left-bl,.x4-nbr .x4-window-header-default-left-tr,.x4-nbr .x4-window-header-default-left-br,.x4-nbr .x4-window-header-default-left-tc,.x4-nbr .x4-window-header-default-left-bc,.x4-nbr .x4-window-header-default-left-ml,.x4-nbr .x4-window-header-default-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-left-corners.gif')}.x4-nbr .x4-window-header-default-left-ml,.x4-nbr .x4-window-header-default-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-left-sides.gif');background-position:0 0;background-repeat:repeat-y}.x4-nbr .x4-window-header-default-left-mc{padding:1px 0 1px 0}.x4-strict .x4-ie7 .x4-window-header-default-left-tl,.x4-strict .x4-ie7 .x4-window-header-default-left-bl{position:relative;right:0}.x4-window-header-default-collapsed-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x4-nlg .x4-window-header-default-collapsed-top-mc{background-color:#ced9e7}.x4-nbr .x4-window-header-default-collapsed-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x4-nbr .x4-window-header-default-collapsed-top-tl,.x4-nbr .x4-window-header-default-collapsed-top-bl,.x4-nbr .x4-window-header-default-collapsed-top-tr,.x4-nbr .x4-window-header-default-collapsed-top-br,.x4-nbr .x4-window-header-default-collapsed-top-tc,.x4-nbr .x4-window-header-default-collapsed-top-bc,.x4-nbr .x4-window-header-default-collapsed-top-ml,.x4-nbr .x4-window-header-default-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-top-corners.gif')}.x4-nbr .x4-window-header-default-collapsed-top-ml,.x4-nbr .x4-window-header-default-collapsed-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-top-sides.gif');background-position:0 0;background-repeat:repeat-y}.x4-nbr .x4-window-header-default-collapsed-top-mc{padding:0 1px 0 1px}.x4-strict .x4-ie7 .x4-window-header-default-collapsed-top-tl,.x4-strict .x4-ie7 .x4-window-header-default-collapsed-top-bl{position:relative;right:0}.x4-window-header-default-collapsed-right{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x4-nlg .x4-window-header-default-collapsed-right-mc{background-color:#ced9e7}.x4-nbr .x4-window-header-default-collapsed-right{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x4-nbr .x4-window-header-default-collapsed-right-tl,.x4-nbr .x4-window-header-default-collapsed-right-bl,.x4-nbr .x4-window-header-default-collapsed-right-tr,.x4-nbr .x4-window-header-default-collapsed-right-br,.x4-nbr .x4-window-header-default-collapsed-right-tc,.x4-nbr .x4-window-header-default-collapsed-right-bc,.x4-nbr .x4-window-header-default-collapsed-right-ml,.x4-nbr .x4-window-header-default-collapsed-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-right-corners.gif')}.x4-nbr .x4-window-header-default-collapsed-right-ml,.x4-nbr .x4-window-header-default-collapsed-right-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-right-sides.gif');background-position:0 0;background-repeat:repeat-y}.x4-nbr .x4-window-header-default-collapsed-right-mc{padding:1px 0 1px 0}.x4-strict .x4-ie7 .x4-window-header-default-collapsed-right-tl,.x4-strict .x4-ie7 .x4-window-header-default-collapsed-right-bl{position:relative;right:0}.x4-window-header-default-collapsed-bottom{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x4-nlg .x4-window-header-default-collapsed-bottom-mc{background-color:#ced9e7}.x4-nbr .x4-window-header-default-collapsed-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x4-nbr .x4-window-header-default-collapsed-bottom-tl,.x4-nbr .x4-window-header-default-collapsed-bottom-bl,.x4-nbr .x4-window-header-default-collapsed-bottom-tr,.x4-nbr .x4-window-header-default-collapsed-bottom-br,.x4-nbr .x4-window-header-default-collapsed-bottom-tc,.x4-nbr .x4-window-header-default-collapsed-bottom-bc,.x4-nbr .x4-window-header-default-collapsed-bottom-ml,.x4-nbr .x4-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-bottom-corners.gif')}.x4-nbr .x4-window-header-default-collapsed-bottom-ml,.x4-nbr .x4-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-bottom-sides.gif');background-position:0 0;background-repeat:repeat-y}.x4-nbr .x4-window-header-default-collapsed-bottom-mc{padding:0 1px 0 1px}.x4-strict .x4-ie7 .x4-window-header-default-collapsed-bottom-tl,.x4-strict .x4-ie7 .x4-window-header-default-collapsed-bottom-bl{position:relative;right:0}.x4-window-header-default-collapsed-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x4-nlg .x4-window-header-default-collapsed-left-mc{background-color:#ced9e7}.x4-nbr .x4-window-header-default-collapsed-left{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1000505px 1000505px}.x4-nbr .x4-window-header-default-collapsed-left-tl,.x4-nbr .x4-window-header-default-collapsed-left-bl,.x4-nbr .x4-window-header-default-collapsed-left-tr,.x4-nbr .x4-window-header-default-collapsed-left-br,.x4-nbr .x4-window-header-default-collapsed-left-tc,.x4-nbr .x4-window-header-default-collapsed-left-bc,.x4-nbr .x4-window-header-default-collapsed-left-ml,.x4-nbr .x4-window-header-default-collapsed-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-left-corners.gif')}.x4-nbr .x4-window-header-default-collapsed-left-ml,.x4-nbr .x4-window-header-default-collapsed-left-mr{zoom:1;background-image:url('../../resources/themes/images/default/window-header/window-header-default-collapsed-left-sides.gif');background-position:0 0;background-repeat:repeat-y}.x4-nbr .x4-window-header-default-collapsed-left-mc{padding:1px 0 1px 0}.x4-strict .x4-ie7 .x4-window-header-default-collapsed-left-tl,.x4-strict .x4-ie7 .x4-window-header-default-collapsed-left-bl{position:relative;right:0}.x4-window-header-default-top{-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x4-window-header-default-right{-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset}.x4-window-header-default-bottom{-moz-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x4-window-header-default-left{-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x4-window-body-plain{background:transparent}.x4-message-box .x4-window-body{background-color:#ced9e7;border:0}.x4-message-box .x4-progress-wrap{margin-top:4px}.x4-message-box-icon{width:47px;height:32px}.x4-message-box-info,.x4-message-box-warning,.x4-message-box-question,.x4-message-box-error{background:transparent no-repeat top left}.x4-message-box .x4-msg-box-wait{background-image:url('../../resources/themes/images/default/shared/blue-loading.gif')}.x4-message-box-info{background-image:url('../../resources/themes/images/default/shared/icon-info.gif')}.x4-message-box-warning{background-image:url('../../resources/themes/images/default/shared/icon-warning.gif')}.x4-message-box-question{background-image:url('../../resources/themes/images/default/shared/icon-question.gif')}.x4-message-box-error{background-image:url('../../resources/themes/images/default/shared/icon-error.gif')}.x4-tab-bar{position:relative;background-color:transparent;background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(top,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(top,#dde8f5,#cbdbef);background-image:-o-linear-gradient(top,#dde8f5,#cbdbef);background-image:-ms-linear-gradient(top,#dde8f5,#cbdbef);background-image:linear-gradient(top,#dde8f5,#cbdbef);font-size:11px}.x4-nlg .x4-tab-bar{background-image:url('../../resources/themes/images/default/tab-bar/tab-bar-default-bg.gif')}.x4-tab-bar-default-plain,.x4-nlg .x4-tab-bar-default-plain{background:transparent none}.x4-tab-bar-body{border-style:solid;border-color:#99bce8;position:relative;z-index:2;zoom:1}.x4-tab-bar-top .x4-tab-bar-body{height:20px;border-width:1px 1px 0;padding:1px 0 3px}.x4-tab-bar-top .x4-tab-bar-strip{top:22px;border-width:1px 1px 0;height:2px}.x4-border-box .x4-tab-bar-top .x4-tab-bar-body{height:25px}.x4-border-box .x4-tab-bar-top .x4-tab-bar-strip{height:3px}.x4-tab-bar-top .x4-tab-bar-body-default-plain{height:20px;border-width:0;padding:0 0 2px}.x4-tab-bar-top .x4-tab-bar-strip-default-plain{top:20px;border-width:1px 1px 0 1px;height:2px}.x4-border-box .x4-tab-bar-top .x4-tab-bar-body-default-plain{height:22px}.x4-border-box .x4-tab-bar-top .x4-tab-bar-strip-default-plain{height:3px}.x4-tab-bar-bottom .x4-tab-bar-body{height:20px;border-width:0 1px 1px;padding:3px 0 1px}.x4-tab-bar-bottom .x4-tab-bar-body .x4-box-inner{position:relative;top:-1px}.x4-tab-bar-bottom .x4-tab-bar-body .x4-box-scroller,.x4-tab-bar-bottom .x4-tab-bar-body .x4-box-scroller-left,.x4-tab-bar-bottom .x4-tab-bar-body .x4-box-scroller-right{height:22px}.x4-tab-bar-bottom .x4-tab-bar-strip{top:0;border-width:0 1px 1px 1px;height:2px}.x4-border-box .x4-tab-bar-bottom .x4-tab-bar-body{height:25px}.x4-border-box .x4-tab-bar-bottom .x4-tab-bar-strip{height:3px}.x4-tab-bar-bottom .x4-tab-bar-body-default-plain{height:20px;border-width:0;padding:3px 0 0}.x4-tab-bar-bottom .x4-tab-bar-body-default-plain .x4-box-inner{position:relative;top:-1px}.x4-tab-bar-bottom .x4-tab-bar-body-default-plain .x4-box-scroller,.x4-tab-bar-bottom .x4-tab-bar-body-default-plain .x4-box-scroller-left,.x4-tab-bar-bottom .x4-tab-bar-body-default-plain .x4-box-scroller-right{height:21px}.x4-tab-bar-bottom .x4-tab-bar-strip-default-plain{top:0;border-width:0 1px 1px 1px;height:2px}.x4-border-box .x4-tab-bar-bottom .x4-tab-bar-body-default-plain{height:23px}.x4-border-box .x4-tab-bar-bottom .x4-tab-bar-strip-default-plain{height:3px}.x4-tab-bar-strip-default,.x4-tab-bar-strip-default-plain{font-size:0;line-height:0;position:absolute;z-index:1;border-style:solid;overflow:hidden;border-color:#99bce8;background-color:#deecfd;zoom:1}.x4-tab-default-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 3px 0 3px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-ms-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x4-nlg .x4-tab-default-top-mc{background-image:url('../../resources/themes/images/default/tab/tab-default-top-bg.gif');background-color:#deecfd}.x4-nbr .x4-tab-default-top{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100404px 1000000px}.x4-nbr .x4-tab-default-top-tl,.x4-nbr .x4-tab-default-top-bl,.x4-nbr .x4-tab-default-top-tr,.x4-nbr .x4-tab-default-top-br,.x4-nbr .x4-tab-default-top-tc,.x4-nbr .x4-tab-default-top-bc,.x4-nbr .x4-tab-default-top-ml,.x4-nbr .x4-tab-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/tab/tab-default-top-corners.gif')}.x4-nbr .x4-tab-default-top-ml,.x4-nbr .x4-tab-default-top-mr{zoom:1;background-image:url('../../resources/themes/images/default/tab/tab-default-top-sides.gif');background-position:0 0}.x4-nbr .x4-tab-default-top-mc{padding:0}.x4-strict .x4-ie7 .x4-tab-default-top-tl,.x4-strict .x4-ie7 .x4-tab-default-top-bl{position:relative;right:0}.x4-tab-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:0 3px 3px 3px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-ms-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x4-nlg .x4-tab-default-bottom-mc{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif');background-color:#deecfd}.x4-nbr .x4-tab-default-bottom{padding:0!important;border-width:0!important;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;background-color:transparent;background-position:1100000px 1000404px}.x4-nbr .x4-tab-default-bottom-tl,.x4-nbr .x4-tab-default-bottom-bl,.x4-nbr .x4-tab-default-bottom-tr,.x4-nbr .x4-tab-default-bottom-br,.x4-nbr .x4-tab-default-bottom-tc,.x4-nbr .x4-tab-default-bottom-bc,.x4-nbr .x4-tab-default-bottom-ml,.x4-nbr .x4-tab-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-corners.gif')}.x4-nbr .x4-tab-default-bottom-ml,.x4-nbr .x4-tab-default-bottom-mr{zoom:1;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-sides.gif');background-position:0 0}.x4-nbr .x4-tab-default-bottom-mc{padding:0}.x4-strict .x4-ie7 .x4-tab-default-bottom-tl,.x4-strict .x4-ie7 .x4-tab-default-bottom-bl{position:relative;right:0}.x4-tab{z-index:1;margin:0 0 0 2px;display:inline-block;zoom:1;*display:inline;white-space:nowrap;height:20px;border-color:#8db3e3;cursor:pointer;cursor:hand}.x4-tab button{cursor:pointer;cursor:hand}.x4-tab em{display:block;padding:0 6px;line-height:1px}.x4-tab button{background:0;border:0;padding:0;margin:0;-webkit-appearance:none;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;color:#416da3;outline:0 none;overflow-x:visible}.x4-tab button::-moz-focus-inner{border:0;padding:0}.x4-tab button .x4-tab-inner{background-color:transparent;background-repeat:no-repeat;background-position:0 -2px;display:block;text-align:center;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden}.x4-tab img{display:none}.x4-border-box .x4-tab-default-top{height:21px}.x4-border-box .x4-tab-default-bottom{height:21px}* html .x4-ie .x4-tab button{width:1px}.x4-strict .x4-ie6 .x4-tab .x4-frame-mc,.x4-strict .x4-ie7 .x4-tab .x4-frame-mc{height:100%}.x4-ie .x4-tab-active button:active{position:relative;top:-1px;left:-1px}.x4-tab-default-top{-moz-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-webkit-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-o-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;border-bottom:1px solid #99bce8!important}.x4-tab-default-top em{padding-bottom:3px}.x4-tab-default-top button,.x4-tab-default-top .x4-tab-inner{height:13px;line-height:13px}.x4-safari4 .x4-tab-default-top .x4-tab-inner,.x4-safari5_0 .x4-tab-default-top .x4-tab-inner{line-height:11px}.x4-nbr .x4-tab-default-top{border-bottom-width:1px!important}.x4-tab-default-top-active{border-bottom-color:#deecfd!important}.x4-tab-default-bottom{-moz-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-webkit-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-o-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;border-top:1px solid #99bce8!important;-moz-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-webkit-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-o-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x4-tab-default-bottom em{padding-top:3px}.x4-tab-default-bottom button,.x4-tab-default-bottom .x4-tab-inner{height:13px;line-height:13px}.x4-nbr .x4-tab-default-bottom{border-top-width:1px!important}.x4-tab-default-bottom-active{border-top-color:#deecfd!important}.x4-tab-default-disabled{cursor:default;border-color:#bbd2ef;background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-ms-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:linear-gradient(top,#e1ecfa,#ecf4fe)}.x4-tab-default-disabled button{color:#c3b3b3!important}.x4-tab-icon-text-left .x4-tab-inner{padding-left:20px}.x4-tab button{position:relative}.x4-tab-icon{position:absolute;background-repeat:no-repeat;background-position:0 -1px;top:0;left:0;right:auto;bottom:0;width:18px;height:18px}.x4-strict .x4-ie8 .x4-tab button,.x4-strict .x4-ie9 .x4-tab button{overflow-y:visible}.x4-tab-default-disabled .x4-tab-icon{filter:alpha(opacity=50);opacity:.5}.x4-tab-noicon .x4-tab-icon{display:none}.x4-tab-top-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-ms-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x4-tab-bottom-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-ms-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x4-tab-active{z-index:3}.x4-tab-active button{color:#15498b}.x4-tab-top-active{background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-ms-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%)}.x4-tab-bottom-active{background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-ms-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%)}.x4-tab-disabled{border-color:#bbd2ef}.x4-tab-disabled button{color:#c3b3b3}.x4-tab-top-disabled{background-image:none;background:transparent;background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-ms-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:linear-gradient(top,#e1ecfa,#ecf4fe)}.x4-tab-bottom-disabled{background-image:none;background:transparent;background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-ms-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:linear-gradient(bottom,#e1ecfa,#ecf4fe)}.x4-nlg .x4-tab-top{background-image:url('../../resources/themes/images/default/tab/tab-default-top-bg.gif')}.x4-nlg .x4-tab-bottom{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif')}.x4-nlg .x4-tab-top-over{background-image:url('../../resources/themes/images/default/tab/tab-default-top-over-bg.gif')}.x4-nlg .x4-tab-bottom-over{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-over-bg.gif')}.x4-nlg .x4-tab-top-active{background-image:url('../../resources/themes/images/default/tab/tab-default-top-active-bg.gif')}.x4-nlg .x4-tab-bottom-active{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-active-bg.gif')}.x4-nlg .x4-tab-top-disabled{background-image:url('../../resources/themes/images/default/tab/tab-default-top-disabled-bg.gif')!important}.x4-nlg .x4-tab-bottom-disabled{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif')!important}.x4-tab-closable em{padding-right:14px}.x4-tab-close-btn{position:absolute;top:2px;right:2px;width:11px;height:11px;font-size:0;line-height:0;text-indent:-999px;background:no-repeat;background-image:url('../../resources/themes/images/default/tab/tab-default-close.gif');filter:alpha(opacity=60);opacity:.6}.x4-nbr .x4-tab-close-btn{top:0;right:0}a.x4-tab-close-btn:hover{filter:alpha(opacity=100);opacity:1}.x4-tab-default-disabled a.x4-tab-close-btn{filter:alpha(opacity=30);opacity:.3}.x4-nbr .x4-tab-top-over .x4-frame-tl,.x4-nbr .x4-tab-top-over .x4-frame-bl,.x4-nbr .x4-tab-top-over .x4-frame-tr,.x4-nbr .x4-tab-top-over .x4-frame-br,.x4-nbr .x4-tab-top-over .x4-frame-tc,.x4-nbr .x4-tab-top-over .x4-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-top-over-corners.gif')}.x4-nbr .x4-tab-top-over .x4-frame-ml,.x4-nbr .x4-tab-top-over .x4-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-top-over-sides.gif')}.x4-nbr .x4-tab-top-over .x4-frame-mc{background-color:#e8f2ff;background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-top-over-bg.gif')}.x4-nbr .x4-tab-bottom-over .x4-frame-tl,.x4-nbr .x4-tab-bottom-over .x4-frame-bl,.x4-nbr .x4-tab-bottom-over .x4-frame-tr,.x4-nbr .x4-tab-bottom-over .x4-frame-br,.x4-nbr .x4-tab-bottom-over .x4-frame-tc,.x4-nbr .x4-tab-bottom-over .x4-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-over-corners.gif')}.x4-nbr .x4-tab-bottom-over .x4-frame-ml,.x4-nbr .x4-tab-bottom-over .x4-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-over-sides.gif')}.x4-nbr .x4-tab-bottom-over .x4-frame-mc{background-color:#e8f2ff;background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-over-bg.gif')}.x4-nbr .x4-tab-top-active .x4-frame-tl,.x4-nbr .x4-tab-top-active .x4-frame-bl,.x4-nbr .x4-tab-top-active .x4-frame-tr,.x4-nbr .x4-tab-top-active .x4-frame-br,.x4-nbr .x4-tab-top-active .x4-frame-tc,.x4-nbr .x4-tab-top-active .x4-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-top-active-corners.gif')}.x4-nbr .x4-tab-top-active .x4-frame-ml,.x4-nbr .x4-tab-top-active .x4-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-top-active-sides.gif')}.x4-nbr .x4-tab-top-active .x4-frame-mc{background-color:#deecfd;background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-top-active-bg.gif')}.x4-nbr .x4-tab-bottom-active .x4-frame-tl,.x4-nbr .x4-tab-bottom-active .x4-frame-bl,.x4-nbr .x4-tab-bottom-active .x4-frame-tr,.x4-nbr .x4-tab-bottom-active .x4-frame-br,.x4-nbr .x4-tab-bottom-active .x4-frame-tc,.x4-nbr .x4-tab-bottom-active .x4-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-active-corners.gif')}.x4-nbr .x4-tab-bottom-active .x4-frame-ml,.x4-nbr .x4-tab-bottom-active .x4-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-active-sides.gif')}.x4-nbr .x4-tab-bottom-active .x4-frame-mc{background-color:#deecfd;background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-active-bg.gif')}.x4-nbr .x4-tab-top-disabled .x4-frame-tl,.x4-nbr .x4-tab-top-disabled .x4-frame-bl,.x4-nbr .x4-tab-top-disabled .x4-frame-tr,.x4-nbr .x4-tab-top-disabled .x4-frame-br,.x4-nbr .x4-tab-top-disabled .x4-frame-tc,.x4-nbr .x4-tab-top-disabled .x4-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-top-disabled-corners.gif')}.x4-nbr .x4-tab-top-disabled .x4-frame-ml,.x4-nbr .x4-tab-top-disabled .x4-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-top-disabled-sides.gif')}.x4-nbr .x4-tab-top-disabled .x4-frame-mc{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-top-disabled-bg.gif')}.x4-nbr .x4-tab-bottom-disabled .x4-frame-tl,.x4-nbr .x4-tab-bottom-disabled .x4-frame-bl,.x4-nbr .x4-tab-bottom-disabled .x4-frame-tr,.x4-nbr .x4-tab-bottom-disabled .x4-frame-br,.x4-nbr .x4-tab-bottom-disabled .x4-frame-tc,.x4-nbr .x4-tab-bottom-disabled .x4-frame-bc{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-corners.gif')}.x4-nbr .x4-tab-bottom-disabled .x4-frame-ml,.x4-nbr .x4-tab-bottom-disabled .x4-frame-mr{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-sides.gif')}.x4-nbr .x4-tab-bottom-disabled .x4-frame-mc{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif')}.x4-autowidth-table table.x4-grid-table{table-layout:auto;width:auto!important}.x4-tree-no-lines .x4-tree-elbow{background-color:transparent}.x4-tree-no-lines .x4-tree-elbow-end{background-color:transparent}.x4-tree-no-lines .x4-tree-elbow-line{background-color:transparent}.x4-tree-arrows .x4-tree-elbow-plus{background:transparent no-repeat 0 0}.x4-tree-arrows .x4-tree-elbow-end-plus{background:transparent no-repeat 0 0}.x4-tree-arrows .x4-tree-elbow-end-minus{background:transparent no-repeat -16px 0}.x4-tree-arrows .x4-tree-elbow-minus{background:transparent no-repeat -16px 0}.x4-tree-arrows .x4-tree-elbow{background-color:transparent!important}.x4-tree-arrows .x4-tree-elbow-end{background-color:transparent!important}.x4-tree-arrows .x4-tree-elbow-line{background-color:transparent!important}.x4-tree-arrows .x4-tree-expander-over .x4-tree-elbow-plus,.x4-tree-arrows .x4-tree-expander-over .x4-tree-elbow-end-plus{background-position:-32px 0}.x4-tree-arrows .x4-tree-expander-over .x4-tree-elbow-minus,.x4-tree-arrows .x4-tree-expander-over .x4-tree-elbow-end-minus{background-position:-48px 0}.x4-tree-arrows .x4-grid-tree-node-expanded .x4-tree-elbow-plus,.x4-tree-arrows .x4-grid-tree-node-expanded .x4-tree-elbow-end-plus{background-position:-16px 0}.x4-tree-arrows .x4-grid-tree-node-expanded .x4-tree-expander-over .x4-tree-elbow-plus,.x4-tree-arrows .x4-grid-tree-node-expanded .x4-tree-expander-over .x4-tree-elbow-end-plus{background-position:-48px 0}.x4-tree-elbow-plus,.x4-tree-elbow-minus,.x4-tree-elbow-end-plus,.x4-tree-elbow-end-minus{cursor:pointer}.x4-tree-lines .x4-tree-elbow{background-image:url('../../resources/themes/images/default/tree/elbow.gif')}.x4-tree-lines .x4-tree-elbow-end{background-image:url('../../resources/themes/images/default/tree/elbow-end.gif')}.x4-tree-lines .x4-tree-elbow-plus{background-image:url('../../resources/themes/images/default/tree/elbow-plus.gif')}.x4-tree-lines .x4-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-end-plus.gif')}.x4-tree-lines .x4-grid-tree-node-expanded .x4-tree-elbow-plus{background-image:url('../../resources/themes/images/default/tree/elbow-minus.gif')}.x4-tree-lines .x4-grid-tree-node-expanded .x4-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-end-minus.gif')}.x4-tree-lines .x4-tree-elbow-line{background-image:url('../../resources/themes/images/default/tree/elbow-line.gif')}.x4-tree-no-lines .x4-tree-elbow-plus,.x4-tree-no-lines .x4-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-plus-nl.gif')}.x4-tree-no-lines .x4-grid-tree-node-expanded .x4-tree-elbow-plus,.x4-tree-no-lines .x4-grid-tree-node-expanded .x4-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-end-minus-nl.gif')}.x4-tree-arrows .x4-tree-elbow-plus,.x4-tree-arrows .x4-tree-elbow-minus,.x4-tree-arrows .x4-tree-elbow-end-plus,.x4-tree-arrows .x4-tree-elbow-end-minus{background-image:url('../../resources/themes/images/default/tree/arrows.gif')}.x4-tree-icon{margin:2px 3px 0 0}.x4-grid-with-row-lines .x4-tree-icon{margin-top:1px}.x4-tree-elbow,.x4-tree-elbow-end,.x4-tree-elbow-plus,.x4-tree-elbow-end-plus,.x4-tree-elbow-empty,.x4-tree-elbow-line{height:20px;width:16px}.x4-grid-with-row-lines .x4-tree-elbow,.x4-grid-with-row-lines .x4-tree-elbow-end,.x4-grid-with-row-lines .x4-tree-elbow-plus,.x4-grid-with-row-lines .x4-tree-elbow-end-plus,.x4-grid-with-row-lines .x4-tree-elbow-empty,.x4-grid-with-row-lines .x4-tree-elbow-line{height:19px;background-position:0 -1px}.x4-tree-icon-leaf{width:16px;background-image:url('../../resources/themes/images/default/tree/leaf.gif')}.x4-tree-icon-parent{width:16px;background-image:url('../../resources/themes/images/default/tree/folder.gif')}.x4-grid-tree-node-expanded .x4-tree-icon-parent{background-image:url('../../resources/themes/images/default/tree/folder-open.gif')}.x4-grid-rowbody{padding:0}.x4-grid-cell-treecolumn .x4-grid-cell-inner{padding:0;line-height:19px}.x4-grid-with-row-lines .x4-grid-cell-treecolumn .x4-grid-cell-inner{line-height:17px}.x4-tree-panel .x4-grid-cell-inner{cursor:pointer}.x4-tree-panel .x4-grid-cell-inner img{display:inline-block;vertical-align:top}.x4-ie .x4-tree-panel .x4-tree-elbow,.x4-ie .x4-tree-panel .x4-tree-elbow-end,.x4-ie .x4-tree-panel .x4-tree-elbow-plus,.x4-ie .x4-tree-panel .x4-tree-elbow-end-plus,.x4-ie .x4-tree-panel .x4-tree-elbow-empty,.x4-ie .x4-tree-panel .x4-tree-elbow-line{vertical-align:-6px}.x4-grid-editor-on-text-node .x4-form-text{padding-left:1px;padding-right:1px}.x4-ie .x4-grid-editor-on-text-node .x4-form-text{padding-left:2px;padding-right:2px}.x4-opera .x4-grid-editor-on-text-node .x4-form-text{padding-left:2px;padding-right:2px}.x4-tree-checkbox{margin:4px 3px 0 0;display:inline-block;vertical-align:top;width:13px;height:13px;background:no-repeat;background-image:url('../../resources/themes/images/default/form/checkbox.gif');overflow:hidden;padding:0;border:0}.x4-tree-checkbox::-moz-focus-inner{padding:0;border:0}.x4-grid-with-row-lines .x4-tree-checkbox{margin-top:3px}.x4-tree-checkbox-checked{background-position:0 -13px}.x4-tree-drop-ok-append .x4-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-append.gif')}.x4-tree-drop-ok-above .x4-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-above.gif')}.x4-tree-drop-ok-below .x4-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-below.gif')}.x4-tree-drop-ok-between .x4-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-between.gif')}.x4-grid-tree-loading .x4-tree-icon{background-image:url('../../resources/themes/images/default/tree/loading.gif')}.x4-tree-ddindicator{height:1px;border-width:1px 0 0;border-style:dotted;border-color:green}.x4-grid-tree-loading span{font-style:italic;color:#444}.x4-tree-animator-wrap{overflow:hidden}.x4-surface{display:-moz-inline-box;-moz-box-orient:vertical;display:inline-block;vertical-align:middle;*vertical-align:auto;overflow:hidden}.x4-surface{*display:inline}.rvml{behavior:url(#default#VML)}.x4-surface tspan{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x4-vml-sprite{position:absolute;left:0;top:0;width:1px;height:1px}.x4-vml-group{position:absolute;left:0;top:0;width:1000px;height:1000px}.x4-vml-measure-span{position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;display:inline}.x4-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}.x4-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}svg,vml{overflow:hidden}.x4-viewport,.x4-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;position:static}.x4-dd-drag-proxy{z-index:1000000!important}.x4-dd-drag-repair .x4-dd-drag-ghost{filter:alpha(opacity=60);opacity:.6}.x4-dd-drag-repair .x4-dd-drop-icon{display:none}.x4-dd-drag-ghost{filter:alpha(opacity=85);opacity:.85;padding:5px;padding-left:20px;white-space:nowrap;color:#000;font:normal 11px tahoma,arial,verdana,sans-serif;border:1px solid;border-color:#ddd #bbb #bbb #ddd;background-color:#fff}.x4-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1}.x4-view-selector{position:absolute;left:0;top:0;width:0;background-color:#c3daf9;border:1px dotted #39b;filter:alpha(opacity=50);opacity:.5;zoom:1}.x4-dd-drop-nodrop .x4-dd-drop-icon{background-image:url('../../resources/themes/images/default/dd/drop-no.gif')}.x4-dd-drop-ok .x4-dd-drop-icon{background-image:url('../../resources/themes/images/default/dd/drop-yes.gif')}.x4-dd-drop-ok-add .x4-dd-drop-icon{background-image:url('../../resources/themes/images/default/dd/drop-add.gif')}.x4-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;zoom:1;filter:alpha(opacity=0);opacity:0;background-color:#fff}.x4-collapsed .x4-resizable-handle{display:none}.x4-resizable-handle-east{width:6px;height:100%;right:0;top:0}.x4-resizable-over .x4-resizable-handle-east{cursor:e-resize}.x4-resizable-handle-south{width:100%;height:6px;left:0;bottom:0}.x4-resizable-over .x4-resizable-handle-south{cursor:s-resize}.x4-resizable-handle-west{width:6px;height:100%;left:0;top:0}.x4-resizable-over .x4-resizable-handle-west{cursor:w-resize}.x4-resizable-handle-north{width:100%;height:6px;left:0;top:0}.x4-resizable-over .x4-resizable-handle-north{cursor:n-resize}.x4-resizable-handle-southeast{width:6px;height:6px;right:0;bottom:0;z-index:101}.x4-resizable-over .x4-resizable-handle-southeast{cursor:se-resize}.x4-resizable-handle-northwest{width:6px;height:6px;left:0;top:0;z-index:101}.x4-resizable-over .x4-resizable-handle-northwest{cursor:nw-resize}.x4-resizable-handle-northeast{width:6px;height:6px;right:0;top:0;z-index:101}.x4-resizable-over .x4-resizable-handle-northeast{cursor:ne-resize}.x4-resizable-handle-southwest{width:6px;height:6px;left:0;bottom:0;z-index:101}.x4-resizable-over .x4-resizable-handle-southwest{cursor:sw-resize}.x4-ie .x4-resizable-handle-east{margin-right:-1px}.x4-ie .x4-resizable-handle-south{margin-bottom:-1px}.x4-resizable-over .x4-resizable-handle,.x4-resizable-pinned .x4-resizable-handle{filter:alpha(opacity=100);opacity:1}.x4-window .x4-window-handle{filter:alpha(opacity=0);opacity:0}.x4-window-collapsed .x4-window-handle{display:none}.x4-resizable-proxy{border:1px dashed #3b5a82;position:absolute;left:0;top:0;overflow:hidden;z-index:50000}.x4-resizable-overlay{position:absolute;left:0;top:0;width:100%;height:100%;display:none;z-index:200000;background-color:#fff;filter:alpha(opacity=0);opacity:0}.x4-resizable-over .x4-resizable-handle-east,.x4-resizable-over .x4-resizable-handle-west,.x4-resizable-pinned .x4-resizable-handle-east,.x4-resizable-pinned .x4-resizable-handle-west{background-position:left;background-image:url('../../resources/themes/images/default/sizer/e-handle.gif')}.x4-resizable-over .x4-resizable-handle-south,.x4-resizable-over .x4-resizable-handle-north,.x4-resizable-pinned .x4-resizable-handle-south,.x4-resizable-pinned .x4-resizable-handle-north{background-position:top;background-image:url('../../resources/themes/images/default/sizer/s-handle.gif')}.x4-resizable-over .x4-resizable-handle-southeast,.x4-resizable-pinned .x4-resizable-handle-southeast{background-position:top left;background-image:url('../../resources/themes/images/default/sizer/se-handle.gif')}.x4-resizable-over .x4-resizable-handle-northwest,.x4-resizable-pinned .x4-resizable-handle-northwest{background-position:bottom right;background-image:url('../../resources/themes/images/default/sizer/nw-handle.gif')}.x4-resizable-over .x4-resizable-handle-northeast,.x4-resizable-pinned .x4-resizable-handle-northeast{background-position:bottom left;background-image:url('../../resources/themes/images/default/sizer/ne-handle.gif')}.x4-resizable-over .x4-resizable-handle-southwest,.x4-resizable-pinned .x4-resizable-handle-southwest{background-position:top right;background-image:url('../../resources/themes/images/default/sizer/sw-handle.gif')}.x4-splitter .x4-collapse-el{position:absolute;cursor:pointer;background-color:transparent;background-repeat:no-repeat!important}.x4-layout-split-left,.x4-layout-split-right{top:50%;margin-top:-17px;width:5px;height:35px}.x4-layout-split-top,.x4-layout-split-bottom{left:50%;width:35px;height:5px;margin-left:-17px}.x4-layout-split-left{background:no-repeat top right;background-image:url('../../resources/themes/images/default/util/splitter/mini-left.gif')}.x4-layout-split-right{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-right.gif')}.x4-layout-split-top{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-top.gif')}.x4-layout-split-bottom{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-bottom.gif')}.x4-splitter-collapsed .x4-layout-split-left{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-right.gif')}.x4-splitter-collapsed .x4-layout-split-right{background:no-repeat top right;background-image:url('../../resources/themes/images/default/util/splitter/mini-left.gif')}.x4-splitter-collapsed .x4-layout-split-top{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-bottom.gif')}.x4-splitter-collapsed .x4-layout-split-bottom{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-top.gif')}.x4-splitter-horizontal{cursor:e-resize;cursor:row-resize;font-size:1px}.x4-splitter-vertical{cursor:e-resize;cursor:col-resize;font-size:1px}.x4-splitter-collapsed,.x4-splitter-horizontal-noresize,.x4-splitter-vertical-noresize{cursor:default}.x4-splitter-active{z-index:4;font-size:1px;background-color:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x4-splitter-active .x4-collapse-el{filter:alpha(opacity=30);opacity:.3}.x4-proxy-el{position:absolute;background:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x4-docked{position:absolute!important;z-index:1}.x4-docked-top{border-bottom-width:0!important}.x4-docked-bottom{border-top-width:0!important}.x4-docked-left{border-right-width:0!important}.x4-docked-right{border-left-width:0!important}.x4-docked-noborder-top{border-top-width:0!important}.x4-docked-noborder-right{border-right-width:0!important}.x4-docked-noborder-bottom{border-bottom-width:0!important}.x4-docked-noborder-left{border-left-width:0!important}.x4-box-inner{overflow:hidden;zoom:1;position:relative;left:0;top:0}.x4-box-item{position:absolute!important;left:0;top:0}.x4-rtl .x4-box-item{right:0;left:auto}.x4-box-layout-ct,.x4-border-layout-ct{overflow:hidden;zoom:1}.x4-border-layout-ct{background-color:#dfe8f6;position:relative}.x4-overflow-hidden{overflow:hidden!important}.x4-inline-children>*{display:inline-block!important}.x4-abs-layout-ct{position:relative}.x4-abs-layout-item{position:absolute!important}.x4-fit-item{position:relative}.x4-border-region-slide-in{z-index:5}.x4-region-collapsed-placeholder{z-index:4}.x4-accordion-hd .x4-panel-header-text{color:black;font-weight:normal}.x4-accordion-hd{background:#d9e7f8!important;-moz-box-shadow:inset 0 0 0 0 #d9e7f8;-webkit-box-shadow:inset 0 0 0 0 #d9e7f8;-o-box-shadow:inset 0 0 0 0 #d9e7f8;box-shadow:inset 0 0 0 0 #d9e7f8}.x4-accordion-hd .x4-tool-collapse-top,.x4-accordion-hd .x4-tool-collapse-right,.x4-accordion-hd .x4-tool-collapse-bottom,.x4-accordion-hd .x4-tool-collapse-left{background-position:0 -255px}.x4-accordion-hd .x4-tool-expand-top,.x4-accordion-hd .x4-tool-expand-right,.x4-accordion-hd .x4-tool-expand-bottom,.x4-accordion-hd .x4-tool-expand-left{background-position:0 -240px}.x4-accordion-hd .x4-tool-over .x4-tool-collapse-top,.x4-accordion-hd .x4-tool-over .x4-tool-collapse-right,.x4-accordion-hd .x4-tool-over .x4-tool-collapse-bottom,.x4-accordion-hd .x4-tool-over .x4-tool-collapse-left{background-position:-15px -255px}.x4-accordion-hd .x4-tool-over .x4-tool-expand-top,.x4-accordion-hd .x4-tool-over .x4-tool-expand-right,.x4-accordion-hd .x4-tool-over .x4-tool-expand-bottom,.x4-accordion-hd .x4-tool-over .x4-tool-expand-left{background-position:-15px -240px}.x4-accordion-hd{border-width:1px 0 1px 0!important;padding:4px 5px 5px 5px;border-top-color:#f3f7fb!important}.x4-accordion-body{border-width:0!important}.x4-accordion-hd-sibling-expanded{border-top-color:#99bce8!important;-moz-box-shadow:inset 0 1px 0 0 #f3f7fb;-webkit-box-shadow:inset 0 1px 0 0 #f3f7fb;-o-box-shadow:inset 0 1px 0 0 #f3f7fb;box-shadow:inset 0 1px 0 0 #f3f7fb}.x4-accordion-hd-last-collapsed{border-bottom-color:#d9e7f8!important}.x4-frame-tl,.x4-frame-tr,.x4-frame-tc,.x4-frame-bl,.x4-frame-br,.x4-frame-bc{overflow:hidden;background-repeat:no-repeat}.x4-frame-tc,.x4-frame-bc{background-repeat:repeat-x}.x4-frame-mc{position:relative;background-repeat:repeat-x;overflow:hidden}.x4-box-scroller-left{float:left;height:100%;z-index:5}.x4-box-scroller-left .x4-toolbar-scroll-left,.x4-box-scroller-left .x4-tabbar-scroll-left{width:18px;position:relative;cursor:pointer;height:20px;background:transparent no-repeat -18px 0;background-image:url('../../resources/themes/images/default/tab-bar/scroll-left.gif')}.x4-box-scroller-left .x4-toolbar-scroll-left-hover{background-position:0 0}.x4-box-scroller-left .x4-toolbar-scroll-left-disabled,.x4-box-scroller-left .x4-tabbar-scroll-left-disabled{background-position:-18px 0;filter:alpha(opacity=50);opacity:.5;cursor:default}.x4-box-scroller-left .x4-toolbar-scroll-left{background-image:url('../../resources/themes/images/default/toolbar/scroll-left.gif');background-position:-14px 0}.x4-box-scroller-left .x4-toolbar-scroll-left-hover{background-position:0 0}.x4-box-scroller-left .x4-toolbar-scroll-left-disabled{background-position:-14px 0}.x4-box-scroller-left .x4-toolbar-scroll-left{width:14px;height:22px;border-bottom:1px solid #8db2e3}.x4-horizontal-box-overflow-body{float:left}.x4-box-scroller-right{float:right;height:100%;z-index:5}.x4-box-scroller-right .x4-toolbar-scroll-right,.x4-box-scroller-right .x4-tabbar-scroll-right{width:18px;position:relative;cursor:pointer;height:20px;background:transparent no-repeat 0 0;background-image:url('../../resources/themes/images/default/tab-bar/scroll-right.gif')}.x4-box-scroller-right .x4-toolbar-scroll-right-hover{background-position:-18px 0}.x4-box-scroller-right .x4-toolbar-scroll-right-disabled,.x4-box-scroller-right .x4-tabbar-scroll-right-disabled{background-position:0 0;filter:alpha(opacity=50);opacity:.5;cursor:default}.x4-box-scroller-right .x4-toolbar-scroll-right{background-image:url('../../resources/themes/images/default/toolbar/scroll-right.gif')}.x4-box-scroller-right .x4-toolbar-scroll-right-hover{background-position:-14px 0}.x4-box-scroller-right .x4-toolbar-scroll-right-disabled{background-position:0 0}.x4-box-scroller-right .x4-toolbar-scroll-right{width:14px;height:22px;border-bottom:1px solid #8db2e3}.x4-box-scroller-top .x4-box-scroller{line-height:0;font-size:0}.x4-box-scroller-top .x4-menu-scroll-top{background:transparent no-repeat center center;background-image:url('../../resources/themes/images/default/layout/mini-top.gif');height:8px;cursor:pointer}.x4-box-scroller-bottom .x4-box-scroller{line-height:0;font-size:0}.x4-box-scroller-bottom .x4-menu-scroll-bottom{background:transparent no-repeat center center;background-image:url('../../resources/themes/images/default/layout/mini-bottom.gif');height:8px;cursor:pointer}.x4-box-menu-right{float:right;padding-right:2px}.x4-column{float:left}.x4-ie6 .x4-column{display:inline}.x4-quirks .x4-ie .x4-form-layout-table,.x4-quirks .x4-ie .x4-form-layout-table tbody tr.x4-form-item{position:relative}.x4-tool{height:15px}.x4-tool img{overflow:hidden;width:15px;height:15px;cursor:pointer;background-color:transparent;background-repeat:no-repeat;background-image:url('../../resources/themes/images/default/tools/tool-sprites.gif');margin:0}.x4-panel-header-horizontal .x4-tool,.x4-window-header-horizontal .x4-tool{margin-left:2px}.x4-panel-header-vertical .x4-tool,.x4-window-header-vertical .x4-tool{margin-top:2px}.x4-panel-header-vertical .x4-tool-top,.x4-window-header-vertical .x4-tool-top{margin:0 0 4px}.x4-tool-placeholder{visibility:hidden}.x4-tool-toggle{background-position:0 -60px}.x4-tool-over .x4-tool-toggle{background-position:-15px -60px}.x4-panel-collapsed .x4-tool-toggle,.x4-fieldset-collapsed .x4-tool-toggle{background-position:0 -75px}.x4-panel-collapsed .x4-tool-over .x4-tool-toggle,.x4-fieldset-collapsed .x4-tool-over .x4-tool-toggle{background-position:-15px -75px}.x4-tool-close{background-position:0 0}.x4-tool-minimize{background-position:0 -15px}.x4-tool-maximize{background-position:0 -30px}.x4-tool-restore{background-position:0 -45px}.x4-tool-gear{background-position:0 -90px}.x4-tool-prev{background-position:0 -105px}.x4-tool-next{background-position:0 -120px}.x4-tool-pin{background-position:0 -135px}.x4-tool-unpin{background-position:0 -150px}.x4-tool-right{background-position:0 -165px}.x4-tool-left{background-position:0 -180px}.x4-tool-help{background-position:0 -300px}.x4-tool-save{background-position:0 -285px}.x4-tool-search{background-position:0 -270px}.x4-tool-minus{background-position:0 -255px}.x4-tool-plus{background-position:0 -240px}.x4-tool-refresh{background-position:0 -225px}.x4-tool-up{background-position:0 -210px}.x4-tool-down{background-position:0 -195px}.x4-tool-collapse{background-position:0 -345px}.x4-tool-expand{background-position:0 -330px}.x4-tool-print{background-position:0 -315px}.x4-tool-expand-bottom,.x4-tool-collapse-bottom{background-position:0 -195px}.x4-tool-expand-top,.x4-tool-collapse-top{background-position:0 -210px}.x4-tool-expand-left,.x4-tool-collapse-left{background-position:0 -180px}.x4-tool-expand-right,.x4-tool-collapse-right{background-position:0 -165px}.x4-tool-over .x4-tool-close{background-position:-15px 0}.x4-tool-over .x4-tool-minimize{background-position:-15px -15px}.x4-tool-over .x4-tool-maximize{background-position:-15px -30px}.x4-tool-over .x4-tool-restore{background-position:-15px -45px}.x4-tool-over .x4-tool-gear{background-position:-15px -90px}.x4-tool-over .x4-tool-prev{background-position:-15px -105px}.x4-tool-over .x4-tool-next{background-position:-15px -120px}.x4-tool-over .x4-tool-pin{background-position:-15px -135px}.x4-tool-over .x4-tool-unpin{background-position:-15px -150px}.x4-tool-over .x4-tool-right{background-position:-15px -165px}.x4-tool-over .x4-tool-left{background-position:-15px -180px}.x4-tool-over .x4-tool-down{background-position:-15px -195px}.x4-tool-over .x4-tool-up{background-position:-15px -210px}.x4-tool-over .x4-tool-refresh{background-position:-15px -225px}.x4-tool-over .x4-tool-plus{background-position:-15px -240px}.x4-tool-over .x4-tool-minus{background-position:-15px -255px}.x4-tool-over .x4-tool-search{background-position:-15px -270px}.x4-tool-over .x4-tool-save{background-position:-15px -285px}.x4-tool-over .x4-tool-help{background-position:-15px -300px}.x4-tool-over .x4-tool-print{background-position:-15px -315px}.x4-tool-over .x4-tool-expand{background-position:-15px -330px}.x4-tool-over .x4-tool-collapse{background-position:-15px -345px}.x4-tool-over .x4-tool-expand-bottom,.x4-tool-over .x4-tool-collapse-bottom{background-position:-15px -195px}.x4-tool-over .x4-tool-expand-top,.x4-tool-over .x4-tool-collapse-top{background-position:-15px -210px}.x4-tool-over .x4-tool-expand-left,.x4-tool-over .x4-tool-collapse-left{background-position:-15px -180px}.x4-tool-over .x4-tool-expand-right,.x4-tool-over .x4-tool-collapse-right{background-position:-15px -165px}.x4-horizontal-scroller-present .x4-grid-body{border-bottom-width:0}.x4-vertical-scroller-present .x4-grid-body{border-right-width:0}.x4-scroller{overflow:hidden}.x4-scroller-vertical{border:1px solid #99bce8;border-top-color:#c5c5c5}.x4-scroller-horizontal{border:1px solid #99bce8}.x4-vertical-scroller-present .x4-scroller-horizontal{border-right-width:0}.x4-scroller-ct{overflow:hidden;position:absolute;margin:0;padding:0;border:0;left:0;top:0;box-sizing:content-box!important;-ms-box-sizing:content-box!important;-moz-box-sizing:content-box!important;-webkit-box-sizing:content-box!important}.x4-scroller-vertical .x4-scroller-ct{overflow-y:scroll}.x4-scroller-horizontal .x4-scroller-ct{overflow-x:scroll}.x4-html html,.x4-html address,.x4-html blockquote,.x4-html body,.x4-html dd,.x4-html div,.x4-html dl,.x4-html dt,.x4-html fieldset,.x4-html form,.x4-html frame,.x4-html frameset,.x4-html h1,.x4-html h2,.x4-html h3,.x4-html h4,.x4-html h5,.x4-html h6,.x4-html noframes,.x4-html ol,.x4-html p,.x4-html ul,.x4-html center,.x4-html dir,.x4-html hr,.x4-html menu,.x4-html pre{display:block}.x4-html li{display:list-item;list-style:disc}.x4-html head{display:none}.x4-html table{display:table}.x4-html tr{display:table-row}.x4-html thead{display:table-header-group}.x4-html tbody{display:table-row-group}.x4-html tfoot{display:table-footer-group}.x4-html col{display:table-column}.x4-html colgroup{display:table-column-group}.x4-html td,.x4-html th{display:table-cell}.x4-html caption{display:table-caption}.x4-html th{font-weight:bolder;text-align:center}.x4-html caption{text-align:center}.x4-html body{margin:8px}.x4-html h1{font-size:2em;margin:.67em 0}.x4-html h2{font-size:1.5em;margin:.75em 0}.x4-html h3{font-size:1.17em;margin:.83em 0}.x4-html h4,.x4-html p,.x4-html blockquote,.x4-html ul,.x4-html fieldset,.x4-html form,.x4-html ol,.x4-html dl,.x4-html dir,.x4-html menu{margin:1.12em 0}.x4-html h5{font-size:.83em;margin:1.5em 0}.x4-html h6{font-size:.75em;margin:1.67em 0}.x4-html h1,.x4-html h2,.x4-html h3,.x4-html h4,.x4-html h5,.x4-html h6,.x4-html b,.x4-html strong{font-weight:bolder}.x4-html blockquote{margin-left:40px;margin-right:40px}.x4-html i,.x4-html cite,.x4-html em,.x4-html var,.x4-html address{font-style:italic}.x4-html pre,.x4-html tt,.x4-html code,.x4-html kbd,.x4-html samp{font-family:monospace}.x4-html pre{white-space:pre}.x4-html button,.x4-html textarea,.x4-html input,.x4-html select{display:inline-block}.x4-html big{font-size:1.17em}.x4-html small,.x4-html sub,.x4-html sup{font-size:.83em}.x4-html sub{vertical-align:sub}.x4-html sup{vertical-align:super}.x4-html table{border-spacing:2px}.x4-html thead,.x4-html tbody,.x4-html tfoot{vertical-align:middle}.x4-html td,.x4-html th{vertical-align:inherit}.x4-html s,.x4-html strike,.x4-html del{text-decoration:line-through}.x4-html hr{border:1px inset}.x4-html ol,.x4-html ul,.x4-html dir,.x4-html menu,.x4-html dd{margin-left:40px}.x4-html ul,.x4-html menu,.x4-html dir{list-style-type:disc}.x4-html ol{list-style-type:decimal}.x4-html ol ul,.x4-html ul ol,.x4-html ul ul,.x4-html ol ol{margin-top:0;margin-bottom:0}.x4-html u,.x4-html ins{text-decoration:underline}.x4-html br:before{content:"\A"}.x4-html :before,.x4-html :after{white-space:pre-line}.x4-html center{text-align:center}.x4-html :link,.x4-html :visited{text-decoration:underline}.x4-html :focus{outline:invert dotted thin}.x4-html BDO[DIR="ltr"]{direction:ltr;unicode-bidi:bidi-override}.x4-html BDO[DIR="rtl"]{direction:rtl;unicode-bidi:bidi-override}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-standard-debug.css
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-standard-debug.css	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-standard-debug.css	(revision 18277)
@@ -0,0 +1,7829 @@
+/*
+This file is part of Ext JS 4.1
+
+Copyright (c) 2011-2012 Sencha Inc
+
+Contact:  http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2012-07-04 21:11:01 (65ff594cd80b9bad45df640c22cc0adb52c95a7b)
+*/
+/**
+ * @class Global_CSS
+ *
+ * Global CSS variables and mixins of Sencha Touch.
+ */
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+/**
+ * @var {string} $theme-name
+ * The name of the theme. This must match the the output directory of the images.
+ * (defaults to 'default')
+ */
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+/**
+ * @var {string} $font-family
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $base-gradient
+ * The base gradient to be used throughout the theme.
+ */
+/**
+ * @var {color} $base-color
+ * The base color to be used throughout the theme.
+ */
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules
+ */
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+/**
+ * @var {boolean} $compile-all
+ * True to copile all CSS, even if above include rules are false
+ */
+/**
+ * @var {boolean} $scope-reset-css
+ * True to scope the reset CSS within the $prefix variable.
+ */
+/**
+ * @var {color} $css-shadow-background-color
+ * The base color for CSS shadows
+ */
+/**
+ * @var {color} $include-shadow-images
+ * True to include all shadow images.
+ */
+/**
+ * @class Ext.form.field.Base
+ */
+/**
+ * @var {measurement} $form-field-height
+ * Height for form fields.
+ */
+/**
+ * @var {measurement} $form-toolbar-field-height
+ * Height for form fields in toolbar.
+ */
+/**
+ * @var {measurement} $form-error-icon-width
+ * Width for form error icons.
+ */
+/**
+ * @var {measurement} $form-field-padding
+ * Padding around form fields.
+ */
+/**
+ * @var {measurement} $form-field-font-size
+ * Font size for form fields.
+ */
+/**
+ * @var {font-family} $form-field-font-family
+ * Font family for form fields.
+ */
+/**
+ * @var {font-weight} $form-field-font-weight
+ * Font weight for form fields.
+ */
+/**
+ * @var {font} $form-field-font
+ * Font for form fields.
+ */
+/**
+ * @var {color} $form-field-color
+ * Text color for form fields.
+ */
+/**
+ * @var {color} $form-field-empty-color
+ * Text color for empty form fields.
+ */
+/**
+ * @var {color} $form-field-border-color
+ * Border color for form fields.
+ */
+/**
+ * @var {measurement} $form-field-border-width
+ * Border width for form fields.
+ */
+/**
+ * @var {color} $form-field-focus-border-color
+ * Border color for focused form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-border-color
+ * Border color for invalid form fields.
+ */
+/**
+ * @var {color} $form-field-background-color
+ * Background color for form fields.
+ */
+/**
+ * @var {string} $form-field-background-image
+ * Background image for form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-background-color
+ * Background color for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-image
+ * Background image for invalid form fields.
+ */
+/**
+ * @var {background-repeat} $form-field-invalid-background-repeat
+ * Background repeat for invalid form fields.
+ */
+/**
+ * @var {background-position} $form-field-invalid-background-position
+ * Background position for invalid form fields.
+ */
+/**
+ * @class Ext.form.field.TextArea
+ */
+/**
+ * @class Ext.form.Label
+ */
+/**
+ * @class Ext.form.field.Checkbox
+ */
+/**
+ * @class Ext.form.field.Radio
+ */
+/* Error messages */
+/**
+ * @class Ext.form.field.Trigger
+ */
+/**
+ * @class Ext.form.FieldSet
+ */
+/**
+ * @class Ext.slider.Multi
+ */
+/**
+ * Creates a background gradient.
+ *
+ * @param {Color} $bg-color The background color of the gradient
+ * @param {String/List} [$type] The type of gradient to be used. Can either
+ * be a String which is a predefined gradient, or it can can be a list of
+ * color_stops. If none is set, it will still set the `background-color`
+ * to the $background-color.
+ * @param {String} [$direction=top] The direction of the gradient. Can either be
+ * `top` or `left`.
+ * @member Global_CSS
+ */
+/*
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error.
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to
+ * be true.
+ */
+/* line 77, ../themes/stylesheets/ext4/default/core/_reset.scss */
+html, body, div, dl, dt, dd, ul, ol, li, h1, h2, h3,
+h4, h5, h6, pre, code, form, fieldset, legend,
+input, textarea, p, blockquote, th, td {
+  margin: 0;
+  padding: 0; }
+
+/* line 82, ../themes/stylesheets/ext4/default/core/_reset.scss */
+table {
+  border-collapse: collapse;
+  border-spacing: 0; }
+
+/* line 87, ../themes/stylesheets/ext4/default/core/_reset.scss */
+fieldset, img {
+  border: 0; }
+
+/* line 92, ../themes/stylesheets/ext4/default/core/_reset.scss */
+address, caption, cite, code,
+dfn, em, strong, th, var {
+  font-style: normal;
+  font-weight: normal; }
+
+/* line 97, ../themes/stylesheets/ext4/default/core/_reset.scss */
+li {
+  list-style: none; }
+
+/* line 101, ../themes/stylesheets/ext4/default/core/_reset.scss */
+caption, th {
+  text-align: left; }
+
+/* line 105, ../themes/stylesheets/ext4/default/core/_reset.scss */
+h1, h2, h3, h4, h5, h6 {
+  font-size: 100%; }
+
+/* line 110, ../themes/stylesheets/ext4/default/core/_reset.scss */
+q:before,
+q:after {
+  content: ""; }
+
+/* line 114, ../themes/stylesheets/ext4/default/core/_reset.scss */
+abbr, acronym {
+  border: 0;
+  font-variant: normal; }
+
+/* line 119, ../themes/stylesheets/ext4/default/core/_reset.scss */
+sup {
+  vertical-align: text-top; }
+
+/* line 123, ../themes/stylesheets/ext4/default/core/_reset.scss */
+sub {
+  vertical-align: text-bottom; }
+
+/* line 127, ../themes/stylesheets/ext4/default/core/_reset.scss */
+input, textarea, select {
+  font-family: inherit;
+  font-size: inherit;
+  font-weight: inherit; }
+
+/* line 133, ../themes/stylesheets/ext4/default/core/_reset.scss */
+*:focus {
+  outline: none; }
+
+/* line 138, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-border-box,
+.x-border-box * {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  -webkit-box-sizing: border-box; }
+
+/* line 1, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-body {
+  color: black;
+  font-size: 12px;
+  font-family: tahoma, arial, verdana, sans-serif; }
+
+/* line 7, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-rtl {
+  direction: rtl; }
+
+/* line 11, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ltr {
+  direction: ltr; }
+
+/* line 15, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-clear {
+  overflow: hidden;
+  clear: both;
+  font-size: 0;
+  line-height: 0;
+  display: table; }
+
+/* line 23, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-strict .x-ie7 .x-clear {
+  height: 0;
+  width: 0; }
+
+/* line 31, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-layer {
+  position: absolute !important;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 37, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-shim {
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 45, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hide-display {
+  display: none !important; }
+
+/* line 49, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hide-visibility {
+  visibility: hidden !important; }
+
+/* line 56, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-item-disabled .x-form-item-label,
+.x-item-disabled .x-form-field,
+.x-item-disabled .x-form-cb-label,
+.x-item-disabled .x-form-trigger {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 60, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ie6 .x-item-disabled {
+  filter: none; }
+
+/* line 65, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hidden,
+.x-hide-offsets {
+  display: block !important;
+  visibility: hidden !important;
+  position: absolute!important;
+  left: -10000px !important;
+  top: -10000px !important; }
+
+/* line 75, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hide-nosize {
+  height: 0!important;
+  width: 0!important; }
+
+/* line 80, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-masked-relative {
+  position: relative; }
+
+/* line 92, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-css-shadow {
+  position: absolute;
+  -moz-border-radius: 5px 5px;
+  -webkit-border-radius: 5px 5px;
+  -o-border-radius: 5px 5px;
+  -ms-border-radius: 5px 5px;
+  -khtml-border-radius: 5px 5px;
+  border-radius: 5px 5px; }
+
+/* line 98, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ie-shadow {
+  background-color: #777;
+  display: none;
+  position: absolute;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 107, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tl {
+  background: transparent no-repeat 0 0;
+  zoom: 1; }
+
+/* line 112, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tc {
+  height: 8px;
+  background: transparent repeat-x 0 0;
+  overflow: hidden; }
+
+/* line 118, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tr {
+  background: transparent no-repeat right -8px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-ml {
+  background: transparent repeat-y 0;
+  padding-left: 4px;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 129, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc {
+  background: repeat-x 0 -16px;
+  padding: 4px 10px; }
+
+/* line 134, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc h3 {
+  margin: 0 0 4px 0;
+  zoom: 1; }
+
+/* line 139, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mr {
+  background: transparent repeat-y right;
+  padding-right: 4px;
+  overflow: hidden; }
+
+/* line 145, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bl {
+  background: transparent no-repeat 0 -16px;
+  zoom: 1; }
+
+/* line 150, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bc {
+  background: transparent repeat-x 0 -8px;
+  height: 8px;
+  overflow: hidden; }
+
+/* line 156, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-br {
+  background: transparent no-repeat right -24px; }
+
+/* line 160, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tl, .x-box-bl {
+  padding-left: 8px;
+  overflow: hidden; }
+
+/* line 165, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tr, .x-box-br {
+  padding-right: 8px;
+  overflow: hidden; }
+
+/* line 170, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tl {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 174, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tc {
+  background-image: url('../../resources/themes/images/default/box/tb.gif'); }
+
+/* line 178, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tr {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 182, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-ml {
+  background-image: url('../../resources/themes/images/default/box/l.gif'); }
+
+/* line 186, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc {
+  background-color: #eee;
+  background-image: url('../../resources/themes/images/default/box/tb.gif');
+  font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;
+  color: #393939;
+  font-size: 15px; }
+
+/* line 194, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc h3 {
+  font-size: 18px;
+  font-weight: bold; }
+
+/* line 199, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mr {
+  background-image: url('../../resources/themes/images/default/box/r.gif'); }
+
+/* line 203, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bl {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 207, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bc {
+  background-image: url('../../resources/themes/images/default/box/tb.gif'); }
+
+/* line 211, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-br {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 215, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr {
+  background-image: url('../../resources/themes/images/default/box/corners-blue.gif'); }
+
+/* line 219, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc {
+  background-image: url('../../resources/themes/images/default/box/tb-blue.gif'); }
+
+/* line 223, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-mc {
+  background-color: #c3daf9; }
+
+/* line 227, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-mc h3 {
+  color: #17385b; }
+
+/* line 231, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-ml {
+  background-image: url('../../resources/themes/images/default/box/l-blue.gif'); }
+
+/* line 235, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-mr {
+  background-image: url('../../resources/themes/images/default/box/r-blue.gif'); }
+
+/* line 239, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-container {
+  zoom: 1; }
+  /* line 244, ../themes/stylesheets/ext4/default/core/_core.scss */
+  .x-container:before {
+    content: "";
+    clear: both;
+    display: table; }
+
+/* line 254, ../themes/stylesheets/ext4/default/core/_core.scss */
+table.x-container:before,
+tbody.x-container:before,
+tr.x-container:before {
+  display: none; }
+
+/* line 1, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-element {
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px; }
+
+/* line 9, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame {
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  z-index: 100000000;
+  width: 0px;
+  height: 0px; }
+
+/* line 21, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom,
+.x-focus-frame-left,
+.x-focus-frame-right {
+  position: absolute;
+  top: 0px;
+  left: 0px; }
+
+/* line 28, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom {
+  border-top: solid 2px #15428b;
+  height: 2px; }
+
+/* line 34, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame-left,
+.x-focus-frame-right {
+  border-left: solid 2px #15428b;
+  width: 2px; }
+
+/**
+ * Creates the base structure of a BoundList.
+ * @member Ext.view.BoundList
+ */
+/**
+ * Creates the base structure of an Ext.Button
+ * @member Ext.button.Button
+ */
+/**
+ * Creates a visual theme of an Ext.Button
+ * @member Ext.button.Button
+ */
+/**
+ * Creates the base structure of a button group.
+ * @member Ext.container.ButtonGroup
+ */
+/**
+ * Creates a visual theme of a button group.
+ * @member Ext.container.ButtonGroup
+ */
+/**
+ * Creates the base structure of a date picker.
+ * @member Ext.picker.Date
+ */
+/**
+ * Creates base structure for Ext.picker.Color
+ * @member Ext.picker.Color
+ */
+/**
+ * Creates the base structure of a Menu
+ * @member Ext.menu.Menu
+ */
+/**
+ * Create the base structure of an Ext.Panel
+ * @member Ext.panel.Panel
+ */
+/**
+ * Creates a visual theme for an Ext.Panel
+ * @member Ext.panel.Panel
+ */
+/**
+ * Creates base structure for Toolbar
+ * @member Ext.toolbar.Toolbar
+ */
+/**
+ * Creates a visual theme for an Toolbar.
+ * @param {String} $ui The name of the UI
+ * @param {Color} $background-color The background color of the toolbar (defaults to transparent)
+ * @param {Gradient/color-stops} $background-gradient The background gradient of the toolbar (defaults to null)
+ * @param {Color} $border-color The border color of the toolbar (defaults to null)
+ * @member Ext.toolbar.Toolbar
+ */
+/**
+ * Creates the base structure of Ext.form.Panel.
+ * @member Ext.form.Panel
+ */
+/**
+ * Creates the base structure of form field.
+ * @member Ext.form.field.Base
+ */
+/**
+ * Creates the base structure of FieldSet.
+ * @member Ext.form.FieldSet
+ */
+/**
+ * Creates the base structure of file field.
+ * @member Ext.form.field.File
+ */
+/**
+ * Creates the base structure of checkbox field.
+ * @member Ext.form.field.Checkbox
+ */
+/**
+ * Creates the base structure of CheckboxGroup.
+ * @member Ext.form.CheckboxGroup
+ */
+/**
+ * Creates the base structure of trigger field.
+ * @member Ext.form.field.Trigger
+ */
+/**
+ * Creates the base structure of HtmlEditor field.
+ * @member Ext.form.field.HtmlEditor
+ */
+/**
+ * Creates the base structure of QuickTip.
+ * @member Ext.tip.QuickTip
+ */
+/**
+ * Creates the base structure of an Ext.Window
+ * @member Ext.window.Window
+ */
+/**
+ * Creates a visual theme for an Ext.Panel
+ * @member Ext.window.Window
+ */
+/**
+ * Creates a visual theme for TabBar
+ * @member Ext.tab.Bar
+ */
+/**
+ * Creates the base structure of a Tab.
+ * @member Ext.tab.Tab
+ */
+/**
+ * Creates the base structure of slider.
+ * @member Ext.slider.Multi
+ */
+/**
+ * Creates base structure for a Grid.
+ * @member Ext.grid.Panel
+ */
+/**
+ * Creates the base structure of Tree.
+ * @member Ext.tree.Panel
+ */
+/* Styles for Ext.LoadMask */
+/* line 3, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+.x-mask {
+  z-index: 100;
+  position: absolute;
+  top: 0;
+  left: 0;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  width: 100%;
+  height: 100%;
+  zoom: 1;
+  background: #cccccc; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+.x-mask-msg {
+  z-index: 20001;
+  position: absolute;
+  top: 0;
+  left: 0;
+  padding: 2px;
+  border: 1px solid;
+  border-color: #99bce8; }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+  .x-mask-msg div {
+    padding: 5px 10px 5px 25px;
+    background-image: url('../../resources/themes/images/default/grid/loading.gif');
+    background-repeat: no-repeat;
+    background-position: 5px center;
+    cursor: wait;
+    border: 1px solid #a3bad9;
+    background-color: #eeeeee;
+    color: #222222;
+    font: normal 11px tahoma, arial, verdana, sans-serif; }
+
+/**
+ * Creates the base structure of an Ext.ProgressBar
+ * @member Ext.ProgressBar
+ */
+/**
+ * Creates a visual theme for an Ext.ProgressBar
+ * @member Ext.ProgressBar
+ */
+/**
+ * Creates base structure for a Draw Component.
+ * @member Ext.draw.Component
+ */
+/**
+ * Creates the base structure of Viewport.
+ * @member Ext.container.Viewport
+ */
+/**
+ * W3C suggested default style sheet for HTML 4:
+ * [http://www.w3.org/TR/CSS21/sample.html](http://www.w3.org/TR/CSS21/sample.html)
+ *
+ * @member Global_CSS
+ */
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist {
+  border-width: 1px;
+  border-style: solid;
+  border-color: #98c0f4;
+  background: white; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-boundlist .x-toolbar {
+    border-width: 1px 0 0 0; }
+
+/* line 29, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-item {
+  padding: 2px;
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  cursor: pointer;
+  cursor: hand;
+  position: relative;
+  /*allow hover in IE on empty items*/
+  border-width: 1px;
+  border-style: dotted;
+  border-color: white; }
+
+/* line 43, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-selected {
+  background: #cbdaf0;
+  border-color: #8eabe4; }
+
+/* line 48, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-item-over {
+  background: #dfe8f6;
+  border-color: #a3bae9; }
+
+/* line 53, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-floating {
+  border-top-width: 0; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+.x-boundlist-above {
+  border-top-width: 1px;
+  border-bottom-width: 1px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn {
+  display: inline-block;
+  zoom: 1;
+  *display: inline;
+  position: relative;
+  cursor: pointer;
+  cursor: hand;
+  white-space: nowrap;
+  vertical-align: middle;
+  background-repeat: no-repeat; }
+  /* line 19, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn * {
+    cursor: pointer;
+    cursor: hand; }
+  /* line 26, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn em {
+    background-repeat: no-repeat; }
+    /* line 30, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-btn em a {
+      text-decoration: none;
+      display: block;
+      color: inherit;
+      width: 100%;
+      zoom: 1; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn button {
+    width: 100%;
+    display: block;
+    margin: 0;
+    padding: 0;
+    border: 0;
+    background: none;
+    outline: 0 none;
+    overflow: hidden;
+    vertical-align: bottom;
+    -webkit-appearance: none; }
+    /* line 59, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-btn button::-moz-focus-inner {
+      border: 0;
+      padding: 0; }
+  /* line 65, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn .x-btn-inner {
+    display: block;
+    white-space: nowrap;
+    background-color: transparent;
+    background-repeat: no-repeat;
+    background-position: left center;
+    overflow: hidden; }
+  /* line 74, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn .x-btn-left .x-btn-inner {
+    text-align: left; }
+  /* line 78, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn .x-btn-center .x-btn-inner {
+    text-align: center; }
+  /* line 82, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn .x-btn-right .x-btn-inner {
+    text-align: right; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-disabled span {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+  /* line 91, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-disabled span, .x-ie7 .x-btn-disabled span {
+    filter: none; }
+
+/* line 98, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie7 .x-btn-disabled,
+.x-ie8 .x-btn-disabled {
+  filter: none; }
+
+/* line 105, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-disabled .x-btn-icon,
+.x-ie7 .x-btn-disabled .x-btn-icon,
+.x-ie8 .x-btn-disabled .x-btn-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+
+/* line 153, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-icon-text-left .x-btn-icon {
+  background-position: left center; }
+
+/* line 157, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-icon-text-right .x-btn-icon {
+  background-position: right center; }
+
+/* line 161, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-icon-text-top .x-btn-icon {
+  background-position: center top; }
+
+/* line 165, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-icon-text-bottom .x-btn-icon {
+  background-position: center bottom; }
+
+/* line 170, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn button, .x-btn a {
+  position: relative; }
+  /* line 173, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn button .x-btn-icon, .x-btn a .x-btn-icon {
+    position: absolute;
+    background-repeat: no-repeat; }
+
+/* line 180, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-arrow-right {
+  background: transparent no-repeat right center;
+  padding-right: 12px; }
+  /* line 184, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-arrow-right .x-btn-inner {
+    padding-right: 0 !important; }
+
+/* line 189, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-toolbar .x-btn-arrow-right {
+  padding-right: 12px; }
+
+/* line 193, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-arrow-bottom {
+  background: transparent no-repeat center bottom;
+  padding-bottom: 12px; }
+
+/* line 198, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-arrow {
+  background-image: url('../../resources/themes/images/default/button/arrow.gif');
+  display: block; }
+
+/* line 206, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-split-right,
+.x-btn-over .x-btn-split-right {
+  background: transparent no-repeat right center;
+  background-image: url('../../resources/themes/images/default/button/s-arrow.gif');
+  padding-right: 14px !important; }
+
+/* line 213, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-split-bottom,
+.x-btn-over .x-btn-split-bottom {
+  background: transparent no-repeat center bottom;
+  background-image: url('../../resources/themes/images/default/button/s-arrow-b.gif');
+  padding-bottom: 14px; }
+
+/* line 219, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-toolbar .x-btn-split-right {
+  background-image: url('../../resources/themes/images/default/button/s-arrow-noline.gif');
+  padding-right: 12px !important; }
+
+/* line 224, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-toolbar .x-btn-split-bottom {
+  background-image: url('../../resources/themes/images/default/button/s-arrow-b-noline.gif'); }
+
+/* line 228, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-split {
+  display: block; }
+
+/* line 233, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-item-disabled,
+.x-item-disabled * {
+  cursor: default; }
+
+/* line 237, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-cycle-fixed-width .x-btn-inner {
+  text-align: inherit; }
+
+/* line 241, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-over .x-btn-split-right {
+  background-image: url('../../resources/themes/images/default/button/s-arrow-o.gif'); }
+
+/* line 242, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-over .x-btn-split-bottom {
+  background-image: url('../../resources/themes/images/default/button/s-arrow-bo.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small {
+  border-color: #d1d1d1; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-small {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: white; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-small-mc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-bg.gif');
+  background-color: white; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 4px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon button,
+.x-btn-default-small-icon a,
+.x-btn-default-small-icon .x-btn-inner,
+.x-btn-default-small-noicon button,
+.x-btn-default-small-noicon a,
+.x-btn-default-small-noicon .x-btn-inner {
+  height: 16px;
+  line-height: 16px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon button, .x-btn-default-small-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 16px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon .x-btn-icon {
+  width: 16px;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-left button, .x-btn-default-small-icon-text-left a {
+  height: 16px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-left .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-left: 20px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-left .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-small-icon-text-left .x-btn-icon {
+    height: 16px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-right button, .x-btn-default-small-icon-text-right a {
+  height: 16px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-right .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-right: 20px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-right .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-small-icon-text-right .x-btn-icon {
+    height: 16px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-top .x-btn-inner {
+  padding-top: 20px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon {
+    width: 16px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon {
+    width: 16px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-over {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-focus {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-menu-active,
+.x-btn-default-small-pressed {
+  border-color: #9ebae1;
+  background-image: none;
+  background-color: #b6cbe4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+  background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -ms-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-small-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -ms-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-default-small-disabled .x-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn-default-small-disabled .x-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-small-disabled .x-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-bg.gif'); }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-menu-active,
+.x-nlg .x-btn-default-small-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-pressed-bg.gif'); }
+
+/* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-small-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-small-disabled-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium {
+  border-color: #d1d1d1; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-medium {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: white; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-medium-mc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif');
+  background-color: white; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 3px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon button,
+.x-btn-default-medium-icon a,
+.x-btn-default-medium-icon .x-btn-inner,
+.x-btn-default-medium-noicon button,
+.x-btn-default-medium-noicon a,
+.x-btn-default-medium-noicon .x-btn-inner {
+  height: 24px;
+  line-height: 24px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon button, .x-btn-default-medium-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 24px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon .x-btn-icon {
+  width: 24px;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-left button, .x-btn-default-medium-icon-text-left a {
+  height: 24px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-left: 28px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-left .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon {
+    height: 24px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-right button, .x-btn-default-medium-icon-text-right a {
+  height: 24px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-right: 28px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-right .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon {
+    height: 24px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon {
+    width: 24px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon {
+    width: 24px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-over {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-focus {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-menu-active,
+.x-btn-default-medium-pressed {
+  border-color: #9ebae1;
+  background-image: none;
+  background-color: #b6cbe4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+  background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -ms-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-medium-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -ms-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-default-medium-disabled .x-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn-default-medium-disabled .x-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-medium-disabled .x-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif'); }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-menu-active,
+.x-nlg .x-btn-default-medium-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif'); }
+
+/* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-medium-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large {
+  border-color: #d1d1d1; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-large {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: white; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-large-mc {
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-bg.gif');
+  background-color: white; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 3px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon button,
+.x-btn-default-large-icon a,
+.x-btn-default-large-icon .x-btn-inner,
+.x-btn-default-large-noicon button,
+.x-btn-default-large-noicon a,
+.x-btn-default-large-noicon .x-btn-inner {
+  height: 32px;
+  line-height: 32px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon button, .x-btn-default-large-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 32px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon .x-btn-icon {
+  width: 32px;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-left button, .x-btn-default-large-icon-text-left a {
+  height: 32px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-left .x-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-left: 36px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-left .x-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-large-icon-text-left .x-btn-icon {
+    height: 32px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-right button, .x-btn-default-large-icon-text-right a {
+  height: 32px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-right .x-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-right: 36px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-right .x-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-large-icon-text-right .x-btn-icon {
+    height: 32px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-top .x-btn-inner {
+  padding-top: 36px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon {
+    width: 32px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 36px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 32px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon {
+    width: 32px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-over {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-focus {
+  border-color: #b0ccf2;
+  background-image: none;
+  background-color: #e4f3ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+  background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+  background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-menu-active,
+.x-btn-default-large-pressed {
+  border-color: #9ebae1;
+  background-image: none;
+  background-color: #b6cbe4;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+  background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: -ms-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+  background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-large-disabled {
+  border-color: #e1e1e1;
+  background-image: none;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+  background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: -ms-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+  background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-default-large-disabled .x-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn-default-large-disabled .x-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-large-disabled .x-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-bg.gif'); }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-menu-active,
+.x-nlg .x-btn-default-large-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-pressed-bg.gif'); }
+
+/* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-large-disabled {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-large-disabled-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small {
+  border-color: transparent; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-toolbar-small {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-toolbar-small-mc {
+  background-color: transparent; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 4px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon button,
+.x-btn-default-toolbar-small-icon a,
+.x-btn-default-toolbar-small-icon .x-btn-inner,
+.x-btn-default-toolbar-small-noicon button,
+.x-btn-default-toolbar-small-noicon a,
+.x-btn-default-toolbar-small-noicon .x-btn-inner {
+  height: 16px;
+  line-height: 16px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon button, .x-btn-default-toolbar-small-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 16px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon .x-btn-icon {
+  width: 16px;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-left button, .x-btn-default-toolbar-small-icon-text-left a {
+  height: 16px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-left: 20px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-left .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon {
+    height: 16px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-right button, .x-btn-default-toolbar-small-icon-text-right a {
+  height: 16px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-inner {
+  height: 16px;
+  line-height: 16px;
+  padding-right: 20px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-right .x-btn-icon {
+  width: 16px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon {
+    height: 16px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-inner {
+  padding-top: 20px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon {
+    width: 16px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner {
+  padding-bottom: 20px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 16px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon {
+    width: 16px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-over {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-focus {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-menu-active,
+.x-btn-default-toolbar-small-pressed {
+  border-color: #7a9ac4;
+  background-image: none;
+  background-color: #bccfe5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+  background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -ms-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-disabled {
+  background-image: none;
+  background-color: transparent; }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-default-toolbar-small-disabled .x-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn-default-toolbar-small-disabled .x-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-toolbar-small-disabled .x-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-small-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-small-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-small-menu-active,
+.x-nlg .x-btn-default-toolbar-small-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium {
+  border-color: transparent; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-toolbar-medium {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-toolbar-medium-mc {
+  background-color: transparent; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 3px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon button,
+.x-btn-default-toolbar-medium-icon a,
+.x-btn-default-toolbar-medium-icon .x-btn-inner,
+.x-btn-default-toolbar-medium-noicon button,
+.x-btn-default-toolbar-medium-noicon a,
+.x-btn-default-toolbar-medium-noicon .x-btn-inner {
+  height: 24px;
+  line-height: 24px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon button, .x-btn-default-toolbar-medium-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 24px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon .x-btn-icon {
+  width: 24px;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-left button, .x-btn-default-toolbar-medium-icon-text-left a {
+  height: 24px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-left: 28px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon {
+    height: 24px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-right button, .x-btn-default-toolbar-medium-icon-text-right a {
+  height: 24px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner {
+  height: 24px;
+  line-height: 24px;
+  padding-right: 28px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon {
+  width: 24px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon {
+    height: 24px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner {
+  padding-top: 28px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon {
+    width: 24px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner {
+  padding-bottom: 28px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 24px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon {
+    width: 24px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-over {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-focus {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-menu-active,
+.x-btn-default-toolbar-medium-pressed {
+  border-color: #7a9ac4;
+  background-image: none;
+  background-color: #bccfe5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+  background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -ms-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-medium-disabled {
+  background-image: none;
+  background-color: transparent; }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-medium-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-medium-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-medium-menu-active,
+.x-nlg .x-btn-default-toolbar-medium-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif'); }
+
+/* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large {
+  border-color: transparent; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-default-toolbar-large {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 3px 3px 3px 3px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: transparent; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-default-toolbar-large-mc {
+  background-color: transparent; }
+
+/* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large .x-btn-inner {
+  font-size: 11px;
+  font-weight: normal;
+  font-family: tahoma, arial, verdana, sans-serif;
+  color: #333333;
+  background-repeat: no-repeat;
+  padding: 0 3px; }
+
+/* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon button,
+.x-btn-default-toolbar-large-icon a,
+.x-btn-default-toolbar-large-icon .x-btn-inner,
+.x-btn-default-toolbar-large-noicon button,
+.x-btn-default-toolbar-large-noicon a,
+.x-btn-default-toolbar-large-noicon .x-btn-inner {
+  height: 32px;
+  line-height: 32px; }
+
+/* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon button, .x-btn-default-toolbar-large-icon a {
+  padding: 0; }
+/* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-inner {
+  /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+  width: 32px;
+  padding: 0; }
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon .x-btn-icon {
+  width: 32px;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+
+/* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-left button, .x-btn-default-toolbar-large-icon-text-left a {
+  height: 32px; }
+/* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-left: 36px; }
+/* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-left .x-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: auto; }
+  /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon, .x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon {
+    height: 32px; }
+
+/* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-right button, .x-btn-default-toolbar-large-icon-text-right a {
+  height: 32px; }
+/* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-inner {
+  height: 32px;
+  line-height: 32px;
+  padding-right: 36px !important; }
+/* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-right .x-btn-icon {
+  width: 32px;
+  height: auto;
+  top: 0;
+  left: auto;
+  bottom: 0;
+  right: 0; }
+  /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon, .x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon {
+    height: 32px; }
+
+/* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-inner {
+  padding-top: 36px; }
+/* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-top .x-btn-icon {
+  width: auto;
+  height: 32px;
+  top: 0;
+  left: 0;
+  bottom: auto;
+  right: 0; }
+  /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon {
+    width: 32px; }
+
+/* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner {
+  padding-bottom: 36px; }
+/* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon {
+  width: auto;
+  height: 32px;
+  top: auto;
+  left: 0;
+  bottom: 0;
+  right: 0; }
+  /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon {
+    width: 32px; }
+
+/* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-over {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+
+/* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-focus {
+  border-color: #81a4d0;
+  background-image: none;
+  background-color: #dbeeff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+  background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+  background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+
+/* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-menu-active,
+.x-btn-default-toolbar-large-pressed {
+  border-color: #7a9ac4;
+  background-image: none;
+  background-color: #bccfe5;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+  background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: -ms-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+  background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); }
+
+/* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-large-disabled {
+  background-image: none;
+  background-color: transparent; }
+  /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-btn-default-toolbar-large-disabled .x-btn-inner {
+    color: #333333 !important; }
+
+/* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie .x-btn-default-toolbar-large-disabled .x-btn-inner {
+  color: #595959 !important; }
+
+/* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-ie6 .x-btn-default-toolbar-large-disabled .x-btn-inner {
+  color: #8c8c8c !important; }
+
+/* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-large-over {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif'); }
+
+/* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-large-focus {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif'); }
+
+/* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-nlg .x-btn-default-toolbar-large-menu-active,
+.x-nlg .x-btn-default-toolbar-large-pressed {
+  background-repeat: repeat-x;
+  background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif'); }
+
+/* line 571, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+.x-btn-default-toolbar-small-disabled,
+.x-btn-default-toolbar-medium-disabled,
+.x-btn-default-toolbar-large-disabled {
+  border-color: transparent;
+  background-image: none;
+  background: transparent; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group {
+  position: relative;
+  overflow: hidden; }
+
+/* line 11, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-body {
+  position: relative;
+  zoom: 1;
+  padding: 0 1px; }
+  /* line 15, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-btn-group-body .x-table-layout-cell {
+    vertical-align: top; }
+
+/* line 20, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-header-text {
+  white-space: nowrap; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-btn-group-default-framed {
+  -moz-border-radius: 2px;
+  -webkit-border-radius: 2px;
+  -o-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -khtml-border-radius: 2px;
+  border-radius: 2px;
+  padding: 1px 1px 1px 1px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #d0def0; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-btn-group-default-framed-mc {
+  background-color: #d0def0; }
+
+/* line 60, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-default-framed {
+  border-color: #b7c8d7;
+  -moz-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  -webkit-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  -o-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+  box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset; }
+
+/* line 68, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-header-default-framed {
+  margin: 2px 2px 0 2px; }
+
+/* line 72, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-header-body-default-framed {
+  padding: 1px 0;
+  background: #c2d8f0;
+  -moz-border-radius-topleft: 2px;
+  -webkit-border-top-left-radius: 2px;
+  -o-border-top-left-radius: 2px;
+  -ms-border-top-left-radius: 2px;
+  -khtml-border-top-left-radius: 2px;
+  border-top-left-radius: 2px;
+  -moz-border-radius-topright: 2px;
+  -webkit-border-top-right-radius: 2px;
+  -o-border-top-right-radius: 2px;
+  -ms-border-top-right-radius: 2px;
+  -khtml-border-top-right-radius: 2px;
+  border-top-right-radius: 2px; }
+
+/* line 80, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+.x-btn-group-header-text-default-framed {
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  color: #3e6aaa; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker {
+  border: 1px solid #1b376c;
+  background-color: white;
+  position: relative; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker a {
+    -moz-outline: 0 none;
+    outline: 0 none;
+    color: #15428b;
+    text-decoration: none;
+    border-width: 0; }
+
+/* line 25, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-inner,
+.x-datepicker-inner td,
+.x-datepicker-inner th {
+  border-collapse: separate; }
+
+/* line 29, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-header {
+  position: relative;
+  height: 26px;
+  background-image: none;
+  background-color: #23427c;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #264888), color-stop(100%, #1f3a6c));
+  background-image: -webkit-linear-gradient(top, #264888, #1f3a6c);
+  background-image: -moz-linear-gradient(top, #264888, #1f3a6c);
+  background-image: -o-linear-gradient(top, #264888, #1f3a6c);
+  background-image: -ms-linear-gradient(top, #264888, #1f3a6c);
+  background-image: linear-gradient(top, #264888, #1f3a6c); }
+
+/* line 42, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-prev,
+.x-datepicker-next {
+  position: absolute;
+  top: 5px;
+  width: 18px; }
+  /* line 48, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-prev a,
+  .x-datepicker-next a {
+    display: block;
+    width: 16px;
+    height: 16px;
+    background-position: top;
+    background-repeat: no-repeat;
+    cursor: pointer;
+    text-decoration: none !important;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+    opacity: 0.7; }
+    /* line 63, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-datepicker-prev a:hover,
+    .x-datepicker-next a:hover {
+      filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+      opacity: 1; }
+
+/* line 69, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-next {
+  right: 5px; }
+  /* line 72, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-next a {
+    background-image: url('../../resources/themes/images/default/shared/right-btn.gif'); }
+
+/* line 77, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-prev {
+  left: 5px; }
+  /* line 80, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-prev a {
+    background-image: url('../../resources/themes/images/default/shared/left-btn.gif'); }
+
+/* line 86, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-item-disabled .x-datepicker-prev a:hover,
+.x-item-disabled .x-datepicker-next a:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+
+/* line 90, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-month {
+  padding-top: 3px; }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-month .x-btn,
+  .x-datepicker-month button,
+  .x-datepicker-month .x-btn-tc,
+  .x-datepicker-month .x-btn-tl,
+  .x-datepicker-month .x-btn-tr,
+  .x-datepicker-month .x-btn-mc,
+  .x-datepicker-month .x-btn-ml,
+  .x-datepicker-month .x-btn-mr,
+  .x-datepicker-month .x-btn-bc,
+  .x-datepicker-month .x-btn-bl,
+  .x-datepicker-month .x-btn-br {
+    background: transparent !important;
+    border-width: 0 !important; }
+  /* line 108, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-month span {
+    color: #fff !important; }
+  /* line 112, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-month .x-btn-split-right {
+    background-image: url('../../resources/themes/images/default/button/s-arrow-light.gif');
+    padding-right: 12px; }
+
+/* line 118, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-next {
+  text-align: right; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-month {
+  text-align: center; }
+  /* line 126, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-month button {
+    color: white !important; }
+
+/* line 132, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+table.x-datepicker-inner {
+  width: 100%;
+  table-layout: fixed; }
+  /* line 136, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner th {
+    width: 25px;
+    height: 19px;
+    padding: 0;
+    color: #233d6d;
+    font: normal 10px tahoma, arial, verdana, sans-serif;
+    text-align: right;
+    border-bottom: 1px solid #b2d1f5;
+    border-collapse: separate;
+    background-image: none;
+    background-color: #dfecfb;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #edf4fd), color-stop(100%, #cde1f9));
+    background-image: -webkit-linear-gradient(top, #edf4fd, #cde1f9);
+    background-image: -moz-linear-gradient(top, #edf4fd, #cde1f9);
+    background-image: -o-linear-gradient(top, #edf4fd, #cde1f9);
+    background-image: -ms-linear-gradient(top, #edf4fd, #cde1f9);
+    background-image: linear-gradient(top, #edf4fd, #cde1f9);
+    cursor: default; }
+    /* line 157, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    table.x-datepicker-inner th span {
+      display: block;
+      padding-right: 7px; }
+  /* line 163, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner tr {
+    height: 20px; }
+  /* line 167, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner td {
+    border: 1px solid;
+    height: 17px;
+    border-color: white;
+    text-align: right;
+    padding: 0; }
+  /* line 175, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner a {
+    padding-right: 4px;
+    display: block;
+    zoom: 1;
+    font: normal 11px tahoma, arial, verdana, sans-serif;
+    color: black;
+    text-decoration: none;
+    text-align: right; }
+  /* line 188, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-active {
+    cursor: pointer;
+    color: black; }
+  /* line 194, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-selected a {
+    background: repeat-x left top;
+    background-color: #dae5f3;
+    border: 1px solid #8db2e3; }
+  /* line 200, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-selected span {
+    font-weight: bold; }
+  /* line 206, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-today a {
+    border: 1px solid;
+    border-color: darkred; }
+  /* line 214, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-prevday a,
+  table.x-datepicker-inner .x-datepicker-nextday a {
+    text-decoration: none !important;
+    color: #aaa; }
+  /* line 221, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner a:hover,
+  table.x-datepicker-inner .x-datepicker-disabled a:hover {
+    text-decoration: none !important;
+    color: #000;
+    background-color: #ddecfe; }
+  /* line 229, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  table.x-datepicker-inner .x-datepicker-disabled a {
+    cursor: default;
+    background-color: #eee;
+    color: #bbb; }
+
+/* line 237, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker-footer,
+.x-monthpicker-buttons {
+  position: relative;
+  border-top: 1px solid #b2d1f5;
+  background-image: none;
+  background-color: #dfecfb;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dee8f5), color-stop(49%, #d1dff0), color-stop(51%, #c7d8ed), color-stop(100%, #cbdaee));
+  background-image: -webkit-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: -moz-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: -o-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: -ms-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  background-image: linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+  text-align: center; }
+  /* line 250, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-datepicker-footer .x-btn,
+  .x-monthpicker-buttons .x-btn {
+    position: relative;
+    margin: 4px; }
+
+/* line 256, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-item-disabled .x-datepicker-inner a:hover {
+  background: none; }
+
+/* line 261, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-datepicker .x-monthpicker {
+  position: absolute;
+  left: 0;
+  top: 0; }
+
+/* line 268, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker {
+  border: 1px solid #1b376c;
+  background-color: white; }
+
+/* line 274, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-months,
+.x-monthpicker-years {
+  float: left;
+  height: 167px;
+  width: 88px; }
+
+/* line 281, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-item {
+  float: left;
+  margin: 4px 0 5px 0;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  text-align: center;
+  vertical-align: middle;
+  height: 18px;
+  width: 43px;
+  border: 0 none; }
+  /* line 295, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-monthpicker-item a {
+    display: block;
+    margin: 0 5px;
+    text-decoration: none;
+    color: #15428b;
+    border: 1px solid white;
+    line-height: 17px; }
+    /* line 308, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-monthpicker-item a:hover {
+      background-color: #ddecfe; }
+    /* line 312, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-monthpicker-item a.x-monthpicker-selected {
+      background-color: #dfecfb;
+      border: 1px solid #8db2e3; }
+
+/* line 319, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-months {
+  border-right: 1px solid #1b376c;
+  width: 87px; }
+
+/* line 324, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-years .x-monthpicker-item {
+  width: 44px; }
+
+/* line 328, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav {
+  height: 28px; }
+  /* line 331, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-monthpicker-yearnav button {
+    background-image: url('../../resources/themes/images/default/tools/tool-sprites.gif');
+    height: 15px;
+    width: 15px;
+    padding: 0;
+    margin: 6px 12px 5px 15px;
+    border: 0;
+    outline: 0 none; }
+    /* line 339, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-monthpicker-yearnav button::-moz-focus-inner {
+      border: 0;
+      padding: 0; }
+
+/* line 346, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-next {
+  background-position: 0 -120px; }
+
+/* line 350, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-next-over {
+  cursor: pointer;
+  cursor: hand;
+  background-position: -15px -120px; }
+
+/* line 356, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-prev {
+  background-position: 0 -105px; }
+
+/* line 360, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-yearnav-prev-over {
+  cursor: pointer;
+  cursor: hand;
+  background-position: -15px -105px; }
+
+/* line 367, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-small .x-monthpicker-item {
+  margin: 2px 0 2px 0; }
+/* line 371, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-small .x-monthpicker-yearnav {
+  height: 23px; }
+/* line 375, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-monthpicker-small .x-monthpicker-months, .x-monthpicker-small .x-monthpicker-years {
+  height: 136px; }
+
+/* line 407, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-nlg .x-datepicker-header {
+  background-image: url('../../resources/themes/images/default/datepicker/datepicker-header-bg.gif');
+  background-repeat: repeat-x;
+  background-position: top left; }
+/* line 416, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+.x-nlg .x-datepicker-footer,
+.x-nlg .x-monthpicker-buttons {
+  background-image: url('../../resources/themes/images/default/datepicker/datepicker-footer-bg.gif');
+  background-repeat: repeat-x;
+  background-position: top left; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker {
+  width: 144px;
+  height: 90px;
+  cursor: pointer; }
+
+/* line 12, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker a {
+  border: 1px solid #fff;
+  float: left;
+  padding: 2px;
+  text-decoration: none;
+  -moz-outline: 0 none;
+  outline: 0 none;
+  cursor: pointer; }
+
+/* line 28, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker a:hover,
+.x-color-picker a.x-color-picker-selected {
+  border-color: #8bb8f3;
+  background-color: #deecfd; }
+
+/* line 33, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker em {
+  display: block;
+  border: 1px solid #aca899; }
+
+/* line 39, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+.x-color-picker em span {
+  cursor: pointer;
+  display: block;
+  height: 10px;
+  width: 10px;
+  line-height: 10px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-body {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  background: #f0f0f0 !important;
+  padding: 2px; }
+
+/* line 12, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item .x-form-text {
+  user-select: text;
+  -webkit-user-select: text;
+  -o-user-select: text;
+  -ie-user-select: text;
+  -moz-user-select: text;
+  -ie-user-select: text; }
+
+/* line 21, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-icon-separator {
+  position: absolute;
+  top: 0px;
+  left: 27px;
+  z-index: 0;
+  border-left: solid 1px #e0e0e0;
+  background-color: white;
+  width: 2px;
+  overflow: hidden; }
+
+/* line 33, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-plain .x-menu-icon-separator {
+  display: none; }
+
+/* line 38, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-focus {
+  display: block;
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px; }
+
+/* line 47, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item {
+  white-space: nowrap;
+  overflow: hidden;
+  z-index: 1; }
+
+/* line 53, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-cmp {
+  margin-bottom: 1px; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-link {
+  display: block;
+  margin: 1px;
+  padding: 6px 2px 3px 32px;
+  text-decoration: none !important;
+  line-height: 16px;
+  cursor: default; }
+
+/* line 70, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-opera .x-menu-item-link {
+  position: relative; }
+
+/* line 76, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-icon {
+  width: 16px;
+  height: 16px;
+  position: absolute;
+  top: 5px;
+  left: 4px;
+  background: no-repeat center center; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-icon-right {
+  width: 16px;
+  height: 16px;
+  position: absolute;
+  top: 6px;
+  right: 4px;
+  background: no-repeat center center; }
+
+/* line 96, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-text {
+  font-size: 11px;
+  color: #222222; }
+
+/* line 102, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-checked .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/menu/checked.gif'); }
+/* line 105, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-checked .x-menu-group-icon {
+  background-image: url('../../resources/themes/images/default/menu/group-checked.gif'); }
+
+/* line 111, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-unchecked .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/menu/unchecked.gif'); }
+/* line 114, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-unchecked .x-menu-group-icon {
+  background-image: none; }
+
+/* line 119, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-separator {
+  height: 2px;
+  border-top: solid 1px #e0e0e0;
+  background-color: white;
+  margin: 2px 0px;
+  overflow: hidden; }
+
+/* line 127, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-arrow {
+  position: absolute;
+  width: 12px;
+  height: 9px;
+  top: 9px;
+  right: 0px;
+  background: no-repeat center center;
+  background-image: url('../../resources/themes/images/default/menu/menu-parent.gif'); }
+
+/* line 137, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-indent {
+  margin-left: 31px;
+  /* The 2px is the width of the seperator */ }
+
+/* line 141, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-active {
+  cursor: pointer; }
+  /* line 144, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-menu-item-active .x-menu-item-link {
+    background-image: none;
+    background-color: #d9e8fb;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7f0fc), color-stop(100%, #c7ddf9));
+    background-image: -webkit-linear-gradient(top, #e7f0fc, #c7ddf9);
+    background-image: -moz-linear-gradient(top, #e7f0fc, #c7ddf9);
+    background-image: -o-linear-gradient(top, #e7f0fc, #c7ddf9);
+    background-image: -ms-linear-gradient(top, #e7f0fc, #c7ddf9);
+    background-image: linear-gradient(top, #e7f0fc, #c7ddf9);
+    margin: 0px;
+    border: 1px solid #a9cbf5;
+    cursor: pointer;
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    -o-border-radius: 3px;
+    -ms-border-radius: 3px;
+    -khtml-border-radius: 3px;
+    border-radius: 3px; }
+
+/* line 153, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+
+/* line 192, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-nlg .x-menu-item-active .x-menu-item-link {
+  background: #d9e8fb repeat-x left top;
+  background-image: url('../../resources/themes/images/default/menu/menu-item-active-bg.gif'); }
+
+/* line 199, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+.x-menu-date-item {
+  border-color: #99BBE8; }
+
+/* line 8, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-panel .x-grid-body {
+  background: white;
+  border-color: #99bce8;
+  border-style: solid;
+  border-width: 1px;
+  border-top-color: #c5c5c5; }
+/* line 17, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-panel .x-grid-header-ct-hidden {
+  visibility: hidden; }
+
+/* line 22, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-empty {
+  padding: 10px;
+  color: gray;
+  font: normal 11px tahoma, arial, helvetica, sans-serif; }
+
+/* line 28, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-header-hidden .x-grid-body {
+  border-top-color: #99bce8 !important; }
+
+/* line 32, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-view {
+  overflow: hidden;
+  position: relative; }
+
+/* line 38, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-table {
+  table-layout: fixed;
+  border-collapse: separate; }
+
+/* line 45, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-autowidth-table table.x-grid-table {
+  table-layout: auto;
+  width: auto!important; }
+
+/* line 50, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row .x-grid-table {
+  border-collapse: collapse; }
+
+/* line 54, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-locked .x-grid-inner-locked {
+  border-width: 0 1px 0 0 !important;
+  border-style: solid; }
+
+/* line 59, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-header-ct {
+  cursor: default;
+  zoom: 1;
+  padding: 0;
+  border: 1px solid #99bce8;
+  border-bottom-color: #c5c5c5; }
+
+/* line 73, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-accordion-item .x-grid-header-ct {
+  border-width: 0 0 1px 0!important; }
+
+/* line 77, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header {
+  padding: 0;
+  position: absolute;
+  overflow: hidden;
+  border-right: 1px solid #c5c5c5;
+  border-left: 0 none;
+  border-top: 0 none;
+  border-bottom: 0 none;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.3);
+  color: null;
+  font: normal 11px tahoma, arial, verdana, sans-serif; }
+
+/* line 99, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-group-header {
+  padding: 0;
+  border-left-width: 0; }
+
+/* line 103, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-group-sub-header {
+  background: transparent;
+  border-top: 1px solid #c5c5c5;
+  border-left-width: 0; }
+
+/* line 109, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-inner {
+  zoom: 1;
+  position: relative;
+  white-space: nowrap;
+  line-height: 15px;
+  padding: 3px 6px 4px; }
+  /* line 116, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-column-header-inner .x-column-header-text {
+    white-space: nowrap; }
+
+/* line 123, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-over,
+.x-column-header-sort-ASC,
+.x-column-header-sort-DESC {
+  border-left-color: #aaccf6;
+  border-right-color: #aaccf6; }
+
+/* line 135, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-grid-header-ct,
+.x-nlg .x-column-header {
+  background: repeat-x 0 top;
+  background-image: url('../../resources/themes/images/default/grid/column-header-bg.gif'); }
+/* line 142, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-column-header-over,
+.x-nlg .x-column-header-sort-ASC,
+.x-nlg .x-column-header-sort-DESC {
+  background: #ebf3fd repeat-x 0 top;
+  background-image: url('../../resources/themes/images/default/grid/column-header-over-bg.gif'); }
+
+/* line 149, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-trigger {
+  display: none;
+  height: 100%;
+  width: 14px;
+  background: no-repeat left center;
+  background-color: #c3daf9;
+  background-image: url('../../resources/themes/images/default/grid/grid3-hd-btn.gif');
+  position: absolute;
+  right: 0;
+  top: 0;
+  z-index: 2;
+  cursor: pointer; }
+
+/* line 164, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-over .x-column-header-trigger, .x-column-header-open .x-column-header-trigger {
+  display: block; }
+
+/* line 169, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-align-right {
+  text-align: right; }
+  /* line 172, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-column-header-align-right .x-column-header-text {
+    padding-right: 0.5ex;
+    margin-right: 6px; }
+
+/* line 177, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-align-center {
+  text-align: center; }
+
+/* line 180, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-align-left {
+  text-align: left; }
+
+/* line 185, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-sort-ASC .x-column-header-text {
+  padding-right: 16px;
+  background: no-repeat right 6px;
+  background-image: url('../../resources/themes/images/default/grid/sort_asc.gif'); }
+
+/* line 190, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-sort-DESC .x-column-header-text {
+  padding-right: 16px;
+  background: no-repeat right 6px;
+  background-image: url('../../resources/themes/images/default/grid/sort_desc.gif'); }
+
+/* line 197, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row {
+  vertical-align: top; }
+  /* line 199, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row .x-grid-cell {
+    color: null;
+    font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+    background-color: white;
+    border-color: #ededed;
+    border-style: solid;
+    border-top-color: #fafafa;
+    border-width: 0; }
+
+/* line 212, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-grid-cell {
+  border-width: 1px 0; }
+
+/* line 216, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-rowwrap-div {
+  border-width: 1px 0;
+  border-color: #ededed;
+  border-style: solid;
+  border-top-color: #fafafa;
+  overflow: hidden; }
+
+/* line 226, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-alt .x-grid-cell,
+.x-grid-row-alt .x-grid-rowwrap-div {
+  background-color: #fafafa; }
+
+/* line 231, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-over .x-grid-cell,
+.x-grid-row-over .x-grid-rowwrap-div {
+  border-color: #dddddd;
+  background-color: #efefef; }
+
+/* line 238, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-focused .x-grid-cell,
+.x-grid-row-focused .x-grid-rowwrap-div {
+  border-color: #dddddd;
+  background-color: #efefef; }
+
+/* line 245, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-selected .x-grid-cell,
+.x-grid-row-selected .x-grid-rowwrap-div {
+  border-style: dotted;
+  border-color: #a3bae9;
+  background-color: #dfe8f6 !important; }
+
+/* line 254, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-rowwrap-div .x-grid-cell,
+.x-grid-rowwrap-div .x-grid-cell-inner {
+  border-width: 0;
+  background: transparent; }
+
+/* line 261, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-body-hidden {
+  display: none; }
+
+/* line 265, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-rowbody {
+  font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+  padding: 4px; }
+  /* line 270, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-rowbody p {
+    margin: 5px 5px 10px 5px; }
+
+/* line 276, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell {
+  overflow: hidden; }
+
+/* line 280, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell-inner {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis;
+  padding: 2px 6px 3px;
+  white-space: nowrap; }
+
+/* line 291, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-grid-cell-inner {
+  line-height: 13px;
+  padding-bottom: 4px; }
+
+/* line 297, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-action-col-cell .x-grid-cell-inner {
+  line-height: 0;
+  padding: 2px; }
+
+/* line 302, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-action-col-cell .x-item-disabled {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 306, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-action-col-cell .x-grid-cell-inner {
+  padding-top: 1px; }
+
+/* line 310, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row .x-grid-cell-special {
+  padding: 0;
+  border-right: 1px solid #d0d0d0;
+  background-image: none;
+  background-color: #f6f6f6;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #f6f6f6), color-stop(100%, #e9e9e9));
+  background-image: -webkit-linear-gradient(left, #f6f6f6, #e9e9e9);
+  background-image: -moz-linear-gradient(left, #f6f6f6, #e9e9e9);
+  background-image: -o-linear-gradient(left, #f6f6f6, #e9e9e9);
+  background-image: -ms-linear-gradient(left, #f6f6f6, #e9e9e9);
+  background-image: linear-gradient(left, #f6f6f6, #e9e9e9); }
+
+/* line 316, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row .x-grid-cell-row-checker {
+  vertical-align: middle; }
+
+/*
+IE6-8 have issues with shrinking the TR to 0px (even w/line-height=0), so we
+use an IE-specific trick to make the row disappear. We cannot do this on any
+other browser, because it is not a non-standard thing to do and those other
+browsers will do whacky things with it.
+*/
+/* line 330, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie6 .x-grid-header-row,
+.x-ie7 .x-grid-header-row,
+.x-quirks .x-ie8 .x-grid-header-row {
+  position: absolute; }
+
+/* line 335, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-selected .x-grid-cell-special {
+  border-right: 1px solid #aaccf6;
+  background-image: none;
+  background-color: #dfe8f6;
+  background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dfe8f6), color-stop(100%, #cbdaf0));
+  background-image: -webkit-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: -moz-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: -o-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: -ms-linear-gradient(left, #dfe8f6, #cbdaf0);
+  background-image: linear-gradient(left, #dfe8f6, #cbdaf0); }
+
+/* line 341, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-dirty-cell {
+  background-image: url('../../resources/themes/images/default/grid/dirty.gif');
+  background-position: 0 0;
+  background-repeat: no-repeat; }
+
+/* line 347, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell-selected {
+  background-color: #B8CFEE !important; }
+
+/* line 353, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-grid-cell-special {
+  background-repeat: repeat-y;
+  background-position: top right; }
+/* line 359, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-grid-row .x-grid-cell-special,
+.x-nlg .x-grid-row-over .x-grid-cell-special {
+  background-image: url('../../resources/themes/images/default/grid/cell-special-bg.gif'); }
+/* line 365, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-nlg .x-grid-row-focused .x-grid-cell-special,
+.x-nlg .x-grid-row-selected .x-grid-cell-special {
+  background-image: url('../../resources/themes/images/default/grid/cell-special-selected-bg.gif'); }
+
+/* line 371, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-col-lines .x-grid-cell {
+  padding-right: 0;
+  border-right: 1px solid #d0d0d0; }
+
+/* line 378, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,
+.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner {
+  padding-left: 12px;
+  background-image: url('../../resources/themes/images/default/grid/property-cell-bg.gif');
+  background-repeat: no-repeat;
+  background-position: -16px 2px; }
+
+/* line 388, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,
+.x-grid-with-row-lines.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner {
+  background-position: -16px 1px; }
+
+/* line 399, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-unselectable {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default; }
+
+/* line 403, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-body-hidden {
+  display: none; }
+
+/* line 407, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-collapsed {
+  display: none; }
+
+/* line 413, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-view .x-grid-td-expander {
+  vertical-align: top; }
+
+/* line 418, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-td-expander {
+  background: repeat-y right transparent; }
+
+/* line 424, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-view .x-grid-td-expander .x-grid-cell-inner {
+  padding: 0 !important; }
+
+/* line 430, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-expander {
+  background-image: url('../../resources/themes/images/default/grid/group-collapse.gif');
+  background-color: transparent;
+  width: 9px;
+  height: 13px;
+  margin-left: 3px;
+  background-repeat: no-repeat;
+  background-position: 0 -2px; }
+
+/* line 444, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-collapsed .x-grid-row-expander {
+  background-image: url('../../resources/themes/images/default/grid/group-expand.gif'); }
+
+/* line 449, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-resize-marker {
+  position: absolute;
+  z-index: 5;
+  top: 0;
+  width: 1px;
+  background-color: #0f0f0f; }
+
+/* line 459, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.col-move-top, .col-move-bottom {
+  width: 9px;
+  height: 9px;
+  position: absolute;
+  top: 0;
+  line-height: 0;
+  font-size: 0;
+  overflow: hidden;
+  z-index: 20000;
+  background: no-repeat left top transparent; }
+
+/* line 471, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.col-move-top {
+  background-image: url('../../resources/themes/images/default/grid/col-move-top.gif'); }
+
+/* line 475, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.col-move-bottom {
+  background-image: url('../../resources/themes/images/default/grid/col-move-bottom.gif'); }
+
+/* line 480, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-number {
+  width: 30px; }
+
+/* line 487, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group,
+.x-grid-group-body,
+.x-grid-group-hd {
+  zoom: 1; }
+
+/* line 491, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-hd {
+  padding-top: 6px; }
+  /* line 494, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-group-hd .x-grid-cell-inner {
+    padding: 10px 4px 4px 4px;
+    background: white;
+    border-width: 0 0 2px 0;
+    border-style: solid;
+    border-color: #99bbe8;
+    cursor: pointer; }
+
+/* line 508, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-hd-collapsible .x-grid-group-title {
+  background: transparent no-repeat 0 -1px;
+  background-image: url('../../resources/themes/images/default/grid/group-collapse.gif');
+  padding: 0 0 0 14px; }
+
+/* line 515, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-title {
+  color: #3764a0;
+  font: bold 11px tahoma, arial, verdana, sans-serif; }
+
+/* line 521, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-hd-collapsed .x-grid-group-title {
+  background-image: url('../../resources/themes/images/default/grid/group-expand.gif'); }
+
+/* line 526, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-collapsed .x-grid-group-body {
+  display: none; }
+
+/* line 530, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-group-collapsed .x-grid-group-title {
+  background-image: url('../../resources/themes/images/default/grid/group-expand.gif'); }
+
+/* line 534, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-group-by-icon {
+  background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+
+/* line 538, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-show-groups-icon {
+  background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+
+/* line 542, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-checkbox .x-column-header-inner {
+  padding: 0; }
+
+/* line 546, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell-special .x-grid-cell-inner {
+  padding-left: 4px;
+  padding-right: 4px; }
+
+/* line 552, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-checker,
+.x-column-header-checkbox .x-column-header-text {
+  height: 14px;
+  width: 14px;
+  line-height: 0;
+  background-image: url('../../resources/themes/images/default/grid/unchecked.gif');
+  background-position: -1px -1px;
+  background-repeat: no-repeat;
+  background-color: transparent; }
+
+/* line 564, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-column-header-checkbox .x-column-header-text {
+  display: block;
+  margin: 0 5px; }
+
+/* line 579, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-hd-checker-on .x-column-header-text {
+  background-image: url('../../resources/themes/images/default/grid/checked.gif'); }
+
+/* line 583, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-cell-row-checker .x-grid-cell-inner {
+  padding-top: 4px;
+  padding-bottom: 2px;
+  line-height: 14px; }
+
+/* line 588, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-with-row-lines .x-grid-cell-row-checker .x-grid-cell-inner {
+  padding-top: 3px; }
+
+/* line 591, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-checker {
+  margin-left: 1px;
+  background-position: 50% -2px; }
+
+/* line 598, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-selected .x-grid-row-checker,
+.x-grid-row-checked .x-grid-row-checker {
+  background-image: url('../../resources/themes/images/default/grid/checked.gif'); }
+
+/* line 603, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-first {
+  background-image: url('../../resources/themes/images/default/grid/page-first.gif') !important; }
+
+/* line 607, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-loading {
+  background-image: url('../../resources/themes/images/default/grid/refresh.gif') !important; }
+
+/* line 611, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-last {
+  background-image: url('../../resources/themes/images/default/grid/page-last.gif') !important; }
+
+/* line 615, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-next {
+  background-image: url('../../resources/themes/images/default/grid/page-next.gif') !important; }
+
+/* line 619, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-tbar-page-prev {
+  background-image: url('../../resources/themes/images/default/grid/page-prev.gif') !important; }
+
+/* line 624, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-loading {
+  background-image: url('../../resources/themes/images/default/grid/refresh-disabled.gif') !important; }
+/* line 628, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-first {
+  background-image: url('../../resources/themes/images/default/grid/page-first-disabled.gif') !important; }
+/* line 632, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-last {
+  background-image: url('../../resources/themes/images/default/grid/page-last-disabled.gif') !important; }
+/* line 636, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-next {
+  background-image: url('../../resources/themes/images/default/grid/page-next-disabled.gif') !important; }
+/* line 640, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-item-disabled .x-tbar-page-prev {
+  background-image: url('../../resources/themes/images/default/grid/page-prev-disabled.gif') !important; }
+
+/* line 646, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-hmenu-sort-asc .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/grid/hmenu-asc.gif'); }
+
+/* line 650, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-hmenu-sort-desc .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/grid/hmenu-desc.gif'); }
+
+/* line 654, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-hmenu-lock .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/grid/hmenu-lock.gif'); }
+
+/* line 658, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-hmenu-unlock .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/grid/hmenu-unlock.gif'); }
+
+/* line 662, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-group-by-icon {
+  background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+
+/* line 666, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-cols-icon .x-menu-item-icon {
+  background-image: url('../../resources/themes/images/default/grid/columns.gif'); }
+
+/* line 670, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-show-groups-icon {
+  background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+
+/* line 675, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-drop-indicator {
+  position: absolute;
+  height: 1px;
+  line-height: 0px;
+  background-color: #77BC71;
+  overflow: visible; }
+  /* line 682, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-drop-indicator .x-grid-drop-indicator-left {
+    position: absolute;
+    top: -8px;
+    left: -12px;
+    background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-right.png');
+    height: 16px;
+    width: 16px; }
+  /* line 691, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-drop-indicator .x-grid-drop-indicator-right {
+    position: absolute;
+    top: -8px;
+    right: -11px;
+    background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-left.png');
+    height: 16px;
+    width: 16px; }
+
+/* line 702, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie6 .x-grid-drop-indicator-left {
+  background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-right.gif'); }
+/* line 706, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-ie6 .x-grid-drop-indicator-right {
+  background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-left.gif'); }
+
+/* line 714, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-text {
+  padding: 0 4px; }
+/* line 717, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-cb-wrap {
+  padding-top: 3px; }
+
+/* line 723, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor {
+  position: absolute !important;
+  z-index: 1;
+  zoom: 1;
+  overflow: visible !important; }
+  /* line 729, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-text {
+    padding: 0 2px; }
+  /* line 732, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-cb-wrap {
+    padding-top: 0; }
+  /* line 735, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-checkbox {
+    margin-left: -4px; }
+  /* line 738, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-form-display-field {
+    font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+    padding-top: 0;
+    padding-left: 2px; }
+  /* line 744, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-grid-row-editor .x-panel-body {
+    background-color: #eaf1fb;
+    border-top: 1px solid #99bce8 !important;
+    border-bottom: 1px solid #99bce8 !important; }
+
+/* line 754, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-cb-wrap, .x-grid-row-editor .x-form-cb-wrap {
+  text-align: center; }
+/* line 757, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-trigger, .x-grid-row-editor .x-form-trigger {
+  height: 19px; }
+/* line 761, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-trigger-wrap .x-form-spinner-up, .x-grid-editor .x-form-trigger-wrap .x-form-spinner-down, .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-up, .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url('../../resources/themes/images/default/form/spinner-small.gif');
+  height: 10px !important; }
+
+/* line 768, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-editor .x-form-text, .x-grid-row-editor .x-form-text {
+  font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+  height: 18px; }
+
+/* line 776, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-border-box .x-grid-editor .x-form-trigger,
+.x-border-box .x-grid-row-editor .x-form-trigger {
+  height: 20px; }
+/* line 779, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-border-box .x-grid-editor .x-form-text,
+.x-border-box .x-grid-row-editor .x-form-text {
+  height: 20px;
+  padding-bottom: 1px; }
+
+/* line 818, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-opera .x-grid-editor .x-form-text {
+  padding-left: 5px; }
+/* line 821, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-opera .x-grid-row-editor .x-form-text {
+  padding-left: 3px; }
+
+/* line 828, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons {
+  background-color: #eaf1fb;
+  position: absolute;
+  bottom: -31px;
+  padding: 4px;
+  height: 32px; }
+  /* line 835, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-strict .x-ie7m .x-grid-row-editor-buttons {
+    width: 192px;
+    height: 24px; }
+
+/* line 845, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-ml,
+.x-grid-row-editor-buttons-mr,
+.x-grid-row-editor-buttons-bl,
+.x-grid-row-editor-buttons-br,
+.x-grid-row-editor-buttons-bc {
+  position: absolute;
+  overflow: hidden; }
+
+/* line 851, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-bl,
+.x-grid-row-editor-buttons-br {
+  width: 4px;
+  height: 4px;
+  bottom: 0px;
+  background-image: url('../../resources/themes/images/default/panel/panel-default-framed-corners.gif'); }
+
+/* line 857, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-bl {
+  left: 0px;
+  background-position: 0px -16px; }
+
+/* line 861, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-br {
+  right: 0px;
+  background-position: 0px -20px; }
+
+/* line 866, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-bc {
+  position: absolute;
+  left: 4px;
+  bottom: 0px;
+  width: 192px;
+  height: 1px;
+  background-color: #99bce8; }
+
+/* line 876, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-ml,
+.x-grid-row-editor-buttons-mr {
+  height: 27px;
+  width: 1px;
+  top: 1px;
+  background-color: #99bce8; }
+
+/* line 882, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-ml {
+  left: 0px; }
+
+/* line 885, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-buttons-mr {
+  background-position: 0px -20px;
+  right: 0px; }
+
+/* line 891, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-errors ul {
+  margin-left: 5px; }
+/* line 894, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+.x-grid-row-editor-errors li {
+  list-style: disc;
+  margin-left: 15px; }
+
+/*misc*/
+/* line 9, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-webkit *:focus {
+  outline: none !important; }
+
+/* line 16, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item {
+  vertical-align: top;
+  table-layout: fixed; }
+
+/* line 26, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-autocontainer-form-item,
+.x-anchor-form-item,
+.x-vbox-form-item,
+.x-checkboxgroup-form-item,
+.x-table-form-item {
+  margin-bottom: 5px; }
+
+/* line 31, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-layout-table {
+  border-collapse: separate;
+  border-spacing: 0 2px; }
+
+/* line 37, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item-body {
+  position: relative; }
+
+/* line 42, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-form-item td {
+  border-top: 1px solid transparent; }
+
+/* line 51, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-ie6 .x-form-layout-table {
+  border-collapse: collapse;
+  border-spacing: 0; }
+/* line 56, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-ie6 .x-form-form-item td {
+  border-top-width: 0; }
+/* line 62, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-ie6 td.x-form-item-pad {
+  height: 5px; }
+
+/* line 68, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-editor .x-form-item-body {
+  padding-bottom: 0; }
+
+/* line 72, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item-label {
+  display: block;
+  padding: 3px 0 0;
+  font-size: 12px;
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default; }
+
+/* line 79, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item-label-top {
+  display: block;
+  zoom: 1;
+  padding: 0 0 5px 0; }
+
+/* line 85, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-item-label-right {
+  text-align: right; }
+
+/* line 89, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-invalid-under {
+  padding: 2px 2px 2px 18px;
+  color: #c0272b;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  line-height: 16px;
+  background: no-repeat 0 2px;
+  background-image: url('../../resources/themes/images/default/form/exclamation.gif'); }
+
+/* line 100, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-form-invalid-icon {
+  width: 18px;
+  height: 14px;
+  background: no-repeat center center;
+  background-image: url('../../resources/themes/images/default/form/exclamation.gif');
+  overflow: hidden; }
+  /* line 106, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-form-invalid-icon ul {
+    display: block;
+    width: 18px; }
+    /* line 109, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+    .x-form-invalid-icon ul li {
+      /* prevent inner elements from interfering with QuickTip hovering */
+      display: none; }
+
+/* line 117, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+.x-lbl-top-err-icon {
+  margin-bottom: 4px; }
+
+/* line 7, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-field,
+.x-form-display-field {
+  margin: 0 0 0 0;
+  font: normal 12px tahoma, arial, verdana, sans-serif;
+  color: black; }
+
+/* line 14, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-item-hidden {
+  margin: 0; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-text,
+textarea.x-form-field {
+  padding: 1px 3px;
+  background: repeat-x 0 0;
+  border: 1px solid;
+  background-color: white;
+  background-image: url('../../resources/themes/images/default/form/text-bg.gif');
+  border-color: #b5b8c8; }
+
+/* line 36, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-text {
+  height: 18px;
+  line-height: 15px;
+  vertical-align: top; }
+
+/* line 43, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-ie8m .x-form-text {
+  line-height: 15px; }
+
+/* line 48, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-border-box .x-form-text {
+  height: 22px; }
+
+/* line 52, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+textarea.x-form-field {
+  color: black;
+  overflow: auto;
+  height: auto;
+  line-height: normal;
+  background: repeat-x 0 0;
+  background-color: white;
+  background-image: url('../../resources/themes/images/default/form/text-bg.gif');
+  resize: none; }
+
+/* line 65, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-border-box textarea.x-form-field {
+  height: auto; }
+
+/* line 70, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-safari.x-mac textarea.x-form-field {
+  margin-bottom: -2px; }
+
+/* line 76, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-focus,
+textarea.x-form-focus {
+  border-color: #7eadd9; }
+
+/* line 81, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-invalid-field,
+textarea.x-form-invalid-field {
+  background-color: white;
+  background-image: url('../../resources/themes/images/default/grid/invalid_line.gif');
+  background-repeat: repeat-x;
+  background-position: bottom;
+  border-color: #cc3300; }
+
+/* line 91, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-item {
+  font: normal 12px tahoma, arial, verdana, sans-serif; }
+
+/* line 95, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-empty-field, textarea.x-form-empty-field {
+  color: gray; }
+
+/* line 100, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-webkit .x-form-empty-field {
+  line-height: 15px; }
+
+/* line 105, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-form-display-field {
+  padding-top: 3px; }
+
+/* line 135, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-field-default-toolbar .x-form-text {
+  height: 16px; }
+
+/* line 139, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-border-box .x-field-default-toolbar .x-form-text {
+  height: 20px; }
+
+/* line 143, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+.x-field-default-toolbar .x-form-item-label-left {
+  padding-left: 4px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset {
+  border: 1px solid #b5b8c8;
+  padding: 10px;
+  margin-bottom: 10px;
+  display: block;
+  /* preserve margins in IE */
+  position: relative; }
+
+/* line 18, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-ie .x-fieldset {
+  padding-top: 0; }
+  /* line 20, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-ie .x-fieldset .x-fieldset-body {
+    padding-top: 10px; }
+
+/* line 25, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-header-checkbox {
+  line-height: 14px; }
+
+/* line 29, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-header {
+  font: 11px/14px bold tahoma, arial, verdana, sans-serif;
+  color: #15428b;
+  padding: 0 3px 1px;
+  overflow: hidden; }
+  /* line 35, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-fieldset-header-text {
+    float: left;
+    padding: 1px 0; }
+  /* line 39, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-fieldset-header-text-collapsible {
+    cursor: pointer; }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-form-item,
+  .x-fieldset-header .x-tool {
+    float: left;
+    margin: 1px 0 0 0; }
+  /* line 49, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-fieldset-header .x-form-cb-wrap {
+    padding: 1px 0;
+    font-size: 0;
+    line-height: 0; }
+
+/* line 58, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-with-title .x-fieldset-header-checkbox,
+.x-fieldset-with-title .x-tool {
+  margin-right: 3px; }
+
+/* line 65, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-webkit .x-fieldset-header {
+  -webkit-padding-start: 3px;
+  -webkit-padding-end: 3px; }
+
+/* line 75, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-opera .x-fieldset-with-legend {
+  margin-top: -1px; }
+/* line 78, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-opera.x-mac .x-fieldset-header-text {
+  padding: 2px 0 0; }
+
+/* line 108, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-collapsed .x-fieldset-body {
+  display: none; }
+
+/* line 113, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-collapsed {
+  padding-bottom: 0 !important;
+  border-width: 1px 1px 0 1px !important;
+  border-left-color: transparent !important;
+  border-right-color: transparent !important; }
+
+/* line 149, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset {
+  overflow: hidden; }
+
+/* line 153, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-bwrap {
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 159, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+.x-fieldset-body {
+  overflow: hidden; }
+
+/* line 8, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+.x-form-file-wrap .x-form-text {
+  color: #777; }
+/* line 12, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+.x-form-file-wrap .x-form-file-btn {
+  overflow: hidden; }
+/* line 16, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+.x-form-file-wrap .x-form-file-input {
+  position: absolute;
+  top: -4px;
+  right: -2px;
+  height: 30px;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  /* Yes, there's actually a good reason for this...
+   * If the configured buttonText is set to something longer than the default,
+   * then it will quickly exceed the width of the hidden file input's "Browse..."
+   * button, so part of the custom button's clickable area will be covered by
+   * the hidden file input's text box instead. This results in a text-selection
+   * mouse cursor over that part of the button, at least in Firefox, which is
+   * confusing to a user. Giving the hidden file input a huge font-size makes
+   * the native button part very large so it will cover the whole clickable area.
+   */
+  font-size: 100px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-wrap {
+  padding-top: 3px; }
+
+/* line 11, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-checkbox,
+.x-form-radio {
+  vertical-align: -1px;
+  width: 13px;
+  height: 13px;
+  background: no-repeat;
+  background-image: url('../../resources/themes/images/default/form/checkbox.gif');
+  overflow: hidden;
+  padding: 0;
+  border: 0; }
+  /* line 22, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-form-checkbox::-moz-focus-inner,
+  .x-form-radio::-moz-focus-inner {
+    padding: 0;
+    border: 0; }
+
+/* line 38, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-checked .x-form-checkbox,
+.x-form-cb-checked .x-form-radio {
+  background-position: 0 -13px; }
+
+/* Focused */
+/* line 44, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-focus {
+  background-position: -13px 0; }
+
+/* line 48, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-checked .x-form-cb-focus {
+  background-position: -13px -13px; }
+
+/* Radios */
+/* line 54, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-radio {
+  background-image: url('../../resources/themes/images/default/form/radio.gif'); }
+
+/* boxLabel */
+/* line 59, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-label-before {
+  margin-right: 4px; }
+
+/* line 62, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+.x-form-cb-label-after {
+  margin-left: 4px; }
+
+/* line 7, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+.x-form-checkboxgroup-body {
+  padding: 1px 4px 1px 4px; }
+
+/* line 12, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+.x-form-invalid .x-form-checkboxgroup-body {
+  border: 1px solid #c30!important;
+  background: transparent repeat-x bottom;
+  background-image: url('../../resources/themes/images/default/grid/invalid_line.gif');
+  padding: 1px 3px 0 3px; }
+
+/* line 20, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+.x-check-group-alt {
+  background: #d1ddef;
+  border-top: 1px dotted #b5b8c8;
+  border-bottom: 1px dotted #b5b8c8; }
+
+/* line 27, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+.x-form-check-group-label {
+  color: #333;
+  border-bottom: 1px solid #333;
+  margin: 0 30px 5px 0;
+  padding: 2px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap {
+  vertical-align: top; }
+
+/* line 10, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger {
+  background-image: url('../../resources/themes/images/default/form/trigger.gif');
+  background-position: 0 0;
+  width: 17px;
+  height: 21px;
+  border-bottom: 1px solid #b5b8c8;
+  cursor: pointer;
+  cursor: hand;
+  overflow: hidden; }
+
+/* line 24, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-border-box .x-form-trigger {
+  height: 22px; }
+
+/* line 28, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger {
+  height: 19px; }
+
+/* line 32, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-border-box .x-field-default-toolbar .x-form-trigger {
+  height: 20px; }
+
+/* line 37, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-over {
+  background-position: -17px 0;
+  border-bottom-color: #7eadd9; }
+
+/* line 43, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap-focus .x-form-trigger {
+  background-position: -51px 0;
+  border-bottom-color: #7eadd9; }
+
+/* line 49, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap-focus .x-form-trigger-over {
+  background-position: -68px 0;
+  border-bottom-color: null; }
+
+/* line 58, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-click,
+.x-form-trigger-wrap-focus .x-form-trigger-click {
+  background-position: -34px 0;
+  border-bottom-color: null; }
+
+/* line 66, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-icon {
+  height: 16px;
+  background-repeat: no-repeat;
+  background-position: 7px 6px; }
+
+/* line 74, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-pickerfield-open .x-form-field {
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+/* line 80, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-pickerfield-open-above .x-form-field {
+  -moz-border-radius-bottomleft: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  -o-border-bottom-left-radius: 3px;
+  -ms-border-bottom-left-radius: 3px;
+  -khtml-border-bottom-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-arrow-trigger .x-form-trigger-icon {
+  background-image: url('../../resources/themes/images/default/boundlist/trigger-arrow.png'); }
+
+/* line 92, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-date-trigger {
+  background-image: url('../../resources/themes/images/default/form/date-trigger.gif'); }
+
+/* line 99, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap .x-form-spinner-up,
+.x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url('../../resources/themes/images/default/form/spinner.gif');
+  width: 17px !important;
+  height: 11px !important;
+  font-size: 0;
+  /*for IE*/
+  border-bottom: 0; }
+/* line 109, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap .x-form-spinner-down {
+  background-position: 0 -11px; }
+
+/* line 113, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down {
+  background-position: -51px -11px; }
+
+/* line 116, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap .x-form-spinner-down-over {
+  background-position: -17px -11px; }
+
+/* line 119, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap-focus .x-form-spinner-down-over {
+  background-position: -68px -11px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-trigger-wrap .x-form-spinner-down-click {
+  background-position: -34px -11px; }
+
+/* line 131, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-up,
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down {
+  background-image: url('../../resources/themes/images/default/form/spinner-small.gif');
+  height: 10px !important; }
+/* line 135, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down {
+  background-position: 0 -10px; }
+/* line 139, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down {
+  background-position: -51px -10px; }
+/* line 142, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-over {
+  background-position: -17px -10px; }
+/* line 145, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down-over {
+  background-position: -68px -10px; }
+/* line 148, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-click {
+  background-position: -34px -10px; }
+
+/* line 154, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-trigger-noedit {
+  cursor: pointer;
+  cursor: hand; }
+
+/* line 160, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-item-disabled .x-trigger-noedit, .x-item-disabled .x-form-trigger {
+  cursor: auto; }
+
+/* line 166, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-clear-trigger {
+  background-image: url('../../resources/themes/images/default/form/clear-trigger.gif'); }
+
+/* line 169, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+.x-form-search-trigger {
+  background-image: url('../../resources/themes/images/default/form/search-trigger.gif'); }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-wrap {
+  border: 1px solid #b5b8c8; }
+  /* line 9, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-html-editor-wrap .x-toolbar {
+    border-top-width: 0;
+    border-left-width: 0;
+    border-right-width: 0; }
+  /* line 15, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-html-editor-wrap textarea {
+    background-color: white; }
+
+/* line 20, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-btn-text {
+  background: transparent no-repeat;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 26, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-bold,
+.x-menu-item img.x-edit-bold {
+  background-position: 0 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 32, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-italic,
+.x-menu-item img.x-edit-italic {
+  background-position: -16px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 38, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-underline,
+.x-menu-item img.x-edit-underline {
+  background-position: -32px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 44, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-forecolor,
+.x-menu-item img.x-edit-forecolor {
+  background-position: -160px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 50, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-backcolor,
+.x-menu-item img.x-edit-backcolor {
+  background-position: -176px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 56, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-justifyleft,
+.x-menu-item img.x-edit-justifyleft {
+  background-position: -112px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 62, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-justifycenter,
+.x-menu-item img.x-edit-justifycenter {
+  background-position: -128px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 68, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-justifyright,
+.x-menu-item img.x-edit-justifyright {
+  background-position: -144px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 74, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-insertorderedlist,
+.x-menu-item img.x-edit-insertorderedlist {
+  background-position: -80px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 80, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-insertunorderedlist,
+.x-menu-item img.x-edit-insertunorderedlist {
+  background-position: -96px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 86, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-increasefontsize,
+.x-menu-item img.x-edit-increasefontsize {
+  background-position: -48px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 92, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-decreasefontsize,
+.x-menu-item img.x-edit-decreasefontsize {
+  background-position: -64px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 98, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-sourceedit,
+.x-menu-item img.x-edit-sourceedit {
+  background-position: -192px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 104, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-edit-createlink,
+.x-menu-item img.x-edit-createlink {
+  background-position: -208px 0;
+  background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+
+/* line 109, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tip .x-tip-bd .x-tip-bd-inner {
+  padding: 5px;
+  padding-bottom: 1px; }
+
+/* line 115, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-toolbar {
+  position: static !important; }
+/* line 118, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-tb .x-font-select {
+  font-size: 11px; }
+
+/* line 123, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+.x-html-editor-wrap textarea {
+  border: 0;
+  padding: 3px 2px;
+  overflow: auto; }
+
+/* line 7, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel,
+.x-plain {
+  overflow: hidden;
+  position: relative; }
+
+/* line 37, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-horizontal {
+  padding: 3px 5px 4px; }
+
+/* line 40, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-vertical {
+  padding: 5px 4px; }
+
+/* line 45, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-icon,
+.x-window-header-icon {
+  width: 16px;
+  height: 16px;
+  background-repeat: no-repeat;
+  background-position: 0 0;
+  vertical-align: middle;
+  margin-right: 4px; }
+
+/* line 56, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-vertical .x-panel-header-icon,
+.x-vertical .x-window-header-icon {
+  margin: 0 0 4px; }
+
+/* line 64, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-draggable,
+.x-panel-header-draggable .x-panel-header-text,
+.x-window-header-draggable,
+.x-window-header-draggable .x-window-header-text {
+  cursor: move; }
+
+/* line 70, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-ghost, .x-window-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+  opacity: 0.65;
+  cursor: move; }
+
+/* line 76, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-horizontal .x-panel-header-body, .x-panel-header-horizontal .x-window-header-body, .x-panel-header-horizontal .x-btn-group-header-body, .x-window-header-horizontal .x-panel-header-body, .x-window-header-horizontal .x-window-header-body, .x-window-header-horizontal .x-btn-group-header-body, .x-btn-group-header-horizontal .x-panel-header-body, .x-btn-group-header-horizontal .x-window-header-body, .x-btn-group-header-horizontal .x-btn-group-header-body {
+  width: 100%; }
+
+/* line 82, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-vertical .x-panel-header-body, .x-panel-header-vertical .x-window-header-body, .x-panel-header-vertical .x-btn-group-header-body, .x-window-header-vertical .x-panel-header-body, .x-window-header-vertical .x-window-header-body, .x-window-header-vertical .x-btn-group-header-body, .x-btn-group-header-vertical .x-panel-header-body, .x-btn-group-header-vertical .x-window-header-body, .x-btn-group-header-vertical .x-btn-group-header-body {
+  height: 100%; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-text-container {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis; }
+
+/* line 93, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-text {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  white-space: nowrap; }
+
+/* line 100, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-left .x-vml-base,
+.x-panel-header-right .x-vml-base {
+  left: -3px !important; }
+
+/* line 106, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-body {
+  overflow: hidden;
+  position: relative;
+  font-size: 12px; }
+
+/* line 114, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-vertical .x-surface {
+  padding-left: 1px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-opera .x-panel-header-vertical .x-surface,
+.x-strict .x-ie9 .x-panel-header-vertical .x-surface {
+  padding-left: 2px; }
+
+/* line 129, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-collapsed-border-top {
+  border-bottom-width: 1px !important; }
+/* line 132, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-collapsed-border-right {
+  border-left-width: 1px !important; }
+/* line 135, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-collapsed-border-bottom {
+  border-top-width: 1px !important; }
+/* line 138, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-collapsed-border-left {
+  border-right-width: 1px !important; }
+
+/* line 145, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-vertical .x-frame-mc {
+  background-repeat: repeat-y; }
+
+/* line 248, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-default {
+  border-color: #99bce8; }
+
+/* line 253, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default {
+  font-size: 11px;
+  border-color: #99bce8;
+  border-width: 1px;
+  border-style: solid; }
+
+/* line 277, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-top {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif'); }
+
+/* line 281, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-bottom {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif'); }
+
+/* line 285, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-left {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif'); }
+
+/* line 289, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-right {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif'); }
+
+/* line 293, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-right {
+  background-position: top right; }
+
+/* line 297, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-bottom {
+  background-position: bottom left; }
+
+/* line 338, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-text-default {
+  color: #04408c;
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 17px; }
+
+/* line 348, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-body-default {
+  background: white;
+  border-color: #99bce8;
+  color: black;
+  border-width: 1px;
+  border-style: solid; }
+
+/* line 363, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-window-header-default,
+.x-panel-collapsed .x-panel-header-default {
+  border-color: #99bce8; }
+
+/* line 368, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-vertical {
+  border-color: #99bce8; }
+
+/* line 416, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-top {
+  -moz-border-radius-bottomleft: null;
+  -webkit-border-bottom-left-radius: null;
+  -o-border-bottom-left-radius: null;
+  -ms-border-bottom-left-radius: null;
+  -khtml-border-bottom-left-radius: null;
+  border-bottom-left-radius: null;
+  -moz-border-radius-bottomright: null;
+  -webkit-border-bottom-right-radius: null;
+  -o-border-bottom-right-radius: null;
+  -ms-border-bottom-right-radius: null;
+  -khtml-border-bottom-right-radius: null;
+  border-bottom-right-radius: null; }
+/* line 420, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-right {
+  -moz-border-radius-topleft: null;
+  -webkit-border-top-left-radius: null;
+  -o-border-top-left-radius: null;
+  -ms-border-top-left-radius: null;
+  -khtml-border-top-left-radius: null;
+  border-top-left-radius: null;
+  -moz-border-radius-bottomleft: null;
+  -webkit-border-bottom-left-radius: null;
+  -o-border-bottom-left-radius: null;
+  -ms-border-bottom-left-radius: null;
+  -khtml-border-bottom-left-radius: null;
+  border-bottom-left-radius: null; }
+/* line 424, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-bottom {
+  -moz-border-radius-topleft: null;
+  -webkit-border-top-left-radius: null;
+  -o-border-top-left-radius: null;
+  -ms-border-top-left-radius: null;
+  -khtml-border-top-left-radius: null;
+  border-top-left-radius: null;
+  -moz-border-radius-topright: null;
+  -webkit-border-top-right-radius: null;
+  -o-border-top-right-radius: null;
+  -ms-border-top-right-radius: null;
+  -khtml-border-top-right-radius: null;
+  border-top-right-radius: null; }
+/* line 428, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-panel-header-default-left {
+  -moz-border-radius-topright: null;
+  -webkit-border-top-right-radius: null;
+  -o-border-top-right-radius: null;
+  -ms-border-top-right-radius: null;
+  -khtml-border-top-right-radius: null;
+  border-top-right-radius: null;
+  -moz-border-radius-bottomright: null;
+  -webkit-border-bottom-right-radius: null;
+  -o-border-bottom-right-radius: null;
+  -ms-border-bottom-right-radius: null;
+  -khtml-border-bottom-right-radius: null;
+  border-bottom-right-radius: null; }
+
+/* line 434, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-top {
+  -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+  box-shadow: #f4f8fd 0 1px 0px 0 inset; }
+
+/* line 438, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-right {
+  -moz-box-shadow: #f4f8fd -1px 0 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd -1px 0 0px 0 inset;
+  -o-box-shadow: #f4f8fd -1px 0 0px 0 inset;
+  box-shadow: #f4f8fd -1px 0 0px 0 inset; }
+
+/* line 442, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-bottom {
+  -moz-box-shadow: #f4f8fd 0 -1px 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 -1px 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 -1px 0px 0 inset;
+  box-shadow: #f4f8fd 0 -1px 0px 0 inset; }
+
+/* line 446, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-left {
+  -moz-box-shadow: #f4f8fd 1px 0 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 1px 0 0px 0 inset;
+  -o-box-shadow: #f4f8fd 1px 0 0px 0 inset;
+  box-shadow: #f4f8fd 1px 0 0px 0 inset; }
+
+/* line 481, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-right-tc,
+.x-panel-header-default-right-mc,
+.x-panel-header-default-right-bc {
+  background-position: right 0; }
+
+/* line 487, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-bottom-tc,
+.x-panel-header-default-bottom-mc,
+.x-panel-header-default-bottom-bc {
+  background-position: 0 bottom; }
+
+/* line 248, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-default-framed {
+  border-color: #99bce8; }
+
+/* line 253, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed {
+  font-size: 11px;
+  border-color: #99bce8;
+  border-width: 1px;
+  border-style: solid; }
+
+/* line 277, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-top {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif'); }
+
+/* line 281, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-bottom {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif'); }
+
+/* line 285, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-left {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif'); }
+
+/* line 289, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-right {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif'); }
+
+/* line 293, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-right {
+  background-position: top right; }
+
+/* line 297, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nlg .x-panel-header-default-framed-bottom {
+  background-position: bottom left; }
+
+/* line 305, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-nbr .x-panel-header-default-framed {
+  background-image: none; }
+
+/* line 317, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-strict .x-ie9 .x-panel-header-default-framed-top,
+.x-nlg.x-opera .x-panel-header-default-framed-top,
+.x-nlg.x-safari .x-panel-header-default-framed-top {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif'); }
+/* line 321, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-strict .x-ie9 .x-panel-header-default-framed-bottom,
+.x-nlg.x-opera .x-panel-header-default-framed-bottom,
+.x-nlg.x-safari .x-panel-header-default-framed-bottom {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif'); }
+/* line 325, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-strict .x-ie9 .x-panel-header-default-framed-left,
+.x-nlg.x-opera .x-panel-header-default-framed-left,
+.x-nlg.x-safari .x-panel-header-default-framed-left {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif'); }
+/* line 329, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-strict .x-ie9 .x-panel-header-default-framed-right,
+.x-nlg.x-opera .x-panel-header-default-framed-right,
+.x-nlg.x-safari .x-panel-header-default-framed-right {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif'); }
+
+/* line 338, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-text-default-framed {
+  color: #04408c;
+  font-size: 11px;
+  font-weight: bold;
+  font-family: tahoma, arial, verdana, sans-serif;
+  line-height: 17px; }
+
+/* line 348, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-body-default-framed {
+  background: #dfe9f6;
+  border-color: #99bce8;
+  color: black;
+  border-width: 0;
+  border-style: solid; }
+
+/* line 363, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-collapsed .x-window-header-default-framed,
+.x-panel-collapsed .x-panel-header-default-framed {
+  border-color: #99bce8; }
+
+/* line 368, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-vertical {
+  border-color: #99bce8; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-default-framed {
+  -moz-border-radius: 4px;
+  -webkit-border-radius: 4px;
+  -o-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -khtml-border-radius: 4px;
+  border-radius: 4px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #dfe9f6; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-default-framed-mc {
+  background-color: #dfe9f6; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 5px 4px 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #cbddf3; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-top-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-color: #cbddf3; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-right-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 3px 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #cbddf3; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-bottom-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-color: #cbddf3; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-left-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 399, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-top {
+  -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset; }
+
+/* line 403, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-right {
+  -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset;
+  box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset; }
+
+/* line 407, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-bottom {
+  -moz-box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset; }
+
+/* line 411, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-left {
+  -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  -o-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+  box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset; }
+
+/* line 452, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel .x-panel-header-default-framed-top {
+  border-bottom-width: 1px !important; }
+
+/* line 456, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel .x-panel-header-default-framed-right {
+  border-left-width: 1px !important; }
+
+/* line 460, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel .x-panel-header-default-framed-bottom {
+  border-top-width: 1px !important; }
+
+/* line 464, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel .x-panel-header-default-framed-left {
+  border-right-width: 1px !important; }
+
+/* line 468, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-collapsed {
+  -moz-border-radius: 4px;
+  -webkit-border-radius: 4px;
+  -o-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -khtml-border-radius: 4px;
+  border-radius: 4px; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-collapsed-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 3px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #cbddf3; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-top-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-collapsed-right {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #cbddf3; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-right-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-collapsed-bottom {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 3px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #cbddf3; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-bottom-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-panel-header-default-framed-collapsed-left {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #cbddf3; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-panel-header-default-framed-collapsed-left-mc {
+  background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-bg.gif');
+  background-color: #cbddf3; }
+
+/* line 481, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-right-tc,
+.x-panel-header-default-framed-right-mc,
+.x-panel-header-default-framed-right-bc {
+  background-position: right 0; }
+
+/* line 487, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-default-framed-bottom-tc,
+.x-panel-header-default-framed-bottom-mc,
+.x-panel-header-default-framed-bottom-bc {
+  background-position: 0 bottom; }
+
+/* line 197, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+.x-panel-header-plain,
+.x-panel-body-plain {
+  border: 0;
+  padding: 0; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip {
+  position: absolute;
+  overflow: visible;
+  /*pointer needs to be able to stick out*/
+  border-color: #8eaace; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-tip .x-tip-header .x-box-item {
+    padding: 3px 3px 0; }
+  /* line 16, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-tip .x-tip-header .x-tool {
+    padding: 0px 1px 0 0 !important; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-tip {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -o-border-radius: 3px;
+  -ms-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  border-radius: 3px;
+  padding: 2px 2px 2px 2px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #e9f2ff; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-tip-mc {
+  background-color: #e9f2ff; }
+
+/* line 31, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-header-text {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  color: #444444;
+  font-size: 11px;
+  font-weight: bold; }
+
+/* line 40, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-header-draggable .x-tip-header-text {
+  cursor: move; }
+
+/* line 47, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-body,
+.x-form-invalid-tip-body {
+  overflow: hidden;
+  position: relative;
+  padding: 3px; }
+
+/* line 55, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-header,
+.x-tip-body,
+.x-form-invalid-tip-body {
+  color: #444444;
+  font-size: 11px;
+  font-weight: normal; }
+  /* line 59, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-tip-header a,
+  .x-tip-body a,
+  .x-form-invalid-tip-body a {
+    color: #2a2a2a; }
+
+/* line 64, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor {
+  position: absolute;
+  overflow: hidden;
+  height: 0;
+  width: 0;
+  border-style: solid;
+  border-width: 5px;
+  border-color: #8eaace;
+  zoom: 1; }
+
+/* line 79, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-border-box .x-tip-anchor {
+  width: 10px;
+  height: 10px; }
+
+/* line 84, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor-top {
+  border-top-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent; }
+
+/* line 97, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor-bottom {
+  border-bottom-color: transparent;
+  border-left-color: transparent;
+  border-right-color: transparent; }
+
+/* line 110, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor-left {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-left-color: transparent; }
+
+/* line 123, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-tip-anchor-right {
+  border-top-color: transparent;
+  border-bottom-color: transparent;
+  border-right-color: transparent; }
+
+/* line 137, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-form-invalid-tip {
+  border-color: #a1311f;
+  -moz-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  -webkit-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  -o-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+  box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset; }
+
+/* line 146, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+.x-form-invalid-tip-body {
+  background: 1px 1px no-repeat;
+  background-image: url('../../resources/themes/images/default/form/exclamation.gif');
+  padding-left: 22px; }
+  /* line 151, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-form-invalid-tip-body li {
+    margin-bottom: 4px; }
+    /* line 153, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+    .x-form-invalid-tip-body li.last {
+      margin-bottom: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-form-invalid-tip-default {
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  -o-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -khtml-border-radius: 5px;
+  border-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: white; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-form-invalid-tip-default-mc {
+  background-color: white; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider {
+  zoom: 1; }
+
+/* line 10, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-inner {
+  position: relative;
+  left: 0;
+  top: 0;
+  overflow: visible;
+  zoom: 1; }
+
+/* line 18, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-focus {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px;
+  line-height: 1px;
+  font-size: 1px;
+  -moz-outline: 0 none;
+  outline: 0 none;
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  display: block;
+  overflow: hidden; }
+
+/* Horizontal styles */
+/* line 34, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz {
+  padding-left: 7px;
+  background: transparent no-repeat 0 -24px;
+  width: 100%; }
+
+/* line 40, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-end {
+  padding-right: 7px;
+  zoom: 1;
+  background: transparent no-repeat right -46px; }
+
+/* line 46, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-inner {
+  background: transparent repeat-x 0 -2px;
+  height: 18px; }
+
+/* line 51, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb {
+  width: 14px;
+  height: 15px;
+  margin-left: -7px;
+  position: absolute;
+  left: 0;
+  top: 1px;
+  background: transparent no-repeat 0 0; }
+
+/* line 61, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb-over {
+  background-position: -14px -15px; }
+
+/* line 65, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb-drag {
+  background-position: -28px -30px; }
+
+/* Vertical styles */
+/* line 70, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert {
+  padding-top: 7px;
+  background: transparent no-repeat -44px 0; }
+
+/* line 75, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-end {
+  padding-bottom: 7px;
+  zoom: 1;
+  background: transparent no-repeat -22px bottom;
+  width: 22px; }
+
+/* line 82, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-inner {
+  background: transparent repeat-y 0 0;
+  width: 22px; }
+
+/* line 87, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb {
+  width: 15px;
+  height: 14px;
+  margin-bottom: -7px;
+  position: absolute;
+  left: 3px;
+  bottom: 0;
+  background: transparent no-repeat 0 0; }
+
+/* line 97, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb-over {
+  background-position: -15px -14px; }
+
+/* line 101, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb-drag {
+  background-position: -30px -28px; }
+
+/* line 107, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz,
+.x-slider-horz .x-slider-end,
+.x-slider-horz .x-slider-inner {
+  background-image: url('../../resources/themes/images/default/slider/slider-bg.png'); }
+
+/* line 111, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-horz .x-slider-thumb {
+  background-image: url('../../resources/themes/images/default/slider/slider-thumb.png'); }
+
+/* line 117, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert,
+.x-slider-vert .x-slider-end,
+.x-slider-vert .x-slider-inner {
+  background-image: url('../../resources/themes/images/default/slider/slider-v-bg.png'); }
+
+/* line 121, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+.x-slider-vert .x-slider-thumb {
+  background-image: url('../../resources/themes/images/default/slider/slider-v-thumb.png'); }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress {
+  position: relative;
+  border-width: 1px;
+  border-style: solid;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0;
+  overflow: hidden;
+  height: 20px; }
+
+/* line 17, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress-bar {
+  height: 18px;
+  overflow: hidden;
+  position: absolute;
+  width: 0;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0;
+  border-right: 1px solid;
+  border-top: 1px solid; }
+
+/* line 30, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress-text {
+  overflow: hidden;
+  position: absolute;
+  padding: 0 5px;
+  height: 18px;
+  font-weight: bold;
+  font-size: 11px;
+  line-height: 16px;
+  text-align: center; }
+
+/* line 45, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress-text-back {
+  padding-top: 1px; }
+
+/* line 93, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-progress-default {
+  border-color: #6594cf; }
+  /* line 96, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-progress-default .x-progress-bar {
+    border-right-color: #6594cf;
+    border-top-color: #c6d8ed;
+    background-image: none;
+    background-color: #73a3e0;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b2ccee), color-stop(50%, #88b1e5), color-stop(51%, #73a3e0), color-stop(100%, #5e96db));
+    background-image: -webkit-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+    background-image: -moz-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+    background-image: -o-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+    background-image: -ms-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+    background-image: linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db); }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-progress-default .x-progress-text {
+    color: white; }
+  /* line 107, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-progress-default .x-progress-text-back {
+    color: #396295; }
+
+/* line 116, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+.x-nlg .x-progress-default .x-progress-bar {
+  background: repeat-x;
+  background-image: url('../../resources/themes/images/default/progress/progress-default-bg.gif'); }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar {
+  font-size: 11px;
+  border: 1px solid;
+  padding: 2px 0 2px 2px; }
+  /* line 13, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-form-item-label {
+    font-size: 11px;
+    line-height: 15px; }
+  /* line 18, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-item {
+    margin: 0 2px 0 0; }
+  /* line 22, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-text {
+    margin-left: 4px;
+    margin-right: 6px;
+    white-space: nowrap;
+    color: #4c4c4c;
+    line-height: 16px;
+    font-family: tahoma, arial, verdana, sans-serif;
+    font-size: 11px;
+    font-weight: normal; }
+  /* line 33, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-separator {
+    display: block;
+    font-size: 1px;
+    overflow: hidden;
+    cursor: default;
+    border: 0; }
+  /* line 41, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar .x-toolbar-separator-horizontal {
+    margin: 0 3px 0 2px;
+    height: 14px;
+    width: 0px;
+    border-left: 1px solid #98c8ff;
+    border-right: 1px solid white; }
+
+/* line 58, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-footer {
+  background: transparent;
+  border: 0px none;
+  margin-top: 3px;
+  padding: 2px 0 2px 6px; }
+  /* line 65, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-footer .x-box-inner {
+    border-width: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-footer .x-toolbar-item {
+    margin: 0 6px 0 0; }
+
+/* line 74, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-vertical {
+  padding: 2px 2px 0 2px; }
+  /* line 77, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-vertical .x-toolbar-item {
+    margin: 0 0 2px 0; }
+  /* line 81, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-vertical .x-toolbar-text {
+    margin-top: 4px;
+    margin-bottom: 6px; }
+  /* line 86, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-toolbar-vertical .x-toolbar-separator-vertical {
+    margin: 2px 5px 3px 5px;
+    height: 0px;
+    width: 10px;
+    line-height: 0px;
+    border-top: 1px solid #98c8ff;
+    border-bottom: 1px solid white; }
+
+/* line 98, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-scroller {
+  padding-left: 0; }
+
+/* line 102, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-spacer {
+  width: 2px; }
+
+/* line 107, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-more-icon {
+  background-image: url('../../resources/themes/images/default/toolbar/more.gif') !important;
+  background-position: 2px center !important;
+  background-repeat: no-repeat; }
+
+/* line 144, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-default {
+  border-color: #99bce8;
+  background-image: none;
+  background-color: #d3e1f1;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dfe9f5), color-stop(100%, #d3e1f1));
+  background-image: -webkit-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: -moz-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: -o-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: -ms-linear-gradient(top, #dfe9f5, #d3e1f1);
+  background-image: linear-gradient(top, #dfe9f5, #d3e1f1); }
+
+/* line 155, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-nlg .x-toolbar-default {
+  background-image: url('../../resources/themes/images/default/toolbar/toolbar-default-bg.gif') !important;
+  background-repeat: repeat-x; }
+
+/* line 123, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+.x-toolbar-plain {
+  border: 0; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window {
+  outline: none;
+  overflow: hidden; }
+  /* line 10, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-window .x-window-wrap {
+    position: relative; }
+
+/* line 15, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-body {
+  position: relative;
+  border-style: solid;
+  overflow: hidden; }
+
+/* line 24, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-maximized .x-window-wrap .x-window-header {
+  -moz-border-radius: 0 !important;
+  -webkit-border-radius: 0 !important;
+  -o-border-radius: 0 !important;
+  -ms-border-radius: 0 !important;
+  -khtml-border-radius: 0 !important;
+  border-radius: 0 !important; }
+
+/* line 30, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-top {
+  margin-bottom: -2px; }
+
+/* line 33, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-body-horizontal {
+  margin-top: -1px; }
+
+/* line 37, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-bottom {
+  margin-top: -1px;
+  margin-bottom: -1px; }
+
+/* line 42, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-left {
+  margin-right: -1px; }
+
+/* line 46, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-right {
+  margin-left: -1px; }
+
+/* line 51, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-vertical .x-surface {
+  padding-left: 1px; }
+
+/* line 58, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-vertical {
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  -o-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -khtml-border-radius: 5px;
+  border-radius: 5px; }
+/* line 61, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-horizontal {
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  -o-border-radius: 5px;
+  -ms-border-radius: 5px;
+  -khtml-border-radius: 5px;
+  border-radius: 5px; }
+/* line 66, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-left {
+  padding-right: 5px !important;
+  margin-right: 0; }
+/* line 71, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-right {
+  padding-left: 5px !important;
+  margin-left: 0; }
+/* line 76, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-top {
+  padding-bottom: 5px !important;
+  margin-bottom: -1px; }
+/* line 81, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-collapsed .x-window-header-bottom {
+  padding-top: 5px !important;
+  margin-top: 0; }
+
+/* line 89, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-left .x-vml-base,
+.x-window-header-right .x-vml-base {
+  left: -3px !important; }
+
+/* line 97, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-opera .x-window-header-vertical .x-surface,
+.x-strict .x-ie9 .x-window-header-vertical .x-surface {
+  padding-left: 2px; }
+
+/* line 103, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-text-container {
+  overflow: hidden;
+  -o-text-overflow: ellipsis;
+  text-overflow: ellipsis; }
+
+/* line 109, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-text {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default;
+  white-space: nowrap; }
+
+/* line 159, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-default {
+  border-color: #a2b1c5;
+  -moz-border-radius: 5px 5px;
+  -webkit-border-radius: 5px 5px;
+  -o-border-radius: 5px 5px;
+  -ms-border-radius: 5px 5px;
+  -khtml-border-radius: 5px 5px;
+  border-radius: 5px 5px;
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-default {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 4px 4px 4px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-default-mc {
+  background-color: #ced9e7; }
+
+/* line 178, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-body-default {
+  border-color: #99bbe8;
+  border-width: 1px;
+  background: #dfe8f6;
+  color: black; }
+
+/* line 188, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default {
+  font-size: 11px;
+  border-color: #a2b1c5;
+  zoom: 1; }
+
+/* line 194, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-text-default {
+  color: #04468c;
+  font-weight: bold;
+  line-height: 17px;
+  font-family: tahoma, arial, verdana, sans-serif;
+  font-size: 11px; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 4px 5px 0 5px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-top-mc {
+  background-color: #ced9e7; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-right {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 5px 4px 5px 0;
+  border-width: 1px 1px 1px 0;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-right-mc {
+  background-color: #ced9e7; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 0 5px 4px 5px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-bottom-mc {
+  background-color: #ced9e7; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-left {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 0px 5px 4px;
+  border-width: 1px 0 1px 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-left-mc {
+  background-color: #ced9e7; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-collapsed-top {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-collapsed-top-mc {
+  background-color: #ced9e7; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-collapsed-right {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-collapsed-right-mc {
+  background-color: #ced9e7; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-collapsed-bottom {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 4px 5px 4px 5px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-collapsed-bottom-mc {
+  background-color: #ced9e7; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-window-header-default-collapsed-left {
+  -moz-border-radius-topleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -o-border-top-left-radius: 5px;
+  -ms-border-top-left-radius: 5px;
+  -khtml-border-top-left-radius: 5px;
+  border-top-left-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -webkit-border-top-right-radius: 5px;
+  -o-border-top-right-radius: 5px;
+  -ms-border-top-right-radius: 5px;
+  -khtml-border-top-right-radius: 5px;
+  border-top-right-radius: 5px;
+  -moz-border-radius-bottomright: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -o-border-bottom-right-radius: 5px;
+  -ms-border-bottom-right-radius: 5px;
+  -khtml-border-bottom-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -o-border-bottom-left-radius: 5px;
+  -ms-border-bottom-left-radius: 5px;
+  -khtml-border-bottom-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+  padding: 5px 4px 5px 4px;
+  border-width: 1px;
+  border-style: solid;
+  background-color: #ced9e7; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-window-header-default-collapsed-left-mc {
+  background-color: #ced9e7; }
+
+/* line 217, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default-top {
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+
+/* line 221, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default-right {
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+  -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset; }
+
+/* line 225, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default-bottom {
+  -moz-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -webkit-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -o-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+
+/* line 229, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-header-default-left {
+  -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+  box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+
+/* line 130, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+.x-window-body-plain {
+  background: transparent; }
+
+/* line 2, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box .x-window-body {
+  background-color: #ced9e7;
+  border: none; }
+
+/* line 7, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box .x-progress-wrap {
+  margin-top: 4px; }
+
+/* line 11, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-icon {
+  width: 47px;
+  height: 32px; }
+
+/* line 19, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-info,
+.x-message-box-warning,
+.x-message-box-question,
+.x-message-box-error {
+  background: transparent no-repeat top left; }
+
+/* line 23, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box .x-msg-box-wait {
+  background-image: url('../../resources/themes/images/default/shared/blue-loading.gif'); }
+
+/* line 27, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-info {
+  background-image: url('../../resources/themes/images/default/shared/icon-info.gif'); }
+
+/* line 31, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-warning {
+  background-image: url('../../resources/themes/images/default/shared/icon-warning.gif'); }
+
+/* line 35, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-question {
+  background-image: url('../../resources/themes/images/default/shared/icon-question.gif'); }
+
+/* line 39, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+.x-message-box-error {
+  background-image: url('../../resources/themes/images/default/shared/icon-error.gif'); }
+
+/* line 73, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar {
+  position: relative;
+  background-color: transparent;
+  background-image: none;
+  background-color: #cbdbef;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef));
+  background-image: -webkit-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: -moz-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: -o-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: -ms-linear-gradient(top, #dde8f5, #cbdbef);
+  background-image: linear-gradient(top, #dde8f5, #cbdbef);
+  font-size: 11px; }
+
+/* line 80, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-nlg .x-tab-bar {
+  background-image: url('../../resources/themes/images/default/tab-bar/tab-bar-default-bg.gif'); }
+
+/* line 85, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-default-plain,
+.x-nlg .x-tab-bar-default-plain {
+  background: transparent none; }
+
+/* line 90, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-body {
+  border-style: solid;
+  border-color: #99bce8;
+  position: relative;
+  z-index: 2;
+  zoom: 1; }
+
+/* Top Tabs */
+/* line 4, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-top .x-tab-bar-body {
+  height: 20px;
+  border-width: 1px 1px 0;
+  padding: 1px 0 3px; }
+/* line 10, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-top .x-tab-bar-strip {
+  /*position strip from top rather than bottom to avoid off-by-one error in IE6*/
+  top: 22px;
+  border-width: 1px 1px 0;
+  height: 2px; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-top .x-tab-bar-body {
+  height: 25px; }
+/* line 23, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-top .x-tab-bar-strip {
+  height: 3px; }
+
+/* line 4, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-top .x-tab-bar-body-default-plain {
+  height: 20px;
+  border-width: 0;
+  padding: 0 0 2px; }
+/* line 10, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-top .x-tab-bar-strip-default-plain {
+  /*position strip from top rather than bottom to avoid off-by-one error in IE6*/
+  top: 20px;
+  border-width: 1px 1px 0 1px;
+  height: 2px; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-top .x-tab-bar-body-default-plain {
+  height: 22px; }
+/* line 23, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-top .x-tab-bar-strip-default-plain {
+  height: 3px; }
+
+/* Bottom Tabs */
+/* line 32, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-bottom .x-tab-bar-body {
+  height: 20px;
+  border-width: 0 1px 1px;
+  padding: 3px 0 1px; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-tab-bar-bottom .x-tab-bar-body .x-box-inner {
+    position: relative;
+    top: -1px; }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller,
+  .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-left,
+  .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-right {
+    height: 22px; }
+/* line 49, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-bottom .x-tab-bar-strip {
+  top: 0;
+  border-width: 0 1px 1px 1px;
+  height: 2px; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-bottom .x-tab-bar-body {
+  height: 25px; }
+/* line 61, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-bottom .x-tab-bar-strip {
+  height: 3px; }
+
+/* line 32, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-bottom .x-tab-bar-body-default-plain {
+  height: 20px;
+  border-width: 0;
+  padding: 3px 0 0; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-inner {
+    position: relative;
+    top: -1px; }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller,
+  .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-left,
+  .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-right {
+    height: 21px; }
+/* line 49, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-bottom .x-tab-bar-strip-default-plain {
+  top: 0;
+  border-width: 0 1px 1px 1px;
+  height: 2px; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-bottom .x-tab-bar-body-default-plain {
+  height: 23px; }
+/* line 61, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-border-box .x-tab-bar-bottom .x-tab-bar-strip-default-plain {
+  height: 3px; }
+
+/* line 141, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+.x-tab-bar-strip-default,
+.x-tab-bar-strip-default-plain {
+  font-size: 0;
+  line-height: 0;
+  position: absolute;
+  z-index: 1;
+  border-style: solid;
+  overflow: hidden;
+  border-color: #99bce8;
+  background-color: #deecfd;
+  zoom: 1; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-tab-default-top {
+  -moz-border-radius-topleft: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -o-border-top-left-radius: 4px;
+  -ms-border-top-left-radius: 4px;
+  -khtml-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -o-border-top-right-radius: 4px;
+  -ms-border-top-right-radius: 4px;
+  -khtml-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-bottomright: 0;
+  -webkit-border-bottom-right-radius: 0;
+  -o-border-bottom-right-radius: 0;
+  -ms-border-bottom-right-radius: 0;
+  -khtml-border-bottom-right-radius: 0;
+  border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  -webkit-border-bottom-left-radius: 0;
+  -o-border-bottom-left-radius: 0;
+  -ms-border-bottom-left-radius: 0;
+  -khtml-border-bottom-left-radius: 0;
+  border-bottom-left-radius: 0;
+  padding: 3px 3px 0 3px;
+  border-width: 1px 1px 0 1px;
+  border-style: solid;
+  background-color: #deecfd; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-tab-default-top-mc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-bg.gif');
+  background-color: #deecfd; }
+
+/* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-tab-default-bottom {
+  -moz-border-radius-topleft: 0;
+  -webkit-border-top-left-radius: 0;
+  -o-border-top-left-radius: 0;
+  -ms-border-top-left-radius: 0;
+  -khtml-border-top-left-radius: 0;
+  border-top-left-radius: 0;
+  -moz-border-radius-topright: 0;
+  -webkit-border-top-right-radius: 0;
+  -o-border-top-right-radius: 0;
+  -ms-border-top-right-radius: 0;
+  -khtml-border-top-right-radius: 0;
+  border-top-right-radius: 0;
+  -moz-border-radius-bottomright: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -o-border-bottom-right-radius: 4px;
+  -ms-border-bottom-right-radius: 4px;
+  -khtml-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -o-border-bottom-left-radius: 4px;
+  -ms-border-bottom-left-radius: 4px;
+  -khtml-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  padding: 0 3px 3px 3px;
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  background-color: #deecfd; }
+
+/* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+.x-nlg .x-tab-default-bottom-mc {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif');
+  background-color: #deecfd; }
+
+/* line 28, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab {
+  z-index: 1;
+  margin: 0 0 0 2px;
+  display: inline-block;
+  zoom: 1;
+  *display: inline;
+  white-space: nowrap;
+  height: 20px;
+  border-color: #8db3e3;
+  cursor: pointer;
+  cursor: hand; }
+  /* line 40, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab button {
+    cursor: pointer;
+    cursor: hand; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab em {
+    display: block;
+    padding: 0 6px;
+    line-height: 1px; }
+  /* line 51, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab button {
+    background: none;
+    border: 0;
+    padding: 0;
+    margin: 0;
+    -webkit-appearance: none;
+    font-size: 11px;
+    font-weight: bold;
+    font-family: tahoma, arial, verdana, sans-serif;
+    color: #416da3;
+    outline: 0 none;
+    overflow-x: visible; }
+    /* line 69, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-tab button::-moz-focus-inner {
+      border: 0;
+      padding: 0; }
+    /* line 74, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-tab button .x-tab-inner {
+      background-color: transparent;
+      background-repeat: no-repeat;
+      background-position: 0 -2px;
+      display: block;
+      text-align: center;
+      white-space: nowrap;
+      text-overflow: ellipsis;
+      -o-text-overflow: ellipsis;
+      overflow: hidden; }
+  /* line 87, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab img {
+    display: none; }
+
+/* line 93, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-border-box .x-tab-default-top {
+  height: 21px; }
+/* line 96, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-border-box .x-tab-default-bottom {
+  height: 21px; }
+
+/* line 124, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-top {
+  -moz-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -webkit-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -o-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  border-bottom: 1px solid #99bce8 !important; }
+  /* line 134, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-top em {
+    padding-bottom: 3px; }
+  /* line 139, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-top button,
+  .x-tab-default-top .x-tab-inner {
+    height: 13px;
+    line-height: 13px; }
+
+/* line 148, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-safari4 .x-tab-default-top .x-tab-inner,
+.x-safari5_0 .x-tab-default-top .x-tab-inner {
+  line-height: 11px; }
+
+/* line 153, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-default-top {
+  border-bottom-width: 1px !important; }
+
+/* line 157, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-top-active {
+  border-bottom-color: #deecfd !important; }
+
+/* line 163, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-bottom {
+  -moz-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -webkit-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -o-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  border-top: 1px solid #99bce8 !important;
+  -moz-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -webkit-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  -o-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+  box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset; }
+  /* line 178, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-bottom em {
+    padding-top: 3px; }
+  /* line 183, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-bottom button,
+  .x-tab-default-bottom .x-tab-inner {
+    height: 13px;
+    line-height: 13px; }
+
+/* line 189, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-default-bottom {
+  border-top-width: 1px !important; }
+
+/* line 193, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-bottom-active {
+  border-top-color: #deecfd !important; }
+
+/* line 197, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-disabled {
+  cursor: default;
+  border-color: #bbd2ef;
+  background-image: none;
+  background-color: #e1ecfa;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+  background-image: -webkit-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -moz-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -o-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -ms-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: linear-gradient(top, #e1ecfa, #ecf4fe); }
+  /* line 203, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-default-disabled button {
+    color: #c3b3b3 !important; }
+
+/* line 209, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-icon-text-left .x-tab-inner {
+  padding-left: 20px; }
+
+/* line 214, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab button {
+  position: relative; }
+
+/* line 218, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-icon {
+  position: absolute;
+  background-repeat: no-repeat;
+  background-position: 0 -1px;
+  top: 0;
+  left: 0;
+  right: auto;
+  bottom: 0;
+  width: 18px;
+  height: 18px; }
+
+/* line 233, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-strict .x-ie8 .x-tab button,
+.x-strict .x-ie9 .x-tab button {
+  overflow-y: visible; }
+
+/* line 238, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-disabled .x-tab-icon {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5; }
+
+/* In IE a disabled icon needs to be hidden or the opacity effect covers some of the text */
+/* line 243, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-noicon .x-tab-icon {
+  display: none; }
+
+/* line 269, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-top-over {
+  background-image: none;
+  background-color: #e8f2ff;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff));
+  background-image: -webkit-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -moz-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -o-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -ms-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%); }
+
+/* line 272, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-bottom-over {
+  background-image: none;
+  background-color: #e8f2ff;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff));
+  background-image: -webkit-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -moz-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -o-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: -ms-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+  background-image: linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%); }
+
+/* line 277, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-active {
+  z-index: 3; }
+  /* line 283, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-active button {
+    color: #15498b; }
+
+/* line 299, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-top-active {
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -ms-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%); }
+
+/* line 302, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-bottom-active {
+  background-image: none;
+  background-color: #deecfd;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd));
+  background-image: -webkit-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -moz-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -o-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: -ms-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+  background-image: linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%); }
+
+/* line 307, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-disabled {
+  border-color: #bbd2ef; }
+  /* line 312, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-tab-disabled button {
+    color: #c3b3b3; }
+
+/* line 328, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-top-disabled {
+  background-image: none;
+  background: transparent;
+  background-image: none;
+  background-color: #e1ecfa;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+  background-image: -webkit-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -moz-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -o-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: -ms-linear-gradient(top, #e1ecfa, #ecf4fe);
+  background-image: linear-gradient(top, #e1ecfa, #ecf4fe); }
+
+/* line 333, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-bottom-disabled {
+  background-image: none;
+  background: transparent;
+  background-image: none;
+  background-color: #e1ecfa;
+  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+  background-image: -webkit-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: -moz-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: -o-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: -ms-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+  background-image: linear-gradient(bottom, #e1ecfa, #ecf4fe); }
+
+/* line 342, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-top {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-bg.gif'); }
+/* line 343, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-bottom {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif'); }
+/* line 347, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-top-over {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-over-bg.gif'); }
+/* line 348, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-bottom-over {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-over-bg.gif'); }
+/* line 352, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-top-active {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-active-bg.gif'); }
+/* line 353, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-bottom-active {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-active-bg.gif'); }
+/* line 357, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-top-disabled {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-top-disabled-bg.gif') !important; }
+/* line 358, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nlg .x-tab-bottom-disabled {
+  background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif') !important; }
+
+/* line 363, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-closable em {
+  padding-right: 14px; }
+
+/* line 367, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-close-btn {
+  position: absolute;
+  top: 2px;
+  right: 2px;
+  width: 11px;
+  height: 11px;
+  font-size: 0;
+  line-height: 0;
+  text-indent: -999px;
+  background: no-repeat;
+  background-image: url('../../resources/themes/images/default/tab/tab-default-close.gif');
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+
+/* line 381, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-nbr .x-tab-close-btn {
+  top: 0px;
+  right: 0px; }
+
+/* Include the element name otherwise Internet Explorer 7 & 8 take a performance hit */
+/* line 387, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+a.x-tab-close-btn:hover {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1; }
+
+/* Include the element name to raise the specificity to equal the :hover */
+/* line 392, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+.x-tab-default-disabled a.x-tab-close-btn {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 9, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-autowidth-table table.x-grid-table {
+  table-layout: auto;
+  width: auto!important; }
+
+/* line 14, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-tree-elbow {
+  background-color: transparent; }
+
+/* line 18, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-tree-elbow-end {
+  background-color: transparent; }
+
+/* line 22, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-tree-elbow-line {
+  background-color: transparent; }
+
+/* line 27, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-plus {
+  background: transparent no-repeat 0 0; }
+
+/* line 31, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-end-plus {
+  background: transparent no-repeat 0 0; }
+
+/* line 35, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-end-minus {
+  background: transparent no-repeat -16px 0; }
+
+/* line 39, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-minus {
+  background: transparent no-repeat -16px 0; }
+
+/* line 43, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow {
+  background-color: transparent !important; }
+
+/* line 47, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-end {
+  background-color: transparent !important; }
+
+/* line 51, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-line {
+  background-color: transparent !important; }
+
+/* line 57, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-expander-over .x-tree-elbow-plus,
+.x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-plus {
+  background-position: -32px 0; }
+
+/* line 62, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-expander-over .x-tree-elbow-minus,
+.x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-minus {
+  background-position: -48px 0; }
+
+/* line 67, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-plus,
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-position: -16px 0; }
+
+/* line 72, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-plus,
+.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-end-plus {
+  background-position: -48px 0; }
+
+/* line 79, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-elbow-plus,
+.x-tree-elbow-minus,
+.x-tree-elbow-end-plus,
+.x-tree-elbow-end-minus {
+  cursor: pointer; }
+
+/* line 85, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow {
+  background-image: url('../../resources/themes/images/default/tree/elbow.gif'); }
+/* line 89, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-end {
+  background-image: url('../../resources/themes/images/default/tree/elbow-end.gif'); }
+/* line 93, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-plus {
+  background-image: url('../../resources/themes/images/default/tree/elbow-plus.gif'); }
+/* line 97, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/default/tree/elbow-end-plus.gif'); }
+/* line 101, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus {
+  background-image: url('../../resources/themes/images/default/tree/elbow-minus.gif'); }
+/* line 105, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/default/tree/elbow-end-minus.gif'); }
+/* line 109, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-lines .x-tree-elbow-line {
+  background-image: url('../../resources/themes/images/default/tree/elbow-line.gif'); }
+
+/* line 116, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-tree-elbow-plus,
+.x-tree-no-lines .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/default/tree/elbow-plus-nl.gif'); }
+/* line 121, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-plus,
+.x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+  background-image: url('../../resources/themes/images/default/tree/elbow-end-minus-nl.gif'); }
+
+/* line 130, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-arrows .x-tree-elbow-plus,
+.x-tree-arrows .x-tree-elbow-minus,
+.x-tree-arrows .x-tree-elbow-end-plus,
+.x-tree-arrows .x-tree-elbow-end-minus {
+  background-image: url('../../resources/themes/images/default/tree/arrows.gif'); }
+
+/* line 135, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-icon {
+  margin: 2px 3px 0 0; }
+
+/* line 139, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-with-row-lines .x-tree-icon {
+  margin-top: 1px; }
+
+/* line 148, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-elbow,
+.x-tree-elbow-end,
+.x-tree-elbow-plus,
+.x-tree-elbow-end-plus,
+.x-tree-elbow-empty,
+.x-tree-elbow-line {
+  height: 20px;
+  width: 16px; }
+
+/* line 159, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-with-row-lines .x-tree-elbow,
+.x-grid-with-row-lines .x-tree-elbow-end,
+.x-grid-with-row-lines .x-tree-elbow-plus,
+.x-grid-with-row-lines .x-tree-elbow-end-plus,
+.x-grid-with-row-lines .x-tree-elbow-empty,
+.x-grid-with-row-lines .x-tree-elbow-line {
+  height: 19px;
+  background-position: 0 -1px; }
+
+/* line 165, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-icon-leaf {
+  width: 16px;
+  background-image: url('../../resources/themes/images/default/tree/leaf.gif'); }
+
+/* line 170, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-icon-parent {
+  width: 16px;
+  background-image: url('../../resources/themes/images/default/tree/folder.gif'); }
+
+/* line 175, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-tree-node-expanded .x-tree-icon-parent {
+  background-image: url('../../resources/themes/images/default/tree/folder-open.gif'); }
+
+/* line 179, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-rowbody {
+  padding: 0; }
+
+/* line 183, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-cell-treecolumn .x-grid-cell-inner {
+  padding: 0;
+  line-height: 19px; }
+
+/* line 188, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-with-row-lines .x-grid-cell-treecolumn .x-grid-cell-inner {
+  line-height: 17px; }
+
+/* line 192, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-panel .x-grid-cell-inner {
+  cursor: pointer; }
+  /* line 194, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-tree-panel .x-grid-cell-inner img {
+    display: inline-block;
+    vertical-align: top; }
+
+/* line 215, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-editor-on-text-node .x-form-text {
+  padding-left: 1px;
+  padding-right: 1px; }
+
+/* line 228, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-opera .x-grid-editor-on-text-node .x-form-text {
+  padding-left: 2px;
+  padding-right: 2px; }
+
+/* line 234, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-checkbox {
+  margin: 4px 3px 0 0;
+  display: inline-block;
+  vertical-align: top;
+  width: 13px;
+  height: 13px;
+  background: no-repeat;
+  background-image: url('../../resources/themes/images/default/form/checkbox.gif');
+  overflow: hidden;
+  padding: 0;
+  border: 0; }
+  /* line 247, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-tree-checkbox::-moz-focus-inner {
+    padding: 0;
+    border: 0; }
+
+/* line 253, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-with-row-lines .x-tree-checkbox {
+  margin-top: 3px; }
+
+/* line 257, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-checkbox-checked {
+  background-position: 0 -13px; }
+
+/* line 261, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-drop-ok-append .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/tree/drop-append.gif'); }
+
+/* line 265, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-drop-ok-above .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/tree/drop-above.gif'); }
+
+/* line 269, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-drop-ok-below .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/tree/drop-below.gif'); }
+
+/* line 273, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-drop-ok-between .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/tree/drop-between.gif'); }
+
+/* line 277, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-tree-loading .x-tree-icon {
+  background-image: url('../../resources/themes/images/default/tree/loading.gif'); }
+
+/* line 281, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-ddindicator {
+  height: 1px;
+  border-width: 1px 0px 0px;
+  border-style: dotted;
+  border-color: green; }
+
+/* line 288, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-grid-tree-loading span {
+  font-style: italic;
+  color: #444444; }
+
+/* line 293, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+.x-tree-animator-wrap {
+  overflow: hidden; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-surface {
+  display: -moz-inline-box;
+  -moz-box-orient: vertical;
+  display: inline-block;
+  vertical-align: middle;
+  *vertical-align: auto;
+  overflow: hidden; }
+  /* line 7, ../../../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.11.7/frameworks/compass/stylesheets/compass/css3/_inline-block.scss */
+  .x-surface {
+    *display: inline; }
+
+/* line 11, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.rvml {
+  behavior: url(#default#VML); }
+
+/* line 15, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-surface tspan {
+  user-select: none;
+  -o-user-select: none;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  cursor: default; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-sprite {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1px;
+  height: 1px; }
+
+/* line 27, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-group {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 1000px;
+  height: 1000px; }
+
+/* line 35, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-measure-span {
+  position: absolute;
+  left: -9999em;
+  top: -9999em;
+  padding: 0;
+  margin: 0;
+  display: inline; }
+
+/* line 44, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block; }
+
+/* line 52, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+.x-vml-base {
+  position: relative;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  display: inline-block; }
+
+/* line 60, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+svg, vml {
+  overflow: hidden; }
+
+/* line 6, ../themes/stylesheets/ext4/default/widgets/_viewport.scss */
+.x-viewport, .x-viewport body {
+  margin: 0;
+  padding: 0;
+  border: 0 none;
+  overflow: hidden;
+  height: 100%;
+  position: static; }
+
+/* line 3, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drag-proxy {
+  z-index: 1000000!important; }
+
+/* line 8, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drag-repair .x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+  opacity: 0.6; }
+/* line 12, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drag-repair .x-dd-drop-icon {
+  display: none; }
+
+/* line 17, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drag-ghost {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
+  opacity: 0.85;
+  padding: 5px;
+  padding-left: 20px;
+  white-space: nowrap;
+  color: #000;
+  font: normal 11px tahoma, arial, verdana, sans-serif;
+  border: 1px solid;
+  border-color: #ddd #bbb #bbb #ddd;
+  background-color: #fff; }
+
+/* line 34, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drop-icon {
+  position: absolute;
+  top: 3px;
+  left: 3px;
+  display: block;
+  width: 16px;
+  height: 16px;
+  background-color: transparent;
+  background-position: center;
+  background-repeat: no-repeat;
+  z-index: 1; }
+
+/* line 51, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-view-selector {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 0;
+  background-color: #c3daf9;
+  border: 1px dotted #3399bb;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  zoom: 1; }
+
+/* line 66, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drop-nodrop .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/dd/drop-no.gif'); }
+
+/* line 70, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drop-ok .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/dd/drop-yes.gif'); }
+
+/* line 74, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+.x-dd-drop-ok-add .x-dd-drop-icon {
+  background-image: url('../../resources/themes/images/default/dd/drop-add.gif'); }
+
+/* line 2, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle {
+  position: absolute;
+  z-index: 100;
+  font-size: 1px;
+  line-height: 6px;
+  overflow: hidden;
+  zoom: 1;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  background-color: #fff; }
+
+/* line 14, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-collapsed .x-resizable-handle {
+  display: none; }
+
+/* line 18, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-east {
+  width: 6px;
+  height: 100%;
+  right: 0;
+  top: 0; }
+
+/* line 27, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-east {
+  cursor: e-resize; }
+
+/* line 32, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-south {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  bottom: 0; }
+
+/* line 41, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-south {
+  cursor: s-resize; }
+
+/* line 46, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-west {
+  width: 6px;
+  height: 100%;
+  left: 0;
+  top: 0; }
+
+/* line 55, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-west {
+  cursor: w-resize; }
+
+/* line 60, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-north {
+  width: 100%;
+  height: 6px;
+  left: 0;
+  top: 0; }
+
+/* line 69, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-north {
+  cursor: n-resize; }
+
+/* line 74, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-southeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  bottom: 0;
+  z-index: 101; }
+
+/* line 85, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southeast {
+  cursor: se-resize; }
+
+/* line 90, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-northwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  top: 0;
+  z-index: 101; }
+
+/* line 101, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northwest {
+  cursor: nw-resize; }
+
+/* line 106, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-northeast {
+  width: 6px;
+  height: 6px;
+  right: 0;
+  top: 0;
+  z-index: 101; }
+
+/* line 117, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northeast {
+  cursor: ne-resize; }
+
+/* line 122, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-handle-southwest {
+  width: 6px;
+  height: 6px;
+  left: 0;
+  bottom: 0;
+  z-index: 101; }
+
+/* line 133, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southwest {
+  cursor: sw-resize; }
+
+/*IE rounding error*/
+/* line 140, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-ie .x-resizable-handle-east {
+  margin-right: -1px;
+  /*IE rounding error*/ }
+/* line 144, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-ie .x-resizable-handle-south {
+  margin-bottom: -1px; }
+
+/* line 149, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle, .x-resizable-pinned .x-resizable-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+  opacity: 1; }
+
+/* line 153, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-window .x-window-handle {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 157, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-window-collapsed .x-window-handle {
+  display: none; }
+
+/* line 161, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-proxy {
+  border: 1px dashed #3b5a82;
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  z-index: 50000; }
+
+/* line 170, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-overlay {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  display: none;
+  z-index: 200000;
+  background-color: #fff;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 190, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west,
+.x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-pinned .x-resizable-handle-west {
+  background-position: left;
+  background-image: url('../../resources/themes/images/default/sizer/e-handle.gif'); }
+/* line 196, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north,
+.x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-pinned .x-resizable-handle-north {
+  background-position: top;
+  background-image: url('../../resources/themes/images/default/sizer/s-handle.gif'); }
+/* line 201, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southeast,
+.x-resizable-pinned .x-resizable-handle-southeast {
+  background-position: top left;
+  background-image: url('../../resources/themes/images/default/sizer/se-handle.gif'); }
+/* line 206, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northwest,
+.x-resizable-pinned .x-resizable-handle-northwest {
+  background-position: bottom right;
+  background-image: url('../../resources/themes/images/default/sizer/nw-handle.gif'); }
+/* line 211, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-northeast,
+.x-resizable-pinned .x-resizable-handle-northeast {
+  background-position: bottom left;
+  background-image: url('../../resources/themes/images/default/sizer/ne-handle.gif'); }
+/* line 216, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+.x-resizable-over .x-resizable-handle-southwest,
+.x-resizable-pinned .x-resizable-handle-southwest {
+  background-position: top right;
+  background-image: url('../../resources/themes/images/default/sizer/sw-handle.gif'); }
+
+/* line 3, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter .x-collapse-el {
+  position: absolute;
+  cursor: pointer;
+  background-color: transparent;
+  background-repeat: no-repeat !important; }
+
+/* line 14, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-left,
+.x-layout-split-right {
+  top: 50%;
+  margin-top: -17px;
+  width: 5px;
+  height: 35px; }
+
+/* line 24, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-top,
+.x-layout-split-bottom {
+  left: 50%;
+  width: 35px;
+  height: 5px;
+  margin-left: -17px; }
+
+/* line 33, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-left {
+  background: no-repeat top right;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-left.gif'); }
+
+/* line 38, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-right {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-right.gif'); }
+
+/* line 43, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-top {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-top.gif'); }
+
+/* line 48, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-layout-split-bottom {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-bottom.gif'); }
+
+/* line 54, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-left {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-right.gif'); }
+/* line 59, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-right {
+  background: no-repeat top right;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-left.gif'); }
+/* line 64, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-top {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-bottom.gif'); }
+/* line 69, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed .x-layout-split-bottom {
+  background: no-repeat top left;
+  background-image: url('../../resources/themes/images/default/util/splitter/mini-top.gif'); }
+
+/* line 75, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-horizontal {
+  cursor: e-resize;
+  cursor: row-resize;
+  font-size: 1px; }
+
+/* line 81, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-vertical {
+  cursor: e-resize;
+  cursor: col-resize;
+  font-size: 1px; }
+
+/* line 86, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-collapsed, .x-splitter-horizontal-noresize, .x-splitter-vertical-noresize {
+  cursor: default; }
+
+/* line 90, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-active {
+  z-index: 4;
+  font-size: 1px;
+  background-color: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8; }
+
+/* line 97, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-splitter-active .x-collapse-el {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 102, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+.x-proxy-el {
+  position: absolute;
+  background: #b4b4b4;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+  opacity: 0.8; }
+
+/*
+ * Dock Layouts
+ * @todo move this somewhere else?
+ */
+/* line 6, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked {
+  position: absolute !important;
+  z-index: 1; }
+
+/* line 11, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-top {
+  border-bottom-width: 0 !important; }
+
+/* line 15, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-bottom {
+  border-top-width: 0 !important; }
+
+/* line 19, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-left {
+  border-right-width: 0 !important; }
+
+/* line 23, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-right {
+  border-left-width: 0 !important; }
+
+/* line 27, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-noborder-top {
+  border-top-width: 0 !important; }
+
+/* line 31, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-noborder-right {
+  border-right-width: 0 !important; }
+
+/* line 35, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-noborder-bottom {
+  border-bottom-width: 0 !important; }
+
+/* line 39, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-docked-noborder-left {
+  border-left-width: 0 !important; }
+
+/* line 43, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-inner {
+  overflow: hidden;
+  zoom: 1;
+  position: relative;
+  left: 0;
+  top: 0; }
+
+/* line 53, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-item {
+  position: absolute !important;
+  left: 0;
+  top: 0; }
+
+/* line 59, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-rtl .x-box-item {
+  right: 0;
+  left: auto; }
+
+/* line 65, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-layout-ct,
+.x-border-layout-ct {
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 70, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-border-layout-ct {
+  background-color: #dfe8f6;
+  position: relative; }
+
+/* line 75, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-overflow-hidden {
+  overflow: hidden !important; }
+
+/* line 79, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-inline-children > * {
+  display: inline-block !important; }
+
+/* line 83, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-abs-layout-ct {
+  position: relative; }
+
+/* line 87, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-abs-layout-item {
+  position: absolute !important; }
+
+/* line 91, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-fit-item {
+  position: relative; }
+
+/* line 95, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-border-region-slide-in {
+  z-index: 5; }
+
+/* line 99, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-region-collapsed-placeholder {
+  z-index: 4; }
+
+/* line 103, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd .x-panel-header-text {
+  color: black;
+  font-weight: normal; }
+
+/* line 108, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd {
+  background: #d9e7f8 !important;
+  -moz-box-shadow: inset 0 0 0 0 #d9e7f8;
+  -webkit-box-shadow: inset 0 0 0 0 #d9e7f8;
+  -o-box-shadow: inset 0 0 0 0 #d9e7f8;
+  box-shadow: inset 0 0 0 0 #d9e7f8; }
+  /* line 112, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-accordion-hd .x-tool-collapse-top,
+  .x-accordion-hd .x-tool-collapse-right,
+  .x-accordion-hd .x-tool-collapse-bottom,
+  .x-accordion-hd .x-tool-collapse-left {
+    background-position: 0 -255px; }
+  /* line 119, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-accordion-hd .x-tool-expand-top,
+  .x-accordion-hd .x-tool-expand-right,
+  .x-accordion-hd .x-tool-expand-bottom,
+  .x-accordion-hd .x-tool-expand-left {
+    background-position: 0 -240px; }
+  /* line 127, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-accordion-hd .x-tool-over .x-tool-collapse-top,
+  .x-accordion-hd .x-tool-over .x-tool-collapse-right,
+  .x-accordion-hd .x-tool-over .x-tool-collapse-bottom,
+  .x-accordion-hd .x-tool-over .x-tool-collapse-left {
+    background-position: -15px -255px; }
+  /* line 136, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-accordion-hd .x-tool-over .x-tool-expand-top,
+  .x-accordion-hd .x-tool-over .x-tool-expand-right,
+  .x-accordion-hd .x-tool-over .x-tool-expand-bottom,
+  .x-accordion-hd .x-tool-over .x-tool-expand-left {
+    background-position: -15px -240px; }
+
+/* line 145, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd {
+  border-width: 1px 0 1px 0 !important;
+  padding: 4px 5px 5px 5px;
+  border-top-color: #f3f7fb !important; }
+
+/* line 151, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-body {
+  border-width: 0 !important; }
+
+/* line 155, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd-sibling-expanded {
+  border-top-color: #99bce8 !important;
+  -moz-box-shadow: inset 0 1px 0 0 #f3f7fb;
+  -webkit-box-shadow: inset 0 1px 0 0 #f3f7fb;
+  -o-box-shadow: inset 0 1px 0 0 #f3f7fb;
+  box-shadow: inset 0 1px 0 0 #f3f7fb; }
+
+/* line 160, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-accordion-hd-last-collapsed {
+  border-bottom-color: #d9e7f8 !important; }
+
+/* line 169, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-frame-tl,
+.x-frame-tr,
+.x-frame-tc,
+.x-frame-bl,
+.x-frame-br,
+.x-frame-bc {
+  overflow: hidden;
+  background-repeat: no-repeat; }
+
+/* line 175, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-frame-tc,
+.x-frame-bc {
+  background-repeat: repeat-x; }
+
+/* line 179, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-frame-mc {
+  position: relative;
+  background-repeat: repeat-x;
+  overflow: hidden; }
+
+/* line 188, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-left {
+  float: left;
+  height: 100%;
+  z-index: 5; }
+  /* line 195, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left,
+  .x-box-scroller-left .x-tabbar-scroll-left {
+    width: 18px;
+    position: relative;
+    cursor: pointer;
+    height: 20px;
+    background: transparent no-repeat -18px 0;
+    background-image: url('../../resources/themes/images/default/tab-bar/scroll-left.gif'); }
+  /* line 203, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left-hover {
+    background-position: 0 0; }
+  /* line 207, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left-disabled,
+  .x-box-scroller-left .x-tabbar-scroll-left-disabled {
+    background-position: -18px 0;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5;
+    cursor: default; }
+  /* line 214, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left {
+    background-image: url('../../resources/themes/images/default/toolbar/scroll-left.gif');
+    background-position: -14px 0; }
+  /* line 218, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left-hover {
+    background-position: 0 0; }
+  /* line 221, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left-disabled {
+    background-position: -14px 0; }
+  /* line 225, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-left .x-toolbar-scroll-left {
+    width: 14px;
+    height: 22px;
+    border-bottom: 1px solid #8db2e3; }
+
+/* line 233, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-horizontal-box-overflow-body {
+  float: left; }
+
+/* line 236, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-right {
+  float: right;
+  height: 100%;
+  z-index: 5; }
+  /* line 243, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right,
+  .x-box-scroller-right .x-tabbar-scroll-right {
+    width: 18px;
+    position: relative;
+    cursor: pointer;
+    height: 20px;
+    background: transparent no-repeat 0 0;
+    background-image: url('../../resources/themes/images/default/tab-bar/scroll-right.gif'); }
+  /* line 251, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-hover {
+    background-position: -18px 0; }
+  /* line 255, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-disabled,
+  .x-box-scroller-right .x-tabbar-scroll-right-disabled {
+    background-position: 0 0;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5;
+    cursor: default; }
+  /* line 262, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right {
+    background-image: url('../../resources/themes/images/default/toolbar/scroll-right.gif'); }
+  /* line 265, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-hover {
+    background-position: -14px 0; }
+  /* line 268, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right-disabled {
+    background-position: 0 0; }
+  /* line 272, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-box-scroller-right .x-toolbar-scroll-right {
+    width: 14px;
+    height: 22px;
+    border-bottom: 1px solid #8db2e3; }
+
+/* line 282, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-top .x-box-scroller {
+  line-height: 0;
+  font-size: 0; }
+/* line 286, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-top .x-menu-scroll-top {
+  background: transparent no-repeat center center;
+  background-image: url('../../resources/themes/images/default/layout/mini-top.gif');
+  height: 8px;
+  cursor: pointer; }
+
+/* line 294, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-bottom .x-box-scroller {
+  line-height: 0;
+  font-size: 0; }
+/* line 298, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-scroller-bottom .x-menu-scroll-bottom {
+  background: transparent no-repeat center center;
+  background-image: url('../../resources/themes/images/default/layout/mini-bottom.gif');
+  height: 8px;
+  cursor: pointer; }
+
+/* line 306, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-box-menu-right {
+  float: right;
+  padding-right: 2px; }
+
+/* line 311, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+.x-column {
+  float: left; }
+
+/* line 2, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool {
+  height: 15px; }
+  /* line 5, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-tool img {
+    overflow: hidden;
+    width: 15px;
+    height: 15px;
+    cursor: pointer;
+    background-color: transparent;
+    background-repeat: no-repeat;
+    background-image: url('../../resources/themes/images/default/tools/tool-sprites.gif');
+    margin: 0; }
+
+/* line 23, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-header-horizontal .x-tool,
+.x-window-header-horizontal .x-tool {
+  margin-left: 2px; }
+
+/* line 30, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-header-vertical .x-tool,
+.x-window-header-vertical .x-tool {
+  margin-top: 2px; }
+
+/* line 39, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-header-vertical .x-tool-top,
+.x-window-header-vertical .x-tool-top {
+  margin: 0 0 4px; }
+
+/* line 45, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-placeholder {
+  visibility: hidden; }
+
+/* line 49, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-toggle {
+  background-position: 0 -60px; }
+
+/* line 54, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-toggle {
+  background-position: -15px -60px; }
+
+/* line 61, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-collapsed .x-tool-toggle,
+.x-fieldset-collapsed .x-tool-toggle {
+  background-position: 0 -75px; }
+/* line 66, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-panel-collapsed .x-tool-over .x-tool-toggle,
+.x-fieldset-collapsed .x-tool-over .x-tool-toggle {
+  background-position: -15px -75px; }
+
+/* line 72, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-close {
+  background-position: 0 0; }
+
+/* line 76, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-minimize {
+  background-position: 0 -15px; }
+
+/* line 80, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-maximize {
+  background-position: 0 -30px; }
+
+/* line 84, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-restore {
+  background-position: 0 -45px; }
+
+/* line 88, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-gear {
+  background-position: 0 -90px; }
+
+/* line 92, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-prev {
+  background-position: 0 -105px; }
+
+/* line 96, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-next {
+  background-position: 0 -120px; }
+
+/* line 100, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-pin {
+  background-position: 0 -135px; }
+
+/* line 104, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-unpin {
+  background-position: 0 -150px; }
+
+/* line 108, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-right {
+  background-position: 0 -165px; }
+
+/* line 112, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-left {
+  background-position: 0 -180px; }
+
+/* line 116, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-help {
+  background-position: 0 -300px; }
+
+/* line 120, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-save {
+  background-position: 0 -285px; }
+
+/* line 124, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-search {
+  background-position: 0 -270px; }
+
+/* line 128, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-minus {
+  background-position: 0 -255px; }
+
+/* line 132, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-plus {
+  background-position: 0 -240px; }
+
+/* line 136, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-refresh {
+  background-position: 0 -225px; }
+
+/* line 140, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-up {
+  background-position: 0 -210px; }
+
+/* line 144, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-down {
+  background-position: 0 -195px; }
+
+/* line 148, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-collapse {
+  background-position: 0 -345px; }
+
+/* line 152, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand {
+  background-position: 0 -330px; }
+
+/* line 156, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-print {
+  background-position: 0 -315px; }
+
+/* line 161, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand-bottom,
+.x-tool-collapse-bottom {
+  background-position: 0 -195px; }
+
+/* line 166, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand-top,
+.x-tool-collapse-top {
+  background-position: 0 -210px; }
+
+/* line 171, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand-left,
+.x-tool-collapse-left {
+  background-position: 0 -180px; }
+
+/* line 176, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-expand-right,
+.x-tool-collapse-right {
+  background-position: 0 -165px; }
+
+/* line 181, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-close {
+  background-position: -15px 0; }
+/* line 185, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-minimize {
+  background-position: -15px -15px; }
+/* line 189, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-maximize {
+  background-position: -15px -30px; }
+/* line 193, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-restore {
+  background-position: -15px -45px; }
+/* line 197, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-gear {
+  background-position: -15px -90px; }
+/* line 201, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-prev {
+  background-position: -15px -105px; }
+/* line 205, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-next {
+  background-position: -15px -120px; }
+/* line 209, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-pin {
+  background-position: -15px -135px; }
+/* line 213, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-unpin {
+  background-position: -15px -150px; }
+/* line 217, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-right {
+  background-position: -15px -165px; }
+/* line 221, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-left {
+  background-position: -15px -180px; }
+/* line 225, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-down {
+  background-position: -15px -195px; }
+/* line 229, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-up {
+  background-position: -15px -210px; }
+/* line 233, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-refresh {
+  background-position: -15px -225px; }
+/* line 237, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-plus {
+  background-position: -15px -240px; }
+/* line 241, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-minus {
+  background-position: -15px -255px; }
+/* line 245, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-search {
+  background-position: -15px -270px; }
+/* line 249, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-save {
+  background-position: -15px -285px; }
+/* line 253, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-help {
+  background-position: -15px -300px; }
+/* line 257, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-print {
+  background-position: -15px -315px; }
+/* line 261, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand {
+  background-position: -15px -330px; }
+/* line 265, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-collapse {
+  background-position: -15px -345px; }
+/* line 270, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand-bottom,
+.x-tool-over .x-tool-collapse-bottom {
+  background-position: -15px -195px; }
+/* line 275, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand-top,
+.x-tool-over .x-tool-collapse-top {
+  background-position: -15px -210px; }
+/* line 280, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand-left,
+.x-tool-over .x-tool-collapse-left {
+  background-position: -15px -180px; }
+/* line 285, ../themes/stylesheets/ext4/default/util/_tool.scss */
+.x-tool-over .x-tool-expand-right,
+.x-tool-over .x-tool-collapse-right {
+  background-position: -15px -165px; }
+
+/* line 2, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-horizontal-scroller-present .x-grid-body {
+  border-bottom-width: 0px; }
+
+/* line 6, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-vertical-scroller-present .x-grid-body {
+  border-right-width: 0px; }
+
+/* line 10, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller {
+  overflow: hidden; }
+
+/* line 14, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-vertical {
+  border: 1px solid #99bce8;
+  border-top-color: #c5c5c5; }
+
+/* line 19, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-horizontal {
+  border: 1px solid #99bce8; }
+
+/* line 23, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-vertical-scroller-present .x-scroller-horizontal {
+  border-right-width: 0px; }
+
+/* line 27, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-ct {
+  overflow: hidden;
+  position: absolute;
+  margin: 0;
+  padding: 0;
+  border: none;
+  left: 0px;
+  top: 0px;
+  /*
+  In IE9 (only), the border-box style causes the scroller-ct to be 0px in the
+  perpendicular dimension and breaks the scroll as well as offsets it by the left
+  offset that we use to try and keep some size on this element. This works on all
+  browsers (including IE9).
+  */
+  box-sizing: content-box !important;
+  -ms-box-sizing: content-box !important;
+  -moz-box-sizing: content-box !important;
+  -webkit-box-sizing: content-box !important; }
+
+/* line 48, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-vertical .x-scroller-ct {
+  overflow-y: scroll; }
+
+/* line 52, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+.x-scroller-horizontal .x-scroller-ct {
+  overflow-x: scroll; }
+
+/* line 8, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+.x-html {
+  /* Begin bidirectionality settings (do not change) */ }
+  /* line 34, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html html, .x-html address, .x-html blockquote, .x-html body, .x-html dd, .x-html div, .x-html dl, .x-html dt, .x-html fieldset, .x-html form, .x-html frame, .x-html frameset, .x-html h1, .x-html h2, .x-html h3, .x-html h4, .x-html h5, .x-html h6, .x-html noframes, .x-html ol, .x-html p, .x-html ul, .x-html center, .x-html dir, .x-html hr, .x-html menu, .x-html pre {
+    display: block; }
+  /* line 35, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html li {
+    display: list-item;
+    list-style: disc; }
+  /* line 36, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html head {
+    display: none; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html table {
+    display: table; }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html tr {
+    display: table-row; }
+  /* line 39, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html thead {
+    display: table-header-group; }
+  /* line 40, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html tbody {
+    display: table-row-group; }
+  /* line 41, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html tfoot {
+    display: table-footer-group; }
+  /* line 42, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html col {
+    display: table-column; }
+  /* line 43, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html colgroup {
+    display: table-column-group; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html td, .x-html th {
+    display: table-cell; }
+  /* line 46, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html caption {
+    display: table-caption; }
+  /* line 47, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html th {
+    font-weight: bolder;
+    text-align: center; }
+  /* line 48, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html caption {
+    text-align: center; }
+  /* line 49, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html body {
+    margin: 8px; }
+  /* line 50, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h1 {
+    font-size: 2em;
+    margin: .67em 0; }
+  /* line 51, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h2 {
+    font-size: 1.5em;
+    margin: .75em 0; }
+  /* line 52, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h3 {
+    font-size: 1.17em;
+    margin: .83em 0; }
+  /* line 62, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h4, .x-html p, .x-html blockquote, .x-html ul, .x-html fieldset, .x-html form, .x-html ol, .x-html dl, .x-html dir, .x-html menu {
+    margin: 1.12em 0; }
+  /* line 63, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h5 {
+    font-size: .83em;
+    margin: 1.5em 0; }
+  /* line 64, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h6 {
+    font-size: .75em;
+    margin: 1.67em 0; }
+  /* line 72, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html h1, .x-html h2, .x-html h3, .x-html h4, .x-html h5, .x-html h6, .x-html b, .x-html strong {
+    font-weight: bolder; }
+  /* line 73, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html blockquote {
+    margin-left: 40px;
+    margin-right: 40px; }
+  /* line 78, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html i, .x-html cite, .x-html em, .x-html var, .x-html address {
+    font-style: italic; }
+  /* line 83, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html pre, .x-html tt, .x-html code, .x-html kbd, .x-html samp {
+    font-family: monospace; }
+  /* line 84, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html pre {
+    white-space: pre; }
+  /* line 88, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html button, .x-html textarea, .x-html input, .x-html select {
+    display: inline-block; }
+  /* line 89, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html big {
+    font-size: 1.17em; }
+  /* line 92, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html small, .x-html sub, .x-html sup {
+    font-size: .83em; }
+  /* line 93, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html sub {
+    vertical-align: sub; }
+  /* line 94, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html sup {
+    vertical-align: super; }
+  /* line 95, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html table {
+    border-spacing: 2px; }
+  /* line 98, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html thead, .x-html tbody, .x-html tfoot {
+    vertical-align: middle; }
+  /* line 100, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html td, .x-html th {
+    vertical-align: inherit; }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html s, .x-html strike, .x-html del {
+    text-decoration: line-through; }
+  /* line 104, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html hr {
+    border: 1px inset; }
+  /* line 109, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html ol, .x-html ul, .x-html dir, .x-html menu, .x-html dd {
+    margin-left: 40px; }
+  /* line 110, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html ul, .x-html menu, .x-html dir {
+    list-style-type: disc; }
+  /* line 111, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html ol {
+    list-style-type: decimal; }
+  /* line 115, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html ol ul, .x-html ul ol, .x-html ul ul, .x-html ol ol {
+    margin-top: 0;
+    margin-bottom: 0; }
+  /* line 117, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html u, .x-html ins {
+    text-decoration: underline; }
+  /* line 118, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html br:before {
+    content: "\A"; }
+  /* line 119, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html :before, .x-html :after {
+    white-space: pre-line; }
+  /* line 120, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html center {
+    text-align: center; }
+  /* line 121, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html :link, .x-html :visited {
+    text-decoration: underline; }
+  /* line 122, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html :focus {
+    outline: invert dotted thin; }
+  /* line 125, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html BDO[DIR="ltr"] {
+    direction: ltr;
+    unicode-bidi: bidi-override; }
+  /* line 126, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-html BDO[DIR="rtl"] {
+    direction: rtl;
+    unicode-bidi: bidi-override; }
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-standard-scoped-debug.css
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-standard-scoped-debug.css	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-standard-scoped-debug.css	(revision 18277)
@@ -0,0 +1,7051 @@
+/*
+This file is part of Ext JS 4.1
+
+Copyright (c) 2011-2012 Sencha Inc
+
+Contact:  http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2012-07-04 21:11:01 (65ff594cd80b9bad45df640c22cc0adb52c95a7b)
+*/
+/**
+ * @class Global_CSS
+ *
+ * Global CSS variables and mixins of Sencha Touch.
+ */
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+/**
+ * @var {string} $theme-name
+ * The name of the theme. This must match the the output directory of the images.
+ * (defaults to 'default')
+ */
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+/**
+ * @var {string} $font-family
+ * The default font-family to be used throughout the theme.
+ */
+/**
+ * @var {string} $base-gradient
+ * The base gradient to be used throughout the theme.
+ */
+/**
+ * @var {color} $base-color
+ * The base color to be used throughout the theme.
+ */
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules
+ */
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+/**
+ * @var {boolean} $compile-all
+ * True to copile all CSS, even if above include rules are false
+ */
+/**
+ * @var {boolean} $scope-reset-css
+ * True to scope the reset CSS within the $prefix variable.
+ */
+/**
+ * @var {color} $css-shadow-background-color
+ * The base color for CSS shadows
+ */
+/**
+ * @var {color} $include-shadow-images
+ * True to include all shadow images.
+ */
+/**
+ * @class Ext.form.field.Base
+ */
+/**
+ * @var {measurement} $form-field-height
+ * Height for form fields.
+ */
+/**
+ * @var {measurement} $form-toolbar-field-height
+ * Height for form fields in toolbar.
+ */
+/**
+ * @var {measurement} $form-error-icon-width
+ * Width for form error icons.
+ */
+/**
+ * @var {measurement} $form-field-padding
+ * Padding around form fields.
+ */
+/**
+ * @var {measurement} $form-field-font-size
+ * Font size for form fields.
+ */
+/**
+ * @var {font-family} $form-field-font-family
+ * Font family for form fields.
+ */
+/**
+ * @var {font-weight} $form-field-font-weight
+ * Font weight for form fields.
+ */
+/**
+ * @var {font} $form-field-font
+ * Font for form fields.
+ */
+/**
+ * @var {color} $form-field-color
+ * Text color for form fields.
+ */
+/**
+ * @var {color} $form-field-empty-color
+ * Text color for empty form fields.
+ */
+/**
+ * @var {color} $form-field-border-color
+ * Border color for form fields.
+ */
+/**
+ * @var {measurement} $form-field-border-width
+ * Border width for form fields.
+ */
+/**
+ * @var {color} $form-field-focus-border-color
+ * Border color for focused form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-border-color
+ * Border color for invalid form fields.
+ */
+/**
+ * @var {color} $form-field-background-color
+ * Background color for form fields.
+ */
+/**
+ * @var {string} $form-field-background-image
+ * Background image for form fields.
+ */
+/**
+ * @var {color} $form-field-invalid-background-color
+ * Background color for invalid form fields.
+ */
+/**
+ * @var {string} $form-field-invalid-background-image
+ * Background image for invalid form fields.
+ */
+/**
+ * @var {background-repeat} $form-field-invalid-background-repeat
+ * Background repeat for invalid form fields.
+ */
+/**
+ * @var {background-position} $form-field-invalid-background-position
+ * Background position for invalid form fields.
+ */
+/**
+ * @class Ext.form.field.TextArea
+ */
+/**
+ * @class Ext.form.Label
+ */
+/**
+ * @class Ext.form.field.Checkbox
+ */
+/**
+ * @class Ext.form.field.Radio
+ */
+/* Error messages */
+/**
+ * @class Ext.form.field.Trigger
+ */
+/**
+ * @class Ext.form.FieldSet
+ */
+/**
+ * @class Ext.slider.Multi
+ */
+/**
+ * Creates a background gradient.
+ *
+ * @param {Color} $bg-color The background color of the gradient
+ * @param {String/List} [$type] The type of gradient to be used. Can either
+ * be a String which is a predefined gradient, or it can can be a list of
+ * color_stops. If none is set, it will still set the `background-color`
+ * to the $background-color.
+ * @param {String} [$direction=top] The direction of the gradient. Can either be
+ * `top` or `left`.
+ * @member Global_CSS
+ */
+/*
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error.
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to
+ * be true.
+ */
+/* line 3, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-border-box .x-reset,
+.x-border-box .x-reset * {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  -webkit-box-sizing: border-box; }
+
+/* line 13, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset html, .x-reset body, .x-reset div, .x-reset dl, .x-reset dt, .x-reset dd, .x-reset ul, .x-reset ol, .x-reset li, .x-reset h1, .x-reset h2, .x-reset h3, .x-reset h4, .x-reset h5, .x-reset h6, .x-reset pre, .x-reset code, .x-reset form, .x-reset fieldset, .x-reset legend, .x-reset input, .x-reset textarea, .x-reset p, .x-reset blockquote, .x-reset th, .x-reset td {
+  margin: 0;
+  padding: 0; }
+/* line 18, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset table {
+  border-collapse: collapse;
+  border-spacing: 0; }
+/* line 23, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset fieldset, .x-reset img {
+  border: 0; }
+/* line 28, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset address, .x-reset caption, .x-reset cite, .x-reset code, .x-reset dfn, .x-reset em, .x-reset strong, .x-reset th, .x-reset var {
+  font-style: normal;
+  font-weight: normal; }
+/* line 33, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset li {
+  list-style: none; }
+/* line 37, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset caption, .x-reset th {
+  text-align: left; }
+/* line 41, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset h1, .x-reset h2, .x-reset h3, .x-reset h4, .x-reset h5, .x-reset h6 {
+  font-size: 100%; }
+/* line 46, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset q:before, .x-reset q:after {
+  content: ""; }
+/* line 50, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset abbr, .x-reset acronym {
+  border: 0;
+  font-variant: normal; }
+/* line 55, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset sup {
+  vertical-align: text-top; }
+/* line 59, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset sub {
+  vertical-align: text-bottom; }
+/* line 63, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset input, .x-reset textarea, .x-reset select {
+  font-family: inherit;
+  font-size: inherit;
+  font-weight: inherit; }
+/* line 69, ../themes/stylesheets/ext4/default/core/_reset.scss */
+.x-reset *:focus {
+  outline: none; }
+
+/* line 1, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-body {
+  color: black;
+  font-size: 12px;
+  font-family: tahoma, arial, verdana, sans-serif; }
+
+/* line 7, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-rtl {
+  direction: rtl; }
+
+/* line 11, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ltr {
+  direction: ltr; }
+
+/* line 15, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-clear {
+  overflow: hidden;
+  clear: both;
+  font-size: 0;
+  line-height: 0;
+  display: table; }
+
+/* line 23, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-strict .x-ie7 .x-clear {
+  height: 0;
+  width: 0; }
+
+/* line 31, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-layer {
+  position: absolute !important;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 37, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-shim {
+  position: absolute;
+  left: 0;
+  top: 0;
+  overflow: hidden;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0; }
+
+/* line 45, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hide-display {
+  display: none !important; }
+
+/* line 49, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hide-visibility {
+  visibility: hidden !important; }
+
+/* line 56, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-item-disabled .x-form-item-label,
+.x-item-disabled .x-form-field,
+.x-item-disabled .x-form-cb-label,
+.x-item-disabled .x-form-trigger {
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+  opacity: 0.3; }
+
+/* line 60, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ie6 .x-item-disabled {
+  filter: none; }
+
+/* line 65, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hidden,
+.x-hide-offsets {
+  display: block !important;
+  visibility: hidden !important;
+  position: absolute!important;
+  left: -10000px !important;
+  top: -10000px !important; }
+
+/* line 75, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-hide-nosize {
+  height: 0!important;
+  width: 0!important; }
+
+/* line 80, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-masked-relative {
+  position: relative; }
+
+/* line 92, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-css-shadow {
+  position: absolute;
+  -moz-border-radius: 5px 5px;
+  -webkit-border-radius: 5px 5px;
+  -o-border-radius: 5px 5px;
+  -ms-border-radius: 5px 5px;
+  -khtml-border-radius: 5px 5px;
+  border-radius: 5px 5px; }
+
+/* line 98, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-ie-shadow {
+  background-color: #777;
+  display: none;
+  position: absolute;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 107, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tl {
+  background: transparent no-repeat 0 0;
+  zoom: 1; }
+
+/* line 112, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tc {
+  height: 8px;
+  background: transparent repeat-x 0 0;
+  overflow: hidden; }
+
+/* line 118, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tr {
+  background: transparent no-repeat right -8px; }
+
+/* line 122, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-ml {
+  background: transparent repeat-y 0;
+  padding-left: 4px;
+  overflow: hidden;
+  zoom: 1; }
+
+/* line 129, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc {
+  background: repeat-x 0 -16px;
+  padding: 4px 10px; }
+
+/* line 134, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc h3 {
+  margin: 0 0 4px 0;
+  zoom: 1; }
+
+/* line 139, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mr {
+  background: transparent repeat-y right;
+  padding-right: 4px;
+  overflow: hidden; }
+
+/* line 145, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bl {
+  background: transparent no-repeat 0 -16px;
+  zoom: 1; }
+
+/* line 150, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bc {
+  background: transparent repeat-x 0 -8px;
+  height: 8px;
+  overflow: hidden; }
+
+/* line 156, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-br {
+  background: transparent no-repeat right -24px; }
+
+/* line 160, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tl, .x-box-bl {
+  padding-left: 8px;
+  overflow: hidden; }
+
+/* line 165, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tr, .x-box-br {
+  padding-right: 8px;
+  overflow: hidden; }
+
+/* line 170, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tl {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 174, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tc {
+  background-image: url('../../resources/themes/images/default/box/tb.gif'); }
+
+/* line 178, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-tr {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 182, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-ml {
+  background-image: url('../../resources/themes/images/default/box/l.gif'); }
+
+/* line 186, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc {
+  background-color: #eee;
+  background-image: url('../../resources/themes/images/default/box/tb.gif');
+  font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;
+  color: #393939;
+  font-size: 15px; }
+
+/* line 194, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mc h3 {
+  font-size: 18px;
+  font-weight: bold; }
+
+/* line 199, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-mr {
+  background-image: url('../../resources/themes/images/default/box/r.gif'); }
+
+/* line 203, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bl {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 207, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-bc {
+  background-image: url('../../resources/themes/images/default/box/tb.gif'); }
+
+/* line 211, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-br {
+  background-image: url('../../resources/themes/images/default/box/corners.gif'); }
+
+/* line 215, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr {
+  background-image: url('../../resources/themes/images/default/box/corners-blue.gif'); }
+
+/* line 219, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc {
+  background-image: url('../../resources/themes/images/default/box/tb-blue.gif'); }
+
+/* line 223, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-mc {
+  background-color: #c3daf9; }
+
+/* line 227, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-mc h3 {
+  color: #17385b; }
+
+/* line 231, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-ml {
+  background-image: url('../../resources/themes/images/default/box/l-blue.gif'); }
+
+/* line 235, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-box-blue .x-box-mr {
+  background-image: url('../../resources/themes/images/default/box/r-blue.gif'); }
+
+/* line 239, ../themes/stylesheets/ext4/default/core/_core.scss */
+.x-container {
+  zoom: 1; }
+  /* line 244, ../themes/stylesheets/ext4/default/core/_core.scss */
+  .x-container:before {
+    content: "";
+    clear: both;
+    display: table; }
+
+/* line 254, ../themes/stylesheets/ext4/default/core/_core.scss */
+table.x-container:before,
+tbody.x-container:before,
+tr.x-container:before {
+  display: none; }
+
+/* line 1, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-element {
+  position: absolute;
+  top: -10px;
+  left: -10px;
+  width: 0px;
+  height: 0px; }
+
+/* line 9, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame {
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  z-index: 100000000;
+  width: 0px;
+  height: 0px; }
+
+/* line 21, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom,
+.x-focus-frame-left,
+.x-focus-frame-right {
+  position: absolute;
+  top: 0px;
+  left: 0px; }
+
+/* line 28, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame-top,
+.x-focus-frame-bottom {
+  border-top: solid 2px #15428b;
+  height: 2px; }
+
+/* line 34, ../themes/stylesheets/ext4/default/util/_focus.scss */
+.x-focus-frame-left,
+.x-focus-frame-right {
+  border-left: solid 2px #15428b;
+  width: 2px; }
+
+/**
+ * Creates the base structure of a BoundList.
+ * @member Ext.view.BoundList
+ */
+/**
+ * Creates the base structure of an Ext.Button
+ * @member Ext.button.Button
+ */
+/**
+ * Creates a visual theme of an Ext.Button
+ * @member Ext.button.Button
+ */
+/**
+ * Creates the base structure of a button group.
+ * @member Ext.container.ButtonGroup
+ */
+/**
+ * Creates a visual theme of a button group.
+ * @member Ext.container.ButtonGroup
+ */
+/**
+ * Creates the base structure of a date picker.
+ * @member Ext.picker.Date
+ */
+/**
+ * Creates base structure for Ext.picker.Color
+ * @member Ext.picker.Color
+ */
+/**
+ * Creates the base structure of a Menu
+ * @member Ext.menu.Menu
+ */
+/**
+ * Create the base structure of an Ext.Panel
+ * @member Ext.panel.Panel
+ */
+/**
+ * Creates a visual theme for an Ext.Panel
+ * @member Ext.panel.Panel
+ */
+/**
+ * Creates base structure for Toolbar
+ * @member Ext.toolbar.Toolbar
+ */
+/**
+ * Creates a visual theme for an Toolbar.
+ * @param {String} $ui The name of the UI
+ * @param {Color} $background-color The background color of the toolbar (defaults to transparent)
+ * @param {Gradient/color-stops} $background-gradient The background gradient of the toolbar (defaults to null)
+ * @param {Color} $border-color The border color of the toolbar (defaults to null)
+ * @member Ext.toolbar.Toolbar
+ */
+/**
+ * Creates the base structure of Ext.form.Panel.
+ * @member Ext.form.Panel
+ */
+/**
+ * Creates the base structure of form field.
+ * @member Ext.form.field.Base
+ */
+/**
+ * Creates the base structure of FieldSet.
+ * @member Ext.form.FieldSet
+ */
+/**
+ * Creates the base structure of file field.
+ * @member Ext.form.field.File
+ */
+/**
+ * Creates the base structure of checkbox field.
+ * @member Ext.form.field.Checkbox
+ */
+/**
+ * Creates the base structure of CheckboxGroup.
+ * @member Ext.form.CheckboxGroup
+ */
+/**
+ * Creates the base structure of trigger field.
+ * @member Ext.form.field.Trigger
+ */
+/**
+ * Creates the base structure of HtmlEditor field.
+ * @member Ext.form.field.HtmlEditor
+ */
+/**
+ * Creates the base structure of QuickTip.
+ * @member Ext.tip.QuickTip
+ */
+/**
+ * Creates the base structure of an Ext.Window
+ * @member Ext.window.Window
+ */
+/**
+ * Creates a visual theme for an Ext.Panel
+ * @member Ext.window.Window
+ */
+/**
+ * Creates a visual theme for TabBar
+ * @member Ext.tab.Bar
+ */
+/**
+ * Creates the base structure of a Tab.
+ * @member Ext.tab.Tab
+ */
+/**
+ * Creates the base structure of slider.
+ * @member Ext.slider.Multi
+ */
+/**
+ * Creates base structure for a Grid.
+ * @member Ext.grid.Panel
+ */
+/**
+ * Creates the base structure of Tree.
+ * @member Ext.tree.Panel
+ */
+/* Styles for Ext.LoadMask */
+/* line 3, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+.x-mask {
+  z-index: 100;
+  position: absolute;
+  top: 0;
+  left: 0;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  width: 100%;
+  height: 100%;
+  zoom: 1;
+  background: #cccccc; }
+
+/* line 19, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+.x-mask-msg {
+  z-index: 20001;
+  position: absolute;
+  top: 0;
+  left: 0;
+  padding: 2px;
+  border: 1px solid;
+  border-color: #99bce8; }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/_loadmask.scss */
+  .x-mask-msg div {
+    padding: 5px 10px 5px 25px;
+    background-image: url('../../resources/themes/images/default/grid/loading.gif');
+    background-repeat: no-repeat;
+    background-position: 5px center;
+    cursor: wait;
+    border: 1px solid #a3bad9;
+    background-color: #eeeeee;
+    color: #222222;
+    font: normal 11px tahoma, arial, verdana, sans-serif; }
+
+/**
+ * Creates the base structure of an Ext.ProgressBar
+ * @member Ext.ProgressBar
+ */
+/**
+ * Creates a visual theme for an Ext.ProgressBar
+ * @member Ext.ProgressBar
+ */
+/**
+ * Creates base structure for a Draw Component.
+ * @member Ext.draw.Component
+ */
+/**
+ * Creates the base structure of Viewport.
+ * @member Ext.container.Viewport
+ */
+/**
+ * W3C suggested default style sheet for HTML 4:
+ * [http://www.w3.org/TR/CSS21/sample.html](http://www.w3.org/TR/CSS21/sample.html)
+ *
+ * @member Global_CSS
+ */
+/* line 30, ../themes/stylesheets/ext4/default/_all.scss */
+.x-reset {
+  /*
+  IE6-8 have issues with shrinking the TR to 0px (even w/line-height=0), so we
+  use an IE-specific trick to make the row disappear. We cannot do this on any
+  other browser, because it is not a non-standard thing to do and those other
+  browsers will do whacky things with it.
+  */
+  /*misc*/
+  /* Focused */
+  /* Radios */
+  /* boxLabel */
+  /* Horizontal styles */
+  /* Vertical styles */
+  /* Top Tabs */
+  /* Bottom Tabs */
+  /* In IE a disabled icon needs to be hidden or the opacity effect covers some of the text */
+  /* Include the element name otherwise Internet Explorer 7 & 8 take a performance hit */
+  /* Include the element name to raise the specificity to equal the :hover */
+  /*IE rounding error*/
+  /*
+   * Dock Layouts
+   * @todo move this somewhere else?
+   */ }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-reset .x-boundlist {
+    border-width: 1px;
+    border-style: solid;
+    border-color: #98c0f4;
+    background: white; }
+    /* line 12, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+    .x-reset .x-boundlist .x-toolbar {
+      border-width: 1px 0 0 0; }
+  /* line 29, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-reset .x-boundlist-item {
+    padding: 2px;
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default;
+    cursor: pointer;
+    cursor: hand;
+    position: relative;
+    /*allow hover in IE on empty items*/
+    border-width: 1px;
+    border-style: dotted;
+    border-color: white; }
+  /* line 43, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-reset .x-boundlist-selected {
+    background: #cbdaf0;
+    border-color: #8eabe4; }
+  /* line 48, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-reset .x-boundlist-item-over {
+    background: #dfe8f6;
+    border-color: #a3bae9; }
+  /* line 53, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-reset .x-boundlist-floating {
+    border-top-width: 0; }
+  /* line 57, ../themes/stylesheets/ext4/default/widgets/_boundlist.scss */
+  .x-reset .x-boundlist-above {
+    border-top-width: 1px;
+    border-bottom-width: 1px; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn {
+    display: inline-block;
+    zoom: 1;
+    *display: inline;
+    position: relative;
+    cursor: pointer;
+    cursor: hand;
+    white-space: nowrap;
+    vertical-align: middle;
+    background-repeat: no-repeat; }
+    /* line 19, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn * {
+      cursor: pointer;
+      cursor: hand; }
+    /* line 26, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn em {
+      background-repeat: no-repeat; }
+      /* line 30, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+      .x-reset .x-btn em a {
+        text-decoration: none;
+        display: block;
+        color: inherit;
+        width: 100%;
+        zoom: 1; }
+    /* line 45, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn button {
+      width: 100%;
+      display: block;
+      margin: 0;
+      padding: 0;
+      border: 0;
+      background: none;
+      outline: 0 none;
+      overflow: hidden;
+      vertical-align: bottom;
+      -webkit-appearance: none; }
+      /* line 59, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+      .x-reset .x-btn button::-moz-focus-inner {
+        border: 0;
+        padding: 0; }
+    /* line 65, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn .x-btn-inner {
+      display: block;
+      white-space: nowrap;
+      background-color: transparent;
+      background-repeat: no-repeat;
+      background-position: left center;
+      overflow: hidden; }
+    /* line 74, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn .x-btn-left .x-btn-inner {
+      text-align: left; }
+    /* line 78, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn .x-btn-center .x-btn-inner {
+      text-align: center; }
+    /* line 82, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn .x-btn-right .x-btn-inner {
+      text-align: right; }
+  /* line 87, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-disabled span {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5; }
+    /* line 91, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-disabled span, .x-ie7 .x-reset .x-btn-disabled span {
+      filter: none; }
+  /* line 98, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie7 .x-btn-disabled,
+  .x-reset .x-ie8 .x-btn-disabled {
+    filter: none; }
+  /* line 105, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie6 .x-btn-disabled .x-btn-icon,
+  .x-reset .x-ie7 .x-btn-disabled .x-btn-icon,
+  .x-reset .x-ie8 .x-btn-disabled .x-btn-icon {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+    opacity: 0.6; }
+  /* line 153, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-icon-text-left .x-btn-icon {
+    background-position: left center; }
+  /* line 157, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-icon-text-right .x-btn-icon {
+    background-position: right center; }
+  /* line 161, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-icon-text-top .x-btn-icon {
+    background-position: center top; }
+  /* line 165, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-icon-text-bottom .x-btn-icon {
+    background-position: center bottom; }
+  /* line 170, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn button, .x-reset .x-btn a {
+    position: relative; }
+    /* line 173, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn button .x-btn-icon, .x-reset .x-btn a .x-btn-icon {
+      position: absolute;
+      background-repeat: no-repeat; }
+  /* line 180, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-arrow-right {
+    background: transparent no-repeat right center;
+    padding-right: 12px; }
+    /* line 184, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn-arrow-right .x-btn-inner {
+      padding-right: 0 !important; }
+  /* line 189, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-toolbar .x-btn-arrow-right {
+    padding-right: 12px; }
+  /* line 193, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-arrow-bottom {
+    background: transparent no-repeat center bottom;
+    padding-bottom: 12px; }
+  /* line 198, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-arrow {
+    background-image: url('../../resources/themes/images/default/button/arrow.gif');
+    display: block; }
+  /* line 206, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-split-right,
+  .x-reset .x-btn-over .x-btn-split-right {
+    background: transparent no-repeat right center;
+    background-image: url('../../resources/themes/images/default/button/s-arrow.gif');
+    padding-right: 14px !important; }
+  /* line 213, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-split-bottom,
+  .x-reset .x-btn-over .x-btn-split-bottom {
+    background: transparent no-repeat center bottom;
+    background-image: url('../../resources/themes/images/default/button/s-arrow-b.gif');
+    padding-bottom: 14px; }
+  /* line 219, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-toolbar .x-btn-split-right {
+    background-image: url('../../resources/themes/images/default/button/s-arrow-noline.gif');
+    padding-right: 12px !important; }
+  /* line 224, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-toolbar .x-btn-split-bottom {
+    background-image: url('../../resources/themes/images/default/button/s-arrow-b-noline.gif'); }
+  /* line 228, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-split {
+    display: block; }
+  /* line 233, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-item-disabled,
+  .x-reset .x-item-disabled * {
+    cursor: default; }
+  /* line 237, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-cycle-fixed-width .x-btn-inner {
+    text-align: inherit; }
+  /* line 241, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-over .x-btn-split-right {
+    background-image: url('../../resources/themes/images/default/button/s-arrow-o.gif'); }
+  /* line 242, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-over .x-btn-split-bottom {
+    background-image: url('../../resources/themes/images/default/button/s-arrow-bo.gif'); }
+  /* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small {
+    border-color: #d1d1d1; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-btn-default-small {
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    -o-border-radius: 3px;
+    -ms-border-radius: 3px;
+    -khtml-border-radius: 3px;
+    border-radius: 3px;
+    padding: 2px 2px 2px 2px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: white; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-btn-default-small-mc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-bg.gif');
+    background-color: white; }
+  /* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small .x-btn-inner {
+    font-size: 11px;
+    font-weight: normal;
+    font-family: tahoma, arial, verdana, sans-serif;
+    color: #333333;
+    background-repeat: no-repeat;
+    padding: 0 4px; }
+  /* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon button,
+  .x-reset .x-btn-default-small-icon a,
+  .x-reset .x-btn-default-small-icon .x-btn-inner,
+  .x-reset .x-btn-default-small-noicon button,
+  .x-reset .x-btn-default-small-noicon a,
+  .x-reset .x-btn-default-small-noicon .x-btn-inner {
+    height: 16px;
+    line-height: 16px; }
+  /* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon button, .x-reset .x-btn-default-small-icon a {
+    padding: 0; }
+  /* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon .x-btn-inner {
+    /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+    width: 16px;
+    padding: 0; }
+  /* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon .x-btn-icon {
+    width: 16px;
+    height: 16px;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+  /* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-left button, .x-reset .x-btn-default-small-icon-text-left a {
+    height: 16px; }
+  /* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-left .x-btn-inner {
+    height: 16px;
+    line-height: 16px;
+    padding-left: 20px; }
+  /* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-left .x-btn-icon {
+    width: 16px;
+    height: auto;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: auto; }
+    /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-small-icon-text-left .x-btn-icon, .x-quirks .x-reset .x-btn-default-small-icon-text-left .x-btn-icon {
+      height: 16px; }
+  /* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-right button, .x-reset .x-btn-default-small-icon-text-right a {
+    height: 16px; }
+  /* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-right .x-btn-inner {
+    height: 16px;
+    line-height: 16px;
+    padding-right: 20px !important; }
+  /* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-right .x-btn-icon {
+    width: 16px;
+    height: auto;
+    top: 0;
+    left: auto;
+    bottom: 0;
+    right: 0; }
+    /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-small-icon-text-right .x-btn-icon, .x-quirks .x-reset .x-btn-default-small-icon-text-right .x-btn-icon {
+      height: 16px; }
+  /* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-top .x-btn-inner {
+    padding-top: 20px; }
+  /* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-top .x-btn-icon {
+    width: auto;
+    height: 16px;
+    top: 0;
+    left: 0;
+    bottom: auto;
+    right: 0; }
+    /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-small-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-small-icon-text-top .x-btn-icon {
+      width: 16px; }
+  /* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-bottom .x-btn-inner {
+    padding-bottom: 20px; }
+  /* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-icon-text-bottom .x-btn-icon {
+    width: auto;
+    height: 16px;
+    top: auto;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+    /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-small-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-small-icon-text-bottom .x-btn-icon {
+      width: 16px; }
+  /* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-over {
+    border-color: #b0ccf2;
+    background-image: none;
+    background-color: #e4f3ff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+    background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+  /* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-focus {
+    border-color: #b0ccf2;
+    background-image: none;
+    background-color: #e4f3ff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+    background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+  /* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-menu-active,
+  .x-reset .x-btn-default-small-pressed {
+    border-color: #9ebae1;
+    background-image: none;
+    background-color: #b6cbe4;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+    background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -ms-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); }
+  /* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-small-disabled {
+    border-color: #e1e1e1;
+    background-image: none;
+    background-color: #f7f7f7;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+    background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -ms-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); }
+    /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn-default-small-disabled .x-btn-inner {
+      color: #333333 !important; }
+  /* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie .x-btn-default-small-disabled .x-btn-inner {
+    color: #595959 !important; }
+  /* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie6 .x-btn-default-small-disabled .x-btn-inner {
+    color: #8c8c8c !important; }
+  /* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-small {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-bg.gif'); }
+  /* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-small-over {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-over-bg.gif'); }
+  /* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-small-focus {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-focus-bg.gif'); }
+  /* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-small-menu-active,
+  .x-reset .x-nlg .x-btn-default-small-pressed {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-pressed-bg.gif'); }
+  /* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-small-disabled {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-small-disabled-bg.gif'); }
+  /* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium {
+    border-color: #d1d1d1; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-btn-default-medium {
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    -o-border-radius: 3px;
+    -ms-border-radius: 3px;
+    -khtml-border-radius: 3px;
+    border-radius: 3px;
+    padding: 3px 3px 3px 3px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: white; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-btn-default-medium-mc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif');
+    background-color: white; }
+  /* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium .x-btn-inner {
+    font-size: 11px;
+    font-weight: normal;
+    font-family: tahoma, arial, verdana, sans-serif;
+    color: #333333;
+    background-repeat: no-repeat;
+    padding: 0 3px; }
+  /* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon button,
+  .x-reset .x-btn-default-medium-icon a,
+  .x-reset .x-btn-default-medium-icon .x-btn-inner,
+  .x-reset .x-btn-default-medium-noicon button,
+  .x-reset .x-btn-default-medium-noicon a,
+  .x-reset .x-btn-default-medium-noicon .x-btn-inner {
+    height: 24px;
+    line-height: 24px; }
+  /* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon button, .x-reset .x-btn-default-medium-icon a {
+    padding: 0; }
+  /* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon .x-btn-inner {
+    /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+    width: 24px;
+    padding: 0; }
+  /* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon .x-btn-icon {
+    width: 24px;
+    height: 24px;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+  /* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-left button, .x-reset .x-btn-default-medium-icon-text-left a {
+    height: 24px; }
+  /* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-left .x-btn-inner {
+    height: 24px;
+    line-height: 24px;
+    padding-left: 28px; }
+  /* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-left .x-btn-icon {
+    width: 24px;
+    height: auto;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: auto; }
+    /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-medium-icon-text-left .x-btn-icon, .x-quirks .x-reset .x-btn-default-medium-icon-text-left .x-btn-icon {
+      height: 24px; }
+  /* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-right button, .x-reset .x-btn-default-medium-icon-text-right a {
+    height: 24px; }
+  /* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-right .x-btn-inner {
+    height: 24px;
+    line-height: 24px;
+    padding-right: 28px !important; }
+  /* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-right .x-btn-icon {
+    width: 24px;
+    height: auto;
+    top: 0;
+    left: auto;
+    bottom: 0;
+    right: 0; }
+    /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-medium-icon-text-right .x-btn-icon, .x-quirks .x-reset .x-btn-default-medium-icon-text-right .x-btn-icon {
+      height: 24px; }
+  /* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-top .x-btn-inner {
+    padding-top: 28px; }
+  /* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-top .x-btn-icon {
+    width: auto;
+    height: 24px;
+    top: 0;
+    left: 0;
+    bottom: auto;
+    right: 0; }
+    /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-medium-icon-text-top .x-btn-icon {
+      width: 24px; }
+  /* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-bottom .x-btn-inner {
+    padding-bottom: 28px; }
+  /* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-icon-text-bottom .x-btn-icon {
+    width: auto;
+    height: 24px;
+    top: auto;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+    /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-medium-icon-text-bottom .x-btn-icon {
+      width: 24px; }
+  /* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-over {
+    border-color: #b0ccf2;
+    background-image: none;
+    background-color: #e4f3ff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+    background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+  /* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-focus {
+    border-color: #b0ccf2;
+    background-image: none;
+    background-color: #e4f3ff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+    background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+  /* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-menu-active,
+  .x-reset .x-btn-default-medium-pressed {
+    border-color: #9ebae1;
+    background-image: none;
+    background-color: #b6cbe4;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+    background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -ms-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); }
+  /* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-medium-disabled {
+    border-color: #e1e1e1;
+    background-image: none;
+    background-color: #f7f7f7;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+    background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -ms-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); }
+    /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn-default-medium-disabled .x-btn-inner {
+      color: #333333 !important; }
+  /* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie .x-btn-default-medium-disabled .x-btn-inner {
+    color: #595959 !important; }
+  /* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie6 .x-btn-default-medium-disabled .x-btn-inner {
+    color: #8c8c8c !important; }
+  /* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-medium {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif'); }
+  /* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-medium-over {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-over-bg.gif'); }
+  /* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-medium-focus {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-focus-bg.gif'); }
+  /* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-medium-menu-active,
+  .x-reset .x-nlg .x-btn-default-medium-pressed {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif'); }
+  /* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-medium-disabled {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif'); }
+  /* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large {
+    border-color: #d1d1d1; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-btn-default-large {
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    -o-border-radius: 3px;
+    -ms-border-radius: 3px;
+    -khtml-border-radius: 3px;
+    border-radius: 3px;
+    padding: 3px 3px 3px 3px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: white; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-btn-default-large-mc {
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-bg.gif');
+    background-color: white; }
+  /* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large .x-btn-inner {
+    font-size: 11px;
+    font-weight: normal;
+    font-family: tahoma, arial, verdana, sans-serif;
+    color: #333333;
+    background-repeat: no-repeat;
+    padding: 0 3px; }
+  /* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon button,
+  .x-reset .x-btn-default-large-icon a,
+  .x-reset .x-btn-default-large-icon .x-btn-inner,
+  .x-reset .x-btn-default-large-noicon button,
+  .x-reset .x-btn-default-large-noicon a,
+  .x-reset .x-btn-default-large-noicon .x-btn-inner {
+    height: 32px;
+    line-height: 32px; }
+  /* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon button, .x-reset .x-btn-default-large-icon a {
+    padding: 0; }
+  /* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon .x-btn-inner {
+    /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+    width: 32px;
+    padding: 0; }
+  /* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon .x-btn-icon {
+    width: 32px;
+    height: 32px;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+  /* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-left button, .x-reset .x-btn-default-large-icon-text-left a {
+    height: 32px; }
+  /* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-left .x-btn-inner {
+    height: 32px;
+    line-height: 32px;
+    padding-left: 36px; }
+  /* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-left .x-btn-icon {
+    width: 32px;
+    height: auto;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: auto; }
+    /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-large-icon-text-left .x-btn-icon, .x-quirks .x-reset .x-btn-default-large-icon-text-left .x-btn-icon {
+      height: 32px; }
+  /* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-right button, .x-reset .x-btn-default-large-icon-text-right a {
+    height: 32px; }
+  /* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-right .x-btn-inner {
+    height: 32px;
+    line-height: 32px;
+    padding-right: 36px !important; }
+  /* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-right .x-btn-icon {
+    width: 32px;
+    height: auto;
+    top: 0;
+    left: auto;
+    bottom: 0;
+    right: 0; }
+    /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-large-icon-text-right .x-btn-icon, .x-quirks .x-reset .x-btn-default-large-icon-text-right .x-btn-icon {
+      height: 32px; }
+  /* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-top .x-btn-inner {
+    padding-top: 36px; }
+  /* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-top .x-btn-icon {
+    width: auto;
+    height: 32px;
+    top: 0;
+    left: 0;
+    bottom: auto;
+    right: 0; }
+    /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-large-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-large-icon-text-top .x-btn-icon {
+      width: 32px; }
+  /* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-bottom .x-btn-inner {
+    padding-bottom: 36px; }
+  /* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-icon-text-bottom .x-btn-icon {
+    width: auto;
+    height: 32px;
+    top: auto;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+    /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-large-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-large-icon-text-bottom .x-btn-icon {
+      width: 32px; }
+  /* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-over {
+    border-color: #b0ccf2;
+    background-image: none;
+    background-color: #e4f3ff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+    background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+  /* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-focus {
+    border-color: #b0ccf2;
+    background-image: none;
+    background-color: #e4f3ff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6));
+    background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: -ms-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6);
+    background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); }
+  /* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-menu-active,
+  .x-reset .x-btn-default-large-pressed {
+    border-color: #9ebae1;
+    background-image: none;
+    background-color: #b6cbe4;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5));
+    background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: -ms-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5);
+    background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); }
+  /* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-large-disabled {
+    border-color: #e1e1e1;
+    background-image: none;
+    background-color: #f7f7f7;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf));
+    background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: -ms-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf);
+    background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); }
+    /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn-default-large-disabled .x-btn-inner {
+      color: #333333 !important; }
+  /* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie .x-btn-default-large-disabled .x-btn-inner {
+    color: #595959 !important; }
+  /* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie6 .x-btn-default-large-disabled .x-btn-inner {
+    color: #8c8c8c !important; }
+  /* line 982, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-large {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-bg.gif'); }
+  /* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-large-over {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-over-bg.gif'); }
+  /* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-large-focus {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-focus-bg.gif'); }
+  /* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-large-menu-active,
+  .x-reset .x-nlg .x-btn-default-large-pressed {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-pressed-bg.gif'); }
+  /* line 1019, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-large-disabled {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-large-disabled-bg.gif'); }
+  /* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small {
+    border-color: transparent; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-btn-default-toolbar-small {
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    -o-border-radius: 3px;
+    -ms-border-radius: 3px;
+    -khtml-border-radius: 3px;
+    border-radius: 3px;
+    padding: 2px 2px 2px 2px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: transparent; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-small-mc {
+    background-color: transparent; }
+  /* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small .x-btn-inner {
+    font-size: 11px;
+    font-weight: normal;
+    font-family: tahoma, arial, verdana, sans-serif;
+    color: #333333;
+    background-repeat: no-repeat;
+    padding: 0 4px; }
+  /* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon button,
+  .x-reset .x-btn-default-toolbar-small-icon a,
+  .x-reset .x-btn-default-toolbar-small-icon .x-btn-inner,
+  .x-reset .x-btn-default-toolbar-small-noicon button,
+  .x-reset .x-btn-default-toolbar-small-noicon a,
+  .x-reset .x-btn-default-toolbar-small-noicon .x-btn-inner {
+    height: 16px;
+    line-height: 16px; }
+  /* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon button, .x-reset .x-btn-default-toolbar-small-icon a {
+    padding: 0; }
+  /* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon .x-btn-inner {
+    /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+    width: 16px;
+    padding: 0; }
+  /* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon .x-btn-icon {
+    width: 16px;
+    height: 16px;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+  /* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-left button, .x-reset .x-btn-default-toolbar-small-icon-text-left a {
+    height: 16px; }
+  /* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-left .x-btn-inner {
+    height: 16px;
+    line-height: 16px;
+    padding-left: 20px; }
+  /* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-left .x-btn-icon {
+    width: 16px;
+    height: auto;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: auto; }
+    /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-small-icon-text-left .x-btn-icon, .x-quirks .x-reset .x-btn-default-toolbar-small-icon-text-left .x-btn-icon {
+      height: 16px; }
+  /* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-right button, .x-reset .x-btn-default-toolbar-small-icon-text-right a {
+    height: 16px; }
+  /* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-right .x-btn-inner {
+    height: 16px;
+    line-height: 16px;
+    padding-right: 20px !important; }
+  /* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-right .x-btn-icon {
+    width: 16px;
+    height: auto;
+    top: 0;
+    left: auto;
+    bottom: 0;
+    right: 0; }
+    /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-small-icon-text-right .x-btn-icon, .x-quirks .x-reset .x-btn-default-toolbar-small-icon-text-right .x-btn-icon {
+      height: 16px; }
+  /* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-top .x-btn-inner {
+    padding-top: 20px; }
+  /* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-top .x-btn-icon {
+    width: auto;
+    height: 16px;
+    top: 0;
+    left: 0;
+    bottom: auto;
+    right: 0; }
+    /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-small-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-toolbar-small-icon-text-top .x-btn-icon {
+      width: 16px; }
+  /* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner {
+    padding-bottom: 20px; }
+  /* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon {
+    width: auto;
+    height: 16px;
+    top: auto;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+    /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon {
+      width: 16px; }
+  /* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-over {
+    border-color: #81a4d0;
+    background-image: none;
+    background-color: #dbeeff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+    background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+  /* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-focus {
+    border-color: #81a4d0;
+    background-image: none;
+    background-color: #dbeeff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+    background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+  /* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-menu-active,
+  .x-reset .x-btn-default-toolbar-small-pressed {
+    border-color: #7a9ac4;
+    background-image: none;
+    background-color: #bccfe5;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+    background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -ms-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); }
+  /* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-disabled {
+    background-image: none;
+    background-color: transparent; }
+    /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn-default-toolbar-small-disabled .x-btn-inner {
+      color: #333333 !important; }
+  /* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie .x-btn-default-toolbar-small-disabled .x-btn-inner {
+    color: #595959 !important; }
+  /* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie6 .x-btn-default-toolbar-small-disabled .x-btn-inner {
+    color: #8c8c8c !important; }
+  /* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-small-over {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif'); }
+  /* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-small-focus {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif'); }
+  /* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-small-menu-active,
+  .x-reset .x-nlg .x-btn-default-toolbar-small-pressed {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif'); }
+  /* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium {
+    border-color: transparent; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-btn-default-toolbar-medium {
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    -o-border-radius: 3px;
+    -ms-border-radius: 3px;
+    -khtml-border-radius: 3px;
+    border-radius: 3px;
+    padding: 3px 3px 3px 3px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: transparent; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-medium-mc {
+    background-color: transparent; }
+  /* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium .x-btn-inner {
+    font-size: 11px;
+    font-weight: normal;
+    font-family: tahoma, arial, verdana, sans-serif;
+    color: #333333;
+    background-repeat: no-repeat;
+    padding: 0 3px; }
+  /* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon button,
+  .x-reset .x-btn-default-toolbar-medium-icon a,
+  .x-reset .x-btn-default-toolbar-medium-icon .x-btn-inner,
+  .x-reset .x-btn-default-toolbar-medium-noicon button,
+  .x-reset .x-btn-default-toolbar-medium-noicon a,
+  .x-reset .x-btn-default-toolbar-medium-noicon .x-btn-inner {
+    height: 24px;
+    line-height: 24px; }
+  /* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon button, .x-reset .x-btn-default-toolbar-medium-icon a {
+    padding: 0; }
+  /* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon .x-btn-inner {
+    /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+    width: 24px;
+    padding: 0; }
+  /* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon .x-btn-icon {
+    width: 24px;
+    height: 24px;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+  /* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-left button, .x-reset .x-btn-default-toolbar-medium-icon-text-left a {
+    height: 24px; }
+  /* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-left .x-btn-inner {
+    height: 24px;
+    line-height: 24px;
+    padding-left: 28px; }
+  /* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon {
+    width: 24px;
+    height: auto;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: auto; }
+    /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon, .x-quirks .x-reset .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon {
+      height: 24px; }
+  /* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-right button, .x-reset .x-btn-default-toolbar-medium-icon-text-right a {
+    height: 24px; }
+  /* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-right .x-btn-inner {
+    height: 24px;
+    line-height: 24px;
+    padding-right: 28px !important; }
+  /* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon {
+    width: 24px;
+    height: auto;
+    top: 0;
+    left: auto;
+    bottom: 0;
+    right: 0; }
+    /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon, .x-quirks .x-reset .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon {
+      height: 24px; }
+  /* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-top .x-btn-inner {
+    padding-top: 28px; }
+  /* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon {
+    width: auto;
+    height: 24px;
+    top: 0;
+    left: 0;
+    bottom: auto;
+    right: 0; }
+    /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon {
+      width: 24px; }
+  /* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner {
+    padding-bottom: 28px; }
+  /* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon {
+    width: auto;
+    height: 24px;
+    top: auto;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+    /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon {
+      width: 24px; }
+  /* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-over {
+    border-color: #81a4d0;
+    background-image: none;
+    background-color: #dbeeff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+    background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+  /* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-focus {
+    border-color: #81a4d0;
+    background-image: none;
+    background-color: #dbeeff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+    background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+  /* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-menu-active,
+  .x-reset .x-btn-default-toolbar-medium-pressed {
+    border-color: #7a9ac4;
+    background-image: none;
+    background-color: #bccfe5;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+    background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -ms-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); }
+  /* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-medium-disabled {
+    background-image: none;
+    background-color: transparent; }
+    /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+      color: #333333 !important; }
+  /* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+    color: #595959 !important; }
+  /* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie6 .x-btn-default-toolbar-medium-disabled .x-btn-inner {
+    color: #8c8c8c !important; }
+  /* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-medium-over {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif'); }
+  /* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-medium-focus {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif'); }
+  /* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-medium-menu-active,
+  .x-reset .x-nlg .x-btn-default-toolbar-medium-pressed {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif'); }
+  /* line 637, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large {
+    border-color: transparent; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-btn-default-toolbar-large {
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    -o-border-radius: 3px;
+    -ms-border-radius: 3px;
+    -khtml-border-radius: 3px;
+    border-radius: 3px;
+    padding: 3px 3px 3px 3px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: transparent; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-large-mc {
+    background-color: transparent; }
+  /* line 643, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large .x-btn-inner {
+    font-size: 11px;
+    font-weight: normal;
+    font-family: tahoma, arial, verdana, sans-serif;
+    color: #333333;
+    background-repeat: no-repeat;
+    padding: 0 3px; }
+  /* line 656, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon button,
+  .x-reset .x-btn-default-toolbar-large-icon a,
+  .x-reset .x-btn-default-toolbar-large-icon .x-btn-inner,
+  .x-reset .x-btn-default-toolbar-large-noicon button,
+  .x-reset .x-btn-default-toolbar-large-noicon a,
+  .x-reset .x-btn-default-toolbar-large-noicon .x-btn-inner {
+    height: 32px;
+    line-height: 32px; }
+  /* line 665, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon button, .x-reset .x-btn-default-toolbar-large-icon a {
+    padding: 0; }
+  /* line 669, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon .x-btn-inner {
+    /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+    width: 32px;
+    padding: 0; }
+  /* line 675, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon .x-btn-icon {
+    width: 32px;
+    height: 32px;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+  /* line 687, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-left button, .x-reset .x-btn-default-toolbar-large-icon-text-left a {
+    height: 32px; }
+  /* line 690, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-left .x-btn-inner {
+    height: 32px;
+    line-height: 32px;
+    padding-left: 36px; }
+  /* line 696, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-left .x-btn-icon {
+    width: 32px;
+    height: auto;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: auto; }
+    /* line 705, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-large-icon-text-left .x-btn-icon, .x-quirks .x-reset .x-btn-default-toolbar-large-icon-text-left .x-btn-icon {
+      height: 32px; }
+  /* line 713, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-right button, .x-reset .x-btn-default-toolbar-large-icon-text-right a {
+    height: 32px; }
+  /* line 716, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-right .x-btn-inner {
+    height: 32px;
+    line-height: 32px;
+    padding-right: 36px !important; }
+  /* line 722, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-right .x-btn-icon {
+    width: 32px;
+    height: auto;
+    top: 0;
+    left: auto;
+    bottom: 0;
+    right: 0; }
+    /* line 731, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-large-icon-text-right .x-btn-icon, .x-quirks .x-reset .x-btn-default-toolbar-large-icon-text-right .x-btn-icon {
+      height: 32px; }
+  /* line 738, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-top .x-btn-inner {
+    padding-top: 36px; }
+  /* line 742, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-top .x-btn-icon {
+    width: auto;
+    height: 32px;
+    top: 0;
+    left: 0;
+    bottom: auto;
+    right: 0; }
+    /* line 751, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-large-icon-text-top .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-toolbar-large-icon-text-top .x-btn-icon {
+      width: 32px; }
+  /* line 758, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner {
+    padding-bottom: 36px; }
+  /* line 762, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon {
+    width: auto;
+    height: 32px;
+    top: auto;
+    left: 0;
+    bottom: 0;
+    right: 0; }
+    /* line 771, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-ie6 .x-reset .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon, .x-quirks .x-ie .x-reset .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon {
+      width: 32px; }
+  /* line 777, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-over {
+    border-color: #81a4d0;
+    background-image: none;
+    background-color: #dbeeff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+    background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+  /* line 801, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-focus {
+    border-color: #81a4d0;
+    background-image: none;
+    background-color: #dbeeff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5));
+    background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: -ms-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5);
+    background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); }
+  /* line 826, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-menu-active,
+  .x-reset .x-btn-default-toolbar-large-pressed {
+    border-color: #7a9ac4;
+    background-image: none;
+    background-color: #bccfe5;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5));
+    background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: -ms-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5);
+    background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); }
+  /* line 850, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-large-disabled {
+    background-image: none;
+    background-color: transparent; }
+    /* line 858, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+    .x-reset .x-btn-default-toolbar-large-disabled .x-btn-inner {
+      color: #333333 !important; }
+  /* line 875, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie .x-btn-default-toolbar-large-disabled .x-btn-inner {
+    color: #595959 !important; }
+  /* line 883, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-ie6 .x-btn-default-toolbar-large-disabled .x-btn-inner {
+    color: #8c8c8c !important; }
+  /* line 991, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-large-over {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif'); }
+  /* line 1000, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-large-focus {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif'); }
+  /* line 1010, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-nlg .x-btn-default-toolbar-large-menu-active,
+  .x-reset .x-nlg .x-btn-default-toolbar-large-pressed {
+    background-repeat: repeat-x;
+    background-image: url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif'); }
+  /* line 571, ../themes/stylesheets/ext4/default/widgets/_button.scss */
+  .x-reset .x-btn-default-toolbar-small-disabled,
+  .x-reset .x-btn-default-toolbar-medium-disabled,
+  .x-reset .x-btn-default-toolbar-large-disabled {
+    border-color: transparent;
+    background-image: none;
+    background: transparent; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-reset .x-btn-group {
+    position: relative;
+    overflow: hidden; }
+  /* line 11, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-reset .x-btn-group-body {
+    position: relative;
+    zoom: 1;
+    padding: 0 1px; }
+    /* line 15, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+    .x-reset .x-btn-group-body .x-table-layout-cell {
+      vertical-align: top; }
+  /* line 20, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-reset .x-btn-group-header-text {
+    white-space: nowrap; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-btn-group-default-framed {
+    -moz-border-radius: 2px;
+    -webkit-border-radius: 2px;
+    -o-border-radius: 2px;
+    -ms-border-radius: 2px;
+    -khtml-border-radius: 2px;
+    border-radius: 2px;
+    padding: 1px 1px 1px 1px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #d0def0; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-btn-group-default-framed-mc {
+    background-color: #d0def0; }
+  /* line 60, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-reset .x-btn-group-default-framed {
+    border-color: #b7c8d7;
+    -moz-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+    -webkit-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+    -o-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset;
+    box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset; }
+  /* line 68, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-reset .x-btn-group-header-default-framed {
+    margin: 2px 2px 0 2px; }
+  /* line 72, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-reset .x-btn-group-header-body-default-framed {
+    padding: 1px 0;
+    background: #c2d8f0;
+    -moz-border-radius-topleft: 2px;
+    -webkit-border-top-left-radius: 2px;
+    -o-border-top-left-radius: 2px;
+    -ms-border-top-left-radius: 2px;
+    -khtml-border-top-left-radius: 2px;
+    border-top-left-radius: 2px;
+    -moz-border-radius-topright: 2px;
+    -webkit-border-top-right-radius: 2px;
+    -o-border-top-right-radius: 2px;
+    -ms-border-top-right-radius: 2px;
+    -khtml-border-top-right-radius: 2px;
+    border-top-right-radius: 2px; }
+  /* line 80, ../themes/stylesheets/ext4/default/widgets/_btn-group.scss */
+  .x-reset .x-btn-group-header-text-default-framed {
+    font: normal 11px tahoma, arial, verdana, sans-serif;
+    color: #3e6aaa; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker {
+    border: 1px solid #1b376c;
+    background-color: white;
+    position: relative; }
+    /* line 12, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker a {
+      -moz-outline: 0 none;
+      outline: 0 none;
+      color: #15428b;
+      text-decoration: none;
+      border-width: 0; }
+  /* line 25, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-inner,
+  .x-reset .x-datepicker-inner td,
+  .x-reset .x-datepicker-inner th {
+    border-collapse: separate; }
+  /* line 29, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-header {
+    position: relative;
+    height: 26px;
+    background-image: none;
+    background-color: #23427c;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #264888), color-stop(100%, #1f3a6c));
+    background-image: -webkit-linear-gradient(top, #264888, #1f3a6c);
+    background-image: -moz-linear-gradient(top, #264888, #1f3a6c);
+    background-image: -o-linear-gradient(top, #264888, #1f3a6c);
+    background-image: -ms-linear-gradient(top, #264888, #1f3a6c);
+    background-image: linear-gradient(top, #264888, #1f3a6c); }
+  /* line 42, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-prev,
+  .x-reset .x-datepicker-next {
+    position: absolute;
+    top: 5px;
+    width: 18px; }
+    /* line 48, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker-prev a,
+    .x-reset .x-datepicker-next a {
+      display: block;
+      width: 16px;
+      height: 16px;
+      background-position: top;
+      background-repeat: no-repeat;
+      cursor: pointer;
+      text-decoration: none !important;
+      filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+      opacity: 0.7; }
+      /* line 63, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+      .x-reset .x-datepicker-prev a:hover,
+      .x-reset .x-datepicker-next a:hover {
+        filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+        opacity: 1; }
+  /* line 69, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-next {
+    right: 5px; }
+    /* line 72, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker-next a {
+      background-image: url('../../resources/themes/images/default/shared/right-btn.gif'); }
+  /* line 77, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-prev {
+    left: 5px; }
+    /* line 80, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker-prev a {
+      background-image: url('../../resources/themes/images/default/shared/left-btn.gif'); }
+  /* line 86, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-item-disabled .x-datepicker-prev a:hover,
+  .x-reset .x-item-disabled .x-datepicker-next a:hover {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+    opacity: 0.6; }
+  /* line 90, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-month {
+    padding-top: 3px; }
+    /* line 103, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker-month .x-btn,
+    .x-reset .x-datepicker-month button,
+    .x-reset .x-datepicker-month .x-btn-tc,
+    .x-reset .x-datepicker-month .x-btn-tl,
+    .x-reset .x-datepicker-month .x-btn-tr,
+    .x-reset .x-datepicker-month .x-btn-mc,
+    .x-reset .x-datepicker-month .x-btn-ml,
+    .x-reset .x-datepicker-month .x-btn-mr,
+    .x-reset .x-datepicker-month .x-btn-bc,
+    .x-reset .x-datepicker-month .x-btn-bl,
+    .x-reset .x-datepicker-month .x-btn-br {
+      background: transparent !important;
+      border-width: 0 !important; }
+    /* line 108, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker-month span {
+      color: #fff !important; }
+    /* line 112, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker-month .x-btn-split-right {
+      background-image: url('../../resources/themes/images/default/button/s-arrow-light.gif');
+      padding-right: 12px; }
+  /* line 118, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-next {
+    text-align: right; }
+  /* line 122, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-month {
+    text-align: center; }
+    /* line 126, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker-month button {
+      color: white !important; }
+  /* line 132, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset table.x-datepicker-inner {
+    width: 100%;
+    table-layout: fixed; }
+    /* line 136, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner th {
+      width: 25px;
+      height: 19px;
+      padding: 0;
+      color: #233d6d;
+      font: normal 10px tahoma, arial, verdana, sans-serif;
+      text-align: right;
+      border-bottom: 1px solid #b2d1f5;
+      border-collapse: separate;
+      background-image: none;
+      background-color: #dfecfb;
+      background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #edf4fd), color-stop(100%, #cde1f9));
+      background-image: -webkit-linear-gradient(top, #edf4fd, #cde1f9);
+      background-image: -moz-linear-gradient(top, #edf4fd, #cde1f9);
+      background-image: -o-linear-gradient(top, #edf4fd, #cde1f9);
+      background-image: -ms-linear-gradient(top, #edf4fd, #cde1f9);
+      background-image: linear-gradient(top, #edf4fd, #cde1f9);
+      cursor: default; }
+      /* line 157, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+      .x-reset table.x-datepicker-inner th span {
+        display: block;
+        padding-right: 7px; }
+    /* line 163, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner tr {
+      height: 20px; }
+    /* line 167, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner td {
+      border: 1px solid;
+      height: 17px;
+      border-color: white;
+      text-align: right;
+      padding: 0; }
+    /* line 175, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner a {
+      padding-right: 4px;
+      display: block;
+      zoom: 1;
+      font: normal 11px tahoma, arial, verdana, sans-serif;
+      color: black;
+      text-decoration: none;
+      text-align: right; }
+    /* line 188, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner .x-datepicker-active {
+      cursor: pointer;
+      color: black; }
+    /* line 194, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner .x-datepicker-selected a {
+      background: repeat-x left top;
+      background-color: #dae5f3;
+      border: 1px solid #8db2e3; }
+    /* line 200, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner .x-datepicker-selected span {
+      font-weight: bold; }
+    /* line 206, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner .x-datepicker-today a {
+      border: 1px solid;
+      border-color: darkred; }
+    /* line 214, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner .x-datepicker-prevday a,
+    .x-reset table.x-datepicker-inner .x-datepicker-nextday a {
+      text-decoration: none !important;
+      color: #aaa; }
+    /* line 221, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner a:hover,
+    .x-reset table.x-datepicker-inner .x-datepicker-disabled a:hover {
+      text-decoration: none !important;
+      color: #000;
+      background-color: #ddecfe; }
+    /* line 229, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset table.x-datepicker-inner .x-datepicker-disabled a {
+      cursor: default;
+      background-color: #eee;
+      color: #bbb; }
+  /* line 237, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker-footer,
+  .x-reset .x-monthpicker-buttons {
+    position: relative;
+    border-top: 1px solid #b2d1f5;
+    background-image: none;
+    background-color: #dfecfb;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dee8f5), color-stop(49%, #d1dff0), color-stop(51%, #c7d8ed), color-stop(100%, #cbdaee));
+    background-image: -webkit-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+    background-image: -moz-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+    background-image: -o-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+    background-image: -ms-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+    background-image: linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee);
+    text-align: center; }
+    /* line 250, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-datepicker-footer .x-btn,
+    .x-reset .x-monthpicker-buttons .x-btn {
+      position: relative;
+      margin: 4px; }
+  /* line 256, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-item-disabled .x-datepicker-inner a:hover {
+    background: none; }
+  /* line 261, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-datepicker .x-monthpicker {
+    position: absolute;
+    left: 0;
+    top: 0; }
+  /* line 268, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker {
+    border: 1px solid #1b376c;
+    background-color: white; }
+  /* line 274, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-months,
+  .x-reset .x-monthpicker-years {
+    float: left;
+    height: 167px;
+    width: 88px; }
+  /* line 281, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-item {
+    float: left;
+    margin: 4px 0 5px 0;
+    font: normal 11px tahoma, arial, verdana, sans-serif;
+    text-align: center;
+    vertical-align: middle;
+    height: 18px;
+    width: 43px;
+    border: 0 none; }
+    /* line 295, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-monthpicker-item a {
+      display: block;
+      margin: 0 5px;
+      text-decoration: none;
+      color: #15428b;
+      border: 1px solid white;
+      line-height: 17px; }
+      /* line 308, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+      .x-reset .x-monthpicker-item a:hover {
+        background-color: #ddecfe; }
+      /* line 312, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+      .x-reset .x-monthpicker-item a.x-monthpicker-selected {
+        background-color: #dfecfb;
+        border: 1px solid #8db2e3; }
+  /* line 319, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-months {
+    border-right: 1px solid #1b376c;
+    width: 87px; }
+  /* line 324, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-years .x-monthpicker-item {
+    width: 44px; }
+  /* line 328, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-yearnav {
+    height: 28px; }
+    /* line 331, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+    .x-reset .x-monthpicker-yearnav button {
+      background-image: url('../../resources/themes/images/default/tools/tool-sprites.gif');
+      height: 15px;
+      width: 15px;
+      padding: 0;
+      margin: 6px 12px 5px 15px;
+      border: 0;
+      outline: 0 none; }
+      /* line 339, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+      .x-reset .x-monthpicker-yearnav button::-moz-focus-inner {
+        border: 0;
+        padding: 0; }
+  /* line 346, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-yearnav-next {
+    background-position: 0 -120px; }
+  /* line 350, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-yearnav-next-over {
+    cursor: pointer;
+    cursor: hand;
+    background-position: -15px -120px; }
+  /* line 356, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-yearnav-prev {
+    background-position: 0 -105px; }
+  /* line 360, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-yearnav-prev-over {
+    cursor: pointer;
+    cursor: hand;
+    background-position: -15px -105px; }
+  /* line 367, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-small .x-monthpicker-item {
+    margin: 2px 0 2px 0; }
+  /* line 371, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-small .x-monthpicker-yearnav {
+    height: 23px; }
+  /* line 375, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-monthpicker-small .x-monthpicker-months, .x-reset .x-monthpicker-small .x-monthpicker-years {
+    height: 136px; }
+  /* line 407, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-nlg .x-datepicker-header {
+    background-image: url('../../resources/themes/images/default/datepicker/datepicker-header-bg.gif');
+    background-repeat: repeat-x;
+    background-position: top left; }
+  /* line 416, ../themes/stylesheets/ext4/default/widgets/_datepicker.scss */
+  .x-reset .x-nlg .x-datepicker-footer,
+  .x-reset .x-nlg .x-monthpicker-buttons {
+    background-image: url('../../resources/themes/images/default/datepicker/datepicker-footer-bg.gif');
+    background-repeat: repeat-x;
+    background-position: top left; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+  .x-reset .x-color-picker {
+    width: 144px;
+    height: 90px;
+    cursor: pointer; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+  .x-reset .x-color-picker a {
+    border: 1px solid #fff;
+    float: left;
+    padding: 2px;
+    text-decoration: none;
+    -moz-outline: 0 none;
+    outline: 0 none;
+    cursor: pointer; }
+  /* line 28, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+  .x-reset .x-color-picker a:hover,
+  .x-reset .x-color-picker a.x-color-picker-selected {
+    border-color: #8bb8f3;
+    background-color: #deecfd; }
+  /* line 33, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+  .x-reset .x-color-picker em {
+    display: block;
+    border: 1px solid #aca899; }
+  /* line 39, ../themes/stylesheets/ext4/default/widgets/_colorpicker.scss */
+  .x-reset .x-color-picker em span {
+    cursor: pointer;
+    display: block;
+    height: 10px;
+    width: 10px;
+    line-height: 10px; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-body {
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default;
+    background: #f0f0f0 !important;
+    padding: 2px; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item .x-form-text {
+    user-select: text;
+    -webkit-user-select: text;
+    -o-user-select: text;
+    -ie-user-select: text;
+    -moz-user-select: text;
+    -ie-user-select: text; }
+  /* line 21, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-icon-separator {
+    position: absolute;
+    top: 0px;
+    left: 27px;
+    z-index: 0;
+    border-left: solid 1px #e0e0e0;
+    background-color: white;
+    width: 2px;
+    overflow: hidden; }
+  /* line 33, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-plain .x-menu-icon-separator {
+    display: none; }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-focus {
+    display: block;
+    position: absolute;
+    top: -10px;
+    left: -10px;
+    width: 0px;
+    height: 0px; }
+  /* line 47, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item {
+    white-space: nowrap;
+    overflow: hidden;
+    z-index: 1; }
+  /* line 53, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-cmp {
+    margin-bottom: 1px; }
+  /* line 57, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-link {
+    display: block;
+    margin: 1px;
+    padding: 6px 2px 3px 32px;
+    text-decoration: none !important;
+    line-height: 16px;
+    cursor: default; }
+  /* line 70, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-opera .x-menu-item-link {
+    position: relative; }
+  /* line 76, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-icon {
+    width: 16px;
+    height: 16px;
+    position: absolute;
+    top: 5px;
+    left: 4px;
+    background: no-repeat center center; }
+  /* line 87, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-icon-right {
+    width: 16px;
+    height: 16px;
+    position: absolute;
+    top: 6px;
+    right: 4px;
+    background: no-repeat center center; }
+  /* line 96, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-text {
+    font-size: 11px;
+    color: #222222; }
+  /* line 102, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-checked .x-menu-item-icon {
+    background-image: url('../../resources/themes/images/default/menu/checked.gif'); }
+  /* line 105, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-checked .x-menu-group-icon {
+    background-image: url('../../resources/themes/images/default/menu/group-checked.gif'); }
+  /* line 111, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-unchecked .x-menu-item-icon {
+    background-image: url('../../resources/themes/images/default/menu/unchecked.gif'); }
+  /* line 114, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-unchecked .x-menu-group-icon {
+    background-image: none; }
+  /* line 119, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-separator {
+    height: 2px;
+    border-top: solid 1px #e0e0e0;
+    background-color: white;
+    margin: 2px 0px;
+    overflow: hidden; }
+  /* line 127, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-arrow {
+    position: absolute;
+    width: 12px;
+    height: 9px;
+    top: 9px;
+    right: 0px;
+    background: no-repeat center center;
+    background-image: url('../../resources/themes/images/default/menu/menu-parent.gif'); }
+  /* line 137, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-indent {
+    margin-left: 31px;
+    /* The 2px is the width of the seperator */ }
+  /* line 141, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-active {
+    cursor: pointer; }
+    /* line 144, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+    .x-reset .x-menu-item-active .x-menu-item-link {
+      background-image: none;
+      background-color: #d9e8fb;
+      background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7f0fc), color-stop(100%, #c7ddf9));
+      background-image: -webkit-linear-gradient(top, #e7f0fc, #c7ddf9);
+      background-image: -moz-linear-gradient(top, #e7f0fc, #c7ddf9);
+      background-image: -o-linear-gradient(top, #e7f0fc, #c7ddf9);
+      background-image: -ms-linear-gradient(top, #e7f0fc, #c7ddf9);
+      background-image: linear-gradient(top, #e7f0fc, #c7ddf9);
+      margin: 0px;
+      border: 1px solid #a9cbf5;
+      cursor: pointer;
+      -moz-border-radius: 3px;
+      -webkit-border-radius: 3px;
+      -o-border-radius: 3px;
+      -ms-border-radius: 3px;
+      -khtml-border-radius: 3px;
+      border-radius: 3px; }
+  /* line 153, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-item-disabled {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5; }
+  /* line 192, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-nlg .x-menu-item-active .x-menu-item-link {
+    background: #d9e8fb repeat-x left top;
+    background-image: url('../../resources/themes/images/default/menu/menu-item-active-bg.gif'); }
+  /* line 199, ../themes/stylesheets/ext4/default/widgets/_menu.scss */
+  .x-reset .x-menu-date-item {
+    border-color: #99BBE8; }
+  /* line 8, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-panel .x-grid-body {
+    background: white;
+    border-color: #99bce8;
+    border-style: solid;
+    border-width: 1px;
+    border-top-color: #c5c5c5; }
+  /* line 17, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-panel .x-grid-header-ct-hidden {
+    visibility: hidden; }
+  /* line 22, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-empty {
+    padding: 10px;
+    color: gray;
+    font: normal 11px tahoma, arial, helvetica, sans-serif; }
+  /* line 28, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-header-hidden .x-grid-body {
+    border-top-color: #99bce8 !important; }
+  /* line 32, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-view {
+    overflow: hidden;
+    position: relative; }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-table {
+    table-layout: fixed;
+    border-collapse: separate; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-autowidth-table table.x-grid-table {
+    table-layout: auto;
+    width: auto!important; }
+  /* line 50, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row .x-grid-table {
+    border-collapse: collapse; }
+  /* line 54, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-locked .x-grid-inner-locked {
+    border-width: 0 1px 0 0 !important;
+    border-style: solid; }
+  /* line 59, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-header-ct {
+    cursor: default;
+    zoom: 1;
+    padding: 0;
+    border: 1px solid #99bce8;
+    border-bottom-color: #c5c5c5; }
+  /* line 73, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-accordion-item .x-grid-header-ct {
+    border-width: 0 0 1px 0!important; }
+  /* line 77, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header {
+    padding: 0;
+    position: absolute;
+    overflow: hidden;
+    border-right: 1px solid #c5c5c5;
+    border-left: 0 none;
+    border-top: 0 none;
+    border-bottom: 0 none;
+    text-shadow: 0 1px 0 rgba(255, 255, 255, 0.3);
+    color: null;
+    font: normal 11px tahoma, arial, verdana, sans-serif; }
+  /* line 99, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-group-header {
+    padding: 0;
+    border-left-width: 0; }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-group-sub-header {
+    background: transparent;
+    border-top: 1px solid #c5c5c5;
+    border-left-width: 0; }
+  /* line 109, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-inner {
+    zoom: 1;
+    position: relative;
+    white-space: nowrap;
+    line-height: 15px;
+    padding: 3px 6px 4px; }
+    /* line 116, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-column-header-inner .x-column-header-text {
+      white-space: nowrap; }
+  /* line 123, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-over,
+  .x-reset .x-column-header-sort-ASC,
+  .x-reset .x-column-header-sort-DESC {
+    border-left-color: #aaccf6;
+    border-right-color: #aaccf6; }
+  /* line 135, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-nlg .x-grid-header-ct,
+  .x-reset .x-nlg .x-column-header {
+    background: repeat-x 0 top;
+    background-image: url('../../resources/themes/images/default/grid/column-header-bg.gif'); }
+  /* line 142, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-nlg .x-column-header-over,
+  .x-reset .x-nlg .x-column-header-sort-ASC,
+  .x-reset .x-nlg .x-column-header-sort-DESC {
+    background: #ebf3fd repeat-x 0 top;
+    background-image: url('../../resources/themes/images/default/grid/column-header-over-bg.gif'); }
+  /* line 149, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-trigger {
+    display: none;
+    height: 100%;
+    width: 14px;
+    background: no-repeat left center;
+    background-color: #c3daf9;
+    background-image: url('../../resources/themes/images/default/grid/grid3-hd-btn.gif');
+    position: absolute;
+    right: 0;
+    top: 0;
+    z-index: 2;
+    cursor: pointer; }
+  /* line 164, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-over .x-column-header-trigger, .x-reset .x-column-header-open .x-column-header-trigger {
+    display: block; }
+  /* line 169, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-align-right {
+    text-align: right; }
+    /* line 172, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-column-header-align-right .x-column-header-text {
+      padding-right: 0.5ex;
+      margin-right: 6px; }
+  /* line 177, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-align-center {
+    text-align: center; }
+  /* line 180, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-align-left {
+    text-align: left; }
+  /* line 185, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-sort-ASC .x-column-header-text {
+    padding-right: 16px;
+    background: no-repeat right 6px;
+    background-image: url('../../resources/themes/images/default/grid/sort_asc.gif'); }
+  /* line 190, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-sort-DESC .x-column-header-text {
+    padding-right: 16px;
+    background: no-repeat right 6px;
+    background-image: url('../../resources/themes/images/default/grid/sort_desc.gif'); }
+  /* line 197, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row {
+    vertical-align: top; }
+    /* line 199, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-row .x-grid-cell {
+      color: null;
+      font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+      background-color: white;
+      border-color: #ededed;
+      border-style: solid;
+      border-top-color: #fafafa;
+      border-width: 0; }
+  /* line 212, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-with-row-lines .x-grid-cell {
+    border-width: 1px 0; }
+  /* line 216, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-rowwrap-div {
+    border-width: 1px 0;
+    border-color: #ededed;
+    border-style: solid;
+    border-top-color: #fafafa;
+    overflow: hidden; }
+  /* line 226, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-alt .x-grid-cell,
+  .x-reset .x-grid-row-alt .x-grid-rowwrap-div {
+    background-color: #fafafa; }
+  /* line 231, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-over .x-grid-cell,
+  .x-reset .x-grid-row-over .x-grid-rowwrap-div {
+    border-color: #dddddd;
+    background-color: #efefef; }
+  /* line 238, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-focused .x-grid-cell,
+  .x-reset .x-grid-row-focused .x-grid-rowwrap-div {
+    border-color: #dddddd;
+    background-color: #efefef; }
+  /* line 245, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-selected .x-grid-cell,
+  .x-reset .x-grid-row-selected .x-grid-rowwrap-div {
+    border-style: dotted;
+    border-color: #a3bae9;
+    background-color: #dfe8f6 !important; }
+  /* line 254, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-rowwrap-div .x-grid-cell,
+  .x-reset .x-grid-rowwrap-div .x-grid-cell-inner {
+    border-width: 0;
+    background: transparent; }
+  /* line 261, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-body-hidden {
+    display: none; }
+  /* line 265, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-rowbody {
+    font: normal 11px/13px tahoma, arial, verdana, sans-serif;
+    padding: 4px; }
+    /* line 270, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-rowbody p {
+      margin: 5px 5px 10px 5px; }
+  /* line 276, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-cell {
+    overflow: hidden; }
+  /* line 280, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-cell-inner {
+    overflow: hidden;
+    -o-text-overflow: ellipsis;
+    text-overflow: ellipsis;
+    padding: 2px 6px 3px;
+    white-space: nowrap; }
+  /* line 291, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-with-row-lines .x-grid-cell-inner {
+    line-height: 13px;
+    padding-bottom: 4px; }
+  /* line 297, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-action-col-cell .x-grid-cell-inner {
+    line-height: 0;
+    padding: 2px; }
+  /* line 302, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-action-col-cell .x-item-disabled {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+    opacity: 0.3; }
+  /* line 306, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-with-row-lines .x-action-col-cell .x-grid-cell-inner {
+    padding-top: 1px; }
+  /* line 310, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row .x-grid-cell-special {
+    padding: 0;
+    border-right: 1px solid #d0d0d0;
+    background-image: none;
+    background-color: #f6f6f6;
+    background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #f6f6f6), color-stop(100%, #e9e9e9));
+    background-image: -webkit-linear-gradient(left, #f6f6f6, #e9e9e9);
+    background-image: -moz-linear-gradient(left, #f6f6f6, #e9e9e9);
+    background-image: -o-linear-gradient(left, #f6f6f6, #e9e9e9);
+    background-image: -ms-linear-gradient(left, #f6f6f6, #e9e9e9);
+    background-image: linear-gradient(left, #f6f6f6, #e9e9e9); }
+  /* line 316, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row .x-grid-cell-row-checker {
+    vertical-align: middle; }
+  /* line 330, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-ie6 .x-grid-header-row,
+  .x-reset .x-ie7 .x-grid-header-row,
+  .x-reset .x-quirks .x-ie8 .x-grid-header-row {
+    position: absolute; }
+  /* line 335, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-selected .x-grid-cell-special {
+    border-right: 1px solid #aaccf6;
+    background-image: none;
+    background-color: #dfe8f6;
+    background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dfe8f6), color-stop(100%, #cbdaf0));
+    background-image: -webkit-linear-gradient(left, #dfe8f6, #cbdaf0);
+    background-image: -moz-linear-gradient(left, #dfe8f6, #cbdaf0);
+    background-image: -o-linear-gradient(left, #dfe8f6, #cbdaf0);
+    background-image: -ms-linear-gradient(left, #dfe8f6, #cbdaf0);
+    background-image: linear-gradient(left, #dfe8f6, #cbdaf0); }
+  /* line 341, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-dirty-cell {
+    background-image: url('../../resources/themes/images/default/grid/dirty.gif');
+    background-position: 0 0;
+    background-repeat: no-repeat; }
+  /* line 347, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-cell-selected {
+    background-color: #B8CFEE !important; }
+  /* line 353, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-nlg .x-grid-cell-special {
+    background-repeat: repeat-y;
+    background-position: top right; }
+  /* line 359, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-nlg .x-grid-row .x-grid-cell-special,
+  .x-reset .x-nlg .x-grid-row-over .x-grid-cell-special {
+    background-image: url('../../resources/themes/images/default/grid/cell-special-bg.gif'); }
+  /* line 365, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-nlg .x-grid-row-focused .x-grid-cell-special,
+  .x-reset .x-nlg .x-grid-row-selected .x-grid-cell-special {
+    background-image: url('../../resources/themes/images/default/grid/cell-special-selected-bg.gif'); }
+  /* line 371, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-with-col-lines .x-grid-cell {
+    padding-right: 0;
+    border-right: 1px solid #d0d0d0; }
+  /* line 378, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,
+  .x-reset .x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner {
+    padding-left: 12px;
+    background-image: url('../../resources/themes/images/default/grid/property-cell-bg.gif');
+    background-repeat: no-repeat;
+    background-position: -16px 2px; }
+  /* line 388, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-with-row-lines.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,
+  .x-reset .x-grid-with-row-lines.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner {
+    background-position: -16px 1px; }
+  /* line 399, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-unselectable {
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default; }
+  /* line 403, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-body-hidden {
+    display: none; }
+  /* line 407, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-group-collapsed {
+    display: none; }
+  /* line 413, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-view .x-grid-td-expander {
+    vertical-align: top; }
+  /* line 418, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-td-expander {
+    background: repeat-y right transparent; }
+  /* line 424, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-view .x-grid-td-expander .x-grid-cell-inner {
+    padding: 0 !important; }
+  /* line 430, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-expander {
+    background-image: url('../../resources/themes/images/default/grid/group-collapse.gif');
+    background-color: transparent;
+    width: 9px;
+    height: 13px;
+    margin-left: 3px;
+    background-repeat: no-repeat;
+    background-position: 0 -2px; }
+  /* line 444, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-collapsed .x-grid-row-expander {
+    background-image: url('../../resources/themes/images/default/grid/group-expand.gif'); }
+  /* line 449, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-resize-marker {
+    position: absolute;
+    z-index: 5;
+    top: 0;
+    width: 1px;
+    background-color: #0f0f0f; }
+  /* line 459, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .col-move-top, .x-reset .col-move-bottom {
+    width: 9px;
+    height: 9px;
+    position: absolute;
+    top: 0;
+    line-height: 0;
+    font-size: 0;
+    overflow: hidden;
+    z-index: 20000;
+    background: no-repeat left top transparent; }
+  /* line 471, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .col-move-top {
+    background-image: url('../../resources/themes/images/default/grid/col-move-top.gif'); }
+  /* line 475, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .col-move-bottom {
+    background-image: url('../../resources/themes/images/default/grid/col-move-bottom.gif'); }
+  /* line 480, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-tbar-page-number {
+    width: 30px; }
+  /* line 487, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-group,
+  .x-reset .x-grid-group-body,
+  .x-reset .x-grid-group-hd {
+    zoom: 1; }
+  /* line 491, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-group-hd {
+    padding-top: 6px; }
+    /* line 494, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-group-hd .x-grid-cell-inner {
+      padding: 10px 4px 4px 4px;
+      background: white;
+      border-width: 0 0 2px 0;
+      border-style: solid;
+      border-color: #99bbe8;
+      cursor: pointer; }
+  /* line 508, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-group-hd-collapsible .x-grid-group-title {
+    background: transparent no-repeat 0 -1px;
+    background-image: url('../../resources/themes/images/default/grid/group-collapse.gif');
+    padding: 0 0 0 14px; }
+  /* line 515, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-group-title {
+    color: #3764a0;
+    font: bold 11px tahoma, arial, verdana, sans-serif; }
+  /* line 521, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-group-hd-collapsed .x-grid-group-title {
+    background-image: url('../../resources/themes/images/default/grid/group-expand.gif'); }
+  /* line 526, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-group-collapsed .x-grid-group-body {
+    display: none; }
+  /* line 530, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-group-collapsed .x-grid-group-title {
+    background-image: url('../../resources/themes/images/default/grid/group-expand.gif'); }
+  /* line 534, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-group-by-icon {
+    background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+  /* line 538, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-show-groups-icon {
+    background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+  /* line 542, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-checkbox .x-column-header-inner {
+    padding: 0; }
+  /* line 546, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-cell-special .x-grid-cell-inner {
+    padding-left: 4px;
+    padding-right: 4px; }
+  /* line 552, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-checker,
+  .x-reset .x-column-header-checkbox .x-column-header-text {
+    height: 14px;
+    width: 14px;
+    line-height: 0;
+    background-image: url('../../resources/themes/images/default/grid/unchecked.gif');
+    background-position: -1px -1px;
+    background-repeat: no-repeat;
+    background-color: transparent; }
+  /* line 564, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-column-header-checkbox .x-column-header-text {
+    display: block;
+    margin: 0 5px; }
+  /* line 579, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-hd-checker-on .x-column-header-text {
+    background-image: url('../../resources/themes/images/default/grid/checked.gif'); }
+  /* line 583, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-cell-row-checker .x-grid-cell-inner {
+    padding-top: 4px;
+    padding-bottom: 2px;
+    line-height: 14px; }
+  /* line 588, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-with-row-lines .x-grid-cell-row-checker .x-grid-cell-inner {
+    padding-top: 3px; }
+  /* line 591, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-checker {
+    margin-left: 1px;
+    background-position: 50% -2px; }
+  /* line 598, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-selected .x-grid-row-checker,
+  .x-reset .x-grid-row-checked .x-grid-row-checker {
+    background-image: url('../../resources/themes/images/default/grid/checked.gif'); }
+  /* line 603, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-tbar-page-first {
+    background-image: url('../../resources/themes/images/default/grid/page-first.gif') !important; }
+  /* line 607, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-tbar-loading {
+    background-image: url('../../resources/themes/images/default/grid/refresh.gif') !important; }
+  /* line 611, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-tbar-page-last {
+    background-image: url('../../resources/themes/images/default/grid/page-last.gif') !important; }
+  /* line 615, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-tbar-page-next {
+    background-image: url('../../resources/themes/images/default/grid/page-next.gif') !important; }
+  /* line 619, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-tbar-page-prev {
+    background-image: url('../../resources/themes/images/default/grid/page-prev.gif') !important; }
+  /* line 624, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-item-disabled .x-tbar-loading {
+    background-image: url('../../resources/themes/images/default/grid/refresh-disabled.gif') !important; }
+  /* line 628, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-item-disabled .x-tbar-page-first {
+    background-image: url('../../resources/themes/images/default/grid/page-first-disabled.gif') !important; }
+  /* line 632, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-item-disabled .x-tbar-page-last {
+    background-image: url('../../resources/themes/images/default/grid/page-last-disabled.gif') !important; }
+  /* line 636, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-item-disabled .x-tbar-page-next {
+    background-image: url('../../resources/themes/images/default/grid/page-next-disabled.gif') !important; }
+  /* line 640, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-item-disabled .x-tbar-page-prev {
+    background-image: url('../../resources/themes/images/default/grid/page-prev-disabled.gif') !important; }
+  /* line 646, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-hmenu-sort-asc .x-menu-item-icon {
+    background-image: url('../../resources/themes/images/default/grid/hmenu-asc.gif'); }
+  /* line 650, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-hmenu-sort-desc .x-menu-item-icon {
+    background-image: url('../../resources/themes/images/default/grid/hmenu-desc.gif'); }
+  /* line 654, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-hmenu-lock .x-menu-item-icon {
+    background-image: url('../../resources/themes/images/default/grid/hmenu-lock.gif'); }
+  /* line 658, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-hmenu-unlock .x-menu-item-icon {
+    background-image: url('../../resources/themes/images/default/grid/hmenu-unlock.gif'); }
+  /* line 662, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-group-by-icon {
+    background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+  /* line 666, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-cols-icon .x-menu-item-icon {
+    background-image: url('../../resources/themes/images/default/grid/columns.gif'); }
+  /* line 670, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-show-groups-icon {
+    background-image: url('../../resources/themes/images/default/grid/group-by.gif'); }
+  /* line 675, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-drop-indicator {
+    position: absolute;
+    height: 1px;
+    line-height: 0px;
+    background-color: #77BC71;
+    overflow: visible; }
+    /* line 682, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-drop-indicator .x-grid-drop-indicator-left {
+      position: absolute;
+      top: -8px;
+      left: -12px;
+      background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-right.png');
+      height: 16px;
+      width: 16px; }
+    /* line 691, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-drop-indicator .x-grid-drop-indicator-right {
+      position: absolute;
+      top: -8px;
+      right: -11px;
+      background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-left.png');
+      height: 16px;
+      width: 16px; }
+  /* line 702, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-ie6 .x-grid-drop-indicator-left {
+    background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-right.gif'); }
+  /* line 706, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-ie6 .x-grid-drop-indicator-right {
+    background-image: url('../../resources/themes/images/default/grid/dd-insert-arrow-left.gif'); }
+  /* line 714, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-editor .x-form-text {
+    padding: 0 4px; }
+  /* line 717, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-editor .x-form-cb-wrap {
+    padding-top: 3px; }
+  /* line 723, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor {
+    position: absolute !important;
+    z-index: 1;
+    zoom: 1;
+    overflow: visible !important; }
+    /* line 729, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-row-editor .x-form-text {
+      padding: 0 2px; }
+    /* line 732, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-row-editor .x-form-cb-wrap {
+      padding-top: 0; }
+    /* line 735, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-row-editor .x-form-checkbox {
+      margin-left: -4px; }
+    /* line 738, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-row-editor .x-form-display-field {
+      font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+      padding-top: 0;
+      padding-left: 2px; }
+    /* line 744, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-reset .x-grid-row-editor .x-panel-body {
+      background-color: #eaf1fb;
+      border-top: 1px solid #99bce8 !important;
+      border-bottom: 1px solid #99bce8 !important; }
+  /* line 754, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-editor .x-form-cb-wrap, .x-reset .x-grid-row-editor .x-form-cb-wrap {
+    text-align: center; }
+  /* line 757, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-editor .x-form-trigger, .x-reset .x-grid-row-editor .x-form-trigger {
+    height: 19px; }
+  /* line 761, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-editor .x-form-trigger-wrap .x-form-spinner-up, .x-reset .x-grid-editor .x-form-trigger-wrap .x-form-spinner-down, .x-reset .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-up, .x-reset .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-down {
+    background-image: url('../../resources/themes/images/default/form/spinner-small.gif');
+    height: 10px !important; }
+  /* line 768, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-editor .x-form-text, .x-reset .x-grid-row-editor .x-form-text {
+    font: normal 11px/15px tahoma, arial, verdana, sans-serif;
+    height: 18px; }
+  /* line 776, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-border-box .x-grid-editor .x-form-trigger,
+  .x-reset .x-border-box .x-grid-row-editor .x-form-trigger {
+    height: 20px; }
+  /* line 779, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-border-box .x-grid-editor .x-form-text,
+  .x-reset .x-border-box .x-grid-row-editor .x-form-text {
+    height: 20px;
+    padding-bottom: 1px; }
+  /* line 818, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-opera .x-grid-editor .x-form-text {
+    padding-left: 5px; }
+  /* line 821, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-opera .x-grid-row-editor .x-form-text {
+    padding-left: 3px; }
+  /* line 828, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons {
+    background-color: #eaf1fb;
+    position: absolute;
+    bottom: -31px;
+    padding: 4px;
+    height: 32px; }
+    /* line 835, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+    .x-strict .x-ie7m .x-reset .x-grid-row-editor-buttons {
+      width: 192px;
+      height: 24px; }
+  /* line 845, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons-ml,
+  .x-reset .x-grid-row-editor-buttons-mr,
+  .x-reset .x-grid-row-editor-buttons-bl,
+  .x-reset .x-grid-row-editor-buttons-br,
+  .x-reset .x-grid-row-editor-buttons-bc {
+    position: absolute;
+    overflow: hidden; }
+  /* line 851, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons-bl,
+  .x-reset .x-grid-row-editor-buttons-br {
+    width: 4px;
+    height: 4px;
+    bottom: 0px;
+    background-image: url('../../resources/themes/images/default/panel/panel-default-framed-corners.gif'); }
+  /* line 857, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons-bl {
+    left: 0px;
+    background-position: 0px -16px; }
+  /* line 861, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons-br {
+    right: 0px;
+    background-position: 0px -20px; }
+  /* line 866, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons-bc {
+    position: absolute;
+    left: 4px;
+    bottom: 0px;
+    width: 192px;
+    height: 1px;
+    background-color: #99bce8; }
+  /* line 876, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons-ml,
+  .x-reset .x-grid-row-editor-buttons-mr {
+    height: 27px;
+    width: 1px;
+    top: 1px;
+    background-color: #99bce8; }
+  /* line 882, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons-ml {
+    left: 0px; }
+  /* line 885, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-buttons-mr {
+    background-position: 0px -20px;
+    right: 0px; }
+  /* line 891, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-errors ul {
+    margin-left: 5px; }
+  /* line 894, ../themes/stylesheets/ext4/default/widgets/_grid.scss */
+  .x-reset .x-grid-row-editor-errors li {
+    list-style: disc;
+    margin-left: 15px; }
+  /* line 9, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-webkit *:focus {
+    outline: none !important; }
+  /* line 16, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-item {
+    vertical-align: top;
+    table-layout: fixed; }
+  /* line 26, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-autocontainer-form-item,
+  .x-reset .x-anchor-form-item,
+  .x-reset .x-vbox-form-item,
+  .x-reset .x-checkboxgroup-form-item,
+  .x-reset .x-table-form-item {
+    margin-bottom: 5px; }
+  /* line 31, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-layout-table {
+    border-collapse: separate;
+    border-spacing: 0 2px; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-item-body {
+    position: relative; }
+  /* line 42, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-form-item td {
+    border-top: 1px solid transparent; }
+  /* line 51, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-ie6 .x-form-layout-table {
+    border-collapse: collapse;
+    border-spacing: 0; }
+  /* line 56, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-ie6 .x-form-form-item td {
+    border-top-width: 0; }
+  /* line 62, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-ie6 td.x-form-item-pad {
+    height: 5px; }
+  /* line 68, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-editor .x-form-item-body {
+    padding-bottom: 0; }
+  /* line 72, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-item-label {
+    display: block;
+    padding: 3px 0 0;
+    font-size: 12px;
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default; }
+  /* line 79, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-item-label-top {
+    display: block;
+    zoom: 1;
+    padding: 0 0 5px 0; }
+  /* line 85, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-item-label-right {
+    text-align: right; }
+  /* line 89, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-invalid-under {
+    padding: 2px 2px 2px 18px;
+    color: #c0272b;
+    font: normal 11px tahoma, arial, verdana, sans-serif;
+    line-height: 16px;
+    background: no-repeat 0 2px;
+    background-image: url('../../resources/themes/images/default/form/exclamation.gif'); }
+  /* line 100, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-form-invalid-icon {
+    width: 18px;
+    height: 14px;
+    background: no-repeat center center;
+    background-image: url('../../resources/themes/images/default/form/exclamation.gif');
+    overflow: hidden; }
+    /* line 106, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+    .x-reset .x-form-invalid-icon ul {
+      display: block;
+      width: 18px; }
+      /* line 109, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+      .x-reset .x-form-invalid-icon ul li {
+        /* prevent inner elements from interfering with QuickTip hovering */
+        display: none; }
+  /* line 117, ../themes/stylesheets/ext4/default/widgets/form/_all.scss */
+  .x-reset .x-lbl-top-err-icon {
+    margin-bottom: 4px; }
+  /* line 7, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-field,
+  .x-reset .x-form-display-field {
+    margin: 0 0 0 0;
+    font: normal 12px tahoma, arial, verdana, sans-serif;
+    color: black; }
+  /* line 14, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-item-hidden {
+    margin: 0; }
+  /* line 19, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-text,
+  .x-reset textarea.x-form-field {
+    padding: 1px 3px;
+    background: repeat-x 0 0;
+    border: 1px solid;
+    background-color: white;
+    background-image: url('../../resources/themes/images/default/form/text-bg.gif');
+    border-color: #b5b8c8; }
+  /* line 36, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-text {
+    height: 18px;
+    line-height: 15px;
+    vertical-align: top; }
+  /* line 43, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-ie8m .x-form-text {
+    line-height: 15px; }
+  /* line 48, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-border-box .x-form-text {
+    height: 22px; }
+  /* line 52, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset textarea.x-form-field {
+    color: black;
+    overflow: auto;
+    height: auto;
+    line-height: normal;
+    background: repeat-x 0 0;
+    background-color: white;
+    background-image: url('../../resources/themes/images/default/form/text-bg.gif');
+    resize: none; }
+  /* line 65, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-border-box textarea.x-form-field {
+    height: auto; }
+  /* line 70, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-safari.x-mac textarea.x-form-field {
+    margin-bottom: -2px; }
+  /* line 76, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-focus,
+  .x-reset textarea.x-form-focus {
+    border-color: #7eadd9; }
+  /* line 81, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-invalid-field,
+  .x-reset textarea.x-form-invalid-field {
+    background-color: white;
+    background-image: url('../../resources/themes/images/default/grid/invalid_line.gif');
+    background-repeat: repeat-x;
+    background-position: bottom;
+    border-color: #cc3300; }
+  /* line 91, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-item {
+    font: normal 12px tahoma, arial, verdana, sans-serif; }
+  /* line 95, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-empty-field, .x-reset textarea.x-form-empty-field {
+    color: gray; }
+  /* line 100, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-webkit .x-form-empty-field {
+    line-height: 15px; }
+  /* line 105, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-form-display-field {
+    padding-top: 3px; }
+  /* line 135, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-field-default-toolbar .x-form-text {
+    height: 16px; }
+  /* line 139, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-border-box .x-field-default-toolbar .x-form-text {
+    height: 20px; }
+  /* line 143, ../themes/stylesheets/ext4/default/widgets/form/_field.scss */
+  .x-reset .x-field-default-toolbar .x-form-item-label-left {
+    padding-left: 4px; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset {
+    border: 1px solid #b5b8c8;
+    padding: 10px;
+    margin-bottom: 10px;
+    display: block;
+    /* preserve margins in IE */
+    position: relative; }
+  /* line 18, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-ie .x-fieldset {
+    padding-top: 0; }
+    /* line 20, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+    .x-reset .x-ie .x-fieldset .x-fieldset-body {
+      padding-top: 10px; }
+  /* line 25, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset-header-checkbox {
+    line-height: 14px; }
+  /* line 29, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset-header {
+    font: 11px/14px bold tahoma, arial, verdana, sans-serif;
+    color: #15428b;
+    padding: 0 3px 1px;
+    overflow: hidden; }
+    /* line 35, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+    .x-reset .x-fieldset-header .x-fieldset-header-text {
+      float: left;
+      padding: 1px 0; }
+    /* line 39, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+    .x-reset .x-fieldset-header .x-fieldset-header-text-collapsible {
+      cursor: pointer; }
+    /* line 44, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+    .x-reset .x-fieldset-header .x-form-item,
+    .x-reset .x-fieldset-header .x-tool {
+      float: left;
+      margin: 1px 0 0 0; }
+    /* line 49, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+    .x-reset .x-fieldset-header .x-form-cb-wrap {
+      padding: 1px 0;
+      font-size: 0;
+      line-height: 0; }
+  /* line 58, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset-with-title .x-fieldset-header-checkbox,
+  .x-reset .x-fieldset-with-title .x-tool {
+    margin-right: 3px; }
+  /* line 65, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-webkit .x-fieldset-header {
+    -webkit-padding-start: 3px;
+    -webkit-padding-end: 3px; }
+  /* line 75, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-opera .x-fieldset-with-legend {
+    margin-top: -1px; }
+  /* line 78, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-opera.x-mac .x-fieldset-header-text {
+    padding: 2px 0 0; }
+  /* line 108, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset-collapsed .x-fieldset-body {
+    display: none; }
+  /* line 113, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset-collapsed {
+    padding-bottom: 0 !important;
+    border-width: 1px 1px 0 1px !important;
+    border-left-color: transparent !important;
+    border-right-color: transparent !important; }
+  /* line 149, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset {
+    overflow: hidden; }
+  /* line 153, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset-bwrap {
+    overflow: hidden;
+    zoom: 1; }
+  /* line 159, ../themes/stylesheets/ext4/default/widgets/form/_fieldset.scss */
+  .x-reset .x-fieldset-body {
+    overflow: hidden; }
+  /* line 8, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+  .x-reset .x-form-file-wrap .x-form-text {
+    color: #777; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+  .x-reset .x-form-file-wrap .x-form-file-btn {
+    overflow: hidden; }
+  /* line 16, ../themes/stylesheets/ext4/default/widgets/form/_file.scss */
+  .x-reset .x-form-file-wrap .x-form-file-input {
+    position: absolute;
+    top: -4px;
+    right: -2px;
+    height: 30px;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+    opacity: 0;
+    /* Yes, there's actually a good reason for this...
+     * If the configured buttonText is set to something longer than the default,
+     * then it will quickly exceed the width of the hidden file input's "Browse..."
+     * button, so part of the custom button's clickable area will be covered by
+     * the hidden file input's text box instead. This results in a text-selection
+     * mouse cursor over that part of the button, at least in Firefox, which is
+     * confusing to a user. Giving the hidden file input a huge font-size makes
+     * the native button part very large so it will cover the whole clickable area.
+     */
+    font-size: 100px; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-form-cb-wrap {
+    padding-top: 3px; }
+  /* line 11, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-form-checkbox,
+  .x-reset .x-form-radio {
+    vertical-align: -1px;
+    width: 13px;
+    height: 13px;
+    background: no-repeat;
+    background-image: url('../../resources/themes/images/default/form/checkbox.gif');
+    overflow: hidden;
+    padding: 0;
+    border: 0; }
+    /* line 22, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+    .x-reset .x-form-checkbox::-moz-focus-inner,
+    .x-reset .x-form-radio::-moz-focus-inner {
+      padding: 0;
+      border: 0; }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-form-cb-checked .x-form-checkbox,
+  .x-reset .x-form-cb-checked .x-form-radio {
+    background-position: 0 -13px; }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-form-cb-focus {
+    background-position: -13px 0; }
+  /* line 48, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-form-cb-checked .x-form-cb-focus {
+    background-position: -13px -13px; }
+  /* line 54, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-form-radio {
+    background-image: url('../../resources/themes/images/default/form/radio.gif'); }
+  /* line 59, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-form-cb-label-before {
+    margin-right: 4px; }
+  /* line 62, ../themes/stylesheets/ext4/default/widgets/form/_checkbox.scss */
+  .x-reset .x-form-cb-label-after {
+    margin-left: 4px; }
+  /* line 7, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+  .x-reset .x-form-checkboxgroup-body {
+    padding: 1px 4px 1px 4px; }
+  /* line 12, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+  .x-reset .x-form-invalid .x-form-checkboxgroup-body {
+    border: 1px solid #c30!important;
+    background: transparent repeat-x bottom;
+    background-image: url('../../resources/themes/images/default/grid/invalid_line.gif');
+    padding: 1px 3px 0 3px; }
+  /* line 20, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+  .x-reset .x-check-group-alt {
+    background: #d1ddef;
+    border-top: 1px dotted #b5b8c8;
+    border-bottom: 1px dotted #b5b8c8; }
+  /* line 27, ../themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss */
+  .x-reset .x-form-check-group-label {
+    color: #333;
+    border-bottom: 1px solid #333;
+    margin: 0 30px 5px 0;
+    padding: 2px; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap {
+    vertical-align: top; }
+  /* line 10, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger {
+    background-image: url('../../resources/themes/images/default/form/trigger.gif');
+    background-position: 0 0;
+    width: 17px;
+    height: 21px;
+    border-bottom: 1px solid #b5b8c8;
+    cursor: pointer;
+    cursor: hand;
+    overflow: hidden; }
+  /* line 24, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-border-box .x-form-trigger {
+    height: 22px; }
+  /* line 28, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-field-default-toolbar .x-form-trigger {
+    height: 19px; }
+  /* line 32, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-border-box .x-field-default-toolbar .x-form-trigger {
+    height: 20px; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-over {
+    background-position: -17px 0;
+    border-bottom-color: #7eadd9; }
+  /* line 43, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap-focus .x-form-trigger {
+    background-position: -51px 0;
+    border-bottom-color: #7eadd9; }
+  /* line 49, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap-focus .x-form-trigger-over {
+    background-position: -68px 0;
+    border-bottom-color: null; }
+  /* line 58, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-click,
+  .x-reset .x-form-trigger-wrap-focus .x-form-trigger-click {
+    background-position: -34px 0;
+    border-bottom-color: null; }
+  /* line 66, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-icon {
+    height: 16px;
+    background-repeat: no-repeat;
+    background-position: 7px 6px; }
+  /* line 74, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-pickerfield-open .x-form-field {
+    -moz-border-radius-bottomleft: 0;
+    -webkit-border-bottom-left-radius: 0;
+    -o-border-bottom-left-radius: 0;
+    -ms-border-bottom-left-radius: 0;
+    -khtml-border-bottom-left-radius: 0;
+    border-bottom-left-radius: 0;
+    -moz-border-radius-bottomright: 0;
+    -webkit-border-bottom-right-radius: 0;
+    -o-border-bottom-right-radius: 0;
+    -ms-border-bottom-right-radius: 0;
+    -khtml-border-bottom-right-radius: 0;
+    border-bottom-right-radius: 0; }
+  /* line 80, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-pickerfield-open-above .x-form-field {
+    -moz-border-radius-bottomleft: 3px;
+    -webkit-border-bottom-left-radius: 3px;
+    -o-border-bottom-left-radius: 3px;
+    -ms-border-bottom-left-radius: 3px;
+    -khtml-border-bottom-left-radius: 3px;
+    border-bottom-left-radius: 3px;
+    -moz-border-radius-topleft: 0;
+    -webkit-border-top-left-radius: 0;
+    -o-border-top-left-radius: 0;
+    -ms-border-top-left-radius: 0;
+    -khtml-border-top-left-radius: 0;
+    border-top-left-radius: 0;
+    -moz-border-radius-topright: 0;
+    -webkit-border-top-right-radius: 0;
+    -o-border-top-right-radius: 0;
+    -ms-border-top-right-radius: 0;
+    -khtml-border-top-right-radius: 0;
+    border-top-right-radius: 0; }
+  /* line 87, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-arrow-trigger .x-form-trigger-icon {
+    background-image: url('../../resources/themes/images/default/boundlist/trigger-arrow.png'); }
+  /* line 92, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-date-trigger {
+    background-image: url('../../resources/themes/images/default/form/date-trigger.gif'); }
+  /* line 99, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap .x-form-spinner-up,
+  .x-reset .x-form-trigger-wrap .x-form-spinner-down {
+    background-image: url('../../resources/themes/images/default/form/spinner.gif');
+    width: 17px !important;
+    height: 11px !important;
+    font-size: 0;
+    /*for IE*/
+    border-bottom: 0; }
+  /* line 109, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap .x-form-spinner-down {
+    background-position: 0 -11px; }
+  /* line 113, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap-focus .x-form-spinner-down {
+    background-position: -51px -11px; }
+  /* line 116, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap .x-form-spinner-down-over {
+    background-position: -17px -11px; }
+  /* line 119, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap-focus .x-form-spinner-down-over {
+    background-position: -68px -11px; }
+  /* line 122, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-trigger-wrap .x-form-spinner-down-click {
+    background-position: -34px -11px; }
+  /* line 131, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-up,
+  .x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down {
+    background-image: url('../../resources/themes/images/default/form/spinner-small.gif');
+    height: 10px !important; }
+  /* line 135, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down {
+    background-position: 0 -10px; }
+  /* line 139, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down {
+    background-position: -51px -10px; }
+  /* line 142, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-over {
+    background-position: -17px -10px; }
+  /* line 145, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down-over {
+    background-position: -68px -10px; }
+  /* line 148, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-click {
+    background-position: -34px -10px; }
+  /* line 154, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-trigger-noedit {
+    cursor: pointer;
+    cursor: hand; }
+  /* line 160, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-item-disabled .x-trigger-noedit, .x-reset .x-item-disabled .x-form-trigger {
+    cursor: auto; }
+  /* line 166, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-clear-trigger {
+    background-image: url('../../resources/themes/images/default/form/clear-trigger.gif'); }
+  /* line 169, ../themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss */
+  .x-reset .x-form-search-trigger {
+    background-image: url('../../resources/themes/images/default/form/search-trigger.gif'); }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-wrap {
+    border: 1px solid #b5b8c8; }
+    /* line 9, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+    .x-reset .x-html-editor-wrap .x-toolbar {
+      border-top-width: 0;
+      border-left-width: 0;
+      border-right-width: 0; }
+    /* line 15, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+    .x-reset .x-html-editor-wrap textarea {
+      background-color: white; }
+  /* line 20, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-btn-text {
+    background: transparent no-repeat;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 26, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-bold,
+  .x-reset .x-menu-item img.x-edit-bold {
+    background-position: 0 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 32, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-italic,
+  .x-reset .x-menu-item img.x-edit-italic {
+    background-position: -16px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 38, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-underline,
+  .x-reset .x-menu-item img.x-edit-underline {
+    background-position: -32px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-forecolor,
+  .x-reset .x-menu-item img.x-edit-forecolor {
+    background-position: -160px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 50, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-backcolor,
+  .x-reset .x-menu-item img.x-edit-backcolor {
+    background-position: -176px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 56, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-justifyleft,
+  .x-reset .x-menu-item img.x-edit-justifyleft {
+    background-position: -112px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 62, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-justifycenter,
+  .x-reset .x-menu-item img.x-edit-justifycenter {
+    background-position: -128px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 68, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-justifyright,
+  .x-reset .x-menu-item img.x-edit-justifyright {
+    background-position: -144px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 74, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-insertorderedlist,
+  .x-reset .x-menu-item img.x-edit-insertorderedlist {
+    background-position: -80px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 80, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-insertunorderedlist,
+  .x-reset .x-menu-item img.x-edit-insertunorderedlist {
+    background-position: -96px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 86, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-increasefontsize,
+  .x-reset .x-menu-item img.x-edit-increasefontsize {
+    background-position: -48px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 92, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-decreasefontsize,
+  .x-reset .x-menu-item img.x-edit-decreasefontsize {
+    background-position: -64px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 98, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-sourceedit,
+  .x-reset .x-menu-item img.x-edit-sourceedit {
+    background-position: -192px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 104, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-edit-createlink,
+  .x-reset .x-menu-item img.x-edit-createlink {
+    background-position: -208px 0;
+    background-image: url('../../resources/themes/images/default/editor/tb-sprite.gif'); }
+  /* line 109, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tip .x-tip-bd .x-tip-bd-inner {
+    padding: 5px;
+    padding-bottom: 1px; }
+  /* line 115, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-toolbar {
+    position: static !important; }
+  /* line 118, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-tb .x-font-select {
+    font-size: 11px; }
+  /* line 123, ../themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss */
+  .x-reset .x-html-editor-wrap textarea {
+    border: 0;
+    padding: 3px 2px;
+    overflow: auto; }
+  /* line 7, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel,
+  .x-reset .x-plain {
+    overflow: hidden;
+    position: relative; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-horizontal {
+    padding: 3px 5px 4px; }
+  /* line 40, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-vertical {
+    padding: 5px 4px; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-icon,
+  .x-reset .x-window-header-icon {
+    width: 16px;
+    height: 16px;
+    background-repeat: no-repeat;
+    background-position: 0 0;
+    vertical-align: middle;
+    margin-right: 4px; }
+  /* line 56, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-vertical .x-panel-header-icon,
+  .x-reset .x-vertical .x-window-header-icon {
+    margin: 0 0 4px; }
+  /* line 64, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-draggable,
+  .x-reset .x-panel-header-draggable .x-panel-header-text,
+  .x-reset .x-window-header-draggable,
+  .x-reset .x-window-header-draggable .x-window-header-text {
+    cursor: move; }
+  /* line 70, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-ghost, .x-reset .x-window-ghost {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
+    opacity: 0.65;
+    cursor: move; }
+  /* line 76, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-horizontal .x-panel-header-body, .x-reset .x-panel-header-horizontal .x-window-header-body, .x-reset .x-panel-header-horizontal .x-btn-group-header-body, .x-reset .x-window-header-horizontal .x-panel-header-body, .x-reset .x-window-header-horizontal .x-window-header-body, .x-reset .x-window-header-horizontal .x-btn-group-header-body, .x-reset .x-btn-group-header-horizontal .x-panel-header-body, .x-reset .x-btn-group-header-horizontal .x-window-header-body, .x-reset .x-btn-group-header-horizontal .x-btn-group-header-body {
+    width: 100%; }
+  /* line 82, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-vertical .x-panel-header-body, .x-reset .x-panel-header-vertical .x-window-header-body, .x-reset .x-panel-header-vertical .x-btn-group-header-body, .x-reset .x-window-header-vertical .x-panel-header-body, .x-reset .x-window-header-vertical .x-window-header-body, .x-reset .x-window-header-vertical .x-btn-group-header-body, .x-reset .x-btn-group-header-vertical .x-panel-header-body, .x-reset .x-btn-group-header-vertical .x-window-header-body, .x-reset .x-btn-group-header-vertical .x-btn-group-header-body {
+    height: 100%; }
+  /* line 87, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-text-container {
+    overflow: hidden;
+    -o-text-overflow: ellipsis;
+    text-overflow: ellipsis; }
+  /* line 93, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-text {
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default;
+    white-space: nowrap; }
+  /* line 100, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-left .x-vml-base,
+  .x-reset .x-panel-header-right .x-vml-base {
+    left: -3px !important; }
+  /* line 106, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-body {
+    overflow: hidden;
+    position: relative;
+    font-size: 12px; }
+  /* line 114, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-vertical .x-surface {
+    padding-left: 1px; }
+  /* line 122, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-opera .x-panel-header-vertical .x-surface,
+  .x-reset .x-strict .x-ie9 .x-panel-header-vertical .x-surface {
+    padding-left: 2px; }
+  /* line 129, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-panel-header-collapsed-border-top {
+    border-bottom-width: 1px !important; }
+  /* line 132, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-panel-header-collapsed-border-right {
+    border-left-width: 1px !important; }
+  /* line 135, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-panel-header-collapsed-border-bottom {
+    border-top-width: 1px !important; }
+  /* line 138, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-panel-header-collapsed-border-left {
+    border-right-width: 1px !important; }
+  /* line 145, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-vertical .x-frame-mc {
+    background-repeat: repeat-y; }
+  /* line 248, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-default {
+    border-color: #99bce8; }
+  /* line 253, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default {
+    font-size: 11px;
+    border-color: #99bce8;
+    border-width: 1px;
+    border-style: solid; }
+  /* line 277, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-top {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif'); }
+  /* line 281, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-bottom {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif'); }
+  /* line 285, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-left {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif'); }
+  /* line 289, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-right {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif'); }
+  /* line 293, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-right {
+    background-position: top right; }
+  /* line 297, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-bottom {
+    background-position: bottom left; }
+  /* line 338, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-text-default {
+    color: #04408c;
+    font-size: 11px;
+    font-weight: bold;
+    font-family: tahoma, arial, verdana, sans-serif;
+    line-height: 17px; }
+  /* line 348, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-body-default {
+    background: white;
+    border-color: #99bce8;
+    color: black;
+    border-width: 1px;
+    border-style: solid; }
+  /* line 363, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-window-header-default,
+  .x-reset .x-panel-collapsed .x-panel-header-default {
+    border-color: #99bce8; }
+  /* line 368, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-vertical {
+    border-color: #99bce8; }
+  /* line 416, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-panel-header-default-top {
+    -moz-border-radius-bottomleft: null;
+    -webkit-border-bottom-left-radius: null;
+    -o-border-bottom-left-radius: null;
+    -ms-border-bottom-left-radius: null;
+    -khtml-border-bottom-left-radius: null;
+    border-bottom-left-radius: null;
+    -moz-border-radius-bottomright: null;
+    -webkit-border-bottom-right-radius: null;
+    -o-border-bottom-right-radius: null;
+    -ms-border-bottom-right-radius: null;
+    -khtml-border-bottom-right-radius: null;
+    border-bottom-right-radius: null; }
+  /* line 420, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-panel-header-default-right {
+    -moz-border-radius-topleft: null;
+    -webkit-border-top-left-radius: null;
+    -o-border-top-left-radius: null;
+    -ms-border-top-left-radius: null;
+    -khtml-border-top-left-radius: null;
+    border-top-left-radius: null;
+    -moz-border-radius-bottomleft: null;
+    -webkit-border-bottom-left-radius: null;
+    -o-border-bottom-left-radius: null;
+    -ms-border-bottom-left-radius: null;
+    -khtml-border-bottom-left-radius: null;
+    border-bottom-left-radius: null; }
+  /* line 424, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-panel-header-default-bottom {
+    -moz-border-radius-topleft: null;
+    -webkit-border-top-left-radius: null;
+    -o-border-top-left-radius: null;
+    -ms-border-top-left-radius: null;
+    -khtml-border-top-left-radius: null;
+    border-top-left-radius: null;
+    -moz-border-radius-topright: null;
+    -webkit-border-top-right-radius: null;
+    -o-border-top-right-radius: null;
+    -ms-border-top-right-radius: null;
+    -khtml-border-top-right-radius: null;
+    border-top-right-radius: null; }
+  /* line 428, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-panel-header-default-left {
+    -moz-border-radius-topright: null;
+    -webkit-border-top-right-radius: null;
+    -o-border-top-right-radius: null;
+    -ms-border-top-right-radius: null;
+    -khtml-border-top-right-radius: null;
+    border-top-right-radius: null;
+    -moz-border-radius-bottomright: null;
+    -webkit-border-bottom-right-radius: null;
+    -o-border-bottom-right-radius: null;
+    -ms-border-bottom-right-radius: null;
+    -khtml-border-bottom-right-radius: null;
+    border-bottom-right-radius: null; }
+  /* line 434, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-top {
+    -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+    -o-box-shadow: #f4f8fd 0 1px 0px 0 inset;
+    box-shadow: #f4f8fd 0 1px 0px 0 inset; }
+  /* line 438, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-right {
+    -moz-box-shadow: #f4f8fd -1px 0 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd -1px 0 0px 0 inset;
+    -o-box-shadow: #f4f8fd -1px 0 0px 0 inset;
+    box-shadow: #f4f8fd -1px 0 0px 0 inset; }
+  /* line 442, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-bottom {
+    -moz-box-shadow: #f4f8fd 0 -1px 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd 0 -1px 0px 0 inset;
+    -o-box-shadow: #f4f8fd 0 -1px 0px 0 inset;
+    box-shadow: #f4f8fd 0 -1px 0px 0 inset; }
+  /* line 446, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-left {
+    -moz-box-shadow: #f4f8fd 1px 0 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd 1px 0 0px 0 inset;
+    -o-box-shadow: #f4f8fd 1px 0 0px 0 inset;
+    box-shadow: #f4f8fd 1px 0 0px 0 inset; }
+  /* line 481, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-right-tc,
+  .x-reset .x-panel-header-default-right-mc,
+  .x-reset .x-panel-header-default-right-bc {
+    background-position: right 0; }
+  /* line 487, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-bottom-tc,
+  .x-reset .x-panel-header-default-bottom-mc,
+  .x-reset .x-panel-header-default-bottom-bc {
+    background-position: 0 bottom; }
+  /* line 248, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-default-framed {
+    border-color: #99bce8; }
+  /* line 253, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed {
+    font-size: 11px;
+    border-color: #99bce8;
+    border-width: 1px;
+    border-style: solid; }
+  /* line 277, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-top {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif'); }
+  /* line 281, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-bottom {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif'); }
+  /* line 285, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-left {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif'); }
+  /* line 289, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-right {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif'); }
+  /* line 293, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-right {
+    background-position: top right; }
+  /* line 297, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-bottom {
+    background-position: bottom left; }
+  /* line 305, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-nbr .x-panel-header-default-framed {
+    background-image: none; }
+  /* line 317, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-strict .x-ie9 .x-panel-header-default-framed-top,
+  .x-reset .x-nlg.x-opera .x-panel-header-default-framed-top,
+  .x-reset .x-nlg.x-safari .x-panel-header-default-framed-top {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif'); }
+  /* line 321, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-strict .x-ie9 .x-panel-header-default-framed-bottom,
+  .x-reset .x-nlg.x-opera .x-panel-header-default-framed-bottom,
+  .x-reset .x-nlg.x-safari .x-panel-header-default-framed-bottom {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif'); }
+  /* line 325, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-strict .x-ie9 .x-panel-header-default-framed-left,
+  .x-reset .x-nlg.x-opera .x-panel-header-default-framed-left,
+  .x-reset .x-nlg.x-safari .x-panel-header-default-framed-left {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif'); }
+  /* line 329, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-strict .x-ie9 .x-panel-header-default-framed-right,
+  .x-reset .x-nlg.x-opera .x-panel-header-default-framed-right,
+  .x-reset .x-nlg.x-safari .x-panel-header-default-framed-right {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif'); }
+  /* line 338, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-text-default-framed {
+    color: #04408c;
+    font-size: 11px;
+    font-weight: bold;
+    font-family: tahoma, arial, verdana, sans-serif;
+    line-height: 17px; }
+  /* line 348, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-body-default-framed {
+    background: #dfe9f6;
+    border-color: #99bce8;
+    color: black;
+    border-width: 0;
+    border-style: solid; }
+  /* line 363, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-collapsed .x-window-header-default-framed,
+  .x-reset .x-panel-collapsed .x-panel-header-default-framed {
+    border-color: #99bce8; }
+  /* line 368, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-vertical {
+    border-color: #99bce8; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-default-framed {
+    -moz-border-radius: 4px;
+    -webkit-border-radius: 4px;
+    -o-border-radius: 4px;
+    -ms-border-radius: 4px;
+    -khtml-border-radius: 4px;
+    border-radius: 4px;
+    padding: 4px 4px 4px 4px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #dfe9f6; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-default-framed-mc {
+    background-color: #dfe9f6; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-header-default-framed-top {
+    -moz-border-radius-topleft: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -o-border-top-left-radius: 4px;
+    -ms-border-top-left-radius: 4px;
+    -khtml-border-top-left-radius: 4px;
+    border-top-left-radius: 4px;
+    -moz-border-radius-topright: 4px;
+    -webkit-border-top-right-radius: 4px;
+    -o-border-top-right-radius: 4px;
+    -ms-border-top-right-radius: 4px;
+    -khtml-border-top-right-radius: 4px;
+    border-top-right-radius: 4px;
+    -moz-border-radius-bottomright: 0;
+    -webkit-border-bottom-right-radius: 0;
+    -o-border-bottom-right-radius: 0;
+    -ms-border-bottom-right-radius: 0;
+    -khtml-border-bottom-right-radius: 0;
+    border-bottom-right-radius: 0;
+    -moz-border-radius-bottomleft: 0;
+    -webkit-border-bottom-left-radius: 0;
+    -o-border-bottom-left-radius: 0;
+    -ms-border-bottom-left-radius: 0;
+    -khtml-border-bottom-left-radius: 0;
+    border-bottom-left-radius: 0;
+    padding: 3px 5px 4px 5px;
+    border-width: 1px 1px 0 1px;
+    border-style: solid;
+    background-color: #cbddf3; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-top-mc {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif');
+    background-color: #cbddf3; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-header-default-framed-right {
+    -moz-border-radius-topleft: 0;
+    -webkit-border-top-left-radius: 0;
+    -o-border-top-left-radius: 0;
+    -ms-border-top-left-radius: 0;
+    -khtml-border-top-left-radius: 0;
+    border-top-left-radius: 0;
+    -moz-border-radius-topright: 4px;
+    -webkit-border-top-right-radius: 4px;
+    -o-border-top-right-radius: 4px;
+    -ms-border-top-right-radius: 4px;
+    -khtml-border-top-right-radius: 4px;
+    border-top-right-radius: 4px;
+    -moz-border-radius-bottomright: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -o-border-bottom-right-radius: 4px;
+    -ms-border-bottom-right-radius: 4px;
+    -khtml-border-bottom-right-radius: 4px;
+    border-bottom-right-radius: 4px;
+    -moz-border-radius-bottomleft: 0;
+    -webkit-border-bottom-left-radius: 0;
+    -o-border-bottom-left-radius: 0;
+    -ms-border-bottom-left-radius: 0;
+    -khtml-border-bottom-left-radius: 0;
+    border-bottom-left-radius: 0;
+    padding: 5px 4px 5px 4px;
+    border-width: 1px 1px 1px 0;
+    border-style: solid;
+    background-color: #cbddf3; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-right-mc {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif');
+    background-color: #cbddf3; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-header-default-framed-bottom {
+    -moz-border-radius-topleft: 0;
+    -webkit-border-top-left-radius: 0;
+    -o-border-top-left-radius: 0;
+    -ms-border-top-left-radius: 0;
+    -khtml-border-top-left-radius: 0;
+    border-top-left-radius: 0;
+    -moz-border-radius-topright: 0;
+    -webkit-border-top-right-radius: 0;
+    -o-border-top-right-radius: 0;
+    -ms-border-top-right-radius: 0;
+    -khtml-border-top-right-radius: 0;
+    border-top-right-radius: 0;
+    -moz-border-radius-bottomright: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -o-border-bottom-right-radius: 4px;
+    -ms-border-bottom-right-radius: 4px;
+    -khtml-border-bottom-right-radius: 4px;
+    border-bottom-right-radius: 4px;
+    -moz-border-radius-bottomleft: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -o-border-bottom-left-radius: 4px;
+    -ms-border-bottom-left-radius: 4px;
+    -khtml-border-bottom-left-radius: 4px;
+    border-bottom-left-radius: 4px;
+    padding: 3px 5px 4px 5px;
+    border-width: 0 1px 1px 1px;
+    border-style: solid;
+    background-color: #cbddf3; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-bottom-mc {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif');
+    background-color: #cbddf3; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-header-default-framed-left {
+    -moz-border-radius-topleft: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -o-border-top-left-radius: 4px;
+    -ms-border-top-left-radius: 4px;
+    -khtml-border-top-left-radius: 4px;
+    border-top-left-radius: 4px;
+    -moz-border-radius-topright: 0;
+    -webkit-border-top-right-radius: 0;
+    -o-border-top-right-radius: 0;
+    -ms-border-top-right-radius: 0;
+    -khtml-border-top-right-radius: 0;
+    border-top-right-radius: 0;
+    -moz-border-radius-bottomright: 0;
+    -webkit-border-bottom-right-radius: 0;
+    -o-border-bottom-right-radius: 0;
+    -ms-border-bottom-right-radius: 0;
+    -khtml-border-bottom-right-radius: 0;
+    border-bottom-right-radius: 0;
+    -moz-border-radius-bottomleft: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -o-border-bottom-left-radius: 4px;
+    -ms-border-bottom-left-radius: 4px;
+    -khtml-border-bottom-left-radius: 4px;
+    border-bottom-left-radius: 4px;
+    padding: 5px 4px 5px 4px;
+    border-width: 1px 0 1px 1px;
+    border-style: solid;
+    background-color: #cbddf3; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-left-mc {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif');
+    background-color: #cbddf3; }
+  /* line 399, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-top {
+    -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    -o-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset; }
+  /* line 403, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-right {
+    -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset;
+    -o-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset;
+    box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset; }
+  /* line 407, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-bottom {
+    -moz-box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    -o-box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    box-shadow: #f4f8fd 0 -1px 0px 0 inset, #f4f8fd -1px 0 0px 0 inset, #f4f8fd 1px 0 0px 0 inset; }
+  /* line 411, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-left {
+    -moz-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    -webkit-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    -o-box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset;
+    box-shadow: #f4f8fd 0 1px 0px 0 inset, #f4f8fd 0 -1px 0px 0 inset, #f4f8fd 1px 0 0px 0 inset; }
+  /* line 452, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel .x-panel-header-default-framed-top {
+    border-bottom-width: 1px !important; }
+  /* line 456, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel .x-panel-header-default-framed-right {
+    border-left-width: 1px !important; }
+  /* line 460, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel .x-panel-header-default-framed-bottom {
+    border-top-width: 1px !important; }
+  /* line 464, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel .x-panel-header-default-framed-left {
+    border-right-width: 1px !important; }
+  /* line 468, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-collapsed {
+    -moz-border-radius: 4px;
+    -webkit-border-radius: 4px;
+    -o-border-radius: 4px;
+    -ms-border-radius: 4px;
+    -khtml-border-radius: 4px;
+    border-radius: 4px; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-header-default-framed-collapsed-top {
+    -moz-border-radius-topleft: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -o-border-top-left-radius: 4px;
+    -ms-border-top-left-radius: 4px;
+    -khtml-border-top-left-radius: 4px;
+    border-top-left-radius: 4px;
+    -moz-border-radius-topright: 4px;
+    -webkit-border-top-right-radius: 4px;
+    -o-border-top-right-radius: 4px;
+    -ms-border-top-right-radius: 4px;
+    -khtml-border-top-right-radius: 4px;
+    border-top-right-radius: 4px;
+    -moz-border-radius-bottomright: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -o-border-bottom-right-radius: 4px;
+    -ms-border-bottom-right-radius: 4px;
+    -khtml-border-bottom-right-radius: 4px;
+    border-bottom-right-radius: 4px;
+    -moz-border-radius-bottomleft: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -o-border-bottom-left-radius: 4px;
+    -ms-border-bottom-left-radius: 4px;
+    -khtml-border-bottom-left-radius: 4px;
+    border-bottom-left-radius: 4px;
+    padding: 3px 5px 4px 5px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #cbddf3; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-collapsed-top-mc {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-bg.gif');
+    background-color: #cbddf3; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-header-default-framed-collapsed-right {
+    -moz-border-radius-topleft: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -o-border-top-left-radius: 4px;
+    -ms-border-top-left-radius: 4px;
+    -khtml-border-top-left-radius: 4px;
+    border-top-left-radius: 4px;
+    -moz-border-radius-topright: 4px;
+    -webkit-border-top-right-radius: 4px;
+    -o-border-top-right-radius: 4px;
+    -ms-border-top-right-radius: 4px;
+    -khtml-border-top-right-radius: 4px;
+    border-top-right-radius: 4px;
+    -moz-border-radius-bottomright: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -o-border-bottom-right-radius: 4px;
+    -ms-border-bottom-right-radius: 4px;
+    -khtml-border-bottom-right-radius: 4px;
+    border-bottom-right-radius: 4px;
+    -moz-border-radius-bottomleft: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -o-border-bottom-left-radius: 4px;
+    -ms-border-bottom-left-radius: 4px;
+    -khtml-border-bottom-left-radius: 4px;
+    border-bottom-left-radius: 4px;
+    padding: 5px 4px 5px 4px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #cbddf3; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-collapsed-right-mc {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-bg.gif');
+    background-color: #cbddf3; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-header-default-framed-collapsed-bottom {
+    -moz-border-radius-topleft: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -o-border-top-left-radius: 4px;
+    -ms-border-top-left-radius: 4px;
+    -khtml-border-top-left-radius: 4px;
+    border-top-left-radius: 4px;
+    -moz-border-radius-topright: 4px;
+    -webkit-border-top-right-radius: 4px;
+    -o-border-top-right-radius: 4px;
+    -ms-border-top-right-radius: 4px;
+    -khtml-border-top-right-radius: 4px;
+    border-top-right-radius: 4px;
+    -moz-border-radius-bottomright: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -o-border-bottom-right-radius: 4px;
+    -ms-border-bottom-right-radius: 4px;
+    -khtml-border-bottom-right-radius: 4px;
+    border-bottom-right-radius: 4px;
+    -moz-border-radius-bottomleft: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -o-border-bottom-left-radius: 4px;
+    -ms-border-bottom-left-radius: 4px;
+    -khtml-border-bottom-left-radius: 4px;
+    border-bottom-left-radius: 4px;
+    padding: 3px 5px 4px 5px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #cbddf3; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-collapsed-bottom-mc {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif');
+    background-color: #cbddf3; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-panel-header-default-framed-collapsed-left {
+    -moz-border-radius-topleft: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -o-border-top-left-radius: 4px;
+    -ms-border-top-left-radius: 4px;
+    -khtml-border-top-left-radius: 4px;
+    border-top-left-radius: 4px;
+    -moz-border-radius-topright: 4px;
+    -webkit-border-top-right-radius: 4px;
+    -o-border-top-right-radius: 4px;
+    -ms-border-top-right-radius: 4px;
+    -khtml-border-top-right-radius: 4px;
+    border-top-right-radius: 4px;
+    -moz-border-radius-bottomright: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -o-border-bottom-right-radius: 4px;
+    -ms-border-bottom-right-radius: 4px;
+    -khtml-border-bottom-right-radius: 4px;
+    border-bottom-right-radius: 4px;
+    -moz-border-radius-bottomleft: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -o-border-bottom-left-radius: 4px;
+    -ms-border-bottom-left-radius: 4px;
+    -khtml-border-bottom-left-radius: 4px;
+    border-bottom-left-radius: 4px;
+    padding: 5px 4px 5px 4px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #cbddf3; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-panel-header-default-framed-collapsed-left-mc {
+    background-image: url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-bg.gif');
+    background-color: #cbddf3; }
+  /* line 481, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-right-tc,
+  .x-reset .x-panel-header-default-framed-right-mc,
+  .x-reset .x-panel-header-default-framed-right-bc {
+    background-position: right 0; }
+  /* line 487, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-default-framed-bottom-tc,
+  .x-reset .x-panel-header-default-framed-bottom-mc,
+  .x-reset .x-panel-header-default-framed-bottom-bc {
+    background-position: 0 bottom; }
+  /* line 197, ../themes/stylesheets/ext4/default/widgets/_panel.scss */
+  .x-reset .x-panel-header-plain,
+  .x-reset .x-panel-body-plain {
+    border: 0;
+    padding: 0; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip {
+    position: absolute;
+    overflow: visible;
+    /*pointer needs to be able to stick out*/
+    border-color: #8eaace; }
+    /* line 12, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+    .x-reset .x-tip .x-tip-header .x-box-item {
+      padding: 3px 3px 0; }
+    /* line 16, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+    .x-reset .x-tip .x-tip-header .x-tool {
+      padding: 0px 1px 0 0 !important; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-tip {
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    -o-border-radius: 3px;
+    -ms-border-radius: 3px;
+    -khtml-border-radius: 3px;
+    border-radius: 3px;
+    padding: 2px 2px 2px 2px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #e9f2ff; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-tip-mc {
+    background-color: #e9f2ff; }
+  /* line 31, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-header-text {
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default;
+    color: #444444;
+    font-size: 11px;
+    font-weight: bold; }
+  /* line 40, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-header-draggable .x-tip-header-text {
+    cursor: move; }
+  /* line 47, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-body,
+  .x-reset .x-form-invalid-tip-body {
+    overflow: hidden;
+    position: relative;
+    padding: 3px; }
+  /* line 55, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-header,
+  .x-reset .x-tip-body,
+  .x-reset .x-form-invalid-tip-body {
+    color: #444444;
+    font-size: 11px;
+    font-weight: normal; }
+    /* line 59, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+    .x-reset .x-tip-header a,
+    .x-reset .x-tip-body a,
+    .x-reset .x-form-invalid-tip-body a {
+      color: #2a2a2a; }
+  /* line 64, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-anchor {
+    position: absolute;
+    overflow: hidden;
+    height: 0;
+    width: 0;
+    border-style: solid;
+    border-width: 5px;
+    border-color: #8eaace;
+    zoom: 1; }
+  /* line 79, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-border-box .x-tip-anchor {
+    width: 10px;
+    height: 10px; }
+  /* line 84, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-anchor-top {
+    border-top-color: transparent;
+    border-left-color: transparent;
+    border-right-color: transparent; }
+  /* line 97, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-anchor-bottom {
+    border-bottom-color: transparent;
+    border-left-color: transparent;
+    border-right-color: transparent; }
+  /* line 110, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-anchor-left {
+    border-top-color: transparent;
+    border-bottom-color: transparent;
+    border-left-color: transparent; }
+  /* line 123, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-tip-anchor-right {
+    border-top-color: transparent;
+    border-bottom-color: transparent;
+    border-right-color: transparent; }
+  /* line 137, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-form-invalid-tip {
+    border-color: #a1311f;
+    -moz-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+    -webkit-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+    -o-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset;
+    box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset; }
+  /* line 146, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+  .x-reset .x-form-invalid-tip-body {
+    background: 1px 1px no-repeat;
+    background-image: url('../../resources/themes/images/default/form/exclamation.gif');
+    padding-left: 22px; }
+    /* line 151, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+    .x-reset .x-form-invalid-tip-body li {
+      margin-bottom: 4px; }
+      /* line 153, ../themes/stylesheets/ext4/default/widgets/_qtip.scss */
+      .x-reset .x-form-invalid-tip-body li.last {
+        margin-bottom: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-form-invalid-tip-default {
+    -moz-border-radius: 5px;
+    -webkit-border-radius: 5px;
+    -o-border-radius: 5px;
+    -ms-border-radius: 5px;
+    -khtml-border-radius: 5px;
+    border-radius: 5px;
+    padding: 4px 4px 4px 4px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: white; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-form-invalid-tip-default-mc {
+    background-color: white; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider {
+    zoom: 1; }
+  /* line 10, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-inner {
+    position: relative;
+    left: 0;
+    top: 0;
+    overflow: visible;
+    zoom: 1; }
+  /* line 18, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-focus {
+    position: absolute;
+    left: 0;
+    top: 0;
+    width: 1px;
+    height: 1px;
+    line-height: 1px;
+    font-size: 1px;
+    -moz-outline: 0 none;
+    outline: 0 none;
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default;
+    display: block;
+    overflow: hidden; }
+  /* line 34, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-horz {
+    padding-left: 7px;
+    background: transparent no-repeat 0 -24px;
+    width: 100%; }
+  /* line 40, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-horz .x-slider-end {
+    padding-right: 7px;
+    zoom: 1;
+    background: transparent no-repeat right -46px; }
+  /* line 46, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-horz .x-slider-inner {
+    background: transparent repeat-x 0 -2px;
+    height: 18px; }
+  /* line 51, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-horz .x-slider-thumb {
+    width: 14px;
+    height: 15px;
+    margin-left: -7px;
+    position: absolute;
+    left: 0;
+    top: 1px;
+    background: transparent no-repeat 0 0; }
+  /* line 61, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-horz .x-slider-thumb-over {
+    background-position: -14px -15px; }
+  /* line 65, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-horz .x-slider-thumb-drag {
+    background-position: -28px -30px; }
+  /* line 70, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-vert {
+    padding-top: 7px;
+    background: transparent no-repeat -44px 0; }
+  /* line 75, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-vert .x-slider-end {
+    padding-bottom: 7px;
+    zoom: 1;
+    background: transparent no-repeat -22px bottom;
+    width: 22px; }
+  /* line 82, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-vert .x-slider-inner {
+    background: transparent repeat-y 0 0;
+    width: 22px; }
+  /* line 87, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-vert .x-slider-thumb {
+    width: 15px;
+    height: 14px;
+    margin-bottom: -7px;
+    position: absolute;
+    left: 3px;
+    bottom: 0;
+    background: transparent no-repeat 0 0; }
+  /* line 97, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-vert .x-slider-thumb-over {
+    background-position: -15px -14px; }
+  /* line 101, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-vert .x-slider-thumb-drag {
+    background-position: -30px -28px; }
+  /* line 107, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-horz,
+  .x-reset .x-slider-horz .x-slider-end,
+  .x-reset .x-slider-horz .x-slider-inner {
+    background-image: url('../../resources/themes/images/default/slider/slider-bg.png'); }
+  /* line 111, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-horz .x-slider-thumb {
+    background-image: url('../../resources/themes/images/default/slider/slider-thumb.png'); }
+  /* line 117, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-vert,
+  .x-reset .x-slider-vert .x-slider-end,
+  .x-reset .x-slider-vert .x-slider-inner {
+    background-image: url('../../resources/themes/images/default/slider/slider-v-bg.png'); }
+  /* line 121, ../themes/stylesheets/ext4/default/widgets/_slider.scss */
+  .x-reset .x-slider-vert .x-slider-thumb {
+    background-image: url('../../resources/themes/images/default/slider/slider-v-thumb.png'); }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-reset .x-progress {
+    position: relative;
+    border-width: 1px;
+    border-style: solid;
+    -moz-border-radius: 0;
+    -webkit-border-radius: 0;
+    -o-border-radius: 0;
+    -ms-border-radius: 0;
+    -khtml-border-radius: 0;
+    border-radius: 0;
+    overflow: hidden;
+    height: 20px; }
+  /* line 17, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-reset .x-progress-bar {
+    height: 18px;
+    overflow: hidden;
+    position: absolute;
+    width: 0;
+    -moz-border-radius: 0;
+    -webkit-border-radius: 0;
+    -o-border-radius: 0;
+    -ms-border-radius: 0;
+    -khtml-border-radius: 0;
+    border-radius: 0;
+    border-right: 1px solid;
+    border-top: 1px solid; }
+  /* line 30, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-reset .x-progress-text {
+    overflow: hidden;
+    position: absolute;
+    padding: 0 5px;
+    height: 18px;
+    font-weight: bold;
+    font-size: 11px;
+    line-height: 16px;
+    text-align: center; }
+  /* line 45, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-reset .x-progress-text-back {
+    padding-top: 1px; }
+  /* line 93, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-reset .x-progress-default {
+    border-color: #6594cf; }
+    /* line 96, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+    .x-reset .x-progress-default .x-progress-bar {
+      border-right-color: #6594cf;
+      border-top-color: #c6d8ed;
+      background-image: none;
+      background-color: #73a3e0;
+      background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b2ccee), color-stop(50%, #88b1e5), color-stop(51%, #73a3e0), color-stop(100%, #5e96db));
+      background-image: -webkit-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+      background-image: -moz-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+      background-image: -o-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+      background-image: -ms-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db);
+      background-image: linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db); }
+    /* line 103, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+    .x-reset .x-progress-default .x-progress-text {
+      color: white; }
+    /* line 107, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+    .x-reset .x-progress-default .x-progress-text-back {
+      color: #396295; }
+  /* line 116, ../themes/stylesheets/ext4/default/widgets/_progress-bar.scss */
+  .x-reset .x-nlg .x-progress-default .x-progress-bar {
+    background: repeat-x;
+    background-image: url('../../resources/themes/images/default/progress/progress-default-bg.gif'); }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-toolbar {
+    font-size: 11px;
+    border: 1px solid;
+    padding: 2px 0 2px 2px; }
+    /* line 13, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar .x-form-item-label {
+      font-size: 11px;
+      line-height: 15px; }
+    /* line 18, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar .x-toolbar-item {
+      margin: 0 2px 0 0; }
+    /* line 22, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar .x-toolbar-text {
+      margin-left: 4px;
+      margin-right: 6px;
+      white-space: nowrap;
+      color: #4c4c4c;
+      line-height: 16px;
+      font-family: tahoma, arial, verdana, sans-serif;
+      font-size: 11px;
+      font-weight: normal; }
+    /* line 33, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar .x-toolbar-separator {
+      display: block;
+      font-size: 1px;
+      overflow: hidden;
+      cursor: default;
+      border: 0; }
+    /* line 41, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar .x-toolbar-separator-horizontal {
+      margin: 0 3px 0 2px;
+      height: 14px;
+      width: 0px;
+      border-left: 1px solid #98c8ff;
+      border-right: 1px solid white; }
+  /* line 58, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-toolbar-footer {
+    background: transparent;
+    border: 0px none;
+    margin-top: 3px;
+    padding: 2px 0 2px 6px; }
+    /* line 65, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar-footer .x-box-inner {
+      border-width: 0; }
+    /* line 69, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar-footer .x-toolbar-item {
+      margin: 0 6px 0 0; }
+  /* line 74, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-toolbar-vertical {
+    padding: 2px 2px 0 2px; }
+    /* line 77, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar-vertical .x-toolbar-item {
+      margin: 0 0 2px 0; }
+    /* line 81, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar-vertical .x-toolbar-text {
+      margin-top: 4px;
+      margin-bottom: 6px; }
+    /* line 86, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+    .x-reset .x-toolbar-vertical .x-toolbar-separator-vertical {
+      margin: 2px 5px 3px 5px;
+      height: 0px;
+      width: 10px;
+      line-height: 0px;
+      border-top: 1px solid #98c8ff;
+      border-bottom: 1px solid white; }
+  /* line 98, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-toolbar-scroller {
+    padding-left: 0; }
+  /* line 102, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-toolbar-spacer {
+    width: 2px; }
+  /* line 107, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-toolbar-more-icon {
+    background-image: url('../../resources/themes/images/default/toolbar/more.gif') !important;
+    background-position: 2px center !important;
+    background-repeat: no-repeat; }
+  /* line 144, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-toolbar-default {
+    border-color: #99bce8;
+    background-image: none;
+    background-color: #d3e1f1;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dfe9f5), color-stop(100%, #d3e1f1));
+    background-image: -webkit-linear-gradient(top, #dfe9f5, #d3e1f1);
+    background-image: -moz-linear-gradient(top, #dfe9f5, #d3e1f1);
+    background-image: -o-linear-gradient(top, #dfe9f5, #d3e1f1);
+    background-image: -ms-linear-gradient(top, #dfe9f5, #d3e1f1);
+    background-image: linear-gradient(top, #dfe9f5, #d3e1f1); }
+  /* line 155, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-nlg .x-toolbar-default {
+    background-image: url('../../resources/themes/images/default/toolbar/toolbar-default-bg.gif') !important;
+    background-repeat: repeat-x; }
+  /* line 123, ../themes/stylesheets/ext4/default/widgets/_toolbar.scss */
+  .x-reset .x-toolbar-plain {
+    border: 0; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window {
+    outline: none;
+    overflow: hidden; }
+    /* line 10, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+    .x-reset .x-window .x-window-wrap {
+      position: relative; }
+  /* line 15, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-body {
+    position: relative;
+    border-style: solid;
+    overflow: hidden; }
+  /* line 24, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-maximized .x-window-wrap .x-window-header {
+    -moz-border-radius: 0 !important;
+    -webkit-border-radius: 0 !important;
+    -o-border-radius: 0 !important;
+    -ms-border-radius: 0 !important;
+    -khtml-border-radius: 0 !important;
+    border-radius: 0 !important; }
+  /* line 30, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-top {
+    margin-bottom: -2px; }
+  /* line 33, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-body-horizontal {
+    margin-top: -1px; }
+  /* line 37, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-bottom {
+    margin-top: -1px;
+    margin-bottom: -1px; }
+  /* line 42, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-left {
+    margin-right: -1px; }
+  /* line 46, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-right {
+    margin-left: -1px; }
+  /* line 51, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-vertical .x-surface {
+    padding-left: 1px; }
+  /* line 58, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-collapsed .x-window-header-vertical {
+    -moz-border-radius: 5px;
+    -webkit-border-radius: 5px;
+    -o-border-radius: 5px;
+    -ms-border-radius: 5px;
+    -khtml-border-radius: 5px;
+    border-radius: 5px; }
+  /* line 61, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-collapsed .x-window-header-horizontal {
+    -moz-border-radius: 5px;
+    -webkit-border-radius: 5px;
+    -o-border-radius: 5px;
+    -ms-border-radius: 5px;
+    -khtml-border-radius: 5px;
+    border-radius: 5px; }
+  /* line 66, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-collapsed .x-window-header-left {
+    padding-right: 5px !important;
+    margin-right: 0; }
+  /* line 71, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-collapsed .x-window-header-right {
+    padding-left: 5px !important;
+    margin-left: 0; }
+  /* line 76, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-collapsed .x-window-header-top {
+    padding-bottom: 5px !important;
+    margin-bottom: -1px; }
+  /* line 81, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-collapsed .x-window-header-bottom {
+    padding-top: 5px !important;
+    margin-top: 0; }
+  /* line 89, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-left .x-vml-base,
+  .x-reset .x-window-header-right .x-vml-base {
+    left: -3px !important; }
+  /* line 97, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-opera .x-window-header-vertical .x-surface,
+  .x-reset .x-strict .x-ie9 .x-window-header-vertical .x-surface {
+    padding-left: 2px; }
+  /* line 103, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-text-container {
+    overflow: hidden;
+    -o-text-overflow: ellipsis;
+    text-overflow: ellipsis; }
+  /* line 109, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-text {
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default;
+    white-space: nowrap; }
+  /* line 159, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-default {
+    border-color: #a2b1c5;
+    -moz-border-radius: 5px 5px;
+    -webkit-border-radius: 5px 5px;
+    -o-border-radius: 5px 5px;
+    -ms-border-radius: 5px 5px;
+    -khtml-border-radius: 5px 5px;
+    border-radius: 5px 5px;
+    -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-default {
+    -moz-border-radius-topleft: 5px;
+    -webkit-border-top-left-radius: 5px;
+    -o-border-top-left-radius: 5px;
+    -ms-border-top-left-radius: 5px;
+    -khtml-border-top-left-radius: 5px;
+    border-top-left-radius: 5px;
+    -moz-border-radius-topright: 5px;
+    -webkit-border-top-right-radius: 5px;
+    -o-border-top-right-radius: 5px;
+    -ms-border-top-right-radius: 5px;
+    -khtml-border-top-right-radius: 5px;
+    border-top-right-radius: 5px;
+    -moz-border-radius-bottomright: 5px;
+    -webkit-border-bottom-right-radius: 5px;
+    -o-border-bottom-right-radius: 5px;
+    -ms-border-bottom-right-radius: 5px;
+    -khtml-border-bottom-right-radius: 5px;
+    border-bottom-right-radius: 5px;
+    -moz-border-radius-bottomleft: 5px;
+    -webkit-border-bottom-left-radius: 5px;
+    -o-border-bottom-left-radius: 5px;
+    -ms-border-bottom-left-radius: 5px;
+    -khtml-border-bottom-left-radius: 5px;
+    border-bottom-left-radius: 5px;
+    padding: 4px 4px 4px 4px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-default-mc {
+    background-color: #ced9e7; }
+  /* line 178, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-body-default {
+    border-color: #99bbe8;
+    border-width: 1px;
+    background: #dfe8f6;
+    color: black; }
+  /* line 188, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-default {
+    font-size: 11px;
+    border-color: #a2b1c5;
+    zoom: 1; }
+  /* line 194, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-text-default {
+    color: #04468c;
+    font-weight: bold;
+    line-height: 17px;
+    font-family: tahoma, arial, verdana, sans-serif;
+    font-size: 11px; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-header-default-top {
+    -moz-border-radius-topleft: 5px;
+    -webkit-border-top-left-radius: 5px;
+    -o-border-top-left-radius: 5px;
+    -ms-border-top-left-radius: 5px;
+    -khtml-border-top-left-radius: 5px;
+    border-top-left-radius: 5px;
+    -moz-border-radius-topright: 5px;
+    -webkit-border-top-right-radius: 5px;
+    -o-border-top-right-radius: 5px;
+    -ms-border-top-right-radius: 5px;
+    -khtml-border-top-right-radius: 5px;
+    border-top-right-radius: 5px;
+    -moz-border-radius-bottomright: 0;
+    -webkit-border-bottom-right-radius: 0;
+    -o-border-bottom-right-radius: 0;
+    -ms-border-bottom-right-radius: 0;
+    -khtml-border-bottom-right-radius: 0;
+    border-bottom-right-radius: 0;
+    -moz-border-radius-bottomleft: 0;
+    -webkit-border-bottom-left-radius: 0;
+    -o-border-bottom-left-radius: 0;
+    -ms-border-bottom-left-radius: 0;
+    -khtml-border-bottom-left-radius: 0;
+    border-bottom-left-radius: 0;
+    padding: 4px 5px 0 5px;
+    border-width: 1px 1px 0 1px;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-header-default-top-mc {
+    background-color: #ced9e7; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-header-default-right {
+    -moz-border-radius-topleft: 0;
+    -webkit-border-top-left-radius: 0;
+    -o-border-top-left-radius: 0;
+    -ms-border-top-left-radius: 0;
+    -khtml-border-top-left-radius: 0;
+    border-top-left-radius: 0;
+    -moz-border-radius-topright: 5px;
+    -webkit-border-top-right-radius: 5px;
+    -o-border-top-right-radius: 5px;
+    -ms-border-top-right-radius: 5px;
+    -khtml-border-top-right-radius: 5px;
+    border-top-right-radius: 5px;
+    -moz-border-radius-bottomright: 5px;
+    -webkit-border-bottom-right-radius: 5px;
+    -o-border-bottom-right-radius: 5px;
+    -ms-border-bottom-right-radius: 5px;
+    -khtml-border-bottom-right-radius: 5px;
+    border-bottom-right-radius: 5px;
+    -moz-border-radius-bottomleft: 0;
+    -webkit-border-bottom-left-radius: 0;
+    -o-border-bottom-left-radius: 0;
+    -ms-border-bottom-left-radius: 0;
+    -khtml-border-bottom-left-radius: 0;
+    border-bottom-left-radius: 0;
+    padding: 5px 4px 5px 0;
+    border-width: 1px 1px 1px 0;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-header-default-right-mc {
+    background-color: #ced9e7; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-header-default-bottom {
+    -moz-border-radius-topleft: 0;
+    -webkit-border-top-left-radius: 0;
+    -o-border-top-left-radius: 0;
+    -ms-border-top-left-radius: 0;
+    -khtml-border-top-left-radius: 0;
+    border-top-left-radius: 0;
+    -moz-border-radius-topright: 0;
+    -webkit-border-top-right-radius: 0;
+    -o-border-top-right-radius: 0;
+    -ms-border-top-right-radius: 0;
+    -khtml-border-top-right-radius: 0;
+    border-top-right-radius: 0;
+    -moz-border-radius-bottomright: 5px;
+    -webkit-border-bottom-right-radius: 5px;
+    -o-border-bottom-right-radius: 5px;
+    -ms-border-bottom-right-radius: 5px;
+    -khtml-border-bottom-right-radius: 5px;
+    border-bottom-right-radius: 5px;
+    -moz-border-radius-bottomleft: 5px;
+    -webkit-border-bottom-left-radius: 5px;
+    -o-border-bottom-left-radius: 5px;
+    -ms-border-bottom-left-radius: 5px;
+    -khtml-border-bottom-left-radius: 5px;
+    border-bottom-left-radius: 5px;
+    padding: 0 5px 4px 5px;
+    border-width: 0 1px 1px 1px;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-header-default-bottom-mc {
+    background-color: #ced9e7; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-header-default-left {
+    -moz-border-radius-topleft: 5px;
+    -webkit-border-top-left-radius: 5px;
+    -o-border-top-left-radius: 5px;
+    -ms-border-top-left-radius: 5px;
+    -khtml-border-top-left-radius: 5px;
+    border-top-left-radius: 5px;
+    -moz-border-radius-topright: 0;
+    -webkit-border-top-right-radius: 0;
+    -o-border-top-right-radius: 0;
+    -ms-border-top-right-radius: 0;
+    -khtml-border-top-right-radius: 0;
+    border-top-right-radius: 0;
+    -moz-border-radius-bottomright: 0;
+    -webkit-border-bottom-right-radius: 0;
+    -o-border-bottom-right-radius: 0;
+    -ms-border-bottom-right-radius: 0;
+    -khtml-border-bottom-right-radius: 0;
+    border-bottom-right-radius: 0;
+    -moz-border-radius-bottomleft: 5px;
+    -webkit-border-bottom-left-radius: 5px;
+    -o-border-bottom-left-radius: 5px;
+    -ms-border-bottom-left-radius: 5px;
+    -khtml-border-bottom-left-radius: 5px;
+    border-bottom-left-radius: 5px;
+    padding: 5px 0px 5px 4px;
+    border-width: 1px 0 1px 1px;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-header-default-left-mc {
+    background-color: #ced9e7; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-header-default-collapsed-top {
+    -moz-border-radius-topleft: 5px;
+    -webkit-border-top-left-radius: 5px;
+    -o-border-top-left-radius: 5px;
+    -ms-border-top-left-radius: 5px;
+    -khtml-border-top-left-radius: 5px;
+    border-top-left-radius: 5px;
+    -moz-border-radius-topright: 5px;
+    -webkit-border-top-right-radius: 5px;
+    -o-border-top-right-radius: 5px;
+    -ms-border-top-right-radius: 5px;
+    -khtml-border-top-right-radius: 5px;
+    border-top-right-radius: 5px;
+    -moz-border-radius-bottomright: 5px;
+    -webkit-border-bottom-right-radius: 5px;
+    -o-border-bottom-right-radius: 5px;
+    -ms-border-bottom-right-radius: 5px;
+    -khtml-border-bottom-right-radius: 5px;
+    border-bottom-right-radius: 5px;
+    -moz-border-radius-bottomleft: 5px;
+    -webkit-border-bottom-left-radius: 5px;
+    -o-border-bottom-left-radius: 5px;
+    -ms-border-bottom-left-radius: 5px;
+    -khtml-border-bottom-left-radius: 5px;
+    border-bottom-left-radius: 5px;
+    padding: 4px 5px 4px 5px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-header-default-collapsed-top-mc {
+    background-color: #ced9e7; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-header-default-collapsed-right {
+    -moz-border-radius-topleft: 5px;
+    -webkit-border-top-left-radius: 5px;
+    -o-border-top-left-radius: 5px;
+    -ms-border-top-left-radius: 5px;
+    -khtml-border-top-left-radius: 5px;
+    border-top-left-radius: 5px;
+    -moz-border-radius-topright: 5px;
+    -webkit-border-top-right-radius: 5px;
+    -o-border-top-right-radius: 5px;
+    -ms-border-top-right-radius: 5px;
+    -khtml-border-top-right-radius: 5px;
+    border-top-right-radius: 5px;
+    -moz-border-radius-bottomright: 5px;
+    -webkit-border-bottom-right-radius: 5px;
+    -o-border-bottom-right-radius: 5px;
+    -ms-border-bottom-right-radius: 5px;
+    -khtml-border-bottom-right-radius: 5px;
+    border-bottom-right-radius: 5px;
+    -moz-border-radius-bottomleft: 5px;
+    -webkit-border-bottom-left-radius: 5px;
+    -o-border-bottom-left-radius: 5px;
+    -ms-border-bottom-left-radius: 5px;
+    -khtml-border-bottom-left-radius: 5px;
+    border-bottom-left-radius: 5px;
+    padding: 5px 4px 5px 4px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-header-default-collapsed-right-mc {
+    background-color: #ced9e7; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-header-default-collapsed-bottom {
+    -moz-border-radius-topleft: 5px;
+    -webkit-border-top-left-radius: 5px;
+    -o-border-top-left-radius: 5px;
+    -ms-border-top-left-radius: 5px;
+    -khtml-border-top-left-radius: 5px;
+    border-top-left-radius: 5px;
+    -moz-border-radius-topright: 5px;
+    -webkit-border-top-right-radius: 5px;
+    -o-border-top-right-radius: 5px;
+    -ms-border-top-right-radius: 5px;
+    -khtml-border-top-right-radius: 5px;
+    border-top-right-radius: 5px;
+    -moz-border-radius-bottomright: 5px;
+    -webkit-border-bottom-right-radius: 5px;
+    -o-border-bottom-right-radius: 5px;
+    -ms-border-bottom-right-radius: 5px;
+    -khtml-border-bottom-right-radius: 5px;
+    border-bottom-right-radius: 5px;
+    -moz-border-radius-bottomleft: 5px;
+    -webkit-border-bottom-left-radius: 5px;
+    -o-border-bottom-left-radius: 5px;
+    -ms-border-bottom-left-radius: 5px;
+    -khtml-border-bottom-left-radius: 5px;
+    border-bottom-left-radius: 5px;
+    padding: 4px 5px 4px 5px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-header-default-collapsed-bottom-mc {
+    background-color: #ced9e7; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-window-header-default-collapsed-left {
+    -moz-border-radius-topleft: 5px;
+    -webkit-border-top-left-radius: 5px;
+    -o-border-top-left-radius: 5px;
+    -ms-border-top-left-radius: 5px;
+    -khtml-border-top-left-radius: 5px;
+    border-top-left-radius: 5px;
+    -moz-border-radius-topright: 5px;
+    -webkit-border-top-right-radius: 5px;
+    -o-border-top-right-radius: 5px;
+    -ms-border-top-right-radius: 5px;
+    -khtml-border-top-right-radius: 5px;
+    border-top-right-radius: 5px;
+    -moz-border-radius-bottomright: 5px;
+    -webkit-border-bottom-right-radius: 5px;
+    -o-border-bottom-right-radius: 5px;
+    -ms-border-bottom-right-radius: 5px;
+    -khtml-border-bottom-right-radius: 5px;
+    border-bottom-right-radius: 5px;
+    -moz-border-radius-bottomleft: 5px;
+    -webkit-border-bottom-left-radius: 5px;
+    -o-border-bottom-left-radius: 5px;
+    -ms-border-bottom-left-radius: 5px;
+    -khtml-border-bottom-left-radius: 5px;
+    border-bottom-left-radius: 5px;
+    padding: 5px 4px 5px 4px;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #ced9e7; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-window-header-default-collapsed-left-mc {
+    background-color: #ced9e7; }
+  /* line 217, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-default-top {
+    -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+  /* line 221, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-default-right {
+    -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+    -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+    -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset;
+    box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset; }
+  /* line 225, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-default-bottom {
+    -moz-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    -webkit-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    -o-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+  /* line 229, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-header-default-left {
+    -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    -o-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset;
+    box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; }
+  /* line 130, ../themes/stylesheets/ext4/default/widgets/_window.scss */
+  .x-reset .x-window-body-plain {
+    background: transparent; }
+  /* line 2, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box .x-window-body {
+    background-color: #ced9e7;
+    border: none; }
+  /* line 7, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box .x-progress-wrap {
+    margin-top: 4px; }
+  /* line 11, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box-icon {
+    width: 47px;
+    height: 32px; }
+  /* line 19, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box-info,
+  .x-reset .x-message-box-warning,
+  .x-reset .x-message-box-question,
+  .x-reset .x-message-box-error {
+    background: transparent no-repeat top left; }
+  /* line 23, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box .x-msg-box-wait {
+    background-image: url('../../resources/themes/images/default/shared/blue-loading.gif'); }
+  /* line 27, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box-info {
+    background-image: url('../../resources/themes/images/default/shared/icon-info.gif'); }
+  /* line 31, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box-warning {
+    background-image: url('../../resources/themes/images/default/shared/icon-warning.gif'); }
+  /* line 35, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box-question {
+    background-image: url('../../resources/themes/images/default/shared/icon-question.gif'); }
+  /* line 39, ../themes/stylesheets/ext4/default/util/_messagebox.scss */
+  .x-reset .x-message-box-error {
+    background-image: url('../../resources/themes/images/default/shared/icon-error.gif'); }
+  /* line 73, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar {
+    position: relative;
+    background-color: transparent;
+    background-image: none;
+    background-color: #cbdbef;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef));
+    background-image: -webkit-linear-gradient(top, #dde8f5, #cbdbef);
+    background-image: -moz-linear-gradient(top, #dde8f5, #cbdbef);
+    background-image: -o-linear-gradient(top, #dde8f5, #cbdbef);
+    background-image: -ms-linear-gradient(top, #dde8f5, #cbdbef);
+    background-image: linear-gradient(top, #dde8f5, #cbdbef);
+    font-size: 11px; }
+  /* line 80, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-nlg .x-tab-bar {
+    background-image: url('../../resources/themes/images/default/tab-bar/tab-bar-default-bg.gif'); }
+  /* line 85, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-default-plain,
+  .x-reset .x-nlg .x-tab-bar-default-plain {
+    background: transparent none; }
+  /* line 90, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-body {
+    border-style: solid;
+    border-color: #99bce8;
+    position: relative;
+    z-index: 2;
+    zoom: 1; }
+  /* line 4, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-top .x-tab-bar-body {
+    height: 20px;
+    border-width: 1px 1px 0;
+    padding: 1px 0 3px; }
+  /* line 10, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-top .x-tab-bar-strip {
+    /*position strip from top rather than bottom to avoid off-by-one error in IE6*/
+    top: 22px;
+    border-width: 1px 1px 0;
+    height: 2px; }
+  /* line 19, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-border-box .x-tab-bar-top .x-tab-bar-body {
+    height: 25px; }
+  /* line 23, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-border-box .x-tab-bar-top .x-tab-bar-strip {
+    height: 3px; }
+  /* line 4, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-top .x-tab-bar-body-default-plain {
+    height: 20px;
+    border-width: 0;
+    padding: 0 0 2px; }
+  /* line 10, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-top .x-tab-bar-strip-default-plain {
+    /*position strip from top rather than bottom to avoid off-by-one error in IE6*/
+    top: 20px;
+    border-width: 1px 1px 0 1px;
+    height: 2px; }
+  /* line 19, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-border-box .x-tab-bar-top .x-tab-bar-body-default-plain {
+    height: 22px; }
+  /* line 23, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-border-box .x-tab-bar-top .x-tab-bar-strip-default-plain {
+    height: 3px; }
+  /* line 32, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-bottom .x-tab-bar-body {
+    height: 20px;
+    border-width: 0 1px 1px;
+    padding: 3px 0 1px; }
+    /* line 37, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+    .x-reset .x-tab-bar-bottom .x-tab-bar-body .x-box-inner {
+      position: relative;
+      top: -1px; }
+    /* line 44, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+    .x-reset .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller,
+    .x-reset .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-left,
+    .x-reset .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-right {
+      height: 22px; }
+  /* line 49, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-bottom .x-tab-bar-strip {
+    top: 0;
+    border-width: 0 1px 1px 1px;
+    height: 2px; }
+  /* line 57, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-border-box .x-tab-bar-bottom .x-tab-bar-body {
+    height: 25px; }
+  /* line 61, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-border-box .x-tab-bar-bottom .x-tab-bar-strip {
+    height: 3px; }
+  /* line 32, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain {
+    height: 20px;
+    border-width: 0;
+    padding: 3px 0 0; }
+    /* line 37, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+    .x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-inner {
+      position: relative;
+      top: -1px; }
+    /* line 44, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+    .x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller,
+    .x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-left,
+    .x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-right {
+      height: 21px; }
+  /* line 49, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-bottom .x-tab-bar-strip-default-plain {
+    top: 0;
+    border-width: 0 1px 1px 1px;
+    height: 2px; }
+  /* line 57, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-border-box .x-tab-bar-bottom .x-tab-bar-body-default-plain {
+    height: 23px; }
+  /* line 61, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-border-box .x-tab-bar-bottom .x-tab-bar-strip-default-plain {
+    height: 3px; }
+  /* line 141, ../themes/stylesheets/ext4/default/widgets/_tabbar.scss */
+  .x-reset .x-tab-bar-strip-default,
+  .x-reset .x-tab-bar-strip-default-plain {
+    font-size: 0;
+    line-height: 0;
+    position: absolute;
+    z-index: 1;
+    border-style: solid;
+    overflow: hidden;
+    border-color: #99bce8;
+    background-color: #deecfd;
+    zoom: 1; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-tab-default-top {
+    -moz-border-radius-topleft: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -o-border-top-left-radius: 4px;
+    -ms-border-top-left-radius: 4px;
+    -khtml-border-top-left-radius: 4px;
+    border-top-left-radius: 4px;
+    -moz-border-radius-topright: 4px;
+    -webkit-border-top-right-radius: 4px;
+    -o-border-top-right-radius: 4px;
+    -ms-border-top-right-radius: 4px;
+    -khtml-border-top-right-radius: 4px;
+    border-top-right-radius: 4px;
+    -moz-border-radius-bottomright: 0;
+    -webkit-border-bottom-right-radius: 0;
+    -o-border-bottom-right-radius: 0;
+    -ms-border-bottom-right-radius: 0;
+    -khtml-border-bottom-right-radius: 0;
+    border-bottom-right-radius: 0;
+    -moz-border-radius-bottomleft: 0;
+    -webkit-border-bottom-left-radius: 0;
+    -o-border-bottom-left-radius: 0;
+    -ms-border-bottom-left-radius: 0;
+    -khtml-border-bottom-left-radius: 0;
+    border-bottom-left-radius: 0;
+    padding: 3px 3px 0 3px;
+    border-width: 1px 1px 0 1px;
+    border-style: solid;
+    background-color: #deecfd; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-tab-default-top-mc {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-bg.gif');
+    background-color: #deecfd; }
+  /* line 69, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-tab-default-bottom {
+    -moz-border-radius-topleft: 0;
+    -webkit-border-top-left-radius: 0;
+    -o-border-top-left-radius: 0;
+    -ms-border-top-left-radius: 0;
+    -khtml-border-top-left-radius: 0;
+    border-top-left-radius: 0;
+    -moz-border-radius-topright: 0;
+    -webkit-border-top-right-radius: 0;
+    -o-border-top-right-radius: 0;
+    -ms-border-top-right-radius: 0;
+    -khtml-border-top-right-radius: 0;
+    border-top-right-radius: 0;
+    -moz-border-radius-bottomright: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -o-border-bottom-right-radius: 4px;
+    -ms-border-bottom-right-radius: 4px;
+    -khtml-border-bottom-right-radius: 4px;
+    border-bottom-right-radius: 4px;
+    -moz-border-radius-bottomleft: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -o-border-bottom-left-radius: 4px;
+    -ms-border-bottom-left-radius: 4px;
+    -khtml-border-bottom-left-radius: 4px;
+    border-bottom-left-radius: 4px;
+    padding: 0 3px 3px 3px;
+    border-width: 0 1px 1px 1px;
+    border-style: solid;
+    background-color: #deecfd; }
+  /* line 102, ../themes/stylesheets/ext4/default/mixins/_frame.scss */
+  .x-reset .x-nlg .x-tab-default-bottom-mc {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif');
+    background-color: #deecfd; }
+  /* line 28, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab {
+    z-index: 1;
+    margin: 0 0 0 2px;
+    display: inline-block;
+    zoom: 1;
+    *display: inline;
+    white-space: nowrap;
+    height: 20px;
+    border-color: #8db3e3;
+    cursor: pointer;
+    cursor: hand; }
+    /* line 40, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab button {
+      cursor: pointer;
+      cursor: hand; }
+    /* line 45, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab em {
+      display: block;
+      padding: 0 6px;
+      line-height: 1px; }
+    /* line 51, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab button {
+      background: none;
+      border: 0;
+      padding: 0;
+      margin: 0;
+      -webkit-appearance: none;
+      font-size: 11px;
+      font-weight: bold;
+      font-family: tahoma, arial, verdana, sans-serif;
+      color: #416da3;
+      outline: 0 none;
+      overflow-x: visible; }
+      /* line 69, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+      .x-reset .x-tab button::-moz-focus-inner {
+        border: 0;
+        padding: 0; }
+      /* line 74, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+      .x-reset .x-tab button .x-tab-inner {
+        background-color: transparent;
+        background-repeat: no-repeat;
+        background-position: 0 -2px;
+        display: block;
+        text-align: center;
+        white-space: nowrap;
+        text-overflow: ellipsis;
+        -o-text-overflow: ellipsis;
+        overflow: hidden; }
+    /* line 87, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab img {
+      display: none; }
+  /* line 93, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-border-box .x-tab-default-top {
+    height: 21px; }
+  /* line 96, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-border-box .x-tab-default-bottom {
+    height: 21px; }
+  /* line 124, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-default-top {
+    -moz-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    -webkit-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    -o-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    border-bottom: 1px solid #99bce8 !important; }
+    /* line 134, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab-default-top em {
+      padding-bottom: 3px; }
+    /* line 139, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab-default-top button,
+    .x-reset .x-tab-default-top .x-tab-inner {
+      height: 13px;
+      line-height: 13px; }
+  /* line 148, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-safari4 .x-tab-default-top .x-tab-inner,
+  .x-reset .x-safari5_0 .x-tab-default-top .x-tab-inner {
+    line-height: 11px; }
+  /* line 153, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-default-top {
+    border-bottom-width: 1px !important; }
+  /* line 157, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-default-top-active {
+    border-bottom-color: #deecfd !important; }
+  /* line 163, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-default-bottom {
+    -moz-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    -webkit-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    -o-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    border-top: 1px solid #99bce8 !important;
+    -moz-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    -webkit-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    -o-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset;
+    box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset; }
+    /* line 178, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab-default-bottom em {
+      padding-top: 3px; }
+    /* line 183, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab-default-bottom button,
+    .x-reset .x-tab-default-bottom .x-tab-inner {
+      height: 13px;
+      line-height: 13px; }
+  /* line 189, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-default-bottom {
+    border-top-width: 1px !important; }
+  /* line 193, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-default-bottom-active {
+    border-top-color: #deecfd !important; }
+  /* line 197, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-default-disabled {
+    cursor: default;
+    border-color: #bbd2ef;
+    background-image: none;
+    background-color: #e1ecfa;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+    background-image: -webkit-linear-gradient(top, #e1ecfa, #ecf4fe);
+    background-image: -moz-linear-gradient(top, #e1ecfa, #ecf4fe);
+    background-image: -o-linear-gradient(top, #e1ecfa, #ecf4fe);
+    background-image: -ms-linear-gradient(top, #e1ecfa, #ecf4fe);
+    background-image: linear-gradient(top, #e1ecfa, #ecf4fe); }
+    /* line 203, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab-default-disabled button {
+      color: #c3b3b3 !important; }
+  /* line 209, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-icon-text-left .x-tab-inner {
+    padding-left: 20px; }
+  /* line 214, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab button {
+    position: relative; }
+  /* line 218, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-icon {
+    position: absolute;
+    background-repeat: no-repeat;
+    background-position: 0 -1px;
+    top: 0;
+    left: 0;
+    right: auto;
+    bottom: 0;
+    width: 18px;
+    height: 18px; }
+  /* line 233, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-strict .x-ie8 .x-tab button,
+  .x-reset .x-strict .x-ie9 .x-tab button {
+    overflow-y: visible; }
+  /* line 238, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-default-disabled .x-tab-icon {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5; }
+  /* line 243, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-noicon .x-tab-icon {
+    display: none; }
+  /* line 269, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-top-over {
+    background-image: none;
+    background-color: #e8f2ff;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff));
+    background-image: -webkit-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+    background-image: -moz-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+    background-image: -o-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+    background-image: -ms-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+    background-image: linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%); }
+  /* line 272, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-bottom-over {
+    background-image: none;
+    background-color: #e8f2ff;
+    background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff));
+    background-image: -webkit-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+    background-image: -moz-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+    background-image: -o-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+    background-image: -ms-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%);
+    background-image: linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%); }
+  /* line 277, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-active {
+    z-index: 3; }
+    /* line 283, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab-active button {
+      color: #15498b; }
+  /* line 299, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-top-active {
+    background-image: none;
+    background-color: #deecfd;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd));
+    background-image: -webkit-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+    background-image: -moz-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+    background-image: -o-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+    background-image: -ms-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%);
+    background-image: linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%); }
+  /* line 302, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-bottom-active {
+    background-image: none;
+    background-color: #deecfd;
+    background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd));
+    background-image: -webkit-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+    background-image: -moz-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+    background-image: -o-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+    background-image: -ms-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%);
+    background-image: linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%); }
+  /* line 307, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-disabled {
+    border-color: #bbd2ef; }
+    /* line 312, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+    .x-reset .x-tab-disabled button {
+      color: #c3b3b3; }
+  /* line 328, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-top-disabled {
+    background-image: none;
+    background: transparent;
+    background-image: none;
+    background-color: #e1ecfa;
+    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+    background-image: -webkit-linear-gradient(top, #e1ecfa, #ecf4fe);
+    background-image: -moz-linear-gradient(top, #e1ecfa, #ecf4fe);
+    background-image: -o-linear-gradient(top, #e1ecfa, #ecf4fe);
+    background-image: -ms-linear-gradient(top, #e1ecfa, #ecf4fe);
+    background-image: linear-gradient(top, #e1ecfa, #ecf4fe); }
+  /* line 333, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-bottom-disabled {
+    background-image: none;
+    background: transparent;
+    background-image: none;
+    background-color: #e1ecfa;
+    background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe));
+    background-image: -webkit-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+    background-image: -moz-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+    background-image: -o-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+    background-image: -ms-linear-gradient(bottom, #e1ecfa, #ecf4fe);
+    background-image: linear-gradient(bottom, #e1ecfa, #ecf4fe); }
+  /* line 342, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nlg .x-tab-top {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-bg.gif'); }
+  /* line 343, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nlg .x-tab-bottom {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif'); }
+  /* line 347, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nlg .x-tab-top-over {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-over-bg.gif'); }
+  /* line 348, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nlg .x-tab-bottom-over {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-over-bg.gif'); }
+  /* line 352, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nlg .x-tab-top-active {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-active-bg.gif'); }
+  /* line 353, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nlg .x-tab-bottom-active {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-active-bg.gif'); }
+  /* line 357, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nlg .x-tab-top-disabled {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-top-disabled-bg.gif') !important; }
+  /* line 358, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nlg .x-tab-bottom-disabled {
+    background-image: url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif') !important; }
+  /* line 363, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-closable em {
+    padding-right: 14px; }
+  /* line 367, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-close-btn {
+    position: absolute;
+    top: 2px;
+    right: 2px;
+    width: 11px;
+    height: 11px;
+    font-size: 0;
+    line-height: 0;
+    text-indent: -999px;
+    background: no-repeat;
+    background-image: url('../../resources/themes/images/default/tab/tab-default-close.gif');
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+    opacity: 0.6; }
+  /* line 381, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-nbr .x-tab-close-btn {
+    top: 0px;
+    right: 0px; }
+  /* line 387, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset a.x-tab-close-btn:hover {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+    opacity: 1; }
+  /* line 392, ../themes/stylesheets/ext4/default/widgets/_tab.scss */
+  .x-reset .x-tab-default-disabled a.x-tab-close-btn {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+    opacity: 0.3; }
+  /* line 9, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-autowidth-table table.x-grid-table {
+    table-layout: auto;
+    width: auto!important; }
+  /* line 14, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-no-lines .x-tree-elbow {
+    background-color: transparent; }
+  /* line 18, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-no-lines .x-tree-elbow-end {
+    background-color: transparent; }
+  /* line 22, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-no-lines .x-tree-elbow-line {
+    background-color: transparent; }
+  /* line 27, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-elbow-plus {
+    background: transparent no-repeat 0 0; }
+  /* line 31, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-elbow-end-plus {
+    background: transparent no-repeat 0 0; }
+  /* line 35, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-elbow-end-minus {
+    background: transparent no-repeat -16px 0; }
+  /* line 39, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-elbow-minus {
+    background: transparent no-repeat -16px 0; }
+  /* line 43, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-elbow {
+    background-color: transparent !important; }
+  /* line 47, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-elbow-end {
+    background-color: transparent !important; }
+  /* line 51, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-elbow-line {
+    background-color: transparent !important; }
+  /* line 57, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-expander-over .x-tree-elbow-plus,
+  .x-reset .x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-plus {
+    background-position: -32px 0; }
+  /* line 62, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-expander-over .x-tree-elbow-minus,
+  .x-reset .x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-minus {
+    background-position: -48px 0; }
+  /* line 67, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-plus,
+  .x-reset .x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+    background-position: -16px 0; }
+  /* line 72, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-plus,
+  .x-reset .x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-end-plus {
+    background-position: -48px 0; }
+  /* line 79, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-elbow-plus,
+  .x-reset .x-tree-elbow-minus,
+  .x-reset .x-tree-elbow-end-plus,
+  .x-reset .x-tree-elbow-end-minus {
+    cursor: pointer; }
+  /* line 85, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-lines .x-tree-elbow {
+    background-image: url('../../resources/themes/images/default/tree/elbow.gif'); }
+  /* line 89, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-lines .x-tree-elbow-end {
+    background-image: url('../../resources/themes/images/default/tree/elbow-end.gif'); }
+  /* line 93, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-lines .x-tree-elbow-plus {
+    background-image: url('../../resources/themes/images/default/tree/elbow-plus.gif'); }
+  /* line 97, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-lines .x-tree-elbow-end-plus {
+    background-image: url('../../resources/themes/images/default/tree/elbow-end-plus.gif'); }
+  /* line 101, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus {
+    background-image: url('../../resources/themes/images/default/tree/elbow-minus.gif'); }
+  /* line 105, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+    background-image: url('../../resources/themes/images/default/tree/elbow-end-minus.gif'); }
+  /* line 109, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-lines .x-tree-elbow-line {
+    background-image: url('../../resources/themes/images/default/tree/elbow-line.gif'); }
+  /* line 116, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-no-lines .x-tree-elbow-plus,
+  .x-reset .x-tree-no-lines .x-tree-elbow-end-plus {
+    background-image: url('../../resources/themes/images/default/tree/elbow-plus-nl.gif'); }
+  /* line 121, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-plus,
+  .x-reset .x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus {
+    background-image: url('../../resources/themes/images/default/tree/elbow-end-minus-nl.gif'); }
+  /* line 130, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-arrows .x-tree-elbow-plus,
+  .x-reset .x-tree-arrows .x-tree-elbow-minus,
+  .x-reset .x-tree-arrows .x-tree-elbow-end-plus,
+  .x-reset .x-tree-arrows .x-tree-elbow-end-minus {
+    background-image: url('../../resources/themes/images/default/tree/arrows.gif'); }
+  /* line 135, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-icon {
+    margin: 2px 3px 0 0; }
+  /* line 139, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-with-row-lines .x-tree-icon {
+    margin-top: 1px; }
+  /* line 148, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-elbow,
+  .x-reset .x-tree-elbow-end,
+  .x-reset .x-tree-elbow-plus,
+  .x-reset .x-tree-elbow-end-plus,
+  .x-reset .x-tree-elbow-empty,
+  .x-reset .x-tree-elbow-line {
+    height: 20px;
+    width: 16px; }
+  /* line 159, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-with-row-lines .x-tree-elbow,
+  .x-reset .x-grid-with-row-lines .x-tree-elbow-end,
+  .x-reset .x-grid-with-row-lines .x-tree-elbow-plus,
+  .x-reset .x-grid-with-row-lines .x-tree-elbow-end-plus,
+  .x-reset .x-grid-with-row-lines .x-tree-elbow-empty,
+  .x-reset .x-grid-with-row-lines .x-tree-elbow-line {
+    height: 19px;
+    background-position: 0 -1px; }
+  /* line 165, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-icon-leaf {
+    width: 16px;
+    background-image: url('../../resources/themes/images/default/tree/leaf.gif'); }
+  /* line 170, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-icon-parent {
+    width: 16px;
+    background-image: url('../../resources/themes/images/default/tree/folder.gif'); }
+  /* line 175, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-tree-node-expanded .x-tree-icon-parent {
+    background-image: url('../../resources/themes/images/default/tree/folder-open.gif'); }
+  /* line 179, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-rowbody {
+    padding: 0; }
+  /* line 183, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-cell-treecolumn .x-grid-cell-inner {
+    padding: 0;
+    line-height: 19px; }
+  /* line 188, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-with-row-lines .x-grid-cell-treecolumn .x-grid-cell-inner {
+    line-height: 17px; }
+  /* line 192, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-panel .x-grid-cell-inner {
+    cursor: pointer; }
+    /* line 194, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+    .x-reset .x-tree-panel .x-grid-cell-inner img {
+      display: inline-block;
+      vertical-align: top; }
+  /* line 215, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-editor-on-text-node .x-form-text {
+    padding-left: 1px;
+    padding-right: 1px; }
+  /* line 228, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-opera .x-grid-editor-on-text-node .x-form-text {
+    padding-left: 2px;
+    padding-right: 2px; }
+  /* line 234, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-checkbox {
+    margin: 4px 3px 0 0;
+    display: inline-block;
+    vertical-align: top;
+    width: 13px;
+    height: 13px;
+    background: no-repeat;
+    background-image: url('../../resources/themes/images/default/form/checkbox.gif');
+    overflow: hidden;
+    padding: 0;
+    border: 0; }
+    /* line 247, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+    .x-reset .x-tree-checkbox::-moz-focus-inner {
+      padding: 0;
+      border: 0; }
+  /* line 253, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-with-row-lines .x-tree-checkbox {
+    margin-top: 3px; }
+  /* line 257, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-checkbox-checked {
+    background-position: 0 -13px; }
+  /* line 261, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-drop-ok-append .x-dd-drop-icon {
+    background-image: url('../../resources/themes/images/default/tree/drop-append.gif'); }
+  /* line 265, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-drop-ok-above .x-dd-drop-icon {
+    background-image: url('../../resources/themes/images/default/tree/drop-above.gif'); }
+  /* line 269, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-drop-ok-below .x-dd-drop-icon {
+    background-image: url('../../resources/themes/images/default/tree/drop-below.gif'); }
+  /* line 273, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-drop-ok-between .x-dd-drop-icon {
+    background-image: url('../../resources/themes/images/default/tree/drop-between.gif'); }
+  /* line 277, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-tree-loading .x-tree-icon {
+    background-image: url('../../resources/themes/images/default/tree/loading.gif'); }
+  /* line 281, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-ddindicator {
+    height: 1px;
+    border-width: 1px 0px 0px;
+    border-style: dotted;
+    border-color: green; }
+  /* line 288, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-grid-tree-loading span {
+    font-style: italic;
+    color: #444444; }
+  /* line 293, ../themes/stylesheets/ext4/default/widgets/_tree.scss */
+  .x-reset .x-tree-animator-wrap {
+    overflow: hidden; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset .x-surface {
+    display: -moz-inline-box;
+    -moz-box-orient: vertical;
+    display: inline-block;
+    vertical-align: middle;
+    *vertical-align: auto;
+    overflow: hidden; }
+    /* line 7, ../../../../../../../../../Library/Ruby/Gems/1.8/gems/compass-0.11.7/frameworks/compass/stylesheets/compass/css3/_inline-block.scss */
+    .x-reset .x-surface {
+      *display: inline; }
+  /* line 11, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset .rvml {
+    behavior: url(#default#VML); }
+  /* line 15, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset .x-surface tspan {
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    cursor: default; }
+  /* line 19, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset .x-vml-sprite {
+    position: absolute;
+    left: 0;
+    top: 0;
+    width: 1px;
+    height: 1px; }
+  /* line 27, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset .x-vml-group {
+    position: absolute;
+    left: 0;
+    top: 0;
+    width: 1000px;
+    height: 1000px; }
+  /* line 35, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset .x-vml-measure-span {
+    position: absolute;
+    left: -9999em;
+    top: -9999em;
+    padding: 0;
+    margin: 0;
+    display: inline; }
+  /* line 44, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset .x-vml-base {
+    position: relative;
+    top: 0;
+    left: 0;
+    overflow: hidden;
+    display: inline-block; }
+  /* line 52, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset .x-vml-base {
+    position: relative;
+    top: 0;
+    left: 0;
+    overflow: hidden;
+    display: inline-block; }
+  /* line 60, ../themes/stylesheets/ext4/default/widgets/_drawcomponent.scss */
+  .x-reset svg, .x-reset vml {
+    overflow: hidden; }
+  /* line 6, ../themes/stylesheets/ext4/default/widgets/_viewport.scss */
+  .x-reset .x-viewport, .x-reset .x-viewport body {
+    margin: 0;
+    padding: 0;
+    border: 0 none;
+    overflow: hidden;
+    height: 100%;
+    position: static; }
+  /* line 3, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-dd-drag-proxy {
+    z-index: 1000000!important; }
+  /* line 8, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-dd-drag-repair .x-dd-drag-ghost {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+    opacity: 0.6; }
+  /* line 12, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-dd-drag-repair .x-dd-drop-icon {
+    display: none; }
+  /* line 17, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-dd-drag-ghost {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
+    opacity: 0.85;
+    padding: 5px;
+    padding-left: 20px;
+    white-space: nowrap;
+    color: #000;
+    font: normal 11px tahoma, arial, verdana, sans-serif;
+    border: 1px solid;
+    border-color: #ddd #bbb #bbb #ddd;
+    background-color: #fff; }
+  /* line 34, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-dd-drop-icon {
+    position: absolute;
+    top: 3px;
+    left: 3px;
+    display: block;
+    width: 16px;
+    height: 16px;
+    background-color: transparent;
+    background-position: center;
+    background-repeat: no-repeat;
+    z-index: 1; }
+  /* line 51, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-view-selector {
+    position: absolute;
+    left: 0;
+    top: 0;
+    width: 0;
+    background-color: #c3daf9;
+    border: 1px dotted #3399bb;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+    opacity: 0.5;
+    zoom: 1; }
+  /* line 66, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-dd-drop-nodrop .x-dd-drop-icon {
+    background-image: url('../../resources/themes/images/default/dd/drop-no.gif'); }
+  /* line 70, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-dd-drop-ok .x-dd-drop-icon {
+    background-image: url('../../resources/themes/images/default/dd/drop-yes.gif'); }
+  /* line 74, ../themes/stylesheets/ext4/default/util/_dragdrop.scss */
+  .x-reset .x-dd-drop-ok-add .x-dd-drop-icon {
+    background-image: url('../../resources/themes/images/default/dd/drop-add.gif'); }
+  /* line 2, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle {
+    position: absolute;
+    z-index: 100;
+    font-size: 1px;
+    line-height: 6px;
+    overflow: hidden;
+    zoom: 1;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+    opacity: 0;
+    background-color: #fff; }
+  /* line 14, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-collapsed .x-resizable-handle {
+    display: none; }
+  /* line 18, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle-east {
+    width: 6px;
+    height: 100%;
+    right: 0;
+    top: 0; }
+  /* line 27, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-east {
+    cursor: e-resize; }
+  /* line 32, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle-south {
+    width: 100%;
+    height: 6px;
+    left: 0;
+    bottom: 0; }
+  /* line 41, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-south {
+    cursor: s-resize; }
+  /* line 46, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle-west {
+    width: 6px;
+    height: 100%;
+    left: 0;
+    top: 0; }
+  /* line 55, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-west {
+    cursor: w-resize; }
+  /* line 60, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle-north {
+    width: 100%;
+    height: 6px;
+    left: 0;
+    top: 0; }
+  /* line 69, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-north {
+    cursor: n-resize; }
+  /* line 74, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle-southeast {
+    width: 6px;
+    height: 6px;
+    right: 0;
+    bottom: 0;
+    z-index: 101; }
+  /* line 85, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-southeast {
+    cursor: se-resize; }
+  /* line 90, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle-northwest {
+    width: 6px;
+    height: 6px;
+    left: 0;
+    top: 0;
+    z-index: 101; }
+  /* line 101, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-northwest {
+    cursor: nw-resize; }
+  /* line 106, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle-northeast {
+    width: 6px;
+    height: 6px;
+    right: 0;
+    top: 0;
+    z-index: 101; }
+  /* line 117, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-northeast {
+    cursor: ne-resize; }
+  /* line 122, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-handle-southwest {
+    width: 6px;
+    height: 6px;
+    left: 0;
+    bottom: 0;
+    z-index: 101; }
+  /* line 133, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-southwest {
+    cursor: sw-resize; }
+  /* line 140, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-ie .x-resizable-handle-east {
+    margin-right: -1px;
+    /*IE rounding error*/ }
+  /* line 144, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-ie .x-resizable-handle-south {
+    margin-bottom: -1px; }
+  /* line 149, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle, .x-reset .x-resizable-pinned .x-resizable-handle {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+    opacity: 1; }
+  /* line 153, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-window .x-window-handle {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+    opacity: 0; }
+  /* line 157, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-window-collapsed .x-window-handle {
+    display: none; }
+  /* line 161, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-proxy {
+    border: 1px dashed #3b5a82;
+    position: absolute;
+    left: 0;
+    top: 0;
+    overflow: hidden;
+    z-index: 50000; }
+  /* line 170, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-overlay {
+    position: absolute;
+    left: 0;
+    top: 0;
+    width: 100%;
+    height: 100%;
+    display: none;
+    z-index: 200000;
+    background-color: #fff;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+    opacity: 0; }
+  /* line 190, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-east,
+  .x-reset .x-resizable-over .x-resizable-handle-west,
+  .x-reset .x-resizable-pinned .x-resizable-handle-east,
+  .x-reset .x-resizable-pinned .x-resizable-handle-west {
+    background-position: left;
+    background-image: url('../../resources/themes/images/default/sizer/e-handle.gif'); }
+  /* line 196, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-south,
+  .x-reset .x-resizable-over .x-resizable-handle-north,
+  .x-reset .x-resizable-pinned .x-resizable-handle-south,
+  .x-reset .x-resizable-pinned .x-resizable-handle-north {
+    background-position: top;
+    background-image: url('../../resources/themes/images/default/sizer/s-handle.gif'); }
+  /* line 201, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-southeast,
+  .x-reset .x-resizable-pinned .x-resizable-handle-southeast {
+    background-position: top left;
+    background-image: url('../../resources/themes/images/default/sizer/se-handle.gif'); }
+  /* line 206, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-northwest,
+  .x-reset .x-resizable-pinned .x-resizable-handle-northwest {
+    background-position: bottom right;
+    background-image: url('../../resources/themes/images/default/sizer/nw-handle.gif'); }
+  /* line 211, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-northeast,
+  .x-reset .x-resizable-pinned .x-resizable-handle-northeast {
+    background-position: bottom left;
+    background-image: url('../../resources/themes/images/default/sizer/ne-handle.gif'); }
+  /* line 216, ../themes/stylesheets/ext4/default/util/_resizable.scss */
+  .x-reset .x-resizable-over .x-resizable-handle-southwest,
+  .x-reset .x-resizable-pinned .x-resizable-handle-southwest {
+    background-position: top right;
+    background-image: url('../../resources/themes/images/default/sizer/sw-handle.gif'); }
+  /* line 3, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter .x-collapse-el {
+    position: absolute;
+    cursor: pointer;
+    background-color: transparent;
+    background-repeat: no-repeat !important; }
+  /* line 14, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-layout-split-left,
+  .x-reset .x-layout-split-right {
+    top: 50%;
+    margin-top: -17px;
+    width: 5px;
+    height: 35px; }
+  /* line 24, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-layout-split-top,
+  .x-reset .x-layout-split-bottom {
+    left: 50%;
+    width: 35px;
+    height: 5px;
+    margin-left: -17px; }
+  /* line 33, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-layout-split-left {
+    background: no-repeat top right;
+    background-image: url('../../resources/themes/images/default/util/splitter/mini-left.gif'); }
+  /* line 38, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-layout-split-right {
+    background: no-repeat top left;
+    background-image: url('../../resources/themes/images/default/util/splitter/mini-right.gif'); }
+  /* line 43, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-layout-split-top {
+    background: no-repeat top left;
+    background-image: url('../../resources/themes/images/default/util/splitter/mini-top.gif'); }
+  /* line 48, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-layout-split-bottom {
+    background: no-repeat top left;
+    background-image: url('../../resources/themes/images/default/util/splitter/mini-bottom.gif'); }
+  /* line 54, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-collapsed .x-layout-split-left {
+    background: no-repeat top left;
+    background-image: url('../../resources/themes/images/default/util/splitter/mini-right.gif'); }
+  /* line 59, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-collapsed .x-layout-split-right {
+    background: no-repeat top right;
+    background-image: url('../../resources/themes/images/default/util/splitter/mini-left.gif'); }
+  /* line 64, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-collapsed .x-layout-split-top {
+    background: no-repeat top left;
+    background-image: url('../../resources/themes/images/default/util/splitter/mini-bottom.gif'); }
+  /* line 69, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-collapsed .x-layout-split-bottom {
+    background: no-repeat top left;
+    background-image: url('../../resources/themes/images/default/util/splitter/mini-top.gif'); }
+  /* line 75, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-horizontal {
+    cursor: e-resize;
+    cursor: row-resize;
+    font-size: 1px; }
+  /* line 81, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-vertical {
+    cursor: e-resize;
+    cursor: col-resize;
+    font-size: 1px; }
+  /* line 86, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-collapsed, .x-reset .x-splitter-horizontal-noresize, .x-reset .x-splitter-vertical-noresize {
+    cursor: default; }
+  /* line 90, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-active {
+    z-index: 4;
+    font-size: 1px;
+    background-color: #b4b4b4;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+    opacity: 0.8; }
+  /* line 97, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-splitter-active .x-collapse-el {
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
+    opacity: 0.3; }
+  /* line 102, ../themes/stylesheets/ext4/default/util/_splitter.scss */
+  .x-reset .x-proxy-el {
+    position: absolute;
+    background: #b4b4b4;
+    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
+    opacity: 0.8; }
+  /* line 6, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked {
+    position: absolute !important;
+    z-index: 1; }
+  /* line 11, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked-top {
+    border-bottom-width: 0 !important; }
+  /* line 15, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked-bottom {
+    border-top-width: 0 !important; }
+  /* line 19, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked-left {
+    border-right-width: 0 !important; }
+  /* line 23, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked-right {
+    border-left-width: 0 !important; }
+  /* line 27, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked-noborder-top {
+    border-top-width: 0 !important; }
+  /* line 31, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked-noborder-right {
+    border-right-width: 0 !important; }
+  /* line 35, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked-noborder-bottom {
+    border-bottom-width: 0 !important; }
+  /* line 39, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-docked-noborder-left {
+    border-left-width: 0 !important; }
+  /* line 43, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-inner {
+    overflow: hidden;
+    zoom: 1;
+    position: relative;
+    left: 0;
+    top: 0; }
+  /* line 53, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-item {
+    position: absolute !important;
+    left: 0;
+    top: 0; }
+  /* line 59, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-rtl .x-box-item {
+    right: 0;
+    left: auto; }
+  /* line 65, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-layout-ct,
+  .x-reset .x-border-layout-ct {
+    overflow: hidden;
+    zoom: 1; }
+  /* line 70, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-border-layout-ct {
+    background-color: #dfe8f6;
+    position: relative; }
+  /* line 75, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-overflow-hidden {
+    overflow: hidden !important; }
+  /* line 79, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-inline-children > * {
+    display: inline-block !important; }
+  /* line 83, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-abs-layout-ct {
+    position: relative; }
+  /* line 87, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-abs-layout-item {
+    position: absolute !important; }
+  /* line 91, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-fit-item {
+    position: relative; }
+  /* line 95, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-border-region-slide-in {
+    z-index: 5; }
+  /* line 99, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-region-collapsed-placeholder {
+    z-index: 4; }
+  /* line 103, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-accordion-hd .x-panel-header-text {
+    color: black;
+    font-weight: normal; }
+  /* line 108, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-accordion-hd {
+    background: #d9e7f8 !important;
+    -moz-box-shadow: inset 0 0 0 0 #d9e7f8;
+    -webkit-box-shadow: inset 0 0 0 0 #d9e7f8;
+    -o-box-shadow: inset 0 0 0 0 #d9e7f8;
+    box-shadow: inset 0 0 0 0 #d9e7f8; }
+    /* line 112, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-accordion-hd .x-tool-collapse-top,
+    .x-reset .x-accordion-hd .x-tool-collapse-right,
+    .x-reset .x-accordion-hd .x-tool-collapse-bottom,
+    .x-reset .x-accordion-hd .x-tool-collapse-left {
+      background-position: 0 -255px; }
+    /* line 119, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-accordion-hd .x-tool-expand-top,
+    .x-reset .x-accordion-hd .x-tool-expand-right,
+    .x-reset .x-accordion-hd .x-tool-expand-bottom,
+    .x-reset .x-accordion-hd .x-tool-expand-left {
+      background-position: 0 -240px; }
+    /* line 127, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-accordion-hd .x-tool-over .x-tool-collapse-top,
+    .x-reset .x-accordion-hd .x-tool-over .x-tool-collapse-right,
+    .x-reset .x-accordion-hd .x-tool-over .x-tool-collapse-bottom,
+    .x-reset .x-accordion-hd .x-tool-over .x-tool-collapse-left {
+      background-position: -15px -255px; }
+    /* line 136, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-accordion-hd .x-tool-over .x-tool-expand-top,
+    .x-reset .x-accordion-hd .x-tool-over .x-tool-expand-right,
+    .x-reset .x-accordion-hd .x-tool-over .x-tool-expand-bottom,
+    .x-reset .x-accordion-hd .x-tool-over .x-tool-expand-left {
+      background-position: -15px -240px; }
+  /* line 145, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-accordion-hd {
+    border-width: 1px 0 1px 0 !important;
+    padding: 4px 5px 5px 5px;
+    border-top-color: #f3f7fb !important; }
+  /* line 151, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-accordion-body {
+    border-width: 0 !important; }
+  /* line 155, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-accordion-hd-sibling-expanded {
+    border-top-color: #99bce8 !important;
+    -moz-box-shadow: inset 0 1px 0 0 #f3f7fb;
+    -webkit-box-shadow: inset 0 1px 0 0 #f3f7fb;
+    -o-box-shadow: inset 0 1px 0 0 #f3f7fb;
+    box-shadow: inset 0 1px 0 0 #f3f7fb; }
+  /* line 160, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-accordion-hd-last-collapsed {
+    border-bottom-color: #d9e7f8 !important; }
+  /* line 169, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-frame-tl,
+  .x-reset .x-frame-tr,
+  .x-reset .x-frame-tc,
+  .x-reset .x-frame-bl,
+  .x-reset .x-frame-br,
+  .x-reset .x-frame-bc {
+    overflow: hidden;
+    background-repeat: no-repeat; }
+  /* line 175, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-frame-tc,
+  .x-reset .x-frame-bc {
+    background-repeat: repeat-x; }
+  /* line 179, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-frame-mc {
+    position: relative;
+    background-repeat: repeat-x;
+    overflow: hidden; }
+  /* line 188, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-scroller-left {
+    float: left;
+    height: 100%;
+    z-index: 5; }
+    /* line 195, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-left .x-toolbar-scroll-left,
+    .x-reset .x-box-scroller-left .x-tabbar-scroll-left {
+      width: 18px;
+      position: relative;
+      cursor: pointer;
+      height: 20px;
+      background: transparent no-repeat -18px 0;
+      background-image: url('../../resources/themes/images/default/tab-bar/scroll-left.gif'); }
+    /* line 203, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-left .x-toolbar-scroll-left-hover {
+      background-position: 0 0; }
+    /* line 207, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-left .x-toolbar-scroll-left-disabled,
+    .x-reset .x-box-scroller-left .x-tabbar-scroll-left-disabled {
+      background-position: -18px 0;
+      filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+      opacity: 0.5;
+      cursor: default; }
+    /* line 214, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-left .x-toolbar-scroll-left {
+      background-image: url('../../resources/themes/images/default/toolbar/scroll-left.gif');
+      background-position: -14px 0; }
+    /* line 218, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-left .x-toolbar-scroll-left-hover {
+      background-position: 0 0; }
+    /* line 221, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-left .x-toolbar-scroll-left-disabled {
+      background-position: -14px 0; }
+    /* line 225, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-left .x-toolbar-scroll-left {
+      width: 14px;
+      height: 22px;
+      border-bottom: 1px solid #8db2e3; }
+  /* line 233, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-horizontal-box-overflow-body {
+    float: left; }
+  /* line 236, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-scroller-right {
+    float: right;
+    height: 100%;
+    z-index: 5; }
+    /* line 243, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-right .x-toolbar-scroll-right,
+    .x-reset .x-box-scroller-right .x-tabbar-scroll-right {
+      width: 18px;
+      position: relative;
+      cursor: pointer;
+      height: 20px;
+      background: transparent no-repeat 0 0;
+      background-image: url('../../resources/themes/images/default/tab-bar/scroll-right.gif'); }
+    /* line 251, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-right .x-toolbar-scroll-right-hover {
+      background-position: -18px 0; }
+    /* line 255, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-right .x-toolbar-scroll-right-disabled,
+    .x-reset .x-box-scroller-right .x-tabbar-scroll-right-disabled {
+      background-position: 0 0;
+      filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+      opacity: 0.5;
+      cursor: default; }
+    /* line 262, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-right .x-toolbar-scroll-right {
+      background-image: url('../../resources/themes/images/default/toolbar/scroll-right.gif'); }
+    /* line 265, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-right .x-toolbar-scroll-right-hover {
+      background-position: -14px 0; }
+    /* line 268, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-right .x-toolbar-scroll-right-disabled {
+      background-position: 0 0; }
+    /* line 272, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+    .x-reset .x-box-scroller-right .x-toolbar-scroll-right {
+      width: 14px;
+      height: 22px;
+      border-bottom: 1px solid #8db2e3; }
+  /* line 282, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-scroller-top .x-box-scroller {
+    line-height: 0;
+    font-size: 0; }
+  /* line 286, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-scroller-top .x-menu-scroll-top {
+    background: transparent no-repeat center center;
+    background-image: url('../../resources/themes/images/default/layout/mini-top.gif');
+    height: 8px;
+    cursor: pointer; }
+  /* line 294, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-scroller-bottom .x-box-scroller {
+    line-height: 0;
+    font-size: 0; }
+  /* line 298, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-scroller-bottom .x-menu-scroll-bottom {
+    background: transparent no-repeat center center;
+    background-image: url('../../resources/themes/images/default/layout/mini-bottom.gif');
+    height: 8px;
+    cursor: pointer; }
+  /* line 306, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-box-menu-right {
+    float: right;
+    padding-right: 2px; }
+  /* line 311, ../themes/stylesheets/ext4/default/layout/_layout.scss */
+  .x-reset .x-column {
+    float: left; }
+  /* line 2, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool {
+    height: 15px; }
+    /* line 5, ../themes/stylesheets/ext4/default/util/_tool.scss */
+    .x-reset .x-tool img {
+      overflow: hidden;
+      width: 15px;
+      height: 15px;
+      cursor: pointer;
+      background-color: transparent;
+      background-repeat: no-repeat;
+      background-image: url('../../resources/themes/images/default/tools/tool-sprites.gif');
+      margin: 0; }
+  /* line 23, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-panel-header-horizontal .x-tool,
+  .x-reset .x-window-header-horizontal .x-tool {
+    margin-left: 2px; }
+  /* line 30, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-panel-header-vertical .x-tool,
+  .x-reset .x-window-header-vertical .x-tool {
+    margin-top: 2px; }
+  /* line 39, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-panel-header-vertical .x-tool-top,
+  .x-reset .x-window-header-vertical .x-tool-top {
+    margin: 0 0 4px; }
+  /* line 45, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-placeholder {
+    visibility: hidden; }
+  /* line 49, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-toggle {
+    background-position: 0 -60px; }
+  /* line 54, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-toggle {
+    background-position: -15px -60px; }
+  /* line 61, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-panel-collapsed .x-tool-toggle,
+  .x-reset .x-fieldset-collapsed .x-tool-toggle {
+    background-position: 0 -75px; }
+  /* line 66, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-panel-collapsed .x-tool-over .x-tool-toggle,
+  .x-reset .x-fieldset-collapsed .x-tool-over .x-tool-toggle {
+    background-position: -15px -75px; }
+  /* line 72, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-close {
+    background-position: 0 0; }
+  /* line 76, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-minimize {
+    background-position: 0 -15px; }
+  /* line 80, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-maximize {
+    background-position: 0 -30px; }
+  /* line 84, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-restore {
+    background-position: 0 -45px; }
+  /* line 88, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-gear {
+    background-position: 0 -90px; }
+  /* line 92, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-prev {
+    background-position: 0 -105px; }
+  /* line 96, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-next {
+    background-position: 0 -120px; }
+  /* line 100, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-pin {
+    background-position: 0 -135px; }
+  /* line 104, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-unpin {
+    background-position: 0 -150px; }
+  /* line 108, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-right {
+    background-position: 0 -165px; }
+  /* line 112, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-left {
+    background-position: 0 -180px; }
+  /* line 116, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-help {
+    background-position: 0 -300px; }
+  /* line 120, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-save {
+    background-position: 0 -285px; }
+  /* line 124, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-search {
+    background-position: 0 -270px; }
+  /* line 128, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-minus {
+    background-position: 0 -255px; }
+  /* line 132, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-plus {
+    background-position: 0 -240px; }
+  /* line 136, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-refresh {
+    background-position: 0 -225px; }
+  /* line 140, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-up {
+    background-position: 0 -210px; }
+  /* line 144, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-down {
+    background-position: 0 -195px; }
+  /* line 148, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-collapse {
+    background-position: 0 -345px; }
+  /* line 152, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-expand {
+    background-position: 0 -330px; }
+  /* line 156, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-print {
+    background-position: 0 -315px; }
+  /* line 161, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-expand-bottom,
+  .x-reset .x-tool-collapse-bottom {
+    background-position: 0 -195px; }
+  /* line 166, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-expand-top,
+  .x-reset .x-tool-collapse-top {
+    background-position: 0 -210px; }
+  /* line 171, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-expand-left,
+  .x-reset .x-tool-collapse-left {
+    background-position: 0 -180px; }
+  /* line 176, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-expand-right,
+  .x-reset .x-tool-collapse-right {
+    background-position: 0 -165px; }
+  /* line 181, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-close {
+    background-position: -15px 0; }
+  /* line 185, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-minimize {
+    background-position: -15px -15px; }
+  /* line 189, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-maximize {
+    background-position: -15px -30px; }
+  /* line 193, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-restore {
+    background-position: -15px -45px; }
+  /* line 197, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-gear {
+    background-position: -15px -90px; }
+  /* line 201, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-prev {
+    background-position: -15px -105px; }
+  /* line 205, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-next {
+    background-position: -15px -120px; }
+  /* line 209, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-pin {
+    background-position: -15px -135px; }
+  /* line 213, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-unpin {
+    background-position: -15px -150px; }
+  /* line 217, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-right {
+    background-position: -15px -165px; }
+  /* line 221, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-left {
+    background-position: -15px -180px; }
+  /* line 225, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-down {
+    background-position: -15px -195px; }
+  /* line 229, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-up {
+    background-position: -15px -210px; }
+  /* line 233, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-refresh {
+    background-position: -15px -225px; }
+  /* line 237, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-plus {
+    background-position: -15px -240px; }
+  /* line 241, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-minus {
+    background-position: -15px -255px; }
+  /* line 245, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-search {
+    background-position: -15px -270px; }
+  /* line 249, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-save {
+    background-position: -15px -285px; }
+  /* line 253, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-help {
+    background-position: -15px -300px; }
+  /* line 257, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-print {
+    background-position: -15px -315px; }
+  /* line 261, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-expand {
+    background-position: -15px -330px; }
+  /* line 265, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-collapse {
+    background-position: -15px -345px; }
+  /* line 270, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-expand-bottom,
+  .x-reset .x-tool-over .x-tool-collapse-bottom {
+    background-position: -15px -195px; }
+  /* line 275, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-expand-top,
+  .x-reset .x-tool-over .x-tool-collapse-top {
+    background-position: -15px -210px; }
+  /* line 280, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-expand-left,
+  .x-reset .x-tool-over .x-tool-collapse-left {
+    background-position: -15px -180px; }
+  /* line 285, ../themes/stylesheets/ext4/default/util/_tool.scss */
+  .x-reset .x-tool-over .x-tool-expand-right,
+  .x-reset .x-tool-over .x-tool-collapse-right {
+    background-position: -15px -165px; }
+  /* line 2, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-horizontal-scroller-present .x-grid-body {
+    border-bottom-width: 0px; }
+  /* line 6, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-vertical-scroller-present .x-grid-body {
+    border-right-width: 0px; }
+  /* line 10, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-scroller {
+    overflow: hidden; }
+  /* line 14, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-scroller-vertical {
+    border: 1px solid #99bce8;
+    border-top-color: #c5c5c5; }
+  /* line 19, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-scroller-horizontal {
+    border: 1px solid #99bce8; }
+  /* line 23, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-vertical-scroller-present .x-scroller-horizontal {
+    border-right-width: 0px; }
+  /* line 27, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-scroller-ct {
+    overflow: hidden;
+    position: absolute;
+    margin: 0;
+    padding: 0;
+    border: none;
+    left: 0px;
+    top: 0px;
+    /*
+    In IE9 (only), the border-box style causes the scroller-ct to be 0px in the
+    perpendicular dimension and breaks the scroll as well as offsets it by the left
+    offset that we use to try and keep some size on this element. This works on all
+    browsers (including IE9).
+    */
+    box-sizing: content-box !important;
+    -ms-box-sizing: content-box !important;
+    -moz-box-sizing: content-box !important;
+    -webkit-box-sizing: content-box !important; }
+  /* line 48, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-scroller-vertical .x-scroller-ct {
+    overflow-y: scroll; }
+  /* line 52, ../themes/stylesheets/ext4/default/util/_scroller.scss */
+  .x-reset .x-scroller-horizontal .x-scroller-ct {
+    overflow-x: scroll; }
+  /* line 8, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+  .x-reset .x-html {
+    /* Begin bidirectionality settings (do not change) */ }
+    /* line 34, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html html, .x-reset .x-html address, .x-reset .x-html blockquote, .x-reset .x-html body, .x-reset .x-html dd, .x-reset .x-html div, .x-reset .x-html dl, .x-reset .x-html dt, .x-reset .x-html fieldset, .x-reset .x-html form, .x-reset .x-html frame, .x-reset .x-html frameset, .x-reset .x-html h1, .x-reset .x-html h2, .x-reset .x-html h3, .x-reset .x-html h4, .x-reset .x-html h5, .x-reset .x-html h6, .x-reset .x-html noframes, .x-reset .x-html ol, .x-reset .x-html p, .x-reset .x-html ul, .x-reset .x-html center, .x-reset .x-html dir, .x-reset .x-html hr, .x-reset .x-html menu, .x-reset .x-html pre {
+      display: block; }
+    /* line 35, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html li {
+      display: list-item;
+      list-style: disc; }
+    /* line 36, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html head {
+      display: none; }
+    /* line 37, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html table {
+      display: table; }
+    /* line 38, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html tr {
+      display: table-row; }
+    /* line 39, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html thead {
+      display: table-header-group; }
+    /* line 40, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html tbody {
+      display: table-row-group; }
+    /* line 41, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html tfoot {
+      display: table-footer-group; }
+    /* line 42, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html col {
+      display: table-column; }
+    /* line 43, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html colgroup {
+      display: table-column-group; }
+    /* line 45, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html td, .x-reset .x-html th {
+      display: table-cell; }
+    /* line 46, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html caption {
+      display: table-caption; }
+    /* line 47, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html th {
+      font-weight: bolder;
+      text-align: center; }
+    /* line 48, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html caption {
+      text-align: center; }
+    /* line 49, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html body {
+      margin: 8px; }
+    /* line 50, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html h1 {
+      font-size: 2em;
+      margin: .67em 0; }
+    /* line 51, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html h2 {
+      font-size: 1.5em;
+      margin: .75em 0; }
+    /* line 52, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html h3 {
+      font-size: 1.17em;
+      margin: .83em 0; }
+    /* line 62, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html h4, .x-reset .x-html p, .x-reset .x-html blockquote, .x-reset .x-html ul, .x-reset .x-html fieldset, .x-reset .x-html form, .x-reset .x-html ol, .x-reset .x-html dl, .x-reset .x-html dir, .x-reset .x-html menu {
+      margin: 1.12em 0; }
+    /* line 63, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html h5 {
+      font-size: .83em;
+      margin: 1.5em 0; }
+    /* line 64, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html h6 {
+      font-size: .75em;
+      margin: 1.67em 0; }
+    /* line 72, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html h1, .x-reset .x-html h2, .x-reset .x-html h3, .x-reset .x-html h4, .x-reset .x-html h5, .x-reset .x-html h6, .x-reset .x-html b, .x-reset .x-html strong {
+      font-weight: bolder; }
+    /* line 73, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html blockquote {
+      margin-left: 40px;
+      margin-right: 40px; }
+    /* line 78, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html i, .x-reset .x-html cite, .x-reset .x-html em, .x-reset .x-html var, .x-reset .x-html address {
+      font-style: italic; }
+    /* line 83, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html pre, .x-reset .x-html tt, .x-reset .x-html code, .x-reset .x-html kbd, .x-reset .x-html samp {
+      font-family: monospace; }
+    /* line 84, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html pre {
+      white-space: pre; }
+    /* line 88, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html button, .x-reset .x-html textarea, .x-reset .x-html input, .x-reset .x-html select {
+      display: inline-block; }
+    /* line 89, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html big {
+      font-size: 1.17em; }
+    /* line 92, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html small, .x-reset .x-html sub, .x-reset .x-html sup {
+      font-size: .83em; }
+    /* line 93, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html sub {
+      vertical-align: sub; }
+    /* line 94, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html sup {
+      vertical-align: super; }
+    /* line 95, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html table {
+      border-spacing: 2px; }
+    /* line 98, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html thead, .x-reset .x-html tbody, .x-reset .x-html tfoot {
+      vertical-align: middle; }
+    /* line 100, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html td, .x-reset .x-html th {
+      vertical-align: inherit; }
+    /* line 103, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html s, .x-reset .x-html strike, .x-reset .x-html del {
+      text-decoration: line-through; }
+    /* line 104, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html hr {
+      border: 1px inset; }
+    /* line 109, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html ol, .x-reset .x-html ul, .x-reset .x-html dir, .x-reset .x-html menu, .x-reset .x-html dd {
+      margin-left: 40px; }
+    /* line 110, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html ul, .x-reset .x-html menu, .x-reset .x-html dir {
+      list-style-type: disc; }
+    /* line 111, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html ol {
+      list-style-type: decimal; }
+    /* line 115, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html ol ul, .x-reset .x-html ul ol, .x-reset .x-html ul ul, .x-reset .x-html ol ol {
+      margin-top: 0;
+      margin-bottom: 0; }
+    /* line 117, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html u, .x-reset .x-html ins {
+      text-decoration: underline; }
+    /* line 118, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html br:before {
+      content: "\A"; }
+    /* line 119, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html :before, .x-reset .x-html :after {
+      white-space: pre-line; }
+    /* line 120, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html center {
+      text-align: center; }
+    /* line 121, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html :link, .x-reset .x-html :visited {
+      text-decoration: underline; }
+    /* line 122, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html :focus {
+      outline: invert dotted thin; }
+    /* line 125, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html BDO[DIR="ltr"] {
+      direction: ltr;
+      unicode-bidi: bidi-override; }
+    /* line 126, ../themes/stylesheets/ext4/default/widgets/_html.scss */
+    .x-reset .x-html BDO[DIR="rtl"] {
+      direction: rtl;
+      unicode-bidi: bidi-override; }
+
+/* line 5, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-default-top {
+  height: 21px; }
+/* line 8, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-default-bottom {
+  height: 21px; }
+/* line 13, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tip-anchor {
+  width: 10px;
+  height: 10px; }
+/* line 19, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-form-text {
+  height: 22px; }
+/* line 23, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset textarea.x-form-field {
+  height: auto; }
+/* line 27, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-field-default-toolbar .x-form-text {
+  height: 20px; }
+/* line 32, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-form-trigger {
+  height: 22px; }
+/* line 36, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-field-default-toolbar .x-form-trigger {
+  height: 20px; }
+
+/* line 55, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-webkit .x-reset *:focus {
+  outline: none !important; }
+/* line 61, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-webkit .x-reset .x-form-empty-field {
+  line-height: 15px; }
+/* line 66, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-webkit .x-reset .x-fieldset-header {
+  padding-top: 1px; }
+
+/* Top Tabs */
+/* line 118, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-bar-top .x-tab-bar-body {
+  height: 25px; }
+/* line 122, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-bar-top .x-tab-bar-strip {
+  height: 3px; }
+
+/* line 118, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-bar-top .x-tab-bar-body-default-plain {
+  height: 22px; }
+/* line 122, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-bar-top .x-tab-bar-strip-default-plain {
+  height: 3px; }
+
+/* Bottom Tabs */
+/* line 134, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-bar-bottom .x-tab-bar-body {
+  height: 25px; }
+/* line 138, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-bar-bottom .x-tab-bar-strip {
+  height: 3px; }
+
+/* line 134, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain {
+  height: 23px; }
+/* line 138, ../themes/stylesheets/ext4/default/mixins/_reset-extras.scss */
+.x-border-box .x-reset .x-tab-bar-bottom .x-tab-bar-strip-default-plain {
+  height: 3px; }
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-standard-scoped.css
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-standard-scoped.css	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-standard-scoped.css	(revision 18277)
@@ -0,0 +1,21 @@
+/*
+This file is part of Ext JS 4.1
+
+Copyright (c) 2011-2012 Sencha Inc
+
+Contact:  http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2012-07-04 21:11:01 (65ff594cd80b9bad45df640c22cc0adb52c95a7b)
+*/
+.x-border-box .x-reset,.x-border-box .x-reset *{box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box}.x-reset html,.x-reset body,.x-reset div,.x-reset dl,.x-reset dt,.x-reset dd,.x-reset ul,.x-reset ol,.x-reset li,.x-reset h1,.x-reset h2,.x-reset h3,.x-reset h4,.x-reset h5,.x-reset h6,.x-reset pre,.x-reset code,.x-reset form,.x-reset fieldset,.x-reset legend,.x-reset input,.x-reset textarea,.x-reset p,.x-reset blockquote,.x-reset th,.x-reset td{margin:0;padding:0}.x-reset table{border-collapse:collapse;border-spacing:0}.x-reset fieldset,.x-reset img{border:0}.x-reset address,.x-reset caption,.x-reset cite,.x-reset code,.x-reset dfn,.x-reset em,.x-reset strong,.x-reset th,.x-reset var{font-style:normal;font-weight:normal}.x-reset li{list-style:none}.x-reset caption,.x-reset th{text-align:left}.x-reset h1,.x-reset h2,.x-reset h3,.x-reset h4,.x-reset h5,.x-reset h6{font-size:100%}.x-reset q:before,.x-reset q:after{content:""}.x-reset abbr,.x-reset acronym{border:0;font-variant:normal}.x-reset sup{vertical-align:text-top}.x-reset sub{vertical-align:text-bottom}.x-reset input,.x-reset textarea,.x-reset select{font-family:inherit;font-size:inherit;font-weight:inherit}.x-reset *:focus{outline:0}.x-body{color:black;font-size:12px;font-family:tahoma,arial,verdana,sans-serif}.x-rtl{direction:rtl}.x-ltr{direction:ltr}.x-clear{overflow:hidden;clear:both;font-size:0;line-height:0;display:table}.x-strict .x-ie7 .x-clear{height:0;width:0}.x-layer{position:absolute!important;overflow:hidden;zoom:1}.x-shim{position:absolute;left:0;top:0;overflow:hidden;filter:alpha(opacity=0);opacity:0}.x-hide-display{display:none!important}.x-hide-visibility{visibility:hidden!important}.x-item-disabled .x-form-item-label,.x-item-disabled .x-form-field,.x-item-disabled .x-form-cb-label,.x-item-disabled .x-form-trigger{filter:alpha(opacity=30);opacity:.3}.x-ie6 .x-item-disabled{filter:none}.x-hidden,.x-hide-offsets{display:block!important;visibility:hidden!important;position:absolute!important;left:-10000px!important;top:-10000px!important}.x-hide-nosize{height:0!important;width:0!important}.x-masked-relative{position:relative}.x-css-shadow{position:absolute;-moz-border-radius:5px 5px;-webkit-border-radius:5px 5px;-o-border-radius:5px 5px;-ms-border-radius:5px 5px;-khtml-border-radius:5px 5px;border-radius:5px 5px}.x-ie-shadow{background-color:#777;display:none;position:absolute;overflow:hidden;zoom:1}.x-box-tl{background:transparent no-repeat 0 0;zoom:1}.x-box-tc{height:8px;background:transparent repeat-x 0 0;overflow:hidden}.x-box-tr{background:transparent no-repeat right -8px}.x-box-ml{background:transparent repeat-y 0;padding-left:4px;overflow:hidden;zoom:1}.x-box-mc{background:repeat-x 0 -16px;padding:4px 10px}.x-box-mc h3{margin:0 0 4px 0;zoom:1}.x-box-mr{background:transparent repeat-y right;padding-right:4px;overflow:hidden}.x-box-bl{background:transparent no-repeat 0 -16px;zoom:1}.x-box-bc{background:transparent repeat-x 0 -8px;height:8px;overflow:hidden}.x-box-br{background:transparent no-repeat right -24px}.x-box-tl,.x-box-bl{padding-left:8px;overflow:hidden}.x-box-tr,.x-box-br{padding-right:8px;overflow:hidden}.x-box-tl{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-tc{background-image:url('../../resources/themes/images/default/box/tb.gif')}.x-box-tr{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-ml{background-image:url('../../resources/themes/images/default/box/l.gif')}.x-box-mc{background-color:#eee;background-image:url('../../resources/themes/images/default/box/tb.gif');font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:15px}.x-box-mc h3{font-size:18px;font-weight:bold}.x-box-mr{background-image:url('../../resources/themes/images/default/box/r.gif')}.x-box-bl{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-bc{background-image:url('../../resources/themes/images/default/box/tb.gif')}.x-box-br{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-blue .x-box-bl,.x-box-blue .x-box-br,.x-box-blue .x-box-tl,.x-box-blue .x-box-tr{background-image:url('../../resources/themes/images/default/box/corners-blue.gif')}.x-box-blue .x-box-bc,.x-box-blue .x-box-mc,.x-box-blue .x-box-tc{background-image:url('../../resources/themes/images/default/box/tb-blue.gif')}.x-box-blue .x-box-mc{background-color:#c3daf9}.x-box-blue .x-box-mc h3{color:#17385b}.x-box-blue .x-box-ml{background-image:url('../../resources/themes/images/default/box/l-blue.gif')}.x-box-blue .x-box-mr{background-image:url('../../resources/themes/images/default/box/r-blue.gif')}.x-container{zoom:1}.x-container:before{content:"";clear:both;display:table}table.x-container:before,tbody.x-container:before,tr.x-container:before{display:none}.x-focus-element{position:absolute;top:-10px;left:-10px;width:0;height:0}.x-focus-frame{position:absolute;left:0;top:0;z-index:100000000;width:0;height:0}.x-focus-frame-top,.x-focus-frame-bottom,.x-focus-frame-left,.x-focus-frame-right{position:absolute;top:0;left:0}.x-focus-frame-top,.x-focus-frame-bottom{border-top:solid 2px #15428b;height:2px}.x-focus-frame-left,.x-focus-frame-right{border-left:solid 2px #15428b;width:2px}.x-mask{z-index:100;position:absolute;top:0;left:0;filter:alpha(opacity=50);opacity:.5;width:100%;height:100%;zoom:1;background:#ccc}.x-mask-msg{z-index:20001;position:absolute;top:0;left:0;padding:2px;border:1px solid;border-color:#99bce8}.x-mask-msg div{padding:5px 10px 5px 25px;background-image:url('../../resources/themes/images/default/grid/loading.gif');background-repeat:no-repeat;background-position:5px center;cursor:wait;border:1px solid #a3bad9;background-color:#eee;color:#222;font:normal 11px tahoma,arial,verdana,sans-serif}.x-reset .x-boundlist{border-width:1px;border-style:solid;border-color:#98c0f4;background:white}.x-reset .x-boundlist .x-toolbar{border-width:1px 0 0 0}.x-reset .x-boundlist-item{padding:2px;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;cursor:pointer;cursor:hand;position:relative;border-width:1px;border-style:dotted;border-color:white}.x-reset .x-boundlist-selected{background:#cbdaf0;border-color:#8eabe4}.x-reset .x-boundlist-item-over{background:#dfe8f6;border-color:#a3bae9}.x-reset .x-boundlist-floating{border-top-width:0}.x-reset .x-boundlist-above{border-top-width:1px;border-bottom-width:1px}.x-reset .x-btn{display:inline-block;zoom:1;*display:inline;position:relative;cursor:pointer;cursor:hand;white-space:nowrap;vertical-align:middle;background-repeat:no-repeat}.x-reset .x-btn *{cursor:pointer;cursor:hand}.x-reset .x-btn em{background-repeat:no-repeat}.x-reset .x-btn em a{text-decoration:none;display:block;color:inherit;width:100%;zoom:1}.x-reset .x-btn button{width:100%;display:block;margin:0;padding:0;border:0;background:0;outline:0 none;overflow:hidden;vertical-align:bottom;-webkit-appearance:none}.x-reset .x-btn button::-moz-focus-inner{border:0;padding:0}.x-reset .x-btn .x-btn-inner{display:block;white-space:nowrap;background-color:transparent;background-repeat:no-repeat;background-position:left center;overflow:hidden}.x-reset .x-btn .x-btn-left .x-btn-inner{text-align:left}.x-reset .x-btn .x-btn-center .x-btn-inner{text-align:center}.x-reset .x-btn .x-btn-right .x-btn-inner{text-align:right}.x-reset .x-btn-disabled span{filter:alpha(opacity=50);opacity:.5}.x-ie6 .x-reset .x-btn-disabled span,.x-ie7 .x-reset .x-btn-disabled span{filter:none}.x-reset .x-ie7 .x-btn-disabled,.x-reset .x-ie8 .x-btn-disabled{filter:none}.x-reset .x-ie6 .x-btn-disabled .x-btn-icon,.x-reset .x-ie7 .x-btn-disabled .x-btn-icon,.x-reset .x-ie8 .x-btn-disabled .x-btn-icon{filter:alpha(opacity=60);opacity:.6}.x-reset .x-btn-icon-text-left .x-btn-icon{background-position:left center}.x-reset .x-btn-icon-text-right .x-btn-icon{background-position:right center}.x-reset .x-btn-icon-text-top .x-btn-icon{background-position:center top}.x-reset .x-btn-icon-text-bottom .x-btn-icon{background-position:center bottom}.x-reset .x-btn button,.x-reset .x-btn a{position:relative}.x-reset .x-btn button .x-btn-icon,.x-reset .x-btn a .x-btn-icon{position:absolute;background-repeat:no-repeat}.x-reset .x-btn-arrow-right{background:transparent no-repeat right center;padding-right:12px}.x-reset .x-btn-arrow-right .x-btn-inner{padding-right:0!important}.x-reset .x-toolbar .x-btn-arrow-right{padding-right:12px}.x-reset .x-btn-arrow-bottom{background:transparent no-repeat center bottom;padding-bottom:12px}.x-reset .x-btn-arrow{background-image:url('../../resources/themes/images/default/button/arrow.gif');display:block}.x-reset .x-btn-split-right,.x-reset .x-btn-over .x-btn-split-right{background:transparent no-repeat right center;background-image:url('../../resources/themes/images/default/button/s-arrow.gif');padding-right:14px!important}.x-reset .x-btn-split-bottom,.x-reset .x-btn-over .x-btn-split-bottom{background:transparent no-repeat center bottom;background-image:url('../../resources/themes/images/default/button/s-arrow-b.gif');padding-bottom:14px}.x-reset .x-toolbar .x-btn-split-right{background-image:url('../../resources/themes/images/default/button/s-arrow-noline.gif');padding-right:12px!important}.x-reset .x-toolbar .x-btn-split-bottom{background-image:url('../../resources/themes/images/default/button/s-arrow-b-noline.gif')}.x-reset .x-btn-split{display:block}.x-reset .x-item-disabled,.x-reset .x-item-disabled *{cursor:default}.x-reset .x-cycle-fixed-width .x-btn-inner{text-align:inherit}.x-reset .x-btn-over .x-btn-split-right{background-image:url('../../resources/themes/images/default/button/s-arrow-o.gif')}.x-reset .x-btn-over .x-btn-split-bottom{background-image:url('../../resources/themes/images/default/button/s-arrow-bo.gif')}.x-reset .x-btn-default-small{border-color:#d1d1d1}.x-reset .x-btn-default-small{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:white}.x-reset .x-nlg .x-btn-default-small-mc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-bg.gif');background-color:white}.x-reset .x-btn-default-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 4px}.x-reset .x-btn-default-small-icon button,.x-reset .x-btn-default-small-icon a,.x-reset .x-btn-default-small-icon .x-btn-inner,.x-reset .x-btn-default-small-noicon button,.x-reset .x-btn-default-small-noicon a,.x-reset .x-btn-default-small-noicon .x-btn-inner{height:16px;line-height:16px}.x-reset .x-btn-default-small-icon button,.x-reset .x-btn-default-small-icon a{padding:0}.x-reset .x-btn-default-small-icon .x-btn-inner{width:16px;padding:0}.x-reset .x-btn-default-small-icon .x-btn-icon{width:16px;height:16px;top:0;left:0;bottom:0;right:0}.x-reset .x-btn-default-small-icon-text-left button,.x-reset .x-btn-default-small-icon-text-left a{height:16px}.x-reset .x-btn-default-small-icon-text-left .x-btn-inner{height:16px;line-height:16px;padding-left:20px}.x-reset .x-btn-default-small-icon-text-left .x-btn-icon{width:16px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-reset .x-btn-default-small-icon-text-left .x-btn-icon,.x-quirks .x-reset .x-btn-default-small-icon-text-left .x-btn-icon{height:16px}.x-reset .x-btn-default-small-icon-text-right button,.x-reset .x-btn-default-small-icon-text-right a{height:16px}.x-reset .x-btn-default-small-icon-text-right .x-btn-inner{height:16px;line-height:16px;padding-right:20px!important}.x-reset .x-btn-default-small-icon-text-right .x-btn-icon{width:16px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-small-icon-text-right .x-btn-icon,.x-quirks .x-reset .x-btn-default-small-icon-text-right .x-btn-icon{height:16px}.x-reset .x-btn-default-small-icon-text-top .x-btn-inner{padding-top:20px}.x-reset .x-btn-default-small-icon-text-top .x-btn-icon{width:auto;height:16px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-reset .x-btn-default-small-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-small-icon-text-top .x-btn-icon{width:16px}.x-reset .x-btn-default-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-reset .x-btn-default-small-icon-text-bottom .x-btn-icon{width:auto;height:16px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-small-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-small-icon-text-bottom .x-btn-icon{width:16px}.x-reset .x-btn-default-small-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-reset .x-btn-default-small-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-reset .x-btn-default-small-menu-active,.x-reset .x-btn-default-small-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-ms-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-reset .x-btn-default-small-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-ms-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-reset .x-btn-default-small-disabled .x-btn-inner{color:#333!important}.x-reset .x-ie .x-btn-default-small-disabled .x-btn-inner{color:#595959!important}.x-reset .x-ie6 .x-btn-default-small-disabled .x-btn-inner{color:#8c8c8c!important}.x-reset .x-nlg .x-btn-default-small{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-bg.gif')}.x-reset .x-nlg .x-btn-default-small-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-over-bg.gif')}.x-reset .x-nlg .x-btn-default-small-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-focus-bg.gif')}.x-reset .x-nlg .x-btn-default-small-menu-active,.x-reset .x-nlg .x-btn-default-small-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-pressed-bg.gif')}.x-reset .x-nlg .x-btn-default-small-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-disabled-bg.gif')}.x-reset .x-btn-default-medium{border-color:#d1d1d1}.x-reset .x-btn-default-medium{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:white}.x-reset .x-nlg .x-btn-default-medium-mc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif');background-color:white}.x-reset .x-btn-default-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-reset .x-btn-default-medium-icon button,.x-reset .x-btn-default-medium-icon a,.x-reset .x-btn-default-medium-icon .x-btn-inner,.x-reset .x-btn-default-medium-noicon button,.x-reset .x-btn-default-medium-noicon a,.x-reset .x-btn-default-medium-noicon .x-btn-inner{height:24px;line-height:24px}.x-reset .x-btn-default-medium-icon button,.x-reset .x-btn-default-medium-icon a{padding:0}.x-reset .x-btn-default-medium-icon .x-btn-inner{width:24px;padding:0}.x-reset .x-btn-default-medium-icon .x-btn-icon{width:24px;height:24px;top:0;left:0;bottom:0;right:0}.x-reset .x-btn-default-medium-icon-text-left button,.x-reset .x-btn-default-medium-icon-text-left a{height:24px}.x-reset .x-btn-default-medium-icon-text-left .x-btn-inner{height:24px;line-height:24px;padding-left:28px}.x-reset .x-btn-default-medium-icon-text-left .x-btn-icon{width:24px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-reset .x-btn-default-medium-icon-text-left .x-btn-icon,.x-quirks .x-reset .x-btn-default-medium-icon-text-left .x-btn-icon{height:24px}.x-reset .x-btn-default-medium-icon-text-right button,.x-reset .x-btn-default-medium-icon-text-right a{height:24px}.x-reset .x-btn-default-medium-icon-text-right .x-btn-inner{height:24px;line-height:24px;padding-right:28px!important}.x-reset .x-btn-default-medium-icon-text-right .x-btn-icon{width:24px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-medium-icon-text-right .x-btn-icon,.x-quirks .x-reset .x-btn-default-medium-icon-text-right .x-btn-icon{height:24px}.x-reset .x-btn-default-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-reset .x-btn-default-medium-icon-text-top .x-btn-icon{width:auto;height:24px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-reset .x-btn-default-medium-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-medium-icon-text-top .x-btn-icon{width:24px}.x-reset .x-btn-default-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-reset .x-btn-default-medium-icon-text-bottom .x-btn-icon{width:auto;height:24px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-medium-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-medium-icon-text-bottom .x-btn-icon{width:24px}.x-reset .x-btn-default-medium-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-reset .x-btn-default-medium-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-reset .x-btn-default-medium-menu-active,.x-reset .x-btn-default-medium-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-ms-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-reset .x-btn-default-medium-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-ms-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-reset .x-btn-default-medium-disabled .x-btn-inner{color:#333!important}.x-reset .x-ie .x-btn-default-medium-disabled .x-btn-inner{color:#595959!important}.x-reset .x-ie6 .x-btn-default-medium-disabled .x-btn-inner{color:#8c8c8c!important}.x-reset .x-nlg .x-btn-default-medium{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif')}.x-reset .x-nlg .x-btn-default-medium-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-over-bg.gif')}.x-reset .x-nlg .x-btn-default-medium-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-focus-bg.gif')}.x-reset .x-nlg .x-btn-default-medium-menu-active,.x-reset .x-nlg .x-btn-default-medium-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif')}.x-reset .x-nlg .x-btn-default-medium-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif')}.x-reset .x-btn-default-large{border-color:#d1d1d1}.x-reset .x-btn-default-large{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:white}.x-reset .x-nlg .x-btn-default-large-mc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-bg.gif');background-color:white}.x-reset .x-btn-default-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-reset .x-btn-default-large-icon button,.x-reset .x-btn-default-large-icon a,.x-reset .x-btn-default-large-icon .x-btn-inner,.x-reset .x-btn-default-large-noicon button,.x-reset .x-btn-default-large-noicon a,.x-reset .x-btn-default-large-noicon .x-btn-inner{height:32px;line-height:32px}.x-reset .x-btn-default-large-icon button,.x-reset .x-btn-default-large-icon a{padding:0}.x-reset .x-btn-default-large-icon .x-btn-inner{width:32px;padding:0}.x-reset .x-btn-default-large-icon .x-btn-icon{width:32px;height:32px;top:0;left:0;bottom:0;right:0}.x-reset .x-btn-default-large-icon-text-left button,.x-reset .x-btn-default-large-icon-text-left a{height:32px}.x-reset .x-btn-default-large-icon-text-left .x-btn-inner{height:32px;line-height:32px;padding-left:36px}.x-reset .x-btn-default-large-icon-text-left .x-btn-icon{width:32px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-reset .x-btn-default-large-icon-text-left .x-btn-icon,.x-quirks .x-reset .x-btn-default-large-icon-text-left .x-btn-icon{height:32px}.x-reset .x-btn-default-large-icon-text-right button,.x-reset .x-btn-default-large-icon-text-right a{height:32px}.x-reset .x-btn-default-large-icon-text-right .x-btn-inner{height:32px;line-height:32px;padding-right:36px!important}.x-reset .x-btn-default-large-icon-text-right .x-btn-icon{width:32px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-large-icon-text-right .x-btn-icon,.x-quirks .x-reset .x-btn-default-large-icon-text-right .x-btn-icon{height:32px}.x-reset .x-btn-default-large-icon-text-top .x-btn-inner{padding-top:36px}.x-reset .x-btn-default-large-icon-text-top .x-btn-icon{width:auto;height:32px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-reset .x-btn-default-large-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-large-icon-text-top .x-btn-icon{width:32px}.x-reset .x-btn-default-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-reset .x-btn-default-large-icon-text-bottom .x-btn-icon{width:auto;height:32px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-large-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-large-icon-text-bottom .x-btn-icon{width:32px}.x-reset .x-btn-default-large-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-reset .x-btn-default-large-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-reset .x-btn-default-large-menu-active,.x-reset .x-btn-default-large-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-ms-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-reset .x-btn-default-large-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-ms-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-reset .x-btn-default-large-disabled .x-btn-inner{color:#333!important}.x-reset .x-ie .x-btn-default-large-disabled .x-btn-inner{color:#595959!important}.x-reset .x-ie6 .x-btn-default-large-disabled .x-btn-inner{color:#8c8c8c!important}.x-reset .x-nlg .x-btn-default-large{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-bg.gif')}.x-reset .x-nlg .x-btn-default-large-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-over-bg.gif')}.x-reset .x-nlg .x-btn-default-large-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-focus-bg.gif')}.x-reset .x-nlg .x-btn-default-large-menu-active,.x-reset .x-nlg .x-btn-default-large-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-pressed-bg.gif')}.x-reset .x-nlg .x-btn-default-large-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-disabled-bg.gif')}.x-reset .x-btn-default-toolbar-small{border-color:transparent}.x-reset .x-btn-default-toolbar-small{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:transparent}.x-reset .x-nlg .x-btn-default-toolbar-small-mc{background-color:transparent}.x-reset .x-btn-default-toolbar-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 4px}.x-reset .x-btn-default-toolbar-small-icon button,.x-reset .x-btn-default-toolbar-small-icon a,.x-reset .x-btn-default-toolbar-small-icon .x-btn-inner,.x-reset .x-btn-default-toolbar-small-noicon button,.x-reset .x-btn-default-toolbar-small-noicon a,.x-reset .x-btn-default-toolbar-small-noicon .x-btn-inner{height:16px;line-height:16px}.x-reset .x-btn-default-toolbar-small-icon button,.x-reset .x-btn-default-toolbar-small-icon a{padding:0}.x-reset .x-btn-default-toolbar-small-icon .x-btn-inner{width:16px;padding:0}.x-reset .x-btn-default-toolbar-small-icon .x-btn-icon{width:16px;height:16px;top:0;left:0;bottom:0;right:0}.x-reset .x-btn-default-toolbar-small-icon-text-left button,.x-reset .x-btn-default-toolbar-small-icon-text-left a{height:16px}.x-reset .x-btn-default-toolbar-small-icon-text-left .x-btn-inner{height:16px;line-height:16px;padding-left:20px}.x-reset .x-btn-default-toolbar-small-icon-text-left .x-btn-icon{width:16px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-reset .x-btn-default-toolbar-small-icon-text-left .x-btn-icon,.x-quirks .x-reset .x-btn-default-toolbar-small-icon-text-left .x-btn-icon{height:16px}.x-reset .x-btn-default-toolbar-small-icon-text-right button,.x-reset .x-btn-default-toolbar-small-icon-text-right a{height:16px}.x-reset .x-btn-default-toolbar-small-icon-text-right .x-btn-inner{height:16px;line-height:16px;padding-right:20px!important}.x-reset .x-btn-default-toolbar-small-icon-text-right .x-btn-icon{width:16px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-small-icon-text-right .x-btn-icon,.x-quirks .x-reset .x-btn-default-toolbar-small-icon-text-right .x-btn-icon{height:16px}.x-reset .x-btn-default-toolbar-small-icon-text-top .x-btn-inner{padding-top:20px}.x-reset .x-btn-default-toolbar-small-icon-text-top .x-btn-icon{width:auto;height:16px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-small-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-toolbar-small-icon-text-top .x-btn-icon{width:16px}.x-reset .x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-reset .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon{width:auto;height:16px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon{width:16px}.x-reset .x-btn-default-toolbar-small-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-reset .x-btn-default-toolbar-small-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-reset .x-btn-default-toolbar-small-menu-active,.x-reset .x-btn-default-toolbar-small-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-ms-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-reset .x-btn-default-toolbar-small-disabled{background-image:none;background-color:transparent}.x-reset .x-btn-default-toolbar-small-disabled .x-btn-inner{color:#333!important}.x-reset .x-ie .x-btn-default-toolbar-small-disabled .x-btn-inner{color:#595959!important}.x-reset .x-ie6 .x-btn-default-toolbar-small-disabled .x-btn-inner{color:#8c8c8c!important}.x-reset .x-nlg .x-btn-default-toolbar-small-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif')}.x-reset .x-nlg .x-btn-default-toolbar-small-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif')}.x-reset .x-nlg .x-btn-default-toolbar-small-menu-active,.x-reset .x-nlg .x-btn-default-toolbar-small-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif')}.x-reset .x-btn-default-toolbar-medium{border-color:transparent}.x-reset .x-btn-default-toolbar-medium{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-reset .x-nlg .x-btn-default-toolbar-medium-mc{background-color:transparent}.x-reset .x-btn-default-toolbar-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-reset .x-btn-default-toolbar-medium-icon button,.x-reset .x-btn-default-toolbar-medium-icon a,.x-reset .x-btn-default-toolbar-medium-icon .x-btn-inner,.x-reset .x-btn-default-toolbar-medium-noicon button,.x-reset .x-btn-default-toolbar-medium-noicon a,.x-reset .x-btn-default-toolbar-medium-noicon .x-btn-inner{height:24px;line-height:24px}.x-reset .x-btn-default-toolbar-medium-icon button,.x-reset .x-btn-default-toolbar-medium-icon a{padding:0}.x-reset .x-btn-default-toolbar-medium-icon .x-btn-inner{width:24px;padding:0}.x-reset .x-btn-default-toolbar-medium-icon .x-btn-icon{width:24px;height:24px;top:0;left:0;bottom:0;right:0}.x-reset .x-btn-default-toolbar-medium-icon-text-left button,.x-reset .x-btn-default-toolbar-medium-icon-text-left a{height:24px}.x-reset .x-btn-default-toolbar-medium-icon-text-left .x-btn-inner{height:24px;line-height:24px;padding-left:28px}.x-reset .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon{width:24px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-reset .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon,.x-quirks .x-reset .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon{height:24px}.x-reset .x-btn-default-toolbar-medium-icon-text-right button,.x-reset .x-btn-default-toolbar-medium-icon-text-right a{height:24px}.x-reset .x-btn-default-toolbar-medium-icon-text-right .x-btn-inner{height:24px;line-height:24px;padding-right:28px!important}.x-reset .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon{width:24px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon,.x-quirks .x-reset .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon{height:24px}.x-reset .x-btn-default-toolbar-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-reset .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon{width:auto;height:24px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon{width:24px}.x-reset .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-reset .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon{width:auto;height:24px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon{width:24px}.x-reset .x-btn-default-toolbar-medium-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-reset .x-btn-default-toolbar-medium-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-reset .x-btn-default-toolbar-medium-menu-active,.x-reset .x-btn-default-toolbar-medium-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-ms-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-reset .x-btn-default-toolbar-medium-disabled{background-image:none;background-color:transparent}.x-reset .x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#333!important}.x-reset .x-ie .x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#595959!important}.x-reset .x-ie6 .x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#8c8c8c!important}.x-reset .x-nlg .x-btn-default-toolbar-medium-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif')}.x-reset .x-nlg .x-btn-default-toolbar-medium-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif')}.x-reset .x-nlg .x-btn-default-toolbar-medium-menu-active,.x-reset .x-nlg .x-btn-default-toolbar-medium-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif')}.x-reset .x-btn-default-toolbar-large{border-color:transparent}.x-reset .x-btn-default-toolbar-large{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-reset .x-nlg .x-btn-default-toolbar-large-mc{background-color:transparent}.x-reset .x-btn-default-toolbar-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-reset .x-btn-default-toolbar-large-icon button,.x-reset .x-btn-default-toolbar-large-icon a,.x-reset .x-btn-default-toolbar-large-icon .x-btn-inner,.x-reset .x-btn-default-toolbar-large-noicon button,.x-reset .x-btn-default-toolbar-large-noicon a,.x-reset .x-btn-default-toolbar-large-noicon .x-btn-inner{height:32px;line-height:32px}.x-reset .x-btn-default-toolbar-large-icon button,.x-reset .x-btn-default-toolbar-large-icon a{padding:0}.x-reset .x-btn-default-toolbar-large-icon .x-btn-inner{width:32px;padding:0}.x-reset .x-btn-default-toolbar-large-icon .x-btn-icon{width:32px;height:32px;top:0;left:0;bottom:0;right:0}.x-reset .x-btn-default-toolbar-large-icon-text-left button,.x-reset .x-btn-default-toolbar-large-icon-text-left a{height:32px}.x-reset .x-btn-default-toolbar-large-icon-text-left .x-btn-inner{height:32px;line-height:32px;padding-left:36px}.x-reset .x-btn-default-toolbar-large-icon-text-left .x-btn-icon{width:32px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-reset .x-btn-default-toolbar-large-icon-text-left .x-btn-icon,.x-quirks .x-reset .x-btn-default-toolbar-large-icon-text-left .x-btn-icon{height:32px}.x-reset .x-btn-default-toolbar-large-icon-text-right button,.x-reset .x-btn-default-toolbar-large-icon-text-right a{height:32px}.x-reset .x-btn-default-toolbar-large-icon-text-right .x-btn-inner{height:32px;line-height:32px;padding-right:36px!important}.x-reset .x-btn-default-toolbar-large-icon-text-right .x-btn-icon{width:32px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-large-icon-text-right .x-btn-icon,.x-quirks .x-reset .x-btn-default-toolbar-large-icon-text-right .x-btn-icon{height:32px}.x-reset .x-btn-default-toolbar-large-icon-text-top .x-btn-inner{padding-top:36px}.x-reset .x-btn-default-toolbar-large-icon-text-top .x-btn-icon{width:auto;height:32px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-large-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-toolbar-large-icon-text-top .x-btn-icon{width:32px}.x-reset .x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-reset .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon{width:auto;height:32px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-reset .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-reset .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon{width:32px}.x-reset .x-btn-default-toolbar-large-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-reset .x-btn-default-toolbar-large-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-reset .x-btn-default-toolbar-large-menu-active,.x-reset .x-btn-default-toolbar-large-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-ms-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-reset .x-btn-default-toolbar-large-disabled{background-image:none;background-color:transparent}.x-reset .x-btn-default-toolbar-large-disabled .x-btn-inner{color:#333!important}.x-reset .x-ie .x-btn-default-toolbar-large-disabled .x-btn-inner{color:#595959!important}.x-reset .x-ie6 .x-btn-default-toolbar-large-disabled .x-btn-inner{color:#8c8c8c!important}.x-reset .x-nlg .x-btn-default-toolbar-large-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif')}.x-reset .x-nlg .x-btn-default-toolbar-large-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif')}.x-reset .x-nlg .x-btn-default-toolbar-large-menu-active,.x-reset .x-nlg .x-btn-default-toolbar-large-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif')}.x-reset .x-btn-default-toolbar-small-disabled,.x-reset .x-btn-default-toolbar-medium-disabled,.x-reset .x-btn-default-toolbar-large-disabled{border-color:transparent;background-image:none;background:transparent}.x-reset .x-btn-group{position:relative;overflow:hidden}.x-reset .x-btn-group-body{position:relative;zoom:1;padding:0 1px}.x-reset .x-btn-group-body .x-table-layout-cell{vertical-align:top}.x-reset .x-btn-group-header-text{white-space:nowrap}.x-reset .x-btn-group-default-framed{-moz-border-radius:2px;-webkit-border-radius:2px;-o-border-radius:2px;-ms-border-radius:2px;-khtml-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#d0def0}.x-reset .x-nlg .x-btn-group-default-framed-mc{background-color:#d0def0}.x-reset .x-btn-group-default-framed{border-color:#b7c8d7;-moz-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-webkit-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-o-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset}.x-reset .x-btn-group-header-default-framed{margin:2px 2px 0 2px}.x-reset .x-btn-group-header-body-default-framed{padding:1px 0;background:#c2d8f0;-moz-border-radius-topleft:2px;-webkit-border-top-left-radius:2px;-o-border-top-left-radius:2px;-ms-border-top-left-radius:2px;-khtml-border-top-left-radius:2px;border-top-left-radius:2px;-moz-border-radius-topright:2px;-webkit-border-top-right-radius:2px;-o-border-top-right-radius:2px;-ms-border-top-right-radius:2px;-khtml-border-top-right-radius:2px;border-top-right-radius:2px}.x-reset .x-btn-group-header-text-default-framed{font:normal 11px tahoma,arial,verdana,sans-serif;color:#3e6aaa}.x-reset .x-datepicker{border:1px solid #1b376c;background-color:white;position:relative}.x-reset .x-datepicker a{-moz-outline:0 none;outline:0 none;color:#15428b;text-decoration:none;border-width:0}.x-reset .x-datepicker-inner,.x-reset .x-datepicker-inner td,.x-reset .x-datepicker-inner th{border-collapse:separate}.x-reset .x-datepicker-header{position:relative;height:26px;background-image:none;background-color:#23427c;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#264888),color-stop(100%,#1f3a6c));background-image:-webkit-linear-gradient(top,#264888,#1f3a6c);background-image:-moz-linear-gradient(top,#264888,#1f3a6c);background-image:-o-linear-gradient(top,#264888,#1f3a6c);background-image:-ms-linear-gradient(top,#264888,#1f3a6c);background-image:linear-gradient(top,#264888,#1f3a6c)}.x-reset .x-datepicker-prev,.x-reset .x-datepicker-next{position:absolute;top:5px;width:18px}.x-reset .x-datepicker-prev a,.x-reset .x-datepicker-next a{display:block;width:16px;height:16px;background-position:top;background-repeat:no-repeat;cursor:pointer;text-decoration:none!important;filter:alpha(opacity=70);opacity:.7}.x-reset .x-datepicker-prev a:hover,.x-reset .x-datepicker-next a:hover{filter:alpha(opacity=100);opacity:1}.x-reset .x-datepicker-next{right:5px}.x-reset .x-datepicker-next a{background-image:url('../../resources/themes/images/default/shared/right-btn.gif')}.x-reset .x-datepicker-prev{left:5px}.x-reset .x-datepicker-prev a{background-image:url('../../resources/themes/images/default/shared/left-btn.gif')}.x-reset .x-item-disabled .x-datepicker-prev a:hover,.x-reset .x-item-disabled .x-datepicker-next a:hover{filter:alpha(opacity=60);opacity:.6}.x-reset .x-datepicker-month{padding-top:3px}.x-reset .x-datepicker-month .x-btn,.x-reset .x-datepicker-month button,.x-reset .x-datepicker-month .x-btn-tc,.x-reset .x-datepicker-month .x-btn-tl,.x-reset .x-datepicker-month .x-btn-tr,.x-reset .x-datepicker-month .x-btn-mc,.x-reset .x-datepicker-month .x-btn-ml,.x-reset .x-datepicker-month .x-btn-mr,.x-reset .x-datepicker-month .x-btn-bc,.x-reset .x-datepicker-month .x-btn-bl,.x-reset .x-datepicker-month .x-btn-br{background:transparent!important;border-width:0!important}.x-reset .x-datepicker-month span{color:#fff!important}.x-reset .x-datepicker-month .x-btn-split-right{background-image:url('../../resources/themes/images/default/button/s-arrow-light.gif');padding-right:12px}.x-reset .x-datepicker-next{text-align:right}.x-reset .x-datepicker-month{text-align:center}.x-reset .x-datepicker-month button{color:white!important}.x-reset table.x-datepicker-inner{width:100%;table-layout:fixed}.x-reset table.x-datepicker-inner th{width:25px;height:19px;padding:0;color:#233d6d;font:normal 10px tahoma,arial,verdana,sans-serif;text-align:right;border-bottom:1px solid #b2d1f5;border-collapse:separate;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#edf4fd),color-stop(100%,#cde1f9));background-image:-webkit-linear-gradient(top,#edf4fd,#cde1f9);background-image:-moz-linear-gradient(top,#edf4fd,#cde1f9);background-image:-o-linear-gradient(top,#edf4fd,#cde1f9);background-image:-ms-linear-gradient(top,#edf4fd,#cde1f9);background-image:linear-gradient(top,#edf4fd,#cde1f9);cursor:default}.x-reset table.x-datepicker-inner th span{display:block;padding-right:7px}.x-reset table.x-datepicker-inner tr{height:20px}.x-reset table.x-datepicker-inner td{border:1px solid;height:17px;border-color:white;text-align:right;padding:0}.x-reset table.x-datepicker-inner a{padding-right:4px;display:block;zoom:1;font:normal 11px tahoma,arial,verdana,sans-serif;color:black;text-decoration:none;text-align:right}.x-reset table.x-datepicker-inner .x-datepicker-active{cursor:pointer;color:black}.x-reset table.x-datepicker-inner .x-datepicker-selected a{background:repeat-x left top;background-color:#dae5f3;border:1px solid #8db2e3}.x-reset table.x-datepicker-inner .x-datepicker-selected span{font-weight:bold}.x-reset table.x-datepicker-inner .x-datepicker-today a{border:1px solid;border-color:darkred}.x-reset table.x-datepicker-inner .x-datepicker-prevday a,.x-reset table.x-datepicker-inner .x-datepicker-nextday a{text-decoration:none!important;color:#aaa}.x-reset table.x-datepicker-inner a:hover,.x-reset table.x-datepicker-inner .x-datepicker-disabled a:hover{text-decoration:none!important;color:#000;background-color:#ddecfe}.x-reset table.x-datepicker-inner .x-datepicker-disabled a{cursor:default;background-color:#eee;color:#bbb}.x-reset .x-datepicker-footer,.x-reset .x-monthpicker-buttons{position:relative;border-top:1px solid #b2d1f5;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dee8f5),color-stop(49%,#d1dff0),color-stop(51%,#c7d8ed),color-stop(100%,#cbdaee));background-image:-webkit-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-moz-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-o-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-ms-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);text-align:center}.x-reset .x-datepicker-footer .x-btn,.x-reset .x-monthpicker-buttons .x-btn{position:relative;margin:4px}.x-reset .x-item-disabled .x-datepicker-inner a:hover{background:0}.x-reset .x-datepicker .x-monthpicker{position:absolute;left:0;top:0}.x-reset .x-monthpicker{border:1px solid #1b376c;background-color:white}.x-reset .x-monthpicker-months,.x-reset .x-monthpicker-years{float:left;height:167px;width:88px}.x-reset .x-monthpicker-item{float:left;margin:4px 0 5px 0;font:normal 11px tahoma,arial,verdana,sans-serif;text-align:center;vertical-align:middle;height:18px;width:43px;border:0 none}.x-reset .x-monthpicker-item a{display:block;margin:0 5px;text-decoration:none;color:#15428b;border:1px solid white;line-height:17px}.x-reset .x-monthpicker-item a:hover{background-color:#ddecfe}.x-reset .x-monthpicker-item a.x-monthpicker-selected{background-color:#dfecfb;border:1px solid #8db2e3}.x-reset .x-monthpicker-months{border-right:1px solid #1b376c;width:87px}.x-reset .x-monthpicker-years .x-monthpicker-item{width:44px}.x-reset .x-monthpicker-yearnav{height:28px}.x-reset .x-monthpicker-yearnav button{background-image:url('../../resources/themes/images/default/tools/tool-sprites.gif');height:15px;width:15px;padding:0;margin:6px 12px 5px 15px;border:0;outline:0 none}.x-reset .x-monthpicker-yearnav button::-moz-focus-inner{border:0;padding:0}.x-reset .x-monthpicker-yearnav-next{background-position:0 -120px}.x-reset .x-monthpicker-yearnav-next-over{cursor:pointer;cursor:hand;background-position:-15px -120px}.x-reset .x-monthpicker-yearnav-prev{background-position:0 -105px}.x-reset .x-monthpicker-yearnav-prev-over{cursor:pointer;cursor:hand;background-position:-15px -105px}.x-reset .x-monthpicker-small .x-monthpicker-item{margin:2px 0 2px 0}.x-reset .x-monthpicker-small .x-monthpicker-yearnav{height:23px}.x-reset .x-monthpicker-small .x-monthpicker-months,.x-reset .x-monthpicker-small .x-monthpicker-years{height:136px}.x-reset .x-nlg .x-datepicker-header{background-image:url('../../resources/themes/images/default/datepicker/datepicker-header-bg.gif');background-repeat:repeat-x;background-position:top left}.x-reset .x-nlg .x-datepicker-footer,.x-reset .x-nlg .x-monthpicker-buttons{background-image:url('../../resources/themes/images/default/datepicker/datepicker-footer-bg.gif');background-repeat:repeat-x;background-position:top left}.x-reset .x-color-picker{width:144px;height:90px;cursor:pointer}.x-reset .x-color-picker a{border:1px solid #fff;float:left;padding:2px;text-decoration:none;-moz-outline:0 none;outline:0 none;cursor:pointer}.x-reset .x-color-picker a:hover,.x-reset .x-color-picker a.x-color-picker-selected{border-color:#8bb8f3;background-color:#deecfd}.x-reset .x-color-picker em{display:block;border:1px solid #aca899}.x-reset .x-color-picker em span{cursor:pointer;display:block;height:10px;width:10px;line-height:10px}.x-reset .x-menu-body{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;background:#f0f0f0!important;padding:2px}.x-reset .x-menu-item .x-form-text{user-select:text;-webkit-user-select:text;-o-user-select:text;-ie-user-select:text;-moz-user-select:text;-ie-user-select:text}.x-reset .x-menu-icon-separator{position:absolute;top:0;left:27px;z-index:0;border-left:solid 1px #e0e0e0;background-color:white;width:2px;overflow:hidden}.x-reset .x-menu-plain .x-menu-icon-separator{display:none}.x-reset .x-menu-focus{display:block;position:absolute;top:-10px;left:-10px;width:0;height:0}.x-reset .x-menu-item{white-space:nowrap;overflow:hidden;z-index:1}.x-reset .x-menu-item-cmp{margin-bottom:1px}.x-reset .x-menu-item-link{display:block;margin:1px;padding:6px 2px 3px 32px;text-decoration:none!important;line-height:16px;cursor:default}.x-reset .x-opera .x-menu-item-link{position:relative}.x-reset .x-menu-item-icon{width:16px;height:16px;position:absolute;top:5px;left:4px;background:no-repeat center center}.x-reset .x-menu-item-icon-right{width:16px;height:16px;position:absolute;top:6px;right:4px;background:no-repeat center center}.x-reset .x-menu-item-text{font-size:11px;color:#222}.x-reset .x-menu-item-checked .x-menu-item-icon{background-image:url('../../resources/themes/images/default/menu/checked.gif')}.x-reset .x-menu-item-checked .x-menu-group-icon{background-image:url('../../resources/themes/images/default/menu/group-checked.gif')}.x-reset .x-menu-item-unchecked .x-menu-item-icon{background-image:url('../../resources/themes/images/default/menu/unchecked.gif')}.x-reset .x-menu-item-unchecked .x-menu-group-icon{background-image:none}.x-reset .x-menu-item-separator{height:2px;border-top:solid 1px #e0e0e0;background-color:white;margin:2px 0;overflow:hidden}.x-reset .x-menu-item-arrow{position:absolute;width:12px;height:9px;top:9px;right:0;background:no-repeat center center;background-image:url('../../resources/themes/images/default/menu/menu-parent.gif')}.x-reset .x-menu-item-indent{margin-left:31px}.x-reset .x-menu-item-active{cursor:pointer}.x-reset .x-menu-item-active .x-menu-item-link{background-image:none;background-color:#d9e8fb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e7f0fc),color-stop(100%,#c7ddf9));background-image:-webkit-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-moz-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-o-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-ms-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:linear-gradient(top,#e7f0fc,#c7ddf9);margin:0;border:1px solid #a9cbf5;cursor:pointer;-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px}.x-reset .x-menu-item-disabled{filter:alpha(opacity=50);opacity:.5}.x-reset .x-nlg .x-menu-item-active .x-menu-item-link{background:#d9e8fb repeat-x left top;background-image:url('../../resources/themes/images/default/menu/menu-item-active-bg.gif')}.x-reset .x-menu-date-item{border-color:#99bbe8}.x-reset .x-panel .x-grid-body{background:white;border-color:#99bce8;border-style:solid;border-width:1px;border-top-color:#c5c5c5}.x-reset .x-panel .x-grid-header-ct-hidden{visibility:hidden}.x-reset .x-grid-empty{padding:10px;color:gray;font:normal 11px tahoma,arial,helvetica,sans-serif}.x-reset .x-grid-header-hidden .x-grid-body{border-top-color:#99bce8!important}.x-reset .x-grid-view{overflow:hidden;position:relative}.x-reset .x-grid-table{table-layout:fixed;border-collapse:separate}.x-reset .x-autowidth-table table.x-grid-table{table-layout:auto;width:auto!important}.x-reset .x-grid-row .x-grid-table{border-collapse:collapse}.x-reset .x-grid-locked .x-grid-inner-locked{border-width:0 1px 0 0!important;border-style:solid}.x-reset .x-grid-header-ct{cursor:default;zoom:1;padding:0;border:1px solid #99bce8;border-bottom-color:#c5c5c5}.x-reset .x-accordion-item .x-grid-header-ct{border-width:0 0 1px 0!important}.x-reset .x-column-header{padding:0;position:absolute;overflow:hidden;border-right:1px solid #c5c5c5;border-left:0 none;border-top:0 none;border-bottom:0 none;text-shadow:0 1px 0 rgba(255,255,255,0.3);color:null;font:normal 11px tahoma,arial,verdana,sans-serif}.x-reset .x-group-header{padding:0;border-left-width:0}.x-reset .x-group-sub-header{background:transparent;border-top:1px solid #c5c5c5;border-left-width:0}.x-reset .x-column-header-inner{zoom:1;position:relative;white-space:nowrap;line-height:15px;padding:3px 6px 4px}.x-reset .x-column-header-inner .x-column-header-text{white-space:nowrap}.x-reset .x-column-header-over,.x-reset .x-column-header-sort-ASC,.x-reset .x-column-header-sort-DESC{border-left-color:#aaccf6;border-right-color:#aaccf6}.x-reset .x-nlg .x-grid-header-ct,.x-reset .x-nlg .x-column-header{background:repeat-x 0 top;background-image:url('../../resources/themes/images/default/grid/column-header-bg.gif')}.x-reset .x-nlg .x-column-header-over,.x-reset .x-nlg .x-column-header-sort-ASC,.x-reset .x-nlg .x-column-header-sort-DESC{background:#ebf3fd repeat-x 0 top;background-image:url('../../resources/themes/images/default/grid/column-header-over-bg.gif')}.x-reset .x-column-header-trigger{display:none;height:100%;width:14px;background:no-repeat left center;background-color:#c3daf9;background-image:url('../../resources/themes/images/default/grid/grid3-hd-btn.gif');position:absolute;right:0;top:0;z-index:2;cursor:pointer}.x-reset .x-column-header-over .x-column-header-trigger,.x-reset .x-column-header-open .x-column-header-trigger{display:block}.x-reset .x-column-header-align-right{text-align:right}.x-reset .x-column-header-align-right .x-column-header-text{padding-right:.5ex;margin-right:6px}.x-reset .x-column-header-align-center{text-align:center}.x-reset .x-column-header-align-left{text-align:left}.x-reset .x-column-header-sort-ASC .x-column-header-text{padding-right:16px;background:no-repeat right 6px;background-image:url('../../resources/themes/images/default/grid/sort_asc.gif')}.x-reset .x-column-header-sort-DESC .x-column-header-text{padding-right:16px;background:no-repeat right 6px;background-image:url('../../resources/themes/images/default/grid/sort_desc.gif')}.x-reset .x-grid-row{vertical-align:top}.x-reset .x-grid-row .x-grid-cell{color:null;font:normal 11px/15px tahoma,arial,verdana,sans-serif;background-color:white;border-color:#ededed;border-style:solid;border-top-color:#fafafa;border-width:0}.x-reset .x-grid-with-row-lines .x-grid-cell{border-width:1px 0}.x-reset .x-grid-rowwrap-div{border-width:1px 0;border-color:#ededed;border-style:solid;border-top-color:#fafafa;overflow:hidden}.x-reset .x-grid-row-alt .x-grid-cell,.x-reset .x-grid-row-alt .x-grid-rowwrap-div{background-color:#fafafa}.x-reset .x-grid-row-over .x-grid-cell,.x-reset .x-grid-row-over .x-grid-rowwrap-div{border-color:#ddd;background-color:#efefef}.x-reset .x-grid-row-focused .x-grid-cell,.x-reset .x-grid-row-focused .x-grid-rowwrap-div{border-color:#ddd;background-color:#efefef}.x-reset .x-grid-row-selected .x-grid-cell,.x-reset .x-grid-row-selected .x-grid-rowwrap-div{border-style:dotted;border-color:#a3bae9;background-color:#dfe8f6!important}.x-reset .x-grid-rowwrap-div .x-grid-cell,.x-reset .x-grid-rowwrap-div .x-grid-cell-inner{border-width:0;background:transparent}.x-reset .x-grid-row-body-hidden{display:none}.x-reset .x-grid-rowbody{font:normal 11px/13px tahoma,arial,verdana,sans-serif;padding:4px}.x-reset .x-grid-rowbody p{margin:5px 5px 10px 5px}.x-reset .x-grid-cell{overflow:hidden}.x-reset .x-grid-cell-inner{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding:2px 6px 3px;white-space:nowrap}.x-reset .x-grid-with-row-lines .x-grid-cell-inner{line-height:13px;padding-bottom:4px}.x-reset .x-action-col-cell .x-grid-cell-inner{line-height:0;padding:2px}.x-reset .x-action-col-cell .x-item-disabled{filter:alpha(opacity=30);opacity:.3}.x-reset .x-grid-with-row-lines .x-action-col-cell .x-grid-cell-inner{padding-top:1px}.x-reset .x-grid-row .x-grid-cell-special{padding:0;border-right:1px solid #d0d0d0;background-image:none;background-color:#f6f6f6;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#f6f6f6),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-moz-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-o-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-ms-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:linear-gradient(left,#f6f6f6,#e9e9e9)}.x-reset .x-grid-row .x-grid-cell-row-checker{vertical-align:middle}.x-reset .x-ie6 .x-grid-header-row,.x-reset .x-ie7 .x-grid-header-row,.x-reset .x-quirks .x-ie8 .x-grid-header-row{position:absolute}.x-reset .x-grid-row-selected .x-grid-cell-special{border-right:1px solid #aaccf6;background-image:none;background-color:#dfe8f6;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dfe8f6),color-stop(100%,#cbdaf0));background-image:-webkit-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-moz-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-o-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-ms-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:linear-gradient(left,#dfe8f6,#cbdaf0)}.x-reset .x-grid-dirty-cell{background-image:url('../../resources/themes/images/default/grid/dirty.gif');background-position:0 0;background-repeat:no-repeat}.x-reset .x-grid-cell-selected{background-color:#b8cfee!important}.x-reset .x-nlg .x-grid-cell-special{background-repeat:repeat-y;background-position:top right}.x-reset .x-nlg .x-grid-row .x-grid-cell-special,.x-reset .x-nlg .x-grid-row-over .x-grid-cell-special{background-image:url('../../resources/themes/images/default/grid/cell-special-bg.gif')}.x-reset .x-nlg .x-grid-row-focused .x-grid-cell-special,.x-reset .x-nlg .x-grid-row-selected .x-grid-cell-special{background-image:url('../../resources/themes/images/default/grid/cell-special-selected-bg.gif')}.x-reset .x-grid-with-col-lines .x-grid-cell{padding-right:0;border-right:1px solid #d0d0d0}.x-reset .x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,.x-reset .x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner{padding-left:12px;background-image:url('../../resources/themes/images/default/grid/property-cell-bg.gif');background-repeat:no-repeat;background-position:-16px 2px}.x-reset .x-grid-with-row-lines.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,.x-reset .x-grid-with-row-lines.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner{background-position:-16px 1px}.x-reset .x-unselectable{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-reset .x-grid-row-body-hidden{display:none}.x-reset .x-grid-group-collapsed{display:none}.x-reset .x-grid-view .x-grid-td-expander{vertical-align:top}.x-reset .x-grid-td-expander{background:repeat-y right transparent}.x-reset .x-grid-view .x-grid-td-expander .x-grid-cell-inner{padding:0!important}.x-reset .x-grid-row-expander{background-image:url('../../resources/themes/images/default/grid/group-collapse.gif');background-color:transparent;width:9px;height:13px;margin-left:3px;background-repeat:no-repeat;background-position:0 -2px}.x-reset .x-grid-row-collapsed .x-grid-row-expander{background-image:url('../../resources/themes/images/default/grid/group-expand.gif')}.x-reset .x-grid-resize-marker{position:absolute;z-index:5;top:0;width:1px;background-color:#0f0f0f}.x-reset .col-move-top,.x-reset .col-move-bottom{width:9px;height:9px;position:absolute;top:0;line-height:0;font-size:0;overflow:hidden;z-index:20000;background:no-repeat left top transparent}.x-reset .col-move-top{background-image:url('../../resources/themes/images/default/grid/col-move-top.gif')}.x-reset .col-move-bottom{background-image:url('../../resources/themes/images/default/grid/col-move-bottom.gif')}.x-reset .x-tbar-page-number{width:30px}.x-reset .x-grid-group,.x-reset .x-grid-group-body,.x-reset .x-grid-group-hd{zoom:1}.x-reset .x-grid-group-hd{padding-top:6px}.x-reset .x-grid-group-hd .x-grid-cell-inner{padding:10px 4px 4px 4px;background:white;border-width:0 0 2px 0;border-style:solid;border-color:#99bbe8;cursor:pointer}.x-reset .x-grid-group-hd-collapsible .x-grid-group-title{background:transparent no-repeat 0 -1px;background-image:url('../../resources/themes/images/default/grid/group-collapse.gif');padding:0 0 0 14px}.x-reset .x-grid-group-title{color:#3764a0;font:bold 11px tahoma,arial,verdana,sans-serif}.x-reset .x-grid-group-hd-collapsed .x-grid-group-title{background-image:url('../../resources/themes/images/default/grid/group-expand.gif')}.x-reset .x-grid-group-collapsed .x-grid-group-body{display:none}.x-reset .x-grid-group-collapsed .x-grid-group-title{background-image:url('../../resources/themes/images/default/grid/group-expand.gif')}.x-reset .x-group-by-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x-reset .x-show-groups-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x-reset .x-column-header-checkbox .x-column-header-inner{padding:0}.x-reset .x-grid-cell-special .x-grid-cell-inner{padding-left:4px;padding-right:4px}.x-reset .x-grid-row-checker,.x-reset .x-column-header-checkbox .x-column-header-text{height:14px;width:14px;line-height:0;background-image:url('../../resources/themes/images/default/grid/unchecked.gif');background-position:-1px -1px;background-repeat:no-repeat;background-color:transparent}.x-reset .x-column-header-checkbox .x-column-header-text{display:block;margin:0 5px}.x-reset .x-grid-hd-checker-on .x-column-header-text{background-image:url('../../resources/themes/images/default/grid/checked.gif')}.x-reset .x-grid-cell-row-checker .x-grid-cell-inner{padding-top:4px;padding-bottom:2px;line-height:14px}.x-reset .x-grid-with-row-lines .x-grid-cell-row-checker .x-grid-cell-inner{padding-top:3px}.x-reset .x-grid-row-checker{margin-left:1px;background-position:50% -2px}.x-reset .x-grid-row-selected .x-grid-row-checker,.x-reset .x-grid-row-checked .x-grid-row-checker{background-image:url('../../resources/themes/images/default/grid/checked.gif')}.x-reset .x-tbar-page-first{background-image:url('../../resources/themes/images/default/grid/page-first.gif')!important}.x-reset .x-tbar-loading{background-image:url('../../resources/themes/images/default/grid/refresh.gif')!important}.x-reset .x-tbar-page-last{background-image:url('../../resources/themes/images/default/grid/page-last.gif')!important}.x-reset .x-tbar-page-next{background-image:url('../../resources/themes/images/default/grid/page-next.gif')!important}.x-reset .x-tbar-page-prev{background-image:url('../../resources/themes/images/default/grid/page-prev.gif')!important}.x-reset .x-item-disabled .x-tbar-loading{background-image:url('../../resources/themes/images/default/grid/refresh-disabled.gif')!important}.x-reset .x-item-disabled .x-tbar-page-first{background-image:url('../../resources/themes/images/default/grid/page-first-disabled.gif')!important}.x-reset .x-item-disabled .x-tbar-page-last{background-image:url('../../resources/themes/images/default/grid/page-last-disabled.gif')!important}.x-reset .x-item-disabled .x-tbar-page-next{background-image:url('../../resources/themes/images/default/grid/page-next-disabled.gif')!important}.x-reset .x-item-disabled .x-tbar-page-prev{background-image:url('../../resources/themes/images/default/grid/page-prev-disabled.gif')!important}.x-reset .x-hmenu-sort-asc .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-asc.gif')}.x-reset .x-hmenu-sort-desc .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-desc.gif')}.x-reset .x-hmenu-lock .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-lock.gif')}.x-reset .x-hmenu-unlock .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-unlock.gif')}.x-reset .x-group-by-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x-reset .x-cols-icon .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/columns.gif')}.x-reset .x-show-groups-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x-reset .x-grid-drop-indicator{position:absolute;height:1px;line-height:0;background-color:#77bc71;overflow:visible}.x-reset .x-grid-drop-indicator .x-grid-drop-indicator-left{position:absolute;top:-8px;left:-12px;background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-right.png');height:16px;width:16px}.x-reset .x-grid-drop-indicator .x-grid-drop-indicator-right{position:absolute;top:-8px;right:-11px;background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-left.png');height:16px;width:16px}.x-reset .x-ie6 .x-grid-drop-indicator-left{background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-right.gif')}.x-reset .x-ie6 .x-grid-drop-indicator-right{background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-left.gif')}.x-reset .x-grid-editor .x-form-text{padding:0 4px}.x-reset .x-grid-editor .x-form-cb-wrap{padding-top:3px}.x-reset .x-grid-row-editor{position:absolute!important;z-index:1;zoom:1;overflow:visible!important}.x-reset .x-grid-row-editor .x-form-text{padding:0 2px}.x-reset .x-grid-row-editor .x-form-cb-wrap{padding-top:0}.x-reset .x-grid-row-editor .x-form-checkbox{margin-left:-4px}.x-reset .x-grid-row-editor .x-form-display-field{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding-top:0;padding-left:2px}.x-reset .x-grid-row-editor .x-panel-body{background-color:#eaf1fb;border-top:1px solid #99bce8!important;border-bottom:1px solid #99bce8!important}.x-reset .x-grid-editor .x-form-cb-wrap,.x-reset .x-grid-row-editor .x-form-cb-wrap{text-align:center}.x-reset .x-grid-editor .x-form-trigger,.x-reset .x-grid-row-editor .x-form-trigger{height:19px}.x-reset .x-grid-editor .x-form-trigger-wrap .x-form-spinner-up,.x-reset .x-grid-editor .x-form-trigger-wrap .x-form-spinner-down,.x-reset .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-up,.x-reset .x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-down{background-image:url('../../resources/themes/images/default/form/spinner-small.gif');height:10px!important}.x-reset .x-grid-editor .x-form-text,.x-reset .x-grid-row-editor .x-form-text{font:normal 11px/15px tahoma,arial,verdana,sans-serif;height:18px}.x-reset .x-border-box .x-grid-editor .x-form-trigger,.x-reset .x-border-box .x-grid-row-editor .x-form-trigger{height:20px}.x-reset .x-border-box .x-grid-editor .x-form-text,.x-reset .x-border-box .x-grid-row-editor .x-form-text{height:20px;padding-bottom:1px}.x-reset .x-opera .x-grid-editor .x-form-text{padding-left:5px}.x-reset .x-opera .x-grid-row-editor .x-form-text{padding-left:3px}.x-reset .x-grid-row-editor-buttons{background-color:#eaf1fb;position:absolute;bottom:-31px;padding:4px;height:32px}.x-strict .x-ie7m .x-reset .x-grid-row-editor-buttons{width:192px;height:24px}.x-reset .x-grid-row-editor-buttons-ml,.x-reset .x-grid-row-editor-buttons-mr,.x-reset .x-grid-row-editor-buttons-bl,.x-reset .x-grid-row-editor-buttons-br,.x-reset .x-grid-row-editor-buttons-bc{position:absolute;overflow:hidden}.x-reset .x-grid-row-editor-buttons-bl,.x-reset .x-grid-row-editor-buttons-br{width:4px;height:4px;bottom:0;background-image:url('../../resources/themes/images/default/panel/panel-default-framed-corners.gif')}.x-reset .x-grid-row-editor-buttons-bl{left:0;background-position:0 -16px}.x-reset .x-grid-row-editor-buttons-br{right:0;background-position:0 -20px}.x-reset .x-grid-row-editor-buttons-bc{position:absolute;left:4px;bottom:0;width:192px;height:1px;background-color:#99bce8}.x-reset .x-grid-row-editor-buttons-ml,.x-reset .x-grid-row-editor-buttons-mr{height:27px;width:1px;top:1px;background-color:#99bce8}.x-reset .x-grid-row-editor-buttons-ml{left:0}.x-reset .x-grid-row-editor-buttons-mr{background-position:0 -20px;right:0}.x-reset .x-grid-row-editor-errors ul{margin-left:5px}.x-reset .x-grid-row-editor-errors li{list-style:disc;margin-left:15px}.x-reset .x-webkit *:focus{outline:none!important}.x-reset .x-form-item{vertical-align:top;table-layout:fixed}.x-reset .x-autocontainer-form-item,.x-reset .x-anchor-form-item,.x-reset .x-vbox-form-item,.x-reset .x-checkboxgroup-form-item,.x-reset .x-table-form-item{margin-bottom:5px}.x-reset .x-form-layout-table{border-collapse:separate;border-spacing:0 2px}.x-reset .x-form-item-body{position:relative}.x-reset .x-form-form-item td{border-top:1px solid transparent}.x-reset .x-ie6 .x-form-layout-table{border-collapse:collapse;border-spacing:0}.x-reset .x-ie6 .x-form-form-item td{border-top-width:0}.x-reset .x-ie6 td.x-form-item-pad{height:5px}.x-reset .x-editor .x-form-item-body{padding-bottom:0}.x-reset .x-form-item-label{display:block;padding:3px 0 0;font-size:12px;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-reset .x-form-item-label-top{display:block;zoom:1;padding:0 0 5px 0}.x-reset .x-form-item-label-right{text-align:right}.x-reset .x-form-invalid-under{padding:2px 2px 2px 18px;color:#c0272b;font:normal 11px tahoma,arial,verdana,sans-serif;line-height:16px;background:no-repeat 0 2px;background-image:url('../../resources/themes/images/default/form/exclamation.gif')}.x-reset .x-form-invalid-icon{width:18px;height:14px;background:no-repeat center center;background-image:url('../../resources/themes/images/default/form/exclamation.gif');overflow:hidden}.x-reset .x-form-invalid-icon ul{display:block;width:18px}.x-reset .x-form-invalid-icon ul li{display:none}.x-reset .x-lbl-top-err-icon{margin-bottom:4px}.x-reset .x-form-field,.x-reset .x-form-display-field{margin:0;font:normal 12px tahoma,arial,verdana,sans-serif;color:black}.x-reset .x-form-item-hidden{margin:0}.x-reset .x-form-text,.x-reset textarea.x-form-field{padding:1px 3px;background:repeat-x 0 0;border:1px solid;background-color:white;background-image:url('../../resources/themes/images/default/form/text-bg.gif');border-color:#b5b8c8}.x-reset .x-form-text{height:18px;line-height:15px;vertical-align:top}.x-reset .x-ie8m .x-form-text{line-height:15px}.x-reset .x-border-box .x-form-text{height:22px}.x-reset textarea.x-form-field{color:black;overflow:auto;height:auto;line-height:normal;background:repeat-x 0 0;background-color:white;background-image:url('../../resources/themes/images/default/form/text-bg.gif');resize:none}.x-reset .x-border-box textarea.x-form-field{height:auto}.x-reset .x-safari.x-mac textarea.x-form-field{margin-bottom:-2px}.x-reset .x-form-focus,.x-reset textarea.x-form-focus{border-color:#7eadd9}.x-reset .x-form-invalid-field,.x-reset textarea.x-form-invalid-field{background-color:white;background-image:url('../../resources/themes/images/default/grid/invalid_line.gif');background-repeat:repeat-x;background-position:bottom;border-color:#c30}.x-reset .x-form-item{font:normal 12px tahoma,arial,verdana,sans-serif}.x-reset .x-form-empty-field,.x-reset textarea.x-form-empty-field{color:gray}.x-reset .x-webkit .x-form-empty-field{line-height:15px}.x-reset .x-form-display-field{padding-top:3px}.x-reset .x-field-default-toolbar .x-form-text{height:16px}.x-reset .x-border-box .x-field-default-toolbar .x-form-text{height:20px}.x-reset .x-field-default-toolbar .x-form-item-label-left{padding-left:4px}.x-reset .x-fieldset{border:1px solid #b5b8c8;padding:10px;margin-bottom:10px;display:block;position:relative}.x-reset .x-ie .x-fieldset{padding-top:0}.x-reset .x-ie .x-fieldset .x-fieldset-body{padding-top:10px}.x-reset .x-fieldset-header-checkbox{line-height:14px}.x-reset .x-fieldset-header{font:11px/14px bold tahoma,arial,verdana,sans-serif;color:#15428b;padding:0 3px 1px;overflow:hidden}.x-reset .x-fieldset-header .x-fieldset-header-text{float:left;padding:1px 0}.x-reset .x-fieldset-header .x-fieldset-header-text-collapsible{cursor:pointer}.x-reset .x-fieldset-header .x-form-item,.x-reset .x-fieldset-header .x-tool{float:left;margin:1px 0 0 0}.x-reset .x-fieldset-header .x-form-cb-wrap{padding:1px 0;font-size:0;line-height:0}.x-reset .x-fieldset-with-title .x-fieldset-header-checkbox,.x-reset .x-fieldset-with-title .x-tool{margin-right:3px}.x-reset .x-webkit .x-fieldset-header{-webkit-padding-start:3px;-webkit-padding-end:3px}.x-reset .x-opera .x-fieldset-with-legend{margin-top:-1px}.x-reset .x-opera.x-mac .x-fieldset-header-text{padding:2px 0 0}.x-reset .x-fieldset-collapsed .x-fieldset-body{display:none}.x-reset .x-fieldset-collapsed{padding-bottom:0!important;border-width:1px 1px 0 1px!important;border-left-color:transparent!important;border-right-color:transparent!important}.x-reset .x-fieldset{overflow:hidden}.x-reset .x-fieldset-bwrap{overflow:hidden;zoom:1}.x-reset .x-fieldset-body{overflow:hidden}.x-reset .x-form-file-wrap .x-form-text{color:#777}.x-reset .x-form-file-wrap .x-form-file-btn{overflow:hidden}.x-reset .x-form-file-wrap .x-form-file-input{position:absolute;top:-4px;right:-2px;height:30px;filter:alpha(opacity=0);opacity:0;font-size:100px}.x-reset .x-form-cb-wrap{padding-top:3px}.x-reset .x-form-checkbox,.x-reset .x-form-radio{vertical-align:-1px;width:13px;height:13px;background:no-repeat;background-image:url('../../resources/themes/images/default/form/checkbox.gif');overflow:hidden;padding:0;border:0}.x-reset .x-form-checkbox::-moz-focus-inner,.x-reset .x-form-radio::-moz-focus-inner{padding:0;border:0}.x-reset .x-form-cb-checked .x-form-checkbox,.x-reset .x-form-cb-checked .x-form-radio{background-position:0 -13px}.x-reset .x-form-cb-focus{background-position:-13px 0}.x-reset .x-form-cb-checked .x-form-cb-focus{background-position:-13px -13px}.x-reset .x-form-radio{background-image:url('../../resources/themes/images/default/form/radio.gif')}.x-reset .x-form-cb-label-before{margin-right:4px}.x-reset .x-form-cb-label-after{margin-left:4px}.x-reset .x-form-checkboxgroup-body{padding:1px 4px 1px 4px}.x-reset .x-form-invalid .x-form-checkboxgroup-body{border:1px solid #c30!important;background:transparent repeat-x bottom;background-image:url('../../resources/themes/images/default/grid/invalid_line.gif');padding:1px 3px 0 3px}.x-reset .x-check-group-alt{background:#d1ddef;border-top:1px dotted #b5b8c8;border-bottom:1px dotted #b5b8c8}.x-reset .x-form-check-group-label{color:#333;border-bottom:1px solid #333;margin:0 30px 5px 0;padding:2px}.x-reset .x-form-trigger-wrap{vertical-align:top}.x-reset .x-form-trigger{background-image:url('../../resources/themes/images/default/form/trigger.gif');background-position:0 0;width:17px;height:21px;border-bottom:1px solid #b5b8c8;cursor:pointer;cursor:hand;overflow:hidden}.x-reset .x-border-box .x-form-trigger{height:22px}.x-reset .x-field-default-toolbar .x-form-trigger{height:19px}.x-reset .x-border-box .x-field-default-toolbar .x-form-trigger{height:20px}.x-reset .x-form-trigger-over{background-position:-17px 0;border-bottom-color:#7eadd9}.x-reset .x-form-trigger-wrap-focus .x-form-trigger{background-position:-51px 0;border-bottom-color:#7eadd9}.x-reset .x-form-trigger-wrap-focus .x-form-trigger-over{background-position:-68px 0;border-bottom-color:null}.x-reset .x-form-trigger-click,.x-reset .x-form-trigger-wrap-focus .x-form-trigger-click{background-position:-34px 0;border-bottom-color:null}.x-reset .x-form-trigger-icon{height:16px;background-repeat:no-repeat;background-position:7px 6px}.x-reset .x-pickerfield-open .x-form-field{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0}.x-reset .x-pickerfield-open-above .x-form-field{-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;-o-border-bottom-left-radius:3px;-ms-border-bottom-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0}.x-reset .x-form-arrow-trigger .x-form-trigger-icon{background-image:url('../../resources/themes/images/default/boundlist/trigger-arrow.png')}.x-reset .x-form-date-trigger{background-image:url('../../resources/themes/images/default/form/date-trigger.gif')}.x-reset .x-form-trigger-wrap .x-form-spinner-up,.x-reset .x-form-trigger-wrap .x-form-spinner-down{background-image:url('../../resources/themes/images/default/form/spinner.gif');width:17px!important;height:11px!important;font-size:0;border-bottom:0}.x-reset .x-form-trigger-wrap .x-form-spinner-down{background-position:0 -11px}.x-reset .x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -11px}.x-reset .x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -11px}.x-reset .x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -11px}.x-reset .x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -11px}.x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-up,.x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down{background-image:url('../../resources/themes/images/default/form/spinner-small.gif');height:10px!important}.x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down{background-position:0 -10px}.x-reset .x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -10px}.x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -10px}.x-reset .x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -10px}.x-reset .x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -10px}.x-reset .x-trigger-noedit{cursor:pointer;cursor:hand}.x-reset .x-item-disabled .x-trigger-noedit,.x-reset .x-item-disabled .x-form-trigger{cursor:auto}.x-reset .x-form-clear-trigger{background-image:url('../../resources/themes/images/default/form/clear-trigger.gif')}.x-reset .x-form-search-trigger{background-image:url('../../resources/themes/images/default/form/search-trigger.gif')}.x-reset .x-html-editor-wrap{border:1px solid #b5b8c8}.x-reset .x-html-editor-wrap .x-toolbar{border-top-width:0;border-left-width:0;border-right-width:0}.x-reset .x-html-editor-wrap textarea{background-color:white}.x-reset .x-html-editor-tb .x-btn-text{background:transparent no-repeat;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-bold,.x-reset .x-menu-item img.x-edit-bold{background-position:0 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-italic,.x-reset .x-menu-item img.x-edit-italic{background-position:-16px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-underline,.x-reset .x-menu-item img.x-edit-underline{background-position:-32px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-forecolor,.x-reset .x-menu-item img.x-edit-forecolor{background-position:-160px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-backcolor,.x-reset .x-menu-item img.x-edit-backcolor{background-position:-176px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-justifyleft,.x-reset .x-menu-item img.x-edit-justifyleft{background-position:-112px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-justifycenter,.x-reset .x-menu-item img.x-edit-justifycenter{background-position:-128px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-justifyright,.x-reset .x-menu-item img.x-edit-justifyright{background-position:-144px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-insertorderedlist,.x-reset .x-menu-item img.x-edit-insertorderedlist{background-position:-80px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-insertunorderedlist,.x-reset .x-menu-item img.x-edit-insertunorderedlist{background-position:-96px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-increasefontsize,.x-reset .x-menu-item img.x-edit-increasefontsize{background-position:-48px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-decreasefontsize,.x-reset .x-menu-item img.x-edit-decreasefontsize{background-position:-64px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-sourceedit,.x-reset .x-menu-item img.x-edit-sourceedit{background-position:-192px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tb .x-edit-createlink,.x-reset .x-menu-item img.x-edit-createlink{background-position:-208px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-reset .x-html-editor-tip .x-tip-bd .x-tip-bd-inner{padding:5px;padding-bottom:1px}.x-reset .x-html-editor-tb .x-toolbar{position:static!important}.x-reset .x-html-editor-tb .x-font-select{font-size:11px}.x-reset .x-html-editor-wrap textarea{border:0;padding:3px 2px;overflow:auto}.x-reset .x-panel,.x-reset .x-plain{overflow:hidden;position:relative}.x-reset .x-panel-header-horizontal{padding:3px 5px 4px}.x-reset .x-panel-header-vertical{padding:5px 4px}.x-reset .x-panel-header-icon,.x-reset .x-window-header-icon{width:16px;height:16px;background-repeat:no-repeat;background-position:0 0;vertical-align:middle;margin-right:4px}.x-reset .x-vertical .x-panel-header-icon,.x-reset .x-vertical .x-window-header-icon{margin:0 0 4px}.x-reset .x-panel-header-draggable,.x-reset .x-panel-header-draggable .x-panel-header-text,.x-reset .x-window-header-draggable,.x-reset .x-window-header-draggable .x-window-header-text{cursor:move}.x-reset .x-panel-ghost,.x-reset .x-window-ghost{filter:alpha(opacity=65);opacity:.65;cursor:move}.x-reset .x-panel-header-horizontal .x-panel-header-body,.x-reset .x-panel-header-horizontal .x-window-header-body,.x-reset .x-panel-header-horizontal .x-btn-group-header-body,.x-reset .x-window-header-horizontal .x-panel-header-body,.x-reset .x-window-header-horizontal .x-window-header-body,.x-reset .x-window-header-horizontal .x-btn-group-header-body,.x-reset .x-btn-group-header-horizontal .x-panel-header-body,.x-reset .x-btn-group-header-horizontal .x-window-header-body,.x-reset .x-btn-group-header-horizontal .x-btn-group-header-body{width:100%}.x-reset .x-panel-header-vertical .x-panel-header-body,.x-reset .x-panel-header-vertical .x-window-header-body,.x-reset .x-panel-header-vertical .x-btn-group-header-body,.x-reset .x-window-header-vertical .x-panel-header-body,.x-reset .x-window-header-vertical .x-window-header-body,.x-reset .x-window-header-vertical .x-btn-group-header-body,.x-reset .x-btn-group-header-vertical .x-panel-header-body,.x-reset .x-btn-group-header-vertical .x-window-header-body,.x-reset .x-btn-group-header-vertical .x-btn-group-header-body{height:100%}.x-reset .x-panel-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-reset .x-panel-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;white-space:nowrap}.x-reset .x-panel-header-left .x-vml-base,.x-reset .x-panel-header-right .x-vml-base{left:-3px!important}.x-reset .x-panel-body{overflow:hidden;position:relative;font-size:12px}.x-reset .x-panel-header-vertical .x-surface{padding-left:1px}.x-reset .x-opera .x-panel-header-vertical .x-surface,.x-reset .x-strict .x-ie9 .x-panel-header-vertical .x-surface{padding-left:2px}.x-reset .x-panel-collapsed .x-panel-header-collapsed-border-top{border-bottom-width:1px!important}.x-reset .x-panel-collapsed .x-panel-header-collapsed-border-right{border-left-width:1px!important}.x-reset .x-panel-collapsed .x-panel-header-collapsed-border-bottom{border-top-width:1px!important}.x-reset .x-panel-collapsed .x-panel-header-collapsed-border-left{border-right-width:1px!important}.x-reset .x-nlg .x-panel-header-vertical .x-frame-mc{background-repeat:repeat-y}.x-reset .x-panel-default{border-color:#99bce8}.x-reset .x-panel-header-default{font-size:11px;border-color:#99bce8;border-width:1px;border-style:solid}.x-reset .x-nlg .x-panel-header-default-top{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif')}.x-reset .x-nlg .x-panel-header-default-bottom{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif')}.x-reset .x-nlg .x-panel-header-default-left{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif')}.x-reset .x-nlg .x-panel-header-default-right{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif')}.x-reset .x-nlg .x-panel-header-default-right{background-position:top right}.x-reset .x-nlg .x-panel-header-default-bottom{background-position:bottom left}.x-reset .x-panel-header-text-default{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:17px}.x-reset .x-panel-body-default{background:white;border-color:#99bce8;color:black;border-width:1px;border-style:solid}.x-reset .x-panel-collapsed .x-window-header-default,.x-reset .x-panel-collapsed .x-panel-header-default{border-color:#99bce8}.x-reset .x-panel-header-default-vertical{border-color:#99bce8}.x-reset .x-panel-collapsed .x-panel-header-default-top{-moz-border-radius-bottomleft:null;-webkit-border-bottom-left-radius:null;-o-border-bottom-left-radius:null;-ms-border-bottom-left-radius:null;-khtml-border-bottom-left-radius:null;border-bottom-left-radius:null;-moz-border-radius-bottomright:null;-webkit-border-bottom-right-radius:null;-o-border-bottom-right-radius:null;-ms-border-bottom-right-radius:null;-khtml-border-bottom-right-radius:null;border-bottom-right-radius:null}.x-reset .x-panel-collapsed .x-panel-header-default-right{-moz-border-radius-topleft:null;-webkit-border-top-left-radius:null;-o-border-top-left-radius:null;-ms-border-top-left-radius:null;-khtml-border-top-left-radius:null;border-top-left-radius:null;-moz-border-radius-bottomleft:null;-webkit-border-bottom-left-radius:null;-o-border-bottom-left-radius:null;-ms-border-bottom-left-radius:null;-khtml-border-bottom-left-radius:null;border-bottom-left-radius:null}.x-reset .x-panel-collapsed .x-panel-header-default-bottom{-moz-border-radius-topleft:null;-webkit-border-top-left-radius:null;-o-border-top-left-radius:null;-ms-border-top-left-radius:null;-khtml-border-top-left-radius:null;border-top-left-radius:null;-moz-border-radius-topright:null;-webkit-border-top-right-radius:null;-o-border-top-right-radius:null;-ms-border-top-right-radius:null;-khtml-border-top-right-radius:null;border-top-right-radius:null}.x-reset .x-panel-collapsed .x-panel-header-default-left{-moz-border-radius-topright:null;-webkit-border-top-right-radius:null;-o-border-top-right-radius:null;-ms-border-top-right-radius:null;-khtml-border-top-right-radius:null;border-top-right-radius:null;-moz-border-radius-bottomright:null;-webkit-border-bottom-right-radius:null;-o-border-bottom-right-radius:null;-ms-border-bottom-right-radius:null;-khtml-border-bottom-right-radius:null;border-bottom-right-radius:null}.x-reset .x-panel-header-default-top{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset}.x-reset .x-panel-header-default-right{-moz-box-shadow:#f4f8fd -1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd -1px 0 0 0 inset;-o-box-shadow:#f4f8fd -1px 0 0 0 inset;box-shadow:#f4f8fd -1px 0 0 0 inset}.x-reset .x-panel-header-default-bottom{-moz-box-shadow:#f4f8fd 0 -1px 0 0 inset;-webkit-box-shadow:#f4f8fd 0 -1px 0 0 inset;-o-box-shadow:#f4f8fd 0 -1px 0 0 inset;box-shadow:#f4f8fd 0 -1px 0 0 inset}.x-reset .x-panel-header-default-left{-moz-box-shadow:#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 1px 0 0 0 inset}.x-reset .x-panel-header-default-right-tc,.x-reset .x-panel-header-default-right-mc,.x-reset .x-panel-header-default-right-bc{background-position:right 0}.x-reset .x-panel-header-default-bottom-tc,.x-reset .x-panel-header-default-bottom-mc,.x-reset .x-panel-header-default-bottom-bc{background-position:0 bottom}.x-reset .x-panel-default-framed{border-color:#99bce8}.x-reset .x-panel-header-default-framed{font-size:11px;border-color:#99bce8;border-width:1px;border-style:solid}.x-reset .x-nlg .x-panel-header-default-framed-top{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif')}.x-reset .x-nlg .x-panel-header-default-framed-bottom{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif')}.x-reset .x-nlg .x-panel-header-default-framed-left{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif')}.x-reset .x-nlg .x-panel-header-default-framed-right{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif')}.x-reset .x-nlg .x-panel-header-default-framed-right{background-position:top right}.x-reset .x-nlg .x-panel-header-default-framed-bottom{background-position:bottom left}.x-reset .x-nbr .x-panel-header-default-framed{background-image:none}.x-reset .x-strict .x-ie9 .x-panel-header-default-framed-top,.x-reset .x-nlg.x-opera .x-panel-header-default-framed-top,.x-reset .x-nlg.x-safari .x-panel-header-default-framed-top{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif')}.x-reset .x-strict .x-ie9 .x-panel-header-default-framed-bottom,.x-reset .x-nlg.x-opera .x-panel-header-default-framed-bottom,.x-reset .x-nlg.x-safari .x-panel-header-default-framed-bottom{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif')}.x-reset .x-strict .x-ie9 .x-panel-header-default-framed-left,.x-reset .x-nlg.x-opera .x-panel-header-default-framed-left,.x-reset .x-nlg.x-safari .x-panel-header-default-framed-left{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif')}.x-reset .x-strict .x-ie9 .x-panel-header-default-framed-right,.x-reset .x-nlg.x-opera .x-panel-header-default-framed-right,.x-reset .x-nlg.x-safari .x-panel-header-default-framed-right{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif')}.x-reset .x-panel-header-text-default-framed{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:17px}.x-reset .x-panel-body-default-framed{background:#dfe9f6;border-color:#99bce8;color:black;border-width:0;border-style:solid}.x-reset .x-panel-collapsed .x-window-header-default-framed,.x-reset .x-panel-collapsed .x-panel-header-default-framed{border-color:#99bce8}.x-reset .x-panel-header-default-framed-vertical{border-color:#99bce8}.x-reset .x-panel-default-framed{-moz-border-radius:4px;-webkit-border-radius:4px;-o-border-radius:4px;-ms-border-radius:4px;-khtml-border-radius:4px;border-radius:4px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#dfe9f6}.x-reset .x-nlg .x-panel-default-framed-mc{background-color:#dfe9f6}.x-reset .x-panel-header-default-framed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 5px 4px 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#cbddf3}.x-reset .x-nlg .x-panel-header-default-framed-top-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif');background-color:#cbddf3}.x-reset .x-panel-header-default-framed-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 4px;border-width:1px 1px 1px 0;border-style:solid;background-color:#cbddf3}.x-reset .x-nlg .x-panel-header-default-framed-right-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif');background-color:#cbddf3}.x-reset .x-panel-header-default-framed-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#cbddf3}.x-reset .x-nlg .x-panel-header-default-framed-bottom-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif');background-color:#cbddf3}.x-reset .x-panel-header-default-framed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-color:#cbddf3}.x-reset .x-nlg .x-panel-header-default-framed-left-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif');background-color:#cbddf3}.x-reset .x-panel-header-default-framed-top{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset}.x-reset .x-panel-header-default-framed-right{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset}.x-reset .x-panel-header-default-framed-bottom{-moz-box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset}.x-reset .x-panel-header-default-framed-left{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset}.x-reset .x-panel .x-panel-header-default-framed-top{border-bottom-width:1px!important}.x-reset .x-panel .x-panel-header-default-framed-right{border-left-width:1px!important}.x-reset .x-panel .x-panel-header-default-framed-bottom{border-top-width:1px!important}.x-reset .x-panel .x-panel-header-default-framed-left{border-right-width:1px!important}.x-reset .x-panel-header-default-framed-collapsed{-moz-border-radius:4px;-webkit-border-radius:4px;-o-border-radius:4px;-ms-border-radius:4px;-khtml-border-radius:4px;border-radius:4px}.x-reset .x-panel-header-default-framed-collapsed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#cbddf3}.x-reset .x-nlg .x-panel-header-default-framed-collapsed-top-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-bg.gif');background-color:#cbddf3}.x-reset .x-panel-header-default-framed-collapsed-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#cbddf3}.x-reset .x-nlg .x-panel-header-default-framed-collapsed-right-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-bg.gif');background-color:#cbddf3}.x-reset .x-panel-header-default-framed-collapsed-bottom{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#cbddf3}.x-reset .x-nlg .x-panel-header-default-framed-collapsed-bottom-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif');background-color:#cbddf3}.x-reset .x-panel-header-default-framed-collapsed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#cbddf3}.x-reset .x-nlg .x-panel-header-default-framed-collapsed-left-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-bg.gif');background-color:#cbddf3}.x-reset .x-panel-header-default-framed-right-tc,.x-reset .x-panel-header-default-framed-right-mc,.x-reset .x-panel-header-default-framed-right-bc{background-position:right 0}.x-reset .x-panel-header-default-framed-bottom-tc,.x-reset .x-panel-header-default-framed-bottom-mc,.x-reset .x-panel-header-default-framed-bottom-bc{background-position:0 bottom}.x-reset .x-panel-header-plain,.x-reset .x-panel-body-plain{border:0;padding:0}.x-reset .x-tip{position:absolute;overflow:visible;border-color:#8eaace}.x-reset .x-tip .x-tip-header .x-box-item{padding:3px 3px 0}.x-reset .x-tip .x-tip-header .x-tool{padding:0 1px 0 0!important}.x-reset .x-tip{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:#e9f2ff}.x-reset .x-nlg .x-tip-mc{background-color:#e9f2ff}.x-reset .x-tip-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;color:#444;font-size:11px;font-weight:bold}.x-reset .x-tip-header-draggable .x-tip-header-text{cursor:move}.x-reset .x-tip-body,.x-reset .x-form-invalid-tip-body{overflow:hidden;position:relative;padding:3px}.x-reset .x-tip-header,.x-reset .x-tip-body,.x-reset .x-form-invalid-tip-body{color:#444;font-size:11px;font-weight:normal}.x-reset .x-tip-header a,.x-reset .x-tip-body a,.x-reset .x-form-invalid-tip-body a{color:#2a2a2a}.x-reset .x-tip-anchor{position:absolute;overflow:hidden;height:0;width:0;border-style:solid;border-width:5px;border-color:#8eaace;zoom:1}.x-reset .x-border-box .x-tip-anchor{width:10px;height:10px}.x-reset .x-tip-anchor-top{border-top-color:transparent;border-left-color:transparent;border-right-color:transparent}.x-reset .x-tip-anchor-bottom{border-bottom-color:transparent;border-left-color:transparent;border-right-color:transparent}.x-reset .x-tip-anchor-left{border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.x-reset .x-tip-anchor-right{border-top-color:transparent;border-bottom-color:transparent;border-right-color:transparent}.x-reset .x-form-invalid-tip{border-color:#a1311f;-moz-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-webkit-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-o-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset}.x-reset .x-form-invalid-tip-body{background:1px 1px no-repeat;background-image:url('../../resources/themes/images/default/form/exclamation.gif');padding-left:22px}.x-reset .x-form-invalid-tip-body li{margin-bottom:4px}.x-reset .x-form-invalid-tip-body li.last{margin-bottom:0}.x-reset .x-form-invalid-tip-default{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:white}.x-reset .x-nlg .x-form-invalid-tip-default-mc{background-color:white}.x-reset .x-slider{zoom:1}.x-reset .x-slider-inner{position:relative;left:0;top:0;overflow:visible;zoom:1}.x-reset .x-slider-focus{position:absolute;left:0;top:0;width:1px;height:1px;line-height:1px;font-size:1px;-moz-outline:0 none;outline:0 none;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;display:block;overflow:hidden}.x-reset .x-slider-horz{padding-left:7px;background:transparent no-repeat 0 -24px;width:100%}.x-reset .x-slider-horz .x-slider-end{padding-right:7px;zoom:1;background:transparent no-repeat right -46px}.x-reset .x-slider-horz .x-slider-inner{background:transparent repeat-x 0 -2px;height:18px}.x-reset .x-slider-horz .x-slider-thumb{width:14px;height:15px;margin-left:-7px;position:absolute;left:0;top:1px;background:transparent no-repeat 0 0}.x-reset .x-slider-horz .x-slider-thumb-over{background-position:-14px -15px}.x-reset .x-slider-horz .x-slider-thumb-drag{background-position:-28px -30px}.x-reset .x-slider-vert{padding-top:7px;background:transparent no-repeat -44px 0}.x-reset .x-slider-vert .x-slider-end{padding-bottom:7px;zoom:1;background:transparent no-repeat -22px bottom;width:22px}.x-reset .x-slider-vert .x-slider-inner{background:transparent repeat-y 0 0;width:22px}.x-reset .x-slider-vert .x-slider-thumb{width:15px;height:14px;margin-bottom:-7px;position:absolute;left:3px;bottom:0;background:transparent no-repeat 0 0}.x-reset .x-slider-vert .x-slider-thumb-over{background-position:-15px -14px}.x-reset .x-slider-vert .x-slider-thumb-drag{background-position:-30px -28px}.x-reset .x-slider-horz,.x-reset .x-slider-horz .x-slider-end,.x-reset .x-slider-horz .x-slider-inner{background-image:url('../../resources/themes/images/default/slider/slider-bg.png')}.x-reset .x-slider-horz .x-slider-thumb{background-image:url('../../resources/themes/images/default/slider/slider-thumb.png')}.x-reset .x-slider-vert,.x-reset .x-slider-vert .x-slider-end,.x-reset .x-slider-vert .x-slider-inner{background-image:url('../../resources/themes/images/default/slider/slider-v-bg.png')}.x-reset .x-slider-vert .x-slider-thumb{background-image:url('../../resources/themes/images/default/slider/slider-v-thumb.png')}.x-reset .x-progress{position:relative;border-width:1px;border-style:solid;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;overflow:hidden;height:20px}.x-reset .x-progress-bar{height:18px;overflow:hidden;position:absolute;width:0;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;border-right:1px solid;border-top:1px solid}.x-reset .x-progress-text{overflow:hidden;position:absolute;padding:0 5px;height:18px;font-weight:bold;font-size:11px;line-height:16px;text-align:center}.x-reset .x-progress-text-back{padding-top:1px}.x-reset .x-progress-default{border-color:#6594cf}.x-reset .x-progress-default .x-progress-bar{border-right-color:#6594cf;border-top-color:#c6d8ed;background-image:none;background-color:#73a3e0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b2ccee),color-stop(50%,#88b1e5),color-stop(51%,#73a3e0),color-stop(100%,#5e96db));background-image:-webkit-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-moz-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-o-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-ms-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db)}.x-reset .x-progress-default .x-progress-text{color:white}.x-reset .x-progress-default .x-progress-text-back{color:#396295}.x-reset .x-nlg .x-progress-default .x-progress-bar{background:repeat-x;background-image:url('../../resources/themes/images/default/progress/progress-default-bg.gif')}.x-reset .x-toolbar{font-size:11px;border:1px solid;padding:2px 0 2px 2px}.x-reset .x-toolbar .x-form-item-label{font-size:11px;line-height:15px}.x-reset .x-toolbar .x-toolbar-item{margin:0 2px 0 0}.x-reset .x-toolbar .x-toolbar-text{margin-left:4px;margin-right:6px;white-space:nowrap;color:#4c4c4c;line-height:16px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;font-weight:normal}.x-reset .x-toolbar .x-toolbar-separator{display:block;font-size:1px;overflow:hidden;cursor:default;border:0}.x-reset .x-toolbar .x-toolbar-separator-horizontal{margin:0 3px 0 2px;height:14px;width:0;border-left:1px solid #98c8ff;border-right:1px solid white}.x-reset .x-toolbar-footer{background:transparent;border:0 none;margin-top:3px;padding:2px 0 2px 6px}.x-reset .x-toolbar-footer .x-box-inner{border-width:0}.x-reset .x-toolbar-footer .x-toolbar-item{margin:0 6px 0 0}.x-reset .x-toolbar-vertical{padding:2px 2px 0 2px}.x-reset .x-toolbar-vertical .x-toolbar-item{margin:0 0 2px 0}.x-reset .x-toolbar-vertical .x-toolbar-text{margin-top:4px;margin-bottom:6px}.x-reset .x-toolbar-vertical .x-toolbar-separator-vertical{margin:2px 5px 3px 5px;height:0;width:10px;line-height:0;border-top:1px solid #98c8ff;border-bottom:1px solid white}.x-reset .x-toolbar-scroller{padding-left:0}.x-reset .x-toolbar-spacer{width:2px}.x-reset .x-toolbar-more-icon{background-image:url('../../resources/themes/images/default/toolbar/more.gif')!important;background-position:2px center!important;background-repeat:no-repeat}.x-reset .x-toolbar-default{border-color:#99bce8;background-image:none;background-color:#d3e1f1;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dfe9f5),color-stop(100%,#d3e1f1));background-image:-webkit-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-moz-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-o-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-ms-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:linear-gradient(top,#dfe9f5,#d3e1f1)}.x-reset .x-nlg .x-toolbar-default{background-image:url('../../resources/themes/images/default/toolbar/toolbar-default-bg.gif')!important;background-repeat:repeat-x}.x-reset .x-toolbar-plain{border:0}.x-reset .x-window{outline:0;overflow:hidden}.x-reset .x-window .x-window-wrap{position:relative}.x-reset .x-window-body{position:relative;border-style:solid;overflow:hidden}.x-reset .x-window-maximized .x-window-wrap .x-window-header{-moz-border-radius:0!important;-webkit-border-radius:0!important;-o-border-radius:0!important;-ms-border-radius:0!important;-khtml-border-radius:0!important;border-radius:0!important}.x-reset .x-window-header-top{margin-bottom:-2px}.x-reset .x-window-header-body-horizontal{margin-top:-1px}.x-reset .x-window-header-bottom{margin-top:-1px;margin-bottom:-1px}.x-reset .x-window-header-left{margin-right:-1px}.x-reset .x-window-header-right{margin-left:-1px}.x-reset .x-window-header-vertical .x-surface{padding-left:1px}.x-reset .x-window-collapsed .x-window-header-vertical{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px}.x-reset .x-window-collapsed .x-window-header-horizontal{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px}.x-reset .x-window-collapsed .x-window-header-left{padding-right:5px!important;margin-right:0}.x-reset .x-window-collapsed .x-window-header-right{padding-left:5px!important;margin-left:0}.x-reset .x-window-collapsed .x-window-header-top{padding-bottom:5px!important;margin-bottom:-1px}.x-reset .x-window-collapsed .x-window-header-bottom{padding-top:5px!important;margin-top:0}.x-reset .x-window-header-left .x-vml-base,.x-reset .x-window-header-right .x-vml-base{left:-3px!important}.x-reset .x-opera .x-window-header-vertical .x-surface,.x-reset .x-strict .x-ie9 .x-window-header-vertical .x-surface{padding-left:2px}.x-reset .x-window-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-reset .x-window-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;white-space:nowrap}.x-reset .x-window-default{border-color:#a2b1c5;-moz-border-radius:5px 5px;-webkit-border-radius:5px 5px;-o-border-radius:5px 5px;-ms-border-radius:5px 5px;-khtml-border-radius:5px 5px;border-radius:5px 5px;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-reset .x-window-default{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-default-mc{background-color:#ced9e7}.x-reset .x-window-body-default{border-color:#99bbe8;border-width:1px;background:#dfe8f6;color:black}.x-reset .x-window-header-default{font-size:11px;border-color:#a2b1c5;zoom:1}.x-reset .x-window-header-text-default{color:#04468c;font-weight:bold;line-height:17px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px}.x-reset .x-window-header-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 0 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-header-default-top-mc{background-color:#ced9e7}.x-reset .x-window-header-default-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 0;border-width:1px 1px 1px 0;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-header-default-right-mc{background-color:#ced9e7}.x-reset .x-window-header-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:0 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-header-default-bottom-mc{background-color:#ced9e7}.x-reset .x-window-header-default-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 0 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-header-default-left-mc{background-color:#ced9e7}.x-reset .x-window-header-default-collapsed-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-header-default-collapsed-top-mc{background-color:#ced9e7}.x-reset .x-window-header-default-collapsed-right{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-header-default-collapsed-right-mc{background-color:#ced9e7}.x-reset .x-window-header-default-collapsed-bottom{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-header-default-collapsed-bottom-mc{background-color:#ced9e7}.x-reset .x-window-header-default-collapsed-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-reset .x-nlg .x-window-header-default-collapsed-left-mc{background-color:#ced9e7}.x-reset .x-window-header-default-top{-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-reset .x-window-header-default-right{-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset}.x-reset .x-window-header-default-bottom{-moz-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-reset .x-window-header-default-left{-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-reset .x-window-body-plain{background:transparent}.x-reset .x-message-box .x-window-body{background-color:#ced9e7;border:0}.x-reset .x-message-box .x-progress-wrap{margin-top:4px}.x-reset .x-message-box-icon{width:47px;height:32px}.x-reset .x-message-box-info,.x-reset .x-message-box-warning,.x-reset .x-message-box-question,.x-reset .x-message-box-error{background:transparent no-repeat top left}.x-reset .x-message-box .x-msg-box-wait{background-image:url('../../resources/themes/images/default/shared/blue-loading.gif')}.x-reset .x-message-box-info{background-image:url('../../resources/themes/images/default/shared/icon-info.gif')}.x-reset .x-message-box-warning{background-image:url('../../resources/themes/images/default/shared/icon-warning.gif')}.x-reset .x-message-box-question{background-image:url('../../resources/themes/images/default/shared/icon-question.gif')}.x-reset .x-message-box-error{background-image:url('../../resources/themes/images/default/shared/icon-error.gif')}.x-reset .x-tab-bar{position:relative;background-color:transparent;background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(top,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(top,#dde8f5,#cbdbef);background-image:-o-linear-gradient(top,#dde8f5,#cbdbef);background-image:-ms-linear-gradient(top,#dde8f5,#cbdbef);background-image:linear-gradient(top,#dde8f5,#cbdbef);font-size:11px}.x-reset .x-nlg .x-tab-bar{background-image:url('../../resources/themes/images/default/tab-bar/tab-bar-default-bg.gif')}.x-reset .x-tab-bar-default-plain,.x-reset .x-nlg .x-tab-bar-default-plain{background:transparent none}.x-reset .x-tab-bar-body{border-style:solid;border-color:#99bce8;position:relative;z-index:2;zoom:1}.x-reset .x-tab-bar-top .x-tab-bar-body{height:20px;border-width:1px 1px 0;padding:1px 0 3px}.x-reset .x-tab-bar-top .x-tab-bar-strip{top:22px;border-width:1px 1px 0;height:2px}.x-reset .x-border-box .x-tab-bar-top .x-tab-bar-body{height:25px}.x-reset .x-border-box .x-tab-bar-top .x-tab-bar-strip{height:3px}.x-reset .x-tab-bar-top .x-tab-bar-body-default-plain{height:20px;border-width:0;padding:0 0 2px}.x-reset .x-tab-bar-top .x-tab-bar-strip-default-plain{top:20px;border-width:1px 1px 0 1px;height:2px}.x-reset .x-border-box .x-tab-bar-top .x-tab-bar-body-default-plain{height:22px}.x-reset .x-border-box .x-tab-bar-top .x-tab-bar-strip-default-plain{height:3px}.x-reset .x-tab-bar-bottom .x-tab-bar-body{height:20px;border-width:0 1px 1px;padding:3px 0 1px}.x-reset .x-tab-bar-bottom .x-tab-bar-body .x-box-inner{position:relative;top:-1px}.x-reset .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller,.x-reset .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-left,.x-reset .x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-right{height:22px}.x-reset .x-tab-bar-bottom .x-tab-bar-strip{top:0;border-width:0 1px 1px 1px;height:2px}.x-reset .x-border-box .x-tab-bar-bottom .x-tab-bar-body{height:25px}.x-reset .x-border-box .x-tab-bar-bottom .x-tab-bar-strip{height:3px}.x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain{height:20px;border-width:0;padding:3px 0 0}.x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-inner{position:relative;top:-1px}.x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller,.x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-left,.x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-right{height:21px}.x-reset .x-tab-bar-bottom .x-tab-bar-strip-default-plain{top:0;border-width:0 1px 1px 1px;height:2px}.x-reset .x-border-box .x-tab-bar-bottom .x-tab-bar-body-default-plain{height:23px}.x-reset .x-border-box .x-tab-bar-bottom .x-tab-bar-strip-default-plain{height:3px}.x-reset .x-tab-bar-strip-default,.x-reset .x-tab-bar-strip-default-plain{font-size:0;line-height:0;position:absolute;z-index:1;border-style:solid;overflow:hidden;border-color:#99bce8;background-color:#deecfd;zoom:1}.x-reset .x-tab-default-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 3px 0 3px;border-width:1px 1px 0 1px;border-style:solid;background-color:#deecfd}.x-reset .x-nlg .x-tab-default-top-mc{background-image:url('../../resources/themes/images/default/tab/tab-default-top-bg.gif');background-color:#deecfd}.x-reset .x-tab-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:0 3px 3px 3px;border-width:0 1px 1px 1px;border-style:solid;background-color:#deecfd}.x-reset .x-nlg .x-tab-default-bottom-mc{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif');background-color:#deecfd}.x-reset .x-tab{z-index:1;margin:0 0 0 2px;display:inline-block;zoom:1;*display:inline;white-space:nowrap;height:20px;border-color:#8db3e3;cursor:pointer;cursor:hand}.x-reset .x-tab button{cursor:pointer;cursor:hand}.x-reset .x-tab em{display:block;padding:0 6px;line-height:1px}.x-reset .x-tab button{background:0;border:0;padding:0;margin:0;-webkit-appearance:none;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;color:#416da3;outline:0 none;overflow-x:visible}.x-reset .x-tab button::-moz-focus-inner{border:0;padding:0}.x-reset .x-tab button .x-tab-inner{background-color:transparent;background-repeat:no-repeat;background-position:0 -2px;display:block;text-align:center;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden}.x-reset .x-tab img{display:none}.x-reset .x-border-box .x-tab-default-top{height:21px}.x-reset .x-border-box .x-tab-default-bottom{height:21px}.x-reset .x-tab-default-top{-moz-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-webkit-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-o-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;border-bottom:1px solid #99bce8!important}.x-reset .x-tab-default-top em{padding-bottom:3px}.x-reset .x-tab-default-top button,.x-reset .x-tab-default-top .x-tab-inner{height:13px;line-height:13px}.x-reset .x-safari4 .x-tab-default-top .x-tab-inner,.x-reset .x-safari5_0 .x-tab-default-top .x-tab-inner{line-height:11px}.x-reset .x-nbr .x-tab-default-top{border-bottom-width:1px!important}.x-reset .x-tab-default-top-active{border-bottom-color:#deecfd!important}.x-reset .x-tab-default-bottom{-moz-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-webkit-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-o-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;border-top:1px solid #99bce8!important;-moz-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-webkit-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-o-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x-reset .x-tab-default-bottom em{padding-top:3px}.x-reset .x-tab-default-bottom button,.x-reset .x-tab-default-bottom .x-tab-inner{height:13px;line-height:13px}.x-reset .x-nbr .x-tab-default-bottom{border-top-width:1px!important}.x-reset .x-tab-default-bottom-active{border-top-color:#deecfd!important}.x-reset .x-tab-default-disabled{cursor:default;border-color:#bbd2ef;background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-ms-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:linear-gradient(top,#e1ecfa,#ecf4fe)}.x-reset .x-tab-default-disabled button{color:#c3b3b3!important}.x-reset .x-tab-icon-text-left .x-tab-inner{padding-left:20px}.x-reset .x-tab button{position:relative}.x-reset .x-tab-icon{position:absolute;background-repeat:no-repeat;background-position:0 -1px;top:0;left:0;right:auto;bottom:0;width:18px;height:18px}.x-reset .x-strict .x-ie8 .x-tab button,.x-reset .x-strict .x-ie9 .x-tab button{overflow-y:visible}.x-reset .x-tab-default-disabled .x-tab-icon{filter:alpha(opacity=50);opacity:.5}.x-reset .x-tab-noicon .x-tab-icon{display:none}.x-reset .x-tab-top-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-ms-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x-reset .x-tab-bottom-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-ms-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x-reset .x-tab-active{z-index:3}.x-reset .x-tab-active button{color:#15498b}.x-reset .x-tab-top-active{background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-ms-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%)}.x-reset .x-tab-bottom-active{background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-ms-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%)}.x-reset .x-tab-disabled{border-color:#bbd2ef}.x-reset .x-tab-disabled button{color:#c3b3b3}.x-reset .x-tab-top-disabled{background-image:none;background:transparent;background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-ms-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:linear-gradient(top,#e1ecfa,#ecf4fe)}.x-reset .x-tab-bottom-disabled{background-image:none;background:transparent;background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-ms-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:linear-gradient(bottom,#e1ecfa,#ecf4fe)}.x-reset .x-nlg .x-tab-top{background-image:url('../../resources/themes/images/default/tab/tab-default-top-bg.gif')}.x-reset .x-nlg .x-tab-bottom{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif')}.x-reset .x-nlg .x-tab-top-over{background-image:url('../../resources/themes/images/default/tab/tab-default-top-over-bg.gif')}.x-reset .x-nlg .x-tab-bottom-over{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-over-bg.gif')}.x-reset .x-nlg .x-tab-top-active{background-image:url('../../resources/themes/images/default/tab/tab-default-top-active-bg.gif')}.x-reset .x-nlg .x-tab-bottom-active{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-active-bg.gif')}.x-reset .x-nlg .x-tab-top-disabled{background-image:url('../../resources/themes/images/default/tab/tab-default-top-disabled-bg.gif')!important}.x-reset .x-nlg .x-tab-bottom-disabled{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif')!important}.x-reset .x-tab-closable em{padding-right:14px}.x-reset .x-tab-close-btn{position:absolute;top:2px;right:2px;width:11px;height:11px;font-size:0;line-height:0;text-indent:-999px;background:no-repeat;background-image:url('../../resources/themes/images/default/tab/tab-default-close.gif');filter:alpha(opacity=60);opacity:.6}.x-reset .x-nbr .x-tab-close-btn{top:0;right:0}.x-reset a.x-tab-close-btn:hover{filter:alpha(opacity=100);opacity:1}.x-reset .x-tab-default-disabled a.x-tab-close-btn{filter:alpha(opacity=30);opacity:.3}.x-reset .x-autowidth-table table.x-grid-table{table-layout:auto;width:auto!important}.x-reset .x-tree-no-lines .x-tree-elbow{background-color:transparent}.x-reset .x-tree-no-lines .x-tree-elbow-end{background-color:transparent}.x-reset .x-tree-no-lines .x-tree-elbow-line{background-color:transparent}.x-reset .x-tree-arrows .x-tree-elbow-plus{background:transparent no-repeat 0 0}.x-reset .x-tree-arrows .x-tree-elbow-end-plus{background:transparent no-repeat 0 0}.x-reset .x-tree-arrows .x-tree-elbow-end-minus{background:transparent no-repeat -16px 0}.x-reset .x-tree-arrows .x-tree-elbow-minus{background:transparent no-repeat -16px 0}.x-reset .x-tree-arrows .x-tree-elbow{background-color:transparent!important}.x-reset .x-tree-arrows .x-tree-elbow-end{background-color:transparent!important}.x-reset .x-tree-arrows .x-tree-elbow-line{background-color:transparent!important}.x-reset .x-tree-arrows .x-tree-expander-over .x-tree-elbow-plus,.x-reset .x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-plus{background-position:-32px 0}.x-reset .x-tree-arrows .x-tree-expander-over .x-tree-elbow-minus,.x-reset .x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-minus{background-position:-48px 0}.x-reset .x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-plus,.x-reset .x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-position:-16px 0}.x-reset .x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-plus,.x-reset .x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-end-plus{background-position:-48px 0}.x-reset .x-tree-elbow-plus,.x-reset .x-tree-elbow-minus,.x-reset .x-tree-elbow-end-plus,.x-reset .x-tree-elbow-end-minus{cursor:pointer}.x-reset .x-tree-lines .x-tree-elbow{background-image:url('../../resources/themes/images/default/tree/elbow.gif')}.x-reset .x-tree-lines .x-tree-elbow-end{background-image:url('../../resources/themes/images/default/tree/elbow-end.gif')}.x-reset .x-tree-lines .x-tree-elbow-plus{background-image:url('../../resources/themes/images/default/tree/elbow-plus.gif')}.x-reset .x-tree-lines .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-end-plus.gif')}.x-reset .x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus{background-image:url('../../resources/themes/images/default/tree/elbow-minus.gif')}.x-reset .x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-end-minus.gif')}.x-reset .x-tree-lines .x-tree-elbow-line{background-image:url('../../resources/themes/images/default/tree/elbow-line.gif')}.x-reset .x-tree-no-lines .x-tree-elbow-plus,.x-reset .x-tree-no-lines .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-plus-nl.gif')}.x-reset .x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-plus,.x-reset .x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-end-minus-nl.gif')}.x-reset .x-tree-arrows .x-tree-elbow-plus,.x-reset .x-tree-arrows .x-tree-elbow-minus,.x-reset .x-tree-arrows .x-tree-elbow-end-plus,.x-reset .x-tree-arrows .x-tree-elbow-end-minus{background-image:url('../../resources/themes/images/default/tree/arrows.gif')}.x-reset .x-tree-icon{margin:2px 3px 0 0}.x-reset .x-grid-with-row-lines .x-tree-icon{margin-top:1px}.x-reset .x-tree-elbow,.x-reset .x-tree-elbow-end,.x-reset .x-tree-elbow-plus,.x-reset .x-tree-elbow-end-plus,.x-reset .x-tree-elbow-empty,.x-reset .x-tree-elbow-line{height:20px;width:16px}.x-reset .x-grid-with-row-lines .x-tree-elbow,.x-reset .x-grid-with-row-lines .x-tree-elbow-end,.x-reset .x-grid-with-row-lines .x-tree-elbow-plus,.x-reset .x-grid-with-row-lines .x-tree-elbow-end-plus,.x-reset .x-grid-with-row-lines .x-tree-elbow-empty,.x-reset .x-grid-with-row-lines .x-tree-elbow-line{height:19px;background-position:0 -1px}.x-reset .x-tree-icon-leaf{width:16px;background-image:url('../../resources/themes/images/default/tree/leaf.gif')}.x-reset .x-tree-icon-parent{width:16px;background-image:url('../../resources/themes/images/default/tree/folder.gif')}.x-reset .x-grid-tree-node-expanded .x-tree-icon-parent{background-image:url('../../resources/themes/images/default/tree/folder-open.gif')}.x-reset .x-grid-rowbody{padding:0}.x-reset .x-grid-cell-treecolumn .x-grid-cell-inner{padding:0;line-height:19px}.x-reset .x-grid-with-row-lines .x-grid-cell-treecolumn .x-grid-cell-inner{line-height:17px}.x-reset .x-tree-panel .x-grid-cell-inner{cursor:pointer}.x-reset .x-tree-panel .x-grid-cell-inner img{display:inline-block;vertical-align:top}.x-reset .x-grid-editor-on-text-node .x-form-text{padding-left:1px;padding-right:1px}.x-reset .x-opera .x-grid-editor-on-text-node .x-form-text{padding-left:2px;padding-right:2px}.x-reset .x-tree-checkbox{margin:4px 3px 0 0;display:inline-block;vertical-align:top;width:13px;height:13px;background:no-repeat;background-image:url('../../resources/themes/images/default/form/checkbox.gif');overflow:hidden;padding:0;border:0}.x-reset .x-tree-checkbox::-moz-focus-inner{padding:0;border:0}.x-reset .x-grid-with-row-lines .x-tree-checkbox{margin-top:3px}.x-reset .x-tree-checkbox-checked{background-position:0 -13px}.x-reset .x-tree-drop-ok-append .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-append.gif')}.x-reset .x-tree-drop-ok-above .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-above.gif')}.x-reset .x-tree-drop-ok-below .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-below.gif')}.x-reset .x-tree-drop-ok-between .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-between.gif')}.x-reset .x-grid-tree-loading .x-tree-icon{background-image:url('../../resources/themes/images/default/tree/loading.gif')}.x-reset .x-tree-ddindicator{height:1px;border-width:1px 0 0;border-style:dotted;border-color:green}.x-reset .x-grid-tree-loading span{font-style:italic;color:#444}.x-reset .x-tree-animator-wrap{overflow:hidden}.x-reset .x-surface{display:-moz-inline-box;-moz-box-orient:vertical;display:inline-block;vertical-align:middle;*vertical-align:auto;overflow:hidden}.x-reset .x-surface{*display:inline}.x-reset .rvml{behavior:url(#default#VML)}.x-reset .x-surface tspan{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-reset .x-vml-sprite{position:absolute;left:0;top:0;width:1px;height:1px}.x-reset .x-vml-group{position:absolute;left:0;top:0;width:1000px;height:1000px}.x-reset .x-vml-measure-span{position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;display:inline}.x-reset .x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}.x-reset .x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}.x-reset svg,.x-reset vml{overflow:hidden}.x-reset .x-viewport,.x-reset .x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;position:static}.x-reset .x-dd-drag-proxy{z-index:1000000!important}.x-reset .x-dd-drag-repair .x-dd-drag-ghost{filter:alpha(opacity=60);opacity:.6}.x-reset .x-dd-drag-repair .x-dd-drop-icon{display:none}.x-reset .x-dd-drag-ghost{filter:alpha(opacity=85);opacity:.85;padding:5px;padding-left:20px;white-space:nowrap;color:#000;font:normal 11px tahoma,arial,verdana,sans-serif;border:1px solid;border-color:#ddd #bbb #bbb #ddd;background-color:#fff}.x-reset .x-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1}.x-reset .x-view-selector{position:absolute;left:0;top:0;width:0;background-color:#c3daf9;border:1px dotted #39b;filter:alpha(opacity=50);opacity:.5;zoom:1}.x-reset .x-dd-drop-nodrop .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/dd/drop-no.gif')}.x-reset .x-dd-drop-ok .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/dd/drop-yes.gif')}.x-reset .x-dd-drop-ok-add .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/dd/drop-add.gif')}.x-reset .x-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;zoom:1;filter:alpha(opacity=0);opacity:0;background-color:#fff}.x-reset .x-collapsed .x-resizable-handle{display:none}.x-reset .x-resizable-handle-east{width:6px;height:100%;right:0;top:0}.x-reset .x-resizable-over .x-resizable-handle-east{cursor:e-resize}.x-reset .x-resizable-handle-south{width:100%;height:6px;left:0;bottom:0}.x-reset .x-resizable-over .x-resizable-handle-south{cursor:s-resize}.x-reset .x-resizable-handle-west{width:6px;height:100%;left:0;top:0}.x-reset .x-resizable-over .x-resizable-handle-west{cursor:w-resize}.x-reset .x-resizable-handle-north{width:100%;height:6px;left:0;top:0}.x-reset .x-resizable-over .x-resizable-handle-north{cursor:n-resize}.x-reset .x-resizable-handle-southeast{width:6px;height:6px;right:0;bottom:0;z-index:101}.x-reset .x-resizable-over .x-resizable-handle-southeast{cursor:se-resize}.x-reset .x-resizable-handle-northwest{width:6px;height:6px;left:0;top:0;z-index:101}.x-reset .x-resizable-over .x-resizable-handle-northwest{cursor:nw-resize}.x-reset .x-resizable-handle-northeast{width:6px;height:6px;right:0;top:0;z-index:101}.x-reset .x-resizable-over .x-resizable-handle-northeast{cursor:ne-resize}.x-reset .x-resizable-handle-southwest{width:6px;height:6px;left:0;bottom:0;z-index:101}.x-reset .x-resizable-over .x-resizable-handle-southwest{cursor:sw-resize}.x-reset .x-ie .x-resizable-handle-east{margin-right:-1px}.x-reset .x-ie .x-resizable-handle-south{margin-bottom:-1px}.x-reset .x-resizable-over .x-resizable-handle,.x-reset .x-resizable-pinned .x-resizable-handle{filter:alpha(opacity=100);opacity:1}.x-reset .x-window .x-window-handle{filter:alpha(opacity=0);opacity:0}.x-reset .x-window-collapsed .x-window-handle{display:none}.x-reset .x-resizable-proxy{border:1px dashed #3b5a82;position:absolute;left:0;top:0;overflow:hidden;z-index:50000}.x-reset .x-resizable-overlay{position:absolute;left:0;top:0;width:100%;height:100%;display:none;z-index:200000;background-color:#fff;filter:alpha(opacity=0);opacity:0}.x-reset .x-resizable-over .x-resizable-handle-east,.x-reset .x-resizable-over .x-resizable-handle-west,.x-reset .x-resizable-pinned .x-resizable-handle-east,.x-reset .x-resizable-pinned .x-resizable-handle-west{background-position:left;background-image:url('../../resources/themes/images/default/sizer/e-handle.gif')}.x-reset .x-resizable-over .x-resizable-handle-south,.x-reset .x-resizable-over .x-resizable-handle-north,.x-reset .x-resizable-pinned .x-resizable-handle-south,.x-reset .x-resizable-pinned .x-resizable-handle-north{background-position:top;background-image:url('../../resources/themes/images/default/sizer/s-handle.gif')}.x-reset .x-resizable-over .x-resizable-handle-southeast,.x-reset .x-resizable-pinned .x-resizable-handle-southeast{background-position:top left;background-image:url('../../resources/themes/images/default/sizer/se-handle.gif')}.x-reset .x-resizable-over .x-resizable-handle-northwest,.x-reset .x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right;background-image:url('../../resources/themes/images/default/sizer/nw-handle.gif')}.x-reset .x-resizable-over .x-resizable-handle-northeast,.x-reset .x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left;background-image:url('../../resources/themes/images/default/sizer/ne-handle.gif')}.x-reset .x-resizable-over .x-resizable-handle-southwest,.x-reset .x-resizable-pinned .x-resizable-handle-southwest{background-position:top right;background-image:url('../../resources/themes/images/default/sizer/sw-handle.gif')}.x-reset .x-splitter .x-collapse-el{position:absolute;cursor:pointer;background-color:transparent;background-repeat:no-repeat!important}.x-reset .x-layout-split-left,.x-reset .x-layout-split-right{top:50%;margin-top:-17px;width:5px;height:35px}.x-reset .x-layout-split-top,.x-reset .x-layout-split-bottom{left:50%;width:35px;height:5px;margin-left:-17px}.x-reset .x-layout-split-left{background:no-repeat top right;background-image:url('../../resources/themes/images/default/util/splitter/mini-left.gif')}.x-reset .x-layout-split-right{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-right.gif')}.x-reset .x-layout-split-top{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-top.gif')}.x-reset .x-layout-split-bottom{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-bottom.gif')}.x-reset .x-splitter-collapsed .x-layout-split-left{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-right.gif')}.x-reset .x-splitter-collapsed .x-layout-split-right{background:no-repeat top right;background-image:url('../../resources/themes/images/default/util/splitter/mini-left.gif')}.x-reset .x-splitter-collapsed .x-layout-split-top{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-bottom.gif')}.x-reset .x-splitter-collapsed .x-layout-split-bottom{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-top.gif')}.x-reset .x-splitter-horizontal{cursor:e-resize;cursor:row-resize;font-size:1px}.x-reset .x-splitter-vertical{cursor:e-resize;cursor:col-resize;font-size:1px}.x-reset .x-splitter-collapsed,.x-reset .x-splitter-horizontal-noresize,.x-reset .x-splitter-vertical-noresize{cursor:default}.x-reset .x-splitter-active{z-index:4;font-size:1px;background-color:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-reset .x-splitter-active .x-collapse-el{filter:alpha(opacity=30);opacity:.3}.x-reset .x-proxy-el{position:absolute;background:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-reset .x-docked{position:absolute!important;z-index:1}.x-reset .x-docked-top{border-bottom-width:0!important}.x-reset .x-docked-bottom{border-top-width:0!important}.x-reset .x-docked-left{border-right-width:0!important}.x-reset .x-docked-right{border-left-width:0!important}.x-reset .x-docked-noborder-top{border-top-width:0!important}.x-reset .x-docked-noborder-right{border-right-width:0!important}.x-reset .x-docked-noborder-bottom{border-bottom-width:0!important}.x-reset .x-docked-noborder-left{border-left-width:0!important}.x-reset .x-box-inner{overflow:hidden;zoom:1;position:relative;left:0;top:0}.x-reset .x-box-item{position:absolute!important;left:0;top:0}.x-reset .x-rtl .x-box-item{right:0;left:auto}.x-reset .x-box-layout-ct,.x-reset .x-border-layout-ct{overflow:hidden;zoom:1}.x-reset .x-border-layout-ct{background-color:#dfe8f6;position:relative}.x-reset .x-overflow-hidden{overflow:hidden!important}.x-reset .x-inline-children>*{display:inline-block!important}.x-reset .x-abs-layout-ct{position:relative}.x-reset .x-abs-layout-item{position:absolute!important}.x-reset .x-fit-item{position:relative}.x-reset .x-border-region-slide-in{z-index:5}.x-reset .x-region-collapsed-placeholder{z-index:4}.x-reset .x-accordion-hd .x-panel-header-text{color:black;font-weight:normal}.x-reset .x-accordion-hd{background:#d9e7f8!important;-moz-box-shadow:inset 0 0 0 0 #d9e7f8;-webkit-box-shadow:inset 0 0 0 0 #d9e7f8;-o-box-shadow:inset 0 0 0 0 #d9e7f8;box-shadow:inset 0 0 0 0 #d9e7f8}.x-reset .x-accordion-hd .x-tool-collapse-top,.x-reset .x-accordion-hd .x-tool-collapse-right,.x-reset .x-accordion-hd .x-tool-collapse-bottom,.x-reset .x-accordion-hd .x-tool-collapse-left{background-position:0 -255px}.x-reset .x-accordion-hd .x-tool-expand-top,.x-reset .x-accordion-hd .x-tool-expand-right,.x-reset .x-accordion-hd .x-tool-expand-bottom,.x-reset .x-accordion-hd .x-tool-expand-left{background-position:0 -240px}.x-reset .x-accordion-hd .x-tool-over .x-tool-collapse-top,.x-reset .x-accordion-hd .x-tool-over .x-tool-collapse-right,.x-reset .x-accordion-hd .x-tool-over .x-tool-collapse-bottom,.x-reset .x-accordion-hd .x-tool-over .x-tool-collapse-left{background-position:-15px -255px}.x-reset .x-accordion-hd .x-tool-over .x-tool-expand-top,.x-reset .x-accordion-hd .x-tool-over .x-tool-expand-right,.x-reset .x-accordion-hd .x-tool-over .x-tool-expand-bottom,.x-reset .x-accordion-hd .x-tool-over .x-tool-expand-left{background-position:-15px -240px}.x-reset .x-accordion-hd{border-width:1px 0 1px 0!important;padding:4px 5px 5px 5px;border-top-color:#f3f7fb!important}.x-reset .x-accordion-body{border-width:0!important}.x-reset .x-accordion-hd-sibling-expanded{border-top-color:#99bce8!important;-moz-box-shadow:inset 0 1px 0 0 #f3f7fb;-webkit-box-shadow:inset 0 1px 0 0 #f3f7fb;-o-box-shadow:inset 0 1px 0 0 #f3f7fb;box-shadow:inset 0 1px 0 0 #f3f7fb}.x-reset .x-accordion-hd-last-collapsed{border-bottom-color:#d9e7f8!important}.x-reset .x-frame-tl,.x-reset .x-frame-tr,.x-reset .x-frame-tc,.x-reset .x-frame-bl,.x-reset .x-frame-br,.x-reset .x-frame-bc{overflow:hidden;background-repeat:no-repeat}.x-reset .x-frame-tc,.x-reset .x-frame-bc{background-repeat:repeat-x}.x-reset .x-frame-mc{position:relative;background-repeat:repeat-x;overflow:hidden}.x-reset .x-box-scroller-left{float:left;height:100%;z-index:5}.x-reset .x-box-scroller-left .x-toolbar-scroll-left,.x-reset .x-box-scroller-left .x-tabbar-scroll-left{width:18px;position:relative;cursor:pointer;height:20px;background:transparent no-repeat -18px 0;background-image:url('../../resources/themes/images/default/tab-bar/scroll-left.gif')}.x-reset .x-box-scroller-left .x-toolbar-scroll-left-hover{background-position:0 0}.x-reset .x-box-scroller-left .x-toolbar-scroll-left-disabled,.x-reset .x-box-scroller-left .x-tabbar-scroll-left-disabled{background-position:-18px 0;filter:alpha(opacity=50);opacity:.5;cursor:default}.x-reset .x-box-scroller-left .x-toolbar-scroll-left{background-image:url('../../resources/themes/images/default/toolbar/scroll-left.gif');background-position:-14px 0}.x-reset .x-box-scroller-left .x-toolbar-scroll-left-hover{background-position:0 0}.x-reset .x-box-scroller-left .x-toolbar-scroll-left-disabled{background-position:-14px 0}.x-reset .x-box-scroller-left .x-toolbar-scroll-left{width:14px;height:22px;border-bottom:1px solid #8db2e3}.x-reset .x-horizontal-box-overflow-body{float:left}.x-reset .x-box-scroller-right{float:right;height:100%;z-index:5}.x-reset .x-box-scroller-right .x-toolbar-scroll-right,.x-reset .x-box-scroller-right .x-tabbar-scroll-right{width:18px;position:relative;cursor:pointer;height:20px;background:transparent no-repeat 0 0;background-image:url('../../resources/themes/images/default/tab-bar/scroll-right.gif')}.x-reset .x-box-scroller-right .x-toolbar-scroll-right-hover{background-position:-18px 0}.x-reset .x-box-scroller-right .x-toolbar-scroll-right-disabled,.x-reset .x-box-scroller-right .x-tabbar-scroll-right-disabled{background-position:0 0;filter:alpha(opacity=50);opacity:.5;cursor:default}.x-reset .x-box-scroller-right .x-toolbar-scroll-right{background-image:url('../../resources/themes/images/default/toolbar/scroll-right.gif')}.x-reset .x-box-scroller-right .x-toolbar-scroll-right-hover{background-position:-14px 0}.x-reset .x-box-scroller-right .x-toolbar-scroll-right-disabled{background-position:0 0}.x-reset .x-box-scroller-right .x-toolbar-scroll-right{width:14px;height:22px;border-bottom:1px solid #8db2e3}.x-reset .x-box-scroller-top .x-box-scroller{line-height:0;font-size:0}.x-reset .x-box-scroller-top .x-menu-scroll-top{background:transparent no-repeat center center;background-image:url('../../resources/themes/images/default/layout/mini-top.gif');height:8px;cursor:pointer}.x-reset .x-box-scroller-bottom .x-box-scroller{line-height:0;font-size:0}.x-reset .x-box-scroller-bottom .x-menu-scroll-bottom{background:transparent no-repeat center center;background-image:url('../../resources/themes/images/default/layout/mini-bottom.gif');height:8px;cursor:pointer}.x-reset .x-box-menu-right{float:right;padding-right:2px}.x-reset .x-column{float:left}.x-reset .x-tool{height:15px}.x-reset .x-tool img{overflow:hidden;width:15px;height:15px;cursor:pointer;background-color:transparent;background-repeat:no-repeat;background-image:url('../../resources/themes/images/default/tools/tool-sprites.gif');margin:0}.x-reset .x-panel-header-horizontal .x-tool,.x-reset .x-window-header-horizontal .x-tool{margin-left:2px}.x-reset .x-panel-header-vertical .x-tool,.x-reset .x-window-header-vertical .x-tool{margin-top:2px}.x-reset .x-panel-header-vertical .x-tool-top,.x-reset .x-window-header-vertical .x-tool-top{margin:0 0 4px}.x-reset .x-tool-placeholder{visibility:hidden}.x-reset .x-tool-toggle{background-position:0 -60px}.x-reset .x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-reset .x-panel-collapsed .x-tool-toggle,.x-reset .x-fieldset-collapsed .x-tool-toggle{background-position:0 -75px}.x-reset .x-panel-collapsed .x-tool-over .x-tool-toggle,.x-reset .x-fieldset-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.x-reset .x-tool-close{background-position:0 0}.x-reset .x-tool-minimize{background-position:0 -15px}.x-reset .x-tool-maximize{background-position:0 -30px}.x-reset .x-tool-restore{background-position:0 -45px}.x-reset .x-tool-gear{background-position:0 -90px}.x-reset .x-tool-prev{background-position:0 -105px}.x-reset .x-tool-next{background-position:0 -120px}.x-reset .x-tool-pin{background-position:0 -135px}.x-reset .x-tool-unpin{background-position:0 -150px}.x-reset .x-tool-right{background-position:0 -165px}.x-reset .x-tool-left{background-position:0 -180px}.x-reset .x-tool-help{background-position:0 -300px}.x-reset .x-tool-save{background-position:0 -285px}.x-reset .x-tool-search{background-position:0 -270px}.x-reset .x-tool-minus{background-position:0 -255px}.x-reset .x-tool-plus{background-position:0 -240px}.x-reset .x-tool-refresh{background-position:0 -225px}.x-reset .x-tool-up{background-position:0 -210px}.x-reset .x-tool-down{background-position:0 -195px}.x-reset .x-tool-collapse{background-position:0 -345px}.x-reset .x-tool-expand{background-position:0 -330px}.x-reset .x-tool-print{background-position:0 -315px}.x-reset .x-tool-expand-bottom,.x-reset .x-tool-collapse-bottom{background-position:0 -195px}.x-reset .x-tool-expand-top,.x-reset .x-tool-collapse-top{background-position:0 -210px}.x-reset .x-tool-expand-left,.x-reset .x-tool-collapse-left{background-position:0 -180px}.x-reset .x-tool-expand-right,.x-reset .x-tool-collapse-right{background-position:0 -165px}.x-reset .x-tool-over .x-tool-close{background-position:-15px 0}.x-reset .x-tool-over .x-tool-minimize{background-position:-15px -15px}.x-reset .x-tool-over .x-tool-maximize{background-position:-15px -30px}.x-reset .x-tool-over .x-tool-restore{background-position:-15px -45px}.x-reset .x-tool-over .x-tool-gear{background-position:-15px -90px}.x-reset .x-tool-over .x-tool-prev{background-position:-15px -105px}.x-reset .x-tool-over .x-tool-next{background-position:-15px -120px}.x-reset .x-tool-over .x-tool-pin{background-position:-15px -135px}.x-reset .x-tool-over .x-tool-unpin{background-position:-15px -150px}.x-reset .x-tool-over .x-tool-right{background-position:-15px -165px}.x-reset .x-tool-over .x-tool-left{background-position:-15px -180px}.x-reset .x-tool-over .x-tool-down{background-position:-15px -195px}.x-reset .x-tool-over .x-tool-up{background-position:-15px -210px}.x-reset .x-tool-over .x-tool-refresh{background-position:-15px -225px}.x-reset .x-tool-over .x-tool-plus{background-position:-15px -240px}.x-reset .x-tool-over .x-tool-minus{background-position:-15px -255px}.x-reset .x-tool-over .x-tool-search{background-position:-15px -270px}.x-reset .x-tool-over .x-tool-save{background-position:-15px -285px}.x-reset .x-tool-over .x-tool-help{background-position:-15px -300px}.x-reset .x-tool-over .x-tool-print{background-position:-15px -315px}.x-reset .x-tool-over .x-tool-expand{background-position:-15px -330px}.x-reset .x-tool-over .x-tool-collapse{background-position:-15px -345px}.x-reset .x-tool-over .x-tool-expand-bottom,.x-reset .x-tool-over .x-tool-collapse-bottom{background-position:-15px -195px}.x-reset .x-tool-over .x-tool-expand-top,.x-reset .x-tool-over .x-tool-collapse-top{background-position:-15px -210px}.x-reset .x-tool-over .x-tool-expand-left,.x-reset .x-tool-over .x-tool-collapse-left{background-position:-15px -180px}.x-reset .x-tool-over .x-tool-expand-right,.x-reset .x-tool-over .x-tool-collapse-right{background-position:-15px -165px}.x-reset .x-horizontal-scroller-present .x-grid-body{border-bottom-width:0}.x-reset .x-vertical-scroller-present .x-grid-body{border-right-width:0}.x-reset .x-scroller{overflow:hidden}.x-reset .x-scroller-vertical{border:1px solid #99bce8;border-top-color:#c5c5c5}.x-reset .x-scroller-horizontal{border:1px solid #99bce8}.x-reset .x-vertical-scroller-present .x-scroller-horizontal{border-right-width:0}.x-reset .x-scroller-ct{overflow:hidden;position:absolute;margin:0;padding:0;border:0;left:0;top:0;box-sizing:content-box!important;-ms-box-sizing:content-box!important;-moz-box-sizing:content-box!important;-webkit-box-sizing:content-box!important}.x-reset .x-scroller-vertical .x-scroller-ct{overflow-y:scroll}.x-reset .x-scroller-horizontal .x-scroller-ct{overflow-x:scroll}.x-reset .x-html html,.x-reset .x-html address,.x-reset .x-html blockquote,.x-reset .x-html body,.x-reset .x-html dd,.x-reset .x-html div,.x-reset .x-html dl,.x-reset .x-html dt,.x-reset .x-html fieldset,.x-reset .x-html form,.x-reset .x-html frame,.x-reset .x-html frameset,.x-reset .x-html h1,.x-reset .x-html h2,.x-reset .x-html h3,.x-reset .x-html h4,.x-reset .x-html h5,.x-reset .x-html h6,.x-reset .x-html noframes,.x-reset .x-html ol,.x-reset .x-html p,.x-reset .x-html ul,.x-reset .x-html center,.x-reset .x-html dir,.x-reset .x-html hr,.x-reset .x-html menu,.x-reset .x-html pre{display:block}.x-reset .x-html li{display:list-item;list-style:disc}.x-reset .x-html head{display:none}.x-reset .x-html table{display:table}.x-reset .x-html tr{display:table-row}.x-reset .x-html thead{display:table-header-group}.x-reset .x-html tbody{display:table-row-group}.x-reset .x-html tfoot{display:table-footer-group}.x-reset .x-html col{display:table-column}.x-reset .x-html colgroup{display:table-column-group}.x-reset .x-html td,.x-reset .x-html th{display:table-cell}.x-reset .x-html caption{display:table-caption}.x-reset .x-html th{font-weight:bolder;text-align:center}.x-reset .x-html caption{text-align:center}.x-reset .x-html body{margin:8px}.x-reset .x-html h1{font-size:2em;margin:.67em 0}.x-reset .x-html h2{font-size:1.5em;margin:.75em 0}.x-reset .x-html h3{font-size:1.17em;margin:.83em 0}.x-reset .x-html h4,.x-reset .x-html p,.x-reset .x-html blockquote,.x-reset .x-html ul,.x-reset .x-html fieldset,.x-reset .x-html form,.x-reset .x-html ol,.x-reset .x-html dl,.x-reset .x-html dir,.x-reset .x-html menu{margin:1.12em 0}.x-reset .x-html h5{font-size:.83em;margin:1.5em 0}.x-reset .x-html h6{font-size:.75em;margin:1.67em 0}.x-reset .x-html h1,.x-reset .x-html h2,.x-reset .x-html h3,.x-reset .x-html h4,.x-reset .x-html h5,.x-reset .x-html h6,.x-reset .x-html b,.x-reset .x-html strong{font-weight:bolder}.x-reset .x-html blockquote{margin-left:40px;margin-right:40px}.x-reset .x-html i,.x-reset .x-html cite,.x-reset .x-html em,.x-reset .x-html var,.x-reset .x-html address{font-style:italic}.x-reset .x-html pre,.x-reset .x-html tt,.x-reset .x-html code,.x-reset .x-html kbd,.x-reset .x-html samp{font-family:monospace}.x-reset .x-html pre{white-space:pre}.x-reset .x-html button,.x-reset .x-html textarea,.x-reset .x-html input,.x-reset .x-html select{display:inline-block}.x-reset .x-html big{font-size:1.17em}.x-reset .x-html small,.x-reset .x-html sub,.x-reset .x-html sup{font-size:.83em}.x-reset .x-html sub{vertical-align:sub}.x-reset .x-html sup{vertical-align:super}.x-reset .x-html table{border-spacing:2px}.x-reset .x-html thead,.x-reset .x-html tbody,.x-reset .x-html tfoot{vertical-align:middle}.x-reset .x-html td,.x-reset .x-html th{vertical-align:inherit}.x-reset .x-html s,.x-reset .x-html strike,.x-reset .x-html del{text-decoration:line-through}.x-reset .x-html hr{border:1px inset}.x-reset .x-html ol,.x-reset .x-html ul,.x-reset .x-html dir,.x-reset .x-html menu,.x-reset .x-html dd{margin-left:40px}.x-reset .x-html ul,.x-reset .x-html menu,.x-reset .x-html dir{list-style-type:disc}.x-reset .x-html ol{list-style-type:decimal}.x-reset .x-html ol ul,.x-reset .x-html ul ol,.x-reset .x-html ul ul,.x-reset .x-html ol ol{margin-top:0;margin-bottom:0}.x-reset .x-html u,.x-reset .x-html ins{text-decoration:underline}.x-reset .x-html br:before{content:"\A"}.x-reset .x-html :before,.x-reset .x-html :after{white-space:pre-line}.x-reset .x-html center{text-align:center}.x-reset .x-html :link,.x-reset .x-html :visited{text-decoration:underline}.x-reset .x-html :focus{outline:invert dotted thin}.x-reset .x-html BDO[DIR="ltr"]{direction:ltr;unicode-bidi:bidi-override}.x-reset .x-html BDO[DIR="rtl"]{direction:rtl;unicode-bidi:bidi-override}.x-border-box .x-reset .x-tab-default-top{height:21px}.x-border-box .x-reset .x-tab-default-bottom{height:21px}.x-border-box .x-reset .x-tip-anchor{width:10px;height:10px}.x-border-box .x-reset .x-form-text{height:22px}.x-border-box .x-reset textarea.x-form-field{height:auto}.x-border-box .x-reset .x-field-default-toolbar .x-form-text{height:20px}.x-border-box .x-reset .x-form-trigger{height:22px}.x-border-box .x-reset .x-field-default-toolbar .x-form-trigger{height:20px}.x-webkit .x-reset *:focus{outline:none!important}.x-webkit .x-reset .x-form-empty-field{line-height:15px}.x-webkit .x-reset .x-fieldset-header{padding-top:1px}.x-border-box .x-reset .x-tab-bar-top .x-tab-bar-body{height:25px}.x-border-box .x-reset .x-tab-bar-top .x-tab-bar-strip{height:3px}.x-border-box .x-reset .x-tab-bar-top .x-tab-bar-body-default-plain{height:22px}.x-border-box .x-reset .x-tab-bar-top .x-tab-bar-strip-default-plain{height:3px}.x-border-box .x-reset .x-tab-bar-bottom .x-tab-bar-body{height:25px}.x-border-box .x-reset .x-tab-bar-bottom .x-tab-bar-strip{height:3px}.x-border-box .x-reset .x-tab-bar-bottom .x-tab-bar-body-default-plain{height:23px}.x-border-box .x-reset .x-tab-bar-bottom .x-tab-bar-strip-default-plain{height:3px}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-standard.css
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-standard.css	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/css/ext-standard.css	(revision 18277)
@@ -0,0 +1,21 @@
+/*
+This file is part of Ext JS 4.1
+
+Copyright (c) 2011-2012 Sencha Inc
+
+Contact:  http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as
+published by the Free Software Foundation and appearing in the file LICENSE included in the
+packaging of this file.
+
+Please review the following information to ensure the GNU General Public License version 3.0
+requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department
+at http://www.sencha.com/contact.
+
+Build date: 2012-07-04 21:11:01 (65ff594cd80b9bad45df640c22cc0adb52c95a7b)
+*/
+html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}li{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%}q:before,q:after{content:""}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit}*:focus{outline:0}.x-border-box,.x-border-box *{box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box}.x-body{color:black;font-size:12px;font-family:tahoma,arial,verdana,sans-serif}.x-rtl{direction:rtl}.x-ltr{direction:ltr}.x-clear{overflow:hidden;clear:both;font-size:0;line-height:0;display:table}.x-strict .x-ie7 .x-clear{height:0;width:0}.x-layer{position:absolute!important;overflow:hidden;zoom:1}.x-shim{position:absolute;left:0;top:0;overflow:hidden;filter:alpha(opacity=0);opacity:0}.x-hide-display{display:none!important}.x-hide-visibility{visibility:hidden!important}.x-item-disabled .x-form-item-label,.x-item-disabled .x-form-field,.x-item-disabled .x-form-cb-label,.x-item-disabled .x-form-trigger{filter:alpha(opacity=30);opacity:.3}.x-ie6 .x-item-disabled{filter:none}.x-hidden,.x-hide-offsets{display:block!important;visibility:hidden!important;position:absolute!important;left:-10000px!important;top:-10000px!important}.x-hide-nosize{height:0!important;width:0!important}.x-masked-relative{position:relative}.x-css-shadow{position:absolute;-moz-border-radius:5px 5px;-webkit-border-radius:5px 5px;-o-border-radius:5px 5px;-ms-border-radius:5px 5px;-khtml-border-radius:5px 5px;border-radius:5px 5px}.x-ie-shadow{background-color:#777;display:none;position:absolute;overflow:hidden;zoom:1}.x-box-tl{background:transparent no-repeat 0 0;zoom:1}.x-box-tc{height:8px;background:transparent repeat-x 0 0;overflow:hidden}.x-box-tr{background:transparent no-repeat right -8px}.x-box-ml{background:transparent repeat-y 0;padding-left:4px;overflow:hidden;zoom:1}.x-box-mc{background:repeat-x 0 -16px;padding:4px 10px}.x-box-mc h3{margin:0 0 4px 0;zoom:1}.x-box-mr{background:transparent repeat-y right;padding-right:4px;overflow:hidden}.x-box-bl{background:transparent no-repeat 0 -16px;zoom:1}.x-box-bc{background:transparent repeat-x 0 -8px;height:8px;overflow:hidden}.x-box-br{background:transparent no-repeat right -24px}.x-box-tl,.x-box-bl{padding-left:8px;overflow:hidden}.x-box-tr,.x-box-br{padding-right:8px;overflow:hidden}.x-box-tl{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-tc{background-image:url('../../resources/themes/images/default/box/tb.gif')}.x-box-tr{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-ml{background-image:url('../../resources/themes/images/default/box/l.gif')}.x-box-mc{background-color:#eee;background-image:url('../../resources/themes/images/default/box/tb.gif');font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:15px}.x-box-mc h3{font-size:18px;font-weight:bold}.x-box-mr{background-image:url('../../resources/themes/images/default/box/r.gif')}.x-box-bl{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-bc{background-image:url('../../resources/themes/images/default/box/tb.gif')}.x-box-br{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-blue .x-box-bl,.x-box-blue .x-box-br,.x-box-blue .x-box-tl,.x-box-blue .x-box-tr{background-image:url('../../resources/themes/images/default/box/corners-blue.gif')}.x-box-blue .x-box-bc,.x-box-blue .x-box-mc,.x-box-blue .x-box-tc{background-image:url('../../resources/themes/images/default/box/tb-blue.gif')}.x-box-blue .x-box-mc{background-color:#c3daf9}.x-box-blue .x-box-mc h3{color:#17385b}.x-box-blue .x-box-ml{background-image:url('../../resources/themes/images/default/box/l-blue.gif')}.x-box-blue .x-box-mr{background-image:url('../../resources/themes/images/default/box/r-blue.gif')}.x-container{zoom:1}.x-container:before{content:"";clear:both;display:table}table.x-container:before,tbody.x-container:before,tr.x-container:before{display:none}.x-focus-element{position:absolute;top:-10px;left:-10px;width:0;height:0}.x-focus-frame{position:absolute;left:0;top:0;z-index:100000000;width:0;height:0}.x-focus-frame-top,.x-focus-frame-bottom,.x-focus-frame-left,.x-focus-frame-right{position:absolute;top:0;left:0}.x-focus-frame-top,.x-focus-frame-bottom{border-top:solid 2px #15428b;height:2px}.x-focus-frame-left,.x-focus-frame-right{border-left:solid 2px #15428b;width:2px}.x-mask{z-index:100;position:absolute;top:0;left:0;filter:alpha(opacity=50);opacity:.5;width:100%;height:100%;zoom:1;background:#ccc}.x-mask-msg{z-index:20001;position:absolute;top:0;left:0;padding:2px;border:1px solid;border-color:#99bce8}.x-mask-msg div{padding:5px 10px 5px 25px;background-image:url('../../resources/themes/images/default/grid/loading.gif');background-repeat:no-repeat;background-position:5px center;cursor:wait;border:1px solid #a3bad9;background-color:#eee;color:#222;font:normal 11px tahoma,arial,verdana,sans-serif}.x-boundlist{border-width:1px;border-style:solid;border-color:#98c0f4;background:white}.x-boundlist .x-toolbar{border-width:1px 0 0 0}.x-boundlist-item{padding:2px;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;cursor:pointer;cursor:hand;position:relative;border-width:1px;border-style:dotted;border-color:white}.x-boundlist-selected{background:#cbdaf0;border-color:#8eabe4}.x-boundlist-item-over{background:#dfe8f6;border-color:#a3bae9}.x-boundlist-floating{border-top-width:0}.x-boundlist-above{border-top-width:1px;border-bottom-width:1px}.x-btn{display:inline-block;zoom:1;*display:inline;position:relative;cursor:pointer;cursor:hand;white-space:nowrap;vertical-align:middle;background-repeat:no-repeat}.x-btn *{cursor:pointer;cursor:hand}.x-btn em{background-repeat:no-repeat}.x-btn em a{text-decoration:none;display:block;color:inherit;width:100%;zoom:1}.x-btn button{width:100%;display:block;margin:0;padding:0;border:0;background:0;outline:0 none;overflow:hidden;vertical-align:bottom;-webkit-appearance:none}.x-btn button::-moz-focus-inner{border:0;padding:0}.x-btn .x-btn-inner{display:block;white-space:nowrap;background-color:transparent;background-repeat:no-repeat;background-position:left center;overflow:hidden}.x-btn .x-btn-left .x-btn-inner{text-align:left}.x-btn .x-btn-center .x-btn-inner{text-align:center}.x-btn .x-btn-right .x-btn-inner{text-align:right}.x-btn-disabled span{filter:alpha(opacity=50);opacity:.5}.x-ie6 .x-btn-disabled span,.x-ie7 .x-btn-disabled span{filter:none}.x-ie7 .x-btn-disabled,.x-ie8 .x-btn-disabled{filter:none}.x-ie6 .x-btn-disabled .x-btn-icon,.x-ie7 .x-btn-disabled .x-btn-icon,.x-ie8 .x-btn-disabled .x-btn-icon{filter:alpha(opacity=60);opacity:.6}.x-btn-icon-text-left .x-btn-icon{background-position:left center}.x-btn-icon-text-right .x-btn-icon{background-position:right center}.x-btn-icon-text-top .x-btn-icon{background-position:center top}.x-btn-icon-text-bottom .x-btn-icon{background-position:center bottom}.x-btn button,.x-btn a{position:relative}.x-btn button .x-btn-icon,.x-btn a .x-btn-icon{position:absolute;background-repeat:no-repeat}.x-btn-arrow-right{background:transparent no-repeat right center;padding-right:12px}.x-btn-arrow-right .x-btn-inner{padding-right:0!important}.x-toolbar .x-btn-arrow-right{padding-right:12px}.x-btn-arrow-bottom{background:transparent no-repeat center bottom;padding-bottom:12px}.x-btn-arrow{background-image:url('../../resources/themes/images/default/button/arrow.gif');display:block}.x-btn-split-right,.x-btn-over .x-btn-split-right{background:transparent no-repeat right center;background-image:url('../../resources/themes/images/default/button/s-arrow.gif');padding-right:14px!important}.x-btn-split-bottom,.x-btn-over .x-btn-split-bottom{background:transparent no-repeat center bottom;background-image:url('../../resources/themes/images/default/button/s-arrow-b.gif');padding-bottom:14px}.x-toolbar .x-btn-split-right{background-image:url('../../resources/themes/images/default/button/s-arrow-noline.gif');padding-right:12px!important}.x-toolbar .x-btn-split-bottom{background-image:url('../../resources/themes/images/default/button/s-arrow-b-noline.gif')}.x-btn-split{display:block}.x-item-disabled,.x-item-disabled *{cursor:default}.x-cycle-fixed-width .x-btn-inner{text-align:inherit}.x-btn-over .x-btn-split-right{background-image:url('../../resources/themes/images/default/button/s-arrow-o.gif')}.x-btn-over .x-btn-split-bottom{background-image:url('../../resources/themes/images/default/button/s-arrow-bo.gif')}.x-btn-default-small{border-color:#d1d1d1}.x-btn-default-small{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:white}.x-nlg .x-btn-default-small-mc{background-image:url('../../resources/themes/images/default/btn/btn-default-small-bg.gif');background-color:white}.x-btn-default-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 4px}.x-btn-default-small-icon button,.x-btn-default-small-icon a,.x-btn-default-small-icon .x-btn-inner,.x-btn-default-small-noicon button,.x-btn-default-small-noicon a,.x-btn-default-small-noicon .x-btn-inner{height:16px;line-height:16px}.x-btn-default-small-icon button,.x-btn-default-small-icon a{padding:0}.x-btn-default-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-small-icon .x-btn-icon{width:16px;height:16px;top:0;left:0;bottom:0;right:0}.x-btn-default-small-icon-text-left button,.x-btn-default-small-icon-text-left a{height:16px}.x-btn-default-small-icon-text-left .x-btn-inner{height:16px;line-height:16px;padding-left:20px}.x-btn-default-small-icon-text-left .x-btn-icon{width:16px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-small-icon-text-left .x-btn-icon{height:16px}.x-btn-default-small-icon-text-right button,.x-btn-default-small-icon-text-right a{height:16px}.x-btn-default-small-icon-text-right .x-btn-inner{height:16px;line-height:16px;padding-right:20px!important}.x-btn-default-small-icon-text-right .x-btn-icon{width:16px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-small-icon-text-right .x-btn-icon{height:16px}.x-btn-default-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-small-icon-text-top .x-btn-icon{width:auto;height:16px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon{width:16px}.x-btn-default-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-small-icon-text-bottom .x-btn-icon{width:auto;height:16px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon{width:16px}.x-btn-default-small-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-small-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-small-menu-active,.x-btn-default-small-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-ms-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-btn-default-small-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-ms-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-btn-default-small-disabled .x-btn-inner{color:#333!important}.x-ie .x-btn-default-small-disabled .x-btn-inner{color:#595959!important}.x-ie6 .x-btn-default-small-disabled .x-btn-inner{color:#8c8c8c!important}.x-nlg .x-btn-default-small{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-bg.gif')}.x-nlg .x-btn-default-small-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-over-bg.gif')}.x-nlg .x-btn-default-small-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-focus-bg.gif')}.x-nlg .x-btn-default-small-menu-active,.x-nlg .x-btn-default-small-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-pressed-bg.gif')}.x-nlg .x-btn-default-small-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-small-disabled-bg.gif')}.x-btn-default-medium{border-color:#d1d1d1}.x-btn-default-medium{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:white}.x-nlg .x-btn-default-medium-mc{background-image:url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif');background-color:white}.x-btn-default-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-btn-default-medium-icon button,.x-btn-default-medium-icon a,.x-btn-default-medium-icon .x-btn-inner,.x-btn-default-medium-noicon button,.x-btn-default-medium-noicon a,.x-btn-default-medium-noicon .x-btn-inner{height:24px;line-height:24px}.x-btn-default-medium-icon button,.x-btn-default-medium-icon a{padding:0}.x-btn-default-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-medium-icon .x-btn-icon{width:24px;height:24px;top:0;left:0;bottom:0;right:0}.x-btn-default-medium-icon-text-left button,.x-btn-default-medium-icon-text-left a{height:24px}.x-btn-default-medium-icon-text-left .x-btn-inner{height:24px;line-height:24px;padding-left:28px}.x-btn-default-medium-icon-text-left .x-btn-icon{width:24px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon{height:24px}.x-btn-default-medium-icon-text-right button,.x-btn-default-medium-icon-text-right a{height:24px}.x-btn-default-medium-icon-text-right .x-btn-inner{height:24px;line-height:24px;padding-right:28px!important}.x-btn-default-medium-icon-text-right .x-btn-icon{width:24px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon{height:24px}.x-btn-default-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-medium-icon-text-top .x-btn-icon{width:auto;height:24px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon{width:24px}.x-btn-default-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-medium-icon-text-bottom .x-btn-icon{width:auto;height:24px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon{width:24px}.x-btn-default-medium-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-medium-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-medium-menu-active,.x-btn-default-medium-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-ms-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-btn-default-medium-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-ms-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-btn-default-medium-disabled .x-btn-inner{color:#333!important}.x-ie .x-btn-default-medium-disabled .x-btn-inner{color:#595959!important}.x-ie6 .x-btn-default-medium-disabled .x-btn-inner{color:#8c8c8c!important}.x-nlg .x-btn-default-medium{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-bg.gif')}.x-nlg .x-btn-default-medium-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-over-bg.gif')}.x-nlg .x-btn-default-medium-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-focus-bg.gif')}.x-nlg .x-btn-default-medium-menu-active,.x-nlg .x-btn-default-medium-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif')}.x-nlg .x-btn-default-medium-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif')}.x-btn-default-large{border-color:#d1d1d1}.x-btn-default-large{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:white}.x-nlg .x-btn-default-large-mc{background-image:url('../../resources/themes/images/default/btn/btn-default-large-bg.gif');background-color:white}.x-btn-default-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-btn-default-large-icon button,.x-btn-default-large-icon a,.x-btn-default-large-icon .x-btn-inner,.x-btn-default-large-noicon button,.x-btn-default-large-noicon a,.x-btn-default-large-noicon .x-btn-inner{height:32px;line-height:32px}.x-btn-default-large-icon button,.x-btn-default-large-icon a{padding:0}.x-btn-default-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-large-icon .x-btn-icon{width:32px;height:32px;top:0;left:0;bottom:0;right:0}.x-btn-default-large-icon-text-left button,.x-btn-default-large-icon-text-left a{height:32px}.x-btn-default-large-icon-text-left .x-btn-inner{height:32px;line-height:32px;padding-left:36px}.x-btn-default-large-icon-text-left .x-btn-icon{width:32px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-large-icon-text-left .x-btn-icon{height:32px}.x-btn-default-large-icon-text-right button,.x-btn-default-large-icon-text-right a{height:32px}.x-btn-default-large-icon-text-right .x-btn-inner{height:32px;line-height:32px;padding-right:36px!important}.x-btn-default-large-icon-text-right .x-btn-icon{width:32px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-large-icon-text-right .x-btn-icon{height:32px}.x-btn-default-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-large-icon-text-top .x-btn-icon{width:auto;height:32px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon{width:32px}.x-btn-default-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-large-icon-text-bottom .x-btn-icon{width:auto;height:32px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon{width:32px}.x-btn-default-large-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-large-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-ms-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-large-menu-active,.x-btn-default-large-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-ms-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-btn-default-large-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-ms-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-btn-default-large-disabled .x-btn-inner{color:#333!important}.x-ie .x-btn-default-large-disabled .x-btn-inner{color:#595959!important}.x-ie6 .x-btn-default-large-disabled .x-btn-inner{color:#8c8c8c!important}.x-nlg .x-btn-default-large{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-bg.gif')}.x-nlg .x-btn-default-large-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-over-bg.gif')}.x-nlg .x-btn-default-large-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-focus-bg.gif')}.x-nlg .x-btn-default-large-menu-active,.x-nlg .x-btn-default-large-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-pressed-bg.gif')}.x-nlg .x-btn-default-large-disabled{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-large-disabled-bg.gif')}.x-btn-default-toolbar-small{border-color:transparent}.x-btn-default-toolbar-small{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:transparent}.x-nlg .x-btn-default-toolbar-small-mc{background-color:transparent}.x-btn-default-toolbar-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 4px}.x-btn-default-toolbar-small-icon button,.x-btn-default-toolbar-small-icon a,.x-btn-default-toolbar-small-icon .x-btn-inner,.x-btn-default-toolbar-small-noicon button,.x-btn-default-toolbar-small-noicon a,.x-btn-default-toolbar-small-noicon .x-btn-inner{height:16px;line-height:16px}.x-btn-default-toolbar-small-icon button,.x-btn-default-toolbar-small-icon a{padding:0}.x-btn-default-toolbar-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-toolbar-small-icon .x-btn-icon{width:16px;height:16px;top:0;left:0;bottom:0;right:0}.x-btn-default-toolbar-small-icon-text-left button,.x-btn-default-toolbar-small-icon-text-left a{height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-inner{height:16px;line-height:16px;padding-left:20px}.x-btn-default-toolbar-small-icon-text-left .x-btn-icon{width:16px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon{height:16px}.x-btn-default-toolbar-small-icon-text-right button,.x-btn-default-toolbar-small-icon-text-right a{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-btn-inner{height:16px;line-height:16px;padding-right:20px!important}.x-btn-default-toolbar-small-icon-text-right .x-btn-icon{width:16px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon{height:16px}.x-btn-default-toolbar-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-toolbar-small-icon-text-top .x-btn-icon{width:auto;height:16px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon{width:16px}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon{width:auto;height:16px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon{width:16px}.x-btn-default-toolbar-small-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-small-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-small-menu-active,.x-btn-default-toolbar-small-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-ms-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-btn-default-toolbar-small-disabled{background-image:none;background-color:transparent}.x-btn-default-toolbar-small-disabled .x-btn-inner{color:#333!important}.x-ie .x-btn-default-toolbar-small-disabled .x-btn-inner{color:#595959!important}.x-ie6 .x-btn-default-toolbar-small-disabled .x-btn-inner{color:#8c8c8c!important}.x-nlg .x-btn-default-toolbar-small-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif')}.x-nlg .x-btn-default-toolbar-small-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif')}.x-nlg .x-btn-default-toolbar-small-menu-active,.x-nlg .x-btn-default-toolbar-small-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif')}.x-btn-default-toolbar-medium{border-color:transparent}.x-btn-default-toolbar-medium{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-nlg .x-btn-default-toolbar-medium-mc{background-color:transparent}.x-btn-default-toolbar-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-btn-default-toolbar-medium-icon button,.x-btn-default-toolbar-medium-icon a,.x-btn-default-toolbar-medium-icon .x-btn-inner,.x-btn-default-toolbar-medium-noicon button,.x-btn-default-toolbar-medium-noicon a,.x-btn-default-toolbar-medium-noicon .x-btn-inner{height:24px;line-height:24px}.x-btn-default-toolbar-medium-icon button,.x-btn-default-toolbar-medium-icon a{padding:0}.x-btn-default-toolbar-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-toolbar-medium-icon .x-btn-icon{width:24px;height:24px;top:0;left:0;bottom:0;right:0}.x-btn-default-toolbar-medium-icon-text-left button,.x-btn-default-toolbar-medium-icon-text-left a{height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner{height:24px;line-height:24px;padding-left:28px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon{width:24px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon{height:24px}.x-btn-default-toolbar-medium-icon-text-right button,.x-btn-default-toolbar-medium-icon-text-right a{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner{height:24px;line-height:24px;padding-right:28px!important}.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon{width:24px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon{height:24px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon{width:auto;height:24px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon{width:24px}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon{width:auto;height:24px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon{width:24px}.x-btn-default-toolbar-medium-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-medium-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-medium-menu-active,.x-btn-default-toolbar-medium-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-ms-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-btn-default-toolbar-medium-disabled{background-image:none;background-color:transparent}.x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#333!important}.x-ie .x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#595959!important}.x-ie6 .x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#8c8c8c!important}.x-nlg .x-btn-default-toolbar-medium-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif')}.x-nlg .x-btn-default-toolbar-medium-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif')}.x-nlg .x-btn-default-toolbar-medium-menu-active,.x-nlg .x-btn-default-toolbar-medium-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif')}.x-btn-default-toolbar-large{border-color:transparent}.x-btn-default-toolbar-large{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-nlg .x-btn-default-toolbar-large-mc{background-color:transparent}.x-btn-default-toolbar-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-btn-default-toolbar-large-icon button,.x-btn-default-toolbar-large-icon a,.x-btn-default-toolbar-large-icon .x-btn-inner,.x-btn-default-toolbar-large-noicon button,.x-btn-default-toolbar-large-noicon a,.x-btn-default-toolbar-large-noicon .x-btn-inner{height:32px;line-height:32px}.x-btn-default-toolbar-large-icon button,.x-btn-default-toolbar-large-icon a{padding:0}.x-btn-default-toolbar-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-toolbar-large-icon .x-btn-icon{width:32px;height:32px;top:0;left:0;bottom:0;right:0}.x-btn-default-toolbar-large-icon-text-left button,.x-btn-default-toolbar-large-icon-text-left a{height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-inner{height:32px;line-height:32px;padding-left:36px}.x-btn-default-toolbar-large-icon-text-left .x-btn-icon{width:32px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon{height:32px}.x-btn-default-toolbar-large-icon-text-right button,.x-btn-default-toolbar-large-icon-text-right a{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-btn-inner{height:32px;line-height:32px;padding-right:36px!important}.x-btn-default-toolbar-large-icon-text-right .x-btn-icon{width:32px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon{height:32px}.x-btn-default-toolbar-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-toolbar-large-icon-text-top .x-btn-icon{width:auto;height:32px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon{width:32px}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon{width:auto;height:32px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon{width:32px}.x-btn-default-toolbar-large-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-large-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-ms-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-large-menu-active,.x-btn-default-toolbar-large-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-ms-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-btn-default-toolbar-large-disabled{background-image:none;background-color:transparent}.x-btn-default-toolbar-large-disabled .x-btn-inner{color:#333!important}.x-ie .x-btn-default-toolbar-large-disabled .x-btn-inner{color:#595959!important}.x-ie6 .x-btn-default-toolbar-large-disabled .x-btn-inner{color:#8c8c8c!important}.x-nlg .x-btn-default-toolbar-large-over{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif')}.x-nlg .x-btn-default-toolbar-large-focus{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif')}.x-nlg .x-btn-default-toolbar-large-menu-active,.x-nlg .x-btn-default-toolbar-large-pressed{background-repeat:repeat-x;background-image:url('../../resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif')}.x-btn-default-toolbar-small-disabled,.x-btn-default-toolbar-medium-disabled,.x-btn-default-toolbar-large-disabled{border-color:transparent;background-image:none;background:transparent}.x-btn-group{position:relative;overflow:hidden}.x-btn-group-body{position:relative;zoom:1;padding:0 1px}.x-btn-group-body .x-table-layout-cell{vertical-align:top}.x-btn-group-header-text{white-space:nowrap}.x-btn-group-default-framed{-moz-border-radius:2px;-webkit-border-radius:2px;-o-border-radius:2px;-ms-border-radius:2px;-khtml-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#d0def0}.x-nlg .x-btn-group-default-framed-mc{background-color:#d0def0}.x-btn-group-default-framed{border-color:#b7c8d7;-moz-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-webkit-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-o-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset}.x-btn-group-header-default-framed{margin:2px 2px 0 2px}.x-btn-group-header-body-default-framed{padding:1px 0;background:#c2d8f0;-moz-border-radius-topleft:2px;-webkit-border-top-left-radius:2px;-o-border-top-left-radius:2px;-ms-border-top-left-radius:2px;-khtml-border-top-left-radius:2px;border-top-left-radius:2px;-moz-border-radius-topright:2px;-webkit-border-top-right-radius:2px;-o-border-top-right-radius:2px;-ms-border-top-right-radius:2px;-khtml-border-top-right-radius:2px;border-top-right-radius:2px}.x-btn-group-header-text-default-framed{font:normal 11px tahoma,arial,verdana,sans-serif;color:#3e6aaa}.x-datepicker{border:1px solid #1b376c;background-color:white;position:relative}.x-datepicker a{-moz-outline:0 none;outline:0 none;color:#15428b;text-decoration:none;border-width:0}.x-datepicker-inner,.x-datepicker-inner td,.x-datepicker-inner th{border-collapse:separate}.x-datepicker-header{position:relative;height:26px;background-image:none;background-color:#23427c;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#264888),color-stop(100%,#1f3a6c));background-image:-webkit-linear-gradient(top,#264888,#1f3a6c);background-image:-moz-linear-gradient(top,#264888,#1f3a6c);background-image:-o-linear-gradient(top,#264888,#1f3a6c);background-image:-ms-linear-gradient(top,#264888,#1f3a6c);background-image:linear-gradient(top,#264888,#1f3a6c)}.x-datepicker-prev,.x-datepicker-next{position:absolute;top:5px;width:18px}.x-datepicker-prev a,.x-datepicker-next a{display:block;width:16px;height:16px;background-position:top;background-repeat:no-repeat;cursor:pointer;text-decoration:none!important;filter:alpha(opacity=70);opacity:.7}.x-datepicker-prev a:hover,.x-datepicker-next a:hover{filter:alpha(opacity=100);opacity:1}.x-datepicker-next{right:5px}.x-datepicker-next a{background-image:url('../../resources/themes/images/default/shared/right-btn.gif')}.x-datepicker-prev{left:5px}.x-datepicker-prev a{background-image:url('../../resources/themes/images/default/shared/left-btn.gif')}.x-item-disabled .x-datepicker-prev a:hover,.x-item-disabled .x-datepicker-next a:hover{filter:alpha(opacity=60);opacity:.6}.x-datepicker-month{padding-top:3px}.x-datepicker-month .x-btn,.x-datepicker-month button,.x-datepicker-month .x-btn-tc,.x-datepicker-month .x-btn-tl,.x-datepicker-month .x-btn-tr,.x-datepicker-month .x-btn-mc,.x-datepicker-month .x-btn-ml,.x-datepicker-month .x-btn-mr,.x-datepicker-month .x-btn-bc,.x-datepicker-month .x-btn-bl,.x-datepicker-month .x-btn-br{background:transparent!important;border-width:0!important}.x-datepicker-month span{color:#fff!important}.x-datepicker-month .x-btn-split-right{background-image:url('../../resources/themes/images/default/button/s-arrow-light.gif');padding-right:12px}.x-datepicker-next{text-align:right}.x-datepicker-month{text-align:center}.x-datepicker-month button{color:white!important}table.x-datepicker-inner{width:100%;table-layout:fixed}table.x-datepicker-inner th{width:25px;height:19px;padding:0;color:#233d6d;font:normal 10px tahoma,arial,verdana,sans-serif;text-align:right;border-bottom:1px solid #b2d1f5;border-collapse:separate;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#edf4fd),color-stop(100%,#cde1f9));background-image:-webkit-linear-gradient(top,#edf4fd,#cde1f9);background-image:-moz-linear-gradient(top,#edf4fd,#cde1f9);background-image:-o-linear-gradient(top,#edf4fd,#cde1f9);background-image:-ms-linear-gradient(top,#edf4fd,#cde1f9);background-image:linear-gradient(top,#edf4fd,#cde1f9);cursor:default}table.x-datepicker-inner th span{display:block;padding-right:7px}table.x-datepicker-inner tr{height:20px}table.x-datepicker-inner td{border:1px solid;height:17px;border-color:white;text-align:right;padding:0}table.x-datepicker-inner a{padding-right:4px;display:block;zoom:1;font:normal 11px tahoma,arial,verdana,sans-serif;color:black;text-decoration:none;text-align:right}table.x-datepicker-inner .x-datepicker-active{cursor:pointer;color:black}table.x-datepicker-inner .x-datepicker-selected a{background:repeat-x left top;background-color:#dae5f3;border:1px solid #8db2e3}table.x-datepicker-inner .x-datepicker-selected span{font-weight:bold}table.x-datepicker-inner .x-datepicker-today a{border:1px solid;border-color:darkred}table.x-datepicker-inner .x-datepicker-prevday a,table.x-datepicker-inner .x-datepicker-nextday a{text-decoration:none!important;color:#aaa}table.x-datepicker-inner a:hover,table.x-datepicker-inner .x-datepicker-disabled a:hover{text-decoration:none!important;color:#000;background-color:#ddecfe}table.x-datepicker-inner .x-datepicker-disabled a{cursor:default;background-color:#eee;color:#bbb}.x-datepicker-footer,.x-monthpicker-buttons{position:relative;border-top:1px solid #b2d1f5;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dee8f5),color-stop(49%,#d1dff0),color-stop(51%,#c7d8ed),color-stop(100%,#cbdaee));background-image:-webkit-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-moz-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-o-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-ms-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);text-align:center}.x-datepicker-footer .x-btn,.x-monthpicker-buttons .x-btn{position:relative;margin:4px}.x-item-disabled .x-datepicker-inner a:hover{background:0}.x-datepicker .x-monthpicker{position:absolute;left:0;top:0}.x-monthpicker{border:1px solid #1b376c;background-color:white}.x-monthpicker-months,.x-monthpicker-years{float:left;height:167px;width:88px}.x-monthpicker-item{float:left;margin:4px 0 5px 0;font:normal 11px tahoma,arial,verdana,sans-serif;text-align:center;vertical-align:middle;height:18px;width:43px;border:0 none}.x-monthpicker-item a{display:block;margin:0 5px;text-decoration:none;color:#15428b;border:1px solid white;line-height:17px}.x-monthpicker-item a:hover{background-color:#ddecfe}.x-monthpicker-item a.x-monthpicker-selected{background-color:#dfecfb;border:1px solid #8db2e3}.x-monthpicker-months{border-right:1px solid #1b376c;width:87px}.x-monthpicker-years .x-monthpicker-item{width:44px}.x-monthpicker-yearnav{height:28px}.x-monthpicker-yearnav button{background-image:url('../../resources/themes/images/default/tools/tool-sprites.gif');height:15px;width:15px;padding:0;margin:6px 12px 5px 15px;border:0;outline:0 none}.x-monthpicker-yearnav button::-moz-focus-inner{border:0;padding:0}.x-monthpicker-yearnav-next{background-position:0 -120px}.x-monthpicker-yearnav-next-over{cursor:pointer;cursor:hand;background-position:-15px -120px}.x-monthpicker-yearnav-prev{background-position:0 -105px}.x-monthpicker-yearnav-prev-over{cursor:pointer;cursor:hand;background-position:-15px -105px}.x-monthpicker-small .x-monthpicker-item{margin:2px 0 2px 0}.x-monthpicker-small .x-monthpicker-yearnav{height:23px}.x-monthpicker-small .x-monthpicker-months,.x-monthpicker-small .x-monthpicker-years{height:136px}.x-nlg .x-datepicker-header{background-image:url('../../resources/themes/images/default/datepicker/datepicker-header-bg.gif');background-repeat:repeat-x;background-position:top left}.x-nlg .x-datepicker-footer,.x-nlg .x-monthpicker-buttons{background-image:url('../../resources/themes/images/default/datepicker/datepicker-footer-bg.gif');background-repeat:repeat-x;background-position:top left}.x-color-picker{width:144px;height:90px;cursor:pointer}.x-color-picker a{border:1px solid #fff;float:left;padding:2px;text-decoration:none;-moz-outline:0 none;outline:0 none;cursor:pointer}.x-color-picker a:hover,.x-color-picker a.x-color-picker-selected{border-color:#8bb8f3;background-color:#deecfd}.x-color-picker em{display:block;border:1px solid #aca899}.x-color-picker em span{cursor:pointer;display:block;height:10px;width:10px;line-height:10px}.x-menu-body{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;background:#f0f0f0!important;padding:2px}.x-menu-item .x-form-text{user-select:text;-webkit-user-select:text;-o-user-select:text;-ie-user-select:text;-moz-user-select:text;-ie-user-select:text}.x-menu-icon-separator{position:absolute;top:0;left:27px;z-index:0;border-left:solid 1px #e0e0e0;background-color:white;width:2px;overflow:hidden}.x-menu-plain .x-menu-icon-separator{display:none}.x-menu-focus{display:block;position:absolute;top:-10px;left:-10px;width:0;height:0}.x-menu-item{white-space:nowrap;overflow:hidden;z-index:1}.x-menu-item-cmp{margin-bottom:1px}.x-menu-item-link{display:block;margin:1px;padding:6px 2px 3px 32px;text-decoration:none!important;line-height:16px;cursor:default}.x-opera .x-menu-item-link{position:relative}.x-menu-item-icon{width:16px;height:16px;position:absolute;top:5px;left:4px;background:no-repeat center center}.x-menu-item-icon-right{width:16px;height:16px;position:absolute;top:6px;right:4px;background:no-repeat center center}.x-menu-item-text{font-size:11px;color:#222}.x-menu-item-checked .x-menu-item-icon{background-image:url('../../resources/themes/images/default/menu/checked.gif')}.x-menu-item-checked .x-menu-group-icon{background-image:url('../../resources/themes/images/default/menu/group-checked.gif')}.x-menu-item-unchecked .x-menu-item-icon{background-image:url('../../resources/themes/images/default/menu/unchecked.gif')}.x-menu-item-unchecked .x-menu-group-icon{background-image:none}.x-menu-item-separator{height:2px;border-top:solid 1px #e0e0e0;background-color:white;margin:2px 0;overflow:hidden}.x-menu-item-arrow{position:absolute;width:12px;height:9px;top:9px;right:0;background:no-repeat center center;background-image:url('../../resources/themes/images/default/menu/menu-parent.gif')}.x-menu-item-indent{margin-left:31px}.x-menu-item-active{cursor:pointer}.x-menu-item-active .x-menu-item-link{background-image:none;background-color:#d9e8fb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e7f0fc),color-stop(100%,#c7ddf9));background-image:-webkit-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-moz-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-o-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-ms-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:linear-gradient(top,#e7f0fc,#c7ddf9);margin:0;border:1px solid #a9cbf5;cursor:pointer;-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px}.x-menu-item-disabled{filter:alpha(opacity=50);opacity:.5}.x-nlg .x-menu-item-active .x-menu-item-link{background:#d9e8fb repeat-x left top;background-image:url('../../resources/themes/images/default/menu/menu-item-active-bg.gif')}.x-menu-date-item{border-color:#99bbe8}.x-panel .x-grid-body{background:white;border-color:#99bce8;border-style:solid;border-width:1px;border-top-color:#c5c5c5}.x-panel .x-grid-header-ct-hidden{visibility:hidden}.x-grid-empty{padding:10px;color:gray;font:normal 11px tahoma,arial,helvetica,sans-serif}.x-grid-header-hidden .x-grid-body{border-top-color:#99bce8!important}.x-grid-view{overflow:hidden;position:relative}.x-grid-table{table-layout:fixed;border-collapse:separate}.x-autowidth-table table.x-grid-table{table-layout:auto;width:auto!important}.x-grid-row .x-grid-table{border-collapse:collapse}.x-grid-locked .x-grid-inner-locked{border-width:0 1px 0 0!important;border-style:solid}.x-grid-header-ct{cursor:default;zoom:1;padding:0;border:1px solid #99bce8;border-bottom-color:#c5c5c5}.x-accordion-item .x-grid-header-ct{border-width:0 0 1px 0!important}.x-column-header{padding:0;position:absolute;overflow:hidden;border-right:1px solid #c5c5c5;border-left:0 none;border-top:0 none;border-bottom:0 none;text-shadow:0 1px 0 rgba(255,255,255,0.3);color:null;font:normal 11px tahoma,arial,verdana,sans-serif}.x-group-header{padding:0;border-left-width:0}.x-group-sub-header{background:transparent;border-top:1px solid #c5c5c5;border-left-width:0}.x-column-header-inner{zoom:1;position:relative;white-space:nowrap;line-height:15px;padding:3px 6px 4px}.x-column-header-inner .x-column-header-text{white-space:nowrap}.x-column-header-over,.x-column-header-sort-ASC,.x-column-header-sort-DESC{border-left-color:#aaccf6;border-right-color:#aaccf6}.x-nlg .x-grid-header-ct,.x-nlg .x-column-header{background:repeat-x 0 top;background-image:url('../../resources/themes/images/default/grid/column-header-bg.gif')}.x-nlg .x-column-header-over,.x-nlg .x-column-header-sort-ASC,.x-nlg .x-column-header-sort-DESC{background:#ebf3fd repeat-x 0 top;background-image:url('../../resources/themes/images/default/grid/column-header-over-bg.gif')}.x-column-header-trigger{display:none;height:100%;width:14px;background:no-repeat left center;background-color:#c3daf9;background-image:url('../../resources/themes/images/default/grid/grid3-hd-btn.gif');position:absolute;right:0;top:0;z-index:2;cursor:pointer}.x-column-header-over .x-column-header-trigger,.x-column-header-open .x-column-header-trigger{display:block}.x-column-header-align-right{text-align:right}.x-column-header-align-right .x-column-header-text{padding-right:.5ex;margin-right:6px}.x-column-header-align-center{text-align:center}.x-column-header-align-left{text-align:left}.x-column-header-sort-ASC .x-column-header-text{padding-right:16px;background:no-repeat right 6px;background-image:url('../../resources/themes/images/default/grid/sort_asc.gif')}.x-column-header-sort-DESC .x-column-header-text{padding-right:16px;background:no-repeat right 6px;background-image:url('../../resources/themes/images/default/grid/sort_desc.gif')}.x-grid-row{vertical-align:top}.x-grid-row .x-grid-cell{color:null;font:normal 11px/15px tahoma,arial,verdana,sans-serif;background-color:white;border-color:#ededed;border-style:solid;border-top-color:#fafafa;border-width:0}.x-grid-with-row-lines .x-grid-cell{border-width:1px 0}.x-grid-rowwrap-div{border-width:1px 0;border-color:#ededed;border-style:solid;border-top-color:#fafafa;overflow:hidden}.x-grid-row-alt .x-grid-cell,.x-grid-row-alt .x-grid-rowwrap-div{background-color:#fafafa}.x-grid-row-over .x-grid-cell,.x-grid-row-over .x-grid-rowwrap-div{border-color:#ddd;background-color:#efefef}.x-grid-row-focused .x-grid-cell,.x-grid-row-focused .x-grid-rowwrap-div{border-color:#ddd;background-color:#efefef}.x-grid-row-selected .x-grid-cell,.x-grid-row-selected .x-grid-rowwrap-div{border-style:dotted;border-color:#a3bae9;background-color:#dfe8f6!important}.x-grid-rowwrap-div .x-grid-cell,.x-grid-rowwrap-div .x-grid-cell-inner{border-width:0;background:transparent}.x-grid-row-body-hidden{display:none}.x-grid-rowbody{font:normal 11px/13px tahoma,arial,verdana,sans-serif;padding:4px}.x-grid-rowbody p{margin:5px 5px 10px 5px}.x-grid-cell{overflow:hidden}.x-grid-cell-inner{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding:2px 6px 3px;white-space:nowrap}.x-grid-with-row-lines .x-grid-cell-inner{line-height:13px;padding-bottom:4px}.x-action-col-cell .x-grid-cell-inner{line-height:0;padding:2px}.x-action-col-cell .x-item-disabled{filter:alpha(opacity=30);opacity:.3}.x-grid-with-row-lines .x-action-col-cell .x-grid-cell-inner{padding-top:1px}.x-grid-row .x-grid-cell-special{padding:0;border-right:1px solid #d0d0d0;background-image:none;background-color:#f6f6f6;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#f6f6f6),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-moz-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-o-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:-ms-linear-gradient(left,#f6f6f6,#e9e9e9);background-image:linear-gradient(left,#f6f6f6,#e9e9e9)}.x-grid-row .x-grid-cell-row-checker{vertical-align:middle}.x-ie6 .x-grid-header-row,.x-ie7 .x-grid-header-row,.x-quirks .x-ie8 .x-grid-header-row{position:absolute}.x-grid-row-selected .x-grid-cell-special{border-right:1px solid #aaccf6;background-image:none;background-color:#dfe8f6;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dfe8f6),color-stop(100%,#cbdaf0));background-image:-webkit-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-moz-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-o-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-ms-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:linear-gradient(left,#dfe8f6,#cbdaf0)}.x-grid-dirty-cell{background-image:url('../../resources/themes/images/default/grid/dirty.gif');background-position:0 0;background-repeat:no-repeat}.x-grid-cell-selected{background-color:#b8cfee!important}.x-nlg .x-grid-cell-special{background-repeat:repeat-y;background-position:top right}.x-nlg .x-grid-row .x-grid-cell-special,.x-nlg .x-grid-row-over .x-grid-cell-special{background-image:url('../../resources/themes/images/default/grid/cell-special-bg.gif')}.x-nlg .x-grid-row-focused .x-grid-cell-special,.x-nlg .x-grid-row-selected .x-grid-cell-special{background-image:url('../../resources/themes/images/default/grid/cell-special-selected-bg.gif')}.x-grid-with-col-lines .x-grid-cell{padding-right:0;border-right:1px solid #d0d0d0}.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner{padding-left:12px;background-image:url('../../resources/themes/images/default/grid/property-cell-bg.gif');background-repeat:no-repeat;background-position:-16px 2px}.x-grid-with-row-lines.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,.x-grid-with-row-lines.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner{background-position:-16px 1px}.x-unselectable{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-grid-row-body-hidden{display:none}.x-grid-group-collapsed{display:none}.x-grid-view .x-grid-td-expander{vertical-align:top}.x-grid-td-expander{background:repeat-y right transparent}.x-grid-view .x-grid-td-expander .x-grid-cell-inner{padding:0!important}.x-grid-row-expander{background-image:url('../../resources/themes/images/default/grid/group-collapse.gif');background-color:transparent;width:9px;height:13px;margin-left:3px;background-repeat:no-repeat;background-position:0 -2px}.x-grid-row-collapsed .x-grid-row-expander{background-image:url('../../resources/themes/images/default/grid/group-expand.gif')}.x-grid-resize-marker{position:absolute;z-index:5;top:0;width:1px;background-color:#0f0f0f}.col-move-top,.col-move-bottom{width:9px;height:9px;position:absolute;top:0;line-height:0;font-size:0;overflow:hidden;z-index:20000;background:no-repeat left top transparent}.col-move-top{background-image:url('../../resources/themes/images/default/grid/col-move-top.gif')}.col-move-bottom{background-image:url('../../resources/themes/images/default/grid/col-move-bottom.gif')}.x-tbar-page-number{width:30px}.x-grid-group,.x-grid-group-body,.x-grid-group-hd{zoom:1}.x-grid-group-hd{padding-top:6px}.x-grid-group-hd .x-grid-cell-inner{padding:10px 4px 4px 4px;background:white;border-width:0 0 2px 0;border-style:solid;border-color:#99bbe8;cursor:pointer}.x-grid-group-hd-collapsible .x-grid-group-title{background:transparent no-repeat 0 -1px;background-image:url('../../resources/themes/images/default/grid/group-collapse.gif');padding:0 0 0 14px}.x-grid-group-title{color:#3764a0;font:bold 11px tahoma,arial,verdana,sans-serif}.x-grid-group-hd-collapsed .x-grid-group-title{background-image:url('../../resources/themes/images/default/grid/group-expand.gif')}.x-grid-group-collapsed .x-grid-group-body{display:none}.x-grid-group-collapsed .x-grid-group-title{background-image:url('../../resources/themes/images/default/grid/group-expand.gif')}.x-group-by-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x-show-groups-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x-column-header-checkbox .x-column-header-inner{padding:0}.x-grid-cell-special .x-grid-cell-inner{padding-left:4px;padding-right:4px}.x-grid-row-checker,.x-column-header-checkbox .x-column-header-text{height:14px;width:14px;line-height:0;background-image:url('../../resources/themes/images/default/grid/unchecked.gif');background-position:-1px -1px;background-repeat:no-repeat;background-color:transparent}.x-column-header-checkbox .x-column-header-text{display:block;margin:0 5px}.x-grid-hd-checker-on .x-column-header-text{background-image:url('../../resources/themes/images/default/grid/checked.gif')}.x-grid-cell-row-checker .x-grid-cell-inner{padding-top:4px;padding-bottom:2px;line-height:14px}.x-grid-with-row-lines .x-grid-cell-row-checker .x-grid-cell-inner{padding-top:3px}.x-grid-row-checker{margin-left:1px;background-position:50% -2px}.x-grid-row-selected .x-grid-row-checker,.x-grid-row-checked .x-grid-row-checker{background-image:url('../../resources/themes/images/default/grid/checked.gif')}.x-tbar-page-first{background-image:url('../../resources/themes/images/default/grid/page-first.gif')!important}.x-tbar-loading{background-image:url('../../resources/themes/images/default/grid/refresh.gif')!important}.x-tbar-page-last{background-image:url('../../resources/themes/images/default/grid/page-last.gif')!important}.x-tbar-page-next{background-image:url('../../resources/themes/images/default/grid/page-next.gif')!important}.x-tbar-page-prev{background-image:url('../../resources/themes/images/default/grid/page-prev.gif')!important}.x-item-disabled .x-tbar-loading{background-image:url('../../resources/themes/images/default/grid/refresh-disabled.gif')!important}.x-item-disabled .x-tbar-page-first{background-image:url('../../resources/themes/images/default/grid/page-first-disabled.gif')!important}.x-item-disabled .x-tbar-page-last{background-image:url('../../resources/themes/images/default/grid/page-last-disabled.gif')!important}.x-item-disabled .x-tbar-page-next{background-image:url('../../resources/themes/images/default/grid/page-next-disabled.gif')!important}.x-item-disabled .x-tbar-page-prev{background-image:url('../../resources/themes/images/default/grid/page-prev-disabled.gif')!important}.x-hmenu-sort-asc .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-asc.gif')}.x-hmenu-sort-desc .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-desc.gif')}.x-hmenu-lock .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-lock.gif')}.x-hmenu-unlock .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/hmenu-unlock.gif')}.x-group-by-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x-cols-icon .x-menu-item-icon{background-image:url('../../resources/themes/images/default/grid/columns.gif')}.x-show-groups-icon{background-image:url('../../resources/themes/images/default/grid/group-by.gif')}.x-grid-drop-indicator{position:absolute;height:1px;line-height:0;background-color:#77bc71;overflow:visible}.x-grid-drop-indicator .x-grid-drop-indicator-left{position:absolute;top:-8px;left:-12px;background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-right.png');height:16px;width:16px}.x-grid-drop-indicator .x-grid-drop-indicator-right{position:absolute;top:-8px;right:-11px;background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-left.png');height:16px;width:16px}.x-ie6 .x-grid-drop-indicator-left{background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-right.gif')}.x-ie6 .x-grid-drop-indicator-right{background-image:url('../../resources/themes/images/default/grid/dd-insert-arrow-left.gif')}.x-grid-editor .x-form-text{padding:0 4px}.x-grid-editor .x-form-cb-wrap{padding-top:3px}.x-grid-row-editor{position:absolute!important;z-index:1;zoom:1;overflow:visible!important}.x-grid-row-editor .x-form-text{padding:0 2px}.x-grid-row-editor .x-form-cb-wrap{padding-top:0}.x-grid-row-editor .x-form-checkbox{margin-left:-4px}.x-grid-row-editor .x-form-display-field{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding-top:0;padding-left:2px}.x-grid-row-editor .x-panel-body{background-color:#eaf1fb;border-top:1px solid #99bce8!important;border-bottom:1px solid #99bce8!important}.x-grid-editor .x-form-cb-wrap,.x-grid-row-editor .x-form-cb-wrap{text-align:center}.x-grid-editor .x-form-trigger,.x-grid-row-editor .x-form-trigger{height:19px}.x-grid-editor .x-form-trigger-wrap .x-form-spinner-up,.x-grid-editor .x-form-trigger-wrap .x-form-spinner-down,.x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-up,.x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-down{background-image:url('../../resources/themes/images/default/form/spinner-small.gif');height:10px!important}.x-grid-editor .x-form-text,.x-grid-row-editor .x-form-text{font:normal 11px/15px tahoma,arial,verdana,sans-serif;height:18px}.x-border-box .x-grid-editor .x-form-trigger,.x-border-box .x-grid-row-editor .x-form-trigger{height:20px}.x-border-box .x-grid-editor .x-form-text,.x-border-box .x-grid-row-editor .x-form-text{height:20px;padding-bottom:1px}.x-opera .x-grid-editor .x-form-text{padding-left:5px}.x-opera .x-grid-row-editor .x-form-text{padding-left:3px}.x-grid-row-editor-buttons{background-color:#eaf1fb;position:absolute;bottom:-31px;padding:4px;height:32px}.x-strict .x-ie7m .x-grid-row-editor-buttons{width:192px;height:24px}.x-grid-row-editor-buttons-ml,.x-grid-row-editor-buttons-mr,.x-grid-row-editor-buttons-bl,.x-grid-row-editor-buttons-br,.x-grid-row-editor-buttons-bc{position:absolute;overflow:hidden}.x-grid-row-editor-buttons-bl,.x-grid-row-editor-buttons-br{width:4px;height:4px;bottom:0;background-image:url('../../resources/themes/images/default/panel/panel-default-framed-corners.gif')}.x-grid-row-editor-buttons-bl{left:0;background-position:0 -16px}.x-grid-row-editor-buttons-br{right:0;background-position:0 -20px}.x-grid-row-editor-buttons-bc{position:absolute;left:4px;bottom:0;width:192px;height:1px;background-color:#99bce8}.x-grid-row-editor-buttons-ml,.x-grid-row-editor-buttons-mr{height:27px;width:1px;top:1px;background-color:#99bce8}.x-grid-row-editor-buttons-ml{left:0}.x-grid-row-editor-buttons-mr{background-position:0 -20px;right:0}.x-grid-row-editor-errors ul{margin-left:5px}.x-grid-row-editor-errors li{list-style:disc;margin-left:15px}.x-webkit *:focus{outline:none!important}.x-form-item{vertical-align:top;table-layout:fixed}.x-autocontainer-form-item,.x-anchor-form-item,.x-vbox-form-item,.x-checkboxgroup-form-item,.x-table-form-item{margin-bottom:5px}.x-form-layout-table{border-collapse:separate;border-spacing:0 2px}.x-form-item-body{position:relative}.x-form-form-item td{border-top:1px solid transparent}.x-ie6 .x-form-layout-table{border-collapse:collapse;border-spacing:0}.x-ie6 .x-form-form-item td{border-top-width:0}.x-ie6 td.x-form-item-pad{height:5px}.x-editor .x-form-item-body{padding-bottom:0}.x-form-item-label{display:block;padding:3px 0 0;font-size:12px;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-form-item-label-top{display:block;zoom:1;padding:0 0 5px 0}.x-form-item-label-right{text-align:right}.x-form-invalid-under{padding:2px 2px 2px 18px;color:#c0272b;font:normal 11px tahoma,arial,verdana,sans-serif;line-height:16px;background:no-repeat 0 2px;background-image:url('../../resources/themes/images/default/form/exclamation.gif')}.x-form-invalid-icon{width:18px;height:14px;background:no-repeat center center;background-image:url('../../resources/themes/images/default/form/exclamation.gif');overflow:hidden}.x-form-invalid-icon ul{display:block;width:18px}.x-form-invalid-icon ul li{display:none}.x-lbl-top-err-icon{margin-bottom:4px}.x-form-field,.x-form-display-field{margin:0;font:normal 12px tahoma,arial,verdana,sans-serif;color:black}.x-form-item-hidden{margin:0}.x-form-text,textarea.x-form-field{padding:1px 3px;background:repeat-x 0 0;border:1px solid;background-color:white;background-image:url('../../resources/themes/images/default/form/text-bg.gif');border-color:#b5b8c8}.x-form-text{height:18px;line-height:15px;vertical-align:top}.x-ie8m .x-form-text{line-height:15px}.x-border-box .x-form-text{height:22px}textarea.x-form-field{color:black;overflow:auto;height:auto;line-height:normal;background:repeat-x 0 0;background-color:white;background-image:url('../../resources/themes/images/default/form/text-bg.gif');resize:none}.x-border-box textarea.x-form-field{height:auto}.x-safari.x-mac textarea.x-form-field{margin-bottom:-2px}.x-form-focus,textarea.x-form-focus{border-color:#7eadd9}.x-form-invalid-field,textarea.x-form-invalid-field{background-color:white;background-image:url('../../resources/themes/images/default/grid/invalid_line.gif');background-repeat:repeat-x;background-position:bottom;border-color:#c30}.x-form-item{font:normal 12px tahoma,arial,verdana,sans-serif}.x-form-empty-field,textarea.x-form-empty-field{color:gray}.x-webkit .x-form-empty-field{line-height:15px}.x-form-display-field{padding-top:3px}.x-field-default-toolbar .x-form-text{height:16px}.x-border-box .x-field-default-toolbar .x-form-text{height:20px}.x-field-default-toolbar .x-form-item-label-left{padding-left:4px}.x-fieldset{border:1px solid #b5b8c8;padding:10px;margin-bottom:10px;display:block;position:relative}.x-ie .x-fieldset{padding-top:0}.x-ie .x-fieldset .x-fieldset-body{padding-top:10px}.x-fieldset-header-checkbox{line-height:14px}.x-fieldset-header{font:11px/14px bold tahoma,arial,verdana,sans-serif;color:#15428b;padding:0 3px 1px;overflow:hidden}.x-fieldset-header .x-fieldset-header-text{float:left;padding:1px 0}.x-fieldset-header .x-fieldset-header-text-collapsible{cursor:pointer}.x-fieldset-header .x-form-item,.x-fieldset-header .x-tool{float:left;margin:1px 0 0 0}.x-fieldset-header .x-form-cb-wrap{padding:1px 0;font-size:0;line-height:0}.x-fieldset-with-title .x-fieldset-header-checkbox,.x-fieldset-with-title .x-tool{margin-right:3px}.x-webkit .x-fieldset-header{-webkit-padding-start:3px;-webkit-padding-end:3px}.x-opera .x-fieldset-with-legend{margin-top:-1px}.x-opera.x-mac .x-fieldset-header-text{padding:2px 0 0}.x-fieldset-collapsed .x-fieldset-body{display:none}.x-fieldset-collapsed{padding-bottom:0!important;border-width:1px 1px 0 1px!important;border-left-color:transparent!important;border-right-color:transparent!important}.x-fieldset{overflow:hidden}.x-fieldset-bwrap{overflow:hidden;zoom:1}.x-fieldset-body{overflow:hidden}.x-form-file-wrap .x-form-text{color:#777}.x-form-file-wrap .x-form-file-btn{overflow:hidden}.x-form-file-wrap .x-form-file-input{position:absolute;top:-4px;right:-2px;height:30px;filter:alpha(opacity=0);opacity:0;font-size:100px}.x-form-cb-wrap{padding-top:3px}.x-form-checkbox,.x-form-radio{vertical-align:-1px;width:13px;height:13px;background:no-repeat;background-image:url('../../resources/themes/images/default/form/checkbox.gif');overflow:hidden;padding:0;border:0}.x-form-checkbox::-moz-focus-inner,.x-form-radio::-moz-focus-inner{padding:0;border:0}.x-form-cb-checked .x-form-checkbox,.x-form-cb-checked .x-form-radio{background-position:0 -13px}.x-form-cb-focus{background-position:-13px 0}.x-form-cb-checked .x-form-cb-focus{background-position:-13px -13px}.x-form-radio{background-image:url('../../resources/themes/images/default/form/radio.gif')}.x-form-cb-label-before{margin-right:4px}.x-form-cb-label-after{margin-left:4px}.x-form-checkboxgroup-body{padding:1px 4px 1px 4px}.x-form-invalid .x-form-checkboxgroup-body{border:1px solid #c30!important;background:transparent repeat-x bottom;background-image:url('../../resources/themes/images/default/grid/invalid_line.gif');padding:1px 3px 0 3px}.x-check-group-alt{background:#d1ddef;border-top:1px dotted #b5b8c8;border-bottom:1px dotted #b5b8c8}.x-form-check-group-label{color:#333;border-bottom:1px solid #333;margin:0 30px 5px 0;padding:2px}.x-form-trigger-wrap{vertical-align:top}.x-form-trigger{background-image:url('../../resources/themes/images/default/form/trigger.gif');background-position:0 0;width:17px;height:21px;border-bottom:1px solid #b5b8c8;cursor:pointer;cursor:hand;overflow:hidden}.x-border-box .x-form-trigger{height:22px}.x-field-default-toolbar .x-form-trigger{height:19px}.x-border-box .x-field-default-toolbar .x-form-trigger{height:20px}.x-form-trigger-over{background-position:-17px 0;border-bottom-color:#7eadd9}.x-form-trigger-wrap-focus .x-form-trigger{background-position:-51px 0;border-bottom-color:#7eadd9}.x-form-trigger-wrap-focus .x-form-trigger-over{background-position:-68px 0;border-bottom-color:null}.x-form-trigger-click,.x-form-trigger-wrap-focus .x-form-trigger-click{background-position:-34px 0;border-bottom-color:null}.x-form-trigger-icon{height:16px;background-repeat:no-repeat;background-position:7px 6px}.x-pickerfield-open .x-form-field{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0}.x-pickerfield-open-above .x-form-field{-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;-o-border-bottom-left-radius:3px;-ms-border-bottom-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0}.x-form-arrow-trigger .x-form-trigger-icon{background-image:url('../../resources/themes/images/default/boundlist/trigger-arrow.png')}.x-form-date-trigger{background-image:url('../../resources/themes/images/default/form/date-trigger.gif')}.x-form-trigger-wrap .x-form-spinner-up,.x-form-trigger-wrap .x-form-spinner-down{background-image:url('../../resources/themes/images/default/form/spinner.gif');width:17px!important;height:11px!important;font-size:0;border-bottom:0}.x-form-trigger-wrap .x-form-spinner-down{background-position:0 -11px}.x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -11px}.x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -11px}.x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -11px}.x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -11px}.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-up,.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down{background-image:url('../../resources/themes/images/default/form/spinner-small.gif');height:10px!important}.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down{background-position:0 -10px}.x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -10px}.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -10px}.x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -10px}.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -10px}.x-trigger-noedit{cursor:pointer;cursor:hand}.x-item-disabled .x-trigger-noedit,.x-item-disabled .x-form-trigger{cursor:auto}.x-form-clear-trigger{background-image:url('../../resources/themes/images/default/form/clear-trigger.gif')}.x-form-search-trigger{background-image:url('../../resources/themes/images/default/form/search-trigger.gif')}.x-html-editor-wrap{border:1px solid #b5b8c8}.x-html-editor-wrap .x-toolbar{border-top-width:0;border-left-width:0;border-right-width:0}.x-html-editor-wrap textarea{background-color:white}.x-html-editor-tb .x-btn-text{background:transparent no-repeat;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-bold,.x-menu-item img.x-edit-bold{background-position:0 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-italic,.x-menu-item img.x-edit-italic{background-position:-16px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-underline,.x-menu-item img.x-edit-underline{background-position:-32px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-forecolor,.x-menu-item img.x-edit-forecolor{background-position:-160px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-backcolor,.x-menu-item img.x-edit-backcolor{background-position:-176px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-justifyleft,.x-menu-item img.x-edit-justifyleft{background-position:-112px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-justifycenter,.x-menu-item img.x-edit-justifycenter{background-position:-128px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-justifyright,.x-menu-item img.x-edit-justifyright{background-position:-144px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-insertorderedlist,.x-menu-item img.x-edit-insertorderedlist{background-position:-80px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-insertunorderedlist,.x-menu-item img.x-edit-insertunorderedlist{background-position:-96px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-increasefontsize,.x-menu-item img.x-edit-increasefontsize{background-position:-48px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-decreasefontsize,.x-menu-item img.x-edit-decreasefontsize{background-position:-64px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-sourceedit,.x-menu-item img.x-edit-sourceedit{background-position:-192px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-createlink,.x-menu-item img.x-edit-createlink{background-position:-208px 0;background-image:url('../../resources/themes/images/default/editor/tb-sprite.gif')}.x-html-editor-tip .x-tip-bd .x-tip-bd-inner{padding:5px;padding-bottom:1px}.x-html-editor-tb .x-toolbar{position:static!important}.x-html-editor-tb .x-font-select{font-size:11px}.x-html-editor-wrap textarea{border:0;padding:3px 2px;overflow:auto}.x-panel,.x-plain{overflow:hidden;position:relative}.x-panel-header-horizontal{padding:3px 5px 4px}.x-panel-header-vertical{padding:5px 4px}.x-panel-header-icon,.x-window-header-icon{width:16px;height:16px;background-repeat:no-repeat;background-position:0 0;vertical-align:middle;margin-right:4px}.x-vertical .x-panel-header-icon,.x-vertical .x-window-header-icon{margin:0 0 4px}.x-panel-header-draggable,.x-panel-header-draggable .x-panel-header-text,.x-window-header-draggable,.x-window-header-draggable .x-window-header-text{cursor:move}.x-panel-ghost,.x-window-ghost{filter:alpha(opacity=65);opacity:.65;cursor:move}.x-panel-header-horizontal .x-panel-header-body,.x-panel-header-horizontal .x-window-header-body,.x-panel-header-horizontal .x-btn-group-header-body,.x-window-header-horizontal .x-panel-header-body,.x-window-header-horizontal .x-window-header-body,.x-window-header-horizontal .x-btn-group-header-body,.x-btn-group-header-horizontal .x-panel-header-body,.x-btn-group-header-horizontal .x-window-header-body,.x-btn-group-header-horizontal .x-btn-group-header-body{width:100%}.x-panel-header-vertical .x-panel-header-body,.x-panel-header-vertical .x-window-header-body,.x-panel-header-vertical .x-btn-group-header-body,.x-window-header-vertical .x-panel-header-body,.x-window-header-vertical .x-window-header-body,.x-window-header-vertical .x-btn-group-header-body,.x-btn-group-header-vertical .x-panel-header-body,.x-btn-group-header-vertical .x-window-header-body,.x-btn-group-header-vertical .x-btn-group-header-body{height:100%}.x-panel-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-panel-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;white-space:nowrap}.x-panel-header-left .x-vml-base,.x-panel-header-right .x-vml-base{left:-3px!important}.x-panel-body{overflow:hidden;position:relative;font-size:12px}.x-panel-header-vertical .x-surface{padding-left:1px}.x-opera .x-panel-header-vertical .x-surface,.x-strict .x-ie9 .x-panel-header-vertical .x-surface{padding-left:2px}.x-panel-collapsed .x-panel-header-collapsed-border-top{border-bottom-width:1px!important}.x-panel-collapsed .x-panel-header-collapsed-border-right{border-left-width:1px!important}.x-panel-collapsed .x-panel-header-collapsed-border-bottom{border-top-width:1px!important}.x-panel-collapsed .x-panel-header-collapsed-border-left{border-right-width:1px!important}.x-nlg .x-panel-header-vertical .x-frame-mc{background-repeat:repeat-y}.x-panel-default{border-color:#99bce8}.x-panel-header-default{font-size:11px;border-color:#99bce8;border-width:1px;border-style:solid}.x-nlg .x-panel-header-default-top{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif')}.x-nlg .x-panel-header-default-bottom{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif')}.x-nlg .x-panel-header-default-left{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif')}.x-nlg .x-panel-header-default-right{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif')}.x-nlg .x-panel-header-default-right{background-position:top right}.x-nlg .x-panel-header-default-bottom{background-position:bottom left}.x-panel-header-text-default{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:17px}.x-panel-body-default{background:white;border-color:#99bce8;color:black;border-width:1px;border-style:solid}.x-panel-collapsed .x-window-header-default,.x-panel-collapsed .x-panel-header-default{border-color:#99bce8}.x-panel-header-default-vertical{border-color:#99bce8}.x-panel-collapsed .x-panel-header-default-top{-moz-border-radius-bottomleft:null;-webkit-border-bottom-left-radius:null;-o-border-bottom-left-radius:null;-ms-border-bottom-left-radius:null;-khtml-border-bottom-left-radius:null;border-bottom-left-radius:null;-moz-border-radius-bottomright:null;-webkit-border-bottom-right-radius:null;-o-border-bottom-right-radius:null;-ms-border-bottom-right-radius:null;-khtml-border-bottom-right-radius:null;border-bottom-right-radius:null}.x-panel-collapsed .x-panel-header-default-right{-moz-border-radius-topleft:null;-webkit-border-top-left-radius:null;-o-border-top-left-radius:null;-ms-border-top-left-radius:null;-khtml-border-top-left-radius:null;border-top-left-radius:null;-moz-border-radius-bottomleft:null;-webkit-border-bottom-left-radius:null;-o-border-bottom-left-radius:null;-ms-border-bottom-left-radius:null;-khtml-border-bottom-left-radius:null;border-bottom-left-radius:null}.x-panel-collapsed .x-panel-header-default-bottom{-moz-border-radius-topleft:null;-webkit-border-top-left-radius:null;-o-border-top-left-radius:null;-ms-border-top-left-radius:null;-khtml-border-top-left-radius:null;border-top-left-radius:null;-moz-border-radius-topright:null;-webkit-border-top-right-radius:null;-o-border-top-right-radius:null;-ms-border-top-right-radius:null;-khtml-border-top-right-radius:null;border-top-right-radius:null}.x-panel-collapsed .x-panel-header-default-left{-moz-border-radius-topright:null;-webkit-border-top-right-radius:null;-o-border-top-right-radius:null;-ms-border-top-right-radius:null;-khtml-border-top-right-radius:null;border-top-right-radius:null;-moz-border-radius-bottomright:null;-webkit-border-bottom-right-radius:null;-o-border-bottom-right-radius:null;-ms-border-bottom-right-radius:null;-khtml-border-bottom-right-radius:null;border-bottom-right-radius:null}.x-panel-header-default-top{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset}.x-panel-header-default-right{-moz-box-shadow:#f4f8fd -1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd -1px 0 0 0 inset;-o-box-shadow:#f4f8fd -1px 0 0 0 inset;box-shadow:#f4f8fd -1px 0 0 0 inset}.x-panel-header-default-bottom{-moz-box-shadow:#f4f8fd 0 -1px 0 0 inset;-webkit-box-shadow:#f4f8fd 0 -1px 0 0 inset;-o-box-shadow:#f4f8fd 0 -1px 0 0 inset;box-shadow:#f4f8fd 0 -1px 0 0 inset}.x-panel-header-default-left{-moz-box-shadow:#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 1px 0 0 0 inset}.x-panel-header-default-right-tc,.x-panel-header-default-right-mc,.x-panel-header-default-right-bc{background-position:right 0}.x-panel-header-default-bottom-tc,.x-panel-header-default-bottom-mc,.x-panel-header-default-bottom-bc{background-position:0 bottom}.x-panel-default-framed{border-color:#99bce8}.x-panel-header-default-framed{font-size:11px;border-color:#99bce8;border-width:1px;border-style:solid}.x-nlg .x-panel-header-default-framed-top{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif')}.x-nlg .x-panel-header-default-framed-bottom{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif')}.x-nlg .x-panel-header-default-framed-left{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif')}.x-nlg .x-panel-header-default-framed-right{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif')}.x-nlg .x-panel-header-default-framed-right{background-position:top right}.x-nlg .x-panel-header-default-framed-bottom{background-position:bottom left}.x-nbr .x-panel-header-default-framed{background-image:none}.x-strict .x-ie9 .x-panel-header-default-framed-top,.x-nlg.x-opera .x-panel-header-default-framed-top,.x-nlg.x-safari .x-panel-header-default-framed-top{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-top-bg.gif')}.x-strict .x-ie9 .x-panel-header-default-framed-bottom,.x-nlg.x-opera .x-panel-header-default-framed-bottom,.x-nlg.x-safari .x-panel-header-default-framed-bottom{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif')}.x-strict .x-ie9 .x-panel-header-default-framed-left,.x-nlg.x-opera .x-panel-header-default-framed-left,.x-nlg.x-safari .x-panel-header-default-framed-left{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-left-bg.gif')}.x-strict .x-ie9 .x-panel-header-default-framed-right,.x-nlg.x-opera .x-panel-header-default-framed-right,.x-nlg.x-safari .x-panel-header-default-framed-right{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-right-bg.gif')}.x-panel-header-text-default-framed{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:17px}.x-panel-body-default-framed{background:#dfe9f6;border-color:#99bce8;color:black;border-width:0;border-style:solid}.x-panel-collapsed .x-window-header-default-framed,.x-panel-collapsed .x-panel-header-default-framed{border-color:#99bce8}.x-panel-header-default-framed-vertical{border-color:#99bce8}.x-panel-default-framed{-moz-border-radius:4px;-webkit-border-radius:4px;-o-border-radius:4px;-ms-border-radius:4px;-khtml-border-radius:4px;border-radius:4px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#dfe9f6}.x-nlg .x-panel-default-framed-mc{background-color:#dfe9f6}.x-panel-header-default-framed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 5px 4px 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-top-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif');background-color:#cbddf3}.x-panel-header-default-framed-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 4px;border-width:1px 1px 1px 0;border-style:solid;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-right-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif');background-color:#cbddf3}.x-panel-header-default-framed-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-bottom-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif');background-color:#cbddf3}.x-panel-header-default-framed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-left-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif');background-color:#cbddf3}.x-panel-header-default-framed-top{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset}.x-panel-header-default-framed-right{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset}.x-panel-header-default-framed-bottom{-moz-box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 0 -1px 0 0 inset,#f4f8fd -1px 0 0 0 inset,#f4f8fd 1px 0 0 0 inset}.x-panel-header-default-framed-left{-moz-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset;-webkit-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset;-o-box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset;box-shadow:#f4f8fd 0 1px 0 0 inset,#f4f8fd 0 -1px 0 0 inset,#f4f8fd 1px 0 0 0 inset}.x-panel .x-panel-header-default-framed-top{border-bottom-width:1px!important}.x-panel .x-panel-header-default-framed-right{border-left-width:1px!important}.x-panel .x-panel-header-default-framed-bottom{border-top-width:1px!important}.x-panel .x-panel-header-default-framed-left{border-right-width:1px!important}.x-panel-header-default-framed-collapsed{-moz-border-radius:4px;-webkit-border-radius:4px;-o-border-radius:4px;-ms-border-radius:4px;-khtml-border-radius:4px;border-radius:4px}.x-panel-header-default-framed-collapsed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-collapsed-top-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-bg.gif');background-color:#cbddf3}.x-panel-header-default-framed-collapsed-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-collapsed-right-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-bg.gif');background-color:#cbddf3}.x-panel-header-default-framed-collapsed-bottom{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-collapsed-bottom-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif');background-color:#cbddf3}.x-panel-header-default-framed-collapsed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-collapsed-left-mc{background-image:url('../../resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-bg.gif');background-color:#cbddf3}.x-panel-header-default-framed-right-tc,.x-panel-header-default-framed-right-mc,.x-panel-header-default-framed-right-bc{background-position:right 0}.x-panel-header-default-framed-bottom-tc,.x-panel-header-default-framed-bottom-mc,.x-panel-header-default-framed-bottom-bc{background-position:0 bottom}.x-panel-header-plain,.x-panel-body-plain{border:0;padding:0}.x-tip{position:absolute;overflow:visible;border-color:#8eaace}.x-tip .x-tip-header .x-box-item{padding:3px 3px 0}.x-tip .x-tip-header .x-tool{padding:0 1px 0 0!important}.x-tip{-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:#e9f2ff}.x-nlg .x-tip-mc{background-color:#e9f2ff}.x-tip-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;color:#444;font-size:11px;font-weight:bold}.x-tip-header-draggable .x-tip-header-text{cursor:move}.x-tip-body,.x-form-invalid-tip-body{overflow:hidden;position:relative;padding:3px}.x-tip-header,.x-tip-body,.x-form-invalid-tip-body{color:#444;font-size:11px;font-weight:normal}.x-tip-header a,.x-tip-body a,.x-form-invalid-tip-body a{color:#2a2a2a}.x-tip-anchor{position:absolute;overflow:hidden;height:0;width:0;border-style:solid;border-width:5px;border-color:#8eaace;zoom:1}.x-border-box .x-tip-anchor{width:10px;height:10px}.x-tip-anchor-top{border-top-color:transparent;border-left-color:transparent;border-right-color:transparent}.x-tip-anchor-bottom{border-bottom-color:transparent;border-left-color:transparent;border-right-color:transparent}.x-tip-anchor-left{border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.x-tip-anchor-right{border-top-color:transparent;border-bottom-color:transparent;border-right-color:transparent}.x-form-invalid-tip{border-color:#a1311f;-moz-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-webkit-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-o-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset}.x-form-invalid-tip-body{background:1px 1px no-repeat;background-image:url('../../resources/themes/images/default/form/exclamation.gif');padding-left:22px}.x-form-invalid-tip-body li{margin-bottom:4px}.x-form-invalid-tip-body li.last{margin-bottom:0}.x-form-invalid-tip-default{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:white}.x-nlg .x-form-invalid-tip-default-mc{background-color:white}.x-slider{zoom:1}.x-slider-inner{position:relative;left:0;top:0;overflow:visible;zoom:1}.x-slider-focus{position:absolute;left:0;top:0;width:1px;height:1px;line-height:1px;font-size:1px;-moz-outline:0 none;outline:0 none;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;display:block;overflow:hidden}.x-slider-horz{padding-left:7px;background:transparent no-repeat 0 -24px;width:100%}.x-slider-horz .x-slider-end{padding-right:7px;zoom:1;background:transparent no-repeat right -46px}.x-slider-horz .x-slider-inner{background:transparent repeat-x 0 -2px;height:18px}.x-slider-horz .x-slider-thumb{width:14px;height:15px;margin-left:-7px;position:absolute;left:0;top:1px;background:transparent no-repeat 0 0}.x-slider-horz .x-slider-thumb-over{background-position:-14px -15px}.x-slider-horz .x-slider-thumb-drag{background-position:-28px -30px}.x-slider-vert{padding-top:7px;background:transparent no-repeat -44px 0}.x-slider-vert .x-slider-end{padding-bottom:7px;zoom:1;background:transparent no-repeat -22px bottom;width:22px}.x-slider-vert .x-slider-inner{background:transparent repeat-y 0 0;width:22px}.x-slider-vert .x-slider-thumb{width:15px;height:14px;margin-bottom:-7px;position:absolute;left:3px;bottom:0;background:transparent no-repeat 0 0}.x-slider-vert .x-slider-thumb-over{background-position:-15px -14px}.x-slider-vert .x-slider-thumb-drag{background-position:-30px -28px}.x-slider-horz,.x-slider-horz .x-slider-end,.x-slider-horz .x-slider-inner{background-image:url('../../resources/themes/images/default/slider/slider-bg.png')}.x-slider-horz .x-slider-thumb{background-image:url('../../resources/themes/images/default/slider/slider-thumb.png')}.x-slider-vert,.x-slider-vert .x-slider-end,.x-slider-vert .x-slider-inner{background-image:url('../../resources/themes/images/default/slider/slider-v-bg.png')}.x-slider-vert .x-slider-thumb{background-image:url('../../resources/themes/images/default/slider/slider-v-thumb.png')}.x-progress{position:relative;border-width:1px;border-style:solid;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;overflow:hidden;height:20px}.x-progress-bar{height:18px;overflow:hidden;position:absolute;width:0;-moz-border-radius:0;-webkit-border-radius:0;-o-border-radius:0;-ms-border-radius:0;-khtml-border-radius:0;border-radius:0;border-right:1px solid;border-top:1px solid}.x-progress-text{overflow:hidden;position:absolute;padding:0 5px;height:18px;font-weight:bold;font-size:11px;line-height:16px;text-align:center}.x-progress-text-back{padding-top:1px}.x-progress-default{border-color:#6594cf}.x-progress-default .x-progress-bar{border-right-color:#6594cf;border-top-color:#c6d8ed;background-image:none;background-color:#73a3e0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b2ccee),color-stop(50%,#88b1e5),color-stop(51%,#73a3e0),color-stop(100%,#5e96db));background-image:-webkit-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-moz-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-o-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-ms-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db)}.x-progress-default .x-progress-text{color:white}.x-progress-default .x-progress-text-back{color:#396295}.x-nlg .x-progress-default .x-progress-bar{background:repeat-x;background-image:url('../../resources/themes/images/default/progress/progress-default-bg.gif')}.x-toolbar{font-size:11px;border:1px solid;padding:2px 0 2px 2px}.x-toolbar .x-form-item-label{font-size:11px;line-height:15px}.x-toolbar .x-toolbar-item{margin:0 2px 0 0}.x-toolbar .x-toolbar-text{margin-left:4px;margin-right:6px;white-space:nowrap;color:#4c4c4c;line-height:16px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;font-weight:normal}.x-toolbar .x-toolbar-separator{display:block;font-size:1px;overflow:hidden;cursor:default;border:0}.x-toolbar .x-toolbar-separator-horizontal{margin:0 3px 0 2px;height:14px;width:0;border-left:1px solid #98c8ff;border-right:1px solid white}.x-toolbar-footer{background:transparent;border:0 none;margin-top:3px;padding:2px 0 2px 6px}.x-toolbar-footer .x-box-inner{border-width:0}.x-toolbar-footer .x-toolbar-item{margin:0 6px 0 0}.x-toolbar-vertical{padding:2px 2px 0 2px}.x-toolbar-vertical .x-toolbar-item{margin:0 0 2px 0}.x-toolbar-vertical .x-toolbar-text{margin-top:4px;margin-bottom:6px}.x-toolbar-vertical .x-toolbar-separator-vertical{margin:2px 5px 3px 5px;height:0;width:10px;line-height:0;border-top:1px solid #98c8ff;border-bottom:1px solid white}.x-toolbar-scroller{padding-left:0}.x-toolbar-spacer{width:2px}.x-toolbar-more-icon{background-image:url('../../resources/themes/images/default/toolbar/more.gif')!important;background-position:2px center!important;background-repeat:no-repeat}.x-toolbar-default{border-color:#99bce8;background-image:none;background-color:#d3e1f1;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dfe9f5),color-stop(100%,#d3e1f1));background-image:-webkit-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-moz-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-o-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-ms-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:linear-gradient(top,#dfe9f5,#d3e1f1)}.x-nlg .x-toolbar-default{background-image:url('../../resources/themes/images/default/toolbar/toolbar-default-bg.gif')!important;background-repeat:repeat-x}.x-toolbar-plain{border:0}.x-window{outline:0;overflow:hidden}.x-window .x-window-wrap{position:relative}.x-window-body{position:relative;border-style:solid;overflow:hidden}.x-window-maximized .x-window-wrap .x-window-header{-moz-border-radius:0!important;-webkit-border-radius:0!important;-o-border-radius:0!important;-ms-border-radius:0!important;-khtml-border-radius:0!important;border-radius:0!important}.x-window-header-top{margin-bottom:-2px}.x-window-header-body-horizontal{margin-top:-1px}.x-window-header-bottom{margin-top:-1px;margin-bottom:-1px}.x-window-header-left{margin-right:-1px}.x-window-header-right{margin-left:-1px}.x-window-header-vertical .x-surface{padding-left:1px}.x-window-collapsed .x-window-header-vertical{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px}.x-window-collapsed .x-window-header-horizontal{-moz-border-radius:5px;-webkit-border-radius:5px;-o-border-radius:5px;-ms-border-radius:5px;-khtml-border-radius:5px;border-radius:5px}.x-window-collapsed .x-window-header-left{padding-right:5px!important;margin-right:0}.x-window-collapsed .x-window-header-right{padding-left:5px!important;margin-left:0}.x-window-collapsed .x-window-header-top{padding-bottom:5px!important;margin-bottom:-1px}.x-window-collapsed .x-window-header-bottom{padding-top:5px!important;margin-top:0}.x-window-header-left .x-vml-base,.x-window-header-right .x-vml-base{left:-3px!important}.x-opera .x-window-header-vertical .x-surface,.x-strict .x-ie9 .x-window-header-vertical .x-surface{padding-left:2px}.x-window-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-window-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;white-space:nowrap}.x-window-default{border-color:#a2b1c5;-moz-border-radius:5px 5px;-webkit-border-radius:5px 5px;-o-border-radius:5px 5px;-ms-border-radius:5px 5px;-khtml-border-radius:5px 5px;border-radius:5px 5px;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-default{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-default-mc{background-color:#ced9e7}.x-window-body-default{border-color:#99bbe8;border-width:1px;background:#dfe8f6;color:black}.x-window-header-default{font-size:11px;border-color:#a2b1c5;zoom:1}.x-window-header-text-default{color:#04468c;font-weight:bold;line-height:17px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px}.x-window-header-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 0 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-header-default-top-mc{background-color:#ced9e7}.x-window-header-default-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 0;border-width:1px 1px 1px 0;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-header-default-right-mc{background-color:#ced9e7}.x-window-header-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:0 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-header-default-bottom-mc{background-color:#ced9e7}.x-window-header-default-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 0 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-header-default-left-mc{background-color:#ced9e7}.x-window-header-default-collapsed-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-header-default-collapsed-top-mc{background-color:#ced9e7}.x-window-header-default-collapsed-right{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-header-default-collapsed-right-mc{background-color:#ced9e7}.x-window-header-default-collapsed-bottom{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-header-default-collapsed-bottom-mc{background-color:#ced9e7}.x-window-header-default-collapsed-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;-o-border-top-left-radius:5px;-ms-border-top-left-radius:5px;-khtml-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;-o-border-top-right-radius:5px;-ms-border-top-right-radius:5px;-khtml-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;-o-border-bottom-right-radius:5px;-ms-border-bottom-right-radius:5px;-khtml-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;-o-border-bottom-left-radius:5px;-ms-border-bottom-left-radius:5px;-khtml-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-nlg .x-window-header-default-collapsed-left-mc{background-color:#ced9e7}.x-window-header-default-top{-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-header-default-right{-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset}.x-window-header-default-bottom{-moz-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-header-default-left{-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;-o-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-body-plain{background:transparent}.x-message-box .x-window-body{background-color:#ced9e7;border:0}.x-message-box .x-progress-wrap{margin-top:4px}.x-message-box-icon{width:47px;height:32px}.x-message-box-info,.x-message-box-warning,.x-message-box-question,.x-message-box-error{background:transparent no-repeat top left}.x-message-box .x-msg-box-wait{background-image:url('../../resources/themes/images/default/shared/blue-loading.gif')}.x-message-box-info{background-image:url('../../resources/themes/images/default/shared/icon-info.gif')}.x-message-box-warning{background-image:url('../../resources/themes/images/default/shared/icon-warning.gif')}.x-message-box-question{background-image:url('../../resources/themes/images/default/shared/icon-question.gif')}.x-message-box-error{background-image:url('../../resources/themes/images/default/shared/icon-error.gif')}.x-tab-bar{position:relative;background-color:transparent;background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(top,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(top,#dde8f5,#cbdbef);background-image:-o-linear-gradient(top,#dde8f5,#cbdbef);background-image:-ms-linear-gradient(top,#dde8f5,#cbdbef);background-image:linear-gradient(top,#dde8f5,#cbdbef);font-size:11px}.x-nlg .x-tab-bar{background-image:url('../../resources/themes/images/default/tab-bar/tab-bar-default-bg.gif')}.x-tab-bar-default-plain,.x-nlg .x-tab-bar-default-plain{background:transparent none}.x-tab-bar-body{border-style:solid;border-color:#99bce8;position:relative;z-index:2;zoom:1}.x-tab-bar-top .x-tab-bar-body{height:20px;border-width:1px 1px 0;padding:1px 0 3px}.x-tab-bar-top .x-tab-bar-strip{top:22px;border-width:1px 1px 0;height:2px}.x-border-box .x-tab-bar-top .x-tab-bar-body{height:25px}.x-border-box .x-tab-bar-top .x-tab-bar-strip{height:3px}.x-tab-bar-top .x-tab-bar-body-default-plain{height:20px;border-width:0;padding:0 0 2px}.x-tab-bar-top .x-tab-bar-strip-default-plain{top:20px;border-width:1px 1px 0 1px;height:2px}.x-border-box .x-tab-bar-top .x-tab-bar-body-default-plain{height:22px}.x-border-box .x-tab-bar-top .x-tab-bar-strip-default-plain{height:3px}.x-tab-bar-bottom .x-tab-bar-body{height:20px;border-width:0 1px 1px;padding:3px 0 1px}.x-tab-bar-bottom .x-tab-bar-body .x-box-inner{position:relative;top:-1px}.x-tab-bar-bottom .x-tab-bar-body .x-box-scroller,.x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-left,.x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-right{height:22px}.x-tab-bar-bottom .x-tab-bar-strip{top:0;border-width:0 1px 1px 1px;height:2px}.x-border-box .x-tab-bar-bottom .x-tab-bar-body{height:25px}.x-border-box .x-tab-bar-bottom .x-tab-bar-strip{height:3px}.x-tab-bar-bottom .x-tab-bar-body-default-plain{height:20px;border-width:0;padding:3px 0 0}.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-inner{position:relative;top:-1px}.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller,.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-left,.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-right{height:21px}.x-tab-bar-bottom .x-tab-bar-strip-default-plain{top:0;border-width:0 1px 1px 1px;height:2px}.x-border-box .x-tab-bar-bottom .x-tab-bar-body-default-plain{height:23px}.x-border-box .x-tab-bar-bottom .x-tab-bar-strip-default-plain{height:3px}.x-tab-bar-strip-default,.x-tab-bar-strip-default-plain{font-size:0;line-height:0;position:absolute;z-index:1;border-style:solid;overflow:hidden;border-color:#99bce8;background-color:#deecfd;zoom:1}.x-tab-default-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-o-border-top-left-radius:4px;-ms-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-o-border-top-right-radius:4px;-ms-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-o-border-bottom-right-radius:0;-ms-border-bottom-right-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;-o-border-bottom-left-radius:0;-ms-border-bottom-left-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 3px 0 3px;border-width:1px 1px 0 1px;border-style:solid;background-color:#deecfd}.x-nlg .x-tab-default-top-mc{background-image:url('../../resources/themes/images/default/tab/tab-default-top-bg.gif');background-color:#deecfd}.x-tab-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-o-border-top-left-radius:0;-ms-border-top-left-radius:0;-khtml-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-o-border-top-right-radius:0;-ms-border-top-right-radius:0;-khtml-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-o-border-bottom-right-radius:4px;-ms-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-o-border-bottom-left-radius:4px;-ms-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:0 3px 3px 3px;border-width:0 1px 1px 1px;border-style:solid;background-color:#deecfd}.x-nlg .x-tab-default-bottom-mc{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif');background-color:#deecfd}.x-tab{z-index:1;margin:0 0 0 2px;display:inline-block;zoom:1;*display:inline;white-space:nowrap;height:20px;border-color:#8db3e3;cursor:pointer;cursor:hand}.x-tab button{cursor:pointer;cursor:hand}.x-tab em{display:block;padding:0 6px;line-height:1px}.x-tab button{background:0;border:0;padding:0;margin:0;-webkit-appearance:none;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;color:#416da3;outline:0 none;overflow-x:visible}.x-tab button::-moz-focus-inner{border:0;padding:0}.x-tab button .x-tab-inner{background-color:transparent;background-repeat:no-repeat;background-position:0 -2px;display:block;text-align:center;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden}.x-tab img{display:none}.x-border-box .x-tab-default-top{height:21px}.x-border-box .x-tab-default-bottom{height:21px}.x-tab-default-top{-moz-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-webkit-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-o-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;border-bottom:1px solid #99bce8!important}.x-tab-default-top em{padding-bottom:3px}.x-tab-default-top button,.x-tab-default-top .x-tab-inner{height:13px;line-height:13px}.x-safari4 .x-tab-default-top .x-tab-inner,.x-safari5_0 .x-tab-default-top .x-tab-inner{line-height:11px}.x-nbr .x-tab-default-top{border-bottom-width:1px!important}.x-tab-default-top-active{border-bottom-color:#deecfd!important}.x-tab-default-bottom{-moz-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-webkit-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-o-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;border-top:1px solid #99bce8!important;-moz-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-webkit-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-o-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x-tab-default-bottom em{padding-top:3px}.x-tab-default-bottom button,.x-tab-default-bottom .x-tab-inner{height:13px;line-height:13px}.x-nbr .x-tab-default-bottom{border-top-width:1px!important}.x-tab-default-bottom-active{border-top-color:#deecfd!important}.x-tab-default-disabled{cursor:default;border-color:#bbd2ef;background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-ms-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:linear-gradient(top,#e1ecfa,#ecf4fe)}.x-tab-default-disabled button{color:#c3b3b3!important}.x-tab-icon-text-left .x-tab-inner{padding-left:20px}.x-tab button{position:relative}.x-tab-icon{position:absolute;background-repeat:no-repeat;background-position:0 -1px;top:0;left:0;right:auto;bottom:0;width:18px;height:18px}.x-strict .x-ie8 .x-tab button,.x-strict .x-ie9 .x-tab button{overflow-y:visible}.x-tab-default-disabled .x-tab-icon{filter:alpha(opacity=50);opacity:.5}.x-tab-noicon .x-tab-icon{display:none}.x-tab-top-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-ms-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x-tab-bottom-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-ms-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x-tab-active{z-index:3}.x-tab-active button{color:#15498b}.x-tab-top-active{background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-ms-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%)}.x-tab-bottom-active{background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-ms-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%)}.x-tab-disabled{border-color:#bbd2ef}.x-tab-disabled button{color:#c3b3b3}.x-tab-top-disabled{background-image:none;background:transparent;background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-ms-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:linear-gradient(top,#e1ecfa,#ecf4fe)}.x-tab-bottom-disabled{background-image:none;background:transparent;background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-ms-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:linear-gradient(bottom,#e1ecfa,#ecf4fe)}.x-nlg .x-tab-top{background-image:url('../../resources/themes/images/default/tab/tab-default-top-bg.gif')}.x-nlg .x-tab-bottom{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-bg.gif')}.x-nlg .x-tab-top-over{background-image:url('../../resources/themes/images/default/tab/tab-default-top-over-bg.gif')}.x-nlg .x-tab-bottom-over{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-over-bg.gif')}.x-nlg .x-tab-top-active{background-image:url('../../resources/themes/images/default/tab/tab-default-top-active-bg.gif')}.x-nlg .x-tab-bottom-active{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-active-bg.gif')}.x-nlg .x-tab-top-disabled{background-image:url('../../resources/themes/images/default/tab/tab-default-top-disabled-bg.gif')!important}.x-nlg .x-tab-bottom-disabled{background-image:url('../../resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif')!important}.x-tab-closable em{padding-right:14px}.x-tab-close-btn{position:absolute;top:2px;right:2px;width:11px;height:11px;font-size:0;line-height:0;text-indent:-999px;background:no-repeat;background-image:url('../../resources/themes/images/default/tab/tab-default-close.gif');filter:alpha(opacity=60);opacity:.6}.x-nbr .x-tab-close-btn{top:0;right:0}a.x-tab-close-btn:hover{filter:alpha(opacity=100);opacity:1}.x-tab-default-disabled a.x-tab-close-btn{filter:alpha(opacity=30);opacity:.3}.x-autowidth-table table.x-grid-table{table-layout:auto;width:auto!important}.x-tree-no-lines .x-tree-elbow{background-color:transparent}.x-tree-no-lines .x-tree-elbow-end{background-color:transparent}.x-tree-no-lines .x-tree-elbow-line{background-color:transparent}.x-tree-arrows .x-tree-elbow-plus{background:transparent no-repeat 0 0}.x-tree-arrows .x-tree-elbow-end-plus{background:transparent no-repeat 0 0}.x-tree-arrows .x-tree-elbow-end-minus{background:transparent no-repeat -16px 0}.x-tree-arrows .x-tree-elbow-minus{background:transparent no-repeat -16px 0}.x-tree-arrows .x-tree-elbow{background-color:transparent!important}.x-tree-arrows .x-tree-elbow-end{background-color:transparent!important}.x-tree-arrows .x-tree-elbow-line{background-color:transparent!important}.x-tree-arrows .x-tree-expander-over .x-tree-elbow-plus,.x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-plus{background-position:-32px 0}.x-tree-arrows .x-tree-expander-over .x-tree-elbow-minus,.x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-minus{background-position:-48px 0}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-plus,.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-position:-16px 0}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-plus,.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-end-plus{background-position:-48px 0}.x-tree-elbow-plus,.x-tree-elbow-minus,.x-tree-elbow-end-plus,.x-tree-elbow-end-minus{cursor:pointer}.x-tree-lines .x-tree-elbow{background-image:url('../../resources/themes/images/default/tree/elbow.gif')}.x-tree-lines .x-tree-elbow-end{background-image:url('../../resources/themes/images/default/tree/elbow-end.gif')}.x-tree-lines .x-tree-elbow-plus{background-image:url('../../resources/themes/images/default/tree/elbow-plus.gif')}.x-tree-lines .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-end-plus.gif')}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus{background-image:url('../../resources/themes/images/default/tree/elbow-minus.gif')}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-end-minus.gif')}.x-tree-lines .x-tree-elbow-line{background-image:url('../../resources/themes/images/default/tree/elbow-line.gif')}.x-tree-no-lines .x-tree-elbow-plus,.x-tree-no-lines .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-plus-nl.gif')}.x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-plus,.x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url('../../resources/themes/images/default/tree/elbow-end-minus-nl.gif')}.x-tree-arrows .x-tree-elbow-plus,.x-tree-arrows .x-tree-elbow-minus,.x-tree-arrows .x-tree-elbow-end-plus,.x-tree-arrows .x-tree-elbow-end-minus{background-image:url('../../resources/themes/images/default/tree/arrows.gif')}.x-tree-icon{margin:2px 3px 0 0}.x-grid-with-row-lines .x-tree-icon{margin-top:1px}.x-tree-elbow,.x-tree-elbow-end,.x-tree-elbow-plus,.x-tree-elbow-end-plus,.x-tree-elbow-empty,.x-tree-elbow-line{height:20px;width:16px}.x-grid-with-row-lines .x-tree-elbow,.x-grid-with-row-lines .x-tree-elbow-end,.x-grid-with-row-lines .x-tree-elbow-plus,.x-grid-with-row-lines .x-tree-elbow-end-plus,.x-grid-with-row-lines .x-tree-elbow-empty,.x-grid-with-row-lines .x-tree-elbow-line{height:19px;background-position:0 -1px}.x-tree-icon-leaf{width:16px;background-image:url('../../resources/themes/images/default/tree/leaf.gif')}.x-tree-icon-parent{width:16px;background-image:url('../../resources/themes/images/default/tree/folder.gif')}.x-grid-tree-node-expanded .x-tree-icon-parent{background-image:url('../../resources/themes/images/default/tree/folder-open.gif')}.x-grid-rowbody{padding:0}.x-grid-cell-treecolumn .x-grid-cell-inner{padding:0;line-height:19px}.x-grid-with-row-lines .x-grid-cell-treecolumn .x-grid-cell-inner{line-height:17px}.x-tree-panel .x-grid-cell-inner{cursor:pointer}.x-tree-panel .x-grid-cell-inner img{display:inline-block;vertical-align:top}.x-grid-editor-on-text-node .x-form-text{padding-left:1px;padding-right:1px}.x-opera .x-grid-editor-on-text-node .x-form-text{padding-left:2px;padding-right:2px}.x-tree-checkbox{margin:4px 3px 0 0;display:inline-block;vertical-align:top;width:13px;height:13px;background:no-repeat;background-image:url('../../resources/themes/images/default/form/checkbox.gif');overflow:hidden;padding:0;border:0}.x-tree-checkbox::-moz-focus-inner{padding:0;border:0}.x-grid-with-row-lines .x-tree-checkbox{margin-top:3px}.x-tree-checkbox-checked{background-position:0 -13px}.x-tree-drop-ok-append .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-append.gif')}.x-tree-drop-ok-above .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-above.gif')}.x-tree-drop-ok-below .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-below.gif')}.x-tree-drop-ok-between .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/tree/drop-between.gif')}.x-grid-tree-loading .x-tree-icon{background-image:url('../../resources/themes/images/default/tree/loading.gif')}.x-tree-ddindicator{height:1px;border-width:1px 0 0;border-style:dotted;border-color:green}.x-grid-tree-loading span{font-style:italic;color:#444}.x-tree-animator-wrap{overflow:hidden}.x-surface{display:-moz-inline-box;-moz-box-orient:vertical;display:inline-block;vertical-align:middle;*vertical-align:auto;overflow:hidden}.x-surface{*display:inline}.rvml{behavior:url(#default#VML)}.x-surface tspan{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-vml-sprite{position:absolute;left:0;top:0;width:1px;height:1px}.x-vml-group{position:absolute;left:0;top:0;width:1000px;height:1000px}.x-vml-measure-span{position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;display:inline}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}svg,vml{overflow:hidden}.x-viewport,.x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;position:static}.x-dd-drag-proxy{z-index:1000000!important}.x-dd-drag-repair .x-dd-drag-ghost{filter:alpha(opacity=60);opacity:.6}.x-dd-drag-repair .x-dd-drop-icon{display:none}.x-dd-drag-ghost{filter:alpha(opacity=85);opacity:.85;padding:5px;padding-left:20px;white-space:nowrap;color:#000;font:normal 11px tahoma,arial,verdana,sans-serif;border:1px solid;border-color:#ddd #bbb #bbb #ddd;background-color:#fff}.x-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1}.x-view-selector{position:absolute;left:0;top:0;width:0;background-color:#c3daf9;border:1px dotted #39b;filter:alpha(opacity=50);opacity:.5;zoom:1}.x-dd-drop-nodrop .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/dd/drop-no.gif')}.x-dd-drop-ok .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/dd/drop-yes.gif')}.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url('../../resources/themes/images/default/dd/drop-add.gif')}.x-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;zoom:1;filter:alpha(opacity=0);opacity:0;background-color:#fff}.x-collapsed .x-resizable-handle{display:none}.x-resizable-handle-east{width:6px;height:100%;right:0;top:0}.x-resizable-over .x-resizable-handle-east{cursor:e-resize}.x-resizable-handle-south{width:100%;height:6px;left:0;bottom:0}.x-resizable-over .x-resizable-handle-south{cursor:s-resize}.x-resizable-handle-west{width:6px;height:100%;left:0;top:0}.x-resizable-over .x-resizable-handle-west{cursor:w-resize}.x-resizable-handle-north{width:100%;height:6px;left:0;top:0}.x-resizable-over .x-resizable-handle-north{cursor:n-resize}.x-resizable-handle-southeast{width:6px;height:6px;right:0;bottom:0;z-index:101}.x-resizable-over .x-resizable-handle-southeast{cursor:se-resize}.x-resizable-handle-northwest{width:6px;height:6px;left:0;top:0;z-index:101}.x-resizable-over .x-resizable-handle-northwest{cursor:nw-resize}.x-resizable-handle-northeast{width:6px;height:6px;right:0;top:0;z-index:101}.x-resizable-over .x-resizable-handle-northeast{cursor:ne-resize}.x-resizable-handle-southwest{width:6px;height:6px;left:0;bottom:0;z-index:101}.x-resizable-over .x-resizable-handle-southwest{cursor:sw-resize}.x-ie .x-resizable-handle-east{margin-right:-1px}.x-ie .x-resizable-handle-south{margin-bottom:-1px}.x-resizable-over .x-resizable-handle,.x-resizable-pinned .x-resizable-handle{filter:alpha(opacity=100);opacity:1}.x-window .x-window-handle{filter:alpha(opacity=0);opacity:0}.x-window-collapsed .x-window-handle{display:none}.x-resizable-proxy{border:1px dashed #3b5a82;position:absolute;left:0;top:0;overflow:hidden;z-index:50000}.x-resizable-overlay{position:absolute;left:0;top:0;width:100%;height:100%;display:none;z-index:200000;background-color:#fff;filter:alpha(opacity=0);opacity:0}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-position:left;background-image:url('../../resources/themes/images/default/sizer/e-handle.gif')}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-north{background-position:top;background-image:url('../../resources/themes/images/default/sizer/s-handle.gif')}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-position:top left;background-image:url('../../resources/themes/images/default/sizer/se-handle.gif')}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right;background-image:url('../../resources/themes/images/default/sizer/nw-handle.gif')}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left;background-image:url('../../resources/themes/images/default/sizer/ne-handle.gif')}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-position:top right;background-image:url('../../resources/themes/images/default/sizer/sw-handle.gif')}.x-splitter .x-collapse-el{position:absolute;cursor:pointer;background-color:transparent;background-repeat:no-repeat!important}.x-layout-split-left,.x-layout-split-right{top:50%;margin-top:-17px;width:5px;height:35px}.x-layout-split-top,.x-layout-split-bottom{left:50%;width:35px;height:5px;margin-left:-17px}.x-layout-split-left{background:no-repeat top right;background-image:url('../../resources/themes/images/default/util/splitter/mini-left.gif')}.x-layout-split-right{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-right.gif')}.x-layout-split-top{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-top.gif')}.x-layout-split-bottom{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-bottom.gif')}.x-splitter-collapsed .x-layout-split-left{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-right.gif')}.x-splitter-collapsed .x-layout-split-right{background:no-repeat top right;background-image:url('../../resources/themes/images/default/util/splitter/mini-left.gif')}.x-splitter-collapsed .x-layout-split-top{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-bottom.gif')}.x-splitter-collapsed .x-layout-split-bottom{background:no-repeat top left;background-image:url('../../resources/themes/images/default/util/splitter/mini-top.gif')}.x-splitter-horizontal{cursor:e-resize;cursor:row-resize;font-size:1px}.x-splitter-vertical{cursor:e-resize;cursor:col-resize;font-size:1px}.x-splitter-collapsed,.x-splitter-horizontal-noresize,.x-splitter-vertical-noresize{cursor:default}.x-splitter-active{z-index:4;font-size:1px;background-color:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-splitter-active .x-collapse-el{filter:alpha(opacity=30);opacity:.3}.x-proxy-el{position:absolute;background:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-docked{position:absolute!important;z-index:1}.x-docked-top{border-bottom-width:0!important}.x-docked-bottom{border-top-width:0!important}.x-docked-left{border-right-width:0!important}.x-docked-right{border-left-width:0!important}.x-docked-noborder-top{border-top-width:0!important}.x-docked-noborder-right{border-right-width:0!important}.x-docked-noborder-bottom{border-bottom-width:0!important}.x-docked-noborder-left{border-left-width:0!important}.x-box-inner{overflow:hidden;zoom:1;position:relative;left:0;top:0}.x-box-item{position:absolute!important;left:0;top:0}.x-rtl .x-box-item{right:0;left:auto}.x-box-layout-ct,.x-border-layout-ct{overflow:hidden;zoom:1}.x-border-layout-ct{background-color:#dfe8f6;position:relative}.x-overflow-hidden{overflow:hidden!important}.x-inline-children>*{display:inline-block!important}.x-abs-layout-ct{position:relative}.x-abs-layout-item{position:absolute!important}.x-fit-item{position:relative}.x-border-region-slide-in{z-index:5}.x-region-collapsed-placeholder{z-index:4}.x-accordion-hd .x-panel-header-text{color:black;font-weight:normal}.x-accordion-hd{background:#d9e7f8!important;-moz-box-shadow:inset 0 0 0 0 #d9e7f8;-webkit-box-shadow:inset 0 0 0 0 #d9e7f8;-o-box-shadow:inset 0 0 0 0 #d9e7f8;box-shadow:inset 0 0 0 0 #d9e7f8}.x-accordion-hd .x-tool-collapse-top,.x-accordion-hd .x-tool-collapse-right,.x-accordion-hd .x-tool-collapse-bottom,.x-accordion-hd .x-tool-collapse-left{background-position:0 -255px}.x-accordion-hd .x-tool-expand-top,.x-accordion-hd .x-tool-expand-right,.x-accordion-hd .x-tool-expand-bottom,.x-accordion-hd .x-tool-expand-left{background-position:0 -240px}.x-accordion-hd .x-tool-over .x-tool-collapse-top,.x-accordion-hd .x-tool-over .x-tool-collapse-right,.x-accordion-hd .x-tool-over .x-tool-collapse-bottom,.x-accordion-hd .x-tool-over .x-tool-collapse-left{background-position:-15px -255px}.x-accordion-hd .x-tool-over .x-tool-expand-top,.x-accordion-hd .x-tool-over .x-tool-expand-right,.x-accordion-hd .x-tool-over .x-tool-expand-bottom,.x-accordion-hd .x-tool-over .x-tool-expand-left{background-position:-15px -240px}.x-accordion-hd{border-width:1px 0 1px 0!important;padding:4px 5px 5px 5px;border-top-color:#f3f7fb!important}.x-accordion-body{border-width:0!important}.x-accordion-hd-sibling-expanded{border-top-color:#99bce8!important;-moz-box-shadow:inset 0 1px 0 0 #f3f7fb;-webkit-box-shadow:inset 0 1px 0 0 #f3f7fb;-o-box-shadow:inset 0 1px 0 0 #f3f7fb;box-shadow:inset 0 1px 0 0 #f3f7fb}.x-accordion-hd-last-collapsed{border-bottom-color:#d9e7f8!important}.x-frame-tl,.x-frame-tr,.x-frame-tc,.x-frame-bl,.x-frame-br,.x-frame-bc{overflow:hidden;background-repeat:no-repeat}.x-frame-tc,.x-frame-bc{background-repeat:repeat-x}.x-frame-mc{position:relative;background-repeat:repeat-x;overflow:hidden}.x-box-scroller-left{float:left;height:100%;z-index:5}.x-box-scroller-left .x-toolbar-scroll-left,.x-box-scroller-left .x-tabbar-scroll-left{width:18px;position:relative;cursor:pointer;height:20px;background:transparent no-repeat -18px 0;background-image:url('../../resources/themes/images/default/tab-bar/scroll-left.gif')}.x-box-scroller-left .x-toolbar-scroll-left-hover{background-position:0 0}.x-box-scroller-left .x-toolbar-scroll-left-disabled,.x-box-scroller-left .x-tabbar-scroll-left-disabled{background-position:-18px 0;filter:alpha(opacity=50);opacity:.5;cursor:default}.x-box-scroller-left .x-toolbar-scroll-left{background-image:url('../../resources/themes/images/default/toolbar/scroll-left.gif');background-position:-14px 0}.x-box-scroller-left .x-toolbar-scroll-left-hover{background-position:0 0}.x-box-scroller-left .x-toolbar-scroll-left-disabled{background-position:-14px 0}.x-box-scroller-left .x-toolbar-scroll-left{width:14px;height:22px;border-bottom:1px solid #8db2e3}.x-horizontal-box-overflow-body{float:left}.x-box-scroller-right{float:right;height:100%;z-index:5}.x-box-scroller-right .x-toolbar-scroll-right,.x-box-scroller-right .x-tabbar-scroll-right{width:18px;position:relative;cursor:pointer;height:20px;background:transparent no-repeat 0 0;background-image:url('../../resources/themes/images/default/tab-bar/scroll-right.gif')}.x-box-scroller-right .x-toolbar-scroll-right-hover{background-position:-18px 0}.x-box-scroller-right .x-toolbar-scroll-right-disabled,.x-box-scroller-right .x-tabbar-scroll-right-disabled{background-position:0 0;filter:alpha(opacity=50);opacity:.5;cursor:default}.x-box-scroller-right .x-toolbar-scroll-right{background-image:url('../../resources/themes/images/default/toolbar/scroll-right.gif')}.x-box-scroller-right .x-toolbar-scroll-right-hover{background-position:-14px 0}.x-box-scroller-right .x-toolbar-scroll-right-disabled{background-position:0 0}.x-box-scroller-right .x-toolbar-scroll-right{width:14px;height:22px;border-bottom:1px solid #8db2e3}.x-box-scroller-top .x-box-scroller{line-height:0;font-size:0}.x-box-scroller-top .x-menu-scroll-top{background:transparent no-repeat center center;background-image:url('../../resources/themes/images/default/layout/mini-top.gif');height:8px;cursor:pointer}.x-box-scroller-bottom .x-box-scroller{line-height:0;font-size:0}.x-box-scroller-bottom .x-menu-scroll-bottom{background:transparent no-repeat center center;background-image:url('../../resources/themes/images/default/layout/mini-bottom.gif');height:8px;cursor:pointer}.x-box-menu-right{float:right;padding-right:2px}.x-column{float:left}.x-tool{height:15px}.x-tool img{overflow:hidden;width:15px;height:15px;cursor:pointer;background-color:transparent;background-repeat:no-repeat;background-image:url('../../resources/themes/images/default/tools/tool-sprites.gif');margin:0}.x-panel-header-horizontal .x-tool,.x-window-header-horizontal .x-tool{margin-left:2px}.x-panel-header-vertical .x-tool,.x-window-header-vertical .x-tool{margin-top:2px}.x-panel-header-vertical .x-tool-top,.x-window-header-vertical .x-tool-top{margin:0 0 4px}.x-tool-placeholder{visibility:hidden}.x-tool-toggle{background-position:0 -60px}.x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-panel-collapsed .x-tool-toggle,.x-fieldset-collapsed .x-tool-toggle{background-position:0 -75px}.x-panel-collapsed .x-tool-over .x-tool-toggle,.x-fieldset-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.x-tool-close{background-position:0 0}.x-tool-minimize{background-position:0 -15px}.x-tool-maximize{background-position:0 -30px}.x-tool-restore{background-position:0 -45px}.x-tool-gear{background-position:0 -90px}.x-tool-prev{background-position:0 -105px}.x-tool-next{background-position:0 -120px}.x-tool-pin{background-position:0 -135px}.x-tool-unpin{background-position:0 -150px}.x-tool-right{background-position:0 -165px}.x-tool-left{background-position:0 -180px}.x-tool-help{background-position:0 -300px}.x-tool-save{background-position:0 -285px}.x-tool-search{background-position:0 -270px}.x-tool-minus{background-position:0 -255px}.x-tool-plus{background-position:0 -240px}.x-tool-refresh{background-position:0 -225px}.x-tool-up{background-position:0 -210px}.x-tool-down{background-position:0 -195px}.x-tool-collapse{background-position:0 -345px}.x-tool-expand{background-position:0 -330px}.x-tool-print{background-position:0 -315px}.x-tool-expand-bottom,.x-tool-collapse-bottom{background-position:0 -195px}.x-tool-expand-top,.x-tool-collapse-top{background-position:0 -210px}.x-tool-expand-left,.x-tool-collapse-left{background-position:0 -180px}.x-tool-expand-right,.x-tool-collapse-right{background-position:0 -165px}.x-tool-over .x-tool-close{background-position:-15px 0}.x-tool-over .x-tool-minimize{background-position:-15px -15px}.x-tool-over .x-tool-maximize{background-position:-15px -30px}.x-tool-over .x-tool-restore{background-position:-15px -45px}.x-tool-over .x-tool-gear{background-position:-15px -90px}.x-tool-over .x-tool-prev{background-position:-15px -105px}.x-tool-over .x-tool-next{background-position:-15px -120px}.x-tool-over .x-tool-pin{background-position:-15px -135px}.x-tool-over .x-tool-unpin{background-position:-15px -150px}.x-tool-over .x-tool-right{background-position:-15px -165px}.x-tool-over .x-tool-left{background-position:-15px -180px}.x-tool-over .x-tool-down{background-position:-15px -195px}.x-tool-over .x-tool-up{background-position:-15px -210px}.x-tool-over .x-tool-refresh{background-position:-15px -225px}.x-tool-over .x-tool-plus{background-position:-15px -240px}.x-tool-over .x-tool-minus{background-position:-15px -255px}.x-tool-over .x-tool-search{background-position:-15px -270px}.x-tool-over .x-tool-save{background-position:-15px -285px}.x-tool-over .x-tool-help{background-position:-15px -300px}.x-tool-over .x-tool-print{background-position:-15px -315px}.x-tool-over .x-tool-expand{background-position:-15px -330px}.x-tool-over .x-tool-collapse{background-position:-15px -345px}.x-tool-over .x-tool-expand-bottom,.x-tool-over .x-tool-collapse-bottom{background-position:-15px -195px}.x-tool-over .x-tool-expand-top,.x-tool-over .x-tool-collapse-top{background-position:-15px -210px}.x-tool-over .x-tool-expand-left,.x-tool-over .x-tool-collapse-left{background-position:-15px -180px}.x-tool-over .x-tool-expand-right,.x-tool-over .x-tool-collapse-right{background-position:-15px -165px}.x-horizontal-scroller-present .x-grid-body{border-bottom-width:0}.x-vertical-scroller-present .x-grid-body{border-right-width:0}.x-scroller{overflow:hidden}.x-scroller-vertical{border:1px solid #99bce8;border-top-color:#c5c5c5}.x-scroller-horizontal{border:1px solid #99bce8}.x-vertical-scroller-present .x-scroller-horizontal{border-right-width:0}.x-scroller-ct{overflow:hidden;position:absolute;margin:0;padding:0;border:0;left:0;top:0;box-sizing:content-box!important;-ms-box-sizing:content-box!important;-moz-box-sizing:content-box!important;-webkit-box-sizing:content-box!important}.x-scroller-vertical .x-scroller-ct{overflow-y:scroll}.x-scroller-horizontal .x-scroller-ct{overflow-x:scroll}.x-html html,.x-html address,.x-html blockquote,.x-html body,.x-html dd,.x-html div,.x-html dl,.x-html dt,.x-html fieldset,.x-html form,.x-html frame,.x-html frameset,.x-html h1,.x-html h2,.x-html h3,.x-html h4,.x-html h5,.x-html h6,.x-html noframes,.x-html ol,.x-html p,.x-html ul,.x-html center,.x-html dir,.x-html hr,.x-html menu,.x-html pre{display:block}.x-html li{display:list-item;list-style:disc}.x-html head{display:none}.x-html table{display:table}.x-html tr{display:table-row}.x-html thead{display:table-header-group}.x-html tbody{display:table-row-group}.x-html tfoot{display:table-footer-group}.x-html col{display:table-column}.x-html colgroup{display:table-column-group}.x-html td,.x-html th{display:table-cell}.x-html caption{display:table-caption}.x-html th{font-weight:bolder;text-align:center}.x-html caption{text-align:center}.x-html body{margin:8px}.x-html h1{font-size:2em;margin:.67em 0}.x-html h2{font-size:1.5em;margin:.75em 0}.x-html h3{font-size:1.17em;margin:.83em 0}.x-html h4,.x-html p,.x-html blockquote,.x-html ul,.x-html fieldset,.x-html form,.x-html ol,.x-html dl,.x-html dir,.x-html menu{margin:1.12em 0}.x-html h5{font-size:.83em;margin:1.5em 0}.x-html h6{font-size:.75em;margin:1.67em 0}.x-html h1,.x-html h2,.x-html h3,.x-html h4,.x-html h5,.x-html h6,.x-html b,.x-html strong{font-weight:bolder}.x-html blockquote{margin-left:40px;margin-right:40px}.x-html i,.x-html cite,.x-html em,.x-html var,.x-html address{font-style:italic}.x-html pre,.x-html tt,.x-html code,.x-html kbd,.x-html samp{font-family:monospace}.x-html pre{white-space:pre}.x-html button,.x-html textarea,.x-html input,.x-html select{display:inline-block}.x-html big{font-size:1.17em}.x-html small,.x-html sub,.x-html sup{font-size:.83em}.x-html sub{vertical-align:sub}.x-html sup{vertical-align:super}.x-html table{border-spacing:2px}.x-html thead,.x-html tbody,.x-html tfoot{vertical-align:middle}.x-html td,.x-html th{vertical-align:inherit}.x-html s,.x-html strike,.x-html del{text-decoration:line-through}.x-html hr{border:1px inset}.x-html ol,.x-html ul,.x-html dir,.x-html menu,.x-html dd{margin-left:40px}.x-html ul,.x-html menu,.x-html dir{list-style-type:disc}.x-html ol{list-style-type:decimal}.x-html ol ul,.x-html ul ol,.x-html ul ul,.x-html ol ol{margin-top:0;margin-bottom:0}.x-html u,.x-html ins{text-decoration:underline}.x-html br:before{content:"\A"}.x-html :before,.x-html :after{white-space:pre-line}.x-html center{text-align:center}.x-html :link,.x-html :visited{text-decoration:underline}.x-html :focus{outline:invert dotted thin}.x-html BDO[DIR="ltr"]{direction:ltr;unicode-bidi:bidi-override}.x-html BDO[DIR="rtl"]{direction:rtl;unicode-bidi:bidi-override}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/config.rb
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/config.rb	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/config.rb	(revision 18277)
@@ -0,0 +1,22 @@
+# $ext_path: This should be the path of where the ExtJS SDK is installed
+# Generally this will be in a lib/extjs folder in your applications root
+# <root>/lib/extjs
+$ext_path = "../../"
+
+# sass_path: the directory your Sass files are in. THIS file should also be in the Sass folder
+# Generally this will be in a resources/sass folder
+# <root>/resources/sass
+sass_path = File.dirname(__FILE__)
+
+# css_path: the directory you want your CSS files to be.
+# Generally this is a folder in the parent directory of your Sass files
+# <root>/resources/css
+css_path = File.join(sass_path, "..", "css")
+
+# output_style: The output style for your compiled CSS
+# nested, expanded, compact, compressed
+# More information can be found here http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#output_style
+output_style = :nested
+
+# We need to load in the Ext4 themes folder, which includes all it's default styling, images, variables and mixins
+load File.join(File.dirname(__FILE__), $ext_path, 'resources', 'themes')
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-all-access.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-all-access.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-all-access.scss	(revision 18277)
@@ -0,0 +1,234 @@
+$theme-name: 'access';
+
+body {
+    background: #000;
+}
+
+$base-color: #3f4757;
+$orange: #ed9200;
+$color: #fff;
+$font-size: 15px;
+$css-shadow-background-color: #000000;
+$include-shadow-images: false;
+
+//panel
+$panel-header-background-color: #3a4155;
+$panel-header-color: #fff;
+$panel-body-background-color: #232d38;
+$panel-body-color: #fff;
+//$panel-header-font-size: 14px;
+$panel-border-color: #18181a;
+$panel-header-inner-border: false;
+
+$border-layout-ct-background: #3f4757;
+
+//framed panel
+$panel-frame-border-radius: 3px;
+$frame-base-color: #232d38;
+$panel-frame-background-color: #3f4757;
+
+//window
+$window-background-color: #3f4757;
+$window-body-background-color: #1f2833;
+$window-body-color: #fff;
+$window-body-border-color: #18181a;
+$window-inner-border-color: #414b5c;
+$window-header-color: #fff;
+
+//loadmask
+$loadmask-msg-background-color: #3f4757;
+$loadmask-msg-border-color: #222233;
+$loadmask-msg-inner-border-color: #555566;
+$loadmask-msg-inner-background-color: #232d38;
+$loadmask-msg-inner-color: #fff;
+$loadmask-msg-inner-padding: 5px 10px;
+$loadmask-msg-inner-icon: null;
+
+//toolbar
+$toolbar-border-color: $window-body-border-color;
+$toolbar-background-color: #3a3e4f;
+$toolbar-text-color: #fff;
+
+$toolbar-separator-color: #1b1b29 !default;
+$toolbar-separator-highlight-color: #5d5d6e !default;
+
+//buttons
+$button-default-base-color: #2a3142;
+$button-default-base-color-over: $orange;
+$button-default-base-color-pressed: #da7b19;
+$button-default-color: #fff;
+
+$button-toolbar-border-color-over: #d97e27;
+$button-toolbar-border-color-pressed: #c86e19;
+$button-toolbar-background-color-over: $orange;
+$button-toolbar-background-color-pressed: #db7b1f;
+$button-toolbar-background-gradient: null;
+$button-toolbar-background-gradient-over: null;
+$button-toolbar-background-gradient-focus: null;
+$button-toolbar-background-gradient-pressed: null;
+$button-toolbar-background-gradient-disabled: null;
+$button-toolbar-color: #fff !default;
+$button-toolbar-color-over: #fff !default;
+$button-toolbar-color-pressed: #fff !default;
+
+//forms
+$form-field-height: 26px;
+$form-toolbar-field-height: 24px;
+//$form-field-font-size: 15px;
+$form-field-border-width: 2px;
+$form-field-border-color: #737b8c;
+$form-field-background-color: #34383f;
+$form-field-color: #fff;
+$form-checkbox-size: 19px;
+
+$form-field-focus-border-color: #ff9c33;
+
+$form-field-invalid-background-color: #15171A;
+$form-field-invalid-border-color: #C30;
+
+$form-trigger-width: 20px;
+$form-trigger-border-bottom-width: 2px;
+$form-trigger-border-bottom-color: $form-field-border-color;
+$form-trigger-border-bottom-color-over: $form-field-focus-border-color;
+$form-trigger-border-bottom-color-focus: $form-field-border-color;
+$form-trigger-border-bottom-color-focus-over: $form-field-focus-border-color;
+$form-trigger-border-bottom-color-pressed: #c76e12;
+
+//htmleditor
+$html-editor-border-color: #737b8c;
+
+//fieldsets
+$fieldset-header-color: #fff;
+$fieldset-border-color: #727c8c;
+
+//tabs
+$tab-base-color: #616f8c;
+$tab-base-color-over: lighten(#616f8c, 5);
+$tab-base-color-active: $orange;
+
+$tab-height: 27px;
+
+$tab-color: #fff;
+$tab-color-active: $tab-color;
+
+$tab-inner-border: false;
+$tab-border-color: #2e3746;
+$tab-border-color-active: #74400e;
+
+$tab-background-gradient: null;
+$tab-background-gradient-over: null;
+$tab-background-gradient-active: null;
+$tab-background-gradient-disabled: null;
+
+$tab-closable-icon: 'tabs/tab-close.gif';
+$tab-closable-background-position: top right;
+$tab-closable-width: 16px;
+
+$tabbar-strip-background-color: $orange;
+
+//grid
+$grid-row-height: 22px;
+$grid-row-cell-font-size: 14px;
+$grid-row-cell-line-height: 17px;
+$grid-header-background-color: #373c4b;
+$grid-header-over-background-color: #496085;
+$grid-header-background-gradient: 'glossy';
+$grid-header-over-background-gradient: 'glossy';
+$grid-header-color: #fff;
+
+$grid-row-wrap-border-color: #101010;
+
+$grid-row-cell-color: #fff;
+
+$grid-row-cell-background: #1f2933;
+
+$grid-row-cell-alt-background: #1a232b;
+
+$grid-row-cell-over-background-color: #7e552f;
+$grid-row-cell-over-border-color: #101010;
+
+$grid-row-cell-selected-background-color: #e48627;
+$grid-row-cell-selected-border-color: #101010;
+
+$grid-row-cell-over-background-gradient: 'flat';
+$grid-row-cell-focus-background-gradient: 'flat';
+
+$grid-editor-line-height: $grid-row-height - 7;
+$grid-row-editor-field-padding-horizontal: 1px;
+$grid-cell-editor-field-padding-horizontal: 3px;
+$grid-cell-treecolumn-editor-field-padding-horizontal: 0;
+$grid-row-editor-checkbox-padding-top: 0;
+$grid-cell-editor-checkbox-padding-top: 1px;
+
+//tree
+$tree-elbow-height: 22px;
+$tree-checkbox-margin-top: 2px;
+$tree-icon-margin-top: 3px;
+
+//layout
+$accordion-header-color: #fff;
+$accordion-header-background-color: #5c6b82;
+
+//progress bar
+$progress-border-color: #18181a;
+$progress-background-color: #232d38;
+$progress-text-color-back: #aaa;
+$progress-bar-background-color: $orange;
+
+//btn group
+$btn-group-background-color: #393d4e;
+$btn-group-header-background-color: #676772;
+$btn-group-border-color: #606068;
+$btn-group-inner-border-color: #757478;
+$btn-group-header-color: #D2D2D2;
+
+//datepicker
+$datepicker-background-color: #21252e;
+$datepicker-border-color: #798294;
+$datepicker-today-item-border-color: #9999aa;
+
+$datepicker-header-background-color: #5c6980;
+
+$datepicker-th-background-color: #3a4051;
+$datepicker-th-color: #fff;
+$datepicker-th-border-bottom-color: #535b5c;
+
+$datepicker-td-height: 21px;
+
+$datepicker-item-color: #fff;
+$datepicker-item-hover-background-color: #7e5530;
+$datepicker-selected-item-border-color: #864900;
+$datepicker-selected-item-background-color: #e5872c;
+
+$datepicker-monthpicker-height: 172px;
+
+$datepicker-monthpicker-item-color: #fff;
+$datepicker-monthpicker-item-border: 0 none;
+$datepicker-monthpicker-item-selected-background-color: $datepicker-selected-item-background-color;
+
+// boundlist
+$boundlist-background-color: #404551;
+$boundlist-border-color: #222732;
+$boundlist-border-width: 2px;
+
+$boundlist-item-border-width: 0;
+$boundlist-item-over-background-color: #e5872c;
+$boundlist-item-selected-background-color: #e5872c; 
+
+//tips
+$tip-base-color: #5e6986;
+$tip-border-color: #122d5e;
+$tip-body-color: #000;
+
+//menu
+$menu-background-color: #414551;
+$menu-text-color: #fff;
+
+$menu-item-active-background-color: $orange;
+$menu-item-active-border-color: darken($orange, 5);
+
+$menu-separator-border-color: #222233;
+$menu-separator-background-color: #666666;
+
+@import 'compass';
+@import 'ext4/default/all';
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-all-gray.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-all-gray.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-all-gray.scss	(revision 18277)
@@ -0,0 +1,119 @@
+$theme-name: 'gray';
+$base-color: #ccc;
+
+//panel
+$panel-header-background-gradient: color-stops(#F0F0F0, #D7D7D7);
+$panel-border-color: #D0D0D0;
+$panel-header-color: #333;
+
+$panel-frame-background-color: #f1f1f1;
+
+//window
+$window-background-color: #e8e8e8;
+$window-header-color: #333;
+
+//menu
+$menu-item-active-background-color: darken(#f3f3f3, 5);
+$menu-item-active-border-color: #9d9d9d;
+
+//datepicker
+$datepicker-header-background-color: #6f6f6f;
+$datepicker-border-color: #585858;
+$datepicker-th-background-color: #e9e9e9;
+$datepicker-selected-item-background-color: #d8d8d8;
+$datepicker-item-hover-background-color: transparent;
+
+//progress bar
+$progress-border-color: #8e8e8e;
+$progress-background-color: #f1f1f1;
+$progress-bar-background-color: #ababab;
+
+//tips
+$tip-base-color: $base-color;
+
+//grid
+$grid-header-over-border-color: darken($base-color, 3);
+
+//toolbar
+$toolbar-background-gradient: color-stops(#e6e6e6, #efefef);
+$toolbar-separator-color: #aca899;
+$toolbar-text-color: #000;
+
+//btn group
+$btn-group-background-color: #f0f0f0;
+$btn-group-header-background-color: #dfdfdf;
+$btn-group-border-color: #d0d0d0;
+$btn-group-header-color: #666;
+$btn-group-inner-border-color: #ececec;
+
+//form
+$fieldset-header-color: #333;
+
+$boundlist-border-color: #b5b8c8;
+
+//acordion
+$accordion-header-background-color: #e5e5e5;
+
+//tabs
+$tab-base-color: #eaeaea;
+$tab-color-active: #333333;
+
+$tab-background-gradient: color-stops(#dcdcdc, #eaeaea);
+$tab-background-gradient-over: 'tab-over' !default;
+$tab-background-gradient-active: color-stops(#ffffff, #eaeaea);
+$tab-background-gradient-disabled: 'tab-disabled' !default;
+
+//buttons
+$button-default-base-color: #f8f8f8;
+$button-default-base-color-over: #f3f3f3;
+$button-default-base-color-focus: $button-default-base-color-over;
+$button-default-base-color-pressed: #d6d6d6;
+$button-default-base-color-disabled: adjust-color($base-color, $hue: 0deg, $saturation: -55.556%, $lightness: 12.745%) !default; //F7F7F7
+
+$button-default-border-color: #bbbbbb;
+$button-default-border-color-over: #9d9d9d;
+$button-default-border-color-focus: $button-default-border-color-over;
+$button-default-border-color-pressed: $button-default-border-color-over;
+$button-default-border-color-disabled: adjust-color($button-default-base-color-disabled, $hue: 0deg, $saturation: 0%, $lightness: -8.627%) !default;
+
+$button-default-background-gradient: 'matte';
+$button-default-background-gradient-over: 'matte';
+$button-default-background-gradient-focus: 'matte';
+$button-default-background-gradient-pressed: 'matte-reverse';
+$button-default-background-gradient-disabled: 'matte';
+
+$button-default-background-gradient-color-stops: null;
+$button-default-background-gradient-color-stops-over: null;
+$button-default-background-gradient-color-stops-focus: null;
+$button-default-background-gradient-color-stops-pressed: null;
+$button-default-background-gradient-color-stops-disabled: null;
+
+
+$button-toolbar-base-color: $button-default-base-color;
+
+$button-toolbar-border-color: transparent !default;
+$button-toolbar-border-color-over: $button-default-border-color-over;
+$button-toolbar-border-color-focus: $button-default-border-color-focus;
+$button-toolbar-border-color-pressed: $button-default-border-color-pressed;
+$button-toolbar-border-color-disabled: $button-default-border-color-disabled;
+
+$button-toolbar-background-color: transparent !default;
+$button-toolbar-background-color-over: $button-default-base-color-over;
+$button-toolbar-background-color-focus: $button-default-base-color-focus;
+$button-toolbar-background-color-pressed: $button-default-base-color-pressed;
+$button-toolbar-background-color-disabled: transparent;
+
+$button-toolbar-background-gradient: null;
+$button-toolbar-background-gradient-over: 'matte';
+$button-toolbar-background-gradient-focus: 'matte';
+$button-toolbar-background-gradient-pressed: 'matte-reverse';
+$button-toolbar-background-gradient-disabled: null;
+
+$button-toolbar-background-gradient-color-stops: null;
+$button-toolbar-background-gradient-color-stops-over: null;
+$button-toolbar-background-gradient-color-stops-focus: null;
+$button-toolbar-background-gradient-color-stops-pressed: null;
+$button-toolbar-background-gradient-color-stops-disabled: null;
+
+@import 'compass';
+@import 'ext4/default/all';
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-all-scoped.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-all-scoped.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-all-scoped.scss	(revision 18277)
@@ -0,0 +1,5 @@
+$scope-reset-css: true;
+$compile-all: true;
+
+@import 'compass';
+@import 'ext4/default/all';
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-all.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-all.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-all.scss	(revision 18277)
@@ -0,0 +1,2 @@
+@import 'compass';
+@import 'ext4/default/all';
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-ie-scoped.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-ie-scoped.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-ie-scoped.scss	(revision 18277)
@@ -0,0 +1,16 @@
+$prefix: 'x-';
+
+$scope-reset-css: true;
+
+$include-ie: true;
+$include-ff: false;
+$include-chrome: false;
+$include-safari: false;
+$include-opera: false;
+
+$compile-all: false;
+$supports-border-radius: false;
+$supports-gradients: false;
+
+@import 'compass';
+@import 'ext4/default/all';
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-ie.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-ie.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-ie.scss	(revision 18277)
@@ -0,0 +1,14 @@
+$prefix: 'x-';
+
+$include-ie: true;
+$include-ff: false;
+$include-chrome: false;
+$include-safari: false;
+$include-opera: false;
+
+$compile-all: false;
+$supports-border-radius: false;
+$supports-gradients: false;
+
+@import 'compass';
+@import 'ext4/default/all';
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-neptune.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-neptune.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-neptune.scss	(revision 18277)
@@ -0,0 +1,2 @@
+@import 'compass';
+@import 'neptune/default/all';
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-sandbox.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-sandbox.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-sandbox.scss	(revision 18277)
@@ -0,0 +1,3 @@
+$prefix: 'x4-';
+@import 'compass';
+@import 'ext4/default/all';
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-standard-scoped.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-standard-scoped.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-standard-scoped.scss	(revision 18277)
@@ -0,0 +1,16 @@
+$prefix: 'x-';
+
+$scope-reset-css: true;
+
+$include-ff: true;
+$include-chrome: true;
+$include-safari: true;
+$include-opera: true;
+$include-ie: false;
+
+$compile-all: false;
+$supports-border-radius: true;
+$supports-gradients: false;
+
+@import 'compass';
+@import 'ext4/default/all';
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-standard.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-standard.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/sass/ext-standard.scss	(revision 18277)
@@ -0,0 +1,14 @@
+$prefix: 'x-';
+
+$include-ff: true;
+$include-chrome: true;
+$include-safari: true;
+$include-opera: true;
+$include-ie: false;
+
+$compile-all: false;
+$supports-border-radius: true;
+$supports-gradients: false;
+
+@import 'compass';
+@import 'ext4/default/all';
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/compass_init.rb
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/compass_init.rb	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/compass_init.rb	(revision 18277)
@@ -0,0 +1,6 @@
+# include the utils rb file which has extra functionality for the ext theme
+dir = File.dirname(__FILE__)
+require File.join(dir, 'lib', 'utils.rb')
+
+# register ext4 as a compass framework
+Compass::Frameworks.register 'ext4', dir
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/lib/utils.rb
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/lib/utils.rb	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/lib/utils.rb	(revision 18277)
@@ -0,0 +1,93 @@
+module ExtJS4
+  module SassExtensions
+    module Functions
+      module Utils
+        def parsebox(list, n)
+          assert_type n, :Number
+          if !n.int?
+            raise ArgumentError.new("List index #{n} must be an integer")
+          elsif n.to_i < 1
+            raise ArgumentError.new("List index #{n} must be greater than or equal to 1")
+          elsif n.to_i > 4
+            raise ArgumentError.new("A box string can't contain more then 4")
+          end
+
+          new_list = list.clone.to_a
+          size = new_list.size
+                      
+          if n.to_i >= size
+            if size == 1
+              new_list[1] = new_list[0]
+              new_list[2] = new_list[0]
+              new_list[3] = new_list[0]
+            elsif size == 2
+              new_list[2] = new_list[0]
+              new_list[3] = new_list[1]
+            elsif size == 3
+              new_list[3] = new_list[1]
+            end
+          end
+          
+          new_list.to_a[n.to_i - 1]
+        end
+        
+        def parseint(value)
+          Sass::Script::Number.new(value.to_i)
+        end
+        
+        # Returns a background-image property for a specified images for the theme
+        def theme_image(theme, path, without_url = false, relative = false)
+          path = path.value
+          theme = theme.value
+          without_url = (without_url.class == FalseClass) ? without_url : without_url.value
+          
+          relative_path = "../images/"
+          
+          if relative
+            if relative.class == Sass::Script::String
+              relative_path = relative.value
+              relative = true
+            elsif relative.class == FalseClass || relative.class == TrueClass
+              relative = relative
+            else
+              relative = relative.value
+            end
+          else
+            relative = false
+          end
+          
+          if relative
+            image_path = File.join(relative_path, theme, path)
+          else
+            images_path = File.join($ext_path, 'resources', 'themes', 'images', theme)
+            image_path = File.join(images_path, path)
+          end
+          
+          if !without_url
+            url = "url('#{image_path}')"
+          else
+            url = "#{image_path}"
+          end
+          
+          Sass::Script::String.new(url)
+        end
+
+        def theme_image_exists(path)
+          result = false
+
+          where_to_look = path.value.gsub('../../resources', 'resources')
+
+          if where_to_look && FileTest.exists?("#{where_to_look}")
+            result = true
+          end
+
+          return Sass::Script::Bool.new(result)
+        end
+      end
+    end
+  end
+end
+
+module Sass::Script::Functions
+  include ExtJS4::SassExtensions::Functions::Utils
+end
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/_all.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/_all.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/_all.scss	(revision 18277)
@@ -0,0 +1,113 @@
+@import "compass/css3";
+@import "blueprint/typography";
+
+$include-default: true !default;
+$include-default-uis: true !default;
+
+@import 'functions';
+@import 'variables';
+@import 'mixins';
+
+//core
+@import 'core';
+
+//layout
+@import 'layout/layout';
+
+//utils
+@import 'util/tool';
+@import 'util/messagebox';
+@import 'util/splitter';
+@import 'util/resizable';
+@import 'util/dragdrop';
+@import 'util/scroller';
+@import 'util/focus';
+
+//widgets
+@import 'widgets';
+
+@if $scope-reset-css {
+    .#{$prefix}reset {
+        @if $include-default {
+        	@include extjs-boundlist;
+        	@include extjs-button;
+        	@include extjs-btn-group;
+        	@include extjs-datepicker;
+        	@include extjs-colorpicker;
+        	@include extjs-menu;
+        	@include extjs-grid;
+        	@include extjs-form;
+        	    @include extjs-form-field;
+        	    @include extjs-form-fieldset;
+        	    @include extjs-form-file;
+        	    @include extjs-form-checkboxfield;
+        	    @include extjs-form-checkboxgroup;
+        	    @include extjs-form-triggerfield;
+        	    @include extjs-form-htmleditor;
+        	@include extjs-panel;
+        	@include extjs-qtip;
+        	@include extjs-slider;
+        	@include extjs-progress;
+        	@include extjs-toolbar;
+            @include extjs-window;
+            @include extjs-messagebox;
+            @include extjs-tabbar;
+        	@include extjs-tab;
+        	@include extjs-tree;
+        	@include extjs-drawcomponent;
+        	@include extjs-viewport;
+        }
+
+        @include extjs-dragdrop;
+        @include extjs-resizable;
+        @include extjs-splitter;
+        @include extjs-layout;
+        @include extjs-tool;
+        @include extjs-scroller;
+        
+        @include extjs-html;
+    }
+
+    @include extjs-reset-extras;
+}
+@else {
+    @if $include-default {
+    	@include extjs-boundlist;
+    	@include extjs-button;
+    	@include extjs-btn-group;
+    	@include extjs-datepicker;
+    	@include extjs-colorpicker;
+    	@include extjs-menu;
+    	@include extjs-grid;
+    	@include extjs-form;
+    	    @include extjs-form-field;
+    	    @include extjs-form-fieldset;
+    	    @include extjs-form-file;
+    	    @include extjs-form-checkboxfield;
+    	    @include extjs-form-checkboxgroup;
+    	    @include extjs-form-triggerfield;
+    	    @include extjs-form-htmleditor;
+    	@include extjs-panel;
+    	@include extjs-qtip;
+    	@include extjs-slider;
+    	@include extjs-progress;
+    	@include extjs-toolbar;
+        @include extjs-window;
+        @include extjs-messagebox;
+        @include extjs-tabbar;
+    	@include extjs-tab;
+    	@include extjs-tree;
+    	@include extjs-drawcomponent;
+    	@include extjs-viewport;
+    }
+
+    @include extjs-dragdrop;
+    @include extjs-resizable;
+    @include extjs-splitter;
+    @include extjs-layout;
+    @include extjs-tool;
+    @include extjs-scroller;
+    
+    @include extjs-html;
+}
+
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/_core.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/_core.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/_core.scss	(revision 18277)
@@ -0,0 +1,2 @@
+@import 'core/reset';
+@import 'core/core';
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/_functions.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/_functions.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/_functions.scss	(revision 18277)
@@ -0,0 +1,44 @@
+@function min($value1, $value2) {
+    @if $value1 > $value2 {
+        @return $value2;
+    }
+    @else if $value2 > $value1 {
+        @return $value1;
+    }
+    @return $value1;
+}
+
+@function max($value1, $value2) {
+    @if $value1 > $value2 {
+        @return $value1;
+    }
+    @else if $value2 > $value1 {
+        @return $value2;
+    }
+    @return $value1;
+}
+
+@function top($box) {
+    @return parsebox($box, 1);
+}
+@function right($box) {
+    @return parsebox($box, 2);
+}
+@function bottom($box) {
+    @return parsebox($box, 3);
+}
+@function left($box) {
+    @return parsebox($box, 4);
+}
+@function vertical($box) {
+    @return top($box) + bottom($box);
+}
+@function horizontal($box) {
+    @return left($box) + right($box);
+}
+@function boxmax($box) {
+    @return max(max(top($box), right($box)), max(bottom($box), left($box)));
+}
+@function boxmin($box) {
+    @return min(min(top($box), right($box)), min(bottom($box), left($box)));
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/_mixins.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/_mixins.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/_mixins.scss	(revision 18277)
@@ -0,0 +1,25 @@
+@import 'mixins/background-gradient';
+@import 'mixins/theme-background-image';
+@import 'mixins/inner-border';
+@import 'mixins/frame';
+@import 'mixins/reset-extras';
+
+@mixin no-select {
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+    
+    cursor:default;
+}
+
+@mixin important-no-border-radius {
+    //we need to hard code this so we can declare !important
+    -moz-border-radius: 0 !important;
+    -webkit-border-radius: 0 !important;
+    -o-border-radius: 0 !important;
+    -ms-border-radius: 0 !important;
+    -khtml-border-radius: 0 !important;
+    border-radius: 0 !important;
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/_variables.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/_variables.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/_variables.scss	(revision 18277)
@@ -0,0 +1,41 @@
+@import 'variables/core';
+
+$mix-color: desaturate(lighten($base-color, 37), 5) !default;
+
+@import 'variables/focus';
+@import 'variables/panel';
+@import 'variables/grid';
+@import 'variables/button';
+@import 'variables/pickers';
+@import 'variables/toolbar';
+@import 'variables/form';
+@import 'variables/menu';
+@import 'variables/window';
+@import 'variables/tabs';
+@import 'variables/qtip';
+@import 'variables/progress-bar';
+@import 'variables/btn-group';
+@import 'variables/boundlist';
+@import 'variables/tree';
+@import 'variables/layout';
+@import 'variables/loadmask';
+@import 'variables/htmleditor';
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/_widgets.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/_widgets.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/_widgets.scss	(revision 18277)
@@ -0,0 +1,22 @@
+@import 'widgets/boundlist';
+@import 'widgets/button';
+@import 'widgets/btn-group';
+@import 'widgets/datepicker';
+@import 'widgets/colorpicker';
+@import 'widgets/menu';
+@import 'widgets/panel';
+@import 'widgets/toolbar';
+@import 'widgets/form';
+@import 'widgets/qtip';
+@import 'widgets/window';
+@import 'widgets/tabbar';
+@import 'widgets/tab';
+@import 'widgets/slider';
+@import 'widgets/grid';
+@import 'widgets/tree';
+@import 'widgets/loadmask';
+@import 'widgets/progress-bar';
+@import 'widgets/drawcomponent';
+@import 'widgets/viewport';
+
+@import 'widgets/html';
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/core/_core.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/core/_core.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/core/_core.scss	(revision 18277)
@@ -0,0 +1,256 @@
+.#{$prefix}body {
+    color: $color;
+    font-size: $font-size;
+    font-family: $font-family;
+}
+
+.#{$prefix}rtl {
+    direction: rtl;
+}
+
+.#{$prefix}ltr {
+    direction: ltr;
+}
+
+.#{$prefix}clear {
+    overflow: hidden;
+    clear: both;
+    font-size: 0;
+    line-height: 0;
+    display: table;
+}
+
+.#{$prefix}strict .#{$prefix}ie7 .#{$prefix}clear {
+    // In IE7 strict the clear element has to have both a height and width of 0, otherwise the height of its parent element gets
+    // increased by 1px.  We cannot simply add the zero height/width for all browsers, because in IE quirks the height
+    // of the clear element's parent element gets increased by 1px if the clear element has either height:0 or width:0.
+    height: 0;
+    width: 0;
+}
+
+.#{$prefix}layer {
+    position: absolute !important;
+    overflow: hidden;
+    zoom: 1;
+}
+
+.#{$prefix}shim {
+    position: absolute;
+    left: 0;
+    top: 0;
+    overflow: hidden;
+    @include opacity(0);
+}
+
+.#{$prefix}hide-display {
+    display: none !important;
+}
+
+.#{$prefix}hide-visibility {
+    visibility:hidden !important;
+}
+
+.#{$prefix}item-disabled .#{$prefix}form-item-label,
+.#{$prefix}item-disabled .#{$prefix}form-field,
+.#{$prefix}item-disabled .#{$prefix}form-cb-label,
+.#{$prefix}item-disabled .#{$prefix}form-trigger {
+    @include opacity(0.3);
+}
+
+.#{$prefix}ie6 .#{$prefix}item-disabled {
+    filter:none;
+}
+
+.#{$prefix}hidden,
+.#{$prefix}hide-offsets {
+    // to deal with inline elements that can't be position:absolute
+    display: block !important;
+    // ensure the browser disallows tabbing into this element
+    visibility: hidden !important;
+    position: absolute!important;
+    left: -10000px!important;
+    top: -10000px!important;
+}
+
+.#{$prefix}hide-nosize {
+    height: 0!important;
+    width: 0!important;
+}
+
+.#{$prefix}masked-relative {
+    position: relative;
+}
+
+@if $include-ie {
+    .#{$prefix}ie6 .#{$prefix}masked select,
+    .#{$prefix}ie6.#{$prefix}body-masked select {
+        visibility: hidden !important;
+    }
+}
+
+// Element shadows for browsers that support CSS3 box-shadow
+.#{$prefix}css-shadow {
+    position: absolute;
+    @include border-radius($window-border-radius);
+}
+
+// Element shadows for IE 8 and below
+.#{$prefix}ie-shadow {
+    background-color:#777;
+    display: none;
+    position: absolute;
+    overflow: hidden;
+    zoom: 1;
+}
+
+//box wrap - Ext.get("foo").boxWrap();
+.#{$prefix}box-tl {
+    background: transparent no-repeat 0 0;
+    zoom:1;
+}
+
+.#{$prefix}box-tc {
+    height: 8px;
+    background: transparent repeat-x 0 0;
+    overflow: hidden;
+}
+
+.#{$prefix}box-tr {
+    background: transparent no-repeat right -8px;
+}
+
+.#{$prefix}box-ml {
+    background: transparent repeat-y 0;
+    padding-left: 4px;
+    overflow: hidden;
+    zoom:1;
+}
+
+.#{$prefix}box-mc {
+    background: repeat-x 0 -16px;
+    padding: 4px 10px;
+}
+
+.#{$prefix}box-mc h3 {
+    margin: 0 0 4px 0;
+    zoom:1;
+}
+
+.#{$prefix}box-mr {
+    background: transparent repeat-y right;
+    padding-right: 4px;
+    overflow: hidden;
+}
+
+.#{$prefix}box-bl {
+    background: transparent no-repeat 0 -16px;
+    zoom:1;
+}
+
+.#{$prefix}box-bc {
+    background: transparent repeat-x 0 -8px;
+    height: 8px;
+    overflow: hidden;
+}
+
+.#{$prefix}box-br {
+    background: transparent no-repeat right -24px;
+}
+
+.#{$prefix}box-tl, .#{$prefix}box-bl {
+    padding-left: 8px;
+    overflow: hidden;
+}
+
+.#{$prefix}box-tr, .#{$prefix}box-br {
+    padding-right: 8px;
+    overflow: hidden;
+}
+
+.#{$prefix}box-tl {
+    background-image: theme-background-image($theme-name, 'box/corners.gif');
+}
+
+.#{$prefix}box-tc {
+    background-image: theme-background-image($theme-name, 'box/tb.gif');
+}
+
+.#{$prefix}box-tr {
+    background-image: theme-background-image($theme-name, 'box/corners.gif');
+}
+
+.#{$prefix}box-ml {
+    background-image: theme-background-image($theme-name, 'box/l.gif');
+}
+
+.#{$prefix}box-mc {
+    background-color: #eee;
+    background-image: theme-background-image($theme-name, 'box/tb.gif');
+    font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;
+    color: #393939;
+    font-size: 15px;
+}
+
+.#{$prefix}box-mc h3 {
+    font-size: 18px;
+    font-weight: bold;
+}
+
+.#{$prefix}box-mr {
+    background-image: theme-background-image($theme-name, 'box/r.gif');
+}
+
+.#{$prefix}box-bl {
+    background-image: theme-background-image($theme-name, 'box/corners.gif');
+}
+
+.#{$prefix}box-bc {
+    background-image: theme-background-image($theme-name, 'box/tb.gif');
+}
+
+.#{$prefix}box-br {
+    background-image: theme-background-image($theme-name, 'box/corners.gif');
+}
+
+.#{$prefix}box-blue .#{$prefix}box-bl, .#{$prefix}box-blue .#{$prefix}box-br, .#{$prefix}box-blue .#{$prefix}box-tl, .#{$prefix}box-blue .#{$prefix}box-tr {
+    background-image: theme-background-image($theme-name, 'box/corners-blue.gif');
+}
+
+.#{$prefix}box-blue .#{$prefix}box-bc, .#{$prefix}box-blue .#{$prefix}box-mc, .#{$prefix}box-blue .#{$prefix}box-tc {
+    background-image: theme-background-image($theme-name, 'box/tb-blue.gif');
+}
+
+.#{$prefix}box-blue .#{$prefix}box-mc {
+    background-color: #c3daf9;
+}
+
+.#{$prefix}box-blue .#{$prefix}box-mc h3 {
+    color: #17385b;
+}
+
+.#{$prefix}box-blue .#{$prefix}box-ml {
+    background-image: theme-background-image($theme-name, 'box/l-blue.gif');
+}
+
+.#{$prefix}box-blue .#{$prefix}box-mr {
+    background-image: theme-background-image($theme-name, 'box/r-blue.gif');
+}
+
+.#{$prefix}container {
+    // zoom:1 prevents margins of child elements from collapsing in old IE, this is needed to prevent
+    // the top margin of the first child element from collapsing.
+    zoom: 1;
+    // In modern browsers, we can use a pseudo :before element to prevent the top margin of the first child element from collapsing
+    &:before {
+        content: "";
+        clear: both;
+        display: table;
+    }
+}
+// when the container class is used on a table, tbody, or tr (form layout),
+// inserting content using the :before selector can cause problems
+table.#{$prefix}container:before,
+tbody.#{$prefix}container:before,
+tr.#{$prefix}container:before {
+    display: none;
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/core/_reset.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/core/_reset.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/core/_reset.scss	(revision 18277)
@@ -0,0 +1,146 @@
+@if $scope-reset-css {
+    .#{$prefix}border-box .#{$prefix}reset, 
+    .#{$prefix}border-box .#{$prefix}reset * {
+        box-sizing:border-box;
+        -moz-box-sizing:border-box;
+        -ms-box-sizing:border-box;
+        -webkit-box-sizing:border-box;
+    }
+
+    .#{$prefix}reset {
+        html, body, div, dl, dt, dd, ul, ol, li, h1, h2, h3,
+        h4, h5, h6, pre, code, form, fieldset, legend,
+        input, textarea, p, blockquote, th, td {
+            margin:0;
+            padding:0;
+        }
+
+        table {
+            border-collapse:collapse;
+            border-spacing:0;
+        }
+
+        fieldset, img {
+            border:0;
+        }
+
+        address, caption, cite, code,
+        dfn, em, strong, th, var {
+            font-style:normal;
+            font-weight:normal;
+        }
+
+        li {
+            list-style:none;
+        }
+
+        caption, th {
+            text-align:left;
+        }
+
+        h1, h2, h3, h4, h5, h6 {
+            font-size: 100%;
+        }
+
+        q:before,
+        q:after {
+            content:"";
+        }
+
+        abbr, acronym {
+            border:0;
+            font-variant:normal;
+        }
+
+        sup {
+            vertical-align:text-top;
+        }
+
+        sub {
+            vertical-align:text-bottom;
+        }
+
+        input, textarea, select {
+            font-family:inherit;
+            font-size:inherit;
+            font-weight:inherit;
+        }
+
+        *:focus {
+            outline:none;
+        }
+    }
+}
+@else {
+    html, body, div, dl, dt, dd, ul, ol, li, h1, h2, h3,
+    h4, h5, h6, pre, code, form, fieldset, legend,
+    input, textarea, p, blockquote, th, td {
+        margin:0;
+        padding:0;
+    }
+
+    table {
+        border-collapse:collapse;
+        border-spacing:0;
+    }
+
+    fieldset, img {
+        border:0;
+    }
+
+    address, caption, cite, code,
+    dfn, em, strong, th, var {
+        font-style:normal;
+        font-weight:normal;
+    }
+
+    li {
+        list-style:none;
+    }
+
+    caption, th {
+        text-align:left;
+    }
+
+    h1, h2, h3, h4, h5, h6 {
+        font-size: 100%;
+    }
+
+    q:before,
+    q:after {
+        content:"";
+    }
+
+    abbr, acronym {
+        border:0;
+        font-variant:normal;
+    }
+
+    sup {
+        vertical-align:text-top;
+    }
+
+    sub {
+        vertical-align:text-bottom;
+    }
+
+    input, textarea, select {
+        font-family:inherit;
+        font-size:inherit;
+        font-weight:inherit;
+    }
+
+    *:focus {
+        outline:none;
+    }
+
+    .#{$prefix}border-box, 
+    .#{$prefix}border-box * {
+        box-sizing:border-box;
+        -moz-box-sizing:border-box;
+        -ms-box-sizing:border-box;
+        -webkit-box-sizing:border-box;
+    }
+}
+
+
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/layout/_layout.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/layout/_layout.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/layout/_layout.scss	(revision 18277)
@@ -0,0 +1,323 @@
+@mixin extjs-layout {
+     /*
+      * Dock Layouts
+      * @todo move this somewhere else?
+      */
+    .#{$prefix}docked {
+        position: absolute !important;
+        z-index: 1;
+    }
+
+    .#{$prefix}docked-top {
+        border-bottom-width: 0 !important;
+    }
+
+    .#{$prefix}docked-bottom {
+        border-top-width: 0 !important;
+    }
+
+    .#{$prefix}docked-left {
+        border-right-width: 0 !important;
+    }
+
+    .#{$prefix}docked-right {
+        border-left-width: 0 !important;
+    }
+
+    .#{$prefix}docked-noborder-top {
+        border-top-width: 0 !important;
+    }
+
+    .#{$prefix}docked-noborder-right {
+        border-right-width: 0 !important;
+    }
+
+    .#{$prefix}docked-noborder-bottom {
+        border-bottom-width: 0 !important;
+    }
+
+    .#{$prefix}docked-noborder-left {
+        border-left-width: 0 !important;
+    }
+
+    .#{$prefix}box-inner {
+        overflow:hidden;
+
+        zoom:1;
+
+        position:relative;
+        left:0;
+        top:0;
+    }
+
+    .#{$prefix}box-item {
+        position:absolute !important;
+        left:0;
+        top:0;
+    }
+
+    .#{$prefix}rtl .#{$prefix}box-item {
+        right: 0;
+        left: auto;
+    }
+
+    .#{$prefix}box-layout-ct,
+    .#{$prefix}border-layout-ct {
+        overflow: hidden;
+        zoom: 1;
+    }
+
+    .#{$prefix}border-layout-ct {
+        background-color: $border-layout-ct-background;
+        position: relative;
+    }
+
+    .#{$prefix}overflow-hidden {
+        overflow:hidden !important;
+    }
+
+    .#{$prefix}inline-children > * {
+        display: inline-block !important;
+    }
+
+    .#{$prefix}abs-layout-ct {
+        position: relative;
+    }
+
+    .#{$prefix}abs-layout-item {
+        position: absolute !important;
+    }
+
+    .#{$prefix}fit-item {
+        position: relative;
+    }
+
+    .#{$prefix}border-region-slide-in {
+        z-index: 5;
+    }
+
+    .#{$prefix}region-collapsed-placeholder {
+        z-index: 4;
+    }
+
+    .#{$prefix}accordion-hd .#{$prefix}panel-header-text {
+        color: $accordion-header-color;
+        font-weight: normal;
+    }
+
+    .#{$prefix}accordion-hd {
+        .#{$prefix}tool-collapse-top,
+        .#{$prefix}tool-collapse-right,
+        .#{$prefix}tool-collapse-bottom,
+        .#{$prefix}tool-collapse-left {
+            background-position: 0 -255px;
+        }
+
+        .#{$prefix}tool-expand-top,
+        .#{$prefix}tool-expand-right,
+        .#{$prefix}tool-expand-bottom,
+        .#{$prefix}tool-expand-left {
+            background-position: 0 -240px;
+        }
+
+        .#{$prefix}tool-over {
+            .#{$prefix}tool-collapse-top,
+            .#{$prefix}tool-collapse-right,
+            .#{$prefix}tool-collapse-bottom,
+            .#{$prefix}tool-collapse-left {
+                background-position: -15px -255px;
+            }
+        }
+
+        .#{$prefix}tool-over {
+            .#{$prefix}tool-expand-top,
+            .#{$prefix}tool-expand-right,
+            .#{$prefix}tool-expand-bottom,
+            .#{$prefix}tool-expand-left {
+                background-position: -15px -240px;
+            }
+        }
+
+        background: $accordion-header-background-color !important;
+        @include single-box-shadow($accordion-header-background-color, 0, 0, 0, 0, true);
+    }
+
+    .#{$prefix}accordion-hd {
+        border-width: 1px 0 1px 0 !important;
+        padding: 4px 5px 5px 5px;
+        border-top-color: $panel-header-inner-border-color !important;
+    }
+
+    .#{$prefix}accordion-body {
+        border-width: 0 !important;
+    }
+
+    .#{$prefix}accordion-hd-sibling-expanded {
+        border-top-color: $panel-border-color !important;
+        @include single-box-shadow($panel-header-inner-border-color, 0, 1px, 0, 0, true);
+    }
+
+    .#{$prefix}accordion-hd-last-collapsed {
+        border-bottom-color: $accordion-header-background-color !important;
+    }
+
+    .#{$prefix}frame-tl,
+    .#{$prefix}frame-tr,
+    .#{$prefix}frame-tc,
+    .#{$prefix}frame-bl,
+    .#{$prefix}frame-br,
+    .#{$prefix}frame-bc {
+        overflow: hidden;
+        background-repeat: no-repeat;
+    }
+
+    .#{$prefix}frame-tc,
+    .#{$prefix}frame-bc {
+        background-repeat: repeat-x;
+    }
+
+    .#{$prefix}frame-mc {
+        position: relative;
+        background-repeat: repeat-x;
+        overflow: hidden;
+    }
+
+    // Classes for horizontal Box layout scroller.
+    // Uses the *TAB* scroller image because it's all we have.
+    // This will not work well in other cases
+    .#{$prefix}box-scroller-left {
+        float: left;
+        height: 100%;
+
+        z-index: 5;
+
+        .#{$prefix}toolbar-scroll-left,
+        .#{$prefix}tabbar-scroll-left {
+            width: 18px;
+            position: relative;
+            cursor: pointer;
+            height: $tab-height;
+            background: transparent no-repeat -18px 0;
+            background-image: theme-background-image($theme-name, 'tab-bar/scroll-left.gif');
+        }
+        .#{$prefix}toolbar-scroll-left-hover {
+            background-position: 0 0;
+        }
+        .#{$prefix}toolbar-scroll-left-disabled,
+        .#{$prefix}tabbar-scroll-left-disabled {
+            background-position: -18px 0;
+            @include opacity(.5);
+
+            cursor:default;
+        }
+
+        .#{$prefix}toolbar-scroll-left {
+            background-image: theme-background-image($theme-name, 'toolbar/scroll-left.gif');
+            background-position: -14px 0;
+        }
+        .#{$prefix}toolbar-scroll-left-hover {
+            background-position: 0 0;
+        }
+        .#{$prefix}toolbar-scroll-left-disabled {
+            background-position: -14px 0;
+        }
+
+        .#{$prefix}toolbar-scroll-left {
+            width: 14px;
+            height: 22px;
+
+            border-bottom: 1px solid #8db2e3;
+        }
+    }
+
+    .#{$prefix}horizontal-box-overflow-body {
+        float: left;
+    }
+    .#{$prefix}box-scroller-right {
+        float: right;
+        height: 100%;
+
+        z-index: 5;
+
+        .#{$prefix}toolbar-scroll-right,
+        .#{$prefix}tabbar-scroll-right {
+            width: 18px;
+            position: relative;
+            cursor: pointer;
+            height: $tab-height;
+            background: transparent no-repeat 0 0;
+            background-image: theme-background-image($theme-name, 'tab-bar/scroll-right.gif');
+        }
+        .#{$prefix}toolbar-scroll-right-hover {
+            background-position: -18px 0;
+        }
+        .#{$prefix}toolbar-scroll-right-disabled,
+        .#{$prefix}tabbar-scroll-right-disabled {
+            background-position: 0 0;
+            @include opacity(.5);
+
+            cursor:default;
+        }
+
+        .#{$prefix}toolbar-scroll-right {
+            background-image: theme-background-image($theme-name, 'toolbar/scroll-right.gif');
+        }
+        .#{$prefix}toolbar-scroll-right-hover {
+            background-position: -14px 0;
+        }
+        .#{$prefix}toolbar-scroll-right-disabled {
+            background-position: 0 0;
+        }
+
+        .#{$prefix}toolbar-scroll-right {
+            width: 14px;
+            height: 22px;
+
+            border-bottom: 1px solid #8db2e3;
+        }
+    }
+
+// Classes for vertical Box layout scroller
+    .#{$prefix}box-scroller-top {
+        .#{$prefix}box-scroller {
+            line-height: 0;
+            font-size: 0;
+        }
+        .#{$prefix}menu-scroll-top {
+            background: transparent no-repeat center center;
+            background-image: theme-background-image($theme-name, 'layout/mini-top.gif');
+            height: 8px;
+            cursor: pointer;
+        }
+    }
+    .#{$prefix}box-scroller-bottom {
+        .#{$prefix}box-scroller {
+            line-height: 0;
+            font-size: 0;
+        }
+        .#{$prefix}menu-scroll-bottom {
+            background: transparent no-repeat center center;
+            background-image: theme-background-image($theme-name, 'layout/mini-bottom.gif');
+            height: 8px;
+            cursor: pointer;
+        }
+    }
+
+    .#{$prefix}box-menu-right {
+        float: right;
+        padding-right: $toolbar-horizontal-spacing;
+    }
+
+    .#{$prefix}column {
+        float: left;
+    }
+    @if $include-ie {
+        .#{$prefix}ie6 .#{$prefix}column {
+            display: inline; /*prevent IE6 double-margin bug*/
+        }
+
+        .#{$prefix}quirks .#{$prefix}ie .#{$prefix}form-layout-table, .#{$prefix}quirks .#{$prefix}ie .#{$prefix}form-layout-table tbody tr.#{$prefix}form-item {
+            position: relative;
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/mixins/_background-gradient.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/mixins/_background-gradient.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/mixins/_background-gradient.scss	(revision 18277)
@@ -0,0 +1,126 @@
+/**
+ * Creates a background gradient.
+ *
+ * @param {Color} $bg-color The background color of the gradient
+ * @param {String/List} [$type] The type of gradient to be used. Can either
+ * be a String which is a predefined gradient, or it can can be a list of
+ * color_stops. If none is set, it will still set the `background-color`
+ * to the $background-color.
+ * @param {String} [$direction=top] The direction of the gradient. Can either be
+ * `top` or `left`.
+ * @member Global_CSS
+ */
+@mixin background-gradient($bg-color, $type: $base-gradient, $direction: top) {
+    background-image: none;
+    background-color: $bg-color;
+
+    @if $base-gradient != null and $bg-color != transparent {
+        //color_stops
+        @if type-of($type) == "list" {
+            @include background-image(linear-gradient($direction, $type));
+        }
+
+        //default gradients
+        @else if $type == bevel {
+            @include background-image(linear-gradient($direction, color_stops(
+                lighten($bg-color, 15%),
+                lighten($bg-color, 8%) 30%,
+                $bg-color 65%,
+                darken($bg-color, 6%)
+            )));
+        } @else if $type == glossy {
+            @include background-image(linear-gradient($direction, color_stops(lighten($bg-color, 15%), lighten($bg-color, 5%) 50%, $bg-color 51%, darken($bg-color, 5%))));
+        } @else if $type == recessed {
+            @include background-image(linear-gradient($direction, color_stops(darken($bg-color, 10%), darken($bg-color, 5%) 10%, $bg-color 65%, lighten($bg-color, .5%))));
+        } @else if $type == matte {
+            @include background-image(linear-gradient($direction, color_stops(lighten($bg-color, 3%), darken($bg-color, 4%))));
+        } @else if $type == matte-reverse {
+            @include background-image(linear-gradient($direction, color_stops(darken($bg-color, 6%), lighten($bg-color, 4%))));
+        } @else if $type == glossy-toolbar {
+            @include background-image(linear-gradient($direction, color_stops(#F0F5FA, #DAE6F4 2%, #CEDDEF)));
+        }
+
+        //ext3.3 gradients
+        @else if $type == panel-header {
+            @include background-image(linear-gradient($direction, color_stops(
+                adjust-color($bg-color, $hue: -0.857deg, $saturation: -1.63%, $lightness: 3.529%),
+                adjust-color($bg-color, $hue: 0.158deg, $saturation: -1.21%, $lightness: 0.392%) 45%,
+                adjust-color($bg-color, $hue: 1.154deg, $saturation: 0.607%, $lightness: -7.647%) 46%,
+                adjust-color($bg-color, $hue: 1.154deg, $saturation: 0.607%, $lightness: -7.647%) 50%,
+                adjust-color($bg-color, $hue: 1.444deg, $saturation: -1.136%, $lightness: -4.706%) 51%,
+                $bg-color
+            )));
+        } @else if $type == tabbar {
+            @include background-image(linear-gradient($direction, color_stops(
+                adjust-color($bg-color, $hue: 0.0deg, $saturation: 1.604%, $lightness: 4.706%),
+                $bg-color
+            )));
+        } @else if $type == tab {
+            @include background-image(linear-gradient($direction, color_stops(
+                adjust-color($bg-color, $hue: 1.382deg, $saturation: -18.571%, $lightness: -4.902%),
+                adjust-color($bg-color, $hue: 0.43deg, $saturation: -10.311%, $lightness: -2.157%) 25%,
+                $bg-color 45%
+            )));
+        } @else if $type == tab-active {
+            @include background-image(linear-gradient($direction, color_stops(
+                adjust-color($bg-color, $hue: -212.903deg, $saturation: -88.571%, $lightness: 6.863%),
+                adjust-color($bg-color, $hue: 0.43deg, $saturation: -6.753%, $lightness: 4.706%) 25%,
+                $bg-color 45%
+            )));
+        } @else if $type == tab-over {
+            @include background-image(linear-gradient($direction, color_stops(
+                adjust-color($bg-color, $hue: 4.462deg, $saturation: -9.524%, $lightness: -3.725%),
+                adjust-color($bg-color, $hue: 2.272deg, $saturation: 0.0%, $lightness: -1.569%) 25%,
+                $bg-color 45%
+            )));
+        } @else if $type == tab-disabled {
+            @include background-image(linear-gradient($direction, color_stops(
+                $bg-color,
+                adjust-color($bg-color, $hue: -0.267deg, $saturation: 18.571%, $lightness: 2.941%)
+            )));
+        } @else if $type == grid-header {
+            @include background-image(linear-gradient($direction, color_stops(
+                adjust-color($bg-color, $hue: 0deg, $saturation: 0%, $lightness: 20.392%),
+                adjust-color($bg-color, $hue: 220.0deg, $saturation: 5.66%, $lightness: 12.353%)
+            )));
+        } @else if $type == grid-header-over {
+            @include background-image(linear-gradient($direction, color_stops(
+                adjust-color($bg-color, $hue: 0.175deg, $saturation: 0.967%, $lightness: 14.118%),
+                adjust-color($bg-color, $hue: 0.175deg, $saturation: 0.967%, $lightness: 14.118%) 39%,
+                adjust-color($bg-color, $hue: 0.372deg, $saturation: 0.101%, $lightness: 10.196%) 40%,
+                adjust-color($bg-color, $hue: 0.372deg, $saturation: 0.101%, $lightness: 10.196%)
+            )));
+        } @else if $type == grid-row-over {
+            @include background-image(linear-gradient($direction, color_stops(
+                adjust-color($bg-color, $hue: 0.175deg, $saturation: 0.967%, $lightness: 14.118%),
+                $bg-color
+            )));
+        } @else if $type == grid-cell-special {
+            @include background-image(linear-gradient(left, color_stops(
+                $bg-color,
+                darken($bg-color, 5)
+            )));
+        } @else if $type == glossy-button or $type == glossy-button-disabled {
+            @include background-image(linear-gradient($direction, color_stops(
+                $bg-color,
+                adjust-color($bg-color, $hue: 0deg, $saturation: 0%, $lightness: -2.353%) 48%,
+                adjust-color($bg-color, $hue: 0deg, $saturation: 0%, $lightness: -11.373%) 52%,
+                adjust-color($bg-color, $hue: 0deg, $saturation: 0%, $lightness: -9.412%)
+            )));
+        } @else if $type == glossy-button-over {
+            @include background-image(linear-gradient($direction, color_stops(
+                $bg-color,
+                adjust-color($bg-color, $hue: 1.754deg, $saturation: 0.0%, $lightness: -2.157%) 48%,
+                adjust-color($bg-color, $hue: 5.833deg, $saturation: -35.135%, $lightness: -9.216%) 52%,
+                adjust-color($bg-color, $hue: 5.833deg, $saturation: -27.273%, $lightness: -7.647%)
+            )));
+        } @else if $type == glossy-button-pressed {
+            @include background-image(linear-gradient($direction, color_stops(
+                $bg-color,
+                adjust-color($bg-color, $hue: -1.839deg, $saturation: -2.18%, $lightness: 2.157%) 48%,
+                adjust-color($bg-color, $hue: -2.032deg, $saturation: 37.871%, $lightness: -4.706%) 52%,
+                adjust-color($bg-color, $hue: -1.641deg, $saturation: 36.301%, $lightness: -2.549%)
+            )));
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/mixins/_color-by-background.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/mixins/_color-by-background.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/mixins/_color-by-background.scss	(revision 18277)
@@ -0,0 +1,29 @@
+/**
+ * Creates color from background color.
+ *
+ * @param {Color} $bg-color The background color.
+ * @param {Percentage} [$contrast=70%]
+ * @param {Color} [$default-color=null]
+ * @param {Color} [$bevel-text=true]
+ * @member Global_CSS
+ */
+@mixin color-by-background($bg-color, $contrast: 70%, $default-color: null, $bevel-text: true) {
+    @if ($default-color != null) {
+        color: $default-color;
+    } @else {
+        @if (lightness($bg-color) > 40) {
+            color: darken($bg-color, $contrast);
+        }
+        @else {
+            color: lighten($bg-color, $contrast)
+        }
+    }
+
+    @if ($bevel-text != false) {
+        @if (lightness($bg-color) < 40) {
+            @include text-shadow(rgba(0,0,0,.5) 0 -1px 0);
+        } @else {
+            @include text-shadow(rgba(255,255,255,.25) 0 1px 0);
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/mixins/_frame.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/mixins/_frame.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/mixins/_frame.scss	(revision 18277)
@@ -0,0 +1,217 @@
+@function pad($radius) {
+    $radius: boxmax($radius);
+    $radius: parseint($radius);
+    @if $radius >= 10 {
+        @return $radius;
+    }
+    @else {
+        @return "0" + $radius;
+    }
+}
+
+@mixin x-frame(
+    $cls,
+    $ui: null,
+    $border-radius: 0px,
+    $border-width: 0px,
+    $padding: null,
+    $background-color: null,
+    $background-gradient: null,
+    $table: false,
+    $background-direction: top
+) {
+    $cls-ui: $cls;
+    @if $ui != null {
+        $cls-ui: $cls + '-' + $ui;
+    }
+
+    $vertical: false;
+    @if $background-direction == left or $background-direction == right {
+        $vertical: true;
+    }
+
+    $frame-top: max(top($border-radius), right($border-radius));
+    $frame-right: max(right($border-radius), bottom($border-radius));
+    $frame-bottom: max(bottom($border-radius), left($border-radius));
+    $frame-left: max(left($border-radius), top($border-radius));
+
+    $padding-top: 0;
+    $padding-right: 0;
+    $padding-bottom: 0;
+    $padding-left: 0;
+
+    @if $padding == null {
+        $padding-top: $frame-top - top($border-width);
+        $padding-right: $frame-right - right($border-width);
+        $padding-bottom: $frame-bottom - bottom($border-width);
+        $padding-left: $frame-left - left($border-width);
+    }
+    @else {
+        $padding-top: top($padding);
+        $padding-right: right($padding);
+        $padding-bottom: bottom($padding);
+        $padding-left: left($padding);
+    }
+
+    @if $padding-top < $frame-top {
+        $padding-top: $frame-top - top($border-width);
+    }
+    @if $padding-right < $frame-right {
+        $padding-right: $frame-right - right($border-width);
+    }
+    @if $padding-bottom < $frame-bottom {
+        $padding-bottom: $frame-bottom - bottom($border-width);
+    }
+    @if $padding-left < $frame-left {
+        $padding-left: $frame-left - left($border-width);
+    }
+
+    .#{$prefix}#{$cls-ui} {
+        @if $supports-border-radius {
+            @if length($border-radius) == 2 {
+                @include border-top-left-radius(nth($border-radius, 1));
+                @include border-top-right-radius(nth($border-radius, 2));
+            } @else if length($border-radius) == 3 {
+                @include border-top-left-radius(nth($border-radius, 1));
+                @include border-top-right-radius(nth($border-radius, 2));
+                @include border-bottom-right-radius(nth($border-radius, 3));
+            } @else if length($border-radius) == 4 {
+                @include border-top-left-radius(nth($border-radius, 1));
+                @include border-top-right-radius(nth($border-radius, 2));
+                @include border-bottom-right-radius(nth($border-radius, 3));
+                @include border-bottom-left-radius(nth($border-radius, 4));
+            } @else {
+                @include border-radius($border-radius);
+            }
+        }
+        padding: $padding-top $padding-right $padding-bottom $padding-left;
+        border-width: $border-width;
+        border-style: solid;
+        @if $background-color != null {
+            @if $supports-gradients and $background-gradient != null {
+                @include background-gradient($background-color, $background-gradient, $background-direction);
+            }
+            @else {
+                background-color: $background-color;
+            }
+        }
+    }
+
+    @if not $supports-gradients or $compile-all {
+        .#{$prefix}nlg {
+            .#{$prefix}#{$cls-ui}-mc {
+                @if $background-gradient != null {
+                    background-image: theme-background-image($theme-name, '#{$cls}/#{$cls-ui}-bg.gif', false, $relative-image-path-for-uis);
+                }
+                @if $background-color != null {
+                    background-color: $background-color;
+                }
+            }
+        }
+    }
+
+    @if not $supports-border-radius or $compile-all {
+        .#{$prefix}nbr {
+            .#{$prefix}#{$cls-ui} {
+                padding: 0 !important;
+                border-width: 0 !important;
+                @include border-radius(0px);
+                @if $background-color != null {
+                    background-color: transparent;
+                }
+                @else {
+                    background: #fff;
+                }
+
+                $type: '100';
+                @if $table == true {
+                    $type: '110';
+                }
+                $direction: '100';
+                @if $vertical == true {
+                    $direction: '110';
+                }
+
+                $left: $type + pad(top($border-radius)) + pad(right($border-radius)) + 'px';
+                $top: $direction + pad(bottom($border-radius)) + pad(left($border-radius)) + 'px';
+                background-position: unquote($left) unquote($top);
+            }
+
+            .#{$prefix}#{$cls-ui}-tl,
+            .#{$prefix}#{$cls-ui}-bl,
+            .#{$prefix}#{$cls-ui}-tr,
+            .#{$prefix}#{$cls-ui}-br,
+            .#{$prefix}#{$cls-ui}-tc,
+            .#{$prefix}#{$cls-ui}-bc,
+            .#{$prefix}#{$cls-ui}-ml,
+            .#{$prefix}#{$cls-ui}-mr {
+                zoom:1;
+
+                @if $background-color != transparent {
+                    background-image: theme-background-image($theme-name, '#{$cls}/#{$cls-ui}-corners.gif', false, $relative-image-path-for-uis);
+                }
+            }
+
+            @if $vertical == true {
+                .#{$prefix}#{$cls-ui}-tc,
+                .#{$prefix}#{$cls-ui}-bc {
+                    zoom:1;
+
+                    @if $background-color != transparent {
+                        background-image: theme-background-image($theme-name, '#{$cls}/#{$cls-ui}-sides.gif', false, $relative-image-path-for-uis);
+                        background-position: 0 0;
+                        background-repeat: repeat-x;
+                    }
+                }
+            } @else {
+                .#{$prefix}#{$cls-ui}-ml,
+                .#{$prefix}#{$cls-ui}-mr {
+                    zoom:1;
+
+                    @if $background-color != transparent {
+                        background-image: theme-background-image($theme-name, '#{$cls}/#{$cls-ui}-sides.gif', false, $relative-image-path-for-uis);
+                        background-position: 0 0;
+                        @if $background-gradient == null {
+                            background-repeat: repeat-y;
+                        }
+                    }
+                }
+            }
+
+            $padding-top: $padding-top - $frame-top + top($border-width);
+            $padding-right: $padding-right - $frame-right + right($border-width);
+            $padding-bottom: $padding-bottom - $frame-bottom + bottom($border-width);
+            $padding-left: $padding-left - $frame-left + left($border-width);
+
+
+            @if $padding-top < 0 {
+                $padding-top: 0;
+            }
+            @if $padding-right < 0 {
+                $padding-right: 0;
+            }
+            @if $padding-bottom < 0 {
+                $padding-bottom: 0;
+            }
+            @if $padding-left < 0 {
+                $padding-left: 0;
+            }
+
+            .#{$prefix}#{$cls-ui}-mc {
+                padding: $padding-top $padding-right $padding-bottom $padding-left;
+            }
+        }
+
+        @if $include-ie {
+            // framed components in ie7 strict mode suffer from an obscure bug that causes the tl and bl framing elements to
+            // be shrink-wrapped to the width of their contents.  This hack forces the elements' widths to fit to their parent
+            .#{$prefix}strict .#{$prefix}ie7 {
+                .#{$prefix}#{$cls-ui}-tl,
+                .#{$prefix}#{$cls-ui}-bl {
+                    position: relative;
+                    right: 0;
+                }
+            }
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/mixins/_inner-border.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/mixins/_inner-border.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/mixins/_inner-border.scss	(revision 18277)
@@ -0,0 +1,149 @@
+@function inner-border-spread($width) {
+    $top: top($width);
+    $right: right($width);
+    $bottom: bottom($width);
+    $left: left($width);
+    
+    @return min(($top + $bottom) / 2, ($left + $right) / 2);
+}
+
+@function inner-border-hoff($width, $spread) {
+    $left: left($width); 
+    $right: right($width);
+
+    @if $right <= 0 {
+        @return $left - $spread;
+    }
+    @else {
+        @return $spread - $right;
+    }
+}
+
+@function inner-border-voff($width, $spread) {
+    $top: top($width);
+    $bottom: bottom($width);
+
+    @if $bottom <= 0 {
+        @return $top - $spread;
+    }
+    @else {
+        @return $spread - $bottom;
+    }
+}
+
+@function even($number) {
+    @return ceil($number / 2) == ($number / 2);
+}
+
+@function odd($number) {
+    @return ceil($number / 2) != ($number / 2);
+}
+
+@function inner-border-usesingle-width($width) {
+    $top: top($width);
+    $right: right($width);
+    $bottom: bottom($width);
+    $left: left($width);
+        
+    @if $top == 0 {
+        @if $left + $right == 0 {
+            @return true;
+        }
+        @if $bottom >= $left + $right {
+            @return true;
+        }
+    }
+    
+    @if $bottom == 0 {
+        @if $left + $right == 0 {
+            @return true;
+        }
+        @if $top >= $left + $right {
+            @return true;
+        }
+    }
+    
+    @if $left == 0 {
+        @if $top + $bottom == 0 {
+            @return true;
+        }
+        @if $right >= $top + $bottom {
+            @return true;
+        }
+    }
+    
+    @if $right == 0 {
+        @if $top + $bottom == 0 {
+            @return true;
+        }
+        @if $left >= $top + $bottom {
+            @return true;
+        }
+    }
+    
+    @if $top + $bottom == $left + $right and even($top) == even($bottom) and even($left) == even($right) {
+        @return true;
+    }
+    
+    @return false;
+}
+
+@function inner-border-usesingle-color($color) {
+    $top: top($color);
+    $right: right($color);
+    $bottom: bottom($color);
+    $left: left($color);
+    
+    @if $top == $right == $bottom == $left {
+        @return true;
+    }
+    
+    @return false;
+}
+
+@function inner-border-usesingle($width, $color) {
+    @if inner-border-usesingle-color($color) and inner-border-usesingle-width($width) {
+        @return true;
+    }
+    @return false;
+}
+
+@mixin inner-border($width: 1px, $color: #fff, $blur: 0px) {
+    @if inner-border-usesingle($width, $color) {
+        $spread: inner-border-spread($width);
+        $hoff: inner-border-hoff($width, $spread);
+        $voff: inner-border-voff($width, $spread);
+        @include single-box-shadow($color-top, $hoff, $voff, $blur, $spread, true);
+    }
+    @else {
+        $width-top: top($width);
+        $width-right: right($width);
+        $width-bottom: bottom($width);
+        $width-left: left($width);
+
+        $color-top: top($color);
+        $color-right: right($color);
+        $color-bottom: bottom($color);
+        $color-left: left($color);
+        
+        $shadow-top: false;
+        $shadow-right: false;
+        $shadow-bottom: false;
+        $shadow-left: false;
+        
+        @if $width-top > 0 {
+            $shadow-top: $color-top 0 $width-top $blur 0 inset;
+        }
+        @if $width-right > 0 {
+            $shadow-right: $color-right (-1 * $width-right) 0 $blur 0 inset;
+        }
+        @if $width-bottom > 0 {
+            $shadow-bottom: $color-bottom 0 (-1 * $width-bottom) $blur 0 inset;
+        }
+        @if $width-left > 0 {
+            $shadow-left: $color-left $width-left 0 $blur 0 inset;
+        }
+                
+        @include box-shadow($shadow-top, $shadow-bottom, $shadow-right, $shadow-left);
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/mixins/_reset-extras.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/mixins/_reset-extras.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/mixins/_reset-extras.scss	(revision 18277)
@@ -0,0 +1,144 @@
+@mixin extjs-reset-extras {
+	.#{$prefix}border-box {
+		.#{$prefix}reset {
+			//tab.scss
+			.#{$prefix}tab-default-top {
+				height: $tab-height + top($tabbar-top-strip-border-width);
+			}
+			.#{$prefix}tab-default-bottom {
+				height: $tab-height + bottom($tabbar-bottom-strip-border-width);
+			}
+
+			//qtip.scss
+			.#{$prefix}tip-anchor {
+		        width: 10px;
+		        height: 10px;
+		    }
+
+			//field.scss
+			.#{$prefix}form-text {
+		        height: $form-field-height;
+		    }
+
+			textarea.#{$prefix}form-field {
+		        height: auto;
+		    }
+
+		    .#{$prefix}field-default-toolbar .#{$prefix}form-text {
+		        height: $form-toolbar-field-height;
+		    }
+
+		    //triggerfield.scss
+		    .#{$prefix}form-trigger {
+		        height: $form-trigger-height;
+		    }
+
+		    .#{$prefix}field-default-toolbar .#{$prefix}form-trigger {
+		        height: $form-toolbar-trigger-height;
+		    }
+
+		    //grid.scss
+		    @if $include-ie or $compile-all {
+		        &.#{$prefix}ie9 {
+		            .#{$prefix}grid-header-ct {
+		                padding-left: 1px;
+		            }
+		        }
+		    }
+		}
+    }
+
+    .#{$prefix}webkit {
+    	.#{$prefix}reset {
+	    	//form.scss
+	        * {
+	            &:focus {
+	                outline:none !important;
+	            }
+	        }
+
+	        //field
+	        .#{$prefix}form-empty-field {
+	            line-height: 15px;
+	        }
+
+	        //fieldset
+	        .#{$prefix}fieldset-header {
+		        padding-top: 1px;
+		    }
+	    }
+	}
+
+    /* Top Tabs */
+	@include tab-bar-top-reset(
+	    "tab-bar-top",
+	    "tab-bar-body",
+	    "tab-bar-strip",
+	    $tabbar-top-body-padding,
+	    $tabbar-top-body-border-width,
+	    $tabbar-top-strip-border-width,
+	    $tabbar-strip-height
+	);
+	@include tab-bar-top-reset(
+	    "tab-bar-top",
+	    "tab-bar-body-default-plain",
+	    "tab-bar-strip-default-plain",
+	    $tabbar-top-plain-body-padding,
+	    $tabbar-top-plain-body-border-width,
+	    $tabbar-top-strip-border-width,
+	    $tabbar-strip-height
+	);
+
+	/* Bottom Tabs */
+	@include tab-bar-bottom-reset(
+	    "tab-bar-bottom",
+	    "tab-bar-body",
+	    "tab-bar-strip",
+	    $tabbar-bottom-body-padding,
+	    $tabbar-bottom-body-border-width,
+	    $tabbar-bottom-strip-border-width,
+	    $tabbar-strip-height
+	);
+
+	@include tab-bar-bottom-reset(
+	    "tab-bar-bottom",
+	    "tab-bar-body-default-plain",
+	    "tab-bar-strip-default-plain",
+	    $tabbar-bottom-plain-body-padding,
+	    $tabbar-bottom-plain-body-border-width,
+	    $tabbar-bottom-strip-border-width,
+	    $tabbar-strip-height
+	);
+}
+
+@mixin tab-bar-top-reset($toolbarCls, $bodyCls, $stripCls, $body-padding, $body-border-width, $strip-border-width, $strip-height) {
+    .#{$prefix}border-box {
+    	.#{$prefix}reset {
+	        .#{$prefix}#{$toolbarCls} {
+	            .#{$prefix}#{$bodyCls} {
+	                height: $tab-height + vertical($body-border-width) + vertical($body-padding);
+	            }
+
+	            .#{$prefix}#{$stripCls} {
+	                height: $strip-height;
+	            }
+	        }
+		}
+    }
+}
+
+@mixin tab-bar-bottom-reset($toolbarCls, $bodyCls, $stripCls, $body-padding, $body-border-width, $strip-border-width, $strip-height) {
+    .#{$prefix}border-box {
+    	.#{$prefix}reset {
+	        .#{$prefix}#{$toolbarCls} {
+	            .#{$prefix}#{$bodyCls} {
+	                height: $tab-height + vertical($body-border-width) + vertical($body-padding);
+	            }
+
+	            .#{$prefix}#{$stripCls} {
+	                height: $strip-height;
+	            }
+	        }
+	    }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/mixins/_theme-background-image.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/mixins/_theme-background-image.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/mixins/_theme-background-image.scss	(revision 18277)
@@ -0,0 +1,30 @@
+/*
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error.
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to
+ * be true.
+ */
+@function theme-background-image($theme-name, $path, $without-url: false, $relative: false) {
+    $exists_image: theme-image($theme-name, $path, true, false);
+
+    @if $exists_image {
+        $exists: theme_image_exists($exists_image);
+
+        @if $exists == true {
+            @return theme-image($theme-name, $path, $without-url, $relative);
+        }
+        @else {
+            @warn "@theme-background-image: Theme image not found: #{$exists_image}";
+
+            @if $include-missing-images {
+                @return theme-image($theme-name, $path, $without-url, $relative);
+            }
+
+            @return none;
+        }
+    }
+    @else {
+        @warn "@theme-background-image: No arguments passed";
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/util/_dragdrop.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/util/_dragdrop.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/util/_dragdrop.scss	(revision 18277)
@@ -0,0 +1,77 @@
+@mixin extjs-dragdrop {
+    // Must always be on top
+    .#{$prefix}dd-drag-proxy {
+        z-index: 1000000!important;
+    }
+    
+    .#{$prefix}dd-drag-repair {
+        .#{$prefix}dd-drag-ghost {
+            @include opacity(.6);
+        }
+
+        .#{$prefix}dd-drop-icon {
+            display: none;
+        }
+    }
+
+    .#{$prefix}dd-drag-ghost {
+        @include opacity(.85);
+        
+        padding: 5px;
+        padding-left: 20px;
+        
+        white-space: nowrap;
+        
+        color: #000;
+        font: normal ceil($font-size * .9) $font-family;
+        
+        border: 1px solid;
+        border-color: #ddd #bbb #bbb #ddd;
+        
+        background-color: #fff;
+    }
+
+    .#{$prefix}dd-drop-icon {
+        position: absolute;
+        top: 3px;
+        left: 3px;
+        
+        display: block;
+        
+        width: 16px;
+        height: 16px;
+        
+        background-color: transparent;
+        background-position:  center;
+        background-repeat:  no-repeat;
+        
+        z-index: 1;
+    }
+
+    .#{$prefix}view-selector {
+        position: absolute;
+        left: 0;
+        top: 0;
+        
+        width: 0;
+        
+        background-color: #c3daf9;
+        border: 1px dotted #3399bb;
+            
+        @include opacity(.5);
+        
+        zoom: 1;
+    }
+    
+    .#{$prefix}dd-drop-nodrop .#{$prefix}dd-drop-icon {
+        background-image: theme-background-image($theme-name, 'dd/drop-no.gif');
+    }
+
+    .#{$prefix}dd-drop-ok .#{$prefix}dd-drop-icon {
+        background-image: theme-background-image($theme-name, 'dd/drop-yes.gif');
+    }
+
+    .#{$prefix}dd-drop-ok-add .#{$prefix}dd-drop-icon {
+        background-image: theme-background-image($theme-name, 'dd/drop-add.gif');
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/util/_focus.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/util/_focus.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/util/_focus.scss	(revision 18277)
@@ -0,0 +1,37 @@
+.#{$prefix}focus-element {
+    position: absolute;
+    top: -10px;
+    left: -10px;
+    width: 0px;
+    height: 0px;
+}
+
+.#{$prefix}focus-frame {
+    position: absolute;
+    left: 0px;
+    top: 0px;
+    z-index: 100000000;
+    width: 0px;
+    height: 0px;
+}
+
+.#{$prefix}focus-frame-top,
+.#{$prefix}focus-frame-bottom,
+.#{$prefix}focus-frame-left,
+.#{$prefix}focus-frame-right {
+    position: absolute;
+    top: 0px;
+    left: 0px;
+}
+
+.#{$prefix}focus-frame-top,
+.#{$prefix}focus-frame-bottom {
+    border-top: $focus-frame-style $focus-frame-width $focus-frame-color;
+    height: $focus-frame-width;
+}
+
+.#{$prefix}focus-frame-left,
+.#{$prefix}focus-frame-right {
+    border-left: $focus-frame-style $focus-frame-width $focus-frame-color;
+    width: $focus-frame-width;
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/util/_messagebox.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/util/_messagebox.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/util/_messagebox.scss	(revision 18277)
@@ -0,0 +1,42 @@
+@mixin extjs-messagebox {
+    .#{$prefix}message-box .#{$prefix}window-body {
+        background-color: $window-background-color;
+        border: none;
+    }
+
+    .#{$prefix}message-box .#{$prefix}progress-wrap {
+        margin-top: 4px;
+    }
+
+    .#{$prefix}message-box-icon {
+        width: 47px;
+        height: 32px;
+    }
+
+    .#{$prefix}message-box-info,
+    .#{$prefix}message-box-warning,
+    .#{$prefix}message-box-question,
+    .#{$prefix}message-box-error {
+        background: transparent no-repeat top left;
+    }
+
+    .#{$prefix}message-box .#{$prefix}msg-box-wait {
+        background-image: theme-background-image($theme-name, 'shared/blue-loading.gif');
+    }
+
+    .#{$prefix}message-box-info {
+        background-image: theme-background-image($theme-name, 'shared/icon-info.gif');
+    }
+
+    .#{$prefix}message-box-warning {
+        background-image: theme-background-image($theme-name, 'shared/icon-warning.gif');
+    }
+
+    .#{$prefix}message-box-question {
+        background-image: theme-background-image($theme-name, 'shared/icon-question.gif');
+    }
+
+    .#{$prefix}message-box-error {
+        background-image: theme-background-image($theme-name, 'shared/icon-error.gif');
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/util/_resizable.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/util/_resizable.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/util/_resizable.scss	(revision 18277)
@@ -0,0 +1,221 @@
+@mixin extjs-resizable {
+    .#{$prefix}resizable-handle {
+        position: absolute;
+        z-index: 100;
+        font-size: 1px;
+        line-height: 6px;
+        overflow: hidden;
+        zoom: 1;
+        @include opacity(0);
+        background-color: #fff;
+    }
+
+    // Collapsed Components cannot be resized
+    .#{$prefix}collapsed .#{$prefix}resizable-handle {
+        display: none;
+    }
+
+    .#{$prefix}resizable-handle-east {
+        width: 6px;
+        height: 100%;
+        
+        right: 0;
+        top: 0;
+    }
+
+    .#{$prefix}resizable-over {
+        .#{$prefix}resizable-handle-east {
+            cursor: e-resize;
+        }
+    }
+
+    .#{$prefix}resizable-handle-south {
+        width: 100%;
+        height: 6px;
+        
+        left: 0;
+        bottom: 0;
+    }
+    
+    .#{$prefix}resizable-over {
+        .#{$prefix}resizable-handle-south {
+            cursor: s-resize;
+        }
+    }
+    
+    .#{$prefix}resizable-handle-west {
+        width: 6px;
+        height: 100%;
+        
+        left: 0;
+        top: 0;
+    }
+    
+    .#{$prefix}resizable-over {
+        .#{$prefix}resizable-handle-west {
+            cursor: w-resize;
+        }
+    }
+
+    .#{$prefix}resizable-handle-north {
+        width: 100%;
+        height: 6px;
+        
+        left: 0;
+        top: 0;
+    }
+    
+    .#{$prefix}resizable-over {
+        .#{$prefix}resizable-handle-north {
+            cursor: n-resize;
+        }
+    }
+
+    .#{$prefix}resizable-handle-southeast {
+        width: 6px;
+        height: 6px;
+        
+        right: 0;
+        bottom: 0;
+        
+        z-index: 101;
+    }
+    
+    .#{$prefix}resizable-over {
+        .#{$prefix}resizable-handle-southeast {
+            cursor: se-resize;
+        }
+    }
+
+    .#{$prefix}resizable-handle-northwest {
+        width: 6px;
+        height: 6px;
+        
+        left: 0;
+        top: 0;
+        
+        z-index: 101;
+    }
+    
+    .#{$prefix}resizable-over {
+        .#{$prefix}resizable-handle-northwest {
+            cursor: nw-resize;
+        }
+    }
+
+    .#{$prefix}resizable-handle-northeast {
+        width: 6px;
+        height: 6px;
+        
+        right: 0;
+        top: 0;
+        
+        z-index: 101;
+    }
+    
+    .#{$prefix}resizable-over {
+        .#{$prefix}resizable-handle-northeast {
+            cursor: ne-resize;
+        }
+    }
+
+    .#{$prefix}resizable-handle-southwest {
+        width: 6px;
+        height: 6px;
+        
+        left: 0;
+        bottom: 0;
+        
+        z-index: 101;
+    }
+    
+    .#{$prefix}resizable-over {
+        .#{$prefix}resizable-handle-southwest {
+            cursor: sw-resize;
+        }
+    }
+    
+    /*IE rounding error*/
+    .#{$prefix}ie {
+        .#{$prefix}resizable-handle-east {
+            margin-right: -1px; /*IE rounding error*/
+        }
+        
+        .#{$prefix}resizable-handle-south {
+            margin-bottom: -1px;
+        }
+    }
+
+    .#{$prefix}resizable-over .#{$prefix}resizable-handle, .#{$prefix}resizable-pinned .#{$prefix}resizable-handle{
+        @include opacity(1);
+    }
+
+    .#{$prefix}window .#{$prefix}window-handle {
+        @include opacity(0);
+    }
+
+    .#{$prefix}window-collapsed .#{$prefix}window-handle {
+        display: none;
+    }
+
+    .#{$prefix}resizable-proxy {
+        border: 1px dashed #3b5a82;
+        position: absolute;
+        left: 0;
+        top: 0;
+        overflow: hidden;
+        z-index: 50000;
+    }
+
+    .#{$prefix}resizable-overlay {
+        position: absolute;
+        left: 0;
+        top: 0;
+        
+        width: 100%;
+        height: 100%;
+        
+        display: none;
+        
+        z-index: 200000;
+        
+        background-color: #fff;
+            
+        @include opacity(0);
+    }
+    
+    .#{$prefix}resizable-over,
+    .#{$prefix}resizable-pinned {
+        .#{$prefix}resizable-handle-east,
+        .#{$prefix}resizable-handle-west {
+                background-position: left;
+                background-image: theme-background-image($theme-name, 'sizer/e-handle.gif');
+        }
+        
+        .#{$prefix}resizable-handle-south,
+        .#{$prefix}resizable-handle-north {
+            background-position: top;
+            background-image: theme-background-image($theme-name, 'sizer/s-handle.gif');
+        }
+        
+        .#{$prefix}resizable-handle-southeast {
+            background-position: top left;
+            background-image: theme-background-image($theme-name, 'sizer/se-handle.gif');
+        }
+        
+        .#{$prefix}resizable-handle-northwest {
+            background-position: bottom right;
+            background-image: theme-background-image($theme-name, 'sizer/nw-handle.gif');
+        }
+        
+        .#{$prefix}resizable-handle-northeast {
+            background-position: bottom left;
+            background-image: theme-background-image($theme-name, 'sizer/ne-handle.gif');
+        }
+
+        .#{$prefix}resizable-handle-southwest {
+            background-position: top right;
+            background-image: theme-background-image($theme-name, 'sizer/sw-handle.gif');
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/util/_scroller.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/util/_scroller.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/util/_scroller.scss	(revision 18277)
@@ -0,0 +1,55 @@
+@mixin extjs-scroller {
+    .#{$prefix}horizontal-scroller-present .#{$prefix}grid-body {
+        border-bottom-width: 0px;
+    }
+        
+    .#{$prefix}vertical-scroller-present .#{$prefix}grid-body {
+        border-right-width: 0px;
+    }
+
+    .#{$prefix}scroller {
+        overflow: hidden;
+    }
+    
+    .#{$prefix}scroller-vertical {
+        border: 1px solid $panel-border-color;
+        border-top-color: $grid-header-background-color;
+    }
+    
+    .#{$prefix}scroller-horizontal {
+        border: 1px solid $panel-border-color;
+    }
+
+    .#{$prefix}vertical-scroller-present .#{$prefix}scroller-horizontal {
+        border-right-width: 0px;
+    }
+    
+    .#{$prefix}scroller-ct {
+        overflow: hidden;
+        position: absolute;
+        margin: 0;
+        padding: 0;
+        border: none;
+        left: 0px;
+        top: 0px;
+
+        /*
+        In IE9 (only), the border-box style causes the scroller-ct to be 0px in the
+        perpendicular dimension and breaks the scroll as well as offsets it by the left
+        offset that we use to try and keep some size on this element. This works on all
+        browsers (including IE9).
+        */
+        box-sizing: content-box !important;
+        -ms-box-sizing: content-box !important;
+        -moz-box-sizing: content-box !important;
+        -webkit-box-sizing: content-box !important;
+    }
+    
+    .#{$prefix}scroller-vertical .#{$prefix}scroller-ct {
+        overflow-y: scroll;
+    }
+    
+    .#{$prefix}scroller-horizontal .#{$prefix}scroller-ct {
+        overflow-x: scroll;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/util/_splitter.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/util/_splitter.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/util/_splitter.scss	(revision 18277)
@@ -0,0 +1,107 @@
+@mixin extjs-splitter {
+    .#{$prefix}splitter {
+        .#{$prefix}collapse-el {
+            position: absolute;
+
+            cursor: pointer;
+
+            background-color: transparent;
+            background-repeat: no-repeat !important;
+        }
+    }
+
+    .#{$prefix}layout-split-left,
+    .#{$prefix}layout-split-right {
+        top: 50%;
+
+        margin-top: -17px;
+
+        width: 5px;
+        height: 35px;
+    }
+
+    .#{$prefix}layout-split-top,
+    .#{$prefix}layout-split-bottom {
+        left: 50%;
+
+        width: 35px;
+        height: 5px;
+
+        margin-left: -17px;
+    }
+
+    .#{$prefix}layout-split-left {
+        background: no-repeat top right;
+        background-image: theme-background-image($theme-name, 'util/splitter/mini-left.gif');
+    }
+
+    .#{$prefix}layout-split-right {
+        background: no-repeat top left;
+        background-image: theme-background-image($theme-name, 'util/splitter/mini-right.gif');
+    }
+
+    .#{$prefix}layout-split-top {
+        background: no-repeat top left;
+        background-image: theme-background-image($theme-name, 'util/splitter/mini-top.gif');
+    }
+
+    .#{$prefix}layout-split-bottom {
+        background: no-repeat top left;
+        background-image: theme-background-image($theme-name, 'util/splitter/mini-bottom.gif');
+    }
+
+    .#{$prefix}splitter-collapsed {
+        .#{$prefix}layout-split-left {
+            background: no-repeat top left;
+            background-image: theme-background-image($theme-name, 'util/splitter/mini-right.gif');
+        }
+
+        .#{$prefix}layout-split-right {
+            background: no-repeat top right;
+            background-image: theme-background-image($theme-name, 'util/splitter/mini-left.gif');
+        }
+
+        .#{$prefix}layout-split-top {
+            background: no-repeat top left;
+            background-image: theme-background-image($theme-name, 'util/splitter/mini-bottom.gif');
+        }
+
+        .#{$prefix}layout-split-bottom {
+            background: no-repeat top left;
+            background-image: theme-background-image($theme-name, 'util/splitter/mini-top.gif');
+        }
+    }
+
+    .#{$prefix}splitter-horizontal {
+        cursor: e-resize;
+        cursor: row-resize;
+        font-size:1px;
+    }
+    
+    .#{$prefix}splitter-vertical {
+        cursor: e-resize;
+        cursor: col-resize;
+        font-size:1px;
+    }
+    .#{$prefix}splitter-collapsed, .#{$prefix}splitter-horizontal-noresize, .#{$prefix}splitter-vertical-noresize {
+        cursor: default;
+    }
+
+    .#{$prefix}splitter-active {
+        z-index: 4;
+        font-size:1px;
+        background-color: rgb(180, 180, 180);
+        @include opacity(0.8);
+    }
+    .#{$prefix}splitter-active {
+        .#{$prefix}collapse-el {
+            @include opacity(0.3);
+        }
+    }
+
+    .#{$prefix}proxy-el {
+        position: absolute;
+        background: rgb(180, 180, 180);
+        @include opacity(0.8);
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/util/_tool.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/util/_tool.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/util/_tool.scss	(revision 18277)
@@ -0,0 +1,289 @@
+@mixin extjs-tool {
+    .#{$prefix}tool {
+        height: $tool-size;
+
+        img {
+            overflow: hidden;
+
+            width: $tool-size;
+            height: $tool-size;
+
+            cursor: pointer;
+
+            background-color: transparent;
+            background-repeat: no-repeat;
+            background-image: theme-background-image($theme-name, 'tools/tool-sprites.gif');
+
+            margin: 0;
+        }
+    }
+
+    .#{$prefix}panel-header-horizontal,
+    .#{$prefix}window-header-horizontal {
+        .#{$prefix}tool {
+                margin-left: 2px;
+        }
+    }
+
+    .#{$prefix}panel-header-vertical,
+    .#{$prefix}window-header-vertical {
+        .#{$prefix}tool {
+                margin-top: 2px;
+        }
+    }
+
+    .#{$prefix}panel-header-vertical,
+    .#{$prefix}window-header-vertical {
+        // this assumes that there will only ever be one tool that shows at the top of a vertical header (the collapse tool)
+        // we should revisit this if it is decided that we want to support multiple tools at the top
+        .#{$prefix}tool-top {
+            margin: 0 0 4px;
+        }
+    }
+
+
+.#{$prefix}tool-placeholder {
+        visibility: hidden;
+    }
+
+    .#{$prefix}tool-toggle {
+        background-position: 0 -60px;
+    }
+
+    .#{$prefix}tool-over {
+        .#{$prefix}tool-toggle {
+            background-position: -15px -60px;
+        }
+    }
+
+    .#{$prefix}panel-collapsed,
+    .#{$prefix}fieldset-collapsed {
+        .#{$prefix}tool-toggle {
+            background-position: 0 -75px;
+        }
+
+        .#{$prefix}tool-over {
+            .#{$prefix}tool-toggle {
+                background-position: -15px -75px;
+            }
+        }
+    }
+
+    .#{$prefix}tool-close {
+        background-position: 0 0;
+    }
+    
+    .#{$prefix}tool-minimize {
+        background-position: 0 -15px;
+    }
+    
+    .#{$prefix}tool-maximize {
+        background-position: 0 -30px;
+    }
+    
+    .#{$prefix}tool-restore {
+        background-position: 0 -45px;
+    }
+    
+    .#{$prefix}tool-gear {
+        background-position: 0 -90px;
+    }
+    
+    .#{$prefix}tool-prev {
+        background-position: 0 -105px;
+    }
+    
+    .#{$prefix}tool-next {
+        background-position: 0 -120px;
+    }
+    
+    .#{$prefix}tool-pin {
+        background-position: 0 -135px;
+    }
+
+    .#{$prefix}tool-unpin {
+        background-position: 0 -150px;
+    }
+
+    .#{$prefix}tool-right {
+        background-position: 0 -165px;
+    }
+
+    .#{$prefix}tool-left {
+        background-position: 0 -180px;
+    }
+    
+    .#{$prefix}tool-help {
+        background-position: 0 -300px;
+    }
+
+    .#{$prefix}tool-save {
+        background-position: 0 -285px;
+    }
+
+    .#{$prefix}tool-search {
+        background-position: 0 -270px;
+    }
+
+    .#{$prefix}tool-minus {
+        background-position: 0 -255px;
+    }
+
+    .#{$prefix}tool-plus {
+        background-position: 0 -240px;
+    }
+
+    .#{$prefix}tool-refresh {
+        background-position: 0 -225px;
+    }
+
+    .#{$prefix}tool-up {
+        background-position: 0 -210px;
+    }
+
+    .#{$prefix}tool-down {
+        background-position: 0 -195px;
+    }
+    
+    .#{$prefix}tool-collapse {
+        background-position: 0 -345px;
+    }
+
+    .#{$prefix}tool-expand {
+        background-position: 0 -330px;
+    }
+
+    .#{$prefix}tool-print {
+        background-position: 0 -315px;
+    }
+
+    .#{$prefix}tool-expand-bottom,
+    .#{$prefix}tool-collapse-bottom {
+        background-position: 0 -195px;
+    }
+
+    .#{$prefix}tool-expand-top,
+    .#{$prefix}tool-collapse-top {
+        background-position: 0 -210px;
+    }
+
+    .#{$prefix}tool-expand-left,
+    .#{$prefix}tool-collapse-left {
+        background-position: 0 -180px;
+    }
+
+    .#{$prefix}tool-expand-right,
+    .#{$prefix}tool-collapse-right {
+        background-position: 0 -165px;
+    }
+
+    .#{$prefix}tool-over {
+        .#{$prefix}tool-close {
+            background-position: -15px 0;
+        }
+
+        .#{$prefix}tool-minimize {
+            background-position: -15px -15px;
+        }
+    
+        .#{$prefix}tool-maximize {
+            background-position: -15px -30px;
+        }
+
+        .#{$prefix}tool-restore {
+            background-position: -15px -45px;
+        }
+    
+        .#{$prefix}tool-gear {
+            background-position: -15px -90px;
+        }
+    
+        .#{$prefix}tool-prev {
+            background-position: -15px -105px;
+        }
+    
+        .#{$prefix}tool-next {
+            background-position: -15px -120px;
+        }
+    
+        .#{$prefix}tool-pin {
+            background-position: -15px -135px;
+        }
+    
+        .#{$prefix}tool-unpin {
+            background-position: -15px -150px;
+        }
+    
+        .#{$prefix}tool-right {
+            background-position: -15px -165px;
+        }
+    
+        .#{$prefix}tool-left {
+            background-position: -15px -180px;
+        }
+
+        .#{$prefix}tool-down {
+            background-position: -15px -195px;
+        }
+    
+        .#{$prefix}tool-up {
+            background-position: -15px -210px;
+        }
+    
+        .#{$prefix}tool-refresh {
+            background-position: -15px -225px;
+        }
+    
+        .#{$prefix}tool-plus {
+            background-position: -15px -240px;
+        }
+
+        .#{$prefix}tool-minus {
+            background-position: -15px -255px;
+        }
+
+        .#{$prefix}tool-search {
+            background-position: -15px -270px;
+        }
+
+        .#{$prefix}tool-save {
+            background-position: -15px -285px;
+        }
+
+        .#{$prefix}tool-help {
+            background-position: -15px -300px;
+        }
+
+        .#{$prefix}tool-print {
+            background-position: -15px -315px;
+        }
+
+        .#{$prefix}tool-expand {
+            background-position: -15px -330px;
+        }
+
+        .#{$prefix}tool-collapse {
+            background-position: -15px -345px;
+        }
+        
+        .#{$prefix}tool-expand-bottom,
+        .#{$prefix}tool-collapse-bottom {
+            background-position: -15px -195px;
+        }
+    
+        .#{$prefix}tool-expand-top,
+        .#{$prefix}tool-collapse-top {
+            background-position: -15px -210px;
+        }
+    
+        .#{$prefix}tool-expand-left,
+        .#{$prefix}tool-collapse-left {
+            background-position: -15px -180px;
+        }
+    
+        .#{$prefix}tool-expand-right,
+        .#{$prefix}tool-collapse-right {
+            background-position: -15px -165px;
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_boundlist.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_boundlist.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_boundlist.scss	(revision 18277)
@@ -0,0 +1,18 @@
+//background
+$boundlist-background-color: #fff !default;
+
+//borders
+$boundlist-border-color: adjust-color($base-color, $hue: 0.58deg, $saturation: 25.146%, $lightness: -6.471%) !default;
+$boundlist-border-width: 1px !default;
+$boundlist-border-style: solid !default;
+
+$boundlist-item-padding: 2px !default;
+$boundlist-item-border-width: 1px !default;
+$boundlist-item-border-style: dotted !default;
+$boundlist-item-border-color: $boundlist-background-color !default;
+
+$boundlist-item-over-border-color: adjust-color($base-color, $hue: 6.952deg, $saturation: 5.848%, $lightness: -6.471%) !default;
+$boundlist-item-selected-border-color: darken($boundlist-item-over-border-color, 5) !default;
+
+$boundlist-item-over-background-color: adjust-color($base-color, $hue: 3.188deg, $saturation: 0.542%, $lightness: 7.843%) !default;
+$boundlist-item-selected-background-color: darken($boundlist-item-over-background-color, 5) !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_btn-group.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_btn-group.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_btn-group.scss	(revision 18277)
@@ -0,0 +1,15 @@
+$btn-group-background-color: adjust-color($base-color, $hue: 1deg, $saturation: -4%, $lightness: 3.8%) !default;
+$btn-group-margin: 2px 0 !default;
+$btn-group-border-color: adjust-color($base-color, $hue: -5deg, $saturation: -27%, $lightness: -6%) !default;
+$btn-group-border-radius: 2px !default;
+$btn-group-border-width: 1px !default;
+$btn-group-padding: 0 1px !default;
+
+$btn-group-inner-border-width: 1px !default;
+$btn-group-inner-border-color: adjust-color($base-color, $saturation: -9%, $lightness: 8.5%) !default;
+
+$btn-group-header-margin: 2px 2px 0 2px !default;
+$btn-group-header-font: normal ceil($font-size * .9) $font-family !default;
+$btn-group-header-color: adjust-color($base-color, $hue: 2.6deg, $saturation: -9%, $lightness: -38.5%) !default;
+$btn-group-header-padding: 1px 0 !default;
+$btn-group-header-background-color: adjust-color($base-color, $hue: -2deg, $saturation: 5%, $lightness: 1%) !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_button.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_button.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_button.scss	(revision 18277)
@@ -0,0 +1,139 @@
+$button-arrow-size: 12px !default;
+$button-split-size: 14px !default;
+$button-icon-spacing: 4px !default;
+
+$button-small-border-radius: 3px !default;
+$button-small-border-width: 1px !default;
+$button-small-padding: 2px !default;
+$button-small-text-padding: 4px;
+$button-small-font-size: ceil($font-size * .9) !default; //11px
+$button-small-font-size-over: $button-small-font-size !default;
+$button-small-font-size-focus: $button-small-font-size-over !default;
+$button-small-font-size-pressed: $button-small-font-size !default;
+$button-small-font-size-disabled: $button-small-font-size !default;
+$button-small-font-weight: normal !default;
+$button-small-font-weight-over: $button-small-font-weight !default;
+$button-small-font-weight-focus: $button-small-font-weight-over !default;
+$button-small-font-weight-pressed: $button-small-font-weight !default;
+$button-small-font-weight-disabled: $button-small-font-weight !default;
+$button-small-font-family: $font-family !default;
+$button-small-font-family-over: $button-small-font-family !default;
+$button-small-font-family-focus: $button-small-font-family-over !default;
+$button-small-font-family-pressed: $button-small-font-family !default;
+$button-small-font-family-disabled: $button-small-font-family !default;
+$button-small-icon-size: 16px !default;
+
+$button-medium-border-radius: 3px !default;
+$button-medium-border-width: 1px !default;
+$button-medium-padding: 3px !default;
+$button-medium-text-padding: 3px !default;
+$button-medium-font-size: ceil($font-size * .9) !default; //11px
+$button-medium-font-size-over: $button-medium-font-size !default;
+$button-medium-font-size-focus: $button-medium-font-size-over !default;
+$button-medium-font-size-pressed: $button-medium-font-size !default;
+$button-medium-font-size-disabled: $button-medium-font-size !default;
+$button-medium-font-weight: normal !default;
+$button-medium-font-weight-over: $button-medium-font-weight !default;
+$button-medium-font-weight-focus: $button-medium-font-weight-over !default;
+$button-medium-font-weight-pressed: $button-medium-font-weight !default;
+$button-medium-font-weight-disabled: $button-medium-font-weight !default;
+$button-medium-font-family: $font-family !default;
+$button-medium-font-family-over: $button-medium-font-family !default;
+$button-medium-font-family-focus: $button-medium-font-family-over !default;
+$button-medium-font-family-pressed: $button-medium-font-family !default;
+$button-medium-font-family-disabled: $button-medium-font-family !default;
+$button-medium-icon-size: 24px !default;
+
+$button-large-border-radius: 3px !default;
+$button-large-border-width: 1px !default;
+$button-large-padding: 3px !default;
+$button-large-text-padding: 3px !default;
+$button-large-font-size: ceil($font-size * .9) !default; //11px
+$button-large-font-size-over: $button-large-font-size !default;
+$button-large-font-size-focus: $button-large-font-size-over !default;
+$button-large-font-size-pressed: $button-large-font-size !default;
+$button-large-font-size-disabled: $button-large-font-size !default;
+$button-large-font-weight: normal !default;
+$button-large-font-weight-over: $button-large-font-weight !default;
+$button-large-font-weight-focus: $button-large-font-weight-over !default;
+$button-large-font-weight-pressed: $button-large-font-weight !default;
+$button-large-font-weight-disabled: $button-large-font-weight !default;
+$button-large-font-family: $font-family !default;
+$button-large-font-family-over: $button-large-font-family !default;
+$button-large-font-family-focus: $button-large-font-family-over !default;
+$button-large-font-family-pressed: $button-large-font-family !default;
+$button-large-font-family-disabled: $button-large-font-family !default;
+$button-large-icon-size: 32px !default;
+
+//base colors for the default button
+$button-default-base-color: adjust-color($neutral-color, $hue: 0deg, $saturation: -55.556%, $lightness: 12.745%) !default; //F7F7F7
+$button-default-base-color-over: adjust-color($base-color, $hue: -6.667deg, $saturation: 44.444%, $lightness: 10.588%) !default; //E4F3FF
+$button-default-base-color-focus: $button-default-base-color-over !default;
+$button-default-base-color-pressed: adjust-color($base-color, $hue: -0.725deg, $saturation: -9.556%, $lightness: -3.725%) !default; //B6CBE4
+$button-default-base-color-disabled: adjust-color($base-color, $hue: 0deg, $saturation: -55.556%, $lightness: 12.745%) !default; //F7F7F7
+
+$button-default-border-color: adjust-color($button-default-base-color, $hue: 0deg, $saturation: 0%, $lightness: -18.039%) !default;
+$button-default-border-color-over: adjust-color($button-default-base-color-over, $hue: 8.177deg, $saturation: -28.283%, $lightness: -12.745%) !default;
+$button-default-border-color-focus: $button-default-border-color-over !default;
+$button-default-border-color-pressed: adjust-color($button-default-base-color-pressed, $hue: 2.317deg, $saturation: 6.756%, $lightness: -5.294%) !default;
+$button-default-border-color-disabled: adjust-color($button-default-base-color-disabled, $hue: 0deg, $saturation: 0%, $lightness: -8.627%) !default;
+
+$button-default-background-color: $button-default-base-color !default;
+$button-default-background-color-over: $button-default-base-color-over !default;
+$button-default-background-color-focus: $button-default-background-color-over !default;
+$button-default-background-color-pressed: $button-default-base-color-pressed !default;
+$button-default-background-color-disabled: $button-default-base-color-disabled !default;
+
+$button-default-background-gradient: 'glossy-button' !default;
+$button-default-background-gradient-over: 'glossy-button-over' !default;
+$button-default-background-gradient-focus: $button-default-background-gradient-over !default;
+$button-default-background-gradient-pressed: 'glossy-button-pressed' !default;
+$button-default-background-gradient-disabled: 'glossy-button-disabled' !default;
+
+$button-default-background-gradient-color-stops: null !default;
+$button-default-background-gradient-color-stops-over: $button-default-background-gradient-color-stops !default;
+$button-default-background-gradient-color-stops-focus: $button-default-background-gradient-color-stops-over !default;
+$button-default-background-gradient-color-stops-pressed: $button-default-background-gradient-color-stops !default;
+$button-default-background-gradient-color-stops-disabled: $button-default-background-gradient-color-stops !default;
+
+$button-default-color: #333 !default;
+$button-default-color-over: $button-default-color !default;
+$button-default-color-focus: $button-default-color-over !default;
+$button-default-color-pressed: $button-default-color !default;
+$button-default-color-disabled: lighten($button-default-color, 35) !default;
+
+// Toolbar buttons
+$button-toolbar-arrow-size: 12px !default;
+$button-toolbar-split-size: 12px !default;
+
+$button-toolbar-base-color: adjust-color($base-color, $hue: -213.333deg, $saturation: -55.556%, $lightness: 3.333%) !default;
+
+$button-toolbar-border-color: transparent !default;
+$button-toolbar-border-color-over: adjust-color($base-color, $hue: 0.084deg, $saturation: -9.891%, $lightness: -18.039%) !default;
+$button-toolbar-border-color-focus: $button-toolbar-border-color-over !default;
+$button-toolbar-border-color-pressed: adjust-color($base-color, $hue: 0.721deg, $saturation: -17.014%, $lightness: -21.765%) !default;
+$button-toolbar-border-color-disabled: transparent !default;
+
+$button-toolbar-background-color: transparent !default;
+$button-toolbar-background-color-over: adjust-color($base-color, $hue: -5deg, $saturation: 44.444%, $lightness: 8.824%) !default;
+$button-toolbar-background-color-focus: $button-toolbar-background-color-over !default;
+$button-toolbar-background-color-pressed: adjust-color($base-color, $hue: -1.138deg, $saturation: -11.47%, $lightness: -2.353%) !default;
+$button-toolbar-background-color-disabled: transparent !default;
+
+$button-toolbar-background-gradient: null !default;
+$button-toolbar-background-gradient-over: 'glossy-button-over' !default;
+$button-toolbar-background-gradient-focus: $button-toolbar-background-gradient-over !default;
+$button-toolbar-background-gradient-pressed: 'glossy-button-pressed' !default;
+$button-toolbar-background-gradient-disabled: null !default;
+
+$button-toolbar-background-gradient-color-stops: null !default;
+$button-toolbar-background-gradient-color-stops-over: null !default;
+$button-toolbar-background-gradient-color-stops-focus: $button-toolbar-background-gradient-color-stops-over !default;
+$button-toolbar-background-gradient-color-stops-pressed: null !default;
+$button-toolbar-background-gradient-color-stops-disabled: null !default;
+
+$button-toolbar-color: #333 !default;
+$button-toolbar-color-over: $button-toolbar-color !default;
+$button-toolbar-color-focus: $button-toolbar-color-over !default;
+$button-toolbar-color-pressed: $button-toolbar-color !default;
+$button-toolbar-color-disabled: lighten($button-toolbar-color, 35) !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_core.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_core.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_core.scss	(revision 18277)
@@ -0,0 +1,120 @@
+/**
+ * @class Global_CSS
+ *
+ * Global CSS variables and mixins of Sencha Touch.
+ */
+
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+$prefix: 'x-' !default;
+
+/**
+ * @var {string} $theme-name
+ * The name of the theme. This must match the the output directory of the images.
+ * (defaults to 'default')
+ */
+$theme-name: 'default' !default;
+
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+$relative-image-path-for-uis: false !default;
+
+$color: #000 !default;
+
+/**
+ * @var {string} $font-family
+ * The default font-family to be used throughout the theme.
+ */
+$font-family: tahoma,arial,verdana,sans-serif !default;
+
+$font-size  : 12px !default;
+
+/**
+ * @var {string} $base-gradient
+ * The base gradient to be used throughout the theme.
+ */
+$base-gradient: 'matte' !default;
+
+/**
+ * @var {color} $base-color
+ * The base color to be used throughout the theme.
+ */
+$base-color   : #C0D4ED !default;
+$neutral-color: #eeeeee !default;
+
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+$include-missing-images: true !default;
+
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules
+ */
+$include-ie: true !default;
+
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+$include-ff: true !default;
+
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+$include-chrome: true !default;
+
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+$include-safari: true !default;
+
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+$include-opera: true !default;
+
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+$include-webkit: true !default;
+
+$supports-border-radius: true !default;
+$supports-gradients: true !default;
+
+/**
+ * @var {boolean} $compile-all
+ * True to copile all CSS, even if above include rules are false
+ */
+$compile-all: true !default;
+
+/**
+ * @var {boolean} $scope-reset-css
+ * True to scope the reset CSS within the $prefix variable.
+ */
+$scope-reset-css: false !default;
+
+/**
+ * @var {color} $css-shadow-background-color
+ * The base color for CSS shadows
+ */
+$css-shadow-background-color: #ccc !default;
+
+
+/**
+ * @var {color} $include-shadow-images
+ * True to include all shadow images.
+ */
+$include-shadow-images: true !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_focus.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_focus.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_focus.scss	(revision 18277)
@@ -0,0 +1,3 @@
+$focus-frame-color: rgb(21, 66, 139) !default;
+$focus-frame-style: solid !default;
+$focus-frame-width: 2px !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_form.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_form.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_form.scss	(revision 18277)
@@ -0,0 +1,204 @@
+/**
+ * @class Ext.form.field.Base
+ */
+
+/**
+ * @var {measurement} $form-field-height
+ * Height for form fields.
+ */
+$form-field-height: 22px !default;
+/**
+ * @var {measurement} $form-toolbar-field-height
+ * Height for form fields in toolbar.
+ */
+$form-toolbar-field-height: 20px !default;
+/**
+ * @var {measurement} $form-error-icon-width
+ * Width for form error icons.
+ */
+$form-error-icon-width: 18px !default;
+
+//padding
+
+/**
+ * @var {measurement} $form-field-padding
+ * Padding around form fields.
+ */
+$form-field-padding: 1px 3px !default;
+
+//fonts
+
+/**
+ * @var {measurement} $form-field-font-size
+ * Font size for form fields.
+ */
+$form-field-font-size: $font-size !default;
+
+/**
+ * @var {font-family} $form-field-font-family
+ * Font family for form fields.
+ */
+$form-field-font-family: $font-family !default;
+/**
+ * @var {font-weight} $form-field-font-weight
+ * Font weight for form fields.
+ */
+$form-field-font-weight: normal !default;
+/**
+ * @var {font} $form-field-font
+ * Font for form fields.
+ */
+$form-field-font: $form-field-font-weight $form-field-font-size $form-field-font-family !default;
+/**
+ * @var {color} $form-field-color
+ * Text color for form fields.
+ */
+$form-field-color: #000 !default;
+
+/**
+ * @var {color} $form-field-empty-color
+ * Text color for empty form fields.
+ */
+$form-field-empty-color: gray !default;
+
+//border
+
+/**
+ * @var {color} $form-field-border-color
+ * Border color for form fields.
+ */
+$form-field-border-color: #B5B8C8 !default;
+/**
+ * @var {measurement} $form-field-border-width
+ * Border width for form fields.
+ */
+$form-field-border-width: 1px !default;
+
+/**
+ * @var {color} $form-field-focus-border-color
+ * Border color for focused form fields.
+ */
+$form-field-focus-border-color: adjust-color($base-color, $hue: -4.322deg, $saturation: -1.065%, $lightness: -16.863%) !default;
+/**
+ * @var {color} $form-field-invalid-border-color
+ * Border color for invalid form fields.
+ */
+$form-field-invalid-border-color: #c30 !default;
+
+//background
+
+/**
+ * @var {color} $form-field-background-color
+ * Background color for form fields.
+ */
+$form-field-background-color: #fff !default;
+/**
+ * @var {string} $form-field-background-image
+ * Background image for form fields.
+ */
+$form-field-background-image: 'form/text-bg.gif' !default;
+
+/**
+ * @var {color} $form-field-invalid-background-color
+ * Background color for invalid form fields.
+ */
+$form-field-invalid-background-color: #fff !default;
+/**
+ * @var {string} $form-field-invalid-background-image
+ * Background image for invalid form fields.
+ */
+$form-field-invalid-background-image: 'grid/invalid_line.gif' !default;
+/**
+ * @var {background-repeat} $form-field-invalid-background-repeat
+ * Background repeat for invalid form fields.
+ */
+$form-field-invalid-background-repeat: repeat-x !default;
+/**
+ * @var {background-position} $form-field-invalid-background-position
+ * Background position for invalid form fields.
+ */
+$form-field-invalid-background-position: bottom !default;
+
+/**
+ * @class Ext.form.field.TextArea
+ */
+$form-textarea-padding: 2px 3px !default;
+
+/**
+ * @class Ext.form.Label
+ */
+$form-label-font-weight: normal !default;
+$form-label-font-size: $font-size !default;
+$form-label-font-family: $font-family !default;
+$form-label-font: $form-label-font-weight $form-label-font-size $form-label-font-family !default;
+
+/**
+ * @class Ext.form.field.Checkbox
+ */
+$form-checkbox-image: 'form/checkbox.gif' !default;
+$form-checkbox-size: 13px !default;
+
+/**
+ * @class Ext.form.field.Radio
+ */
+$form-radio-image: 'form/radio.gif' !default;
+
+
+/* Error messages */
+
+//icons
+$form-exclamation-icon: 'form/exclamation.gif' !default;
+
+//font
+$form-error-msg-color: #c0272b !default;
+$form-error-msg-font-weight: normal !default;
+$form-error-msg-font-size: ceil($font-size * .9) !default;
+$form-error-msg-font-family: $font-family !default;
+$form-error-msg-font: $form-error-msg-font-weight $form-error-msg-font-size $form-error-msg-font-family !default;
+$form-error-msg-line-height: 16px !default;
+
+/**
+ * @class Ext.form.field.Trigger
+ */
+$form-trigger-width: 17px !default;
+$form-trigger-height: $form-field-height !default;
+$form-toolbar-trigger-height: $form-toolbar-field-height !default;
+
+$form-trigger-border-bottom-width: 1px !default;
+$form-trigger-border-bottom-style: solid !default;
+$form-trigger-border-bottom-color: $form-field-border-color !default;
+$form-trigger-border-bottom: $form-trigger-border-bottom-width $form-trigger-border-bottom-style $form-trigger-border-bottom-color !default;
+
+$form-trigger-border-bottom-color-over: adjust-color($base-color, $hue: -4.322deg, $saturation: -1.065%, $lightness: -16.863%) !default;
+$form-trigger-border-bottom-color-focus: adjust-color($base-color, $hue: -4.322deg, $saturation: -1.065%, $lightness: -16.863%) !default;
+$form-trigger-border-bottom-color-focus-over: null !default;
+$form-trigger-border-bottom-color-pressed: null !default;
+
+$form-trigger-icon-background-position: 7px 6px !default;
+
+/**
+ * @class Ext.form.FieldSet
+ */
+$fieldset-header-font-size: ceil($font-size * .9) !default;
+$fieldset-header-font-weight: bold !default;
+$fieldset-header-font-family: $font-family !default;
+$fieldset-header-line-height: 14px !default;
+$fieldset-header-font: #{$fieldset-header-font-size}/#{$fieldset-header-line-height} $fieldset-header-font-weight $fieldset-header-font-family !default;
+$fieldset-header-color: adjust-color($base-color, $hue: 3.785deg, $saturation: 18.194%, $lightness: -52.745%) !default;
+
+$fieldset-border-width: 1px !default;
+$fieldset-border-style: solid !default;
+$fieldset-border-color: $form-field-border-color !default;
+$fieldset-border: $fieldset-border-width $fieldset-border-style $fieldset-border-color !default;
+
+$fieldset-padding: 10px !default;
+$fieldset-header-padding: 0 3px 1px !default;
+
+/**
+ * @class Ext.slider.Multi
+ */
+$horizontal-slider-thumb-width: 14px !default;
+$horizontal-slider-thumb-height: 15px !default;
+
+$vertical-slider-thumb-width: 15px !default;
+$vertical-slider-thumb-height: 14px !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_grid.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_grid.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_grid.scss	(revision 18277)
@@ -0,0 +1,110 @@
+// ===============================
+// ========= GRID BASE ===========
+// ===============================
+$grid-base-color: $base-color !default;
+
+// ===============================
+// ========= GRID HEADER =========
+// ===============================
+$grid-header-background-color: adjust-color($neutral-color, $hue: 0deg, $saturation: 0%, $lightness: -16.078%) !default;
+$grid-header-background-gradient: 'grid-header' !default;
+$grid-header-border-color: $neutral-color !default;
+$grid-header-over-border-color: adjust-color($base-color, $hue: -0.175deg, $saturation: 25.296%, $lightness: -2.549%) !default;
+$grid-header-over-background-color: $grid-header-over-border-color !default;
+$grid-header-over-background-gradient: 'grid-header-over' !default;
+$grid-header-background-color: $grid-base-color !default;
+$grid-header-line-height: 15px !default;
+$grid-header-padding: 3px 6px 4px !default;
+$grid-header-trigger-height: 22px !default;
+$grid-header-trigger-width: 14px !default;
+$grid-header-color: null !default;
+
+// ===============================
+// ========= GRID ROWS ===========
+// ===============================
+$grid-row-height: 20px !default;
+$grid-row-cell-color: null !default;
+$grid-row-cell-font-size: ceil($font-size * .9) !default;
+$grid-row-cell-line-height: $grid-row-cell-font-size + 4 !default;
+$grid-row-cell-font: normal #{$grid-row-cell-font-size}/#{$grid-row-cell-line-height} $font-family !default;
+//$grid-row-padding: 0 1px !default;
+
+//row wrap
+$grid-row-wrap-border-color: #ededed !default;
+$grid-row-wrap-border-width: 1px 0 !default;
+$grid-row-wrap-border-style: solid !default;
+
+//row body
+$grid-row-body-font: normal 11px/13px $font-family !default;
+$grid-row-body-padding: 4px !default;
+
+//row cell
+$grid-row-cell-background: #fff !default;
+$grid-row-cell-border-color: $grid-row-wrap-border-color !default;
+$grid-row-cell-border-style: solid !default;
+$grid-row-cell-border-width: 1px 0 !default;
+
+//row cell alt
+$grid-row-cell-alt-background: darken($grid-row-cell-background, 2) !default;
+
+//row cell over
+$grid-row-cell-over-border-color: adjust-color($neutral-color, $hue: 0deg, $saturation: 0%, $lightness: -6.667%) !default;
+$grid-row-cell-over-background-color: adjust-color($neutral-color, $hue: 0deg, $saturation: 0%, $lightness: 0.392%) !default;
+$grid-row-cell-over-background-gradient: 'grid-row-over' !default;
+
+//row cell selected
+$grid-row-cell-selected-border-style: dotted !default;
+$grid-row-cell-selected-border-color: adjust-color($base-color, $hue: 6.952deg, $saturation: 5.848%, $lightness: -6.471%) !default;
+$grid-row-cell-selected-background-color: adjust-color($base-color, $hue: 3.188deg, $saturation: 0.542%, $lightness: 7.843%) !default;
+
+//row cell focus
+$grid-row-cell-focus-border-color: adjust-color($neutral-color, $hue: 0deg, $saturation: 0%, $lightness: -6.667%) !default;
+$grid-row-cell-focus-background-color: adjust-color($neutral-color, $hue: 0deg, $saturation: 0%, $lightness: 0.392%) !default;
+$grid-row-cell-focus-background-gradient: 'grid-row-over' !default;
+
+//standard cells
+$grid-cell-inner-padding-top: 2px !default;
+$grid-cell-inner-padding-horizontal: 6px !default;
+$grid-cell-inner-padding-bottom: 3px !default;
+
+//special cell
+$grid-cell-special-over-background-color: adjust-color($base-color, $hue: -0.476deg, $saturation: 25.214%, $lightness: 5.686%) !default;
+
+//cell with col lines
+$grid-cell-with-col-lines-border-color: adjust-color($base-color, $hue: 0deg, $saturation: -55.556%, $lightness: -2.549%) !default;
+
+// ===============================
+// ======== GROUPED GRID =========
+// ===============================
+$grid-grouped-header-background-color: #fff !default;
+$grid-grouped-header-border-width: 0 0 2px 0 !default;
+$grid-grouped-header-border-style: solid !default;
+$grid-grouped-header-border-color: adjust-color($base-color, $hue: 0.844deg, $saturation: 7.644%, $lightness: -8.627%) !default;
+$grid-grouped-header-padding: 6px 0 0 0 !default;
+
+$grid-grouped-title-color: adjust-color($base-color, $hue: 0.952deg, $saturation: -6.718%, $lightness: -41.961%) !default;
+$grid-grouped-title-font: bold ceil($font-size * .9) $font-family !default;
+$grid-grouped-title-padding: 4px 4px 4px 17px !default;
+
+// ===============================
+// ========= EDITOR ==========
+// ===============================
+$grid-editor-line-height: $grid-row-height - 5 !default;
+$grid-editor-font: normal #{$grid-row-cell-font-size}/#{$grid-editor-line-height} $font-family !default;
+
+// ===============================
+// ========= ROW EDITOR ==========
+// ===============================
+$grid-row-editor-background-color: adjust-color($base-color, $hue: 1deg, $saturation: 11%, $lightness: 11%) !default;
+$grid-row-editor-border-color: $panel-border-color !default;
+$grid-row-editor-border-width: 1px !default;
+$grid-row-editor-border: $grid-row-editor-border-width solid $grid-row-editor-border-color !important !default;
+$grid-row-editor-field-padding-horizontal: 2px !default;
+$grid-row-editor-cb-wrap-padding-top: 0 !default;
+$grid-row-editor-checkbox-margin-left: -4px !default;
+
+// ===============================
+// ========= CELL EDITOR =========
+// ===============================
+$grid-cell-editor-field-padding-horizontal: 4px !default;
+$grid-cell-editor-checkbox-padding-top: 3px !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_htmleditor.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_htmleditor.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_htmleditor.scss	(revision 18277)
@@ -0,0 +1,2 @@
+$html-editor-border-color: $form-field-border-color !default;
+$html-editor-background-color: $form-field-background-color !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_layout.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_layout.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_layout.scss	(revision 18277)
@@ -0,0 +1,5 @@
+$border-layout-ct-background: adjust-color($base-color, $hue: 3.188deg, $saturation: 0.542%, $lightness: 7.843%) !default;
+
+$accordion-header-color: #000 !default;
+$accordion-header-background-color: adjust-color($base-color, $saturation: 13%, $lightness: 7%) !default;
+$accordion-header-background-gradient: null !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_loadmask.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_loadmask.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_loadmask.scss	(revision 18277)
@@ -0,0 +1,17 @@
+$loadmask-opacity: 0.5 !default;
+$loadmask-backgorund: #ccc !default;
+
+$loadmask-msg-padding: 2px !default;
+$loadmask-msg-border-color: $panel-header-border-color !default;
+$loadmask-msg-background-color: $panel-base-color !default;
+$loadmask-msg-background-gradient: null !default;
+
+$loadmask-msg-inner-padding: 5px 10px 5px 25px !default;
+$loadmask-msg-inner-icon: 'grid/loading.gif' !default;
+$loadmask-msg-inner-border-color: adjust-color($base-color, $hue: 1.111deg, $saturation: -14.017%, $lightness: -9.608%) !default;
+$loadmask-msg-inner-background-color: #eee !default;
+$loadmask-msg-inner-color: #222 !default;
+$loadmask-msg-inner-font-size: ceil($font-size * .9) !default; //11px
+$loadmask-msg-inner-font-weight: normal !default;
+$loadmask-msg-inner-font-family: $font-family !default;
+$loadmask-msg-inner-font: $loadmask-msg-inner-font-weight $loadmask-msg-inner-font-size $loadmask-msg-inner-font-family !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_menu.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_menu.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_menu.scss	(revision 18277)
@@ -0,0 +1,23 @@
+//backgrounds
+$menu-background-color: #F0F0F0 !default;
+$menu-item-active-background-image: 'menu/menu-item-active-bg.gif' !default;
+$menu-item-active-background-color: adjust-color($base-color, $saturation: 25.397%, $lightness: 7.647%) !default;
+
+//border
+$menu-item-active-border-color: adjust-color($base-color, $saturation: 23%, $lightness: -3%) !default;
+$menu-separator-border-color: #E0E0E0 !default;
+$menu-separator-background-color: #FFF !default;
+
+//sizes
+$menu-item-indent: 27px !default;
+$menu-padding: 2px !default;
+$menu-link-padding: 6px 2px 3px 32px !default;
+
+//text
+$menu-text-color: #222 !default;
+
+//icons
+$menu-icon-arrow: 'menu/menu-parent.gif' !default;
+$menu-icon-checked: 'menu/checked.gif' !default;
+$menu-icon-group-checked: 'menu/group-checked.gif' !default;
+$menu-icon-unchecked: 'menu/unchecked.gif' !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_panel.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_panel.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_panel.scss	(revision 18277)
@@ -0,0 +1,70 @@
+// TODO: Change value to $include-default-uis !default;
+$include-panel-uis: true;
+
+// ===============================
+// ========= BASE PANEL ==========
+// ===============================
+$panel-border-radius: null !default;
+$panel-border-width: 1px !default;
+$panel-base-color: adjust-color($base-color, $hue: 0deg, $saturation: 0.542%, $lightness: 7.843%) !default; //#DFE8F6
+$panel-border-color: adjust-color($base-color, $hue: 0deg, $saturation: 7.644%, $lightness: -8.627%) !default;
+
+// ===============================
+// ========= PANEL BODY ==========
+// ===============================
+$panel-body-border-style: solid !default;
+$panel-body-background-color: #fff !default;
+$panel-body-color: #000 !default;
+$panel-body-border-color: $panel-border-color !default;
+$panel-body-font-size: 12px !default;
+
+// ===============================
+// ======== PANEL TOOLS ==========
+// ===============================
+$tool-size: 15px !default;
+
+// ===============================
+// ======== PANEL HEADER =========
+// ===============================
+$panel-header-border-width: 1px !default;
+$panel-header-border-style: solid !default;
+$panel-header-inner-border: true !default;
+$panel-header-inner-border-width: 1px 0 0 !default;
+
+//padding
+$panel-header-padding: 3px 5px 4px !default;
+$panel-header-vertical-padding: 5px 4px !default;
+
+//fonts
+$panel-header-font-size: ceil($font-size * .9) !default; //11px
+$panel-header-line-height: 17px !default;
+$panel-header-font-weight: bold !default;
+$panel-header-font-family: $font-family !default;
+
+//icon
+$panel-header-icon-width: 16px !default;
+$panel-header-icon-height: 16px !default;
+
+//background
+$panel-header-background-gradient: 'panel-header' !default;
+
+// UI defaults
+$panel-header-border-color: $panel-border-color !default;
+$panel-header-inner-border-color: adjust-color($panel-base-color, $hue: 0deg, $saturation: -6.098%, $lightness: 4.902%) !default;
+$panel-header-color: adjust-color($panel-base-color, $hue: 0deg, $saturation: 38.347%, $lightness: -63.725%) !default;
+$panel-header-background-color: adjust-color($panel-base-color, $hue: 0deg, $saturation: 6.402%, $lightness: -4.51%) !default;
+
+// ===============================
+// ======== FRAMED PANEL =========
+// ===============================
+$frame-base-color: $panel-base-color !default;
+
+//border
+$panel-frame-border-radius: 4px !default;
+$panel-frame-border-width: 1px !default;
+$panel-frame-border-style: solid !default;
+$panel-frame-padding: 4px !default;
+
+// UI defaults
+$panel-frame-background-color: $frame-base-color !default;
+$panel-frame-border-color: $panel-border-color !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_pickers.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_pickers.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_pickers.scss	(revision 18277)
@@ -0,0 +1,66 @@
+// color picker
+$colorpicker-item-border-color: #aca899 !default;
+$colorpicker-over-border-color: #8bb8f3 !default;
+$colorpicker-over-background-color: #deecfd !default;
+
+// date picker
+$datepicker-base-color: $base-color !default;
+
+$datepicker-border-color: adjust-color($datepicker-base-color, $hue: 5.926deg, $saturation: 4.444%, $lightness: -57.647%) !default; //#1b376c
+$datepicker-border-width: 1px !default;
+$datepicker-border-style: solid !default;
+$datepicker-border: $datepicker-border-width $datepicker-border-style $datepicker-border-color !default;
+$datepicker-background-color: #ffffff !default;
+
+$datepicker-next-image: 'shared/right-btn.gif' !default;
+$datepicker-prev-image: 'shared/left-btn.gif' !default;
+$datepicker-month-arrow-image: 'button/s-arrow-light.gif' !default;
+$datepicker-tool-sprite-image: 'tools/tool-sprites.gif' !default;
+
+$datepicker-header-background-color: adjust-color($datepicker-base-color, $hue: 5.768deg, $saturation: 0.419%, $lightness: -52.941%) !default; //#23427c
+$datepicker-header-background-gradient: matte !default;
+
+$datepicker-monthpicker-color: #fff !default;
+
+$datepicker-th-color: adjust-color($datepicker-base-color, $hue: 5.586deg, $saturation: -4.167%, $lightness: -55.882%) !default; //#233d6d
+$datepicker-th-font-family: $font-family !default;
+$datepicker-th-font-size: 10px !default;
+$datepicker-th-font-weight: normal !default;
+$datepicker-th-font: $datepicker-th-font-weight $datepicker-th-font-size $font-family !default;
+$datepicker-th-background-color: adjust-color($datepicker-base-color, $hue: -1.19deg, $saturation: 22.222%, $lightness: 8.824%) !default; //#dfecfb
+$datepicker-th-background-gradient: matte !default;
+$datepicker-th-border-bottom-color: darken($datepicker-th-background-color, 10) !default;
+$datepicker-th-text-align: right !default;
+
+$datepicker-td-height: 17px !default;
+
+//item
+$datepicker-item-color: #000 !default;
+$datepicker-item-border-width: 1px !default;
+$datepicker-item-border-style: solid !default;
+$datepicker-item-border-color: #fff !default;
+$datepicker-item-border: $datepicker-item-border-width $datepicker-item-border-style $datepicker-item-border-color !default;
+
+$datepicker-item-hover-background-color: adjust-color($datepicker-base-color, $hue: -0.606deg, $saturation: 38.73%, $lightness: 9.02%) !default; //#ddecfe
+
+$datepicker-today-item-border-color: darkred !default;
+
+$datepicker-selected-item-border-width: 1px !default;
+$datepicker-selected-item-border-style: solid !default;
+$datepicker-selected-item-border-color: adjust-color($datepicker-base-color, $hue: 0.853deg, $saturation: 5.008%, $lightness: -11.961%) !default; //#8db2e3
+$datepicker-selected-item-border: $datepicker-selected-item-border-width $datepicker-selected-item-border-style $datepicker-selected-item-border-color !default;
+$datepicker-selected-item-background-color: adjust-color($datepicker-base-color, $hue: 0.267deg, $saturation: -4.535%, $lightness: 6.275%) !default;
+
+$datepicker-footer-background-color: $datepicker-th-background-color !default;
+$datepicker-footer-background-gradient: color_stops(adjust-color($datepicker-base-color, $hue: 0.58deg, $saturation: -2.067%, $lightness: 7.451%), adjust-color($datepicker-base-color, $hue: -0.43deg, $saturation: -4.736%, $lightness: 3.922%) 49%, adjust-color($datepicker-base-color, $hue: -0.175deg, $saturation: -4.204%, $lightness: 1.373%) 51%, adjust-color($datepicker-base-color, $hue: 0.952deg, $saturation: -4.831%, $lightness: 2.353%)) !default;
+$datepicker-footer-border-top-color: $datepicker-th-border-bottom-color !default; //a3bad9
+
+$datepicker-monthpicker-height: 167px !default;
+
+$datepicker-monthpicker-item-color: adjust-color($datepicker-base-color, $hue: 3.785deg, $saturation: 18.194%, $lightness: -52.745%) !default; //#15428B
+$datepicker-monthpicker-item-border: $datepicker-item-border !default;
+
+$datepicker-monthpicker-item-hover-background-color: $datepicker-item-hover-background-color !default;
+
+$datepicker-monthpicker-item-selected-background-color: $datepicker-footer-background-color !default;
+$datepicker-monthpicker-item-selected-border: $datepicker-selected-item-border !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_progress-bar.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_progress-bar.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_progress-bar.scss	(revision 18277)
@@ -0,0 +1,21 @@
+$progress-bar-base-color: $base-color !default;
+
+$progress-height: 20px !default;
+
+//borders
+$progress-border-color: adjust-color($progress-bar-base-color, $hue: 0deg, $saturation: -3.08%, $lightness: -23.725%) !default;
+$progress-border-width: 1px !default;
+$progress-border-radius: 0 !default;
+
+//backgrounds
+$progress-background-color: adjust-color($progress-bar-base-color, $hue: 0deg, $saturation: -11.37%, $lightness: 7.451%) !default;
+
+//bar
+$progress-bar-background-color: adjust-color($progress-bar-base-color, $hue: 0deg, $saturation: 8.187%, $lightness: -17.647%) !default;
+
+//text
+$progress-text-color-front: #fff !default;
+$progress-text-color-back: adjust-color($progress-bar-base-color, $hue: 0deg, $saturation: -10.895%, $lightness: -43.725%) !default;
+$progress-text-text-align: center !default;
+$progress-text-font-size: ceil($font-size * .9) !default;
+$progress-text-font-weight: bold !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_qtip.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_qtip.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_qtip.scss	(revision 18277)
@@ -0,0 +1,29 @@
+$tip-base-color: adjust-color($base-color, $hue: 2.121deg, $saturation: 44.444%, $lightness: 11.569%) !default;
+
+//background
+$tip-background-color: $tip-base-color !default;
+$tip-background-gradient: null !default;
+
+//text
+$tip-body-color      : adjust-color($neutral-color, $hue: 0deg, $saturation: 0%, $lightness: -66.667%) !default;
+$tip-body-font-size  : ceil($font-size * .9) !default;
+$tip-body-font-weight: normal !default;
+$tip-body-padding: 3px !default;
+$tip-body-link-color: darken($tip-body-color, 10%) !default;
+
+$tip-header-color      : $tip-body-color !default;
+$tip-header-font-size  : $tip-body-font-size !default;
+$tip-header-font-weight: bold !default;
+$tip-header-padding    : 3px 3px 0 !default;  
+
+//borders
+$tip-border-color: adjust-color($tip-base-color, $hue: -1.705deg, $saturation: -60.494%, $lightness: -27.451%) !default;
+$tip-border-width: 1px !default;
+$tip-border-radius: 3px !default;
+
+//error tips
+$tip-error-inner-border-color: #d87166 !default;
+$tip-error-border-color: #a1311f !default;
+$tip-error-border-radius: 5px !default;
+$tip-error-border-width: 1px !default;
+$tip-error-background-color: #fff !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_tabs.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_tabs.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_tabs.scss	(revision 18277)
@@ -0,0 +1,89 @@
+//color
+$tabbar-base-color: adjust-color($panel-base-color, $hue: 0deg, $saturation: -3.156%, $lightness: -5.294%) !default;
+$tabbar-background-gradient: 'tabbar' !default;
+
+//background
+$tab-base-color: adjust-color($base-color, $hue: 0deg, $saturation: 33.016%, $lightness: 9.02%) !default; //#deecfd
+$tab-base-color-over: adjust-color($tab-base-color, $hue: 0deg, $saturation: 11.429%, $lightness: 2.353%) !default;
+$tab-base-color-active: $tab-base-color !default;
+$tab-base-color-disabled: adjust-color($base-color, $hue: 0deg, $saturation: 15.873%, $lightness: 9.02%) !default; //E1ECFA
+
+$tab-background: $tab-base-color !default;
+$tab-background-over: $tab-base-color-over !default;
+$tab-background-active: $tab-base-color-active !default;
+$tab-background-disabled: $tab-base-color-disabled !default;
+
+$tab-color: adjust-color($tab-base-color, $hue: 0deg, $saturation: -45.589%, $lightness: -48.431%) !default;
+$tab-color-over: $tab-color !default;
+$tab-color-active: adjust-color($tab-color, $hue: 0deg, $saturation: 30.768%, $lightness: -13.333%) !default;
+$tab-color-disabled: #c3b3b3 !default;
+
+$tab-font-size: ceil($font-size * .9) !default; //11px
+$tab-font-size-over: $tab-font-size !default;
+$tab-font-size-active: $tab-font-size !default;
+$tab-font-size-disabled: $tab-font-size !default;
+
+$tab-font-family: $font-family !default;
+$tab-font-family-over: $tab-font-family !default;
+$tab-font-family-active: $tab-font-family !default;
+$tab-font-family-disabled: $tab-font-family !default;
+
+$tab-font-weight: bold !default;
+$tab-font-weight-over: $tab-font-weight !default;
+$tab-font-weight-active: $tab-font-weight !default;
+$tab-font-weight-disabled: $tab-font-weight !default;
+
+$tab-background-gradient: 'tab' !default;
+$tab-background-gradient-over: 'tab-over' !default;
+$tab-background-gradient-active: 'tab-active' !default;
+$tab-background-gradient-disabled: 'tab-disabled' !default;
+
+//borders
+$tab-inner-border: true !default;
+
+$tab-top-border-radius: 4px 4px 0 0 !default;
+$tab-top-border-width: 1px 1px 0 1px !default;
+$tab-top-inner-border-width: 1px 1px 0 !default;
+
+$tab-bottom-border-radius: 0 0 4px 4px !default;
+$tab-bottom-border-width: 0 1px 1px 1px !default;
+$tab-bottom-inner-border-width: 0 1px 1px 1px !default;
+
+$tab-border-color: adjust-color($tab-base-color, $hue:0deg, $saturation: -28.008%, $lightness: -20.98%) !default;
+$tab-border-color-over: $tab-border-color !default;
+$tab-border-color-active: $tab-border-color !default;
+$tab-border-color-disabled: adjust-color($base-color, $hue:0deg, $saturation: 6.349%, $lightness: -0.588%) !default;
+
+$tab-inner-border-color: adjust-color($tab-base-color, $hue: 0deg, $saturation: -8.571%, $lightness: 8.941%) !default;
+
+$tabbar-border-color: $panel-header-border-color !default;
+
+//size
+$tab-height: 20px !default;
+$tab-spacing: 2px !default;
+
+//tab bar body border and padding
+$tabbar-top-body-border-width: 1px 1px 0 !default;
+$tabbar-top-body-padding: 1px 0 3px !default;
+$tabbar-top-plain-body-border-width: 0 !default;
+$tabbar-top-plain-body-padding: 0 0 2px !default;
+$tabbar-bottom-body-border-width: 0 1px 1px !default;
+$tabbar-bottom-body-padding: 3px 0 1px !default;
+$tabbar-bottom-plain-body-border-width: 0 !default;
+$tabbar-bottom-plain-body-padding: 3px 0 0 !default;
+
+//closable tab
+$tab-closable-icon: 'tab/tab-default-close.gif' !default;
+$tab-closable-icon-width: 11px !default;
+$tab-closable-icon-height: 11px !default;
+$tab-closable-icon-top: 2px !default;
+$tab-closable-icon-right: 2px !default;
+$nbr-tab-closable-icon-top: 0px !default;
+$nbr-tab-closable-icon-right: 0px !default;
+
+//tab bar strip
+$tabbar-strip-height: 3px !default;
+$tabbar-strip-border-color: $panel-header-border-color !default;
+$tabbar-strip-background-color: $tab-base-color !default;
+$tabbar-top-strip-border-width: 1px 1px 0 !default;
+$tabbar-bottom-strip-border-width: 0 1px 1px !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_toolbar.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_toolbar.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_toolbar.scss	(revision 18277)
@@ -0,0 +1,30 @@
+$toolbar-font-size: ceil($font-size * .9) !default;
+
+$toolbar-background-color: adjust-color($base-color, $hue: -1.333deg, $saturation: -3.831%, $lightness: 4.51%) !default;
+$toolbar-background-gradient: color_stops(lighten($toolbar-background-color, 3), $toolbar-background-color) !default;
+$toolbar-inner-border-width: 1px 0px 0px !default;
+$toolbar-inner-border-color: lighten($toolbar-background-color, 5%) !default;
+
+//margins
+$toolbar-horizontal-spacing: 2px !default;
+$toolbar-vertical-spacing: 2px !default;
+$toolbar-footer-horizontal-spacing: 6px !default;
+$toolbar-footer-vertical-spacing: 2px !default;
+
+//border
+$toolbar-border-color: $panel-body-border-color !default;
+
+//spacer
+$toolbar-spacer-width: 2px !default;
+
+//separator
+$toolbar-separator-color: adjust-color($base-color, $hue: -1deg, $saturation: 100%, $lightness: -4.3%) !default;
+$toolbar-separator-highlight-color: #fff !default;
+
+//text
+$toolbar-text-font-family: $font-family !default;
+$toolbar-text-font-size: ceil($font-size * .9) !default; //11px
+$toolbar-text-font-weight: normal !default;
+$toolbar-text-color: mix($mix-color, #000, 30) !default;
+$toolbar-text-padding: 3px 4px 0 4px !default;
+$toolbar-text-line-height: 16px !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_tree.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_tree.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_tree.scss	(revision 18277)
@@ -0,0 +1,7 @@
+$tree-elbow-height: 20px !default;
+$tree-elbow-width: 16px !default;
+$tree-checkbox-margin-top: 4px !default;
+$tree-checkbox-margin-right: 3px !default;
+$tree-icon-margin-top: 2px !default;
+$tree-icon-margin-right: 3px !default;
+$grid-cell-treecolumn-editor-field-padding-horizontal: 1px !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_window.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_window.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/variables/_window.scss	(revision 18277)
@@ -0,0 +1,20 @@
+$window-base-color: $base-color !default;
+
+$window-border-radius: 5px 5px !default;
+$window-border-width: 1px !default;
+$window-border-color: adjust-color($window-base-color, $hue: 0.952deg, $saturation: -32.377%, $lightness: -13.725%) !default;
+$window-inner-border-width: 1px !default;
+$window-inner-border-color: adjust-color($window-base-color, $hue: 2.667deg, $saturation: 9.662%, $lightness: 11.373%) !default;
+$window-background-color: adjust-color($window-base-color, $hue: 0.267deg, $saturation: -21.309%, $lightness: 1.569%) !default;
+
+$window-body-border-width: 1px !default;
+$window-body-border-style: solid !default;
+$window-body-border-color: adjust-color($window-base-color, $hue: 0.844deg, $saturation: 7.644%, $lightness: -8.627%) !default;
+$window-body-background-color: adjust-color($window-base-color, $hue: 3.188deg, $saturation: 0.542%, $lightness: 7.843%) !default;
+$window-body-color: #000 !default;
+
+$window-header-padding: 5px 5px 0 !default;
+$window-header-font-size: ceil($font-size * .9) !default; //11px
+$window-header-line-height: 17px !default;
+$window-header-color: adjust-color($window-base-color, $hue: -2.451deg, $saturation: 38.889%, $lightness: -55.882%) !default;
+$window-header-font-weight: bold !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_boundlist.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_boundlist.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_boundlist.scss	(revision 18277)
@@ -0,0 +1,61 @@
+/**
+ * Creates the base structure of a BoundList.
+ * @member Ext.view.BoundList
+ */
+@mixin extjs-boundlist {
+    .#{$prefix}boundlist {
+        border-width: $boundlist-border-width;
+        border-style: $boundlist-border-style;
+        border-color: $boundlist-border-color;
+        background: $boundlist-background-color;
+
+        .#{$prefix}toolbar {
+            border-width: 1px 0 0 0;
+        }
+    }
+
+    // IE6/7 have issues with lists in strict mode
+    @if $include-ie {
+        .#{$prefix}strict {
+            .#{$prefix}ie6,
+            .#{$prefix}ie7 {
+                .#{$prefix}boundlist-list-ct {
+                    position: relative;
+                }
+            }
+        }
+    }
+
+    .#{$prefix}boundlist-item {
+        padding: $boundlist-item-padding;
+
+        @include no-select;
+
+        cursor: pointer;
+        cursor: hand;
+        position: relative; /*allow hover in IE on empty items*/
+
+        border-width: $boundlist-item-border-width;
+        border-style: $boundlist-item-border-style;
+        border-color: $boundlist-item-border-color;
+    }
+
+    .#{$prefix}boundlist-selected {
+        background: $boundlist-item-selected-background-color;
+        border-color: $boundlist-item-selected-border-color;
+    }
+
+    .#{$prefix}boundlist-item-over {
+        background: $boundlist-item-over-background-color;
+        border-color: $boundlist-item-over-border-color;
+    }
+
+    .#{$prefix}boundlist-floating {
+        border-top-width: 0;
+    }
+
+    .#{$prefix}boundlist-above {
+        border-top-width: 1px;
+        border-bottom-width: 1px;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_btn-group.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_btn-group.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_btn-group.scss	(revision 18277)
@@ -0,0 +1,84 @@
+/**
+ * Creates the base structure of a button group.
+ * @member Ext.container.ButtonGroup
+ */
+@mixin extjs-btn-group {
+    .#{$prefix}btn-group {
+        position: relative;
+        overflow: hidden;
+    }
+
+    .#{$prefix}btn-group-body {
+        position: relative;
+        zoom: 1;
+        padding: $btn-group-padding;
+        .#{$prefix}table-layout-cell {
+            vertical-align: top;
+        }
+    }
+
+    .#{$prefix}btn-group-header-text {
+        white-space: nowrap;
+    }
+
+    @include extjs-btn-group-ui('default');
+}
+
+/**
+ * Creates a visual theme of a button group.
+ * @member Ext.container.ButtonGroup
+ */
+@mixin extjs-btn-group-ui(
+    $ui-label,
+    $ui-base-color: null,
+
+    // background
+    $ui-background-color: $btn-group-background-color,
+
+    // borders
+    $ui-border-color: $btn-group-border-color,
+    $ui-border-width: $btn-group-border-width,
+    $ui-border-radius: $btn-group-border-radius,
+    $ui-inner-border-color: $btn-group-inner-border-color,
+
+    //header
+    $ui-header-background-color: $btn-group-header-background-color,
+    $ui-header-font: $btn-group-header-font,
+    $ui-header-color: $btn-group-header-color
+){
+    @include x-frame(
+        'btn-group',
+        $ui: '#{$ui-label}-framed',
+
+        /* Radius, width, padding and background-color */
+        $border-radius: $ui-border-radius,
+        $border-width: $ui-border-width,
+        $padding: $btn-group-padding,
+        $background-color: $ui-background-color
+    );
+
+    .#{$prefix}btn-group-#{$ui-label}-framed {
+        border-color: $ui-border-color;
+        @include inner-border(
+            $width: $btn-group-inner-border-width,
+            $color: $ui-inner-border-color
+        );
+    }
+
+    .#{$prefix}btn-group-header-#{$ui-label}-framed {
+        margin: $btn-group-header-margin;
+    }
+
+    .#{$prefix}btn-group-header-body-#{$ui-label}-framed {
+        padding: $btn-group-header-padding;
+
+        background: $ui-header-background-color;
+
+        @include border-top-radius($ui-border-radius);
+    }
+
+    .#{$prefix}btn-group-header-text-#{$ui-label}-framed {
+        font: $ui-header-font;
+        color: $ui-header-color;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_button.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_button.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_button.scss	(revision 18277)
@@ -0,0 +1,1026 @@
+/**
+ * Creates the base structure of an Ext.Button
+ * @member Ext.button.Button
+ */
+@mixin extjs-button {
+    .#{$prefix}btn {
+        display: inline-block;
+        zoom: 1;
+        *display: inline;
+        position: relative;
+
+        cursor: pointer;
+        cursor: hand;
+
+        white-space: nowrap;
+
+        vertical-align: middle;
+
+        * {
+            cursor: pointer;
+            cursor: hand;
+        }
+
+        background-repeat: no-repeat;
+
+        em {
+            background-repeat: no-repeat;
+
+            // Styles for an anchor button.
+            a {
+                text-decoration: none;
+                display: block;
+                color: inherit;
+
+                // 100% rather than auto for consistency with the button element
+                width: 100%;
+
+                // This is needed for IE7 in strict mode to ensure that the icon element has the correct opacity on a
+                // disabled link button. It seems only to be needed for buttons that are narrower than their icon
+                // element
+                zoom: 1;
+            }
+        }
+
+        button {
+            // 100% rather than auto so that IE7 renders file upload and date picker buttons correctly
+            width: 100%;
+
+            display: block;
+            margin: 0;
+            padding: 0;
+            border: 0;
+            background: none;
+            outline: 0 none;
+            overflow: hidden;
+            vertical-align: bottom;
+            -webkit-appearance: none;
+
+            &::-moz-focus-inner {
+                border: 0;
+                padding: 0;
+            }
+        }
+
+        .#{$prefix}btn-inner {
+            display: block;
+            white-space: nowrap;
+            background-color: transparent;
+            background-repeat: no-repeat;
+            background-position: left center;
+            overflow: hidden;
+        }
+
+        .#{$prefix}btn-left .#{$prefix}btn-inner {
+            text-align: left;
+        }
+
+        .#{$prefix}btn-center .#{$prefix}btn-inner {
+            text-align: center;
+        }
+
+        .#{$prefix}btn-right .#{$prefix}btn-inner {
+            text-align: right;
+        }
+    }
+
+    .#{$prefix}btn-disabled span {
+        @include opacity(.5);
+
+        .#{$prefix}ie6 &,
+        .#{$prefix}ie7 & {
+            filter:none;
+        }
+    }
+
+    //remove the opacity rule of IE8
+    .#{$prefix}ie7 .#{$prefix}btn-disabled,
+    .#{$prefix}ie8 .#{$prefix}btn-disabled {
+        filter:none;
+    }
+
+    .#{$prefix}ie6 .#{$prefix}btn-disabled,
+    .#{$prefix}ie7 .#{$prefix}btn-disabled,
+    .#{$prefix}ie8 .#{$prefix}btn-disabled {
+        .#{$prefix}btn-icon {
+            @include opacity(.6);
+        }
+    }
+
+    @if $include-ie {
+        /* IE9 shows scrollbars in a button unless this is set  */
+        .#{$prefix}ie9 .#{$prefix}btn button {
+            overflow: visible!important;
+        }
+
+        * html .#{$prefix}ie {
+            .#{$prefix}btn button {
+                width: 1px;
+            }
+        }
+
+        .#{$prefix}ie .#{$prefix}btn button {
+            overflow-x: visible; /*prevents extra horiz space in IE*/
+            vertical-align: baseline; /*IE doesn't like bottom*/
+        }
+
+        .#{$prefix}strict .#{$prefix}ie6,
+        .#{$prefix}strict .#{$prefix}ie7 {
+            .#{$prefix}btn .#{$prefix}frame-mc {
+                height: 100%;
+            }
+        }
+    }
+
+    @if not $supports-border-radius or $compile-all {
+        /* Keep the selector simple ".x-btn .x-frame-mc" is enough to target the center frame of the button table */
+        .#{$prefix}btn {
+            .#{$prefix}frame-mc {
+                vertical-align: middle;
+                white-space: nowrap;
+                cursor: pointer;
+            }
+        }
+
+        /* Only center when all there is is text. Otherwise solo icons get centered. */
+        .#{$prefix}btn-noicon {
+            .#{$prefix}frame-mc {
+                text-align: center;
+            }
+        }
+    }
+
+    .#{$prefix}btn-icon-text-left .#{$prefix}btn-icon {
+        background-position: left center;
+    }
+
+    .#{$prefix}btn-icon-text-right .#{$prefix}btn-icon {
+        background-position: right center;
+    }
+
+    .#{$prefix}btn-icon-text-top .#{$prefix}btn-icon {
+        background-position: center top;
+    }
+
+    .#{$prefix}btn-icon-text-bottom .#{$prefix}btn-icon {
+        background-position: center bottom;
+    }
+
+    .#{$prefix}btn {
+        button, a {
+            position: relative;
+
+            .#{$prefix}btn-icon {
+                position: absolute;
+                background-repeat: no-repeat;
+            }
+        }
+    }
+
+    .#{$prefix}btn-arrow-right {
+        background: transparent no-repeat right center;
+        padding-right: $button-arrow-size;
+
+        .#{$prefix}btn-inner {
+            padding-right: 0 !important;
+        }
+    }
+
+    .#{$prefix}toolbar .#{$prefix}btn-arrow-right {
+        padding-right: $button-toolbar-arrow-size;
+    }
+
+    .#{$prefix}btn-arrow-bottom {
+        background: transparent no-repeat center bottom;
+        padding-bottom: $button-arrow-size;
+    }
+
+    .#{$prefix}btn-arrow {
+        background-image: theme-background-image($theme-name, 'button/arrow.gif');
+        display: block;
+    }
+
+
+    //split buttons
+    .#{$prefix}btn-split-right,
+    .#{$prefix}btn-over .#{$prefix}btn-split-right {
+        background: transparent no-repeat right center;
+        background-image: theme-background-image($theme-name, 'button/s-arrow.gif');
+        padding-right: $button-split-size !important;
+    }
+
+    .#{$prefix}btn-split-bottom,
+    .#{$prefix}btn-over .#{$prefix}btn-split-bottom {
+        background: transparent no-repeat center bottom;
+        background-image: theme-background-image($theme-name, 'button/s-arrow-b.gif');
+        padding-bottom: $button-split-size;
+    }
+
+    .#{$prefix}toolbar .#{$prefix}btn-split-right {
+        background-image: theme-background-image($theme-name, 'button/s-arrow-noline.gif');
+        padding-right: $button-toolbar-split-size !important;
+    }
+
+    .#{$prefix}toolbar .#{$prefix}btn-split-bottom {
+        background-image: theme-background-image($theme-name, 'button/s-arrow-b-noline.gif');
+    }
+
+    .#{$prefix}btn-split {
+        display: block;
+    }
+
+    .#{$prefix}item-disabled,
+    .#{$prefix}item-disabled * {
+        cursor: default;
+    }
+
+    .#{$prefix}cycle-fixed-width .#{$prefix}btn-inner {
+        text-align: inherit;
+    }
+
+    .#{$prefix}btn-over .#{$prefix}btn-split-right { background-image: theme-background-image($theme-name, 'button/s-arrow-o.gif'); }
+    .#{$prefix}btn-over .#{$prefix}btn-split-bottom { background-image: theme-background-image($theme-name, 'button/s-arrow-bo.gif'); }
+
+    @include extjs-button-ui(
+        /* UI + Scale */
+        'default-small',
+
+        $button-small-border-radius,
+        $button-small-border-width,
+
+        $button-default-border-color,
+        $button-default-border-color-over,
+        $button-default-border-color-focus,
+        $button-default-border-color-pressed,
+        $button-default-border-color-disabled,
+
+        $button-small-padding,
+        $button-small-text-padding,
+
+        $button-default-background-color,
+        $button-default-background-color-over,
+        $button-default-background-color-focus,
+        $button-default-background-color-pressed,
+        $button-default-background-color-disabled,
+
+        $button-default-background-gradient,
+        $button-default-background-gradient-over,
+        $button-default-background-gradient-focus,
+        $button-default-background-gradient-pressed,
+        $button-default-background-gradient-disabled,
+
+        $button-default-color,
+        $button-default-color-over,
+        $button-default-color-focus,
+        $button-default-color-pressed,
+        $button-default-color-disabled,
+
+        $button-small-font-size,
+        $button-small-font-size-over,
+        $button-small-font-size-focus,
+        $button-small-font-size-pressed,
+        $button-small-font-size-disabled,
+
+        $button-small-font-weight,
+        $button-small-font-weight-over,
+        $button-small-font-weight-focus,
+        $button-small-font-weight-pressed,
+        $button-small-font-weight-disabled,
+
+        $button-small-font-family,
+        $button-small-font-family-over,
+        $button-small-font-family-focus,
+        $button-small-font-family-pressed,
+        $button-small-font-family-disabled,
+
+        $button-small-icon-size
+    );
+
+    @include extjs-button-ui(
+        'default-medium',
+
+        $button-medium-border-radius,
+        $button-medium-border-width,
+
+        $button-default-border-color,
+        $button-default-border-color-over,
+        $button-default-border-color-focus,
+        $button-default-border-color-pressed,
+        $button-default-border-color-disabled,
+
+        $button-medium-padding,
+        $button-medium-text-padding,
+
+        $button-default-background-color,
+        $button-default-background-color-over,
+        $button-default-background-color-focus,
+        $button-default-background-color-pressed,
+        $button-default-background-color-disabled,
+
+        $button-default-background-gradient,
+        $button-default-background-gradient-over,
+        $button-default-background-gradient-focus,
+        $button-default-background-gradient-pressed,
+        $button-default-background-gradient-disabled,
+
+        $button-default-color,
+        $button-default-color-over,
+        $button-default-color-focus,
+        $button-default-color-pressed,
+        $button-default-color-disabled,
+
+        $button-medium-font-size,
+        $button-medium-font-size-over,
+        $button-medium-font-size-focus,
+        $button-medium-font-size-pressed,
+        $button-medium-font-size-disabled,
+
+        $button-medium-font-weight,
+        $button-medium-font-weight-over,
+        $button-medium-font-weight-focus,
+        $button-medium-font-weight-pressed,
+        $button-medium-font-weight-disabled,
+
+        $button-medium-font-family,
+        $button-medium-font-family-over,
+        $button-medium-font-family-focus,
+        $button-medium-font-family-pressed,
+        $button-medium-font-family-disabled,
+
+        $button-medium-icon-size
+    );
+
+    @include extjs-button-ui(
+        'default-large',
+
+        $button-large-border-radius,
+        $button-large-border-width,
+
+        $button-default-border-color,
+        $button-default-border-color-over,
+        $button-default-border-color-focus,
+        $button-default-border-color-pressed,
+        $button-default-border-color-disabled,
+
+        $button-large-padding,
+        $button-large-text-padding,
+
+        $button-default-background-color,
+        $button-default-background-color-over,
+        $button-default-background-color-focus,
+        $button-default-background-color-pressed,
+        $button-default-background-color-disabled,
+
+        $button-default-background-gradient,
+        $button-default-background-gradient-over,
+        $button-default-background-gradient-focus,
+        $button-default-background-gradient-pressed,
+        $button-default-background-gradient-disabled,
+
+        $button-default-color,
+        $button-default-color-over,
+        $button-default-color-focus,
+        $button-default-color-pressed,
+        $button-default-color-disabled,
+
+        $button-large-font-size,
+        $button-large-font-size-over,
+        $button-large-font-size-focus,
+        $button-large-font-size-pressed,
+        $button-large-font-size-disabled,
+
+        $button-large-font-weight,
+        $button-large-font-weight-over,
+        $button-large-font-weight-focus,
+        $button-large-font-weight-pressed,
+        $button-large-font-weight-disabled,
+
+        $button-large-font-family,
+        $button-large-font-family-over,
+        $button-large-font-family-focus,
+        $button-large-font-family-pressed,
+        $button-large-font-family-disabled,
+
+        $button-large-icon-size
+    );
+
+    @include extjs-button-ui(
+        'default-toolbar-small',
+
+        $button-small-border-radius,
+        $button-small-border-width,
+
+        $button-toolbar-border-color,
+        $button-toolbar-border-color-over,
+        $button-toolbar-border-color-focus,
+        $button-toolbar-border-color-pressed,
+        $button-toolbar-border-color-disabled,
+
+        $button-small-padding,
+        $button-small-text-padding,
+
+        $button-toolbar-background-color,
+        $button-toolbar-background-color-over,
+        $button-toolbar-background-color-focus,
+        $button-toolbar-background-color-pressed,
+        $button-toolbar-background-color-disabled,
+
+        $button-toolbar-background-gradient,
+        $button-toolbar-background-gradient-over,
+        $button-toolbar-background-gradient-focus,
+        $button-toolbar-background-gradient-pressed,
+        $button-toolbar-background-gradient-disabled,
+
+        $button-toolbar-color,
+        $button-toolbar-color-over,
+        $button-toolbar-color-focus,
+        $button-toolbar-color-pressed,
+        $button-toolbar-color-disabled,
+
+        $button-small-font-size,
+        $button-small-font-size-over,
+        $button-small-font-size-focus,
+        $button-small-font-size-pressed,
+        $button-small-font-size-disabled,
+
+        $button-small-font-weight,
+        $button-small-font-weight-over,
+        $button-small-font-weight-focus,
+        $button-small-font-weight-pressed,
+        $button-small-font-weight-disabled,
+
+        $button-small-font-family,
+        $button-small-font-family-over,
+        $button-small-font-family-focus,
+        $button-small-font-family-pressed,
+        $button-small-font-family-disabled,
+
+        $button-small-icon-size
+    );
+
+    @include extjs-button-ui(
+        'default-toolbar-medium',
+
+        $button-medium-border-radius,
+        $button-medium-border-width,
+
+        $button-toolbar-border-color,
+        $button-toolbar-border-color-over,
+        $button-toolbar-border-color-focus,
+        $button-toolbar-border-color-pressed,
+        $button-toolbar-border-color-disabled,
+
+        $button-medium-padding,
+        $button-medium-text-padding,
+
+        $button-toolbar-background-color,
+        $button-toolbar-background-color-over,
+        $button-toolbar-background-color-focus,
+        $button-toolbar-background-color-pressed,
+        $button-toolbar-background-color-disabled,
+
+        $button-toolbar-background-gradient,
+        $button-toolbar-background-gradient-over,
+        $button-toolbar-background-gradient-focus,
+        $button-toolbar-background-gradient-pressed,
+        $button-toolbar-background-gradient-disabled,
+
+        $button-toolbar-color,
+        $button-toolbar-color-over,
+        $button-toolbar-color-focus,
+        $button-toolbar-color-pressed,
+        $button-toolbar-color-disabled,
+
+        $button-medium-font-size,
+        $button-medium-font-size-over,
+        $button-medium-font-size-focus,
+        $button-medium-font-size-pressed,
+        $button-medium-font-size-disabled,
+
+        $button-medium-font-weight,
+        $button-medium-font-weight-over,
+        $button-medium-font-weight-focus,
+        $button-medium-font-weight-pressed,
+        $button-medium-font-weight-disabled,
+
+        $button-medium-font-family,
+        $button-medium-font-family-over,
+        $button-medium-font-family-focus,
+        $button-medium-font-family-pressed,
+        $button-medium-font-family-disabled,
+
+        $button-medium-icon-size
+    );
+
+    @include extjs-button-ui(
+        'default-toolbar-large',
+
+        $button-large-border-radius,
+        $button-large-border-width,
+
+        $button-toolbar-border-color,
+        $button-toolbar-border-color-over,
+        $button-toolbar-border-color-focus,
+        $button-toolbar-border-color-pressed,
+        $button-toolbar-border-color-disabled,
+
+        $button-large-padding,
+        $button-large-text-padding,
+
+        $button-toolbar-background-color,
+        $button-toolbar-background-color-over,
+        $button-toolbar-background-color-focus,
+        $button-toolbar-background-color-pressed,
+        $button-toolbar-background-color-disabled,
+
+        $button-toolbar-background-gradient,
+        $button-toolbar-background-gradient-over,
+        $button-toolbar-background-gradient-focus,
+        $button-toolbar-background-gradient-pressed,
+        $button-toolbar-background-gradient-disabled,
+
+        $button-toolbar-color,
+        $button-toolbar-color-over,
+        $button-toolbar-color-focus,
+        $button-toolbar-color-pressed,
+        $button-toolbar-color-disabled,
+
+        $button-large-font-size,
+        $button-large-font-size-over,
+        $button-large-font-size-focus,
+        $button-large-font-size-pressed,
+        $button-large-font-size-disabled,
+
+        $button-large-font-weight,
+        $button-large-font-weight-over,
+        $button-large-font-weight-focus,
+        $button-large-font-weight-pressed,
+        $button-large-font-weight-disabled,
+
+        $button-large-font-family,
+        $button-large-font-family-over,
+        $button-large-font-family-focus,
+        $button-large-font-family-pressed,
+        $button-large-font-family-disabled,
+
+        $button-large-icon-size
+    );
+
+    .#{$prefix}btn-default-toolbar-small-disabled,
+    .#{$prefix}btn-default-toolbar-medium-disabled,
+    .#{$prefix}btn-default-toolbar-large-disabled {
+        border-color: transparent;
+
+        background-image: none;
+        background: transparent;
+    }
+}
+
+/**
+ * Creates a visual theme of an Ext.Button
+ * @member Ext.button.Button
+ */
+@mixin extjs-button-ui(
+    $ui,
+
+    $border-radius: 0px,
+
+    $border-width: 0px,
+
+    $border-color: null,
+    $border-color-over: null,
+    $border-color-focus: null,
+    $border-color-pressed: null,
+    $border-color-disabled: null,
+
+    $padding: null,
+    $text-padding: null,
+
+    $background-color: null,
+    $background-color-over: null,
+    $background-color-focus: null,
+    $background-color-pressed: null,
+    $background-color-disabled: null,
+
+    $background-gradient: null,
+    $background-gradient-over: null,
+    $background-gradient-focus: null,
+    $background-gradient-pressed: null,
+    $background-gradient-disabled: null,
+
+    $color: null,
+    $color-over: null,
+    $color-focus: null,
+    $color-pressed: null,
+    $color-disabled: null,
+
+    $font-size: null,
+    $font-size-over: null,
+    $font-size-focus: null,
+    $font-size-pressed: null,
+    $font-size-disabled: null,
+
+    $font-weight: null,
+    $font-weight-over: null,
+    $font-weight-focus: null,
+    $font-weight-pressed: null,
+    $font-weight-disabled: null,
+
+    $font-family: null,
+    $font-family-over: null,
+    $font-family-focus: null,
+    $font-family-pressed: null,
+    $font-family-disabled: null,
+
+    $icon-size: null
+) {
+    .#{$prefix}btn-#{$ui} {
+        border-color: $border-color;
+    }
+
+    @include x-frame('btn', $ui, $border-radius, $border-width, $padding, $background-color, $background-gradient, true);
+
+    .#{$prefix}btn-#{$ui} .#{$prefix}btn-inner {
+        font-size: $font-size;
+        font-weight: $font-weight;
+        font-family: $font-family;
+        color: $color;
+        background-repeat: no-repeat;
+        padding: 0 $text-padding;
+    }
+
+    .#{$prefix}btn-#{$ui}-icon,
+    .#{$prefix}btn-#{$ui}-noicon {
+        button,
+        a,
+        .#{$prefix}btn-inner {
+            height: $icon-size;
+            line-height: $icon-size;
+        }
+    }
+
+    //icons
+    .#{$prefix}btn-#{$ui}-icon {
+        button,
+        a {
+            padding: 0;
+        }
+
+        .#{$prefix}btn-inner {
+            /* even though there is no text we set a width and padding as buttons shrink-wrap around this element */
+            width: $icon-size;
+            padding: 0;
+        }
+
+        .#{$prefix}btn-icon {
+            width: $icon-size;
+            height: $icon-size;
+            top: 0;
+            left: 0;
+            bottom: 0;
+            right: 0;
+        }
+    }
+
+    .#{$prefix}btn-#{$ui}-icon-text-left {
+        button,
+        a {
+            height: $icon-size;
+        }
+        .#{$prefix}btn-inner {
+            height: $icon-size;
+            line-height: $icon-size;
+            padding-left: $icon-size + 4px;
+        }
+
+        .#{$prefix}btn-icon {
+            width: $icon-size;
+            height: auto;
+            top: 0;
+            left: 0;
+            bottom: 0;
+            right: auto;
+
+            .#{$prefix}ie6 &,
+            .#{$prefix}quirks & {
+                height: $icon-size;
+            }
+        }
+    }
+
+    .#{$prefix}btn-#{$ui}-icon-text-right {
+        button,
+        a {
+            height: $icon-size;
+        }
+        .#{$prefix}btn-inner {
+            height: $icon-size;
+            line-height: $icon-size;
+            padding-right: $icon-size + 4px !important;
+        }
+
+        .#{$prefix}btn-icon {
+            width: $icon-size;
+            height: auto;
+            top: 0;
+            left: auto;
+            bottom: 0;
+            right: 0;
+
+            .#{$prefix}ie6 &,
+            .#{$prefix}quirks & {
+                height: $icon-size;
+            }
+        }
+    }
+
+    .#{$prefix}btn-#{$ui}-icon-text-top {
+        .#{$prefix}btn-inner {
+            padding-top: $icon-size + 4px;
+        }
+
+        .#{$prefix}btn-icon {
+            width: auto;
+            height: $icon-size;
+            top: 0;
+            left: 0;
+            bottom: auto;
+            right: 0;
+
+            .#{$prefix}ie6 &,
+            .#{$prefix}quirks .#{$prefix}ie & {
+                width: $icon-size;
+            }
+        }
+    }
+
+    .#{$prefix}btn-#{$ui}-icon-text-bottom {
+        .#{$prefix}btn-inner {
+            padding-bottom: $icon-size + 4px;
+        }
+
+        .#{$prefix}btn-icon {
+            width: auto;
+            height: $icon-size;
+            top: auto;
+            left: 0;
+            bottom: 0;
+            right: 0;
+
+            .#{$prefix}ie6 &,
+            .#{$prefix}quirks .#{$prefix}ie & {
+                width: $icon-size;
+            }
+        }
+    }
+
+    .#{$prefix}btn-#{$ui}-over {
+        @if $border-color-over != $border-color {
+            border-color: $border-color-over;
+        }
+        @if $background-color-over != null {
+            @include background-gradient($background-color-over, $background-gradient-over);
+        }
+
+        .#{$prefix}btn-inner {
+            @if $color-over != $color {
+                color: $color-over;
+            }
+            @if $font-weight-over != $font-weight {
+                font-weight: $font-weight-over;
+            }
+            @if $font-size-over != $font-size {
+                font-size: $font-size-over;
+            }
+            @if $font-family-over != $font-family {
+                font-family: $font-family-over;
+            }
+        }
+    }
+
+    .#{$prefix}btn-#{$ui}-focus {
+        @if $border-color-focus != $border-color {
+            border-color: $border-color-focus;
+        }
+        @if $background-color-focus != null {
+            @include background-gradient($background-color-focus, $background-gradient-focus);
+        }
+
+        .#{$prefix}btn-inner {
+            @if $color-focus != $color {
+                color: $color-focus;
+            }
+            @if $font-weight-focus != $font-weight {
+                font-weight: $font-weight-focus;
+            }
+            @if $font-size-focus != $font-size {
+                font-size: $font-size-focus;
+            }
+            @if $font-family-focus != $font-family {
+                font-family: $font-family-focus;
+            }
+        }
+    }
+
+    .#{$prefix}btn-#{$ui}-menu-active,
+    .#{$prefix}btn-#{$ui}-pressed {
+        @if $border-color-pressed != $border-color {
+            border-color: $border-color-pressed;
+        }
+        @if $background-color-pressed != null {
+            @include background-gradient($background-color-pressed, $background-gradient-pressed);
+        }
+
+        .#{$prefix}btn-inner {
+            @if $color-pressed != $color {
+                color: $color-pressed;
+            }
+            @if $font-weight-pressed != $font-weight {
+                font-weight: $font-weight-pressed;
+            }
+            @if $font-size-pressed != $font-size {
+                font-size: $font-size-pressed;
+            }
+            @if $font-family-pressed != $font-family {
+                font-family: $font-family-pressed;
+            }
+        }
+    }
+
+    .#{$prefix}btn-#{$ui}-disabled {
+        @if $border-color-disabled != $border-color {
+            border-color: $border-color-disabled;
+        }
+        @if $background-color-disabled != null {
+            @include background-gradient($background-color-disabled, $background-gradient-disabled);
+        }
+
+        .#{$prefix}btn-inner {
+            @if $color-disabled != $color {
+                color: $color !important;
+            }
+            @if $font-weight-disabled != $font-weight {
+                font-weight: $font-weight-disabled;
+            }
+            @if $font-size-disabled != $font-size {
+                font-size: $font-size-disabled;
+            }
+            @if $font-family-disabled != $font-family {
+                font-family: $font-family-disabled;
+            }
+        }
+    }
+
+    .#{$prefix}ie .#{$prefix}btn-#{$ui}-disabled {
+        .#{$prefix}btn-inner {
+            @if $color-disabled != $color {
+                color: darken($color-disabled, 20) !important;
+            }
+        }
+    }
+
+    .#{$prefix}ie6 .#{$prefix}btn-#{$ui}-disabled {
+        .#{$prefix}btn-inner {
+            @if $color-disabled != $color {
+                color: $color-disabled !important;
+            }
+        }
+    }
+
+    @if not $supports-border-radius or $compile-all {
+        .#{$prefix}nbr {
+            .#{$prefix}btn-#{$ui}-over {
+                .#{$prefix}frame-tl,
+                .#{$prefix}frame-bl,
+                .#{$prefix}frame-tr,
+                .#{$prefix}frame-br,
+                .#{$prefix}frame-tc,
+                .#{$prefix}frame-bc {
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-over-corners.gif');
+                }
+                .#{$prefix}frame-ml,
+                .#{$prefix}frame-mr {
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-over-sides.gif');
+                }
+                .#{$prefix}frame-mc {
+                    background-color: $background-color-over;
+                    @if $background-gradient-over != null {
+                        background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-over-bg.gif');
+                    }
+                }
+            }
+
+            .#{$prefix}btn-#{$ui}-focus {
+                .#{$prefix}frame-tl,
+                .#{$prefix}frame-bl,
+                .#{$prefix}frame-tr,
+                .#{$prefix}frame-br,
+                .#{$prefix}frame-tc,
+                .#{$prefix}frame-bc {
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-focus-corners.gif');
+                }
+                .#{$prefix}frame-ml,
+                .#{$prefix}frame-mr {
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-focus-sides.gif');
+                }
+                .#{$prefix}frame-mc {
+                    background-color: $background-color-focus;
+                    @if $background-gradient-focus != null {
+                        background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-focus-bg.gif');
+                    }
+                }
+            }
+
+            .#{$prefix}btn-#{$ui}-menu-active,
+            .#{$prefix}btn-#{$ui}-pressed {
+                .#{$prefix}frame-tl,
+                .#{$prefix}frame-bl,
+                .#{$prefix}frame-tr,
+                .#{$prefix}frame-br,
+                .#{$prefix}frame-tc,
+                .#{$prefix}frame-bc {
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-pressed-corners.gif');
+                }
+                .#{$prefix}frame-ml,
+                .#{$prefix}frame-mr {
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-pressed-sides.gif');
+                }
+                .#{$prefix}frame-mc {
+                    background-color: $background-color-pressed;
+                    @if $background-gradient-pressed != null {
+                        background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-pressed-bg.gif');
+                    }
+                }
+            }
+
+            .#{$prefix}btn-#{$ui}-disabled {
+                .#{$prefix}frame-tl,
+                .#{$prefix}frame-bl,
+                .#{$prefix}frame-tr,
+                .#{$prefix}frame-br,
+                .#{$prefix}frame-tc,
+                .#{$prefix}frame-bc {
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-disabled-corners.gif');
+                }
+                .#{$prefix}frame-ml,
+                .#{$prefix}frame-mr {
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-disabled-sides.gif');
+                }
+                .#{$prefix}frame-mc {
+                    background-color: $background-color-disabled;
+                    @if $background-gradient-disabled != null {
+                        background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-disabled-bg.gif');
+                    }
+                }
+            }
+        }
+    }
+
+    @if not $supports-gradients or $compile-all {
+        @if $background-gradient != null {
+            .#{$prefix}nlg {
+                .#{$prefix}btn-#{$ui} {
+                    background-repeat: repeat-x;
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-bg.gif');
+                }
+            }
+        }
+
+        @if $background-gradient-over != null {
+            .#{$prefix}nlg {
+                .#{$prefix}btn-#{$ui}-over {
+                    background-repeat: repeat-x;
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-over-bg.gif');
+                }
+            }
+        }
+
+        @if $background-gradient-focus != null {
+            .#{$prefix}nlg {
+                .#{$prefix}btn-#{$ui}-focus {
+                    background-repeat: repeat-x;
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-focus-bg.gif');
+                }
+            }
+        }
+
+        @if $background-gradient-pressed != null {
+            .#{$prefix}nlg {
+                .#{$prefix}btn-#{$ui}-menu-active,
+                .#{$prefix}btn-#{$ui}-pressed {
+                    background-repeat: repeat-x;
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-pressed-bg.gif');
+                }
+            }
+        }
+
+        @if $background-gradient-disabled != null {
+            .#{$prefix}nlg {
+                .#{$prefix}btn-#{$ui}-disabled {
+                    background-repeat: repeat-x;
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-disabled-bg.gif');
+                }
+            }
+        }
+    }
+};
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_colorpicker.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_colorpicker.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_colorpicker.scss	(revision 18277)
@@ -0,0 +1,49 @@
+/**
+ * Creates base structure for Ext.picker.Color
+ * @member Ext.picker.Color
+ */
+@mixin extjs-colorpicker {
+    .#{$prefix}color-picker {
+        width: 144px;
+        height: 90px;
+        cursor: pointer;
+    }
+
+    .#{$prefix}color-picker a {
+        border: 1px solid #fff;
+
+        float: left;
+
+        padding: 2px;
+
+        text-decoration: none;
+
+        -moz-outline: 0 none;
+        outline: 0 none;
+
+        cursor: pointer;
+    }
+
+    .#{$prefix}color-picker a:hover,
+    .#{$prefix}color-picker a.#{$prefix}color-picker-selected {
+        border-color: $colorpicker-over-border-color;
+        background-color: $colorpicker-over-background-color;
+    }
+
+    .#{$prefix}color-picker em {
+        display: block;
+
+        border: 1px solid $colorpicker-item-border-color;
+    }
+
+    .#{$prefix}color-picker em span {
+        cursor: pointer;
+
+        display: block;
+
+        height: 10px;
+        width: 10px;
+
+        line-height: 10px;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_datepicker.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_datepicker.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_datepicker.scss	(revision 18277)
@@ -0,0 +1,424 @@
+/**
+ * Creates the base structure of a date picker.
+ * @member Ext.picker.Date
+ */
+@mixin extjs-datepicker {
+    .#{$prefix}datepicker {
+        border: $datepicker-border;
+
+        background-color: $datepicker-background-color;
+        position: relative;
+
+        a {
+            -moz-outline: 0 none;
+            outline: 0 none;
+
+            color: $datepicker-monthpicker-item-color;
+            text-decoration: none;
+
+            border-width: 0;
+        }
+    }
+
+    .#{$prefix}datepicker-inner,
+    .#{$prefix}datepicker-inner td,
+    .#{$prefix}datepicker-inner th {
+        border-collapse: separate;
+    }
+
+    .#{$prefix}datepicker-header {
+        position: relative;
+
+        height: 26px;
+
+        @if $datepicker-header-background-gradient {
+            @include background-gradient($datepicker-header-background-color, $datepicker-header-background-gradient);
+        } @else {
+            background-color: $datepicker-header-background-color;
+        }
+    }
+
+    .#{$prefix}datepicker-prev,
+    .#{$prefix}datepicker-next {
+        position: absolute;
+        top: 5px;
+
+        width: 18px;
+
+        a {
+            display: block;
+
+            width: 16px;
+            height: 16px;
+
+            background-position: top;
+            background-repeat: no-repeat;
+
+            cursor: pointer;
+
+            text-decoration: none !important;
+
+            @include opacity(.7);
+
+            &:hover {
+                @include opacity(1);
+            }
+        }
+    }
+
+    .#{$prefix}datepicker-next {
+        right: 5px;
+
+        a {
+            background-image: theme-background-image($theme-name, $datepicker-next-image);
+        }
+    }
+
+    .#{$prefix}datepicker-prev {
+        left: 5px;
+
+        a {
+            background-image: theme-background-image($theme-name, $datepicker-prev-image);
+        }
+    }
+
+    .#{$prefix}item-disabled .#{$prefix}datepicker-prev a:hover,
+    .#{$prefix}item-disabled .#{$prefix}datepicker-next a:hover {
+        @include opacity(.6);
+    }
+
+    .#{$prefix}datepicker-month {
+        padding-top: 3px;
+
+        .#{$prefix}btn,
+        button,
+        .#{$prefix}btn-tc,
+        .#{$prefix}btn-tl,
+        .#{$prefix}btn-tr,
+        .#{$prefix}btn-mc,
+        .#{$prefix}btn-ml,
+        .#{$prefix}btn-mr,
+        .#{$prefix}btn-bc,
+        .#{$prefix}btn-bl,
+        .#{$prefix}btn-br {
+            background: transparent !important;
+            border-width: 0 !important;
+        }
+
+        span {
+            color: #fff !important;
+        }
+
+        .#{$prefix}btn-split-right {
+            background-image: theme-background-image($theme-name, $datepicker-month-arrow-image);
+            padding-right: 12px;
+        }
+    }
+
+    .#{$prefix}datepicker-next {
+        text-align: right;
+    }
+
+    .#{$prefix}datepicker-month {
+        //width: 120px;
+        text-align: center;
+
+        button {
+            color: $datepicker-monthpicker-color !important;
+        }
+    }
+
+
+    table.#{$prefix}datepicker-inner {
+        width: 100%;
+        table-layout: fixed;
+
+        th {
+            width: 25px;
+            height: 19px;
+
+            padding: 0;
+
+            color: $datepicker-th-color;
+            font: $datepicker-th-font;
+            text-align: $datepicker-th-text-align;
+
+            border-bottom: 1px solid $datepicker-th-border-bottom-color;
+            border-collapse: separate;
+
+            @if $datepicker-th-background-gradient {
+                @include background-gradient($datepicker-th-background-color, $datepicker-th-background-gradient);
+            } @else {
+                background-color: $datepicker-th-background-color;
+            }
+
+            cursor: default;
+
+            span {
+                display: block;
+                padding-right: 7px;
+            }
+        }
+
+        tr {
+            height: 20px;
+        }
+
+        td {
+            border: $datepicker-border-width $datepicker-border-style;
+            height: $datepicker-td-height;
+            border-color: $datepicker-background-color;
+            text-align: right;
+            padding: 0;
+        }
+
+        a {
+            padding-right: 4px;
+
+            display: block;
+
+            zoom: 1;
+
+            font: normal ceil($font-size * .9) $font-family;
+            color: $datepicker-item-color;
+            text-decoration: none;
+            text-align: right;
+        }
+
+        .#{$prefix}datepicker-active {
+            cursor: pointer;
+            color: black;
+        }
+
+        .#{$prefix}datepicker-selected {
+            a {
+                background: repeat-x left top;
+                background-color: $datepicker-selected-item-background-color;
+                border: 1px solid $datepicker-selected-item-border-color;
+            }
+
+            span {
+                font-weight: bold;
+            }
+        }
+
+        .#{$prefix}datepicker-today {
+            a {
+                border: $datepicker-border-width $datepicker-border-style;
+                border-color: $datepicker-today-item-border-color;
+            }
+        }
+
+        .#{$prefix}datepicker-prevday,
+        .#{$prefix}datepicker-nextday {
+            a {
+                text-decoration: none !important;
+                color: #aaa;
+            }
+        }
+
+        a:hover,
+        .#{$prefix}datepicker-disabled a:hover {
+            text-decoration: none !important;
+
+            color: #000;
+
+            background-color: $datepicker-item-hover-background-color;
+        }
+
+        .#{$prefix}datepicker-disabled a {
+            cursor: default;
+            background-color: #eee;
+            color: #bbb;
+        }
+    }
+
+    .#{$prefix}datepicker-footer,
+    .#{$prefix}monthpicker-buttons {
+        position: relative;
+
+        border-top: $datepicker-border-width $datepicker-border-style $datepicker-footer-border-top-color;
+
+        @if $datepicker-footer-background-gradient {
+            @include background-gradient($datepicker-footer-background-color, $datepicker-footer-background-gradient);
+        } @else {
+            background-color: $datepicker-footer-background-color;
+        }
+
+        text-align: center;
+
+        .#{$prefix}btn {
+            position: relative;
+            margin: 4px;
+        }
+    }
+
+    .#{$prefix}item-disabled .#{$prefix}datepicker-inner a:hover {
+        background: none;
+    }
+
+    // month picker
+    .#{$prefix}datepicker .#{$prefix}monthpicker {
+        position: absolute;
+        left: 0;
+        top: 0;
+    }
+
+
+    .#{$prefix}monthpicker {
+        border: $datepicker-border;
+        background-color: $datepicker-background-color;
+    }
+
+    .#{$prefix}monthpicker-months,
+    .#{$prefix}monthpicker-years {
+        float: left;
+
+        height: $datepicker-monthpicker-height;
+        width: 88px;
+    }
+
+    .#{$prefix}monthpicker-item {
+        float: left;
+
+        margin: 4px 0 5px 0;
+
+        font: normal ceil($font-size * .9) $font-family;
+        text-align: center;
+        vertical-align: middle;
+
+        height: 18px;
+        width: 43px;
+
+        border: 0 none;
+
+        a {
+            display: block;
+
+            margin: 0 5px;
+
+            text-decoration: none;
+
+            color: $datepicker-monthpicker-item-color;
+
+            border: $datepicker-monthpicker-item-border;
+
+            line-height: 17px;
+
+            &:hover {
+                background-color: $datepicker-monthpicker-item-hover-background-color;
+            }
+
+            &.#{$prefix}monthpicker-selected {
+                background-color: $datepicker-monthpicker-item-selected-background-color;
+                border: $datepicker-monthpicker-item-selected-border;
+            }
+        }
+    }
+
+    .#{$prefix}monthpicker-months {
+        border-right: $datepicker-border;
+        width: 87px;
+    }
+
+    .#{$prefix}monthpicker-years .#{$prefix}monthpicker-item {
+        width: 44px;
+    }
+
+    .#{$prefix}monthpicker-yearnav {
+        height: 28px;
+
+        button {
+            background-image: theme-background-image($theme-name, $datepicker-tool-sprite-image);
+            height: 15px;
+            width: 15px;
+            padding: 0;
+            margin: 6px 12px 5px 15px;
+            border: 0;
+            outline: 0 none;
+            &::-moz-focus-inner {
+                border: 0;
+                padding: 0;
+            }
+        }
+    }
+
+    .#{$prefix}monthpicker-yearnav-next {
+        background-position: 0 -120px;
+    }
+
+    .#{$prefix}monthpicker-yearnav-next-over {
+        cursor: pointer;
+        cursor: hand;
+        background-position: -15px -120px;
+    }
+
+    .#{$prefix}monthpicker-yearnav-prev {
+        background-position: 0 -105px;
+    }
+
+    .#{$prefix}monthpicker-yearnav-prev-over {
+        cursor: pointer;
+        cursor: hand;
+        background-position: -15px -105px;
+    }
+
+    .#{$prefix}monthpicker-small {
+        .#{$prefix}monthpicker-item {
+            margin: 2px 0 2px 0;
+        }
+
+        .#{$prefix}monthpicker-yearnav {
+            height: 23px;
+        }
+
+        .#{$prefix}monthpicker-months, .#{$prefix}monthpicker-years {
+            height: 136px;
+        }
+    }
+
+    @if $include-ie {
+        .#{$prefix}quirks {
+            .#{$prefix}ie7,
+            .#{$prefix}ie8 {
+                .#{$prefix}monthpicker-buttons {
+                    .#{$prefix}btn {
+                        margin-top: 2px;
+                    }
+                }
+            }
+
+            .#{$prefix}monthpicker-small .#{$prefix}monthpicker-yearnav button {
+                margin-top: 3px;
+                margin-bottom: 3px;
+            }
+        }
+
+        .#{$prefix}ie6 .#{$prefix}monthpicker-small .#{$prefix}monthpicker-yearnav button {
+            margin-top: 3px;
+            margin-bottom: 3px;
+        }
+    }
+
+    //nlg support
+    @if not $supports-gradients or $compile-all {
+        .#{$prefix}nlg {
+            @if $datepicker-header-background-gradient != null {
+                .#{$prefix}datepicker-header {
+                    background-image: theme-background-image($theme-name, 'datepicker/datepicker-header-bg.gif');
+                    background-repeat: repeat-x;
+                    background-position: top left;
+                }
+            }
+
+            @if $datepicker-footer-background-gradient != null {
+                .#{$prefix}datepicker-footer,
+                .#{$prefix}monthpicker-buttons {
+                    background-image: theme-background-image($theme-name, 'datepicker/datepicker-footer-bg.gif');
+                    background-repeat: repeat-x;
+                    background-position: top left;
+                }
+            }
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_drawcomponent.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_drawcomponent.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_drawcomponent.scss	(revision 18277)
@@ -0,0 +1,64 @@
+/**
+ * Creates base structure for a Draw Component.
+ * @member Ext.draw.Component
+ */
+@mixin extjs-drawcomponent {
+    .#{$prefix}surface {
+        @include inline-block;
+        overflow: hidden;
+    }
+
+    .rvml {
+        behavior: url(#default#VML);
+    }
+
+    .#{$prefix}surface tspan {
+        @include no-select;
+    }
+
+    .#{$prefix}vml-sprite {
+        position: absolute;
+        left: 0;
+        top: 0;
+        width: 1px;
+        height: 1px;
+    }
+
+    .#{$prefix}vml-group {
+        position: absolute;
+        left: 0;
+        top: 0;
+        width: 1000px;
+        height: 1000px;
+    }
+
+    .#{$prefix}vml-measure-span {
+        position: absolute;
+        left: -9999em;
+        top: -9999em;
+        padding: 0;
+        margin: 0;
+        display: inline;
+    }
+
+    .#{$prefix}vml-base {
+        position: relative;
+        top: 0;
+        left: 0;
+        overflow: hidden;
+        display: inline-block;
+    }
+
+    .#{$prefix}vml-base {
+        position: relative;
+        top: 0;
+        left: 0;
+        overflow: hidden;
+        display: inline-block;
+    }
+
+    svg, vml {
+        overflow: hidden;
+    }
+}
+
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_form.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_form.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_form.scss	(revision 18277)
@@ -0,0 +1,8 @@
+@import 'form/all';
+@import 'form/field';
+@import 'form/fieldset';
+@import 'form/file';
+@import 'form/checkbox';
+@import 'form/checkboxgroup';
+@import 'form/triggerfield';
+@import 'form/htmleditor';
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_grid.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_grid.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_grid.scss	(revision 18277)
@@ -0,0 +1,899 @@
+/**
+ * Creates base structure for a Grid.
+ * @member Ext.grid.Panel
+ */
+@mixin extjs-grid {
+    //main grid view
+    .#{$prefix}panel {
+        .#{$prefix}grid-body {
+            background: $panel-body-background-color;
+            border-color: $panel-body-border-color;
+            border-style: $panel-body-border-style;
+            border-width: 1px;
+            border-top-color: $grid-header-background-color;
+        }
+
+        // Hide using visibility so that its available width can be calculated correctly
+        .#{$prefix}grid-header-ct-hidden {
+            visibility: hidden;
+        }
+    }
+
+    .#{$prefix}grid-empty {
+        padding: 10px;
+        color: gray;
+        font: normal 11px tahoma, arial, helvetica, sans-serif;
+    }
+
+    .#{$prefix}grid-header-hidden .#{$prefix}grid-body {
+        border-top-color: $panel-body-border-color !important;
+    }
+
+    .#{$prefix}grid-view {
+        overflow: hidden;
+
+        position: relative;
+    }
+
+    .#{$prefix}grid-table {
+        table-layout: fixed;
+        border-collapse: separate;
+    }
+
+    // Tree with a default single column is auto width
+    // Override any inline width style set by the widget itself (through its ColumnModel) to force it to be auto width.
+    .#{$prefix}autowidth-table table.#{$prefix}grid-table {
+        table-layout: auto;
+        width: auto!important;
+    }
+
+    .#{$prefix}grid-row .#{$prefix}grid-table {
+        border-collapse: collapse;
+    }
+
+    .#{$prefix}grid-locked .#{$prefix}grid-inner-locked {
+        border-width: 0 1px 0 0 !important;
+        border-style: solid;
+    }
+
+    .#{$prefix}grid-header-ct {
+        cursor: default;
+        zoom: 1;
+        padding: 0;
+        border: 1px solid $panel-body-border-color;
+
+        // Body border provided by headerCt only when in accordion layout.
+        border-bottom-color: $grid-header-background-color;
+
+        @if $supports-gradients or $compile-all {
+            @include background-gradient($grid-header-background-color, $grid-header-background-gradient);
+        }
+    }
+
+    .#{$prefix}accordion-item .#{$prefix}grid-header-ct {
+        border-width: 0 0 1px 0!important;
+    }
+
+    .#{$prefix}column-header {
+        padding: 0;
+        position: absolute;
+        overflow: hidden;
+
+        border-right: 1px solid $grid-header-background-color;
+        border-left: 0 none;
+        border-top: 0 none;
+        border-bottom: 0 none;
+
+        text-shadow: 0 1px 0 rgba(255, 255, 255, .3);
+
+        @if $grid-header-color {
+            color: $grid-header-color;
+        }
+        font: normal ceil($font-size * .9) $font-family;
+
+        @if $supports-gradients or $compile-all {
+            @include background-gradient($grid-header-background-color, $grid-header-background-gradient);
+        }
+    }
+
+    .#{$prefix}group-header {
+        padding: 0;
+        border-left-width: 0;
+    }
+    .#{$prefix}group-sub-header {
+        background: transparent;
+        border-top: 1px solid $grid-header-background-color;
+        border-left-width: 0;
+    }
+
+    .#{$prefix}column-header-inner {
+        zoom: 1;
+        position: relative;
+        white-space: nowrap;
+        line-height: $grid-header-line-height;
+        padding: $grid-header-padding;
+
+        .#{$prefix}column-header-text {
+            white-space: nowrap;
+        }
+    }
+
+    .#{$prefix}column-header-over,
+    .#{$prefix}column-header-sort-ASC,
+    .#{$prefix}column-header-sort-DESC {
+        border-left-color: $grid-header-over-border-color;
+        border-right-color: $grid-header-over-border-color;
+
+        @if $supports-gradients or $compile-all {
+            @include background-gradient($grid-header-over-background-color, $grid-header-over-background-gradient);
+        }
+    }
+
+    @if not $supports-gradients or $compile-all {
+        .#{$prefix}nlg {
+            .#{$prefix}grid-header-ct,
+            .#{$prefix}column-header {
+                background: repeat-x 0 top;
+                background-image: theme-background-image($theme-name, 'grid/column-header-bg.gif');
+            }
+
+            .#{$prefix}column-header-over,
+            .#{$prefix}column-header-sort-ASC,
+            .#{$prefix}column-header-sort-DESC {
+                background: #ebf3fd repeat-x 0 top;
+                background-image: theme-background-image($theme-name, 'grid/column-header-over-bg.gif');
+            }
+        }
+    }
+
+    .#{$prefix}column-header-trigger {
+        display: none;
+        height: 100%;
+        width: $grid-header-trigger-width;
+        background: no-repeat left center;
+        background-color: #c3daf9;
+        background-image: theme-background-image($theme-name, 'grid/grid3-hd-btn.gif');
+        position: absolute;
+        right: 0;
+        top: 0;
+        z-index: 2;
+        cursor: pointer;
+    }
+
+    .#{$prefix}column-header-over, .#{$prefix}column-header-open {
+        .#{$prefix}column-header-trigger {
+            display: block;
+        }
+    }
+
+    .#{$prefix}column-header-align-right {
+        text-align: right;
+
+        .#{$prefix}column-header-text {
+            padding-right: 0.5ex;
+            margin-right: 6px;
+        }
+    }
+    .#{$prefix}column-header-align-center {
+        text-align: center;
+    }
+    .#{$prefix}column-header-align-left {
+        text-align: left;
+    }
+
+    // Sort direction indicator is a background of the text span.
+    .#{$prefix}column-header-sort-ASC .#{$prefix}column-header-text {
+        padding-right: 16px;
+        background: no-repeat right 6px;
+        background-image: theme-background-image($theme-name, 'grid/sort_asc.gif');
+    }
+    .#{$prefix}column-header-sort-DESC .#{$prefix}column-header-text {
+        padding-right: 16px;
+        background: no-repeat right 6px;
+        background-image: theme-background-image($theme-name, 'grid/sort_desc.gif');
+    }
+
+    //grid rows
+    .#{$prefix}grid-row {
+        vertical-align: top;
+        .#{$prefix}grid-cell {
+            @if $grid-row-cell-color {
+                color: $grid-row-cell-color;
+            }
+            font: $grid-row-cell-font;
+            background-color: $grid-row-cell-background;
+            border-color: $grid-row-cell-border-color;
+            border-style: $grid-row-cell-border-style;
+            border-top-color: lighten($grid-row-cell-border-color, 5);
+            border-width: 0;
+        }
+    }
+
+    .#{$prefix}grid-with-row-lines .#{$prefix}grid-cell {
+        border-width: $grid-row-cell-border-width;
+    }
+
+    .#{$prefix}grid-rowwrap-div {
+        border-width: $grid-row-wrap-border-width;
+        border-color: $grid-row-wrap-border-color;
+        border-style: $grid-row-wrap-border-style;
+        border-top-color: lighten($grid-row-wrap-border-color, 5);
+
+        overflow: hidden;
+    }
+
+    .#{$prefix}grid-row-alt .#{$prefix}grid-cell,
+    .#{$prefix}grid-row-alt .#{$prefix}grid-rowwrap-div {
+        background-color: $grid-row-cell-alt-background;
+    }
+
+    .#{$prefix}grid-row-over .#{$prefix}grid-cell,
+    .#{$prefix}grid-row-over .#{$prefix}grid-rowwrap-div {
+        border-color: $grid-row-cell-over-border-color;
+
+        background-color: $grid-row-cell-over-background-color;
+    }
+
+    .#{$prefix}grid-row-focused .#{$prefix}grid-cell,
+    .#{$prefix}grid-row-focused .#{$prefix}grid-rowwrap-div {
+        border-color: $grid-row-cell-focus-border-color;
+
+        background-color: $grid-row-cell-focus-background-color;
+    }
+
+    .#{$prefix}grid-row-selected .#{$prefix}grid-cell,
+    .#{$prefix}grid-row-selected .#{$prefix}grid-rowwrap-div {
+        border-style: $grid-row-cell-selected-border-style;
+        border-color: $grid-row-cell-selected-border-color;
+
+        background-color: $grid-row-cell-selected-background-color !important;
+    }
+
+    .#{$prefix}grid-rowwrap-div {
+        .#{$prefix}grid-cell,
+        .#{$prefix}grid-cell-inner {
+            border-width: 0;
+
+            background: transparent;
+        }
+    }
+
+    .#{$prefix}grid-row-body-hidden {
+        display: none;
+    }
+
+    .#{$prefix}grid-rowbody {
+        font: $grid-row-body-font;
+
+        padding: $grid-row-body-padding;
+
+        p {
+            margin: 5px 5px 10px 5px;
+        }
+    }
+
+    //grid cells
+    .#{$prefix}grid-cell {
+        overflow: hidden;
+    }
+
+    .#{$prefix}grid-cell-inner {
+        overflow: hidden;
+
+        -o-text-overflow: ellipsis;
+        text-overflow: ellipsis;
+
+        padding: $grid-cell-inner-padding-top $grid-cell-inner-padding-horizontal $grid-cell-inner-padding-bottom;
+
+        white-space: nowrap;
+    }
+
+    .#{$prefix}grid-with-row-lines .#{$prefix}grid-cell-inner {
+        line-height: $grid-row-cell-line-height - 2;
+        padding-bottom: $grid-cell-inner-padding-bottom + 1;
+    }
+
+    // Action columns with a standard, 16x16 icon require less padding
+    .#{$prefix}action-col-cell .#{$prefix}grid-cell-inner {
+        line-height: 0;
+        padding: 2px;
+    }
+
+    .#{$prefix}action-col-cell .#{$prefix}item-disabled {
+        @include opacity(0.3);
+    }
+
+    .#{$prefix}grid-with-row-lines .#{$prefix}action-col-cell .#{$prefix}grid-cell-inner {
+        padding-top: 1px;
+    }
+
+    .#{$prefix}grid-row .#{$prefix}grid-cell-special {
+        padding: 0;
+        border-right: 1px solid $grid-cell-with-col-lines-border-color;
+        @include background-gradient(#f6f6f6, 'grid-cell-special');
+    }
+
+    .#{$prefix}grid-row .#{$prefix}grid-cell-row-checker {
+        vertical-align: middle;
+    }
+
+    /*
+    IE6-8 have issues with shrinking the TR to 0px (even w/line-height=0), so we
+    use an IE-specific trick to make the row disappear. We cannot do this on any
+    other browser, because it is not a non-standard thing to do and those other
+    browsers will do whacky things with it.
+    */
+
+    .#{$prefix}ie6,
+    .#{$prefix}ie7,
+    .#{$prefix}quirks .#{$prefix}ie8 {
+        .#{$prefix}grid-header-row {
+            position: absolute;
+        }
+    }
+
+    .#{$prefix}grid-row-selected .#{$prefix}grid-cell-special {
+        border-right: 1px solid adjust-color($base-color, $hue: -0.175deg, $saturation: 25.296%, $lightness: -2.549%);
+
+        @include background-gradient($grid-row-cell-selected-background-color, 'grid-cell-special');
+    }
+
+    .#{$prefix}grid-dirty-cell {
+        background-image: theme-background-image($theme-name, 'grid/dirty.gif');
+        background-position: 0 0;
+        background-repeat: no-repeat;
+    }
+
+    .#{$prefix}grid-cell-selected {
+        background-color: #B8CFEE !important;
+    }
+
+    @if not $supports-gradients or $compile-all {
+        .#{$prefix}nlg {
+            .#{$prefix}grid-cell-special {
+                background-repeat: repeat-y;
+                background-position: top right;
+            }
+
+            .#{$prefix}grid-row .#{$prefix}grid-cell-special,
+            .#{$prefix}grid-row-over .#{$prefix}grid-cell-special {
+                background-image: theme-background-image($theme-name, 'grid/cell-special-bg.gif');
+
+            }
+
+            .#{$prefix}grid-row-focused .#{$prefix}grid-cell-special,
+            .#{$prefix}grid-row-selected .#{$prefix}grid-cell-special {
+                background-image: theme-background-image($theme-name, 'grid/cell-special-selected-bg.gif');
+            }
+        }
+    }
+
+    .#{$prefix}grid-with-col-lines .#{$prefix}grid-cell {
+        padding-right: 0;
+        border-right: 1px solid $grid-cell-with-col-lines-border-color;
+    }
+
+    .#{$prefix}property-grid {
+        .#{$prefix}grid-row .#{$prefix}grid-property-name .#{$prefix}grid-cell-inner,
+        .#{$prefix}grid-row-over .#{$prefix}grid-property-name .#{$prefix}grid-cell-inner {
+            padding-left: 12px;
+            background-image: theme-background-image($theme-name, 'grid/property-cell-bg.gif');
+            background-repeat: no-repeat;
+            background-position: -16px 2px;
+        }
+    }
+
+    .#{$prefix}grid-with-row-lines.#{$prefix}property-grid {
+        .#{$prefix}grid-row .#{$prefix}grid-property-name .#{$prefix}grid-cell-inner,
+        .#{$prefix}grid-row-over .#{$prefix}grid-property-name .#{$prefix}grid-cell-inner {
+            background-position: -16px 1px;
+        }
+    }
+
+    @if $include-ie {
+        .#{$prefix}quirks .#{$prefix}ie .#{$prefix}grid-row .#{$prefix}grid-property-name .#{$prefix}grid-cell-inner {
+            background-position: -16px 2px;
+        }
+    }
+
+    .#{$prefix}unselectable {
+        @include no-select;
+    }
+
+    .#{$prefix}grid-row-body-hidden {
+        display: none;
+    }
+
+    .#{$prefix}grid-group-collapsed {
+        display: none;
+    }
+
+    //grid expander
+    .#{$prefix}grid-view {
+        .#{$prefix}grid-td-expander {
+            vertical-align: top;
+        }
+    }
+
+    .#{$prefix}grid-td-expander {
+        background: repeat-y right transparent;
+    }
+
+    .#{$prefix}grid-view {
+        .#{$prefix}grid-td-expander {
+            .#{$prefix}grid-cell-inner {
+                padding: 0 !important;
+            }
+        }
+    }
+
+    .#{$prefix}grid-row-expander {
+        background-image: theme-background-image($theme-name, 'grid/group-collapse.gif');
+        background-color: transparent;
+
+        width: 9px;
+        height: 13px;
+
+        margin-left: 3px;
+
+        background-repeat: no-repeat;
+        background-position: 0 -2px;
+    }
+
+    .#{$prefix}grid-row-collapsed {
+        .#{$prefix}grid-row-expander {
+            background-image: theme-background-image($theme-name, 'grid/group-expand.gif');
+        }
+    }
+
+    .#{$prefix}grid-resize-marker {
+        position: absolute;
+        z-index: 5;
+        top: 0;
+        width: 1px;
+        background-color: #0f0f0f;
+    }
+
+    //column move icons, when moving columns
+    .col-move-top,
+    .col-move-bottom {
+        width: 9px;
+        height: 9px;
+        position: absolute;
+        top: 0;
+        line-height: 0;
+        font-size: 0;
+        overflow: hidden;
+        z-index: 20000;
+        background: no-repeat left top transparent;
+    }
+
+    .col-move-top {
+        background-image: theme-background-image($theme-name, 'grid/col-move-top.gif');
+    }
+
+    .col-move-bottom {
+        background-image: theme-background-image($theme-name, 'grid/col-move-bottom.gif');
+    }
+
+    //pading toolbar
+    .#{$prefix}tbar-page-number {
+        width: 30px;
+    }
+
+    //grouped grid
+    .#{$prefix}grid-group,
+    .#{$prefix}grid-group-body,
+    .#{$prefix}grid-group-hd {
+        zoom: 1;
+    }
+
+    .#{$prefix}grid-group-hd {
+        padding-top: 6px;
+
+        .#{$prefix}grid-cell-inner {
+            padding: 10px 4px 4px 4px;
+
+            background: $grid-grouped-header-background-color;
+
+            border-width: $grid-grouped-header-border-width;
+            border-style: $grid-grouped-header-border-style;
+            border-color: $grid-grouped-header-border-color;
+
+            cursor: pointer;
+        }
+    }
+
+    .#{$prefix}grid-group-hd-collapsible {
+        .#{$prefix}grid-group-title {
+            background: transparent no-repeat 0 -1px;
+            background-image: theme-background-image($theme-name, 'grid/group-collapse.gif');
+            padding: 0 0 0 14px;
+        }
+    }
+
+    .#{$prefix}grid-group-title {
+        color: $grid-grouped-title-color;
+        font: $grid-grouped-title-font;
+    }
+
+    .#{$prefix}grid-group-hd-collapsed {
+        .#{$prefix}grid-group-title {
+            background-image: theme-background-image($theme-name, 'grid/group-expand.gif');
+        }
+    }
+
+    .#{$prefix}grid-group-collapsed .#{$prefix}grid-group-body {
+        display: none;
+    }
+
+    .#{$prefix}grid-group-collapsed .#{$prefix}grid-group-title {
+        background-image: theme-background-image($theme-name, 'grid/group-expand.gif');
+    }
+
+    .#{$prefix}group-by-icon {
+        background-image: theme-background-image($theme-name, 'grid/group-by.gif');
+    }
+
+    .#{$prefix}show-groups-icon {
+        background-image: theme-background-image($theme-name, 'grid/group-by.gif');
+    }
+
+    .#{$prefix}column-header-checkbox .#{$prefix}column-header-inner {
+        padding: 0;
+    }
+
+    .#{$prefix}grid-cell-special .#{$prefix}grid-cell-inner {
+        padding-left: 4px;
+        padding-right: 4px;
+    }
+
+    .#{$prefix}grid-row-checker,
+    .#{$prefix}column-header-checkbox .#{$prefix}column-header-text {
+        height: 14px;
+        width: 14px;
+        line-height: 0;
+        background-image: theme-background-image($theme-name, 'grid/unchecked.gif');
+        background-position: -1px -1px;
+        background-repeat: no-repeat;
+        background-color: transparent;
+    }
+
+    // Row checker is a div but column header checker is the text span element, so make it display: block
+    // Header checkbox element needs centering
+    .#{$prefix}column-header-checkbox .#{$prefix}column-header-text {
+        display: block;
+        margin: 0 5px;
+    }
+
+    @if $include-ie or $compile-all {
+        /* IE6, IE7, and all IE Quirks mode need line-height to be the same as checkbox height or the header/row height will be too tall */
+        .#{$prefix}quirks .#{$prefix}ie, .#{$prefix}ie7m {
+            .#{$prefix}grid-row-checker,
+            .#{$prefix}column-header-checkbox .#{$prefix}column-header-text {
+                line-height: 14px;
+            }
+        }
+    }
+
+    .#{$prefix}grid-hd-checker-on .#{$prefix}column-header-text {
+        background-image: theme-background-image($theme-name, 'grid/checked.gif');
+    }
+
+    .#{$prefix}grid-cell-row-checker .#{$prefix}grid-cell-inner {
+        padding-top: 4px;
+        padding-bottom: 2px;
+        line-height: $grid-row-height - 6;
+    }
+    .#{$prefix}grid-with-row-lines .#{$prefix}grid-cell-row-checker .#{$prefix}grid-cell-inner {
+        padding-top: 3px;
+    }
+    .#{$prefix}grid-row-checker {
+        margin-left: 1px;
+
+        background-position: 50% -2px;
+    }
+
+    .#{$prefix}grid-row-selected .#{$prefix}grid-row-checker,
+    .#{$prefix}grid-row-checked .#{$prefix}grid-row-checker {
+        background-image: theme-background-image($theme-name, 'grid/checked.gif');
+    }
+
+    //grid icons
+    .#{$prefix}tbar-page-first {
+        background-image: theme-background-image($theme-name, 'grid/page-first.gif') !important;
+    }
+
+    .#{$prefix}tbar-loading {
+        background-image: theme-background-image($theme-name, 'grid/refresh.gif') !important;
+    }
+
+    .#{$prefix}tbar-page-last {
+        background-image: theme-background-image($theme-name, 'grid/page-last.gif') !important;
+    }
+
+    .#{$prefix}tbar-page-next {
+        background-image: theme-background-image($theme-name, 'grid/page-next.gif') !important;
+    }
+
+    .#{$prefix}tbar-page-prev {
+        background-image: theme-background-image($theme-name, 'grid/page-prev.gif') !important;
+    }
+
+    .#{$prefix}item-disabled {
+        .#{$prefix}tbar-loading {
+            background-image: theme-background-image($theme-name, 'grid/refresh-disabled.gif') !important;
+        }
+
+        .#{$prefix}tbar-page-first {
+            background-image: theme-background-image($theme-name, 'grid/page-first-disabled.gif') !important;
+        }
+
+        .#{$prefix}tbar-page-last {
+            background-image: theme-background-image($theme-name, 'grid/page-last-disabled.gif') !important;
+        }
+
+        .#{$prefix}tbar-page-next {
+            background-image: theme-background-image($theme-name, 'grid/page-next-disabled.gif') !important;
+        }
+
+        .#{$prefix}tbar-page-prev {
+            background-image: theme-background-image($theme-name, 'grid/page-prev-disabled.gif') !important;
+        }
+    }
+
+    //menu icons
+    .#{$prefix}hmenu-sort-asc .#{$prefix}menu-item-icon {
+        background-image: theme-background-image($theme-name, 'grid/hmenu-asc.gif');
+    }
+
+    .#{$prefix}hmenu-sort-desc .#{$prefix}menu-item-icon {
+        background-image: theme-background-image($theme-name, 'grid/hmenu-desc.gif');
+    }
+
+    .#{$prefix}hmenu-lock .#{$prefix}menu-item-icon {
+        background-image: theme-background-image($theme-name, 'grid/hmenu-lock.gif');
+    }
+
+    .#{$prefix}hmenu-unlock .#{$prefix}menu-item-icon {
+        background-image: theme-background-image($theme-name, 'grid/hmenu-unlock.gif');
+    }
+
+    .#{$prefix}group-by-icon {
+        background-image: theme-background-image($theme-name, 'grid/group-by.gif');
+    }
+
+    .#{$prefix}cols-icon .#{$prefix}menu-item-icon {
+        background-image: theme-background-image($theme-name, 'grid/columns.gif');
+    }
+
+    .#{$prefix}show-groups-icon {
+        background-image: theme-background-image($theme-name, 'grid/group-by.gif');
+    }
+
+    // Drag/drop indicator styles
+    .#{$prefix}grid-drop-indicator {
+        position: absolute;
+        height: 1px;
+        line-height: 0px;
+        background-color: #77BC71;
+        overflow: visible;
+
+        .#{$prefix}grid-drop-indicator-left {
+            position: absolute;
+            top: -8px;
+            left: -12px;
+            background-image: theme-background-image($theme-name, 'grid/dd-insert-arrow-right.png');
+            height: 16px;
+            width: 16px;
+        }
+
+        .#{$prefix}grid-drop-indicator-right {
+            position: absolute;
+            top: -8px;
+            right: -11px;
+            background-image: theme-background-image($theme-name, 'grid/dd-insert-arrow-left.png');
+            height: 16px;
+            width: 16px;
+        }
+    }
+
+    .#{$prefix}ie6 {
+        .#{$prefix}grid-drop-indicator-left {
+            background-image: theme-background-image($theme-name, 'grid/dd-insert-arrow-right.gif');
+        }
+
+        .#{$prefix}grid-drop-indicator-right {
+            background-image: theme-background-image($theme-name, 'grid/dd-insert-arrow-left.gif');
+        }
+    }
+
+    // Cell Editor
+    .#{$prefix}grid-editor {
+        // Position editor text over underlying grid cell text
+        .#{$prefix}form-text {
+            padding: 0 $grid-cell-editor-field-padding-horizontal;
+        }
+        .#{$prefix}form-cb-wrap {
+            padding-top: $grid-cell-editor-checkbox-padding-top;
+        }
+    }
+
+    // Row Editor
+    .#{$prefix}grid-row-editor {
+        position: absolute !important;
+        z-index: 1;
+        zoom: 1;
+        overflow: visible !important;
+
+        .#{$prefix}form-text {
+            padding: 0 $grid-row-editor-field-padding-horizontal;
+        }
+        .#{$prefix}form-cb-wrap {
+            padding-top: $grid-row-editor-cb-wrap-padding-top;
+        }
+        .#{$prefix}form-checkbox {
+            margin-left: $grid-row-editor-checkbox-margin-left;
+        }
+        .#{$prefix}form-display-field {
+            font: $grid-editor-font;
+            padding-top: 0;
+            padding-left: $grid-row-editor-field-padding-horizontal;
+        }
+
+        .#{$prefix}panel-body {
+            background-color: $grid-row-editor-background-color;
+            border-top: $grid-row-editor-border;
+            border-bottom: $grid-row-editor-border;
+        }
+    }
+
+    // Row/Cell Editor Shared Styles
+    .#{$prefix}grid-editor, .#{$prefix}grid-row-editor {
+        // Align checkbox input
+        .#{$prefix}form-cb-wrap {
+            text-align: center;
+        }
+        .#{$prefix}form-trigger {
+            height: $grid-row-height - $form-field-border-width;
+        }
+        .#{$prefix}form-trigger-wrap {
+            .#{$prefix}form-spinner-up, .#{$prefix}form-spinner-down {
+                background-image: theme-background-image($theme-name, 'form/spinner-small.gif');
+                height: 10px !important;
+            }
+        }
+    }
+    .#{$prefix}grid-editor, .#{$prefix}grid-row-editor {
+        .#{$prefix}form-text {
+            font: $grid-editor-font;
+            height: $grid-row-height - 2;
+        }
+    }
+
+    .#{$prefix}border-box .#{$prefix}grid-editor,
+    .#{$prefix}border-box .#{$prefix}grid-row-editor {
+        .#{$prefix}form-trigger {
+            height: $grid-row-height;
+        }
+        .#{$prefix}form-text {
+            height: $grid-row-height;
+            padding-bottom: 1px; // fix for firefox/opera since they ignore line-height on inputs
+        }
+    }
+
+    @if $include-ie {
+        .#{$prefix}ie {
+            .#{$prefix}grid-editor .#{$prefix}form-text {
+                padding-left: $grid-cell-editor-field-padding-horizontal + 1;
+            }
+            .#{$prefix}grid-row-editor .#{$prefix}form-text {
+                padding-left: $grid-row-editor-field-padding-horizontal + 1;
+            }
+        }
+        .#{$prefix}ie8m {
+            .#{$prefix}grid-editor .#{$prefix}form-text,
+            .#{$prefix}grid-row-editor .#{$prefix}form-text {
+                padding-top: 1px;
+            }
+        }
+        .#{$prefix}strict .#{$prefix}ie6,
+        .#{$prefix}strict .#{$prefix}ie7 {
+            .#{$prefix}grid-editor .#{$prefix}form-text,
+            .#{$prefix}grid-row-editor .#{$prefix}form-text {
+                height: $grid-row-height - ($form-field-border-width * 3);
+            }
+        }
+        .#{$prefix}quirks .#{$prefix}ie9 {
+            .#{$prefix}grid-editor, .#{$prefix}grid-row-editor {
+                .#{$prefix}form-text {
+                    line-height: $grid-editor-line-height + 2;
+                }
+            }
+        }
+    }
+
+    @if $include-opera {
+        .#{$prefix}opera {
+            .#{$prefix}grid-editor .#{$prefix}form-text {
+                padding-left: $grid-cell-editor-field-padding-horizontal + 1;
+            }
+            .#{$prefix}grid-row-editor .#{$prefix}form-text {
+                padding-left: $grid-row-editor-field-padding-horizontal + 1;
+            }
+        }
+    }
+
+
+    .#{$prefix}grid-row-editor-buttons {
+        background-color: $grid-row-editor-background-color;
+        position: absolute;
+        bottom: -31px;
+        padding: 4px;
+        height: 32px;
+
+        .#{$prefix}strict .#{$prefix}ie7m & {
+            width: 192px;
+            height: 24px;
+        }
+    }
+
+    .#{$prefix}grid-row-editor-buttons-ml,
+    .#{$prefix}grid-row-editor-buttons-mr,
+    .#{$prefix}grid-row-editor-buttons-bl,
+    .#{$prefix}grid-row-editor-buttons-br,
+    .#{$prefix}grid-row-editor-buttons-bc {
+        position: absolute;
+        overflow: hidden;
+    }
+
+    .#{$prefix}grid-row-editor-buttons-bl,
+    .#{$prefix}grid-row-editor-buttons-br {
+        width: 4px;
+        height: 4px;
+        bottom: 0px;
+        background-image: theme-background-image($theme-name, 'panel/panel-default-framed-corners.gif');
+    }
+    .#{$prefix}grid-row-editor-buttons-bl {
+        left: 0px;
+        background-position: 0px -16px;
+    }
+    .#{$prefix}grid-row-editor-buttons-br {
+        right: 0px;
+        background-position: 0px -20px;
+    }
+
+    .#{$prefix}grid-row-editor-buttons-bc {
+        position: absolute;
+        left: 4px;
+        bottom: 0px;
+        width: 192px;
+        height: 1px;
+        background-color: $grid-row-editor-border-color;
+    }
+
+    .#{$prefix}grid-row-editor-buttons-ml,
+    .#{$prefix}grid-row-editor-buttons-mr {
+        height: 27px;
+        width: 1px;
+        top: 1px;
+        background-color: $grid-row-editor-border-color;
+    }
+    .#{$prefix}grid-row-editor-buttons-ml {
+        left: 0px
+    }
+    .#{$prefix}grid-row-editor-buttons-mr {
+        background-position: 0px -20px;
+        right: 0px;
+    }
+
+    .#{$prefix}grid-row-editor-errors {
+        ul {
+            margin-left: 5px;
+        }
+        li {
+            list-style: disc;
+            margin-left: 15px;
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_html.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_html.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_html.scss	(revision 18277)
@@ -0,0 +1,128 @@
+/**
+ * W3C suggested default style sheet for HTML 4:
+ * [http://www.w3.org/TR/CSS21/sample.html](http://www.w3.org/TR/CSS21/sample.html)
+ *
+ * @member Global_CSS
+ */
+@mixin extjs-html {
+    .#{$prefix}html {
+        html,
+        address,
+        blockquote,
+        body,
+        dd,
+        div,
+        dl,
+        dt,
+        fieldset,
+        form,
+        frame, frameset,
+        h1,
+        h2,
+        h3,
+        h4,
+        h5,
+        h6,
+        noframes,
+        ol,
+        p,
+        ul,
+        center,
+        dir,
+        hr,
+        menu,
+        pre 			{ display: block; }
+        li              { display: list-item; list-style: disc; }
+        head            { display: none; }
+        table           { display: table; }
+        tr              { display: table-row; }
+        thead           { display: table-header-group; }
+        tbody           { display: table-row-group; }
+        tfoot           { display: table-footer-group; }
+        col             { display: table-column; }
+        colgroup        { display: table-column-group; }
+        td,
+        th 	            { display: table-cell; }
+        caption         { display: table-caption; }
+        th              { font-weight: bolder; text-align: center; }
+        caption         { text-align: center; }
+        body            { margin: 8px; }
+        h1              { font-size: 2em; margin: .67em 0; }
+        h2              { font-size: 1.5em; margin: .75em 0; }
+        h3              { font-size: 1.17em; margin: .83em 0; }
+        h4,
+        p,
+        blockquote,
+        ul,
+        fieldset,
+        form,
+        ol,
+        dl,
+        dir,
+        menu            { margin: 1.12em 0; }
+        h5              { font-size: .83em; margin: 1.5em 0; }
+        h6              { font-size: .75em; margin: 1.67em 0; }
+        h1,
+        h2,
+        h3,
+        h4,
+        h5,
+        h6,
+        b,
+        strong          { font-weight: bolder; }
+        blockquote      { margin-left: 40px; margin-right: 40px; }
+        i,
+        cite,
+        em,
+        var,
+        address    	    { font-style: italic; }
+        pre,
+        tt,
+        code,
+        kbd,
+        samp       	    { font-family: monospace; }
+        pre             { white-space: pre; }
+        button,
+        textarea,
+        input,
+        select   		{ display: inline-block; }
+        big             { font-size: 1.17em; }
+        small,
+        sub,
+        sup 			{ font-size: .83em; }
+        sub             { vertical-align: sub; }
+        sup             { vertical-align: super; }
+        table           { border-spacing: 2px; }
+        thead,
+        tbody,
+        tfoot           { vertical-align: middle; }
+        td,
+        th          	{ vertical-align: inherit; }
+        s,
+        strike,
+        del  			{ text-decoration: line-through; }
+        hr              { border: 1px inset; }
+        ol,
+        ul,
+        dir,
+        menu,
+        dd        	    { margin-left: 40px; }
+        ul, menu, dir   { list-style-type: disc; }
+        ol              { list-style-type: decimal; }
+        ol ul,
+        ul ol,
+        ul ul,
+        ol ol    		{ margin-top: 0; margin-bottom: 0; }
+        u,
+        ins          	{ text-decoration: underline; }
+        br:before       { content: "\A"; }
+        :before, :after { white-space: pre-line; }
+        center          { text-align: center; }
+        :link, :visited { text-decoration: underline; }
+        :focus          { outline: invert dotted thin; }
+
+        /* Begin bidirectionality settings (do not change) */
+        BDO[DIR="ltr"]  { direction: ltr; unicode-bidi: bidi-override; }
+        BDO[DIR="rtl"]  { direction: rtl; unicode-bidi: bidi-override; }
+   ; }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_loadmask.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_loadmask.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_loadmask.scss	(revision 18277)
@@ -0,0 +1,57 @@
+/* Styles for Ext.LoadMask */
+
+.#{$prefix}mask {
+    z-index: 100;
+
+    position: absolute;
+    top: 0;
+    left: 0;
+
+    @include opacity($loadmask-opacity);
+
+    width: 100%;
+    height: 100%;
+    zoom: 1;
+
+    background: $loadmask-backgorund;
+}
+
+.#{$prefix}mask-msg {
+    z-index: 20001;
+
+    position: absolute;
+    top: 0;
+    left: 0;
+
+    padding: $loadmask-msg-padding;
+    border: 1px solid;
+    border-color: $loadmask-msg-border-color;
+
+    @if $loadmask-msg-background-gradient {
+        @if $supports-gradients or $compile-all {
+            @include background-gradient($loadmask-msg-background-color, $loadmask-msg-background-gradient);
+        }
+    } @else {
+        background: $loadmask-msg-background-color;
+    }
+
+    div {
+        padding: $loadmask-msg-inner-padding;
+
+        //if an icon is defined show it
+        @if $loadmask-msg-inner-icon != null {
+            background-image: theme-background-image($theme-name, $loadmask-msg-inner-icon);
+            background-repeat: no-repeat;
+            background-position: 5px center;
+        }
+
+        cursor: wait;
+
+        border: 1px solid $loadmask-msg-inner-border-color;
+
+        background-color: $loadmask-msg-inner-background-color;
+
+        color: $loadmask-msg-inner-color;
+        font: $loadmask-msg-inner-font;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_menu.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_menu.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_menu.scss	(revision 18277)
@@ -0,0 +1,202 @@
+/**
+ * Creates the base structure of a Menu
+ * @member Ext.menu.Menu
+ */
+@mixin extjs-menu {
+    .#{$prefix}menu-body {
+        @include no-select;
+        background: $menu-background-color !important;
+        padding: $menu-padding;
+    }
+
+    .#{$prefix}menu-item .#{$prefix}form-text {
+        user-select: text;
+        -webkit-user-select: text;
+        -o-user-select: text;
+        -ie-user-select: text;
+        -moz-user-select: text;
+        -ie-user-select: text;
+    }
+
+    .#{$prefix}menu-icon-separator {
+        position: absolute;
+        top: 0px;
+        left: $menu-item-indent;
+        z-index: 0;
+        border-left: solid 1px $menu-separator-border-color;
+        background-color: $menu-separator-background-color;
+        width: 2px;
+        overflow: hidden;
+    }
+
+    .#{$prefix}menu-plain {
+        .#{$prefix}menu-icon-separator {
+            display: none;
+        }
+    }
+
+    .#{$prefix}menu-focus {
+        display: block;
+        position: absolute;
+        top: -10px;
+        left: -10px;
+        width: 0px;
+        height: 0px;
+    }
+
+    .#{$prefix}menu-item {
+        white-space: nowrap;
+        overflow: hidden;
+        z-index: 1;
+    }
+
+    .#{$prefix}menu-item-cmp {
+        margin-bottom: 1px;
+    }
+
+    .#{$prefix}menu-item-link {
+        display: block;
+        margin: 1px;
+        padding: $menu-link-padding;
+        text-decoration: none !important;
+        line-height: 16px;
+        cursor: default;
+    }
+
+    @if $include-opera {
+        .#{$prefix}opera {
+            // Opera 10.5 absolute positioning of submenu arrow has issues
+            // This will fix it, and not affect newer Operas
+            .#{$prefix}menu-item-link {
+                position: relative;
+            }
+        }
+    }
+
+    .#{$prefix}menu-item-icon {
+        width: 16px;
+        height: 16px;
+        position: absolute;
+        top: 5px;
+        left: 4px;
+        background: no-repeat center center;
+    }
+
+    // For when an icon needs to be used in the right position where a submenu arrow usually goes.
+    // eg: When a CheckItem needs an icon. The left icon position is a checkbox, so the icon is moved to the right.
+    .#{$prefix}menu-item-icon-right {
+        width: 16px;
+        height: 16px;
+        position: absolute;
+        top: 6px;
+        right: 4px;
+        background: no-repeat center center;
+    }
+
+    .#{$prefix}menu-item-text {
+        font-size: ceil($font-size * .9);
+        color: $menu-text-color;
+    }
+
+    .#{$prefix}menu-item-checked {
+        .#{$prefix}menu-item-icon {
+            background-image: theme-background-image($theme-name, $menu-icon-checked);
+        }
+        .#{$prefix}menu-group-icon {
+            background-image: theme-background-image($theme-name, $menu-icon-group-checked);
+        }
+    }
+
+    .#{$prefix}menu-item-unchecked {
+        .#{$prefix}menu-item-icon {
+            background-image: theme-background-image($theme-name, $menu-icon-unchecked);
+        }
+        .#{$prefix}menu-group-icon {
+            background-image: none;
+        }
+    }
+
+    .#{$prefix}menu-item-separator {
+        height: 2px;
+        border-top: solid 1px $menu-separator-border-color;
+        background-color: $menu-separator-background-color;
+        margin: $menu-padding 0px;
+        overflow: hidden;
+    }
+
+    .#{$prefix}menu-item-arrow {
+        position: absolute;
+        width: 12px;
+        height: 9px;
+        top: 9px;
+        right: 0px;
+        background: no-repeat center center;
+        background-image: theme-background-image($theme-name, $menu-icon-arrow);
+    }
+
+    .#{$prefix}menu-item-indent {
+        margin-left: $menu-item-indent + $menu-padding + 2px; /* The 2px is the width of the seperator */
+    }
+
+    .#{$prefix}menu-item-active {
+        cursor: pointer;
+
+        .#{$prefix}menu-item-link {
+            @include background-gradient($menu-item-active-background-color, 'matte');
+            margin: 0px;
+            border: 1px solid $menu-item-active-border-color;
+            cursor: pointer;
+            @include border-radius(3px);
+        }
+    }
+
+    .#{$prefix}menu-item-disabled {
+        @include opacity(.5);
+    }
+
+    @if $include-ie {
+        .#{$prefix}ie {
+            .#{$prefix}menu-item-disabled {
+                .#{$prefix}menu-item-icon {
+                    @include opacity(.5);
+                }
+
+                .#{$prefix}menu-item-text {
+                    // IE opacity/cleartype bug workaround
+                    background-color: transparent;
+                }
+            }
+
+            .#{$prefix}strict .#{$prefix}ie7m & {
+                .#{$prefix}menu-icon-separator {
+                    width: 1px;
+                }
+
+                .#{$prefix}menu-item-separator {
+                    height: 1px;
+                }
+            }
+        }
+
+        .#{$prefix}ie6,
+        .#{$prefix}ie7,
+        .#{$prefix}quirks .#{$prefix}ie8 {
+            .#{$prefix}menu-item-link {
+                padding-bottom: $menu-padding;
+            }
+        }
+    }
+
+    @if not $supports-gradients or $compile-all {
+        .#{$prefix}nlg {
+            .#{$prefix}menu-item-active .#{$prefix}menu-item-link {
+                background: $menu-item-active-background-color repeat-x left top;
+                background-image: theme-background-image($theme-name, $menu-item-active-background-image);
+            }
+        }
+    }
+
+    .#{$prefix}menu-date-item {
+        border-color: #99BBE8;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_panel.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_panel.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_panel.scss	(revision 18277)
@@ -0,0 +1,490 @@
+/**
+ * Create the base structure of an Ext.Panel
+ * @member Ext.panel.Panel
+ */
+@mixin extjs-panel {
+    .#{$prefix}panel,
+    .#{$prefix}plain {
+        overflow: hidden;
+        position: relative;
+    }
+
+     @if $include-ie {
+        // Workaround for disappearing right edge in IE6
+        .#{$prefix}ie {
+            .#{$prefix}panel-header,
+            .#{$prefix}panel-header-tl,
+            .#{$prefix}panel-header-tc,
+            .#{$prefix}panel-header-tr,
+            .#{$prefix}panel-header-ml,
+            .#{$prefix}panel-header-mc,
+            .#{$prefix}panel-header-mr,
+            .#{$prefix}panel-header-bl,
+            .#{$prefix}panel-header-bc,
+            .#{$prefix}panel-header-br {
+                zoom: 1;
+            }
+        }
+        // Fix for IE8 clipping. EXTJSIV-1553
+        .#{$prefix}ie8 {
+            td.#{$prefix}frame-mc {
+                vertical-align: top;
+            }
+        }
+    }
+
+    //panel header
+    .#{$prefix}panel-header-horizontal {
+        padding: $panel-header-padding;
+    }
+    .#{$prefix}panel-header-vertical {
+        padding: $panel-header-vertical-padding;
+    }
+
+    .#{$prefix}panel-header-icon,
+    .#{$prefix}window-header-icon {
+        width: $panel-header-icon-width;
+        height: $panel-header-icon-height;
+        background-repeat:no-repeat;
+        background-position:0 0;
+        vertical-align:middle;
+        margin-right:4px;
+    }
+
+    .#{$prefix}vertical {
+        .#{$prefix}panel-header-icon,
+        .#{$prefix}window-header-icon {
+            margin: 0 0 4px;
+        }
+    }
+
+    .#{$prefix}panel-header-draggable,
+    .#{$prefix}panel-header-draggable .#{$prefix}panel-header-text,
+    .#{$prefix}window-header-draggable,
+    .#{$prefix}window-header-draggable .#{$prefix}window-header-text{
+        cursor: move;
+    }
+
+    // A ghost is just a Panel. The only extra it needs is opacity.
+    // TODO: Make opacity a variable
+    .#{$prefix}panel-ghost, .#{$prefix}window-ghost {
+        @include opacity(0.65);
+        cursor: move;
+    }
+
+    .#{$prefix}panel-header-horizontal, .#{$prefix}window-header-horizontal, .#{$prefix}btn-group-header-horizontal {
+        .#{$prefix}panel-header-body, .#{$prefix}window-header-body, .#{$prefix}btn-group-header-body {
+            width: 100%;
+        }
+    }
+
+    .#{$prefix}panel-header-vertical, .#{$prefix}window-header-vertical, .#{$prefix}btn-group-header-vertical {
+        .#{$prefix}panel-header-body, .#{$prefix}window-header-body, .#{$prefix}btn-group-header-body {
+            height: 100%;
+        }
+    }
+
+    .#{$prefix}panel-header-text-container {
+        overflow: hidden;
+        -o-text-overflow: ellipsis;
+        text-overflow: ellipsis;
+    }
+
+    .#{$prefix}panel-header-text {
+        @include no-select;
+        white-space: nowrap;
+    }
+
+    .#{$prefix}panel-header-left,
+    .#{$prefix}panel-header-right {
+        .#{$prefix}vml-base {
+            left: -3px !important;
+        }
+    }
+
+    //panel body
+    .#{$prefix}panel-body {
+        overflow: hidden;
+        position: relative;
+
+        font-size: $panel-body-font-size;
+    }
+
+    .#{$prefix}panel-header-vertical {
+        .#{$prefix}surface {
+            padding-left: 1px;
+        }
+    }
+
+    .#{$prefix}opera,
+    .#{$prefix}strict .#{$prefix}ie9 {
+        .#{$prefix}panel-header-vertical {
+            .#{$prefix}surface {
+                padding-left: 2px;
+            }
+        }
+    }
+
+    .#{$prefix}panel-collapsed {
+        .#{$prefix}panel-header-collapsed-border-top {
+            border-bottom-width: $panel-header-border-width !important;
+        }
+        .#{$prefix}panel-header-collapsed-border-right {
+            border-left-width: $panel-header-border-width !important;
+        }
+        .#{$prefix}panel-header-collapsed-border-bottom {
+            border-top-width: $panel-header-border-width !important;
+        }
+        .#{$prefix}panel-header-collapsed-border-left {
+            border-right-width: $panel-header-border-width !important;
+        }
+    }
+
+    @if not $supports-gradients or $compile-all {
+        .#{$prefix}nlg .#{$prefix}panel-header-vertical {
+            .#{$prefix}frame-mc {
+                background-repeat: repeat-y;
+            }
+        }
+    }
+
+    @if $include-panel-uis == true {
+        @include extjs-panel-ui(
+            'default',
+
+            $ui-base-color: $panel-base-color,
+            $ui-border-width: $panel-border-width,
+            $ui-border-color: $panel-border-color,
+            $ui-border-radius: $panel-border-radius,
+
+            $ui-header-color: $panel-header-color,
+            $ui-header-font-size: $panel-header-font-size,
+            $ui-header-font-weight: $panel-header-font-weight,
+            $ui-header-border-color: $panel-header-border-color,
+            $ui-header-background-color: $panel-header-background-color,
+            $ui-header-background-gradient: $panel-header-background-gradient,
+
+            $ui-body-color: $panel-body-color,
+            $ui-body-border-color: $panel-body-border-color,
+            $ui-body-border-width: 1px,
+            $ui-body-background-color: $panel-body-background-color
+        );
+
+        @include extjs-panel-ui(
+            'default-framed',
+
+            $ui-base-color: $panel-base-color,
+            $ui-border-width: $panel-frame-border-width,
+            $ui-border-color: $panel-frame-border-color,
+            $ui-border-radius: $panel-frame-border-radius,
+
+            $ui-header-color: $panel-header-color,
+            $ui-header-font-size: $panel-header-font-size,
+            $ui-header-font-weight: $panel-header-font-weight,
+            $ui-header-border-color: $panel-frame-border-color,
+            $ui-header-background-color: $panel-header-background-color,
+            $ui-header-background-gradient: $panel-header-background-gradient,
+
+            $ui-body-color: $panel-body-color,
+            $ui-body-border-color: $panel-body-border-color,
+            $ui-body-border-width: 0,
+            $ui-body-background-color: $panel-frame-background-color,
+            $ui-image-label-with-border-radius: 'default'
+        );
+    }
+
+    .#{$prefix}panel-header-plain,
+    .#{$prefix}panel-body-plain {
+        border: 0;
+        padding: 0;
+    }
+}
+
+/**
+ * Creates a visual theme for an Ext.Panel
+ * @member Ext.panel.Panel
+ */
+@mixin extjs-panel-ui(
+    $ui-label,
+
+    $ui-base-color: null,
+
+    $ui-border-color: null,
+    $ui-border-radius: null,
+    $ui-border-width: 0,
+
+    $ui-header-color: null,
+    $ui-header-font-family: $panel-header-font-family,
+    $ui-header-font-size: $panel-header-font-size,
+    $ui-header-font-weight: $panel-header-font-weight,
+    $ui-header-line-height: $panel-header-line-height,
+    $ui-header-border-color: $ui-border-color,
+    $ui-header-background-color: null,
+    $ui-header-background-gradient: matte,
+    $ui-header-inner-border-color: null,
+
+    $ui-body-color: null,
+    $ui-body-border-color: null,
+    $ui-body-border-width: null,
+    $ui-body-border-style: solid,
+    $ui-body-background-color: null,
+    $ui-body-font-size: null,
+    $ui-body-font-weight: null,
+    // optional image label to use when background header images are required (no linear-gradient),
+    // but border-radius is supported (no framing els) e.g. IE9.
+    $ui-image-label-with-border-radius: null
+){
+    @if $ui-base-color != null {
+        @if $ui-border-color == null { $ui-border-color: $ui-base-color; }
+
+        @if $ui-header-color == null { $ui-header-color: #fff; }
+        @if $ui-header-background-color == null { $ui-header-background-color: lighten($ui-base-color, 15); }
+    }
+
+    @if $ui-header-inner-border-color == null and $ui-header-background-color != null {
+        $ui-header-inner-border-color: lighten($ui-header-background-color, 10);
+    }
+
+    .#{$prefix}panel-#{$ui-label} {
+        @if $ui-border-color != null { border-color: $ui-border-color; }
+    }
+
+    // header
+    .#{$prefix}panel-header-#{$ui-label} {
+        @if $ui-header-font-size != null { font-size: $ui-header-font-size; }
+
+        @if $ui-header-border-color != null {
+            border-color: $ui-header-border-color;
+            border-width: $panel-header-border-width;
+            border-style: $panel-header-border-style;
+        }
+
+        @if $supports-gradients or $compile-all {
+            @if $ui-header-background-color != null { @include background-gradient($ui-header-background-color, $ui-header-background-gradient); }
+
+            @if $panel-header-inner-border and $ui-header-inner-border-color != null {
+                @include inner-border(
+                    $width: $panel-header-inner-border-width,
+                    $color: $ui-header-inner-border-color
+                );
+            }
+        }
+    }
+
+    // header background images
+    @if $ui-header-background-color != null and $ui-header-background-gradient != null {
+        @if not $supports-gradients or $compile-all {
+            .#{$prefix}nlg .#{$prefix}panel-header-#{$ui-label}-top {
+                background-image: theme-background-image($theme-name, 'panel-header/panel-header-#{$ui-label}-top-bg.gif');
+            }
+
+            .#{$prefix}nlg .#{$prefix}panel-header-#{$ui-label}-bottom {
+                background-image: theme-background-image($theme-name, 'panel-header/panel-header-#{$ui-label}-bottom-bg.gif');
+            }
+
+            .#{$prefix}nlg .#{$prefix}panel-header-#{$ui-label}-left {
+                background-image: theme-background-image($theme-name, 'panel-header/panel-header-#{$ui-label}-left-bg.gif');
+            }
+
+            .#{$prefix}nlg .#{$prefix}panel-header-#{$ui-label}-right {
+                background-image: theme-background-image($theme-name, 'panel-header/panel-header-#{$ui-label}-right-bg.gif');
+            }
+
+            .#{$prefix}nlg .#{$prefix}panel-header-#{$ui-label}-right {
+                background-position: top right;
+            }
+
+            .#{$prefix}nlg .#{$prefix}panel-header-#{$ui-label}-bottom {
+                background-position: bottom left;
+            }
+
+            @if $ui-border-radius != null {
+                .#{$prefix}nbr {
+                    // If framing elements are used to achieve rounded corners remove the background image from the header element since the framing elements
+                    // already have the background image, and a background image on the main header element bleeds through the corner framing elements.
+                    .#{$prefix}panel-header-#{$ui-label} {
+                        background-image: none;
+                    }
+                }
+            }
+
+
+            @if $ui-image-label-with-border-radius != null {
+                // IE9 strict, Opera < 11.10, and Safari 3 are the only currently supported browsers that support border-radius, but do not support linear-gradient.
+                .#{$prefix}strict .#{$prefix}ie9,
+                .#{$prefix}nlg.#{$prefix}opera,
+                .#{$prefix}nlg.#{$prefix}safari {
+                    .#{$prefix}panel-header-#{$ui-label}-top {
+                        background-image: theme-background-image($theme-name, 'panel-header/panel-header-#{$ui-image-label-with-border-radius}-top-bg.gif');
+                    }
+
+                    .#{$prefix}panel-header-#{$ui-label}-bottom {
+                        background-image: theme-background-image($theme-name, 'panel-header/panel-header-#{$ui-image-label-with-border-radius}-bottom-bg.gif');
+                    }
+
+                    .#{$prefix}panel-header-#{$ui-label}-left {
+                        background-image: theme-background-image($theme-name, 'panel-header/panel-header-#{$ui-image-label-with-border-radius}-left-bg.gif');
+                    }
+
+                    .#{$prefix}panel-header-#{$ui-label}-right {
+                        background-image: theme-background-image($theme-name, 'panel-header/panel-header-#{$ui-image-label-with-border-radius}-right-bg.gif');
+                    }
+                }
+            }
+        }
+    }
+
+    // header text
+    .#{$prefix}panel-header-text-#{$ui-label} {
+        @if $ui-header-color != null { color: $ui-header-color; }
+
+        @if $ui-header-font-size != null {   font-size: $ui-header-font-size; }
+        @if $ui-header-font-weight != null { font-weight: $ui-header-font-weight; }
+        @if $ui-header-font-family != null { font-family: $ui-header-font-family; }
+        @if $ui-header-line-height != null { line-height: $ui-header-line-height; }
+    }
+
+    // body
+    .#{$prefix}panel-body-#{$ui-label} {
+        @if $ui-body-background-color != null { background: $ui-body-background-color; }
+        @if $ui-body-border-color != null {     border-color: $ui-body-border-color; }
+        @if $ui-body-color != null {            color: $ui-body-color; }
+        @if $ui-body-font-size != null {        font-size: $ui-body-font-size; }
+        @if $ui-body-font-weight != null {      font-size: $ui-body-font-weight; }
+
+        @if $ui-body-border-width != null {
+            border-width: $ui-body-border-width;
+            @if $ui-body-border-style != null { border-style: $ui-body-border-style; }
+        }
+    }
+
+    .#{$prefix}panel-collapsed {
+        .#{$prefix}window-header-#{$ui-label},
+        .#{$prefix}panel-header-#{$ui-label} {
+            @if $ui-body-border-color != null { border-color: $ui-body-border-color; }
+        }
+    }
+
+    .#{$prefix}panel-header-#{$ui-label}-vertical {
+        @if $ui-body-border-color != null { border-color: $ui-body-border-color; }
+    }
+
+    @if $ui-base-color != null {
+        @if $supports-gradients or $compile-all {
+            .#{$prefix}panel-header-#{$ui-label}-left,
+            .#{$prefix}panel-header-#{$ui-label}-right {
+                @include background-gradient($ui-header-background-color, $ui-header-background-gradient, right);
+            }
+        }
+    }
+
+    @if $ui-border-radius != null {
+        @include x-frame(
+            'panel',
+            $ui: '#{$ui-label}',
+
+            /* Radius, width, padding and background-color */
+            $border-radius   : $ui-border-radius,
+            $border-width    : $ui-border-width,
+            $padding         : $panel-frame-padding,
+            $background-color: $ui-body-background-color
+        );
+
+
+        @include x-frame('panel-header', '#{$ui-label}-top',    top($ui-border-radius) right($ui-border-radius) 0 0,    top($ui-border-width) right($ui-border-width) 0 left($ui-border-width), $panel-header-padding, $ui-header-background-color, $ui-header-background-gradient);
+        @include x-frame('panel-header', '#{$ui-label}-right',  0 right($ui-border-radius) bottom($ui-border-radius) 0, top($ui-border-width) right($ui-border-width) bottom($ui-border-width) 0, $panel-header-vertical-padding, $ui-header-background-color, $ui-header-background-gradient, false, right);
+        @include x-frame('panel-header', '#{$ui-label}-bottom', 0 0 bottom($ui-border-radius) left($ui-border-radius),  0 right($ui-border-width) bottom($ui-border-width) left($ui-border-width), $panel-header-padding, $ui-header-background-color, $ui-header-background-gradient);
+        @include x-frame('panel-header', '#{$ui-label}-left',   top($ui-border-radius) 0 0 left($ui-border-radius),     top($ui-border-width) 0 bottom($ui-border-width) left($ui-border-width), $panel-header-vertical-padding, $ui-header-background-color, $ui-header-background-gradient, false, right);
+
+        .#{$prefix}panel-header-#{$ui-label}-top {
+            @include inner-border(1px 1px 0 1px, $ui-header-inner-border-color);
+        }
+
+        .#{$prefix}panel-header-#{$ui-label}-right {
+            @include inner-border(1px 1px 1px 0, $ui-header-inner-border-color);
+        }
+
+        .#{$prefix}panel-header-#{$ui-label}-bottom {
+            @include inner-border(0 1px 1px 1px, $ui-header-inner-border-color);
+        }
+
+        .#{$prefix}panel-header-#{$ui-label}-left {
+            @include inner-border(1px 0 1px 1px, $ui-header-inner-border-color);
+        }
+    } @else {
+        .#{$prefix}panel-collapsed {
+            .#{$prefix}panel-header-#{$ui-label}-top {
+                @include border-bottom-radius($ui-border-radius);
+            }
+
+            .#{$prefix}panel-header-#{$ui-label}-right {
+                @include border-left-radius($ui-border-radius);
+            }
+
+            .#{$prefix}panel-header-#{$ui-label}-bottom {
+                @include border-top-radius($ui-border-radius);
+            }
+
+            .#{$prefix}panel-header-#{$ui-label}-left {
+                @include border-right-radius($ui-border-radius);
+            }
+        }
+
+
+        .#{$prefix}panel-header-#{$ui-label}-top {
+            @include inner-border(1px 0 0 0, $ui-header-inner-border-color);
+        }
+
+        .#{$prefix}panel-header-#{$ui-label}-right {
+            @include inner-border(0 1px 0 0, $ui-header-inner-border-color);
+        }
+
+        .#{$prefix}panel-header-#{$ui-label}-bottom {
+            @include inner-border(0 0 1px, $ui-header-inner-border-color);
+        }
+
+        .#{$prefix}panel-header-#{$ui-label}-left {
+            @include inner-border(0 0 0 1px, $ui-header-inner-border-color);
+        }
+    }
+
+    @if $ui-border-radius != null {
+        .#{$prefix}panel .#{$prefix}panel-header-#{$ui-label}-top {
+            border-bottom-width: 1px !important;
+        }
+
+        .#{$prefix}panel .#{$prefix}panel-header-#{$ui-label}-right {
+            border-left-width: 1px !important;
+        }
+
+        .#{$prefix}panel .#{$prefix}panel-header-#{$ui-label}-bottom {
+            border-top-width: 1px !important;
+        }
+
+        .#{$prefix}panel .#{$prefix}panel-header-#{$ui-label}-left {
+            border-right-width: 1px !important;
+        }
+
+        .#{$prefix}panel-header-#{$ui-label}-collapsed {
+            @include border-radius($ui-border-radius);
+        }
+
+        @include x-frame('panel-header', '#{$ui-label}-collapsed-top',    top($ui-border-radius) right($ui-border-radius) bottom($ui-border-radius) left($ui-border-radius), $ui-border-width, $panel-header-padding, $ui-header-background-color, $ui-header-background-gradient);
+        @include x-frame('panel-header', '#{$ui-label}-collapsed-right',  top($ui-border-radius) right($ui-border-radius) bottom($ui-border-radius) left($ui-border-radius), $ui-border-width, $panel-header-vertical-padding, $ui-header-background-color, $ui-header-background-gradient, false, right);
+        @include x-frame('panel-header', '#{$ui-label}-collapsed-bottom', top($ui-border-radius) right($ui-border-radius) bottom($ui-border-radius) left($ui-border-radius), $ui-border-width, $panel-header-padding, $ui-header-background-color, $ui-header-background-gradient);
+        @include x-frame('panel-header', '#{$ui-label}-collapsed-left',   top($ui-border-radius) right($ui-border-radius) bottom($ui-border-radius) left($ui-border-radius), $ui-border-width, $panel-header-vertical-padding, $ui-header-background-color, $ui-header-background-gradient, false, right);
+    }
+
+    //background positioning of images
+    .#{$prefix}panel-header-#{$ui-label}-right-tc,
+    .#{$prefix}panel-header-#{$ui-label}-right-mc,
+    .#{$prefix}panel-header-#{$ui-label}-right-bc {
+        background-position: right 0;
+    }
+
+    .#{$prefix}panel-header-#{$ui-label}-bottom-tc,
+    .#{$prefix}panel-header-#{$ui-label}-bottom-mc,
+    .#{$prefix}panel-header-#{$ui-label}-bottom-bc {
+        background-position: 0 bottom;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_progress-bar.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_progress-bar.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_progress-bar.scss	(revision 18277)
@@ -0,0 +1,124 @@
+/**
+ * Creates the base structure of an Ext.ProgressBar
+ * @member Ext.ProgressBar
+ */
+@mixin extjs-progress {
+    .#{$prefix}progress {
+        position: relative;
+        border-width: $progress-border-width;
+        border-style: solid;
+        @include border-radius($progress-border-radius);
+
+        overflow: hidden;
+
+        height: $progress-height;
+    }
+
+    .#{$prefix}progress-bar {
+        height: $progress-height - ($progress-border-width * 2);
+
+        overflow: hidden;
+        position: absolute;
+
+        width: 0;
+
+        @include border-radius($progress-border-radius);
+        border-right: 1px solid;
+        border-top: 1px solid;
+    }
+
+    .#{$prefix}progress-text {
+        overflow: hidden;
+
+        position: absolute;
+
+        padding: 0 5px;
+
+        height: $progress-height - ($progress-border-width * 2);
+
+        font-weight: $progress-text-font-weight;
+        font-size: $progress-text-font-size;
+        line-height: 16px;
+        text-align: $progress-text-text-align;
+    }
+
+    .#{$prefix}progress-text-back {
+        padding-top: 1px;
+    }
+
+    @if $include-ie or $compile-all {
+        .#{$prefix}strict .#{$prefix}ie7m .#{$prefix}progress  {
+            height: $progress-height - ($progress-border-width * 2);
+        }
+    }
+
+    @include extjs-progress-ui(
+        'default',
+
+        $ui-background-color: $progress-background-color,
+        $ui-border-color: $progress-border-color,
+
+        $ui-bar-background-color: $progress-bar-background-color,
+
+        $ui-color-front: $progress-text-color-front,
+        $ui-color-back: $progress-text-color-back
+    )
+}
+
+/**
+ * Creates a visual theme for an Ext.ProgressBar
+ * @member Ext.ProgressBar
+ */
+@mixin extjs-progress-ui(
+    $ui-label,
+
+    $ui-base-color: null,
+
+    $ui-border-color: null,
+    $ui-background-color: null,
+
+    $ui-bar-background-color: null,
+    $ui-bar-background-gradient: glossy,
+
+    $ui-color-front: null,
+    $ui-color-back: null
+){
+    @if $ui-base-color != null {
+        @if $ui-border-color == null {         $ui-border-color: $ui-base-color; }
+        @if $ui-bar-background-color == null { $ui-bar-background-color: $ui-base-color; }
+        @if $ui-color-front == null {          $ui-color-front: lighten($ui-base-color, 60); }
+        @if $ui-color-back == null {           $ui-color-back: darken($ui-base-color, 60); }
+    }
+
+    .#{$prefix}progress-#{$ui-label} {
+        @if $ui-border-color != null { border-color: $ui-border-color; }
+
+        .#{$prefix}progress-bar {
+            @if $ui-border-color != null { border-right-color: $ui-border-color; }
+            @if $ui-border-color != null { border-top-color: lighten($ui-border-color, 25); }
+
+            @if $ui-bar-background-color != null { @include background-gradient($ui-bar-background-color, $ui-bar-background-gradient); }
+        }
+
+        .#{$prefix}progress-text {
+            @if $ui-color-front != null { color: $ui-color-front; }
+        }
+
+        .#{$prefix}progress-text-back {
+            @if $ui-color-back != null { color: $ui-color-back; }
+        }
+    }
+
+    @if $ui-background-color != null {
+        @if not $supports-gradients or $compile-all {
+            .#{$prefix}nlg {
+                .#{$prefix}progress-#{$ui-label} {
+                    .#{$prefix}progress-bar {
+                        background: repeat-x;
+                        background-image: theme-background-image($theme-name, 'progress/progress-#{$ui-label}-bg.gif');
+                    }
+                }
+            }
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_qtip.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_qtip.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_qtip.scss	(revision 18277)
@@ -0,0 +1,168 @@
+/**
+ * Creates the base structure of QuickTip.
+ * @member Ext.tip.QuickTip
+ */
+@mixin extjs-qtip {
+    .#{$prefix}tip {
+        position: absolute;
+        overflow: visible; /*pointer needs to be able to stick out*/
+        border-color: $tip-border-color;
+
+        .#{$prefix}tip-header {
+            .#{$prefix}box-item {
+                padding: $tip-header-padding;
+            }
+
+            .#{$prefix}tool {
+                padding: 0px 1px 0 0 !important;
+            }
+        }
+    }
+
+    @include x-frame(
+        $cls: 'tip',
+        $border-radius: $tip-border-radius,
+        $border-width: $tip-border-width,
+        $background-color: $tip-background-color,
+        $background-gradient: $tip-background-gradient,
+        $table: true
+    );
+
+    .#{$prefix}tip-header-text {
+        @include no-select;
+
+        color: $tip-header-color;
+        font-size: $tip-header-font-size;
+        font-weight: $tip-header-font-weight;
+    }
+
+    .#{$prefix}tip-header-draggable {
+        .#{$prefix}tip-header-text {
+            cursor: move;
+        }
+    }
+
+    // Tip is a Panel. It uses dock layout. Body style must be the same
+    .#{$prefix}tip-body,
+    .#{$prefix}form-invalid-tip-body {
+        overflow: hidden;
+        position: relative;
+        padding: $tip-body-padding;
+    }
+
+    .#{$prefix}tip-header,
+    .#{$prefix}tip-body,
+    .#{$prefix}form-invalid-tip-body {
+        color: $tip-body-color;
+        font-size: $tip-body-font-size;
+        font-weight: $tip-body-font-weight;
+        a {
+            color: $tip-body-link-color;
+        }
+    }
+
+    .#{$prefix}tip-anchor {
+        position: absolute;
+
+        overflow: hidden;
+
+        height: 0;
+        width: 0;
+
+        border-style: solid;
+        border-width: 5px;
+        border-color: $tip-border-color;
+
+        zoom: 1;
+    }
+
+    .#{$prefix}border-box .#{$prefix}tip-anchor {
+        width: 10px;
+        height: 10px;
+    }
+
+    .#{$prefix}tip-anchor-top {
+        border-top-color: transparent;
+        border-left-color: transparent;
+        border-right-color: transparent;
+
+        @if $include_ie {
+            _border-top-color: pink;
+            _border-left-color: pink;
+            _border-right-color: pink;
+            _filter: chroma(color=pink);
+        }
+    }
+
+    .#{$prefix}tip-anchor-bottom {
+        border-bottom-color: transparent;
+        border-left-color: transparent;
+        border-right-color: transparent;
+
+        @if $include_ie {
+            _border-bottom-color: pink;
+            _border-left-color: pink;
+            _border-right-color: pink;
+            _filter: chroma(color=pink);
+        }
+    }
+
+    .#{$prefix}tip-anchor-left {
+        border-top-color: transparent;
+        border-bottom-color: transparent;
+        border-left-color: transparent;
+
+        @if $include-ie {
+            _border-top-color: pink;
+            _border-bottom-color: pink;
+            _border-left-color: pink;
+            _filter: chroma(color=pink);
+        }
+    }
+
+    .#{$prefix}tip-anchor-right {
+        border-top-color: transparent;
+        border-bottom-color: transparent;
+        border-right-color: transparent;
+
+        @if $include-ie {
+            _border-top-color: pink;
+            _border-bottom-color: pink;
+            _border-right-color: pink;
+            _filter: chroma(color=pink);
+        }
+    }
+
+    //error qtip
+    .#{$prefix}form-invalid-tip {
+        border-color: $tip-error-border-color;
+
+        @include inner-border(
+            $width: 1px,
+            $color: $tip-error-inner-border-color
+        );
+    }
+
+    .#{$prefix}form-invalid-tip-body {
+        background: 1px 1px no-repeat;
+        background-image: theme-background-image($theme-name, 'form/exclamation.gif');
+        padding-left: 22px;
+
+        li {
+            margin-bottom: 4px;
+            &.last {
+                margin-bottom: 0;
+            }
+        }
+    }
+
+    @include x-frame(
+        $cls: 'form-invalid-tip',
+        $ui: 'default',
+        $border-radius: $tip-error-border-radius,
+        $border-width: $tip-error-border-width,
+        $background-color: $tip-error-background-color,
+        $background-gradient: $tip-background-gradient,
+        $table: true
+    );
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_slider.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_slider.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_slider.scss	(revision 18277)
@@ -0,0 +1,148 @@
+/**
+ * Creates the base structure of slider.
+ * @member Ext.slider.Multi
+ */
+@mixin extjs-slider {
+    .#{$prefix}slider {
+        zoom:1;
+    }
+
+    .#{$prefix}slider-inner {
+        position:relative;
+        left:0;
+        top:0;
+        overflow:visible;
+        zoom:1;
+    }
+
+    .#{$prefix}slider-focus {
+        position:absolute;
+        left:0;
+        top:0;
+        width:1px;
+        height:1px;
+        line-height:1px;
+        font-size:1px;
+        -moz-outline:0 none;
+        outline:0 none;
+        @include no-select;
+        display:block;
+        overflow:hidden;
+    }
+
+    /* Horizontal styles */
+    .#{$prefix}slider-horz {
+        padding-left:7px;
+        background:transparent no-repeat 0 -24px;
+        width: 100%;
+    }
+
+    .#{$prefix}slider-horz .#{$prefix}slider-end {
+        padding-right:7px;
+        zoom:1;
+        background:transparent no-repeat right -46px;
+    }
+
+    .#{$prefix}slider-horz .#{$prefix}slider-inner {
+        background:transparent repeat-x 0 -2px;
+        height:18px;
+    }
+
+    .#{$prefix}slider-horz .#{$prefix}slider-thumb {
+        width: $horizontal-slider-thumb-width;
+        height: $horizontal-slider-thumb-height;
+        margin-left: -($horizontal-slider-thumb-width / 2);
+        position: absolute;
+        left: 0;
+        top: 1px;
+        background: transparent no-repeat 0 0;
+    }
+
+    .#{$prefix}slider-horz .#{$prefix}slider-thumb-over {
+        background-position: -14px -15px;
+    }
+
+    .#{$prefix}slider-horz .#{$prefix}slider-thumb-drag {
+        background-position: -28px -30px;
+    }
+
+    /* Vertical styles */
+    .#{$prefix}slider-vert {
+        padding-top:7px;
+        background:transparent no-repeat -44px 0;
+    }
+
+    .#{$prefix}slider-vert .#{$prefix}slider-end {
+        padding-bottom:7px;
+        zoom:1;
+        background:transparent no-repeat -22px bottom;
+        width:22px;
+    }
+
+    .#{$prefix}slider-vert .#{$prefix}slider-inner {
+        background:transparent repeat-y 0 0;
+        width:22px;
+    }
+
+    .#{$prefix}slider-vert .#{$prefix}slider-thumb {
+        width: $vertical-slider-thumb-width;
+        height: $vertical-slider-thumb-height;
+        margin-bottom: -($vertical-slider-thumb-height / 2);
+        position: absolute;
+        left: 3px;
+        bottom: 0;
+        background:transparent no-repeat 0 0;
+    }
+
+    .#{$prefix}slider-vert .#{$prefix}slider-thumb-over {
+        background-position: -15px -14px;
+    }
+
+    .#{$prefix}slider-vert .#{$prefix}slider-thumb-drag {
+        background-position: -30px -28px;
+    }
+
+    .#{$prefix}slider-horz,
+    .#{$prefix}slider-horz .#{$prefix}slider-end,
+    .#{$prefix}slider-horz .#{$prefix}slider-inner {
+        background-image: theme-background-image($theme-name, 'slider/slider-bg.png');
+    }
+
+    .#{$prefix}slider-horz .#{$prefix}slider-thumb {
+        background-image: theme-background-image($theme-name, 'slider/slider-thumb.png');
+    }
+
+    .#{$prefix}slider-vert,
+    .#{$prefix}slider-vert .#{$prefix}slider-end,
+    .#{$prefix}slider-vert .#{$prefix}slider-inner {
+        background-image: theme-background-image($theme-name, 'slider/slider-v-bg.png');
+    }
+
+    .#{$prefix}slider-vert .#{$prefix}slider-thumb {
+        background-image: theme-background-image($theme-name, 'slider/slider-v-thumb.png');
+    }
+
+    @if $include-ie {
+        .#{$prefix}ie6 {
+            .#{$prefix}slider-horz,
+            .#{$prefix}slider-horz .#{$prefix}slider-end,
+            .#{$prefix}slider-horz .#{$prefix}slider-inner {
+                background-image: theme-background-image($theme-name, 'slider/slider-bg.gif');
+            }
+
+            .#{$prefix}slider-horz .#{$prefix}slider-thumb {
+                background-image: theme-background-image($theme-name, 'slider/slider-thumb.gif');
+            }
+
+            .#{$prefix}slider-vert,
+            .#{$prefix}slider-vert .#{$prefix}slider-end,
+            .#{$prefix}slider-vert .#{$prefix}slider-inner {
+                background-image: theme-background-image($theme-name, 'slider/slider-v-bg.gif');
+            }
+
+            .#{$prefix}slider-vert .#{$prefix}slider-thumb {
+                background-image: theme-background-image($theme-name, 'slider/slider-v-thumb.gif');
+            }
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_tab.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_tab.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_tab.scss	(revision 18277)
@@ -0,0 +1,529 @@
+/**
+ * Creates the base structure of a Tab.
+ * @member Ext.tab.Tab
+ */
+@mixin extjs-tab {
+    @include x-frame(
+        $cls: 'tab',
+        $ui: 'default-top',
+        $border-radius: $tab-top-border-radius,
+        $border-width: $tab-top-border-width,
+        $background-color: $tab-base-color,
+        $background-gradient: $tab-background-gradient,
+        $background-direction: top,
+        $table: true
+    );
+
+    @include x-frame(
+        $cls: 'tab',
+        $ui: 'default-bottom',
+        $border-radius: $tab-bottom-border-radius,
+        $border-width: $tab-bottom-border-width,
+        $background-color: $tab-base-color,
+        $background-gradient: $tab-background-gradient,
+        $background-direction: bottom,
+        $table: true
+    );
+
+    .#{$prefix}tab {
+        z-index: 1;
+        margin: 0 0 0 $tab-spacing;
+        display: inline-block;
+        zoom: 1;
+        *display: inline;
+        white-space: nowrap;
+        height: $tab-height;
+        border-color: $tab-border-color;
+        cursor: pointer;
+        cursor: hand;
+
+        button {
+            cursor: pointer;
+            cursor: hand;
+        }
+
+        em {
+            display: block;
+            padding: 0 6px;
+            line-height: 1px;
+        }
+
+        button {
+            background: none;
+            border: 0;
+            padding: 0;
+            margin: 0;
+            -webkit-appearance: none;
+            font-size: $tab-font-size;
+            @if $tab-font-weight {
+                font-weight: $tab-font-weight;
+            }
+            @if $tab-font-family {
+                font-family: $tab-font-family;
+            }
+
+            color: $tab-color;
+            outline: 0 none;
+            overflow-x: visible;
+
+            &::-moz-focus-inner {
+                border: 0;
+                padding: 0;
+            }
+
+            .#{$prefix}tab-inner {
+                background-color: transparent;
+                background-repeat: no-repeat;
+                background-position: 0 -2px;
+                display: block;
+                text-align: center;
+                white-space: nowrap;
+                text-overflow: ellipsis;
+                -o-text-overflow: ellipsis;
+                overflow: hidden;
+            }
+        }
+
+        img {
+            display: none;
+        }
+    }
+
+    .#{$prefix}border-box {
+        .#{$prefix}tab-default-top {
+            height: $tab-height + top($tabbar-top-strip-border-width);
+        }
+        .#{$prefix}tab-default-bottom {
+            height: $tab-height + bottom($tabbar-bottom-strip-border-width);
+        }
+    }
+
+    @if $include-ie {
+        * html .#{$prefix}ie {
+            .#{$prefix}tab button {
+                width: 1px;
+            }
+        }
+
+        .#{$prefix}strict .#{$prefix}ie6,
+        .#{$prefix}strict .#{$prefix}ie7 {
+            .#{$prefix}tab .#{$prefix}frame-mc {
+                height: 100%;
+            }
+        }
+
+        .#{$prefix}ie .#{$prefix}tab-active button:active {
+            position: relative;
+            top: -1px;
+            left: -1px;
+        }
+    }
+
+    $framepad: max(top($tab-top-border-radius), right($tab-top-border-radius)) - top($tab-top-border-width);
+
+    .#{$prefix}tab-default-top {
+        @if $tab-inner-border {
+            @include inner-border(
+                $width: $tab-top-inner-border-width,
+                $color: $tab-inner-border-color
+            );
+        }
+
+        border-bottom: 1px solid $tabbar-strip-border-color !important;
+
+        em {
+            padding-bottom: $framepad;
+        }
+
+        button,
+        .#{$prefix}tab-inner {
+            height: $tab-height - $framepad * 2 - top($tab-top-border-width);
+            line-height: $tab-height - $framepad * 2 - top($tab-top-border-width);
+        }
+    }
+
+    // corrects text being clipped at the bottom in safari4 & 5.0.5
+    .#{$prefix}safari4,
+    .#{$prefix}safari5_0 {
+        .#{$prefix}tab-default-top .#{$prefix}tab-inner {
+            line-height: $tab-height - $framepad * 2 - top($tab-top-border-width) - 2;
+        }
+    }
+
+    .#{$prefix}nbr .#{$prefix}tab-default-top {
+        border-bottom-width: 1px !important;
+    }
+
+    .#{$prefix}tab-default-top-active {
+        border-bottom-color: $tabbar-strip-background-color !important;
+    }
+
+    $framepad: max(bottom($tab-bottom-border-radius), left($tab-bottom-border-radius)) - bottom($tab-bottom-border-width);
+
+    .#{$prefix}tab-default-bottom {
+        @if $tab-inner-border {
+            @include inner-border(
+                $width: $tab-bottom-inner-border-width,
+                $color: $tab-inner-border-color
+            );
+        }
+
+        border-top: 1px solid $tabbar-strip-border-color !important;
+
+        @include inner-border(
+            $width: $tab-bottom-inner-border-width,
+            $color: $tab-inner-border-color
+        );
+
+        em {
+            padding-top: $framepad;
+        }
+
+        button,
+        .#{$prefix}tab-inner {
+            height: $tab-height - $framepad * 2 - bottom($tab-bottom-border-width);
+            line-height: $tab-height - $framepad * 2 - bottom($tab-bottom-border-width);
+        }
+    }
+
+    .#{$prefix}nbr .#{$prefix}tab-default-bottom {
+        border-top-width: 1px !important;
+    }
+
+    .#{$prefix}tab-default-bottom-active {
+        border-top-color: $tabbar-strip-background-color !important;
+    }
+
+    .#{$prefix}tab-default-disabled {
+        cursor: default;
+
+        border-color: $tab-border-color-disabled;
+        @include background-gradient($tab-base-color-disabled, $tab-background-gradient-disabled);
+
+        button {
+            color: $tab-color-disabled !important;
+        }
+    }
+
+    .#{$prefix}tab-icon-text-left {
+        .#{$prefix}tab-inner {
+            padding-left: 20px;
+        }
+    }
+
+    .#{$prefix}tab button {
+        position: relative;
+    }
+
+    .#{$prefix}tab-icon {
+        position: absolute;
+        background-repeat: no-repeat;
+        background-position: 0 -1px;
+        top: 0;
+        left: 0;
+        right: auto;
+        bottom: 0;
+        width: 18px;
+        height: 18px;
+    }
+
+    // Stop icons being clipped by the bottom of the button element
+    .#{$prefix}strict {
+        .#{$prefix}ie8 .#{$prefix}tab button,
+        .#{$prefix}ie9 .#{$prefix}tab button {
+            overflow-y: visible;
+        }
+    }
+
+    .#{$prefix}tab-default-disabled .#{$prefix}tab-icon {
+        @include opacity(.5);
+    }
+
+    /* In IE a disabled icon needs to be hidden or the opacity effect covers some of the text */
+    .#{$prefix}tab-noicon .#{$prefix}tab-icon {
+        display: none;
+    }
+
+    //over
+    .#{$prefix}tab-over {
+        @if $tab-border-color-over != $tab-border-color {
+            border-color: $tab-border-color-over;
+        }
+
+        button {
+            @if $tab-color-over != $tab-color {
+                color: $tab-color-over;
+            }
+            @if $tab-font-weight-over != $tab-font-weight {
+                font-weight: $tab-font-weight-over;
+            }
+            @if $tab-font-size-over != $tab-font-size {
+                font-size: $tab-font-size-over;
+            }
+            @if $tab-font-family-over != $tab-font-family {
+                font-family: $tab-font-family-over;
+            }
+        }
+    }
+
+    .#{$prefix}tab-top-over {
+        @include background-gradient($tab-base-color-over, $tab-background-gradient-over, top);
+    }
+    .#{$prefix}tab-bottom-over {
+        @include background-gradient($tab-base-color-over, $tab-background-gradient-over, bottom);
+    }
+
+    //active
+    .#{$prefix}tab-active {
+        z-index: 3;
+        @if $tab-border-color-active != $tab-border-color {
+            border-color: $tab-border-color-active;
+        }
+
+        button {
+            @if $tab-color-active != $tab-color {
+                color: $tab-color-active;
+            }
+            @if $tab-font-weight-active != $tab-font-weight {
+                font-weight: $tab-font-weight-active;
+            }
+            @if $tab-font-size-active != $tab-font-size {
+                font-size: $tab-font-size-active;
+            }
+            @if $tab-font-family-active != $tab-font-family {
+                font-family: $tab-font-family-active;
+            }
+        }
+    }
+
+    .#{$prefix}tab-top-active {
+        @include background-gradient($tab-base-color-active, $tab-background-gradient-active, top);
+    }
+    .#{$prefix}tab-bottom-active {
+        @include background-gradient($tab-base-color-active, $tab-background-gradient-active, bottom);
+    }
+
+    //disabled
+    .#{$prefix}tab-disabled {
+        @if $tab-border-color-disabled != $tab-border-color {
+            border-color: $tab-border-color-disabled;
+        }
+
+        button {
+            @if $tab-color-disabled != $tab-color {
+                color: $tab-color-disabled;
+            }
+            @if $tab-font-weight-disabled != $tab-font-weight {
+                font-weight: $tab-font-weight-disabled;
+            }
+            @if $tab-font-size-disabled != $tab-font-size {
+                font-size: $tab-font-size-disabled;
+            }
+            @if $tab-font-family-disabled != $tab-font-family {
+                font-family: $tab-font-family-disabled;
+            }
+        }
+    }
+
+    .#{$prefix}tab-top-disabled {
+        background-image: none;
+        background: transparent;
+        @include background-gradient($tab-base-color-disabled, $tab-background-gradient-disabled, top);
+    }
+    .#{$prefix}tab-bottom-disabled {
+        background-image: none;
+        background: transparent;
+        @include background-gradient($tab-base-color-disabled, $tab-background-gradient-disabled, bottom);
+    }
+
+    @if not $supports-gradients or $compile-all {
+        .#{$prefix}nlg {
+            @if $tab-background-gradient != null {
+                .#{$prefix}tab-top { background-image: theme-background-image($theme-name, 'tab/tab-default-top-bg.gif'); }
+                .#{$prefix}tab-bottom { background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-bg.gif'); }
+            }
+
+            @if $tab-background-gradient-over != null {
+                .#{$prefix}tab-top-over { background-image: theme-background-image($theme-name, 'tab/tab-default-top-over-bg.gif'); }
+                .#{$prefix}tab-bottom-over { background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-over-bg.gif'); }
+            }
+
+            @if $tab-background-gradient-active != null {
+                .#{$prefix}tab-top-active { background-image: theme-background-image($theme-name, 'tab/tab-default-top-active-bg.gif'); }
+                .#{$prefix}tab-bottom-active { background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-active-bg.gif'); }
+            }
+
+            @if $tab-background-gradient-disabled != null {
+                .#{$prefix}tab-top-disabled { background-image: theme-background-image($theme-name, 'tab/tab-default-top-disabled-bg.gif') !important; }
+                .#{$prefix}tab-bottom-disabled { background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-disabled-bg.gif') !important; }
+            }
+        }
+    }
+
+    .#{$prefix}tab-closable em {
+        padding-right: $tab-closable-icon-width + 3;
+    }
+
+    .#{$prefix}tab-close-btn {
+        position: absolute;
+        top: $tab-closable-icon-top;
+        right: $tab-closable-icon-right;
+        width: $tab-closable-icon-width;
+        height: $tab-closable-icon-height;
+        font-size: 0;
+        line-height: 0;
+        text-indent: -999px;
+        background: no-repeat;
+        background-image: theme-background-image($theme-name, $tab-closable-icon);
+        @include opacity(.6);
+    }
+
+    .#{$prefix}nbr .#{$prefix}tab-close-btn {
+        top: $nbr-tab-closable-icon-top;
+        right: $nbr-tab-closable-icon-right;
+    }
+
+    /* Include the element name otherwise Internet Explorer 7 & 8 take a performance hit */
+    a.#{$prefix}tab-close-btn:hover {
+        @include opacity(1);
+    }
+
+    /* Include the element name to raise the specificity to equal the :hover */
+    .#{$prefix}tab-default-disabled a.#{$prefix}tab-close-btn {
+        @include opacity(0.3);
+    }
+
+    @if not $supports-border-radius or $compile-all {
+        .#{$prefix}nbr {
+            .#{$prefix}tab-top-over {
+                .#{$prefix}frame-tl,
+                .#{$prefix}frame-bl,
+                .#{$prefix}frame-tr,
+                .#{$prefix}frame-br,
+                .#{$prefix}frame-tc,
+                .#{$prefix}frame-bc {
+                    background-image: theme-background-image($theme-name, 'tab/tab-default-top-over-corners.gif');
+                }
+                .#{$prefix}frame-ml,
+                .#{$prefix}frame-mr {
+                    background-image: theme-background-image($theme-name, 'tab/tab-default-top-over-sides.gif');
+                }
+                @if $tab-background-gradient-over != null {
+                    .#{$prefix}frame-mc {
+                        background-color: $tab-base-color-over;
+                        background-repeat: repeat-x;
+                        background-image: theme-background-image($theme-name, 'tab/tab-default-top-over-bg.gif');
+                    }
+                }
+            }
+
+            .#{$prefix}tab-bottom-over {
+                .#{$prefix}frame-tl,
+                .#{$prefix}frame-bl,
+                .#{$prefix}frame-tr,
+                .#{$prefix}frame-br,
+                .#{$prefix}frame-tc,
+                .#{$prefix}frame-bc {
+                    background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-over-corners.gif');
+                }
+                .#{$prefix}frame-ml,
+                .#{$prefix}frame-mr {
+                    background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-over-sides.gif');
+                }
+                @if $tab-background-gradient-over != null {
+                    .#{$prefix}frame-mc {
+                        background-color: $tab-base-color-over;
+                        background-repeat: repeat-x;
+                        background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-over-bg.gif');
+                    }
+                }
+            }
+
+            .#{$prefix}tab-top-active {
+                .#{$prefix}frame-tl,
+                .#{$prefix}frame-bl,
+                .#{$prefix}frame-tr,
+                .#{$prefix}frame-br,
+                .#{$prefix}frame-tc,
+                .#{$prefix}frame-bc {
+                    background-image: theme-background-image($theme-name, 'tab/tab-default-top-active-corners.gif');
+                }
+                .#{$prefix}frame-ml,
+                .#{$prefix}frame-mr {
+                    background-image: theme-background-image($theme-name, 'tab/tab-default-top-active-sides.gif');
+                }
+                @if $tab-background-gradient-active != null {
+                    .#{$prefix}frame-mc {
+                        background-color: $tab-base-color-active;
+                        background-repeat: repeat-x;
+                        background-image: theme-background-image($theme-name, 'tab/tab-default-top-active-bg.gif');
+                    }
+                }
+            }
+
+            .#{$prefix}tab-bottom-active {
+                .#{$prefix}frame-tl,
+                .#{$prefix}frame-bl,
+                .#{$prefix}frame-tr,
+                .#{$prefix}frame-br,
+                .#{$prefix}frame-tc,
+                .#{$prefix}frame-bc {
+                    background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-active-corners.gif');
+                }
+                .#{$prefix}frame-ml,
+                .#{$prefix}frame-mr {
+                    background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-active-sides.gif');
+                }
+                @if $tab-background-gradient-active != null {
+                    .#{$prefix}frame-mc {
+                        background-color: $tab-base-color-active;
+                        background-repeat: repeat-x;
+                        background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-active-bg.gif');
+                    }
+                }
+            }
+
+            .#{$prefix}tab-top-disabled {
+                .#{$prefix}frame-tl,
+                .#{$prefix}frame-bl,
+                .#{$prefix}frame-tr,
+                .#{$prefix}frame-br,
+                .#{$prefix}frame-tc,
+                .#{$prefix}frame-bc {
+                    background-image: theme-background-image($theme-name, 'tab/tab-default-top-disabled-corners.gif');
+                }
+                .#{$prefix}frame-ml,
+                .#{$prefix}frame-mr {
+                    background-image: theme-background-image($theme-name, 'tab/tab-default-top-disabled-sides.gif');
+                }
+                @if $tab-background-gradient-disabled != null {
+                    .#{$prefix}frame-mc {
+                        background-repeat: repeat-x;
+                        background-image: theme-background-image($theme-name, 'tab/tab-default-top-disabled-bg.gif');
+                    }
+                }
+            }
+
+            .#{$prefix}tab-bottom-disabled {
+                .#{$prefix}frame-tl,
+                .#{$prefix}frame-bl,
+                .#{$prefix}frame-tr,
+                .#{$prefix}frame-br,
+                .#{$prefix}frame-tc,
+                .#{$prefix}frame-bc {
+                    background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-disabled-corners.gif');
+                }
+                .#{$prefix}frame-ml,
+                .#{$prefix}frame-mr {
+                    background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-disabled-sides.gif');
+                }
+                @if $tab-background-gradient-disabled != null {
+                    .#{$prefix}frame-mc {
+                        background-repeat: repeat-x;
+                        background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-disabled-bg.gif');
+                    }
+                }
+            }
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_tabbar.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_tabbar.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_tabbar.scss	(revision 18277)
@@ -0,0 +1,152 @@
+
+@mixin tab-bar-top($toolbarCls, $bodyCls, $stripCls, $body-padding, $body-border-width, $strip-border-width, $strip-height) {
+    .#{$prefix}#{$toolbarCls} {
+        .#{$prefix}#{$bodyCls} {
+            height: $tab-height;
+            border-width: $body-border-width;
+            padding: $body-padding;
+        }
+
+        .#{$prefix}#{$stripCls} {
+            /*position strip from top rather than bottom to avoid off-by-one error in IE6*/
+            top: $tab-height + top($body-border-width) + top($body-padding);
+            border-width: $strip-border-width;
+            height: $strip-height - vertical($strip-border-width);
+        }
+    }
+    .#{$prefix}border-box {
+        .#{$prefix}#{$toolbarCls} {
+            .#{$prefix}#{$bodyCls} {
+                height: $tab-height + vertical($body-border-width) + vertical($body-padding);
+            }
+
+            .#{$prefix}#{$stripCls} {
+                height: $strip-height;
+            }
+        }
+    }
+}
+
+@mixin tab-bar-bottom($toolbarCls, $bodyCls, $stripCls, $body-padding, $body-border-width, $strip-border-width, $strip-height) {
+    .#{$prefix}#{$toolbarCls} {
+        .#{$prefix}#{$bodyCls} {
+            height: $tab-height;
+            border-width: $body-border-width;
+            padding: $body-padding;
+
+            .#{$prefix}box-inner {
+                position: relative;
+                top: 0 - bottom($strip-border-width);
+            }
+
+            .#{$prefix}box-scroller,
+            .#{$prefix}box-scroller-left,
+            .#{$prefix}box-scroller-right {
+                height: $tab-height + bottom($body-padding) + bottom($strip-border-width);
+            }
+        }
+
+        .#{$prefix}#{$stripCls} {
+            top: top($body-border-width);
+            border-width: $strip-border-width;
+            height: $strip-height - vertical($strip-border-width);
+        }
+    }
+    .#{$prefix}border-box {
+        .#{$prefix}#{$toolbarCls} {
+            .#{$prefix}#{$bodyCls} {
+                height: $tab-height + vertical($body-border-width) + vertical($body-padding);
+            }
+
+            .#{$prefix}#{$stripCls} {
+                height: $strip-height;
+            }
+        }
+    }
+}
+
+/**
+ * Creates a visual theme for TabBar
+ * @member Ext.tab.Bar
+ */
+@mixin extjs-tabbar {
+    .#{$prefix}tab-bar {
+        position: relative;
+        background-color: transparent;
+        @include background-gradient($tabbar-base-color, $tabbar-background-gradient);
+        font-size: $tab-font-size;
+    }
+
+    .#{$prefix}nlg .#{$prefix}tab-bar {
+        background-image: theme-background-image($theme-name, 'tab-bar/tab-bar-default-bg.gif');
+    }
+
+    .#{$prefix}tab-bar-default-plain,
+    .#{$prefix}nlg .#{$prefix}tab-bar-default-plain {
+        background: transparent none;
+    }
+
+
+    .#{$prefix}tab-bar-body {
+        border-style: solid;
+        border-color: $tabbar-border-color;
+
+        position: relative;
+        z-index: 2;
+        zoom: 1;
+    }
+
+    /* Top Tabs */
+    @include tab-bar-top(
+        "tab-bar-top",
+        "tab-bar-body",
+        "tab-bar-strip",
+        $tabbar-top-body-padding,
+        $tabbar-top-body-border-width,
+        $tabbar-top-strip-border-width,
+        $tabbar-strip-height
+    );
+    @include tab-bar-top(
+        "tab-bar-top",
+        "tab-bar-body-default-plain",
+        "tab-bar-strip-default-plain",
+        $tabbar-top-plain-body-padding,
+        $tabbar-top-plain-body-border-width,
+        $tabbar-top-strip-border-width,
+        $tabbar-strip-height
+    );
+
+    /* Bottom Tabs */
+    @include tab-bar-bottom(
+        "tab-bar-bottom",
+        "tab-bar-body",
+        "tab-bar-strip",
+        $tabbar-bottom-body-padding,
+        $tabbar-bottom-body-border-width,
+        $tabbar-bottom-strip-border-width,
+        $tabbar-strip-height
+    );
+
+    @include tab-bar-bottom(
+        "tab-bar-bottom",
+        "tab-bar-body-default-plain",
+        "tab-bar-strip-default-plain",
+        $tabbar-bottom-plain-body-padding,
+        $tabbar-bottom-plain-body-border-width,
+        $tabbar-bottom-strip-border-width,
+        $tabbar-strip-height
+    );
+
+    .#{$prefix}tab-bar-strip-default,
+    .#{$prefix}tab-bar-strip-default-plain {
+        font-size: 0;
+        line-height: 0;
+        position: absolute;
+        z-index: 1;
+        border-style: solid;
+        overflow: hidden;
+        border-color: $tabbar-strip-border-color;
+        background-color: $tabbar-strip-background-color;
+        zoom: 1;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_toolbar.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_toolbar.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_toolbar.scss	(revision 18277)
@@ -0,0 +1,162 @@
+/**
+ * Creates base structure for Toolbar
+ * @member Ext.toolbar.Toolbar
+ */
+@mixin extjs-toolbar {
+    .#{$prefix}toolbar {
+        font-size: $toolbar-font-size;
+
+        border: 1px solid;
+
+        padding: $toolbar-vertical-spacing 0 $toolbar-vertical-spacing $toolbar-horizontal-spacing;
+
+        .#{$prefix}form-item-label{
+            font-size: $toolbar-font-size;
+            line-height: 15px;
+        }
+
+        .#{$prefix}toolbar-item {
+            margin: 0 $toolbar-horizontal-spacing 0 0;
+        }
+
+        .#{$prefix}toolbar-text {
+            margin-left: 4px;
+            margin-right: 6px;
+            white-space: nowrap;
+            color: $toolbar-text-color;
+            line-height: $toolbar-text-line-height;
+            font-family: $toolbar-text-font-family;
+            font-size: $toolbar-text-font-size;
+            font-weight: $toolbar-text-font-weight;
+        }
+
+        .#{$prefix}toolbar-separator {
+            display: block;
+            font-size: 1px;
+            overflow: hidden;
+            cursor: default;
+            border: 0;
+        }
+
+        .#{$prefix}toolbar-separator-horizontal {
+            margin: 0 3px 0 2px;
+
+            height: 14px;
+            width: 0px;
+
+            border-left: 1px solid $toolbar-separator-color;
+            border-right: 1px solid $toolbar-separator-highlight-color;
+        }
+    }
+
+    @if $include-ie {
+        .#{$prefix}quirks .#{$prefix}ie .#{$prefix}toolbar .#{$prefix}toolbar-separator-horizontal {
+            width: 2px;
+        }
+    }
+
+    .#{$prefix}toolbar-footer {
+        background: transparent;
+        border: 0px none;
+        margin-top: 3px;
+
+        padding: $toolbar-footer-vertical-spacing 0 $toolbar-footer-vertical-spacing $toolbar-footer-horizontal-spacing;
+
+        .#{$prefix}box-inner {
+            border-width: 0;
+        }
+
+        .#{$prefix}toolbar-item {
+            margin: 0 $toolbar-footer-horizontal-spacing 0 0;
+        }
+    }
+
+    .#{$prefix}toolbar-vertical {
+        padding: $toolbar-vertical-spacing $toolbar-horizontal-spacing 0 $toolbar-horizontal-spacing;
+
+        .#{$prefix}toolbar-item {
+            margin: 0 0 $toolbar-horizontal-spacing 0;
+        }
+
+        .#{$prefix}toolbar-text {
+            margin-top: 4px;
+            margin-bottom: 6px;
+        }
+
+        .#{$prefix}toolbar-separator-vertical {
+            margin: 2px 5px 3px 5px;
+
+            height: 0px;
+            width: 10px;
+            line-height: 0px;
+
+            border-top: 1px solid $toolbar-separator-color;
+            border-bottom: 1px solid $toolbar-separator-highlight-color;
+        }
+    }
+
+    .#{$prefix}toolbar-scroller {
+        padding-left: 0;
+    }
+
+    .#{$prefix}toolbar-spacer {
+        width: $toolbar-spacer-width;
+    }
+
+    // Background for overflow button inserted by the Menu box overflow handler within a toolbar
+    .#{$prefix}toolbar-more-icon {
+        background-image: theme-background-image($theme-name, 'toolbar/more.gif') !important;
+        background-position: 2px center !important;
+        background-repeat: no-repeat;
+    }
+
+    @include extjs-toolbar-ui(
+        'default',
+        $background-color: $toolbar-background-color,
+        $background-gradient: $toolbar-background-gradient,
+        $border-color: $toolbar-border-color
+    );
+
+    //plain toolbars have no border
+    //by default they get no color, so they are transparent. IE6 doesnt support transparent borders
+    //so we must set the width to 0.
+    .#{$prefix}toolbar-plain {
+        border: 0;
+    }
+}
+
+/**
+ * Creates a visual theme for an Toolbar.
+ * @param {String} $ui The name of the UI
+ * @param {Color} $background-color The background color of the toolbar (defaults to transparent)
+ * @param {Gradient/color-stops} $background-gradient The background gradient of the toolbar (defaults to null)
+ * @param {Color} $border-color The border color of the toolbar (defaults to null)
+ * @member Ext.toolbar.Toolbar
+ */
+@mixin extjs-toolbar-ui(
+    $ui,
+
+    $background-color: transparent,
+    $background-gradient: null,
+
+    $border-color: null
+) {
+    .#{$prefix}toolbar-#{$ui} {
+        @if $border-color != null {
+            border-color: $border-color;
+        }
+
+        @include background-gradient($background-color, $background-gradient);
+    }
+
+    @if not $supports-gradients or $compile-all {
+        @if $background-gradient != null {
+            .#{$prefix}nlg {
+                .#{$prefix}toolbar-#{$ui} {
+                    background-image: theme-background-image($theme-name, 'toolbar/toolbar-#{$ui}-bg.gif') !important;
+                    background-repeat: repeat-x;
+                }
+            }
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_tree.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_tree.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_tree.scss	(revision 18277)
@@ -0,0 +1,296 @@
+/**
+ * Creates the base structure of Tree.
+ * @member Ext.tree.Panel
+ */
+@mixin extjs-tree {
+
+    // Tree tables must assume either full width of the View element, or, when necessary, must overflow
+    // They must not shrink wrap the width and only be as wide as their widest node's content.
+    .#{$prefix}autowidth-table table.#{$prefix}grid-table {
+        table-layout: auto;
+        width: auto!important;
+    }
+
+    .#{$prefix}tree-no-lines .#{$prefix}tree-elbow {
+        background-color: transparent;
+    }
+
+    .#{$prefix}tree-no-lines .#{$prefix}tree-elbow-end {
+        background-color: transparent;
+    }
+
+    .#{$prefix}tree-no-lines .#{$prefix}tree-elbow-line {
+        background-color: transparent;
+    }
+
+    //arrows
+    .#{$prefix}tree-arrows .#{$prefix}tree-elbow-plus {
+        background: transparent no-repeat 0 0;
+    }
+
+    .#{$prefix}tree-arrows .#{$prefix}tree-elbow-end-plus {
+        background: transparent no-repeat 0 0;
+    }
+
+    .#{$prefix}tree-arrows .#{$prefix}tree-elbow-end-minus {
+        background: transparent no-repeat -16px 0;
+    }
+
+    .#{$prefix}tree-arrows .#{$prefix}tree-elbow-minus {
+        background: transparent no-repeat -16px 0;
+    }
+
+    .#{$prefix}tree-arrows .#{$prefix}tree-elbow {
+        background-color: transparent !important;
+    }
+
+    .#{$prefix}tree-arrows .#{$prefix}tree-elbow-end {
+        background-color: transparent !important;
+    }
+
+    .#{$prefix}tree-arrows .#{$prefix}tree-elbow-line {
+        background-color: transparent !important;
+    }
+
+    //elbows
+    .#{$prefix}tree-arrows .#{$prefix}tree-expander-over .#{$prefix}tree-elbow-plus,
+    .#{$prefix}tree-arrows .#{$prefix}tree-expander-over .#{$prefix}tree-elbow-end-plus {
+        background-position: -32px 0;
+    }
+
+    .#{$prefix}tree-arrows .#{$prefix}tree-expander-over .#{$prefix}tree-elbow-minus,
+    .#{$prefix}tree-arrows .#{$prefix}tree-expander-over .#{$prefix}tree-elbow-end-minus {
+        background-position: -48px 0;
+    }
+
+    .#{$prefix}tree-arrows .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-elbow-plus,
+    .#{$prefix}tree-arrows .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-elbow-end-plus {
+        background-position: -16px 0;
+    }
+
+    .#{$prefix}tree-arrows .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-expander-over .#{$prefix}tree-elbow-plus,
+    .#{$prefix}tree-arrows .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-expander-over .#{$prefix}tree-elbow-end-plus {
+        background-position: -48px 0;
+    }
+
+    .#{$prefix}tree-elbow-plus,
+    .#{$prefix}tree-elbow-minus,
+    .#{$prefix}tree-elbow-end-plus,
+    .#{$prefix}tree-elbow-end-minus{
+        cursor: pointer;
+    }
+
+    //elbows
+    .#{$prefix}tree-lines {
+        .#{$prefix}tree-elbow {
+            background-image: theme-background-image($theme-name, 'tree/elbow.gif');
+        }
+
+        .#{$prefix}tree-elbow-end {
+            background-image: theme-background-image($theme-name, 'tree/elbow-end.gif');
+        }
+
+        .#{$prefix}tree-elbow-plus {
+            background-image: theme-background-image($theme-name, 'tree/elbow-plus.gif');
+        }
+
+        .#{$prefix}tree-elbow-end-plus {
+            background-image: theme-background-image($theme-name, 'tree/elbow-end-plus.gif');
+        }
+
+        .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-elbow-plus {
+            background-image: theme-background-image($theme-name, 'tree/elbow-minus.gif');
+        }
+
+        .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-elbow-end-plus {
+            background-image: theme-background-image($theme-name, 'tree/elbow-end-minus.gif');
+        }
+
+        .#{$prefix}tree-elbow-line {
+            background-image: theme-background-image($theme-name, 'tree/elbow-line.gif');
+        }
+    }
+
+    .#{$prefix}tree-no-lines {
+        .#{$prefix}tree-elbow-plus,
+        .#{$prefix}tree-elbow-end-plus {
+        	background-image: theme-background-image($theme-name, 'tree/elbow-plus-nl.gif');
+        }
+
+        .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-elbow-plus,
+        .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-elbow-end-plus {
+            background-image: theme-background-image($theme-name, 'tree/elbow-end-minus-nl.gif');
+        }
+    }
+
+    .#{$prefix}tree-arrows {
+        .#{$prefix}tree-elbow-plus,
+        .#{$prefix}tree-elbow-minus,
+        .#{$prefix}tree-elbow-end-plus,
+        .#{$prefix}tree-elbow-end-minus {
+            background-image: theme-background-image($theme-name, 'tree/arrows.gif');
+        }
+    }
+
+    .#{$prefix}tree-icon {
+        margin: $tree-icon-margin-top $tree-icon-margin-right 0 0;
+    }
+
+    .#{$prefix}grid-with-row-lines .#{$prefix}tree-icon {
+        margin-top: $tree-icon-margin-top - 1
+    }
+
+    .#{$prefix}tree-elbow,
+    .#{$prefix}tree-elbow-end,
+    .#{$prefix}tree-elbow-plus,
+    .#{$prefix}tree-elbow-end-plus,
+    .#{$prefix}tree-elbow-empty,
+    .#{$prefix}tree-elbow-line {
+        height: $tree-elbow-height;
+        width: $tree-elbow-width;
+    }
+
+    .#{$prefix}grid-with-row-lines {
+        .#{$prefix}tree-elbow,
+        .#{$prefix}tree-elbow-end,
+        .#{$prefix}tree-elbow-plus,
+        .#{$prefix}tree-elbow-end-plus,
+        .#{$prefix}tree-elbow-empty,
+        .#{$prefix}tree-elbow-line {
+            height: $tree-elbow-height - 1;
+            background-position: 0 -1px;
+        }
+    }
+
+    .#{$prefix}tree-icon-leaf {
+        width: $tree-elbow-width;
+        background-image: theme-background-image($theme-name, 'tree/leaf.gif');
+    }
+
+    .#{$prefix}tree-icon-parent {
+        width: $tree-elbow-width;
+        background-image: theme-background-image($theme-name, 'tree/folder.gif');
+    }
+
+    .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-icon-parent {
+        background-image: theme-background-image($theme-name, 'tree/folder-open.gif');
+    }
+
+    .#{$prefix}grid-rowbody {
+        padding: 0;
+    }
+
+    .#{$prefix}grid-cell-treecolumn .#{$prefix}grid-cell-inner {
+        padding: 0;
+        line-height: $tree-elbow-height - 1;
+    }
+
+    .#{$prefix}grid-with-row-lines .#{$prefix}grid-cell-treecolumn .#{$prefix}grid-cell-inner {
+        line-height: $tree-elbow-height - 3;
+    }
+
+    .#{$prefix}tree-panel .#{$prefix}grid-cell-inner {
+        cursor: pointer;
+        img {
+            display: inline-block;
+            vertical-align: top;
+        }
+    }
+
+    @if $include-ie {
+        .#{$prefix}ie .#{$prefix}tree-panel {
+            .#{$prefix}tree-elbow,
+            .#{$prefix}tree-elbow-end,
+            .#{$prefix}tree-elbow-plus,
+            .#{$prefix}tree-elbow-end-plus,
+            .#{$prefix}tree-elbow-empty,
+            .#{$prefix}tree-elbow-line {
+                // vertical alignment is necessary for IE to show the ellipsis in the right place.
+                vertical-align: -6px;
+            }
+        }
+    }
+
+    .#{$prefix}grid-editor-on-text-node {
+        .#{$prefix}form-text {
+            // specify padding left and padding right individually since we don't want to override padding-bottom (which can vary)
+            padding-left: $grid-cell-treecolumn-editor-field-padding-horizontal;
+            padding-right: $grid-cell-treecolumn-editor-field-padding-horizontal;
+        }
+    }
+    @if $include-ie {
+        .#{$prefix}ie .#{$prefix}grid-editor-on-text-node .#{$prefix}form-text {
+            padding-left: $grid-cell-treecolumn-editor-field-padding-horizontal + 1px;
+            padding-right: $grid-cell-treecolumn-editor-field-padding-horizontal + 1px;
+        }
+    }
+    @if $include-opera {
+        .#{$prefix}opera .#{$prefix}grid-editor-on-text-node .#{$prefix}form-text {
+            padding-left: $grid-cell-treecolumn-editor-field-padding-horizontal + 1px;
+            padding-right: $grid-cell-treecolumn-editor-field-padding-horizontal + 1px;
+        }
+    }
+
+    .#{$prefix}tree-checkbox {
+        margin: $tree-checkbox-margin-top $tree-checkbox-margin-right 0 0;
+        display: inline-block;
+        vertical-align: top;
+
+        width: $form-checkbox-size;
+        height: $form-checkbox-size;
+        background: no-repeat;
+        background-image: theme-background-image($theme-name, $form-checkbox-image);
+
+        overflow: hidden;
+        padding: 0;
+        border: 0;
+        &::-moz-focus-inner {
+            padding: 0;
+            border: 0;
+        }
+    }
+
+    .#{$prefix}grid-with-row-lines .#{$prefix}tree-checkbox {
+        margin-top: $tree-checkbox-margin-top - 1;
+    }
+
+    .#{$prefix}tree-checkbox-checked {
+        background-position: 0 (0 - $form-checkbox-size);
+    }
+
+    .#{$prefix}tree-drop-ok-append .#{$prefix}dd-drop-icon {
+        background-image: theme-background-image($theme-name, 'tree/drop-append.gif');
+    }
+
+    .#{$prefix}tree-drop-ok-above .#{$prefix}dd-drop-icon {
+        background-image: theme-background-image($theme-name, 'tree/drop-above.gif');
+    }
+
+    .#{$prefix}tree-drop-ok-below .#{$prefix}dd-drop-icon {
+        background-image: theme-background-image($theme-name, 'tree/drop-below.gif');
+    }
+
+    .#{$prefix}tree-drop-ok-between .#{$prefix}dd-drop-icon {
+        background-image: theme-background-image($theme-name, 'tree/drop-between.gif');
+    }
+
+    .#{$prefix}grid-tree-loading .#{$prefix}tree-icon {
+        background-image: theme-background-image($theme-name, 'tree/loading.gif');
+    }
+
+    .#{$prefix}tree-ddindicator {
+        height: 1px;
+        border-width: 1px 0px 0px;
+        border-style: dotted;
+        border-color: green;
+    }
+
+    .#{$prefix}grid-tree-loading span {
+    	 font-style: italic;
+    	 color: #444444;
+    }
+
+    .#{$prefix}tree-animator-wrap {
+        overflow: hidden;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_viewport.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_viewport.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_viewport.scss	(revision 18277)
@@ -0,0 +1,14 @@
+/**
+ * Creates the base structure of Viewport.
+ * @member Ext.container.Viewport
+ */
+@mixin extjs-viewport {
+    .#{$prefix}viewport, .#{$prefix}viewport body {
+        margin: 0;
+        padding: 0;
+        border: 0 none;
+        overflow: hidden;
+        height: 100%;
+        position: static;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_window.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_window.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/_window.scss	(revision 18277)
@@ -0,0 +1,232 @@
+/**
+ * Creates the base structure of an Ext.Window
+ * @member Ext.window.Window
+ */
+@mixin extjs-window {
+    .#{$prefix}window {
+        outline: none;
+        overflow: hidden;
+
+        .#{$prefix}window-wrap {
+            position: relative;
+        }
+    }
+
+    .#{$prefix}window-body {
+        position: relative;
+        border-style: $window-body-border-style;
+        overflow: hidden;
+    }
+
+    //maximized window
+    .#{$prefix}window-maximized {
+        .#{$prefix}window-wrap {
+            .#{$prefix}window-header {
+                @include important-no-border-radius;
+            }
+        }
+    }
+
+    .#{$prefix}window-header-top {
+        margin-bottom: -2px;
+    }
+    .#{$prefix}window-header-body-horizontal {
+        margin-top: -1px;
+    }
+
+    .#{$prefix}window-header-bottom {
+        margin-top: -1px;
+        margin-bottom: -1px;
+    }
+
+    .#{$prefix}window-header-left {
+        margin-right: -1px;
+    }
+
+    .#{$prefix}window-header-right {
+        margin-left: -1px;
+    }
+
+    .#{$prefix}window-header-vertical {
+        .#{$prefix}surface {
+            padding-left: 1px;
+        }
+    }
+
+    // collapsed window header styles
+    .#{$prefix}window-collapsed {
+        .#{$prefix}window-header-vertical {
+            @include border-radius(5px);
+        }
+        .#{$prefix}window-header-horizontal {
+            @include border-radius(5px);
+        }
+
+        // Padding changes for collapsed headers.
+        .#{$prefix}window-header-left {
+            padding-right: 5px !important;
+            margin-right: 0;
+        }
+
+        .#{$prefix}window-header-right {
+            padding-left: 5px !important;
+            margin-left: 0;
+        }
+
+        .#{$prefix}window-header-top {
+            padding-bottom: 5px !important;
+            margin-bottom: -1px;
+        }
+
+        .#{$prefix}window-header-bottom {
+            padding-top: 5px !important;
+            margin-top: 0;
+        }
+    }
+
+    .#{$prefix}window-header-left,
+    .#{$prefix}window-header-right {
+        .#{$prefix}vml-base {
+            left: -3px !important;
+        }
+    }
+
+    .#{$prefix}opera,
+    .#{$prefix}strict .#{$prefix}ie9 {
+        .#{$prefix}window-header-vertical {
+            .#{$prefix}surface {
+                padding-left: 2px;
+            }
+        }
+    }
+
+    .#{$prefix}window-header-text-container {
+        overflow: hidden;
+        -o-text-overflow: ellipsis;
+        text-overflow: ellipsis;
+    }
+
+    .#{$prefix}window-header-text {
+        @include no-select;
+        white-space: nowrap;
+    }
+
+    @include extjs-window-ui(
+        'default',
+
+        $ui-border-radius: $window-border-radius,
+        $ui-border-color: $window-border-color,
+        $ui-inner-border-color: $window-inner-border-color,
+
+        $ui-header-color: $window-header-color,
+
+        $ui-body-border-color: $window-body-border-color,
+        $ui-body-background-color: $window-body-background-color,
+        $ui-body-color: $window-body-color,
+
+        $ui-background-color: $window-background-color
+    );
+
+    .#{$prefix}window-body-plain {
+        background: transparent;
+    }
+}
+
+/**
+ * Creates a visual theme for an Ext.Panel
+ * @member Ext.window.Window
+ */
+@mixin extjs-window-ui(
+    $ui-label,
+
+    $ui-padding: null,
+    $ui-border-radius: null,
+    $ui-border-color: null,
+    $ui-inner-border-color: null,
+
+    $ui-header-color: null,
+    $ui-header-font-size: $window-header-font-size,
+    $ui-header-font-weight: $window-header-font-weight,
+
+    $ui-body-border-color: null,
+    $ui-body-background-color: null,
+    $ui-body-color: null,
+
+    $ui-background-color: null
+){
+    $ui-header-text-height: $window-header-line-height;
+
+    .#{$prefix}window-#{$ui-label} {
+        @if $ui-border-color != null { border-color: $ui-border-color; }
+        @if $ui-border-radius != null { @include border-radius($ui-border-radius); }
+
+        @if $ui-inner-border-color != null { @include inner-border($window-inner-border-width, $ui-inner-border-color); }
+    }
+
+    @if $ui-border-radius != null {
+        @include x-frame(
+            'window',
+            $ui-label,
+
+            $border-radius: $ui-border-radius,
+            $border-width: $window-border-width,
+            $padding: $ui-padding,
+            $background-color: $ui-background-color
+        );
+    }
+
+    .#{$prefix}window-body-#{$ui-label} {
+        @if $ui-body-border-color !=null {
+            border-color: $ui-body-border-color;
+            border-width: $window-body-border-width;
+        }
+
+        @if $ui-body-background-color != null { background: $ui-body-background-color; }
+        @if $ui-body-color != null { color: $ui-body-color; }
+    }
+
+    .#{$prefix}window-header-#{$ui-label} {
+        @if $ui-header-font-size != null { font-size: $ui-header-font-size; }
+        @if $ui-border-color != null { border-color: $ui-border-color; }
+        zoom:1;
+    }
+
+    .#{$prefix}window-header-text-#{$ui-label} {
+        @if $ui-header-color != null { color: $ui-header-color; }
+        @if $ui-header-font-weight != null { font-weight: $ui-header-font-weight; }
+
+        line-height: $ui-header-text-height;
+
+        font-family: $font-family;
+        font-size: $ui-header-font-size;
+    }
+
+    @if $ui-border-radius != null {
+        @include x-frame('window-header', '#{$ui-label}-top',    top($ui-border-radius) right($ui-border-radius) 0 0, top($window-border-width) right($window-border-width) 0 left($window-border-width), 4px 5px 0, $ui-background-color);
+        @include x-frame('window-header', '#{$ui-label}-right',  0 right($ui-border-radius) bottom($ui-border-radius) 0, top($window-border-width) right($window-border-width) bottom($window-border-width) 0, 5px 4px 5px 0, $ui-background-color);
+        @include x-frame('window-header', '#{$ui-label}-bottom', 0 0 bottom($ui-border-radius) left($ui-border-radius), 0 right($window-border-width) bottom($window-border-width) left($window-border-width), 0 5px 4px, $ui-background-color);
+        @include x-frame('window-header', '#{$ui-label}-left',   top($ui-border-radius) 0 0 left($ui-border-radius), top($window-border-width) 0 bottom($window-border-width) left($window-border-width), 5px 0px 5px 4px, $ui-background-color);
+
+        // collapsed window header styles
+        @include x-frame('window-header', '#{$ui-label}-collapsed-top',    $ui-border-radius, $window-border-width, 4px 5px 4px, $ui-background-color);
+        @include x-frame('window-header', '#{$ui-label}-collapsed-right',  $ui-border-radius, $window-border-width, 5px 4px, $ui-background-color);
+        @include x-frame('window-header', '#{$ui-label}-collapsed-bottom', $ui-border-radius, $window-border-width, 4px 5px 4px, $ui-background-color);
+        @include x-frame('window-header', '#{$ui-label}-collapsed-left',   $ui-border-radius, $window-border-width, 5px 4px, $ui-background-color);
+    }
+
+    .#{$prefix}window-header-#{$ui-label}-top {
+        @include inner-border(1px 1px 0, $ui-inner-border-color);
+    }
+
+    .#{$prefix}window-header-#{$ui-label}-right {
+        @include inner-border(1px 1px 1px 0, $ui-inner-border-color);
+    }
+
+    .#{$prefix}window-header-#{$ui-label}-bottom {
+        @include inner-border(0px 1px 1px, $ui-inner-border-color);
+    }
+
+    .#{$prefix}window-header-#{$ui-label}-left {
+        @include inner-border(1px 0 1px 1px, $ui-inner-border-color);
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/form/_all.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/form/_all.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/form/_all.scss	(revision 18277)
@@ -0,0 +1,120 @@
+/**
+ * Creates the base structure of Ext.form.Panel.
+ * @member Ext.form.Panel
+ */
+@mixin extjs-form {
+    /*misc*/
+    .#{$prefix}webkit {
+        * {
+            &:focus {
+                outline:none !important;
+            }
+        }
+    }
+
+    // form items
+    .#{$prefix}form-item {
+        vertical-align: top;
+        table-layout: fixed;
+    }
+
+    // form items within auto, anchor, vbox checkboxgroup, and table layouts have bottom margin of 5px
+    .#{$prefix}autocontainer-form-item,
+    .#{$prefix}anchor-form-item,
+    .#{$prefix}vbox-form-item,
+    .#{$prefix}checkboxgroup-form-item,
+    .#{$prefix}table-form-item {
+        margin-bottom: 5px;
+    }
+
+    // form items within form layout have 5px margin around them
+    .#{$prefix}form-layout-table {
+        border-collapse: separate;
+        border-spacing: 0 2px;
+    }
+
+    // Allow for positioned child elements, e.g. custom icons
+    .#{$prefix}form-item-body {
+        position: relative;
+    }
+
+    .#{$prefix}form-form-item {
+        td {
+            border-top: 1px solid transparent;
+        }
+    }
+
+    // IE6 cannot do border-spacing 0 2px;
+    // IE6 cannot do border-color: transparent
+    // So we revert pack to a pad row for IE6
+    .#{$prefix}ie6 {
+        .#{$prefix}form-layout-table {
+            border-collapse: collapse;
+            border-spacing: 0;
+        }
+        .#{$prefix}form-form-item {
+            td {
+                border-top-width: 0;
+            }
+        }
+
+        // Padding row for IE6 when Labelable Fields are in a form layout
+        td.#{$prefix}form-item-pad {
+            height: 5px;
+        }
+    }
+
+    // No padding when inside an Editor
+    .#{$prefix}editor .#{$prefix}form-item-body {
+        padding-bottom: 0;
+    }
+
+    .#{$prefix}form-item-label {
+        display: block;
+        padding: 3px 0 0;
+        font-size: $form-label-font-size;
+        @include no-select;
+    }
+
+    .#{$prefix}form-item-label-top {
+        display: block;
+        zoom: 1;
+        padding: 0 0 5px 0;
+    }
+
+    .#{$prefix}form-item-label-right {
+        text-align: right;
+    }
+
+    .#{$prefix}form-invalid-under {
+        padding: 2px 2px 2px $form-error-icon-width;
+
+        color: $form-error-msg-color;
+        font: $form-error-msg-font;
+        line-height: $form-error-msg-line-height;
+
+        background: no-repeat 0 2px;
+        background-image: theme-background-image($theme-name, $form-exclamation-icon);
+    }
+
+    .#{$prefix}form-invalid-icon {
+        width: $form-error-icon-width;
+        height: 14px;
+        background: no-repeat center center;
+        background-image: theme-background-image($theme-name, $form-exclamation-icon);
+        overflow: hidden;
+        ul {
+            display: block;
+            width: $form-error-icon-width;
+            li {
+                /* prevent inner elements from interfering with QuickTip hovering */
+                display: none;
+            }
+        }
+    }
+
+    // When the label is on top, the right icon cell is taller, so the icon image needs bumping down
+    .#{$prefix}lbl-top-err-icon {
+        margin-bottom: 4px;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/form/_checkbox.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/form/_checkbox.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/form/_checkbox.scss	(revision 18277)
@@ -0,0 +1,68 @@
+/**
+ * Creates the base structure of checkbox field.
+ * @member Ext.form.field.Checkbox
+ */
+@mixin extjs-form-checkboxfield {
+    .#{$prefix}form-cb-wrap {
+        padding-top: 3px;
+    }
+
+    .#{$prefix}form-checkbox,
+    .#{$prefix}form-radio {
+        vertical-align: -1px;
+
+        width: $form-checkbox-size;
+        height: $form-checkbox-size;
+        background: no-repeat;
+        background-image: theme-background-image($theme-name, $form-checkbox-image);
+
+        overflow: hidden;
+        padding: 0;
+        border: 0;
+        &::-moz-focus-inner {
+            padding: 0;
+            border: 0;
+        }
+    }
+    @if $include-ie {
+        /* Hack for IE; causes alignment problem in IE9 standards mode so exclude that */
+        .#{$prefix}nbr.#{$prefix}ie {
+            .#{$prefix}form-checkbox,
+            .#{$prefix}form-radio {
+                font-size: 0;
+            }
+        }
+    }
+    .#{$prefix}form-cb-checked {
+        .#{$prefix}form-checkbox,
+        .#{$prefix}form-radio {
+            background-position: 0 (0 - $form-checkbox-size);
+        }
+    }
+
+    /* Focused */
+    .#{$prefix}form-cb-focus {
+        background-position: (0 - $form-checkbox-size) 0;
+    }
+    .#{$prefix}form-cb-checked {
+        .#{$prefix}form-cb-focus {
+            background-position: (0 - $form-checkbox-size) (0 - $form-checkbox-size);
+        }
+    }
+
+    /* Radios */
+    .#{$prefix}form-radio {
+        background-image: theme-background-image($theme-name, $form-radio-image);
+    }
+
+    /* boxLabel */
+    .#{$prefix}form-cb-label-before {
+        margin-right: 4px;
+    }
+    .#{$prefix}form-cb-label-after {
+        margin-left: 4px;
+    }
+
+
+
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss	(revision 18277)
@@ -0,0 +1,35 @@
+/**
+ * Creates the base structure of CheckboxGroup.
+ * @member Ext.form.CheckboxGroup
+ */
+@mixin extjs-form-checkboxgroup {
+
+    .#{$prefix}form-checkboxgroup-body {
+        padding: 1px 4px 1px 4px;
+    }
+
+    .#{$prefix}form-invalid {
+        .#{$prefix}form-checkboxgroup-body {
+            border: 1px solid #c30!important;
+            background: transparent repeat-x bottom;
+            background-image: theme-background-image($theme-name, 'grid/invalid_line.gif');
+            padding: 1px 3px 0 3px;
+        }
+    }
+
+    .#{$prefix}check-group-alt {
+        background: adjust-color($base-color, $hue: 2.667deg, $saturation: -7.168%, $lightness: 3.725%);
+
+        border-top:1px dotted adjust-color($base-color, $hue: 17.193deg, $saturation: -40.827%, $lightness: -9.412%);
+        border-bottom:1px dotted adjust-color($base-color, $hue: 17.193deg, $saturation: -40.827%, $lightness: -9.412%);
+    }
+
+    .#{$prefix}form-check-group-label {
+        color: #333;
+
+        border-bottom: 1px solid #333;
+
+        margin: 0 30px 5px 0;
+        padding: 2px;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/form/_field.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/form/_field.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/form/_field.scss	(revision 18277)
@@ -0,0 +1,146 @@
+/**
+ * Creates the base structure of form field.
+ * @member Ext.form.field.Base
+ */
+@mixin extjs-form-field {
+    .#{$prefix}form-field,
+    .#{$prefix}form-display-field {
+        margin: 0 0 0 0;
+
+        font: $form-field-font;
+        color: $form-field-color;
+    }
+
+    .#{$prefix}form-item-hidden {
+        margin: 0;
+    }
+
+    .#{$prefix}form-text,
+    textarea.#{$prefix}form-field {
+        padding: $form-field-padding;
+
+        background: repeat-x 0 0;
+        border: $form-field-border-width solid;
+
+        background-color: $form-field-background-color;
+        @if $form-field-background-image {
+            background-image: theme-background-image($theme-name, $form-field-background-image);
+        }
+
+        border-color: $form-field-border-color;
+    }
+
+    $form-field-content-height: $form-field-height - top($form-field-padding) - top($form-field-border-width) - bottom($form-field-padding) - bottom($form-field-border-width);
+    $form-field-line-height: $form-field-content-height - 3px;
+
+    .#{$prefix}form-text {
+        height: $form-field-content-height;
+        line-height: $form-field-line-height;
+        vertical-align: top;
+    }
+
+    .#{$prefix}ie8m {
+        .#{$prefix}form-text {
+            line-height: $form-field-line-height;
+        }
+    }
+
+    .#{$prefix}border-box .#{$prefix}form-text {
+        height: $form-field-height;
+    }
+
+    textarea.#{$prefix}form-field {
+        color: $form-field-color;
+        overflow: auto;
+        height: auto;
+        line-height: normal;
+        background: repeat-x 0 0;
+        background-color: $form-field-background-color;
+        @if $form-field-background-image {
+            background-image: theme-background-image($theme-name, $form-field-background-image);
+        }
+        resize: none; //Disable browser resizable textarea
+    }
+
+    .#{$prefix}border-box textarea.#{$prefix}form-field {
+        height: auto;
+    }
+
+    @if $include-safari {
+        .#{$prefix}safari.#{$prefix}mac textarea.#{$prefix}form-field {
+            margin-bottom: -2px; // another bogus margin bug, safari/mac only
+        }
+    }
+
+    .#{$prefix}form-focus,
+    textarea.#{$prefix}form-focus {
+        border-color: $form-field-focus-border-color;
+    }
+
+    .#{$prefix}form-invalid-field,
+    textarea.#{$prefix}form-invalid-field {
+        background-color: $form-field-invalid-background-color;
+        @if $form-field-invalid-background-image {
+            background-image: theme-background-image($theme-name, $form-field-invalid-background-image);
+            background-repeat: $form-field-invalid-background-repeat;
+            background-position: $form-field-invalid-background-position;
+        }
+        border-color: $form-field-invalid-border-color;
+    }
+
+    .#{$prefix}form-item {
+        font: $form-label-font;
+    }
+
+    .#{$prefix}form-empty-field, textarea.#{$prefix}form-empty-field {
+        color: $form-field-empty-color;
+    }
+
+    .#{$prefix}webkit {
+        .#{$prefix}form-empty-field {
+            line-height: $form-field-line-height;
+        }
+    }
+
+    .#{$prefix}form-display-field {
+        padding-top: 3px;
+    }
+
+    @if $include-ie {
+        /*
+        In oldIE, text inputs get a mysterious extra pixel of spacing above and below.
+        This is targeted at IE6-IE7 (all modes) and IE9+ Quirks mode.
+
+        IE8 quirks on Windows 7 requires this fix, but on
+        IE8 quirks on Windows XP, this is breaks the layout.
+        TODO: Check field input heights in IE8 quirks on Windows Vista.
+
+        Since we can't specifically target a specific version of Windows via CSS, we default to fixing it the XP way, for now.
+        */
+        .#{$prefix}quirks .#{$prefix}ie9p .#{$prefix}form-text,
+        .#{$prefix}ie7m .#{$prefix}form-text {
+            margin-top: -1px;
+            margin-bottom: -1px;
+        }
+
+        .#{$prefix}ie .#{$prefix}form-file {
+            height: $form-field-height + 1;
+
+            line-height: 18px;
+
+            vertical-align: middle;
+        }
+    }
+
+    .#{$prefix}field-default-toolbar .#{$prefix}form-text {
+        height: $form-toolbar-field-height - vertical($form-field-padding) - vertical($form-field-border-width);
+    }
+
+    .#{$prefix}border-box .#{$prefix}field-default-toolbar .#{$prefix}form-text {
+        height: $form-toolbar-field-height;
+    }
+
+    .#{$prefix}field-default-toolbar .#{$prefix}form-item-label-left {
+        padding-left: 4px;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/form/_fieldset.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/form/_fieldset.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/form/_fieldset.scss	(revision 18277)
@@ -0,0 +1,162 @@
+/**
+ * Creates the base structure of FieldSet.
+ * @member Ext.form.FieldSet
+ */
+@mixin extjs-form-fieldset {
+    .#{$prefix}fieldset {
+        border: $fieldset-border;
+
+        padding: $fieldset-padding;
+        margin-bottom: $fieldset-padding;
+
+        display: block; /* preserve margins in IE */
+        position: relative;
+    }
+
+    // Insane IE bug: Fieldset padding-top is rendered *outside* the border!
+    // So we transfer the padding-top to the body element.
+    .#{$prefix}ie .#{$prefix}fieldset {
+        padding-top: 0;
+        .#{$prefix}fieldset-body {
+            padding-top: $fieldset-padding;
+        }
+    }
+
+    .#{$prefix}fieldset-header-checkbox {
+        line-height: $fieldset-header-line-height;
+    }
+
+    .#{$prefix}fieldset-header {
+        font: $fieldset-header-font;
+        color: $fieldset-header-color;
+        padding: $fieldset-header-padding;
+        overflow: hidden; // fixes a webkit bug where legend elements that have floated children are not displayed
+
+        .#{$prefix}fieldset-header-text {
+            float: left;
+            padding: 1px 0;
+        }
+        .#{$prefix}fieldset-header-text-collapsible {
+            cursor: pointer;
+        }
+
+        .#{$prefix}form-item,
+        .#{$prefix}tool {
+            float: left;
+            margin: 1px 0 0 0;
+        }
+
+        .#{$prefix}form-cb-wrap {
+            padding: 1px 0;
+            font-size: 0;
+            line-height: 0;
+        }
+    }
+
+    .#{$prefix}fieldset-with-title {
+        .#{$prefix}fieldset-header-checkbox,
+        .#{$prefix}tool {
+            margin-right: 3px;
+        }
+    }
+
+    // Use Webkit's built-in fieldset legend padding which takes precedence over padding-left/right
+    .#{$prefix}webkit {
+        .#{$prefix}fieldset-header {
+            -webkit-padding-start: #{left($fieldset-header-padding)};
+            -webkit-padding-end: #{right($fieldset-header-padding)};
+        }
+    }
+
+    // opera renders an invisible border above the fieldset in addition to the normal border when the fieldset has a legend.
+    // To compensate for this, give the fieldset a negative top margin equal to the top border width.
+    @if $include-opera {
+        .#{$prefix}opera {
+            .#{$prefix}fieldset-with-legend {
+                margin-top: -#{top($fieldset-border-width)};
+            }
+            &.#{$prefix}mac .#{$prefix}fieldset-header-text {
+                padding: 2px 0 0;
+            }
+        }
+    }
+    // IE8 strict has a problem similar to opera's, except the invisible top border only changes the position of
+    // the legend element, so we have to adjust the position of the legend using a negative top margin.
+    @if $include-ie {
+        .#{$prefix}strict .#{$prefix}ie8 .#{$prefix}fieldset-header {
+            margin-bottom: -#{top($fieldset-border-width)};
+            .#{$prefix}tool,
+            .#{$prefix}fieldset-header-text,
+            .#{$prefix}fieldset-header-checkbox {
+                position: relative;
+                top: -#{top($fieldset-border-width)};
+            }
+        }
+    }
+
+    @if $include-ie {
+        .#{$prefix}quirks .#{$prefix}ie,
+        .#{$prefix}ie8m {
+            .#{$prefix}fieldset-header {
+                padding-left: #{left($fieldset-header-padding) - 2};
+                padding-right: #{right($fieldset-header-padding) - 2};
+            }
+        }
+    }
+
+    .#{$prefix}fieldset-collapsed {
+        .#{$prefix}fieldset-body {
+            display: none;
+        }
+    }
+
+    .#{$prefix}fieldset-collapsed {
+        padding-bottom: 0 !important;
+
+        border-width: 1px 1px 0 1px !important;
+        border-left-color: transparent !important;
+        border-right-color: transparent !important;
+    }
+
+    @if $include-ie {
+        .#{$prefix}ie6 .#{$prefix}fieldset-collapsed {
+            border-width: 1px 0 0 0 !important;
+
+            padding-bottom: 0 !important;
+            margin-left: 1px;
+            margin-right: 1px;
+        }
+
+        .#{$prefix}ie .#{$prefix}fieldset-bwrap {
+            zoom: 1;
+        }
+    }
+
+    @if $include-ie {
+        /* IE legend positioning bug */
+        .#{$prefix}ie .#{$prefix}fieldset-noborder legend {
+            position: relative;
+
+            margin-bottom: 23px;
+        }
+
+        .#{$prefix}ie .#{$prefix}fieldset-noborder legend span {
+            position: absolute;
+            left: 16px;
+        }
+    }
+
+    .#{$prefix}fieldset {
+        overflow: hidden;
+    }
+
+    .#{$prefix}fieldset-bwrap {
+        overflow: hidden;
+
+        zoom: 1;
+    }
+
+    .#{$prefix}fieldset-body {
+        overflow: hidden;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/form/_file.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/form/_file.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/form/_file.scss	(revision 18277)
@@ -0,0 +1,35 @@
+/**
+ * Creates the base structure of file field.
+ * @member Ext.form.field.File
+ */
+@mixin extjs-form-file {
+
+    .#{$prefix}form-file-wrap {
+        .#{$prefix}form-text {
+            color: #777;
+        }
+
+        .#{$prefix}form-file-btn {
+            overflow: hidden;
+        }
+
+        .#{$prefix}form-file-input {
+            position: absolute;
+            top: -4px;
+            right: -2px;
+            height: $form-field-height + 8;
+            @include opacity(0);
+
+            /* Yes, there's actually a good reason for this...
+             * If the configured buttonText is set to something longer than the default,
+             * then it will quickly exceed the width of the hidden file input's "Browse..."
+             * button, so part of the custom button's clickable area will be covered by
+             * the hidden file input's text box instead. This results in a text-selection
+             * mouse cursor over that part of the button, at least in Firefox, which is
+             * confusing to a user. Giving the hidden file input a huge font-size makes
+             * the native button part very large so it will cover the whole clickable area.
+             */
+            font-size: 100px;
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss	(revision 18277)
@@ -0,0 +1,128 @@
+/**
+ * Creates the base structure of HtmlEditor field.
+ * @member Ext.form.field.HtmlEditor
+ */
+@mixin extjs-form-htmleditor {
+    .#{$prefix}html-editor-wrap {
+        border: 1px solid $html-editor-border-color;
+
+        .#{$prefix}toolbar {
+            border-top-width: 0;
+            border-left-width: 0;
+            border-right-width: 0;
+        }
+
+        textarea {
+            background-color: $html-editor-background-color;
+        }
+    }
+
+    .#{$prefix}html-editor-tb .#{$prefix}btn-text {
+        background:transparent no-repeat;
+        background-image:theme-background-image($theme-name, 'editor/tb-sprite.gif');
+    }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-bold,
+    .#{$prefix}menu-item img.#{$prefix}edit-bold {
+        background-position:0 0;
+        background-image: theme-background-image($theme-name, 'editor/tb-sprite.gif');
+    }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-italic,
+    .#{$prefix}menu-item img.#{$prefix}edit-italic {
+        background-position:-16px 0;
+        background-image: theme-background-image($theme-name, 'editor/tb-sprite.gif');
+    }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-underline,
+    .#{$prefix}menu-item img.#{$prefix}edit-underline {
+        background-position:-32px 0;
+        background-image: theme-background-image($theme-name, 'editor/tb-sprite.gif');
+    }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-forecolor,
+    .#{$prefix}menu-item img.#{$prefix}edit-forecolor {
+        background-position:-160px 0;
+        background-image: theme-background-image($theme-name, 'editor/tb-sprite.gif');
+    }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-backcolor,
+    .#{$prefix}menu-item img.#{$prefix}edit-backcolor {
+        background-position:-176px 0;
+        background-image: theme-background-image($theme-name, 'editor/tb-sprite.gif');
+    }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-justifyleft,
+    .#{$prefix}menu-item img.#{$prefix}edit-justifyleft {
+        background-position:-112px 0;
+        background-image: theme-background-image($theme-name, 'editor/tb-sprite.gif');
+    }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-justifycenter,
+    .#{$prefix}menu-item img.#{$prefix}edit-justifycenter {
+        background-position:-128px 0;
+        background-image: theme-background-image($theme-name, 'editor/tb-sprite.gif');
+    }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-justifyright,
+    .#{$prefix}menu-item img.#{$prefix}edit-justifyright {
+        background-position:-144px 0;
+        background-image: theme-background-image($theme-name, 'editor/tb-sprite.gif');
+    }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-insertorderedlist,
+    .#{$prefix}menu-item img.#{$prefix}edit-insertorderedlist {
+        background-position:-80px 0;
+        background-image: theme-background-image($theme-name, 'editor/tb-sprite.gif');
+    }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-insertunorderedlist,
+    .#{$prefix}menu-item img.#{$prefix}edit-insertunorderedlist {
+        background-position:-96px 0;
+        background-image: theme-background-image($theme-name, 'editor/tb-sprite.gif');
+    }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-increasefontsize,
+    .#{$prefix}menu-item img.#{$prefix}edit-increasefontsize {
+        background-position:-48px 0;
+        background-image: theme-background-image($theme-name, 'editor/tb-sprite.gif');
+    }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-decreasefontsize,
+    .#{$prefix}menu-item img.#{$prefix}edit-decreasefontsize {
+        background-position:-64px 0;
+        background-image: theme-background-image($theme-name, 'editor/tb-sprite.gif');
+    }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-sourceedit,
+    .#{$prefix}menu-item img.#{$prefix}edit-sourceedit {
+        background-position:-192px 0;
+        background-image: theme-background-image($theme-name, 'editor/tb-sprite.gif');
+    }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-createlink,
+    .#{$prefix}menu-item img.#{$prefix}edit-createlink {
+        background-position: -208px 0;
+        background-image: theme-background-image($theme-name, 'editor/tb-sprite.gif');
+    }
+
+    .#{$prefix}html-editor-tip .#{$prefix}tip-bd .#{$prefix}tip-bd-inner {
+        padding: 5px;
+        padding-bottom: 1px;
+    }
+
+    .#{$prefix}html-editor-tb {
+        .#{$prefix}toolbar {
+            position: static !important;
+        }
+        .#{$prefix}font-select {
+            font-size: 11px;
+        }
+    }
+
+    .#{$prefix}html-editor-wrap textarea {
+        border: 0;
+        padding: 3px 2px;
+        overflow: auto;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss	(revision 18277)
@@ -0,0 +1,185 @@
+/**
+ * Creates the base structure of trigger field.
+ * @member Ext.form.field.Trigger
+ */
+@mixin extjs-form-triggerfield {
+    .#{$prefix}form-trigger-wrap {
+        vertical-align: top;
+    }
+
+    .#{$prefix}form-trigger {
+        background-image: theme-background-image($theme-name, 'form/trigger.gif');
+		background-position: 0 0;
+
+		width: $form-trigger-width;
+		height: $form-trigger-height - $form-trigger-border-bottom-width;
+
+		border-bottom: $form-trigger-border-bottom;
+
+        cursor: pointer;
+        cursor: hand;
+        overflow: hidden;
+    }
+
+    .#{$prefix}border-box .#{$prefix}form-trigger {
+        height: $form-trigger-height;
+    }
+
+    .#{$prefix}field-default-toolbar .#{$prefix}form-trigger {
+        height: $form-toolbar-trigger-height - $form-trigger-border-bottom-width;
+    }
+
+    .#{$prefix}border-box .#{$prefix}field-default-toolbar .#{$prefix}form-trigger {
+        height: $form-toolbar-trigger-height;
+    }
+
+
+    .#{$prefix}form-trigger-over {
+		background-position: -$form-trigger-width 0;
+
+		border-bottom-color: $form-trigger-border-bottom-color-over;
+    }
+
+    .#{$prefix}form-trigger-wrap-focus .#{$prefix}form-trigger {
+		background-position: -($form-trigger-width * 3) 0;
+
+		border-bottom-color: $form-trigger-border-bottom-color-focus;
+    }
+
+    .#{$prefix}form-trigger-wrap-focus .#{$prefix}form-trigger-over {
+        background-position: -($form-trigger-width * 4) 0;
+
+        @if $form-trigger-border-bottom-color-focus-over {
+            border-bottom-color: $form-trigger-border-bottom-color-focus-over;
+        }
+    }
+
+    .#{$prefix}form-trigger-click,
+    .#{$prefix}form-trigger-wrap-focus .#{$prefix}form-trigger-click {
+		background-position: -($form-trigger-width * 2) 0;
+
+		@if $form-trigger-border-bottom-color-pressed {
+    		border-bottom-color: $form-trigger-border-bottom-color-pressed;
+    	}
+    }
+
+    .#{$prefix}form-trigger-icon {
+        height: $form-trigger-width - $form-trigger-border-bottom-width;
+
+        background-repeat: no-repeat;
+        background-position: $form-trigger-icon-background-position;
+    }
+
+    .#{$prefix}pickerfield-open {
+        .#{$prefix}form-field {
+            @include border-bottom-radius(0);
+        }
+    }
+
+    .#{$prefix}pickerfield-open-above {
+        .#{$prefix}form-field {
+            @include border-bottom-left-radius(3px);
+            @include border-top-radius(0);
+        }
+    }
+
+    .#{$prefix}form-arrow-trigger {
+        .#{$prefix}form-trigger-icon {
+            background-image: theme-background-image($theme-name, 'boundlist/trigger-arrow.png');
+        }
+    }
+
+    .#{$prefix}form-date-trigger {
+        background-image: theme-background-image($theme-name, 'form/date-trigger.gif');
+    }
+
+    $spinner-btn-height: $form-trigger-height / 2;
+    .#{$prefix}form-trigger-wrap {
+        .#{$prefix}form-spinner-up,
+        .#{$prefix}form-spinner-down {
+            background-image: theme-background-image($theme-name, 'form/spinner.gif');
+
+            width: $form-trigger-width !important;
+            height: $spinner-btn-height !important;
+
+            font-size: 0; /*for IE*/
+
+            border-bottom: 0;
+        }
+        .#{$prefix}form-spinner-down {
+            background-position: 0 (-$spinner-btn-height);
+        }
+    }
+    .#{$prefix}form-trigger-wrap-focus .#{$prefix}form-spinner-down {
+        background-position: -($form-trigger-width * 3) (-$spinner-btn-height);
+    }
+    .#{$prefix}form-trigger-wrap .#{$prefix}form-spinner-down-over {
+        background-position: (-$form-trigger-width) (-$spinner-btn-height);
+    }
+    .#{$prefix}form-trigger-wrap-focus .#{$prefix}form-spinner-down-over {
+        background-position: -($form-trigger-width * 4) (-$spinner-btn-height);
+    }
+    .#{$prefix}form-trigger-wrap .#{$prefix}form-spinner-down-click {
+        background-position: -($form-trigger-width * 2) (-$spinner-btn-height);
+    }
+
+
+    .#{$prefix}field-default-toolbar {
+        $spinner-btn-height: $form-toolbar-trigger-height / 2;
+        .#{$prefix}form-trigger-wrap {
+            .#{$prefix}form-spinner-up,
+            .#{$prefix}form-spinner-down {
+               background-image: theme-background-image($theme-name, 'form/spinner-small.gif');
+                height: $spinner-btn-height !important;
+            }
+            .#{$prefix}form-spinner-down {
+                background-position: 0 (-$spinner-btn-height);
+            }
+        }
+        .#{$prefix}form-trigger-wrap-focus .#{$prefix}form-spinner-down {
+            background-position: -($form-trigger-width * 3) (-$spinner-btn-height);
+        }
+        .#{$prefix}form-trigger-wrap .#{$prefix}form-spinner-down-over {
+            background-position: (-$form-trigger-width) (-$spinner-btn-height);
+        }
+        .#{$prefix}form-trigger-wrap-focus .#{$prefix}form-spinner-down-over {
+            background-position: -($form-trigger-width * 4) (-$spinner-btn-height);
+        }
+        .#{$prefix}form-trigger-wrap .#{$prefix}form-spinner-down-click {
+            background-position: -($form-trigger-width * 2) (-$spinner-btn-height);
+        }
+    }
+
+
+    .#{$prefix}trigger-noedit {
+        cursor: pointer;
+        cursor: hand;
+    }
+
+    .#{$prefix}item-disabled {
+        .#{$prefix}trigger-noedit, .#{$prefix}form-trigger {
+          cursor: auto;
+        }
+    }
+
+
+    .#{$prefix}form-clear-trigger {
+        background-image: theme-background-image($theme-name, 'form/clear-trigger.gif');
+    }
+    .#{$prefix}form-search-trigger {
+        background-image: theme-background-image($theme-name, 'form/search-trigger.gif');
+    }
+
+    @if $include-ie {
+        // in IE6 quirks, the table cell enclosing the trigger field's input element does not shrink to fit,
+        // so it is necessary to set the height of the table cell.
+        .#{$prefix}quirks .#{prefix}ie6 {
+            .#{$prefix}form-trigger-input-cell {
+                height: $form-field-height;
+            }
+            .#{$prefix}field-default-toolbar .#{$prefix}form-trigger-input-cell {
+                height: $form-toolbar-field-height;
+            }
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/_all.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/_all.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/_all.scss	(revision 18277)
@@ -0,0 +1,117 @@
+@import "compass"; // Use all of Compass
+@import "blueprint/typography";
+
+$include-default: true !default;
+$include-default-uis: true !default;
+
+@import 'variables/base'; // These vars override colors in Accessories
+@import 'accessories/all'; // Useful styling shortcuts
+@import 'variables';
+@import 'functions';
+@import 'mixins';
+
+//core
+@import 'core';
+
+//layout
+@import 'layout/layout';
+@import 'layout/accordion';
+
+//utils
+@import 'util/tool';
+@import 'util/messagebox';
+@import 'util/splitter';
+@import 'util/resizable';
+@import 'util/dragdrop';
+@import 'util/scroller';
+@import 'util/focus';
+
+//widgets
+@import 'widgets';
+
+@if $scope-reset-css {
+    .#{$prefix}reset {
+        @if $include-default {
+            @include extjs-boundlist;
+            @include extjs-button;
+            @include extjs-btn-group;
+            @include extjs-datepicker;
+            @include extjs-colorpicker;
+            @include extjs-menu;
+            @include extjs-grid;
+            @include extjs-form;
+                @include extjs-form-field;
+                @include extjs-form-fieldset;
+                @include extjs-form-file;
+                @include extjs-form-checkboxfield;
+                @include extjs-form-checkboxgroup;
+                @include extjs-form-triggerfield;
+                @include extjs-form-htmleditor;
+            @include extjs-panel;
+            @include extjs-qtip;
+            @include extjs-slider;
+            @include extjs-progress;
+            @include extjs-toolbar;
+            @include extjs-window;
+            @include extjs-messagebox;
+            @include extjs-tabbar;
+            @include extjs-tab;
+            @include extjs-tree;
+            @include extjs-drawcomponent;
+            @include extjs-viewport;
+        }
+
+        @include extjs-dragdrop;
+        @include extjs-resizable;
+        @include extjs-splitter;
+        @include extjs-layout;
+        @include extjs-layout-accordion;
+        @include extjs-tool;
+        @include extjs-scroller;
+
+        @include extjs-html;
+    }
+
+    @include extjs-reset-extras;
+}
+@else {
+    @if $include-default {
+        @include extjs-boundlist;
+        @include extjs-button;
+        @include extjs-btn-group;
+        @include extjs-datepicker;
+        @include extjs-colorpicker;
+        @include extjs-menu;
+        @include extjs-grid;
+        @include extjs-form;
+            @include extjs-form-field;
+            @include extjs-form-fieldset;
+            @include extjs-form-file;
+            @include extjs-form-checkboxfield;
+            @include extjs-form-checkboxgroup;
+            @include extjs-form-triggerfield;
+            @include extjs-form-htmleditor;
+        @include extjs-panel;
+        @include extjs-qtip;
+        @include extjs-slider;
+        @include extjs-progress;
+        @include extjs-toolbar;
+        @include extjs-window;
+        @include extjs-messagebox;
+        @include extjs-tabbar;
+        @include extjs-tab;
+        @include extjs-tree;
+        @include extjs-drawcomponent;
+        @include extjs-viewport;
+    }
+
+    @include extjs-dragdrop;
+    @include extjs-resizable;
+    @include extjs-splitter;
+    @include extjs-layout;
+    @include extjs-layout-accordion;
+    @include extjs-tool;
+    @include extjs-scroller;
+
+    @include extjs-html;
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/_core.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/_core.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/_core.scss	(revision 18277)
@@ -0,0 +1,2 @@
+@import 'core/reset';
+@import 'core/core';
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/_functions.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/_functions.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/_functions.scss	(revision 18277)
@@ -0,0 +1,44 @@
+@function min($value1, $value2) {
+    @if $value1 > $value2 {
+        @return $value2;
+    }
+    @else if $value2 > $value1 {
+        @return $value1;
+    }
+    @return $value1;
+}
+
+@function max($value1, $value2) {
+    @if $value1 > $value2 {
+        @return $value1;
+    }
+    @else if $value2 > $value1 {
+        @return $value2;
+    }
+    @return $value1;
+}
+
+@function top($box) {
+    @return parsebox($box, 1);
+}
+@function right($box) {
+    @return parsebox($box, 2);
+}
+@function bottom($box) {
+    @return parsebox($box, 3);
+}
+@function left($box) {
+    @return parsebox($box, 4);
+}
+@function vertical($box) {
+    @return top($box) + bottom($box);
+}
+@function horizontal($box) {
+    @return left($box) + right($box);
+}
+@function boxmax($box) {
+    @return max(max(top($box), right($box)), max(bottom($box), left($box)));
+}
+@function boxmin($box) {
+    @return min(min(top($box), right($box)), min(bottom($box), left($box)));
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/_mixins.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/_mixins.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/_mixins.scss	(revision 18277)
@@ -0,0 +1,25 @@
+// @import 'mixins/background-gradient';
+@import 'mixins/theme-background-image';
+@import 'mixins/inner-border';
+@import 'mixins/frame';
+@import 'mixins/reset-extras';
+
+@mixin no-select {
+    user-select: none;
+    -o-user-select: none;
+    -ms-user-select: none;
+    -moz-user-select: -moz-none;
+    -webkit-user-select: none;
+
+    cursor:default;
+}
+
+@mixin important-no-border-radius {
+    //we need to hard code this so we can declare !important
+    -moz-border-radius: 0 !important;
+    -webkit-border-radius: 0 !important;
+    -o-border-radius: 0 !important;
+    -ms-border-radius: 0 !important;
+    -khtml-border-radius: 0 !important;
+    border-radius: 0 !important;
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/_variables.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/_variables.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/_variables.scss	(revision 18277)
@@ -0,0 +1,59 @@
+// Experiments
+
+// GrooveSencha
+/*$base-color: #3196FF;
+$neutral-color: #222;
+$base-gradient: flat;
+$toolbar-background-gradient: matte;*/
+
+// SenchaBook
+/*$base-color: #3b5998;
+$neutral-color: #627aad;
+$base-gradient: flat;
+$color-mode: light;
+$include-highlights: false;*/
+
+// Swiss
+/*$base-color: #A09DBC;
+$neutral-color: #eee;*/
+/*$stroke-color: #000;*/
+/*$base-gradient: flat;*/
+/*$include-highlights: false;*/
+/*$default-text-contrast: 100%;*/
+
+/*$base-color: #A13B18;
+$neutral-color: #303235;*/
+
+// Monochrome
+/*$neutral-color: #E0E6EF;*/
+
+// Basic theme
+/*$base-color: #d0d8da;
+$neutral-color: #d0d8da;
+$include-highlights: false;
+$base-gradient: flat;
+$stroke-color: $base-color;
+$panel-base-color: $neutral-color;
+$frame-base-color: lighten($neutral-color, 5%);
+$panel-border-color: $neutral-color;*/
+
+@import 'variables/core';
+
+@import 'variables/focus';
+@import 'variables/panel';
+@import 'variables/grid';
+@import 'variables/button';
+@import 'variables/pickers';
+@import 'variables/toolbar';
+@import 'variables/form';
+@import 'variables/menu';
+@import 'variables/window';
+@import 'variables/tabs';
+@import 'variables/qtip';
+@import 'variables/progress-bar';
+@import 'variables/btn-group';
+@import 'variables/boundlist';
+@import 'variables/tree';
+//@import 'variables/layout';
+@import 'variables/loadmask';
+@import 'variables/htmleditor';
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/_widgets.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/_widgets.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/_widgets.scss	(revision 18277)
@@ -0,0 +1,22 @@
+@import 'widgets/boundlist';
+@import 'widgets/button';
+@import 'widgets/btn-group';
+@import 'widgets/datepicker';
+@import 'widgets/colorpicker';
+@import 'widgets/menu';
+@import 'widgets/panel';
+@import 'widgets/toolbar';
+@import 'widgets/form';
+@import 'widgets/qtip';
+@import 'widgets/window';
+@import 'widgets/tabbar';
+@import 'widgets/tab';
+@import 'widgets/slider';
+@import 'widgets/grid';
+@import 'widgets/tree';
+@import 'widgets/loadmask';
+@import 'widgets/progress-bar';
+@import 'widgets/drawcomponent';
+@import 'widgets/viewport';
+
+@import 'widgets/html';
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/_all.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/_all.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/_all.scss	(revision 18277)
@@ -0,0 +1,6 @@
+@import 'scss/color';
+@import 'scss/pictos';
+@import 'scss/pictos-font';
+@import 'scss/background';
+@import 'scss/google_webfonts';
+@import 'scss/shapes';
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/readme.txt
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/readme.txt	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/readme.txt	(revision 18277)
@@ -0,0 +1,9 @@
+# Accessories
+
+## Useful SCSS shortcuts for UI design
+
+* Gradients
+* Patterns
+* Color
+* Icons
+* Font embedding
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/scss/_background.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/scss/_background.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/scss/_background.scss	(revision 18277)
@@ -0,0 +1,53 @@
+@mixin background-gradient($bg-color, $type: $base-gradient, $direction: top) {
+    background-image: none;
+    background-color: $bg-color;
+    
+    @if $base-gradient != null and $bg-color != transparent {
+
+        // Color stops provided
+        @if type-of($type) == "list" {
+            @include background-image(linear-gradient(color-stops($direction, $type)));
+        }
+
+        // Default gradients
+        @else if $type == bevel {
+            @include background-image(linear-gradient($direction, color_stops(
+                lighten($bg-color, 15%), 
+                lighten($bg-color, 8%) 30%, 
+                $bg-color 65%, 
+                darken($bg-color, 6%)
+            )));
+        } @else if $type == glossy {
+            @include background-image(linear-gradient($direction, color_stops(lighten($bg-color, 15%), lighten($bg-color, 5%) 50%, $bg-color 51%, darken($bg-color, 5%))));
+        } @else if $type == recessed {
+            @include background-image(linear-gradient($direction, color_stops(darken($bg-color, 10%), darken($bg-color, 5%) 10%, $bg-color 65%, lighten($bg-color, .5%))));
+        } @else if $type == linear {
+            @include background-image(linear-gradient($direction, color_stops(lighten($bg-color, 5%), darken($bg-color, 10%))));
+        } @else if $type == matte {
+            @include background-image(linear-gradient($direction, color_stops(lighten($bg-color, 15%), lighten($bg-color, 4%) 3%, darken($bg-color, 4%))));
+        }
+    }
+}
+
+// Special thanks to Lea Verou
+// http://leaverou.me/css3patterns/
+
+@mixin background-pattern-blueprint(
+    $bgcolor: #269,
+    $majorcolor: white,
+    $minorcolor: rgba(#fff, .3),
+    $majorsteps: 100px,
+    $minorsteps: 20px,
+    $majorwidth: 2px,
+    $minorwidth: 1px
+) {
+    background-color: $bgcolor;
+    @include background-image(
+        linear-gradient(top, color_stops($majorcolor $majorwidth, rgba($majorcolor, 0) $majorwidth)),
+        linear-gradient(left, color_stops($majorcolor $majorwidth, rgba($majorcolor, 0) $majorwidth)),
+        linear-gradient(top, color_stops($minorcolor $minorwidth, rgba($majorcolor, 0) $minorwidth)),
+        linear-gradient(left, $minorcolor $minorwidth, rgba($majorcolor, 0) $minorwidth)
+    );
+    background-size: $majorsteps $majorsteps, $majorsteps $majorsteps, $minorsteps $minorsteps, $minorsteps $minorsteps;
+    background-position: -$majorwidth -$majorwidth, -$majorwidth -$majorwidth, -$minorwidth -$minorwidth, -$minorwidth -$minorwidth;
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/scss/_color.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/scss/_color.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/scss/_color.scss	(revision 18277)
@@ -0,0 +1,94 @@
+@import 'compass';
+
+@function get-color-mode($color) {
+    @if lightness($color) > 50 {
+        @return light;
+    } @else {
+        @return dark;
+    }
+}
+
+$base-color: blue !default;
+$neutral-color: #ccc !default;
+$base-gradient: matte !default;
+$default-text-contrast: 85%;
+$color-mode: get-color-mode($neutral-color) !default;
+
+@function color-offset($color, $contrast: 85%, $mode: $color-mode, $inverse: false) {
+    $flat_color: check-opacity($color);
+
+    @if $mode == inverse {
+        $mode: reverse-color-mode($color-mode);
+    }
+
+    @if $inverse == true {
+        $mode: reverse-color-mode($mode);
+    }
+    
+    @if ($mode == light) {
+        @return rgba(lighten($flat_color, $contrast), opacity($color));
+    } @else if ($mode == dark) {
+        @return rgba(darken($flat_color, $contrast), opacity($color));
+    } @else {
+        @debug $mode " is not a valid color mode. Use light, dark, or inverse.";
+        @return white;
+    }
+}
+
+@function reverse-color-mode($mode) {
+    @if $mode == dark {
+        @return light;
+    } @else {
+        @return dark;
+    }
+}
+
+@function check-opacity($color) {
+    @if (opacity($color) == 0) {
+        $color: opacify($color, 1);
+    }
+    @if $color == transparent {
+        $color: opacify($color, 1);
+    }
+    @return $color;
+}
+
+@function color-by-background($bg-color, $contrast: $default-text-contrast) {
+    $bg-color: check-opacity($bg-color);
+    $tmpmode: get-color-mode($bg-color);
+    
+    @return color-offset($bg-color, $contrast, $tmpmode, $inverse: true);
+}
+
+@function get-inset-offset($mode){
+    @if $mode == light {
+        @return 1px;
+    } @else {
+        @return -1px;
+    }
+}
+
+@mixin color-by-background($bg-color, $contrast: $default-text-contrast, $default-color: false, $inset-text: true) {
+    @if $default-color {
+        color: color-by-background(hsla(hue($default-color), saturation($default-color), lightness($bg-color), opacity($bg-color)), $contrast);
+    } @else {
+        color: color-by-background($bg-color, $contrast);
+    }
+    
+    @if $inset-text {
+        @include inset-by-background($bg-color);
+    }
+}
+
+
+@mixin inset-by-background($bg-color, $contrast: 10%, $box: false){
+    
+    $bg-color: check-opacity($bg-color);
+    $offset: get-inset-offset(get-color-mode($bg-color));
+
+    @if ($box == true) {
+        @include box-shadow(color-offset($bg-color, $contrast, $mode: get-color-mode($bg-color)) 0 $offset 0);
+    }
+    
+    @include text-shadow(color-offset($bg-color, $contrast, $mode: get-color-mode($bg-color)) 0 $offset 0);
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/scss/_google_webfonts.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/scss/_google_webfonts.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/scss/_google_webfonts.scss	(revision 18277)
@@ -0,0 +1,6 @@
+$google-font-name: false !default;
+$google-font-weights: false !default;
+
+@if $google-font-name AND $google-font-weights {
+    @import url("//fonts.googleapis.com/css?family=#{$google-font-name}:#{$google-font-weights}");
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/scss/_pictos-font.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/scss/_pictos-font.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/scss/_pictos-font.scss	(revision 18277)
@@ -0,0 +1,18 @@
+/* Pictos Font
+* Copyright © 2010 Drew Wilson
+* http://www.drewwilson.com  -  http://pictos.drewwilson.com
+*
+* The fonts included in this stylesheet are subject to the End User License you purchased
+* from Drew Wilson. The fonts are protected under domestic and international trademark and 
+* copyright law. You are prohibited from modifying, reverse engineering, duplicating, or
+* distributing this font software.
+*
+* This font is NOT free. It is illegal to use this font without paying for a license. 
+*/
+@font-face {
+	font-family: 'Pictos';
+	src: url('pictos-web.eot');
+	src: local('☺'), url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAADJoAA0AAAAAR2QAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABMAAAABwAAAAcWF3wvkdERUYAAAFMAAAAHQAAACAAkQAET1MvMgAAAWwAAABIAAAAYIMUf1ljbWFwAAABtAAAAKkAAAFKznYCbGdhc3AAAAJgAAAACAAAAAj//wADZ2x5ZgAAAmgAACuvAAA9aCcOMcFoZWFkAAAuGAAAADEAAAA29KtLLWhoZWEAAC5MAAAAHgAAACQGhQMnaG10eAAALmwAAAEzAAABkElMDS1sb2NhAAAvoAAAAMoAAADKAij1am1heHAAADBsAAAAHgAAACAAvATkbmFtZQAAMIwAAAEyAAADaDtfCVNwb3N0AAAxwAAAAKYAAADtXH4MXwAAAAEAAAAAxtQumQAAAADIj74XAAAAAMj6BA142mNgZGBg4ANiCQYQYGJgBMJkIGYB8xgACIsAlgAAAHjaY2BiVmKcwMDKwMK0h6mLgYGhB0Iz3mUwYvjFgAqYkTkFlUXFDA4MCgz/md79ZwNKmjBsAQozguSYpjKtBVIKDIwAh2YNZHjaY2BgYGaAYBkGRgYQcAHyGMF8FgYNIM0GpBkZmBjqGP7//w/kK4Do/4//J0PVAwEjGwOcw8gEJJgYUAFQkpmFlY2dg5OLm4eXj19AUEhYRFRMXEJSSlpGVk5eQVFJWUVVTV1DU0tbR1dP38DQyNjE1MzcwtLK2sbWzt7B0cnZxdXN3cPTy9vH188/IDAoOCQ0LDwiMio6JjYuPiGRgVYgiUh1AHjTHZwAAAAAAAAB//8AAnjadXsJgBvFlXa/qj50Sy31MYdGGkmj7vHMeMYjqdX2jGfG53h8cNhgbINvY7ANDtiY08SYK0A4HSDYEBKuQFggwG4AGwxZQjAJ5NzdJCSBJBzJJhDC7iaY3azVs++1NNjkzz8adVdXVVe9evXe996rKglcGBz/ET+bPSeEBV1oFoSiIRdyecuFasnkpWrFKuRlzXBThRRfV6yM1W4dKxeh2nFmx1IzmzWNbHZ6y2UtZw6vWDHMjOHh2pPtPdlsT/uNUPG+J+AfEyrjf+QWe0hoEkqCkBoWXT0v60q5ZOiqJndD3nLUYmWY/53sSgWinbO3Hz9rQDw52dKSfCvZAgdilDO7kfObVAvkZp5+5mifdPeqjdCS8jzKBqb8vUwJ6ZGFzvEb2Is43g6hIswRThZOF3YIAhjdgP3SyB21kLdGoDoITsW/lbJgtEG5ZBb18hBU+sBC8uIg61LFziF3kGCjnCtVHfgU8dVyqn4fbOQXyn/zzF4MqlNCSm1cCVUUScwGkwsjUyLJ15ORSnReMuid4kWCkeRdyYgcgbGE94cVSiikwDlKyHtFCYcVnS6X1FNYcDpdDL/K27HadynB3IDcG5ulhfoj2KQ6EkuKYloLhSLYYnJ3goUVr8N/4WBI8a72Uzux9Q31+7F59bTPPwPn81Q2U+CCIsQFUygLU5F/BXsQlIIrlwxNzluVjsY9Zeiawn2+2hz5WqnzM+dWyyXu5swcfHx24tKnkpvgm1MnTZo6CboHOjsHOv/czJYrzd6aSIotvj2mabEnWpQkfCzJLcoFVa93MmyF1jlz5vyh06/t/8PTSguXvV82x8MwT0trLfPjTd7b//Qs0iwK7eOX8A1svzADZ3uXcC3Sq8mKiaTRZNnWELiY+NSzZSsFP1VxkWSz6tp+sozE48U0+DCKh43KEQfbVGS86i5qAyhl2zTKpRFKcLOUEU0DW8Wmepld6AVnGKRhMI0Ys6p8w8KZ4XBUv02PhpkcCbFwxKB0+BSrR0xG4vFIUuzOz2fN4XgsvLu55Z7PbHt2aO7qtde1NQWvZZETWpWFC5XcafHozmAh2tJkdgR3xr+qKEYm32GpgUAgEg40jU6Ki+EEqF4t1RMJB63uphDoJ9zQt1ZUo/F4VJWSoEqN5KnTV4mRiL5Xj0TEpVM/A5COK8oY33C69/lJF8294OSlIhx3RWDaMkO5LGCsHQyeu0BkXFy4A94BUY4kmhNKUyAYMLMBADUcSVynRcLhns6I0UM4AII6/hP2GrsZcUaAsl7QC07BKTtl+PFf/3oI/+F2uv5V8OcrOv4DfhnrwrqmYAvYQBHRqKQrecfKK/YwEKMrBatDKWplxbY6RCWv2261QyTUUiB4/JvHgwvul9ynlv723aUwFbZ4P97CDrCpbJP3e+8PmzDnIpgBI96VLQtaRq4/3q/tfmPp0JBfGbY8Q1UXLKCKFy5d6sWam0cElPjJ4//IzmPPCjGhVbBoHGpOLTso1AxVmttVx4dLXTOVFCa7WV5uA2YdV3t24aXLRHH5ztva2610q53LPT7cw6XuYTjTWwhP7V526aXLvNYbtWLastJW8ibYuLt7eLh7t4+fzeNP8hXYZ5vQhT2WEIoKjou8m2ifaMgRDQDHEsCuXn7plo6O4R4m9QwfV9sPey5dzr1aLme3ppEA9uzO5bvb8tFKz9BQz25vATy9e/nO2uhNSINtp4vaTf6c2eOvsrfYVf6cKaZiK7Zru6bL3nrppTsn/uG9l76976WX9n2bHpDezvEL+LnsBUQHF9toNxJyu5WQiFzERVQiuiPZPk7S3Rj0B+Xfq1hOCFGFDKw8fNh74DC7W49fHNeN+CS6XJTQ9cRFcUPHR8MvYC9QrcOw8lt+Bcyh7GMq1F8XAkjXxfws9ryQEBxhrjBfOE5YLCwVVvg0kub7WmrZllORjrLRMKtkkjTFIK12S9UylhMAVIv+S/QKZjj2CKBAo1TaplPWc/hFPinQBqf+pXdw2+rNG1dtH+pnPwrvv/yK/REu600zV0lioGvS5C6mMGnVDFOXvFqzlOgKR22Yqp9nv9g6p3Xm2tr7a7rTs1vZ8x89tmnZeUPlKdO3rdr0WG2SfcX+/VfYvcGEvHKmqjFEDtFIzlglx29MZWMhG9sBmX0UTK1Zs7B1TnqnhX/3t85O+/LUOX4u34byFCRrj6xP4CCsRBVozLn6jJA1g+9//fDhrz+OrN2bTnnXptLpFFyUSrNnP/Ye+PhjWPmxN2ZTpq21tgqkG67wY34JXIvtJlE7hBSxjUxAtb1uC5wJo+BUbi1WnUXVKszFyyIHdtKtCtdWixY9U5FVr2EV63jQOf4E38IOot4lBQMRgRBELehKzimoCCI5s6CXi8h27qCFLuuYo/sJlT311FPXek889RS8vnPz5to7cPZ111Vn1x6YWWXNl3n/6lz7PEy+7P43nF9u3Vpbe+2V7uUvv3xO0vU+Qj61jr/JV7PdgkZ6V8xCDJBPdjdzzW5iUanqIvQMQl1UlD4YRhcB5Zhdaaf7rj/hhpchzGbvuqycvnnj9M3fqVy2q5S5eePQ5jyVLr7+0L2drdPnfvuGXbtOv8l9btcutvHmaVPs9NDooesZ6l16/Hz2ffRR8thzGdnY3pC6IciyOBuCunQapC9l9kTbd723X3315kSw/25dv7s/qZy04/wHdmTez9z83VdvuvlVOGFe6W5du7s0upztOGnJjh1LMnU5OJ+fg/oQFHKfkoMqeTjk3+ANrxp6P6iRLrxG8vAYysOzsuzKSeXP8cTyRNyV5evjRoumsucbinjYew1Lq7L8lwRWSFSVpHxDPF63ARGB8+PZZpI81yLvinyrklu/awr45tcIhU4KtYauxS+ch5eTQiFvuClntzd9GErT0zWhEOwIhZZgmTfU1ITtDo6Ps/9B+WAod0EYZC/UZrGD3r3efZgzKAD7CHlJ/orgIlimEC8HQf46yN5fgT1bG6Vvnb5BgbHD2A5HvmMtdrg2lz3HUFn8su38BrYMPSABnCg4kgoPwW+9Vu82uPfpP/8Xithv/TZiwja+hp3i19Mng15U4S9eC/wOzgIb6z39tNfa0MMdiJMHkarQUZyEyfAJ9AGDx73F7GCDr94lr79etwdn8QB7WehEHBOKJuFoXdMIh3AKHZdQturSsw9dGYQhDTTThy0U17zMvrK5Sf0vcI934T8TzZth44kipvmJG72DLG2YrTzbkzn9jESzGLBd12YB1pw4I6D+aPkN6XCccmKR9I3LfqTC/0ohSQqgx5FBjsXG/x3ndiX6hFlhOtmLGFMQTrvBKSN4pkYAr27ZMRWHQDOVR8TFGrKCXkDJrbrDgJd6MXR3ibGwlAz2t2/cODiYu7qnPRGqtJ/y+OOnTJ3ReouZK3Sn5g23nbhgw4aWXFtJutZePG/5448vh/t6pHhESiid50Kn7v2iLx8LdLHVt31heacKTYY5OXXccNMMONdIlqQ97TNg5a23nlqfdz7+JixmFwsYIaRc1S445/3qV+fCnb+unf6rXxO2TRdG+W4ULgUtYZzmVdFRPHSO0uSaCDu7R478L5fm12768FfeBtj5RPPZ8OxWrwaW94vDhw7VMSw2fh7y523sIyakcfYaPRVR7u1qxXYkdEnRtalYtuNmgGcgMfG8i4h5YOHCfKEATSuPyw+Ojg7mjlu16oIbb7wgt+HCC0+HvT6lmdI3+menl6fZgpX7emblL7zhwjyb2XMXrJr1nvf792bOmvrKH1+Z6mM1yd52tNFBjMpOOFb7U1XfqVVkUyaDl6o6jec4mDg//ofcX99g+tOHH0Qi3SQkbEwjfB/NxuNf//jjV1MprS2toYHSUm3tV4QmWaP9HblMsDfEVCURiiqxTCCsRIJiMIz+aCQgAYSXB4KRWEaNsRcmDE1tTXIgqapoZzQVTmqyBgr5SFiTlwUgJMoiY6GwFo0kAmIgxBNJrcVIiQkxHGlJJGIxI6X6utY6fgO8xb6Jc9fqj1bXuNzfC8x3m9TSJ/beALbyyteamhftunKl2DV9elf39Onsm1eddpY3v+Q8AHOrK6/0fjC9u16CfEyPX8TXog63ITrMw5ZN2ULUbABbBr2BagNLCUVBzvdBL7imTKA3UgdarGL42Ceg5wpkH22wYHDU2thxi2VtsM6ybung7aOhxC3B1uCGUOiWBDxpbbH2FMT2ucGjmfpceqFYrL2Q7oyBHcOr9/MYdI+2i5h9dnGDhe1stOZqyVuC+EYLvuJdWizuKWy0RrXELaHQBmxpTyI82s6x37MseClNDXSmY2DF6nF8Uhjjy1hRKAq9OFKcfYznelkfZDhijW25VVTvquvbKRyRTasGtHzAfhVLR+zR88aOu/r4qeGwlBoYWFKc0a5HlaTzFSW2evaMldIZv021tFitLeC2mpmpM2zkr65zJRFQYq0zusOKWgoGktLs1ctG+i9stagq6mwHCvJmNldoR2oygAiIAlzIdSOHnQb6oaD6Rhlnm/dOXTeHyeAlgc1dN9mS5/RZuexF88/8AgwlTyrPWQewfnTycUYi1TenecbxezaFhAkbuRXh/9O+rD/BE1Yyf8wMa417acKyUT0bqTv1o4+8Bw8zIxzeGg5nI7nw2fjdGs6Fs34OZYb9jMjZ+MVM9uxh78GPPoJTvxNpj1DlYytixt/JJL3OCHP4OpbCqKkgdCPFpQzLgh4T/YlyhnnqGFGvNkJ0uHzX1esX63ogfdqqa44mvz2wePHAtMWLsxXLqhRZqm/27CYzEMweP70fk2ZTEJOD3kG/zrSBxa9hpWKFeOaMf559DnVCoqiBbK3qAmJlQf0NPFh7/BFY773zKDt45Afsc4/UUuwfHvUYyZeBvN6O9pB4XeJn88/z+/kh/jP+Jn+L/zv/kB8W7xcfEZ8RXxa/K/5A/BfxZ+Ib4m+OmRNF1soIQ1q/YWbAzVcLiFtOuWI5eTnv4FyV3DxJqZKXOWFa3s5bGEFWMUc20c2X9ZKrlWUTbyV6LBtOxUGt1JBTcXT99LyCH6tgl1C8KEqwSw5asbKLNjevaFhQkSm7YKFylxASewEfKgXMy/di6FQyXL1qlDXbMg3sF0vRl5QLMegjTQLqx3KmQ9UxB1jVKSmGk3eq1JXhomnIkG10jKqrIfoiwlpOCdFCK2Pftk+WVbbcMkp9ntB5GDBULtE7hp6XC3rJUDBuwVG5aE7cXnRjFWMEUE5LZsEgKi3ZREhHGs0SNW9X7Uq5alVLrkH5jqFjP04JWVLSyRktKHIGTDuPOFNykX8WMciRdUPPQBnHWK6gfcgbZt406EWLqMY2rTxeUBuraN1cjerJ/SUHP/hWhuPb6AUgrfhmQUPGWMgWHZ1smhcdm9LxjbyuFEagjHNawA8qW5yR+ckTI/UM07XCFJyTCs5FwSqgNBAkULkvGiUDiUM+WsjGEWYoeSJbM5SyU5KpHLmEjEfIQvrdaj/RU6KYDxNZKJtYI8sQ48rIKRybbmJtoywTU5BrJYfkLg4a0q75M4pETVGwYSTQxDSqHBHcBiRIWAcFr4RGFKtg/TZwKya9oyOlJnK/UnasqoPGHye1j5YTccZ9y1LF/HLFRaS1nQpOZC9zkLc0hw6KAf6TZGEJKrlFKqDLSD6KHAqng+LUi/JWKVj9yCILBYtggAIZLMUm8evYFZIazPJ1QtaROD3PMYdksIRigy/aJHCK7GAH6ALYWsH32vHFQrWMnibKWIkaMZGmiuEaCvEHvQkFmYsqhTNXUWQXB4Kyg19kdd4tG26pH6lEpuIsK9R9CZ1HZK2M3DCr6OVaBXQjkeeuhvzU0e3QiMvI4LJZ11PMyhMzdXJWkHbkZoMtlV4oV/w0Wl+kEzlkIduIWVgT2ZL3mUMcQQZXSKer5Yazg3peRakpV8s+mperKK3ICx37RWL0AbLyyOAyCTTKBbLbMCmtyEXN1ey8WyqTfCOliDlkE7JQQBtftlF4UALyZbeky/i1FDOvFRQEAE2quPLR9Y9nAdBuiRACDphURLyLjHNAZ4lJTJZGICiKuoxFEmMKY0zEAh7CK2eciSL+i4EIV0QZy0HCqxRgIarDGZOxThTfAcVvXQSsj3EHF7E5GRuQReyJnrAivoMtcFBErgBSFA9TeyKWBhnVDOKbnF7GNxhAAK8S3olYxoNMweaZCXIMSVMjzAAJsxM8KWEJl8EfngJ91yz63Dp8B3gARyhyQA+PKGNBJBaIUinM6hwBFpQVGiUERBpNCLtEHkgsgG9hhqiExTDSEpTBfxGZg8qIpDJiIZd8XnLsB0cvE9VAHIEG2WEIRSR8H/sNIBHAJUkiKrmMw6B/5tdFBkCQOIdPIiYiRKXEYzTuAF38VmUZu6+PA6LIIyZBRMFu/AmQaIoi/vhBlJBeSiKN1KI/aKrD5IAkgYRMJScZ/AFSfSB6kSQu4kUhuaA3/I5EZCBrRQokzOQoHsQXjjVFmlSsSvIQkHFeozjrWBLh2LISDNBs4jQjV6hVpBV7CisBBqHcKzcsuakPu0FaRBaiEfE6w5DauayZelaQDF9UOPUSxMRtIOGkIemi4g8QX7EZcRzlDakDhd7mEZGGrYCBaVEiftLoONW7B/irzO8IaGoMWjODbXJIlohL2EcQYr6Y0Ft+o/gXVyAVJ2GWaPLAb04UZZnzMERDIVBCPCgGiBd1mUcisCuRdIDaQOqlIASiKIiBUEJmgWBD/Jgky8TZEBLkbeDUr0qcBxYQUUQKRHiUuIfMZVlRwqkHi/vjSSBZn8VGnm2E9GWag4AYpon21QfqMo58Ih1kkvfPp56VCqLsIxVIqeITh+rCJVQi7g8Uo3N8G6cJx6iIESkSQ+6HxaBIvA/6QkdDi5DIY7uAQCKGSOTxJZwcH0a4zCPYnVKX0STy35ctHH7IFySSeRw0Igiw+kcWA3VtQZEh+eMhRuqEcBQNiNxXDRwYaS3xViJ9njrjNKwtkxb68kmi66sEdUFdohCHFCQvRAoS9qVfIuoh7DftDyTuq7ooh+pSzUizRJSJIAFPlPuIhQ8k1yQ4vuCjNJEukJBFSQIJZmgCcYzIklBdLRkyF2VURncMAigGARoaI+FnMRVll/olWSVFp26wH4mgkxSSKzJhGUlYCCbEEOryjwMOBugtTliE/ElKoUiMY/MI1ViBwBfxIkA8wykWiSsyCg5xihNrRKorBovBGIlBMiHmxEAUZy4oSZwrnKlIDdITDUk+OEkEQkBQz6JJrigipRQsBjQTDFkJhOTBEGcxbgbmLLrh0IIRFlbjNDilLi4oN2Eg1kscq2f8eeYEuDIJiE8oiqOySfJHzH0Moj8+mYbpaw+yWQLCXgmBhFQWAgkm+zCJlwgKuYb8ieIQlSApSpTkeidKdJi4ihTgJ9Yky9iRrxaKGPMVNRAMYRMBtD/hcFBENuJ0JoMxWQzLMd/oEOqh6KuiKHGSvTBiN00k0QkcJUvyzYwvc0lOQs1JTMIBHiO8xlHGsdwlHKC6ZDSkiK8W/sRzXyqwRgsNeAc+1deP9PG7+SL2j7SSB2rBKWC0UwgC+/qTe5/ZB1+Cu8D0Pvf++3AJ3OVtpBhpyvgTfAe7AWOkqCAU/TVJXuZFXjbLfMeRg3ez0J5Dm73Vm17uv+I97xAMwH3eapgF3vNrBX8PNjZ+IT8RYyUZ308IKYyemv0dGillumAXua3YKdN2dVuyTcUx+YmXLPFu6l58Se2NJbAN7/d/7eU330/DEF2ZccmSLtiGhb9Y0u3dtOSS+2HLnOQJS0/809zU8UsX+3FwbPxi7O85QRPSghAEvb8bHBymLftbuhRhd1CsjzE/S8Lw12D37qHO7q1f+tIvvuTdtaBSWeDAGu9bX7t891Dsrjfuuusz3eEK5dJYJD/GPpc97+8mN9VXFyaiOqG9mrDa5QQ0QtUq7cPWw9csVM1Gl8bRFdM8iAcOeEcOwMiZt37hR7fe2pGbmxEDQ+dAl/V4osnMNzV9skztmftB3r/f+yvsvBVr/ujWf8gVO+EzQzJvH32sCWvmm+rrdtPGPX4ZKyOvVaGF1sqLUKT9+2IfFKvlXMmUFMjlbUDOk12gLX5+qfchqNxbNdbhfRAS2dtiyPugAybVMmjAtS1nQSpw5D1QvQ95O8jvBRSvL3BoIPM+Y+9nvJ8imC1b5n3MWPI976+BAPxYIToUjKt/wi9gX8a5LgqThMlCv+AI0+qrWf6hg1xh4ngBLX1gyN2Googf2ljLcb3gSPg1/W8O0zmHr1AjEfXs2q/mpcsRdWVEZZfU7uyfZyjzWP5Pv4Y3D+CfV4A3vQL7ckStbVMjTgu8pUbWqJHaZrZxQcmbDc97FcVgxV//Olssbi8W9xaL5xUbezZTxsf5dnYlrQwj3zK+ZqgFf8fUPwJBoZa/F4juslRWC3z76Pl9tX+rzKn+sH3undFkMropqqpR74tz54LnAYzT9+rFnckWVW1JRjzAGWkRgK9mBzEVFCKoCaaQre/KOrxo2pKS8hf7JTPnmq4p12VVYz+8ubb1SXZmquw99NAWlxVrv4QDA96JZ87aaXk9mUxPBv7DUwG+/8H3rr56hvc+DHtr4PLbXzi368l5PEMVfJ3Ija/j3Si3WVppqa9A+ds0GPtg7KTU92cwpMCYYxhYfW78uWIPD81913vh3dEhzVFVri3f94t9sFzjSdX5CS2iWCxYvWPpvb/97b1L91axPOWox1+w9c47t55/fLKipbh3g9UCd7RYVou3uaW+NjdJEPhWdh6iAcmnQ7scOYqOlIIKkpNXYjwOlWFxBBz2pU21IsxDfF1Wncve8F45tdy/uLddljtHjj9uRNM2Lxv1/srCCKP2dO8VmPqv12G0X8yHI9WVg71NCcZ2Ed4lx6/lsxAP5tPJGYzEZIqlTb2+LtwNVmNNzA87K9hrlXIoTSEV7SZVHT+8MujIBMZNmGUafCCETlV0P/ohi9F3T0FCe4HH2FPJpB4KiGNouA6E5HAgqETiv5MlZbYoRTUtypVZiiT/LhiOwdXhaDQuhi6GiCh+EI7EQwmI3cX5nTFgajiuxP4oIpZfoijReCwU5BJ6ax/GlCQ6PKL6oUSBjI/lveM7fTzSaHclDrZrcztlk+hkoWhKJu8fuW/lSOzh34xc9ETKqqaegF+OeDd+7cCM0+6fcdvD3o0j8MvHNcdKPX7RyFtfw/baxt/h67C9TmwvA1lAzaPjTsPM9Tli1VfUMxiy0pp6hrH/7nU4P3IQwlp3W+TkU/tzNpphnt19WRZ9vpCVL61YeqfWH4udcgoLGEYmKk2xgvnT02PKlELknHMihb7AWHqtFbD6J/a0uvgu5tB4wFVtR5845lQh9DJ0duv777ekPJZqaUmBl2qBe87xRs6BM/3nJ+kq+HsGA+PP8dsRf9qEDtqBJSn7VEumkjt6FioIJvQrrmkr7J9XjpU9rTw2VoY/qsoKbympNvwxmkSMXH+V9+WXRnas6K4+tcr7k1/ng/IYOzUZ9VJYDVS/xshLW1Zc6dsKlG5+OsugtqfQVnQIU3xU6UUQQUnndHXcsmrZetkpmP4GdMHfF8sdk+anz4pWZzmxN27KVaNnnbM/9617NxyX6e7OZLu64AO8ZPGBZbwVbYVCGzzk7Su0fWOn9+7kzQNXve6XZRp18E78lcZ38VH2AqIcgpFNAmO2csXm8PCeXYuN3vvWPnL3lTuG3Ovg996ZLy7S7DtuhXdq98Pd3o2Jf/QW1/W3MP5Zvh5xLOjvLqm5CShBsnMqfAHOe937wes/O7zv596NbI13877XX9+39/XVP98H2+tznMS5OYV9xd9zVHP0DjwP+7wzvaXsK957BxDDtvs2ZNr4Wt6GfkMrzmBZGBFmCxuELcecY6EN7E/f9YKulf1zGbQN5K8XYZp2vI/Jxz7VIvHXdmk9yaE9rKq/PmU3jk/ohqvYODUFdmhZLb2ic2xSZdJYJ34nnVtIqWqq8AP8Yur79SfWUdsL1VG3o6gUrKZ0rnukq61dyZcmV2bOP7uinJYdYbNrbeyd3gKtr/bmaS0Hr3Z+Z3tc3anG2/0vpevPtQhjNe/Q5FKsEjNUlPmKlEvHK/GOdMkAbZFW6fFeJz4qyMeFdT5KaESIj1/xNsFeeHQu6AfA8G6qz9f08XXsA5yvdkJeoIWrGM9bbpV2w2x1mOGQaW2RdsOKaPX8PRH2gdHclAq0jE0fzkrxkaGLiy3G2N6NGPSEM+vytZeXNifVZja995SltzMxIibVKYz1xsJws5xs5yY3TTOKERgsP/JD3q82Nzd0+xD7H7iR9qtdJ6cPshcOvfIK2t7B8dv5Z9h3fP9Q8/e8bEXNKSYCQM61XQdBLaeiy6KYRdWE0t41oK/ZC59b472/Zu+yZfiorfYKeMdnuGTfWir1Llnj/XHNHcvuqGd7P6ZqoK/1+RFH/7AVdWCFsF4Q/GMetBYpHz1UY+cnXMU2NJWmQZuJE+4jol+56vrbNr6wyIpmYE653oytFLJAO0uoEIK/XIlOH/u3rrY2HUPfruJJC+alYosXndhpY5ijZzJdbcFStG9du8ivrcRSalOTaoRfYNDeOTipa7Azy+H5sEG5eti5Rs6dMKnUC97DWcPMtvfc0taVgQ7T1XsmG05rO2Sok0AgHcyyO9avjqhm3kyONYWcfNfgYFfOCSmzzSTmqZF/vlNszrQzUYcjdPo16/s/5fHr+Ea0kRJqdRR9RwEkVSqqoOJ3MjqKqqTC92Gvt8k7Ay70fgAnQ4/3E+/f2G7v++y5bbUnt29nJ9RugWdO8ebBPScvWeJFYP9Sb8yf94LAEAfn0onauufRzRw6NtWwu8Yg07u58/d2wth4r7t2TvBQZlFEVvYEzMCegBxdlDmEAc6cdT2WNHuKnaF9sT0wnFpSnrP2vmjosRD+R+8DWD+nd5GZTPTNbppx/J4zQ/4+8vkoZ3R2OPXJzmoDZuuAAdUizRm5xq99/aOP/PMjvz9wxelL4OnB2vX7rzjzRG/BIHvu8GP1Qm/VFfsHvAWLN+INnjlJqOPrdczy+Yj4WgYEB+vFL3vsw3vYc94/eB1wBdIxFW32xT5++hFKqoQyVqDtGLUkGklMso5CshFETL39yG1wD9u2/d6Hofybq+AeeMp77emZK2fiP3zl1iO337ttOzx/1a+91x5+BpxveCN+Ud0GtiEJ6+A2HOs04TS0gXphiPyaumdTMhsWHI25WaRjehXU/wk7f8y+uXzUDzi2fKI4w/i6O8RyKCJB9IyoGI9pHQUxpUPt5DuYnpJyHVosLkK4UkY8iAcd2N/cxphX4m0tcm+pNanLoN6QRHcile7v7yj0QXcmkQ23FcWenkmZkB0X4ykW0DBo6SvgPcA0zLFDGSoXi5lQR6Q9Gm4NBPr6eDgd4S26pDvRbocPDXFnUryqSVq6HoPmcO43o18zTZglLBSuF24XvkJY6B+Ko10t3wmmg68wgjyqA8HECVqM4ibcnjgQGJRL/racgq9zW0al93dezMbOMh1CIASwG3hCBxJ8XJHpXJ7iH9RTKN04nUAHSsqlomaS8Lu2DHnFP/3iWvzE5uZQRhYVdzsT4/Gxsflj8bjIzh1QuNIWamkJtfGAPHBuvWzhKJVtmyYHeFvGNB7UtOmdXau7O4fmzrEjUpMWlgOBRCIQUEKpZiUUCIWVnG3llHAoEJGaU1SqJoJBMZJIS5FjSr28+VVNf9CES+ZglNzbhw3Cw3P2zkkDO2dASaTl5mY5nSAKIT1622iawXlVP7tFwuyp24B5/zIye9aMSV2ru7zDX9W0r5pvK0G1RY6oqXbsIpmMyM1J9IHFREIUlWCyWY4kkx2FDrStYcUwQopfctuMWZMm90zumTQbBk2/FaFxNuQ89H+fQ10y/XM8n5wNMWOINP4pTZqPlNsHtAPjH5KvnxJpHBKhXXCaEYRq+J5/aOzjj9/JdrSa0GZH462cJaXYJJH3yrISb141mWPzGu+WQ0HVXINQ0DhFdgV0NTVnJ6XNmOpN4qIlxtIgKdGDze3JSGRaF58sZgNy/OlMpjkcGiAbZIw/zJex64RNwo9IM03d1yZ/h55b9Tik6jrDMMJQ6xy3cRlBTdQMzdD9XViFto3QdOuYoCFkuX+Wu1oXwb76QG0jywxTKxqkr7QJibFPnNU3nfx7H/Syik09VNBZqhJ/6GBEoxHeCI389uucMq0+ZtmVgmM7PhL4xwcYnw0pKZKbUb6ldFxfrhhmnIv1XaD6ihYtLkJanCayZtpnoFVUAFERQ9M6p+vZdm1GROZciq4HHumz29ndybD3uh3kIu2U1DeT6kvqjMnYCr0/0Q41xKkhe0gf1j9pRwxN6cxSO3AMYb/Hhgo9yebe/Ei5vGhKrljVwmoyEk8ByNQUrS/XLzJLS1P9Rd3m+pogLalRSTAaVwMR6gz7UsORUDgVWS+H9dScKZEM9qfDj+1KPBFuikSMeqv++jStf3P5/2kToF4cDv/dVk11ZrnRKv5Zkz6hnGxNFuPadWz9UVsWhyD0inULavQPi2zPigsrLS3eK94rYqwjbVyw4tSNKTHe1zeLrd+4tX9Ta9r7DkwVY729s7NbN56lS+rkXAMvp6Jy7fDPFir+ufaC0Ie9kLOOnhvQ9xjrmfr/pMFkq2r3N74yHdVutelA96fu7ODV3m+vvtp79+qr2cGJXO93E3W8dyfyGrHDIs4xJkjTuTY1Bg2XDN0T/8Rrfexqucg5nHbFypUzO/LePbByxkxMFvIMnmbPnlTzKmMLNi2IQuVkT63MX+BUFkQZbKJxBzFuPI9fieOOC3QupVXI4shtoZdOL078EGYiiJSQG1JBL9sUvqF9LKILbuMzJ9hxChLFGzmdfTywZMlA7Yd0ZSfXxhnU/rCW/i7AFD2NG/igx4bWspNjOuYc/KR2/8CSfzn/S9uvwc92ffvnz/c+H9PPP1+PLTm/HkcNjL/NL2Xbkc6/pW0Q3PpPV/iGcCwWPvIfdLXaws1fbg6nWS4eqv2Zclg0FB80jEGc5eD4BfxEtI8Bf2VKwIB4GijuNLzbGB0rNsvs8ypvz98CO5u9q5h258Z9rIg5C95pgp0tmLNh3+n7CNcy499FmbwG410M6DHKqps8hKFc3q66OeIJuoAKkUoT5q+x9AIdAfXDe76u0hkvR/TJcyuTvZ90FTItoC3Y3DfjIYzKf9p/hp3npURnZawCXy2P3dM1K9xtB+Rwe3Nva7J584L3pdEp51bGSj1hzqye8KzuD8rz55eFxvrXPr4B7UTcX3MbAVUr5HTbbQP6KVQxDmqlnHNMBWcsL+vsp02n7fb4I4/Auwmj9jo+QO2RR7x0wgCj6TTvyO6zH330PNlI3Nt0GoiXnf0IPpiJej/a+PV8nr8ek6Zfp+kTDoZvk/yj+1Z9GbjEp5haKt1u/nLBysufeQbYM32nnXHLGWfcIprZtlTK/OUUynvm8lMXrqLcMxrnIM9p+K89n/Zfk42156JBaF3wj+4VJn4PRGEMfA+d2cfQvvWAuH+/d+QAk2PBJkkWJelF2heWFLlXCfm+rX9wupY/UK/YEYrZMuOX0xb7u4okhZQXBZSS6eM/5ZexCz/5XVUWtaSbMIKWMGmPINlYvxQbd+FvfmvFMdJMOQV9Op995HlWq83f1tHS0tEMb/m32nc7mps7Wpjm31a/+7Wt7MLamlFm1N6DW1v8TP/q/fSYB5jjPQdzvT9ecEF9Llyhg+9kO1CLi39HQypltHkodOjbHv3lIF8fisdDR/5E18fAFI0QjDSHm95YuGXLwgVbtrDJsZDXSaoDr4diMCUYNaaAt3DzF7ds+eJmXyfd8Uf4+exhQSfvkuJrf1nRrdp0xAots8jPT7z56PDAys19QS4vD8w9JZB449FHEbhvvO6NlKKsCUtRUZx1gn3BvGvf1FIPUmyWH78IYzM6+66jVl1Ivy9y3CxT+sDNNw7FOBULlLzix6h2xc1AY2GjWq6SzEmVaqWX2/T7L8P3MkgqLd90+z7oCAyLFBnUBYdOjtDhDzo7RHdF7mcxtv761aFNxdF1yebmZKq52fvhejk0r71pwYWgjiSKbfMjQ3G+4KIEfB54INqc4KGmXwQSTPquBOHkpLE0569iSg2GvuVvDQPniR5I2HKKpcbUoKzJOVHUeEa8cH53/PSQvP76udam0Opqc6reH6xaz0bjFy3AzkJjmY7U9CRcvKA18zEPptMd2UzQ+HlbErAzFl7bxsRXOQ/zb8myGA1GY0pbsCinIvp8nP5cQmsRsY9/KqF8tI9f6q91LhXW+JEp/cyH3CMccv0HBf4T/RCIuFLPQt74T4RYmK7n4Av4MAykanSStp6FL5jSUclaGIxGg5cGZWkskpiTSG5R0P+ERHBdMIH3uLJZi89JRMYkGetQRSMyFsac1Oa/qbclmZgTD49FDO8/R5YvHxlevhzOnChmkcCWFDYenSdJwc9SM58NStK8CLWzJRBhn7Qjq1tSn+6uQVc8tUWV/3v5pStWXLrc96/z4+vZN33cLNBel4T+pUkjs2nZHAzuDzPvP9V/hkpwj05iiY5m5+HJvP6EHY978YR3X5wF4ARzCqxOJDwlKVOGyhLd8RR/3vhNLBbtbInGrJyJ9RNeIgGr4/o670mTHfDuT8THZRlWq9oLRqwnqrKRaGc02tIZjdXtYHj8VvYh+5m/nphDWMkB+7Cxjgjd9QWxRqxwAT/L9x16KFZI0fk2a8L0+BHw0d8UFf1feflw4df42x8cPc3pxCmsHFi8SY95D8R0PcYmT1uyZJr3gF+wS2vkwsqYBk2J1NzFA3+hks2bKfcvMX3zkoE/k5nHi3f5n+OaFqdLfTxX4HgO0XgQTcs4nnBjPQ8m19dJPx37KL6ncvRXGU7B9Xd16XdGSrkPnLJ+9ITWogf3nLvw3Fvu22Pvsr9Y+ySC8Vb9/qFrrnno97bdddtt/weKnOiWAHjaY2BkYGAAYn/ZBMN4fpuvDNzML4AiDCd+sfDCaeb/PsxTmR4BuRwMTCBRABIICg8AAAB42mNgZGBgevefjYGBeQ8DEDBPZWBkQAUpAFpTA7MAAHjaLVBNK4RRGD3vPWma8MqEYsaYd0Z5CY2MfG7sWWI1MsXSwkqz8BWlfDWSz82ULGyQNCUs/BALOxtLK1k493Lr9Nzuc855nnu8L7jjTQq68xqjLCBnPhFyBU3cRsq8oZ57qDVl9LCIZkbRwTP1j4Rz4R6DLKkWETcfSPBU93nUmG95ZYU+4cLBd7pAHsvwvV2QDxiTzlcv9H4Q18wElxDjIdp5LO4akuYVA05XQCOvkOWs+Av/Xo8Y5p36l3rfRwsnEKh2ckoem+jlKlpZ0ewnjGjXgHlUcQMZ1Rinpc0jwoh2yIlj/96FOu3fr/9meILQdItfwpDz2ZHezlxULuto463eQ/m8yPtGmEGUB0hyS7w5NLgcnuVt8ykLFaQ1O2XekVY21TY/V63n+F/+vzVQRI0AAAAAAAAAAAAAAAAwAHgBGAFyAjQCSgKWAtADDgMoA3QD+AQkBFIEjATKBPwFNgViBXAFhgWUBagFvAXYBiQGggaSBrQG+gdyB54IFAhcCI4I5gkoCUQPog+6D9oQEhBAEJAQ1BEsEV4RnBHiEhoSiBKwEvATFBNWE6ATwhPiE/YUhhSaFN4U6hUiFawV2hYeFlAWYhaWFxwYCBhkGYYZtBoAGjAahhqsGtAbHBtQG34bxBwWHFAceh0mHbgeCh4eHnIehh60HrQetAAAeNpjYGRgYEhhecggxgACTEDMyAAScwDzGQAlIAGlAAB42uVSS0rEQBB9yURBkfEKfQFzAFeiLmUcNDC4nGR6YiCmJYkGQXDrCTyAO6/g2Wbhq/6MEfEEpujqV1XvVVc3AXCIT0SQb+wTTOkniJI97qeMHJbq3OOYFvCE+SuPE+YD3sEGmce7iKPA38cmCpwCaTzzeIWD+NljjWn86vGa+TePS+L3eVX0plMLna9N0+MDCudoqRmIFqhQo4NBg2PGg7WU3R1jGNVTnm9whxdahltWOiqcX3LdU2PQU1dYv7L9NHLOJPre8hqbD9rGMiXn+MJsuZ/hmqZwstUeES3ZWTP7QLXsl5jhAjecTPEdNR65Wl+TrqU9QdtsZWPFTmHy76lc3BELT6av8bS9kfBzLnen9J/fPvuzw+8XSPnXu46GDJmx5PQ1b9L+qIzwF/y2jGwAAHjabc1XN4IBAIDhp89eyd6VzLKJZGRkbyEzcY6/6Mafo9O155z3+hWo+v227D9flUICNWrVqdegUZNmLVq1CWsX0aFTl249evXpN2DQkGEjomLiRiWMGTdh0pRpSSkzZs2Zt2DRUuW9Im3Vmox1WRs2bdmWs2PXnn15Bw4dOXbi1JlzFy5duXbjVsGdew+KHj159uLVm5J3ZR8+/YSCIF/4A0JgFjIAAA==) format('woff'), url(data:font/truetype;charset=utf-8;base64,AAEAAAANAIAAAwBQRkZUTVhd8L4AAADcAAAAHEdERUYAkQAEAAAA+AAAACBPUy8ygxR/WQAAARgAAABgY21hcM52AmwAAAF4AAABSmdhc3D//wADAAACxAAAAAhnbHlmJw4xwQAAAswAAD1oaGVhZPSrSy0AAEA0AAAANmhoZWEGhQMnAABAbAAAACRobXR4SUwNLQAAQJAAAAGQbG9jYQIo9WoAAEIgAAAAym1heHAAvATkAABC7AAAACBuYW1lO18JUwAAQwwAAANocG9zdFx+DF8AAEZ0AAAA7QAAAAEAAAAAxtQumQAAAADIj74XAAAAAMj6BA0AAQAAAA4AAAAYAAAAAAACAAEAAQBjAAEABAAAAAIAAAACAyIBkAAFAAQCvAKKAAAAjAK8AooAAAHdADIA+gAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAABweXJzAEAAIAD/Au7/BgAAAzQAtAAAAAEAAAAAApUCrQAAACAAAQAAAAMAAAADAAAAHAABAAAAAABEAAMAAQAAABwABAAoAAAABgAEAAEAAgB+AP///wAAACAA/////+P/YwABAAAAAAAAAAABBgAAAQAAAAAAAAABAgAAAAIAAAAAAAAAAAAAAAAAAAABAAADBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//AAIAAwA7/9ADbAK7AAsAFQAZAAAlFgYjISImNwE2MhcDMjY0JiMiBhQWNxMjEwNhJTRI/ZNIMyUBNiRnJFUXHx8XFh8fPBp/Gmc+WVk+AhY+Pv2xICwfHywgjQE0/swAAAAAAgA0/+wDJgKnABgAMgAAEz4ENxUiBhUHMzIWFREUBisBIiY1ESU0PgM3FSIGFQczMhYVERQGKwEiJjURNDQBDShDck5COgRUEhoaEuESGgG5DihDck5DOgRUEhoaEuATGgEhQWRnRi8FnV1lARoT/v4SGhoSAQIHQWRnRi8FnV1lARoT/v4SGhoSAQIFAAAABgAo/4wCwQK7ACQANABEAFQAZAB0AAABFisBERQGIyEiJjURIyImPwE2OwE1ND8BNjsBMh8BFh0BMzIXJRUzPQE0LwEmKwEiDwEGFQU0JyEjIgYVERQWMyEyNjUBMhYVERQGKwEiJjURNDYzEyImNRE0NjsBMhYVERQGIzMiJjURNDY7ATIWFREUBiMCwQkRMAoH/f8HCjQHBQQfCRJLDDAMEtgSDDQNRxIJ/lb+DAkMEpsSDAYMAUgQ/ulZBwoKBwFvBwr+xwcLCwcVBwsLB3oHCwsHFQcKCgdkBwoKBxYHCgoHAeIO/ckHCgoHAjcIBi4OQhQKMQwMNA0RPw4SBAQcFAoKDAwGDBKAEAILB/4kBwoKBwG8Cgf+hQcKCgcBewcK/mMKBwF7BwoKB/6FBwoKBwF7BwoKB/6FBwoAAAAGABb/7ANaAkEAAwAHAA8AFwAzADgAAAEjJzsBByM3BjIWFAYiJjQkMhYUBiImNBMWFRQHAwYjISImJwMjIiY0NjsBMh8BITc2MzIDNyEXIQH3bBB8tRJoAb84KSk4KQErOigoOijzGQJYBxn+XwwTAlGVDhQUDrAaBxIB9wUGGgd2Nv4uLQFtARtERETpKDooKDooKDooKDoBtgcaAwb+2xkPCwFHFBwUGkkPGP7is7oAAAAEACD/egNjArgAQABkAH4AiAAAARQGBxcVFAcGKwEiJyY9ATcGKwEXFRQHBisBIicmPQE3JicHIyInJj0BNDc2OwEXNjcnPQE0NzYzMh8BNjMyFxYDPgE1NCcmIyIPAScXBwYPAScVNxcWHwEHMycXFjMyPwEHMycDFzIeBBcWFAcGIyInLgInIy4BNT4BBT4BFxYOAiY2A2NLQQsLDRWUFQ0LAgYMCgILDBaUFQ0LC1YmLAQSDA8PDBIEKyJJAhkLDw4LgBkaoG5xuj1FXmCJHRgJiAIMTxsHS0sHIVsPDXsJIw0aGBckCXsPpQcHFh4iJCYRCAgIDAsIGEYpDwQLEAER/v0TLAwLCSYrGAoBFU+ML2AEEQ0PDw0RBRIBEQURDQ8PDREFWjxdBAwMFZgVDAwEVThuAQEcDwcHSANjZP6KKXhFdlRVBAFNggg5VxYHfwgWYDsJcEoEAgMES3QB4wEEBgwQGRAHGAgJCBcfCAEBEQsMEIkUDAsLLCgMFiwAAAAAAQAR/9UCywKPAAsAAAEzFSMVIzUjNTM1MwHR+vrG+vrGAZXG+vrG+gAAAAAEAA3/zgN/AioACwAXACcALAAAJTYyFzIVByI1JiIHJz4BFh8BBzQjJiQHJRQzBycmJAQHIhUnNzYkBAE2MhcHAQlO3U4BNwE3nDe1VeXkVQE4AWr+0WoCuQI4Amj+6P7paAE4AXgBQAE//oMaSho/i05OATcBNze0VT09VQE4AWoBarcCOAJoSkpoATgBd1VV/g4ZGT8AAAMALf+yAnMCugAOABsAJgAAATMRIREzNTQ2OwIyFhUDJzY1NCYjIgYVFBcHEzU0JisCIgYdAQImTf26S3xXBARYe5QgICYcGychIa8+LAMFKz4BZ/5LAbWAV3x8V/4bjRQlHCYmHCYSjgFlgCs+PiuAAAAAAgAZ/7EDWQK6AB0AKgAAATIWHQEjNTc1IzU0JisCIgYdATMRIREhNTQ2OwEBJzY1NCYjIgYVFBcHAoVYfGokJD4sAgUsPk39uAGRfFgD/v0hIScbHCchIQK6e1iAHSINNCw9PSyA/koBtoBYe/1GjhQlHCcnHCUUjgAAAAEAJ//KAuEChAALAAABBxcHJwcnNyc3FzcC4cPDmsPDmsPDmsPDAerDxJnDw5nEw5rDwwACACj/dgNwAr4ABwA3AAAAIBYQBiAmEAU1NCYrASImPQE0JisBIgYdARQGKwEiBh0BFBY7ATIWHQEUFjsBMjY9ATQ2OwEyNgEeAVz29v6k9gKdFQ95DxUWDykPFRYPeBAVFRB4DxYVDykPFhUPeQ8VAr72/qT29gFcwikPFRYPeQ8VFQ95DxYVDykPFhUPeQ8VFQ95DxUWAAgAKP95A2sCvQAQADUARQBJAE0AUQBVAFkAAAAgFhUUBwYHBiMiJyYnJjU0BTY1NCYjIgYVFBcWFzYzMhYVFAcWFxYzMjcyNjMmNTQ2MzIXNiUWFRQHBiMiJyY1NDY1Jz8BFSM1HwEHJxc1MxUhNTMVJzcXBwEdAVr0LjtxXmllXXI9MQLQC7iBgrgMAwYVGEFdBQQIKiktKgIHAgVdQBcVBf79GQUQKgsNJwE4FXMnwRtEG0Fg/etfKxxDGwK99a1oV3M9MzA8cV1orf0pJ4K4uIInLgkQBlxBERQCAgsMBBYSQF0GD40THw4KJwUQKgEGAvUJE19fSxtEHHsmJiYmoxtDHAAAAAIAKP9wA3ECugAJABkAAAEyFhAGIyImEDYBNTQmIyEiBh0BFBYzITI2Ac2u9vaur/b2AZgcE/6IExwcEwF4ExwCuvf+pPf3AVz3/kgnExwcEycUGxsAAAADADcA0QN6AYgACQASABsAABMyFhUUBiImNDYgMhYUBiImNTQkMhYUBiImNTSTJTY1TDY2AUVMNjZMNQF7TDY2TDYBiDYlJjY2TDU1TDY2JiU2NUw2NiYlAAAAAAQAKP+wA2oCvAAOABIAFgAnAAABMxURIxUHITUjETUzNSEXIxUzJRUhNQM1Mz0BMxUzNSEVMz0BMxURArW1tYj+sLW1Adh7aWn94wFsiYk2Q/2kQTYCGX/+0zWIvQEtf6PcNdttbf1giIM3gcXFbxI3/vUAAgAb/90DXgKAABQAKgAAJR8BDgEjIiYnKwI3FysBFBYzMjY3MwcnOwE1NCYjIgYHLwE+ATMyFh0BAoMnHC+LT4zFAQsCQ35/MxyPZTxpyDR/fjIej2U9aSInHC+LUYvGoSgbPEXEjH5+ZI43u35+AmWPOTAnHD1GxosCAAEAHP91As0CuwAiAAAlMxUUBiAmNTQ2MzIXPQEfAg8CPQEmIyIGFRQWMjY9ATMCsB3J/uLKyo8QCTGdFRWdMRIHU3R1pHQe6x6PycqOj8oBT0cynRUUnTJGWAJ0U1J0dFIeAAACACj/dQNvAr0ACQAhAAABMhYQBiMiJhA2ATY0LwEmIg8BBi8BJg8BBhQfARY7ATI3Acuu9vaurfb2AboGBjcGEgfzDxBYEA83BgaLDxYaFBECvfb+pPb2AVz2/ssGEgc2Bgb0EBBYEBA2BxIGjA8PAAAAAAEADAADA04CaQAZAAA3JjQ/ATYyHwEWMjcBNjIfARYUBwEGKwEiJxYKClMKGwqIChsKAXMKGwpTCgr+PhghJyAY7wocClMKCocKCgF0CgpSChsK/j0YGAABADv//wL5ArwAAgAAEwkBOwK+/UICvP6h/qIAAgA7AAEC9QK7AAMABwAANxEhERMhESE7AQauAQb++gECuv1GArr9RgAAAAABADsAAgL2ArwAAwAAJSERIQL2/UUCuwICugAAAQA7AHIDjAJXAAYAAAE1DQE1BREBpwHl/hv+lAGhtvPytbUB5QAAAAEADgBxA18CVgAGAAABFS0BFSURAfT+GgHmAWsBJ7bz8ra2/hsAAAACACj/dANwArwABwAKAAAAIBYQBiAmEAEtAQEeAVz29v6k9gECAa/+UQK89v6k9vYBXP562NgAAAIAGf9rAwgCxQAoADUAACUXFAYrARYVFAYiJjU0NjUjIiY1NyY9ATQ2NyY1NDYyFhUUBx4BHQEUARQXNjMyFzY1NCYiBgKfaRgR8gE3TjcB8RAZaQFlUAQ3TjcDUGX+vAIcFhcbAx8sHmRmEBkECCc3NycCCAIZEGYIEdBYjBwLDyc3NycODByNV9ARAfsFCgUFCAcWHh4AAwAO/+cDTgJcAA8AHwA8AAABBw4CByYnJisBNTMWFxYTPwEWFxY3MzUXBzUjIicmEyIHBgcOAgcGByM1MzI3Njc+ATc2NzM1Fwc1IwErKgQOCwUSCTEgZWU7OyGFLCAQCjQgVq+vVjhAG5AXISMrE0c+HVBKY2MaIR0yBYgnUUdYr69YAaIsBQ8MBRAHKHABKBX+2i8iDggqAl6UklgoEQEYFhctE00+GEABcBYSMgWRIEABXJOTWgAAAAABAAP/3QFRAnkABQAAEzcRJyM1c97ecAGa3/1k3t8AAAMAPABGA4ACAAAHAAsADwAAARUHFSERIRUDESERNxchNQOAP/z7AwVJ/Y7v3v5jAXuwGWwBum3+/QEm/tr2xsYAAAAABAAO/3MDTgLiAAUADgAcACgAABM3EScjNSUWFAcnNjQnNQUUBgcnPgE0Jic1Nx4BAx4BEAYHJz4BNCYnft7ecAGkS0siIyMBGFxNIjtGRjshTV1ddo2NdiFjd3dkAZjf/WTe3x4ytDFDHFgcAkpcmSxCIneMdyICQSybAV1C6v7o6kFCOMfsxzgAAAADACj/dANyAr4ACQAYAE8AAAEyFhAGIyImEDYTNjQnJiMiBwYXBhcWMzITNjU0JyYjIgcGDwEXNzY3Njc2NzYzMhcWFRQHBgcOAgcGBwYHBhUUFhUXOwE1NDc2Nz4BNzYBza/29q+u9/fKExMUHRwUFAICFBMdIIIKKSZGMSQhHgkuCgIRBxAKDQcOHggLBwwJBAkLBBENDAgFAQELWAgJDA4eEQ4Cvvf+pPf3AVz3/V8SOhIRERQbGxQRAVMYJjojIgwLFAZXCAEKBAYEAgIKCxQNDBAIBAgKAxASFBoWEwQQBAsMGhAQDg4WExEAAAACABv/jAHhAr8ADwAbAAABMhYVFAMGMS4BAjU0NjsBETI2NTQmIyIGFRQWAQJcg8sYGUx+g1wEKjw8Kis8PAK/hFtr/kkyNaQBRTZcg/7OPCsqPDwqKzwAAwAc/3gDYAK8AB0AOwBHAAABFwYmLwEmND8BNjIfAR4BByc2LwEmIg8BBhQfARYBBiIvAS4BNxcGHwEWMj8BNjQvASYHJzYWHwEWFAcANjIXARYUBiInASYBO0YmZSSQJiZjJmsmkCQDIEYKEJAJGwljCgqQEAGxJmomkSMEIEUJEJAJGwljCgqQEBVFJmUkkCUl/b4cKA4BJw4cKA7+2Q4BK0YgBCSQJWwlYyYmkCRlJkUUEpAJCWMKGgqQEP58JSWRI2UmRhQQkAoKYwkbCZEQC0YgAySQJmsmAcMcDv7ZDigcDgEmDgAAAAACABIASANXAiUAJQAuAAABBgcOAyMiLgIvAR4DNjcmJyY3NhcWNzY3NTQ2MzIWHwEnIgYUFjI2NCYC3g4cDCdGc0hNhU44CwsFEzo6UiVAIBUNBxI1nwcOXkNAXAVm5RMaGiYbGgE3GxceOEAnKjw8FRUDBxAIBw4bQCsLBxEyCQgSBUNeVz8xdxsmGhomGwABACQAAANpAkUAIAAAAR4BFRQGIyImIyErAS4BNTQ2NyY1NDYzMhc+ATMyFhUUAwMuOGFEAgYB/hIBAkVhLSYGRC8mIR94SWeSAT0SUzNEYQEBYkYtTRYQEy9EGUBOkWgKAAAAAgAo/3UDbQK6AAcANwAAACAWEAYgJhAFJjQ/ATY0LwEmIg8BBiIvASYiDwEGFB8BFhQPAQYUHwEWMj8BNjIfARYyPwE2NCcBHgFa9fX+pvYCFgsLbQsLHwwhC2wMIQttCyELHwsLbQsLbQsLHwshC20LIQxsCyEMHwsLArr2/qb19QFayAwgDGwMIQsfCwttCwttCwsfCyEMbAwgDGwMIQsfCwttCwttCwsfCyEMAAADAB4ARANhAhMAFwAjACsAAAAyHgIfARUOBCIuAi8BNT4DEzI2NTQmIyIGFRQWNjIWFAYiJjQBgX6FYlEVFQgcW12HfoViURUVCBxbXcQ6UVE6OVFRHzQmJjQlAhMvQ0MYFwgJH048MS9DQxcYCQkfTjv+vFE6OVFROTpRyyY0JSU0AAACADX/igKGArwABQALAAATIREhETcBESEVIxHgAab9r6sBYv7jrAK8/M4Chqv9EwKqrP4CAAAAABYAKP9yA3ACugAHADIDbAOKA6MDxgPXA90D4QPnA+8D9gSjBKsEtwTFBMkEzgTSBNcE3ATgAAAAIBYQBiAmEAUHBhQzFBYVFDEWFx4BNyI2IzQnJjUzNCY1IgYiNTQvATI3IjcmJyYHIgYDNjU0JyInIiYHNCM2JyYHBhcUFxYGFTI3FDMGFxUyNzIUFxYGMxY1NDUWFAcUBhUUDwEOARUiByIHIiYjJzIuATUnJicmJzI1IicmMzc0NjUiBxQmIyc0BicmJyYjJgYfATIHBhUuAScmIzQjJyYnIi4BBxcyFjcVNhYzFCcmFxYHNCMuASciJicGIw4BLwEGBw4BBxQGFSY1PAE2NRc6AjY1MgcWNSI1Ni4BNScWNzQnNR4BNzY3NRY2NxQ3NjM+ATcmNTI2MhcUMzY1IiciByImIyYzJjczNDY3Ijc2MzI+ARcyFTIeATc2FhUiBiMVMhYHMjYzFBcWNyc+ATcuASMiBxY/ARQfATIXIxYnJiM0JgYXMhcWFzIWFzI2Mz4BJzYnNDM2JjYyNxYXMhcWNRYVNjUiNTIzFjUyFTMVFAYjBwYeARcnIg4BJzI3JgcGJg8BDgE1BhUWFR4BMxYzFDM0FxYVIhYXIhcWNjUiNSY3FDc2JzYnJiInNiczMhY2Nx4BNxQWMxQzBjEyNTI1Mh4BMx4DFRYVMjc2FTIWFSIWIxQjDgEmBw4BFTI2NzI3FDMVIhcWFRYzFCIVByM/ATM1IgYjBiMGDwEGDwIGBwYVIgYjDgEVHgIVFCMwJyYzNCc0BiMmIxQWFQYjIiYHBhUiFDMUFhUyFjMWMzc2NyY2NxQ/AhYHIg8BDgEUFgczNTIGMxQWFRYHMjUyBzI2NDM0Fzc2MRYVMjcyFjMyNxYVMh8BMxcUFhUfAjYXFjMXFhcWFyIVFzI1MhYzBhY1MhUyNjMyNRYXHgEPARQjFCMUBgcOAQciBiMwBwYzFAYHBhciBiMiBhUGDwEGHQEiByIHFCMUJyYHMhUUBzAHBiMUBh0BNzQXDgEHIhUUMxQXJzQzNDM1JjY1PgE0MzQ2LwEiJjUmNTImLwEmNDY1JjYzNDcWNzYnNTQjIgcuAjU2JzYmIzQmNSImIyImIy4BJyI1NCM0JiMmIzQnJhUGFhUyFxYHBicmNS4BNS4BLwE0IyYxNCc0Jjc0JwYVFBYzMjY3BicmNxY3JjcWNSc0NzYWFTI2NxQXFgYVBhUjFAYVIgMWFTI1HgE3MhY/ASc0JiciJiMmBwY1JiM0Bw4CJxQjBisBIic0NzYjNjMdARQ+ATcyNzYWFRc0JjU0FjcWBxUyNjMGFxYHMgcyNRYUIwYjNAcGNzY1JjcmByY3Jjc2MSI3MxY3MjEWBwYXMjUzFCIHNjcUFzIHJicyFTIGJzQzFzYXFAYmIzMWFzI1MjcUBhciFQcGBxQHDgEHBjMUMxcWFAcUBhUHBgciBiMUBhUHBg8BBhUGByIVIzQmNSImIzQuATM0IzQmNSIuATc0NzYnIjUmNTYnJiMuAQ8BBi4BNSImNS4BNSY3NCc0NjU0NzQ2NTYzNjc2NzY3NicyNTYzNzYzNjMWMj8BNjM2HgEzNR4BFTMUMzI1MhU6AR4BBzIXFjMUFjMUFxYXBhYVFhcUFjMUBwYlFDcUJyI3MjMeATMeAQcGJyInMh8BFh8BIwYiJzMnMhYzBzIVIjM3MhUGNzIVJgcXIhQjBzY1FxQFNDcGAR4BXPb2/qT2AroBAQIGAQQBCgEDAQEBAgcEAQMBBAIDAwEFAQECBQIGBT8BCQQEFQYBAgcFAgIHAgICBAEBAgMKBAEBAwIDAgQEAgQEBAgMAwcEBgUCAgEFBgUCBQgCCgEBAgMDAgIGAwIDDQICAgEHAwEBAQIEAQQEAgECAQMEAQIHBgEDAgYEAwMBAwQBAgYDAgoBAQUCAgMBBwQDBwEBBAEPCwICAQUEAwQBCQIDAgYECQIBAgMBAgEDAwEDAgEBCAEDAgUCAQEEAgMDAgMJAgcBAgQCFwEGDgoEAREMAhYBBQMCAxADEgUCBwEDBgEBAwEBAQcBL4dMhmEBBAIBAwgBBQEEAwEGBAIBAQECAgkCAgYBAgICAQULAgECBgEEAQECCQYHAQEDAgEIBAECAwMKAQgBBwUCBQIIAwEGAQIDBAcLBAsDAQMJBgEBAgICAQIHAgYHBgIDAgIBAwEEAwUCBwQBAwMDCAECAQcGAQMDAQEDAwICAQEDAgUCAQELAQoMBQQLAwkCAggBBgQBAwUFBQYBAQMDBgIEAgIEAgICAgIBAQMBBQQBCQEBAgQCAgEECQEBDAIGAQIFAw4BAQQCCAEBBAIBAQMDAgYGAgECAgEBAQICAQ0DAQICBQEMBwIFAgICBgMCBQQCBAQMAQMBAQEBBAUBAwkBAwEBAgEDAgIBBAICBgECBgMCBQIGCAUFAQUIAQMFAQELAQEGAQIDAQEBBAEBAQMCBgIEAwQGAgQHAgMDAQIGAQIBAQICAQQBBQECGwQCAQUDAQIDAgcFCAMBBgMEAwQEBAMDAQIDAwUCAgEIBgIKAQ0EBAIGAwQMAwELAQcJCAIDAgYDAQcBBwYDBAYCAgUBAwEBCwcIAgEKIceMUo4vBwIDBQUBBAIKAgEBAQMBAQMCBQIDAgJFAhkBAgEBBwQHAgoBAQUCAwMDAQIJAQUClAEFBQsCCAEDBAcBBAUBAwMBAScCBgEDAwIEAQIBBQEHAgMCAgMMBAMBAQIHARYCAgMEBQQCAgEBBAEBAwYBAwOgAQPKAgMBAQMCAQUCAQEWAgcCBQFxBgoGBQEDAgICCQEJAQ4EAgEBAQQCAgECBAECAQEBAQ8HARMPAgECAQUEAQMFAQIBAQQBBAQGBgMDCwENCgoBBwoDCQQIBAQDAwQEAgECAQIDAgEDAwQCBAEEAQIEAQMDAwUJAQgNAQMICAoQBgIICQYBAgICAQUCBQYGAQUBAgoDAQH+YwMEAgEBEQQHAgMBAggEBQUGIwICAQENAQcBBwIBCAIfBAUGAgEBJgMEAgIBARABAQF9AgICuvb+pPb2AVwzAwMFAggECwIBBAIECQIBAgECBgECAgIEBwECAQMEAgX+wFprEwkCCQIBAwgEBAMHAgQBBAEHAQMDBQoEAQMEAQIBAQIIAgEEAgYCAgMFAQcEDAUMDgIKAQsECQQBAgkBCQICAQEBAQIDAgwDAQQDBAcBAQEKAQQKAQIBBwQCBgkBBQEFAQECAwYDDAMEAgcBAgIBAQESAgMEAwEBAQQJAQgKAQICAQQDBgIEBgYBBAYFAQIBAgECAQIGBAgBAwMCAgEDAQsDAgYCAwoCAgcEAQIGBQ0IBAMCAgIBAQIIBAICCQIEAgECBQQCAQM4QFsBAwEGAgcCBgIBAQICBAEBAQIBAQECAQICAQIDBAMCBAMKBwEKAQoDAQICCwICAQQCBQEBAQEBCwIHBAECAQEBAQIPCAQBAgMEBgoCAQUDAQICAgYGAgQFAgEJAwECAQ0DAQMCBgQBCQMCAQgGBgEDAwMBAgMCAwQFAQQBBQIDAgINBAcBBAEBBwEBBQECAwEBBAMECgIBAQECAgIDBwILAggGAQYHAQgDAwQIAgEDAQICAgUBAg4RAggBCAQBAgIBBQECBAICAwEDAgIGBAUCAw0CCAEDBQMHBgUDAgMCAQEECgECAQEBBAICAQECAwMDAQIBBgIJCAECBAIDBAsDAQIGBRIFCgwOAwgCAQcCAgMDAQ0CAgICBQMIAwICAggEBAQEAQEBBgEIAgMBBgIDAgECAgQDCAIBBAklCQ4CCQIBEhAEIQQIDQYJAQkFBQMDBwMCEQMBAwEDAg0KBQEBAwMGBQQJAQEBBgUCAgINEgMHBwQFAgICBwINCgEBCQQCAQsCAQYDAgoJCgMCDgMXCERMjMZKPwILEQ8CAgEFBwkCAgEBAQIJAQsBAgUBAQUDCwIBHgEDAwICAwYBBAEGBwECAgMCAgIIAQMIB2gFAwIBAQQDAQQBAQEBAQEBAy0CBAIDAQQBAgQEBwEFAQsDAQMFBgMBBQIBAQEIEAIGAQECBAIBAQIMBgECFAECAw0GAgMHCQEHAgENBAEEAXsBAwQLBAUCAwECCQIJAg4YBgYIAQMJAgECAQcEDgQEAwMECAkKAgQCCAMHAQsLCQQOAwgHAQQSCQ4GBAsGDgEDAgEBAgEEAQkEAREEBAUDCQIEAgsIAQYBAwECAQQDAQEDCgMBBQMBAQEHAgECAgESAwQGBgEDAQMDAwsIAw4EAggBBgEEDwEBATcDAwQCAwEFAwIBAgcFDAECAgEBAgQCAgMDAgEDAQIBAQEaAQEBAXQCAQMAAAAAAQAV/50DTAKyAAoAAAERIzUjFSMRIwkBAq6xmLeZAZwBmwEX/obr6wF6AZv+ZQAAAgAw/7ADdAKMAAUADQAAJREhERMhAzMDJQMzFzMDdPy8nQIKkcZp/l5oxTGC6v7GAToBov5eAUIB/r1gAAAAAAYADv93A1ACugAGAA0AEAATABYAGQAAAQcXBRMXNwEnJQMnBycTFyc3FScFJxcHNRcDUHpS/o4rUXr93FIBcStReqOoxd3rHAE9xd3rHAIWelIqAXFRev3aUiv+jlJ6owFqRBJPVVDuRRNOVVEAAAACAA7/eQNQArsAFAAcAAAJARUxKwE1IzUjJwYjIiY0NjIWFRQkMjY0JiIGFAISAT6oAYCAPSgrbZyc2pz+m0o0NEo1AV/+wqiBgD0Om9ybm24rCzRKNDRKAAAAAAUAKP91A3ACvQAHAA8AGAAlAC4AAAAgFhAGICYQACA2ECYgBhABMhYUBiImNDYXNjcnJiMiBhUUHwE2FzI2NCYiBhQWAR4BXPb2/qT2ASIBBLm5/vy5AT9nk5LQk5MkIUUeBAg9bwEqJq8QGBciGBgCvfb+pPb2AVz+F7gBBri4/voBe5PQk5PQk6ohJSgBbj0GAyBGrRgiGBgiGAAAAAAEADn//gN/AjMABgARABoAIQAAJQElFhURFCUvASU2MyEyFwUHASEiJwEXNwEGAQUBJjURNAN8/u8BEQP+XUgk/u0KBALiBAr+7SQBKf0eBQgBFGprARMI/OoBEf7vAyABBuoIB/4vCMY6HusCAuse/tYCAQlXV/73AgIS6v76CAgB0QcAAAAABwA1/9UDdgKeABYAJQApAC0AMQA1ADkAAAEyFhURFAYrASEjIiY1ETQ2OwE1NDYzAREhHQERIxEjERQWOwEhAxUjNQUVIzUXFSM1FxUhNQUVITUDWREMDBFs/d5HHDMMEVwMEQJ6/ZoxRxYHRwIi7t8B3bm5ubn+IwHd/iMCngwR/XERDDUaAeERDF8RDP1pAmVKMv5DAb3+NAcWAiXf3x8lJXIlJZglJXMlJQAAAAAEADD//wNyAoMAAwAOABoAHgAAAREjESMzESERMzY7ATIWBzI2NCYrASIGFBYzBTMRIwNyRnUv/dQ0RDbPIEWaDRISDWgNEREN/pZFRQH+/gEB//4BAf+FUSgSGhERGhIM/gEABgAaAAEDXgK8AAYACQAMABAAFwAfAAABMxEhNQMlFycFBxMREyERIQUXITcXNxcGIiY0NjIWFALPj/1tsQJnEzP+p6dqNwIl/dsBuTr+UGdCeyb+LB4eLB4B8P4RAQHN7cyFhUD+6wE+/l8BgZW+cCqxRwMeLB4eLAAAAAIAIf9hAysCvQAfACsAAAEeARUUBiAmNTQ2NzYWFxYGBwYVFBYyNjc0Jy4BNz4BAiImNRE0NjIWFREUAqk9ReT+vuRGPRQ1EREDFFiZ2pkBWBQDEhE11TQlJTQmAgk2l1Wh5eWhVZg2EQMUEzURTnZtmpptdU4SNBQTA/6MJhoBlxomJhr+aRoAAAAAAgApAAADbQJzAA0AIQAAJTU3ESERIQ4BBwYHIxEBBTUiBw4DDwE0PgQ/ATUCnGj9JQFHAgkCVzZFAtz+x1ozMVEuIAYGKD9OTT8UFGlXRv76AgsBBAEnPP7HATjTiQcGHiUiCww2XDsuGBACAn4AAAEAEv+IA0ICuwBJAAABFgcUBwYPAQ4BFxUXFhUUBwYrASYvASYiDwEGBwYnJjU0PwE1NiYvASYnJjU0NzY3NjsBMjc2NTc2NzY3FhcWHwEUFxY7ATIXFgM6CgIKAw24AgcBUQQHCxMBEBS+Aw4CtRISFQoIBEgBBgO5CgYLCAkHDA/mBgUHQwQFDRQUDQMHQgcFBuYJCw4BhQsNDQ8ECnkBDAQE7QsMDwoQAQ6bAwOaDgECEQsPBw7sBAUMAXoHBw0PDgoJAwUEBQXvDgcSAQESBBHvBQUEAwQAAAABAC7/ewNwAr0AFAAAJRcPASc3JwMnEycmNDYyHwElFwUXAzE/olw/DqngP3iwEyY2E7AB2z/+jai5QFujQJSp/o0/AduvFDUmE694P+GoAAEAHf/jA2ECvQAoAAAlHgEfARUhNTQ+Azc+AjcmJyY1NCY2NzYzMhceAQYVFAcGBx4CAvguNQMD/LwBCxQrHQxUWjEhJwsCAQMfgH8fBAEDCiYiMllVmhQxDg5WVgIIFhYeDQUwJgkiZBxIBzAjDG9vDCMvCEgcYCYIJjEAAAAAAQA7ACoDfgI1ABQAAAE3ESc1FRQGIyEiJjURNDYzITIWFQKT6+saE/4CExoaEwH+ExoBoG/+P28BZxMaGhMBsRMaGhMAAAAAAwA6/7sDlQKeAB0AJAAnAAAlNTcRFAYjISImNRE0NjMhMhcHISIGFREUFjMhMjYJARcBMQc3FycHAsBcSDP+FDNISDMB7BEHWf5VDRISDQHsDRL+7wFihP6ewz90WSs2tV3+7jNISDMB7TNIAloSDf4TDRISAREBYoT+nj/DalmDAAAABQAhAAADZAIeAAkAEwAYACQAMAAAAREjLgEiBgcjEQMiBgcjNTczESYnFTM1IxcyFhUUBiMiJjU0NiEyFhUUBiMiJjU0NgNkQg02QjUO3I4hNg1rb7ghwqFjTR4rKx4fKioB7R8qKh8eKysCHv5ZHSMjHQGn/pkjHbR7/uQtaTqE2CofHisrHh8qKh8eKyseHyoAAAEABf9+A0YCvgAOAAABAycPASc3FxsDBycDAamRflEWLqJgq52DdD03iQHo/mfBTBQnl5MB4/2jAZ3+jRCy/lEAAAAAAgAj/30DYgK8AAkADwAAAREhFAYgJjU0NjcyFhUhEQGSAXPY/s7Y1/aZ2f6NAl/+j5nY2JmY2F7ZmQFyAAAAAAEAEv+7A1YCnwAGAAABESEVIREBAb0Bmf5n/lUCn/7quf7rAXIAAAAHADn/YAMdAroAGwAnADMAPwBDAGMAagAAATMRIREzNTQ2MhYdATM1NDYyFh0BMzU0NjIWFSMVFDMyNj0BNCYjIgcVFBYzMj0BNCMiBgcVFDMyNj0BNCYjIgERIRElFAYjIic3FjMyNjU0Jic1NjU0IyIHJzYzMhYVFAcVFjcHJzczESMCxlf9HFkoSCk0KUgoNClIKXAjExEREyPOERMjIxMRzSMTERETIwIk/ZgBNkY3JCUHIyYYHCErPyodIAciMi00QUlsNAdbHz8CQ/0dAuMuIyYnIi4uIicmIy4uIicnInsgDxF7EQ8gexEPIHsgDxF7IA8RexEP/QwCAv3+xi0yDjQOFhEWFQI0BSEcDzQPJBwyFgEUTBQ0LP7YAAABAAf/uwNLAp8ABgAABREhNSERAQGf/mgBmAGsRQEVuQEW/o4AAAAAAgA8/2EC7QK8ACAAKQAAARYHBhcOAyImNzYHBgcGJxE+AhYVFA4BFBY3PgE3JREjETQ2MzIWAu0WGRgTCBpIPD4fBQ8/PXklGhZImGUEAwoLHmEi/cVVGRIRGQI8LlZVlQIEDAQSETACAi4OCwGPBhIgAxcDFxcXDQEEBgFY/M8DMREZGQAAAAEAOwDGAvkBjQADAAA3NSEVOwK+xsfHAAQAO/+VA24CyAAGAA0AFAAbAAABJwcRIQcXATcRITcnNzUnNychEScBFwcXJREXATKYXwEVX5gBhl/+61+YV1eYXwEUXv4jV5hf/utfAXqZYAEVX5j+el/+7F+XV5dXmF/+61/+0VeYXwEBFWAAAAACAA//eQMbAr4AWQBiAAAkMhYUBiMiJiMGBwYHBiMiJyYnJiciBiMiJjQ2MhYdAR4BFxYXNzY3IycGIyImNDYzMhczNjcuATU0NjMyFhUUBgcUFhczNjMyFhQGIyInByMfARY3NjcmNTQAFBYzMjY0JiIC1CodHRUCCAIqJVNKRxMOUUxQKCcCBwIVHh4qHQkyDS9hIAQDiDQOExEYGBEWC74CASAoOykqOygfAwG9CxYRGBgRFQs1hwYhTykyLgH+qR8WFx8gLJAdKh4BJBc3FSwtFjUbIAEeKh0dFQgIHAkfApdiXgwRFyIXEkgYCjUiKjs7KiE1CgdDFxIXIhcRDMCaBBkeIAIEFQH8LB8fLB8AAAAEADP/iQNlArsABQAJAA0AEQAAAQURBSURARElEQEtAQUBEQURAc0BmP5o/mYBd/7OAVQBLP7V/tQCgP7NArtx/bFycgJP/ZABt1b+RwGgVFJS/gwBuFX+SAAAAAEAIwACA2QCRQAyAAABHgEVFAYrAjU7ATI2LwEmIg8BBhY7AhUrAzUuATU0NjcmNTQ2MzIXPgEzMhYVFAL/LjdgRAnGHkwMBgeRCBcIkQgGDUwexgEBAkRhLCYFQzAnHh94SWeRAT4TUjNEYKINCq0KCq0KDaIBAWJELkwXEhAvQxhATpFnCgADACj/dQNuArsACwATABsAAAEyFhUUBiMiJjU0NgE0JiMiBwE2JRQWMzI3AQYBy6719a6t9vYB6LmCZFIBtjv9i7iCZ1D+SjsCu/atrvX1rq32/l2CuDr+SlFlgrg6AbdTAAAAAQAF/4kCJgK7AAUAAAEDMwETIwImwZ7+Au+gArv+qv4kAYIAAwA4/3sDeQK8AAkAFAAcAAATMh4BFyMmJyYjETIEFhIXIyYCJCMSMhYUBiImNDiV/JQBoAJxcqGpATPghAGgAbX+y7ZBXEFBXEEBn5P8laFxcgG9hN/+y6m3ATW0/j9BXEFBXAAAAAADAB0AAQNhAZQAGwA5AFsAACUVIz0BJicmJyY1NDc2MhcVFAcGBx4CFx4BFyUdASM1ND4BNz4CNyYnJjU0NzYzMhcWFRQHBgcGJR4BHwEVITU0PgE3PgI3JicmNTQ3NjIXFhUUBwYHHgIDYZcEMwoMBQENZg0EDw4UJCMEExUB/VSXAhUTBSEkFA4PBAELNDMNAQQPCTUBuBkdAgL+MgMdGgYuMhsSFQYBEYwSAQYVExwxMSQjLwErHhAfCx0lBCwsKR4KJw8EDxMCCBQFBwEvIwIIFAgCFA8EDycKHiUELCwEJR4KJAwgDQsbCAgvLwMLHAwDGhUFFTUNKzUDPT0DNSkPNhQFFBwAAAAABgAh/3UDaQK9ADkAQgBLAIsAlQCfAAABFhQHBiMiLwEGBxcWBgcGIyInLgE/ASYnBwYjIicmNDc2MzIfATY3JyY2NzYzMhceAQ8BFhc3NjMyAzY1NCcHFhQHAycGIicHFjMyNxYXNjcmJyY3NjU0JyY3NjcmJwYHBiMiJyYjIgcGIyInJicGBxYXFgcGFRQXFgcGBxYXNjc2MzIXFjMyNzYzMiUUFzcmNTQ3JwYBIgcXNjMyFzcmA1AZGQoeBgQHN3ICBA8PSEhJSA8PBAJwOgcDBx0KGhoKHQMIBjpwAgQPD0hIS0YPDwQCcTkGCAMdHhcWphQUPCgqXisoPUVEJwwFGBQLBggIEBAICAcKExkHCggKCwchJyYhBwsKCAwFGRMLBggIERAJCQQMEBwFDAgKCwchJyYhBwsK/iIXpRQVphcBekQ9KCsuLysoPQGpRJhEHAECbzoHEBwGGRkGHBAHN3ICARxGlEYcAgFzNgcQHAYZGgUcEAc4cQEC/tI/Q0JAKSpeKv72pRQUpRfiBwkRGgYMERMgJyYhEhIMBhkSDAQEBBAQBAQHCRIZBgwSEiQjJCMTEQsHFhYKBwQEEBAElEBCKS0sLSwpQwE7F6UUFKUXAAAAAAMAKP9zA3ACuwAJABcAPAAAATIWEAYjIiYQNhcOARUUFjsBMjY1NCcmEzcvAQcOAQc1ND8BNjU0JyYjIgYPARc3NjcUDwEGFRQXFjMyNgHMrvb2rq339+MfJBsXAR0nDQ8bAwISBQ4pBAMuBgYHDxldLQMQBiMUAysGCgkRF18Cu/b+pPb2AVz2ggEqGBkfKRwXDhH+KQMEJgQOHAEFBw28GSASDAw5KgMtBB8IBg+2Hh4ZCwo6AAACABb/qQNXAokAaADQAAAlFRcVFhUUBwYPAQYiLwMmJyY1ND8BNjc1PgE/Aj4BNzU3PgE3NTc+AT8BHwEUFhQWFQcOAQcUBxUGByIUDgEVBxUGFRQXFh8DFjMyPwE2NzY1NCcmLwE2NTQnJicWHwIWFxQlFhcWFRQPAQYPAQ4BDwIGDwEGFQYPAgYPAS8BLgI0Jzc+ATc0Mj0BNj8BNjU2NzU0NzY1NCcmLwMmIg8BBgcGFRQXFh8BBhUUFxYXJi8CJic0IzUnNSY1NDc2PwE2Mh8CA0MBEwUMIUAzkDJNLyElCwIDAwQKAQMBAQEBAwECAQQBAgEGARwEOQQCGQEEAgECAgECAQEEBwQKOSg8FR8gFEAMBgMDBQ1iAQMMLycgAp0SC/7YJwkDBAMDCgEBAwEBAQIDAQEDAgECAgYcBDkBAgIBGQEEAgECAgEBAgEBAwcECjknPRU+FUAMBgMDBQ1iAQQKMCgfAp0SCwEBEwUMIUAzkDJNL+gBAQEjLBIZLiI/MzNMMCElNhQLERIMDxMBAQYCAgEBBQEBAgEFAQECAQYCHAU4AQQCBQEZAQUCAQEBAgQCAgUBAQIJDQ8RCAw5Jz0VFUAMEQsMCgsTDGIGCxUTRDAMHgKdEhUB0Sc0DxALGAwMFgEBBgICAQQDAQEBAwQBAgMGHAU4AQQCBQEZAQUCAQEBAgQBAQEEAwEBAQsLDxEIDDknPRUVQAwRCwwKCxMMYgYLFxFBMwweAp0SFQEBAQEmKRIZLiI/MzNMMAAAAQAf/4gDYQJiABsAAAEyFhUUBg8BCQEuBDU0NjMyFxYxPgQCkVl3NBoa/sf+xwQOJBwWdllaZRMEDy8vQgJiZW0xaBsc/sgBOAQOLi5DH21laxUFES0hHAAAAAAGADgAAAN0ArwAAwAHAAsAFwAjAC8AAAEhFSERNSEVATUhFQEyFhUUBiMiJjU0NhMyFhUUBiMiJjU0NhMyFhUUBiMiJjU0NgEXAl39owJd/aMCXf0GHCcnHBsnJxscJyccGycnGxwnJxwbJycCvIX+5YWF/uSFhQK8JxscJyccGyf+5iccGycnGxwn/uQnGxwnJxwbJwAAAAEAEv9MAwMCugAcAAABFREOASImNDYzMhcRBREOASMiJjU0NjMyFxEzJQMDAVuCXFxBJCL+oAFcQEFcXEEjIgIBtgK6U/3+NEhKaEoNATRU/hE0SUo1NEoNAgFoAAAAAAkAOv9zA4MCvAAPABMAFwAbAB8AIwAnAC4ANQAAATIWFREUBiMhIiY1ETQ2MwUhFSEFIxUzJzM1IxcVITUlITUhJyMVMwMUFjsBNSMFMjY9ASEVAvc6UlI6/c86UlI6AlT9/wIB/elgYGBgYHYCAf3/AgH9/xZgYGAVDj1gAlQOFf3/ArxSOv3POlJSOgIxOlLSdZxyh3KHcnIVcop1/ooOFXV1FQ5SdQAAAAABADr/4gN8AnIAFwAAATIWFREUBiMhIiY1ETQ2OwE3NjsBMh8BA2MLDg4L/PALDg4LJh0LGZ4ZCxwCIQ8K/fMLDg4LAg0KDzsWFjsAAwAJ/3YDUAK9AAgADAAQAAABFwE5AQc3OQEXAScJARcHJwIemf404klqAXsZ/oQCFJplmQIlmf40SuMYAXsa/oQCY5lkmQAAAgAe/8kDYQKHABgAMQAAJRQGBxYXFgcGJyYnISInNjchMjY9AR4BFQcUBiMhDgEjIjU0NzY3LgE9ATQ2MyEyFhUDYTQoDzMMFS1FNC3+1SojHhoBFEppL0CnSDP+1jFmJyIDMhAoNEg0AaUzSKAqQgsrJwgGCyAZLhsSGWlK6wVGMHA0SDIsCwMCJiwLQivtM0lJMwAAAAACACH/mQNjArsADwAfAAABPwERFCMhFSc3HQEhMjY1JQ8BETQzITUXBz0BISIGFQLWGFuA/gOrqwHkEBb92BhbgAH9q6v+HBAWARYYW/78gGysrHMGFhChGFsBBH9sq6xzBhcQAAAAAAIAFP+LA0cCvQAUABwAACUWFRQHBiMiLwEGIyImEDYgFhUUByY0JiIGFBYyAzAXFBMcIBfbSlyBt7cBArcvW2aQZmaQBBcfHRMTF9swtwECt7eBWktdkGZmkGYAAwAo/3QDbwK7AAsAEwAsAAABMhYVFAYjIiY1NDYSIDYQJiAGECUWDwEGByMiLwEuASMmPQE0NzY7ATIWHQEBzK329q2u9vYsAQS4uP78uQIGDgkYBQYEBQXBAQMBBQUHBi4HCgK79q2u9vaurfb9IrkBBLi4/vwkCg4nBgIDgQECBwbkBwUFCgfBAAAIADz/1gN/AncAAwAHAA8AFwAfACcAKwAvAAATIREhJREhERIiJjQ2MhYUBCImNDYyFhQAMhYUBiImNCQyFhQGIiY0AxEjERM1IxU8A0P8vQL9/UlxJBoaJBkB4SQaGiQZ/ckkGRkkGgIUJBkZJBpe5KhtAnf9X0YCFv3qAZMaJBkZJBoaJBkZJP7WGiQZGSQaGiQZGSQBRP67AUX+7HZ2AAAAAAIANwAkA3sCdAAbACUAAAEyFhURFAYjISImNRE0NjsBNDM3PgEzITIfARUDMjY0JiMiBhQWA2IKDw8K/O4KDw8KrQEXBBYKAT8ZCxjcS2pqS0pqagItDgr+KAsODgsB2AoOATAJDRYwAf5LaZZqapZpAAAAAQA3/6sDdQKpABUAAAEWBgcGJwYHBicmNzYnLgEnJjY3NgQDdRDdrD46XGkvCQMGWAhFVggQ3KysAQkBjYncEwcHXwsFDQQEQk8ndkeI3RQTpgAABAAi/3gDZQK9AAkAFQAxAHcAACU2NTcfAgcvATciBhUUFjMyNjU0JgEHIgcnBiMiJic0Nx4BMzI2NTQmJzYzNhYVFAcFNDY0LgMnIyIPARYHBg8BBgcGIyImNzY/ATY3NjMyFz8BPgQmJyYnIyIvAS4BPwE2MzIfARYXFhcWMh8BFgcGMQIOAmKLXgpoJUZhEhkZEhMZGf7PYgYKRyAYSncBET8QJR1JDD0PA0p4EAGKAQMIDRkQAwoY2ggQAgXJBQELEilIHAMDygUBCxEJCsIEBAMHAgEDAxAsARAnBhMCE0gRCQYUBiEEBBQDHgR3SSsPZAoGYotFJmgKXjYZExIZGRITGQFdYgJGD3hKARE/CkgeJBM8EgF5Shse9wMJHBwkHx4JFtkdEgEFyQUCC2AdAgTKAwMLA8IGBgQNCQ0OBx0JJQYTDBVJERQGIRAUGgQEd0mzMgACACD/fANhAr0AVQBfAAABHgEdARQGDwEOAR8BFg8BBi8BJgYPAQ4BKwEiJi8BLgEPAQYvASY/ATYmLwEuAT0BNDY/ATYvASY/ATYfARY2PwE+ATsBMhYfAR4BPwE2HwEWDwEGFwUyNjQmIyIGFBYDSwkNDQl8CQYFSAwQRBASagcPARcBEAlhCRABFwEPB2kUD0QQDEgFBgl8CQ0NCXwWDEgLD0QQE2kHDwEXARAJYQkQARcBDwdqEhBEDwtIDBb+8T9YWD8+WFgBZwEQCWEJEAEXAgwIahMQRBANRwUFCX0JDQ0JfQkFBUcMD0QQE2oIDAIXARAJYQkQARcGEWoTD0QQDEgFBgl8CQ0NCXwJBgVIDBBEDxNqEQb4WHxZWXxYAAAAAwAi/2ICvwK7AA8AIwAuAAAFMj8BFxYPAQYnASYvAQEWAwEWDwEGIicBJi8BJj8BNjsBFxYHBhQXFjI2NCcmIgGxIhWwJw8P/g8Q/qIPAggBTxcwAV4QEP4HEgb+og8CEQIQKw8TA70W4A4ODSgaDQ4mIRewJw8Q/hAQAV4PFWH+sRcCuf6jEA//BgYBXhEUvhYOLA0RAj8NKA0NGigNDgAAAAABAAv/kwLvAtcABgAAASERIxEhAQLv/uq5/usBcgEr/mgBmAGsAAAAAwAo/3YDawK6ABwALAA8AAATBh0BIiY9ATQ2MyEyFh0BIzU0JiMhIgYdARQWMyUyFh0BFAYjISImPQE0NjMBNTQmIyEiBh0BFBYzITI2tgM6UVE6AVw6UWgVDv6kDhUVDgItOVJSOf6kOlFROgF+FA7+pA4VFQ4BXA4UARgQE0VROvQ6UVE6aWkOFRUO9A4VaVI68zpSUjrzOlL+gfMPFBQP8w8UFAAAAQAL/4IC7wLGAAYAABMhETMRIQELARW5ARb+jgEtAZn+Z/5VAAAAAAMAKP9zA3ACuwAHABcAGwAAACAWEAYgJhABNSM3IzUjFSMXIxUzBzMvATUzFQEeAVz29v6k9gJMppFwS3CQopEnfieW/QK79v6k9vYBXP5d6KeHh6foJycqlJQAAQAAAAEAAE8dYDFfDzz1AAsD6AAAAADI+gQNAAAAAMj6BA0AA/9MA5UC4gAAAAgAAgAAAAAAAAABAAAC7v8GAAADvAAAAAADlQABAAAAAAAAAAAAAAAAAAAAZAH0AAAAAAAAAU0AAAH0AAADqAA7A2EANALsACgDfQAWA4cAIALcABEDjAANAp8ALQN5ABkDCQAnA5gAKAOTACgDmQAoA7EANwOQACgDeQAbAucAHAOXACgDZAAMAvoAOwMwADsDMQA7A5oAOwOaAA4DmAAoAyEAGQN3AA4BiwADA7MAPAN5AA4DmgAoAfwAGwN9ABwDcQASA5EAJAOVACgDfwAeAsAANQOYACgDYQAVA6QAMANeAA4DZQAOA5gAKAO4ADkDrwA1A6IAMAONABoDTAAhA40AKQNVABIDgwAuA34AHQO1ADsDugA6A5kAIQNdAAUDgQAjA10AEgNWADkDXQAHAwcAPAM0ADsDqAA7AyoADwOXADMDjAAjA5YAKAIsAAUDkAA4A34AHQOKACEDmAAoA20AFgOAAB8DrgA4AygAEgO8ADoDrQA6A1cACQOOAB4DhAAhA2AAFAOXACgDuwA8A7EANwOfADcDtQAiA4EAIALgACIC+gALA5MAKAL6AAsDmAAoA0EAAAH0AAAAAAAAAAAAAAAAADAAeAEYAXICNAJKApYC0AMOAygDdAP4BCQEUgSMBMoE/AU2BWIFcAWGBZQFqAW8BdgGJAaCBpIGtAb6B3IHnggUCFwIjgjmCSgJRA+iD7oP2hASEEAQkBDUESwRXhGcEeISGhKIErAS8BMUE1YToBPCE+IT9hSGFJoU3hTqFSIVrBXaFh4WUBZiFpYXHBgIGGQZhhm0GgAaMBqGGqwa0BscG1AbfhvEHBYcUBx6HSYduB4KHh4ech6GHrQetB60AAAAAQAAAGQE4QAWAAAAAAACAAAAAQABAAAAQAAAAAAAAAAAAA8AugABAAAAAAABAAAAAAABAAAAAAAEAA4AAAADAAEECQAAAEIADgADAAEECQABAAAAUAADAAEECQACAAIAUAADAAEECQADAAAAUgADAAEECQAEAAIAUgADAAEECQAFAPwAVAADAAEECQAGAAIBUAADAAEECQAKAPwBUgADAAEECQBjAC4CTgADAAEECQBkAAwCfAADAAEECQBlAA4CiAADAAEECQBmAAwClgADAAEECQBnAAwColBpY3RvcyBXZWJmb250AKkAIABEAHIAZQB3ACAAVwBpAGwAcwBvAG4AOgAgAHcAdwB3AC4AZAByAGUAdwB3AGkAbABzAG8AbgAuAGMAbwBtAH8AfwBUAGgAaQBzACAAaQBzACAAYQAgAHAAcgBvAHQAZQBjAHQAZQBkACAAdwBlAGIAZgBvAG4AdAAgAGEAbgBkACAAaQBzACAAaQBuAHQAZQBuAGQAZQBkACAAZgBvAHIAIABDAFMAUwAgAEAAZgBvAG4AdAAtAGYAYQBjAGUAIAB1AHMAZQAgAE8ATgBMAFkALgAgAFIAZQB2AGUAcgBzAGUAIABlAG4AZwBpAG4AZQBlAHIAaQBuAGcAIAB0AGgAaQBzACAAZgBvAG4AdAAgAGkAcwAgAHMAdAByAGkAYwB0AGwAeQAgAHAAcgBvAGgAaQBiAGkAdABlAGQALgB/AFQAaABpAHMAIABpAHMAIABhACAAcAByAG8AdABlAGMAdABlAGQAIAB3AGUAYgBmAG8AbgB0ACAAYQBuAGQAIABpAHMAIABpAG4AdABlAG4AZABlAGQAIABmAG8AcgAgAEMAUwBTACAAQABmAG8AbgB0AC0AZgBhAGMAZQAgAHUAcwBlACAATwBOAEwAWQAuACAAUgBlAHYAZQByAHMAZQAgAGUAbgBnAGkAbgBlAGUAcgBpAG4AZwAgAHQAaABpAHMAIABmAG8AbgB0ACAAaQBzACAAcwB0AHIAaQBjAHQAbAB5ACAAcAByAG8AaABpAGIAaQB0AGUAZAAuAFQAaABpAHMAIABmAG8AbgB0ACAAaQBzACAAcAByAG8AdABlAGMAdABlAGQALgBQAGkAYwB0AG8AcwBSAGUAZwB1AGwAYQByAFAAaQBjAHQAbwBzAFAAaQBjAHQAbwBzAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAugECAkNSAAAA) format('truetype'), url('pictos-web.svg#webfontIyfZbseF') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/scss/_pictos.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/scss/_pictos.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/scss/_pictos.scss	(revision 18277)
@@ -0,0 +1,92 @@
+$pictos-background-default: white !default;
+$pictos-default-border: null !default;
+$pictos-default-gradient: null !default;
+
+@mixin pictos($character,
+    $color: #fff,
+    $size: 24px,
+    $glow: null, // (shadow 1)
+    $border-color: $pictos-default-border,
+    $border-color-over: $border-color,
+    $border-color-active: $border-color,
+    $color-hover: $bright-color,
+    $gradient: matte,
+    $gradient-over: $gradient,
+    $gradient-active: recessed,
+    $glow-hover: $bright-color 0 0 10px,
+    $glow-active: $glow-hover,
+    $shadow: rgba(#000, .5) 0 1px 1px,
+    $include-states: true
+) {
+    @include background-clip(text);
+    overflow: visible;
+    @include text-shadow(rgba(#fff, .15) 0 1px 0);
+    position: relative;
+    height: $size;
+    line-height: $size;
+
+    &:after, &:before {
+        @extend .base-pictos;
+        font-size: $size;
+        content: $character;
+        @if $border-color != null {
+            -webkit-text-stroke: 1px $border-color;
+        }
+        
+        @include background-gradient($color, $gradient);
+    }
+    &:before {
+        @include background-clip(padding-box);
+        background: none;
+    }
+    
+    @if $include-states {
+        &:hover {
+            @if $border-color-over != null {
+                -webkit-text-stroke: 1px $border-color-over;
+            }
+
+            &:before {
+                @include text-shadow($shadow, $glow-hover);
+            }
+            &:after {
+                @include background-gradient($color-hover, $gradient-over);
+            }
+        }
+        &:active {
+            @if $border-color-active != null {
+                -webkit-text-stroke: 1px $bright-color;
+            }
+            top: 1px;
+            &:before {
+                @include text-shadow($shadow, $glow-active);
+            }
+            &:after {
+                @include background-gradient($bright-color, $gradient-active);
+            }
+        }
+    }
+}
+
+@mixin simple-pictos($character, $color: #fff, $size: 24px) {
+    overflow: visible;
+//    @include text-shadow(rgba(#fff, .15) 0 1px 0);
+    position: relative;
+    
+    &:after {
+        @include background-clip(text);
+        @extend .base-pictos;
+        font-size: $size;
+        content: $character;
+        @include background-gradient($color, matte);
+    }
+}
+
+.base-pictos {
+    font-family: Pictos;
+    color: transparent;
+    @include background-clip(text);
+    position: absolute;
+    top: 0;
+    left: 0;
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/scss/_shapes.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/scss/_shapes.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/scss/_shapes.scss	(revision 18277)
@@ -0,0 +1,34 @@
+// Only handles right direction for now...
+
+.base-shape {
+    display: block;
+    content: '';
+}
+
+@mixin triangle($direction: down, $size: 30px, $color: black) {
+    @extend .base-shape;
+    width: 0;
+    height: 0;
+    
+    @if $direction == down {
+        border-left: $size/2 solid transparent;
+        border-right: $size/2 solid transparent;
+        border-top: $size solid $color;
+        border-bottom: 0;
+    } @else if $direction == right {
+        border-top: $size/2 solid transparent;
+        border-bottom: $size/2 solid transparent;
+        border-left: $size solid $color;
+        border-right: 0;
+    } @else if $direction == left {
+        border-top: $size/2 solid transparent;
+        border-bottom: $size/2 solid transparent;
+        border-right: $size solid $color;
+        border-left: 0;
+    } @else if $direction == up {
+        border-left: $size/2 solid transparent;
+        border-right: $size/2 solid transparent;
+        border-bottom: $size solid $color;
+        border-top: 0;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/scss/config.rb
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/scss/config.rb	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/accessories/scss/config.rb	(revision 18277)
@@ -0,0 +1,8 @@
+# Compass configurations
+sass_path = File.dirname(__FILE__)
+css_path = File.join(sass_path, "..", "css")
+
+# Require any additional compass plugins here.
+images_dir = File.join(sass_path, "..", "img")
+output_style = :expanded
+environment = :production
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/core/_core.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/core/_core.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/core/_core.scss	(revision 18277)
@@ -0,0 +1,366 @@
+.#{$prefix}body {
+    color: $color;
+    font-size: $font-size;
+    font-family: $font-family;
+    background-color: color-offset($neutral-color, 3%);
+    color: color-by-background($content-color);
+
+    * {
+        zoom: 1;
+    }
+}
+
+.#{$prefix}rtl {
+    direction: rtl;
+}
+
+.#{$prefix}ltr {
+    direction: ltr;
+}
+
+.#{$prefix}clear {
+    overflow: hidden;
+    clear: both;
+    height: 0;
+    width: 0;
+    font-size: 0;
+    line-height: 0;
+}
+
+.#{$prefix}layer {
+    position: absolute !important;
+    overflow: hidden;
+
+    // @tag iezoomhack
+}
+
+.#{$prefix}shim {
+    position: absolute;
+    left: 0;
+    top: 0;
+    overflow: hidden;
+    @include opacity(0);
+}
+
+.#{$prefix}hide-display {
+    display: none !important;
+}
+
+.#{$prefix}hide-visibility {
+    visibility: hidden !important;
+}
+
+.#{$prefix}item-disabled {
+    @include opacity(0.3);
+}
+
+.#{$prefix}ie6 .#{$prefix}item-disabled {
+    filter: none;
+}
+
+.#{$prefix}hidden,
+.#{$prefix}hide-offsets {
+    display: block !important;
+    position: absolute !important;
+    left: -10000px !important;
+    top: -10000px !important;
+}
+
+.#{$prefix}hide-nosize {
+    height: 0 !important;
+    width: 0 !important;
+}
+
+.#{$prefix}masked-relative {
+    position: relative;
+}
+
+@if $include-ie {
+    .#{$prefix}ie6 .#{$prefix}masked select,
+    .#{$prefix}ie6.#{$prefix}body-masked select {
+        visibility: hidden !important;
+    }
+}
+
+// Styles for the three schemes for showing shadows under an element: 
+// CSS3, IE blur transform, or 9 point framing with images.
+.#{$prefix}css-shadow {
+    position: absolute;
+    @include border-bottom-radius($window-border-radius);
+}
+
+.#{$prefix}ie-shadow {
+    background-color: #777;
+    display: none;
+    position: absolute;
+    overflow: hidden;
+    // @tag iezoomhack
+}
+
+.#{$prefix}frame-shadow {
+    display: none;
+    position: absolute;
+    overflow: hidden;
+}
+
+.#{$prefix}frame-shadow * {
+    overflow: hidden;
+}
+
+.#{$prefix}frame-shadow * {
+    padding: 0;
+    border: 0;
+    margin: 0;
+    clear: none;
+    // @tag iezoomhack
+}
+
+/* top  bottom */
+.#{$prefix}frame-shadow .xstc,
+.#{$prefix}frame-shadow .xsbc {
+    height: 6px;
+    float: left;
+}
+
+.#{$prefix}frame-shadow .xsc {
+    width: 100%;
+}
+
+.#{$prefix}frame-shadow .xsml {
+    background: transparent repeat-y 0 0;
+}
+
+.#{$prefix}frame-shadow .xsmr {
+    background: transparent repeat-y -6px 0;
+}
+
+.#{$prefix}frame-shadow .xstl {
+    background: transparent no-repeat 0 0;
+}
+
+.#{$prefix}frame-shadow .xstc {
+    background: transparent repeat-x 0 -30px;
+}
+
+.#{$prefix}frame-shadow .xstr {
+    background: transparent repeat-x 0 -18px;
+}
+
+.#{$prefix}frame-shadow .xsbl {
+    background: transparent no-repeat 0 -12px;
+}
+
+.#{$prefix}frame-shadow .xsbc {
+    background: transparent repeat-x 0 -36px;
+}
+
+.#{$prefix}frame-shadow .xsbr {
+    background: transparent repeat-x 0 -6px;
+}
+.#{$prefix}frame-shadow .xstl,
+.#{$prefix}frame-shadow .xstc,
+.#{$prefix}frame-shadow .xstr,
+.#{$prefix}frame-shadow .xsbl,
+.#{$prefix}frame-shadow .xsbc,
+.#{$prefix}frame-shadow .xsbr {
+    width: 6px;
+    height: 6px;
+    float: left;
+
+    @if $include-shadow-images {
+        background-image: theme-background-image($theme-name, 'shared/shadow.png');
+    }
+}
+
+.#{$prefix}frame-shadow .xsml,
+.#{$prefix}frame-shadow .xsmr {
+    width: 6px;
+    float: left;
+    height: 100%;
+
+    @if $include-shadow-images {
+        background-image: theme-background-image($theme-name, 'shared/shadow-lr.png');
+    }
+}
+
+.#{$prefix}frame-shadow .xsmc {
+    float: left;
+    height: 100%;
+
+    @if $include-shadow-images {
+        background-image: theme-background-image($theme-name, 'shared/shadow-c.png');
+    }
+}
+
+.#{$prefix}frame-shadow .xst,
+.#{$prefix}frame-shadow .xsb {
+    height: 6px;
+    overflow: hidden;
+    width: 100%;
+}
+
+.no-select {
+    -moz-user-select: none;
+    -khtml-user-select: none;
+    -webkit-user-select: ignore;
+    cursor: default;
+}
+
+.mr-white-glove {
+    cursor: pointer;
+    cursor: hand;
+    * {
+        cursor: pointer;
+        cursor: hand;
+    }
+}
+
+.overflow-ellipsis {
+    overflow: hidden;
+    -o-text-overflow: ellipsis;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+}
+
+.outline-none {
+    -moz-outline: 0 none;
+    outline: 0 none;
+}
+
+.bigtext {
+    text-rendering: optimizeLegibility;
+    -webkit-font-smoothing: antialiased;
+}
+
+//box wrap - Ext.get("foo").boxWrap();
+.#{$prefix}box-tl {
+    background: transparent no-repeat 0 0;
+    // @tag iezoomhack
+}
+
+.#{$prefix}box-tc {
+    height: 8px;
+    background: transparent repeat-x 0 0;
+    overflow: hidden;
+}
+
+.#{$prefix}box-tr {
+    background: transparent no-repeat right -8px;
+}
+
+.#{$prefix}box-ml {
+    background: transparent repeat-y 0;
+    padding-left: 4px;
+    overflow: hidden;
+    // @tag iezoomhack
+}
+
+.#{$prefix}box-mc {
+    background: repeat-x 0 -16px;
+    padding: 4px 10px;
+}
+
+.#{$prefix}box-mc h3 {
+    margin: 0 0 4px 0;
+    // @tag iezoomhack
+}
+
+.#{$prefix}box-mr {
+    background: transparent repeat-y right;
+    padding-right: 4px;
+    overflow: hidden;
+}
+
+.#{$prefix}box-bl {
+    background: transparent no-repeat 0 -16px;
+    // @tag iezoomhack
+}
+
+.#{$prefix}box-bc {
+    background: transparent repeat-x 0 -8px;
+    height: 8px;
+    overflow: hidden;
+}
+
+.#{$prefix}box-br {
+    background: transparent no-repeat right -24px;
+}
+
+.#{$prefix}box-tl, .#{$prefix}box-bl {
+    padding-left: 8px;
+    overflow: hidden;
+}
+
+.#{$prefix}box-tr, .#{$prefix}box-br {
+    padding-right: 8px;
+    overflow: hidden;
+}
+
+.#{$prefix}box-tl {
+    background-image: theme-background-image($theme-name, 'box/corners.gif');
+}
+
+.#{$prefix}box-tc {
+    background-image: theme-background-image($theme-name, 'box/tb.gif');
+}
+
+.#{$prefix}box-tr {
+    background-image: theme-background-image($theme-name, 'box/corners.gif');
+}
+
+.#{$prefix}box-ml {
+    background-image: theme-background-image($theme-name, 'box/l.gif');
+}
+
+.#{$prefix}box-mc {
+    background-color: #eee;
+    background-image: theme-background-image($theme-name, 'box/tb.gif');
+    font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;
+    color: #393939;
+    font-size: 15px;
+}
+
+.#{$prefix}box-mc h3 {
+    font-size: 18px;
+    font-weight: bold;
+}
+
+.#{$prefix}box-mr {
+    background-image: theme-background-image($theme-name, 'box/r.gif');
+}
+
+.#{$prefix}box-bl {
+    background-image: theme-background-image($theme-name, 'box/corners.gif');
+}
+
+.#{$prefix}box-bc {
+    background-image: theme-background-image($theme-name, 'box/tb.gif');
+}
+
+.#{$prefix}box-br {
+    background-image: theme-background-image($theme-name, 'box/corners.gif');
+}
+
+.#{$prefix}box-blue .#{$prefix}box-bl, .#{$prefix}box-blue .#{$prefix}box-br, .#{$prefix}box-blue .#{$prefix}box-tl, .#{$prefix}box-blue .#{$prefix}box-tr {
+    background-image: theme-background-image($theme-name, 'box/corners-blue.gif');
+}
+
+.#{$prefix}box-blue .#{$prefix}box-bc, .#{$prefix}box-blue .#{$prefix}box-mc, .#{$prefix}box-blue .#{$prefix}box-tc {
+    background-image: theme-background-image($theme-name, 'box/tb-blue.gif');
+}
+
+.#{$prefix}box-blue .#{$prefix}box-mc {
+    background-color: #c3daf9;
+}
+
+.#{$prefix}box-blue .#{$prefix}box-mc h3 {
+    color: #17385b;
+}
+
+.#{$prefix}box-blue .#{$prefix}box-ml {
+    background-image: theme-background-image($theme-name, 'box/l-blue.gif');
+}
+
+.#{$prefix}box-blue .#{$prefix}box-mr {
+    background-image: theme-background-image($theme-name, 'box/r-blue.gif');
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/core/_reset.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/core/_reset.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/core/_reset.scss	(revision 18277)
@@ -0,0 +1,79 @@
+@mixin reset-css {
+    html, body, div, dl, dt, dd, ul, ol, li, h1, h2, h3,
+    h4, h5, h6, pre, code, form, fieldset, legend,
+    input, textarea, p, blockquote, th, td {
+        margin: 0;
+        padding: 0;
+    }
+
+    table {
+        border-collapse: collapse;
+        border-spacing: 0;
+    }
+
+    fieldset, img {
+        border: 0;
+    }
+
+    address, caption, cite, code,
+    dfn, em, strong, th, var {
+        font-style: normal;
+        font-weight: normal;
+    }
+
+    li {
+        list-style: none;
+    }
+
+    caption, th {
+        text-align: left;
+    }
+
+    h1, h2, h3, h4, h5, h6 {
+        font-size: 100%;
+    }
+
+    q:before,
+    q:after {
+        content: "";
+    }
+
+    abbr, acronym {
+        border: 0;
+        font-variant: normal;
+    }
+
+    sup {
+        vertical-align: text-top;
+    }
+
+    sub {
+        vertical-align: text-bottom;
+    }
+
+    input, textarea, select {
+        font-family: inherit;
+        font-size: inherit;
+        font-weight: inherit;
+    }
+
+    *:focus {
+        @extend .outline-none;
+    }
+}
+
+@if $scope-reset-css {
+    .#{$prefix}reset {
+        @include reset-css;
+    }
+} @else {
+    @include reset-css;
+}
+
+.#{$prefix}border-box, 
+.#{$prefix}border-box * {
+    box-sizing: border-box;
+    -moz-box-sizing: border-box;
+    -ms-box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/layout/_accordion.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/layout/_accordion.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/layout/_accordion.scss	(revision 18277)
@@ -0,0 +1,80 @@
+$include-accordion-highlights: $include-highlights !default;
+$accordion-header-background-color: $neutral-light-color !default;
+$accordion-header-color: color-by-background($accordion-header-background-color, 100%) !default;
+$accordion-header-background-gradient: $base-gradient !default;
+$accordion-border-color: $stroke-color !default;
+
+@mixin extjs-layout-accordion {
+    // Accordian layout
+
+    .#{$prefix}accordion-hd .#{$prefix}panel-header-text {
+        color: $accordion-header-color;
+        font-weight: bold;
+        font-size: $font-size;
+    }
+
+    .#{$prefix}accordion-hd {
+        padding: 5px 5px 7px 5px;
+        cursor: pointer;
+
+//        .#{$prefix}tool {
+//            div {
+//                background: transparent;
+//            }
+//        }
+
+        // @tag deleted Must be a way to auto sprite`
+//        .#{$prefix}tool-collapse-top,
+//        .#{$prefix}tool-collapse-right,
+//        .#{$prefix}tool-collapse-bottom,
+//        .#{$prefix}tool-collapse-left {
+//            background-position: 0 -255px;
+//        }
+
+//        .#{$prefix}tool-expand-top,
+//        .#{$prefix}tool-expand-right,
+//        .#{$prefix}tool-expand-bottom,
+//        .#{$prefix}tool-expand-left {
+//            background-position: 0 -240px;
+//        }
+
+        background-image: none;
+        background-color: $accordion-header-background-color;
+
+//        @todo this is not IE compat
+        &.#{$prefix}panel-header-over {
+            background-color: #A6DDFF;
+        }
+
+        &.#{$prefix}panel-header-pressed {
+            background-color: #0E4DAD;
+
+            .#{$prefix}panel-header-text {
+                color: #fff;
+            }
+        }
+    }
+
+    .x-accordion-body {
+//        padding-bottom: 5px;
+        border-bottom: 0;
+        background: #fff;
+    }
+
+    .x-accordion-item {
+        margin: 5px 5px 0 5px;
+    }
+
+    .#{$prefix}accordion-body {
+        border-width: 0 !important;
+    }
+
+    /*    .\#{$prefix}accordion-hd-sibling-expanded {
+        border-top-color: $accordion-border-color !important;
+        @include single-box-shadow($panel-header-inner-border-color, 0, 1px, 0, 0, true);
+    }*/
+
+    .#{$prefix}accordion-hd-last-collapsed {
+        border-bottom-color: $accordion-header-background-color !important;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/layout/_layout.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/layout/_layout.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/layout/_layout.scss	(revision 18277)
@@ -0,0 +1,273 @@
+$border-layout-ct-background: $neutral-color !default;
+
+$toolbar-scroll-border-color: #8db2e3 !default;
+
+@mixin extjs-layout {
+    .#{$prefix}docked {
+        position: absolute !important;
+        z-index: 1;
+    }
+
+    /**
+      * Dock Layouts
+      * @todo move this somewhere else?
+      */
+    .#{$prefix}docked-top {
+//        border-bottom-width: 0 !important; TODO remove this
+    }
+
+    .#{$prefix}docked-bottom {
+        border-top-width: 0 !important;
+    }
+
+    .#{$prefix}docked-left {
+        border-right-width: 0 !important;
+    }
+
+    .#{$prefix}docked-right {
+        border-left-width: 0 !important;
+    }
+
+    .#{$prefix}docked-noborder-top {
+        border-top-width: 0 !important;
+    }
+
+    .#{$prefix}docked-noborder-right {
+        border-right-width: 0 !important;
+    }
+
+    .#{$prefix}docked-noborder-bottom {
+        border-bottom-width: 0 !important;
+    }
+
+    .#{$prefix}docked-noborder-left {
+        border-left-width: 0 !important;
+    }
+
+    .#{$prefix}box-inner {
+        overflow: hidden;
+        position: relative;
+        left: 0;
+        top: 0;
+        // @tag iezoomhack
+    }
+
+    .#{$prefix}box-item {
+        position: absolute !important;
+        left: 0;
+        top: 0;
+    }
+
+    .#{$prefix}rtl .#{$prefix}box-item {
+        right: 0;
+        left: auto;
+    }
+
+    .#{$prefix}box-layout-ct,
+    .#{$prefix}border-layout-ct {
+        overflow: hidden;
+        // @tag iezoomhack
+    }
+
+    .#{$prefix}border-layout-ct {
+        background-color: #E4E5E5;
+
+        .#{$prefix}border-layout-ct {
+            background-color: darken(#E4E5E5, 5%);
+        }
+    }
+
+    .x-panel-default-framed > .#{$prefix}border-layout-ct {
+        background-color: $panel-base-color;
+
+        .#{$prefix}border-layout-ct {
+            background-color: darken($panel-base-color, 5%);
+        }
+//        padding: 5px;
+
+        .#{$prefix}panel {
+//            margin: 5px;
+        }
+
+        .#{$prefix}panel-body {
+//            border: 0;
+        }
+    }
+
+    .#{$prefix}overflow-hidden {
+        overflow: hidden !important;
+    }
+
+    .#{$prefix}inline-children > * {
+        display: inline-block !important;
+    }
+
+    .#{$prefix}abs-layout-ct {
+        position: relative;
+    }
+
+    .#{$prefix}abs-layout-item {
+        position: absolute !important;
+    }
+
+    .#{$prefix}fit-item {
+        position: relative;
+    }
+
+    .#{$prefix}border-region-slide-in {
+        z-index: 5;
+    }
+
+    .#{$prefix}region-collapsed-placeholder {
+        z-index: 4;
+    }
+
+    // Framing
+
+    .#{$prefix}frame-tl,
+    .#{$prefix}frame-tr,
+    .#{$prefix}frame-tc,
+    .#{$prefix}frame-bl,
+    .#{$prefix}frame-br,
+    .#{$prefix}frame-bc {
+        overflow: hidden;
+        background-repeat: no-repeat;
+    }
+
+    .#{$prefix}frame-tc,
+    .#{$prefix}frame-bc {
+        background-repeat: repeat-x;
+    }
+
+    .#{$prefix}frame-mc {
+        position: relative;
+        background-repeat: repeat-x;
+        overflow: hidden;
+    }
+
+    // Classes for horizontal Box layout scroller.
+    // Uses the *TAB* scroller image because it's all we have.
+    // This will not work well in other cases
+    .#{$prefix}box-scroller-left, .#{$prefix}box-scroller-right {
+        height: 100%;
+        z-index: 5;
+    }
+
+    .#{$prefix}toolbar-scroll-left, .#{$prefix}tabbar-scroll-left,
+    .#{$prefix}toolbar-scroll-right, .#{$prefix}tabbar-scroll-right {
+        @extend .mr-white-glove;
+        position: relative;
+//        width: 18px;
+//        height: $tab-height;
+    }
+
+    .#{$prefix}toolbar-scroll-left, .#{$prefix}toolbar-scroll-right {
+//        width: 14px;
+//        height: 22px;
+//        border-bottom: 1px solid $toolbar-scroll-border-color;
+    }
+
+    .#{$prefix}toolbar-scroll-left-disabled,
+    .#{$prefix}tabbar-scroll-left-disabled,
+    .#{$prefix}toolbar-scroll-right-disabled,
+    .#{$prefix}tabbar-scroll-right-disabled {
+        @include opacity(.5);
+        cursor: default;
+    }
+
+    .#{$prefix}box-scroller-left {
+        float: left;
+
+//        .#{$prefix}toolbar-scroll-left,
+//        .#{$prefix}tabbar-scroll-left {
+//            background: theme-background-image($theme-name, 'tab-bar/scroll-left.gif') no-repeat -18px 0;
+//        }
+//        .#{$prefix}toolbar-scroll-left-hover {
+//            background-position: 0 0;
+//        }
+//        .#{$prefix}toolbar-scroll-left-disabled,
+//        .#{$prefix}tabbar-scroll-left-disabled {
+//            background-position: -18px 0;
+//        }
+//        .#{$prefix}toolbar-scroll-left {
+//            background-image: theme-background-image($theme-name, 'toolbar/scroll-left.gif');
+//            background-position: -14px 0;
+//        }
+//        .#{$prefix}toolbar-scroll-left-hover {
+//            background-position: 0 0;
+//        }
+//        .#{$prefix}toolbar-scroll-left-disabled {
+//            background-position: -14px 0;
+//        }
+    }
+
+    .#{$prefix}horizontal-box-overflow-body {
+        float: left;
+    }
+
+    .#{$prefix}box-scroller-right {
+        float: right;
+
+        .#{$prefix}toolbar-scroll-right,
+        .#{$prefix}tabbar-scroll-right {
+            background: theme-background-image($theme-name, 'tab-bar/scroll-right.gif') no-repeat 0 0;
+        }
+        .#{$prefix}toolbar-scroll-right-hover {
+            background-position: -18px 0;
+        }
+        .#{$prefix}toolbar-scroll-right-disabled,
+        .#{$prefix}tabbar-scroll-right-disabled {
+            background-position: 0 0;
+        }
+
+        .#{$prefix}toolbar-scroll-right {
+            background-image: theme-background-image($theme-name, 'toolbar/scroll-right.gif');
+        }
+        .#{$prefix}toolbar-scroll-right-hover {
+            background-position: -14px 0;
+        }
+        .#{$prefix}toolbar-scroll-right-disabled {
+            background-position: 0 0;
+        }
+    }
+
+    // Classes for vertical Box layout scroller
+    .#{$prefix}box-scroller-top {
+        .#{$prefix}box-scroller {
+            line-height: 0;
+            font-size: 0;
+        }
+        .#{$prefix}menu-scroll-top {
+            background: transparent no-repeat center center;
+            background-image: theme-background-image($theme-name, 'layout/mini-top.gif');
+            height: 8px;
+            cursor: pointer;
+        }
+    }
+    .#{$prefix}box-scroller-bottom {
+        .#{$prefix}box-scroller {
+            line-height: 0;
+            font-size: 0;
+        }
+        .#{$prefix}menu-scroll-bottom {
+            background: transparent no-repeat center center;
+            background-image: theme-background-image($theme-name, 'layout/mini-bottom.gif');
+            height: 8px;
+            cursor: pointer;
+        }
+    }
+
+    .#{$prefix}box-menu-right {
+        float: right;
+        padding-right: $toolbar-horizontal-spacing;
+    }
+
+    .#{$prefix}column {
+        float: left;
+    }
+    @if $include-ie {
+        .#{$prefix}ie6 .#{$prefix}column {
+            display: inline; /*prevent IE6 double-margin bug*/
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/mixins/_background-gradient-legacy.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/mixins/_background-gradient-legacy.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/mixins/_background-gradient-legacy.scss	(revision 18277)
@@ -0,0 +1,122 @@
+/**
+ * @mixin background-gradient
+ * 
+ * @param {Color} $background-color The background color of the gradient
+ * @param {String/List} $type The type of gradient to be used. Can either be a String which is a predefined gradient, or it can
+ *                            can be a list of color_stops. If none is set, it will still set the `background-color` to the $background-color.
+ * @param {String} $direction The direction of the gradient. Can either me `top` or `left`. (defaults to `top`)
+ */
+@mixin background-gradient($bg-color, $type: $base-gradient, $direction: top) {
+    background-image: none;
+    background-color: $bg-color;
+    
+    @if $base-gradient != null and $bg-color != transparent {
+        //color_stops
+        @if type-of($type) == "list" {
+            @include background-image(linear-gradient($direction, $type));
+        }
+        
+        //default gradients
+        @else if $type == bevel {
+            @include background-image(linear-gradient($direction, color_stops(
+                lighten($bg-color, 15%), 
+                lighten($bg-color, 8%) 30%, 
+                $bg-color 65%, 
+                darken($bg-color, 6%)
+            )));
+        } @else if $type == glossy {
+            @include background-image(linear-gradient($direction, color_stops(lighten($bg-color, 15%), lighten($bg-color, 5%) 50%, $bg-color 51%, darken($bg-color, 5%))));
+        } @else if $type == recessed {
+            @include background-image(linear-gradient($direction, color_stops(darken($bg-color, 10%), darken($bg-color, 5%) 10%, $bg-color 65%, lighten($bg-color, .5%))));
+        } @else if $type == matte {
+            @include background-image(linear-gradient($direction, color_stops(lighten($bg-color, 15%), lighten($bg-color, 4%) 4%, darken($bg-color, 4%))));
+        } @else if $type == matte-reverse {
+            @include background-image(linear-gradient($direction, color_stops(darken($bg-color, 6%), lighten($bg-color, 4%))));
+        } @else if $type == glossy-toolbar {
+            @include background-image(linear-gradient($direction, color_stops(#F0F5FA, #DAE6F4 2%, #CEDDEF)));
+        }
+        
+        //ext3.3 gradients
+        @else if $type == panel-header {
+            @include background-image(linear-gradient($direction, color_stops(
+                adjust-color($bg-color, $hue: -0.857deg, $saturation: -1.63%, $lightness: 3.529%), 
+                adjust-color($bg-color, $hue: 0.158deg, $saturation: -1.21%, $lightness: 0.392%) 45%, 
+                adjust-color($bg-color, $hue: 1.154deg, $saturation: 0.607%, $lightness: -7.647%) 46%,
+                adjust-color($bg-color, $hue: 1.154deg, $saturation: 0.607%, $lightness: -7.647%) 50%,
+                adjust-color($bg-color, $hue: 1.444deg, $saturation: -1.136%, $lightness: -4.706%) 51%,
+                $bg-color
+            )));
+        } @else if $type == tabbar {
+            @include background-image(linear-gradient($direction, color_stops(
+                adjust-color($bg-color, $hue: 0.0deg, $saturation: 1.604%, $lightness: 4.706%),
+                $bg-color
+            )));
+        } @else if $type == tab {
+            @include background-image(linear-gradient($direction, color_stops(
+                adjust-color($bg-color, $hue: 1.382deg, $saturation: -18.571%, $lightness: -4.902%),
+                adjust-color($bg-color, $hue: 0.43deg, $saturation: -10.311%, $lightness: -2.157%) 25%,
+                $bg-color 45%
+            )));
+        } @else if $type == tab-active {
+            @include background-image(linear-gradient($direction, color_stops(
+                adjust-color($bg-color, $hue: -212.903deg, $saturation: -88.571%, $lightness: 6.863%),
+                adjust-color($bg-color, $hue: 0.43deg, $saturation: -6.753%, $lightness: 4.706%) 25%,
+                $bg-color 45%
+            )));
+        } @else if $type == tab-over {
+            @include background-image(linear-gradient($direction, color_stops(
+                adjust-color($bg-color, $hue: 4.462deg, $saturation: -9.524%, $lightness: -3.725%),
+                adjust-color($bg-color, $hue: 2.272deg, $saturation: 0.0%, $lightness: -1.569%) 25%,
+                $bg-color 45%
+            )));
+        } @else if $type == tab-disabled {
+            @include background-image(linear-gradient($direction, color_stops(
+                $bg-color,
+                adjust-color($bg-color, $hue: -0.267deg, $saturation: 18.571%, $lightness: 2.941%)
+            )));
+        } @else if $type == grid-header {
+            @include background-image(linear-gradient($direction, color_stops(
+                adjust-color($bg-color, $hue: 0deg, $saturation: 0%, $lightness: 20.392%),
+                adjust-color($bg-color, $hue: 220.0deg, $saturation: 5.66%, $lightness: 12.353%)
+            )));
+        } @else if $type == grid-header-over {
+            @include background-image(linear-gradient($direction, color_stops(
+                adjust-color($bg-color, $hue: 0.175deg, $saturation: 0.967%, $lightness: 14.118%),
+                adjust-color($bg-color, $hue: 0.175deg, $saturation: 0.967%, $lightness: 14.118%) 39%,
+                adjust-color($bg-color, $hue: 0.372deg, $saturation: 0.101%, $lightness: 10.196%) 40%,
+                adjust-color($bg-color, $hue: 0.372deg, $saturation: 0.101%, $lightness: 10.196%)
+            )));
+        } @else if $type == grid-row-over {
+            @include background-image(linear-gradient($direction, color_stops(
+                adjust-color($bg-color, $hue: 0.175deg, $saturation: 0.967%, $lightness: 14.118%),
+                $bg-color
+            )));
+        } @else if $type == grid-cell-special {
+            @include background-image(linear-gradient(left, color_stops(
+                $bg-color,
+                darken($bg-color, 5)
+            )));
+        } @else if $type == glossy-button or $type == glossy-button-disabled {
+            @include background-image(linear-gradient($direction, color_stops(
+                $bg-color,
+                adjust-color($bg-color, $hue: 0deg, $saturation: 0%, $lightness: -2.353%) 48%,
+                adjust-color($bg-color, $hue: 0deg, $saturation: 0%, $lightness: -11.373%) 52%,
+                adjust-color($bg-color, $hue: 0deg, $saturation: 0%, $lightness: -9.412%)
+            )));
+        } @else if $type == glossy-button-over {
+            @include background-image(linear-gradient($direction, color_stops(
+                $bg-color,
+                adjust-color($bg-color, $hue: 1.754deg, $saturation: 0.0%, $lightness: -2.157%) 48%,
+                adjust-color($bg-color, $hue: 5.833deg, $saturation: -35.135%, $lightness: -9.216%) 52%,
+                adjust-color($bg-color, $hue: 5.833deg, $saturation: -27.273%, $lightness: -7.647%)
+            )));
+        } @else if $type == glossy-button-pressed {
+            @include background-image(linear-gradient($direction, color_stops(
+                $bg-color,
+                adjust-color($bg-color, $hue: -1.839deg, $saturation: -2.18%, $lightness: 2.157%) 48%,
+                adjust-color($bg-color, $hue: -2.032deg, $saturation: 37.871%, $lightness: -4.706%) 52%,
+                adjust-color($bg-color, $hue: -1.641deg, $saturation: 36.301%, $lightness: -2.549%)
+            )));
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/mixins/_frame.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/mixins/_frame.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/mixins/_frame.scss	(revision 18277)
@@ -0,0 +1,205 @@
+@function pad($radius) {
+    $radius: boxmax($radius);
+    $radius: parseint($radius);
+    @if $radius >= 10 {
+        @return $radius;
+    }
+    @else {
+        @return "0" + $radius;
+    }
+}
+
+@mixin x-frame(
+    $cls, 
+    $ui: null, 
+    $border-radius: 0px, 
+    $border-width: 0px, 
+    $padding: null, 
+    $background-color: null, 
+    $background-gradient: null,
+    $table: false,
+    $background-direction: top
+) {
+    $cls-ui: $cls;
+    @if $ui != null {
+        $cls-ui: $cls + '-' + $ui;
+    }
+    
+    $vertical: false;
+    @if $background-direction == left or $background-direction == right {
+        $vertical: true;
+    }
+
+    $frame-top: max(top($border-radius), right($border-radius));
+    $frame-right: max(right($border-radius), bottom($border-radius));
+    $frame-bottom: max(bottom($border-radius), left($border-radius));
+    $frame-left: max(left($border-radius), top($border-radius));
+    
+    $padding-top: 0;
+    $padding-right: 0;
+    $padding-bottom: 0;
+    $padding-left: 0;
+    
+    @if $padding == null {
+        $padding-top: $frame-top - top($border-width);
+        $padding-right: $frame-right - right($border-width);
+        $padding-bottom: $frame-bottom - bottom($border-width);
+        $padding-left: $frame-left - left($border-width);
+    }
+    @else {
+        $padding-top: top($padding);
+        $padding-right: right($padding);
+        $padding-bottom: bottom($padding);
+        $padding-left: left($padding);    
+    }
+    
+    @if $padding-top < $frame-top {
+        $padding-top: $frame-top - top($border-width);
+    }
+    @if $padding-right < $frame-right {
+        $padding-right: $frame-right - right($border-width);
+    }
+    @if $padding-bottom < $frame-bottom {
+        $padding-bottom: $frame-bottom - bottom($border-width);
+    }
+    @if $padding-left < $frame-left {
+        $padding-left: $frame-left - left($border-width);
+    }
+     
+    .#{$prefix}#{$cls-ui} {
+        @if $supports-border-radius {
+            @if length($border-radius) == 2 {
+                @include border-top-left-radius(nth($border-radius, 1));
+                @include border-top-right-radius(nth($border-radius, 2));
+            } @else if length($border-radius) == 3 {
+                @include border-top-left-radius(nth($border-radius, 1));
+                @include border-top-right-radius(nth($border-radius, 2));
+                @include border-bottom-right-radius(nth($border-radius, 3));
+            } @else if length($border-radius) == 4 {
+                @include border-top-left-radius(nth($border-radius, 1));
+                @include border-top-right-radius(nth($border-radius, 2));
+                @include border-bottom-right-radius(nth($border-radius, 3));
+                @include border-bottom-left-radius(nth($border-radius, 4));
+            } @else {
+                @include border-radius($border-radius);
+            }
+        }
+        padding: $padding-top $padding-right $padding-bottom $padding-left;
+        border-width: $border-width;
+        border-style: solid;
+        @if $background-color != null {
+            @if $supports-gradients and $background-gradient != null {
+                @include background-gradient($background-color, $background-gradient, $background-direction);
+            }
+            @else {
+                background-color: $background-color;
+            }      
+        }
+    }
+    
+    @if not $supports-gradients or $compile-all {
+        .#{$prefix}nlg {
+            .#{$prefix}#{$cls-ui}-mc {
+                @if $background-gradient != null {
+                    background-image: theme-background-image($theme-name, '#{$cls}/#{$cls-ui}-bg.gif', false, $relative-image-path-for-uis);
+                }
+                @if $background-color != null {
+                    background-color: $background-color;
+                }
+            }
+        }        
+    }
+    
+    @if not $supports-border-radius or $compile-all {
+        .#{$prefix}nbr {
+            .#{$prefix}#{$cls-ui} {
+                padding: 0 !important;
+                border-width: 0 !important;
+                @include border-radius(0px);
+                @if $background-color != null {
+                    background-color: transparent;
+                }
+                @else {
+                    background: #fff;
+                }
+
+                $type: '100';
+                @if $table == true {
+                    $type: '110';
+                }
+                $direction: '100';
+                @if $vertical == true {
+                    $direction: '110';
+                }
+                
+                $left: $type + pad(top($border-radius)) + pad(right($border-radius)) + 'px';
+                $top: $direction + pad(bottom($border-radius)) + pad(left($border-radius)) + 'px';
+                background-position: unquote($left) unquote($top);
+            }
+
+            .#{$prefix}#{$cls-ui}-tl,
+            .#{$prefix}#{$cls-ui}-bl,
+            .#{$prefix}#{$cls-ui}-tr,
+            .#{$prefix}#{$cls-ui}-br,
+            .#{$prefix}#{$cls-ui}-tc,
+            .#{$prefix}#{$cls-ui}-bc,
+            .#{$prefix}#{$cls-ui}-ml,
+            .#{$prefix}#{$cls-ui}-mr {
+                // @tag iezoomhack
+                
+                @if $background-color != transparent {
+                    background-image: theme-background-image($theme-name, '#{$cls}/#{$cls-ui}-corners.gif', false, $relative-image-path-for-uis);
+                }
+            }
+            
+            @if $vertical == true {
+                .#{$prefix}#{$cls-ui}-tc,
+                .#{$prefix}#{$cls-ui}-bc {
+                    // @tag iezoomhack
+
+                    @if $background-color != transparent {
+                        background-image: theme-background-image($theme-name, '#{$cls}/#{$cls-ui}-sides.gif', false, $relative-image-path-for-uis);
+                        background-position: 0 0;
+                        background-repeat: repeat-x;
+                    }
+                }
+            } @else {
+                .#{$prefix}#{$cls-ui}-ml,
+                .#{$prefix}#{$cls-ui}-mr {
+                    // @tag iezoomhack
+
+                    @if $background-color != transparent {
+                        background-image: theme-background-image($theme-name, '#{$cls}/#{$cls-ui}-sides.gif', false, $relative-image-path-for-uis);
+                        background-position: 0 0;
+                        @if $background-gradient == null {
+                            background-repeat: repeat-y;
+                        }
+                    }
+                }
+            }
+
+            $padding-top: $padding-top - $frame-top;
+            $padding-right: $padding-right - $frame-right;
+            $padding-bottom: $padding-bottom - $frame-bottom;
+            $padding-left: $padding-left - $frame-left;
+            
+            
+            @if $padding-top < 0 {
+                $padding-top: 0;
+            }
+            @if $padding-right < 0 {
+                $padding-right: 0;
+            }
+            @if $padding-bottom < 0 {
+                $padding-bottom: 0;
+            }
+            @if $padding-left < 0 {
+                $padding-left: 0;
+            }
+
+            .#{$prefix}#{$cls-ui}-mc {
+                padding: $padding-top $padding-right $padding-bottom $padding-left;
+            }    
+        }   
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/mixins/_inner-border.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/mixins/_inner-border.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/mixins/_inner-border.scss	(revision 18277)
@@ -0,0 +1,149 @@
+@function inner-border-spread($width) {
+    $top: top($width);
+    $right: right($width);
+    $bottom: bottom($width);
+    $left: left($width);
+    
+    @return min(($top + $bottom) / 2, ($left + $right) / 2);
+}
+
+@function inner-border-hoff($width, $spread) {
+    $left: left($width); 
+    $right: right($width);
+
+    @if $right <= 0 {
+        @return $left - $spread;
+    }
+    @else {
+        @return $spread - $right;
+    }
+}
+
+@function inner-border-voff($width, $spread) {
+    $top: top($width);
+    $bottom: bottom($width);
+
+    @if $bottom <= 0 {
+        @return $top - $spread;
+    }
+    @else {
+        @return $spread - $bottom;
+    }
+}
+
+@function even($number) {
+    @return ceil($number / 2) == ($number / 2);
+}
+
+@function odd($number) {
+    @return ceil($number / 2) != ($number / 2);
+}
+
+@function inner-border-usesingle-width($width) {
+    $top: top($width);
+    $right: right($width);
+    $bottom: bottom($width);
+    $left: left($width);
+        
+    @if $top == 0 {
+        @if $left + $right == 0 {
+            @return true;
+        }
+        @if $bottom >= $left + $right {
+            @return true;
+        }
+    }
+    
+    @if $bottom == 0 {
+        @if $left + $right == 0 {
+            @return true;
+        }
+        @if $top >= $left + $right {
+            @return true;
+        }
+    }
+    
+    @if $left == 0 {
+        @if $top + $bottom == 0 {
+            @return true;
+        }
+        @if $right >= $top + $bottom {
+            @return true;
+        }
+    }
+    
+    @if $right == 0 {
+        @if $top + $bottom == 0 {
+            @return true;
+        }
+        @if $left >= $top + $bottom {
+            @return true;
+        }
+    }
+    
+    @if $top + $bottom == $left + $right and even($top) == even($bottom) and even($left) == even($right) {
+        @return true;
+    }
+    
+    @return false;
+}
+
+@function inner-border-usesingle-color($color) {
+    $top: top($color);
+    $right: right($color);
+    $bottom: bottom($color);
+    $left: left($color);
+    
+    @if $top == $right == $bottom == $left {
+        @return true;
+    }
+    
+    @return false;
+}
+
+@function inner-border-usesingle($width, $color) {
+    @if inner-border-usesingle-color($color) and inner-border-usesingle-width($width) {
+        @return true;
+    }
+    @return false;
+}
+
+@mixin inner-border($width: 1px, $color: #fff, $blur: 0px) {
+    @if inner-border-usesingle($width, $color) {
+        $spread: inner-border-spread($width);
+        $hoff: inner-border-hoff($width, $spread);
+        $voff: inner-border-voff($width, $spread);
+        @include single-box-shadow($color-top, $hoff, $voff, $blur, $spread, true);
+    }
+    @else {
+        $width-top: top($width);
+        $width-right: right($width);
+        $width-bottom: bottom($width);
+        $width-left: left($width);
+
+        $color-top: top($color);
+        $color-right: right($color);
+        $color-bottom: bottom($color);
+        $color-left: left($color);
+        
+        $shadow-top: false;
+        $shadow-right: false;
+        $shadow-bottom: false;
+        $shadow-left: false;
+        
+        @if $width-top > 0 {
+            $shadow-top: $color-top 0 $width-top $blur 0 inset;
+        }
+        @if $width-right > 0 {
+            $shadow-right: $color-right (-1 * $width-right) 0 $blur 0 inset;
+        }
+        @if $width-bottom > 0 {
+            $shadow-bottom: $color-bottom 0 (-1 * $width-bottom) $blur 0 inset;
+        }
+        @if $width-left > 0 {
+            $shadow-left: $color-left $width-left 0 $blur 0 inset;
+        }
+                
+        @include box-shadow($shadow-top, $shadow-bottom, $shadow-right, $shadow-left);
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/mixins/_reset-extras.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/mixins/_reset-extras.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/mixins/_reset-extras.scss	(revision 18277)
@@ -0,0 +1,142 @@
+@mixin extjs-reset-extras {
+	.#{$prefix}border-box {
+		.#{$prefix}reset {
+			//tab.scss
+			.#{$prefix}tab-default-top {
+				height: $tab-height + top($tabbar-top-strip-border-width);
+			}
+			.#{$prefix}tab-default-bottom {
+				height: $tab-height + bottom($tabbar-bottom-strip-border-width);
+			}
+
+			//qtip.scss
+			.#{$prefix}tip-anchor {
+		        width: 10px;
+		        height: 10px;
+		    }
+
+			//field.scss
+			.#{$prefix}form-text {
+		        height: $form-field-height;
+		    }
+
+			textarea.#{$prefix}form-field {
+		        height: auto;
+		    }
+
+		    .#{$prefix}field-default-toolbar .#{$prefix}form-text {
+		        height: $form-toolbar-field-height;
+		    }
+
+		    //triggerfield.scss
+		    .#{$prefix}form-trigger {
+		        height: $form-trigger-height;
+		    }
+
+		    .#{$prefix}field-default-toolbar .#{$prefix}form-trigger {
+		        height: $form-toolbar-trigger-height;
+		    }
+
+		    //grid.scss
+		    @if $include-ie or $compile-all {
+		        &.#{$prefix}ie9 {
+		            .#{$prefix}grid-header-ct {
+		                padding-left: 1px;
+		            }
+		        }
+		    }
+		}
+    }
+
+    .#{$prefix}webkit {
+    	.#{$prefix}reset {
+	    	//form.scss
+	        *:focus {
+            	@extend .outline-none;
+	        }
+
+	        //field
+	        .#{$prefix}form-empty-field {
+	            line-height: 15px;
+	        }
+
+	        //fieldset
+	        .#{$prefix}fieldset-header {
+		        padding-top: 1px;
+		    }
+	    }
+	}
+
+    /* Top Tabs */
+	@include tab-bar-top-reset(
+	    "tab-bar-top",
+	    "tab-bar-body",
+	    "tab-bar-strip",
+	    $tabbar-top-body-padding,
+	    $tabbar-top-body-border-width,
+	    $tabbar-top-strip-border-width,
+	    $tabbar-strip-height
+	);
+	@include tab-bar-top-reset(
+	    "tab-bar-top",
+	    "tab-bar-body-default-plain",
+	    "tab-bar-strip-default-plain",
+	    $tabbar-top-plain-body-padding,
+	    $tabbar-top-plain-body-border-width,
+	    $tabbar-top-strip-border-width,
+	    $tabbar-strip-height
+	);
+
+	/* Bottom Tabs */
+	@include tab-bar-bottom-reset(
+	    "tab-bar-bottom",
+	    "tab-bar-body",
+	    "tab-bar-strip",
+	    $tabbar-bottom-body-padding,
+	    $tabbar-bottom-body-border-width,
+	    $tabbar-bottom-strip-border-width,
+	    $tabbar-strip-height
+	);
+
+	@include tab-bar-bottom-reset(
+	    "tab-bar-bottom",
+	    "tab-bar-body-default-plain",
+	    "tab-bar-strip-default-plain",
+	    $tabbar-bottom-plain-body-padding,
+	    $tabbar-bottom-plain-body-border-width,
+	    $tabbar-bottom-strip-border-width,
+	    $tabbar-strip-height
+	);
+}
+
+@mixin tab-bar-top-reset($toolbarCls, $bodyCls, $stripCls, $body-padding, $body-border-width, $strip-border-width, $strip-height) {
+    .#{$prefix}border-box {
+    	.#{$prefix}reset {
+	        .#{$prefix}#{$toolbarCls} {
+	            .#{$prefix}#{$bodyCls} {
+	                height: $tab-height + vertical($body-border-width) + vertical($body-padding);
+	            }
+
+	            .#{$prefix}#{$stripCls} {
+	                height: $strip-height;
+	            }
+	        }
+		}
+    }
+}
+
+@mixin tab-bar-bottom-reset($toolbarCls, $bodyCls, $stripCls, $body-padding, $body-border-width, $strip-border-width, $strip-height) {
+    .#{$prefix}border-box {
+    	.#{$prefix}reset {
+	        .#{$prefix}#{$toolbarCls} {
+	            .#{$prefix}#{$bodyCls} {
+	                height: $tab-height + vertical($body-border-width) + vertical($body-padding);
+	            }
+
+	            .#{$prefix}#{$stripCls} {
+	                height: $strip-height;
+	            }
+	        }
+	    }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/mixins/_theme-background-image.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/mixins/_theme-background-image.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/mixins/_theme-background-image.scss	(revision 18277)
@@ -0,0 +1,32 @@
+/**
+ * Method which inserts a full background-image property for a theme image.
+ * It checks if the file exists and if it doesn't, it'll throw an error. 
+ * By default it will not include the background-image property if it is not found,
+ * but this can be changed by changing the default value of $include-missing-images to 
+ * be true. 
+ */
+@function theme-background-image($theme-name, $path, $without-url: false, $relative: false) {
+    $exists_image: theme-image($theme-name, $path, true, false);
+    
+    @if $exists_image {
+        $exists: theme_image_exists($exists_image);
+
+        @if $exists == true {
+            @return theme-image($theme-name, $path, $without-url, $relative);
+        }
+        @else {
+//            @todo this needs to be smarter
+//            @warn "@theme-background-image: Theme image not found: #{$exists_image}";
+
+            @if $include-missing-images {
+                @return theme-image($theme-name, $path, $without-url, $relative);
+            }
+
+            @return none;
+        }
+    }
+    @else {
+//        @todo this needs to be smarter...
+//        @warn "@theme-background-image: No arguments passed";
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/util/_dragdrop.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/util/_dragdrop.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/util/_dragdrop.scss	(revision 18277)
@@ -0,0 +1,76 @@
+@mixin extjs-dragdrop {
+    .#{$prefix}dd-drag-proxy {
+        
+    }
+    
+    .#{$prefix}dd-drag-repair {
+        .#{$prefix}dd-drag-ghost {
+            @include opacity(.6);
+        }
+
+        .#{$prefix}dd-drop-icon {
+            display: none;
+        }
+    }
+
+    .#{$prefix}dd-drag-ghost {
+        @include opacity(.85);
+        
+        padding: 5px;
+        padding-left: 20px;
+        
+        white-space: nowrap;
+        
+        color: #000;
+        font: normal ceil($font-size * .9) $font-family;
+        
+        border: 1px solid;
+        border-color: #ddd #bbb #bbb #ddd;
+        
+        background-color: #fff;
+    }
+
+    .#{$prefix}dd-drop-icon {
+        position: absolute;
+        top: 3px;
+        left: 3px;
+        
+        display: block;
+        
+        width: 16px;
+        height: 16px;
+        
+        background-color: transparent;
+        background-position:  center;
+        background-repeat:  no-repeat;
+        
+        z-index: 1;
+    }
+
+    .#{$prefix}view-selector {
+        position: absolute;
+        left: 0;
+        top: 0;
+        
+        width: 0;
+        
+        background-color: #c3daf9;
+        border: 1px dotted #3399bb;
+            
+        @include opacity(.5);
+        
+        // @tag ie6hack
+    }
+    
+    .#{$prefix}dd-drop-nodrop .#{$prefix}dd-drop-icon {
+        background-image: theme-background-image($theme-name, 'dd/drop-no.gif');
+    }
+
+    .#{$prefix}dd-drop-ok .#{$prefix}dd-drop-icon {
+        background-image: theme-background-image($theme-name, 'dd/drop-yes.gif');
+    }
+
+    .#{$prefix}dd-drop-ok-add .#{$prefix}dd-drop-icon {
+        background-image: theme-background-image($theme-name, 'dd/drop-add.gif');
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/util/_focus.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/util/_focus.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/util/_focus.scss	(revision 18277)
@@ -0,0 +1,37 @@
+.#{$prefix}focus-element {
+    position: absolute;
+    top: -10px;
+    left: -10px;
+    width: 0px;
+    height: 0px;
+}
+
+.#{$prefix}focus-frame {
+    position: absolute;
+    left: 0px;
+    top: 0px;
+    z-index: 100000000;
+    width: 0px;
+    height: 0px;
+}
+
+.#{$prefix}focus-frame-top,
+.#{$prefix}focus-frame-bottom,
+.#{$prefix}focus-frame-left,
+.#{$prefix}focus-frame-right {
+    position: absolute;
+    top: 0px;
+    left: 0px;
+}
+
+.#{$prefix}focus-frame-top,
+.#{$prefix}focus-frame-bottom {
+    border-top: $focus-frame-style $focus-frame-width $focus-frame-color;
+    height: $focus-frame-width;
+}
+
+.#{$prefix}focus-frame-left,
+.#{$prefix}focus-frame-right {
+    border-left: $focus-frame-style $focus-frame-width $focus-frame-color;
+    width: $focus-frame-width;
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/util/_messagebox.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/util/_messagebox.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/util/_messagebox.scss	(revision 18277)
@@ -0,0 +1,48 @@
+@mixin extjs-messagebox {
+    .#{$prefix}message-box .#{$prefix}window-body {
+        background-color: transparent;
+        @include color-by-background($window-base-color);
+
+        border: none;
+    }
+
+    .#{$prefix}message-box .#{$prefix}progress-wrap {
+        margin-top: 4px;
+    }
+
+    .#{$prefix}message-box-icon {
+        width: 47px;
+        height: 32px;
+    }
+    
+    .#{$prefix}message-box .#{$prefix}form-item .#{$prefix}form-display-field {
+        @include color-by-background($window-base-color);
+    }
+
+    .#{$prefix}message-box-info,
+    .#{$prefix}message-box-warning,
+    .#{$prefix}message-box-question,
+    .#{$prefix}message-box-error {
+        background: transparent no-repeat top left;
+    }
+
+    .#{$prefix}message-box .#{$prefix}msg-box-wait {
+        background-image: theme-background-image($theme-name, 'shared/blue-loading.gif');
+    }
+
+    .#{$prefix}message-box-info {
+        background-image: theme-background-image($theme-name, 'shared/icon-info.gif');
+    }
+
+    .#{$prefix}message-box-warning {
+        background-image: theme-background-image($theme-name, 'shared/icon-warning.gif');
+    }
+
+    .#{$prefix}message-box-question {
+        background-image: theme-background-image($theme-name, 'shared/icon-question.gif');
+    }
+
+    .#{$prefix}message-box-error {
+        background-image: theme-background-image($theme-name, 'shared/icon-error.gif');
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/util/_resizable.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/util/_resizable.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/util/_resizable.scss	(revision 18277)
@@ -0,0 +1,204 @@
+@mixin extjs-resizable {
+    .#{$prefix}resizable-handle {
+        position: absolute;
+        z-index: 100;
+        font-size: 1px;
+        line-height: 6px;
+        
+        overflow: hidden;
+        @include opacity(0);        
+        // @tag iezoomhack
+    }
+
+    .#{$prefix}resizable-handle-east {
+        width: 6px;
+        height: 100%;
+        
+        right: 0;
+        top: 0;
+    }
+
+    // @tag question Wrapper seems unnecessary?
+    
+    .#{$prefix}resizable-over {
+        .#{$prefix}resizable-handle-east {
+            cursor: e-resize;
+        }
+
+        .#{$prefix}resizable-handle-south {
+            cursor: s-resize;
+        }
+
+        .#{$prefix}resizable-handle-west {
+            cursor: w-resize;
+        }
+
+        .#{$prefix}resizable-handle-north {
+            cursor: n-resize;
+        }
+
+        .#{$prefix}resizable-handle-southeast {
+            cursor: se-resize;
+        }
+
+        .#{$prefix}resizable-handle-northwest {
+            cursor: nw-resize;
+        }
+
+        .#{$prefix}resizable-handle-northeast {
+            cursor: ne-resize;
+        }
+
+        .#{$prefix}resizable-handle-southwest {
+            cursor: sw-resize;
+        }
+    }
+    
+    .#{$prefix}resizable-handle-south {
+        width: 100%;
+        height: 6px;
+        
+        left: 0;
+        bottom: 0;
+    }
+    
+    .#{$prefix}resizable-handle-west {
+        width: 6px;
+        height: 100%;
+        
+        left: 0;
+        top: 0;
+    }
+
+    .#{$prefix}resizable-handle-north {
+        width: 100%;
+        height: 6px;
+        
+        left: 0;
+        top: 0;
+    }
+
+    .#{$prefix}resizable-handle-southeast {
+        width: 6px;
+        height: 6px;
+        
+        right: 0;
+        bottom: 0;
+        
+        z-index: 101;
+    }
+
+    .#{$prefix}resizable-handle-northwest {
+        width: 6px;
+        height: 6px;
+        
+        left: 0;
+        top: 0;
+        
+        z-index: 101;
+    }
+
+    .#{$prefix}resizable-handle-northeast {
+        width: 6px;
+        height: 6px;
+        
+        right: 0;
+        top: 0;
+        
+        z-index: 101;
+    }
+
+    .#{$prefix}resizable-handle-southwest {
+        width: 6px;
+        height: 6px;
+        
+        left: 0;
+        bottom: 0;
+        
+        z-index: 101;
+    }
+    
+    // IE rounding error
+    .#{$prefix}ie {
+        .#{$prefix}resizable-handle-east {
+            margin-right: -1px; /*IE rounding error*/
+        }
+        
+        .#{$prefix}resizable-handle-south {
+            margin-bottom: -1px;
+        }
+    }
+
+    .#{$prefix}resizable-over .#{$prefix}resizable-handle, .#{$prefix}resizable-pinned .#{$prefix}resizable-handle{
+        @include opacity(1);
+    }
+
+    .#{$prefix}window .#{$prefix}window-handle {
+        @include opacity(0);
+    }
+
+    .#{$prefix}window-collapsed .#{$prefix}window-handle {
+        display: none;
+    }
+
+    .#{$prefix}resizable-proxy {
+        border: 1px dashed #3b5a82;
+        position: absolute;
+        left: 0;
+        top: 0;
+        overflow: hidden;
+        z-index: 50000;
+    }
+
+    .#{$prefix}resizable-overlay {
+        position: absolute;
+        left: 0;
+        top: 0;
+        
+        width: 100%;
+        height: 100%;
+        
+        display: none;
+        
+        z-index: 200000;
+        
+        background-color: #fff;
+            
+        @include opacity(0);
+    }
+    
+    .#{$prefix}resizable-over,
+    .#{$prefix}resizable-pinned {
+        .#{$prefix}resizable-handle-east,
+        .#{$prefix}resizable-handle-west {
+                background-position: left;
+                background-image: theme-background-image($theme-name, 'sizer/e-handle.gif');
+        }
+        
+        .#{$prefix}resizable-handle-south,
+        .#{$prefix}resizable-handle-north {
+            background-position: top;
+            background-image: theme-background-image($theme-name, 'sizer/s-handle.gif');
+        }
+        
+        .#{$prefix}resizable-handle-southeast {
+            background-position: top left;
+            background-image: theme-background-image($theme-name, 'sizer/se-handle.gif');
+        }
+        
+        .#{$prefix}resizable-handle-northwest {
+            background-position: bottom right;
+            background-image: theme-background-image($theme-name, 'sizer/nw-handle.gif');
+        }
+        
+        .#{$prefix}resizable-handle-northeast {
+            background-position: bottom left;
+            background-image: theme-background-image($theme-name, 'sizer/ne-handle.gif');
+        }
+
+        .#{$prefix}resizable-handle-southwest {
+            background-position: top right;
+            background-image: theme-background-image($theme-name, 'sizer/sw-handle.gif');
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/util/_scroller.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/util/_scroller.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/util/_scroller.scss	(revision 18277)
@@ -0,0 +1,55 @@
+@mixin extjs-scroller {
+    .#{$prefix}horizontal-scroller-present .#{$prefix}grid-body {
+        border-bottom-width: 0px;
+    }
+        
+    .#{$prefix}vertical-scroller-present .#{$prefix}grid-body {
+        border-right-width: 0px;
+    }
+
+    .#{$prefix}scroller {
+        overflow: hidden;
+    }
+    
+    .#{$prefix}scroller-vertical {
+        border: 1px solid $panel-border-color;
+        border-top-color: $grid-header-background-color;
+    }
+    
+    .#{$prefix}scroller-horizontal {
+        border: 1px solid $panel-border-color;
+    }
+
+    .#{$prefix}vertical-scroller-present .#{$prefix}scroller-horizontal {
+        border-right-width: 0px;
+    }
+    
+    .#{$prefix}scroller-ct {
+        overflow: hidden;
+        position: absolute;
+        margin: 0;
+        padding: 0;
+        border: none;
+        left: 0px;
+        top: 0px;
+
+        /*
+        In IE9 (only), the border-box style causes the scroller-ct to be 0px in the
+        perpendicular dimension and breaks the scroll as well as offsets it by the left
+        offset that we use to try and keep some size on this element. This works on all
+        browsers (including IE9).
+        */
+        box-sizing: content-box !important;
+        -ms-box-sizing: content-box !important;
+        -moz-box-sizing: content-box !important;
+        -webkit-box-sizing: content-box !important;
+    }
+    
+    .#{$prefix}scroller-vertical .#{$prefix}scroller-ct {
+        overflow-y: scroll;
+    }
+    
+    .#{$prefix}scroller-horizontal .#{$prefix}scroller-ct {
+        overflow-x: scroll;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/util/_splitter.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/util/_splitter.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/util/_splitter.scss	(revision 18277)
@@ -0,0 +1,110 @@
+@mixin extjs-splitter {
+    .#{$prefix}splitter {
+        .#{$prefix}collapse-el {
+            position: absolute;
+
+            cursor: pointer;
+
+            background-color: transparent;
+            background-repeat: no-repeat !important;
+        }
+    }
+
+    .#{$prefix}splitter-over {
+        background: rgba(0,0,0,.3);
+    }
+
+    .#{$prefix}layout-split-left,
+    .#{$prefix}layout-split-right {
+        top: 50%;
+
+        margin-top: -17px;
+
+        width: 5px;
+        height: 35px;
+    }
+
+    .#{$prefix}layout-split-top,
+    .#{$prefix}layout-split-bottom {
+        left: 50%;
+
+        width: 35px;
+        height: 5px;
+
+        margin-left: -17px;
+    }
+
+    .#{$prefix}layout-split-left {
+        background: no-repeat top right;
+        background-image: theme-background-image($theme-name, 'util/splitter/mini-left.gif');
+    }
+
+    .#{$prefix}layout-split-right {
+        background: no-repeat top left;
+        background-image: theme-background-image($theme-name, 'util/splitter/mini-right.gif');
+    }
+
+    .#{$prefix}layout-split-top {
+        background: no-repeat top left;
+        background-image: theme-background-image($theme-name, 'util/splitter/mini-top.gif');
+    }
+
+    .#{$prefix}layout-split-bottom {
+        background: no-repeat top left;
+        background-image: theme-background-image($theme-name, 'util/splitter/mini-bottom.gif');
+    }
+
+    .#{$prefix}splitter-collapsed {
+        .#{$prefix}layout-split-left {
+            background: no-repeat top left;
+            background-image: theme-background-image($theme-name, 'util/splitter/mini-right.gif');
+        }
+
+        .#{$prefix}layout-split-right {
+            background: no-repeat top right;
+            background-image: theme-background-image($theme-name, 'util/splitter/mini-left.gif');
+        }
+
+        .#{$prefix}layout-split-top {
+            background: no-repeat top left;
+            background-image: theme-background-image($theme-name, 'util/splitter/mini-bottom.gif');
+        }
+
+        .#{$prefix}layout-split-bottom {
+            background: no-repeat top left;
+            background-image: theme-background-image($theme-name, 'util/splitter/mini-top.gif');
+        }
+    }
+
+    .#{$prefix}splitter-horizontal {
+        cursor: e-resize;
+        cursor: row-resize;
+        font-size:1px;
+    }
+    .#{$prefix}splitter-vertical {
+        cursor: e-resize;
+        cursor: col-resize;
+        font-size:1px;
+    }
+    .#{$prefix}splitter-collapsed {
+        cursor: default;
+    }
+
+    .#{$prefix}splitter-active {
+        z-index: 4;
+        font-size:1px;
+        background :#000;
+//        background-color: rgb(180, 180, 180);
+//        @include opacity(0.8);
+    }
+    .#{$prefix}splitter-active {
+        .#{$prefix}collapse-el {
+            @include opacity(0.3);
+        }
+    }
+
+    .#{$prefix}proxy-el {
+        position: absolute;
+        background: #000
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/util/_tool.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/util/_tool.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/util/_tool.scss	(revision 18277)
@@ -0,0 +1,255 @@
+@mixin extjs-tool {
+    .#{$prefix}tool {
+        cursor: pointer;
+
+        img {
+            overflow: hidden;
+
+            width: $tool-size;
+            height: $tool-size;
+
+            cursor: pointer;
+
+            background-color: transparent;
+            background-repeat: no-repeat;
+            // background-image: theme-background-image($theme-name, 'tools/tool-sprites.gif');
+
+            margin: 0;
+        }
+    }
+
+    .#{$prefix}panel-header-horizontal,
+    .#{$prefix}window-header-horizontal {
+        .#{$prefix}tool {
+            margin-left: 5px;
+        }
+    }
+
+    .#{$prefix}panel-header-tools-first {
+        .#{$prefix}tool {
+            margin-left: 0;
+            margin-right: 5px;
+        }
+    }
+
+    .#{$prefix}panel-header-vertical,
+    .#{$prefix}window-header-vertical {
+        .#{$prefix}tool {
+            margin-bottom: 5px;
+        }
+    }
+
+    .#{$prefix}tool-placeholder {
+        visibility: hidden;
+    }
+
+    //Icons
+    @include extjs-tool-icon('maximize', 0);
+    @include extjs-tool-icon('minimize', 1);
+    @include extjs-tool-icon('restore', 2);
+    @include extjs-tool-icon('save', 3);
+    @include extjs-tool-icon('refresh', 4);
+    @include extjs-tool-icon('help', 5);
+    @include extjs-tool-icon('info', 6);
+    @include extjs-tool-icon('search', 7);
+    @include extjs-tool-icon('gear', 8);
+    @include extjs-tool-icon('close', 9);
+    @include extjs-tool-icon('minus', 10);
+    @include extjs-tool-icon('plus', 11);
+    @include extjs-tool-icon('print', 12);
+    @include extjs-tool-icon('up', 13);
+    @include extjs-tool-icon('toggle', 13);
+    @include extjs-tool-icon('collapse', 13);
+    @include extjs-tool-icon('collapse-top', 13);
+    @include extjs-tool-icon('left', 14);
+    @include extjs-tool-icon('prev', 14);
+    @include extjs-tool-icon('down', 15);
+    @include extjs-tool-icon('collapse-bottom', 15);
+    @include extjs-tool-icon('expand-bottom', 15);
+    @include extjs-tool-icon('expand', 13);
+    @include extjs-tool-icon('right', 16);
+    @include extjs-tool-icon('next', 16);
+    @include extjs-tool-icon('collapse-all', 17);
+    @include extjs-tool-icon('expand-all', 18);
+    @include extjs-tool-icon('pin', 19);
+    @include extjs-tool-icon('unpin', 20);
+
+    .x-collapsed {
+        @include extjs-tool-icon('toggle', 15);
+    }
+
+    .x-accordion-hd {
+        @include extjs-tool-icon('collapse-top', 1, true);
+        @include extjs-tool-icon('collapse-bottom', 0, true);
+        @include extjs-tool-icon('expand-top', 1, true);
+        @include extjs-tool-icon('expand-bottom', 0, true);
+    }
+
+//    .#{$prefix}tool-prev {
+//        background-position: 0 -105px;
+//    }
+    
+//    .#{$prefix}tool-next {
+//        background-position: 0 -120px;
+//    }
+    
+//    .#{$prefix}tool-pin {
+//        background-position: 0 -135px;
+//    }
+
+//    .#{$prefix}tool-unpin {
+//        background-position: 0 -150px;
+//    }
+
+//    .#{$prefix}tool-right {
+//        background-position: 0 -165px;
+//    }
+
+//    .#{$prefix}tool-left {
+//        background-position: 0 -180px;
+//    }
+
+
+
+
+//    .#{$prefix}tool-up:after {
+//        content: "{";
+//    }
+
+//    .#{$prefix}tool-down:after {
+//        content: "}";
+//    }
+    
+//    .#{$prefix}tool-collapse {
+//        background-position: 0 -345px;
+//    }
+
+//    .#{$prefix}tool-expand {
+//        background-position: 0 -330px;
+//    }
+
+
+//    .#{$prefix}tool-expand-bottom,
+//    .#{$prefix}tool-collapse-bottom {
+//        background-position: 0 -195px;
+//    }
+
+//    .#{$prefix}tool-expand-top,
+//    .#{$prefix}tool-collapse-top,
+//    .#{$prefix}tool-expand-bottom,
+//    .#{$prefix}tool-collapse-bottom {
+//        // background-position: 0 -210px;
+//        background-color: #8DC3E8;//darken($base-color, 10%);
+
+//        &:after {
+////            @include triangle($color: lighten($base-color, 30%), $size: 12px);
+//            @include triangle($color: #0A54B0, $size: 12px);
+//            @include scale(.7, .5, 0, 0);
+//            position: absolute;
+//            left: 2px;
+//            top: 3px;
+//        }
+//    }
+
+//    .#{$prefix}tool-expand-bottom,
+//    .#{$prefix}tool-collapse-bottom {
+//        @include rotate(180deg);
+//    }
+
+//    .#{$prefix}tool-expand-left,
+//    .#{$prefix}tool-collapse-left {
+//        background-position: 0 -180px;
+//    }
+
+//    .#{$prefix}tool-expand-right,
+//    .#{$prefix}tool-collapse-right {
+//        background-position: 0 -165px;
+//    }
+
+//    .#{$prefix}tool-over {
+//        .#{$prefix}tool-prev,
+//        .#{$prefix}tool-next,
+//        .#{$prefix}tool-pin,
+//        .#{$prefix}tool-unpin,
+//        .#{$prefix}tool-right,
+//        .#{$prefix}tool-left,
+//        .#{$prefix}tool-down,
+//        .#{$prefix}tool-up,
+//        .#{$prefix}tool-expand,
+//        .#{$prefix}tool-collapse,
+//        .#{$prefix}tool-expand-bottom,
+//        .#{$prefix}tool-collapse-bottom,
+//        .#{$prefix}tool-expand-top,
+//        .#{$prefix}tool-collapse-top,
+//        .#{$prefix}tool-expand-left,
+//        .#{$prefix}tool-collapse-left,
+//        .#{$prefix}tool-expand-right,
+//        .#{$prefix}tool-collapse-right {
+//            background-position-y: -16px;
+//        }
+//    }
+}
+
+.#{$prefix}tool-base {
+    width: $tool-size;
+    height: $tool-size;
+
+    background-image: theme-background-image($theme-name, 'tools.png');
+}
+.#{$prefix}tool-base-over {
+    background-position-y: -$tool-size;
+}
+.#{$prefix}tool-base-pressed {
+    background-position-y: -($tool-size * 2);
+}
+
+.#{$prefix}accordion-tool-base {
+    width: $accordion-tool-size;
+    height: $accordion-tool-size;
+
+    background-image: theme-background-image($theme-name, 'tools-small.png');
+}
+.#{$prefix}accordion-tool-base-over {
+    background-position-y: -$accordion-tool-size;
+}
+.#{$prefix}accordion-tool-base-pressed {
+    background-position-y: -($accordion-tool-size * 2);
+}
+
+@mixin extjs-tool-icon($name, $offset, $accordion: false) {
+    @if $accordion {
+        .#{$prefix}tool-#{$name} {
+            @extend .#{$prefix}accordion-tool-base;
+            background-position-x: -($offset * $accordion-tool-size);
+        }
+
+        .#{$prefix}tool-over {
+            .#{$prefix}tool-#{$name} {
+                @extend .#{$prefix}accordion-tool-base-over;
+            }
+        }
+
+        .#{$prefix}tool-pressed {
+            .#{$prefix}tool-#{$name} {
+                @extend .#{$prefix}accordion-tool-base-pressed;
+            }
+        }
+    } @else {
+        .#{$prefix}tool-#{$name} {
+            @extend .#{$prefix}tool-base;
+            background-position-x: -($offset * $tool-size);
+        }
+
+        .#{$prefix}tool-over {
+            .#{$prefix}tool-#{$name} {
+                @extend .#{$prefix}tool-base-over;
+            }
+        }
+
+        .#{$prefix}tool-pressed {
+            .#{$prefix}tool-#{$name} {
+                @extend .#{$prefix}tool-base-pressed;
+            }
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_base.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_base.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_base.scss	(revision 18277)
@@ -0,0 +1,151 @@
+/**
+ * @var {string} $prefix
+ * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your
+ * JavaScript application.
+ */
+$prefix: 'x-' !default;
+
+/**
+ * @var {string} $theme-name
+ * The name of the theme. This must match the the output directory of the images.
+ * (defaults to 'default')
+ */
+$theme-name: 'neptune' !default;
+
+/**
+ * @var {boolean/string} $relative-image-path-for-uis
+ * True to use a relative image path for all new UIs. If true, the path will be "../images/".
+ * It can also be a string of the path value.
+ * It defaults to false, which means it will look for the images in the ExtJS SDK folder.
+ */
+$relative-image-path-for-uis: false !default;
+
+$color: #000 !default;
+
+/**
+ * @var {string} $font-family
+ * The default font-family to be used throughout the theme.
+ */
+$font-family: "Helvetica Neue", Arial, Verdana, sans-serif !default;
+$ui-font-family: $font-family; // Deprecated
+// $ui-font-family: "Lucida Grande", Verdana, Tahoma, sans-serif !default;
+
+/**
+ * @var {string} $font-size
+ * The default font-size to be used throughout the theme.
+ */
+$font-size: 12px !default;
+
+$font-size-small: 11px !default;
+
+$font-size-large: 15px !default;
+
+/**
+ * @var {string} $base-gradient
+ * The base gradient to be used throughout the theme.
+ * Used for elements like buttons, panels, etc.
+ */
+$base-gradient: matte !default;
+
+/**
+ * @var {color} $base-color
+ * The base color to be used throughout the theme.
+ */
+$base-color: #167CCE !default; // Momentum blue
+$base-light-color: #A6DDFF !default;
+$base-dark-color: #0E4DAD !default;
+
+/**
+ * @var {color} $neutral-color
+ * The neutral color to be used throughout the theme.
+ */
+$neutral-color: #E0E3E6 !default;
+$neutral-dark-color: darken($neutral-color, 18) !default;
+$neutral-light-color: lighten($neutral-color, 8) !default;
+
+$confirm-color: #94ae0a !default;
+$bright-color: red !default;
+
+$drastic-color: #a61120 !default;
+
+/**
+ * @var {boolean} $include-not-found-images
+ * True to include files which are not found when compiling your SASS
+ */
+$include-missing-images: true !default;
+
+/**
+ * @var {boolean} $include-ie
+ * True to include Internet Explorer specific rules
+ */
+$include-ie: true !default;
+
+/**
+ * @var {boolean} $include-ff
+ * True to include Firefox specific rules
+ */
+$include-ff: true !default;
+
+/**
+ * @var {boolean} $include-chrome
+ * True to include Chrome specific rules
+ */
+$include-chrome: true !default;
+
+/**
+ * @var {boolean} $include-safari
+ * True to include Safari specific rules
+ */
+$include-safari: true !default;
+
+/**
+ * @var {boolean} $include-opera
+ * True to include Opera specific rules
+ */
+$include-opera: true !default;
+
+/**
+ * @var {boolean} $include-webkit
+ * True to include Webkit specific rules
+ */
+$include-webkit: true !default;
+
+$supports-border-radius: true !default;
+$supports-gradients: true !default;
+
+/**
+ * @var {boolean} $compile-all
+ * True to copile all CSS, even if above include rules are false
+ */
+$compile-all: true !default;
+
+/**
+ * @var {boolean} $scope-reset-css
+ * True to scope the reset CSS within the $prefix variable.
+ */
+$scope-reset-css: false !default;
+
+/**
+ * @var {color} $css-shadow-background-color
+ * The base color for CSS shadows
+ */
+$css-shadow-background-color: rgba(#000, .3) !default;
+
+/**
+ * @var {boolean} $include-shadow-images
+ * True to include all shadow images.
+ */
+$include-shadow-images: true !default;
+
+/**
+ * @var {boolean} $include-highlights
+ * True to include all shadows, highlights, and gradients
+ */
+$include-highlights: true !default;
+$include-default-uis: true !default;
+
+// Default transition variables
+$default-transition-duration: 100ms !default;
+$default-transition-function: ease-in-out !default;
+
+$default-text-contrast: 80% !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_boundlist.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_boundlist.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_boundlist.scss	(revision 18277)
@@ -0,0 +1,18 @@
+//background
+$boundlist-background-color: #fff !default;
+
+//borders
+$boundlist-border-color: #E4E4E4 !default;
+$boundlist-border-width: 1px !default;
+$boundlist-border-style: solid !default;
+
+$boundlist-item-padding: 5px 6px !default;
+$boundlist-item-border-width: 0 !default;
+$boundlist-item-border-style: solid !default;
+$boundlist-item-border-color: $boundlist-background-color !default;
+
+$boundlist-item-over-border-color: adjust-color($base-color, $hue: 6.952deg, $saturation: 5.848%, $lightness: -6.471%) !default;
+$boundlist-item-selected-border-color: darken($boundlist-item-over-border-color, 5) !default;
+
+$boundlist-item-over-background-color: #F2FBFF !default;
+$boundlist-item-selected-background-color:#094CB0 !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_btn-group.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_btn-group.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_btn-group.scss	(revision 18277)
@@ -0,0 +1,15 @@
+$btn-group-background-color: transparent !default;
+$btn-group-margin: 2px 0 !default;
+$btn-group-border-color: #E2E3E5 !default; 
+$btn-group-border-radius: 2px !default;
+$btn-group-border-width: 0 1px 0 0 !default;
+$btn-group-padding: 5px !default;
+
+$btn-group-inner-border-width: 1px !default;
+$btn-group-inner-border-color: transparent !default;
+
+$btn-group-header-margin: 2px 2px 0 2px !default;
+$btn-group-header-font: bold $font-size $font-family !default;
+$btn-group-header-color: #333130 !default;
+$btn-group-header-padding: 1px 0 3px 0 !default;
+$btn-group-header-background-color: transparent !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_button.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_button.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_button.scss	(revision 18277)
@@ -0,0 +1,65 @@
+$include-button-highlights: $include-highlights !default;
+$include-button-uis: $include-default-uis !default;
+$include-default-button-icons: true !default;
+
+$button-arrow-size: 15px !default;
+$button-split-size: 19px !default;
+
+$button-icon-spacing: 4px !default;
+$button-border-radius: 3px !default;
+$button-border-width: 1px !default;
+$button-padding: 3px !default;
+$button-font-family: $font-family !default;
+$button-font-weight: bold !default;
+$button-font-size: $font-size !default;
+$button-font-weight: normal !default;
+$button-text-padding: 3px;
+
+$button-small-padding: 3px 6px 4px 6px !default;
+$button-small-text-padding: $button-padding !default;
+$button-small-icon-size: 16px !default;
+$button-medium-icon-size: 24px !default;
+$button-large-icon-size: 32px !default;
+
+$button-base-color: darken($base-color, 7%);
+$button-base-color-over: color-offset($button-base-color, 10%);
+$button-base-color-pressed: $button-base-color-over;
+$button-base-color-disabled: $button-base-color;
+
+$button-border-color: darken($button-base-color, 20%) !default; // Deprecated
+$button-border-color-over: darken($button-base-color, 25%) !default; // Deprecated
+$button-border-color-pressed: darken($button-base-color, 25%) !default; // Deprecated
+$button-border-color-disabled: $button-border-color !default; // Deprecated
+
+$button-background-gradient: $base-gradient !default;
+$button-background-gradient-over: $base-gradient !default;
+$button-background-gradient-pressed: $base-gradient !default;
+$button-background-gradient-disabled: $base-gradient !default;
+
+$button-color: color-by-background($button-base-color, 60%) !default; // Deprecated
+$button-color-disabled: lighten($button-color, 35) !default;
+
+/**
+ * Toolbar buttons
+ */
+$button-toolbar-arrow-size: 15px !default;
+$button-toolbar-split-size: 17px !default;
+
+$button-toolbar-base-color: $mixed-color !default;
+
+$button-toolbar-border-color: rgba($button-toolbar-base-color, 0) !default;
+$button-toolbar-border-color-over: desaturate(darken($button-toolbar-base-color, 15%), 15) !default;
+$button-toolbar-border-color-pressed: #002D71 !default;
+
+$button-toolbar-background-color: rgba($button-toolbar-base-color, 0) !default;
+$button-toolbar-background-color-over: $button-toolbar-base-color !default;
+$button-toolbar-background-color-pressed: $base-dark-color !default;
+
+$button-toolbar-background-gradient: null !default;
+$button-toolbar-background-gradient-over: $base-gradient !default;
+$button-toolbar-background-gradient-pressed: $base-gradient !default;
+
+$button-toolbar-font-weight: bold !default;
+$button-toolbar-font-family: $ui-font-family !default;
+
+$button-toolbar-font-size: $font-size-small !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_core.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_core.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_core.scss	(revision 18277)
@@ -0,0 +1,8 @@
+// $color-mode: get-color-mode($neutral-color) !default;
+$stroke-color: color-offset($neutral-color, 20%, dark) !default;
+
+$clear: rgba($base-color, 0);
+
+// $content-color: color-by-background($base-color, 100%);
+$content-color: color-offset($neutral-color, 30%);
+$mixed-color: hsla(hue($base-color), saturation($base-color), lightness($neutral-color), opacity($neutral-color));
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_focus.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_focus.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_focus.scss	(revision 18277)
@@ -0,0 +1,3 @@
+$focus-frame-color: rgb(21, 66, 139) !default;
+$focus-frame-style: solid;
+$focus-frame-width: 2px;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_form.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_form.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_form.scss	(revision 18277)
@@ -0,0 +1,128 @@
+/**
+ * @class Ext.form.*
+ */
+
+
+$include-form-highlights: $include-highlights !default;
+
+/**
+ * @class Ext.form.field.Base
+ */
+
+$form-field-height: $font-size-large + 8px !default;
+$form-toolbar-field-height: 22px !default;
+$form-error-icon-width: 20px !default;
+$form-error-icon-margin-left: 3px !default;
+
+//padding
+$form-field-padding: 1px 3px !default;
+
+//background
+$form-field-background-color: lighten($content-color, 5%) !default;
+$form-field-background-image: 'form/text-bg.gif' !default;
+
+//fonts
+$form-field-font-size: $font-size !default;
+$form-field-font-family: $font-family !default;
+$form-field-font-weight: normal !default;
+$form-field-font: $form-field-font-weight $form-field-font-size $form-field-font-family !default;
+$form-field-color: color-by-background($form-field-background-color) !default;
+
+//border
+$form-field-border-color: color-by-background($neutral-color, 15%) !default;
+$form-field-border-width: 1px !default;
+
+$form-field-focus-border-color: color-offset($base-color, 15%, light) color-offset($base-color, 30%, light) color-offset($base-color, 30%, light) !default;
+$form-field-invalid-border-color: #FF0000 !default;
+
+$form-field-empty-color: color-by-background($form-field-background-color, 25%) !default;
+
+$form-field-invalid-background-color: #FFEDE9 !default;
+$form-field-invalid-background-image: null !default;
+$form-field-invalid-background-repeat: null !default;
+$form-field-invalid-background-position: null !default;
+
+/**
+ * @class Ext.form.field.TextArea
+ */
+$form-textarea-padding: 2px 3px !default;
+
+/**
+ * @class Ext.form.Label
+ */
+$form-label-font-weight: normal !default;
+$form-label-font-size: $font-size !default;
+$form-label-font-family: $font-family !default;
+$form-label-font: $form-label-font-weight $form-label-font-size $form-label-font-family !default;
+
+/**
+ * @class Ext.form.field.Checkbox
+ */
+$form-checkbox-image: 'checkbox.gif' !default;
+$form-checkbox-size: 17px !default;
+
+/**
+ * @class Ext.form.field.Radio
+ */
+$form-radio-image: 'radio.gif' !default;
+$form-radio-size: 19px !default;
+
+/**
+ * Error messages
+ */
+//icons
+$form-exclamation-icon: 'invalid.gif' !default;
+
+//font
+$form-error-msg-color: $drastic-color !default;
+$form-error-msg-font-weight: normal !default;
+$form-error-msg-font-size: $font-size-small !default;
+$form-error-msg-font-family: $font-family !default;
+$form-error-msg-font: $form-error-msg-font-weight $form-error-msg-font-size $form-error-msg-font-family !default;
+$form-error-msg-line-height: 16px !default;
+
+/**
+ * Trigger Field
+ */
+$form-trigger-width: 17px !default;
+$form-trigger-margin-left: 2px !default;
+$form-trigger-height: 22px !default;
+$form-toolbar-trigger-height: $form-toolbar-field-height !default;
+
+$form-trigger-border-bottom-width: 1px !default;
+$form-trigger-border-bottom-style: solid !default;
+$form-trigger-border-bottom-color: $form-field-border-color !default;
+$form-trigger-border-bottom: $form-trigger-border-bottom-width $form-trigger-border-bottom-style $form-trigger-border-bottom-color !default;
+
+$form-trigger-border-bottom-color-over: adjust-color($base-color, $hue: -4.322deg, $saturation: -1.065%, $lightness: -16.863%) !default;
+$form-trigger-border-bottom-color-focus: adjust-color($base-color, $hue: -4.322deg, $saturation: -1.065%, $lightness: -16.863%) !default;
+$form-trigger-border-bottom-color-focus-over: null !default;
+$form-trigger-border-bottom-color-pressed: null !default;
+
+$form-trigger-icon-background-position: 7px 6px !default;
+
+/**
+ * Fieldsets
+ */
+$fieldset-header-font-size: $font-size !default;
+$fieldset-header-font-weight: bold !default;
+$fieldset-header-font-family: $font-family !default;
+$fieldset-header-font: $fieldset-header-font-size $fieldset-header-font-weight $fieldset-header-font-family !default;
+$fieldset-header-color: color-by-background($panel-frame-background-color, 50%) !default;
+
+$fieldset-border-width: 1px !default;
+$fieldset-border-style: solid !default;
+$fieldset-border-color: $form-field-border-color !default;
+$fieldset-border: $fieldset-border-width $fieldset-border-style $fieldset-border-color !default;
+
+$fieldset-padding: 10px !default;
+$fieldset-header-padding: 0 3px !default;
+
+/**
+ * Sliders
+ */
+$horizontal-slider-thumb-width: 14px !default;
+$horizontal-slider-thumb-height: 15px !default;
+
+$vertical-slider-thumb-width: 15px !default;
+$vertical-slider-thumb-height: 14px !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_grid.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_grid.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_grid.scss	(revision 18277)
@@ -0,0 +1,117 @@
+// ===============================
+// ========= GRID BASE ===========
+// ===============================
+$grid-base-color: $neutral-color !default;
+$grid-base-content-color: $content-color !default;
+
+// ===============================
+// ========= GRID HEADER =========
+// ===============================
+$grid-header-background-color: $content-color;
+$grid-header-background-gradient: flat !default;
+$grid-header-border-color: #EAEAEA !default;
+$grid-header-over-background-color: $mixed-color !default;
+$grid-header-over-border-color: darken($grid-header-over-background-color, 20%) !default;
+$grid-header-over-background-gradient: $grid-header-background-gradient !default;
+$grid-header-padding: 4px 6px !default;
+$grid-header-trigger-height: 22px !default; // Deprecated
+$grid-header-trigger-width: 14px !default; // Deprecated
+$grid-header-color: #606060 !default;//color-by-background($grid-header-background-color) !default;
+
+// ===============================
+// ========= GRID ROWS ===========
+// ===============================
+$grid-row-height: 24px !default;
+$grid-row-cell-color: null !default;
+$grid-row-cell-font: normal $font-size-small $font-family !default;
+$grid-row-padding: 0 1px 0 2px !default;
+
+$grid-row-cell-font-size: ceil($font-size * .9) !default;
+$grid-row-cell-line-height: $grid-row-cell-font-size + 4 !default;
+$grid-row-cell-font: normal #{$grid-row-cell-font-size}/#{$grid-row-cell-line-height} $font-family !default;
+$grid-row-padding: 0 1px !default;
+
+//row wrap
+$grid-row-wrap-border-color: darken($grid-base-content-color, 5%) !default;
+$grid-row-wrap-border-width: 0 !default;
+$grid-row-wrap-border-style: solid !default;
+
+//row body
+$grid-row-body-font: normal $font-size-small $font-family !default;
+$grid-row-body-padding: 4px !default;
+
+//row cell
+$grid-row-cell-background: $grid-base-content-color !default;
+$grid-row-cell-border-color: $grid-row-wrap-border-color !default;
+$grid-row-cell-border-style: solid !default;
+$grid-row-cell-border-width: 0 !default;
+
+//row cell alt
+$grid-row-cell-alt-background: $neutral-light-color !default; //$mixed-color !default;
+
+//row cell over
+$grid-row-cell-over-background-color: $base-light-color !default;//lighten($base-color, 20%) !default;
+$grid-row-cell-over-border-color: transparent !default; // Deprecated
+$grid-row-cell-over-background-gradient: $base-gradient !default;
+$grid-row-cell-over-color: color-by-background(darken($grid-row-cell-over-background-color, 20%), 80%);
+
+//row cell selected
+$grid-row-cell-selected-border-style: solid !default; // Deprecated
+$grid-row-cell-selected-background-color: $base-dark-color !default; //lighten($base-color, 15%) !default;
+$grid-row-cell-selected-border-color: lighten($base-color, 5%) !default;
+$grid-row-cell-selected-color: color-by-background($base-color, 80%);
+
+//row cell focus
+$grid-row-cell-focus-border-color: adjust-color($neutral-color, $hue: 0deg, $saturation: 0%, $lightness: -6.667%) !default;
+$grid-row-cell-focus-background-color: adjust-color($neutral-color, $hue: 0deg, $saturation: 0%, $lightness: 0.392%) !default;
+/*$grid-row-cell-focus-background-gradient: 'grid-row-over' !default;*/
+$grid-row-special-background-gradient: $base-gradient !default;
+
+//standard cells
+$grid-cell-font: normal $font-size-small $ui-font-family !default;
+$grid-cell-inner-padding: 6px 8px !default;
+
+$grid-cell-inner-padding-top: 2px !default;
+$grid-cell-inner-padding-horizontal: 6px !default;
+$grid-cell-inner-padding-bottom: 3px !default;
+
+//special cell
+$grid-cell-special-over-background-color: $grid-row-cell-over-border-color !default;
+/*$grid-cell-special-background-gradient: 'grid-cell-special';*/
+$grid-row-cell-special-background-gradient: $base-gradient;
+
+//cell with col lines
+$grid-cell-with-col-lines-border-color: #E0E3E6 !default;// adjust-color($base-color, $hue: 0deg, $saturation: -55.556%, $lightness: -2.549%) !default;
+
+// ===============================
+// ======== GROUPED GRID =========
+// ===============================
+$grid-grouped-header-background-color: $neutral-color !default;
+$grid-grouped-header-padding: 6px 0 0 0;
+
+$grid-grouped-title-color: color-by-background($grid-grouped-header-background-color);
+$grid-grouped-title-font: bold $font-size $font-family;
+$grid-grouped-title-padding: 5px 5px 5px 17px;
+
+// ===============================
+// ========= EDITOR ==========
+// ===============================
+$grid-editor-line-height: $grid-row-height - 5 !default;
+$grid-editor-font: normal #{$grid-row-cell-font-size}/#{$grid-editor-line-height} $font-family !default;
+
+// ===============================
+// ========= ROW EDITOR ==========
+// ===============================
+$grid-row-editor-background-color: adjust-color($base-color, $hue: 1deg, $saturation: 11%, $lightness: 11%) !default;
+$grid-row-editor-border-color: $panel-border-color !default;
+$grid-row-editor-border-width: 1px !default;
+$grid-row-editor-border: $grid-row-editor-border-width solid $grid-row-editor-border-color !important;
+
+$grid-row-editor-field-padding-horizontal: 2px !default;
+$grid-row-editor-checkbox-padding-top: 2px !default;
+
+// ===============================
+// ========= CELL EDITOR =========
+// ===============================
+$grid-cell-editor-field-padding-horizontal: 4px !default;
+$grid-cell-editor-checkbox-padding-top: 3px !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_htmleditor.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_htmleditor.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_htmleditor.scss	(revision 18277)
@@ -0,0 +1,2 @@
+$html-editor-border-color: $form-field-border-color !default;
+$html-editor-background-color: $form-field-background-color !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_loadmask.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_loadmask.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_loadmask.scss	(revision 18277)
@@ -0,0 +1,12 @@
+$mask-opacity: 0.9 !default;
+$mask-background: $content-color !default;
+
+$loadmask-font-size: $font-size-small !default;
+$loadmask-base-color: $content-color !default;
+
+$loadmask-msg-padding: 2px !default;
+// $loadmask-msg-border-color: $stroke-color !default;
+$loadmask-msg-background-gradient: $base-gradient !default;
+
+$loadmask-msg-inner-padding: 5px 10px 5px 25px !default;
+$loadmask-msg-inner-icon: 'grid/loading.gif' !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_menu.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_menu.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_menu.scss	(revision 18277)
@@ -0,0 +1,20 @@
+$menu-background-color: #fff !default;//color-offset($neutral-color, 10%) !default;
+$menu-item-active-background-image: 'menu/menu-item-active-bg.gif';
+$menu-item-active-background-color: $base-light-color !default; //color-offset($base-color, 15%) !default;
+$menu-item-active-color: null;
+
+$menu-item-active-border-color: transparent !default;
+$menu-separator-border-color: transparent !default;
+$menu-separator-background-color: transparent !default;
+
+$menu-item-indent: 0 !default;
+$menu-padding: 0 !default;
+$menu-link-padding: 3px 30px 3px 8px !default;
+
+$menu-text-color: $base-dark-color !default; //color-by-background($menu-background-color, 80%) !default;
+
+//icons
+$menu-icon-arrow: 'menu/menu-parent.gif';
+$menu-icon-checked: 'menu/checked.gif';
+$menu-icon-group-checked: 'menu/group-checked.gif';
+$menu-icon-unchecked: 'menu/unchecked.gif';
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_panel.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_panel.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_panel.scss	(revision 18277)
@@ -0,0 +1,63 @@
+$include-panel-uis: $include-default-uis !default;
+$include-panel-highlights: $include-highlights !default;
+
+$panel-border-radius: 0 !default;
+$panel-border-width: 0 !default;
+$panel-base-color: $base-color !default;
+$panel-border-color: $base-color !default;
+$panel-background-color: #D7DDE2 !default;
+
+// ===============================
+// ========= PANEL BODY ==========
+// ===============================
+$panel-body-border-style: solid !default;
+$panel-body-background-color: $content-color !default;
+$panel-body-color: #333 !default;
+$panel-body-border-width: $panel-border-width !default;
+$panel-body-border-color: $stroke-color !default;
+$panel-body-radius: 0 !default;
+
+// ===============================
+// ======== PANEL TOOLS ==========
+// ===============================
+$tool-size: 16px !default;
+$accordion-tool-size: 12px !default;
+
+// ===============================
+// ======== PANEL HEADER =========
+// ===============================
+$panel-header-border-width: $panel-border-width !default;
+$panel-header-border-style: solid !default;
+$panel-header-inner-border: $include-highlights !default;
+$panel-header-inner-border-width: 1px 0 0 !default;
+
+//padding
+$panel-header-padding: 8px 10px 8px 10px !default;
+
+//fonts
+$panel-header-font-size: $font-size-large !default;
+$panel-header-font-weight: normal !default;
+$panel-header-font-family: $font-family !default;
+
+//background
+$panel-header-background-gradient: $base-gradient !default;
+
+// UI defaults
+$panel-header-border-color: $stroke-color !default;
+$panel-header-background-color: $panel-base-color !default;
+$panel-header-inner-border-color: $clear !default;
+$panel-header-color: color-by-background($panel-base-color) !default;
+
+// Framed
+$frame-base-color: $panel-base-color !default;
+
+$panel-frame-border-radius: 4px !default;
+$panel-frame-border-width: $panel-border-width !default;
+$panel-frame-border-style: solid !default;
+$panel-frame-padding: 4px !default;
+
+// UI defaults
+$panel-frame-body-background-color: $panel-body-background-color !default;
+$panel-frame-body-color: color-by-background($panel-frame-body-background-color) !default;
+$panel-frame-background-color: rgba(255,255,255,0) !default;
+$panel-frame-border-color: $stroke-color !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_pickers.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_pickers.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_pickers.scss	(revision 18277)
@@ -0,0 +1,66 @@
+// color picker
+$colorpicker-item-border-color: #aca899 !default;
+$colorpicker-over-border-color: #8bb8f3 !default;
+$colorpicker-over-background-color: #deecfd !default;
+
+// date picker
+$datepicker-base-color: $base-color !default;
+
+$datepicker-border-color: #DDDDDC !default; //#1b376c
+$datepicker-border-width: 1px !default;
+$datepicker-border-style: solid !default;
+$datepicker-border: $datepicker-border-width $datepicker-border-style $datepicker-border-color !default;
+$datepicker-background-color: #ffffff !default;
+
+$datepicker-next-image: 'shared/right-btn.gif' !default; // deprecated
+$datepicker-prev-image: 'shared/left-btn.gif' !default; // deprecated
+$datepicker-month-arrow-image: 'button/s-arrow-light.gif' !default;
+$datepicker-tool-sprite-image: 'tools/tool-sprites.gif' !default;
+
+$datepicker-header-background-color: #D7DDE3 default; //#23427c
+$datepicker-header-background-gradient: $base-gradient !default;
+
+$datepicker-monthpicker-color: #fff !default;
+
+$datepicker-th-color: adjust-color($datepicker-base-color, $hue: 5.586deg, $saturation: -4.167%, $lightness: -55.882%) !default; //#233d6d
+$datepicker-th-font-family: $font-family !default;
+$datepicker-th-font-size: 10px !default;
+$datepicker-th-font-weight: normal !default;
+$datepicker-th-font: $datepicker-th-font-weight $datepicker-th-font-size $font-family !default;
+$datepicker-th-background-color: adjust-color($datepicker-base-color, $hue: -1.19deg, $saturation: 22.222%, $lightness: 8.824%) !default; //#dfecfb
+$datepicker-th-background-gradient: $base-gradient !default;
+$datepicker-th-border-bottom-color: darken($datepicker-th-background-color, 10) !default;
+$datepicker-th-text-align: right !default;
+
+$datepicker-td-height: 19px !default;
+
+//item
+$datepicker-item-color: #666567 !default;
+$datepicker-item-border-width: 1px !default;
+$datepicker-item-border-style: solid !default;
+$datepicker-item-border-color: #fff !default;
+$datepicker-item-border: $datepicker-item-border-width $datepicker-item-border-style $datepicker-item-border-color !default;
+
+$datepicker-item-hover-background-color: adjust-color($datepicker-base-color, $hue: -0.606deg, $saturation: 38.73%, $lightness: 9.02%) !default; //#ddecfe
+
+$datepicker-today-item-border-color: darkred !default;
+
+$datepicker-selected-item-border-width: 1px !default;
+$datepicker-selected-item-border-style: solid !default;
+$datepicker-selected-item-border-color: adjust-color($datepicker-base-color, $hue: 0.853deg, $saturation: 5.008%, $lightness: -11.961%) !default; //#8db2e3
+$datepicker-selected-item-border: $datepicker-selected-item-border-width $datepicker-selected-item-border-style $datepicker-selected-item-border-color !default;
+$datepicker-selected-item-background-color: adjust-color($datepicker-base-color, $hue: 0.267deg, $saturation: -4.535%, $lightness: 6.275%) !default;
+
+$datepicker-footer-background-color: $datepicker-th-background-color !default;
+$datepicker-footer-background-gradient: $base-gradient !default;
+$datepicker-footer-border-top-color: $datepicker-th-border-bottom-color !default; //a3bad9
+
+$datepicker-monthpicker-height: 167px !default;
+
+$datepicker-monthpicker-item-color: adjust-color($datepicker-base-color, $hue: 3.785deg, $saturation: 18.194%, $lightness: -52.745%) !default; //#15428B
+$datepicker-monthpicker-item-border: $datepicker-item-border !default;
+
+$datepicker-monthpicker-item-hover-background-color: $datepicker-item-hover-background-color !default;
+
+$datepicker-monthpicker-item-selected-background-color: $datepicker-footer-background-color !default;
+$datepicker-monthpicker-item-selected-border: $datepicker-selected-item-border !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_progress-bar.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_progress-bar.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_progress-bar.scss	(revision 18277)
@@ -0,0 +1,21 @@
+$progress-bar-base-color: $base-color !default;
+
+$progress-height: 20px !default;
+
+//borders
+$progress-border-color: adjust-color($progress-bar-base-color, $hue: 0deg, $saturation: -3.08%, $lightness: -23.725%) !default;
+$progress-border-width: 1px !default;
+$progress-border-radius: 0 !default;
+
+//backgrounds
+$progress-background-color: adjust-color($progress-bar-base-color, $hue: 0deg, $saturation: -11.37%, $lightness: 7.451%) !default;
+
+//bar
+$progress-bar-background-color: adjust-color($progress-bar-base-color, $hue: 0deg, $saturation: 8.187%, $lightness: -17.647%) !default;
+
+//text
+$progress-text-color-front: #fff !default;
+$progress-text-color-back: adjust-color($progress-bar-base-color, $hue: 0deg, $saturation: -10.895%, $lightness: -43.725%) !default;
+$progress-text-text-align: center !default;
+$progress-text-font-size: ceil($font-size * .9) !default;
+$progress-text-font-weight: bold !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_qtip.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_qtip.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_qtip.scss	(revision 18277)
@@ -0,0 +1,30 @@
+$tip-base-color: color-offset($base-color, 45%) !default;
+$include-tip-highlights: $include-highlights !default;
+
+//background
+$tip-background-color: #fff !default;
+$tip-background-gradient: null !default;
+
+//text
+$tip-body-color: color-by-background($tip-base-color, $contrast: 40%) !default;
+$tip-body-font-size: $font-size-small !default;
+$tip-body-font-weight: normal !default;
+$tip-body-padding: 3px 3px 0 !default;
+$tip-body-link-color: darken($tip-body-color, 10%) !default;
+
+$tip-header-color      : $tip-body-color !default;
+$tip-header-font-size  : $tip-body-font-size !default;
+$tip-header-font-weight: bold !default;
+$tip-header-padding    : 3px 3px 0 !default;  
+
+//borders
+$tip-border-color: #fff !default; //color-offset($tip-base-color, $mode: dark, $contrast: 20%) !default;
+$tip-border-width: 0 !default;
+$tip-border-radius: 5px !default;
+
+//error tips
+$tip-error-inner-border-color: #d87166 !default;
+$tip-error-border-color: #a1311f !default;
+$tip-error-border-radius: 5px !default;
+$tip-error-border-width: 1px !default;
+$tip-error-background-color: #fff !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_tabs.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_tabs.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_tabs.scss	(revision 18277)
@@ -0,0 +1,89 @@
+//color
+$tabbar-base-color: rgba(0,0,0,0) !default;
+$tabbar-background-gradient: null !default;
+
+//background
+$tab-base-color: rgba(0,0,0,0) !default;
+$tab-base-color-over: lighten($panel-base-color, 15%) !default;
+$tab-base-color-active: $content-color !default;
+$tab-base-color-disabled: $tab-base-color !default;
+
+$tab-background: $tab-base-color !default;
+$tab-background-active: $tab-base-color-active !default; // Deprecated, just use base
+$tab-background-disabled: $tab-base-color-disabled !default; // Deprecated
+
+$tab-color: color-by-background($panel-base-color, 80%) !default;
+$tab-color-over: color-by-background($panel-base-color, 100%) !default;
+$tab-color-active: color-by-background($tab-base-color-active, 80%) !default;
+$tab-color-disabled: rgba($tab-color, .5) !default;
+
+$tab-font-size: $font-size !default;
+$tab-font-size-over: $tab-font-size !default; // Deprecated
+$tab-font-size-active: $tab-font-size !default; // Deprecated
+$tab-font-size-disabled: $tab-font-size !default; // Deprecated
+
+$tab-font-family: $font-family !default;
+$tab-font-family-over: $tab-font-family !default; // Deprecated
+$tab-font-family-active: $tab-font-family !default; // Deprecated
+$tab-font-family-disabled: $tab-font-family !default; // Deprecated
+
+$tab-font-weight: bold !default;
+$tab-font-weight-over: $tab-font-weight !default;
+$tab-font-weight-active: $tab-font-weight !default;
+$tab-font-weight-disabled: $tab-font-weight !default;
+
+$tab-background-gradient: flat !default;
+$tab-background-gradient-over: $tab-background-gradient !default; // Deprecated
+$tab-background-gradient-active: $tab-background-gradient !default; // Deprecated
+$tab-background-gradient-disabled: $tab-background-gradient !default; // Deprecated
+
+//borders
+$tab-inner-border: false !default;
+
+$tab-top-border-radius: 3px 3px 0 0 !default;
+$tab-top-border-width: 0 !default;
+$tab-top-inner-border-width: 1px 1px 0 !default;
+
+$tab-bottom-border-radius: 0 0 3px 3px !default;
+$tab-bottom-border-width: 0 1px 1px 1px !default;
+$tab-bottom-inner-border-width: 0 1px 1px 1px !default;
+
+$tab-border-color: $stroke-color !default;
+$tab-border-color-over: $tab-border-color !default; // Deprecated
+$tab-border-color-active: $tab-border-color !default; // Deprecated
+$tab-border-color-disabled: $tab-border-color !default; // Deprecated
+
+$tab-inner-border-color: lighten($tab-background, 7%) !default;
+
+$tabbar-border-color: $stroke-color !default;
+
+//size
+$tab-height: ceil($font-size-large * 2) !default;
+$tab-spacing: 1px !default;
+$tab-icon-size: 16px !default;
+
+//tab bar body border and padding
+$tabbar-top-body-border-width: 0 !default;
+$tabbar-top-body-padding: 5px 0 0 !default;
+$tabbar-top-plain-body-border-width: 0 !default;
+$tabbar-top-plain-body-padding: 0 !default;
+$tabbar-bottom-body-border-width: 0 !default;
+$tabbar-bottom-body-padding: 0 !default;
+$tabbar-bottom-plain-body-border-width: 0 !default;
+$tabbar-bottom-plain-body-padding: 0 !default;
+
+//closable tab
+$tab-closable-icon: 'tab/tab-default-close.gif' !default;
+$tab-closable-icon-width: 11px !default;
+$tab-closable-icon-height: 11px !default;
+$tab-closable-icon-top: 2px !default;
+$tab-closable-icon-right: 2px !default;
+$nbr-tab-closable-icon-top: 0px !default;
+$nbr-tab-closable-icon-right: 0px !default;
+
+//tab bar strip
+$tabbar-strip-height: 3px !default;
+$tabbar-strip-border-color: $stroke-color !default;
+$tabbar-strip-background-color: mix($tab-base-color, $base-color, 70) !default;
+$tabbar-top-strip-border-width: 1px 1px 0 !default;
+$tabbar-bottom-strip-border-width: 0 1px 1px !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_toolbar.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_toolbar.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_toolbar.scss	(revision 18277)
@@ -0,0 +1,27 @@
+$include-toolbar-uis: $include-default-uis !default;
+
+$toolbar-font-size: $font-size-small !default;
+
+$toolbar-background-color: $content-color;
+
+$toolbar-background-gradient: flat !default;
+$toolbar-inner-border-width: 0px !default;
+$toolbar-inner-border-color: lighten($toolbar-background-color, 10%) !default;
+
+$toolbar-horizontal-spacing: 5px;
+$toolbar-vertical-spacing: 5px;
+$toolbar-footer-horizontal-spacing: 6px;
+$toolbar-footer-vertical-spacing: 2px;
+
+$toolbar-border-color: transparent !default;
+$toolbar-spacer-width: 4px !default;
+$toolbar-separator-color: darken($toolbar-background-color, 7%) !default;
+$toolbar-separator-highlight-color: lighten($toolbar-background-color, 7%) !default;
+
+//text
+$toolbar-text-font-family: $ui-font-family;
+$toolbar-text-font-size: $toolbar-font-size !default; //11px
+$toolbar-text-font-weight: normal !default;
+$toolbar-text-color: color-by-background($toolbar-background-color, 50%) !default;
+$toolbar-text-padding: 3px 4px 0 4px !default;
+$toolbar-text-line-height: 16px !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_tree.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_tree.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_tree.scss	(revision 18277)
@@ -0,0 +1,7 @@
+$tree-elbow-height: 24px !default;
+$tree-elbow-width: 20px !default; //change this to 16
+$tree-checkbox-margin-top: 4px !default;
+$tree-checkbox-margin-right: 3px !default;
+$tree-icon-margin-top: 2px !default;
+$tree-icon-margin-right: 3px !default;
+$grid-cell-treecolumn-editor-field-padding-horizontal: 1px !default;
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_window.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_window.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/variables/_window.scss	(revision 18277)
@@ -0,0 +1,20 @@
+$include-window-highlights: $include-highlights !default;
+
+$window-base-color: mix($base-color, $base-dark-color) !default; //darken($base-color, 7) !default;
+
+$window-border-radius: 4px !default;
+$window-border-width: 0 !default;
+$window-border-color: darken($window-base-color, 5%) !default;
+$window-inner-border-width: 0 !default; // Deprecated
+$window-inner-border-color: lighten($window-base-color, 5%) !default; // Deprecated
+
+// $window-body-border-width: 0 !default;
+// $window-body-border-style: solid !default;
+// $window-body-border-color: darken($window-base-color, 3%);
+$window-body-background-color: $content-color;
+$window-body-color: color-by-background($window-body-background-color, 60%) !default;
+
+// $window-header-padding: 10px 5px 0 !default;
+$window-header-font-size: $font-size-large !default; // Deprecated
+$window-header-color: color-by-background($window-base-color) !default; // Deprecated, move to mixin
+$window-header-font-weight: normal !default; // Deprecated
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_boundlist.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_boundlist.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_boundlist.scss	(revision 18277)
@@ -0,0 +1,68 @@
+@mixin extjs-boundlist {
+    .#{$prefix}boundlist {
+//        @if $boundlist-border-style {
+//            border: $boundlist-border-width $boundlist-border-style $boundlist-border-color;
+//        }
+        background: $boundlist-background-color;
+
+        .#{$prefix}toolbar {
+            border-width: 1px 0 0 0;
+        }
+    }
+
+    .#{$prefix}boundlist-item {
+        padding: $boundlist-item-padding;
+        @extend .no-select;
+        @extend .mr-white-glove;
+
+        font-size: $font-size-small;
+
+        position: relative; /*allow hover in IE on empty items*/
+
+        @if $boundlist-item-border-style {
+            border: $boundlist-item-border-width $boundlist-item-border-style $boundlist-item-border-color;            
+        }
+
+        &:last-child {
+            @include border-bottom-radius(4px);
+        }
+    }
+
+    .#{$prefix}boundlist-item-over {
+        background: $boundlist-item-over-background-color;
+        border-color: $boundlist-item-over-border-color;
+        color: color-by-background($boundlist-item-over-background-color);
+    }
+
+    .#{$prefix}boundlist-selected {
+        background: $boundlist-item-selected-background-color;
+        border-color: $boundlist-item-selected-border-color;
+        color: color-by-background($boundlist-item-selected-background-color);
+    }
+
+    .#{$prefix}boundlist-selected.#{$prefix}boundlist-item-over {
+        background: lighten($boundlist-item-selected-background-color, 5%);
+    }
+
+    .#{$prefix}boundlist-floating {
+        border-top-width: 0;
+
+        @include border-bottom-radius(4px);
+    }
+
+    .#{$prefix}boundlist-above {
+        border-top-width: 1px;
+        border-bottom-width: 0;
+
+        @include border-top-radius(4px);
+        @include border-bottom-radius(0);
+
+        &:first-child {
+            @include border-top-radius(4px);
+        }
+
+        &:last-child {
+            @include border-bottom-radius(4px);
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_btn-group.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_btn-group.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_btn-group.scss	(revision 18277)
@@ -0,0 +1,91 @@
+@mixin extjs-btn-group {
+    .#{$prefix}btn-group {
+        position: relative;
+        overflow: hidden;
+    }
+
+    .x-btn-group-header-body {
+        padding-bottom: 5px;
+    }
+
+    .#{$prefix}btn-group-body {
+        position: relative;
+//        padding-right: $btn-group-padding;
+        // @tag ie6hack
+
+        .x-table-layout-cell  {
+            padding-right: $btn-group-padding;
+        }
+
+        .#{$prefix}table-layout-cell {
+            vertical-align: top;
+        }
+    }
+
+    .#{$prefix}btn-group-header-text {
+        @extend .overflow-ellipsis;
+    }
+
+    @include extjs-btn-group-ui('default');
+}
+
+/**
+ * @mixin extjs-btn-group-ui
+ * @class Ext.ButtonGroup
+ */
+@mixin extjs-btn-group-ui(
+    $ui-label,
+    $ui-base-color: null,
+
+    // background
+    $ui-background-color: $btn-group-background-color,
+
+    // borders
+    $ui-border-color: $btn-group-border-color,
+    $ui-border-width: $btn-group-border-width,
+    $ui-border-radius: $btn-group-border-radius,
+    $ui-inner-border-color: $btn-group-inner-border-color,
+
+    //header
+    $ui-header-background-color: $btn-group-header-background-color,
+    $ui-header-font: $btn-group-header-font,
+    $ui-header-color: $btn-group-header-color
+){
+//    @include x-frame(
+//        'btn-group',
+//        $ui: '#{$ui-label}-framed',
+
+//        /* Radius, width, padding and background-color */
+//        $border-radius: $ui-border-radius,
+//        $border-width: $ui-border-width,
+//        $padding: $btn-group-padding,
+//        $background-color: $ui-background-color
+//    );
+
+    .#{$prefix}btn-group-#{$ui-label}-framed {
+        border-style: solid;
+        border-width: $ui-border-width;
+        border-color: $ui-border-color;
+//        @include inner-border(
+//            $width: $btn-group-inner-border-width,
+//            $color: $ui-inner-border-color
+//        );
+    }
+
+    .#{$prefix}btn-group-header-#{$ui-label}-framed {
+//        margin: $btn-group-header-margin;
+    }
+
+    .#{$prefix}btn-group-header-body-#{$ui-label}-framed {
+//        padding: $btn-group-header-padding;
+
+        background: $ui-header-background-color;
+
+        @include border-top-radius($ui-border-radius);
+    }
+
+    .#{$prefix}btn-group-header-text-#{$ui-label}-framed {
+        font: $ui-header-font;
+        color: $ui-header-color;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_button.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_button.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_button.scss	(revision 18277)
@@ -0,0 +1,927 @@
+/**
+  * @class Ext.Button
+  * Used to create the base structure of an Ext.Button
+  */
+@mixin extjs-button {
+    // default button pictos icons
+    @if $include-default-button-icons {
+        @include extjs-button-icon('forbidden', 'd');
+        @include extjs-button-icon('people', 'g');
+        @include extjs-button-icon('information', 'i');
+        @include extjs-button-icon('link', 'j');
+        @include extjs-button-icon('love', 'k');
+        @include extjs-button-icon('list', 'l', $top: 1px);
+        @include extjs-button-icon('music', 'm');
+//        @include extjs-button-icon('folder', 'o');
+        @include extjs-button-icon('edit2', 'p');
+        @include extjs-button-icon('chat2', 'q');
+        @include extjs-button-icon('retweet', 'r');
+        @include extjs-button-icon('search', 's');
+        @include extjs-button-icon('time', 't');
+        @include extjs-button-icon('photo', 'v');
+        @include extjs-button-icon('chat', 'w');
+        @include extjs-button-icon('settings', 'x');
+        @include extjs-button-icon('settings2', 'y');
+        @include extjs-button-icon('bookmark', 'z');
+        @include extjs-button-icon('link2', 'A');
+        @include extjs-button-icon('tweet', 'B');
+        @include extjs-button-icon('cloud', 'C');
+        @include extjs-button-icon('close', 'D');
+//        @include extjs-button-icon('file', 'F');
+        @include extjs-button-icon('home', 'H');
+        @include extjs-button-icon('key', 'K');
+        @include extjs-button-icon('mail', 'M');
+        @include extjs-button-icon('paste', 'N');
+        @include extjs-button-icon('power', 'Q');
+        @include extjs-button-icon('open', 'R');
+        @include extjs-button-icon('star', 'S');
+        @include extjs-button-icon('person', 'U');
+        @include extjs-button-icon('video', 'V');
+        @include extjs-button-icon('edit', 'W');
+        @include extjs-button-icon('charts', 'Z');
+        @include extjs-button-icon('expand', '`');
+        @include extjs-button-icon('refresh', '1');
+        @include extjs-button-icon('tick', '2');
+        @include extjs-button-icon('tick2', '3');
+        @include extjs-button-icon('play', '4');
+        @include extjs-button-icon('pause', '5');
+        @include extjs-button-icon('stop', '6');
+        @include extjs-button-icon('forward', '7');
+        @include extjs-button-icon('rewind', '8');
+        @include extjs-button-icon('play2', '9');
+        @include extjs-button-icon('refresh2', '0');
+        @include extjs-button-icon('minus', '-');
+        @include extjs-button-icon('power', '-');
+        @include extjs-button-icon('left', '[');
+        @include extjs-button-icon('right', ']');
+        @include extjs-button-icon('date', '\\');
+        @include extjs-button-icon('shuffle', ';');
+        @include extjs-button-icon('wifi', '\'');
+        @include extjs-button-icon('speed', ',');
+        @include extjs-button-icon('more', '.');
+        @include extjs-button-icon('print', '/');
+        @include extjs-button-icon('warning', '!');
+        @include extjs-button-icon('location', '@');
+        @include extjs-button-icon('trash', '#');
+        @include extjs-button-icon('cart', '$');
+        @include extjs-button-icon('flag', '^');
+        @include extjs-button-icon('add', '&');
+        @include extjs-button-icon('close', '*');
+        @include extjs-button-icon('lock', '(');
+        @include extjs-button-icon('unlock', ')');
+        @include extjs-button-icon('remove', '_');
+        @include extjs-button-icon('add2', '+');
+        @include extjs-button-icon('up', '{');
+        @include extjs-button-icon('down', '}');
+        @include extjs-button-icon('bell', ':');
+        @include extjs-button-icon('quote', '"');
+        @include extjs-button-icon('novolume', '<');
+        @include extjs-button-icon('volume', '>');
+        @include extjs-button-icon('question', '?');
+    }
+
+    .#{$prefix}btn {
+        display: inline-block;
+        // @tag ie6hack
+        *display: inline;
+        position: relative;
+        vertical-align: middle;
+        background-repeat: no-repeat;
+        @extend .mr-white-glove;
+
+        // icons
+        // @todo hacking
+        &.small {
+            .x-btn-icon:after {
+                font-size: 16px;
+            }
+        }
+
+        &.medium {
+            .x-btn-icon:before,
+            .x-btn-icon:after {
+                font-size: 24px;
+            }
+        }
+
+        &.large {
+            .x-btn-icon:before,
+            .x-btn-icon:after {
+                font-size: 30px;
+            }
+        }
+
+        em {
+            background-repeat: no-repeat;
+
+            // Styles for an anchor button.
+            a {
+                text-decoration: none;
+                display: inline-block;
+                color: inherit;
+            }
+        }
+
+        button {
+            margin: 0;
+            padding: 0;
+            border: 0;
+            width: auto;
+            background: none;
+            @extend .outline-none;
+            overflow: hidden;
+            vertical-align: bottom;
+            -webkit-appearance: none;
+
+            &::-moz-focus-inner {
+                border: 0;
+                padding: 0;
+            }
+        }
+
+        .#{$prefix}btn-inner {
+            display: block;
+            white-space: nowrap;
+            background-color: transparent;
+            background-repeat: no-repeat;
+            background-position: left center;
+            @include transition(color);
+        }
+
+        .#{$prefix}btn-left .#{$prefix}btn-inner {
+            text-align: left;
+        }
+
+        .#{$prefix}btn-center .#{$prefix}btn-inner {
+            text-align: center;
+        }
+
+        .#{$prefix}btn-right .#{$prefix}btn-inner {
+            text-align: right;
+        }
+    }
+
+    .#{$prefix}btn-disabled {
+        @include opacity(1);
+    }
+
+    .#{$prefix}btn-disabled span {
+        @include opacity(.5);
+
+        .#{$prefix}ie6 &,
+        .#{$prefix}ie7 & {
+            filter: none;
+        }
+    }
+
+    //remove the opacity rule of IE8
+    .#{$prefix}ie7 .#{$prefix}btn-disabled,
+    .#{$prefix}ie8 .#{$prefix}btn-disabled {
+        filter: none;
+    }
+
+    .#{$prefix}ie6 .#{$prefix}btn-disabled,
+    .#{$prefix}ie7 .#{$prefix}btn-disabled,
+    .#{$prefix}ie8 .#{$prefix}btn-disabled {
+        .#{$prefix}btn-icon {
+            @include opacity(.6);
+        }
+    }
+
+    @if $include-ie {
+        * html .#{$prefix}ie {
+            .#{$prefix}btn button {
+                width: 1px;
+            }
+        }
+
+        .#{$prefix}ie .#{$prefix}btn button {
+            overflow-x: visible; /*prevents extra horiz space in IE*/
+            vertical-align: baseline; /*IE doesn't like bottom*/
+        }
+
+        .#{$prefix}strict .#{$prefix}ie6,
+        .#{$prefix}strict .#{$prefix}ie7 {
+            .#{$prefix}btn .#{$prefix}frame-mc {
+                height: 100%;
+            }
+        }
+    }
+
+    @if not $supports-border-radius or $compile-all {
+        .#{$prefix}nbr {
+            .#{$prefix}btn {
+                .#{$prefix}frame-mc {
+                    vertical-align: middle;
+                    white-space: nowrap;
+                    text-align: center;
+                    cursor: pointer;
+                }
+            }
+        }
+    }
+
+    // Icon alignment
+    .#{$prefix}btn-icon-text-left .#{$prefix}btn-icon { background-position: left center; }
+    .#{$prefix}btn-icon-text-right .#{$prefix}btn-icon { background-position: right center; }
+    .#{$prefix}btn-icon-text-top .#{$prefix}btn-icon { background-position: center top; }
+    .#{$prefix}btn-icon-text-bottom .#{$prefix}btn-icon { background-position: center bottom; }
+
+    .#{$prefix}btn {
+        button, a {
+            position: relative;
+
+            .#{$prefix}btn-icon {
+                position: absolute;
+                background-repeat: no-repeat;
+            }
+        }
+    }
+
+    .#{$prefix}btn-arrow-right {
+        background: transparent no-repeat right 4px;
+        padding-right: $button-arrow-size;
+
+        .#{$prefix}btn-inner {
+            padding-right: 0 !important;
+        }
+    }
+
+    .x-btn-pressed {
+        .#{$prefix}btn-arrow-right {
+            background-position: right -17px;
+        }
+    }
+
+    .x-btn-menu-active {
+        .#{$prefix}btn-arrow-right {
+//            background-position: right -28px;
+        }
+    }
+
+    .#{$prefix}toolbar .#{$prefix}btn-arrow-right {
+        padding-right: $button-toolbar-arrow-size;
+    }
+
+    .#{$prefix}btn-arrow-bottom {
+        background: transparent no-repeat center bottom;
+        padding-bottom: $button-arrow-size;
+    }
+
+    .#{$prefix}btn-arrow {
+        background-image: theme-background-image($theme-name, 'button/arrow.png');
+        display: block;
+    }
+
+    //split buttons
+    .#{$prefix}btn-split-right,
+    .#{$prefix}btn-over .#{$prefix}btn-split-right {
+        background: transparent no-repeat right center;
+        background-image: theme-background-image($theme-name, 'button/s-arrow.png');
+        padding-right: $button-split-size !important;
+    }
+
+    .#{$prefix}btn-split-bottom,
+    .#{$prefix}btn-over .#{$prefix}btn-split-bottom {
+        background: transparent no-repeat center bottom;
+        background-image: theme-background-image($theme-name, 'button/s-arrow-b.png');
+        padding-bottom: $button-split-size;
+    }
+
+    .#{$prefix}toolbar .#{$prefix}btn-split-right {
+        background-image: theme-background-image($theme-name, 'button/s-arrow-noline.png');
+        padding-right: $button-toolbar-split-size !important;
+    }
+
+    .#{$prefix}toolbar .#{$prefix}btn-split-bottom {
+        background-image: theme-background-image($theme-name, 'button/s-arrow-b-noline.png');
+    }
+
+    .#{$prefix}btn-split {
+        display: block;
+    }
+
+    .#{$prefix}item-disabled,
+    .#{$prefix}item-disabled * {
+        cursor: default;
+    }
+
+    .#{$prefix}cycle-fixed-width .#{$prefix}btn-inner {
+        text-align: inherit;
+    }
+
+    .#{$prefix}btn-over .#{$prefix}btn-split-right { background-image: theme-background-image($theme-name, 'button/s-arrow-o.png'); }
+    .#{$prefix}btn-over .#{$prefix}btn-split-bottom { background-image: theme-background-image($theme-name, 'button/s-arrow-bo.png'); }
+
+    .#{$prefix}btn-menu-active .#{$prefix}btn-split-right,
+    .#{$prefix}btn-pressed .#{$prefix}btn-split-right { background-image: theme-background-image($theme-name, 'button/s-arrow-p.png'); }
+    .#{$prefix}btn-menu-active .#{$prefix}btn-split-bottom,
+    .#{$prefix}btn-pressed .#{$prefix}btn-split-bottom { background-image: theme-background-image($theme-name, 'button/s-arrow-bp.png'); }
+
+    @if $include-button-uis {
+        @include extjs-button-ui( 'default-small',
+            $padding: $button-small-padding,
+            $text-padding: $button-small-text-padding,
+            $icon-size: $button-small-icon-size
+        );
+
+        @include extjs-button-ui( 'default-medium',
+            $icon-size: $button-medium-icon-size
+        );
+
+        @include extjs-button-ui( 'default-large',
+            $icon-size: $button-large-icon-size
+        );
+
+        @include extjs-button-ui( 'confirm-small',
+            $background-color: $confirm-color,
+            $icon-size: $button-small-icon-size
+        );
+
+        @include extjs-button-ui( 'confirm-medium',
+            $background-color: $confirm-color,
+            $icon-size: $button-medium-icon-size
+        );
+
+        @include extjs-button-ui( 'drastic-medium',
+            $background-color: $drastic-color,
+            $icon-size: $button-medium-icon-size
+        );
+
+        @include extjs-button-ui( 'action-medium',
+            $background-color: $base-color,
+            $icon-size: $button-medium-icon-size
+        );
+
+        @if $include-toolbar-uis {
+            @include extjs-toolbar-button-ui( 'default-toolbar-small',
+                $icon-size: $button-small-icon-size,
+                $text-padding: $button-small-text-padding
+            );
+
+            @include extjs-toolbar-button-ui( 'default-toolbar-medium',
+                $icon-size: $button-medium-icon-size
+            );
+
+            @include extjs-toolbar-button-ui( 'default-toolbar-large',
+                $icon-size: $button-large-icon-size
+            );
+        }
+    }
+
+    .#{$prefix}btn-default-toolbar-small-disabled,
+    .#{$prefix}btn-default-toolbar-medium-disabled,
+    .#{$prefix}btn-default-toolbar-large-disabled {
+        border-color: transparent;
+        background-image: none;
+        background: transparent;
+    }
+}
+
+// This may move to compat file (new theme will likely have simpler defaults)
+
+@mixin extjs-toolbar-button-ui(
+    $ui,
+    $icon-size: $button-small-icon-size,
+    $text-padding: $button-text-padding
+){
+    @include extjs-button-ui(
+        $ui,
+        $color: color-by-background($button-toolbar-background-color, 50%),
+        $border-color: $button-toolbar-border-color,
+        $border-color-over: $button-toolbar-border-color-over,
+        $border-color-pressed: $button-toolbar-border-color-pressed,
+
+        $background-color: $button-toolbar-background-color,
+        $background-color-over: $button-toolbar-background-color-over,
+        $background-color-pressed: $button-toolbar-background-color-pressed,
+        $background-gradient: $button-toolbar-background-gradient,
+        $background-gradient-over: $button-toolbar-background-gradient-over,
+        $background-gradient-pressed: $button-toolbar-background-gradient-pressed,
+
+        $font-weight: $button-toolbar-font-weight,
+        $font-family: $button-toolbar-font-family,
+        $font-size: $button-toolbar-font-size
+    );
+}
+
+@mixin extjs-button-ui(
+    $ui,
+
+    $border-radius: $button-border-radius,
+    $border-width: $button-border-width,
+
+    $padding: $button-padding,
+    $text-padding: $button-text-padding,
+
+    $background-color: $button-base-color,
+    $background-color-over: color-offset($background-color, 10%),
+    $background-color-focus: $background-color-over,
+    $background-color-pressed: color-offset($background-color, 10%, dark),
+    $background-color-disabled: $background-color,
+
+    $border-color: darken($background-color, 20%),
+    $border-color-over: $border-color,
+    $border-color-focus: $border-color,
+    $border-color-pressed: $border-color,
+    $border-color-disabled: $border-color,
+
+    $background-gradient: $button-background-gradient,
+    $background-gradient-over: $button-background-gradient-over,
+    $background-gradient-focus: $button-background-gradient-over,
+    $background-gradient-pressed: $button-background-gradient-pressed,
+    $background-gradient-disabled: $button-background-gradient,
+
+    $color: color-by-background($background-color, 60%),
+    $color-over: color-by-background($background-color-over, 70%),
+    $color-focus: $color,
+    $color-pressed: color-by-background($background-color-pressed, 80%),
+    $color-disabled: $button-color-disabled,
+
+    $font-size: $button-font-size,
+    $font-size-over: $font-size,
+    $font-size-focus: $font-size,
+    $font-size-pressed: $font-size,
+    $font-size-disabled: $font-size,
+
+    $font-weight: $button-font-weight,
+    $font-weight-over: $font-weight,
+    $font-weight-focus: $font-weight,
+    $font-weight-pressed: $font-weight,
+    $font-weight-disabled: $font-weight,
+
+    $font-family: $button-font-family,
+    $font-family-over: $font-family,
+    $font-family-focus: $font-family,
+    $font-family-pressed: $font-family,
+    $font-family-disabled: $font-family,
+
+    $icon-size: $button-small-icon-size
+) {
+    .#{$prefix}btn-#{$ui} {
+        border-color: $border-color;
+    }
+
+    .#{$prefix}btn-#{$ui} .#{$prefix}btn-inner {
+        font-size: $font-size;
+        font-weight: $font-weight;
+        font-family: $font-family;
+        color: $color;
+        background-repeat: no-repeat;
+        padding: 0 $text-padding;
+        @if $include-button-highlights {
+            @include inset-by-background($background-color);
+        }
+    }
+
+    @include x-frame('btn', $ui, $border-radius, $border-width, $padding, $background-color, $background-gradient, true);
+
+    // Icons
+    @if $include-default-button-icons {
+        .x-btn-icon:after {
+            @include background-gradient($color, matte);
+        }
+
+        @if $color-over != $color {
+            .#{$prefix}btn-#{$ui}-over {
+                .x-btn-icon:after {
+                    @include background-gradient($color-over, matte);
+                }
+            }
+        }
+
+        @if $color-focus != $color {
+            .#{$prefix}btn-#{$ui}-focus {
+                .x-btn-icon:after {
+                    @include background-gradient($color-focus, matte);
+                }
+            }
+        }
+
+        @if $color-pressed != $color {
+            .#{$prefix}btn-#{$ui}-menu-active,
+            .#{$prefix}btn-#{$ui}-pressed {
+                .x-btn-icon:after {
+                    @include background-gradient($color-pressed, matte);
+                }
+            }
+        }
+    }
+
+    .#{$prefix}btn-#{$ui}-icon,
+    .#{$prefix}btn-#{$ui}-noicon {
+        button,
+        .#{$prefix}btn-inner {
+            height: $icon-size;
+            line-height: $icon-size;
+        }
+    }
+
+    //icons
+    .#{$prefix}btn-#{$ui}-icon {
+        button {
+            padding: 0;
+            width: $icon-size !important;
+            height: $icon-size;
+        }
+
+        .#{$prefix}btn-icon {
+            width: $icon-size;
+            height: $icon-size;
+            top: 0;
+            left: 0;
+            bottom: 0;
+            right: 0;
+        }
+    }
+
+    .#{$prefix}btn-#{$ui}-icon-text-left {
+        button {
+            height: $icon-size;
+        }
+        .#{$prefix}btn-inner {
+            height: $icon-size;
+            line-height: $icon-size;
+            padding-left: $icon-size + 4px;
+        }
+
+        .#{$prefix}btn-icon {
+            width: $icon-size;
+            height: auto;
+            top: 0;
+            left: 0;
+            bottom: 0;
+            right: auto;
+
+            .#{$prefix}ie6 &,
+            .#{$prefix}quirks & {
+                height: $icon-size;
+            }
+        }
+    }
+
+    .#{$prefix}btn-#{$ui}-icon-text-right {
+        button {
+            height: $icon-size;
+        }
+        .#{$prefix}btn-inner {
+            height: $icon-size;
+            line-height: $icon-size;
+            padding-right: $icon-size + 4px !important;
+        }
+
+        .#{$prefix}btn-icon {
+            width: $icon-size;
+            height: auto;
+            top: 0;
+            left: auto;
+            bottom: 0;
+            right: 0;
+
+            .#{$prefix}ie6 &,
+            .#{$prefix}quirks & {
+                height: $icon-size;
+            }
+        }
+    }
+
+    .#{$prefix}btn-#{$ui}-icon-text-top {
+        .#{$prefix}btn-inner {
+            padding-top: $icon-size + 4px;
+        }
+
+        .#{$prefix}btn-icon {
+            width: auto;
+            height: $icon-size;
+            top: 0;
+            left: 0;
+            bottom: auto;
+            right: 0;
+
+            .#{$prefix}ie6 &,
+            .#{$prefix}quirks .#{$prefix}ie & {
+                width: $icon-size;
+            }
+        }
+    }
+
+    .#{$prefix}btn-#{$ui}-icon-text-bottom {
+        .#{$prefix}btn-inner {
+            padding-bottom: $icon-size + 4px;
+        }
+
+        .#{$prefix}btn-icon {
+            width: auto;
+            height: $icon-size;
+            top: auto;
+            left: 0;
+            bottom: 0;
+            right: 0;
+
+            .#{$prefix}ie6 &,
+            .#{$prefix}quirks .#{$prefix}ie & {
+                width: $icon-size;
+            }
+        }
+    }
+
+    .#{$prefix}btn-#{$ui}-over {
+        @if $border-color-over != $border-color {
+            border-color: $border-color-over;
+        }
+        @if $background-color-over != null {
+            @include background-gradient($background-color-over, $background-gradient-over);
+        }
+
+        .#{$prefix}btn-inner {
+            @if $color-over != $color {
+                color: $color-over;
+            }
+            @if $font-weight-over != $font-weight {
+                font-weight: $font-weight-over;
+            }
+            @if $font-size-over != $font-size {
+                font-size: $font-size-over;
+            }
+            @if $font-family-over != $font-family {
+                font-family: $font-family-over;
+            }
+//            @if $include-button-highlights {
+//                @include inset-by-background($background-color-over);
+//            }
+        }
+
+        // @todo IE6ify?
+//        @if $include-button-highlights {
+//            @include box-shadow($css-shadow-background-color 0 1px 1px);
+//        }
+    }
+
+    .#{$prefix}btn-#{$ui}-focus {
+        @if $border-color-focus != $border-color {
+            border-color: $border-color-focus;
+        }
+        @if $background-color-focus != null {
+            @include background-gradient($background-color-focus, $background-gradient-focus);
+        }
+
+        .#{$prefix}btn-inner {
+            @if $color-focus != $color {
+                color: $color-focus;
+            }
+            @if $font-weight-focus != $font-weight {
+                font-weight: $font-weight-focus;
+            }
+            @if $font-size-focus != $font-size {
+                font-size: $font-size-focus;
+            }
+            @if $font-family-focus != $font-family {
+                font-family: $font-family-focus;
+            }
+        }
+    }
+
+    .#{$prefix}btn-#{$ui}-menu-active,
+    .#{$prefix}btn-#{$ui}-pressed {
+        @if $border-color-pressed != $border-color {
+            border-color: $border-color-pressed;
+        }
+        @if $include-button-highlights {
+            @include box-shadow(none);
+        }
+        @if $background-color-pressed != null {
+            @include background-gradient($background-color-pressed, $background-gradient-pressed);
+        }
+
+        .#{$prefix}btn-inner {
+            @if $color-pressed != $color {
+                color: $color-pressed;
+            }
+            @if $font-weight-pressed != $font-weight {
+                font-weight: $font-weight-pressed;
+            }
+            @if $font-size-pressed != $font-size {
+                font-size: $font-size-pressed;
+            }
+            @if $font-family-pressed != $font-family {
+                font-family: $font-family-pressed;
+            }
+            @if $include-button-highlights {
+                @include inset-by-background($background-color-pressed);
+            }
+        }
+    }
+
+    .#{$prefix}btn-#{$ui}-menu-active {
+        @include border-bottom-radius(0);
+    }
+
+//    .#{$prefix}btn-#{$ui}-menu-active {
+//        border-color: #fff;
+////        border: 0;
+//        @include border-bottom-radius(0);
+
+//        background-image: none;
+//        background: #fff;
+
+//        @include box-shadow(#CACAC9 0 0 4px);
+
+//        .#{$prefix}btn-inner {
+//            color: #010101;
+//            font-weight: bold;
+//        }
+//    }
+
+    .#{$prefix}btn-#{$ui}-disabled {
+        @if $border-color-disabled != $border-color {
+            border-color: $border-color-disabled;
+        }
+        @if $background-color-disabled != null {
+            @include background-gradient($background-color-disabled, $background-gradient-disabled);
+        }
+
+        .#{$prefix}btn-inner {
+            @if $color-disabled != $color {
+                color: $color !important;
+            }
+            @if $font-weight-disabled != $font-weight {
+                font-weight: $font-weight-disabled;
+            }
+            @if $font-size-disabled != $font-size {
+                font-size: $font-size-disabled;
+            }
+            @if $font-family-disabled != $font-family {
+                font-family: $font-family-disabled;
+            }
+        }
+    }
+
+    .#{$prefix}ie .#{$prefix}btn-#{$ui}-disabled {
+        .#{$prefix}btn-inner {
+            @if $color-disabled != $color {
+                color: darken($color-disabled, 20) !important;
+            }
+        }
+    }
+
+    .#{$prefix}ie6 .#{$prefix}btn-#{$ui}-disabled {
+        .#{$prefix}btn-inner {
+            @if $color-disabled != $color {
+                color: $color-disabled !important;
+            }
+        }
+    }
+
+    @if not $supports-border-radius or $compile-all {
+        .#{$prefix}nbr {
+            .#{$prefix}btn-#{$ui}-over {
+                .#{$prefix}frame-tl,
+                .#{$prefix}frame-bl,
+                .#{$prefix}frame-tr,
+                .#{$prefix}frame-br,
+                .#{$prefix}frame-tc,
+                .#{$prefix}frame-bc {
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-over-corners.gif');
+                }
+                .#{$prefix}frame-ml,
+                .#{$prefix}frame-mr {
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-over-sides.gif');
+                }
+                .#{$prefix}frame-mc {
+                    background-color: $background-color-over;
+                    @if $background-gradient-over != null {
+                        background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-over-bg.gif');
+                    }
+                }
+            }
+
+            .#{$prefix}btn-#{$ui}-focus {
+                .#{$prefix}frame-tl,
+                .#{$prefix}frame-bl,
+                .#{$prefix}frame-tr,
+                .#{$prefix}frame-br,
+                .#{$prefix}frame-tc,
+                .#{$prefix}frame-bc {
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-focus-corners.gif');
+                }
+                .#{$prefix}frame-ml,
+                .#{$prefix}frame-mr {
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-focus-sides.gif');
+                }
+                .#{$prefix}frame-mc {
+                    background-color: $background-color-focus;
+                    @if $background-gradient-focus != null {
+                        background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-focus-bg.gif');
+                    }
+                }
+            }
+
+            .#{$prefix}btn-#{$ui}-menu-active,
+            .#{$prefix}btn-#{$ui}-pressed {
+                .#{$prefix}frame-tl,
+                .#{$prefix}frame-bl,
+                .#{$prefix}frame-tr,
+                .#{$prefix}frame-br,
+                .#{$prefix}frame-tc,
+                .#{$prefix}frame-bc {
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-pressed-corners.gif');
+                }
+                .#{$prefix}frame-ml,
+                .#{$prefix}frame-mr {
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-pressed-sides.gif');
+                }
+                .#{$prefix}frame-mc {
+                    background-color: $background-color-pressed;
+                    @if $background-gradient-pressed != null {
+                        background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-pressed-bg.gif');
+                    }
+                }
+            }
+
+            .#{$prefix}btn-#{$ui}-disabled {
+                .#{$prefix}frame-tl,
+                .#{$prefix}frame-bl,
+                .#{$prefix}frame-tr,
+                .#{$prefix}frame-br,
+                .#{$prefix}frame-tc,
+                .#{$prefix}frame-bc {
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-disabled-corners.gif');
+                }
+                .#{$prefix}frame-ml,
+                .#{$prefix}frame-mr {
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-disabled-sides.gif');
+                }
+                .#{$prefix}frame-mc {
+                    background-color: $background-color-disabled;
+                    @if $background-gradient-disabled != null {
+                        background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-disabled-bg.gif');
+                    }
+                }
+            }
+        }
+    }
+
+    @if not $supports-gradients or $compile-all {
+        @if $background-gradient != null {
+            .#{$prefix}nlg {
+                .#{$prefix}btn-#{$ui} {
+                    background-repeat: repeat-x;
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-bg.gif');
+                }
+            }
+        }
+
+        @if $background-gradient-over != null {
+            .#{$prefix}nlg {
+                .#{$prefix}btn-#{$ui}-over {
+                    background-repeat: repeat-x;
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-over-bg.gif');
+                }
+            }
+        }
+
+        @if $background-gradient-focus != null {
+            .#{$prefix}nlg {
+                .#{$prefix}btn-#{$ui}-focus {
+                    background-repeat: repeat-x;
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-focus-bg.gif');
+                }
+            }
+        }
+
+        @if $background-gradient-pressed != null {
+            .#{$prefix}nlg {
+                .#{$prefix}btn-#{$ui}-menu-active,
+                .#{$prefix}btn-#{$ui}-pressed {
+                    background-repeat: repeat-x;
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-pressed-bg.gif');
+                }
+            }
+        }
+
+        @if $background-gradient-disabled != null {
+            .#{$prefix}nlg {
+                .#{$prefix}btn-#{$ui}-disabled {
+                    background-repeat: repeat-x;
+                    background-image: theme-background-image($theme-name, 'btn/btn-#{$ui}-disabled-bg.gif');
+                }
+            }
+        }
+    }
+};
+
+@mixin extjs-button-icon($name, $key, $size: 17px, $top: null, $left: null) {
+    .#{$name} {
+        @include pictos($key, $color: #fff, $size: $size, $include-states: false, $shadow: false, $border-color: false);
+
+        &:after {
+            @if $top {
+                top: $top;
+            }
+
+            @if $left {
+                left: $left;
+            }
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_colorpicker.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_colorpicker.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_colorpicker.scss	(revision 18277)
@@ -0,0 +1,35 @@
+$colorpicker-item-size: 10px;
+
+@mixin extjs-colorpicker {
+    .#{$prefix}color-picker {
+        width: 144px;
+        height: 90px;
+        @extend .mr-white-glove;
+    }
+
+    .#{$prefix}color-picker a {
+        border: 1px solid #fff;
+        float: left;
+        padding: 2px;
+        text-decoration: none;
+        @extend .outline-none;
+    }
+
+    .#{$prefix}color-picker a:hover,
+    .#{$prefix}color-picker a.#{$prefix}color-picker-selected {
+        border-color: $colorpicker-over-border-color;
+        background-color: $colorpicker-over-background-color;
+    }
+
+    .#{$prefix}color-picker em {
+        display: block;
+        border: 1px solid $colorpicker-item-border-color;
+    }
+
+    .#{$prefix}color-picker em span {
+        display: block;
+        height: $colorpicker-item-size;
+        width: $colorpicker-item-size;
+        line-height: $colorpicker-item-size;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_datepicker.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_datepicker.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_datepicker.scss	(revision 18277)
@@ -0,0 +1,439 @@
+@mixin extjs-datepicker {
+    .#{$prefix}datepicker {
+        border: $datepicker-border;
+
+        background-color: $datepicker-background-color;
+        position: relative;
+
+        a {
+            @extend .outline-none;
+
+            color: $datepicker-monthpicker-item-color;
+            text-decoration: none;
+
+            border-width: 0;
+        }
+    }
+
+    .#{$prefix}datepicker-inner,
+    .#{$prefix}datepicker-inner td,
+    .#{$prefix}datepicker-inner th {
+        border-collapse: separate;
+    }
+
+    .#{$prefix}datepicker-header {
+        position: relative;
+
+        height: 26px;
+
+//        @if $datepicker-header-background-gradient {
+//            @include background-gradient($datepicker-header-background-color, $datepicker-header-background-gradient);
+//        } @else {
+            background-color: #D8DDE3;
+//        }
+    }
+
+    .#{$prefix}datepicker-prev,
+    .#{$prefix}datepicker-next {
+        position: absolute;
+        top: 5px;
+
+        width: 18px;
+
+        a {
+            display: block;
+
+            width: 16px;
+            height: 16px;
+
+            background-position: top;
+            background-repeat: no-repeat;
+
+            cursor: pointer;
+
+            text-decoration: none !important;
+
+            @include opacity(.7);
+
+            &:hover {
+                @include opacity(1);
+            }
+        }
+    }
+
+    .#{$prefix}datepicker-next {
+        right: 5px;
+
+        a {
+            background-image: theme-background-image($theme-name, $datepicker-next-image);
+        }
+    }
+
+    .#{$prefix}datepicker-prev {
+        left: 5px;
+
+        a {
+            background-image: theme-background-image($theme-name, $datepicker-prev-image);
+        }
+    }
+
+    .#{$prefix}item-disabled .#{$prefix}datepicker-prev a:hover,
+    .#{$prefix}item-disabled .#{$prefix}datepicker-next a:hover {
+        @include opacity(.6);
+    }
+
+    .#{$prefix}datepicker-month {
+        padding-top: 3px;
+
+        .#{$prefix}btn,
+        button,
+        .#{$prefix}btn-tc,
+        .#{$prefix}btn-tl,
+        .#{$prefix}btn-tr,
+        .#{$prefix}btn-mc,
+        .#{$prefix}btn-ml,
+        .#{$prefix}btn-mr,
+        .#{$prefix}btn-bc,
+        .#{$prefix}btn-bl,
+        .#{$prefix}btn-br {
+            background: transparent !important;
+            border-width: 0 !important;
+        }
+
+        span {
+            color: #2669B4 !important;
+            text-shadow: 0 0 0 !important;
+            font-weight: normal !important;
+        }
+
+        .#{$prefix}btn-split-right {
+            background-image: theme-background-image($theme-name, $datepicker-month-arrow-image);
+            padding-right: 12px;
+        }
+    }
+
+    .#{$prefix}datepicker-next {
+        text-align: right;
+    }
+
+    .#{$prefix}datepicker-month {
+        //width: 120px;
+        text-align: center;
+
+        button {
+            color: #2669B4 !important;
+        }
+    }
+
+
+    table.#{$prefix}datepicker-inner {
+        width: 100%;
+        table-layout: fixed;
+
+        th {
+            width: 25px;
+            height: 19px;
+
+            padding: 0;
+
+            color: $datepicker-th-color;
+            font: $datepicker-th-font;
+            font-weight: bold;
+            text-align: $datepicker-th-text-align;
+
+//            border-bottom: 1px solid $datepicker-th-border-bottom-color;
+            border-collapse: separate;
+
+            @if $datepicker-th-background-gradient {
+//                @include background-gradient($datepicker-th-background-color, $datepicker-th-background-gradient);
+            } @else {
+//                background-color: $datepicker-th-background-color;
+            }
+
+            cursor: default;
+
+            span {
+                display: block;
+                padding-right: 7px;
+            }
+        }
+
+        tr {
+            height: 20px;
+        }
+
+        td {
+//            border: $datepicker-border-width $datepicker-border-style;
+            height: $datepicker-td-height;
+//            border-color: $datepicker-background-color;
+            text-align: right;
+            padding: 0;
+        }
+
+        a {
+            padding: 3px 5px 3px 3px;
+            display: block;
+            // @tag iezoomhack
+            font: normal $font-size $font-family;
+            color: $datepicker-item-color;
+            text-decoration: none;
+            text-align: right;
+        }
+
+        .#{$prefix}datepicker-active {
+            cursor: pointer;
+            color: black;
+        }
+
+        a:hover,
+        .#{$prefix}datepicker-disabled a:hover {
+            text-decoration: none !important;
+
+            background: #F2FAFF;
+        }
+
+        .#{$prefix}datepicker-selected {
+            a {
+//                background: repeat-x left top;
+//                background-color: $datepicker-selected-item-background-color;
+//                border: 1px solid $datepicker-selected-item-border-color;
+                color: #fff;
+                background-color: #0E56B0;
+
+                @include border-radius(4px);
+            }
+        }
+
+        .#{$prefix}datepicker-today {
+            a {
+//                border: $datepicker-border-width $datepicker-border-style;
+//                border-color: $datepicker-today-item-border-color;
+                color: #28A02A;
+
+//                background-color: #0E56B0;
+
+                position: relative;
+                top: -1px;
+
+                &:hover {
+                    background: #28A02A;
+                    color: #fff;
+                    @include border-radius(4px);
+                }
+            }
+
+            &.#{$prefix}datepicker-selected a {
+                background: #28A02A;
+                color: #fff;
+                @include border-radius(4px);
+            }
+
+            span {
+                font-weight: bold;
+            }
+        }
+
+        .#{$prefix}datepicker-prevday,
+        .#{$prefix}datepicker-nextday {
+            a {
+                text-decoration: none !important;
+                color: #aaa;
+            }
+        }
+
+        .#{$prefix}datepicker-disabled a {
+            cursor: default;
+            background-color: #eee;
+            color: #bbb;
+        }
+    }
+
+    .#{$prefix}datepicker-footer,
+    .#{$prefix}monthpicker-buttons {
+        position: relative;
+
+//        border-top: $datepicker-border-width $datepicker-border-style $datepicker-footer-border-top-color;
+
+//        @if $datepicker-footer-background-gradient {
+//            @include background-gradient($datepicker-footer-background-color, $datepicker-footer-background-gradient);
+//        } @else {
+//            background-color: $datepicker-footer-background-color;
+//        }
+
+        text-align: center;
+
+        .#{$prefix}btn {
+            position: relative;
+            margin: 4px;
+        }
+    }
+
+    .#{$prefix}item-disabled .#{$prefix}datepicker-inner a:hover {
+        background: none;
+    }
+
+    // month picker
+    .#{$prefix}datepicker .#{$prefix}monthpicker {
+        position: absolute;
+        left: 0;
+        top: 0;
+    }
+
+
+    .#{$prefix}monthpicker {
+        border: $datepicker-border;
+        background-color: $datepicker-background-color;
+    }
+
+    .#{$prefix}monthpicker-months,
+    .#{$prefix}monthpicker-years {
+        float: left;
+
+        height: $datepicker-monthpicker-height;
+        width: 88px;
+    }
+
+    .#{$prefix}monthpicker-item {
+        float: left;
+
+        margin: 4px 0 5px 0;
+
+        font: normal ceil($font-size * .9) $font-family;
+        text-align: center;
+        vertical-align: middle;
+
+        height: 18px;
+        width: 43px;
+
+        border: 0 none;
+
+        a {
+            display: block;
+
+            margin: 0 5px 0 5px;
+
+            text-decoration: none;
+
+            color: $datepicker-monthpicker-item-color;
+
+            border: $datepicker-monthpicker-item-border;
+
+            line-height: 17px;
+
+            &:hover {
+                background-color: $datepicker-monthpicker-item-hover-background-color;
+            }
+
+            &.#{$prefix}monthpicker-selected {
+                background-color: $datepicker-monthpicker-item-selected-background-color;
+                border: $datepicker-monthpicker-item-selected-border;
+            }
+        }
+    }
+
+    .#{$prefix}monthpicker-months {
+        border-right: $datepicker-border;
+        width: 87px;
+    }
+
+    .#{$prefix}monthpicker-years .#{$prefix}monthpicker-item {
+        width: 44px;
+    }
+
+    .#{$prefix}monthpicker-yearnav {
+        height: 28px;
+
+        button {
+            background-image: theme-background-image($theme-name, $datepicker-tool-sprite-image);
+            height: 15px;
+            width: 15px;
+            padding: 0;
+            margin: 6px 12px 5px 15px;
+            @extend .outline-none;
+            border: 0;
+            &::-moz-focus-inner {
+                border: 0;
+                padding: 0;
+            }
+        }
+    }
+
+    .#{$prefix}monthpicker-yearnav-next {
+        background-position: 0 -120px;
+    }
+
+    .#{$prefix}monthpicker-yearnav-next-over {
+        cursor: pointer;
+        cursor: hand;
+        background-position: -15px -120px;
+    }
+
+    .#{$prefix}monthpicker-yearnav-prev {
+        background-position: 0 -105px;
+    }
+
+    .#{$prefix}monthpicker-yearnav-prev-over {
+        cursor: pointer;
+        cursor: hand;
+        background-position: -15px -105px;
+    }
+
+    .#{$prefix}monthpicker-small {
+        .#{$prefix}monthpicker-item {
+            margin: 2px 0 2px 0;
+        }
+
+        .#{$prefix}monthpicker-yearnav {
+            height: 23px;
+        }
+
+        .#{$prefix}monthpicker-months, .#{$prefix}monthpicker-years {
+            height: 136px;
+        }
+    }
+
+    @if $include-ie {
+        .#{$prefix}quirks {
+            .#{$prefix}ie7,
+            .#{$prefix}ie8 {
+                .#{$prefix}monthpicker-buttons {
+                    .#{$prefix}btn {
+                        margin-top: 2px;
+                    }
+                }
+            }
+
+            .#{$prefix}monthpicker-small .#{$prefix}monthpicker-yearnav button {
+                margin-top: 3px;
+                margin-bottom: 3px;
+            }
+        }
+
+        .#{$prefix}ie6 .#{$prefix}monthpicker-small .#{$prefix}monthpicker-yearnav button {
+            margin-top: 3px;
+            margin-bottom: 3px;
+        }
+    }
+
+    //nlg support
+    @if not $supports-gradients or $compile-all {
+        .#{$prefix}nlg {
+            @if $datepicker-header-background-gradient != null {
+                .#{$prefix}datepicker-header {
+                    background-image: theme-background-image($theme-name, 'datepicker/datepicker-header-bg.gif');
+                    background-repeat: repeat-x;
+                    background-position: top left;
+                }
+            }
+
+            @if $datepicker-footer-background-gradient != null {
+                .#{$prefix}datepicker-footer,
+                .#{$prefix}monthpicker-buttons {
+                    background-image: theme-background-image($theme-name, 'datepicker/datepicker-footer-bg.gif');
+                    background-repeat: repeat-x;
+                    background-position: top left;
+                }
+            }
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_drawcomponent.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_drawcomponent.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_drawcomponent.scss	(revision 18277)
@@ -0,0 +1,56 @@
+@mixin extjs-drawcomponent {
+    .#{$prefix}surface {
+        @include inline-block;
+        overflow: hidden;
+    }
+
+    .rvml {
+        behavior: url(#default#VML);
+    }
+
+    .#{$prefix}surface tspan {
+        @extend .no-select;
+    }
+
+    .#{$prefix}vml-sprite {
+        position: absolute;
+        left: 0;
+        top: 0;
+        width: 1px;
+        height: 1px;
+    }
+
+    .#{$prefix}vml-group {
+        position: absolute;
+        left: 0;
+        top: 0;
+        width: 1000px;
+        height: 1000px;
+    }
+
+    .#{$prefix}vml-measure-span {
+        position: absolute;
+        left: -9999em;
+        top: -9999em;
+        padding: 0;
+        margin: 0;
+        display: inline;
+    }
+
+    .#{$prefix}vml-base {
+        position: relative; 
+        top: 0;
+        left: 0;
+        overflow: hidden;
+        display: inline-block;
+    }
+
+    .#{$prefix}vml-base {
+        position: relative; 
+        top: 0;
+        left: 0;
+        overflow: hidden;
+        display: inline-block;
+    }
+}
+
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_form.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_form.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_form.scss	(revision 18277)
@@ -0,0 +1,8 @@
+@import 'form/all';
+@import 'form/field';
+@import 'form/fieldset';
+@import 'form/file';
+@import 'form/checkbox';
+@import 'form/checkboxgroup';
+@import 'form/triggerfield';
+@import 'form/htmleditor';
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_grid.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_grid.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_grid.scss	(revision 18277)
@@ -0,0 +1,906 @@
+@mixin extjs-grid {
+    //main grid view
+    .#{$prefix}panel {
+        .#{$prefix}grid-body {
+            background: $panel-body-background-color;
+//            border-color: $panel-body-border-color;
+//            border-style: $panel-body-border-style;
+//            border-width: 1px;
+//            border-top-color: $grid-header-background-color;
+
+            border-bottom: 2px solid #D7DCE0;
+        }
+
+        // Hide using visibility so that its available width can be calculated correctly
+        .#{$prefix}grid-header-ct-hidden {
+            visibility: hidden;
+        }
+    }
+
+    .#{$prefix}grid-header-hidden .#{$prefix}grid-body {
+//        border-top-color: $panel-body-border-color !important;
+    }
+
+    .#{$prefix}grid-view {
+        overflow: hidden;
+        position: relative;
+    }
+
+    .#{$prefix}grid-table {
+        table-layout: fixed;
+        border-collapse: separate;
+    }
+
+    // Tree with a default single column is auto width
+    // Override any inline width style set by the widget itself (through its ColumnModel) to force it to be auto width.
+    .#{$prefix}autowidth-table table.#{$prefix}grid-table {
+        table-layout: auto;
+        width: auto !important;
+    }
+
+    .#{$prefix}grid-row .#{$prefix}grid-table {
+        border-collapse: collapse;
+    }
+
+    .#{$prefix}grid-locked .#{$prefix}grid-inner-locked {
+        border-width: 0 1px 0 0 !important;
+        border-style: solid;
+//        border-color: $grid-cell-with-col-lines-border-color;
+    }
+
+    .#{$prefix}grid-header-ct {
+        // cursor: default;
+        // @tag iezoomhack
+        // padding: 0;
+        // border: 1px solid $panel-body-border-color;
+
+        // Body border provided by headerCt only when in accordion layout.
+        border-bottom-color: $grid-header-background-color;
+
+        @if $supports-gradients or $compile-all {
+            @include background-gradient($grid-header-background-color, $grid-header-background-gradient);
+        }
+
+//        -webkit-box-shadow: 0 3px 3px rgba(0,0,0,0.25);
+        border-bottom: 2px solid #D7DCE0 !important;
+    }
+
+    .x-panel {
+        .#{$prefix}grid-header-ct {
+            border-bottom-width: 2px;
+        }
+    }
+
+    .#{$prefix}accordion-item .#{$prefix}grid-header-ct {
+        border-width: 0 0 1px 0!important;
+    }
+
+    .#{$prefix}column-header {
+        padding: 0;
+        position: absolute;
+        overflow: hidden;
+
+        -webkit-border-image: theme-background-image($theme-name, 'grid/header-border.png') 1 1 1 1 stretch stretch;
+
+
+        border-right: 1px solid $grid-header-border-color;
+        border-left: 0 none;
+        border-top: 0 none;
+        border-bottom: 0 none;
+
+        @if $grid-header-color {
+            color: $grid-header-color;
+        } @else {
+            @include color-by-background($grid-header-background-color);
+        }
+        font: normal $font-size-small $font-family;
+
+        @if $supports-gradients or $compile-all {
+            @include background-gradient($grid-header-background-color, $grid-header-background-gradient);
+        }
+    }
+
+    .#{$prefix}group-header {
+        padding: 0;
+        border-left-width: 0;
+    }
+    .#{$prefix}group-sub-header {
+        background: transparent;
+        -webkit-border-image: none;
+        border-top: 1px solid $grid-header-border-color;
+        border-left-width: 0;
+    }
+
+    .#{$prefix}column-header-inner {
+        // @tag iezoomhack
+        position: relative;
+        white-space: nowrap;
+        line-height: 22px;
+        padding: $grid-header-padding;
+
+        .#{$prefix}column-header-text {
+            white-space: nowrap;
+        }
+    }
+
+    .#{$prefix}column-header-sortable {
+        color: $base-dark-color;
+    }
+
+    @if not $supports-gradients or $compile-all {
+        .#{$prefix}nlg {
+            .#{$prefix}grid-header-ct,
+            .#{$prefix}column-header {
+//                background: repeat-x 0 top;
+//                background-image: theme-background-image($theme-name, 'grid/column-header-bg.gif');
+            }
+
+            .#{$prefix}column-header-over,
+            .#{$prefix}column-header-sort-ASC,
+            .#{$prefix}column-header-sort-DESC {
+//                background: #ebf3fd repeat-x 0 top;
+//                background-image: theme-background-image($theme-name, 'grid/column-header-over-bg.gif');
+            }
+        }
+    }
+
+    .#{$prefix}column-header-trigger {
+        display: none;
+        height: 100%;
+        width: $grid-header-trigger-width;
+        background: no-repeat left center;
+        // @todo fix this
+//        background-color: $grid-header-background-color;
+//        @include background-gradient($grid-header-background-color);
+        // @todo ie6ify
+        // background-image: theme-background-image($theme-name, 'grid/grid3-hd-btn.gif');
+        position: absolute;
+        right: 0;
+        top: 0;
+        z-index: 2;
+        cursor: pointer;
+    }
+
+    .#{$prefix}column-header-over, .#{$prefix}column-header-open {
+        .#{$prefix}column-header-trigger {
+            display: block;
+        }
+    }
+
+    .#{$prefix}column-header-align-right {
+        text-align: right;
+
+        .#{$prefix}column-header-text {
+            padding-right: 0.5ex;
+            margin-right: 6px;
+        }
+    }
+    .#{$prefix}column-header-align-center {
+        text-align: center;
+    }
+    .#{$prefix}column-header-align-left {
+        text-align: left;
+    }
+
+    // Sort direction indicator is a background of the text span.
+    .#{$prefix}column-header-sort-ASC .#{$prefix}column-header-text {
+        padding-right: 16px;
+        background: no-repeat top right;
+        background-position-y: 1px;
+        background-image: theme-background-image($theme-name, 'grid/sort.png');
+    }
+    .#{$prefix}column-header-sort-DESC .#{$prefix}column-header-text {
+        padding-right: 16px;
+        background: no-repeat top right;
+        background-position-y: -47px;
+        background-image: theme-background-image($theme-name, 'grid/sort.png');
+    }
+
+    //grid rows
+    .#{$prefix}grid-row {
+//        line-height: 1.5em;
+        height: 24px;
+        vertical-align: top;
+
+        padding: $grid-row-padding;
+
+        @extend .no-select;
+
+        .#{$prefix}grid-cell {
+            @if $grid-row-cell-color != null {
+                color: $grid-row-cell-color;
+            } @else {
+                color: color-by-background($grid-row-cell-background);
+            }
+            font: $grid-row-cell-font;
+            background-color: $grid-row-cell-background;
+            border-color: $grid-row-cell-border-color;
+            border-style: $grid-row-cell-border-style;
+            border-width: $grid-row-cell-border-width;
+        }
+        font: $grid-row-cell-font;
+        background-color: $grid-row-cell-background;
+        border-color: $grid-row-cell-border-color;
+        border-style: $grid-row-cell-border-style;
+        border-width: 0;
+    }
+
+    .#{$prefix}grid-with-row-lines .#{$prefix}grid-cell {
+        border-width: $grid-row-cell-border-width;
+    }
+
+    .#{$prefix}grid-rowwrap-div {
+        border-width: $grid-row-wrap-border-width;
+        border-color: $grid-row-wrap-border-color;
+        border-style: $grid-row-wrap-border-style;
+        border-top-color: lighten($grid-row-wrap-border-color, 5);
+
+        overflow: hidden;
+    }
+
+    .#{$prefix}grid-row-alt .#{$prefix}grid-cell,
+    .#{$prefix}grid-row-alt .#{$prefix}grid-rowwrap-div {
+        background-color: $grid-row-cell-alt-background;
+    }
+
+    .#{$prefix}grid-row-over .#{$prefix}grid-cell,
+    .#{$prefix}grid-row-over .#{$prefix}grid-rowwrap-div {
+        border-color: $grid-row-cell-over-border-color;
+        background-color: $grid-row-cell-over-background-color;
+        color: $grid-row-cell-over-color;
+
+        .#{$prefix}grid-cell {
+            color: $grid-row-cell-over-color;
+        }
+    }
+
+    .#{$prefix}grid-row-focused .#{$prefix}grid-cell,
+    .#{$prefix}grid-row-focused .#{$prefix}grid-rowwrap-div {
+        border-color: $grid-row-cell-focus-border-color;
+        color: color-by-background($grid-row-cell-focus-background-color);
+        background-color: $grid-row-cell-focus-background-color;
+    }
+
+    .#{$prefix}grid-row-selected .#{$prefix}grid-cell,
+    .#{$prefix}grid-row-selected .#{$prefix}grid-rowwrap-div {
+        border-style: $grid-row-cell-selected-border-style;
+        border-color: $grid-row-cell-selected-border-color;
+        color: color-by-background($grid-row-cell-selected-background-color);
+        background-color: $grid-row-cell-selected-background-color !important;
+        @include inset-by-background($grid-row-cell-selected-background-color);
+    }
+
+    .#{$prefix}grid-rowwrap-div {
+        .#{$prefix}grid-cell,
+        .#{$prefix}grid-cell-inner {
+            border-width: 0;
+
+            background: transparent;
+        }
+    }
+
+    .#{$prefix}grid-row-body-hidden {
+        display: none;
+    }
+
+    .#{$prefix}grid-rowbody {
+        font: $grid-row-body-font;
+        padding: $grid-row-body-padding;
+        p {
+            margin: 5px 5px 10px 5px;
+        }
+    }
+
+    //grid cells
+    .#{$prefix}grid-cell {
+        overflow: hidden;
+        font: $grid-cell-font;
+        @extend .no-select;
+    }
+
+    .#{$prefix}grid-cell-inner {
+        @extend .overflow-ellipsis;
+        padding: $grid-cell-inner-padding;
+        // padding: $grid-cell-inner-padding-top $grid-cell-inner-padding-horizontal $grid-cell-inner-padding-bottom;
+    }
+
+    .#{$prefix}grid-with-row-lines .#{$prefix}grid-cell-inner {
+        line-height: $grid-row-cell-line-height - 2;
+        padding-bottom: $grid-cell-inner-padding-bottom + 1;
+    }
+
+    // Action columns with a standard, 16x16 icon require less padding
+    .#{$prefix}action-col-cell .#{$prefix}grid-cell-inner {
+        line-height: 0;
+        padding: 2px;
+    }
+
+    .#{$prefix}grid-with-row-lines .#{$prefix}action-col-cell .#{$prefix}grid-cell-inner {
+        padding-top: 1px;
+    }
+
+    .#{$prefix}grid-row .#{$prefix}grid-cell-special {
+        padding: 0;
+        border-right: 1px solid $grid-cell-with-col-lines-border-color;
+//        @include background-gradient($grid-row-cell-background, $grid-row-special-background-gradient);
+    }
+
+    /*
+        IE6-8 have issues with shrinking the TR to 0px (even w/line-height=0), so we
+        use an IE-specific trick to make the row disappear. We cannot do this on any
+        other browser, because it is not a non-standard thing to do and those other
+        browsers will do whacky things with it.
+    */
+
+    .#{$prefix}ie6,
+    .#{$prefix}ie7,
+    .#{$prefix}quirks .#{$prefix}ie8 {
+        .#{$prefix}grid-header-row {
+            position: absolute;
+        }
+    }
+
+    .#{$prefix}grid-row-over .#{$prefix}grid-cell-special {
+        border-right: 1px solid $grid-cell-with-col-lines-border-color;
+        @include background-gradient($grid-row-cell-over-background-color, $grid-row-special-background-gradient);
+    }
+
+    .#{$prefix}grid-row-selected .#{$prefix}grid-cell-special {
+        border-right: 1px solid adjust-color($base-color, $hue: -0.175deg, $saturation: 25.296%, $lightness: -2.549%);
+
+        @include background-gradient($grid-row-cell-selected-background-color, $grid-row-special-background-gradient);
+    }
+
+    .#{$prefix}grid-dirty-cell {
+        background-image: theme-background-image($theme-name, 'grid/dirty.gif');
+        background-position: 0 0;
+        background-repeat: no-repeat;
+    }
+
+//    .#{$prefix}grid-cell-selected {
+//        background-color: #B8CFEE !important;
+//    }
+
+    @if not $supports-gradients or $compile-all {
+        .#{$prefix}nlg {
+            .#{$prefix}grid-cell-special {
+                background-repeat: repeat-y;
+                background-position: top right;
+            }
+
+            .#{$prefix}grid-row .#{$prefix}grid-cell-special,
+            .#{$prefix}grid-row-over .#{$prefix}grid-cell-special {
+                background-image: theme-background-image($theme-name, 'grid/cell-special-bg.gif');
+
+            }
+
+            .#{$prefix}grid-row-focused .#{$prefix}grid-cell-special,
+            .#{$prefix}grid-row-selected .#{$prefix}grid-cell-special {
+                background-image: theme-background-image($theme-name, 'grid/cell-special-selected-bg.gif');
+            }
+        }
+    }
+
+    .#{$prefix}grid-with-col-lines .#{$prefix}grid-cell {
+        padding-right: 0;
+        border-right: 1px solid $grid-cell-with-col-lines-border-color;
+    }
+
+    .#{$prefix}property-grid {
+        .#{$prefix}grid-row .#{$prefix}grid-property-name .#{$prefix}grid-cell-inner,
+        .#{$prefix}grid-row-over .#{$prefix}grid-property-name .#{$prefix}grid-cell-inner {
+            padding-left: 12px;
+            background-image: theme-background-image($theme-name, 'grid/property-cell-bg.gif');
+            background-repeat: no-repeat;
+            background-position: -16px 2px;
+        }
+    }
+
+    .#{$prefix}grid-with-row-lines.#{$prefix}property-grid {
+        .#{$prefix}grid-row .#{$prefix}grid-property-name .#{$prefix}grid-cell-inner,
+        .#{$prefix}grid-row-over .#{$prefix}grid-property-name .#{$prefix}grid-cell-inner {
+            background-position: -16px 1px;
+        }
+    }
+
+    @if $include-ie {
+        .#{$prefix}quirks .#{$prefix}ie .#{$prefix}grid-row .#{$prefix}grid-property-name .#{$prefix}grid-cell-inner {
+            background-position: -16px 2px;
+        }
+    }
+
+    // @todo Where is this set?
+    .#{$prefix}unselectable {
+        @extend .no-select;
+    }
+
+    .#{$prefix}grid-row-body-hidden {
+        @extend .#{$prefix}hide-display;
+    }
+
+    .#{$prefix}grid-group-collapsed {
+        @extend .#{$prefix}hide-display;
+    }
+
+    //grid expander
+    .#{$prefix}grid-view {
+        .#{$prefix}grid-td-expander {
+            vertical-align: top;
+        }
+    }
+
+    .#{$prefix}grid-td-expander {
+        background: repeat-y right transparent;
+    }
+
+    .#{$prefix}grid-view {
+        .#{$prefix}grid-td-expander {
+            .#{$prefix}grid-cell-inner {
+                padding: 0 !important;
+            }
+        }
+    }
+
+    .#{$prefix}grid-row-expander {
+        background-image: theme-background-image($theme-name, 'grid/group-collapse.gif');
+        background-color: transparent;
+        width: 9px;
+        height: 13px;
+        margin-left: 3px;
+        background-repeat: no-repeat;
+        background-position: 0 -2px;
+    }
+
+    .#{$prefix}grid-row-collapsed {
+        .#{$prefix}grid-row-expander {
+            background-image: theme-background-image($theme-name, 'grid/group-expand.gif');
+        }
+    }
+
+    .#{$prefix}grid-resize-marker {
+        position: absolute;
+        z-index: 5;
+        top: 0;
+        width: 1px;
+        background-color: #0f0f0f;
+    }
+
+    //column move icons, when moving columns
+    .col-move-top,
+    .col-move-bottom {
+        width: 9px;
+        height: 9px;
+        position: absolute;
+        top: 0;
+        line-height: 0;
+        font-size: 0;
+        overflow: hidden;
+        z-index: 20000;
+        background: no-repeat left top transparent;
+    }
+
+    .col-move-top {
+        background-image: theme-background-image($theme-name, 'grid/col-move-top.gif');
+    }
+
+    .col-move-bottom {
+        background-image: theme-background-image($theme-name, 'grid/col-move-bottom.gif');
+    }
+
+    //pading toolbar
+    .#{$prefix}tbar-page-number {
+        width: 30px;
+    }
+
+    //grouped grid
+    .#{$prefix}grid-group,
+    .#{$prefix}grid-group-body,
+    .#{$prefix}grid-group-hd {
+        // @tag iezoomhack
+    }
+
+    .#{$prefix}grid-group-hd {
+        //padding-top: 6px;
+        height: 24px;
+
+        .#{$prefix}grid-cell-inner {
+            background: $grid-grouped-header-background-color;
+
+//            border-width: 1px solid;
+            // border-style: $grid-grouped-header-border-style;
+            // border-color: $grid-grouped-header-border-color;
+
+            cursor: pointer;
+
+            padding: 4px 8px 6px 8px;
+        }
+    }
+
+    .#{$prefix}grid-group-title {
+//        background: transparent no-repeat 0 0;
+//        background-image: theme-background-image($theme-name, 'tree/Sprite_Directory_Tree_24px_SRC.png');
+
+        color: $grid-grouped-title-color;
+        font: $grid-grouped-title-font;
+    }
+
+    .#{$prefix}grid-group-hd-collapsed {
+        .#{$prefix}grid-group-title {
+//            background-image: theme-background-image($theme-name, 'tools-small.png');
+        }
+    }
+
+    .#{$prefix}grid-group-collapsed .#{$prefix}grid-group-body {
+        display: none;
+    }
+
+    .#{$prefix}grid-group-collapsed .#{$prefix}grid-group-title {
+        background-image: theme-background-image($theme-name, 'grid/group-expand.gif');
+    }
+
+    .#{$prefix}group-by-icon {
+        background-image: theme-background-image($theme-name, 'grid/group-by.gif');
+    }
+
+    .#{$prefix}show-groups-icon {
+        background-image: theme-background-image($theme-name, 'grid/group-by.gif');
+    }
+
+    .#{$prefix}column-header-checkbox .#{$prefix}column-header-inner {
+        padding: 0;
+    }
+
+    .#{$prefix}grid-cell-special .#{$prefix}grid-cell-inner {
+        padding-left: 4px;
+        padding-right: 4px;
+    }
+
+    .#{$prefix}grid-row-checker,
+    .#{$prefix}column-header-checkbox .#{$prefix}column-header-text {
+        height: 14px;
+        width: 14px;
+        line-height: 0;
+        background-image: theme-background-image($theme-name, 'grid/unchecked.gif');
+        background-position: -1px -1px;
+        background-repeat: no-repeat;
+        background-color: transparent;
+    }
+
+    // Row checker is a div but column header checker is the text span element, so make it display: block
+    // Header checkbox element needs centering
+    .#{$prefix}column-header-checkbox .#{$prefix}column-header-text {
+        display: block;
+        margin: 4px 5px;
+    }
+
+    @if $include-ie or $compile-all {
+        /* IE6, IE7, and all IE Quirks mode need line-height to be the same as checkbox height or the header/row height will be too tall */
+        .#{$prefix}quirks .#{$prefix}ie, .#{$prefix}ie7m {
+            .#{$prefix}grid-row-checker,
+            .#{$prefix}column-header-checkbox .#{$prefix}column-header-text {
+                line-height: 14px;
+            }
+        }
+    }
+
+    .#{$prefix}grid-hd-checker-on .#{$prefix}column-header-text {
+        background-image: theme-background-image($theme-name, 'grid/checked.gif');
+    }
+
+    .#{$prefix}grid-cell-row-checker .#{$prefix}grid-cell-inner {
+        padding-top: 4px;
+        padding-bottom: 2px;
+        line-height: $grid-row-height - 6;
+    }
+    .#{$prefix}grid-with-row-lines .#{$prefix}grid-cell-row-checker .#{$prefix}grid-cell-inner {
+        padding-top: 3px;
+    }
+    .#{$prefix}grid-row-checker {
+        margin-left: 1px;
+
+        background-position: 50% -2px;
+    }
+
+    .#{$prefix}grid-row-selected .#{$prefix}grid-row-checker,
+    .#{$prefix}grid-row-checked .#{$prefix}grid-row-checker {
+        background-image: theme-background-image($theme-name, 'grid/checked.gif');
+    }
+
+    // Grid icons
+    .#{$prefix}tbar-page-first {
+        background-image: theme-background-image($theme-name, 'grid/page-first.gif') !important;
+    }
+
+    .#{$prefix}tbar-loading {
+        background-image: theme-background-image($theme-name, 'grid/refresh.gif') !important;
+    }
+
+    .#{$prefix}tbar-page-last {
+        background-image: theme-background-image($theme-name, 'grid/page-last.gif') !important;
+    }
+
+    .#{$prefix}tbar-page-next {
+        background-image: theme-background-image($theme-name, 'grid/page-next.gif') !important;
+    }
+
+    .#{$prefix}tbar-page-prev {
+        background-image: theme-background-image($theme-name, 'grid/page-prev.gif') !important;
+    }
+
+    .#{$prefix}item-disabled {
+        .#{$prefix}tbar-loading {
+            background-image: theme-background-image($theme-name, 'grid/refresh-disabled.gif') !important;
+        }
+
+        .#{$prefix}tbar-page-first {
+            background-image: theme-background-image($theme-name, 'grid/page-first-disabled.gif') !important;
+        }
+
+        .#{$prefix}tbar-page-last {
+            background-image: theme-background-image($theme-name, 'grid/page-last-disabled.gif') !important;
+        }
+
+        .#{$prefix}tbar-page-next {
+            background-image: theme-background-image($theme-name, 'grid/page-next-disabled.gif') !important;
+        }
+
+        .#{$prefix}tbar-page-prev {
+            background-image: theme-background-image($theme-name, 'grid/page-prev-disabled.gif') !important;
+        }
+    }
+
+    //menu icons
+    .#{$prefix}hmenu-sort-asc .#{$prefix}menu-item-icon {
+        background-image: theme-background-image($theme-name, 'grid/hmenu-asc.gif');
+    }
+
+    .#{$prefix}hmenu-sort-desc .#{$prefix}menu-item-icon {
+        background-image: theme-background-image($theme-name, 'grid/hmenu-desc.gif');
+    }
+
+    .#{$prefix}hmenu-lock .#{$prefix}menu-item-icon {
+        background-image: theme-background-image($theme-name, 'grid/hmenu-lock.gif');
+    }
+
+    .#{$prefix}hmenu-unlock .#{$prefix}menu-item-icon {
+        background-image: theme-background-image($theme-name, 'grid/hmenu-unlock.gif');
+    }
+
+    .#{$prefix}group-by-icon {
+        background-image: theme-background-image($theme-name, 'grid/group-by.gif');
+    }
+
+    .#{$prefix}cols-icon .#{$prefix}menu-item-icon {
+        background-image: theme-background-image($theme-name, 'grid/columns.gif');
+    }
+
+    .#{$prefix}show-groups-icon {
+        background-image: theme-background-image($theme-name, 'grid/group-by.gif');
+    }
+
+    // Drag/drop indicator styles
+    .#{$prefix}grid-drop-indicator {
+        position: absolute;
+        height: 1px;
+        line-height: 0px;
+        background-color: #77BC71;
+        overflow: visible;
+
+        .#{$prefix}grid-drop-indicator-left {
+            position: absolute;
+            top: -8px;
+            left: -12px;
+            background-image: theme-background-image($theme-name, 'grid/dd-insert-arrow-right.png');
+            height: 16px;
+            width: 16px;
+        }
+
+        .#{$prefix}grid-drop-indicator-right {
+            position: absolute;
+            top: -8px;
+            right: -11px;
+            background-image: theme-background-image($theme-name, 'grid/dd-insert-arrow-left.png');
+            height: 16px;
+            width: 16px;
+        }
+    }
+
+    .#{$prefix}ie6 {
+        .#{$prefix}grid-drop-indicator-left {
+            background-image: theme-background-image($theme-name, 'grid/dd-insert-arrow-right.gif');
+        }
+
+        .#{$prefix}grid-drop-indicator-right {
+            background-image: theme-background-image($theme-name, 'grid/dd-insert-arrow-left.gif');
+        }
+    }
+
+    // Cell Editor
+    .#{$prefix}grid-editor {
+        // Position editor text over underlying grid cell text
+        .#{$prefix}form-text {
+            padding: 0 $grid-cell-editor-field-padding-horizontal;
+        }
+        .#{$prefix}form-cb-wrap {
+            padding-top: $grid-cell-editor-checkbox-padding-top;
+        }
+    }
+
+    // Row Editor
+    .#{$prefix}grid-row-editor {
+        position: absolute !important;
+        z-index: 1;
+        // @tag iezoomhack
+        overflow: visible !important;
+
+        .#{$prefix}form-text {
+            padding: 0 $grid-row-editor-field-padding-horizontal;
+        }
+        .#{$prefix}form-cb-wrap {
+            padding-top: $grid-row-editor-checkbox-padding-top;
+        }
+        .#{$prefix}form-display-field {
+            font: $grid-editor-font;
+            padding-top: 0;
+            padding-left: $grid-row-editor-field-padding-horizontal;
+        }
+
+        .#{$prefix}panel-body {
+            background-color: $grid-row-editor-background-color;
+            border-top: $grid-row-editor-border;
+            border-bottom: $grid-row-editor-border;
+        }
+    }
+
+    // Row/Cell Editor Shared Styles
+    .#{$prefix}grid-editor, .#{$prefix}grid-row-editor {
+        // Align checkbox input
+        .#{$prefix}form-cb-wrap {
+            text-align: center;
+        }
+        .#{$prefix}form-trigger {
+            height: $grid-row-height;
+        }
+        .#{$prefix}form-trigger-wrap {
+            .#{$prefix}form-spinner-up, .#{$prefix}form-spinner-down {
+                background-image: theme-background-image($theme-name, 'form/spinner-small.gif');
+                height: 10px !important;
+            }
+        }
+    }
+    .#{$prefix}grid {
+        .#{$prefix}grid-editor, .#{$prefix}grid-row-editor {
+            .#{$prefix}form-text {
+                font: $grid-editor-font;
+                height: $grid-row-height - 2;
+            }
+        }
+    }
+    .#{$prefix}border-box .#{$prefix}grid-editor,
+    .#{$prefix}border-box .#{$prefix}grid-row-editor {
+        .#{$prefix}form-trigger {
+            height: $grid-row-height;
+        }
+        .#{$prefix}form-text {
+            height: $grid-row-height;
+            padding-bottom: 1px; // fix for firefox/opera since they ignore line-height on inputs
+        }
+    }
+
+    @if $include-ie {
+        .#{$prefix}ie {
+            .#{$prefix}grid-editor .#{$prefix}form-text {
+                padding-left: $grid-cell-editor-field-padding-horizontal + 1;
+            }
+            .#{$prefix}grid-row-editor .#{$prefix}form-text {
+                padding-left: $grid-row-editor-field-padding-horizontal + 1;
+            }
+        }
+        .#{$prefix}ie8m {
+            .#{$prefix}grid-editor .#{$prefix}form-text,
+            .#{$prefix}grid-row-editor .#{$prefix}form-text {
+                padding-top: 1px;
+            }
+        }
+        .#{$prefix}ie6,
+        .#{$prefix}strict .#{$prefix}ie7 {
+            .#{$prefix}grid-editor .#{$prefix}form-text,
+            .#{$prefix}grid-row-editor .#{$prefix}form-text {
+                height: $grid-row-height - ($form-field-border-width * 3);
+            }
+        }
+        .#{$prefix}quirks .#{$prefix}ie9 {
+            .#{$prefix}grid-editor, .#{$prefix}grid-row-editor {
+                .#{$prefix}form-text {
+                    line-height: $grid-editor-line-height + 2;
+                }
+            }
+        }
+    }
+
+    @if $include-opera {
+        .#{$prefix}opera {
+            .#{$prefix}grid-editor .#{$prefix}form-text {
+                padding-left: $grid-cell-editor-field-padding-horizontal + 1;
+            }
+            .#{$prefix}grid-row-editor .#{$prefix}form-text {
+                padding-left: $grid-row-editor-field-padding-horizontal + 1;
+            }
+        }
+    }
+
+
+    $grid-row-editor-btns-width: 200px;
+    $grid-row-editor-btns-height: 32px;
+    $grid-row-editor-btns-padding: 4px;
+
+    .#{$prefix}grid-row-editor-buttons {
+        background-color: $grid-row-editor-background-color;
+        position: absolute;
+        bottom: -31px;
+        padding: 4px;
+        height: 32px;
+
+        .#{$prefix}strict .#{$prefix}ie7m & {
+            width: $grid-row-editor-btns-width - 2 * $grid-row-editor-btns-padding;
+            height: $grid-row-editor-btns-height - 2 * $grid-row-editor-btns-padding;
+        }
+    }
+
+    .#{$prefix}grid-row-editor-buttons-ml,
+    .#{$prefix}grid-row-editor-buttons-mr,
+    .#{$prefix}grid-row-editor-buttons-bl,
+    .#{$prefix}grid-row-editor-buttons-br,
+    .#{$prefix}grid-row-editor-buttons-bc {
+        position: absolute;
+        overflow: hidden;
+    }
+
+    .#{$prefix}grid-row-editor-buttons-bl,
+    .#{$prefix}grid-row-editor-buttons-br {
+        width: 4px;
+        height: 4px;
+        bottom: 0px;
+        background-image: theme-background-image($theme-name, 'panel/panel-default-framed-corners.gif');
+    }
+    .#{$prefix}grid-row-editor-buttons-bl {
+        left: 0px;
+        background-position: 0px -16px;
+    }
+    .#{$prefix}grid-row-editor-buttons-br {
+        right: 0px;
+        background-position: 0px -20px;
+    }
+    .#{$prefix}grid-row-editor-buttons-bc {
+        position: absolute;
+        left: 4px;
+        bottom: 0px;
+        width: 192px;
+        height: 1px;
+        background-color: $grid-row-editor-border-color;
+    }
+    .#{$prefix}grid-row-editor-buttons-ml,
+    .#{$prefix}grid-row-editor-buttons-mr {
+        height: 27px;
+        width: 1px;
+        top: 1px;
+        background-color: $grid-row-editor-border-color;
+    }
+    .#{$prefix}grid-row-editor-buttons-ml {
+        left: 0px
+    }
+    .#{$prefix}grid-row-editor-buttons-mr {
+        background-position: 0px -20px;
+        right: 0px;
+    }
+
+    .#{$prefix}grid-row-editor-errors {
+        ul {
+            margin-left: 5px;
+        }
+        li {
+            list-style: disc;
+            margin-left: 15px;
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_html.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_html.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_html.scss	(revision 18277)
@@ -0,0 +1,126 @@
+/**
+ * W3C Suggested Default style sheet for HTML 4
+ * http://www.w3.org/TR/CSS21/sample.html
+ */
+@mixin extjs-html {
+    .#{$prefix}html {
+        html,
+        address,
+        blockquote,
+        body,
+        dd,
+        div,
+        dl,
+        dt,
+        fieldset,
+        form,
+        frame, frameset,
+        h1,
+        h2,
+        h3,
+        h4,
+        h5,
+        h6,
+        noframes,
+        ol,
+        p,
+        ul,
+        center,
+        dir,
+        hr,
+        menu,
+        pre             { display: block; }
+        li              { display: list-item; list-style: disc; }
+        head            { display: none; }
+        table           { display: table; }
+        tr              { display: table-row; }
+        thead           { display: table-header-group; }
+        tbody           { display: table-row-group; }
+        tfoot           { display: table-footer-group; }
+        col             { display: table-column; }
+        colgroup        { display: table-column-group; }
+        td,
+        th 	            { display: table-cell; }
+        caption         { display: table-caption; }
+        th              { font-weight: bolder; text-align: center; }
+        caption         { text-align: center; }
+        body            { margin: 8px; }
+        h1              { font-size: 2em; margin: .67em 0; }
+        h2              { font-size: 1.5em; margin: .75em 0; }
+        h3              { font-size: 1.17em; margin: .83em 0; }
+        h4,
+        p,
+        blockquote,
+        ul,
+        fieldset,
+        form,
+        ol,
+        dl,
+        dir,
+        menu            { margin: 1.12em 0; }
+        h5              { font-size: .83em; margin: 1.5em 0; }
+        h6              { font-size: .75em; margin: 1.67em 0; }
+        h1,
+        h2,
+        h3,
+        h4,
+        h5,
+        h6,
+        b,
+        strong          { font-weight: bolder; }
+        blockquote      { margin-left: 40px; margin-right: 40px; }
+        i,
+        cite,
+        em,
+        var,
+        address    	    { font-style: italic; }
+        pre,
+        tt,
+        code,
+        kbd,
+        samp       	    { font-family: monospace; }
+        pre             { white-space: pre; }
+        button,
+        textarea,
+        input,
+        select   		{ display: inline-block; }
+        big             { font-size: 1.17em; }
+        small,
+        sub,
+        sup 			{ font-size: .83em; }
+        sub             { vertical-align: sub; }
+        sup             { vertical-align: super; }
+        table           { border-spacing: 2px; }
+        thead,
+        tbody,
+        tfoot           { vertical-align: middle; }
+        td,
+        th          	{ vertical-align: inherit; }
+        s,
+        strike,
+        del  			{ text-decoration: line-through; }
+        hr              { border: 1px inset; }
+        ol,
+        ul,
+        dir,
+        menu,
+        dd        	    { margin-left: 40px; }
+        ul, menu, dir   { list-style-type: disc; }
+        ol              { list-style-type: decimal; }
+        ol ul,
+        ul ol,
+        ul ul,
+        ol ol    		{ margin-top: 0; margin-bottom: 0; }
+        u,
+        ins          	{ text-decoration: underline; }
+        br:before       { content: "\A"; }
+        :before, :after { white-space: pre-line; }
+        center          { text-align: center; }
+        :link, :visited { text-decoration: underline; }
+        :focus          { outline: invert dotted thin; }
+
+        /* Begin bidirectionality settings (do not change) */
+        BDO[DIR="ltr"]  { direction: ltr; unicode-bidi: bidi-override; }
+        BDO[DIR="rtl"]  { direction: rtl; unicode-bidi: bidi-override; }
+   }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_loadmask.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_loadmask.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_loadmask.scss	(revision 18277)
@@ -0,0 +1,62 @@
+/**
+  * @class Ext.LoadMask
+  * Component used to mask a component
+  */
+.#{$prefix}mask {
+    z-index: 100;
+    
+    position: absolute;
+    top: 0;
+    left: 0;
+    
+    @include opacity($mask-opacity);
+    
+    width: 100%;
+    height: 100%;
+    // @tag iezoomhack
+    
+    background: $mask-background;
+
+    // @tag frameme
+}
+
+.#{$prefix}mask-msg {
+    z-index: 20001;
+
+    position: absolute;
+    top: 0;
+    left: 0;
+
+    @include box-shadow(rgba(#000, .2) 0 1px 2px);
+    padding: $loadmask-msg-padding;
+    // border: 1px solid;
+    // border-color: $loadmask-msg-border-color;
+    
+    @include border-radius(6px);
+
+    @if $loadmask-msg-background-gradient {
+        @if $supports-gradients or $compile-all {
+            @include background-gradient($loadmask-base-color, $loadmask-msg-background-gradient);
+        }
+    } @else {
+        background: $loadmask-base-color;
+    }
+    
+    div {
+        padding: $loadmask-msg-inner-padding;
+        
+        // if an icon is defined show it
+        @if $loadmask-msg-inner-icon != null {
+            background-image: theme-background-image($theme-name, $loadmask-msg-inner-icon);
+            background-repeat: no-repeat;
+            background-position: 5px center;
+        }
+        
+        // @tag question Not a great effect...
+        // cursor: wait;
+        cursor: default;
+        font-size: $loadmask-font-size;
+        font-weight: bold;
+        @include color-by-background($loadmask-base-color, $default-color: $base-color, $contrast: 30);
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_menu.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_menu.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_menu.scss	(revision 18277)
@@ -0,0 +1,227 @@
+/**
+  * @class Ext.menu.*
+  */
+@mixin extjs-menu {
+
+
+    .#{$prefix}menu {
+//        @include box-shadow(#CACAC9 0 0 4px);
+        @include border-top-right-radius(4px);
+        @include border-bottom-right-radius(4px);
+        @include border-bottom-left-radius(4px);
+        background: $menu-background-color !important;
+    //        padding: $menu-padding;
+            
+//        border: 1px solid #fff;
+//        border-top: 0;
+
+        &.x-panel {
+//            background: transparent;
+        }
+
+        .#{$prefix}menu-body {
+            @extend .no-select;
+        }
+    }
+    
+    .#{$prefix}menu-item .#{$prefix}form-text {
+        user-select: text;
+        -webkit-user-select: text;
+        -o-user-select: text;
+        -ie-user-select: text;
+        -moz-user-select: text;
+        -ie-user-select: text;
+    }
+
+    .#{$prefix}menu-icon-separator {
+        position: absolute;
+        top: 0px;
+        left: $menu-item-indent;
+        z-index: 0;
+//        border-left: solid 1px $menu-separator-border-color;
+//        background-color: $menu-separator-background-color;
+        width: 2px;
+        height: 100%!important;
+        overflow: hidden;
+    }
+
+    .#{$prefix}menu-plain {
+        .#{$prefix}menu-icon-separator {
+            display: none;
+        }
+    }
+
+    .#{$prefix}menu-focus {
+        display: block;
+        position: absolute;
+        top: -10px;
+        left: -10px;
+        width: 0px;
+        height: 0px;
+    }
+
+    .#{$prefix}menu-item {
+        white-space: nowrap;
+        overflow: hidden;
+        z-index: 1;
+
+        &:last-child {
+//            background:red;
+////            .#{$prefix}menu-item-link {
+////                @include border-top-right-radius(4px);
+////            }
+//        }
+            .x-menu-item-link {
+                @include border-bottom-radius(4px);
+            }
+        }
+    }
+
+    .#{$prefix}menu-item-cmp {
+        margin-bottom: 1px;
+    }
+
+    .#{$prefix}menu-item-link {
+        display: block;
+//        margin: 1px;
+        padding: $menu-link-padding;
+        text-decoration: none !important;
+        line-height: 16px;
+        cursor: default;
+    }
+    
+    @if $include-opera {
+        .#{$prefix}opera {
+            // Opera 10.5 absolute positioning of submenu arrow has issues
+            // This will fix it, and not affect newer Operas
+            .#{$prefix}menu-item-link {
+                position: relative;
+            }
+        }
+    }
+
+    .#{$prefix}menu-item-icon {
+        width: 16px;
+        height: 16px;
+        position: absolute;
+        top: 5px;
+        left: 4px;
+        background: no-repeat center center;
+    }
+
+    .#{$prefix}menu-item-text {
+        font-size: ceil($font-size * .9);
+        color: $menu-text-color;
+        font-weight:bold;
+    }
+
+    .#{$prefix}menu-item-checked {
+        .#{$prefix}menu-item-icon {
+            background-image: theme-background-image($theme-name, $menu-icon-checked);
+        }
+        .#{$prefix}menu-group-icon {
+            background-image: theme-background-image($theme-name, $menu-icon-group-checked);
+        }
+    }
+
+    .#{$prefix}menu-item-unchecked {
+        .#{$prefix}menu-item-icon {
+            background-image: theme-background-image($theme-name, $menu-icon-unchecked);
+        }
+        .#{$prefix}menu-group-icon {
+            background-image: none;
+        }
+    }
+
+    .#{$prefix}menu-item-separator {
+        height: 2px;
+//        border-top: solid 1px $menu-separator-border-color;
+        background-color: $menu-separator-background-color;
+//        margin: $menu-padding 0px;
+        overflow: hidden;
+    }
+
+    .#{$prefix}menu-item-arrow {
+        position: absolute;
+        width: 12px;
+        height: 9px;
+        top: 9px;
+        right: 0px;
+        background: no-repeat center center;
+        background-image: theme-background-image($theme-name, $menu-icon-arrow);
+    }
+
+    .#{$prefix}menu-item-indent {
+//        margin-left: $menu-item-indent + $menu-padding + 2px; /* The 2px is the width of the seperator */
+    }
+
+    .#{$prefix}menu-item-active {
+        cursor: pointer;
+
+        .#{$prefix}menu-item-link {
+//            @include background-gradient($menu-item-active-background-color, $base-gradient);
+            background: $menu-item-active-background-color;
+            margin: 0px;
+//            border: 1px solid $menu-item-active-border-color;
+            cursor: pointer;
+            
+//            @include border-radius(2px);
+            
+            // @todo ie6ify
+//            @include box-shadow(rgba(#000, .4) 0 1px 3px);
+        }
+        .#{$prefix}menu-item-text {
+            color: $menu-item-active-color;
+        }
+    }
+
+    .#{$prefix}menu-item-disabled {
+        @include opacity(.5);
+    }
+
+    @if $include-ie {
+        .#{$prefix}ie {
+            .#{$prefix}menu-item-disabled {
+                .#{$prefix}menu-item-icon {
+                    @include opacity(.5);
+                }
+
+                .#{$prefix}menu-item-text {
+                    // IE opacity/cleartype bug workaround
+                    background-color: transparent;
+                }
+            }
+            
+            .#{$prefix}strict .#{$prefix}ie7m & {
+                .#{$prefix}menu-icon-separator {
+                    width: 1px;
+                }
+                
+                .#{$prefix}menu-item-separator {
+                    height: 1px;
+                }
+            }
+        }
+        
+        .#{$prefix}ie6,
+        .#{$prefix}ie7,
+        .#{$prefix}quirks .#{$prefix}ie8 {
+            .#{$prefix}menu-item-link {
+                padding-bottom: $menu-padding;
+            }
+        }
+    }
+
+    @if not $supports-gradients or $compile-all {
+        .#{$prefix}nlg {
+            .#{$prefix}menu-item-active .#{$prefix}menu-item-link {
+                background: $menu-item-active-background-color repeat-x left top;
+                background-image: theme-background-image($theme-name, $menu-item-active-background-image);
+            }
+        }
+    }
+    
+    .#{$prefix}menu-date-item {
+        border-color: #99BBE8;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_panel.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_panel.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_panel.scss	(revision 18277)
@@ -0,0 +1,540 @@
+/**
+  * @class Ext.Panel
+  * Used to create the base structure of an Ext.Panel
+  */
+@mixin extjs-panel {
+    .#{$prefix}panel,
+    .#{$prefix}plain {
+        overflow: hidden;
+        position: relative;
+    }
+
+    @if $include-ie {
+        // Workaround for disappearing right edge in IE6
+        // @tag iezoomhack
+        // .#{$prefix}ie {
+        //     .#{$prefix}panel-header,
+        //     .#{$prefix}panel-header-tl,
+        //     .#{$prefix}panel-header-tc,
+        //     .#{$prefix}panel-header-tr,
+        //     .#{$prefix}panel-header-ml,
+        //     .#{$prefix}panel-header-mc,
+        //     .#{$prefix}panel-header-mr,
+        //     .#{$prefix}panel-header-bl,
+        //     .#{$prefix}panel-header-bc,
+        //     .#{$prefix}panel-header-br {
+        //         zoom: 1;
+        //     }
+        // }
+        // Fix for IE8 clipping. EXTJSIV-1553
+        .#{$prefix}ie8 {
+            td.#{$prefix}frame-mc {
+                vertical-align: top;
+            }
+        }
+    }
+
+    .#{$prefix}panel {
+        @include border-bottom-radius($panel-body-radius);
+        border: 0 solid $stroke-color;
+
+        background-color: $content-color;
+        @include border-radius($panel-border-radius);
+        @include background-clip(padding-box); // Used to improve jaggies of overlapping border-radius
+    }
+
+    .#{$prefix}panel-default.#{$prefix}tab-panel {
+        @include border-radius(0);
+    }
+
+    //panel header
+    .#{$prefix}panel-header {
+        padding: $panel-header-padding;
+        border: 0 solid $neutral-color;
+        border-bottom-width: 0;
+
+        .#{$prefix}panel-header-body,
+        .#{$prefix}panel-header-body > .x-box-inner {
+            overflow: visible;
+        }
+    }
+
+    .#{$prefix}panel-header-icon,
+    .#{$prefix}window-header-icon {
+        width:16px;
+        height:16px;
+        background-repeat:no-repeat;
+        background-position:0 0;
+        vertical-align:middle;
+        margin-right:4px;
+        margin-top:-1px;
+        margin-bottom:-1px;
+    }
+
+    .#{$prefix}panel-header-draggable,
+    .#{$prefix}panel-header-draggable .#{$prefix}panel-header-text,
+    .#{$prefix}window-header-draggable,
+    .#{$prefix}window-header-draggable .#{$prefix}window-header-text{
+        cursor: move;
+    }
+
+    // A ghost is just a Panel. The only extra it needs is opacity.
+    // TODO: Make opacity a variable
+    .#{$prefix}panel-ghost, .#{$prefix}window-ghost {
+        @include opacity(0.65);
+        cursor: move;
+    }
+
+    .#{$prefix}panel-header-horizontal, .#{$prefix}window-header-horizontal, .#{$prefix}btn-group-header-horizontal {
+        .#{$prefix}panel-header-body, .#{$prefix}window-header-body, .#{$prefix}btn-group-header-body {
+            width: 100%;
+        }
+    }
+
+    .#{$prefix}panel-header-vertical, .#{$prefix}window-header-vertical, .#{$prefix}btn-group-header-vertical {
+        .#{$prefix}panel-header-body, .#{$prefix}window-header-body, .#{$prefix}btn-group-header-body {
+            height: 100%;
+        }
+    }
+    
+    .#{$prefix}panel-header-text-container {
+        @extend .overflow-ellipsis;
+    }
+
+    .#{$prefix}panel-header-text {
+        @extend .no-select;
+    }
+
+    .#{$prefix}panel-header-left,
+    .#{$prefix}panel-header-right {
+        .#{$prefix}vml-base {
+            left: -3px !important;
+        }
+    }
+
+    //panel body
+    .#{$prefix}panel-body {
+        overflow: hidden;
+        position: relative;
+        @include background-clip(padding-box);
+    }
+
+    // Framed panel
+
+    .#{$prefix}panel-default-framed {
+        padding: $panel-frame-padding;
+        .#{$prefix}panel-body {
+            @include border-radius($panel-body-radius);
+            border: 0;
+        }
+    }
+
+    .#{$prefix}panel-hasheader-top,
+    .#{$prefix}window-hasheader-top {
+        padding-top: 0 !important;
+    }
+
+    .#{$prefix}panel-hasheader-bottom,
+    .#{$prefix}window-hasheader-bottom {
+        padding-bottom: 0 !important;
+    }
+
+    .#{$prefix}panel-hasheader-left,
+    .#{$prefix}window-hasheader-left {
+        padding-left: 0 !important;
+    }
+
+    .#{$prefix}panel-hasheader-right,
+    .#{$prefix}window-hasheader-right {
+        padding-right: 0 !important;
+    }
+
+    // Vertical/horizontal headers
+
+    .#{$prefix}panel-header-vertical .#{$prefix}surface {
+        margin-top: 2px;
+    }
+
+    .#{$prefix}panel-header-plain-vertical .#{$prefix}surface {
+        margin-top: 0;
+    }
+
+//    .#{$prefix}panel-collapsed {
+//        .#{$prefix}panel-header-collapsed-border-top {
+//            border-bottom-width: 1px !important;
+//        }
+//        .#{$prefix}panel-header-collapsed-border-right {
+//            border-left-width: 1px !important;
+//        }
+//        .#{$prefix}panel-header-collapsed-border-bottom {
+//            border-top-width: 1px !important;
+//        }
+//        .#{$prefix}panel-header-collapsed-border-left {
+//            border-right-width: 1px !important;
+//        }
+//    }
+
+    @if not $supports-gradients or $compile-all {
+        .#{$prefix}nlg .#{$prefix}panel-header-vertical {
+            .#{$prefix}frame-mc {
+                background-repeat: repeat-y;
+            }
+        }
+    }
+
+    @if $include-panel-uis == true {
+        @include extjs-panel-ui(
+            'default',
+
+            $ui-base-color: $panel-base-color,
+
+            $ui-border-width: $panel-border-width,
+            $ui-border-color: $panel-border-color,
+            $ui-border-radius: $panel-border-radius,
+
+            $ui-header-color: $panel-header-color,
+            $ui-header-font-size: $panel-header-font-size,
+            $ui-header-font-weight: $panel-header-font-weight,
+            $ui-header-border-color: $panel-header-border-color,
+            $ui-header-border-width: $panel-header-border-width,
+            $ui-header-background-color: $panel-header-background-color,
+            $ui-header-background-gradient: $panel-header-background-gradient,
+
+            $ui-body-color: $panel-body-color,
+            $ui-body-border-width: $panel-body-border-width,
+            $ui-body-border-color: $panel-body-border-color,
+            $ui-body-background-color: $panel-body-background-color
+        );
+
+        @include extjs-panel-ui(
+            'default-framed',
+
+            $ui-base-color: $panel-base-color,
+
+            $ui-border-width: $panel-frame-border-width,
+            $ui-border-color: $panel-frame-border-color,
+            $ui-border-radius: $panel-frame-border-radius,
+
+            $ui-header-color: $panel-header-color,
+            $ui-header-font-size: $panel-header-font-size,
+            $ui-header-font-weight: $panel-header-font-weight,
+            $ui-header-border-color: $panel-frame-border-color,
+            $ui-header-background-color: $panel-header-background-color,
+            $ui-header-background-gradient: $panel-header-background-gradient,
+
+            $ui-body-color: $panel-frame-body-color,
+            $ui-body-border-color: $panel-body-border-color,
+            $ui-body-background-color: $panel-body-background-color
+        );
+    }
+
+    .#{$prefix}panel-header-plain,
+    .#{$prefix}panel-body-plain {
+        border: 0;
+        padding: 0;
+    }
+}
+
+/**
+  * @class Ext.Panel
+  * Used to create a visual theme for an Ext.Panel
+  */
+@mixin extjs-panel-ui(
+    $ui-label,
+
+    $ui-base-color: null,
+
+    $ui-border-color: null,
+    $ui-border-radius: null,
+    $ui-border-width: 0,
+
+    $ui-header-color: null,
+    $ui-header-font-family: $panel-header-font-family,
+    $ui-header-font-size: $panel-header-font-size,
+    $ui-header-font-weight: $panel-header-font-weight,
+    $ui-header-border-width: $panel-header-border-width,
+    $ui-header-border-color: $ui-border-color,
+    $ui-header-background-color: null,
+    $ui-header-background-gradient: matte,
+    $ui-header-inner-border-color: null,
+
+    $ui-body-color: null,
+    $ui-body-border-color: null,
+    $ui-body-border-width: null,
+    $ui-body-border-style: solid,
+    $ui-body-background-color: null,
+    $ui-body-font-size: null,
+    $ui-body-font-weight: null
+){
+    @if $ui-base-color != null {
+        @if $ui-border-color == null { $ui-border-color: $ui-base-color; }
+
+        @if $ui-header-color == null { $ui-header-color: #fff; }
+        @if $ui-header-background-color == null { $ui-header-background-color: lighten($ui-base-color, 15); }
+    }
+
+    @if $ui-header-inner-border-color == null and $ui-header-background-color != null {
+        $ui-header-inner-border-color: lighten($ui-header-background-color, 10);
+    }
+
+    .#{$prefix}panel-#{$ui-label} {
+        @if $ui-border-color != null { border-color: $ui-border-color; }
+        background: $ui-base-color;
+
+        @if $ui-border-radius != null {
+            @include border-radius($ui-border-radius);
+        }
+
+        @if $ui-header-border-width != null {    
+            .#{$prefix}panel-header-collapsed-border-top {
+                border-bottom-width: $ui-header-border-width !important;
+            }
+            .#{$prefix}panel-header-collapsed-border-right {
+                border-left-width: $ui-header-border-width !important;
+            }
+            .#{$prefix}panel-header-collapsed-border-bottom {
+                border-top-width: $ui-header-border-width !important;
+            }
+            .#{$prefix}panel-header-collapsed-border-left {
+                border-right-width: $ui-header-border-width !important;
+            }
+        }
+    }
+
+    // header
+    .#{$prefix}panel-header-#{$ui-label} {
+        .#{$prefix}panel-header-text-container {
+            @if $ui-header-font-size != null { font-size: $ui-header-font-size; }
+//            @if $include-panel-highlights {
+//                @include inset-by-background($panel-header-background-color);
+//            }
+            line-height: 1.2em;
+            @extend .bigtext;
+        }
+
+        @if $ui-header-border-color != null {
+            border-color: $ui-header-border-color;
+            border-width: $panel-border-width;
+            border-style: $panel-header-border-style;
+        }
+
+        @if $ui-header-border-width != null {
+            border-width: $ui-header-border-width;
+        }
+
+        @if $supports-gradients or $compile-all {
+//            @if $ui-header-background-color != null { @include background-gradient(linear-gradient(top, $ui-header-background-color, $ui-header-background-color)); }
+            @if $ui-header-background-color != null { @include background-image(linear-gradient(top, lighten($ui-header-background-color, 5%), $ui-header-background-color 100%)); }
+
+            @if $panel-header-inner-border and $ui-header-inner-border-color != null {
+//                @include inner-border(
+//                    $width: $panel-header-inner-border-width,
+//                    $color: $ui-header-inner-border-color
+//                );
+            }
+        }
+    }
+
+    // header background images
+    // @todo add these back in
+//    @if $ui-header-background-color != null and $ui-header-background-gradient != null {
+//        @if not $supports-gradients or $compile-all {
+//            .#{$prefix}nlg .#{$prefix}panel-header-#{$ui-label}-top {
+//                background-image: theme-background-image($theme-name, 'panel-header/panel-header-#{$ui-label}-top-bg.gif');
+//            }
+
+//            .#{$prefix}nlg .#{$prefix}panel-header-#{$ui-label}-bottom {
+//                background-image: theme-background-image($theme-name, 'panel-header/panel-header-#{$ui-label}-bottom-bg.gif');
+//            }
+
+//            .#{$prefix}nlg .#{$prefix}panel-header-#{$ui-label}-left {
+//                background-image: theme-background-image($theme-name, 'panel-header/panel-header-#{$ui-label}-left-bg.gif');
+//            }
+
+//            .#{$prefix}nlg .#{$prefix}panel-header-#{$ui-label}-right {
+//                background-image: theme-background-image($theme-name, 'panel-header/panel-header-#{$ui-label}-right-bg.gif');
+//            }
+//        }
+//    }
+
+    // header text
+    .#{$prefix}panel-header-#{$ui-label} .#{$prefix}panel-header-text-container {
+        @if $ui-header-color != null { color: $ui-header-color; }
+        @if $ui-header-font-size != null {   font-size: $ui-header-font-size; }
+        @if $ui-header-font-weight != null { font-weight: $ui-header-font-weight; }
+        @if $ui-header-font-family != null { font-family: $ui-header-font-family; }
+    }
+
+    // body
+    .#{$prefix}panel-body-#{$ui-label} {
+        @if $ui-body-background-color != null { background: $ui-body-background-color; }
+        @if $ui-body-border-width != null {     margin: $ui-body-border-width; }
+        @if $ui-body-color != null {            color: $ui-body-color; }
+        @if $ui-body-font-size != null {        font-size: $ui-body-font-size; }
+        @if $ui-body-font-weight != null {      font-size: $ui-body-font-weight; }
+    }
+
+    .#{$prefix}panel-collapsed {
+        .#{$prefix}window-header-#{$ui-label},
+        .#{$prefix}panel-header-#{$ui-label} {
+            @if $ui-body-border-color != null { border-color: $ui-body-border-color; }
+        }
+    }
+
+    .#{$prefix}panel-header-#{$ui-label}-vertical {
+        @if $ui-body-border-color != null { border-color: $ui-body-border-color; }
+    }
+
+//    @if $ui-base-color != null {
+//        @if $supports-gradients or $compile-all {
+//            .#{$prefix}panel-header-#{$ui-label}-left,
+//            .#{$prefix}panel-header-#{$ui-label}-right {
+//                @include background-gradient($ui-header-background-color, $ui-header-background-gradient, right);
+//            }
+//        }
+//    }
+
+    @if $ui-border-radius != null {
+        // @include x-frame(
+        //     'panel',
+        //     $ui: '#{$ui-label}',
+
+        //     /* Radius, width, padding and background-color */
+        //     $border-radius   : $ui-border-radius,
+        //     $border-width    : $ui-border-width,
+        //     $padding         : $panel-frame-padding,
+        //     $background-color: $ui-base-color
+        // );
+
+
+        // @include x-frame('panel-header', '#{$ui-label}-top',    top($ui-border-radius) right($ui-border-radius) 0 0,    $ui-border-width, 4px 5px 4px 5px, $ui-header-background-color, $ui-header-background-gradient);
+        // @include x-frame('panel-header', '#{$ui-label}-right',  0 right($ui-border-radius) bottom($ui-border-radius) 0, $ui-border-width, 4px 5px 4px 5px, $ui-header-background-color, $ui-header-background-gradient, false, right);
+        // @include x-frame('panel-header', '#{$ui-label}-bottom', 0 0 bottom($ui-border-radius) left($ui-border-radius),  $ui-border-width, 4px 5px 4px 5px, $ui-header-background-color, $ui-header-background-gradient);
+        // @include x-frame('panel-header', '#{$ui-label}-left',   top($ui-border-radius) 0 0 left($ui-border-radius),     $ui-border-width, 4px 5px 4px 5px, $ui-header-background-color, $ui-header-background-gradient, false, right);
+
+        .#{$prefix}panel-header-#{$ui-label}-top {
+            @include border-top-radius($ui-border-radius);
+//            @include inner-border(1px 1px 0 1px, $ui-header-inner-border-color);
+        }
+
+//        .#{$prefix}panel-header-#{$ui-label}-right {
+//            @include inner-border(1px 1px 1px 0, $ui-header-inner-border-color);
+//        }
+
+//        .#{$prefix}panel-header-#{$ui-label}-bottom {
+//            @include inner-border(0 1px 1px 1px, $ui-header-inner-border-color);
+//        }
+
+//        .#{$prefix}panel-header-#{$ui-label}-left {
+//            @include inner-border(1px 0 1px 1px, $ui-header-inner-border-color);
+//        }
+    
+        .#{$prefix}panel-collapsed {
+            .#{$prefix}panel-header-#{$ui-label}-top {
+                @include border-bottom-radius($ui-border-radius);
+            }
+
+            .#{$prefix}panel-header-#{$ui-label}-right {
+                @include border-left-radius($ui-border-radius);
+            }
+
+            .#{$prefix}panel-header-#{$ui-label}-bottom {
+                @include border-top-radius($ui-border-radius);
+            }
+
+            .#{$prefix}panel-header-#{$ui-label}-left {
+                @include border-right-radius($ui-border-radius);
+            }
+        }
+
+    } @else {
+//        .#{$prefix}panel-collapsed {
+//            .#{$prefix}panel-header-#{$ui-label}-top {
+//                @include border-bottom-radius($ui-border-radius);
+//            }
+
+//            .#{$prefix}panel-header-#{$ui-label}-right {
+//                @include border-left-radius($ui-border-radius);
+//            }
+
+//            .#{$prefix}panel-header-#{$ui-label}-bottom {
+//                @include border-top-radius($ui-border-radius);
+//            }
+
+//            .#{$prefix}panel-header-#{$ui-label}-left {
+//                @include border-right-radius($ui-border-radius);
+//            }
+//        }
+
+        .#{$prefix}nlg .#{$prefix}panel-header-#{$ui-label}-right {
+//            background-position: top right;
+        }
+
+//        .#{$prefix}panel-header-#{$ui-label}-top {
+//            @include inner-border(1px 0 0 0, $ui-header-inner-border-color);
+//        }
+
+//        .#{$prefix}panel-header-#{$ui-label}-right {
+//            @include inner-border(0 1px 0 0, $ui-header-inner-border-color);
+//        }
+
+//        .#{$prefix}panel-header-#{$ui-label}-bottom {
+//            @include inner-border(0 0 1px, $ui-header-inner-border-color);
+//        }
+
+//        .#{$prefix}panel-header-#{$ui-label}-left {
+//            @include inner-border(0 0 0 1px, $ui-header-inner-border-color);
+//        }
+    }
+
+    .#{$prefix}nlg .#{$prefix}panel-header-#{$ui-label}-bottom {
+        background-position: bottom left;
+    }
+
+    @if $ui-border-radius != null {
+
+        // Why does adding a border radius require a border?
+
+        // .#{$prefix}panel .#{$prefix}panel-header-#{$ui-label}-top {
+        //     border-bottom-width: 1px !important;
+        // }
+
+        // .#{$prefix}panel .#{$prefix}panel-header-#{$ui-label}-right {
+        //     border-left-width: 1px !important;
+        // }
+
+        // .#{$prefix}panel .#{$prefix}panel-header-#{$ui-label}-bottom {
+        //     border-top-width: 1px !important;
+        // }
+
+        // .#{$prefix}panel .#{$prefix}panel-header-#{$ui-label}-left {
+        //     border-right-width: 1px !important;
+        // }
+
+        .#{$prefix}panel-header-#{$ui-label}-collapsed {
+            @include border-radius($ui-border-radius);
+        }
+
+
+        // These 
+        // @tag deleted
+        // @include x-frame('panel-header', '#{$ui-label}-collapsed-top',    top($ui-border-radius) right($ui-border-radius) bottom($ui-border-radius) left($ui-border-radius), $ui-border-width, 4px 5px 4px 5px, $ui-header-background-color, $ui-header-background-gradient);
+        // @include x-frame('panel-header', '#{$ui-label}-collapsed-right',  top($ui-border-radius) right($ui-border-radius) bottom($ui-border-radius) left($ui-border-radius), $ui-border-width, 4px 5px 4px 5px, $ui-header-background-color, $ui-header-background-gradient, false, right);
+        // @include x-frame('panel-header', '#{$ui-label}-collapsed-bottom', top($ui-border-radius) right($ui-border-radius) bottom($ui-border-radius) left($ui-border-radius), $ui-border-width, 4px 5px 4px 5px, $ui-header-background-color, $ui-header-background-gradient);
+        // @include x-frame('panel-header', '#{$ui-label}-collapsed-left',   top($ui-border-radius) right($ui-border-radius) bottom($ui-border-radius) left($ui-border-radius), $ui-border-width, 4px 5px 4px 5px, $ui-header-background-color, $ui-header-background-gradient, false, right);
+    }
+
+    //background positioning of images
+    // @tag deleted
+    // .#{$prefix}panel-header-#{$ui-label}-right-tc,
+    // .#{$prefix}panel-header-#{$ui-label}-right-mc,
+    // .#{$prefix}panel-header-#{$ui-label}-right-bc {
+    //     background-position: right 0;
+    // }
+
+    // .#{$prefix}panel-header-#{$ui-label}-bottom-tc,
+    // .#{$prefix}panel-header-#{$ui-label}-bottom-mc,
+    // .#{$prefix}panel-header-#{$ui-label}-bottom-bc {
+    //     background-position: 0 bottom;
+    // }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_progress-bar.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_progress-bar.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_progress-bar.scss	(revision 18277)
@@ -0,0 +1,118 @@
+@mixin extjs-progress {
+    .#{$prefix}progress {
+        border-width: $progress-border-width;
+        border-style: solid;
+        @include border-radius($progress-border-radius);
+        
+        overflow: hidden;
+        
+        height: $progress-height;
+    }
+    
+    .#{$prefix}progress-bar {
+        height: $progress-height - ($progress-border-width * 2);
+        
+        overflow: hidden;
+        position: absolute;
+        
+        width: 0;
+        
+        @include border-radius($progress-border-radius);
+        border-right: 1px solid;
+        border-top: 1px solid;
+    }
+
+    .#{$prefix}progress-text {
+        overflow: hidden;
+        
+        position: absolute;
+        
+        padding: 0 5px;
+        
+        height: $progress-height - ($progress-border-width * 2);
+        
+        font-weight: $progress-text-font-weight;
+        font-size: $progress-text-font-size;
+        line-height: 16px;
+        text-align: $progress-text-text-align;
+    }
+    
+    .#{$prefix}progress-text-back {
+        padding-top: 1px;
+    }
+    
+    @if $include-ie or $compile-all {
+        .#{$prefix}strict .#{$prefix}ie7m .#{$prefix}progress  {
+            height: $progress-height - ($progress-border-width * 2);
+        }
+    }
+    
+    @include extjs-progress-ui(
+        'default',
+        
+        $ui-background-color: $progress-background-color,
+        $ui-border-color: $progress-border-color,
+        
+        $ui-bar-background-color: $progress-bar-background-color,
+
+        $ui-color-front: $progress-text-color-front,
+        $ui-color-back: $progress-text-color-back
+    )
+}
+
+/**
+ * @mixin extjs-progress-ui
+ */
+@mixin extjs-progress-ui(
+    $ui-label,
+    
+    $ui-base-color: null,
+    
+    $ui-border-color: null,
+    $ui-background-color: null,
+    
+    $ui-bar-background-color: null,
+    $ui-bar-background-gradient: glossy,
+    
+    $ui-color-front: null,
+    $ui-color-back: null
+){
+    @if $ui-base-color != null {
+        @if $ui-border-color == null {         $ui-border-color: $ui-base-color; }
+        @if $ui-bar-background-color == null { $ui-bar-background-color: $ui-base-color; }
+        @if $ui-color-front == null {          $ui-color-front: lighten($ui-base-color, 60); }
+        @if $ui-color-back == null {           $ui-color-back: darken($ui-base-color, 60); }
+    }
+    
+    .#{$prefix}progress-#{$ui-label} {
+        @if $ui-border-color != null { border-color: $ui-border-color; }
+        
+        .#{$prefix}progress-bar {
+            @if $ui-border-color != null { border-right-color: $ui-border-color; }
+            @if $ui-border-color != null { border-top-color: lighten($ui-border-color, 25); }
+
+            @if $ui-bar-background-color != null { @include background-gradient($ui-bar-background-color, $ui-bar-background-gradient); }
+        }
+        
+        .#{$prefix}progress-text {
+            @if $ui-color-front != null { color: $ui-color-front; }
+        }
+        
+        .#{$prefix}progress-text-back {
+            @if $ui-color-back != null { color: $ui-color-back; }
+        }
+    }
+    
+    @if $ui-background-color != null {
+        @if not $supports-gradients or $compile-all {
+            .#{$prefix}nlg {
+                .#{$prefix}progress-#{$ui-label} {
+                    .#{$prefix}progress-bar {
+                        background: repeat-x;
+                        background-image: theme-background-image($theme-name, 'progress/progress-#{$ui-label}-bg.gif');
+                    }
+                }
+            }
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_qtip.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_qtip.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_qtip.scss	(revision 18277)
@@ -0,0 +1,162 @@
+@mixin extjs-qtip {
+    .#{$prefix}tip {
+        position: absolute;
+        overflow: visible; /*pointer needs to be able to stick out*/
+        border-color: $tip-border-color;
+
+        .#{$prefix}tip-header {
+            .#{$prefix}box-item {
+                padding: $tip-header-padding;
+            }
+
+            .#{$prefix}tool {
+                padding: 0px 1px 0 0 !important;
+            }
+        }
+    }
+
+    @include x-frame(
+        $cls: 'tip',
+        $border-radius: $tip-border-radius,
+        $border-width: $tip-border-width,
+        $background-color: $tip-background-color,
+        $background-gradient: $tip-background-gradient,
+        $table: true
+    );
+
+    .#{$prefix}tip-header-text {
+        @extend .no-select;
+
+        color: $tip-header-color;
+        font-size: $tip-header-font-size;
+        font-weight: $tip-header-font-weight;
+    }
+
+    .#{$prefix}tip-header-draggable .#{$prefix}tip-header-text {
+        cursor: move;
+    }
+
+    // Tip is a Panel. It uses dock layout. Body style must be the same
+    .#{$prefix}tip-body,
+    .#{$prefix}form-invalid-tip-body {
+        overflow: hidden;
+        position: relative;
+        padding: $tip-body-padding;
+    }
+
+    .#{$prefix}tip-header,
+    .#{$prefix}tip-body,
+    .#{$prefix}form-invalid-tip-body {
+        color: $tip-body-color;
+        font-size: $tip-body-font-size;
+        font-weight: $tip-body-font-weight;
+        @if $include-tip-highlights {
+            @include inset-by-background($tip-background-color);
+        }
+
+        a {
+            color: $tip-body-link-color;
+        }
+    }
+
+    .#{$prefix}tip-anchor {
+        position: absolute;
+        overflow: hidden;
+        height: 0;
+        width: 0;
+        border-style: solid;
+        border-width: 5px;
+        border-color: $tip-border-color;
+        // @tag iezoomhack
+    }
+
+    .#{$prefix}border-box .#{$prefix}tip-anchor {
+        width: 10px;
+        height: 10px;
+    }
+
+    .#{$prefix}tip-anchor-top {
+        border-top-color: transparent;
+        border-left-color: transparent;
+        border-right-color: transparent;
+
+        @if $include_ie {
+            _border-top-color: pink;
+            _border-left-color: pink;
+            _border-right-color: pink;
+            _filter: chroma(color=pink);
+        }
+    }
+
+    .#{$prefix}tip-anchor-bottom {
+        border-bottom-color: transparent;
+        border-left-color: transparent;
+        border-right-color: transparent;
+
+        @if $include_ie {
+            _border-bottom-color: pink;
+            _border-left-color: pink;
+            _border-right-color: pink;
+            _filter: chroma(color=pink);
+        }
+    }
+
+    .#{$prefix}tip-anchor-left {
+        border-top-color: transparent;
+        border-bottom-color: transparent;
+        border-left-color: transparent;
+
+        @if $include-ie {
+            _border-top-color: pink;
+            _border-bottom-color: pink;
+            _border-left-color: pink;
+            _filter: chroma(color=pink);
+        }
+    }
+
+    .#{$prefix}tip-anchor-right {
+        border-top-color: transparent;
+        border-bottom-color: transparent;
+        border-right-color: transparent;
+
+        @if $include-ie {
+            _border-top-color: pink;
+            _border-bottom-color: pink;
+            _border-right-color: pink;
+            _filter: chroma(color=pink);
+        }
+    }
+
+    //error qtip
+    .#{$prefix}form-invalid-tip {
+        border-color: $tip-error-border-color;
+
+        @include inner-border(
+            $width: 1px,
+            $color: $tip-error-inner-border-color
+        );
+    }
+
+    .#{$prefix}form-invalid-tip-body {
+        background: 1px 1px no-repeat;
+        background-image: theme-background-image($theme-name, 'form/exclamation.gif');
+        padding-left: 22px;
+
+        li {
+            margin-bottom: 4px;
+            &.last {
+                margin-bottom: 0;
+            }
+        }
+    }
+
+    @include x-frame(
+        $cls: 'form-invalid-tip',
+        $ui: 'default',
+        $border-radius: $tip-error-border-radius,
+        $border-width: $tip-error-border-width,
+        $background-color: $tip-error-background-color,
+        $background-gradient: $tip-background-gradient,
+        $table: true
+    );
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_slider.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_slider.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_slider.scss	(revision 18277)
@@ -0,0 +1,142 @@
+@mixin extjs-slider {
+    .#{$prefix}slider {
+        // @tag iezoomhack
+    }
+
+    .#{$prefix}slider-inner {
+        position:relative;
+        left:0;
+        top:0;
+        overflow:visible;
+        // @tag iezoomhack
+    }
+
+    .#{$prefix}slider-focus {
+        position:absolute;
+        left:0;
+        top:0;
+        width:1px;
+        height:1px;
+        line-height:1px;
+        font-size:1px;
+        display:block;
+        overflow:hidden;
+        @extend .outline-none;
+        @extend .no-select;
+    }
+
+    /* Horizontal styles */
+    .#{$prefix}slider-horz {
+        padding-left:7px;
+        background:transparent no-repeat 0 -24px;
+    }
+
+    .#{$prefix}slider-horz .#{$prefix}slider-end {
+        padding-right:7px;
+        // @tag iezoomhack
+        background:transparent no-repeat right -46px;
+    }
+
+    .#{$prefix}slider-horz .#{$prefix}slider-inner {
+        background:transparent repeat-x 0 -2px;
+        height:18px;
+    }
+
+    .#{$prefix}slider-horz .#{$prefix}slider-thumb {
+        width: $horizontal-slider-thumb-width;
+        height: $horizontal-slider-thumb-height;
+        margin-left: -($horizontal-slider-thumb-width / 2);
+        position: absolute;
+        left: 0;
+        top: 1px;
+        background: transparent no-repeat 0 0;
+    }
+
+    .#{$prefix}slider-horz .#{$prefix}slider-thumb-over {
+        background-position: -14px -15px;
+    }
+
+    .#{$prefix}slider-horz .#{$prefix}slider-thumb-drag {
+        background-position: -28px -30px;
+    }
+
+    /* Vertical styles */
+    .#{$prefix}slider-vert {
+        padding-top:7px;
+        background:transparent no-repeat -44px 0;
+    }
+
+    .#{$prefix}slider-vert .#{$prefix}slider-end {
+        padding-bottom:7px;
+        // @tag iezoomhack
+        background:transparent no-repeat -22px bottom;
+        width:22px;
+    }
+
+    .#{$prefix}slider-vert .#{$prefix}slider-inner {
+        background:transparent repeat-y 0 0;
+        width:22px;
+    }
+
+    .#{$prefix}slider-vert .#{$prefix}slider-thumb {
+        width: $vertical-slider-thumb-width;
+        height: $vertical-slider-thumb-height;
+        margin-bottom: -($vertical-slider-thumb-height / 2);
+        position: absolute;
+        left: 3px;
+        bottom: 0;
+        background:transparent no-repeat 0 0;
+    }
+
+    .#{$prefix}slider-vert .#{$prefix}slider-thumb-over {
+        background-position: -15px -14px;
+    }
+
+    .#{$prefix}slider-vert .#{$prefix}slider-thumb-drag {
+        background-position: -30px -28px;
+    }
+    
+    .#{$prefix}slider-horz,
+    .#{$prefix}slider-horz .#{$prefix}slider-end,
+    .#{$prefix}slider-horz .#{$prefix}slider-inner {
+        background-image: theme-background-image($theme-name, 'slider/slider-bg.png');
+    }
+
+    .#{$prefix}slider-horz .#{$prefix}slider-thumb {
+        background-image: theme-background-image($theme-name, 'slider/slider-thumb.png');
+    }
+
+    .#{$prefix}slider-vert,
+    .#{$prefix}slider-vert .#{$prefix}slider-end,
+    .#{$prefix}slider-vert .#{$prefix}slider-inner {
+        background-image: theme-background-image($theme-name, 'slider/slider-v-bg.png');
+    }
+
+    .#{$prefix}slider-vert .#{$prefix}slider-thumb {
+        background-image: theme-background-image($theme-name, 'slider/slider-v-thumb.png');
+    }
+    
+    @if $include-ie {
+        .#{$prefix}ie6 {
+            .#{$prefix}slider-horz,
+            .#{$prefix}slider-horz .#{$prefix}slider-end,
+            .#{$prefix}slider-horz .#{$prefix}slider-inner {
+                background-image: theme-background-image($theme-name, 'slider/slider-bg.gif');
+            }
+
+            .#{$prefix}slider-horz .#{$prefix}slider-thumb {
+                background-image: theme-background-image($theme-name, 'slider/slider-thumb.gif');
+            }
+
+            .#{$prefix}slider-vert,
+            .#{$prefix}slider-vert .#{$prefix}slider-end,
+            .#{$prefix}slider-vert .#{$prefix}slider-inner {
+                background-image: theme-background-image($theme-name, 'slider/slider-v-bg.gif');
+            }
+
+            .#{$prefix}slider-vert .#{$prefix}slider-thumb {
+                background-image: theme-background-image($theme-name, 'slider/slider-v-thumb.gif');
+            }
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_tab.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_tab.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_tab.scss	(revision 18277)
@@ -0,0 +1,543 @@
+/**
+  * @class Ext.Tab
+  */
+@mixin extjs-tab {
+//    @include x-frame(
+//        $cls: 'tab',
+//        $ui: 'default-top',
+//        $border-radius: $tab-top-border-radius,
+//        $border-width: $tab-top-border-width,
+//        $background-color: $tab-base-color,
+//        $background-gradient: $tab-background-gradient,
+//        $background-direction: top,
+//        $table: true
+//    );
+
+//    @include x-frame(
+//        $cls: 'tab',
+//        $ui: 'default-bottom',
+//        $border-radius: $tab-bottom-border-radius,
+//        $border-width: $tab-bottom-border-width,
+//        $background-color: $tab-base-color,
+//        $background-gradient: $tab-background-gradient,
+//        $background-direction: bottom,
+//        $table: true
+//    );
+
+    .#{$prefix}tab {
+        z-index: 1;
+        margin: 0 $tab-spacing 0 0;
+        display: inline-block;
+        // @tag iezoomhack
+        *display: inline;
+//        height: $tab-height;
+//        border-color: $tab-border-color;
+        @extend .mr-white-glove;
+
+        em {
+            display: block;
+            padding: 7px 22px 8px 22px;
+            line-height: 1px;
+        }
+
+        button {
+            background: none;
+            border: 0;
+            padding: 0;
+            margin: 0;
+            -webkit-appearance: none;
+
+            color: $tab-color;
+
+            @extend .outline-none;
+            @extend .ellipsis;
+
+            &::-moz-focus-inner {
+                border: 0;
+                padding: 0;
+            }
+
+            .#{$prefix}tab-inner {
+                font-size: $tab-font-size;
+
+                @if $tab-font-weight {
+                    font-weight: $tab-font-weight;
+                }
+                @if $tab-font-family {
+                    font-family: $tab-font-family;
+                }
+                
+                background-color: transparent;
+                background-repeat: no-repeat;
+                background-position: 0 -2px;
+                display: block;
+                text-align: center;
+                white-space: nowrap;
+                text-overflow: ellipsis;
+                -o-text-overflow: ellipsis;
+                overflow: hidden;
+            }
+        }
+
+        img {
+            display: none;
+        }
+    }
+
+    .#{$prefix}tab-close-btn {
+        @include pictos('*', $size: 12px, $include-states: false);
+
+        display: block;
+        position: absolute !important;
+        top: 5px;
+        right: 2px;
+
+        width: 13px;
+        height: 13px;
+
+        text-decoration: none;
+
+        @include opacity(.6);
+    }
+
+    .#{$prefix}tab-close-btn:hover {
+        @include opacity(1);
+    }
+
+    .x-panel-default-framed .x-tab-default-top {
+        @include border-radius($tab-top-border-radius);
+    }
+
+    .x-panel-default-framed .x-tab-default-bottom {
+        @include border-radius($tab-bottom-border-radius);
+    }
+
+    .#{$prefix}tab-disabled {
+        @include opacity(1);
+    }
+
+    .#{$prefix}border-box {
+        .#{$prefix}tab-default-top {
+//            height: $tab-height + top($tabbar-top-strip-border-width);
+        }
+        .#{$prefix}tab-default-bottom {
+//            height: $tab-height + bottom($tabbar-bottom-strip-border-width);
+        }
+    }
+
+    @if $include-ie {
+        * html .#{$prefix}ie {
+            .#{$prefix}tab button {
+                width: 1px;
+            }
+        }
+
+        .#{$prefix}strict .#{$prefix}ie6,
+        .#{$prefix}strict .#{$prefix}ie7 {
+            .#{$prefix}tab .#{$prefix}frame-mc {
+                height: 100%;
+            }
+        }
+
+        .#{$prefix}ie .#{$prefix}tab-active button:active {
+            position: relative;
+            top: -1px;
+            left: -1px;
+        }
+    }
+
+    $framepad: max(top($tab-top-border-radius), right($tab-top-border-radius)) - top($tab-top-border-width);
+
+    .#{$prefix}tab-default-top {
+        @if $tab-inner-border {
+            @include inner-border(
+                $width: $tab-top-inner-border-width,
+                $color: $tab-inner-border-color
+            );
+        }
+
+//        border-bottom: 1px solid $tabbar-strip-border-color !important;
+
+//        em {
+//            padding-bottom: $framepad;
+//        }
+
+        button,
+        .#{$prefix}tab-inner {
+//            height: $tab-height - $framepad * 2 - top($tab-top-border-width);
+//            line-height: $tab-height - $framepad * 2 - top($tab-top-border-width);
+        }
+    }
+
+    .#{$prefix}nbr .#{$prefix}tab-default-top {
+//        border-bottom-width: 1px !important;
+    }
+
+    .#{$prefix}tab-default-top-active {
+//        border-bottom-color: $tabbar-strip-background-color !important;
+    }
+
+    $framepad: max(bottom($tab-bottom-border-radius), left($tab-bottom-border-radius)) - bottom($tab-bottom-border-width);
+
+    .#{$prefix}tab-default-bottom {
+//        @if $tab-inner-border {
+//            @include inner-border(
+//                $width: $tab-bottom-inner-border-width,
+//                $color: $tab-inner-border-color
+//            );
+//        }
+
+//        border-top: 1px solid $tabbar-strip-border-color !important;
+
+//        @include inner-border(
+//            $width: $tab-bottom-inner-border-width,
+//            $color: $tab-inner-border-color
+//        );
+
+        em {
+//            padding-top: $framepad;
+        }
+
+        button,
+        .#{$prefix}tab-inner {
+//            height: $tab-height - $framepad * 2 - bottom($tab-bottom-border-width);
+//            line-height: $tab-height - $framepad * 2 - bottom($tab-bottom-border-width);
+        }
+    }
+
+    .#{$prefix}nbr .#{$prefix}tab-default-bottom {
+//        border-top-width: 1px !important;
+    }
+
+    .#{$prefix}tab-default-bottom-active {
+//        border-top-color: $tabbar-strip-background-color !important;
+    }
+
+    .#{$prefix}tab-default-disabled {
+        &, & * {
+            cursor: default;
+        }
+
+        border-color: $tab-border-color-disabled;
+        @include background-gradient($tab-base-color-disabled, $tab-background-gradient-disabled);
+
+        button {
+            color: $tab-color-disabled !important;
+        }
+    }
+
+    .#{$prefix}tab-icon-text-left {
+        .#{$prefix}tab-inner {
+            padding-left: 24px;
+        }
+    }
+
+    .#{$prefix}tab {
+        background: rgba(255,255,255,.2);
+        
+        button, a {
+            position: relative;
+
+            .#{$prefix}tab-icon {
+                position: absolute;
+                background-repeat: no-repeat;
+                top: 0;
+                left: 0;
+                right: auto;
+                bottom: 0;
+                width: $tab-icon-size;
+                height: $tab-icon-size;
+            }
+        }
+
+        &.x-icon {
+            em {
+//                padding: 7px 10px 8px;
+            }
+
+            button {
+                width: $tab-icon-size;
+                height: $tab-icon-size;
+            }
+        }
+
+        &.x-icon-text-left {
+            em {
+//                padding-left: 10px;
+            }
+        }
+    }
+
+    .#{$prefix}tab-default-plain {
+        background: transparent
+    }
+
+    //over
+    .#{$prefix}tab-over {
+        @if $tab-border-color-over != $tab-border-color {
+            border-color: $tab-border-color-over;
+        }
+
+        button {
+            @if $tab-color-over != $tab-color {
+                color: $tab-color-over;
+            }
+            @if $tab-font-weight-over != $tab-font-weight {
+                font-weight: $tab-font-weight-over;
+            }
+            @if $tab-font-size-over != $tab-font-size {
+                font-size: $tab-font-size-over;
+            }
+            @if $tab-font-family-over != $tab-font-family {
+                font-family: $tab-font-family-over;
+            }
+        }
+    }
+
+    // @tag question: Tabs not getting these classes properly?
+    .#{$prefix}tab-top-over, .#{$prefix}tab-over {
+        @include background-gradient($tab-base-color-over, $tab-background-gradient-over, top);
+    }
+    .#{$prefix}tab-bottom-over {
+        @include background-gradient($tab-base-color-over, $tab-background-gradient-over, bottom);
+    }
+
+    //active
+    .#{$prefix}tab-active {
+        z-index: 3;
+        @if $tab-border-color-active != $tab-border-color {
+            border-color: $tab-border-color-active;
+        }
+
+        button {
+            @if $tab-color-active != $tab-color {
+                color: $tab-color-active;
+            }
+            @if $tab-font-weight-active != $tab-font-weight {
+                font-weight: $tab-font-weight-active;
+            }
+            @if $tab-font-size-active != $tab-font-size {
+                font-size: $tab-font-size-active;
+            }
+            @if $tab-font-family-active != $tab-font-family {
+                font-family: $tab-font-family-active;
+            }
+        }
+
+        .#{$prefix}tab-close-btn {
+            &:after {
+                @include background-gradient(#CCCCCC, null);
+            }
+        }
+
+        .#{$prefix}tab-icon {
+            &:after {
+                color: $tab-color-active;
+            }
+        }
+    }
+
+    .#{$prefix}tab-top-active {
+        @include background-gradient($tab-base-color-active, $tab-background-gradient-active, top);
+    }
+    .#{$prefix}tab-bottom-active {
+        @include background-gradient($tab-base-color-active, $tab-background-gradient-active, bottom);
+    }
+
+    //disabled
+    .#{$prefix}tab-disabled {
+        @if $tab-border-color-disabled != $tab-border-color {
+            border-color: $tab-border-color-disabled;
+        }
+
+        button {
+            @if $tab-color-disabled != $tab-color {
+                color: $tab-color-disabled;
+            }
+            @if $tab-font-weight-disabled != $tab-font-weight {
+                font-weight: $tab-font-weight-disabled;
+            }
+            @if $tab-font-size-disabled != $tab-font-size {
+                font-size: $tab-font-size-disabled;
+            }
+            @if $tab-font-family-disabled != $tab-font-family {
+                font-family: $tab-font-family-disabled;
+            }
+        }
+
+        .#{$prefix}tab-icon {
+            &:after {
+                opacity: .5;
+            }
+        }
+    }
+
+    .#{$prefix}tab-top-disabled {
+//        @include background-gradient($tab-base-color-disabled, $tab-background-gradient-disabled, top);
+    }
+    .#{$prefix}tab-bottom-disabled {
+//        @include background-gradient($tab-base-color-disabled, $tab-background-gradient-disabled, bottom);
+    }
+
+    @if not $supports-gradients or $compile-all {
+        .#{$prefix}nlg {
+            @if $tab-background-gradient != null {
+                .#{$prefix}tab-top { background-image: theme-background-image($theme-name, 'tab/tab-default-top-bg.gif'); }
+                .#{$prefix}tab-bottom { background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-bg.gif'); }
+            }
+
+            @if $tab-background-gradient-over != null {
+                .#{$prefix}tab-top-over { background-image: theme-background-image($theme-name, 'tab/tab-default-top-over-bg.gif'); }
+                .#{$prefix}tab-bottom-over { background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-over-bg.gif'); }
+            }
+
+            @if $tab-background-gradient-active != null {
+                .#{$prefix}tab-top-active { background-image: theme-background-image($theme-name, 'tab/tab-default-top-active-bg.gif'); }
+                .#{$prefix}tab-bottom-active { background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-active-bg.gif'); }
+            }
+
+            @if $tab-background-gradient-disabled != null {
+                .#{$prefix}tab-top-disabled { background-image: theme-background-image($theme-name, 'tab/tab-default-top-disabled-bg.gif') !important; }
+                .#{$prefix}tab-bottom-disabled { background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-disabled-bg.gif') !important; }
+            }
+        }
+    }
+
+    .#{$prefix}tab-closable em {
+//        padding-right: $tab-closable-icon-width + 3;
+    }
+
+    @if not $supports-border-radius or $compile-all {
+        .#{$prefix}nbr {
+            .#{$prefix}tab-top-over {
+                .#{$prefix}frame-tl,
+                .#{$prefix}frame-bl,
+                .#{$prefix}frame-tr,
+                .#{$prefix}frame-br,
+                .#{$prefix}frame-tc,
+                .#{$prefix}frame-bc {
+                    background-image: theme-background-image($theme-name, 'tab/tab-default-top-over-corners.gif');
+                }
+                .#{$prefix}frame-ml,
+                .#{$prefix}frame-mr {
+                    background-image: theme-background-image($theme-name, 'tab/tab-default-top-over-sides.gif');
+                }
+                @if $tab-background-gradient-over != null {
+                    .#{$prefix}frame-mc {
+                        background-color: $tab-base-color-over;
+                        background-repeat: repeat-x;
+                        background-image: theme-background-image($theme-name, 'tab/tab-default-top-over-bg.gif');
+                    }
+                }
+            }
+
+            .#{$prefix}tab-bottom-over {
+                .#{$prefix}frame-tl,
+                .#{$prefix}frame-bl,
+                .#{$prefix}frame-tr,
+                .#{$prefix}frame-br,
+                .#{$prefix}frame-tc,
+                .#{$prefix}frame-bc {
+                    background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-over-corners.gif');
+                }
+                .#{$prefix}frame-ml,
+                .#{$prefix}frame-mr {
+                    background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-over-sides.gif');
+                }
+                @if $tab-background-gradient-over != null {
+                    .#{$prefix}frame-mc {
+                        background-color: $tab-base-color-over;
+                        background-repeat: repeat-x;
+                        background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-over-bg.gif');
+                    }
+                }
+            }
+
+            .#{$prefix}tab-top-active {
+                .#{$prefix}frame-tl,
+                .#{$prefix}frame-bl,
+                .#{$prefix}frame-tr,
+                .#{$prefix}frame-br,
+                .#{$prefix}frame-tc,
+                .#{$prefix}frame-bc {
+                    background-image: theme-background-image($theme-name, 'tab/tab-default-top-active-corners.gif');
+                }
+                .#{$prefix}frame-ml,
+                .#{$prefix}frame-mr {
+                    background-image: theme-background-image($theme-name, 'tab/tab-default-top-active-sides.gif');
+                }
+                @if $tab-background-gradient-active != null {
+                    .#{$prefix}frame-mc {
+                        background-color: $tab-base-color-active;
+                        background-repeat: repeat-x;
+                        background-image: theme-background-image($theme-name, 'tab/tab-default-top-active-bg.gif');
+                    }
+                }
+            }
+
+            .#{$prefix}tab-bottom-active {
+                .#{$prefix}frame-tl,
+                .#{$prefix}frame-bl,
+                .#{$prefix}frame-tr,
+                .#{$prefix}frame-br,
+                .#{$prefix}frame-tc,
+                .#{$prefix}frame-bc {
+                    background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-active-corners.gif');
+                }
+                .#{$prefix}frame-ml,
+                .#{$prefix}frame-mr {
+                    background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-active-sides.gif');
+                }
+                @if $tab-background-gradient-active != null {
+                    .#{$prefix}frame-mc {
+                        background-color: $tab-base-color-active;
+                        background-repeat: repeat-x;
+                        background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-active-bg.gif');
+                    }
+                }
+            }
+
+            .#{$prefix}tab-top-disabled {
+                .#{$prefix}frame-tl,
+                .#{$prefix}frame-bl,
+                .#{$prefix}frame-tr,
+                .#{$prefix}frame-br,
+                .#{$prefix}frame-tc,
+                .#{$prefix}frame-bc {
+                    background-image: theme-background-image($theme-name, 'tab/tab-default-top-disabled-corners.gif');
+                }
+                .#{$prefix}frame-ml,
+                .#{$prefix}frame-mr {
+                    background-image: theme-background-image($theme-name, 'tab/tab-default-top-disabled-sides.gif');
+                }
+                @if $tab-background-gradient-disabled != null {
+                    .#{$prefix}frame-mc {
+                        background-repeat: repeat-x;
+                        background-image: theme-background-image($theme-name, 'tab/tab-default-top-disabled-bg.gif');
+                    }
+                }
+            }
+
+            .#{$prefix}tab-bottom-disabled {
+                .#{$prefix}frame-tl,
+                .#{$prefix}frame-bl,
+                .#{$prefix}frame-tr,
+                .#{$prefix}frame-br,
+                .#{$prefix}frame-tc,
+                .#{$prefix}frame-bc {
+                    background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-disabled-corners.gif');
+                }
+                .#{$prefix}frame-ml,
+                .#{$prefix}frame-mr {
+                    background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-disabled-sides.gif');
+                }
+                @if $tab-background-gradient-disabled != null {
+                    .#{$prefix}frame-mc {
+                        background-repeat: repeat-x;
+                        background-image: theme-background-image($theme-name, 'tab/tab-default-bottom-disabled-bg.gif');
+                    }
+                }
+            }
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_tabbar.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_tabbar.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_tabbar.scss	(revision 18277)
@@ -0,0 +1,165 @@
+/**
+  * @class Ext.tab.Bar
+  */
+@mixin extjs-tabbar {
+    .#{$prefix}tab-bar {
+        position: relative;
+        background-color: transparent;
+//        @include background-gradient($tabbar-base-color, $tabbar-background-gradient);
+        font-size: $tab-font-size;
+    }
+
+//    .#{$prefix}nlg .#{$prefix}tab-bar {
+//        background-image: theme-background-image($theme-name, 'tab-bar/tab-bar-default-bg.gif');
+//    }
+
+    .#{$prefix}tab-bar-default-plain,
+    .#{$prefix}nlg .#{$prefix}tab-bar-default-plain {
+        background: transparent none;
+    }
+
+    
+    .#{$prefix}tab-bar-body {
+//        border-style: solid;
+//        border-color: $tabbar-border-color;
+
+        position: relative;
+        z-index: 2;
+        // @tag iezoomhack
+    }
+
+    .tab-bar-strip {
+        display: none !important;
+    }
+
+    .x-tab-bar-body-default-horizontal {
+//        padding-top: 5px;
+    }
+
+    /* Top Tabs */
+    @include tab-bar-top(
+        "tab-bar-top",
+        "tab-bar-body",
+        "tab-bar-strip",
+        $tabbar-top-body-padding,
+        $tabbar-top-body-border-width,
+        $tabbar-top-strip-border-width,
+        $tabbar-strip-height
+    );
+    @include tab-bar-top(
+        "tab-bar-top",
+        "tab-bar-body-default-plain",
+        "tab-bar-strip-default-plain",
+        $tabbar-top-plain-body-padding,
+        $tabbar-top-plain-body-border-width,
+        $tabbar-top-strip-border-width,
+        $tabbar-strip-height
+    );
+
+    /* Bottom Tabs */
+    @include tab-bar-bottom(
+        "tab-bar-bottom",
+        "tab-bar-body",
+        "tab-bar-strip",
+        $tabbar-bottom-body-padding,
+        $tabbar-bottom-body-border-width,
+        $tabbar-bottom-strip-border-width,
+        $tabbar-strip-height
+    );
+    
+    @include tab-bar-bottom(
+        "tab-bar-bottom",
+        "tab-bar-body-default-plain",
+        "tab-bar-strip-default-plain",
+        $tabbar-bottom-plain-body-padding,
+        $tabbar-bottom-plain-body-border-width,
+        $tabbar-bottom-strip-border-width,
+        $tabbar-strip-height
+    );
+
+
+    // Tab strips not in Neptune
+    // .#{$prefix}tab-bar-strip-default,
+    // .#{$prefix}tab-bar-strip-default-plain {
+    //     font-size: 0;
+    //     line-height: 0;
+    //     position: absolute;
+    //     z-index: 1;
+    //     border-style: solid;
+    //     overflow: hidden;
+    //     border-color: $tabbar-strip-border-color;
+    //     background-color: $tabbar-strip-background-color;
+    //     zoom: 1;
+    // }
+
+
+    .#{$prefix}tabpanel-child {
+//        padding: 0;
+    }
+}
+
+@mixin tab-bar-top($toolbarCls, $bodyCls, $stripCls, $body-padding, $body-border-width, $strip-border-width, $strip-height) {
+    .#{$prefix}#{$toolbarCls} {
+        .#{$prefix}#{$bodyCls} {
+//                height: $tab-height;
+//                border-width: $body-border-width;
+//                padding: $body-padding;
+        }
+
+        // .#{$prefix}#{$stripCls} {
+        //     /*position strip from top rather than bottom to avoid off-by-one error in IE6*/
+        //     top: $tab-height + top($body-border-width) + top($body-padding);
+        //     border-width: $strip-border-width;
+        //     height: $strip-height - vertical($strip-border-width);
+        // }
+    }
+    .#{$prefix}border-box {
+        .#{$prefix}#{$toolbarCls} {
+            .#{$prefix}#{$bodyCls} {
+//                    height: $tab-height + vertical($body-border-width) + vertical($body-padding);
+            }
+
+            // .#{$prefix}#{$stripCls} {
+            //     height: $strip-height;
+            // }
+        }
+    }
+}
+
+@mixin tab-bar-bottom($toolbarCls, $bodyCls, $stripCls, $body-padding, $body-border-width, $strip-border-width, $strip-height) {
+    .#{$prefix}#{$toolbarCls} {
+        .#{$prefix}#{$bodyCls} {
+//                height: $tab-height;
+//                border-width: $body-border-width;
+//                padding: $body-padding;
+
+            .#{$prefix}box-inner {
+                position: relative;
+//                    top: 0 - bottom($strip-border-width);
+            }
+
+            .#{$prefix}box-scroller,
+            .#{$prefix}box-scroller-left,
+            .#{$prefix}box-scroller-right {
+//                    height: $tab-height + bottom($body-padding) + bottom($strip-border-width);
+            }
+        }
+
+        // .#{$prefix}#{$stripCls} {
+        //     top: top($body-border-width);
+        //     border-width: $strip-border-width;
+        //     height: $strip-height - vertical($strip-border-width);
+        // }
+    }
+    .#{$prefix}border-box {
+        .#{$prefix}#{$toolbarCls} {
+            .#{$prefix}#{$bodyCls} {
+//                    height: $tab-height + vertical($body-border-width) + vertical($body-padding);
+            }
+
+            .#{$prefix}#{$stripCls} {
+//                    height: $strip-height;
+            }
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_toolbar.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_toolbar.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_toolbar.scss	(revision 18277)
@@ -0,0 +1,173 @@
+@mixin extjs-toolbar {
+    .#{$prefix}toolbar {
+        font-size: $toolbar-font-size;
+
+//        border: 1px solid;
+        overflow: visible; // Yikes...
+        
+        .#{$prefix}box-inner {
+            overflow: visible;
+        }
+        
+        padding: $toolbar-vertical-spacing 0 $toolbar-vertical-spacing $toolbar-horizontal-spacing;
+
+        .#{$prefix}form-item-label{
+            font-size: $toolbar-font-size;
+            line-height: 15px;
+        }
+        
+        .#{$prefix}toolbar-item {
+            margin: 0 $toolbar-horizontal-spacing 0 0;
+        }
+        
+        .#{$prefix}toolbar-text {
+            margin-left: 4px;
+            margin-right: 6px;
+            white-space: nowrap;
+            color: $toolbar-text-color !important;
+            line-height: $toolbar-text-line-height;
+            font-family: $toolbar-text-font-family;
+            font-size: $toolbar-text-font-size;
+            font-weight: $toolbar-text-font-weight;
+        }
+        
+        .#{$prefix}toolbar-separator {
+            display: block;
+            font-size: 1px;
+            overflow: hidden;
+            cursor: default;
+            border: 0;
+        }
+        
+        .#{$prefix}toolbar-separator-horizontal {
+            margin: 0 6px 0 1px;
+
+            height: 24px;
+            width: 0px;
+
+            border-left: 1px solid $toolbar-separator-color;
+            border-right: 1px solid $toolbar-separator-highlight-color;
+        }
+    }
+
+    .#{$prefix}toolbar-docked-top { padding-bottom: 0; }
+    .#{$prefix}toolbar-docked-bottom { padding-top: 0; }
+    .#{$prefix}toolbar-docked-left { padding-right: 0; }
+    .#{$prefix}toolbar-docked-right { padding-left: 0; }
+    
+    @if $include-ie {
+        .#{$prefix}quirks .#{$prefix}ie .#{$prefix}toolbar .#{$prefix}toolbar-separator-horizontal {
+            width: 2px;
+        } 
+    }
+    
+    .#{$prefix}toolbar-footer {
+        background: transparent;
+        border: 0px none;
+        margin-top: 3px;
+        
+        padding: $toolbar-footer-vertical-spacing 0 $toolbar-footer-vertical-spacing $toolbar-footer-horizontal-spacing;
+        
+        .#{$prefix}box-inner {
+            border-width: 0;
+        }
+        
+        .#{$prefix}toolbar-item {
+            margin: 0 $toolbar-footer-horizontal-spacing 0 0;
+        }
+    }
+    
+    .#{$prefix}toolbar-vertical {
+        padding: $toolbar-vertical-spacing $toolbar-horizontal-spacing 0 $toolbar-horizontal-spacing;
+        
+        .#{$prefix}toolbar-item {
+            margin: 0 0 $toolbar-horizontal-spacing 0;
+        }
+        
+        .#{$prefix}toolbar-text {
+            margin-top: 4px;
+            margin-bottom: 6px;
+        }     
+        
+        .#{$prefix}toolbar-separator-vertical {
+            margin: 2px 5px 3px 5px;
+
+            height: 0px;
+            width: 10px;
+            line-height: 0px;
+
+            border-top: 1px solid $toolbar-separator-color;
+            border-bottom: 1px solid $toolbar-separator-highlight-color;
+        }
+    }
+    
+    .#{$prefix}toolbar-scroller {
+        padding-left: 0;
+    }
+
+    .#{$prefix}toolbar-spacer {
+        width: $toolbar-spacer-width;
+    }
+
+    // Background for overflow button inserted by the Menu box overflow handler within a toolbar
+    .#{$prefix}toolbar-more-icon {
+        background-image: theme-background-image($theme-name, 'toolbar/more.gif') !important;
+        background-position: 2px center !important;
+        background-repeat: no-repeat;
+    }
+    
+    @include extjs-toolbar-ui(
+        'default',
+        $background-color: $toolbar-background-color,
+        $background-gradient: $toolbar-background-gradient,
+        $border-color: $toolbar-border-color
+    );
+    
+    //plain toolbars have no border
+    //by default they get no color, so they are transparent. IE6 doesnt support transparent borders
+    //so we must set the width to 0.
+    .#{$prefix}toolbar-plain {
+        border: 0;
+    }
+    
+    .#{$prefix}window .#{$prefix}toolbar {
+        // border-color: $window-body-border-color;
+        // @tag question Now what to do about plain attr?
+    }
+}
+
+/**
+ * @mixin ext-toolbar-ui
+ * @class Ext.toolbar.Toolbar
+ * @param {String} $ui The name of the UI
+ * @param {Color} $background-color The background color of the toolbar (defaults to transparent)
+ * @param {Gradient/color-stops} $background-gradient The background gradient of the toolbar (defaults to null)
+ * @param {Color} $border-color The border color of the toolbar (defaults to null)
+ */
+@mixin extjs-toolbar-ui(
+    $ui,
+    
+    $background-color: transparent,
+    $background-gradient: null,
+    
+    $border-color: null
+) {
+    .#{$prefix}toolbar-#{$ui} {
+        @if $border-color != null {
+            border-color: $border-color;
+        }
+        
+        @include background-gradient($background-color, $background-gradient);
+    }
+    
+    @if not $supports-gradients or $compile-all {
+        @if $background-gradient != null {
+            .#{$prefix}nlg {
+                .#{$prefix}toolbar-#{$ui} {
+                    background-image: theme-background-image($theme-name, 'toolbar/toolbar-#{$ui}-bg.gif') !important;
+                    background-repeat: repeat-x;
+                }
+            }
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_tree.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_tree.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_tree.scss	(revision 18277)
@@ -0,0 +1,336 @@
+@mixin extjs-tree {
+
+    // Declare some 'constants' for the image sprites
+    $PLUS_NO_LINES: -0 * $tree-elbow-width;
+    $MINUS_NO_LINES: -1 * $tree-elbow-width;
+    $RIGHT_ARROW_NO_LINES: -2 * $tree-elbow-width;
+    $DOWN_ARROW_NO_LINES: -3 * $tree-elbow-width;
+    $PLUS_WITH_LINES: -4 * $tree-elbow-width;
+    $PLUS_WITH_LINES_LAST_CHILD: -5 * $tree-elbow-width;
+    $MINUS_WITH_LINES: -6 * $tree-elbow-width;
+    $MINUS_WITH_LINES_LAST_CHILD: -7 * $tree-elbow-width;
+    $RIGHT_ARROW_WITH_LINES: -8 * $tree-elbow-width;
+    $RIGHT_ARROW_WITH_LINES_LAST_CHILD: -9 * $tree-elbow-width;
+    $DOWN_ARROW_WITH_LINES: -10 * $tree-elbow-width;
+    $DOWN_ARROW_WITH_LINES_LAST_CHILD: -11 * $tree-elbow-width;
+    $CLOSED_FOLDER_NO_LINES: -12 * $tree-elbow-width;
+    $CLOSED_FOLDER_WITH_LINES: -13 * $tree-elbow-width;
+    $OPEN_FOLDER_NO_LINES: -15 * $tree-elbow-width;
+    $OPEN_FOLDER_WITH_LINES: -16 * $tree-elbow-width;
+    $LEAF_NO_LINES: -18 * $tree-elbow-width;
+    $LEAF_WITH_LINES: -19 * $tree-elbow-width;
+
+    // Tree tables must assume either full width of the View element, or, when necessary, must overflow
+    // They must not shrink wrap the width and only be as wide as their widest node's content.
+    .#{$prefix}autowidth-table table.#{$prefix}grid-table {
+        table-layout: auto;
+        width: auto !important;
+    }
+
+    .#{$prefix}tree-elbow-plus,
+    .#{$prefix}tree-elbow-minus,
+    .#{$prefix}tree-elbow-end-plus,
+    .#{$prefix}tree-elbow-end-minus{
+        cursor: pointer;
+    }
+
+    .#{$prefix}tree-icon {
+        margin-right: 4px;
+    }
+    
+    .#{$prefix}tree-elbow,
+    .#{$prefix}tree-elbow-line,
+    .#{$prefix}tree-elbow-end,
+    .#{$prefix}tree-elbow-plus,
+    .#{$prefix}tree-elbow-minus,
+    .#{$prefix}tree-elbow-end-plus,
+    .#{$prefix}tree-elbow-end-minus,
+    .#{$prefix}tree-icon-end,
+    .#{$prefix}tree-icon-end-plus,
+    .#{$prefix}tree-icon-leaf,
+    .#{$prefix}tree-elbow-empty,
+    .#{$prefix}tree-icon-parent {
+        height: $tree-elbow-height;
+        width: $tree-elbow-width;
+    }
+
+    .#{$prefix}tree-lines .#{$prefix}tree-elbow,
+    .#{$prefix}tree-lines .#{$prefix}tree-elbow-line,
+    .#{$prefix}tree-lines .#{$prefix}tree-elbow-end,
+    .#{$prefix}tree-elbow-plus,
+    .#{$prefix}tree-elbow-minus,
+    .#{$prefix}tree-elbow-end-plus,
+    .#{$prefix}tree-elbow-end-minus,
+    .#{$prefix}tree-icon-end,
+    .#{$prefix}tree-icon-end-plus,
+    .#{$prefix}tree-icon-leaf,
+    .#{$prefix}tree-icon-parent {
+        background-image: theme-background-image($theme-name, 'tree/elbows.png');
+    }
+
+    //+/-, no lines
+    .#{$prefix}tree-elbow-plus,
+    .#{$prefix}tree-elbow-end-plus {
+        background-image: theme-background-image($theme-name, 'tree/icons-gray.png');
+        background-position: $PLUS_NO_LINES 0;
+    }
+
+    .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-elbow-plus,
+    .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-elbow-end-plus {
+        background-image: theme-background-image($theme-name, 'tree/icons-gray.png');
+        background-position: $MINUS_NO_LINES 0;
+    }
+
+    //+/-, lines
+    .#{$prefix}tree-lines {
+        .#{$prefix}tree-elbow-plus {
+            background-image: theme-background-image($theme-name, 'tree/icons-gray.png');
+            background-position: $PLUS_WITH_LINES 0;
+        }
+
+        .#{$prefix}tree-elbow-end-plus {
+            background-image: theme-background-image($theme-name, 'tree/icons-gray.png');
+            background-position: $PLUS_WITH_LINES_LAST_CHILD 0;
+        }
+
+        .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-elbow-plus {
+            background-image: theme-background-image($theme-name, 'tree/icons-gray.png');
+            background-position: $MINUS_WITH_LINES 0;
+        }
+
+        .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-elbow-end-plus {
+            background-image: theme-background-image($theme-name, 'tree/icons-gray.png');
+            background-position: $MINUS_WITH_LINES_LAST_CHILD 0;
+        }
+    }
+
+    //arrows, no lines
+    .#{$prefix}tree-arrows {
+        .#{$prefix}tree-elbow-plus,
+        .#{$prefix}tree-elbow-end-plus {
+            background-position: $RIGHT_ARROW_NO_LINES 0;
+        }
+
+        .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-elbow-plus,
+        .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-elbow-end-plus {
+            background-position: $DOWN_ARROW_NO_LINES 0;
+        }
+    }
+
+    .#{$prefix}tree-arrows {
+        &.#{$prefix}tree-lines {
+            .#{$prefix}tree-elbow-plus {
+                background-position: $RIGHT_ARROW_WITH_LINES 0;
+            }
+
+            .#{$prefix}tree-elbow-end-plus {
+                background-position: $RIGHT_ARROW_WITH_LINES_LAST_CHILD 0;
+            }
+
+            .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-elbow-plus {
+                background-position: $DOWN_ARROW_WITH_LINES 0;
+            }
+
+            .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-elbow-end-plus {
+                background-position: $DOWN_ARROW_WITH_LINES_LAST_CHILD 0;
+            }
+        }
+    }
+
+    //folder, no lines
+    .#{$prefix}tree-icon-parent {
+        background-position: $CLOSED_FOLDER_NO_LINES 0 !important;
+        background-image: theme-background-image($theme-name, 'tree/icons-orange.png');
+    }
+    
+    .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-icon-parent {
+        background-position: $OPEN_FOLDER_NO_LINES 0 !important;
+    }
+
+    .#{$prefix}tree-icon-leaf {
+        background-position: $LEAF_NO_LINES 0 !important;
+    }
+
+    //folder, lines
+    .#{$prefix}tree-lines {
+        .#{$prefix}tree-icon-parent {
+            width: $tree-elbow-width;
+            background-position: $CLOSED_FOLDER_WITH_LINES 0 !important;
+        }
+        
+        .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-icon-parent {
+            background-position: $OPEN_FOLDER_WITH_LINES 0 !important;
+        }
+    }
+
+    //leaf, no lines
+    .#{$prefix}tree-icon-leaf {
+        width: $tree-elbow-width;
+        background-position: $LEAF_NO_LINES 0 !important;
+        background-image: theme-background-image($theme-name, 'tree/icons-orange.png');
+    }
+
+    .#{$prefix}tree-lines {
+        .#{$prefix}tree-icon-leaf {
+            background-position: $LEAF_WITH_LINES 0 !important;
+        }
+    }
+    
+    //selected row
+    .x-grid-row-selected {
+        .#{$prefix}tree-elbow-plus,
+        .#{$prefix}tree-elbow-minus,
+        .#{$prefix}tree-elbow-end-plus,
+        .#{$prefix}tree-elbow-end-minus,
+        .#{$prefix}tree-icon-end,
+        .#{$prefix}tree-icon-end-plus,
+        .#{$prefix}tree-icon-leaf,
+        .#{$prefix}tree-icon-parent {
+            background-image: theme-background-image($theme-name, 'tree/icons-white.png') !important;
+        }
+    }
+
+    // lines
+    .#{$prefix}tree-lines {
+        .#{$prefix}tree-elbow-line {
+            background-image: theme-background-image($theme-name, 'tree/elbows.png');
+            background-position: 0 $tree-elbow-height * 2;
+        }
+
+        .#{$prefix}tree-elbow {
+            background-image: theme-background-image($theme-name, 'tree/elbows.png');
+            background-position: 0 $tree-elbow-height * 0;
+        }
+
+        .#{$prefix}tree-elbow-end {
+            background-image: theme-background-image($theme-name, 'tree/elbows.png');
+            background-position: 0 $tree-elbow-height * 1;
+        }
+    }
+
+//    .#{$prefix}grid-with-row-lines {
+//        .#{$prefix}tree-elbow,
+//        .#{$prefix}tree-elbow-end,
+//        .#{$prefix}tree-elbow-plus,
+//        .#{$prefix}tree-elbow-end-plus,
+//        .#{$prefix}tree-elbow-empty,
+//        .#{$prefix}tree-elbow-line {
+//            height: $tree-elbow-height - 1;
+//            background-position: 0 -1px;
+//        }
+//    }
+    
+    .#{$prefix}grid-cell-treecolumn .#{$prefix}grid-cell-inner {
+        padding: 0;
+        line-height: $tree-elbow-height - 1;
+    }
+
+    .#{$prefix}grid-with-row-lines .#{$prefix}grid-cell-treecolumn .#{$prefix}grid-cell-inner {
+        line-height: $tree-elbow-height - 3;
+    }
+
+    .#{$prefix}tree-panel .#{$prefix}grid-cell-inner {
+        cursor: pointer;
+        img {
+            display: inline-block;
+            vertical-align: top;
+        }
+    }
+
+//    @if $include-ie {
+//        .#{$prefix}ie .#{$prefix}tree-panel {
+//            .#{$prefix}tree-elbow,
+//            .#{$prefix}tree-elbow-end,
+//            .#{$prefix}tree-elbow-plus,
+//            .#{$prefix}tree-elbow-end-plus,
+//            .#{$prefix}tree-elbow-empty,
+//            .#{$prefix}tree-elbow-line {
+//                // vertical alignment is necessary for IE to show the ellipsis in the right place.
+//                vertical-align: -6px;
+//            }
+//        }
+//    }
+
+//    .#{$prefix}tree-panel .#{$prefix}grid-editor-on-text-node {
+//        .#{$prefix}form-text {
+//            // specify padding left and padding right individually since we don't want to override padding-bottom (which can vary)
+//            padding-left: $grid-cell-treecolumn-editor-field-padding-horizontal;
+//            padding-right: $grid-cell-treecolumn-editor-field-padding-horizontal;
+//        }
+//    }
+//    @if $include-ie {
+//        .#{$prefix}ie .#{$prefix}tree-panel .#{$prefix}grid-editor-on-text-node .#{$prefix}form-text {
+//            padding-left: $grid-cell-treecolumn-editor-field-padding-horizontal + 1px;
+//            padding-right: $grid-cell-treecolumn-editor-field-padding-horizontal + 1px;
+//        }
+//    }
+//    @if $include-opera {
+//        .#{$prefix}opera .#{$prefix}tree-panel .#{$prefix}grid-editor-on-text-node .#{$prefix}form-text {
+//            padding-left: $grid-cell-treecolumn-editor-field-padding-horizontal + 1px;
+//            padding-right: $grid-cell-treecolumn-editor-field-padding-horizontal + 1px;
+//        }
+//    }
+    
+    .#{$prefix}tree-checkbox {
+        margin: $tree-checkbox-margin-top $tree-checkbox-margin-right 0 0;
+        display: inline-block;
+        vertical-align: top;
+
+        width: $form-checkbox-size;
+        height: $form-checkbox-size;
+        background: no-repeat;
+        background-image: theme-background-image($theme-name, $form-checkbox-image);
+
+        overflow: hidden;
+        padding: 0;
+        border: 0;
+        &::-moz-focus-inner {
+            padding: 0;
+            border: 0;
+        }
+    }
+
+    .#{$prefix}grid-with-row-lines .#{$prefix}tree-checkbox {
+        margin-top: $tree-checkbox-margin-top - 1;
+    }
+
+    .#{$prefix}tree-checkbox-checked {
+        background-position: 0 (0 - $form-checkbox-size);
+    }
+
+    .#{$prefix}tree-drop-ok-append .#{$prefix}dd-drop-icon {
+        background-image: theme-background-image($theme-name, 'tree/drop-append.gif');
+    }
+
+    .#{$prefix}tree-drop-ok-above .#{$prefix}dd-drop-icon {
+        background-image: theme-background-image($theme-name, 'tree/drop-above.gif');
+    }
+
+    .#{$prefix}tree-drop-ok-below .#{$prefix}dd-drop-icon {
+        background-image: theme-background-image($theme-name, 'tree/drop-below.gif');
+    }
+
+    .#{$prefix}tree-drop-ok-between .#{$prefix}dd-drop-icon {
+        background-image: theme-background-image($theme-name, 'tree/drop-between.gif');
+    }
+    
+    .#{$prefix}grid-tree-loading .#{$prefix}tree-icon {
+        background-image: theme-background-image($theme-name, 'tree/loading.gif');
+    }
+
+    .#{$prefix}tree-ddindicator {
+        height: 1px;
+        border-width: 1px 0px 0px;
+        border-style: dotted;
+        border-color: green;
+    }
+        
+    .#{$prefix}grid-tree-loading span {
+    	 font-style: italic;
+    	 color: #444444;
+    }
+    
+    .#{$prefix}tree-animator-wrap {
+        overflow: hidden;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_viewport.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_viewport.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_viewport.scss	(revision 18277)
@@ -0,0 +1,10 @@
+@mixin extjs-viewport {
+    .#{$prefix}viewport, .#{$prefix}viewport body {
+        margin: 0;
+        padding: 0;
+        border: 0 none;
+        overflow: hidden;
+        height: 100%;
+        position: static;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_window.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_window.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/_window.scss	(revision 18277)
@@ -0,0 +1,183 @@
+@mixin extjs-window {
+
+    .#{$prefix}window {
+        @extend .outline-none;
+    }
+
+    .#{$prefix}window-wrap {
+        position: relative;
+    }
+
+    .#{$prefix}window-body {
+        position: relative;
+        overflow: hidden;
+        // border-style: $window-body-border-style;
+    }
+
+    // Maximized window
+    .#{$prefix}window-maximized {
+        .#{$prefix}window-wrap {
+            .#{$prefix}window-header {
+                @include important-no-border-radius;
+            }
+        }
+    }
+
+    // Collapsed window header styles
+    .#{$prefix}window-collapsed {
+        .#{$prefix}window-header-vertical, .#{$prefix}window-header-horizontal {
+            @include border-radius($window-border-radius);
+        }
+
+//        // Padding changes for collapsed headers.
+//        .#{$prefix}window-header-left {
+//            padding-right: $window-border-radius;
+//        }
+
+//        .#{$prefix}window-header-right {
+//            padding-left: $window-border-radius;
+//        }
+
+//        .#{$prefix}window-header-top {
+//            padding-bottom: $window-border-radius;
+//        }
+
+//        .#{$prefix}window-header-bottom {
+//            padding-top: $window-border-radius;
+//        }
+    }
+
+    .#{$prefix}window-header-left,
+    .#{$prefix}window-header-right {
+        .#{$prefix}vml-base {
+            left: -3px !important;
+        }
+    }
+
+    .#{$prefix}window-header-text {
+        @extend .no-select;
+        @extend .bigtext;
+        white-space: nowrap;
+        display: block;
+    }
+
+    .#{$prefix}window-body-plain {
+        background: transparent;
+    }
+
+    .#{$prefix}window-header {
+        .#{$prefix}window-header-body,
+        .#{$prefix}window-header-body > .x-box-inner {
+            overflow: visible;
+        }
+    }
+
+    @include extjs-window-ui('default');
+}
+
+/**
+  * @class Ext.Window
+  * Used to create a visual theme for an Ext.Panel
+  */
+@mixin extjs-window-ui(
+    $ui-label,
+
+    $ui-padding: null, // This was not set in @include above...
+    $ui-border-radius: $window-border-radius,
+    $ui-border-color: $window-border-color,
+    $ui-inner-border-color: $window-inner-border-color,
+
+    $ui-header-background-color: $window-base-color,
+    $ui-header-color: $window-header-color,
+    $ui-header-font-size: $window-header-font-size,
+    $ui-header-font-weight: $window-header-font-weight,
+
+    // $ui-body-border-color: $window-body-border-color,
+    $ui-body-background-color: $window-body-background-color,
+    $ui-body-color: $window-body-color,
+
+    $ui-base-color: $window-base-color
+){
+    .#{$prefix}window-#{$ui-label} {
+        border-color: $ui-border-color;
+        @include border-radius($ui-border-radius);
+//        @include background-image(linear-gradient(top, lighten($ui-base-color, 5%), darken($ui-base-color, 5%) 80px));
+
+        // @if $include-panel-highlights {
+        //     @include inner-border($window-inner-border-width, $ui-inner-border-color);
+        // }
+    }
+
+    // $ui-padding was never being set...
+    @if $ui-border-radius != null {
+        @include x-frame(
+            'window',
+            $ui-label,
+
+            $border-radius: $ui-border-radius,
+            $border-width: $window-border-width,
+            $padding: $ui-padding,
+            $background-color: $ui-base-color
+        );
+    }
+
+    // Window body
+    .#{$prefix}window-body-#{$ui-label} {
+        // border-color: $ui-body-border-color;
+        // border-width: $window-body-border-width;
+        background: $ui-body-background-color;
+        color: $ui-body-color;
+    }
+
+    .#{$prefix}window-header-#{$ui-label} {
+        border-color: $ui-border-color;
+        padding: 8px 10px 8px 10px;
+        @if ($include-window-highlights) {
+            @include inset-by-background($ui-base-color);
+        }
+        // @tag iezoomhack
+
+        @if $supports-gradients or $compile-all {
+            @if $ui-header-background-color != null { @include background-image(linear-gradient(top, lighten($ui-header-background-color, 5%), $ui-header-background-color 100%)); }
+        }
+    }
+
+    .#{$prefix}window-header-text-#{$ui-label} {
+        color: $ui-header-color;
+        font-weight: $ui-header-font-weight;
+        line-height: 1.2em;
+        font-size: $ui-header-font-size;
+    }
+
+    @if $ui-border-radius != null {
+        .#{$prefix}window-header-#{$ui-label}-top {
+            @include border-top-radius($ui-border-radius);
+        }
+    }
+
+    @if $ui-border-radius != null {
+        // @include x-frame('window-header', '#{$ui-label}-top',    top($ui-border-radius) right($ui-border-radius) 0 0, $window-border-width, 5px 5px 0, $ui-base-color);
+        // @include x-frame('window-header', '#{$ui-label}-right',  0 right($ui-border-radius) bottom($ui-border-radius) 0, $window-border-width, 5px 5px 5px 0, $ui-base-color);
+        // @include x-frame('window-header', '#{$ui-label}-bottom', 0 0 bottom($ui-border-radius) left($ui-border-radius), $window-border-width, 0 5px 5px, $ui-base-color);
+        // @include x-frame('window-header', '#{$ui-label}-left',   top($ui-border-radius) 0 0 left($ui-border-radius), $window-border-width, 5px 0px 5px 5px, $ui-base-color);
+    }
+
+    @if $include-panel-highlights {
+        // So much crud for inner borders...
+        // .#{$prefix}window-header-#{$ui-label}-top {
+        //     @include inner-border(1px 1px 0, $ui-inner-border-color);
+        // }
+
+        // .#{$prefix}window-header-#{$ui-label}-right {
+        //     @include inner-border(1px 1px 1px 0, $ui-inner-border-color);
+        // }
+
+        // .#{$prefix}window-header-#{$ui-label}-bottom {
+        //     @include inner-border(0px 1px 1px, $ui-inner-border-color);
+        // }
+
+        // .#{$prefix}window-header-#{$ui-label}-left {
+        //     @include inner-border(1px 0 1px 1px, $ui-inner-border-color);
+        // }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/form/_all.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/form/_all.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/form/_all.scss	(revision 18277)
@@ -0,0 +1,78 @@
+@mixin extjs-form {
+    // Remove blue focus halo from Safari/Chrome
+    // Actually, this is in reset-extras...
+    // .#{$prefix}webkit {
+    //     *:focus {
+    //         outline: none !important;
+    //     }
+    // }
+    
+    //form items
+    .#{$prefix}form-item {
+        vertical-align: top;
+        margin-bottom: 5px;
+        table-layout: fixed;
+    }
+    
+    // Padding row when Labelable Fields are in a form layout
+    td.#{$prefix}form-item-pad {
+        height: 5px;
+    }
+    
+    // No padding when inside an Editor
+    .#{$prefix}editor .#{$prefix}form-item-body {
+        padding-bottom: 0;
+    }
+
+    .#{$prefix}form-item-label {
+        display: block;
+        padding: 3px 5px 0 0;
+        font-size: $form-label-font-size;
+        @extend .no-select;
+    }
+    
+    .#{$prefix}form-item-label-left {
+        text-align: right;
+    }
+
+    .#{$prefix}form-item-label-top {
+        padding: 0;
+    }
+
+    .#{$prefix}form-item-label-right {
+        text-align: right;
+    }
+
+    .#{$prefix}form-invalid-under {
+        padding: 2px 2px 2px $form-error-icon-width;
+
+        color: $form-error-msg-color;
+        font: $form-error-msg-font;
+        line-height: $form-error-msg-line-height;
+
+        background: no-repeat 0 2px;
+        background-image: theme-background-image($theme-name, $form-exclamation-icon);
+    }
+    
+    .#{$prefix}external-error-icon {
+        position: absolute;
+        right: ($form-error-icon-width - 1);
+        height: $form-field-height;
+    }
+
+    .#{$prefix}form-invalid-icon {
+        position: relative;
+        width: ($form-error-icon-width + $form-error-icon-margin-left);
+        overflow: hidden;
+        ul {
+            @include pictos('!', $size: 21px, $include-states: false, $color: #FC0D1B);
+            display: block;
+            margin-left: $form-error-icon-margin-left;
+            width: $form-error-icon-width;
+            li {
+                /* prevent inner elements from interfering with QuickTip hovering */
+                display: none;
+            }
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/form/_checkbox.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/form/_checkbox.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/form/_checkbox.scss	(revision 18277)
@@ -0,0 +1,67 @@
+@mixin extjs-form-checkboxfield {
+    .#{$prefix}form-cb-wrap {
+        padding-top: 3px;
+    }
+
+    .#{$prefix}form-checkbox,
+    .#{$prefix}form-radio {
+        float: none;
+//        vertical-align: 2px;
+
+        position: relative;
+        top: -2px;
+
+        width: $form-checkbox-size;
+        height: $form-checkbox-size;
+        background: no-repeat;
+        background-image: theme-background-image($theme-name, $form-checkbox-image);
+
+        overflow: hidden;
+        padding: 0;
+        border: 0;
+        &::-moz-focus-inner {
+            padding: 0;
+            border: 0;
+        }
+    }
+    @if $include-ie {
+        /* Hack for IE; causes alignment problem in IE9 standards mode so exclude that */
+        .#{$prefix}nbr.#{$prefix}ie {
+            .#{$prefix}form-checkbox,
+            .#{$prefix}form-radio {
+                font-size: 0;
+            }
+        }
+    }
+
+    .#{$prefix}form-cb-checked {
+        .#{$prefix}form-checkbox {
+            background-position: 0 (0 - $form-checkbox-size);
+        }
+    }
+
+    /* Radios */
+    .#{$prefix}form-radio {
+        background-image: theme-background-image($theme-name, $form-radio-image);
+
+        width: $form-radio-size;
+        height: $form-radio-size;
+    }
+
+    .#{$prefix}form-cb-checked {
+        .#{$prefix}form-radio {
+            background-position: 0 (0 - $form-radio-size);
+        }
+    }
+
+    /* boxLabel */
+    .#{$prefix}form-cb-label-before {
+        margin-right: 4px;
+    }
+    .#{$prefix}form-cb-label-after {
+        margin-left: 4px;
+    }
+
+    
+
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/form/_checkboxgroup.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/form/_checkboxgroup.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/form/_checkboxgroup.scss	(revision 18277)
@@ -0,0 +1,31 @@
+@mixin extjs-form-checkboxgroup {
+
+    .#{$prefix}form-checkboxgroup-body {
+        //padding: 1px 4px 3px 4px;
+    }
+
+    .#{$prefix}form-invalid {
+        .#{$prefix}form-checkboxgroup-body {
+            border: 1px solid #c30;
+            background: transparent repeat-x bottom;
+            background-image: theme-background-image($theme-name, 'grid/invalid_line.gif');
+            padding: 0 3px 2px 3px;
+        }
+    }
+    
+    .#{$prefix}check-group-alt {
+        background: adjust-color($base-color, $hue: 2.667deg, $saturation: -7.168%, $lightness: 3.725%);
+        
+        border-top:1px dotted adjust-color($base-color, $hue: 17.193deg, $saturation: -40.827%, $lightness: -9.412%);
+        border-bottom:1px dotted adjust-color($base-color, $hue: 17.193deg, $saturation: -40.827%, $lightness: -9.412%);
+    }
+
+    .#{$prefix}form-check-group-label {
+        color: #333;
+        
+        border-bottom: 1px solid #333;
+        
+        margin: 0 30px 5px 0;
+        padding: 2px;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/form/_field.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/form/_field.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/form/_field.scss	(revision 18277)
@@ -0,0 +1,134 @@
+@mixin extjs-form-field {
+    .#{$prefix}form-field,
+    .#{$prefix}form-display-field {
+        float: left;
+
+        margin: 0 0 0 0;
+
+        font: $form-field-font;
+        color: $form-field-color;
+    }
+
+    .#{$prefix}form-text,
+    textarea.#{$prefix}form-field {
+        padding: $form-field-padding;
+
+        background: repeat-x 0 0;
+        border: $form-field-border-width solid;
+
+        background-color: $form-field-background-color;
+
+        // @todo Bring this back with proper gradient/slicing
+/*        @if $form-field-background-image {
+            background-image: theme-background-image($theme-name, $form-field-background-image);
+        }*/
+
+        border-color: #BEC0C0 #E0E1E2 #E0E1E2 #E0E1E2;
+    }
+
+    $form-field-content-height: $form-field-height - top($form-field-padding) - top($form-field-border-width) - bottom($form-field-padding) - bottom($form-field-border-width);
+    $form-field-line-height: $form-field-content-height - 3px;
+
+    .#{$prefix}form-text {
+        height: $form-field-content-height;
+        line-height: $form-field-line-height;
+        vertical-align: middle;
+    }
+
+    .#{$prefix}ie6,
+    .#{$prefix}ie7,
+    .#{$prefix}ie8 {
+        .#{$prefix}form-text {
+            line-height: $form-field-line-height;
+        }
+    }
+
+    .#{$prefix}border-box .#{$prefix}form-text {
+        height: $form-field-height;
+    }
+
+    textarea.#{$prefix}form-field {
+        color: $form-field-color;
+        overflow: auto;
+        height: auto;
+        line-height: normal;
+        background: repeat-x 0 0;
+        background-color: $form-field-background-color;
+
+        // @todo Bring this back with proper gradient/slicing
+/*        @if $form-field-background-image {
+            background-image: theme-background-image($theme-name, $form-field-background-image);
+        }*/
+        resize: none; //Disable browser resizable textarea
+    }
+
+    .#{$prefix}border-box textarea.#{$prefix}form-field {
+        height: auto;
+    }
+
+    @if $include-safari {
+        .#{$prefix}safari.#{$prefix}mac textarea.#{$prefix}form-field {
+            margin-bottom: -2px; // another bogus margin bug, safari/mac only
+        }
+    }
+
+    .#{$prefix}form-focus,
+    textarea.#{$prefix}form-focus {
+        border-color: #C0BCA7 #E7E3C8 #E7E3C8 #E7E3C8;
+        background: #FFFBE6;
+    }
+
+    .#{$prefix}form-invalid-field,
+    textarea.#{$prefix}form-invalid-field {
+        background-color: $form-field-invalid-background-color;
+        @if $form-field-invalid-background-image {
+            background-image: theme-background-image($theme-name, $form-field-invalid-background-image);
+            background-repeat: $form-field-invalid-background-repeat;
+            background-position: $form-field-invalid-background-position;
+        }
+        border-color: #DFCCC5; // @todo change to a variable
+        border-top-color: #BEAAA3;
+    }
+
+    .#{$prefix}form-item {
+        font: $form-label-font;
+        @extend .bigtext;
+        @include inset-by-background($panel-frame-background-color);
+    }
+
+    .#{$prefix}form-empty-field, textarea.#{$prefix}form-empty-field {
+        color: $form-field-empty-color;
+    }
+
+    .#{$prefix}webkit {
+        .#{$prefix}form-empty-field {
+            line-height: $form-field-line-height;
+        }
+    }
+
+    .#{$prefix}form-display-field {
+        padding-top: 3px;
+    }
+
+    @if $include-ie {
+        .#{$prefix}ie .#{$prefix}form-file {
+            height: $form-field-height + 1;
+
+            line-height: 18px;
+
+            vertical-align: middle;
+        }
+    }
+
+    .#{$prefix}field-default-toolbar .#{$prefix}form-text {
+        height: $form-toolbar-field-height - vertical($form-field-padding) - vertical($form-field-border-width);
+    }
+
+    .#{$prefix}border-box .#{$prefix}field-default-toolbar .#{$prefix}form-text {
+        height: $form-toolbar-field-height;
+    }
+
+    .#{$prefix}field-default-toolbar .#{$prefix}form-item-label-left {
+        padding-left: 4px;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/form/_fieldset.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/form/_fieldset.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/form/_fieldset.scss	(revision 18277)
@@ -0,0 +1,107 @@
+@mixin extjs-form-fieldset {
+    .#{$prefix}fieldset {
+        border: $fieldset-border;
+        border-color: #BEC0C0 #E0E1E2 #E0E1E2 #E0E1E2;
+
+        background: #fafafa;
+        
+        padding: $fieldset-padding;
+        margin-bottom: $fieldset-padding;
+        
+        display: block; /* preserve margins in IE */
+        position: relative;
+    }
+    
+    .#{$prefix}ie .#{$prefix}fieldset {
+        padding-top: 0;
+        padding-bottom: $fieldset-padding;
+    }
+    
+    .#{$prefix}fieldset-header {
+        font: $fieldset-header-font;
+        color: $fieldset-header-color;
+//        padding: $fieldset-header-padding;
+        padding: 0 5px;
+
+        .#{$prefix}fieldset-header-text {
+            float: left;
+        }
+        
+        .#{$prefix}form-item,
+        .#{$prefix}tool {
+            float: left;
+            margin: 0 3px 0 0;
+        }
+
+        .#{$prefix}form-cb-wrap {
+            padding: 0;
+        }
+    }
+
+    .#{$prefix}webkit .#{$prefix}fieldset-header {
+        padding-top: 1px;
+    }
+
+    @if $include-ie {
+        .#{$prefix}quirks .#{$prefix}ie .#{$prefix}fieldset-header,
+        .#{$prefix}ie6 .#{$prefix}fieldset-header,
+        .#{$prefix}ie7 .#{$prefix}fieldset-header,
+        .#{$prefix}ie8 .#{$prefix}fieldset-header {
+            padding: 0;
+        }
+
+        .#{$prefix}ie9 .#{$prefix}fieldset-header {
+            padding-top: 1px;
+        }
+    }
+    
+    .#{$prefix}fieldset-collapsed {
+        .#{$prefix}fieldset-body {
+            display: none;
+        }
+    }
+
+    .#{$prefix}fieldset-collapsed {
+        padding-bottom: 0 !important;
+        
+        border-width: 1px 1px 0 1px !important;
+        border-left-color: transparent !important;
+        border-right-color: transparent !important;
+    }
+
+    @if $include-ie {
+        .#{$prefix}ie6 .#{$prefix}fieldset-collapsed {
+            border-width: 1px 0 0 0 !important;
+
+            padding-bottom: 0 !important;
+            margin-left: 1px;
+            margin-right: 1px;
+        }
+
+        .#{$prefix}ie .#{$prefix}fieldset-bwrap {
+            // @tag iezoomhack
+        }
+    }
+
+    @if $include-ie {
+        /* IE legend positioning bug */
+        .#{$prefix}ie .#{$prefix}fieldset-noborder legend {
+            position: relative;
+
+            margin-bottom: 23px;
+        }
+
+        .#{$prefix}ie .#{$prefix}fieldset-noborder legend span {
+            position: absolute;
+            left: 16px;
+        }
+    }
+    
+    .#{$prefix}fieldset, .#{$prefix}fieldset-bwrap, .#{$prefix}fieldset-body,  {
+        overflow: hidden;
+    }
+
+    .#{$prefix}fieldset-bwrap {
+        // @tag iezoomhack
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/form/_file.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/form/_file.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/form/_file.scss	(revision 18277)
@@ -0,0 +1,32 @@
+@mixin extjs-form-file {
+
+    .#{$prefix}form-file-wrap {
+        .#{$prefix}form-text {
+            color: #777;
+        }
+
+        .#{$prefix}form-file-btn {
+            overflow: hidden;
+            float: left;
+        }
+
+        .#{$prefix}form-file-input {
+            position: absolute;
+            top: -4px;
+            right: -2px;
+            height: $form-field-height + 8;
+            @include opacity(0);
+
+            /* Yes, there's actually a good reason for this...
+             * If the configured buttonText is set to something longer than the default,
+             * then it will quickly exceed the width of the hidden file input's "Browse..."
+             * button, so part of the custom button's clickable area will be covered by
+             * the hidden file input's text box instead. This results in a text-selection
+             * mouse cursor over that part of the button, at least in Firefox, which is
+             * confusing to a user. Giving the hidden file input a huge font-size makes
+             * the native button part very large so it will cover the whole clickable area.
+             */
+            font-size: 100px;
+        }
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss	(revision 18277)
@@ -0,0 +1,147 @@
+@mixin extjs-form-htmleditor {
+    .#{$prefix}html-editor-wrap {
+//        border: 1px solid $html-editor-border-color;
+        
+        .#{$prefix}toolbar {
+            border-top-width: 0;
+            border-left-width: 0;
+            border-right-width: 0;
+        }
+        
+        textarea {
+            
+        }
+
+        iframe {
+            padding: $form-field-padding;
+
+            background: repeat-x 0 0;
+            border: $form-field-border-width solid;
+
+            background-color: $form-field-background-color;
+
+            // @todo Bring this back with proper gradient/slicing
+    /*        @if $form-field-background-image {
+                background-image: theme-background-image($theme-name, $form-field-background-image);
+            }*/
+
+            border-color: #BEC0C0 #E0E1E2 #E0E1E2 #E0E1E2;
+        }
+    }
+
+    // Icons
+//    .#{$prefix}html-editor-tb .#{$prefix}btn-text,
+//    .#{$prefix}html-editor-tb .#{$prefix}edit-bold,
+//    .#{$prefix}menu-item img.#{$prefix}edit-bold,
+//    .#{$prefix}html-editor-tb .#{$prefix}edit-italic,
+//    .#{$prefix}menu-item img.#{$prefix}edit-italic,
+//    .#{$prefix}html-editor-tb .#{$prefix}edit-underline,
+//    .#{$prefix}menu-item img.#{$prefix}edit-underline,
+//    .#{$prefix}html-editor-tb .#{$prefix}edit-forecolor,
+//    .#{$prefix}menu-item img.#{$prefix}edit-forecolor,
+//    .#{$prefix}html-editor-tb .#{$prefix}edit-backcolor,
+//    .#{$prefix}menu-item img.#{$prefix}edit-backcolor,
+//    .#{$prefix}html-editor-tb .#{$prefix}edit-justifyleft,
+//    .#{$prefix}menu-item img.#{$prefix}edit-justifyleft,
+//    .#{$prefix}html-editor-tb .#{$prefix}edit-justifycenter,
+//    .#{$prefix}menu-item img.#{$prefix}edit-justifycenter,
+//    .#{$prefix}html-editor-tb .#{$prefix}edit-justifyright,
+//    .#{$prefix}menu-item img.#{$prefix}edit-justifyright,
+//    .#{$prefix}html-editor-tb .#{$prefix}edit-insertorderedlist,
+//    .#{$prefix}menu-item img.#{$prefix}edit-insertorderedlist,
+//    .#{$prefix}html-editor-tb .#{$prefix}edit-insertunorderedlist,
+//    .#{$prefix}menu-item img.#{$prefix}edit-insertunorderedlist,
+//    .#{$prefix}html-editor-tb .#{$prefix}edit-increasefontsize,
+//    .#{$prefix}menu-item img.#{$prefix}edit-increasefontsize,
+//    .#{$prefix}html-editor-tb .#{$prefix}edit-decreasefontsize,
+//    .#{$prefix}menu-item img.#{$prefix}edit-decreasefontsize,
+//    .#{$prefix}html-editor-tb .#{$prefix}edit-sourceedit,
+//    .#{$prefix}menu-item img.#{$prefix}edit-sourceedit,
+//    .#{$prefix}html-editor-tb .#{$prefix}edit-createlink,
+//    .#{$prefix}menu-item img.#{$prefix}edit-createlink {
+//        background-image: theme-background-image($theme-name, 'WYSIWYG.png');
+//    }
+
+    .x-html-editor-tb {
+        span.x-btn-icon {
+            background-image: theme-background-image($theme-name, 'WYSIWYG.png');
+        }
+
+        .x-btn-over {
+            span.x-btn-icon {
+                background-position-y: -16px;
+            }
+        }
+
+        .x-btn-pressed {
+            span.x-btn-icon {
+                background-position-y: -48px;
+            }
+        }
+    }
+
+    .#{$prefix}html-editor-tb .#{$prefix}btn-text { background:transparent no-repeat; }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-bold,
+    .#{$prefix}menu-item img.#{$prefix}edit-bold { background-position:0 0; }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-italic,
+    .#{$prefix}menu-item img.#{$prefix}edit-italic { background-position:-16px 0; }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-underline,
+    .#{$prefix}menu-item img.#{$prefix}edit-underline { background-position:-32px 0; }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-forecolor,
+    .#{$prefix}menu-item img.#{$prefix}edit-forecolor { background-position:-160px 0; }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-backcolor,
+    .#{$prefix}menu-item img.#{$prefix}edit-backcolor { background-position:-176px 0; }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-justifyleft,
+    .#{$prefix}menu-item img.#{$prefix}edit-justifyleft { background-position:-80px 0; }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-justifycenter,
+    .#{$prefix}menu-item img.#{$prefix}edit-justifycenter { background-position:-96px 0; }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-justifyright,
+    .#{$prefix}menu-item img.#{$prefix}edit-justifyright { background-position:-112px 0; }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-insertorderedlist,
+    .#{$prefix}menu-item img.#{$prefix}edit-insertorderedlist { background-position:-144px 0; }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-insertunorderedlist,
+    .#{$prefix}menu-item img.#{$prefix}edit-insertunorderedlist { background-position:-160px 0; }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-increasefontsize,
+    .#{$prefix}menu-item img.#{$prefix}edit-increasefontsize { background-position:-48px 0; }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-decreasefontsize,
+    .#{$prefix}menu-item img.#{$prefix}edit-decreasefontsize { background-position:-64px 0; }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-sourceedit,
+    .#{$prefix}menu-item img.#{$prefix}edit-sourceedit { background-position:-176px 0; }
+
+    .#{$prefix}html-editor-tb .#{$prefix}edit-createlink,
+    .#{$prefix}menu-item img.#{$prefix}edit-createlink { background-position: -128px 0; }
+
+
+    .#{$prefix}html-editor-tip .#{$prefix}tip-bd .#{$prefix}tip-bd-inner {
+        padding: 5px;
+        padding-bottom: 1px;
+    }
+
+    .#{$prefix}html-editor-tb {
+        .#{$prefix}toolbar {
+            position: static !important;
+        }
+        .#{$prefix}font-select {
+            font-size: 11px;
+        }
+    }
+
+    .#{$prefix}html-editor-wrap textarea {
+        border: 0;
+        padding: 3px 2px;
+        overflow: auto;
+    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/form/_triggerfield.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/form/_triggerfield.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/stylesheets/neptune/default/widgets/form/_triggerfield.scss	(revision 18277)
@@ -0,0 +1,223 @@
+@mixin extjs-form-triggerfield {
+    .#{$prefix}form-trigger-wrap {
+        vertical-align: top;
+    }
+
+    .#{$prefix}form-trigger {
+        width: ($form-trigger-width + $form-trigger-margin-left);
+        height: $form-trigger-height;
+
+        cursor: pointer;
+
+        margin-left: $form-trigger-margin-left;
+
+        &:after {
+            position: absolute;
+            top: 5px;
+            left: 6px;
+            width: 11px;
+            height: 11px;
+
+            content: "";
+            background: theme-background-image($theme-name, 'triggerfield.png') no-repeat;
+        }
+    }
+
+    .#{$prefix}trigger-cell {
+        position: relative;
+    }
+
+    .#{$prefix}form-date-trigger:after {
+        background-position: -11px 0;
+    }
+
+    .#{$prefix}form-spinner-down:after {
+        background-position: -22px 0;
+    }
+
+    .#{$prefix}form-spinner-up:after {
+        background-position: -33px 0;
+    }
+
+    .#{$prefix}form-search-trigger:after {
+        background-position: -44px 0;
+    }
+
+    .#{$prefix}form-clear-trigger:after {
+        background-position: -55px 0;
+    }
+
+    .#{$prefix}form-trigger-over,
+    .#{$prefix}pickerfield-open .#{$prefix}form-trigger {
+        @include border-radius(2px);
+        border: 1px solid #C7DBEE;
+        @include background-gradient(#E2F0FC, null);
+    }
+
+//    .#{$prefix}form-invalid {
+//        .#{$prefix}form-trigger {
+//            @include background-gradient(#FC0D1B, null);
+//        }
+//    }
+
+//	.#{$prefix}form-trigger-wrap {
+////        float: left;
+//    }
+    
+//    .#{$prefix}form-trigger {
+////        background-image: theme-background-image($theme-name, 'form/trigger.gif');
+////		background-position: 0 0;
+		
+////		width: $form-trigger-width;
+////		height: $form-trigger-height - $form-trigger-border-bottom-width;
+////		float: left;
+
+////		border-bottom: $form-trigger-border-bottom;
+
+////        cursor: pointer;
+////        cursor: hand;
+//    }
+
+//    .#{$prefix}border-box .#{$prefix}form-trigger {
+//        height: $form-trigger-height;
+//    }
+
+//    .#{$prefix}field-default-toolbar .#{$prefix}form-trigger {
+//        height: $form-toolbar-trigger-height - $form-trigger-border-bottom-width;
+//    }
+
+//    .#{$prefix}border-box .#{$prefix}field-default-toolbar .#{$prefix}form-trigger {
+//        height: $form-toolbar-trigger-height;
+//    }
+
+    
+//    .#{$prefix}form-trigger-over {
+//		background-position: -$form-trigger-width 0;
+
+//		border-bottom-color: $form-trigger-border-bottom-color-over;
+//    }
+    
+//    .#{$prefix}form-trigger-wrap-focus .#{$prefix}form-trigger {
+//		background-position: -($form-trigger-width * 3) 0;
+
+//		border-bottom-color: $form-trigger-border-bottom-color-focus;
+//    }
+    
+//    .#{$prefix}form-trigger-wrap-focus .#{$prefix}form-trigger-over {
+//        background-position: -($form-trigger-width * 4) 0;
+        
+//        @if $form-trigger-border-bottom-color-focus-over {
+//            border-bottom-color: $form-trigger-border-bottom-color-focus-over;
+//        }
+//    }
+    
+//    .#{$prefix}form-trigger-click,
+//    .#{$prefix}form-trigger-wrap-focus .#{$prefix}form-trigger-click {
+//		background-position: -($form-trigger-width * 2) 0;
+		
+//		@if $form-trigger-border-bottom-color-pressed {
+//    		border-bottom-color: $form-trigger-border-bottom-color-pressed;
+//    	}
+//    }
+
+//    .#{$prefix}form-trigger-icon {
+//        height: $form-trigger-width - $form-trigger-border-bottom-width;
+        
+//        background-repeat: no-repeat;
+//        background-position: $form-trigger-icon-background-position;
+//    }
+    
+//    .#{$prefix}pickerfield-open {
+//        .#{$prefix}form-field {
+//            @include border-bottom-radius(0);
+//        }
+//    }
+    
+//    .#{$prefix}pickerfield-open-above {
+//        .#{$prefix}form-field {
+//            @include border-bottom-left-radius(3px);
+//            @include border-top-radius(0);
+//        }
+//    }
+    
+//    .#{$prefix}form-arrow-trigger {
+//        .#{$prefix}form-trigger-icon {
+//            background-image: theme-background-image($theme-name, 'boundlist/trigger-arrow.png');
+//        }
+//    }
+    
+//    .#{$prefix}form-date-trigger {
+//        background-image: theme-background-image($theme-name, 'form/date-trigger.gif');
+//    }
+
+//    $spinner-btn-height: $form-trigger-height / 2;
+//    .#{$prefix}form-trigger-wrap {
+//        .#{$prefix}form-spinner-up,
+//        .#{$prefix}form-spinner-down {
+//            background-image: theme-background-image($theme-name, 'form/spinner.gif');
+
+//            width: $form-trigger-width !important;
+//            height: $spinner-btn-height !important;
+
+//            font-size: 0; /*for IE*/
+
+//            border-bottom: 0;
+//        }
+//        .#{$prefix}form-spinner-down {
+//            background-position: 0 (-$spinner-btn-height);
+//        }
+//    }
+//    .#{$prefix}form-trigger-wrap-focus .#{$prefix}form-spinner-down {
+//        background-position: -($form-trigger-width * 3) (-$spinner-btn-height);
+//    }
+//    .#{$prefix}form-trigger-wrap .#{$prefix}form-spinner-down-over {
+//        background-position: (-$form-trigger-width) (-$spinner-btn-height);
+//    }
+//    .#{$prefix}form-trigger-wrap-focus .#{$prefix}form-spinner-down-over {
+//        background-position: -($form-trigger-width * 4) (-$spinner-btn-height);
+//    }
+//    .#{$prefix}form-trigger-wrap .#{$prefix}form-spinner-down-click {
+//        background-position: -($form-trigger-width * 2) (-$spinner-btn-height);
+//    }
+
+
+//    .#{$prefix}field-default-toolbar {
+//        $spinner-btn-height: $form-toolbar-trigger-height / 2;
+//        .#{$prefix}form-trigger-wrap {
+//            .#{$prefix}form-spinner-up,
+//            .#{$prefix}form-spinner-down {
+//               background-image: theme-background-image($theme-name, 'form/spinner-small.gif');
+//                height: $spinner-btn-height !important;
+//            }
+//            .#{$prefix}form-spinner-down {
+//                background-position: 0 (-$spinner-btn-height);
+//            }
+//        }
+//        .#{$prefix}form-trigger-wrap-focus .#{$prefix}form-spinner-down {
+//            background-position: -($form-trigger-width * 3) (-$spinner-btn-height);
+//        }
+//        .#{$prefix}form-trigger-wrap .#{$prefix}form-spinner-down-over {
+//            background-position: (-$form-trigger-width) (-$spinner-btn-height);
+//        }
+//        .#{$prefix}form-trigger-wrap-focus .#{$prefix}form-spinner-down-over {
+//            background-position: -($form-trigger-width * 4) (-$spinner-btn-height);
+//        }
+//        .#{$prefix}form-trigger-wrap .#{$prefix}form-spinner-down-click {
+//            background-position: -($form-trigger-width * 2) (-$spinner-btn-height);
+//        }
+//    }
+
+
+//    .#{$prefix}trigger-noedit {
+//        cursor: pointer;
+//        cursor: hand;
+//    }
+
+
+//    .#{$prefix}form-clear-trigger {
+//        background-image: theme-background-image($theme-name, 'form/clear-trigger.gif');
+//    }
+//    .#{$prefix}form-search-trigger {
+//        background-image: theme-background-image($theme-name, 'form/search-trigger.gif');
+//    }
+}
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/templates/resources/sass/config.rb
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/templates/resources/sass/config.rb	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/templates/resources/sass/config.rb	(revision 18277)
@@ -0,0 +1,20 @@
+# $ext_path: This should be the path of the Ext JS SDK relative to this file
+$ext_path = "../../extjs"
+
+# sass_path: the directory your Sass files are in. THIS file should also be in the Sass folder
+# Generally this will be in a resources/sass folder
+# <root>/resources/sass
+sass_path = File.dirname(__FILE__)
+
+# css_path: the directory you want your CSS files to be.
+# Generally this is a folder in the parent directory of your Sass files
+# <root>/resources/css
+css_path = File.join(sass_path, "..", "css")
+
+# output_style: The output style for your compiled CSS
+# nested, expanded, compact, compressed
+# More information can be found here http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#output_style
+output_style = :compressed
+
+# We need to load in the Ext4 themes folder, which includes all it's default styling, images, variables and mixins
+load File.join(File.dirname(__FILE__), $ext_path, 'resources', 'themes')
Index: branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/templates/resources/sass/my-ext-theme.scss
===================================================================
--- branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/templates/resources/sass/my-ext-theme.scss	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/ext-4.1.1a/resources/themes/templates/resources/sass/my-ext-theme.scss	(revision 18277)
@@ -0,0 +1,45 @@
+// Unless you want to include all components, you must set $include-default to false
+// IF you set this to true, you can also remove lines 10 to 38 of this file
+$include-default: false;
+
+// Insert your custom variables here.
+// $base-color: #aa0000;
+
+@import 'ext4/default/all';
+
+// You may remove any of the following modules that you
+// do not use in order to create a smaller css file.
+@include extjs-boundlist;
+@include extjs-button;
+@include extjs-btn-group;
+@include extjs-datepicker;
+@include extjs-colorpicker;
+@include extjs-menu;
+@include extjs-grid;
+@include extjs-form;
+    @include extjs-form-field;
+    @include extjs-form-fieldset;
+    @include extjs-form-file;
+    @include extjs-form-checkboxfield;
+    @include extjs-form-checkboxgroup;
+    @include extjs-form-triggerfield;
+    @include extjs-form-htmleditor;
+@include extjs-panel;
+@include extjs-qtip;
+@include extjs-slider;
+@include extjs-progress;
+@include extjs-toolbar;
+@include extjs-window;
+@include extjs-messagebox;
+@include extjs-tabbar;
+@include extjs-tab;
+@include extjs-tree;
+@include extjs-drawcomponent;
+@include extjs-viewport;
+
+// This line changes the location of your images when creating UIs to be relative instead of within the ExtJS directory.
+// You MUST set this to true/string value if you are creating new UIs + supporting legacy browsers.
+// This only applies to new UIs. It does not apply to default component images (i.e. when changing $base-color)
+// The value can either be true, in which case the image path will be "../images/"
+// or a string, of where the path is
+$relative-image-path-for-uis: true; // defaults to "../images/" when true
Index: branches/testFACT++branch/dim/WebDID/index.html
===================================================================
--- branches/testFACT++branch/dim/WebDID/index.html	(revision 18277)
+++ branches/testFACT++branch/dim/WebDID/index.html	(revision 18277)
@@ -0,0 +1,16 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>DID</title>
+<link rel="icon" href="favicon.ico" type="image/x-icon"> 
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon"> 
+<link rel="stylesheet" type="text/css" href="ext-4.2.1.883/resources/css/ext-all.css" />
+
+    <!-- GC -->
+
+<script type="text/javascript" src="ext-4.2.1.883/ext-all.js"></script>
+<script type="text/javascript" src="did.js"></script>
+</head>
+<body>
+</body>
+</html>
Index: branches/testFACT++branch/dim/dim/dic.h
===================================================================
--- branches/testFACT++branch/dim/dim/dic.h	(revision 18277)
+++ branches/testFACT++branch/dim/dim/dic.h	(revision 18277)
@@ -0,0 +1,75 @@
+#ifndef __DICDEFS
+#define __DICDEFS
+
+#include "dim_common.h"
+
+/* part for CFORTRAN */
+
+#define dic_info_service dic_info_service_
+#define dic_info_service_stamped dic_info_service_stamped_
+#define dic_cmnd_service dic_cmnd_service_
+#define dic_cmnd_callback dic_cmnd_callback_
+#define dic_cmnd_service_stamped dic_cmnd_service_stamped_
+#define dic_cmnd_callback_stamped dic_cmnd_callback_stamped_
+#define dic_change_address dic_change_address_
+#define dic_release_service dic_release_service_
+#define dic_find_service dic_find_service_
+#define dic_get_id dic_get_id_
+#define dic_get_quality dic_get_quality_
+#define dic_get_timestamp dic_get_timestamp_
+#define dic_get_format dic_get_format_
+
+/* Routine definition */
+#ifdef __cplusplus
+extern "C" {
+#define __CXX_CONST const
+#else
+#define __CXX_CONST
+#endif
+
+_DIM_PROTOE( unsigned dic_info_service, (__CXX_CONST char *service_name, int req_type,
+				    int req_timeout, void *service_address,
+				    int service_size, void (*usr_routine)(void*, void*, int*),
+				    dim_long tag, void *fill_addr, int fill_size) );
+_DIM_PROTOE( unsigned dic_info_service_stamped, (__CXX_CONST char *service_name, int req_type,
+				    int req_timeout, void *service_address,
+				    int service_size, void (*usr_routine)(void*, void*, int*),
+				    dim_long tag, void *fill_addr, int fill_size) );
+_DIM_PROTOE( int dic_cmnd_callback,      (__CXX_CONST char *service_name, void *service_address,
+				    int service_size, void (*usr_routine)(void*, int*),
+				    dim_long tag) );
+_DIM_PROTOE( int dic_cmnd_service,      (__CXX_CONST char *service_name, void *service_address,
+				    int service_size) );
+_DIM_PROTOE( void dic_change_address,  (unsigned service_id, void *service_address,
+				    int service_size) );
+_DIM_PROTOE( void dic_release_service,  (unsigned service_id) );
+_DIM_PROTOE( int dic_find_service,      (__CXX_CONST char *service_name) );
+_DIM_PROTOE( int dic_get_id,      		(__CXX_CONST char *name) );
+_DIM_PROTOE( int dic_get_quality,  		(unsigned service_id) );
+_DIM_PROTOE( int dic_get_timestamp,  (unsigned service_id, int *secs, int *milisecs) );
+_DIM_PROTOE( char *dic_get_format,      		(unsigned service_id) );
+_DIM_PROTOE( void dic_disable_padding,      		() );
+_DIM_PROTOE( void dic_close_dns,      		() );
+_DIM_PROTOE( void dic_add_error_handler,(void (*usr_routine)(int, int, char*)) );
+_DIM_PROTOE( char *dic_get_error_services,	() );
+_DIM_PROTOE( char *dic_get_server_services,	(int conn_id) );
+_DIM_PROTOE( int dic_get_server,       (char *name ) );
+_DIM_PROTOE( int dic_get_conn_id,      () );
+_DIM_PROTOE( void dic_stop,      () );
+_DIM_PROTOE( int dic_get_server_pid,       (int *pid ) );
+
+#ifdef __cplusplus
+#undef __CXX_CONST
+}
+#endif
+
+#endif
+
+
+
+
+
+
+
+
+
Index: branches/testFACT++branch/dim/dim/dic.hxx
===================================================================
--- branches/testFACT++branch/dim/dim/dic.hxx	(revision 18277)
+++ branches/testFACT++branch/dim/dim/dic.hxx	(revision 18277)
@@ -0,0 +1,513 @@
+#ifndef __DICHHDEFS
+#define __DICHHDEFS
+#include <assert.h>
+#include <stdlib.h>
+#include <string.h>
+#ifndef WIN32
+#include <unistd.h>
+#endif
+#ifdef __VMS
+#include <starlet.h>
+#endif
+#include "dim_core.hxx"
+#include "dim.hxx"
+#include "tokenstring.hxx"
+
+enum DimServiceType {DimSERVICE=1, DimCOMMAND, DimRPC};
+
+class DimClient;
+class DimInfo;
+class DimCurrentInfo;
+class DimRpcInfo;
+
+class DllExp DimInfoHandler{
+public:
+	DimInfo *itsService;
+    DimInfo *getInfo() { return itsService; }; 
+	virtual void infoHandler() = 0;
+	virtual ~DimInfoHandler() {};
+};
+
+class DllExp DimInfo : public DimInfoHandler, public DimTimer{
+
+public :
+	DimInfoHandler *itsHandler;
+
+	DimInfo()
+		{ subscribe((char *)0, 0, (void *)0, 0, 0); };
+	DimInfo(const char *name, int nolink) 
+		{ subscribe((char *)name, 0, &nolink, sizeof(int), 0); };
+	DimInfo(const char *name, int time, int nolink) 
+		{ subscribe((char *)name, time, &nolink, sizeof(int), 0); };
+	DimInfo(const char *name, float nolink) 
+		{ subscribe((char *)name, 0, &nolink, sizeof(float), 0); };
+	DimInfo(const char *name, int time, float nolink) 
+		{ subscribe((char *)name, time, &nolink, sizeof(float), 0); };
+	DimInfo(const char *name, double nolink) 
+		{ subscribe((char *)name, 0, &nolink, sizeof(double), 0); };
+	DimInfo(const char *name, int time, double nolink) 
+		{ subscribe((char *)name, time, &nolink, sizeof(double), 0); };
+	DimInfo(const char *name, longlong nolink) 
+		{ subscribe((char *)name, 0, &nolink, sizeof(longlong), 0); };
+	DimInfo(const char *name, int time, longlong nolink) 
+		{ subscribe((char *)name, time, &nolink, sizeof(longlong), 0); };
+	DimInfo(const char *name, short nolink) 
+		{ subscribe((char *)name, 0, &nolink, sizeof(short), 0); };
+	DimInfo(const char *name, int time, short nolink) 
+		{ subscribe((char *)name, time, &nolink, sizeof(short), 0); };
+	DimInfo(const char *name, char *nolink) 
+		{ subscribe((char *)name, 0, nolink, (int)strlen(nolink)+1, 0); };
+	DimInfo(const char *name, int time, char *nolink) 
+		{ subscribe((char *)name, time, nolink, (int)strlen(nolink)+1, 0); };
+	DimInfo(const char *name, void *nolink, int nolinksize) 
+		{ subscribe((char *)name, 0, nolink, nolinksize, 0); };
+	DimInfo(const char *name, int time, void *nolink, int nolinksize) 
+		{ subscribe((char *)name, time, nolink, nolinksize, 0); };
+
+	DimInfo(const char *name, int nolink, DimInfoHandler *handler) 
+		{ subscribe((char *)name, 0, &nolink, sizeof(int), handler); };
+	DimInfo(const char *name, int time, int nolink, DimInfoHandler *handler) 
+		{ subscribe((char *)name, time, &nolink, sizeof(int), handler); };
+	DimInfo(const char *name, float nolink, DimInfoHandler *handler) 
+		{ subscribe((char *)name, 0, &nolink, sizeof(float), handler); };
+	DimInfo(const char *name, int time, float nolink, DimInfoHandler *handler) 
+		{ subscribe((char *)name, time, &nolink, sizeof(float), handler); };
+	DimInfo(const char *name, double nolink, DimInfoHandler *handler) 
+		{ subscribe((char *)name, 0, &nolink, sizeof(double), handler); };
+	DimInfo(const char *name, int time, double nolink, DimInfoHandler *handler) 
+		{ subscribe((char *)name, time, &nolink, sizeof(double), handler); };
+	DimInfo(const char *name, longlong nolink, DimInfoHandler *handler) 
+		{ subscribe((char *)name, 0, &nolink, sizeof(longlong), handler); };
+	DimInfo(const char *name, int time, longlong nolink, DimInfoHandler *handler) 
+		{ subscribe((char *)name, time, &nolink, sizeof(longlong), handler); };
+	DimInfo(const char *name, short nolink, DimInfoHandler *handler) 
+		{ subscribe((char *)name, 0, &nolink, sizeof(short), handler); };
+	DimInfo(const char *name, int time, short nolink, DimInfoHandler *handler) 
+		{ subscribe((char *)name, time, &nolink, sizeof(short), handler); };
+	DimInfo(const char *name, char *nolink, DimInfoHandler *handler) 
+		{ subscribe((char *)name, 0, nolink, (int)strlen(nolink)+1, handler); };
+	DimInfo(const char *name, int time, char *nolink, DimInfoHandler *handler) 
+		{ subscribe((char *)name, time, nolink, (int)strlen(nolink)+1, handler); };
+	DimInfo(const char *name, void *nolink, int nolinksize, DimInfoHandler *handler) 
+		{ subscribe((char *)name, 0, nolink, nolinksize, handler); };
+	DimInfo(const char *name, int time, void *nolink, int nolinksize, DimInfoHandler *handler) 
+		{ subscribe((char *)name, time, nolink, nolinksize, handler); };
+
+	virtual ~DimInfo();
+	void *itsData;
+	int itsDataSize;
+	int itsSize;
+	int getSize() {return itsSize; };
+	char *getName()  { return itsName; } ;
+	void *getData();
+	int getInt() { return *(int *)getData(); } ;
+	float getFloat() { return *(float *)getData(); } ;
+	double getDouble() { return *(double *)getData(); } ;
+	longlong getLonglong() { return *(longlong *)getData(); } ;
+	short getShort() { return *(short *)getData(); } ;
+	char *getString()  { return (char *)getData(); } ;
+
+	virtual void infoHandler();
+	void timerHandler();
+	virtual void subscribe(char *name, int time, void *nolink, int nolinksize,
+		DimInfoHandler *handler);
+	virtual void doIt();
+	int getQuality();
+	int getTimestamp();
+	int getTimestampMillisecs();
+	char *getFormat();
+	void subscribe(char *name, void *nolink, int nolinksize, int time, 
+		DimInfoHandler *handler) 
+		{ subscribe((char *)name, time, nolink, nolinksize, handler); };
+
+protected :
+	char *itsName;
+	int itsId;
+	int itsTime;
+	int itsType;
+//	int itsTagId;
+	char *itsFormat;
+	void *itsNolinkBuf;
+	int itsNolinkSize;
+	int secs, millisecs;
+};
+
+class DllExp DimStampedInfo : public DimInfo{
+
+public :
+	DimStampedInfo(){};
+	DimStampedInfo(const char *name, int nolink) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(int), 0); };
+	DimStampedInfo(const char *name, int time, int nolink) 
+	{ subscribe((char *)name, time, &nolink, sizeof(int), 0); };
+	DimStampedInfo(const char *name, float nolink) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(float), 0); };
+	DimStampedInfo(const char *name, int time, float nolink) 
+	{ subscribe((char *)name, time, &nolink, sizeof(float), 0); };
+	DimStampedInfo(const char *name, double nolink) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(double), 0); };
+	DimStampedInfo(const char *name, int time, double nolink) 
+	{ subscribe((char *)name, time, &nolink, sizeof(double), 0); };
+	DimStampedInfo(const char *name, longlong nolink) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(longlong), 0); };
+	DimStampedInfo(const char *name, int time, longlong nolink) 
+	{ subscribe((char *)name, time, &nolink, sizeof(longlong), 0); };
+	DimStampedInfo(const char *name, short nolink) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(short), 0); };
+	DimStampedInfo(const char *name, int time, short nolink) 
+	{ subscribe((char *)name, time, &nolink, sizeof(short), 0); };
+	DimStampedInfo(const char *name, char *nolink) 
+	{ subscribe((char *)name, 0, nolink, (int)strlen(nolink)+1, 0); };
+	DimStampedInfo(const char *name, int time, char *nolink) 
+	{ subscribe((char *)name, time, nolink, (int)strlen(nolink)+1, 0); };
+	DimStampedInfo(const char *name, void *nolink, int nolinksize) 
+	{ subscribe((char *)name, 0, nolink, nolinksize, 0); };
+	DimStampedInfo(const char *name, int time, void *nolink, int nolinksize) 
+	{ subscribe((char *)name, time, nolink, nolinksize, 0); };
+
+	DimStampedInfo(const char *name, int nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(int), handler); };
+	DimStampedInfo(const char *name, int time, int nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, &nolink, sizeof(int), handler); };
+	DimStampedInfo(const char *name, float nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(float), handler); };
+	DimStampedInfo(const char *name, int time, float nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, &nolink, sizeof(float), handler); };
+	DimStampedInfo(const char *name, double nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(double), handler); };
+	DimStampedInfo(const char *name, int time, double nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, &nolink, sizeof(double), handler); };
+	DimStampedInfo(const char *name, longlong nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(longlong), handler); };
+	DimStampedInfo(const char *name, int time, longlong nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, &nolink, sizeof(longlong), handler); };
+	DimStampedInfo(const char *name, short nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(short), handler); };
+	DimStampedInfo(const char *name, int time, short nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, &nolink, sizeof(short), handler); };
+		DimStampedInfo(const char *name, char *nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, nolink, (int)strlen(nolink)+1, handler); };
+	DimStampedInfo(const char *name, int time, char *nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, nolink, (int)strlen(nolink)+1, handler); };
+	DimStampedInfo(const char *name, void *nolink, int nolinksize, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, nolink, nolinksize, handler); };
+	DimStampedInfo(const char *name, int time, void *nolink, int nolinksize, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, nolink, nolinksize, handler); };
+
+	virtual ~DimStampedInfo();
+	void subscribe(char *name, void *nolink, int nolinksize, int time, 
+		DimInfoHandler *handler) 
+		{ subscribe((char *)name, time, nolink, nolinksize, handler); };
+private :
+	void doIt();
+	void subscribe(char *name, int time, void *nolink, int nolinksize,
+		DimInfoHandler *handler);
+};
+
+class DllExp DimUpdatedInfo : public DimInfo{
+
+public :
+	DimUpdatedInfo(){};
+	DimUpdatedInfo(const char *name, int nolink) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(int), 0); };
+	DimUpdatedInfo(const char *name, int time, int nolink) 
+	{ subscribe((char *)name, time, &nolink, sizeof(int), 0); };
+	DimUpdatedInfo(const char *name, float nolink) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(float), 0); };
+	DimUpdatedInfo(const char *name, int time, float nolink) 
+	{ subscribe((char *)name, time, &nolink, sizeof(float), 0); };
+	DimUpdatedInfo(const char *name, double nolink) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(double), 0); };
+	DimUpdatedInfo(const char *name, int time, double nolink) 
+	{ subscribe((char *)name, time, &nolink, sizeof(double), 0); };
+	DimUpdatedInfo(const char *name, longlong nolink) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(longlong), 0); };
+	DimUpdatedInfo(const char *name, int time, longlong nolink) 
+	{ subscribe((char *)name, time, &nolink, sizeof(longlong), 0); };
+	DimUpdatedInfo(const char *name, short nolink) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(short), 0); };
+	DimUpdatedInfo(const char *name, int time, short nolink) 
+	{ subscribe((char *)name, time, &nolink, sizeof(short), 0); };
+	DimUpdatedInfo(const char *name, char *nolink) 
+	{ subscribe((char *)name, 0, nolink, (int)strlen(nolink)+1, 0); };
+	DimUpdatedInfo(const char *name, int time, char *nolink) 
+	{ subscribe((char *)name, time, nolink, (int)strlen(nolink)+1, 0); };
+	DimUpdatedInfo(const char *name, void *nolink, int nolinksize) 
+	{ subscribe((char *)name, 0, nolink, nolinksize, 0); };
+	DimUpdatedInfo(const char *name, int time, void *nolink, int nolinksize) 
+	{ subscribe((char *)name, time, nolink, nolinksize, 0); };
+
+	DimUpdatedInfo(const char *name, int nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(int), handler); };
+	DimUpdatedInfo(const char *name, int time, int nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, &nolink, sizeof(int), handler); };
+	DimUpdatedInfo(const char *name, float nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(float), handler); };
+	DimUpdatedInfo(const char *name, int time, float nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, &nolink, sizeof(float), handler); };
+	DimUpdatedInfo(const char *name, double nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(double), handler); };
+	DimUpdatedInfo(const char *name, int time, double nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, &nolink, sizeof(double), handler); };
+	DimUpdatedInfo(const char *name, longlong nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(longlong), handler); };
+	DimUpdatedInfo(const char *name, int time, longlong nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, &nolink, sizeof(longlong), handler); };
+	DimUpdatedInfo(const char *name, short nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, &nolink, sizeof(short), handler); };
+	DimUpdatedInfo(const char *name, int time, short nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, &nolink, sizeof(short), handler); };
+	DimUpdatedInfo(const char *name, char *nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, nolink, (int)strlen(nolink)+1, handler); };
+	DimUpdatedInfo(const char *name, int time, char *nolink, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, nolink, (int)strlen(nolink)+1, handler); };
+	DimUpdatedInfo(const char *name, void *nolink, int nolinksize, DimInfoHandler *handler) 
+	{ subscribe((char *)name, 0, nolink, nolinksize, handler); };
+	DimUpdatedInfo(const char *name, int time, void *nolink, int nolinksize, DimInfoHandler *handler) 
+	{ subscribe((char *)name, time, nolink, nolinksize, handler); };
+
+	virtual ~DimUpdatedInfo();
+	void subscribe(char *name, void *nolink, int nolinksize, int time, 
+		DimInfoHandler *handler) 
+		{ subscribe((char *)name, time, nolink, nolinksize, handler); };
+
+private :
+	void doIt();
+	void subscribe(char *name, int time, void *nolink, int nolinksize,
+		DimInfoHandler *handler);
+};
+
+class DllExp DimCmnd {
+public :
+
+	int wakeUp;
+	int result;
+	int send(char *name, void *data, int datasize);
+	void sendNB(char *name, void *data, int datasize);
+  DimCmnd(){};
+};
+
+class DllExp DimCurrentInfo {
+
+public :
+	void *itsData;
+	int itsDataSize;
+	int itsSize;
+//	int itsTagId;
+	int wakeUp;
+
+	DimCurrentInfo(){
+		subscribe((char *)0, 0, (void *)0, 0); };
+	DimCurrentInfo(const char *name, int nolink) { 
+		subscribe((char *)name, 0, &nolink, sizeof(int)); };
+	DimCurrentInfo(const char *name, float nolink) { 
+		subscribe((char *)name, 0, &nolink, sizeof(float)); };
+	DimCurrentInfo(const char *name, double nolink) { 
+		subscribe((char *)name, 0, &nolink, sizeof(double)); };
+	DimCurrentInfo(const char *name, longlong nolink) { 
+		subscribe((char *)name, 0, &nolink, sizeof(longlong)); };
+	DimCurrentInfo(const char *name, short nolink) { 
+		subscribe((char *)name, 0, &nolink, sizeof(short)); };
+	DimCurrentInfo(const char *name, char *nolink) { 
+		subscribe((char *)name, 0, nolink, (int)strlen(nolink)+1); };
+	DimCurrentInfo(const char *name, void *nolink, int nolinksize) { 
+		subscribe((char *)name, 0, nolink, nolinksize); };
+	DimCurrentInfo(const char *name, int time, int nolink) { 
+		subscribe((char *)name, time, &nolink, sizeof(int)); };
+	DimCurrentInfo(const char *name, int time, float nolink) { 
+		subscribe((char *)name, time, &nolink, sizeof(float)); };
+	DimCurrentInfo(const char *name, int time, double nolink) { 
+		subscribe((char *)name, time, &nolink, sizeof(double)); };
+	DimCurrentInfo(const char *name, int time, longlong nolink) { 
+		subscribe((char *)name, time, &nolink, sizeof(longlong)); };
+	DimCurrentInfo(const char *name, int time, short nolink) { 
+		subscribe((char *)name, time, &nolink, sizeof(short)); };
+	DimCurrentInfo(const char *name, int time, char *nolink) { 
+		subscribe((char *)name, time, nolink, (int)strlen(nolink)+1); };
+	DimCurrentInfo(const char *name, int time, void *nolink, int nolinksize) { 
+		subscribe((char *)name, time, nolink, nolinksize); };
+
+
+	virtual ~DimCurrentInfo();
+	char *getName()  { return itsName; } ;
+	void *getData();
+	int getInt() { return *(int *)getData(); } ;
+	float getFloat() { return *(float *)getData(); } ;
+	double getDouble() { return *(double *)getData(); } ;
+	longlong getLonglong() { return *(longlong *)getData(); } ;
+	short getShort() { return *(short *)getData(); } ;
+	char *getString()  { return (char *)getData(); } ;
+	int getSize()  { getData(); return itsSize; } ;
+	void subscribe(char *name, void *nolink, int nolinksize, int time) 
+		{ subscribe((char *)name, time, nolink, nolinksize); };
+
+private :
+	char *itsName;
+	void *itsNolinkBuf;
+	int itsNolinkSize;
+	void subscribe(char *name, int time, void *nolink, int nolinksize);
+};
+
+class DllExp DimRpcInfo : public DimTimer {
+public :
+	int itsId;
+//	int itsTagId;
+	int itsInit;
+	void *itsData;
+	int itsDataSize;
+	void *itsDataOut;
+	int itsDataOutSize;
+	int itsSize;
+	int wakeUp;
+	int itsWaiting;
+	int itsConnected;
+	void *itsNolinkBuf;
+	int itsNolinkSize;
+	DimRpcInfo *itsHandler;
+
+	DimRpcInfo(const char *name, int nolink) { 
+		subscribe((char *)name, 0, 0, &nolink, sizeof(int), 0); };
+	DimRpcInfo(const char *name, float nolink) { 
+		subscribe((char *)name, 0, 0, &nolink, sizeof(float), 0); };
+	DimRpcInfo(const char *name, double nolink) { 
+		subscribe((char *)name, 0, 0, &nolink, sizeof(double), 0); };
+	DimRpcInfo(const char *name, longlong nolink) { 
+		subscribe((char *)name, 0, 0, &nolink, sizeof(longlong), 0); };
+	DimRpcInfo(const char *name, short nolink) { 
+		subscribe((char *)name, 0, 0, &nolink, sizeof(short), 0); };
+	DimRpcInfo(const char *name, char *nolink) { 
+		subscribe((char *)name, 0, 0, nolink, (int)strlen(nolink)+1, 0); };
+	DimRpcInfo(const char *name, void *nolink, int nolinksize) { 
+		subscribe((char *)name, 0, 0, nolink, nolinksize, 0); };
+
+	DimRpcInfo(const char *name, int time, int nolink) { 
+		subscribe((char *)name, 0, 0, &nolink, sizeof(int), time); };
+	DimRpcInfo(const char *name, int time, float nolink) { 
+		subscribe((char *)name, 0, 0, &nolink, sizeof(float), time); };
+	DimRpcInfo(const char *name, int time, double nolink) { 
+		subscribe((char *)name, 0, 0, &nolink, sizeof(double), time); };
+	DimRpcInfo(const char *name, int time, longlong nolink) { 
+		subscribe((char *)name, 0, 0, &nolink, sizeof(longlong), time); };
+	DimRpcInfo(const char *name, int time, short nolink) { 
+		subscribe((char *)name, 0, 0, &nolink, sizeof(short), time); };
+	DimRpcInfo(const char *name, int time, char *nolink) { 
+		subscribe((char *)name, 0, 0, nolink, (int)strlen(nolink)+1, time); };
+	DimRpcInfo(const char *name, int time, void *nolink, int nolinksize) { 
+		subscribe((char *)name, 0, 0, nolink, nolinksize, time); };
+	
+	virtual void rpcInfoHandler();
+
+	virtual ~DimRpcInfo();
+	int getId() {return itsId;};
+	void keepWaiting() {itsWaiting = 2;};
+	char *getName()  { return itsName; } ;
+	void *getData();
+	int getInt() { return *(int *)getData(); } ;
+	float getFloat() { return *(float *)getData(); } ;
+	double getDouble() { return *(double *)getData(); } ;
+	longlong getLonglong() { return *(longlong *)getData(); } ;
+	short getShort() { return *(short *)getData(); } ;
+	char *getString()  { return (char *)getData(); } ;
+	int getSize()  { getData(); return itsSize; } ;
+
+	void setData(void *data, int size) { doIt(data, size); };
+	void setData(int &data) { doIt(&data, sizeof(int)); } ;
+	void setData(float &data) { doIt(&data, sizeof(float)); } ;
+	void setData(double &data) { doIt(&data, sizeof(double)); } ;
+	void setData(longlong &data) { doIt(&data, sizeof(longlong)); } ;
+	void setData(short &data) { doIt(&data, sizeof(short)); } ;
+	void setData(char *data)  { doIt(data, (int)strlen(data)+1); } ;
+
+private :
+	char *itsName;
+	char *itsNameIn;
+	char *itsNameOut;
+	int itsTimeout;
+	void subscribe(char *name, void *data, int size, 
+		void *nolink, int nolinksize, int timeout);
+	void doIt(void *data, int size);
+	void timerHandler();
+};
+
+class DllExp DimClient : public DimInfoHandler, public DimErrorHandler
+{
+public:
+
+	static char *dimDnsNode;
+	static DimErrorHandler *itsCltError;
+
+	DimClient();
+	virtual ~DimClient();
+	static int sendCommand(const char *name, int data);
+	static int sendCommand(const char *name, float data);
+	static int sendCommand(const char *name, double data);
+	static int sendCommand(const char *name, longlong data);
+	static int sendCommand(const char *name, short data);
+	static int sendCommand(const char *name, const char *data);
+	static int sendCommand(const char *name, void *data, int datasize);
+	static void sendCommandNB(const char *name, int data);
+	static void sendCommandNB(const char *name, float data);
+	static void sendCommandNB(const char *name, double data);
+	static void sendCommandNB(const char *name, longlong data);
+	static void sendCommandNB(const char *name, short data);
+	static void sendCommandNB(const char *name, char *data);
+	static void sendCommandNB(const char *name, void *data, int datasize);
+	static int setExitHandler(const char *serverName);
+	static int killServer(const char *serverName);
+	static int setDnsNode(const char *node);
+	static int setDnsNode(const char *node, int port);
+	static char *getDnsNode();
+	static int getDnsPort();
+	static void addErrorHandler(DimErrorHandler *handler);
+	void addErrorHandler();
+	virtual void errorHandler(int /* severity */, int /* code */, char* /* msg */) {};
+	static char *serverName;
+	// Get Current Server Identifier	
+	static int getServerId();
+	// Get Current Server Process Identifier	
+	static int getServerPid();
+	// Get Current Server Name	
+	static char *getServerName();
+	static char **getServerServices();
+//	static char *getServerServices(int serverId);
+
+	virtual void infoHandler() {};
+
+	static int dicNoCopy;
+	static void setNoDataCopy();
+	static int getNoDataCopy();
+	static int inCallback();
+};
+
+class DllExp DimBrowser
+{
+public :
+
+	DimBrowser();
+
+	~DimBrowser();
+
+	int getServices(const char *serviceName);
+	int getServers();
+	int getServerServices(const char *serverName);
+	int getServerClients(const char *serverName);
+	int getServices(const char *serviceName, int timeout);
+	int getServers(int timeout);
+	int getServerServices(const char *serverName, int timeout);
+	int getServerClients(const char *serverName, int timeout);
+	int getNextService(char *&service, char *&format);
+	int getNextServer(char *&server, char *&node);
+	int getNextServer(char *&server, char *&node, int &pid);
+	int getNextServerService(char *&service, char *&format);
+	int getNextServerClient(char *&client, char *&node);
+
+private:
+
+	TokenString *itsData[5];
+	int currIndex; 
+	char *currToken;
+	char none;
+	DimRpcInfo *browserRpc;
+};
+
+#endif
Index: branches/testFACT++branch/dim/dim/dim.h
===================================================================
--- branches/testFACT++branch/dim/dim/dim.h	(revision 18277)
+++ branches/testFACT++branch/dim/dim/dim.h	(revision 18277)
@@ -0,0 +1,608 @@
+#ifndef __DIMDEFS
+#define __DIMDEFS
+/*
+ * DNA (Delphi Network Access) implements the network layer for the DIM
+ * (Delphi Information Managment) System.
+ *
+ * Started           : 10-11-91
+ * Last modification : 03-08-94
+ * Written by        : C. Gaspar
+ * Adjusted by       : G.C. Ballintijn
+ *
+ */
+
+#include "dim_common.h"
+
+#define DIM_VERSION_NUMBER 2013
+
+
+#define MY_LITTLE_ENDIAN	0x1
+#define MY_BIG_ENDIAN 		0x2
+
+#define VAX_FLOAT		0x10
+#define IEEE_FLOAT 		0x20
+#define AXP_FLOAT		0x30
+
+#define MY_OS9			0x100
+#define IT_IS_FLOAT		0x1000
+
+#ifdef VMS
+#include <ssdef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <starlet.h>
+#include <time.h>
+#define DIM_NOSHARE noshare
+#define RE_ENABLE_AST   long int ast_enable = sys$setast(1);
+#define RE_DISABLE_AST  if (ast_enable != SS$_WASSET) sys$setast(0);
+#define	vtohl(l)	(l)
+#define	htovl(l)	(l)
+#ifdef __alpha
+#define MY_FORMAT MY_LITTLE_ENDIAN+AXP_FLOAT
+#else
+#define MY_FORMAT MY_LITTLE_ENDIAN+VAX_FLOAT
+#endif
+#endif
+
+#ifdef __unix__
+#include <unistd.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <signal.h>
+#ifdef VxWorks
+#include <sigLib.h>
+#endif
+#define DIM_NOSHARE 
+#define RE_ENABLE_AST   sigset_t set, oset;sigemptyset(&set);sigaddset(&set,SIGIO);sigaddset(&set,SIGALRM);sigprocmask(SIG_UNBLOCK,&set,&oset);
+#define RE_DISABLE_AST  sigprocmask(SIG_SETMASK,&oset,0);
+#ifdef MIPSEL
+#define	vtohl(l)	(l)
+#define	htovl(l)	(l)
+#define MY_FORMAT MY_LITTLE_ENDIAN+IEEE_FLOAT
+#endif
+#ifdef MIPSEB
+#define	vtohl(l)	_swapl(l)
+#define	htovl(l)	_swapl(l)
+#define	vtohs(s)	_swaps(s)
+#define	htovs(s)	_swaps(s)
+#define MY_FORMAT MY_BIG_ENDIAN+IEEE_FLOAT
+#endif
+_DIM_PROTO( int _swapl,  (int l) );
+_DIM_PROTO( short _swaps,   (short s) );
+
+#endif
+
+#ifdef WIN32
+#include <windows.h>
+#include <process.h>
+#include <io.h>
+#include <fcntl.h>
+#include <Winsock.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <stdio.h>
+#define DIM_NOSHARE 
+#define RE_ENABLE_AST     
+#define RE_DISABLE_AST    
+#ifdef MIPSEL
+#define	vtohl(l)	(l)
+#define	htovl(l)	(l)
+#define MY_FORMAT MY_LITTLE_ENDIAN+IEEE_FLOAT
+#endif
+#ifdef MIPSEB
+#define	vtohl(l)	_swapl(l)
+#define	htovl(l)	_swapl(l)
+#define	vtohs(s)	_swaps(s)
+#define	htovs(s)	_swaps(s)
+#define MY_FORMAT MY_BIG_ENDIAN+IEEE_FLOAT
+#endif
+_DIM_PROTO( int _swapl,  (int l) );
+_DIM_PROTO( short _swaps,   (short s) );
+#endif
+
+#ifdef OSK
+#include <types.h>
+#ifndef _UCC
+#include <machine/types.h>
+#else
+#define register
+#endif
+#include <inet/in.h>
+#include <time.h>
+#include <stdio.h>
+#include <string.h>
+#define DIM_NOSHARE 
+#define RE_ENABLE_AST      sigmask(DEC_LEVEL);
+#define RE_DISABLE_AST     sigmask(INC_LEVEL);
+#define	vtohl(l)	_swapl(l)
+#define	htovl(l)	_swapl(l)
+#define	vtohs(s)	_swaps(s)
+#define	htovs(s)	_swaps(s)
+#define MY_FORMAT MY_BIG_ENDIAN+IEEE_FLOAT+MY_OS9
+typedef unsigned short	ushort;
+_DIM_PROTO( char *getenv,  (char *name) );
+_DIM_PROTO( void *malloc,  (unsigned size) );
+_DIM_PROTO( void *realloc, (void *ptr, unsigned size) );
+_DIM_PROTO( int _swapl,   (int l) );
+_DIM_PROTO( short _swaps,   (short s) );
+#endif
+
+#define	TRUE	1
+#define	FALSE	0
+
+#define DNS_TASK	"DIM_DNS"
+#define DNS_PORT	2505			/* Name server port          */
+#define SEEK_PORT	0			/* server should seek a port */
+
+#define MIN_BIOCNT	 	50
+#ifdef OSK
+#define DIS_DNS_TMOUT_MIN	5
+#define DIS_DNS_TMOUT_MAX	10
+#define DIC_DNS_TMOUT_MIN	5
+#define DIC_DNS_TMOUT_MAX	10
+#define MAX_SERVICE_UNIT 	32
+#define MAX_REGISTRATION_UNIT 100
+#define CONN_BLOCK		32
+#define MAX_CONNS		32
+#define ID_BLOCK		64
+#define TCP_RCV_BUF_SIZE	4096
+#define TCP_SND_BUF_SIZE	4096
+#else
+#define DIS_DNS_TMOUT_MIN	5
+#define DIS_DNS_TMOUT_MAX	10
+#define DIC_DNS_TMOUT_MIN	5
+#define DIC_DNS_TMOUT_MAX	10
+#define MAX_SERVICE_UNIT 	100
+#define MAX_REGISTRATION_UNIT 100
+#define CONN_BLOCK		256
+#define MAX_CONNS		1024
+#define ID_BLOCK		512
+#define TCP_RCV_BUF_SIZE	/*16384*//*32768*/65536
+#define TCP_SND_BUF_SIZE	/*16384*//*32768*/65536
+#endif
+#define DID_DNS_TMOUT_MIN	5
+#define DID_DNS_TMOUT_MAX	10
+/*
+#define WATCHDOG_TMOUT_MIN	120
+#define WATCHDOG_TMOUT_MAX	180
+*/
+#define WATCHDOG_TMOUT_MIN	60
+#define WATCHDOG_TMOUT_MAX	90
+/*
+#define WATCHDOG_TMOUT_MIN	15
+#define WATCHDOG_TMOUT_MAX	25
+*/
+#define MAX_NODE_NAME		40
+#define MAX_TASK_NAME		40
+#define MAX_NAME 		132
+/*
+#define MAX_CMND 		16384
+#define MAX_IO_DATA 	65535
+#define MAX_IO_DATA		(TCP_SND_BUF_SIZE - 16)
+*/
+typedef enum { DNS_DIS_REGISTER, DNS_DIS_KILL, DNS_DIS_STOP, 
+			   DNS_DIS_EXIT, DNS_DIS_SOFT_EXIT } DNS_DIS_TYPES;
+typedef enum { RD_HDR, RD_DATA, RD_DUMMY } CONN_STATE;
+typedef enum { NOSWAP, SWAPS, SWAPL, SWAPD} SWAP_TYPE;
+
+#define DECNET			0		/* Decnet as transport layer */
+#define TCPIP			1		/* Tcpip as transport layer  */
+#define BOTH			2		/* Both protocols allowed    */
+
+#define	STA_DISC		(-1)		/* Connection lost           */
+#define	STA_DATA		0		/* Data received             */
+#define	STA_CONN		1		/* Connection made           */
+
+#define	START_PORT_RANGE	5100		/* Lowest port to use        */
+#define	STOP_PORT_RANGE		10000		/* Highest port to use       */
+#define	TEST_TIME_OSK		15		/* Interval to test conn.    */
+#define	TEST_TIME_VMS		30		/* Interval to test conn.    */
+#define	TEST_WRITE_TAG		25		/* DTQ tag for test writes   */
+#define	WRITE_TMOUT			5		/* Interval to wait while writing.    */
+
+#define	OPN_MAGIC		0xc0dec0de	/* Magic value 1st packet    */
+#define	HDR_MAGIC		0xfeadfead	/* Magic value in header     */
+#define	LONG_HDR_MAGIC	0xfeadc0de	/* Magic value in long header*/
+#define	TST_MAGIC		0x11131517	/* Magic value, test write   */
+#define	TRP_MAGIC		0x71513111	/* Magic value, test reply   */
+
+/* String Format */
+
+typedef struct{
+	int par_num;
+	short par_bytes;
+	short flags;     /* bits 0-1 is type of swap, bit 4 id float conversion */
+}FORMAT_STR;
+
+/* Packet sent by the client to the server inside DNA */
+typedef struct{
+	int code;
+	char node[MAX_NODE_NAME];
+	char task[MAX_TASK_NAME];
+} DNA_NET;
+
+/* Packet sent by the client to the server */
+typedef struct{
+	int size;
+	char service_name[MAX_NAME];
+	int service_id;
+	int type;
+	int timeout;
+	int format;
+	int buffer[1];
+} DIC_PACKET;
+
+#define DIC_HEADER		(MAX_NAME + 20)
+
+/* Packets sent by the server to the client */
+typedef struct{
+	int size;
+	int service_id;
+	int buffer[1];
+} DIS_PACKET;
+
+#define DIS_HEADER		8
+
+typedef struct{
+	int size;
+	int service_id;
+	int time_stamp[2];
+	int quality;
+	int reserved[3];
+	int buffer[1];
+} DIS_STAMPED_PACKET;
+
+#define DIS_STAMPED_HEADER		32
+
+/* Packet sent by the server to the name_server */
+typedef struct{
+	char service_name[MAX_NAME];
+	int service_id;
+	char service_def[MAX_NAME];
+} SERVICE_REG;
+	
+typedef struct{
+	int size;
+	SRC_TYPES src_type;
+	char node_name[MAX_NODE_NAME];
+	char task_name[MAX_TASK_NAME-4];
+	char node_addr[4];
+	int pid;
+	int port;
+	int protocol;
+	int format;
+	int n_services;
+	SERVICE_REG services[MAX_SERVICE_UNIT];
+} DIS_DNS_PACKET;
+
+#define DIS_DNS_HEADER		(MAX_NODE_NAME + MAX_TASK_NAME + 28) 
+
+/* Packet sent by the name_server to the server */
+typedef struct {
+	int size;
+	int type;
+} DNS_DIS_PACKET;
+
+#define DNS_DIS_HEADER		8
+
+/* Packet sent by the client to the name_server */
+typedef struct{
+	char service_name[MAX_NAME];
+	int service_id;
+} SERVICE_REQ;
+	
+typedef struct{
+	int size;
+	SRC_TYPES src_type;
+	SERVICE_REQ service;
+} DIC_DNS_PACKET;
+
+/* Packet sent by the name_server to the client */
+typedef struct {
+	int size;
+	int service_id;
+	char service_def[MAX_NAME];
+	char node_name[MAX_NODE_NAME];
+	char task_name[MAX_TASK_NAME-4];
+	char node_addr[4];
+	int pid;
+	int port;
+	int protocol;
+	int format;
+} DNS_DIC_PACKET;
+
+#define DNS_DIC_HEADER		(MAX_NODE_NAME + MAX_TASK_NAME + MAX_NAME + 24) 
+
+typedef struct {
+	char name[MAX_NAME];
+	char node[MAX_NODE_NAME];
+	char task[MAX_TASK_NAME];
+	int type;
+	int status;
+	int n_clients;
+} DNS_SERV_INFO;
+
+typedef struct {
+	char name[MAX_NAME];
+	int type;
+	int status;
+	int n_clients;
+} DNS_SERVICE_INFO;
+
+typedef struct {
+	char node[MAX_NODE_NAME];
+	char task[MAX_TASK_NAME];
+	int pid;
+	int n_services;
+} DNS_SERVER_INFO;
+
+typedef struct {
+	DNS_SERVER_INFO server;
+	DNS_SERVICE_INFO services[1];
+} DNS_DID;
+
+typedef struct {
+	char node[MAX_NODE_NAME];
+	char task[MAX_TASK_NAME];
+} DNS_CLIENT_INFO;
+
+typedef struct {
+	int header_size;
+	int data_size;
+	int header_magic;
+} DNA_HEADER;
+
+typedef struct {
+	int header_size;
+	int data_size;
+	int header_magic;
+	int time_stamp[2];
+	int quality;
+} DNA_LONG_HEADER;
+
+/* Connection handling */
+
+typedef struct timer_entry{
+	struct timer_entry *next;
+	struct timer_entry *prev;
+	struct timer_entry *next_done;
+	int time;
+	int time_left;
+	void (*user_routine)();
+	dim_long tag;
+} TIMR_ENT;
+
+typedef struct {
+	int busy;
+	void (*read_ast)();
+	void (*error_ast)();
+	int *buffer;
+	int buffer_size;
+	char *curr_buffer;
+	int curr_size;
+	int full_size;
+	int protocol;
+	CONN_STATE state;
+	int writing;
+	int saw_init;
+} DNA_CONNECTION;
+
+extern DllExp DIM_NOSHARE DNA_CONNECTION *Dna_conns;
+
+typedef struct {
+	int channel;
+	int mbx_channel;
+	void (*read_rout)();
+	char *buffer;
+	int size;
+/*
+	unsigned short *iosb_r;
+	unsigned short *iosb_w;
+*/
+	char node[MAX_NODE_NAME];
+	char task[MAX_TASK_NAME];
+	int port;
+	int reading;
+	int timeout;
+	int write_timedout;
+	TIMR_ENT *timr_ent;
+	time_t last_used;
+} NET_CONNECTION;
+ 
+extern DllExp DIM_NOSHARE NET_CONNECTION *Net_conns;
+
+typedef struct {
+	char node_name[MAX_NODE_NAME];
+	char task_name[MAX_TASK_NAME];
+	int port;
+	int pid;
+	char *service_head;
+} DIC_CONNECTION;
+
+extern DIM_NOSHARE DIC_CONNECTION *Dic_conns;
+
+typedef struct {
+	SRC_TYPES src_type;
+	char node_name[MAX_NODE_NAME];
+	char task_name[MAX_TASK_NAME-4];
+	char node_addr[4];
+	int pid;
+	int port;
+	char *service_head;
+	char *node_head;
+	int protocol;
+	int validity;
+	int n_services;
+	int old_n_services;
+	TIMR_ENT *timr_ent;
+	int already;
+	char long_task_name[MAX_NAME];
+} DNS_CONNECTION;
+
+extern DllExp DIM_NOSHARE DNS_CONNECTION *Dns_conns;
+
+extern DllExp DIM_NOSHARE int Curr_N_Conns;
+
+/* Client definitions needed by dim_jni.c (from H.Essel GSI) */
+typedef enum {
+	NOT_PENDING, WAITING_DNS_UP, WAITING_DNS_ANSWER, WAITING_SERVER_UP,
+	WAITING_CMND_ANSWER, DELETED
+} PENDING_STATES;
+
+typedef struct dic_serv {
+	struct dic_serv *next;
+	struct dic_serv *prev;
+	char serv_name[MAX_NAME];
+	int serv_id;
+	FORMAT_STR format_data[MAX_NAME/4];
+	char def[MAX_NAME];
+	int format;
+	int type;
+	int timeout;
+	int curr_timeout;
+	int *serv_address;
+	int serv_size;
+	int *fill_address;
+	int fill_size;
+	void (*user_routine)();
+	dim_long tag;
+	TIMR_ENT *timer_ent;
+	int conn_id;
+	PENDING_STATES pending;
+	int tmout_done;
+	int stamped;
+	int time_stamp[2];
+	int quality;
+    int tid;
+} DIC_SERVICE;
+
+/* PROTOTYPES */
+#ifdef __cplusplus
+extern "C" {
+#define __CXX_CONST const
+#else
+#define __CXX_CONST
+#endif
+
+/* DNA */
+_DIM_PROTOE( int dna_start_read,    (int conn_id, int size) );
+_DIM_PROTOE( void dna_test_write,   (int conn_id) );
+_DIM_PROTOE( int dna_write,         (int conn_id, __CXX_CONST void *buffer, int size) );
+_DIM_PROTOE( int dna_write_nowait,  (int conn_id, __CXX_CONST void *buffer, int size) );
+_DIM_PROTOE( int dna_open_server,   (__CXX_CONST char *task, void (*read_ast)(), int *protocol,
+				int *port, void (*error_ast)()) );
+_DIM_PROTOE( int dna_get_node_task, (int conn_id, char *node, char *task) );
+_DIM_PROTOE( int dna_open_client,   (__CXX_CONST char *server_node, __CXX_CONST char *server_task, int port,
+                                int server_protocol, void (*read_ast)(), void (*error_ast)(), SRC_TYPES src_type ));
+_DIM_PROTOE( int dna_close,         (int conn_id) );
+_DIM_PROTOE( void dna_report_error, (int conn_id, int code, char *routine_name) );
+
+
+/* TCPIP */
+_DIM_PROTOE( int tcpip_open_client,     (int conn_id, char *node, char *task,
+                                    int port) );
+_DIM_PROTOE( int tcpip_open_server,     (int conn_id, char *task, int *port) );
+_DIM_PROTOE( int tcpip_open_connection, (int conn_id, int channel) );
+_DIM_PROTOE( int tcpip_start_read,      (int conn_id, char *buffer, int size,
+                                    void (*ast_routine)()) );
+_DIM_PROTOE( int tcpip_start_listen,    (int conn_id, void (*ast_routine)()) );
+_DIM_PROTOE( int tcpip_write,           (int conn_id, char *buffer, int size) );
+_DIM_PROTOE( void tcpip_get_node_task,  (int conn_id, char *node, char *task) );
+_DIM_PROTOE( int tcpip_close,           (int conn_id) );
+_DIM_PROTOE( int tcpip_failure,         (int code) );
+_DIM_PROTOE( void tcpip_report_error,   (int code) );
+
+
+/* DTQ */
+_DIM_PROTOE( int dtq_create,          (void) );
+_DIM_PROTOE( int dtq_delete,          (int queue_id) );
+_DIM_PROTOE( TIMR_ENT *dtq_add_entry, (int queue_id, int time,
+                                  void (*user_routine)(), dim_long tag) );
+_DIM_PROTOE( int dtq_clear_entry,     (TIMR_ENT *entry) );
+_DIM_PROTOE( int dtq_rem_entry,       (int queue_id, TIMR_ENT *entry) );
+
+/* UTIL */
+typedef struct dll {
+	struct dll *next;
+	struct dll *prev;
+	char user_info[1];
+} DLL;
+
+typedef struct sll {
+	struct sll *next;
+	char user_info[1];
+} SLL;
+
+_DIM_PROTO( void DimDummy,        () );     
+_DIM_PROTOE( void conn_arr_create, (SRC_TYPES type) );
+_DIM_PROTOE( int conn_get,         (void) );
+_DIM_PROTOE( void conn_free,       (int conn_id) );
+_DIM_PROTOE( void *arr_increase,   (void *conn_ptr, int conn_size, int n_conns) );
+_DIM_PROTOE( void id_arr_create,   () );
+_DIM_PROTOE( void *id_arr_increase,(void *id_ptr, int id_size, int n_ids) );
+
+_DIM_PROTOE( void dll_init,         ( DLL *head ) );
+_DIM_PROTOE( void dll_insert_queue, ( DLL *head, DLL *item ) );
+_DIM_PROTOE( void dll_insert_after, ( DLL *after, DLL *item ) );
+_DIM_PROTOE( DLL *dll_search,       ( DLL *head, char *data, int size ) );
+_DIM_PROTOE( DLL *dll_get_next,     ( DLL *head, DLL *item ) );
+_DIM_PROTOE( DLL *dll_get_prev,     ( DLL *head, DLL *item ) );
+_DIM_PROTOE( int dll_empty,         ( DLL *head ) );
+_DIM_PROTOE( void dll_remove,       ( DLL *item ) );
+
+_DIM_PROTOE( void sll_init,               ( SLL *head ) );
+_DIM_PROTOE( int sll_insert_queue,        ( SLL *head, SLL *item ) );
+_DIM_PROTOE( SLL *sll_search,             ( SLL *head, char *data, int size ) );
+_DIM_PROTOE( SLL *sll_get_next,           ( SLL *item ) );
+_DIM_PROTOE( int sll_empty,               ( SLL *head ) );
+_DIM_PROTOE( int sll_remove,              ( SLL *head, SLL *item ) );
+_DIM_PROTOE( SLL *sll_remove_head,        ( SLL *head ) );
+_DIM_PROTOE( SLL *sll_search_next_remove, ( SLL *item, int offset, char *data, int size ) );
+_DIM_PROTOE( SLL *sll_get_head, 		  ( SLL *head ) );
+
+_DIM_PROTOE( int HashFunction,         ( char *name, int max ) );
+
+_DIM_PROTOE( int copy_swap_buffer_out, (int format, FORMAT_STR *format_data, 
+					void *buff_out, void *buff_in, int size) );
+_DIM_PROTOE( int copy_swap_buffer_in, (FORMAT_STR *format_data, void *buff_out, 
+					void *buff_in, int size) );
+_DIM_PROTOE( int get_node_name, (char *node_name) );
+
+_DIM_PROTOE( int get_dns_port_number, () );
+
+_DIM_PROTOE( int get_dns_node_name, ( char *node_name ) );
+
+_DIM_PROTOE( int get_dns_accepted_domains, ( char *domains ) );
+_DIM_PROTOE( int get_dns_accepted_nodes, ( char *nodes ) );
+
+_DIM_PROTO( double _swapd_by_addr, (double *d) );
+_DIM_PROTO( int _swapl_by_addr, (int *l) );
+_DIM_PROTO( short _swaps_by_addr, (short *s) );
+_DIM_PROTO( void _swapd_buffer, (double *dout, double *din, int n) );
+_DIM_PROTO( void _swapl_buffer, (int *lout, int *lin, int n) );
+_DIM_PROTO( void _swaps_buffer, (short *sout, short *sin, int n) );
+
+#ifdef __cplusplus
+#undef __CXX_CONST
+}
+#endif
+
+
+#define SIZEOF_CHAR 1
+#define SIZEOF_SHORT 2
+#define SIZEOF_LONG 4
+#define SIZEOF_FLOAT 4
+#define SIZEOF_DOUBLE 8
+
+#if defined(OSK) && !defined(_UCC)
+#	define inc_pter(p,i) (char *)p += (i)
+#else
+#	define inc_pter(p,i) p = (void *)((char *)p + (i))
+#endif
+
+#endif
Index: branches/testFACT++branch/dim/dim/dim.hxx
===================================================================
--- branches/testFACT++branch/dim/dim/dim.hxx	(revision 18277)
+++ branches/testFACT++branch/dim/dim/dim.hxx	(revision 18277)
@@ -0,0 +1,60 @@
+#ifndef DIM_HH
+#define DIM_HH
+
+#include "dim_common.h"
+#include "sllist.hxx"
+#include "dllist.hxx"
+
+class DimCore
+{
+public:
+	static int inCallback;
+};
+
+class DllExp DimErrorHandler{
+public:
+	virtual void errorHandler(int severity, int code, char *msg) = 0;
+	virtual ~DimErrorHandler() {};
+};
+
+class DllExp DimTimer
+{
+public:
+	int firedFlag;
+	int runningFlag;
+	DimTimer();
+	DimTimer(int time);
+	virtual ~DimTimer();
+	int start(int time);
+	int stop();
+	int fired() { return firedFlag;}; 
+	void clear() { firedFlag = 0;};
+	virtual void timerHandler() { };
+};
+
+class DllExp DimThread
+{
+public:
+	long itsId;
+	DimThread();
+	virtual ~DimThread();
+	int start();
+//	int stop();
+//	void start(int time);
+//	int stop();
+//	int fired() { return firedFlag;}; 
+//	void clear() { firedFlag = 0;};
+	virtual void threadHandler() { };
+};
+
+class DllExp DimUtil
+{
+public:
+	static char *getEnvVar(char *varName);
+	DimUtil();
+	~DimUtil();
+	static char *itsBuffer;
+	static int itsBufferSize;
+};
+
+#endif
Index: branches/testFACT++branch/dim/dim/dim_common.h
===================================================================
--- branches/testFACT++branch/dim/dim/dim_common.h	(revision 18277)
+++ branches/testFACT++branch/dim/dim/dim_common.h	(revision 18277)
@@ -0,0 +1,311 @@
+#ifndef __COMMONDEFS
+#define __COMMONDEFS
+
+/* Service type definition */
+
+#ifndef ONCE_ONLY
+#define ONCE_ONLY	0x01
+#define TIMED		0x02
+#define MONITORED	0x04
+#define COMMAND		0x08
+#define DIM_DELETE	0x10
+#define MONIT_ONLY	0x20
+#define UPDATE 		0x40
+#define TIMED_ONLY	0x80
+#define MONIT_FIRST 0x100
+#define MAX_TYPE_DEF    0x100
+#define STAMPED       0x1000
+
+typedef enum { SRC_NONE, SRC_DIS, SRC_DIC, SRC_DNS, SRC_DNA, SRC_USR }SRC_TYPES;
+
+#ifdef __APPLE__
+#ifndef unix
+#define unix
+#endif
+#endif
+
+#ifdef __Lynx__
+#ifndef unix
+#define unix
+#endif
+#endif
+
+#ifdef unix
+#ifndef __unix__
+#define __unix__
+#endif
+#endif
+
+#ifdef linux
+#ifndef __linux__
+#define __linux__
+#endif
+#endif
+
+#if defined (_WIN64)
+typedef __int64		longlong;
+typedef longlong dim_long;
+#elif defined(WIN32)
+typedef __int64		longlong;
+typedef long	dim_long;
+#elif defined(__linux__)
+typedef long long int longlong;
+typedef long dim_long;
+#else
+#include <sys/types.h> 
+typedef int64_t	longlong;
+typedef long dim_long;
+#endif
+
+#endif
+
+#ifndef OSK
+#	ifdef _OSK
+#		define OSK
+#	endif
+#endif
+
+
+#ifdef __VMS
+#define VMS
+#endif
+
+#ifndef _DIM_PROTO
+#ifndef OSK		/* Temorary hack */
+#	if defined(__cplusplus) /* || (__STDC__ == 1) || defined(_ANSI_EXT) || defined(ultrix) */
+#		define	_DIM_PROTO(func,param)	func param
+#	else
+#		define _DIM_PROTO(func,param)	func ()
+#	endif
+#else
+#	define _DIM_PROTO(func,param)	func ()
+#endif
+#ifdef WIN32
+#ifdef DIMLIB
+#	define _DIM_PROTOE(func,param) __declspec(dllexport) _DIM_PROTO(func,param)
+#	define DllExp __declspec(dllexport)
+#else
+#	define _DIM_PROTOE(func,param) __declspec(dllimport) _DIM_PROTO(func,param)
+#	define DllExp __declspec(dllimport)
+#endif
+#else
+#	define _DIM_PROTOE(func,param) _DIM_PROTO(func,param)
+#	define DllExp
+#endif
+#endif
+
+#if defined (hpux) || defined (__osf__) || defined(_AIX)  || defined(WIN32)
+#ifndef NOTHREADS
+#define NOTHREADS
+#endif
+#endif
+
+#ifndef VMS
+#ifndef WIN32
+#ifdef NOTHREADS
+#ifndef DIMLIB
+#ifndef sleep
+#define sleep(t) dtq_sleep(t)
+#endif
+#endif
+#endif
+#endif
+#endif
+
+#ifdef VMS
+#include <ssdef.h>
+#define DISABLE_AST     long int ast_enable = sys$setast(0);
+#define ENABLE_AST      if (ast_enable == SS$_WASSET) sys$setast(1);
+#define dim_enable()    sys$setast(1);
+#endif
+
+#ifdef __unix__
+#include <signal.h>
+#include <unistd.h>
+
+extern int DIM_Threads_OFF;
+
+#define DISABLE_SIG     sigset_t set, oset; if (DIM_Threads_OFF) {\
+                                                sigemptyset(&set);\
+												sigaddset(&set,SIGIO);\
+												sigaddset(&set,SIGALRM);\
+												sigprocmask(SIG_BLOCK,&set,&oset);}
+#define ENABLE_SIG       if (DIM_Threads_OFF) {\
+                                                sigprocmask(SIG_SETMASK,&oset,0);}
+
+/*
+#define DISABLE_SIG     sigset_t set, oset; sigemptyset(&set);\
+						sigaddset(&set,SIGIO);\
+						sigaddset(&set,SIGALRM);\
+						sigprocmask(SIG_BLOCK,&set,&oset);
+#define ENABLE_SIG      sigprocmask(SIG_SETMASK,&oset,0);
+*/
+
+#define DISABLE_AST     DISABLE_SIG DIM_LOCK
+#define ENABLE_AST      DIM_UNLOCK ENABLE_SIG
+
+#ifdef VxWorks
+#define DIM_LOCK taskLock();
+#define DIM_UNLOCK taskUnlock();
+#else
+
+#ifndef NOTHREADS
+#include <pthread.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_DIM_PROTOE( void dim_lock,		() );
+_DIM_PROTOE( void dim_unlock,	() );
+_DIM_PROTOE( void dim_wait_cond,		() );
+_DIM_PROTOE( void dim_signal_cond,	() );
+#ifdef __cplusplus
+}
+#endif
+
+#define DIM_LOCK 	dim_lock();
+#define DIM_UNLOCK	dim_unlock();
+
+#else
+#include <time.h>
+#define DIM_LOCK
+#define DIM_UNLOCK
+#endif
+#endif
+#endif
+#ifdef OSK
+#define INC_LEVEL               1
+#define DEC_LEVEL               (-1)
+#define DISABLE_AST     sigmask(INC_LEVEL);
+#define ENABLE_AST      sigmask(DEC_LEVEL);
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#define __CXX_CONST const
+#else
+#define __CXX_CONST
+#endif
+
+_DIM_PROTOE( int id_get,           (void *ptr, int type) );
+_DIM_PROTOE( void id_free,         (int id, int type) );
+_DIM_PROTOE( void *id_get_ptr,     (int id, int type) );
+
+_DIM_PROTOE( unsigned int dtq_sleep,	(unsigned int secs) );
+_DIM_PROTOE( void dtq_start_timer,      (int secs, void(*rout)(void*), void *tag) );
+_DIM_PROTOE( int dtq_stop_timer,		(void *tag) );
+_DIM_PROTOE( void dim_init,				() );
+_DIM_PROTOE( void dim_no_threads,		() );
+_DIM_PROTOE( void dna_set_test_write,	(int conn_id, int time) );
+_DIM_PROTOE( void dna_rem_test_write,	(int conn_id) );
+_DIM_PROTOE( int dim_set_dns_node,		(__CXX_CONST char *node) );
+_DIM_PROTOE( int dim_get_dns_node,		(char *node) );
+_DIM_PROTOE( int dim_set_dns_port,		(int port) );
+_DIM_PROTOE( int dim_get_dns_port,		() );
+_DIM_PROTOE( void dic_set_debug_on,		() );
+_DIM_PROTOE( void dic_set_debug_off,	() );
+_DIM_PROTOE( void dim_print_msg,		(__CXX_CONST char *msg, int severity) );
+_DIM_PROTOE( void dim_print_date_time,		() );
+_DIM_PROTOE( void dim_set_write_timeout,		(int secs) );
+_DIM_PROTOE( int dim_get_write_timeout,		() );
+_DIM_PROTOE( void dim_usleep,	(unsigned int t) );
+_DIM_PROTOE( int dim_wait,		(void) );
+_DIM_PROTOE( int dim_get_priority,		(int dim_thread, int prio) );
+_DIM_PROTOE( int dim_set_priority,		(int dim_thread, int *prio) );
+_DIM_PROTOE( int dim_set_scheduler_class,		(int sched_class) );
+_DIM_PROTOE( int dim_get_scheduler_class,		(int *sched_class) );
+_DIM_PROTOE( dim_long dim_start_thread,    (void(*rout)(void*), void *tag) );
+_DIM_PROTOE( int dic_set_dns_node,		(__CXX_CONST char *node) );
+_DIM_PROTOE( int dic_get_dns_node,		(char *node) );
+_DIM_PROTOE( int dic_set_dns_port,		(int port) );
+_DIM_PROTOE( int dic_get_dns_port,		() );
+_DIM_PROTOE( int dis_set_dns_node,		(__CXX_CONST char *node) );
+_DIM_PROTOE( int dis_get_dns_node,		(char *node) );
+_DIM_PROTOE( int dis_set_dns_port,		(int port) );
+_DIM_PROTOE( int dis_get_dns_port,		() );
+_DIM_PROTOE( void dim_stop,				() );
+_DIM_PROTOE( int dim_stop_thread,		(dim_long tid) );
+_DIM_PROTOE( dim_long dis_add_dns,		(__CXX_CONST char *node, int port) );
+_DIM_PROTOE( dim_long dic_add_dns,		(__CXX_CONST char *node, int port) );
+_DIM_PROTOE( int dim_get_env_var,		(__CXX_CONST char *env_var, char *value, int value_size) );
+_DIM_PROTOE( int dim_set_write_buffer_size,		(int bytes) );
+_DIM_PROTOE( int dim_get_write_buffer_size,		() );
+_DIM_PROTOE( int dim_set_read_buffer_size,		(int bytes) );
+_DIM_PROTOE( int dim_get_read_buffer_size,		() );
+_DIM_PROTOE( void dis_set_debug_on,		() );
+_DIM_PROTOE( void dis_set_debug_off,	() );
+_DIM_PROTOE( void dim_set_keepalive_timeout,		(int secs) );
+_DIM_PROTOE( int dim_get_keepalive_timeout,		() );
+_DIM_PROTOE( void dim_set_listen_backlog,		(int size) );
+_DIM_PROTOE( int dim_get_listen_backlog,		() );
+
+#ifdef WIN32
+#define getpid _getpid
+_DIM_PROTOE( void dim_pause,		() );
+_DIM_PROTOE( void dim_wake_up,	() );
+_DIM_PROTOE( void dim_lock,		() );
+_DIM_PROTOE( void dim_unlock,	() );
+_DIM_PROTOE( void dim_sleep,	(unsigned int t) );
+_DIM_PROTOE( void dim_win_usleep,	(unsigned int t) );
+#define sleep(t)	dim_sleep(t);
+#define usleep(t)	dim_win_usleep(t);
+#define pause() 	dim_pause();
+#define wake_up()	dim_wake_up();
+#define DIM_LOCK 	dim_lock();
+#define DIM_UNLOCK	dim_unlock();
+#define DISABLE_AST	DIM_LOCK
+#define ENABLE_AST  DIM_UNLOCK
+#endif
+
+#ifdef __cplusplus
+}
+#undef __CXX_CONST
+#endif
+
+_DIM_PROTOE( void dim_print_date_time_millis,		() );
+
+/* ctime usage */
+#if defined (solaris) || (defined (LYNXOS) && !defined (__Lynx__) )
+#define my_ctime(t,str,size) ctime_r(t,str,size)
+#else 
+#if defined (__linux__) || defined (__Lynx__)
+#define my_ctime(t,str,size) ctime_r(t,str)
+#else
+#define my_ctime(t,str,size) strcpy(str,(const char *)ctime(t))
+#endif
+#endif
+
+/* DIM Error Severities*/
+typedef enum { DIM_INFO, DIM_WARNING, DIM_ERROR, DIM_FATAL }DIM_SEVERITIES;
+/* DIM Error codes */
+#define DIMDNSUNDEF 0x1		/* DIM_DNS_NODE undefined			FATAL */
+#define DIMDNSREFUS 0x2		/* DIM_DNS refuses connection		FATAL */
+#define DIMDNSDUPLC 0x3		/* Service already exists in DNS	FATAL */
+#define DIMDNSEXIT  0x4		/* DNS requests server to EXIT		FATAL */
+#define DIMDNSTMOUT 0x5		/* Server failed sending Watchdog	WARNING */
+
+#define DIMSVCDUPLC 0x10	/* Service already exists in Server	ERROR */
+#define DIMSVCFORMT 0x11	/* Bat format string for service	ERROR */
+#define DIMSVCINVAL 0x12	/* Service ID invalid				ERROR */
+#define DIMSVCTOOLG 0x13	/* Service name too long			ERROR */
+
+#define DIMTCPRDERR	0x20	/* TCP/IP read error				ERROR */
+#define DIMTCPWRRTY	0x21	/* TCP/IP write	error - Retrying	WARNING */
+#define DIMTCPWRTMO	0x22	/* TCP/IP write error - Disconnect	ERROR */
+#define DIMTCPLNERR	0x23	/* TCP/IP listen error				ERROR */
+#define DIMTCPOPERR	0x24	/* TCP/IP open server error			ERROR */
+#define DIMTCPCNERR	0x25	/* TCP/IP connection error			ERROR */
+#define DIMTCPCNEST	0x26	/* TCP/IP connection established	INFO */
+
+#define DIMDNSCNERR	0x30	/* Connection to DNS failed			ERROR */
+#define DIMDNSCNEST	0x31	/* Connection to DNS established	INFO */
+		
+#endif                         
+
+
+
+
+
+
+
Index: branches/testFACT++branch/dim/dim/dim_core.hxx
===================================================================
--- branches/testFACT++branch/dim/dim/dim_core.hxx	(revision 18277)
+++ branches/testFACT++branch/dim/dim/dim_core.hxx	(revision 18277)
@@ -0,0 +1,34 @@
+#ifndef DIM_CORE
+#define DIM_CORE
+
+   #if defined __cplusplus
+         /* If the functions in this header have C linkage, this
+           * will specify linkage for all C++ language compilers.
+           */
+         extern "C" {
+   #endif
+
+   # if defined __DECC || defined __DECCXX
+         /* If you are using pragmas that are only defined
+           * with DEC C and DEC C++, this line is necessary
+           * for both C and C++ compilers.   A common error
+           * is to only have #ifdef __DECC, which causes
+           * the compiler to skip the conditionalized
+           * code.
+           */
+   #    pragma __extern_model __save
+   #    pragma __extern_model __strict_refdef
+         extern const char some_definition [];
+   #    pragma __extern_model __restore
+   # endif
+
+    /* ...some data and function definitions go here... */
+
+#include "dis.h"
+#include "dic.h"
+
+   #if defined __cplusplus
+         }    /* matches the linkage specification at the beginning. */
+   #endif
+
+#endif
Index: branches/testFACT++branch/dim/dim/dim_jni.h
===================================================================
--- branches/testFACT++branch/dim/dim/dim_jni.h	(revision 18277)
+++ branches/testFACT++branch/dim/dim/dim_jni.h	(revision 18277)
@@ -0,0 +1,70 @@
+#include <jni.h>
+/* Header for class dim_Native */
+
+#ifndef _Included_dim_Native
+#define _Included_dim_Native
+#ifdef __cplusplus
+extern "C" {
+#endif
+#undef dim_Native_ONCE_ONLY
+#define dim_Native_ONCE_ONLY 0x1L
+#undef dim_Native_TIMED
+#define dim_Native_TIMED 0x2L
+#undef dim_Native_MONITORED
+#define dim_Native_MONITORED 0x4L
+#undef dim_Native_MONIT_ONLY
+#define dim_Native_MONIT_ONLY 0x20L
+#undef dim_Native_UPDATE
+#define dim_Native_UPDATE 0x40L
+#undef dim_Native_TIMED_ONLY
+#define dim_Native_TIMED_ONLY	0x80L
+#undef dim_Native_MONIT_FIRST
+#define dim_Native_MONIT_FIRST 0x100L
+#undef dim_Native_F_STAMPED
+#define dim_Native_F_STAMPED /*4096L*/ 0x1000L
+#undef dim_Native_F_WAIT
+#define dim_Native_F_WAIT /*-2147483648L*/ 0x10000000L
+
+
+#undef dim_Dbg_MODULE
+#define dim_Dbg_MODULE 1L
+#undef dim_Dbg_TRANSACTIONS
+#define dim_Dbg_TRANSACTIONS 2L
+#undef dim_Dbg_SEND_CALLBACK
+#define dim_Dbg_SEND_CALLBACK 4L
+#undef dim_Dbg_SEND_NATIVE
+#define dim_Dbg_SEND_NATIVE 8L
+#undef dim_Dbg_INFO_CALLBACK
+#define dim_Dbg_INFO_CALLBACK 16L
+#undef dim_Dbg_INFO_SERVICE
+#define dim_Dbg_INFO_SERVICE 32L
+#undef dim_Dbg_SERVER
+#define dim_Dbg_SERVER 256L
+#undef dim_Dbg_SERVICE_CALLBACK
+#define dim_Dbg_SERVICE_CALLBACK 512L
+#undef dim_Dbg_ADD_SERVICE
+#define dim_Dbg_ADD_SERVICE 1024L
+#undef dim_Dbg_RELEASE_SERVICE
+#define dim_Dbg_RELEASE_SERVICE 2048L
+#undef dim_Dbg_CMND_CALLBACK
+#define dim_Dbg_CMND_CALLBACK 4096L
+#undef dim_Dbg_ADD_CMND
+#define dim_Dbg_ADD_CMND 8192L
+#undef dim_Dbg_UPDATE_SERVICE
+#define dim_Dbg_UPDATE_SERVICE 16384L
+#undef dim_Dbg_GETCLIENT
+#define dim_Dbg_GETCLIENT 32768L
+#undef dim_Dbg_SERIALIZER
+#define dim_Dbg_SERIALIZER 65536L
+#undef dim_Dbg_DESCRIPTORS
+#define dim_Dbg_DESCRIPTORS 131072L
+#undef dim_Dbg_FULL
+#define dim_Dbg_FULL -1L
+
+/* Inaccessible static: dim_version */
+/* Inaccessible static: dll_locations */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: branches/testFACT++branch/dim/dim/dim_tcpip.h
===================================================================
--- branches/testFACT++branch/dim/dim/dim_tcpip.h	(revision 18277)
+++ branches/testFACT++branch/dim/dim/dim_tcpip.h	(revision 18277)
@@ -0,0 +1,109 @@
+/* 
+ * DIM Include file for changing the number of open connections
+ * Date: 06-12-2007
+ * Author: C. Gaspar
+ */
+
+#ifdef WIN32
+#define FD_SETSIZE      16384
+#else
+#ifdef linux
+#ifndef NOMORECONNS
+/* CG: Copied here bits/typesizes.h */
+#ifndef _BITS_TYPESIZES_H
+#define _BITS_TYPESIZES_H   1
+
+/* See <bits/types.h> for the meaning of these macros.  This file exists so
+that <bits/types.h> need not vary across different GNU platforms.  */
+
+#define __DEV_T_TYPE        __UQUAD_TYPE
+#define __UID_T_TYPE        __U32_TYPE
+#define __GID_T_TYPE        __U32_TYPE    
+#define __INO_T_TYPE        __ULONGWORD_TYPE    
+#define __INO64_T_TYPE      __UQUAD_TYPE
+#define __MODE_T_TYPE       __U32_TYPE
+#define __NLINK_T_TYPE      __UWORD_TYPE
+#define __OFF_T_TYPE        __SLONGWORD_TYPE
+#define __OFF64_T_TYPE      __SQUAD_TYPE
+#define __PID_T_TYPE        __S32_TYPE
+#define __RLIM_T_TYPE       __ULONGWORD_TYPE
+#define __RLIM64_T_TYPE     __UQUAD_TYPE
+#define __BLKCNT_T_TYPE     __SLONGWORD_TYPE
+#define __BLKCNT64_T_TYPE   __SQUAD_TYPE
+#define __FSBLKCNT_T_TYPE   __ULONGWORD_TYPE
+#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
+#define __FSFILCNT_T_TYPE   __ULONGWORD_TYPE
+#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
+#define __FSWORD_T_TYPE     __SWORD_TYPE
+#define __ID_T_TYPE     __U32_TYPE
+#define __CLOCK_T_TYPE      __SLONGWORD_TYPE
+#define __TIME_T_TYPE       __SLONGWORD_TYPE
+#define __USECONDS_T_TYPE   __U32_TYPE
+#define __SUSECONDS_T_TYPE  __SLONGWORD_TYPE
+#define __DADDR_T_TYPE      __S32_TYPE
+#define __SWBLK_T_TYPE		__SLONGWORD_TYPE
+#define __KEY_T_TYPE        __S32_TYPE
+#define __CLOCKID_T_TYPE    __S32_TYPE
+#define __TIMER_T_TYPE      void *
+#define __BLKSIZE_T_TYPE    __SLONGWORD_TYPE
+#define __FSID_T_TYPE       struct { int __val[2]; }
+#define __SSIZE_T_TYPE      __SWORD_TYPE
+#define __SYSCALL_SLONG_TYPE    __SLONGWORD_TYPE
+#define __SYSCALL_ULONG_TYPE    __ULONGWORD_TYPE
+
+#ifdef __LP64__
+/* Tell the libc code that off_t and off64_t are actually the same type
+for all ABI purposes, even if possibly expressed as different base types    
+for C type-checking purposes.  */
+# define __OFF_T_MATCHES_OFF64_T    1
+
+/* Same for ino_t and ino64_t.  */
+# define __INO_T_MATCHES_INO64_T    1
+#endif
+
+/* Number of descriptors that can fit in an `fd_set'.  */
+#define __FD_SETSIZE        16384
+
+
+#endif /* bits/typesizes.h */ 
+
+/* CG: Copied here linux/posix_types.h */
+#ifndef _LINUX_POSIX_TYPES_H
+#define _LINUX_POSIX_TYPES_H
+
+#include <linux/stddef.h>
+
+#undef __NFDBITS
+#define __NFDBITS	(8 * sizeof(unsigned long))
+
+#undef __FD_SETSIZE
+#define __FD_SETSIZE	16384
+
+#undef __FDSET_LONGS
+#define __FDSET_LONGS	(__FD_SETSIZE/__NFDBITS)
+
+#undef __FDELT
+#define	__FDELT(d)	((d) / __NFDBITS)
+
+#undef __FDMASK
+#define	__FDMASK(d)	(1UL << ((d) % __NFDBITS))
+
+typedef struct {
+	unsigned long fds_bits [__FDSET_LONGS];
+} __kernel_fd_set;
+
+/* Type of a signal handler.  */
+typedef void (*__kernel_sighandler_t)(int);
+
+/* Type of a SYSV IPC key.  */
+typedef int __kernel_key_t;
+typedef int __kernel_mqd_t;
+
+#include <asm/posix_types.h>
+
+#endif /* _LINUX_POSIX_TYPES_H */
+
+#endif /* NOMORECONNS */
+#endif /* linux */
+
+#endif
Index: branches/testFACT++branch/dim/dim/dis.h
===================================================================
--- branches/testFACT++branch/dim/dim/dis.h	(revision 18277)
+++ branches/testFACT++branch/dim/dim/dis.h	(revision 18277)
@@ -0,0 +1,78 @@
+#ifndef __DISDEFS
+#define __DISDEFS
+
+#include "dim_common.h"
+
+/* CFORTRAN interface */
+
+#define dis_start_serving dis_start_serving_
+#define dis_stop_serving dis_stop_serving_
+#define dis_get_next_cmnd dis_get_next_cmnd_
+#define dis_get_client dis_get_client_
+#define dis_add_service dis_add_service_
+#define dis_add_cmnd dis_add_cmnd_
+#define dis_add_client_exit_handler dis_add_client_exit_handler_
+#define dis_add_exit_handler dis_add_exit_handler_
+#define dis_set_client_exit_handler dis_set_client_exit_handler_
+#define dis_report_service dis_report_service_
+#define dis_update_service dis_update_service_
+#define dis_remove_service dis_remove_service_
+#define dis_send_service dis_send_service_
+#define dis_convert_str dis_convert_str_
+#define dis_set_quality dis_set_quality_
+#define dis_set_timestamp dis_set_timestamp_
+#define dis_selective_update_service dis_selective_update_service_
+#define dis_get_timestamp dis_get_timestamp_
+
+#ifdef __cplusplus
+extern "C" {
+#define __CXX_CONST const
+#else
+#define __CXX_CONST
+#endif
+
+_DIM_PROTOE( int dis_start_serving,    (__CXX_CONST char *task_name) );
+_DIM_PROTOE( void dis_stop_serving,    () );
+_DIM_PROTOE( int dis_get_next_cmnd,    (dim_long *tag, int *buffer, int *size ) );
+_DIM_PROTOE( int dis_get_client,       (char *name ) );
+_DIM_PROTOE( int dis_get_conn_id,      () );
+_DIM_PROTOE( unsigned dis_add_service, (__CXX_CONST char *service_name, __CXX_CONST char *service_type,
+				   void *service_address, int service_size,
+				   void (*usr_routine)(void*,void**,int*,int*), dim_long tag) );
+_DIM_PROTOE( unsigned dis_add_cmnd,        (__CXX_CONST char *service_name, __CXX_CONST char *service_type,
+			           void (*usr_routine)(void*,void*,int*), dim_long tag) );
+_DIM_PROTOE( void dis_add_client_exit_handler,(void (*usr_routine)(int*)) );
+_DIM_PROTOE( void dis_set_client_exit_handler,(int conn_id, int tag) );
+_DIM_PROTOE( void dis_add_exit_handler,(void (*usr_routine)(int*)) );
+_DIM_PROTOE( void dis_add_error_handler,(void (*usr_routine)(int, int, char*)) );
+_DIM_PROTOE( void dis_report_service,  (__CXX_CONST char *service_name) );
+_DIM_PROTOE( int dis_update_service,   (unsigned service_id) );
+_DIM_PROTOE( int dis_remove_service,   (unsigned service_id) );
+_DIM_PROTOE( void dis_send_service,    (unsigned service_id, int *buffer,
+				   int size) );
+_DIM_PROTOE( int dis_set_buffer_size,  (int size) );
+_DIM_PROTOE( void dis_set_quality,     (unsigned service_id, int quality) );
+_DIM_PROTOE( int dis_set_timestamp,     (unsigned service_id, 
+					int secs, int millisecs) );
+_DIM_PROTOE( int dis_selective_update_service,   (unsigned service_id, 
+					int *client_id_list) );
+_DIM_PROTOE( void dis_disable_padding,      		() );
+_DIM_PROTOE( int dis_get_timeout,      		(unsigned service_id, int client_id) );
+_DIM_PROTOE( char *dis_get_error_services,	() );
+_DIM_PROTOE( char *dis_get_client_services,	(int conn_id) );
+_DIM_PROTOE( int dis_start_serving_dns,		(dim_long dns_id, __CXX_CONST char *task_name/*, int *id_list*/) );
+_DIM_PROTOE( void dis_stop_serving_dns,		(dim_long dns_id) );
+_DIM_PROTOE( unsigned dis_add_service_dns,	(dim_long dns_id, __CXX_CONST char *service_name, __CXX_CONST char *service_type,
+				   void *service_address, int service_size,
+				   void (*usr_routine)(void*,void**,int*,int*), dim_long tag) );
+_DIM_PROTOE( unsigned dis_add_cmnd_dns,		(dim_long dns_id, __CXX_CONST char *service_name, __CXX_CONST char *service_type,
+			       void (*usr_routine)(void*,void*,int*), dim_long tag) );
+_DIM_PROTOE( int dis_get_n_clients,	(unsigned service_id) );
+_DIM_PROTOE( int dis_get_timestamp,     (unsigned service_id, 
+					int *secs, int *millisecs) );
+#ifdef __cplusplus
+#undef __CXX_CONST
+}
+#endif
+
+#endif
Index: branches/testFACT++branch/dim/dim/dis.hxx
===================================================================
--- branches/testFACT++branch/dim/dim/dis.hxx	(revision 18277)
+++ branches/testFACT++branch/dim/dim/dis.hxx	(revision 18277)
@@ -0,0 +1,359 @@
+#ifndef __DISHHDEFS
+#define __DISHHDEFS
+#include <assert.h>
+#include <stdlib.h>
+#include <string.h>
+#ifndef WIN32
+#include <unistd.h>
+#endif
+#ifdef __VMS
+#include <starlet.h>
+#endif
+#include "dim_core.hxx"
+#include "dim.hxx"
+/*
+#define DimSHORT	"S"
+#define DimINT		"I"
+#define DimLONG		"L"
+#define DimFLOAT	"F"
+#define DimDOUBLE	"D"
+#define DimSTRING	"C"
+#define DimXLONG	"X"
+*/
+enum DisTYPE {
+	DisPOINTER, DisSHORT, DisINT, DisFLOAT, DisDOUBLE, DisSTRING, DisXLONG, DisCOMMAND
+};
+
+class DimService;
+class DimCommand;
+
+class DllExp DimServiceHandler{
+public:
+	DimService *itsService;
+	DimService *getService() { return itsService; } ;
+	virtual void serviceHandler() = 0;
+	virtual ~DimServiceHandler() {};
+};
+
+class DllExp DimCommandHandler{
+public:
+	DimCommand *itsCommand;
+	DimCommand *getCommand() { return itsCommand; } ;
+	virtual void commandHandler() = 0;
+	virtual ~DimCommandHandler() {};
+};
+
+class DllExp DimClientExitHandler{
+public:
+	virtual void clientExitHandler() = 0;
+	virtual ~DimClientExitHandler() {};
+};
+
+class DllExp DimExitHandler{
+public:
+	virtual void exitHandler(int code) = 0;
+	virtual ~DimExitHandler() {};
+};
+
+class DllExp DimServerDns
+{
+public:
+	DimServerDns(const char *node);
+	DimServerDns(const char *node, int port);
+	DimServerDns(const char *node, int port, char *name);
+	~DimServerDns();
+	void init(const char *node, int port);
+	dim_long getDnsId();
+	void setName(const char *name);
+	char *getName();
+	void clearName();
+	void autoStartOn();
+	void autoStartOff();
+	int isAutoStart();
+	void addServiceId(int id);
+	int *getServiceIdList();
+private:
+	char *itsNode;
+	int itsPort;
+	dim_long itsDnsId;
+	char *itsName;
+	int autoStart;
+	int *itsServiceIdList;
+	int itsServiceIdListSize;
+	int itsNServiceIds;
+//	int itsNServices;
+};
+
+class DllExp DimServer : public DimServiceHandler, public DimCommandHandler,
+	public DimClientExitHandler, public DimExitHandler, public DimErrorHandler
+{
+public:
+	static char *clientName;
+	static char *itsName;
+	static char *dimDnsNode;
+	static int autoStart;
+	static DimClientExitHandler *itsClientExit;
+	static DimExitHandler *itsExit;
+	static DimErrorHandler *itsSrvError;
+//	static int itsNServices;
+	DimServer();
+	virtual ~DimServer();
+	static void start(const char *name);
+	static void start(DimServerDns *dns, const char *name);
+	static void start();
+	static void start(DimServerDns *dns);
+	static void stop();
+	static void stop(DimServerDns *dns);
+	static void autoStartOn();
+	static void autoStartOff();
+	// Get Current Client Identifier	
+	static int getClientId();
+	// Get Current Client Name	
+	static char *getClientName();
+	static void setClientExitHandler(int clientId);
+	static void clearClientExitHandler(int clientId);
+	static void addClientExitHandler(DimClientExitHandler *handler);
+	void addClientExitHandler();
+	static void addExitHandler(DimExitHandler *handler);
+	static void addErrorHandler(DimErrorHandler *handler);
+	static int setDnsNode(const char *node);
+	static int setDnsNode(const char *node, int port);
+	static dim_long addDns(const char *node, int port);
+	static void stopDns(dim_long dnsid);
+	static char *getDnsNode();
+	static int getDnsPort();
+	static void setWriteTimeout(int secs);
+	static int getWriteTimeout();
+	void addExitHandler();
+	void addErrorHandler();
+	virtual void clientExitHandler() {};
+	virtual void exitHandler(int /* code */) {};
+	virtual void errorHandler(int /* severity */, int /* code */, char* /* msg */) {};
+//	static char *getClientServices();
+//	static char *getClientServices(int clientId);
+	static char **getClientServices();
+
+	virtual void serviceHandler() {};
+	virtual void commandHandler() {};
+	static int inCallback();
+};
+
+class DllExp DimService : public DimServiceHandler {
+
+public :
+	DimServiceHandler *itsServiceHandler;
+
+	// The object contains the value to be published. Service to be updated with an argument of same type;
+	DimService();
+
+	DimService(const char *name, int &value);
+	DimService(const char *name, float &value);
+	DimService(const char *name, double &value);
+	DimService(const char *name, longlong &value);
+	DimService(const char *name, short &value);
+	DimService(const char *name, char *string);
+
+	DimService(const char *name, char *format, void *structure, int size);
+
+	DimService(const char *name, char *format, DimServiceHandler *handler);
+
+	DimService(const char *name, const char *format, void *structure, int size);
+
+	DimService(const char *name, const char *format, DimServiceHandler *handler);
+
+	DimService(DimServerDns *dns, const char *name, int &value);
+	DimService(DimServerDns *dns, const char *name, float &value);
+	DimService(DimServerDns *dns, const char *name, double &value);
+	DimService(DimServerDns *dns, const char *name, longlong &value);
+	DimService(DimServerDns *dns, const char *name, short &value);
+	DimService(DimServerDns *dns, const char *name, char *string);
+
+	DimService(DimServerDns *dns, const char *name, char *format, void *structure, int size);
+
+	DimService(DimServerDns *dns, const char *name, char *format, DimServiceHandler *handler);
+
+	DimService(DimServerDns *dns, const char *name, const char *format, void *structure, int size);
+
+	DimService(DimServerDns *dns, const char *name, const char *format, DimServiceHandler *handler);
+
+	virtual ~DimService();
+
+	// Update methods
+	int updateService();
+	// Update the value as well...
+	int updateService( int &value );
+	int updateService( float &value );
+	int updateService( double &value ) ;
+	int updateService( longlong &value );
+	int updateService( short &value );
+	int updateService( char *string );
+	
+	int updateService( void *structure, int size );
+	
+	// Selective Update methods
+	int selectiveUpdateService(int *cids);
+	// Update the value as well...
+	int selectiveUpdateService( int &value, int *cids);
+	int selectiveUpdateService( float &value, int *cids );
+	int selectiveUpdateService( double &value, int *cids );
+	int selectiveUpdateService( longlong &value, int *cids );
+	int selectiveUpdateService( short &value, int *cids );
+	int selectiveUpdateService( char *string, int *cids );
+	
+	int selectiveUpdateService( void *structure, int size, int *cids );
+	
+	void setQuality(int quality);
+	void setTimestamp(int secs, int millisecs);
+
+	void *itsData;
+	int itsDataSize;
+	int itsSize;
+	DisTYPE itsType;
+	void setData(void *data, int size);
+	void setData(int &data);
+	void setData(float &data);
+	void setData(double &data);
+	void setData(longlong &data);
+	void setData(short &data);
+	void setData(char *data);
+
+	virtual void serviceHandler() {};
+	// Accessors
+	char *getName();
+	int getTimeout(int clientId);
+	int getNClients();
+
+private :
+	char *itsName;
+	int itsId;
+	int itsTagId;
+	void declareIt(char *name, char *format, DimServiceHandler *handler, DimServerDns *dns);
+	void storeIt(void *data, int size);
+	DimServerDns *itsDns;
+};
+
+class DllExp CmndInfo : public SLLItem {
+	friend class DimCommand;
+	void *itsData;
+	int itsDataSize;
+	int secs, millisecs;
+public:
+	CmndInfo(void *data, int datasize, int tsecs, int tmillisecs);
+	~CmndInfo();
+};
+
+class DllExp DimCommand : public DimCommandHandler {
+
+public :
+	DimCommandHandler *itsCommandHandler;
+
+	DimCommand(const char *name, char *format);
+
+	DimCommand(const char *name, char *format, DimCommandHandler *handler);
+
+	DimCommand(DimServerDns *dns, const char *name, char *format);
+
+	DimCommand(DimServerDns *dns, const char *name, char *format, DimCommandHandler *handler);
+
+	DimCommand(const char *name, const char *format);
+
+	DimCommand(const char *name, const char *format, DimCommandHandler *handler);
+
+	DimCommand(DimServerDns *dns, const char *name, const char *format);
+
+	DimCommand(DimServerDns *dns, const char *name, const char *format, DimCommandHandler *handler);
+
+	int getNext();
+	int hasNext();
+	void *itsData;
+	int itsSize;
+	void *getData();
+	int getInt();
+	float getFloat();
+	double getDouble();
+	longlong getLonglong();
+	short getShort();
+	char *getString();
+	int getSize();
+	char *getFormat();
+	int getTimestamp();
+	int getTimestampMillisecs();
+
+	virtual void commandHandler();
+
+	// Accessors
+	char *getName();
+	virtual ~DimCommand();
+
+private :
+	char *itsName;
+	int itsId;
+	int itsTagId;
+	char *itsFormat;
+	void declareIt(char *name, char *format, DimCommandHandler *handler, DimServerDns *dns);
+	CmndInfo *currCmnd;
+	SLList itsCmndList;
+	DimServerDns *itsDns;
+public:
+	int secs, millisecs;
+};
+
+class DllExp DimRpc
+{
+public :
+
+	// The object contains the value to be published. Service to be updated with an argument of same type;
+	DimRpc();
+
+	DimRpc(const char *name, const char *formatin, const char *formatout);
+
+	DimRpc(DimServerDns *dns, const char *name, const char *formatin, const char *formatout);
+
+	// Desctructor
+	virtual ~DimRpc();
+
+	void *itsDataIn;
+	int itsSizeIn;
+	void *getData();
+	int getInt();
+	float getFloat();
+	double getDouble();
+	longlong getLonglong();
+	short getShort();
+	char *getString();
+	int getSize();
+
+	void *itsDataOut;
+	int itsDataOutSize;
+	int itsSizeOut;
+
+	void setData(void *data, int size);
+	void setData(int &data);
+	void setData(float &data);
+	void setData(double &data);
+	void setData(longlong &data);
+	void setData(short &data);
+	void setData(char *data);
+
+	virtual void rpcHandler() = 0;
+	// Accessors
+	char *getName();
+	int itsIdIn;
+	int itsIdOut;
+private :
+	int itsTagId;
+	char *itsName;
+	char *itsNameIn;
+	char *itsNameOut;
+	void declareIt(char *name, char *formatin, char *formatout, DimServerDns *dns);
+	void storeIt(void *data, int size);
+	void timerHandler();
+	DimServerDns *itsDns;
+public:
+	int itsKilled;
+	int itsTimeout;
+};
+
+
+#endif
+
Index: branches/testFACT++branch/dim/dim/dllist.hxx
===================================================================
--- branches/testFACT++branch/dim/dim/dllist.hxx	(revision 18277)
+++ branches/testFACT++branch/dim/dim/dllist.hxx	(revision 18277)
@@ -0,0 +1,105 @@
+#ifndef __DLLHHDEFS
+#define __DLLHHDEFS
+
+class DllExp DLLItem {
+	friend class DLList ;
+	DLLItem *next;
+	DLLItem *prev;
+public:
+	DLLItem(){
+		next = 0;
+		prev = 0;
+	};
+};
+
+class DllExp DLList {
+	DLLItem *head;
+	DLLItem *curr;
+public:
+	DLList (){
+		DISABLE_AST
+		head = new DLLItem();
+		head->next = head;
+		head->prev = head;
+		curr = head;
+		ENABLE_AST
+	}
+	~DLList()
+	{
+		DISABLE_AST
+		delete head;
+		ENABLE_AST
+	}
+    void add(DLLItem *item)
+	{
+		DLLItem *prevp;
+		DISABLE_AST
+		item->next = head;
+		prevp = head->prev;
+		item->prev = prevp;
+		prevp->next = item;
+		head->prev = item;
+		ENABLE_AST
+	}
+	DLLItem *getHead()
+	{
+		DISABLE_AST
+		if(head->next == head)
+		{
+			ENABLE_AST
+			return((DLLItem *)0);
+		}
+		curr = head->next;
+		ENABLE_AST
+		return( head->next );
+	}
+	DLLItem *getLast()
+	{
+		DISABLE_AST
+		if(head->prev == head)
+		{
+			ENABLE_AST
+			return((DLLItem *)0);
+		}
+		curr = head->prev;
+		ENABLE_AST
+		return( head->prev );
+	}
+	DLLItem *getNext()
+	{
+		DISABLE_AST
+		curr = curr->next;
+		if(curr == head)
+		{
+			ENABLE_AST
+			return((DLLItem *)0);
+		}
+		ENABLE_AST
+		return( curr );
+	}
+	DLLItem *removeHead()
+	{
+		DLLItem *item;
+		DISABLE_AST
+		item = head->next;
+		if(item == head)
+		{
+			ENABLE_AST
+			return((DLLItem *)0);
+		}
+		remove(item);
+		ENABLE_AST
+		return(item);
+	}
+	void remove(DLLItem *item)
+	{
+		DLLItem *prevp, *nextp;
+		DISABLE_AST
+		prevp = item->prev;
+		nextp = item->next;
+		prevp->next = item->next;
+		nextp->prev = prevp;
+		ENABLE_AST
+	}
+};
+#endif
Index: branches/testFACT++branch/dim/dim/sllist.hxx
===================================================================
--- branches/testFACT++branch/dim/dim/sllist.hxx	(revision 18277)
+++ branches/testFACT++branch/dim/dim/sllist.hxx	(revision 18277)
@@ -0,0 +1,84 @@
+#ifndef __SLLHHDEFS
+#define __SLLHHDEFS
+
+class DllExp SLLItem {
+	friend class SLList ;
+	SLLItem *next;
+public:
+	SLLItem(){
+		next = 0;
+	};
+};
+
+class DllExp SLList {
+	SLLItem *head;
+	SLLItem *curr;
+public:
+	SLList (){
+		DISABLE_AST
+		head = new SLLItem();
+		curr = head;
+		ENABLE_AST
+	}
+	~SLList()
+	{
+		DISABLE_AST
+		delete head;
+		ENABLE_AST
+	}
+    void add(SLLItem *itemptr)
+	{
+		DISABLE_AST
+		SLLItem *ptr = head;
+		while(ptr->next)
+		{
+			ptr = ptr->next;
+		}
+		ptr->next = itemptr;
+		ENABLE_AST
+	}
+	SLLItem *getHead()
+	{
+		curr = head->next;
+		return( head->next );
+	}
+	SLLItem *getNext()
+	{
+		DISABLE_AST
+		if(!curr)
+			curr = head;
+		curr = curr->next;
+		ENABLE_AST
+		return( curr );
+	}
+	SLLItem *removeHead()
+	{
+		SLLItem *ptr;
+
+		DISABLE_AST
+		ptr = head->next;
+		if(ptr)
+		{
+			head->next = ptr->next;
+			curr = head->next;
+		}
+		ENABLE_AST
+		return( ptr);
+	}
+	void remove(SLLItem *itemptr)
+	{
+		SLLItem *ptr = head, *prev;
+		DISABLE_AST
+		while(ptr->next)
+		{
+			prev = ptr;
+			ptr = ptr->next;
+			if( itemptr == ptr )
+			{
+				prev->next = ptr->next;
+			}
+		}
+		ENABLE_AST
+	}
+};
+#endif
Index: branches/testFACT++branch/dim/dim/tokenstring.hxx
===================================================================
--- branches/testFACT++branch/dim/dim/tokenstring.hxx	(revision 18277)
+++ branches/testFACT++branch/dim/dim/tokenstring.hxx	(revision 18277)
@@ -0,0 +1,31 @@
+#ifndef __TOKENSTRINGDEFS
+#define __TOKENSTRINGDEFS
+#include <string.h>
+#include "dim_core.hxx"
+
+class DllExp TokenString
+{
+public:
+
+	TokenString(char *str);
+	TokenString(char *str, char *seps);
+	~TokenString();
+	int getToken(char *&token);
+	void pushToken();
+	void popToken();
+	int cmpToken(char *str);
+	int firstToken();
+	int getNTokens();
+	int getNTokens(char *str);
+
+private:
+	void store_str(char *str);
+	char *token_buff;
+	char *token_ptr;
+	char *curr_token_ptr;
+	char *push_token_ptr;
+	char *token_seps;
+	int n_tokens;
+};
+
+#endif
Index: branches/testFACT++branch/dim/src/benchmark/benchClient.cxx
===================================================================
--- branches/testFACT++branch/dim/src/benchmark/benchClient.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/benchmark/benchClient.cxx	(revision 18277)
@@ -0,0 +1,69 @@
+#include <iostream>
+using namespace std;
+#include <dic.hxx>
+
+#define TEST_TIME 10
+
+char ServerName[128];
+int MsgSize;
+int Done = 0;
+int NReceived;
+
+class Service : public DimInfo
+{
+	void infoHandler()
+	{
+	  if(!Done)
+	  {
+		MsgSize = getSize();
+		strcpy(ServerName, DimClient::getServerName());
+		Done = 1;
+	  }
+	  NReceived++;
+	}
+public :
+	Service(char *name) : DimInfo(name,(char *)"--") {/*nReceived = 0;*/}
+};
+
+int main(int argc, char *argv[])
+{
+	int i, nServices = 0;
+	Service **services;
+	float mps,tpm;
+	DimBrowser br;
+	char *name, *format, *cltptr, *srvptr, clientName[128];
+
+	if(argc){}
+	if(argv){}
+	br.getServices("BENCH_SERVICE_*");
+
+	while(br.getNextService(name, format)!= 0)
+	{
+		nServices++;
+	}
+	services = new Service*[nServices];
+	i = 0;
+	while(br.getNextService(name, format)!= 0)
+	{
+	  services[i++] = new Service(name);
+	}
+	dic_get_id(clientName);
+	if((cltptr = strchr(clientName,'@')))
+		cltptr++;
+	sleep(5);
+	NReceived = 0;
+
+	sleep(TEST_TIME);
+
+	mps = NReceived/TEST_TIME;
+	if((srvptr = strchr(ServerName,'@')))
+		srvptr++;
+	cout << "Benchmark from "<< srvptr << " to " << cltptr << " :" << endl;
+	cout << "Server publishes " << nServices << " services of " << MsgSize << " bytes each"<< endl;
+	cout << "Result :" << endl;
+	cout << "\tMessages/s = " << mps << endl;
+	tpm = 1/(float)mps*1000;
+	cout << "\tTime(ms)/message = " << tpm << endl;
+	cout << "\tThroughput (Kb/s) = " << mps*MsgSize/1024 << endl;
+	return 1;
+}
Index: branches/testFACT++branch/dim/src/benchmark/benchServer.cxx
===================================================================
--- branches/testFACT++branch/dim/src/benchmark/benchServer.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/benchmark/benchServer.cxx	(revision 18277)
@@ -0,0 +1,36 @@
+#include <iostream>
+#include <dis.hxx>
+#ifdef WIN32
+#include <process.h>
+#endif
+#include <stdio.h>
+
+int main(int argc, char *argv[])
+{
+	int i, msgSize, nServices, pid;
+	char *msg, servName[64];
+	DimService **services;
+
+	if(argc){}
+	sscanf(argv[1],"%d",&msgSize);
+	sscanf(argv[2],"%d",&nServices);
+	msg = new char[msgSize];
+	services = new DimService*[nServices];
+	
+	pid = getpid();
+	for(i = 0; i < nServices; i++)
+	{
+	  sprintf(servName,"BENCH_SERVICE_%d_%03d",pid, i);
+	  services[i] = new DimService(servName, "C", msg, msgSize);
+	}
+	sprintf(servName,"BENCH_%d",pid);
+	DimServer::start(servName);
+	while(1)
+	{
+	  for(i = 0; i < nServices; i++)
+	  {
+	    services[i]->updateService();
+	  }
+	}
+	return 0;
+}
Index: branches/testFACT++branch/dim/src/benchmark/bigClient.cxx
===================================================================
--- branches/testFACT++branch/dim/src/benchmark/bigClient.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/benchmark/bigClient.cxx	(revision 18277)
@@ -0,0 +1,69 @@
+#include <dic.hxx>
+
+class Service : public DimInfo
+{
+  int n_bad;
+  int n_good;
+
+	void infoHandler()
+	{
+	  char *ptr;
+	  ptr = (char *)getData();
+	  //	  cout << getName() << " received " << ptr << endl;
+	  if(ptr[0] == '-')
+	    {
+	      n_bad = 1;
+	      n_good = 0;
+	    }
+	  if(ptr[0] == 'h')
+	    {
+	      n_good = 1;
+	      n_bad = 0;
+	    }
+	}
+public :
+	Service(char *name) : DimInfo(name,"--") 
+		{n_bad = 0; n_good = 0;}
+	int getNgood() {return n_good;}
+	int getNbad() {return n_bad;}
+};
+
+
+int main(int argc, char *argv[])
+{
+	int i, n, msgSize, nServices = 0;
+	Service **services;
+	float mps,tpm;
+	DimBrowser br;
+	char name[132], *format;
+
+	sscanf(argv[1],"%d",&nServices);
+	services = new Service*[nServices];
+	for(i = 0; i < nServices; i++)
+	{
+	  services[i] = 0;
+	}
+	for(i = 0; i < nServices; i++)
+	{
+	  sprintf(name,"BENCH_SERVICE_%03d",i);
+	  services[i] = new Service(name);
+	}
+	while(1)
+	  {
+	    sleep(10);
+	    n = 0;
+	    for(i = 0; i < nServices; i++)
+	      {
+		if(services[i])
+		  n += services[i]->getNgood();
+	      }
+	    cout << "N Good = "<< n << endl;
+	    n = 0;
+	    for(i = 0; i < nServices; i++)
+	      {
+		if(services[i])
+		  n += services[i]->getNbad();
+	      }
+	    cout << "N bad = "<< n << endl;
+	}
+}
Index: branches/testFACT++branch/dim/src/benchmark/bigServer.cxx
===================================================================
--- branches/testFACT++branch/dim/src/benchmark/bigServer.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/benchmark/bigServer.cxx	(revision 18277)
@@ -0,0 +1,35 @@
+#include <dis.hxx>
+#ifdef WIN32
+#include <process.h>
+#endif
+
+int main(int argc, char *argv[])
+{
+	int i, msgSize, nServices, pid;
+	char *msg, servName[64];
+	DimService **services;
+
+	sscanf(argv[1],"%d",&msgSize);
+	sscanf(argv[2],"%d",&nServices);
+	msg = new char[msgSize];
+	strcpy(msg,"hello");
+	services = new DimService*[nServices];
+	
+	pid = getpid();
+	for(i = 0; i < nServices; i++)
+	{
+	  //	  sprintf(servName,"BENCH_SERVICE_%d_%03d",pid, i);
+	  sprintf(servName,"BENCH_SERVICE_%03d",i);
+	  services[i] = new DimService(servName, "C", msg, msgSize);
+	}
+	sprintf(servName,"BENCH_%d",pid);
+	DimServer::start(servName);
+	while(1)
+	{
+	  for(i = 0; i < nServices; i++)
+	  {
+	    services[i]->updateService();
+	  }
+	}
+	return 0;
+}
Index: branches/testFACT++branch/dim/src/conn_handler.c
===================================================================
--- branches/testFACT++branch/dim/src/conn_handler.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/conn_handler.c	(revision 18277)
@@ -0,0 +1,219 @@
+/*
+ * DNA (Delphi Network Access) implements the network layer for the DIM
+ * (Delphi Information Managment) System.
+ *
+ * Started date   : 10-11-91
+ * Written by     : C. Gaspar
+ * UNIX adjustment: G.C. Ballintijn
+ *
+ */
+
+/* This module can only handle one type of array, and DIC or DNS.
+ * It cannot handle both simultaniously. It handles at same time
+ * the NET and DNA array's. Although these have to be explicitly
+ * created.
+ */
+
+#define DIMLIB
+#include <dim.h>
+
+static SRC_TYPES My_type;		/* Var. indicating type DIC or DIS */
+
+#ifdef VMS
+DIM_NOSHARE DNS_CONNECTION *Dns_conns;
+DIM_NOSHARE DIC_CONNECTION *Dic_conns;
+DIM_NOSHARE DNA_CONNECTION *Dna_conns;
+DIM_NOSHARE NET_CONNECTION *Net_conns;
+DIM_NOSHARE int Curr_N_Conns;
+#else
+DllExp DIM_NOSHARE DNS_CONNECTION *Dns_conns = 0;
+DIM_NOSHARE DIC_CONNECTION *Dic_conns = 0;
+DllExp DIM_NOSHARE DNA_CONNECTION *Dna_conns = 0;
+DllExp DIM_NOSHARE NET_CONNECTION *Net_conns = 0;
+DllExp DIM_NOSHARE int Curr_N_Conns = 0;
+#endif
+
+typedef struct id_item
+{
+	void *ptr;
+	SRC_TYPES type;
+}ID_ITEM;
+
+static ID_ITEM *Id_arr;
+/*
+static void **Id_arr;
+*/
+static int Curr_N_Ids = 0;
+static int Curr_id = 1;
+
+void conn_arr_create(SRC_TYPES type)
+{
+
+	if( Curr_N_Conns == 0 )
+		Curr_N_Conns = CONN_BLOCK;
+
+	switch(type)
+	{
+	case SRC_DIC :
+		Dic_conns = (DIC_CONNECTION *)
+				calloc( (size_t)Curr_N_Conns, sizeof(DIC_CONNECTION) );
+		My_type = type;
+		break;
+	case SRC_DNS :
+		Dns_conns = (DNS_CONNECTION *)
+				calloc( (size_t)Curr_N_Conns, sizeof(DNS_CONNECTION) );
+		My_type = type;
+		break;
+	case SRC_DNA :
+		Dna_conns = (DNA_CONNECTION *)
+				calloc( (size_t)Curr_N_Conns, sizeof(DNA_CONNECTION) );
+		Net_conns = (NET_CONNECTION *)
+				calloc( (size_t)Curr_N_Conns, sizeof(NET_CONNECTION) );
+		break;
+	default:
+		break;
+	}
+}
+
+
+int conn_get()
+{
+	register DNA_CONNECTION *dna_connp;
+	int i, n_conns, conn_id;
+
+	DISABLE_AST
+	for( i = 1, dna_connp = &Dna_conns[1]; i < Curr_N_Conns; i++, dna_connp++ )
+	{
+		if( !dna_connp->busy )
+		{
+			dna_connp->busy = TRUE;
+			ENABLE_AST
+			return(i);
+		}
+	}
+	n_conns = Curr_N_Conns + CONN_BLOCK;
+	Dna_conns = arr_increase( Dna_conns, sizeof(DNA_CONNECTION), n_conns );
+	Net_conns = arr_increase( Net_conns, sizeof(NET_CONNECTION), n_conns );
+	switch(My_type)
+	{
+	case SRC_DIC :
+		Dic_conns = arr_increase( Dic_conns, sizeof(DIC_CONNECTION),
+					  n_conns );
+		break;
+	case SRC_DNS :
+		Dns_conns = arr_increase( Dns_conns, sizeof(DNS_CONNECTION),
+					  n_conns );
+		break;
+	default:
+		break;
+	}
+	conn_id = Curr_N_Conns;
+	Curr_N_Conns = n_conns;
+	Dna_conns[conn_id].busy = TRUE;
+	ENABLE_AST
+	return(conn_id);
+}
+
+
+void conn_free(int conn_id)
+{
+	DISABLE_AST
+	Dna_conns[conn_id].busy = FALSE;
+	ENABLE_AST
+}
+
+
+void *arr_increase(void *conn_ptr, int conn_size, int n_conns)
+{
+	register char *new_ptr;
+
+	new_ptr = realloc( conn_ptr, (size_t)(conn_size * n_conns) );
+	memset( new_ptr + conn_size * Curr_N_Conns, 0, (size_t)(conn_size * CONN_BLOCK) );
+	return(new_ptr);
+}
+
+void id_arr_create()
+{
+
+	Curr_N_Ids = ID_BLOCK;
+	Id_arr = (void *) calloc( (size_t)Curr_N_Ids, sizeof(ID_ITEM));
+}
+
+
+void *id_arr_increase(void *id_ptr, int id_size, int n_ids)
+{
+	register char *new_ptr;
+
+	new_ptr = realloc( id_ptr, (size_t)(id_size * n_ids) );
+	memset( new_ptr + id_size * Curr_N_Ids, 0, (size_t)(id_size * ID_BLOCK) );
+	return(new_ptr);
+}
+
+int id_get(void *ptr, SRC_TYPES type)
+{
+	register int i, id;
+	register ID_ITEM *idp;
+
+	DISABLE_AST
+	if(!Curr_N_Ids)
+	{
+		id_arr_create();
+	}
+	for( i = Curr_id, idp = &Id_arr[Curr_id]; i < Curr_N_Ids; i++, idp++ )
+	{
+		if( !idp->type )
+		{
+			idp->ptr = ptr;
+			idp->type = type;
+			Curr_id = i;
+			ENABLE_AST
+			return(i);
+		}
+	}
+	Id_arr = id_arr_increase( Id_arr, sizeof(ID_ITEM), Curr_N_Ids + ID_BLOCK );
+	id = Curr_N_Ids;
+	idp = &Id_arr[id];
+	idp->ptr = ptr;
+	idp->type = type;
+	Curr_N_Ids += ID_BLOCK;
+	Curr_id = id;
+	ENABLE_AST
+	return(id);
+}
+
+void *id_get_ptr(int id, SRC_TYPES type)
+{
+	ID_ITEM *idp;
+	void *ptr;
+	DISABLE_AST
+
+	if((id >= Curr_N_Ids) || (id <= 0))
+	{
+		ENABLE_AST
+		return(0);
+	}
+	idp = &Id_arr[id];
+	if(idp->type == type)
+	{
+		ptr = idp->ptr;
+		ENABLE_AST
+		return(ptr);
+	}
+	ENABLE_AST
+	return(0);
+}
+
+void id_free(int id, SRC_TYPES type)
+{
+	ID_ITEM *idp;
+	DISABLE_AST
+
+	idp = &Id_arr[id];
+	if(idp->type == type)
+	{
+		idp->type = 0;
+		idp->ptr = 0;
+	}
+	Curr_id = 1;
+	ENABLE_AST
+}
Index: branches/testFACT++branch/dim/src/copy_swap.c
===================================================================
--- branches/testFACT++branch/dim/src/copy_swap.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/copy_swap.c	(revision 18277)
@@ -0,0 +1,410 @@
+#define DIMLIB
+#include <dim.h>
+#include <dic.h>
+#include <dis.h>
+
+#ifdef VMS
+#	include <cvtdef.h>
+#endif
+
+#if defined(WIN32) || defined(__unix__)
+#define PADD64
+#endif
+
+#if defined(aix) || defined (LYNXOS)
+#undef PADD64
+#endif
+
+#if defined(__linux__) && !defined (__LP64__)
+#undef PADD64
+#endif
+
+static int Dic_padding = 1;
+static int Dis_padding = 1;
+
+void dic_disable_padding()
+{
+	Dic_padding = 0;
+}
+
+void dis_disable_padding()
+{
+	Dis_padding = 0;
+}
+
+static int get_curr_bytes(int items, int bytes_left, int item_size)
+{
+	int num;
+
+	if(!(num = items))
+	{
+		num = bytes_left;
+	} 
+	else 
+	{
+		num *= item_size;
+	}
+	return num;
+}
+
+#ifdef vms
+		
+static int check_vms_out(flags, format, curr_par_num, buff_out)
+short flags;
+int format, curr_par_num;
+void *buff_out;
+{
+	unsigned int input_code;
+	int i;
+	int num;
+	
+	if(	(flags & IT_IS_FLOAT) && ((format & 0xF0) == IEEE_FLOAT) )
+	{
+		switch(flags & 0x3)
+		{
+			case SWAPL :
+				num = curr_par_num;
+				(int *)buff_out -= num;
+				for( i = 0; i < num; i++) 
+				{
+					cvt$convert_float((void *)buff_out, CVT$K_VAX_F, 
+									(void *)buff_out, CVT$K_IEEE_S,
+									0 );
+					((int *)buff_out)++;
+				}
+				break;
+			case SWAPD :
+#ifdef __alpha
+				input_code = CVT$K_VAX_G;
+#else
+				input_code = CVT$K_VAX_D;
+#endif
+				num = curr_par_num;
+				(double *)buff_out -= num;
+				for( i = 0; i < num; i++ )
+				{
+					cvt$convert_float((void *)buff_out, input_code,
+									(void *)buff_out, CVT$K_IEEE_T,
+									0 );
+					((double *)buff_out)++;
+				}
+				break;
+		}
+	}
+}
+
+
+
+static int check_vms_in(flags, curr_par_num, curr_par_bytes, buff_out)
+short flags;
+int curr_par_num, curr_par_bytes;
+void *buff_out;
+{
+	unsigned int input_code, output_code;
+	int i;
+	int num;
+	
+	if(flags & 0xF0)
+	{
+		switch(curr_par_bytes) 
+		{
+			case SIZEOF_FLOAT :
+				if((flags & 0xF0) == IEEE_FLOAT)
+				{
+					num = curr_par_num;
+					(int *)buff_out -= num;
+					for( i = 0; i<num; i++)
+					{
+						cvt$convert_float((void *)buff_out, CVT$K_IEEE_S,
+										  (void *)buff_out, CVT$K_VAX_F,
+										  0 );
+						((int *)buff_out)++;
+					}
+				}
+				break;
+			case SIZEOF_DOUBLE :
+#ifdef __alpha
+				output_code = CVT$K_VAX_G;
+#else
+				output_code = CVT$K_VAX_D;
+#endif
+				switch(flags & 0xF0)
+				{
+					case VAX_FLOAT:
+						input_code = CVT$K_VAX_D;
+						break;	
+					case AXP_FLOAT:
+						input_code = CVT$K_VAX_G;
+						break;	
+					case IEEE_FLOAT:
+						input_code = CVT$K_IEEE_T;
+						break;	
+				}							
+				num = curr_par_num;
+				(double *)buff_out -= num;
+				for( i = 0; i<num; i++)
+				{
+					cvt$convert_float((void *)buff_out, input_code,
+									  (void *)buff_out, output_code,
+									  0 );
+					((double *)buff_out)++;
+				}
+				break;
+		}
+	}
+}
+
+#endif
+
+static int check_padding(int curr_bytes, int item_size)
+{
+	int num;
+
+	if( (num = curr_bytes % item_size))
+	{
+		num = item_size - num;
+	}
+	return num;
+}
+
+int copy_swap_buffer_out(int format, FORMAT_STR *format_data, void *buff_out, void *buff_in, int size)
+{
+	int num = 0, pad_num = 0, curr_size = 0, curr_out = 0;
+	int next_par_bytes, curr_par_num;
+	
+	if(format){}
+	if(!format_data->par_bytes) {
+		if(buff_in != buff_out)
+			memcpy( buff_out, buff_in, (size_t)size );
+		return(size);
+	}
+	next_par_bytes = format_data->par_bytes;
+	while(next_par_bytes)
+	{
+		curr_par_num = format_data->par_num;
+		if((curr_size+(curr_par_num * format_data->par_bytes))
+		   > size)
+		{
+			curr_par_num = (size - curr_size)/format_data->par_bytes;
+			next_par_bytes = 0;
+		}
+		switch(format_data->flags & 0x3) 
+		{
+			case NOSWAP :
+
+				num = get_curr_bytes(curr_par_num,
+					size - curr_size, SIZEOF_CHAR);
+
+				memcpy( buff_out, buff_in, (size_t)num);
+				inc_pter( buff_in, num);
+				inc_pter( buff_out, num);
+				curr_out += num;
+				break;
+			case SWAPS :
+				num = get_curr_bytes(curr_par_num,
+					size - curr_size, SIZEOF_SHORT);
+
+				if(Dis_padding)
+				{
+					if( (pad_num = check_padding(curr_size, SIZEOF_SHORT)) )
+					{
+						inc_pter( buff_in, pad_num);
+						curr_size += pad_num;
+					}
+				}
+				memcpy( buff_out, buff_in, (size_t)num);
+				inc_pter( buff_in, num);
+				inc_pter( buff_out, num);
+				curr_out += num;
+				break;
+			case SWAPL :
+				num = get_curr_bytes(curr_par_num,
+					size - curr_size, SIZEOF_LONG);
+
+				if(Dis_padding)
+				{
+					if( (pad_num = check_padding(curr_size, SIZEOF_LONG)) )
+					{
+						inc_pter( buff_in, pad_num);
+						curr_size += pad_num;
+					}
+				}
+				memcpy( buff_out, buff_in, (size_t)num);
+				inc_pter( buff_in, num);
+				inc_pter( buff_out, num);
+				curr_out += num;
+				break;
+			case SWAPD :
+				num = get_curr_bytes(curr_par_num,
+					size - curr_size, SIZEOF_DOUBLE);
+
+				if(Dis_padding)
+				{
+#ifdef PADD64
+					if( (pad_num = check_padding(curr_size, SIZEOF_DOUBLE)) )
+#else
+					if( (pad_num = check_padding(curr_size, SIZEOF_LONG)) )
+#endif
+					{
+						inc_pter( buff_in, pad_num);
+						curr_size += pad_num;
+					}
+				}
+				memcpy( buff_out, buff_in, (size_t)num);
+				inc_pter( buff_in, num);
+				inc_pter( buff_out, num);
+				curr_out += num;
+				break;
+		}
+#ifdef vms
+		check_vms_out(format_data->flags, format, curr_par_num, buff_out);
+#endif
+		curr_size += num;
+		format_data++;
+		if(next_par_bytes)
+			next_par_bytes = format_data->par_bytes;
+	}
+	return(curr_out);
+}
+
+int copy_swap_buffer_in(FORMAT_STR *format_data, void *buff_out, void *buff_in, int size)
+{
+	int num, pad_num, curr_size = 0, curr_out = 0;
+	int next_par_bytes, curr_par_num, curr_par_bytes;
+	
+	num = 0;
+	if(!format_data->par_bytes) {
+		if(buff_in != buff_out)
+			memcpy( buff_out, buff_in, (size_t)size );
+		return(size);
+	}
+	next_par_bytes = format_data->par_bytes;
+	while(next_par_bytes)
+	{
+		curr_par_num = format_data->par_num;
+		curr_par_bytes = format_data->par_bytes;
+		if((curr_size+(curr_par_num * curr_par_bytes))
+		   > size)
+		{
+			curr_par_num = (size - curr_size)/curr_par_bytes;
+			next_par_bytes = 0;
+		}
+		switch(format_data->flags & 0x3) 
+		{
+			case NOSWAP :
+
+				num = get_curr_bytes(curr_par_num,
+					size - curr_size, curr_par_bytes);
+
+				if(Dic_padding)
+				{
+					if(curr_par_bytes == SIZEOF_DOUBLE)
+					{
+#ifdef PADD64
+						if( (pad_num = check_padding(curr_out, SIZEOF_DOUBLE)) )
+#else
+						if( (pad_num = check_padding(curr_out, SIZEOF_LONG)) )
+#endif
+						{
+							inc_pter( buff_out, pad_num);
+							curr_out += pad_num;
+						}
+					}
+					else
+					{
+						if( (pad_num = check_padding(curr_out, curr_par_bytes)) )
+						{
+							inc_pter( buff_out, pad_num);
+							curr_out += pad_num;
+						}
+					}
+				}
+
+				if(buff_in != buff_out)
+					memcpy( buff_out, buff_in, (size_t)num);
+				inc_pter( buff_in, num);
+				inc_pter( buff_out, num);
+				curr_out += num;
+				break;
+			case SWAPS :
+
+				num = get_curr_bytes(curr_par_num,
+					size - curr_size, SIZEOF_SHORT);
+
+				if(Dic_padding)
+				{
+					if( (pad_num = check_padding(curr_out, SIZEOF_SHORT)) )
+					{
+						inc_pter( buff_out, pad_num);
+						curr_out += pad_num;
+					}
+				}
+				_swaps_buffer( (short *)buff_out, (short *)buff_in, num/SIZEOF_SHORT) ;
+				inc_pter( buff_in, num);
+				inc_pter( buff_out, num);
+				curr_out += num;
+				break;
+			case SWAPL :
+
+				num = get_curr_bytes(curr_par_num,
+					size - curr_size, SIZEOF_LONG);
+
+				if(Dic_padding)
+				{
+					if( (pad_num = check_padding(curr_out, SIZEOF_LONG)) )
+					{
+						inc_pter( buff_out, pad_num);
+						curr_out += pad_num;
+					}
+				}
+				_swapl_buffer( (short *)buff_out, (short *)buff_in, num/SIZEOF_LONG) ;
+				inc_pter( buff_in, num);
+				inc_pter( buff_out, num);
+				curr_out += num;
+				break;
+			case SWAPD :
+
+				num = get_curr_bytes(curr_par_num,
+					size - curr_size, SIZEOF_DOUBLE);
+
+				if(Dic_padding)
+				{
+#ifdef PADD64
+					if( (pad_num = check_padding(curr_out, SIZEOF_DOUBLE)) )
+#else
+					if( (pad_num = check_padding(curr_out, SIZEOF_LONG)) )
+#endif
+					{
+						inc_pter( buff_out, pad_num);
+						curr_out += pad_num;
+					}
+				}
+				_swapd_buffer( (short *)buff_out, (short *)buff_in, num/SIZEOF_DOUBLE) ;
+				inc_pter( buff_in, num);
+				inc_pter( buff_out, num);
+				curr_out += num;
+				break;
+		}
+#ifdef vms
+		check_vms_in(format_data->flags, curr_par_num, curr_par_bytes, buff_out);
+#endif
+		curr_size += num;
+		format_data++;
+		if(next_par_bytes)
+			next_par_bytes = format_data->par_bytes;
+	}
+	return(curr_out);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: branches/testFACT++branch/dim/src/dic.c
===================================================================
--- branches/testFACT++branch/dim/src/dic.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/dic.c	(revision 18277)
@@ -0,0 +1,2387 @@
+
+/*
+ * DIC (Delphi Information Client) Package implements a library of
+ * routines to be used by clients.
+ *
+ * Started on        : 10-11-91
+ * Last modification : 10-08-94
+ * Written by        : C. Gaspar
+ * Adjusted by       : G.C. Ballintijn
+ *
+ */
+
+#ifdef VMS
+#	include <cfortran.h>
+#	include <assert.h>
+#endif
+
+#define DIMLIB
+#include <dim.h>
+#include <dic.h>
+
+/*
+#define DEBUG
+*/
+
+#ifdef VMS
+#define TMP_ENABLE_AST      long int ast_enable = sys$setast(1);
+#define TMP_DISABLE_AST     if (ast_enable != SS$_WASSET) sys$setast(0);
+#endif
+
+#define BAD_CONN_TIMEOUT 2
+
+
+typedef struct bad_conn {
+	struct bad_conn *next;
+	struct bad_conn *prev;
+	DIC_CONNECTION conn;
+	int n_retries;
+	int retrying;
+} DIC_BAD_CONNECTION;
+
+static DIC_SERVICE *Service_pend_head = 0;
+static DIC_SERVICE *Cmnd_head = 0;
+static DIC_SERVICE *Current_server = 0;
+static DIC_BAD_CONNECTION *Bad_connection_head = 0;
+static int Dic_timer_q = 0;
+static int Dns_dic_conn_id = 0;
+static TIMR_ENT *Dns_dic_timr = NULL;
+static int Tmout_max = 0;
+static int Tmout_min = 0;
+static int Threads_off = 0;
+
+static void (*Error_user_routine)() = 0;
+static int Error_conn_id = 0;
+static int Curr_conn_id = 0;
+
+#ifdef DEBUG
+static int Debug_on = 1;
+#else
+static int Debug_on = 0;
+#endif
+
+_DIM_PROTO( unsigned request_service, (char *service_name, int req_type,
+				    int req_timeout, void *service_address,
+				    int service_size, void (*usr_routine)(void*,void*,int*),
+				    dim_long tag, void *fill_addr, int fill_size, int stamped) );
+_DIM_PROTO( int request_command,      (char *service_name, void *service_address,
+				    int service_size, void (*usr_routine)(void*,int*),
+				    dim_long tag, int stamped) );
+_DIM_PROTO( DIC_SERVICE *insert_service, (int type, int timeout, char *name,
+				  int *address, int size, void (*routine)(),
+				  dim_long tag, int *fill_addr, int fill_size,
+				  int pending, int stamped ) );
+_DIM_PROTO( void modify_service, (DIC_SERVICE *servp, int timeout,
+				  int *address, int size, void (*routine)(),
+				  dim_long tag, int *fill_addr, int fill_size, int stamped) );
+_DIM_PROTO( DIC_SERVICE *locate_command, (char *serv_name) );
+_DIM_PROTO( DIC_SERVICE *locate_pending, (char *serv_name) );
+_DIM_PROTO( DIC_BAD_CONNECTION *locate_bad, (char *node, char *task, int port) );
+_DIM_PROTO( void service_tmout,      (int serv_id) );
+_DIM_PROTO( static void request_dns_info,      (int retry) );
+_DIM_PROTO( static int handle_dns_info,      (DNS_DIC_PACKET *) );
+_DIM_PROTO( void close_dns_conn,     (void) );
+_DIM_PROTO( static void release_conn, (int conn_id) );
+_DIM_PROTO( static void get_format_data, (int format, FORMAT_STR *format_data, 
+					char *def) );
+_DIM_PROTO( static void execute_service,      (DIS_PACKET *packet, 
+					DIC_SERVICE *servp, int size) );
+
+void print_packet(DIS_PACKET *packet)
+{
+	dim_print_date_time();
+	printf("Bad ID received from server -> Packet received:\n");
+	printf("\tpacket->size = %d\n",vtohl(packet->size));
+	printf("\tpacket->service_id = %d\n",vtohl(packet->service_id));
+}
+
+void dic_set_debug_on()
+{
+	Debug_on = 1;
+}
+
+void dic_set_debug_off()
+{
+	Debug_on = 0;
+}
+
+void dic_no_threads()
+{
+	Threads_off = 1;
+}
+
+void dic_add_error_handler( void (*user_routine)()) 
+{
+
+	DISABLE_AST
+	Error_user_routine = user_routine;
+	ENABLE_AST
+}
+
+static void error_handler(int conn_id, int severity, int errcode, char *reason)
+{
+	int last_conn_id;
+
+	if(Error_user_routine)
+	{
+			Error_conn_id = conn_id;
+			last_conn_id = Curr_conn_id;
+			(Error_user_routine)(severity, errcode, reason);
+			Error_conn_id = 0;
+			Curr_conn_id = last_conn_id;
+	}
+	else
+	{
+		dim_print_msg(reason, severity);
+		if(severity == 3)
+		{
+			printf("Exiting!\n");
+			exit(2);
+		}
+	}
+}
+
+static void recv_rout( int conn_id, DIS_PACKET *packet, int size, int status )
+{
+	register DIC_SERVICE *servp, *auxp;
+	register DIC_CONNECTION *dic_connp;
+	int service_id, once_only, found = 0;
+	char node[MAX_NODE_NAME], task[MAX_TASK_NAME];
+	void move_to_notok_service();
+	void do_cmnd_callback();
+	void dim_panic(char *);
+
+	dic_connp = &Dic_conns[conn_id] ;
+	switch( status )
+	{
+	case STA_DISC:
+		if(Debug_on)
+		{
+			dna_get_node_task(conn_id, node, task);
+			dim_print_date_time();
+			printf("Conn %d: Server %s on node %s Disconnected\n",
+				conn_id, task, node);
+			fflush(stdout);
+		}
+		if( !(servp = (DIC_SERVICE *) dic_connp->service_head) )
+		{
+			release_conn( conn_id );
+			break;
+		}
+		while( (servp = (DIC_SERVICE *) dll_get_next(
+					(DLL *) dic_connp->service_head,
+				 	(DLL *) servp)) )
+		{
+#ifdef DEBUG
+			printf("\t %s was in the service list\n",servp->serv_name);
+			fflush(stdout);
+#endif
+/*
+	Will be done later by the DNS answer
+			service_tmout( servp->serv_id );
+*/
+			if(!strcmp(dic_connp->task_name,"DIS_DNS"))
+			{
+				service_tmout( servp->serv_id );
+			}
+			else if(Dns_dic_conn_id <= 0)
+			{
+				service_tmout( servp->serv_id );
+			}
+/*
+			servp->pending = WAITING_DNS_UP;
+			servp->conn_id = 0;
+*/
+			auxp = servp->prev;
+			move_to_notok_service( servp );
+			servp = auxp;
+		}		
+		if( (servp = (DIC_SERVICE *) Cmnd_head) ) 
+		{
+			while( (servp = (DIC_SERVICE *) dll_get_next(
+							(DLL *) Cmnd_head,
+							(DLL *) servp)) )
+			{
+				if( servp->conn_id == conn_id )
+				{
+#ifdef DEBUG
+					printf("\t%s was in the Command list\n", servp->serv_name);
+					printf("servp = %x, type = %d, pending = %d\n",servp, servp->type, servp->pending);
+					fflush(stdout);
+#endif
+					auxp = servp->prev;
+					if( (servp->type == ONCE_ONLY ) &&
+						(servp->pending == WAITING_SERVER_UP))
+					{
+						service_tmout( servp->serv_id );
+					}
+					else if( (servp->type == COMMAND ) &&
+						(servp->pending == WAITING_CMND_ANSWER))
+					{
+						service_tmout( servp->serv_id );
+					}
+					else 
+					{
+						servp->pending = WAITING_DNS_UP;
+						dic_release_service( (unsigned)servp->serv_id );
+					}
+					servp = auxp;
+				}
+			}
+		}
+		release_conn( conn_id );
+		request_dns_info(0);
+		break;
+	case STA_DATA:
+		if( !(DIC_SERVICE *) dic_connp->service_head )
+			break;
+		service_id = vtohl(packet->service_id);
+		if((unsigned)service_id & 0x80000000)  /* Service removed by server */
+		{
+			service_id &= 0x7fffffff;
+			if( (servp = (DIC_SERVICE *) id_get_ptr(service_id, SRC_DIC))) 
+			{
+				if( servp->type != COMMAND )
+				{
+					service_tmout( servp->serv_id );
+/*
+					servp->pending = WAITING_DNS_UP;
+					servp->conn_id = 0;
+*/
+					move_to_notok_service( servp );
+				}
+				else
+				{
+					service_tmout( servp->serv_id );
+					break;
+				}
+			}
+			else
+			{
+/*
+				print_packet(packet);
+*/
+				if( (servp = (DIC_SERVICE *) Cmnd_head) ) 
+				{
+					while( (servp = (DIC_SERVICE *) dll_get_next(
+							(DLL *) Cmnd_head,
+							(DLL *) servp)) )
+					{
+						if( servp->conn_id == conn_id )
+						{
+#ifdef DEBUG
+							printf("\t%s was in the Command list\n", servp->serv_name);
+							fflush(stdout);
+#endif
+							auxp = servp->prev;
+							if( (servp->type == ONCE_ONLY ) &&
+								(servp->pending == WAITING_SERVER_UP))
+							{
+								service_tmout( servp->serv_id );
+							}
+							else if( (servp->type == COMMAND ) &&
+								(servp->pending == WAITING_CMND_ANSWER))
+							{
+								service_tmout( servp->serv_id );
+							}
+							else 
+							{
+								servp->pending = WAITING_DNS_UP;
+								dic_release_service( (unsigned)servp->serv_id );
+							}
+							servp = auxp;
+						}
+					}
+				}
+			}			
+			if( dll_empty((DLL *)dic_connp->service_head) ) {
+				if( (servp = (DIC_SERVICE *) Cmnd_head) ) {
+					while( (servp = (DIC_SERVICE *) dll_get_next(
+							(DLL *) Cmnd_head,
+							(DLL *) servp)) )
+					{
+						if( servp->conn_id == conn_id)
+							found = 1;
+					}
+				}
+				if( !found)
+				{
+					release_conn( conn_id );
+				}
+			}
+			request_dns_info(0);
+			break;
+		}
+		if( (servp = (DIC_SERVICE *) id_get_ptr(service_id, SRC_DIC)))
+		{
+			if(servp->serv_id == service_id)
+			{
+				once_only = 0;
+				if(servp->type == ONCE_ONLY)
+					once_only = 1;
+				else 
+				{
+					if( servp->timeout > 0 ) 
+					{
+						if(servp->timer_ent)
+							dtq_clear_entry( servp->timer_ent );
+					}
+				}
+				Curr_conn_id = conn_id;
+				execute_service(packet, servp, size);
+				Curr_conn_id = 0;
+				if( once_only )
+				{
+					auxp = locate_command(servp->serv_name);
+					if((auxp) && (auxp != servp))
+					{
+						servp->pending = WAITING_DNS_UP;
+						dic_release_service( (unsigned)servp->serv_id );
+					}
+					else
+					{
+						servp->pending = NOT_PENDING;
+						servp->tmout_done = 0;
+						if( servp->timer_ent )
+						{
+							dtq_rem_entry( Dic_timer_q, servp->timer_ent );
+							servp->timer_ent = 0;
+						}
+					}
+				}
+			}
+		}
+/*
+		else
+		{
+			print_packet(packet);
+			if(Error_user_routine)
+				(Error_user_routine)( packet->buffer );
+		}
+*/
+		break;
+	case STA_CONN:
+		if(Debug_on)
+		{
+			dna_get_node_task(conn_id, node, task);
+			dim_print_date_time();
+			printf("Conn %d: Server %s on node %s Connected\n",
+				conn_id, task, node);
+			fflush(stdout);
+		}
+		break;
+	default:	dim_panic( "recv_rout(): Bad switch" );
+	}
+}
+
+static void execute_service(DIS_PACKET *packet, DIC_SERVICE *servp, int size)
+{
+	int format;
+	FORMAT_STR format_data_cp[MAX_NAME/4], *formatp;
+	static int *buffer;
+	static int buffer_size = 0;
+	int add_size;
+	int *pkt_buffer, header_size;
+
+	Current_server = servp;
+	format = servp->format;
+	memcpy(format_data_cp, servp->format_data, sizeof(format_data_cp));
+	if((format & 0xF) == ((MY_FORMAT) & 0xF)) 
+	{
+		for(formatp = format_data_cp; formatp->par_bytes; formatp++)
+			formatp->flags &= (short)0xFFF0;    /* NOSWAP */
+	}
+	if( servp->stamped)
+	{
+		pkt_buffer = ((DIS_STAMPED_PACKET *)packet)->buffer;
+		header_size = DIS_STAMPED_HEADER;
+		servp->time_stamp[0] = vtohl(((DIS_STAMPED_PACKET *)packet)->time_stamp[0]);
+		if(((unsigned)servp->time_stamp[0] & 0xFFFF0000) == 0xc0de0000)
+		{
+/*
+			servp->time_stamp[0] &= 0x0000FFFF;
+*/
+			servp->time_stamp[1] = vtohl(((DIS_STAMPED_PACKET *)packet)->time_stamp[1]);
+			servp->quality = vtohl(((DIS_STAMPED_PACKET *)packet)->quality);
+		}
+		else if((vtohl(((DIS_STAMPED_PACKET *)packet)->reserved[0])) == (int)0xc0dec0de)
+		{
+/*
+			servp->time_stamp[0] &= 0x0000FFFF;
+*/
+			servp->time_stamp[1] = vtohl(((DIS_STAMPED_PACKET *)packet)->time_stamp[1]);
+			servp->quality = vtohl(((DIS_STAMPED_PACKET *)packet)->quality);
+		}
+		else
+		{
+			pkt_buffer = ((DIS_PACKET *)packet)->buffer;
+			header_size = DIS_HEADER;
+		}
+	}
+	else
+	{
+		pkt_buffer = ((DIS_PACKET *)packet)->buffer;
+		header_size = DIS_HEADER;
+	}
+	size -= header_size;
+	if( servp->serv_address ) 
+	{
+		if( size > servp->serv_size ) 
+			size = servp->serv_size; 
+		add_size = copy_swap_buffer_in(format_data_cp, 
+						 servp->serv_address, 
+						 pkt_buffer, size);
+		if( servp->user_routine )
+			(servp->user_routine)(&servp->tag, servp->serv_address, &add_size );
+	} 
+	else 
+	{
+		if( servp->user_routine )
+		{
+			add_size = size + (size/2);
+			if(!buffer_size)
+			{
+				buffer = (int *)malloc((size_t)add_size);
+				buffer_size = add_size;
+			} 
+			else 
+			{
+				if( add_size > buffer_size ) 
+				{
+					free(buffer);
+					buffer = (int *)malloc((size_t)add_size);
+					buffer_size = add_size;
+				}
+			}
+			add_size = copy_swap_buffer_in(format_data_cp, 
+						 buffer, 
+						 pkt_buffer, size);
+			(servp->user_routine)( &servp->tag, buffer, &add_size );
+		}
+	}
+	Current_server = 0;
+}
+
+static void recv_dns_dic_rout( int conn_id, DNS_DIC_PACKET *packet, int size, int status )
+{
+	register DIC_SERVICE *servp, *auxp;
+	void dim_panic(char *);
+
+	if(size){}
+	switch( status )
+	{
+	case STA_DISC:       /* connection broken */
+		servp = Service_pend_head;
+		while( (servp = (DIC_SERVICE *) dll_get_next(
+						(DLL *) Service_pend_head,
+						(DLL *) servp)) )
+		{
+			if( (servp->pending == WAITING_DNS_ANSWER) ||
+			    (servp->pending == WAITING_SERVER_UP))
+			{
+				if(( servp->type == COMMAND )||( servp->type == ONCE_ONLY ))
+				{
+					auxp = servp->prev;
+					servp->pending = WAITING_DNS_UP;
+					service_tmout( servp->serv_id );
+					servp = auxp;
+				}
+				else
+				{
+					servp->pending = WAITING_DNS_UP;
+				}
+			}
+		}
+		dna_close( Dns_dic_conn_id );
+		Dns_dic_conn_id = 0;
+		request_dns_info(0);
+		break;
+	case STA_CONN:        /* connection received */
+		if(Dns_dic_conn_id < 0)
+		{
+			Dns_dic_conn_id = conn_id;
+			request_dns_info(0);
+
+		}
+		break;
+	case STA_DATA:       /* normal packet */
+		if( vtohl(packet->size) == DNS_DIC_HEADER )
+		{
+			handle_dns_info( packet );
+		}
+		break;
+	default:	dim_panic( "recv_dns_dic_rout(): Bad switch" );
+	}
+}
+
+
+void service_tmout( int serv_id )
+{
+	int once_only, size = 0;
+	register DIC_SERVICE *servp;
+	
+/*
+dim_print_date_time();
+printf("In service tmout\n");
+*/
+	servp=(DIC_SERVICE *)id_get_ptr(serv_id, SRC_DIC);
+	if(!servp)
+		return;
+	if(servp->tmout_done)
+		return;
+/*
+dim_print_date_time();
+printf("In service tmout %s\n", servp->serv_name);
+*/
+	servp->tmout_done = 1;
+	Curr_conn_id = servp->conn_id;
+/*
+	if( servp->type == UPDATE )
+		return;
+*/
+	if( servp->type == COMMAND )
+	{
+		if( servp->user_routine )
+		{
+			if(servp->pending == WAITING_CMND_ANSWER)
+				size = 1;
+			else
+				size = 0;
+			(servp->user_routine)( &servp->tag, &size );
+		}
+		dic_release_service( (unsigned)servp->serv_id );
+		Curr_conn_id = 0;
+		return;
+	}
+	once_only = 0;
+	if(servp->type == ONCE_ONLY)
+		once_only = 1;
+/*
+	if( servp->fill_address )
+*/
+	if( servp->fill_size >= 0 )
+	{
+		size = servp->fill_size;
+		if( servp->serv_address )
+		{
+			if( size > servp->serv_size ) 
+				size = servp->serv_size; 
+			memcpy(servp->serv_address, servp->fill_address, (size_t)size);
+			if( servp->user_routine )
+				(servp->user_routine)( &servp->tag, servp->serv_address, &size);
+		}
+		else
+		{
+			if( servp->user_routine )
+				(servp->user_routine)( &servp->tag, servp->fill_address, &size);
+		}
+	}
+	if( once_only )
+	{
+		dic_release_service( (unsigned)servp->serv_id );
+	}
+	Curr_conn_id = 0;
+}
+
+
+unsigned dic_info_service( char *serv_name, int req_type, int req_timeout, void *serv_address,
+			   int serv_size, void (*usr_routine)(), dim_long tag, void *fill_addr, int fill_size )
+{
+	unsigned ret;
+
+	ret = request_service( serv_name, req_type, req_timeout, 
+		serv_address, serv_size, usr_routine, tag, 
+		fill_addr, fill_size, 0 ); 
+
+	return(ret);
+}
+
+unsigned dic_info_service_stamped( char *serv_name, int req_type, int req_timeout, void *serv_address,
+			   int serv_size, void (*usr_routine)(), dim_long tag, void *fill_addr, int fill_size )
+{
+	unsigned ret;
+
+	ret = request_service( serv_name, req_type, req_timeout, 
+		serv_address, serv_size, usr_routine, tag, 
+		fill_addr, fill_size, 1 ); 
+
+	return(ret);
+}
+
+unsigned request_service( char *serv_name, int req_type, int req_timeout, void *serv_address,
+			   int serv_size, void (*usr_routine)(), dim_long tag, void *fill_addr, int fill_size, int stamped )
+{
+	register DIC_SERVICE *servp;
+	int conn_id;
+	int send_service();
+	int locate_service();
+	void dim_init_threads(void);
+
+	if(!Threads_off)
+	{
+		dim_init_threads();
+	}
+	{
+	DISABLE_AST
+	/* create a timer queue for timeouts if not yet done */
+	if( !Dic_timer_q ) {
+		conn_arr_create( SRC_DIC );
+		Dic_timer_q = dtq_create();
+	}
+
+	/* store_service */
+	if(req_timeout < 0)
+		req_timeout = 0;
+	if(req_type == ONCE_ONLY)
+	{
+		if( !Cmnd_head ) {
+			Cmnd_head = (DIC_SERVICE *) malloc(sizeof(DIC_SERVICE) );
+			dll_init( (DLL *) Cmnd_head );
+			Cmnd_head->serv_id = 0;
+		}
+		if( (servp = locate_command(serv_name)) ) 
+		{
+			if( (conn_id = servp->conn_id) ) 
+			{
+				if(servp->pending == NOT_PENDING)
+				{
+					modify_service( servp, req_timeout,
+						(int *)serv_address, serv_size, usr_routine, tag,
+						(int *)fill_addr, fill_size, stamped);
+					servp->pending = WAITING_SERVER_UP;
+					if(send_service(conn_id, servp))
+					{
+						ENABLE_AST
+						return(1);
+					}
+				}
+			}	
+		}
+	}
+	servp = insert_service( req_type, req_timeout,
+			serv_name, (int *)serv_address, serv_size, usr_routine, tag,
+			(int *)fill_addr, fill_size, WAITING_DNS_UP, stamped );
+            
+	/* get_address of server from name_server */
+   
+	if( locate_service(servp) <= 0)
+	{
+/*
+		service_tmout( servp->serv_id );
+*/
+		dtq_start_timer( 0, service_tmout, servp->serv_id);
+	}
+	ENABLE_AST
+	}
+	return((unsigned) servp->serv_id);
+}
+
+
+int dic_cmnd_service( char *serv_name, void *serv_address, int serv_size )
+{
+	int ret;
+
+	ret = request_command( serv_name, serv_address, serv_size, 
+		0, 0, 0 ); 
+
+	return(ret ? 1 : 0);
+
+}
+
+int dic_cmnd_service_stamped( char *serv_name, void *serv_address, int serv_size )
+{
+	int ret;
+
+	ret = request_command( serv_name, serv_address, serv_size, 
+		0, 0, 1 ); 
+
+	return(ret ? 1 : 0);
+
+}
+
+int dic_cmnd_callback( char *serv_name, void *serv_address, int serv_size, 
+					  void (*usr_routine)(), dim_long tag )
+{
+	int ret;
+
+	ret = request_command( serv_name, serv_address, serv_size, 
+		usr_routine, tag, 0 ); 
+	return(ret ? 1 : 0);
+}
+
+int dic_cmnd_callback_stamped( char *serv_name, void *serv_address, int serv_size, 
+					  void (*usr_routine)(), dim_long tag )
+{
+	int ret;
+
+	ret = request_command( serv_name, serv_address, serv_size, 
+		usr_routine, tag, 1 ); 
+	return(ret ? 1 : 0);
+}
+
+int request_command(char *serv_name, void *serv_address, int serv_size, 
+					  void (*usr_routine)(), dim_long tag, int stamped)
+{
+	int conn_id, ret;
+	register DIC_SERVICE *servp, *testp;
+	int *fillp;
+	int send_command();
+	int end_command();
+	void dim_init_threads(void);
+	int locate_service();
+
+	if(!Threads_off)
+	{
+		dim_init_threads();
+	}
+	{
+	DISABLE_AST
+	/* create a timer queue for timeouts if not yet done */
+	if( !Dic_timer_q ) {
+		conn_arr_create( SRC_DIC );
+		Dic_timer_q = dtq_create();
+	}
+
+	/* store_service */
+	if( !Cmnd_head ) {
+		Cmnd_head = (DIC_SERVICE *) malloc(sizeof(DIC_SERVICE) );
+		dll_init( (DLL *) Cmnd_head );
+		Cmnd_head->serv_id = 0;
+	}
+	if( (servp = locate_command(serv_name)) ) 
+	{
+		if(!(testp = locate_pending(serv_name)))
+		{
+			if( (conn_id = servp->conn_id) ) 
+			{
+				if(servp->fill_size > 0)
+					free( servp->fill_address );
+				fillp = serv_address;
+				if(serv_size > 0)
+				{
+					fillp = (int *)malloc((size_t)serv_size);
+					memcpy( (char *)fillp, (char *)serv_address, (size_t)serv_size );
+				}
+				servp->fill_address = fillp;
+				servp->fill_size = serv_size;
+/*
+				servp->fill_address = (int *)serv_address;
+				servp->fill_size = serv_size;
+*/
+				servp->user_routine = usr_routine;
+				servp->tag = tag;
+				ret = send_command(conn_id, servp);
+				end_command(servp, ret);
+				ENABLE_AST
+				return(1);
+			}
+		}	
+	}
+	servp = insert_service( COMMAND, 0,
+				serv_name, 0, 0, usr_routine, tag, 
+				(int *)serv_address, serv_size,
+				WAITING_DNS_UP, stamped );	
+	if( locate_service(servp) <= 0)
+	{
+/*
+		service_tmout( servp->serv_id );
+*/
+		dtq_start_timer( 0, service_tmout, servp->serv_id);
+	}
+	ENABLE_AST
+	}
+	return(-1);
+}
+
+DIC_SERVICE *insert_service( int type, int timeout, char *name, int *address, int size, 
+							void (*routine)(), dim_long tag, int *fill_addr, int fill_size, 
+							int pending, int stamped)
+{
+	register DIC_SERVICE *newp;
+	int *fillp;
+	int service_id;
+	int tout;
+	float ftout;
+
+	DISABLE_AST
+	newp = (DIC_SERVICE *) malloc(sizeof(DIC_SERVICE));
+	newp->pending = 0;
+	strncpy( newp->serv_name, name, (size_t)MAX_NAME );
+	newp->type = type;
+	newp->timeout = timeout;
+	newp->serv_address = address;
+	newp->serv_size = size;
+	newp->user_routine = routine;
+	newp->tag = tag;
+	fillp = fill_addr;
+	if(fill_size > 0)
+	{
+		fillp = (int *)malloc((size_t)fill_size);
+		memcpy( (char *) fillp, (char *) fill_addr, (size_t)fill_size );
+	}
+	newp->fill_address = fillp;
+	newp->fill_size = fill_size;
+	newp->conn_id = 0;
+	newp->format_data[0].par_bytes = 0;
+	newp->next = (DIC_SERVICE *)0;
+	service_id = id_get((void *)newp, SRC_DIC);
+	newp->serv_id = service_id;
+	if( !Service_pend_head )
+	{
+		Service_pend_head = (DIC_SERVICE *) malloc(sizeof(DIC_SERVICE));
+		dll_init( (DLL *) Service_pend_head );
+		Service_pend_head->serv_id = 0;
+	}
+	dll_insert_queue( (DLL *) Service_pend_head, (DLL *)newp );
+	newp->timer_ent = NULL;
+	if(type != MONIT_FIRST)
+	{
+		if( timeout ) 
+		{
+			tout = timeout;
+			if(type != ONCE_ONLY)
+			{
+				if(tout < 10) 
+					tout = 10;
+				ftout = (float)tout * (float)1.5;
+				tout = (int)ftout;
+			}
+			newp->curr_timeout = tout;
+			newp->timer_ent = dtq_add_entry( Dic_timer_q,
+						newp->curr_timeout,
+						service_tmout, newp->serv_id );
+		}
+	}
+	newp->pending = pending;
+	newp->tmout_done = 0;
+	newp->stamped = stamped;
+	newp->time_stamp[0] = 0;
+	newp->time_stamp[1] = 0;
+	newp->quality = 0;
+	newp->def[0] = '\0';
+#ifdef VxWorks
+	newp->tid = taskIdSelf();
+#endif
+	ENABLE_AST
+	return(newp);
+}
+
+
+void modify_service( DIC_SERVICE *servp, int timeout, int *address, int size, void (*routine)(), 
+			 dim_long tag, int *fill_addr, int fill_size, int stamped)
+{
+	int *fillp;
+
+	if( servp->timer_ent )
+	{
+		dtq_rem_entry( Dic_timer_q, servp->timer_ent );
+		servp->timer_ent = 0;
+	}
+	servp->timeout = timeout;
+	servp->serv_address = address;
+	servp->serv_size = size;
+	servp->user_routine = routine;
+	servp->tag = tag;
+	if(servp->fill_size > 0)
+		free( servp->fill_address );
+	fillp = fill_addr;
+	if(fill_size > 0)
+	{
+		fillp = (int *)malloc((size_t)fill_size);
+		memcpy( (char *) fillp, (char *) fill_addr, (size_t)fill_size );
+	}
+	servp->fill_address = fillp;
+	servp->fill_size = fill_size;
+	servp->stamped = stamped;
+	if(timeout)
+	{
+		servp->curr_timeout = timeout;
+		servp->timer_ent = dtq_add_entry( Dic_timer_q,
+						servp->curr_timeout,
+						service_tmout, servp->serv_id );
+	}
+	else
+		servp->timer_ent = NULL;
+}
+
+void dic_change_address( unsigned serv_id, void *serv_address, int serv_size)
+{
+	register DIC_SERVICE *servp;
+
+	DISABLE_AST
+	if( serv_id == 0 )
+	  {
+	        ENABLE_AST
+		return;
+	  }
+	servp = (DIC_SERVICE *)id_get_ptr(serv_id, SRC_DIC);
+	servp->serv_address = (int *)serv_address;
+	servp->serv_size = serv_size;
+	ENABLE_AST
+}
+
+int dic_get_quality( unsigned serv_id )
+{
+	register DIC_SERVICE *servp;
+
+	DISABLE_AST
+	if( serv_id == 0 )
+	{
+		if(Current_server)
+			servp = Current_server;
+		else
+		{
+
+	    	ENABLE_AST
+			return(-1);
+		}
+	}
+	else
+	{
+		servp = (DIC_SERVICE *)id_get_ptr(serv_id, SRC_DIC);
+	}
+	ENABLE_AST
+	return(servp->quality);
+}
+
+char *dic_get_format( unsigned serv_id )
+{
+	register DIC_SERVICE *servp;
+
+	DISABLE_AST
+	if( serv_id == 0 )
+	{
+		if(Current_server)
+			servp = Current_server;
+		else
+		{
+	    	ENABLE_AST
+			return((char *) 0);
+		}
+	}
+	else
+	{
+		servp = (DIC_SERVICE *)id_get_ptr(serv_id, SRC_DIC);
+	}
+	ENABLE_AST
+	return(servp->def);
+}
+
+int dic_get_timestamp( unsigned serv_id, int *secs, int *milisecs )
+{
+	register DIC_SERVICE *servp;
+
+	DISABLE_AST
+	*secs = 0;
+	*milisecs = 0;
+	if( serv_id == 0 )
+	{
+		if(Current_server)
+			servp = Current_server;
+		else
+		{
+	    	ENABLE_AST
+			return(-1);
+		}
+	}
+	else
+	{
+		servp = (DIC_SERVICE *)id_get_ptr(serv_id, SRC_DIC);
+	}
+	ENABLE_AST
+	if(servp->time_stamp[1])
+	{
+		*secs = servp->time_stamp[1];
+		if(((unsigned)servp->time_stamp[0] & 0xFFFF0000) == 0xc0de0000)
+			*milisecs = servp->time_stamp[0] & 0x0000FFFF;
+		else
+			*milisecs = servp->time_stamp[0];
+		return(1);
+	}
+	else
+	{
+/*
+		*secs = 0;
+		*milisecs = 0;
+*/
+		return(0);
+	}
+}
+
+void dic_release_service( unsigned service_id )
+{
+	register DIC_SERVICE *servp;
+	register int conn_id, pending;
+	static DIC_PACKET *dic_packet;
+	static int packet_size = 0;
+	DIC_DNS_PACKET dic_dns_packet;
+	register DIC_DNS_PACKET *dic_dns_p = &dic_dns_packet;
+	SERVICE_REQ *serv_reqp;
+	int release_service();
+
+	DISABLE_AST
+	if( !packet_size ) {
+		dic_packet = (DIC_PACKET *)malloc((size_t)DIC_HEADER);
+		packet_size = DIC_HEADER;
+	}
+	if( service_id == 0 )
+	{
+	    ENABLE_AST
+		return;
+	}
+	servp = (DIC_SERVICE *)id_get_ptr(service_id, SRC_DIC);
+	if( servp == 0 )
+	{
+	    ENABLE_AST
+		return;
+	}
+	if(servp->serv_id != (int)service_id)
+	{
+	    ENABLE_AST
+		return;
+	}
+	pending = servp->pending;
+	switch( pending )
+	{
+	case NOT_PENDING :
+		conn_id = servp->conn_id;
+		strncpy(dic_packet->service_name, servp->serv_name, (size_t)MAX_NAME); 
+		dic_packet->type = htovl(DIM_DELETE);
+		dic_packet->service_id = (int)htovl(service_id);
+		dic_packet->size = htovl(DIC_HEADER);
+		dna_write_nowait( conn_id, dic_packet, DIC_HEADER );
+		release_service( servp );
+		break;
+	case WAITING_SERVER_UP :
+		if( ( servp->type == COMMAND )||( servp->type == ONCE_ONLY ) )
+		{
+			servp->pending = DELETED;
+			break;
+		}
+		if( Dns_dic_conn_id > 0) {
+			dic_dns_p->size = htovl(sizeof(DIC_DNS_PACKET));
+			dic_dns_p->src_type = htovl(SRC_DIC);
+			serv_reqp = &dic_dns_p->service;
+			strcpy( serv_reqp->service_name, servp->serv_name );
+			serv_reqp->service_id = (int)htovl((unsigned)servp->serv_id | 0x80000000);
+			dna_write( Dns_dic_conn_id, dic_dns_p,
+				  sizeof(DIC_DNS_PACKET) );
+		}
+		release_service( servp );
+		break;
+	case WAITING_CMND_ANSWER :
+	case WAITING_DNS_UP :
+		release_service( servp );
+		break;
+	case WAITING_DNS_ANSWER :
+		servp->pending = DELETED;
+		break;
+	}
+	ENABLE_AST
+}
+
+
+int release_service( DIC_SERVICE *servicep )
+{
+	register DIC_SERVICE *servp;
+	register int conn_id = 0;
+	register int found = 0;
+	register DIC_CONNECTION *dic_connp;
+	char name[MAX_NAME], *ptr;
+	int id;
+
+	id = servicep->serv_id;
+	servicep->serv_id = 0;
+	conn_id = servicep->conn_id;
+	dic_connp = &Dic_conns[conn_id] ;
+	dll_remove( (DLL *) servicep );
+	if( servicep->timer_ent )
+	{
+		dtq_rem_entry( Dic_timer_q, servicep->timer_ent );
+	}
+/*
+	if(servicep->type != COMMAND)
+*/
+	if(servicep->fill_size > 0)
+		free( servicep->fill_address );
+	if(strstr(servicep->serv_name,"/RpcOut"))
+	{
+		strcpy(name, servicep->serv_name);
+	}
+	else
+		name[0] = '\0';
+	free( servicep );
+	if( conn_id && dic_connp->service_head )
+	{
+		if( dll_empty((DLL *)dic_connp->service_head) ) 
+		{
+			if( (servp = (DIC_SERVICE *) Cmnd_head) ) 
+			{
+				while( (servp = (DIC_SERVICE *) dll_get_next(
+						(DLL *) Cmnd_head,
+						(DLL *) servp)) )
+				{
+					if( servp->conn_id == conn_id)
+						found = 1;
+				}
+			}
+			if( !found)
+			{
+				if(Debug_on)
+				{
+					dim_print_date_time();
+					printf("Conn %d, Server %s on node %s released\n",
+						conn_id, dic_connp->task_name, dic_connp->node_name);
+					fflush(stdout);
+				}
+				release_conn( conn_id );
+			}
+		}
+	}
+	if(name[0])
+	{
+		ptr = strstr(name,"/RpcOut");
+		strcpy(ptr + 4, "In"); 
+		if( (servp = locate_command(name)) )
+			release_service(servp); 
+	}
+	id_free(id, SRC_DIC);
+	return(1);
+}
+
+
+int locate_service( DIC_SERVICE *servp )
+{
+	extern int open_dns(dim_long, void (*)(), void (*)(), int, int, int);
+
+	if(!strcmp(servp->serv_name,"DIS_DNS/SERVER_INFO"))
+	{
+		Tmout_min = DID_DNS_TMOUT_MIN;
+		Tmout_max = DID_DNS_TMOUT_MAX;
+	}
+	if(Tmout_min == 0)
+	{
+		Tmout_min = DIC_DNS_TMOUT_MIN;
+		Tmout_max = DIC_DNS_TMOUT_MAX;
+	}
+	if( !Dns_dic_conn_id )
+	  {
+	    DISABLE_AST;
+		Dns_dic_conn_id = open_dns( 0, recv_dns_dic_rout, error_handler,
+					Tmout_min,
+					Tmout_max,
+					SRC_DIC);
+		if(Dns_dic_conn_id == -2)
+			error_handler(0, DIM_FATAL, DIMDNSUNDEF, "DIM_DNS_NODE undefined");
+		ENABLE_AST;
+	  }
+	if( Dns_dic_conn_id > 0)
+	{
+	    DISABLE_AST;
+		request_dns_info(servp->prev->serv_id);
+		ENABLE_AST;
+	}
+
+	return(Dns_dic_conn_id);
+}
+
+DIC_SERVICE *locate_command( char *serv_name )
+{
+	register DIC_SERVICE *servp;
+
+	if(!Cmnd_head)
+		return((DIC_SERVICE *)0);
+	if( (servp = (DIC_SERVICE *) dll_search( (DLL *) Cmnd_head, serv_name,
+					    (int)strlen(serv_name)+1)) )
+		return(servp);
+	return((DIC_SERVICE *)0);
+}
+
+DIC_SERVICE *locate_pending( char *serv_name )
+{
+	register DIC_SERVICE *servp;
+
+	if(!Service_pend_head)
+		return((DIC_SERVICE *)0);
+	if( (servp = (DIC_SERVICE *) dll_search( (DLL *) Service_pend_head, serv_name,
+					    (int)strlen(serv_name)+1)) )
+		return(servp);
+	return((DIC_SERVICE *)0);
+}
+
+DIC_BAD_CONNECTION *locate_bad(char *node, char *task, int port)
+{
+	DIC_BAD_CONNECTION *bad_connp;
+
+	if(!Bad_connection_head)
+		return((DIC_BAD_CONNECTION *)0);
+	bad_connp = Bad_connection_head;
+	while( (bad_connp = (DIC_BAD_CONNECTION *) dll_get_next(
+						(DLL *) Bad_connection_head,
+						(DLL *) bad_connp)) )
+	{
+		if((!strcmp(bad_connp->conn.node_name, node)) &&
+			(!strcmp(bad_connp->conn.task_name, task)) &&
+			(bad_connp->conn.port == port) )
+		return(bad_connp);
+	}
+	return((DIC_BAD_CONNECTION *)0);
+}
+
+static void request_dns_info(int id)
+{
+	DIC_SERVICE *servp, *ptr;
+	int n_pend = 0;
+	int request_dns_single_info();
+	extern int open_dns();
+
+	DISABLE_AST
+    if( Dns_dic_conn_id <= 0)
+	{
+		Dns_dic_conn_id = open_dns( 0, recv_dns_dic_rout, error_handler,
+					   Tmout_min,
+					   Tmout_max,
+					   SRC_DIC);
+		if(Dns_dic_conn_id == -2)
+			error_handler(0, DIM_FATAL, DIMDNSUNDEF, "DIM_DNS_NODE undefined");
+	}
+	if( Dns_dic_conn_id > 0)
+	{
+		servp = Service_pend_head;
+		if(id > 0)
+		{
+			ptr = (DIC_SERVICE *)id_get_ptr(id, SRC_DIC);
+			if(ptr)
+			{
+				if((ptr->serv_id == id) && (ptr->pending != NOT_PENDING))
+					servp = ptr;
+			}
+		}
+
+		while( (servp = (DIC_SERVICE *) dll_get_next(
+						(DLL *) Service_pend_head,
+						(DLL *) servp)) )
+		{
+			if( servp->pending == WAITING_DNS_UP)
+			{
+				if(!request_dns_single_info( servp ))
+				{
+					ENABLE_AST
+					return;
+			    }
+				n_pend++;
+			}
+			if(n_pend == 1000)
+			{
+				dtq_start_timer( 0, request_dns_info, servp->serv_id);
+				ENABLE_AST
+				return;
+			}
+		}
+	}
+	else
+	{
+		servp = Service_pend_head;
+		while( (servp = (DIC_SERVICE *) dll_get_next(
+						(DLL *) Service_pend_head,
+						(DLL *) servp)) )
+		{
+			if( servp->pending == WAITING_DNS_UP)
+			{
+				if(( servp->type != COMMAND )&&( servp->type != ONCE_ONLY ))
+					service_tmout( servp->serv_id );
+			}
+		}
+	}
+	ENABLE_AST
+}
+
+
+int request_dns_single_info( DIC_SERVICE *servp )
+{
+	static DIC_DNS_PACKET Dic_dns_packet;
+	static SERVICE_REQ *serv_reqp;
+	int ret = 1;
+
+	if( Dns_dic_conn_id > 0)
+	{
+	        if(Debug_on)
+			{
+				dim_print_date_time();
+				printf("Requesting DNS Info for %s, id %d\n",
+					servp->serv_name, servp->serv_id);
+			}
+	  
+		Dic_dns_packet.src_type = htovl(SRC_DIC);
+		serv_reqp = &Dic_dns_packet.service;
+		strcpy( serv_reqp->service_name, servp->serv_name );
+		serv_reqp->service_id = htovl(servp->serv_id);
+		servp->pending = WAITING_DNS_ANSWER;
+		Dic_dns_packet.size = htovl(sizeof(DIC_DNS_PACKET));
+		if(!dna_write( Dns_dic_conn_id, &Dic_dns_packet,
+				      sizeof(DIC_DNS_PACKET) ) )
+		  {
+		    ret = 0;
+		  }
+
+	}
+	return ret;
+}
+
+
+static int handle_dns_info( DNS_DIC_PACKET *packet )
+{
+	int conn_id, service_id;
+	DIC_SERVICE *servp;
+	char *node_name, *task_name;
+	char node_info[MAX_NODE_NAME+4];
+	int i, port, protocol, format, pid;
+	register DIC_CONNECTION *dic_connp ;
+	DIC_DNS_PACKET dic_dns_packet;
+	register DIC_DNS_PACKET *dic_dns_p = &dic_dns_packet;
+	SERVICE_REQ *serv_reqp;
+	DIC_BAD_CONNECTION *bad_connp;
+	int retrying = 0;
+	int tmout;
+	int send_service_command();
+	int find_connection();
+	void move_to_bad_service();
+	void retry_bad_connection();
+
+	service_id = vtohl(packet->service_id);
+
+	servp = (DIC_SERVICE *)id_get_ptr(service_id, SRC_DIC);
+	if(!servp)
+		return(0);
+	if(servp->serv_id != service_id)
+		return(0);
+	if(Debug_on)
+	{
+		dim_print_date_time();
+		printf("Receiving DNS Info for service %s, id %d\n",servp->serv_name,
+			vtohl(packet->service_id));
+	}
+	node_name = packet->node_name; 
+	if(node_name[0] == (char)0xFF)
+	{
+		error_handler(0, DIM_FATAL, DIMDNSREFUS, "DIM_DNS refuses connection");
+		return(0);
+	}
+	
+	task_name =  packet->task_name;
+	strcpy(node_info,node_name);
+	for(i = 0; i < 4; i ++)
+		node_info[(int)strlen(node_name)+i+1] = packet->node_addr[i];
+	port = vtohl(packet->port); 
+	pid = vtohl(packet->pid); 
+	protocol = vtohl(packet->protocol);
+	format = vtohl(packet->format);
+
+	if( Dns_dic_timr )
+		dtq_clear_entry( Dns_dic_timr );
+	if( servp->pending == DELETED ) {
+		if( Dns_dic_conn_id > 0) {
+			dic_dns_p->size = htovl(sizeof(DIC_DNS_PACKET));
+			dic_dns_p->src_type = htovl(SRC_DIC);
+			serv_reqp = &dic_dns_p->service;
+			strcpy( serv_reqp->service_name, servp->serv_name );
+			serv_reqp->service_id = (int)htovl((unsigned)servp->serv_id | 0x80000000);
+			dna_write( Dns_dic_conn_id, dic_dns_p,
+				  sizeof(DIC_DNS_PACKET) );
+		}
+		release_service( servp );	
+		return(0);
+	}
+	if( !node_name[0] ) 
+	{
+		servp->pending = WAITING_SERVER_UP;
+		service_tmout( servp->serv_id ); 
+		if( servp->pending == DELETED ) 
+		{
+			if( Dns_dic_conn_id > 0) 
+			{
+				dic_dns_p->size = htovl(sizeof(DIC_DNS_PACKET));
+				dic_dns_p->src_type = htovl(SRC_DIC);
+				serv_reqp = &dic_dns_p->service;
+				strcpy( serv_reqp->service_name, servp->serv_name );
+				serv_reqp->service_id = (int)htovl((unsigned)servp->serv_id | 0x80000000);
+				dna_write( Dns_dic_conn_id, dic_dns_p,
+					sizeof(DIC_DNS_PACKET) );
+			}
+			release_service( servp );
+		}
+		return(0);
+	}
+#ifdef OSK
+	{
+		register char *ptr;
+
+		if(strncmp(node_name,"fidel",5))
+		{
+			for(ptr = node_name; *ptr; ptr++)
+			{
+				if(*ptr == '.')
+				{
+					*ptr = '\0';
+					break;
+				}
+			}
+		}
+	}
+#endif
+	if( !(conn_id = find_connection(node_name, task_name, port)) ) 
+	{
+	  bad_connp = locate_bad(node_name, task_name, port);
+	  if(bad_connp)
+		  retrying = bad_connp->retrying;
+	  if((!bad_connp) || (retrying))
+	  {	
+		if( (conn_id = dna_open_client(node_info, task_name, port,
+					      protocol, recv_rout, error_handler, SRC_DIC)) )
+		{
+/*
+#ifndef VxWorks
+			if(format & MY_OS9)
+			{
+				dna_set_test_write(conn_id, TEST_TIME_OSK);
+				format &= 0xfffff7ff;
+			}
+			else
+			{
+				dna_set_test_write(conn_id, TEST_TIME_VMS);
+			}
+#endif
+*/
+			dna_set_test_write(conn_id, dim_get_keepalive_timeout());
+			dic_connp = &Dic_conns[conn_id];
+			strncpy( dic_connp->node_name, node_name,
+				 (size_t)MAX_NODE_NAME); 
+			strncpy( dic_connp->task_name, task_name,
+				 (size_t)MAX_TASK_NAME);
+			dic_connp->port = port;
+			dic_connp->pid = pid;
+			if(Debug_on)
+			{
+				dim_print_date_time();
+				printf("Conn %d, Server %s on node %s Connecting\n",
+					conn_id, dic_connp->task_name, dic_connp->node_name);
+				fflush(stdout);
+			}
+
+			dic_connp->service_head = 
+						malloc(sizeof(DIC_SERVICE));
+			dll_init( (DLL *) dic_connp->service_head);
+			((DIC_SERVICE *)(dic_connp->service_head))->serv_id = 0;
+			if(retrying)
+			{
+				dll_remove((DLL *)bad_connp->conn.service_head);
+				free(bad_connp->conn.service_head);
+				dll_remove((DLL *)bad_connp);
+				free(bad_connp);
+			}
+		} 
+		else 
+		{
+			if(!retrying)
+			{
+				if( !Bad_connection_head )
+				{
+					Bad_connection_head = (DIC_BAD_CONNECTION *) malloc(sizeof(DIC_BAD_CONNECTION));
+					dll_init( (DLL *) Bad_connection_head );
+					Bad_connection_head->conn.service_head = 0;
+				}
+				bad_connp = (DIC_BAD_CONNECTION *) malloc(sizeof(DIC_BAD_CONNECTION));
+				bad_connp->n_retries = 0;
+				bad_connp->conn.service_head = malloc(sizeof(DIC_SERVICE));
+				dll_init( (DLL *) bad_connp->conn.service_head);
+
+				dll_insert_queue( (DLL *) Bad_connection_head, (DLL *) bad_connp );
+				if(Debug_on)
+				{
+					dim_print_date_time();
+					printf("Failed connecting to Server %s on node %s port %d\n",
+						task_name, node_name, port);
+					fflush(stdout);
+				}
+				service_tmout( servp->serv_id );
+			}
+			bad_connp->n_retries++;
+			bad_connp->retrying = 0;
+			strncpy( bad_connp->conn.node_name, node_name, (size_t)MAX_NODE_NAME); 
+			strncpy( bad_connp->conn.task_name, task_name, (size_t)MAX_TASK_NAME);
+			bad_connp->conn.port = port;
+			tmout = BAD_CONN_TIMEOUT * (bad_connp->n_retries - 1);
+			if(tmout > 120)
+				tmout = 120;
+/* Can not be 0, the callback of dtq_start_timer(0) is not protected */
+			if(tmout == 0)
+				tmout = 1;
+			dtq_start_timer(tmout, retry_bad_connection, (dim_long)bad_connp);
+			if(( servp->type == COMMAND )||( servp->type == ONCE_ONLY ))
+				return(0);
+			move_to_bad_service(servp, bad_connp);
+/*			
+			((DIC_SERVICE *)(dic_connp->service_head))->serv_id = 0;
+
+			servp = Service_pend_head;
+			while( (servp = (DIC_SERVICE *) dll_get_next(
+						(DLL *) Service_pend_head,
+						(DLL *) servp)) )
+			{
+				if( (servp->pending == WAITING_DNS_ANSWER) ||
+					(servp->pending == WAITING_SERVER_UP))
+						servp->pending = WAITING_DNS_UP;
+			}
+			dna_close( Dns_dic_conn_id );
+			Dns_dic_conn_id = 0;
+			request_dns_info(0);
+*/
+			return(0);
+		}
+	  }
+	  else
+	  {
+			if(!retrying)
+				service_tmout( servp->serv_id );
+			if(( servp->type == COMMAND )||( servp->type == ONCE_ONLY ))
+				return(0);
+			move_to_bad_service(servp, bad_connp);
+			return(0);
+	  }
+	}
+	strcpy(servp->def, packet->service_def);
+	get_format_data(format, servp->format_data, servp->def);
+	servp->format = format;
+	servp->conn_id = conn_id;
+
+	send_service_command( servp );
+/*
+	if( ret == 1)
+	{
+		if(servp->pending != WAITING_CMND_ANSWER)
+			servp->pending = NOT_PENDING;
+		servp->tmout_done = 0;
+	}
+*/
+	return(1);
+}
+
+void retry_bad_connection(DIC_BAD_CONNECTION *bad_connp)
+{
+DIC_SERVICE *servp, *auxp;
+int found = 0;
+void move_to_notok_service();
+
+	if(!bad_connp)
+		return;
+	servp = (DIC_SERVICE *)bad_connp->conn.service_head;
+	while( (servp = (DIC_SERVICE *) dll_get_next(
+					(DLL *) bad_connp->conn.service_head,
+				 	(DLL *) servp)) )
+	{
+/*
+		servp->pending = WAITING_DNS_UP;
+		servp->conn_id = 0;
+*/
+		auxp = servp->prev;
+		move_to_notok_service( servp );
+		servp = auxp;
+		found = 1;
+	}
+	bad_connp->retrying = 1;
+	if(found)
+		request_dns_info(0);
+}
+
+void move_to_ok_service( DIC_SERVICE *servp, int conn_id )
+{
+	if(Dic_conns[conn_id].service_head)
+	{
+		DISABLE_AST
+/*
+printf("move_to_ok %s\n",servp->serv_name);
+*/
+		servp->pending = NOT_PENDING;
+		servp->tmout_done = 0;
+		dll_remove( (DLL *) servp );
+		dll_insert_queue( (DLL *) Dic_conns[conn_id].service_head,
+			  (DLL *) servp );
+		ENABLE_AST
+	}
+}
+
+void move_to_bad_service( DIC_SERVICE *servp, DIC_BAD_CONNECTION *bad_connp)
+{
+	DISABLE_AST
+/*
+printf("move_to_bad %s\n",servp->serv_name);
+*/
+	servp->pending = WAITING_DNS_UP;
+	dll_remove( (DLL *) servp );
+	dll_insert_queue( (DLL *) bad_connp->conn.service_head, (DLL *) servp );
+	ENABLE_AST
+}
+
+void move_to_cmnd_service( DIC_SERVICE *servp )
+{
+/*
+	if(servp->pending != WAITING_CMND_ANSWER)
+*/
+	DISABLE_AST
+/*
+printf("move_to_cmnd %s\n",servp->serv_name);
+*/
+	servp->pending = NOT_PENDING;
+	servp->tmout_done = 0;
+	dll_remove( (DLL *) servp );
+	dll_insert_queue( (DLL *) Cmnd_head, (DLL *) servp );
+	ENABLE_AST
+}
+
+void move_to_notok_service(DIC_SERVICE *servp )
+{
+	DISABLE_AST
+/*
+printf("move_to_notok %s\n",servp->serv_name);
+*/
+	servp->pending = WAITING_DNS_UP;
+	servp->conn_id = 0;
+	dll_remove( (DLL *) servp );
+	dll_insert_queue( (DLL *) Service_pend_head, (DLL *) servp );
+	ENABLE_AST
+}
+
+static void get_format_data(int format, FORMAT_STR *format_data, char *def)
+{
+	register FORMAT_STR *formatp = format_data;
+	register char code, last_code = 0;
+	int num;
+	char *ptr = def;
+
+	if(format){}
+	while(*ptr)
+	{
+		switch(*ptr)
+		{
+			case 'i':
+			case 'I':
+			case 'l':
+			case 'L':
+				*ptr = 'I';
+				break;
+			case 'x':
+			case 'X':
+				*ptr = 'X';
+				break;
+			case 's':
+			case 'S':
+				*ptr = 'S';
+				break;
+			case 'f':
+			case 'F':
+				*ptr = 'F';
+				break;
+			case 'd':
+			case 'D':
+				*ptr = 'D';
+				break;
+			case 'c':
+			case 'C':
+				*ptr = 'C';
+				break;
+		}
+		ptr++;
+	}
+	code = *def;
+	while(*def)
+	{
+		if(code != last_code)
+		{
+			formatp->par_num = 0;
+			formatp->flags = 0;
+			switch(code)
+			{
+				case 'i':
+				case 'I':
+				case 'l':
+				case 'L':
+					formatp->par_bytes = SIZEOF_LONG;
+					formatp->flags |= SWAPL;
+					break;
+				case 'x':
+				case 'X':
+					formatp->par_bytes = SIZEOF_DOUBLE;
+					formatp->flags |= SWAPD;
+					break;
+				case 's':
+				case 'S':
+					formatp->par_bytes = SIZEOF_SHORT;
+					formatp->flags |= SWAPS;
+					break;
+				case 'f':
+				case 'F':
+					formatp->par_bytes = SIZEOF_LONG;
+					formatp->flags |= SWAPL;
+#ifdef vms
+/*
+					if((format & 0xF0) != (MY_FORMAT & 0xF0))
+*/
+					formatp->flags |= (format & 0xF0);
+					formatp->flags |= IT_IS_FLOAT;
+#endif
+					break;
+				case 'd':
+				case 'D':
+					formatp->par_bytes = SIZEOF_DOUBLE;
+					formatp->flags |= SWAPD;
+#ifdef vms
+/*             	
+			  		if((format & 0xF0) != (MY_FORMAT & 0xF0))
+*/
+					formatp->flags |= (format & 0xF0);
+					formatp->flags |= IT_IS_FLOAT;
+#endif
+					break;
+				case 'c':
+				case 'C':
+				case 'b':
+				case 'B':
+				case 'v':
+				case 'V':
+					formatp->par_bytes = SIZEOF_CHAR;
+					formatp->flags |= NOSWAP;
+					break;
+			}
+		}
+		def++;
+		if(*def != ':')
+		{
+/* tested by the server
+			if(*def)
+			{
+				printf("Bad service definition parsing\n");
+				fflush(stdout);
+   	    	}
+			else
+*/
+				formatp->par_num = 0;
+		}
+		else
+		{
+			def++;
+			sscanf(def,"%d",&num);
+			formatp->par_num += num;
+			while((*def != ';') && (*def != '\0'))
+				def++;
+			if(*def)
+	       	    def++;
+		}
+		last_code = code;
+		code = *def;
+		if(code != last_code)
+			formatp++;
+	}
+	formatp->par_bytes = 0;
+/*
+	if((format & 0xF) == (MY_FORMAT & 0xF)) 
+	{
+		for(i = 0, formatp = format_data; i<index;i++, formatp++)
+			formatp->flags &= 0xF0;  
+	}
+*/
+}
+
+int end_command(DIC_SERVICE *servp, int ret)
+{
+	DIC_SERVICE *aux_servp;
+	DIC_CONNECTION *dic_connp;
+
+	DISABLE_AST
+	dic_connp = &Dic_conns[servp->conn_id];
+	if(servp->pending != WAITING_CMND_ANSWER)
+	{
+		if((!ret) || (!dic_connp->service_head))
+		{
+			servp->pending = WAITING_DNS_UP;
+			dic_release_service( (unsigned)servp->serv_id );
+		}
+		else
+		{
+			aux_servp = locate_command(servp->serv_name);
+			if( !aux_servp ) 
+			{
+				move_to_cmnd_service( servp );
+			}
+			else
+			{
+				if(aux_servp != servp)
+				{
+					servp->pending = WAITING_DNS_UP;
+					dic_release_service( (unsigned)servp->serv_id );
+				}
+			}
+		}
+	}
+	ENABLE_AST
+	return(ret);
+}
+
+int send_service_command(DIC_SERVICE *servp)
+{
+    int ret = 1;
+	int conn_id;
+	int send_command();
+	int send_service();
+
+	conn_id = servp->conn_id;
+	if( servp->type == COMMAND ) 
+	{
+		ret = send_command(conn_id, servp);
+		end_command(servp, ret);
+	} 
+	else 
+	{
+		if( send_service(conn_id, servp))
+		{
+			if( servp->type == ONCE_ONLY ) 
+			{
+				if( !locate_command(servp->serv_name) ) 
+				{
+					move_to_cmnd_service( servp );	
+				}
+			}
+			else
+				move_to_ok_service( servp, conn_id );
+		}
+		else
+		{
+			if( servp->type == ONCE_ONLY ) 
+			{
+				servp->pending = WAITING_DNS_UP;
+				dic_release_service( (unsigned)servp->serv_id );
+			}
+			else
+			{
+				servp->pending = WAITING_DNS_UP;
+				servp->conn_id = 0;
+/*
+				release_conn(conn_id);
+*/
+				request_dns_info(0);
+			}
+		}
+	}
+	return(ret);
+}	
+
+int send_service(int conn_id, DIC_SERVICE *servp)
+{
+	static DIC_PACKET *dic_packet;
+	static int serv_packet_size = 0;
+    int type, ret;
+
+	if( !serv_packet_size ) {
+		dic_packet = (DIC_PACKET *)malloc((size_t)DIC_HEADER);
+		serv_packet_size = DIC_HEADER;
+	}
+
+	strncpy( dic_packet->service_name, servp->serv_name, (size_t)MAX_NAME ); 
+	type = servp->type;
+	if(servp->stamped)
+		type |= STAMPED;
+	dic_packet->type = htovl(type);
+	dic_packet->timeout = htovl(servp->timeout);
+	dic_packet->service_id = htovl(servp->serv_id);
+	dic_packet->format = htovl(MY_FORMAT);
+	dic_packet->size = htovl(DIC_HEADER);
+	ret = dna_write_nowait(conn_id, dic_packet, DIC_HEADER);
+	if(!ret)
+	{
+		dim_print_date_time();
+		printf(" Client Sending Service Request: Couldn't write to Conn %3d : Server %s@%s service %s\n",
+			conn_id, Net_conns[conn_id].task, Net_conns[conn_id].node, servp->serv_name);
+		fflush(stdout);
+	}
+	return(ret);
+}
+
+typedef struct
+{
+	int ret_code;
+	int serv_id;
+} CMNDCB_ITEM;
+
+void do_cmnd_callback(CMNDCB_ITEM *itemp)
+{
+
+	DIC_SERVICE *servp;
+	int ret, serv_id;
+/*
+	itemp = (CMNDCB_ITEM *)id_get_ptr(id, SRC_DIC);
+*/
+	serv_id = itemp->serv_id;
+	ret = itemp->ret_code;
+	servp = (DIC_SERVICE *)id_get_ptr(serv_id, SRC_DIC);
+	if(servp)
+	{
+		if(servp->serv_id == serv_id)
+		{
+			Curr_conn_id = servp->conn_id;
+			(servp->user_routine)( &servp->tag, &ret );
+			servp->pending = NOT_PENDING;
+			end_command(servp, ret);
+			Curr_conn_id = 0;
+		}
+	}
+/*
+	id_free(id, SRC_DIC);
+*/
+	free(itemp);
+}
+
+int send_command(int conn_id, DIC_SERVICE *servp)
+{
+	static DIC_PACKET *dic_packet;
+	static int cmnd_packet_size = 0;
+	register int size;
+	int ret;
+	CMNDCB_ITEM *itemp;
+
+	size = servp->fill_size;
+
+	if(size < 0)
+		return(1);
+
+	if( !cmnd_packet_size ) {
+		dic_packet = (DIC_PACKET *)malloc((size_t)(DIC_HEADER + size));
+		cmnd_packet_size = DIC_HEADER + size;
+	}
+	else
+	{
+		if( DIC_HEADER + size > cmnd_packet_size ) {
+			free( dic_packet );
+			dic_packet = (DIC_PACKET *)malloc((size_t)(DIC_HEADER + size));
+			cmnd_packet_size = DIC_HEADER + size;
+		}
+	}
+
+	strncpy(dic_packet->service_name, servp->serv_name, (size_t)MAX_NAME); 
+	dic_packet->type = htovl(COMMAND);
+	dic_packet->timeout = htovl(0);
+	dic_packet->format = htovl(MY_FORMAT);
+
+	dic_packet->service_id = /*id_get((void *)servp)*/servp->serv_id;
+
+	size = copy_swap_buffer_out(servp->format, servp->format_data, 
+					 dic_packet->buffer, servp->fill_address, 
+					 size);
+	dic_packet->size = htovl( size + DIC_HEADER);
+	if( servp->user_routine )
+	{
+		servp->pending = WAITING_CMND_ANSWER;
+		ret = dna_write_nowait(conn_id, dic_packet, DIC_HEADER + size);
+		itemp = (CMNDCB_ITEM *)malloc(sizeof(CMNDCB_ITEM));
+		itemp->serv_id = servp->serv_id;
+		itemp->ret_code = ret;
+/*
+		id = id_get((void *)itemp, SRC_DIC);
+*/
+		dtq_start_timer(0, do_cmnd_callback, (dim_long)itemp);
+/*
+		(servp->user_routine)( &servp->tag, &ret );
+*/
+	}
+	else
+	{
+		ret = dna_write_nowait(conn_id, dic_packet, DIC_HEADER + size);
+	}
+/*
+	if(!ret)
+	{
+		servp->pending = WAITING_DNS_UP;
+		dic_release_service( (unsigned)servp->serv_id );
+	}
+*/
+	/*
+	ret = dna_write_nowait(conn_id, dic_packet, DIC_HEADER + size);
+	if(!ret)
+	{
+		servp->pending = WAITING_DNS_UP;
+		dic_release_service( (unsigned)servp->serv_id );
+	}
+	else
+	{
+		dim_usleep(5000);
+		if( servp->user_routine )
+			(servp->user_routine)( &servp->tag, &ret );
+	}
+*/
+	if(!ret)
+	{
+		dim_print_date_time();
+		printf(" Client Sending Command: Couldn't write to Conn %3d : Server %s@%s\n",conn_id,
+			Net_conns[conn_id].task, Net_conns[conn_id].node);
+		fflush(stdout);
+	}
+	return(ret);
+}
+
+int find_connection(char *node, char *task, int port)
+{
+	register int i;
+	register DIC_CONNECTION *dic_connp;
+
+	if(task){}
+	for( i=0, dic_connp = Dic_conns; i<Curr_N_Conns; i++, dic_connp++ )
+	{
+/*
+		if((!strcmp(dic_connp->task_name, task))
+			&&(!strcmp(dic_connp->node_name, node)))
+*/
+		if((!strcmp(dic_connp->node_name, node)) 
+			&& (dic_connp->port == port))
+		return(i);
+	}
+	return(0);
+}
+
+int dic_get_id(char *name)
+{
+	extern int get_proc_name(char *name);
+
+	get_proc_name(name);
+	strcat(name,"@");
+	get_node_name(&name[(int)strlen(name)]);
+	return(1);
+}
+	
+#ifdef VxWorks
+void dic_destroy(int tid)
+{
+	register int i;
+	register DIC_CONNECTION *dic_connp;
+	register DIC_SERVICE *servp, *auxp;
+	int found = 0;
+
+	if(!Dic_conns)
+	  return;
+	for( i=0, dic_connp = Dic_conns; i<Curr_N_Conns; i++, dic_connp++ )
+	{
+	        if(servp = (DIC_SERVICE *) dic_connp->service_head)
+		  {
+		    while( servp = (DIC_SERVICE *) dll_get_next(
+					(DLL *) dic_connp->service_head,
+				 	(DLL *) servp) )
+		      {
+			if( servp->tid == tid )
+			  {
+			    auxp = servp->prev;
+			    dic_release_service( (unsigned)servp->serv_id );
+			    servp = auxp;
+			    if(!dic_connp->service_head)
+			      break; 
+			  }
+			else
+			  found = 1;
+		    }
+		}
+	}
+	if(!found)
+	  {
+	    if(Dns_dic_conn_id > 0)
+	      {
+		dna_close( Dns_dic_conn_id );
+		Dns_dic_conn_id = 0;
+	      }
+	  }
+}
+
+void DIMDestroy(int tid)
+{
+  dis_destroy(tid);
+  dic_destroy(tid);
+}
+
+#endif
+
+static void release_conn(int conn_id)
+{
+	register DIC_CONNECTION *dic_connp = &Dic_conns[conn_id];
+
+	if(Debug_on)
+	{
+		dim_print_date_time();
+		printf("Conn %d, Server %s on node %s completely released\n",
+			conn_id, dic_connp->task_name, dic_connp->node_name);
+		fflush(stdout);
+	}
+	dic_connp->task_name[0] = '\0';
+	dic_connp->port = 0;
+	if(dic_connp->service_head)
+	{
+		free((DIC_SERVICE *)dic_connp->service_head);
+		dic_connp->service_head = (char *)0;
+	}
+	dna_close(conn_id);
+}	
+
+void dic_close_dns()
+{
+	register DIC_SERVICE *servp, *auxp;
+		
+	if(Dns_dic_conn_id > 0)
+	{
+		if( (servp = (DIC_SERVICE *) Cmnd_head) ) 
+		{
+			while( (servp = (DIC_SERVICE *) dll_get_next(
+							(DLL *) Cmnd_head,
+							(DLL *) servp)) )
+			{
+#ifdef DEBUG
+					printf("\t%s was in the Command list\n", servp->serv_name);
+					printf("type = %d, pending = %d\n",servp->type, servp->pending);
+					fflush(stdout);
+#endif
+				auxp = servp->prev;
+				if( (servp->type == ONCE_ONLY ) &&
+					(servp->pending == WAITING_SERVER_UP))
+				{
+					service_tmout( servp->serv_id );
+				}
+				else if( (servp->type == COMMAND ) &&
+					(servp->pending == WAITING_CMND_ANSWER))
+				{
+					service_tmout( servp->serv_id );
+				}
+				else 
+				{
+					servp->pending = WAITING_DNS_UP;
+					dic_release_service( (unsigned)servp->serv_id );
+				}
+				servp = auxp;
+			}
+		}
+		dna_close( Dns_dic_conn_id );
+		Dns_dic_conn_id = 0;
+	}
+}
+/*
+append_service(service_info_buffer, servp)		
+char *service_info_buffer;
+SERVICE *servp;
+{
+	char name[MAX_NAME], *ptr;
+
+	if(strstr(servp->name,"/RpcIn"))
+	{
+		strcpy(name,servp->name);
+		ptr = (char *)strstr(name,"/RpcIn");
+		*ptr = 0;
+		strcat(service_info_buffer, name);
+		strcat(service_info_buffer, "|");
+		if(servp->def[0])
+		{
+			strcat(service_info_buffer, servp->def);
+		}
+		strcat(name,"/RpcOut");
+		if(servp = find_service(name))
+		{
+			strcat(service_info_buffer, ",");
+			if(servp->def[0])
+			{
+				strcat(service_info_buffer, servp->def);
+			}
+		}
+		strcat(service_info_buffer, "|RPC");
+		strcat(service_info_buffer, "\n");
+	}
+	else if(strstr(servp->name,"/RpcOut"))
+	{
+	}
+	else
+	{
+		strcat(service_info_buffer, servp->name);
+		strcat(service_info_buffer, "|");
+		if(servp->def[0])
+		{
+			strcat(service_info_buffer, servp->def);
+		}
+		strcat(service_info_buffer, "|");
+		if(servp->type == COMMAND)
+		{
+			strcat(service_info_buffer, "CMD");
+		}
+		strcat(service_info_buffer, "\n");
+	}
+}
+*/
+
+char *dic_get_error_services()
+{
+	return(dic_get_server_services(Error_conn_id));
+}
+
+char *dic_get_server_services(int conn_id)
+{
+	DIC_SERVICE *servp;
+	DIC_CONNECTION *dic_connp;
+	int n_services = 0;
+	int max_size;
+	static int curr_allocated_size = 0;
+	static char *service_info_buffer;
+	char *buff_ptr;
+
+
+	if(!conn_id)
+		return((char *)0);			
+	dic_connp = &Dic_conns[conn_id];
+	if( (servp = (DIC_SERVICE *) dic_connp->service_head) )
+	{
+		while( (servp = (DIC_SERVICE *) dll_get_next(
+					(DLL *) dic_connp->service_head,
+				 	(DLL *) servp)) )
+		{
+			n_services++;
+		}
+		if(!n_services)
+			return((char *)0);			
+		max_size = n_services * MAX_NAME;
+		if(!curr_allocated_size)
+		{
+			service_info_buffer = (char *)malloc((size_t)max_size);
+			curr_allocated_size = max_size;
+		}
+		else if (max_size > curr_allocated_size)
+		{
+			free(service_info_buffer);
+			service_info_buffer = (char *)malloc((size_t)max_size);
+			curr_allocated_size = max_size;
+		}
+		service_info_buffer[0] = '\0';
+		buff_ptr = service_info_buffer;
+
+		servp = (DIC_SERVICE *) dic_connp->service_head;
+		while( (servp = (DIC_SERVICE *) dll_get_next(
+					(DLL *) dic_connp->service_head,
+				 	(DLL *) servp)) )
+		{
+			strcat(buff_ptr, servp->serv_name);
+			strcat(buff_ptr, "\n");
+			buff_ptr += (int)strlen(buff_ptr);
+		}
+	}
+	else
+	{
+		return((char *)0);			
+	}
+/*
+	dim_print_date_time();
+	printf("Server %s@%s provides services:\n",
+			dic_connp->task_name, dic_connp->node_name);
+	printf("%s\n",service_info_buffer);
+*/
+	return(service_info_buffer);
+}
+
+int dic_get_conn_id()
+{
+	return(Curr_conn_id);
+}
+
+int dic_get_server(char *name)
+{
+	int ret = 0;
+	char node[MAX_NODE_NAME], task[MAX_TASK_NAME];
+
+	DISABLE_AST
+
+	if(Curr_conn_id)
+	{
+		dna_get_node_task(Curr_conn_id, node, task);
+		strcpy(name,task);
+		strcat(name,"@");
+		strcat(name,node);
+		ret = Curr_conn_id;
+	}
+	ENABLE_AST
+	return(ret);
+}
+
+int dic_get_server_pid(int *pid)
+{
+	int ret = 0;
+
+	DISABLE_AST
+
+	*pid = 0;
+	if(Curr_conn_id)
+	{
+		*pid = Dic_conns[Curr_conn_id].pid;
+		ret = Curr_conn_id;
+	}
+	ENABLE_AST
+	return(ret);
+}
+
+void dic_stop()
+{
+	int dic_find_server_conns();
+
+	dtq_delete(Dic_timer_q);
+	dic_close_dns();
+	if(!dic_find_server_conns())
+		dim_stop();
+}
+
+int dic_find_server_conns()
+{
+	int i;
+	int n = 0;
+
+	for( i = 0; i< Curr_N_Conns; i++ )
+	{
+		if(Net_conns[i].channel != 0)
+		{
+			if(Dna_conns[i].read_ast == recv_rout)
+			{
+				dna_close(i);
+			}
+			else
+			{
+				n++;
+			}
+		}
+	}
+	return(n);
+}
+
+#ifdef VMS
+/* CFORTRAN WRAPPERS */
+FCALLSCFUN9(INT, dic_info_service, DIC_INFO_SERVICE, dic_info_service,
+                 STRING, INT, INT, PVOID, INT, PVOID, INT, PVOID, INT)
+FCALLSCFUN9(INT, dic_info_service_stamped, DIC_INFO_SERVICE_STAMPED, 
+				 dic_info_service_stamped,
+                 STRING, INT, INT, PVOID, INT, PVOID, INT, PVOID, INT)
+FCALLSCFUN3(INT, dic_cmnd_service, DIC_CMND_SERVICE, dic_cmnd_service,
+                 STRING, PVOID, INT)
+FCALLSCFUN5(INT, dic_cmnd_callback, DIC_CMND_CALLBACK, dic_cmnd_callback,
+                 STRING, PVOID, INT, PVOID, INT)
+FCALLSCFUN3(INT, dic_cmnd_service_stamped, DIC_CMND_SERVICE_STAMPED, 
+				 dic_cmnd_service_stamped,
+                 STRING, PVOID, INT)
+FCALLSCFUN5(INT, dic_cmnd_callback_stamped, DIC_CMND_CALLBACK_STAMPED, 
+				 dic_cmnd_callback_stamped,
+                 STRING, PVOID, INT, PVOID, INT)
+FCALLSCSUB3(     dic_change_address, DIC_CHANGE_ADDRESS, dic_change_address,
+                 INT, PVOID, INT)
+FCALLSCSUB1(     dic_release_service, DIC_RELEASE_SERVICE, dic_release_service,
+                 INT)
+FCALLSCFUN1(INT, dic_get_quality, DIC_GET_QUALITY, dic_get_quality,
+                 INT)
+FCALLSCFUN3(INT, dic_get_timestamp, DIC_GET_TIMESTAMP, dic_get_timestamp,
+                 INT,PINT,PINT)
+FCALLSCFUN1(INT, dic_get_id, DIC_GET_ID, dic_get_id,
+                 PSTRING)
+FCALLSCFUN1(STRING, dic_get_format, DIC_GET_FORMAT, dic_get_format,
+                 INT)
+#endif
Index: branches/testFACT++branch/dim/src/diccpp.cxx
===================================================================
--- branches/testFACT++branch/dim/src/diccpp.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/diccpp.cxx	(revision 18277)
@@ -0,0 +1,1363 @@
+#define DIMLIB
+#include <dic.hxx>
+#include <stdio.h>
+
+char *DimClient::dimDnsNode = 0;
+DimErrorHandler *DimClient::itsCltError = 0;
+char *DimClient::serverName = 0;
+int DimClient::dicNoCopy = 0;
+
+extern "C" {
+static void user_routine(void *tagp, void *bufp, int *size)
+{
+//	int *tag = (int *)tagp;
+	char *buf = (char *)bufp;
+//	int id = *tag;
+	DimInfo *t;
+
+//	t = (DimInfo *)id_get_ptr(id, SRC_DIC);
+	t = * (DimInfo **)tagp;
+	if(DimClient::getNoDataCopy() == 0)
+	{
+		if(*size > 0)
+		{
+			if(!t->itsDataSize)
+			{
+				t->itsData = new char[*size];
+				t->itsDataSize = *size;
+			}
+			else if(t->itsDataSize < *size)
+			{
+				delete[] (char *)(t->itsData);
+				t->itsData = new char[*size];
+				t->itsDataSize = *size;
+			}
+			memcpy(t->itsData, buf, (size_t)*size);
+		}
+		else if (*size == 0)
+		{
+			if(t->itsDataSize)
+			{
+				delete[] (char *)(t->itsData);
+				t->itsDataSize = 0;
+			}
+			t->itsData = buf;
+		}
+	}
+	else
+	{
+		t->itsData = buf;
+	}
+	t->itsSize = *size;
+	if(t->itsHandler)
+	{
+		t->itsHandler->itsService = t;
+		DimCore::inCallback = 1;
+		t->itsHandler->infoHandler();
+		DimCore::inCallback = 0;
+	}
+	else
+	{
+		DimCore::inCallback = 1;
+		t->infoHandler();
+		DimCore::inCallback = 0;
+	}
+}
+}
+
+void DimInfo::infoHandler()
+{
+	char *data;
+	if(DimClient::getNoDataCopy() == 1)
+	{
+		data = (char *)itsData;
+		if(!itsDataSize)
+		{
+			itsData = new char[itsSize];
+			itsDataSize = itsSize;
+		}
+		else if(itsDataSize < itsSize)
+		{
+			delete[] (char *)(itsData);
+			itsData = new char[itsSize];
+			itsDataSize = itsSize;
+		}
+		memcpy(itsData, data, (size_t)itsSize);
+	}
+}
+
+void DimInfo::doIt()
+{
+	dim_init();
+	DISABLE_AST
+
+//	itsTagId = id_get((void *)this, SRC_DIC);
+	itsId = dic_info_service(itsName,itsType,itsTime, 0, 0,
+//		user_routine, itsTagId, 
+		user_routine, (dim_long)this, 
+		itsNolinkBuf, itsNolinkSize);
+	ENABLE_AST
+}
+
+int DimInfo::getQuality()
+{
+	return dic_get_quality(itsId);
+}
+
+int DimInfo::getTimestamp()
+{
+
+	dic_get_timestamp(itsId, &secs, &millisecs);
+	return(secs);
+}
+
+int DimInfo::getTimestampMillisecs()
+{
+	return(millisecs);
+}
+
+
+char *DimInfo::getFormat()
+{
+	char *def;
+	int len = 0, new_len;
+
+	if(itsFormat)
+	{
+		len = (int)strlen(itsFormat)+1;
+		if(len > 1)
+			return itsFormat;
+	}
+	def = dic_get_format(itsId);
+	new_len = (int)strlen(def)+1;
+	if(new_len > len)
+	{
+		if(itsFormat)
+			delete[] itsFormat;
+		itsFormat = new char[(int)strlen(def)+1];
+	}
+	strcpy(itsFormat, def);
+	return itsFormat;
+}
+
+void DimInfo::timerHandler()
+{
+//	itsTagId = id_get((void *)this, SRC_DIC);
+	itsId = dic_info_service(itsName,itsType,itsTime, 0, 0,
+//		user_routine, itsTagId, 
+		user_routine, (dim_long)this, 
+		itsNolinkBuf, itsNolinkSize);
+}
+
+void DimInfo::subscribe(char *name, int time, void *nolink, int nolinksize,
+	DimInfoHandler *handler)
+{
+	itsId = 0;
+	itsData = 0;
+	itsFormat = 0;
+	itsHandler = handler;
+	itsDataSize = 0;
+	itsSize = 0;
+	itsNolinkBuf = 0;
+	itsNolinkSize = 0;
+	itsName = 0;
+	if(!name)
+	{
+		return;
+	}
+	itsName = new char[(int)strlen(name)+1];
+	strcpy(itsName,name);
+	itsNolinkBuf = nolink;
+	itsNolinkSize = nolinksize;
+	if(nolinksize > 0)
+	{
+		itsNolinkBuf = new char[nolinksize];
+		itsNolinkSize = nolinksize;
+		memcpy(itsNolinkBuf, nolink, (size_t)nolinksize);
+	}
+	if(!time)
+	{
+		itsType = MONITORED;
+		itsTime = 0;
+	}	
+	else if(time > 0)
+	{
+		itsType = MONITORED;
+		itsTime = time;
+	}
+	else
+	{
+		itsType = ONCE_ONLY;
+		itsTime = 30;
+	}
+	doIt();
+}
+
+
+DimInfo::~DimInfo()
+{
+//	if(itsTagId)
+//		id_free(itsTagId, SRC_DIC);
+	if(itsId)
+		dic_release_service(itsId);
+	if(itsNolinkSize)
+		delete[] (char *)itsNolinkBuf;
+	if(itsDataSize)
+		delete[] (char *)itsData;
+	if(itsName)
+		delete[] itsName;
+	if(itsFormat)
+		delete[] itsFormat;
+}
+
+void *DimInfo::getData()
+{
+//	if(!this->itsSize)
+//		return itsNolinkBuf;
+/*
+	if(DimClient::getNoDataCopy() == 1)
+	{
+		if(!DimCore::inCallback)
+			return (void *)0;
+	}
+*/
+	return this->itsData;
+}
+
+void DimStampedInfo::doIt()
+{
+	dim_init();
+	DISABLE_AST
+//	itsTagId = id_get((void *)this, SRC_DIC);
+	itsId = dic_info_service_stamped(itsName,itsType,itsTime, 0, 0,
+//		user_routine, itsTagId, 
+		user_routine, (dim_long)this, 
+		itsNolinkBuf, itsNolinkSize);
+	ENABLE_AST
+}
+
+void DimStampedInfo::subscribe(char *name, int time, void *nolink, int nolinksize,
+	DimInfoHandler *handler)
+{
+	itsId = 0;
+	itsData = 0;
+	itsFormat = 0;
+	itsHandler = handler;
+	itsDataSize = 0;
+	itsSize = 0;
+	itsNolinkBuf = 0;
+	itsNolinkSize = 0;
+	itsName = 0;
+	if(!name)
+	{
+		return;
+	}
+	itsName = new char[(int)strlen(name)+1];
+	strcpy(itsName,name);
+	itsNolinkBuf = nolink;
+	itsNolinkSize = nolinksize;
+	if(nolinksize > 0)
+	{
+		itsNolinkBuf = new char[nolinksize];
+		itsNolinkSize = nolinksize;
+		memcpy(itsNolinkBuf, nolink, (size_t)nolinksize);
+	}
+	if(!time)
+	{
+		itsType = MONITORED;
+		itsTime = 0;
+	}	
+	else if(time > 0)
+	{
+		itsType = MONITORED;
+		itsTime = time;
+	}
+	else
+	{
+		itsType = ONCE_ONLY;
+		itsTime = 30;
+	}
+	doIt();
+}
+
+DimStampedInfo::~DimStampedInfo()
+{
+}
+
+void DimUpdatedInfo::doIt()
+{
+	dim_init();
+	DISABLE_AST
+//	itsTagId = id_get((void *)this, SRC_DIC);
+	itsId = dic_info_service_stamped(itsName,itsType,itsTime, 0, 0,
+//		user_routine, itsTagId, 
+		user_routine, (dim_long)this, 
+		itsNolinkBuf, itsNolinkSize);
+	ENABLE_AST
+}
+
+void DimUpdatedInfo::subscribe(char *name, int time, void *nolink, int nolinksize,
+	DimInfoHandler *handler)
+{
+	itsId = 0;
+	itsData = 0;
+	itsFormat = 0;
+	itsHandler = handler;
+	itsDataSize = 0;
+	itsSize = 0;
+	itsNolinkBuf = 0;
+	itsNolinkSize = 0;
+	itsName = 0;
+	if(!name)
+	{
+		return;
+	}
+	itsName = new char[(int)strlen(name)+1];
+	strcpy(itsName,name);
+	itsNolinkBuf = nolink;
+	itsNolinkSize = nolinksize;
+	if(nolinksize > 0)
+	{
+		itsNolinkBuf = new char[nolinksize];
+		itsNolinkSize = nolinksize;
+		memcpy(itsNolinkBuf, nolink, (size_t)nolinksize);
+	}
+	if(!time)
+	{
+		itsType = MONIT_ONLY;
+		itsTime = 0;
+	}	
+	else if(time > 0)
+	{
+		itsType = UPDATE;
+		itsTime = time;
+	}
+	doIt();
+}
+
+DimUpdatedInfo::~DimUpdatedInfo()
+{
+}
+
+extern "C" {
+static void data_user_routine(void *tagp, void *bufp, int *size)
+{
+//	int *tag = (int *)tagp;
+	char *buf = (char *)bufp;
+//	int id = *tag;
+	DimCurrentInfo *t;
+
+//	t = (DimCurrentInfo *)id_get_ptr(id, SRC_DIC);
+	t = * (DimCurrentInfo **)tagp;
+	if(*size > 0)
+	{
+		if(!t->itsDataSize)
+		{
+			t->itsData = new char[*size];
+			t->itsDataSize = *size;
+		}
+		else if(t->itsDataSize < *size)
+		{
+			delete[] (char *)(t->itsData);
+			t->itsData = new char[*size];
+			t->itsDataSize = *size;
+		}
+		memcpy(t->itsData, buf, (size_t)*size);
+	}
+	else if (*size == 0)
+	{
+		if(t->itsDataSize)
+		{
+			delete[] (char *)(t->itsData);
+			t->itsDataSize = 0;
+		}
+		t->itsData = buf;
+	}
+	t->itsSize = *size;
+	t->wakeUp = 1;
+#ifdef __VMS
+	sys$wake(0,0);
+#endif
+#ifdef WIN32
+	wake_up();
+#endif
+}
+}
+
+void DimCurrentInfo::subscribe(char *name, int time, void *nolink, int nolinksize)
+{
+
+	int timeout;
+
+//	itsTagId = 0;
+//	itsId = 0;
+	itsData = 0;
+//	itsFormat = 0;
+//	itsHandler = handler;
+	itsDataSize = 0;
+	itsSize = 0;
+	itsNolinkBuf = 0;
+	itsNolinkSize = 0;
+	itsName = 0;
+	if(!name)
+	{
+		return;
+	}
+	itsName = new char[(int)strlen(name)+1];
+	strcpy(itsName,name);
+	itsNolinkBuf = nolink;
+	itsNolinkSize = nolinksize;
+	if(nolinksize > 0)
+	{
+		itsNolinkBuf = new char[nolinksize];
+		itsNolinkSize = nolinksize;
+		memcpy(itsNolinkBuf, nolink, (size_t)nolinksize);
+	}
+	if(!time)
+		timeout = 10;
+	else
+		timeout = time;
+	wakeUp = 0;
+//	itsTagId = id_get((void *)this, SRC_DIC);
+	dic_info_service(itsName,ONCE_ONLY,timeout, 0, 0,
+//		data_user_routine, itsTagId, 
+		data_user_routine, (dim_long)this, 
+		itsNolinkBuf, itsNolinkSize);
+}
+
+DimCurrentInfo::~DimCurrentInfo()
+{
+//	if(itsId)
+//		dic_release_service(itsId);
+	if(itsNolinkSize)
+		delete[] (char *)itsNolinkBuf;
+	if(itsDataSize)
+		delete[] (char *)itsData;
+	if(itsName)
+		delete[] itsName;
+//	if(itsFormat)
+//		delete[] itsFormat;
+/*
+	delete[] (char *)itsNolinkBuf;
+
+//	if(itsTagId)
+//		id_free(itsTagId, SRC_DIC);
+	if(itsDataSize)
+		delete[] (char *)itsData;
+	delete[] itsName;
+*/
+}
+
+void *DimCurrentInfo::getData()
+{
+	while(!wakeUp)
+	{
+#ifdef __VMS
+		sys$hiber();
+#else
+		dim_wait();
+#endif
+	}
+	return this->itsData;
+}
+
+extern "C" {
+static void cmnd_done(void *tagp, int *result)
+{
+//	int *tag = (int *)tagp;
+//	int id = *tag;
+	DimCmnd *t;
+
+//	t = (DimCmnd *)id_get_ptr(id, SRC_DIC);
+	t = *(DimCmnd **)tagp;
+	t->result = *result;
+	t->wakeUp = 1;
+#ifdef __VMS
+	sys$wake(0,0);
+#endif
+#ifdef WIN32
+	wake_up();
+#endif
+}
+}
+
+int DimCmnd::send(char *name, void *data, int datasize) 
+{
+//	int id;
+	if(DimCore::inCallback) 
+	{
+		dic_cmnd_service(name, data, datasize);
+		return(1);
+	}
+	else
+	{
+		wakeUp = 0;
+//		id = id_get((void *)this, SRC_DIC);
+		dic_cmnd_callback(name, data, datasize, 
+//			cmnd_done, id);
+			cmnd_done, (dim_long)this);
+		while(!wakeUp)
+		{
+#ifdef __VMS
+			sys$hiber();
+#else
+			dim_wait();
+#endif
+		}
+//		id_free(id, SRC_DIC);
+		return(result);
+	}
+}
+
+void DimCmnd::sendNB(char *name, void *data, int datasize) 
+{
+	dic_cmnd_service(name, data, datasize);
+}
+
+extern "C" {
+static void rpc_user_routine(void *tagp, void *bufp, int *sizep)
+{
+//	int *tag = (int *)tagp;
+	char *buf = (char *)bufp;
+	int size = *sizep;
+//	int id = *tag;
+	DimRpcInfo *t;
+	int quality;
+
+//	t = (DimRpcInfo *)id_get_ptr(id, SRC_DIC);
+	t = *(DimRpcInfo **)tagp;
+	quality = dic_get_quality(0);
+	if(quality == -1)
+	{
+		buf = (char *)t->itsNolinkBuf;
+		size = t->itsNolinkSize;
+	}
+	if(DimClient::getNoDataCopy() == 0)
+	{
+		if(size > 0)
+		{
+			if(!t->itsDataSize)
+			{
+				t->itsData = new char[size];
+				t->itsDataSize = size;
+			}
+			else if(t->itsDataSize < size)
+			{
+				delete[] (char *)(t->itsData);
+				t->itsData = new char[size];
+				t->itsDataSize = size;
+			}
+		}
+		else if (size == 0)
+		{
+			if(t->itsDataSize)
+			{
+				delete[] (char *)(t->itsData);
+				t->itsDataSize = 0;
+			}
+		}
+	}
+	if(!t->itsConnected)
+	{
+		t->itsConnected = 1;
+	}
+	if(t->itsWaiting)
+	{
+		t->stop();
+//dim_print_date_time();
+//printf("DIM RPC: Stopped Timer, Data Received for %s\n", t->getName());
+		if(DimClient::getNoDataCopy() == 0)
+		{
+			if(size > 0)
+				memcpy(t->itsData, buf, (size_t)size);
+			else
+				t->itsData = buf;
+		}
+		else
+			t->itsData = buf;
+		t->itsSize = size;
+		t->wakeUp = 1;
+		if(t->itsInit)
+		{
+			t->itsWaiting = 1;
+			t->itsHandler->rpcInfoHandler();
+		}
+		if(t->itsWaiting != 2)
+			t->itsWaiting = 0;
+	}
+#ifdef __VMS
+	sys$wake(0,0);
+#endif
+#ifdef WIN32
+	wake_up();
+#endif
+}
+}
+
+void DimRpcInfo::timerHandler()
+{
+	char *buf;
+	int size;
+		
+	buf = (char *)itsNolinkBuf;
+	size = itsNolinkSize;
+
+	if(DimClient::getNoDataCopy() == 0)
+	{
+		if(size > 0)
+		{
+			if(!itsDataSize)
+			{
+				itsData = new char[size];
+				itsDataSize = size;
+			}
+			else if(itsDataSize < size)
+			{
+				delete[] (char *)(itsData);
+				itsData = new char[size];
+				itsDataSize = size;
+			}
+		}
+		else if (size == 0)
+		{
+			if(itsDataSize)
+			{
+				delete[] (char *)(itsData);
+				itsDataSize = 0;
+			}
+		}
+	}
+	if(itsWaiting)
+	{
+		if(DimClient::getNoDataCopy() == 0)
+		{
+			if(size > 0)
+				memcpy(itsData, buf, (size_t)size);
+			else
+				itsData = buf;
+		}
+		else
+			itsData = buf;
+		itsSize = size;
+//dim_print_date_time();
+//printf("DIM RPC: Timer fired, No Data Received for %s\n", itsName);
+		wakeUp = 1;
+		if(itsInit)
+		{
+			itsWaiting = 1;
+			itsHandler->rpcInfoHandler();
+		}
+		if(itsWaiting != 2)
+			itsWaiting = 0;
+	}
+#ifdef __VMS
+	sys$wake(0,0);
+#endif
+#ifdef WIN32
+	wake_up();
+#endif
+}
+
+void DimRpcInfo::rpcInfoHandler()
+{
+	char *data;
+	if(DimClient::getNoDataCopy() == 1)
+	{
+		data = (char *)itsData;
+		if(!itsDataSize)
+		{
+			itsData = new char[itsSize];
+			itsDataSize = itsSize;
+		}
+		else if(itsDataSize < itsSize)
+		{
+			delete[] (char *)(itsData);
+			itsData = new char[itsSize];
+			itsDataSize = itsSize;
+		}
+		memcpy(itsData, data, (size_t)itsSize);
+	}
+}
+
+void DimRpcInfo::subscribe(char *name, void *data, int size,
+	void *nolink, int nolinksize, int timeout)
+{
+
+	itsId = 0;
+//	itsTagId = 0;
+	itsInit = 0;
+	itsWaiting = 0;
+	itsName = new char[(int)strlen(name)+1];
+	strcpy(itsName,name);
+	itsHandler = this;
+	itsDataSize = 0;
+	itsData = 0;
+	itsDataOutSize = 0;
+	itsDataOut = 0;
+	itsNolinkBuf = nolink;
+	itsNolinkSize = nolinksize;
+	if(nolinksize > 0)
+	{
+		itsNolinkBuf = new char[nolinksize];
+		itsNolinkSize = nolinksize;
+		memcpy(itsNolinkBuf, nolink, (size_t)nolinksize);
+	}
+	itsNameOut = new char[(int)strlen(name)+1+10];
+	strcpy(itsNameOut,name);
+	strcat(itsNameOut,(char *)"/RpcIn");
+	itsNameIn = new char[(int)strlen(name)+1+10];
+	strcpy(itsNameIn,name);
+	strcat(itsNameIn,(char *)"/RpcOut");
+	itsTimeout = timeout;
+	dim_init();
+	{
+		if(!itsId)
+		{
+//			itsTagId = id_get((void *)itsHandler, SRC_DIC);
+
+//			itsId = dic_info_service_stamped(itsNameIn,MONIT_ONLY,itsTimeout, 
+			itsConnected = 0;
+//			itsId = dic_info_service_stamped(itsNameIn,MONITORED,itsTimeout, 
+			itsId = dic_info_service_stamped(itsNameIn,MONIT_FIRST,itsTimeout, 
+				0, 0,
+//				rpc_user_routine, itsTagId, 
+				rpc_user_routine, (dim_long)itsHandler, 
+				itsNolinkBuf, itsNolinkSize);
+//			dim_usleep(200000);
+			itsInit = 1;
+		}
+	}
+	if(size)
+	{
+		doIt(data, size);
+	}
+}
+	
+void DimRpcInfo::doIt(void *data, int size)
+{
+	int ret;
+
+	wakeUp = 0;
+	if(DimClient::getNoDataCopy() == 0)
+	{
+		if(!itsDataOut)
+		{
+			itsDataOut = new char[size];
+			itsDataOutSize = size;
+		}
+		else if(itsDataOutSize < size)
+		{
+			delete[] (char *)itsDataOut;
+			itsDataOut = new char[size];
+			itsDataOutSize = size;
+		}
+		memcpy(itsDataOut, data, (size_t)size);
+	}
+	else
+	{
+		itsDataOut = data;
+	}
+	while(!itsConnected)
+		dim_wait();
+	itsWaiting = 1;
+	if(itsTimeout)
+		start(itsTimeout);
+//dim_print_date_time();
+//printf("DIM RPC: Started Timer for %s - %d secs\n", itsName, itsTimeout);
+	ret = DimClient::sendCommand(itsNameOut, itsDataOut, size); 
+	if(!ret)
+	{
+		if(itsTimeout)
+			stop();
+//dim_print_date_time();
+//printf("DIM RPC: Stopped Timer, Command failed for %s\n", itsName);
+//		rpc_user_routine((int *)&itsTagId, itsNolinkBuf, &itsNolinkSize);
+		rpc_user_routine((dim_long *)&itsHandler, itsNolinkBuf, &itsNolinkSize);
+	}
+/*
+	else
+	{
+		if(itsTimeout)
+			start(itsTimeout);
+	}
+*/
+}
+
+void *DimRpcInfo::getData()
+{
+	while(!wakeUp)
+	{
+#ifdef __VMS
+		sys$hiber();
+#else
+		dim_wait();
+#endif
+	}
+/*
+	if(DimClient::getNoDataCopy() == 1)
+	{
+		if(!DimCore::inCallback)
+			return (void *)0;
+	}
+*/
+	return this->itsData;
+}
+
+DimRpcInfo::~DimRpcInfo() 
+{
+//	if(itsTagId)
+//		id_free(itsTagId, SRC_DIC);
+//dim_print_date_time();
+//printf("DIM RPC: Deleting RPC and Timer for %s\n", itsName);
+	if(itsId)
+		dic_release_service(itsId);
+	delete[] (char *)itsNolinkBuf;
+	if(itsDataSize)
+		delete[] (char *)itsData;
+	if(itsDataOutSize)
+		delete[] (char *)itsDataOut;
+	delete[] itsName;
+	delete[] itsNameIn;
+	delete[] itsNameOut;
+}
+
+DimBrowser::DimBrowser()
+{
+	int i;
+	for(i = 0; i<5; i++)
+	{
+		itsData[i] = 0;
+		itsData[i] = 0;
+	}
+	currIndex = -1;
+	none = 0;
+	browserRpc = 0;
+}
+
+DimBrowser::~DimBrowser()
+{
+	int i;
+	for(i = 0; i<5; i++)
+	{
+		if(itsData[i])
+			delete itsData[i];
+	}
+	if(browserRpc)
+		delete browserRpc;
+}
+
+int DimBrowser::getServices(const char * serviceName) 
+{
+	return getServices(serviceName, 0);
+}
+
+int DimBrowser::getServices(const char * serviceName, int timeout) 
+{
+	char *str;
+
+//	DimRpcInfo rpc((char *)"DIS_DNS/SERVICE_INFO",(char *)"\0");
+//	rpc.setData((char *)serviceName);
+//	str = rpc.getString();
+	if(!browserRpc)
+		browserRpc = new DimRpcInfo((char *)"DIS_DNS/SERVICE_INFO",timeout,(char *)"\0");
+	browserRpc->setData((char *)serviceName);
+	str = browserRpc->getString();	
+	if(itsData[0])
+		delete itsData[0];
+	itsData[0] = new TokenString(str,(char *)"|\n"); 
+	currIndex = 0;
+	if(!itsData[0]->getNTokens())
+		return(0);
+	return( itsData[0]->getNTokens((char *)"\n") + 1); 
+}
+
+int DimBrowser::getServers() 
+{
+	return getServers(0);
+}
+
+int DimBrowser::getServers(int timeout) 
+{
+	char *str, *pid_str;
+	int size, totsize;
+	DimCurrentInfo srv((char *)"DIS_DNS/SERVER_LIST", timeout, (char *)"\0");
+	str = srv.getString();
+	size = (int)strlen(str)+1;
+	totsize = srv.getSize();
+
+	if(itsData[1])
+		delete itsData[1];
+	itsData[1] = new TokenString(str,(char *)"|@\n"); 
+	currIndex = 1;
+	if(!str[0])
+		return(0);
+	if(totsize > size)
+	{
+		pid_str = str + (int)strlen(str) + 1;
+		if(itsData[4])
+			delete itsData[4];
+		itsData[4] = new TokenString(pid_str,(char *)"|"); 
+	}
+	return(itsData[1]->getNTokens((char *)"|") +1); 
+}
+
+int DimBrowser::getServerServices(const char *serverName) 
+{
+	return getServerServices(serverName, 0);
+}
+
+int DimBrowser::getServerServices(const char *serverName, int timeout) 
+{
+	char *str;
+	char *name = new char[(int)strlen(serverName) + 20];
+	strcpy(name,(char *)serverName);
+	strcat(name,(char *)"/SERVICE_LIST");
+	DimCurrentInfo srv(name, timeout, (char *)"\0");
+	delete[] name;
+	str = srv.getString();	
+	if(itsData[2])
+		delete itsData[2];
+	itsData[2] = new TokenString(str,(char *)"|\n"); 
+	currIndex = 2;
+	if(!itsData[2]->getNTokens())
+		return(0);
+	return(itsData[2]->getNTokens((char *)"\n") + 1); 
+}
+
+int DimBrowser::getServerClients(const char *serverName)
+{
+	return getServerClients(serverName, 0);
+}
+
+int DimBrowser::getServerClients(const char *serverName, int timeout) 
+{
+	char *str;
+	char *name = new char[(int)strlen(serverName) + 20];
+	strcpy(name,(char *)serverName);
+	strcat(name,(char *)"/CLIENT_LIST");
+	DimCurrentInfo srv(name, timeout, (char *)"\0");
+	delete[] name;
+	str = srv.getString();	
+	if(itsData[3])
+		delete itsData[3];
+	itsData[3] = new TokenString(str,(char *)"|@\n"); 
+	currIndex = 3;
+	return(itsData[3]->getNTokens((char *)"@") ); 
+}
+	
+int DimBrowser::getNextService(char *&service, char *&format)
+{
+	int ret, type;
+
+	service = format = &none;
+	ret = itsData[0]->getToken(currToken);
+	if(!ret) return 0;
+	service = currToken;
+	ret = itsData[0]->getToken(currToken);
+	if(!itsData[0]->cmpToken((char *)"|"))
+		return 0;
+	ret = itsData[0]->getToken(currToken);
+	if(!itsData[0]->cmpToken((char *)"|"))
+	{
+		format = currToken;
+		ret = itsData[0]->getToken(currToken);
+		if(!itsData[0]->cmpToken((char *)"|"))      
+			return 0;
+	}
+	ret = itsData[0]->getToken(currToken);
+	type = DimSERVICE;
+	if(!itsData[0]->cmpToken((char *)"\n"))
+	{
+		if(itsData[0]->cmpToken((char *)"CMD"))
+			type = DimCOMMAND;
+		if(itsData[0]->cmpToken((char *)"RPC"))
+			type = DimRPC;
+		ret = itsData[0]->getToken(currToken);
+		if(!itsData[0]->cmpToken((char *)"\n"))
+			return 0;
+	}
+	return type;
+}
+	
+int DimBrowser::getNextServer(char *&server, char *&node)
+{
+	int ret;
+
+	server = node = &none;
+	ret = itsData[1]->getToken(currToken);
+	if(!ret) return 0;
+	server = currToken;
+	ret = itsData[1]->getToken(currToken);
+	if(!itsData[1]->cmpToken((char *)"@"))
+		return 0;
+	while(1)
+	{
+		ret = itsData[1]->getToken(currToken);
+		node = currToken;
+		itsData[1]->pushToken();
+		ret = itsData[1]->getToken(currToken);
+		if(itsData[1]->cmpToken((char *)"@"))
+		{
+			strcat(server,"@");
+			strcat(server,node);
+		}
+		else
+			break;
+	}
+	if(!itsData[1]->cmpToken((char *)"|"))
+		itsData[1]->popToken();
+	return 1;
+}
+
+int DimBrowser::getNextServer(char *&server, char *&node, int &pid)
+{
+	int ret, lpid = 0;
+	char *tok;
+
+	ret = getNextServer(server, node);
+	if(ret && itsData[4])
+	{
+		ret = itsData[4]->getToken(tok);
+		if(ret)
+		{
+			sscanf(tok,"%d",&lpid);
+			pid = lpid;
+		}
+	}
+	if(!ret) 
+		return 0;
+	ret = itsData[4]->getToken(tok);
+	return 1;
+}
+	
+int DimBrowser::getNextServerService(char *&service, char *&format)
+{
+	int ret, type;
+
+	service = format = &none;
+	ret = itsData[2]->getToken(currToken);
+	if(!ret) return 0;
+	service = currToken;
+	ret = itsData[2]->getToken(currToken);
+	if(!itsData[2]->cmpToken((char *)"|"))
+		return 0;
+	ret = itsData[2]->getToken(currToken);
+	if(!itsData[2]->cmpToken((char *)"|"))
+	{
+		format = currToken;
+		ret = itsData[2]->getToken(currToken);
+		if(!itsData[2]->cmpToken((char *)"|"))
+			return 0;
+	}
+	ret = itsData[2]->getToken(currToken);
+	type = DimSERVICE;
+	if(!itsData[2]->cmpToken((char *)"\n"))
+	{
+		if(itsData[2]->cmpToken((char *)"CMD"))
+			type = DimCOMMAND;
+		if(itsData[2]->cmpToken((char *)"RPC"))
+			type = DimRPC;
+		ret = itsData[2]->getToken(currToken);
+		if(!itsData[2]->cmpToken((char *)"\n"))
+			return 0;
+	}
+	return type;
+}
+	
+int DimBrowser::getNextServerClient(char *&client, char *&node)
+{
+	int ret;
+
+	client = node = &none;
+	ret = itsData[3]->getToken(currToken);
+	if(!ret) return 0;
+	client = currToken;
+	ret = itsData[3]->getToken(currToken);
+	if(!itsData[3]->cmpToken((char *)"@"))
+		return 0;
+	ret = itsData[3]->getToken(currToken);
+	node = currToken;
+	itsData[3]->pushToken();
+	ret = itsData[3]->getToken(currToken);
+	if(!itsData[3]->cmpToken((char *)"|"))
+		itsData[3]->popToken();
+	return 1;
+}
+
+DimClient::DimClient()
+{
+	itsCltError = this;
+}
+
+DimClient::~DimClient() 
+{
+	if(dimDnsNode)
+		delete[] dimDnsNode;
+}
+
+int DimClient::sendCommand(const char *name, int data)
+{ 
+	DimCmnd a;
+	return a.send((char *)name, &data, sizeof(int));
+}
+
+int DimClient::sendCommand(const char *name, float data)
+{ 
+	DimCmnd a;
+	return a.send((char *)name, &data, sizeof(float));
+}
+
+int DimClient::sendCommand(const char *name, double data)
+{ 
+	DimCmnd a;
+	return a.send((char *)name, &data, sizeof(double));
+}
+
+int DimClient::sendCommand(const char *name, longlong data)
+{ 
+	DimCmnd a;
+	return a.send((char *)name, &data, sizeof(longlong));
+}
+
+int DimClient::sendCommand(const char *name, short data)
+{ 
+	DimCmnd a;
+	return a.send((char *)name, &data, sizeof(short));
+}
+
+int DimClient::sendCommand(const char *name, const char *data)
+{ 
+	DimCmnd a;
+	return a.send((char *)name, (char *)data, (int)strlen(data)+1);
+}
+
+int DimClient::sendCommand(const char *name, void *data, int datasize)
+{
+	DimCmnd a;
+	return a.send((char *)name, data, datasize);
+}
+
+void DimClient::sendCommandNB(const char *name, int data)
+{
+	DimCmnd a;
+	a.sendNB((char *)name, &data, sizeof(int));
+}
+
+void DimClient::sendCommandNB(const char *name, float data)
+{
+	DimCmnd a;
+	a.sendNB((char *)name, &data, sizeof(float));
+}
+
+void DimClient::sendCommandNB(const char *name, double data)
+{
+	DimCmnd a;
+	a.sendNB((char *)name, &data, sizeof(double));
+}
+
+void DimClient::sendCommandNB(const char *name, longlong data)
+{
+	DimCmnd a;
+	a.sendNB((char *)name, &data, sizeof(longlong));
+}
+
+void DimClient::sendCommandNB(const char *name, short data)
+{
+	DimCmnd a;
+	a.sendNB((char *)name, &data, sizeof(short));
+}
+
+void DimClient::sendCommandNB(const char *name, char *data)
+{
+	DimCmnd a;
+	a.sendNB((char *)name, data, (int)strlen(data)+1);
+}
+
+void DimClient::sendCommandNB(const char *name, void *data, int datasize)
+{
+	DimCmnd a;
+	a.sendNB((char *)name, data, datasize);
+}
+
+int DimClient::setExitHandler(const char *srvName)
+{
+	DimCmnd a;
+	int ret, tag = 1;
+	char *name = new char[(int)strlen(srvName) + 20];
+	strcpy(name,(char *)srvName);
+	strcat(name,"/SET_EXIT_HANDLER");
+	ret =  a.send(name, &tag, sizeof(int));
+	delete[] name;
+	return ret;
+}
+
+int DimClient::killServer(const char *srvName)
+{
+	DimCmnd a;
+	int ret, tag = 1;
+	char *name = new char[(int)strlen(srvName) + 20];
+	strcpy(name,(char *)srvName);
+	strcat(name,"/EXIT");
+	ret = a.send(name, &tag, sizeof(int));
+	delete[] name;
+	return ret;
+}
+
+int DimClient::setDnsNode(const char *node)
+{
+	dic_set_dns_node((char *)node);
+	dic_close_dns();
+	return 1;
+}
+
+int DimClient::setDnsNode(const char *node, int port)
+{
+	dic_set_dns_port(port);
+	dic_set_dns_node((char *)node);
+	dic_close_dns();
+	return 1;
+}
+
+char *DimClient::getDnsNode()
+{
+	if(!dimDnsNode)
+		dimDnsNode = new char[256];
+	if(dic_get_dns_node(dimDnsNode))
+		return dimDnsNode;
+	else
+		return 0;
+}
+
+int DimClient::getDnsPort() 
+{
+	return dic_get_dns_port();
+}
+
+void DimClient::setNoDataCopy()
+{
+	dicNoCopy = 1;
+}
+
+int DimClient::getNoDataCopy()
+{
+	return dicNoCopy;
+}
+
+extern "C" {
+//static void clt_error_user_routine(char*, int);
+static void clt_error_user_routine(int severity, int code, char *msg)
+{
+
+	DimCore::inCallback = 2;
+	if(DimClient::itsCltError != 0)
+		DimClient::itsCltError->errorHandler(severity, code, msg);
+	DimCore::inCallback = 0;
+}
+}
+
+void DimClient::addErrorHandler(DimErrorHandler *handler)
+{
+	if(handler == 0)
+	{
+		dic_add_error_handler(0);
+		DimClient::itsCltError = 0;
+	}
+	else
+	{
+		DimClient::itsCltError = handler;
+		dic_add_error_handler(clt_error_user_routine);
+	}
+}
+
+void DimClient::addErrorHandler()
+{
+	DimClient::itsCltError = this;
+	dic_add_error_handler(clt_error_user_routine);
+}
+
+int DimClient::getServerId()
+{
+	if(!serverName)
+		serverName = new char[128];
+	serverName[0] = '\0';
+	return dic_get_server(serverName);
+}
+
+int DimClient::getServerPid()
+{
+	int pid, ret;
+
+	ret = dic_get_server_pid(&pid);
+	if(!ret)
+		return 0;
+	return pid;
+}
+
+char *DimClient::getServerName()
+{
+	if(!serverName)
+		serverName = new char[128];
+	serverName[0] = '\0';
+	dic_get_server(serverName);
+	return(serverName);
+}
+
+/*
+char *DimClient::getServerServices(int serverId)
+{
+	return dic_get_server_services(serverId);
+}
+
+char *DimClient::getServerServices()
+{
+	int id;
+	if((id = dic_get_conn_id()))
+		return dic_get_server_services(id);
+	return (char *)0;
+}
+*/
+char **DimClient::getServerServices()
+{
+	static TokenString *data = 0;
+	int id, len = 0, index = 0;
+	char *services;
+	static char** list = 0;
+	char *sep;
+
+	if(data)
+	{
+		delete data;
+		data = 0;
+	}
+	if(list)
+	{
+		delete[] list;
+		list = 0;
+	}
+	if((id = dic_get_conn_id()))
+	{
+		services = dic_get_server_services(id);
+		if(services)
+		{
+			data = new TokenString(services,(char *)"\n");
+			len = data->getNTokens();
+			list = new char*[len];
+			while(data->getToken(list[index]))
+			{
+				data->getToken(sep);
+				index++;
+			}
+		}
+	}
+	if(!len)
+		list = new char*[1];
+	list[index] = 0;
+	return list;
+}
+
+int DimClient::inCallback()
+{
+	if(DimCore::inCallback)
+		return 1;
+	return 0;
+}
Index: branches/testFACT++branch/dim/src/did/did.c
===================================================================
--- branches/testFACT++branch/dim/src/did/did.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/did/did.c	(revision 18277)
@@ -0,0 +1,3510 @@
+#include <stdio.h>                   
+#include <ctype.h>
+#include <time.h>
+#include <dim.h>
+#include <dic.h>
+#include <dis.h>
+#include "did.h"
+
+int First_time = 1;
+int Curr_view_opt = -1;	
+char Curr_view_opt_par[80];	
+char Curr_service_name[132];
+char Curr_service_format[256];
+int Curr_service_print_type = 0;	
+int N_servers = 0;	
+int N_services = 0;	
+int no_link_int = -1;
+FILE	*fptr;
+
+char *Service_content_str;
+char *Service_buffer;
+int Service_size;
+char *Curr_service_list = 0;
+char *Curr_client_list = 0;
+int Curr_service_id = 0;
+Widget Curr_client_id;
+Widget Curr_service_list_id;
+SERVER *Got_Service_List = 0;
+SERVER *Got_Client_List = 0;
+
+Widget SubscribeButton;
+Widget Subscribe10Button;
+
+int Timer_q;
+
+int Force_update = 0;
+/*
+ * Global data
+ */
+static XmFontList did_default_font, did_small_font, 
+  did_label_font, did_server_font;
+
+/*static MrmType class_id;*/		/* Place to keep class ID*/
+/*static MrmType *dummy_class;*/            /* and class variable. */
+
+/*static char *db_filename_vec[1];*/        /* Mrm.hierachy file list. */
+/*static int db_filename_num;*/
+
+/*
+ * Forward declarations
+ */
+void did_exit();
+void create_main();
+void create_label();
+void create_matrix();
+void view_opts();
+void dns_control();
+void ok_pop_up();                                                            
+void cancel_pop_up();
+
+extern void set_something();
+extern void get_something();
+extern void set_color();
+
+/*
+ * Names and addresses of callback routines to register with Mrm
+ */
+/*
+static MrmRegisterArg reglist [] = {
+{"did_exit", (caddr_t)did_exit},
+{"create_main", (caddr_t)create_main},
+{"create_label", (caddr_t)create_label},
+{"create_matrix", (caddr_t)create_matrix},
+{"view_opts", (caddr_t)view_opts},
+{"dns_control", (caddr_t)dns_control},
+{"ok_pop_up", (caddr_t)ok_pop_up},
+{"cancel_pop_up", (caddr_t)cancel_pop_up},
+};
+
+static int reglist_num = (sizeof reglist / sizeof reglist[0]);
+*/
+/*
+ * OS transfer point.  The main routine does all the one-time setup and
+ * then calls XtAppMainLoop.
+ */
+
+SERVER *Curr_servp;
+
+XmFontList util_get_font( char *fontname, Widget top )
+{
+XFontStruct * mf;
+XmFontList font;
+/*
+char * fontname;
+
+  if ( size == 'm' ) {
+    fontname = MENU_FONT;
+  }
+  else if ( size == 'b' ) {
+    fontname = LABEL_FONT;
+  }
+  else {
+    fontname = DEFAULT_FONT;
+  }
+*/
+  if ( (mf = XLoadQueryFont(XtDisplay(top),fontname))==NULL) {
+        printf("Couldn't open the following fonts:\n\t%s\n",
+	    fontname);
+        XtVaGetValues ( top, XmNdefaultFontList, &font, NULL );
+  }
+  else  {
+     font = XmFontListCreate (mf, XmSTRING_DEFAULT_CHARSET);
+  }
+  return font;
+}
+
+void create_matrix_widget()
+{
+Widget row_col_id, top_id;
+Arg arglist[10];
+int n = 0;
+char w_name[MAX_NAME];
+
+	top_id = Window_id;
+	XtSetArg(arglist[n], XmNborderWidth, 0); n++;
+	XtSetArg(arglist[n], XmNorientation, XmVERTICAL);  n++;
+        XtSetArg(arglist[n], XmNnumColumns, 4);  n++;
+	XtSetArg(arglist[n], XmNpacking, XmPACK_COLUMN);  n++;
+        XtSetArg(arglist[n], XmNadjustLast, False); n++;
+	sprintf(w_name,"matrix_row");
+	row_col_id = XmCreateRowColumn(top_id,w_name,arglist,(Cardinal)n);
+	XtManageChild(row_col_id);
+	Matrix_id[Curr_matrix] = row_col_id;
+	/*
+	XmScrolledWindowSetAreas(Window_id,NULL, NULL, Matrix_id); 
+	*/
+}
+
+void gui_create_main_window(Widget parent)
+{
+
+Widget mw;
+Widget mb;
+Widget mf;
+Widget tl;
+Widget sl;
+Widget f;
+XmString xms;
+int par;
+int reason;
+Arg ar[20];
+int n;
+
+    mw = XmCreateMainWindow ( parent, "DidMainWindow", NULL, 0 );
+    XtVaSetValues( mw,
+        XmNresizePolicy, XmRESIZE_ANY,
+		  
+        XmNfontList,            did_default_font,
+        NULL);
+    XtManageChild( mw );
+    /* create menu bar */
+    mb = XmCreateMenuBar ( mw, "DidMenuBar", NULL, 0 );
+    XtVaSetValues( mb,
+        XmNmarginHeight,2,
+        XmNborderWidth, 0,
+        XmNfontList,            did_default_font,
+        NULL);
+        
+    gui_create_main_menu( mb );
+    XtManageChild ( mb );
+
+    /* create main form */
+    mf = XmCreateForm ( mw, "DidMainForm", NULL, 0 );
+    XtVaSetValues ( mf, 
+		    XmNresizePolicy, XmRESIZE_NONE, 
+		    		   
+		    NULL );
+    XtManageChild ( mf );
+
+    /* create top label */
+    xms = create_str(" \n  ");
+    
+    tl = XmCreateLabel ( mf, "DidTitle", NULL, 0 );
+    XtVaSetValues( tl,
+        XmNtopAttachment,           XmATTACH_FORM,
+        XmNbottomAttachment,        XmATTACH_NONE,
+        XmNleftAttachment,          XmATTACH_FORM,
+        XmNrightAttachment,         XmATTACH_FORM,
+        XmNleftOffset,              0,
+        XmNtopOffset,               0,
+        XmNbottomOffset,            0,
+        XmNrightOffset,             0,
+        XmNborderWidth,             0,
+        XmNlabelString,             xms,          
+        XmNshadowThickness,         0,
+        XmNhighlightThickness,      0,
+		XmNheight,					32,
+        XmNalignment,               XmALIGNMENT_CENTER,
+        XmNfontList,            did_label_font,
+        NULL);
+    XtManageChild( tl );
+/*
+    tl = XtVaCreateManagedWidget( "SmiTitle",
+        xmPushButtonWidgetClass,    mw,
+        XmNborderWidth,             0,
+        XmNlabelString,             xms,          
+        XmNshadowThickness,         0,
+        XmNhighlightThickness,      0,
+        XmNalignment,               XmALIGNMENT_CENTER,
+        XmNfontList,            smid_label_font,
+        NULL);
+*/
+    XmStringFree ( xms );
+    /*
+	XtAddCallback(tl, MrmNcreateCallback, 
+		(XtCallbackProc)create_label, 0);
+    */
+    par = 0;
+    reason = 0;
+    create_label(tl, &par, &reason);
+
+    /* create main form */
+    /*
+    mf = (Widget)XmCreateForm ( mw, "DidMainForm", NULL, 0 );
+    XtVaSetValues ( mf,
+        XmNborderWidth,1,
+        XmNshadowThickness, 2,
+		    XmNwidth,806,
+		    XmNheight,300, 
+		    
+       XmNresizePolicy, XmRESIZE_NONE, NULL );
+    XtManageChild ( mf );
+    */
+    /*
+	XtAddCallback(mf, MrmNcreateCallback, 
+			(XtCallbackProc)create_main, 0);
+    */
+    
+    create_main(mf, &par, &reason);
+    
+    f = XmCreateForm( mf, "ScrollForm", NULL, 0 );
+    XtVaSetValues ( f, 
+		    XmNwidth, 806,
+		    XmNheight,300,		    		  
+        XmNtopAttachment,           XmATTACH_WIDGET,
+        XmNbottomAttachment,        XmATTACH_FORM,
+        XmNleftAttachment,          XmATTACH_FORM,
+        XmNrightAttachment,         XmATTACH_FORM,
+        XmNrightOffset,             0,
+        XmNleftOffset,              0,
+        XmNbottomOffset,            0,
+        XmNtopWidget, tl,
+        XmNtopOffset, 0,
+        XmNshadowThickness, 2,
+        XmNbottomOffset, 0,
+		    /*
+        XmNshadowType, XmSHADOW_OUT,
+		    */
+        XmNborderWidth,0,
+        NULL);
+
+    /*
+    f = XtVaCreateManagedWidget ( "XDScrolledForm",
+        xmFormWidgetClass,          mf,
+        XmNtopAttachment,           XmATTACH_WIDGET,
+        XmNbottomAttachment,        XmATTACH_FORM,
+        XmNleftAttachment,          XmATTACH_FORM,
+        XmNrightAttachment,         XmATTACH_FORM,
+        XmNrightOffset,             0,
+        XmNleftOffset,              0,
+        XmNbottomOffset,            0,
+        XmNtopWidget, tl,
+        XmNtopOffset, 0,
+        XmNshadowThickness, 2,
+        XmNbottomOffset, 0,
+        XmNshadowType, XmSHADOW_OUT,
+        XmNborderWidth,1,
+        NULL);
+*/
+    /*
+	XtAddCallback(f, MrmNcreateCallback, 
+		(XtCallbackProc)create_window, 0);
+    */
+
+    XtManageChild ( f );
+    /* create scrolled list */
+    
+    n = 0;
+    XtSetArg ( ar[n], XmNtopAttachment, XmATTACH_FORM); n++;
+    XtSetArg ( ar[n], XmNbottomAttachment, XmATTACH_FORM); n++;
+    XtSetArg ( ar[n], XmNleftAttachment, XmATTACH_FORM); n++;
+    XtSetArg ( ar[n], XmNrightAttachment, XmATTACH_FORM); n++;
+    XtSetArg ( ar[n], XmNrightOffset, 0); n++;
+    XtSetArg ( ar[n], XmNleftOffset, 0); n++;
+    XtSetArg ( ar[n], XmNbottomOffset, 0); n++;
+    XtSetArg ( ar[n], XmNtopOffset, 0); n++;
+    /*
+    XtSetArg ( ar[n], XmNvisualPolicy, XmCONSTANT); n++;
+    */	    
+    XtSetArg ( ar[n], XmNscrollBarDisplayPolicy, XmAS_NEEDED); n++;
+		   
+    XtSetArg ( ar[n], XmNscrollingPolicy, XmAUTOMATIC); n++;
+
+    sl = XmCreateScrolledWindow ( f, "ScrollWin", ar, (Cardinal)n );
+    /*
+    XtVaSetValues ( sl, 
+        XmNtopAttachment,           XmATTACH_FORM,
+        XmNbottomAttachment,        XmATTACH_FORM,
+        XmNleftAttachment,          XmATTACH_FORM,
+        XmNrightAttachment,         XmATTACH_FORM,
+        XmNrightOffset,             0,
+        XmNleftOffset,              0,
+        XmNbottomOffset,            0,
+	XmNtopOffset,               0,
+		    		   
+        XmNvisualPolicy,        XmCONSTANT,
+		    
+	XmNscrollBarDisplayPolicy, XmSTATIC,
+		   
+        XmNscrollingPolicy, XmAUTOMATIC,
+
+        NULL);
+    */
+    XtManageChild ( sl );
+    /*
+    create_window(sl, &par, &reason);
+    */
+    Window_id = sl;
+    
+    create_matrix_widget();
+    
+/* 
+    sl = XtVaCreateWidget ( "DidServersScrl",
+        xmScrolledWindowWidgetClass, f,
+        XmNscrollingPolicy,     XmAUTOMATIC,
+        XmNscrollBarDisplayPolicy, XmSTATIC,
+        XmNtopAttachment,       XmATTACH_FORM,
+        XmNleftAttachment,      XmATTACH_FORM,
+        XmNrightAttachment,     XmATTACH_FORM,
+        XmNbottomAttachment,    XmATTACH_FORM,
+        XmNvisualPolicy,        XmCONSTANT,
+        XmNtopOffset,           4,
+        XmNleftOffset,          4,
+        XmNbottomOffset,        4,
+        XmNrightOffset,         4,
+        NULL );
+    XtManageChild ( sl );
+*/
+    /*
+    XtVaSetValues( mw,
+        XmNworkWindow,mf,
+        XmNcommandWindow, tl,
+        NULL);
+    */
+    
+}
+
+Widget create_separator(Widget parent_id)
+{
+	Widget w;
+	Arg arglist[10];
+	int n = 0;
+
+	w = XmCreateSeparator(parent_id, "separator",
+		arglist,(Cardinal)n);
+	XtManageChild(w);
+	return(w);
+}
+
+void gui_create_main_menu( Widget mb )
+{
+Widget cb;
+Widget mn;
+Widget bt;
+XmString xms;
+    /* File */
+    mn = XmCreatePulldownMenu ( mb, "FileMB", NULL, 0 );
+    cb = XmCreateCascadeButton(mb, "File", NULL, 0);
+    XtVaSetValues ( cb, 
+        XmNsubMenuId,       mn,
+        NULL);
+    XtManageChild ( cb );
+    /*
+    cb = XtVaCreateManagedWidget ( "File",
+        xmCascadeButtonWidgetClass, mb,
+        XtVaTypedArg,       XmNmnemonic, XmRString, "F", 2,
+        XmNsubMenuId,       mn,
+        NULL);
+    */
+        XtVaSetValues ( mn,
+            XmNradioAlwaysOne, True,
+            XmNradioBehavior, True,
+            NULL);
+        XtVaSetValues ( cb,
+	    XmNfontList,            did_default_font,
+            NULL);
+        /* buttons */
+        xms = create_str ("Exit DID");
+	/*
+        bt = XtVaCreateManagedWidget ( "MenuExitButton",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>C",
+            XmNacceleratorText, xma,
+            NULL);
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)did_exit, 0 );
+	/*
+    util_recolor ( XtParent(mn) );
+	*/
+    /* View */
+    mn = XmCreatePulldownMenu ( mb, "ViewMB", NULL, 0 );
+    cb = XmCreateCascadeButton(mb, "View", NULL, 0);
+    XtVaSetValues ( cb, 
+        XmNsubMenuId,       mn,
+        NULL);
+    XtVaSetValues ( cb,
+        XmNfontList,            did_default_font,
+        NULL);
+    XtManageChild ( cb );
+    /*
+    cb = XtVaCreateManagedWidget ( "View",
+        xmCascadeButtonWidgetClass, mb,
+        XtVaTypedArg,       XmNmnemonic, XmRString, "V", 2,
+        XmNsubMenuId,       mn,
+        NULL);
+    */
+        XtVaSetValues ( mn,
+            XmNradioAlwaysOne, True,
+            XmNradioBehavior, True,
+            NULL);
+        /* buttons */
+
+        xms = create_str ("All Servers");
+	/*
+        bt = XtVaCreateManagedWidget ( "V_MenuAllButton",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>A",
+            XmNacceleratorText, xma,
+            NULL);
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)view_opts, 
+			(XtPointer)1 );
+
+        xms = create_str ("Servers by Node");
+	/*
+        bt = XtVaCreateManagedWidget ( "V_MenuNodeButton",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>N",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)view_opts, 
+			(XtPointer)0 );
+
+        xms = create_str ("Servers by Service");
+	/*
+        bt = XtVaCreateManagedWidget ( "V_MenuServiceButton",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>S",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)view_opts, 
+			(XtPointer)2 );
+
+	create_separator(mn);
+	/*
+        bt = XtVaCreateManagedWidget ( "W_MenuSep",
+            xmSeparatorGadgetClass, mn,
+            NULL);
+	*/
+        xms = create_str ("Servers in Error");
+	/*
+        bt = XtVaCreateManagedWidget ( "V_MenuErrorButton",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>E",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)view_opts, 
+			(XtPointer)3 );
+	/*
+    util_recolor ( XtParent(mn) );
+	*/
+    /* Commands */
+    mn = XmCreatePulldownMenu ( mb, "CommandMB", NULL, 0 );
+    cb = XmCreateCascadeButton(mb, "Commands", NULL, 0);
+    XtVaSetValues ( cb, 
+        XmNsubMenuId,       mn,
+        NULL);
+    XtVaSetValues ( cb,
+	XmNfontList,            did_default_font,
+        NULL);
+    XtManageChild ( cb );
+    /*
+    cb = XtVaCreateManagedWidget ( "Commands",
+        xmCascadeButtonWidgetClass, mb,
+        XtVaTypedArg,       XmNmnemonic, XmRString, "C", 2,
+        XmNsubMenuId,       mn,
+        XmNsensitive, commands_enable,
+        NULL);
+    */
+        /* buttons */
+        /* Utils */
+    /*
+        xms = util_create_str ("Show Command Buttons");
+        xma = util_create_str ("Ctrl+B");
+        bt = XtVaCreateManagedWidget ( "C_ShowCmndButt",
+            xmToggleButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>B",
+            XmNacceleratorText, xma,
+            XmNset, False,
+            XmNindicatorSize,12,
+            XmNvisibleWhenOff, True,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+        XtAddCallback ( bt, XmNvalueChangedCallback, (XtCallbackProc)show_command_buttons_callback, NULL );
+
+        bt = XtVaCreateManagedWidget ( "W_MenuSep",
+            xmSeparatorGadgetClass, mn,
+            NULL);
+    */
+        
+        xms = create_str ("LOG Connections");
+	/*
+        bt = XtVaCreateManagedWidget ( "C_MenuButtonLOG",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>G",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control_callback, "log" );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control, 
+			(XtPointer)0 );
+
+        create_separator(mn);
+	/*
+        bt = XtVaCreateManagedWidget ( "W_MenuSep",
+            xmSeparatorGadgetClass, mn,
+            NULL);
+	*/
+        xms = create_str ("Set Debug ON");
+	/*
+        bt = XtVaCreateManagedWidget ( "C_MenuButtonDON",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "<Key>F2:",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control_callback, "on" );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control, 
+			(XtPointer)1 );
+
+        xms = create_str ("Set Debug OFF");
+	/*
+        bt = XtVaCreateManagedWidget ( "C_MenuButtonDOFF",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "<Key>F3:",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control_callback, "off" );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control, 
+			(XtPointer)2 );
+
+	create_separator(mn);
+	/*
+        bt = XtVaCreateManagedWidget ( "W_MenuSep",
+            xmSeparatorGadgetClass, mn,
+            NULL);
+	*/
+        xms = create_str ("Print Hash Table");
+	/*
+        bt = XtVaCreateManagedWidget ( "C_MenuButtonPrint",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>T",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control_callback, "hash" );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control, 
+			(XtPointer)4 );
+	/* kill
+	create_separator(mn);
+	*/
+	/*
+        bt = XtVaCreateManagedWidget ( "W_MenuSep",
+            xmSeparatorGadgetClass, mn,
+            NULL);
+	*/
+	/* kill
+        xms = create_str ("Kill DIM Servers");
+	*/
+	/*
+        bt = XtVaCreateManagedWidget ( "C_MenuButtonKill",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>K",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control_callback, "kill" );
+	*/
+	/* kill
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control, 
+			(XtPointer)3 );
+	*/
+	/*
+    util_recolor ( XtParent(mn) );
+	*/
+    /* Help */
+    mn = XmCreatePulldownMenu ( mb, "HelpMB", NULL, 0 );
+    /*
+    cb = XtVaCreateManagedWidget ( "Help",
+        xmCascadeButtonWidgetClass, mb,
+        XtVaTypedArg,       XmNmnemonic, XmRString, "H", 2,
+        XmNsubMenuId,       mn,
+        NULL);
+    */
+    cb = XmCreateCascadeButton ( mb, "Help", NULL, 0 );
+    XtVaSetValues( cb,
+	XmNsubMenuId,       mn,
+	XmNfontList,            did_default_font,
+        NULL);
+    XtManageChild( cb );
+
+        xms = create_str ("Help");
+	/*
+        bt = XtVaCreateManagedWidget ( "C_XDAbout",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>H",
+            XmNacceleratorText, xma,
+            NULL);
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+	/*
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)about_xd_callback, NULL );
+	*/
+    /* set help menu */
+    XtVaSetValues ( mb, XmNmenuHelpWidget, cb, NULL );
+    /*
+    util_recolor ( XtParent(mn) );
+    */
+}
+
+
+Widget gui_toplevel(char **argv)
+{
+int n;
+Arg arglist[6];
+
+    n = 0;
+    XtSetArg ( arglist[n], XmNallowShellResize, True); n++;
+    XtSetArg ( arglist[n], XmNiconName, "DID"); n++;
+    XtSetArg ( arglist[n], XmNtitle, "xDid");  n++;
+    XtSetArg ( arglist[n], XmNtraversalOn,True); n++;
+    return XtAppCreateShell(argv[0], NULL, applicationShellWidgetClass,
+                            display, arglist, (Cardinal)n);
+     
+}
+
+Widget gui_initialize (int argc, char **argv)
+{
+Widget toplevel;
+void gui_create_main_window();
+
+    XtToolkitInitialize();
+    app_context = XtCreateApplicationContext();
+    display = XtOpenDisplay(app_context, NULL, argv[0], "DID",
+                            NULL, 0, &argc, argv);
+    if (display == NULL) 
+	{
+        printf("%s:  Can't open display\n", argv[0]);
+        exit(1);
+	}
+    toplevel = gui_toplevel(argv);
+   
+    did_default_font = (XmFontList)util_get_font(DEFAULT_FONT, toplevel);
+    did_small_font = (XmFontList)util_get_font(MENU_FONT, toplevel);
+    did_label_font = (XmFontList)util_get_font(LABEL_FONT, toplevel);
+    did_server_font = (XmFontList)util_get_font(SERVER_FONT, toplevel);
+
+    gui_create_main_window(toplevel);
+
+    XtRealizeWidget ( toplevel );
+    return toplevel;
+}
+
+int main(int argc, char *argv[])
+{
+    int i;
+	char opt_str[20], *ptr;
+	XtInputMask mask;
+	void do_got_service_list();
+	void do_show_clients();
+	void app_initialize();
+       
+	dim_no_threads();
+	dic_disable_padding();
+	dis_disable_padding();
+	
+	if(argc > 1)
+	{
+		if(argv[1][0] == '-')
+		{
+			sprintf(opt_str,"%s",&argv[1][1]);
+			if((!strncmp(opt_str,"node",4)) || 
+			   (!strncmp(opt_str,"NODE",4)))
+				Curr_view_opt = 0;
+			else if((!strncmp(opt_str,"all",3)) || 
+				(!strncmp(opt_str,"ALL",3)))
+				Curr_view_opt = 1;
+			else if((!strncmp(opt_str,"dns",3)) || 
+				(!strncmp(opt_str,"DNS",3))) {
+                                char text[132];
+			        sprintf(text,"DIM_DNS_NODE=%s",opt_str+4);
+   		  	        putenv(text);
+ 			        dim_set_dns_node(opt_str+4);
+			}
+			else if((!strncmp(opt_str,"service",7)) || 
+					(!strncmp(opt_str,"SERVICE",7)))
+				Curr_view_opt = 2;
+			else if((!strncmp(opt_str,"error",5)) ||
+					(!strncmp(opt_str,"ERROR",5)))
+				Curr_view_opt = 3;
+			else if((!strncmp(opt_str,"help",4)) || 
+				(!strncmp(opt_str,"HELP",4)))
+			  {
+    printf("Did - DIM Information Display\n");
+    printf("\t-all             Show ALL Servers\n");
+    printf("\t-dns=<str>       Show Servers with DIM_DNS_NODE provided by <str>\n");
+    printf("\t-service=<str>   Show Servers providing Service <str>\n");
+    printf("\t-node=<nodename> Show Servers on Node <nodename>\n");
+    printf("\t-error           Show Servers in Error\n");
+    printf("\t-help            Show this message\n\n");
+    exit(0);
+			  }
+			else
+				Curr_view_opt = -1;
+			if((Curr_view_opt == 0) || (Curr_view_opt == 2))
+			{
+  				if(!(ptr = strchr(argv[1],'=')))
+				{
+					if( (ptr = strchr(argv[2],'=')) )
+					{
+						ptr++;
+						if(!(*ptr))
+							ptr = argv[3];
+					}
+					else
+						ptr++;
+				}
+				else
+				{			
+					ptr++;
+					if(!(*ptr))
+						ptr = argv[2];
+				}
+				for(i = 0;*ptr; ptr++, i++)
+					Curr_view_opt_par[i] = (char)toupper((int)*ptr);
+				Curr_view_opt_par[i] = '\0';
+			}
+		}
+	}
+
+    toplevel_widget = (Widget)gui_initialize(argc, argv);
+    app_initialize();
+    /* 
+     * Sit around forever waiting to process X-events.  We never leave
+     * XtAppMainLoop. From here on, we only execute our callback routines. 
+     */
+
+    while(1)
+    {
+		{
+			DISABLE_AST
+			mask = XtAppPending(app_context);	
+			ENABLE_AST
+		}
+		if(mask)
+		{
+			DISABLE_AST
+			XtAppProcessEvent(app_context, mask);
+			if(Got_Service_List)
+			{
+				do_got_service_list(Got_Service_List);
+				Got_Service_List = 0;
+			}
+			if(Got_Client_List)
+			{
+				do_show_clients(Got_Client_List);
+				Got_Client_List = 0;
+			}
+			ENABLE_AST
+		}		
+		else
+		{
+			dim_usleep(100000);
+			/*
+			usleep(100000);	
+			*/
+		}
+    }
+
+}
+
+static char no_link = -1;
+
+void app_initialize(int tag)
+{
+void check_put_label();
+
+void update_servers();
+void update_servers_new();
+void update_show_servers();
+extern void get_all_colors();
+extern void set_title();
+extern void set_icon_title();
+char dns_node[64];
+int dns_port;
+char title[128],icon_title[128];
+
+	if(tag){}
+	dic_get_dns_node(dns_node);
+    dns_port = dic_get_dns_port();
+	if(dns_port != DNS_PORT)
+	{
+		sprintf(title,"DID - DIM Information Display DNS=%s:%d",dns_node,dns_port);
+	}
+	else
+	{
+		sprintf(title,"DID - DIM Information Display DNS=%s",dns_node);
+	}
+	sprintf(icon_title,"DID %s",dns_node);
+	get_all_colors(display,Matrix_id[Curr_matrix]);
+	set_title(toplevel_widget,title);
+	set_icon_title(toplevel_widget,icon_title);
+	Timer_q = dtq_create();
+	dic_info_service("DIS_DNS/SERVER_INFO",MONITORED,0,0,0,update_servers,0,
+						&no_link,1);
+	/*
+      	dic_info_service("DIS_DNS/SERVER_LIST",MONITORED,0,0,0,
+			 update_servers_new,0, &no_link,1);
+	*/
+	/*	
+	dtq_add_entry(Timer_q, 2, check_put_label, 0);
+	*/
+	XtAppAddTimeOut(app_context, 1000, update_show_servers, 0); 
+}
+
+/*
+ * All errors are fatal.
+ */
+void s_error(char *problem_string)
+{
+    printf("%s\n", problem_string);
+    exit(0);
+}
+
+void did_exit(Widget w, int *tag, unsigned long *reason)
+{
+	if(w){}
+	if(tag){}
+	if(reason){}
+	exit(0);
+}
+
+extern Pixel rgb_colors[MAX_COLORS];
+
+void create_main (Widget w, int *tag, unsigned long *reason)
+{
+	if(tag){}
+	if(reason){}
+	Window_id = w;
+/*
+	dtq_start_timer(5, app_initialize, 0);
+*/
+}
+
+void view_opts(Widget w, int tag, unsigned long *reason)
+{
+	void get_server_node(), get_server_service(), show_servers();
+
+	if(w){}
+	if(reason){}
+	Curr_view_opt = tag;
+	switch(tag)
+	{
+		case 0 :
+			get_server_node();
+			break;
+		case 1 :
+			show_servers();
+			break;
+		case 2 :
+			get_server_service();
+			break;
+		case 3 :
+			show_servers();
+			break;
+	}
+}
+
+void dns_control(Widget w, int tag, unsigned long *reason)
+{
+
+	if(w){}
+	if(reason){}
+	switch(tag)
+	{
+		case 0 :
+			dic_cmnd_service("DIS_DNS/PRINT_STATS",0,0);
+			break;
+		case 1 :
+			dic_cmnd_service("DIS_DNS/DEBUG_ON",0,0);
+			break;
+		case 2 :
+			dic_cmnd_service("DIS_DNS/DEBUG_OFF",0,0);
+			break;
+		case 3 :
+			put_selection(DID_KILL_ALL,"Confirmation");
+			break;
+		case 4 :
+			dic_cmnd_service("DIS_DNS/PRINT_HASH_TABLE",0,0);
+			break;
+	}
+}
+
+void get_server_node()
+{
+Widget id,sel_id;
+int i, j, n_nodes, curr_index = 0;
+char nodes_str[MAX_NODE_NAME*MAX_CONNS*2], max_str[MAX_NODE_NAME];
+char *ptr, *nodeptrs[MAX_CONNS*2], *curr_str, *sptr;
+int get_nodes();
+
+	sel_id = put_selection(DID_SEL_NODE,"Node Selection");
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_HELP_BUTTON);
+	XtUnmanageChild(id);
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_APPLY_BUTTON);
+	XtUnmanageChild(id);
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST);
+	XmListDeleteAllItems(id);
+	n_nodes = get_nodes(nodes_str);
+	ptr = nodes_str;
+
+	for(i=0;i<n_nodes;i++)
+	{
+		nodeptrs[i] = ptr;
+		sptr = ptr;
+		ptr = strchr(ptr,'\n');
+		*ptr++ = '\0';
+		for(j = 0; j < (int)strlen(sptr); j++)
+		  sptr[j] = (char)tolower((int)sptr[j]);
+	}
+	strcpy(max_str,"zzzzzzzzzzzzzzzzzzzzzzzzzzzz");
+	for(i=0;i<n_nodes; i++)
+	{
+	  curr_str = max_str;
+	  for(j=0;j<n_nodes; j++)
+	  {
+	    sptr = nodeptrs[j];
+	    if(!sptr)
+	      continue;
+	    
+	    if(strcmp(sptr,curr_str) < 0)
+	    {
+	      curr_str = sptr;
+	      curr_index = j;
+	    }
+	  }
+	  nodeptrs[curr_index] = 0;
+	  XmListAddItem(id,create_str(curr_str),i+1);
+	}
+	/*
+	for(i=0;i<n_nodes;i++)
+	{
+		node = ptr;
+		ptr = strchr(ptr,'\n');
+		*ptr++ = '\0';
+		XmListAddItem(id,create_str(node),i+1);
+	}
+	*/
+	set_something(id,XmNlistItemCount,i);
+	set_something(id,XmNlistVisibleItemCount,(i < 8) ? i : 8);
+}	
+
+void get_server_service()
+{
+Widget id,sel_id;
+
+	sel_id = put_selection(DID_SEL_SERVICE,"Service Selection");
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_HELP_BUTTON);
+	XtUnmanageChild(id);
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_APPLY_BUTTON);
+	XtUnmanageChild(id);
+	
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST);
+	/*
+	XtUnmanageChild(id);
+	*/
+	XtUnmapWidget(id);
+	
+	/*
+	id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST_LABEL);
+	XtUnmanageChild(id);
+	*/
+}	
+
+int get_nodes(char *node_ptr)
+{
+DNS_SERVER_INFO *ptr;
+int n_nodes = 0;
+SERVER *servp;
+
+	node_ptr[0] = '\0';
+	servp = Server_head;
+	while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+	{
+		ptr = &servp->server;
+		if(strstr(node_ptr,ptr->node) <= (char *)0)
+		{
+			strcat(node_ptr,ptr->node);
+			strcat(node_ptr,"\n");
+			n_nodes++;
+		}
+	}
+	return(n_nodes);
+}
+
+void get_service_format()
+{
+
+	char str[256], *ptr, *ptr1;
+	int rpc_flag;
+
+	strcpy(str,Curr_service_name);
+	rpc_flag = 0;
+	if( (ptr = strstr(str,"/RpcIn")) )
+	{
+		*ptr = '\0';
+		rpc_flag = 1;
+	}
+	if( (ptr = strstr(str,"/RpcOut")) )
+	{
+		*ptr = '\0';
+		rpc_flag = 2;
+	}
+	strcat(str,"|");
+	if( (ptr = strstr(Curr_service_list,str)) )
+	{
+		if(!rpc_flag)
+		{
+		    ptr += strlen(str);
+		    ptr1 = strchr(ptr,'|');
+		}
+		else if(rpc_flag == 1)
+		{
+		    ptr += strlen(str);
+		    ptr1 = strchr(ptr,',');
+		}
+		else
+		{
+		    ptr += strlen(str);
+		    ptr = strchr(ptr,',');
+		    ptr++;
+		    ptr1 = strchr(ptr,'|');
+		}
+	    strncpy(Curr_service_format,ptr,(size_t)(ptr1 - ptr));
+	    Curr_service_format[(int)(ptr1-ptr)] = '\0';
+	}
+}
+
+void recv_service_info(int *tag, int *buffer, int *size)
+{
+/*
+	char str[256], *ptr, *ptr1;
+	int rpc_flag;
+*/
+	void print_service_formatted();
+
+	if(tag){}
+	Service_content_str = malloc((size_t)(1024 + (*size)*16));
+	Service_buffer = malloc((size_t)*size);
+	memcpy(Service_buffer, (char *)buffer, (size_t)*size);
+	Service_size = *size;
+	get_service_format();
+	if((*size == 4 ) && (*buffer == -1))
+	{
+		sprintf(Service_content_str,
+			"Service %s Not Available\n", Curr_service_name);
+	}
+	else
+	{
+	  switch(Curr_service_print_type)
+	  {
+	  case 0:
+		print_service_formatted(buffer,*size);
+		break;
+		/*
+	  case 1:
+		print_service_float(buffer, ((*size - 1) / 4) + 1);
+		break;
+	  case 2:
+		print_service_double(buffer, ((*size - 1) / 4) + 1);
+		break;
+		*/
+	  }
+	}
+	set_something(Content_label_id,XmNlabelString, Service_content_str);
+	/*
+	if(Matrix_id[Curr_matrix])
+	  XFlush(XtDisplay(Matrix_id[Curr_matrix]));
+	*/
+}
+	
+void print_service_formatted(void *buff, int size)
+{
+char type;
+int num, ret;
+char str[128];
+char *ptr;
+void *buffer_ptr;
+char timestr[128], aux[10];
+int quality = 0, secs = 0, mili = 0; 
+int did_write_string(char, int, void **, int);
+time_t tsecs;
+
+  sprintf(Service_content_str,
+	  "Service %s (%s) Contents :\n  \n", Curr_service_name,
+	  Curr_service_format);
+  /*
+  if(Curr_service_id)
+  {
+  */
+    dic_get_timestamp(0, &secs, &mili);
+    quality = dic_get_quality(0);
+/*
+#ifdef LYNXOS
+	ctime_r((time_t *)&secs, timestr, 128);
+#else
+	ctime_r((time_t *)&secs, timestr);
+#endif
+*/
+	tsecs = secs;
+	my_ctime(&tsecs, timestr, 128);
+    ptr = strrchr(timestr,' ');
+    strcpy(aux, ptr);
+    sprintf(ptr,".%03d",mili);
+    strcat(timestr, aux);
+    timestr[strlen(timestr)-1] = '\0';
+   
+    sprintf(str," Timestamp: %s               Quality: %d\n\n",
+	  timestr, quality);
+
+    strcat(Service_content_str,str);
+    /*
+  }
+    */
+   ptr = Curr_service_format;
+   buffer_ptr = buff;
+   while(*ptr)
+   { 
+     type = *ptr++;
+     if(*ptr == ':')
+       {
+	 ptr++;
+	 sscanf(ptr, "%d", &num);
+	 ret = did_write_string(type, num, &buffer_ptr, size);
+	 size -= ret;
+	 if( (ptr = strchr(ptr,';')) )
+	   ptr++;
+	 else
+	   break;
+       }
+       else
+       {
+	 ret = did_write_string(type, 0, &buffer_ptr, size);
+	 size -= ret;
+	 break;
+       }
+   }
+}
+
+int did_write_string(char type, int num, void **buffer_ptr, int ssize)
+{
+void *ptr;
+int size, psize;
+
+  void print_service_standard();
+  void print_service_char();
+  void print_service_short();
+  void print_service_float();
+  void print_service_double();
+
+  ptr = *buffer_ptr;
+  switch(type)
+    {
+    case 'L':
+    case 'l':
+      strcat(Service_content_str," L");
+      if(!num)
+	size = ssize/(int)sizeof(int);
+      else
+	size = num;
+      psize = size * (int)sizeof(int);
+      print_service_standard(ptr, size);
+      break;
+    case 'I':
+    case 'i':
+      strcat(Service_content_str," I");
+      if(!num)
+	size = ssize/(int)sizeof(int);
+      else
+	size = num;
+      psize = size * (int)sizeof(int);
+      print_service_standard(ptr, size);
+      break;
+    case 'S':
+    case 's':
+      strcat(Service_content_str," S");
+      if(!num)
+	size = ssize/(int)sizeof(short);
+      else
+	size = num;
+      psize = size * (int)sizeof(short);
+      print_service_short(ptr, size);
+      break;
+    case 'F':
+    case 'f':
+      strcat(Service_content_str," F");
+      if(!num)
+	size = ssize/(int)sizeof(float);
+      else
+	size = num;
+      psize = size * (int)sizeof(float);
+      print_service_float(ptr, size);
+      break;
+    case 'D':
+    case 'd':
+      strcat(Service_content_str," D");
+      if(!num)
+	size = ssize/(int)sizeof(double);
+      else
+	size = num;
+      psize = size * (int)sizeof(double);
+      print_service_double(ptr, size);
+      break;
+    case 'X':
+    case 'x':
+      strcat(Service_content_str," X");
+      if(!num)
+	size = ssize/(int)sizeof(longlong);
+      else
+	size = num;
+      psize = size * (int)sizeof(longlong);
+      print_service_standard(ptr, size*2);
+      break;
+    case 'C':
+    case 'c':
+    default:
+      strcat(Service_content_str," C");
+      if(!num)
+	size = ssize;
+      else
+	size = num;
+      psize = size;
+      print_service_char(ptr, size);
+    }
+  ptr = (char *)ptr + psize;
+  *buffer_ptr = ptr;
+  return psize;
+}
+/*
+print_service(buff, size)
+int *buff, size;
+{
+int i,j, str_flag = 0;
+char *asc, *ptr, str[80];
+int last[4];
+
+	sprintf(Service_content_str,
+		"Service %s (%s) Contents :\n  \n", Curr_service_name,
+		Curr_service_format);
+	asc = (char *)buff;
+	for( i = 0; i < size; i++)
+	{
+		if(i%4 == 0)
+		{
+			sprintf(str,"%4d: ",i);
+			strcat(Service_content_str,str);
+		}
+		if(!(i%4))
+			strcat(Service_content_str,"H");
+		sprintf(str,"   %08X ",buff[i]);
+		strcat(Service_content_str,str);
+		last[i%4] = buff[i];
+		if(i%4 == 3)
+		{
+			strcat(Service_content_str,"   '");
+			for(j = 0; j <16; j++)
+			{
+				if(isprint(asc[j]))
+				{
+					sprintf(str,"%c",asc[j]);
+					strcat(Service_content_str,str);
+				}
+				else
+				{
+					sprintf(str,".");
+					strcat(Service_content_str,str);
+				}
+			}
+			strcat(Service_content_str,"'\n");
+			for(j = 0; j <4; j++)
+			{
+				if(j == 0)
+					strcat(Service_content_str,"      D");
+				sprintf(str,"%11d ",last[j]);
+				strcat(Service_content_str,str);
+			}
+			strcat(Service_content_str,"\n");
+			asc = (char *)&buff[i+1];
+		}
+	}
+	if(i%4)
+	{
+			for(j = 0; j < 4 - (i%4); j++)
+				strcat(Service_content_str,"            ");
+			strcat(Service_content_str,"   '");
+			for(j = 0; j < (i%4) * 4; j++)
+			{
+				if(isprint(asc[j]))
+				{
+					sprintf(str,"%c",asc[j]);
+					strcat(Service_content_str,str);
+				}
+				else
+					strcat(Service_content_str,".");
+			}
+			strcat(Service_content_str,"'\n");
+			for(j = 0; j < (i%4); j++)
+			{
+				if(j == 0)
+					strcat(Service_content_str,"      D");
+				sprintf(str,"%11d ",last[j]);
+				strcat(Service_content_str,str);
+			}
+			strcat(Service_content_str,"\n");
+	}
+}
+*/
+
+void print_service_standard(int *buff, int size)
+{
+int i,j;
+char *ptr, str[80], tmp[256];
+int last[4];
+/*
+char *asc;
+	asc = (char *)buff;
+*/
+	ptr = Service_content_str;
+	ptr += strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%4 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"  ");
+		    }
+			sprintf(str,"%5d ",i);
+			strcat(tmp,str);
+		}
+		if(!(i%4))
+			strcat(tmp,"H: ");
+		sprintf(str,"    %08X",buff[i]);
+		strcat(tmp,str);
+		last[i%4] = buff[i];
+		if((i%4 == 3) || (i == (size-1)))
+		{
+		  /*
+			if(i%4 != 3)
+			{
+			    for(j = 1; j < 4 - (i%4); j++)
+				strcat(tmp,"            ");
+			}
+			strcat(tmp,"  '");
+			for(j = 0; j < ((i%4)*4)+4 ; j++)
+			{
+				if(isprint(asc[j]))
+				{
+					sprintf(str,"%c",asc[j]);
+					strcat(tmp,str);
+				}
+				else
+				{
+					sprintf(str,".");
+					strcat(tmp,str);
+				}
+			}
+		  */
+			strcat(tmp,"\n");
+			for(j = 0; j <= (i%4); j++)
+			{
+				if(j == 0)
+					strcat(tmp,"        D: ");
+				sprintf(str,"%12d",last[j]);
+				strcat(tmp,str);
+			}
+			strcat(tmp,"\n");
+/*
+			asc = (char *)&buff[i+1];
+*/
+		}
+		strcpy(ptr, tmp);
+		ptr += strlen(tmp);
+	}
+	strcpy(tmp,"\n");
+	strcpy(ptr, tmp);
+}
+
+void print_service_longlong(longlong *buff, int size)
+{
+int i,j;
+char *ptr, str[80], tmp[256];
+longlong last[4];
+/*
+char *asc;
+	asc = (char *)buff;
+*/
+	ptr = Service_content_str;
+	ptr += strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%4 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"  ");
+		    }
+			sprintf(str,"%5d ",i);
+			strcat(tmp,str);
+		}
+		if(!(i%4))
+			strcat(tmp,"H: ");
+		sprintf(str,"    %08X",(unsigned)buff[i]);
+		strcat(tmp,str);
+		last[i%4] = buff[i];
+		if((i%4 == 3) || (i == (size-1)))
+		{
+			strcat(tmp,"\n");
+			for(j = 0; j <= (i%4); j++)
+			{
+				if(j == 0)
+					strcat(tmp,"        D: ");
+				sprintf(str,"%12d",(int)last[j]);
+				strcat(tmp,str);
+			}
+			strcat(tmp,"\n");
+/*
+			asc = (char *)&buff[i+1];
+*/
+		}
+		strcpy(ptr, tmp);
+		ptr += strlen(tmp);
+	}
+	strcpy(tmp,"\n");
+	strcpy(ptr, tmp);
+}
+
+void print_service_short(short *buff, int size)
+{
+int i,j;
+char *ptr, str[80], tmp[256];
+short last[8];
+/*
+char *asc; 
+	asc = (char *)buff;
+*/
+	ptr = Service_content_str;
+	ptr += strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%8 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"  ");
+		    }
+			sprintf(str,"%5d ",i);
+			strcat(tmp,str);
+		}
+		if(!(i%8))
+			strcat(tmp,"H: ");
+		sprintf(str,"  %04X",buff[i]);
+		strcat(tmp,str);
+		last[i%8] = buff[i];
+		if((i%8 == 7) || (i == (size-1)))
+		{
+		  /*
+			if(i%7 != 7)
+			{
+			    for(j = 1; j < 8 - (i%8); j++)
+				strcat(tmp,"      ");
+			}
+			strcat(tmp,"  '");
+			for(j = 0; j < ((i%8)*2)+2 ; j++)
+			{
+				if(isprint(asc[j]))
+				{
+					sprintf(str,"%c",asc[j]);
+					strcat(tmp,str);
+				}
+				else
+				{
+					sprintf(str,".");
+					strcat(tmp,str);
+				}
+			}
+		  */
+			strcat(tmp,"\n");
+			for(j = 0; j <= (i%8); j++)
+			{
+				if(j == 0)
+					strcat(tmp,"        D: ");
+				sprintf(str," %5d",last[j]);
+				strcat(tmp,str);
+			}
+			strcat(tmp,"\n");
+/*
+			asc = (char *)&buff[i+1];
+*/
+		}
+		strcpy(ptr, tmp);
+		ptr += strlen(tmp);
+	}
+	strcpy(tmp,"\n");
+	strcpy(ptr, tmp);
+}
+
+void print_service_char(char *buff, int size)
+{
+int i,j;
+char *asc, *ptr, str[80], tmp[256];
+/*
+char last[16];
+*/
+	asc = (char *)buff;
+	ptr = Service_content_str;
+	ptr += strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%16 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"  ");
+		    }
+			sprintf(str,"%5d ",i);
+			strcat(tmp,str);
+		}
+		if(!(i%16))
+			strcat(tmp,"H: ");
+		sprintf(str,"%02X",buff[i]);
+/*		strcat(tmp,str);
+*/
+		strcat(tmp," ");
+		strcat(tmp,&str[strlen(str)-2]);
+		/*
+		last[i%16] = buff[i];
+		if(i%4 == 3)
+		  strcat(tmp," ");
+		*/
+		if((i%16 == 15) || (i == (size-1)))
+		{
+			if(i%16 != 15)
+			{
+			    for(j = 1; j < 16 - (i%16); j++)
+				strcat(tmp,"   ");
+			}
+			strcat(tmp,"    '");
+			for(j = 0; j <= (i%16) ; j++)
+			{
+				if(isprint(asc[j]))
+				{
+					sprintf(str,"%c",asc[j]);
+					strcat(tmp,str);
+				}
+				else
+				{
+					sprintf(str,".");
+					strcat(tmp,str);
+				}
+			}
+			strcat(tmp,"'\n");
+			asc = (char *)&buff[i+1];
+		}
+		strcpy(ptr, tmp);
+		ptr += strlen(tmp);
+	}
+	strcpy(tmp,"\n");
+	strcpy(ptr, tmp);
+}
+
+void print_service_float(float *buff, int size)
+{
+int i;
+char *ptr, str[80], tmp[256];
+
+	ptr = Service_content_str;
+	ptr += strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%4 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"  ");
+		    }
+			sprintf(str,"  %5d: ",i);
+			strcat(tmp,str);
+		}
+		sprintf(str,"%12.3G",*(buff++));
+		strcat(tmp,str);
+		if((i%4 == 3) || (i == size-1))
+		{
+			strcat(tmp,"\n");
+		}
+		strcpy(ptr, tmp);
+		ptr += strlen(tmp);
+	}
+	strcpy(tmp,"\n");
+	strcpy(ptr, tmp);
+	ptr += strlen(tmp);
+}
+
+void print_service_double(double *buff, int size)
+{
+int i;
+char *ptr, str[80], tmp[256];
+
+       	ptr = Service_content_str;
+	ptr += strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%4 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"  ");
+		    }
+			sprintf(str,"  %5d: ",i);
+			strcat(tmp,str);
+		}
+		sprintf(str,"%12.3G",*(buff++));
+		strcat(tmp,str);
+		if((i%4 == 3) || (i == size-1))
+		{
+			strcat(tmp,"\n");
+		}
+		strcpy(ptr, tmp);
+		ptr += strlen(tmp);
+	}
+	strcpy(tmp,"\n");
+	strcpy(ptr, tmp);
+	ptr += strlen(tmp);
+}
+
+void ok_pop_up (Widget w, long tag, unsigned long *reason)
+{
+Widget id, sel_id;
+char *str, *pstr;
+void recv_service_info();
+void did_prepare_command();
+void show_servers();
+
+/*
+	if(tag == 5)
+	{
+		id = (Widget)XmSelectionBoxGetChild(w,XmDIALOG_TEXT);
+		str = (char *)XmTextGetString(id);
+		if(!str[0])
+		{
+			XtFree(str);
+			return;
+		}
+		if( ( fptr = fopen( str, "w" ) ) == (FILE *)0 )
+		{
+    		printf("Cannot open: %s for writing\n",str);
+			return;
+		}                   
+		ptr = &Curr_servp->server;
+		if (ptr->pid > 0x1000000)
+			fprintf(fptr,"Server %s (pid = %X) on node %s\n    provides %d services :\n",
+			Curr_servp->name, ptr->pid, ptr->node, ptr->n_services);
+		else
+			fprintf(fptr,"Server %s (pid = %d) on node %s\n    provides %d services :\n",
+				Curr_servp->name, ptr->pid, ptr->node, ptr->n_services);
+		service_ptr = Curr_servp->service_ptr;
+		for(i=0;i<ptr->n_services; i++)
+		{
+			sprintf(str,service_ptr->name);
+			fprintf(fptr,"        %s\n",service_ptr->name);
+			service_ptr++;
+		}		
+		fclose(fptr);
+		XtFree(str);
+		return;
+	}
+	if(tag == 4)
+	{
+		sel_id = put_selection(4, "Printing...");
+		id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_HELP_BUTTON);
+		XtUnmanageChild(id);
+
+		id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_APPLY_BUTTON);
+		XtUnmanageChild(id);
+		id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_TEXT);
+		str = (char *)XmTextGetString(id);
+		if(!str[0])
+		{
+			XtFree(str);
+			return;
+		}
+		ptr = &Curr_servp->server;
+		if(pstr = strrchr(str,']'))
+			*(++pstr) = '\0';
+		if(pstr = strrchr(str,'/'))
+			*(++pstr) = '\0';
+		sprintf(txt_str,"%s%s.TXT",str,Curr_servp->name);
+		XtFree(str);
+		XmTextSetString(id, txt_str);
+		return;
+	}
+*/
+	if(reason){}
+	if(tag == DID_KILL_ALL)
+	{
+		dic_cmnd_service("DIS_DNS/KILL_SERVERS",0,0);
+		return;
+	}
+	id = XmSelectionBoxGetChild(w,XmDIALOG_TEXT);
+	str = XmTextGetString(id);
+	if(!str[0])
+	{
+		XtFree(str);
+		return;
+	}
+    if ((tag == DID_SEL_NODE) || (tag == DID_SEL_SERVICE)) 
+	{
+		strcpy(Curr_view_opt_par, str);
+		show_servers();
+		XtFree(str);
+	}
+    if(tag == DID_SERVICES)
+	{
+	  pstr = strchr(str,' ');
+	  if(!pstr)
+	    {
+	      strcpy(Curr_service_name, str);
+	      strcpy(str,"SVC");
+	    }
+	  else
+	    {
+	      pstr++;
+	      strcpy(Curr_service_name, pstr);
+	    }
+	  if(Curr_service_id)
+	    {
+	      dic_release_service(Curr_service_id);
+	      Curr_service_id = 0;
+	    }
+	  if(str[0] == 'S')
+	    {
+	      /*
+	      if((!strstr(pstr,"/SERVICE_LIST")) && 
+		 (!strstr(pstr,"/CLIENT_LIST")) &&
+		 (!strstr(pstr,"/SERVER_LIST")))
+		{
+		  Curr_service_id = dic_info_service(Curr_service_name,
+		                             MONITORED,5,0,0,
+					     recv_service_info,0,
+						     &no_link_int,4);
+		}
+	      else
+		{
+	      */
+	      dic_info_service_stamped(Curr_service_name,
+							 ONCE_ONLY,10,0,0,
+					     recv_service_info,0,
+						     &no_link_int,4);
+		  /*
+		}
+		  */
+	      put_selection(DID_SERVICE,"Service Contents");
+	    }
+	  else
+	    {
+	      get_service_format();
+	      sel_id = put_selection(DID_COMMAND,"Send Command");
+	      id = XmSelectionBoxGetChild(sel_id,XmDIALOG_HELP_BUTTON);
+	      XtUnmanageChild(id);
+	      id = XmSelectionBoxGetChild(sel_id,XmDIALOG_APPLY_BUTTON);
+	      XtUnmanageChild(id);
+	      id = XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST);
+	      /*
+	      XtUnmanageChild(id);
+	      */
+	      XtUnmapWidget(id);
+	    }
+	  XtFree(str);
+	}
+    if(tag == DID_COMMAND)
+	{
+	  did_prepare_command(str);
+	  XtFree(str);
+	}
+}
+
+int get_type_size(char type)
+{
+  int size;
+
+  switch(type)
+    {
+    case 'L':
+    case 'l':
+      size = sizeof(long);
+      break;
+    case 'I':
+    case 'i':
+      size = sizeof(int);
+      break;
+    case 'S':
+    case 's':
+      size = sizeof(short);
+      break;
+    case 'F':
+    case 'f':
+      size = sizeof(float);
+      break;
+    case 'D':
+    case 'd':
+      size = sizeof(double);
+      break;
+    case 'C':
+    case 'c':
+    default:
+      size = 1;
+    }
+  return(size);
+}
+
+void did_prepare_command(char *str)
+{
+char type;
+int num;
+int size, full_size = 0;
+char *ptr;
+static int last_size = 0;
+static void *last_buffer = 0;
+void *buffer_ptr;
+char *str_ptr;
+void did_read_string(char, int, void **, char **);
+
+   str_ptr = str; 
+   ptr = Curr_service_format; 
+   while(*ptr)
+   { 
+     type = *ptr++;
+     if(*ptr == ':')
+       {
+	 ptr++;
+	 size = get_type_size(type);
+	 sscanf(ptr, "%d", &num);
+	 full_size += size * num;
+	 if( (ptr = strchr(ptr,';')) )
+	   ptr++;
+	 else
+	   break;
+       }
+   }
+
+   full_size += 256;
+   if(full_size > last_size)
+   {
+      if(last_size)
+	free(last_buffer);
+      last_buffer = malloc((size_t)full_size);
+      last_size = full_size;
+   }
+   buffer_ptr = last_buffer;
+   ptr = Curr_service_format; 
+   while(*ptr)
+   { 
+     type = *ptr++;
+     if(*ptr == ':')
+       {
+	 ptr++;
+	 sscanf(ptr, "%d", &num);
+	 did_read_string(type, num, &buffer_ptr, &str_ptr);  
+	 if(!str_ptr)
+	     break;
+	 if( (ptr = strchr(ptr,';')) )
+	   ptr++;
+	 else
+	   break;
+       }
+       else
+       {
+	 did_read_string(type, 0, &buffer_ptr, &str_ptr);
+	 break;
+       }
+   }
+   full_size = (int) ((char *)buffer_ptr - (char *)last_buffer);
+   dic_cmnd_service(Curr_service_name,last_buffer,full_size);
+}
+
+int read_str_int(char *str)
+{
+  int i;
+  if((str[0] == '0') && (str[1] == 'x'))
+    sscanf(str+2,"%x",&i);
+  else
+    sscanf(str,"%d",&i);
+  return(i);
+}
+
+int read_str_char(char *str, char *cc)
+{
+
+  if(str[0] == '\'')
+    *cc = str[1];
+  else if(str[0] == '\"')
+    return(0);
+  else if((str[0] == '0') && (str[1] == 'x'))
+    sscanf(str+2,"%x",(int *)cc);
+  else if(isalpha(str[0]))
+    return(-1);
+  else
+    sscanf(str,"%d",(int *)cc);
+  return(1);
+}
+
+void did_read_string(char type, int num, void **buffer_ptr, char **str_ptr)
+{
+int i, ret = 0;
+float ff;
+double dd;
+void *ptr;
+char *strp, *ptr1;
+char cc;
+ short s;
+
+  strp = *str_ptr; 
+  ptr = *buffer_ptr;
+  if(!num)
+    num = 1000000;
+  switch(type)
+    {
+    case 'L':
+    case 'l':
+    case 'I':
+    case 'i':
+      for(i = 0; i<num; i++)
+      {
+	*(int *)ptr = read_str_int(strp);
+	ptr = (int *)ptr +1;
+	if( (strp = strchr(strp,' ')) )
+	  strp++;
+	else
+	  break;
+      }
+      break;
+    case 'S':
+    case 's':
+      for(i = 0; i<num; i++)
+      {
+	s = (short)read_str_int(strp);
+	*((short *)ptr) = s;
+	ptr = (short *)ptr +1;
+	if( (strp = strchr(strp,' ')) )
+	  strp++;
+	else
+	  break;
+      }
+      break;
+    case 'F':
+    case 'f':
+      for(i = 0; i<num; i++)
+      {
+	sscanf(strp,"%f",&ff);
+	*(float *)ptr = ff;
+	ptr = (float *)ptr +1;
+	if( (strp = strchr(strp,' ')) )
+	  strp++;
+	else
+	  break;
+      }
+      break;
+    case 'D':
+    case 'd':
+      for(i = 0; i<num; i++)
+      {
+	sscanf(strp,"%f",&ff);
+	dd = (double)ff;
+	*(double *)ptr = dd;
+	ptr = (double *)ptr +1;
+	if( (strp = strchr(strp,' ')) )
+	  strp++;
+	else
+	  break;
+      }
+      break;
+    case 'C':
+    case 'c':
+    default:
+      for(i = 0; i<num; i++)
+      {
+	if((ret = read_str_char(strp, &cc)) <= 0)
+	  break;
+	*(char *)ptr = cc;
+	ptr = (char *)ptr +1;
+	if( (strp = strchr(strp,' ')) )
+	  strp++;
+	else
+	  break;
+      }
+      if(ret <= 0)
+      {
+	if(!ret)
+	{
+	  strp++;
+	}
+	num = (int)strlen(strp)+1;
+	strncpy((char *)ptr,strp,(size_t)num);
+	if( (ptr1 = (char *)strchr((char *)ptr,'\"')) )
+	{
+	  num--;
+	  *ptr1 = '\0';
+	}
+	ptr = (char *)ptr + num;
+	if( (strp = strchr(strp,' ')) )
+	  strp++;
+	else
+	  break;
+      }
+    }
+  *buffer_ptr = ptr;
+  *str_ptr = strp;
+}
+
+void cancel_pop_up (Widget w, int tag, unsigned long *reason)
+{
+	void print_service_formatted();
+
+	if(reason){}
+	if(tag == MAX_POP_UPS+1)
+	{
+	  print_service_formatted(Service_buffer,Service_size);
+		set_something(Content_label_id,XmNlabelString, Service_content_str);
+		Curr_service_print_type = 0;
+	}
+	/*
+	else if(tag == MAX_POP_UPS+2)
+	{
+		print_service_float(Service_buffer, ((Service_size - 1) / 4) + 1);
+		set_something(Content_label_id,XmNlabelString, Service_content_str);
+		Curr_service_print_type = 1;
+	}
+	else if(tag == MAX_POP_UPS+3)
+	{
+		print_service_double(Service_buffer, ((Service_size - 1) / 4) + 1);
+		set_something(Content_label_id,XmNlabelString, Service_content_str);
+		Curr_service_print_type = 2;
+	}
+	*/
+	else if(tag == MAX_POP_UPS+4)
+	{
+
+	      if((!strstr(Curr_service_name,"/SERVICE_LIST")) && 
+		 (!strstr(Curr_service_name,"/CLIENT_LIST")) &&
+		 (!strstr(Curr_service_name,"/SERVER_LIST")))
+		{
+		  if(Curr_service_id)
+		  {
+		      dic_release_service(Curr_service_id);
+		      Curr_service_id = 0;
+		  }
+		  Curr_service_id = (int)dic_info_service_stamped(Curr_service_name,
+						     MONITORED,10,0,0,
+						     recv_service_info,0,
+						     &no_link_int,4);
+		}
+		XtSetSensitive(w, False);
+		XtSetSensitive(SubscribeButton, True);
+	}
+	else if(tag == MAX_POP_UPS+5)
+	{
+
+	      if((!strstr(Curr_service_name,"/SERVICE_LIST")) && 
+		 (!strstr(Curr_service_name,"/CLIENT_LIST")) &&
+		 (!strstr(Curr_service_name,"/SERVER_LIST")))
+		{
+		  if(Curr_service_id)
+		  {
+		      dic_release_service(Curr_service_id);
+		      Curr_service_id = 0;
+		  }
+		  Curr_service_id = (int)dic_info_service_stamped(Curr_service_name,
+						     MONITORED,0,0,0,
+						     recv_service_info,0,
+						     &no_link_int,4);
+		}
+		XtSetSensitive(w, False);
+		XtSetSensitive(Subscribe10Button, True);
+	}
+/*
+	else if(tag == 5)
+	{
+	  *
+		XtUnmapWidget(XtParent(pop_widget_id[4]));
+	  *
+	}
+*/
+	else if(tag == DID_SERVICE)
+	{
+	  if(Curr_service_id)
+	    {
+	      dic_release_service(Curr_service_id);
+	      Curr_service_id = 0;
+	    }
+            XtUnmanageChild(pop_widget_id[DID_SERVICE]);
+	    free(Service_content_str);
+	    free(Service_buffer);
+	}
+}
+
+void create_matrix(Widget w, int *tag, unsigned long *reason)
+{
+
+	if(reason){}
+	Matrix_id[*tag] = w;
+	if(*tag)
+		XtUnmanageChild(w);
+	else
+		Curr_matrix = 0;
+}
+
+void create_label(Widget w, int *tag, unsigned long *reason)
+{
+	if(reason){}
+	if(!*tag)
+		Label_id = w;
+	else
+		Content_label_id = w;
+}
+
+void switch_matrix()
+{
+	/*
+	XtUnmanageChild(Matrix_id[Curr_matrix]);
+	Curr_matrix = (Curr_matrix) ? 0 : 1;
+	XtManageChild(Matrix_id[Curr_matrix]);
+	*/
+	XmScrolledWindowSetAreas(Window_id,NULL, NULL, Matrix_id[Curr_matrix]); 
+}
+
+/*
+static int curr_allocated_size = 0;
+static DNS_SERVER_INFO *dns_info_buffer;
+*/
+
+void update_servers_new(int *tag, char *buffer, int *size)
+{
+	if(tag){}
+	if(size){}
+	printf("Server_list:\n%s\n",buffer);
+}
+
+SERVER *find_server(char *node, int pid)
+{
+  SERVER *servp;
+  DNS_SERVER_INFO *ptr;
+
+  servp = Server_head;
+  while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+    {
+      ptr = &servp->server;
+      if((ptr->pid == pid) && (!strcmp(ptr->node,node)))
+	{
+	  return(servp);
+	}
+    }
+  return ((SERVER *)0);
+}
+	  /*
+	if(!(servp = (SERVER *)sll_search((SLL *)Server_head, 
+		(char *)&buffer->server, MAX_NODE_NAME+MAX_TASK_NAME-4)))
+	  */
+
+
+void update_servers(int *tag, DNS_DID *buffer, int *size)
+{
+int n_services, service_size;
+SERVER *servp;
+int j;
+char str[MAX_NAME], sname[MAX_NAME], *ptr;
+
+	if(tag){}
+	if(!Server_head)
+	{
+		Server_head = (SERVER *)malloc(sizeof(SERVER));
+		sll_init((SLL *)Server_head);
+	}
+	if(First_time)
+	{
+		switch_matrix();
+		First_time = 0;
+	}
+
+	if(!*size)
+		return;
+	if(*(char *)buffer == -1)
+	{
+		N_servers = 0;
+		N_services = 0;
+		return;
+	}
+	buffer->server.n_services = vtohl(buffer->server.n_services);
+	buffer->server.pid = vtohl(buffer->server.pid);
+	n_services = buffer->server.n_services;
+
+	if(n_services == 1)
+	  return;
+	strcpy(sname, buffer->server.task);
+	if(n_services > 1)
+	{
+		for(j = 0; j < n_services; j++)
+		{
+			buffer->services[j].type = vtohl(
+				buffer->services[j].type);
+			buffer->services[j].status = vtohl(
+				buffer->services[j].status);
+			buffer->services[j].n_clients = vtohl(
+				buffer->services[j].n_clients);
+			if(strlen(sname) == MAX_TASK_NAME-4-1)
+			{
+				strcpy(str,buffer->services[j].name);
+				if( (ptr = strstr(str,"/CLIENT_LIST")) )
+				{
+					*ptr = '\0';
+					strcpy(sname,str);
+				}
+			}
+		}
+	}
+	if (!(servp = find_server(buffer->server.node,buffer->server.pid)))
+	  /*
+	if(!(servp = (SERVER *)sll_search((SLL *)Server_head, 
+		(char *)&buffer->server, MAX_NODE_NAME+MAX_TASK_NAME-4)))
+	  */
+	{
+		if(n_services)
+		{
+			servp = (SERVER *)malloc(sizeof(SERVER));
+			strcpy(servp->name,sname);
+			servp->next = 0;
+			servp->button_id = 0;
+			servp->pop_widget_id[0] = 0;
+			servp->pop_widget_id[1] = 0;
+			servp->busy = 0;
+			servp->server.n_services = 0;
+			servp->service_ptr = 0;
+			sll_insert_queue((SLL *)Server_head,(SLL *)servp);
+		}
+	}
+	if(n_services != 0)
+	{
+		if(n_services == servp->server.n_services)
+		{
+			return;
+		}
+		if(servp->server.n_services == 0)
+			N_servers++;
+		if(servp->server.n_services != -1)
+			N_services -= servp->server.n_services;
+		memcpy(&servp->server,&buffer->server,sizeof(DNS_SERVER_INFO));
+		if(servp->service_ptr)
+		{
+			free(servp->service_ptr);
+			servp->service_ptr = 0;
+		}
+		if(n_services != -1)
+		{
+			service_size = n_services*(int)sizeof(DNS_SERVICE_INFO);
+			servp->service_ptr = (DNS_SERVICE_INFO *)malloc((size_t)service_size);
+			memcpy(servp->service_ptr, buffer->services, (size_t)service_size);
+			N_services += n_services;
+		}
+		servp->busy = 1;
+	}
+	else
+	{
+	  if(servp)
+	    {
+		N_servers--;
+		if(servp->server.n_services != -1)
+		  {
+			N_services -= servp->server.n_services;
+		  }
+		else
+		  Force_update = 1;
+		servp->server.n_services = 0;
+		servp->busy = -1;
+	    }
+	}
+}
+
+void show_servers()
+{
+SERVER *servp;
+void update_show_servers();
+void remove_all_buttons();
+void put_label();
+
+	if(!Matrix_id[Curr_matrix])
+		return;
+	remove_all_buttons();
+	
+#ifndef linux	
+	switch_matrix();
+#endif
+	put_label();
+	servp = Server_head;
+	while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+	{
+	  servp->busy = 1;
+	}
+	Force_update = 1;                
+}
+
+void update_show_servers(void *tag, unsigned long *reason)
+{
+DNS_SERVER_INFO *server_ptr;
+DNS_SERVICE_INFO *service_ptr;
+int i, j, found, n_done = 0;
+Widget w, create_button();
+SERVER *servp, *prevp;
+static int old_n_services = 0;
+char node[MAX_NODE_NAME], par[MAX_NODE_NAME], *ptr;
+void remove_button();
+void remove_all_buttons();
+void put_label();
+
+    DISABLE_AST
+	if(tag){}
+	if(reason){}
+    if((N_services != old_n_services) || (Force_update))
+    {
+        if(!Matrix_id[Curr_matrix])
+	{
+	    XtAppAddTimeOut(app_context, 1000, update_show_servers, 0);
+	    ENABLE_AST
+	    return;
+	}
+	if(!N_servers)
+	{
+		remove_all_buttons();
+		if(! No_link_button_id)
+		{
+			No_link_button_id = create_button("DNS is down", 0);
+			set_color(No_link_button_id, XmNbackground, RED);
+		        get_something(No_link_button_id,XmNuserData,&w);
+			set_color(w, XmNbackground, RED);
+			XtSetSensitive(No_link_button_id, False);
+		}
+		while(!sll_empty((SLL *)Server_head))
+		{
+			servp = (SERVER *)sll_remove_head((SLL *)Server_head);
+			if(servp->service_ptr)
+				free(servp->service_ptr);
+			free(servp);
+		}
+		put_label();
+		old_n_services = N_services;
+		Force_update = 0;
+		XtAppAddTimeOut(app_context, 1000, update_show_servers, 0); 
+		ENABLE_AST
+		return;
+	}
+	if(No_link_button_id)
+	{
+		XtDestroyWidget(No_link_button_id);
+		/*
+		XFlush(XtDisplay(No_link_button_id));
+		*/
+		No_link_button_id = 0;
+        }
+	servp = Server_head;
+	prevp = 0;
+	while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+	{
+		if(prevp)
+		{
+			free(prevp);
+			prevp = 0;
+		}
+		if(n_done == 10)
+		{
+		    if(!Force_update)
+		        put_label();
+		    XtAppAddTimeOut(app_context, 100, update_show_servers, 0);
+		    ENABLE_AST
+		    return;
+		}
+		server_ptr = &servp->server;
+		if(servp->busy == 1)
+		{
+			if(!servp->button_id)
+			{
+			switch(Curr_view_opt)
+			{
+				case 1 :
+				  servp->button_id = create_button(/*server_ptr->task*/servp->name, servp);
+					n_done++;
+					break;
+				case 0 :
+				  strcpy(node, server_ptr->node);
+				  strcpy(par, Curr_view_opt_par);
+				  if(!isdigit(node[0]))
+				  {
+					ptr = strchr(node, '.');
+					if(ptr)
+						*ptr = '\0';
+					ptr = strchr(par,'.');
+					if(ptr)
+						*ptr = '\0';
+				  }
+				  ptr = node;
+				  for(i = 0; i < (int)strlen(ptr); i++)
+				    ptr[i] = (char)tolower((int)ptr[i]);
+				  ptr = par;
+				  for(i = 0; i < (int)strlen(ptr); i++)
+				    ptr[i] = (char)tolower((int)ptr[i]);
+					 if(!strcmp(/*server_ptr->*/node, /*Curr_view_opt_*/par))
+					{
+						servp->button_id = create_button(/*server_ptr->task*/servp->name, servp);
+						n_done++;
+					}
+					break;
+				case 2 :
+					found = 0;
+					if(!(service_ptr = servp->service_ptr))
+						break;
+					for(j = 0; j < server_ptr->n_services; j++)
+					{
+						if(strstr(service_ptr->name, Curr_view_opt_par) > (char *)0)
+						{
+							found = 1;
+							break;
+						}
+						service_ptr++;
+					}
+					if (found)
+					  {
+						servp->button_id = create_button(/*server_ptr->task*/servp->name, servp);
+						n_done++;
+					  }
+					break;
+				case 3 :
+					if(server_ptr->n_services == -1)
+					{
+						servp->button_id = create_button(/*server_ptr->task*/servp->name, servp);
+						n_done++;
+					}
+					else
+					{
+						if(servp->button_id)
+							remove_button(servp);
+					}
+					n_done++;
+					break;
+			}
+			}
+			servp->busy = 2;
+			if(servp->button_id)
+			{
+				if(Curr_view_opt != -1)
+				{
+					if (server_ptr->n_services == -1)
+					{
+						set_color(servp->button_id, XmNbackground, RED);
+						get_something(servp->button_id,XmNuserData,&w);
+						set_color(w, XmNbackground, RED);
+					}
+					else
+					{
+						set_color(servp->button_id, XmNbackground, GREEN);
+						get_something(servp->button_id,XmNuserData,&w);
+						set_color(w, XmNbackground, GREEN);					 
+					}
+				}
+			}
+		}
+		else if (servp->busy == -1)
+		{
+			remove_button(servp);
+			sll_remove((SLL *)Server_head, (SLL *)servp);
+			if(servp->service_ptr)
+			{
+				free(servp->service_ptr);
+				servp->service_ptr = 0;
+			}
+			prevp = servp;
+			n_done++;
+		}
+	}
+	if(prevp)
+	{
+		free(prevp);
+		prevp = 0;
+	}
+	put_label();
+	old_n_services = N_services;
+	Force_update = 0;
+    }
+    XtAppAddTimeOut(app_context, 1000, update_show_servers, 0);
+    ENABLE_AST
+}
+
+Widget create_button(char *name, SERVER *servp)
+{
+Arg arglist[10];
+int n;
+/*
+int n_services = -1;
+*/
+Widget w, ww, w_id;
+void activate_services(), activate_clients();
+char w_name[MAX_NAME];
+	
+	w_name[0] = 0;
+/*
+	if(servp)
+		n_services = servp->server.n_services;
+*/
+    strcpy(w_name,name);
+	if(strlen(w_name) >= MAX_TASK_NAME - 4)
+	  w_name[16] = '\0';
+	n = 0;
+    XtSetArg(arglist[n], XmNorientation, XmVERTICAL);  n++;
+    XtSetArg(arglist[n], XmNentryAlignment, XmALIGNMENT_CENTER);  n++;
+	w_id = w = XmCreateMenuBar(Matrix_id[Curr_matrix],
+				(String)XmStringCreateLtoR ( w_name,XmSTRING_DEFAULT_CHARSET),
+				arglist,(Cardinal)n);
+/*				
+	if(n_services == -1)
+		set_color(w, XmNbackground, RED);
+	else
+		set_color(w, XmNbackground, GREEN);
+*/
+	XtManageChild(w);
+	strcat(w_name,"1"); 
+	n = 0;
+    XtSetArg(arglist[n], XmNalignment, XmALIGNMENT_CENTER);  n++;
+	XtSetArg(arglist[n], XmNfontList, did_server_font);  n++;
+	w = XmCreateCascadeButton(w,
+				(String)XmStringCreateLtoR ( w_name,XmSTRING_DEFAULT_CHARSET),
+				arglist,(Cardinal)n);
+	set_something(w,XmNlabelString,name);
+	set_something(w,XmNalignment,XmALIGNMENT_CENTER);
+/*
+	if(n_services == -1)
+		set_color(w, XmNbackground, RED);
+	else
+		set_color(w, XmNbackground, GREEN);
+*/
+	set_something(w_id,XmNuserData,w);
+	strcat(w_name,"1"); 
+		n = 0;
+		ww = XmCreatePulldownMenu(w_id,
+				(String)XmStringCreateLtoR ( w_name,XmSTRING_DEFAULT_CHARSET),
+				arglist,(Cardinal)n);
+		set_something(w,XmNsubMenuId,ww);
+		XtManageChild(w);
+		strcat(w_name,"1"); 
+		n = 0;
+		XtSetArg(arglist[n], XmNfontList, did_default_font);  n++;
+		w = XmCreatePushButton(ww,
+				(String)XmStringCreateLtoR ( w_name,XmSTRING_DEFAULT_CHARSET),
+				arglist,(Cardinal)n);
+
+		set_something(w,XmNlabelString,"Services");
+	if(servp)
+	{
+		XtAddCallback(w,XmNactivateCallback, activate_services, servp);
+		XtManageChild(w);
+		strcat(w_name,"1"); 
+		n = 0;
+		XtSetArg(arglist[n], XmNfontList, did_default_font);  n++;
+		w = XmCreatePushButton(ww,
+				(String)XmStringCreateLtoR ( w_name,XmSTRING_DEFAULT_CHARSET),
+				arglist,(Cardinal)n);
+
+		set_something(w,XmNlabelString,"Clients");
+		XtAddCallback(w,XmNactivateCallback, activate_clients, servp);
+		XtManageChild(w);
+		/*
+		servp->popping = 0;
+		create_client_popup(servp);
+		*/
+	}
+	return(w_id);
+}
+
+void remove_all_buttons()
+{
+SERVER *servp;
+
+	servp = Server_head;
+	while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+	{
+		if(servp->button_id)
+		{
+			XtDestroyWidget(servp->button_id);
+			servp->button_id = 0;
+			servp->busy = 0;
+		}
+	}
+}
+
+void remove_button(SERVER *servp)
+{
+
+	if(servp->button_id)
+	{
+		XtDestroyWidget(servp->button_id);
+		servp->button_id = 0;
+		servp->busy = 0;
+	}
+}
+
+void activate_services(Widget w, SERVER *servp, unsigned long *reason)
+{
+DNS_SERVER_INFO *ptr;
+char str[MAX_NAME];
+Widget id,sel_id;
+void got_service_list();
+void kick_it();
+
+	if(w){}
+	if(reason){}
+	if(servp->pop_widget_id[0])
+	{
+		XtDestroyWidget(servp->pop_widget_id[0]);
+		servp->pop_widget_id[0] = 0;
+		/*
+		return;
+		*/
+	}
+	Curr_servp = servp;
+	ptr = &servp->server;
+
+	sel_id = put_popup(servp, 0,"Service Info");
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_OK_BUTTON);
+	XtUnmanageChild(id);
+	
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST_LABEL);
+	if (ptr->pid > 0x1000000)
+		sprintf(str,"Server %s (pid = %X) on node %s\n\nprovides %d services :\n",
+			servp->name, ptr->pid, ptr->node, ptr->n_services);
+	else
+		sprintf(str,"Server %s (pid = %d) on node %s\n\nprovides %d services :\n",
+			servp->name, ptr->pid, ptr->node, ptr->n_services);
+	set_something(sel_id,XmNlistLabelString,str);
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST);
+	Curr_service_list_id = id;
+
+	XmListAddItem(id,create_str(
+          "Ordering services alphabeticaly, please be patient..."),1);
+
+	set_something(id,XmNlistItemCount,1);
+	set_something(id,XmNlistVisibleItemCount,1);
+	
+	sprintf(str,"%s/SERVICE_LIST",/*ptr->task*/servp->name);
+	dic_info_service(str,ONCE_ONLY,20,0,0,
+			 got_service_list,(long)servp,"None",5);
+	/*
+#ifdef solaris
+	*/
+	/*
+	XtAppAddTimeOut(app_context, 1000, kick_it, 0);
+	*/
+	/*
+#endif
+	*/
+}
+
+void kick_it()
+{
+  printf("kick_it\n");
+}
+
+typedef char DID_SLOT[MAX_NAME];
+
+void got_service_list(SERVER **servp_ptr, char *buffer, int *size)
+{
+SERVER *servp;
+void do_got_service_list();
+
+	if(size){}
+	servp = *servp_ptr;
+	if(Curr_service_list)
+	  free(Curr_service_list);
+	Curr_service_list = malloc(strlen(buffer)+1);
+	strcpy(Curr_service_list, buffer);
+	/*
+#ifdef solaris
+	*/
+	Got_Service_List = servp;
+	/*
+#else
+	do_got_service_list(servp);
+#endif
+	*/
+}
+
+void do_got_service_list(SERVER *servp)
+{
+char cmd_str[256], svc_str[256];
+DNS_SERVER_INFO *ptr;
+DNS_SERVICE_INFO *service_ptr;
+Widget id;
+char *curr_str, max_str[MAX_NAME], *sptr;
+DID_SLOT *service_list;
+int i, j, curr_index = 0, n_services;
+XmString xstr;
+void delete_str();
+
+	ptr = &servp->server;
+	id = Curr_service_list_id;
+	
+	XmListDeleteAllItems(id);
+	
+	strcpy(cmd_str,"CMD: ");
+	strcpy(svc_str,"SVC: ");
+
+	service_ptr = servp->service_ptr;
+	service_list = (DID_SLOT *)malloc((size_t)(ptr->n_services * MAX_NAME));
+	n_services = ptr->n_services;
+
+	for(i=0;i<n_services; i++)
+	{
+	  strcpy(service_list[i],service_ptr->name);
+	  service_ptr++;
+	}
+	strcpy(max_str,"zzzzzzzzzzzzzzzzzzzzzzzzzzzz");
+	for(i=0;i<n_services; i++)
+	{
+	  curr_str = max_str;
+	  for(j=0;j<n_services; j++)
+	  {
+	    sptr = service_list[j];
+	    if(!*sptr)
+	      continue;
+	    
+	    if(strcmp(sptr,curr_str) < 0)
+	    {
+	      curr_str = sptr;
+	      curr_index = j;
+	    }
+	  }
+	  service_list[curr_index][0] = '\0';
+	  service_ptr = &(servp->service_ptr[curr_index]);
+	  if(service_ptr->type)
+	  {
+	    strcpy(&cmd_str[5],service_ptr->name);
+	    xstr = create_str(cmd_str);
+	    XmListAddItem(id,xstr,i+1);
+	    delete_str(xstr);
+	  }
+	  else
+	  {
+	    strcpy(&svc_str[5],service_ptr->name);
+	    xstr = create_str(svc_str);
+	    XmListAddItem(id,xstr,i+1);
+	    delete_str(xstr);
+	  }
+	}
+	free(service_list);
+	
+	set_something(id,XmNlistItemCount,i);
+	set_something(id,XmNlistVisibleItemCount,(i < 20) ? i : 20);
+}
+
+void show_clients(SERVER **servp_ptr, char *buffer, int *size)
+{
+SERVER *servp;
+void do_show_clients();
+
+	if(size){}
+	servp = *servp_ptr;
+	if(Curr_client_list)
+	  free(Curr_client_list);
+	Curr_client_list = malloc(strlen(buffer)+1);
+	strcpy(Curr_client_list, buffer);
+	/*
+#ifdef solaris
+	*/
+	Got_Client_List = servp;
+	/*
+#else
+	do_show_clients(servp);
+#endif
+	*/
+}
+
+void do_show_clients(SERVER *servp)
+{
+int i = 0;
+char str[2048], *strp, *strp1;
+XmString xstr;
+void delete_str();
+
+/*
+DNS_SERVER_INFO *ptr;
+	ptr = &servp->server;
+	sel_id = servp->pop_widget_id[1];
+	id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST_LABEL);
+*/
+	if(servp){}
+	if(Curr_client_list[0] == -1) 
+	{
+		sprintf(str,"Information not available\n");
+		XmListAddItem(Curr_client_id,create_str(str),i+1);
+		/*
+		set_something(sel_id,XmNlistLabelString,str);
+		*/
+		return;
+	}
+	/*
+	sprintf(str,"Clients of %s are :                                  \n",
+	ptr->task);
+	set_something(sel_id,XmNlistLabelString,str);
+	
+	id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST);
+	XmListDeleteAllItems(id);
+	*/
+	strp1 = Curr_client_list;
+	while(strp1) 
+	{
+		if(!*strp1)
+			break;
+		sprintf(str,"Process ");
+		strp = strp1;
+		strp1 = strchr(strp,'@');
+		*strp1 = '\0';
+		strp1++;
+		strcat(str,strp);
+		strcat(str," on node ");
+		strp = strp1;
+		if( (strp1 = strchr(strp,'|')) )
+		{
+			*strp1 = '\0';
+			strp1++;
+		}
+		strcat(str,strp);	
+		xstr = create_str(str);
+		XmListAddItem(Curr_client_id,xstr,i+1);
+		delete_str(xstr);
+       		i++;
+	}
+	if(!i)
+	{
+		sprintf(str,"NONE");
+		xstr = create_str(str);
+		XmListAddItem(Curr_client_id,xstr,i+1);
+		delete_str(xstr);
+	}
+	/*
+	set_something(id,XmNlistItemCount,i);
+	*/
+	/*
+	if(Matrix_id[Curr_matrix])
+	  XFlush(XtDisplay(Matrix_id[Curr_matrix]));
+	*/
+}
+
+void activate_clients(Widget w, SERVER *servp, unsigned long *reason)
+{
+/*
+DNS_SERVER_INFO *ptr;
+*/
+char str[100];
+void show_clients();
+void kick_it_again();
+Widget id,sel_id;
+
+	if(w) {}
+	if(reason){}
+	Curr_servp = servp;
+/*
+	ptr = &servp->server;
+*/
+	if(servp->pop_widget_id[1])
+	  {
+		XtDestroyWidget(servp->pop_widget_id[1]);
+		servp->pop_widget_id[1] = 0;
+	  }
+	sel_id = put_popup(servp,1,"Client Info");
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_HELP_BUTTON);
+	XtUnmanageChild(id);
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_APPLY_BUTTON);
+	XtUnmanageChild(id);
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_CANCEL_BUTTON);
+	XtUnmanageChild(id);
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_TEXT);
+	XtUnmanageChild(id);
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_SELECTION_LABEL);
+	XtUnmanageChild(id);
+	/*
+	id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST_LABEL);
+	*/
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST);
+	XmListDeleteAllItems(id);
+
+	Curr_client_id = id;
+	sprintf(str,"Clients of %s are :                                   \n",
+		servp->name);
+	set_something(sel_id,XmNlistLabelString,str);
+
+	sprintf(str,"%s/CLIENT_LIST",/*ptr->task*/servp->name);
+	dic_info_service(str,ONCE_ONLY,10,0,0,
+			 show_clients,(long)servp,&no_link,1);
+	/*
+#ifdef solaris
+	*/
+	/*
+	XtAppAddTimeOut(app_context, 1000, kick_it_again, 0); 
+	*/
+	/*
+#endif
+	*/
+}
+
+void kick_it_again()
+{
+  printf("kick_it_again\n");
+}
+
+Widget put_popup(SERVER *servp, int type, char *title)
+{
+    Widget id;
+    void activate_services(), activate_clients();
+	extern void set_title();
+
+		if(type)
+		{
+		    id = create_client_dialog();
+		    /*
+		    XtAddCallback(id,XmNokCallback, activate_clients, servp);
+		    XtAddCallback(id,XmNcancelCallback, activate_clients, servp);
+		    */
+		}
+		else
+		{
+		    id = create_server_dialog();
+		    /*
+		    XtAddCallback(id,XmNcancelCallback, activate_services, servp);
+		    */
+		}
+		servp->pop_widget_id[type] = id;
+		/*
+	}
+		*/
+	XtManageChild(id);
+	set_title(XtParent(id),title);
+	return(id);
+}	
+
+Widget put_selection(int tag, char *title)
+{
+    Widget id = 0;
+	extern void set_title();
+
+    if(pop_widget_id[tag])
+    {
+		XtDestroyWidget(pop_widget_id[tag]);
+    }
+	  switch(tag)
+	  {
+	    case DID_SEL_NODE:
+	      id = create_node_selection();
+	      break;
+	    case DID_SEL_SERVICE:
+	      id = create_service_selection();
+	      break;
+	    case DID_KILL_ALL:
+	      id = create_kill_confirmation();
+	      break;
+	    case DID_SERVICE:
+	      id = create_service_dialog();
+	      break;
+	    case DID_COMMAND:
+	      id = create_send_command();
+	      break;
+	  }
+	  
+	   pop_widget_id[tag] = id;
+	XtManageChild(id);
+	set_title(XtParent(id),title);
+	return(id);
+}	
+
+void check_put_label(int tag)
+{
+	static int old_n_services = 0;
+/*
+	static int changing = 0;
+*/
+	void put_label();
+
+	if(tag){}
+	if(N_services != old_n_services)
+	{
+		put_label();
+/*
+		if(N_services > old_n_services)
+		  changing = 1;
+*/
+		old_n_services = N_services;
+	
+#ifdef linux
+		show_servers();
+#endif
+	}
+/*
+	else
+	{
+	  if(changing)
+	  {
+	    show_servers();
+	    changing = 0;
+	  }
+	}
+*/
+}
+
+void put_label()
+{
+	char str[MAX_NAME], str1[MAX_NAME];
+			
+	DISABLE_AST
+	sprintf(str,"%d Servers known - %d Services Available\n",
+		N_servers,N_services);
+	switch(Curr_view_opt)
+	{
+		case 1 :
+			strcat(str,"Displaying ALL Servers");
+			break;
+		case 0 :
+			sprintf(str1,"Displaying Servers on node %s",Curr_view_opt_par);
+			strcat(str,str1);
+			break;
+		case 2 :
+			sprintf(str1,"Displaying Servers providing Service *%s*",
+				Curr_view_opt_par);
+			strcat(str,str1);
+			break;
+		case 3 :
+			strcat(str,"Displaying Servers in ERROR");
+			break;
+		case -1 :
+			strcat(str,"Please Select Viewing Option");
+			break;
+	}
+	set_something(Label_id,XmNlabelString,str);
+	XFlush(XtDisplay(Label_id));
+	ENABLE_AST
+}
+
+Widget create_client_dialog()
+{
+  Widget id;
+  id = create_selection_dialog("Dismiss","","","","",DID_CLIENTS, 3);
+  return(id);
+  
+}
+
+Widget create_server_dialog()
+{
+  Widget id;
+  id = create_selection_dialog("","View / Send","Dismiss","",
+			       "Service / Command :",
+			       DID_SERVICES, 20);
+  return(id);
+}
+
+Widget create_node_selection()
+{
+  Widget id;
+  id = create_selection_dialog("","","","Nodes :","Selected Node :",DID_SEL_NODE, 8);
+  return(id);
+  
+}
+
+Widget create_service_selection()
+{
+  Widget id;
+  /*
+  id = create_prompt_dialog("Enter Service Name :",DID_SEL_SERVICE);
+  */
+  id = create_selection_dialog("","","","","Enter Service Name (or search string):",DID_SEL_SERVICE, 0);
+  return(id);
+  
+}
+
+Widget create_send_command()
+{
+  Widget id;
+  char str[256], str1[256];
+
+  sprintf(str,"Command to %s (%s)\n\n",
+	  Curr_service_name, Curr_service_format);
+
+  id = create_selection_dialog("","","",str,"Command:",DID_COMMAND, 1);
+
+  strcpy(str1,"Please enter items separated by spaces:\n(for example: 2 0x123 'A' 23.4 \"a text\")");
+
+  set_something(id,XmNselectionLabelString,str1);
+
+  return(id);
+  
+}
+
+Widget create_kill_confirmation()
+{
+  Widget id;
+  id = create_question_dialog("Do you really want to kill ALL DIM servers ?",
+			      DID_KILL_ALL);
+  return(id);
+  
+}
+
+Widget create_selection_dialog(char *ok, char *apply, char *cancel, char *list, char *sel, 
+							   long tag, int items)
+{
+Widget sd;
+XmString xmOk, xmApply, xmCancel, xmList, xmSelection;
+Arg ar[20];
+int n;
+        
+    xmList = create_str(list);
+    xmOk = create_str(ok);
+    xmApply = create_str(apply);
+    xmCancel = create_str (cancel);
+    xmSelection = create_str (sel);
+
+    n = 0;
+    /*
+    XtSetArg(ar[n],XmNdialogStyle,XmDIALOG_FULL_APPLICATION_MODAL); n++;
+    XtSetArg(ar[n],XmNmwmFunctions,MWM_FUNC_MOVE); n++;
+    */
+    XtSetArg(ar[n],XmNtitle,"Selection"); n++;
+    XtSetArg(ar[n],XmNlabelFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNbuttonFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNtextFontList, did_small_font); n++;
+    XtSetArg(ar[n],XmNborderWidth, 1); n++;
+    XtSetArg(ar[n],XmNlistLabelString, xmList); n++;
+    XtSetArg(ar[n],XmNlistVisibleItemCount,items); n++;
+    if(ok[0])
+      {
+      XtSetArg(ar[n],XmNokLabelString, xmOk); n++;
+      }
+    if(apply[0])
+      {
+      XtSetArg(ar[n],XmNapplyLabelString, xmApply); n++; 
+      }
+    if(cancel[0])
+      {
+      XtSetArg(ar[n],XmNcancelLabelString, xmCancel); n++;
+      }
+    if(sel[0])
+      {
+      XtSetArg(ar[n],XmNselectionLabelString, xmSelection); n++;
+      }
+    sd = XmCreateSelectionDialog ( toplevel_widget, "Selection", ar, (Cardinal)n );
+    XmStringFree(xmList);
+    XmStringFree(xmOk);
+    XmStringFree(xmApply);
+    XmStringFree(xmCancel);
+    XmStringFree(xmSelection);
+    if(tag >= 0)
+      {
+	  XtAddCallback ( sd, XmNcancelCallback, 
+		(XtCallbackProc)cancel_pop_up, (XtPointer)tag );
+	  XtAddCallback ( sd, XmNapplyCallback, 
+		(XtCallbackProc)ok_pop_up, (XtPointer)tag );
+	  XtAddCallback ( sd, XmNokCallback, 
+		(XtCallbackProc)ok_pop_up, (XtPointer)tag );
+      }
+    return(sd);
+}
+
+Widget create_file_selection_dialog(long type)
+{
+Widget sd;
+XmString xm1;
+Arg ar[20];
+int n;
+        
+    xm1 = create_str ("");
+    n = 0;
+    /*
+    XtSetArg(ar[n],XmNdialogStyle,XmDIALOG_FULL_APPLICATION_MODAL); n++;
+    XtSetArg(ar[n],XmNmwmFunctions,MWM_FUNC_MOVE); n++;
+    */
+    XtSetArg(ar[n],XmNtitle,"FileSelection"); n++;
+    XtSetArg(ar[n],XmNlabelFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNbuttonFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNtextFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNborderWidth, 1); n++;
+    XtSetArg(ar[n],XmNwidth, 500); n++;
+    XtSetArg(ar[n],XmNdirMask, xm1); n++;
+    sd = XmCreateFileSelectionDialog ( toplevel_widget, "FileSelection", ar, (Cardinal)n );
+    
+    XmStringFree(xm1);
+
+    XtAddCallback ( sd, XmNcancelCallback, 
+		(XtCallbackProc)cancel_pop_up, (XtPointer)type );
+    XtAddCallback ( sd, XmNokCallback, 
+		(XtCallbackProc)ok_pop_up, (XtPointer)type );
+
+	return(sd);
+}
+
+Widget create_prompt_dialog(char *label, long tag)
+{
+Widget sd;
+XmString xm1;
+Arg ar[20];
+int n;
+        
+    xm1 = create_str (label);
+    n = 0;
+    XtSetArg(ar[n],XmNlabelFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNbuttonFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNborderWidth, 1); n++;
+    /*
+    XtSetArg(ar[n],XmNwidth, 450); n++;
+    XtSetArg(ar[n],XmNresizePolicy, XmRESIZE_NONE); n++;
+    */
+    XtSetArg(ar[n],XmNselectionLabelString, xm1); n++;
+    sd = XmCreatePromptDialog ( toplevel_widget, "Prompt", ar, (Cardinal)n );
+    
+    XmStringFree(xm1);
+
+    XtAddCallback ( sd, XmNcancelCallback, 
+		(XtCallbackProc)cancel_pop_up, (XtPointer)tag );
+    XtAddCallback ( sd, XmNokCallback, 
+		(XtCallbackProc)ok_pop_up, (XtPointer)tag );
+
+	return(sd);
+}
+
+Widget create_question_dialog(char *label, long tag)
+{
+Widget sd;
+XmString xm1;
+Arg ar[20];
+int n;
+        
+    xm1 = create_str (label);
+    n = 0;
+    XtSetArg(ar[n],XmNlabelFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNbuttonFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNborderWidth, 1); n++;
+    /*
+    XtSetArg(ar[n],XmNwidth, 450); n++;
+    XtSetArg(ar[n],XmNresizePolicy, XmRESIZE_NONE); n++;
+    */
+    XtSetArg(ar[n],XmNmessageString, xm1); n++;
+    sd = XmCreateQuestionDialog ( toplevel_widget, "Question", ar, (Cardinal)n );
+    
+    XmStringFree(xm1);
+
+    XtAddCallback ( sd, XmNcancelCallback, 
+		(XtCallbackProc)cancel_pop_up, (XtPointer)tag );
+    XtAddCallback ( sd, XmNokCallback, 
+		(XtCallbackProc)ok_pop_up, (XtPointer)tag );
+
+	return(sd);
+}
+
+Widget create_service_dialog()
+{
+Widget fd, rc, sw, lb, rc1;
+XmString xm1;
+Arg ar[20];
+int n, par;
+unsigned long reason;
+        
+    n = 0; 
+    XtSetArg(ar[n],XmNborderWidth, 1); n++;
+    XtSetArg(ar[n],XmNresizePolicy, XmRESIZE_ANY); n++;
+    fd = XmCreateFormDialog ( toplevel_widget, "Form", ar, (Cardinal)n );
+    XtManageChild(fd);
+
+    /* create rowcolumn */
+    n = 0; 
+    XtSetArg(ar[n],XmNborderWidth, 1); n++;
+    XtSetArg(ar[n],XmNentryAlignment, XmALIGNMENT_CENTER); n++;
+    XtSetArg(ar[n],XmNbottomAttachment, XmATTACH_FORM); n++;
+    XtSetArg(ar[n],XmNbottomOffset, 0); n++;
+    XtSetArg(ar[n],XmNrightAttachment, XmATTACH_FORM); n++;
+    XtSetArg(ar[n],XmNrightOffset, 0); n++;
+    XtSetArg(ar[n],XmNtopAttachment, XmATTACH_FORM); n++;
+    XtSetArg(ar[n],XmNtopOffset, 0); n++;
+    XtSetArg(ar[n],XmNleftAttachment, XmATTACH_FORM); n++;
+    XtSetArg(ar[n],XmNleftOffset, 0); n++;
+    rc = XmCreateRowColumn ( fd, "rowcol", ar, (Cardinal)n );
+    XtManageChild(rc);
+
+    /* create scrolled window */
+    n = 0;	    
+    XtSetArg ( ar[n], XmNwidth, 770); n++;
+    XtSetArg ( ar[n], XmNheight, 350); n++;
+    XtSetArg ( ar[n], XmNscrollBarDisplayPolicy, XmAS_NEEDED); n++;
+    XtSetArg ( ar[n], XmNscrollingPolicy, XmAUTOMATIC); n++;
+
+    sw = XmCreateScrolledWindow ( rc, "ScrollWin", ar, (Cardinal)n );
+    XtManageChild ( sw );
+
+    /* create label */
+    n = 0; 
+    xm1 = create_str(" ");
+    XtSetArg(ar[n],XmNfontList, did_small_font); n++;
+    XtSetArg(ar[n],XmNlabelString, xm1); n++;
+    XtSetArg(ar[n],XmNalignment, XmALIGNMENT_BEGINNING); n++;
+    lb = XmCreateLabel ( sw, "label", ar, (Cardinal)n );
+    XtManageChild(lb);
+    XmStringFree(xm1);
+    par = 1;
+    reason = 0;
+    create_label(lb, &par, &reason);
+
+    /* create button rowcolumn */
+    n = 0; 
+    XtSetArg(ar[n],XmNborderWidth, 0); n++;
+    XtSetArg(ar[n],XmNentryAlignment, XmALIGNMENT_CENTER); n++;
+    XtSetArg(ar[n],XmNorientation, XmVERTICAL); n++;
+    XtSetArg(ar[n],XmNnumColumns, 3); n++;
+    XtSetArg(ar[n],XmNpacking, XmPACK_COLUMN); n++;
+    rc1 = XmCreateRowColumn ( rc, "buttons", ar, (Cardinal)n );
+    XtManageChild(rc1);
+    /*    
+    create_push_button(rc1,"View Standard",MAX_POP_UPS+1); 
+    create_push_button(rc1,"View Float",MAX_POP_UPS+2); 
+    create_push_button(rc1,"View Double",MAX_POP_UPS+3); 
+    */
+    SubscribeButton = create_push_button(rc1,"            Subscribe (On Change)            ",
+		       MAX_POP_UPS+5); 
+  Subscribe10Button = create_push_button(rc1,"      Subscribe (Update Rate 10 seconds)     ",
+		       MAX_POP_UPS+4); 
+    create_push_button(rc1,"Dismiss",DID_SERVICE);
+    Curr_service_print_type = 0;
+
+    return(fd);
+}
+
+Widget create_push_button(Widget parent, char *str, long tag)
+{
+Widget b;
+XmString xm1;
+Arg ar[20];
+int n;
+        
+    n = 0; 
+    xm1 = create_str(str);
+    XtSetArg(ar[n],XmNalignment, XmALIGNMENT_CENTER); n++;
+    XtSetArg(ar[n],XmNfontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNlabelString, xm1); n++;
+    b = XmCreatePushButton ( parent, "button", ar, (Cardinal)n );
+ 
+    XtManageChild(b);
+    XmStringFree(xm1);
+
+    XtAddCallback ( b, XmNactivateCallback, 
+		(XtCallbackProc)cancel_pop_up, (XtPointer)tag ); 
+    return(b);
+}
+
Index: branches/testFACT++branch/dim/src/did/did.h
===================================================================
--- branches/testFACT++branch/dim/src/did/did.h	(revision 18277)
+++ branches/testFACT++branch/dim/src/did/did.h	(revision 18277)
@@ -0,0 +1,95 @@
+#include <Mrm/MrmAppl.h>                /* Motif Toolkit and MRM */
+#include <Xm/Xm.h>
+#include <Xm/RowColumn.h>
+#include <Xm/MainW.h>
+#include <Xm/Form.h>
+#include <Xm/Label.h>
+#include <Xm/ScrolledW.h>
+#include <Xm/Separator.h>
+#include <Xm/CascadeB.h>
+#include <Xm/PushB.h>
+#include <Xm/SelectioB.h>
+#include <Xm/FileSB.h>
+#include <Xm/MessageB.h>
+#include <Xm/Text.h>
+#include <Xm/List.h>
+#include <dui_colors.h>
+/* VUIT routines for the user to call */
+void s_error();
+/*
+#define LABEL_FONT "-*-NEW CENTURY SCHOOLBOOK-BOLD-R-*--*-140-*-*-*-*-ISO8859-1"
+#define DEFAULT_FONT "-*-TIMES-BOLD-R-*--*-120-*-*-*-*-ISO8859-1"
+
+#define MENU_FONT "-*-TIMES-BOLD-R-*--*-120-*-*-*-*-ISO8859-1"
+*/
+#define LABEL_FONT "-*-HELVETICA-BOLD-R-*--*-120-*-*-*-*-ISO8859-1"
+
+#define DEFAULT_FONT "-*-HELVETICA-BOLD-R-*--*-100-*-*-*-*-ISO8859-1"
+
+#define MENU_FONT "-*-COURIER-BOLD-R-*--*-100-*-*-*-*-ISO8859-1"
+
+#define SERVER_FONT "-*-TIMES-BOLD-R-*--*-100-*-*-*-*-ISO8859-1"
+
+typedef enum { DID_SERVICES, DID_CLIENTS, DID_SEL_NODE, DID_SEL_SERVICE, 
+    DID_KILL_ALL, DID_SERVICE, DID_COMMAND, MAX_POP_UPS } POPUPS; 
+
+/* Motif Global variables */
+Display         *display;			/* Display variable */
+XtAppContext    app_context;		/* application context */
+Widget			toplevel_widget;	/* Root widget ID of application */
+MrmHierarchy	s_MrmHierarchy;		/* MRM database hierarchy ID */
+
+typedef struct item{
+    struct item *next;
+	DNS_SERVER_INFO server;
+	DNS_SERVICE_INFO *service_ptr;
+        char name[132];
+	Widget button_id;
+	Widget pop_widget_id[2];
+  /*
+	int popping;
+  */
+	int busy;
+}SERVER;
+
+SERVER *Server_head = (SERVER *)0;
+
+Widget Matrix_id[2] = {0, 0};
+int Curr_matrix;
+Widget Label_id = 0;
+Widget Content_label_id = 0;
+Widget Window_id = 0;
+Widget pop_widget_id[MAX_POP_UPS] = {0,0,0,0,0,0,0};
+Widget No_link_button_id;
+
+XmString create_str();
+XmFontList util_get_font();
+
+Widget create_selection_dialog();
+Widget create_file_selection_dialog();
+Widget create_prompt_dialog();
+Widget create_question_dialog();
+Widget create_service_dialog();
+Widget create_server_dialog();
+Widget create_client_dialog();
+Widget create_node_selection();
+Widget create_service_selection();
+Widget create_kill_confirmation();
+Widget create_send_command();
+Widget create_push_button();
+Widget put_popup();
+Widget put_selection();
+
+Widget gui_toplevel();
+Widget gui_initialize();
+void gui_create_main_menu();
+void gui_create_main_window();
+
+
+
+
+
+
+
+
+
Index: branches/testFACT++branch/dim/src/did/didMarkus.c
===================================================================
--- branches/testFACT++branch/dim/src/did/didMarkus.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/did/didMarkus.c	(revision 18277)
@@ -0,0 +1,3468 @@
+#include <stdio.h>                   
+#include <ctype.h>
+#include <time.h>
+#include <dim.h>
+#include <dic.h>
+#include <dis.h>
+#include "did.h"
+
+int First_time = 1;
+int Curr_view_opt = -1;	
+char Curr_view_opt_par[80];	
+char Curr_service_name[132];
+char Curr_service_format[256];
+int Curr_service_print_type = 0;	
+int N_servers = 0;	
+int N_services = 0;	
+int no_link_int = -1;
+FILE	*fptr;
+
+char *Service_content_str;
+char *Service_buffer;
+int Service_size;
+char *Curr_service_list = 0;
+char *Curr_client_list = 0;
+int Curr_service_id = 0;
+Widget Curr_client_id;
+Widget Curr_service_list_id;
+SERVER *Got_Service_List = 0;
+SERVER *Got_Client_List = 0;
+
+Widget SubscribeButton;
+Widget Subscribe10Button;
+
+int Timer_q;
+
+int Force_update = 0;
+/*
+ * Global data
+ */
+static XmFontList did_default_font, did_small_font, 
+  did_label_font, did_server_font;
+
+/*static MrmType class_id;*/		/* Place to keep class ID*/
+/*static MrmType *dummy_class;*/            /* and class variable. */
+
+/*static char *db_filename_vec[1];*/        /* Mrm.hierachy file list. */
+/*static int db_filename_num;*/
+
+/*
+ * Forward declarations
+ */
+void did_exit();
+void create_main();
+void create_label();
+void create_matrix();
+void view_opts();
+void dns_control();
+void ok_pop_up();                                                            
+void cancel_pop_up();
+
+extern void set_something();
+extern void get_something();
+extern void set_color();
+
+/*
+ * Names and addresses of callback routines to register with Mrm
+ */
+/*
+static MrmRegisterArg reglist [] = {
+{"did_exit", (caddr_t)did_exit},
+{"create_main", (caddr_t)create_main},
+{"create_label", (caddr_t)create_label},
+{"create_matrix", (caddr_t)create_matrix},
+{"view_opts", (caddr_t)view_opts},
+{"dns_control", (caddr_t)dns_control},
+{"ok_pop_up", (caddr_t)ok_pop_up},
+{"cancel_pop_up", (caddr_t)cancel_pop_up},
+};
+
+static int reglist_num = (sizeof reglist / sizeof reglist[0]);
+*/
+/*
+ * OS transfer point.  The main routine does all the one-time setup and
+ * then calls XtAppMainLoop.
+ */
+
+SERVER *Curr_servp;
+
+XmFontList util_get_font( char *fontname, Widget top )
+{
+XFontStruct * mf;
+XmFontList font;
+/*
+char * fontname;
+
+  if ( size == 'm' ) {
+    fontname = MENU_FONT;
+  }
+  else if ( size == 'b' ) {
+    fontname = LABEL_FONT;
+  }
+  else {
+    fontname = DEFAULT_FONT;
+  }
+*/
+  if ( (mf = XLoadQueryFont(XtDisplay(top),fontname))==NULL) {
+        printf("Couldn't open the following fonts:\n\t%s\n",
+	    fontname);
+        XtVaGetValues ( top, XmNdefaultFontList, &font, NULL );
+  }
+  else  {
+     font = XmFontListCreate (mf, XmSTRING_DEFAULT_CHARSET);
+  }
+  return font;
+}
+
+void create_matrix_widget()
+{
+Widget row_col_id, top_id;
+Arg arglist[10];
+int n = 0;
+char w_name[MAX_NAME];
+
+	top_id = Window_id;
+	XtSetArg(arglist[n], XmNborderWidth, 0); n++;
+	XtSetArg(arglist[n], XmNorientation, XmVERTICAL);  n++;
+        XtSetArg(arglist[n], XmNnumColumns, 4);  n++;
+	XtSetArg(arglist[n], XmNpacking, XmPACK_COLUMN);  n++;
+        XtSetArg(arglist[n], XmNadjustLast, False); n++;
+	sprintf(w_name,"matrix_row");
+	row_col_id = XmCreateRowColumn(top_id,w_name,arglist,n);
+	XtManageChild(row_col_id);
+	Matrix_id[Curr_matrix] = row_col_id;
+	/*
+	XmScrolledWindowSetAreas(Window_id,NULL, NULL, Matrix_id); 
+	*/
+}
+
+void gui_create_main_window(Widget parent)
+{
+
+Widget mw;
+Widget mb;
+Widget mf;
+Widget tl;
+Widget sl;
+Widget f;
+XmString xms;
+int par;
+int reason;
+Arg ar[20];
+int n;
+
+    mw = XmCreateMainWindow ( parent, "DidMainWindow", NULL, 0 );
+    XtVaSetValues( mw,
+        XmNresizePolicy, XmRESIZE_ANY,
+		  
+        XmNfontList,            did_default_font,
+        NULL);
+    XtManageChild( mw );
+    /* create menu bar */
+    mb = XmCreateMenuBar ( mw, "DidMenuBar", NULL, 0 );
+    XtVaSetValues( mb,
+        XmNmarginHeight,2,
+        XmNborderWidth, 0,
+        XmNfontList,            did_default_font,
+        NULL);
+        
+    gui_create_main_menu( mb );
+    XtManageChild ( mb );
+
+    /* create main form */
+    mf = XmCreateForm ( mw, "DidMainForm", NULL, 0 );
+    XtVaSetValues ( mf, 
+		    XmNresizePolicy, XmRESIZE_NONE, 
+		    		   
+		    NULL );
+    XtManageChild ( mf );
+
+    /* create top label */
+    xms = create_str(" \n  ");
+    
+    tl = XmCreateLabel ( mf, "DidTitle", NULL, 0 );
+    XtVaSetValues( tl,
+        XmNtopAttachment,           XmATTACH_FORM,
+        XmNbottomAttachment,        XmATTACH_NONE,
+        XmNleftAttachment,          XmATTACH_FORM,
+        XmNrightAttachment,         XmATTACH_FORM,
+        XmNleftOffset,              0,
+        XmNtopOffset,               0,
+        XmNbottomOffset,            0,
+        XmNrightOffset,             0,
+        XmNborderWidth,             0,
+        XmNlabelString,             xms,          
+        XmNshadowThickness,         0,
+        XmNhighlightThickness,      0,
+		XmNheight,					32,
+        XmNalignment,               XmALIGNMENT_CENTER,
+        XmNfontList,            did_label_font,
+        NULL);
+    XtManageChild( tl );
+/*
+    tl = XtVaCreateManagedWidget( "SmiTitle",
+        xmPushButtonWidgetClass,    mw,
+        XmNborderWidth,             0,
+        XmNlabelString,             xms,          
+        XmNshadowThickness,         0,
+        XmNhighlightThickness,      0,
+        XmNalignment,               XmALIGNMENT_CENTER,
+        XmNfontList,            smid_label_font,
+        NULL);
+*/
+    XmStringFree ( xms );
+    /*
+	XtAddCallback(tl, MrmNcreateCallback, 
+		(XtCallbackProc)create_label, 0);
+    */
+    par = 0;
+    reason = 0;
+    create_label(tl, &par, &reason);
+
+    /* create main form */
+    /*
+    mf = (Widget)XmCreateForm ( mw, "DidMainForm", NULL, 0 );
+    XtVaSetValues ( mf,
+        XmNborderWidth,1,
+        XmNshadowThickness, 2,
+		    XmNwidth,806,
+		    XmNheight,300, 
+		    
+       XmNresizePolicy, XmRESIZE_NONE, NULL );
+    XtManageChild ( mf );
+    */
+    /*
+	XtAddCallback(mf, MrmNcreateCallback, 
+			(XtCallbackProc)create_main, 0);
+    */
+    
+    create_main(mf, &par, &reason);
+    
+    f = XmCreateForm( mf, "ScrollForm", NULL, 0 );
+    XtVaSetValues ( f, 
+		    XmNwidth, 806,
+		    XmNheight,300,		    		  
+        XmNtopAttachment,           XmATTACH_WIDGET,
+        XmNbottomAttachment,        XmATTACH_FORM,
+        XmNleftAttachment,          XmATTACH_FORM,
+        XmNrightAttachment,         XmATTACH_FORM,
+        XmNrightOffset,             0,
+        XmNleftOffset,              0,
+        XmNbottomOffset,            0,
+        XmNtopWidget, tl,
+        XmNtopOffset, 0,
+        XmNshadowThickness, 2,
+        XmNbottomOffset, 0,
+		    /*
+        XmNshadowType, XmSHADOW_OUT,
+		    */
+        XmNborderWidth,0,
+        NULL);
+
+    /*
+    f = XtVaCreateManagedWidget ( "XDScrolledForm",
+        xmFormWidgetClass,          mf,
+        XmNtopAttachment,           XmATTACH_WIDGET,
+        XmNbottomAttachment,        XmATTACH_FORM,
+        XmNleftAttachment,          XmATTACH_FORM,
+        XmNrightAttachment,         XmATTACH_FORM,
+        XmNrightOffset,             0,
+        XmNleftOffset,              0,
+        XmNbottomOffset,            0,
+        XmNtopWidget, tl,
+        XmNtopOffset, 0,
+        XmNshadowThickness, 2,
+        XmNbottomOffset, 0,
+        XmNshadowType, XmSHADOW_OUT,
+        XmNborderWidth,1,
+        NULL);
+*/
+    /*
+	XtAddCallback(f, MrmNcreateCallback, 
+		(XtCallbackProc)create_window, 0);
+    */
+
+    XtManageChild ( f );
+    /* create scrolled list */
+    
+    n = 0;
+    XtSetArg ( ar[n], XmNtopAttachment, XmATTACH_FORM); n++;
+    XtSetArg ( ar[n], XmNbottomAttachment, XmATTACH_FORM); n++;
+    XtSetArg ( ar[n], XmNleftAttachment, XmATTACH_FORM); n++;
+    XtSetArg ( ar[n], XmNrightAttachment, XmATTACH_FORM); n++;
+    XtSetArg ( ar[n], XmNrightOffset, 0); n++;
+    XtSetArg ( ar[n], XmNleftOffset, 0); n++;
+    XtSetArg ( ar[n], XmNbottomOffset, 0); n++;
+    XtSetArg ( ar[n], XmNtopOffset, 0); n++;
+    /*
+    XtSetArg ( ar[n], XmNvisualPolicy, XmCONSTANT); n++;
+    */	    
+    XtSetArg ( ar[n], XmNscrollBarDisplayPolicy, XmAS_NEEDED); n++;
+		   
+    XtSetArg ( ar[n], XmNscrollingPolicy, XmAUTOMATIC); n++;
+
+    sl = XmCreateScrolledWindow ( f, "ScrollWin", ar, n );
+    /*
+    XtVaSetValues ( sl, 
+        XmNtopAttachment,           XmATTACH_FORM,
+        XmNbottomAttachment,        XmATTACH_FORM,
+        XmNleftAttachment,          XmATTACH_FORM,
+        XmNrightAttachment,         XmATTACH_FORM,
+        XmNrightOffset,             0,
+        XmNleftOffset,              0,
+        XmNbottomOffset,            0,
+	XmNtopOffset,               0,
+		    		   
+        XmNvisualPolicy,        XmCONSTANT,
+		    
+	XmNscrollBarDisplayPolicy, XmSTATIC,
+		   
+        XmNscrollingPolicy, XmAUTOMATIC,
+
+        NULL);
+    */
+    XtManageChild ( sl );
+    /*
+    create_window(sl, &par, &reason);
+    */
+    Window_id = sl;
+    
+    create_matrix_widget();
+    
+/* 
+    sl = XtVaCreateWidget ( "DidServersScrl",
+        xmScrolledWindowWidgetClass, f,
+        XmNscrollingPolicy,     XmAUTOMATIC,
+        XmNscrollBarDisplayPolicy, XmSTATIC,
+        XmNtopAttachment,       XmATTACH_FORM,
+        XmNleftAttachment,      XmATTACH_FORM,
+        XmNrightAttachment,     XmATTACH_FORM,
+        XmNbottomAttachment,    XmATTACH_FORM,
+        XmNvisualPolicy,        XmCONSTANT,
+        XmNtopOffset,           4,
+        XmNleftOffset,          4,
+        XmNbottomOffset,        4,
+        XmNrightOffset,         4,
+        NULL );
+    XtManageChild ( sl );
+*/
+    /*
+    XtVaSetValues( mw,
+        XmNworkWindow,mf,
+        XmNcommandWindow, tl,
+        NULL);
+    */
+    
+}
+
+Widget create_separator(Widget parent_id)
+{
+	Widget w;
+	Arg arglist[10];
+	int n = 0;
+
+	w = XmCreateSeparator(parent_id, "separator",
+		arglist,n);
+	XtManageChild(w);
+	return(w);
+}
+
+void gui_create_main_menu( Widget mb )
+{
+Widget cb;
+Widget mn;
+Widget bt;
+XmString xms;
+    /* File */
+    mn = XmCreatePulldownMenu ( mb, "FileMB", NULL, 0 );
+    cb = XmCreateCascadeButton(mb, "File", NULL, 0);
+    XtVaSetValues ( cb, 
+        XmNsubMenuId,       mn,
+        NULL);
+    XtManageChild ( cb );
+    /*
+    cb = XtVaCreateManagedWidget ( "File",
+        xmCascadeButtonWidgetClass, mb,
+        XtVaTypedArg,       XmNmnemonic, XmRString, "F", 2,
+        XmNsubMenuId,       mn,
+        NULL);
+    */
+        XtVaSetValues ( mn,
+            XmNradioAlwaysOne, True,
+            XmNradioBehavior, True,
+            NULL);
+        XtVaSetValues ( cb,
+	    XmNfontList,            did_default_font,
+            NULL);
+        /* buttons */
+        xms = create_str ("Exit DID");
+	/*
+        bt = XtVaCreateManagedWidget ( "MenuExitButton",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>C",
+            XmNacceleratorText, xma,
+            NULL);
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)did_exit, 0 );
+	/*
+    util_recolor ( XtParent(mn) );
+	*/
+    /* View */
+    mn = XmCreatePulldownMenu ( mb, "ViewMB", NULL, 0 );
+    cb = XmCreateCascadeButton(mb, "View", NULL, 0);
+    XtVaSetValues ( cb, 
+        XmNsubMenuId,       mn,
+        NULL);
+    XtVaSetValues ( cb,
+        XmNfontList,            did_default_font,
+        NULL);
+    XtManageChild ( cb );
+    /*
+    cb = XtVaCreateManagedWidget ( "View",
+        xmCascadeButtonWidgetClass, mb,
+        XtVaTypedArg,       XmNmnemonic, XmRString, "V", 2,
+        XmNsubMenuId,       mn,
+        NULL);
+    */
+        XtVaSetValues ( mn,
+            XmNradioAlwaysOne, True,
+            XmNradioBehavior, True,
+            NULL);
+        /* buttons */
+
+        xms = create_str ("All Servers");
+	/*
+        bt = XtVaCreateManagedWidget ( "V_MenuAllButton",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>A",
+            XmNacceleratorText, xma,
+            NULL);
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)view_opts, 
+			(XtPointer)1 );
+
+        xms = create_str ("Servers by Node");
+	/*
+        bt = XtVaCreateManagedWidget ( "V_MenuNodeButton",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>N",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)view_opts, 
+			(XtPointer)0 );
+
+        xms = create_str ("Servers by Service");
+	/*
+        bt = XtVaCreateManagedWidget ( "V_MenuServiceButton",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>S",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)view_opts, 
+			(XtPointer)2 );
+
+	create_separator(mn);
+	/*
+        bt = XtVaCreateManagedWidget ( "W_MenuSep",
+            xmSeparatorGadgetClass, mn,
+            NULL);
+	*/
+        xms = create_str ("Servers in Error");
+	/*
+        bt = XtVaCreateManagedWidget ( "V_MenuErrorButton",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>E",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)view_opts, 
+			(XtPointer)3 );
+	/*
+    util_recolor ( XtParent(mn) );
+	*/
+    /* Commands */
+    mn = XmCreatePulldownMenu ( mb, "CommandMB", NULL, 0 );
+    cb = XmCreateCascadeButton(mb, "Commands", NULL, 0);
+    XtVaSetValues ( cb, 
+        XmNsubMenuId,       mn,
+        NULL);
+    XtVaSetValues ( cb,
+	XmNfontList,            did_default_font,
+        NULL);
+    XtManageChild ( cb );
+    /*
+    cb = XtVaCreateManagedWidget ( "Commands",
+        xmCascadeButtonWidgetClass, mb,
+        XtVaTypedArg,       XmNmnemonic, XmRString, "C", 2,
+        XmNsubMenuId,       mn,
+        XmNsensitive, commands_enable,
+        NULL);
+    */
+        /* buttons */
+        /* Utils */
+    /*
+        xms = util_create_str ("Show Command Buttons");
+        xma = util_create_str ("Ctrl+B");
+        bt = XtVaCreateManagedWidget ( "C_ShowCmndButt",
+            xmToggleButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>B",
+            XmNacceleratorText, xma,
+            XmNset, False,
+            XmNindicatorSize,12,
+            XmNvisibleWhenOff, True,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+        XtAddCallback ( bt, XmNvalueChangedCallback, (XtCallbackProc)show_command_buttons_callback, NULL );
+
+        bt = XtVaCreateManagedWidget ( "W_MenuSep",
+            xmSeparatorGadgetClass, mn,
+            NULL);
+    */
+        
+        xms = create_str ("LOG Connections");
+	/*
+        bt = XtVaCreateManagedWidget ( "C_MenuButtonLOG",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>G",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control_callback, "log" );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control, 
+			(XtPointer)0 );
+
+        create_separator(mn);
+	/*
+        bt = XtVaCreateManagedWidget ( "W_MenuSep",
+            xmSeparatorGadgetClass, mn,
+            NULL);
+	*/
+        xms = create_str ("Set Debug ON");
+	/*
+        bt = XtVaCreateManagedWidget ( "C_MenuButtonDON",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "<Key>F2:",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control_callback, "on" );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control, 
+			(XtPointer)1 );
+
+        xms = create_str ("Set Debug OFF");
+	/*
+        bt = XtVaCreateManagedWidget ( "C_MenuButtonDOFF",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "<Key>F3:",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control_callback, "off" );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control, 
+			(XtPointer)2 );
+
+	create_separator(mn);
+	/*
+        bt = XtVaCreateManagedWidget ( "W_MenuSep",
+            xmSeparatorGadgetClass, mn,
+            NULL);
+	*/
+        xms = create_str ("Print Hash Table");
+	/*
+        bt = XtVaCreateManagedWidget ( "C_MenuButtonPrint",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>T",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control_callback, "hash" );
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control, 
+			(XtPointer)4 );
+	/* kill
+	create_separator(mn);
+	*/
+	/*
+        bt = XtVaCreateManagedWidget ( "W_MenuSep",
+            xmSeparatorGadgetClass, mn,
+            NULL);
+	*/
+	/* kill
+        xms = create_str ("Kill DIM Servers");
+	*/
+	/*
+        bt = XtVaCreateManagedWidget ( "C_MenuButtonKill",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>K",
+            XmNacceleratorText, xma,
+            NULL);
+        XmStringFree ( xms );
+        XmStringFree ( xma );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control_callback, "kill" );
+	*/
+	/* kill
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)dns_control, 
+			(XtPointer)3 );
+	*/
+	/*
+    util_recolor ( XtParent(mn) );
+	*/
+    /* Help */
+    mn = XmCreatePulldownMenu ( mb, "HelpMB", NULL, 0 );
+    /*
+    cb = XtVaCreateManagedWidget ( "Help",
+        xmCascadeButtonWidgetClass, mb,
+        XtVaTypedArg,       XmNmnemonic, XmRString, "H", 2,
+        XmNsubMenuId,       mn,
+        NULL);
+    */
+    cb = XmCreateCascadeButton ( mb, "Help", NULL, 0 );
+    XtVaSetValues( cb,
+	XmNsubMenuId,       mn,
+	XmNfontList,            did_default_font,
+        NULL);
+    XtManageChild( cb );
+
+        xms = create_str ("Help");
+	/*
+        bt = XtVaCreateManagedWidget ( "C_XDAbout",
+            xmPushButtonWidgetClass, mn,
+            XmNlabelString, xms,
+            XmNaccelerator, "Ctrl<Key>H",
+            XmNacceleratorText, xma,
+            NULL);
+	*/
+        bt = XmCreatePushButton ( mn, "button", NULL, 0 );
+        XtVaSetValues( bt,
+            XmNlabelString, xms,
+	    XmNfontList,            did_default_font,
+            NULL);
+        XtManageChild( bt );
+        XmStringFree ( xms );
+	/*
+        XtAddCallback ( bt, XmNactivateCallback, (XtCallbackProc)about_xd_callback, NULL );
+	*/
+    /* set help menu */
+    XtVaSetValues ( mb, XmNmenuHelpWidget, cb, NULL );
+    /*
+    util_recolor ( XtParent(mn) );
+    */
+}
+
+
+Widget gui_toplevel(char **argv)
+{
+int n;
+Arg arglist[6];
+
+    n = 0;
+    XtSetArg ( arglist[n], XmNallowShellResize, True); n++;
+    XtSetArg ( arglist[n], XmNiconName, "DID"); n++;
+    XtSetArg ( arglist[n], XmNtitle, "xDid");  n++;
+    XtSetArg ( arglist[n], XmNtraversalOn,True); n++;
+    return XtAppCreateShell(argv[0], NULL, applicationShellWidgetClass,
+                            display, arglist, n);
+     
+}
+
+Widget gui_initialize (int argc, char **argv)
+{
+Widget toplevel;
+void gui_create_main_window();
+
+    XtToolkitInitialize();
+    app_context = XtCreateApplicationContext();
+    display = XtOpenDisplay(app_context, NULL, argv[0], "DID",
+                            NULL, 0, &argc, argv);
+    if (display == NULL) 
+	{
+        printf("%s:  Can't open display\n", argv[0]);
+        exit(1);
+	}
+    toplevel = gui_toplevel(argv);
+   
+    did_default_font = (XmFontList)util_get_font(DEFAULT_FONT, toplevel);
+    did_small_font = (XmFontList)util_get_font(MENU_FONT, toplevel);
+    did_label_font = (XmFontList)util_get_font(LABEL_FONT, toplevel);
+    did_server_font = (XmFontList)util_get_font(SERVER_FONT, toplevel);
+
+    gui_create_main_window(toplevel);
+
+    XtRealizeWidget ( toplevel );
+    return toplevel;
+}
+
+int main(int argc, char *argv[])
+{
+    int i;
+	char opt_str[20], *ptr;
+	XtInputMask mask;
+	void do_got_service_list();
+	void do_show_clients();
+	void app_initialize();
+       
+	dim_no_threads();
+	dic_disable_padding();
+	dis_disable_padding();
+	
+	if(argc > 1)
+	{
+		if(argv[1][0] == '-')
+		{
+			sprintf(opt_str,"%s",&argv[1][1]);
+			if((!strncmp(opt_str,"node",4)) || 
+			   (!strncmp(opt_str,"NODE",4)))
+				Curr_view_opt = 0;
+			else if((!strncmp(opt_str,"all",3)) || 
+				(!strncmp(opt_str,"ALL",3)))
+				Curr_view_opt = 1;
+			else if((!strncmp(opt_str,"service",7)) || 
+					(!strncmp(opt_str,"SERVICE",7)))
+				Curr_view_opt = 2;
+			else if((!strncmp(opt_str,"error",5)) ||
+					(!strncmp(opt_str,"ERROR",5)))
+				Curr_view_opt = 3;
+			else if((!strncmp(opt_str,"help",4)) || 
+				(!strncmp(opt_str,"HELP",4)))
+			  {
+    printf("Did - DIM Information Display\n");
+    printf("\t-all             Show ALL Servers\n");
+    printf("\t-service=<str>   Show Servers providing Service <str>\n");
+    printf("\t-node=<nodename> Show Servers on Node <nodename>\n");
+    printf("\t-error           Show Servers in Error\n");
+    printf("\t-help            Show this message\n\n");
+    exit(0);
+			  }
+			else
+				Curr_view_opt = -1;
+			if((Curr_view_opt == 0) || (Curr_view_opt == 2))
+			{
+  				if(!(ptr = strchr(argv[1],'=')))
+				{
+					if( (ptr = strchr(argv[2],'=')) )
+					{
+						ptr++;
+						if(!(*ptr))
+							ptr = argv[3];
+					}
+					else
+						ptr++;
+				}
+				else
+				{			
+					ptr++;
+					if(!(*ptr))
+						ptr = argv[2];
+				}
+				for(i = 0;*ptr; ptr++, i++)
+					Curr_view_opt_par[i] = toupper(*ptr);
+				Curr_view_opt_par[i] = '\0';
+			}
+		}
+	}
+
+    toplevel_widget = (Widget)gui_initialize(argc, argv);
+    app_initialize();
+    /* 
+     * Sit around forever waiting to process X-events.  We never leave
+     * XtAppMainLoop. From here on, we only execute our callback routines. 
+     */
+
+    while(1)
+    {
+		{
+			DISABLE_AST
+			mask = XtAppPending(app_context);	
+			ENABLE_AST
+		}
+		if(mask)
+		{
+			DISABLE_AST
+			XtAppProcessEvent(app_context, mask);
+			if(Got_Service_List)
+			{
+				do_got_service_list(Got_Service_List);
+				Got_Service_List = 0;
+			}
+			if(Got_Client_List)
+			{
+				do_show_clients(Got_Client_List);
+				Got_Client_List = 0;
+			}
+			ENABLE_AST
+		}		
+		else
+		{
+			dim_usleep(100000);
+			/*
+			usleep(100000);	
+			*/
+		}
+    }
+
+}
+
+static char no_link = -1;
+
+void app_initialize(int tag)
+{
+void check_put_label();
+
+void update_servers();
+void update_servers_new();
+void update_show_servers();
+extern void get_all_colors();
+extern void set_title();
+extern void set_icon_title();
+
+        char text[128];
+        int len;
+	if(tag){}
+	sprintf(text,"DID - DIM Information Display on ");
+	len = strlen(text);
+        dim_get_dns_node(text+len);
+	len = strlen(text);
+	sprintf(text+len,":%d",dim_get_dns_port());
+	get_all_colors(display,Matrix_id[Curr_matrix]);
+	set_title(toplevel_widget,text);
+	set_icon_title(toplevel_widget,"DID");
+	Timer_q = dtq_create();
+	dic_info_service("DIS_DNS/SERVER_INFO",MONITORED,0,0,0,update_servers,0,
+						&no_link,1);
+	/*
+      	dic_info_service("DIS_DNS/SERVER_LIST",MONITORED,0,0,0,
+			 update_servers_new,0, &no_link,1);
+	*/
+	/*	
+	dtq_add_entry(Timer_q, 2, check_put_label, 0);
+	*/
+	XtAppAddTimeOut(app_context, 1000, update_show_servers, 0); 
+}
+
+/*
+ * All errors are fatal.
+ */
+void s_error(char *problem_string)
+{
+    printf("%s\n", problem_string);
+    exit(0);
+}
+
+void did_exit(Widget w, int *tag, unsigned long *reason)
+{
+	if(w){}
+	if(tag){}
+	if(reason){}
+	exit(0);
+}
+
+extern Pixel rgb_colors[MAX_COLORS];
+
+void create_main (Widget w, int *tag, unsigned long *reason)
+{
+	if(tag){}
+	if(reason){}
+	Window_id = w;
+/*
+	dtq_start_timer(5, app_initialize, 0);
+*/
+}
+
+void view_opts(Widget w, int tag, unsigned long *reason)
+{
+	void get_server_node(), get_server_service(), show_servers();
+
+	if(w){}
+	if(reason){}
+	Curr_view_opt = tag;
+	switch(tag)
+	{
+		case 0 :
+			get_server_node();
+			break;
+		case 1 :
+			show_servers();
+			break;
+		case 2 :
+			get_server_service();
+			break;
+		case 3 :
+			show_servers();
+			break;
+	}
+}
+
+void dns_control(Widget w, int tag, unsigned long *reason)
+{
+
+	if(w){}
+	if(reason){}
+	switch(tag)
+	{
+		case 0 :
+			dic_cmnd_service("DIS_DNS/PRINT_STATS",0,0);
+			break;
+		case 1 :
+			dic_cmnd_service("DIS_DNS/DEBUG_ON",0,0);
+			break;
+		case 2 :
+			dic_cmnd_service("DIS_DNS/DEBUG_OFF",0,0);
+			break;
+		case 3 :
+			put_selection(DID_KILL_ALL,"Confirmation");
+			break;
+		case 4 :
+			dic_cmnd_service("DIS_DNS/PRINT_HASH_TABLE",0,0);
+			break;
+	}
+}
+
+void get_server_node()
+{
+Widget id,sel_id;
+int i, j, n_nodes, curr_index = 0;
+char nodes_str[MAX_NODE_NAME*MAX_CONNS], max_str[MAX_NODE_NAME];
+char *ptr, *nodeptrs[MAX_CONNS], *curr_str, *sptr;
+int get_nodes();
+
+	sel_id = put_selection(DID_SEL_NODE,"Node Selection");
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_HELP_BUTTON);
+	XtUnmanageChild(id);
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_APPLY_BUTTON);
+	XtUnmanageChild(id);
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST);
+	XmListDeleteAllItems(id);
+	n_nodes = get_nodes(nodes_str);
+	ptr = nodes_str;
+
+	for(i=0;i<n_nodes;i++)
+	{
+		nodeptrs[i] = ptr;
+		sptr = ptr;
+		ptr = strchr(ptr,'\n');
+		for(j = 0; j < (int)strlen(sptr); j++)
+		  sptr[j] = tolower(sptr[j]);
+		*ptr++ = '\0';
+	}
+	strcpy(max_str,"zzzzzzzzzzzzzzzzzzzzzzzzzzzz");
+	for(i=0;i<n_nodes; i++)
+	{
+	  curr_str = max_str;
+	  for(j=0;j<n_nodes; j++)
+	  {
+	    sptr = nodeptrs[j];
+	    if(!sptr)
+	      continue;
+	    
+	    if(strcmp(sptr,curr_str) < 0)
+	    {
+	      curr_str = sptr;
+	      curr_index = j;
+	    }
+	  }
+	  nodeptrs[curr_index] = 0;
+	  XmListAddItem(id,create_str(curr_str),i+1);
+	}
+	/*
+	for(i=0;i<n_nodes;i++)
+	{
+		node = ptr;
+		ptr = strchr(ptr,'\n');
+		*ptr++ = '\0';
+		XmListAddItem(id,create_str(node),i+1);
+	}
+	*/
+	set_something(id,XmNlistItemCount,i);
+	set_something(id,XmNlistVisibleItemCount,(i < 8) ? i : 8);
+}	
+
+void get_server_service()
+{
+Widget id,sel_id;
+
+	sel_id = put_selection(DID_SEL_SERVICE,"Service Selection");
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_HELP_BUTTON);
+	XtUnmanageChild(id);
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_APPLY_BUTTON);
+	XtUnmanageChild(id);
+	
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST);
+	/*
+	XtUnmanageChild(id);
+	*/
+	XtUnmapWidget(id);
+	
+	/*
+	id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST_LABEL);
+	XtUnmanageChild(id);
+	*/
+}	
+
+int get_nodes(char *node_ptr)
+{
+DNS_SERVER_INFO *ptr;
+int n_nodes = 0;
+SERVER *servp;
+
+	node_ptr[0] = '\0';
+	servp = Server_head;
+	while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+	{
+		ptr = &servp->server;
+		if(strstr(node_ptr,ptr->node) <= (char *)0)
+		{
+			strcat(node_ptr,ptr->node);
+			strcat(node_ptr,"\n");
+			n_nodes++;
+		}
+	}
+	return(n_nodes);
+}
+
+void get_service_format()
+{
+
+	char str[256], *ptr, *ptr1;
+	int rpc_flag;
+
+	strcpy(str,Curr_service_name);
+	rpc_flag = 0;
+	if( (ptr = strstr(str,"/RpcIn")) )
+	{
+		*ptr = '\0';
+		rpc_flag = 1;
+	}
+	if( (ptr = strstr(str,"/RpcOut")) )
+	{
+		*ptr = '\0';
+		rpc_flag = 2;
+	}
+	strcat(str,"|");
+	if( (ptr = strstr(Curr_service_list,str)) )
+	{
+		if(!rpc_flag)
+		{
+		    ptr += strlen(str);
+		    ptr1 = strchr(ptr,'|');
+		}
+		else if(rpc_flag == 1)
+		{
+		    ptr += strlen(str);
+		    ptr1 = strchr(ptr,',');
+		}
+		else
+		{
+		    ptr += strlen(str);
+		    ptr = strchr(ptr,',');
+		    ptr++;
+		    ptr1 = strchr(ptr,'|');
+		}
+	    strncpy(Curr_service_format,ptr,(int)(ptr1 - ptr));
+	    Curr_service_format[(int)(ptr1-ptr)] = '\0';
+	}
+}
+
+void recv_service_info(int *tag, int *buffer, int *size)
+{
+/*
+	char str[256], *ptr, *ptr1;
+	int rpc_flag;
+*/
+	void print_service_formatted();
+
+	if(tag){}
+	Service_content_str = malloc(1024 + (*size)*16);
+	Service_buffer = malloc(*size);
+	memcpy(Service_buffer, (char *)buffer, *size);
+	Service_size = *size;
+	get_service_format();
+	if((*size == 4 ) && (*buffer == -1))
+	{
+		sprintf(Service_content_str,
+			"Service %s Not Available\n", Curr_service_name);
+	}
+	else
+	{
+	  switch(Curr_service_print_type)
+	  {
+	  case 0:
+		print_service_formatted(buffer,*size);
+		break;
+		/*
+	  case 1:
+		print_service_float(buffer, ((*size - 1) / 4) + 1);
+		break;
+	  case 2:
+		print_service_double(buffer, ((*size - 1) / 4) + 1);
+		break;
+		*/
+	  }
+	}
+	set_something(Content_label_id,XmNlabelString, Service_content_str);
+	/*
+	if(Matrix_id[Curr_matrix])
+	  XFlush(XtDisplay(Matrix_id[Curr_matrix]));
+	*/
+}
+	
+void print_service_formatted(void *buff, int size)
+{
+char type;
+int num, ret;
+char str[128];
+char *ptr;
+void *buffer_ptr;
+char timestr[128], aux[10];
+int quality = 0, secs = 0, mili = 0; 
+int did_write_string(char, int, void **, int);
+time_t tsecs;
+
+  sprintf(Service_content_str,
+	  "Service %s (%s) Contents :\n  \n", Curr_service_name,
+	  Curr_service_format);
+  /*
+  if(Curr_service_id)
+  {
+  */
+    dic_get_timestamp(0, &secs, &mili);
+    quality = dic_get_quality(0);
+/*
+#ifdef LYNXOS
+	ctime_r((time_t *)&secs, timestr, 128);
+#else
+	ctime_r((time_t *)&secs, timestr);
+#endif
+*/
+	tsecs = secs;
+	my_ctime(&tsecs, timestr, 128);
+    ptr = strrchr(timestr,' ');
+    strcpy(aux, ptr);
+    sprintf(ptr,".%03d",mili);
+    strcat(timestr, aux);
+    timestr[strlen(timestr)-1] = '\0';
+   
+    sprintf(str," Timestamp: %s               Quality: %d\n\n",
+	  timestr, quality);
+
+    strcat(Service_content_str,str);
+    /*
+  }
+    */
+   ptr = Curr_service_format;
+   buffer_ptr = buff;
+   while(*ptr)
+   { 
+     type = *ptr++;
+     if(*ptr == ':')
+       {
+	 ptr++;
+	 sscanf(ptr, "%d", &num);
+	 ret = did_write_string(type, num, &buffer_ptr, size);
+	 size -= ret;
+	 if( (ptr = strchr(ptr,';')) )
+	   ptr++;
+	 else
+	   break;
+       }
+       else
+       {
+	 ret = did_write_string(type, 0, &buffer_ptr, size);
+	 size -= ret;
+	 break;
+       }
+   }
+}
+
+int did_write_string(char type, int num, void **buffer_ptr, int ssize)
+{
+void *ptr;
+int size, psize;
+
+  void print_service_standard();
+  void print_service_char();
+  void print_service_short();
+  void print_service_float();
+  void print_service_double();
+
+  ptr = *buffer_ptr;
+  switch(type)
+    {
+    case 'L':
+    case 'l':
+      strcat(Service_content_str," L");
+      if(!num)
+	size = ssize/sizeof(int);
+      else
+	size = num;
+      psize = size * sizeof(int);
+      print_service_standard(ptr, size);
+      break;
+    case 'I':
+    case 'i':
+      strcat(Service_content_str," I");
+      if(!num)
+	size = ssize/sizeof(int);
+      else
+	size = num;
+      psize = size * sizeof(int);
+      print_service_standard(ptr, size);
+      break;
+    case 'S':
+    case 's':
+      strcat(Service_content_str," S");
+      if(!num)
+	size = ssize/sizeof(short);
+      else
+	size = num;
+      psize = size * sizeof(short);
+      print_service_short(ptr, size);
+      break;
+    case 'F':
+    case 'f':
+      strcat(Service_content_str," F");
+      if(!num)
+	size = ssize/sizeof(float);
+      else
+	size = num;
+      psize = size * sizeof(float);
+      print_service_float(ptr, size);
+      break;
+    case 'D':
+    case 'd':
+      strcat(Service_content_str," D");
+      if(!num)
+	size = ssize/sizeof(double);
+      else
+	size = num;
+      psize = size * sizeof(double);
+      print_service_double(ptr, size);
+      break;
+    case 'X':
+    case 'x':
+      strcat(Service_content_str," X");
+      if(!num)
+	size = ssize/sizeof(longlong);
+      else
+	size = num;
+      psize = size * sizeof(longlong);
+      print_service_standard(ptr, size*2);
+      break;
+    case 'C':
+    case 'c':
+    default:
+      strcat(Service_content_str," C");
+      if(!num)
+	size = ssize;
+      else
+	size = num;
+      psize = size;
+      print_service_char(ptr, size);
+    }
+  ptr = (char *)ptr + psize;
+  *buffer_ptr = ptr;
+  return psize;
+}
+/*
+print_service(buff, size)
+int *buff, size;
+{
+int i,j, str_flag = 0;
+char *asc, *ptr, str[80];
+int last[4];
+
+	sprintf(Service_content_str,
+		"Service %s (%s) Contents :\n  \n", Curr_service_name,
+		Curr_service_format);
+	asc = (char *)buff;
+	for( i = 0; i < size; i++)
+	{
+		if(i%4 == 0)
+		{
+			sprintf(str,"%4d: ",i);
+			strcat(Service_content_str,str);
+		}
+		if(!(i%4))
+			strcat(Service_content_str,"H");
+		sprintf(str,"   %08X ",buff[i]);
+		strcat(Service_content_str,str);
+		last[i%4] = buff[i];
+		if(i%4 == 3)
+		{
+			strcat(Service_content_str,"   '");
+			for(j = 0; j <16; j++)
+			{
+				if(isprint(asc[j]))
+				{
+					sprintf(str,"%c",asc[j]);
+					strcat(Service_content_str,str);
+				}
+				else
+				{
+					sprintf(str,".");
+					strcat(Service_content_str,str);
+				}
+			}
+			strcat(Service_content_str,"'\n");
+			for(j = 0; j <4; j++)
+			{
+				if(j == 0)
+					strcat(Service_content_str,"      D");
+				sprintf(str,"%11d ",last[j]);
+				strcat(Service_content_str,str);
+			}
+			strcat(Service_content_str,"\n");
+			asc = (char *)&buff[i+1];
+		}
+	}
+	if(i%4)
+	{
+			for(j = 0; j < 4 - (i%4); j++)
+				strcat(Service_content_str,"            ");
+			strcat(Service_content_str,"   '");
+			for(j = 0; j < (i%4) * 4; j++)
+			{
+				if(isprint(asc[j]))
+				{
+					sprintf(str,"%c",asc[j]);
+					strcat(Service_content_str,str);
+				}
+				else
+					strcat(Service_content_str,".");
+			}
+			strcat(Service_content_str,"'\n");
+			for(j = 0; j < (i%4); j++)
+			{
+				if(j == 0)
+					strcat(Service_content_str,"      D");
+				sprintf(str,"%11d ",last[j]);
+				strcat(Service_content_str,str);
+			}
+			strcat(Service_content_str,"\n");
+	}
+}
+*/
+
+void print_service_standard(int *buff, int size)
+{
+int i,j;
+char *asc, *ptr, str[80], tmp[256];
+int last[4];
+
+	asc = (char *)buff;
+	ptr = Service_content_str;
+	ptr += strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%4 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"  ");
+		    }
+			sprintf(str,"%5d ",i);
+			strcat(tmp,str);
+		}
+		if(!(i%4))
+			strcat(tmp,"H: ");
+		sprintf(str,"    %08X",buff[i]);
+		strcat(tmp,str);
+		last[i%4] = buff[i];
+		if((i%4 == 3) || (i == (size-1)))
+		{
+		  /*
+			if(i%4 != 3)
+			{
+			    for(j = 1; j < 4 - (i%4); j++)
+				strcat(tmp,"            ");
+			}
+			strcat(tmp,"  '");
+			for(j = 0; j < ((i%4)*4)+4 ; j++)
+			{
+				if(isprint(asc[j]))
+				{
+					sprintf(str,"%c",asc[j]);
+					strcat(tmp,str);
+				}
+				else
+				{
+					sprintf(str,".");
+					strcat(tmp,str);
+				}
+			}
+		  */
+			strcat(tmp,"\n");
+			for(j = 0; j <= (i%4); j++)
+			{
+				if(j == 0)
+					strcat(tmp,"        D: ");
+				sprintf(str,"%12d",last[j]);
+				strcat(tmp,str);
+			}
+			strcat(tmp,"\n");
+			asc = (char *)&buff[i+1];
+		}
+		strcpy(ptr, tmp);
+		ptr += strlen(tmp);
+	}
+	strcpy(tmp,"\n");
+	strcpy(ptr, tmp);
+}
+
+void print_service_longlong(longlong *buff, int size)
+{
+int i,j;
+char *asc, *ptr, str[80], tmp[256];
+longlong last[4];
+
+	asc = (char *)buff;
+	ptr = Service_content_str;
+	ptr += strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%4 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"  ");
+		    }
+			sprintf(str,"%5d ",i);
+			strcat(tmp,str);
+		}
+		if(!(i%4))
+			strcat(tmp,"H: ");
+		sprintf(str,"    %08X",(unsigned)buff[i]);
+		strcat(tmp,str);
+		last[i%4] = buff[i];
+		if((i%4 == 3) || (i == (size-1)))
+		{
+			strcat(tmp,"\n");
+			for(j = 0; j <= (i%4); j++)
+			{
+				if(j == 0)
+					strcat(tmp,"        D: ");
+				sprintf(str,"%12d",(int)last[j]);
+				strcat(tmp,str);
+			}
+			strcat(tmp,"\n");
+			asc = (char *)&buff[i+1];
+		}
+		strcpy(ptr, tmp);
+		ptr += strlen(tmp);
+	}
+	strcpy(tmp,"\n");
+	strcpy(ptr, tmp);
+}
+
+void print_service_short(short *buff, int size)
+{
+int i,j;
+char *asc, *ptr, str[80], tmp[256];
+short last[8];
+
+	asc = (char *)buff;
+	ptr = Service_content_str;
+	ptr += strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%8 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"  ");
+		    }
+			sprintf(str,"%5d ",i);
+			strcat(tmp,str);
+		}
+		if(!(i%8))
+			strcat(tmp,"H: ");
+		sprintf(str,"  %04X",buff[i]);
+		strcat(tmp,str);
+		last[i%8] = buff[i];
+		if((i%8 == 7) || (i == (size-1)))
+		{
+		  /*
+			if(i%7 != 7)
+			{
+			    for(j = 1; j < 8 - (i%8); j++)
+				strcat(tmp,"      ");
+			}
+			strcat(tmp,"  '");
+			for(j = 0; j < ((i%8)*2)+2 ; j++)
+			{
+				if(isprint(asc[j]))
+				{
+					sprintf(str,"%c",asc[j]);
+					strcat(tmp,str);
+				}
+				else
+				{
+					sprintf(str,".");
+					strcat(tmp,str);
+				}
+			}
+		  */
+			strcat(tmp,"\n");
+			for(j = 0; j <= (i%8); j++)
+			{
+				if(j == 0)
+					strcat(tmp,"        D: ");
+				sprintf(str," %5d",last[j]);
+				strcat(tmp,str);
+			}
+			strcat(tmp,"\n");
+			asc = (char *)&buff[i+1];
+		}
+		strcpy(ptr, tmp);
+		ptr += strlen(tmp);
+	}
+	strcpy(tmp,"\n");
+	strcpy(ptr, tmp);
+}
+
+void print_service_char(char *buff, int size)
+{
+int i,j;
+char *asc, *ptr, str[80], tmp[256];
+char last[16];
+
+	asc = (char *)buff;
+	ptr = Service_content_str;
+	ptr += strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%16 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"  ");
+		    }
+			sprintf(str,"%5d ",i);
+			strcat(tmp,str);
+		}
+		if(!(i%16))
+			strcat(tmp,"H: ");
+		sprintf(str,"%02X",buff[i]);
+/*		strcat(tmp,str);
+*/
+		strcat(tmp," ");
+		strcat(tmp,&str[strlen(str)-2]);
+		last[i%16] = buff[i];
+		/*
+		if(i%4 == 3)
+		  strcat(tmp," ");
+		*/
+		if((i%16 == 15) || (i == (size-1)))
+		{
+			if(i%16 != 15)
+			{
+			    for(j = 1; j < 16 - (i%16); j++)
+				strcat(tmp,"   ");
+			}
+			strcat(tmp,"    '");
+			for(j = 0; j <= (i%16) ; j++)
+			{
+				if(isprint(asc[j]))
+				{
+					sprintf(str,"%c",asc[j]);
+					strcat(tmp,str);
+				}
+				else
+				{
+					sprintf(str,".");
+					strcat(tmp,str);
+				}
+			}
+			strcat(tmp,"'\n");
+			asc = (char *)&buff[i+1];
+		}
+		strcpy(ptr, tmp);
+		ptr += strlen(tmp);
+	}
+	strcpy(tmp,"\n");
+	strcpy(ptr, tmp);
+}
+
+void print_service_float(float *buff, int size)
+{
+int i;
+char *ptr, str[80], tmp[256];
+
+	ptr = Service_content_str;
+	ptr += strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%4 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"  ");
+		    }
+			sprintf(str,"  %5d: ",i);
+			strcat(tmp,str);
+		}
+		sprintf(str,"%12.3G",*(buff++));
+		strcat(tmp,str);
+		if((i%4 == 3) || (i == size-1))
+		{
+			strcat(tmp,"\n");
+		}
+		strcpy(ptr, tmp);
+		ptr += strlen(tmp);
+	}
+	strcpy(tmp,"\n");
+	strcpy(ptr, tmp);
+	ptr += strlen(tmp);
+}
+
+void print_service_double(double *buff, int size)
+{
+int i;
+char *ptr, str[80], tmp[256];
+
+       	ptr = Service_content_str;
+	ptr += strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%4 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"  ");
+		    }
+			sprintf(str,"  %5d: ",i);
+			strcat(tmp,str);
+		}
+		sprintf(str,"%12.3G",*(buff++));
+		strcat(tmp,str);
+		if((i%4 == 3) || (i == size-1))
+		{
+			strcat(tmp,"\n");
+		}
+		strcpy(ptr, tmp);
+		ptr += strlen(tmp);
+	}
+	strcpy(tmp,"\n");
+	strcpy(ptr, tmp);
+	ptr += strlen(tmp);
+}
+
+void ok_pop_up (Widget w, long tag, unsigned long *reason)
+{
+Widget id, sel_id;
+char *str, *pstr;
+void recv_service_info();
+void did_prepare_command();
+void show_servers();
+
+/*
+	if(tag == 5)
+	{
+		id = (Widget)XmSelectionBoxGetChild(w,XmDIALOG_TEXT);
+		str = (char *)XmTextGetString(id);
+		if(!str[0])
+		{
+			XtFree(str);
+			return;
+		}
+		if( ( fptr = fopen( str, "w" ) ) == (FILE *)0 )
+		{
+    		printf("Cannot open: %s for writing\n",str);
+			return;
+		}                   
+		ptr = &Curr_servp->server;
+		if (ptr->pid > 0x1000000)
+			fprintf(fptr,"Server %s (pid = %X) on node %s\n    provides %d services :\n",
+			Curr_servp->name, ptr->pid, ptr->node, ptr->n_services);
+		else
+			fprintf(fptr,"Server %s (pid = %d) on node %s\n    provides %d services :\n",
+				Curr_servp->name, ptr->pid, ptr->node, ptr->n_services);
+		service_ptr = Curr_servp->service_ptr;
+		for(i=0;i<ptr->n_services; i++)
+		{
+			sprintf(str,service_ptr->name);
+			fprintf(fptr,"        %s\n",service_ptr->name);
+			service_ptr++;
+		}		
+		fclose(fptr);
+		XtFree(str);
+		return;
+	}
+	if(tag == 4)
+	{
+		sel_id = put_selection(4, "Printing...");
+		id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_HELP_BUTTON);
+		XtUnmanageChild(id);
+
+		id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_APPLY_BUTTON);
+		XtUnmanageChild(id);
+		id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_TEXT);
+		str = (char *)XmTextGetString(id);
+		if(!str[0])
+		{
+			XtFree(str);
+			return;
+		}
+		ptr = &Curr_servp->server;
+		if(pstr = strrchr(str,']'))
+			*(++pstr) = '\0';
+		if(pstr = strrchr(str,'/'))
+			*(++pstr) = '\0';
+		sprintf(txt_str,"%s%s.TXT",str,Curr_servp->name);
+		XtFree(str);
+		XmTextSetString(id, txt_str);
+		return;
+	}
+*/
+	if(reason){}
+	if(tag == DID_KILL_ALL)
+	{
+		dic_cmnd_service("DIS_DNS/KILL_SERVERS",0,0);
+		return;
+	}
+	id = XmSelectionBoxGetChild(w,XmDIALOG_TEXT);
+	str = XmTextGetString(id);
+	if(!str[0])
+	{
+		XtFree(str);
+		return;
+	}
+        if ((tag == DID_SEL_NODE) || (tag == DID_SEL_SERVICE)) 
+	{
+		strcpy(Curr_view_opt_par, str);
+		show_servers();
+		XtFree(str);
+	}
+        if(tag == DID_SERVICES)
+	{
+	  pstr = strchr(str,' ');
+	  if(!pstr)
+	    {
+	      strcpy(Curr_service_name, str);
+	      strcpy(str,"SVC");
+	    }
+	  else
+	    {
+	      pstr++;
+	      strcpy(Curr_service_name, pstr);
+	    }
+	  if(Curr_service_id)
+	    {
+	      dic_release_service(Curr_service_id);
+	      Curr_service_id = 0;
+	    }
+	  if(str[0] == 'S')
+	    {
+	      /*
+	      if((!strstr(pstr,"/SERVICE_LIST")) && 
+		 (!strstr(pstr,"/CLIENT_LIST")) &&
+		 (!strstr(pstr,"/SERVER_LIST")))
+		{
+		  Curr_service_id = dic_info_service(Curr_service_name,
+		                             MONITORED,5,0,0,
+					     recv_service_info,0,
+						     &no_link_int,4);
+		}
+	      else
+		{
+	      */
+	      dic_info_service_stamped(Curr_service_name,
+							 ONCE_ONLY,10,0,0,
+					     recv_service_info,0,
+						     &no_link_int,4);
+		  /*
+		}
+		  */
+	      put_selection(DID_SERVICE,"Service Contents");
+	    }
+	  else
+	    {
+	      get_service_format();
+	      sel_id = put_selection(DID_COMMAND,"Send Command");
+	      id = XmSelectionBoxGetChild(sel_id,XmDIALOG_HELP_BUTTON);
+	      XtUnmanageChild(id);
+	      id = XmSelectionBoxGetChild(sel_id,XmDIALOG_APPLY_BUTTON);
+	      XtUnmanageChild(id);
+	      id = XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST);
+	      /*
+	      XtUnmanageChild(id);
+	      */
+	      XtUnmapWidget(id);
+	    }
+	  XtFree(str);
+	}
+        if(tag == DID_COMMAND)
+	{
+	  did_prepare_command(str);
+	  XtFree(str);
+	}
+}
+
+int get_type_size(char type)
+{
+  int size;
+
+  switch(type)
+    {
+    case 'L':
+    case 'l':
+      size = sizeof(long);
+      break;
+    case 'I':
+    case 'i':
+      size = sizeof(int);
+      break;
+    case 'S':
+    case 's':
+      size = sizeof(short);
+      break;
+    case 'F':
+    case 'f':
+      size = sizeof(float);
+      break;
+    case 'D':
+    case 'd':
+      size = sizeof(double);
+      break;
+    case 'C':
+    case 'c':
+    default:
+      size = 1;
+    }
+  return(size);
+}
+
+void did_prepare_command(char *str)
+{
+char type;
+int num;
+int size, full_size = 0;
+char *ptr;
+static int last_size = 0;
+static void *last_buffer = 0;
+void *buffer_ptr;
+char *str_ptr;
+void did_read_string(char, int, void **, char **);
+
+   str_ptr = str; 
+   ptr = Curr_service_format; 
+   while(*ptr)
+   { 
+     type = *ptr++;
+     if(*ptr == ':')
+       {
+	 ptr++;
+	 size = get_type_size(type);
+	 sscanf(ptr, "%d", &num);
+	 full_size += size * num;
+	 if( (ptr = strchr(ptr,';')) )
+	   ptr++;
+	 else
+	   break;
+       }
+   }
+
+   full_size += 256;
+   if(full_size > last_size)
+   {
+      if(last_size)
+	free(last_buffer);
+      last_buffer = malloc(full_size);
+      last_size = full_size;
+   }
+   buffer_ptr = last_buffer;
+   ptr = Curr_service_format; 
+   while(*ptr)
+   { 
+     type = *ptr++;
+     if(*ptr == ':')
+       {
+	 ptr++;
+	 sscanf(ptr, "%d", &num);
+	 did_read_string(type, num, &buffer_ptr, &str_ptr);  
+	 if(!str_ptr)
+	     break;
+	 if( (ptr = strchr(ptr,';')) )
+	   ptr++;
+	 else
+	   break;
+       }
+       else
+       {
+	 did_read_string(type, 0, &buffer_ptr, &str_ptr);
+	 break;
+       }
+   }
+   full_size = (int) ((char *)buffer_ptr - (char *)last_buffer);
+   dic_cmnd_service(Curr_service_name,last_buffer,full_size);
+}
+
+int read_str_int(char *str)
+{
+  int i;
+  if((str[0] == '0') && (str[1] == 'x'))
+    sscanf(str+2,"%x",&i);
+  else
+    sscanf(str,"%d",&i);
+  return(i);
+}
+
+int read_str_char(char *str, char *cc)
+{
+
+  if(str[0] == '\'')
+    *cc = str[1];
+  else if(str[0] == '\"')
+    return(0);
+  else if((str[0] == '0') && (str[1] == 'x'))
+    sscanf(str+2,"%x",(int *)cc);
+  else if(isalpha(str[0]))
+    return(-1);
+  else
+    sscanf(str,"%d",(int *)cc);
+  return(1);
+}
+
+void did_read_string(char type, int num, void **buffer_ptr, char **str_ptr)
+{
+int i, ret = 0;
+float ff;
+double dd;
+void *ptr;
+char *strp, *ptr1;
+char cc;
+ short s;
+
+  strp = *str_ptr; 
+  ptr = *buffer_ptr;
+  if(!num)
+    num = 1000000;
+  switch(type)
+    {
+    case 'L':
+    case 'l':
+    case 'I':
+    case 'i':
+      for(i = 0; i<num; i++)
+      {
+	*(int *)ptr = read_str_int(strp);
+	ptr = (int *)ptr +1;
+	if( (strp = strchr(strp,' ')) )
+	  strp++;
+	else
+	  break;
+      }
+      break;
+    case 'S':
+    case 's':
+      for(i = 0; i<num; i++)
+      {
+	s = (short)read_str_int(strp);
+	*((short *)ptr) = s;
+	ptr = (short *)ptr +1;
+	if( (strp = strchr(strp,' ')) )
+	  strp++;
+	else
+	  break;
+      }
+      break;
+    case 'F':
+    case 'f':
+      for(i = 0; i<num; i++)
+      {
+	sscanf(strp,"%f",&ff);
+	*(float *)ptr = ff;
+	ptr = (float *)ptr +1;
+	if( (strp = strchr(strp,' ')) )
+	  strp++;
+	else
+	  break;
+      }
+      break;
+    case 'D':
+    case 'd':
+      for(i = 0; i<num; i++)
+      {
+	sscanf(strp,"%f",&ff);
+	dd = (double)ff;
+	*(double *)ptr = dd;
+	ptr = (double *)ptr +1;
+	if( (strp = strchr(strp,' ')) )
+	  strp++;
+	else
+	  break;
+      }
+      break;
+    case 'C':
+    case 'c':
+    default:
+      for(i = 0; i<num; i++)
+      {
+	if((ret = read_str_char(strp, &cc)) <= 0)
+	  break;
+	*(char *)ptr = cc;
+	ptr = (char *)ptr +1;
+	if( (strp = strchr(strp,' ')) )
+	  strp++;
+	else
+	  break;
+      }
+      if(ret <= 0)
+      {
+	if(!ret)
+	{
+	  strp++;
+	}
+	num = strlen(strp)+1;
+	strncpy((char *)ptr,strp,num);
+	if( (ptr1 = (char *)strchr((char *)ptr,'\"')) )
+	{
+	  num--;
+	  *ptr1 = '\0';
+	}
+	ptr = (char *)ptr + num;
+	if( (strp = strchr(strp,' ')) )
+	  strp++;
+	else
+	  break;
+      }
+    }
+  *buffer_ptr = ptr;
+  *str_ptr = strp;
+}
+
+void cancel_pop_up (Widget w, int tag, unsigned long *reason)
+{
+	void print_service_formatted();
+
+	if(reason){}
+	if(tag == MAX_POP_UPS+1)
+	{
+	  print_service_formatted(Service_buffer,Service_size);
+		set_something(Content_label_id,XmNlabelString, Service_content_str);
+		Curr_service_print_type = 0;
+	}
+	/*
+	else if(tag == MAX_POP_UPS+2)
+	{
+		print_service_float(Service_buffer, ((Service_size - 1) / 4) + 1);
+		set_something(Content_label_id,XmNlabelString, Service_content_str);
+		Curr_service_print_type = 1;
+	}
+	else if(tag == MAX_POP_UPS+3)
+	{
+		print_service_double(Service_buffer, ((Service_size - 1) / 4) + 1);
+		set_something(Content_label_id,XmNlabelString, Service_content_str);
+		Curr_service_print_type = 2;
+	}
+	*/
+	else if(tag == MAX_POP_UPS+4)
+	{
+
+	      if((!strstr(Curr_service_name,"/SERVICE_LIST")) && 
+		 (!strstr(Curr_service_name,"/CLIENT_LIST")) &&
+		 (!strstr(Curr_service_name,"/SERVER_LIST")))
+		{
+		  if(Curr_service_id)
+		  {
+		      dic_release_service(Curr_service_id);
+		      Curr_service_id = 0;
+		  }
+		  Curr_service_id = dic_info_service_stamped(Curr_service_name,
+						     MONITORED,10,0,0,
+						     recv_service_info,0,
+						     &no_link_int,4);
+		}
+		XtSetSensitive(w, False);
+		XtSetSensitive(SubscribeButton, True);
+	}
+	else if(tag == MAX_POP_UPS+5)
+	{
+
+	      if((!strstr(Curr_service_name,"/SERVICE_LIST")) && 
+		 (!strstr(Curr_service_name,"/CLIENT_LIST")) &&
+		 (!strstr(Curr_service_name,"/SERVER_LIST")))
+		{
+		  if(Curr_service_id)
+		  {
+		      dic_release_service(Curr_service_id);
+		      Curr_service_id = 0;
+		  }
+		  Curr_service_id = dic_info_service_stamped(Curr_service_name,
+						     MONITORED,0,0,0,
+						     recv_service_info,0,
+						     &no_link_int,4);
+		}
+		XtSetSensitive(w, False);
+		XtSetSensitive(Subscribe10Button, True);
+	}
+/*
+	else if(tag == 5)
+	{
+	  *
+		XtUnmapWidget(XtParent(pop_widget_id[4]));
+	  *
+	}
+*/
+	else if(tag == DID_SERVICE)
+	{
+	  if(Curr_service_id)
+	    {
+	      dic_release_service(Curr_service_id);
+	      Curr_service_id = 0;
+	    }
+            XtUnmanageChild(pop_widget_id[DID_SERVICE]);
+	    free(Service_content_str);
+	    free(Service_buffer);
+	}
+}
+
+void create_matrix(Widget w, int *tag, unsigned long *reason)
+{
+
+	if(reason){}
+	Matrix_id[*tag] = w;
+	if(*tag)
+		XtUnmanageChild(w);
+	else
+		Curr_matrix = 0;
+}
+
+void create_label(Widget w, int *tag, unsigned long *reason)
+{
+	if(reason){}
+	if(!*tag)
+		Label_id = w;
+	else
+		Content_label_id = w;
+}
+
+void switch_matrix()
+{
+	/*
+	XtUnmanageChild(Matrix_id[Curr_matrix]);
+	Curr_matrix = (Curr_matrix) ? 0 : 1;
+	XtManageChild(Matrix_id[Curr_matrix]);
+	*/
+	XmScrolledWindowSetAreas(Window_id,NULL, NULL, Matrix_id[Curr_matrix]); 
+}
+
+/*
+static int curr_allocated_size = 0;
+static DNS_SERVER_INFO *dns_info_buffer;
+*/
+
+void update_servers_new(int *tag, char *buffer, int *size)
+{
+	if(tag){}
+	if(size){}
+	printf("Server_list:\n%s\n",buffer);
+}
+
+SERVER *find_server(char *node, int pid)
+{
+  SERVER *servp;
+  DNS_SERVER_INFO *ptr;
+
+  servp = Server_head;
+  while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+    {
+      ptr = &servp->server;
+      if((ptr->pid == pid) && (!strcmp(ptr->node,node)))
+	{
+	  return(servp);
+	}
+    }
+  return ((SERVER *)0);
+}
+	  /*
+	if(!(servp = (SERVER *)sll_search((SLL *)Server_head, 
+		(char *)&buffer->server, MAX_NODE_NAME+MAX_TASK_NAME-4)))
+	  */
+
+
+void update_servers(int *tag, DNS_DID *buffer, int *size)
+{
+int n_services, service_size;
+SERVER *servp;
+int j;
+char str[MAX_NAME], sname[MAX_NAME], *ptr;
+
+	if(tag){}
+	if(!Server_head)
+	{
+		Server_head = (SERVER *)malloc(sizeof(SERVER));
+		sll_init((SLL *)Server_head);
+	}
+	if(First_time)
+	{
+		switch_matrix();
+		First_time = 0;
+	}
+
+	if(!*size)
+		return;
+	if(*(char *)buffer == -1)
+	{
+		N_servers = 0;
+		N_services = 0;
+		return;
+	}
+	buffer->server.n_services = vtohl(buffer->server.n_services);
+	buffer->server.pid = vtohl(buffer->server.pid);
+	n_services = buffer->server.n_services;
+
+	if(n_services == 1)
+	  return;
+	strcpy(sname, buffer->server.task);
+	if(n_services > 1)
+	{
+		for(j = 0; j < n_services; j++)
+		{
+			buffer->services[j].type = vtohl(
+				buffer->services[j].type);
+			buffer->services[j].status = vtohl(
+				buffer->services[j].status);
+			buffer->services[j].n_clients = vtohl(
+				buffer->services[j].n_clients);
+			if(strlen(sname) == MAX_TASK_NAME-4-1)
+			{
+				strcpy(str,buffer->services[j].name);
+				if( (ptr = strstr(str,"/CLIENT_LIST")) )
+				{
+					*ptr = '\0';
+					strcpy(sname,str);
+				}
+			}
+		}
+	}
+	if (!(servp = find_server(buffer->server.node,buffer->server.pid)))
+	  /*
+	if(!(servp = (SERVER *)sll_search((SLL *)Server_head, 
+		(char *)&buffer->server, MAX_NODE_NAME+MAX_TASK_NAME-4)))
+	  */
+	{
+		if(n_services)
+		{
+			servp = (SERVER *)malloc(sizeof(SERVER));
+			strcpy(servp->name,sname);
+			servp->next = 0;
+			servp->button_id = 0;
+			servp->pop_widget_id[0] = 0;
+			servp->pop_widget_id[1] = 0;
+			servp->busy = 0;
+			servp->server.n_services = 0;
+			servp->service_ptr = 0;
+			sll_insert_queue((SLL *)Server_head,(SLL *)servp);
+		}
+	}
+	if(n_services != 0)
+	{
+		if(n_services == servp->server.n_services)
+		{
+			return;
+		}
+		if(servp->server.n_services == 0)
+			N_servers++;
+		if(servp->server.n_services != -1)
+			N_services -= servp->server.n_services;
+		memcpy(&servp->server,&buffer->server,sizeof(DNS_SERVER_INFO));
+		if(servp->service_ptr)
+		{
+			free(servp->service_ptr);
+			servp->service_ptr = 0;
+		}
+		if(n_services != -1)
+		{
+			service_size = n_services*sizeof(DNS_SERVICE_INFO);
+			servp->service_ptr = (DNS_SERVICE_INFO *)malloc(service_size);
+			memcpy(servp->service_ptr, buffer->services, service_size);
+			N_services += n_services;
+		}
+		servp->busy = 1;
+	}
+	else
+	{
+	  if(servp)
+	    {
+		N_servers--;
+		if(servp->server.n_services != -1)
+		  {
+			N_services -= servp->server.n_services;
+		  }
+		else
+		  Force_update = 1;
+		servp->server.n_services = 0;
+		servp->busy = -1;
+	    }
+	}
+}
+
+void show_servers()
+{
+SERVER *servp;
+void update_show_servers();
+void remove_all_buttons();
+void put_label();
+
+	if(!Matrix_id[Curr_matrix])
+		return;
+	remove_all_buttons();
+	
+#ifndef linux	
+	switch_matrix();
+#endif
+	put_label();
+	servp = Server_head;
+	while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+	{
+	  servp->busy = 1;
+	}
+	Force_update = 1;                
+}
+
+void update_show_servers(void *tag, unsigned long *reason)
+{
+DNS_SERVER_INFO *server_ptr;
+DNS_SERVICE_INFO *service_ptr;
+int i, j, found, n_done = 0;
+Widget w, create_button();
+SERVER *servp, *prevp;
+static int old_n_services = 0;
+char node[MAX_NODE_NAME], par[MAX_NODE_NAME], *ptr;
+void remove_button();
+void remove_all_buttons();
+void put_label();
+
+    DISABLE_AST
+	if(tag){}
+	if(reason){}
+    if((N_services != old_n_services) || (Force_update))
+    {
+        if(!Matrix_id[Curr_matrix])
+	{
+	    XtAppAddTimeOut(app_context, 1000, update_show_servers, 0);
+	    ENABLE_AST
+	    return;
+	}
+	if(!N_servers)
+	{
+		remove_all_buttons();
+		if(! No_link_button_id)
+		{
+			No_link_button_id = create_button("DNS is down", 0);
+			set_color(No_link_button_id, XmNbackground, RED);
+		        get_something(No_link_button_id,XmNuserData,&w);
+			set_color(w, XmNbackground, RED);
+			XtSetSensitive(No_link_button_id, False);
+		}
+		while(!sll_empty((SLL *)Server_head))
+		{
+			servp = (SERVER *)sll_remove_head((SLL *)Server_head);
+			if(servp->service_ptr)
+				free(servp->service_ptr);
+			free(servp);
+		}
+		put_label();
+		old_n_services = N_services;
+		Force_update = 0;
+		XtAppAddTimeOut(app_context, 1000, update_show_servers, 0); 
+		ENABLE_AST
+		return;
+	}
+	if(No_link_button_id)
+	{
+		XtDestroyWidget(No_link_button_id);
+		/*
+		XFlush(XtDisplay(No_link_button_id));
+		*/
+		No_link_button_id = 0;
+        }
+	servp = Server_head;
+	prevp = 0;
+	while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+	{
+		if(prevp)
+		{
+			free(prevp);
+			prevp = 0;
+		}
+		if(n_done == 10)
+		{
+		    if(!Force_update)
+		        put_label();
+		    XtAppAddTimeOut(app_context, 100, update_show_servers, 0);
+		    ENABLE_AST
+		    return;
+		}
+		server_ptr = &servp->server;
+		if(servp->busy == 1)
+		{
+			if(!servp->button_id)
+			{
+			switch(Curr_view_opt)
+			{
+				case 1 :
+				  servp->button_id = create_button(/*server_ptr->task*/servp->name, servp);
+					n_done++;
+					break;
+				case 0 :
+				  strcpy(node, server_ptr->node);
+				  strcpy(par, Curr_view_opt_par);
+				  ptr = strchr(node, '.');
+				  if(ptr)
+				    *ptr = '\0';
+				  ptr = strchr(par,'.');
+				  if(ptr)
+				    *ptr = '\0';
+				  ptr = node;
+				  for(i = 0; i < (int)strlen(ptr); i++)
+				    ptr[i] = tolower(ptr[i]);
+				  ptr = par;
+				  for(i = 0; i < (int)strlen(ptr); i++)
+				    ptr[i] = tolower(ptr[i]);
+					 if(!strcmp(/*server_ptr->*/node, /*Curr_view_opt_*/par))
+					{
+						servp->button_id = create_button(/*server_ptr->task*/servp->name, servp);
+						n_done++;
+					}
+					break;
+				case 2 :
+					found = 0;
+					if(!(service_ptr = servp->service_ptr))
+						break;
+					for(j = 0; j < server_ptr->n_services; j++)
+					{
+						if(strstr(service_ptr->name, Curr_view_opt_par) > (char *)0)
+						{
+							found = 1;
+							break;
+						}
+						service_ptr++;
+					}
+					if (found)
+					  {
+						servp->button_id = create_button(/*server_ptr->task*/servp->name, servp);
+						n_done++;
+					  }
+					break;
+				case 3 :
+					if(server_ptr->n_services == -1)
+					{
+						servp->button_id = create_button(/*server_ptr->task*/servp->name, servp);
+						n_done++;
+					}
+					else
+					{
+						if(servp->button_id)
+							remove_button(servp);
+					}
+					n_done++;
+					break;
+			}
+			}
+			servp->busy = 2;
+			if(servp->button_id)
+			{
+				if(Curr_view_opt != -1)
+				{
+					if (server_ptr->n_services == -1)
+					{
+						set_color(servp->button_id, XmNbackground, RED);
+						get_something(servp->button_id,XmNuserData,&w);
+						set_color(w, XmNbackground, RED);
+					}
+					else
+					{
+						set_color(servp->button_id, XmNbackground, GREEN);
+						get_something(servp->button_id,XmNuserData,&w);
+						set_color(w, XmNbackground, GREEN);					 
+					}
+				}
+			}
+		}
+		else if (servp->busy == -1)
+		{
+			remove_button(servp);
+			sll_remove((SLL *)Server_head, (SLL *)servp);
+			if(servp->service_ptr)
+			{
+				free(servp->service_ptr);
+				servp->service_ptr = 0;
+			}
+			prevp = servp;
+			n_done++;
+		}
+	}
+	if(prevp)
+	{
+		free(prevp);
+		prevp = 0;
+	}
+	put_label();
+	old_n_services = N_services;
+	Force_update = 0;
+    }
+    XtAppAddTimeOut(app_context, 1000, update_show_servers, 0);
+    ENABLE_AST
+}
+
+Widget create_button(char *name, SERVER *servp)
+{
+Arg arglist[10];
+int n, n_services = -1;
+Widget w, ww, w_id;
+void activate_services(), activate_clients();
+char w_name[MAX_NAME];
+	
+	w_name[0] = 0;
+	if(servp)
+		n_services = servp->server.n_services;
+    strcpy(w_name,name);
+	if(strlen(w_name) >= MAX_TASK_NAME - 4)
+	  w_name[16] = '\0';
+	n = 0;
+    XtSetArg(arglist[n], XmNorientation, XmVERTICAL);  n++;
+    XtSetArg(arglist[n], XmNentryAlignment, XmALIGNMENT_CENTER);  n++;
+	w_id = w = XmCreateMenuBar(Matrix_id[Curr_matrix],
+				(String)XmStringCreateLtoR ( w_name,XmSTRING_DEFAULT_CHARSET),
+				arglist,n);
+/*				
+	if(n_services == -1)
+		set_color(w, XmNbackground, RED);
+	else
+		set_color(w, XmNbackground, GREEN);
+*/
+	XtManageChild(w);
+	strcat(w_name,"1"); 
+	n = 0;
+    XtSetArg(arglist[n], XmNalignment, XmALIGNMENT_CENTER);  n++;
+	XtSetArg(arglist[n], XmNfontList, did_server_font);  n++;
+	w = XmCreateCascadeButton(w,
+				(String)XmStringCreateLtoR ( w_name,XmSTRING_DEFAULT_CHARSET),
+				arglist,n);
+	set_something(w,XmNlabelString,name);
+	set_something(w,XmNalignment,XmALIGNMENT_CENTER);
+/*
+	if(n_services == -1)
+		set_color(w, XmNbackground, RED);
+	else
+		set_color(w, XmNbackground, GREEN);
+*/
+	set_something(w_id,XmNuserData,w);
+	strcat(w_name,"1"); 
+		n = 0;
+		ww = XmCreatePulldownMenu(w_id,
+				(String)XmStringCreateLtoR ( w_name,XmSTRING_DEFAULT_CHARSET),
+				arglist,n);
+		set_something(w,XmNsubMenuId,ww);
+		XtManageChild(w);
+		strcat(w_name,"1"); 
+		n = 0;
+		XtSetArg(arglist[n], XmNfontList, did_default_font);  n++;
+		w = XmCreatePushButton(ww,
+				(String)XmStringCreateLtoR ( w_name,XmSTRING_DEFAULT_CHARSET),
+				arglist,n);
+
+		set_something(w,XmNlabelString,"Services");
+	if(servp)
+	{
+		XtAddCallback(w,XmNactivateCallback, activate_services, servp);
+		XtManageChild(w);
+		strcat(w_name,"1"); 
+		n = 0;
+		XtSetArg(arglist[n], XmNfontList, did_default_font);  n++;
+		w = XmCreatePushButton(ww,
+				(String)XmStringCreateLtoR ( w_name,XmSTRING_DEFAULT_CHARSET),
+				arglist,n);
+
+		set_something(w,XmNlabelString,"Clients");
+		XtAddCallback(w,XmNactivateCallback, activate_clients, servp);
+		XtManageChild(w);
+		/*
+		servp->popping = 0;
+		create_client_popup(servp);
+		*/
+	}
+	return(w_id);
+}
+
+void remove_all_buttons()
+{
+SERVER *servp;
+
+	servp = Server_head;
+	while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+	{
+		if(servp->button_id)
+		{
+			XtDestroyWidget(servp->button_id);
+			servp->button_id = 0;
+			servp->busy = 0;
+		}
+	}
+}
+
+void remove_button(SERVER *servp)
+{
+
+	if(servp->button_id)
+	{
+		XtDestroyWidget(servp->button_id);
+		servp->button_id = 0;
+		servp->busy = 0;
+	}
+}
+
+void activate_services(Widget w, SERVER *servp, unsigned long *reason)
+{
+DNS_SERVER_INFO *ptr;
+char str[MAX_NAME];
+Widget id,sel_id;
+void got_service_list();
+void kick_it();
+
+	if(w){}
+	if(reason){}
+	if(servp->pop_widget_id[0])
+	{
+		XtDestroyWidget(servp->pop_widget_id[0]);
+		servp->pop_widget_id[0] = 0;
+		/*
+		return;
+		*/
+	}
+	Curr_servp = servp;
+	ptr = &servp->server;
+
+	sel_id = put_popup(servp, 0,"Service Info");
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_OK_BUTTON);
+	XtUnmanageChild(id);
+	
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST_LABEL);
+	if (ptr->pid > 0x1000000)
+		sprintf(str,"Server %s (pid = %X) on node %s\n\nprovides %d services :\n",
+			servp->name, ptr->pid, ptr->node, ptr->n_services);
+	else
+		sprintf(str,"Server %s (pid = %d) on node %s\n\nprovides %d services :\n",
+			servp->name, ptr->pid, ptr->node, ptr->n_services);
+	set_something(sel_id,XmNlistLabelString,str);
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST);
+	Curr_service_list_id = id;
+
+	XmListAddItem(id,create_str(
+          "Ordering services alphabeticaly, please be patient..."),1);
+
+	set_something(id,XmNlistItemCount,1);
+	set_something(id,XmNlistVisibleItemCount,1);
+	
+	sprintf(str,"%s/SERVICE_LIST",/*ptr->task*/servp->name);
+	dic_info_service(str,ONCE_ONLY,20,0,0,
+			 got_service_list,(long)servp,"None",5);
+	/*
+#ifdef solaris
+	*/
+	/*
+	XtAppAddTimeOut(app_context, 1000, kick_it, 0);
+	*/
+	/*
+#endif
+	*/
+}
+
+void kick_it()
+{
+  printf("kick_it\n");
+}
+
+typedef char DID_SLOT[MAX_NAME];
+
+void got_service_list(SERVER **servp_ptr, char *buffer, int *size)
+{
+SERVER *servp;
+void do_got_service_list();
+
+	if(size){}
+	servp = *servp_ptr;
+	if(Curr_service_list)
+	  free(Curr_service_list);
+	Curr_service_list = malloc(strlen(buffer)+1);
+	strcpy(Curr_service_list, buffer);
+	/*
+#ifdef solaris
+	*/
+	Got_Service_List = servp;
+	/*
+#else
+	do_got_service_list(servp);
+#endif
+	*/
+}
+
+void do_got_service_list(SERVER *servp)
+{
+char cmd_str[256], svc_str[256];
+DNS_SERVER_INFO *ptr;
+DNS_SERVICE_INFO *service_ptr;
+Widget id;
+char *curr_str, max_str[MAX_NAME], *sptr;
+DID_SLOT *service_list;
+int i, j, curr_index = 0, n_services;
+XmString xstr;
+void delete_str();
+
+	ptr = &servp->server;
+	id = Curr_service_list_id;
+	
+	XmListDeleteAllItems(id);
+	
+	strcpy(cmd_str,"CMD: ");
+	strcpy(svc_str,"SVC: ");
+
+	service_ptr = servp->service_ptr;
+	service_list = (DID_SLOT *)malloc(ptr->n_services * MAX_NAME);
+	n_services = ptr->n_services;
+
+	for(i=0;i<n_services; i++)
+	{
+	  strcpy(service_list[i],service_ptr->name);
+	  service_ptr++;
+	}
+	strcpy(max_str,"zzzzzzzzzzzzzzzzzzzzzzzzzzzz");
+	for(i=0;i<n_services; i++)
+	{
+	  curr_str = max_str;
+	  for(j=0;j<n_services; j++)
+	  {
+	    sptr = service_list[j];
+	    if(!*sptr)
+	      continue;
+	    
+	    if(strcmp(sptr,curr_str) < 0)
+	    {
+	      curr_str = sptr;
+	      curr_index = j;
+	    }
+	  }
+	  service_list[curr_index][0] = '\0';
+	  service_ptr = &(servp->service_ptr[curr_index]);
+	  if(service_ptr->type)
+	  {
+	    strcpy(&cmd_str[5],service_ptr->name);
+	    xstr = create_str(cmd_str);
+	    XmListAddItem(id,xstr,i+1);
+	    delete_str(xstr);
+	  }
+	  else
+	  {
+	    strcpy(&svc_str[5],service_ptr->name);
+	    xstr = create_str(svc_str);
+	    XmListAddItem(id,xstr,i+1);
+	    delete_str(xstr);
+	  }
+	}
+	free(service_list);
+	
+	set_something(id,XmNlistItemCount,i);
+	set_something(id,XmNlistVisibleItemCount,(i < 20) ? i : 20);
+}
+
+void show_clients(SERVER **servp_ptr, char *buffer, int *size)
+{
+SERVER *servp;
+void do_show_clients();
+
+	if(size){}
+	servp = *servp_ptr;
+	if(Curr_client_list)
+	  free(Curr_client_list);
+	Curr_client_list = malloc(strlen(buffer)+1);
+	strcpy(Curr_client_list, buffer);
+	/*
+#ifdef solaris
+	*/
+	Got_Client_List = servp;
+	/*
+#else
+	do_show_clients(servp);
+#endif
+	*/
+}
+
+void do_show_clients(SERVER *servp)
+{
+int i = 0;
+char str[2048], *strp, *strp1;
+DNS_SERVER_INFO *ptr;
+XmString xstr;
+void delete_str();
+
+	ptr = &servp->server;
+	/*
+	sel_id = servp->pop_widget_id[1];
+	id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST_LABEL);
+	*/
+	if(Curr_client_list[0] == -1) 
+	{
+		sprintf(str,"Information not available\n");
+		XmListAddItem(Curr_client_id,create_str(str),i+1);
+		/*
+		set_something(sel_id,XmNlistLabelString,str);
+		*/
+		return;
+	}
+	/*
+	sprintf(str,"Clients of %s are :                                  \n",
+	ptr->task);
+	set_something(sel_id,XmNlistLabelString,str);
+	
+	id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST);
+	XmListDeleteAllItems(id);
+	*/
+	strp1 = Curr_client_list;
+	while(strp1) 
+	{
+		if(!*strp1)
+			break;
+		sprintf(str,"Process ");
+		strp = strp1;
+		strp1 = strchr(strp,'@');
+		*strp1 = '\0';
+		strp1++;
+		strcat(str,strp);
+		strcat(str," on node ");
+		strp = strp1;
+		if( (strp1 = strchr(strp,'|')) )
+		{
+			*strp1 = '\0';
+			strp1++;
+		}
+		strcat(str,strp);	
+		xstr = create_str(str);
+		XmListAddItem(Curr_client_id,xstr,i+1);
+		delete_str(xstr);
+       		i++;
+	}
+	if(!i)
+	{
+		sprintf(str,"NONE");
+		xstr = create_str(str);
+		XmListAddItem(Curr_client_id,xstr,i+1);
+		delete_str(xstr);
+	}
+	/*
+	set_something(id,XmNlistItemCount,i);
+	*/
+	/*
+	if(Matrix_id[Curr_matrix])
+	  XFlush(XtDisplay(Matrix_id[Curr_matrix]));
+	*/
+}
+
+void activate_clients(Widget w, SERVER *servp, unsigned long *reason)
+{
+DNS_SERVER_INFO *ptr;
+char str[100];
+void show_clients();
+void kick_it_again();
+Widget id,sel_id;
+
+	if(w) {}
+	if(reason){}
+	Curr_servp = servp;
+	ptr = &servp->server;
+	if(servp->pop_widget_id[1])
+	  {
+		XtDestroyWidget(servp->pop_widget_id[1]);
+		servp->pop_widget_id[1] = 0;
+	  }
+	sel_id = put_popup(servp,1,"Client Info");
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_HELP_BUTTON);
+	XtUnmanageChild(id);
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_APPLY_BUTTON);
+	XtUnmanageChild(id);
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_CANCEL_BUTTON);
+	XtUnmanageChild(id);
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_TEXT);
+	XtUnmanageChild(id);
+
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_SELECTION_LABEL);
+	XtUnmanageChild(id);
+	/*
+	id = (Widget)XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST_LABEL);
+	*/
+	id = XmSelectionBoxGetChild(sel_id,XmDIALOG_LIST);
+	XmListDeleteAllItems(id);
+
+	Curr_client_id = id;
+	sprintf(str,"Clients of %s are :                                   \n",
+		servp->name);
+	set_something(sel_id,XmNlistLabelString,str);
+
+	sprintf(str,"%s/CLIENT_LIST",/*ptr->task*/servp->name);
+	dic_info_service(str,ONCE_ONLY,10,0,0,
+			 show_clients,(long)servp,&no_link,1);
+	/*
+#ifdef solaris
+	*/
+	/*
+	XtAppAddTimeOut(app_context, 1000, kick_it_again, 0); 
+	*/
+	/*
+#endif
+	*/
+}
+
+void kick_it_again()
+{
+  printf("kick_it_again\n");
+}
+
+Widget put_popup(SERVER *servp, int type, char *title)
+{
+    Widget id;
+    void activate_services(), activate_clients();
+	extern void set_title();
+
+		if(type)
+		{
+		    id = create_client_dialog();
+		    /*
+		    XtAddCallback(id,XmNokCallback, activate_clients, servp);
+		    XtAddCallback(id,XmNcancelCallback, activate_clients, servp);
+		    */
+		}
+		else
+		{
+		    id = create_server_dialog();
+		    /*
+		    XtAddCallback(id,XmNcancelCallback, activate_services, servp);
+		    */
+		}
+		servp->pop_widget_id[type] = id;
+		/*
+	}
+		*/
+	XtManageChild(id);
+	set_title(XtParent(id),title);
+	return(id);
+}	
+
+Widget put_selection(int tag, char *title)
+{
+    Widget id = 0;
+	extern void set_title();
+
+    if(pop_widget_id[tag])
+    {
+		XtDestroyWidget(pop_widget_id[tag]);
+    }
+	  switch(tag)
+	  {
+	    case DID_SEL_NODE:
+	      id = create_node_selection();
+	      break;
+	    case DID_SEL_SERVICE:
+	      id = create_service_selection();
+	      break;
+	    case DID_KILL_ALL:
+	      id = create_kill_confirmation();
+	      break;
+	    case DID_SERVICE:
+	      id = create_service_dialog();
+	      break;
+	    case DID_COMMAND:
+	      id = create_send_command();
+	      break;
+	  }
+	  
+	   pop_widget_id[tag] = id;
+	XtManageChild(id);
+	set_title(XtParent(id),title);
+	return(id);
+}	
+
+void check_put_label(int tag)
+{
+	static int old_n_services = 0;
+	static int changing = 0;
+	void put_label();
+
+	if(tag){}
+	if(N_services != old_n_services)
+	{
+		put_label();
+		if(N_services > old_n_services)
+		  changing = 1;
+		old_n_services = N_services;
+	
+#ifdef linux
+		show_servers();
+#endif
+	}
+/*
+	else
+	{
+	  if(changing)
+	  {
+	    show_servers();
+	    changing = 0;
+	  }
+	}
+*/
+}
+
+void put_label()
+{
+	char str[MAX_NAME], str1[MAX_NAME];
+			
+	DISABLE_AST
+	sprintf(str,"%d Servers known - %d Services Available\n",
+		N_servers,N_services);
+	switch(Curr_view_opt)
+	{
+		case 1 :
+			strcat(str,"Displaying ALL Servers");
+			break;
+		case 0 :
+			sprintf(str1,"Displaying Servers on node %s",Curr_view_opt_par);
+			strcat(str,str1);
+			break;
+		case 2 :
+			sprintf(str1,"Displaying Servers providing Service *%s*",
+				Curr_view_opt_par);
+			strcat(str,str1);
+			break;
+		case 3 :
+			strcat(str,"Displaying Servers in ERROR");
+			break;
+		case -1 :
+			strcat(str,"Please Select Viewing Option");
+			break;
+	}
+	set_something(Label_id,XmNlabelString,str);
+	XFlush(XtDisplay(Label_id));
+	ENABLE_AST
+}
+
+Widget create_client_dialog()
+{
+  Widget id;
+  id = create_selection_dialog("Dismiss","","","","",DID_CLIENTS, 3);
+  return(id);
+  
+}
+
+Widget create_server_dialog()
+{
+  Widget id;
+  id = create_selection_dialog("","View / Send","Dismiss","",
+			       "Service / Command :",
+			       DID_SERVICES, 20);
+  return(id);
+}
+
+Widget create_node_selection()
+{
+  Widget id;
+  id = create_selection_dialog("","","","Nodes :","Selected Node :",DID_SEL_NODE, 8);
+  return(id);
+  
+}
+
+Widget create_service_selection()
+{
+  Widget id;
+  /*
+  id = create_prompt_dialog("Enter Service Name :",DID_SEL_SERVICE);
+  */
+  id = create_selection_dialog("","","","","Enter Service Name (or search string):",DID_SEL_SERVICE, 0);
+  return(id);
+  
+}
+
+Widget create_send_command()
+{
+  Widget id;
+  char str[256], str1[256];
+
+  sprintf(str,"Command to %s (%s)\n\n",
+	  Curr_service_name, Curr_service_format);
+
+  id = create_selection_dialog("","","",str,"Command:",DID_COMMAND, 1);
+
+  strcpy(str1,"Please enter items separated by spaces:\n(for example: 2 0x123 'A' 23.4 \"a text\")");
+
+  set_something(id,XmNselectionLabelString,str1);
+
+  return(id);
+  
+}
+
+Widget create_kill_confirmation()
+{
+  Widget id;
+  id = create_question_dialog("Do you really want to kill ALL DIM servers ?",
+			      DID_KILL_ALL);
+  return(id);
+  
+}
+
+Widget create_selection_dialog(char *ok, char *apply, char *cancel, char *list, char *sel, 
+							   long tag, int items)
+{
+Widget sd;
+XmString xmOk, xmApply, xmCancel, xmList, xmSelection;
+Arg ar[20];
+int n;
+        
+    xmList = create_str(list);
+    xmOk = create_str(ok);
+    xmApply = create_str(apply);
+    xmCancel = create_str (cancel);
+    xmSelection = create_str (sel);
+
+    n = 0;
+    /*
+    XtSetArg(ar[n],XmNdialogStyle,XmDIALOG_FULL_APPLICATION_MODAL); n++;
+    XtSetArg(ar[n],XmNmwmFunctions,MWM_FUNC_MOVE); n++;
+    */
+    XtSetArg(ar[n],XmNtitle,"Selection"); n++;
+    XtSetArg(ar[n],XmNlabelFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNbuttonFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNtextFontList, did_small_font); n++;
+    XtSetArg(ar[n],XmNborderWidth, 1); n++;
+    XtSetArg(ar[n],XmNlistLabelString, xmList); n++;
+    XtSetArg(ar[n],XmNlistVisibleItemCount,items); n++;
+    if(ok[0])
+      {
+      XtSetArg(ar[n],XmNokLabelString, xmOk); n++;
+      }
+    if(apply[0])
+      {
+      XtSetArg(ar[n],XmNapplyLabelString, xmApply); n++; 
+      }
+    if(cancel[0])
+      {
+      XtSetArg(ar[n],XmNcancelLabelString, xmCancel); n++;
+      }
+    if(sel[0])
+      {
+      XtSetArg(ar[n],XmNselectionLabelString, xmSelection); n++;
+      }
+    sd = XmCreateSelectionDialog ( toplevel_widget, "Selection", ar, n );
+    XmStringFree(xmList);
+    XmStringFree(xmOk);
+    XmStringFree(xmApply);
+    XmStringFree(xmCancel);
+    XmStringFree(xmSelection);
+    if(tag >= 0)
+      {
+	  XtAddCallback ( sd, XmNcancelCallback, 
+		(XtCallbackProc)cancel_pop_up, (XtPointer)tag );
+	  XtAddCallback ( sd, XmNapplyCallback, 
+		(XtCallbackProc)ok_pop_up, (XtPointer)tag );
+	  XtAddCallback ( sd, XmNokCallback, 
+		(XtCallbackProc)ok_pop_up, (XtPointer)tag );
+      }
+    return(sd);
+}
+
+Widget create_file_selection_dialog(long type)
+{
+Widget sd;
+XmString xm1;
+Arg ar[20];
+int n;
+        
+    xm1 = create_str ("");
+    n = 0;
+    /*
+    XtSetArg(ar[n],XmNdialogStyle,XmDIALOG_FULL_APPLICATION_MODAL); n++;
+    XtSetArg(ar[n],XmNmwmFunctions,MWM_FUNC_MOVE); n++;
+    */
+    XtSetArg(ar[n],XmNtitle,"FileSelection"); n++;
+    XtSetArg(ar[n],XmNlabelFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNbuttonFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNtextFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNborderWidth, 1); n++;
+    XtSetArg(ar[n],XmNwidth, 500); n++;
+    XtSetArg(ar[n],XmNdirMask, xm1); n++;
+    sd = XmCreateFileSelectionDialog ( toplevel_widget, "FileSelection", ar, n );
+    
+    XmStringFree(xm1);
+
+    XtAddCallback ( sd, XmNcancelCallback, 
+		(XtCallbackProc)cancel_pop_up, (XtPointer)type );
+    XtAddCallback ( sd, XmNokCallback, 
+		(XtCallbackProc)ok_pop_up, (XtPointer)type );
+
+	return(sd);
+}
+
+Widget create_prompt_dialog(char *label, long tag)
+{
+Widget sd;
+XmString xm1;
+Arg ar[20];
+int n;
+        
+    xm1 = create_str (label);
+    n = 0;
+    XtSetArg(ar[n],XmNlabelFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNbuttonFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNborderWidth, 1); n++;
+    /*
+    XtSetArg(ar[n],XmNwidth, 450); n++;
+    XtSetArg(ar[n],XmNresizePolicy, XmRESIZE_NONE); n++;
+    */
+    XtSetArg(ar[n],XmNselectionLabelString, xm1); n++;
+    sd = XmCreatePromptDialog ( toplevel_widget, "Prompt", ar, n );
+    
+    XmStringFree(xm1);
+
+    XtAddCallback ( sd, XmNcancelCallback, 
+		(XtCallbackProc)cancel_pop_up, (XtPointer)tag );
+    XtAddCallback ( sd, XmNokCallback, 
+		(XtCallbackProc)ok_pop_up, (XtPointer)tag );
+
+	return(sd);
+}
+
+Widget create_question_dialog(char *label, long tag)
+{
+Widget sd;
+XmString xm1;
+Arg ar[20];
+int n;
+        
+    xm1 = create_str (label);
+    n = 0;
+    XtSetArg(ar[n],XmNlabelFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNbuttonFontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNborderWidth, 1); n++;
+    /*
+    XtSetArg(ar[n],XmNwidth, 450); n++;
+    XtSetArg(ar[n],XmNresizePolicy, XmRESIZE_NONE); n++;
+    */
+    XtSetArg(ar[n],XmNmessageString, xm1); n++;
+    sd = XmCreateQuestionDialog ( toplevel_widget, "Question", ar, n );
+    
+    XmStringFree(xm1);
+
+    XtAddCallback ( sd, XmNcancelCallback, 
+		(XtCallbackProc)cancel_pop_up, (XtPointer)tag );
+    XtAddCallback ( sd, XmNokCallback, 
+		(XtCallbackProc)ok_pop_up, (XtPointer)tag );
+
+	return(sd);
+}
+
+Widget create_service_dialog()
+{
+Widget fd, rc, sw, lb, rc1;
+XmString xm1;
+Arg ar[20];
+int n, par;
+unsigned long reason;
+        
+    n = 0; 
+    XtSetArg(ar[n],XmNborderWidth, 1); n++;
+    XtSetArg(ar[n],XmNresizePolicy, XmRESIZE_ANY); n++;
+    fd = XmCreateFormDialog ( toplevel_widget, "Form", ar, n );
+    XtManageChild(fd);
+
+    /* create rowcolumn */
+    n = 0; 
+    XtSetArg(ar[n],XmNborderWidth, 1); n++;
+    XtSetArg(ar[n],XmNentryAlignment, XmALIGNMENT_CENTER); n++;
+    XtSetArg(ar[n],XmNbottomAttachment, XmATTACH_FORM); n++;
+    XtSetArg(ar[n],XmNbottomOffset, 0); n++;
+    XtSetArg(ar[n],XmNrightAttachment, XmATTACH_FORM); n++;
+    XtSetArg(ar[n],XmNrightOffset, 0); n++;
+    XtSetArg(ar[n],XmNtopAttachment, XmATTACH_FORM); n++;
+    XtSetArg(ar[n],XmNtopOffset, 0); n++;
+    XtSetArg(ar[n],XmNleftAttachment, XmATTACH_FORM); n++;
+    XtSetArg(ar[n],XmNleftOffset, 0); n++;
+    rc = XmCreateRowColumn ( fd, "rowcol", ar, n );
+    XtManageChild(rc);
+
+    /* create scrolled window */
+    n = 0;	    
+    XtSetArg ( ar[n], XmNwidth, 770); n++;
+    XtSetArg ( ar[n], XmNheight, 350); n++;
+    XtSetArg ( ar[n], XmNscrollBarDisplayPolicy, XmAS_NEEDED); n++;
+    XtSetArg ( ar[n], XmNscrollingPolicy, XmAUTOMATIC); n++;
+
+    sw = XmCreateScrolledWindow ( rc, "ScrollWin", ar, n );
+    XtManageChild ( sw );
+
+    /* create label */
+    n = 0; 
+    xm1 = create_str(" ");
+    XtSetArg(ar[n],XmNfontList, did_small_font); n++;
+    XtSetArg(ar[n],XmNlabelString, xm1); n++;
+    XtSetArg(ar[n],XmNalignment, XmALIGNMENT_BEGINNING); n++;
+    lb = XmCreateLabel ( sw, "label", ar, n );
+    XtManageChild(lb);
+    XmStringFree(xm1);
+    par = 1;
+    reason = 0;
+    create_label(lb, &par, &reason);
+
+    /* create button rowcolumn */
+    n = 0; 
+    XtSetArg(ar[n],XmNborderWidth, 0); n++;
+    XtSetArg(ar[n],XmNentryAlignment, XmALIGNMENT_CENTER); n++;
+    XtSetArg(ar[n],XmNorientation, XmVERTICAL); n++;
+    XtSetArg(ar[n],XmNnumColumns, 3); n++;
+    XtSetArg(ar[n],XmNpacking, XmPACK_COLUMN); n++;
+    rc1 = XmCreateRowColumn ( rc, "buttons", ar, n );
+    XtManageChild(rc1);
+    /*    
+    create_push_button(rc1,"View Standard",MAX_POP_UPS+1); 
+    create_push_button(rc1,"View Float",MAX_POP_UPS+2); 
+    create_push_button(rc1,"View Double",MAX_POP_UPS+3); 
+    */
+    SubscribeButton = create_push_button(rc1,"            Subscribe (On Change)            ",
+		       MAX_POP_UPS+5); 
+  Subscribe10Button = create_push_button(rc1,"      Subscribe (Update Rate 10 seconds)     ",
+		       MAX_POP_UPS+4); 
+    create_push_button(rc1,"Dismiss",DID_SERVICE);
+    Curr_service_print_type = 0;
+
+    return(fd);
+}
+
+Widget create_push_button(Widget parent, char *str, long tag)
+{
+Widget b;
+XmString xm1;
+Arg ar[20];
+int n;
+        
+    n = 0; 
+    xm1 = create_str(str);
+    XtSetArg(ar[n],XmNalignment, XmALIGNMENT_CENTER); n++;
+    XtSetArg(ar[n],XmNfontList, did_default_font); n++;
+    XtSetArg(ar[n],XmNlabelString, xm1); n++;
+    b = XmCreatePushButton ( parent, "button", ar, n );
+ 
+    XtManageChild(b);
+    XmStringFree(xm1);
+
+    XtAddCallback ( b, XmNactivateCallback, 
+		(XtCallbackProc)cancel_pop_up, (XtPointer)tag ); 
+    return(b);
+}
+
+
+
+
Index: branches/testFACT++branch/dim/src/did/dui_colors.h
===================================================================
--- branches/testFACT++branch/dim/src/did/dui_colors.h	(revision 18277)
+++ branches/testFACT++branch/dim/src/did/dui_colors.h	(revision 18277)
@@ -0,0 +1,6 @@
+#ifndef DUI_COLORS_H
+#define DUI_COLORS_H
+typedef enum {
+GREEN, BLUE, YELLOW, ORANGE, RED, BLACK, WHITE, NONE, GRAY, LIGHTGRAY, MAX_COLORS }TRG_COLORS;
+
+#endif
Index: branches/testFACT++branch/dim/src/did/dui_util.c
===================================================================
--- branches/testFACT++branch/dim/src/did/dui_util.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/did/dui_util.c	(revision 18277)
@@ -0,0 +1,308 @@
+/*
+**++
+**  FACILITY:  DUI
+**
+**  MODULE DESCRIPTION:
+**
+**      Implements MOTIF utility functions
+**
+**  AUTHORS:
+**
+**      C. Gaspar
+**
+**  CREATION DATE:  24-01-1993
+**
+**--
+*/
+#include <stdio.h>
+#include <Mrm/MrmAppl.h>                   /* Motif Toolkit */
+#include <Xm/Xm.h>
+
+#include <dim.h>
+#include "dui_util.h"
+
+/* compound strings */
+
+
+static XmString Active_str;
+
+XmString get_str(text)
+char *text;
+{
+
+	Active_str = XmStringCreateLtoR ( text, XmSTRING_DEFAULT_CHARSET); 
+	return(Active_str);
+}
+
+
+void free_str()
+{
+
+	XmStringFree(Active_str);
+}
+
+
+XmString create_str(text)
+char *text;
+{
+XmString str;
+
+
+	str = XmStringCreate ( text, XmSTRING_DEFAULT_CHARSET); 
+	return(str);
+}
+
+void delete_str(str)
+XmString str;
+{
+
+	XmStringFree(str);
+}
+
+void set_something(w, resource, value)
+    Widget w;
+    char *resource, *value;
+{
+    Arg al[1];
+	int free = 0;
+DISABLE_AST
+	if( (!strcmp(resource,XmNlabelString)) ||
+		(!strcmp(resource,XmNmessageString)) ||
+		(!strcmp(resource,XmNtextString)) ||
+		(!strcmp(resource,XmNlistLabelString)) ||
+		(!strcmp(resource,XmNselectionLabelString)) )
+	{
+		free = 1;
+		value = (char *)get_str(value);
+	}
+    XtSetArg(al[0], resource, value);
+    XtSetValues(w, al, 1);
+	if(free)
+		free_str();
+	/*
+	printf("Flushing %s for widget %s...\n",resource,w->core.name);
+	*/
+	/*
+	XFlush(XtDisplay(w));
+	*/
+	/*
+	printf("Flushed!\n");
+	*/
+ENABLE_AST
+}
+
+void get_something(w, resource, value)
+    Widget w;
+    char *resource, *value;
+{
+
+    Arg al[1];
+	int free = 0;
+	XmString str;
+	char *cstr;
+
+	if( (!strcmp(resource,XmNlabelString)) ||
+		(!strcmp(resource,XmNmessageString)) ||
+		(!strcmp(resource,XmNtextString)) ||
+		(!strcmp(resource,XmNlistLabelString)) ||
+		(!strcmp(resource,XmNselectionLabelString)) )
+	{
+		free = 1;
+	    XtSetArg(al[0], resource, &str);
+	}
+	else
+		XtSetArg(al[0], resource, value);
+    XtGetValues(w, al, 1);
+	if(free)
+	{
+		XmStringGetLtoR(str, XmSTRING_DEFAULT_CHARSET, &cstr);
+		strcpy(value,cstr);
+		XtFree(cstr);
+	}
+}
+/*
+void set_something_uid(hid, w, resource, value)
+    MrmHierarchy hid;
+    Widget w;                          
+    char *resource, *value;
+{
+    Arg al[1];
+
+	XtSetArg(al[0], resource, value);
+
+    MrmFetchSetValues(hid, w, al, 1);
+}
+*/
+
+static XmString str_table[50];
+
+XmStringTable create_str_table(strs)
+char strs[50][256];
+{
+int i;
+
+	for(i=0;strs[i][0];i++)
+	{
+		str_table[i] = XmStringCreate ( strs[i], XmSTRING_DEFAULT_CHARSET);
+	}
+	str_table[i] = (XmString)0;
+	return((XmStringTable)str_table);
+}
+
+void del_str_table()
+{
+int i;
+
+	for(i=0;str_table[i];i++)
+		XmStringFree(str_table[i]);
+
+}
+
+Pixel rgb_colors[MAX_COLORS];
+static Pixmap pixmap_colors[MAX_COLORS];
+static Pixmap watch_colors[MAX_COLORS];
+static Pixmap locks[MAX_COLORS];
+static Pixmap unlock;
+static Pixmap faces[MAX_COLORS];
+
+Pixel get_named_color(color)
+int color;
+{
+	return(rgb_colors[color]);
+}
+
+void set_color(w, resource, color) 
+Widget w;
+char *resource;
+int color;
+{
+
+DISABLE_AST
+/*
+	if(resource == XmNbackgroundPixmap)
+*/
+	if(!strcmp(resource,XmNbackgroundPixmap))
+		set_something(w,resource,pixmap_colors[color]);
+	else
+		set_something(w,resource,rgb_colors[color]);
+ENABLE_AST
+}
+	
+void set_watch(w, color) 
+Widget w;
+int color;
+{
+	set_something(w,XmNbackgroundPixmap,watch_colors[color]);
+}
+	
+void set_lock(w, color) 
+Widget w;
+int color;
+{
+	set_something(w,XmNbackgroundPixmap,locks[color]);
+}
+	
+void set_unlock(w) 
+Widget w;
+{
+	set_something(w,XmNbackgroundPixmap,unlock);
+}
+	
+void set_face(w, color) 
+Widget w;
+int color;
+{
+	set_something(w,XmNbackgroundPixmap,faces[color]);
+}
+	
+void get_all_colors(display, w)
+	Display *display;
+	Widget w;
+{
+    XColor a,b;
+    Colormap cm;
+    cm = DefaultColormap ( display, DefaultScreen(display));
+
+    XAllocNamedColor ( display, cm, "Medium Aquamarine", &a,&b );
+    rgb_colors[GREEN] = b.pixel;
+
+    XAllocNamedColor ( display, cm, "Turquoise", &a,&b );
+    rgb_colors[BLUE] = b.pixel;
+
+    XAllocNamedColor ( display, cm, "Yellow", &a,&b );
+    rgb_colors[YELLOW] = b.pixel;
+
+    XAllocNamedColor ( display, cm, "Orange", &a,&b );
+    rgb_colors[ORANGE] = b.pixel;
+
+    XAllocNamedColor ( display, cm, "Red", &a,&b );
+    rgb_colors[RED] = b.pixel;
+
+    XAllocNamedColor ( display, cm, "Black", &a,&b );
+    rgb_colors[BLACK] = b.pixel;
+
+    XAllocNamedColor ( display, cm, "White", &a,&b );
+    rgb_colors[WHITE] = b.pixel;
+
+    XAllocNamedColor ( display, cm, "Light Gray", &a,&b );
+    rgb_colors[GRAY] = b.pixel;
+
+    XAllocNamedColor ( display, cm, "Gainsboro", &a,&b );
+    rgb_colors[LIGHTGRAY] = b.pixel;
+/*
+    MrmFetchColorLiteral(hid, "green", display, 0, &rgb_colors[GREEN]);
+    MrmFetchColorLiteral(hid, "blue", display, 0, &rgb_colors[BLUE]);
+    MrmFetchColorLiteral(hid, "yellow", display, 0, &rgb_colors[YELLOW]);
+    MrmFetchColorLiteral(hid, "orange", display, 0, &rgb_colors[ORANGE]);
+    MrmFetchColorLiteral(hid, "red", display, 0, &rgb_colors[RED]);
+    MrmFetchColorLiteral(hid, "black", display, 0, &rgb_colors[BLACK]);
+    MrmFetchColorLiteral(hid, "white", display, 0, &rgb_colors[WHITE]);
+*/
+     get_something(w,XmNbackground,&rgb_colors[NONE]);
+}
+
+
+static int was_sensitive = 0;
+
+void set_sensitive(widget_id)
+Widget widget_id;
+{
+
+	if(was_sensitive)
+		XtSetSensitive(widget_id,True);
+}
+
+void set_insensitive(widget_id)
+Widget widget_id;
+{
+
+	if( (was_sensitive = XtIsSensitive(widget_id)) )
+		XtSetSensitive(widget_id,False);
+}
+	
+void set_title(w, title)
+    Widget w;
+    char *title;
+{
+    Arg al[1];
+
+    XtSetArg(al[0], XmNtitle, title);
+    XtSetValues(w, al, 1);
+    /*
+	XFlush(XtDisplay(w));
+	*/
+}
+
+void set_icon_title(w, title)
+    Widget w;
+    char *title;
+{
+    Arg al[1];
+
+    XtSetArg(al[0], XmNiconName, title);
+    XtSetValues(w, al, 1);
+    /*
+	XFlush(XtDisplay(w));
+	*/
+}
+
Index: branches/testFACT++branch/dim/src/did/dui_util.h
===================================================================
--- branches/testFACT++branch/dim/src/did/dui_util.h	(revision 18277)
+++ branches/testFACT++branch/dim/src/did/dui_util.h	(revision 18277)
@@ -0,0 +1,7 @@
+#ifndef DUI_UTIL_H
+#define DUI_UTIL_H
+
+#include "dui_colors.h"
+
+
+#endif
Index: branches/testFACT++branch/dim/src/dim_jni.c
===================================================================
--- branches/testFACT++branch/dim/src/dim_jni.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/dim_jni.c	(revision 18277)
@@ -0,0 +1,2737 @@
+/*
+ * dim_JNI_Native.c : JNI native code for dim
+ * routines to be used by Java.
+ *
+ * Started on        : 2000-08-16
+ * Written by        : M.Jonker
+ *
+ * Version history:
+ * 20000911MJJ       First Released Version (Not 100% complete yet)
+ * 31-Oct-2007 Adjustments for 64bit platforms Joern Adamczewski, gsi
+ * 03-Dec-2008 Fix in dim_Client releaseService Hans Essel, gsi
+ *
+ */
+/* TODO Remove these kludges */
+#define dim_Dbg_MEMORY          dim_Dbg_SERIALIZER
+#define dim_Dbg_MUTABLE_MEMORY  dim_Dbg_SERIALIZER
+#define dim_Dbg_MEMORY_ALLOCATE dim_Dbg_SERIALIZER
+
+/* TODO Split the Native and the serialization into two source files */
+/* TODO Release global references when they are not anymore used */
+
+#define DIMLIB
+#include <stdio.h>
+#include "dim.h"
+#include "dic.h"
+#include "dis.h"
+#include "dim_jni.h"
+
+
+#ifdef  JNI_VERSION_1_4
+#define JNI_VERSION JNI_VERSION_1_4
+#else
+#ifdef  JNI_VERSION_1_3
+#define JNI_VERSION JNI_VERSION_1_3
+#else
+#ifdef  JNI_VERSION_1_2
+#define JNI_VERSION JNI_VERSION_1_2
+#else
+#define JNI_VERSION 0x00010001
+#endif
+#endif
+#endif
+#define dim_JNI_version DIM_VERSION_NUMBER
+
+
+// Debug/tracing support ===============================================================================
+// The DBGe (Entry) DBGx (exit) DBGm (middle) DBG (Message only) macros allow for tracing and trapping
+// of native method calls.
+// DBGe, DBGx and DBGm have corresponding trap mask to active entry exits and middle traps
+// By setting DBG_filter to something restrictive, we suppress the code generation of the conditional
+// printouts for all dbg conditions except the conditions specified in the DBG_filter. (Provided the
+// optimiser does its job.)
+#ifndef DBG_filter
+  #ifdef _DEBUG
+    // no filter
+    #define DBG_filter 0xFFFFFFFF
+  #else
+    // filter all but module loading and unloading
+    #define DBG_filter dim_Dbg_MODULE
+  #endif
+#endif
+
+#define DBG(test)  if(((test&DBG_filter) & DBG_mask  ) !=0) /* etc . */
+#define DBGe(test) if(((test&DBG_filter) & DBGe_trap ) !=0) DBG_Trap(test); DBG(test) /* etc ; */
+#define DBGm(test) if(((test&DBG_filter) & DBGm_trap ) !=0) DBG_Trap(test); DBG(test) /* etc ; */
+#define DBGx(test) if(((test&DBG_filter) & DBGx_trap ) !=0) DBG_Trap(test); DBG(test) /* etc ; */
+
+static int DBG_mask = dim_Dbg_MODULE;
+static int DBGe_trap = 0;
+static int DBGm_trap = 0;
+static int DBGx_trap = 0;
+
+static void DBG_Trap(int code)
+{
+  /* if you set a break point here you can trap all */
+  /* native calls that are activated by the mask DBG_trap */
+// TODO DBG_Trap should invoke the debugger
+	if(code){}
+  return;
+}
+// ===============================================================================Debug/tracing support=
+
+
+// Static module variables
+JavaVM*		theJavaVM;
+
+jclass		NativeDataMemory;
+jmethodID NativeDataMemory_new;
+jmethodID NativeDataMemory_decodeData;
+jfieldID	NativeDataMemory_dataAddress;
+jfieldID	NativeDataMemory_dataSize;
+
+jclass		ObjectDescriptor;
+
+jclass		SendSynchronizer;
+jmethodID	SendSynchronizer_new;
+jmethodID	SendSynchronizer_setCompletionCode;
+jmethodID	SendSynchronizer_getCompletionCode;
+
+jclass		ReceiveSynchronizer;
+jmethodID	ReceiveSynchronizer_new;
+jmethodID	ReceiveSynchronizer_decodeNativeData;
+jmethodID	ReceiveSynchronizer_getCompletionCode;
+
+jclass		CompletionHandler;
+jmethodID	CompletionHandler_setCompletionCode;
+
+jclass		NativeDataDecoder;
+jmethodID	NativeDataDecoder_decodeNativeData;
+
+jclass		NativeDataEncoder;
+jmethodID	NativeDataEncoder_encodeNativeData;
+
+jclass		NativeDimTimer;
+jmethodID   NativeDimTimer_timerHandler;
+
+jclass		NativeDimSrvError;
+jmethodID   NativeDimSrvError_errorHandler;
+jmethodID	NativeDimSrvError_new;
+jobject		ourNativeDimSrvError;
+
+jclass		NativeDimCltError;
+jmethodID   NativeDimCltError_errorHandler;
+jmethodID	NativeDimCltError_new;
+jobject		ourNativeDimCltError;
+
+jclass		NativeDimExit;
+jmethodID   NativeDimExit_exitHandler;
+jmethodID	NativeDimExit_new;
+jobject		ourNativeDimExit;
+
+jobject   ourNativeMemoryObject;
+
+#ifdef WIN32
+	DWORD MainThreadId = 0;
+#else
+#ifdef __linux__
+	pthread_t MainThreadId = 0;
+#else
+	int MainThreadId = 0;
+#endif
+#endif
+JNIEnv* TheEnv;
+
+#define NOT_STAMPED 0
+
+// TODO need to get a hook into dim release services so that I can release global references
+// Note: I can test on the user library beeing one of the four DIM_JNI specific callbacks to
+// decide whether the tag was a global reference.
+// I also have to control the copying of the tags by DIM libraries:
+// There may be actually some complications because in certain cases the release service is
+// not invoked but the service is kept on a 'hot-spare' list.
+// In case of DIS, information from the servep structure maybe copied to a dtq structure.
+
+// Forward defintions =====================================================================
+
+void info_service_callback(             jobject* _aDataDecoder, void* data, int* _size);
+void info_service_callback_with_cleanup(jobject* _aDataDecoder, void* data, int* _size);
+void send_callback(jobject* _aCompletionHandler, int* _status);
+
+void server_getInfo_callback(jobject* _aDataEncoder, void* *address, int *size);
+void server_setCmnd_callback(jobject* _aDataDecoder, void  *address, int *size);
+void timer_callback(             jobject* _aDimTimer);
+void server_error_callback(int severity, int code, char *msg);
+void client_error_callback(int severity, int code, char *msg);
+void server_exit_callback(int *code);
+
+
+// DLL load, unload and init ==============================================================
+
+int dim_jni_attachThread(JNIEnv **env)
+{
+#ifdef WIN32
+	DWORD tid;
+	tid = GetCurrentThreadId();
+#else
+#ifdef __linux__
+	pthread_t tid;
+	tid = pthread_self();
+#else
+	int tid = 0;
+#endif
+#endif 
+
+	if(tid == MainThreadId)
+	{
+		*env = TheEnv;
+		return 0;
+	}
+	(*theJavaVM)->AttachCurrentThread(theJavaVM, (void *)env, NULL);
+	if(MainThreadId == 0)
+	{
+		MainThreadId = tid;
+	}
+	return 1;
+}
+
+JNIEXPORT jint JNICALL
+JNI_OnLoad(JavaVM* jvm, void* reserved)
+{
+  int    bugs =0;
+  JNIEnv *env;
+
+//  DBGe(dim_Dbg_MODULE) ; /* trap only, report on exit */
+
+  if(reserved){}
+  theJavaVM = jvm;
+
+  dim_jni_attachThread(&env);
+  TheEnv = env;
+//  (*theJavaVM)->AttachCurrentThread(theJavaVM, (void *)&env, NULL);
+
+#ifdef develop_a_better_understanding_of_java
+  {
+    jclass		test_cid;
+    jmethodID	test_mid;
+
+    test_cid  = (*env)->FindClass(env,"dim/test/Ntest$static_class");
+    test_mid  = (*env)->GetMethodID(env,test_cid, "instance_method", "()V");
+    test_mid  = (*env)->GetMethodID(env,test_cid, "<init>", "()V");
+    test_mid  = (*env)->GetStaticMethodID(env,test_cid, "static_method",   "()V");
+    if ((*env)->ExceptionOccurred(env)) (*env)->ExceptionDescribe(env);
+
+    test_cid  = (*env)->FindClass(env,"dim/test/Ntest$instance_class");
+    test_mid  = (*env)->GetMethodID(env,test_cid, "instance_method", "()V");
+    test_mid  = (*env)->GetMethodID(env,test_cid, "<init>", "()V");
+    if ((*env)->ExceptionOccurred(env)) (*env)->ExceptionDescribe(env);
+
+    test_cid  = (*env)->FindClass(env,"dim/test/Ntest$method_class");
+    test_mid  = (*env)->GetMethodID(env,test_cid, "instance_method", "()V");
+    test_mid  = (*env)->GetMethodID(env,test_cid, "<init>", "()V");
+    if ((*env)->ExceptionOccurred(env)) (*env)->ExceptionDescribe(env);
+  }
+#endif
+
+  NativeDataMemory                    = (*env)->FindClass(env, "dim/Memory");
+  NativeDataMemory_new                = (*env)->GetMethodID (env, NativeDataMemory, "<init>", "()V");
+  NativeDataMemory_decodeData         = (*env)->GetMethodID (env, NativeDataMemory, "decodeData", "(JILdim/DataDecoder;)V");
+  NativeDataMemory_dataAddress        = (*env)->GetFieldID  (env, NativeDataMemory, "dataAddress", "J");
+  NativeDataMemory_dataSize           = (*env)->GetFieldID  (env, NativeDataMemory, "highWaterMark",    "I");
+  NativeDataMemory                    = (*env)->NewGlobalRef(env, NativeDataMemory);
+  if ((*env)->ExceptionOccurred(env)) {bugs++; (*env)->ExceptionDescribe(env);}
+
+  ourNativeMemoryObject = (*env)->NewObject(env, NativeDataMemory, NativeDataMemory_new);
+  ourNativeMemoryObject = (*env)->NewGlobalRef(env, ourNativeMemoryObject);
+  if ((*env)->ExceptionOccurred(env)) {bugs++; (*env)->ExceptionDescribe(env);}
+
+  SendSynchronizer                    = (*env)->FindClass(env, "dim/Client$SendSynchronizer");
+  SendSynchronizer_new                = (*env)->GetMethodID (env, SendSynchronizer, "<init>", "(Ldim/CompletionHandler;)V");
+  SendSynchronizer_setCompletionCode  = (*env)->GetMethodID (env, SendSynchronizer, "setCompletionCode", "(I)I");
+  SendSynchronizer_getCompletionCode  = (*env)->GetMethodID (env, SendSynchronizer, "getCompletionCode", "(I)I");
+  SendSynchronizer                    = (*env)->NewGlobalRef(env, SendSynchronizer);
+  if ((*env)->ExceptionOccurred(env)) {bugs++; (*env)->ExceptionDescribe(env);}
+
+  ReceiveSynchronizer                    = (*env)->FindClass(env, "dim/Client$ReceiveSynchronizer");
+  ReceiveSynchronizer_new                = (*env)->GetMethodID (env, ReceiveSynchronizer, "<init>", "(Ldim/DataDecoder;)V");
+  ReceiveSynchronizer_decodeNativeData   = (*env)->GetMethodID (env, ReceiveSynchronizer, "decodeData", "(Ldim/Memory;)V");
+  ReceiveSynchronizer_getCompletionCode  = (*env)->GetMethodID (env, ReceiveSynchronizer, "getCompletionCode","(I)I" );
+  ReceiveSynchronizer                    = (*env)->NewGlobalRef(env, ReceiveSynchronizer);
+  if ((*env)->ExceptionOccurred(env)) {bugs++; (*env)->ExceptionDescribe(env);}
+
+  CompletionHandler                   = (*env)->FindClass(env, "dim/CompletionHandler");
+  CompletionHandler_setCompletionCode = (*env)->GetMethodID(env, CompletionHandler, "setCompletionCode", "(I)I");
+  CompletionHandler                   = (*env)->NewGlobalRef(env, CompletionHandler);
+  if ((*env)->ExceptionOccurred(env)) {bugs++; (*env)->ExceptionDescribe(env);}
+
+  NativeDataDecoder                   = (*env)->FindClass(env, "dim/DataDecoder");
+  NativeDataDecoder_decodeNativeData  = (*env)->GetMethodID(env,  NativeDataDecoder, "decodeData",   "(Ldim/Memory;)V");
+  NativeDataDecoder                   = (*env)->NewGlobalRef(env, NativeDataDecoder);
+  if ((*env)->ExceptionOccurred(env)) {bugs++; (*env)->ExceptionDescribe(env);}
+
+  NativeDataEncoder                      = (*env)->FindClass(env, "dim/DataEncoder");
+  NativeDataEncoder_encodeNativeData     = (*env)->GetMethodID(env,  NativeDataEncoder, "encodeData",   "()Ldim/Memory;");
+  NativeDataEncoder                      = (*env)->NewGlobalRef(env, NativeDataEncoder);
+  if ((*env)->ExceptionOccurred(env)) {bugs++; (*env)->ExceptionDescribe(env);}
+
+  NativeDimTimer					  = (*env)->FindClass(env, "dim/DimTimer");
+  NativeDimTimer_timerHandler         = (*env)->GetMethodID (env, NativeDimTimer,   "timerHandler", "()V");
+  NativeDimTimer                      = (*env)->NewGlobalRef(env, NativeDimTimer);
+  if ((*env)->ExceptionOccurred(env)) {bugs++; (*env)->ExceptionDescribe(env);}
+
+  NativeDimSrvError					= (*env)->FindClass(env, "dim/DimErrorHandler$DimSrvError");
+  NativeDimSrvError_new                  = (*env)->GetMethodID (env, NativeDimSrvError, "<init>", "()V");
+  NativeDimSrvError_errorHandler         = (*env)->GetMethodID (env, NativeDimSrvError, "errorHandler", "(IILjava/lang/String;)V");
+  NativeDimSrvError                      = (*env)->NewGlobalRef(env, NativeDimSrvError);
+  ourNativeDimSrvError = (*env)->NewObject(env, NativeDimSrvError, NativeDimSrvError_new);
+  ourNativeDimSrvError = (*env)->NewGlobalRef(env, ourNativeDimSrvError);
+  if ((*env)->ExceptionOccurred(env)) {bugs++; (*env)->ExceptionDescribe(env);}
+  
+  NativeDimCltError					= (*env)->FindClass(env, "dim/DimErrorHandler$DimCltError");
+  NativeDimCltError_new                  = (*env)->GetMethodID (env, NativeDimCltError, "<init>", "()V");
+  NativeDimCltError_errorHandler         = (*env)->GetMethodID (env, NativeDimCltError, "errorHandler", "(IILjava/lang/String;)V");
+  NativeDimCltError                      = (*env)->NewGlobalRef(env, NativeDimCltError);
+  ourNativeDimCltError = (*env)->NewObject(env, NativeDimCltError, NativeDimCltError_new);
+  ourNativeDimCltError = (*env)->NewGlobalRef(env, ourNativeDimCltError);
+  if ((*env)->ExceptionOccurred(env)) {bugs++; (*env)->ExceptionDescribe(env);}
+  
+  NativeDimExit						= (*env)->FindClass(env, "dim/DimExitHandler$DimExit");
+  NativeDimExit_new                 = (*env)->GetMethodID (env, NativeDimExit, "<init>", "()V");
+  NativeDimExit_exitHandler         = (*env)->GetMethodID (env, NativeDimExit, "exitHandler", "(I)V");
+  NativeDimExit                     = (*env)->NewGlobalRef(env, NativeDimExit);
+  ourNativeDimExit = (*env)->NewObject(env, NativeDimExit, NativeDimExit_new);
+  ourNativeDimExit = (*env)->NewGlobalRef(env, ourNativeDimExit);
+  if ((*env)->ExceptionOccurred(env)) {bugs++; (*env)->ExceptionDescribe(env);}
+  
+  DBGx(dim_Dbg_MODULE) printf("DimJNI: loaded DLL with dim version %d and JNI %d.%d\n", dim_JNI_version,JNI_VERSION>>16,JNI_VERSION&0xFFFF);
+
+  return(JNI_VERSION);
+}
+
+JNIEXPORT jint JNICALL
+JNI_OnUnLoad(JNIEnv* env, void* reserved)
+{
+//  static JNIEnv* env;
+
+//  DBGe(dim_Dbg_MODULE) ; /* trap only, report on exit */
+
+  if(reserved){}
+//  (*jvm)->AttachCurrentThread(jvm, (void *)&env, NULL);
+  (*env)->DeleteGlobalRef(env, NativeDataMemory);
+  (*env)->DeleteGlobalRef(env, SendSynchronizer);
+  (*env)->DeleteGlobalRef(env, ReceiveSynchronizer);
+  (*env)->DeleteGlobalRef(env, CompletionHandler);
+  (*env)->DeleteGlobalRef(env, NativeDataDecoder);
+  (*env)->DeleteGlobalRef(env, NativeDataEncoder);
+  (*env)->DeleteGlobalRef(env, ourNativeMemoryObject);
+
+  (*env)->DeleteGlobalRef(env, NativeDimTimer);
+  (*env)->DeleteGlobalRef(env, NativeDimSrvError);
+  (*env)->DeleteGlobalRef(env, ourNativeDimSrvError);
+  (*env)->DeleteGlobalRef(env, NativeDimCltError);
+  (*env)->DeleteGlobalRef(env, ourNativeDimCltError);
+  (*env)->DeleteGlobalRef(env, NativeDimExit);
+  (*env)->DeleteGlobalRef(env, ourNativeDimExit);
+
+  DBGx(dim_Dbg_MODULE) printf("DimJNI: DLL unloaded\n");
+  return(0);
+}
+
+
+
+
+/* implementation of dim_native.h =============================================================== */
+
+/*
+ * Class:     dim_Native
+ * Method:    init
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_dim_Native_init
+  (JNIEnv* env, jclass nativeClass)
+{
+  JavaVM* jvm;
+
+  if(nativeClass){}
+  if(theJavaVM!=NULL) return JNI_VERSION;
+  (*env)->GetJavaVM(env, &jvm);
+  return JNI_OnLoad(jvm, 0);
+}
+
+/*
+ * Class:     dim_Native
+ * Method:    stop
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_dim_Native_stop
+  (JNIEnv* env, jclass nativeClass)
+{
+
+  if(nativeClass){}
+  return JNI_OnUnLoad(env, 0);
+}
+
+
+/* implementation of dim_dbg.h ================================================================== */
+
+/*
+ * Class:     dim_Dbg
+ * Method:    setMask
+ * Signature: (I)V
+ */
+JNIEXPORT void JNICALL Java_dim_Dbg_setMask
+  (JNIEnv *env, jclass nativeClass, jint dbg_mask)
+{
+	if(env){}
+	if(nativeClass){}
+  if(dim_Dbg_TRANSACTIONS & (DBG_mask|dbg_mask))
+    printf("DimJNI: debug mask changed from %08x to %08x\n", DBG_mask, dbg_mask);
+  DBG_mask = dbg_mask;
+}
+
+/*
+ * Class:     dim_Dbg
+ * Method:    getMask
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_dim_Dbg_getMask
+  (JNIEnv *env, jclass nativeClass)
+{
+	if(env){}
+	if(nativeClass){}
+  return DBG_mask;
+}
+
+
+
+
+/* implementation of dim_client.h =============================================================== */
+
+
+/* the send callback */
+
+void send_callback(jobject* _theCompletionHandler, int* _status)
+{
+  jobject theCompletionHandler = *_theCompletionHandler;
+  JNIEnv* env;
+  int doit;
+
+  DBGe(dim_Dbg_SEND_CALLBACK) printf("DimJNI: client SEND_CALLBACK status %08lx:%d\n", (dim_long)_status, *_status);
+
+  doit = dim_jni_attachThread(&env);
+//  (*theJavaVM)->AttachCurrentThread(theJavaVM, (void *)&env, NULL);
+
+  (*env)->CallIntMethod(env, theCompletionHandler, CompletionHandler_setCompletionCode, *_status);
+  (*env)->DeleteGlobalRef(env, theCompletionHandler);
+
+  if(doit)
+	  (*theJavaVM)->DetachCurrentThread(theJavaVM);
+  return;
+}
+
+/* for debuging messages only, so I do not care about reentrance (which could potentially happen) */
+static char* send_data_format;
+
+/* general send service */
+jint send_data
+  (JNIEnv *env, jstring name, jobject theCompletionHandler, jint mode, jint timeout, void* data_address, int data_size)
+{
+  jint    ret;
+  int     stamped = 0;
+  void    (*callback_funct)();
+  jobject callback_param;
+  jobject theSendSynchronizer;
+  
+  extern int request_command(char *, void *, int , void (*)(), dim_long, int);
+
+  const char* cmnd = (*env)->GetStringUTFChars(env, name, 0);
+
+//  DBGe(dim_Dbg_SEND_NATIVE) ; /* trap only, report later */
+
+  if(timeout){}
+  if(mode & dim_Native_F_STAMPED) stamped = 1;
+  if(mode & dim_Native_F_WAIT)  // note: dim_Native_F_WAIT defined as -2147483648L //(0x80000000)
+  {
+    // Create a SendSynchronizer object using theCompletionHandler
+    theSendSynchronizer = (*env)->NewObject(env, SendSynchronizer, SendSynchronizer_new, theCompletionHandler);
+    callback_param = (*env)->NewGlobalRef(env, theSendSynchronizer);
+    callback_funct = &send_callback;
+  }
+  else if(theCompletionHandler)
+  {
+    // create a global reference of the CompletionHandler if present
+    callback_param = (*env)->NewGlobalRef(env, theCompletionHandler);
+    callback_funct = &send_callback;
+  }
+  else
+  {
+    callback_param = 0;
+    callback_funct = 0;
+  }
+
+  // Send the request
+  ret = request_command((char *)cmnd, data_address, data_size, callback_funct, (dim_long)callback_param, stamped);
+  DBGx(dim_Dbg_SEND_NATIVE) printf("DimJNI: Client.Send(%s,(%s) 0x%x) returns %d \n", cmnd, send_data_format, * (int*) data_address, ret);
+
+  // release the String
+  (*env)->ReleaseStringUTFChars(env, name, cmnd);
+
+//if the send request was not queued and there is a CompletionHandler, we call the send_callback
+  if(!ret && callback_param)
+  {
+    DBGm(dim_Dbg_SEND_NATIVE) printf("DimJNI: Native.send calls callback as bug fix.\n");
+//  TODO we do not have to call send_callback(&callback_param, &ret); when not queued? //Apparently we do not need this.
+  }
+
+  if(mode & dim_Native_F_WAIT)
+  {
+    ret=(*env)->CallIntMethod(env, theSendSynchronizer, SendSynchronizer_getCompletionCode, 0);
+    DBGx(dim_Dbg_SEND_NATIVE) printf("DimJNI:        SEND returns (after wait) %08x\n",ret);
+  }
+
+  return ret;
+}
+
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;IIZ)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2IIZ
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jboolean data)
+{
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jboolean";
+  if(This){}
+  return send_data(env, name, theCompletionHandler, mode, timeout, &data, sizeof(data));
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;IIC)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2IIC
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jchar data)
+{
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jchar";
+  if(This){}
+  return send_data(env, name, theCompletionHandler, mode, timeout, &data, sizeof(data));
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;IIB)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2IIB
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jbyte data)
+{
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jbyte";
+  if(This){}
+  return send_data(env, name, theCompletionHandler, mode, timeout, &data, sizeof(data));
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;IIS)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2IIS
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jshort data)
+{
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jshort";
+  if(This){}
+  return send_data(env, name, theCompletionHandler, mode, timeout, &data, sizeof(data));
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;III)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2III
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jint data)
+{
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jint";
+  if(This){}
+  return send_data(env, name, theCompletionHandler, mode, timeout, &data, sizeof(data));
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;IIJ)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2IIJ
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jlong data)
+{
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jlong";
+  if(This){}
+  return send_data(env, name, theCompletionHandler, mode, timeout, &data, sizeof(data));
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;IIF)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2IIF
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jfloat data)
+{
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jfloat";
+  if(This){}
+  return send_data(env, name, theCompletionHandler, mode, timeout, &data, sizeof(data));
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;IID)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2IID
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jdouble data)
+{
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jdouble";
+  if(This){}
+  return send_data(env, name, theCompletionHandler, mode, timeout, &data, sizeof(data));
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;IILjava/lang/String;)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2IILjava_lang_String_2
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jstring sdata)
+{
+	jint ret;
+	const char* data = (*env)->GetStringUTFChars(env, sdata, 0);
+
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "String";
+  if(This){}
+  ret = send_data(env, name, theCompletionHandler, mode, timeout, (void*) data, (int)strlen(data)+1);
+
+	(*env)->ReleaseStringUTFChars(env,sdata, data);
+	return ret;
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;II[Z)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2II_3Z
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jbooleanArray dataArray)
+{
+	jboolean*	nativeDataArray;
+	jint		  length;
+	jint		  ret;
+
+	nativeDataArray = (*env)->GetBooleanArrayElements(env,dataArray,0);
+	length          = (jint)(*env)->GetArrayLength(env,dataArray) * (jint)sizeof(*nativeDataArray);
+
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "boolean[]";
+  if(This){}
+  ret = send_data(env, name, theCompletionHandler, mode, timeout, nativeDataArray, length);
+
+	(*env)->ReleaseBooleanArrayElements(env,dataArray,nativeDataArray,JNI_ABORT);
+	return ret;
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;II[C)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2II_3C
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jcharArray dataArray)
+{
+	jchar*	  nativeDataArray;
+	jint		  length;
+	jint		  ret;
+
+	nativeDataArray = (*env)->GetCharArrayElements(env,dataArray,0);
+	length          = (jint)(*env)->GetArrayLength(env,dataArray) * (jint)sizeof(*nativeDataArray);
+
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jchar[]";
+  if(This){}
+  ret = send_data(env, name, theCompletionHandler, mode, timeout, nativeDataArray, length);
+
+	(*env)->ReleaseCharArrayElements(env,dataArray,nativeDataArray,JNI_ABORT);
+	return ret;
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;II[B)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2II_3B
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jbyteArray dataArray)
+{
+	jbyte*	  nativeDataArray;
+	jint		  length;
+	jint		  ret;
+
+	nativeDataArray = (*env)->GetByteArrayElements(env,dataArray,0);
+	length          = (jint)(*env)->GetArrayLength(env,dataArray) * (jint)sizeof(*nativeDataArray);
+
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jbyte[]";
+  if(This){}
+  ret = send_data(env, name, theCompletionHandler, mode, timeout, nativeDataArray, length);
+
+	(*env)->ReleaseByteArrayElements(env,dataArray,nativeDataArray,JNI_ABORT);
+	return ret;
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;II[S)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2II_3S
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jshortArray dataArray)
+{
+	jshort*	  nativeDataArray;
+	jint		  length;
+	jint		  ret;
+
+	nativeDataArray = (*env)->GetShortArrayElements(env,dataArray,0);
+	length          = (jint)(*env)->GetArrayLength(env,dataArray) * (jint)sizeof(*nativeDataArray);
+
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jshort[]";
+  if(This){}
+  ret = send_data(env, name, theCompletionHandler, mode, timeout, nativeDataArray, length);
+
+	(*env)->ReleaseShortArrayElements(env,dataArray,nativeDataArray,JNI_ABORT);
+	return ret;
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;II[I)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2II_3I
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jintArray dataArray)
+{
+	jint*	    nativeDataArray;
+	jint		  length;
+	jint		  ret;
+
+	nativeDataArray = (*env)->GetIntArrayElements(env,dataArray,0);
+	length          = (jint)(*env)->GetArrayLength(env,dataArray) * (jint)sizeof(*nativeDataArray);
+
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jint[]";
+  if(This){}
+  ret = send_data(env, name, theCompletionHandler, mode, timeout, nativeDataArray, length);
+
+	(*env)->ReleaseIntArrayElements(env,dataArray,nativeDataArray,JNI_ABORT);
+	return ret;
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;II[J)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2II_3J
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jlongArray dataArray)
+{
+	jlong*	  nativeDataArray;
+	jint		  length;
+	jint		  ret;
+
+	nativeDataArray = (*env)->GetLongArrayElements(env,dataArray,0);
+	length          = (jint)(*env)->GetArrayLength(env,dataArray) * (jint)sizeof(*nativeDataArray);
+
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jlong[]";
+  if(This){}
+  ret = send_data(env, name, theCompletionHandler, mode, timeout, nativeDataArray, length);
+
+	(*env)->ReleaseLongArrayElements(env,dataArray,nativeDataArray,JNI_ABORT);
+	return ret;
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;II[F)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2II_3F
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jfloatArray dataArray)
+{
+	jfloat*	  nativeDataArray;
+	jint		  length;
+	jint		  ret;
+
+	nativeDataArray = (*env)->GetFloatArrayElements(env,dataArray,0);
+	length          = (jint)(*env)->GetArrayLength(env,dataArray) * (jint)sizeof(*nativeDataArray);
+
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jfloat[]";
+  if(This){}
+  ret = send_data(env, name, theCompletionHandler, mode, timeout, nativeDataArray, length);
+
+	(*env)->ReleaseFloatArrayElements(env,dataArray,nativeDataArray,JNI_ABORT);
+	return ret;
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;II[D)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2II_3D
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jdoubleArray dataArray)
+{
+	jdouble*	nativeDataArray;
+	jint		  length;
+	jint		  ret;
+
+	nativeDataArray = (*env)->GetDoubleArrayElements(env,dataArray,0);
+	length          = (jint)(*env)->GetArrayLength(env,dataArray) * (jint)sizeof(*nativeDataArray);
+
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "jdouble[]";
+  if(This){}
+  ret = send_data(env, name, theCompletionHandler, mode, timeout, nativeDataArray, length);
+
+	(*env)->ReleaseDoubleArrayElements(env,dataArray,nativeDataArray,JNI_ABORT);
+	return ret;
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    send
+ * Signature: (Ljava/lang/String;Ldim/CompletionHandler;IIJI)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_send__Ljava_lang_String_2Ldim_CompletionHandler_2IIJI
+  (JNIEnv *env, jclass This, jstring name, jobject theCompletionHandler, jint mode, jint timeout, jlong nativeDataBlock, jint nativeDataSize)
+{
+
+  DBG(dim_Dbg_SEND_NATIVE) send_data_format = "nativeDataBlock";
+  if(This){}
+  return send_data(env, name, theCompletionHandler, mode, timeout, (void*) nativeDataBlock, nativeDataSize);
+}
+
+
+
+/* This function is called by callback there is new data to be decoded */
+void decodeData(jobject* _theDataDecoder, void* dataAddress, int* _dataSize, int cleanup)
+{
+	jobject theDataDecoder = *_theDataDecoder;
+	int		  dataSize		   = *_dataSize;
+	JNIEnv* env;
+	int doit;
+
+  doit = dim_jni_attachThread(&env);
+//	(*theJavaVM)->AttachCurrentThread(theJavaVM, (void *)&env, NULL);
+  if(dataAddress == NULL)
+  {
+  	(*env)->CallVoidMethod(env, theDataDecoder, NativeDataDecoder_decodeNativeData, NULL);
+  }
+  else
+  {
+    /* the decode method will further complete the Memory object and call the decodeData method of the DataDecoder object */
+    (*env)->CallVoidMethod(env, ourNativeMemoryObject, NativeDataMemory_decodeData, (jlong) dataAddress, (jint) dataSize, theDataDecoder);
+  }
+
+  /* and cleanup */
+  if(cleanup) (*env)->DeleteGlobalRef(env, theDataDecoder);
+  if(doit)
+	(*theJavaVM)->DetachCurrentThread(theJavaVM);
+
+  return;
+}
+
+
+
+/* This call back is called when there is new data for a client subscription */
+void info_service_callback(jobject* _theDataDecoder, void* dataAddress, int* _dataSize)
+{
+	DBGe(dim_Dbg_INFO_CALLBACK) printf("DimJNI: INFO_CALLBACK(data: %08lx(%08x))\n", (dim_long) dataAddress, *_dataSize);
+
+  decodeData(_theDataDecoder, dataAddress, _dataSize, 0);
+}
+
+
+/* This call back is called when a client once_only subscription completes (so we clean up) */
+void info_service_callback_with_cleanup(jobject* _theDataDecoder, void* dataAddress, int* _dataSize)
+{
+	DBGe(dim_Dbg_INFO_CALLBACK) printf("DimJNI: INFO_CALLBACK/ONCE_ONLY(data: %08lx(%08x))\n", (dim_long)dataAddress, *_dataSize);
+
+  decodeData(_theDataDecoder, dataAddress, _dataSize, 1);
+
+}
+
+/* This function is called by callback when timer fires */
+void callTimerHandler(jobject* _aDimTimer)
+{
+//	jobject aDimTimer = *_aDimTimer;
+	JNIEnv* env;
+	int doit;
+
+	doit = dim_jni_attachThread(&env);
+//	(*theJavaVM)->AttachCurrentThread(theJavaVM, (void *)&env, NULL);
+//printf("Got callback %08x\n", _aDimTimer);
+  	(*env)->CallVoidMethod(env, (jobject)_aDimTimer, NativeDimTimer_timerHandler, NULL);
+	if(doit)
+		(*theJavaVM)->DetachCurrentThread(theJavaVM);
+ 
+  return;
+}
+
+/* This call back is called when the timer expires */
+void timer_callback(jobject* _aDimTimer)
+{
+	callTimerHandler(_aDimTimer);
+}
+
+/* This function is called by callback when Server Error detected */
+void callServerErrorHandler(int severity, int code, char *msg)
+{
+	JNIEnv* env;
+	int doit;
+
+	doit = dim_jni_attachThread(&env);
+//	(*theJavaVM)->AttachCurrentThread(theJavaVM, (void *)&env, NULL);
+  	(*env)->CallVoidMethod(env, ourNativeDimSrvError, NativeDimSrvError_errorHandler,
+		(jint)severity, (jint)code, (jstring)(*env)->NewStringUTF(env, msg));
+	if(doit)
+		(*theJavaVM)->DetachCurrentThread(theJavaVM);
+	return;
+}
+
+/* This callback is called when the server gets an error*/
+void server_error_callback(int severity, int code, char *msg)
+{
+	callServerErrorHandler(severity, code, msg);
+}
+
+/* This function is called by callback when Client Error detected */
+void callClientErrorHandler(int severity, int code, char *msg)
+{
+	JNIEnv* env;
+	int doit;
+
+	doit = dim_jni_attachThread(&env);
+//	(*theJavaVM)->AttachCurrentThread(theJavaVM, (void *)&env, NULL);
+  	(*env)->CallVoidMethod(env, ourNativeDimCltError, NativeDimCltError_errorHandler,
+		(jint)severity, (jint)code, (jstring)(*env)->NewStringUTF(env, msg));
+	if(doit)
+		(*theJavaVM)->DetachCurrentThread(theJavaVM);
+	return;
+}
+
+/* This callback is called when the client gets an error*/
+void client_error_callback(int severity, int code, char *msg)
+{
+	callClientErrorHandler(severity, code, msg);
+}
+
+void callServerExitHandler(int code)
+{
+//	jobject aDimTimer = *_aDimTimer;
+	JNIEnv* env;
+	int doit;
+
+	doit = dim_jni_attachThread(&env);
+//	(*theJavaVM)->AttachCurrentThread(theJavaVM, (void *)&env, NULL);
+  	(*env)->CallVoidMethod(env, ourNativeDimExit, NativeDimExit_exitHandler,
+		(jint)code);
+	if(doit)
+		(*theJavaVM)->DetachCurrentThread(theJavaVM);
+	return;
+}
+
+/* This call back is called when the timer expires */
+void server_exit_callback(int *code)
+{
+	callServerExitHandler(*code);
+}
+
+/*
+ * Class:     dim_Client
+ * Method:    infoService
+ * Signature: (Ljava/lang/String;Ldim/DataDecoder;II)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_infoService
+  (JNIEnv *env, jclass This, jstring name, jobject theNativeDataDecoder, jint mode, jint timeout)
+{
+	jint  ret;
+	int   no_link;
+	int   stamped = 0;
+	int   service_type = mode & 0x0FFF;
+  void  (*callback_function)();
+  jobject callback_param;
+  jobject theReceiveSynchronizer;
+  const char* info = (*env)->GetStringUTFChars(env, name, 0);
+  extern unsigned request_service(char *, int, int , void *, int , void (*)(),
+				    dim_long, void *, int, int);
+
+//  DBGe(dim_Dbg_INFO_SERVICE); /* trap only, we report on exit */
+
+  if(This){}
+  if(mode & dim_Native_F_STAMPED) stamped = 1;
+	if(mode & dim_Native_F_WAIT)
+  {
+    // Create a ReceiveSynchronizer object using the dataDecoder
+    theReceiveSynchronizer = (*env)->NewObject(env, ReceiveSynchronizer, ReceiveSynchronizer_new, theNativeDataDecoder);
+    callback_param = (*env)->NewGlobalRef(env, theReceiveSynchronizer);
+  }
+  else
+  {
+    callback_param = (*env)->NewGlobalRef(env, theNativeDataDecoder);
+  }
+
+  if(service_type == dim_Native_ONCE_ONLY) 
+	  callback_function = &info_service_callback_with_cleanup;
+  else                                     
+	  callback_function = &info_service_callback; //TODO who should do the cleanup?
+
+
+  ret = (jint)request_service((char *)info, service_type, timeout, 0, 0, callback_function, (dim_long)callback_param, &no_link, 0, stamped);
+  DBGx(dim_Dbg_INFO_SERVICE) printf("DimJNI: client infoService(%s, DataDecoder@0x%08lx, mode=%d, timeout=%d ) returns %d\n", info, (dim_long)theNativeDataDecoder, mode, timeout, ret);
+  (*env)->ReleaseStringUTFChars(env, name, info);
+
+  if(mode & dim_Native_F_WAIT)
+  {
+    /* we synchronize by calling the getCompletionCode method of the ReceiveSynchronizer */ 
+    (*env)->CallIntMethod(env, theReceiveSynchronizer, ReceiveSynchronizer_getCompletionCode, 0);
+    DBGx(dim_Dbg_INFO_SERVICE) printf("DimJNI:         infoService(%s) completed with %08x\n",info, ret);
+  }
+
+  return ret;
+}
+
+/*
+ * Class:     dim_DimTimer
+ * Method:    start
+ * Signature: (Ldim/DimTimer;I)V
+ */
+JNIEXPORT jlong JNICALL Java_dim_DimTimer_start
+  (JNIEnv *env, jclass This, jobject aDimTimer, jint secs)
+{
+   jobject callback_param;
+   void  (*callback_function)();
+ 
+  if(This){}
+  callback_param = (*env)->NewGlobalRef(env, aDimTimer);
+  callback_function = &timer_callback; //TODO who should do the cleanup?
+
+//printf("Starting timer %d, %08x %08x\n", secs, (long)callback_param, aDimTimer);
+  dtq_start_timer(secs, callback_function, callback_param); 
+
+  return (jlong)callback_param;
+}
+
+/*
+ * Class:     dim_DimTimer
+ * Method:    stop
+ * Signature: (Ldim/DimTimer)V
+ */
+JNIEXPORT void JNICALL Java_dim_DimTimer_stop
+//  (JNIEnv *env, jclass This, jobject aDimTimer)
+  (JNIEnv *env, jclass This, jlong aDimTimer)
+{
+   jobject callback_param;
+   int ret;
+ 
+   if(env){}
+   if(This){}
+//  callback_param = (*env)->NewGlobalRef(env, aDimTimer);
+   callback_param = (jobject) aDimTimer;
+
+//printf("Stopping timer %08x %08X\n", callback_param, aDimTimer);
+  ret = dtq_stop_timer((dim_long)callback_param);
+ //printf("ret = %d\n", ret);
+
+  return;
+}
+
+
+/*
+ * Class:     dim_Client
+ * Method:    releaseService
+ * Signature: (I)V
+ */
+JNIEXPORT void JNICALL Java_dim_Client_releaseService
+  (JNIEnv* env, jclass This, jint sid)
+{
+
+  DIC_SERVICE *servp;
+
+//  DBGe(dim_Dbg_INFO_SERVICE) ; /* Trap only, report later */
+
+  if(This){}
+  servp = (DIC_SERVICE *)id_get_ptr(sid, SRC_DIC);
+
+/*
+Hans Essel, 3.12.08
+Without deleting the global reference, the Java GC could not free the object!
+Any DimInfo object would stay forever. This is a memory leak.
+*/
+  if(servp != NULL)
+  {
+	  //  DBGx(dim_Dbg_INFO_SERVICE) printf("DimJNI: Client.releaseService(%d (%s))\n", sid, servp->serv_name);
+	  servp->user_routine = NULL; // make sure this is not called anymore
+	  (*env)->DeleteGlobalRef(env, (jobject) servp->tag);
+	  servp->tag = 0;
+  }
+
+  dic_release_service(sid);
+	return;
+}
+
+/*
+ * Class:     dim_Client
+ * Method:    noPadding
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_dim_Client_noPadding
+  (JNIEnv* env, jclass This)
+{
+
+  if(env){}
+  if(This){}
+  dic_disable_padding();
+	return;
+}
+
+/*
+ * Class:     dim_Client
+ * Method:    getFormat
+ * Signature: (I)Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_dim_Client_getFormat
+  (JNIEnv* env, jclass This, jint sid)
+{
+
+  if(This){}
+	return (*env)->NewStringUTF(env, (char*)dic_get_format(sid));
+}
+
+/*
+ * Class:     dim_Client
+ * Method:    stop
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_dim_Client_stop
+  (JNIEnv* env, jclass This)
+{
+	extern void dim_stop();
+
+	if(env){}
+	if(This){}
+	dim_stop();
+	return;
+}
+
+/*
+ * Class:     dim_DimInfo
+ * Method:    getQuality
+ * Signature: (I)I;
+ */
+JNIEXPORT jint JNICALL Java_dim_DimInfo_getQuality
+  (JNIEnv* env, jclass This, jint sid)
+{
+	int ret;
+	
+	if(env){}
+	if(This){}
+	ret = dic_get_quality(sid);
+	return ret;
+}
+
+/*
+ * Class:     dim_DimInfo
+ * Method:    getTimestamp
+ * Signature: (I)I;
+ */
+JNIEXPORT jint JNICALL Java_dim_DimInfo_getTimestamp
+  (JNIEnv* env, jclass This, jint sid)
+{
+	int mysecs, mymilli;
+  if(env){}
+  if(This){}
+	dic_get_timestamp(sid, &mysecs, &mymilli);
+	return mysecs;
+}
+
+/*
+ * Class:     dim_DimInfo
+ * Method:    getTimestampMillisecs
+ * Signature: (I)I;
+ */
+JNIEXPORT jint JNICALL Java_dim_DimInfo_getTimestampMillisecs
+  (JNIEnv* env, jclass This, jint sid)
+{
+	int mysecs, mymilli;
+  if(env){}
+  if(This){}
+	dic_get_timestamp(sid, &mysecs, &mymilli);
+	return mymilli;
+}
+
+/* implementation of dim_server.h =============================================================== */
+
+
+/*
+ * Class:     dim_Server
+ * Method:    startServing
+ * Signature: (Ljava/lang/String;)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Server_startServing
+  (JNIEnv* env, jclass This, jstring serverName)
+{
+	const char* serverNameUTF = (*env)->GetStringUTFChars(env, serverName, 0);
+
+	if(This){}
+
+	dis_start_serving(serverNameUTF);
+
+	DBGe(dim_Dbg_SERVER) printf("DimJNI: Start serving\n");
+
+	(*env)->ReleaseStringUTFChars(env, serverName, serverNameUTF);
+	return 0;
+}
+
+/*
+ * Class:     dim_Server
+ * Method:    stopServing
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_dim_Server_stopServing
+  (JNIEnv* env, jclass This)
+{
+	DBGe(dim_Dbg_SERVER) printf("DimJNI: Stop serving\n");
+	if(env){}
+	if(This){}
+	dis_stop_serving();
+	return;
+}
+
+void server_getInfo_callback(jobject* _dataEncoder, void* *address, int *size)
+{
+  /* server_getInfo_callback is invoked when dim needs the data for a service.
+   * The data is obtained by calling the encodeData method of the DataEncoder
+   * interface which returns us a Memory object. Next we extract the data address
+   * and size from the returned Memory object.
+   */
+  /* Note, the DataEncoder can obtain the identity of the client by calling
+   * getClient or getClientConnID */
+
+  /* thou shall not not use volatile storage to return info to dim */
+	jobject dataEncoder = *_dataEncoder;
+	jobject theMemory;
+	JNIEnv* env;
+	int doit;
+
+//	DBGe(dim_Dbg_SERVICE_CALLBACK) ; /* no report, only trap */
+
+	doit = dim_jni_attachThread(&env);
+//	(*theJavaVM)->AttachCurrentThread(theJavaVM, (void *)&env, NULL);
+
+	theMemory = (*env)->CallObjectMethod(env, dataEncoder, NativeDataEncoder_encodeNativeData);
+	if(theMemory == NULL)
+	{
+		*address  = 0;
+		*size     = 0;
+	}
+	else
+	{
+		*address  = (void*) (*env)->GetLongField(env, theMemory, NativeDataMemory_dataAddress);
+		*size     = (*env)->GetIntField(env, theMemory, NativeDataMemory_dataSize);
+//		printf("data address = %x, data size = %d\n",*address, *size);
+	}
+	DBGx(dim_Dbg_SERVICE_CALLBACK) printf("DimJNI: server_SERVICE_CALLBACK(dataEncoder=%08lx)\n        ==>    data: %08lx size %08x\n", (dim_long)dataEncoder, (dim_long) *address, *size); 
+
+	if ((*env)->ExceptionOccurred(env)) (*env)->ExceptionDescribe(env); // clear any possible exception, if we do not do this, all further methods will fail!!
+	if(doit)
+		(*theJavaVM)->DetachCurrentThread(theJavaVM);
+
+	return;
+}
+
+
+/*
+ * Class:     dim_Server
+ * Method:    getClientConnID
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_dim_Server_getClientConnID
+  (JNIEnv* env, jclass This)
+{
+	DBGe(dim_Dbg_GETCLIENT) printf("DimJNI: Server.getClientConnID\n");
+
+	if(env){}
+	if(This){}
+	return dis_get_conn_id();
+}
+
+/*
+ * Class:     dim_Server
+ * Method:    getClient
+ * Signature: ()Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_dim_Server_getClient
+  (JNIEnv* env, jclass This)
+{
+	char name[MAX_NODE_NAME+MAX_TASK_NAME+4];
+
+	DBGe(dim_Dbg_GETCLIENT) printf("DimJNI: Server.getClient\n");
+
+	if(This){}
+	if(dis_get_client(name)) 
+		return (*env)->NewStringUTF(env, name);
+	else					 
+		return NULL;
+}
+
+/*
+ * Class:     dim_Server
+ * Method:    getServices
+ * Signature: ()Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_dim_Server_getServices
+  (JNIEnv* env, jclass This)
+{
+	int id;
+
+	DBGe(dim_Dbg_GETCLIENT) printf("DimJNI: Server.getClientServices\n");
+
+	if(This){}
+	if( (id = dis_get_conn_id()) ) 
+		return (*env)->NewStringUTF(env, dis_get_client_services(id));
+	else
+		return NULL;
+}
+
+/*
+ * Class:     dim_Client
+ * Method:    getServerPID
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_getServerPID
+  (JNIEnv* env, jclass This)
+{
+	int pid, ret;
+
+	if(env){}
+	if(This){}
+	ret = dic_get_server_pid(&pid);
+	if(!ret)
+		return 0;
+	return pid;
+}
+
+/*
+ * Class:     dim_Client
+ * Method:    getServerConnID
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_dim_Client_getServerConnID
+  (JNIEnv* env, jclass This)
+{
+	if(env){}
+	if(This){}
+	return dic_get_conn_id();
+}
+
+/*
+ * Class:     dim_Client
+ * Method:    getServer
+ * Signature: ()Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_dim_Client_getServer
+  (JNIEnv* env, jclass This)
+{
+	char name[MAX_NODE_NAME+MAX_TASK_NAME+4];
+
+	if(This){}
+	if(dic_get_server(name)) 
+		return (*env)->NewStringUTF(env, name);
+	else					 
+		return NULL;
+}
+
+/*
+ * Class:     dim_Client
+ * Method:    getServices
+ * Signature: ()Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_dim_Client_getServices
+  (JNIEnv* env, jclass This)
+{
+	int id;
+
+	if(This){}
+	if( (id = dic_get_conn_id()) ) 
+		return (*env)->NewStringUTF(env, dic_get_server_services(id));
+	else
+		return NULL;
+}
+
+/*
+ * Class:     dim_Server
+ * Method:    addService
+ * Signature: (Ljava/lang/String;Ljava/lang/String;Ldim/DataEncoder;)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Server_addService
+  (JNIEnv* env, jclass This, jstring serviceName, jstring serviceType, jobject dataEncoder)
+{
+	const char* serviceNameUTF = (*env)->GetStringUTFChars(env, serviceName, 0);
+	const char* serviceTypeUTF = (*env)->GetStringUTFChars(env, serviceType, 0);
+	jint sid;
+
+//  DBGe(dim_Dbg_ADD_SERVICE) ; /* no reporting, for trap only */
+
+	if(This){}
+ 	dataEncoder = (*env)->NewGlobalRef(env, dataEncoder);
+	sid = (jint)dis_add_service(serviceNameUTF, serviceTypeUTF, 0, 0, server_getInfo_callback, dataEncoder);
+
+	DBGx(dim_Dbg_ADD_SERVICE) printf("DimJNI: Server.addService(%s,%s, @%08lx)=%d\n",serviceNameUTF, serviceTypeUTF, (dim_long)dataEncoder, sid);
+
+	(*env)->ReleaseStringUTFChars(env, serviceName, serviceNameUTF);
+	(*env)->ReleaseStringUTFChars(env, serviceType, serviceTypeUTF);
+	return sid;
+}
+
+
+void server_cmnd_callback(jobject* _theDataDecoder, void* dataAddress, int* _dataSize)
+{
+
+	DBGe(dim_Dbg_CMND_CALLBACK) printf("DimJNI: server CMND_CALLBACK(data: %08lx(%08x))\n", (dim_long) dataAddress, *_dataSize);
+
+  decodeData(_theDataDecoder, dataAddress, _dataSize, 0);
+}
+
+
+/*
+ * Class:     dim_Server
+ * Method:    addCommand
+ * Signature: (Ljava/lang/String;Ljava/lang/String;Ldim/DataDecoder;)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Server_addCommand
+  (JNIEnv* env, jclass This, jstring serviceName, jstring serviceType, jobject dataDecoder)
+{
+	const char* serviceNameUTF = (*env)->GetStringUTFChars(env, serviceName, 0);
+	const char* serviceTypeUTF = (*env)->GetStringUTFChars(env, serviceType, 0);
+	jint sid;
+
+//	DBGe(dim_Dbg_ADD_CMND) ; /* trap only, repot later */
+	if(This){}
+ 	dataDecoder = (*env)->NewGlobalRef(env, dataDecoder);
+	sid = (jint)dis_add_cmnd(serviceNameUTF, serviceTypeUTF, server_cmnd_callback, dataDecoder);
+
+	DBGx(dim_Dbg_ADD_CMND) printf("DimJNI: Server.addCmnd(%s,%s, @%08lx) = %d\n",serviceNameUTF, serviceTypeUTF, (dim_long) dataDecoder, sid);
+
+	(*env)->ReleaseStringUTFChars(env, serviceName, serviceNameUTF);
+	(*env)->ReleaseStringUTFChars(env, serviceType, serviceTypeUTF);
+	return sid;
+}
+
+
+/*
+ * Class:     dim_Server
+ * Method:    selectiveUpdateService
+ * Signature: (I[I)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Server_selectiveUpdateService
+  (JNIEnv* env, jclass This, jint sid, jintArray clients)
+{
+	jint* clientArray;
+	extern void do_update_service(unsigned, int *);
+
+	if(This){}
+	if(clients==NULL) clientArray = NULL;
+	else			  clientArray = (*env)->GetIntArrayElements(env,clients,0);
+
+	DBGe(dim_Dbg_UPDATE_SERVICE) printf("DimJNI: Server.updateService %d\n", sid);
+	do_update_service((unsigned int)sid, (int *)clientArray);
+
+	if(clientArray!=NULL) (*env)->ReleaseIntArrayElements(env,clients,clientArray,JNI_ABORT);
+
+
+	return 0;
+}
+
+/*
+ * Class:     dim_Server
+ * Method:    removeService
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Server_removeService
+  (JNIEnv* env, jclass This, jint sid)
+{
+	DBGe(dim_Dbg_RELEASE_SERVICE) printf("DimJNI: Server.removedService %d\n", sid);
+	if(env){}
+	if(This){}
+	dis_remove_service(sid);
+	return 0;
+}
+
+/*
+ * Class:     dim_Server
+ * Method:    noPadding
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_dim_Server_noPadding
+  (JNIEnv* env, jclass This)
+{
+
+  if(env){}
+  if(This){}
+  dis_disable_padding();
+	return;
+}
+
+/*
+ * Class:     dim_DimErrorHandler
+ * Method:    addSrvErrorHandler
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_dim_DimErrorHandler_addSrvErrorHandler
+  (JNIEnv* env, jclass This)
+{
+
+	void  (*callback_function)();
+
+	if(env){}
+	if(This){}
+	callback_function = &server_error_callback;
+
+	dis_add_error_handler( callback_function );
+
+  return;
+}
+
+/*
+ * Class:     dim_DimErrorHandler
+ * Method:    addCltErrorHandler
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_dim_DimErrorHandler_addCltErrorHandler
+  (JNIEnv* env, jclass This)
+{
+
+	void  (*callback_function)();
+
+	if(env){}
+	if(This){}
+	callback_function = &client_error_callback;
+ 
+	dic_add_error_handler( callback_function ); 
+
+  return;
+}
+
+/*
+ * Class:     dim_DimExitHandler
+ * Method:    addExitHandler
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_dim_DimExitHandler_addExitHandler
+  (JNIEnv* env, jclass This)
+{
+
+	void  (*callback_function)();
+
+	if(env){}
+	if(This){}
+	callback_function = &server_exit_callback;
+
+	dis_add_exit_handler( callback_function ); 
+
+  return;
+}
+
+/*
+ * Class:     dim_DimServer
+ * Method:    disableAST
+ * Signature: ()V;
+ */
+JNIEXPORT void JNICALL Java_dim_DimServer_disableAST
+  (JNIEnv* env, jclass This)
+{
+	
+	DIM_LOCK
+	if(env){}
+	if(This){}
+	return;
+}
+
+/*
+ * Class:     dim_DimServer
+ * Method:    enableAST
+ * Signature: ()V;
+ */
+JNIEXPORT void JNICALL Java_dim_DimServer_enableAST
+  (JNIEnv* env, jclass This)
+{
+	
+	if(env){}
+	if(This){}
+	DIM_UNLOCK
+	return;
+}
+
+/*
+ * Class:     dim_DimClient
+ * Method:    disableAST
+ * Signature: ()V;
+ */
+JNIEXPORT void JNICALL Java_dim_DimClient_disableAST
+  (JNIEnv* env, jclass This)
+{
+	
+	DIM_LOCK
+	if(env){}
+	if(This){}
+	return;
+}
+
+/*
+ * Class:     dim_DimClient
+ * Method:    enableAST
+ * Signature: ()V;
+ */
+JNIEXPORT void JNICALL Java_dim_DimClient_enableAST
+  (JNIEnv* env, jclass This)
+{
+	
+	if(env){}
+	if(This){}
+	DIM_UNLOCK
+	return;
+}
+
+/*
+ * Class:     dim_DimServer
+ * Method:    setDnsNode
+ * Signature: (Ljava/lang/String)V;
+ */
+JNIEXPORT void JNICALL Java_dim_DimServer_setDnsNode
+  (JNIEnv* env, jclass This, jstring nodes)
+{
+	const char* nodesUTF = (*env)->GetStringUTFChars(env, nodes, 0);
+	
+	if(env){}
+	if(This){}
+	dis_set_dns_node(nodesUTF);
+	return;
+}
+
+/*
+ * Class:     dim_DimServer
+ * Method:    setDnsPort
+ * Signature: (I)V;
+ */
+JNIEXPORT void JNICALL Java_dim_DimServer_setDnsPort
+  (JNIEnv* env, jclass This, jint port)
+{
+	if(env){}
+	if(This){}
+	dis_set_dns_port(port);
+	return;
+}
+
+/*
+ * Class:     dim_DimClient
+ * Method:    setDnsNode
+ * Signature: (Ljava/lang/String)V;
+ */
+JNIEXPORT void JNICALL Java_dim_DimClient_setDnsNode
+  (JNIEnv* env, jclass This, jstring nodes)
+{
+	const char* nodesUTF = (*env)->GetStringUTFChars(env, nodes, 0);
+	
+	if(env){}
+	if(This){}
+	dic_set_dns_node(nodesUTF);
+	dic_close_dns();
+	return;
+}
+
+/*
+ * Class:     dim_DimClient
+ * Method:    setDnsPort
+ * Signature: (I)V;
+ */
+JNIEXPORT void JNICALL Java_dim_DimClient_setDnsPort
+  (JNIEnv* env, jclass This, jint port)
+{
+	if(env){}
+	if(This){}
+	dic_set_dns_port(port);
+	return;
+}
+
+/*
+ * Class:     dim_DimServer
+ * Method:    getDnsNode
+ * Signature: ()Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_dim_DimServer_getDnsNode
+  (JNIEnv* env, jclass This)
+{
+	char nodes[255];
+	
+	if(This){}
+	dis_get_dns_node(nodes);
+	return (*env)->NewStringUTF(env, (char*)nodes);
+}
+
+/*
+ * Class:     dim_DimClient
+ * Method:    getDnsNode
+ * Signature: ()Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_dim_DimClient_getDnsNode
+  (JNIEnv* env, jclass This)
+{
+	char nodes[255];
+	
+	if(This){}
+	dic_get_dns_node(nodes);
+	return (*env)->NewStringUTF(env, (char*)nodes);
+}
+
+/*
+ * Class:     dim_DimServer
+ * Method:    getDnsPort
+ * Signature: ()I;
+ */
+JNIEXPORT jint JNICALL Java_dim_DimServer_getDnsPort
+  (JNIEnv* env, jclass This)
+{
+	
+	if(env){}
+	if(This){}
+	return dis_get_dns_port();
+}
+
+/*
+ * Class:     dim_DimClient
+ * Method:    getDnsPort
+ * Signature: ()I;
+ */
+JNIEXPORT jint JNICALL Java_dim_DimClient_getDnsPort
+  (JNIEnv* env, jclass This)
+{
+
+	if(env){}
+	if(This){}
+	return dic_get_dns_port();
+}
+
+/*
+ * Class:     dim_DimService
+ * Method:    setQuality
+ * Signature: (II)V;
+ */
+JNIEXPORT void JNICALL Java_dim_DimService_setQuality
+  (JNIEnv* env, jclass This, jint sid, jint qual)
+{
+	
+	if(env){}
+	if(This){}
+	dis_set_quality(sid, qual);
+	return;
+}
+
+
+/*
+ * Class:     dim_DimService
+ * Method:    setTimestamp
+ * Signature: (III)V;
+ */
+JNIEXPORT void JNICALL Java_dim_DimService_setTimestamp
+  (JNIEnv* env, jclass This, jint sid, jint secs, jint millisecs)
+{
+
+	if(env){}
+	if(This){}
+	dis_set_timestamp(sid, secs, millisecs);
+	return;
+}
+
+/* implementation of dim_memory,h =============================================================== */
+
+/*
+ * Class:     dim_Memory
+ * Method:    dumpInternalData
+ * Signature: (III)V
+ */
+JNIEXPORT void JNICALL Java_dim_Memory_dumpInternalData
+  (JNIEnv *env, jclass nativeClass, jlong internalDataAddress, jint internalDataSize, jint dumpOptions)
+{
+  {
+    int* data = (int*) internalDataAddress;
+    int leng = (int)internalDataSize/(int)sizeof(int);
+    int  i;
+
+	if(env){}
+	if(dumpOptions){}
+	if(nativeClass){}
+    for (i=0;i<leng;i++)
+    {
+      if((i%8)==0) printf("%04x:",i);
+      printf(" %08x", *(data++));
+      if((i%8)==7) printf("\n");
+    }
+    if((leng%8)!=0) printf("\n");
+  }
+  return;
+}
+
+
+/*
+ * Class:     dim_Memory
+ * Method:    getBoolean
+ * Signature: (I)Z
+ */
+JNIEXPORT jboolean JNICALL Java_dim_Memory_getBoolean
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.getBoolean\n");
+	return *(jboolean*)nativeDataAddress;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    getChar
+ * Signature: (I)C
+ */
+JNIEXPORT jchar JNICALL Java_dim_Memory_getChar
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.getChar\n");
+	return *(jchar*)nativeDataAddress;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    getByte
+ * Signature: (I)B
+ */
+JNIEXPORT jbyte JNICALL Java_dim_Memory_getByte
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.getByte\n");
+	return *(jbyte*)nativeDataAddress;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    getShort
+ * Signature: (I)S
+ */
+JNIEXPORT jshort JNICALL Java_dim_Memory_getShort
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.getShort\n");
+	return *(jshort*)nativeDataAddress;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    getInt
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_dim_Memory_getInt
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.getInt\n");
+	return *(jint*)nativeDataAddress;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    getLong
+ * Signature: (I)J
+ */
+JNIEXPORT jlong JNICALL Java_dim_Memory_getLong
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.getLong\n");
+	return *(jlong*)nativeDataAddress;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    getFloat
+ * Signature: (I)F
+ */
+JNIEXPORT jfloat JNICALL Java_dim_Memory_getFloat
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.getFloat\n");
+	return *(jfloat*)nativeDataAddress;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    getDouble
+ * Signature: (I)D
+ */
+JNIEXPORT jdouble JNICALL Java_dim_Memory_getDouble
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.getDouble\n");
+	return *(jdouble*)nativeDataAddress;
+}
+
+
+/*
+ * Class:     dim_Memory
+ * Method:    getString
+ * Signature: (I,I)Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_dim_Memory_getString
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jint maxSize)
+{
+	if(env){}
+	if(nativeClass){}
+	if(maxSize){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.getString\n");
+	return (*env)->NewStringUTF(env, (char*)nativeDataAddress);
+}
+
+
+/*
+ * Class:     dim_Memory
+ * Method:    copyIntoBooleanArray
+ * Signature: (I[ZII)V
+ */
+JNIEXPORT void JNICALL Java_dim_Memory_copyIntoBooleanArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jbooleanArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.copyIntoBooleanArray\n");
+	(*env)->SetBooleanArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    copyIntoCharArray
+ * Signature: (I[CII)V
+ */
+JNIEXPORT void JNICALL Java_dim_Memory_copyIntoCharArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jcharArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.copyIntoCharArray\n");
+	(*env)->SetCharArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    copyIntoByteArray
+ * Signature: (I[BII)V
+ */
+JNIEXPORT void JNICALL Java_dim_Memory_copyIntoByteArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jbyteArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.copyIntoByteArray\n");
+	(*env)->SetByteArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    copyIntoShortArray
+ * Signature: (I[SII)V
+ */
+JNIEXPORT void JNICALL Java_dim_Memory_copyIntoShortArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jshortArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.copyIntoShortArray\n");
+	(*env)->SetShortArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    copyIntoIntArray
+ * Signature: (I[III)V
+ */
+JNIEXPORT void JNICALL Java_dim_Memory_copyIntoIntArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jintArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.copyIntoIntArray\n");
+	(*env)->SetIntArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    copyIntoLongArray
+ * Signature: (I[JII)V
+ */
+JNIEXPORT void JNICALL Java_dim_Memory_copyIntoLongArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jlongArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.copyIntoLongArray\n");
+	(*env)->SetLongArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    copyIntoFloatArray
+ * Signature: (I[FII)V
+ */
+JNIEXPORT void JNICALL Java_dim_Memory_copyIntoFloatArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jfloatArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.copyIntoFloatArray\n");
+	(*env)->SetFloatArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_Memory
+ * Method:    copyIntoDoubleArray
+ * Signature: (I[DII)V
+ */
+JNIEXPORT void JNICALL Java_dim_Memory_copyIntoDoubleArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jdoubleArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY) printf("DimJNI: Memory.copyIntoDoubleArray\n");
+	(*env)->SetDoubleArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+
+
+
+/* implementation of dim_mutablememory.h ======================================================== */
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    allocateNativeDataBlock
+ * Signature: (I)I
+ */
+JNIEXPORT jlong JNICALL Java_dim_MutableMemory_allocateNativeDataBlock
+  (JNIEnv* env, jclass nativeClass, jint size)
+{
+  jlong address;
+	if(env){}
+	if(nativeClass){}
+//	DBGe(dim_Dbg_MEMORY_ALLOCATE) ; /* report only */
+  address = (jlong) malloc((size_t)size);
+	DBGx(dim_Dbg_MEMORY_ALLOCATE) printf("DimJNI: MutableMemory.allocateNativeDataBlock of %d bytes at 0x%08lx\n", size, address);
+  return address;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    releaseNativeDataBlock
+ * Signature: (I)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_releaseNativeDataBlock
+  (JNIEnv* env, jclass nativeClass, jlong desc)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MEMORY_ALLOCATE) printf("DimJNI: MutableMemory.releaseNativeDataBlock 0x%08lx\n", desc);
+ //printf("free %08X\n", desc);
+ 	free((void*)desc);
+	return;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    setBoolean
+ * Signature: (IZ)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_setBoolean
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jboolean data)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.setBoolean(0x%08lx, %02x)\n", nativeDataAddress, data);
+	*(jboolean*)nativeDataAddress = data;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    setChar
+ * Signature: (IC)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_setChar
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jchar data)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.setChar(0x%08lx, %02x)\n", nativeDataAddress, data);
+	*(jchar*)nativeDataAddress = data;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    setByte
+ * Signature: (IB)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_setByte
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jbyte data)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.setByte(0x%08lx, %02x)\n", nativeDataAddress, data);
+	*(jbyte*)nativeDataAddress = data;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    setShort
+ * Signature: (IS)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_setShort
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jshort data)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.setShort(0x%08lx, %04x)\n", nativeDataAddress, data);
+	*(jshort*)nativeDataAddress = data;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    setInt
+ * Signature: (II)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_setInt
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jint data)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.setInt(0x%08lx, %0x)\n", nativeDataAddress, data);
+	*(jint*)nativeDataAddress = data;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    setLong
+ * Signature: (IJ)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_setLong
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jlong data)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.setLong(0x%08lx, %08x)\n", nativeDataAddress, (unsigned)data);
+	*(jlong*)nativeDataAddress = data;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    setFloat
+ * Signature: (IF)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_setFloat
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jfloat data)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.setFloat(0x%08lx, %f)\n", nativeDataAddress, data);
+	*(jfloat*)nativeDataAddress = data;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    setDouble
+ * Signature: (ID)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_setDouble
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jdouble data)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.setDouble(0x%08lx, %08x)\n", nativeDataAddress, (unsigned)data);
+	*(jdouble*)nativeDataAddress = data;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    setString
+ * Signature: (ILjava/lang/String;)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_setString
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jstring data)
+{
+	const char* charData = (*env)->GetStringUTFChars(env, data, 0);
+
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.setString(0x%08lx, %s)\n", nativeDataAddress, charData);
+
+	if(nativeClass){}
+	strcpy((char*)nativeDataAddress, charData);
+	(*env)->ReleaseStringUTFChars(env, data, charData);
+}
+
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    copyFromBooleanArray
+ * Signature: (I[ZII)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_copyFromBooleanArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jbooleanArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.copyFromBooleanArray\n");
+	(*env)->GetBooleanArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    copyFromCharArray
+ * Signature: (I[CII)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_copyFromCharArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jcharArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.copyFromCharArray\n");
+	(*env)->GetCharArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    copyFromByteArray
+ * Signature: (I[BII)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_copyFromByteArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jbyteArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.copyFromByteArray\n");
+	(*env)->GetByteArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    copyFromShortArray
+ * Signature: (I[SII)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_copyFromShortArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jshortArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.copyFromShortArray\n");
+	(*env)->GetShortArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    copyFromIntArray
+ * Signature: (I[III)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_copyFromIntArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jintArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.copyFromIntArray\n");
+	(*env)->GetIntArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    copyFromLongArray
+ * Signature: (I[JII)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_copyFromLongArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jlongArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.copyFromLongArray\n");
+	(*env)->GetLongArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    copyFromFloatArray
+ * Signature: (I[FII)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_copyFromFloatArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jfloatArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.copyFromFloatArray\n");
+	(*env)->GetFloatArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    copyFromDoubleArray
+ * Signature: (I[DII)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_copyFromDoubleArray
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jdoubleArray array, jint arrayOffset, jint length)
+{
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.copyFromDoubleArray\n");
+	(*env)->GetDoubleArrayRegion(env, array, arrayOffset, length, (void*) nativeDataAddress);
+	return ;
+}
+
+/*
+ * Class:     dim_MutableMemory
+ * Method:    copyNativeDataBlock
+ * Signature: (II)V
+ */
+JNIEXPORT void JNICALL Java_dim_MutableMemory_copyNativeDataBlock
+  (JNIEnv* env, jclass nativeClass, jlong destinationDataAddress, jlong sourceDataAddress, jint length)
+{
+	if(env){}
+	if(nativeClass){}
+	DBGe(dim_Dbg_MUTABLE_MEMORY) printf("DimJNI: MutableMemory.copyNativeDataBlock\n");
+	memcpy((void *)destinationDataAddress, (void *)sourceDataAddress, (size_t)length);
+	return ;
+}
+
+
+
+
+/* implementation of dim_objectdescriptor.h ===================================================== */
+
+/* fancy packing methods */
+
+typedef enum {f_skip,
+              f_boolean, f_byte, f_char, f_short, f_int, f_long, f_float, f_double, f_string, f_object,
+              a_boolean, a_byte, a_char, a_short, a_int, a_long, a_float, a_double,	a_string, a_object,
+              c_boolean, c_byte, c_char, c_short, c_int, c_long, c_float, c_double, c_string, c_object
+			} FieldType;
+typedef struct objectDescriptorEntry_struct objectDescriptorEntry_type;
+struct objectDescriptorEntry_struct
+{
+	FieldType type;
+	int       length;
+	int       offset;
+	jfieldID  fieldID;
+	jarray    array;
+	int       arrayOffset;
+};
+
+typedef struct objectDescriptor_struct objectDescriptor_type;
+struct objectDescriptor_struct
+{
+	jclass objectClass;
+	int	entries;
+	int	maxEntries;
+	objectDescriptorEntry_type* entry;
+};
+
+
+/*
+ * Class:     dim_ObjectDescriptor
+ * Method:    newObjectDescriptor
+ * Signature: (Ljava/lang/Class;I)I
+ */
+JNIEXPORT jlong JNICALL Java_dim_ObjectDescriptor_newObjectDescriptor
+  (JNIEnv* env, jclass nativeClass, jclass objectClass, jint maxEntries)
+{
+	objectDescriptor_type* descriptor;
+
+//  DBGe(dim_Dbg_DESCRIPTORS) ; /* trap only, report on exit */
+  // todo put object descriptor and entry array in the same malloc (for dump purposes)
+//printf("malloc descriptor\n");
+	if(env){}
+	if(nativeClass){}
+	if(maxEntries==0) maxEntries = 10;
+	descriptor = (objectDescriptor_type*) malloc(sizeof(objectDescriptor_type));
+	descriptor->entry = (objectDescriptorEntry_type*) malloc((size_t)(maxEntries * (jint)sizeof(objectDescriptorEntry_type)));
+	descriptor->objectClass = (*env)->NewGlobalRef(env, objectClass);
+	descriptor->entries = 0;
+	descriptor->maxEntries = maxEntries;
+
+	DBGx(dim_Dbg_DESCRIPTORS) printf("DimJNI: Native.newObjectDescriptor %08lx\n", (dim_long)descriptor);
+	return (dim_long) descriptor;
+}
+
+objectDescriptorEntry_type* getNextDescriptorEntry(objectDescriptor_type* descriptor)
+{
+	if(descriptor->entries == descriptor->maxEntries)
+	{
+		objectDescriptorEntry_type* entry = realloc(descriptor->entry, (size_t)(descriptor->maxEntries+10));
+//printf("realloc descriptor\n");
+		if(entry==NULL) return NULL;
+
+		descriptor->entry = entry;
+		descriptor->maxEntries = descriptor->maxEntries+10;
+	}
+	return descriptor->entry + descriptor->entries++;
+}
+
+
+
+/*
+ * Class:     dim_ObjectDescriptor
+ * Method:    addFieldToObjectDescriptor
+ * Signature: (ILjava/lang/String;Ljava/lang/String;I)I
+ */
+JNIEXPORT jint JNICALL Java_dim_ObjectDescriptor_addFieldToObjectDescriptor
+  (JNIEnv* env, jclass nativeClass, jlong desc, jstring fieldName, jstring fieldType, jint offset)
+{
+//	FieldType field_type = f_int;
+	objectDescriptorEntry_type* entry = getNextDescriptorEntry((objectDescriptor_type*) desc);
+	const char*                 name  = (*env)->GetStringUTFChars(env, fieldName, 0);
+	const char*                 type  = (*env)->GetStringUTFChars(env, fieldType, 0);
+	jfieldID fieldID  = (*env)->GetFieldID(env, ((objectDescriptor_type*) desc)->objectClass, name, type);
+
+	// TODO throw an error if there is no such FieldID
+
+	DBGe(dim_Dbg_DESCRIPTORS) printf("DimJNI: Native.addFieldToObjectDescriptor %08lx Field %s Type %s\n", (dim_long) desc, name, type);
+	// TODO: if(entry==NULL) throw out-of-memory exception, set length to 0
+
+	// TODO: if(fieldType == "I") field_type = f_int; etc
+
+	if(nativeClass){}
+	entry->type         =f_skip;
+	entry->length       =0;
+	entry->offset       =offset;
+	entry->fieldID      =fieldID;
+	entry->array        =0;
+	entry->arrayOffset  =0;
+
+	switch (*type)
+	{
+	case 'Z':
+	{
+		entry->type	  =f_boolean;
+		entry->length =sizeof(jboolean);
+		break;
+	}
+	case 'B':
+	{
+		entry->type	  =f_byte;
+		entry->length =sizeof(jbyte);
+		break;
+	}
+
+	case 'C':
+	{
+		entry->type	  =f_char;
+		entry->length =sizeof(jchar);
+		break;
+	}
+
+	case 'S':
+	{
+		entry->type	  =f_short;
+		entry->length =sizeof(jshort);
+		break;
+	}
+
+	case 'I':
+	{
+		entry->type	  =f_int;
+		entry->length =sizeof(jint);
+		break;
+	}
+
+	case 'J':
+	{
+		entry->type	  =f_long;
+		entry->length =sizeof(jlong);
+		break;
+	}
+
+	case 'F':
+	{
+		entry->type	  =f_float;
+		entry->length =sizeof(jfloat);
+		break;
+	}
+
+	case 'D':
+	{
+		entry->type	  =f_double;
+		entry->length =sizeof(jdouble);
+		break;
+	}
+
+	//case '[':
+	//{
+	//	// TODO deal with array types
+	//}
+	default :
+	{
+		printf("DimJNI: addFieldToObjectDescriptor - type %s not yet supported. (field %s)\n", name, type);
+	}
+	}
+
+
+	(*env)->ReleaseStringUTFChars(env, fieldName, name);
+	(*env)->ReleaseStringUTFChars(env, fieldType, type);
+	return entry->length;
+}
+
+
+/*
+ * Class:     dim_ObjectDescriptor
+ * Method:    deleteObjectDescriptor
+ * Signature: (I)V
+ */
+JNIEXPORT void JNICALL Java_dim_ObjectDescriptor_deleteObjectDescriptor
+   (JNIEnv* env, jclass nativeClass, jlong desc)
+{
+	objectDescriptor_type* descriptor = (objectDescriptor_type*) desc;
+ 
+	if(nativeClass){}
+	DBGe(dim_Dbg_DESCRIPTORS) printf("DimJNI: Native.deleteObjectDescriptor %08lx\n", (dim_long)desc);
+	(*env)->DeleteGlobalRef(env, descriptor->objectClass);
+//printf("free descriptor\n");
+	free(descriptor->entry);
+	free(descriptor);
+	return;
+}
+
+
+/*
+ * Class:     dim_ObjectDescriptor
+ * Method:    copyIntoObject
+ * Signature: (ILjava/lang/Object;I)V
+ */
+ 
+JNIEXPORT void JNICALL Java_dim_ObjectDescriptor_copyIntoObject
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jobject theObject, jlong desc)
+{
+	int i;
+	objectDescriptorEntry_type* entry;
+
+	objectDescriptor_type* descriptor = (objectDescriptor_type*) desc;
+	jclass objectClass = descriptor->objectClass;
+
+	DBGe(dim_Dbg_DESCRIPTORS) printf("DimJNI: Native.copyIntoObject %08lx\n", (dim_long)desc);
+
+	if(nativeClass){}
+	// test if object can be cast to object class
+	if((*env)->IsInstanceOf(env, theObject, objectClass) != JNI_TRUE)
+	{
+		// throw exception
+		jclass exceptionClass = (*env)->FindClass(env, "java/lang/IllegalArgumentException");
+		(*env)->ThrowNew(env, exceptionClass, " (Sorry...)");
+		return;
+	}
+
+	// loop over descriptor entries
+	entry = descriptor->entry;
+	for (i=0; i<descriptor->entries; i++)
+	{
+		switch (entry->type)
+		{
+		case f_boolean:
+			(*env)->SetBooleanField(env, theObject, entry->fieldID, *(jboolean*) (nativeDataAddress+entry->offset));
+			break;
+		case f_byte:
+			(*env)->SetByteField(   env, theObject, entry->fieldID, *(jbyte*)    (nativeDataAddress+entry->offset));
+			break;
+		case f_char:
+			(*env)->SetCharField(   env, theObject, entry->fieldID, *(jchar*)    (nativeDataAddress+entry->offset));
+			break;
+		case f_short:
+			(*env)->SetShortField(  env, theObject, entry->fieldID, *(jshort*)   (nativeDataAddress+entry->offset));
+			break;
+		case f_int:
+			(*env)->SetIntField(    env, theObject, entry->fieldID, *(jint*)     (nativeDataAddress+entry->offset));
+			break;
+		case f_long:
+			(*env)->SetLongField(   env, theObject, entry->fieldID, *(jlong*)    (nativeDataAddress+entry->offset));
+			break;
+		case f_float:
+			(*env)->SetFloatField(  env, theObject, entry->fieldID, *(jfloat*)   (nativeDataAddress+entry->offset));
+			break;
+		case f_double:
+			(*env)->SetDoubleField( env, theObject, entry->fieldID, *(jdouble*)  (nativeDataAddress+entry->offset));
+			break;
+		case a_boolean:
+			(*env)->SetBooleanArrayRegion(env, entry->array, entry->arrayOffset, entry->length, (void*) (nativeDataAddress+entry->offset));
+			break;
+		case c_boolean:
+			(*env)->SetBooleanArrayRegion(env, entry->array, entry->arrayOffset, entry->length, (void*) (nativeDataAddress+entry->offset));
+		//TODO :: complete this list, including recursive call to this function for objects
+			break;
+		default:
+			break;
+		}
+		//TODO :: ?? if ((*env)->ExceptionOccurred(env)) (*env)->ExceptionDescribe(env); // clear any possible exception, if we do not do this, all further methods will fail!!
+		entry++;
+	}
+	return;
+}
+
+/*
+ * Class:     dim_ObjectDescriptor
+ * Method:    copyFromObject
+ * Signature: (ILjava/lang/Object;I)V
+ */
+JNIEXPORT void JNICALL Java_dim_ObjectDescriptor_copyFromObject
+  (JNIEnv* env, jclass nativeClass, jlong nativeDataAddress, jobject theObject, jlong desc)
+{
+	int i;
+	objectDescriptorEntry_type* entry;
+
+	objectDescriptor_type* descriptor = (objectDescriptor_type*) desc;
+	jclass objectClass = descriptor->objectClass;
+
+	DBGe(dim_Dbg_DESCRIPTORS) printf("DimJNI: Native.copyFromObject %08x\n", (int)desc);
+
+	if(nativeClass){}
+	// test if object can be cast to object class
+	if((*env)->IsInstanceOf(env, theObject, objectClass) != JNI_TRUE)
+	{
+		// throw exception
+		jclass exceptionClass = (*env)->FindClass(env, "java/lang/IllegalArgumentException");
+		(*env)->ThrowNew(env, exceptionClass, " (Sorry...)");
+		return;
+	}
+
+	// loop over descriptor entries
+	entry = descriptor->entry;
+	for (i=0; i<descriptor->entries; i++)
+	{
+		switch (entry->type)
+		{
+		case f_boolean:
+			*(jboolean*) (nativeDataAddress+entry->offset) = (*env)->GetBooleanField(env, theObject, entry->fieldID);
+			break;
+		case f_byte:
+			*(jbyte*) (nativeDataAddress+entry->offset)    = (*env)->GetByteField(env, theObject, entry->fieldID);
+			break;
+		case f_char:
+			*(jchar*) (nativeDataAddress+entry->offset)    = (*env)->GetCharField(env, theObject, entry->fieldID);
+			break;
+		case f_short:
+			*(jshort*) (nativeDataAddress+entry->offset)   = (*env)->GetShortField(env, theObject, entry->fieldID);
+			break;
+		case f_int:
+			*(jint*) (nativeDataAddress+entry->offset)     = (*env)->GetIntField(env, theObject, entry->fieldID);
+			break;
+		case f_long:
+			*(jlong*) (nativeDataAddress+entry->offset)    = (*env)->GetLongField(env, theObject, entry->fieldID);
+			break;
+		case f_float:
+			*(jfloat*) (nativeDataAddress+entry->offset)   = (*env)->GetFloatField(env, theObject, entry->fieldID);
+			break;
+		case f_double:
+			*(jdouble*) (nativeDataAddress+entry->offset)  = (*env)->GetDoubleField(env, theObject, entry->fieldID);
+			break;
+//		case a_boolean:
+//      (*env)->GetBooleanArrayRegion(env, array, 0, length, (void*) nativeDataAddress);
+//			break;
+//		case c_boolean:
+//			*(jbyte*) (nativeDataAddress+entry->offset)  = (*env)->GetField(env, theObject, entry->fieldID);
+//			(*env)->SetBooleanArrayRegion(env, entry->array, entry->arrayOffset, entry->length, (void*) (nativeDataAddress+entry->offset));
+//		//TODO :: complete this list, including recursive call to this function for objects
+//			break;
+		default:
+			break;
+		}
+		//TODO :: ?? if ((*env)->ExceptionOccurred(env)) (*env)->ExceptionDescribe(env); // clear any possible exception, if we do not do this, all further methods will fail!!
+		entry++;
+	}
+	return;
+}
+
+
+#ifdef zombies
+
+
+//	jstring	  myFormat;
+//	myFormat = (*env)->NewStringUTF(env, "x");
+//	(*env)->CallVoidMethod(env, dataObject, setDimFormatMID, myFormat);		// JUST TO TRY
+
+//	jintArray dataArray;
+//	int data[10]={1,2,3,4,5,6,7,8,9,-1};
+//	dataArray = (*env)->NewIntArray(env,10);
+//	(*env)->SetIntArrayRegion(env, dataArray,0,10,data);
+//	(*env)->CallVoidMethod(env, dataObject, NativeDataDecoder_decodeNativeData,   dataArray);	// JUST TO TRY
+
+//	jclass     dataClass     = (*env)->GetObjectClass(env, dataObject);
+
+//	(*env)->CallIntMethod(env,dataObject,dimOIlengthMID);
+//	(*env)->CallNonvirtualIntMethod(env,dataObject, dataItemInterface, dimOIlengthMID);//	formatString = (jstring) (*env)->CallNonvirtualObjectMethod(env, dataObject, dataItemInterface, getDimFormatMID);
+
+	// Print the current thread ID in the Debug Window
+	// TRACE("Current Thread ID = 0x%X\n", AfxGetThread()->m_nThreadID);
+            _RPT1(_CRT_ERROR, "Invalid allocation size: %u bytes.\n", nSize);
+
+
+//	formatString = (jstring) (*env)->CallObjectMethod(env,dataObject,getDimFormatMID);
+//	format = (*env)->GetStringUTFChars(env, formatString, 0);
+//	printf("Format string in native: %s\n",format);
+//	(*env)->ReleaseStringUTFChars(env, formatString, format);
+
+  /* server_getInfo_callback is invoked when dim needs the data for a service.
+   * The data is obtained by calling the encodeData method of the DataEncoder
+   * interface which returns us a Memory object. Next we extract the data address
+   * and size from the returned Memory object.
+   *
+   * Alternative:
+   * I call the following class method: Server.sendMeTheData(theDataEncoder)
+   * This method is implemented as
+   * sendMeTheData(DataEncoder theDataEncoder)
+   * {
+   *   Memory theData = theDataEncoder.encodeData();
+   *   Server.setDataReference(Memory.dataAddress, Memory.DataSize);
+   * }
+   * The method setDataReference(int dataAddress, int dataSize) is implemented
+   * as a native method and receives directly the data which one can store in
+   * a global variable.
+   * More complicated, not convinced that it would be more efficient.
+   */
+
+
+
+#endif
Index: branches/testFACT++branch/dim/src/dim_thr.c
===================================================================
--- branches/testFACT++branch/dim/src/dim_thr.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/dim_thr.c	(revision 18277)
@@ -0,0 +1,929 @@
+#include <signal.h>
+#define DIMLIB
+#include "dim.h"
+
+#ifndef WIN32
+
+#ifndef NOTHREADS
+#include <pthread.h>
+#include <semaphore.h>
+#ifdef solaris
+#include <synch.h>
+#endif
+#ifdef darwin
+#include <sys/types.h>
+#include <sys/stat.h>
+#endif
+
+pthread_t IO_thread = 0;
+pthread_t ALRM_thread = 0;
+pthread_t INIT_thread = 0;
+pthread_t MAIN_thread = 0;
+#ifndef darwin
+sem_t DIM_INIT_Sema;
+/*
+sem_t DIM_WAIT_Sema;
+*/
+#else
+sem_t *DIM_INIT_Semap;
+/*
+sem_t *DIM_WAIT_Semap;
+*/
+#endif
+int INIT_count = 0;
+/*
+int WAIT_count = 0;
+*/
+int DIM_THR_init_done = 0;
+
+void *dim_tcpip_thread(void *tag)
+{
+	extern int dim_tcpip_init();
+	extern void tcpip_task();
+	/*	
+	int prio;
+		
+	thr_getprio(thr_self(),&prio);
+	thr_setprio(thr_self(),prio+10);
+	*/
+	if(tag){}
+	IO_thread = pthread_self();
+
+	dim_tcpip_init(1);
+	if(INIT_thread)
+	{
+#ifndef darwin
+		sem_post(&DIM_INIT_Sema);
+#else
+		sem_post(DIM_INIT_Semap);
+#endif
+	}
+	while(1)
+    {
+		tcpip_task();
+		/*
+#ifndef darwin
+		sem_post(&DIM_WAIT_Sema);
+#else
+		sem_post(DIM_WAIT_Semap);
+#endif
+		*/
+		dim_signal_cond();
+    }
+}
+
+void *dim_dtq_thread(void *tag)
+{
+	extern int dim_dtq_init();
+	extern int dtq_task();
+	/*
+	int prio;
+
+	thr_getprio(thr_self(),&prio);
+	thr_setprio(thr_self(),prio+5);
+	*/
+	if(tag){}
+	ALRM_thread = pthread_self();
+
+	dim_dtq_init(1);
+	if(INIT_thread)
+	{
+#ifndef darwin
+		sem_post(&DIM_INIT_Sema);
+#else
+		sem_post(DIM_INIT_Semap);
+#endif
+	}
+	while(1)
+	{
+		dtq_task();
+		/*
+#ifndef darwin
+		sem_post(&DIM_WAIT_Sema);
+#else
+		sem_post(DIM_WAIT_Semap);
+#endif
+		*/
+		dim_signal_cond();
+    }
+}
+
+void dim_init()
+{
+	pthread_t t_id;
+	void ignore_sigpipe();
+	extern int dna_init();
+/*
+#ifdef LYNXOS
+*/
+    pthread_attr_t attr;
+/*
+#endif
+*/
+    if(DIM_Threads_OFF)
+    {
+		dim_no_threads();
+		return;
+    }
+	if(!DIM_THR_init_done)
+	{
+	  /*
+		int prio;
+	  */
+		DIM_THR_init_done = 1;
+		dna_init();
+		/*
+		thr_getprio(thr_self(),&prio);
+		thr_setprio(thr_self(),prio+3);
+		*/
+		INIT_thread = pthread_self();
+		MAIN_thread = INIT_thread;
+		
+#ifndef darwin 	
+		sem_init(&DIM_INIT_Sema, 0, (unsigned int)INIT_count);
+		/*
+		sem_init(&DIM_WAIT_Sema, 0, WAIT_count);
+		*/
+#else
+		DIM_INIT_Semap = sem_open("/Dim_INIT_Sem", O_CREAT, S_IRUSR | S_IWUSR, INIT_count);
+		/*
+		DIM_WAIT_Semap = sem_open("/Dim_WAIT_Sem", O_CREAT, S_IRUSR | S_IWUSR, WAIT_count);
+		*/
+#endif
+		
+		ignore_sigpipe();
+
+#if defined (LYNXOS) && !defined (__Lynx__)
+		pthread_attr_create(&attr);
+		pthread_create(&t_id, attr, dim_dtq_thread, 0);
+#else
+/*
+		pthread_create(&t_id, NULL, dim_dtq_thread, 0);
+*/
+		pthread_attr_init(&attr);
+		pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED);
+		pthread_create(&t_id, &attr, dim_dtq_thread, 0);
+#endif
+#ifndef darwin
+		sem_wait(&DIM_INIT_Sema);
+#else
+		sem_wait(DIM_INIT_Semap);
+#endif
+#if defined (LYNXOS) && !defined (__Lynx__)
+		pthread_create(&t_id, attr, dim_tcpip_thread, 0);
+#else
+		pthread_create(&t_id, &attr, dim_tcpip_thread, 0);
+#endif
+#ifndef darwin
+		sem_wait(&DIM_INIT_Sema);
+#else
+		sem_wait(DIM_INIT_Semap);
+#endif
+		INIT_thread = 0;
+	}
+}
+
+void dim_stop()
+{
+	void dim_tcpip_stop(), dim_dtq_stop();
+/*
+	int i;
+	int n = 0;
+
+	for( i = 0; i< Curr_N_Conns; i++ )
+	{
+		if(Net_conns[i].channel != 0)
+			n++;
+	}
+	if(n)
+		return;
+*/
+	if(IO_thread)
+		pthread_cancel(IO_thread);
+	if(ALRM_thread)
+		pthread_cancel(ALRM_thread);
+	if(IO_thread) 
+		pthread_join(IO_thread,0);
+	if(ALRM_thread) 
+		pthread_join(ALRM_thread,0);
+#ifndef darwin 		
+	sem_destroy(&DIM_INIT_Sema);
+	/*
+	sem_destroy(&DIM_WAIT_Sema);
+	*/
+#else
+	sem_unlink("/Dim_INIT_Sem");
+	/*
+	sem_unlink("/Dim_WAIT_Sem");
+	*/
+	sem_close(DIM_INIT_Semap);
+	/*
+	sem_close(DIM_WAIT_Semap);
+	*/
+#endif
+	dim_tcpip_stop();
+	dim_dtq_stop();	
+	IO_thread = 0;
+	ALRM_thread = 0;
+	DIM_THR_init_done = 0;
+}
+
+dim_long dim_start_thread(void *(*thread_ast)(void *), dim_long tag)
+{
+	pthread_t t_id;
+    pthread_attr_t attr;
+	
+#if defined (LYNXOS) && !defined (__Lynx__)
+	pthread_attr_create(&attr);
+	pthread_create(&t_id, attr, (void *)thread_ast, (void *)tag);
+#else
+	pthread_attr_init(&attr);
+	pthread_create(&t_id, &attr, thread_ast, (void *)tag);
+#endif
+	return((dim_long)t_id);
+}	
+
+int dim_stop_thread(dim_long t_id)
+{
+	int ret;
+	ret = pthread_cancel((pthread_t)t_id);
+	dim_print_date_time();
+	printf("dim_stop_thread: this function is obsolete, it creates memory leaks\n");
+	return ret;
+}
+
+int dim_set_scheduler_class(int pclass)
+{
+#ifdef __linux__
+	int ret, prio, p;
+	struct sched_param param;
+
+	if(pclass == 0)
+	{
+		pclass = SCHED_OTHER;
+	}
+	else if(pclass == 1)
+	{
+		pclass = SCHED_FIFO;
+	}
+	else if(pclass == 2)
+	{
+		pclass = SCHED_RR;
+	}
+	prio = sched_get_priority_min(pclass);
+	ret = pthread_getschedparam(MAIN_thread, &p, &param);
+	if( (p == SCHED_OTHER) || (pclass == SCHED_OTHER) )
+		param.sched_priority = prio;
+	ret = pthread_setschedparam(MAIN_thread, pclass, &param);   
+	if(ret)
+	  return 0;
+	ret = pthread_getschedparam(IO_thread, &p, &param);   
+	if( (p == SCHED_OTHER) || (pclass == SCHED_OTHER) )
+		param.sched_priority = prio;
+	ret = pthread_setschedparam(IO_thread, pclass, &param);   
+	if(ret)
+	  return 0;
+	ret = pthread_getschedparam(ALRM_thread, &p, &param);   
+	if( (p == SCHED_OTHER) || (pclass == SCHED_OTHER) )
+		param.sched_priority = prio;
+	ret = pthread_setschedparam(ALRM_thread, pclass, &param);   
+	if(!ret)
+	  return 1;
+#endif
+	return 0;
+}
+
+int dim_get_scheduler_class(int *pclass)
+{
+#ifdef __linux__
+	int ret;
+	struct sched_param param;
+
+	ret = pthread_getschedparam(MAIN_thread, pclass, &param);   
+	if(!ret)
+	  return 1;
+#endif
+	return 0;
+}
+
+int dim_set_priority(int threadId, int prio)
+{
+#ifdef __linux__
+	pthread_t id = MAIN_thread;
+	int ret;
+	int pclass;
+	struct sched_param param;
+
+	if(threadId == 1)
+		id = MAIN_thread;
+	else if(threadId == 2)
+		id = IO_thread;
+	else if(threadId == 3)
+		id = ALRM_thread;
+
+	ret = pthread_getschedparam(id, &pclass, &param);   
+	param.sched_priority = prio;
+	ret = pthread_setschedparam(id, pclass, &param);
+	if(!ret)
+	  return 1;
+#endif
+	return 0;
+}
+
+int dim_get_priority(int threadId, int *prio)
+{
+#ifdef __linux__
+	pthread_t id=MAIN_thread;
+	int ret;
+	int pclass;
+	struct sched_param param;
+
+	if(threadId == 1)
+		id = MAIN_thread;
+	else if(threadId == 2)
+		id = IO_thread;
+	else if(threadId == 3)
+		id = ALRM_thread;
+
+	ret = pthread_getschedparam(id, &pclass, &param);   
+	*prio = param.sched_priority;
+	if(!ret)
+	  return 1;
+#endif
+	return 0;
+}
+
+void ignore_sigpipe()
+{
+
+  struct sigaction sig_info;
+  sigset_t set;
+  void pipe_sig_handler();
+	    
+  if( sigaction(SIGPIPE, 0, &sig_info) < 0 ) 
+  {
+    perror( "sigaction(SIGPIPE)" );
+    exit(1);
+  }
+  if(sig_info.sa_handler)
+  {
+/*
+	printf("DIM ignore_sigpipe() - Handler already defined %08X\n", sig_info.sa_handler);
+*/
+    return;
+  }
+  sigemptyset(&set);
+  sig_info.sa_handler = pipe_sig_handler;
+  sig_info.sa_mask = set;
+#ifndef LYNXOS 
+  sig_info.sa_flags = SA_RESTART;
+#else
+  sig_info.sa_flags = 0;
+#endif
+
+  if( sigaction(SIGPIPE, &sig_info, 0) < 0 ) 
+  {
+    perror( "sigaction(SIGPIPE)" );
+    exit(1);
+  }
+}
+
+void pipe_sig_handler( int num )
+{
+	if(num){} 
+/*
+	printf( "*** pipe_sig_handler called ***\n" );
+*/  
+}
+
+void dim_init_threads()
+{
+    dim_init();
+}
+
+void dim_stop_threads()
+{
+	dim_stop();
+}
+
+int dim_wait(void)
+{
+	pthread_t id;
+	
+	id = pthread_self();
+
+	if((id == ALRM_thread) || (id == IO_thread))
+	  {
+		return(-1);
+	  }
+	/*
+#ifndef darwin
+	sem_wait(&DIM_WAIT_Sema);
+#else
+	sem_wait(DIM_WAIT_Semap);
+#endif
+	*/
+	dim_wait_cond();
+	return(-1);
+}
+
+/*
+static void show_ast()
+{
+sigset_t oset;
+
+	sigprocmask(SIG_SETMASK,0,&oset);
+	printf("---THREAD id = %d, mask = %x %x\n",
+       pthread_self(), oset.__sigbits[1], oset.__sigbits[0]);
+}
+*/
+
+pthread_t Dim_thr_locker = 0;
+int Dim_thr_counter = 0;
+#ifdef LYNXOS
+pthread_mutex_t Global_DIM_mutex;
+pthread_mutex_t Global_cond_mutex;
+pthread_cond_t Global_cond;
+#else
+pthread_mutex_t Global_DIM_mutex = PTHREAD_MUTEX_INITIALIZER;
+pthread_mutex_t Global_cond_mutex = PTHREAD_MUTEX_INITIALIZER;
+pthread_cond_t Global_cond = PTHREAD_COND_INITIALIZER;
+#endif
+int Global_cond_counter = 0;
+int Global_cond_waiters = 0;
+
+void dim_lock()
+{
+	/*printf("Locking %d ", pthread_self());*/
+    if(Dim_thr_locker != pthread_self())
+    {
+/*
+#ifdef __linux__
+		pthread_testcancel();
+#endif
+*/
+		pthread_mutex_lock(&Global_DIM_mutex);
+		Dim_thr_locker=pthread_self();
+		/*printf(": Locked ");*/
+	}
+    /*printf("Counter = %d\n",Dim_thr_counter);*/
+    Dim_thr_counter++;
+}
+void dim_unlock()	
+{
+	/*printf("Un-Locking %d ", pthread_self());*/
+    Dim_thr_counter--;
+    /*printf("Counter = %d ",Dim_thr_counter);*/
+    if(!Dim_thr_counter)
+    {
+		Dim_thr_locker=0;
+		pthread_mutex_unlock(&Global_DIM_mutex);
+		/*printf(": Un-Locked ");*/
+	}
+	/*     printf("\n");*/
+}
+
+void dim_wait_cond()
+{
+  pthread_mutex_lock(&Global_cond_mutex);
+  Global_cond_waiters++;
+  if(!Global_cond_counter)
+  {
+	pthread_cond_wait(&Global_cond, &Global_cond_mutex);
+  }
+  Global_cond_waiters--;
+  if(!Global_cond_waiters)
+	  Global_cond_counter--;
+  pthread_mutex_unlock(&Global_cond_mutex);
+}
+
+void dim_signal_cond()
+{
+  pthread_mutex_lock(&Global_cond_mutex);
+  if(!Global_cond_waiters)
+  {
+	Global_cond_counter = 1;
+  }
+  else
+  {
+	Global_cond_counter++;
+	pthread_cond_broadcast(&Global_cond);
+  }
+  pthread_mutex_unlock(&Global_cond_mutex);
+}
+
+#else
+
+void dim_init()
+{
+}
+
+void dim_init_threads()
+{
+}
+
+void dim_stop_threads()
+{
+}
+
+void dim_stop()
+{
+}
+
+int dim_wait()
+{
+  pause();
+  return(-1);
+}
+
+dim_long dim_start_thread(void (*thread_ast)(), dim_long tag)
+
+{
+	if(thread_ast){}
+	if(tag){}
+	printf("dim_start_thread: not available\n");
+	return (dim_long)0;
+}
+
+int dim_stop_thread(dim_long t_id)
+{
+	if(t_id){}
+	printf("dim_stop_thread: not available\n");
+	return 0;
+}
+#endif
+
+#else
+#include <windows.h>
+
+DWORD IO_thread = 0;
+DWORD ALRM_thread = 0;
+DWORD MAIN_thread = 0;
+HANDLE hIO_thread;
+HANDLE hALRM_thread;
+HANDLE hMAIN_thread;
+DllExp HANDLE Global_DIM_event_auto = 0;
+DllExp HANDLE Global_DIM_mutex = 0;
+DllExp HANDLE Global_DIM_event_manual = 0;
+void dim_tcpip_stop(), dim_dtq_stop();
+
+typedef struct{
+	void (*thread_ast)();
+	dim_long tag;
+	
+}THREAD_PARAMS;
+
+#ifndef STDCALL
+dim_long dim_start_thread(void (*thread_ast)(), dim_long tag)
+#else
+dim_long dim_start_thread(dim_long (*thread_ast)(void *), void *tag)
+#endif
+{
+DWORD threadid = 0;
+HANDLE hthread;
+
+#ifndef STDCALL
+    hthread = CreateThread( 
+        NULL,                        /* no security attributes			*/
+        0,                           /* use default stack size			*/
+        (void *)thread_ast,          /* thread function					*/
+        (void *)tag,			             /* argument to thread function		*/
+        0,                           /* use default creation flags		*/
+        &threadid);				     /* returns the thread identifier	*/
+#else
+    hthread = CreateThread( 
+        NULL,                        /* no security attributes			*/
+        0,                           /* use default stack size			*/
+		thread_ast,					 /* thread function					*/
+        tag,			             /* argument to thread function		*/
+        0,                           /* use default creation flags		*/
+        &threadid);					 /* returns the thread identifier	*/
+#endif
+	return (dim_long)hthread;
+}
+
+
+int dim_stop_thread(dim_long thread_id)
+{
+	int ret;
+
+	ret = TerminateThread((HANDLE)thread_id, 0);
+	CloseHandle((HANDLE)thread_id);
+	printf("dim_stop_thread: this function is obsolete, it creates memory leaks\n");
+	return ret;
+}
+
+
+void create_io_thread()
+{
+	int tcpip_task(void *);
+
+#ifndef STDCALL
+    hIO_thread = CreateThread( 
+        NULL,                        /* no security attributes			*/
+        0,                           /* use default stack size			*/
+        (void *)tcpip_task,          /* thread function					*/
+        0,			                 /* argument to thread function		*/
+        0,                           /* use default creation flags		*/
+        &IO_thread);                 /* returns the thread identifier	*/
+#else
+    hIO_thread = CreateThread( 
+        NULL,                        /* no security attributes			*/
+        0,                           /* use default stack size			*/
+        tcpip_task,					 /* thread function					*/
+        0,			                 /* argument to thread function		*/
+        0,                           /* use default creation flags		*/
+        &IO_thread);                 /* returns the thread identifier	*/
+#endif
+}
+
+void create_alrm_thread()
+{
+
+	int dtq_task(void *);
+
+#ifndef STDCALL
+    hALRM_thread = CreateThread(
+        NULL,
+        0,
+        (void *)dtq_task,
+        0,
+        0,
+        &ALRM_thread);
+#else
+    hALRM_thread = CreateThread(
+        NULL,
+        0,
+        dtq_task,
+        0,
+        0,
+        &ALRM_thread);
+#endif
+}
+
+void dim_init_threads()
+{
+	static int done = 0;
+
+	if(!done)
+	{
+		hMAIN_thread = GetCurrentThread();
+		done = 1;
+	}
+}
+
+void dim_stop_threads()
+{
+/*
+	int i;
+	int n = 0;
+
+	for( i = 0; i< Curr_N_Conns; i++ )
+	{
+		if(Net_conns[i].channel != 0)
+			n++;
+	}
+	if(n)
+		return;
+*/
+	if(hIO_thread)
+		TerminateThread(hIO_thread, 0);
+	if(hALRM_thread)
+		TerminateThread(hALRM_thread, 0);
+	if(Global_DIM_mutex) 
+		CloseHandle(Global_DIM_mutex);
+	if(Global_DIM_event_auto) 
+		CloseHandle(Global_DIM_event_auto);
+	if(Global_DIM_event_manual) 
+		CloseHandle(Global_DIM_event_manual);
+	hIO_thread = 0;
+	hALRM_thread = 0;
+	Global_DIM_mutex = 0;
+	Global_DIM_event_auto = 0;
+	Global_DIM_event_manual = 0;
+	dim_tcpip_stop();
+	dim_dtq_stop();
+}
+
+void dim_stop()
+{
+	dim_stop_threads();
+}
+
+int dim_set_scheduler_class(int pclass)
+{
+	HANDLE hProc;
+	int ret;
+	DWORD p = 0;
+
+#ifndef PXI
+	hProc = GetCurrentProcess();
+
+	if(pclass == -1)
+		p = IDLE_PRIORITY_CLASS;
+/*
+	else if(pclass == -1)
+		p = BELOW_NORMAL_PRIORITY_CLASS;
+*/
+	else if(pclass == 0)
+		p = NORMAL_PRIORITY_CLASS;
+/*
+	else if(pclass == 1)
+		p == ABOVE_NORMAL_PRIORITY_CLASS;
+*/
+	else if(pclass == 1)
+		p = HIGH_PRIORITY_CLASS;
+	else if(pclass == 2)
+		p = REALTIME_PRIORITY_CLASS;
+	ret = SetPriorityClass(hProc, p);
+	if(ret)
+	  return 1;
+	ret = GetLastError();
+	printf("ret = %x %d\n",ret, ret);
+	return 0;
+#else
+	return 0;
+#endif
+}
+
+int dim_get_scheduler_class(int *pclass)
+{
+	HANDLE hProc;
+	DWORD ret;
+
+#ifndef PXI
+	hProc = GetCurrentProcess();
+
+	ret = GetPriorityClass(hProc);
+	if(ret == 0)
+	  return 0;
+	if(ret == IDLE_PRIORITY_CLASS)
+		*pclass = -1;
+/*
+	else if(ret == BELOW_NORMAL_PRIORITY_CLASS)
+		*pclass = -1;
+*/
+	else if(ret == NORMAL_PRIORITY_CLASS)
+		*pclass = 0;
+/*
+	else if(ret == ABOVE_NORMAL_PRIORITY_CLASS)
+		*pclass = 1;
+*/
+	else if(ret == HIGH_PRIORITY_CLASS)
+		*pclass = 1;
+	else if(ret == REALTIME_PRIORITY_CLASS)
+		*pclass = 2;
+	return 1;
+#else
+	*pclass = 0;
+	return 0;
+#endif
+}
+
+int dim_set_priority(int threadId, int prio)
+{
+	HANDLE id = 0;
+	int ret, p = 0;
+
+#ifndef PXI
+	if(threadId == 1)
+		id = hMAIN_thread;
+	else if(threadId == 2)
+		id = hIO_thread;
+	else if(threadId == 3)
+		id = hALRM_thread;
+
+	if(prio == -3)
+		p = THREAD_PRIORITY_IDLE;
+	if(prio == -2)
+		p = THREAD_PRIORITY_LOWEST;
+	if(prio == -1)
+		p = THREAD_PRIORITY_BELOW_NORMAL;
+	if(prio == 0)
+		p = THREAD_PRIORITY_NORMAL;
+	if(prio == 1)
+		p = THREAD_PRIORITY_ABOVE_NORMAL;
+	if(prio == 2)
+		p = THREAD_PRIORITY_HIGHEST;
+	if(prio == 3)
+		p = THREAD_PRIORITY_TIME_CRITICAL;
+
+	ret = SetThreadPriority(id, p); 
+	if(ret)
+	  return 1;
+	return 0;
+#else
+	return 0;
+#endif
+}
+
+int dim_get_priority(int threadId, int *prio)
+{
+	HANDLE id = 0;
+	int ret, p = 0;
+
+#ifndef PXI
+	if(threadId == 1)
+		id = hMAIN_thread;
+	else if(threadId == 2)
+		id = hIO_thread;
+	else if(threadId == 3)
+		id = hALRM_thread;
+
+	ret = GetThreadPriority(id); 
+	if(ret == THREAD_PRIORITY_ERROR_RETURN)
+	  return 0;
+	if(ret == THREAD_PRIORITY_IDLE)
+		p = -3;
+	if(ret == THREAD_PRIORITY_LOWEST)
+		p = -2;
+	if(ret == THREAD_PRIORITY_BELOW_NORMAL)
+		p = -1;
+	if(ret == THREAD_PRIORITY_NORMAL)
+		p = 0;
+	if(ret == THREAD_PRIORITY_ABOVE_NORMAL)
+		p = 1;
+	if(ret == THREAD_PRIORITY_HIGHEST)
+		p = 2;
+	if(ret == THREAD_PRIORITY_TIME_CRITICAL)
+		p = 3;
+	*prio = p;
+	return 1;
+#else
+	*prio = 0;
+	return 0;
+#endif
+}
+
+void dim_init()
+{
+}
+
+void dim_no_threads()
+{
+}
+
+int dim_wait()
+{
+	pause();
+	return(1);
+}
+
+void dim_lock()
+{
+	if(!Global_DIM_mutex)
+	{ 
+		Global_DIM_mutex = CreateMutex(NULL,FALSE,NULL);
+	}
+	WaitForSingleObject(Global_DIM_mutex, INFINITE);
+}
+
+void dim_unlock()
+{
+	ReleaseMutex(Global_DIM_mutex);
+}
+
+void dim_pause()
+{
+HANDLE handles[2];
+
+	if(!Global_DIM_event_auto)
+	{ 
+		Global_DIM_event_auto = CreateEvent(NULL,FALSE,FALSE,NULL);
+		Global_DIM_event_manual = CreateEvent(NULL,TRUE,FALSE,NULL);
+	}
+	else 
+	{
+/*
+		WaitForSingleObject(Global_DIM_event, INFINITE);
+*/
+		handles[0] = Global_DIM_event_auto;
+		handles[1] = Global_DIM_event_manual;
+		WaitForMultipleObjects(2, handles, FALSE, INFINITE);
+	}
+}
+
+void dim_wake_up()
+{
+	if(Global_DIM_event_auto)
+	{
+		SetEvent(Global_DIM_event_auto);
+	}
+	if(Global_DIM_event_manual)
+	{
+		SetEvent(Global_DIM_event_manual);
+		ResetEvent(Global_DIM_event_manual);
+	}
+}
+
+void dim_sleep(unsigned int t)
+{
+	Sleep(t*1000);
+}
+
+void dim_win_usleep(unsigned int t)
+{
+	Sleep(t/1000);
+}
+
+#endif
Index: branches/testFACT++branch/dim/src/dim_thr_old.c
===================================================================
--- branches/testFACT++branch/dim/src/dim_thr_old.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/dim_thr_old.c	(revision 18277)
@@ -0,0 +1,894 @@
+#include <signal.h>
+#define DIMLIB
+#include "dim.h"
+
+#ifndef WIN32
+
+#ifndef NOTHREADS
+#include <pthread.h>
+#include <semaphore.h>
+#ifdef solaris
+#include <synch.h>
+#endif
+#ifdef darwin
+#include <sys/types.h>
+#include <sys/stat.h>
+#endif
+
+pthread_t IO_thread = 0;
+pthread_t ALRM_thread = 0;
+pthread_t INIT_thread = 0;
+pthread_t MAIN_thread = 0;
+#ifndef darwin
+sem_t DIM_INIT_Sema;
+/*
+sem_t DIM_WAIT_Sema;
+*/
+#else
+sem_t *DIM_INIT_Semap;
+/*
+sem_t *DIM_WAIT_Semap;
+*/
+#endif
+int INIT_count = 0;
+/*
+int WAIT_count = 0;
+*/
+int DIM_THR_init_done = 0;
+
+void *dim_tcpip_thread(void *tag)
+{
+	extern int dim_tcpip_init();
+	extern void tcpip_task();
+	/*	
+	int prio;
+		
+	thr_getprio(thr_self(),&prio);
+	thr_setprio(thr_self(),prio+10);
+	*/
+	if(tag){}
+	IO_thread = pthread_self();
+
+	dim_tcpip_init(1);
+	while(1)
+    {
+		if(INIT_thread)
+#ifndef darwin
+			sem_post(&DIM_INIT_Sema);
+#else
+			sem_post(DIM_INIT_Semap);
+#endif
+		tcpip_task();
+		/*
+#ifndef darwin
+		sem_post(&DIM_WAIT_Sema);
+#else
+		sem_post(DIM_WAIT_Semap);
+#endif
+		*/
+		dim_signal_cond();
+    }
+}
+
+void *dim_dtq_thread(void *tag)
+{
+	extern int dim_dtq_init();
+	extern int dtq_task();
+	/*
+	int prio;
+
+	thr_getprio(thr_self(),&prio);
+	thr_setprio(thr_self(),prio+5);
+	*/
+	if(tag){}
+	ALRM_thread = pthread_self();
+
+	dim_dtq_init(1);
+	while(1)
+	  {
+		if(INIT_thread)
+		  {
+#ifndef darwin
+			sem_post(&DIM_INIT_Sema);
+#else
+			sem_post(DIM_INIT_Semap);
+#endif
+		  }
+		dtq_task();
+		/*
+#ifndef darwin
+		sem_post(&DIM_WAIT_Sema);
+#else
+		sem_post(DIM_WAIT_Semap);
+#endif
+		*/
+		dim_signal_cond();
+    }
+}
+
+void dim_init()
+{
+	pthread_t t_id;
+	void ignore_sigpipe();
+	int ret;
+	extern int dna_init();
+/*
+#ifdef LYNXOS
+*/
+    pthread_attr_t attr;
+/*
+#endif
+*/
+	if(!DIM_THR_init_done)
+	{
+	  /*
+		int prio;
+	  */
+		DIM_THR_init_done = 1;
+		dna_init();
+		/*
+		thr_getprio(thr_self(),&prio);
+		thr_setprio(thr_self(),prio+3);
+		*/
+		INIT_thread = pthread_self();
+		MAIN_thread = INIT_thread;
+		
+#ifndef darwin 	
+		sem_init(&DIM_INIT_Sema, 0, INIT_count);
+		/*
+		sem_init(&DIM_WAIT_Sema, 0, WAIT_count);
+		*/
+#else
+		DIM_INIT_Semap = sem_open("/Dim_INIT_Sem", O_CREAT, S_IRUSR | S_IWUSR, INIT_count);
+		/*
+		DIM_WAIT_Semap = sem_open("/Dim_WAIT_Sem", O_CREAT, S_IRUSR | S_IWUSR, WAIT_count);
+		*/
+#endif
+		
+		ignore_sigpipe();
+
+#if defined (LYNXOS) && !defined (__Lynx__)
+		pthread_attr_create(&attr);
+		pthread_create(&t_id, attr, dim_dtq_thread, 0);
+#else
+/*
+		pthread_create(&t_id, NULL, dim_dtq_thread, 0);
+*/
+		pthread_attr_init(&attr);
+		pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED);
+		pthread_create(&t_id, &attr, dim_dtq_thread, 0);
+#endif
+#ifndef darwin
+		ret = sem_wait(&DIM_INIT_Sema);
+#else
+		ret = sem_wait(DIM_INIT_Semap);
+#endif
+#if defined (LYNXOS) && !defined (__Lynx__)
+		pthread_create(&t_id, attr, dim_tcpip_thread, 0);
+#else
+		pthread_create(&t_id, &attr, dim_tcpip_thread, 0);
+#endif
+#ifndef darwin
+		ret = sem_wait(&DIM_INIT_Sema);
+#else
+		ret = sem_wait(DIM_INIT_Semap);
+#endif
+		INIT_thread = 0;
+	}
+}
+
+void dim_stop()
+{
+	int i;
+	int n = 0;
+	void dim_tcpip_stop(), dim_dtq_stop();
+
+	for( i = 0; i< Curr_N_Conns; i++ )
+	{
+		if(Net_conns[i].channel != 0)
+			n++;
+	}
+	if(n)
+		return;
+	if(IO_thread)
+		pthread_cancel(IO_thread);
+	if(ALRM_thread)
+		pthread_cancel(ALRM_thread);
+#ifndef darwin 		
+	sem_destroy(&DIM_INIT_Sema);
+	/*
+	sem_destroy(&DIM_WAIT_Sema);
+	*/
+#else
+	sem_unlink("/Dim_INIT_Sem");
+	/*
+	sem_unlink("/Dim_WAIT_Sem");
+	*/
+	sem_close(DIM_INIT_Semap);
+	/*
+	sem_close(DIM_WAIT_Semap);
+	*/
+#endif
+	dim_tcpip_stop();
+	dim_dtq_stop();	
+	if(IO_thread) 
+		pthread_join(IO_thread,0);
+	if(ALRM_thread) 
+		pthread_join(ALRM_thread,0);
+	IO_thread = 0;
+	ALRM_thread = 0;
+	DIM_THR_init_done = 0;
+}
+
+long dim_start_thread(void *(*thread_ast)(void *), long tag)
+{
+	pthread_t t_id;
+    pthread_attr_t attr;
+	
+#if defined (LYNXOS) && !defined (__Lynx__)
+	pthread_attr_create(&attr);
+	pthread_create(&t_id, attr, (void *)thread_ast, (void *)tag);
+#else
+	pthread_attr_init(&attr);
+	pthread_create(&t_id, &attr, thread_ast, (void *)tag);
+#endif
+	return((long)t_id);
+}	
+
+int dim_stop_thread(long t_id)
+{
+	int ret;
+	ret = pthread_cancel((pthread_t)t_id);
+	dim_print_date_time();
+	printf("dim_stop_thread: this function is obsolete, it creates memory leaks\n");
+	return ret;
+}
+
+int dim_set_scheduler_class(int pclass)
+{
+#ifdef __linux__
+	int ret, prio, p;
+	struct sched_param param;
+
+	if(pclass == 0)
+	{
+		pclass = SCHED_OTHER;
+	}
+	else if(pclass == 1)
+	{
+		pclass = SCHED_FIFO;
+	}
+	else if(pclass == 2)
+	{
+		pclass = SCHED_RR;
+	}
+	prio = sched_get_priority_min(pclass);
+	ret = pthread_getschedparam(MAIN_thread, &p, &param);
+	if( (p == SCHED_OTHER) || (pclass == SCHED_OTHER) )
+		param.sched_priority = prio;
+	ret = pthread_setschedparam(MAIN_thread, pclass, &param);   
+	if(ret)
+	  return 0;
+	ret = pthread_getschedparam(IO_thread, &p, &param);   
+	if( (p == SCHED_OTHER) || (pclass == SCHED_OTHER) )
+		param.sched_priority = prio;
+	ret = pthread_setschedparam(IO_thread, pclass, &param);   
+	if(ret)
+	  return 0;
+	ret = pthread_getschedparam(ALRM_thread, &p, &param);   
+	if( (p == SCHED_OTHER) || (pclass == SCHED_OTHER) )
+		param.sched_priority = prio;
+	ret = pthread_setschedparam(ALRM_thread, pclass, &param);   
+	if(!ret)
+	  return 1;
+#endif
+	return 0;
+}
+
+int dim_get_scheduler_class(int *pclass)
+{
+#ifdef __linux__
+	int ret;
+	struct sched_param param;
+
+	ret = pthread_getschedparam(MAIN_thread, pclass, &param);   
+	if(!ret)
+	  return 1;
+#endif
+	return 0;
+}
+
+int dim_set_priority(int threadId, int prio)
+{
+#ifdef __linux__
+	pthread_t id = MAIN_thread;
+	int ret;
+	int pclass;
+	struct sched_param param;
+
+	if(threadId == 1)
+		id = MAIN_thread;
+	else if(threadId == 2)
+		id = IO_thread;
+	else if(threadId == 3)
+		id = ALRM_thread;
+
+	ret = pthread_getschedparam(id, &pclass, &param);   
+	param.sched_priority = prio;
+	ret = pthread_setschedparam(id, pclass, &param);
+	if(!ret)
+	  return 1;
+#endif
+	return 0;
+}
+
+int dim_get_priority(int threadId, int *prio)
+{
+#ifdef __linux__
+	pthread_t id=MAIN_thread;
+	int ret;
+	int pclass;
+	struct sched_param param;
+
+	if(threadId == 1)
+		id = MAIN_thread;
+	else if(threadId == 2)
+		id = IO_thread;
+	else if(threadId == 3)
+		id = ALRM_thread;
+
+	ret = pthread_getschedparam(id, &pclass, &param);   
+	*prio = param.sched_priority;
+	if(!ret)
+	  return 1;
+#endif
+	return 0;
+}
+
+void ignore_sigpipe()
+{
+
+  struct sigaction sig_info;
+  sigset_t set;
+  void pipe_sig_handler();
+	    
+  if( sigaction(SIGPIPE, 0, &sig_info) < 0 ) 
+  {
+    perror( "sigaction(SIGPIPE)" );
+    exit(1);
+  }
+  if(sig_info.sa_handler)
+  {
+/*
+	printf("DIM ignore_sigpipe() - Handler already defined %08X\n", sig_info.sa_handler);
+*/
+    return;
+  }
+  sigemptyset(&set);
+  sig_info.sa_handler = pipe_sig_handler;
+  sig_info.sa_mask = set;
+#ifndef LYNXOS 
+  sig_info.sa_flags = SA_RESTART;
+#else
+  sig_info.sa_flags = 0;
+#endif
+
+  if( sigaction(SIGPIPE, &sig_info, 0) < 0 ) 
+  {
+    perror( "sigaction(SIGPIPE)" );
+    exit(1);
+  }
+}
+
+void pipe_sig_handler( int num )
+{
+	if(num){} 
+/*
+	printf( "*** pipe_sig_handler called ***\n" );
+*/  
+}
+
+void dim_init_threads()
+{
+    dim_init();
+}
+
+void dim_stop_threads()
+{
+	dim_stop();
+}
+
+int dim_wait(void)
+{
+	pthread_t id;
+	
+	id = pthread_self();
+
+	if((id == ALRM_thread) || (id == IO_thread))
+	  {
+		return(-1);
+	  }
+	/*
+#ifndef darwin
+	sem_wait(&DIM_WAIT_Sema);
+#else
+	sem_wait(DIM_WAIT_Semap);
+#endif
+	*/
+	dim_wait_cond();
+	return(-1);
+}
+
+/*
+static void show_ast()
+{
+sigset_t oset;
+
+	sigprocmask(SIG_SETMASK,0,&oset);
+	printf("---THREAD id = %d, mask = %x %x\n",
+       pthread_self(), oset.__sigbits[1], oset.__sigbits[0]);
+}
+*/
+
+pthread_t Dim_thr_locker = 0;
+int Dim_thr_counter = 0;
+#ifdef LYNXOS
+pthread_mutex_t Global_DIM_mutex;
+pthread_mutex_t Global_cond_mutex;
+pthread_cond_t Global_cond;
+#else
+pthread_mutex_t Global_DIM_mutex = PTHREAD_MUTEX_INITIALIZER;
+pthread_mutex_t Global_cond_mutex = PTHREAD_MUTEX_INITIALIZER;
+pthread_cond_t Global_cond = PTHREAD_COND_INITIALIZER;
+#endif
+
+void dim_lock()
+{
+	/*printf("Locking %d ", pthread_self());*/
+    if(Dim_thr_locker != pthread_self())
+    {
+		pthread_mutex_lock(&Global_DIM_mutex);
+		Dim_thr_locker=pthread_self();
+		/*printf(": Locked ");*/
+	}
+    /*printf("Counter = %d\n",Dim_thr_counter);*/
+    Dim_thr_counter++;
+}
+void dim_unlock()	
+{
+	/*printf("Un-Locking %d ", pthread_self());*/
+    Dim_thr_counter--;
+    /*printf("Counter = %d ",Dim_thr_counter);*/
+    if(!Dim_thr_counter)
+    {
+		Dim_thr_locker=0;
+		pthread_mutex_unlock(&Global_DIM_mutex);
+		/*printf(": Un-Locked ");*/
+	}
+	/*     printf("\n");*/
+}
+
+void dim_wait_cond()
+{
+  pthread_mutex_lock(&Global_cond_mutex);
+  pthread_cond_wait(&Global_cond, &Global_cond_mutex);
+  pthread_mutex_unlock(&Global_cond_mutex);
+}
+
+void dim_signal_cond()
+{
+  pthread_mutex_lock(&Global_cond_mutex);
+  pthread_cond_broadcast(&Global_cond);
+  pthread_mutex_unlock(&Global_cond_mutex);
+}
+
+#else
+
+void dim_init()
+{
+}
+
+void dim_init_threads()
+{
+}
+
+void dim_stop_threads()
+{
+}
+
+void dim_stop()
+{
+}
+
+int dim_wait()
+{
+  pause();
+  return(-1);
+}
+
+long dim_start_thread(void (*thread_ast)(), long tag)
+
+{
+	printf("dim_start_thread: not available\n");
+	return (long)0;
+}
+
+int dim_stop_thread(long t_id)
+{
+	printf("dim_stop_thread: not available\n");
+	return 0;
+}
+#endif
+
+#else
+#include <windows.h>
+
+DWORD IO_thread = 0;
+DWORD ALRM_thread = 0;
+DWORD MAIN_thread = 0;
+HANDLE hIO_thread;
+HANDLE hALRM_thread;
+HANDLE hMAIN_thread;
+DllExp HANDLE Global_DIM_event_auto = 0;
+DllExp HANDLE Global_DIM_mutex = 0;
+DllExp HANDLE Global_DIM_event_manual = 0;
+void dim_tcpip_stop(), dim_dtq_stop();
+
+typedef struct{
+	void (*thread_ast)();
+	long tag;
+	
+}THREAD_PARAMS;
+
+#ifndef STDCALL
+long dim_start_thread(void (*thread_ast)(), long tag)
+#else
+long dim_start_thread(unsigned long (*thread_ast)(void *), void *tag)
+#endif
+{
+DWORD threadid = 0;
+HANDLE hthread;
+
+#ifndef STDCALL
+    hthread = CreateThread( 
+        NULL,                        /* no security attributes			*/
+        0,                           /* use default stack size			*/
+        (void *)thread_ast,          /* thread function					*/
+        (void *)tag,			             /* argument to thread function		*/
+        0,                           /* use default creation flags		*/
+        &threadid);				     /* returns the thread identifier	*/
+#else
+    hthread = CreateThread( 
+        NULL,                        /* no security attributes			*/
+        0,                           /* use default stack size			*/
+		thread_ast,					 /* thread function					*/
+        tag,			             /* argument to thread function		*/
+        0,                           /* use default creation flags		*/
+        &threadid);					 /* returns the thread identifier	*/
+#endif
+	return (long)hthread;
+}
+
+
+int dim_stop_thread(long thread_id)
+{
+	int ret;
+
+	ret = TerminateThread((HANDLE)thread_id, 0);
+	CloseHandle((HANDLE)thread_id);
+	printf("dim_stop_thread: this function is obsolete, it creates memory leaks\n");
+	return ret;
+}
+
+
+void create_io_thread()
+{
+	int tcpip_task(void *);
+
+#ifndef STDCALL
+    hIO_thread = CreateThread( 
+        NULL,                        /* no security attributes			*/
+        0,                           /* use default stack size			*/
+        (void *)tcpip_task,          /* thread function					*/
+        0,			                 /* argument to thread function		*/
+        0,                           /* use default creation flags		*/
+        &IO_thread);                 /* returns the thread identifier	*/
+#else
+    hIO_thread = CreateThread( 
+        NULL,                        /* no security attributes			*/
+        0,                           /* use default stack size			*/
+        tcpip_task,					 /* thread function					*/
+        0,			                 /* argument to thread function		*/
+        0,                           /* use default creation flags		*/
+        &IO_thread);                 /* returns the thread identifier	*/
+#endif
+}
+
+void create_alrm_thread()
+{
+
+	int dtq_task(void *);
+
+#ifndef STDCALL
+    hALRM_thread = CreateThread(
+        NULL,
+        0,
+        (void *)dtq_task,
+        0,
+        0,
+        &ALRM_thread);
+#else
+    hALRM_thread = CreateThread(
+        NULL,
+        0,
+        dtq_task,
+        0,
+        0,
+        &ALRM_thread);
+#endif
+}
+
+void dim_init_threads()
+{
+	static int done = 0;
+
+	if(!done)
+	{
+		hMAIN_thread = GetCurrentThread();
+		done = 1;
+	}
+}
+
+void dim_stop_threads()
+{
+	int i;
+	int n = 0;
+
+	for( i = 0; i< Curr_N_Conns; i++ )
+	{
+		if(Net_conns[i].channel != 0)
+			n++;
+	}
+	if(n)
+		return;
+	if(hIO_thread)
+		TerminateThread(hIO_thread, 0);
+	if(hALRM_thread)
+		TerminateThread(hALRM_thread, 0);
+	if(Global_DIM_mutex) 
+		CloseHandle(Global_DIM_mutex);
+	if(Global_DIM_event_auto) 
+		CloseHandle(Global_DIM_event_auto);
+	if(Global_DIM_event_manual) 
+		CloseHandle(Global_DIM_event_manual);
+	hIO_thread = 0;
+	hALRM_thread = 0;
+	Global_DIM_mutex = 0;
+	Global_DIM_event_auto = 0;
+	Global_DIM_event_manual = 0;
+	dim_tcpip_stop();
+	dim_dtq_stop();
+}
+
+void dim_stop()
+{
+	dim_stop_threads();
+}
+
+int dim_set_scheduler_class(int pclass)
+{
+	HANDLE hProc;
+	int ret;
+	DWORD p;
+
+#ifndef PXI
+	hProc = GetCurrentProcess();
+
+	if(pclass == -1)
+		p = IDLE_PRIORITY_CLASS;
+/*
+	else if(pclass == -1)
+		p = BELOW_NORMAL_PRIORITY_CLASS;
+*/
+	else if(pclass == 0)
+		p = NORMAL_PRIORITY_CLASS;
+/*
+	else if(pclass == 1)
+		p == ABOVE_NORMAL_PRIORITY_CLASS;
+*/
+	else if(pclass == 1)
+		p = HIGH_PRIORITY_CLASS;
+	else if(pclass == 2)
+		p = REALTIME_PRIORITY_CLASS;
+	ret = SetPriorityClass(hProc, p);
+	if(ret)
+	  return 1;
+	ret = GetLastError();
+	printf("ret = %x %d\n",ret, ret);
+	return 0;
+#else
+	return 0;
+#endif
+}
+
+int dim_get_scheduler_class(int *pclass)
+{
+	HANDLE hProc;
+	DWORD ret;
+
+#ifndef PXI
+	hProc = GetCurrentProcess();
+
+	ret = GetPriorityClass(hProc);
+	if(ret == 0)
+	  return 0;
+	if(ret == IDLE_PRIORITY_CLASS)
+		*pclass = -1;
+/*
+	else if(ret == BELOW_NORMAL_PRIORITY_CLASS)
+		*pclass = -1;
+*/
+	else if(ret == NORMAL_PRIORITY_CLASS)
+		*pclass = 0;
+/*
+	else if(ret == ABOVE_NORMAL_PRIORITY_CLASS)
+		*pclass = 1;
+*/
+	else if(ret == HIGH_PRIORITY_CLASS)
+		*pclass = 1;
+	else if(ret == REALTIME_PRIORITY_CLASS)
+		*pclass = 2;
+	return 1;
+#else
+	*pclass = 0;
+	return 0;
+#endif
+}
+
+int dim_set_priority(int threadId, int prio)
+{
+	HANDLE id;
+	int ret, p;
+
+#ifndef PXI
+	if(threadId == 1)
+		id = hMAIN_thread;
+	else if(threadId == 2)
+		id = hIO_thread;
+	else if(threadId == 3)
+		id = hALRM_thread;
+
+	if(prio == -3)
+		p = THREAD_PRIORITY_IDLE;
+	if(prio == -2)
+		p = THREAD_PRIORITY_LOWEST;
+	if(prio == -1)
+		p = THREAD_PRIORITY_BELOW_NORMAL;
+	if(prio == 0)
+		p = THREAD_PRIORITY_NORMAL;
+	if(prio == 1)
+		p = THREAD_PRIORITY_ABOVE_NORMAL;
+	if(prio == 2)
+		p = THREAD_PRIORITY_HIGHEST;
+	if(prio == 3)
+		p = THREAD_PRIORITY_TIME_CRITICAL;
+
+	ret = SetThreadPriority(id, p); 
+	if(ret)
+	  return 1;
+	return 0;
+#else
+	return 0;
+#endif
+}
+
+int dim_get_priority(int threadId, int *prio)
+{
+	HANDLE id;
+	int ret, p;
+
+#ifndef PXI
+	if(threadId == 1)
+		id = hMAIN_thread;
+	else if(threadId == 2)
+		id = hIO_thread;
+	else if(threadId == 3)
+		id = hALRM_thread;
+
+	ret = GetThreadPriority(id); 
+	if(ret == THREAD_PRIORITY_ERROR_RETURN)
+	  return 0;
+	if(ret == THREAD_PRIORITY_IDLE)
+		p = -3;
+	if(ret == THREAD_PRIORITY_LOWEST)
+		p = -2;
+	if(ret == THREAD_PRIORITY_BELOW_NORMAL)
+		p = -1;
+	if(ret == THREAD_PRIORITY_NORMAL)
+		p = 0;
+	if(ret == THREAD_PRIORITY_ABOVE_NORMAL)
+		p = 1;
+	if(ret == THREAD_PRIORITY_HIGHEST)
+		p = 2;
+	if(ret == THREAD_PRIORITY_TIME_CRITICAL)
+		p = 3;
+	*prio = p;
+	return 1;
+#else
+	*prio = 0;
+	return 0;
+#endif
+}
+
+void dim_init()
+{
+}
+
+void dim_no_threads()
+{
+}
+
+int dim_wait()
+{
+	pause();
+	return(1);
+}
+
+void dim_lock()
+{
+	if(!Global_DIM_mutex)
+	{ 
+		Global_DIM_mutex = CreateMutex(NULL,FALSE,NULL);
+	}
+	WaitForSingleObject(Global_DIM_mutex, INFINITE);
+}
+
+void dim_unlock()
+{
+	ReleaseMutex(Global_DIM_mutex);
+}
+
+void dim_pause()
+{
+HANDLE handles[2];
+
+	if(!Global_DIM_event_auto)
+	{ 
+		Global_DIM_event_auto = CreateEvent(NULL,FALSE,FALSE,NULL);
+		Global_DIM_event_manual = CreateEvent(NULL,TRUE,FALSE,NULL);
+	}
+	else 
+	{
+/*
+		WaitForSingleObject(Global_DIM_event, INFINITE);
+*/
+		handles[0] = Global_DIM_event_auto;
+		handles[1] = Global_DIM_event_manual;
+		WaitForMultipleObjects(2, handles, FALSE, INFINITE);
+	}
+}
+
+void dim_wake_up()
+{
+	if(Global_DIM_event_auto)
+	{
+		SetEvent(Global_DIM_event_auto);
+	}
+	if(Global_DIM_event_manual)
+	{
+		SetEvent(Global_DIM_event_manual);
+		ResetEvent(Global_DIM_event_manual);
+	}
+}
+
+void dim_sleep(unsigned int t)
+{
+	Sleep(t*1000);
+}
+
+void dim_win_usleep(unsigned int t)
+{
+	Sleep(t/1000);
+}
+
+#endif
Index: branches/testFACT++branch/dim/src/dimcpp.cxx
===================================================================
--- branches/testFACT++branch/dim/src/dimcpp.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/dimcpp.cxx	(revision 18277)
@@ -0,0 +1,137 @@
+#include <assert.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef __VMS
+#include <starlet.h>
+#endif
+
+#define DIMLIB
+#include <dim_core.hxx>
+#include <dim.hxx>
+
+int DimCore::inCallback = 0;
+int DimUtil::itsBufferSize = 0;
+char *DimUtil::itsBuffer = (char *)0;
+
+extern "C" {
+static void timer_user_routine(void *tp)
+{
+	DimTimer *t = (DimTimer *)tp;
+	DimCore::inCallback = 1;
+	t->firedFlag = 1;
+	t->runningFlag = 0;
+	t->timerHandler();
+	DimCore::inCallback = 0;
+}
+}
+
+int DimTimer::start(int time)
+{
+	if(runningFlag)
+		return 0;
+	runningFlag = 1;
+	firedFlag = 0;
+	dtq_start_timer(time, timer_user_routine, this);
+	return 1;
+}
+
+int DimTimer::stop() 
+{
+	firedFlag = 0;
+	runningFlag = 0;
+	return dtq_stop_timer(this);
+}
+
+DimTimer::DimTimer() 
+{ 
+	firedFlag = 0;
+	runningFlag = 0; 
+}
+	
+DimTimer::DimTimer(int time)
+{ 
+	firedFlag = 0;
+	runningFlag = 0; 
+	start(time);
+}
+
+DimTimer::~DimTimer()
+{
+	if(runningFlag)
+		stop();
+}
+
+// Threads
+
+extern "C" {
+static void thread_user_routine(void *tp)
+{
+	DimThread *t = (DimThread *)tp;
+//	DimCore::inCallback = 1;
+//	t->firedFlag = 1;
+//	t->runningFlag = 0;
+	t->threadHandler();
+	t->itsId = 0;
+//	DimCore::inCallback = 0;
+}
+}
+
+DimThread::DimThread() 
+{
+//	start();
+	itsId = 0;
+}
+	
+DimThread::~DimThread()
+{
+//	if(itsId)
+//		stop();
+}
+
+int DimThread::start()
+{
+	if(!itsId)
+	{
+		itsId = (long)dim_start_thread(thread_user_routine, this);
+		return 1;
+	}
+	return 0;
+}
+/*
+int DimThread::stop()
+{
+	int ret = dim_stop_thread(itsId);
+	itsId = 0;
+	return ret;
+}
+*/
+
+DimUtil::DimUtil() 
+{
+}
+	
+DimUtil::~DimUtil()
+{
+}
+
+char *DimUtil::getEnvVar(char *name)
+{
+	int size;
+
+	size = dim_get_env_var(name, 0, 0);
+	if(!size)
+		return (char *)0;
+	if((itsBufferSize < size ) && (itsBufferSize != 0))
+	{
+		delete[] itsBuffer;
+		itsBufferSize = 0;
+	}
+	if(!itsBufferSize)
+	{
+		itsBuffer = new char[size];
+		itsBufferSize = size;
+	}
+	dim_get_env_var(name, itsBuffer, itsBufferSize);
+	return itsBuffer;
+}
Index: branches/testFACT++branch/dim/src/dis.c
===================================================================
--- branches/testFACT++branch/dim/src/dis.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/dis.c	(revision 18277)
@@ -0,0 +1,3488 @@
+/*
+ * DIS (Delphi Information Server) Package implements a library of
+ * routines to be used by servers.
+ *
+ * Started on		 : 10-11-91
+ * Last modification : 28-07-94
+ * Written by		 : C. Gaspar
+ * Adjusted by	     : G.C. Ballintijn
+ *
+ */
+
+#ifdef VMS
+#	include <lnmdef.h>
+#	include <ssdef.h>
+#	include <descrip.h>
+#	include <cfortran.h>
+#endif
+/*
+#define DEBUG
+*/
+#include <time.h>
+#ifdef VAX
+#include <timeb.h>
+#else
+#include <sys/timeb.h>
+#endif
+
+#define DIMLIB
+#include <dim.h>
+#include <dis.h>
+
+#define ALL 0
+#define MORE 1
+#define NONE 2
+
+typedef struct dis_dns_ent {
+	struct dis_dns_ent *next;
+	struct dis_dns_ent *prev;
+	dim_long dnsid;
+	char task_name[MAX_NAME];
+	TIMR_ENT *dns_timr_ent;
+	DIS_DNS_PACKET dis_dns_packet;
+	int dis_n_services;
+	int dns_dis_conn_id;
+	int dis_first_time;
+	int serving;
+	unsigned int dis_service_id;
+	unsigned int dis_client_id;
+	int updating_service_list;
+} DIS_DNS_CONN;
+
+typedef struct req_ent {
+	struct req_ent *next;
+	struct req_ent *prev;
+	int conn_id;
+	int service_id;
+	int req_id;
+	int type;
+	struct serv *service_ptr;
+	int timeout;
+	int format;
+	int first_time;
+	int delay_delete;
+	int to_delete;
+	TIMR_ENT *timr_ent;
+	struct reqp_ent *reqpp;
+} REQUEST;
+
+typedef struct serv {
+	struct serv *next;
+	struct serv *prev;
+	char name[MAX_NAME];
+	int id;
+	int type;
+	char def[MAX_NAME];
+	FORMAT_STR format_data[MAX_NAME/4];
+	int *address;
+	int size;
+	void (*user_routine)();
+	dim_long tag;
+	int registered;
+	int quality;
+	int user_secs;
+	int user_millisecs;
+	int tid;
+	REQUEST *request_head;
+	DIS_DNS_CONN *dnsp;
+	int delay_delete;
+	int to_delete;
+} SERVICE;
+
+typedef struct reqp_ent {
+	struct reqp_ent *next;
+	struct reqp_ent *prev;
+	REQUEST *reqp;
+} REQUEST_PTR;
+
+typedef struct cli_ent {
+	struct cli_ent *next;
+	struct cli_ent *prev;
+	int conn_id;
+	REQUEST_PTR *requestp_head; 
+	DIS_DNS_CONN *dnsp;
+} CLIENT;
+
+static CLIENT *Client_head = (CLIENT *)0;	
+
+static DIS_DNS_CONN *DNS_head = (DIS_DNS_CONN *)0;	
+
+/*
+static char Task_name[MAX_NAME];
+static TIMR_ENT *Dns_timr_ent = (TIMR_ENT *)0;
+static DIS_DNS_PACKET Dis_dns_packet = {0, 0, {0}};
+static int Dis_n_services = 0;
+*/
+static int Dis_first_time = 1;
+/*
+static int Dns_dis_conn_id = 0;
+*/
+static int Protocol;
+static int Port_number;
+static int Dis_conn_id = 0;
+static int Curr_conn_id = 0;
+static int Serving = 0;
+static void (*Client_exit_user_routine)() = 0;
+static void (*Exit_user_routine)() = 0;
+static void (*Error_user_routine)() = 0;
+static int Error_conn_id = 0;
+DIS_DNS_CONN *Default_DNS = 0;
+
+typedef struct exit_ent {
+	struct exit_ent *next;
+	int conn_id;
+	int exit_id;
+	char node[MAX_NODE_NAME];
+	char task[MAX_TASK_NAME];
+} EXIT_H;
+
+static EXIT_H *Exit_h_head = (EXIT_H *)0;
+
+/* Do not forget to increase when this file is modified */
+static int Version_number = DIM_VERSION_NUMBER;
+static int Dis_timer_q = 0;
+static int Threads_off = 0;
+/*
+static unsigned int Dis_service_id, Dis_client_id;
+static int Updating_service_list = 0;
+*/
+static int Last_client;
+static int Last_n_clients;
+
+
+#ifdef DEBUG
+static int Debug_on = 1;
+#else
+static int Debug_on = 0;
+#endif
+
+_DIM_PROTO( static void dis_insert_request, (int conn_id, DIC_PACKET *dic_packet,
+				  int size, int status ) );
+_DIM_PROTO( int execute_service,	(int req_id) );
+_DIM_PROTO( void execute_command,	(SERVICE *servp, DIC_PACKET *packet) );
+_DIM_PROTO( void register_dns_services,  (int flag) );
+_DIM_PROTO( void register_services,  (DIS_DNS_CONN *dnsp, int flag, int dns_flag) );
+_DIM_PROTO( void std_cmnd_handler,   (dim_long *tag, int *cmnd_buff, int *size) );
+_DIM_PROTO( void client_info,		(dim_long *tag, int **bufp, int *size) );
+_DIM_PROTO( void service_info,	   (dim_long *tag, int **bufp, int *size) );
+_DIM_PROTO( void add_exit_handler,   (int *tag, int *bufp, int *size) );
+_DIM_PROTO( static void exit_handler,	   (int *tag, int *bufp, int *size) );
+_DIM_PROTO( static void error_handler,	   (int conn_id, int severity, int errcode, char *reason) );
+_DIM_PROTO( SERVICE *find_service,   (char *name) );
+_DIM_PROTO( CLIENT *find_client,   (int conn_id) );
+_DIM_PROTO( static int get_format_data, (FORMAT_STR *format_data, char *def) );
+_DIM_PROTO( static int release_conn, (int conn_id, int print_flag, int dns_flag) );
+_DIM_PROTO( SERVICE *dis_hash_service_exists, (char *name) );
+_DIM_PROTO( SERVICE *dis_hash_service_get_next, (int *start, SERVICE *prev, int flag) );
+_DIM_PROTO( static unsigned do_dis_add_service_dns, (char *name, char *type, void *address, int size, 
+								   void (*user_routine)(), dim_long tag, dim_long dnsid ) );
+_DIM_PROTO( static DIS_DNS_CONN *create_dns, (dim_long dnsid) );
+
+void dis_set_debug_on()
+{
+	Debug_on = 1;
+}
+
+void dis_set_debug_off()
+{
+	Debug_on = 0;
+}
+
+void dis_no_threads()
+{
+	Threads_off = 1;
+}
+
+static DIS_STAMPED_PACKET *Dis_packet = 0;
+static int Dis_packet_size = 0;
+
+int dis_set_buffer_size(int size)
+{
+	if(Dis_packet_size)
+		free(Dis_packet);
+	Dis_packet = (DIS_STAMPED_PACKET *)malloc((size_t)(DIS_STAMPED_HEADER + size));
+	if(Dis_packet)
+	{
+		Dis_packet_size = DIS_STAMPED_HEADER + size;
+		return(1);
+	}
+	else
+		return(0);
+}
+
+static int check_service_name(char *name)
+{
+	if((int)strlen(name) > (MAX_NAME - 1))
+		return(0);
+	return(1);
+}
+
+void dis_init()
+{
+	int dis_hash_service_init();
+	void dis_dns_init();
+
+	dis_dns_init();
+	{
+	DISABLE_AST
+	dis_hash_service_init();
+	ENABLE_AST
+	}
+}
+
+static unsigned do_dis_add_service_dns( char *name, char *type, void *address, int size, 
+								   void (*user_routine)(), dim_long tag, dim_long dnsid )
+{
+	register SERVICE *new_serv;
+	register int service_id;
+	char str[512];
+	int dis_hash_service_insert();
+	DIS_DNS_CONN *dnsp;
+	extern DIS_DNS_CONN *dis_find_dns(dim_long);
+
+	dis_init();
+	{
+	DISABLE_AST
+	if(Serving == -1)
+	{
+		ENABLE_AST
+		return((unsigned) 0);
+	}
+	if(!check_service_name(name))
+	{
+		strcpy(str,"Service name too long: ");
+		strcat(str,name);
+		error_handler(0, DIM_ERROR, DIMSVCTOOLG, str, -1);
+		ENABLE_AST
+		return((unsigned) 0);
+	}
+	if( find_service(name) )
+	{
+		strcpy(str,"Duplicate Service: ");
+		strcat(str,name);
+		error_handler(0, DIM_ERROR, DIMSVCDUPLC, str, -1);
+		ENABLE_AST
+		return((unsigned) 0);
+	}
+	new_serv = (SERVICE *)malloc( sizeof(SERVICE) );
+	strncpy( new_serv->name, name, (size_t)MAX_NAME );
+	if(type != (char *)0)
+	{
+		if ((int)strlen(type) >= MAX_NAME)
+		{
+			strcpy(str,"Format String Too Long: ");
+			strcat(str,name);
+			error_handler(0, DIM_ERROR, DIMSVCFORMT, str, -1);
+			free(new_serv);
+			ENABLE_AST
+			return((unsigned) 0);
+		}
+		if (! get_format_data(new_serv->format_data, type))
+		{
+			strcpy(str,"Bad Format String: ");
+			strcat(str,name);
+			error_handler(0, DIM_ERROR, DIMSVCFORMT, str, -1);
+			free(new_serv);
+			ENABLE_AST
+			return((unsigned) 0);
+		}
+		strcpy(new_serv->def,type); 
+	}
+	else
+	{
+		new_serv->format_data[0].par_bytes = 0;
+		new_serv->def[0] = '\0';
+	}
+	new_serv->type = 0;
+	new_serv->address = (int *)address;
+	new_serv->size = size;
+	new_serv->user_routine = user_routine;
+	new_serv->tag = tag;
+	new_serv->registered = 0;
+	new_serv->quality = 0;
+	new_serv->user_secs = 0;
+	new_serv->tid = 0;
+	new_serv->delay_delete = 0;
+	new_serv->to_delete = 0;
+	dnsp = dis_find_dns(dnsid);
+	if(!dnsp)
+		dnsp = create_dns(dnsid);
+	new_serv->dnsp = dnsp;
+	service_id = id_get((void *)new_serv, SRC_DIS);
+	new_serv->id = service_id;
+	new_serv->request_head = (REQUEST *)malloc(sizeof(REQUEST));
+	dll_init( (DLL *) (new_serv->request_head) );
+	dis_hash_service_insert(new_serv);
+/*
+	Dis_n_services++;
+*/
+	dnsp->dis_n_services++;
+	ENABLE_AST
+	}
+	return((unsigned)service_id);
+}
+
+static unsigned do_dis_add_service( char *name, char *type, void *address, int size, 
+								   void (*user_routine)(), dim_long tag )
+{
+	return do_dis_add_service_dns( name, type, address, size, 
+								   user_routine, tag, 0 );
+}
+
+#ifdef VxWorks
+void dis_destroy(int tid)
+{
+register SERVICE *servp, *prevp;
+int n_left = 0;
+
+	prevp = 0;
+	while( servp = dis_hash_service_get_next(prevp))
+	{
+		if(servp->tid == tid)
+		{
+			dis_remove_service(servp->id);
+		}
+		else
+		{
+			prevp = servp;
+			n_left++;
+		}
+	}
+	if(n_left == 5)
+	{
+		prevp = 0;
+		while( servp = dis_hash_service_get_next(prevp))
+		{
+			dis_remove_service(servp->id);
+		}
+		dna_close(Dis_conn_id);
+		dna_close(Dns_dis_conn_id);
+		Dns_dis_conn_id = 0;
+		Dis_first_time = 1;
+		dtq_rem_entry(Dis_timer_q, Dns_timr_ent);
+		Dns_timr_ent = NULL;
+	}
+}
+
+
+#endif
+
+unsigned dis_add_service( char *name, char *type, void *address, int size, 
+						 void (*user_routine)(), dim_long tag)
+{
+	unsigned ret;
+#ifdef VxWorks
+	register SERVICE *servp;
+#endif
+/*
+	DISABLE_AST
+*/
+	ret = do_dis_add_service( name, type, address, size, user_routine, tag);
+#ifdef VxWorks
+	servp = (SERVICE *)id_get_ptr(ret, SRC_DIS);
+	servp->tid = taskIdSelf();
+#endif
+/*
+	ENABLE_AST
+*/
+	return(ret);
+}
+
+unsigned dis_add_service_dns( dim_long dnsid, char *name, char *type, void *address, int size, 
+							 void (*user_routine)(), dim_long tag)
+{
+	unsigned ret;
+#ifdef VxWorks
+	register SERVICE *servp;
+#endif
+/*
+	DISABLE_AST
+*/
+	ret = do_dis_add_service_dns( name, type, address, size, user_routine, tag, dnsid);
+#ifdef VxWorks
+	servp = (SERVICE *)id_get_ptr(ret, SRC_DIS);
+	servp->tid = taskIdSelf();
+#endif
+/*
+	ENABLE_AST
+*/
+	return(ret);
+}
+
+static unsigned do_dis_add_cmnd_dns( char *name, char *type, void (*user_routine)(), dim_long tag, dim_long dnsid )
+{
+	register SERVICE *new_serv;
+	register int service_id;
+	char str[512];
+	int dis_hash_service_insert();
+	DIS_DNS_CONN *dnsp;
+	extern DIS_DNS_CONN *dis_find_dns(dim_long);
+
+	dis_init();
+	{
+	DISABLE_AST
+	if(Serving == -1)
+	{
+		ENABLE_AST
+		return((unsigned) 0);
+	}
+	if(!check_service_name(name))
+	{
+		strcpy(str,"Command name too long: ");
+		strcat(str,name);
+		error_handler(0, DIM_ERROR, DIMSVCTOOLG, str, -1);
+		ENABLE_AST
+		return((unsigned) 0);
+	}
+	if( find_service(name) )
+	{
+		ENABLE_AST
+		return((unsigned) 0);
+	}
+	new_serv = (SERVICE *)malloc(sizeof(SERVICE));
+	strncpy(new_serv->name, name, (size_t)MAX_NAME);
+	if(type != (char *)0)
+	{
+		if( !get_format_data(new_serv->format_data, type))
+		{
+			ENABLE_AST
+			return((unsigned) 0);
+		}
+		strcpy(new_serv->def,type); 
+	}
+	else
+	{
+		new_serv->format_data[0].par_bytes = 0;
+		new_serv->def[0] = '\0';
+	}
+	new_serv->type = COMMAND;
+	new_serv->address = 0;
+	new_serv->size = 0;
+	if(user_routine)
+		new_serv->user_routine = user_routine;
+	else
+		new_serv->user_routine = std_cmnd_handler;
+	new_serv->tag = tag;
+	new_serv->tid = 0;
+	new_serv->registered = 0;
+	new_serv->quality = 0;
+	new_serv->user_secs = 0;
+	new_serv->delay_delete = 0;
+	new_serv->to_delete = 0;
+	service_id = id_get((void *)new_serv, SRC_DIS);
+	new_serv->id = service_id;
+	dnsp = dis_find_dns(dnsid);
+	if(!dnsp)
+		dnsp = create_dns(dnsid);
+	new_serv->dnsp = dnsp;
+	new_serv->request_head = (REQUEST *)malloc(sizeof(REQUEST));
+	dll_init( (DLL *) (new_serv->request_head) );
+	dis_hash_service_insert(new_serv);
+/*
+	Dis_n_services++;
+*/
+	dnsp->dis_n_services++;
+	ENABLE_AST
+	}
+	return((unsigned) service_id);
+}
+
+static unsigned do_dis_add_cmnd( char *name, char *type, void (*user_routine)(), dim_long tag)
+{
+	return do_dis_add_cmnd_dns(name, type, user_routine, tag, 0);
+}
+
+unsigned dis_add_cmnd( char *name, char *type, void (*user_routine)(), dim_long tag ) 
+{
+	unsigned ret;
+
+/*
+	DISABLE_AST
+*/
+	ret = do_dis_add_cmnd( name, type, user_routine, tag );
+/*
+	ENABLE_AST
+*/
+	return(ret);
+}
+
+unsigned dis_add_cmnd_dns( dim_long dnsid, char *name, char *type, void (*user_routine)(), dim_long tag ) 
+{
+	unsigned ret;
+
+	/*
+	DISABLE_AST
+	*/
+	ret = do_dis_add_cmnd_dns( name, type, user_routine, tag, dnsid );
+	/*
+	ENABLE_AST
+	*/
+	return(ret);
+}
+
+void dis_add_client_exit_handler( void (*user_routine)()) 
+{
+
+	DISABLE_AST
+	Client_exit_user_routine = user_routine;
+	ENABLE_AST
+}
+
+void dis_add_exit_handler( void (*user_routine)()) 
+{
+
+	DISABLE_AST
+	Exit_user_routine = user_routine;
+	ENABLE_AST
+}
+
+void dis_add_error_handler( void (*user_routine)())
+{
+
+	DISABLE_AST
+	Error_user_routine = user_routine;
+	ENABLE_AST
+}
+
+static int get_format_data(FORMAT_STR *format_data, char *def)
+{
+	register char code, last_code = 0;
+	int num;
+
+	code = *def;
+	while(*def)
+	{
+		if(code != last_code)
+		{
+			format_data->par_num = 0;
+			format_data->flags = 0;
+			switch(code)
+			{
+				case 'i':
+				case 'I':
+				case 'l':
+				case 'L':
+					format_data->par_bytes = SIZEOF_LONG;
+					format_data->flags |= SWAPL;
+					break;
+				case 'x':
+				case 'X':
+					format_data->par_bytes = SIZEOF_DOUBLE;
+					format_data->flags |= SWAPD;
+					break;
+				case 's':
+				case 'S':
+					format_data->par_bytes = SIZEOF_SHORT;
+					format_data->flags |= SWAPS;
+					break;
+				case 'f':
+				case 'F':
+					format_data->par_bytes = SIZEOF_FLOAT;
+					format_data->flags |= SWAPL;
+#ifdef vms      	
+					format_data->flags |= IT_IS_FLOAT;
+#endif
+					break;
+				case 'd':
+				case 'D':
+					format_data->par_bytes = SIZEOF_DOUBLE;
+					format_data->flags |= SWAPD;
+#ifdef vms
+					format_data->flags |= IT_IS_FLOAT;
+#endif
+					break;
+				case 'c':
+				case 'C':
+				case 'b':
+				case 'B':
+				case 'v':
+				case 'V':
+					format_data->par_bytes = SIZEOF_CHAR;
+					format_data->flags |= NOSWAP;
+					break;
+			}
+		}
+		def++;
+		if(*def != ':')
+		{
+			if(*def)
+			{
+/*
+				printf("Bad service definition parsing\n");
+				fflush(stdout);
+
+				error_handler("Bad service definition parsing",2);
+*/
+				return(0);
+			}
+			else
+				format_data->par_num = 0;
+		}
+		else
+		{
+			def++;
+			sscanf(def,"%d",&num);
+			format_data->par_num += num;
+			while((*def != ';') && (*def != '\0'))
+				def++;
+			if(*def)
+				def++;
+		}
+		last_code = code;
+		code = *def;
+		if(code != last_code)
+			format_data++;
+	}
+	format_data->par_bytes = 0;
+	return(1);
+}
+
+void recv_dns_dis_rout( int conn_id, DNS_DIS_PACKET *packet, int size, int status )
+{
+	char str[128];
+	int dns_timr_time;
+	extern int rand_tmout(int, int);
+	extern int open_dns(dim_long, void (*)(), void (*)(), int, int, int);
+	extern DIS_DNS_CONN *find_dns_by_conn_id(int);
+	extern void do_register_services(DIS_DNS_CONN *);
+	extern void do_dis_stop_serving_dns(DIS_DNS_CONN *);
+	DIS_DNS_CONN *dnsp;
+	int type, exit_code;
+
+	if(size){}
+	dnsp = find_dns_by_conn_id(conn_id);
+	if(!dnsp)
+	{
+		return;
+	}
+	switch(status)
+	{
+	case STA_DISC:	   /* connection broken */
+		if( dnsp->dns_timr_ent ) {
+			dtq_rem_entry( Dis_timer_q, dnsp->dns_timr_ent );
+			dnsp->dns_timr_ent = NULL;
+		}
+
+		if(dnsp->dns_dis_conn_id > 0)
+			dna_close(dnsp->dns_dis_conn_id);
+		if(Serving == -1)
+			return;
+		if(dnsp->serving)
+		{
+			dnsp->dns_dis_conn_id = open_dns(dnsp->dnsid, recv_dns_dis_rout, error_handler,
+					DIS_DNS_TMOUT_MIN, DIS_DNS_TMOUT_MAX, SRC_DIS );
+			if(dnsp->dns_dis_conn_id == -2)
+				error_handler(0, DIM_FATAL, DIMDNSUNDEF, "DIM_DNS_NODE undefined", -1);
+		}
+		break;
+	case STA_CONN:		/* connection received */
+		if(dnsp->serving)
+		{
+			dnsp->dns_dis_conn_id = conn_id;
+			register_services(dnsp, ALL, 0);
+			dns_timr_time = rand_tmout(WATCHDOG_TMOUT_MIN, 
+							 WATCHDOG_TMOUT_MAX);
+			dnsp->dns_timr_ent = dtq_add_entry( Dis_timer_q,
+						  dns_timr_time,
+						  do_register_services, dnsp ); 
+		}
+		else
+		{
+			dna_close(conn_id);
+		}
+		break;
+	default :	   /* normal packet */
+		if(vtohl(packet->size) != DNS_DIS_HEADER)
+			break;
+		type = vtohl(packet->type);
+		exit_code = (type >> 16) & 0xFFFF;
+		type &= 0xFFFF;
+		switch(type)
+		{
+		case DNS_DIS_REGISTER :
+			sprintf(str, 
+				"%s: Watchdog Timeout, DNS requests registration",
+				dnsp->task_name);
+			error_handler(0, DIM_WARNING, DIMDNSTMOUT, str, -1);
+			register_services(dnsp, ALL, 0);
+			break;
+		case DNS_DIS_KILL :
+			sprintf(str,
+				"%s: Some Services already known to DNS",
+				dnsp->task_name);
+			/*
+			exit(2);
+			*/
+			Serving = -1;
+			error_handler(0, DIM_FATAL, DIMDNSDUPLC, str, -1);
+			/*
+			do_dis_stop_serving_dns(dnsp);
+			dis_stop_serving();
+			*/
+/*
+			exit_tag = 0;
+			exit_code = 2;
+			exit_size = sizeof(int);
+			exit_handler(&exit_tag, &exit_code, &exit_size);
+*/
+			break;
+		case DNS_DIS_STOP :
+			sprintf(str, 
+				"%s: DNS refuses connection",dnsp->task_name);
+/*
+			exit(2);
+*/
+			Serving = -1;
+			error_handler(0, DIM_FATAL, DIMDNSREFUS, str, -1);
+			/*
+			do_dis_stop_serving_dns(dnsp);
+			dis_stop_serving();
+			*/
+/*
+			exit_tag = 0;
+			exit_code = 2;
+			exit_size = sizeof(int);
+			exit_handler(&exit_tag, &exit_code, &exit_size);
+*/
+			break;
+		case DNS_DIS_EXIT :
+			sprintf(str, 
+				"%s: DNS requests Exit",dnsp->task_name);
+/*
+			Serving = -1;
+*/
+			error_handler(0, DIM_FATAL, DIMDNSEXIT, str, -1);
+			break;
+		case DNS_DIS_SOFT_EXIT :
+			sprintf(str, 
+				"%s: DNS requests Exit(%d)",dnsp->task_name, exit_code);
+/*
+			Serving = -1;
+*/
+			error_handler(0, DIM_FATAL, DIMDNSEXIT, str, exit_code);
+			break;
+		}
+		break;
+	}
+}
+
+
+/* register services within the name server
+ *
+ * Send services uses the DNA package. services is a linked list of services
+ * stored by add_service.
+ */
+
+int send_dns_update_packet(DIS_DNS_CONN *dnsp)
+{
+  DIS_DNS_PACKET *dis_dns_p = &(dnsp->dis_dns_packet);
+  int n_services;
+  SERVICE_REG *serv_regp;
+
+  n_services = 1;
+  dis_dns_p->n_services = htovl(n_services);
+  dis_dns_p->size = htovl(DIS_DNS_HEADER +
+					n_services * (int)sizeof(SERVICE_REG));
+  serv_regp = dis_dns_p->services;
+  strcpy( serv_regp->service_name, "DUMMY_UPDATE_PACKET" );
+  if(dnsp->dns_dis_conn_id > 0)
+  {
+if(Debug_on)
+{
+dim_print_date_time();
+ printf("Sending UpdatePacket to dns %d as %s@%s, %d services\n",
+	dnsp->dns_dis_conn_id,
+	(&(dnsp->dis_dns_packet))->task_name, (&(dnsp->dis_dns_packet))->node_name, n_services);
+}
+      if( !dna_write(dnsp->dns_dis_conn_id, &(dnsp->dis_dns_packet),
+		     DIS_DNS_HEADER + n_services * (int)sizeof(SERVICE_REG)))
+	  {
+		release_conn(dnsp->dns_dis_conn_id, 0, 1);
+	  }
+  }
+  return(1);
+}
+
+void do_register_services(DIS_DNS_CONN *dnsp)
+{
+	register_services(dnsp, NONE, 0);
+}
+
+void register_services(DIS_DNS_CONN *dnsp, int flag, int dns_flag)
+{
+	register DIS_DNS_PACKET *dis_dns_p = &(dnsp->dis_dns_packet);
+	register int n_services, tot_n_services;
+	register SERVICE *servp;
+	register SERVICE_REG *serv_regp;
+	int hash_index, new_entries;
+	extern int get_node_addr();
+	int dis_hash_service_registered();
+
+	if(!dis_dns_p->src_type)
+	{
+		get_node_name( dis_dns_p->node_name );
+/*
+		strcpy( dis_dns_p->task_name, Task_name );
+*/
+		strncpy( dis_dns_p->task_name, dnsp->task_name,
+			(size_t)(MAX_TASK_NAME-4) );
+		dis_dns_p->task_name[MAX_TASK_NAME-4-1] = '\0';
+		get_node_addr( dis_dns_p->node_addr );
+/*
+		dis_dns_p->port = htovl(Port_number);
+*/
+		dis_dns_p->pid = htovl(getpid());
+		dis_dns_p->protocol = htovl(Protocol);
+		dis_dns_p->src_type = htovl(SRC_DIS);
+		dis_dns_p->format = htovl(MY_FORMAT);
+if(Debug_on)
+{
+dim_print_date_time();
+ printf("Registering as %d %s@%s\n",
+	dis_dns_p->pid, dis_dns_p->task_name, dis_dns_p->node_name);
+}
+	
+	}
+
+	dis_dns_p->port = htovl(Port_number);
+	serv_regp = dis_dns_p->services;
+	n_services = 0;
+	tot_n_services = 0;
+	if( flag == NONE ) {
+		dis_dns_p->n_services = htovl(n_services);
+		dis_dns_p->size = htovl( DIS_DNS_HEADER + 
+			(n_services*(int)sizeof(SERVICE_REG)));
+		if(dnsp->dns_dis_conn_id > 0)
+		{
+if(Debug_on)
+{
+dim_print_date_time();
+ printf("Sending NONE to dns %d as %s@%s, %d services\n",
+	dnsp->dns_dis_conn_id,
+	(&(dnsp->dis_dns_packet))->task_name, (&(dnsp->dis_dns_packet))->node_name, n_services);
+}
+			if(!dna_write(dnsp->dns_dis_conn_id, &(dnsp->dis_dns_packet), 
+				DIS_DNS_HEADER + n_services*(int)sizeof(SERVICE_REG)))
+			{
+				release_conn(dnsp->dns_dis_conn_id, 0, 1);
+			}
+		}
+		return;
+	}
+	if(flag == ALL)
+	{
+		servp = 0;
+		hash_index = -1;
+		while( (servp = dis_hash_service_get_next(&hash_index, servp, 0)))
+		{
+			if(servp->dnsp == dnsp)
+				servp->registered  = 0;
+		}
+	}
+	servp = 0;
+	hash_index = -1;
+	new_entries = 0;
+	if(flag == MORE)
+		new_entries = 1;
+	while( (servp = dis_hash_service_get_next(&hash_index, servp, new_entries)))
+	{
+		if( flag == MORE ) 
+		{
+			if( servp->registered )
+			{
+				continue;
+			}
+		}
+
+		if(servp->dnsp != dnsp)
+			continue;
+
+if(Debug_on)
+{
+dim_print_date_time();
+ printf("Registering %s\n",
+	servp->name);
+}
+		strcpy( serv_regp->service_name, servp->name );
+		strcpy( serv_regp->service_def, servp->def );
+		if(servp->type == COMMAND)
+			serv_regp->service_id = htovl( servp->id | 0x10000000);
+		else
+			serv_regp->service_id = htovl( servp->id );
+
+		serv_regp++;
+		n_services++;
+		dis_hash_service_registered(hash_index, servp);
+		if( n_services == MAX_SERVICE_UNIT )
+		{
+			dis_dns_p->n_services = htovl(n_services);
+			dis_dns_p->size = (int)htovl(DIS_DNS_HEADER +
+				n_services * (int)sizeof(SERVICE_REG));
+			if(dnsp->dns_dis_conn_id > 0)
+			{
+if(Debug_on)
+{
+dim_print_date_time();
+ printf("Sending MAX_SERVICE_UNIT to dns %d as %s@%s, %d services\n",
+	dnsp->dns_dis_conn_id,
+	(&(dnsp->dis_dns_packet))->task_name, (&(dnsp->dis_dns_packet))->node_name, n_services);
+}
+				if( !dna_write(dnsp->dns_dis_conn_id,
+					   &(dnsp->dis_dns_packet), 
+					   DIS_DNS_HEADER + n_services *
+						(int)sizeof(SERVICE_REG)) )
+				{
+					release_conn(dnsp->dns_dis_conn_id, 0, 1);
+				}
+			}
+			serv_regp = dis_dns_p->services;
+			tot_n_services += MAX_SERVICE_UNIT;
+			n_services = 0;
+			continue;
+		}
+	}
+	if( n_services ) 
+	{
+		dis_dns_p->n_services = htovl(n_services);
+		dis_dns_p->size = htovl(DIS_DNS_HEADER +
+					n_services * (int)sizeof(SERVICE_REG));
+		if(dnsp->dns_dis_conn_id > 0)
+		{
+if(Debug_on)
+{
+dim_print_date_time();
+ printf("Sending to dns %d as %s@%s, %d services\n",
+	dnsp->dns_dis_conn_id,
+	(&(dnsp->dis_dns_packet))->task_name, (&(dnsp->dis_dns_packet))->node_name, n_services);
+}
+			if( !dna_write(dnsp->dns_dis_conn_id, &(dnsp->dis_dns_packet),
+				DIS_DNS_HEADER + n_services * (int)sizeof(SERVICE_REG)))
+			{
+				release_conn(dnsp->dns_dis_conn_id, 0, 1);
+			}
+
+		}
+		tot_n_services += n_services;
+	}
+	if(!dns_flag)
+	{
+		if(tot_n_services >= MAX_REGISTRATION_UNIT)
+		{
+			send_dns_update_packet(dnsp);
+		}
+	}
+}
+
+void unregister_service(DIS_DNS_CONN *dnsp, SERVICE *servp)
+{
+	register DIS_DNS_PACKET *dis_dns_p = &(dnsp->dis_dns_packet);
+	register int n_services;
+	register SERVICE_REG *serv_regp;
+	extern int get_node_addr();
+
+	if(dnsp->dns_dis_conn_id > 0)
+	{
+		if(!dis_dns_p->src_type)
+		{
+			get_node_name( dis_dns_p->node_name );
+/*
+			strcpy( dis_dns_p->task_name, Task_name );
+*/
+			strncpy( dis_dns_p->task_name, dnsp->task_name,
+				(size_t)(MAX_TASK_NAME-4) );
+			dis_dns_p->task_name[MAX_TASK_NAME-4-1] = '\0';
+			get_node_addr( dis_dns_p->node_addr );
+			dis_dns_p->port = htovl(Port_number);
+			dis_dns_p->protocol = htovl(Protocol);
+			dis_dns_p->src_type = htovl(SRC_DIS);
+			dis_dns_p->format = htovl(MY_FORMAT);
+		}
+		serv_regp = dis_dns_p->services;
+		strcpy( serv_regp->service_name, servp->name );
+		strcpy( serv_regp->service_def, servp->def );
+		serv_regp->service_id = (int)htovl( (unsigned)servp->id | 0x80000000);
+		serv_regp++;
+		n_services = 1;
+		servp->registered = 0;
+		dis_dns_p->n_services = htovl(n_services);
+		dis_dns_p->size = htovl(DIS_DNS_HEADER +
+				n_services * (int)sizeof(SERVICE_REG));
+
+if(Debug_on)
+{
+dim_print_date_time();
+ printf("Sending UNREGISTER to dns %d as %s@%s, %d services\n",
+	dnsp->dns_dis_conn_id,
+	(&(dnsp->dis_dns_packet))->task_name, (&(dnsp->dis_dns_packet))->node_name, n_services);
+}
+		if( !dna_write(dnsp->dns_dis_conn_id, &(dnsp->dis_dns_packet), 
+			DIS_DNS_HEADER + n_services * (int)sizeof(SERVICE_REG)) )
+		{
+			release_conn(dnsp->dns_dis_conn_id, 0, 1);
+		}
+		if(dnsp->dis_service_id)
+			dis_update_service(dnsp->dis_service_id);
+	}
+}
+
+void do_update_service_list(DIS_DNS_CONN *dnsp)
+{
+	dnsp->updating_service_list = 0;
+	if(dnsp->dis_service_id)
+		dis_update_service(dnsp->dis_service_id);
+}
+
+/* start serving client requests
+ *
+ * Using the DNA package start accepting requests from clients.
+ * When a request arrives the routine "dis_insert_request" will be executed.
+ */
+
+int dis_start_serving(char *task)
+{
+	return dis_start_serving_dns(0, task);
+}
+
+static DIS_DNS_CONN *create_dns(dim_long dnsid)
+{
+	DIS_DNS_CONN *dnsp;
+
+	dnsp = malloc(sizeof(DIS_DNS_CONN));
+	dnsp->dns_timr_ent = (TIMR_ENT *)0;
+	dnsp->dis_n_services = 0;
+	dnsp->dns_dis_conn_id = 0;
+	dnsp->dis_first_time = 1;
+	dnsp->serving = 0;
+	dnsp->dis_dns_packet.size = 0;
+	dnsp->dis_dns_packet.src_type = 0;
+	dnsp->dis_dns_packet.node_name[0] = 0;
+	dnsp->updating_service_list = 0;
+	dnsp->dnsid = dnsid;
+	dll_insert_queue( (DLL *) DNS_head, (DLL *) dnsp );
+	return dnsp;
+}
+
+void dis_dns_init()
+{
+	static int done = 0;
+	DIS_DNS_CONN *dnsp;
+	void dim_init_threads(void);
+
+	if(!done)
+	{
+		if(!Threads_off)
+		{
+			dim_init_threads();
+		}
+		{
+		DISABLE_AST
+		if(!DNS_head) 
+		{
+			DNS_head = (DIS_DNS_CONN *)malloc(sizeof(DIS_DNS_CONN));
+			dll_init( (DLL *) DNS_head );
+		}
+		dnsp = create_dns(0);
+		Default_DNS = dnsp;
+		done = 1;
+		ENABLE_AST
+		}
+	}
+}
+
+int dis_start_serving_dns(dim_long dnsid, char *task/*, int *idlist*/)
+{
+	char str0[MAX_NAME], str1[MAX_NAME],str2[MAX_NAME],
+	  str3[MAX_NAME],str4[MAX_NAME];
+	char task_name_aux[MAX_TASK_NAME];
+	extern int open_dns();
+	extern DIS_DNS_CONN *dis_find_dns(dim_long);
+	DIS_DNS_CONN *dnsp;
+	unsigned int more_ids[10] = {0};
+
+	dis_init();
+	{
+	DISABLE_AST
+	if(Serving == -1)
+	{
+		ENABLE_AST
+		return(0);
+	}
+	  /*
+#ifdef VxWorks
+	taskDeleteHookAdd(remove_all_services);
+	printf("Adding delete hook\n");
+#endif
+*/
+
+	if(!Client_head) 
+	{
+		Client_head = (CLIENT *)malloc(sizeof(CLIENT));
+		dll_init( (DLL *) Client_head );
+	}
+	if(dnsid == 0)
+	{
+		dnsp = Default_DNS;
+	}
+	else if(!(dnsp = dis_find_dns(dnsid)))
+	{
+		dnsp = create_dns(dnsid);
+	}
+	dnsp->serving = 1;
+	Serving = 1;
+	if(Dis_first_time)
+	{
+		strncpy( task_name_aux, task, (size_t)MAX_TASK_NAME );
+		task_name_aux[MAX_TASK_NAME-1] = '\0';
+		Port_number = SEEK_PORT;
+if(Debug_on)
+{
+dim_print_date_time();
+ printf("Opening Server Connection %s\n",task_name_aux);
+}
+		if( !(Dis_conn_id = dna_open_server( task_name_aux, dis_insert_request, 
+			&Protocol, &Port_number, error_handler) ))
+		{
+			ENABLE_AST
+			return(0);
+		}
+		Dis_first_time = 0;
+	}
+	if(dnsp->dis_first_time)
+	{
+		dnsp->dis_first_time = 0;
+
+		sprintf(str0, "%s/VERSION_NUMBER", task);
+		sprintf(str1, "%s/CLIENT_LIST", task);
+		sprintf(str2, "%s/SERVICE_LIST", task);
+		sprintf(str3, "%s/SET_EXIT_HANDLER", task);
+		sprintf(str4, "%s/EXIT", task);
+
+		more_ids[0] = do_dis_add_service_dns( str0, "L", &Version_number,
+						sizeof(Version_number), 0, 0, dnsid );
+
+		more_ids[1] = do_dis_add_service_dns( str1, "C", 0, 0, client_info, (dim_long)dnsp, dnsid );
+		dnsp->dis_client_id = more_ids[1];
+		more_ids[2] = do_dis_add_service_dns( str2, "C", 0, 0, service_info, (dim_long)dnsp, dnsid );
+		dnsp->dis_service_id = more_ids[2];
+		more_ids[3] = do_dis_add_cmnd_dns( str3, "L:1", add_exit_handler, 0, dnsid );
+		more_ids[4] = do_dis_add_cmnd_dns( str4, "L:1", exit_handler, 0, dnsid );
+		more_ids[5] = 0;
+		strcpy( dnsp->task_name, task );
+if(Debug_on)
+{
+dim_print_date_time();
+ printf("start serving %s\n",task);
+}
+	}
+/*
+	if(idlist)
+	{
+		for(i = 0; idlist[i]; i++)
+		{
+			servp = (SERVICE *)id_get_ptr(idlist[i], SRC_DIS);
+			if(servp)
+			{
+				servp->dnsp = dnsp;
+				n_services++;
+			}
+		}
+	}
+	if(dnsp != Default_DNS)
+	{
+		for(i = 0; more_ids[i]; i++)
+		{
+			servp = (SERVICE *)id_get_ptr(more_ids[i], SRC_DIS);
+			if(servp)
+			{
+				servp->dnsp = dnsp;
+				n_services++;
+			}
+		}
+		dnsp->dis_n_services += n_services;
+		Dis_n_services -= n_services;
+	}
+*/
+	if(!Dis_timer_q)
+		Dis_timer_q = dtq_create();
+	if( !dnsp->dns_dis_conn_id )
+	{
+		if(!strcmp(task,"DIS_DNS"))
+		{
+			register_services(dnsp, ALL, 1);
+			ENABLE_AST
+			return(id_get(&(dnsp->dis_dns_packet), SRC_DIS));
+		}
+		else
+		{
+		
+			dnsp->dns_dis_conn_id = open_dns(dnsid, recv_dns_dis_rout, error_handler,
+					DIS_DNS_TMOUT_MIN, DIS_DNS_TMOUT_MAX, SRC_DIS );
+			if(dnsp->dns_dis_conn_id == -2)
+				error_handler(0, DIM_FATAL, DIMDNSUNDEF, "DIM_DNS_NODE undefined", -1);
+		}
+	}
+	else
+	{
+		register_services(dnsp, MORE, 0);
+		if(dnsp->dis_service_id)
+		{
+/*
+			dis_update_service(Dis_service_id);
+*/
+			if(!dnsp->updating_service_list)
+			{
+				dtq_start_timer(1, do_update_service_list, dnsp);
+				dnsp->updating_service_list = 1;
+			}
+		}
+	}
+	ENABLE_AST
+	}
+	return(1);
+}
+
+
+/* asynchrounous reception of requests */
+/*
+	Called by DNA package.
+	A request has arrived, queue it to process later - dis_ins_request
+*/
+static void dis_insert_request(int conn_id, DIC_PACKET *dic_packet, int size, int status)
+{
+	register SERVICE *servp;
+	register REQUEST *newp, *reqp;
+	CLIENT *clip, *create_client();
+	REQUEST_PTR *reqpp;
+	int type, new_client = 0, found = 0;
+	int find_release_request();
+	DIS_DNS_CONN *dnsp;
+
+	if(size){}
+	/* status = 1 => new connection, status = -1 => conn. lost */
+	if(!Client_head) 
+	{
+		Client_head = (CLIENT *)malloc(sizeof(CLIENT));
+		dll_init( (DLL *) Client_head );
+	}
+	if(status != 0)
+	{
+		if(status == -1) /* release all requests from conn_id */
+		{
+if(Debug_on)
+{
+dim_print_date_time();
+printf("Received Disconnection %d, from %s@%s\n",
+	   conn_id, 
+	   Net_conns[conn_id].task, Net_conns[conn_id].node);
+}
+			release_conn(conn_id, 0, 0);
+		}
+		else
+		{
+if(Debug_on)
+{
+dim_print_date_time();
+printf("Received Connection %d, from %s@%s\n",
+	   conn_id, 
+	   Net_conns[conn_id].task, Net_conns[conn_id].node);
+}
+		}  
+	} 
+	else 
+	{
+if(Debug_on)
+{
+dim_print_date_time();
+printf("Received Request for %s, from %d  %s@%s\n",
+	   dic_packet->service_name, conn_id, 
+	   Net_conns[conn_id].task, Net_conns[conn_id].node);
+}
+		dic_packet->type = vtohl(dic_packet->type);
+		type = dic_packet->type & 0xFFF;
+		/*
+		if(type == COMMAND) 
+		{
+			Curr_conn_id = conn_id;
+			execute_command(servp, dic_packet);
+			Curr_conn_id = 0;
+			return;
+		}
+		*/
+		if(type == DIM_DELETE) 
+		{
+			find_release_request(conn_id, vtohl(dic_packet->service_id));
+			return;
+		}
+		if(!(servp = find_service(dic_packet->service_name)))
+		{
+			release_conn(conn_id, 0, 0);
+			return;
+		}
+		newp = (REQUEST *)/*my_*/malloc(sizeof(REQUEST));
+		newp->service_ptr = servp;
+		newp->service_id = vtohl(dic_packet->service_id);
+		newp->type = dic_packet->type;
+		newp->timeout = vtohl(dic_packet->timeout);
+		newp->format = vtohl(dic_packet->format);
+		newp->conn_id = conn_id;
+		newp->first_time = 1;
+		newp->delay_delete = 0;
+		newp->to_delete = 0;
+		newp->timr_ent = 0;
+		newp->req_id = id_get((void *)newp, SRC_DIS);
+		newp->reqpp = 0;
+		if(type == ONCE_ONLY) 
+		{
+			execute_service(newp->req_id);
+			id_free(newp->req_id, SRC_DIS);
+			free(newp);
+			clip = create_client(conn_id, servp, &new_client);
+			return;
+		}
+		if(type == COMMAND) 
+		{
+			Curr_conn_id = conn_id;
+			execute_command(servp, dic_packet);
+			Curr_conn_id = 0;
+			reqp = servp->request_head;
+			while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+				(DLL *) reqp)) ) 
+			{
+				if(reqp->conn_id == conn_id)
+				{
+					id_free(newp->req_id, SRC_DIS);
+					free(newp);
+					found = 1;
+					break;
+				}
+			}
+			if(!found)
+				dll_insert_queue( (DLL *) servp->request_head, (DLL *) newp );
+			clip = create_client(conn_id, servp, &new_client);
+			return;
+		}
+		dll_insert_queue( (DLL *) servp->request_head, (DLL *) newp );
+		clip = create_client(conn_id, servp, &new_client);
+		reqpp = (REQUEST_PTR *)malloc(sizeof(REQUEST_PTR));
+		reqpp->reqp = newp;
+		dll_insert_queue( (DLL *) clip->requestp_head, (DLL *) reqpp );
+		newp->reqpp = reqpp;
+		if((type != MONIT_ONLY) && (type != UPDATE))
+		{
+			execute_service(newp->req_id);
+		}
+		if((type != MONIT_ONLY) && (type != MONIT_FIRST))
+		{
+			if(newp->timeout != 0)
+			{
+				newp->timr_ent = dtq_add_entry( Dis_timer_q,
+							newp->timeout, 
+							execute_service,
+							newp->req_id );
+			}
+		}
+		if(new_client)
+		{
+			Last_client = conn_id;
+			dnsp = clip->dnsp;
+			if(dnsp->dis_client_id)
+			  dis_update_service(dnsp->dis_client_id);
+		}
+	}
+}
+
+/* A timeout for a timed or monitored service occured, serve it. */
+
+int execute_service( int req_id )
+{
+	int *buffp, size;
+	register REQUEST *reqp;
+	register SERVICE *servp;
+	char str[80], def[MAX_NAME];
+	int conn_id, last_conn_id;
+	int *pkt_buffer, header_size, aux;
+#ifdef WIN32
+	struct timeb timebuf;
+#else
+	struct timeval tv;
+	struct timezone *tz;
+#endif
+	FORMAT_STR format_data_cp[MAX_NAME/4];
+
+	reqp = (REQUEST *)id_get_ptr(req_id, SRC_DIS);
+	if(!reqp)
+		return(0);
+	if(reqp->to_delete)
+		return(0);
+	reqp->delay_delete++;
+	servp = reqp->service_ptr;
+	conn_id = reqp->conn_id;
+
+if(Debug_on)
+{
+dim_print_date_time();
+printf("Updating %s for %s@%s (req_id = %d)\n",
+	   servp->name, 
+	   Net_conns[conn_id].task, Net_conns[conn_id].node, 
+	   reqp->req_id);
+}
+
+	last_conn_id = Curr_conn_id;
+	Curr_conn_id = conn_id;
+	if(servp->type == COMMAND)
+	{
+		sprintf(str,"This is a COMMAND Service");
+		buffp = (int *)str;
+		size = 26;
+		sprintf(def,"c:26");
+	}
+	else if( servp->user_routine != 0 ) 
+	{
+		if(reqp->first_time)
+		{
+			Last_n_clients = dis_get_n_clients(servp->id);
+		}
+		(servp->user_routine)( &servp->tag, &buffp, &size,
+					&reqp->first_time );
+		reqp->first_time = 0;
+		
+	} 
+	else 
+	{
+		buffp = servp->address;
+		size = servp->size;
+	}
+	Curr_conn_id = last_conn_id;
+/* send even if no data but not if negative */
+	if( size  < 0)
+	{
+		reqp->delay_delete--;
+		return(0);
+	}
+	if( DIS_STAMPED_HEADER + size > Dis_packet_size ) 
+	{
+		if( Dis_packet_size )
+			free( Dis_packet );
+		Dis_packet = (DIS_STAMPED_PACKET *)malloc((size_t)(DIS_STAMPED_HEADER + size));
+		if(!Dis_packet)
+		{
+			reqp->delay_delete--;
+			return(0);
+		}
+		Dis_packet_size = DIS_STAMPED_HEADER + size;
+	}
+	Dis_packet->service_id = htovl(reqp->service_id);
+	if((reqp->type & 0xFF000) == STAMPED)
+	{
+		pkt_buffer = ((DIS_STAMPED_PACKET *)Dis_packet)->buffer;
+		header_size = DIS_STAMPED_HEADER;
+		if(!servp->user_secs)
+		{
+#ifdef WIN32
+			ftime(&timebuf);
+			aux = timebuf.millitm;
+			Dis_packet->time_stamp[0] = htovl(aux);
+			Dis_packet->time_stamp[1] = htovl((int)timebuf.time);
+#else
+			tz = 0;
+		        gettimeofday(&tv, tz);
+			aux = (int)tv.tv_usec / 1000;
+			Dis_packet->time_stamp[0] = htovl(aux);
+			Dis_packet->time_stamp[1] = htovl((int)tv.tv_sec);
+#endif
+		}
+		else
+		{
+			aux = /*0xc0de0000 |*/ servp->user_millisecs;
+			Dis_packet->time_stamp[0] = htovl(aux);
+			Dis_packet->time_stamp[1] = htovl(servp->user_secs);
+		}
+		Dis_packet->reserved[0] = (int)htovl(0xc0dec0de);
+		Dis_packet->quality = htovl(servp->quality);
+	}
+	else
+	{
+		pkt_buffer = ((DIS_PACKET *)Dis_packet)->buffer;
+		header_size = DIS_HEADER;
+	}
+	memcpy(format_data_cp, servp->format_data, sizeof(format_data_cp));
+	size = copy_swap_buffer_out(reqp->format, format_data_cp, 
+		pkt_buffer,
+		buffp, size);
+	Dis_packet->size = htovl(header_size + size);
+	if( !dna_write_nowait(conn_id, Dis_packet, header_size + size) ) 
+	{
+		if(Net_conns[conn_id].write_timedout)
+		{
+			dim_print_date_time();
+			if(reqp->delay_delete > 1)
+			{
+				printf(" Server (Explicitly) Updating Service %s: Couldn't write to Conn %3d : Client %s@%s\n",
+					servp->name, conn_id,
+					Net_conns[conn_id].task, Net_conns[conn_id].node);
+			}
+			else
+			{
+				printf(" Server Updating Service %s: Couldn't write to Conn %3d : Client %s@%s\n",
+					servp->name, conn_id,
+					Net_conns[conn_id].task, Net_conns[conn_id].node);
+			}
+			fflush(stdout);
+		}
+		if(reqp->delay_delete > 1)
+		{
+			reqp->to_delete = 1;
+		}
+		else
+		{
+			reqp->delay_delete = 0;
+			release_conn(conn_id, 1, 0);
+		}
+	}
+/*
+	else
+	{
+		if((reqp->type & 0xFFF) == MONITORED)
+		{
+			if(reqp->timr_ent)
+				dtq_clear_entry(reqp->timr_ent);
+		}
+	}
+*/
+	if(reqp->delay_delete > 0)
+		reqp->delay_delete--;
+	return(1);
+}
+
+void remove_service( int req_id )
+{
+	register REQUEST *reqp;
+	static DIS_PACKET *dis_packet;
+	static int packet_size = 0;
+	int service_id;
+
+	reqp = (REQUEST *)id_get_ptr(req_id, SRC_DIS);
+	if(!reqp)
+		return;
+	if( !packet_size ) {
+		dis_packet = (DIS_PACKET *)malloc((size_t)DIS_HEADER);
+		packet_size = DIS_HEADER;
+	}
+	service_id = (int)((unsigned)reqp->service_id | 0x80000000);
+	dis_packet->service_id = htovl(service_id);
+	dis_packet->size = htovl(DIS_HEADER);
+/*
+	if( !dna_write_nowait(reqp->conn_id, dis_packet, DIS_HEADER) ) 
+Has to be dna_write otherwise the client gets the message much before the DNS
+*/
+	if( !dna_write(reqp->conn_id, dis_packet, DIS_HEADER) ) 
+	{
+		dim_print_date_time();
+		printf(" Server Removing Service: Couldn't write to Conn %3d : Client %s@%s\n",
+			reqp->conn_id, Net_conns[reqp->conn_id].task, Net_conns[reqp->conn_id].node);
+		fflush(stdout);
+		release_conn(reqp->conn_id, 0, 0);
+	}
+}
+
+void execute_command(SERVICE *servp, DIC_PACKET *packet)
+{
+	int size;
+	int format;
+	FORMAT_STR format_data_cp[MAX_NAME/4], *formatp;
+	static int *buffer;
+	static int buffer_size = 0;
+	int add_size;
+
+	size = vtohl(packet->size) - DIC_HEADER;
+	add_size = size + (size/2);
+	if(!buffer_size)
+	{
+		buffer = (int *)malloc((size_t)add_size);
+		buffer_size = add_size;
+	} 
+	else 
+	{
+		if( add_size > buffer_size ) 
+		{
+			free(buffer);
+			buffer = (int *)malloc((size_t)add_size);
+			buffer_size = add_size;
+		}
+	}
+
+	dis_set_timestamp(servp->id, 0, 0);
+	if(servp->user_routine != 0)
+	{
+		format = vtohl(packet->format);
+		memcpy(format_data_cp, servp->format_data, sizeof(format_data_cp));
+		if((format & 0xF) == ((MY_FORMAT) & 0xF)) 
+		{
+			for(formatp = format_data_cp; formatp->par_bytes; formatp++)
+			{
+				if(formatp->flags & IT_IS_FLOAT)
+					formatp->flags |= ((short)format & (short)0xf0);
+				formatp->flags &= (short)0xFFF0;	/* NOSWAP */
+			}
+		}
+		else
+		{
+			for(formatp = format_data_cp; formatp->par_bytes; formatp++)
+			{
+				if(formatp->flags & IT_IS_FLOAT)
+					formatp->flags |= ((short)format & (short)0xf0);
+			}
+		}
+		size = copy_swap_buffer_in(format_data_cp, 
+						 buffer, 
+						 packet->buffer, size);
+		(servp->user_routine)(&servp->tag, buffer, &size);
+	}
+}
+
+void dis_report_service(char *serv_name)
+{
+	register SERVICE *servp;
+	register REQUEST *reqp;
+	int to_delete = 0, more;
+
+	
+	DISABLE_AST
+	servp = find_service(serv_name);
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) )
+	{
+		if((reqp->type & 0xFFF) != TIMED_ONLY)
+		{
+			execute_service(reqp->req_id);
+			if(reqp->to_delete)
+				to_delete = 1;
+		}
+	}
+	if(to_delete)
+	{
+		do
+		{
+			more = 0;
+			reqp = servp->request_head;
+			while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+				(DLL *) reqp)) )
+			{
+				if(reqp->to_delete)
+				{
+					more = 1;
+					release_conn(reqp->conn_id, 1, 0);
+					break;
+				}
+			}
+		}while(more);
+	}
+	ENABLE_AST
+}
+
+int dis_update_service(unsigned service_id)
+{
+int do_update_service();
+
+	return(do_update_service(service_id,0));
+}
+
+int dis_selective_update_service(unsigned service_id, int *client_ids)
+{
+int do_update_service();
+
+	return(do_update_service(service_id, client_ids));
+}
+
+int check_client(REQUEST *reqp, int *client_ids)
+{
+	if(!client_ids)
+		return(1);
+	while(*client_ids)
+	{
+		if(reqp->conn_id == *client_ids)
+		{
+			return(1);
+		}
+		client_ids++;
+	}
+	return(0);
+}
+
+int do_update_service(unsigned service_id, int *client_ids)
+{
+	register REQUEST *reqp;
+	register SERVICE *servp;
+	REQUEST_PTR *reqpp;
+	CLIENT *clip;
+	register int found = 0;
+	int to_delete = 0, more, conn_id;
+	char str[128];
+	int release_request();
+	int n_clients = 0;
+
+	DISABLE_AST
+	if(Serving == -1)
+	{
+		ENABLE_AST
+		return(found);
+	}
+	if(!service_id)
+	{
+		sprintf(str, "Update Service - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str, -1);
+		ENABLE_AST
+		return(found);
+	}
+	servp = (SERVICE *)id_get_ptr(service_id, SRC_DIS);
+	if(!servp)
+	{
+		ENABLE_AST
+		return(found);
+	}
+	if(servp->id != (int)service_id)
+	{
+		ENABLE_AST
+		return(found);
+	}
+	servp->delay_delete = 1;
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) ) 
+	{
+/*
+if(Debug_on)
+{
+dim_print_date_time();
+printf("Updating %s (id = %d, ptr = %08lX) for %s@%s (req_id = %d, req_ptr = %08lX)\n",
+	   servp->name, (int)service_id, (unsigned dim_long)servp, 
+	   Net_conns[reqp->conn_id].task, Net_conns[reqp->conn_id].node, reqp->req_id, (unsigned dim_long)reqp);
+}
+*/
+		if(check_client(reqp, client_ids))
+		{
+			reqp->delay_delete = 1;
+			n_clients++;
+		}
+	}
+	ENABLE_AST
+	{
+	DISABLE_AST
+	Last_n_clients = n_clients;
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) ) 
+	{
+		if(reqp->delay_delete && ((reqp->type & 0xFFF) != COMMAND))
+		{
+		if(check_client(reqp, client_ids))
+		{
+			if( (reqp->type & 0xFFF) != TIMED_ONLY ) 
+			{
+/*
+				DISABLE_AST
+*/
+				execute_service(reqp->req_id);
+				found++;
+				ENABLE_AST
+				{
+				DISABLE_AST
+				}
+			}
+		}
+		}
+	}
+	ENABLE_AST
+	}
+	{
+	DISABLE_AST
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) ) 
+	{
+		if(check_client(reqp, client_ids))
+		{
+			reqp->delay_delete = 0;
+			if(reqp->to_delete)
+				to_delete = 1;
+		}
+	}
+	ENABLE_AST
+	}
+	if(to_delete)
+	{
+		DISABLE_AST
+		do
+		{
+			more = 0;
+			reqp = servp->request_head;
+			while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+				(DLL *) reqp)) ) 
+			{
+				if(reqp->to_delete & 0x1)
+				{
+					more = 1;
+					reqp->to_delete = 0;
+					release_conn(reqp->conn_id, 1, 0);
+					break;
+				}
+				else if(reqp->to_delete & 0x2)
+				{
+					more = 1;
+					reqp->to_delete = 0;
+					reqpp = reqp->reqpp;
+					conn_id = reqp->conn_id;
+					release_request(reqp, reqpp, 1);
+					clip = find_client(conn_id);
+					if(clip)
+					{
+						if( dll_empty((DLL *)clip->requestp_head) ) 
+						{
+							release_conn( conn_id, 0, 0);
+						}
+					}
+					break;
+				}
+			}
+		}while(more);
+		ENABLE_AST
+	}
+	{
+	DISABLE_AST
+	servp->delay_delete = 0;
+	if(servp->to_delete)
+	{
+		dis_remove_service(servp->id);
+	}
+	ENABLE_AST
+	}
+
+	return(found);
+}
+
+int dis_get_n_clients(unsigned service_id)
+{
+	register REQUEST *reqp;
+	register SERVICE *servp;
+	register int found = 0;
+	char str[128];
+
+	DISABLE_AST
+	if(!service_id)
+	{
+		sprintf(str, "Service Has Clients- Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str, -1);
+		ENABLE_AST
+		return(found);
+	}
+	servp = (SERVICE *)id_get_ptr(service_id, SRC_DIS);
+	if(!servp)
+	{
+		ENABLE_AST
+		return(found);
+	}
+	if(servp->id != (int)service_id)
+	{
+		ENABLE_AST
+		return(found);
+	}
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) ) 
+	{
+		found++;
+	}
+	ENABLE_AST
+	return found;
+}
+
+int dis_get_timeout(unsigned service_id, int client_id)
+{
+	register REQUEST *reqp;
+	register SERVICE *servp;
+	char str[128];
+
+	if(!service_id)
+	{
+		sprintf(str,"Get Timeout - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str, -1);
+		return(-1);
+	}
+	servp = (SERVICE *)id_get_ptr(service_id, SRC_DIS);
+	if(!servp)
+	{
+		return(-1);
+	}
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) ) 
+	{
+		if(reqp->conn_id == client_id)
+			return(reqp->timeout);
+	}
+	return(-1);
+}
+
+void dis_set_quality( unsigned serv_id, int quality )
+{
+	register SERVICE *servp;
+	char str[128];
+
+	DISABLE_AST
+	if(!serv_id)
+	{
+		sprintf(str,"Set Quality - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str, -1);
+	    ENABLE_AST
+		return;
+	}
+	servp = (SERVICE *)id_get_ptr(serv_id, SRC_DIS);
+	if(!servp)
+	{
+	    ENABLE_AST
+		return;
+	}
+	if(servp->id != (int)serv_id)
+	{
+	    ENABLE_AST
+		return;
+	}
+	servp->quality = quality;
+	ENABLE_AST
+}
+
+int dis_set_timestamp( unsigned serv_id, int secs, int millisecs )
+{
+	register SERVICE *servp;
+	char str[128];
+#ifdef WIN32
+	struct timeb timebuf;
+#else
+	struct timeval tv;
+	struct timezone *tz;
+#endif
+
+	DISABLE_AST
+	if(!serv_id)
+	{
+		sprintf(str,"Set Timestamp - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str, -1);
+	    ENABLE_AST
+		return(0);
+	}
+	servp = (SERVICE *)id_get_ptr(serv_id, SRC_DIS);
+	if(!servp)
+	{
+	    ENABLE_AST
+		return(0);
+	}
+	if(servp->id != (int)serv_id)
+	{
+	    ENABLE_AST
+		return(0);
+	}
+	if(secs == 0)
+	{
+#ifdef WIN32
+			ftime(&timebuf);
+			servp->user_secs = (int)timebuf.time;
+			servp->user_millisecs = timebuf.millitm;
+#else
+			tz = 0;
+		    gettimeofday(&tv, tz);
+			servp->user_secs = (int)tv.tv_sec;
+			servp->user_millisecs = (int)tv.tv_usec / 1000;
+#endif
+	}
+	else
+	{
+		servp->user_secs = secs;
+/*
+		servp->user_millisecs = (millisecs & 0xffff);
+*/
+		servp->user_millisecs = millisecs;
+	}
+	ENABLE_AST
+	return(1);
+}
+
+int dis_get_timestamp( unsigned serv_id, int *secs, int *millisecs )
+{
+	register SERVICE *servp;
+	char str[128];
+
+	DISABLE_AST
+	*secs = 0;
+	*millisecs = 0;
+	if(!serv_id)
+	{
+		sprintf(str,"Get Timestamp - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str, -1);
+	    ENABLE_AST
+		return(0);
+	}
+	servp = (SERVICE *)id_get_ptr(serv_id, SRC_DIS);
+	if(!servp)
+	{
+	    ENABLE_AST
+		return(0);
+	}
+	if(servp->id != (int)serv_id)
+	{
+	    ENABLE_AST
+		return(0);
+	}
+	if(servp->user_secs)
+	{
+		*secs = servp->user_secs;
+		*millisecs = servp->user_millisecs;
+	}
+/*
+	else
+	{
+		*secs = 0;
+		*millisecs = 0;
+	}
+*/
+	ENABLE_AST
+	return(1);
+}
+
+void dis_send_service(unsigned service_id, int *buffer, int size)
+{
+	register REQUEST *reqp, *prevp;
+	register SERVICE *servp;
+	static DIS_PACKET *dis_packet;
+	static int packet_size = 0;
+	int conn_id;
+	char str[128];
+
+	DISABLE_AST
+	if( !service_id ) {
+		sprintf(str,"Send Service - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str, -1);
+		ENABLE_AST
+		return;
+	}
+	servp = (SERVICE *)id_get_ptr(service_id, SRC_DIS);
+	if(!servp)
+	{
+		ENABLE_AST
+		return;
+	}
+	if(!packet_size)
+	{
+		dis_packet = (DIS_PACKET *)malloc((size_t)(DIS_HEADER+size));
+		packet_size = DIS_HEADER + size;
+	} 
+	else 
+	{
+		if( DIS_HEADER+size > packet_size ) 
+		{
+			free(dis_packet);
+			dis_packet = (DIS_PACKET *)malloc((size_t)(DIS_HEADER+size));
+			packet_size = DIS_HEADER+size;
+		}
+	}
+	prevp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) prevp)) ) 
+	{
+		dis_packet->service_id = htovl(reqp->service_id);
+		memcpy(dis_packet->buffer, buffer, (size_t)size);
+		dis_packet->size = htovl(DIS_HEADER + size);
+
+		conn_id = reqp->conn_id;
+		if( !dna_write_nowait(conn_id, dis_packet, size + DIS_HEADER) )
+		{
+			dim_print_date_time();
+			printf(" Server Sending Service: Couldn't write to Conn %3d : Client %s@%s\n",conn_id,
+				Net_conns[conn_id].task, Net_conns[conn_id].node);
+			fflush(stdout);
+			release_conn(conn_id, 1, 0);
+		}
+		else
+			prevp = reqp;
+	}
+	ENABLE_AST
+}
+
+int dis_remove_service(unsigned service_id)
+{
+	register REQUEST *reqp, *auxp;
+	register SERVICE *servp;
+	REQUEST_PTR *reqpp;
+	int found = 0;
+	char str[128];
+	int release_request();
+	int dis_hash_service_remove();
+	DIS_DNS_CONN *dnsp;
+	int n_services;
+	void do_dis_stop_serving_dns(DIS_DNS_CONN *);
+
+	DISABLE_AST
+	if(!service_id)
+	{
+		sprintf(str,"Remove Service - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str, -1);
+		ENABLE_AST
+		return(found);
+	}
+	servp = (SERVICE *)id_get_ptr(service_id, SRC_DIS);
+	if(!servp)
+	{
+		ENABLE_AST
+		return(found);
+	}
+	if(servp->id != (int)service_id)
+	{
+		ENABLE_AST
+		return(found);
+	}
+if(Debug_on)
+{
+dim_print_date_time();
+ printf("Removing service %s, delay_delete = %d\n",
+	servp->name, servp->delay_delete);
+}
+	if(servp->delay_delete)
+	{
+		servp->to_delete = 1;
+		ENABLE_AST
+		return(found);
+	}
+	/* remove from name server */
+	
+	dnsp = servp->dnsp;
+	unregister_service(dnsp, servp);
+	/* Release client requests and remove from actual clients */
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) )
+	{
+		remove_service(reqp->req_id);
+		auxp = reqp->prev;
+		reqpp = (REQUEST_PTR *) reqp->reqpp;
+		release_request(reqp, reqpp, 1);
+		found = 1;
+		reqp = auxp;
+	}
+	if(servp->id == (int)dnsp->dis_service_id)
+	  dnsp->dis_service_id = 0;
+	if(servp->id == (int)dnsp->dis_client_id)
+	  dnsp->dis_client_id = 0;
+	dis_hash_service_remove(servp);
+	id_free(servp->id, SRC_DIS);
+	free(servp->request_head);
+	free(servp);
+/*
+	if(dnsp != Default_DNS)
+	{
+		dnsp->dis_n_services--;
+		n_services = dnsp->dis_n_services;
+	}
+	else
+	{
+		Dis_n_services--;
+		n_services = Dis_n_services;
+	}
+*/
+	dnsp->dis_n_services--;
+	n_services = dnsp->dis_n_services;
+
+	if(dnsp->serving)
+	{
+		if(n_services == 5)
+		{
+			if(Dis_conn_id)
+			{
+				dna_close(Dis_conn_id);
+				Dis_conn_id = 0;
+			}
+			ENABLE_AST
+/*
+			dis_stop_serving();
+*/
+			do_dis_stop_serving_dns(dnsp);
+		}
+		else
+		{
+			ENABLE_AST
+		}
+	}
+	else
+	{
+		ENABLE_AST
+	}
+	return(found);
+}
+
+void do_dis_stop_serving_dns(DIS_DNS_CONN *dnsp)
+{
+register SERVICE *servp, *prevp;
+void dim_stop_threads(void);
+int dis_no_dns();
+int hash_index, old_index;
+extern int close_dns(dim_long, int);
+CLIENT *clip, *cprevp;
+
+	dnsp->serving = 0;
+	dis_init();
+/*
+	dis_hash_service_init();
+	prevp = 0;
+	if(Dis_conn_id)
+	{
+		dna_close(Dis_conn_id);
+		Dis_conn_id = 0;
+	}
+*/
+	{
+	DISABLE_AST
+	if(dnsp->dns_timr_ent)
+	{
+		dtq_rem_entry(Dis_timer_q, dnsp->dns_timr_ent);
+		dnsp->dns_timr_ent = NULL;
+	}
+	if(dnsp->dns_dis_conn_id)
+	{
+		dna_close(dnsp->dns_dis_conn_id);
+		dnsp->dns_dis_conn_id = 0;
+	}
+	ENABLE_AST
+	}
+	{
+	DISABLE_AST
+	prevp = 0;
+	hash_index = -1;
+	old_index = -1;
+	while( (servp = dis_hash_service_get_next(&hash_index, prevp, 0)) )
+	{
+		if(servp->dnsp == dnsp)
+		{
+			ENABLE_AST
+			dis_remove_service((unsigned)servp->id);
+			{
+			DISABLE_AST
+			if(old_index != hash_index)
+				prevp = 0;
+			}
+		}
+		else
+		{
+			prevp = servp;
+			old_index = hash_index;
+		}
+	}
+	ENABLE_AST
+	}
+	{
+	DISABLE_AST
+	cprevp = Client_head;
+	while( (clip = (CLIENT *)dll_get_next( (DLL *) Client_head, 
+			(DLL*) cprevp)) )
+	{
+		if(clip->dnsp != dnsp)
+		{
+			cprevp = clip;
+			continue;
+		}
+		if( dll_empty((DLL *)clip->requestp_head) ) 
+		{
+if(Debug_on)
+{
+dim_print_date_time();
+printf("Releasing conn %d, to %s@%s\n",
+	   clip->conn_id, 
+	   Net_conns[clip->conn_id].task, Net_conns[clip->conn_id].node);
+}
+			release_conn( clip->conn_id, 0, 0);
+		}
+		else
+		{
+			cprevp = clip;
+		}
+	}
+	ENABLE_AST
+	}
+if(Debug_on)
+{
+dim_print_date_time();
+printf("Cleaning dnsp variables\n");
+}
+
+	dnsp->dis_first_time = 1;
+	dnsp->dis_n_services = 0;
+	dnsp->dis_dns_packet.size = 0;
+	dnsp->dis_dns_packet.src_type = 0;
+	close_dns(dnsp->dnsid, SRC_DIS);
+/*
+	if(dnsp != Default_DNS)
+	{
+		dll_remove(dnsp);
+		free(dnsp);
+	}
+*/
+/*
+	if(dll_empty(DNS_head))
+*/
+	if(dis_no_dns())
+		dis_stop_serving();
+}
+
+void dis_stop_serving_dns(dim_long dnsid)
+{
+	DIS_DNS_CONN *dnsp, *dis_find_dns();
+
+	dnsp = dis_find_dns(dnsid);
+	do_dis_stop_serving_dns(dnsp);
+}
+
+void dis_stop_serving()
+{
+register SERVICE *servp, *prevp;
+void dim_stop_threads(void);
+int dis_find_client_conns();
+int hash_index;
+
+/*
+	if(Serving != -1)
+*/
+	Serving = 0;
+	dis_init();
+	if(Dis_conn_id)
+	{
+		dna_close(Dis_conn_id);
+		Dis_conn_id = 0;
+	}
+/*
+	if(Dns_dis_conn_id)
+	{
+		dna_close(Dns_dis_conn_id);
+		Dns_dis_conn_id = 0;
+	}
+*/
+	{
+	DISABLE_AST
+	prevp = 0;
+	hash_index = -1;
+	while( (servp = dis_hash_service_get_next(&hash_index, prevp, 0)) )
+	{
+		ENABLE_AST
+		dis_remove_service((unsigned)servp->id);
+		{
+		DISABLE_AST
+		prevp = 0;
+		}
+	}
+	ENABLE_AST
+	}
+/*
+	if(Dis_conn_id)
+		dna_close(Dis_conn_id);
+	if(Dns_dis_conn_id)
+		dna_close(Dns_dis_conn_id);
+	Dns_dis_conn_id = 0;
+*/
+	Dis_first_time = 1;
+/*
+	if(Dns_timr_ent)
+	{
+		dtq_rem_entry(Dis_timer_q, Dns_timr_ent);
+		Dns_timr_ent = NULL;
+	}
+*/
+	dtq_delete(Dis_timer_q);
+	Dis_timer_q = 0;
+/*
+	if(Serving != -1)
+*/
+	if(!dis_find_client_conns())
+		dim_stop_threads();
+}
+
+int dis_find_client_conns()
+{
+	int i;
+	int n = 0;
+
+	for( i = 0; i< Curr_N_Conns; i++ )
+	{
+		if(Net_conns[i].channel != 0)
+		{
+			if(Dna_conns[i].read_ast == dis_insert_request)
+			{
+				dna_close(i);
+			}
+			else
+			{
+				n++;
+			}
+		}
+	}
+	return(n);
+}
+
+/* find service by name */
+SERVICE *find_service(char *name)
+{
+	return(dis_hash_service_exists(name));
+}
+
+CLIENT *create_client(int conn_id, SERVICE *servp, int *new_client)
+{
+	CLIENT *clip;
+
+	*new_client = 0;
+	if(!(clip = find_client(conn_id)))
+	{
+		/*
+		dna_set_test_write(conn_id, 15);
+		*/
+		clip = (CLIENT *)malloc(sizeof(CLIENT));
+		clip->conn_id = conn_id;
+		clip->dnsp = servp->dnsp;
+		clip->requestp_head = (REQUEST_PTR *)malloc(sizeof(REQUEST_PTR));
+		dll_init( (DLL *) clip->requestp_head );
+		dll_insert_queue( (DLL *) Client_head, (DLL *) clip );
+		*new_client = 1;
+	}
+	return clip;
+}
+
+CLIENT *find_client(int conn_id)
+{
+	register CLIENT *clip;
+
+	clip = (CLIENT *)
+			dll_search( (DLL *) Client_head, &conn_id, sizeof(conn_id));
+	return(clip);
+}
+
+void release_all_requests(int conn_id, CLIENT *clip)
+{
+	register REQUEST_PTR *reqpp, *auxp;
+	register REQUEST *reqp;
+    int found = 0;
+	int release_request();
+	DIS_DNS_CONN *dnsp = 0;
+
+	DISABLE_AST;
+	if(clip)
+	{
+		reqpp = clip->requestp_head;
+		while( (reqpp = (REQUEST_PTR *) dll_get_next((DLL *)clip->requestp_head,
+			(DLL *) reqpp)) )
+		{
+			auxp = reqpp->prev;
+			reqp = (REQUEST *) reqpp->reqp;
+			release_request(reqp, reqpp, 0);
+			found = 1;
+			reqpp = auxp;
+		}
+		dnsp = clip->dnsp;
+		dll_remove(clip);
+		free(clip->requestp_head);
+		free(clip);
+	}
+	if(found)
+	{
+		Last_client = -conn_id;
+		if(dnsp->dis_client_id)
+		  dis_update_service(dnsp->dis_client_id);
+	}
+	dna_close(conn_id);
+	ENABLE_AST;
+}
+
+CLIENT *check_delay_delete(int conn_id)
+{
+	register REQUEST_PTR *reqpp;
+	register CLIENT *clip;
+	register REQUEST *reqp;
+	int found = 0;
+
+	DISABLE_AST;
+	clip = find_client(conn_id);
+	if(clip)
+	{
+		reqpp = clip->requestp_head;
+		while( (reqpp = (REQUEST_PTR *) dll_get_next((DLL *)clip->requestp_head,
+			(DLL *) reqpp)) )
+		{
+			reqp = (REQUEST *) reqpp->reqp;
+			if(reqp->delay_delete)
+			{
+				reqp->to_delete = 1;
+				found = 1;
+			}
+		}
+	}
+	ENABLE_AST;
+	if(found)
+	{
+		return((CLIENT *)-1);
+	}
+	return(clip);
+}
+
+char *dis_get_error_services()
+{
+	return(dis_get_client_services(Error_conn_id));
+}
+
+char *dis_get_client_services(int conn_id)
+{
+	register REQUEST_PTR *reqpp;
+	register CLIENT *clip;
+	register REQUEST *reqp;
+	register SERVICE *servp;
+
+	int n_services = 0;
+	int max_size;
+	static int curr_allocated_size = 0;
+	static char *service_info_buffer;
+	char *buff_ptr;
+
+
+	if(!conn_id)
+		return((char *)0);
+	{
+	DISABLE_AST;
+	clip = find_client(conn_id);
+	if(clip)
+	{
+		reqpp = clip->requestp_head;
+		while( (reqpp = (REQUEST_PTR *) dll_get_next((DLL *)clip->requestp_head,
+			(DLL *) reqpp)))
+		{
+			n_services++;
+		}
+		if(!n_services)
+		{
+			ENABLE_AST
+			return((char *)0);
+		}
+		max_size = n_services * MAX_NAME;
+		if(!curr_allocated_size)
+		{
+			service_info_buffer = (char *)malloc((size_t)max_size);
+			curr_allocated_size = max_size;
+		}
+		else if (max_size > curr_allocated_size)
+		{
+			free(service_info_buffer);
+			service_info_buffer = (char *)malloc((size_t)max_size);
+			curr_allocated_size = max_size;
+		}
+		service_info_buffer[0] = '\0';
+		buff_ptr = service_info_buffer;
+		reqpp = clip->requestp_head;
+		while( (reqpp = (REQUEST_PTR *) dll_get_next((DLL *)clip->requestp_head,
+			(DLL *) reqpp)) )
+		{
+			reqp = (REQUEST *) reqpp->reqp;
+			servp = reqp->service_ptr;
+			strcat(buff_ptr, servp->name);
+			strcat(buff_ptr, "\n");
+			buff_ptr += (int)strlen(buff_ptr);
+		}
+	}
+	else
+	{
+		ENABLE_AST
+		return((char *)0);
+	}
+	ENABLE_AST;
+	}
+/*
+	dim_print_date_time();
+	dna_get_node_task(conn_id, node, task);
+	printf("Client %s@%s uses services: \n", task, node);
+	printf("%s\n",service_info_buffer);
+*/
+	return(service_info_buffer);
+}
+
+int find_release_request(int conn_id, int service_id)
+{
+	register REQUEST_PTR *reqpp, *auxp;
+	register CLIENT *clip;
+	register REQUEST *reqp;
+	int release_request();
+
+	DISABLE_AST
+	clip = find_client(conn_id);
+	if(clip)
+	{
+		reqpp = clip->requestp_head;
+		while( (reqpp = (REQUEST_PTR *) dll_get_next((DLL *)clip->requestp_head,
+			(DLL *) reqpp)) )
+		{
+			reqp = (REQUEST *) reqpp->reqp;
+			if(reqp->service_id == service_id)
+			{
+				if(reqp->delay_delete)
+				{
+					reqp->to_delete += 0x2;
+				}
+				else
+				{
+					auxp = reqpp->prev;
+					release_request(reqp, reqpp, 0);
+					reqpp = auxp;
+				}
+			}
+		}
+/* The client should close the connection (there may be commands)
+		if( dll_empty((DLL *)clip->requestp_head) ) 
+		{
+			release_conn( conn_id, 0, 0 );
+		}
+*/
+	}
+	ENABLE_AST
+	return(1);
+}
+
+int release_request(REQUEST *reqp, REQUEST_PTR *reqpp, int remove)
+{
+	int conn_id;
+	CLIENT *clip;
+
+	DISABLE_AST
+	conn_id = reqp->conn_id;
+	if(reqpp)
+		dll_remove((DLL *)reqpp);
+	dll_remove((DLL *)reqp);
+	if(reqp->timr_ent)
+		dtq_rem_entry(Dis_timer_q, reqp->timr_ent);
+	id_free(reqp->req_id, SRC_DIS);
+	free(reqp);
+	if(reqpp)
+		free(reqpp);
+/* Would do it too early, the client will disconnect anyway
+*/
+	if((remove) && (Serving == 0))
+	{
+		clip = find_client(conn_id);
+		if(clip)
+		{
+			if( dll_empty((DLL *)clip->requestp_head) ) 
+			{
+				release_conn( conn_id, 0, 0);
+			}
+		}
+	}
+
+	ENABLE_AST
+	return(1);
+}
+
+static int release_conn(int conn_id, int print_flg, int dns_flag)
+{
+	static int releasing = 0;
+	CLIENT *clip;
+	int do_exit_handler();
+
+	DISABLE_AST
+	if(print_flg){}
+	if(dns_flag)
+	{
+		recv_dns_dis_rout( conn_id, 0, 0, STA_DISC );
+		ENABLE_AST
+		return(0);
+	}
+#ifdef VMS
+	if(print_flg)
+	{
+		dim_print_date_time();
+		dna_get_node_task(conn_id, node, task);
+		printf(" Couldn't write to client %s@%s, releasing connection %d\n",
+			task, node, conn_id);
+		fflush(stdout);
+	}
+#endif
+	clip = check_delay_delete(conn_id);
+	if(clip != (CLIENT *)-1)
+	{
+		if( Client_exit_user_routine != 0 ) 
+		{
+			releasing++;
+			Curr_conn_id = conn_id;
+			do_exit_handler(conn_id);
+			releasing--;
+		}
+		if(!releasing)
+		{
+			release_all_requests(conn_id, clip);
+		}
+	}
+	ENABLE_AST
+	return(1);
+}
+
+typedef struct cmnds{
+	struct cmnds *next;
+	dim_long tag;
+	int size;
+	int buffer[1];
+} DIS_CMND;
+
+static DIS_CMND *Cmnds_head = (DIS_CMND *)0;
+
+void std_cmnd_handler(dim_long *tag, int *cmnd_buff, int *size)
+{
+	register DIS_CMND *new_cmnd;
+/* queue the command */
+
+	if(!Cmnds_head)
+	{
+		Cmnds_head = (DIS_CMND *)malloc(sizeof(DIS_CMND));
+		sll_init((SLL *) Cmnds_head);
+	}
+	new_cmnd = (DIS_CMND *)malloc((size_t)((*size)+12));
+	new_cmnd->next = 0;
+	new_cmnd->tag = *tag;
+	new_cmnd->size = *size;
+	memcpy(new_cmnd->buffer, cmnd_buff, (size_t)*size);
+	sll_insert_queue((SLL *) Cmnds_head, (SLL *) new_cmnd);
+}
+
+int dis_get_next_cmnd(dim_long *tag, int *buffer, int *size)
+{
+	register DIS_CMND *cmndp;
+	register int ret_val = -1;
+
+	DISABLE_AST
+	if(!Cmnds_head)
+	{
+		Cmnds_head = (DIS_CMND *)malloc(sizeof(DIS_CMND));
+		sll_init((SLL *) Cmnds_head);
+	}
+	if(*size == 0)
+	{
+		if( (cmndp = (DIS_CMND *) sll_get_head((SLL *) Cmnds_head)))
+		{
+			if(cmndp->size > 0)
+			{
+				*size = cmndp->size;
+				*tag = cmndp->tag;
+				ENABLE_AST
+				return(-1);
+			}
+		}
+	}
+	if( (cmndp = (DIS_CMND *) sll_remove_head((SLL *) Cmnds_head)) )
+	{
+		if (*size >= cmndp->size)
+		{
+			*size = cmndp->size;
+			ret_val = 1;
+		}
+		memcpy(buffer, cmndp->buffer, (size_t)*size);
+		*tag = cmndp->tag;
+		free(cmndp);
+		ENABLE_AST
+		return(ret_val);
+	}
+	ENABLE_AST
+	return(0);
+}
+
+int dis_get_conn_id()
+{
+	return(Curr_conn_id);
+}
+
+int dis_get_client(char *name)
+{
+	int ret = 0;
+	char node[MAX_NODE_NAME], task[MAX_TASK_NAME];
+
+	DISABLE_AST
+
+	if(Curr_conn_id)
+	{
+		dna_get_node_task(Curr_conn_id, node, task);
+		strcpy(name,task);
+		strcat(name,"@");
+		strcat(name,node);
+		ret = Curr_conn_id;
+	}
+	ENABLE_AST
+	return(ret);
+}
+
+#ifdef VMS
+dis_convert_str(c_str, for_str)
+char *c_str;
+struct dsc$descriptor_s *for_str;
+{
+	int i;
+
+	strcpy(for_str->dsc$a_pointer, c_str);
+	for(i = (int)strlen(c_str); i< for_str->dsc$w_length; i++)
+		for_str->dsc$a_pointer[i] = ' ';
+}
+#endif
+
+void client_info(dim_long *tag, int **bufp, int *size, int *first_time)
+{
+	register CLIENT *clip;
+	int curr_conns[MAX_CONNS];
+	int i, index, max_size;
+	static int curr_allocated_size = 0;
+	static char *dns_info_buffer;
+	register char *dns_client_info;
+	char node[MAX_NODE_NAME], task[MAX_TASK_NAME];
+	DIS_DNS_CONN *dnsp = (DIS_DNS_CONN *)*tag;
+
+	max_size = sizeof(DNS_CLIENT_INFO);
+	if(!curr_allocated_size)
+	{
+		dns_info_buffer = malloc((size_t)max_size);
+		curr_allocated_size = max_size;
+	}
+	dns_client_info = dns_info_buffer;
+	dns_client_info[0] = '\0';
+	index = 0;
+	if(*first_time)
+	{
+		clip = Client_head;
+		while( (clip = (CLIENT *)dll_get_next( (DLL *) Client_head, 
+			(DLL*) clip)) )
+		{
+			if(clip->dnsp != dnsp)
+				continue;
+			curr_conns[index++] = clip->conn_id;
+		}
+		max_size = (index+1)*(int)sizeof(DNS_CLIENT_INFO);
+		if (max_size > curr_allocated_size)
+		{
+			free(dns_info_buffer);
+			dns_info_buffer = malloc((size_t)max_size);
+			curr_allocated_size = max_size;
+		}
+		dns_client_info = dns_info_buffer;
+		dns_client_info[0] = '\0';
+	}
+	else
+	{
+		if(Last_client > 0)
+		{
+			strcat(dns_client_info,"+");
+			curr_conns[index++] = Last_client;
+		}
+		else
+		{
+			strcat(dns_client_info,"-");
+			curr_conns[index++] = -Last_client;
+		}
+	}
+	
+	for(i=0; i<index;i++)
+	{
+		dna_get_node_task(curr_conns[i], node, task);
+		strcat(dns_client_info,task);
+		strcat(dns_client_info,"@");
+		strcat(dns_client_info,node);
+		strcat(dns_client_info,"|");
+	}
+	if(index)
+		dns_client_info[(int)strlen(dns_client_info)-1] = '\0';
+	*bufp = (int *)dns_info_buffer;
+	*size = (int)strlen(dns_info_buffer)+1;
+}
+
+void append_service(char *service_info_buffer, SERVICE *servp)		
+{
+	char name[MAX_NAME], *ptr;
+
+		if(strstr(servp->name,"/RpcIn"))
+		{
+			strcpy(name,servp->name);
+			ptr = (char *)strstr(name,"/RpcIn");
+			*ptr = 0;
+			strcat(service_info_buffer, name);
+			strcat(service_info_buffer, "|");
+			if(servp->def[0])
+			{
+				strcat(service_info_buffer, servp->def);
+			}
+			strcat(name,"/RpcOut");
+			if( (servp = find_service(name)) )
+			{
+				strcat(service_info_buffer, ",");
+				if(servp->def[0])
+				{
+					strcat(service_info_buffer, servp->def);
+				}
+			}
+			strcat(service_info_buffer, "|RPC");
+			strcat(service_info_buffer, "\n");
+		}
+		else if(strstr(servp->name,"/RpcOut"))
+		{
+/*
+			if(servp->def[0])
+			{
+				strcat(service_info_buffer, servp->def);
+			}
+			strcat(service_info_buffer, "|RPC");
+			strcat(service_info_buffer, "\n");
+
+*/
+		}
+		else
+		{
+			strcat(service_info_buffer, servp->name);
+			strcat(service_info_buffer, "|");
+			if(servp->def[0])
+			{
+				strcat(service_info_buffer, servp->def);
+			}
+			strcat(service_info_buffer, "|");
+			if(servp->type == COMMAND)
+			{
+				strcat(service_info_buffer, "CMD");
+			}
+			strcat(service_info_buffer, "\n");
+		}
+}
+
+void service_info(dim_long *tag, int **bufp, int *size, int *first_time)
+{
+	register SERVICE *servp;
+	int max_size, done = 0;
+	static int curr_allocated_size = 0;
+	static char *service_info_buffer;
+	char *buff_ptr;
+	DIS_DNS_CONN *dnsp = (DIS_DNS_CONN *)*tag;
+	int hash_index;
+
+	DISABLE_AST
+	max_size = (dnsp->dis_n_services+10) * (MAX_NAME*2 + 4);
+	if(!curr_allocated_size)
+	{
+		service_info_buffer = (char *)malloc((size_t)max_size);
+		curr_allocated_size = max_size;
+	}
+	else if (max_size > curr_allocated_size)
+	{
+		free(service_info_buffer);
+		service_info_buffer = (char *)malloc((size_t)max_size);
+		curr_allocated_size = max_size;
+	}
+	service_info_buffer[0] = '\0';
+	buff_ptr = service_info_buffer;
+	servp = 0;
+	hash_index = -1;
+	if(*first_time)
+	{
+		while( (servp = dis_hash_service_get_next(&hash_index, servp, 0)) )
+		{
+			if(servp->dnsp != dnsp)
+				continue;
+			if(servp->registered)
+			{
+/*
+				servp->registered = 2;
+*/
+				if((dnsp->updating_service_list) && (Last_n_clients > 1) && 
+					(servp->registered == 1))
+					continue;
+				servp->registered = Last_n_clients+1;
+				append_service(buff_ptr, servp);
+				buff_ptr += (int)strlen(buff_ptr);
+			}
+		}
+	}
+	else
+	{
+		while( (servp = dis_hash_service_get_next(&hash_index, servp, 0)) )
+		{
+			if(servp->dnsp != dnsp)
+				continue;
+/*
+			if(servp->registered == 1)
+*/
+			if(servp->registered == 0)
+			{
+				strcat(buff_ptr, "-");
+				buff_ptr += (int)strlen(buff_ptr);
+				append_service(buff_ptr, servp);
+				buff_ptr += (int)strlen(buff_ptr);
+			}
+			else if(servp->registered < (Last_n_clients+1))
+			{
+				if(!done)
+				{
+					strcat(buff_ptr, "+");
+					buff_ptr += (int)strlen(buff_ptr);
+					done = 1;
+				}
+				append_service(buff_ptr, servp);
+				buff_ptr += (int)strlen(buff_ptr);
+/*
+				servp->registered = 2;
+*/
+				servp->registered++;
+			}
+		}
+	}
+	*bufp = (int *)service_info_buffer;
+	*size = (int)(buff_ptr - service_info_buffer+1);
+	if(*size == 1)
+		*size = -1;
+	ENABLE_AST
+}
+	
+static void add_exit_handler_item(int conn_id, int tag)
+{
+	EXIT_H *newp;
+
+	DISABLE_AST
+	if(!Exit_h_head) 
+	{
+		Exit_h_head = (EXIT_H *)malloc(sizeof(EXIT_H));
+		sll_init( (SLL *) Exit_h_head );
+	}
+	if( (newp = (EXIT_H *)sll_search((SLL *) Exit_h_head, 
+		(char *)&conn_id, 4)) )
+	{
+		newp->conn_id = conn_id;
+		newp->exit_id = tag;
+		strcpy(newp->node, Net_conns[conn_id].node);
+		strcpy(newp->task, Net_conns[conn_id].task);
+	}
+	else
+	{
+		newp = (EXIT_H *)malloc(sizeof(EXIT_H));
+		newp->conn_id = conn_id;
+		newp->exit_id = tag;
+		strcpy(newp->node, Net_conns[conn_id].node);
+		strcpy(newp->task, Net_conns[conn_id].task);
+		sll_insert_queue( (SLL *) Exit_h_head, (SLL *) newp );
+	}
+	ENABLE_AST
+}
+
+static void rem_exit_handler_item(EXIT_H *exitp)
+{
+
+	DISABLE_AST
+	if(!Exit_h_head) 
+	{
+		ENABLE_AST
+		return;
+	}
+	sll_remove( (SLL *) Exit_h_head, (SLL *) exitp );
+	free(exitp);
+	ENABLE_AST
+}
+
+static EXIT_H *find_exit_handler_item(int conn_id)
+{
+	EXIT_H *exitp;
+
+	DISABLE_AST;
+	if(!Exit_h_head)
+	{
+		ENABLE_AST;
+		return((EXIT_H *)0);
+	}
+	if( (exitp = (EXIT_H *) sll_search((SLL *) Exit_h_head, (char *) &conn_id, 4)) )
+	{
+		ENABLE_AST;
+		return(exitp);
+	}
+	ENABLE_AST;
+	return((EXIT_H *)0);
+}
+
+static int check_exit_handler_item(EXIT_H *exitp, int conn_id)
+{
+	if( (!strcmp(exitp->node, Net_conns[conn_id].node)) &&
+		(!strcmp(exitp->task, Net_conns[conn_id].task)))
+	{
+		return exitp->exit_id;
+	}
+	return 0;
+}
+
+void add_exit_handler(int *tag, int *bufp, int *size)
+{
+	EXIT_H *exitp;
+
+	if(size){}
+	if(tag){}
+	if(*bufp)
+	{
+		add_exit_handler_item(Curr_conn_id, *bufp);
+	}
+	else
+	{
+		if((exitp = find_exit_handler_item(Curr_conn_id)))
+			rem_exit_handler_item(exitp);
+	}
+}
+
+void dis_set_client_exit_handler(int conn_id, int tag)
+{
+	EXIT_H *exitp;
+
+	if(tag)
+	{
+		add_exit_handler_item(conn_id, tag);
+	}
+	else
+	{
+		if((exitp = find_exit_handler_item(conn_id)))
+			rem_exit_handler_item(exitp);
+	}
+}
+
+
+int do_exit_handler(int conn_id)
+{
+	register EXIT_H *exitp;
+	int exit_id;
+
+	DISABLE_AST;
+	if((exitp = find_exit_handler_item(conn_id)))
+	{
+		if((exit_id = check_exit_handler_item(exitp, conn_id)))
+		{
+			(Client_exit_user_routine)( &exit_id );
+		}
+		else
+		{
+			rem_exit_handler_item(exitp);
+		}
+	}
+/*
+	if(!Exit_h_head)
+	{
+		ENABLE_AST;
+		return(0);
+	}
+	while( (exitp = (EXIT_H *) sll_search_next_remove((SLL *) Exit_h_head,
+							 0, (char *) &conn_id, 4)) )
+	{
+		(Client_exit_user_routine)( &exitp->exit_id );
+		free(exitp);
+	}
+*/
+	ENABLE_AST
+	return(1);
+}
+
+static void exit_handler(int *tag, int *bufp, int *size)
+{
+
+	if(size){}
+	if(tag){}
+	if(Exit_user_routine)
+		(Exit_user_routine)( bufp );
+	else
+	{
+/*
+		printf("%s PID %d Exiting!\n", Task_name, getpid());
+*/
+		exit(*bufp);
+	}
+}
+
+static void error_handler(int conn_id, int severity, int errcode, char *reason, int exit)
+{
+	int exit_tag, exit_code, exit_size;
+	int last_conn_id;
+
+	if(Error_user_routine)
+	{
+			Error_conn_id = conn_id;
+			last_conn_id = Curr_conn_id;
+			Curr_conn_id = conn_id;
+			(Error_user_routine)( severity, errcode, reason);
+			Error_conn_id = 0;
+			Curr_conn_id = last_conn_id;
+	}
+	else
+	{
+		dim_print_msg(reason, severity);
+	}
+	if(severity == DIM_FATAL)
+	{
+		exit_tag = 0;
+		if(exit == -1)
+			exit_code = errcode;
+		else
+			exit_code = exit;
+		exit_size = sizeof(int);
+		exit_handler(&exit_tag, &exit_code, &exit_size);
+	}
+}
+/*
+#define MAX_HASH_ENTRIES 2000
+*/
+#define MAX_HASH_ENTRIES 5000
+
+static SERVICE *Service_hash_table[MAX_HASH_ENTRIES];
+static int Service_new_entries[MAX_HASH_ENTRIES];
+
+int dis_hash_service_init()
+{
+
+  int i;
+  static int done = 0;
+
+  if(!done)
+  {
+	for( i = 0; i < MAX_HASH_ENTRIES; i++ ) 
+	{
+/*
+		Service_hash_table[i] = (SERVICE *) malloc(sizeof(SERVICE));
+		dll_init((DLL *) Service_hash_table[i]);
+*/
+		Service_hash_table[i] = 0;
+		Service_new_entries[i] = 0;
+	}
+	done = 1;
+  }
+
+  return(1);
+}
+
+int dis_hash_service_insert(SERVICE *servp)
+{
+	int index;
+	index = HashFunction(servp->name, MAX_HASH_ENTRIES);
+	if(!Service_hash_table[index])
+	{
+		Service_hash_table[index] = (SERVICE *) malloc(sizeof(SERVICE));
+		dll_init((DLL *) Service_hash_table[index]);
+	}
+	Service_new_entries[index]++;
+	dll_insert_queue((DLL *) Service_hash_table[index], 
+			 (DLL *) servp);
+	return(1);
+}
+
+int dis_hash_service_registered(int index, SERVICE *servp)
+{
+	servp->registered = 1;
+	Service_new_entries[index]--;
+	if(Service_new_entries[index] < 0)
+		Service_new_entries[index] = 0;
+	return 1;
+}
+
+int dis_hash_service_remove(SERVICE *servp)
+{
+	int index;
+	index = HashFunction(servp->name, MAX_HASH_ENTRIES);
+	if(!Service_hash_table[index])
+	{
+		return(0);
+	}
+	dll_remove( (DLL *) servp );
+	return(1);
+}
+
+
+SERVICE *dis_hash_service_exists(char *name)
+{
+	int index;
+	SERVICE *servp;
+
+	index = HashFunction(name, MAX_HASH_ENTRIES);
+	if(!Service_hash_table[index])
+	{
+		return((SERVICE *)0);
+	}
+	if( (servp = (SERVICE *) dll_search(
+					(DLL *) Service_hash_table[index],
+			      		name, (int)strlen(name)+1)) )
+	{
+		return(servp);
+	}
+	return((SERVICE *)0);
+}			
+
+SERVICE *dis_hash_service_get_next(int *curr_index, SERVICE *prevp, int new_entries)
+{
+	int index;
+	SERVICE *servp = 0;
+/*
+	if(!prevp)
+	{
+		index = -1;
+	}
+*/
+	index = *curr_index;
+	if(index == -1)
+	{
+		index++;
+		prevp = Service_hash_table[index];
+	}
+	if(!prevp)
+	{
+		prevp = Service_hash_table[index];
+	}
+	do
+	{
+		if(prevp)
+		{
+			if((!new_entries) || (Service_new_entries[index] > 0))
+			{
+				servp = (SERVICE *) dll_get_next(
+						(DLL *) Service_hash_table[index],
+						(DLL *) prevp);
+				if(servp)
+					break;
+			}
+		}
+		index++;
+		if(index == MAX_HASH_ENTRIES)
+		{
+			*curr_index = -1;
+			return((SERVICE *) 0);
+		}
+		prevp = Service_hash_table[index];
+	} while(!servp);
+	*curr_index = index;
+	return(servp);
+}
+
+DIS_DNS_CONN *dis_find_dns(dim_long dnsid)
+{
+	DIS_DNS_CONN *dnsp;
+
+	dnsp = (DIS_DNS_CONN *)
+			dll_search( (DLL *) DNS_head, &dnsid, sizeof(dnsid));
+/*
+	if(!dnsp)
+	{
+		dnsp = create_dns(dnsid);
+	}
+*/
+	return dnsp;
+}
+
+int dis_no_dns()
+{
+	DIS_DNS_CONN *dnsp;
+
+	dnsp = (DIS_DNS_CONN *) DNS_head;
+	while ( (dnsp = (DIS_DNS_CONN *) dll_get_next( (DLL *) DNS_head, (DLL *) dnsp)))
+	{
+/*
+		if(dnsp != Default_DNS)
+			return 0;
+*/
+		if(dnsp->serving)
+			return 0;
+	}
+	return 1;
+}
+
+DIS_DNS_CONN *find_dns_by_conn_id(int conn_id)
+{
+	DIS_DNS_CONN *dnsp;
+	extern dim_long dns_get_dnsid();
+	dim_long dnsid;
+
+	dnsid = dns_get_dnsid(conn_id, SRC_DIS);
+	dnsp = dis_find_dns(dnsid);
+	if(!dnsp)
+		dnsp = Default_DNS;
+	return (DIS_DNS_CONN *)dnsp;
+}
+
+void dis_print_hash_table()
+{
+	SERVICE *servp;
+	int i;
+	int n_entries, max_entry_index = 0;
+	int max_entries = 0;
+
+	for( i = 0; i < MAX_HASH_ENTRIES; i++ ) 
+	{
+		n_entries = 0;
+		servp = Service_hash_table[i];
+		while( (servp = (SERVICE *) dll_get_next(
+						(DLL *) Service_hash_table[i],
+						(DLL *) servp)) )
+		{
+			n_entries++;
+			if(n_entries == 1)
+				printf("    Name = %s\n",servp->name);
+		}
+		if(n_entries != 0)
+			printf("HASH[%d] - %d entries\n", i, n_entries);
+		if(n_entries > max_entries)
+		{
+			max_entries = n_entries;
+			max_entry_index = i;
+		}
+	}
+	printf("Maximum : HASH[%d] - %d entries\n", max_entry_index, max_entries);  
+	fflush(stdout);
+}
+
+void dis_hash_print()
+{
+	SERVICE *servp;
+	int hash_index;
+
+	servp = 0;
+	hash_index = -1;
+	while( (servp = dis_hash_service_get_next(&hash_index, servp, 0)) )
+	{
+		printf("Name = %s\n",servp->name);
+	}
+}
+
+#ifdef VMS
+/* CFORTRAN WRAPPERS */
+FCALLSCFUN1(INT, dis_start_serving, DIS_START_SERVING, dis_start_serving,
+				 STRING)
+FCALLSCFUN3(INT, dis_get_next_cmnd, DIS_GET_NEXT_CMND, dis_get_next_cmnd,
+				 PINT, PVOID, PINT)
+FCALLSCFUN1(INT, dis_get_client, DIS_GET_CLIENT, dis_get_client,
+				 PSTRING)
+FCALLSCFUN6(INT, dis_add_service, DIS_ADD_SERVICE, dis_add_service,
+				 STRING, PVOID, PVOID, INT, PVOID, INT)
+FCALLSCSUB4(	 dis_add_cmnd, DIS_ADD_CMND, dis_add_cmnd,
+				 STRING, PVOID, PVOID, INT)
+FCALLSCSUB1(	 dis_add_client_exit_handler, DIS_ADD_CLIENT_EXIT_HANDLER, 
+				 dis_add_client_exit_handler,
+				 PVOID)
+FCALLSCSUB2(	 dis_set_client_exit_handler, DIS_SET_CLIENT_EXIT_HANDLER, 
+				 dis_set_client_exit_handler,
+				 INT, INT)
+FCALLSCSUB1(	 dis_add_exit_handler, DIS_ADD_EXIT_HANDLER, 
+				 dis_add_exit_handler,
+				 PVOID)
+FCALLSCSUB1(	 dis_report_service, DIS_REPORT_SERVICE, dis_report_service,
+				 STRING)
+FCALLSCSUB2(	 dis_convert_str, DIS_CONVERT_STR, dis_convert_str,
+				 PVOID, PVOID)
+FCALLSCFUN1(INT, dis_update_service, DIS_UPDATE_SERVICE, dis_update_service,
+				 INT)
+FCALLSCFUN1(INT, dis_remove_service, DIS_REMOVE_SERVICE, dis_remove_service,
+				 INT)
+FCALLSCSUB3(	 dis_send_service, DIS_SEND_SERVICE, dis_send_service,
+				 INT, PVOID, INT)
+FCALLSCSUB2(	 dis_set_quality, DIS_SET_QUALITY, dis_set_quality,
+                 INT, INT)
+FCALLSCSUB3(INT, dis_set_timestamp, DIS_SET_TIMESTAMP, dis_set_timestamp,
+                 INT, INT, INT)
+FCALLSCFUN2(INT, dis_selective_update_service, DIS_SELECTIVE_UPDATE_SERVICE, 
+				 dis_selective_update_service,
+				 INT, PINT)
+FCALLSCSUB3(INT, dis_get_timestamp, DIS_GET_TIMESTAMP, dis_get_timestamp,
+                 INT, PINT, PINT)
+#endif
Index: branches/testFACT++branch/dim/src/dis_old.c
===================================================================
--- branches/testFACT++branch/dim/src/dis_old.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/dis_old.c	(revision 18277)
@@ -0,0 +1,3091 @@
+/*
+ * DIS (Delphi Information Server) Package implements a library of
+ * routines to be used by servers.
+ *
+ * Started on		 : 10-11-91
+ * Last modification : 28-07-94
+ * Written by		 : C. Gaspar
+ * Adjusted by	     : G.C. Ballintijn
+ *
+ */
+
+#ifdef VMS
+#	include <lnmdef.h>
+#	include <ssdef.h>
+#	include <descrip.h>
+#	include <cfortran.h>
+#endif
+/*
+#define DEBUG
+*/
+#include <time.h>
+#ifdef VAX
+#include <timeb.h>
+#else
+#include <sys/timeb.h>
+#endif
+
+#define DIMLIB
+#include <dim.h>
+#include <dis.h>
+
+#define ALL 0
+#define MORE 1
+#define NONE 2
+
+typedef struct dis_dns_ent {
+	struct dis_dns_ent *next;
+	struct dis_dns_ent *prev;
+	long dnsid;
+	char task_name[MAX_NAME];
+	TIMR_ENT *dns_timr_ent;
+	DIS_DNS_PACKET dis_dns_packet;
+	int dis_n_services;
+	int dns_dis_conn_id;
+	int dis_first_time;
+	int serving;
+	unsigned int dis_service_id;
+	unsigned int dis_client_id;
+	int updating_service_list;
+} DIS_DNS_CONN;
+
+typedef struct req_ent {
+	struct req_ent *next;
+	struct req_ent *prev;
+	int conn_id;
+	int service_id;
+	int req_id;
+	int type;
+	struct serv *service_ptr;
+	int timeout;
+	int format;
+	int first_time;
+	int delay_delete;
+	int to_delete;
+	TIMR_ENT *timr_ent;
+	struct reqp_ent *reqpp;
+} REQUEST;
+
+typedef struct serv {
+	struct serv *next;
+	struct serv *prev;
+	char name[MAX_NAME];
+	int id;
+	int type;
+	char def[MAX_NAME];
+	FORMAT_STR format_data[MAX_NAME/4];
+	int *address;
+	int size;
+	void (*user_routine)();
+	long tag;
+	int registered;
+	int quality;
+	int user_secs;
+	int user_millisecs;
+	int tid;
+	REQUEST *request_head;
+	DIS_DNS_CONN *dnsp;
+	int delay_delete;
+	int to_delete;
+} SERVICE;
+
+typedef struct reqp_ent {
+	struct reqp_ent *next;
+	struct reqp_ent *prev;
+	REQUEST *reqp;
+} REQUEST_PTR;
+
+typedef struct cli_ent {
+	struct cli_ent *next;
+	struct cli_ent *prev;
+	int conn_id;
+	REQUEST_PTR *requestp_head; 
+	DIS_DNS_CONN *dnsp;
+} CLIENT;
+
+static CLIENT *Client_head = (CLIENT *)0;	
+
+static DIS_DNS_CONN *DNS_head = (DIS_DNS_CONN *)0;	
+
+/*
+static char Task_name[MAX_NAME];
+static TIMR_ENT *Dns_timr_ent = (TIMR_ENT *)0;
+static DIS_DNS_PACKET Dis_dns_packet = {0, 0, {0}};
+static int Dis_n_services = 0;
+*/
+static int Dis_first_time = 1;
+/*
+static int Dns_dis_conn_id = 0;
+*/
+static int Protocol;
+static int Port_number;
+static int Dis_conn_id = 0;
+static int Curr_conn_id = 0;
+static int Serving = 0;
+static void (*Client_exit_user_routine)() = 0;
+static void (*Exit_user_routine)() = 0;
+static void (*Error_user_routine)() = 0;
+static int Error_conn_id = 0;
+DIS_DNS_CONN *Default_DNS = 0;
+
+typedef struct exit_ent {
+	struct exit_ent *next;
+	int conn_id;
+	int exit_id;
+} EXIT_H;
+
+static EXIT_H *Exit_h_head = (EXIT_H *)0;
+
+/* Do not forget to increase when this file is modified */
+static int Version_number = DIM_VERSION_NUMBER;
+static int Dis_timer_q = 0;
+static int Threads_off = 0;
+/*
+static unsigned int Dis_service_id, Dis_client_id;
+static int Updating_service_list = 0;
+*/
+static int Last_client;
+
+#ifdef DEBUG
+static int Debug_on = 1;
+#else
+static int Debug_on = 0;
+#endif
+
+_DIM_PROTO( static void dis_insert_request, (int conn_id, DIC_PACKET *dic_packet,
+				  int size, int status ) );
+_DIM_PROTO( int execute_service,	(int req_id) );
+_DIM_PROTO( void execute_command,	(SERVICE *servp, DIC_PACKET *packet) );
+_DIM_PROTO( void register_dns_services,  (int flag) );
+_DIM_PROTO( void register_services,  (DIS_DNS_CONN *dnsp, int flag, int dns_flag) );
+_DIM_PROTO( void std_cmnd_handler,   (long *tag, int *cmnd_buff, int *size) );
+_DIM_PROTO( void client_info,		(long *tag, int **bufp, int *size) );
+_DIM_PROTO( void service_info,	   (long *tag, int **bufp, int *size) );
+_DIM_PROTO( void add_exit_handler,   (int *tag, int *bufp, int *size) );
+_DIM_PROTO( static void exit_handler,	   (int *tag, int *bufp, int *size) );
+_DIM_PROTO( static void error_handler,	   (int conn_id, int severity, int errcode, char *reason) );
+_DIM_PROTO( SERVICE *find_service,   (char *name) );
+_DIM_PROTO( CLIENT *find_client,   (int conn_id) );
+_DIM_PROTO( static int get_format_data, (FORMAT_STR *format_data, char *def) );
+_DIM_PROTO( static int release_conn, (int conn_id, int print_flag, int dns_flag) );
+_DIM_PROTO( SERVICE *dis_hash_service_exists, (char *name) );
+_DIM_PROTO( SERVICE *dis_hash_service_get_next, (int *start, SERVICE *prev, int flag) );
+_DIM_PROTO( static unsigned do_dis_add_service_dns, (char *name, char *type, void *address, int size, 
+								   void (*user_routine)(), long tag, long dnsid ) );
+_DIM_PROTO( static DIS_DNS_CONN *create_dns, (long dnsid) );
+
+void dis_set_debug_on()
+{
+	Debug_on = 1;
+}
+
+void dis_set_debug_off()
+{
+	Debug_on = 0;
+}
+
+void dis_no_threads()
+{
+	Threads_off = 1;
+}
+
+static DIS_STAMPED_PACKET *Dis_packet = 0;
+static int Dis_packet_size = 0;
+
+int dis_set_buffer_size(int size)
+{
+	if(Dis_packet_size)
+		free(Dis_packet);
+	Dis_packet = (DIS_STAMPED_PACKET *)malloc(DIS_STAMPED_HEADER + size);
+	if(Dis_packet)
+	{
+		Dis_packet_size = DIS_STAMPED_HEADER + size;
+		return(1);
+	}
+	else
+		return(0);
+}
+
+static int check_service_name(char *name)
+{
+	if(strlen(name) > (MAX_NAME - 1))
+		return(0);
+	return(1);
+}
+
+static void dis_init()
+{
+	int dis_hash_service_init();
+	void dis_dns_init();
+
+	dis_dns_init();
+	{
+	DISABLE_AST
+	dis_hash_service_init();
+	ENABLE_AST
+	}
+}
+
+static unsigned do_dis_add_service_dns( char *name, char *type, void *address, int size, 
+								   void (*user_routine)(), long tag, long dnsid )
+{
+	register SERVICE *new_serv;
+	register int service_id;
+	char str[512];
+	int dis_hash_service_insert();
+	DIS_DNS_CONN *dnsp;
+	extern DIS_DNS_CONN *dis_find_dns(long);
+
+	dis_init();
+	{
+	DISABLE_AST
+	if(!check_service_name(name))
+	{
+		strcpy(str,"Service name too long: ");
+		strcat(str,name);
+		error_handler(0, DIM_ERROR, DIMSVCTOOLG, str);
+		ENABLE_AST
+		return((unsigned) 0);
+	}
+	if( find_service(name) )
+	{
+		strcpy(str,"Duplicate Service: ");
+		strcat(str,name);
+		error_handler(0, DIM_ERROR, DIMSVCDUPLC, str);
+		ENABLE_AST
+		return((unsigned) 0);
+	}
+	new_serv = (SERVICE *)malloc( sizeof(SERVICE) );
+	strncpy( new_serv->name, name, MAX_NAME );
+	if(type != (char *)0)
+	{
+		if (strlen(type) >= MAX_NAME)
+		{
+			strcpy(str,"Format String Too Long: ");
+			strcat(str,name);
+			error_handler(0, DIM_ERROR, DIMSVCFORMT, str);
+			free(new_serv);
+			ENABLE_AST
+			return((unsigned) 0);
+		}
+		if (! get_format_data(new_serv->format_data, type))
+		{
+			strcpy(str,"Bad Format String: ");
+			strcat(str,name);
+			error_handler(0, DIM_ERROR, DIMSVCFORMT, str);
+			free(new_serv);
+			ENABLE_AST
+			return((unsigned) 0);
+		}
+		strcpy(new_serv->def,type); 
+	}
+	else
+	{
+		new_serv->format_data[0].par_bytes = 0;
+		new_serv->def[0] = '\0';
+	}
+	new_serv->type = 0;
+	new_serv->address = (int *)address;
+	new_serv->size = size;
+	new_serv->user_routine = user_routine;
+	new_serv->tag = tag;
+	new_serv->registered = 0;
+	new_serv->quality = 0;
+	new_serv->user_secs = 0;
+	new_serv->tid = 0;
+	new_serv->delay_delete = 0;
+	new_serv->to_delete = 0;
+	dnsp = dis_find_dns(dnsid);
+	if(!dnsp)
+		dnsp = create_dns(dnsid);
+	new_serv->dnsp = dnsp;
+	service_id = id_get((void *)new_serv, SRC_DIS);
+	new_serv->id = service_id;
+	new_serv->request_head = (REQUEST *)malloc(sizeof(REQUEST));
+	dll_init( (DLL *) (new_serv->request_head) );
+	dis_hash_service_insert(new_serv);
+/*
+	Dis_n_services++;
+*/
+	dnsp->dis_n_services++;
+	ENABLE_AST
+	}
+	return((unsigned)service_id);
+}
+
+static unsigned do_dis_add_service( char *name, char *type, void *address, int size, 
+								   void (*user_routine)(), long tag )
+{
+	return do_dis_add_service_dns( name, type, address, size, 
+								   user_routine, tag, 0 );
+}
+
+#ifdef VxWorks
+void dis_destroy(int tid)
+{
+register SERVICE *servp, *prevp;
+int n_left = 0;
+
+	prevp = 0;
+	while( servp = dis_hash_service_get_next(prevp))
+	{
+		if(servp->tid == tid)
+		{
+			dis_remove_service(servp->id);
+		}
+		else
+		{
+			prevp = servp;
+			n_left++;
+		}
+	}
+	if(n_left == 5)
+	{
+		prevp = 0;
+		while( servp = dis_hash_service_get_next(prevp))
+		{
+			dis_remove_service(servp->id);
+		}
+		dna_close(Dis_conn_id);
+		dna_close(Dns_dis_conn_id);
+		Dns_dis_conn_id = 0;
+		Dis_first_time = 1;
+		dtq_rem_entry(Dis_timer_q, Dns_timr_ent);
+		Dns_timr_ent = NULL;
+	}
+}
+
+
+#endif
+
+unsigned dis_add_service( char *name, char *type, void *address, int size, 
+						 void (*user_routine)(), long tag)
+{
+	unsigned ret;
+#ifdef VxWorks
+	register SERVICE *servp;
+#endif
+/*
+	DISABLE_AST
+*/
+	ret = do_dis_add_service( name, type, address, size, user_routine, tag);
+#ifdef VxWorks
+	servp = (SERVICE *)id_get_ptr(ret, SRC_DIS);
+	servp->tid = taskIdSelf();
+#endif
+/*
+	ENABLE_AST
+*/
+	return(ret);
+}
+
+unsigned dis_add_service_dns( long dnsid, char *name, char *type, void *address, int size, 
+							 void (*user_routine)(), long tag)
+{
+	unsigned ret;
+#ifdef VxWorks
+	register SERVICE *servp;
+#endif
+/*
+	DISABLE_AST
+*/
+	ret = do_dis_add_service_dns( name, type, address, size, user_routine, tag, dnsid);
+#ifdef VxWorks
+	servp = (SERVICE *)id_get_ptr(ret, SRC_DIS);
+	servp->tid = taskIdSelf();
+#endif
+/*
+	ENABLE_AST
+*/
+	return(ret);
+}
+
+static unsigned do_dis_add_cmnd_dns( char *name, char *type, void (*user_routine)(), long tag, long dnsid )
+{
+	register SERVICE *new_serv;
+	register int service_id;
+	char str[512];
+	int dis_hash_service_insert();
+	DIS_DNS_CONN *dnsp;
+	extern DIS_DNS_CONN *dis_find_dns(long);
+
+	dis_init();
+	{
+	DISABLE_AST
+	if(!check_service_name(name))
+	{
+		strcpy(str,"Command name too long: ");
+		strcat(str,name);
+		error_handler(0, DIM_ERROR, DIMSVCTOOLG, str);
+		ENABLE_AST
+		return((unsigned) 0);
+	}
+	if( find_service(name) )
+	{
+		ENABLE_AST
+		return((unsigned) 0);
+	}
+	new_serv = (SERVICE *)malloc(sizeof(SERVICE));
+	strncpy(new_serv->name, name, MAX_NAME);
+	if(type != (char *)0)
+	{
+		if( !get_format_data(new_serv->format_data, type))
+		{
+			ENABLE_AST
+			return((unsigned) 0);
+		}
+		strcpy(new_serv->def,type); 
+	}
+	else
+	{
+		new_serv->format_data[0].par_bytes = 0;
+		new_serv->def[0] = '\0';
+	}
+	new_serv->type = COMMAND;
+	new_serv->address = 0;
+	new_serv->size = 0;
+	if(user_routine)
+		new_serv->user_routine = user_routine;
+	else
+		new_serv->user_routine = std_cmnd_handler;
+	new_serv->tag = tag;
+	new_serv->tid = 0;
+	new_serv->registered = 0;
+	new_serv->quality = 0;
+	new_serv->user_secs = 0;
+	new_serv->delay_delete = 0;
+	new_serv->to_delete = 0;
+	service_id = id_get((void *)new_serv, SRC_DIS);
+	new_serv->id = service_id;
+	dnsp = dis_find_dns(dnsid);
+	if(!dnsp)
+		dnsp = create_dns(dnsid);
+	new_serv->dnsp = dnsp;
+	new_serv->request_head = (REQUEST *)malloc(sizeof(REQUEST));
+	dll_init( (DLL *) (new_serv->request_head) );
+	dis_hash_service_insert(new_serv);
+/*
+	Dis_n_services++;
+*/
+	dnsp->dis_n_services++;
+	ENABLE_AST
+	}
+	return((unsigned) service_id);
+}
+
+static unsigned do_dis_add_cmnd( char *name, char *type, void (*user_routine)(), long tag)
+{
+	return do_dis_add_cmnd_dns(name, type, user_routine, tag, 0);
+}
+
+unsigned dis_add_cmnd( char *name, char *type, void (*user_routine)(), long tag ) 
+{
+	unsigned ret;
+
+/*
+	DISABLE_AST
+*/
+	ret = do_dis_add_cmnd( name, type, user_routine, tag );
+/*
+	ENABLE_AST
+*/
+	return(ret);
+}
+
+unsigned dis_add_cmnd_dns( long dnsid, char *name, char *type, void (*user_routine)(), long tag ) 
+{
+	unsigned ret;
+
+	/*
+	DISABLE_AST
+	*/
+	ret = do_dis_add_cmnd_dns( name, type, user_routine, tag, dnsid );
+	/*
+	ENABLE_AST
+	*/
+	return(ret);
+}
+
+void dis_add_client_exit_handler( void (*user_routine)()) 
+{
+
+	DISABLE_AST
+	Client_exit_user_routine = user_routine;
+	ENABLE_AST
+}
+
+void dis_add_exit_handler( void (*user_routine)()) 
+{
+
+	DISABLE_AST
+	Exit_user_routine = user_routine;
+	ENABLE_AST
+}
+
+void dis_add_error_handler( void (*user_routine)())
+{
+
+	DISABLE_AST
+	Error_user_routine = user_routine;
+	ENABLE_AST
+}
+
+static int get_format_data(FORMAT_STR *format_data, char *def)
+{
+	register char code, last_code = 0;
+	int num;
+
+	code = *def;
+	while(*def)
+	{
+		if(code != last_code)
+		{
+			format_data->par_num = 0;
+			format_data->flags = 0;
+			switch(code)
+			{
+				case 'i':
+				case 'I':
+				case 'l':
+				case 'L':
+					format_data->par_bytes = SIZEOF_LONG;
+					format_data->flags |= SWAPL;
+					break;
+				case 'x':
+				case 'X':
+					format_data->par_bytes = SIZEOF_DOUBLE;
+					format_data->flags |= SWAPD;
+					break;
+				case 's':
+				case 'S':
+					format_data->par_bytes = SIZEOF_SHORT;
+					format_data->flags |= SWAPS;
+					break;
+				case 'f':
+				case 'F':
+					format_data->par_bytes = SIZEOF_FLOAT;
+					format_data->flags |= SWAPL;
+#ifdef vms      	
+					format_data->flags |= IT_IS_FLOAT;
+#endif
+					break;
+				case 'd':
+				case 'D':
+					format_data->par_bytes = SIZEOF_DOUBLE;
+					format_data->flags |= SWAPD;
+#ifdef vms
+					format_data->flags |= IT_IS_FLOAT;
+#endif
+					break;
+				case 'c':
+				case 'C':
+					format_data->par_bytes = SIZEOF_CHAR;
+					format_data->flags |= NOSWAP;
+					break;
+			}
+		}
+		def++;
+		if(*def != ':')
+		{
+			if(*def)
+			{
+/*
+				printf("Bad service definition parsing\n");
+				fflush(stdout);
+
+				error_handler("Bad service definition parsing",2);
+*/
+				return(0);
+			}
+			else
+				format_data->par_num = 0;
+		}
+		else
+		{
+			def++;
+			sscanf(def,"%d",&num);
+			format_data->par_num += num;
+			while((*def != ';') && (*def != '\0'))
+				def++;
+			if(*def)
+				def++;
+		}
+		last_code = code;
+		code = *def;
+		if(code != last_code)
+			format_data++;
+	}
+	format_data->par_bytes = 0;
+	return(1);
+}
+
+void recv_dns_dis_rout( int conn_id, DNS_DIS_PACKET *packet, int size, int status )
+{
+	char str[128];
+	int dns_timr_time;
+	extern int rand_tmout(int, int);
+	extern int open_dns(long, void (*)(), void (*)(), int, int, int);
+	extern DIS_DNS_CONN *find_dns_by_conn_id(int);
+	extern void do_register_services(DIS_DNS_CONN *);
+	extern void do_dis_stop_serving_dns(DIS_DNS_CONN *);
+	DIS_DNS_CONN *dnsp;
+
+	if(size){}
+	dnsp = find_dns_by_conn_id(conn_id);
+	if(!dnsp)
+	{
+		return;
+	}
+	switch(status)
+	{
+	case STA_DISC:	   /* connection broken */
+		if( dnsp->dns_timr_ent ) {
+			dtq_rem_entry( Dis_timer_q, dnsp->dns_timr_ent );
+			dnsp->dns_timr_ent = NULL;
+		}
+
+		if(dnsp->dns_dis_conn_id > 0)
+			dna_close(dnsp->dns_dis_conn_id);
+		if(dnsp->serving)
+		{
+			dnsp->dns_dis_conn_id = open_dns(dnsp->dnsid, recv_dns_dis_rout, error_handler,
+					DIS_DNS_TMOUT_MIN, DIS_DNS_TMOUT_MAX, SRC_DIS );
+			if(dnsp->dns_dis_conn_id == -2)
+				error_handler(0, DIM_FATAL, DIMDNSUNDEF, "DIM_DNS_NODE undefined");
+		}
+		break;
+	case STA_CONN:		/* connection received */
+		if(dnsp->serving)
+		{
+			dnsp->dns_dis_conn_id = conn_id;
+			register_services(dnsp, ALL, 0);
+			dns_timr_time = rand_tmout(WATCHDOG_TMOUT_MIN, 
+							 WATCHDOG_TMOUT_MAX);
+			dnsp->dns_timr_ent = dtq_add_entry( Dis_timer_q,
+						  dns_timr_time,
+						  do_register_services, dnsp ); 
+		}
+		else
+		{
+			dna_close(conn_id);
+		}
+		break;
+	default :	   /* normal packet */
+		if(vtohl(packet->size) != DNS_DIS_HEADER)
+			break;
+		switch( vtohl(packet->type) )
+		{
+		case DNS_DIS_REGISTER :
+			sprintf(str, 
+				"%s: Watchdog Timeout, DNS requests registration",
+				dnsp->task_name);
+			error_handler(0, DIM_WARNING, DIMDNSTMOUT, str);
+			register_services(dnsp, ALL, 0);
+			break;
+		case DNS_DIS_KILL :
+			sprintf(str,
+				"%s: Some Services already known to DNS",
+				dnsp->task_name);
+			/*
+			exit(2);
+			*/
+			error_handler(0, DIM_FATAL, DIMDNSDUPLC, str);
+			do_dis_stop_serving_dns(dnsp);
+			dis_stop_serving();
+/*
+			exit_tag = 0;
+			exit_code = 2;
+			exit_size = sizeof(int);
+			exit_handler(&exit_tag, &exit_code, &exit_size);
+*/
+			break;
+		case DNS_DIS_STOP :
+			sprintf(str, 
+				"%s: DNS refuses connection",dnsp->task_name);
+/*
+			exit(2);
+*/
+			error_handler(0, DIM_FATAL, DIMDNSREFUS, str);
+			do_dis_stop_serving_dns(dnsp);
+			dis_stop_serving();
+/*
+			exit_tag = 0;
+			exit_code = 2;
+			exit_size = sizeof(int);
+			exit_handler(&exit_tag, &exit_code, &exit_size);
+*/
+			break;
+		case DNS_DIS_EXIT :
+			sprintf(str, 
+				"%s: DNS requests Exit",dnsp->task_name);
+			error_handler(0, DIM_FATAL, DIMDNSEXIT, str);
+			break;
+		}
+		break;
+	}
+}
+
+
+/* register services within the name server
+ *
+ * Send services uses the DNA package. services is a linked list of services
+ * stored by add_service.
+ */
+
+int send_dns_update_packet(DIS_DNS_CONN *dnsp)
+{
+  DIS_DNS_PACKET *dis_dns_p = &(dnsp->dis_dns_packet);
+  int n_services;
+  SERVICE_REG *serv_regp;
+
+  n_services = 1;
+  dis_dns_p->n_services = htovl(n_services);
+  dis_dns_p->size = htovl(DIS_DNS_HEADER +
+					n_services * sizeof(SERVICE_REG));
+  serv_regp = dis_dns_p->services;
+  strcpy( serv_regp->service_name, "DUMMY_UPDATE_PACKET" );
+  if(dnsp->dns_dis_conn_id > 0)
+  {
+      if( !dna_write(dnsp->dns_dis_conn_id, &(dnsp->dis_dns_packet),
+		     DIS_DNS_HEADER + n_services * sizeof(SERVICE_REG)))
+	  {
+		release_conn(dnsp->dns_dis_conn_id, 0, 1);
+	  }
+  }
+  return(1);
+}
+
+void do_register_services(DIS_DNS_CONN *dnsp)
+{
+	register_services(dnsp, NONE, 0);
+}
+
+void register_services(DIS_DNS_CONN *dnsp, int flag, int dns_flag)
+{
+	register DIS_DNS_PACKET *dis_dns_p = &(dnsp->dis_dns_packet);
+	register int n_services, tot_n_services;
+	register SERVICE *servp;
+	register SERVICE_REG *serv_regp;
+	int hash_index, new_entries;
+	extern int get_node_addr();
+	int dis_hash_service_registered();
+
+	if(!dis_dns_p->src_type)
+	{
+		get_node_name( dis_dns_p->node_name );
+/*
+		strcpy( dis_dns_p->task_name, Task_name );
+*/
+		strncpy( dis_dns_p->task_name, dnsp->task_name,
+			MAX_TASK_NAME-4 );
+		dis_dns_p->task_name[MAX_TASK_NAME-4-1] = '\0';
+		get_node_addr( dis_dns_p->node_addr );
+/*
+		dis_dns_p->port = htovl(Port_number);
+*/
+		dis_dns_p->pid = htovl(getpid());
+		dis_dns_p->protocol = htovl(Protocol);
+		dis_dns_p->src_type = htovl(SRC_DIS);
+		dis_dns_p->format = htovl(MY_FORMAT);
+	
+	}
+
+	dis_dns_p->port = htovl(Port_number);
+	serv_regp = dis_dns_p->services;
+	n_services = 0;
+	tot_n_services = 0;
+	if( flag == NONE ) {
+		dis_dns_p->n_services = htovl(n_services);
+		dis_dns_p->size = htovl( DIS_DNS_HEADER + 
+			(n_services*sizeof(SERVICE_REG)));
+		if(dnsp->dns_dis_conn_id > 0)
+		{
+			if(!dna_write(dnsp->dns_dis_conn_id, &(dnsp->dis_dns_packet), 
+				DIS_DNS_HEADER + n_services*sizeof(SERVICE_REG)))
+			{
+				release_conn(dnsp->dns_dis_conn_id, 0, 1);
+			}
+		}
+		return;
+	}
+	if(flag == ALL)
+	{
+		servp = 0;
+		hash_index = -1;
+		while( (servp = dis_hash_service_get_next(&hash_index, servp, 0)))
+		{
+			if(servp->dnsp == dnsp)
+				servp->registered  = 0;
+		}
+	}
+	servp = 0;
+	hash_index = -1;
+	new_entries = 0;
+	if(flag == MORE)
+		new_entries = 1;
+	while( (servp = dis_hash_service_get_next(&hash_index, servp, new_entries)))
+	{
+		if( flag == MORE ) 
+		{
+			if( servp->registered )
+			{
+				continue;
+			}
+		}
+
+		if(servp->dnsp != dnsp)
+			continue;
+
+		strcpy( serv_regp->service_name, servp->name );
+		strcpy( serv_regp->service_def, servp->def );
+		if(servp->type == COMMAND)
+			serv_regp->service_id = htovl( servp->id | 0x10000000);
+		else
+			serv_regp->service_id = htovl( servp->id );
+
+		serv_regp++;
+		n_services++;
+		dis_hash_service_registered(hash_index, servp);
+		if( n_services == MAX_SERVICE_UNIT )
+		{
+			dis_dns_p->n_services = htovl(n_services);
+			dis_dns_p->size = htovl(DIS_DNS_HEADER +
+				n_services * sizeof(SERVICE_REG));
+			if(dnsp->dns_dis_conn_id > 0)
+			{
+				if( !dna_write(dnsp->dns_dis_conn_id,
+					   &(dnsp->dis_dns_packet), 
+					   DIS_DNS_HEADER + n_services *
+						sizeof(SERVICE_REG)) )
+				{
+					release_conn(dnsp->dns_dis_conn_id, 0, 1);
+				}
+			}
+			serv_regp = dis_dns_p->services;
+			tot_n_services += MAX_SERVICE_UNIT;
+			n_services = 0;
+			continue;
+		}
+	}
+	if( n_services ) 
+	{
+		dis_dns_p->n_services = htovl(n_services);
+		dis_dns_p->size = htovl(DIS_DNS_HEADER +
+					n_services * sizeof(SERVICE_REG));
+		if(dnsp->dns_dis_conn_id > 0)
+		{
+			if( !dna_write(dnsp->dns_dis_conn_id, &(dnsp->dis_dns_packet),
+				DIS_DNS_HEADER + n_services * sizeof(SERVICE_REG)))
+			{
+				release_conn(dnsp->dns_dis_conn_id, 0, 1);
+			}
+
+		}
+		tot_n_services += n_services;
+	}
+	if(!dns_flag)
+	{
+		if(tot_n_services >= MAX_REGISTRATION_UNIT)
+		{
+			send_dns_update_packet(dnsp);
+		}
+	}
+}
+
+void unregister_service(DIS_DNS_CONN *dnsp, SERVICE *servp)
+{
+	register DIS_DNS_PACKET *dis_dns_p = &(dnsp->dis_dns_packet);
+	register int n_services;
+	register SERVICE_REG *serv_regp;
+	extern int get_node_addr();
+
+	if(dnsp->dns_dis_conn_id > 0)
+	{
+		if(!dis_dns_p->src_type)
+		{
+			get_node_name( dis_dns_p->node_name );
+/*
+			strcpy( dis_dns_p->task_name, Task_name );
+*/
+			strncpy( dis_dns_p->task_name, dnsp->task_name,
+				MAX_TASK_NAME-4 );
+			dis_dns_p->task_name[MAX_TASK_NAME-4-1] = '\0';
+			get_node_addr( dis_dns_p->node_addr );
+			dis_dns_p->port = htovl(Port_number);
+			dis_dns_p->protocol = htovl(Protocol);
+			dis_dns_p->src_type = htovl(SRC_DIS);
+			dis_dns_p->format = htovl(MY_FORMAT);
+		}
+		serv_regp = dis_dns_p->services;
+		strcpy( serv_regp->service_name, servp->name );
+		strcpy( serv_regp->service_def, servp->def );
+		serv_regp->service_id = htovl( servp->id | 0x80000000);
+		serv_regp++;
+		n_services = 1;
+		servp->registered = 0;
+		dis_dns_p->n_services = htovl(n_services);
+		dis_dns_p->size = htovl(DIS_DNS_HEADER +
+				n_services * sizeof(SERVICE_REG));
+
+		if( !dna_write(dnsp->dns_dis_conn_id, &(dnsp->dis_dns_packet), 
+			DIS_DNS_HEADER + n_services * sizeof(SERVICE_REG)) )
+		{
+			release_conn(dnsp->dns_dis_conn_id, 0, 1);
+		}
+		if(dnsp->dis_service_id)
+			dis_update_service(dnsp->dis_service_id);
+	}
+}
+
+void do_update_service_list(DIS_DNS_CONN *dnsp)
+{
+	dnsp->updating_service_list = 0;
+	dis_update_service(dnsp->dis_service_id);
+}
+
+/* start serving client requests
+ *
+ * Using the DNA package start accepting requests from clients.
+ * When a request arrives the routine "dis_insert_request" will be executed.
+ */
+
+int dis_start_serving(char *task)
+{
+	return dis_start_serving_dns(0, task);
+}
+
+static DIS_DNS_CONN *create_dns(long dnsid)
+{
+	DIS_DNS_CONN *dnsp;
+
+	dnsp = malloc(sizeof(DIS_DNS_CONN));
+	dnsp->dns_timr_ent = (TIMR_ENT *)0;
+	dnsp->dis_n_services = 0;
+	dnsp->dns_dis_conn_id = 0;
+	dnsp->dis_first_time = 1;
+	dnsp->serving = 0;
+	dnsp->dis_dns_packet.size = 0;
+	dnsp->dis_dns_packet.src_type = 0;
+	dnsp->dis_dns_packet.node_name[0] = 0;
+	dnsp->updating_service_list = 0;
+	dnsp->dnsid = dnsid;
+	dll_insert_queue( (DLL *) DNS_head, (DLL *) dnsp );
+	return dnsp;
+}
+
+void dis_dns_init()
+{
+	static int done = 0;
+	DIS_DNS_CONN *dnsp;
+	void dim_init_threads(void);
+
+	if(!done)
+	{
+		if(!Threads_off)
+		{
+			dim_init_threads();
+		}
+		{
+		DISABLE_AST
+		if(!DNS_head) 
+		{
+			DNS_head = (DIS_DNS_CONN *)malloc(sizeof(DIS_DNS_CONN));
+			dll_init( (DLL *) DNS_head );
+		}
+		dnsp = create_dns(0);
+		Default_DNS = dnsp;
+		done = 1;
+		ENABLE_AST
+		}
+	}
+}
+
+int dis_start_serving_dns(long dnsid, char *task/*, int *idlist*/)
+{
+	char str0[MAX_NAME], str1[MAX_NAME],str2[MAX_NAME],
+	  str3[MAX_NAME],str4[MAX_NAME];
+	char task_name_aux[MAX_TASK_NAME];
+	extern int open_dns();
+	extern DIS_DNS_CONN *dis_find_dns(long);
+	DIS_DNS_CONN *dnsp;
+	int more_ids[10] = {0};
+
+	dis_init();
+	{
+	DISABLE_AST
+	  /*
+#ifdef VxWorks
+	taskDeleteHookAdd(remove_all_services);
+	printf("Adding delete hook\n");
+#endif
+*/
+
+	if(!Client_head) 
+	{
+		Client_head = (CLIENT *)malloc(sizeof(CLIENT));
+		dll_init( (DLL *) Client_head );
+	}
+	if(dnsid == 0)
+	{
+		dnsp = Default_DNS;
+	}
+	else if(!(dnsp = dis_find_dns(dnsid)))
+	{
+		dnsp = create_dns(dnsid);
+	}
+	dnsp->serving = 1;
+	Serving = 1;
+	if(Dis_first_time)
+	{
+		strncpy( task_name_aux, task, MAX_TASK_NAME );
+		task_name_aux[MAX_TASK_NAME-1] = '\0';
+		Port_number = SEEK_PORT;
+		if( !(Dis_conn_id = dna_open_server( task_name_aux, dis_insert_request, 
+			&Protocol, &Port_number, error_handler) ))
+		{
+			ENABLE_AST
+			return(0);
+		}
+		Dis_first_time = 0;
+	}
+	if(dnsp->dis_first_time)
+	{
+		dnsp->dis_first_time = 0;
+
+		sprintf(str0, "%s/VERSION_NUMBER", task);
+		sprintf(str1, "%s/CLIENT_LIST", task);
+		sprintf(str2, "%s/SERVICE_LIST", task);
+		sprintf(str3, "%s/SET_EXIT_HANDLER", task);
+		sprintf(str4, "%s/EXIT", task);
+
+		more_ids[0] = do_dis_add_service_dns( str0, "L", &Version_number,
+				 sizeof(Version_number), 0, 0, dnsid );
+
+		more_ids[1] = do_dis_add_service_dns( str1, "C", 0, 0, client_info, (long)dnsp, dnsid );
+		dnsp->dis_client_id = more_ids[1];
+		more_ids[2] = do_dis_add_service_dns( str2, "C", 0, 0, service_info, (long)dnsp, dnsid );
+		dnsp->dis_service_id = more_ids[2];
+		more_ids[3] = do_dis_add_cmnd_dns( str3, "L:1", add_exit_handler, 0, dnsid );
+		more_ids[4] = do_dis_add_cmnd_dns( str4, "L:1", exit_handler, 0, dnsid );
+		more_ids[5] = 0;
+		strcpy( dnsp->task_name, task );
+	}
+/*
+	if(idlist)
+	{
+		for(i = 0; idlist[i]; i++)
+		{
+			servp = (SERVICE *)id_get_ptr(idlist[i], SRC_DIS);
+			if(servp)
+			{
+				servp->dnsp = dnsp;
+				n_services++;
+			}
+		}
+	}
+	if(dnsp != Default_DNS)
+	{
+		for(i = 0; more_ids[i]; i++)
+		{
+			servp = (SERVICE *)id_get_ptr(more_ids[i], SRC_DIS);
+			if(servp)
+			{
+				servp->dnsp = dnsp;
+				n_services++;
+			}
+		}
+		dnsp->dis_n_services += n_services;
+		Dis_n_services -= n_services;
+	}
+*/
+	if(!Dis_timer_q)
+		Dis_timer_q = dtq_create();
+	if( !dnsp->dns_dis_conn_id )
+	{
+		if(!strcmp(task,"DIS_DNS"))
+		{
+			register_services(dnsp, ALL, 1);
+			ENABLE_AST
+			return(id_get(&(dnsp->dis_dns_packet), SRC_DIS));
+		}
+		else
+		{
+		
+			dnsp->dns_dis_conn_id = open_dns(dnsid, recv_dns_dis_rout, error_handler,
+					DIS_DNS_TMOUT_MIN, DIS_DNS_TMOUT_MAX, SRC_DIS );
+			if(dnsp->dns_dis_conn_id == -2)
+				error_handler(0, DIM_FATAL, DIMDNSUNDEF, "DIM_DNS_NODE undefined");
+		}
+	}
+	else
+	{
+		register_services(dnsp, MORE, 0);
+		if(dnsp->dis_service_id)
+		{
+/*
+			dis_update_service(Dis_service_id);
+*/
+			if(!dnsp->updating_service_list)
+			{
+				dtq_start_timer(1, do_update_service_list, dnsp);
+				dnsp->updating_service_list = 1;
+			}
+		}
+	}
+	ENABLE_AST
+	}
+	return(1);
+}
+
+
+/* asynchrounous reception of requests */
+/*
+	Called by DNA package.
+	A request has arrived, queue it to process later - dis_ins_request
+*/
+static void dis_insert_request(int conn_id, DIC_PACKET *dic_packet, int size, int status)
+{
+	register SERVICE *servp;
+	register REQUEST *newp, *reqp;
+	CLIENT *clip;
+	REQUEST_PTR *reqpp;
+	int type, new_client = 0, found = 0;
+	int find_release_request();
+	DIS_DNS_CONN *dnsp;
+
+	if(size){}
+	/* status = 1 => new connection, status = -1 => conn. lost */
+	if(!Client_head) 
+	{
+		Client_head = (CLIENT *)malloc(sizeof(CLIENT));
+		dll_init( (DLL *) Client_head );
+	}
+	if(status != 0)
+	{
+		if(status == -1) /* release all requests from conn_id */
+		{
+			release_conn(conn_id, 0, 0);
+		}
+	} 
+	else 
+	{
+		if(!(servp = find_service(dic_packet->service_name)))
+		{
+			release_conn(conn_id, 0, 0);
+			return;
+		}
+		dic_packet->type = vtohl(dic_packet->type);
+		type = dic_packet->type & 0xFFF;
+		/*
+		if(type == COMMAND) 
+		{
+			Curr_conn_id = conn_id;
+			execute_command(servp, dic_packet);
+			Curr_conn_id = 0;
+			return;
+		}
+		*/
+		if(type == DIM_DELETE) 
+		{
+			find_release_request(conn_id, vtohl(dic_packet->service_id));
+			return;
+		}
+		newp = (REQUEST *)/*my_*/malloc(sizeof(REQUEST));
+		newp->service_ptr = servp;
+		newp->service_id = vtohl(dic_packet->service_id);
+		newp->type = dic_packet->type;
+		newp->timeout = vtohl(dic_packet->timeout);
+		newp->format = vtohl(dic_packet->format);
+		newp->conn_id = conn_id;
+		newp->first_time = 1;
+		newp->delay_delete = 0;
+		newp->to_delete = 0;
+		newp->timr_ent = 0;
+		newp->req_id = id_get((void *)newp, SRC_DIS);
+		newp->reqpp = 0;
+		if(type == ONCE_ONLY) 
+		{
+			execute_service(newp->req_id);
+			id_free(newp->req_id, SRC_DIS);
+			free(newp);
+			return;
+		}
+		if(type == COMMAND) 
+		{
+			Curr_conn_id = conn_id;
+			execute_command(servp, dic_packet);
+			Curr_conn_id = 0;
+			reqp = servp->request_head;
+			while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+				(DLL *) reqp)) ) 
+			{
+				if(reqp->conn_id == conn_id)
+				{
+					id_free(newp->req_id, SRC_DIS);
+					free(newp);
+					found = 1;
+					break;
+				}
+			}
+			if(!found)
+				dll_insert_queue( (DLL *) servp->request_head, (DLL *) newp );
+			return;
+		}
+		dll_insert_queue( (DLL *) servp->request_head, (DLL *) newp );
+		if(!(clip = find_client(conn_id)))
+		{
+			clip = (CLIENT *)malloc(sizeof(CLIENT));
+			clip->conn_id = conn_id;
+			clip->dnsp = servp->dnsp;
+			clip->requestp_head = (REQUEST_PTR *)malloc(sizeof(REQUEST_PTR));
+			dll_init( (DLL *) clip->requestp_head );
+			dll_insert_queue( (DLL *) Client_head, (DLL *) clip );
+			new_client = 1;
+		}
+		reqpp = (REQUEST_PTR *)malloc(sizeof(REQUEST_PTR));
+		reqpp->reqp = newp;
+		dll_insert_queue( (DLL *) clip->requestp_head, (DLL *) reqpp );
+		newp->reqpp = reqpp;
+		if((type != MONIT_ONLY) && (type != UPDATE))
+		{
+			execute_service(newp->req_id);
+		}
+		if((type != MONIT_ONLY) && (type != MONIT_FIRST))
+		{
+			if(newp->timeout != 0)
+			{
+				newp->timr_ent = dtq_add_entry( Dis_timer_q,
+							newp->timeout, 
+							execute_service,
+							newp->req_id );
+			}
+		}
+		if(new_client)
+		{
+			Last_client = conn_id;
+			dnsp = clip->dnsp;
+			if(dnsp->dis_client_id)
+			  dis_update_service(dnsp->dis_client_id);
+		}
+	}
+}
+
+/* A timeout for a timed or monitored service occured, serve it. */
+
+int execute_service( int req_id )
+{
+	int *buffp, size;
+	register REQUEST *reqp;
+	register SERVICE *servp;
+	char str[80], def[MAX_NAME];
+	register char *ptr;
+	int last_conn_id;
+	int *pkt_buffer, header_size, aux;
+#ifdef WIN32
+	struct timeb timebuf;
+#else
+	struct timeval tv;
+	struct timezone *tz;
+#endif
+	FORMAT_STR format_data_cp[MAX_NAME/4];
+
+	reqp = (REQUEST *)id_get_ptr(req_id, SRC_DIS);
+	if(!reqp)
+		return(0);
+	if(reqp->to_delete)
+		return(0);
+	reqp->delay_delete++;
+	servp = reqp->service_ptr;
+	last_conn_id = Curr_conn_id;
+	Curr_conn_id = reqp->conn_id;
+	ptr = servp->def;
+	if(servp->type == COMMAND)
+	{
+		sprintf(str,"This is a COMMAND Service");
+		buffp = (int *)str;
+		size = 26;
+		sprintf(def,"c:26");
+		ptr = def;
+	}
+	else if( servp->user_routine != 0 ) 
+	{
+		(servp->user_routine)( &servp->tag, &buffp, &size,
+					&reqp->first_time );
+		reqp->first_time = 0;
+		
+	} 
+	else 
+	{
+		buffp = servp->address;
+		size = servp->size;
+	}
+	Curr_conn_id = last_conn_id;
+/* send even if no data but not if negative */
+	if( size  < 0)
+	{
+		reqp->delay_delete--;
+		return(0);
+	}
+	if( DIS_STAMPED_HEADER + size > Dis_packet_size ) 
+	{
+		if( Dis_packet_size )
+			free( Dis_packet );
+		Dis_packet = (DIS_STAMPED_PACKET *)malloc(DIS_STAMPED_HEADER + size);
+		if(!Dis_packet)
+		{
+			reqp->delay_delete--;
+			return(0);
+		}
+		Dis_packet_size = DIS_STAMPED_HEADER + size;
+	}
+	Dis_packet->service_id = htovl(reqp->service_id);
+	if((reqp->type & 0xFF000) == STAMPED)
+	{
+		pkt_buffer = ((DIS_STAMPED_PACKET *)Dis_packet)->buffer;
+		header_size = DIS_STAMPED_HEADER;
+		if(!servp->user_secs)
+		{
+#ifdef WIN32
+			ftime(&timebuf);
+			aux = timebuf.millitm;
+			Dis_packet->time_stamp[0] = htovl(aux);
+			Dis_packet->time_stamp[1] = htovl((int)timebuf.time);
+#else
+			tz = 0;
+		        gettimeofday(&tv, tz);
+			aux = tv.tv_usec / 1000;
+			Dis_packet->time_stamp[0] = htovl(aux);
+			Dis_packet->time_stamp[1] = htovl(tv.tv_sec);
+#endif
+		}
+		else
+		{
+			aux = /*0xc0de0000 |*/ servp->user_millisecs;
+			Dis_packet->time_stamp[0] = htovl(aux);
+			Dis_packet->time_stamp[1] = htovl(servp->user_secs);
+		}
+		Dis_packet->reserved[0] = htovl(0xc0dec0de);
+		Dis_packet->quality = htovl(servp->quality);
+	}
+	else
+	{
+		pkt_buffer = ((DIS_PACKET *)Dis_packet)->buffer;
+		header_size = DIS_HEADER;
+	}
+	memcpy(format_data_cp, servp->format_data, sizeof(format_data_cp));
+	size = copy_swap_buffer_out(reqp->format, format_data_cp, 
+		pkt_buffer,
+		buffp, size);
+	Dis_packet->size = htovl(header_size + size);
+	if( !dna_write_nowait(reqp->conn_id, Dis_packet, header_size + size) ) 
+	{
+		reqp->to_delete = 1;
+	}
+/*
+	else
+	{
+		if((reqp->type & 0xFFF) == MONITORED)
+		{
+			if(reqp->timr_ent)
+				dtq_clear_entry(reqp->timr_ent);
+		}
+	}
+*/
+	reqp->delay_delete--;
+	return(1);
+}
+
+void remove_service( int req_id )
+{
+	register REQUEST *reqp;
+	register SERVICE *servp;
+	static DIS_PACKET *dis_packet;
+	static int packet_size = 0;
+	int service_id;
+
+	reqp = (REQUEST *)id_get_ptr(req_id, SRC_DIS);
+	servp = reqp->service_ptr;
+	if( !packet_size ) {
+		dis_packet = (DIS_PACKET *)malloc(DIS_HEADER);
+		packet_size = DIS_HEADER;
+	}
+	service_id = (reqp->service_id | 0x80000000);
+	dis_packet->service_id = htovl(service_id);
+	dis_packet->size = htovl(DIS_HEADER);
+	if( !dna_write(reqp->conn_id, dis_packet, DIS_HEADER) ) 
+	{
+		release_conn(reqp->conn_id, 0, 0);
+	}
+}
+
+void execute_command(SERVICE *servp, DIC_PACKET *packet)
+{
+	int size;
+	int format;
+	FORMAT_STR format_data_cp[MAX_NAME/4], *formatp;
+	static int *buffer;
+	static int buffer_size = 0;
+	int add_size;
+
+	size = vtohl(packet->size) - DIC_HEADER;
+	add_size = size + (size/2);
+	if(!buffer_size)
+	{
+		buffer = (int *)malloc(add_size);
+		buffer_size = add_size;
+	} 
+	else 
+	{
+		if( add_size > buffer_size ) 
+		{
+			free(buffer);
+			buffer = (int *)malloc(add_size);
+			buffer_size = add_size;
+		}
+	}
+
+	dis_set_timestamp(servp->id, 0, 0);
+	if(servp->user_routine != 0)
+	{
+		format = vtohl(packet->format);
+		memcpy(format_data_cp, servp->format_data, sizeof(format_data_cp));
+		if((format & 0xF) == ((MY_FORMAT) & 0xF)) 
+		{
+			for(formatp = format_data_cp; formatp->par_bytes; formatp++)
+			{
+				if(formatp->flags & IT_IS_FLOAT)
+					formatp->flags |= (format & 0xf0);
+				formatp->flags &= 0xFFF0;	/* NOSWAP */
+			}
+		}
+		else
+		{
+			for(formatp = format_data_cp; formatp->par_bytes; formatp++)
+			{
+				if(formatp->flags & IT_IS_FLOAT)
+					formatp->flags |= (format & 0xf0);
+			}
+		}
+		size = copy_swap_buffer_in(format_data_cp, 
+						 buffer, 
+						 packet->buffer, size);
+		(servp->user_routine)(&servp->tag, buffer, &size);
+	}
+}
+
+void dis_report_service(char *serv_name)
+{
+	register SERVICE *servp;
+	register REQUEST *reqp;
+	int to_delete = 0, more;
+
+	
+	DISABLE_AST
+	servp = find_service(serv_name);
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) )
+	{
+		if((reqp->type & 0xFFF) != TIMED_ONLY)
+		{
+			execute_service(reqp->req_id);
+			if(reqp->to_delete)
+				to_delete = 1;
+		}
+	}
+	if(to_delete)
+	{
+		do
+		{
+			more = 0;
+			reqp = servp->request_head;
+			while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+				(DLL *) reqp)) )
+			{
+				if(reqp->to_delete)
+				{
+					more = 1;
+					release_conn(reqp->conn_id, 1, 0);
+					break;
+				}
+			}
+		}while(more);
+	}
+	ENABLE_AST
+}
+
+int dis_update_service(unsigned service_id)
+{
+int do_update_service();
+
+	return(do_update_service(service_id,0));
+}
+
+int dis_selective_update_service(unsigned service_id, int *client_ids)
+{
+int do_update_service();
+
+	return(do_update_service(service_id, client_ids));
+}
+
+int check_client(REQUEST *reqp, int *client_ids)
+{
+	if(!client_ids)
+		return(1);
+	while(*client_ids)
+	{
+		if(reqp->conn_id == *client_ids)
+		{
+			return(1);
+		}
+		client_ids++;
+	}
+	return(0);
+}
+
+int do_update_service(unsigned service_id, int *client_ids)
+{
+	register REQUEST *reqp;
+	register SERVICE *servp;
+	REQUEST_PTR *reqpp;
+	CLIENT *clip;
+	register int found = 0;
+	int to_delete = 0, more, conn_id;
+	char str[128];
+	int release_request();
+
+	DISABLE_AST
+	if(!service_id)
+	{
+		sprintf(str, "Update Service - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str);
+		ENABLE_AST
+		return(found);
+	}
+	servp = (SERVICE *)id_get_ptr(service_id, SRC_DIS);
+	if(!servp)
+	{
+		ENABLE_AST
+		return(found);
+	}
+	if(servp->id != (int)service_id)
+	{
+		ENABLE_AST
+		return(found);
+	}
+	servp->delay_delete = 1;
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) ) 
+	{
+if(Debug_on)
+{
+dim_print_date_time_millis();
+printf("Updating %s (id = %d, ptr = %08lX) for %s@%s (req_id = %d, req_ptr = %08lX)\n",
+	   servp->name, (int)service_id, (unsigned long)servp, 
+	   Net_conns[reqp->conn_id].task, Net_conns[reqp->conn_id].node, reqp->req_id, (unsigned long)reqp);
+}
+		if(check_client(reqp, client_ids))
+			reqp->delay_delete = 1;
+	}
+	ENABLE_AST
+	{
+	DISABLE_AST
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) ) 
+	{
+		if(reqp->delay_delete && ((reqp->type & 0xFFF) != COMMAND))
+		{
+		if(check_client(reqp, client_ids))
+		{
+			if( (reqp->type & 0xFFF) != TIMED_ONLY ) 
+			{
+/*
+				DISABLE_AST
+*/
+				execute_service(reqp->req_id);
+				found++;
+				ENABLE_AST
+				{
+				DISABLE_AST
+				}
+			}
+		}
+		}
+	}
+	ENABLE_AST
+	}
+	{
+	DISABLE_AST
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) ) 
+	{
+		if(check_client(reqp, client_ids))
+		{
+			reqp->delay_delete = 0;
+			if(reqp->to_delete)
+				to_delete = 1;
+		}
+	}
+	ENABLE_AST
+	}
+	if(to_delete)
+	{
+		DISABLE_AST
+		do
+		{
+			more = 0;
+			reqp = servp->request_head;
+			while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+				(DLL *) reqp)) ) 
+			{
+				if(reqp->to_delete & 0x1)
+				{
+					more = 1;
+					reqp->to_delete = 0;
+					release_conn(reqp->conn_id, 1, 0);
+					break;
+				}
+				else if(reqp->to_delete & 0x2)
+				{
+					more = 1;
+					reqp->to_delete = 0;
+					reqpp = reqp->reqpp;
+					conn_id = reqp->conn_id;
+					release_request(reqp, reqpp, 1);
+					clip = find_client(conn_id);
+					if(clip)
+					{
+						if( dll_empty((DLL *)clip->requestp_head) ) 
+						{
+							release_conn( conn_id, 0, 0);
+						}
+					}
+					break;
+				}
+			}
+		}while(more);
+		ENABLE_AST
+	}
+	{
+	DISABLE_AST
+	servp->delay_delete = 0;
+	if(servp->to_delete)
+	{
+		dis_remove_service(servp->id);
+	}
+	ENABLE_AST
+	}
+
+	return(found);
+}
+
+int dis_get_n_clients(unsigned service_id)
+{
+	register REQUEST *reqp;
+	register SERVICE *servp;
+	register int found = 0;
+	char str[128];
+
+	DISABLE_AST
+	if(!service_id)
+	{
+		sprintf(str, "Service Has Clients- Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str);
+		ENABLE_AST
+		return(found);
+	}
+	servp = (SERVICE *)id_get_ptr(service_id, SRC_DIS);
+	if(!servp)
+	{
+		ENABLE_AST
+		return(found);
+	}
+	if(servp->id != (int)service_id)
+	{
+		ENABLE_AST
+		return(found);
+	}
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) ) 
+	{
+		found++;
+	}
+	ENABLE_AST
+	return found;
+}
+
+int dis_get_timeout(unsigned service_id, int client_id)
+{
+	register REQUEST *reqp;
+	register SERVICE *servp;
+	char str[128];
+
+	if(!service_id)
+	{
+		sprintf(str,"Get Timeout - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str);
+		return(-1);
+	}
+	servp = (SERVICE *)id_get_ptr(service_id, SRC_DIS);
+	if(!servp)
+	{
+		return(-1);
+	}
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) ) 
+	{
+		if(reqp->conn_id == client_id)
+			return(reqp->timeout);
+	}
+	return(-1);
+}
+
+void dis_set_quality( unsigned serv_id, int quality )
+{
+	register SERVICE *servp;
+	char str[128];
+
+	DISABLE_AST
+	if(!serv_id)
+	{
+		sprintf(str,"Set Quality - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str);
+	    ENABLE_AST
+		return;
+	}
+	servp = (SERVICE *)id_get_ptr(serv_id, SRC_DIS);
+	if(!servp)
+	{
+	    ENABLE_AST
+		return;
+	}
+	if(servp->id != (int)serv_id)
+	{
+	    ENABLE_AST
+		return;
+	}
+	servp->quality = quality;
+	ENABLE_AST
+}
+
+int dis_set_timestamp( unsigned serv_id, int secs, int millisecs )
+{
+	register SERVICE *servp;
+	char str[128];
+#ifdef WIN32
+	struct timeb timebuf;
+#else
+	struct timeval tv;
+	struct timezone *tz;
+#endif
+
+	DISABLE_AST
+	if(!serv_id)
+	{
+		sprintf(str,"Set Timestamp - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str);
+	    ENABLE_AST
+		return(0);
+	}
+	servp = (SERVICE *)id_get_ptr(serv_id, SRC_DIS);
+	if(!servp)
+	{
+	    ENABLE_AST
+		return(0);
+	}
+	if(servp->id != (int)serv_id)
+	{
+	    ENABLE_AST
+		return(0);
+	}
+	if(secs == 0)
+	{
+#ifdef WIN32
+			ftime(&timebuf);
+			servp->user_secs = (int)timebuf.time;
+			servp->user_millisecs = timebuf.millitm;
+#else
+			tz = 0;
+		    gettimeofday(&tv, tz);
+			servp->user_secs = tv.tv_sec;
+			servp->user_millisecs = tv.tv_usec / 1000;
+#endif
+	}
+	else
+	{
+		servp->user_secs = secs;
+/*
+		servp->user_millisecs = (millisecs & 0xffff);
+*/
+		servp->user_millisecs = millisecs;
+	}
+	ENABLE_AST
+	return(1);
+}
+
+int dis_get_timestamp( unsigned serv_id, int *secs, int *millisecs )
+{
+	register SERVICE *servp;
+	char str[128];
+
+	DISABLE_AST
+	if(!serv_id)
+	{
+		sprintf(str,"Get Timestamp - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str);
+	    ENABLE_AST
+		return(0);
+	}
+	servp = (SERVICE *)id_get_ptr(serv_id, SRC_DIS);
+	if(!servp)
+	{
+	    ENABLE_AST
+		return(0);
+	}
+	if(servp->id != (int)serv_id)
+	{
+	    ENABLE_AST
+		return(0);
+	}
+	if(servp->user_secs)
+	{
+		*secs = servp->user_secs;
+		*millisecs = servp->user_millisecs;
+	}
+	else
+	{
+		*secs = 0;
+		*millisecs = 0;
+	}
+	ENABLE_AST
+	return(1);
+}
+
+void dis_send_service(unsigned service_id, int *buffer, int size)
+{
+	register REQUEST *reqp, *prevp;
+	register SERVICE *servp;
+	static DIS_PACKET *dis_packet;
+	static int packet_size = 0;
+	int conn_id;
+	char str[128];
+
+	DISABLE_AST
+	if( !service_id ) {
+		sprintf(str,"Send Service - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str);
+		ENABLE_AST
+		return;
+	}
+	servp = (SERVICE *)id_get_ptr(service_id, SRC_DIS);
+	if(!packet_size)
+	{
+		dis_packet = (DIS_PACKET *)malloc(DIS_HEADER+size);
+		packet_size = DIS_HEADER + size;
+	} 
+	else 
+	{
+		if( DIS_HEADER+size > packet_size ) 
+		{
+			free(dis_packet);
+			dis_packet = (DIS_PACKET *)malloc(DIS_HEADER+size);
+			packet_size = DIS_HEADER+size;
+		}
+	}
+	prevp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) prevp)) ) 
+	{
+		dis_packet->service_id = htovl(reqp->service_id);
+		memcpy(dis_packet->buffer, buffer, size);
+		dis_packet->size = htovl(DIS_HEADER + size);
+
+		conn_id = reqp->conn_id;
+		if( !dna_write_nowait(conn_id, dis_packet, size + DIS_HEADER) )
+		{
+			release_conn(conn_id, 1, 0);
+		}
+		else
+			prevp = reqp;
+	}
+	ENABLE_AST
+}
+
+int dis_remove_service(unsigned service_id)
+{
+	register REQUEST *reqp, *auxp;
+	register SERVICE *servp;
+	REQUEST_PTR *reqpp;
+	int found = 0;
+	char str[128];
+	int release_request();
+	int dis_hash_service_remove();
+	DIS_DNS_CONN *dnsp;
+	int n_services;
+	void do_dis_stop_serving_dns(DIS_DNS_CONN *);
+
+	DISABLE_AST
+	if(!service_id)
+	{
+		sprintf(str,"Remove Service - Invalid service id");
+		error_handler(0, DIM_ERROR, DIMSVCINVAL, str);
+		ENABLE_AST
+		return(found);
+	}
+	servp = (SERVICE *)id_get_ptr(service_id, SRC_DIS);
+	if(!servp)
+	{
+		ENABLE_AST
+		return(found);
+	}
+	if(servp->id != (int)service_id)
+	{
+		ENABLE_AST
+		return(found);
+	}
+	if(servp->delay_delete)
+	{
+		servp->to_delete = 1;
+		ENABLE_AST
+		return(found);
+	}
+	/* remove from name server */
+	
+	dnsp = servp->dnsp;
+	unregister_service(dnsp, servp);
+	/* Release client requests and remove from actual clients */
+	reqp = servp->request_head;
+	while( (reqp = (REQUEST *) dll_get_next((DLL *)servp->request_head,
+		(DLL *) reqp)) )
+	{
+		remove_service(reqp->req_id);
+		auxp = reqp->prev;
+		reqpp = (REQUEST_PTR *) reqp->reqpp;
+		release_request(reqp, reqpp, 1);
+		found = 1;
+		reqp = auxp;
+	}
+	if(servp->id == (int)dnsp->dis_service_id)
+	  dnsp->dis_service_id = 0;
+	if(servp->id == (int)dnsp->dis_client_id)
+	  dnsp->dis_client_id = 0;
+	dis_hash_service_remove(servp);
+	id_free(servp->id, SRC_DIS);
+	free(servp->request_head);
+	free(servp);
+/*
+	if(dnsp != Default_DNS)
+	{
+		dnsp->dis_n_services--;
+		n_services = dnsp->dis_n_services;
+	}
+	else
+	{
+		Dis_n_services--;
+		n_services = Dis_n_services;
+	}
+*/
+	dnsp->dis_n_services--;
+	n_services = dnsp->dis_n_services;
+
+	ENABLE_AST
+	if(dnsp->serving)
+	{
+		if(n_services == 5)
+		{
+/*
+			dis_stop_serving();
+*/
+			do_dis_stop_serving_dns(dnsp);
+		}
+	}
+	return(found);
+}
+
+void do_dis_stop_serving_dns(DIS_DNS_CONN *dnsp)
+{
+register SERVICE *servp, *prevp;
+void dim_stop_threads(void);
+int dis_no_dns();
+int hash_index, old_index;
+extern int close_dns(long, int);
+
+	dnsp->serving = 0;
+	dis_init();
+/*
+	dis_hash_service_init();
+	prevp = 0;
+	if(Dis_conn_id)
+	{
+		dna_close(Dis_conn_id);
+		Dis_conn_id = 0;
+	}
+*/
+	{
+	DISABLE_AST
+	if(dnsp->dns_timr_ent)
+	{
+		dtq_rem_entry(Dis_timer_q, dnsp->dns_timr_ent);
+		dnsp->dns_timr_ent = NULL;
+	}
+	if(dnsp->dns_dis_conn_id)
+	{
+		dna_close(dnsp->dns_dis_conn_id);
+		dnsp->dns_dis_conn_id = 0;
+	}
+	ENABLE_AST
+	}
+	{
+	DISABLE_AST
+	prevp = 0;
+	hash_index = -1;
+	old_index = -1;
+	while( (servp = dis_hash_service_get_next(&hash_index, prevp, 0)) )
+	{
+		if(servp->dnsp == dnsp)
+		{
+			dis_remove_service(servp->id);
+			if(old_index != hash_index)
+				prevp = 0;
+		}
+		else
+		{
+			prevp = servp;
+			old_index = hash_index;
+		}
+	}
+	ENABLE_AST
+	}
+	dnsp->dis_first_time = 1;
+	dnsp->dis_n_services = 0;
+	dnsp->dis_dns_packet.size = 0;
+	dnsp->dis_dns_packet.src_type = 0;
+	close_dns(dnsp->dnsid, SRC_DIS);
+/*
+	if(dnsp != Default_DNS)
+	{
+		dll_remove(dnsp);
+		free(dnsp);
+	}
+*/
+/*
+	if(dll_empty(DNS_head))
+*/
+	if(dis_no_dns())
+		dis_stop_serving();
+}
+
+void dis_stop_serving_dns(long dnsid)
+{
+	DIS_DNS_CONN *dnsp, *dis_find_dns();
+
+	dnsp = dis_find_dns(dnsid);
+	do_dis_stop_serving_dns(dnsp);
+}
+
+void dis_stop_serving()
+{
+register SERVICE *servp, *prevp;
+void dim_stop_threads(void);
+int hash_index;
+
+	Serving = 0;
+	dis_init();
+	if(Dis_conn_id)
+	{
+		dna_close(Dis_conn_id);
+		Dis_conn_id = 0;
+	}
+/*
+	if(Dns_dis_conn_id)
+	{
+		dna_close(Dns_dis_conn_id);
+		Dns_dis_conn_id = 0;
+	}
+*/
+	{
+		DISABLE_AST
+	prevp = 0;
+	hash_index = -1;
+	while( (servp = dis_hash_service_get_next(&hash_index, prevp, 0)) )
+	{
+		dis_remove_service(servp->id);
+		prevp = 0;
+	}
+	ENABLE_AST
+	}
+/*
+	if(Dis_conn_id)
+		dna_close(Dis_conn_id);
+	if(Dns_dis_conn_id)
+		dna_close(Dns_dis_conn_id);
+	Dns_dis_conn_id = 0;
+*/
+	Dis_first_time = 1;
+/*
+	if(Dns_timr_ent)
+	{
+		dtq_rem_entry(Dis_timer_q, Dns_timr_ent);
+		Dns_timr_ent = NULL;
+	}
+*/
+	dtq_delete(Dis_timer_q);
+	Dis_timer_q = 0;
+	dim_stop_threads();
+}
+
+/* find service by name */
+SERVICE *find_service(char *name)
+{
+	return(dis_hash_service_exists(name));
+}
+
+CLIENT *find_client(int conn_id)
+{
+	register CLIENT *clip;
+
+	clip = (CLIENT *)
+			dll_search( (DLL *) Client_head, &conn_id, sizeof(conn_id));
+	return(clip);
+}
+
+void release_all_requests(int conn_id, CLIENT *clip)
+{
+	register REQUEST_PTR *reqpp, *auxp;
+	register REQUEST *reqp;
+    int found = 0;
+	int release_request();
+	DIS_DNS_CONN *dnsp;
+
+	DISABLE_AST;
+	if(clip)
+	{
+		reqpp = clip->requestp_head;
+		while( (reqpp = (REQUEST_PTR *) dll_get_next((DLL *)clip->requestp_head,
+			(DLL *) reqpp)) )
+		{
+			auxp = reqpp->prev;
+			reqp = (REQUEST *) reqpp->reqp;
+			release_request(reqp, reqpp, 0);
+			found = 1;
+			reqpp = auxp;
+		}
+		dnsp = clip->dnsp;
+		dll_remove(clip);
+		free(clip->requestp_head);
+		free(clip);
+	}
+	if(found)
+	{
+		Last_client = -conn_id;
+		if(dnsp->dis_client_id)
+		  dis_update_service(dnsp->dis_client_id);
+	}
+	dna_close(conn_id);
+	ENABLE_AST;
+}
+
+CLIENT *check_delay_delete(int conn_id)
+{
+	register REQUEST_PTR *reqpp;
+	register CLIENT *clip;
+	register REQUEST *reqp;
+	int found = 0;
+
+	DISABLE_AST;
+	clip = find_client(conn_id);
+	if(clip)
+	{
+		reqpp = clip->requestp_head;
+		while( (reqpp = (REQUEST_PTR *) dll_get_next((DLL *)clip->requestp_head,
+			(DLL *) reqpp)) )
+		{
+			reqp = (REQUEST *) reqpp->reqp;
+			if(reqp->delay_delete)
+			{
+				reqp->to_delete = 1;
+				found = 1;
+			}
+		}
+	}
+	ENABLE_AST;
+	if(found)
+	{
+		return((CLIENT *)-1);
+	}
+	return(clip);
+}
+
+char *dis_get_error_services()
+{
+	return(dis_get_client_services(Error_conn_id));
+}
+
+char *dis_get_client_services(int conn_id)
+{
+	register REQUEST_PTR *reqpp;
+	register CLIENT *clip;
+	register REQUEST *reqp;
+	register SERVICE *servp;
+
+	int n_services = 0;
+	int max_size;
+	static int curr_allocated_size = 0;
+	static char *service_info_buffer;
+	char *buff_ptr;
+
+
+	if(!conn_id)
+		return((char *)0);
+	{
+	DISABLE_AST;
+	clip = find_client(conn_id);
+	if(clip)
+	{
+		reqpp = clip->requestp_head;
+		while( (reqpp = (REQUEST_PTR *) dll_get_next((DLL *)clip->requestp_head,
+			(DLL *) reqpp)))
+		{
+			n_services++;
+		}
+		if(!n_services)
+		{
+			ENABLE_AST
+			return((char *)0);
+		}
+		max_size = n_services * MAX_NAME;
+		if(!curr_allocated_size)
+		{
+			service_info_buffer = (char *)malloc(max_size);
+			curr_allocated_size = max_size;
+		}
+		else if (max_size > curr_allocated_size)
+		{
+			free(service_info_buffer);
+			service_info_buffer = (char *)malloc(max_size);
+			curr_allocated_size = max_size;
+		}
+		service_info_buffer[0] = '\0';
+		buff_ptr = service_info_buffer;
+		reqpp = clip->requestp_head;
+		while( (reqpp = (REQUEST_PTR *) dll_get_next((DLL *)clip->requestp_head,
+			(DLL *) reqpp)) )
+		{
+			reqp = (REQUEST *) reqpp->reqp;
+			servp = reqp->service_ptr;
+			strcat(buff_ptr, servp->name);
+			strcat(buff_ptr, "\n");
+			buff_ptr += strlen(buff_ptr);
+		}
+	}
+	else
+	{
+		ENABLE_AST
+		return((char *)0);
+	}
+	ENABLE_AST;
+	}
+/*
+	dim_print_date_time();
+	dna_get_node_task(conn_id, node, task);
+	printf("Client %s@%s uses services: \n", task, node);
+	printf("%s\n",service_info_buffer);
+*/
+	return(service_info_buffer);
+}
+
+int find_release_request(int conn_id, int service_id)
+{
+	register REQUEST_PTR *reqpp, *auxp;
+	register CLIENT *clip;
+	register REQUEST *reqp;
+	int release_request();
+
+	DISABLE_AST
+	clip = find_client(conn_id);
+	if(clip)
+	{
+		reqpp = clip->requestp_head;
+		while( (reqpp = (REQUEST_PTR *) dll_get_next((DLL *)clip->requestp_head,
+			(DLL *) reqpp)) )
+		{
+			reqp = (REQUEST *) reqpp->reqp;
+			if(reqp->service_id == service_id)
+			{
+				if(reqp->delay_delete)
+				{
+					reqp->to_delete += 0x2;
+				}
+				else
+				{
+					auxp = reqpp->prev;
+					release_request(reqp, reqpp, 0);
+					reqpp = auxp;
+				}
+			}
+		}
+		if( dll_empty((DLL *)clip->requestp_head) ) 
+		{
+			release_conn( conn_id, 0, 0 );
+		}
+	}
+	ENABLE_AST
+	return(1);
+}
+
+int release_request(REQUEST *reqp, REQUEST_PTR *reqpp, int remove)
+{
+	int conn_id;
+	CLIENT *clip;
+
+	DISABLE_AST
+	conn_id = reqp->conn_id;
+	if(reqpp)
+		dll_remove((DLL *)reqpp);
+	dll_remove((DLL *)reqp);
+	if(reqp->timr_ent)
+		dtq_rem_entry(Dis_timer_q, reqp->timr_ent);
+	id_free(reqp->req_id, SRC_DIS);
+	free(reqp);
+	free(reqpp);
+/* Would do it too early, the client will disconnect anyway
+*/
+	if((remove) && (!Serving))
+	{
+		clip = find_client(conn_id);
+		if(clip)
+		{
+			if( dll_empty((DLL *)clip->requestp_head) ) 
+			{
+				release_conn( conn_id, 0, 0);
+			}
+		}
+	}
+
+	ENABLE_AST
+	return(1);
+}
+
+static int release_conn(int conn_id, int print_flg, int dns_flag)
+{
+	static int releasing = 0;
+	CLIENT *clip;
+	int do_exit_handler();
+
+	DISABLE_AST
+	if(print_flg){}
+	if(dns_flag)
+	{
+		recv_dns_dis_rout( conn_id, 0, 0, STA_DISC );
+		ENABLE_AST
+		return(0);
+	}
+#ifdef VMS
+	if(print_flg)
+	{
+		dim_print_date_time();
+		dna_get_node_task(conn_id, node, task);
+		printf(" Couldn't write to client %s@%s, releasing connection %d\n",
+			task, node, conn_id);
+		fflush(stdout);
+	}
+#endif
+	clip = check_delay_delete(conn_id);
+	if(clip != (CLIENT *)-1)
+	{
+		if( Client_exit_user_routine != 0 ) 
+		{
+			releasing++;
+			Curr_conn_id = conn_id;
+			do_exit_handler(conn_id);
+			releasing--;
+		}
+		if(!releasing)
+		{
+			release_all_requests(conn_id, clip);
+		}
+	}
+	ENABLE_AST
+	return(1);
+}
+
+typedef struct cmnds{
+	struct cmnds *next;
+	long tag;
+	int size;
+	int buffer[1];
+} DIS_CMND;
+
+static DIS_CMND *Cmnds_head = (DIS_CMND *)0;
+
+void std_cmnd_handler(long *tag, int *cmnd_buff, int *size)
+{
+	register DIS_CMND *new_cmnd;
+/* queue the command */
+
+	if(!Cmnds_head)
+	{
+		Cmnds_head = (DIS_CMND *)malloc(sizeof(DIS_CMND));
+		sll_init((SLL *) Cmnds_head);
+	}
+	new_cmnd = (DIS_CMND *)malloc((*size)+12);
+	new_cmnd->next = 0;
+	new_cmnd->tag = *tag;
+	new_cmnd->size = *size;
+	memcpy(new_cmnd->buffer, cmnd_buff, *size);
+	sll_insert_queue((SLL *) Cmnds_head, (SLL *) new_cmnd);
+}
+
+int dis_get_next_cmnd(long *tag, int *buffer, int *size)
+{
+	register DIS_CMND *cmndp;
+	register int ret_val = -1;
+
+	DISABLE_AST
+	if(!Cmnds_head)
+	{
+		Cmnds_head = (DIS_CMND *)malloc(sizeof(DIS_CMND));
+		sll_init((SLL *) Cmnds_head);
+	}
+	if(*size == 0)
+	{
+		if( (cmndp = (DIS_CMND *) sll_get_head((SLL *) Cmnds_head)))
+		{
+			if(cmndp->size > 0)
+			{
+				*size = cmndp->size;
+				*tag = cmndp->tag;
+				ENABLE_AST
+				return(-1);
+			}
+		}
+	}
+	if( (cmndp = (DIS_CMND *) sll_remove_head((SLL *) Cmnds_head)) )
+	{
+		if (*size >= cmndp->size)
+		{
+			*size = cmndp->size;
+			ret_val = 1;
+		}
+		memcpy(buffer, cmndp->buffer, *size);
+		*tag = cmndp->tag;
+		free(cmndp);
+		ENABLE_AST
+		return(ret_val);
+	}
+	ENABLE_AST
+	return(0);
+}
+
+int dis_get_conn_id()
+{
+	return(Curr_conn_id);
+}
+
+int dis_get_client(char *name)
+{
+	int ret = 0;
+	char node[MAX_NODE_NAME], task[MAX_TASK_NAME];
+
+	DISABLE_AST
+
+	if(Curr_conn_id)
+	{
+		dna_get_node_task(Curr_conn_id, node, task);
+		strcpy(name,task);
+		strcat(name,"@");
+		strcat(name,node);
+		ret = Curr_conn_id;
+	}
+	ENABLE_AST
+	return(ret);
+}
+
+#ifdef VMS
+dis_convert_str(c_str, for_str)
+char *c_str;
+struct dsc$descriptor_s *for_str;
+{
+	int i;
+
+	strcpy(for_str->dsc$a_pointer, c_str);
+	for(i = strlen(c_str); i< for_str->dsc$w_length; i++)
+		for_str->dsc$a_pointer[i] = ' ';
+}
+#endif
+
+void client_info(long *tag, int **bufp, int *size, int *first_time)
+{
+	register CLIENT *clip;
+	int curr_conns[MAX_CONNS];
+	int i, index, max_size;
+	static int curr_allocated_size = 0;
+	static char *dns_info_buffer;
+	register char *dns_client_info;
+	char node[MAX_NODE_NAME], task[MAX_TASK_NAME];
+	DIS_DNS_CONN *dnsp = (DIS_DNS_CONN *)*tag;
+
+	max_size = sizeof(DNS_CLIENT_INFO);
+	if(!curr_allocated_size)
+	{
+		dns_info_buffer = malloc(max_size);
+		curr_allocated_size = max_size;
+	}
+	dns_client_info = dns_info_buffer;
+	dns_client_info[0] = '\0';
+	index = 0;
+	if(*first_time)
+	{
+		clip = Client_head;
+		while( (clip = (CLIENT *)dll_get_next( (DLL *) Client_head, 
+			(DLL*) clip)) )
+		{
+			if(clip->dnsp != dnsp)
+				continue;
+			curr_conns[index++] = clip->conn_id;
+		}
+		max_size = (index+1)*sizeof(DNS_CLIENT_INFO);
+		if (max_size > curr_allocated_size)
+		{
+			free(dns_info_buffer);
+			dns_info_buffer = malloc(max_size);
+			curr_allocated_size = max_size;
+		}
+		dns_client_info = dns_info_buffer;
+		dns_client_info[0] = '\0';
+	}
+	else
+	{
+		if(Last_client > 0)
+		{
+			strcat(dns_client_info,"+");
+			curr_conns[index++] = Last_client;
+		}
+		else
+		{
+			strcat(dns_client_info,"-");
+			curr_conns[index++] = -Last_client;
+		}
+	}
+	
+	for(i=0; i<index;i++)
+	{
+		dna_get_node_task(curr_conns[i], node, task);
+		strcat(dns_client_info,task);
+		strcat(dns_client_info,"@");
+		strcat(dns_client_info,node);
+		strcat(dns_client_info,"|");
+	}
+	if(index)
+		dns_client_info[strlen(dns_client_info)-1] = '\0';
+	*bufp = (int *)dns_info_buffer;
+	*size = strlen(dns_info_buffer)+1;
+}
+
+void append_service(char *service_info_buffer, SERVICE *servp)		
+{
+	char name[MAX_NAME], *ptr;
+
+		if(strstr(servp->name,"/RpcIn"))
+		{
+			strcpy(name,servp->name);
+			ptr = (char *)strstr(name,"/RpcIn");
+			*ptr = 0;
+			strcat(service_info_buffer, name);
+			strcat(service_info_buffer, "|");
+			if(servp->def[0])
+			{
+				strcat(service_info_buffer, servp->def);
+			}
+			strcat(name,"/RpcOut");
+			if( (servp = find_service(name)) )
+			{
+				strcat(service_info_buffer, ",");
+				if(servp->def[0])
+				{
+					strcat(service_info_buffer, servp->def);
+				}
+			}
+			strcat(service_info_buffer, "|RPC");
+			strcat(service_info_buffer, "\n");
+		}
+		else if(strstr(servp->name,"/RpcOut"))
+		{
+/*
+			if(servp->def[0])
+			{
+				strcat(service_info_buffer, servp->def);
+			}
+			strcat(service_info_buffer, "|RPC");
+			strcat(service_info_buffer, "\n");
+
+*/
+		}
+		else
+		{
+			strcat(service_info_buffer, servp->name);
+			strcat(service_info_buffer, "|");
+			if(servp->def[0])
+			{
+				strcat(service_info_buffer, servp->def);
+			}
+			strcat(service_info_buffer, "|");
+			if(servp->type == COMMAND)
+			{
+				strcat(service_info_buffer, "CMD");
+			}
+			strcat(service_info_buffer, "\n");
+		}
+}
+
+void service_info(long *tag, int **bufp, int *size, int *first_time)
+{
+	register SERVICE *servp;
+	int max_size, done = 0;
+	static int curr_allocated_size = 0;
+	static char *service_info_buffer;
+	char *buff_ptr;
+	DIS_DNS_CONN *dnsp = (DIS_DNS_CONN *)*tag;
+	int hash_index;
+
+	DISABLE_AST
+	max_size = (dnsp->dis_n_services+10) * (MAX_NAME*2 + 4);
+	if(!curr_allocated_size)
+	{
+		service_info_buffer = (char *)malloc(max_size);
+		curr_allocated_size = max_size;
+	}
+	else if (max_size > curr_allocated_size)
+	{
+		free(service_info_buffer);
+		service_info_buffer = (char *)malloc(max_size);
+		curr_allocated_size = max_size;
+	}
+	service_info_buffer[0] = '\0';
+	buff_ptr = service_info_buffer;
+	servp = 0;
+	hash_index = -1;
+	if(*first_time)
+	{
+		while( (servp = dis_hash_service_get_next(&hash_index, servp, 0)) )
+		{
+			if(servp->dnsp != dnsp)
+				continue;
+			if(servp->registered)
+			{
+				servp->registered = 2;
+				append_service(buff_ptr, servp);
+				buff_ptr += strlen(buff_ptr);
+			}
+		}
+	}
+	else
+	{
+		while( (servp = dis_hash_service_get_next(&hash_index, servp, 0)) )
+		{
+			if(servp->dnsp != dnsp)
+				continue;
+			if(servp->registered == 1)
+			{
+				if(!done)
+				{
+					strcat(buff_ptr, "+");
+					buff_ptr += strlen(buff_ptr);
+					done = 1;
+				}
+				append_service(buff_ptr, servp);
+				buff_ptr += strlen(buff_ptr);
+				servp->registered = 2;
+			}
+			else if(servp->registered == 0)
+			{
+				strcat(buff_ptr, "-");
+				buff_ptr += strlen(buff_ptr);
+				append_service(buff_ptr, servp);
+				buff_ptr += strlen(buff_ptr);
+			}
+		}
+	}
+	*bufp = (int *)service_info_buffer;
+	*size = buff_ptr - service_info_buffer+1;
+	ENABLE_AST
+}
+		
+void add_exit_handler(int *tag, int *bufp, int *size)
+{
+	EXIT_H *newp;
+
+	if(size){}
+	if(tag){}
+	if(*bufp)
+	{
+		if(!Exit_h_head) 
+		{
+			Exit_h_head = (EXIT_H *)malloc(sizeof(EXIT_H));
+			sll_init( (SLL *) Exit_h_head );
+		}
+		newp = (EXIT_H *)malloc(sizeof(EXIT_H));
+		newp->conn_id = Curr_conn_id;
+		newp->exit_id = *bufp;
+		sll_insert_queue( (SLL *) Exit_h_head, (SLL *) newp );
+	}
+	else
+	{
+		if(!Exit_h_head) 
+			return;
+		if((newp = (EXIT_H *)sll_search((SLL *) Exit_h_head, 
+			(char *)&Curr_conn_id, 4)) )
+		{
+			sll_remove( (SLL *) Exit_h_head, (SLL *) newp );
+		}
+	}
+}
+
+void dis_set_client_exit_handler(int conn_id, int tag)
+{
+	EXIT_H *newp;
+
+	DISABLE_AST
+	if(tag)
+	{
+		if(!Exit_h_head) 
+		{
+			Exit_h_head = (EXIT_H *)malloc(sizeof(EXIT_H));
+			sll_init( (SLL *) Exit_h_head );
+		}
+		if( (newp = (EXIT_H *)sll_search((SLL *) Exit_h_head, 
+			(char *)&conn_id, 4)) )
+		{
+			newp->conn_id = conn_id;
+			newp->exit_id = tag;
+		}
+		else
+		{
+			newp = (EXIT_H *)malloc(sizeof(EXIT_H));
+			newp->conn_id = conn_id;
+			newp->exit_id = tag;
+			sll_insert_queue( (SLL *) Exit_h_head, (SLL *) newp );
+		}
+	}
+	else
+	{
+		if(!Exit_h_head) 
+		{
+			ENABLE_AST
+			return;
+		}
+		if( (newp = (EXIT_H *)sll_search((SLL *) Exit_h_head, 
+			(char *)&conn_id, 4)) )
+		{
+			sll_remove( (SLL *) Exit_h_head, (SLL *) newp );
+		}
+	}
+	ENABLE_AST
+}
+
+int do_exit_handler(int conn_id)
+{
+	register EXIT_H *exitp;
+
+	DISABLE_AST;
+	if(!Exit_h_head)
+	{
+		ENABLE_AST;
+		return(0);
+	}
+	while( (exitp = (EXIT_H *) sll_search_next_remove((SLL *) Exit_h_head,
+							 0, (char *) &conn_id, 4)) )
+	{
+		(Client_exit_user_routine)( &exitp->exit_id );
+		free(exitp);
+	}
+	ENABLE_AST
+	return(1);
+}
+
+static void exit_handler(int *tag, int *bufp, int *size)
+{
+
+	if(size){}
+	if(tag){}
+	if(Exit_user_routine)
+		(Exit_user_routine)( bufp );
+	else
+	{
+/*
+		printf("%s PID %d Exiting!\n", Task_name, getpid());
+*/
+		exit(*bufp);
+	}
+}
+
+static void error_handler(int conn_id, int severity, int errcode, char *reason)
+{
+	int exit_tag, exit_code, exit_size;
+	int last_conn_id;
+
+	if(Error_user_routine)
+	{
+			Error_conn_id = conn_id;
+			last_conn_id = Curr_conn_id;
+			Curr_conn_id = conn_id;
+			(Error_user_routine)( severity, errcode, reason);
+			Error_conn_id = 0;
+			Curr_conn_id = last_conn_id;
+	}
+	else
+	{
+		dim_print_msg(reason, severity);
+	}
+	if(severity == DIM_FATAL)
+	{
+		exit_tag = 0;
+		exit_code = errcode;
+		exit_size = sizeof(int);
+		exit_handler(&exit_tag, &exit_code, &exit_size);
+	}
+}
+/*
+#define MAX_HASH_ENTRIES 2000
+*/
+#define MAX_HASH_ENTRIES 5000
+
+static SERVICE *Service_hash_table[MAX_HASH_ENTRIES];
+static int Service_new_entries[MAX_HASH_ENTRIES];
+
+int dis_hash_service_init()
+{
+  int i;
+  static int done = 0;
+
+  if(!done)
+  {
+	for( i = 0; i < MAX_HASH_ENTRIES; i++ ) 
+	{
+		Service_hash_table[i] = (SERVICE *) malloc(8);
+		dll_init((DLL *) Service_hash_table[i]);
+		Service_new_entries[i] = 0;
+	}
+	done = 1;
+  }
+  return(1);
+}
+
+int dis_hash_service_insert(SERVICE *servp)
+{
+	int index;
+	index = HashFunction(servp->name, MAX_HASH_ENTRIES);
+	Service_new_entries[index]++;
+	dll_insert_queue((DLL *) Service_hash_table[index], 
+			 (DLL *) servp);
+	return(1);
+}
+
+int dis_hash_service_registered(int index, SERVICE *servp)
+{
+	servp->registered = 1;
+	Service_new_entries[index]--;
+	if(Service_new_entries[index] < 0)
+		Service_new_entries[index] = 0;
+	return 1;
+}
+
+int dis_hash_service_remove(SERVICE *servp)
+{
+	dll_remove( (DLL *) servp );
+	return(1);
+}
+
+
+SERVICE *dis_hash_service_exists(char *name)
+{
+	int index;
+	SERVICE *servp;
+
+	index = HashFunction(name, MAX_HASH_ENTRIES);
+	if( (servp = (SERVICE *) dll_search(
+					(DLL *) Service_hash_table[index],
+			      		name, strlen(name)+1)) )
+	{
+		return(servp);
+	}
+	return((SERVICE *)0);
+}			
+
+SERVICE *dis_hash_service_get_next(int *curr_index, SERVICE *prevp, int new_entries)
+{
+	int index;
+	SERVICE *servp = 0;
+/*
+	if(!prevp)
+	{
+		index = -1;
+	}
+*/
+	index = *curr_index;
+	if(index == -1)
+	{
+		index++;
+		prevp = Service_hash_table[index];
+	}
+	if(!prevp)
+	{
+		prevp = Service_hash_table[index];
+	}
+	do
+	{
+		if((!new_entries) || (Service_new_entries[index] > 0))
+		{
+			servp = (SERVICE *) dll_get_next(
+						(DLL *) Service_hash_table[index],
+						(DLL *) prevp);
+			if(servp)
+				break;
+		}
+		index++;
+		if(index == MAX_HASH_ENTRIES)
+		{
+			*curr_index = -1;
+			return((SERVICE *) 0);
+		}
+		prevp = Service_hash_table[index];
+	} while(!servp);
+	*curr_index = index;
+	return(servp);
+}
+
+DIS_DNS_CONN *dis_find_dns(long dnsid)
+{
+	DIS_DNS_CONN *dnsp;
+
+	dnsp = (DIS_DNS_CONN *)
+			dll_search( (DLL *) DNS_head, &dnsid, sizeof(dnsid));
+/*
+	if(!dnsp)
+	{
+		dnsp = create_dns(dnsid);
+	}
+*/
+	return dnsp;
+}
+
+int dis_no_dns()
+{
+	DIS_DNS_CONN *dnsp;
+
+	dnsp = (DIS_DNS_CONN *) DNS_head;
+	while ( (dnsp = (DIS_DNS_CONN *) dll_get_next( (DLL *) DNS_head, (DLL *) dnsp)))
+	{
+/*
+		if(dnsp != Default_DNS)
+			return 0;
+*/
+		if(dnsp->serving)
+			return 0;
+	}
+	return 1;
+}
+
+DIS_DNS_CONN *find_dns_by_conn_id(int conn_id)
+{
+	DIS_DNS_CONN *dnsp;
+	extern long dns_get_dnsid();
+	long dnsid;
+
+	dnsid = dns_get_dnsid(conn_id, SRC_DIS);
+	dnsp = dis_find_dns(dnsid);
+	if(!dnsp)
+		dnsp = Default_DNS;
+	return (DIS_DNS_CONN *)dnsp;
+}
+
+void dis_print_hash_table()
+{
+	SERVICE *servp;
+	int i;
+	int n_entries, max_entry_index = 0;
+	int max_entries = 0;
+
+	for( i = 0; i < MAX_HASH_ENTRIES; i++ ) 
+	{
+		n_entries = 0;
+		servp = Service_hash_table[i];
+		while( (servp = (SERVICE *) dll_get_next(
+						(DLL *) Service_hash_table[i],
+						(DLL *) servp)) )
+		{
+			n_entries++;
+			if(n_entries == 1)
+				printf("    Name = %s\n",servp->name);
+		}
+		if(n_entries != 0)
+			printf("HASH[%d] - %d entries\n", i, n_entries);
+		if(n_entries > max_entries)
+		{
+			max_entries = n_entries;
+			max_entry_index = i;
+		}
+	}
+	printf("Maximum : HASH[%d] - %d entries\n", max_entry_index, max_entries);  
+	fflush(stdout);
+}
+
+void dis_hash_print()
+{
+	SERVICE *servp;
+	int hash_index;
+
+	servp = 0;
+	hash_index = -1;
+	while( (servp = dis_hash_service_get_next(&hash_index, servp, 0)) )
+	{
+		printf("Name = %s\n",servp->name);
+	}
+}
+
+#ifdef VMS
+/* CFORTRAN WRAPPERS */
+FCALLSCFUN1(INT, dis_start_serving, DIS_START_SERVING, dis_start_serving,
+				 STRING)
+FCALLSCFUN3(INT, dis_get_next_cmnd, DIS_GET_NEXT_CMND, dis_get_next_cmnd,
+				 PINT, PVOID, PINT)
+FCALLSCFUN1(INT, dis_get_client, DIS_GET_CLIENT, dis_get_client,
+				 PSTRING)
+FCALLSCFUN6(INT, dis_add_service, DIS_ADD_SERVICE, dis_add_service,
+				 STRING, PVOID, PVOID, INT, PVOID, INT)
+FCALLSCSUB4(	 dis_add_cmnd, DIS_ADD_CMND, dis_add_cmnd,
+				 STRING, PVOID, PVOID, INT)
+FCALLSCSUB1(	 dis_add_client_exit_handler, DIS_ADD_CLIENT_EXIT_HANDLER, 
+				 dis_add_client_exit_handler,
+				 PVOID)
+FCALLSCSUB2(	 dis_set_client_exit_handler, DIS_SET_CLIENT_EXIT_HANDLER, 
+				 dis_set_client_exit_handler,
+				 INT, INT)
+FCALLSCSUB1(	 dis_add_exit_handler, DIS_ADD_EXIT_HANDLER, 
+				 dis_add_exit_handler,
+				 PVOID)
+FCALLSCSUB1(	 dis_report_service, DIS_REPORT_SERVICE, dis_report_service,
+				 STRING)
+FCALLSCSUB2(	 dis_convert_str, DIS_CONVERT_STR, dis_convert_str,
+				 PVOID, PVOID)
+FCALLSCFUN1(INT, dis_update_service, DIS_UPDATE_SERVICE, dis_update_service,
+				 INT)
+FCALLSCFUN1(INT, dis_remove_service, DIS_REMOVE_SERVICE, dis_remove_service,
+				 INT)
+FCALLSCSUB3(	 dis_send_service, DIS_SEND_SERVICE, dis_send_service,
+				 INT, PVOID, INT)
+FCALLSCSUB2(	 dis_set_quality, DIS_SET_QUALITY, dis_set_quality,
+                 INT, INT)
+FCALLSCSUB3(INT, dis_set_timestamp, DIS_SET_TIMESTAMP, dis_set_timestamp,
+                 INT, INT, INT)
+FCALLSCFUN2(INT, dis_selective_update_service, DIS_SELECTIVE_UPDATE_SERVICE, 
+				 dis_selective_update_service,
+				 INT, PINT)
+FCALLSCSUB3(INT, dis_get_timestamp, DIS_GET_TIMESTAMP, dis_get_timestamp,
+                 INT, PINT, PINT)
+#endif
Index: branches/testFACT++branch/dim/src/discpp.cxx
===================================================================
--- branches/testFACT++branch/dim/src/discpp.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/discpp.cxx	(revision 18277)
@@ -0,0 +1,1609 @@
+#define DIMLIB
+#include <dis.hxx>
+#include "tokenstring.hxx"
+//#include <iostream>
+//using namespace std;
+#include <time.h>
+//#include <sys/timeb.h>
+
+DimClientExitHandler *DimServer::itsClientExit = 0;
+DimExitHandler *DimServer::itsExit = 0;
+DimErrorHandler *DimServer::itsSrvError = 0;
+char *DimServer::itsName = 0;
+char *DimServer::clientName = 0;
+char *DimServer::dimDnsNode = 0;
+int DimServer::autoStart = 1;
+//int DimServer::itsNServices = 0;
+
+extern "C" {
+extern void dis_init();
+
+static void user_routine( void *tagp, void **buf, int *size, int *first_time)
+{
+//	int *tag = (int *)tagp;
+//	int id = *tag;
+	DimService *t;
+
+	if(first_time){}
+//	t = (DimService *)id_get_ptr(id, SRC_DIS);
+	t = *(DimService **)tagp;
+	if( t->itsServiceHandler ) {
+		t->itsServiceHandler->itsService = t;
+		DimCore::inCallback = 2;
+		t->itsServiceHandler->serviceHandler();
+		DimCore::inCallback = 0;
+	}
+	else
+	{
+		DimCore::inCallback = 2;
+		t->serviceHandler();
+		DimCore::inCallback = 0;
+	}
+	if( t->itsType == DisSTRING)
+			t->itsSize = (int)strlen((char *)t->itsData)+1;
+	*buf = t->itsData;
+	*size = t->itsSize;
+}
+}
+
+void DimService::declareIt(char *name, char *format, DimServiceHandler *handler, DimServerDns *dns)
+{
+//	itsTagId = 0;
+	itsDns = dns;
+	itsName = new char[(int)strlen(name)+1];
+	itsDataSize = 0;
+	strcpy( itsName, name);
+	if(handler)
+		itsServiceHandler = handler;
+	else
+		itsServiceHandler = 0;
+//	itsTagId = id_get((void *)this, SRC_DIS);
+	dis_init();
+	if(itsDns == 0)
+	{
+		DISABLE_AST
+		itsId = dis_add_service( name, format, NULL, 0, 
+//				user_routine, itsTagId);
+				user_routine, (dim_long)this);
+		ENABLE_AST
+		DimServer::start();
+	}
+	else
+	{
+		DISABLE_AST
+		itsId = dis_add_service_dns( itsDns->getDnsId(), name, format, NULL, 0, 
+//				user_routine, itsTagId);
+				user_routine, (dim_long)this);
+		ENABLE_AST
+//		itsDns->addServiceId(itsId);
+		DimServer::start(itsDns);
+	}
+}
+
+void DimService::storeIt(void *data, int size)
+{
+	DISABLE_AST
+	if(!itsId)
+	{
+		ENABLE_AST
+		return;
+	}
+	if(!itsDataSize)
+	{
+		itsData = new char[size];
+		itsDataSize = size;
+	}
+	else if(itsDataSize < size)
+	{
+		delete[] (char *)itsData;
+		itsData = new char[size];
+		itsDataSize = size;
+	}
+	memcpy(itsData, data, (size_t)size);
+	itsSize = size;
+	ENABLE_AST
+}
+
+extern "C" {
+static void command_routine( void *tagp, void *buf, int *size)
+{
+//	int *tag = (int *)tagp;
+//	int id = *tag;
+	DimCommand *t;
+
+//	t = (DimCommand *)id_get_ptr(id, SRC_DIS);
+	t = *(DimCommand **)tagp;
+	t->itsData = buf;
+	t->itsSize = *size;
+	t->secs = 0;
+	if( t->itsCommandHandler ) {
+		t->itsCommandHandler->itsCommand = t;
+		DimCore::inCallback = 2;
+		t->itsCommandHandler->commandHandler();
+		DimCore::inCallback = 0;
+	}
+	else
+	{
+		DimCore::inCallback = 2;
+		t->commandHandler();
+		DimCore::inCallback = 0;
+	}
+	t->itsData = 0;
+	t->itsSize = 0;
+}
+}
+
+void DimCommand::declareIt(char *name, char *format, DimCommandHandler *handler, DimServerDns *dns)
+{
+//	itsTagId = 0;
+	itsId = 0;
+	itsDns = dns;
+	itsName = new char[(int)strlen(name)+1];
+	strcpy( itsName, name);
+	itsFormat = new char[(int)strlen(format)+1];
+	strcpy( itsFormat, format);
+	currCmnd = 0;
+	if(handler)
+		itsCommandHandler = handler;
+	else
+		itsCommandHandler = 0;
+//	itsTagId = id_get((void *)this, SRC_DIS);
+	dis_init();
+	if(!itsDns)
+	{
+		DISABLE_AST
+		itsId = dis_add_cmnd( name, format, command_routine,
+//				itsTagId);
+				(dim_long)this);
+		ENABLE_AST
+		DimServer::start();
+	}
+	else
+	{
+		DISABLE_AST
+		itsId = dis_add_cmnd_dns( itsDns->getDnsId(), name, format, command_routine,
+//			itsTagId);
+			(dim_long)this);
+		ENABLE_AST
+//		itsDns->addServiceId(itsId);
+		DimServer::start(itsDns);
+	}
+}
+
+extern "C" {
+/*
+static void timeout_rout(DimRpc *t)
+{
+	sleep(t->itsTimeout);
+	t->itsKilled = 1;
+}
+*/
+static void rpcin_routine( void *tagp, void *buf, int *size)
+{
+	time_t tt1 = 0, tt2 = 0;
+
+//	int *tag = (int *)tagp;
+//	int id = *tag;
+	DimRpc *t;
+	int tout, clientId, ids[2];
+//	long tid;
+
+//	t = (DimRpc *)id_get_ptr(id, SRC_DIS);
+	t = *(DimRpc **)tagp;
+	t->itsDataIn = buf;
+	t->itsSizeIn = *size;
+	clientId = dis_get_conn_id();
+	tout = dis_get_timeout(t->itsIdOut, clientId);
+	t->itsTimeout = tout;
+//	tid = 0;
+	if(tout > 0)
+	{
+		tt1 = time((time_t *)0);
+		t->itsKilled = 0;
+//		dtq_start_timer(t->itsTimeout,(void(*)(void *))timeout_rout,(void *)t);
+//		tid = dim_start_thread((void(*)(void *))timeout_rout,(void *)t);
+	}
+	DimCore::inCallback = 2;
+	t->rpcHandler();
+	DimCore::inCallback = 0;
+	t->itsDataIn = 0;
+	t->itsSizeIn = 0;
+	if(tout > 0)
+	{
+		tt2 = time((time_t *)0);
+		if((tt2 - tt1) > tout)
+			t->itsKilled = 1;
+	}
+	if(!t->itsKilled)
+	{
+//		if(tid)
+//		{
+//			dtq_stop_timer((void *)t);
+//			dim_stop_thread(tid);
+//		}
+		ids[0] = clientId;
+		ids[1] = 0;
+		dis_selective_update_service(t->itsIdOut, ids);
+	}
+}
+
+}
+
+extern "C" {
+static void rpcout_routine( void *tagp, void **buf, int *size, int *first_time)
+{
+//	int *tag = (int *)tagp;
+//	int id = *tag;
+	DimRpc *t;
+
+	if(first_time){}
+//	t = (DimRpc *)id_get_ptr(id, SRC_DIS);
+	t = *(DimRpc**)tagp;
+	*buf = t->itsDataOut;
+	*size = t->itsSizeOut;
+}
+}
+
+void DimRpc::declareIt(char *name, char *formatin, char *formatout, DimServerDns *dns)
+{
+//	itsTagId = 0;
+	itsIdIn = 0;
+	itsIdOut = 0;
+	itsDns = dns;
+	itsName = new char[(int)strlen(name)+1];
+	strcpy( itsName, name);
+	itsNameIn = new char[(int)strlen(name)+1+10];
+	strcpy( itsNameIn, name);
+	strcat(itsNameIn,(char *)"/RpcIn");
+	itsNameOut = new char[(int)strlen(name)+1+10];
+	strcpy( itsNameOut, name);
+	strcat(itsNameOut,(char *)"/RpcOut");
+	itsDataOut = new char[1];
+	itsDataOutSize = itsSizeOut = 1;
+	itsKilled = 0;
+	itsTimeout = 0;
+	
+//	itsTagId = id_get((void *)this, SRC_DIS);
+	dis_init();
+	if(!itsDns)
+	{
+		DISABLE_AST
+		itsIdIn = dis_add_cmnd( itsNameIn, formatin, 
+//			rpcin_routine, itsTagId);
+			rpcin_routine, (dim_long)this);
+		itsIdOut = dis_add_service( itsNameOut, formatout, 0,0, 
+//			rpcout_routine, itsTagId);
+			rpcout_routine, (dim_long)this);
+		ENABLE_AST
+		DimServer::start();
+	}
+	else
+	{
+		DISABLE_AST
+		itsIdIn = dis_add_cmnd_dns( itsDns->getDnsId(), itsNameIn, formatin, 
+//			rpcin_routine, itsTagId);
+			rpcin_routine, (dim_long)this);
+		itsIdOut = dis_add_service_dns( itsDns->getDnsId(), itsNameOut, formatout, 0,0, 
+//			rpcout_routine, itsTagId);
+			rpcout_routine, (dim_long)this);
+		ENABLE_AST
+//		itsDns->addServiceId(itsIdIn);
+//		itsDns->addServiceId(itsIdOut);
+		DimServer::start(itsDns);
+	}
+}
+
+void DimRpc::storeIt(void *data, int size)
+{
+	DISABLE_AST
+	if(!itsIdIn)
+	{
+		ENABLE_AST
+		return;
+	}
+	if(!itsDataOutSize)
+	{
+		itsDataOut = new char[size];
+		itsDataOutSize = size;
+	}
+	else if(itsDataOutSize < size)
+	{
+		delete[] (char *)itsDataOut;
+		itsDataOut = new char[size];
+		itsDataOutSize = size;
+	}
+	memcpy(itsDataOut, data, (size_t)size);
+	itsSizeOut = size;
+	ENABLE_AST
+}
+
+extern "C" {
+static void client_exit_user_routine(int*);
+static void exit_user_routine(int*);
+static void srv_error_user_routine(int, int, char*);
+}
+
+DimServerDns::DimServerDns(const char *node)
+{
+	init(node, 0);
+}
+	
+DimServerDns::DimServerDns(const char *node, int port)
+{
+	init(node, port);
+}
+
+DimServerDns::DimServerDns(const char *node, int port, char *name)
+{
+	init(node, port);
+	DimServer::start(this, name);
+}
+	
+#define DisDnsIdBlock 100
+
+void DimServerDns::init(const char *node, int port)
+{
+//	if(!itsNode)
+//	{
+		itsNode = new char[(int)strlen(node)+1];
+		strcpy(itsNode,node);
+//	}
+	itsPort = port;
+	autoStart = 1;
+	itsName = 0;
+	itsServiceIdList = new int[DisDnsIdBlock];
+	itsServiceIdListSize = DisDnsIdBlock;
+	itsNServiceIds = 0;
+//	itsNServices = 0;
+	itsDnsId = DimServer::addDns(node, port);
+}
+
+void DimServerDns::addServiceId(int id)
+{
+	int *tmp;
+
+	DISABLE_AST
+	if((itsNServiceIds + 2) > itsServiceIdListSize)
+	{
+		tmp = new int[itsServiceIdListSize + DisDnsIdBlock];
+		memcpy(tmp, itsServiceIdList, (size_t)itsServiceIdListSize*sizeof(int));
+		delete itsServiceIdList;
+		itsServiceIdList = tmp;
+		itsServiceIdListSize += DisDnsIdBlock;
+	}
+	itsServiceIdList[itsNServiceIds] = id;
+	itsServiceIdList[itsNServiceIds+1] = 0;
+	itsNServiceIds++;
+	ENABLE_AST
+}
+
+int *DimServerDns::getServiceIdList()
+{
+	int *list;
+	if(itsNServiceIds)
+		list = itsServiceIdList;
+	else
+		list = 0;
+	itsNServiceIds = 0;
+	return list;
+}
+
+DimServerDns::~DimServerDns()
+{
+	if(itsName)
+	{
+		DimServer::stop(this);
+//		if(itsName)
+//			delete[] itsName;
+	}
+//	if(itsNode)
+		delete[] itsNode;
+}
+
+dim_long DimServerDns::getDnsId()
+{
+	return itsDnsId;
+}
+
+void DimServerDns::setName(const char *name)
+{
+	if(!itsName)
+	{
+		itsName = new char[(int)strlen(name)+1];
+		strcpy(itsName,name);
+	}
+}
+
+void DimServerDns::clearName()
+{
+	if(itsName)
+	{
+		delete[] itsName;
+		itsName = 0;
+	}
+}
+
+char *DimServerDns::getName()
+{
+	return itsName;
+}
+
+void DimServerDns::autoStartOn()
+{
+	autoStart = 1;
+}
+
+void DimServerDns::autoStartOff()
+{
+	autoStart = 0;
+}
+
+int DimServerDns::isAutoStart()
+{
+	return autoStart;
+}
+
+DimServer::DimServer()
+{
+	itsClientExit = this; 
+	itsExit = this;
+	itsSrvError = this;
+//	itsNServices = 0;
+}
+
+DimServer::~DimServer() 
+{
+	if(itsName)
+	{
+		dis_stop_serving();
+		delete[] itsName;
+	}
+	if(clientName)
+		delete[] clientName;
+	if(dimDnsNode)
+		delete[] dimDnsNode;
+}
+
+void DimServer::start(const char *name)
+{
+	if(!itsName)
+	{
+		itsName = new char[(int)strlen(name)+1];
+		strcpy(itsName,name);
+	}
+	dis_start_serving(itsName);
+}
+
+void DimServer::start(DimServerDns *dns, const char *name)
+{
+	dim_long dnsid;
+
+	dis_init();
+	{
+	DISABLE_AST
+	dns->setName(name);
+	dnsid = dns->getDnsId();
+	dis_start_serving_dns(dnsid, (char *)name /*, dns->getServiceIdList()*/);
+	ENABLE_AST
+	}
+}
+/*
+void DimServer::threadHandler()
+{
+	int oldNServices;
+
+	while(1)
+	{
+		oldNServices = itsNServices;
+		usleep(100000);
+		if(oldNServices == itsNServices)
+			break;
+	}
+cout << "Starting " << itsNServices << endl;
+	{
+		DISABLE_AST
+		dis_start_serving(itsName);
+		itsNServices = 0;
+		ENABLE_AST
+	}
+
+}
+*/
+void DimServer::start()
+{
+//	itsNServices++;
+	if((itsName) && (autoStart))
+	{
+//		DimThread::start();
+		dis_start_serving(itsName);
+	}
+}
+
+void DimServer::start(DimServerDns *dns)
+{
+	dim_long dnsid;
+	char *name;
+	int isAuto;
+
+	dis_init();
+	{
+	DISABLE_AST
+//	dns->itsNServices++;
+
+	name = dns->getName();
+	dnsid = dns->getDnsId();
+	isAuto = dns->isAutoStart();
+	if((name) && (isAuto))
+	{
+//		DimThread::start();
+		dis_start_serving_dns(dnsid, (char *)name /*, dns->getServiceIdList()*/);
+	}
+	ENABLE_AST
+	}
+}
+
+void DimServer::stop()
+{
+	dis_stop_serving();
+	if(itsName)
+	{
+		delete[] itsName;
+		itsName = 0;
+	}
+}
+
+void DimServer::stop(DimServerDns *dns)
+{
+	dis_stop_serving_dns(dns->getDnsId());
+	dns->clearName();
+}
+
+void DimServer::autoStartOn()
+{
+	autoStart = 1;
+}
+
+void DimServer::autoStartOff()
+{
+	autoStart = 0;
+}
+	
+int DimServer::getClientId()
+{
+	if(!clientName)
+		clientName = new char[128];
+	clientName[0] = '\0';
+	return dis_get_client(clientName);
+}
+	
+char *DimServer::getClientName()
+{
+	if(!clientName)
+		clientName = new char[128];
+	clientName[0] = '\0';
+	dis_get_client(clientName);
+	return(clientName);
+}
+/*
+char *DimServer::getClientServices()
+{
+	int id;
+	if((id = dis_get_conn_id()))
+		return dis_get_client_services(id);
+	return (char *)0;
+}
+
+char *DimServer::getClientServices(int clientId)
+{
+	return dis_get_client_services(clientId);
+}
+*/
+char **DimServer::getClientServices()
+{
+	static TokenString *data = 0;
+	int id, len = 0, index = 0;
+	char *services;
+	static char** list = 0;
+	char *sep;
+
+	if(data)
+	{
+		delete data;
+		data = 0;
+	}
+	if(list)
+	{
+		delete[] list;
+		list = 0;
+	}
+	if((id = dis_get_conn_id()))
+	{
+		services = dis_get_client_services(id);
+		if(services)
+		{
+			data = new TokenString(services,(char *)"\n");
+			len = data->getNTokens();
+			list = new char*[len];
+			while(data->getToken(list[index]))
+			{
+				data->getToken(sep);
+				index++;
+			}
+		}
+	}
+	if(!len)
+		list = new char*[1];
+	list[index] = 0;
+	return list;
+}
+
+void DimServer::setClientExitHandler(int clientId)
+{
+	dis_set_client_exit_handler(clientId, 1);
+}
+
+void DimServer::clearClientExitHandler(int clientId)
+{
+	dis_set_client_exit_handler(clientId, 0);
+}
+
+void DimServer::addClientExitHandler(DimClientExitHandler *handler)
+{
+	if(handler == 0)
+	{
+		dis_add_client_exit_handler(0);
+		DimServer::itsClientExit = 0;
+	}
+	else
+	{
+		DimServer::itsClientExit = handler;
+		dis_add_client_exit_handler(client_exit_user_routine);
+	}
+}
+
+void DimServer::addClientExitHandler()
+{
+	DimServer::itsClientExit = this;
+	dis_add_client_exit_handler(client_exit_user_routine);
+}
+
+void DimServer::addExitHandler(DimExitHandler *handler)
+{
+	if(handler == 0)
+	{
+		dis_add_exit_handler(0);
+		DimServer::itsExit = 0;
+	}
+	else
+	{
+		DimServer::itsExit = handler;
+		dis_add_exit_handler(exit_user_routine);
+	}
+}
+
+void DimServer::addErrorHandler(DimErrorHandler *handler)
+{
+	if(handler == 0)
+	{
+		dis_add_error_handler(0);
+		DimServer::itsSrvError = 0;
+	}
+	else
+	{
+		DimServer::itsSrvError = handler;
+		dis_add_error_handler(srv_error_user_routine);
+	}
+}
+
+int DimServer::setDnsNode(const char *node) 
+{
+	return dis_set_dns_node((char *)node); 
+}
+
+int DimServer::setDnsNode(const char *node, int port) 
+{
+	dis_set_dns_port(port);
+	return dis_set_dns_node((char *)node); 
+}
+
+dim_long DimServer::addDns(const char *node, int port) 
+{
+	return dis_add_dns((char *)node, port); 
+}
+char *DimServer::getDnsNode() 
+{
+	if(!dimDnsNode)
+		dimDnsNode = new char[256];
+	if(dis_get_dns_node(dimDnsNode))
+		return dimDnsNode;
+	else
+		return 0; 
+}
+
+int DimServer::getDnsPort() 
+{
+	return dis_get_dns_port();
+}
+
+void DimServer::setWriteTimeout(int secs)
+{
+	dim_set_write_timeout(secs); 
+}
+
+int DimServer::getWriteTimeout() 
+{
+	return dim_get_write_timeout();
+}
+
+void DimServer::addExitHandler()
+{
+	DimServer::itsExit = this;
+	dis_add_exit_handler(exit_user_routine);
+}
+
+void DimServer::addErrorHandler()
+{
+	DimServer::itsSrvError = this;
+	dis_add_error_handler(srv_error_user_routine);
+}
+
+int DimServer::inCallback()
+{
+	if(DimCore::inCallback)
+		return 1;
+	return 0;
+}
+
+extern "C" {
+static void client_exit_user_routine(int *idp)
+{
+	int id = *idp;
+
+	id++;
+	DimCore::inCallback = 2;
+	DimServer::itsClientExit->clientExitHandler();
+	DimCore::inCallback = 0;
+}
+
+static void exit_user_routine(int *idp)
+{
+//	int id = *idp;
+
+//	id++;
+	DimCore::inCallback = 2;
+	DimServer::itsExit->exitHandler(*idp);
+	DimCore::inCallback = 0;
+}
+
+static void srv_error_user_routine(int severity, int code, char *msg)
+{
+
+	DimCore::inCallback = 2;
+	if(DimServer::itsSrvError != 0)
+		DimServer::itsSrvError->errorHandler(severity, code, msg);
+	DimCore::inCallback = 0;
+}
+
+}
+
+
+DimService::DimService()
+{
+//	itsTagId = 0;
+	itsId = 0;
+	itsName = 0;
+}
+
+DimService::DimService(const char *name, int &value) 
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = &value;
+	itsSize = sizeof(int);
+	itsType = DisINT;
+	declareIt((char *)name, (char *)"L", 0, 0);
+}
+
+DimService::DimService(const char *name, float &value)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = &value;
+	itsSize = sizeof(float);
+	itsType = DisFLOAT;
+	declareIt((char *)name, (char *)"F", 0, 0);
+}
+
+DimService::DimService(const char *name, double &value)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = &value;
+	itsSize = sizeof(double);
+	itsType = DisDOUBLE;
+	declareIt((char *)name, (char *)"D", 0, 0);
+}
+
+DimService::DimService(const char *name, longlong &value)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = &value;
+	itsSize = sizeof(longlong);
+	itsType = DisXLONG;
+	declareIt((char *)name, (char *)"X", 0, 0);
+}
+
+DimService::DimService(const char *name, short &value)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = &value;
+	itsSize = sizeof(short);
+	itsType = DisSHORT;
+	declareIt((char *)name, (char *)"S", 0, 0);
+}
+
+DimService::DimService(const char *name, char *string)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = string;
+	itsSize = (int)strlen(string)+1;
+	itsType = DisSTRING;
+	declareIt((char *)name, (char *)"C", 0, 0);
+}
+
+DimService::DimService(const char *name, char *format, void *structure, int size)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = structure;
+	itsSize = size;
+	itsType = DisPOINTER;
+	declareIt((char *)name, (char *)format, 0, 0);
+}
+
+DimService::DimService(const char *name, char *format, DimServiceHandler *handler)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = 0;
+	itsSize = 0;
+	itsType = DisPOINTER;
+	declareIt((char *)name, (char *)format, handler, 0);
+}
+
+DimService::DimService(const char *name, const char *format, void *structure, int size)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = structure;
+	itsSize = size;
+	itsType = DisPOINTER;
+	declareIt((char *)name, (char *)format, 0, 0);
+}
+
+DimService::DimService(const char *name, const char *format, DimServiceHandler *handler)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = 0;
+	itsSize = 0;
+	itsType = DisPOINTER;
+	declareIt((char *)name, (char *)format, handler, 0);
+}
+
+// with Dns
+
+DimService::DimService(DimServerDns *dns, const char *name, int &value) 
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = &value;
+	itsSize = sizeof(int);
+	itsType = DisINT;
+	declareIt((char *)name, (char *)"L", 0, dns);
+}
+
+DimService::DimService(DimServerDns *dns, const char *name, float &value)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = &value;
+	itsSize = sizeof(float);
+	itsType = DisFLOAT;
+	declareIt((char *)name, (char *)"F", 0, dns);
+}
+
+DimService::DimService(DimServerDns *dns, const char *name, double &value)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = &value;
+	itsSize = sizeof(double);
+	itsType = DisDOUBLE;
+	declareIt((char *)name, (char *)"D", 0, dns);
+}
+
+DimService::DimService(DimServerDns *dns, const char *name, longlong &value)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = &value;
+	itsSize = sizeof(longlong);
+	itsType = DisXLONG;
+	declareIt((char *)name, (char *)"X", 0, dns);
+}
+
+DimService::DimService(DimServerDns *dns, const char *name, short &value)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = &value;
+	itsSize = sizeof(short);
+	itsType = DisSHORT;
+	declareIt((char *)name, (char *)"S", 0, dns);
+}
+
+DimService::DimService(DimServerDns *dns, const char *name, char *string)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = string;
+	itsSize = (int)strlen(string)+1;
+	itsType = DisSTRING;
+	declareIt((char *)name, (char *)"C", 0, dns);
+}
+
+DimService::DimService(DimServerDns *dns, const char *name, char *format, void *structure, int size)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = structure;
+	itsSize = size;
+	itsType = DisPOINTER;
+	declareIt((char *)name, (char *)format, 0, dns);
+}
+
+DimService::DimService(DimServerDns *dns, const char *name, char *format, DimServiceHandler *handler)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = 0;
+	itsSize = 0;
+	itsType = DisPOINTER;
+	declareIt((char *)name, (char *)format, handler, dns);
+}
+
+
+DimService::DimService(DimServerDns *dns, const char *name, const char *format, void *structure, int size)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = structure;
+	itsSize = size;
+	itsType = DisPOINTER;
+	declareIt((char *)name, (char *)format, 0, dns);
+}
+
+DimService::DimService(DimServerDns *dns, const char *name, const char *format, DimServiceHandler *handler)
+{
+	itsId = 0;
+	itsName = 0;
+	itsData = 0;
+	itsSize = 0;
+	itsType = DisPOINTER;
+	declareIt((char *)name, (char *)format, handler, dns);
+}
+
+
+DimService::~DimService()
+{
+	DISABLE_AST
+	if(itsName)
+		delete[] itsName;
+	if(itsDataSize)
+		delete[] (char *)itsData;
+//	if(itsTagId)
+//		id_free(itsTagId, SRC_DIS);
+	if(itsId)
+		dis_remove_service( itsId );
+	itsId = 0;
+	ENABLE_AST
+}
+
+int DimService::updateService()
+{
+	if(!itsId)
+		return 0;
+	return dis_update_service( itsId );
+}
+
+int DimService::updateService( int &value )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisINT)
+	{
+		itsData = &value;
+		return dis_update_service( itsId );
+	}
+	return -1;
+}
+
+int DimService::updateService( float &value )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisFLOAT) {
+		itsData = &value;
+		return dis_update_service( itsId );
+	}
+	return -1;
+}
+
+int DimService::updateService( double &value )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisDOUBLE) {
+		itsData = &value;
+		return dis_update_service( itsId );
+	}
+	return -1;
+}
+
+int DimService::updateService( longlong &value )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisXLONG)
+	{
+		itsData = &value;
+		return dis_update_service( itsId );
+	}
+	return -1;
+}
+
+int DimService::updateService( short &value )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisSHORT)
+	{
+		itsData = &value;
+		return dis_update_service( itsId );
+	}
+	return -1;
+}
+
+int DimService::updateService( char *string )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisSTRING)
+	{
+		itsData = string;
+		itsSize = (int)strlen(string)+1;
+		return dis_update_service( itsId );
+	}
+	return -1;
+}
+	
+int DimService::updateService( void *structure, int size )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisPOINTER)
+	{
+		itsData = structure;
+		itsSize = size;
+		return dis_update_service( itsId );
+	}
+	return -1;
+}
+	
+int DimService::selectiveUpdateService(int *cids)
+{
+	if(!itsId)
+		return 0;
+	if( cids == 0)
+	{
+		int ids[2];
+		ids[0] = DimServer::getClientId();
+		ids[1] = 0;
+		return dis_selective_update_service( itsId, ids );
+	} 
+	return dis_selective_update_service( itsId, cids );
+}
+
+int DimService::selectiveUpdateService( int &value, int *cids)
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisINT)
+	{
+		itsData = &value;
+		if( cids == 0)
+		{
+			int ids[2];
+			ids[0] = DimServer::getClientId();
+			ids[1] = 0;
+			return dis_selective_update_service( itsId, ids );
+		} 
+		return dis_selective_update_service( itsId, cids );
+	}
+	return -1;
+}
+
+int DimService::selectiveUpdateService( float &value, int *cids )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisFLOAT)
+	{
+		itsData = &value;
+		if( cids == 0)
+		{
+			int ids[2];
+			ids[0] = DimServer::getClientId();
+			ids[1] = 0;
+			return dis_selective_update_service( itsId, ids );
+		} 
+		return dis_selective_update_service( itsId, cids );
+	}
+	return -1;
+}
+
+int DimService::selectiveUpdateService( double &value, int *cids )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisDOUBLE)
+	{
+		itsData = &value;
+		if( cids == 0)
+		{
+			int ids[2];
+			ids[0] = DimServer::getClientId();
+			ids[1] = 0;
+			return dis_selective_update_service( itsId, ids );
+		} 
+		return dis_selective_update_service( itsId, cids );
+	}
+	return -1;
+}
+
+int DimService::selectiveUpdateService( longlong &value, int *cids )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisXLONG) 
+	{
+		itsData = &value;
+		if( cids == 0)
+		{
+			int ids[2];
+			ids[0] = DimServer::getClientId();
+			ids[1] = 0;
+			return dis_selective_update_service( itsId, ids );
+		} 
+		return dis_selective_update_service( itsId, cids );
+	}
+	return -1;
+}
+
+int DimService::selectiveUpdateService( short &value, int *cids )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisSHORT) 
+	{
+		itsData = &value;
+		if( cids == 0)
+		{
+			int ids[2];
+			ids[0] = DimServer::getClientId();
+			ids[1] = 0;
+			return dis_selective_update_service( itsId, ids );
+		} 
+		return dis_selective_update_service( itsId, cids );
+	}
+	return -1;
+}
+
+int DimService::selectiveUpdateService( char *string, int *cids )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisSTRING)
+	{
+		itsData = string;
+		itsSize = (int)strlen(string)+1;
+		if( cids == 0)
+		{
+			int ids[2];
+			ids[0] = DimServer::getClientId();
+			ids[1] = 0;
+			return dis_selective_update_service( itsId, ids );
+		} 
+		return dis_selective_update_service( itsId, cids );
+	}
+	return -1;
+}
+	
+int DimService::selectiveUpdateService( void *structure, int size, int *cids )
+{
+	if(!itsId)
+		return 0;
+	if( itsType == DisPOINTER)
+	{
+		itsData = structure;
+		itsSize = size;
+		if( cids == 0)
+		{
+			int ids[2];
+			ids[0] = DimServer::getClientId();
+			ids[1] = 0;
+			return dis_selective_update_service( itsId, ids );
+		} 
+		return dis_selective_update_service( itsId, cids );
+	}
+	return -1;
+}
+	
+void DimService::setQuality(int quality)
+{
+	if(!itsId)
+		return;
+	dis_set_quality( itsId, quality );
+}
+
+void DimService::setTimestamp(int secs, int millisecs)
+{ 
+	if(!itsId)
+		return;
+	dis_set_timestamp( itsId, secs, millisecs );
+}
+
+void DimService::setData(void *data, int size)
+{
+	storeIt(data, size);
+}
+
+void DimService::setData(int &data)
+{
+	storeIt(&data, sizeof(int));
+}
+
+void DimService::setData(float &data)
+{
+	storeIt(&data, sizeof(float));
+}
+
+void DimService::setData(double &data)
+{
+	storeIt(&data, sizeof(double));
+}
+
+void DimService::setData(longlong &data)
+{
+	storeIt(&data, sizeof(longlong));
+}
+
+void DimService::setData(short &data)
+{
+	storeIt(&data, sizeof(short));
+}
+
+void DimService::setData(char *data)
+{
+	storeIt(data, (int)strlen(data)+1);
+}
+
+char *DimService::getName()
+{
+	return itsName;
+}
+
+int DimService::getTimeout(int clientId)
+{
+	return dis_get_timeout(itsId, clientId);
+}
+
+int DimService::getNClients()
+{
+	return dis_get_n_clients( itsId );
+}
+
+
+CmndInfo::CmndInfo(void *data, int datasize, int tsecs, int tmillisecs)
+{
+	itsData = new char[datasize];
+	itsDataSize = datasize;
+	secs = tsecs;
+	millisecs = tmillisecs;
+	memcpy(itsData, data, (size_t)datasize);
+}
+
+CmndInfo::~CmndInfo()
+{
+	delete[] (char *)itsData;
+}
+
+
+DimCommand::DimCommand(const char *name, char *format)
+{
+	declareIt( (char *)name, (char *)format, 0, 0);
+}
+
+DimCommand::DimCommand(const char *name, char *format, DimCommandHandler *handler)
+{
+	declareIt( (char *)name, (char *)format, handler, 0);
+}
+
+DimCommand::DimCommand(DimServerDns *dns, const char *name, char *format)
+{
+	declareIt( (char *)name, (char *)format, 0, dns);
+}
+
+DimCommand::DimCommand(DimServerDns *dns, const char *name, char *format, DimCommandHandler *handler)
+{
+	declareIt( (char *)name, (char *)format, handler, dns);
+}
+
+
+DimCommand::DimCommand(const char *name, const char *format)
+{
+	declareIt( (char *)name, (char *)format, 0, 0);
+}
+
+DimCommand::DimCommand(const char *name, const char *format, DimCommandHandler *handler)
+{
+	declareIt( (char *)name, (char *)format, handler, 0);
+}
+
+DimCommand::DimCommand(DimServerDns *dns, const char *name, const char *format)
+{
+	declareIt( (char *)name, (char *)format, 0, dns);
+}
+
+DimCommand::DimCommand(DimServerDns *dns, const char *name, const char *format, DimCommandHandler *handler)
+{
+	declareIt( (char *)name, (char *)format, handler, dns);
+}
+
+int DimCommand::getNext()
+{
+	CmndInfo *cmndptr;
+	if(currCmnd)
+	{
+		delete currCmnd;
+		currCmnd = 0;
+		itsData = 0;
+		itsSize = 0;
+	}
+	if ((cmndptr = (CmndInfo *)itsCmndList.removeHead()))
+	{
+		currCmnd = cmndptr;
+		itsData = currCmnd->itsData;
+		itsSize = currCmnd->itsDataSize;
+		secs = currCmnd->secs;
+		millisecs = currCmnd->millisecs;
+		return(1);
+	}
+	return(0);
+}
+
+int DimCommand::hasNext()
+{
+	if ((CmndInfo *)itsCmndList.getHead())
+	{
+		return(1);
+	}
+	return(0);
+}
+
+void *DimCommand::getData()
+{
+	return itsData;
+}
+
+int DimCommand::getInt()
+{
+	return *(int *)itsData;
+}
+
+float DimCommand::getFloat()
+{
+	return *(float *)itsData;
+}
+
+double DimCommand::getDouble()
+{
+	return *(double *)itsData;
+}
+
+longlong DimCommand::getLonglong()
+{
+	return *(longlong *)itsData;
+}
+
+short DimCommand::getShort()
+{
+	return *(short *)itsData;
+}
+
+char *DimCommand::getString()
+{
+	return (char *)itsData;
+}
+
+int DimCommand::getSize()
+{
+	return itsSize;
+}
+
+char *DimCommand::getFormat()
+{
+	return itsFormat;
+}
+
+int DimCommand::getTimestamp()
+{
+
+	if(secs == 0)
+	{
+		DISABLE_AST
+		if(itsId)
+			dis_get_timestamp(itsId, &secs, &millisecs);
+		ENABLE_AST
+	}
+	return(secs);
+}
+
+int DimCommand::getTimestampMillisecs()
+{
+	return(millisecs);
+}
+
+void DimCommand::commandHandler() 
+{
+	CmndInfo *cmndptr;
+	int tsecs, tmillisecs;
+
+	tsecs = getTimestamp();
+	tmillisecs = getTimestampMillisecs();
+	cmndptr = new CmndInfo(getData(), getSize(), tsecs, tmillisecs);
+	itsCmndList.add(cmndptr);
+}
+
+char *DimCommand::getName()
+{
+	return itsName;
+}
+
+DimCommand::~DimCommand()
+{
+	DISABLE_AST
+	delete[] itsName;
+	delete[] itsFormat;
+//	if(itsTagId)
+//		id_free(itsTagId, SRC_DIS);
+	if(itsId)
+		dis_remove_service( itsId );
+	itsId = 0;
+	ENABLE_AST
+}
+
+DimRpc::DimRpc()
+{
+}
+
+DimRpc::DimRpc(const char *name, const char *formatin, const char *formatout)
+{
+	declareIt( (char *)name, (char *)formatin, (char *)formatout, 0);
+}
+
+DimRpc::DimRpc(DimServerDns *dns, const char *name, const char *formatin, const char *formatout)
+{
+	declareIt( (char *)name, (char *)formatin, (char *)formatout, dns);
+}
+
+DimRpc::~DimRpc()
+{
+	DISABLE_AST
+	delete[] itsName;
+	delete[] itsNameIn;
+	delete[] itsNameOut;
+//	if(itsTagId)
+//		id_free(itsTagId, SRC_DIS);
+	if(itsIdIn)
+		dis_remove_service( itsIdIn );
+	if(itsIdOut)
+		dis_remove_service( itsIdOut );
+	itsIdIn = 0;
+	itsIdOut = 0;
+	ENABLE_AST
+}
+
+void *DimRpc::getData()
+{
+	return itsDataIn;
+}
+
+int DimRpc::getInt()
+{
+	return *(int *)itsDataIn;
+}
+
+float DimRpc::getFloat()
+{
+	return *(float *)itsDataIn;
+}
+
+double DimRpc::getDouble()
+{
+	return *(double *)itsDataIn;
+}
+
+longlong DimRpc::getLonglong()
+{
+	return *(longlong *)itsDataIn;
+}
+
+short DimRpc::getShort()
+{
+	return *(short *)itsDataIn;
+}
+
+char *DimRpc::getString()
+{
+	return (char *)itsDataIn;
+}
+
+int DimRpc::getSize()
+{
+	return itsSizeIn;
+}
+
+void DimRpc::setData(void *data, int size)
+{
+	storeIt(data,size);
+}
+
+void DimRpc::setData(int &data)
+{
+	storeIt(&data,sizeof(int));
+}
+
+void DimRpc::setData(float &data)
+{
+	storeIt(&data,sizeof(float));
+}
+
+void DimRpc::setData(double &data)
+{
+	storeIt(&data,sizeof(double));
+}
+
+void DimRpc::setData(longlong &data)
+{
+	storeIt(&data,sizeof(longlong));
+}
+
+void DimRpc::setData(short &data)
+{
+	storeIt(&data,sizeof(short));
+}
+
+void DimRpc::setData(char *data)
+{
+	storeIt(data,(int)strlen(data)+1);
+}
+
+char *DimRpc::getName()
+{
+	return itsName;
+}
Index: branches/testFACT++branch/dim/src/dll.c
===================================================================
--- branches/testFACT++branch/dim/src/dll.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/dll.c	(revision 18277)
@@ -0,0 +1,133 @@
+/*
+ * A utility file. A double linked list.
+ *
+ * Started date   : 10-11-91
+ * Written by     : C. Gaspar
+ * UNIX adjustment: G.C. Ballintijn
+ *
+ */
+
+#define DIMLIB
+#include <dim.h>
+
+
+void dll_init( DLL* head )
+{
+	DISABLE_AST
+	head->next = head;
+	head->prev = head;
+	ENABLE_AST
+}
+
+
+void dll_insert_queue( DLL* head, DLL* item )
+{
+	register DLL *prevp;
+
+	DISABLE_AST
+	item->next = head;
+	prevp = head->prev;
+	item->prev = prevp;
+	prevp->next = item;
+	head->prev = item;
+	ENABLE_AST
+}	
+
+void dll_insert_after( DLL* atitem, DLL* item )
+{
+	register DLL *auxp;
+
+	DISABLE_AST
+	auxp = atitem->next;
+	item->next = auxp;
+	item->prev = atitem;
+	atitem->next = item;
+	auxp->prev = item;
+	ENABLE_AST
+}	
+
+DLL *dll_search( DLL* head, char *data, int size )
+{
+	register DLL *auxp= head->next;
+ 
+	DISABLE_AST
+	while( auxp!= head ) {
+		if( !memcmp(auxp->user_info, data, (size_t)size) ) {
+			ENABLE_AST
+			return(auxp);
+		}
+		auxp = auxp->next;
+	}
+	ENABLE_AST
+	return((DLL *)0);
+}
+
+
+DLL *dll_get_next( DLL* head, DLL* item )
+{
+	DISABLE_AST
+	if( item->next != head ) {
+		ENABLE_AST
+		return(item->next);
+	}
+	ENABLE_AST
+	return((DLL *) 0);
+}
+
+DLL *dll_get_prev( DLL* head, DLL* item )
+{
+	DISABLE_AST
+	if( item->prev != head ) {
+		ENABLE_AST
+		return(item->prev);
+	}
+	ENABLE_AST
+	return((DLL *) 0);
+}
+
+int dll_empty( DLL* head )
+{
+	DISABLE_AST
+	if( head->next != head ) {
+		ENABLE_AST
+		return(0);
+	}
+	ENABLE_AST
+	return(1);
+}
+
+
+void dll_remove( DLL* item ) 
+{
+	register DLL *prevp, *nextp;
+
+	DISABLE_AST
+	prevp = item->prev;
+	nextp = item->next;
+	prevp->next = item->next;
+	nextp->prev = prevp;
+	ENABLE_AST
+}	
+
+DLL *dll_search_next_remove( DLL* head, int offset, char *data, int size )
+{
+	register DLL *auxp= head->next;
+	DLL *retp = 0;
+ 
+	DISABLE_AST
+	while( auxp!= head ) {
+		if( !memcmp(&(auxp->user_info[offset]), data, (size_t)size) ) {
+			retp = auxp;
+		}
+		auxp = auxp->next;
+	}
+	if( retp)
+	{
+		dll_remove(retp);
+		ENABLE_AST
+		return(retp);
+	}
+	ENABLE_AST
+	return((DLL *)0);
+}
+
Index: branches/testFACT++branch/dim/src/dna.c
===================================================================
--- branches/testFACT++branch/dim/src/dna.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/dna.c	(revision 18277)
@@ -0,0 +1,940 @@
+
+/*
+ * DNA (Delphi Network Access) implements the network layer for the DIM
+ * (Delphi Information Managment) System.
+ *
+ * Started date   : 10-11-91
+ * Written by     : C. Gaspar
+ * UNIX adjustment: G.C. Ballintijn
+ *
+ */
+
+/* include files */
+
+#include <errno.h>
+#define DIMLIB
+#define DNA
+#include <dim.h>
+
+/* global definitions */
+
+#define READ_HEADER_SIZE	12
+
+/*
+#define TO_DBG		1 
+*/
+
+/* global variables */
+typedef struct {
+	char node_name[MAX_NODE_NAME];
+	char task_name[MAX_TASK_NAME];
+	int port;
+	SRC_TYPES src_type;
+	time_t last_used;
+} PENDING_OPEN;
+
+#define TMOUT_PENDING_CONN_TMOUT 3600
+#define MAX_TMOUT_PENDING_CONNS 10
+static PENDING_OPEN Pending_conns[MAX_CONNS];
+static PENDING_OPEN Pending_conns_tmout[MAX_TMOUT_PENDING_CONNS];
+
+static int DNA_Initialized = FALSE;
+
+extern int Tcpip_max_io_data_write;
+extern int Tcpip_max_io_data_read;
+
+_DIM_PROTO( static void ast_read_h,     (int conn_id, int status, int size) );
+_DIM_PROTO( static void ast_conn_h,     (int handle, int svr_conn_id,
+                                     int protocol) );
+_DIM_PROTO( static int dna_write_bytes, (int conn_id, void *buffer, int size,
+									 int nowait) );
+_DIM_PROTO( static void release_conn,   (int conn_id) );
+_DIM_PROTO( static void save_node_task, (int conn_id, DNA_NET *buffer) );
+
+/*
+ * Routines common to Server and Client
+ */
+/*
+static int Prev_packet[3];
+static int Prev_buffer[3];
+static int Prev_conn_id = 0;
+*/
+static int is_header( int conn_id )
+{
+	register DNA_CONNECTION *dna_connp = &Dna_conns[conn_id];
+	register int ret;
+
+	ret = 0;
+	if( (vtohl(dna_connp->buffer[2]) == TRP_MAGIC) &&
+	    (vtohl(dna_connp->buffer[1]) == 0) &&
+	    (vtohl(dna_connp->buffer[0]) == READ_HEADER_SIZE) )
+	{
+		dna_connp->state = RD_HDR;
+		ret = 1;
+	} 
+	else if( (vtohl(dna_connp->buffer[2]) == TST_MAGIC) &&
+		   (vtohl(dna_connp->buffer[1]) == 0) &&
+		   (vtohl(dna_connp->buffer[0]) == READ_HEADER_SIZE) )
+	{
+		dna_connp->state = RD_HDR;
+		ret = 1;
+	} 
+	else if( (vtohl(dna_connp->buffer[2]) == (int)HDR_MAGIC ) &&
+		   (vtohl(dna_connp->buffer[0]) == (int)READ_HEADER_SIZE ) )
+	{
+		dna_connp->state = RD_DATA;
+		ret = 1;
+	} 
+	else 
+	{
+/*
+		dim_print_date_time();
+		printf( " conn: %d to %s@%s, expecting header\n", conn_id,
+			Net_conns[conn_id].task, Net_conns[conn_id].node );
+		printf( "buffer[0]=%d\n", vtohl(dna_connp->buffer[0]));
+		printf( "buffer[1]=%d\n", vtohl(dna_connp->buffer[1]));
+		printf( "buffer[2]=%x\n", vtohl(dna_connp->buffer[2]));
+		printf( "closing the connection.\n" );
+		printf( " Previous conn: %d, Previous Packet\n", Prev_conn_id);
+		printf( "buffer[0]=%d\n", vtohl(Prev_packet[0]));
+		printf( "buffer[1]=%d\n", vtohl(Prev_packet[1]));
+		printf( "buffer[2]=%x\n", vtohl(Prev_packet[2]));
+		printf( " Previous Buffer\n");
+		printf( "buffer[0]=%d\n", vtohl(Prev_buffer[0]));
+		printf( "buffer[1]=%d\n", vtohl(Prev_buffer[1]));
+		printf( "buffer[2]=%x\n", vtohl(Prev_buffer[2]));
+		fflush(stdout);
+*/
+		dna_connp->read_ast(conn_id, NULL, 0, STA_DISC);
+		ret = 0;
+	}			
+	return(ret);
+}
+
+static void read_data( int conn_id)
+{
+	register DNA_CONNECTION *dna_connp = &Dna_conns[conn_id];
+
+	if( !dna_connp->saw_init &&
+	    vtohl(dna_connp->buffer[0]) == (int)OPN_MAGIC)
+	{
+		save_node_task(conn_id, (DNA_NET *) dna_connp->buffer);
+		dna_connp->saw_init = TRUE;
+	} 
+	else
+	{
+/*
+printf("passing up %d bytes, conn_id %d\n",dna_connp->full_size, conn_id); 
+*/
+		dna_connp->read_ast(conn_id, dna_connp->buffer,
+			dna_connp->full_size, STA_DATA);
+	}
+}
+
+static void ast_read_h( int conn_id, int status, int size )
+{
+	register DNA_CONNECTION *dna_connp = &Dna_conns[conn_id];
+	int tcpip_code;
+	register int read_size, next_size;
+	register char *buff;
+	int max_io_data;
+
+	if(!dna_connp->buffer) /* The connection has already been closed */
+	{
+		return;
+	}
+	if(status == 1)
+	{
+		next_size = dna_connp->curr_size;
+		buff = (char *) dna_connp->curr_buffer;
+  		if(size < next_size) 
+		{
+/*
+			Prev_conn_id = conn_id;
+	  		Prev_packet[0] = ((int *)dna_connp->curr_buffer)[0];
+			Prev_packet[1] = ((int *)dna_connp->curr_buffer)[1];
+			Prev_packet[2] = ((int *)dna_connp->curr_buffer)[2];
+			Prev_buffer[0] = dna_connp->buffer[0];
+			Prev_buffer[1] = dna_connp->buffer[1];
+			Prev_buffer[2] = dna_connp->buffer[2];
+*/
+			max_io_data = Tcpip_max_io_data_read;
+			read_size = ((next_size - size) > max_io_data) ?
+				max_io_data : next_size - size;
+			dna_connp->curr_size -= size;
+			dna_connp->curr_buffer += size;
+			tcpip_code = tcpip_start_read(conn_id, buff + size, 
+				read_size, ast_read_h);
+			if(tcpip_failure(tcpip_code)) 
+			{
+#ifndef WIN32
+			  if(errno == ENOTSOCK)
+			  {
+				  if(dna_connp->read_ast)
+					dna_connp->read_ast(conn_id, NULL, 0, STA_DISC);
+			  }
+			  else
+#endif
+			  {
+				dna_report_error(conn_id, tcpip_code,
+					"Reading from", DIM_ERROR, DIMTCPRDERR);
+			  }
+			}
+			return;
+		}
+		switch(dna_connp->state)
+		{
+			case RD_HDR :
+				if(is_header(conn_id))
+				{
+					if( dna_connp->state == RD_DATA )
+					{
+						next_size = vtohl(dna_connp->buffer[1]);
+						dna_start_read(conn_id, next_size);
+					}
+					else
+					{
+						dna_connp->state = RD_HDR;
+						dna_start_read(conn_id, READ_HEADER_SIZE);
+					}
+				}
+				break;
+			case RD_DATA :
+				read_data(conn_id);
+				dna_connp->state = RD_HDR;
+				dna_start_read(conn_id, READ_HEADER_SIZE);
+				break;
+			default:
+				break;
+		}
+/*
+		if(dna_connp->buffer)
+		{
+			Prev_conn_id = conn_id;
+			Prev_packet[0] = ((int *)dna_connp->curr_buffer)[0];
+			Prev_packet[1] = ((int *)dna_connp->curr_buffer)[1];
+			Prev_packet[2] = ((int *)dna_connp->curr_buffer)[2];
+			Prev_buffer[0] = dna_connp->buffer[0];
+			Prev_buffer[1] = dna_connp->buffer[1];
+			Prev_buffer[2] = dna_connp->buffer[2];
+		}
+*/
+	} 
+	else 
+	{
+	  /*
+	  printf("Connection lost. Signal upper layer\n");
+	  */
+		if(dna_connp->read_ast)
+			dna_connp->read_ast(conn_id, NULL, 0, STA_DISC);
+	}
+}
+
+
+int dna_start_read(int conn_id, int size)
+{
+	register DNA_CONNECTION *dna_connp = &Dna_conns[conn_id];
+	register int tcpip_code, read_size;
+	int max_io_data;
+	
+	if(!dna_connp->busy)
+	{
+		return(0);
+	}
+
+	dna_connp->curr_size = size;
+	dna_connp->full_size = size;
+	if(size > dna_connp->buffer_size) 
+	{
+		dna_connp->buffer =
+				(int *) realloc(dna_connp->buffer, (size_t)size);
+		dna_connp->buffer_size = size;
+	}
+	dna_connp->curr_buffer = (char *) dna_connp->buffer;
+	max_io_data = Tcpip_max_io_data_read;
+	read_size = (size > max_io_data) ? max_io_data : size ;
+
+	tcpip_code = tcpip_start_read(conn_id, dna_connp->curr_buffer,
+				  read_size, ast_read_h);
+	if(tcpip_failure(tcpip_code)) {
+		dna_report_error(conn_id, tcpip_code,
+			"Reading from", DIM_ERROR, DIMTCPRDERR);
+
+		return(0);
+	}
+
+	return(1);
+}								
+
+
+static int dna_write_bytes( int conn_id, void *buffer, int size, int nowait )
+{
+	register int size_left, wrote;
+	register char *p;
+	int max_io_data;
+#ifdef VMS
+	int retries = WRITE_RETRIES, retrying = 0;
+	float wait_time = 0.01;
+#endif
+	extern int tcpip_write_nowait(int, char *, int);
+
+	max_io_data = Tcpip_max_io_data_write;
+	p = (char *) buffer;
+	size_left = size;
+	do {
+		size = (size_left > max_io_data) ? max_io_data : size_left ;
+#ifdef VMS
+		if(nowait)
+		{
+			while(--retries)
+			{
+				if((wrote = tcpip_write_nowait(conn_id, p, size)) > 0)
+					break;
+				if(!tcpip_would_block(wrote))
+					return(0);
+				if(retries == WRITE_RETRIES_WNG)
+				{
+					dna_report_error(conn_id, tcpip_code,
+						"Writing to (retrying)", DIM_WARNING, DIMTCPWRRTY);
+					retrying = 1;
+				}
+				lib$wait(&wait_time);
+			}
+			if(!retries)
+			{
+				return(0);
+			}
+		}
+		else
+			wrote = tcpip_write(conn_id, p, size);
+#else
+		if(nowait)
+		{
+		  wrote = tcpip_write_nowait(conn_id, p, size);
+		  if(wrote == -1)
+		  {
+		    dna_report_error(conn_id, -1,
+				     "Write timeout, writing to", DIM_WARNING, DIMTCPWRTMO);
+		    wrote = 0;
+		  }
+		}
+		else
+		{
+			wrote = tcpip_write(conn_id, p, size);
+		}
+#endif
+		
+		if( tcpip_failure(wrote) )
+			return(0);
+		p += wrote;
+		size_left -= wrote;
+	} while(size_left > 0);
+	return(1);
+}
+
+void dna_test_write(int conn_id)
+{
+	register DNA_CONNECTION *dna_connp = &Dna_conns[conn_id];
+	register int tcpip_code;
+	DNA_HEADER test_pkt;
+	register DNA_HEADER *test_p = &test_pkt;
+
+	if(!dna_connp->busy)
+	{
+		return;
+    }
+	if(dna_connp->writing)
+	{
+		return;
+    }
+	test_p->header_size = htovl(READ_HEADER_SIZE);
+	test_p->data_size = 0;
+	test_p->header_magic = htovl(TST_MAGIC);
+	tcpip_code = dna_write_bytes(conn_id, &test_pkt, READ_HEADER_SIZE,0);
+	if(tcpip_failure(tcpip_code)) {
+		 /* Connection lost. Signal upper layer ? */
+		if(dna_connp->read_ast)
+			dna_connp->read_ast(conn_id, NULL, 0, STA_DISC);
+		return;
+	}
+}
+
+typedef struct
+{
+	int conn_id;
+	void *buffer;
+	int size;
+	char dummy[MAX_NAME];
+} WRITE_ITEM;
+
+static int do_dna_write(int id)
+{
+	register DNA_CONNECTION *dna_connp;
+	int tcpip_code;
+	WRITE_ITEM *ptr;
+	int conn_id, size;
+	void *buffer;
+
+	ptr = (WRITE_ITEM *)id_get_ptr(id, SRC_DNA);
+	if(!ptr)
+		return(2);
+	conn_id = ptr->conn_id;
+	buffer = ptr->buffer;
+	size = ptr->size;
+
+	dna_connp = &Dna_conns[conn_id];
+	if(!dna_connp->busy)
+	{
+		id_free(id, SRC_DNA);
+		free(buffer);
+		free(ptr);
+		return(2);
+    }
+	dna_connp->writing = TRUE;
+	tcpip_code = dna_write_bytes(conn_id, buffer, size,0);
+	if(tcpip_failure(tcpip_code)) 
+	{
+		dna_connp->writing = FALSE;
+		id_free(id, SRC_DNA);
+		free(buffer);
+		free(ptr);
+		return(0);
+	}
+
+	id_free(id, SRC_DNA);
+	free(buffer);
+	free(ptr);
+
+	dna_connp->writing = FALSE;
+	return(1);
+}	
+
+int dna_write_nowait(int conn_id, void *buffer, int size)
+{
+	register DNA_CONNECTION *dna_connp;
+	DNA_HEADER header_pkt;
+	register DNA_HEADER *header_p = &header_pkt;
+	int tcpip_code, ret = 1;
+
+	DISABLE_AST
+	dna_connp = &Dna_conns[conn_id];
+	if(!dna_connp->busy)
+	{
+		ENABLE_AST
+		return(2);
+    }
+	dna_connp->writing = TRUE;
+
+	header_p->header_size = htovl(READ_HEADER_SIZE);
+	header_p->data_size = htovl(size);
+	header_p->header_magic = (int)htovl(HDR_MAGIC);
+	tcpip_code = dna_write_bytes(conn_id, &header_pkt, READ_HEADER_SIZE, 1);
+	if(tcpip_failure(tcpip_code)) 
+	{
+		dna_connp->writing = FALSE;
+		ENABLE_AST
+		return(0);
+	}
+	tcpip_code = dna_write_bytes(conn_id, buffer, size, 1);
+	if(tcpip_failure(tcpip_code)) 
+	{
+		ret = 0;
+	}
+	dna_connp->writing = FALSE;
+	ENABLE_AST
+	return(ret);
+}	
+
+typedef struct
+{
+	DNA_HEADER header;
+	char data[1];
+
+}WRITE_DATA;
+
+int dna_write(int conn_id, void *buffer, int size)
+{
+	WRITE_ITEM *newp;
+	int id;
+	WRITE_DATA *pktp;
+	DNA_HEADER *headerp;
+
+	DISABLE_AST
+
+	pktp = malloc((size_t)(READ_HEADER_SIZE+size));
+	headerp = &(pktp->header);
+	headerp->header_size = htovl(READ_HEADER_SIZE);
+	headerp->data_size = htovl(size);
+	headerp->header_magic = (int)htovl(HDR_MAGIC);
+
+	memcpy(pktp->data, (char *)buffer, (size_t)size);
+
+	newp = malloc(sizeof(WRITE_ITEM));
+	newp->conn_id = conn_id;
+	newp->buffer = pktp;
+	newp->size = size+READ_HEADER_SIZE;
+	id = id_get((void *)newp, SRC_DNA);
+	dtq_start_timer(0, do_dna_write, id);
+	ENABLE_AST
+	return(1);
+}
+
+/* Server Routines */
+
+static void ast_conn_h(int handle, int svr_conn_id, int protocol)
+{
+	register DNA_CONNECTION *dna_connp;
+	register int tcpip_code;
+	register int conn_id;
+
+	if(protocol){}
+	conn_id = conn_get();
+/*
+	if(!conn_id)
+		dim_panic("In ast_conn_h: No more connections\n");
+*/
+	dna_connp = &Dna_conns[conn_id] ;
+	dna_connp->error_ast = Dna_conns[svr_conn_id].error_ast;
+	tcpip_code = tcpip_open_connection( conn_id, handle );
+
+	if(tcpip_failure(tcpip_code))
+	{
+		dna_report_error(conn_id, tcpip_code,
+			"Connecting to", DIM_ERROR, DIMTCPCNERR);
+		conn_free(conn_id);
+	} else {
+		dna_connp->state = RD_HDR;
+		dna_connp->buffer = (int *)malloc((size_t)TCP_RCV_BUF_SIZE);
+/*
+		if(!dna_connp->buffer)
+		{
+			printf("Error in DNA - handle_connection malloc returned 0\n");
+			fflush(stdout);
+		}
+*/
+		dna_connp->buffer_size = TCP_RCV_BUF_SIZE;
+		dna_connp->read_ast = Dna_conns[svr_conn_id].read_ast;
+		dna_connp->saw_init = FALSE;
+		dna_start_read(conn_id, READ_HEADER_SIZE); /* sizeof(DNA_NET) */
+		/* Connection arrived. Signal upper layer ? */
+		dna_connp->read_ast(conn_id, NULL, 0, STA_CONN);
+	}
+	tcpip_code = tcpip_start_listen(svr_conn_id, ast_conn_h);
+	if(tcpip_failure(tcpip_code))
+	{
+		dna_report_error(svr_conn_id, tcpip_code,
+			"Listening at", DIM_ERROR, DIMTCPLNERR);
+	}
+}
+
+int dna_init()
+{
+	PENDING_OPEN *pending_connp;
+	int i, size;
+	
+	if(!DNA_Initialized)
+	{
+		conn_arr_create(SRC_DNA);
+		pending_connp = &Pending_conns[1];
+		size = MAX_CONNS;
+		for( i = 1; i < size; i++, pending_connp++ )
+			pending_connp->task_name[0] = '\0';
+		pending_connp = &Pending_conns_tmout[1];
+		size = MAX_TMOUT_PENDING_CONNS;
+		for( i = 1; i < size; i++, pending_connp++ )
+			pending_connp->task_name[0] = '\0';
+		DNA_Initialized = TRUE;
+	}
+	return(1);
+}
+
+int dna_open_server(char *task, void (*read_ast)(), int *protocol, int *port, void (*error_ast)())
+{
+	register DNA_CONNECTION *dna_connp;
+	register int tcpip_code;
+	register int conn_id;
+
+	dna_init();
+/*
+	if(!DNA_Initialized)
+	{
+		conn_arr_create(SRC_DNA);
+		DNA_Initialized = TRUE;
+	}
+*/
+	*protocol = PROTOCOL;
+	conn_id = conn_get();
+	dna_connp = &Dna_conns[conn_id];
+/*
+	if(!conn_id)
+		dim_panic("In dna_open_server: No more connections\n");
+*/
+	dna_connp->protocol = TCPIP;
+	dna_connp->error_ast = error_ast;
+	tcpip_code = tcpip_open_server(conn_id, task, port);
+	if(tcpip_failure(tcpip_code))
+	{
+		dna_report_error(conn_id, tcpip_code,
+			"Opening server port", DIM_ERROR, DIMTCPOPERR);
+		conn_free(conn_id);
+		return(0);
+	}
+	dna_connp->writing = FALSE;
+	dna_connp->read_ast = read_ast;
+	tcpip_code = tcpip_start_listen(conn_id, ast_conn_h);
+	if(tcpip_failure(tcpip_code))
+	{
+		dna_report_error(conn_id, tcpip_code, "Listening at", DIM_ERROR, DIMTCPLNERR);
+		return(0);
+	}
+	return(conn_id);
+}
+
+
+int dna_get_node_task(int conn_id, char *node, char *task)
+{
+	if(Dna_conns[conn_id].busy)
+		tcpip_get_node_task(conn_id, node, task);
+	else
+		node[0] = '\0';
+	return(1);
+}
+
+
+/* Client Routines */
+
+void dna_set_test_write(int conn_id, int time)
+{
+	extern void tcpip_set_test_write(int, int);
+
+	tcpip_set_test_write(conn_id, time);
+}
+
+void dna_rem_test_write(int conn_id)
+{
+	extern void tcpip_rem_test_write(int);
+
+	tcpip_rem_test_write(conn_id);
+}
+
+static int ins_pend_conn( char *node, char *task, int port, SRC_TYPES src_type, int type, time_t last_used )
+{
+	register PENDING_OPEN *pending_connp;
+	register int i, size;
+	time_t oldest;
+	int oldesti = 0;
+	extern time_t time();
+
+	if(type == 0)
+	{
+		pending_connp = &Pending_conns[1];
+		size = MAX_CONNS;
+		oldest = 0;
+	}
+	else
+	{
+		pending_connp = &Pending_conns_tmout[1];
+		size = MAX_TMOUT_PENDING_CONNS;
+		oldest = time(NULL);
+		oldesti = 1;
+	}
+
+	for( i = 1; i < size; i++, pending_connp++ )
+	{
+		if( pending_connp->task_name[0] == '\0' )
+		{
+			strcpy(pending_connp->node_name, node);
+			strcpy(pending_connp->task_name, task);
+			pending_connp->port = port;
+			pending_connp->src_type = src_type;
+			pending_connp->last_used = last_used;
+			return(i);
+		}
+		else
+		{
+			if(pending_connp->last_used < oldest)
+			{
+				oldest = pending_connp->last_used;
+				oldesti = i;
+			}
+		}
+	}
+	if(type != 0)
+	{
+		pending_connp = &Pending_conns_tmout[oldesti];
+		strcpy(pending_connp->node_name, node);
+		strcpy(pending_connp->task_name, task);
+		pending_connp->port = port;
+		pending_connp->src_type = src_type;
+		pending_connp->last_used = last_used;
+		return(oldesti);
+	}
+	return(0);
+}
+
+static int find_pend_conn( char *node, char *task, int port, SRC_TYPES src_type, int type )
+{
+	register PENDING_OPEN *pending_connp;
+	register int i, size;
+	time_t curr_time;
+
+	if(type == 0)
+	{
+		pending_connp = &Pending_conns[1];
+		size = MAX_CONNS;
+	}
+	else
+	{
+		pending_connp = &Pending_conns_tmout[1];
+		size = MAX_TMOUT_PENDING_CONNS;
+		curr_time = time(NULL);
+		for( i = 1; i < size; i++, pending_connp++ )
+		{
+			if( pending_connp->task_name[0] != '\0' )
+			{
+				if( curr_time - pending_connp->last_used > TMOUT_PENDING_CONN_TMOUT )
+				{
+					pending_connp->task_name[0] = '\0';
+				}
+			}
+		}
+		pending_connp = &Pending_conns_tmout[1];
+	}
+	for( i = 1; i < size; i++, pending_connp++ )
+	{
+		if( (!strcmp(pending_connp->node_name, node)) &&
+			(!strcmp(pending_connp->task_name, task)) &&
+			(pending_connp->port == port) &&
+			(pending_connp->src_type == src_type))
+		{
+			return(i);
+		}
+	}
+	return(0);
+}
+
+
+static void rel_pend_conn( int id, int type )
+{
+	register PENDING_OPEN *pending_connp;
+
+	if(type == 0)
+	{
+		pending_connp = &Pending_conns[id];
+	}
+	else
+	{
+		pending_connp = &Pending_conns_tmout[id];
+	}
+	pending_connp->task_name[0] = '\0';
+}	
+
+
+int dna_open_client(char *server_node, char *server_task, int port, int server_protocol, 
+					void (*read_ast)(), void (*error_ast)(), SRC_TYPES src_type)
+{
+	register DNA_CONNECTION *dna_connp;
+	char str[256];
+	register int tcpip_code, conn_id, id;
+	DNA_NET local_buffer;
+	extern int get_proc_name(char *);
+	char src_type_str[64];
+
+	if(server_protocol){}
+	dna_init();
+/*
+	if(!DNA_Initialized) {
+		conn_arr_create(SRC_DNA);
+		DNA_Initialized = TRUE;
+	}
+*/
+	conn_id = conn_get();
+	dna_connp = &Dna_conns[conn_id] ;
+/*
+	if( !(conn_id = conn_get()) )
+		dim_panic("In dna_open_client: No more connections\n");
+*/
+	dna_connp->protocol = TCPIP;
+	dna_connp->error_ast = error_ast;
+	tcpip_code = tcpip_open_client(conn_id, server_node, server_task, port);
+	if( tcpip_failure(tcpip_code) )
+	{
+#ifdef VMS
+		if(!strstr(server_node,"fidel"))
+		{
+#endif
+		if(!find_pend_conn(server_node, server_task, port, src_type, 0))
+		{
+			if(src_type == SRC_DIS)
+				strcpy(src_type_str,"Server");
+			else if(src_type == SRC_DIC)
+				strcpy(src_type_str,"Client");
+			else
+				strcpy(src_type_str,"Unknown type");
+			sprintf( str,"%s Connecting to %s on %s", 
+				src_type_str, server_task, server_node );
+			if(!strcmp(server_task,"DIM_DNS"))
+				dna_report_error( conn_id, tcpip_code, str, DIM_ERROR, DIMDNSCNERR );
+			else
+				dna_report_error( conn_id, tcpip_code, str, DIM_ERROR, DIMTCPCNERR );
+			ins_pend_conn(server_node, server_task, port, src_type, 0, 0);
+		}
+#ifdef VMS
+		}
+#endif
+		tcpip_close(conn_id);
+		conn_free( conn_id );
+		return(0);
+	}
+	if( (id = find_pend_conn(server_node, server_task, port, src_type, 0)) )
+	{
+		if(src_type == SRC_DIS)
+			strcpy(src_type_str,"Server");
+		else if(src_type == SRC_DIC)
+			strcpy(src_type_str,"Client");
+		else
+			strcpy(src_type_str,"Unknown type");
+		sprintf( str,"%s Connection established to", src_type_str);
+		if(!strcmp(server_task,"DIM_DNS"))
+			dna_report_error( conn_id, -1, str, DIM_INFO, DIMDNSCNEST );
+		else
+			dna_report_error( conn_id, -1, str, DIM_INFO, DIMTCPCNEST );
+		rel_pend_conn(id, 0);
+	}
+	dna_connp->state = RD_HDR;
+	dna_connp->writing = FALSE;
+	dna_connp->buffer = (int *)malloc((size_t)TCP_RCV_BUF_SIZE);
+/*
+	if(!dna_connp->buffer)
+	{
+		printf("Error in DNA - open_client malloc returned 0\n");
+		fflush(stdout);
+	}
+*/
+	dna_connp->buffer_size = TCP_RCV_BUF_SIZE;
+	dna_connp->read_ast = read_ast;
+	dna_connp->saw_init = TRUE;	/* we send it! */
+	dna_start_read(conn_id, READ_HEADER_SIZE);
+	local_buffer.code = (int)htovl(OPN_MAGIC);
+	get_node_name(local_buffer.node);
+	get_proc_name(local_buffer.task);
+	tcpip_code = dna_write_nowait(conn_id, &local_buffer, sizeof(local_buffer));
+	if (tcpip_failure(tcpip_code))
+	{
+		dim_print_date_time();
+		printf(" Client Establishing Connection: Couldn't write to Conn %3d : Server %s@%s\n",conn_id,
+			Net_conns[conn_id].task, Net_conns[conn_id].node);
+		fflush(stdout);
+		dna_close(conn_id);
+		return(0);
+	}
+	read_ast(conn_id, NULL, 0, STA_CONN);
+	return(conn_id);
+}
+	
+int dna_close(int conn_id)
+{
+	if(conn_id > 0)
+	{
+		if(Net_conns[conn_id].write_timedout)
+		{
+		    dna_report_error(conn_id, -1,
+				     "Write timeout, disconnecting from", DIM_ERROR, DIMTCPWRTMO);
+			if(!find_pend_conn(Net_conns[conn_id].node, Net_conns[conn_id].task, 0, 0, 1))
+				ins_pend_conn(Net_conns[conn_id].node, Net_conns[conn_id].task, 0, 0, 1, time(NULL));
+		}
+		release_conn(conn_id);
+	}
+	return(1);
+}
+
+/* connection managment routines */
+
+static void release_conn(int conn_id)
+{
+	register DNA_CONNECTION *dna_connp = &Dna_conns[conn_id] ;
+
+	DISABLE_AST
+	if(dna_connp->busy)
+	{ 
+		tcpip_close(conn_id);
+		if(dna_connp->buffer)
+		{
+			free(dna_connp->buffer);
+			dna_connp->buffer = 0;
+			dna_connp->buffer_size = 0;
+		}
+		dna_connp->read_ast = NULL;
+		dna_connp->error_ast = NULL;
+		conn_free(conn_id);
+	}
+	ENABLE_AST
+}
+
+
+void dna_report_error_old(int conn_id, int code, char *routine_name)
+{
+	char str[128];
+	extern void tcpip_get_error(char *, int);
+	dim_print_date_time();
+	printf("%s", routine_name);
+	if(conn_id)
+	{
+		if(Net_conns[conn_id].node[0])
+			printf(" %s on node %s",
+		       Net_conns[conn_id].task, Net_conns[conn_id].node);
+/*
+		else
+			printf("\tConn %d :\n", conn_id);
+*/
+	}
+	if(code != -1)
+	{
+/*
+		printf("\t");
+		tcpip_report_error(code);
+*/
+		tcpip_get_error(str, code);
+		printf(": %s\n",str);
+	}
+	fflush(stdout);
+}
+
+void dna_report_error(int conn_id, int code, char *routine_name, int severity, int errcode)
+{
+	char str[128], msg[1024];
+	extern void tcpip_get_error();
+
+	sprintf(msg, "%s", routine_name);
+	if(conn_id)
+	{
+		if(Net_conns[conn_id].node[0])
+		{
+			sprintf(str," %s@%s",
+		       Net_conns[conn_id].task, Net_conns[conn_id].node);
+			strcat(msg, str);
+		}
+	}
+	if(code != -1)
+	{
+		tcpip_get_error(str, code);
+		strcat(msg,": ");
+		strcat(msg, str);
+	}
+	if(Dna_conns[conn_id].error_ast)
+	{
+		Dna_conns[conn_id].error_ast(conn_id, severity, errcode, msg);
+	}
+}
+
+static void save_node_task(int conn_id, DNA_NET *buffer)
+{
+	int id;
+	strcpy(Net_conns[conn_id].node, buffer->node);
+	strcpy(Net_conns[conn_id].task, buffer->task);
+	if((id = find_pend_conn(Net_conns[conn_id].node, Net_conns[conn_id].task, 0, 0, 1)))
+	{
+		dna_report_error( conn_id, -1, "Re-connected to", DIM_INFO, DIMDNSCNEST );
+		rel_pend_conn(id, 1);
+	}
+}
Index: branches/testFACT++branch/dim/src/dns.c
===================================================================
--- branches/testFACT++branch/dim/src/dns.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/dns.c	(revision 18277)
@@ -0,0 +1,1937 @@
+/*
+ * DNS (Delphi Name Server) Package implements the name server for the DIM
+ * (Delphi Information Management) system
+ *
+ * Started date      : 26-10-92
+ * Last modification : 02-08-94
+ * Written by        : C. Gaspar
+ * Adjusted by       : G.C. Ballintijn
+ *
+ */
+
+#define DNS
+#include <stdio.h>
+#include <dim.h>
+#include <dis.h>
+
+#ifndef WIN32
+#include <netdb.h>
+#endif
+/*
+#define MAX_HASH_ENTRIES 5000
+*/
+#define MAX_HASH_ENTRIES 25000
+FILE	*foutptr;
+
+typedef struct node {
+	struct node *client_next;
+	struct node *client_prev;
+	struct node *next;
+	struct node *prev;
+	int conn_id;
+	int service_id;
+	struct serv *servp;
+} NODE;
+
+typedef struct red_node {
+	struct red_node *next;
+	struct red_node *prev;
+	int conn_id;
+	int service_id;
+	struct serv *servp;
+} RED_NODE;
+
+typedef struct serv {
+	struct serv *server_next;
+	struct serv *server_prev;
+	struct serv *next;
+	struct serv *prev;
+	char serv_name[MAX_NAME];
+	char serv_def[MAX_NAME];
+	int state;
+	int conn_id;
+	int server_format;
+	int serv_id;
+	RED_NODE *node_head;
+} DNS_SERVICE;
+
+typedef struct red_serv {
+	struct red_serv *next;
+	struct red_serv *prev;
+	char serv_name[MAX_NAME];
+	char serv_def[MAX_NAME];
+	int state;
+	int conn_id;
+	int server_format;
+	int serv_id;
+	RED_NODE *node_head;
+} RED_DNS_SERVICE;
+
+static DNS_SERVICE **Service_info_list;
+static RED_DNS_SERVICE *Service_hash_table[MAX_HASH_ENTRIES];
+static int Curr_n_services = 0;
+static int Curr_n_servers = 0;
+static int Last_conn_id;
+/*
+static int Debug = 2;
+*/
+static int Debug = 0;
+
+static int Timer_q;
+static int Server_info_id, Server_new_info_id, 
+		   Rpc_id, wake_up;
+
+static char RPC_dummy = 0;
+static char *Rpc_info = &RPC_dummy;
+static int Rpc_info_size = 0;
+
+static char DNS_accepted_domains[1024] = {0};
+static char DNS_accepted_nodes[1024] = {0};
+
+_DIM_PROTO( DNS_SERVICE *service_exists, (char *name) );
+_DIM_PROTO( void check_validity,         (int conn_id) );
+_DIM_PROTO( void send_dns_server_info,   (int conn_id, int **bufp, int *size) );
+_DIM_PROTO( void print_stats,            (void) );
+_DIM_PROTO( void set_debug_on,           (int level) );
+_DIM_PROTO( void set_debug_off,          (void) );
+_DIM_PROTO( void kill_servers,           (void) );
+_DIM_PROTO( void print_hash_table,       (void) );
+_DIM_PROTO( void get_rpc_info,       	 (int *tag, char **info, int *size) );
+_DIM_PROTO( void set_rpc_info,       	 (int *tag, char *name, int *size) );
+_DIM_PROTO( void print_hash_table,       (void) );
+_DIM_PROTO( static void release_conn,    (int conn_id) );
+
+
+static void recv_rout( int conn_id, DIC_DNS_PACKET *packet, int size, int status )
+{
+	int handle_registration();
+	int handle_client_request();
+
+	if(size){}
+	switch(status)
+	{
+	case STA_DISC:     /* connection broken */
+
+		if(Debug)
+		{
+			dim_print_date_time();
+			printf(" Disconnect received - conn: %d to %s@%s\n", conn_id,
+				Net_conns[conn_id].task,Net_conns[conn_id].node );
+		}
+
+		release_conn( conn_id );
+		break;
+	case STA_CONN:     /* connection received */
+		if(Debug)
+		{
+			dim_print_date_time();
+			printf(" Connection request received - conn: %d\n", conn_id);
+		}
+		/* handle_conn( conn_id ); */
+		break;
+	case STA_DATA:     /* normal packet */
+		switch( vtohl(packet->src_type) )
+		{
+		case SRC_DIS :
+			handle_registration(conn_id, (DIS_DNS_PACKET *)packet, 1);
+			break;
+		case SRC_DIC :
+			handle_client_request(conn_id,(DIC_DNS_PACKET *)packet);
+			break;
+		default:
+			dim_print_date_time();
+			printf(" conn: %d to %s@%s, Bad packet\n", conn_id,
+				Net_conns[conn_id].task,Net_conns[conn_id].node );
+			printf("packet->size = %d\n", vtohl(packet->size));
+			printf("packet->src_type = %d\n", vtohl(packet->src_type));
+			printf( "closing the connection.\n" );
+			fflush(stdout);
+			release_conn( conn_id );
+/*
+			panic( "recv_rout(): Bad switch(1)" );
+*/
+		}
+		break;
+	default:	
+		dim_print_date_time();
+		printf( " - DIM panic: recv_rout(): Bad switch, exiting...\n");
+		abort();
+	}
+}
+
+static void error_handler(int conn_id, int severity, int errcode, char *reason)
+{
+	if(conn_id){}
+	if(errcode){}
+	dim_print_msg(reason, severity);
+/*
+	if(severity == 3)
+	{
+			printf("Exiting!\n");
+			exit(2);
+	}
+*/
+}
+
+int handle_registration( int conn_id, DIS_DNS_PACKET *packet, int tmout_flag )
+{
+	DNS_SERVICE *servp;
+	DNS_DIS_PACKET dis_packet;
+	int i, service_id;
+	int n_services;
+	char *ptr, *ptr1, *ptrt;
+	int found;
+	void do_update_did();
+	void do_inform_clients();
+	void inform_clients();
+	void service_init();
+	void service_insert();
+	void service_remove();
+#ifdef WIN32
+	extern int time();
+#endif
+#ifdef VMS
+	int format;
+#endif
+	int update_did = 0;
+	int name_too_long = 0;
+	int rem_only = 0;
+
+	Dns_conns[conn_id].validity = (int)time(NULL);
+	if( !Dns_conns[conn_id].service_head ) 
+	{
+
+		if(vtohl(packet->n_services) > 0)
+		{
+			service_id = vtohl(packet->services[0].service_id);
+			if((unsigned)service_id & 0x80000000)
+				rem_only = 1;
+		}
+/*
+    if( Debug )
+	{
+			dim_print_date_time();
+			printf( " !!!! New Conn %3d : Server %s@%s (PID %d) registering %d services, to delete %d\n",
+				conn_id, packet->task_name,
+				packet->node_name, 
+				vtohl(packet->pid),
+				vtohl(packet->n_services), rem_only );
+			fflush(stdout);
+	}
+*/
+		if(rem_only)
+			return 0;
+
+		Dns_conns[conn_id].already = 0;
+		Dns_conns[conn_id].service_head =
+			(char *) malloc(sizeof(DNS_SERVICE));
+		dll_init( (DLL *) Dns_conns[conn_id].service_head );
+		Dns_conns[conn_id].n_services = 0;
+		Dns_conns[conn_id].timr_ent = NULL;
+		Curr_n_servers++;
+		Dns_conns[conn_id].src_type = SRC_DIS;
+		Dns_conns[conn_id].protocol = vtohl(packet->protocol);
+		strncpy( Dns_conns[conn_id].node_name, packet->node_name,
+			(size_t)MAX_NODE_NAME ); 
+		strncpy( Dns_conns[conn_id].task_name, packet->task_name,
+			(size_t)(MAX_TASK_NAME-4) );
+		strcpy(Dns_conns[conn_id].long_task_name, packet->task_name);
+		Dns_conns[conn_id].task_name[MAX_TASK_NAME-4-1] = '\0';
+		for(i = 0; i < 4; i++)
+			Dns_conns[conn_id].node_addr[i] =  packet->node_addr[i];
+		Dns_conns[conn_id].pid = vtohl(packet->pid);
+		Dns_conns[conn_id].port = vtohl(packet->port);
+/*
+    if( Debug )
+	{
+			dim_print_date_time();
+			printf( " !!!! New Conn %3d : Server %s@%s (PID %d) registered %d services\n",
+				conn_id, Dns_conns[conn_id].task_name,
+				Dns_conns[conn_id].node_name, 
+				Dns_conns[conn_id].pid,
+				vtohl(packet->n_services) );
+			fflush(stdout);
+	}
+*/
+
+
+		if(strcmp(Dns_conns[conn_id].task_name,"DIS_DNS"))
+		if(DNS_accepted_domains[0] == 0)
+		{
+			if(!get_dns_accepted_domains(DNS_accepted_domains))
+				DNS_accepted_domains[0] = (char)0xFF;
+		}
+		if((DNS_accepted_domains[0] != (char)0xFF) && (strcmp(Dns_conns[conn_id].task_name,"DIS_DNS")))
+		{
+			ptr = DNS_accepted_domains;
+			found = 0;
+			while(*ptr)
+			{
+				ptr1 = strchr(ptr,',');
+				if(ptr1)
+				{
+					*ptr1 = '\0';
+					ptr1++;
+				}
+				else
+				{
+					ptr1 = ptr;
+					ptr1 += (int)strlen(ptr);
+				}
+				if(strstr(Dns_conns[conn_id].node_name,ptr))
+				{
+					found = 1;
+					break;
+				}
+				ptr = ptr1;
+			}
+			if(!found)
+			{
+				dis_packet.type = htovl(DNS_DIS_STOP);
+				dis_packet.size = htovl(DNS_DIS_HEADER);
+				if( !dna_write_nowait(conn_id, &dis_packet, DNS_DIS_HEADER) )
+				{
+					dim_print_date_time();
+					printf(" Stop Server: Couldn't write, releasing %d\n",conn_id);
+					fflush(stdout);
+				}
+				dim_print_date_time();
+				printf(" Connection from %s refused, stopping server %s\n",
+						Dns_conns[conn_id].node_name, 
+						Dns_conns[conn_id].task_name);
+				fflush(stdout);
+				release_conn(conn_id);
+
+				return 0;
+			}
+		}
+		if(tmout_flag)
+			Dns_conns[conn_id].timr_ent = dtq_add_entry( Timer_q,
+				(int)(WATCHDOG_TMOUT_MAX * 1.3), check_validity, conn_id);
+		if(strcmp(Dns_conns[conn_id].task_name,"DIS_DNS"))
+		{
+			dna_set_test_write(conn_id, dim_get_keepalive_timeout());
+		}
+		Dns_conns[conn_id].old_n_services = 0;
+/*
+		Dns_conns[conn_id].n_services = 1;
+		do_update_did(conn_id);
+*/
+		update_did = 1;
+/*
+		Dns_conns[conn_id].old_n_services = 0;
+*/
+		Dns_conns[conn_id].n_services = 0;
+	} 
+	else 
+	{
+		if( (Dns_conns[conn_id].n_services == -1) &&
+		    vtohl(packet->n_services) )
+		{
+			if(strcmp(Dns_conns[conn_id].task_name,"DIS_DNS"))
+				dna_set_test_write(conn_id, dim_get_keepalive_timeout());
+			dim_print_date_time();
+			printf( " Server %s out of error\n",
+				Dns_conns[conn_id].task_name );
+			fflush(stdout);
+			Dns_conns[conn_id].n_services = 0;
+		}
+	}
+	n_services = vtohl(packet->n_services);
+	if((int)strlen(Dns_conns[conn_id].task_name) == MAX_TASK_NAME-4-1)
+		name_too_long = 1;
+	for( i = 0; i < n_services; i++ ) 
+	{
+/*
+    if( Debug )
+	{
+			dim_print_date_time();
+			printf( " Conn %3d : Server %s@%s (PID %d) registered %s\n",
+				conn_id, Dns_conns[conn_id].task_name,
+				Dns_conns[conn_id].node_name, 
+				Dns_conns[conn_id].pid,
+				packet->services[i].service_name );
+			fflush(stdout);
+	}
+*/
+		if(n_services == 1)
+		{
+			if(!strcmp(packet->services[i].service_name, "DUMMY_UPDATE_PACKET"))
+			{
+				do_inform_clients(conn_id);
+				break;
+			}
+		}
+		if( (servp = service_exists(packet->services[i].service_name)) )
+		{
+			/* if service available on another server send kill signal */
+			if((servp->conn_id) && (servp->conn_id != conn_id))
+			{
+				dis_packet.type = htovl(DNS_DIS_KILL);
+				dis_packet.size = htovl(DNS_DIS_HEADER);
+#ifdef VMS
+				format = vtohl(packet->format);
+				if((format & MY_OS9) || (servp->state == -1))
+				{
+                Dns_conns[servp->conn_id].already = 1;
+					if( !dna_write(servp->conn_id, &dis_packet, DNS_DIS_HEADER) )
+					{
+						dim_print_date_time();
+						printf(" Couldn't write, releasing %d\n",servp->conn_id);
+						fflush(stdout);
+					}
+					dim_print_date_time();
+					printf(" Service %s already declared, killing server %s\n",
+						servp->serv_name, Dns_conns[servp->conn_id].task_name);
+					fflush(stdout);
+					release_client(servp->conn_id);
+					release_conn(servp->conn_id);
+				}
+				else
+				{
+#endif
+					if((Dns_conns[servp->conn_id].port == Dns_conns[conn_id].port) &&
+					  (!strcmp(Dns_conns[servp->conn_id].node_name, Dns_conns[conn_id].node_name)))
+					{
+						dim_print_date_time();
+printf(" Service %s already declared by conn %d - %s@%s:%d (PID %d), Redeclared by conn %d - %s@%s:%d (PID %d)(same server) - Closing both conns %d %d\n",
+							servp->serv_name, servp->conn_id, 
+							Dns_conns[servp->conn_id].task_name,
+							Dns_conns[servp->conn_id].node_name,
+							Dns_conns[servp->conn_id].port,
+							Dns_conns[servp->conn_id].pid,
+							conn_id,
+							Dns_conns[conn_id].task_name,
+							Dns_conns[conn_id].node_name,
+							Dns_conns[conn_id].port,
+							Dns_conns[conn_id].pid,
+							servp->conn_id, conn_id);
+						fflush(stdout);
+						release_conn(servp->conn_id);
+						release_conn(conn_id);
+/*
+						update_did = 0;
+*/
+						return(0);
+
+					}
+					else
+					{
+						Dns_conns[conn_id].already = 1;
+
+						if( !dna_write_nowait(conn_id, &dis_packet, DNS_DIS_HEADER) )
+						{
+							dim_print_date_time();
+							printf(" Kill Server: Couldn't write, releasing %d\n",conn_id);
+							fflush(stdout);
+						}
+						dim_print_date_time();
+printf(" Service %s already declared by conn %d - %s@%s:%d (PID %d), killing server conn %d - %s@%s:%d (PID %d) \n",
+							servp->serv_name, servp->conn_id, 
+							Dns_conns[servp->conn_id].task_name,
+							Dns_conns[servp->conn_id].node_name,
+							Dns_conns[servp->conn_id].port,
+							Dns_conns[servp->conn_id].pid,
+							conn_id,
+							Dns_conns[conn_id].task_name,
+							Dns_conns[conn_id].node_name,
+							Dns_conns[conn_id].port,
+							Dns_conns[conn_id].pid);
+						fflush(stdout);
+
+						release_conn(conn_id);
+
+						return(0);
+					}
+#ifdef VMS
+				}
+#endif
+			}
+			else if( servp->state != -1 ) 
+			{
+				if( !dll_empty((DLL *) servp->node_head)) 
+				{
+					/*there are interested clients waiting*/
+					strncpy( servp->serv_def,
+						packet->services[i].service_def,(size_t)MAX_NAME );
+					servp->conn_id = conn_id;
+					servp->state = 1;
+					servp->server_format = vtohl(packet->format);
+					servp->serv_id = vtohl(packet->services[i].service_id);
+					dll_insert_queue((DLL *)
+						Dns_conns[conn_id].service_head,
+						(DLL *) servp);
+					Dns_conns[conn_id].n_services++;
+
+/*
+					if(n_services == 1)
+*/
+					if(n_services < MAX_REGISTRATION_UNIT)
+					{
+						inform_clients(servp);
+					}
+					continue;
+				} 
+				else 
+				{
+					/* test if Service is to be removed */
+					service_id = vtohl(packet->services[i].service_id);
+					if((unsigned)service_id & 0x80000000)
+					{
+						dll_remove((DLL *) servp);
+						service_remove(&(servp->next));
+						Curr_n_services--;
+						free(servp);
+						Dns_conns[conn_id].n_services--;
+						if( dll_empty((DLL *) Dns_conns[conn_id].service_head))
+						{ 
+						    if( Debug )
+							{
+								dim_print_date_time();
+								printf( " Conn %3d : Server %s@%s unregistered All services, releasing it.\n",
+									conn_id, Dns_conns[conn_id].task_name,
+									Dns_conns[conn_id].node_name );
+								fflush(stdout);
+							}
+							release_conn(conn_id);
+							return(0);
+						}
+						continue;
+                    }
+				}
+			} 
+			else 
+			{
+				servp->state = 1;
+				Dns_conns[conn_id].n_services++;
+/*
+				if(n_services == 1)
+*/
+				if(n_services < MAX_REGISTRATION_UNIT)
+				{
+					if( !dll_empty((DLL *) servp->node_head) )
+					{
+						inform_clients( servp );
+					}
+				}
+				continue;
+			}
+
+		}
+		if(!(servp = service_exists(packet->services[i].service_name)))
+		{
+			servp = (DNS_SERVICE *)malloc(sizeof(DNS_SERVICE));
+			if(name_too_long)
+			{
+				if(strstr(packet->services[i].service_name,"/CLIENT_LIST"))
+				{
+					strncpy(Dns_conns[conn_id].long_task_name, packet->services[i].service_name,
+						(size_t)MAX_NAME);
+					ptrt = strstr(Dns_conns[conn_id].long_task_name,"/CLIENT_LIST");
+					*ptrt = '\0';
+				}
+			}
+			strncpy( servp->serv_name,
+				packet->services[i].service_name,
+				(size_t)MAX_NAME );
+			strncpy( servp->serv_def,
+				packet->services[i].service_def,
+				(size_t)MAX_NAME );
+			servp->state = 1;
+			servp->conn_id = conn_id;
+			servp->server_format = vtohl(packet->format);
+			servp->serv_id = vtohl(packet->services[i].service_id);
+			dll_insert_queue( (DLL *)
+					  Dns_conns[conn_id].service_head, 
+					  (DLL *) servp );
+			Dns_conns[conn_id].n_services++;
+			service_insert( &(servp->next) );
+			servp->node_head = (RED_NODE *) malloc(sizeof(NODE));
+			dll_init( (DLL *) servp->node_head );
+			Curr_n_services++;
+		} 
+	}
+	if(update_did)
+		do_update_did(conn_id);
+    if( Debug )
+	{
+		if(vtohl(packet->n_services) != 0)
+		{
+			dim_print_date_time();
+			printf( " Conn %3d : Server %s@%s (PID %d) registered %d services\n",
+				conn_id, Dns_conns[conn_id].task_name,
+				Dns_conns[conn_id].node_name, 
+				Dns_conns[conn_id].pid,
+				vtohl(packet->n_services) );
+			fflush(stdout);
+		}
+	}
+
+	return(1);
+}	
+
+void update_did()
+{
+	int i;
+	void do_update_did();
+
+	for(i = 0; i< Curr_N_Conns; i++)
+	{
+		if(Dns_conns[i].src_type == SRC_DIS)
+		{
+			do_update_did(i);
+		}
+	}
+}
+
+void do_update_did(int conn_id)
+{
+	int n_services, old_n_services;
+
+	n_services = Dns_conns[conn_id].n_services;
+/*
+	if(Dns_conns[conn_id].n_services)
+	{
+*/
+	old_n_services = Dns_conns[conn_id].old_n_services;
+	if(old_n_services != n_services)
+	{
+		Last_conn_id = conn_id;
+		if((old_n_services <= 0) || (n_services == 0) || (n_services == -1))
+			dis_update_service(Server_new_info_id);
+		dis_update_service(Server_info_id);
+		Dns_conns[conn_id].old_n_services = Dns_conns[conn_id].n_services;
+	}
+/*
+	}
+*/
+}
+
+void check_validity(int conn_id)
+{
+	int time_diff;
+	DNS_DIS_PACKET dis_packet;
+	void set_in_error();
+
+	if(Dns_conns[conn_id].validity < 0)
+	{
+		/* timeout reached kill all services and connection */
+		if(Dns_conns[conn_id].n_services != -1)
+		{
+			dim_print_date_time();
+			printf(" Server %s (%s@%s) has been set in error\n",
+				Dns_conns[conn_id].task_name, Net_conns[conn_id].task, Net_conns[conn_id].node);
+			fflush(stdout);
+			set_in_error(conn_id);
+			return;
+		}
+/*
+		Dns_conns[conn_id].validity = -Dns_conns[conn_id].validity;
+*/
+	}
+	time_diff = (int)time(NULL) - Dns_conns[conn_id].validity;
+	if(time_diff > (int)(WATCHDOG_TMOUT_MAX*1.2))
+	{
+		/* send register signal */
+		dis_packet.type = htovl(DNS_DIS_REGISTER);
+		dis_packet.size = htovl(DNS_DIS_HEADER);
+		if(Debug)
+		{
+			dim_print_date_time();
+			printf(" Conn %3d : Server %s@%s Registration Requested\n",
+				conn_id, Net_conns[conn_id].task, Net_conns[conn_id].node);
+			fflush(stdout);
+		}
+/* moved from dna_write to dna_write_nowait in 14/10/2008 */
+		if( !dna_write_nowait(conn_id, &dis_packet, DNS_DIS_HEADER) )
+		{
+			dim_print_date_time();
+			printf(" Server Validity: Couldn't write, releasing Conn %3d : Server %s@%s\n",conn_id,
+				Net_conns[conn_id].task, Net_conns[conn_id].node);
+			fflush(stdout);
+			release_conn(conn_id);
+		}
+		else
+			Dns_conns[conn_id].validity = -Dns_conns[conn_id].validity;
+	}
+}		
+
+
+int handle_client_request( int conn_id, DIC_DNS_PACKET *packet )
+{
+	DNS_SERVICE *servp;
+	NODE *nodep;
+	RED_NODE *red_nodep; 
+	int i, service_id;
+	DNS_DIC_PACKET dic_packet;
+	SERVICE_REG *serv_regp; 
+	void service_insert();
+	void service_remove();
+	void tcpip_get_addresses();
+	char *ptr, *ptr1;
+	int found;
+
+	serv_regp = (SERVICE_REG *)(&(packet->service));
+	if(Debug)
+	{
+		dim_print_date_time();
+		printf(" Conn %3d : Client %s@%s requested %s\n",
+			conn_id, Net_conns[conn_id].task, Net_conns[conn_id].node,
+			serv_regp->service_name);
+		fflush(stdout);
+	}
+
+	if(DNS_accepted_nodes[0] == 0)
+	{
+		if(!get_dns_accepted_nodes(DNS_accepted_nodes))
+			DNS_accepted_nodes[0] = (char)0xFF;
+	}
+	if(DNS_accepted_nodes[0] != (char)0xFF)
+	{
+		ptr = DNS_accepted_nodes;
+		found = 0;
+		while(*ptr)
+		{
+			ptr1 = strchr(ptr,',');
+			if(ptr1)
+			{
+				*ptr1 = '\0';
+				ptr1++;
+			}
+			else
+			{
+				ptr1 = ptr;
+				ptr1 += (int)strlen(ptr);
+			}
+			if(strstr(Net_conns[conn_id].node,ptr))
+			{
+				found = 1;
+				break;
+			}
+			ptr = ptr1;
+		}
+		if(!found)
+		{
+			dic_packet.service_id = serv_regp->service_id;
+			dic_packet.node_name[0] = (char)0xFF; 
+			dic_packet.task_name[0] = 0;
+			dic_packet.node_addr[0] = 0;
+			dic_packet.pid = 0;
+			dic_packet.size = htovl(DNS_DIC_HEADER);
+			dim_print_date_time();
+			printf(" Connection from %s refused, stopping client pid=%s\n",
+					Net_conns[conn_id].node,
+					Net_conns[conn_id].task);
+			fflush(stdout);
+			if( !dna_write_nowait(conn_id, &dic_packet, DNS_DIC_HEADER) )
+			{
+				dim_print_date_time();
+				printf(" Stop Client: Couldn't write, releasing Conn %3d : Client %s@%s\n",conn_id,
+					Net_conns[conn_id].task,
+					Net_conns[conn_id].node);
+				fflush(stdout);
+			}
+			release_conn(conn_id);
+
+			return 0;
+		}
+	}
+	
+	service_id = vtohl(serv_regp->service_id);
+	if( service_id == -1 )  /* remove service */
+	{
+		if(Debug)
+		{
+			printf("\tRemoving Request\n");
+			fflush(stdout);
+		}
+		if( (servp = service_exists(serv_regp->service_name))  ) 
+		{
+			red_nodep = servp->node_head;
+			while( (red_nodep =
+				(RED_NODE *) dll_get_next(
+						(DLL *) servp->node_head,
+						(DLL *) red_nodep)) )
+			{
+				if( red_nodep->conn_id == conn_id ) 
+				{
+					dll_remove((DLL *) red_nodep);
+					ptr = (char *)red_nodep - (2 * sizeof(void *));
+					nodep = (NODE *)ptr;
+					dll_remove((DLL *) nodep);
+					red_nodep = red_nodep->prev;
+					free(nodep);
+					break;
+				}
+			}
+			if(( dll_empty((DLL *) servp->node_head) ) && (servp->state == 0))
+			{
+				if(Debug)
+				{
+					printf("\tand Removing Service\n");
+					fflush(stdout);
+				}
+				service_remove(&(servp->next));
+				Curr_n_services--;
+				free(servp);
+			}
+		}
+		return(0);
+	}
+	if( (unsigned)service_id & 0x80000000 )  /* remove service */
+	{
+		service_id &= 0x7fffffff;
+		if(Debug)
+		{
+			printf("\tRemoving Request\n");
+			fflush(stdout);
+		}
+		if( (servp = service_exists(serv_regp->service_name)) ) 
+		{
+			red_nodep = servp->node_head;
+			while( (red_nodep =
+				(RED_NODE *) dll_get_next(
+						(DLL *) servp->node_head,
+						(DLL *) red_nodep)) )
+			{
+				if(( red_nodep->conn_id == conn_id ) &&
+				   ( red_nodep->service_id == service_id ) )
+				{
+					dll_remove((DLL *) red_nodep);
+					ptr = (char *)red_nodep - (2 * sizeof(void *));
+					nodep = (NODE *)ptr;
+					dll_remove((DLL *) nodep);
+					red_nodep = red_nodep->prev;
+					free(nodep);
+					break;
+				}
+			}
+			if(( dll_empty((DLL *) servp->node_head) ) && (servp->state == 0))
+			{
+				if(Debug)
+				{
+					printf("\tand Removing Service\n");
+					fflush(stdout);
+				}
+				service_remove(&(servp->next));
+				Curr_n_services--;
+				free(servp);
+			}
+		}
+		return(0);
+	}
+	/* Is already in v.format */
+	dic_packet.service_id = serv_regp->service_id;
+	dic_packet.node_name[0] = 0; 
+	dic_packet.task_name[0] = 0;
+	dic_packet.node_addr[0] = 0;
+	dic_packet.pid = 0;
+	dic_packet.size = htovl(DNS_DIC_HEADER);
+	if( Dns_conns[conn_id].src_type == SRC_NONE )
+		dna_set_test_write(conn_id, dim_get_keepalive_timeout());
+	if( !(servp = service_exists(serv_regp->service_name)) ) 
+	{
+		if(Debug)
+		{
+			printf("\tService does not exist, queueing request\n");
+			fflush(stdout);
+		}
+		if( !Dns_conns[conn_id].node_head ) 
+		{
+			Dns_conns[conn_id].src_type = SRC_DIC;
+			Dns_conns[conn_id].node_head =
+					malloc(sizeof(NODE));
+			dll_init( (DLL *) Dns_conns[conn_id].node_head );
+		}
+		servp = (DNS_SERVICE *) malloc(sizeof(DNS_SERVICE));
+		strncpy( servp->serv_name, serv_regp->service_name, (size_t)MAX_NAME );
+		servp->serv_def[0] = '\0';
+		servp->state = 0;
+		servp->conn_id = 0;
+		service_insert(&(servp->next));
+		Curr_n_services++;
+		servp->node_head = (RED_NODE *)malloc(sizeof(NODE));
+		dll_init( (DLL *) servp->node_head );
+		nodep = (NODE *)malloc(sizeof(NODE));
+		nodep->conn_id = conn_id;
+		nodep->service_id = service_id;
+		nodep->servp = servp;
+		dll_insert_queue((DLL *) Dns_conns[conn_id].node_head,
+				 (DLL *) nodep);
+		dll_insert_queue((DLL *) servp->node_head,
+				 (DLL *) &(nodep->next));
+	} 
+	else 
+	{
+		if( servp->state == 1 ) 
+		{
+#ifdef VMS
+			if(servp->server_format & MY_OS9)
+			{
+				dna_test_write(servp->conn_id);
+			}
+#endif
+			Dns_conns[conn_id].src_type = SRC_DIC;
+			strcpy( dic_packet.node_name,
+				Dns_conns[servp->conn_id].node_name );
+			strcpy( dic_packet.task_name,
+				Dns_conns[servp->conn_id].task_name );
+			for(i = 0; i < 4; i++)
+				dic_packet.node_addr[i] =
+					Dns_conns[servp->conn_id].node_addr[i];
+			dic_packet.port = htovl(Dns_conns[servp->conn_id].port);
+			dic_packet.pid = htovl(Dns_conns[servp->conn_id].pid);
+			dic_packet.protocol = htovl(Dns_conns[servp->conn_id].protocol);
+			dic_packet.format = htovl(servp->server_format);
+			strcpy( dic_packet.service_def, servp->serv_def );
+			if(Debug)
+			{
+				printf("\tService exists in %s@%s, port = %d\n",
+					dic_packet.task_name, dic_packet.node_name, 
+					dic_packet.port);
+				fflush(stdout);
+			}
+		} 
+		else 
+		{
+			if(Debug)
+			{
+				if(servp->state == -1)
+				{
+					printf("\tService exists in BAD state, queueing request\n");
+					fflush(stdout);
+				}
+				else
+				{
+					printf("\tService does not exist (other client(s) waiting), queueing request\n");
+					fflush(stdout);
+				}
+			}
+			if(!(NODE *)Dns_conns[conn_id].node_head ) 
+			{
+				Dns_conns[conn_id].src_type = SRC_DIC;
+				Dns_conns[conn_id].node_head = 
+					(char *) malloc(sizeof(NODE));
+				dll_init((DLL *)Dns_conns[conn_id].node_head);
+			}
+			nodep = (NODE *)malloc(sizeof(NODE));
+			nodep->conn_id = conn_id;
+			nodep->service_id = service_id;
+			nodep->servp = servp;
+			dll_insert_queue((DLL *) Dns_conns[conn_id].node_head,
+					 (DLL *) nodep);
+			dll_insert_queue((DLL *) servp->node_head,
+					 (DLL *) &(nodep->next));
+		}
+	}
+/* Should it be dna_write_nowait? 16/9/2008 */
+/* moved from dna_write to dna_write_nowait in 14/10/2008 */
+	if( !dna_write_nowait(conn_id, &dic_packet, DNS_DIC_HEADER) )
+	{
+		dim_print_date_time();
+		printf(" Client Request: Couldn't write, releasing Conn %3d : Client %s@%s\n",conn_id,
+					Net_conns[conn_id].task,
+					Net_conns[conn_id].node);
+		fflush(stdout);
+		release_conn(conn_id);
+	}
+
+	return(1);
+}
+
+void do_inform_clients(int conn_id)
+{
+	DNS_SERVICE *servp;
+	int n_informed = 0;
+	static DNS_SERVICE *prev_servp = (DNS_SERVICE *)0;
+	void inform_clients();
+
+	DISABLE_AST
+	if(!Dns_conns[conn_id].service_head)
+	{
+		prev_servp = (DNS_SERVICE *)0;
+		ENABLE_AST
+		return;
+	}
+	if(prev_servp)
+		servp = prev_servp;
+	else
+		servp = (DNS_SERVICE *)Dns_conns[conn_id].service_head;
+	while( (servp = (DNS_SERVICE *) dll_get_next(
+				(DLL *) Dns_conns[conn_id].service_head,
+				(DLL *) servp)) )
+	{
+		if( servp->state != -1 ) 
+		{
+			if( !dll_empty((DLL *) servp->node_head)) 
+			{
+				inform_clients(servp);
+				n_informed++;
+				if(n_informed == 1000)
+				{
+					dtq_start_timer(0, do_inform_clients, conn_id);
+					ENABLE_AST
+					return;
+				}
+			}
+		}
+	}
+	prev_servp = (DNS_SERVICE *)0;
+	ENABLE_AST
+}
+
+
+void inform_clients(DNS_SERVICE *servp)
+{
+	RED_NODE *nodep, *prevp; 
+	NODE *full_nodep; 
+	DNS_DIC_PACKET packet;
+	char *ptr;
+	int i, to_release = 0;
+
+	nodep = servp->node_head;
+	prevp = nodep;
+	while( (nodep = (RED_NODE *) dll_get_next((DLL *) servp->node_head,
+						 (DLL *) prevp)) )
+	{
+		packet.service_id = htovl(nodep->service_id);
+		strcpy(packet.node_name, Dns_conns[servp->conn_id].node_name);
+		strcpy(packet.task_name, Dns_conns[servp->conn_id].task_name);
+		for(i = 0; i < 4; i++)
+			packet.node_addr[i] = Dns_conns[servp->conn_id].node_addr[i];
+		packet.port = htovl(Dns_conns[servp->conn_id].port);
+		packet.pid = htovl(Dns_conns[servp->conn_id].pid);
+		packet.protocol = htovl(Dns_conns[servp->conn_id].protocol);
+		packet.size = htovl(DNS_DIC_HEADER);
+		packet.format = htovl(servp->server_format);
+		strcpy( packet.service_def, servp->serv_def );
+/* Should it be dna_write_nowait? 16/9/2008 */
+/* moved from dna_write to dna_write_nowait in 14/10/2008 */
+/*
+		dna_write_nowait(nodep->conn_id, &packet, DNS_DIC_HEADER);
+*/
+		if( !dna_write_nowait(nodep->conn_id, &packet, DNS_DIC_HEADER) )
+		{
+			dim_print_date_time();
+			printf(" Inform Client: Couldn't write, releasing Conn %3d : Client %s@%s\n",nodep->conn_id,
+					Net_conns[nodep->conn_id].task,
+					Net_conns[nodep->conn_id].node);
+			fflush(stdout);
+			to_release = nodep->conn_id;
+/*
+release_conn(nodep->conn_id);
+*/
+		}
+/*
+		if(dna_write_nowait(nodep->conn_id, &packet, DNS_DIC_HEADER))
+		{
+*/
+			dll_remove( (DLL *) nodep );
+			ptr = (char *)nodep - (2 * sizeof(void *));
+			full_nodep = (NODE *)ptr;
+			dll_remove( (DLL *) full_nodep );
+			nodep = nodep->prev;
+			free( full_nodep );
+			prevp = nodep;
+/*
+		}
+*/
+	}
+	if(to_release)
+		release_conn(to_release);
+}
+
+#ifdef VMS
+static release_client(int conn_id)
+{
+char *ptr_task;
+char *ptr_node;
+int i;
+
+	ptr_task = Net_conns[conn_id].task;
+	ptr_node = Net_conns[conn_id].node;
+	for( i = 0; i< Curr_N_Conns; i++ )
+	{
+		if( (!strcmp(Net_conns[i].task,ptr_task)) &&
+		    (!strcmp(Net_conns[i].node,ptr_node)) )
+		{
+			if(i != conn_id)
+			{
+				if( Dns_conns[i].src_type == SRC_DIC ) 
+				{
+					if(Debug)
+					{
+						dim_print_date_time();
+						printf(" Releasing client on conn %d - %s@%s\n",
+							i, Net_conns[i].task, Net_conns[i].node);
+						fflush(stdout);
+					}
+					release_conn(i);
+				}
+			}
+		}
+	}
+}
+#endif
+
+static void release_conn(int conn_id)
+{
+	DNS_SERVICE *servp, *old_servp;
+	NODE *nodep, *old_nodep;
+	void service_remove();
+
+	servp = (DNS_SERVICE *)Dns_conns[conn_id].service_head;
+	nodep = (NODE *)Dns_conns[conn_id].node_head;
+	if(( Dns_conns[conn_id].src_type == SRC_DIS ) || (servp))
+	{
+		if( Debug )
+		{
+			dim_print_date_time();
+			printf( " Conn %3d : Server %s@%s died\n",
+				conn_id, Dns_conns[conn_id].task_name,
+				Dns_conns[conn_id].node_name);
+			fflush(stdout);
+		}
+		else
+		{
+			if(Dns_conns[conn_id].n_services == -1)
+			{
+				dim_print_date_time();
+				printf( " Conn %3d : Server %s@%s died\n",
+					conn_id, Dns_conns[conn_id].task_name,
+					Dns_conns[conn_id].node_name);
+				fflush(stdout);
+			}
+		}
+		Curr_n_servers--;
+		if( Dns_conns[conn_id].timr_ent ) 
+		{
+			dtq_rem_entry( Timer_q, Dns_conns[conn_id].timr_ent );
+			Dns_conns[conn_id].timr_ent = NULL;
+		}
+		servp = (DNS_SERVICE *)Dns_conns[conn_id].service_head;
+		while( (servp = (DNS_SERVICE *) dll_get_next(
+				(DLL *) Dns_conns[conn_id].service_head,
+				(DLL *) servp)) )
+		{
+			dll_remove((DLL *) servp);
+			if(dll_empty((DLL *) servp->node_head)) 
+			{
+				service_remove(&(servp->next));
+				Curr_n_services--;
+				old_servp = servp;
+				servp = servp->server_prev;
+				free(old_servp);
+			} 
+			else 
+			{
+				servp->state = 0;
+				servp->conn_id = 0;
+				servp = servp->server_prev;
+			}
+		}
+		if(Dns_conns[conn_id].n_services)
+		{
+			Dns_conns[conn_id].n_services = 0;
+			
+			do_update_did(conn_id);
+/*
+			Last_conn_id = conn_id;
+			dis_update_service(Server_new_info_id);
+		    dis_update_service(Server_info_id);
+*/			
+		}
+		free((DNS_SERVICE *)Dns_conns[conn_id].service_head);
+		Dns_conns[conn_id].service_head = 0;
+		Dns_conns[conn_id].src_type = SRC_NONE;
+		dna_close(conn_id);
+	}
+	else if((Dns_conns[conn_id].src_type == SRC_DIC) || (nodep))
+	{
+		if(Debug)
+		{
+			dim_print_date_time();
+			printf(" Conn %3d : Client %s@%s died\n",
+				conn_id, Net_conns[conn_id].task, Net_conns[conn_id].node);
+			fflush(stdout);
+		}
+		if( (nodep = (NODE *)Dns_conns[conn_id].node_head) ) 
+		{
+			while( (nodep = (NODE *) dll_get_next(
+					(DLL *) Dns_conns[conn_id].node_head,
+					(DLL *) nodep)) )
+			{
+				servp = nodep->servp;
+				dll_remove( (DLL *) nodep );
+				dll_remove( (DLL *) &(nodep->next) );
+				old_nodep = nodep;
+				nodep = nodep->client_prev;
+				free(old_nodep);
+				if( (dll_empty((DLL *) servp->node_head)) &&
+				    (!servp->conn_id) )
+				{
+					service_remove(&(servp->next));
+					Curr_n_services--;
+					free( servp );
+				}
+			}
+			free(Dns_conns[conn_id].node_head);
+			Dns_conns[conn_id].node_head = 0;
+		}
+		Dns_conns[conn_id].src_type = SRC_NONE;
+		dna_close(conn_id);
+	} 
+	else 
+	{
+		if(Debug)
+		{
+			dim_print_date_time();
+			printf(" Conn %3d : Undefined Type %s@%s died\n",
+				conn_id, Net_conns[conn_id].task,
+				Net_conns[conn_id].node);
+			fflush(stdout);
+		}
+		dna_close(conn_id);
+	}
+}
+
+
+void set_in_error(int conn_id)
+{
+	DNS_SERVICE *servp;
+
+	if(Dns_conns[conn_id].src_type == SRC_DIS)
+	{
+		if(strcmp(Dns_conns[conn_id].task_name,"DIS_DNS"))
+			dna_rem_test_write(conn_id);
+		servp = (DNS_SERVICE *)Dns_conns[conn_id].service_head;
+		while( (servp = (DNS_SERVICE *) dll_get_next(
+				(DLL *) Dns_conns[conn_id].service_head,
+				(DLL *) servp)) )
+			servp->state = -1;
+		Dns_conns[conn_id].n_services = -1;
+	}
+}
+
+void get_dns_server_info(int *tag, int **bufp, int *size, int *first_time)
+{
+	if(tag){}
+	if(*first_time)
+	{
+
+#ifdef VMS
+		 sys$wake(0, 0);
+#else
+		wake_up = TRUE;
+#ifdef WIN32
+		wake_up();
+#endif
+#endif
+		*size = 0;
+	}
+	else
+	{
+		send_dns_server_info(Last_conn_id, bufp, size);
+	}
+}
+
+
+void send_dns_server_info(int conn_id, int **bufp, int *size)
+{
+	static int curr_allocated_size = 0;
+	static DNS_DID *dns_info_buffer;
+	DNS_SERVICE *servp;
+	DNS_SERVER_INFO *dns_server_info;
+	DNS_SERVICE_INFO *dns_service_info;
+	DNS_CONNECTION *connp;
+	int max_size;
+	int n_services;
+
+	DISABLE_AST
+	connp = &Dns_conns[conn_id];
+	if(connp->src_type != SRC_DIS)
+	{
+		ENABLE_AST
+		return;
+	}
+	n_services = connp->n_services;
+	if(n_services == -1)
+		n_services = 0;
+	max_size = (int)sizeof(DNS_SERVER_INFO) + 
+				n_services * (int)sizeof(DNS_SERVICE_INFO);
+	if(!curr_allocated_size)
+	{
+		dns_info_buffer = (DNS_DID *)malloc((size_t)max_size);
+		curr_allocated_size = max_size;
+	}
+	else if (max_size > curr_allocated_size)
+	{
+		free(dns_info_buffer);
+		dns_info_buffer = (DNS_DID *)malloc((size_t)max_size);
+		curr_allocated_size = max_size;
+	}
+	dns_server_info = &dns_info_buffer->server;
+	dns_service_info = dns_info_buffer->services;
+	strncpy(dns_server_info->task, connp->task_name, (size_t)(MAX_TASK_NAME-4));
+	strncpy(dns_server_info->node, connp->node_name, (size_t)MAX_NODE_NAME);
+	dns_server_info->pid = htovl(connp->pid);
+	dns_server_info->n_services = htovl(connp->n_services);
+	servp = (DNS_SERVICE *)connp->service_head;
+	while( (servp = (DNS_SERVICE *) dll_get_next((DLL *) connp->service_head,
+						    (DLL *) servp)) )
+	{
+		strncpy(dns_service_info->name, servp->serv_name, (size_t)MAX_NAME); 
+		dns_service_info->status = htovl(1);
+		if(servp->serv_id & 0x10000000)
+			dns_service_info->type = htovl(1);
+		else
+			dns_service_info->type = htovl(0);
+		dns_service_info++;
+	}
+	*bufp = (int *)dns_info_buffer;
+	*size = max_size;
+	ENABLE_AST
+}
+
+void get_new_dns_server_info(int *tag, int **bufp, int *size, int *first_time)
+{
+	static int curr_allocated_size = 0;
+	static char *info_buffer;
+	static int *pid_buffer, pid_size;
+	int pid_index = 0;
+	DNS_CONNECTION *connp;
+	int i, max_size, max_pid_size/*, j, n*/;
+	int n_server = 0;
+	char /*aux[MAX_NAME], *ptr, */ server[MAX_NAME], *info_buffer_ptr;
+/*
+	DNS_SERVICE *servp;
+	int find_services();
+*/
+
+	DISABLE_AST
+	if(tag){}
+ 	for( i = 0; i< Curr_N_Conns; i++ )
+	{
+		if( Dns_conns[i].src_type == SRC_DIS )
+		{
+			n_server++;
+		}
+	}
+	max_size = ((int)sizeof(DNS_SERVER_INFO) + MAX_TASK_NAME) * n_server;
+	max_pid_size = (int)sizeof(int) * n_server;
+	if(!curr_allocated_size)
+	{
+		info_buffer = (char *)malloc((size_t)max_size);
+		curr_allocated_size = max_size;
+		pid_buffer = (int *)malloc((size_t)max_pid_size);
+	}
+	else if (max_size > curr_allocated_size)
+	{
+		free(info_buffer);
+		info_buffer = (char *)malloc((size_t)max_size);
+		curr_allocated_size = max_size;
+		free(pid_buffer);
+		pid_buffer = (int *)malloc((size_t)max_pid_size);
+	}
+	info_buffer[0] = '\0';
+	pid_buffer[0] = 0;
+
+	info_buffer_ptr = info_buffer;
+	if(*first_time)
+	{
+	 	for( i = 0; i< Curr_N_Conns; i++ )
+		{
+			if( Dns_conns[i].src_type == SRC_DIS )
+			{
+				connp = &Dns_conns[i];
+/*
+				if((int)strlen(connp->task_name) == MAX_TASK_NAME-4-1)
+				{
+					strcpy(aux,connp->task_name);
+					strcat(aux,"--CLIENT_LIST");
+					n = find_services(aux);
+					for(j = 0; j < n; j++)
+					{
+						servp = Service_info_list[j];
+						if(i == servp->conn_id)
+						{
+							strcpy(aux,servp->serv_name);
+							ptr = strstr(aux,"/CLIENT_LIST");
+							if(ptr)
+								*ptr = '\0';
+							break;
+						}
+					}
+					free(Service_info_list);
+					strcpy(server, aux);
+				}
+				else
+				{
+*/
+					strcpy(server, connp->long_task_name);
+/*
+				}
+*/
+				strcat(server,"@");
+				strcat(server, connp->node_name);
+				strcat(server,"|");
+				strcpy(info_buffer_ptr, server);
+				info_buffer_ptr += (int)strlen(server);
+				pid_buffer[pid_index] = connp->pid;
+				pid_index++;
+			}
+		}
+	}
+	else
+	{
+		connp = &Dns_conns[Last_conn_id];
+		if(connp->n_services > 0)
+			strcat(info_buffer, "+");
+		else if(connp->n_services == -1)
+			strcat(info_buffer, "!");
+		else
+			strcat(info_buffer, "-");
+		strcat(info_buffer, connp->long_task_name);
+		strcat(info_buffer,"@");
+		strcat(info_buffer, connp->node_name);
+		strcat(info_buffer,"|");
+		pid_buffer[pid_index] = connp->pid;
+		pid_index++;
+	}
+	info_buffer[(int)strlen(info_buffer) - 1] = '\0';
+	info_buffer_ptr = &info_buffer[(int)strlen(info_buffer)+1];
+	pid_size = 0;
+	for(i = 0; i < pid_index; i++)
+	{
+		if(i != (pid_index -1))
+			sprintf(server, "%d|",pid_buffer[i]);
+		else
+			sprintf(server, "%d",pid_buffer[i]);
+		strcpy(info_buffer_ptr, server);
+		info_buffer_ptr += (int)strlen(server);
+		pid_size += (int)strlen(server);
+	}
+	*bufp = (int *)info_buffer;
+	*size = (int)strlen(info_buffer)+1+pid_size+1;
+	ENABLE_AST
+}
+
+int main(int argc, char **argv)
+{
+	int i, protocol, dns_port;
+	int *bufp;
+	int size;
+	int conn_id, id;
+	DIS_DNS_PACKET *dis_dns_packet;
+	char node[MAX_NAME];
+	void service_init();
+	
+	if(argc > 1)
+	{
+		if(!strcmp(argv[1],"-d"))
+			set_debug_on();
+		else
+		{
+			printf("Parameters: -d	Debug On\n");
+			exit(0);
+		}
+	}
+	dim_set_write_timeout(10);
+	dim_set_listen_backlog(1024);
+	dim_set_keepalive_timeout(90);
+	dim_set_write_buffer_size(32768);
+	dim_set_read_buffer_size(32768);
+	dim_init();
+	conn_arr_create( SRC_DNS );
+	service_init();
+	Timer_q = dtq_create();
+	get_node_name(node);
+	dim_print_date_time();
+	printf(" DNS version %d starting up on %s\n",DIM_VERSION_NUMBER, node); 
+	fflush(stdout);
+
+	Server_new_info_id =(int) dis_add_service( "DIS_DNS/SERVER_LIST", "C", 0, 0, 
+						get_new_dns_server_info, 0 );
+	Server_info_id = (int)dis_add_service( "DIS_DNS/SERVER_INFO", 0, 0, 0, 
+						get_dns_server_info, 0 );
+	dis_add_cmnd( "DIS_DNS/PRINT_STATS", 0, print_stats, 0 );
+	dis_add_cmnd( "DIS_DNS/DEBUG_ON", 0, set_debug_on, 0 );
+	dis_add_cmnd( "DIS_DNS/DEBUG_OFF", 0, set_debug_off, 0 );
+	dis_add_cmnd( "DIS_DNS/KILL_SERVERS", "I", kill_servers, 0 );
+	dis_add_cmnd( "DIS_DNS/PRINT_HASH_TABLE", 0, print_hash_table, 0 );
+	dis_add_cmnd( "DIS_DNS/SERVICE_INFO/RpcIn", "C", set_rpc_info, 0 );
+	Rpc_id = (int)dis_add_service( "DIS_DNS/SERVICE_INFO/RpcOut", "C", 0, 0, 
+						get_rpc_info, 0 );
+	dns_port = get_dns_port_number();
+	if( !dna_open_server(DNS_TASK, recv_rout, &protocol, &dns_port, error_handler) )
+		return(0);
+
+	id = dis_start_serving("DIS_DNS");
+	dis_dns_packet = (DIS_DNS_PACKET *) id_get_ptr(id, SRC_DIS);
+	id_free(id, SRC_DIS);
+	conn_id = conn_get();
+	handle_registration(conn_id, dis_dns_packet, 0);
+	dtq_add_entry(Timer_q, 5, update_did, 0xded0000);
+	while(1)
+	{
+#ifdef VMS
+		sys$hiber(); 
+#else
+		wake_up = FALSE;
+		while( !wake_up )
+        {
+			dim_wait();
+        }
+#endif
+ 		for( i = 0; i< Curr_N_Conns; i++ )
+		{
+			if( Dns_conns[i].src_type == SRC_DIS )
+			{
+				send_dns_server_info( i, &bufp, &size );
+				dis_send_service( Server_info_id, bufp, size );
+			}
+		}
+	}
+	return(1);
+}
+
+
+void print_stats()
+{
+	int i;
+	int n_conns = 0;
+	int n_services = 0;
+	int n_servers = 0;
+	int n_clients = 0;
+
+	dim_print_date_time();
+	printf(" Connection Statistics :\n");
+	for(i = 0; i< Curr_N_Conns; i++)
+	{
+		switch(Dns_conns[i].src_type)
+		{
+		case SRC_DIS :
+			printf("%d - Server %s@%s (PID %d) %d services\n",
+				i, Dns_conns[i].task_name,
+				Dns_conns[i].node_name,
+				Dns_conns[i].pid, Dns_conns[i].n_services);
+			fflush(stdout);
+			n_services +=  Dns_conns[i].n_services;
+			n_servers++;
+			n_conns++;
+			break;
+		case SRC_DIC :
+			printf("%d - Client %s@%s\n",
+				i, Net_conns[i].task, Net_conns[i].node); 
+			fflush(stdout);
+			n_conns++;
+			n_clients++;
+			break;
+		default :
+			if(Dna_conns[i].busy)
+			{
+				if(Net_conns[i].task[0] && Net_conns[i].node[0])
+					printf("%d - Undefined %s@%s\n",
+						i, Net_conns[i].task,
+						Net_conns[i].node);
+				else 
+					printf("%d - Undefined\n", i);
+				fflush(stdout);
+				n_conns++;
+			}
+			else
+			{
+				printf("%d - Empty\n", i);
+				fflush(stdout);
+			}
+		}
+	}
+	printf("Number of Connections = %d : %d servers, %d clients\n", n_conns,
+		n_servers, n_clients);
+	printf("Number of Services = %d\n", n_services);
+	fflush(stdout);
+}
+
+
+void set_debug_on()
+{
+	Debug = 1;
+}
+
+
+void set_debug_off()
+{
+	Debug = 0;
+}
+
+
+void kill_servers(int *tag, int *code, int *size)
+{
+	int i;
+	DNS_DIS_PACKET dis_packet;
+	int soft_code = 0, soft_size = 0;
+	int type;
+	
+	if(tag){}
+	if(size)
+	{
+		soft_size = *size;
+		if(code)
+		{
+			soft_code = *code;
+		}
+	}
+	for(i = 0; i< Curr_N_Conns; i++)
+	{
+		if(Dns_conns[i].src_type == SRC_DIS)
+		{
+			if(!strcmp(Dns_conns[i].task_name,"DIS_DNS"))
+				continue;
+			fflush(stdout);
+			type = DNS_DIS_EXIT;
+			if(soft_size)
+			{
+				type = DNS_DIS_SOFT_EXIT;
+				type |= (soft_code << (int)16) & (int)0xFFFF0000;
+				dim_print_date_time();
+				printf(" Killing server %s@%s with exit code %d\n",
+					Dns_conns[i].task_name, Dns_conns[i].node_name, soft_code);
+			}
+			else
+			{
+				dim_print_date_time();
+				printf(" Killing server %s@%s\n",
+					Dns_conns[i].task_name, Dns_conns[i].node_name);
+			}
+			dis_packet.type = htovl(type);
+			dis_packet.size = htovl(DNS_DIS_HEADER);
+			if( !dna_write_nowait(i, &dis_packet, DNS_DIS_HEADER) )
+			{
+				dim_print_date_time();
+				printf(" Kill Server: Couldn't write, releasing %d\n",i);
+				fflush(stdout);
+				release_conn(i);
+			}
+		}
+	}
+}
+
+
+void service_init()
+{
+  int i;
+
+	for( i = 0; i < MAX_HASH_ENTRIES; i++ ) {
+		Service_hash_table[i] = (RED_DNS_SERVICE *) malloc(sizeof(RED_DNS_SERVICE));
+		dll_init((DLL *) Service_hash_table[i]);
+	}
+}
+
+
+void service_insert(RED_DNS_SERVICE *servp)
+{
+	int index;
+
+	index = HashFunction(servp->serv_name, MAX_HASH_ENTRIES);
+	dll_insert_queue((DLL *) Service_hash_table[index], 
+			 (DLL *) servp);
+}
+
+
+void service_remove(RED_DNS_SERVICE *servp)
+{
+	if( servp->node_head )
+		free( servp->node_head );
+	dll_remove( (DLL *) servp );
+}
+
+
+DNS_SERVICE *service_exists(char *name)
+{
+	int index;
+	RED_DNS_SERVICE *servp;
+	char *ptr;
+
+	index = HashFunction(name, MAX_HASH_ENTRIES);
+	if( (servp = (RED_DNS_SERVICE *) dll_search(
+					(DLL *) Service_hash_table[index],
+			      		name, (int)strlen(name)+1)) )
+	{
+		ptr = (char *)servp - (2 * sizeof(void *));
+		return((DNS_SERVICE *)ptr);
+	}
+
+	return((DNS_SERVICE *)0);
+}			
+
+void print_hash_table()
+{
+	int i;
+	RED_DNS_SERVICE *servp;
+	int n_entries, max_entry_index = 0;
+	int max_entries = 0;
+
+#ifdef VMS
+	if( ( foutptr = fopen( "scratch$week:[cp_operator]dim_dns.log", "w" ) 
+		) == (FILE *)0 )
+	{
+		printf("Cannot open: scratch$week:[cp_operator]dim_dns.log for writing\n");
+		fflush(stdout);
+		return;
+	}	
+#endif								 
+	
+	for( i = 0; i < MAX_HASH_ENTRIES; i++ ) 
+	{
+		n_entries = 0;
+#ifdef VMS
+		fprintf(foutptr,"HASH[%d] : \n",i);
+#endif								 
+		servp = Service_hash_table[i];
+		while( (servp = (RED_DNS_SERVICE *) dll_get_next(
+						(DLL *) Service_hash_table[i],
+						(DLL *) servp)) )
+		{
+#ifdef VMS
+			fprintf(foutptr,"%s\n",servp->serv_name);
+#endif								 
+			n_entries++;
+		}
+#ifdef VMS
+		fprintf(foutptr,"\n\n");
+#endif								 
+		if(n_entries != 0)
+			printf("HASH[%d] - %d entries\n", i, n_entries);  
+		if(n_entries > max_entries)
+		{
+			max_entries = n_entries;
+			max_entry_index = i;
+		}
+	}
+#ifdef VMS
+	fclose(foutptr);
+#endif								 
+	printf("Maximum : HASH[%d] - %d entries\n", max_entry_index, max_entries);  
+	fflush(stdout);
+}
+
+int find_services(char *wild_name)
+{
+
+	int i;
+	RED_DNS_SERVICE *servp;
+	DNS_SERVICE *servp1;
+	char tmp[MAX_NAME], *ptr, *ptr1, *dptr, *dptr1;
+	int match, count = 0;
+
+	Service_info_list = (DNS_SERVICE **)
+		malloc((size_t)(Curr_n_services*(int)sizeof(DNS_SERVICE *)));
+
+	if(!strchr(wild_name, '*'))
+	{
+		servp1 = service_exists(wild_name);
+		if(servp1)
+		{
+			if(servp1->state == 1)
+			{
+				Service_info_list[count] = (DNS_SERVICE *)servp1;
+				count++;
+				return 1;
+			}
+		}
+		return 0;
+	}
+	for( i = 0; i < MAX_HASH_ENTRIES; i++ ) 
+	{
+		servp = Service_hash_table[i];
+		while( (servp = (RED_DNS_SERVICE *) dll_get_next(
+						(DLL *) Service_hash_table[i],
+						(DLL *) servp)) )
+		{
+			ptr = wild_name;
+			dptr = servp->serv_name;
+			match = 1;
+
+            while( (ptr1 = strchr(ptr,'*')) )
+			{
+				if(ptr1 == ptr)
+				{
+					ptr++;
+					if(!*ptr)
+					{
+						dptr = ptr; 
+						break;
+					}
+					strcpy(tmp,ptr);
+					if( (ptr1 = strchr(ptr,'*')) )
+					{
+						tmp[ptr1-ptr] = '\0';
+					}
+					if( (dptr1 = strstr(dptr, tmp)) )
+					{
+						if(!ptr1)
+						{
+							dptr = dptr1;
+							break;
+						}
+						dptr1 += (int)strlen(tmp);
+						ptr = ptr1;
+						dptr = dptr1;
+					}
+					else
+					{
+						match = 0;
+						break;
+					}
+				}
+				else
+				{
+					strcpy(tmp,ptr);
+					tmp[ptr1-ptr] = '\0';
+					if(!strncmp(dptr, tmp, strlen(tmp)))
+					{
+						dptr += (int)strlen(tmp);
+						ptr = ptr1;
+					}
+					else
+					{
+						match = 0;
+						break;
+					}
+				}
+			}			
+			if(strcmp(dptr, ptr))
+			{
+				strcpy(tmp,ptr);
+				strcat(tmp,"/RpcIn");
+				if(strcmp(dptr, tmp))
+					match = 0;
+			}
+		    if(match)
+			{
+				if(servp->state == 1)
+				{
+					ptr = (char *)servp - (2 * sizeof(void *));
+					Service_info_list[count] = (DNS_SERVICE *)ptr;
+					count++;
+				}
+			}
+		}
+	}
+	return(count);
+}
+
+void set_rpc_info(int *tag, char *buffer, int *size)
+{
+	char aux[MAX_NAME], rpcaux[MAX_NAME+32], *ptr, *rpcptr;
+    int i, n, rpc, id[2], conn_id;
+	DNS_SERVICE *servp, *aux_servp;
+
+	if(size){}
+	if(tag){}
+	if(Debug)
+	{
+		dim_print_date_time();
+		conn_id = dis_get_conn_id();
+		printf(" Got Browse Request <%s> from conn: %d %s@%s\n", buffer, conn_id,
+			Net_conns[conn_id].task,Net_conns[conn_id].node);
+	}
+	n = find_services(buffer);
+	if(Debug)
+	{
+		dim_print_date_time();
+		conn_id = dis_get_conn_id();
+		printf(" Browse Request <%s> found %d services\n", buffer, n);
+	}
+	if(!Rpc_info_size)
+	{
+		Rpc_info = malloc((size_t)(MAX_NAME*(n+1)*2));
+		Rpc_info_size = MAX_NAME*(n+1)*2;
+	}
+	else if(Rpc_info_size < MAX_NAME*n*2)
+	{
+		free(Rpc_info);
+		Rpc_info = malloc((size_t)(MAX_NAME*(n+1)*2));
+		Rpc_info_size = MAX_NAME*(n+1)*2;
+	}
+	Rpc_info[0] = '\0';
+	rpcptr = Rpc_info;
+	for(i = 0; i < n; i++)
+	{		
+		rpc = 0;
+		servp = Service_info_list[i];
+		if(strstr(servp->serv_name,"/Rpc"))
+		{
+			strcpy(aux,servp->serv_name);
+			if( (ptr = strstr(aux,"/RpcIn")) )
+			{
+				*ptr = '\0';
+				rpc = 1;
+				if( (ptr = strstr(Rpc_info, aux)) )
+				{
+					ptr += (int)strlen(aux);
+					if(*ptr == '|')
+						rpc = 2;
+				}
+			}
+			if( (ptr = strstr(aux,"/RpcOut")) )
+			{
+				*ptr = '\0';
+				rpc = 1;
+				if( (ptr = strstr(Rpc_info, aux)) )
+				{
+					ptr += (int)strlen(aux);
+					if(*ptr == '|')
+						rpc = 2;
+				}
+			}
+			if(rpc == 1)
+			{
+				strcpy(rpcaux, aux);
+				strcat(rpcaux,"|");
+				strcat(aux,"/RpcIn");
+				if( (aux_servp = service_exists(aux)) )
+				{
+					strcat(rpcaux, aux_servp->serv_def);
+					strcat(rpcaux,",");
+					ptr = strstr(aux,"/RpcIn");
+					*ptr = '\0';
+					strcat(aux,"/RpcOut");
+					if( (aux_servp = service_exists(aux)) )
+					{
+						strcat(rpcaux,aux_servp->serv_def);
+						strcat(rpcaux,"|RPC\n");
+						strcpy(rpcptr, rpcaux);
+						rpcptr += (int)strlen(rpcaux);
+					}
+				}
+			}
+		}
+		else
+		{
+			strcpy(rpcaux, servp->serv_name);
+			strcat(rpcaux,"|");
+			strcat(rpcaux,servp->serv_def);
+			if(servp->serv_id & 0x10000000)
+				strcat(rpcaux,"|CMD\n");
+			else
+				strcat(rpcaux,"|\n");
+			strcpy(rpcptr, rpcaux);
+			rpcptr += (int)strlen(rpcaux);
+		}
+	}
+	*rpcptr = '\0';
+	id[0] = dis_get_conn_id();
+	id[1] = 0;
+	dis_selective_update_service(Rpc_id, id); 
+	free(Service_info_list);
+}
+
+void get_rpc_info(int *tag, char **buffer, int *size)
+{
+
+	if(tag){}
+	*buffer = Rpc_info;
+	*size = (int)strlen(Rpc_info)+1;
+}
+
Index: branches/testFACT++branch/dim/src/dtq.c
===================================================================
--- branches/testFACT++branch/dim/src/dtq.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/dtq.c	(revision 18277)
@@ -0,0 +1,875 @@
+/*
+ * DTQ (Delphi Timer Queue) implements the action scheduling for the DIM
+ * (Delphi Information Managment) System.
+ * It will be used by servers clients and the Name Server.
+ *
+ * Started date   : 10-11-91
+ * Written by     : C. Gaspar
+ * UNIX adjustment: G.C. Ballintijn
+ */
+
+/* include files */
+#ifndef WIN32
+#ifndef NOTHREADS
+int DIM_Threads_OFF = 0;
+#else
+int DIM_Threads_OFF = 1;
+#endif
+#endif
+#include <signal.h>
+#include <stdio.h>
+#define DIMLIB
+#include <dim.h>
+
+#ifdef VxWorks
+#include <time.h>
+#endif
+
+#include <sys/timeb.h>
+
+/* global definitions */
+#define MAX_TIMER_QUEUES	16	/* Number of normal queue's     */
+#define SPECIAL_QUEUE		16	/* The queue for the queue-less */
+#define WRITE_QUEUE			17 
+
+_DIM_PROTO( static void alrm_sig_handler,  (int num) );
+_DIM_PROTO( static void Std_timer_handler, () );
+_DIM_PROTO( static int stop_it,			   (int new_time) );
+_DIM_PROTO( static int start_it,		   (int new_time) );
+_DIM_PROTO( static int scan_it,			   () );
+_DIM_PROTO( static int get_minimum,		   (int deltat) );
+_DIM_PROTO( int dtq_task, (void *dummy) );
+_DIM_PROTO( static int my_alarm, (int secs) );
+_DIM_PROTO( int dim_dtq_init,	   (int thr_flag) );
+#ifndef WIN32
+_DIM_PROTO( static void dummy_alrm_sig_handler, (int num) );
+#endif
+
+typedef struct {
+	TIMR_ENT *queue_head;
+	int remove_entries;
+} QUEUE_ENT;
+
+
+static QUEUE_ENT timer_queues[MAX_TIMER_QUEUES + 2] = { 
+	{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
+	{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}
+};
+
+static int Inside_ast = 0;
+static int Alarm_runs = 0;
+static int sigvec_done = 0;
+
+#ifdef VxWorks
+static timer_t Timer_id;
+#endif
+
+static time_t DIM_last_time = 0;
+static int DIM_last_time_millies = 0;
+static int DIM_next_time = 0;
+static int DIM_time_left = 0;
+static int Threads_off = 0;
+
+/*
+ * DTQ routines
+ */
+
+
+#ifndef WIN32
+
+void dim_no_threads()
+{
+	extern void dic_no_threads();
+	extern void dis_no_threads();
+	
+	DIM_Threads_OFF = 1;
+	Threads_off = 1;
+	dic_no_threads();
+	dis_no_threads();
+}
+
+int dim_dtq_init(int thr_flag)
+{
+struct sigaction sig_info;
+sigset_t set;
+int ret = 0;
+
+/*
+	pid = getpid();
+*/
+	if( !sigvec_done) 
+	{
+	    Inside_ast = 0;
+	    Alarm_runs = 0;
+	    DIM_last_time = 0;
+/*
+	    for(i = 0; i < MAX_TIMER_QUEUES + 2; i++)
+	    {
+	        timer_queues[i].queue_head = 0;
+			timer_queues[i].remove_entries = 0;
+	    }
+*/
+		if( timer_queues[SPECIAL_QUEUE].queue_head == NULL ) {
+			timer_queues[SPECIAL_QUEUE].queue_head = (TIMR_ENT *)malloc(sizeof(TIMR_ENT));
+			memset(timer_queues[SPECIAL_QUEUE].queue_head, 0, sizeof(TIMR_ENT));
+			dll_init( (DLL *)timer_queues[SPECIAL_QUEUE].queue_head);
+		}
+		if( timer_queues[WRITE_QUEUE].queue_head == NULL ) {
+			timer_queues[WRITE_QUEUE].queue_head = (TIMR_ENT *)malloc(sizeof(TIMR_ENT));
+			memset(timer_queues[WRITE_QUEUE].queue_head, 0, sizeof(TIMR_ENT));
+			dll_init( (DLL *)timer_queues[WRITE_QUEUE].queue_head);
+		}
+	    if(!thr_flag)
+	    {
+	        Threads_off = 1;
+	    }
+		sigemptyset(&set);
+	  
+		sigaddset(&set,SIGIO);
+		
+		if(thr_flag)
+			sig_info.sa_handler = dummy_alrm_sig_handler;
+		else
+			sig_info.sa_handler = alrm_sig_handler;
+		sig_info.sa_mask = set;
+#ifndef LYNXOS
+		sig_info.sa_flags = SA_RESTART;
+#else
+		sig_info.sa_flags = 0;
+#endif
+		if( sigaction(SIGALRM, &sig_info, 0) < 0 ) {
+			perror( "sigaction(SIGALRM)" );
+			exit(1);
+		}
+	    
+	    sigvec_done = 1;
+	    ret = 1;
+	}
+	return(ret);
+}
+
+void dummy_alrm_sig_handler( int num )
+{
+	if(num){}
+}
+
+#else
+
+int dim_dtq_init(int thr_flag)
+{
+	int tid = 1;
+	void create_alrm_thread(void);
+
+	if( !sigvec_done ) {
+		Inside_ast = 0;
+	    Alarm_runs = 0;
+	    DIM_last_time = 0;
+/*
+	    for(i = 0; i < MAX_TIMER_QUEUES + 2; i++)
+	    {
+	        timer_queues[i].queue_head = 0;
+			timer_queues[i].remove_entries = 0;
+	    }
+*/
+		if( timer_queues[SPECIAL_QUEUE].queue_head == NULL ) {
+			timer_queues[SPECIAL_QUEUE].queue_head = (TIMR_ENT *)malloc(sizeof(TIMR_ENT));
+			memset(timer_queues[SPECIAL_QUEUE].queue_head, 0, sizeof(TIMR_ENT));
+			dll_init( (DLL *)timer_queues[SPECIAL_QUEUE].queue_head);
+		}
+		if( timer_queues[WRITE_QUEUE].queue_head == NULL ) {
+			timer_queues[WRITE_QUEUE].queue_head = (TIMR_ENT *)malloc(sizeof(TIMR_ENT));
+			memset(timer_queues[WRITE_QUEUE].queue_head, 0, sizeof(TIMR_ENT));
+			dll_init( (DLL *)timer_queues[WRITE_QUEUE].queue_head);
+		}
+/*
+#ifndef STDCALL
+		tid = _beginthread((void *)(void *)dtq_task,0,NULL);
+#else
+		tid = _beginthreadex(NULL, NULL,
+			dtq_task,0,0,NULL);
+#endif
+*/
+		create_alrm_thread();
+		sigvec_done = 1;
+	}
+	return(tid);
+}
+
+#endif
+
+void dim_dtq_stop()
+{
+/*
+	int i;
+	for(i = 0; i < MAX_TIMER_QUEUES + 2; i++)
+	{
+		if( timer_queues[i].queue_head != NULL)
+		{
+			dtq_delete(i);
+			free((TIMR_ENT *)timer_queues[i].queue_head);
+			timer_queues[i].queue_head = 0;
+		}
+	}
+*/
+	scan_it();
+	if( timer_queues[WRITE_QUEUE].queue_head != NULL)
+	{
+		dtq_delete(WRITE_QUEUE);
+		free((TIMR_ENT *)timer_queues[WRITE_QUEUE].queue_head);
+		timer_queues[WRITE_QUEUE].queue_head = 0;
+	}
+	sigvec_done = 0;
+}
+
+static int get_current_time(int *millies)
+{
+	int secs;
+#ifdef WIN32
+	struct timeb timebuf;
+#else
+	struct timeval tv;
+	struct timezone *tz;
+#endif
+
+#ifdef WIN32
+	ftime(&timebuf);
+	secs = (int)timebuf.time;
+	*millies = timebuf.millitm;
+#else
+	tz = 0;
+	gettimeofday(&tv, tz);
+	secs = (int)tv.tv_sec;
+	*millies = (int)tv.tv_usec / 1000;
+#endif
+	return secs;
+}
+
+static int get_elapsed_time()
+{
+	int millies, deltat;
+	int now;
+
+	now = get_current_time(&millies);
+	deltat = now - (int)DIM_last_time;
+	if((millies + 50) < DIM_last_time_millies)
+	{
+		deltat --;
+	}
+	return deltat;
+}
+
+static int my_alarm(int secs)
+{
+	int ret;
+
+	DIM_next_time = secs;
+#ifndef WIN32
+	if(Threads_off)
+	{
+		if( secs < 0)
+		{
+			kill(getpid(),SIGALRM);
+			return(0);
+		}
+		else
+		{
+			return((int)alarm((unsigned int)secs));
+		}
+	}
+	else
+	{
+#endif
+
+		ret = DIM_time_left;
+
+		if(secs == 0)
+			DIM_next_time = -1;
+		return(ret);
+#ifndef WIN32
+	}
+#endif
+}
+
+void dim_usleep(int usecs)
+{
+
+#ifndef WIN32
+	struct timeval timeout;
+
+	timeout.tv_sec = 0;
+	timeout.tv_usec = usecs;
+	select(FD_SETSIZE, NULL, NULL, NULL, &timeout);
+#else
+	usleep(usecs);
+#endif
+}
+
+int dtq_task(void *dummy)
+{
+int deltat;
+static int to_go;
+
+	if(dummy){}
+	while(1)
+	{
+		if(DIM_next_time)
+		{
+			DISABLE_AST
+			DIM_time_left = DIM_next_time;
+			if(DIM_time_left == -1)
+				DIM_time_left = 0;
+			to_go = DIM_next_time;
+			DIM_next_time = 0;
+			ENABLE_AST
+		}
+		if(DIM_time_left < 0)
+		{
+			DIM_time_left = 0;
+			alrm_sig_handler(2);
+#ifndef WIN32
+			return(1);
+#endif
+		}
+		else if(DIM_time_left > 0)
+		{
+			dim_usleep(100000);
+			deltat = get_elapsed_time();
+			DIM_time_left = to_go - deltat;
+			if(DIM_time_left <= 0)
+			{
+				alrm_sig_handler(2);
+#ifndef WIN32
+				return(1);
+#endif
+			}
+		}
+		else
+		{
+			dim_usleep(1000);
+		}
+	}
+}
+
+int dtq_create()
+{
+	int i;
+	extern void dim_init_threads(void);
+
+	if(!Threads_off)
+	{
+		dim_init_threads();
+	}
+	dim_dtq_init(0);
+	for( i = 1; i < MAX_TIMER_QUEUES; i++ )
+		if( timer_queues[i].queue_head == 0 )
+			break;
+
+	if( i == MAX_TIMER_QUEUES )
+		return(0);
+
+	timer_queues[i].queue_head = (TIMR_ENT *)malloc( sizeof(TIMR_ENT) );
+	memset( timer_queues[i].queue_head, 0, sizeof(TIMR_ENT) );
+	dll_init( (DLL *)timer_queues[i].queue_head);
+
+	return(i);
+}
+
+
+int dtq_delete(int queue_id)
+{
+	TIMR_ENT *queue_head, *entry;
+
+	DISABLE_AST
+	queue_head = timer_queues[queue_id].queue_head;
+	if(queue_head)
+	{
+		while(!dll_empty((DLL *)queue_head))
+		{
+			entry = queue_head->next;
+			dll_remove(entry);
+			free(entry);
+		}
+		free(queue_head);
+		timer_queues[queue_id].queue_head = 0;
+	}
+	ENABLE_AST
+	return(1);			
+}
+	
+TIMR_ENT *dtq_add_entry(int queue_id, int time, void (*user_routine)(), dim_long tag)
+{
+	TIMR_ENT *new_entry, *queue_head, *auxp, *prevp;
+	int next_time, min_time = 100000;
+	int time_left, deltat = 0;
+
+	DISABLE_AST 
+
+	next_time = time;
+	if(!next_time)
+		next_time = -10;
+	if(Alarm_runs)
+	{
+		time_left = DIM_time_left;
+		if(!time_left)
+			time_left = DIM_next_time;
+		if((time_left > next_time) || (queue_id == SPECIAL_QUEUE))
+	    {
+			if(next_time != -10)
+			{
+				min_time = stop_it();
+				if((next_time > min_time) && (min_time != 0))
+					next_time = min_time;
+			}
+			else
+				my_alarm(next_time);
+	    }
+		else
+		{
+		    deltat = get_elapsed_time();
+		}
+	}
+	new_entry = (TIMR_ENT *)malloc( sizeof(TIMR_ENT) );
+	new_entry->time = time;
+    if( user_routine )
+   	   	new_entry->user_routine = user_routine;
+	else
+       	new_entry->user_routine = Std_timer_handler;
+	new_entry->tag = tag;
+	new_entry->time_left = time + deltat;
+
+	queue_head = timer_queues[queue_id].queue_head;
+	if(!time)
+	{
+		dll_insert_after((DLL *)queue_head->prev, (DLL *)new_entry);
+	}
+	else
+	{
+		if(queue_head)
+		{
+			auxp = queue_head;
+			prevp = auxp;
+			while((auxp = (TIMR_ENT *)dll_get_prev((DLL *)queue_head, (DLL *)auxp)))
+			{
+				if(time >= auxp->time)
+				{
+					break;
+				}
+				prevp = auxp;
+			}
+/*
+			if(auxp)
+			{
+				if(queue_id != SPECIAL_QUEUE)
+				{
+					if(auxp->time_left > 0)
+					{
+						if(auxp->time == time)
+							new_entry->time_left = auxp->time_left;
+					}
+				}
+				prevp = auxp;
+			}
+*/
+			dll_insert_after((DLL *)prevp, (DLL *)new_entry);
+		}
+	}
+	if(!Alarm_runs)
+	{
+		if((next_time != -10) && (min_time == 100000))
+		{
+			min_time = get_minimum(0);
+			if(next_time > min_time)
+				next_time = min_time;
+		}
+		start_it(next_time);
+	}
+	ENABLE_AST
+	return(new_entry); 
+}
+
+int dtq_clear_entry(TIMR_ENT *entry)
+{
+	int time_left, deltat = 0;
+
+	DISABLE_AST
+	deltat = get_elapsed_time();
+	time_left = entry->time_left - deltat;
+	entry->time_left = entry->time + deltat;
+	ENABLE_AST
+	return(time_left);
+}
+
+
+int dtq_rem_entry(int queue_id, TIMR_ENT *entry)
+{
+	int time_left, deltat = 0;
+
+	DISABLE_AST
+	deltat = get_elapsed_time();
+	time_left = entry->time_left - deltat;
+	if( Inside_ast ) 
+	{
+		timer_queues[queue_id].remove_entries++;
+		entry->time = -1;
+		ENABLE_AST
+		return(time_left);
+	}
+	dll_remove(entry);
+	free(entry);
+
+	ENABLE_AST
+	return(time_left);
+}
+
+static int rem_deleted_entries(int queue_id)
+{
+	TIMR_ENT *auxp, *prevp, *queue_head;
+	int n;
+
+	DISABLE_AST
+	queue_head = timer_queues[queue_id].queue_head;
+	n = timer_queues[queue_id].remove_entries;
+	if(queue_head)
+	{
+		auxp = queue_head;
+		prevp = auxp;
+		while( (auxp = (TIMR_ENT *)dll_get_next((DLL *)queue_head, (DLL *)auxp)) )
+		{
+			if(auxp->time == -1)
+			{
+				dll_remove(auxp);
+				free(auxp);
+				auxp = prevp;
+				n--;
+				if(!n)
+					break;
+			}
+			else
+				prevp = auxp;
+		}
+	}
+	ENABLE_AST;
+	return(1);
+}
+
+static int get_minimum(int deltat)
+{
+	TIMR_ENT *auxp, *queue_head;
+	int queue_id;
+	int min_time = 100000;
+
+	queue_head = timer_queues[WRITE_QUEUE].queue_head;
+	if( dll_get_next((DLL *)queue_head,(DLL *)queue_head))
+		min_time = -10;
+	if((min_time != -10) || deltat)
+	{
+		if( (queue_head = timer_queues[SPECIAL_QUEUE].queue_head) != NULL)
+		{
+			auxp = queue_head;
+			while( (auxp = (TIMR_ENT *)dll_get_next((DLL *)queue_head,(DLL *)auxp)) )
+			{
+				auxp->time_left -= deltat;
+				if(auxp->time_left > 0)
+				{
+					if(auxp->time_left < min_time)
+					{
+						min_time = auxp->time_left;
+					}
+				}
+			}
+		}
+		for( queue_id = 0; queue_id < MAX_TIMER_QUEUES; queue_id++ ) 
+		{
+			if( (queue_head = timer_queues[queue_id].queue_head) == NULL )
+				continue;
+			auxp = queue_head;
+			while( (auxp = (TIMR_ENT *)dll_get_next((DLL *)queue_head,(DLL *)auxp)) )
+			{
+				auxp->time_left -= deltat;
+				if(auxp->time_left > 0)
+				{
+					if(auxp->time_left < min_time)
+					{
+						min_time = auxp->time_left;
+					}
+				}
+				else
+				{
+					if(auxp->time < min_time)
+					{
+						min_time = auxp->time;
+					}
+				}
+				if((!deltat) && (min_time <= 1))
+					break;
+			}
+		}
+	}
+	if(min_time == 100000)
+		min_time = 0;
+	return min_time;
+}
+
+static int stop_it()
+{
+	int min_time;
+    int deltat = 0;
+
+	DISABLE_AST
+	if(Alarm_runs)
+	{
+		my_alarm(0);
+        deltat = get_elapsed_time();
+		if(deltat != 0)
+			DIM_last_time = get_current_time(&DIM_last_time_millies);
+		Alarm_runs = 0;
+	}
+	min_time = get_minimum(deltat);
+	ENABLE_AST
+	return(min_time);
+}
+
+static int start_it(int new_time)
+{
+	int next_time;
+	TIMR_ENT *queue_head;
+
+	DISABLE_AST
+	next_time = new_time;
+	if(next_time > 0)
+	{
+		queue_head = timer_queues[WRITE_QUEUE].queue_head;
+		if( dll_get_next((DLL *)queue_head,(DLL *)queue_head))
+		{
+			next_time = -10;
+		}
+	}
+	if(next_time)
+	{
+		my_alarm(next_time);
+		Alarm_runs = 1;
+		if(!DIM_last_time)
+			DIM_last_time = get_current_time(&DIM_last_time_millies);
+	}
+	else
+		DIM_last_time = 0;
+
+	ENABLE_AST
+	return(1);
+}
+
+static int scan_it()
+{
+	int queue_id, i, n = 0;
+	static int curr_queue_id = 0;
+	static TIMR_ENT *curr_entry = 0;
+	TIMR_ENT *auxp, *prevp, *queue_head;
+	TIMR_ENT *done[1024];
+
+	DISABLE_AST
+	queue_head = timer_queues[WRITE_QUEUE].queue_head;
+	if(!queue_head)
+	{
+		ENABLE_AST
+		return(0);
+	}
+	auxp = queue_head;
+	while( (auxp = (TIMR_ENT *)dll_get_next((DLL *)queue_head,(DLL *)auxp)) )
+	{	
+		done[n++] = auxp;
+		if(n == 1000)
+			break;
+	}
+	ENABLE_AST
+	for(i = 0; i < n; i++)
+	{
+		auxp = done[i];
+		auxp->user_routine( auxp->tag );
+	}
+	{
+		DISABLE_AST
+		for(i = 0; i < n; i++)
+		{
+			auxp = done[i];
+			dll_remove(auxp);
+			free(auxp);
+		}
+		if(n == 1000)
+		{
+			ENABLE_AST
+			return(1);
+		}
+		ENABLE_AST
+	}
+	{
+	DISABLE_AST
+	queue_head = timer_queues[SPECIAL_QUEUE].queue_head;
+	auxp = queue_head;
+	prevp = auxp;
+	while( (auxp = (TIMR_ENT *)dll_get_next((DLL *)queue_head,(DLL *)auxp)) )
+	{	
+		if(auxp->time_left <= 0)
+		{
+			dll_remove(auxp);
+			auxp->user_routine( auxp->tag );
+			free(auxp);
+			auxp = prevp;
+			n++;
+			if(n == 100)
+			{
+				ENABLE_AST
+				return(1);
+			}
+		}
+		else
+			prevp = auxp;
+	}
+	for( queue_id = curr_queue_id; queue_id < MAX_TIMER_QUEUES; queue_id++ ) 
+	{
+		if( (queue_head = timer_queues[queue_id].queue_head) == NULL )
+			continue;
+		Inside_ast = 1;
+		if((curr_entry) && (queue_id == curr_queue_id))
+			auxp = curr_entry;
+		else
+			auxp = queue_head;
+		while( (auxp = (TIMR_ENT *)dll_get_next((DLL *)queue_head,(DLL *)auxp)) )
+		{	
+			if(auxp->time_left <= 0)
+			{
+				auxp->user_routine( auxp->tag );
+				auxp->time_left = auxp->time; /*restart clock*/
+				n++;
+				if(n == 100)
+				{
+					curr_queue_id = queue_id;
+					curr_entry = auxp;
+					ENABLE_AST
+					return(1);
+				}
+			}
+		}
+		Inside_ast = 0;
+		if( timer_queues[queue_id].remove_entries ) {
+			rem_deleted_entries( queue_id );
+			timer_queues[queue_id].remove_entries = 0;
+		}
+	}
+	curr_queue_id = 0;
+	curr_entry = 0;
+	ENABLE_AST
+	}
+	return(0);
+}
+
+static void alrm_sig_handler( int num)
+{
+	int next_time;
+
+	if(num){}
+	next_time = stop_it();
+	if(Threads_off)
+	{
+		if(scan_it())
+			next_time = -10;
+	}
+	else
+	{
+		while(scan_it());
+	}
+	if(!Alarm_runs)
+	{
+		start_it(next_time);
+	}
+}
+
+static void Std_timer_handler()
+{
+}
+
+void dtq_start_timer(int time, void (*user_routine)(), dim_long tag)
+{
+	extern void dim_init_threads();
+
+	if(!Threads_off)
+	{
+		dim_init_threads();
+	}
+	dim_dtq_init(0);
+	if(time != 0)
+		dtq_add_entry(SPECIAL_QUEUE, time, user_routine, tag);
+	else
+		dtq_add_entry(WRITE_QUEUE, time, user_routine, tag);
+}
+
+
+int dtq_stop_timer(dim_long tag)
+{
+	TIMR_ENT *entry, *queue_head;
+	int time_left = -1;
+
+	queue_head = timer_queues[SPECIAL_QUEUE].queue_head;
+	entry = queue_head;
+	while( (entry = (TIMR_ENT *)dll_get_next((DLL *)queue_head,(DLL *)entry)) )
+	{
+		if( entry->tag == tag ) 
+		{
+			time_left = dtq_rem_entry( SPECIAL_QUEUE, entry );
+			break;
+		}
+	}
+	return(time_left);
+}
+
+static int Dtq_sleeping = 0;
+
+void dtq_sleep_rout(dim_long tag)
+{
+	if(tag){}
+	Dtq_sleeping = 0;
+#ifdef WIN32
+	wake_up();
+#endif
+}
+
+#ifndef WIN32
+
+unsigned int dtq_sleep(int secs)
+{
+
+#ifndef NOTHREADS
+	int i;
+	for(i = 0; i < secs*2; i++)
+    {
+		dim_usleep(500000);
+    }
+	return(0);
+#else
+	sigset_t set, oset;
+
+	sigemptyset(&set);
+	sigaddset(&set,SIGALRM);
+	sigprocmask(SIG_UNBLOCK, &set, &oset);
+	Dtq_sleeping = 1;
+	dtq_start_timer(secs, dtq_sleep_rout, (dim_long)123);
+    do{
+		pause();
+	}while(Dtq_sleeping);
+    sigprocmask(SIG_SETMASK,&oset,0);
+	return(0);
+#endif
+}
+
+#else
+
+unsigned int dtq_sleep(int secs)
+{
+	Dtq_sleeping = 1;
+	dtq_start_timer(secs, dtq_sleep_rout, 1);
+	do{
+		dim_wait();
+	}while(Dtq_sleeping);
+	return(0);
+}
+
+#endif
Index: branches/testFACT++branch/dim/src/examples/Copy of test_server.cxx
===================================================================
--- branches/testFACT++branch/dim/src/examples/Copy of test_server.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/Copy of test_server.cxx	(revision 18277)
@@ -0,0 +1,177 @@
+#include <iostream>
+#include <dis.hxx>
+#ifndef WIN32
+#include <unistd.h>
+#endif
+using namespace std;
+#include <string>
+
+class ErrorHandler : public DimErrorHandler
+{
+	void errorHandler(int severity, int code, char *msg)
+	{
+		int index = 0;
+		char **services;
+		cout << severity << " " << msg << endl;
+		services = DimServer::getClientServices();
+		cout<< "from "<< DimServer::getClientName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+public:
+	ErrorHandler() {DimServer::addErrorHandler(this);}
+};
+
+class ExitHandler : public DimExitHandler
+{
+	void exitHandler(int code)
+	{
+		cout << "exit code " << code << endl;
+	}
+public:
+	ExitHandler() {DimServer::addExitHandler(this);}
+};
+
+class CmndServ : public DimCommand, public DimTimer
+{
+	DimService servstr;
+	void commandHandler()
+	{
+		int index = 0;
+		char **services;
+		cout << "Command " << getString() << " received" << endl;
+		servstr.updateService(getString()); 
+		services = DimServer::getClientServices();
+		cout<< "from "<< DimServer::getClientName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+public :
+	CmndServ() : DimCommand("TEST/CMND","C"), 
+				 servstr("TEST/STRVAL","empty") {};
+};
+
+/*
+class CmndServMany : public DimCommand
+{
+	void commandHandler()
+	{
+		cout << "Command " << getString() << " received" << endl;
+	}
+public :
+	CmndServMany(char *name) : DimCommand(name,"C") {};
+};
+*/
+
+void add_serv(const int & ival)
+{
+	DimService *abc;
+
+	abc = new DimService("TEST/INTVAL_CONST",(int &)ival);
+}
+
+void add_serv_str(const string & s1)
+{
+	DimService *abc;
+
+	abc = new DimService("TEST/STRINGVAL_CONST",(char *)s1.c_str());
+}
+
+void add_serv_bool(const bool & boolval)
+{
+	DimService *serv;
+
+//	serv = new DimService("TEST/BOOLVAL_CONST",(short &)boolval);
+	serv = new DimService("TEST/BOOLVAL_CONST","C:1", (void *)&boolval, 1);
+}
+
+class ServWithHandler : public DimService
+{
+	int value;
+
+	void serviceHandler()
+	{
+		value++;
+//		setData(value);
+	}
+public :
+	ServWithHandler(char *name) : DimService(name, value) { value = 0;};
+};
+
+int main()
+{
+	int ival = 0;
+//	ErrorHandler errHandler;
+//	ExitHandler exHandler;
+//	DimServer::setDnsNode("axdes2.cern.ch");
+	string s1;
+	bool boolval;
+	ServWithHandler *testServ;
+	DimServerDns *newDns;
+
+	newDns = new DimServerDns("lxplus237.cern.ch", 0, "new_TEST");
+
+/*
+	int i, arr[15000];
+	DimService *servp;
+	DimCommand *cmndp;
+	char str[132];
+*/
+//	float farr[4];
+//	DimService *farrp;
+
+	s1 = "hello";
+	add_serv(ival);
+	DimService servint("TEST/INTVAL",ival);
+	DimService new_servint(newDns, "new_TEST/INTVAL",ival);
+	add_serv_str(s1);
+	boolval = 0;
+	add_serv_bool(boolval);
+	CmndServ cmdsvr;
+
+	testServ = new ServWithHandler("MY_NEW_TEST_SERVICE_WITH_HANDLER");
+
+//	farr[0] = 1.2;
+//	farr[1] = 2.3;
+//	farrp = new DimService("/PCITCO147/sensors/fan/input","F", farr, sizeof(farr));
+
+	DimServer::start("TEST");
+
+/*
+//	DimServer::autoStartOff();
+	DimServer::start("TEST");
+
+	for(i = 0; i < 15000; i++)
+	{
+		arr[i] = i;
+		sprintf(str,"ServiceManyTest/%05d",i);
+		servp = new DimService(str,arr[i]);
+		servp->setQuality(1);
+		servp->updateService(arr[i]);
+//	DimServer::start("TEST");
+		sprintf(str,"CommandManyTest/%05d",i);
+		cmndp = new CmndServMany(str);
+//	DimServer::start("TEST");
+	}
+*/
+
+	while(1)
+	{
+		sleep(5);
+		s1 = "hello1";
+		if(!boolval)
+			boolval = 1;
+		else
+			boolval = 0;
+		ival++;
+		servint.updateService();
+	}
+	return 0;
+}
+
Index: branches/testFACT++branch/dim/src/examples/Markus.cxx
===================================================================
--- branches/testFACT++branch/dim/src/examples/Markus.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/Markus.cxx	(revision 18277)
@@ -0,0 +1,82 @@
+#include <iostream>
+#include <dic.hxx>
+using namespace std;
+
+class DnsInfo;
+
+class FloatInfo : public virtual DimInfoHandler
+{
+	DimInfo *fInfo;
+	float no_link, *data;
+	DnsInfo *m_dns;
+
+protected:
+    friend class DnsInfo;
+	void addHandler()
+	{
+		if(!fInfo)
+			fInfo = new DimInfo("SIMPLE_SERVICE", (void *)&no_link,
+				sizeof(no_link), this);
+	}
+	void removeHandler()
+	{
+		if(fInfo)
+		{
+			delete fInfo;
+			fInfo = 0;
+		}
+	}
+public :
+	FloatInfo()
+	{
+		fInfo = 0; 
+		no_link = -1;
+	};
+	void initialize();
+	void infoHandler()
+	{
+		data = (float *)getInfo()->getData();
+		cout << "Received : " << *data << endl;
+	}
+};
+
+class DnsInfo : public DimInfo
+{
+
+	char *data;
+	FloatInfo &fInfo;
+
+	void infoHandler()
+	{
+		data = getString();
+		cout << "Received : " << data << endl;
+		if(data[0] == '+')
+		{
+			fInfo.addHandler();
+		}
+		else if (data[0] == '-')
+		{
+			fInfo.removeHandler();
+		}
+	}
+public :
+	DnsInfo(FloatInfo &f) : DimInfo("DIS_DNS/SERVER_LIST","DEAD"),
+		fInfo(f) {}
+    virtual ~DnsInfo()  {}
+};
+
+void FloatInfo::initialize()
+{
+	m_dns = new DnsInfo(*this);
+}
+
+main()
+{
+	FloatInfo *fInfo;
+
+	fInfo = new FloatInfo();
+	fInfo->initialize();
+
+	while(1)
+		pause();
+}
Index: branches/testFACT++branch/dim/src/examples/cpp_server.cxx
===================================================================
--- branches/testFACT++branch/dim/src/examples/cpp_server.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/cpp_server.cxx	(revision 18277)
@@ -0,0 +1,184 @@
+#include <iostream>
+#include <dis.hxx>
+#ifndef WIN32
+#include <unistd.h>
+#endif
+using namespace std;
+#include <string>
+
+class ErrorHandler : public DimErrorHandler
+{
+	void errorHandler(int severity, int code, char *msg)
+	{
+		int index = 0;
+		char **services;
+		if(code){}
+		cout << severity << " " << msg << endl;
+		services = DimServer::getClientServices();
+		cout<< "from "<< DimServer::getClientName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+public:
+	ErrorHandler() {DimServer::addErrorHandler(this);}
+};
+
+class ExitHandler : public DimExitHandler
+{
+	void exitHandler(int code)
+	{
+		cout << "exit code " << code << endl;
+	}
+public:
+	ExitHandler() {DimServer::addExitHandler(this);}
+};
+
+class CmndServ : public DimCommand, public DimTimer
+{
+	DimService servstr;
+	void commandHandler()
+	{
+		int index = 0;
+		char **services;
+		cout << "Command " << getString() << " received" << endl;
+		servstr.updateService(getString()); 
+		services = DimServer::getClientServices();
+		cout<< "from "<< DimServer::getClientName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+public :
+	CmndServ() : DimCommand("TEST/CMND","C"), 
+				 servstr("TEST/STRVAL","empty") {};
+};
+
+/*
+class CmndServMany : public DimCommand
+{
+	void commandHandler()
+	{
+		cout << "Command " << getString() << " received" << endl;
+	}
+public :
+	CmndServMany(char *name) : DimCommand(name,"C") {};
+};
+*/
+
+void add_serv(const int & ival)
+{
+	DimService *abc;
+
+	abc = new DimService("TEST/INTVAL_CONST",(int &)ival);
+}
+
+void add_serv_str(const string & s1)
+{
+	DimService *abc;
+
+	abc = new DimService("TEST/STRINGVAL_CONST",(char *)s1.c_str());
+}
+
+void add_serv_bool(const bool & boolval)
+{
+	DimService *serv;
+
+//	serv = new DimService("TEST/BOOLVAL_CONST",(short &)boolval);
+	serv = new DimService("TEST/BOOLVAL_CONST","C:1", (void *)&boolval, 1);
+}
+
+class ServWithHandler : public DimService
+{
+	int value;
+
+	void serviceHandler()
+	{
+		value++;
+//		setData(value);
+	}
+public :
+	ServWithHandler(char *name) : DimService(name, value) { value = 0;};
+};
+
+int main()
+{
+	int ival = 0;
+//	ErrorHandler errHandler;
+//	ExitHandler exHandler;
+//	DimServer::setDnsNode("axdes2.cern.ch");
+	string s1;
+	bool boolval;
+	ServWithHandler *testServ;
+	DimServerDns *newDns;
+	char *extraDns;
+
+	DimServer::start("TEST");
+	extraDns = DimUtil::getEnvVar("EXTRA_DNS_NODE");
+//	newDns = new DimServerDns(extraDns, 0, "new_TEST");
+	newDns = new DimServerDns(extraDns);
+
+/*
+	int i, arr[15000];
+	DimService *servp;
+	DimCommand *cmndp;
+	char str[132];
+*/
+//	float farr[4];
+//	DimService *farrp;
+
+	s1 = "hello";
+	add_serv(ival);
+	DimService servint("TEST/INTVAL",ival);
+	DimService new_servint(newDns, "new_TEST/INTVAL",ival);
+	DimServer::start(newDns, "new_TEST");
+
+	add_serv_str(s1);
+	boolval = 0;
+	add_serv_bool(boolval);
+	CmndServ cmdsvr;
+
+	testServ = new ServWithHandler("MY_NEW_TEST_SERVICE_WITH_HANDLER");
+
+//	farr[0] = 1.2;
+//	farr[1] = 2.3;
+//	farrp = new DimService("/PCITCO147/sensors/fan/input","F", farr, sizeof(farr));
+
+
+/*
+//	DimServer::autoStartOff();
+	DimServer::start("TEST");
+
+	for(i = 0; i < 15000; i++)
+	{
+		arr[i] = i;
+		sprintf(str,"ServiceManyTest/%05d",i);
+		servp = new DimService(str,arr[i]);
+		servp->setQuality(1);
+		servp->updateService(arr[i]);
+//	DimServer::start("TEST");
+		sprintf(str,"CommandManyTest/%05d",i);
+		cmndp = new CmndServMany(str);
+//	DimServer::start("TEST");
+	}
+*/
+
+	while(1)
+	{
+		sleep(5);
+		s1 = "hello1";
+		if(!boolval)
+			boolval = 1;
+		else
+			boolval = 0;
+		ival++;
+		servint.updateService();
+		new_servint.updateService();
+	}
+	return 0;
+}
+
Index: branches/testFACT++branch/dim/src/examples/db_dim_client.c
===================================================================
--- branches/testFACT++branch/dim/src/examples/db_dim_client.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/db_dim_client.c	(revision 18277)
@@ -0,0 +1,55 @@
+// db_dim_client.c : Defines the entry point for the console application.
+//
+// Dietrich Beck
+// 
+// This is a very simple DIM service. It listens to a DIM service
+// "SERV_BY_BUFFER" via a callback routine. Each time THIS client
+// receives a service, it sends a new command to the DIM server.
+
+#include <stdio.h>
+#include <dic.h>
+
+#define BUFFSIZE 10000000
+
+int buffer[BUFFSIZE];
+int buff[BUFFSIZE];
+char message[1024];
+int no_link = -1;
+int version;
+int counter;
+int lastValue;
+int i;
+unsigned service_id;
+
+serv_received(tag,address,size)
+int *tag;
+char *address;
+int *size;
+{
+    for (i=0;i<BUFFSIZE;i++) buff[i] = buffer[i]; //copy data to do something useful
+	counter++;
+	sprintf(message, "service received %d\n", counter);
+	printf(message);
+}
+
+void main(int argc, char* argv[])
+{
+	
+	//service_id =  dic_info_service("testBuffer",MONITORED,0,0,0,serv_received,0,&no_link,4);
+//		printf("registering to service\n");
+//		counter = 0;
+//		service_id =  dic_info_service("testBuffer",MONITORED,0,0,0,serv_received,0,&no_link,4);
+	while(1)
+	{
+		printf("registering to service\n");
+		counter = 0;
+		service_id =  dic_info_service("testBuffer",MONITORED,0,0,0,serv_received,0,&no_link,4);
+		sleep(1);
+		printf("releasing service\n");
+		dic_release_service(service_id);
+		printf("released service\n");
+		sleep(1);
+		//sprintf(message, "%s", dic_get_error_services());
+	}
+}
+
Index: branches/testFACT++branch/dim/src/examples/db_dim_server.c
===================================================================
--- branches/testFACT++branch/dim/src/examples/db_dim_server.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/db_dim_server.c	(revision 18277)
@@ -0,0 +1,31 @@
+// db_dim_server.c : Defines the entry point for the console application.
+//
+// Dietrich Beck
+//
+// This is a DIM test server. It just publishes a servivce and updates
+// that service very fast.
+
+#include <stdio.h>
+#include <sys/timeb.h>
+#include <time.h>
+#include <dis.h>
+
+#define BUFFSIZE 10000000
+
+char buffer[BUFFSIZE];
+int service_id;
+int size=10000;
+int count;
+
+void main()
+{
+	service_id = dis_add_service("testBuffer","C",buffer,size,0,0);
+    dis_start_serving("DIS_TEST");
+	count = 0;
+	while(1)
+	{
+		sprintf(buffer,"%d", count);
+		dis_update_service(service_id);
+		count++;
+	}
+}
Index: branches/testFACT++branch/dim/src/examples/demo_client.c
===================================================================
--- branches/testFACT++branch/dim/src/examples/demo_client.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/demo_client.c	(revision 18277)
@@ -0,0 +1,34 @@
+#include <dic.h>
+
+int no_link = -1;
+
+void got_data( tag, data, size )
+int *data;
+int *tag, *size;
+{
+
+	if(*data == -1)
+		printf("Server is dead\n");
+	else
+		printf("got data: %d\n",*data);
+}
+
+main(argc,argv)
+int argc;
+char **argv;
+{
+	char aux[80], cmnd[16];
+
+
+	sprintf(aux,"DEVICE/%s/DATA",argv[1]);
+	dic_info_service( aux, MONITORED, 0, 0, 0, got_data, 0,
+			  &no_link, 4 );
+
+	sprintf(aux,"DEVICE/%s/CMD",argv[1]);
+	while(1)
+	{
+		scanf("%s",cmnd);
+		printf("Sending Command: %s\n",cmnd);
+		dic_cmnd_service(aux,cmnd,(int)strlen(cmnd)+1);
+	}
+}
Index: branches/testFACT++branch/dim/src/examples/demo_server.c
===================================================================
--- branches/testFACT++branch/dim/src/examples/demo_server.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/demo_server.c	(revision 18277)
@@ -0,0 +1,39 @@
+#include <stdio.h>
+#include <dis.h>
+
+int dev_data;
+int serv_id;
+
+void do_cmnd(tag, cmnd, size)
+int *tag, *size;
+char *cmnd;
+{
+	printf("Got Command: %s\n",cmnd);
+	if(!strcmp(cmnd,"RESET"))
+		dev_data = 0;
+	if(!strcmp(cmnd,"CONFIGURE"))
+		dev_data = 1;
+	if(!strcmp(cmnd,"START"))
+		dev_data = 2;
+	if(!strcmp(cmnd,"STOP"))
+		dev_data = 1;
+	dis_update_service(serv_id);
+}
+
+main(argc,argv)
+int argc;
+char **argv;
+{
+	char aux[80];
+
+	dev_data = 0;
+	sprintf(aux,"DEVICE/%s/DATA",argv[1]);
+	serv_id = dis_add_service(aux, "I", &dev_data, sizeof(int), 0, 0);
+
+	sprintf(aux,"DEVICE/%s/CMD",argv[1]);
+	dis_add_cmnd(aux, "C", do_cmnd, 0);
+
+	dis_start_serving( argv[1] );
+	while(1)
+		pause();
+}
Index: branches/testFACT++branch/dim/src/examples/dim_fork.cxx
===================================================================
--- branches/testFACT++branch/dim/src/examples/dim_fork.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/dim_fork.cxx	(revision 18277)
@@ -0,0 +1,93 @@
+#include <cerrno>
+#include <cstdio>
+#include <unistd.h>
+#include <sys/wait.h>
+extern "C" {
+#include "dis.hxx"
+}
+
+static int id, id_cmd, run = 0;
+static int doForkNow = 0;
+
+void handle_cmd(void *tag, void *data, int *size)
+{
+  doForkNow = 1;
+}
+
+static pid_t fork_em() {
+  //  ::dis_remove_service(id);
+  ::dis_stop_serving();
+  ::printf("Sleep a bit to see task disappear in did\n");
+  //::sleep(3);
+  pid_t pid = ::fork();
+  if ( pid == 0 ) {
+    ::dim_init();
+    ::printf("PID:%d Register Child service Child/run to DNS....\n",::getpid());
+    id = ::dis_add_service((char*)"Child/run",(char*)"I",&run,sizeof(run),0,0);
+    ::dis_start_serving((char*)"Child");
+  }
+  else if ( pid > 0 ) {
+    ::dim_init();
+    //::sleep(3);
+    ::printf("PID:%d RE-Register Parent to DNS....\n",::getpid());
+    id = ::dis_add_service((char*)"Parent/run",(char*)"I",&run,sizeof(run),0,0);
+    //    id_cmd = :: dis_add_cmnd((char *)"Parent/cmd",(char*)"C",handle_cmd,0);
+    ::dis_start_serving((char*)"Parent");
+  }      
+  else {
+    ::printf("ERROR in fork!!!!  %s\n",strerror(errno));
+    ::exit(0);
+  }
+  return pid;
+}
+
+int main(int /* argc */, char** /* argv */) {
+  id = ::dis_add_service((char*)"Parent/run",(char*)"I",&run,sizeof(run),0,0);
+  //  id_cmd = :: dis_add_cmnd((char *)"Parent/cmd",(char*)"C",handle_cmd,0);
+  ::dis_start_serving((char*)"Parent");
+  ::sleep(5);
+  pid_t child = 0;
+
+ Again:
+  child = fork_em();
+  if ( child > 0 ) {
+    int status;
+    sleep(5);
+    kill(child,SIGTERM);
+    wait(&status);
+    sleep(1);
+    goto Again;
+  }
+ 
+  while(1)
+  {
+    /*
+    if(doForkNow)
+    {
+      int status;
+      doForkNow = 0;
+      if(child > 0)
+      {
+	kill(child,SIGTERM);
+	wait(&status);
+	sleep(1);
+      }
+      child = fork_em();
+    }
+    */
+    ::sleep(1);
+  }
+  return 1;
+}
+
+
+/*
+
+g++ -o dim_fork -I../../DIM/dim -ldim -lrt -pthread ../test/dim_fork.cpp
+
+[frankm@plus04 cmt]$ ./dim_fork
+PID:20407 Register Child to DNS....
+PID 20407 - Fri Dec  3 22:01:57 2010 - (FATAL) Child: Some Services already known to DNS
+PID:20404 RE-Register Parent to DNS....
+
+*/
Index: branches/testFACT++branch/dim/src/examples/dim_fork2.cxx
===================================================================
--- branches/testFACT++branch/dim/src/examples/dim_fork2.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/dim_fork2.cxx	(revision 18277)
@@ -0,0 +1,106 @@
+#include <cerrno>
+#include <cstdio>
+#include <unistd.h>
+extern "C" {
+#include "dis.hxx"
+}
+
+struct Child {
+  int id, run, calls;
+  char name[132];
+  Child(const char* n, const char* svc) : id(0), run(0), calls(0) { 
+    ::strncpy(name,n,sizeof(name));
+	 id = ::dic_info_service((char*)svc,MONITORED,0,0,0,callback,(long)this,&run,sizeof(run));
+  }
+  virtual ~Child() {}
+  static void callback(void* tag, void* buffer, int* /* size */) {
+    Child* c = *(Child**)tag;
+    c->run = *(int*)buffer;
+    c->calls++;
+  }
+};
+
+struct Parent {
+  int id, run, is_parent;
+  Child*  children[50];
+  Parent() : id(0), run(0) {
+    is_parent = 0;
+    memset(children,0,sizeof(children));
+    id = ::dis_add_service((char*)"Parent/run",(char*)"I",&run,sizeof(run),0,0);
+    ::dis_start_serving((char*)"Parent");
+  }
+  virtual ~Parent() {}
+  void update() {
+    ++run;
+    ::dis_update_service(run);
+  }
+  void print() {
+    /*
+    size_t cnt = 0;
+    for(size_t i=0; i<sizeof(children)/sizeof(children[0]); ++i) {
+      if ( children[i]->calls > 2 ) cnt++;
+    }
+    ::printf("PID:%d Child service answers from %ld children. %ld still missing.\n",
+	     ::getpid(), cnt, sizeof(children)/sizeof(children[0])-cnt);
+    */
+  }
+  void fork_em() {
+    //::dis_remove_service(id);
+    ::dis_stop_serving();
+    ::printf("Sleep a bit to see task disappear in did\n");
+    ::sleep(3);
+    for(size_t i=0; i<sizeof(children)/sizeof(children[0]); ++i) {
+      char nam[132], svc[132];
+      pid_t pid = ::fork();
+      sprintf(nam,"Child_%02ld",i);
+      sprintf(svc,"Child_%02ld/run",i);
+      if ( pid == 0 ) {
+	::dim_init();
+	::printf("PID:%d Register Child service Child_%02d/run to DNS....\n",::getpid(),i);
+	id = ::dis_add_service(svc,(char*)"I",&run,sizeof(run),0,0);
+	::dis_start_serving(nam);
+	return;
+      }
+      else if ( pid > 0 ) {
+	//children[i] = new Child(nam, svc);
+	is_parent = true;
+      }
+      else {
+	::printf("ERROR in fork!!!!  %s\n",strerror(errno));
+	::exit(0);
+      }
+    }
+    ::dim_init();
+    ::sleep(3);
+    ::printf("PID:%d RE-Register Parent to DNS....\n",::getpid());
+    id = ::dis_add_service((char*)"Parent/run",(char*)"I",&run,sizeof(run),0,0);
+    ::dis_start_serving((char*)"Parent");
+  }
+};
+
+int main(int /* argc */, char** /* argv */) {
+  Parent p;
+  ::sleep(5);
+  p.fork_em();
+  while(1) {
+    p.update();
+    ::sleep(1);
+    if ( p.is_parent ) {
+      p.print();
+    }
+  }
+  ::printf("Process %d exiting\n",::getpid());
+  return 1;
+}
+
+
+/*
+
+g++ -o xxxx -I../../DIM/dim -ldim -lrt -pthread ../test/test_dim.cpp
+
+[frankm@plus04 cmt]$ ./xxxx
+PID:20407 Register Child to DNS....
+PID 20407 - Fri Dec  3 22:01:57 2010 - (FATAL) Child: Some Services already known to DNS
+PID:20404 RE-Register Parent to DNS....
+
+*/
Index: branches/testFACT++branch/dim/src/examples/pvss_dim_client.cxx
===================================================================
--- branches/testFACT++branch/dim/src/examples/pvss_dim_client.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/pvss_dim_client.cxx	(revision 18277)
@@ -0,0 +1,112 @@
+#include <dic.hxx>
+#include <iostream>
+#include <stdio.h>
+using namespace std;
+
+typedef struct{
+	int bitset;
+	char boolval;
+	int intval;
+	float floatval;
+	char stringval[128];
+}COMPLEXDATA;
+
+class SimpleService : public DimInfo
+{
+	void infoHandler()
+	{
+		cout << "SimpleService : " << getFloat() << "\n" << endl;
+	}
+public :
+	SimpleService(const char *name) : DimInfo(name, -1.0) {};
+};
+
+double no_link_darray[8] = {-1.0,0,0,0,0,0,0,0};
+
+class DimDoubleArray : public DimInfo
+{
+	void infoHandler()
+	{
+		double *data;
+		int i, len;
+
+		data = (double *)getData();
+		len = getSize()/sizeof(double);
+		for(i = 0; i < len; i++)
+		{
+			cout << data[i] << endl;
+		}
+	}
+public :
+	DimDoubleArray(const char *name) : DimInfo(name, no_link_darray, 8*sizeof(double)) {};
+};
+
+
+class ComplexService : public DimInfo
+{
+	void infoHandler()
+	{
+		COMPLEXDATA *data;
+		int i;
+		unsigned mask = 0x80000000;
+
+		data = (COMPLEXDATA *)getData();
+
+		cout << "ComplexService : \n";
+		cout << "\tbitset : ";
+		for(i = 0; i < 32; i++)
+		{
+			if (data->bitset & mask)
+				cout << "1";
+			else 
+				cout << "0";
+			mask >>= 1;
+		}
+		cout << "\n";
+		cout << "\tboolval : ";
+		if(data->boolval)
+				cout << "TRUE\n";
+			else 
+				cout << "FALSE\n";
+		cout << "\tintval : "<< data->intval << "\n";
+		cout << "\tfloatval : " << data->floatval << "\n";
+		cout << "\tstringval : "<< data->stringval << "\n\n";
+		cout << "Sending PVSS_SIMPLE_COMMAND : " << data->stringval << "\n" << endl;
+		DimClient::sendCommand("PVSS_SIMPLE_COMMAND",data->stringval);
+	}
+public :
+	ComplexService(const char *name) : DimInfo(name, -1.0) {};
+};
+
+class RpcService : public DimRpcInfo
+{
+public:
+	void rpcInfoHandler() {
+		int value;
+		value = getInt();
+		dim_print_date_time();
+		cout << "RPC Service received: " << value << "\n" << endl;
+	}
+	RpcService(const char *name, int timeout) :	DimRpcInfo(name, timeout, -1) {};
+};
+
+
+int main()
+{
+	int value = 0;
+	SimpleService simple("PVSS_SIMPLE_SERVICE");
+	ComplexService complex("PVSS_COMPLEX_SERVICE");
+	RpcService rpc("TESTRPC/INT", 25);
+	DimDoubleArray dda("TEST_SRVC");
+
+	while(1)
+	{
+		dim_print_date_time();
+		value++;
+		cout << "RPC Service sent: " << value << "\n" << endl;
+		rpc.setData(value);
+		value++;
+		sleep(30);
+	}
+	return 0;
+}
Index: branches/testFACT++branch/dim/src/examples/pvss_dim_server.cxx
===================================================================
--- branches/testFACT++branch/dim/src/examples/pvss_dim_server.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/pvss_dim_server.cxx	(revision 18277)
@@ -0,0 +1,234 @@
+#include <dis.hxx>
+#include <iostream>
+#include <stdio.h>
+#include <time.h>
+using namespace std;
+
+typedef struct{
+	int bitset;
+	char boolval;
+	int intval;
+	float floatval;
+	char stringval[128];
+}COMPLEXDATA;
+
+typedef struct{
+	float farr[10];
+	int intval;
+	int iarr[3];
+	char str[20];
+	int intval1;
+}COMPLEXDATA1;
+
+class RecvCommand : public DimCommand
+{
+	int reset_flag;
+	void commandHandler()
+	{
+		cout << "Size: " << getSize() << endl;
+		cout << "Command " << getString() << " received" << endl;
+		reset_flag = 1;
+	}
+public :
+	RecvCommand(const char *name) : DimCommand(name,"C") {reset_flag = 0;};
+	int isReset() {return reset_flag;};
+	void clearReset() {reset_flag = 0;};
+};
+
+class RecvCommandComplex : public DimCommand
+{
+	void commandHandler()
+	{
+		COMPLEXDATA *complexData;
+
+		complexData = (COMPLEXDATA *)getData();
+		cout << "Command " << complexData->intval 
+			 << " received " << complexData->stringval << endl;
+	}
+public :
+	RecvCommandComplex(const char *name) : DimCommand(name,"I:1;C:1;I:1;F:1;C") {};
+};
+/*
+typedef struct{
+	char oper;
+	char data[128];
+}MEMCMND;
+
+typedef struct{
+	int code;
+	float data[128];
+}MEMDATA;
+
+DimService *TestMem[1010];
+MEMDATA TestMemData;
+
+class RecvCommandMem : public DimCommand
+{
+	int itsIndex;
+	void commandHandler()
+	{
+		MEMCMND *complexData;
+
+		complexData = (MEMCMND *)getData();
+		cout << "Command " << complexData->oper
+			 << " received " << complexData->data[0] << endl;
+		TestMemData.code = 1;
+		TestMemData.data[0] = 123;
+		TestMemData.data[1] = 456;
+		TestMem[itsIndex]->updateService();
+	}
+public :
+	RecvCommandMem(char *name, int index) : DimCommand(name,"C:1;C"),itsIndex(index) {};
+};
+*/
+
+class RpcService : public DimRpc
+{
+	int val;
+
+	void rpcHandler()
+	{
+		val = getInt();
+		val++;
+cout << "Received " << val -1 << " Answering " << val << endl;
+		setData(val);
+	}
+public:
+	RpcService(const char *name): DimRpc(name,"I","I") {val = 0;};
+};
+
+int main()
+{
+	COMPLEXDATA complexData;
+	COMPLEXDATA1 cData;
+	float simpleData;
+
+	int index = 0;
+	complexData.bitset = 0x1;
+	complexData.boolval = 1;
+	complexData.intval = index;
+	complexData.floatval = (float)3.4;
+	strcpy(complexData.stringval,"IDLE");
+
+
+	cData.farr[0] = (float)1.2; 
+	cData.farr[1] = (float)2.2; 
+	cData.farr[2] = (float)3.2;
+	cData.farr[3] = 0;
+	cData.farr[4] = 0;
+	cData.farr[5] = 0;
+	cData.farr[6] = 0;
+	cData.farr[7] = 0;
+	cData.farr[8] = 0;
+	cData.farr[9] = 0;
+	cData.intval = 123;
+	cData.iarr[0] = 12; 
+	cData.iarr[1] = 13; 
+	cData.iarr[2] = 14;
+	cData.intval1 = 456;
+	strcpy(cData.str,"hello");
+
+	DimService cTestService("COMPLEX_SERVICE_TEST","F:10;I:1;I:3;C:20;I:1",
+		(void *)&cData, sizeof(cData));
+
+	DimService complexService("COMPLEX_SERVICE","I:1;C:1;I:1;F:1;C",
+		(void *)&complexData, sizeof(complexData));
+
+	simpleData = (float)1.23;
+
+	DimService simpleService("SIMPLE_SERVICE", simpleData);
+	simpleService.setQuality(1);
+
+	RecvCommand recvCommand("SIMPLE_COMMAND");
+	RecvCommandComplex recvCommandComplex("COMPLEX_COMMAND");
+/*
+	{
+	char tstr[128];
+	int i;
+	RecvCommandMem *rmem;
+//	TestMem = new DimService("TEST_MEM", "I:1;F", (void *)&TestMemData, sizeof(TestMemData)); 
+//	RecvCommandMem recvCommandMem("TEST_MEM_CMND");
+
+	for(i = 1; i <= 1000; i++)
+	{
+		sprintf(tstr,"TEST_MEM%04d",i);
+		TestMem[i] = new DimService(tstr, "I:1;F", (void *)&TestMemData, sizeof(TestMemData)); 
+		sprintf(tstr,"TEST_MEM_CMND%04d",i);
+		rmem = new RecvCommandMem(tstr, i);
+	}
+	}
+*/
+	RpcService rpc("RPC");
+
+	DimServer::start("PVSS_DIM_TEST");
+
+	while(1)
+	{
+		sleep(5);
+		
+		if( recvCommand.isReset() )
+		{
+			
+			index = 0;
+			complexData.bitset = 0x1;
+			complexData.boolval = 1;
+			complexData.intval = index;
+			complexData.floatval = (float)3.4;
+			strcpy(complexData.stringval,"IDLE");
+			simpleData = (float)1.23;
+			recvCommand.clearReset();
+		}
+		else
+		{
+			index++;
+			complexData.bitset <<= 1;
+			complexData.boolval = index;
+			complexData.intval = index;
+			complexData.floatval = index * (float)1.1;
+			sprintf(complexData.stringval,"State %d", index);
+			simpleData += (float)1.1;
+		}
+		
+		complexService.updateService();
+
+//		simpleService.setQuality(complexData.bitset);
+/*
+		{
+			int secs;
+			time_t tsecs;
+
+			tsecs = time((time_t)NULL);
+			secs = (int)tsecs;
+			secs -=60;
+			simpleService.setTimestamp(secs, 123);
+			simpleService.setQuality(index);
+			tsecs = (time_t)secs;
+			cout << "quality "<< index << " time "<< ctime(&tsecs) << endl;
+		}
+*/
+		simpleService.updateService();
+//		simpleData += (float)1;
+//		simpleService.updateService();
+//		simpleData += (float)1;
+//		simpleService.updateService();
+//		simpleData += (float)1;
+//		simpleService.updateService();
+//		simpleData += (float)1;
+//		simpleService.updateService();
+//		simpleData += (float)1;
+//		simpleService.updateService();
+//		simpleData += (float)1;
+//		simpleService.updateService();
+//		simpleData += (float)1;
+//		simpleService.updateService();
+//		simpleData += (float)1;
+//		simpleService.updateService();
+//		simpleData += (float)1;
+//		simpleService.updateService();
+
+		if((int)strlen(cData.str) < 16)
+			strcat(cData.str," abc");
+		cTestService.updateService();
+	}
+	return 0;
+}
Index: branches/testFACT++branch/dim/src/examples/rpc_client.cxx
===================================================================
--- branches/testFACT++branch/dim/src/examples/rpc_client.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/rpc_client.cxx	(revision 18277)
@@ -0,0 +1,125 @@
+#include <dic.hxx>
+#include <iostream>
+using namespace std;
+#include <stdio.h>
+
+class Rpc : public DimRpcInfo
+{
+public:
+	void rpcInfoHandler() {
+		dim_print_date_time();
+		cout << "Callback RPC Received : " << getInt() << endl;
+	}
+	Rpc(const char *name) :	DimRpcInfo(name, 1, -1) {};
+};
+
+typedef struct tst{
+	char str1[16];
+	int ints[5];
+	char str2[18];
+	float floats[4];
+	int int1;
+	float floats1[16];
+} MyStruct;
+
+class RpcStruct : public DimRpcInfo
+{
+public:
+	void rpcInfoHandler() {
+		MyStruct *val;
+		val = (MyStruct *)getData();
+		cout << "Callback RPC Received : " << endl;
+		cout << val->str1 << " " << val->str2 << " " << val->int1 << endl;
+	}
+	RpcStruct(const char *name) :	DimRpcInfo(name, (char *)"dead") {};
+};
+
+void do_work(void *tag)
+{
+	DimRpcInfo *myRpc;
+//	Rpc *myRpc;
+	char name[64];
+	int out, in;
+	
+	sprintf(name,"TESTRPC%ld/INT",(dim_long)tag);
+	myRpc = new DimRpcInfo(name, 10, -1);
+//	myRpc = new Rpc(name);
+
+	out = 1;
+	while(1)
+	{
+		sleep(5);
+//		cout << "RPC Sent : " << out << endl;
+		myRpc->setData(out);
+		in = myRpc->getInt();
+dim_lock();
+dim_print_date_time();
+cout << "Instance "<<(dim_long)tag<<" sent "<<out<< " got "<<in <<endl;
+dim_unlock();
+		out++;
+	}
+}
+
+void do_workCB()
+{
+//	DimRpcInfo *myRpc;
+	Rpc *myRpc;
+	char name[64];
+	int out;
+	
+	sprintf(name,"TESTRPC/INT");
+	myRpc = new Rpc(name);
+//	myRpc = new Rpc(name);
+
+	out = 1;
+	while(1)
+	{
+		dim_print_date_time();
+		cout << "RPC Sent : " << out << endl;
+		myRpc->setData(out);
+		out++;
+		sleep(5);
+	}
+}
+
+int main()
+{
+	int i;
+
+	dim_init();
+//	DimClient::setNoDataCopy();
+
+	for(i = 0; i < 1; i++)
+	{
+		dim_start_thread(do_work,(void *)i);
+	}
+//	do_workCB();
+	while(1)
+		pause();
+	/*
+	int rpcValue = 0;
+//	DimRpcInfo rpc("TESTRPC/INT",-1);
+	Rpc rpcCB("TESTRPC/INT");
+	RpcStruct rpcStruct("TESTRPC/STRUCT");
+	MyStruct myStruct;
+
+	strcpy(myStruct.str1,"hello");
+	strcpy(myStruct.str2,"world");
+	myStruct.int1 = 1;
+	while(1)
+	{
+		dim_print_date_time();
+		cout << "Sending " << rpcValue << endl; 
+		rpcCB.setData(rpcValue);
+		rpcValue++;
+//		sleep(5);
+		rpcStruct.setData(&myStruct, sizeof(myStruct));
+		myStruct.int1++;
+//		rpc.setData(rpcValue);
+//		rpcValue = rpc.getInt();
+//		cout << "RPC Received : " << rpcValue << endl;
+		sleep(10);
+	}
+	return 0;
+	*/
+}
Index: branches/testFACT++branch/dim/src/examples/rpc_server.cxx
===================================================================
--- branches/testFACT++branch/dim/src/examples/rpc_server.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/rpc_server.cxx	(revision 18277)
@@ -0,0 +1,100 @@
+#include <dis.hxx>
+#include <dic.hxx>
+#include <iostream>
+using namespace std;
+#include <stdio.h>
+
+class RpcInt : public DimRpc
+{
+	int val;
+
+	void rpcHandler()
+	{
+		val = getInt();
+		dim_print_date_time();
+		printf("Got RPC %d\n", val);
+		val++;
+//		usleep(700000);
+		dim_print_date_time();
+		printf("Answering RPC %d\n", val);
+		setData(val);
+	}
+public:
+	RpcInt(const char *name): DimRpc(name,"I","I") {val = 0;};
+};
+
+typedef struct tst{
+	char str1[16];
+	int ints[5];
+	char str2[18];
+	float floats[4];
+	int int1;
+	float floats1[16];
+} MyStruct;
+
+typedef struct jeffIn{
+	char c1;
+	char c2;
+	char c3;
+	char str[3000];
+}JeffIn;
+
+typedef struct jeffOut{
+	int i1;
+	char c1;
+	char str[3000];
+}JeffOut;
+
+class RpcStruct : public DimRpc
+{
+	MyStruct *val;
+
+	void rpcHandler()
+	{
+		val = (MyStruct *)getData();
+		val->int1++;
+		setData(val, sizeof(MyStruct));
+	}
+public:
+	RpcStruct(const char *name): DimRpc(name,"C:16;I:5;C:18;F:4;I:1;F:16",
+		"C:16;I:5;C:18;F:4;I:1;F:16") {val = 0;};
+};
+
+class JeffRpcStruct : public DimRpc
+{
+	JeffIn *pin;
+	JeffOut pout;
+	int counter;
+
+	void rpcHandler()
+	{
+		pin = (JeffIn *)getData();
+		pout.i1 = counter++;
+		pout.c1 = pin->c1;
+		strcpy(pout.str,pin->str);
+		setData(&pout, (int)strlen(pout.str)+1+5);
+	}
+public:
+	JeffRpcStruct(const char *name): DimRpc(name,"C:1;C:1;C:1;C",
+		"I:1;C:1;C") {counter = 0;};
+};
+
+int main()
+{
+	RpcInt myRpcInt("TESTRPC/INT");
+	RpcInt *myRpcP;
+	RpcStruct myRpcStruct("TESTRPC/STRUCT");
+	JeffRpcStruct jeffRpcStruct("TESTJEFF");
+	int i;
+	char name[64];
+
+	for(i = 0; i < 10; i++)
+	{
+		sprintf(name,"TESTRPC%d/INT",i);
+		myRpcP = new RpcInt(name);
+	}
+	DimServer::start("TESTRPC");
+	while(1)
+		pause();
+	return 0;
+}
Index: branches/testFACT++branch/dim/src/examples/rshServer.cxx
===================================================================
--- branches/testFACT++branch/dim/src/examples/rshServer.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/rshServer.cxx	(revision 18277)
@@ -0,0 +1,176 @@
+#include <dis.hxx>
+#include <sys/stat.h>
+#include <sys/types.h>
+#ifndef WIN32
+#include <sys/wait.h>
+#include <unistd.h>
+#else
+#include <process.h>
+#endif
+#include <ctype.h>
+
+#ifndef WIN32
+char outfile[] = "/tmp/dim_rsh_server.dat";
+#else
+char outfile[] = "c:\\dim_rch_server.dat";
+#endif
+
+int my_system(char *);
+
+class Cmd: public DimCommand
+{
+	char *result;
+	DimService *resultSrvc;
+
+	void commandHandler();
+public:
+	Cmd(char *cmdName, char *resultName): DimCommand(cmdName, "C") 
+	{
+		result = new char[10];
+		strcpy(result,"empty");
+		resultSrvc = new DimService(resultName, "C", result, strlen(result)+1);
+	};
+};
+
+void Cmd::commandHandler()
+{
+	char *str, *client;
+	char commandString[256];
+	struct stat buf;
+	FILE *fd;
+	int ret, size, index, sz;
+
+	str = getString();
+
+	client = DimServer::getClientName();
+
+	cout << "Received " << str << " from " << client << endl;
+	unlink(outfile);
+	strcpy(commandString,str);
+#ifndef WIN32
+	strcat(commandString," >& ");
+	strcat(commandString,outfile);
+	strcat(commandString,"< /dev/null");
+#else
+	strcat(commandString," > ");
+	strcat(commandString,outfile);
+	strcat(commandString," 2>&1 ");
+#endif
+	my_system(commandString);
+
+	delete result;
+	ret = stat(outfile, &buf);
+	if(ret == -1)
+    {
+		result = new char[20];
+		strcpy(result,"File does not exist");
+    }
+	else
+    {
+		size = buf.st_size;
+		result = new char[size +1];
+		fd = fopen(outfile, "r");
+		index = 0;
+		while(!feof(fd) && size)
+		{
+			sz = fread(&result[index], 1, 512, fd);
+			size -= sz;
+			index += sz;
+			if(!sz)
+			break;
+		}
+		fclose(fd);
+		result[index] = '\0';
+	}
+	resultSrvc->updateService(result, strlen(result)+1);
+}
+
+#ifndef WIN32
+
+extern char **environ;
+
+int my_system (char *command)
+{
+    int pid, status, ret, n = 0;
+
+    if (command == 0)
+        return 1;
+    pid = fork();
+    if (pid == -1)
+        return -1;
+    if (pid == 0) {
+        char *argv[4];
+        argv[0] = "sh";
+        argv[1] = "-c";
+        argv[2] = command;
+        argv[3] = 0;
+        execve("/bin/sh", argv, environ);
+        exit(127);
+    }
+    do {
+      ret = waitpid(pid, &status,WNOHANG);
+      if(ret == -1)
+	break;
+      usleep(100000);
+      n++;
+    } while(n < 1200);
+    return status;
+}
+
+#else
+int my_system (char *command)
+{
+	return system(command);
+}
+
+#endif
+
+#ifdef WIN32
+int init_sock()
+{
+	WORD wVersionRequested;
+	WSADATA wsaData;
+	int err;
+	static int sock_init_done = 0;
+
+	if(sock_init_done) return(1);
+ 	wVersionRequested = MAKEWORD( 2, 0 );
+	err = WSAStartup( wVersionRequested, &wsaData );
+
+	if ( err != 0 ) {
+    	return(0);
+	}
+
+	if ( LOBYTE( wsaData.wVersion ) != 2 ||
+        HIBYTE( wsaData.wVersion ) != 0 ) {
+
+	    WSACleanup( );
+    	return(0); 
+	}
+	sock_init_done = 1;
+	return(1);
+}
+#endif
+
+void main(int argc, char **argv)
+{
+	char host[64], cmd_name[128], result_name[128];
+	Cmd *cmd;
+
+#ifdef WIN32
+	init_sock();
+#endif
+	gethostname(host, 64);
+
+//Setup command reception and result publishing
+	sprintf(cmd_name,"%s/ExecuteCmd",host);
+	sprintf(result_name,"%s/CmdResult", host);
+	cmd = new Cmd(cmd_name, result_name);
+
+	sprintf(cmd_name,"%s_server",host);
+	DimServer::start(cmd_name);
+	while(1)
+    {
+		pause();
+    }
+}
Index: branches/testFACT++branch/dim/src/examples/test_Browser.cxx
===================================================================
--- branches/testFACT++branch/dim/src/examples/test_Browser.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/test_Browser.cxx	(revision 18277)
@@ -0,0 +1,193 @@
+#include <iostream>
+#include <dic.hxx>
+using namespace std;
+
+class ErrorHandler : public DimErrorHandler
+{
+	void errorHandler(int severity, int code, char *msg)
+	{
+		int index = 0;
+		char **services;
+		cout << severity << " " << msg << endl;
+		services = DimClient::getServerServices();
+		cout<< "from "<< DimClient::getServerName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+public:
+	ErrorHandler() {DimClient::addErrorHandler(this);}
+};
+
+class StrService : public DimInfo
+{
+
+	void infoHandler()
+	{
+		int index = 0;
+		char **services;
+//		cout << "Dns Node = " << DimClient::getDnsNode() << endl;
+		cout << "Received STRVAL : " << getString() << endl;
+		services = DimClient::getServerServices();
+		cout<< "from "<< DimClient::getServerName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+public :
+	StrService() : DimInfo("TEST/STRVAL","not available") {};
+};
+
+
+void **AllServices;
+int *AllServiceStates;
+int NServices;
+int NBytes;
+
+class MyTimer: public DimTimer
+{
+  void timerHandler()
+    {
+      int i;
+      int missing = 0;
+      for(i = 0; i < NServices; i++)
+      {
+	if(AllServiceStates[i] == -2)
+	  {
+	    missing++;
+	  }
+      }
+      dim_print_date_time();
+      printf("Missing %d, NBytes = %d\n", missing, NBytes);
+      if(missing)
+	start(1);
+    }
+ public:
+  MyTimer(): DimTimer(2){};
+};
+
+class TestGetService: public DimInfo
+{
+  void infoHandler()
+  {
+    int i, index, size, done = 1;
+    char *dataptr;
+    
+    size = getSize();
+    NBytes += size;
+    dataptr = new char[size];
+    memcpy(dataptr, getData(), size);
+    for(i = 0; i < NServices; i++)
+      {
+	if(AllServices[i] == this)
+	  {
+	    index = i;
+	    break;
+	  }
+      }
+    AllServiceStates[index] = getInt();
+    //    printf("Got %s, %d, %d\n", getName(), index, AllServiceStates[index]);
+    for(i = 0; i < NServices; i++)
+      {
+	if(AllServiceStates[i] == -2)
+	  {
+	    done = 0;
+	    break;
+	  }
+      }
+    if(done)
+      {
+	dim_print_date_time();
+	printf("All Services Received\n");
+      }
+  }
+public :
+  TestGetService(char *name): DimInfo(name, -1){};
+};
+
+
+int main(int argc, char **argv)
+{
+		
+	ErrorHandler errHandler;
+//	StrService servstr;
+	char *server, *ptr, *ptr1;
+	DimBrowser br;
+	int type, n, index, i, ret;
+	MyTimer *myTimer;
+	char findStr[132];
+
+	ret = 0;
+	strcpy(findStr,"*");
+	if(argc > 1)
+	{
+		if(!strcmp(argv[1],"-f"))
+		{
+		  if(argc > 2)
+		    strcpy(findStr,argv[2]);
+		  else 
+		    ret = 1;
+		}
+		else
+		  ret = 1;
+		if(ret)
+		{
+			printf("Parameters: [-f <search string>]\n");
+			exit(0);
+		}
+	}
+//	DimClient::addErrorHandler(errHandler);
+dim_print_date_time();
+printf("Asking %s\n", findStr);
+        n = br.getServices(findStr);
+dim_print_date_time();
+	cout << "found " << n << " services" << endl; 
+	
+	AllServices = (void **) new TestGetService*[n];
+	AllServiceStates = new int[n];
+	NServices = n;
+	NBytes = 0;
+	index = 0;
+	for(i = 0; i < n; i++)
+	  AllServiceStates[i] = 0;
+	while((type = br.getNextService(ptr, ptr1))!= 0)
+	{
+	  
+	  //		cout << "type = " << type << " - " << ptr << " " << ptr1 << endl;
+	  AllServiceStates[index] = -2;
+	  AllServices[index] = new TestGetService(ptr);
+	  index++;
+	  //	  if(index >= 1000)
+	  //	    break;
+	}
+	myTimer = new MyTimer();
+	dim_print_date_time();
+	printf("Got Service Names\n");
+	/*
+	br.getServers();
+	while(br.getNextServer(server, ptr1))
+	{
+		cout << server << " @ " << ptr1 << endl;
+	}
+
+	br.getServerClients("DIS_DNS");
+	while(br.getNextServerClient(ptr, ptr1))
+	{
+		cout << ptr << " @ " << ptr1 << endl;
+	}
+	DimInfo servint("TEST/INTVAL",-1); 
+	*/
+	while(1)
+	{
+		sleep(10);
+		/*
+		cout << "Current INTVAL : " << servint.getInt() << endl;
+		DimClient::sendCommand("TEST/CMND","UPDATE_STRVAL");
+		*/
+	}
+	return 0;
+}
Index: branches/testFACT++branch/dim/src/examples/test_big_client.c
===================================================================
--- branches/testFACT++branch/dim/src/examples/test_big_client.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/test_big_client.c	(revision 18277)
@@ -0,0 +1,91 @@
+#include <dic.h>
+
+#define MAX_SERVICES 40000
+/*
+int Data[MAX_SERVICES];
+int Recvd[MAX_SERVICES];
+*/
+int no_link = -1;
+
+void rout(tag, buff, size)
+int *tag, *size;
+int *buff;     
+{
+static int bad = 0;
+int i;
+static int n_recvd = 0;
+
+	if(!bad)
+	{
+		if (*buff == no_link)
+		{
+/*
+			for(i = 0; i < MAX_SERVICES; i++)
+				Recvd[i] = 0;
+*/
+			bad = 1;
+			n_recvd = 0;
+		}
+	}
+	if(bad)
+	{
+		if (*buff != no_link)
+		{
+/*
+			for(i = 0; i < MAX_SERVICES; i++)
+				Recvd[i] = 0;
+*/
+			bad = 0;
+			n_recvd = 0;
+		}
+	}
+/*
+	if(bad)
+	{
+		Recvd[*tag] = *buff;
+	}
+	else
+	{
+		Recvd[*tag] = (*buff)+1;
+	}
+*/
+	n_recvd++;
+/*
+	for(i = 0; i <= MAX_SERVICES; i++)
+	{
+		if(Recvd[i] != 0)
+			n_recvd++;
+	}
+*/
+/*
+  if(!((*tag) % 1000))
+*/
+
+	if(!(n_recvd % 1000))
+		printf("Received n = %d, %d = %d\n",n_recvd, *tag, *buff);
+}
+
+main(argc,argv)
+int argc;
+char **argv;
+{
+	int i;
+	char name[64];
+	int id = 123;
+
+	dic_set_dns_node("lxplus050.cern.ch");
+
+/*	
+	dic_set_debug_on();
+*/	
+	for(i = 0; i< MAX_SERVICES; i++)
+	{
+		sprintf(name,"%s/Service_%d",argv[2],i);
+		dic_info_service( name, TIMED, 0, 0, 0,
+				  rout, i,&no_link, sizeof(no_link) );
+	}
+	while(1)
+	  {
+	    pause();
+	  }
+}
Index: branches/testFACT++branch/dim/src/examples/test_big_server.c
===================================================================
--- branches/testFACT++branch/dim/src/examples/test_big_server.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/test_big_server.c	(revision 18277)
@@ -0,0 +1,29 @@
+#include <dis.h>
+
+#define MAX_SERVICES 40000
+int Data[MAX_SERVICES];
+
+main(argc,argv)
+int argc;
+char **argv;
+{
+	int i;
+	char name[64];
+	int ids[MAX_SERVICES];
+/*
+	dic_set_dns_node("lxplus059.cern.ch");
+*/
+  for(i = 0; i< MAX_SERVICES; i++)
+	{
+	  Data[i] = i;
+	  sprintf(name,"%s/Service_%d",argv[1],i);
+	  ids[i] = dis_add_service( name, "I", &Data[i], 
+			sizeof(Data[i]), (void *)0, 0 );
+	}
+	dis_start_serving( argv[1] );
+	while(1)
+	  pause();
+}
+
+
+
Index: branches/testFACT++branch/dim/src/examples/test_client.c
===================================================================
--- branches/testFACT++branch/dim/src/examples/test_client.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/test_client.c	(revision 18277)
@@ -0,0 +1,169 @@
+
+#include <dic.h>
+#include <time.h>
+#include <string.h>
+#include <stdio.h>
+
+char str[80];
+char str_res[10][80];
+char client_str[80];
+int no_link = -1;
+float no_link_float = -1.0;
+char buff[80];
+
+typedef struct {
+	int i;
+	int j;
+	int k;
+	double d;
+	short s;
+    char c;
+	short t;
+	float f;
+	char str[20];
+}TT;
+
+TT t;
+
+void big_rout( int *tag, int *buf, int *size )
+{
+
+	if(size){}
+	printf("Received %d for TestMem_%d\n", *buf, *tag);
+}
+
+
+void got_servers( int *tag, char *list, int *size)
+{
+	if(tag){}
+	if(size){}
+	printf("%s",list);
+}
+
+void got_services( int *tag, char *list, int *size)
+{
+	if(tag){}
+	if(size){}
+	printf("%s",list);
+}
+/*
+void rout_list( int *tag, char *buf, int *size )
+{
+		printf("Received list %d: %s\n",*size, buf);
+}
+*/
+
+void version_rout( int *tag, int *buf, int *size)
+{
+	if(tag){}
+	printf("Received VERSION %lx, %d\n", (dim_long)buf, *size);
+}
+
+void rout( tag, buf, size )
+char *buf;
+int *tag, *size;
+{
+/*
+	char *format;
+	format = dic_get_format(0);
+	printf("Received format = %s %08x, %d\n",format, format, *size);
+*/
+	if(*tag == 1100)
+	{
+		printf("Received ONCE_ONLY : %s\n",buff);
+		return;
+	}
+	if(*tag == 1200)
+	{
+		char node[128], str[256];
+		int secs, millis;
+		time_t tsecs;
+
+		dic_get_dns_node(node);
+		printf("DNS node = %s\n",node);
+		printf("size = %d\n",*size);
+		memcpy(&t, buf, (size_t)*size);
+		printf("t.i = %d, t.d = %2.2f, t.s = %d, t.c = %c, t.f = %2.2f, t.str = %s\n",
+			t.i,t.d,t.s,t.c,t.f,t.str);
+		dic_get_timestamp(0, &secs, &millis);
+		tsecs = secs;
+		my_ctime(&tsecs, str, 128);
+		str[(int)strlen(str)-1] = '\0';
+		printf("timestamp = %s.%d\n",str,millis);
+
+		return;
+	}
+	else
+		printf("%s Received %s for Service%03d\n",client_str,buf,*tag);
+
+/*
+	if(conn_id = dic_get_server(server))
+		printf("received from %d, %s\n",conn_id, server);
+*/
+
+}
+
+int main(int argc, char **argv)
+{
+	int i;
+	char aux[80];
+	int id = 123;
+
+/*
+	dic_set_debug_on();
+*/
+/*
+	dic_set_dns_node("pclhcb99.cern.ch");
+*/
+	if(argc){}
+	sprintf(str,"%s/SET_EXIT_HANDLER",argv[2]);
+	dic_cmnd_service(str, &id, 4);
+	dic_get_id(aux);
+	printf("%s\n",aux);
+	strcpy(client_str,argv[1]);
+
+	for(i = 0; i< 10; i++)
+	{
+		sprintf(str,"%s/Service_%03d",argv[2],i);
+		dic_info_service( str, TIMED, 10, 0, 0, rout, i,
+			  "No Link", 8 );
+	}
+	
+	sprintf(aux,"%s/TEST_SWAP",argv[2]);
+	dic_info_service_stamped( aux, TIMED, 5, 0, 0, rout, 1200,
+			  &no_link, 4 );
+
+	sprintf(str,"%s/VERSION_NUMBER",argv[2]);
+	dic_info_service( str, MONITORED, 0, 0, 0, version_rout, 0,
+			  NULL, 0 );
+/*
+	for(i = 0; i < 20; i++)
+	{
+		sprintf(aux,"%s/TestMem_%d",argv[2], i);
+		dic_info_service( aux, MONITORED, 0, 0, 0, big_rout, i,
+			  &no_link, 4 );
+	}
+*/
+/*
+	sprintf(aux,"DIS_DNS/SERVER_LIST");
+	dic_info_service( aux, MONITORED, 0, 0, 0, rout_list, 0,
+			  "DEAD", 5 );
+	sprintf(aux,"%s/SERVICE_LIST",argv[2]);
+	dic_info_service( aux, MONITORED, 0, 0, 0, rout_list, 0,
+			  "DEAD", 5 );
+*/
+/*
+	dic_info_service("DIS_DNS/SERVER_LIST",MONITORED, 0, 0, 0, got_servers, 0,
+		"not there", 10);
+	dic_info_service("xx/SERVICE_LIST",MONITORED, 0, 0, 0, got_services, 0,
+		"not there", 10);
+*/
+	sprintf(aux,"%s/TEST_CMD",argv[2]);
+	while(1)
+	{
+		sleep(10);
+		printf("Sending Command, size = %d, i = %d\n",(int)sizeof(t), t.i);
+		dic_cmnd_service(aux,&t,(int)sizeof(t));
+	}
+	return 1;
+}
Index: branches/testFACT++branch/dim/src/examples/test_client.cxx
===================================================================
--- branches/testFACT++branch/dim/src/examples/test_client.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/test_client.cxx	(revision 18277)
@@ -0,0 +1,95 @@
+#include <iostream>
+#include <dic.hxx>
+using namespace std;
+
+class ErrorHandler : public DimErrorHandler
+{
+	void errorHandler(int severity, int code, char *msg)
+	{
+		int index = 0;
+		char **services;
+		if(code){}
+		cout << severity << " " << msg << endl;
+		services = DimClient::getServerServices();
+		cout<< "from "<< DimClient::getServerName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+public:
+	ErrorHandler() {DimClient::addErrorHandler(this);}
+};
+
+class StrService : public DimInfo
+{
+
+	void infoHandler()
+	{
+		int index = 0;
+		char **services;
+		char *format;
+//		cout << "Dns Node = " << DimClient::getDnsNode() << endl;
+		format = getFormat();
+		cout << "Received STRVAL : " << getString() << "format = " << format << endl;
+		services = DimClient::getServerServices();
+		cout<< "from "<< DimClient::getServerName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+		int inCallback = DimClient::inCallback();
+		cout << "infoHandler: In callback "<< inCallback << endl; 
+	}
+public :
+	StrService() : DimInfo("TEST/STRVAL",(char *)"not available") {};
+};
+
+int main()
+{
+		
+	ErrorHandler errHandler;
+	StrService servstr;
+	char *server, *ptr, *ptr1;
+	DimBrowser br;
+	int type, n, pid;
+
+//	DimClient::addErrorHandler(errHandler);
+	
+	n = br.getServices("*");
+	cout << "found " << n << " services" << endl; 
+	
+	while((type = br.getNextService(ptr, ptr1))!= 0)
+	{
+		cout << "type = " << type << " - " << ptr << " " << ptr1 << endl;
+	}
+	
+	br.getServers();
+	while(br.getNextServer(server, ptr1, pid))
+	{
+		cout << server << " @ " << ptr1 << ", pid = " << pid << endl;
+	}
+
+	br.getServerClients("DIS_DNS");
+	while(br.getNextServerClient(ptr, ptr1))
+	{
+		cout << ptr << " @ " << ptr1 << endl;
+	}
+
+	DimInfo servint("TEST/INTVAL",-1); 
+	
+	while(1)
+	{
+		sleep(10);
+		
+		cout << "Current INTVAL : " << servint.getInt() << endl;
+		DimClient::sendCommand("TEST/CMND","UPDATE_STRVAL");
+		int inCallback = DimClient::inCallback();
+		cout << "main: In callback "<< inCallback << endl;
+
+		DimClient::addErrorHandler(0);
+	}
+	return 0;
+}
Index: branches/testFACT++branch/dim/src/examples/test_client1.c
===================================================================
--- branches/testFACT++branch/dim/src/examples/test_client1.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/test_client1.c	(revision 18277)
@@ -0,0 +1,43 @@
+#include <dic.h>
+#include <time.h>
+#include <string.h>
+#include <stdio.h>
+
+int Data[4000];
+int no_link = -1;
+
+void rout( tag, buf, size )
+int *buf;
+int *tag, *size;
+{
+
+	printf("Received beam%d Data : %d\n",*tag, buf[0]);
+}
+
+int main(int argc, char **argv)
+{
+	int i;
+	char aux[80];
+	int id = 123;
+
+	dic_info_service( "Beam1/Data", MONITORED, 0, 0, 0, rout, 1,
+			  &no_link, 4 );
+	dic_info_service( "Beam1/Data", MONITORED, 0, 0, 0, rout, 1,
+			  &no_link, 4 );
+	dic_info_service( "Beam1/Data", MONITORED, 0, 0, 0, rout, 1,
+			  &no_link, 4 );
+	dic_info_service( "Beam2/Data", MONITORED, 0, 0, 0, rout, 2,
+			  &no_link, 4 );
+	dic_info_service( "Beam2/Data", MONITORED, 0, 0, 0, rout, 2,
+			  &no_link, 4 );
+	dic_info_service( "Beam2/Data", MONITORED, 0, 0, 0, rout, 2,
+			  &no_link, 4 );
+	
+	while(1)
+	{
+		usleep(1000);
+		dic_cmnd_service("Beam1/Cmd","Update",7);
+		dic_cmnd_service("Beam2/Cmd","Update",7);
+	}
+	return 1;
+}
Index: branches/testFACT++branch/dim/src/examples/test_client_ccpc.c
===================================================================
--- branches/testFACT++branch/dim/src/examples/test_client_ccpc.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/test_client_ccpc.c	(revision 18277)
@@ -0,0 +1,58 @@
+#include <dic.h>
+
+int no_link = -1;
+int RegisterSet;
+int RegisterValue;
+
+void register_callback( tag, data, size )
+int *tag, *data, *size;
+{
+	RegisterValue = *data;
+	RegisterSet = *tag;
+/* In linux this is not necessary */
+#ifdef WIN32
+	dim_wake_up();
+#endif
+}
+
+int set_register_wait(index, value)
+int index, value;
+{
+	int pars[2];
+		
+	pars[0] = index;
+	pars[1] = value;
+	RegisterSet = -1;
+	dic_cmnd_service("SET_REGISTER",pars,sizeof(pars));
+	while(RegisterSet == -1)
+	{
+		dim_wait();
+	}
+	if(RegisterSet == index)
+		return(RegisterValue);
+	return(-1);
+}
+
+main(argc,argv)
+int argc;
+char **argv;
+{
+	int i, index = 0, value;
+	char aux[80];
+
+	for(i = 0; i< 10; i++)
+	{
+		sprintf(aux,"Register%03d",i);
+		dic_info_service( aux, MONIT_ONLY, 0, 0, 0, 
+			register_callback, i, &no_link, sizeof(int) );
+	}
+
+	while(1)
+	{
+		value = set_register_wait(index%10, index);
+		printf("Register %d: wrote %d, readback = %d\n", 
+			index%10, index, value);
+		index ++;
+		sleep(1);
+	}
+}
Index: branches/testFACT++branch/dim/src/examples/test_client_many.c
===================================================================
--- branches/testFACT++branch/dim/src/examples/test_client_many.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/test_client_many.c	(revision 18277)
@@ -0,0 +1,142 @@
+
+#include <dic.h>
+#include <time.h>
+
+char str[80];
+char str_res[10][80];
+char client_str[80];
+int no_link = -1;
+float no_link_float = -1.0;
+char buff[80];
+
+typedef struct {
+	int i;
+	int j;
+	int k;
+	double d;
+	short s;
+    char c;
+	short t;
+	float f;
+	char str[20];
+}TT;
+
+TT t;
+/*
+void big_rout( tag, buf, size )
+int *buf;
+int *tag, *size;
+{
+
+	printf("Received %d for TestMem\n", *buf);
+}
+*/
+void rout_many( tag, buf, size )
+float *buf;
+int *tag, *size;
+{
+	if(*tag == 50000)
+	{
+		dim_print_date_time();
+		printf("Received %f for service %d\n", *buf, *tag);
+	}
+}
+
+void rout( tag, buf, size )
+char *buf;
+int *tag, *size;
+{
+	int conn_id;
+	char server[128];
+
+	if(*tag == 1100)
+	{
+		printf("Received ONCE_ONLY : %s\n",buff);
+		return;
+	}
+	if(*tag == 1200)
+	{
+		char node[128], str[256];
+		int secs, millis;
+		time_t tsecs;
+
+		dic_get_dns_node(node);
+		printf("DNS node = %s\n",node);
+		printf("size = %d\n",*size);
+		memcpy(&t, buf, *size);
+		printf("t.i = %d, t.d = %2.2f, t.s = %d, t.c = %c, t.f = %2.2f, t.str = %s\n",
+			t.i,t.d,t.s,t.c,t.f,t.str);
+		dic_get_timestamp(0, &secs, &millis);
+		tsecs = secs;
+		my_ctime(&tsecs, str, 128);
+		str[strlen(str)-1] = '\0';
+		printf("timestamp = %s.%d\n",str,millis);
+
+		return;
+	}
+	else
+		printf("%s Received %s for Service%03d\n",client_str,buf, *tag);
+
+/*
+	if(conn_id = dic_get_server(server))
+		printf("received from %d, %s\n",conn_id, server);
+*/
+
+}
+
+main(argc,argv)
+int argc;
+char **argv;
+{
+	int i, *ptr;
+	char aux[80];
+	int id = 123;
+
+/*
+	dic_set_debug_on();
+*/
+/*
+	dic_set_dns_node("pclhcb99.cern.ch");
+*/
+
+	sprintf(str,"%s/SET_EXIT_HANDLER",argv[2]);
+	dic_cmnd_service(str, &id, 4);
+	dic_get_id(aux);
+	printf("%s\n",aux);
+	strcpy(client_str,argv[1]);
+/*
+	for(i = 0; i< 10; i++)
+	{
+		sprintf(str,"%s/Service_%03d",argv[2],i);
+		dic_info_service( str, TIMED, 10, 0, 0, rout, i,
+			  "No Link", 8 );
+	}
+	
+	sprintf(aux,"%s/TEST_SWAP",argv[2]);
+	dic_info_service_stamped( aux, TIMED, 5, 0, 0, rout, 1200,
+			  &no_link, 4 );
+*/
+/*	
+	sprintf(aux,"%s/TestMem",argv[2]);
+	dic_info_service( aux, MONITORED, 0, 0, 0, big_rout, 0,
+			  &no_link, 4 );
+*/
+
+	for(i = 0; i< 100000; i++)
+	{
+		sprintf(aux,"%s/ServiceMany%05d",argv[2],i);
+		dic_info_service( aux, MONITORED, 60, 0, 0, rout_many, i,
+			  &no_link_float, 4 );
+	}
+
+	sprintf(aux,"%s/TEST_CMD",argv[2]);
+	while(1)
+	{
+		int index = 0;
+		sleep(10);
+/*
+		printf("Sending Command, size = %d, i = %d\n",sizeof(t), t.i);
+		dic_cmnd_service(aux,&t,sizeof(t));
+*/
+	}
+}
Index: branches/testFACT++branch/dim/src/examples/test_client_slac.c
===================================================================
--- branches/testFACT++branch/dim/src/examples/test_client_slac.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/test_client_slac.c	(revision 18277)
@@ -0,0 +1,32 @@
+#include <dic.h>
+#include <dis.h>
+#include <time.h>
+
+void rout( tag, buf, size )
+char *buf;
+int *tag, *size;
+{
+	printf("%s Received for Server %d\n", buf, *tag);
+}
+
+main()
+{
+	char str[80], aux[80];
+	int i;
+
+	for(i = 0; i< 20; i++)
+	{
+		sprintf(str,"TEST_SLAC/SRV%d",i);
+		dic_info_service( str, TIMED, 60, 0, 0, rout, i,
+			  "No Link", 8 );
+	}
+	for(i = 0; i< 20; i++)
+	{
+		sprintf(aux,"TEST_SLAC/CLT%d",i);
+		dis_add_service(aux, "C", aux, strlen(aux)+1, (void *)0, 0);
+	}
+	sprintf(aux,"TEST_SLAC/CLT");
+	dis_start_serving(aux);
+	while(1)
+		pause();
+}
Index: branches/testFACT++branch/dim/src/examples/test_serve.cxx
===================================================================
--- branches/testFACT++branch/dim/src/examples/test_serve.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/test_serve.cxx	(revision 18277)
@@ -0,0 +1,172 @@
+#include <iostream>
+#include <dis.hxx>
+#ifndef WIN32
+#include <unistd.h>
+#endif
+using namespace std;
+#include <string>
+
+class ErrorHandler : public DimErrorHandler
+{
+	void errorHandler(int severity, int code, char *msg)
+	{
+		int index = 0;
+		char **services;
+		cout << severity << " " << msg << endl;
+		services = DimServer::getClientServices();
+		cout<< "from "<< DimServer::getClientName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+public:
+	ErrorHandler() {DimServer::addErrorHandler(this);}
+};
+
+class ExitHandler : public DimExitHandler
+{
+	void exitHandler(int code)
+	{
+		cout << "exit code " << code << endl;
+	}
+public:
+	ExitHandler() {DimServer::addExitHandler(this);}
+};
+
+class CmndServ : public DimCommand, public DimTimer
+{
+	DimService servstr;
+	void commandHandler()
+	{
+		int index = 0;
+		char **services;
+		cout << "Command " << getString() << " received" << endl;
+		servstr.updateService(getString()); 
+		services = DimServer::getClientServices();
+		cout<< "from "<< DimServer::getClientName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+public :
+	CmndServ() : DimCommand("TEST/CMND","C"), 
+				 servstr("TEST/STRVAL","empty") {};
+};
+
+/*
+class CmndServMany : public DimCommand
+{
+	void commandHandler()
+	{
+		cout << "Command " << getString() << " received" << endl;
+	}
+public :
+	CmndServMany(char *name) : DimCommand(name,"C") {};
+};
+*/
+
+void add_serv(const int & ival)
+{
+	DimService *abc;
+
+	abc = new DimService("TEST/INTVAL_CONST",(int &)ival);
+}
+
+void add_serv_str(const string & s1)
+{
+	DimService *abc;
+
+	abc = new DimService("TEST/STRINGVAL_CONST",(char *)s1.c_str());
+}
+
+void add_serv_bool(const bool & boolval)
+{
+	DimService *serv;
+
+//	serv = new DimService("TEST/BOOLVAL_CONST",(short &)boolval);
+	serv = new DimService("TEST/BOOLVAL_CONST","C:1", (void *)&boolval, 1);
+}
+
+class ServWithHandler : public DimService
+{
+	int value;
+
+	void serviceHandler()
+	{
+		value++;
+//		setData(value);
+	}
+public :
+	ServWithHandler(char *name) : DimService(name, value) { value = 0;};
+};
+
+int main()
+{
+	int ival = 0;
+//	ErrorHandler errHandler;
+//	ExitHandler exHandler;
+//	DimServer::setDnsNode("axdes2.cern.ch");
+	string s1;
+	bool boolval;
+	ServWithHandler *testServ;
+
+/*
+	int i, arr[15000];
+	DimService *servp;
+	DimCommand *cmndp;
+	char str[132];
+*/
+	float farr[4];
+	DimService *farrp;
+
+	s1 = "hello";
+	add_serv(ival);
+	DimService servint("TEST/INTVAL",ival);
+	add_serv_str(s1);
+	boolval = 0;
+	add_serv_bool(boolval);
+	CmndServ cmdsvr;
+
+	testServ = new ServWithHandler("MY_NEW_TEST_SERVICE_WITH_HANDLER");
+
+	farr[0] = 1.2;
+	farr[1] = 2.3;
+	farrp = new DimService("/PCITCO147/sensors/fan/input","F", farr, sizeof(farr));
+	DimServer::start("TEST");
+
+/*
+//	DimServer::autoStartOff();
+	DimServer::start("TEST");
+
+	for(i = 0; i < 15000; i++)
+	{
+		arr[i] = i;
+		sprintf(str,"ServiceManyTest/%05d",i);
+		servp = new DimService(str,arr[i]);
+		servp->setQuality(1);
+		servp->updateService(arr[i]);
+//	DimServer::start("TEST");
+		sprintf(str,"CommandManyTest/%05d",i);
+		cmndp = new CmndServMany(str);
+//	DimServer::start("TEST");
+	}
+*/
+
+	while(1)
+	{
+		sleep(5);
+		s1 = "hello1";
+		if(!boolval)
+			boolval = 1;
+		else
+			boolval = 0;
+		ival++;
+		servint.updateService();
+	}
+	return 0;
+}
+
Index: branches/testFACT++branch/dim/src/examples/test_server.c
===================================================================
--- branches/testFACT++branch/dim/src/examples/test_server.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/test_server.c	(revision 18277)
@@ -0,0 +1,236 @@
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <dis.h>
+
+char str[10][80];
+
+typedef struct {
+	int i;
+	int j;
+	int k;
+	double d;
+	short s;
+	char c;
+	short t;
+	float f;
+	char str[20];
+}TT;
+
+TT t;
+
+
+int big_buff[1024];
+
+
+void cmnd_rout(int *tag, TT *buf, int *size)
+{
+
+	if(tag){}
+	dim_print_date_time();
+	printf("Command received, size = %d, TT size = %d:\n", *size,
+	       (int)sizeof(TT));
+	printf("buf->i = %d, buf->d = %2.2f, buf->s = %d, buf->c = %c, buf->f = %2.2f, buf->str = %s\n",
+			buf->i,buf->d,buf->s,buf->c,buf->f,buf->str);
+}
+
+void client_exited(int *tag)
+{
+	char name[84];
+
+	if(dis_get_client(name))
+		printf("Client %s (%d) exited\n", name, *tag);
+	else
+		printf("Client %d exited\n", *tag);
+}
+
+void exit_cmnd(int *code)
+{
+	printf("Exit_cmnd %d\n", *code);
+	exit(*code);
+}
+
+int NewData;
+int NewIds[11];
+
+int more_ids[1024];
+int curr_more_index = 0;
+char more_str[1024][80];
+
+/*
+int atlas_ids[210];
+float atlas_arr[10];
+*/
+int main(int argc, char **argv)
+{
+	int i, id/*, big_ids[20]*/;
+	char aux[80];
+	char name[84]/*, name1[132]*/;
+/*
+	int on = 0;
+*/
+	dim_long dnsid = 0;
+	char extra_dns[128];
+	int new_dns = 0;
+	int index = 0;
+/*
+	dim_set_write_timeout(1);
+*/
+/*
+	int buf_sz, buf_sz1;
+*/
+/*
+dis_set_debug_on();
+*/
+/*
+	int status;
+	regex_t re;
+
+	if(regcomp(&re, "abc*",REG_EXTENDED|REG_NOSUB) != 0)
+		printf("regcomp error\n");
+	status = regexec(&re,"abcdef", (size_t)0, NULL, 0);
+	regfree(&re);
+	printf("result = %d\n", status); 
+*/
+	if(argc){}
+	new_dns = dim_get_env_var("EXTRA_DNS_NODE", extra_dns, sizeof(extra_dns));
+	if(new_dns)
+		dnsid = dis_add_dns(extra_dns,0);
+	if(dnsid){}
+/*
+	buf_sz = dim_get_write_buffer_size();
+	dim_set_write_buffer_size(10000000);
+	buf_sz1 = dim_get_write_buffer_size();
+printf("socket buffer size = %d, after = %d\n",buf_sz, buf_sz1);
+*/
+	dis_add_exit_handler(exit_cmnd);
+	dis_add_client_exit_handler(client_exited);
+
+	for(i = 0; i< 10; i++)
+	{
+		sprintf(str[i],"%s/Service_%03d",argv[1],i);
+		dis_add_service( str[i], "C", str[i], (int)strlen(str[i])+1, 
+			(void *)0, 0 );
+	}
+	t.i = 123;
+	t.j = 456;
+	t.k = 789;
+	t.d = 56.78;
+	t.s = 12;
+	t.t = 12;
+	t.c = 'a';
+	t.f = (float)4.56;
+	strcpy(t.str,"hello world");
+
+	sprintf(aux,"%s/TEST_SWAP",argv[1]);
+	id = dis_add_service( aux, "l:3;d:1;s:1;c:1;s:1;f:1;c:20", &t, sizeof(t), 
+		(void *)0, 0 );
+	if(id){}
+	sprintf(aux,"%s/TEST_CMD",argv[1]);
+	dis_add_cmnd(aux,"l:3;d:1;s:1;c:1;s:1;f:1;c:20",cmnd_rout, 0);
+
+/*
+	big_buff[0] = 1;
+	for(i = 0; i < 20; i++)
+	{
+		sprintf(aux,"%s/TestMem_%d",argv[1], i);
+		big_ids[i] = dis_add_service( aux, "I", big_buff, 1024*sizeof(int), 
+			(void *)0, 0 );
+	}
+*/
+
+/*
+	for(i = 1; i <= 200; i++)
+	{
+		sprintf(aux,"%s/ATLAS_Service%d",argv[1],i);
+		atlas_ids[i] = dis_add_service( aux, "F", atlas_arr, 10*sizeof(float), 
+			(void *)0, 0 );
+	}
+*/
+	dis_start_serving( argv[1] );
+
+	if(dis_get_client(name))
+	{
+		printf("client %s\n",name);
+	}
+/*
+	for(i = 0; i < 5; i++)
+	{
+		sleep(10);
+
+	}
+	dis_stop_serving();
+	sleep(59);
+*/
+	while(1)
+	{
+		index++;
+/*
+		for(i = 0; i < 20; i++)
+		{
+			index++;
+			big_buff[0] = index;
+			dis_update_service(big_ids[i]);
+		}
+		sleep(1);
+*/
+/*
+		pause();
+		*/
+		sleep(10);
+/*
+		dis_update_service(id);
+*/
+/*		
+		for(i = 1; i <= 200; i++)
+		{
+			dis_update_service(atlas_ids[i]);
+		}
+*/
+/*
+		if(curr_more_index < 1000)
+		{
+			for(i = 1; i <= 10; i++)
+			{
+				sprintf(more_str[curr_more_index],"%s/More_Service_%03d",argv[1],curr_more_index);
+				more_ids[curr_more_index] = dis_add_service( more_str[curr_more_index], "C", 
+					more_str[curr_more_index], (int)strlen(more_str[curr_more_index])+1, 
+					(void *)0, 0 );
+printf("Adding service %s\n",more_str[curr_more_index]);
+				curr_more_index++;
+				dis_start_serving(argv[1]);
+				dis_start_serving(argv[1]);
+			}
+		}
+*/
+		/*
+		if(new_dns)
+		{
+			if(!on)
+			{
+printf("Connecting New DNS \n");
+				for(i = 0; i < 10; i++)
+				{
+					sprintf(name1,"NewService%d",i);
+					NewIds[i] = dis_add_service_dns(dnsid, name1, "i", &NewData, sizeof(NewData), 
+						(void *)0, 0 );
+				}
+				NewIds[10] = 0;
+				dis_start_serving_dns(dnsid, "xx_new");
+				on = 1;
+			}
+			else
+			{
+printf("DisConnecting New DNS \n");
+				for(i = 0; i < 10; i++)
+				{
+					dis_remove_service(NewIds[i]);
+				}
+				on = 0;
+			}
+		}
+		*/
+	}
+	return 1;
+}
+
Index: branches/testFACT++branch/dim/src/examples/test_server.cxx
===================================================================
--- branches/testFACT++branch/dim/src/examples/test_server.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/test_server.cxx	(revision 18277)
@@ -0,0 +1,218 @@
+#include <iostream>
+#include <dis.hxx>
+#ifndef WIN32
+#include <unistd.h>
+#endif
+using namespace std;
+#include <string>
+
+class ErrorHandler : public DimErrorHandler
+{
+	void errorHandler(int severity, int code, char *msg)
+	{
+		int index = 0;
+		char **services;
+		if(code){}
+		cout << severity << " " << msg << endl;
+		services = DimServer::getClientServices();
+		cout<< "from "<< DimServer::getClientName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+public:
+	ErrorHandler() {DimServer::addErrorHandler(this);}
+};
+
+class ExitHandler : public DimExitHandler
+{
+	void exitHandler(int code)
+	{
+		cout << "exit code " << code << endl;
+	}
+public:
+	ExitHandler() {DimServer::addExitHandler(this);}
+};
+
+class CmndServ : public DimCommand, public DimTimer
+{
+	DimService servstr;
+	void commandHandler()
+	{
+		int index = 0;
+		char **services;
+		cout << "Command " << getString() << " received" << endl;
+		servstr.updateService(getString()); 
+		services = DimServer::getClientServices();
+		cout<< "from "<< DimServer::getClientName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+
+public :
+	CmndServ() : DimCommand("TEST/CMND","C"), 
+				 servstr("TEST/STRVAL",(char *)"empty") {};
+/*
+	void handleIt()
+	{
+		int index = 0;
+		char **services;
+		dim_print_date_time();
+		cout << "Command " << getString() << " received" << endl;
+		cout << "time: "<<getTimestamp()<<" millies: "<<getTimestampMillisecs()<<endl;
+		servstr.updateService(getString()); 
+	}
+*/
+};
+
+/*
+class CmndServMany : public DimCommand
+{
+	void commandHandler()
+	{
+		cout << "Command " << getString() << " received" << endl;
+	}
+public :
+	CmndServMany(char *name) : DimCommand(name,"C") {};
+};
+*/
+
+void add_serv(const int & ival)
+{
+	DimService *abc;
+
+	abc = new DimService("TEST/INTVAL_CONST",(int &)ival);
+	if(abc){}
+}
+
+void add_serv_str(const string & s1)
+{
+	DimService *abc;
+
+	abc = new DimService("TEST/STRINGVAL_CONST",(char *)s1.c_str());
+	if(abc){}
+}
+
+DimService *bool_serv[10];
+void add_serv_bool(const bool & boolval)
+{
+
+//	serv = new DimService("TEST/BOOLVAL_CONST",(short &)boolval);
+	bool_serv[0] = new DimService("TEST/BOOLVAL_CONST","C:1", (void *)&boolval, 1);
+	bool_serv[1] = new DimService("TEST/BOOLVAL_CONST1","C:1", (void *)&boolval, 1);
+}
+
+class ServWithHandler : public DimService
+{
+	int value;
+
+	void serviceHandler()
+	{
+		value++;
+//		setData(value);
+	}
+public :
+	ServWithHandler(char *name) : DimService(name, value) { value = 0;};
+};
+
+int main()
+{
+	int ival = 0;
+//	ErrorHandler errHandler;
+//	ExitHandler exHandler;
+//	DimServer::setDnsNode("axdes2.cern.ch");
+	string s1;
+	bool boolval;
+	ServWithHandler *testServ;
+	DimServerDns *newDns;
+	char *extraDns = 0;
+	DimService *new_servint;
+
+//	DimService *dim = new DimService("test","C");
+//	delete dim;
+
+	DimServer::start("TEST");
+	extraDns = DimUtil::getEnvVar((char *)"EXTRA_DNS_NODE");
+	if(extraDns)
+		newDns = new DimServerDns(extraDns, 0, (char *)"new_TEST");
+
+/*
+	int i, arr[15000];
+	DimService *servp;
+	DimCommand *cmndp;
+	char str[132];
+*/
+//	float farr[4];
+//	DimService *farrp;
+
+	s1 = "hello";
+	add_serv(ival);
+	DimService servint("TEST/INTVAL",ival);
+
+	if(extraDns)
+	{
+		new_servint = new DimService(newDns, "new_TEST/INTVAL",ival);
+	}
+
+	add_serv_str(s1);
+	boolval = 0;
+	add_serv_bool(boolval);
+	CmndServ cmdsvr;
+
+	testServ = new ServWithHandler((char *)"MY_NEW_TEST_SERVICE_WITH_HANDLER");
+	if(testServ){}
+
+	//	farr[0] = 1.2;
+//	farr[1] = 2.3;
+//	farrp = new DimService("/PCITCO147/sensors/fan/input","F", farr, sizeof(farr));
+
+
+/*
+//	DimServer::autoStartOff();
+	DimServer::start("TEST");
+
+	for(i = 0; i < 15000; i++)
+	{
+		arr[i] = i;
+		sprintf(str,"ServiceManyTest/%05d",i);
+		servp = new DimService(str,arr[i]);
+		servp->setQuality(1);
+		servp->updateService(arr[i]);
+//	DimServer::start("TEST");
+		sprintf(str,"CommandManyTest/%05d",i);
+		cmndp = new CmndServMany(str);
+//	DimServer::start("TEST");
+	}
+*/
+	while(1)
+	{
+		sleep(5);
+/*
+		while(cmdsvr.hasNext())
+		{
+			cmdsvr.getNext();
+			cmdsvr.handleIt();
+		}
+*/
+		s1 = "hello1";
+		if(!boolval)
+			boolval = 1;
+		else
+			boolval = 0;
+		ival++;
+		bool_serv[1]->updateService();
+		
+//		int inCallback = DimServer::inCallback();
+//		cout << "main: In callback "<< inCallback << endl; 
+		servint.updateService();
+		if(extraDns)
+			new_servint->updateService();
+	}
+	return 0;
+}
+
Index: branches/testFACT++branch/dim/src/examples/test_server1.c
===================================================================
--- branches/testFACT++branch/dim/src/examples/test_server1.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/test_server1.c	(revision 18277)
@@ -0,0 +1,58 @@
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <dis.h>
+
+int Data1[4000];
+int Data2[4000];
+int Id1, Id2;
+
+void cmnd_rout(int *tag, char *buf, int *size)
+{
+	int cid[2];
+	
+	cid[0] = dis_get_conn_id();
+	cid[1] = 0;
+	if(*tag == 1)
+		dis_selective_update_service(Id1, cid);
+	else if(*tag == 2)
+		dis_selective_update_service(Id2, cid);
+}
+
+int main(int argc, char **argv)
+{
+	int i, id, *ptr;
+	char aux[80];
+	char name[84], name1[132];
+	int on = 0;
+	long dnsid = 0;
+	char extra_dns[128];
+	int new_dns = 0;
+/*
+	int buf_sz, buf_sz1;
+*/
+
+dis_set_debug_on();
+
+	i = 0;
+	Data1[0] = i;	
+	Id1 = dis_add_service( "Beam1/Data", "C", Data1, 4000, (void *)0, 0 );
+	dis_add_cmnd("Beam1/Cmd","C",cmnd_rout, 1);
+	Data2[0] = i;	
+	Id2 = dis_add_service( "Beam2/Data", "C", Data2, 4000, (void *)0, 0 );
+	dis_add_cmnd("Beam2/Cmd","C",cmnd_rout, 2);
+
+	dis_start_serving( argv[1] );
+
+	while(1)
+	{
+		usleep(1000);
+		i++;
+		Data1[0] = i;	
+		dis_update_service(Id1);
+		Data2[0] = i;	
+		dis_update_service(Id2);
+	}
+	return 1;
+}
+
Index: branches/testFACT++branch/dim/src/examples/test_serverFernando.cxx
===================================================================
--- branches/testFACT++branch/dim/src/examples/test_serverFernando.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/test_serverFernando.cxx	(revision 18277)
@@ -0,0 +1,172 @@
+#include <iostream>
+#include <dis.hxx>
+#ifndef WIN32
+#include <unistd.h>
+#endif
+using namespace std;
+#include <string>
+
+class ErrorHandler : public DimErrorHandler
+{
+	void errorHandler(int severity, int code, char *msg)
+	{
+		int index = 0;
+		char **services;
+		cout << severity << " " << msg << endl;
+		services = DimServer::getClientServices();
+		cout<< "from "<< DimServer::getClientName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+public:
+	ErrorHandler() {DimServer::addErrorHandler(this);}
+};
+
+class ExitHandler : public DimExitHandler
+{
+	void exitHandler(int code)
+	{
+		cout << "exit code " << code << endl;
+	}
+public:
+	ExitHandler() {DimServer::addExitHandler(this);}
+};
+
+class CmndServ : public DimCommand, public DimTimer
+{
+	DimService servstr;
+	void commandHandler()
+	{
+		int index = 0;
+		char **services;
+		cout << "Command " << getString() << " received" << endl;
+		servstr.updateService(getString()); 
+		services = DimServer::getClientServices();
+		cout<< "from "<< DimServer::getClientName() << " services:" << endl;
+		while(services[index])
+		{
+			cout << services[index] << endl;
+			index++;
+		}
+	}
+public :
+	CmndServ() : DimCommand("TEST/CMND","C"), 
+				 servstr("TEST/STRVAL","empty") {};
+};
+
+/*
+class CmndServMany : public DimCommand
+{
+	void commandHandler()
+	{
+		cout << "Command " << getString() << " received" << endl;
+	}
+public :
+	CmndServMany(char *name) : DimCommand(name,"C") {};
+};
+*/
+
+void add_serv(const int & ival)
+{
+	DimService *abc;
+
+	abc = new DimService("TEST/INTVAL_CONST",(int &)ival);
+}
+
+void add_serv_str(const string & s1)
+{
+	DimService *abc;
+
+	abc = new DimService("TEST/STRINGVAL_CONST",(char *)s1.c_str());
+}
+
+void add_serv_bool(const bool & boolval)
+{
+	DimService *serv;
+
+//	serv = new DimService("TEST/BOOLVAL_CONST",(short &)boolval);
+	serv = new DimService("TEST/BOOLVAL_CONST","C:1", (void *)&boolval, 1);
+}
+
+class ServWithHandler : public DimService
+{
+	int value;
+
+	void serviceHandler()
+	{
+		value++;
+//		setData(value);
+	}
+public :
+	ServWithHandler(char *name) : DimService(name, value) { value = 0;};
+};
+
+int main()
+{
+	int ival = 0;
+//	ErrorHandler errHandler;
+//	ExitHandler exHandler;
+//	DimServer::setDnsNode("axdes2.cern.ch");
+	string s1;
+	bool boolval;
+	ServWithHandler *testServ;
+
+/*
+	int i, arr[15000];
+	DimService *servp;
+	DimCommand *cmndp;
+	char str[132];
+*/
+	float farr[4];
+	DimService *farrp;
+
+	s1 = "hello";
+	add_serv(ival);
+	DimService servint("TEST/INTVAL",ival);
+	add_serv_str(s1);
+	boolval = 0;
+	add_serv_bool(boolval);
+	CmndServ cmdsvr;
+
+	testServ = new ServWithHandler("MY_NEW_TEST_SERVICE_WITH_HANDLER");
+
+	farr[0] = 1.2;
+	farr[1] = 2.3;
+	farrp = new DimService("/PCITCO147/sensors/fan/input","F", farr, sizeof(farr));
+	DimServer::start("TEST");
+
+/*
+//	DimServer::autoStartOff();
+	DimServer::start("TEST");
+
+	for(i = 0; i < 15000; i++)
+	{
+		arr[i] = i;
+		sprintf(str,"ServiceManyTest/%05d",i);
+		servp = new DimService(str,arr[i]);
+		servp->setQuality(1);
+		servp->updateService(arr[i]);
+//	DimServer::start("TEST");
+		sprintf(str,"CommandManyTest/%05d",i);
+		cmndp = new CmndServMany(str);
+//	DimServer::start("TEST");
+	}
+*/
+
+	while(1)
+	{
+		sleep(5);
+		s1 = "hello1";
+		if(!boolval)
+			boolval = 1;
+		else
+			boolval = 0;
+		ival++;
+		servint.updateService();
+	}
+	return 0;
+}
+
Index: branches/testFACT++branch/dim/src/examples/test_server_ccpc.c
===================================================================
--- branches/testFACT++branch/dim/src/examples/test_server_ccpc.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/test_server_ccpc.c	(revision 18277)
@@ -0,0 +1,44 @@
+#include <stdio.h>
+#include <dis.h>
+
+int registers[10];
+int ids[10];
+
+void set_register(tag, data, size)
+int *tag, *data, *size;
+{
+int index, value;
+
+	index = data[0];
+	value = data[1];
+	printf("Setting register %d to value %d\n", index, value);
+/* here we set the register, read it back and update the service*/
+	registers[index] = value;
+	dis_update_service(ids[index]);
+	
+}
+
+main(argc,argv)
+int argc;
+char **argv;
+{
+	int i;
+	char aux[80];
+
+	for(i = 0; i< 10; i++)
+	{
+		sprintf(aux,"Register%03d",i);
+		ids[i] = dis_add_service( aux, "I", &registers[i], sizeof(int), 
+			(void *)0, 0 );
+	}
+
+	dis_add_cmnd("SET_REGISTER","I:2",set_register, 0);
+
+	dis_start_serving( "TEST_REGISTERS" );
+
+	while(1) 
+	{
+		pause();
+	}
+}
+
Index: branches/testFACT++branch/dim/src/examples/test_server_many.c
===================================================================
--- branches/testFACT++branch/dim/src/examples/test_server_many.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/test_server_many.c	(revision 18277)
@@ -0,0 +1,161 @@
+#include <stdio.h>
+#include <dis.h>
+
+char str[10][80];
+
+typedef struct {
+	int i;
+	int j;
+	int k;
+	double d;
+	short s;
+	char c;
+	short t;
+	float f;
+	char str[20];
+}TT;
+
+double ServMany[100000];
+int ServManyIds[100000];
+
+TT t;
+/*
+int big_buff[1024];
+*/
+void cmnd_rout(tag, buf, size)
+int *tag, *size;
+TT *buf;
+{
+int i,*ptr;
+
+	printf("Command received, size = %d, TT size = %d:\n", *size,
+	       sizeof(TT));
+	printf("buf->i = %d, buf->d = %2.2f, buf->s = %d, buf->c = %c, buf->f = %2.2f, buf->str = %s\n",
+			buf->i,buf->d,buf->s,buf->c,buf->f,buf->str);
+}
+
+void client_exited(tag)
+int *tag;
+{
+	char name[84];
+	char *ptr;
+
+	if(dis_get_client(name))
+		printf("Client %s (%d) exited\n", name, *tag);
+	else
+		printf("Client %d exited\n", *tag);
+}
+
+void exit_cmnd(code)
+int *code;
+{
+	printf("Exit_cmnd %d\n", *code);
+	exit(*code);
+}
+
+main(argc,argv)
+int argc;
+char **argv;
+{
+	int i, j, id, *ptr;
+	char aux[80];
+	char name[84], *ptrc;
+	int big_ids[20];
+	int index = 0;
+	char straux[128];
+	void update_services();
+
+	dis_add_exit_handler(exit_cmnd);
+	dis_add_client_exit_handler(client_exited);
+	for(i = 0; i< 10; i++)
+	{
+		sprintf(str[i],"%s/Service_%03d",argv[1],i);
+		dis_add_service( str[i], "C", str[i], strlen(str[i])+1, 
+			(void *)0, 0 );
+	}
+	t.i = 123;
+	t.j = 123;
+	t.k = 123;
+	t.d = 56.78;
+	t.s = 12;
+	t.t = 12;
+	t.c = 'a';
+	t.f = 4.56;
+	ptr = (int *)&t;
+	strcpy(t.str,"hello world");
+/*
+	sprintf(aux,"%s/TEST_SWAP",argv[1]);
+	id = dis_add_service( aux, "l:3;d:1;s:1;c:1;s:1;f:1;c:20", &t, sizeof(t), 
+		(void *)0, 0 );
+
+	sprintf(aux,"%s/TEST_CMD",argv[1]);
+	dis_add_cmnd(aux,"l:3;d:1;s:1;c:1;s:1;f:1;c:20",cmnd_rout, 0);
+*/
+/*
+	big_buff[0] = 1;
+	for(i = 0; i < 20; i++)
+	{
+		sprintf(aux,"%s/TestMem_%d",argv[1], i);
+		big_ids[i] = dis_add_service( aux, "I", big_buff, 1024*sizeof(int), 
+			(void *)0, 0 );
+	}
+*/
+	for(i = 0; i< 100000; i++)
+	{
+		ServMany[i] = i;
+		sprintf(straux,"%s/ServiceMany%05d",argv[1],i);
+		ServManyIds[i] = dis_add_service( straux, "D", &ServMany[i], sizeof(double), 
+			(void *)0, 0 );
+	}
+	dis_start_serving( argv[1] );
+	if(dis_get_client(name))
+	{
+		printf("client %s\n",name);
+	}
+	
+	dtq_start_timer(30, update_services, 0);
+	
+	while(1)
+	{
+/*
+		for(i = 0; i < 20; i++)
+		{
+			index++;
+			big_buff[0] = index;
+			dis_update_service(big_ids[i]);
+		}
+		sleep(1);
+*/
+		pause();
+/*
+		sleep(30);
+		update_services();
+*/
+	}
+}
+
+void update_services()
+{
+	int i;
+
+	dtq_start_timer(20, update_services, 0);
+	
+	dim_print_date_time();
+printf("Start updating\n");
+		for(i = 0; i< 100000; i++)
+		{
+			ServMany[i] = ServMany[i]+1;
+			dis_update_service(ServManyIds[i]);
+			if(i == 10000)
+			{
+				int aux;
+				aux = ServMany[i];
+				ServMany[i] = 123;
+				dis_update_service(ServManyIds[i]);
+				ServMany[i] = aux;
+			}
+		}
+dim_print_date_time();
+printf("Stop updating\n");
+}
+
Index: branches/testFACT++branch/dim/src/examples/test_server_priorities.c
===================================================================
--- branches/testFACT++branch/dim/src/examples/test_server_priorities.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/test_server_priorities.c	(revision 18277)
@@ -0,0 +1,189 @@
+#include <stdio.h>
+#include <dis.h>
+
+char str[10][80];
+
+typedef struct {
+	int i;
+	int j;
+	int k;
+	double d;
+	short s;
+	char c;
+	short t;
+	float f;
+	char str[20];
+}TT;
+
+TT t;
+
+void cmnd_rout(tag, buf, size)
+int *tag, *size;
+TT *buf;
+{
+int i,*ptr;
+
+	printf("Command received, size = %d, TT size = %d:\n", *size,
+	       sizeof(TT));
+	printf("buf->i = %d, buf->d = %2.2f, buf->s = %d, buf->c = %c, buf->f = %2.2f, buf->str = %s\n",
+			buf->i,buf->d,buf->s,buf->c,buf->f,buf->str);
+}
+
+void client_exited(tag)
+int *tag;
+{
+	char name[84];
+	char *ptr;
+
+	if(dis_get_client(name))
+		printf("Client %s (%d) exited\n", name, *tag);
+	else
+		printf("Client %d exited\n", *tag);
+}
+
+/*
+#ifdef WIN32
+#include <windows.h>
+#else
+#include <pthread.h>
+#endif
+
+#include <dic.h>
+
+void timr_rout(int tag)
+{
+	int code = 2004;
+#ifdef WIN32
+	DWORD id;
+	id = GetCurrentThreadId();
+#else
+	pthread_t id;
+	id = pthread_self();
+#endif
+	printf("in timr_rout, thread id = %d\n", id);
+	dic_cmnd_service("taskManager/sendKill", &code, sizeof(int));
+}
+
+void kill_rout(tag, buf, size)
+int *tag, *size;
+int *buf;
+{
+#ifdef WIN32
+	DWORD id;
+	id = GetCurrentThreadId();
+#else
+	pthread_t id;
+	id = pthread_self();
+#endif
+	printf("Command Kill received = %d\n", *buf);
+	printf("thread id = %d\n", id);
+	dim_set_priority(3, 1);
+}
+*/
+
+void exit_cmnd(code)
+int *code;
+{
+/*
+#ifdef WIN32
+	DWORD id;
+	id = GetCurrentThreadId();
+#else
+	pthread_t id;
+	id = pthread_self();
+#endif
+*/
+	printf("Exit_cmnd %d\n", *code);
+	exit(*code);
+/*
+	sleep(5);
+	printf("after_sleep, thread id = %d\n", id);
+	dim_set_priority(3, 60);
+	dtq_start_timer(5, timr_rout, 0);
+*/
+}
+
+main(argc,argv)
+int argc;
+char **argv;
+{
+	int i, j, id, *ptr;
+	char aux[80];
+	char name[84], *ptrc;
+
+	dis_add_exit_handler(exit_cmnd);
+	dis_add_client_exit_handler(client_exited);
+	for(i = 0; i< 10; i++)
+	{
+		sprintf(str[i],"%s/Service_%03d",argv[1],i);
+		dis_add_service( str[i], "C", str[i], strlen(str[i])+1, 
+			(void *)0, 0 );
+	}
+	t.i = 123;
+	t.j = 123;
+	t.k = 123;
+	t.d = 56.78;
+	t.s = 12;
+	t.t = 12;
+	t.c = 'a';
+	t.f = 4.56;
+	ptr = (int *)&t;
+	strcpy(t.str,"hello world");
+	
+	sprintf(aux,"%s/TEST_SWAP",argv[1]);
+	id = dis_add_service( aux, "l:3;d:1;s:1;c:1;s:1;f:1;c:20", &t, sizeof(t), 
+		(void *)0, 0 );
+
+	sprintf(aux,"%s/TEST_CMD",argv[1]);
+	dis_add_cmnd(aux,"l:3;d:1;s:1;c:1;s:1;f:1;c:20",cmnd_rout, 0);
+
+	dis_add_cmnd("taskManager/sendKill","I",kill_rout, 0);
+	dis_start_serving( argv[1] );
+/*
+	{	  
+	int prio = -1, ret, pclass = -1;
+	dim_get_scheduler_class(&pclass);
+	printf("Process class: %d\n",pclass);
+	dim_get_priority(1, &prio);
+	printf("Main Thread: %d\n",prio);
+	dim_get_priority(2, &prio);
+	printf("IO Thread: %d\n",prio);
+	dim_get_priority(3, &prio);
+	printf("Timer Thread: %d\n",prio);
+#ifndef WIN32
+	ret = dim_set_scheduler_class(2);
+	printf("ret = %d\n",ret);
+	ret = dim_set_priority(1, 20);
+	printf("ret = %d\n",ret);
+	ret = dim_set_priority(2, 50);
+	printf("ret = %d\n",ret);
+#endif
+	dim_get_scheduler_class(&pclass);
+	printf("Process class: %d\n",pclass);
+	dim_get_priority(1, &prio);
+	printf("Main Thread: %d\n",prio);
+	dim_get_priority(2, &prio);
+	printf("IO Thread: %d\n",prio);
+	dim_get_priority(3, &prio);
+	printf("Timer Thread: %d\n",prio);
+	}
+*/
+	if(dis_get_client(name))
+	{
+		printf("client %s\n",name);
+	}
+	
+	while(1)
+	{
+		pause();
+	}
+/*
+	sleep(5);
+	{
+	  int i;
+	  for(i = 0; i <= 999999999; i++);
+	}
+	printf("Normal Exit\n");
+*/
+}
+
Index: branches/testFACT++branch/dim/src/examples/test_server_slac.c
===================================================================
--- branches/testFACT++branch/dim/src/examples/test_server_slac.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/test_server_slac.c	(revision 18277)
@@ -0,0 +1,35 @@
+#include <stdio.h>
+#include <dis.h>
+#include <dic.h>
+
+char str[10][80];
+
+void rout( tag, buf, size )
+char *buf;
+int *tag, *size;
+{
+	printf("%s Received for Server %d\n", buf, *tag);
+}
+
+main(argc,argv)
+int argc;
+char **argv;
+{
+	char aux[80];
+	int n;
+
+	sscanf(argv[1], "%d", &n);
+	sprintf(aux,"TEST_SLAC/SRV%d",n);
+	sprintf(str[0], aux);
+	dis_add_service(aux, "C", str[0], strlen(str[0])+1, (void *)0, 0);
+	sprintf(aux,"TEST_SLAC/%d",n);
+	dis_start_serving(aux);
+	sprintf(aux,"TEST_SLAC/CLT%d",n);
+	dic_info_service( aux, TIMED, 60, 0, 0, rout, n,
+			  "No Link", 8 );
+	while(1)
+	{
+		pause();
+	}
+}
+
Index: branches/testFACT++branch/dim/src/examples/test_tcp.c
===================================================================
--- branches/testFACT++branch/dim/src/examples/test_tcp.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/examples/test_tcp.c	(revision 18277)
@@ -0,0 +1,191 @@
+#ifdef WIN32
+#define ioctl ioctlsocket
+
+#define closesock myclosesocket
+#define readsock recv
+#define writesock send
+
+#define EINTR WSAEINTR
+#define EADDRNOTAVAIL WSAEADDRNOTAVAIL
+#define EWOULDBLOCK WSAEWOULDBLOCK
+#define ECONNREFUSED WSAECONNREFUSED
+#define HOST_NOT_FOUND	WSAHOST_NOT_FOUND
+#define NO_DATA	WSANO_DATA
+
+#include <windows.h>
+#include <process.h>
+#include <io.h>
+#include <fcntl.h>
+#include <Winsock.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <stdio.h>
+#else
+#define closesock close
+#define readsock(a,b,c,d) read(a,b,c)
+
+#if defined(__linux__) && !defined (darwin)
+#define writesock(a,b,c,d) send(a,b,c,MSG_NOSIGNAL)
+#else
+#define writesock(a,b,c,d) write(a,b,c)
+#endif
+#include <ctype.h>
+#include <sys/socket.h>
+#include <fcntl.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+#include <signal.h>
+#include <sys/ioctl.h>
+#include <errno.h>
+#include <netdb.h>
+#include <unistd.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <signal.h>
+#endif
+
+#define ushort unsigned short
+#define TCP_RCV_BUF_SIZE	16384/*32768*//*65536*/
+#define TCP_SND_BUF_SIZE	16384/*32768*//*65536*/
+
+
+#ifdef WIN32
+int init_sock()
+{
+	WORD wVersionRequested;
+	WSADATA wsaData;
+	int err;
+	static int sock_init_done = 0;
+
+	if(sock_init_done) return(1);
+ 	wVersionRequested = MAKEWORD( 2, 0 );
+	err = WSAStartup( wVersionRequested, &wsaData );
+
+	if ( err != 0 ) 
+	{
+    	return(0);
+	}
+
+	/* Confirm that the WinSock DLL supports 2.0.*/
+	/* Note that if the DLL supports versions greater    */
+	/* than 2.0 in addition to 2.0, it will still return */
+	/* 2.0 in wVersion since that is the version we      */
+	/* requested.                                        */
+
+	if ( LOBYTE( wsaData.wVersion ) != 2 ||
+        HIBYTE( wsaData.wVersion ) != 0 ) 
+	{
+	    WSACleanup( );
+    	return(0); 
+	}
+	sock_init_done = 1;
+	return(1);
+}
+
+int myclosesocket(int path)
+{
+	int code, ret;
+	code = WSAGetLastError();
+	ret = closesocket(path);
+	WSASetLastError(code);
+	return ret;
+}
+#endif
+
+int tcp_open_client( char *node, int port )
+{
+	/* Create connection: create and initialize socket stuff. Try
+	 * and make a connection with the server.
+	 */
+	struct sockaddr_in sockname;
+	struct hostent *host;
+	int path, val, ret_code, ret;
+
+#ifdef WIN32
+	init_sock();
+#endif
+	if( (host = gethostbyname(node)) == (struct hostent *)0 ) 
+	{
+		return(0);
+	}
+
+	if( (path = socket(AF_INET, SOCK_STREAM, 0)) == -1 ) 
+	{
+		perror("socket");
+		return(0);
+	}
+
+	val = 1;
+      
+	if ((ret_code = setsockopt(path, IPPROTO_TCP, TCP_NODELAY, 
+			(char*)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set TCP_NODELAY\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+
+	val = TCP_SND_BUF_SIZE;      
+	if ((ret_code = setsockopt(path, SOL_SOCKET, SO_SNDBUF, 
+			(char*)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set SO_SNDBUF\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+
+	val = TCP_RCV_BUF_SIZE;
+	if ((ret_code = setsockopt(path, SOL_SOCKET, SO_RCVBUF, 
+			(char*)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set SO_RCVBUF\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+
+#if defined(__linux__) && !defined (darwin)
+	val = 2;
+	if ((ret_code = setsockopt(path, IPPROTO_TCP, TCP_SYNCNT, 
+			(char*)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set TCP_SYNCNT\n");
+#endif
+	}
+#endif
+
+	sockname.sin_family = PF_INET;
+	sockname.sin_addr = *((struct in_addr *) host->h_addr);
+	sockname.sin_port = htons((ushort) port); /* port number to send to */
+	while((ret = connect(path, (struct sockaddr*)&sockname, sizeof(sockname))) == -1 )
+	{
+		if(errno != EINTR)
+		{
+			closesock(path);
+			return(0);
+		}
+	}
+	return(path);
+}
+
+int tcp_write( int path, char *buffer, int size )
+{
+	/* Do a (synchronous) write to conn_id.
+	 */
+	int	wrote;
+
+	wrote = writesock( path, buffer, size, 0 );
+	if( wrote == -1 ) {
+		return(0);
+	}
+	return(wrote);
+}
Index: branches/testFACT++branch/dim/src/feeserver.c
===================================================================
--- branches/testFACT++branch/dim/src/feeserver.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/feeserver.c	(revision 18277)
@@ -0,0 +1,4443 @@
+ Return to feeserver.c CVS log    Up to [MAIN] / dcscvs / FeeServer / feeserver / src  
+
+--------------------------------------------------------------------------------
+File: [MAIN] / dcscvs / FeeServer / feeserver / src / feeserver.c (download) 
+Revision: 1.26, Wed May 7 14:08:13 2008 UTC (22 months ago) by dominik 
+Branch: MAIN 
+CVS Tags: d, HEAD, FeeServer_v0-9-4_RCU-v0-9-9-dev, FeeServer_v0-9-4_RCU-v0-9-8-dev, FeeServer_v0-9-4_RCU-v0-9-7-dev, FeeServer_v0-9-4_RCU-v0-9-6-dev, FeeServer_v0-9-4_RCU-v0-9-5-dev, FeeServer_v0-9-4_RCU-v0-9-4, FeeServer_v0-9-4_RCU-v0-9-14-dev, FeeServer_v0-9-4_RCU-v0-9-13-dev, FeeServer_v0-9-4_RCU-v0-9-12-dev, FeeServer_v0-9-4_RCU-v0-9-11-dev, FeeServer_v0-9-4_RCU-v0-9-10-dev 
+Changes since 1.25: +32 -16 lines 
+updated to core version 0.9.4
+
+ 
+
+--------------------------------------------------------------------------------
+
+/************************************************************************
+ **
+ **
+ ** This file is property of and copyright by the Department of Physics
+ ** Institute for Physic and Technology, University of Bergen,
+ ** Bergen, Norway.
+ ** In cooperation with Center for Technology Transfer and 
+ ** Telecommunication (ZTT), University of Applied Sciences Worms
+ ** Worms, Germany.
+ **
+ ** This file has been written by Sebastian Bablok,
+ ** Sebastian.Bablok@uib.no
+ **
+ ** Important: This file is provided without any warranty, including
+ ** fitness for any particular purpose. Further distribution of this file,
+ ** even with changes in the code, is only allowed, when this copyright
+ ** and warranty paragraph is kept unchanged and included to the sources. 
+ **
+ **
+ *************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>				// for pause() necessary
+#include <string.h>
+#include <dim/dis.h>				// dimserver library
+#include <math.h>				// for fabsf
+
+#include <time.h>				// time for threads
+#include <sys/time.h>			// for gettimeofday()
+#include <pthread.h>
+//#include <stdbool.h>			// included by fee_types.h
+#include <errno.h>      		// for the error numbers
+#include <signal.h>
+
+#include "fee_types.h"			// declaration of own datatypes
+#include "fee_functions.h"		// declaration of feeServer functions
+#include "fee_defines.h"		// declaration of all globaly used constants
+#include "feepacket_flags.h"	// declaration of flag bits in a feepacket
+#include "fee_errors.h"			// defines of error codes
+#include "ce_command.h"			//control engine header file
+
+#ifdef __UTEST
+#include "fee_utest.h"
+#endif
+
+/**
+ * @defgroup feesrv_core The FeeServer core
+ */
+
+//-- global variables --
+
+/**
+ * state of the server, possible states are: COLLECTING, RUNNING and ERROR_STATE.
+ * @ingroup feesrv_core
+ */
+static int state = COLLECTING;
+
+/**
+ * indicates, if CEReady has been signaled (used in backup solution of init watch dog).
+ * @ingroup feesrv_core
+ */
+static bool ceReadySignaled = false;
+
+/**
+ * Variable provides the init state of the CE.
+ * @ingroup feesrv_core
+ */
+static int ceInitState = CE_NOT_INIT; // CE_OK; this has changed in version 0.9.4
+
+/**
+ * pointer to the first ItemNode of the doubly linked list (float)
+ * @ingroup feesrv_core
+ */
+static ItemNode* firstNode = 0;
+
+/**
+ * pointer to the last ItemNode of the doubly linked list (float)
+ * @ingroup feesrv_core
+ */
+static ItemNode* lastNode = 0;
+
+/**
+ * The message struct providing the data for an event message.
+ * @ingroup feesrv_core
+ */
+static MessageStruct message;
+
+/**
+ * Stores the last send message over the message channel to compare it with
+ * a newly triggered messages.
+ * @ingroup feesrv_core
+ */
+static MessageStruct lastMessage;
+
+/**
+ * Counter for replication of log messages.
+ * @ingroup feesrv_core
+ */
+static unsigned short replicatedMsgCount = 0;
+
+/**
+ * Indicates if the watchdog for replicated log messages is running
+ * (true = running).
+ *
+ * @ingroup feesrv_core
+ */
+static bool logWatchDogRunning = false;
+
+/**
+ * Timeout for the watchdog of replicated log messages. After this time the
+ * hold back message will be sent for sure, if no other type of message has
+ * triggered its sending before (replicated messages are collected until
+ * either this timeout occurs or a different message is triggered. In the later
+ * case the hold back message is sent first).
+ *
+ * @ingroup feesrv_core
+ */
+static unsigned int logWatchDogTimeout = DEFAULT_LOG_WATCHDOG_TIMEOUT;
+
+/**
+ * Stores the number of added nodes to the item list (float).
+ * @ingroup feesrv_core
+ */
+static unsigned int nodesAmount = 0;
+
+/**
+ * Indicates if the float monitor thread for published items has been started
+ * (true = started).
+ *
+ * @ingroup feesrv_core
+ */
+static bool monitorThreadStarted = false;
+
+/**
+ * DIM-serviceID for the dedicated acknowledge-service
+ * @ingroup feesrv_core
+ */
+static unsigned int serviceACKID;
+
+/**
+ * DIM-serviceID for the dedicated message - service
+ * @ingroup feesrv_core
+ */
+static unsigned int messageServiceID;
+
+/**
+ * DIM-commandID
+ * @ingroup feesrv_core
+ */
+static unsigned int commandID;
+
+/**
+ * Pointer to acknowledge Data (used by the DIM-framework)
+ * @ingroup feesrv_core
+ */
+static char* cmndACK = 0;
+
+/**
+ * size of the acknowledge Data
+ * @ingroup feesrv_core
+ */
+static int cmndACKSize = 0;
+
+/**
+ * Name of the FeeServer
+ * @ingroup feesrv_core
+ */
+static char* serverName = 0;
+
+/**
+ * length of FeeServer name
+ * @ingroup feesrv_core
+ */
+static int serverNameLength = 0;
+
+/**
+ * Update rate, in which the whole Item-list should be checked for changes.
+ * This value is given in milliseconds.
+ * @ingroup feesrv_core
+ */
+static unsigned short updateRate = DEFAULT_UPDATE_RATE;
+
+/**
+ * Timeout for call of issue - the longest time a command can be executed by the CE,
+ * before the watch dog kills this thread. This value is given in milliseconds.
+ * @ingroup feesrv_core
+ */
+static unsigned long issueTimeout = DEFAULT_ISSUE_TIMEOUT;
+
+/**
+ * Stores the current log level for this FeeServer.
+ * In case that an environmental variable (FEE_LOG_LEVEL) tells the desired
+ * loglevel, the DEFAULT_LOGLEVEL is overwritten during init process.
+ * @ingroup feesrv_core
+ */
+static unsigned int logLevel = DEFAULT_LOGLEVEL;
+
+/**
+ * thread handle for the initialize thread
+ * @ingroup feesrv_core
+ */
+static pthread_t thread_init;
+
+/**
+ * thread handle for the monitoring thread (float list)
+ * @ingroup feesrv_core
+ */
+static pthread_t thread_mon;
+
+/**
+ * thread handle for the watchdog of replicated log messages.
+ * This watchdog checks, if there have been replicated log messages during a
+ * time period given by "replicatedLogMessageTimeout", which have been hold
+ * back. The content of these messages is then send including the number of
+ * how often this has been triggered and hold back.
+ * Afterwards the counter is set back to zero again and backup of the last
+ * send log message is cleared.
+ *
+ * @ingroup feesrv_core
+ */
+static pthread_t thread_logWatchdog;
+
+/**
+ * thread condition variable for the "watchdog" timer
+ * @ingroup feesrv_core
+ */
+static pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
+
+/**
+ * thread condition variable for the "initialisation complete" - signal
+ * @ingroup feesrv_core
+ */
+static pthread_cond_t init_cond = PTHREAD_COND_INITIALIZER;
+
+/**
+ * thread mutex variable for the "watchdog" in command handler
+ * @ingroup feesrv_core
+ */
+static pthread_mutex_t wait_mut = PTHREAD_MUTEX_INITIALIZER;
+
+/**
+ * thread mutex variable for the initialize CE thread
+ * @ingroup feesrv_core
+ */
+static pthread_mutex_t wait_init_mut = PTHREAD_MUTEX_INITIALIZER;
+
+/**
+ * thread mutex variable for the commandAck data
+ * @ingroup feesrv_core
+ */
+static pthread_mutex_t command_mut = PTHREAD_MUTEX_INITIALIZER;
+
+/**
+ * mutex to lock access to the logging function ( createLogMessage() )
+ * @ingroup feesrv_core
+ */
+static pthread_mutex_t log_mut = PTHREAD_MUTEX_INITIALIZER;
+
+
+////   --------- NEW FEATURE SINCE VERSION 0.8.1 (2007-06-12) ---------- /////
+
+/**
+ * pointer to the first IntItemNode of the doubly linked list (int)
+ * @ingroup feesrv_core
+ */
+static IntItemNode* firstIntNode = 0;
+
+/**
+ * pointer to the last IntItemNode of the doubly linked list (int)
+ * @ingroup feesrv_core
+ */
+static IntItemNode* lastIntNode = 0;
+
+/**
+ * Stores the number of added integer nodes to the IntItem list.
+ * @ingroup feesrv_core
+ */
+static unsigned int intNodesAmount = 0;
+
+/**
+ * thread handle for the monitoring thread (int - list)
+ * @ingroup feesrv_core
+ */
+static pthread_t thread_mon_int;
+
+/**
+ * Indicates if the int monitor thread for published IntItems has been started
+ * (true = started).
+ *
+ * @ingroup feesrv_core
+ */
+static bool intMonitorThreadStarted = false;
+
+
+////    ------------- NEW Memory Management (2007-07-25) ----------------- ////
+
+/**
+ * pointer to the first MemoryNode of the doubly linked list (memory management)
+ * @ingroup feesrv_core
+ */
+static MemoryNode* firstMemoryNode = 0;
+
+/**
+ * pointer to the last MemoryNode of the doubly linked list (memory management)
+ * @ingroup feesrv_core
+ */
+static MemoryNode* lastMemoryNode = 0;
+
+
+/// ---- NEW FEATURE SINCE VERSION 0.8.2b [Char Channel] (2007-07-28) ----- ///
+
+/**
+ * Stores the number of added Character item nodes to the CharItem list.
+ * @ingroup feesrv_core
+ */
+static unsigned int charNodesAmount = 0;
+
+/**
+ * pointer to the first CharItemNode of the doubly linked list (char)
+ * @ingroup feesrv_core
+ */
+static CharItemNode* firstCharNode = 0;
+
+/**
+ * pointer to the last CharItemNode of the doubly linked list (char)
+ * @ingroup feesrv_core
+ */
+static CharItemNode* lastCharNode = 0;
+
+
+
+//-- Main --
+
+/**
+ * Main of FeeServer.
+ * This programm represents the DIM-Server running on the DCS-boards.
+ * It uses the DIM-Server-Library implemented by C. Gaspar from Cern.
+ *
+ * @author Christian Kofler, Sebastian Bablok
+ *
+ * @date 2003-04-24
+ *
+ * @update 2004-11-22 (and many more dates ...)
+ *
+ * @version 0.8.1
+ * @ingroup feesrv_core
+ */
+int main(int argc, char** arg) {
+	//-- only for unit tests
+#	ifdef __UTEST
+	// insert here the testfunction-calls
+	testFrameWork();
+	return 0;
+#	endif
+
+	// now here starts the real stuff
+	initialize();
+	// test server (functional test)
+	while (1) {
+		// maybe do some checks here, like:
+		// - monitoring thread is still in good state
+		// - CE is still in good state
+		// - everything within the FeeServer is OK (assertions?)
+		pause();
+	}
+	return 0;
+}
+
+
+void initialize() {
+	//-- Declaring variables --
+	struct timeval now;
+	struct timespec timeout;
+	pthread_attr_t attr;
+	int nRet;
+	int status;
+	int initState  = FEE_CE_NOTINIT;
+	char* name = 0;
+	char* dns = 0;
+	bool initOk = true;
+	unsigned int envVal = 0;
+	char msg[250];
+	int restartCount = 0;
+
+	//-- register interrupt handler (CTRL-C)
+	// not used yet, causes problems
+//	if (signal(SIGINT, interrupt_handler) == SIG_ERR) {
+//#		ifdef __DEBUG
+//		printf("Unable to register interrupt handler.\n");
+//		printf("This is not fatal -> continuing.\n");
+//#		endif
+//	}
+
+	//-- get name of the server --
+	name = getenv("FEE_SERVER_NAME");
+	if (name == 0) {
+#		ifdef __DEBUG
+		printf("No FEE_SERVER_NAME \n");
+#		endif
+		exit(202);
+	}
+
+	serverName = (char*) malloc(strlen(name) + 1);
+	if (serverName == 0) {
+		//no memory available!
+#		ifdef __DEBUG
+		printf("no memory available while trying to create server name!\n");
+#		endif
+		exit(201);
+	}
+	strcpy(serverName, name);
+	serverNameLength = strlen(serverName);
+
+	//-- test, if DIM_DNS_NODE is specified
+	dns = getenv("DIM_DNS_NODE");
+	if (dns == 0) {
+#		ifdef __DEBUG
+		printf("No DIM_DNS_NODE specified. \n");
+#		endif
+		exit(203);
+	}
+
+	// set the desired log level, if provided
+	if (getenv("FEE_LOG_LEVEL")) {
+		sscanf(getenv("FEE_LOG_LEVEL"), "%d", &envVal);
+		if ((envVal < 0) || (envVal > MSG_MAX_VAL)) {
+#		    ifdef __DEBUG
+			printf("Environmental variable has invalid Log Level, using default instead.\n");
+		   	fflush(stdout);
+#			endif
+		} else {
+			logLevel = envVal | MSG_ALARM;
+		}
+	}
+
+	// set logWatchDogTimeout, if env variable "FEE_LOGWATCHDOG_TIMEOUT" is set
+    if (getenv("FEE_LOGWATCHDOG_TIMEOUT")) {
+        sscanf(getenv("FEE_LOGWATCHDOG_TIMEOUT"), "%d", &envVal);
+        if ((envVal <= 0) || (envVal > MAX_TIMEOUT)) {
+#           ifdef __DEBUG
+            printf("Environmental variable has invalid LogWatchDog Timeout, using default instead.\n");
+            fflush(stdout);
+#           endif
+        } else {
+            logWatchDogTimeout = envVal;
+        }
+    }
+
+	// get restart counter
+	if (getenv("FEESERVER_RESTART_COUNT")) {
+		restartCount = atoi(getenv("FEESERVER_RESTART_COUNT"));
+	}
+
+	// Initial printout
+# 	ifdef __DEBUG
+	printf("\n  **  FeeServer version %s  ** \n\n", FEESERVER_VERSION);
+	printf("FeeServer name: %s\n", serverName);
+	printf("Using DIM_DNS_NODE: %s\n", dns);
+#   ifdef __BENCHMARK
+    printf(" -> Benchmark version of FeeServer <- \n");
+#	endif
+	printf("Current log level is: %d (MSG_ALARM (%d) is always on)\n", logLevel, MSG_ALARM);
+	printf("Restart Count is: %d; Restart-Env is: %s\n", restartCount, 
+			getenv("FEESERVER_RESTART_COUNT"));
+#	endif
+
+	//set dummy exit_handler to disable framework exit command, returns void
+	dis_add_exit_handler(&dim_dummy_exit_handler);
+
+	//set error handler to catch DIM framework messages
+	dis_add_error_handler(&dim_error_msg_handler);
+
+	// to ensure that signal is in correct state before init procedure
+	ceReadySignaled = false;
+
+	// lock mutex
+	status = pthread_mutex_lock(&wait_init_mut);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Lock init mutex error: %d\n", status);
+		fflush(stdout);
+#		endif
+		initOk = false;
+	} else {
+		// initiailisation of thread attribute only if mutex has been locked
+		status = pthread_attr_init(&attr);
+		if (status != 0) {
+#			ifdef __DEBUG
+			printf("Init attribute error: %d\n", status);
+			fflush(stdout);
+#			endif
+			initOk = false;
+		} else {
+			status = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+			if (status != 0) {
+#				ifdef __DEBUG
+				printf("Set attribute error: %d\n", status);
+				fflush(stdout);
+#				endif
+				initOk = false;
+			}
+		}
+	}
+
+	if (initOk == true) {
+		// call only if initOk == true,
+		status = pthread_create(&thread_init, &attr, (void*) &threadInitializeCE, 0);
+		if (status != 0) {
+#			ifdef __DEBUG
+			printf("Create thread error: %d\n", status);
+			fflush(stdout);
+#			endif
+			initState = FEE_CE_NOTINIT;
+		} else {
+#			ifdef __DEBUG // for debugging the time amount the watchdog really waits (START)
+			time_t initStartTime = time(NULL);
+#			endif //__DEBUG
+
+			// timeout set in ms, should be enough for initialisation; see fee_defines.h for current value
+			status = gettimeofday(&now, 0);
+			if ((status != 0) || (restartCount <= 0)) {
+				// backup solution for detetcting end of init process
+#				ifdef __DEBUG
+				printf("Get time of day error: %d or restartCount <= 0 (%d), using backup solution\n",
+						status, restartCount);
+				fflush(stdout);
+#				endif
+				// unlock mutex to enable functionality of signalCEReady
+				status = pthread_mutex_unlock(&wait_init_mut);
+#				ifdef __DEBUG
+				if (status != 0) {
+					printf("Unlock mutex error: %d\n", status);
+					fflush(stdout);
+				}
+#				endif
+				// sleep init-timeout length
+				usleep((TIMEOUT_INIT_CE_MSEC * 1000)); // sleep the microsec fraction
+
+				const int sleepFraction = 1; // to check ready signal each second
+				int sleepLoops = TIMEOUT_INIT_CE_SEC / sleepFraction;
+				int cycles = 0;
+				do {
+					dtq_sleep(sleepFraction);
+					if (ceReadySignaled) {
+						break;
+					}
+				} while ( cycles++ < sleepLoops);
+//				dtq_sleep(TIMEOUT_INIT_CE_SEC);  // old style without check each second
+
+				if (ceReadySignaled == false) {
+					status = pthread_cancel(thread_init);
+#					ifdef __DEBUG
+					if (status != 0) {
+						printf("No thread to cancel: %d\n", status);
+						fflush(stdout);
+					}
+#					endif
+					// start with "the CE is not initialized!"
+					initState = FEE_CE_NOTINIT;
+#					ifdef __DEBUG
+					printf("Timeout in init [sleep]: %d\n", initState);
+					fflush(stdout);
+#					endif
+				} else {
+					if (ceInitState != CE_OK) {
+						// init failed, but no timeout occured
+						// (insufficient memory, etc. ... or something else)
+#						ifdef __DEBUG
+						printf("Init of CE failed, error: %d\n", ceInitState);
+						fflush(stdout);
+#						endif
+						initState = FEE_CE_NOTINIT;
+					} else {
+						// start with "everything is fine"
+						initState = FEE_OK;
+#						ifdef __DEBUG
+						printf("Init OK\n");
+						fflush(stdout);
+#						endif
+					}
+				}
+			} else {
+				timeout.tv_sec = now.tv_sec + TIMEOUT_INIT_CE_SEC;
+				timeout.tv_nsec = (now.tv_usec * 1000) +
+						(TIMEOUT_INIT_CE_MSEC * 1000000);
+
+				// wait for finishing "issue" or timeout after the mutex is unlocked
+				// a retcode of 0 means, that pthread_cond_timedwait has returned
+				// with the cond_init signaled
+				status = pthread_cond_timedwait(&init_cond, &wait_init_mut, &timeout);
+				// -- start FeeServer depending on the state of the CE --
+				if (status != 0) {
+					status = pthread_cancel(thread_init);
+#					ifdef __DEBUG
+					if (status != 0) {
+						printf("No thread to cancel: %d\n", status);
+						fflush(stdout);
+					}
+#					endif
+					// start with "the CE is not initialized!"
+					initState = FEE_CE_NOTINIT;
+#					ifdef __DEBUG
+					printf("Timeout in init [timed_wait]: %d\n", initState);
+					fflush(stdout);
+#					endif
+				} else {
+					if (ceInitState != CE_OK) {
+						// init failed, but no timeout occured
+						// (insufficient memory, etc. ... or something else)
+#						ifdef __DEBUG
+						printf("Init of CE failed, error: %d\n", ceInitState);
+						fflush(stdout);
+#						endif
+						initState = FEE_CE_NOTINIT;
+					} else {
+						// start with "everything is fine"
+						initState = FEE_OK;
+#						ifdef __DEBUG
+						printf("Init OK\n");
+						fflush(stdout);
+#						endif
+					}
+				}
+			}
+#			ifdef __DEBUG  // for debugging the time amout the watchdog waits (STOP)
+			time_t initStopTime = time(NULL);
+			if (initState != FEE_OK) {
+				printf("Watchdog: CE init tread\n   started %s",
+						ctime(&initStartTime));
+				printf("   killed  %s\n", ctime(&initStopTime));
+				// don't put this into one printf line -
+				// ctime or printf doe not work correct then, why?
+				fflush(stdout);
+			} else {
+				printf("Watchdog: CE init tread\n   started  %s", 
+						ctime(&initStartTime));
+				printf("   finished %s\n", ctime(&initStopTime)); 
+				// don't put this into one printf line - 
+				// ctime or printf doe not work correct then, why?
+				fflush(stdout);
+			}
+#			endif //__DEBUG
+		}
+		// destroy thread attribute
+		status = pthread_attr_destroy(&attr);
+#		ifdef __DEBUG
+		if (status != 0) {
+			printf("Destroy attribute error: %d\n", status);
+			fflush(stdout);
+		}
+#		endif
+	}
+
+	// init message struct -> FeeServer name, version and DNS are also provided
+	initMessageStruct();
+
+	if (initState != FEE_OK) {
+		// remove all services of Items of ItemList
+#		ifdef __DEBUG
+		printf("Init failed, unpublishing item list\n");
+		fflush(stdout);
+#		endif
+		unpublishItemList();
+		// new since version 0.8.1 -> int channels
+		unpublishIntItemList();
+        // new since version 0.8.2b -> char channels
+        unpublishCharItemList();
+	}
+
+	// add div. services and the command channel and then start DIM server
+	nRet = start(initState);
+
+	// unlock mutex
+	status = pthread_mutex_unlock(&wait_init_mut);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Unlock mutex error: %d\n", status);
+		fflush(stdout);
+#		endif
+		if (nRet == FEE_OK) {
+			createLogMessage(MSG_WARNING, "Unable to unlock init mutex.", 0);
+		}
+	}
+
+	if (nRet != FEE_OK) {
+#		ifdef __DEBUG
+		printf("unable to start DIM server, exiting.\n");
+		fflush(stdout);
+#		endif
+		fee_exit_handler(205);
+	} else {
+#		ifdef __DEBUG
+		printf("DIM Server successfully started, ready to accept commands.\n");
+		fflush(stdout);
+#		endif
+	}
+
+#	ifdef __DEBUG
+	printf("DEBUG - Init-State: %d, CE-State: %d, Restart-Env: %s, RestartCount: %d.\n",
+				initState, ceInitState, getenv("FEESERVER_RESTART_COUNT"), restartCount);
+	fflush(stdout);
+#	endif
+
+	// test for failed init of CE and init restart counter,
+	// counter counts backwards: only if counter > 0 restart is triggerd
+	if ((initState != FEE_OK) && (getenv("FEESERVER_RESTART_COUNT")) &&
+			(restartCount > 0)) {
+		msg[sprintf(msg,
+				"Triggering a FeeServer restart to give CE init another try. Restart count (backward counter): %d ",
+				restartCount)] = 0;
+		createLogMessage(MSG_WARNING, msg, 0);
+#		ifdef __DEBUG
+		printf("Triggering a FeeServer restart for another CE init try (backward count: %d).\n",
+				restartCount);
+		fflush(stdout);
+#		endif
+		// small sleep, that DIM is able to send log messages before restart
+		dtq_sleep(1);
+		// trigger restart to give it another try for the CE to init
+		triggerRestart(FEE_EXITVAL_TRY_INIT_RESTART);
+		// NOTE this function won't return ...
+	}
+	// look through watchdog and backup solution about ceInitState and check it again !!!
+	// afterwards the following line won't be necessary !!!
+	// needed later in information about properties !!!
+//	ceInitState = initState;
+
+	return;
+}
+
+
+void threadInitializeCE() {
+	int status = -1;
+	status = pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, 0);
+	// if cancelation is not able, it won't hurt ?!
+#	ifdef __DEBUG
+	if (status != 0) {
+		printf("Set cancel state (init) error: %d\n", status);
+		fflush(stdout);
+	}
+#	endif
+
+	status = pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, 0);
+	// if cancelation is not able, it won't hurt ?!
+#	ifdef __DEBUG
+	if (status != 0) {
+		printf("Set cancel type (init) error: %d\n", status);
+		fflush(stdout);
+	}
+#	endif
+
+	// Here starts the actual CE
+	initializeCE();
+
+	// not necessary, return 0 is better
+//	pthread_exit(0);
+	return;
+
+}
+
+
+void signalCEready(int ceState) {
+	int status = -1;
+
+	// set cancel type to deferred
+	status = pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, 0);
+#   ifdef __DEBUG
+	if (status != 0) {
+		printf("Set cancel type error: %d\n", status);
+	    fflush(stdout);
+	}
+#   endif
+
+	//lock the mutex before broadcast
+	status = pthread_mutex_lock(&wait_init_mut);
+#	ifdef __DEBUG
+	if (status != 0) {
+		printf("Lock mutex error: %d\n", status);
+		fflush(stdout);
+	}
+#	endif
+
+	// provide init state of CE
+	ceInitState = ceState;
+
+	//signal that CE has completed initialisation
+	// maybe try the call pthread_cond_signal instead for performance
+	pthread_cond_broadcast(&init_cond);
+
+	// set variable for backup solution
+	ceReadySignaled = true;
+
+	// unlock mutex
+	status = pthread_mutex_unlock(&wait_init_mut);
+#	ifdef __DEBUG
+	if (status != 0) {
+		printf("Unlock mutex error: %d\n", status);
+		fflush(stdout);
+	}
+#	endif
+
+    // set cancel type to asyncroneous
+    status = pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, 0);
+#   ifdef __DEBUG
+    if (status != 0) {
+        printf("Set cancel type error: %d\n", status);
+		fflush(stdout);
+    }
+#   endif
+}
+
+
+// -- Command handler routine --
+void command_handler(int* tag, char* address, int* size) {
+	struct timeval now;
+	struct timespec timeout;
+	int retcode  = -1;
+	int status = -1;
+	pthread_t thread_handle;
+	pthread_attr_t attr;
+	IssueStruct issueParam;
+	CommandHeader header;
+	char* pHeaderStream = 0;
+	MemoryNode* memNode = 0;
+	bool useMM = false;
+
+#ifdef __BENCHMARK
+	char benchmsg[200];
+	// make benchmark entry
+	if ((size != 0 ) && (*size >= 4)) {
+		benchmsg[sprintf(benchmsg,
+				"FeeServer CommandHandler (Received command) - Packet-ID: %d",
+				*address)] = 0;
+		createBenchmark(benchmsg);
+	} else {
+		createBenchmark("FeeServer CommandHandler (Received command)");
+	}
+#endif
+
+	// init struct
+	initIssueStruct(&issueParam);
+
+	issueParam.nRet = FEE_UNKNOWN_RETVAL;
+
+	// check state (ERROR state is allowed for FeeServer commands, not CE)
+	if ((state != RUNNING) && (state != ERROR_STATE)) {
+		return;
+	}
+
+	// lock command mutex to save command &ACK data until it is send
+	// and only one CE-Thread exists at one time
+	status = pthread_mutex_lock(&command_mut);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Lock command mutex error: %d\n", status);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_WARNING, "Unable to lock command mutex.", 0);
+	}
+
+	if ((tag == 0) || (address == 0) || (size == 0)) {
+		leaveCommandHandler(0, FEE_NULLPOINTER, MSG_WARNING,
+ 				"Received null pointer of DIM framework in command handler.");
+		return;
+	}
+
+	if (*size < HEADER_SIZE) {
+		leaveCommandHandler(0, FEE_INVALID_PARAM, MSG_WARNING,
+ 				"FeeServer received corrupted command.");
+		return;
+	}
+
+#	ifdef __DEBUG
+	printf(" Cmnd - Size: %d\n", *size);
+	fflush(stdout);
+#	endif
+
+	//-- storing the header information in struct --
+	memcpy(&header.id, address, HEADER_SIZE_ID);
+	memcpy(&header.errorCode, address + HEADER_OFFSET_ID, HEADER_SIZE_ERROR_CODE);
+	memcpy(&header.flags, address + HEADER_OFFSET_ERROR_CODE, HEADER_SIZE_FLAGS);
+	memcpy(&header.checksum, address + HEADER_OFFSET_FLAGS, HEADER_SIZE_CHECKSUM);
+
+	// --------------------- Check Flags --------------------------
+	if ((header.flags & HUFFMAN_FLAG) != 0) {
+		//-- do Huffmann decoding if flag is set --
+		// not implemented yet !!!
+	}
+
+	issueParam.size = *size - HEADER_SIZE;
+	issueParam.command = (address + HEADER_SIZE);
+	// !!! if Huffman decoding necessary, think about memory management ???
+
+	if ((header.flags & CHECKSUM_FLAG) != 0) {
+		//-- do checksum test if flag is set --
+		if (!checkCommand(issueParam.command, issueParam.size, header.checksum)) {
+			// -- checksum failed - notification
+			leaveCommandHandler(header.id, FEE_CHECKSUM_FAILED, MSG_WARNING,
+ 					"FeeServer received corrupted command data (checksum failed).");
+			return;
+		}
+	}
+
+	// -- here start the Commands for the FeeServer itself --
+	if ((header.flags & FEESERVER_UPDATE_FLAG) != 0) {
+#ifdef ENABLE_MASTERMODE
+		updateFeeServer(&issueParam);
+#else
+		createLogMessage(MSG_WARNING, "FeeServer is not authorized to execute shell programs, skip ...", 0);
+#endif //ENABLE_MASTERMODE
+		// this is only reached, if update has not been sucessful
+		issueParam.nRet = FEE_FAILED;
+		issueParam.size = 0;
+	} else if ((header.flags & FEESERVER_RESTART_FLAG) != 0) {
+		restartFeeServer();
+	} else if ((header.flags & FEESERVER_REBOOT_FLAG) != 0) {
+		createLogMessage(MSG_INFO, "Rebooting DCS board.", 0);
+		system("reboot");
+		exit(0);
+	} else if ((header.flags & FEESERVER_SHUTDOWN_FLAG) != 0) {
+		createLogMessage(MSG_INFO, "Shuting down DCS board.", 0);
+		system("poweroff");
+		exit(0);
+	} else if ((header.flags & FEESERVER_EXIT_FLAG) != 0) {
+		fee_exit_handler(0);
+	} else if ((header.flags & FEESERVER_SET_DEADBAND_FLAG) != 0) {
+		issueParam.nRet = setDeadband(&issueParam);
+	} else if ((header.flags & FEESERVER_GET_DEADBAND_FLAG) != 0) {
+		issueParam.nRet = getDeadband(&issueParam);
+	} else if ((header.flags & FEESERVER_SET_ISSUE_TIMEOUT_FLAG) != 0) {
+		issueParam.nRet = setIssueTimeout(&issueParam);
+	} else if ((header.flags & FEESERVER_GET_ISSUE_TIMEOUT_FLAG) != 0) {
+		issueParam.nRet = getIssueTimeout(&issueParam);
+	} else if ((header.flags & FEESERVER_SET_UPDATERATE_FLAG) != 0) {
+		issueParam.nRet = setUpdateRate(&issueParam);
+	} else if ((header.flags & FEESERVER_GET_UPDATERATE_FLAG) != 0) {
+		issueParam.nRet = getUpdateRate(&issueParam);
+	} else if ((header.flags & FEESERVER_SET_LOGLEVEL_FLAG) != 0) {
+		issueParam.nRet = setLogLevel(&issueParam);
+	} else if ((header.flags & FEESERVER_GET_LOGLEVEL_FLAG) != 0) {
+		issueParam.nRet = getLogLevel(&issueParam);
+	} else {
+		// commands for CE are not allowed in ERROR state
+		if (state == ERROR_STATE) {
+			leaveCommandHandler(header.id, FEE_WRONG_STATE, MSG_ERROR,
+ 					"FeeServer is in ERROR_STATE, ignoring command for CE!");
+			return;
+		}
+
+		// packet with no flags in header and no payload makes no sense
+		if (issueParam.size == 0) {
+			leaveCommandHandler(header.id, FEE_INVALID_PARAM, MSG_WARNING,
+ 					"FeeServer received empty command.");
+			return;
+		}
+
+		// lock mutex
+		status = pthread_mutex_lock(&wait_mut);
+		if (status != 0) {
+			leaveCommandHandler(header.id, FEE_THREAD_ERROR, MSG_ERROR,
+ 					"Unable to lock condition mutex for watchdog.");
+			return;
+		}
+
+		status = pthread_attr_init(&attr);
+		if (status != 0) {
+			unlockIssueMutex();
+			leaveCommandHandler(header.id, FEE_THREAD_ERROR, MSG_ERROR,
+ 					"Unable to initialize issue thread.");
+			return;
+		}
+
+		status = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+		if (status != 0) {
+			unlockIssueMutex();
+			leaveCommandHandler(header.id, FEE_THREAD_ERROR, MSG_ERROR,
+ 					"Unable to initialize issue thread.");
+			return;
+		}
+
+		status = pthread_create(&thread_handle, &attr, &threadIssue, (void*) &issueParam);
+		if (status != 0) {
+			unlockIssueMutex();
+			leaveCommandHandler(header.id, FEE_THREAD_ERROR, MSG_ERROR,
+ 					"Unable to create issue thread.");
+			return;
+		}
+
+		status = pthread_attr_destroy(&attr);
+		if (status != 0) {
+#			ifdef __DEBUG
+			printf("Destroy attribute error: %d\n", status);
+			fflush(stdout);
+#			endif
+			createLogMessage(MSG_WARNING,
+					"Unable to destroy thread attribute.", 0);
+		}
+
+		// timeout set in ms, see fee_defines.h for current value
+		status = gettimeofday(&now, 0);
+		if (status == 0) {
+			// issueTimeout is in milliseconds:
+			// get second-part with dividing by 1000
+			timeout.tv_sec = now.tv_sec + (int) (issueTimeout / 1000);
+			// get rest of division by 1000 (which is milliseconds)
+			// and make it nanoseconds
+			timeout.tv_nsec = (now.tv_usec * 1000) +
+										((issueTimeout % 1000) * 1000000);
+
+			// wait for finishing "issue" or timeout, if signal has been sent
+			// retcode is 0 !
+			// this is the main logic of the watchdog for the CE of the FeeServer
+			retcode = pthread_cond_timedwait(&cond, &wait_mut, &timeout);
+#			ifdef __DEBUG
+			printf("Retcode of CMND timedwait: %d\n", retcode);
+			fflush(stdout);
+#			endif
+
+			// check retcode to detect and handle Timeout
+			if (retcode == ETIMEDOUT) {
+#				ifdef __DEBUG
+				printf("ControlEngine watchdog detected TimeOut.\n");
+				fflush(stdout);
+#				endif
+				createLogMessage(MSG_WARNING,
+						"ControlEngine watch dog noticed a time out for last command.", 0);
+
+				// kill not finished thread. no problem if this returns an error
+				pthread_cancel(thread_handle);
+				// setting errorCode to "a timout occured"
+				issueParam.nRet = FEE_TIMEOUT;
+				issueParam.size = 0;
+			} else if (retcode != 0) {
+				// "handling" of other error than timeout
+#				ifdef __DEBUG
+				printf("ControlEngine watchdog detected unknown error.\n");
+				fflush(stdout);
+#				endif
+				createLogMessage(MSG_WARNING,
+						"ControlEngine watch dog received an unknown for last command.", 0);
+
+				// kill not finished thread. no problem if this returns an error
+				pthread_cancel(thread_handle);
+				// setting errorCode to "a thread error occured"
+				issueParam.nRet = FEE_THREAD_ERROR;
+				issueParam.size = 0;
+			}
+
+		} else {
+#			ifdef __DEBUG
+			printf("Get time of day error: %d\n", status);
+			fflush(stdout);
+#			endif
+			createLogMessage(MSG_WARNING,
+				"Watchdog timer could not be initialized. Using non-reliable sleep instead.",
+				0);
+			// release mutex to avoid hang up in issueThread before signaling condition
+			unlockIssueMutex();
+			// watchdog with condition signal could not be used, because gettimeofday failed.
+			// sleeping instead for usual amount of time and trying to cancel thread aftterwards.
+			usleep(issueTimeout * 1000);
+			status = pthread_cancel(thread_handle);
+			// if thread did still exist something went wrong -> "timeout" (== 0)
+			if (status == 0) {
+#				ifdef __DEBUG
+				printf("TimeOut occured.\n");
+#				endif
+				createLogMessage(MSG_WARNING,
+						"ControlEngine issue did not return in time.", 0);
+				issueParam.nRet = FEE_TIMEOUT;
+				issueParam.size = 0;
+			}
+		}
+
+		unlockIssueMutex();
+	}
+	//--- end of CE call area --------------------
+
+	// ---------- start to compose result -----------------
+#	ifdef __DEBUG
+	printf("Issue-nRet: %d\n", issueParam.nRet);
+	fflush(stdout);
+#	endif
+	// check return value of issue
+	if ((issueParam.nRet < FEE_UNKNOWN_RETVAL) ||
+			(issueParam.nRet > FEE_MAX_RETVAL)) {
+		issueParam.nRet = FEE_UNKNOWN_RETVAL;
+		createLogMessage(MSG_DEBUG,
+				"ControlEngine [command] returned unkown RetVal.", 0);
+	}
+
+// start here with new memory management check for ACK
+	// check if old ACK data is in MemoryNode list and free it
+	if ((cmndACKSize > HEADER_SIZE) && (findMemoryNode(cmndACK + HEADER_SIZE) != 0)) {
+		memNode = findMemoryNode(cmndACK + HEADER_SIZE);
+		freeMemoryNode(memNode);
+	} else { // free cmndACK in original way
+		if (cmndACK != 0) {
+			free(cmndACK);
+			cmndACK = 0;
+		}
+	}
+
+	// check if new result data is in MemoryNode list
+	memNode = findMemoryNode(issueParam.result);
+	if (memNode != 0) {
+		cmndACK = memNode->ptr;
+		useMM = true;
+	} else {
+		// create Acknowledge as return value of command
+		// HEADER_SIZE bytes are added before result to insert the command
+		// header before the result -> see CommandHeader in Client for details
+		cmndACK = (char*) malloc(issueParam.size + HEADER_SIZE);
+	}
+
+	if (cmndACK == 0) {
+		//no memory available!
+#		ifdef __DEBUG
+		printf("no memory available!\n");
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_ERROR, "Insufficient memory for ACK.", 0);
+
+		// no ACK because no memory!
+		cmndACKSize = 0;
+		status = pthread_mutex_unlock(&command_mut);
+		if (status != 0) {
+#			ifdef __DEBUG
+			printf("Lock command mutex error: %d\n", status);
+			fflush(stdout);
+#			endif
+			createLogMessage(MSG_WARNING,
+					"Error while trying to unlock command mutex.", 0);
+		}
+		return;
+	}
+
+#	ifdef __DEBUG
+	if (issueParam.size > 0) {
+//		printf("in cmnd-Handler -> issue result: ");
+//		printData(issueParam.result, 0, issueParam.size);
+//		fflush(stdout);
+	}
+#	endif
+
+	// checks checksumflag and calculates it if necessary
+	if ((header.flags & CHECKSUM_FLAG) != 0) {
+		header.checksum = calculateChecksum((unsigned char*) issueParam.result,
+					issueParam.size);
+		// !!! Do (Huffman- ) encoding, if wished afterwards.
+	} else {
+		header.checksum = CHECKSUM_ZERO;
+	}
+
+	// keep the whole flags also for the result packet
+	header.errorCode = (short) issueParam.nRet;
+#	ifdef __DEBUG
+	printf("ErrorCode in Header: %d\n", header.errorCode);
+	fflush(stdout);
+#	endif
+
+	pHeaderStream = marshallHeader(&header);
+	memcpy((void*) cmndACK, (void*) pHeaderStream, HEADER_SIZE);
+	if (pHeaderStream != 0) {
+		free(pHeaderStream);
+	}
+
+	if (useMM) {
+	  /*
+#		ifdef __DEBUG
+		printf("ACK channel used with MemoryManagement in FeeServer.\n");
+		fflush(stdout);
+		createLogMessage(MSG_DEBUG,
+				"ACK channel used with MemoryManagement in FeeServer.", 0);
+#		endif
+	  */
+	} else {
+		memcpy(((void*) cmndACK + HEADER_SIZE), (void*) issueParam.result,
+				issueParam.size);
+	}
+
+	//store the size of the result globally
+	cmndACKSize = issueParam.size + HEADER_SIZE;
+	// propagate change of ACK(nowledge channel) to upper Layers
+	dis_update_service(serviceACKID);
+
+#	ifdef __DEBUG
+	// -- see the cmndACK as a char - string
+	printf("ACK \n");
+//	printData(cmndACK, HEADER_SIZE, cmndACKSize);
+	// -- see the cmndACK in a HEX view for the ALTRO
+	//print_package(cmndACK + HEADER_SIZE);
+#	endif
+
+	if ((!useMM) && (issueParam.result != 0)) {
+		free(issueParam.result);
+	}
+// end of new stuff for memory managment.
+
+/*
+	if (cmndACK != 0) {
+		free(cmndACK);
+		cmndACK = 0;
+	}
+	// create Acknowledge as return value of command
+	// HEADER_SIZE bytes are added before result to insert the command
+	// header before the result -> see CommandHeader in Client for details
+	cmndACK = (char*) malloc(issueParam.size + HEADER_SIZE);
+	if (cmndACK == 0) {
+		//no memory available!
+#		ifdef __DEBUG
+		printf("no memory available!\n");
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_ERROR, "Insufficient memory for ACK.", 0);
+
+		// no ACK because no memory!
+		cmndACKSize = 0;
+		status = pthread_mutex_unlock(&command_mut);
+		if (status != 0) {
+#			ifdef __DEBUG
+			printf("Lock command mutex error: %d\n", status);
+			fflush(stdout);
+#			endif
+			createLogMessage(MSG_WARNING,
+					"Error while trying to unlock command mutex.", 0);
+		}
+		return;
+	}
+
+#	ifdef __DEBUG
+	if (issueParam.size > 0) {
+//		printf("in cmnd-Handler -> issue result: ");
+//		printData(issueParam.result, 0, issueParam.size);
+//		fflush(stdout);
+	}
+#	endif
+
+	// checks checksumflag and calculates it if necessary
+	if ((header.flags & CHECKSUM_FLAG) != 0) {
+		header.checksum = calculateChecksum((unsigned char*) issueParam.result,
+					issueParam.size);
+		// !!! Do (Huffman- ) encoding, if wished afterwards.
+	} else {
+		header.checksum = CHECKSUM_ZERO;
+	}
+
+	// keep the whole flags also for the result packet
+	header.errorCode = (short) issueParam.nRet;
+#	ifdef __DEBUG
+	printf("ErrorCode in Header: %d\n", header.errorCode);
+	fflush(stdout);
+#	endif
+
+	pHeaderStream = marshallHeader(&header);
+	memcpy((void*) cmndACK, (void*) pHeaderStream, HEADER_SIZE);
+	if (pHeaderStream != 0) {
+		free(pHeaderStream);
+	}
+	memcpy(((void*) cmndACK + HEADER_SIZE), (void*) issueParam.result,
+				issueParam.size);
+
+	//store the size of the result globally
+	cmndACKSize = issueParam.size + HEADER_SIZE;
+	// propagate change of ACK(nowledge channel) to upper Layers
+	dis_update_service(serviceACKID);
+
+#	ifdef __DEBUG
+	// -- see the cmndACK as a char - string
+	printf("ACK \n");
+//	printData(cmndACK, HEADER_SIZE, cmndACKSize);
+	// -- see the cmndACK in a HEX view for the ALTRO
+	//print_package(cmndACK + HEADER_SIZE);
+#	endif
+
+	if (issueParam.result != 0) {
+		free(issueParam.result);
+	}
+
+*/
+
+
+	// unlock command mutex, data has been sent
+	status = pthread_mutex_unlock(&command_mut);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Lock command mutex error: %d\n", status);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_WARNING,
+				"Error while trying to unlock command mutex.", 0);
+	}
+}
+
+
+//-- user_routine to provide the ACK-data
+void ack_service(int* tag, char** address, int* size) {
+#ifdef __BENCHMARK
+	char benchmsg[200];
+#endif
+
+	if ((tag == 0) || (*tag != ACK_SERVICE_TAG)) {
+#		ifdef __DEBUG
+		printf("invalid ACK Service\n");
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_WARNING, "DIM Framework called wrong ACK channel.",
+				0);
+		return;
+	}
+// use the line below for checking flags of an outgoing feePacket!
+//        printf("\nack_service was called flags are:%x%x\n", *(cmndACK+6), *(cmndACK+7));
+	if ((cmndACKSize > 0) && (cmndACK != 0)) {
+		*address = cmndACK;
+		*size = cmndACKSize;
+	} else {
+		*size = 0;
+	}
+#ifdef __BENCHMARK
+    // make benchmark entry
+	benchmsg[sprintf(benchmsg,
+			"FeeServer AckHandler (sending ACK) - Packet-ID: %d", *cmndACK)] = 0;
+    createBenchmark(benchmsg);
+#endif
+
+}
+
+
+void leaveCommandHandler(unsigned int id, short errorCode,
+			unsigned int msgType, char* message) {
+	int status = -1;
+
+#	ifdef __DEBUG
+	printf("%s\n", message);
+	fflush(stdout);
+#	endif
+
+	createLogMessage(msgType, message, 0);
+
+	// tell client that command is ignored
+	if (cmndACK != 0) {
+		free(cmndACK);
+		cmndACK = 0;
+	}
+	// send error code
+	cmndACK = createHeader(id, errorCode, false, false, 0);
+	cmndACKSize = HEADER_SIZE;
+	dis_update_service(serviceACKID);
+
+	// unlock command mutex to "free" commandHandler
+	status = pthread_mutex_unlock(&command_mut);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Lock command mutex error: %d\n", status);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_WARNING,
+				"Error while trying to unlock command mutex.", 0);
+	}
+}
+
+
+void unlockIssueMutex() {
+	int status = -1;
+
+	status = pthread_mutex_unlock(&wait_mut);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Unlock condition mutex error: %d. Going in ERROR state!\n", status);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_ALARM,
+			"Unable to unlock watchdog mutex. No more commands will be possible for CE. Going in ERROR state!",
+			0);
+		state = ERROR_STATE;
+	}
+}
+
+
+//-- publish-function called by CE (Control Engine) to declare Float - Items
+int publish(Item* item) {
+	unsigned int id;
+	char* serviceName = 0;
+
+	// check for right state
+	if (state != COLLECTING) {
+		return FEE_WRONG_STATE;
+	}
+
+	// Testing for NULL - Pointer
+	// !! Attention: if pointer is not initialized and also NOT set to NULL, this won't help !!
+	if (item == 0) {
+#		ifdef __DEBUG
+		printf("Bad item, not published\n");
+		fflush(stdout);
+#		endif
+		return FEE_NULLPOINTER;
+	}
+	if (item->name == 0 || item->location == 0) {
+#		ifdef __DEBUG
+		printf("Bad item, not published\n");
+		fflush(stdout);
+#		endif
+		return FEE_NULLPOINTER;
+	}
+
+	// Check name for duplicate here (float)
+	if (findItem(item->name) != 0) {
+#		ifdef __DEBUG
+		printf("Item name already published (float), new float item discarded.\n");
+		fflush(stdout);
+#		endif
+		return FEE_ITEM_NAME_EXISTS;
+	}
+	// Check in INT list
+	if (findIntItem(item->name) != 0) {
+#		ifdef __DEBUG
+		printf("Item name already published (int), float item discarded.\n");
+		fflush(stdout);
+#		endif
+		return FEE_ITEM_NAME_EXISTS;
+	}
+    // Check in Char service list
+    if (findCharItem(item->name) != 0) {
+#       ifdef __DEBUG
+        printf("Item name already published in char list, float item discarded.\n");
+        fflush(stdout);
+#       endif
+        return FEE_ITEM_NAME_EXISTS;
+    }
+
+	// -- add item as service --
+	serviceName = (char*) malloc(serverNameLength + strlen(item->name) + 2);
+	if (serviceName == 0) {
+		return FEE_INSUFFICIENT_MEMORY;
+	}
+	// terminate string with '\0'
+	serviceName[sprintf(serviceName, "%s_%s", serverName, item->name)] = 0;
+	id = dis_add_service(serviceName, "F", (int*) item->location,
+			sizeof(float), 0, 0);
+	free(serviceName);
+	add_item_node(id, item);
+
+	return FEE_OK;
+}
+
+
+//-- function to add service to our servicelist
+void add_item_node(unsigned int _id, Item* _item) {
+	//create new node with enough memory
+	ItemNode* newNode = 0;
+
+	newNode = (ItemNode*) malloc(sizeof(ItemNode));
+	if (newNode == 0) {
+		//no memory available!
+#		ifdef __DEBUG
+		printf("no memory available while adding itemNode!\n");
+#		endif
+		// !!! unable to run FeeServer, write msg in kernel logger !!! (->Tobias)
+		cleanUp();
+		exit(201);
+	}
+	//initialize "members" of node
+	newNode->prev = 0;
+	newNode->next = 0;
+	newNode->id = _id;
+	newNode->item = _item;
+	newNode->lastTransmittedValue = *(_item->location);
+	//if default deadband is negative -> set threshold 0, otherwise set half of defaultDeadband
+	newNode->threshold = (_item->defaultDeadband < 0) ? 0.0 : (_item->defaultDeadband / 2);
+ /*
+		if(_item->defaultDeadband < 0) {
+		newNode->threshold = 0.0;
+        } else {
+		newNode->threshold = _item->defaultDeadband / 2;
+	}
+*/
+	newNode->locBackup = _item->location;
+	newNode->checksum = calculateChecksum((unsigned char*) &(_item->location),
+			sizeof(volatile float*));
+	newNode->checksumBackup = newNode->checksum;
+
+#ifdef __DEBUG
+	// complete debug display of added Item
+/*
+	printf("Item: %d\n", _id);
+	printf("location: %f, locBackup %f\n", *(_item->location), *(newNode->locBackup));
+	printf("location addr: %p, locBackup addr %p\n", _item->location, newNode->locBackup);
+	printf("checksum1: %d, checksum2: %d\n\n", newNode->checksum,
+			newNode->checksumBackup);
+*/
+#endif
+
+#	ifdef __DEBUG
+	// short debug display of added Item
+	printf("init of %s with ID %d: %f\n", newNode->item->name, newNode->id,
+				newNode->lastTransmittedValue);
+	fflush(stdout);
+#	endif
+
+	++nodesAmount;
+	//redirect pointers of doubly linked list
+	if (firstNode != 0) {
+		lastNode->next = newNode;
+		newNode->prev = lastNode;
+		lastNode = newNode;
+	} else {
+		firstNode = newNode;
+		lastNode = newNode;
+	}
+}
+
+
+//-- Logging function -----
+void createLogMessage(unsigned int type, char* description, char* origin) {
+	int status = -1; // for mutex
+	int descLength = 0;
+	int originLength = 0;
+	time_t timeVal;
+	struct tm* now = 0;
+
+	// check if not in COLLECTING state
+	if (state == COLLECTING) {
+		return; // no log channel available at that time
+	}
+
+	//lock access with mutex due to the fact that FeeServer & CE can use it
+	status = pthread_mutex_lock(&log_mut);
+	// discard eventual error, this would cause more problems
+	// in each case, do NOT call createLogMessage ;) !
+#	ifdef __DEBUG
+	if (status != 0) {
+		printf("Lock log mutex error: %d\n", status);
+		fflush(stdout);
+	}
+#	endif
+
+	if (!checkLogLevel(type)) {   //if not -> unlock mutex -> return
+		//unlock mutex
+		status = pthread_mutex_unlock(&log_mut);
+		// discard eventual error, this would cause more problems
+		// in each case, do NOT call createLogMessage ;)
+#		ifdef __DEBUG
+		if (status != 0) {
+			printf("Unlock log mutex error: %d\n", status);
+			fflush(stdout);
+		}
+#		endif
+		return;
+	}
+
+	// check if message is a replicate of the last log message
+	if ((logWatchDogRunning) && (strncmp(description, lastMessage.description,
+				(MSG_DESCRIPTION_SIZE - 1)) == 0)) {
+		replicatedMsgCount++;
+
+		//unlock mutex
+        status = pthread_mutex_unlock(&log_mut);
+        // discard eventual error, this would cause more problems
+        // in each case, do NOT call createLogMessage ;)
+#       ifdef __DEBUG
+        if (status != 0) {
+            printf("Unlock log mutex error: %d\n", status);
+            fflush(stdout);
+        }
+#       endif
+		// message is a replicate of last message, leave Messenger
+        return;
+	} else {
+		// message is not a replicate of last one send,
+		// check if replicated log messages are pending
+		if (checkReplicatedLogMessage()) {
+			// sleep a small amount to let Dim update channel
+//			usleep(1000);
+		}
+	}
+
+	// prepare data (cut off overlength)
+	if (description != 0) {
+		// limit description to maximum of field in message struct if longer
+		descLength = ((strlen(description) >= MSG_DESCRIPTION_SIZE)
+				? (MSG_DESCRIPTION_SIZE - 1) : strlen(description));
+	}
+	if (origin != 0) {
+		// limit origin to maximum of field in message struct if longer
+		// be aware that "source" also contains server name and a slash
+		originLength = ((strlen(origin) >= MSG_SOURCE_SIZE - serverNameLength - 1)
+				? (MSG_SOURCE_SIZE - serverNameLength - 2) : strlen(origin));
+	}
+
+	//set type
+	message.eventType = type;
+	//set detector
+	memcpy(message.detector, LOCAL_DETECTOR, MSG_DETECTOR_SIZE);
+	//set origin
+	strcpy(message.source, serverName);
+	if (origin != 0) {
+		// append slash
+		strcpy(message.source + serverNameLength, "/");
+		// append origin maximum til end of source field in message struct
+		strncpy(message.source + serverNameLength + 1, origin, originLength);
+		// terminate with '\0'
+		message.source[serverNameLength + 1 + originLength] = 0;
+	}
+	//set description
+	if (description != 0) {
+		// fill description field of message struct maximum til end
+		strncpy(message.description, description, descLength);
+		// terminate with '\0'
+		message.description[descLength] = 0;
+	} else {
+		strcpy(message.description, "No description specified.");
+	}
+	//set current date and time
+	time(&timeVal);
+	now = localtime(&timeVal);
+	message.date[strftime(message.date, MSG_DATE_SIZE, "%Y-%m-%d %H:%M:%S",
+				now)] = 0;
+
+	//updateService
+	dis_update_service(messageServiceID);
+
+	// copy send message to storage of last message
+	lastMessage = message;
+
+	//unlock mutex
+	status = pthread_mutex_unlock(&log_mut);
+	// discard eventual error, this would cause more problems
+	// in each case, do NOT call createLogMessage ;)
+#	ifdef __DEBUG
+	if (status != 0) {
+		printf("Unlock log mutex error: %d\n", status);
+		fflush(stdout);
+	}
+#	endif
+}
+
+bool checkLogLevel(int event) {
+	// Comparision with binary AND, if result has 1 as any digit, event is
+	// included in current logLevel
+	if ((logLevel & event) != 0) {
+		return true;
+	}
+	return false;
+}
+
+void dim_error_msg_handler(int severity, int error_code, char* msg) {
+	char type[8];
+	int eventType = 0;
+	char message[MSG_DESCRIPTION_SIZE];
+	int length = 0;
+
+	// map severity to own log levels
+	switch (severity) {
+		case 0:
+			type[sprintf(type, "INFO")] = 0;
+			eventType = MSG_INFO;
+			break;
+		case 1:
+			type[sprintf(type, "WARNING")] = 0;
+			eventType = MSG_WARNING;
+			break;
+		case 2:
+			type[sprintf(type, "ERROR")] = 0;
+			eventType = MSG_ERROR;
+			break;
+		case 3:
+			type[sprintf(type, "FATAL")] = 0;
+			eventType = MSG_ERROR;
+			break;
+		default :
+			type[sprintf(type, "UNKNOWN")] = 0;
+			eventType = MSG_WARNING;
+			break;
+	}
+
+#   ifdef __DEBUG
+	// print to command line if wanted
+	printf("DIM: [%s - %d] - %d: %s.\n", type, severity, error_code, msg);
+	fflush(stdout);
+#	endif
+
+	// send message only if FeeServer is in serving or error state
+	if ((state == RUNNING) || (state == ERROR_STATE)) {
+		// put DIM error code in front of message
+		message[sprintf(message, "%s: ", mapDimErrorCodes(error_code))] = 0;
+		length = strlen(message);
+		strncpy((message + length), msg, (MSG_DESCRIPTION_SIZE - length - 1));
+		message[MSG_DESCRIPTION_SIZE - 1] = 0;
+		// deliver message to FeeServer message system
+		createLogMessage(eventType, message, "DIM\0");
+	}
+}
+
+char* mapDimErrorCodes(int errorCode) {
+	switch (errorCode) {
+		case (0x1): return "DIMDNSUNDEF";
+		case (0x2): return "DIMDNSREFUS";
+		case (0x3): return "DIMDNSDUPLC";
+		case (0x4): return "DIMDNSEXIT ";
+		case (0x5): return "DIMDNSTMOUT";
+
+		case (0x10): return "DIMSVCDUPLC";
+		case (0x11): return "DIMSVCFORMT";
+		case (0x12): return "DIMSVCINVAL";
+		case (0x13): return "DIMSVCTOOLG";
+
+		case (0x20): return "DIMTCPRDERR";
+		case (0x21): return "DIMTCPWRRTY";
+		case (0x22): return "DIMTCPWRTMO";
+		case (0x23): return "DIMTCPLNERR";
+		case (0x24): return "DIMTCPOPERR";
+		case (0x25): return "DIMTCPCNERR";
+		case (0x26): return "DIMTCPCNEST";
+
+		case (0x30): return "DIMDNSCNERR";
+		case (0x31): return "DIMDNSCNEST";
+
+		default: return "DIMUNKWNERR";
+	}
+}
+
+//-- tells the server, that he can start serving;
+//-- no services can be added when server is in state RUNNING
+int start(int initState) {
+	int nRet = FEE_UNKNOWN_RETVAL;
+	char* serviceName = 0;
+	char* messageName = 0;
+	char* commandName = 0;
+	char msgStructure[50];
+
+	if (state == COLLECTING) {
+		//----- add service for acknowledge -----
+		serviceName = (char*) malloc(serverNameLength + 13);
+		if (serviceName == 0) {
+			//no memory available!
+#			ifdef __DEBUG
+			printf("no memory available while trying to create ACK channel!\n");
+			fflush(stdout);
+#			endif
+			// !!! unable to run FeeServer, write msg in kernel logger !!! (-> Tobias)
+			cleanUp();
+			exit(201);
+		}
+		// compose ACK channel name and terminate with '\0'
+		serviceName[sprintf(serviceName, "%s_Acknowledge", serverName)] = 0;
+		if (cmndACK != 0) {
+			free(cmndACK);
+			cmndACK = 0;
+		}
+		// take created header
+		cmndACK = createHeader(0, initState, false, false, 0);
+		cmndACKSize = HEADER_SIZE;
+		// add ACK channel as service to DIM
+		serviceACKID = dis_add_service(serviceName, "C", 0, 0, &ack_service,
+				ACK_SERVICE_TAG);
+		free(serviceName);
+
+		//----- add message service -----
+		messageName = (char*) malloc(serverNameLength + 9);
+		if (messageName == 0) {
+			//no memory available!
+#			ifdef __DEBUG
+			printf("no memory available while trying to create message channel!\n");
+			fflush(stdout);
+#			endif
+			// !!! unable to run FeeServer, write msg in kernel logger !!! (->Tobias)
+			cleanUp();
+			exit(201);
+		}
+		// compose message channel name and terminate with '\0'
+		messageName[sprintf(messageName, "%s_Message", serverName)] = 0;
+		// compose message structure
+		msgStructure[sprintf(msgStructure, "I:1;C:%d;C:%d;C:%d;C:%d",
+				MSG_DETECTOR_SIZE, MSG_SOURCE_SIZE, MSG_DESCRIPTION_SIZE,
+				MSG_DATE_SIZE)] = 0;
+		// add message channel as service to DIM
+		messageServiceID = dis_add_service(messageName, msgStructure, (int*) &message,
+				sizeof(unsigned int) + MSG_DETECTOR_SIZE + MSG_SOURCE_SIZE +
+				MSG_DESCRIPTION_SIZE + MSG_DATE_SIZE, 0, 0);
+		free(messageName);
+
+		//----- before start serving we add the only command handled by the server -----
+		commandName = (char*) malloc(serverNameLength + 9);
+		if (commandName == 0) {
+			//no memory available!
+#			ifdef __DEBUG
+			printf("no memory available while trying to create CMD channel!\n");
+			fflush(stdout);
+#			endif
+			// !!! unable to run FeeServer, write msg in kernel logger !!! (->Tobias)
+			cleanUp();
+			exit(201);
+		}
+		// compose Command channel name and terminate with '\0'
+		commandName[sprintf(commandName, "%s_Command", serverName)] = 0;
+		// add CMD channel as command to DIM, no tag needed,
+		// only one command possible
+		commandID = dis_add_cmnd(commandName, "C", &command_handler, 0);
+		free(commandName);
+
+		//-- now start serving --
+		if (dis_start_serving(serverName) == 1) {
+			// if start server was successful
+			if (initState == FEE_OK) {
+				state = RUNNING;
+				// start monitoring thread now
+				nRet = startMonitorThread();
+				if (nRet != FEE_OK) {
+#					ifdef __DEBUG
+					printf("Could NOT start monitor thread, error: %d\n", nRet);
+					fflush(stdout);
+#					endif
+					createLogMessage(MSG_ERROR,
+							"Unable to start monitor thread on FeeServer.", 0);
+					return nRet;
+				}
+				// inform CE about update rate
+				provideUpdateRate();
+				createLogMessage(MSG_INFO,
+						"FeeServer started correctly, including monitor thread.", 0);
+				nRet = FEE_OK;
+			} else {
+				state = ERROR_STATE;
+				createLogMessage(MSG_ERROR,
+						"Initialisation of ControlEngine failed. FeeServer is running in ERROR state (without CE).",
+						0);
+				// starting itself worked, so nRet is OK
+				nRet = FEE_OK;
+			}
+			// start "relicated log messages" watchdog now
+			nRet = startLogWatchDogThread();
+            if (nRet != FEE_OK) {
+#               ifdef __DEBUG
+                printf("Could NOT start log watch dog thread, error: %d; FeeServer will run without it.\n",
+						nRet);
+                fflush(stdout);
+#               endif
+                createLogMessage(MSG_WARNING,
+                        "Can not start LogWatchDog thread (filters replicated MSGs). Uncritical error - running without it.",
+						 0);
+            }
+		} else {
+			// starting server was not successful, so remove added core - services
+			// so they can be added again by next start() - call
+			dis_remove_service(serviceACKID);
+			free(cmndACK);
+			cmndACK = 0;
+			cmndACKSize = 0;
+			dis_remove_service(messageServiceID);
+			dis_remove_service(commandID);
+			nRet = FEE_FAILED;
+		}
+		return nRet;
+	}
+	//server is already running
+	return FEE_OK;
+}
+
+// ****************************************
+// ---- starts the monitoring thread ----
+// ****************************************
+int startMonitorThread() {
+	int status = -1;
+	pthread_attr_t attr;
+
+	// when item lists are empty, no monitor threads are needed
+	if ((nodesAmount == 0) && (intNodesAmount == 0)) {
+		createLogMessage(MSG_INFO,
+				"No Items (float and int) for monitoring are available.", 0);
+		return FEE_OK;
+	}
+
+	// init thread attribut and set it
+	status = pthread_attr_init(&attr);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Init attribute error [mon]: %d\n", status);
+		fflush(stdout);
+#		endif
+		return FEE_MONITORING_FAILED;
+	}
+	status = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Set attribute error [mon]: %d\n", status);
+		fflush(stdout);
+#		endif
+		return FEE_MONITORING_FAILED;
+	}
+
+	// start the monitor thread for float values
+	if (nodesAmount > 0) {
+		status = pthread_create(&thread_mon, &attr, (void*)&monitorValues, 0);
+		if (status != 0) {
+#			ifdef __DEBUG
+			printf("Create thread error [mon - float]: %d\n", status);
+			fflush(stdout);
+#			endif
+			return FEE_MONITORING_FAILED;
+		}
+	}
+
+	//start the monitor thread for int values --> NEW v.0.8.1
+	if (intNodesAmount > 0) {
+		status = pthread_create(&thread_mon_int, &attr, (void*)&monitorIntValues, 0);
+		if (status != 0) {
+#			ifdef __DEBUG
+			printf("Create thread error [mon - int]: %d\n", status);
+			fflush(stdout);
+#			endif
+			return FEE_MONITORING_FAILED;
+		}
+	}
+
+	// cleanup attribut
+	status = pthread_attr_destroy(&attr);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Destroy attribute error [mon]: %d\n", status);
+		fflush(stdout);
+#		endif
+		// no error return value necessary !
+	}
+	return FEE_OK;
+}
+
+// --- this is the monitoring thread ---
+void monitorValues() {
+	int status = -1;
+	int nRet;
+	unsigned long sleepTime = 0;
+	ItemNode* current = 0;
+	char msg[120];
+    unsigned long innerCounter = 0; // used for update check after time interval
+    unsigned long outerCounter = 0; // used for update check after time interval
+
+	// set flag, that monitor thread has been started
+	monitorThreadStarted = true;
+
+	// set cancelation type
+	status = pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, 0);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Set cancel state error [mon - float]: %d\n", status);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_WARNING,
+			"Unable to configure monitor thread (float) properly. Monitoring is not affected.", 0);
+	}
+	status = pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, 0);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Set cancel type error [mon - float]: %d\n", status);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_WARNING,
+			"Unable to configure monitor thread (float) properly. Monitoring is not affected.", 0);
+	}
+
+	createLogMessage(MSG_DEBUG, "Started monitor thread for FLOAT values successfully.", 0);
+
+	while (1) {
+		current = firstNode;
+		sleepTime = (unsigned long) (updateRate / nodesAmount);
+		while (current != 0) { // is lastNode->next (end of list)
+ 			if (!checkLocation(current)) {
+				msg[sprintf(msg, "Value of item %s (float) is corrupt, reconstruction failed. Ignoring!",
+						current->item->name)] = 0;
+				createLogMessage(MSG_ERROR, msg, 0);
+				// message and do some stuff (like invalidate value)
+				// (test, what happens if pointer is redirected ???)
+			} else {
+				if ((fabsf((*(current->item->location)) - current->lastTransmittedValue)
+						>= current->threshold) || (outerCounter ==
+						(innerCounter * TIME_INTERVAL_MULTIPLIER))) {
+					nRet = dis_update_service(current->id);
+					current->lastTransmittedValue = *(current->item->location);
+#					ifdef __DEBUG
+					//printf("Updated %d clients for service %s [float]: %f\n", nRet,
+					//		current->item->name, *(current->item->location));
+					//fflush(stdout);
+#					endif
+				}
+			}
+
+			++innerCounter;
+			current = current->next;
+			usleep(sleepTime * 1000);
+			// sleeps xy microseconds, needed milliseconds-> "* 1000"
+		}
+		// with the check of both counter, each service is at least updated after
+		// every (deadband updateRate * nodesAmount) seconds
+		innerCounter = 0;
+		++outerCounter;
+		// after every service in list is updated set counter back to 0
+		// the TIME_INTERVAL_MULTIPLIER is used to enlarge the time interval of
+		// the request of services without touching the deadband checker updateRate
+		if (outerCounter >= (nodesAmount * TIME_INTERVAL_MULTIPLIER)) {
+			outerCounter = 0;
+		}
+	}
+	// should never be reached !
+	pthread_exit(0);
+}
+
+// checks against bitflips in location
+bool checkLocation(ItemNode* node) {
+	if (node->item->location == node->locBackup) {
+		// locations are identical, so no bitflip
+		return true;
+	}
+	// locations are not identical, check further
+
+	if (node->checksum == calculateChecksum((unsigned char*)
+			&(node->item->location), sizeof(volatile float*))) {
+		// checksum tells, that first location should be valid, repair backup
+		node->locBackup = node->item->location;
+		return true;
+	}
+	// original location or first checksum is wrong, continue checking
+
+	if (node->checksum == calculateChecksum((unsigned char*)
+			&(node->locBackup), sizeof(volatile float*))) {
+		// checksum tells, that location backup should be valid, repair original
+		node->item->location = node->locBackup;
+		return true;
+	}
+	// location backup or first checksum is wrong, continue checking
+
+	if (node->checksum == node->checksumBackup) {
+		// it seems that location and location backup are wrong
+		// or checksum value runs banana, not repairable
+		return false;
+	}
+	// it seems that first checksum is wrong
+	// try to fix with second checksum
+
+	if (node->checksumBackup == calculateChecksum((unsigned char*)
+			&(node->item->location), sizeof(volatile float*))) {
+		// checksum backup tells, that first location should be valid, repair backup
+		node->locBackup = node->item->location;
+		// repair first checksum
+		node->checksum = node->checksumBackup;
+		return true;
+	}
+	// original location or second checksum is wrong, continue checking
+
+	if (node->checksumBackup == calculateChecksum((unsigned char*)
+			&(node->locBackup), sizeof(volatile float*))) {
+		// checksum backup tells, that location backup should be valid, repair original
+		node->item->location = node->locBackup;
+		// repair checksum
+		node->checksum = node->checksumBackup;
+		return true;
+	}
+	// value is totally banana, no chance to fix
+	return false;
+}
+
+// ****************************************
+// ---- starts the LogWatchdog Thread  ----
+// ****************************************
+int startLogWatchDogThread() {
+    int status = -1;
+    pthread_attr_t attr;
+
+    // init thread attribut and set it
+    status = pthread_attr_init(&attr);
+    if (status != 0) {
+#       ifdef __DEBUG
+        printf("Init attribute error [LogWatchDog]: %d\n", status);
+        fflush(stdout);
+#       endif
+        return FEE_THREAD_ERROR;
+    }
+    status = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+    if (status != 0) {
+#       ifdef __DEBUG
+        printf("Set attribute error [LogWatchDog]: %d\n", status);
+        fflush(stdout);
+#       endif
+        return FEE_THREAD_ERROR;
+    }
+
+    // start the LogWatchDog thread
+    status = pthread_create(&thread_logWatchdog, &attr, (void*) &runLogWatchDog,
+		0);
+    if (status != 0) {
+#       ifdef __DEBUG
+        printf("Create thread error [LogWatchDog]: %d\n", status);
+        fflush(stdout);
+#       endif
+        return FEE_THREAD_ERROR;
+    }
+
+    // cleanup attribut
+    status = pthread_attr_destroy(&attr);
+    if (status != 0) {
+#       ifdef __DEBUG
+        printf("Destroy attribute error [LogWatchDog]: %d\n", status);
+        fflush(stdout);
+#       endif
+        // no error return value necessary !
+    }
+
+	return FEE_OK;
+}
+
+void runLogWatchDog() {
+	int status = -1;
+	unsigned int sleepSec = 0;
+	unsigned int sleepMilliSec = 0;
+
+    // set cancelation type
+    status = pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, 0);
+    if (status != 0) {
+#       ifdef __DEBUG
+        printf("Set cancel state error [LogWatchDog]: %d\n", status);
+        fflush(stdout);
+#       endif
+        createLogMessage(MSG_WARNING,
+            "Can not set cancel state for LogWatchDog thread. WatchDog should not not be affected.",
+			0);
+    }
+    status = pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, 0);
+    if (status != 0) {
+#       ifdef __DEBUG
+        printf("Set cancel type error [LogWatchDog]: %d\n", status);
+        fflush(stdout);
+#       endif
+        createLogMessage(MSG_WARNING,
+            "Can not set cancel type for LogWatchDog thread. WatchDog should not not be affected.",
+			0);
+    }
+
+    // thread started successfully, set flag accordingly
+    logWatchDogRunning = true;
+    createLogMessage(MSG_DEBUG,
+            "LogWatchDog thread for filtering replicated log messages successfully started.",
+            0);
+#   ifdef __DEBUG
+    printf("LogWatchDog thread for filtering replicated log messages successfully started.\n");
+    fflush(stdout);
+#   endif
+
+	while (1) {
+		// before test for replicated messages lock mutex,
+		// DON'T call createLogMessage() inside mutex lock
+    	status = pthread_mutex_lock(&log_mut);
+    	// discard eventual error, this would cause more problems
+#   	ifdef __DEBUG
+    	if (status != 0) {
+        	printf("Lock log mutex error: %d\n", status);
+        	fflush(stdout);
+    	}
+#   	endif
+
+		// perform check here
+		checkReplicatedLogMessage();
+
+		// release mutex
+        status = pthread_mutex_unlock(&log_mut);
+        // discard eventual error, this would cause more problems
+#       ifdef __DEBUG
+        if (status != 0) {
+            printf("Unlock log mutex error: %d\n", status);
+            fflush(stdout);
+        }
+#       endif
+
+		// set cancelation point
+		pthread_testcancel();
+		// prepare sleep time (timeout)
+		sleepSec = logWatchDogTimeout / 1000;
+		sleepMilliSec = logWatchDogTimeout % 1000;
+		usleep(sleepMilliSec * 1000);
+		dtq_sleep(sleepSec);
+		// set cancelation point
+		pthread_testcancel();
+	}
+
+	// should never be reached !
+	pthread_exit(0);
+}
+
+bool checkReplicatedLogMessage() {
+	int tempLength = 0;
+	time_t timeVal;
+	struct tm* now = 0;
+
+	// check if replicated messages are pending
+	if (replicatedMsgCount > 0) {
+        // replicated messages occured in between, informing upper layer ...
+        message.description[sprintf(message.description,
+                "Log message repeated %d times: ", replicatedMsgCount)] = 0;
+        // append original message as far as possible
+        tempLength = strlen(message.description);
+		if ((strlen(lastMessage.description) + tempLength) >=
+				MSG_DESCRIPTION_SIZE) {
+            // copy only a part of the original message that fits in the
+            // description field
+            strncpy((message.description + tempLength), lastMessage.description,
+                    (MSG_DESCRIPTION_SIZE - tempLength));
+            message.description[MSG_DESCRIPTION_SIZE - 1] = 0;
+        } else {
+            // enough space free, copy the whole original message
+            strcpy((message.description + tempLength),
+                    lastMessage.description);
+            message.description[strlen(lastMessage.description) +
+                    tempLength - 1] = 0;
+        }
+		// set correct timestamp
+        time(&timeVal);
+		now = localtime(&timeVal);
+		message.date[strftime(message.date, MSG_DATE_SIZE, "%Y-%m-%d %H:%M:%S",
+				now)] = 0;
+
+        //update MsgService with notification of repeated messages
+        dis_update_service(messageServiceID);
+        // clearing counter
+        replicatedMsgCount = 0;
+		return true;
+    }
+	return false;
+}
+
+void* threadIssue(void* threadParam) {
+	IssueStruct* issueParam = (IssueStruct*) threadParam;
+	int status;
+
+	status = pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, 0);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Set cancel state error: %d\n", status);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_WARNING,
+			"Unable to configure issue thread properly. Execution might eventually be affected.", 0);
+	}
+
+	status = pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, 0);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Set cancel type error error: %d\n", status);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_WARNING,
+			"Unable to configure issue thread properly. Execution might eventually be affected.", 0);
+	}
+
+	// executing command inside CE
+	issueParam->nRet = issue(issueParam->command, &(issueParam->result), &(issueParam->size));
+
+    //set cancel type to deferred
+    status = pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, 0);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Set cancel type error: %d\n", status);
+		fflush(stdout);
+#	   endif
+		createLogMessage(MSG_WARNING,
+			"Unable to configure issue thread properly. Execution might eventually be affected.", 0);
+    }
+
+	//lock the mutex before broadcast
+	status = pthread_mutex_lock(&wait_mut);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Lock cond mutex error: %d\n", status);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_WARNING,
+			"Unable to lock condition mutex for watchdog in issue thread. Execution might eventually be affected.",
+			0);
+	}
+
+	//signal that issue has returned from ControlEngine
+	// maybe try the call pthread_cond_signal instead for performance
+	pthread_cond_broadcast(&cond);
+
+	// unlock mutex
+	status = pthread_mutex_unlock(&wait_mut);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Unlock cond mutex error: %d\n", status);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_WARNING,
+			"Unable to unlock condition mutex for watchdog in issue thread. Execution might eventually be affected.",
+			0);
+	}
+
+//	not needed, return 0 is better solution
+//	pthread_exit(0);
+	return 0;
+}
+
+
+char* createHeader(unsigned int id, short errorCode, bool huffmanFlag,
+					bool checksumFlag, int checksum) {
+	char* pHeader = 0;
+	FlagBits flags = NO_FLAGS;
+
+	if (huffmanFlag) {
+		//set huffman flag via binary OR
+		flags |= HUFFMAN_FLAG;
+	}
+	if (checksumFlag) {
+		//set checksum flag via binary OR
+		flags |= CHECKSUM_FLAG;
+	}
+
+	pHeader = (char*) malloc(HEADER_SIZE);
+	if (pHeader == 0) {
+		//no memory available!
+#		ifdef __DEBUG
+		printf("no memory available while trying to create header!\n");
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_ALARM,
+				"No more memory available, unable to continue serving - exiting.",
+				0);
+		cleanUp();
+		exit(201);
+	}
+
+	memcpy(pHeader, &id, HEADER_SIZE_ID);
+	memcpy(pHeader + HEADER_OFFSET_ID, &errorCode, HEADER_SIZE_ERROR_CODE);
+	memcpy(pHeader + HEADER_OFFSET_ERROR_CODE, &flags, HEADER_SIZE_FLAGS);
+	memcpy(pHeader + HEADER_OFFSET_FLAGS, &checksum, HEADER_SIZE_CHECKSUM);
+
+	return pHeader;
+}
+
+
+bool checkCommand(char* payload, int size, unsigned int checksum) {
+	unsigned int payloadChecksum = 0;
+
+	// payload has to contain data, if size is greater than 0,
+	// and size must not be negative
+	if (((payload == 0) && (size > 0)) || (size < 0)) {
+		return false;
+	}
+
+	payloadChecksum = calculateChecksum((unsigned char*) payload, size);
+#	ifdef __DEBUG
+	printf("\nReceived Checksum: \t%x ,  \nCalculated Checksum: \t%x .\n\n",
+		checksum, payloadChecksum);
+	fflush(stdout);
+#	endif
+	return (payloadChecksum == checksum) ? true : false;
+}
+
+// ! Problems with signed and unsigned char, make differences in checksum
+// -> so USE "unsigned char*" !
+unsigned int calculateChecksum(unsigned char* buffer, int size) {
+	int n;
+	unsigned int checks = 0;
+	unsigned long adler = 1L;
+	unsigned long part1 = adler & 0xffff;
+	unsigned long part2 = (adler >> 16) & 0xffff;
+
+	// calculates the checksum with the Adler32 algorithm
+	for (n = 0; n < size; n++) {
+		part1 = (part1 + buffer[n]) % ADLER_BASE;
+		part2 = (part2 + part1) % ADLER_BASE;
+	}
+	checks = (unsigned int) ((part2 << 16) + part1);
+
+	return checks;
+}
+
+char* marshallHeader(CommandHeader* pHeader) {
+	char* tempHeader = 0;
+
+	tempHeader = (char*) malloc(HEADER_SIZE);
+	if (tempHeader == 0) {
+		//no memory available!
+#		ifdef __DEBUG
+		printf("no memory available!\n");
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_ALARM,
+				"No more memory available, unable to continue serving - exiting.",
+				0);
+		cleanUp();
+		exit(201);
+	}
+
+	memcpy(tempHeader, &(pHeader->id), HEADER_SIZE_ID);
+	memcpy(tempHeader + HEADER_OFFSET_ID, &(pHeader->errorCode), HEADER_SIZE_ERROR_CODE);
+	memcpy(tempHeader + HEADER_OFFSET_ERROR_CODE, &(pHeader->flags), HEADER_SIZE_FLAGS);
+	memcpy(tempHeader + HEADER_OFFSET_FLAGS, &(pHeader->checksum), HEADER_SIZE_CHECKSUM);
+
+	return tempHeader;
+}
+
+// *********************************************************************************************
+// ---------------- here come all the FeeServer commands ----------------------------------------
+// *********************************************************************************************
+void updateFeeServer(IssueStruct* issueParam) {
+#ifdef ENABLE_MASTERMODE
+	int status = 0;
+	int i = 0;
+	FILE* fp = 0;
+
+	if ((*issueParam).size == 0) {
+		createLogMessage(MSG_ERROR, "Received new FeeServer with size 0.", 0);
+		return;
+	}
+#	ifdef __DEBUG
+	printf("Received update command, updating FeeServer now!\n");
+	fflush(stdout);
+#	endif
+	// execute instruction self and release mutex before return
+	fp = fopen("newFeeserver", "w+b");
+	if (fp == 0) {
+		createLogMessage(MSG_ERROR, "Unable to save new FeeServer binary.", 0);
+		return;
+	}
+
+	for ( i = 0; i < (*issueParam).size; ++i) {
+		fputc((*issueParam).command[i], fp);
+	}
+	fclose(fp);
+	createLogMessage(MSG_INFO, "FeeServer updated.", 0);
+
+	// should we call cleanUp() before restart
+	// better not: another possibility to hang ???
+	// -> cleanUp is in restart implicit ! except opened drivers
+	// could only be necessary, if some driver conns have to be closed.
+	cleanUp();
+	status = pthread_mutex_unlock(&command_mut);
+#	ifdef __DEBUG
+	if (status != 0) {
+		printf("Unlock FeeCommand mutex error: %d\n", status);
+		fflush(stdout);
+	}
+#	endif
+
+	// Exit status "3" tells the starting script to finalise update and restart
+	// FeeServer after termination.
+	exit(3);
+#endif //ENABLE_MASTERMODE
+}
+
+void restartFeeServer() {
+	triggerRestart(FEE_EXITVAL_RESTART);
+}
+
+void triggerRestart(int exitVal) {
+	int status = 0;
+	char msg[80];
+
+#	ifdef __DEBUG
+	printf("Triggering restart with exit value: %d\n", exitVal);
+	fflush(stdout);
+#	endif
+    msg[sprintf(msg, "Restarting FeeServer - exit value: %d ", exitVal)] = 0;
+    createLogMessage(MSG_INFO, msg, 0);
+
+	// should we call cleanUp() before restart
+	// better not: another possibility to hang ???
+	// -> cleanUp is in restart implicit ! except opened drivers
+	// could only be necessary, if some driver cons has to be closed.
+	cleanUp();
+	status = pthread_mutex_unlock(&command_mut);
+#	ifdef __DEBUG
+	if (status != 0) {
+		printf("Unlock FeeCommand mutex error: %d\n", status);
+		fflush(stdout);
+	}
+#	endif
+	// Exit status tells the startScript which type of restart is performed
+	exit(exitVal);
+}
+
+int setDeadband(IssueStruct* issueParam) {
+	char* itemName = 0;
+	float newDeadband = 0;
+	int nameLength = 0;
+	ItemNode* node = 0;
+	IntItemNode* intNode = 0;
+	char msg[100];
+	unsigned int count = 0;
+
+	if ((*issueParam).size <= sizeof(newDeadband)) {
+		(*issueParam).size = 0;
+		createLogMessage(MSG_DEBUG,
+				"FeeServer command for setting dead band contained invalid parameter.",
+				0);
+		return FEE_INVALID_PARAM;
+	}
+
+	nameLength = (*issueParam).size - sizeof(newDeadband);
+
+	if (nameLength <= 0) {
+		(*issueParam).size = 0;
+		createLogMessage(MSG_DEBUG,
+				"FeeServer command for setting dead band contained no service name.",
+				0);
+		return FEE_INVALID_PARAM;
+	}
+
+	itemName = (char*) malloc(nameLength + 1);
+	if (itemName == 0) {
+		(*issueParam).size = 0;
+		return FEE_INSUFFICIENT_MEMORY;
+	}
+
+	memcpy(&newDeadband, (*issueParam).command, sizeof(newDeadband));
+	memcpy(itemName, (*issueParam).command + sizeof(newDeadband), nameLength);
+	itemName[nameLength] = 0;
+
+	if (itemName[0] != '*') {
+		// search wanted itemNode
+		node = findItem(itemName);
+		if (node == 0) {
+			//check in IntItemList
+			intNode = findIntItem(itemName);
+		}
+		if ((node == 0) && (intNode == 0)) {
+			// message is NOT sent in findItem() or findIntItem()
+			msg[sprintf(msg, "Item %s not found in list.", itemName)] = 0;
+			createLogMessage(MSG_WARNING, msg, 0);
+#			ifdef __DEBUG
+			printf("Item %s not found in list.\n", itemName);
+			fflush(stdout);
+#			endif
+
+			free(itemName);
+			(*issueParam).size = 0;
+			createLogMessage(MSG_DEBUG,
+					"FeeServer command for setting dead band contained invalid parameter.",
+					0);
+			return FEE_INVALID_PARAM;
+		} else {
+			// set new threshold ( = dead  band / 2)
+			if (node != 0) {
+				node->threshold = newDeadband / 2;
+			} else {
+				intNode->threshold = newDeadband / 2;
+			}
+#			ifdef __DEBUG
+			printf("Set deadband on item %s to %f.\n", itemName, newDeadband);
+			fflush(stdout);
+#			endif
+			msg[sprintf(msg, "New dead band (%f) is set for item %s.",
+					newDeadband, itemName)] = 0;
+			createLogMessage(MSG_INFO, msg, 0);
+		}
+	} else {
+		// set now for all wanted value the new deadband
+		count = setDeadbandBroadcast(itemName, newDeadband);
+
+#		ifdef __DEBUG
+		printf("Set deadband for %d items (%s) to %f.\n", count, itemName, newDeadband);
+		fflush(stdout);
+#		endif
+		msg[sprintf(msg, "New dead band (%f) is set for %d items (%s).",
+				newDeadband, count, itemName)] = 0;
+		createLogMessage(MSG_INFO, msg, 0);
+	}
+
+	free(itemName);
+	(*issueParam).size = 0;
+	return FEE_OK;
+}
+
+int getDeadband(IssueStruct* issueParam) {
+	char* itemName = 0;
+	int nameLength = 0;
+	ItemNode* node = 0;
+	IntItemNode* intNode = 0;
+	float currentDeadband = 0;
+	char msg[120];
+
+	if ((*issueParam).size <= 0) {
+		(*issueParam).size = 0;
+		createLogMessage(MSG_DEBUG,
+				"FeeServer command for getting dead band contained invalid parameter.",
+				0);
+		return FEE_INVALID_PARAM;
+	}
+
+	nameLength = (*issueParam).size;
+	itemName = (char*) malloc(nameLength + 1);
+	if (itemName == 0) {
+		(*issueParam).size = 0;
+		return FEE_INSUFFICIENT_MEMORY;
+	}
+
+	memcpy(itemName, (*issueParam).command, nameLength);
+	itemName[nameLength] = 0;
+
+	// search wanted itemNode
+	node = findItem(itemName);
+	if (node == 0) {
+		//check in IntItemList
+		intNode = findIntItem(itemName);
+	}
+	if ((node == 0) && (intNode == 0)) {
+		// message is NOT sent in findItem() or findIntItem()
+		msg[sprintf(msg, "Item %s not found in list.", itemName)] = 0;
+		createLogMessage(MSG_WARNING, msg, 0);
+#		ifdef __DEBUG
+		printf("Item %s not found in list.\n", itemName);
+		fflush(stdout);
+#		endif
+
+		free(itemName);
+		(*issueParam).size = 0;
+		createLogMessage(MSG_DEBUG,
+				"FeeServer command for getting dead band contained invalid parameter.",
+				0);
+		return FEE_INVALID_PARAM;
+	} else {
+		(*issueParam).result = (char*) malloc(sizeof(float) + nameLength);
+		if ((*issueParam).result == 0) {
+			(*issueParam).size = 0;
+			return FEE_INSUFFICIENT_MEMORY;
+		}
+
+		// copy current deadband value to ACK result
+		if (node != 0) {
+			currentDeadband = node->threshold * 2.0; // compute deadband
+		} else {
+			currentDeadband = intNode->threshold * 2.0; // compute deadband
+		}
+
+		memcpy((*issueParam).result, &currentDeadband, sizeof(float));
+		memcpy((*issueParam).result + sizeof(float), itemName, nameLength);
+		(*issueParam).size = sizeof(float) + nameLength;
+#		ifdef __DEBUG
+		printf("Current deadband on item %s is %f.\n", itemName, currentDeadband);
+		fflush(stdout);
+#		endif
+		msg[sprintf(msg, "Current deadband for item %s is %f.", itemName,
+				currentDeadband)] = 0;
+		createLogMessage(MSG_DEBUG, msg, 0);
+	}
+	free(itemName);
+	return FEE_OK;
+}
+
+int setIssueTimeout(IssueStruct* issueParam) {
+	char msg[70];
+	unsigned long newTimeout;
+
+	if ((*issueParam).size < sizeof(unsigned long)) {
+		(*issueParam).size = 0;
+		createLogMessage(MSG_DEBUG,
+				"FeeServer command for setting issue timeout contained invalid parameter.",
+				0);
+		return FEE_INVALID_PARAM;
+	}
+	memcpy(&newTimeout, (*issueParam).command, sizeof(unsigned long));
+
+	// check new timeout for possible buffer overflow (value will be multiplied
+	// with 1000 later -> has to lower than 4294967 )
+	if (newTimeout > MAX_ISSUE_TIMEOUT) {
+        (*issueParam).size = 0;
+        createLogMessage(MSG_WARNING,
+                "New timeout for issue watchdog exceeded value limit (4294967).",
+                0);
+        return FEE_INVALID_PARAM;
+    }
+
+	issueTimeout = newTimeout;
+#	ifdef __DEBUG
+	printf("set new Issue timeout to %lu\n", issueTimeout);
+	fflush(stdout);
+#	endif
+	msg[sprintf(msg, "Watch dog time out is set to %lu.", issueTimeout)] = 0;
+	createLogMessage(MSG_INFO, msg, 0);
+
+	(*issueParam).size = 0;
+	return FEE_OK;
+}
+
+int getIssueTimeout(IssueStruct* issueParam) {
+	char msg[50];
+
+	(*issueParam).result = (char*) malloc(sizeof(unsigned long));
+	if ((*issueParam).result == 0) {
+		(*issueParam).size = 0;
+		return FEE_INSUFFICIENT_MEMORY;
+	}
+
+	// copy current timeout for issue to ACK result
+	memcpy((*issueParam).result, &issueTimeout, sizeof(unsigned long));
+	(*issueParam).size = sizeof(unsigned long);
+#	ifdef __DEBUG
+	printf("issue timeout is %lu\n", issueTimeout);
+	fflush(stdout);
+#	endif
+	msg[sprintf(msg, "Issue timeout is %lu.", issueTimeout)] = 0;
+	createLogMessage(MSG_DEBUG, msg, 0);
+
+	return FEE_OK;
+}
+
+int setUpdateRate(IssueStruct* issueParam) {
+	char msg[70];
+	unsigned short newRate;
+
+	if ((*issueParam).size < sizeof(unsigned short)) {
+		(*issueParam).size = 0;
+		createLogMessage(MSG_DEBUG,
+				"FeeServer command for setting update rate contained invalid parameter.",
+				0);
+		return FEE_INVALID_PARAM;
+	}
+	memcpy(&newRate, (*issueParam).command, sizeof(unsigned short));
+	updateRate = newRate;
+	// inform CE about update rate change
+	provideUpdateRate();
+#	ifdef __DEBUG
+	printf("set new update rate to %d\n", updateRate);
+	fflush(stdout);
+#	endif
+	msg[sprintf(msg, "New update rate for monitoring items: %d.", updateRate)] = 0;
+	createLogMessage(MSG_INFO, msg, 0);
+
+	(*issueParam).size = 0;
+	return FEE_OK;
+}
+
+int getUpdateRate(IssueStruct* issueParam) {
+	char msg[50];
+
+	(*issueParam).result = (char*) malloc(sizeof(unsigned short));
+	if ((*issueParam).result == 0) {
+		(*issueParam).size = 0;
+		return FEE_INSUFFICIENT_MEMORY;
+	}
+
+	// copy current update rate to ACK result
+	memcpy((*issueParam).result, &updateRate, sizeof(unsigned short));
+	(*issueParam).size = sizeof(unsigned short);
+#	ifdef __DEBUG
+	printf("update rate is %d\n", updateRate);
+	fflush(stdout);
+#	endif
+	msg[sprintf(msg, "Monitoring update rate is %d.", updateRate)] = 0;
+	createLogMessage(MSG_DEBUG, msg, 0);
+
+	return FEE_OK;
+}
+
+// be aware of different size of unsigned int in heterogen systems !!
+int setLogLevel(IssueStruct* issueParam) {
+	int status = -1;
+	char msg[70];
+	unsigned int testLogLevel = 0;
+
+	if ((*issueParam).size < sizeof(unsigned int)) {
+		(*issueParam).size = 0;
+		createLogMessage(MSG_DEBUG,
+				"FeeServer command for setting log level contained invalid parameter.",
+				0);
+		return FEE_INVALID_PARAM;
+	}
+	memcpy(&testLogLevel, (*issueParam).command, sizeof(unsigned int));
+	// check loglevel for valid data
+	if (testLogLevel > MSG_MAX_VAL) {
+#		ifdef __DEBUG
+		printf("received invalid log level %d\n", testLogLevel);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_DEBUG,
+				"FeeServer command for setting log level contained invalid parameter.",
+				0);
+		return FEE_INVALID_PARAM;
+	}
+
+	status = pthread_mutex_lock(&log_mut);
+	// discard eventual error
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Lock log mutex error: %d\n", status);
+		fflush(stdout);
+#		endif
+		(*issueParam).size = 0;
+		return FEE_FAILED;
+	} else {
+		logLevel = testLogLevel | MSG_ALARM;
+
+		status = pthread_mutex_unlock(&log_mut);
+		if (status != 0) {
+#			ifdef __DEBUG
+			printf("Unlock log mutex error: %d\n", status);
+			fflush(stdout);
+#			endif
+			createLogMessage(MSG_WARNING, "Unable to unlock logger mutex.", 0);
+		}
+
+#		ifdef __DEBUG
+		printf("set new logLevel to %d\n", logLevel);
+		fflush(stdout);
+#		endif
+		msg[sprintf(msg, "New log level on FeeServer: %d.", logLevel)] = 0;
+		createLogMessage(MSG_INFO, msg, 0);
+
+		(*issueParam).size = 0;
+		return FEE_OK;
+	}
+}
+
+int getLogLevel(IssueStruct* issueParam) {
+	char msg[50];
+
+	(*issueParam).result = (char*) malloc(sizeof(unsigned int));
+	if ((*issueParam).result == 0) {
+		(*issueParam).size = 0;
+		return FEE_INSUFFICIENT_MEMORY;
+	}
+
+	// copy current update rate to ACK result
+	memcpy((*issueParam).result, &logLevel, sizeof(unsigned int));
+	(*issueParam).size = sizeof(unsigned int);
+#	ifdef __DEBUG
+	printf("Requested loglevel is %d\n", logLevel);
+	fflush(stdout);
+#	endif
+	msg[sprintf(msg, "Requested LogLevel is %d.", logLevel)] = 0;
+	createLogMessage(MSG_DEBUG, msg, 0);
+
+	return FEE_OK;
+}
+
+void provideUpdateRate() {
+	FeeProperty feeProp;
+	if ((ceInitState == CE_OK) && ((nodesAmount > 0) || (intNodesAmount > 0))) {
+		feeProp.flag = PROPERTY_UPDATE_RATE;
+		feeProp.uShortVal = updateRate;
+		signalFeePropertyChanged(&feeProp);
+	}
+}
+
+
+unsigned int setDeadbandBroadcast(char* name, float newDeadbandBC) {
+	unsigned int count = 0;
+	ItemNode* current = 0;
+	IntItemNode* intCurrent = 0;
+	char* namePart = 0;
+	char* itemNamePart = 0;
+
+	if (name == 0) {
+		return count;
+	}
+
+	// pointer at first occurance of "_"
+	namePart = strpbrk(name, "_");
+	if (namePart == 0) {
+		return count;
+	}
+
+	// go through list of float values
+	current = firstNode;
+	while (current != 0) {  // is end of list
+		// pointer at first occurance of "_"
+		itemNamePart = strpbrk(current->item->name, "_");
+		// check if "_" not first character in name and is existing
+		if ((itemNamePart == 0) || (itemNamePart == current->item->name)) {
+			current = current->next;
+			continue;
+		}
+		if (strcmp(namePart, itemNamePart) == 0) {
+			// success, set threshold (= deadband / 2)
+			current->threshold = newDeadbandBC / 2;
+			++count;
+		}
+		current = current->next;
+	}
+
+	// go through list of integer values
+	intCurrent = firstIntNode;
+	while (intCurrent != 0) {  // is end of list
+		// pointer at first occurance of "_"
+		itemNamePart = strpbrk(intCurrent->intItem->name, "_");
+		// check if "_" not first character in name and is existing
+		if ((itemNamePart == 0) || (itemNamePart == intCurrent->intItem->name)) {
+			intCurrent = intCurrent->next;
+			continue;
+		}
+		if (strcmp(namePart, itemNamePart) == 0) {
+			// success, set threshold (= deadband / 2)
+			intCurrent->threshold = newDeadbandBC / 2;
+			++count;
+		}
+		intCurrent = intCurrent->next;
+	}
+
+	return count;
+}
+
+int updateFeeService(char* serviceName) {
+	char msg[80];
+	ItemNode* node = 0;
+	IntItemNode* intNode = 0;
+	CharItemNode* charNode = 0;
+	int nRet = 0;
+#	ifdef __DEBUG
+	char* addr = 0;
+	char* data = 0;
+	int size = 0;
+#	endif
+
+	if (state != RUNNING) {
+		return FEE_WRONG_STATE;
+	}
+	if (serviceName == 0) {
+		return FEE_NULLPOINTER;
+	}
+
+	// find desired service
+	node = findItem(serviceName);
+	if (node == 0) {
+		//check in IntItemList
+		intNode = findIntItem(serviceName);
+	}
+	if ((node == 0) || (intNode == 0)) {
+		//check in CharItemList
+        charNode = findCharItem(serviceName);
+	}
+
+	// check node
+	if ((node == 0) && (intNode == 0) && (charNode == 0)) {
+		// message is NOT sent in findItem(), findIntItem() or findCharItem()
+		msg[sprintf(msg, "Item %s not found in list.", serviceName)] = 0;
+		createLogMessage(MSG_WARNING, msg, 0);
+#		ifdef __DEBUG
+		printf("Item %s not found in list.\n", serviceName);
+		fflush(stdout);
+#		endif
+		return FEE_INVALID_PARAM;
+	} else {
+		if (node != 0) {
+			nRet = dis_update_service(node->id);
+#			ifdef __DEBUG
+/* 			printf("CE triggered an updated on %d clients for service %s [float]: %f\n", */
+/* 					nRet, node->item->name, *(node->item->location)); */
+/* 			fflush(stdout); */
+#			endif
+		} else if (intNode != 0) {
+			nRet = dis_update_service(intNode->id);
+#           ifdef __DEBUG
+/*             printf("CE triggered an updated on %d clients for service %s [int]: %d\n", */
+/*                     nRet, intNode->intItem->name, *(intNode->intItem->location)); */
+/*             fflush(stdout); */
+#           endif
+		} else {
+            nRet = dis_update_service(charNode->id);
+#           ifdef __DEBUG
+			(charNode->charItem->user_routine)(&(charNode->charItem->tag),
+					(int**) &addr, &size);
+			data = (char*) malloc(size +1);
+			strncpy(data, addr, size);
+			data[size] = 0;
+/*             printf("CE triggered an updated on %d clients for service %s [char]: %s\n", */
+/*                     nRet, charNode->charItem->name, data); */
+/*             fflush(stdout); */
+			free(data);
+#           endif
+		}
+	}
+
+	// return number of updated clients
+	return nRet;
+}
+
+
+// *********************************************************************************************
+// ---------- here comes all the initialisation of selfdefined datatypes -----------------------
+// *********************************************************************************************
+void initIssueStruct(IssueStruct* issueStr) {
+	issueStr->nRet = 0;
+	issueStr->command = 0;
+	issueStr->result = 0;
+	issueStr->size = 0;
+}
+
+void initMessageStruct() {
+	time_t timeVal;
+	struct tm* now;
+
+	// fill the original message struct
+	message.eventType = MSG_INFO;
+	memcpy(message.detector, LOCAL_DETECTOR, MSG_DETECTOR_SIZE);
+	memcpy(message.source, "FeeServer\0", 10);
+	message.description[sprintf(message.description,
+			"FeeServer %s (Version: %s) has been initialized (DNS: %s) ...",
+			serverName, FEESERVER_VERSION, getenv("DIM_DNS_NODE"))] = 0;
+	//set current date and time
+	time(&timeVal);
+	now = localtime(&timeVal);
+	message.date[strftime(message.date, MSG_DATE_SIZE, "%Y-%m-%d %H:%M:%S",
+			now)] = 0;
+
+	// the the storage of the "last Message" struct - must be different in
+	// the description compared to the original message struct above in init
+	lastMessage.eventType = MSG_DEBUG;
+    memcpy(lastMessage.detector, LOCAL_DETECTOR, MSG_DETECTOR_SIZE);
+    memcpy(lastMessage.source, "FeeServer\0", 10);
+    // now use a different description:
+	lastMessage.description[sprintf(lastMessage.description,
+			"Init of Backup Message Struct!")] = 0;
+    //set current date and time
+    time(&timeVal);
+    now = localtime(&timeVal);
+    lastMessage.date[strftime(lastMessage.date, MSG_DATE_SIZE,
+			"%Y-%m-%d %H:%M:%S", now)] = 0;
+}
+
+
+void initItemNode(ItemNode* iNode) {
+	iNode->prev = 0;
+	iNode->next = 0;
+	iNode->id = 0;
+	iNode->item = 0;
+	iNode->lastTransmittedValue = 0.0;
+	iNode->threshold = 0.0;
+	iNode->locBackup = 0;
+	iNode->checksum = 0;
+	iNode->checksumBackup = 0;
+}
+
+ItemNode* findItem(char* name) {
+//	char msg[70];
+	ItemNode* current = 0;
+
+	if (name == 0) {
+		return 0;
+	}
+	current = firstNode;
+	while (current != 0) {  // is end of list
+		if (strcmp(name, current->item->name) == 0) {
+			// success, give back itemNode
+			return current;
+		}
+		current = current->next;
+	}
+// since two lists, which are searched seperately don't make log output in
+// findItem()-function -> move to where called to combine with other 
+// findXYItem calls
+/*
+	if (state == RUNNING) {
+		msg[sprintf(msg, "Item %s not found in list.", name)] = 0;
+		createLogMessage(MSG_WARNING, msg, 0);
+#		ifdef __DEBUG
+		printf("Item %s not found in list.\n", name);
+		fflush(stdout);
+#		endif
+	}
+*/
+	return 0;
+}
+
+void unpublishItemList() {
+	ItemNode* current = 0;
+
+	current = firstNode;
+	while (current != 0) {
+		dis_remove_service(current->id);
+		current = current->next;
+	}
+	// pretending ItemList is completely empty to avoid access
+	// to not existing elements
+	nodesAmount = 0;
+	firstNode = 0;
+	lastNode = 0;
+}
+
+// ****************************************************************************
+// ------------------ here come all the closing and cleanup functions ---------
+// ****************************************************************************
+void interrupt_handler(int sig) {
+// *** causes props on DCS board -> not used yet ***
+#	ifdef __DEBUG
+	printf("Received interrupt: %d, exiting now.\n", sig);
+	fflush(stdout);
+#	endif
+
+	if ((state == RUNNING) || (state == ERROR_STATE)) {
+		fee_exit_handler(0);
+	} else {
+		cleanUp();
+		exit(0);
+	}
+}
+
+void fee_exit_handler(unsigned int state) {
+	char msg[70];
+
+#	ifdef __DEBUG
+	printf("Exit state: %d\n\n", state);
+	fflush(stdout);
+#	endif
+	msg[sprintf(msg, "Exiting FeeServer (exit state: %d).", state)] = 0;
+	createLogMessage(MSG_INFO, msg, 0);
+
+	cleanUp();
+	exit(state);
+}
+
+void dim_dummy_exit_handler(int* bufp) {
+	char msg[200];
+	char clientName[50];
+	int dummy = 0;
+
+	// if bufp null pointer, redirect to valid value
+	if (bufp == 0) {
+		bufp = &dummy;
+	}
+
+	// DO almost nothing, just to disable the build-in exit command of the DIM framework
+	// just notifying about intrusion, except for framework exit
+	clientName[0] = 0;
+	dis_get_client(clientName);
+	// let's asume exit from ambitious user has clientName (pid@host).
+	if (clientName[0] == 0) {
+#		ifdef __DEBUG
+		printf("Framework tries to exit FeeServer (%d)\n", *bufp);
+		printf("Most likely FeeServer name already exists.\n");
+		fflush(stdout);
+#		endif
+		// IMPORTANT don't use the bufp - state of framework, it could interfere
+		// with own specified exit states !! (e.g. for restarting in case of "2")
+		// the same state is signaled by kill all servers of dns !?
+		fee_exit_handler(204);
+	} else {
+		msg[sprintf(msg, "Ambitious user (%s) tried to kill FeeServer, ignoring command!",
+				clientName)] = 0;
+		createLogMessage(MSG_WARNING, msg, 0);
+#		ifdef __DEBUG
+		printf("Ambitious user (%s) tried to kill FeeServer (%d)\n", clientName, *bufp);
+		fflush(stdout);
+#		endif
+	}
+}
+
+void cleanUp() {
+	// the order of the clean up sequence here is important to evade seg faults
+#	ifdef __DEBUG
+	printf("Cleaning up FeeServer before finishing:\n");
+	fflush(stdout);
+#	endif
+	if (ceInitState == CE_OK) {
+		cleanUpCE();
+#		ifdef __DEBUG
+		printf(" - Clean up of CE finished\n");
+		fflush(stdout);
+#		endif
+	}
+
+	if (monitorThreadStarted) {
+		pthread_cancel(thread_mon);
+	}
+	if (intMonitorThreadStarted) {
+		pthread_cancel(thread_mon_int);
+	}
+	if (state == RUNNING) {
+		pthread_cancel(thread_init);
+	}
+	if (logWatchDogRunning) {
+		pthread_cancel(thread_logWatchdog);
+	}
+#	ifdef __DEBUG
+	printf(" - All threads except for main thread killed\n");
+	fflush(stdout);
+#	endif
+
+	dis_stop_serving();
+#	ifdef __DEBUG
+	printf(" - DIM server stopped\n");
+	fflush(stdout);
+#	endif
+
+	deleteItemList();
+	// new since version 0.8.1 -> int channels
+	deleteIntItemList();
+    // new since version 0.8.2b -> char channels
+    deleteCharItemList();
+
+	if (cmndACK != 0) {
+		free(cmndACK);
+	}
+	if (serverName != 0) {
+		free(serverName);
+	}
+
+	// new since 0.8.3 -> memory list
+	//cleanupMemoryList();
+#   ifdef __DEBUG
+    printf(" - Memory freed (lists and globaly allocated)\n");
+    fflush(stdout);
+#   endif
+}
+
+int deleteItemList() {
+	ItemNode* tmp = 0;
+
+	while (firstNode != 0) {
+		if (firstNode->item != 0) {
+			if (firstNode->item->name != 0) {
+				free(firstNode->item->name);
+			}
+			free(firstNode->item);
+		}
+
+		tmp = firstNode->next;
+		free(firstNode);
+		firstNode = tmp;
+	}
+	return FEE_OK;
+}
+
+/*
+MessageStruct copyMessage(const MessageStruct* const orgMsg) {
+    MessageStruct msg;
+    msg.eventType = orgMsg->eventType;
+    memcpy(msg.detector, orgMsg->detector, MSG_DETECTOR_SIZE);
+    memcpy(msg.source, orgMsg->source, MSG_SOURCE_SIZE);
+    memcpy(msg.description, orgMsg->description, MSG_DESCRIPTION_SIZE);
+    memcpy(msg.date, orgMsg->date, MSG_DATE_SIZE);
+    return msg;
+}
+*/
+
+////   --------- NEW FEATURE SINCE VERSION 0.8.1 (2007-06-12) ---------- /////
+
+int publishInt(IntItem* intItem) {
+	unsigned int id;
+	char* serviceName = 0;
+
+	// check for right state
+	if (state != COLLECTING) {
+		return FEE_WRONG_STATE;
+	}
+
+	// Testing for NULL - Pointer
+	// !! Attention: if pointer is not initialized and also NOT set to NULL, this won't help !!
+	if (intItem == 0) {
+#		ifdef __DEBUG
+		printf("Bad intItem, not published\n");
+		fflush(stdout);
+#		endif
+		return FEE_NULLPOINTER;
+	}
+	if (intItem->name == 0 || intItem->location == 0) {
+#		ifdef __DEBUG
+		printf("Bad intItem, not published\n");
+		fflush(stdout);
+#		endif
+		return FEE_NULLPOINTER;
+	}
+
+	// Check name for duplicate here
+	// Check in Float list
+	if (findItem(intItem->name) != 0) {
+#		ifdef __DEBUG
+		printf("Item name already published in float list, int item discarded.\n");
+		fflush(stdout);
+#		endif
+		return FEE_ITEM_NAME_EXISTS;
+	}
+	// Check in INT list
+	if (findIntItem(intItem->name) != 0) {
+#		ifdef __DEBUG
+		printf("Item name already published in int list, new int item discarded.\n");
+		fflush(stdout);
+#		endif
+		return FEE_ITEM_NAME_EXISTS;
+	}
+	// Check in Char service list
+    if (findCharItem(intItem->name) != 0) {
+#       ifdef __DEBUG
+        printf("Item name already published in char list, int item discarded.\n");
+        fflush(stdout);
+#       endif
+        return FEE_ITEM_NAME_EXISTS;
+    }
+
+
+	// -- add intItem as service --
+	serviceName = (char*) malloc(serverNameLength + strlen(intItem->name) + 2);
+	if (serviceName == 0) {
+		return FEE_INSUFFICIENT_MEMORY;
+	}
+	// terminate string with '\0'
+	serviceName[sprintf(serviceName, "%s_%s", serverName, intItem->name)] = 0;
+	id = dis_add_service(serviceName, "I", (int*) intItem->location,
+			sizeof(int), 0, 0);
+	free(serviceName);
+	add_int_item_node(id, intItem);
+
+	return FEE_OK;
+}
+
+void add_int_item_node(unsigned int _id, IntItem* _int_item) {
+	//create new node with enough memory
+	IntItemNode* newNode = 0;
+
+	newNode = (IntItemNode*) malloc(sizeof(IntItemNode));
+	if (newNode == 0) {
+		//no memory available!
+#		ifdef __DEBUG
+		printf("no memory available while adding IntItemNode!\n");
+		fflush(stdout);
+#		endif
+		cleanUp();
+		exit(201);
+	}
+	//initialize "members" of node
+	newNode->prev = 0;
+	newNode->next = 0;
+	newNode->id = _id;
+	newNode->intItem = _int_item;
+	newNode->lastTransmittedIntValue = *(_int_item->location);
+	//if default deadband is negative -> set threshold 0, otherwise set half of defaultDeadband
+	newNode->threshold = (_int_item->defaultDeadband < 0) ? 0.0 : (_int_item->defaultDeadband / 2);
+
+	newNode->locBackup = _int_item->location;
+
+	// Check if these feature have to be ported as well ??? !!!
+//	newNode->checksum = calculateChecksum((unsigned char*) &(_item->location),
+//			sizeof(volatile float*));
+//	newNode->checksumBackup = newNode->checksum;
+
+#ifdef __DEBUG
+	// complete debug display of added IntItem
+/*
+	printf("IntItem: %d\n", _id);
+	printf("location: %f, locBackup %f\n", *(_int_item->location), *(newNode->locBackup));
+	printf("location addr: %p, locBackup addr %p\n", _int_item->location, newNode->locBackup);
+	printf("checksum1: %d, checksum2: %d\n\n", newNode->checksum,
+			newNode->checksumBackup);
+*/
+#endif
+
+#	ifdef __DEBUG
+	// short debug display of added Item
+	printf("init of %s (int) with ID %d: %d\n", newNode->intItem->name,
+				newNode->id, newNode->lastTransmittedIntValue);
+	fflush(stdout);
+#	endif
+
+	++intNodesAmount;
+	//redirect pointers of doubly linked list (int)
+	if (firstIntNode != 0) {
+		lastIntNode->next = newNode;
+		newNode->prev = lastIntNode;
+		lastIntNode = newNode;
+	} else {
+		firstIntNode = newNode;
+		lastIntNode = newNode;
+	}
+}
+
+
+IntItemNode* findIntItem(char* name) {
+//	char msg[70];
+	IntItemNode* current = 0;
+
+	if (name == 0) {
+		return 0;
+	}
+	current = firstIntNode;
+	while (current != 0) {  // is end of list
+		if (strcmp(name, current->intItem->name) == 0) {
+			// success, give back IntItemNode
+			return current;
+		}
+		current = current->next;
+	}
+// since two lists, which are searched seperately don't make log output in
+// findIntItem()-function -> move to where called to combine with other
+// findXYItem calls
+/*
+	if (state == RUNNING) {
+		msg[sprintf(msg, "Item %s not found in IntItem list.", name)] = 0;
+		createLogMessage(MSG_WARNING, msg, 0);
+#		ifdef __DEBUG
+		printf("Item %s not found in IntItem list.\n", name);
+		fflush(stdout);
+#		endif
+	}
+*/
+	return 0;
+}
+
+int deleteIntItemList() {
+	IntItemNode* tmp = 0;
+
+	while (firstIntNode != 0) {
+		if (firstIntNode->intItem != 0) {
+			if (firstIntNode->intItem->name != 0) {
+				free(firstIntNode->intItem->name);
+			}
+			free(firstIntNode->intItem);
+		}
+
+		tmp = firstIntNode->next;
+		free(firstIntNode);
+		firstIntNode = tmp;
+	}
+	return FEE_OK;
+}
+
+void initIntItemNode(IntItemNode* intItemNode) {
+	intItemNode->prev = 0;
+	intItemNode->next = 0;
+	intItemNode->id = 0;
+	intItemNode->intItem = 0;
+	intItemNode->lastTransmittedIntValue = 0;
+	intItemNode->threshold = 0.0;
+	intItemNode->locBackup = 0;
+	intItemNode->checksum = 0;
+	intItemNode->checksumBackup = 0;
+}
+
+void unpublishIntItemList() {
+	IntItemNode* current = 0;
+
+	current = firstIntNode;
+	while (current != 0) {
+		dis_remove_service(current->id);
+		current = current->next;
+	}
+	// pretending ItemList is completely empty to avoid access
+	// to not existing elements
+	intNodesAmount = 0;
+	firstIntNode = 0;
+	lastIntNode = 0;
+}
+
+Item* createItem() {
+    Item* item = 0;
+
+    item = (Item*) malloc(sizeof(Item));
+    if (item == 0) {
+        //no memory available!
+#       ifdef __DEBUG
+        printf("no memory available!\n");
+#       endif
+        return 0;
+    }
+    item->location = 0;
+    item->name = 0;
+    item->defaultDeadband = 0;
+    return item;
+}
+
+IntItem* createIntItem() {
+	IntItem* intItem = 0;
+
+	intItem = (IntItem*) malloc(sizeof(IntItem));
+	if (intItem == 0) {
+		//no memory available!
+#		ifdef __DEBUG
+		printf("no memory available!\n");
+#		endif
+		return 0;
+	}
+	intItem->location = 0;
+	intItem->name = 0;
+	intItem->defaultDeadband = 0;
+	return intItem;
+}
+
+Item* fillItem(float* floatLocation, char* itemName, float defDeadband) {
+	Item* item = 0;
+
+    item = createItem();
+    if (item == 0) {
+        //no memory available!
+#       ifdef __DEBUG
+        printf("no memory available!\n");
+#       endif
+        return 0;
+    }
+    item->location = floatLocation;
+    item->name = (char*) malloc(strlen(itemName) + 1);
+    if (item->name == 0) {
+        //no memory available!
+#       ifdef __DEBUG
+        printf("no memory available!\n");
+#       endif
+		free(item);
+        return 0;
+    }
+	strcpy(item->name, itemName);
+    item->defaultDeadband = defDeadband;
+    return item;
+}
+
+IntItem* fillIntItem(int* intLocation, char* itemName, int defDeadband) {
+    IntItem* intItem = 0;
+
+    intItem = createIntItem();
+    if (intItem == 0) {
+        //no memory available!
+#       ifdef __DEBUG
+        printf("no memory available!\n");
+#       endif
+        return 0;
+    }
+    intItem->location = intLocation;
+    intItem->name = (char*) malloc(strlen(itemName) + 1);
+    if (intItem->name == 0) {
+        //no memory available!
+#       ifdef __DEBUG
+        printf("no memory available!\n");
+#       endif
+        free(intItem);
+        return 0;
+    }
+    strcpy(intItem->name, itemName);
+    intItem->defaultDeadband = defDeadband;
+    return intItem;
+}
+
+void monitorIntValues() {
+	int status = -1;
+	int nRet;
+	unsigned long sleepTime = 0;
+	IntItemNode* current = 0;
+	char msg[120];
+    unsigned long innerCounter = 0; // used for update check after time interval
+    unsigned long outerCounter = 0; // used for update check after time interval
+
+	// set flag, that monitor thread has been started
+	intMonitorThreadStarted = true;
+
+	// set cancelation type
+	status = pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, 0);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Set cancel state error [mon - int]: %d\n", status);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_WARNING,
+			"Unable to configure monitor thread (int) properly. Monitoring is not affected.", 0);
+	}
+	status = pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, 0);
+	if (status != 0) {
+#		ifdef __DEBUG
+		printf("Set cancel type error [mon - int]: %d\n", status);
+		fflush(stdout);
+#		endif
+		createLogMessage(MSG_WARNING,
+			"Unable to configure monitor thread (int) properly. Monitoring is not affected.", 0);
+	}
+
+	createLogMessage(MSG_DEBUG, "Started monitor thread for INT values successfully.", 0);
+
+	while (1) {
+		current = firstIntNode;
+		sleepTime = (unsigned long) (updateRate / intNodesAmount);
+		while (current != 0) { // is lastIntNode->next (end of list)
+ 			if (!checkIntLocation(current)) {
+				msg[sprintf(msg, "Value of item %s (int) is corrupt, reconstruction failed. Ignoring!",
+						current->intItem->name)] = 0;
+				createLogMessage(MSG_ERROR, msg, 0);
+				// message and do some stuff (like invalidate value)
+				// (test, what happens if pointer is redirected ???)
+			} else {
+				if ((abs((*(current->intItem->location)) - current->lastTransmittedIntValue)
+						>= current->threshold) || (outerCounter ==
+						(innerCounter * TIME_INTERVAL_MULTIPLIER))) {
+					nRet = dis_update_service(current->id);
+					current->lastTransmittedIntValue = *(current->intItem->location);
+#					ifdef __DEBUG
+					printf("CE triggered an updated on %d clients for service %s [int]: %d\n",
+							nRet, current->intItem->name, *(current->intItem->location));
+					fflush(stdout);
+#					endif
+				}
+			}
+
+			++innerCounter;
+			current = current->next;
+			usleep(sleepTime * 1000);
+			// sleeps xy microseconds, needed milliseconds-> "* 1000"
+		}
+		// with the check of both counter, each service is at least updated after
+		// every (deadband updateRate * nodesAmount) seconds
+		innerCounter = 0;
+		++outerCounter;
+		// after every service in list is updated set counter back to 0
+		// the TIME_INTERVAL_MULTIPLIER is used to enlarge the time interval of
+		// the request of services without touching the deadband checker updateRate
+		if (outerCounter >= (intNodesAmount * TIME_INTERVAL_MULTIPLIER)) {
+			outerCounter = 0;
+		}
+	}
+	// should never be reached !
+	pthread_exit(0);
+}
+
+// checks against bitflips in location (integer Item)
+bool checkIntLocation(IntItemNode* node) {
+	if (node->intItem->location == node->locBackup) {
+		// locations are identical, so no bitflip
+		return true;
+	}
+	// locations are not identical, check further
+
+	if (node->checksum == calculateChecksum((unsigned char*)
+			&(node->intItem->location), sizeof(volatile int*))) {
+		// checksum tells, that first location should be valid, repair backup
+		node->locBackup = node->intItem->location;
+		return true;
+	}
+	// original location or first checksum is wrong, continue checking
+
+	if (node->checksum == calculateChecksum((unsigned char*)
+			&(node->locBackup), sizeof(volatile int*))) {
+		// checksum tells, that location backup should be valid, repair original
+		node->intItem->location = node->locBackup;
+		return true;
+	}
+	// location backup or first checksum is wrong, continue checking
+
+	if (node->checksum == node->checksumBackup) {
+		// it seems that location and location backup are wrong
+		// or checksum value runs banana, not repairable
+		return false;
+	}
+	// it seems that first checksum is wrong
+	// try to fix with second checksum
+
+	if (node->checksumBackup == calculateChecksum((unsigned char*)
+			&(node->intItem->location), sizeof(volatile int*))) {
+		// checksum backup tells, that first location should be valid, repair backup
+		node->locBackup = node->intItem->location;
+		// repair first checksum
+		node->checksum = node->checksumBackup;
+		return true;
+	}
+	// original location or second checksum is wrong, continue checking
+
+	if (node->checksumBackup == calculateChecksum((unsigned char*)
+			&(node->locBackup), sizeof(volatile int*))) {
+		// checksum backup tells, that location backup should be valid, repair original
+		node->intItem->location = node->locBackup;
+		// repair checksum
+		node->checksum = node->checksumBackup;
+		return true;
+	}
+	// value is totally banana, no chance to fix
+	return false;
+}
+
+// --- Wrapper for the Float Items --- //
+
+int publishFloat(FloatItem* floatItem) {
+	return publish(floatItem);
+}
+
+
+FloatItem* createFloatItem() {
+	return createItem();
+}
+
+
+FloatItem* fillFloatItem(float* floatLocation, char* itemName, float defDeadband) {
+	return fillItem(floatLocation, itemName, defDeadband);
+}
+
+
+////    ------------- NEW Memory Management (2007-07-25) ----------------- ////
+
+MemoryNode* findMemoryNode(void* addr) {
+	MemoryNode* current = 0;
+
+	if (addr == 0) {
+	  /*
+		createLogMessage(MSG_WARNING,
+				"Reqesting MemoryNode with ID \"NULL\", discarding call!", 0);
+#		ifdef __DEBUG
+		printf("Reqesting MemoryNode with ID \"NULL\", discarding call!\n");
+		fflush(stdout);
+#		endif
+	  */
+		return 0;
+	}
+
+	current = firstMemoryNode;
+	while (current != 0) {  // is end of list
+		if (current->identityAddr == addr) {
+			// success, give back MemoryNode
+			return current;
+		}
+		current = current->next;
+	}
+
+/* 	// only used for debug output; comment it in if required 
+	if (current == 0) {
+		char msg[80];
+		msg[sprintf(msg, "Unable to find MemoryNode with ID \"%p\".", 
+				addr)] = 0;
+		createLogMessage(MSG_DEBUG, msg, 0);
+#		ifdef __DEBUG
+		printf("Unable to find MemoryNode with ID \"%p\".\n", addr);
+		fflush(stdout);
+#		endif
+	}
+*/
+
+	return 0;
+}
+
+
+MemoryNode* createMemoryNode(unsigned int size, char type, char* module,
+		unsigned int preSize) {
+
+	// check, if size is greater then preSize
+	if (size <= preSize) {
+		createLogMessage(MSG_ERROR,
+				"Error: asking for memory smaller or equal than its prefix size.",
+				0);
+#		ifdef __DEBUG
+		printf("Error: asking for memory smaller or equal than its prefix size.\n");
+		fflush(stdout);
+#		endif
+		return 0;
+	}
+
+	MemoryNode* memNode = (MemoryNode*) malloc(sizeof(MemoryNode));
+	if (memNode == 0) {
+		// insufficient memory
+		createLogMessage(MSG_ERROR,
+				"Insufficient memory! Unable to allocate memory for MemoryNode.",
+				0);
+#		ifdef __DEBUG
+		printf("Insufficient memory! Unable to allocate memory for MemoryNode.\n");
+		fflush(stdout);
+#		endif
+	}
+
+	// fill MemoryNode
+	void* ptr = (void*) malloc(size);
+	if (ptr == 0) {
+		// insufficient memory
+		char msg[100];
+		msg[sprintf(msg,
+				"Insufficient memory! Unable to allocate memory block of %d .",
+				size)] = 0;
+		createLogMessage(MSG_ERROR, msg, 0);
+#		ifdef __DEBUG
+		printf("Insufficient memory! Unable to allocate memory block of %d .\n",
+				size);
+		fflush(stdout);
+#		endif
+
+		free(memNode);
+		return 0;
+	}
+
+	memNode->ptr = ptr;
+	memNode->identityAddr = ptr + preSize;
+	memNode->mmData.memSize = size;
+	memNode->mmData.memType = type;
+	if (module != 0) {
+		strncpy(memNode->mmData.memDest, module, 30);
+		memNode->mmData.memDest[29] = 0;
+	} else {
+		memNode->mmData.memDest[0] = 0;
+	}
+	if (preSize > 0) {
+		memNode->mmData.prefixed = true;
+	} else {
+		memNode->mmData.prefixed = false;
+	}
+	memNode->mmData.prefixSize = preSize;
+
+	// add Node to list (add at end)
+	memNode->prev = lastMemoryNode;
+	memNode->next = 0;
+
+	if (lastMemoryNode != 0) {
+		lastMemoryNode->next = memNode;
+	}
+	lastMemoryNode = memNode;
+
+	if (firstMemoryNode == 0) {
+		firstMemoryNode = memNode;
+	}
+
+	return memNode;
+}
+
+
+void freeMemoryNode(MemoryNode* node) {
+	if (node == 0) {
+		return;
+	}
+
+	// free memory corresponding to this node
+	if (node->ptr != 0) {
+		free(node->ptr);
+	}
+
+	// redirect links in doubly linked list
+	if (node->next != 0) {
+		node->next->prev = node->prev;
+	} else {
+		lastMemoryNode = node->prev;
+	}
+
+	if (node->prev != 0) {
+		node->prev->next = node->next;
+	} else {
+		firstMemoryNode = node->next;
+	}
+
+	//free node itself
+	free(node);
+}
+
+
+void cleanupMemoryList() {
+	MemoryNode* current = firstMemoryNode;
+	while (current != 0) {
+		MemoryNode* nextMemNode = current->next;
+		freeMemoryNode(current);
+		current = nextMemNode;
+	}
+}
+
+
+// ------ NEW interface functions for memory management ------ //
+
+int allocateMemory(unsigned int size, char type, char* module,
+		char prefixPurpose, void** ptr) {
+	MemoryNode*	memNode = 0;
+	unsigned int realSize = 0;
+	unsigned int addSize = 0;
+	char msg[200];
+	*ptr = 0;
+
+	if (size == 0) {
+		createLogMessage(MSG_WARNING,
+				"FeeServer shall allocate memory of size 0; discarding call!", 0);
+#		ifdef __DEBUG
+		printf("FeeServer shall allocate memory of size 0; discarding call!\n");
+		fflush(stdout);
+#		endif
+		return FEE_INVALID_PARAM;
+	}
+
+	switch (prefixPurpose) {
+		case ('0'):
+			realSize = size;
+			break;
+
+		case ('A'):
+			realSize = size + HEADER_SIZE;
+			addSize = HEADER_SIZE;
+			break;
+
+		default:
+			msg[sprintf(msg,
+					"Received allocateMemory call with unknown prefix purpose ('%c'), discarding call.",
+					prefixPurpose)] = 0;
+			createLogMessage(MSG_ERROR, msg, 0);
+#			ifdef __DEBUG
+			printf("%s\n", msg);
+			fflush(stdout);
+#			endif
+			return FEE_INVALID_PARAM;
+	}
+
+	memNode = createMemoryNode(realSize, type, module, addSize);
+	if (memNode == 0) {
+		return FEE_FAILED;
+	}
+
+	*ptr = memNode->identityAddr;
+/*	// only for debug output to test functyionality
+	msg[sprintf(msg,
+			"Allocated memory (type %c) for %s of size %d + prefix memory size %d. Purpose is set to: %c.",
+			type, memNode->mmData.memDest, size, addSize, prefixPurpose)] = 0;
+	createLogMessage(MSG_DEBUG, msg, 0);
+#	ifdef __DEBUG
+	printf("%s\n", msg);
+	fflush(stdout);
+#	endif
+*/
+	return FEE_OK;
+}
+
+
+int freeMemory(void* addr) {
+	MemoryNode* memNode = 0;
+	if (addr == 0) {
+		// received NULL pointer
+		createLogMessage(MSG_WARNING,
+				"Received an NULL pointer for freeing memory, discarding call!", 0);
+#		ifdef __DEBUG
+		printf("Received an NULL pointer for freeing memory, discarding call! \n");
+		fflush(stdout);
+#		endif
+		return FEE_NULLPOINTER;
+	}
+
+	memNode = findMemoryNode(addr);
+	if (memNode == 0) {
+		// memory pointer id not found in list
+		return FEE_INVALID_PARAM;
+	}
+
+	freeMemoryNode(memNode);
+	return FEE_OK;
+}
+
+
+///   --- NEW FEATURE SINCE VERSION 0.8.2b [Char channel] (2007-07-28) --- ///
+
+int publishChar(CharItem* charItem) {
+    unsigned int id;
+    char* serviceName = 0;
+
+    // check for right state
+    if (state != COLLECTING) {
+        return FEE_WRONG_STATE;
+    }
+
+    // Testing for NULL - Pointer
+    // !! Attention: if pointer is not initialized and also NOT set to NULL, this won't help !!
+    if (charItem == 0) {
+#       ifdef __DEBUG
+        printf("Bad charItem, not published\n");
+        fflush(stdout);
+#       endif
+        return FEE_NULLPOINTER;
+    }
+    if (charItem->name == 0 || charItem->user_routine == 0) {
+#       ifdef __DEBUG
+        printf("Bad charItem, not published\n");
+        fflush(stdout);
+#       endif
+        return FEE_NULLPOINTER;
+    }
+
+    // Check name for duplicate here
+    // Check in Float list
+    if (findItem(charItem->name) != 0) {
+#       ifdef __DEBUG
+        printf("Item name already published in float list, char item discarded.\n");
+        fflush(stdout);
+#       endif
+        return FEE_ITEM_NAME_EXISTS;
+    }
+    // Check in INT list
+    if (findIntItem(charItem->name) != 0) {
+#       ifdef __DEBUG
+        printf("Item name already published in int list, char item discarded.\n");
+        fflush(stdout);
+#       endif
+        return FEE_ITEM_NAME_EXISTS;
+    }
+    // Check in CHAR list
+    if (findCharItem(charItem->name) != 0) {
+#       ifdef __DEBUG
+        printf("Item name already published in char list, new char item discarded.\n");
+        fflush(stdout);
+#       endif
+        return FEE_ITEM_NAME_EXISTS;
+    }
+
+    // -- add charItem as service --
+    serviceName = (char*) malloc(serverNameLength + strlen(charItem->name) + 2);
+    if (serviceName == 0) {
+        return FEE_INSUFFICIENT_MEMORY;
+    }
+    // terminate string with '\0'
+    serviceName[sprintf(serviceName, "%s_%s", serverName, charItem->name)] = 0;
+    // add service in DIM
+    id = dis_add_service(serviceName, "C", 0, 0, charItem->user_routine,
+            charItem->tag);
+    free(serviceName);
+
+    // !!! implement add_char_item_node() func !!!
+    add_char_item_node(id, charItem);
+
+    return FEE_OK;
+}
+
+
+CharItem* createCharItem() {
+    CharItem* charItem = 0;
+
+    charItem = (CharItem*) malloc(sizeof(CharItem));
+    if (charItem == 0) {
+        //no memory available!
+#       ifdef __DEBUG
+        printf("no memory available for CharItem!\n");
+#       endif
+        return 0;
+    }
+    charItem->user_routine = 0;
+    charItem->name = 0;
+    charItem->tag = 0;
+    return charItem;
+}
+
+
+//CharItem* fillCharItem(void* funcPointer, char* itemName, long tag) {
+CharItem* fillCharItem(void (*funcPointer)(long*, int**, int*), char* itemName,
+        long tag) {
+    CharItem* charItem = 0;
+
+    charItem = createCharItem();
+    if (charItem == 0) {
+        //no memory available!
+#       ifdef __DEBUG
+        printf("no memory available for CharItem!\n");
+#       endif
+        return 0;
+    }
+    charItem->user_routine = funcPointer;
+    charItem->name = (char*) malloc(strlen(itemName) + 1);
+    if (charItem->name == 0) {
+        //no memory available!
+#       ifdef __DEBUG
+        printf("no memory available!\n");
+#       endif
+        free(charItem);
+        return 0;
+    }
+    strcpy(charItem->name, itemName);
+    charItem->tag = tag;
+    return charItem;
+}
+
+
+void add_char_item_node(unsigned int _id, CharItem* _char_item) {
+    //create new node with enough memory
+    CharItemNode* newNode = 0;
+
+    newNode = (CharItemNode*) malloc(sizeof(CharItemNode));
+    if (newNode == 0) {
+        //no memory available!
+#       ifdef __DEBUG
+        printf("no memory available while adding CharItemNode!\n");
+        fflush(stdout);
+#       endif
+        cleanUp();
+        exit(201);
+    }
+    //initialize "members" of node
+    newNode->prev = 0;
+    newNode->next = 0;
+    newNode->id = _id;
+    newNode->charItem = _char_item;
+
+#	ifdef __DEBUG
+    // complete debug display of added charItem
+/*
+    printf("CharItem ID: %d\n", _id);
+	printf("CharItem name: %s\n", _char_item->name);
+    printf("CharItem user_routine: %p\n", _char_item->user_routine);
+	printf("CharItem tag: %d\n", _char_item->tag);
+*/
+#	endif
+
+#   ifdef __DEBUG
+    // short debug display of added Item
+    printf("init of %s (char) with ID %d; user_routine at: %p\n", 
+			newNode->charItem->name, newNode->id, 
+			newNode->charItem->user_routine);
+    fflush(stdout);
+#   endif
+
+    ++charNodesAmount;
+    //redirect pointers of doubly linked list (char)
+    if (firstCharNode != 0) {
+        lastCharNode->next = newNode;
+        newNode->prev = lastCharNode;
+        lastCharNode = newNode;
+    } else {
+        firstCharNode = newNode;
+        lastCharNode = newNode;
+    }
+}
+
+
+CharItemNode* findCharItem(char* name) {
+//  char msg[70];
+    CharItemNode* current = 0;
+
+    if (name == 0) {
+        return 0;
+    }
+    current = firstCharNode;
+    while (current != 0) {  // is end of list
+        if (strcmp(name, current->charItem->name) == 0) {
+            // success, give back CharItemNode
+            return current;
+        }
+        current = current->next;
+    }
+// since three lists, which are searched seperately don't make log output in
+// findCharItem()-function -> move to where called to combine with other 
+// findXYItem calls
+/*
+    if (state == RUNNING) {
+        msg[sprintf(msg, "Item %s not found in CharItem list.", name)] = 0;
+        createLogMessage(MSG_WARNING, msg, 0);
+#       ifdef __DEBUG
+        printf("Item %s not found in CharItem list.\n", name);
+        fflush(stdout);
+#       endif
+    }
+*/
+    return 0;
+}
+
+
+int deleteCharItemList() {
+    CharItemNode* tmp = 0;
+
+    while (firstCharNode != 0) {
+        if (firstCharNode->charItem != 0) {
+            if (firstCharNode->charItem->name != 0) {
+                free(firstCharNode->charItem->name);
+            }
+            free(firstCharNode->charItem);
+        }
+
+        tmp = firstCharNode->next;
+        free(firstCharNode);
+        firstCharNode = tmp;
+    }
+    return FEE_OK;
+}
+
+
+void initCharItemNode(CharItemNode* charItemNode) {
+    charItemNode->prev = 0;
+    charItemNode->next = 0;
+    charItemNode->id = 0;
+    charItemNode->charItem = 0;
+}
+
+
+void unpublishCharItemList() {
+    CharItemNode* current = 0;
+
+    current = firstCharNode;
+    while (current != 0) {
+        dis_remove_service(current->id);
+        current = current->next;
+    }
+    // pretending CharItemList is completely empty to avoid access
+    // to not existing DIM services. Don't delete charItems, CE might still 
+	// try to access their content (same for float and int lists)
+    charNodesAmount = 0;
+    firstCharNode = 0;
+    lastCharNode = 0;
+}
+
+
+/// -- NEW FEATURE V. 0.9.1 [Set FeeServer Properies in CE] (2007-08-17) -- ///
+
+bool setFeeProperty(FeeProperty* prop) {
+	bool retVal = false;
+	if (state != INITIALIZING) {
+		createLogMessage(MSG_WARNING, 
+				"Trying to change a FeeProperty during wrong FeeServer state, ignoring ...",
+				0);
+#		ifdef __DEBUG
+		printf("Trying to change a FeeProperty during wrong FeeServer state, ignoring ...\n");
+		fflush(stdout);
+#		endif
+		return retVal;
+	}
+
+	if (prop == 0) {
+#       ifdef __DEBUG
+        printf("Received NULL pointer in setting FeeProperty, ignoring...\n");
+		fflush(stdout);
+#		endif
+		// No log message: in "INITIALIZING" state are no DIM channels available
+		return retVal;
+	}
+
+	switch (prop->flag) {
+		case (PROPERTY_UPDATE_RATE):
+            if (prop->uShortVal > 0) {
+                updateRate = prop->uShortVal;
+                retVal = true;
+#               ifdef __DEBUG
+                printf("FeeProperty changed: new update rate (%d).\n", 
+						updateRate);
+                fflush(stdout);
+#               endif
+            } else {
+#               ifdef __DEBUG
+                printf("Received invalid value for setting update rate (%d), ignoring...\n",
+                        prop->uShortVal);
+                fflush(stdout);
+#               endif
+            }
+			break;
+
+		case (PROPERTY_LOGWATCHDOG_TIMEOUT):
+            if (prop->uIntVal > 0) {
+                logWatchDogTimeout = prop->uIntVal;
+                retVal = true;
+#               ifdef __DEBUG
+                printf("FeeProperty changed: new log watchdog timeout (%d).\n",
+						logWatchDogTimeout);
+                fflush(stdout);
+#               endif
+            } else {
+#               ifdef __DEBUG
+                printf("Received invalid value for setting log watchdog timeout (%d), ignoring...\n",
+                        prop->uIntVal);
+                fflush(stdout);
+#               endif
+            }
+			break;
+
+		case (PROPERTY_ISSUE_TIMEOUT):
+			if (prop->uLongVal > 0) {
+                issueTimeout = prop->uLongVal;
+                retVal = true;
+#               ifdef __DEBUG
+                printf("FeeProperty changed: new issue timeout (%ld).\n", 
+						issueTimeout);
+                fflush(stdout);
+#               endif
+            } else {
+#               ifdef __DEBUG
+                printf("Received invalid value for setting issue timeout (%ld), ignoring...\n",
+                        prop->uLongVal);
+                fflush(stdout);
+#               endif
+            }
+			break;
+		
+		case (PROPERTY_LOGLEVEL):
+			if ((prop->uIntVal > 0) && (prop->uIntVal <= MSG_MAX_VAL)) {
+				logLevel = prop->uIntVal | MSG_ALARM;		
+				retVal = true;
+#				ifdef __DEBUG
+				printf("FeeProperty changed: new log level (%d).\n", logLevel);
+				fflush(stdout);
+#				endif
+			} else {
+#				ifdef __DEBUG
+				printf("Received invalid value for setting loglevel (%d), ignoring...\n",
+			    		prop->uIntVal);
+				fflush(stdout);
+#				endif
+			}
+			break;
+
+		default:
+			// unknown property flag, but no logging
+#			ifdef __DEBUG
+			printf("Received unknown flag in setting FeeProperty (%d), ignoring...\n",
+					prop->flag);
+			fflush(stdout);
+#			endif
+	}
+
+	return retVal;
+}
+
+
+/// ***************************************************************************
+/// -- only for the benchmarking cases necessary
+/// ***************************************************************************
+#ifdef __BENCHMARK
+void createBenchmark(char* msg) {
+	// this part is only used for benchmarking
+	// timestamp to benchmark reception of a command
+    struct tm *today;
+	struct timeval tStamp;
+	char benchmark_msg[200];
+	int status = 0;
+	FILE* pFile = 0;
+
+    status = gettimeofday(&tStamp, 0);
+    if (status != 0) {
+	benchmark_msg[sprintf(benchmark_msg,
+                "Unable to get timestamp for benchmark!")] = 0;
+	} else {
+        today = localtime(&(tStamp.tv_sec));
+    	benchmark_msg[sprintf(benchmark_msg,
+				"%s: \t%.8s - %ld us", msg, asctime(today) + 11,
+				tStamp.tv_usec)] = 0;
+	}
+
+	if (getenv("FEE_BENCHMARK_FILENAME")) {
+		pFile = fopen(getenv("FEE_BENCHMARK_FILENAME"), "a+");
+		if (pFile) {
+			fprintf(pFile, benchmark_msg);
+			fprintf(pFile, "\n");
+			fclose(pFile);
+		} else {
+#ifdef __DEBUG
+			printf("Unable to open benchmark file.\n");
+			printf("%s\n", benchmark_msg);
+#endif
+			createLogMessage(MSG_WARNING, "Unable to write to benchmarkfile.", 0);
+		}
+	} else {
+		createLogMessage(MSG_SUCCESS_AUDIT, benchmark_msg, 0);
+	}
+}
+#else
+// empty function
+void createBenchmark(char* msg) {
+}
+#endif
+
+
+
+/// ***************************************************************************
+/// -- only for the debugging cases necessary
+/// ***************************************************************************
+#ifdef __DEBUG
+void printData(char* data, int start, int size) {
+	int i;
+	int iBackUp;
+
+	if ((data == 0) || (size == 0)) {
+		return;
+	}
+	iBackUp = start;
+	for (i = start; (i < size) || (iBackUp < size); ++i) {
+		++iBackUp;
+		printf("%c", data[i]);
+	}
+	printf("\nData - Size: %d", size);
+	printf("\n\n");
+	fflush(stdout);
+}
+#endif
+
+
+//-- only for the testcases necessary
+#ifdef __UTEST
+const int getState() {
+	return state;
+}
+
+const ItemNode* getFirstNode() {
+	return firstNode;
+}
+
+const ItemNode* getLastNode() {
+	return lastNode;
+}
+
+int listSize() {
+	ItemNode* tmp = firstNode;
+	int count = 0;
+
+	while (tmp != 0) {
+		tmp = tmp->next;
+		++count;
+	}
+	return count;
+}
+
+const char* getCmndACK() {
+	return cmndACK;
+}
+
+void setState(int newState) {
+	state = newState;
+}
+
+void setCmndACK(char* newData) {
+	cmndACK = newData;
+}
+
+void setCmndACKSize(int size) {
+	cmndACKSize = size;
+}
+
+void setServerName(char* name) {
+	if (serverName != 0) {
+		free(serverName);
+	}
+	serverName = (char*) malloc(strlen(name) + 1);
+	if (serverName == 0) {
+		printf(" No memory available !\n");
+	}
+	strcpy(serverName, name);
+}
+
+void clearServerName() {
+	if (serverName != 0) {
+		free(serverName);
+	}
+}
+
+void stopServer() {
+	dis_remove_service(serviceACKID);
+	dis_remove_service(commandID);
+	dis_stop_serving();
+}
+
+pthread_cond_t* getInitCondPtr() {
+	return &init_cond;
+}
+
+
+pthread_mutex_t* getWaitInitMutPtr() {
+	return &wait_init_mut;
+}
+
+#endif
+
+
+
+--------------------------------------------------------------------------------
+for assistance refer to the CVS howto. Maintained by Matthias Richter Powered by
+ViewCVS 0.9.2  
Index: branches/testFACT++branch/dim/src/hash.c
===================================================================
--- branches/testFACT++branch/dim/src/hash.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/hash.c	(revision 18277)
@@ -0,0 +1,39 @@
+#define DIMLIB
+#include <dim.h>
+
+/*
+ * Hash function
+ */
+
+/*
+int HashFunction(name, max)
+char	*name;
+int	max;
+{
+    register int code = 0;
+
+	while(*name)
+	{
+		code += *name++;
+	}
+	return (code % max);
+}
+*/
+int HashFunction(char *name, int max)
+{
+   unsigned int b    = 378551;
+   unsigned int a    = 63689;
+   unsigned int hash = 0;
+   int i    = 0;
+   int len;
+
+   len = (int)strlen(name);
+
+   for(i = 0; i < len; name++, i++)
+   {
+      hash = hash*a+(unsigned)(*name);
+      a = a*b;
+   }
+
+   return ((int)(hash % (unsigned)max));
+}
Index: branches/testFACT++branch/dim/src/open_dns.c
===================================================================
--- branches/testFACT++branch/dim/src/open_dns.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/open_dns.c	(revision 18277)
@@ -0,0 +1,459 @@
+/*
+ * A utility file. 
+ *
+ * Started date   : 10-11-91
+ * Written by     : C. Gaspar
+ * UNIX adjustment: G.C. Ballintijn
+ *
+ */
+
+#define DIMLIB
+#include <dim.h>
+
+#define MAX_DNS_NODE 256
+
+typedef struct {
+	char node_name[MAX_NODE_NAME];
+	char task_name[MAX_TASK_NAME];
+	void (*recv_rout)();
+	void (*error_rout)();
+	TIMR_ENT *timr_ent;
+	SRC_TYPES src_type;
+} PENDING_CONN;
+
+typedef struct dns_ent{
+	struct dns_ent *next;
+	struct dns_ent *prev;
+	char node_name[MAX_DNS_NODE];
+	char task_name[MAX_TASK_NAME];
+	int port_number;
+	void (*recv_rout)();
+	void (*error_rout)();
+	TIMR_ENT *timr_ent;
+	SRC_TYPES src_type;
+	int conn_id;
+	int pending;
+	int connecting;
+} DNS_CONN;
+
+static int Timer_q = 0;
+static DNS_CONN *DNS_ids[3] = {0, 0, 0};
+static DNS_CONN *DNS_conn_head = (DNS_CONN *)0;	
+
+
+_DIM_PROTO( void retry_dns_connection,    ( int conn_pend_id ) );
+_DIM_PROTO( void init_dns_list,    (  ) );
+_DIM_PROTO( void set_dns_pars,    ( DNS_CONN *connp, char *node, int port ) );
+_DIM_PROTO( int get_dns_pars,    ( DNS_CONN *connp, char *node, int *port ) );
+
+
+int dim_set_dns_node(char *node)
+{
+	init_dns_list();
+	set_dns_pars(DNS_ids[SRC_DIS], node, 0);
+	set_dns_pars(DNS_ids[SRC_DIC], node, 0);
+	return(1);
+}
+
+int dic_set_dns_node(char *node)
+{
+	init_dns_list();
+	set_dns_pars(DNS_ids[SRC_DIC], node, 0);
+	return(1);
+}
+
+int dis_set_dns_node(char *node)
+{
+	init_dns_list();
+	set_dns_pars(DNS_ids[SRC_DIS], node, 0);
+	return(1);
+}
+
+int dim_get_dns_node(char *node)
+{
+	register int node_exists;
+	int port;
+	init_dns_list();
+	node_exists = get_dns_pars(DNS_ids[SRC_DIS], node, &port);
+	return(node_exists);
+}
+
+int dic_get_dns_node(char *node)
+{
+	register int node_exists;
+	int port;
+	init_dns_list();
+	node_exists = get_dns_pars(DNS_ids[SRC_DIC], node, &port);
+	return(node_exists);
+}
+
+int dis_get_dns_node(char *node)
+{
+	register int node_exists;
+	int port;
+	init_dns_list();
+	node_exists = get_dns_pars(DNS_ids[SRC_DIS], node, &port);
+	return(node_exists);
+}
+
+int dim_set_dns_port(int port)
+{
+	init_dns_list();
+	set_dns_pars(DNS_ids[SRC_DIS], 0, port);
+	set_dns_pars(DNS_ids[SRC_DIC], 0, port);
+	return(1);
+}
+
+int dic_set_dns_port(int port)
+{
+	init_dns_list();
+	set_dns_pars(DNS_ids[SRC_DIC], 0, port);
+	return(1);
+}
+
+int dis_set_dns_port(int port)
+{
+	init_dns_list();
+	set_dns_pars(DNS_ids[SRC_DIS], 0, port);
+	return(1);
+}
+
+int dim_get_dns_port()
+{
+int port;
+char node[MAX_DNS_NODE];
+	init_dns_list();
+	get_dns_pars(DNS_ids[SRC_DIS], node, &port);
+	return(port);
+}
+
+int dic_get_dns_port()
+{
+int port;
+char node[MAX_DNS_NODE];
+	init_dns_list();
+	get_dns_pars(DNS_ids[SRC_DIC], node, &port);
+	return(port);
+}
+
+int dis_get_dns_port()
+{
+int port;
+char node[MAX_DNS_NODE];
+	init_dns_list();
+	get_dns_pars(DNS_ids[SRC_DIS], node, &port);
+	return(port);
+}
+
+void rand_tmout_init()
+{
+	char pid_str[MAX_TASK_NAME];
+	int ip, pid;
+	extern int get_node_addr();
+	extern int get_proc_name();
+
+	get_node_addr((char *)&ip);
+	get_proc_name(pid_str);
+	sscanf(pid_str,"%d",&pid);
+	srand((unsigned)(ip+pid));
+}
+
+int rand_tmout( int min, int max )
+{
+	int aux;
+
+	aux = rand();
+	aux %= (max - min);
+	aux += min;
+	return(aux);
+}
+
+void init_dns_list()
+{
+	char node[MAX_DNS_NODE];
+	int port;
+	dim_long sid, cid;
+
+	DISABLE_AST
+	if(!DNS_conn_head) 
+	{
+		DNS_conn_head = (DNS_CONN *)malloc(sizeof(DNS_CONN));
+		dll_init( (DLL *) DNS_conn_head );
+		node[0] = '\0';
+		get_dns_node_name(node);
+		port = get_dns_port_number();
+		sid = dis_add_dns(node, port);
+		cid = dic_add_dns(node, port);
+		DNS_ids[SRC_DIS] = (DNS_CONN *)sid;
+		DNS_ids[SRC_DIC] = (DNS_CONN *)cid;
+		rand_tmout_init();
+	}
+	ENABLE_AST
+}
+
+void set_dns_pars(DNS_CONN *connp, char *node, int port)
+{
+	if(node != 0)
+	{
+		strcpy(connp->node_name, node);
+	}
+	if(port != 0)
+	{
+		connp->port_number = port;
+	}
+}
+
+int get_dns_pars(DNS_CONN *connp, char *node, int *port)
+{
+	int exists = 0;
+
+	if(connp->node_name[0])
+	{
+		strcpy(node, connp->node_name);
+		exists = 1;
+	}
+	*port = connp->port_number;
+	return exists;
+}
+
+DNS_CONN *find_dns(char *node_name, int port_number, SRC_TYPES src_type)
+{
+	DNS_CONN *connp;
+
+	connp = DNS_conn_head;
+	while( (connp = (DNS_CONN *)dll_get_next( (DLL *) DNS_conn_head, 
+			(DLL*) connp)) )
+	{
+		if(connp->src_type == src_type)
+		{
+			if((!strcmp(connp->node_name, node_name)) &&
+				(connp->port_number == port_number))
+				return connp;
+		}
+	}
+	return (DNS_CONN *)0;
+}
+
+dim_long dis_add_dns(char *node_name, int port_number)
+{
+	DNS_CONN *connp;
+
+	init_dns_list();
+	if(!(connp = find_dns(node_name, port_number, SRC_DIS)))
+	{
+		connp = (DNS_CONN *)malloc(sizeof(DNS_CONN));
+		strcpy(connp->node_name, node_name);
+		connp->port_number = DNS_PORT;
+		if(port_number != 0)
+			connp->port_number = port_number;
+		connp->src_type = SRC_DIS;
+		connp->pending = 0;
+		connp->conn_id = 0;
+		connp->connecting = 0;
+		dll_insert_queue( (DLL *) DNS_conn_head, (DLL *) connp );
+	}
+	return (dim_long)connp;
+}
+
+dim_long dic_add_dns(char *node_name, int port_number)
+{
+	DNS_CONN *connp;
+
+	init_dns_list();
+	if(!(connp = find_dns(node_name, port_number, SRC_DIC)))
+	{
+		connp = (DNS_CONN *)malloc(sizeof(DNS_CONN));
+		strcpy(connp->node_name, node_name);
+		connp->port_number = DNS_PORT;
+		if(port_number != 0)
+			connp->port_number = port_number;
+		connp->src_type = SRC_DIC;
+		connp->pending = 0;
+		connp->conn_id = 0;
+		connp->connecting = 0;
+		dll_insert_queue( (DLL *) DNS_conn_head, (DLL *) connp );
+	}
+	return (dim_long)connp;
+}
+
+DNS_CONN *get_dns(DNS_CONN *connp, SRC_TYPES src_type)
+{
+	DNS_CONN *p = 0;
+
+	init_dns_list();
+	if(connp)
+	{
+		if(connp->src_type == src_type)
+		{
+			p = connp;
+		}
+	}
+	else
+	{
+		p = DNS_ids[src_type];
+	}
+	return p;
+}
+
+int close_dns(dim_long dnsid, SRC_TYPES src_type)
+{
+	DNS_CONN *connp;
+
+	connp = get_dns((DNS_CONN *)dnsid, src_type);
+	if( !Timer_q )
+		Timer_q = dtq_create();
+	if( connp->pending ) 
+	{
+		connp->pending = 0;
+		dtq_rem_entry( Timer_q, connp->timr_ent );
+	}
+	return 1;
+}
+
+int open_dns(dim_long dnsid, void (*recv_rout)(), void (*error_rout)(), int tmout_min, int tmout_max, SRC_TYPES src_type )
+{
+	char nodes[MAX_DNS_NODE];
+	char node_info[MAX_NODE_NAME+4];
+	register char *dns_node, *ptr; 
+	register int conn_id;
+	register int timeout, node_exists;
+	int i, dns_port;
+	int rand_tmout();
+	DNS_CONN *connp;
+
+	conn_id = 0;
+	if( !Timer_q )
+		Timer_q = dtq_create();
+
+	connp = get_dns((DNS_CONN *)dnsid, src_type);
+	node_exists = get_dns_pars(connp, nodes, &dns_port);
+	if( !(connp->pending) ) 
+	{
+		if(!node_exists)
+		{
+			return(-2);
+		}
+		ptr = nodes;			
+		while(1)
+		{
+			dns_node = ptr;
+			if( (ptr = (char *)strchr(ptr,',')) )
+			{
+				*ptr = '\0';			
+				ptr++;
+			}
+			strcpy(node_info,dns_node);
+			for(i = 0; i < 4; i ++)
+				node_info[(int)strlen(node_info)+i+1] = (char)0xff;
+			connp->conn_id = 0;
+			connp->connecting = 1;
+			conn_id = dna_open_client( node_info, DNS_TASK, dns_port,
+						 TCPIP, recv_rout, error_rout, src_type );
+			connp->connecting = 0;
+			if(conn_id)
+				break;
+			if( !ptr )
+				break;
+		}
+		connp->conn_id = conn_id;
+		if(!conn_id)
+		{
+			strncpy(connp->task_name, DNS_TASK, (size_t)MAX_TASK_NAME); 
+			connp->recv_rout = recv_rout;
+			connp->error_rout = error_rout;
+			connp->pending = 1;
+			timeout = rand_tmout( tmout_min, tmout_max );
+			connp->timr_ent = dtq_add_entry( Timer_q, timeout,
+				retry_dns_connection,
+				connp );
+			return( -1);
+		}
+	}
+	else
+		return(-1);
+	return(conn_id);
+}
+
+void retry_dns_connection( DNS_CONN *connp )
+{
+	char nodes[MAX_DNS_NODE];
+	char node_info[MAX_NODE_NAME+4];
+	register char *dns_node, *ptr;
+	register int conn_id, node_exists;
+	static int retrying = 0;
+	int i, dns_port;
+
+	if( retrying ) return;
+	retrying = 1;
+
+	conn_id = 0;
+	node_exists = get_dns_pars(connp, nodes, &dns_port);
+	if(node_exists)
+	{
+		ptr = nodes;			
+		while(1)
+		{
+			dns_node = ptr;
+			if( (ptr = (char *)strchr(ptr,',')) )
+			{
+				*ptr = '\0';			
+				ptr++;
+			}
+			strcpy(node_info,dns_node);
+			for(i = 0; i < 4; i ++)
+				node_info[(int)strlen(node_info)+i+1] = (char)0xff;
+			connp->conn_id = 0;
+			connp->connecting = 1;
+			conn_id = dna_open_client( node_info, connp->task_name,
+					 dns_port, TCPIP,
+					 connp->recv_rout, connp->error_rout, connp->src_type );
+			connp->connecting = 0;
+			if( conn_id )
+				break;
+			if( !ptr )
+				break;
+		}
+	}
+	connp->conn_id = conn_id;
+	if(conn_id)
+	{
+		connp->pending = 0;
+		dtq_rem_entry( Timer_q, connp->timr_ent );
+	}
+	retrying = 0;
+}	
+
+dim_long dns_get_dnsid(int conn_id, SRC_TYPES src_type)
+{
+	DNS_CONN *connp;
+	int found = 0;
+
+	connp = DNS_conn_head;
+	while( (connp = (DNS_CONN *)dll_get_next( (DLL *) DNS_conn_head, 
+			(DLL*) connp)) )
+	{
+		if(connp->conn_id == conn_id)
+		{
+			found = 1;
+			break;
+		}
+		else if((connp->conn_id == 0) && (connp->connecting))
+		{
+			connp->conn_id = conn_id;
+			found = 1;
+			break;
+		}
+	}
+	if(found)
+	{
+		if(connp == DNS_ids[src_type])
+		{
+			return (dim_long)0;
+		}
+		else
+		{
+			return (dim_long)connp;
+		}
+	}
+	return (dim_long)-1;
+}
Index: branches/testFACT++branch/dim/src/sll.c
===================================================================
--- branches/testFACT++branch/dim/src/sll.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/sll.c	(revision 18277)
@@ -0,0 +1,135 @@
+/*
+ * A utility file. A single linked list.
+ *
+ * Started date   : 10-11-91
+ * Written by     : C. Gaspar
+ * UNIX adjustment: G.C. Ballintijn
+ *
+ */
+
+#define DIMLIB
+#include <dim.h>
+
+
+void sll_init( SLL* head )
+{
+	head->next = (SLL *)0;
+}
+
+
+int sll_insert_queue( SLL* head, SLL* item )
+{
+	SLL *auxp;
+
+	DISABLE_AST
+	auxp = head;
+	while( auxp->next )
+		auxp = auxp->next;
+	auxp->next = item;
+	item->next = 0;
+	ENABLE_AST
+	return(1);
+}
+
+
+SLL *sll_search( SLL* head, char *data, int size )
+{
+	DISABLE_AST
+	while( (head = head->next) )
+	{
+		if( !memcmp(head->user_info, data, (size_t)size) )
+		{
+			break;
+		}
+	}
+	ENABLE_AST
+	return(head);
+}
+
+
+SLL *sll_get_next(SLL* item)
+{
+	DISABLE_AST
+	if( item )
+		item = item->next;
+	ENABLE_AST
+	return(item);
+}
+
+
+int sll_empty( SLL* head )
+{
+	register int ret;
+ 
+	DISABLE_AST
+	if(head->next)
+		ret = 0;
+	else
+		ret = 1;
+	ENABLE_AST
+	return(ret);
+}
+
+
+int sll_remove( SLL* head, SLL* item )
+{
+	register int ret = 0;
+
+	DISABLE_AST
+	while( head->next )
+	{
+		if( head->next == item )
+		{
+			head->next = item->next;
+			ret = 1;
+			break;
+		}
+		head = head->next;
+	}
+	ENABLE_AST
+	return(ret);
+}	
+
+
+SLL *sll_remove_head( SLL* head ) 
+{
+	register SLL *auxp;
+
+	DISABLE_AST
+	if( (auxp = head->next) )
+	{
+		head->next = auxp->next;
+	}
+	ENABLE_AST
+	return(auxp);
+}
+
+SLL *sll_get_head( SLL* head ) 
+{
+	register SLL *auxp;
+
+	DISABLE_AST
+	auxp = head->next;
+	ENABLE_AST
+	return(auxp);
+}
+
+
+SLL *sll_search_next_remove( SLL* item, int offset, char *data, int size )
+{
+	register SLL *auxp;
+ 
+	DISABLE_AST
+	while( (auxp = item->next) )
+	{
+		if( !memcmp(&(auxp->user_info[offset]), data, (size_t)size) )
+		{
+			item->next = auxp->next;
+			break;
+		}
+		item = auxp;
+	}
+	ENABLE_AST
+	return(auxp);
+}
+
Index: branches/testFACT++branch/dim/src/swap.c
===================================================================
--- branches/testFACT++branch/dim/src/swap.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/swap.c	(revision 18277)
@@ -0,0 +1,165 @@
+/*
+ *  (Delphi Network Access) implements the network layer for the DIM
+ * (Delphi Information Managment) System.
+ *
+ * Started date   : 10-11-91
+ * Written by     : C. Gaspar
+ * UNIX adjustment: G.C. Ballintijn
+ *
+ */
+
+double _swapd( double d )
+{
+	double	r[2];
+	register char	*p, *q;
+	register int 	n;
+
+	p = (char *) &r[1];
+	q = (char *) &d;
+	for( n = sizeof(double)+1; --n; *--p = *q++) ;
+	return r[0];
+}
+
+int _swapl( int l )
+{
+	int	r[2];
+	register char	*p, *q;
+
+	p = (char *) &r[1];
+	q = (char *) &l;
+	*--p = *q++;
+	*--p = *q++;
+	*--p = *q++;
+	*--p = *q++;
+
+	return r[0];
+}
+
+short _swaps( short s )
+{
+	short	r[2];
+	register char	*p, *q;
+
+	p = (char *) &r[1];
+	q = (char *) &s;
+	*--p = *q++;
+	*--p = *q++;
+
+	return r[0];
+}
+
+double _swapd_by_addr( double *d )
+{
+	double	r[2];
+	register char	*p, *q;
+	register int 	n;
+
+	p = (char *) &r[1];
+	q = (char *) d;
+	for( n = sizeof(double)+1; --n; *--p = *q++) ;
+
+	return r[0];
+}
+
+int _swapl_by_addr( int *l )
+{
+	int	r[2];
+	register char	*p, *q;
+
+	p = (char *) &r[1];
+	q = (char *) l;
+	*--p = *q++;
+	*--p = *q++;
+	*--p = *q++;
+	*--p = *q++;
+
+	return r[0];
+}
+
+short _swaps_by_addr( short *s )
+{
+	short	r[2];
+	register char	*p, *q;
+
+	p = (char *) &r[1];
+	q = (char *) s;
+	*--p = *q++;
+	*--p = *q++;
+
+	return r[0];
+}
+
+void _swaps_buffer( short *s2, short *s1, int n)
+{
+	register char *p, *q;
+	short r[2];
+	register short *s;
+
+	p = (char *) s2;
+	q = (char *) s1;
+	if( p != q ) {
+		p += sizeof(short);
+		for( n++; --n; p += 2*sizeof(short)) {
+			*--p = *q++;
+			*--p = *q++;
+		}
+	} else {
+		for( s = s2, n++; --n; *s++ = r[0]) {
+			p = (char *) &r[1] ;
+			*--p = *q++;
+			*--p = *q++;
+		}
+	}
+}
+
+void _swapl_buffer( int *s2, int *s1, int n)
+{
+	register char *p, *q;
+	int r[2];
+	register int *l;
+
+	p = (char *) s2;
+	q = (char *) s1;
+	if( p != q ) {
+		p += sizeof(int);
+		for( n++; --n; p += 2*sizeof(int)) {
+			*--p = *q++;
+			*--p = *q++;
+			*--p = *q++;
+			*--p = *q++;
+		}
+	} else {
+		for( l = s2, n++; --n; *l++ = r[0]) {
+			p = (char *) &r[1] ;
+			*--p = *q++;
+			*--p = *q++;
+			*--p = *q++;
+			*--p = *q++;
+		}
+	}
+}
+
+
+void _swapd_buffer( double *s2, double *s1, int n)
+{
+	register char *p, *q;
+	double r[2];
+	register double *d;
+	register int m;
+
+	p = (char *) s2;
+	q = (char *) s1;
+	if( p != q ) {
+		p += sizeof(double);
+		for( n++; --n; p += 2*sizeof(double)) {
+			for( m = sizeof(double)+1; --m; *--p = *q++) ;
+		}
+	} else {
+		for( d = s2, n++; --n; *d++ = r[0]) {
+			p = (char *) &r[1] ;
+			for( m = sizeof(double)+1; --m; *--p = *q++) ;
+		}
+	}
+}
+
+
Index: branches/testFACT++branch/dim/src/tcpip.c
===================================================================
--- branches/testFACT++branch/dim/src/tcpip.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/tcpip.c	(revision 18277)
@@ -0,0 +1,1855 @@
+/*
+ * DNA (Delphi Network Access) implements the network layer for the DIM
+ * (Delphi Information Managment) System.
+ *
+ * Started           : 10-11-91
+ * Last modification : 29-07-94
+ * Written by        : C. Gaspar
+ * Adjusted by       : G.C. Ballintijn
+ *
+ */
+
+/*
+#define DEBUG
+*/
+
+#ifdef WIN32
+#define FD_SETSIZE      16384
+#define poll(pfd,nfds,timeout)	WSAPoll(pfd,nfds,timeout)
+#define ioctl ioctlsocket
+
+#define closesock myclosesocket
+#define readsock recv
+#define writesock send
+
+#define EINTR WSAEINTR
+#define EADDRNOTAVAIL WSAEADDRNOTAVAIL
+#define EWOULDBLOCK WSAEWOULDBLOCK
+#define ECONNREFUSED WSAECONNREFUSED
+#define HOST_NOT_FOUND	WSAHOST_NOT_FOUND
+#define NO_DATA	WSANO_DATA
+
+#else
+/*
+#define closesock(s) shutdown(s,2)
+*/
+#define closesock(s) close(s)
+#define readsock(a,b,c,d) read(a,b,c)
+
+#if defined(__linux__) && !defined (darwin)
+#define writesock(a,b,c,d) send(a,b,c,MSG_NOSIGNAL)
+#else
+#define writesock(a,b,c,d) write(a,b,c)
+#endif
+
+#ifdef solaris
+#define BSD_COMP
+/*
+#include <thread.h>
+*/
+#endif
+
+#ifdef LYNXOS
+#ifdef RAID
+typedef int pid_t;
+#endif
+#endif
+
+#include <ctype.h>
+#include <sys/socket.h>
+#include <fcntl.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+#include <signal.h>
+#include <sys/ioctl.h>
+#include <errno.h>
+#include <netdb.h>
+
+#endif
+
+#ifdef __linux__
+#include <poll.h>
+#define MY_FD_ZERO(set)	
+#define MY_FD_SET(fd, set)		poll_add(fd)
+#define MY_FD_CLR(fd, set)
+#define MY_FD_ISSET(fd, set)	poll_test(fd)
+#else
+#define MY_FD_ZERO(set)			FD_ZERO(set)
+#define MY_FD_SET(fd, set)		FD_SET(fd, set)
+#define MY_FD_CLR(fd, set)		FD_CLR(fd, set)
+#define MY_FD_ISSET(fd, set)	FD_ISSET(fd, set)
+#endif
+
+#include <stdio.h>
+#include <time.h>
+#define DIMLIB
+#include <dim.h>
+
+#define ushort unsigned short
+
+static int Threads_on = 0;
+
+static int init_done = FALSE;		/* Is this module initialized? */
+static int	queue_id = 0;
+
+#ifdef WIN32
+static struct sockaddr_in DIM_sockname;
+#endif
+
+static int DIM_IO_path[2] = {-1,-1};
+static int DIM_IO_Done = 0;
+static int DIM_IO_valid = 1;
+
+static int Listen_backlog = SOMAXCONN;
+static int Keepalive_timeout_set = 0;
+static int Write_timeout = WRITE_TMOUT;
+static int Write_timeout_set = 0;
+static int Write_buffer_size = TCP_SND_BUF_SIZE;
+static int Read_buffer_size = TCP_RCV_BUF_SIZE;
+
+int Tcpip_max_io_data_write = TCP_SND_BUF_SIZE - 16;
+int Tcpip_max_io_data_read = TCP_RCV_BUF_SIZE - 16;
+
+void dim_set_listen_backlog(int size)
+{
+	Listen_backlog = size;
+}
+
+int dim_get_listen_backlog()
+{
+	return(Listen_backlog);
+}
+
+void dim_set_keepalive_timeout(int secs)
+{
+	Keepalive_timeout_set = secs;
+}
+
+int dim_get_keepalive_timeout()
+{
+	int ret;
+	extern int get_keepalive_tmout();
+
+	if(!(ret = Keepalive_timeout_set))
+	{
+		ret = get_keepalive_tmout();
+		Keepalive_timeout_set = ret;
+	}
+	return(ret);
+}
+
+void dim_set_write_timeout(int secs)
+{
+	Write_timeout = secs;
+	Write_timeout_set = 1;
+}
+
+int dim_get_write_timeout()
+{
+	int ret;
+	extern int get_write_tmout();
+
+	if(!Write_timeout_set)
+	{
+		if((ret = get_write_tmout()))
+			Write_timeout = ret;
+	}
+	return(Write_timeout);
+}
+
+int dim_set_write_buffer_size(int size)
+{
+	if(size >= TCP_SND_BUF_SIZE)
+	{
+		Write_buffer_size = size;
+		Tcpip_max_io_data_write = size - 16;
+		return(1);
+	}
+	return(0);
+}
+
+int dim_get_write_buffer_size()
+{
+	return(Write_buffer_size);
+}
+
+int dim_set_read_buffer_size(int size)
+{
+	if(size >= TCP_RCV_BUF_SIZE)
+	{
+		Read_buffer_size = size;
+		Tcpip_max_io_data_read = size - 16;
+		return(1);
+	}
+	return(0);
+}
+
+int dim_get_read_buffer_size()
+{
+	return(Read_buffer_size);
+}
+
+#ifdef WIN32
+int init_sock()
+{
+	WORD wVersionRequested;
+	WSADATA wsaData;
+	int err;
+	static int sock_init_done = 0;
+
+	if(sock_init_done) return(1);
+ 	wVersionRequested = MAKEWORD( 2, 0 );
+	err = WSAStartup( wVersionRequested, &wsaData );
+
+	if ( err != 0 ) 
+	{
+    	return(0);
+	}
+
+	/* Confirm that the WinSock DLL supports 2.0.*/
+	/* Note that if the DLL supports versions greater    */
+	/* than 2.0 in addition to 2.0, it will still return */
+	/* 2.0 in wVersion since that is the version we      */
+	/* requested.                                        */
+
+	if ( LOBYTE( wsaData.wVersion ) != 2 ||
+        HIBYTE( wsaData.wVersion ) != 0 ) 
+	{
+	    WSACleanup( );
+    	return(0); 
+	}
+	sock_init_done = 1;
+	return(1);
+}
+
+int myclosesocket(int path)
+{
+	int code, ret;
+	code = WSAGetLastError();
+	ret = closesocket(path);
+	WSASetLastError(code);
+	return ret;
+}
+#endif
+
+int dim_tcpip_init(int thr_flag)
+{
+#ifdef WIN32
+	int addr, flags = 1;
+/*
+    void tcpip_task();
+*/
+	void create_io_thread(void);
+#else
+	struct sigaction sig_info;
+	sigset_t set;
+	void io_sig_handler();
+	void dummy_io_sig_handler();
+	void tcpip_pipe_sig_handler();
+#endif
+	extern int get_write_tmout();
+
+	if(init_done) 
+		return(1);
+
+	dim_get_write_timeout();
+#ifdef WIN32
+	init_sock();
+	Threads_on = 1;
+#else
+	if(thr_flag)
+	{
+		Threads_on = 1;
+	}
+	else
+	{
+		sigemptyset(&set);
+
+		sigaddset(&set,SIGALRM);
+	    sig_info.sa_handler = io_sig_handler;
+	    sig_info.sa_mask = set;
+#ifndef LYNXOS
+	    sig_info.sa_flags = SA_RESTART;
+#else
+	    sig_info.sa_flags = 0;
+#endif
+  
+		if( sigaction(SIGIO, &sig_info, 0) < 0 ) 
+		{
+			perror( "sigaction(SIGIO)" );
+			exit(1);
+		}
+	      
+	    sigemptyset(&set);
+	    sig_info.sa_handler = tcpip_pipe_sig_handler;
+	    sig_info.sa_mask = set;
+#ifndef LYNXOS 
+	    sig_info.sa_flags = SA_RESTART;
+#else
+	    sig_info.sa_flags = 0;
+#endif
+
+	    if( sigaction(SIGPIPE, &sig_info, 0) < 0 ) {
+			perror( "sigaction(SIGPIPE)" );
+			exit(1);
+	    }
+	  
+	}
+#endif
+	if(Threads_on)
+	{
+#ifdef WIN32
+		if(DIM_IO_path[0] == -1)
+		{
+			if( (DIM_IO_path[0] = (int)socket(AF_INET, SOCK_STREAM, 0)) == -1 ) 
+			{
+				perror("socket");
+				return(0);
+			}
+		
+			DIM_sockname.sin_family = PF_INET;
+			addr = 0;
+			DIM_sockname.sin_addr = *((struct in_addr *) &addr);
+			DIM_sockname.sin_port = htons((ushort) 2000); 
+			ioctl(DIM_IO_path[0], FIONBIO, &flags);
+		}
+#else
+		if(DIM_IO_path[0] == -1)
+		{
+			pipe(DIM_IO_path);
+		}
+#endif
+	}
+	if(!queue_id)
+		queue_id = dtq_create();
+
+#ifdef WIN32
+/*
+#ifndef STDCALL
+	tid = _beginthread((void *)(void *)tcpip_task,0,NULL);
+#else
+	tid = _beginthreadex(NULL, NULL,
+			tcpip_task,0,0,NULL);
+#endif
+*/
+	create_io_thread();
+#endif
+	init_done = 1;
+	return(1);
+}
+
+void dim_tcpip_stop()
+{
+#ifdef WIN32
+	closesock(DIM_IO_path[0]);
+#else
+	close(DIM_IO_path[0]);
+	close(DIM_IO_path[1]);
+#endif
+	DIM_IO_path[0] = -1;
+	DIM_IO_path[1] = -1;
+	DIM_IO_Done = 0;
+	init_done = 0;
+}
+
+static int enable_sig(int conn_id)
+{
+	int ret = 1, flags = 1;
+#ifndef WIN32
+	int pid;
+#endif
+
+#ifdef DEBUG
+	if(!Net_conns[conn_id].channel)
+	{
+	    printf("Enabling signals on channel 0\n");
+	    fflush(stdout);
+	}
+#endif
+
+	if(!init_done)
+	{
+		dim_tcpip_init(0);
+	}
+	if(Threads_on)
+	{
+#ifdef WIN32
+		DIM_IO_valid = 0;
+/*
+		ret = connect(DIM_IO_path[0], (struct sockaddr*)&DIM_sockname, sizeof(DIM_sockname));
+*/
+		closesock(DIM_IO_path[0]);
+		DIM_IO_path[0] = -1;
+		if( (DIM_IO_path[0] = (int)socket(AF_INET, SOCK_STREAM, 0)) == -1 ) 
+		{
+			perror("socket");
+			return(1);
+		}		
+		ret = ioctl(DIM_IO_path[0], FIONBIO, &flags);
+		if(ret != 0)
+		{
+			perror("ioctlsocket");
+		}
+		DIM_IO_valid = 1;
+#else
+		if(DIM_IO_path[1] != -1)
+		{
+			if(!DIM_IO_Done)
+			{
+				DIM_IO_Done = 1;
+				write(DIM_IO_path[1], &flags, 4);
+			}
+		}
+#endif
+	}
+#ifndef WIN32
+	if(!Threads_on)
+	{
+	    pid = getpid();
+
+#ifndef __linux__
+		ret = ioctl(Net_conns[conn_id].channel, SIOCSPGRP, &pid );
+#else
+	    ret = fcntl(Net_conns[conn_id].channel,F_SETOWN, pid);
+#endif
+	    if(ret == -1)
+	    {
+#ifdef DEBUG
+	        printf("ioctl returned -1\n");
+#endif
+			return(ret);
+	    }
+	}
+	ret = ioctl(Net_conns[conn_id].channel, FIOASYNC, &flags );
+	if(ret == -1)
+	{
+#ifdef DEBUG
+		printf("ioctl1 returned -1\n");
+#endif
+		return(ret);
+	}
+	
+    flags = fcntl(Net_conns[conn_id].channel,F_GETFD,0);
+#ifdef DEBUG
+    if(flags == -1)
+    {
+		printf("error\n");
+    }
+#endif
+    ret = fcntl(Net_conns[conn_id].channel,F_SETFD, flags | FD_CLOEXEC );
+    if(ret == -1)
+    {
+#ifdef DEBUG
+		printf("ioctl2 returned -1\n");
+#endif
+		return(ret);
+    }
+#endif
+	return(1);
+}
+
+#ifdef __linux__
+int tcpip_get_send_space(int conn_id)
+{
+	int ret, n_bytes;
+		
+	ret = ioctl(Net_conns[conn_id].channel, TIOCOUTQ, &n_bytes );
+	if(ret == -1) 
+	{
+#ifdef DEBUG
+		printf("Couln't get send buffer free size, ret =  %d\n", ret);
+#endif
+		return(0);
+	}
+/*
+	printf("tcpip_get_send_space %d\n", Write_buffer_size - n_bytes);
+*/
+	return(Write_buffer_size - n_bytes);
+}
+#endif
+
+/*
+static void dump_list()
+{
+	int	i;
+
+	for( i = 1; i < Curr_N_Conns; i++ )
+		if( Dna_conns[i].busy ) {
+			printf( "dump_list: conn_id=%d reading=%d\n",
+				i, Net_conns[i].reading );
+		}
+}
+*/
+
+#ifdef __linux__
+static struct pollfd *Pollfds = 0;
+static int Pollfd_size = 0;
+
+static int poll_create()
+{
+	int i;
+	if(Pollfd_size == 0)
+	{
+		Pollfd_size = Curr_N_Conns;
+		Pollfds = malloc(Pollfd_size * sizeof(struct pollfd));
+		Pollfds[0].fd = -1;
+		for(i = 0; i < Pollfd_size; i++)
+		{
+			Pollfds[i].events = POLLIN;
+		}
+	}
+	else if(Pollfd_size < Curr_N_Conns)
+	{
+		free(Pollfds);
+		Pollfd_size = Curr_N_Conns;
+		Pollfds = malloc(Pollfd_size * sizeof(struct pollfd));
+		Pollfds[0].fd = -1;
+		for(i = 0; i < Pollfd_size; i++)
+		{
+			Pollfds[i].events = POLLIN;
+		}
+	}
+	return 1;
+}
+
+static int poll_add(int fd)
+{
+	Pollfds[0].fd = fd;
+	return 1;
+}
+
+static int poll_test(int fd)
+{
+	if(Pollfds[0].fd == fd)
+	{
+		if( (Pollfds[0].revents & POLLIN) || (Pollfds[0].revents & POLLHUP) ) 
+		{
+		    Pollfds[0].revents = 0;
+			return 1;
+		}
+	}
+	return 0;
+}
+#endif
+
+static int list_to_fds( fd_set *fds )
+{
+	int	i;
+	int found = 0;
+
+	DISABLE_AST
+#ifdef __linux__
+	if(fds) {}
+	poll_create();
+#else
+	FD_ZERO( fds ) ;
+#endif
+	for( i = 1; i < Curr_N_Conns; i++ )
+    {
+#ifdef __linux__
+		Pollfds[i].fd = -1;
+#endif
+		if( Dna_conns[i].busy )
+		{
+			if(Net_conns[i].channel)
+			{
+				found = 1;
+#ifdef __linux__
+				Pollfds[i].fd = Net_conns[i].channel;
+#else
+				FD_SET( Net_conns[i].channel, fds );
+#endif
+
+			}
+		}
+	}
+	ENABLE_AST
+	return(found);
+}
+
+static int fds_get_entry( fd_set *fds, int *conn_id ) 
+{
+	int	i;
+
+#ifdef __linux__
+	int index = *conn_id;
+	if(fds) {}
+	index++;
+	for( i = index; i < Pollfd_size; i++ )
+	{
+		if( Dna_conns[i].busy && (
+		    (Pollfds[i].revents & POLLIN) || (Pollfds[i].revents & POLLHUP) ) ) 
+		{
+		    Pollfds[i].revents = 0;
+		    if(Net_conns[i].channel)
+		    {
+				*conn_id = i;
+				return 1;
+			}
+		}
+	}
+	return 0;
+#else
+	for( i = 1; i < Curr_N_Conns; i++ )
+	{
+		if( Dna_conns[i].busy &&
+		    FD_ISSET(Net_conns[i].channel, fds) )
+		{
+			if(Net_conns[i].channel)
+		    {
+				*conn_id = i;
+				return 1;
+			}
+		}
+	}
+	return 0;
+#endif
+}
+
+#if defined(__linux__) && !defined (darwin)
+
+void tcpip_set_keepalive( int channel, int tmout )
+{
+   int val;
+
+   /* Enable keepalive for the given channel */
+   val = 1;
+   setsockopt(channel, SOL_SOCKET, SO_KEEPALIVE, (char*)&val, sizeof(val));
+
+   /* Set the keepalive poll interval to something small.
+      Warning: this section may not be portable! */
+   val = tmout;
+   setsockopt(channel, IPPROTO_TCP, TCP_KEEPIDLE, (char*)&val, sizeof(val));
+   val = 3;
+   setsockopt(channel, IPPROTO_TCP, TCP_KEEPCNT, (char*)&val, sizeof(val));
+   val = tmout/3;
+   setsockopt(channel, IPPROTO_TCP, TCP_KEEPINTVL, (char*)&val, sizeof(val));
+}
+
+#else
+
+static void tcpip_test_write( int conn_id )
+{
+	/* Write to every socket we use, which uses the TCPIP protocol,
+	 * which has an established connection (reading), which is currently
+	 * not writing data, so we can check if it is still alive.
+	 */
+	time_t cur_time;
+	
+	if(strcmp(Net_conns[conn_id].node,"MYNODE"))
+	{
+		cur_time = time(NULL);
+		if( cur_time - Net_conns[conn_id].last_used > Net_conns[conn_id].timeout )
+		{
+			dna_test_write( conn_id );
+		}
+	}
+}
+
+#endif
+
+void tcpip_set_test_write(int conn_id, int timeout)
+{
+
+#if defined(__linux__) && !defined (darwin)
+	tcpip_set_keepalive(Net_conns[conn_id].channel, timeout);
+#else
+
+	Net_conns[conn_id].timr_ent = dtq_add_entry( queue_id, timeout, 
+		tcpip_test_write, conn_id );
+	Net_conns[conn_id].timeout = timeout;
+	Net_conns[conn_id].last_used = time(NULL);
+
+#endif
+
+}
+
+void tcpip_rem_test_write(int conn_id)
+{
+	if(Net_conns[conn_id].timr_ent)
+	{
+		dtq_rem_entry(queue_id, Net_conns[conn_id].timr_ent);
+		Net_conns[conn_id].timr_ent = NULL;
+	}
+	Net_conns[conn_id].last_used = time(NULL);
+}
+
+void tcpip_pipe_sig_handler( int num )
+{
+	if(num){}
+/*
+	printf( "*** pipe_sig_handler called ***\n" );
+*/
+}
+
+static int get_bytes_to_read(int conn_id)
+{
+	int i, ret, count = 0;
+	
+	for(i = 0; i < 3; i++)
+	{
+		ret = ioctl( Net_conns[conn_id].channel, FIONREAD, &count );
+	    if( ret != 0)
+		{
+			count = 0;
+			break;
+	    }
+	    if(count > 0)
+	    {
+			break;
+	    }
+	}
+	return(count);
+}
+
+static int do_read( int conn_id )
+{
+	/* There is 'data' pending, read it.
+	 */
+	int	len, totlen, size, count;
+	char	*p;
+
+	count = get_bytes_to_read(conn_id);
+	if(!count)
+	{
+/*
+		dna_report_error(conn_id, -1,
+			"Connection closed by remote peer", DIM_ERROR, DIMTCPRDERR);
+		printf("conn_id %d\n", conn_id);
+*/
+		Net_conns[conn_id].read_rout( conn_id, -1, 0 );
+		return 0;
+	}
+
+	size = Net_conns[conn_id].size;
+	p = Net_conns[conn_id].buffer;
+	totlen = 0;
+/*
+	count = 1;
+*/
+	while( size > 0 && count > 0 )
+	{
+/*
+		would this be better? not sure afterwards...
+		nbytes = (size < count) ? size : count;
+		if( (len = readsock(Net_conns[conn_id].channel, p, (size_t)nbytes, 0)) <= 0 ) 
+*/
+		if( (len = (int)readsock(Net_conns[conn_id].channel, p, (size_t)size, 0)) <= 0 ) 
+		{	/* Connection closed by other side. */
+			Net_conns[conn_id].read_rout( conn_id, -1, 0 );
+			return 0;
+		} 
+		else 
+		{
+			
+			/*
+			printf("tcpip: read %d bytes:\n",len); 
+			printf( "buffer[0]=%d\n", vtohl((int *)p[0]));
+			printf( "buffer[1]=%d\n", vtohl((int *)p[1]));
+			printf( "buffer[2]=%x\n", vtohl((int *)p[2]));
+			*/
+			totlen += len;
+			size -= len;
+			p += len;
+		}
+		if(size)
+			count = get_bytes_to_read(conn_id);
+	}
+
+	Net_conns[conn_id].last_used = time(NULL);
+	Net_conns[conn_id].read_rout( conn_id, 1, totlen );
+	return 1;
+}
+
+
+void do_accept( int conn_id )
+{
+	/* There is a 'connect' pending, serve it.
+	 */
+	struct sockaddr_in	other;
+	int			othersize;
+
+	othersize = sizeof(other);
+	memset( (char *) &other, 0, (size_t)othersize );
+	Net_conns[conn_id].mbx_channel = (int)accept( Net_conns[conn_id].channel,
+						 (struct sockaddr*)&other, (unsigned int *)&othersize );
+	if( Net_conns[conn_id].mbx_channel < 0 ) 
+	{
+		return;
+	}
+/*
+	else
+	{
+			int all, a, b, c, d;
+			char *pall;
+
+			all = other.sin_addr.s_addr;
+			pall = &all;
+			a = pall[0];
+			a &= 0x000000ff;
+			b = pall[1];
+			b &= 0x000000ff;
+			c = pall[2];
+			c &= 0x000000ff;
+			d = pall[3];
+			d &= 0x000000ff;
+printf("TCPIP got %d.%d.%d.%d \n",
+		a,b,c,d);
+		if((a == 134) && (b == 79) && (c == 157) && (d == 40))
+		{
+			closesock(Net_conns[conn_id].mbx_channel);
+			return;
+		}
+	}
+*/
+
+	Net_conns[conn_id].last_used = time(NULL);
+	Net_conns[conn_id].read_rout( Net_conns[conn_id].mbx_channel,
+				      conn_id, TCPIP );
+}
+
+void io_sig_handler(int num)
+{
+    fd_set	rfds;
+    int	conn_id, ret, selret, count;
+	struct timeval	timeout;
+
+	if(num){}
+	do
+	{
+		timeout.tv_sec = 0;		/* Don't wait, just poll */
+		timeout.tv_usec = 0;
+		list_to_fds( &rfds );
+#ifdef __linux__
+		selret = poll(Pollfds, Pollfd_size, 0);
+#else
+		selret = select(FD_SETSIZE, &rfds, NULL, NULL, &timeout);
+#endif
+		if(selret > 0)
+		{
+			conn_id = 0;
+			while( (ret = fds_get_entry( &rfds, &conn_id )) > 0 ) 
+			{
+				if( Net_conns[conn_id].reading )
+				{
+					count = 0;
+					do
+					{
+						if(Net_conns[conn_id].channel)
+						{
+							do_read( conn_id );
+							count = get_bytes_to_read(conn_id);
+						}
+						else
+						{
+							count = 0;
+						}
+					}while(count > 0 );
+				}
+				else
+				{
+					do_accept( conn_id );
+				}
+				MY_FD_CLR( (unsigned)Net_conns[conn_id].channel, &rfds );
+	    	}
+		}
+	}while(selret > 0);
+}
+
+void tcpip_task( void *dummy)
+{
+	/* wait for an IO signal, find out what is happening and
+	 * call the right routine to handle the situation.
+	 */
+	fd_set	rfds, *pfds;
+#ifndef __linux__
+	fd_set efds;
+#endif
+	int	conn_id, ret, count;
+#ifndef WIN32
+	int data;
+#endif
+	if(dummy){}
+	while(1)
+	{
+		while(!DIM_IO_valid)
+			dim_usleep(1000);
+
+		list_to_fds( &rfds );
+		MY_FD_ZERO(&efds);
+#ifdef WIN32
+		pfds = &efds;
+#else
+		pfds = &rfds;
+#endif
+		MY_FD_SET( DIM_IO_path[0], pfds );
+#ifdef __linux__
+		ret = poll(Pollfds, Pollfd_size, -1);
+#else
+		ret = select(FD_SETSIZE, &rfds, NULL, &efds, NULL);
+#endif
+		if(ret <= 0)
+		  {
+		    printf("poll returned %d, errno %d\n", ret, errno);
+		  }
+		if(ret > 0)
+		{
+			if(MY_FD_ISSET(DIM_IO_path[0], pfds) )
+			{
+#ifndef WIN32
+				read(DIM_IO_path[0], &data, 4);
+				DIM_IO_Done = 0;
+#endif
+				MY_FD_CLR( (unsigned)DIM_IO_path[0], pfds );
+			}
+/*
+			{
+			DISABLE_AST
+*/
+			conn_id = 0;
+			while( (ret = fds_get_entry( &rfds, &conn_id )) > 0 ) 
+			{
+				if( Net_conns[conn_id].reading )
+				{
+					count = 0;
+					do
+					{
+						DISABLE_AST
+						if(Net_conns[conn_id].channel)
+						{
+							do_read( conn_id );
+							count = get_bytes_to_read(conn_id);
+						}
+						else
+						{
+							count = 0;
+						}
+						ENABLE_AST
+					}while(count > 0 );
+				}
+				else
+				{
+					DISABLE_AST
+					do_accept( conn_id );
+					ENABLE_AST
+				}
+				MY_FD_CLR( (unsigned)Net_conns[conn_id].channel, &rfds );
+			}
+/*
+			ENABLE_AST
+			}
+*/
+#ifndef WIN32
+			return;
+#endif
+		}
+	}
+}
+
+int tcpip_start_read( int conn_id, char *buffer, int size, void (*ast_routine)() )
+{
+	/* Install signal handler stuff on the socket, and record
+	 * some necessary information: we are reading, and want size
+	 * as size, and use buffer.
+	 */
+
+	Net_conns[conn_id].read_rout = ast_routine;
+	Net_conns[conn_id].buffer = buffer;
+	Net_conns[conn_id].size = size;
+	if(Net_conns[conn_id].reading == -1)
+	{
+		if(enable_sig( conn_id ) == -1)
+		{
+#ifdef DEBUG
+			printf("START_READ - enable_sig returned -1\n");
+#endif
+			return(0);
+		}
+	}
+	Net_conns[conn_id].reading = TRUE;
+	return(1);
+}
+
+int check_node_addr( char *node, unsigned char *ipaddr)
+{
+unsigned char *ptr;
+int ret;
+
+	ptr = (unsigned char *)node+(int)strlen(node)+1;
+    ipaddr[0] = *ptr++;
+    ipaddr[1] = *ptr++;
+    ipaddr[2] = *ptr++;
+    ipaddr[3] = *ptr++;
+	if( (ipaddr[0] == 0xff) &&
+		(ipaddr[1] == 0xff) &&
+		(ipaddr[2] == 0xff) &&
+		(ipaddr[3] == 0xff) )
+	{
+		errno = ECONNREFUSED;	/* fake an error code */
+#ifdef WIN32
+		WSASetLastError(errno);
+#endif
+		return(0);
+	}
+	if( gethostbyaddr(ipaddr, sizeof(ipaddr), AF_INET) == (struct hostent *)0 )
+	{
+#ifndef WIN32
+		ret = h_errno;
+#else
+		ret = WSAGetLastError();
+#endif
+		if((ret == HOST_NOT_FOUND) || (ret == NO_DATA))
+				return(0);
+/*		
+		errno = ECONNREFUSED;
+#ifdef WIN32
+		WSASetLastError(errno);
+#endif
+		return(0);
+*/
+	}
+	return(1);
+}
+
+int tcpip_open_client( int conn_id, char *node, char *task, int port )
+{
+	/* Create connection: create and initialize socket stuff. Try
+	 * and make a connection with the server.
+	 */
+	struct sockaddr_in sockname;
+#ifndef VxWorks
+	struct hostent *host = 0;
+#else
+	int host_addr;
+#endif
+	int path, val, ret_code, ret;
+	int a,b,c,d;
+/* Fix for gcc 4.6 "dereferencing type-punned pointer will break strict-aliasing rules"?!*/
+	unsigned char ipaddr_buff[4];
+	unsigned char *ipaddr = ipaddr_buff;
+	int host_number = 0;
+
+    dim_tcpip_init(0);
+	if(isdigit(node[0]))
+	{
+		sscanf(node,"%d.%d.%d.%d",&a, &b, &c, &d);
+	    ipaddr[0] = (unsigned char)a;
+	    ipaddr[1] = (unsigned char)b;
+	    ipaddr[2] = (unsigned char)c;
+	    ipaddr[3] = (unsigned char)d;
+	    host_number = 1;
+/*
+#ifndef VxWorks
+		if( gethostbyaddr(ipaddr, sizeof(ipaddr), AF_INET) == (struct hostent *)0 )
+		{
+#ifndef WIN32
+			ret = h_errno;
+#else
+			ret = WSAGetLastError();
+#endif
+//			if((ret == HOST_NOT_FOUND) || (ret == NO_DATA))
+//			{
+//				if(!check_node_addr(node, ipaddr))
+//					return(0);
+//			}
+		}
+#endif
+*/
+	}
+#ifndef VxWorks
+	else if( (host = gethostbyname(node)) == (struct hostent *)0 ) 
+	{
+		if(!check_node_addr(node, ipaddr))
+			return(0);
+		host_number = 1;
+/*
+          ptr = (unsigned char *)node+(int)strlen(node)+1;
+          ipaddr[0] = *ptr++;
+          ipaddr[1] = *ptr++;
+          ipaddr[2] = *ptr++;
+          ipaddr[3] = *ptr++;
+          host_number = 1;
+		  if( (ipaddr[0] == 0xff) &&
+			  (ipaddr[1] == 0xff) &&
+			  (ipaddr[2] == 0xff) &&
+			  (ipaddr[3] == 0xff) )
+		  {
+			  errno = ECONNREFUSED;
+#ifdef WIN32
+			  WSASetLastError(errno);
+#endif
+			  return(0);
+		  }
+		  if( gethostbyaddr(ipaddr, sizeof(ipaddr), AF_INET) == (struct hostent *)0 )
+		  {
+			  errno = ECONNREFUSED;
+#ifdef WIN32
+			  WSASetLastError(errno);
+#endif
+			  return(0);
+		  }
+*/
+	}
+#else
+	*(strchr(node,'.')) = '\0';
+	host_addr = hostGetByName(node);
+	printf("node %s addr: %x\n",node, host_addr);
+#endif
+
+	if( (path = (int)socket(AF_INET, SOCK_STREAM, 0)) == -1 ) 
+	{
+		perror("socket");
+		return(0);
+	}
+
+	val = 1;
+      
+	if ((ret_code = setsockopt(path, IPPROTO_TCP, TCP_NODELAY, 
+			(char*)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set TCP_NODELAY\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+
+	val = Write_buffer_size;      
+	if ((ret_code = setsockopt(path, SOL_SOCKET, SO_SNDBUF, 
+			(char*)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set SO_SNDBUF\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+
+	val = Read_buffer_size;
+	if ((ret_code = setsockopt(path, SOL_SOCKET, SO_RCVBUF, 
+			(char*)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set SO_RCVBUF\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+
+#if defined(__linux__) && !defined (darwin)
+	val = 2;
+	if ((ret_code = setsockopt(path, IPPROTO_TCP, TCP_SYNCNT, 
+			(char*)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set TCP_SYNCNT\n");
+#endif
+	}
+#endif
+
+	sockname.sin_family = PF_INET;
+#ifndef VxWorks
+    if(host_number)
+		sockname.sin_addr = *((struct in_addr *) ipaddr);
+    else
+		sockname.sin_addr = *((struct in_addr *) host->h_addr);
+#else
+    if(host_number)
+		sockname.sin_addr = *((struct in_addr *) ipaddr);
+    else
+		sockname.sin_addr = *((struct in_addr *) &host_addr);
+#endif
+	sockname.sin_port = htons((ushort) port); /* port number to send to */
+	while((ret = connect(path, (struct sockaddr*)&sockname, sizeof(sockname))) == -1 )
+	{
+		if(errno != EINTR)
+		{
+			closesock(path);
+			return(0);
+		}
+	}
+	strcpy( Net_conns[conn_id].node, node );
+	strcpy( Net_conns[conn_id].task, task );
+	Net_conns[conn_id].channel = path;
+	Net_conns[conn_id].port = port;
+	Net_conns[conn_id].last_used = time(NULL);
+	Net_conns[conn_id].reading = -1;
+	Net_conns[conn_id].timr_ent = NULL;
+	Net_conns[conn_id].write_timedout = 0;
+	return(1);
+}
+
+int tcpip_open_server( int conn_id, char *task, int *port )
+{
+	/* Create connection: create and initialize socket stuff,
+	 * find a free port on this node.
+	 */
+	struct sockaddr_in sockname;
+	int path, val, ret_code, ret;
+
+    dim_tcpip_init(0);
+	if( (path = (int)socket(AF_INET, SOCK_STREAM, 0)) == -1 ) 
+	{
+		return(0);
+	}
+
+	val = 1;
+	if ((ret_code = setsockopt(path, IPPROTO_TCP, TCP_NODELAY, 
+			(char*)&val, sizeof(val))) == -1 ) 
+
+	{
+#ifdef DEBUG
+		printf("Couln't set TCP_NODELAY\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+
+	val = Write_buffer_size;
+	if ((ret_code = setsockopt(path, SOL_SOCKET, SO_SNDBUF, 
+			(void *)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set SO_SNDBUF\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+/*
+	sval1 = sizeof(val1);
+	if ((ret_code = getsockopt(path, SOL_SOCKET, SO_SNDBUF, 
+			(void *)&val1, &sval1)) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set SO_SNDBUF\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+printf("Set size to %d, got size %d\n", val, val1);
+*/
+	val = Read_buffer_size;
+	if ((ret_code = setsockopt(path, SOL_SOCKET, SO_RCVBUF, 
+			(void *)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set SO_RCVBUF\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+
+	if( *port == SEEK_PORT ) 
+	{	/* Search a free one. */
+		*port = START_PORT_RANGE - 1;
+		do 
+		{
+			(*port)++;
+			sockname.sin_family = AF_INET;
+			sockname.sin_addr.s_addr = INADDR_ANY;
+			sockname.sin_port = htons((ushort) *port);
+			if( *port > STOP_PORT_RANGE ) {
+				errno = EADDRNOTAVAIL;	/* fake an error code */
+				closesock(path);
+#ifdef WIN32
+				WSASetLastError(errno);
+#endif
+				return(0);
+			}
+			ret = bind(path, (struct sockaddr*)&sockname, sizeof(sockname));
+/*
+printf("Trying port %d, ret = %d\n", *port, ret);
+*/
+		} while( ret == -1 );
+/*
+		} while( bind(path, (struct sockaddr*)&sockname, sizeof(sockname)) == -1 );
+*/
+	} else {
+#ifndef WIN32
+		val = 1;
+		if( setsockopt(path, SOL_SOCKET, SO_REUSEADDR, (char*)&val, 
+			sizeof(val)) == -1 )
+		{
+#ifdef DEBUG
+			printf("Couln't set SO_REUSEADDR\n");
+#endif
+			closesock(path); 
+			return(0);
+		}
+#endif
+		sockname.sin_family = AF_INET;
+		sockname.sin_addr.s_addr = INADDR_ANY;
+		sockname.sin_port = htons((ushort) *port);
+		if( (ret = bind(path, (struct sockaddr*) &sockname, sizeof(sockname))) == -1 )
+		{
+			closesock(path);
+			return(0);
+		}
+	}
+
+	if( (ret = listen(path, Listen_backlog)) == -1 )
+	{
+		closesock(path);
+		return(0);
+	}
+
+	strcpy( Net_conns[conn_id].node, "MYNODE" );
+	strcpy( Net_conns[conn_id].task, task );
+	Net_conns[conn_id].channel = path;
+	Net_conns[conn_id].port = *port;
+	Net_conns[conn_id].last_used = time(NULL);
+	Net_conns[conn_id].reading = -1;
+	Net_conns[conn_id].timr_ent = NULL;
+	Net_conns[conn_id].write_timedout = 0;
+	return(1);
+}
+
+
+int tcpip_start_listen( int conn_id, void (*ast_routine)() )
+{
+	/* Install signal handler stuff on the socket, and record
+	 * some necessary information: we are NOT reading, thus
+	 * no size.
+	 */
+
+	Net_conns[conn_id].read_rout = ast_routine;
+	Net_conns[conn_id].size = -1;
+	if(Net_conns[conn_id].reading == -1)
+	{
+		if(enable_sig( conn_id ) == -1)
+		{
+#ifdef DEBUG
+			printf("START_LISTEN - enable_sig returned -1\n");
+#endif
+			return(0);
+		}
+	}
+	Net_conns[conn_id].reading = FALSE;
+	return(1);
+}
+
+
+int tcpip_open_connection( int conn_id, int path )
+{
+	/* Fill in/clear some fields, the node and task field
+	 * get filled in later by a special packet.
+	 */
+	int val, ret_code;
+
+
+	val = 1;
+	if ((ret_code = setsockopt(path, IPPROTO_TCP, TCP_NODELAY, 
+			(char*)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set TCP_NODELAY\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+	val = Write_buffer_size;      
+	if ((ret_code = setsockopt(path, SOL_SOCKET, SO_SNDBUF, 
+			(char*)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set SO_SNDBUF\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+
+	val = Read_buffer_size;
+	if ((ret_code = setsockopt(path, SOL_SOCKET, SO_RCVBUF, 
+			(char*)&val, sizeof(val))) == -1 ) 
+	{
+#ifdef DEBUG
+		printf("Couln't set SO_RCVBUF\n");
+#endif
+		closesock(path); 
+		return(0);
+	}
+
+	Net_conns[conn_id].channel = path;
+	Net_conns[conn_id].node[0] = 0;
+	Net_conns[conn_id].task[0] = 0;
+	Net_conns[conn_id].port = 0;
+	Net_conns[conn_id].reading = -1;
+	Net_conns[conn_id].timr_ent = NULL;
+	Net_conns[conn_id].write_timedout = 0;
+	return(1);
+}
+
+
+void tcpip_get_node_task( int conn_id, char *node, char *task )
+{
+	strcpy( node, Net_conns[conn_id].node );
+	strcpy( task, Net_conns[conn_id].task );
+}
+
+int tcpip_write( int conn_id, char *buffer, int size )
+{
+	/* Do a (synchronous) write to conn_id.
+	 */
+	int	wrote;
+
+	wrote = (int)writesock( Net_conns[conn_id].channel, buffer, (size_t)size, 0 );
+	if( wrote == -1 ) {
+/*
+		Net_conns[conn_id].read_rout( conn_id, -1, 0 );
+*/
+		dna_report_error(conn_id, 0,
+			"Writing (blocking) to", DIM_ERROR, DIMTCPWRRTY);
+		return(0);
+	}
+	return(wrote);
+}
+
+int set_non_blocking(int channel)
+{
+  int ret, flags = 1;
+	ret = ioctl(channel, FIONBIO, &flags );
+	if(ret == -1)
+	{
+#ifdef DEBUG
+	    printf("ioctl non block returned -1\n");
+#endif
+		return(ret);
+	}
+	return(1);
+}
+
+int set_blocking(int channel)
+{
+  int ret, flags = 0;
+	ret = ioctl(channel, FIONBIO, &flags );
+	if(ret == -1)
+	{
+#ifdef DEBUG
+	    printf("ioctl block returned -1\n");
+#endif
+		return(ret);
+	}
+	return(1);
+}
+
+int tcpip_write_nowait( int conn_id, char *buffer, int size )
+{
+	/* Do a (asynchronous) write to conn_id.
+	 */
+	int	wrote, ret, selret;
+	int tcpip_would_block();
+#ifdef __linux__
+	struct pollfd pollitem;
+#else
+	struct timeval	timeout;
+	fd_set wfds;
+#endif
+	
+	set_non_blocking(Net_conns[conn_id].channel);
+/*
+#ifdef __linux__
+	tcpip_get_send_space(conn_id);
+#endif
+*/
+	wrote = (int)writesock( Net_conns[conn_id].channel, buffer, (size_t)size, 0 );
+#ifndef WIN32
+	ret = errno;
+#else
+	ret = WSAGetLastError();
+#endif
+/*
+	if((wrote == -1) && (!tcpip_would_block(ret)))
+	{
+	dna_report_error(conn_id, 0,
+			"Writing (non-blocking) to", DIM_ERROR, DIMTCPWRRTY);
+printf("Writing %d, ret = %d\n", size, ret);
+	}
+*/
+	set_blocking(Net_conns[conn_id].channel);
+	if(wrote == -1)
+	{
+		if(tcpip_would_block(ret))
+		{
+#ifdef __linux__
+		  pollitem.fd = Net_conns[conn_id].channel;
+		  pollitem.events = POLLOUT;
+		  pollitem.revents = 0;
+		  selret = poll(&pollitem, 1, Write_timeout*1000);
+#else
+			timeout.tv_sec = Write_timeout;
+			timeout.tv_usec = 0;
+			FD_ZERO(&wfds);
+			FD_SET( Net_conns[conn_id].channel, &wfds);
+			selret = select(FD_SETSIZE, NULL, &wfds, NULL, &timeout);
+#endif
+			if(selret > 0)
+			{
+				wrote = (int)writesock( Net_conns[conn_id].channel, buffer, (size_t)size, 0 );
+				if( wrote == -1 ) 
+				{
+					dna_report_error(conn_id, 0,
+						"Writing to", DIM_ERROR, DIMTCPWRRTY);
+					return(0);
+				}
+			}
+		}
+		else
+		{
+			dna_report_error(conn_id, 0,
+				"Writing (non-blocking) to", DIM_ERROR, DIMTCPWRRTY);
+			return(0);
+		}
+	}
+	if(wrote == -1)
+	{
+		Net_conns[conn_id].write_timedout = 1;
+	}
+	return(wrote);
+}
+
+int tcpip_close( int conn_id )
+{
+	int channel;
+	/* Clear all traces of the connection conn_id.
+	 */
+	if(Net_conns[conn_id].timr_ent)
+	{
+		dtq_rem_entry(queue_id, Net_conns[conn_id].timr_ent);
+		Net_conns[conn_id].timr_ent = NULL;
+	}
+	channel = Net_conns[conn_id].channel;
+	Net_conns[conn_id].channel = 0;
+	Net_conns[conn_id].port = 0;
+	Net_conns[conn_id].node[0] = 0;
+	Net_conns[conn_id].task[0] = 0;
+	if(channel)
+	{
+		if(Net_conns[conn_id].write_timedout)
+		{
+			Net_conns[conn_id].write_timedout = 0;
+#if defined(__linux__) && !defined (darwin)
+			shutdown(channel, 2);
+#endif
+		}
+		closesock(channel);
+	}
+	return(1);
+}
+
+
+int tcpip_failure( int code )
+{
+	return(!code);
+}
+
+int tcpip_would_block( int code )
+{
+   if(code == EWOULDBLOCK)
+		return(1);
+    return(0);
+}
+
+void tcpip_report_error( int code )
+{
+#ifndef WIN32
+	if(code){}
+	perror("tcpip");
+#else
+	int my_perror();
+
+	my_perror("tcpip", code);
+#endif
+}
+
+#ifdef WIN32
+int my_perror(char *str, int error)
+{
+int code;
+
+	if(error <= 0)
+		code = WSAGetLastError();
+	else
+		code = error;
+	printf("new - %s\n",strerror(code));
+	printf("%s: ",str);
+	switch(code)
+	{
+		case WSAEWOULDBLOCK:
+			printf("Operation would block");
+			break;
+		case WSAEINPROGRESS:
+			printf("Operation now in progress");
+			break;
+		case WSAEALREADY:
+			printf("Operation already in progress");
+			break;
+		case WSAENOTSOCK:
+			printf("Socket operation on non-socket");
+			break;
+		case WSAEDESTADDRREQ:
+			printf("Destination address required");
+			break;
+		case WSAEMSGSIZE:
+			printf("Message too long");
+			break;
+		case WSAEPROTOTYPE:
+			printf("Protocol wrong type for socket");
+			break;
+		case WSAENOPROTOOPT:
+			printf("Protocol not available");
+			break;
+		case WSAEPROTONOSUPPORT:
+			printf("Protocol not supported");
+			break;
+		case WSAESOCKTNOSUPPORT:
+			printf("Socket type not supported");
+			break;
+		case WSAEOPNOTSUPP:
+			printf("Operation not supported on transport endpoint");
+			break;
+		case WSAEPFNOSUPPORT:
+			printf("Protocol family not supported");
+			break;
+		case WSAEAFNOSUPPORT:
+			printf("Address family not supported by protocol");
+			break;
+		case WSAEADDRINUSE:
+			printf("Address already in use");
+			break;
+		case WSAEADDRNOTAVAIL:
+			printf("Cannot assign requested address");
+			break;
+		case WSAENETDOWN:
+			printf("Network is down");
+			break;
+		case WSAENETUNREACH:
+			printf("Network is unreachable");
+			break;
+		case WSAENETRESET:
+			printf("Network dropped connection because of reset");
+			break;
+		case WSAECONNABORTED:
+			printf("Software caused connection abort");
+			break;
+		case WSAECONNRESET:
+			printf("Connection reset by peer");
+			break;
+		case WSAENOBUFS:
+			printf("No buffer space available");
+			break;
+		case WSAEISCONN:
+			printf("Transport endpoint is already connected");
+			break;
+		case WSAENOTCONN:
+			printf("Transport endpoint is not connected");
+			break;
+		case WSAESHUTDOWN:
+			printf("Cannot send after transport endpoint shutdown");
+			break;
+		case WSAETOOMANYREFS:
+			printf("Too many references: cannot splice");
+			break;
+		case WSAETIMEDOUT:
+			printf("Connection timed out");
+			break;
+		case WSAECONNREFUSED:
+			printf("Connection refused");
+			break;
+		case WSAELOOP:
+			printf("Too many symbolic links encountered");
+			break;
+		case WSAENAMETOOLONG:
+			printf("File name too long");
+			break;
+		case WSAEHOSTDOWN:
+			printf("Host is down");
+			break;
+		case WSAEHOSTUNREACH:
+			printf("No route to host");
+			break;
+		case WSAENOTEMPTY:
+			printf("Directory not empty");
+			break;
+		case WSAEUSERS:
+			printf("Too many users");
+			break;
+		case WSAEDQUOT:
+			printf("Quota exceeded");
+			break;
+		case WSAESTALE:
+			printf("Stale NFS file handle");
+			break;
+		case WSAEREMOTE:
+			printf("Object is remote");
+			break;
+		case WSAHOST_NOT_FOUND:
+			printf("Host not found");
+			break;
+		case WSATRY_AGAIN:
+			printf("Host not found, or SERVERFAIL");
+			break;
+		case WSANO_RECOVERY:
+			printf("Non recoverable errors, FORMERR, REFUSED, NOTIMP");
+			break;
+		case WSANO_DATA:
+			printf("Valid name, no data record of requested type");
+			break;
+		default:
+			printf("Unknown error %d",code);
+	}
+	printf("\n");
+	return(1);
+}
+
+void my_strerror(int error, char *msg)
+{
+int code;
+char str[128];
+
+	if(error <= 0)
+		code = WSAGetLastError();
+	else
+		code = error;
+	switch(code)
+	{
+		case WSAEWOULDBLOCK:
+			sprintf(str,"Operation would block");
+			break;
+		case WSAEINPROGRESS:
+			sprintf(str,"Operation now in progress");
+			break;
+		case WSAEALREADY:
+			sprintf(str,"Operation already in progress");
+			break;
+		case WSAENOTSOCK:
+			sprintf(str,"Socket operation on non-socket");
+			break;
+		case WSAEDESTADDRREQ:
+			sprintf(str,"Destination address required");
+			break;
+		case WSAEMSGSIZE:
+			sprintf(str,"Message too long");
+			break;
+		case WSAEPROTOTYPE:
+			sprintf(str,"Protocol wrong type for socket");
+			break;
+		case WSAENOPROTOOPT:
+			sprintf(str,"Protocol not available");
+			break;
+		case WSAEPROTONOSUPPORT:
+			sprintf(str,"Protocol not supported");
+			break;
+		case WSAESOCKTNOSUPPORT:
+			sprintf(str,"Socket type not supported");
+			break;
+		case WSAEOPNOTSUPP:
+			sprintf(str,"Operation not supported on transport endpoint");
+			break;
+		case WSAEPFNOSUPPORT:
+			sprintf(str,"Protocol family not supported");
+			break;
+		case WSAEAFNOSUPPORT:
+			sprintf(str,"Address family not supported by protocol");
+			break;
+		case WSAEADDRINUSE:
+			sprintf(str,"Address already in use");
+			break;
+		case WSAEADDRNOTAVAIL:
+			sprintf(str,"Cannot assign requested address");
+			break;
+		case WSAENETDOWN:
+			sprintf(str,"Network is down");
+			break;
+		case WSAENETUNREACH:
+			sprintf(str,"Network is unreachable");
+			break;
+		case WSAENETRESET:
+			sprintf(str,"Network dropped connection because of reset");
+			break;
+		case WSAECONNABORTED:
+			sprintf(str,"Software caused connection abort");
+			break;
+		case WSAECONNRESET:
+			sprintf(str,"Connection reset by peer");
+			break;
+		case WSAENOBUFS:
+			sprintf(str,"No buffer space available");
+			break;
+		case WSAEISCONN:
+			sprintf(str,"Transport endpoint is already connected");
+			break;
+		case WSAENOTCONN:
+			sprintf(str,"Transport endpoint is not connected");
+			break;
+		case WSAESHUTDOWN:
+			sprintf(str,"Cannot send after transport endpoint shutdown");
+			break;
+		case WSAETOOMANYREFS:
+			sprintf(str,"Too many references: cannot splice");
+			break;
+		case WSAETIMEDOUT:
+			sprintf(str,"Connection timed out");
+			break;
+		case WSAECONNREFUSED:
+			sprintf(str,"Connection refused");
+			break;
+		case WSAELOOP:
+			sprintf(str,"Too many symbolic links encountered");
+			break;
+		case WSAENAMETOOLONG:
+			sprintf(str,"File name too long");
+			break;
+		case WSAEHOSTDOWN:
+			sprintf(str,"Host is down");
+			break;
+		case WSAEHOSTUNREACH:
+			sprintf(str,"No route to host");
+			break;
+		case WSAENOTEMPTY:
+			sprintf(str,"Directory not empty");
+			break;
+		case WSAEUSERS:
+			sprintf(str,"Too many users");
+			break;
+		case WSAEDQUOT:
+			sprintf(str,"Quota exceeded");
+			break;
+		case WSAESTALE:
+			sprintf(str,"Stale NFS file handle");
+			break;
+		case WSAEREMOTE:
+			sprintf(str,"Object is remote");
+			break;
+		case WSAHOST_NOT_FOUND:
+			sprintf(str,"Host not found");
+			break;
+		case WSATRY_AGAIN:
+			sprintf(str,"Host not found, or SERVERFAIL");
+			break;
+		case WSANO_RECOVERY:
+			sprintf(str,"Non recoverable errors, FORMERR, REFUSED, NOTIMP");
+			break;
+		case WSANO_DATA:
+			sprintf(str,"Valid name, no data record of requested type");
+			break;
+		default:
+			sprintf(str,"Unknown error %d",code);
+	}
+	strcpy(msg, str);
+}
+#endif
+
+void tcpip_get_error( char *str, int code )
+{
+	DISABLE_AST
+#ifndef WIN32
+	if(code){}
+	if((errno == 0) && (h_errno == HOST_NOT_FOUND))
+		strcpy(str,"Host not found");
+	else
+		strcpy(str, strerror(errno));
+#else
+	my_strerror(code, str);
+#endif
+	ENABLE_AST
+}
Index: branches/testFACT++branch/dim/src/tokenstring.cxx
===================================================================
--- branches/testFACT++branch/dim/src/tokenstring.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/tokenstring.cxx	(revision 18277)
@@ -0,0 +1,218 @@
+#define DIMLIB
+#include "tokenstring.hxx"
+
+TokenString::TokenString(char *str)
+{
+	token_buff = new char[((int)strlen(str)+1)*2];
+	token_ptr = token_buff;
+	token_seps = 0;
+	store_str(str);
+	token_ptr = token_buff;
+	curr_token_ptr = token_ptr;
+}
+
+TokenString::TokenString(char *str, char *seps)
+{
+	token_buff = new char[((int)strlen(str)+1)*2];
+	token_ptr = token_buff;
+	token_seps = new char[((int)strlen(seps)+1)];
+	strcpy(token_seps,seps);
+	store_str(str);
+	token_ptr = token_buff;
+	curr_token_ptr = token_ptr;
+}
+
+TokenString::~TokenString()
+{
+  if(token_buff) 
+  { 
+	  delete []token_buff; 
+	  token_buff = 0; 
+  }
+  if(token_seps) 
+  { 
+	  delete []token_seps; 
+	  token_seps = 0; 
+  }
+}
+
+void TokenString::store_str(char *str)
+{
+int i, in_tok = 0;
+int sep = 0;
+
+	n_tokens = 0;
+	if(!token_seps)
+	{
+		while(*str)
+		{
+			if( (*str == '@') || (*str == '|') || (*str == '/') || 
+				(*str == '=') || (*str == '(') || (*str == ')') ||
+				(*str == '.') || (*str == '\n'))
+			{   	
+				if(in_tok)
+				{
+					*token_ptr++ = '\0';
+					n_tokens++;
+				}
+				*token_ptr++ = *str++;
+				*token_ptr++ = '\0';
+				n_tokens++;
+				in_tok = 0;
+			}
+			else if(*str == '"')
+			{
+				if(in_tok)
+				{
+					*token_ptr++ = '\0';
+					n_tokens++;
+				}
+				*token_ptr++ = *str++;
+				while(*str != '"')
+				{
+					*token_ptr++ = *str++;
+				}
+				*token_ptr++ = *str++;
+				*token_ptr++ = '\0';
+				n_tokens++;
+				in_tok = 0;
+			}
+			else if(*str == ':')
+			{
+				if(*(str+1) == ':')
+				{
+					if(in_tok)
+					{
+						*token_ptr++ = '\0';
+						n_tokens++;
+					}
+					*token_ptr++ = *str++;
+					*token_ptr++ = *str++;
+					*token_ptr++ = '\0';
+					n_tokens++;
+					in_tok = 0;
+				}
+				else
+				{
+					*token_ptr++ = *str++;
+					in_tok = 1;
+				}
+			}
+			else
+			{
+				*token_ptr++ = *str++;
+				in_tok = 1;
+			}
+		}
+	}
+	else
+	{
+		while(*str)
+		{
+			sep = 0;
+			for(i = 0; i < (int)strlen(token_seps); i++)
+			{
+				if(*str == token_seps[i])
+				{
+					if(in_tok)
+					{
+						*token_ptr++ = '\0';
+						n_tokens++;
+					}
+					*token_ptr++ = *str++;
+					*token_ptr++ = '\0';
+					sep = 1;
+					in_tok = 0;
+					n_tokens++;
+					break;
+				}
+			}
+			if(!sep)
+			{
+				*token_ptr++ = *str++;
+				in_tok = 1;
+			}
+		}
+	}
+	if(in_tok)
+	{
+		*token_ptr++ = '\0';
+		n_tokens++;
+	}
+	*token_ptr++ = '\0';
+}
+
+int TokenString::getToken(char *&token)
+{
+
+	if(!*token_ptr)
+	{
+		token_ptr = token_buff;
+		curr_token_ptr = token_ptr;
+		return(0);
+	}
+
+	curr_token_ptr = token_ptr;
+    token_ptr += (int)strlen(curr_token_ptr)+1;
+	token = curr_token_ptr;
+
+	return(1);
+}		
+
+void TokenString::pushToken()
+{
+	push_token_ptr = token_ptr;
+}
+
+void TokenString::popToken()
+{
+	token_ptr = push_token_ptr;
+}
+
+int TokenString::cmpToken(char *str)
+{
+	if(!strcmp(curr_token_ptr, str))
+		return(1);
+	return(0);
+}
+
+int TokenString::firstToken()
+{
+	if(curr_token_ptr == token_buff)
+		return(1);
+	return(0);
+}
+
+int TokenString::getNTokens()
+{
+	return n_tokens;
+}
+
+int TokenString::getNTokens(char *str)
+{
+	int n = 0;
+	char *token;
+
+	while(getToken(token))
+	{
+		if(!strcmp(token,str))
+			n++;
+	}
+	return n;
+}
+/*
+main(int argc, char *argv[])
+{
+	TokenString *ts;
+	char *token;
+
+	ts = new TokenString(argv[1],"/)");
+	cout << "n = " << ts->getNTokens() << "\n";
+	cout.flush();
+	while(ts->getToken(token))
+	{
+		cout << token << "\n";
+		cout.flush();
+	}
+}
+*/
Index: branches/testFACT++branch/dim/src/util/check_dim_servers.cxx
===================================================================
--- branches/testFACT++branch/dim/src/util/check_dim_servers.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/util/check_dim_servers.cxx	(revision 18277)
@@ -0,0 +1,99 @@
+#include <iostream>
+#include <dic.hxx>
+using namespace std;
+
+#define MAX_SERVERS 5000
+char server_names[MAX_SERVERS][256];
+char server_nodes[MAX_SERVERS][256];
+int server_versions[MAX_SERVERS];
+int N_servers = 0;
+
+class DimVersion : public DimInfo
+{
+  int myIndex;
+	void infoHandler()
+	{
+      	  server_versions[myIndex] = getInt();
+	  //	  cout << server_names[myIndex] << " version " << server_versions[myIndex] << endl; 
+	}
+public :
+	DimVersion(char *service, int index) : 
+	  DimInfo(service,-1), myIndex(index) {};
+};
+
+int main()
+{
+  //	int version = 0;
+	int n;
+	char *server, *node;
+	/*
+	DimCurrentInfo dns("DIS_DNS/VERSION_NUMBER",10,-1);
+	
+	version = dns.getInt();
+	if(version == -1)
+		cout << "DNS not running" << endl;
+	else
+		cout << "DNS running" << endl;
+	return(0);
+	*/
+	DimBrowser br;
+	DimVersion *srvptr;
+	char serviceName[256];
+	int index;
+	int i;
+
+	for(i = 0; i < MAX_SERVERS; i++)
+	{
+	  server_names[i][0] = '\0';
+	  server_versions[i] = 0;
+	}  
+
+	n = br.getServers();
+	index = 0;
+	while(br.getNextServer(server, node))
+	{
+	  strcpy(server_names[index],server);
+	  strcpy(server_nodes[index],node);
+	  strcpy(serviceName,server);
+	  strcat(serviceName,"/VERSION_NUMBER");
+	  srvptr = new DimVersion(serviceName, index);
+	  if(srvptr){}
+	  //	  cout << "found " << server << " " << node << endl;
+	  index++;
+	}
+	cout << "found " << n << " servers" << endl;
+	N_servers = n;
+	while(1)
+	{
+	  int found = 0;
+	  sleep(1);
+	  for(i = 0; i < N_servers; i++)
+	  {
+	    if(server_versions[i] == 0)
+	    {
+	      found = 1;
+	    }
+	  }
+	  if(!found)
+	    break;
+	}
+	int max = 0;
+	for(i = 0; i < N_servers; i++)
+	{
+	    if(server_versions[i] > max)
+	    {
+	      max = server_versions[i];
+	    }
+	}
+	n = 0;
+	for(i = 0; i < N_servers; i++)
+	{
+	    if(server_versions[i] < max)
+	    {
+	      cout << server_names[i] <<"@" << server_nodes[i] << " version " << server_versions[i] << endl; 
+	    }
+	    else
+	      n++;
+	}	
+	cout << n << " Servers with version " << max << endl; 
+}
Index: branches/testFACT++branch/dim/src/util/check_dns.cxx
===================================================================
--- branches/testFACT++branch/dim/src/util/check_dns.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/util/check_dns.cxx	(revision 18277)
@@ -0,0 +1,16 @@
+#include <iostream>
+#include <dic.hxx>
+using namespace std;
+
+int main()
+{
+	int version = 0;
+	DimCurrentInfo dns("DIS_DNS/VERSION_NUMBER",10,-1);
+	
+	version = dns.getInt();
+	if(version == -1)
+		cout << "DNS not running" << endl;
+	else
+		cout << "DNS running" << endl;
+	return(0);
+}
Index: branches/testFACT++branch/dim/src/util/dim_get_service.c
===================================================================
--- branches/testFACT++branch/dim/src/util/dim_get_service.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/util/dim_get_service.c	(revision 18277)
@@ -0,0 +1,113 @@
+#include <ctype.h>
+#include <stdio.h>
+#include <dic.h>
+
+int no_link = 0x0afefead;
+int version;
+	
+char str[132];
+int type, mode;
+int received = 0;
+
+void rout(tag, buffer, size)
+int *tag, *size;
+int *buffer;
+{
+void print_service();
+
+	if(tag){}
+	if((*size == 4 ) && (*buffer == no_link))
+	{
+		printf("Service %s Not Available\n", str);
+	}
+	else
+	{
+		printf("Service %s Contents :\n", str);
+		print_service(buffer, ((*size - 1)/4) + 1);
+	}
+	fflush(stdout);
+	received = 1;
+#ifdef WIN32
+	wake_up();
+#endif
+}
+
+int main(argc,argv)
+int argc;
+char **argv;                    
+{
+
+	if(argc < 2)
+	{
+		printf("Service Name > ");
+		fflush(stdout);
+		scanf("%s", str);
+	}
+	else
+	{
+		sprintf(str,"%s",argv[1]);
+	}
+	dic_info_service(str,ONCE_ONLY,60,0,0,rout,0,&no_link,4);
+	while(!received)
+	  dim_wait();
+	return(1);
+}
+
+void print_service(buff, size)
+int *buff, size;
+{
+int i,j;
+char *asc;
+int last[4];
+
+	asc = (char *)buff;
+	for( i = 0; i < size; i++)
+	{
+		if(!(i%4))
+			printf("H");
+		printf("   %08X ",buff[i]);
+		last[i%4] = buff[i];
+		if(i%4 == 3)
+		{
+			printf("    '");
+			for(j = 0; j <16; j++)
+			{
+				if(isprint(asc[j]))
+					printf("%c",asc[j]);
+				else
+					printf(".");
+			}
+			printf("'\n");
+			for(j = 0; j <4; j++)
+			{
+				if(j == 0)
+					printf("D");
+				printf("%11d ",last[j]);
+			}
+			printf("\n");
+			asc = (char *)&buff[i+1];
+		}
+	}
+	if(i%4)
+	{
+
+			for(j = 0; j < 4 - (i%4); j++)
+				printf("            ");
+			printf("    '");
+			for(j = 0; j < (i%4) * 4; j++)
+			{
+				if(isprint(asc[j]))
+					printf("%c",asc[j]);
+				else
+					printf(".");
+			}
+			printf("'\n");
+			for(j = 0; j < (i%4); j++)
+			{
+				if(j == 0)
+					printf("D");
+				printf("%11d ",last[j]);
+			}
+			printf("\n");
+	}
+}
Index: branches/testFACT++branch/dim/src/util/dim_send_command.c
===================================================================
--- branches/testFACT++branch/dim/src/util/dim_send_command.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/util/dim_send_command.c	(revision 18277)
@@ -0,0 +1,143 @@
+#include <ctype.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <dic.h>
+
+int received = 0;
+char str[132] = {'\0'};
+
+void rout(tag, code)
+int *tag;
+int *code;
+{
+  int silent;
+
+  silent = *tag;
+  if(!silent)
+      dim_print_date_time();
+  if(*code)
+  {
+	  if(!silent)
+		printf(" Command %s Successfully Sent\n", str);
+  }
+  else
+  {
+	  if(!silent)
+		printf(" Command %s Unsuccessfull\n", str);
+  }
+  received = 1;
+#ifdef WIN32
+  wake_up();
+#endif
+}
+/*
+main(argc,argv)
+int argc;
+char **argv;                    
+{
+  char data[1024] = {'\0'};
+  int silent = 0;
+
+	if(argc < 2)
+	{
+		printf("Command Name > ");
+		fflush(stdout);
+		scanf("%s", str);
+		printf("Command String > ");
+		fflush(stdout);
+		scanf("%s", data);
+	}
+	else
+	{
+		sprintf(str,argv[1]);
+		if(argc < 3)
+			data[0] = '\0';
+		else
+		{
+			sprintf(data,argv[2]);
+			if(argc > 3)
+				silent = 1;
+		}
+	}
+	dic_cmnd_callback(str,data,(int)strlen(data)+1, rout, silent);
+	while(!received)
+	  dim_wait();
+	sleep(1);
+}
+*/
+int main(argc,argv)
+int argc;
+char **argv;                    
+{
+int i;
+int silent = 0;
+char data[1024] = {'\0'};
+int data_int, data_int_flag = 0;
+char dns_node[128], *ptr;
+int dns_port = 0;
+
+	dns_node[0] = '\0'; 
+	for(i = 1; i < argc; i++)
+	{
+		if(!strcmp(argv[i],"-dns"))
+		{
+			strcpy(dns_node,argv[i+1]);
+			if((ptr = strchr(dns_node,':')))
+			{
+				*ptr = '\0';
+				ptr++;
+				sscanf(ptr,"%d",&dns_port);
+			}
+			i++;
+		}
+		else if(!strcmp(argv[i],"-s"))
+		{
+			silent = 1;
+		}
+		else if(!strcmp(argv[i],"-i"))
+		{
+			data_int_flag = 1;
+		}
+		else
+		{
+			if(!str[0])
+			{
+				strcpy(str, argv[i]);
+			}
+			else if(!data[0])
+			{
+				strcpy(data,argv[i]);
+			}
+		}
+	}
+	if(dns_node[0])
+	{
+		dic_set_dns_node(dns_node);
+	}
+	if(dns_port)
+	{
+		dic_set_dns_port(dns_port);
+	}
+	if(!str[0])
+	{
+		printf("dim_send_command: Insufficient parameters\n");
+		printf("usage: dim_send_command <cmnd_name> [<data>] [-dns <dns_node>] [-s] [-i]\n");
+		exit(0);
+	}
+	if(!data[0])
+		data[0] = '\0';
+	if(data_int_flag)
+	{
+		sscanf(data,"%d",&data_int);
+		dic_cmnd_callback(str,&data_int,sizeof(int), rout, silent);
+	}
+	else
+	{
+		dic_cmnd_callback(str,data,(int)strlen(data)+1, rout, silent);
+	}
+	while(!received)
+	  dim_wait();
+	sleep(1);
+	return(1);
+}
Index: branches/testFACT++branch/dim/src/util/dimbridge.cxx
===================================================================
--- branches/testFACT++branch/dim/src/util/dimbridge.cxx	(revision 18277)
+++ branches/testFACT++branch/dim/src/util/dimbridge.cxx	(revision 18277)
@@ -0,0 +1,357 @@
+#include <dic.hxx>
+#include <dis.hxx>
+#include <dim.h>
+#include <iostream>
+using namespace std;
+
+static int no_link = 0xdeaddead;
+static char from_node[64], to_node[64], bridge_name[64];
+
+class BridgeService: public DimInfo, public SLLItem 
+{
+  char srv_name[256];
+  char srv_format[256];
+  int declared;
+  DimService *srv;
+  void *srv_data, *data;
+  int srv_size;
+  int cmnd;
+  int found;
+  int copyFlag;
+
+  void infoHandler() {
+	char *server;
+    data = DimInfo::getData();
+    srv_size = DimInfo::getSize();
+
+// Sometimes gets a packet from DIS_DNS not understood why!!!"
+	server = DimClient::getServerName();
+	if(strstr(server,"DIS_DNS") != 0)
+	{
+dim_print_date_time();
+cout << "received from " << server << " size = " << srv_size << endl;
+		if(strstr(srv_name,"DIS_DNS") == 0)
+			return;
+	}
+	srv_data = data;
+    if(*(int *)srv_data == no_link)
+	{
+		if(srv)
+		{
+			delete(srv);
+			srv = 0;
+		}
+		declared = 0;
+//  		cout << "Disconnecting bridge for: " << srv_name << endl;
+	}
+    else if(!declared)
+    {
+//		DimServer::setDnsNode(to_node);
+		srv = new DimService(srv_name, srv_format, srv_data, srv_size);
+		if(copyFlag)
+			srv->setData(srv_data, srv_size);
+		DimServer::start(bridge_name);
+		declared = 1;
+//		DimClient::setDnsNode(from_node);
+	}
+    else
+	{
+		if(srv)
+		{
+			if(copyFlag)
+			{
+				srv->setData(srv_data, srv_size);
+				srv->updateService();
+			}
+			else
+			{
+				srv->updateService(srv_data, srv_size);
+			}
+		}
+	}
+  }
+
+  public:
+    BridgeService(char *name, char *format, int copy):
+		DimInfo(name, &no_link, sizeof(no_link)), declared(0), srv(0), copyFlag(copy)
+		{ 
+			strcpy(srv_format, format);
+			strcpy(srv_name, name);
+			cmnd = 0;
+			found = 1;
+//			cout << "Bridging Service: " << name << endl;
+		}
+	BridgeService(char *name, char *format, int rate, int copy):
+		DimInfo(name, rate, &no_link, sizeof(no_link)), declared(0), srv(0), copyFlag(copy)
+		{ 
+			strcpy(srv_format, format);
+			strcpy(srv_name, name);
+			cmnd = 0;
+			found = 1;
+//			cout << "Bridging Service: " << name << ", rate = " << rate << " seconds" << endl;
+		}
+  	~BridgeService()
+  	{
+  		if(declared)
+		{
+			if(srv)
+			{
+  				delete(srv);
+				srv = 0;
+			}
+		}
+  		declared = 0;
+//  		cout << "Stopped bridge for: " << srv_name << endl;
+  	}
+    char *getName() { return srv_name; };
+    void clear() { found = 0;};
+    void set() {found = 1;};
+    int find() {return found;};
+    int isCmnd() { return cmnd;};
+};
+
+class BridgeCommand: public DimCommand, public SLLItem 
+{
+  char srv_name[256];
+  char srv_format[256];
+  int declared;
+  DimService *srv;
+  void *srv_data;
+  int srv_size;
+  int cmnd;
+  int found;
+
+  void commandHandler() {
+    srv_data = DimCommand::getData();
+    srv_size = DimCommand::getSize();
+    DimClient::sendCommandNB(srv_name, srv_data, srv_size);
+  }
+
+  public:
+    BridgeCommand(char *name, char *format):
+		DimCommand(name, format) 
+		{ 
+			DimServer::start(bridge_name);
+			cmnd = 1;
+			found = 1;
+			strcpy(srv_name, name);
+//			cout << "Bridging Command: " << name << endl;
+		}
+    char *getName() { return srv_name; };
+    void clear() { found = 0;};
+    void set() {found = 1;};
+    int find() {return found;};
+    int isCmnd() { return cmnd;};
+};
+
+void print_usage()
+{
+	cout << "Usage: DimBridge [from_node] to_node services [time_interval] [-copy]" << endl;
+	cout << "    from_node - by default DIM_DNS_NODE" << endl;
+	cout << "    to_node - the complete node name of the new DNS" << endl;
+	cout << "    services - the list of service names (wildcards allowed)" << endl;
+	cout << "    time_interval - the interval in seconds to be used for updating the services" << endl;
+	cout << "    -copy - copy internally the service data" << endl;
+}
+
+int main(int argc, char **argv)
+{
+char services[132];
+DimBrowser dbr;
+char *service, *format, *p;
+int type, known;
+BridgeService *ptrs, *aux_ptrs;
+BridgeCommand *ptrc, *aux_ptrc;
+SLList lists, listc;
+int rate = 0;
+int copyFlag = 0;
+
+//dic_set_debug_on();
+	if(argc < 3)
+    {
+		print_usage();
+		return 0;
+    }
+	else if( argc == 3)
+    {
+		strcpy(from_node, DimClient::getDnsNode());
+		strcpy(to_node, argv[1]);
+		strcpy(services, argv[2]);
+    }
+	else if (argc == 4)
+	{
+		if(sscanf(argv[3],"%d", &rate))
+		{
+			strcpy(from_node, DimClient::getDnsNode());
+			strcpy(to_node, argv[1]);
+			strcpy(services, argv[2]);
+		}
+		else if(argv[3][0] == '-')
+		{
+			rate = 0;
+			strcpy(from_node, DimClient::getDnsNode());
+			strcpy(to_node, argv[1]);
+			strcpy(services, argv[2]);
+			copyFlag = 1;
+		}
+		else
+		{
+			rate = 0;
+			strcpy(from_node, argv[1]);
+			strcpy(to_node, argv[2]);
+			strcpy(services, argv[3]);
+		}
+    }
+	else if(argc == 5)
+	{
+		if(sscanf(argv[4],"%d", &rate))
+		{
+			strcpy(from_node, argv[1]);
+			strcpy(to_node, argv[2]);
+			strcpy(services, argv[3]);
+		}
+		else if(argv[4][0] == '-')
+		{
+			copyFlag = 1;
+			if(sscanf(argv[3],"%d", &rate))
+			{
+				strcpy(from_node, DimClient::getDnsNode());
+				strcpy(to_node, argv[1]);
+				strcpy(services, argv[2]);
+			}
+			else
+			{
+				rate = 0;
+				strcpy(from_node, argv[1]);
+				strcpy(to_node, argv[2]);
+				strcpy(services, argv[3]);
+			}
+		}
+	}
+	else if(argc == 6)
+	{
+		strcpy(from_node, argv[1]);
+		strcpy(to_node, argv[2]);
+		strcpy(services, argv[3]);
+		sscanf(argv[4],"%d", &rate);
+		copyFlag = 1;
+    }
+	else
+	{
+		cout << "Bad parameters" << endl;
+		return 0;
+	}
+
+	cout << "Starting DimBridge from "<<from_node<<" to "<<to_node<<" for "<< services;
+	if(rate)
+		cout << " interval=" << rate; 
+	if(copyFlag)
+		cout << " (internal data copy)"; 
+	cout << endl;
+
+	strcpy(bridge_name,"Bridge_");
+	strcat(bridge_name, from_node);
+	if( (p = strchr(bridge_name,'.')) )
+		*p = '\0';
+#ifndef WIN32
+	sprintf(p,"_%d",getpid());
+#else
+	sprintf(p,"_%d",_getpid());
+#endif
+	DimClient::setDnsNode(from_node);
+	DimServer::setDnsNode(to_node);
+	while(1)
+	{
+		ptrs = (BridgeService *)lists.getHead();
+		while(ptrs)
+		{
+			ptrs->clear();
+			ptrs = (BridgeService *)lists.getNext();
+		}
+		ptrc = (BridgeCommand *)listc.getHead();
+		while(ptrc)
+		{
+			ptrc->clear();
+			ptrc = (BridgeCommand *)listc.getNext();
+		}
+		dbr.getServices(services);
+		while( (type = dbr.getNextService(service, format)) )
+		{
+			known = 0;
+			ptrs = (BridgeService *)lists.getHead();
+			while(ptrs)
+			{
+				if(!strcmp(ptrs->getName(), service))
+				{
+					known = 1;
+					ptrs->set();
+					break;
+				}
+				ptrs = (BridgeService *)lists.getNext();
+			}
+			ptrc = (BridgeCommand *)listc.getHead();
+			while(ptrc)
+			{
+				if(!strcmp(ptrc->getName(), service))
+				{
+					known = 1;
+					ptrc->set();
+					break;
+				}
+				ptrc = (BridgeCommand *)listc.getNext();
+			}
+			if(strstr(service,"DIS_DNS"))
+				known = 1;
+			if(!known)
+			{
+				if(type == DimSERVICE)
+				{
+				  if(!rate)
+					ptrs = new BridgeService(service, format, copyFlag);
+				  else
+					ptrs = new BridgeService(service, format, rate, copyFlag);
+				  lists.add(ptrs);
+				}
+				else if (type == DimCOMMAND)
+				{
+//					DimClient::setDnsNode(to_node);
+					ptrc = new BridgeCommand(service, format);
+					listc.add(ptrc);
+//					DimClient::setDnsNode(from_node);
+				}
+			}
+		}
+		ptrs = (BridgeService *)lists.getHead();
+		while(ptrs)
+		{
+			aux_ptrs = 0;
+			if(!ptrs->find())
+			{
+				lists.remove(ptrs);
+				aux_ptrs = ptrs;
+			}
+			ptrs = (BridgeService *)lists.getNext();
+			if(aux_ptrs)
+			{
+				delete aux_ptrs;
+			}
+		}
+		ptrc = (BridgeCommand *)listc.getHead();
+		while(ptrc)
+		{
+			aux_ptrc = 0;
+			if(!ptrc->find())
+			{
+				listc.remove(ptrc);
+				aux_ptrc = ptrc;
+			}
+			ptrc = (BridgeCommand *)listc.getNext();
+			if(aux_ptrc)
+			{
+				delete aux_ptrc;
+			}
+		}
+		sleep(5);
+	}
+	return 1;
+}
Index: branches/testFACT++branch/dim/src/utilities.c
===================================================================
--- branches/testFACT++branch/dim/src/utilities.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/utilities.c	(revision 18277)
@@ -0,0 +1,307 @@
+/*
+ * DNA (Delphi Network Access) implements the network layer for the DIM
+ * (Delphi Information Managment) System.
+ *
+ * Started date   : 10-11-91
+ * Written by     : C. Gaspar
+ * UNIX adjustment: G.C. Ballintijn
+ *
+ */
+
+#include <sys/types.h>
+#ifndef WIN32
+#include <netinet/in.h>
+#include <netdb.h>
+#endif
+#include <string.h>
+#include <time.h>
+#include <sys/timeb.h>
+#define DIMLIB
+#include <dim.h>
+
+int get_proc_name(char *proc_name)
+{
+#ifndef VxWorks
+	sprintf( proc_name, "%d", getpid() );
+#else
+	sprintf( proc_name, "%d", taskIdSelf() );      
+#endif
+	return(1);
+}
+
+
+int get_node_name(char *node_name)
+{
+#ifndef VxWorks
+struct hostent *host;
+#endif
+char *p;
+int	i;
+#ifdef WIN32
+extern void init_sock();
+#endif
+
+	DISABLE_AST
+#ifdef WIN32
+	init_sock();
+#endif
+	if( (p = getenv("DIM_HOST_NODE")) != NULL )
+	{
+		strcpy( node_name, p );
+		ENABLE_AST
+		return(1);
+	}
+	if((gethostname(node_name, MAX_NODE_NAME)) == -1)
+	{
+		ENABLE_AST
+		return(0);
+	}
+#ifndef VxWorks
+#ifndef RAID
+	if(!strchr(node_name,'.'))
+	{
+		if ((host = gethostbyname(node_name)) != (struct hostent *)0) 
+		{		
+			strcpy(node_name,host->h_name);
+			if(!strchr(node_name,'.'))
+			{
+				if(host->h_aliases)
+				{
+					if(host->h_aliases[0])
+					{
+						for(i = 0; host->h_aliases[i]; i++)
+						{
+							p = host->h_aliases[i];
+							if(strchr(p,'.'))
+							{
+								strcpy(node_name,p);
+								break;
+							}
+						}
+					}
+				}
+		    }
+		}
+	}
+#endif
+#endif
+	ENABLE_AST
+	return(1);
+}
+
+/* 
+Bug or Feature? 
+get_node_addr returns the "default" interface address, not the one chosen by 
+DIM_HOST_NODE. This makes the DNS or a DIM server respond to both interfaces 
+*/
+
+int get_node_addr(char *node_addr)
+{
+#ifndef VxWorks
+struct hostent *host;
+#endif
+char node_name[MAX_NODE_NAME];
+char *ptr;
+
+#ifdef WIN32
+	init_sock();
+#endif
+	gethostname(node_name, MAX_NODE_NAME);
+#ifndef VxWorks
+	if ((host = (struct hostent *)gethostbyname(node_name)) == (struct hostent *)0)
+	{
+		node_addr[0] = 0;
+		node_addr[1] = 0;
+		node_addr[2] = 0;
+		node_addr[3] = 0;
+		return(0);
+	}
+    ptr = (char *)host->h_addr;
+    node_addr[0] = *ptr++;
+    node_addr[1] = *ptr++;
+    node_addr[2] = *ptr++;
+    node_addr[3] = *ptr++;
+    return(1);
+#else
+    node_addr[0] = 0;
+    node_addr[1] = 0;
+    node_addr[2] = 0;
+    node_addr[3] = 0;
+	return(0);
+#endif
+}
+
+void dim_print_date_time()
+{
+	time_t t;
+	char str[128];
+
+	t = time((time_t *)0);
+/*
+#ifdef WIN32
+	strcpy(str, ctime(&t));
+#else
+#ifdef LYNXOS
+	ctime_r(&t, str, 128);
+#else
+	ctime_r(&t, str);
+#endif
+#endif
+*/
+	my_ctime(&t, str, 128);
+	str[(int)strlen(str)-1] = '\0';
+	printf("PID %d - ",getpid());
+	printf("%s - ",str );
+}
+
+void dim_print_date_time_millis()
+{
+	int millies;
+
+#ifdef WIN32
+	struct timeb timebuf;
+#else
+	struct timeval tv;
+	struct timezone *tz;
+#endif
+
+#ifdef WIN32
+	ftime(&timebuf);
+	millies = timebuf.millitm;
+#else
+	tz = 0;
+	gettimeofday(&tv, tz);
+	millies = (int)tv.tv_usec / 1000;
+#endif
+	dim_print_date_time();
+	printf("milliseconds: %d ", millies);
+}
+
+void dim_print_msg(char *msg, int severity)
+{
+	dim_print_date_time();
+	switch(severity)
+	{
+		case 0: printf("(INFO) ");
+			break;
+		case 1: printf("(WARNING) ");
+			break;
+		case 2: printf("(ERROR) ");
+			break;
+		case 3: printf("(FATAL) ");
+			break;
+	}
+	printf("%s\n",msg);
+	fflush(stdout);
+}
+
+void dim_panic( char *s )
+{
+	printf( "\n\nDNA library panic: %s\n\n", s );
+	exit(0);
+}
+
+int get_dns_node_name( char *node_name )
+{
+	char	*p;
+
+	if( (p = getenv("DIM_DNS_NODE")) == NULL )
+		return(0);
+	else {
+		strcpy( node_name, p );
+		return(1);
+	}
+}
+
+int get_dns_port_number()
+{
+	char	*p;
+
+	if( (p = getenv("DIM_DNS_PORT")) == NULL )
+		return(DNS_PORT);
+	else {
+		return(atoi(p));
+	}
+}
+
+int dim_get_env_var( char *env_var, char *value, int len )
+{
+	char	*p;
+	int tot, sz;
+
+	if( (p = getenv(env_var)) == NULL )
+		return(0);
+	else {
+		tot = (int)strlen(p)+1;
+		if(value != 0)
+		{
+			sz = tot;
+			if(sz > len)
+				sz = len;
+			strncpy(value, p, (size_t)sz);
+			if((sz == len) && (len > 0))
+				value[sz-1] = '\0';
+		}
+		return(tot);
+	}
+}
+
+int get_dns_accepted_domains( char *domains )
+{
+	char	*p;
+	int append = 0;
+
+	if(get_dns_accepted_nodes(domains))
+		append = 1;
+	if( (p = getenv("DIM_DNS_ACCEPTED_DOMAINS")) == NULL )
+	{
+		if(!append)
+			return(0);
+		else
+			return(1);
+	}
+	else {
+		if(!append)
+			strcpy( domains, p );
+		else
+		{
+			strcat( domains, ",");
+			strcat( domains, p);
+		}
+		return(1);
+	}
+}
+
+int get_dns_accepted_nodes( char *nodes )
+{
+	char	*p;
+
+	if( (p = getenv("DIM_DNS_ACCEPTED_NODES")) == NULL )
+		return(0);
+	else {
+		strcpy( nodes, p );
+		return(1);
+	}
+}
+
+int get_keepalive_tmout()
+{
+	char	*p;
+
+	if( (p = getenv("DIM_KEEPALIVE_TMOUT")) == NULL )
+		return(TEST_TIME_OSK);
+	else {
+		return(atoi(p));
+	}
+}
+
+int get_write_tmout()
+{
+	char	*p;
+
+	if( (p = getenv("DIM_WRITE_TMOUT")) == NULL )
+		return(0);
+	else {
+		return(atoi(p));
+	}
+}
Index: branches/testFACT++branch/dim/src/webDid/webDid.c
===================================================================
--- branches/testFACT++branch/dim/src/webDid/webDid.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/webDid/webDid.c	(revision 18277)
@@ -0,0 +1,2471 @@
+#include <stdio.h>                   
+#include <ctype.h>
+#include <time.h>
+#include <dim.h>
+#include <dic.h>
+#include <dis.h>
+
+extern int WebDID_Debug;
+
+typedef struct item{
+    struct item *next;
+	DNS_SERVER_INFO server;
+	DNS_SERVICE_INFO *service_ptr;
+    char name[MAX_NAME];
+	int match;
+	int busy;
+	int isSMI;
+}SERVER;
+
+typedef struct nitem{
+    struct nitem *next;
+	SERVER *server_head;
+    char name[MAX_NAME];
+	int match;
+	int busy;
+	int hasSMI;
+}NODE;
+NODE *Node_head = (NODE *)0;
+
+typedef struct sitem{
+    struct sitem *next;
+	char name[MAX_NAME];
+	int sid;
+	void *buffer;
+	int buffer_size;
+	int size;
+	time_t timestamp;
+	void *buffer_str;
+	int buffer_str_size;
+	int str_size;
+	int conn_id;
+	time_t last_subscribed;
+	time_t last_updated;
+	int n_browsers;
+}CURR_SERVICE;
+CURR_SERVICE *Curr_service_head = (CURR_SERVICE *)0;
+
+typedef struct objstate{
+	char name[MAX_NAME];
+	char state[512];
+	int sid;
+	int mode_index;
+	void *browserp;
+}OBJSTATE;
+/*
+typedef struct domainitem{
+	char name[MAX_NAME];
+	OBJSTATE objs[1];
+}CURR_SMIDOMAIN;
+*/
+typedef struct bitem{
+    struct bitem *next;
+	int id;
+	int subscribe;
+	time_t last_subscribed;
+	time_t last_updated;
+	time_t last_polled;
+	time_t last_changed;
+	int conn_id;
+	int n_services;
+	int n_servers;
+	int n_nodes;
+	CURR_SERVICE *servicep;
+	char *JSONBuffer;
+	int JSONBufferSize;
+	char *JSONSmiBuffer;
+	int JSONSmiBufferSize;
+	char pattern[256];
+	char curr_command[MAX_NAME];
+	char *service_format_ptr;
+	int isSMI;
+	int n_domains;
+	char curr_smidomain[MAX_NAME];
+	int curr_smidomain_size;
+	int curr_smidomain_nobjs;
+	OBJSTATE *smidomainp;
+}BROWSER;
+BROWSER *Browser_head = (BROWSER *)0;
+
+char *JSONBuffer = 0;
+int JSONBufferSize = 0;
+char JSONHeader[256] = {'\0'};
+char JSONSmiHeader[256] = {'\0'};
+
+char *JSONSmiBuffer = 0;
+int JSONSmiBufferSize = 0;
+
+int First_time = 1;
+int Curr_view_opt = -1;	
+char Curr_view_opt_par[80];	
+char Curr_service_name[132];
+char Curr_service_format[256];
+int Curr_service_print_type = 0;
+int N_nodes = 0;
+int N_servers = 0;	
+int N_services = 0;	
+static char no_link = -1;
+static char no_link_str[5] = "DEAD";
+int no_link_int = -1;
+FILE	*fptr;
+
+char *Service_content_str;
+char *Curr_service_list = 0;
+char *Curr_client_list = 0;
+int Curr_service_id = 0;
+SERVER *Got_Service_List = 0;
+SERVER *Got_Client_List = 0;
+
+int Timer_q;
+char Title[128];
+
+int did_init(char *local_node, int dns_port)
+{
+	void update_servers();
+	char icon_title[128];
+	char dns_node[128];
+	int ret;
+       
+	dim_init();
+	dic_disable_padding();
+	dis_disable_padding();
+	
+	ret = dim_get_dns_node(dns_node);
+	if(!ret)
+	{
+		strcpy(dns_node, local_node);
+		dim_set_dns_node(dns_node);
+	}
+    dns_port = dic_get_dns_port();
+	if(dns_port != DNS_PORT)
+	{
+		sprintf(Title,"DIM DNS: %s:%d",dns_node,dns_port);
+	}
+	else
+	{
+		sprintf(Title,"DIM DNS: %s",dns_node);
+	}
+	sprintf(icon_title,"DID %s",dns_node);
+dim_print_date_time();
+printf("webDid Starting up on %s\n\t serving %s\n", local_node, Title);
+	Timer_q = dtq_create();
+	dic_info_service("DIS_DNS/SERVER_INFO",MONITORED,0,0,0,update_servers,0,
+						&no_link,1);
+	return 1;
+}
+
+SERVER *find_server(NODE *nodep, int pid)
+{
+  SERVER *servp;
+  DNS_SERVER_INFO *ptr;
+
+  servp = nodep->server_head;
+  while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+  {
+      ptr = &servp->server;
+      if(ptr->pid == pid)
+	  {
+		return(servp);
+	  }
+  }
+  return ((SERVER *)0);
+}
+
+NODE *find_node(char *node)
+{
+  NODE *nodep;
+
+  nodep = Node_head;
+  while( (nodep = (NODE *)sll_get_next((SLL *)nodep)) )
+  {
+      if(!strcmp(nodep->name,node))
+	  {
+			return(nodep);
+	  }
+  }
+  return ((NODE *)0);
+}
+
+int find_server_service_pattern(SERVER *servp, char *pattern)
+{
+	DNS_SERVICE_INFO *servicep;
+	int n_services, i;
+	int n_found = 0;
+
+	servicep = servp->service_ptr;
+	n_services = servp->server.n_services;
+	for(i = 0; i < n_services; i++)
+	{
+		if(strstr(servicep->name, pattern))
+		{
+			n_found++;
+		}
+		servicep++;
+	}
+	return(n_found);
+}
+
+int find_service_pattern(NODE *nodep, SERVER *servpp, char *pattern, int *n_servers)
+{
+  SERVER *servp;
+  int ret, n_found = 0;
+  int n_servers_found = 0;
+
+  if(!servpp)
+  {
+	servp = nodep->server_head;
+	while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+	{
+		if((ret = find_server_service_pattern(servp, pattern)))
+		{
+			n_found += ret;
+			n_servers_found++;
+		}
+	}
+  }
+  else
+  {
+	if((ret = find_server_service_pattern(servpp, pattern)))
+	{
+		n_found += ret;
+	}
+  }
+  if(n_servers != 0)
+	  *n_servers = n_servers_found;
+  return(n_found);
+}
+
+CURR_SERVICE *find_curr_service(char *service)
+{
+  CURR_SERVICE *servicep;
+
+  servicep = Curr_service_head ;
+  while( (servicep = (CURR_SERVICE *)sll_get_next((SLL *)servicep)) )
+  {
+      if(!strcmp(servicep->name,service))
+	  {
+			return(servicep);
+	  }
+  }
+  return ((CURR_SERVICE *)0);
+}
+
+BROWSER *find_browser(int id)
+{
+  BROWSER *browserp;
+
+  browserp = Browser_head;
+  while( (browserp = (BROWSER *)sll_get_next((SLL *)browserp)) )
+  {
+      if(browserp->id == id)
+	  {
+			return(browserp);
+	  }
+  }
+  return ((BROWSER *)0);
+}
+/*
+void set_browser_changes(int n_services, int n_servers, int n_nodes)
+{
+  BROWSER *browserp;
+
+  browserp = Browser_head;
+  while( (browserp = (BROWSER *)sll_get_next((SLL *)browserp)) )
+  {
+	  if(browserp->n_services != n_services)
+		browserp->n_services_changed = 1;
+	  if(browserp->n_servers != n_servers)
+		browserp->n_servers_changed = 1;
+	  if(browserp->n_nodes != n_nodes)
+		browserp->n_nodes_changed = 1;
+  }
+}
+*/
+void prepare_browser_tree()
+{
+  BROWSER *browserp;
+  int prepareJSONTree();
+
+  browserp = Browser_head;
+  while( (browserp = (BROWSER *)sll_get_next((SLL *)browserp)) )
+  {
+	  if(browserp->pattern[0] != '\0')
+		  prepareJSONTree(browserp);
+  }
+}
+/*
+void clear_browser_changes(BROWSER *browserp)
+{
+	browserp->n_services_changed = 0;
+    browserp->n_servers_changed = 0;
+    browserp->n_nodes_changed = 0;
+}
+*/
+void update_servers(int *tag, DNS_DID *buffer, int *size)
+{
+int n_services, service_size;
+SERVER *servp;
+NODE *nodep;
+int j;
+char str[MAX_NAME], sname[MAX_NAME], *ptr;
+int prepareJSONTree();
+int prepareJSONHeader();
+
+	if(tag){}
+	if(!Node_head)
+	{
+		Node_head = (NODE *)malloc(sizeof(NODE));
+		sll_init((SLL *)Node_head);
+	}
+	if(First_time)
+	{
+		First_time = 0;
+	}
+
+	if(!*size)
+		return;
+	if(*(char *)buffer == -1)
+	{
+		N_servers = 0;
+		N_services = 0;
+		return;
+	}
+	buffer->server.n_services = vtohl(buffer->server.n_services);
+	buffer->server.pid = vtohl(buffer->server.pid);
+	n_services = buffer->server.n_services;
+
+	if(n_services == 1)
+	  return;
+	strcpy(sname, buffer->server.task);
+	if(n_services > 1)
+	{
+		for(j = 0; j < n_services; j++)
+		{
+			buffer->services[j].type = vtohl(
+				buffer->services[j].type);
+			buffer->services[j].status = vtohl(
+				buffer->services[j].status);
+			buffer->services[j].n_clients = vtohl(
+				buffer->services[j].n_clients);
+			if((int)strlen(sname) == MAX_TASK_NAME-4-1)
+			{
+				strcpy(str,buffer->services[j].name);
+				if( (ptr = strstr(str,"/CLIENT_LIST")) )
+				{
+					*ptr = '\0';
+					strcpy(sname,str);
+				}
+			}
+		}
+	}
+	if (!(nodep = find_node(buffer->server.node)))
+	{
+		if(n_services)
+		{
+			N_nodes++;
+			nodep = (NODE *)malloc(sizeof(NODE));
+			strcpy(nodep->name,buffer->server.node);
+			nodep->hasSMI = 0;
+			nodep->server_head = (SERVER *)malloc(sizeof(SERVER));
+			sll_init((SLL *)nodep->server_head);
+			sll_insert_queue((SLL *)Node_head,(SLL *)nodep);
+		}
+	}
+	if (!(servp = find_server(nodep,buffer->server.pid)))
+	{
+		if(n_services)
+		{
+			servp = (SERVER *)malloc(sizeof(SERVER));
+			strcpy(servp->name,sname);
+			servp->next = 0;
+			servp->busy = 0;
+			servp->server.n_services = 0;
+			servp->service_ptr = 0;
+			servp->isSMI = 0;
+			if(strstr(sname,"_SMI"))
+			{
+				servp->isSMI = 1;
+				nodep->hasSMI = 1;
+			}
+			sll_insert_queue((SLL *)nodep->server_head,(SLL *)servp);
+		}
+	}
+	if(n_services != 0)
+	{
+		if(n_services == servp->server.n_services)
+		{
+			return;
+		}
+		if(servp->server.n_services == 0)
+			N_servers++;
+		if(servp->server.n_services != -1)
+			N_services -= servp->server.n_services;
+		memcpy(&servp->server,&buffer->server,sizeof(DNS_SERVER_INFO));
+		if(servp->service_ptr)
+		{
+			free(servp->service_ptr);
+			servp->service_ptr = 0;
+		}
+		if(n_services != -1)
+		{
+			service_size = n_services*(int)sizeof(DNS_SERVICE_INFO);
+			servp->service_ptr = (DNS_SERVICE_INFO *)malloc((size_t)service_size);
+			memcpy(servp->service_ptr, buffer->services, (size_t)service_size);
+			N_services += n_services;
+		}
+		servp->busy = 1;
+	}
+	else
+	{
+	  if(servp)
+	    {
+		N_servers--;
+		if(servp->server.n_services != -1)
+		  {
+			N_services -= servp->server.n_services;
+		  }
+		servp->server.n_services = 0;
+		servp->busy = -1;
+		servp->isSMI = 0;
+	    }
+	}
+	if(JSONHeader[0])
+	  prepareJSONHeader();
+}
+
+void got_update_services(BROWSER **tag, char *buffer, int *size)
+{
+	BROWSER *browserp;
+
+	if(size){}
+	browserp = (BROWSER *)*tag;
+	if(browserp->service_format_ptr)
+		free(browserp->service_format_ptr);
+	browserp->service_format_ptr = (char *)malloc(strlen(buffer)+1);
+	strcpy(browserp->service_format_ptr, buffer);
+}
+
+char *update_services(char *node, char *server, int pid, int browser)
+{
+	char str[MAX_NAME];
+	NODE *nodep;
+	SERVER *servp;
+	char *ptr = 0;
+	BROWSER *browserp;
+	char *prepareJSONServiceList();
+	BROWSER *create_browser();
+
+	if(!(browserp = find_browser(browser)))
+		browserp = create_browser(browser);
+
+	if(server){}
+	sprintf(str,"%s/SERVICE_LIST",server);
+	dic_info_service(str,ONCE_ONLY,20,0,0,
+		got_update_services,(dim_long)browserp,"None",5);
+	if((nodep = find_node(node)))
+	{
+	    if((servp = find_server(nodep, pid)))
+		{
+			ptr = prepareJSONServiceList(servp, node, pid, browserp);
+		}
+	}
+	return ptr;
+}
+
+void got_update_smi_objects(BROWSER **tag, char *buffer, int *size)
+{
+	BROWSER *browserp;
+
+	if(size){}
+	browserp = (BROWSER *)*tag;
+	if(browserp->service_format_ptr)
+		free(browserp->service_format_ptr);
+	browserp->service_format_ptr = (char *)malloc(strlen(buffer)+1);
+	strcpy(browserp->service_format_ptr, buffer);
+}
+
+char *update_smi_objects(char *node, char *server, int pid, int browser)
+{
+	char str[MAX_NAME];
+	NODE *nodep;
+	SERVER *servp;
+	char *ptr = 0;
+	BROWSER *browserp;
+	char *prepareJSONSmiObjectList();
+	BROWSER *create_browser();
+
+	if(!(browserp = find_browser(browser)))
+	{
+		browserp = create_browser(browser);
+		browserp->isSMI = 1;
+	}
+	if(server){}
+	sprintf(str,"%s/SERVICE_LIST",server);
+	dic_info_service(str,ONCE_ONLY,20,0,0,
+		got_update_smi_objects,(dim_long)browserp,"None",5);
+	if((nodep = find_node(node)))
+	{
+	    if((servp = find_server(nodep, pid)))
+		{
+			ptr = prepareJSONSmiObjectList(servp, node, pid, browserp);
+		}
+	}
+	return ptr;
+}
+
+void get_curr_service_format()
+{
+	char *format;
+	char *dic_get_format();
+/*
+	char str[256], *ptr, *ptr1;
+	int rpc_flag;
+
+	strcpy(str,Curr_service_name);
+	rpc_flag = 0;
+	if( (ptr = strstr(str,"/RpcIn")) )
+	{
+		*ptr = '\0';
+		rpc_flag = 1;
+	}
+	if( (ptr = strstr(str,"/RpcOut")) )
+	{
+		*ptr = '\0';
+		rpc_flag = 2;
+	}
+	strcat(str,"|");
+*/
+	format = dic_get_format(0);
+/*
+	if( (ptr = strstr(Curr_service_list,str)) )
+	{
+		if(!rpc_flag)
+		{
+		    ptr += (int)strlen(str);
+		    ptr1 = strchr(ptr,'|');
+		}
+		else if(rpc_flag == 1)
+		{
+		    ptr += (int)strlen(str);
+		    ptr1 = strchr(ptr,',');
+		}
+		else
+		{
+		    ptr += (int)strlen(str);
+		    ptr = strchr(ptr,',');
+		    ptr++;
+		    ptr1 = strchr(ptr,'|');
+		}
+	    strncpy(Curr_service_format,ptr,(int)(ptr1 - ptr));
+	    Curr_service_format[(int)(ptr1-ptr)] = '\0';
+	}
+*/
+	if(format)
+		strcpy(Curr_service_format,format);
+	else
+		Curr_service_format[0] = '\0';
+}
+
+void get_service_format(char *buffer, char *service, char *format)
+{
+	char str[256], *ptr, *ptr1;
+	int rpc_flag;
+
+	strcpy(str, service);
+	rpc_flag = 0;
+	*format = '\0';
+	if( (ptr = strstr(str,"/RpcIn")) )
+	{
+		*ptr = '\0';
+		rpc_flag = 1;
+	}
+	if( (ptr = strstr(str,"/RpcOut")) )
+	{
+		*ptr = '\0';
+		rpc_flag = 2;
+	}
+	strcat(str,"|");
+	if( (ptr = strstr(buffer, str)) )
+	{
+		if(!rpc_flag)
+		{
+		    ptr += (int)strlen(str);
+		    ptr1 = strchr(ptr,'|');
+		}
+		else if(rpc_flag == 1)
+		{
+		    ptr += (int)strlen(str);
+		    ptr1 = strchr(ptr,',');
+		}
+		else
+		{
+		    ptr += (int)strlen(str);
+		    ptr = strchr(ptr,',');
+		    ptr++;
+		    ptr1 = strchr(ptr,'|');
+		}
+	    strncpy(format,ptr,(size_t)(ptr1 - ptr));
+	    format[(int)(ptr1-ptr)] = '\0';
+	}
+}
+
+int delete_curr_service(CURR_SERVICE *servicep)
+{
+
+if(WebDID_Debug)
+printf("\nUnsubscribing %s\n\n",servicep->name); 
+	dic_release_service(servicep->sid);
+	if(servicep->buffer_size)
+		free(servicep->buffer);
+	if(servicep->buffer_str_size)
+		free(servicep->buffer_str);
+	sll_remove((SLL *)Curr_service_head, (SLL *)servicep);
+	free(servicep);
+	return(1);
+}
+
+int delete_browser(BROWSER *browserp)
+{
+	CURR_SERVICE *servicep;
+
+	if((servicep = browserp->servicep))
+	{
+		servicep->n_browsers--;
+		if(!servicep->n_browsers)
+			delete_curr_service(servicep);
+	}
+	if(browserp->service_format_ptr)
+		free(browserp->service_format_ptr);
+	sll_remove((SLL *)Browser_head, (SLL *)browserp);
+	free(browserp);
+	return(1);
+}
+
+void check_browser( BROWSER *tag)
+{
+	BROWSER *browserp;
+	time_t tsecs;
+
+	browserp = (BROWSER *)tag;
+if(WebDID_Debug)
+printf("\nCheck_browser %d\n",browserp->id); 
+	tsecs = time((time_t *)0);
+	if((tsecs - browserp->last_polled) > 20)
+	{
+if(WebDID_Debug)
+printf("\nDeleting browser %d\n\n",browserp->id); 
+		delete_browser(browserp);
+	}
+	else
+		dtq_start_timer(10, check_browser, browserp);
+}
+
+BROWSER *create_browser(int id)
+{
+	BROWSER *browserp;
+
+	if(!Browser_head)
+	{
+		Browser_head = (BROWSER *)malloc(sizeof(BROWSER));
+		sll_init((SLL *)Browser_head);
+	}
+	browserp = (BROWSER *)malloc(sizeof(BROWSER));
+	browserp->id = id;
+    browserp->last_subscribed = 0;
+	browserp->last_updated = 0;
+	browserp->last_polled = 0;
+    browserp->last_changed = 0;
+	browserp->n_nodes = 0;
+	browserp->n_servers = 0;
+	browserp->n_services = 0;
+	browserp->servicep = 0;
+	browserp->JSONBuffer = 0;
+	browserp->JSONBufferSize = 0;
+	browserp->JSONSmiBuffer = 0;
+	browserp->JSONSmiBufferSize = 0;
+	browserp->pattern[0] = '\0';
+	browserp->service_format_ptr = 0;
+	browserp->curr_command[0] = '\0';
+	browserp->curr_smidomain[0] = '\0';
+	browserp->smidomainp = 0;
+	sll_insert_queue((SLL *)Browser_head,(SLL *)browserp);
+	dtq_start_timer(10, check_browser, browserp);
+	return browserp;
+}
+
+int update_command_data(char *service, int conn_id, BROWSER *browserp)
+{
+	char format[MAX_NAME];
+	char answer[MAX_NAME*3];
+	extern void sendData();
+
+	if(browserp->service_format_ptr)
+	{
+		get_service_format(browserp->service_format_ptr, service, format);
+if(WebDID_Debug)
+printf("CMD data %s %s\n",service,format);
+	}
+	else
+	{
+		strcpy(format,"?");
+	}
+	strcpy(browserp->curr_command, service);
+	sprintf(answer,"To %s (%s)",service, format);
+	sendData(conn_id, answer, 4);
+	return 1;
+}
+
+int update_service_data(char *service, int conn_id, int subscribe, int req, int browser, int force)
+{
+	CURR_SERVICE *servicep;
+	time_t tsecs;
+	void recv_service_info();
+	extern void sendData();
+	BROWSER *browserp;
+
+	if(req){}
+	if(!Curr_service_head)
+	{
+		Curr_service_head = (CURR_SERVICE *)malloc(sizeof(CURR_SERVICE));
+		sll_init((SLL *)Curr_service_head);
+	}
+	if(!(browserp = find_browser(browser)))
+		browserp = create_browser(browser);
+	if(force == -1)
+	{
+		update_command_data(service, conn_id, browserp);
+		return 1;
+	}
+	if((servicep = browserp->servicep))
+	{
+		servicep->n_browsers--;
+		if(!servicep->n_browsers)
+			delete_curr_service(servicep);
+	}
+	if(!(servicep = find_curr_service(service)))
+	{
+		servicep = (CURR_SERVICE *)malloc(sizeof(CURR_SERVICE));
+		strcpy(servicep->name,service);
+		servicep->conn_id = conn_id;
+		servicep->buffer = 0;
+		servicep->buffer_size = 0;
+		servicep->size = 0;
+		servicep->buffer_str = 0;
+		servicep->buffer_str_size = 0;
+		servicep->str_size = 0;
+		servicep->last_updated = 0;
+		tsecs = time((time_t *)0);
+		browserp->last_subscribed = tsecs;
+		browserp->last_updated = tsecs;
+		servicep->last_subscribed = tsecs;
+		servicep->n_browsers = 0;
+		sll_insert_queue((SLL *)Curr_service_head,(SLL *)servicep);
+		servicep->sid = (int)dic_info_service_stamped( service, MONITORED, subscribe, 0, 0,
+			recv_service_info, servicep, &no_link_int, 4);
+	}
+	else
+	{
+		if(servicep->size)
+		{
+			if((servicep->timestamp > browserp->last_updated) || (force))
+			{
+				sendData(conn_id, servicep->buffer_str, 4);
+			}
+			else
+			{
+				sendData(conn_id, "", 4);
+			}
+			browserp->last_updated = servicep->timestamp;
+		}
+	}
+	if(force)
+	{
+		browserp->servicep = servicep;
+		servicep->n_browsers++;
+	}
+	return 1;
+}
+
+int check_browser_changes(char *service, int conn_id, int subscribe, int req, int browser, int force)
+{
+	CURR_SERVICE *servicep;
+	time_t tsecs;
+	void recv_service_info();
+	extern void sendData();
+	BROWSER *browserp;
+	char answer[256];
+	int service_changed = 0;
+
+	if(req){}
+	if(subscribe){}
+	if(!(browserp = find_browser(browser)))
+		browserp = create_browser(browser);
+	if(!Curr_service_head)
+	{
+		Curr_service_head = (CURR_SERVICE *)malloc(sizeof(CURR_SERVICE));
+		sll_init((SLL *)Curr_service_head);
+	}
+	if(service[0] != '\0')
+	{
+	    if((servicep = find_curr_service(service)))
+		{
+			if(servicep->size)
+			{
+				if((servicep->timestamp > browserp->last_updated) || (force))
+				{
+					service_changed = 1;
+				}
+			}
+		}
+	}
+	if(browserp->isSMI)
+	{
+		if((browserp->last_changed >= browserp->last_polled) || (force))
+		{
+				service_changed = 1;
+		}
+	}
+/*
+	sprintf(answer,"%d %d %d %d\n",
+		browserp->n_services_changed, browserp->n_servers_changed, 
+		browserp->n_nodes_changed, service_changed);
+*/
+	sprintf(answer,"%d %d %d %d %d %d %d\n",
+		N_services, N_servers, N_nodes, service_changed,
+		browserp->n_services, browserp->n_servers, browserp->n_nodes);
+	sendData(conn_id, answer, 4);
+	tsecs = time((time_t *)0);
+	browserp->last_polled = tsecs;
+	return 1;
+}
+
+int find_services(char *pattern, int conn_id, int browser, int force)
+{
+	void recv_service_info();
+	extern void sendData();
+	BROWSER *browserp;
+	char format[MAX_NAME];
+	int prepareJSONTree();
+	void did_prepare_command();
+
+	if(conn_id){}
+	if(!(browserp = find_browser(browser)))
+		browserp = create_browser(browser);
+	if(force == -1)
+	{
+		if(browserp->service_format_ptr)
+		{
+			get_service_format(browserp->service_format_ptr, browserp->curr_command, format);
+			did_prepare_command(pattern, browserp->curr_command, format);
+		}
+		return 1;
+	}
+	if(conn_id){}
+	if(!(browserp = find_browser(browser)))
+		browserp = create_browser(browser);
+	strcpy(browserp->pattern, pattern);
+	return 1;
+}
+
+void recv_service_info(void **tag, int *buffer, int *size)
+{
+	int conn_id;
+	void print_service_formatted();
+	extern void sendData();
+	CURR_SERVICE *servicep;
+	time_t tsecs;
+
+	servicep = *tag;
+	conn_id = servicep->conn_id;
+	if (servicep->buffer_size < *size)
+	{
+		if(servicep->buffer_size)
+			free(servicep->buffer);
+		servicep->buffer = malloc((size_t)*size);
+		servicep->buffer_size = *size;
+	}
+	memcpy(servicep->buffer, (char *)buffer, (size_t)*size);
+	servicep->size = *size;
+	if (servicep->buffer_str_size < (1024 + (*size)*16))
+	{
+		if(servicep->buffer_str_size)
+			free(servicep->buffer_str);
+		servicep->buffer_str = malloc((size_t)(1024 + (*size)*16));
+		servicep->buffer_str_size = 1024 + (*size)*16;
+	}
+	Service_content_str = servicep->buffer_str;
+	strcpy(Curr_service_name, servicep->name);
+	get_curr_service_format();
+	if((*size == 4 ) && (*buffer == -1))
+	{
+		sprintf(Service_content_str,
+			"Service %s Not Available", Curr_service_name);
+	}
+	else
+	{
+		print_service_formatted(servicep, buffer, *size);
+	}
+	if(servicep->last_updated == 0)
+	{
+		sendData(conn_id, Service_content_str, 4);
+		tsecs = time((time_t *)0);
+		servicep->last_updated = tsecs;
+	}
+}
+
+void print_service_formatted(CURR_SERVICE *servicep, void *buff, int size)
+{
+char type;
+int num, ret;
+char str[256];
+char *ptr;
+void *buffer_ptr;
+char timestr[256], aux[64], sizestr[64];
+int quality = 0, secs = 0, mili = 0; 
+int did_write_string(char, int, void **, int);
+time_t tsecs;
+
+	if(size < 1024)
+		sprintf(sizestr,"%d bytes",size);
+	else if (size < 1024*1024)
+		sprintf(sizestr,"%2.2f Kb",(float)size/1024);
+	else
+		sprintf(sizestr,"%2.2f Mb",(float)size/(1024*1024));
+
+	sprintf(Service_content_str,
+	  "<FONT FACE=\"consolas\">Service %s (%s) Contents :<br />  <br />", Curr_service_name,
+	  Curr_service_format);
+    dic_get_timestamp(0, &secs, &mili);
+    quality = dic_get_quality(0);
+	tsecs = secs;
+	servicep->timestamp = tsecs;
+	my_ctime(&tsecs, timestr, 128);
+    ptr = strrchr(timestr,' ');
+    strcpy(aux, ptr);
+    sprintf(ptr,".%03d",mili);
+    strcat(timestr, aux);
+    timestr[(int)strlen(timestr)-1] = '\0';
+   
+    sprintf(str," Timestamp: %s&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Quality: %d&nbsp&nbsp&nbsp Size: %s<br /><br />",
+	  timestr, quality, sizestr);
+
+   strcat(Service_content_str,str);
+   ptr = Curr_service_format;
+   buffer_ptr = buff;
+   while(*ptr)
+   { 
+     type = *ptr++;
+     if(*ptr == ':')
+     {
+		ptr++;
+		sscanf(ptr, "%d", &num);
+		ret = did_write_string(type, num, &buffer_ptr, size);
+		size -= ret;
+		if( (ptr = strchr(ptr,';')) )
+			ptr++;
+		else
+			break;
+	 }
+     else
+     {
+		ret = did_write_string(type, 0, &buffer_ptr, size);
+		size -= ret;
+		break;
+     }
+   }
+   strcat(Service_content_str,"</FONT>");
+}
+
+
+int did_write_string(char type, int num, void **buffer_ptr, int ssize)
+{
+void *ptr;
+int size, psize;
+
+  void print_service_standard();
+  void print_service_char();
+  void print_service_short();
+  void print_service_float();
+  void print_service_double();
+
+  ptr = *buffer_ptr;
+  switch(type)
+    {
+    case 'L':
+    case 'l':
+      strcat(Service_content_str," L");
+      if(!num)
+		size = ssize/(int)sizeof(int);
+      else
+		size = num;
+      psize = size * (int)sizeof(int);
+      print_service_standard(ptr, size);
+      break;
+    case 'I':
+    case 'i':
+      strcat(Service_content_str," I");
+      if(!num)
+		size = ssize/(int)sizeof(int);
+      else
+		size = num;
+      psize = size * (int)sizeof(int);
+      print_service_standard(ptr, size);
+      break;
+    case 'S':
+    case 's':
+      strcat(Service_content_str," S");
+      if(!num)
+		size = ssize/(int)sizeof(short);
+      else
+		size = num;
+      psize = size * (int)sizeof(short);
+      print_service_short(ptr, size);
+      break;
+    case 'F':
+    case 'f':
+      strcat(Service_content_str," F");
+      if(!num)
+		size = ssize/(int)sizeof(float);
+      else
+		size = num;
+      psize = size * (int)sizeof(float);
+      print_service_float(ptr, size);
+      break;
+    case 'D':
+    case 'd':
+      strcat(Service_content_str," D");
+      if(!num)
+		size = ssize/(int)sizeof(double);
+      else
+		size = num;
+      psize = size * (int)sizeof(double);
+      print_service_double(ptr, size);
+      break;
+    case 'X':
+    case 'x':
+      strcat(Service_content_str," X");
+      if(!num)
+		size = ssize/(int)sizeof(longlong);
+      else
+		size = num;
+      psize = size * (int)sizeof(longlong);
+      print_service_standard(ptr, size*2);
+      break;
+    case 'C':
+    case 'c':
+    default:
+      strcat(Service_content_str," C");
+      if(!num)
+		size = ssize;
+      else
+		size = num;
+      psize = size;
+      print_service_char(ptr, size);
+    }
+  ptr = (char *)ptr + psize;
+  *buffer_ptr = ptr;
+  return psize;
+}
+
+void sprintf_html(char *str, int n, int value)
+{
+	char tmp[80];
+	int min, i;
+
+	str[0] = '\0';
+	min = sprintf(tmp,"%d",value);
+	for(i = 0; i < (n-min); i++)
+	{
+		strcat(str,"&nbsp");
+	}
+	strcat(str, tmp);
+}
+
+void print_service_standard(int *buff, int size)
+{
+int i,j;
+char *ptr, str[80], tmp[256];
+int last[4];
+
+	ptr = Service_content_str;
+	ptr += (int)strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%4 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"&nbsp");
+		    }
+			sprintf_html(str, 7, i);
+			strcat(tmp,str);
+		}
+		if(!(i%4))
+			strcat(tmp,"H: ");
+		sprintf(str,"&nbsp&nbsp&nbsp %08X",buff[i]);
+		strcat(tmp,str);
+		last[i%4] = buff[i];
+		if((i%4 == 3) || (i == (size-1)))
+		{
+			strcat(tmp,"<br />");
+			for(j = 0; j <= (i%4); j++)
+			{
+				if(j == 0)
+					strcat(tmp,"&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp D: ");
+				sprintf_html(str, 12, last[j]);
+				strcat(tmp,str);
+			}
+			strcat(tmp,"<br />");
+		}
+		strcpy(ptr, tmp);
+		ptr += (int)strlen(tmp);
+	}
+	strcpy(tmp,"<br />");
+	strcpy(ptr, tmp);
+}
+
+void print_service_longlong(longlong *buff, int size)
+{
+int i,j;
+char *ptr, str[80], tmp[256];
+longlong last[4];
+
+	ptr = Service_content_str;
+	ptr += (int)strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%4 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"&nbsp");
+		    }
+			sprintf_html(str, 7, i);
+			strcat(tmp,str);
+		}
+		if(!(i%4))
+			strcat(tmp,"H: ");
+		sprintf(str,"&nbsp&nbsp&nbsp %08X",(unsigned)buff[i]);
+		strcat(tmp,str);
+		last[i%4] = buff[i];
+		if((i%4 == 3) || (i == (size-1)))
+		{
+			strcat(tmp,"<br />");
+			for(j = 0; j <= (i%4); j++)
+			{
+				if(j == 0)
+					strcat(tmp,"&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp D: ");
+				sprintf_html(str, 12, (int)last[j]);
+				strcat(tmp,str);
+			}
+			strcat(tmp,"<br />");
+		}
+		strcpy(ptr, tmp);
+		ptr += (int)strlen(tmp);
+	}
+	strcpy(tmp,"<br />");
+	strcpy(ptr, tmp);
+}
+
+void print_service_short(short *buff, int size)
+{
+int i,j;
+char *ptr, str[80], tmp[256];
+short last[8];
+
+	ptr = Service_content_str;
+	ptr += (int)strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%8 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"&nbsp");
+		    }
+			sprintf_html(str, 7, i);
+			strcat(tmp,str);
+		}
+		if(!(i%8))
+			strcat(tmp,"H: ");
+		sprintf(str,"&nbsp %04X",buff[i]);
+		strcat(tmp,str);
+		last[i%8] = buff[i];
+		if((i%8 == 7) || (i == (size-1)))
+		{
+			strcat(tmp,"<br />");
+			for(j = 0; j <= (i%8); j++)
+			{
+				if(j == 0)
+					strcat(tmp,"&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp D: ");
+				sprintf_html(str, 6, last[j]);
+				strcat(tmp,str);
+			}
+			strcat(tmp,"<br />");
+		}
+		strcpy(ptr, tmp);
+		ptr += (int)strlen(tmp);
+	}
+	strcpy(tmp,"<br />");
+	strcpy(ptr, tmp);
+}
+
+void print_service_char(char *buff, int size)
+{
+int i,j;
+char *asc, *ptr, str[80], tmp[256];
+
+	asc = (char *)buff;
+	ptr = Service_content_str;
+	ptr += (int)strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%16 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"&nbsp");
+		    }
+			sprintf_html(str, 7, i);
+			strcat(tmp,str);
+		}
+		if(!(i%16))
+			strcat(tmp,"H: ");
+		sprintf(str,"%02X",buff[i]);
+/*		strcat(tmp,str);
+*/
+		strcat(tmp," ");
+		strcat(tmp,&str[(int)strlen(str)-2]);
+		/*
+		if(i%4 == 3)
+		  strcat(tmp," ");
+		*/
+		if((i%16 == 15) || (i == (size-1)))
+		{
+			if(i%16 != 15)
+			{
+			    for(j = 1; j < 16 - (i%16); j++)
+				strcat(tmp,"&nbsp&nbsp ");
+			}
+			strcat(tmp,"&nbsp&nbsp&nbsp '");
+			for(j = 0; j <= (i%16) ; j++)
+			{
+				if(isprint(asc[j]))
+				{
+					if(asc[j] == ' ')
+						sprintf(str,"&nbsp");
+					else if(asc[j] == '<')
+						sprintf(str,"&lt");
+					else if(asc[j] == '>')
+						sprintf(str,"&gt");
+					else if(asc[j] == '&')
+						sprintf(str,"&amp");
+					else
+						sprintf(str,"%c",asc[j]);
+					strcat(tmp,str);
+				}
+				else
+				{
+					sprintf(str,".");
+					strcat(tmp,str);
+				}
+			}
+			strcat(tmp,"'<br />");
+			asc = (char *)&buff[i+1];
+		}
+		strcpy(ptr, tmp);
+		ptr += (int)strlen(tmp);
+	}
+	strcpy(tmp,"<br />");
+	strcpy(ptr, tmp);
+}
+
+void print_service_float(float *buff, int size)
+{
+int i;
+char *ptr, str[80], tmp[256];
+
+	ptr = Service_content_str;
+	ptr += (int)strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%4 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"&nbsp");
+		    }
+			sprintf_html(str, 7, i);
+			strcat(tmp,str);
+		}
+		sprintf(str,"%12.3G",*(buff++));
+		strcat(tmp,str);
+		if((i%4 == 3) || (i == size-1))
+		{
+			strcat(tmp,"<br />");
+		}
+		strcpy(ptr, tmp);
+		ptr += (int)strlen(tmp);
+	}
+	strcpy(tmp,"<br />");
+	strcpy(ptr, tmp);
+	ptr += (int)strlen(tmp);
+}
+
+void print_service_double(double *buff, int size)
+{
+int i;
+char *ptr, str[80], tmp[256];
+
+    ptr = Service_content_str;
+	ptr += (int)strlen(Service_content_str);
+	for( i = 0; i < size; i++)
+	{
+	  strcpy(tmp,"");
+		if(i%4 == 0)
+		{
+		  if(i != 0)
+		    {
+			strcat(tmp,"&nbsp");
+		    }
+			sprintf_html(str, 7, i);
+			strcat(tmp,str);
+		}
+		sprintf(str,"%12.3G",*(buff++));
+		strcat(tmp,str);
+		if((i%4 == 3) || (i == size-1))
+		{
+			strcat(tmp,"<br />");
+		}
+		strcpy(ptr, tmp);
+		ptr += (int)strlen(tmp);
+	}
+	strcpy(tmp,"<br />");
+	strcpy(ptr, tmp);
+	ptr += (int)strlen(tmp);
+}
+
+char *addJSONStart(char *ptr)
+{
+	char *ptro;
+
+	strcat(ptr,"{\n");
+	ptro = ptr + (int)strlen(ptr);
+	return ptro;
+}
+
+char *addJSONEnd(char *ptr)
+{
+	char *ptro;
+
+	strcat(ptr,"}\n");
+	ptro = ptr + (int)strlen(ptr);
+	return ptro;
+}
+
+char *addJSONNodeStart(char *ptr, char *node)
+{
+	char *ptro;
+
+	sprintf(ptr,"%s: [\n", node);
+	ptro = ptr + (int)strlen(ptr);
+	return ptro;
+}
+
+char *addJSONNodeEnd(char *ptr)
+{
+	char *ptro;
+
+	strcat(ptr,"]\n");
+	ptro = ptr + (int)strlen(ptr);
+	return ptro;
+}
+
+char *addJSONChildStart(char *ptr, char *child, int sep)
+{
+	char *ptro;
+
+	if(sep)
+		sprintf(ptr,"{ %s, ", child);
+	else
+		sprintf(ptr,"{ %s", child);
+	ptro = ptr + (int)strlen(ptr);
+	return ptro;
+}
+
+char *addJSONChildEnd(char *ptr, int sep)
+{
+	char *ptro;
+
+	if(sep)
+		strcat(ptr," },\n");
+	else
+		strcat(ptr," }\n");
+	ptro = ptr + (int)strlen(ptr);
+	return ptro;
+}
+
+char *getJSONBuffer(char *node, int browser)
+{
+	BROWSER *browserp;
+	int prepareJSONTree();
+
+	if(browser)
+	{
+	    if((browserp = find_browser(browser)))
+		{
+			if(browserp->pattern[0] != '\0')
+			{
+			  prepareJSONTree(node, browserp);
+			  return(browserp->JSONBuffer);
+			}
+			browserp->n_services = 0;
+			browserp->n_servers = 0;
+			browserp->n_nodes = 0;
+		}
+	}
+	prepareJSONTree(node, 0);
+	return(JSONBuffer);
+}
+
+char *getJSONSmiBuffer(char *node, int browser)
+{
+	BROWSER *browserp;
+	int prepareJSONSmiTree();
+
+	if(!(browserp = find_browser(browser)))
+	{
+		browserp = create_browser(browser);
+		browserp->isSMI = 1;
+		strcpy(browserp->pattern,"SMI/");
+	}
+	if(browser)
+	{
+	    if((browserp = find_browser(browser)))
+		{
+			if(browserp->pattern[0] != '\0')
+			{
+			  prepareJSONSmiTree(node, browserp);
+			  return(browserp->JSONSmiBuffer);
+			}
+//			browserp->n_services = 0;
+//			browserp->n_servers = 0;
+//			browserp->n_nodes = 0;
+		}
+	}
+	prepareJSONSmiTree(node, 0);
+	return(JSONSmiBuffer);
+}
+
+char *getJSONHeader(int isSMI)
+{
+  int prepareJSONHeader();
+
+  if(isSMI){}
+  if(JSONHeader[0] == '\0')
+    prepareJSONHeader();
+  return(JSONHeader);
+}
+
+int getNodeLabel(char *name, char *label)
+{
+	int i;
+	extern int web_get_node_name();
+
+	web_get_node_name(name, label);
+	for(i = 0; i < ((int)strlen(label) + 1); i++)
+	{
+		label[i] = (char)tolower((int)label[i]);
+		if(label[i] == '.')
+		{
+		    label[i] = '\0';
+		    break;
+		}
+	}
+	return 1;
+}
+
+int prepareJSONTree(char *node, BROWSER *browserp)
+{
+	char *ptr;
+	NODE *nodep;
+	SERVER *servp;
+	char str[256], aux[128];
+	int selective = 0;
+	int n_nodes, tot_n_nodes;
+	int n_servers, tot_n_servers;
+	int ret, n_found = 0;
+
+	if(browserp)
+	{
+		if(browserp->pattern[0] != '\0')
+			selective = 1;
+		else
+			return(0);
+	}
+	if(!selective)
+	{
+		if(JSONBufferSize == 0)
+		{
+			JSONBuffer = malloc((size_t)(N_nodes*128+N_servers*128));
+		}
+		else if (JSONBufferSize < N_nodes*128+N_servers*128)
+		{
+			free(JSONBuffer);
+			JSONBuffer = malloc((size_t)(N_nodes*128+N_servers*128));
+		}
+		ptr = JSONBuffer;
+	}
+	else
+	{
+		if(browserp->JSONBufferSize == 0)
+		{
+			browserp->JSONBuffer = malloc((size_t)(N_nodes*128+N_servers*128));
+		}
+		else if (browserp->JSONBufferSize < N_nodes*128+N_servers*128)
+		{
+			free(browserp->JSONBuffer);
+			browserp->JSONBuffer = malloc((size_t)(N_nodes*128+N_servers*128));
+		}
+		ptr = browserp->JSONBuffer;
+	}
+	*ptr = '\0';
+	if(!strcmp(node, "src"))
+	{
+	ptr = addJSONStart(ptr);
+	ptr = addJSONNodeStart(ptr,"children");
+		sprintf(str,"text: \"%s\", id: \"Nodes\", expanded: false", Title);
+			ptr = addJSONChildStart(ptr,str,1);
+		ptr = addJSONNodeStart(ptr,"children");
+	nodep = Node_head;
+	tot_n_nodes = 0;
+	while( (nodep = (NODE *)sll_get_next((SLL *)nodep)) )
+	{
+		nodep->match = 1;
+		if(selective)
+		{
+			if(!(ret = find_service_pattern(nodep, 0, browserp->pattern, &tot_n_servers)))
+			{
+				nodep->match = 0;
+				continue;
+			}
+			else
+			{
+				n_found += ret;
+			}
+		}
+		tot_n_nodes++;
+	}
+	n_nodes = 0;
+	nodep = Node_head;
+	while( (nodep = (NODE *)sll_get_next((SLL *)nodep)) )
+	{
+		if(!nodep->match)
+			continue;
+		getNodeLabel(nodep->name, aux);
+		sprintf(str,"text: \"%s\", id: \"%s\", qtip: \"%s\"",
+			aux, nodep->name, nodep->name);
+		ptr = addJSONChildStart(ptr,str,0);
+		n_nodes++;
+if(WebDID_Debug)
+		printf("adding %s %d %d\n",nodep->name, n_nodes, tot_n_nodes);
+		if(n_nodes < tot_n_nodes)
+			ptr = addJSONChildEnd(ptr,1);
+		else
+			ptr = addJSONChildEnd(ptr,0);
+	}
+		ptr = addJSONNodeEnd(ptr);
+		ptr = addJSONChildEnd(ptr,0);
+	ptr = addJSONNodeEnd(ptr);
+	ptr = addJSONEnd(ptr);
+	if(selective)
+	{
+		browserp->n_services = n_found;
+		browserp->n_servers = tot_n_servers;
+		browserp->n_nodes = tot_n_nodes;
+	}
+	}
+	else
+	{
+	  if((nodep = find_node(node)))
+	  {
+	ptr = addJSONStart(ptr);
+	ptr = addJSONNodeStart(ptr,"children");
+		servp = nodep->server_head;
+		tot_n_servers = 0;
+		while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+		{
+			servp->match = 1;
+			if(servp->busy != 1)
+			{
+				servp->match = 0;
+				continue;
+			}
+			if(selective)
+			{
+				if(!(ret = find_service_pattern(nodep, servp, browserp->pattern, 0)))
+				{
+					servp->match = 0;
+					continue;
+				}
+				else
+				{
+					n_found += ret;
+				}
+			}
+			tot_n_servers++;
+		}
+		n_servers = 0;
+		servp = nodep->server_head;
+		while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+		{
+			if(!servp->match)
+				continue;
+			sprintf(str,"text: \"%s\", id: \"%d\", leaf: true, icon: \"server.png\"",servp->name, servp->server.pid);
+			ptr = addJSONChildStart(ptr,str,0);
+			n_servers++;
+			if(n_servers < tot_n_servers)
+				ptr = addJSONChildEnd(ptr,1);
+			else
+				ptr = addJSONChildEnd(ptr,0);
+		}
+	ptr = addJSONNodeEnd(ptr);
+	ptr = addJSONEnd(ptr);
+	  }
+	}
+	/*
+if(!selective)
+printf(" Nodes&Servers %s\n",JSONBuffer);
+else
+printf(" Nodes&Servers %s\n",browserp->JSONBuffer);
+	*/
+	return(1);
+}
+
+int prepareJSONSmiTree(char *node, BROWSER *browserp)
+{
+	char *ptr;
+	NODE *nodep;
+	SERVER *servp;
+	char str[256], aux[128];
+	int selective = 0;
+	int n_nodes, tot_n_nodes;
+	int n_servers, tot_n_servers;
+	int ret, n_found = 0;
+	char pattern[256] = {'\0'};
+	char *sptr;
+
+	if(browserp)
+	{
+		if(browserp->pattern[0] != '\0')
+		{
+			selective = 1;
+			strcpy(pattern, browserp->pattern);
+		}
+//		else
+//			return(0);
+	}
+//	selective = 1;
+//	strcpy(pattern,"SMI/*");
+	if(!selective)
+	{
+		if(JSONSmiBufferSize == 0)
+		{
+			JSONSmiBuffer = malloc((size_t)(N_nodes*128+N_servers*128));
+		}
+		else if (JSONSmiBufferSize < N_nodes*128+N_servers*128)
+		{
+			free(JSONSmiBuffer);
+			JSONSmiBuffer = malloc((size_t)(N_nodes*128+N_servers*128));
+		}
+		ptr = JSONSmiBuffer;
+	}
+	else
+	{
+		if(browserp->JSONSmiBufferSize == 0)
+		{
+			browserp->JSONSmiBuffer = malloc((size_t)(N_nodes*128+N_servers*128));
+		}
+		else if (browserp->JSONSmiBufferSize < N_nodes*128+N_servers*128)
+		{
+			free(browserp->JSONSmiBuffer);
+			browserp->JSONSmiBuffer = malloc((size_t)(N_nodes*128+N_servers*128));
+		}
+		ptr = browserp->JSONSmiBuffer;
+	}
+	*ptr = '\0';
+	if(!strcmp(node, "src"))
+	{
+	ptr = addJSONStart(ptr);
+	ptr = addJSONNodeStart(ptr,"children");
+		sprintf(str,"text: \"%s\", id: \"Nodes\", expanded: false", Title);
+			ptr = addJSONChildStart(ptr,str,1);
+		ptr = addJSONNodeStart(ptr,"children");
+	nodep = Node_head;
+	tot_n_nodes = 0;
+	while( (nodep = (NODE *)sll_get_next((SLL *)nodep)) )
+	{
+		nodep->match = 1;
+		if(selective)
+		{
+			if(!(ret = find_service_pattern(nodep, 0, pattern, &tot_n_servers)))
+			{
+				nodep->match = 0;
+				continue;
+			}
+			else
+			{
+				n_found += ret;
+			}
+		}
+		tot_n_nodes++;
+	}
+	n_nodes = 0;
+	nodep = Node_head;
+	while( (nodep = (NODE *)sll_get_next((SLL *)nodep)) )
+	{
+		if(!nodep->match)
+			continue;
+		getNodeLabel(nodep->name, aux);
+		sprintf(str,"text: \"%s\", id: \"%s\", qtip: \"%s\"",
+			aux, nodep->name, nodep->name);
+		ptr = addJSONChildStart(ptr,str,0);
+		n_nodes++;
+if(WebDID_Debug)
+		printf("adding %s %d %d\n",nodep->name, n_nodes, tot_n_nodes);
+		if(n_nodes < tot_n_nodes)
+			ptr = addJSONChildEnd(ptr,1);
+		else
+			ptr = addJSONChildEnd(ptr,0);
+	}
+		ptr = addJSONNodeEnd(ptr);
+		ptr = addJSONChildEnd(ptr,0);
+	ptr = addJSONNodeEnd(ptr);
+	ptr = addJSONEnd(ptr);
+	if(selective)
+	{
+		browserp->n_services = n_found;
+		browserp->n_servers = tot_n_servers;
+		browserp->n_nodes = tot_n_nodes;
+	}
+	}
+	else
+	{
+	  if((nodep = find_node(node)))
+	  {
+	ptr = addJSONStart(ptr);
+	ptr = addJSONNodeStart(ptr,"children");
+		servp = nodep->server_head;
+		tot_n_servers = 0;
+		while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+		{
+			servp->match = 1;
+			if(servp->busy != 1)
+			{
+				servp->match = 0;
+				continue;
+			}
+			if(selective)
+			{
+				if(!(ret = find_service_pattern(nodep, servp, pattern, 0)))
+				{
+					servp->match = 0;
+					continue;
+				}
+				else
+				{
+					n_found += ret;
+				}
+			}
+			tot_n_servers++;
+		}
+		n_servers = 0;
+		servp = nodep->server_head;
+		while( (servp = (SERVER *)sll_get_next((SLL *)servp)) )
+		{
+			if(!servp->match)
+				continue;
+			strcpy(aux, servp->name);
+			sptr = strstr(aux,"_SMI");
+			if(sptr)
+				*sptr = '\0';
+			sprintf(str,"text: \"%s\", id: \"%d\", leaf: true, icon: \"server.png\", name: \"%s\"",aux, servp->server.pid, servp->name);
+			ptr = addJSONChildStart(ptr,str,0);
+			n_servers++;
+			if(n_servers < tot_n_servers)
+				ptr = addJSONChildEnd(ptr,1);
+			else
+				ptr = addJSONChildEnd(ptr,0);
+		}
+	ptr = addJSONNodeEnd(ptr);
+	ptr = addJSONEnd(ptr);
+	  }
+	}
+	/*
+if(!selective)
+printf(" Nodes&Servers %s\n",JSONBuffer);
+else
+printf(" Nodes&Servers %s\n",browserp->JSONBuffer);
+	*/
+printf("%s\n",browserp->JSONSmiBuffer);
+	return(1);
+}
+
+int prepareJSONHeader()
+{
+	char *ptr;
+	char str[128];
+
+	ptr = JSONHeader;
+	*ptr = '\0';
+	ptr = addJSONStart(ptr);
+	ptr = addJSONNodeStart(ptr,"items");
+	sprintf(str,"text: \"%s\"",Title);
+	ptr = addJSONChildStart(ptr,str,0);
+	ptr = addJSONChildEnd(ptr,1);
+	sprintf(str,"text: \"%d Servers Known - %d Services Available\"",N_servers, N_services);
+	ptr = addJSONChildStart(ptr,str,0);
+	ptr = addJSONChildEnd(ptr,0);
+	ptr = addJSONNodeEnd(ptr);
+	ptr = addJSONEnd(ptr);
+if(WebDID_Debug)
+printf(" Header %s\n",JSONHeader);
+	return(1);
+}
+
+char *JSONServices = 0;
+int JSONServicesSize = 0;
+char *prepareJSONServiceList(SERVER *servp, char *node, int pid, BROWSER *browserp)
+{
+	DNS_SERVICE_INFO *servicep;
+	char *ptr;
+	int n_services, i;
+	char str[256], type_str[256];
+	int selective = 0;
+	int n_found = 0, n;
+
+	servicep = servp->service_ptr;
+	n_services = servp->server.n_services;
+	if(JSONServicesSize == 0)
+	{
+		JSONServicesSize = n_services*256;
+		JSONServices = malloc((size_t)JSONServicesSize);
+	}
+	else if (JSONServicesSize < n_services*256)
+	{
+		free(JSONServices);
+		JSONServicesSize = n_services*256;
+		JSONServices = malloc((size_t)JSONServicesSize);
+	}
+	if(browserp)
+	{
+		if(browserp->pattern[0] != '\0')
+			selective = 1;
+	}
+	n_found = n_services;
+	if(selective)
+	{
+		n_found = find_server_service_pattern(servp, browserp->pattern);
+	}
+	ptr = JSONServices;
+	*ptr = '\0';
+	ptr = addJSONStart(ptr);
+	ptr = addJSONNodeStart(ptr,"children");
+	if(selective)
+		sprintf(str,"text: \"%s (%d/%d services, pid %d)\"",servp->name, n_found, n_services, servp->server.pid);
+	else
+		sprintf(str,"text: \"%s (%d services, pid %d)\"",servp->name, n_services, servp->server.pid);
+    ptr = addJSONChildStart(ptr,str,1);
+	ptr = addJSONNodeStart(ptr,"children");
+	servicep = servp->service_ptr;
+	n = 0;
+	for(i = 0; i < n_services; i++)
+	{
+/*
+printf("Service type = %d\n",servicep->type);
+*/
+		if((!selective) || (strstr(servicep->name, browserp->pattern)))
+		{
+			if(servicep->type == 1)
+			{
+				sprintf(type_str,"%d@%s|%s|CMD", pid, node, servicep->name);
+				sprintf(str,"text: \"%s\", id: \"%s\", leaf: true, icon: \"leaf_cmd.gif\"",servicep->name, type_str);
+			}
+			else
+			{
+				sprintf(type_str,"%d@%s|%s", pid, node, servicep->name);
+				sprintf(str,"text: \"%s\", id: \"%s\", leaf: true",servicep->name, type_str);
+			}
+			ptr = addJSONChildStart(ptr,str,0);
+			n++;
+			if(n < n_found)
+				ptr = addJSONChildEnd(ptr,1);
+			else
+				ptr = addJSONChildEnd(ptr,0);
+		}
+		servicep++;
+	}
+	ptr = addJSONNodeEnd(ptr);
+	ptr = addJSONChildEnd(ptr,0);
+	ptr = addJSONNodeEnd(ptr);
+	ptr = addJSONEnd(ptr);
+	return JSONServices;
+}
+
+char *JSONSmiServices = 0;
+int JSONSmiServicesSize = 0;
+
+char *prepareJSONSmiObjectList(SERVER *servp, char *node, int pid, BROWSER *browserp)
+{
+	DNS_SERVICE_INFO *servicep;
+	char *ptr;
+	int n_services, i;
+	char str[512], type_str[512];
+	int selective = 0;
+	int n_found = 0, n, mode_index;
+	char aux[512], *sptr, state[512], *stptr;
+	OBJSTATE *smidomainp;
+	int findSmiServices();
+
+printf("prepareJSONSmiObjectList name %s\n", servp->name);
+	servicep = servp->service_ptr;
+	n_services = servp->server.n_services;
+	if(JSONSmiServicesSize == 0)
+	{
+		JSONSmiServicesSize = n_services*512;
+		JSONSmiServices = malloc((size_t)JSONSmiServicesSize);
+	}
+	else if (JSONSmiServicesSize < n_services*512)
+	{
+		free(JSONSmiServices);
+		JSONSmiServicesSize = n_services*512;
+		JSONSmiServices = malloc((size_t)JSONSmiServicesSize);
+	}
+	if(browserp)
+	{
+		if(browserp->pattern[0] != '\0')
+			selective = 1;
+	}
+	n_found = n_services;
+	/*
+	if(selective)
+	{
+		n_found = find_server_service_pattern(servp, browserp->pattern);
+	}
+	*/
+
+	n_found = findSmiServices(browserp, servp);
+	smidomainp = browserp->smidomainp;
+
+printf("prepareJSONSmiObjectList1 name %s\n", servp->name);
+
+
+	ptr = JSONSmiServices;
+	*ptr = '\0';
+	ptr = addJSONStart(ptr);
+	ptr = addJSONNodeStart(ptr,"children");
+	/*
+	if(selective)
+		sprintf(str,"name: \"%s (%d/%d services, pid %d)\"",servp->name, n_found, n_services, servp->server.pid);
+	else
+		sprintf(str,"name: \"%s (%d services, pid %d)\"",servp->name, n_services, servp->server.pid);
+	*/
+	sprintf(str,"name: \"%s (%d objects, pid %d)\"",servp->name, n_found, servp->server.pid);
+    ptr = addJSONChildStart(ptr,str,1);
+	ptr = addJSONNodeStart(ptr,"children");
+	servicep = servp->service_ptr;
+	n = 0;
+	for(i = 0; i < n_services; i++)
+	{
+/*
+printf("Service type = %d\n",servicep->type);
+*/
+printf("prepareJSONSmiObjectList2 obj name %s\n", servicep->name);
+		if((!selective) || (strstr(servicep->name, browserp->pattern)))
+		{
+/*
+			if(servicep->type == 1)
+			{
+				sprintf(type_str,"%d@%s|%s|CMD", pid, node, servicep->name);
+				sprintf(str,"name: \"%s\", id: \"%s\", leaf: true, icon: \"leaf_cmd.gif\"",servicep->name, type_str);
+			}
+			else
+			{
+				sprintf(type_str,"%d@%s|%s", pid, node, servicep->name);
+				sprintf(str,"name: \"%s\", state: \"RUNNING\", id: \"%s\", leaf: true",servicep->name, type_str);
+			}
+*/
+			if(servicep->status == 2)
+			{
+				sprintf(type_str,"%d@%s|%s", pid, node, servicep->name);
+				strcpy(aux, servicep->name);
+				sptr = strchr(aux,'/');
+				if(sptr)
+				{
+					sptr++;
+					sptr = strchr(sptr,'/');
+					if(sptr)
+						sptr++;
+				}
+				strcpy(state, smidomainp[i].state);
+				stptr = strchr(state,'/');
+				if(stptr)
+				{
+					*stptr = '\0';
+				}
+				mode_index = smidomainp[i].mode_index;
+//				sprintf(str,"name: \"%s\", state: \"%s\", id: \"%s\", leaf: true, fname: \"%s\"",sptr, state, type_str, servicep->name);
+				sprintf(str,"name: \"%s\", state: \"%s\", mode: \"%s\",id: \"%s\", leaf: true, fname: \"%s\"",
+					sptr, state, smidomainp[mode_index].state, type_str, servicep->name);
+			
+				ptr = addJSONChildStart(ptr,str,0);
+				n++;
+				if(n < n_found)
+					ptr = addJSONChildEnd(ptr,1);
+				else
+					ptr = addJSONChildEnd(ptr,0);
+			}
+		}
+		servicep++;
+	}
+	ptr = addJSONNodeEnd(ptr);
+	ptr = addJSONChildEnd(ptr,0);
+	ptr = addJSONNodeEnd(ptr);
+	ptr = addJSONEnd(ptr);
+printf("%s\n",JSONSmiServices);
+	return JSONSmiServices;
+}
+
+void update_smi_state(OBJSTATE **tag, char *data, int *size)
+{
+	OBJSTATE *servicep;
+	time_t tsecs;
+
+	if(*size){}
+	servicep = *tag;
+
+	if(strcmp(servicep->state, data))
+	{
+		strcpy(servicep->state, data); 
+		tsecs = time((time_t *)0);
+		((BROWSER *)(servicep->browserp))->last_changed = tsecs;
+	}
+//printf("SMI State %s %s %08x\n", servicep->name, servicep->state, (unsigned int)servicep);
+}
+
+int findSmiServices(BROWSER *browserp, SERVER *servp)
+{
+	DNS_SERVICE_INFO *servicep;
+	int n_services, i, index;
+	int n_found = 0, sid;
+	int checkSmiObjName();
+	int findSmiModeObj();
+
+	n_services = servp->server.n_services;
+	if(strcmp(browserp->curr_smidomain,servp->name))
+	{
+		if(browserp->curr_smidomain[0] != '\0')
+		{
+// unsubscribe; free
+			for(i = 0; i < browserp->curr_smidomain_size; i++)
+			{
+				if(browserp->smidomainp[i].sid)
+					dic_release_service(browserp->smidomainp[i].sid);
+			}
+			free(browserp->smidomainp);
+			browserp->curr_smidomain[0] = '\0';
+			browserp->curr_smidomain_size = 0;
+		}
+		strcpy(browserp->curr_smidomain, servp->name);
+		browserp->smidomainp = malloc(n_services * sizeof(OBJSTATE));
+		browserp->curr_smidomain_size = n_services;
+	}
+	else
+		return browserp->curr_smidomain_nobjs;
+	servicep = servp->service_ptr;
+	for(i = 0; i < n_services; i++)
+	{
+		browserp->smidomainp[i].sid = 0;
+		browserp->smidomainp[i].state[0] = '\0';
+		if(checkSmiObjName(servicep))
+		{
+			strcpy(browserp->smidomainp[i].name, servicep->name);
+//			strcpy(browserp->smidomainp[i].state, "");
+			browserp->smidomainp[i].browserp = browserp;
+//printf("address %s %08x\n",browserp->smidomainp[i].name, (unsigned int)&(browserp->smidomainp[i]));
+			sid = dic_info_service(servicep->name,MONITORED,0,0,0,update_smi_state, &(browserp->smidomainp[i]),
+						no_link_str, 5);
+			browserp->smidomainp[i].sid = sid;
+			if(servicep->status == 2)
+				n_found++;
+		}
+		servicep++;
+	}
+	servicep = servp->service_ptr;
+	for(i = 0; i < n_services; i++)
+	{
+		if(servicep->status == 2)
+		{
+			index = findSmiModeObj(servp->service_ptr, n_services, servicep->name);
+			browserp->smidomainp[i].mode_index = index;
+		}
+		servicep++;
+	}
+	browserp->curr_smidomain_nobjs = n_found;
+	return n_found;
+}
+
+int findSmiModeObj(DNS_SERVICE_INFO *serviceptr, int n_services, char *name)
+{
+	int i;
+	DNS_SERVICE_INFO *servicep;
+	char mode_name[256], *ptr, *ptr1, *ptr2;
+
+	servicep = serviceptr;
+	strcpy(mode_name, name);
+	ptr1 = mode_name;
+	if((ptr = strstr(mode_name,"::")))
+	{
+		*ptr = '\0';
+		ptr2 = ptr1;
+		while((ptr1 = strchr(ptr1,'/')))
+		{
+			ptr1++;
+			ptr2 = ptr1;
+		}
+		if(strcmp(ptr2, ptr+2))
+			*ptr = ':';
+	}
+	strcat(mode_name,"_FWM");
+printf("Find SMI Mode %s %s\n",name, mode_name);
+	for(i = 0; i < n_services; i++)
+	{
+		if(servicep->status == 3)
+		{
+			if(!strcmp(servicep->name, mode_name))
+			{
+printf("Find SMI Mode index %s %s %d\n",mode_name, servicep->name, i);
+				return i;
+			}
+		}
+		servicep++;
+	}
+	return 0;
+}
+
+int checkSmiObjName(DNS_SERVICE_INFO *servicep)
+{
+	int ismode = 0, ret = 0;
+	char *name;
+	int matchString();
+
+	name = servicep->name;
+	if(matchString(name,"SMI/*"))
+	{
+		ret = 1;
+		if(matchString(name,"*&ALLOC*"))
+			ret = 0;
+		else if(matchString(name,"*/ACTIONS&PARS"))
+			ret = 0;
+		else if(matchString(name,"*/BUSY"))
+			ret = 0;
+		else if(matchString(name,"*/CMD"))
+			ret = 0;
+		else if(matchString(name,"*/OBJECTSET_LIST"))
+			ret = 0;
+		else if(matchString(name,"*/OBJECT_LIST"))
+			ret = 0;
+		else if(matchString(name,"*/SMI_VERSION_NUMBER"))
+			ret = 0;
+		else if(matchString(name,"*/SET/*"))
+			ret = 0;
+// If JCOP framework
+		else if(matchString(name,"*_FWDM"))
+			ret = 0;
+		else if(matchString(name,"*_FWCNM"))
+			ret = 0;
+		else if(matchString(name,"*_FWM"))
+		{
+			ismode = 1;
+			if(matchString(name,"*::*")) 
+				ret = 0;
+		}
+	}
+	if(ret)
+	{
+		if(ismode)
+			servicep->status = 3;
+		else
+			servicep->status = 2;
+	}
+	return ret;
+}
+
+int matchString( char *wzString, char *wzPattern )
+{
+  switch (*wzPattern){
+    case '\0':
+      return !*wzString;
+    case '*':
+      return matchString(wzString, wzPattern+1) ||
+             ( *wzString && matchString(wzString+1, wzPattern) );
+    case '?':
+      return *wzString &&
+             matchString(wzString+1, wzPattern+1);
+    default:
+      return (*wzPattern == *wzString) &&
+             matchString(wzString+1, wzPattern+1);
+  }
+}
+
+int get_type_size(char type)
+{
+  int size;
+
+  switch(type)
+    {
+    case 'L':
+    case 'l':
+      size = sizeof(long);
+      break;
+    case 'I':
+    case 'i':
+      size = sizeof(int);
+      break;
+    case 'S':
+    case 's':
+      size = sizeof(short);
+      break;
+    case 'F':
+    case 'f':
+      size = sizeof(float);
+      break;
+    case 'D':
+    case 'd':
+      size = sizeof(double);
+      break;
+    case 'C':
+    case 'c':
+    default:
+      size = 1;
+    }
+  return(size);
+}
+
+void did_prepare_command(char *str, char *service, char *format)
+{
+char type;
+int num;
+int size, full_size = 0;
+char *ptr;
+static int last_size = 0;
+static void *last_buffer = 0;
+void *buffer_ptr;
+char *str_ptr;
+void did_read_string(char, int, void **, char **);
+
+   str_ptr = str; 
+   ptr = format; 
+   while(*ptr)
+   { 
+     type = *ptr++;
+     if(*ptr == ':')
+     {
+		ptr++;
+		size = get_type_size(type);
+		sscanf(ptr, "%d", &num);
+		full_size += size * num;
+		if( (ptr = strchr(ptr,';')) )
+			ptr++;
+		else
+			break;
+     }
+   }
+
+   full_size += 256;
+   if(full_size > last_size)
+   {
+      if(last_size)
+		free(last_buffer);
+      last_buffer = malloc((size_t)full_size);
+      last_size = full_size;
+   }
+   memset(last_buffer, 0, (size_t)last_size);
+   buffer_ptr = last_buffer;
+   ptr = format; 
+   while(*ptr)
+   { 
+     type = *ptr++;
+     if(*ptr == ':')
+     {
+		ptr++;
+		sscanf(ptr, "%d", &num);
+		did_read_string(type, num, &buffer_ptr, &str_ptr);  
+		if(!str_ptr)
+			break;
+		if( (ptr = strchr(ptr,';')) )
+			ptr++;
+		else
+			break;
+     }
+     else
+     {
+		did_read_string(type, 0, &buffer_ptr, &str_ptr);
+		break;
+     }
+   }
+   full_size = (int) ((char *)buffer_ptr - (char *)last_buffer);
+   dic_cmnd_service(service,last_buffer,full_size);
+}
+
+int read_str_int(char *str)
+{
+  int i;
+  if((str[0] == '0') && (str[1] == 'x'))
+    sscanf(str+2,"%x",&i);
+  else
+    sscanf(str,"%d",&i);
+  return(i);
+}
+
+int read_str_char(char *str, char *cc)
+{
+  int num;
+
+  if(str[0] == '\'')
+    *cc = str[1];
+  else if(str[0] == '\"')
+    return(0);
+  else if((str[0] == '0') && (str[1] == 'x'))
+  {
+    sscanf(str+2,"%x",&num);
+	if(num <= 0xff)
+		*cc = (char)num;
+	else
+		return(-1);
+  }
+  else if(isalpha(str[0]))
+    return(-1);
+  else
+  {
+    sscanf(str,"%d",&num);
+	if(num <= 0xff)
+		*cc = (char)num;
+	else
+		return(-1);
+  }
+  return(1);
+}
+
+void did_read_string(char type, int num, void **buffer_ptr, char **str_ptr)
+{
+int i, ret = 0;
+float ff;
+double dd;
+void *ptr;
+char *strp, *ptr1;
+char cc;
+ short s;
+
+  strp = *str_ptr; 
+  ptr = *buffer_ptr;
+  if(!num)
+    num = 1000000;
+  switch(type)
+  {
+    case 'L':
+    case 'l':
+    case 'I':
+    case 'i':
+      for(i = 0; i<num; i++)
+      {
+		*(int *)ptr = read_str_int(strp);
+		ptr = (int *)ptr +1;
+		if( (strp = strchr(strp,' ')) )
+			strp++;
+		else
+			break;
+      }
+      break;
+    case 'S':
+    case 's':
+      for(i = 0; i<num; i++)
+      {
+		s = (short)read_str_int(strp);
+		*((short *)ptr) = s;
+		ptr = (short *)ptr +1;
+		if( (strp = strchr(strp,' ')) )
+			strp++;
+		else
+			break;
+      }
+      break;
+    case 'F':
+    case 'f':
+      for(i = 0; i<num; i++)
+      {
+		sscanf(strp,"%f",&ff);
+		*(float *)ptr = ff;
+		ptr = (float *)ptr +1;
+		if( (strp = strchr(strp,' ')) )
+			strp++;
+		else
+			break;
+      }
+      break;
+    case 'D':
+    case 'd':
+      for(i = 0; i<num; i++)
+      {
+		sscanf(strp,"%f",&ff);
+		dd = (double)ff;
+		*(double *)ptr = dd;
+		ptr = (double *)ptr +1;
+		if( (strp = strchr(strp,' ')) )
+			strp++;
+		else
+			break;
+      }
+      break;
+    case 'C':
+    case 'c':
+    default:
+      for(i = 0; i<num; i++)
+      {
+		if((ret = read_str_char(strp, &cc)) <= 0)
+			break;
+		*(char *)ptr = cc;
+		ptr = (char *)ptr +1;
+		if( (strp = strchr(strp,' ')) )
+			strp++;
+		else
+			break;
+	  }
+      if(ret <= 0)
+      {
+		if(!ret)
+		{
+			strp++;
+		}
+		num = (int)strlen(strp)+1;
+		strncpy((char *)ptr,strp,(size_t)num);
+		if( (ptr1 = (char *)strchr((char *)ptr,'\"')) )
+		{
+			num--;
+			*ptr1 = '\0';
+		}
+		ptr = (char *)ptr + num;
+		if( (strp = strchr(strp,' ')) )
+			strp++;
+		else
+			break;
+      }
+  }
+  *buffer_ptr = ptr;
+  *str_ptr = strp;
+}
Index: branches/testFACT++branch/dim/src/webDid/webServer.c
===================================================================
--- branches/testFACT++branch/dim/src/webDid/webServer.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/webDid/webServer.c	(revision 18277)
@@ -0,0 +1,727 @@
+#include <dim.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+int WebDID_Debug = 0;
+
+#define BUFSIZE 8096
+#define WERROR 42
+#define SORRY 43
+#define LOG   44
+
+#ifndef WIN32
+#define O_BINARY 0
+#endif
+
+struct {
+        char *ext;
+        char *filetype;
+} extensions [] = {
+        {"gif", "image/gif" },  
+        {"jpg", "image/jpeg"}, 
+        {"jpeg","image/jpeg"},
+        {"png", "image/png" },  
+        {"zip", "image/zip" },  
+        {"gz",  "image/gz"  },  
+        {"tar", "image/tar" },  
+        {"htm", "text/html" },  
+        {"html","text/html" },  
+        {"js","text/javascript" },  
+        {"css","text/css" },  
+        {"php","text/php" },  
+        {"json","application/json" },  
+        {"ico","image/x-icon" },  
+        {0,0} };
+
+extern int web_open_server();
+extern void web_write();
+extern int web_close();
+extern int did_init();
+extern int check_browser_changes();
+extern int find_services();
+
+void getTime(char *buffer)
+{
+	time_t nowtime; 
+	struct tm *nowtm; 
+
+	nowtime = time((time_t *)0);
+	nowtm = (struct tm *)gmtime(&nowtime); 
+	strftime(buffer, 128, "%a, %d %b %Y %H:%M:%S GMT", nowtm);
+}
+	
+void log_it(int type, char *s1, char *s2, int conn_id)
+{
+        char logbuffer[BUFSIZE*2];
+	static char date_buffer[128];
+	static char snd_buffer[BUFSIZE+1]; /* static so zero filled */
+
+        switch (type) {
+        case WERROR: (void)printf("ERROR: %s:%s exiting pid=%d\n",s1, s2, getpid()); break;
+        case SORRY: 
+                (void)sprintf(logbuffer, "<HTML><BODY><H1>webDid: %s %s</H1></BODY></HTML>\r\n", s1, s2);
+				dim_print_date_time();
+                (void)printf("webDid: %s %s\n",s1, s2); 
+	getTime(date_buffer);
+	(void)sprintf(snd_buffer,"HTTP/1.1 200 OK\r\nDate: %s\r\nServer: DID/19.7\r\nContent-Length: %d\r\nContent-Type: %s\r\nConnection: close\r\n\r\n",
+		      date_buffer, (int)strlen(logbuffer), "text/html");
+    (void)web_write(conn_id,snd_buffer,(int)strlen(snd_buffer));
+                (void)web_write(conn_id,logbuffer,(int)strlen(logbuffer));
+                break;
+        case LOG: (void)printf("INFO: %s:%s:%d\n",s1, s2,conn_id); 
+           break;
+        }
+/*
+        if(type == WERROR || type == SORRY)
+		{
+			sleep(60);
+			exit(3);
+		}
+*/
+}
+
+int getParameters(char *buffer, char (*pars)[], char *ptrs[])
+{
+	char *ptr, *parptr;
+	int i, j, n = 0, found = 0;
+	int code;
+
+	if(!strchr(buffer,'?'))
+		return 0;
+	parptr = (char *)pars;
+	for(i = 0; *parptr; i++)
+	{
+		n++;
+		ptrs[i] = 0;
+		if((ptr = strstr(buffer, parptr)))
+		{
+			ptrs[i] = ptr+(int)strlen(parptr);
+			found++;
+		}
+		parptr += 32;
+	}
+	ptrs[i] = 0;
+	for(i = 0; ptrs[i]; i++)
+	{
+	        if((ptr = strchr(ptrs[i],'&')))
+			*ptr = '\0';
+		while((ptr = strchr(ptrs[i],'%')))
+		{
+			sscanf((ptr + 1),"%2X",&code);
+			sprintf(ptr,"%c",(char)code);
+			ptr++;
+			for(j = 0; *(ptr + 2); j++)
+			{
+				*ptr = *(ptr+2);
+				ptr++;
+			}
+			*ptr = '\0';
+		}
+	}
+	if(found == n)
+		return 1;
+	else
+		return 0;
+}
+
+int getNodeParameters(char *buffer, char *node, int *browser)
+{
+	char pars[4][32];
+	char *ptrs[4];
+	int ret;
+
+	strcpy(pars[0],"node=");
+	strcpy(pars[1],"browser=");
+	pars[2][0] = '\0';
+	ret = getParameters(buffer, pars, ptrs);
+	if(!ret)
+		return 0;
+	strcpy(node, ptrs[0]);
+	sscanf(ptrs[1],"%d",browser);
+if(WebDID_Debug)
+	printf("parse pars - node %s,  browser id %d\n", node, *browser);
+	return 1;
+}
+
+
+int getServerParameters(char *buffer, char *node, char *server, int *pid, int *browser)
+{
+	char pars[10][32];
+	char *ptrs[10];
+	int ret;
+
+	strcpy(pars[0],"dimnode=");
+	strcpy(pars[1],"dimserver=");
+	strcpy(pars[2],"dimserverid=");
+	strcpy(pars[3],"browser=");
+	pars[4][0] = '\0';
+	ret = getParameters(buffer, pars, ptrs);
+	if(!ret)
+		return 0;
+	strcpy(node, ptrs[0]);
+	strcpy(server, ptrs[1]);
+	sscanf(ptrs[2],"%d",pid);
+	sscanf(ptrs[3],"%d",browser);
+if(WebDID_Debug)
+printf("parse pars - node %s, server %s, pid %d, browser %d\n",node, server, *pid, *browser);
+	return 1;
+}
+
+int getServiceParameters(char *buffer, char *service, int *req, int* browser, int *force)
+{
+	char pars[10][32];
+	char *ptrs[10];
+	int ret;
+
+	strcpy(pars[0],"dimservice=");
+	strcpy(pars[1],"reqNr=");
+	strcpy(pars[2],"reqId=");
+	strcpy(pars[3],"force=");
+	pars[4][0] = '\0';
+	ret = getParameters(buffer, pars, ptrs);
+	if(!ret)
+		return 0;
+	strcpy(service, ptrs[0]);
+	sscanf(ptrs[1],"%d",req);
+	sscanf(ptrs[2],"%d",browser);
+	sscanf(ptrs[3],"%d",force);
+if(WebDID_Debug)
+printf("\nparse service pars - service %s %d %d %d\n\n",service, *req, *browser, *force);
+	return 1;
+}
+
+
+extern char JSONHeader[];
+extern char *JSONBuffer;
+
+static char *conv_buffer = 0;
+static int conv_buffer_size = 0;
+
+char *unescape(char *buffer)
+{
+  int buffer_size;
+  char *ptr, *ptr1;
+  int code;
+
+  buffer_size = (int)strlen(buffer) + 1;
+  if(buffer_size > conv_buffer_size )
+  {
+    if(conv_buffer_size)
+      free(conv_buffer);
+    conv_buffer = malloc((size_t)buffer_size);
+    conv_buffer_size = buffer_size;
+  }
+  ptr = buffer;
+  ptr1 = conv_buffer;
+  while(*ptr)
+  {
+    if(*ptr != '%')
+    {
+      *ptr1 = *ptr;
+      ptr++;
+      ptr1++;
+    }
+    else
+    {
+      ptr++;
+      sscanf(ptr,"%2X",&code);
+      sprintf(ptr1,"%c",code);
+      ptr += 2;
+      ptr1++;
+      *ptr1 = '\0';
+    }
+  }
+  *ptr1 = '\0';
+  return conv_buffer;
+}
+
+void sendData(int conn_id, char *buffer, int type)
+{
+	static char date_buffer[128];
+	static char snd_buffer[BUFSIZE+1]; /* static so zero filled */
+	static char snd_data_buffer[BUFSIZE+1]; /* static so zero filled */
+	char *ptr = 0;
+	char node[128], server[256], service[256];
+	int pid, ret, req, browser, force;
+	extern char *update_services();
+	extern char *update_service_data();
+	extern char *getJSONHeader();
+	extern char *getJSONBuffer();
+	char datatype[128];
+	char *conv_buffer;
+
+	conv_buffer = buffer;
+	strcpy(datatype,"application/json");
+	if(type == 0)
+	{
+	  ptr = getJSONHeader(0);
+	}
+	else if(type == 1)
+	{
+	    ret = getNodeParameters(conv_buffer, node, &browser);
+		ptr = getJSONBuffer(node, browser);
+	}
+	else if(type == 2)
+	{
+		ret = getServerParameters(conv_buffer, node, server, &pid, &browser);
+		if(!ret)
+		{
+			strcpy(snd_data_buffer,"{}");
+			ptr = snd_data_buffer;
+		}
+		else
+		{
+			ptr = update_services(node, server, pid, browser);
+		}
+	}
+	else if(type == 3)
+	{
+		ret = getServiceParameters(conv_buffer, service, &req, &browser, &force);
+		if(!ret)
+		{
+			strcpy(snd_data_buffer,"{}");
+			ptr = snd_data_buffer;
+		}
+		else
+		{
+			update_service_data(service, conn_id, 0, req, browser, force);
+			return;
+		}
+	}
+	else if(type == 4)
+	{
+		ptr = conv_buffer;
+if(WebDID_Debug)
+		printf("%s\n",ptr);
+		strcpy(datatype,"text/html");
+	}
+	else if(type == 5)
+	{
+		ret = getServiceParameters(conv_buffer, service, &req, &browser, &force);
+		if(!ret)
+		{
+			strcpy(snd_data_buffer,"{}");
+			ptr = snd_data_buffer;
+		}
+		else
+		{
+			check_browser_changes(service, conn_id, 0, req, browser, force);
+			return;
+		}
+	}
+	else if(type == 6)
+	{
+		ret = getServiceParameters(conv_buffer, service, &req, &browser, &force);
+		if(!ret)
+		{
+			strcpy(snd_data_buffer,"{}");
+			ptr = snd_data_buffer;
+		}
+		else
+		{
+			find_services(service, conn_id, browser, force);
+			if(force == -1)
+				strcpy(snd_data_buffer,"");
+			else
+				strcpy(snd_data_buffer,"load");
+			ptr = snd_data_buffer;
+		}
+	}
+	getTime(date_buffer);
+	(void)sprintf(snd_buffer,"HTTP/1.1 200 OK\r\nDate: %s\r\nServer: DID/19.7\r\nContent-Length: %d\r\nContent-Type: %s\r\nConnection: close\r\n\r\n",
+		      date_buffer, (int)strlen(ptr), datatype);
+    (void)web_write(conn_id,snd_buffer,(int)strlen(snd_buffer));
+if(WebDID_Debug)
+	printf("SENDING DATA to conn %d:\n%s\n",conn_id, snd_buffer);
+    (void)web_write(conn_id,ptr,(int)strlen(ptr));
+if(WebDID_Debug == 2)
+	printf("SENDING DATA to conn %d:\n%s\n",conn_id, ptr);
+}
+
+
+void sendSmiData(int conn_id, char *buffer, int type)
+{
+	static char date_buffer[128];
+	static char snd_buffer[BUFSIZE+1]; /* static so zero filled */
+	static char snd_data_buffer[BUFSIZE+1]; /* static so zero filled */
+	char *ptr = 0;
+	char node[128], server[256], service[256];
+	int pid, ret, req, browser, force;
+	extern char *update_services(), *update_smi_objects();
+	extern char *update_service_data();
+	extern char *getJSONHeader();
+	extern char *getJSONBuffer(), *getJSONSmiBuffer();
+	char datatype[128];
+	char *conv_buffer;
+
+	conv_buffer = buffer;
+	strcpy(datatype,"application/json");
+	if(type == 0)
+	{
+	  ptr = getJSONHeader(1);
+	}
+	else if(type == 1)
+	{
+	    ret = getNodeParameters(conv_buffer, node, &browser);
+		ptr = getJSONSmiBuffer(node, browser);
+	}
+	else if(type == 2)
+	{
+		ret = getServerParameters(conv_buffer, node, server, &pid, &browser);
+		if(!ret)
+		{
+			strcpy(snd_data_buffer,"{}");
+			ptr = snd_data_buffer;
+		}
+		else
+		{
+			ptr = update_smi_objects(node, server, pid, browser);
+		}
+	}
+	else if(type == 3)
+	{
+		ret = getServiceParameters(conv_buffer, service, &req, &browser, &force);
+		if(!ret)
+		{
+			strcpy(snd_data_buffer,"{}");
+			ptr = snd_data_buffer;
+		}
+		else
+		{
+			update_service_data(service, conn_id, 0, req, browser, force);
+			return;
+		}
+	}
+	else if(type == 4)
+	{
+		ptr = conv_buffer;
+if(WebDID_Debug)
+		printf("%s\n",ptr);
+		strcpy(datatype,"text/html");
+	}
+	else if(type == 5)
+	{
+		ret = getServiceParameters(conv_buffer, service, &req, &browser, &force);
+		if(!ret)
+		{
+			strcpy(snd_data_buffer,"{}");
+			ptr = snd_data_buffer;
+		}
+		else
+		{
+			check_browser_changes(service, conn_id, 0, req, browser, force);
+			return;
+		}
+	}
+	else if(type == 6)
+	{
+		ret = getServiceParameters(conv_buffer, service, &req, &browser, &force);
+		if(!ret)
+		{
+			strcpy(snd_data_buffer,"{}");
+			ptr = snd_data_buffer;
+		}
+		else
+		{
+			find_services(service, conn_id, browser, force);
+			if(force == -1)
+				strcpy(snd_data_buffer,"");
+			else
+				strcpy(snd_data_buffer,"load");
+			ptr = snd_data_buffer;
+		}
+	}
+	getTime(date_buffer);
+	(void)sprintf(snd_buffer,"HTTP/1.1 200 OK\r\nDate: %s\r\nServer: DID/19.7\r\nContent-Length: %d\r\nContent-Type: %s\r\nConnection: close\r\n\r\n",
+		      date_buffer, (int)strlen(ptr), datatype);
+    (void)web_write(conn_id,snd_buffer,(int)strlen(snd_buffer));
+if(WebDID_Debug)
+	printf("SENDING DATA to conn %d:\n%s\n",conn_id, snd_buffer);
+    (void)web_write(conn_id,ptr,(int)strlen(ptr));
+if(WebDID_Debug == 2)
+	printf("SENDING DATA to conn %d:\n%s\n",conn_id, ptr);
+}
+
+void sendFile(int conn_id, char *buffer, int size)
+{
+        int j, file_fd, buflen, len;
+        int i, ret;
+        char * fstr;
+		int flen;
+        static char snd_buffer[BUFSIZE+1]; /* static so zero filled */
+		static char date_buffer[128];
+
+
+		ret = size;
+        if(ret > 0 && ret < BUFSIZE)    /* return code is valid chars */
+                buffer[ret]=0;          /* terminate the buffer */
+        else buffer[0]=0;
+
+if(WebDID_Debug)
+printf("Got %s\n", buffer);
+        if( strncmp(buffer,"GET ",4) && strncmp(buffer,"get ",4) )
+		{
+                log_it(SORRY,"Only simple GET operation supported",buffer,conn_id);
+				return;
+		}
+
+        for(i=4;i<BUFSIZE;i++) 
+		{ /* null terminate after the second space to ignore extra stuff */
+                if(buffer[i] == ' ') 
+				{ /* string is "GET URL " +lots of other stuff */
+                        buffer[i] = 0;
+                        break;
+                }
+        }
+
+if(WebDID_Debug)
+printf("Got 1 %s\n", buffer);
+       for(j=0;j<i-1;j++)      /* check for illegal parent directory use .. */
+		{
+                if(buffer[j] == '.' && buffer[j+1] == '.')
+				{
+                        log_it(SORRY,"Parent directory (..) path names not supported",buffer,conn_id);
+						return;
+				}
+		}
+		if((int)strlen(buffer) == 5)
+		{
+			if( !strncmp(&buffer[0],"GET /",5) || !strncmp(&buffer[0],"get /",5) ) 
+			/* convert no filename to index file */
+                (void)strcpy(buffer,"GET /index.html");
+		}
+		if((int)strlen(buffer) == 8)
+		{
+			if( !strncmp(&buffer[0],"GET /smi",8) || !strncmp(&buffer[0],"get /smi",8) ) 
+			/* convert no filename to index file */
+                (void)strcpy(buffer,"GET /smi/index.html");
+		}
+        /* work out the file type and check we support it */
+        buflen=(int)strlen(buffer);
+        fstr = (char *)0;
+        for(i=0;extensions[i].ext != 0;i++) 
+		{
+              len = (int)strlen(extensions[i].ext);
+              if( !strncmp(&buffer[buflen-len], extensions[i].ext, (size_t)len)) 
+			  {
+                        fstr =extensions[i].filetype;
+                        break;
+                }
+        }
+/*
+		(void)sprintf(snd_buffer,"HTTP/1.1 100 Continue\r\n\r\n");
+        (void)web_write(conn_id,snd_buffer,(int)strlen(snd_buffer));
+		printf("SENDING to conn %d:\n%s\n",conn_id, snd_buffer);
+*/
+		if(fstr == 0)
+		{
+if(WebDID_Debug)
+printf("Got %s\n", buffer);
+			if(!strncmp(&buffer[5],"didHeader",9))
+			{
+				sendData(conn_id, &buffer[5], 0);
+				return;
+			}
+			else if(!strncmp(&buffer[5],"didData",7))
+			{
+				sendData(conn_id, &buffer[5], 1);
+				return;
+			}
+			else if(!strncmp(&buffer[5],"didServices",11))
+			{
+				sendData(conn_id, &buffer[5], 2);
+				return;
+			}
+			else if(!strncmp(&buffer[5],"didServiceData",14))
+			{
+				sendData(conn_id, &buffer[5], 3);
+				return;
+			}
+			else if(!strncmp(&buffer[5],"didPoll",7))
+			{
+				sendData(conn_id, &buffer[5], 5);
+				return;
+			}
+			else if(!strncmp(&buffer[5],"didQuery",8))
+			{
+				sendData(conn_id, &buffer[5], 6);
+				return;
+			}
+			else if(!strncmp(&buffer[5],"smiData",7))
+			{
+				sendSmiData(conn_id, &buffer[5], 1);
+				return;
+			}
+			else if(!strncmp(&buffer[5],"smiObjects",10))
+			{
+				sendSmiData(conn_id, &buffer[5], 2);
+				return;
+			}
+/*
+			if((!strncmp(&buffer[5],"didData",7)) || (!strncmp(&buffer[5],"didServices",11)))
+			{
+				if(ptr = strchr(&buffer[5],'/'))
+				{
+					*ptr = '\0';
+				}
+				buflen=(int)strlen(buffer);
+				for(i=0;extensions[i].ext != 0;i++) 
+				{
+					len = (int)strlen(extensions[i].ext);
+					if( !strncmp(&buffer[buflen-len], extensions[i].ext, len)) 
+					{
+					    fstr =extensions[i].filetype;
+						printf("fstr %s", fstr);
+                        break;
+					}
+				}
+				if(!strncmp(&buffer[5],"didData",7))
+				{
+					sendData(conn_id, &buffer[5]);
+				}
+				else if(!strncmp(&buffer[5],"didServices",11))
+				{
+					sendData(conn_id, &buffer[5]);
+				}
+			}
+*/
+			else
+			{
+				log_it(SORRY,"file extension type not supported",buffer,conn_id);
+				return;
+			}
+		}
+
+		if(( file_fd = open(&buffer[5],O_RDONLY | O_BINARY)) == -1) /* open the file for reading */
+		{
+                log_it(SORRY, "failed to open file",&buffer[5],conn_id);
+				return;
+		}
+
+		flen = 0;
+        while ( (ret = (int)read(file_fd, snd_buffer, BUFSIZE)) > 0 ) 
+		{
+			flen += ret;
+		}
+		close(file_fd);
+
+		if(( file_fd = open(&buffer[5],O_RDONLY | O_BINARY)) == -1) /* open the file for reading */
+		{
+                log_it(SORRY, "failed to open file",&buffer[5],conn_id);
+				return;
+		}
+
+		getTime(date_buffer);
+		(void)sprintf(snd_buffer,"HTTP/1.1 200 OK\r\nDate: %s\r\nServer: DID/19.7\r\nContent-Length: %d\r\nContent-Type: %s\r\nConnection: close\r\n\r\n",
+            date_buffer, flen, fstr);
+        (void)web_write(conn_id,snd_buffer,(int)strlen(snd_buffer));
+if(WebDID_Debug)
+		printf("SENDING to conn %d:\n%s\n",conn_id, snd_buffer);
+
+        /* send file in 8KB block - last block may be smaller */
+        while ( (ret = (int)read(file_fd, snd_buffer, BUFSIZE)) > 0 ) {
+                (void)web_write(conn_id,snd_buffer,ret);
+if(WebDID_Debug == 2)
+			printf("SENDING data to conn %d: %d bytes\n",conn_id, ret);
+        }
+		close(file_fd);
+#ifdef LINUX
+        sleep(1);       /* to allow socket to drain */
+#endif
+}
+
+static void handler( int conn_id, char *packet, int size, int status )
+{
+	switch(status)
+	{
+	case STA_DISC:     /* connection broken */
+if(WebDID_Debug)
+{
+			dim_print_date_time();
+			printf(" Disconnect received - conn: %d to %s@%s\n", conn_id,
+				Net_conns[conn_id].task,Net_conns[conn_id].node );
+}
+			web_close(conn_id);
+		break;
+	case STA_CONN:     /* connection received */
+if(WebDID_Debug)
+{
+			dim_print_date_time();
+			printf(" Connection request received - conn: %d\n", conn_id);
+}
+		break;
+	case STA_DATA:     /* normal packet */
+/*
+			dim_print_date_time();
+			printf(" conn %d packet received:\n", conn_id);
+			printf("packet size = %d\n", size);
+			printf("%s\n",packet);
+			fflush(stdout);
+*/
+			sendFile(conn_id, packet, size);
+		break;
+	default:	
+		dim_print_date_time();
+		printf( " - DIM panic: recv_rout(): Bad switch, exiting...\n");
+		abort();
+	}
+}
+
+static void error_handler(int conn_id, int severity, int errcode, char *reason)
+{
+	if(conn_id){}
+	if(errcode){}
+	dim_print_msg(reason, severity);
+/*
+	if(severity == 3)
+	{
+			printf("Exiting!\n");
+			exit(2);
+	}
+*/
+}
+
+int main(int argc, char **argv)
+{
+    int port;
+	int proto;
+	char dns_node[128];
+	int web_get_port();
+	char *ptr;
+	char currwd[256];
+
+	if(argc){}
+
+	strcpy(currwd, argv[0]);
+	printf("arg %s\n",currwd);
+	ptr = strrchr(currwd,'/');
+	if(ptr)
+	{
+		*ptr = '\0';
+	}
+	ptr = strrchr(currwd,'\\');
+	if(ptr)
+	{
+		*ptr = '\0';
+	}
+	chdir(currwd);
+        log_it(LOG,"webDid starting",argv[1],getpid());
+        /* setup the network socket */
+		proto = 1;
+		port = web_get_port();
+		get_node_name(dns_node);
+		did_init(dns_node, DNS_PORT);
+		if(!web_open_server("DID",handler, &proto, &port, error_handler))
+			return(0);
+/*
+		ret = matchString("hello world","*ll*");
+		printf("%s %s %d\n", "hello world","*ll*",ret);
+		ret = matchString("hello world","ll*");
+		printf("%s %s %d\n", "hello world","ll*",ret);
+*/
+		while(1)
+			sleep(10);
+		return(0);
+}
Index: branches/testFACT++branch/dim/src/webDid/webTcpip.c
===================================================================
--- branches/testFACT++branch/dim/src/webDid/webTcpip.c	(revision 18277)
+++ branches/testFACT++branch/dim/src/webDid/webTcpip.c	(revision 18277)
@@ -0,0 +1,305 @@
+#include <errno.h>
+#include <dim.h>
+#include <ctype.h>
+#ifndef WIN32
+#include <netdb.h>
+#endif
+
+int Tcpip_max_io_data_write = TCP_SND_BUF_SIZE - 16;
+int Tcpip_max_io_data_read = TCP_RCV_BUF_SIZE - 16;
+
+static void ast_conn_h(int handle, int svr_conn_id, int protocol)
+{
+	register DNA_CONNECTION *dna_connp;
+	register int tcpip_code;
+	register int conn_id;
+	int web_start_read();
+
+	if(protocol){}
+	conn_id = conn_get();
+/*
+	if(!conn_id)
+		dim_panic("In ast_conn_h: No more connections\n");
+*/
+	dna_connp = &Dna_conns[conn_id] ;
+	dna_connp->error_ast = Dna_conns[svr_conn_id].error_ast;
+	tcpip_code = tcpip_open_connection( conn_id, handle );
+
+	if(tcpip_failure(tcpip_code))
+	{
+		dna_report_error(conn_id, tcpip_code,
+			"Connecting to", DIM_ERROR, DIMTCPCNERR);
+		conn_free(conn_id);
+	} else {
+		dna_connp->state = RD_HDR;
+		dna_connp->buffer = (int *)malloc(TCP_RCV_BUF_SIZE);
+		memset(dna_connp->buffer, 0, TCP_RCV_BUF_SIZE);
+/*
+		if(!dna_connp->buffer)
+		{
+			printf("Error in DNA - handle_connection malloc returned 0\n");
+			fflush(stdout);
+		}
+*/
+		dna_connp->buffer_size = TCP_RCV_BUF_SIZE;
+		dna_connp->read_ast = Dna_conns[svr_conn_id].read_ast;
+		dna_connp->saw_init = FALSE;
+		web_start_read(conn_id, TCP_RCV_BUF_SIZE); /* sizeof(DNA_NET) */
+		/* Connection arrived. Signal upper layer ? */
+		dna_connp->read_ast(conn_id, NULL, 0, STA_CONN);
+	}
+	tcpip_code = tcpip_start_listen(svr_conn_id, ast_conn_h);
+	if(tcpip_failure(tcpip_code))
+	{
+		dna_report_error(svr_conn_id, tcpip_code,
+			"Listening at", DIM_ERROR, DIMTCPLNERR);
+	}
+}
+
+static void read_data( int conn_id)
+{
+	register DNA_CONNECTION *dna_connp = &Dna_conns[conn_id];
+
+/*
+printf("passing up %d bytes, conn_id %d\n",dna_connp->full_size, conn_id); 
+*/
+		dna_connp->read_ast(conn_id, dna_connp->buffer,
+			dna_connp->full_size, STA_DATA);
+}
+
+static void ast_read_h( int conn_id, int status, int size )
+{
+	register DNA_CONNECTION *dna_connp = &Dna_conns[conn_id];
+
+	if(!dna_connp->buffer) /* The connection has already been closed */
+	{
+		return;
+	}
+	if(status == 1)
+	{
+/*
+		next_size = dna_connp->curr_size;
+		buff = (char *) dna_connp->curr_buffer;
+  		if(size < next_size) 
+		{
+			max_io_data = Tcpip_max_io_data_read;
+			read_size = ((next_size - size) > max_io_data) ?
+				max_io_data : next_size - size;
+			dna_connp->curr_size -= size;
+			dna_connp->curr_buffer += size;
+			tcpip_code = tcpip_start_read(conn_id, buff + size, 
+				read_size, ast_read_h);
+			if(tcpip_failure(tcpip_code)) 
+			{
+#ifndef WIN32
+			  if(errno == ENOTSOCK)
+			  {
+				  if(dna_connp->read_ast)
+					dna_connp->read_ast(conn_id, NULL, 0, STA_DISC);
+			  }
+			  else
+#endif
+			  {
+				dna_report_error(conn_id, tcpip_code,
+					"Reading from", DIM_ERROR, DIMTCPRDERR);
+			  }
+			}
+			return;
+		}
+		switch(dna_connp->state)
+		{
+			case RD_HDR :
+				if(is_header(conn_id))
+				{
+					if( dna_connp->state == RD_DATA )
+					{
+						next_size = vtohl(dna_connp->buffer[1]);
+						dna_start_read(conn_id, next_size);
+					}
+					else
+					{
+						dna_connp->state = RD_HDR;
+						dna_start_read(conn_id, READ_HEADER_SIZE);
+					}
+				}
+				break;
+			case RD_DATA :
+				read_data(conn_id);
+				dna_connp->state = RD_HDR;
+				dna_start_read(conn_id, READ_HEADER_SIZE);
+				break;
+			default:
+				break;
+		}
+*/
+		dna_connp->full_size = size;
+		read_data(conn_id);
+		dna_start_read(conn_id, TCP_RCV_BUF_SIZE);
+	} 
+	else 
+	{
+	  /*
+	  printf("Connection lost. Signal upper layer\n");
+	  */
+		if(dna_connp->read_ast)
+			dna_connp->read_ast(conn_id, NULL, 0, STA_DISC);
+	}
+}
+
+int web_start_read(int conn_id, int size)
+{
+	register DNA_CONNECTION *dna_connp = &Dna_conns[conn_id];
+	register int tcpip_code, read_size;
+	int max_io_data;
+	
+	if(!dna_connp->busy)
+	{
+		return(0);
+	}
+
+	dna_connp->curr_size = size;
+	dna_connp->full_size = size;
+	if(size > dna_connp->buffer_size) 
+	{
+		dna_connp->buffer =
+				(int *) realloc(dna_connp->buffer, (size_t)size);
+		memset(dna_connp->buffer, 0, (size_t)size);
+		dna_connp->buffer_size = size;
+	}
+	dna_connp->curr_buffer = (char *) dna_connp->buffer;
+	max_io_data = Tcpip_max_io_data_read;
+	read_size = (size > max_io_data) ? max_io_data : size ;
+
+	tcpip_code = tcpip_start_read(conn_id, dna_connp->curr_buffer,
+				  read_size, ast_read_h);
+	if(tcpip_failure(tcpip_code)) {
+		dna_report_error(conn_id, tcpip_code,
+			"Reading from", DIM_ERROR, DIMTCPRDERR);
+
+		return(0);
+	}
+
+	return(1);
+}								
+
+int web_get_port()
+{
+	int ret;
+	char ports[64];
+	int port = 2500;
+
+	ret = dim_get_env_var("DIM_DID_PORT", ports, 64);
+	if(ret)
+	{
+		sscanf(ports,"%d",&port);
+	}
+	return port;
+}
+
+int web_open_server(char *task, void (*read_ast)(), int *protocol, int *port, void (*error_ast)())
+{
+	register DNA_CONNECTION *dna_connp;
+	register int tcpip_code;
+	register int conn_id;
+
+	conn_id = dna_open_client("", "", 0, 0, 
+					0, 0, 0);
+	dna_close(conn_id);
+/*
+	if(!DNA_Initialized)
+	{
+		conn_arr_create(SRC_DNA);
+		DNA_Initialized = TRUE;
+	}
+*/
+	*protocol = PROTOCOL;
+	conn_id = conn_get();
+	dna_connp = &Dna_conns[conn_id];
+/*
+	if(!conn_id)
+		dim_panic("In dna_open_server: No more connections\n");
+*/
+	dna_connp->protocol = TCPIP;
+	dna_connp->error_ast = error_ast;
+	tcpip_code = tcpip_open_server(conn_id, task, port);
+	if(tcpip_failure(tcpip_code))
+	{
+		dna_report_error(conn_id, tcpip_code,
+			"Opening server port", DIM_ERROR, DIMTCPOPERR);
+		conn_free(conn_id);
+		return(0);
+	}
+	dna_connp->writing = FALSE;
+	dna_connp->read_ast = read_ast;
+	tcpip_code = tcpip_start_listen(conn_id, ast_conn_h);
+	if(tcpip_failure(tcpip_code))
+	{
+		dna_report_error(conn_id, tcpip_code, "Listening at", DIM_ERROR, DIMTCPLNERR);
+		return(0);
+	}
+	return(conn_id);
+}
+
+void web_write(int conn_id, char *buffer, int size)
+{
+	tcpip_write( conn_id, buffer, size );
+}
+
+static void release_conn(int conn_id)
+{
+	register DNA_CONNECTION *dna_connp = &Dna_conns[conn_id] ;
+
+	DISABLE_AST
+	if(dna_connp->busy)
+	{ 
+		tcpip_close(conn_id);
+		if(dna_connp->buffer)
+		{
+			free(dna_connp->buffer);
+			dna_connp->buffer = 0;
+			dna_connp->buffer_size = 0;
+		}
+		dna_connp->read_ast = NULL;
+		dna_connp->error_ast = NULL;
+		conn_free(conn_id);
+	}
+	ENABLE_AST
+}
+
+int web_close(int conn_id)
+{
+	if(conn_id > 0)
+	{
+		release_conn(conn_id);
+	}
+	return(1);
+}
+
+int web_get_node_name(char *node, char *name)
+{
+	int a,b,c,d;
+/* Fix for gcc 4.6 "dereferencing type-punned pointer will break strict-aliasing rules"?!*/
+	unsigned char ipaddr_buff[4];
+	unsigned char *ipaddr = ipaddr_buff;
+	struct hostent *host;
+
+	strcpy(name, node);
+	if(isdigit(node[0]))
+	{
+		sscanf(node,"%d.%d.%d.%d",&a, &b, &c, &d);
+	    ipaddr[0] = (unsigned char)a;
+	    ipaddr[1] = (unsigned char)b;
+	    ipaddr[2] = (unsigned char)c;
+	    ipaddr[3] = (unsigned char)d;
+		if( (host = gethostbyaddr(ipaddr, sizeof(ipaddr), AF_INET)) == (struct hostent *)0 )
+		{
+			return(0);
+		}
+		else
+		{
+			strcpy(name,host->h_name);
+			return(1);
+		}
+	}
+	return(0);
+}
Index: branches/testFACT++branch/fact.rc
===================================================================
--- branches/testFACT++branch/fact.rc	(revision 18277)
+++ branches/testFACT++branch/fact.rc	(revision 18277)
@@ -0,0 +1,29 @@
+run-type=drs-pedestal|DRS Calib: Pedestal
+run-type=drs-gain|DRS Calib: Gain
+run-type=drs-time|DRS Calib: Time
+run-type=pedestal|Pedestal
+run-type=single-pe|Pedestal for singles
+run-type=light-pulser-ext|External light pulser
+run-type=data|Data: Full trigger region
+run-type=data-rt|Data: Reduced trigger region
+run-type=ratescan|Configure ratescan
+run-type=custom|Custom run configuration
+
+run-time=30|00:30
+run-time=60|01:00
+run-time=150|02:30
+run-time=300|05:00
+run-time=600|10:00
+run-time=900|15:00
+run-time=1200|20:00
+run-time=1800|30:00
+run-time=3600|60:00
+
+run-count=100
+run-count=300
+run-count=1000
+run-count=3000
+run-count=10000
+run-count=30000
+
+CommentDB=runcomments:Ice+uFRC@fact01.fact.local/factdata
Index: branches/testFACT++branch/ftmctrl.rc
===================================================================
--- branches/testFACT++branch/ftmctrl.rc	(revision 18277)
+++ branches/testFACT++branch/ftmctrl.rc	(revision 18277)
@@ -0,0 +1,2 @@
+database=readpo:readc0nf1g@10.0.100.21/programoptions
+console=2
Index: branches/testFACT++branch/gui/BasicGlCamera.cc
===================================================================
--- branches/testFACT++branch/gui/BasicGlCamera.cc	(revision 18277)
+++ branches/testFACT++branch/gui/BasicGlCamera.cc	(revision 18277)
@@ -0,0 +1,1149 @@
+#include "BasicGlCamera.h"
+
+#include <math.h>
+
+#include <fstream>
+#include <iostream>
+#include <string>
+#include <sstream>
+#include <algorithm>
+
+#include <QLabel>
+#include <QRadioButton>
+#include <QButtonGroup>
+
+#include <GL/glu.h>
+
+#include "src/Time.h"
+#include "src/tools.h"
+
+using namespace std;;
+
+//static variables
+PixelMap BasicGlCamera::fPixelMap;
+GLfloat BasicGlCamera::pixelsCoords[MAX_NUM_PIXELS][3];
+PixelsNeighbors BasicGlCamera::neighbors[MAX_NUM_PIXELS];
+int BasicGlCamera::hardwareMapping[NPIX];
+GLfloat BasicGlCamera::verticesList[NPIX*6][2];
+vector<edge> BasicGlCamera::patchesIndices[160];
+int BasicGlCamera::verticesIndices[NPIX][6];
+int BasicGlCamera::pixelsPatch[NPIX];
+int BasicGlCamera::softwareMapping[NPIX];
+
+//Coordinates of an hexagon of radius 1 and center 0
+GLfloat hexcoords[6][2] = {{-1./sqrt(3.),  1},
+                           { 1./sqrt(3.),  1},
+                           { 2./sqrt(3.),  0},
+                           { 1./sqrt(3.), -1},
+                           {-1./sqrt(3.), -1},
+                           {-2./sqrt(3.),  0}};
+
+
+
+    BasicGlCamera::BasicGlCamera(QWidget* cParent)
+    : QGLWidget(QGLFormat(QGL::DoubleBuffer |
+                          QGL::DepthBuffer  /*|
+                          QGL::IndirectRendering*/),cParent)
+    {
+        QGL::setPreferredPaintEngine(QPaintEngine::OpenGL);
+        fWhite = -1;
+        fWhitePatch = -1;
+        fMin = -1;
+        fMax = -1;
+        fScaleLimit = -0.5;
+        fTextSize = 0;
+        autoRefresh = false;
+        logScale = false;
+        cameraRotation = +90;
+        fTextEnabled = true;
+        unitsText = "";
+        titleText = "";
+        dataText = "";
+        pixelContourColour[0] = 0.1f;
+        pixelContourColour[1] = 0.1f;
+        pixelContourColour[2] = 0.1f;
+        patchesCoulour[0] = 0.1f;
+        patchesCoulour[1] = 0.1f;
+        patchesCoulour[2] = 0.1f;
+        highlightedPatchesCoulour[0] = 0.6f;
+        highlightedPatchesCoulour[1] = 0.6f;
+        highlightedPatchesCoulour[2] = 0.6f;
+        highlightedPixelsCoulour[0] = 0.8f;
+        highlightedPixelsCoulour[1] = 0.8f;
+        highlightedPixelsCoulour[2] = 0.8f;
+
+        regularPalettePlease(true);
+
+
+        hexRadius = 0.015f;
+        hexTolerance = hexRadius/100.0f;
+        viewSize = 1.0f;
+        calculatePixelsCoords();
+
+        buildVerticesList();
+/*
+       ifstream fin1("Trigger-Patches.txt");
+       if (!fin1.is_open())
+       {
+           cout << "Error: file \"Trigger-Patches.txt\" missing. Aborting." << endl;
+           exit(-1);
+       }
+       l=0;
+        while (getline(fin1, buf, '\n'))
+        {
+            buf = Tools::Trim(buf);
+            if (buf[0]=='#')
+                continue;
+
+            stringstream str(buf);
+            for (int i=0; i<9; i++)
+            {
+                unsigned int n;
+                str >> n;
+
+                if (n>=1440)
+                    continue;
+
+                patches[l][i] = hardwareMapping[n];
+            }
+            l++;
+        }
+
+        //now construct the correspondance between pixels and patches
+        for (int i=0;i<NTMARK;i++)
+            for (int j=0;j<9;j++)
+                pixelsPatch[softwareMapping[patches[i][j]]] = i;
+
+        for (int i=0;i<1440;i++)
+            updateNeighbors(i);
+
+        buildPatchesIndices();
+*/////////////////////////////////
+        regularPalettePlease(true);
+//        ss[0] = 0;    ss[1] = 0.25f; ss[2] = 0.5f; ss[3] = 0.75f; ss[4] = 1.0f;
+//        rr[0] = 0.15; rr[1] = 0;     rr[2] = 0;    rr[3] = 1.0f;  rr[4] = 0.85f;
+//        gg[0] = 0.15; gg[1] = 0;     gg[2] = 1;    gg[3] = 0;     gg[4] = 0.85f;
+//        bb[0] = 0.15; bb[1] = 1;     bb[2] = 0;    bb[3] = 0;     bb[4] = 0.85f;
+
+        fPixelStride = 1;
+        fcSlice = 0;
+        fData.resize(1440);
+        for (int i=0;i<NPIX;i++)
+            fData[i] = (double)i;///1.44;//(double)(i)/(double)(ACTUAL_NUM_PIXELS);
+
+//        setFont(QFont("Arial", 8));
+        int buttonShift=0;
+        scaleLabel = new QLabel("Scale", this);
+//        buttonShift += scaleLabel->height();
+
+        linearButton = new QRadioButton("Linear", this);
+        linearButton->move(scaleLabel->width(), buttonShift);
+        buttonShift += linearButton->height();
+
+        logButton = new QRadioButton("Log", this);
+        logButton->move(scaleLabel->width(), buttonShift);
+        buttonShift += logButton->height()*1.1f;
+
+        colorPaletteLabel = new QLabel("Colour\nPalette", this);
+        colorPaletteLabel->move(0, buttonShift);
+ //       buttonShift += colorPaletteLabel->height();
+
+        regularPaletteButton = new QRadioButton("Regular", this);
+        regularPaletteButton->move(colorPaletteLabel->width(), buttonShift);
+        buttonShift += regularPaletteButton->height();
+
+        prettyPaletteButton = new QRadioButton("Pretty", this);
+        prettyPaletteButton->move(colorPaletteLabel->width(), buttonShift);
+        buttonShift += prettyPaletteButton->height();
+
+        greyScalePaletteButton = new QRadioButton("Grey Scale", this);
+        greyScalePaletteButton->move(colorPaletteLabel->width(), buttonShift);
+        buttonShift += greyScalePaletteButton->height();
+
+        glowingPaletteButton = new QRadioButton("Glowing", this);
+        glowingPaletteButton->move(colorPaletteLabel->width(), buttonShift);
+        buttonShift += glowingPaletteButton->height()*1.1f;
+
+        rotationLabel = new QLabel("Camera\nRotation", this);
+        rotationLabel->move(0, buttonShift);
+ //       buttonShift += rotationLabel->height();
+
+        unsigned short utf16Array;
+        utf16Array = 0x00b0;
+        QString degreeSymbol(QString::fromUtf16(&utf16Array, 1));
+        QString zerostr("0" + degreeSymbol);
+        zeroRotationButton = new QRadioButton(zerostr, this);
+        zeroRotationButton->move(rotationLabel->width(), buttonShift);
+        buttonShift += zeroRotationButton->height();
+         QString minus90str("+90" + degreeSymbol);
+        minus90RotationButton = new QRadioButton(minus90str, this);
+        minus90RotationButton->move(rotationLabel->width(), buttonShift);
+        buttonShift += minus90RotationButton->height();
+        QString plus90str("-90"+degreeSymbol);
+        plus90Rotationbutton = new QRadioButton(plus90str, this);
+        plus90Rotationbutton->move(rotationLabel->width(), buttonShift);
+
+
+        scaleGroup = new QButtonGroup(this);
+        colorGroup = new QButtonGroup(this);
+        rotationGroup = new QButtonGroup(this);
+        scaleGroup->addButton(linearButton);
+        scaleGroup->addButton(logButton);
+        colorGroup->addButton(regularPaletteButton);
+        colorGroup->addButton(prettyPaletteButton);
+        colorGroup->addButton(greyScalePaletteButton);
+        colorGroup->addButton(glowingPaletteButton);
+        rotationGroup->addButton(zeroRotationButton);
+        rotationGroup->addButton(minus90RotationButton);
+        rotationGroup->addButton(plus90Rotationbutton);
+
+        linearButton->setChecked(true);
+        regularPaletteButton->setChecked(true);
+//        zeroRotationButton->setChecked(true);
+        minus90RotationButton->setChecked(true);
+//        linearButton->palette.setColor();
+
+        linearButton->setAutoFillBackground(true);
+        logButton->setAutoFillBackground(true);
+        regularPaletteButton->setAutoFillBackground(true);
+        prettyPaletteButton->setAutoFillBackground(true);
+        greyScalePaletteButton->setAutoFillBackground(true);
+        glowingPaletteButton->setAutoFillBackground(true);
+        zeroRotationButton->setAutoFillBackground(true);
+        minus90RotationButton->setAutoFillBackground(true);
+        plus90Rotationbutton->setAutoFillBackground(true);
+        scaleLabel->setAutoFillBackground(true);
+        colorPaletteLabel->setAutoFillBackground(true);
+        rotationLabel->setAutoFillBackground(true);
+
+        linearButton->hide();
+        logButton->hide();
+        regularPaletteButton->hide();
+        prettyPaletteButton->hide();
+        greyScalePaletteButton->hide();
+        glowingPaletteButton->hide();
+        zeroRotationButton->hide();
+        minus90RotationButton->hide();
+        plus90Rotationbutton->hide();
+        scaleLabel->hide();
+        colorPaletteLabel->hide();
+        rotationLabel->hide();
+
+        connect(linearButton, SIGNAL(toggled(bool)),
+                 this, SLOT(linearScalePlease(bool)));
+        connect(logButton, SIGNAL(toggled(bool)),
+                 this, SLOT(logScalePlease(bool)));
+        connect(regularPaletteButton, SIGNAL(toggled(bool)),
+                 this, SLOT(regularPalettePlease(bool)));
+        connect(prettyPaletteButton, SIGNAL(toggled(bool)),
+                 this, SLOT(prettyPalettePlease(bool)));
+        connect(greyScalePaletteButton, SIGNAL(toggled(bool)),
+                 this, SLOT(greyScalePalettePlease(bool)));
+        connect(glowingPaletteButton, SIGNAL(toggled(bool)),
+                 this, SLOT(glowingPalettePlease(bool)));
+        connect(zeroRotationButton, SIGNAL(toggled(bool)),
+                 this, SLOT(zeroRotationPlease(bool)));
+        connect(minus90RotationButton, SIGNAL(toggled(bool)),
+                 this, SLOT(plus90RotationPlease(bool)));
+        connect(plus90Rotationbutton, SIGNAL(toggled(bool)),
+                 this, SLOT(minus90RotationPlease(bool)));
+
+        connect(this, SIGNAL(signalUpdateCamera()),
+                this, SLOT(timedUpdate()));
+    }
+    BasicGlCamera::~BasicGlCamera()
+    {
+    }
+    void BasicGlCamera::assignPixelMap(const PixelMap& map)
+    {
+        fPixelMap = map;
+
+        for (auto it=fPixelMap.begin(); it!=fPixelMap.end(); it++)
+        {
+            hardwareMapping[it->index] = it->hw();
+            softwareMapping[it->hw()]  = it->index;
+        }
+
+        //now construct the correspondance between pixels and patches
+        for (int i=0;i<NTMARK;i++)
+            for (int j=0;j<9;j++)
+                pixelsPatch[softwareMapping[i*9+j]] = i;
+
+        calculatePixelsCoords();
+
+        for (int i=0;i<1440;i++)
+        {
+            for (int j=0;j<6;j++)
+                neighbors[i][j] = -1;
+            updateNeighbors(i);
+        }
+
+        buildVerticesList();
+
+        buildPatchesIndices();
+
+    }
+    void BasicGlCamera::enableText(bool on)
+    {
+        fTextEnabled = on;
+    }
+    void BasicGlCamera::setPatchColor(int id, float color[3])
+    {
+        for (int i=0;i<9;i++)
+            for (int j=0;j<3;j++)
+                pixelsColor[softwareMapping[id*9+i]][j] = color[j];
+    }
+    void BasicGlCamera::setUnits(const string& units)
+    {
+        unitsText = units;
+        pixelColorUpToDate = false;
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::setTitle(const string& title)
+    {
+        titleText = title;
+        pixelColorUpToDate = false;
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::SetWhite(int idx)
+    {
+        fWhite = idx;
+        fWhitePatch = pixelsPatch[fWhite];
+        if (isVisible() && autoRefresh)
+            updateGL();
+//         CalculatePatchColor();
+    }
+    void BasicGlCamera::SetMin(int64_t min)
+    {
+//        cout << "min: " << min << endl;
+        fMin = min;
+        pixelColorUpToDate = false;
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::setAutoscaleLowerLimit(float val)
+    {
+        fScaleLimit = val;
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+
+    void BasicGlCamera::SetMax(int64_t max)
+    {
+//        cout << "max: " << max << endl;
+        fMax = max;
+        pixelColorUpToDate = false;
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::linearScalePlease(bool checked)
+    {
+        if (!checked) return;
+        logScale = false;
+        pixelColorUpToDate = false;
+        emit colorPaletteHasChanged();
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::UpdateText()
+    {
+        ostringstream str;
+        float min, max, median;
+        int ii=0;
+        for (;ii<ACTUAL_NUM_PIXELS;ii++)
+        {
+            if (finite(fData[ii]))
+            {
+                min = max = fData[ii];
+                break;
+            }
+        }
+        double mean = 0;
+        double rms = 0;
+        median = 0;
+        if (ii==ACTUAL_NUM_PIXELS)
+        {
+            fmin = fmax = fmean = frms = fmedian = 0;
+            return;
+        }
+
+        vector<double> medianVec;
+        medianVec.resize(ACTUAL_NUM_PIXELS);
+        auto it = medianVec.begin();
+        int numSamples = 0;
+        for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+        {
+            if (!finite(fData[i]))
+                continue;
+            if (fData[i] < min)
+                min = fData[i];
+            if (fData[i] > max)
+                max = fData[i];
+            mean += fData[i];
+            rms += fData[i]*fData[i];
+            //medianSet.insert(fData[i]);
+            *it = fData[i];
+            it++;
+            numSamples++;
+        }
+
+//        vector<double> medianVec;
+//        medianVec.resize(ACTUAL_NUM_PIXELS);
+//        int iii=0;
+//        for (auto it=medianVec.begin(); it != medianVec.end(); it++) {
+//            *it = fData[iii];
+//            iii++;
+//        }
+        sort(medianVec.begin(), medianVec.begin()+numSamples);
+
+
+        mean /= numSamples;
+        rms = sqrt((rms/numSamples) - (mean * mean));
+
+//       multiset<double>::iterator it = medianSet.begin();
+        auto jt = medianVec.begin();
+        for (int i=0;i<(numSamples/2)-1;i++)
+        {
+//            it++;
+            jt++;
+        }
+        median = *jt;
+ //       cout << *it << " " << *jt << endl;
+        if (numSamples%2==0){
+        jt++;
+        median += *jt;
+        median /= 2;}
+
+        str << "Min: " << min << endl << " Max: " << max << " Mean: " << mean << " RMS: " << rms << " Median: " << median;
+        str << " Units: " << unitsText;
+        dataText = str.str();
+
+        fmin = min;
+        fmax = max;
+        fmean = mean;
+        frms = rms;
+        fmedian = median;
+    }
+    void BasicGlCamera::DrawCameraText()
+    {
+        if (!fTextEnabled)
+            return;
+        glPushMatrix();
+        glLoadIdentity();
+//         cout << width() << " " << height() << endl;
+        int textSize = (int)(height()*14/600);
+//        setFont(QFont("Times", textSize));
+        qglColor(QColor(255,223,127));
+        float shiftx = 0.01f;//0.55f;
+        float shifty = 0.01f;//0.65f;
+        renderText(-shownSizex/2.f + shiftx, 0.f, 0.f, QString(dataText.c_str()));//-shownSizey/2.f + shifty, 0.f, QString(dataText.c_str()));
+
+
+//        int textLength = titleText.size();
+        renderText(-shownSizex/2.f + shiftx, shownSizey/2.f - textSize*pixelSize - shifty, 0.f, QString(titleText.c_str()));
+
+        glPopMatrix();
+
+  //      textSize = (int)(600*14/600);
+//        setFont(QFont("Times", textSize));
+    }
+    void BasicGlCamera::DrawScale()
+    {
+        glPushMatrix();
+        glLoadIdentity();
+        glPushAttrib(GL_POLYGON_BIT);
+        glShadeModel(GL_SMOOTH);
+        glBegin(GL_QUADS);
+        float oneX = shownSizex/2.f - shownSizex/50.f;
+        float twoX = shownSizex/2.f;
+        float oneY = -shownSizey/2.f;
+        float twoY = -shownSizey/4.f;
+        float threeY = 0;
+        float fourY = shownSizey/4.f;
+        float fiveY = shownSizey/2.f;
+        glColor3f(rr[0], gg[0], bb[0]);
+        glVertex2f(oneX, oneY);
+        glVertex2f(twoX, oneY);
+        glColor3f(rr[1], gg[1], bb[1]);
+        glVertex2f(twoX, twoY);
+        glVertex2f(oneX, twoY);
+
+        glVertex2f(oneX, twoY);
+        glVertex2f(twoX, twoY);
+        glColor3f(rr[2], gg[2], bb[2]);
+        glVertex2f(twoX, threeY);
+        glVertex2f(oneX, threeY);
+
+        glVertex2f(oneX, threeY);
+        glVertex2f(twoX, threeY);
+        glColor3f(rr[3], gg[3], bb[3]);
+        glVertex2f(twoX, fourY);
+        glVertex2f(oneX, fourY);
+
+        glVertex2f(oneX, fourY);
+        glVertex2f(twoX, fourY);
+        glColor3f(rr[4], gg[4], bb[4]);
+        glVertex2f(twoX, fiveY);
+        glVertex2f(oneX, fiveY);
+        float zeroX = oneX - shownSizex/50.f;
+        float zeroY = fiveY - shownSizey/50.f;
+        glColor3fv(tooHighValueCoulour);
+        glVertex2f(zeroX, fiveY);
+        glVertex2f(oneX, fiveY);
+        glVertex2f(oneX, zeroY);
+        glVertex2f(zeroX, zeroY);
+        glColor3fv(tooLowValueCoulour);
+        glVertex2f(zeroX, -fiveY);
+        glVertex2f(oneX, -fiveY);
+        glVertex2f(oneX, -zeroY);
+        glVertex2f(zeroX, -zeroY);
+        glEnd();
+        glTranslatef(0,0,0.1f);
+
+        //draw linear/log tick marks
+        glColor3f(0.f,0.f,0.f);
+        glBegin(GL_LINES);
+        float value;
+        for (int i=1;i<10;i++)
+        {
+            if (logScale)
+                value = log10(i);
+            else
+                value = (float)(i)/10.f;
+            float yy = -shownSizey/2.f + value*shownSizey;
+            glVertex2f(oneX, yy);
+            glVertex2f(twoX, yy);
+        }
+        glEnd();
+        glPopAttrib();
+        glPopMatrix();
+    }
+    void BasicGlCamera::logScalePlease(bool checked)
+    {
+        if (!checked) return;
+        logScale = true;
+        pixelColorUpToDate = false;
+        emit colorPaletteHasChanged();
+          if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::regularPalettePlease(bool checked)
+    {
+        if (!checked) return;
+        ss[0] = 0;    ss[1] = 0.25f; ss[2] = 0.5f; ss[3] = 0.75f; ss[4] = 1.0f;
+        rr[0] = 0;    rr[1] = 0;     rr[2] = 0;    rr[3] = 1.0f;  rr[4] = 1;
+        gg[0] = 0;    gg[1] = 1;     gg[2] = 1;    gg[3] = 1;     gg[4] = 0;
+        bb[0] = 0.5f; bb[1] = 1;     bb[2] = 0;    bb[3] = 0;     bb[4] = 0;
+        tooHighValueCoulour[0] = 1.f;
+        tooHighValueCoulour[1] = 1.f;
+        tooHighValueCoulour[2] = 1.f;
+        tooLowValueCoulour[0] = 0.f;
+        tooLowValueCoulour[1] = 0.f;
+        tooLowValueCoulour[2] = 0.f;
+        pixelColorUpToDate = false;
+
+        emit colorPaletteHasChanged();
+
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::prettyPalettePlease(bool checked)
+    {
+        if (!checked) return;
+        ss[0] = 0.f;    ss[1] = 0.25f; ss[2] = 0.5f; ss[3] = 0.75f; ss[4] = 1.0f;
+        rr[0] = 0.f; rr[1] = 0.35f;     rr[2] = 0.85f;    rr[3] = 1.0f;  rr[4] = 1.f;
+        gg[0] = 0.f; gg[1] = 0.10f;     gg[2] = 0.20f;    gg[3] = 0.73f;     gg[4] = 1.f;
+        bb[0] = 0.f; bb[1] = 0.03f;     bb[2] = 0.06f;    bb[3] = 0.00f;     bb[4] = 1.f;
+        tooHighValueCoulour[0] = 0.f;
+        tooHighValueCoulour[1] = 1.f;
+        tooHighValueCoulour[2] = 0.f;
+        tooLowValueCoulour[0] = 0.f;
+        tooLowValueCoulour[1] = 0.f;
+        tooLowValueCoulour[2] = 1.f;
+        pixelColorUpToDate = false;
+
+        emit colorPaletteHasChanged();
+
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::greyScalePalettePlease(bool checked)
+    {
+        if (!checked) return;
+        ss[0] = 0;    ss[1] = 0.25f; ss[2] = 0.5f; ss[3] = 0.75f; ss[4] = 1.0f;
+        rr[0] = 0; rr[1] = 0.25f;     rr[2] = 0.5f;    rr[3] = 0.75f;  rr[4] = 1.0f;
+        gg[0] = 0; gg[1] = 0.25f;     gg[2] = 0.5f;    gg[3] = 0.75f;     gg[4] = 1.0f;
+        bb[0] = 0; bb[1] = 0.25f;     bb[2] = 0.5f;    bb[3] = 0.75f;     bb[4] = 1.0f;
+        tooHighValueCoulour[0] = 0.f;
+        tooHighValueCoulour[1] = 1.f;
+        tooHighValueCoulour[2] = 0.f;
+        tooLowValueCoulour[0] = 0.f;
+        tooLowValueCoulour[1] = 0.f;
+        tooLowValueCoulour[2] = 1.f;
+        pixelColorUpToDate = false;
+
+        emit colorPaletteHasChanged();
+
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::glowingPalettePlease(bool checked)
+    {
+        if (!checked) return;
+        ss[0] = 0;    ss[1] = 0.25f; ss[2] = 0.5f; ss[3] = 0.75f; ss[4] = 1.0f;
+        rr[0] = 0.15; rr[1] = 0.5;     rr[2] = 1.f;    rr[3] = 0.0f;  rr[4] = 1.f;
+        gg[0] = 0.15; gg[1] = 0.5;     gg[2] = 1.f;    gg[3] = 0.5f;     gg[4] = 0.5f;
+        bb[0] = 0.15; bb[1] = 0.5;     bb[2] = 1;      bb[3] = 1.f;     bb[4] = 0.f;
+        tooHighValueCoulour[0] = 1.f;
+        tooHighValueCoulour[1] = 0.f;
+        tooHighValueCoulour[2] = 0.f;
+        tooLowValueCoulour[0] = 0.f;
+        tooLowValueCoulour[1] = 1.f;
+        tooLowValueCoulour[2] = 0.f;
+        pixelColorUpToDate = false;
+
+        emit colorPaletteHasChanged();
+
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::SetAutoRefresh(bool on)
+    {
+        autoRefresh = on;
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::zeroRotationPlease(bool checked)
+    {
+        if (!checked) return;
+        cameraRotation = 0;
+        pixelColorUpToDate = false;
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::plus90RotationPlease(bool checked)
+    {
+        if (!checked) return;
+        cameraRotation = 90;
+        pixelColorUpToDate = false;
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void BasicGlCamera::minus90RotationPlease(bool checked)
+    {
+        if (!checked) return;
+        cameraRotation = -90;
+        pixelColorUpToDate = false;
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+
+    void BasicGlCamera::initializeGL()
+    {
+        qglClearColor(QColor(212,208,200));//25,25,38));
+        glShadeModel(GL_FLAT);
+        glEnable(GL_DEPTH_TEST);
+        glDisable(GL_CULL_FACE);
+
+   //     glEnable (GL_LINE_SMOOTH);
+   //     glEnable (GL_BLEND);
+   //     glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+   //     glHint (GL_LINE_SMOOTH_HINT, GL_NICEST);
+
+    }
+    void BasicGlCamera::resizeGL(int cWidth, int cHeight)
+    {
+        glViewport(0, 0, cWidth, cHeight);
+         glMatrixMode(GL_PROJECTION);
+         glLoadIdentity();
+         GLfloat windowRatio = (float)cWidth/(float)cHeight;
+         if (windowRatio < 1)
+         {
+             windowRatio = 1.0f/windowRatio;
+             gluOrtho2D(-viewSize, viewSize, -viewSize*windowRatio, viewSize*windowRatio);
+             pixelSize = 2*viewSize/(float)cWidth;
+             shownSizex = 2*viewSize;
+             shownSizey = 2*viewSize*windowRatio;
+         }
+         else
+         {
+             gluOrtho2D(-viewSize*windowRatio, viewSize*windowRatio, -viewSize, viewSize);
+             pixelSize = 2*viewSize/(float)cHeight;
+             shownSizex = 2*viewSize*windowRatio;
+             shownSizey = 2*viewSize;
+         }
+         glMatrixMode(GL_MODELVIEW);
+
+         fTextSize = (int)(cWidth*12/600); //want a sized 12 font for a window of 600 pixels width
+         setFont(QFont("Monospace", fTextSize));
+    }
+    void BasicGlCamera::paintGL()
+    {
+         glClear(GL_COLOR_BUFFER_BIT);
+         glLoadIdentity();
+
+         glTranslatef(0,-0.44,0);
+         glScalef(1.5, 1.5, 1.5);
+
+         drawCamera(true);
+
+         drawPatches();
+    }
+    void BasicGlCamera::toggleInterfaceDisplay()
+    {
+        if (linearButton->isVisible())
+        {
+            linearButton->hide();
+            logButton->hide();
+            regularPaletteButton->hide();
+            prettyPaletteButton->hide();
+            greyScalePaletteButton->hide();
+            glowingPaletteButton->hide();
+            zeroRotationButton->hide();
+            minus90RotationButton->hide();
+            plus90Rotationbutton->hide();
+            scaleLabel->hide();
+            colorPaletteLabel->hide();
+            rotationLabel->hide();
+        }
+        else
+        {
+            linearButton->show();
+            logButton->show();
+            regularPaletteButton->show();
+            prettyPaletteButton->show();
+            greyScalePaletteButton->show();
+            glowingPaletteButton->show();
+            zeroRotationButton->show();
+            minus90RotationButton->show();
+            plus90Rotationbutton->show();
+            scaleLabel->show();
+            colorPaletteLabel->show();
+            rotationLabel->show();
+        }
+    }
+
+    void BasicGlCamera::mousePressEvent(QMouseEvent *)
+    {
+
+    }
+    void BasicGlCamera::mouseMoveEvent(QMouseEvent *)
+    {
+
+    }
+    void BasicGlCamera::mouseDoubleClickEvent(QMouseEvent *)
+    {
+
+    }
+    void BasicGlCamera::timedUpdate()
+    {
+        if (isVisible())
+            updateGL();
+    }
+    void BasicGlCamera::updateCamera()
+    {
+        emit signalUpdateCamera();
+    }
+    void BasicGlCamera::drawCamera(bool alsoWire)
+    {
+//        cout << "Super PaintGL" << endl;
+        glColor3f(0.5,0.5,0.5);
+        glLineWidth(1.0);
+        float color;
+
+        for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+        {
+            color = float(fData[i*fPixelStride+fcSlice]);// + ]eventData[nRoi*i + whichSlice]+(VALUES_SPAN/2))/(float)(VALUES_SPAN-1);
+            int index = 0;
+            while (ss[index] < color)
+                index++;
+            index--;
+            float weight0 = (color-ss[index]) / (ss[index+1]-ss[index]);
+            float weight1 = 1.0f-weight0;
+            pixelsColor[i][0] = weight1*rr[index] + weight0*rr[index+1];
+            pixelsColor[i][1] = weight1*gg[index] + weight0*gg[index+1];
+            pixelsColor[i][2] = weight1*bb[index] + weight0*bb[index+1];
+        }
+
+        for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+        {
+ //           if (i == 690 ||
+ //               i == 70)
+ //               continue;
+            glColor3fv(pixelsColor[i]);
+            glLoadName(i);
+
+        drawHexagon(i,true);
+
+        }
+        if (!alsoWire)
+            return;
+        glColor3f(0.0f,0.0f,0.0f);
+        for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+        {
+//            if (i == 690 ||
+//                i == 70)
+//                continue;
+            drawHexagon(i, false);
+        }
+    }
+    void BasicGlCamera::drawPatches()
+    {
+        glLineWidth(2.0f);
+        float backupRadius = hexRadius;
+        hexRadius *= 0.95;
+        glColor3f(0.5f, 0.5f, 0.3f);
+        glBegin(GL_LINES);
+        for (int i=0;i<NTMARK;i++)
+        {
+            for (unsigned int j=0;j<patchesIndices[i].size();j++)
+            {
+                glVertex2fv(verticesList[patchesIndices[i][j].first]);
+                glVertex2fv(verticesList[patchesIndices[i][j].second]);
+            }
+        }
+        glEnd();
+        hexRadius = backupRadius;
+    }
+    int BasicGlCamera::PixelAtPosition(const QPoint &cPos)
+    {
+        const int MaxSize = 512;
+        GLuint buffer[MaxSize];
+        GLint viewport[4];
+
+        makeCurrent();
+
+        glGetIntegerv(GL_VIEWPORT, viewport);
+        glSelectBuffer(MaxSize, buffer);
+        glRenderMode(GL_SELECT);
+
+        glInitNames();
+        glPushName(0);
+
+        glMatrixMode(GL_PROJECTION);
+        glPushMatrix();
+        glLoadIdentity();
+        GLfloat windowRatio = GLfloat(width()) / GLfloat(height());
+        gluPickMatrix(GLdouble(cPos.x()), GLdouble(viewport[3] - cPos.y()),
+                1.0, 1.0, viewport);
+
+        if (windowRatio < 1)
+         {
+             windowRatio = 1.0f/windowRatio;
+             gluOrtho2D(-viewSize, viewSize, -viewSize*windowRatio, viewSize*windowRatio);
+         }
+         else
+         {
+             gluOrtho2D(-viewSize*windowRatio, viewSize*windowRatio, -viewSize, viewSize);
+         }
+
+        glMatrixMode(GL_MODELVIEW);
+        drawCamera(false);
+        glMatrixMode(GL_PROJECTION);
+        glPopMatrix();
+
+        //for some reason that I cannot understand, the push/pop matrix doesn't do the trick here... bizarre
+        //ok, so re-do the resizeGL thing.
+        resizeGL(width(), height());
+
+        if (!glRenderMode(GL_RENDER))
+            return -1;
+
+        return buffer[3];
+    }
+    void BasicGlCamera::drawHexagon(int index, bool solid)
+    {
+/*        float minX, maxX, minY, maxY;
+        minX = minY = 1e10;
+        maxX = maxY = -1e10;
+        for (int i=0;i<1438;i++)
+        {
+            for (int j=0;j<6;j++)
+            {
+                if (verticesList[verticesIndices[i][j]][0] > maxX)
+                    maxX = verticesList[verticesIndices[i][j]][0];
+                if (verticesList[verticesIndices[i][j]][0] < minX)
+                    minX = verticesList[verticesIndices[i][j]][0];
+                if (verticesList[verticesIndices[i][j]][1] > maxY)
+                    maxY = verticesList[verticesIndices[i][j]][1];
+                if (verticesList[verticesIndices[i][j]][1] < minY)
+                    minY = verticesList[verticesIndices[i][j]][1];
+            }
+        }
+        cout << "Min, Max X: " << minX << " " << maxX << endl;
+        cout << "Min, Max Y: " << minY << " " << maxY << endl;
+        exit(0);*/
+        if (solid)
+            glBegin(GL_POLYGON);
+        else
+            glBegin(GL_LINE_LOOP);
+
+        glVertex2fv(verticesList[verticesIndices[index][0]]);
+        glVertex2fv(verticesList[verticesIndices[index][1]]);
+        glVertex2fv(verticesList[verticesIndices[index][2]]);
+        glVertex2fv(verticesList[verticesIndices[index][3]]);
+        glVertex2fv(verticesList[verticesIndices[index][4]]);
+        glVertex2fv(verticesList[verticesIndices[index][5]]);
+        if (solid)
+            glVertex2fv(verticesList[verticesIndices[index][0]]);
+
+        glEnd();
+    }
+
+    void BasicGlCamera::updateNeighbors(int currentPixel)
+    {
+        float squaredDistance = 0;
+        for (int i=0;i<currentPixel;i++)
+        {
+            squaredDistance = (pixelsCoords[i][0] - pixelsCoords[currentPixel][0])*
+                              (pixelsCoords[i][0] - pixelsCoords[currentPixel][0]) +
+                              (pixelsCoords[i][1] - pixelsCoords[currentPixel][1])*
+                              (pixelsCoords[i][1] - pixelsCoords[currentPixel][1]);
+            if (squaredDistance < 4*hexRadius*hexRadius*(1.0f+hexTolerance))//neighbor !
+            {//ok, but which one ?
+                if (fabs(pixelsCoords[i][0] - pixelsCoords[currentPixel][0]) < hexTolerance &&
+                    pixelsCoords[i][1] < pixelsCoords[currentPixel][1]){//top
+                    neighbors[i][0] = currentPixel;
+                    neighbors[currentPixel][3] = i;
+                    continue;}
+                if (fabs(pixelsCoords[i][0] - pixelsCoords[currentPixel][0]) < hexTolerance &&
+                    pixelsCoords[i][1] > pixelsCoords[currentPixel][1]){//bottom
+                    neighbors[i][3] = currentPixel;
+                    neighbors[currentPixel][0] = i;
+                    continue;}
+                if (pixelsCoords[i][0] > pixelsCoords[currentPixel][0] &&
+                    pixelsCoords[i][1] > pixelsCoords[currentPixel][1]){//top right
+                    neighbors[i][4] = currentPixel;
+                    neighbors[currentPixel][1] = i;
+                    continue;}
+                if (pixelsCoords[i][0] > pixelsCoords[currentPixel][0] &&
+                    pixelsCoords[i][1] < pixelsCoords[currentPixel][1]){//bottom right
+                    neighbors[i][5] = currentPixel;
+                    neighbors[currentPixel][2] = i;
+                    continue;}
+                if (pixelsCoords[i][0] < pixelsCoords[currentPixel][0] &&
+                    pixelsCoords[i][1] > pixelsCoords[currentPixel][1]){//top left
+                    neighbors[i][2] = currentPixel;
+                    neighbors[currentPixel][5] = i;
+                    continue;}
+                if (pixelsCoords[i][0] < pixelsCoords[currentPixel][0] &&
+                    pixelsCoords[i][1] < pixelsCoords[currentPixel][1]){//bottom left
+                    neighbors[i][1] = currentPixel;
+                    neighbors[currentPixel][4] = i;
+                    continue;}
+            }
+        }
+    }
+    void BasicGlCamera::skipPixels(int start, int howMany)
+    {
+        for (int i=start;i<MAX_NUM_PIXELS-howMany;i++)
+        {
+            pixelsCoords[i][0] = pixelsCoords[i+howMany][0];
+            pixelsCoords[i][1] = pixelsCoords[i+howMany][1];
+        }
+    }
+    void BasicGlCamera::calculatePixelsCoords()
+    {
+        if (pixelsCoords[0][1] >= (0.299999-hexRadius) && pixelsCoords[0][1] <= (0.300001-hexRadius))
+            return;
+        pixelsCoords[0][0] = 0;
+        pixelsCoords[0][1] = 0.3 - hexRadius;
+        pixelsCoords[0][2] = 0;
+        pixelsCoords[1][0] = 0;
+        pixelsCoords[1][1] = 0.3+hexRadius;
+        pixelsCoords[1][2] = 0;
+        neighbors[0][0] = 1;
+        neighbors[1][3] = 0;
+        //from which side of the previous hexagon are we coming from ?
+        int fromSide = 3;
+        //to which side are we heading to ?
+        int toSide = 0;
+        for (int i=2;i<MAX_NUM_PIXELS;i++)
+        {
+            toSide = fromSide-1;
+            if (toSide < 0)
+                toSide =5;
+            while (neighbors[i-1][toSide] >= 0)
+            {
+                toSide--;
+                if (toSide < 0)
+                    toSide = 5;
+            }
+            fromSide = toSide + 3;
+            if (fromSide > 5)
+                fromSide -= 6;
+            //ok. now we now in which direction we're heading
+            pixelsCoords[i][0] = pixelsCoords[i-1][0];
+            pixelsCoords[i][1] = pixelsCoords[i-1][1];
+            pixelsCoords[i][2] = pixelsCoords[i-1][2];
+            switch (toSide)
+            {
+            case 0:
+                pixelsCoords[i][1] += 2*hexRadius;
+            break;
+            case 1:
+                pixelsCoords[i][0] += (2*hexRadius)*sin(M_PI/3.0);
+                pixelsCoords[i][1] += (2*hexRadius)*cos(M_PI/3.0);
+            break;
+            case 2:
+                pixelsCoords[i][0] += (2*hexRadius)*sin(M_PI/3.0);
+                pixelsCoords[i][1] -= (2*hexRadius)*cos(M_PI/3.0);
+            break;
+            case 3:
+                pixelsCoords[i][1] -= 2*hexRadius;
+            break;
+            case 4:
+                pixelsCoords[i][0] -= (2*hexRadius)*sin(M_PI/3.0);
+                pixelsCoords[i][1] -= (2*hexRadius)*cos(M_PI/3.0);
+            break;
+            case 5:
+                pixelsCoords[i][0] -= (2*hexRadius)*sin(M_PI/3.0);
+                pixelsCoords[i][1] += (2*hexRadius)*cos(M_PI/3.0);
+            break;
+            };
+//            pixelsCoords[i][1] -= hexRadius;
+
+            updateNeighbors(i);
+        }
+        //Ok. So now we've circled around all the way to MAX_NUM_PIXELS
+        //do the required shifts so that it matches the fact camera up to ACTUAL_NUM_PIXELS pixels
+        //remember the location pixels 1438 and 1439, and re-assign them later on
+        GLfloat backupCoords[4];
+        skipPixels(1200, 1);
+        skipPixels(1218, 3);
+        skipPixels(1236, 1);
+        skipPixels(1256, 1);
+        skipPixels(1274, 3);
+        skipPixels(1292, 3);
+        skipPixels(1309, 6);
+        skipPixels(1323, 7);
+        skipPixels(1337, 6);
+        skipPixels(1354, 6);
+        skipPixels(1368, 7);
+        //la c'est dans 1390 qu'il y a 1439
+         backupCoords[0] = pixelsCoords[1390][0];
+         backupCoords[1] = pixelsCoords[1390][1];
+        skipPixels(1382, 9);
+         skipPixels(1394, 12);
+        skipPixels(1402, 15);
+        skipPixels(1410, 12);
+        //la c'est dans 1422 qu'il y a 1438
+        backupCoords[2] = pixelsCoords[1422][0];
+        backupCoords[3] = pixelsCoords[1422][1];
+        skipPixels(1422, 12);
+        skipPixels(1430, 15);
+
+        pixelsCoords[1438][0] = backupCoords[2];
+        pixelsCoords[1438][1] = backupCoords[3];
+        pixelsCoords[1439][0] = backupCoords[0];
+        pixelsCoords[1439][1] = backupCoords[1];
+   }
+    void BasicGlCamera::buildVerticesList()
+    {
+        numVertices = 0;
+         GLfloat cVertex[2];
+         for (int i=0;i<NPIX;i++)
+         {
+             for (int j=0;j<6;j++)
+             {
+                 for (int k=0;k<2;k++)
+                     cVertex[k] = hexcoords[j][k]*hexRadius + pixelsCoords[i][k];
+
+                 bool found = false;
+                 for (int k=0;k<numVertices;k++)
+                 {
+                     if ((cVertex[0] - verticesList[k][0])*
+                         (cVertex[0] - verticesList[k][0]) +
+                         (cVertex[1] - verticesList[k][1])*
+                         (cVertex[1] - verticesList[k][1]) < hexTolerance*hexTolerance)
+                         {
+                             found = true;
+                             break;
+                         }
+                 }
+                 if (!found)
+                 {
+                     for (int k=0;k<2;k++)
+                         verticesList[numVertices][k] = cVertex[k];
+                     numVertices++;
+                 }
+             }
+         }
+//cout << "numVertices: " << numVertices << endl;
+         for (int i=0;i<NPIX;i++)
+         {
+             for (int j=0;j<6;j++)
+             {
+                 for (int k=0;k<2;k++)
+                     cVertex[k] = hexcoords[j][k]*hexRadius + pixelsCoords[i][k];
+
+                 for (int k=0;k<numVertices;k++)
+                 {
+                     if ((cVertex[0] - verticesList[k][0])*
+                          (cVertex[0] - verticesList[k][0]) +
+                          (cVertex[1] - verticesList[k][1])*
+                          (cVertex[1] - verticesList[k][1]) < hexTolerance*hexTolerance)
+                          {
+                             verticesIndices[i][j] = k;
+                             break;
+                          }
+                 }
+             }
+         }
+    }
+    void BasicGlCamera::buildPatchesIndices()
+    {
+        vector<edge>::iterator it;
+        bool erased = false;
+//        patchesIndices.resize(NTMARK);
+        for (int i=0;i<NTMARK;i++)//for all patches
+        {
+            patchesIndices[i].clear();
+            for (int j=0;j<9;j++)//for all cells of the current patch
+            {
+                if (softwareMapping[i*9+j] >= ACTUAL_NUM_PIXELS)
+                    continue;
+                for (int k=0;k<6;k++)//for all sides of the current cell
+                {
+                    int first = k-1;
+                    int second = k;
+                    if (first < 0)
+                        first = 5;
+                    erased = false;
+                    for (it=(patchesIndices[i]).begin(); it != (patchesIndices[i]).end(); it++)//check if this side is here already or not
+                    {
+                        const int idx = i*9+j;
+
+                        if ((it->first == verticesIndices[softwareMapping[idx]][first] &&
+                             it->second == verticesIndices[softwareMapping[idx]][second]) ||
+                            (it->first == verticesIndices[softwareMapping[idx]][second] &&
+                             it->second == verticesIndices[softwareMapping[idx]][first]))
+                        {
+                            patchesIndices[i].erase(it);
+                            erased = true;
+                            break;
+                        }
+                    }
+                    if (!erased)
+                    {
+                        edge temp;
+                        temp.first = verticesIndices[softwareMapping[i*9+j]][first];
+                        temp.second = verticesIndices[softwareMapping[i*9+j]][second];
+                        patchesIndices[i].push_back(temp);
+                    }
+                }
+            }
+        }
+//        for (int i=0;i<NTMARK;i++)
+//        {
+//            cout << ".....................patch " << i << " size: " << patchesIndices[i].size() << endl;
+//            for (unsigned int j=0;j<patchesIndices[i].size();j++)
+//            {
+//               if (patchesIndices[i][j].first < 0 || patchesIndices[i][j].first > 3013)
+//                cout << patchesIndices[i][j].first << " and " << patchesIndices[i][j].second << " and " << j << endl;
+//            }
+//        }
+    }
+
Index: branches/testFACT++branch/gui/BasicGlCamera.h
===================================================================
--- branches/testFACT++branch/gui/BasicGlCamera.h	(revision 18277)
+++ branches/testFACT++branch/gui/BasicGlCamera.h	(revision 18277)
@@ -0,0 +1,185 @@
+#ifndef BASIC_GL_CAMERA_H_
+#define BASIC_GL_CAMERA_H_
+
+#define NBOARDS      40      // max. number of boards
+#define NPIX       1440      // max. number of pixels
+#define NTMARK      160      // max. number of timeMarker signals
+
+#define MAX_NUM_PIXELS 1600
+#define ACTUAL_NUM_PIXELS 1440
+
+#include <vector>
+
+#include <QtOpenGL/QGLWidget>
+
+#include "externals/PixelMap.h"
+
+class QMouseEvent;
+class QRadioButton;
+class QLabel;
+class QButtonGroup;
+
+///structure for storing edges of hexagons (for blurry display)
+struct edge
+{
+    int first;
+    int second;
+};
+
+///structure for storing neighbors of pixels. For camera position calculation and blurry display
+struct PixelsNeighbors
+{
+    //neighbors. clockwise, starting from top
+    int neighbors[6];
+    PixelsNeighbors()
+    {
+        for (int i=0;i<6;i++)
+            neighbors[i] = -1;
+    }
+    int& operator[](int index){return neighbors[index];}
+};
+
+class BasicGlCamera : public QGLWidget
+{
+    Q_OBJECT
+
+public:
+    BasicGlCamera(QWidget* parent = 0);
+    ~BasicGlCamera();
+
+    int fWhite;
+    int fWhitePatch;
+
+    int64_t fMin;
+    int64_t fMax;
+    float fScaleLimit;
+    void setAutoscaleLowerLimit(float);
+
+    int fTextSize;
+
+    static PixelMap fPixelMap;
+    static int pixelsPatch[NPIX];
+
+    bool pixelColorUpToDate;
+
+    GLfloat patchColour[3];
+    GLfloat pixelContourColour[3];
+    GLfloat patchesCoulour[3];
+    GLfloat highlightedPatchesCoulour[3];
+    GLfloat highlightedPixelsCoulour[3];
+    GLfloat tooHighValueCoulour[3];
+    GLfloat tooLowValueCoulour[3];
+
+    std::string dataText;
+    std::string unitsText;
+    std::string titleText;
+
+    void setUnits(const std::string& units);
+    void setTitle(const std::string& title);
+    void SetWhite(int idx);
+    void SetMin(int64_t min);
+    void SetMax(int64_t max);
+    void SetAutoRefresh(bool on);
+    void updateCamera();
+    void assignPixelMap(const PixelMap& );
+    void enableText(bool);
+
+    bool fTextEnabled;
+
+    float ss[5];// = {0.00, 0.25, 0.5, 0.75, 1.00};
+    float rr[5];// = {0.15, 0.00, 0.00, 1.00, 0.85};
+    float gg[5];// = {0.15, 0.00, 1.00, 0.00, 0.85};
+    float bb[5];// = {0.15, 1.00, 0.00, 0.00, 0.85};
+
+public Q_SLOTS:
+        void linearScalePlease(bool);
+        void logScalePlease(bool);
+        void regularPalettePlease(bool);
+        void prettyPalettePlease(bool);
+        void greyScalePalettePlease(bool);
+        void glowingPalettePlease(bool);
+        void zeroRotationPlease(bool);
+        void plus90RotationPlease(bool);
+        void minus90RotationPlease(bool);
+        void timedUpdate();
+
+Q_SIGNALS:
+         void signalCurrentPixel(int pixel);
+         void signalPixelMoveOver(int pixel);
+         void signalPixelDoubleClick(int pixel);
+         void colorPaletteHasChanged();
+         void signalUpdateCamera();
+
+
+
+protected:
+    virtual void initializeGL();
+    virtual void resizeGL(int width, int height);
+    virtual void paintGL();
+    virtual void mousePressEvent(QMouseEvent *event);
+    virtual void mouseMoveEvent(QMouseEvent *event);
+    virtual void mouseDoubleClickEvent(QMouseEvent *event);
+    virtual void drawCamera(bool alsoWire);
+    virtual void drawPatches();
+    virtual void setPatchColor(int id, float color[3]);
+    virtual int PixelAtPosition(const QPoint &pos);
+    virtual void DrawCameraText();
+    void drawHexagon(int index, bool solid);
+
+    int fPixelStride;
+    int fcSlice;
+    std::vector<double>fData;
+
+ //   bool recalcColorPlease;
+    static GLfloat pixelsCoords[MAX_NUM_PIXELS][3];
+    static PixelsNeighbors neighbors[MAX_NUM_PIXELS];
+    static int hardwareMapping[NPIX];
+    GLfloat pixelsColor[NPIX][3];
+    static  GLfloat verticesList[NPIX*6][2];
+    static std::vector<edge> patchesIndices[160];
+    static int verticesIndices[NPIX][6];
+    static int softwareMapping[NPIX];
+    float shownSizex;
+    float shownSizey;
+    float pixelSize;
+    virtual void UpdateText();
+    void DrawScale();
+    void toggleInterfaceDisplay();
+    QRadioButton* linearButton;
+    QRadioButton* logButton;
+    QRadioButton* regularPaletteButton;
+    QRadioButton* prettyPaletteButton;
+    QRadioButton* greyScalePaletteButton;
+    QRadioButton* glowingPaletteButton;
+    QRadioButton* zeroRotationButton;
+    QRadioButton* minus90RotationButton;
+    QRadioButton* plus90Rotationbutton;
+    QLabel*       scaleLabel;
+    QLabel*       colorPaletteLabel;
+    QLabel*       rotationLabel;
+    QButtonGroup* scaleGroup;
+    QButtonGroup* colorGroup;
+    QButtonGroup* rotationGroup;
+
+
+    bool logScale;
+    int cameraRotation;
+    void buildVerticesList();
+    virtual void buildPatchesIndices();
+    void updateNeighbors(int currentPixel);
+    void calculatePixelsCoords();
+    float viewSize;
+    bool autoRefresh;
+
+  private:
+    void skipPixels(int start, int howMany);
+    float hexRadius;
+    float hexTolerance;
+     int numVertices;
+  protected:
+     float fmin, fmax, fmean, frms, fmedian;
+
+
+};
+
+#endif
Index: branches/testFACT++branch/gui/CheckBoxDelegate.cc
===================================================================
--- branches/testFACT++branch/gui/CheckBoxDelegate.cc	(revision 18277)
+++ branches/testFACT++branch/gui/CheckBoxDelegate.cc	(revision 18277)
@@ -0,0 +1,85 @@
+// **************************************************************************
+/** @class CheckBoxDelegate
+
+@brief A delegate which displays an arrow if there are sub items and raises an event if the checkbox is checked
+
+*/
+// **************************************************************************
+#include "CheckBoxDelegate.h"
+
+#include <QPainter>
+#include <QApplication>
+
+void CheckBoxDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
+{
+    //---  QColumnViewDelegate
+    const bool reverse = (option.direction == Qt::RightToLeft);
+    const int  width   = (option.rect.height() * 2) / 3;
+
+
+    // Modify the options to give us room to add an arrow
+    QStyleOptionViewItemV4 opt = option;
+    if (reverse)
+        opt.rect.adjust(width,0,0,0);
+    else
+        opt.rect.adjust(0,0,-width,0);
+
+    if (!(index.model()->flags(index) & Qt::ItemIsEnabled))
+    {
+        opt.showDecorationSelected = true;
+        opt.state |= QStyle::State_Selected;
+    }
+
+
+    QStyledItemDelegate::paint(painter, opt, index);
+
+
+    if (reverse)
+        opt.rect = QRect(option.rect.x(), option.rect.y(),
+                         width, option.rect.height());
+    else
+        opt.rect = QRect(option.rect.x() + option.rect.width() - width, option.rect.y(),
+                         width, option.rect.height());
+
+    // Draw >
+    if (index.model()->hasChildren(index))
+    {
+        const QWidget *view = opt.widget;
+
+        QStyle *style = view ? view->style() : qApp->style();
+        style->drawPrimitive(QStyle::PE_IndicatorColumnViewArrow, &opt,
+                             painter, view);
+    }
+}
+
+
+bool CheckBoxDelegate::editorEvent(QEvent *evt, QAbstractItemModel *model, const QStyleOptionViewItem &option,
+                                   const QModelIndex &index)
+{
+    QStandardItemModel *it = dynamic_cast<QStandardItemModel*>(model);
+    if (!it)
+        return QStyledItemDelegate::editorEvent(evt, model, option, index);
+
+    const QStandardItem *item = it->itemFromIndex(index);
+    if (!item)
+        return QStyledItemDelegate::editorEvent(evt, model, option, index);
+
+    const Qt::CheckState before = item->checkState();
+
+    const bool rc = QStyledItemDelegate::editorEvent(evt, model, option, index);
+
+    const Qt::CheckState after = item->checkState();
+
+    if (before!=after)
+        QApplication::sendEvent(it->parent(), new CheckBoxEvent(*item));
+
+    return rc;
+}
+
+// **************************************************************************
+/** @class CheckBoxEvent
+
+@brief An event posted by the CheckBoxDelegate if the CheckBox is used
+
+*/
+// **************************************************************************
Index: branches/testFACT++branch/gui/CheckBoxDelegate.h
===================================================================
--- branches/testFACT++branch/gui/CheckBoxDelegate.h	(revision 18277)
+++ branches/testFACT++branch/gui/CheckBoxDelegate.h	(revision 18277)
@@ -0,0 +1,38 @@
+#ifndef FACT_CheckBoxDelegate
+#define FACT_CheckBoxDelegate
+
+#include <QEvent>
+#include <QStandardItem>
+
+using namespace std;
+
+class CheckBoxEvent : public QEvent
+{
+public:
+    const QStandardItem &item;
+
+    CheckBoxEvent(const QStandardItem &i)
+        : QEvent((QEvent::Type)QEvent::registerEventType()),
+    item(i) { }
+};
+
+
+#include <QStyledItemDelegate>
+
+class CheckBoxDelegate : public QStyledItemDelegate
+{
+public:
+    CheckBoxDelegate(QObject *p=0) : QStyledItemDelegate(p)
+    {
+    }
+
+    void paint(QPainter *painter,
+               const QStyleOptionViewItem &option,
+               const QModelIndex &index) const;
+
+    bool editorEvent(QEvent *evt, QAbstractItemModel *model,
+                     const QStyleOptionViewItem &option,
+                     const QModelIndex &index);
+};
+
+#endif
Index: branches/testFACT++branch/gui/DockWindow.cc
===================================================================
--- branches/testFACT++branch/gui/DockWindow.cc	(revision 18277)
+++ branches/testFACT++branch/gui/DockWindow.cc	(revision 18277)
@@ -0,0 +1,57 @@
+// **************************************************************************
+/** @class DockWindow
+
+@brief A main window which can be used to display a QDockWidget from a tab
+
+*/
+// **************************************************************************
+#include "DockWindow.h"
+
+#include <QDockWidget>
+#include <QGridLayout>
+
+#include <stdexcept>
+
+using namespace std;
+
+DockWindow::DockWindow(QDockWidget *d, const QString &name)
+    : fDockWidget(d)
+{
+    QObject *w0 = d->parent();   // QWidget
+    if (!w0)
+        throw runtime_error("1st parent of QDockWidget is NULL");
+
+    QObject *w1 = w0->parent();  // QWidget
+    if (!w1)
+        throw runtime_error("2nd parent of QDockWidget is NULL");
+
+    QObject *w2 = w1->parent();  // QWidget
+    if (!w2)
+            throw runtime_error("3rd parent of QDockWidget is NULL");
+
+    fTabWidget = dynamic_cast<QTabWidget*>(w2);
+    if (!fTabWidget)
+        throw runtime_error("3rd parent of QDockWidget is not a QTabWidget");
+
+    setGeometry(d->geometry());
+    addDockWidget(Qt::LeftDockWidgetArea, fDockWidget);
+    setWindowTitle(name);
+
+    // FIXME: ToolTip, WhatsThis
+
+    show();
+}
+
+void DockWindow::closeEvent(QCloseEvent *)
+{
+    QWidget *w = new QWidget;
+
+    QGridLayout *l = new QGridLayout(w);
+    //layout->setObjectName(QString::fromUtf8("gridLayout_")+windowTitle());
+    l->addWidget(fDockWidget, 0, 0, 1, 1);
+
+    fTabWidget->addTab(w, windowTitle());
+    fTabWidget->setTabsClosable(true);
+
+    fDockWidget->setParent(w);
+}
Index: branches/testFACT++branch/gui/DockWindow.h
===================================================================
--- branches/testFACT++branch/gui/DockWindow.h	(revision 18277)
+++ branches/testFACT++branch/gui/DockWindow.h	(revision 18277)
@@ -0,0 +1,25 @@
+#ifndef FACT_DockWindow
+#define FACT_DockWindow
+
+#include <QMainWindow>
+
+class QDockWidget;
+class QTabWidget;
+class QCloseEvent;
+
+class DockWindow : public QMainWindow
+{
+    Q_OBJECT;
+
+    QDockWidget  *fDockWidget;
+    QTabWidget   *fTabWidget;
+
+public:
+
+    DockWindow(QDockWidget *d, const QString &name);
+
+protected:
+    void closeEvent(QCloseEvent *);
+};
+
+#endif
Index: branches/testFACT++branch/gui/FactGui.cc
===================================================================
--- branches/testFACT++branch/gui/FactGui.cc	(revision 18277)
+++ branches/testFACT++branch/gui/FactGui.cc	(revision 18277)
@@ -0,0 +1,2 @@
+#include "gui/MainWindow.h"
+
Index: branches/testFACT++branch/gui/FactGui.h
===================================================================
--- branches/testFACT++branch/gui/FactGui.h	(revision 18277)
+++ branches/testFACT++branch/gui/FactGui.h	(revision 18277)
@@ -0,0 +1,4120 @@
+#ifndef FACT_FactGui
+#define FACT_FactGui
+
+#include "MainWindow.h"
+
+#include <iomanip>
+#include <valarray>
+
+#include <boost/regex.hpp>
+
+#include <QTimer>
+#include <QtSql/QSqlError>
+#include <QtSql/QSqlTableModel>
+#include <QStandardItemModel>
+
+#include "CheckBoxDelegate.h"
+
+#include "src/Dim.h"
+#include "src/Converter.h"
+#include "src/Configuration.h"
+#include "src/DimNetwork.h"
+#include "src/tools.h"
+#include "src/DimData.h"
+#include "externals/PixelMap.h"
+
+#ifdef HAVE_ROOT
+#include "TROOT.h"
+#include "TSystem.h"
+#include "TGraph.h"
+#include "TGraphErrors.h"
+#include "TH2.h"
+#include "TBox.h"
+#include "TStyle.h"
+#include "TMarker.h"
+#include "TColor.h"
+#endif
+
+#include "QCameraWidget.h"
+
+#include "src/FAD.h"
+#include "src/HeadersMCP.h"
+#include "src/HeadersFTM.h"
+#include "src/HeadersFAD.h"
+#include "src/HeadersFSC.h"
+#include "src/HeadersBIAS.h"
+#include "src/HeadersDrive.h"
+#include "src/HeadersFeedback.h"
+#include "src/HeadersRateScan.h"
+#include "src/HeadersRateControl.h"
+#include "src/HeadersMagicWeather.h"
+
+using namespace std;
+
+// #########################################################################
+
+class FactGui : public MainWindow, public DimNetwork, public DimInfoHandler
+{
+private:
+    class FunctionEvent : public QEvent
+    {
+    public:
+        function<void(const QEvent &)> fFunction;
+
+        FunctionEvent(const function<void(const QEvent &)> &f)
+            : QEvent((QEvent::Type)QEvent::registerEventType()),
+            fFunction(f) { }
+
+        bool Exec() { fFunction(*this); return true; }
+    };
+
+    valarray<int8_t> fFtuStatus;
+
+    PixelMap fPixelMap;
+
+    //vector<int>  fPixelMapHW; // Software -> Hardware
+    vector<int> fPatchMapHW; // Software -> Hardware
+
+    bool fInChoosePatchTH;   // FIXME. Find a better solution
+    bool fInChooseBiasHv;    // FIXME. Find a better solution
+    bool fInChooseBiasCam;   // FIXME. Find a better solution
+
+    DimStampedInfo fDimDNS;
+
+    DimStampedInfo fDimLoggerStats;
+    DimStampedInfo fDimLoggerFilenameNight;
+    DimStampedInfo fDimLoggerFilenameRun;
+    DimStampedInfo fDimLoggerNumSubs;
+
+    DimStampedInfo fDimFtmPassport;
+    DimStampedInfo fDimFtmTriggerRates;
+    DimStampedInfo fDimFtmError;
+    DimStampedInfo fDimFtmFtuList;
+    DimStampedInfo fDimFtmStaticData;
+    DimStampedInfo fDimFtmDynamicData;
+    DimStampedInfo fDimFtmCounter;
+
+    DimStampedInfo fDimFadWriteStats;
+    DimStampedInfo fDimFadStartRun;
+    DimStampedInfo fDimFadRuns;
+    DimStampedInfo fDimFadEvents;
+    DimStampedInfo fDimFadRawData;
+    DimStampedInfo fDimFadEventData;
+    DimStampedInfo fDimFadConnections;
+    DimStampedInfo fDimFadFwVersion;
+    DimStampedInfo fDimFadRunNumber;
+    DimStampedInfo fDimFadDNA;
+    DimStampedInfo fDimFadTemperature;
+    DimStampedInfo fDimFadPrescaler;
+    DimStampedInfo fDimFadRefClock;
+    DimStampedInfo fDimFadRoi;
+    DimStampedInfo fDimFadDac;
+    DimStampedInfo fDimFadDrsCalibration;
+    DimStampedInfo fDimFadStatus;
+    DimStampedInfo fDimFadStatistics1;
+    //DimStampedInfo fDimFadStatistics2;
+    DimStampedInfo fDimFadFileFormat;
+
+    DimStampedInfo fDimFscTemp;
+    DimStampedInfo fDimFscVolt;
+    DimStampedInfo fDimFscCurrent;
+    DimStampedInfo fDimFscHumidity;
+
+    DimStampedInfo fDimFeedbackCalibration;
+    DimStampedInfo fDimFeedbackCalibrated;
+
+    DimStampedInfo fDimBiasNominal;
+    DimStampedInfo fDimBiasVolt;
+    DimStampedInfo fDimBiasDac;
+    DimStampedInfo fDimBiasCurrent;
+
+    DimStampedInfo fDimRateScan;
+
+    DimStampedInfo fDimMagicWeather;
+
+    map<string, DimInfo*> fServices;
+
+    // ========================== LED Colors ================================
+
+    enum LedColor_t
+    {
+        kLedRed,
+        kLedGreen,
+        kLedGreenWarn,
+        kLedGreenCheck,
+        kLedGreenBar,
+        kLedYellow,
+        kLedOrange,
+        kLedGray,
+        kLedWarnBorder,
+        kLedWarn,
+        kLedWarnTriangleBorder,
+        kLedWarnTriangle,
+        kLedInProgress,
+    };
+
+    void SetLedColor(QPushButton *button, LedColor_t col, const Time &t)
+    {
+        switch (col)
+        {
+        case kLedRed:
+            button->setIcon(QIcon(":/Resources/icons/red circle 1.png"));
+            break;
+
+        case kLedGreen:
+            button->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
+            break;
+
+        case kLedGreenBar:
+            button->setIcon(QIcon(":/Resources/icons/green bar.png"));
+            break;
+
+        case kLedGreenWarn:
+            button->setIcon(QIcon(":/Resources/icons/green warn.png"));
+            break;
+
+        case kLedGreenCheck:
+            button->setIcon(QIcon(":/Resources/icons/green check.png"));
+            break;
+
+        case kLedYellow:
+            button->setIcon(QIcon(":/Resources/icons/yellow circle 1.png"));
+            break;
+
+        case kLedOrange:
+            button->setIcon(QIcon(":/Resources/icons/orange circle 1.png"));
+            break;
+
+        case kLedGray:
+            button->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
+            break;
+
+        case kLedWarnBorder:
+            button->setIcon(QIcon(":/Resources/icons/warning 1.png"));
+            break;
+
+        case kLedWarn:
+            button->setIcon(QIcon(":/Resources/icons/warning 2.png"));
+            break;
+
+        case kLedWarnTriangle:
+            button->setIcon(QIcon(":/Resources/icons/warning 3.png"));
+            break;
+
+        case kLedWarnTriangleBorder:
+            button->setIcon(QIcon(":/Resources/icons/warning 4.png"));
+            break;
+
+        case kLedInProgress:
+            button->setIcon(QIcon(":/Resources/icons/in progress.png"));
+            break;
+
+        }
+
+        //button->setToolTip("Last change: "+QDateTime::currentDateTimeUtc().toString()+" UTC");
+        button->setToolTip(("Last change: "+t.GetAsStr()+" (UTC)").c_str());
+    }
+
+    // ===================== Services and Commands ==========================
+
+    QStandardItem *AddServiceItem(const string &server, const string &service, bool iscmd)
+    {
+        QListView *servers     = iscmd ? fDimCmdServers     : fDimSvcServers;
+        QListView *services    = iscmd ? fDimCmdCommands    : fDimSvcServices;
+        QListView *description = iscmd ? fDimCmdDescription : fDimSvcDescription;
+
+        QStandardItemModel *m = dynamic_cast<QStandardItemModel*>(servers->model());
+        if (!m)
+        {
+            m = new QStandardItemModel(this);
+            servers->setModel(m);
+            services->setModel(m);
+            description->setModel(m);
+        }
+
+        QList<QStandardItem*> l = m->findItems(server.c_str());
+
+        if (l.size()>1)
+        {
+            cout << "hae" << endl;
+            return 0;
+        }
+
+        QStandardItem *col = l.size()==0 ? NULL : l[0];
+
+        if (!col)
+        {
+            col = new QStandardItem(server.c_str());
+            m->appendRow(col);
+
+            if (!services->rootIndex().isValid())
+            {
+                services->setRootIndex(col->index());
+                servers->setCurrentIndex(col->index());
+            }
+        }
+
+        QStandardItem *item = 0;
+        for (int i=0; i<col->rowCount(); i++)
+        {
+            QStandardItem *coli = col->child(i);
+            if (coli->text().toStdString()==service)
+                return coli;
+        }
+
+        item = new QStandardItem(service.c_str());
+        col->appendRow(item);
+        col->sortChildren(0);
+
+        if (!description->rootIndex().isValid())
+        {
+            description->setRootIndex(item->index());
+            services->setCurrentIndex(item->index());
+        }
+
+        if (!iscmd)
+            item->setCheckable(true);
+
+        return item;
+    }
+
+    void AddDescription(QStandardItem *item, const vector<Description> &vec)
+    {
+        if (!item)
+            return;
+        if (vec.size()==0)
+            return;
+
+        item->setToolTip(vec[0].comment.c_str());
+
+        const string str = Description::GetHtmlDescription(vec);
+
+        QStandardItem *desc = new QStandardItem(str.c_str());
+        desc->setSelectable(false);
+        item->setChild(0, 0, desc);
+    }
+
+    void AddServer(const string &s)
+    {
+        DimNetwork::AddServer(s);
+
+        const State state = GetState(s, GetCurrentState(s));
+
+        QApplication::postEvent(this,
+           new FunctionEvent(bind(&FactGui::handleAddServer, this, s, state)));
+    }
+
+    void AddService(const string &server, const string &service, const string &fmt, bool iscmd)
+    {
+        const vector<Description> v = GetDescription(server, service);
+
+        QApplication::postEvent(this,
+           new FunctionEvent(bind(&FactGui::handleAddService, this, server, service, fmt, iscmd, v)));
+    }
+
+    void RemoveService(string server, string service, bool iscmd)
+    {
+        UnsubscribeService(server+'/'+service, true);
+
+        QApplication::postEvent(this,
+           new FunctionEvent(bind(&FactGui::handleRemoveService, this, server, service, iscmd)));
+    }
+
+    void RemoveAllServices(const string &server)
+    {
+        UnsubscribeAllServices(server);
+
+        QApplication::postEvent(this,
+           new FunctionEvent(bind(&FactGui::handleRemoveAllServices, this, server)));
+    }
+
+    void AddDescription(const string &server, const string &service, const vector<Description> &vec)
+    {
+        const bool iscmd = IsCommand(server, service)==true;
+
+        QApplication::postEvent(this,
+           new FunctionEvent(bind(&FactGui::handleAddDescription, this, server, service, vec, iscmd)));
+    }
+
+    // ======================================================================
+
+    void handleAddServer(const string &server, const State &state)
+    {
+        handleStateChanged(Time(), server, state);
+    }
+
+    void handleAddService(const string &server, const string &service, const string &/*fmt*/, bool iscmd, const vector<Description> &vec)
+    {
+        QStandardItem *item = AddServiceItem(server, service, iscmd);
+        AddDescription(item, vec);
+    }
+
+    void handleRemoveService(const string &server, const string &service, bool iscmd)
+    {
+        QListView *servers = iscmd ? fDimCmdServers : fDimSvcServers;
+
+        QStandardItemModel *m = dynamic_cast<QStandardItemModel*>(servers->model());
+        if (!m)
+            return;
+
+        QList<QStandardItem*> l = m->findItems(server.c_str());
+        if (l.size()!=1)
+            return;
+
+        for (int i=0; i<l[0]->rowCount(); i++)
+        {
+            QStandardItem *row = l[0]->child(i);
+            if (row->text().toStdString()==service)
+            {
+                l[0]->removeRow(row->index().row());
+                return;
+            }
+        }
+    }
+
+    void handleRemoveAllServices(const string &server)
+    {
+        handleStateChanged(Time(), server, State(-2, "Offline", "No connection via DIM."));
+
+        QStandardItemModel *m = 0;
+        if ((m=dynamic_cast<QStandardItemModel*>(fDimCmdServers->model())))
+        {
+            QList<QStandardItem*> l = m->findItems(server.c_str());
+            if (l.size()==1)
+                m->removeRow(l[0]->index().row());
+        }
+
+        if ((m = dynamic_cast<QStandardItemModel*>(fDimSvcServers->model())))
+        {
+            QList<QStandardItem*> l = m->findItems(server.c_str());
+            if (l.size()==1)
+                m->removeRow(l[0]->index().row());
+        }
+    }
+
+    void handleAddDescription(const string &server, const string &service, const vector<Description> &vec, bool iscmd)
+    {
+        QStandardItem *item = AddServiceItem(server, service, iscmd);
+        AddDescription(item, vec);
+    }
+
+    // ======================================================================
+
+    void SubscribeService(const string &service)
+    {
+        if (fServices.find(service)!=fServices.end())
+        {
+            cerr << "ERROR - We are already subscribed to " << service << endl;
+            return;
+        }
+
+        fServices[service] = new DimStampedInfo(service.c_str(), (void*)NULL, 0, this);
+    }
+
+    void UnsubscribeService(const string &service, bool allow_unsubscribed=false)
+    {
+        const map<string,DimInfo*>::iterator i=fServices.find(service);
+
+        if (i==fServices.end())
+        {
+            if (!allow_unsubscribed)
+                cerr << "ERROR - We are not subscribed to " << service << endl;
+            return;
+        }
+
+        delete i->second;
+
+        fServices.erase(i);
+    }
+
+    void UnsubscribeAllServices(const string &server)
+    {
+        for (map<string,DimInfo*>::iterator i=fServices.begin();
+             i!=fServices.end(); i++)
+            if (i->first.substr(0, server.length()+1)==server+'/')
+            {
+                delete i->second;
+                fServices.erase(i);
+            }
+    }
+
+    // ======================= DNS ==========================================
+
+    uint32_t fDimVersion;
+
+    void UpdateGlobalStatus()
+    {
+        ostringstream dns;
+        dns << (fDimVersion==0?"No connection":"Connection");
+        dns << " to DIM DNS (" << getenv("DIM_DNS_NODE") << ")";
+        dns << (fDimVersion==0?".":" established");
+
+        ostringstream str;
+        str << "V" << fDimVersion/100 << 'r' << fDimVersion%100;
+
+        LedColor_t led = kLedGreen;
+        if (fDimVersion>0)
+        {
+            dns << fixed << setprecision(1) << right;
+            if (fFreeSpaceLogger!=UINT64_MAX)
+                dns << "<pre> * Data logger:   " << setw(7) << fFreeSpaceLogger*1e-7 << " GB</pre>";
+            if (fFreeSpaceData!=UINT64_MAX)
+                dns << "<pre> * Event Builder: " << setw(7) << fFreeSpaceData*1e-7 << " GB</pre>";
+
+            if (fFreeSpaceLogger<500000000 || fFreeSpaceData<500000000)
+                led = kLedGreenWarn;
+            if (fFreeSpaceLogger<200000000 || fFreeSpaceData<200000000)
+                led = kLedWarnTriangleBorder;
+
+            if (led!=kLedGreen)
+                str << " (Disk space!)";
+        }
+
+        fStatusDNSLabel->setToolTip(dns.str().c_str());
+
+        SetLedColor(fStatusDNSLed, fDimVersion==0 ? kLedRed : led, Time());
+
+        fStatusDNSLabel->setText(fDimVersion==0?"Offline":str.str().c_str());
+    }
+
+    void handleDimDNS(const DimData &d)
+    {
+        fDimVersion = d.size()!=4 ? 0 : d.get<uint32_t>();
+
+        UpdateGlobalStatus();
+
+        fShutdown->setEnabled(fDimVersion!=0);
+        fShutdownAll->setEnabled(fDimVersion!=0);
+    }
+
+
+    // ======================= Logger =======================================
+
+    uint64_t fFreeSpaceLogger;
+
+    void handleLoggerStats(const DimData &d)
+    {
+        const bool connected = d.size()!=0;
+
+        fLoggerET->setEnabled(connected);
+        fLoggerRate->setEnabled(connected);
+        fLoggerWritten->setEnabled(connected);
+        fLoggerFreeSpace->setEnabled(connected);
+        fLoggerSpaceLeft->setEnabled(connected);
+
+        fFreeSpaceLogger = UINT64_MAX;
+        UpdateGlobalStatus();
+
+        if (!connected)
+            return;
+
+        const uint64_t *vals = d.ptr<uint64_t>();
+
+        const size_t space   = vals[0];
+        const size_t written = vals[1];
+        const size_t rate    = float(vals[2])/vals[3];
+
+        fFreeSpaceLogger = space;
+        UpdateGlobalStatus();
+
+        fLoggerFreeSpace->setSuffix(" MB");
+        fLoggerFreeSpace->setDecimals(0);
+        fLoggerFreeSpace->setValue(space*1e-6);
+
+        if (space>   1000000)  // > 1GB
+        {
+            fLoggerFreeSpace->setSuffix(" GB");
+            fLoggerFreeSpace->setDecimals(2);
+            fLoggerFreeSpace->setValue(space*1e-9);
+        }
+        if (space>=  3000000)  // >= 3GB
+        {
+            fLoggerFreeSpace->setSuffix(" GB");
+            fLoggerFreeSpace->setDecimals(1);
+            fLoggerFreeSpace->setValue(space*1e-9);
+        }
+        if (space>=100000000)  // >= 100GB
+        {
+            fLoggerFreeSpace->setSuffix(" GB");
+            fLoggerFreeSpace->setDecimals(0);
+            fLoggerFreeSpace->setValue(space*1e-9);
+        }
+
+        fLoggerET->setTime(QTime().addSecs(rate>0?space/rate:0));
+        fLoggerRate->setValue(rate*1e-3); // kB/s
+        fLoggerWritten->setValue(written*1e-6);
+
+        fLoggerRate->setSuffix(" kB/s");
+        fLoggerRate->setDecimals(2);
+        fLoggerRate->setValue(rate);
+        if (rate>   2)  // > 2kB/s
+        {
+            fLoggerRate->setSuffix(" kB/s");
+            fLoggerRate->setDecimals(1);
+            fLoggerRate->setValue(rate);
+        }
+        if (rate>=100)  // >100kB/s
+        {
+            fLoggerRate->setSuffix(" kB/s");
+            fLoggerRate->setDecimals(0);
+            fLoggerRate->setValue(rate);
+        }
+        if (rate>=1000)  // >100kB/s
+        {
+            fLoggerRate->setSuffix(" MB/s");
+            fLoggerRate->setDecimals(2);
+            fLoggerRate->setValue(rate*1e-3);
+        }
+        if (rate>=10000)  // >1MB/s
+        {
+            fLoggerRate->setSuffix(" MB/s");
+            fLoggerRate->setDecimals(1);
+            fLoggerRate->setValue(rate*1e-3);
+        }
+        if (rate>=100000)  // >10MB/s
+        {
+            fLoggerRate->setSuffix(" MB/s");
+            fLoggerRate->setDecimals(0);
+            fLoggerRate->setValue(rate*1e-3);
+        }
+
+        if (space/1000000>static_cast<size_t>(fLoggerSpaceLeft->maximum()))
+            fLoggerSpaceLeft->setValue(fLoggerSpaceLeft->maximum());  // GB
+        else
+            fLoggerSpaceLeft->setValue(space/1000000);  // MB
+    }
+
+    void handleLoggerFilenameNight(const DimData &d)
+    {
+        const bool connected = d.size()!=0;
+
+        fLoggerFilenameNight->setEnabled(connected);
+        if (!connected)
+            return;
+
+        fLoggerFilenameNight->setText(d.c_str()+4);
+
+        const uint32_t files = d.get<uint32_t>();
+
+        SetLedColor(fLoggerLedLog,  files&1 ? kLedGreen : kLedGray, d.time);
+        SetLedColor(fLoggerLedRep,  files&2 ? kLedGreen : kLedGray, d.time);
+        SetLedColor(fLoggerLedFits, files&4 ? kLedGreen : kLedGray, d.time);
+    }
+
+    void handleLoggerFilenameRun(const DimData &d)
+    {
+        const bool connected = d.size()!=0;
+
+        fLoggerFilenameRun->setEnabled(connected);
+        if (!connected)
+            return;
+
+        fLoggerFilenameRun->setText(d.c_str()+4);
+
+        const uint32_t files = d.get<uint32_t>();
+
+        SetLedColor(fLoggerLedLog,  files&1 ? kLedGreen : kLedGray, d.time);
+        SetLedColor(fLoggerLedRep,  files&2 ? kLedGreen : kLedGray, d.time);
+        SetLedColor(fLoggerLedFits, files&4 ? kLedGreen : kLedGray, d.time);
+    }
+
+    void handleLoggerNumSubs(const DimData &d)
+    {
+        const bool connected = d.size()!=0;
+
+        fLoggerSubscriptions->setEnabled(connected);
+        fLoggerOpenFiles->setEnabled(connected);
+        if (!connected)
+            return;
+
+        const uint32_t *vals = d.ptr<uint32_t>();
+
+        fLoggerSubscriptions->setValue(vals[0]);
+        fLoggerOpenFiles->setValue(vals[1]);
+    }
+
+
+    // ===================== All ============================================
+
+    bool CheckSize(const DimData &d, size_t sz, bool print=true) const
+    {
+        if (d.size()==0)
+            return false;
+
+        if (d.size()!=sz)
+        {
+            if (print)
+                cerr << "Size mismatch in " << d.name << ": Found=" << d.size() << " Expected=" << sz << endl;
+            return false;
+        }
+
+        return true;
+    }
+
+    // ===================== FAD ============================================
+
+    uint64_t fFreeSpaceData;
+
+    void handleFadWriteStats(const DimData &d)
+    {
+        const bool connected = d.size()!=0;
+
+        fEvtBuilderET->setEnabled(connected);
+        fEvtBuilderRate->setEnabled(connected);
+        fEvtBuilderWritten->setEnabled(connected);
+        fEvtBuilderFreeSpace->setEnabled(connected);
+        fEvtBuilderSpaceLeft->setEnabled(connected);
+
+        fFreeSpaceData = UINT64_MAX;
+        UpdateGlobalStatus();
+
+        if (!connected)
+            return;
+
+        const uint64_t *vals = d.ptr<uint64_t>();
+
+        const size_t space   = vals[0];
+        const size_t written = vals[1];
+        const size_t rate    = float(vals[2])/vals[3];
+
+        fFreeSpaceData = space;
+        UpdateGlobalStatus();
+
+        fEvtBuilderFreeSpace->setSuffix(" MB");
+        fEvtBuilderFreeSpace->setDecimals(0);
+        fEvtBuilderFreeSpace->setValue(space*1e-6);
+
+        if (space>   1000000)  // > 1GB
+        {
+            fEvtBuilderFreeSpace->setSuffix(" GB");
+            fEvtBuilderFreeSpace->setDecimals(2);
+            fEvtBuilderFreeSpace->setValue(space*1e-9);
+        }
+        if (space>=  3000000)  // >= 3GB
+        {
+            fEvtBuilderFreeSpace->setSuffix(" GB");
+            fEvtBuilderFreeSpace->setDecimals(1);
+            fEvtBuilderFreeSpace->setValue(space*1e-9);
+        }
+        if (space>=100000000)  // >= 100GB
+        {
+            fEvtBuilderFreeSpace->setSuffix(" GB");
+            fEvtBuilderFreeSpace->setDecimals(0);
+            fEvtBuilderFreeSpace->setValue(space*1e-9);
+        }
+
+        fEvtBuilderET->setTime(QTime().addSecs(rate>0?space/rate:0));
+        fEvtBuilderRate->setValue(rate*1e-3); // kB/s
+        fEvtBuilderWritten->setValue(written*1e-6);
+
+        fEvtBuilderRate->setSuffix(" kB/s");
+        fEvtBuilderRate->setDecimals(2);
+        fEvtBuilderRate->setValue(rate);
+        if (rate>   2)  // > 2kB/s
+        {
+            fEvtBuilderRate->setSuffix(" kB/s");
+            fEvtBuilderRate->setDecimals(1);
+            fEvtBuilderRate->setValue(rate);
+        }
+        if (rate>=100)  // >100kB/s
+        {
+            fEvtBuilderRate->setSuffix(" kB/s");
+            fEvtBuilderRate->setDecimals(0);
+            fEvtBuilderRate->setValue(rate);
+        }
+        if (rate>=1000)  // >100kB/s
+        {
+            fEvtBuilderRate->setSuffix(" MB/s");
+            fEvtBuilderRate->setDecimals(2);
+            fEvtBuilderRate->setValue(rate*1e-3);
+        }
+        if (rate>=10000)  // >1MB/s
+        {
+            fEvtBuilderRate->setSuffix(" MB/s");
+            fEvtBuilderRate->setDecimals(1);
+            fEvtBuilderRate->setValue(rate*1e-3);
+        }
+        if (rate>=100000)  // >10MB/s
+        {
+            fEvtBuilderRate->setSuffix(" MB/s");
+            fEvtBuilderRate->setDecimals(0);
+            fEvtBuilderRate->setValue(rate*1e-3);
+        }
+
+        if (space/1000000>static_cast<size_t>(fEvtBuilderSpaceLeft->maximum()))
+            fEvtBuilderSpaceLeft->setValue(fEvtBuilderSpaceLeft->maximum());  // GB
+        else
+            fEvtBuilderSpaceLeft->setValue(space/1000000);  // MB
+    }
+
+    void handleFadRuns(const DimData &d)
+    {
+        if (d.size()==0)
+            return;
+
+        if (d.size()<8)
+        {
+            cerr << "Size mismatch in " << d.name << ": Found=" << d.size() << " Expected>=8" << endl;
+            return;
+        }
+
+        const uint32_t *ptr = d.ptr<uint32_t>();
+
+        fEvtBldLastOpened->setValue(ptr[0]);
+        fEvtBldLastClosed->setValue(ptr[1]);
+
+        if (d.size()>=8)
+            fEvtBldFilename->setText(d.ptr<char>(8));
+
+        fEvtBldLastOpened->setEnabled(d.qos);
+        fEvtBldLastClosed->setEnabled(d.qos);
+        fEvtBldFilename->setEnabled(d.qos);
+    }
+
+    void handleFadStartRun(const DimData &d)
+    {
+        if (!CheckSize(d, 16))
+            return;
+
+        const int64_t *runs = d.ptr<int64_t>();
+
+        fFadRunNoCur->setValue(runs[0]);
+        fFadRunNoNext->setValue(runs[1]);
+        fFadRunNoCur->setEnabled(runs[0]>=0);
+        //fMcpStopRun->setEnabled(runs[0]>=0);
+
+    }
+
+    void handleFadEvents(const DimData &d)
+    {
+        if (!CheckSize(d, 16))
+            return;
+
+        const uint32_t *ptr = d.ptr<uint32_t>();
+
+        fEvtsSuccessCurRun->setValue(ptr[0]);
+        fEvtsSuccessTotal->setValue(ptr[1]);
+        fEvtBldEventId->setValue(ptr[2]);
+        fFadEvtCounter->setValue(ptr[2]);
+        fEvtBldTriggerId->setValue(ptr[3]);
+    }
+
+    void handleFadTemperature(const DimData &d)
+    {
+        if (d.size()==0)
+        {
+            fFadTempMin->setEnabled(false);
+            fFadTempMax->setEnabled(false);
+            SetLedColor(fFadLedTemp, kLedGray, d.time);
+            return;
+        }
+
+        if (!CheckSize(d, sizeof(uint16_t)+160*sizeof(float)))
+            return;
+
+        const float *ptr = d.ptr<float>(2);
+
+        fFadTempMin->setEnabled(true);
+        fFadTempMax->setEnabled(true);
+
+        float min =  FLT_MAX;
+        float max = -FLT_MAX;
+
+        vector<float> mn(40,  FLT_MAX);
+        vector<float> mx(40, -FLT_MAX);
+        for (int i=0; i<160; i++)
+        {
+            if (!finite(ptr[i]))
+                continue;
+
+            if (ptr[i]<min)
+                min = ptr[i];
+            if (ptr[i]>max)
+                max = ptr[i];
+
+            if (ptr[i]<mn[i/4])
+                mn[i/4] = ptr[i];
+            if (ptr[i]>mx[i/4])
+                mx[i/4] = ptr[i];
+        }
+
+        fFadTempMin->setValue(min);
+        fFadTempMax->setValue(max);
+
+        handleFadToolTip(d.time, fFadTempMin, mn.data());
+        handleFadToolTip(d.time, fFadTempMax, mx.data());
+    }
+
+    void handleFadRefClock(const DimData &d)
+    {
+        if (d.size()==0)
+        {
+            fFadRefClockMin->setEnabled(false);
+            fFadRefClockMax->setEnabled(false);
+            SetLedColor(fFadLedRefClock, kLedGray, d.time);
+            return;
+        }
+
+        if (!CheckSize(d, sizeof(uint16_t)+40*sizeof(float)))
+            return;
+
+        const float *ptr = d.ptr<float>(2);
+
+        fFadRefClockMin->setEnabled(true);
+        fFadRefClockMax->setEnabled(true);
+
+        float min =  FLT_MAX;
+        float max = -FLT_MAX;
+        for (int i=0; i<40; i++)
+        {
+            if (!finite(ptr[i]))
+                continue;
+
+            if (ptr[i]<min)
+                min = ptr[i];
+            if (ptr[i]>max)
+                max = ptr[i];
+        }
+
+        fFadRefClockMin->setValue(min);
+        fFadRefClockMax->setValue(max);
+
+        const int64_t diff = int64_t(max) - int64_t(min);
+
+        SetLedColor(fFadLedRefClock, abs(diff)>3?kLedRed:kLedGreen, d.time);
+
+        handleFadToolTip(d.time, fFadLedRefClock, ptr);
+    }
+
+    void handleFadRoi(const DimData &d)
+    {
+        if (d.size()==0)
+        {
+            fFadRoi->setEnabled(false);
+            fFadRoiCh9->setEnabled(false);
+            //SetLedColor(fFadLedRoi, kLedGray, d.time);
+            return;
+        }
+
+        if (!CheckSize(d, 2*sizeof(uint16_t)))
+            return;
+
+        const uint16_t *ptr = d.ptr<uint16_t>();
+
+        fFadRoi->setEnabled(true);
+	fFadRoiCh9->setEnabled(true);
+
+	fFadRoi->setValue(ptr[0]);
+	fFadRoiCh9->setValue(ptr[1]);
+
+        //SetLedColor(fFadLedRoi, kLedGray, d.time);
+    }
+
+    void handleDac(QPushButton *led, QSpinBox *box, const DimData &d, int idx)
+    {
+        if (d.size()==0)
+        {
+            box->setEnabled(false);
+            SetLedColor(led, kLedGray, d.time);
+            return;
+        }
+
+        const uint16_t *ptr = d.ptr<uint16_t>()+idx*42;
+
+        box->setEnabled(true);
+        box->setValue(ptr[40]==ptr[41]?ptr[40]:0);
+
+        SetLedColor(led, ptr[40]==ptr[41]?kLedGreen:kLedOrange, d.time);
+        handleFadToolTip(d.time, led, ptr);
+    }
+
+    void handleFadDac(const DimData &d)
+    {
+        if (!CheckSize(d, 8*42*sizeof(uint16_t)) && !d.size()==0)
+            return;
+
+        handleDac(fFadLedDac0, fFadDac0, d, 0);
+        handleDac(fFadLedDac1, fFadDac1, d, 1);
+        handleDac(fFadLedDac2, fFadDac2, d, 2);
+        handleDac(fFadLedDac3, fFadDac3, d, 3);
+        handleDac(fFadLedDac4, fFadDac4, d, 4);
+        handleDac(fFadLedDac5, fFadDac5, d, 5);
+        handleDac(fFadLedDac6, fFadDac6, d, 6);
+        handleDac(fFadLedDac7, fFadDac7, d, 7);
+    }
+
+    EVENT *fEventData;
+
+    void DrawHorizontal(TH1 *hf, double xmax, TH1 &h, double scale)
+    {
+        for (Int_t i=1;i<=h.GetNbinsX();i++)
+        {
+            if (h.GetBinContent(i)<0.5 || h.GetBinContent(i)>h.GetEntries()-0.5)
+                continue;
+
+            TBox * box=new TBox(xmax, h.GetBinLowEdge(i),
+                                xmax+h.GetBinContent(i)*scale,
+                                h.GetBinLowEdge(i+1));
+
+            box->SetFillStyle(0);
+            box->SetLineColor(h.GetLineColor());
+            box->SetLineStyle(kSolid);
+            box->SetBit(kCannotPick|kNoContextMenu);
+            //box->Draw();
+
+            hf->GetListOfFunctions()->Add(box);
+        }
+    }
+
+    void DisplayEventData()
+    {
+        if (!fEventData)
+            return;
+
+#ifdef HAVE_ROOT
+	TCanvas *c = fAdcDataCanv->GetCanvas();
+
+        TH1 *hf = dynamic_cast<TH1*>(c->FindObject("Frame"));
+        TH1 *h  = dynamic_cast<TH1*>(c->FindObject("EventData"));
+	TH1 *d0 = dynamic_cast<TH1*>(c->FindObject("DrsCalib0"));
+	TH1 *d1 = dynamic_cast<TH1*>(c->FindObject("DrsCalib1"));
+        TH1 *d2 = dynamic_cast<TH1*>(c->FindObject("DrsCalib2"));
+
+        const int roi = fAdcPhysical->isChecked() ? 1024 : (fEventData->Roi>0 ? fEventData->Roi : 1);
+
+        if ((hf && hf->GetNbinsX()!=roi) ||
+            (dynamic_cast<TH2*>(h) && !fAdcPersistent->isChecked()) ||
+            (!dynamic_cast<TH2*>(h) && fAdcPersistent->isChecked()))
+        {
+            delete hf;
+            delete h;
+            delete d0;
+            delete d1;
+            delete d2;
+            d0 = 0;
+            d1 = 0;
+            d2 = 0;
+	    hf = 0;
+        }
+
+	if (!hf)
+        {
+            hf = new TH1F("Frame", "", roi, -0.5, roi-0.5);
+            hf->SetDirectory(0);
+            hf->SetBit(kCanDelete);
+            hf->SetStats(kFALSE);
+            hf->SetYTitle("Voltage [mV]");
+            hf->GetXaxis()->CenterTitle();
+            hf->GetYaxis()->CenterTitle();
+            hf->SetMinimum(-1250);
+            hf->SetMaximum(2150);
+
+            if (!fAdcPersistent->isChecked())
+                h = new TH1F("EventData", "", roi, -0.5, roi-0.5);
+            else
+            {
+                h = new TH2F("EventData", "", roi, -0.5, roi-0.5, 6751, -2350.5*2000/4096, 4400.5*2000/4096);
+                h->SetContour(50);
+                gStyle->SetPalette(1, 0);
+            }
+
+            h->SetDirectory(0);
+            h->SetBit(kCanDelete);
+            h->SetMarkerStyle(kFullDotMedium);
+            h->SetMarkerColor(kBlue);
+
+            c->GetListOfPrimitives()->Add(hf, "");
+
+            if (dynamic_cast<TH2*>(h))
+                c->GetListOfPrimitives()->Add(h, "col same");
+        }
+
+        if (d0 && !(fDrsCalibBaselineOn->isChecked() && fDrsCalibBaseline->value()>0))
+        {
+            delete d0;
+            d0 = 0;
+        }
+        if (d1 && !(fDrsCalibGainOn->isChecked() && fDrsCalibGain->value()>0))
+        {
+            delete d1;
+            d1 = 0;
+        }
+        if (d2 && !(fDrsCalibTrgOffsetOn->isChecked() && fDrsCalibTrgOffset->value()>0))
+        {
+            delete d2;
+            d2 = 0;
+        }
+
+        if (!d0 && fDrsCalibBaselineOn->isChecked() && fDrsCalibBaseline->value()>0)
+        {
+            d0 = new TH1F("DrsCalib0", "", roi, -0.5, roi-0.5);
+	    d0->SetDirectory(0);
+            d0->SetBit(kCanDelete);
+	    d0->SetMarkerStyle(kFullDotSmall);
+	    d0->SetMarkerColor(kRed);
+	    d0->SetLineColor(kRed);
+            c->GetListOfPrimitives()->Add(d0, "PEX0same");
+        }
+
+        if (!d1 && fDrsCalibGainOn->isChecked() && fDrsCalibGain->value()>0)
+        {
+            d1 = new TH1F("DrsCalib1", "", roi, -0.5, roi-0.5);
+	    d1->SetDirectory(0);
+            d1->SetBit(kCanDelete);
+	    d1->SetMarkerStyle(kFullDotSmall);
+	    d1->SetMarkerColor(kMagenta);
+            d1->SetLineColor(kMagenta);
+            c->GetListOfPrimitives()->Add(d1, "PEX0same");
+        }
+
+        if (!d2 && fDrsCalibTrgOffsetOn->isChecked() && fDrsCalibTrgOffset->value()>0)
+        {
+            d2 = new TH1F("DrsCalib2", "", roi, -0.5, roi-0.5);
+            d2->SetDirectory(0);
+            d2->SetBit(kCanDelete);
+	    d2->SetMarkerStyle(kFullDotSmall);
+	    d2->SetMarkerColor(kGreen);
+            d2->SetLineColor(kGreen);
+            c->GetListOfPrimitives()->Add(d2, "PEX0same");
+        }
+
+        if (!dynamic_cast<TH2*>(h) && !c->GetListOfPrimitives()->FindObject(h))
+            c->GetListOfPrimitives()->Add(h, "PLsame");
+
+        // -----------------------------------------------------------
+
+        const uint32_t p =
+            fAdcChannel->value()    +
+            fAdcChip->value()   *  9+
+            fAdcBoard->value()  * 36+
+            fAdcCrate->value()  *360;
+
+        ostringstream str;
+        str << "CBPX = " << fAdcCrate->value() << '|' << fAdcBoard->value() << '|' << fAdcChip->value() << '|' << fAdcChannel->value() << " (" << p << ")";
+        str << "   EventNum = " << fEventData->EventNum;
+        str << "   TriggerNum = " << fEventData->TriggerNum;
+        str << "   TriggerType = " << fEventData->TriggerType;
+        str << "   BoardTime = " << fEventData->BoardTime[fAdcBoard->value()+fAdcCrate->value()*10];
+        str << "   (" << Time(fEventData->PCTime, fEventData->PCUsec) << ")";
+        hf->SetTitle(str.str().c_str());
+        str.str("");
+        str << "ADC Pipeline (start cell: " << fEventData->StartPix[p] << ")";
+	hf->SetXTitle(str.str().c_str());
+
+        // -----------------------------------------------------------
+
+        const int16_t start = fEventData->StartPix[p];
+
+        fDrsCalibBaseline->setEnabled(fDrsCalibBaseline->value()>0);
+        fDrsCalibGain->setEnabled(fDrsCalibGain->value()>0);
+        fDrsCalibTrgOffset->setEnabled(fDrsCalibTrgOffset->value()>0);
+        fDrsCalibROI->setEnabled(fDrsCalibROI->value()>0);
+
+        fDrsCalibBaseline2->setEnabled(fDrsCalibBaseline->value()>0);
+        fDrsCalibGain2->setEnabled(fDrsCalibGain->value()>0);
+        fDrsCalibTrgOffset2->setEnabled(fDrsCalibTrgOffset->value()>0);
+        fDrsCalibROI2->setEnabled(fDrsCalibROI->value()>0);
+
+        SetLedColor(fFadLedDrsBaseline, fDrsCalibBaseline->value()>0 ?kLedGreen:kLedGray, Time());
+        SetLedColor(fFadLedDrsGain,     fDrsCalibGain->value()>0     ?kLedGreen:kLedGray, Time());
+        SetLedColor(fFadLedDrsTrgOff,   fDrsCalibTrgOffset->value()>0?kLedGreen:kLedGray, Time());
+
+        if (d0)//fDrsCalibBaseline->value()==0  || start<0)
+            d0->Reset();
+        if (d1)//fDrsCalibGain->value()==0      || start<0)
+            d1->Reset();
+        if (d2)//fDrsCalibTrgOffset->value()==0 || start<0)
+            d2->Reset();
+
+        if (!dynamic_cast<TH2*>(h))
+            h->Reset();
+        if (d0)
+            d0->SetEntries(0);
+        if (d1)
+            d1->SetEntries(0);
+        if (d2)
+            d2->SetEntries(0);
+
+        for (int i=0; i<fEventData->Roi; i++)
+        {
+            // FIXME: physcial: i -> (i+start)%1024
+            // FIXME: logical:  i ->  i
+
+            const int ii = fAdcPhysical->isChecked() ? (i+start)%1024 : i;
+
+            //if (dynamic_cast<TH2*>(h))
+                h->Fill(ii, reinterpret_cast<float*>(fEventData->Adc_Data)[p*fEventData->Roi+i]);
+            //else
+            //    h->SetBinContent(i+1, reinterpret_cast<float*>(fEventData->Adc_Data)[p*fEventData->Roi+i]);
+            if (start<0)
+                continue;
+
+            if (d0)
+            {
+                d0->SetBinContent(ii+1, fDrsCalibration[1440*1024*0 + p*1024+(start+i)%1024]);
+                d0->SetBinError(ii+1,   fDrsCalibration[1440*1024*1 + p*1024+(start+i)%1024]);
+
+            }
+            if (d1)
+            {
+                d1->SetBinContent(ii+1, fDrsCalibration[1440*1024*2 + p*1024+(start+i)%1024]);
+                d1->SetBinError(ii+1,   fDrsCalibration[1440*1024*3 + p*1024+(start+i)%1024]);
+            }
+            if (d2)
+            {
+                d2->SetBinContent(ii+1, fDrsCalibration[1440*1024*4 + p*1024 + i]);
+                d2->SetBinError(ii+1,   fDrsCalibration[1440*1024*5 + p*1024 + i]);
+            }
+        }
+
+        // -----------------------------------------------------------
+        if (fAdcDynamicScale->isEnabled() && fAdcDynamicScale->isChecked())
+        {
+            h->SetMinimum();
+            h->SetMaximum();
+
+            hf->SetMinimum(h->GetMinimum());
+            hf->SetMaximum(h->GetMaximum());
+        }
+        if (fAdcManualScale->isEnabled() && fAdcManualScale->isChecked())
+	{
+            if (h->GetMinimumStored()==-1111)
+            {
+                h->SetMinimum(-1150);//-1026);
+                hf->SetMinimum(-1150);//-1026);
+            }
+            if (h->GetMaximumStored()==-1111)
+            {
+                h->SetMaximum(2150);//1025);
+                hf->SetMaximum(2150);//1025);
+            }
+        }
+
+        if (fAdcAutoScale->isEnabled() && fAdcAutoScale->isChecked())
+        {
+            h->SetMinimum();
+            h->SetMaximum();
+
+            if (h->GetMinimum()<hf->GetMinimum())
+                hf->SetMinimum(h->GetMinimum());
+            if (h->GetMaximum()>hf->GetMaximum())
+                hf->SetMaximum(h->GetMaximum());
+        }
+
+        if (dynamic_cast<TH2*>(h))
+        {
+            h->SetMinimum();
+            h->SetMaximum();
+        }
+
+        // -----------------------------------------------------------
+
+        const int imin = ceil(hf->GetMinimum());
+        const int imax = floor(hf->GetMaximum());
+
+        TH1S hd("", "", imax-imin+1, imin-0.5, imax+0.5);
+        hd.SetDirectory(0);
+        TH1S h0("", "", imax-imin+1, imin-0.5, imax+0.5);
+        h0.SetDirectory(0);
+        TH1S h1("", "", imax-imin+1, imin-0.5, imax+0.5);
+        h1.SetDirectory(0);
+        TH1S h2("", "", imax-imin+1, imin-0.5, imax+0.5);
+        h2.SetDirectory(0);
+        hd.SetLineColor(h->GetLineColor());
+        if (d0)
+            h0.SetLineColor(d0->GetLineColor());
+        if (d1)
+            h1.SetLineColor(d1->GetLineColor());
+        if (d2)
+            h2.SetLineColor(d2->GetLineColor());
+
+        for (int i=0; i<fEventData->Roi; i++)
+        {
+            if (!dynamic_cast<TH2*>(h))
+                hd.Fill(h->GetBinContent(i+1));
+            if (d0)
+                h0.Fill(d0->GetBinContent(i+1));
+            if (d1)
+                h1.Fill(d1->GetBinContent(i+1));
+            if (d2)
+                h2.Fill(d2->GetBinContent(i+1));
+        }
+
+        double mm = hd.GetMaximum(hd.GetEntries());
+        if (h0.GetMaximum(h0.GetEntries())>mm)
+            mm = h0.GetMaximum();
+        if (h1.GetMaximum(h1.GetEntries())>mm)
+            mm = h1.GetMaximum();
+        if (h2.GetMaximum(h2.GetEntries())>mm)
+            mm = h2.GetMaximum();
+
+        TIter Next(hf->GetListOfFunctions());
+        TObject *obj = 0;
+        while ((obj=Next()))
+            if (dynamic_cast<TBox*>(obj))
+                delete hf->GetListOfFunctions()->Remove(obj);
+
+        const double l = h->GetBinLowEdge(h->GetXaxis()->GetLast()+1);
+        const double m = c->GetX2();
+
+        const double scale = 0.9*(m-l)/mm;
+
+        DrawHorizontal(hf, l, h2, scale);
+        DrawHorizontal(hf, l, h1, scale);
+        DrawHorizontal(hf, l, h0, scale);
+        DrawHorizontal(hf, l, hd, scale);
+
+        // -----------------------------------------------------------
+
+	c->Modified();
+	c->Update();
+#endif
+    }
+
+    void handleFadRawData(const DimData &d)
+    {
+	if (d.size()==0)
+            return;
+
+        if (fAdcStop->isChecked())
+            return;
+
+	const EVENT &dat = d.ref<EVENT>();
+
+        if (d.size()<sizeof(EVENT))
+        {
+            cerr << "Size mismatch in " << d.name << ": Found=" << d.size() << " Expected>=" << sizeof(EVENT) << endl;
+            return;
+        }
+
+        if (d.size()!=sizeof(EVENT)+dat.Roi*4*1440+dat.Roi*4*160)
+        {
+            cerr << "Size mismatch in " << d.name << ": Found=" << d.size() << " Expected=" << dat.Roi*4*1440+sizeof(EVENT) << " [roi=" << dat.Roi << "]" << endl;
+            return;
+        }
+
+        delete [] reinterpret_cast<char*>(fEventData);
+        fEventData = reinterpret_cast<EVENT*>(new char[d.size()]);
+        memcpy(fEventData, d.ptr<void>(), d.size());
+
+        DisplayEventData();
+    }
+
+    void handleFadEventData(const DimData &d)
+    {
+        if (!CheckSize(d, 4*1440*sizeof(float)))
+            return;
+
+        if (fEventsStop->isChecked())
+            return;
+
+        const float *ptr = d.ptr<float>();
+
+        valarray<double> arr1(1440);
+        valarray<double> arr2(1440);
+        valarray<double> arr3(1440);
+        valarray<double> arr4(1440);
+
+        for (vector<PixelMapEntry>::const_iterator it=fPixelMap.begin(); it!=fPixelMap.end(); it++)
+        {
+            arr1[it->index] = ptr[0*1440+it->hw()];
+            arr2[it->index] = ptr[1*1440+it->hw()];
+            arr3[it->index] = ptr[2*1440+it->hw()];
+            arr4[it->index] = ptr[3*1440+it->hw()];
+        }
+
+        fEventCanv1->SetData(arr1);
+        fEventCanv2->SetData(arr2);
+        fEventCanv3->SetData(arr3);
+        fEventCanv4->SetData(arr4);
+
+        fEventCanv1->updateCamera();
+        fEventCanv2->updateCamera();
+        fEventCanv3->updateCamera();
+        fEventCanv4->updateCamera();
+    }
+
+    vector<float> fDrsCalibration;
+
+    void handleFadDrsCalibration(const DimData &d)
+    {
+        const size_t sz = 1024*1440*6+1024*160*2;
+
+        if (d.size()==0)
+        {
+            fDrsCalibBaseline->setValue(-1);
+            fDrsCalibGain->setValue(-1);
+            fDrsCalibTrgOffset->setValue(-1);
+            fDrsCalibROI->setValue(-1);
+
+            fDrsCalibBaseline2->setValue(-1);
+            fDrsCalibGain2->setValue(-1);
+            fDrsCalibTrgOffset2->setValue(-1);
+            fDrsCalibROI2->setValue(-1);
+
+            fDrsCalibration.assign(sz, 0);
+            DisplayEventData();
+            return;
+        }
+
+        if (!CheckSize(d, sz*sizeof(float)+4*sizeof(uint32_t)))
+            // Do WHAT?
+            return;
+
+        const uint32_t *run = d.ptr<uint32_t>();
+
+        fDrsCalibROI->setValue(run[0]);
+        fDrsCalibBaseline->setValue(run[1]);
+        fDrsCalibGain->setValue(run[2]);
+        fDrsCalibTrgOffset->setValue(run[3]);
+
+        fDrsCalibROI2->setValue(run[0]);
+        fDrsCalibBaseline2->setValue(run[1]);
+        fDrsCalibGain2->setValue(run[2]);
+        fDrsCalibTrgOffset2->setValue(run[3]);
+
+        const float *dat = d.ptr<float>(sizeof(uint32_t)*4);
+        fDrsCalibration.assign(dat, dat+sz);
+
+        DisplayEventData();
+    }
+
+//    vector<uint8_t> fFadConnections;
+
+    void handleFadConnections(const DimData &d)
+    {
+        if (!CheckSize(d, 41))
+        {
+            fStatusEventBuilderLabel->setText("Offline");
+            fStatusEventBuilderLabel->setToolTip("FADs or fadctrl seems to be offline.");
+            fGroupEthernet->setEnabled(false);
+            fGroupOutput->setEnabled(false);
+
+            SetLedColor(fStatusEventBuilderLed, kLedGray, d.time);
+            return;
+        }
+
+        const uint8_t *ptr = d.ptr<uint8_t>();
+
+        for (int i=0; i<40; i++)
+        {
+            const uint8_t stat1 = ptr[i]&3;
+            const uint8_t stat2 = ptr[i]>>3;
+
+            if (stat1==0 && stat2==0)
+            {
+                SetLedColor(fFadLED[i], kLedGray,   d.time);
+                continue;
+            }
+            if (stat1>=2 && stat2==8)
+            {
+                SetLedColor(fFadLED[i], stat1==2?kLedGreen:kLedGreenCheck,  d.time);
+                continue;
+            }
+
+            if (stat1==1 && stat2==1)
+                SetLedColor(fFadLED[i], kLedRed, d.time);
+            else
+                SetLedColor(fFadLED[i], kLedOrange, d.time);
+        }
+
+
+        const bool runs = ptr[40]!=0;
+
+        fStatusEventBuilderLabel->setText(runs?"Running":"Not running");
+        fStatusEventBuilderLabel->setToolTip(runs?"Event builder thread running.":"Event builder thread stopped.");
+
+        fGroupEthernet->setEnabled(runs);
+        fGroupOutput->setEnabled(runs);
+
+        SetLedColor(fStatusEventBuilderLed, runs?kLedGreen:kLedRed, d.time);
+
+//        fFadConnections.assign(ptr, ptr+40);
+    }
+
+    template<typename T>
+        void handleFadToolTip(const Time &time, QWidget *w, T *ptr)
+    {
+        ostringstream tip;
+        tip << "<table border='1'><tr><th colspan='11'>" << time.GetAsStr() << " (UTC)</th></tr><tr><th></th>";
+        for (int b=0; b<10; b++)
+            tip << "<th>" << b << "</th>";
+        tip << "</tr>";
+
+        for (int c=0; c<4; c++)
+        {
+            tip << "<tr><th>" << c << "</th>";
+            for (int b=0; b<10; b++)
+                tip << "<td>" << ptr[c*10+b] << "</td>";
+            tip << "</tr>";
+        }
+        tip << "</table>";
+
+        w->setToolTip(tip.str().c_str());
+    }
+
+    template<typename T, class S>
+        void handleFadMinMax(const DimData &d, QPushButton *led, S *wmin, S *wmax=0)
+    {
+        if (!CheckSize(d, 42*sizeof(T)))
+            return;
+
+        const T *ptr = d.ptr<T>();
+        const T  min = ptr[40];
+        const T  max = ptr[41];
+
+        if (max==0 && min>max)
+            SetLedColor(led, kLedGray, d.time);
+        else
+            SetLedColor(led, min==max?kLedGreen: kLedOrange, d.time);
+
+        if (!wmax && max!=min)
+            wmin->setValue(0);
+        else
+            wmin->setValue(min);
+
+        if (wmax)
+            wmax->setValue(max);
+
+        handleFadToolTip(d.time, led, ptr);
+    }
+
+    void handleFadFwVersion(const DimData &d)
+    {
+        handleFadMinMax<float, QDoubleSpinBox>(d, fFadLedFwVersion, fFadFwVersion);
+    }
+
+    void handleFadRunNumber(const DimData &d)
+    {
+        handleFadMinMax<uint32_t, QSpinBox>(d, fFadLedRunNumber, fFadRunNumber);
+    }
+
+    void handleFadPrescaler(const DimData &d)
+    {
+        handleFadMinMax<uint16_t, QSpinBox>(d, fFadLedPrescaler, fFadPrescaler);
+    }
+
+    void handleFadDNA(const DimData &d)
+    {
+        if (!CheckSize(d, 40*sizeof(uint64_t)))
+            return;
+
+        const uint64_t *ptr = d.ptr<uint64_t>();
+
+        ostringstream tip;
+        tip << "<table width='100%'>";
+        tip << "<tr><th>Crate</th><td></td><th>Board</th><td></td><th>DNA</th></tr>";
+
+        for (int i=0; i<40; i++)
+        {
+            tip << dec;
+            tip << "<tr>";
+            tip << "<td align='center'>" << i/10 << "</td><td>:</td>";
+            tip << "<td align='center'>" << i%10 << "</td><td>:</td>";
+            tip << hex;
+            tip << "<td>0x" << setfill('0') << setw(16) << ptr[i] << "</td>";
+            tip << "</tr>";
+        }
+        tip << "</table>";
+
+        fFadDNA->setText(tip.str().c_str());
+    }
+
+    void SetFadLed(QPushButton *led, const DimData &d, uint16_t bitmask, bool invert=false)
+    {
+        if (d.size()==0)
+        {
+            SetLedColor(led, kLedGray, d.time);
+            return;
+        }
+
+        const bool      quality = d.ptr<uint16_t>()[0]&bitmask;
+        const bool      value   = d.ptr<uint16_t>()[1]&bitmask;
+        const uint16_t *ptr     = d.ptr<uint16_t>()+2;
+
+        SetLedColor(led, quality?kLedOrange:(value^invert?kLedGreen:kLedGreenBar), d.time);
+
+        ostringstream tip;
+        tip << "<table border='1'><tr><th colspan='11'>" << d.time.GetAsStr() << " (UTC)</th></tr><tr><th></th>";
+        for (int b=0; b<10; b++)
+            tip << "<th>" << b << "</th>";
+        tip << "</tr>";
+
+        /*
+	 tip << "<tr>" << hex;
+	 tip << "<th>" << d.ptr<uint16_t>()[0] << " " << (d.ptr<uint16_t>()[0]&bitmask) << "</th>";
+	 tip << "<th>" << d.ptr<uint16_t>()[1] << " " << (d.ptr<uint16_t>()[1]&bitmask) << "</th>";
+	 tip << "</tr>";
+	 */
+
+        for (int c=0; c<4; c++)
+        {
+            tip << "<tr><th>" << dec << c << "</th>" << hex;
+            for (int b=0; b<10; b++)
+            {
+                tip << "<td>"
+                    << (ptr[c*10+b]&bitmask)
+                    << "</td>";
+            }
+            tip << "</tr>";
+        }
+        tip << "</table>";
+
+        led->setToolTip(tip.str().c_str());
+    }
+
+    void handleFadStatus(const DimData &d)
+    {
+        if (d.size()!=0 && !CheckSize(d, 42*sizeof(uint16_t)))
+            return;
+
+        SetFadLed(fFadLedDrsEnabled,     d, FAD::EventHeader::kDenable);
+        SetFadLed(fFadLedDrsWrite,       d, FAD::EventHeader::kDwrite);
+        SetFadLed(fFadLedDcmLocked,      d, FAD::EventHeader::kDcmLocked);
+        SetFadLed(fFadLedDcmReady,       d, FAD::EventHeader::kDcmReady);
+        SetFadLed(fFadLedSpiSclk,        d, FAD::EventHeader::kSpiSclk);
+        SetFadLed(fFadLedRefClockTooLow, d, FAD::EventHeader::kRefClkTooLow, true);
+        SetFadLed(fFadLedBusyOn,         d, FAD::EventHeader::kBusyOn);
+        SetFadLed(fFadLedBusyOff,        d, FAD::EventHeader::kBusyOff);
+        SetFadLed(fFadLedTriggerLine,    d, FAD::EventHeader::kTriggerLine);
+        SetFadLed(fFadLedContTrigger,    d, FAD::EventHeader::kContTrigger);
+        SetFadLed(fFadLedSocket,         d, FAD::EventHeader::kSock17);
+        SetFadLed(fFadLedPllLock,        d, 0xf000);
+    }
+
+    void handleFadStatistics1(const DimData &d)
+    {
+        if (!CheckSize(d, sizeof(GUI_STAT)))
+            return;
+
+        const GUI_STAT &stat = d.ref<GUI_STAT>();
+
+        fFadBufferMax->setValue(stat.totMem/1000000);  // Memory::allocated
+        fFadBuffer->setMaximum(stat.maxMem/100);       // g_maxMem
+        fFadBuffer->setValue(stat.usdMem/100);         // Memory::inuse
+
+        uint32_t sum = 0;
+        int cnt = 0;
+
+        for (int i=0; i<40; i++)
+        {
+            if (stat.numConn[i]==1)
+            {
+                sum += stat.rateBytes[i];
+                cnt++;
+            }
+        }
+
+        fFadEvtConn->setValue(cnt);
+
+        fFadEvtBufNew->setValue(stat.bufNew);  // Incomplete in buffer (evtCtrl)
+        fFadEvtBufEvt->setValue(stat.bufTot);  // Complete events in buffer (max_inuse)
+
+        fFadEvtCheck->setValue(stat.bufEvt);  // Complete in buffer
+        fFadEvtWrite->setValue(stat.bufWrite);
+        fFadEvtProc->setValue(stat.bufProc);
+
+        if (stat.deltaT==0)
+            return;
+
+        //fFadEthernetRateMin->setValue(min/stat.deltaT);
+        //fFadEthernetRateMax->setValue(max/stat.deltaT);
+        fFadEthernetRateTot->setValue(sum/stat.deltaT);
+        fFadEthernetRateAvg->setValue(cnt==0 ? 0 : sum/cnt/stat.deltaT);
+
+        fFadTransmission->setValue(1000*stat.rateNew/stat.deltaT);
+        fFadWriteRate->setValue(1000*stat.rateWrite/stat.deltaT);
+    }
+
+    /*
+    void handleFadStatistics2(const DimData &d)
+    {
+        if (!CheckSize(d, sizeof(EVT_STAT)))
+            return;
+
+        //const EVT_STAT &stat = d.ref<EVT_STAT>();
+    }*/
+
+    void handleFadFileFormat(const DimData &d)
+    {
+        if (!CheckSize(d, sizeof(uint16_t)))
+            return;
+
+        const uint16_t &fmt = d.get<uint16_t>();
+
+        SetLedColor(fFadLedFileFormatNone,  fmt==FAD::kNone ?kLedGreen:kLedGray, d.time);
+        SetLedColor(fFadLedFileFormatDebug, fmt==FAD::kDebug?kLedGreen:kLedGray, d.time);
+        SetLedColor(fFadLedFileFormatRaw,   fmt==FAD::kRaw  ?kLedGreen:kLedGray, d.time);
+        SetLedColor(fFadLedFileFormatFits,  fmt==FAD::kFits ?kLedGreen:kLedGray, d.time);
+        SetLedColor(fFadLedFileFormatZFits, fmt==FAD::kZFits?kLedGreen:kLedGray, d.time);
+        SetLedColor(fFadLedFileFormatCalib, fmt==FAD::kCalib?kLedGreen:kLedGray, d.time);
+    }
+
+    // ===================== FTM ============================================
+
+    FTM::DimTriggerRates fTriggerRates;
+
+    void UpdateTriggerRate(const FTM::DimTriggerRates &sdata)
+    {
+#ifdef HAVE_ROOT
+        TCanvas *c = fFtmRateCanv->GetCanvas();
+
+        TH1 *h = (TH1*)c->FindObject("TimeFrame");
+
+        if (sdata.fTimeStamp<=fTriggerRates.fTimeStamp)
+        {
+            fGraphFtmRate.Set(0);
+
+            const double tm = Time().RootTime();
+
+            h->SetBins(1, tm, tm+60);
+            h->GetXaxis()->SetTimeFormat("%M'%S\"%F1995-01-01 00:00:00 GMT");
+            h->GetXaxis()->SetTitle("Time");
+
+            c->Modified();
+            c->Update();
+            return;
+        }
+
+        const double t1 = h->GetXaxis()->GetXmax();
+        const double t0 = h->GetXaxis()->GetXmin();
+
+        const double now = t0+sdata.fTimeStamp/1000000.;
+
+        h->SetBins(h->GetNbinsX()+1, t0, now+1);
+        fGraphFtmRate.SetPoint(fGraphFtmRate.GetN(), now, sdata.fTriggerRate);
+
+        if (t1-t0>300)
+        {
+            h->GetXaxis()->SetTimeFormat("%Hh%M'%F1995-01-01 00:00:00 GMT");
+            h->GetXaxis()->SetTitle("Time");
+        }
+
+        h->SetMinimum(0);
+
+        c->Modified();
+        c->Update();
+#endif
+    }
+
+    void UpdateRatesCam(const FTM::DimTriggerRates &sdata)
+    {
+        if (fThresholdIdx->value()>=0)
+        {
+            const int isw = fThresholdIdx->value();
+            const int ihw = fPatchMapHW[isw];
+            fPatchRate->setValue(sdata.fPatchRate[ihw]);
+            fBoardRate->setValue(sdata.fBoardRate[ihw/4]);
+        }
+
+        const bool b = fBoardRatesEnabled->isChecked();
+
+        valarray<double> dat(0., 1440);
+
+        // fPatch converts from software id to software patch id
+        for (int i=0; i<1440; i++)
+        {
+            const int ihw = fPixelMap.index(i).hw()/9;
+            dat[i] = b ? sdata.fBoardRate[ihw/4] : sdata.fPatchRate[ihw];
+        }
+
+        fRatesCanv->SetData(dat);
+        fRatesCanv->updateCamera();
+    }
+
+    int64_t fTimeStamp0;
+
+    void on_fBoardRatesEnabled_toggled(bool)
+    {
+        UpdateRatesCam(fTriggerRates);
+    }
+
+    void UpdateRatesGraphs(const FTM::DimTriggerRates &sdata)
+    {
+#ifdef HAVE_ROOT
+        if (fTimeStamp0<0)
+        {
+            fTimeStamp0 = sdata.fTimeStamp;
+            return;
+        }
+
+        TCanvas *c = fFtmRateCanv->GetCanvas();
+
+        TH1 *h = (TH1*)c->FindObject("TimeFrame");
+
+        const double tdiff = sdata.fTimeStamp-fTimeStamp0;
+        fTimeStamp0 = sdata.fTimeStamp;
+
+        if (tdiff<0)
+        {
+            for (int i=0; i<160; i++)
+                fGraphPatchRate[i].Set(0);
+            for (int i=0; i<40; i++)
+                fGraphBoardRate[i].Set(0);
+
+            return;
+        }
+
+        //const double t1 = h->GetXaxis()->GetXmax();
+        const double t0 = h->GetXaxis()->GetXmin();
+
+        for (int i=0; i<160; i++)
+            if (fFtuStatus[i/4]>0)
+                fGraphPatchRate[i].SetPoint(fGraphPatchRate[i].GetN(),
+                                            t0+sdata.fTimeStamp/1000000., sdata.fPatchRate[i]);
+        for (int i=0; i<40; i++)
+            if (fFtuStatus[i]>0)
+                fGraphBoardRate[i].SetPoint(fGraphBoardRate[i].GetN(),
+                                            t0+sdata.fTimeStamp/1000000., sdata.fBoardRate[i]);
+
+        c->Modified();
+        c->Update();
+#endif
+    }
+
+    void handleFtmTriggerRates(const DimData &d)
+    {
+        if (!CheckSize(d, sizeof(FTM::DimTriggerRates)))
+            return;
+
+        const FTM::DimTriggerRates &sdata = d.ref<FTM::DimTriggerRates>();
+
+        fFtmTime->setText(QString::number(sdata.fTimeStamp/1000000., 'f', 6)+ " s");
+        fTriggerCounter->setText(QString::number(sdata.fTriggerCounter));
+
+        if (sdata.fTimeStamp>0)
+            fTriggerCounterRate->setValue(1000000.*sdata.fTriggerCounter/sdata.fTimeStamp);
+        else
+            fTriggerCounterRate->setValue(0);
+
+        // ----------------------------------------------
+
+        fOnTime->setText(QString::number(sdata.fOnTimeCounter/1000000., 'f', 6)+" s");
+
+        if (sdata.fTimeStamp>0)
+            fOnTimeRel->setValue(100.*sdata.fOnTimeCounter/sdata.fTimeStamp);
+        else
+            fOnTimeRel->setValue(0);
+
+        // ----------------------------------------------
+
+        UpdateTriggerRate(sdata);
+        UpdateRatesGraphs(sdata);
+        UpdateRatesCam(sdata);
+
+        fTriggerRates = sdata;
+    }
+
+    void handleFtmCounter(const DimData &d)
+    {
+        if (!CheckSize(d, sizeof(uint32_t)*6))
+            return;
+
+        const uint32_t *sdata = d.ptr<uint32_t>();
+
+        fFtmCounterH->setValue(sdata[0]);
+        fFtmCounterS->setValue(sdata[1]);
+        fFtmCounterD->setValue(sdata[2]);
+        fFtmCounterF->setValue(sdata[3]);
+        fFtmCounterE->setValue(sdata[4]);
+        fFtmCounterR->setValue(sdata[5]);
+    }
+
+    void handleFtmDynamicData(const DimData &d)
+    {
+        if (!CheckSize(d, sizeof(FTM::DimDynamicData)))
+            return;
+
+        const FTM::DimDynamicData &sdata = d.ref<FTM::DimDynamicData>();
+
+        fFtmTemp0->setValue(sdata.fTempSensor[0]*0.1);
+        fFtmTemp1->setValue(sdata.fTempSensor[1]*0.1);
+        fFtmTemp2->setValue(sdata.fTempSensor[2]*0.1);
+        fFtmTemp3->setValue(sdata.fTempSensor[3]*0.1);
+
+        SetLedColor(fClockCondLed, sdata.fState&FTM::kFtmLocked ? kLedGreen : kLedRed, d.time);
+    }
+
+    void DisplayRates()
+    {
+#ifdef HAVE_ROOT
+        TCanvas *c = fFtmRateCanv->GetCanvas();
+
+        TList * l = c->GetListOfPrimitives();
+
+
+        while (c->FindObject("PatchRate"))
+            l->Remove(c->FindObject("PatchRate"));
+
+        while (c->FindObject("BoardRate"))
+            l->Remove(c->FindObject("BoardRate"));
+
+        if (fRatePatch1->value()>=0)
+        {
+            fGraphPatchRate[fRatePatch1->value()].SetLineColor(kRed);
+            fGraphPatchRate[fRatePatch1->value()].SetMarkerColor(kRed);
+            l->Add(&fGraphPatchRate[fRatePatch1->value()], "PL");
+        }
+        if (fRatePatch2->value()>=0)
+        {
+            fGraphPatchRate[fRatePatch2->value()].SetLineColor(kGreen);
+            fGraphPatchRate[fRatePatch2->value()].SetMarkerColor(kGreen);
+            l->Add(&fGraphPatchRate[fRatePatch2->value()], "PL");
+        }
+        if (fRateBoard1->value()>=0)
+        {
+            fGraphBoardRate[fRateBoard1->value()].SetLineColor(kMagenta);
+            fGraphBoardRate[fRateBoard1->value()].SetMarkerColor(kMagenta);
+            l->Add(&fGraphBoardRate[fRateBoard1->value()], "PL");
+        }
+        if (fRateBoard2->value()>=0)
+        {
+            fGraphBoardRate[fRateBoard2->value()].SetLineColor(kCyan);
+            fGraphBoardRate[fRateBoard2->value()].SetMarkerColor(kCyan);
+            l->Add(&fGraphBoardRate[fRateBoard2->value()], "PL");
+        }
+
+        c->Modified();
+        c->Update();
+#endif
+    }
+
+    FTM::DimStaticData fFtmStaticData;
+
+    void SetFtuLed(int idx, int counter, const Time &t)
+    {
+        if (counter==0 || counter>3)
+            counter = 3;
+
+        if (counter<0)
+            counter = 0;
+
+        const LedColor_t col[4] = { kLedGray, kLedGreen, kLedOrange, kLedRed };
+
+        SetLedColor(fFtuLED[idx], col[counter], t);
+
+        fFtuStatus[idx] = counter;
+    }
+
+    void SetFtuStatusLed(const Time &t)
+    {
+        const int max = fFtuStatus.max();
+
+        switch (max)
+        {
+        case 0:
+            SetLedColor(fStatusFTULed, kLedGray, t);
+            fStatusFTULabel->setText("All disabled");
+            fStatusFTULabel->setToolTip("All FTUs are disabled");
+            break;
+
+        case 1:
+            SetLedColor(fStatusFTULed, kLedGreen, t);
+            fStatusFTULabel->setToolTip("Communication with FTU is smooth.");
+            fStatusFTULabel->setText("ok");
+            break;
+
+        case 2:
+            SetLedColor(fStatusFTULed, kLedOrange, t);
+            fStatusFTULabel->setText("Warning");
+            fStatusFTULabel->setToolTip("At least one FTU didn't answer immediately");
+            break;
+
+        case 3:
+            SetLedColor(fStatusFTULed, kLedRed, t);
+            fStatusFTULabel->setToolTip("At least one FTU didn't answer!");
+            fStatusFTULabel->setText("ERROR");
+            break;
+        }
+
+        const int cnt = count(&fFtuStatus[0], &fFtuStatus[40], 0);
+        fFtuAllOn->setEnabled(cnt!=0);
+        fFtuAllOff->setEnabled(cnt!=40);
+    }
+
+    void handleFtmStaticData(const DimData &d)
+    {
+        if (!CheckSize(d, sizeof(FTM::DimStaticData)))
+            return;
+
+        const FTM::DimStaticData &sdata = d.ref<FTM::DimStaticData>();
+
+        fTriggerInterval->setValue(sdata.fTriggerInterval);
+        fPhysicsCoincidence->setValue(sdata.fMultiplicityPhysics);
+        fCalibCoincidence->setValue(sdata.fMultiplicityCalib);
+        fPhysicsWindow->setValue(sdata.fWindowPhysics);
+        fCalibWindow->setValue(sdata.fWindowCalib);
+
+        fTriggerDelay->setValue(sdata.fDelayTrigger);
+        fTimeMarkerDelay->setValue(sdata.fDelayTimeMarker);
+        fDeadTime->setValue(sdata.fDeadTime);
+
+        fClockCondR0->setValue(sdata.fClockConditioner[0]);
+        fClockCondR1->setValue(sdata.fClockConditioner[1]);
+        fClockCondR8->setValue(sdata.fClockConditioner[2]);
+        fClockCondR9->setValue(sdata.fClockConditioner[3]);
+        fClockCondR11->setValue(sdata.fClockConditioner[4]);
+        fClockCondR13->setValue(sdata.fClockConditioner[5]);
+        fClockCondR14->setValue(sdata.fClockConditioner[6]);
+        fClockCondR15->setValue(sdata.fClockConditioner[7]);
+
+        const uint32_t R0  = sdata.fClockConditioner[0];
+        const uint32_t R14 = sdata.fClockConditioner[6];
+        const uint32_t R15 = sdata.fClockConditioner[7];
+
+        const uint32_t Ndiv = (R15&0x1ffff00)<<2;
+        const uint32_t Rdiv = (R14&0x007ff00)>>8;
+        const uint32_t Cdiv = (R0 &0x000ff00)>>8;
+
+        double freq = 40.*Ndiv/(Rdiv*Cdiv);
+
+        fClockCondFreqRes->setValue(freq);
+
+        //fClockCondFreq->setEditText("");
+        fClockCondFreq->setCurrentIndex(0);
+
+        fTriggerSeqPed->setValue(sdata.fTriggerSeqPed);
+        fTriggerSeqLPint->setValue(sdata.fTriggerSeqLPint);
+        fTriggerSeqLPext->setValue(sdata.fTriggerSeqLPext);
+
+        fLpIntIntensity->setValue(sdata.fIntensityLPint);
+        fLpExtIntensity->setValue(sdata.fIntensityLPext);
+
+        fLpIntGroup1->setChecked(sdata.HasLPintG1());
+        fLpIntGroup2->setChecked(sdata.HasLPintG2());
+        fLpExtGroup1->setChecked(sdata.HasLPextG1());
+        fLpExtGroup2->setChecked(sdata.HasLPextG2());
+
+        fEnableTrigger->setChecked(sdata.HasTrigger());
+        fEnableVeto->setChecked(sdata.HasVeto());
+        fEnableExt1->setChecked(sdata.HasExt1());
+        fEnableExt2->setChecked(sdata.HasExt2());
+        fEnableClockCond->setChecked(sdata.HasClockConditioner());
+
+        uint16_t multiplicity = sdata.fMultiplicity[0];
+
+        for (int i=0; i<40; i++)
+        {
+            if (!sdata.IsActive(i))
+                SetFtuLed(i, -1, d.time);
+            else
+            {
+                if (fFtuStatus[i]==0)
+                    SetFtuLed(i, 1, d.time);
+            }
+            fFtuLED[i]->setChecked(false);
+
+            if (sdata.fMultiplicity[i]!=multiplicity)
+                multiplicity = -1;
+
+        }
+        SetFtuStatusLed(d.time);
+
+        fNoutof4Val->setValue(multiplicity);
+
+        for (vector<PixelMapEntry>::const_iterator it=fPixelMap.begin(); it!=fPixelMap.end(); it++)
+            fRatesCanv->SetEnable(it->index, sdata.IsEnabled(it->hw()));
+
+        const PixelMapEntry &entry = fPixelMap.index(fPixelIdx->value());
+        fPixelEnable->setChecked(sdata.IsEnabled(entry.hw()));
+
+        if (fThresholdIdx->value()>=0)
+        {
+            const int isw = fThresholdIdx->value();
+            const int ihw = fPatchMapHW[isw];
+            fThresholdVal->setValue(sdata.fThreshold[ihw]);
+        }
+
+        fPrescalingVal->setValue(sdata.fPrescaling[0]);
+
+        fFtmStaticData = sdata;
+    }
+
+    void handleFtmPassport(const DimData &d)
+    {
+        if (!CheckSize(d, sizeof(FTM::DimPassport)))
+            return;
+
+        const FTM::DimPassport &sdata = d.ref<FTM::DimPassport>();
+
+        stringstream str1, str2;
+        str1 << hex << "0x" << setfill('0') << setw(16) << sdata.fBoardId;
+        str2 << sdata.fFirmwareId;
+
+        fFtmBoardId->setText(str1.str().c_str());
+        fFtmFirmwareId->setText(str2.str().c_str());
+    }
+
+    void handleFtmFtuList(const DimData &d)
+    {
+        if (!CheckSize(d, sizeof(FTM::DimFtuList)))
+            return;
+
+        fFtuPing->setChecked(false);
+
+        const FTM::DimFtuList &sdata = d.ref<FTM::DimFtuList>();
+
+        stringstream str;
+        str << "<table width='100%'>" << setfill('0');
+        str << "<tr><th>Num</th><th></th><th>Addr</th><th></th><th>DNA</th></tr>";
+        for (int i=0; i<40; i++)
+        {
+            str << "<tr>";
+            str << "<td align='center'>"   << dec << i << hex << "</td>";
+            str << "<td align='center'>:</td>";
+            str << "<td align='center'>0x" << setw(2)  << (int)sdata.fAddr[i] << "</td>";
+            str << "<td align='center'>:</td>";
+            str << "<td align='center'>0x" << setw(16) << sdata.fDNA[i] << "</td>";
+            str << "</tr>";
+        }
+        str << "</table>";
+
+        fFtuDNA->setText(str.str().c_str());
+
+        fFtuAnswersTotal->setValue(sdata.fNumBoards);
+        fFtuAnswersCrate0->setValue(sdata.fNumBoardsCrate[0]);
+        fFtuAnswersCrate1->setValue(sdata.fNumBoardsCrate[1]);
+        fFtuAnswersCrate2->setValue(sdata.fNumBoardsCrate[2]);
+        fFtuAnswersCrate3->setValue(sdata.fNumBoardsCrate[3]);
+
+        for (int i=0; i<40; i++)
+            SetFtuLed(i, sdata.IsActive(i) ? sdata.fPing[i] : -1, d.time);
+
+        SetFtuStatusLed(d.time);
+    }
+
+    void handleFtmError(const DimData &d)
+    {
+        if (!CheckSize(d, sizeof(FTM::DimError)))
+            return;
+
+        const FTM::DimError &sdata = d.ref<FTM::DimError>();
+
+        SetFtuLed(sdata.fError.fDestAddress, sdata.fError.fNumCalls, d.time);
+        SetFtuStatusLed(d.time);
+
+        // FIXME: Write to special window!
+        //Out() << "Error:" << endl;
+        //Out() << sdata.fError << endl;
+    }
+
+    // ========================== FSC =======================================
+
+    void SetFscValue(QDoubleSpinBox *box, const DimData &d, int idx, bool enable)
+    {
+        //box->setEnabled(enable);
+        if (!enable)
+        {
+            box->setToolTip(d.time.GetAsStr().c_str());
+            return;
+        }
+
+        ostringstream str;
+        str << d.time << "  --  " << d.get<float>() << "s";
+
+        box->setToolTip(str.str().c_str());
+        box->setValue(d.get<float>(idx*4+4));
+    }
+
+
+    void handleFscTemp(const DimData &d)
+    {
+        const bool enable = d.size()>0 && CheckSize(d, 60*sizeof(float));
+        if (!enable)
+            return;
+
+        QDoubleSpinBox *boxes[] = {
+            fTempCam00, fTempCam01,
+            fTempCam10, fTempCam11, fTempCam12, fTempCam13, fTempCam14, 
+            fTempCam20, fTempCam21, fTempCam22, fTempCam23, fTempCam24, fTempCam25,
+            fTempCam30, fTempCam31, fTempCam32, fTempCam33, fTempCam34, 
+            fTempCam40, fTempCam41, fTempCam42, fTempCam43, fTempCam44, fTempCam45,
+            fTempCam50, fTempCam51, fTempCam52, fTempCam53, fTempCam54,
+            fTempCam60, fTempCam61,
+            // 0:b/f 1:b/f 2:b/f 3:b/f
+            fTempCrate0back, fTempCrate0front,
+            fTempCrate1back, fTempCrate1front,
+            fTempCrate2back, fTempCrate2front,
+            fTempCrate3back, fTempCrate3front,
+            // 0:b/f 1:b/f 2:b/f 3:b/f
+            fTempPS0back, fTempPS0front,
+            fTempPS1back, fTempPS1front,
+            fTempPS2back, fTempPS2front,
+            fTempPS3back, fTempPS3front,
+            // AUX PS:  FTM t/b; FSC t/b
+            fTempAuxFTMtop, fTempAuxFTMbottom,
+            fTempAuxFSCtop, fTempAuxFSCbottom,
+            // Backpanel:  FTM t/b; FSC t/b
+            fTempBackpanelFTMtop, fTempBackpanelFTMbottom,
+            fTempBackpanelFSCtop, fTempBackpanelFSCbottom,
+            // top front/back; bottom front/back
+            fTempSwitchboxTopFront,    fTempSwitchboxTopBack,
+            fTempSwitchboxBottomFront, fTempSwitchboxBottomBack,
+        };
+
+        for (int i=0; i<59; i++)
+            SetFscValue(boxes[i], d, i, enable);
+
+        if (!enable)
+            return;
+
+        const float *ptr = d.ptr<float>();
+
+        double avg = 0;
+        int    num = 0;
+        for (int i=1; i<32; i++)
+            if (ptr[i]!=0)
+            {
+                avg += ptr[i];
+                num ++;
+            }
+
+        fTempCamAvg->setValue(num?avg/num:0);
+    }
+
+    void handleFscVolt(const DimData &d)
+    {
+        const bool enable = d.size()>0 && CheckSize(d, 31*sizeof(float));
+        if (!enable)
+            return;
+
+        QDoubleSpinBox *boxes[] = {
+            fVoltFad00, fVoltFad10, fVoltFad20, fVoltFad30,
+            fVoltFad01, fVoltFad11, fVoltFad21, fVoltFad31,
+            fVoltFad02, fVoltFad12, fVoltFad22, fVoltFad32,
+            fVoltFPA00, fVoltFPA10, fVoltFPA20, fVoltFPA30,
+            fVoltFPA01, fVoltFPA11, fVoltFPA21, fVoltFPA31,
+            fVoltFPA02, fVoltFPA12, fVoltFPA22, fVoltFPA32,
+            fVoltETH0,  fVoltETH1,
+            fVoltFTM0,  fVoltFTM1,
+            fVoltFFC,   fVoltFLP,
+        };
+
+        for (int i=0; i<30; i++)
+            SetFscValue(boxes[i], d, i, enable);
+    }
+
+    void handleFscCurrent(const DimData &d)
+    {
+        const bool enable = d.size()>0 && CheckSize(d, 31*sizeof(float));
+        if (!enable)
+            return;
+
+        QDoubleSpinBox *boxes[] = {
+            fAmpFad00, fAmpFad10, fAmpFad20, fAmpFad30,
+            fAmpFad01, fAmpFad11, fAmpFad21, fAmpFad31,
+            fAmpFad02, fAmpFad12, fAmpFad22, fAmpFad32,
+            fAmpFPA00, fAmpFPA10, fAmpFPA20, fAmpFPA30,
+            fAmpFPA01, fAmpFPA11, fAmpFPA21, fAmpFPA31,
+            fAmpFPA02, fAmpFPA12, fAmpFPA22, fAmpFPA32,
+            fAmpETH0,  fAmpETH1,
+            fAmpFTM0,  fAmpFTM1,
+            fAmpFFC,   fAmpFLP,
+        };
+
+        for (int i=0; i<30; i++)
+            SetFscValue(boxes[i], d, i, enable);
+    }
+
+    void handleFscHumidity(const DimData &d)
+    {
+        const bool enable = d.size()>0 && CheckSize(d, 5*sizeof(float));
+
+        SetFscValue(fHumidity1, d, 0, enable);
+        SetFscValue(fHumidity2, d, 1, enable);
+        SetFscValue(fHumidity3, d, 2, enable);
+        SetFscValue(fHumidity4, d, 3, enable);
+    }
+
+    // ========================== Feedback ==================================
+
+#ifdef HAVE_ROOT
+    TGraphErrors fGraphFeedbackDev;
+    TGraphErrors fGraphFeedbackCmd;
+
+    void UpdateFeedback(TQtWidget &rwidget, const Time &time, TGraphErrors &graph, double avg, double rms)
+    {
+        TCanvas *c = rwidget.GetCanvas();
+
+        TH1 *h = (TH1*)c->FindObject("TimeFrame");
+
+        while (graph.GetN()>500)
+            graph.RemovePoint(0);
+
+        const double now = time.RootTime();
+
+        while (graph.GetN()>0 && now-graph.GetX()[0]>3600)
+            graph.RemovePoint(0);
+
+        const int n = graph.GetN();
+
+        const double xmin = n>0 ? graph.GetX()[0] : now;
+
+        h->SetBins(n+1, xmin-1, now+1);
+        graph.SetPoint(n, now, avg);
+        graph.SetPointError(n, 0, rms);
+
+        h->GetXaxis()->SetTimeFormat(now-xmin>300 ? "%Hh%M'%F1995-01-01 00:00:00 GMT" : "%M'%S\"%F1995-01-01 00:00:00 GMT");
+
+        c->Modified();
+        c->Update();
+    }
+#endif
+
+    vector <float> fVecFeedbackCurrents;
+
+    void handleFeedbackCalibratedCurrents(const DimData &d)
+    {
+        if (!CheckSize(d, (416+1+1+1+1+1+416+1+1)*sizeof(float)+sizeof(uint32_t)))
+            return;
+
+        const float *ptr = d.ptr<float>();
+        const float *Uov = ptr+416+6;
+
+        fVecFeedbackCurrents.assign(ptr, ptr+416);
+
+        valarray<double> datc(0., 1440);
+        valarray<double> datu(0., 1440);
+
+        // fPatch converts from software id to software patch id
+        for (int i=0; i<1440; i++)
+        {
+            const PixelMapEntry &entry = fPixelMap.index(i);
+
+            datc[i] = fVecFeedbackCurrents[entry.hv()];
+            datu[i] = Uov[entry.hv()];
+
+            if (fVecBiasCurrent.size()>0)
+            {
+                fBiasCamA->SetEnable(i, uint16_t(fVecBiasCurrent[entry.hv()])!=0x8000);
+                fBiasCamA->highlightPixel(i, fVecBiasCurrent[entry.hv()]<0);
+            }
+        }
+
+        fBiasCamA->SetData(datc);
+        fBiasCamA->updateCamera();
+
+        UpdateBiasValues();
+
+        // --------------------------------------------------------
+
+        double avg = 0;
+        double rms = 0;
+
+        for (int i=0; i<320; i++)
+        {
+            avg += Uov[i];
+            rms += Uov[i]*Uov[i];
+        }
+
+        avg /= 320;
+        rms /= 320;
+        rms = sqrt(rms-avg*avg);
+
+
+        fFeedbackDevCam->SetData(datu);
+        //fFeedbackCmdCam->SetData(cmd);
+
+        fFeedbackDevCam->updateCamera();
+        //fFeedbackCmdCam->updateCamera();
+
+#ifdef HAVE_ROOT
+        UpdateFeedback(*fFeedbackDev, d.time, fGraphFeedbackDev, avg, rms);
+        //UpdateFeedback(*fFeedbackCmd, d.time, fGraphFeedbackCmd, avgcmd, rmscmd);
+#endif
+    }
+
+    // ======================= Rate Scan ====================================
+
+    TGraph fGraphRateScan[201];
+
+    void UpdateRateScan(uint32_t th, const float *rates)
+    {
+#ifdef HAVE_ROOT
+        TCanvas *c = fRateScanCanv->GetCanvas();
+
+        TH1 *h = (TH1*)c->FindObject("Frame");
+
+        if (fGraphRateScan[0].GetN()==0 || th<fGraphRateScan[0].GetX()[fGraphRateScan[0].GetN()-1])
+        {
+            h->SetBins(1, th<10 ? 0 : th-10, th+10);
+            h->SetMinimum(1);
+            h->SetMaximum(rates[0]*2);
+
+            for (int i=0; i<201; i++)
+            {
+                fGraphRateScan[i].Set(0);
+                fGraphRateScan[i].SetPoint(fGraphRateScan[i].GetN(), th, rates[i]);
+            }
+
+            c->SetGrid();
+            c->SetLogy();
+
+            c->Modified();
+            c->Update();
+            return;
+        }
+
+        const double dac = h->GetXaxis()->GetXmin();
+        h->SetBins(h->GetNbinsX()+1, dac, th+10);
+
+        for (int i=0; i<201; i++)
+            fGraphRateScan[i].SetPoint(fGraphRateScan[i].GetN(), th, rates[i]);
+
+        c->Modified();
+        c->Update();
+#endif
+    }
+
+    void DisplayRateScan()
+    {
+#ifdef HAVE_ROOT
+        TCanvas *c = fRateScanCanv->GetCanvas();
+
+        TList *l = c->GetListOfPrimitives();
+
+        while (c->FindObject("PatchRate"))
+            l->Remove(c->FindObject("PatchRate"));
+
+        while (c->FindObject("BoardRate"))
+            l->Remove(c->FindObject("BoardRate"));
+
+        if (fRateScanPatch1->value()>=0)
+        {
+            fGraphRateScan[fRateScanPatch1->value()+41].SetLineColor(kRed);
+            fGraphRateScan[fRateScanPatch1->value()+41].SetMarkerColor(kRed);
+            l->Add(&fGraphRateScan[fRateScanPatch1->value()+41], "PL");
+        }
+        if (fRateScanPatch2->value()>=0)
+        {
+            fGraphRateScan[fRateScanPatch2->value()+41].SetLineColor(kGreen);
+            fGraphRateScan[fRateScanPatch2->value()+41].SetMarkerColor(kGreen);
+            l->Add(&fGraphRateScan[fRateScanPatch2->value()+41], "PL");
+        }
+        if (fRateScanBoard1->value()>=0)
+        {
+            fGraphRateScan[fRateScanBoard1->value()+1].SetLineColor(kMagenta);
+            fGraphRateScan[fRateScanBoard1->value()+1].SetMarkerColor(kMagenta);
+            l->Add(&fGraphRateScan[fRateScanBoard1->value()+1], "PL");
+        }
+        if (fRateScanBoard2->value()>=0)
+        {
+            fGraphRateScan[fRateScanBoard2->value()+1].SetLineColor(kCyan);
+            fGraphRateScan[fRateScanBoard2->value()+1].SetMarkerColor(kCyan);
+            l->Add(&fGraphRateScan[fRateScanBoard2->value()+1], "PL");
+        }
+
+        c->Modified();
+        c->Update();
+#endif
+    }
+
+    void handleRateScan(const DimData &d)
+    {
+        if (!CheckSize(d, 206*sizeof(float)))
+            return;
+
+        UpdateRateScan(d.get<uint32_t>(8), d.ptr<float>(20));
+    }
+
+    // ===================== MAGIC Weather ==================================
+
+    void handleMagicWeather(const DimData &d)
+    {
+        if (!CheckSize(d, 7*sizeof(float)+sizeof(uint16_t)))
+            return;
+
+        const float *ptr = d.ptr<float>(2);
+
+        fMagicTemp->setValue(ptr[0]);
+        fMagicDew->setValue(ptr[1]);
+        fMagicHum->setValue(ptr[2]);
+        fMagicPressure->setValue(ptr[3]);
+        fMagicWind->setValue(ptr[4]);
+        fMagicGusts->setValue(ptr[5]);
+
+        static const char *dir[] =
+        {
+            "N", "NNE", "NE", "ENE",
+            "E", "ESE", "SE", "SSE",
+            "S", "SSW", "SW", "WSW",
+            "W", "WNW", "NW", "NNW"
+        };
+
+        const uint16_t i = uint16_t(floor(fmod(ptr[6]+11.25, 360)/22.5));
+        fMagicWindDir->setText(dir[i%16]);
+    }
+
+    // ========================== FSC =======================================
+
+    vector<float>   fVecBiasVolt;
+    vector<int16_t> fVecBiasDac;
+    vector<int16_t> fVecBiasCurrent;
+
+    void handleBiasVolt(const DimData &d)
+    {
+        if (!CheckSize(d, 416*sizeof(float)))
+            return;
+
+        const float *ptr = d.ptr<float>();
+        fVecBiasVolt.assign(ptr, ptr+416);
+
+        on_fBiasDispRefVolt_stateChanged();
+    }
+
+    void handleBiasDac(const DimData &d)
+    {
+        if (!CheckSize(d, 2*416*sizeof(int16_t)))
+            return;
+
+        const int16_t *ptr = d.ptr<int16_t>();
+        fVecBiasDac.assign(ptr, ptr+2*416);
+
+        on_fBiasDispRefVolt_stateChanged();
+        UpdateBiasValues();
+    }
+
+    int fStateFeedback;
+
+    void handleBiasCurrent(const DimData &d)
+    {
+        if (!CheckSize(d, 416*sizeof(int16_t)))
+            return;
+
+        const int16_t *ptr = d.ptr<int16_t>();
+
+        fVecBiasCurrent.assign(ptr, ptr+416);
+
+        valarray<double> dat(0., 1440);
+
+        // fPatch converts from software id to software patch id
+        for (int i=0; i<1440; i++)
+        {
+            const PixelMapEntry &entry = fPixelMap.index(i);
+
+            dat[i] = abs(ptr[entry.hv()]) * 5000./4096;
+
+            fBiasCamA->SetEnable(i, uint16_t(ptr[entry.hv()])!=0x8000);
+            fBiasCamA->highlightPixel(i, ptr[entry.hv()]<0);
+        }
+
+        if (fStateFeedback<Feedback::State::kCalibrated)
+            fBiasCamA->SetData(dat);
+
+        fBiasCamA->updateCamera();
+
+        UpdateBiasValues();
+    }
+
+    // ====================== MessageImp ====================================
+
+    bool fChatOnline;
+
+    void handleStateChanged(const Time &time, const string &server,
+                            const State &s)
+    {
+        // FIXME: Prefix tooltip with time
+        if (server=="MCP")
+        {
+            // FIXME: Enable FTU page!!!
+            fStatusMCPLabel->setText(s.name.c_str());
+            fStatusMCPLabel->setToolTip(s.comment.c_str());
+
+            if (s.index<MCP::State::kDisconnected) // No Dim connection
+                SetLedColor(fStatusMCPLed, kLedGray, time);
+            if (s.index==MCP::State::kDisconnected) // Disconnected
+                SetLedColor(fStatusMCPLed, kLedRed, time);
+            if (s.index==MCP::State::kConnecting) // Connecting
+                SetLedColor(fStatusMCPLed, kLedOrange, time);
+            if (s.index==MCP::State::kConnected) // Connected
+                SetLedColor(fStatusMCPLed, kLedYellow, time);
+            if (s.index==MCP::State::kIdle || s.index>=MCP::State::kConfigured) // Idle, TriggerOn, TakingData
+                SetLedColor(fStatusMCPLed, kLedGreen, time);
+
+            if (s.index>MCP::State::kIdle && s.index<MCP::State::kConfigured)
+                SetLedColor(fStatusMCPLed, kLedGreenBar, time);
+
+            fMcpStartRun->setEnabled(s.index>=MCP::State::kIdle);
+            fMcpStopRun->setEnabled(s.index>=MCP::State::kIdle);
+            fMcpReset->setEnabled(s.index>=MCP::State::kIdle && MCP::State::kConfigured);
+        }
+
+        if (server=="FTM_CONTROL")
+        {
+            // FIXME: Enable FTU page!!!
+            fStatusFTMLabel->setText(s.name.c_str());
+            fStatusFTMLabel->setToolTip(s.comment.c_str());
+
+            bool enable = false;
+            const bool configuring =
+                s.index==FTM::State::kConfiguring1 ||
+                s.index==FTM::State::kConfiguring2 ||
+                s.index==FTM::State::kConfigured1  ||
+                s.index==FTM::State::kConfigured2;
+
+            if (s.index<FTM::State::kDisconnected) // No Dim connection
+                SetLedColor(fStatusFTMLed, kLedGray, time);
+            if (s.index==FTM::State::kDisconnected) // Dim connection / FTM disconnected
+                SetLedColor(fStatusFTMLed, kLedYellow, time);
+            if (s.index==FTM::State::kConnected    ||
+                s.index==FTM::State::kIdle         ||
+                s.index==FTM::State::kValid        ||
+                configuring) // Dim connection / FTM connected
+                SetLedColor(fStatusFTMLed, kLedGreen, time);
+            if (s.index==FTM::State::kTriggerOn) // Dim connection / FTM connected
+                SetLedColor(fStatusFTMLed, kLedGreenCheck, time);
+            if (s.index==FTM::State::kConnected ||
+                s.index==FTM::State::kIdle ||
+                s.index==FTM::State::kValid) // Dim connection / FTM connected
+                enable = true;
+            if (s.index>=FTM::State::kConfigError1) // Dim connection / FTM connected
+                SetLedColor(fStatusFTMLed, kLedGreenWarn, time);
+
+            fFtmStartRun->setEnabled(!configuring && enable && s.index!=FTM::State::kTriggerOn);
+            fFtmStopRun->setEnabled(!configuring && !enable);
+
+            fTriggerWidget->setEnabled(enable);
+            fFtuGroupEnable->setEnabled(enable);
+            fRatesControls->setEnabled(enable);
+            fFtuWidget->setEnabled(s.index>FTM::State::kDisconnected);
+
+            if (s.index>=FTM::State::kConnected)
+                SetFtuStatusLed(time);
+            else
+            {
+                SetLedColor(fStatusFTULed, kLedGray, time);
+                fStatusFTULabel->setText("Offline");
+                fStatusFTULabel->setToolTip("FTM is not online.");
+            }
+        }
+
+        if (server=="FAD_CONTROL")
+        {
+            fStatusFADLabel->setText(s.name.c_str());
+            fStatusFADLabel->setToolTip(s.comment.c_str());
+
+            bool enable = false;
+
+            if (s.index<FAD::State::kOffline) // No Dim connection
+            {
+                SetLedColor(fStatusFADLed, kLedGray, time);
+
+                // Timing problem - sometimes they stay gray :(
+                //for (int i=0; i<40; i++)
+                //    SetLedColor(fFadLED[i], kLedGray, time);
+
+                /*
+                 fStatusEventBuilderLabel->setText("Offline");
+                 fStatusEventBuilderLabel->setToolTip("No connection to fadctrl.");
+                 fEvtBldWidget->setEnabled(false);
+
+                 SetLedColor(fStatusEventBuilderLed, kLedGray, time);
+                 */
+            }
+            if (s.index==FAD::State::kOffline) // Dim connection / FTM disconnected
+                SetLedColor(fStatusFADLed, kLedRed, time);
+            if (s.index==FAD::State::kDisconnected) // Dim connection / FTM disconnected
+                SetLedColor(fStatusFADLed, kLedOrange, time);
+	    if (s.index==FAD::State::kConnecting) // Dim connection / FTM disconnected
+            {
+		SetLedColor(fStatusFADLed, kLedYellow, time);
+		// FIXME FIXME FIXME: The LEDs are not displayed when disabled!
+                enable = true;
+            }
+            if (s.index>=FAD::State::kConnected) // Dim connection / FTM connected
+            {
+                SetLedColor(fStatusFADLed, kLedGreen, time);
+                enable = true;
+            }
+
+            fFadWidget->setEnabled(enable);
+
+            fFadStart->setEnabled    (s.index==FAD::State::kOffline);
+            fFadStop->setEnabled     (s.index >FAD::State::kOffline);
+            fFadAbort->setEnabled    (s.index >FAD::State::kOffline);
+            fFadSoftReset->setEnabled(s.index >FAD::State::kOffline);
+            fFadHardReset->setEnabled(s.index >FAD::State::kOffline);
+        }
+
+	if (server=="FSC_CONTROL")
+        {
+            fStatusFSCLabel->setText(s.name.c_str());
+            fStatusFSCLabel->setToolTip(s.comment.c_str());
+
+            bool enable = false;
+
+            if (s.index<FSC::State::kDisconnected)  // No Dim connection
+                SetLedColor(fStatusFSCLed, kLedGray, time);
+            if (s.index==FSC::State::kDisconnected) // Dim connection / FTM disconnected
+                SetLedColor(fStatusFSCLed, kLedRed, time);
+            if (s.index>=FSC::State::kConnected)    // Dim connection / FTM disconnected
+            {
+                SetLedColor(fStatusFSCLed, kLedGreen, time);
+                enable = true;
+            }
+
+            fAuxWidget->setEnabled(enable);
+        }
+
+        if (server=="DRIVE_CONTROL")
+        {
+            fStatusDriveLabel->setText(s.name.c_str());
+            fStatusDriveLabel->setToolTip(s.comment.c_str());
+
+            if (s.index<Drive::State::kDisconnected) // No Dim connection
+                SetLedColor(fStatusDriveLed, kLedGray, time);
+            if (s.index==Drive::State::kDisconnected) // Dim connection / No connection to cosy
+                SetLedColor(fStatusDriveLed, kLedRed, time);
+            if (s.index==Drive::State::kConnected || s.index==Drive::State::kNotReady || s.index==Drive::State::kLocked)  // Not Ready
+                SetLedColor(fStatusDriveLed, kLedGreenBar, time);
+            if (s.index==Drive::State::kConnected || s.index==Drive::State::kArmed)  // Connected / Armed
+                SetLedColor(fStatusDriveLed, kLedGreen, time);
+            if (s.index==Drive::State::kMoving)  // Moving
+                SetLedColor(fStatusDriveLed, kLedInProgress, time);
+            if (s.index==Drive::State::kTracking || s.index==Drive::State::kOnTrack)  // Tracking
+                SetLedColor(fStatusDriveLed, kLedGreenCheck, time);
+            if (s.index>=0xff)  // Error
+                SetLedColor(fStatusDriveLed, kLedGreenWarn, time);
+        }
+
+        if (server=="BIAS_CONTROL")
+        {
+            fStatusBiasLabel->setText(s.name.c_str());
+            fStatusBiasLabel->setToolTip(s.comment.c_str());
+
+            if (s.index<1) // No Dim connection
+                SetLedColor(fStatusBiasLed, kLedGray, time);
+            if (s.index==BIAS::State::kDisconnected) // Dim connection / FTM disconnected
+                SetLedColor(fStatusBiasLed, kLedRed, time);
+            if (s.index==BIAS::State::kConnecting || s.index==BIAS::State::kInitializing) // Connecting / Initializing
+                SetLedColor(fStatusBiasLed, kLedOrange, time);
+            if (s.index==BIAS::State::kVoltageOff || BIAS::State::kLocked) // At reference
+                SetLedColor(fStatusBiasLed, kLedGreenBar, time);
+            if (s.index==BIAS::State::kNotReferenced) // At reference
+                SetLedColor(fStatusBiasLed, kLedGreenWarn, time);
+            if (s.index==BIAS::State::kRamping) // Ramping
+                SetLedColor(fStatusBiasLed, kLedInProgress, time);
+            if (s.index==BIAS::State::kVoltageOn) // At reference
+                SetLedColor(fStatusBiasLed, kLedGreenCheck, time);
+            if (s.index==BIAS::State::kOverCurrent) // Over current
+                SetLedColor(fStatusBiasLed, kLedWarnBorder, time);
+            if (s.index==BIAS::State::kExpertMode) // ExpertMode
+                SetLedColor(fStatusBiasLed, kLedWarnTriangleBorder, time);
+
+            fBiasWidget->setEnabled(s.index>=BIAS::State::kInitializing);
+        }
+
+        if (server=="FEEDBACK")
+        {
+            fStatusFeedbackLabel->setText(s.name.c_str());
+            fStatusFeedbackLabel->setToolTip(s.comment.c_str());
+
+            const bool connected = s.index> Feedback::State::kConnecting;
+            const bool idle      = s.index==Feedback::State::kCalibrated || s.index==Feedback::State::kWaitingForData;
+
+            if (s.index<=Feedback::State::kConnecting) // NoDim / Disconnected
+                SetLedColor(fStatusFeedbackLed, kLedRed, time);
+            if (s.index<Feedback::State::kDisconnected) // No Dim connection
+                SetLedColor(fStatusFeedbackLed, kLedGray, time);
+            if (s.index==Feedback::State::kConnecting) // Connecting
+                SetLedColor(fStatusFeedbackLed, kLedOrange, time);
+            if (connected) // Connected
+                SetLedColor(fStatusFeedbackLed, kLedYellow, time);
+            if (idle)
+                SetLedColor(fStatusFeedbackLed, kLedGreen, time);
+            if (s.index==Feedback::State::kInProgress)
+                SetLedColor(fStatusFeedbackLed, kLedGreenCheck, time);
+            if (s.index==Feedback::State::kCalibrating)
+                SetLedColor(fStatusFeedbackLed, kLedInProgress, time);
+
+            fFeedbackWidget->setEnabled(connected);
+
+            fFeedbackCalibrate->setEnabled(s.index==Feedback::State::kConnected || s.index==Feedback::State::kCalibrated);
+            fFeedbackStart->setEnabled(s.index==Feedback::State::kCalibrated);
+            fFeedbackStop->setEnabled(s.index>Feedback::State::kCalibrated);
+            fFeedbackOvervoltage->setEnabled(connected);
+
+            const bool enable = s.index>=Feedback::State::kCalibrated;
+
+            fFeedbackFrameLeft->setEnabled(enable);
+            fFeedbackCanvLeft->setEnabled(enable);
+
+            fStateFeedback = s.index;
+        }
+
+        if (server=="RATE_CONTROL")
+        {
+            fStatusRateControlLabel->setText(s.name.c_str());
+            fStatusRateControlLabel->setToolTip(s.comment.c_str());
+
+            if (s.index==RateControl::State::kInProgress)
+                SetLedColor(fStatusRateControlLed, kLedGreenCheck, time);
+            if (s.index==RateControl::State::kGlobalThresholdSet)
+                SetLedColor(fStatusRateControlLed, kLedGreen, time);
+            if (s.index==RateControl::State::kSettingGlobalThreshold)
+                SetLedColor(fStatusRateControlLed, kLedInProgress, time);
+            if (s.index==RateControl::State::kConnected)
+                SetLedColor(fStatusRateControlLed, kLedGreenBar, time);
+            if (s.index==RateControl::State::kConnecting)
+                SetLedColor(fStatusRateControlLed, kLedOrange, time);
+            if (s.index<RateControl::State::kConnecting)
+                SetLedColor(fStatusRateControlLed, kLedRed, time);
+            if (s.index<RateControl::State::kDisconnected)
+                SetLedColor(fStatusRateControlLed, kLedGray, time);
+        }
+
+        if (server=="DATA_LOGGER")
+        {
+            fStatusLoggerLabel->setText(s.name.c_str());
+            fStatusLoggerLabel->setToolTip(s.comment.c_str());
+
+            bool enable = true;
+
+            if (s.index<30)   // Ready/Waiting
+                SetLedColor(fStatusLoggerLed, kLedYellow, time);
+            if (s.index==30)   // Ready/Waiting
+                SetLedColor(fStatusLoggerLed, kLedGreen, time);
+            if (s.index<-1)     // Offline
+            {
+                SetLedColor(fStatusLoggerLed, kLedGray, time);
+                enable = false;
+            }
+            if (s.index>=0x100) // Error
+                SetLedColor(fStatusLoggerLed, kLedRed, time);
+            if (s.index==40)   // Logging
+                SetLedColor(fStatusLoggerLed, kLedGreen, time);
+
+            fLoggerWidget->setEnabled(enable);
+            fLoggerStart->setEnabled(s.index>-1 && s.index<30);
+            fLoggerStop->setEnabled(s.index>=30);
+        }
+
+        if (server=="MAGIC_WEATHER")
+        {
+            fStatusWeatherLabel->setText(s.name.c_str());
+
+            if (s.index==MagicWeather::State::kReceiving)
+                SetLedColor(fStatusWeatherLed, kLedGreen, time);
+            if (s.index<MagicWeather::State::kReceiving)
+                SetLedColor(fStatusWeatherLed, kLedRed, time);
+            if (s.index<MagicWeather::State::kConnected)
+                SetLedColor(fStatusWeatherLed, kLedGray, time);
+        }
+
+        if (server=="CHAT")
+        {
+            fStatusChatLabel->setText(s.name.c_str());
+
+            fChatOnline = s.index==0;
+
+            SetLedColor(fStatusChatLed, fChatOnline ? kLedGreen : kLedGray, time);
+
+            fChatSend->setEnabled(fChatOnline);
+            fChatMessage->setEnabled(fChatOnline);
+        }
+
+        if (server=="RATESCAN")
+            fRateScanControls->setEnabled(s.index>=RateScan::State::kConnected);
+
+        if (server=="SCHEDULER")
+        {
+            fStatusSchedulerLabel->setText(s.name.c_str());
+
+            SetLedColor(fStatusSchedulerLed, s.index>=0 ? kLedGreen : kLedRed, time);
+        }
+    }
+
+    void on_fTabWidget_currentChanged(int which)
+    {
+        if (fTabWidget->tabText(which)=="Chat")
+            fTabWidget->setTabIcon(which, QIcon());
+    }
+
+    void handleWrite(const Time &time, const string &text, int qos)
+    {
+        stringstream out;
+
+        if (text.substr(0, 6)=="CHAT: ")
+        {
+            if (qos==MessageImp::kDebug)
+                return;
+
+            out << "<font size='-1' color='navy'>[<B>";
+            out << time.GetAsStr("%H:%M:%S");
+            out << "</B>]</FONT>  " << text.substr(6);
+            fChatText->append(out.str().c_str());
+
+            if (fTabWidget->tabText(fTabWidget->currentIndex())=="Chat")
+                return;
+
+            static int num = 0;
+            if (num++<2)
+                return;
+
+            for (int i=0; i<fTabWidget->count(); i++)
+                if (fTabWidget->tabText(i)=="Chat")
+                {
+                    fTabWidget->setTabIcon(i, QIcon(":/Resources/icons/warning 3.png"));
+                    break;
+                }
+
+            return;
+        }
+
+
+        out << "<font style='font-family:monospace' color='";
+
+        switch (qos)
+        {
+        case kMessage: out << "black";   break;
+        case kInfo:    out << "green";   break;
+        case kWarn:    out << "#FF6600"; break;
+        case kError:   out << "maroon";  break;
+        case kFatal:   out << "maroon";  break;
+        case kDebug:   out << "navy";    break;
+        default:       out << "navy";    break;
+        }
+        out << "'>";
+        out << time.GetAsStr("%H:%M:%S.%f").substr(0,12);
+        out << " - " << text << "</font>";
+
+        fLogText->append(out.str().c_str());
+
+        if (qos>=kWarn && qos!=kDebug && qos!=kComment)
+            fTextEdit->append(out.str().c_str());
+    }
+
+    void IndicateStateChange(const Time &time, const string &server)
+    {
+        const State s = GetState(server, GetCurrentState(server));
+
+        QApplication::postEvent(this,
+           new FunctionEvent(bind(&FactGui::handleStateChanged, this, time, server, s)));
+    }
+
+    int Write(const Time &time, const string &txt, int qos)
+    {
+        QApplication::postEvent(this,
+           new FunctionEvent(bind(&FactGui::handleWrite, this, time, txt, qos)));
+
+        return 0;
+    }
+
+    // ====================== Dim infoHandler================================
+
+    void handleDimService(const string &txt)
+    {
+        fDimSvcText->append(txt.c_str());
+    }
+
+    void infoHandlerService(DimInfo &info)
+    {
+        const string fmt = string(info.getFormat()).empty() ? "C" : info.getFormat();
+
+        stringstream dummy;
+        const Converter conv(dummy, fmt, false);
+
+        const Time tm(info.getTimestamp(), info.getTimestampMillisecs()*1000);
+
+        stringstream out;
+        out << "<font size'-1' color='navy'>[";
+        out << tm.GetAsStr("%H:%M:%S.%f").substr(0,12);
+        out << "]</font>   <B>" << info.getName() << "</B> - ";
+
+        bool iserr = 2;
+        if (!conv)
+        {
+            out << "Compilation of format string '" << fmt << "' failed!";
+        }
+        else
+        {
+            try
+            {
+                const string dat = info.getSize()==0 ? "&lt;empty&gt;" : conv.GetString(info.getData(), info.getSize());
+                out << dat;
+                iserr = info.getSize()==0;
+            }
+            catch (const runtime_error &e)
+            {
+                out << "Conversion to string failed!<pre>" << e.what() << "</pre>";
+            }
+        }
+
+        // srand(hash<string>()(string(info.getName())));
+        // int bg = rand()&0xffffff;
+
+        int bg = hash<string>()(string(info.getName()));
+
+        // allow only light colors
+        bg = ~(bg&0x1f1f1f)&0xffffff;
+
+        if (iserr==2)
+            bg = 0xffffff;
+
+        stringstream bgcol;
+        bgcol << hex << setfill('0') << setw(6) << bg;
+
+        const string col = iserr==0 ? "black" : (iserr==1 ? "#FF6600" : "black");
+        const string str = "<table width='100%' bgcolor=#"+bgcol.str()+"><tr><td><font color='"+col+"'>"+out.str()+"</font></td></tr></table>";
+
+        QApplication::postEvent(this,
+                                new FunctionEvent(bind(&FactGui::handleDimService, this, str)));
+    }
+
+    void CallInfoHandler(void (FactGui::*handler)(const DimData&), const DimData &d)
+    {
+        fInHandler = true;
+        (this->*handler)(d);
+        fInHandler = false;
+    }
+
+    /*
+    void CallInfoHandler(const boost::function<void()> &func)
+    {
+        // This ensures that newly received values are not sent back to the emitter
+        // because changing the value emits the valueChanged signal (or similar)
+        fInHandler = true;
+        func();
+        fInHandler = false;
+    }*/
+
+    void PostInfoHandler(void (FactGui::*handler)(const DimData&))
+    {
+        //const boost::function<void()> f = boost::bind(handler, this, DimData(getInfo()));
+
+        FunctionEvent *evt = new FunctionEvent(bind(&FactGui::CallInfoHandler, this, handler, DimData(getInfo())));
+        // FunctionEvent *evt = new FunctionEvent(boost::bind(&FactGui::CallInfoHandler, this, f));
+        // FunctionEvent *evt = new FunctionEvent(boost::bind(handler, this, DimData(getInfo()))));
+
+        QApplication::postEvent(this, evt);
+    }
+
+    void infoHandler()
+    {
+        // Initialize the time-stamp (what a weird workaround...)
+        if (getInfo())
+            getInfo()->getTimestamp();
+
+        if (getInfo()==&fDimDNS)
+            return PostInfoHandler(&FactGui::handleDimDNS);
+#ifdef DEBUG_DIM
+        cout << "HandleDimInfo " << getInfo()->getName() << endl;
+#endif
+        if (getInfo()==&fDimLoggerStats)
+            return PostInfoHandler(&FactGui::handleLoggerStats);
+
+//        if (getInfo()==&fDimFadFiles)
+//            return PostInfoHandler(&FactGui::handleFadFiles);
+
+        if (getInfo()==&fDimFadWriteStats)
+            return PostInfoHandler(&FactGui::handleFadWriteStats);
+
+        if (getInfo()==&fDimFadConnections)
+            return PostInfoHandler(&FactGui::handleFadConnections);
+
+        if (getInfo()==&fDimFadFwVersion)
+            return PostInfoHandler(&FactGui::handleFadFwVersion);
+
+        if (getInfo()==&fDimFadRunNumber)
+            return PostInfoHandler(&FactGui::handleFadRunNumber);
+
+        if (getInfo()==&fDimFadDNA)
+            return PostInfoHandler(&FactGui::handleFadDNA);
+
+        if (getInfo()==&fDimFadTemperature)
+            return PostInfoHandler(&FactGui::handleFadTemperature);
+
+        if (getInfo()==&fDimFadRefClock)
+            return PostInfoHandler(&FactGui::handleFadRefClock);
+
+	if (getInfo()==&fDimFadRoi)
+            return PostInfoHandler(&FactGui::handleFadRoi);
+
+        if (getInfo()==&fDimFadDac)
+            return PostInfoHandler(&FactGui::handleFadDac);
+
+        if (getInfo()==&fDimFadDrsCalibration)
+            return PostInfoHandler(&FactGui::handleFadDrsCalibration);
+
+        if (getInfo()==&fDimFadPrescaler)
+            return PostInfoHandler(&FactGui::handleFadPrescaler);
+
+        if (getInfo()==&fDimFadStatus)
+            return PostInfoHandler(&FactGui::handleFadStatus);
+
+        if (getInfo()==&fDimFadStatistics1)
+            return PostInfoHandler(&FactGui::handleFadStatistics1);
+
+        //if (getInfo()==&fDimFadStatistics2)
+        //    return PostInfoHandler(&FactGui::handleFadStatistics2);
+
+        if (getInfo()==&fDimFadFileFormat)
+            return PostInfoHandler(&FactGui::handleFadFileFormat);
+
+        if (getInfo()==&fDimFadEvents)
+            return PostInfoHandler(&FactGui::handleFadEvents);
+
+        if (getInfo()==&fDimFadRuns)
+            return PostInfoHandler(&FactGui::handleFadRuns);
+
+        if (getInfo()==&fDimFadStartRun)
+            return PostInfoHandler(&FactGui::handleFadStartRun);
+
+	if (getInfo()==&fDimFadRawData)
+            return PostInfoHandler(&FactGui::handleFadRawData);
+
+        if (getInfo()==&fDimFadEventData)
+            return PostInfoHandler(&FactGui::handleFadEventData);
+
+/*
+        if (getInfo()==&fDimFadSetup)
+            return PostInfoHandler(&FactGui::handleFadSetup);
+*/
+        if (getInfo()==&fDimLoggerFilenameNight)
+            return PostInfoHandler(&FactGui::handleLoggerFilenameNight);
+
+        if (getInfo()==&fDimLoggerNumSubs)
+            return PostInfoHandler(&FactGui::handleLoggerNumSubs);
+
+        if (getInfo()==&fDimLoggerFilenameRun)
+            return PostInfoHandler(&FactGui::handleLoggerFilenameRun);
+
+        if (getInfo()==&fDimFtmTriggerRates)
+            return PostInfoHandler(&FactGui::handleFtmTriggerRates);
+
+        if (getInfo()==&fDimFtmCounter)
+            return PostInfoHandler(&FactGui::handleFtmCounter);
+
+        if (getInfo()==&fDimFtmDynamicData)
+            return PostInfoHandler(&FactGui::handleFtmDynamicData);
+
+        if (getInfo()==&fDimFtmPassport)
+            return PostInfoHandler(&FactGui::handleFtmPassport);
+
+        if (getInfo()==&fDimFtmFtuList)
+            return PostInfoHandler(&FactGui::handleFtmFtuList);
+
+        if (getInfo()==&fDimFtmStaticData)
+            return PostInfoHandler(&FactGui::handleFtmStaticData);
+
+        if (getInfo()==&fDimFtmError)
+            return PostInfoHandler(&FactGui::handleFtmError);
+
+        if (getInfo()==&fDimFscTemp)
+            return PostInfoHandler(&FactGui::handleFscTemp);
+
+        if (getInfo()==&fDimFscVolt)
+            return PostInfoHandler(&FactGui::handleFscVolt);
+
+        if (getInfo()==&fDimFscCurrent)
+            return PostInfoHandler(&FactGui::handleFscCurrent);
+
+        if (getInfo()==&fDimFscHumidity)
+            return PostInfoHandler(&FactGui::handleFscHumidity);
+
+        //if (getInfo()==&fDimBiasNominal)
+        //    return PostInfoHandler(&FactGui::handleBiasNominal);
+
+        if (getInfo()==&fDimBiasVolt)
+            return PostInfoHandler(&FactGui::handleBiasVolt);
+
+        if (getInfo()==&fDimBiasDac)
+            return PostInfoHandler(&FactGui::handleBiasDac);
+
+        if (getInfo()==&fDimBiasCurrent)
+            return PostInfoHandler(&FactGui::handleBiasCurrent);
+
+        if (getInfo()==&fDimFeedbackCalibrated)
+            return PostInfoHandler(&FactGui::handleFeedbackCalibratedCurrents);
+
+        if (getInfo()==&fDimRateScan)
+            return PostInfoHandler(&FactGui::handleRateScan);
+
+        if (getInfo()==&fDimMagicWeather)
+            return PostInfoHandler(&FactGui::handleMagicWeather);
+
+//        if (getInfo()==&fDimFadFiles)
+//            return PostInfoHandler(&FactGui::handleFadFiles);
+
+        for (map<string,DimInfo*>::iterator i=fServices.begin(); i!=fServices.end(); i++)
+            if (i->second==getInfo())
+            {
+                infoHandlerService(*i->second);
+                return;
+            }
+
+        //DimNetwork::infoHandler();
+    }
+
+
+    // ======================================================================
+
+    bool event(QEvent *evt)
+    {
+        if (dynamic_cast<FunctionEvent*>(evt))
+            return static_cast<FunctionEvent*>(evt)->Exec();
+
+        if (dynamic_cast<CheckBoxEvent*>(evt))
+        {
+            const QStandardItem &item = static_cast<CheckBoxEvent*>(evt)->item;
+            const QStandardItem *par  = item.parent();
+            if (par)
+            {
+                const QString server  = par->text();
+                const QString service = item.text();
+
+                const string s = (server+'/'+service).toStdString();
+
+                if (item.checkState()==Qt::Checked)
+                    SubscribeService(s);
+                else
+                    UnsubscribeService(s);
+            }
+        }
+
+        return MainWindow::event(evt); // unrecognized
+    }
+
+    void on_fDimCmdSend_clicked()
+    {
+        const QString server    = fDimCmdServers->currentIndex().data().toString();
+        const QString command   = fDimCmdCommands->currentIndex().data().toString();
+        const QString arguments = fDimCmdLineEdit->displayText();
+
+        // FIXME: Sending a command exactly when the info Handler changes
+        //        the list it might lead to confusion.
+        try
+        {
+            SendDimCommand(server.toStdString(), command.toStdString()+" "+arguments.toStdString());
+            fTextEdit->append("<font color='green'>Command '"+server+'/'+command+"' successfully emitted.</font>");
+            fDimCmdLineEdit->clear();
+        }
+        catch (const runtime_error &e)
+        {
+            stringstream txt;
+            txt << e.what();
+
+            string buffer;
+            while (getline(txt, buffer, '\n'))
+                fTextEdit->append(("<font color='red'><pre>"+buffer+"</pre></font>").c_str());
+        }
+    }
+
+#ifdef HAVE_ROOT
+    void slot_RootEventProcessed(TObject *obj, unsigned int evt, TCanvas *canv)
+    {
+        // kMousePressEvent       // TCanvas processed QEvent mousePressEvent
+        // kMouseMoveEvent        // TCanvas processed QEvent mouseMoveEvent
+        // kMouseReleaseEvent     // TCanvas processed QEvent mouseReleaseEvent
+        // kMouseDoubleClickEvent // TCanvas processed QEvent mouseDoubleClickEvent
+        // kKeyPressEvent         // TCanvas processed QEvent keyPressEvent
+        // kEnterEvent            // TCanvas processed QEvent enterEvent
+        // kLeaveEvent            // TCanvas processed QEvent leaveEvent
+
+        if (dynamic_cast<TCanvas*>(obj))
+            return;
+
+        TQtWidget *tipped = static_cast<TQtWidget*>(sender());
+
+        if (evt==11/*kMouseReleaseEvent*/)
+            return;
+
+        if (evt==61/*kMouseDoubleClickEvent*/)
+            return;
+
+        if (obj)
+        {
+            // Find the object which will get picked by the GetObjectInfo
+            // due to buffer overflows in many root-versions
+            // in TH1 and TProfile we have to work around and implement
+            // our own GetObjectInfo which make everything a bit more
+            // complicated.
+            canv->cd();
+#if ROOT_VERSION_CODE > ROOT_VERSION(5,22,00)
+            const char *objectInfo =
+                obj->GetObjectInfo(tipped->GetEventX(),tipped->GetEventY());
+#else
+            const char *objectInfo = dynamic_cast<TH1*>(obj) ?
+                "" : obj->GetObjectInfo(tipped->GetEventX(),tipped->GetEventY());
+#endif
+
+            QString tipText;
+            tipText += obj->GetName();
+            tipText += " [";
+            tipText += obj->ClassName();
+            tipText += "]: ";
+            tipText += objectInfo;
+
+            fStatusBar->showMessage(tipText, 3000);
+        }
+
+        gSystem->DispatchOneEvent(kFALSE);
+        //gSystem->ProcessEvents();
+        //QWhatsThis::display(tipText)
+    }
+
+    void slot_RootUpdate()
+    {
+        gSystem->DispatchOneEvent(kFALSE);
+        //gSystem->ProcessEvents();
+        QTimer::singleShot(10, this, SLOT(slot_RootUpdate()));
+    }
+#endif
+
+    void ChoosePatchThreshold(Camera &cam, int isw)
+    {
+        cam.Reset();
+
+        fThresholdIdx->setValue(isw);
+
+        const int ihw = isw<0 ? 0 : fPatchMapHW[isw];
+
+        fPatchRate->setEnabled(isw>=0);
+        fThresholdCrate->setEnabled(isw>=0);
+        fThresholdBoard->setEnabled(isw>=0);
+        fThresholdPatch->setEnabled(isw>=0);
+
+        if (isw<0)
+            return;
+
+        const int patch = ihw%4;
+        const int board = (ihw/4)%10;
+        const int crate = (ihw/4)/10;
+
+        fInChoosePatchTH = true;
+
+        fThresholdCrate->setValue(crate);
+        fThresholdBoard->setValue(board);
+        fThresholdPatch->setValue(patch);
+
+        fInChoosePatchTH = false;
+
+        fThresholdVal->setValue(fFtmStaticData.fThreshold[ihw]);
+        fPatchRate->setValue(fTriggerRates.fPatchRate[ihw]);
+        fBoardRate->setValue(fTriggerRates.fBoardRate[ihw/4]);
+
+        // Loop over the software idx of all pixels
+//        for (unsigned int i=0; i<1440; i++)
+//            if (fPatchHW[i]==ihw)
+//                cam.SetBold(i);
+    }
+
+    void slot_ChoosePixelThreshold(int isw)
+    {
+        fPixelIdx->setValue(isw);
+
+        const PixelMapEntry &entry = fPixelMap.index(isw);
+        fPixelEnable->setChecked(fFtmStaticData.IsEnabled(entry.hw()));
+    }
+
+    void slot_CameraDoubleClick(int isw)
+    {
+        fPixelIdx->setValue(isw);
+
+        const PixelMapEntry &entry = fPixelMap.index(isw);
+        Dim::SendCommand("FTM_CONTROL/TOGGLE_PIXEL", uint16_t(entry.hw()));
+    }
+
+    void slot_CameraMouseMove(int isw)
+    {
+        const PixelMapEntry &entry = fPixelMap.index(isw);
+
+        QString tipText;
+        tipText += fRatesCanv->GetName();
+        ostringstream str;
+        str << setfill('0') <<
+            "  ||  HW: " << entry.crate() << "|" << entry.board() << "|" << entry.patch() << "|" << entry.pixel() << " (crate|board|patch|pixel)" <<
+            "  ||  HV: " << entry.hv_board << "|" << setw(2) << entry.hv_channel << " (board|channel)" <<
+            "  ||  ID: " << isw;
+
+
+        tipText += str.str().c_str();
+        fStatusBar->showMessage(tipText, 3000);
+    }
+
+    void on_fPixelIdx_valueChanged(int isw)
+    {
+        int ii = 0;
+        for (; ii<160; ii++)
+            if (fPixelMap.index(isw).hw()/9==fPatchMapHW[ii])
+                break;
+
+        fRatesCanv->SetWhite(isw);
+        ChoosePatchThreshold(*fRatesCanv, ii);
+
+        const PixelMapEntry &entry = fPixelMap.index(isw);
+        fPixelEnable->setChecked(fFtmStaticData.IsEnabled(entry.hw()));
+    }
+
+    // ------------------- Bias display ---------------------
+
+    void UpdateBiasValues()
+    {
+        const int b = fBiasHvBoard->value();
+        const int c = fBiasHvChannel->value();
+
+        const int ihw = b*32+c;
+
+        if (fVecBiasVolt.size()>0)
+        {
+            fBiasVoltCur->setValue(fVecBiasVolt[ihw]);
+            SetLedColor(fBiasNominalLed,
+                        fVecBiasDac[ihw]==fVecBiasDac[ihw+416]?kLedGreen:kLedRed, Time());
+        }
+
+        if (fVecBiasCurrent.size()>0)
+        {
+            const double val = abs(fVecBiasCurrent[ihw]) * 5000./4096;
+            fBiasCurrent->setValue(val);
+            SetLedColor(fBiasOverCurrentLed,
+                        fVecBiasCurrent[ihw]<0?kLedRed:kLedGreen, Time());
+        }
+
+        const bool calibrated = fStateFeedback>=Feedback::State::kCalibrated &&
+            fVecFeedbackCurrents.size()>0;
+
+        fBiasCalibrated->setValue(calibrated ? fVecFeedbackCurrents[ihw] : 0);
+        fBiasCalibrated->setEnabled(calibrated);
+    }
+
+    void UpdateBiasCam(const PixelMapEntry &entry)
+    {
+        fInChooseBiasCam = true;
+
+        fBiasCamCrate->setValue(entry.crate());
+        fBiasCamBoard->setValue(entry.board());
+        fBiasCamPatch->setValue(entry.patch());
+        fBiasCamPixel->setValue(entry.pixel());
+
+        fInChooseBiasCam = false;
+    }
+
+    void BiasHvChannelChanged()
+    {
+        if (fInChooseBiasHv)
+            return;
+
+        const int b  = fBiasHvBoard->value();
+        const int ch = fBiasHvChannel->value();
+
+        // FIXME: Mark corresponding patch in camera
+        const PixelMapEntry &entry = fPixelMap.hv(b, ch);
+        fBiasCamV->SetWhite(entry.index);
+        fBiasCamA->SetWhite(entry.index);
+        fBiasCamV->updateCamera();
+        fBiasCamA->updateCamera();
+
+        UpdateBiasCam(entry);
+        UpdateBiasValues();
+    }
+
+    void UpdateBiasHv(const PixelMapEntry &entry)
+    {
+        fInChooseBiasHv = true;
+
+        fBiasHvBoard->setValue(entry.hv_board);
+        fBiasHvChannel->setValue(entry.hv_channel);
+
+        fInChooseBiasHv = false;
+    }
+
+    void BiasCamChannelChanged()
+    {
+        if (fInChooseBiasCam)
+            return;
+
+        const int crate = fBiasCamCrate->value();
+        const int board = fBiasCamBoard->value();
+        const int patch = fBiasCamPatch->value();
+        const int pixel = fBiasCamPixel->value();
+
+        // FIXME: Display corresponding patches
+        const PixelMapEntry &entry = fPixelMap.cbpx(crate, board, patch, pixel);
+        fBiasCamV->SetWhite(entry.index);
+        fBiasCamA->SetWhite(entry.index);
+        fBiasCamV->updateCamera();
+        fBiasCamA->updateCamera();
+
+        UpdateBiasHv(entry);
+        UpdateBiasValues();
+    }
+
+    void slot_ChooseBiasChannel(int isw)
+    {
+        const PixelMapEntry &entry = fPixelMap.index(isw);
+
+        UpdateBiasHv(entry);
+        UpdateBiasCam(entry);
+        UpdateBiasValues();
+    }
+
+    void on_fBiasDispRefVolt_stateChanged(int = 0)
+    {
+        // FIXME: Display patches for which ref==cur
+
+        valarray<double> dat(0., 1440);
+        fBiasCamV->setTitle("Applied BIAS voltage");
+
+        if (fVecBiasVolt.size()>0 && fVecBiasDac.size()>0)
+        {
+            for (int i=0; i<1440; i++)
+            {
+                const PixelMapEntry &entry = fPixelMap.index(i);
+
+                dat[i] = fVecBiasVolt[entry.hv()];
+                fBiasCamV->highlightPixel(i, fVecBiasDac[entry.hv()]!=fVecBiasDac[entry.hv()+416]);
+            }
+
+            fBiasCamV->SetData(dat);
+        }
+
+        fBiasCamV->updateCamera();
+    }
+
+    // ------------------------------------------------------
+
+    void on_fPixelEnable_stateChanged(int b)
+    {
+        if (fInHandler)
+            return;
+
+        const PixelMapEntry &entry = fPixelMap.index(fPixelIdx->value());
+
+        Dim::SendCommand(b==Qt::Unchecked ?
+                         "FTM_CONTROL/DISABLE_PIXEL" : "FTM_CONTROL/ENABLE_PIXEL",
+                         uint16_t(entry.hw()));
+    }
+
+    void on_fPixelDisableOthers_clicked()
+    {
+        const PixelMapEntry &entry = fPixelMap.index(fPixelIdx->value());
+        Dim::SendCommand("FTM_CONTROL/DISABLE_ALL_PIXELS_EXCEPT", uint16_t(entry.hw()));
+    }
+
+    void on_fThresholdDisableOthers_clicked()
+    {
+        const int16_t isw = fThresholdIdx->value();
+        const int16_t ihw = isw<0 ? -1 : fPatchMapHW[isw];
+        if (ihw<0)
+            return;
+
+        Dim::SendCommand("FTM_CONTROL/DISABLE_ALL_PATCHES_EXCEPT", ihw);
+    }
+
+    void on_fThresholdEnablePatch_clicked()
+    {
+        const int16_t isw = fThresholdIdx->value();
+        const int16_t ihw = isw<0 ? -1 : fPatchMapHW[isw];
+       if (ihw<0)
+            return;
+
+        Dim::SendCommand("FTM_CONTROL/ENABLE_PATCH", ihw);
+    }
+
+    void on_fThresholdDisablePatch_clicked()
+    {
+        const int16_t isw = fThresholdIdx->value();
+        const int16_t ihw = isw<0 ? -1 : fPatchMapHW[isw];
+        if (ihw<0)
+            return;
+
+        Dim::SendCommand("FTM_CONTROL/DISABLE_PATCH", ihw);
+    }
+
+    void on_fThresholdVal_valueChanged(int v)
+    {
+        fThresholdVolt->setValue(2500./4095*v);
+
+        const int32_t isw = fThresholdIdx->value();
+        const int32_t ihw = isw<0 ? -1 : fPatchMapHW[isw];
+
+        const int32_t d[2] = { ihw, v };
+
+        if (!fInHandler)
+            Dim::SendCommand("FTM_CONTROL/SET_THRESHOLD", d);
+    }
+
+    TGraph fGraphFtmTemp[4];
+    TGraph fGraphFtmRate;
+    TGraph fGraphPatchRate[160];
+    TGraph fGraphBoardRate[40];
+
+#ifdef HAVE_ROOT
+    TH1 *DrawTimeFrame(const char *ytitle)
+    {
+        const double tm = Time().RootTime();
+
+        TH1F *h=new TH1F("TimeFrame", "", 1, tm, tm+60);//Time().RootTime()-1./24/60/60, Time().RootTime());
+        h->SetDirectory(0);
+        h->SetBit(kCanDelete);
+        h->SetStats(kFALSE);
+//        h.SetMinimum(0);
+//        h.SetMaximum(1);
+        h->SetXTitle("Time");
+        h->SetYTitle(ytitle);
+        h->GetXaxis()->CenterTitle();
+	h->GetYaxis()->CenterTitle();
+        h->GetXaxis()->SetTimeDisplay(true);
+        h->GetXaxis()->SetTimeFormat("%Mh%S'%F1995-01-01 00:00:00 GMT");
+	h->GetXaxis()->SetLabelSize(0.025);
+	h->GetYaxis()->SetLabelSize(0.025);
+        h->GetYaxis()->SetTitleOffset(1.2);
+	//        h.GetYaxis()->SetTitleSize(1.2);
+        return h;
+    }
+#endif
+
+    pair<string,string> Split(const string &str) const
+    {
+        const size_t p = str.find_first_of('|');
+        if (p==string::npos)
+            return make_pair(str, "");
+
+        return make_pair(str.substr(0, p), str.substr(p+1));
+    }
+
+public:
+    FactGui(Configuration &conf) :
+        fFtuStatus(40), 
+        /*fPixelMapHW(1440),*/ fPatchMapHW(160), 
+        fInChoosePatchTH(false),
+        fInChooseBiasHv(false), fInChooseBiasCam(false),
+        fDimDNS("DIS_DNS/VERSION_NUMBER", 1, int(0), this),
+        //-
+        fDimLoggerStats        ("DATA_LOGGER/STATS",            (void*)NULL, 0, this),
+        fDimLoggerFilenameNight("DATA_LOGGER/FILENAME_NIGHTLY", (void*)NULL, 0, this),
+        fDimLoggerFilenameRun  ("DATA_LOGGER/FILENAME_RUN",     (void*)NULL, 0, this),
+        fDimLoggerNumSubs      ("DATA_LOGGER/NUM_SUBS",         (void*)NULL, 0, this),
+        //-
+        fDimFtmPassport        ("FTM_CONTROL/PASSPORT",         (void*)NULL, 0, this),
+        fDimFtmTriggerRates    ("FTM_CONTROL/TRIGGER_RATES",    (void*)NULL, 0, this),
+        fDimFtmError           ("FTM_CONTROL/ERROR",            (void*)NULL, 0, this),
+        fDimFtmFtuList         ("FTM_CONTROL/FTU_LIST",         (void*)NULL, 0, this),
+        fDimFtmStaticData      ("FTM_CONTROL/STATIC_DATA",      (void*)NULL, 0, this),
+        fDimFtmDynamicData     ("FTM_CONTROL/DYNAMIC_DATA",     (void*)NULL, 0, this),
+        fDimFtmCounter         ("FTM_CONTROL/COUNTER",          (void*)NULL, 0, this),
+        //-
+        fDimFadWriteStats      ("FAD_CONTROL/STATS",              (void*)NULL, 0, this),
+        fDimFadStartRun        ("FAD_CONTROL/START_RUN",          (void*)NULL, 0, this),
+        fDimFadRuns            ("FAD_CONTROL/RUNS",               (void*)NULL, 0, this),
+        fDimFadEvents          ("FAD_CONTROL/EVENTS",             (void*)NULL, 0, this),
+        fDimFadRawData         ("FAD_CONTROL/RAW_DATA",           (void*)NULL, 0, this),
+        fDimFadEventData       ("FAD_CONTROL/EVENT_DATA",         (void*)NULL, 0, this),
+        fDimFadConnections     ("FAD_CONTROL/CONNECTIONS",        (void*)NULL, 0, this),
+        fDimFadFwVersion       ("FAD_CONTROL/FIRMWARE_VERSION",   (void*)NULL, 0, this),
+        fDimFadRunNumber       ("FAD_CONTROL/RUN_NUMBER",         (void*)NULL, 0, this),
+        fDimFadDNA             ("FAD_CONTROL/DNA",                (void*)NULL, 0, this),
+        fDimFadTemperature     ("FAD_CONTROL/TEMPERATURE",        (void*)NULL, 0, this),
+        fDimFadPrescaler       ("FAD_CONTROL/PRESCALER",          (void*)NULL, 0, this),
+        fDimFadRefClock        ("FAD_CONTROL/REFERENCE_CLOCK",    (void*)NULL, 0, this),
+        fDimFadRoi             ("FAD_CONTROL/REGION_OF_INTEREST", (void*)NULL, 0, this),
+        fDimFadDac             ("FAD_CONTROL/DAC",                (void*)NULL, 0, this),
+        fDimFadDrsCalibration  ("FAD_CONTROL/DRS_CALIBRATION",    (void*)NULL, 0, this),
+        fDimFadStatus          ("FAD_CONTROL/STATUS",             (void*)NULL, 0, this),
+        fDimFadStatistics1     ("FAD_CONTROL/STATISTICS1",        (void*)NULL, 0, this),
+        //fDimFadStatistics2     ("FAD_CONTROL/STATISTICS2",        (void*)NULL, 0, this),
+        fDimFadFileFormat      ("FAD_CONTROL/FILE_FORMAT",        (void*)NULL, 0, this),
+        //-
+        fDimFscTemp            ("FSC_CONTROL/TEMPERATURE",        (void*)NULL, 0, this),
+        fDimFscVolt            ("FSC_CONTROL/VOLTAGE",            (void*)NULL, 0, this),
+        fDimFscCurrent         ("FSC_CONTROL/CURRENT",            (void*)NULL, 0, this),
+        fDimFscHumidity        ("FSC_CONTROL/HUMIDITY",           (void*)NULL, 0, this),
+        //-
+        fDimFeedbackCalibrated ("FEEDBACK/CALIBRATED_CURRENTS",   (void*)NULL, 0, this),
+        //-
+        fDimBiasNominal        ("BIAS_CONTROL/NOMINAL",           (void*)NULL, 0, this),
+        fDimBiasVolt           ("BIAS_CONTROL/VOLTAGE",           (void*)NULL, 0, this),
+        fDimBiasDac            ("BIAS_CONTROL/DAC",               (void*)NULL, 0, this),
+        fDimBiasCurrent        ("BIAS_CONTROL/CURRENT",           (void*)NULL, 0, this),
+        //-
+        fDimRateScan           ("RATE_SCAN/DATA",                 (void*)NULL, 0, this),
+        //-
+        fDimMagicWeather       ("MAGIC_WEATHER/DATA",             (void*)NULL, 0, this),
+        //-
+        fDimVersion(0),
+        fFreeSpaceLogger(UINT64_MAX), fFreeSpaceData(UINT64_MAX),
+        fEventData(0),
+        fDrsCalibration(1440*1024*6+160*1024*2),
+        fTimeStamp0(0)
+    {
+        fClockCondFreq->addItem("--- Hz",  QVariant(-1));
+        fClockCondFreq->addItem("800 MHz", QVariant(800));
+        fClockCondFreq->addItem("1 GHz",   QVariant(1000));
+        fClockCondFreq->addItem("2 GHz",   QVariant(2000));
+        fClockCondFreq->addItem("3 GHz",   QVariant(3000));
+        fClockCondFreq->addItem("4 GHz",   QVariant(4000));
+        fClockCondFreq->addItem("5 GHz",   QVariant(5000));
+
+        cout << "-- run counter ---" << endl;
+        fMcpNumEvents->addItem("unlimited", QVariant(0));
+        const vector<uint32_t> runcount = conf.Vec<uint32_t>("run-count");
+        for (vector<uint32_t>::const_iterator it=runcount.begin(); it!=runcount.end(); it++)
+        {
+            cout << *it << endl;
+            ostringstream str;
+            str << *it;
+            fMcpNumEvents->addItem(str.str().c_str(), QVariant(*it));
+        }
+
+        cout << "-- run times ---" << endl;
+        fMcpTime->addItem("unlimited", QVariant(0));
+        const vector<string> runtime = conf.Vec<string>("run-time");
+        for (vector<string>::const_iterator it=runtime.begin(); it!=runtime.end(); it++)
+        {
+            const pair<string,string> p = Split(*it);
+            cout << *it << "|" << p.second << "|" << p.first << "|" << endl;
+            fMcpTime->addItem(p.second.c_str(), QVariant(stoi(p.first)));
+        }
+
+        cout << "-- run types ---" << endl;
+        const vector<string> runtype = conf.Vec<string>("run-type");
+        for (vector<string>::const_iterator it=runtype.begin(); it!=runtype.end(); it++)
+        {
+            const pair<string,string> p = Split(*it);
+            cout << *it << "|" << p.second << "|" << p.first << "|" << endl;
+            fMcpRunType->addItem(p.second.c_str(), QVariant(p.first.c_str()));
+        }
+
+        fTriggerWidget->setEnabled(false);
+        fFtuWidget->setEnabled(false);
+        fFtuGroupEnable->setEnabled(false);
+        fRatesControls->setEnabled(false);
+        fFadWidget->setEnabled(false);
+        fGroupEthernet->setEnabled(false);
+        fGroupOutput->setEnabled(false);
+        fLoggerWidget->setEnabled(false);
+        fBiasWidget->setEnabled(false);
+        fAuxWidget->setEnabled(false);
+
+        fChatSend->setEnabled(false);
+        fChatMessage->setEnabled(false);
+
+        DimClient::sendCommand("CHAT/MSG", "GUI online.");
+        // + MessageDimRX
+
+        // --------------------------------------------------------------------------
+
+        if (!fPixelMap.Read(conf.Get<string>("pixel-map-file")))
+        {
+            cerr << "ERROR - Problems reading " << conf.Get<string>("pixel-map-file") << endl;
+            exit(-1);
+        }
+
+        // --------------------------------------------------------------------------
+
+        ifstream fin3("PatchList.txt");
+
+        string buf;
+
+        int l = 0;
+        while (getline(fin3, buf, '\n'))
+        {
+            buf = Tools::Trim(buf);
+            if (buf[0]=='#')
+                continue;
+
+            unsigned int softid, hardid;
+
+            stringstream str(buf);
+
+            str >> softid;
+            str >> hardid;
+
+            if (softid>=fPatchMapHW.size())
+                continue;
+
+            fPatchMapHW[softid] = hardid-1;
+
+            l++;
+        }
+
+        if (l!=160)
+            cerr << "WARNING - Problems reading PatchList.txt" << endl;
+
+        // --------------------------------------------------------------------------
+
+        fCommentsWidget->setEnabled(false);
+
+        static const boost::regex expr("(([[:word:].-]+)(:(.+))?@)?([[:word:].-]+)(:([[:digit:]]+))?(/([[:word:].-]+))");
+
+        const string database = conf.Get<string>("CommentDB");
+
+        if (!database.empty())
+        {
+            boost::smatch what;
+            if (!boost::regex_match(database, what, expr, boost::match_extra))
+                throw runtime_error("Couldn't parse '"+database+"'.");
+
+            if (what.size()!=10)
+                throw runtime_error("Error parsing '"+database+"'.");
+
+            const string user   = what[2];
+            const string passwd = what[4];
+            const string server = what[5];
+            const string db     = what[9];
+            const int port      = atoi(string(what[7]).c_str());
+
+            QSqlDatabase qdb = QSqlDatabase::addDatabase("QMYSQL");
+            qdb.setHostName(server.c_str());
+            qdb.setDatabaseName(db.c_str());
+            qdb.setUserName(user.c_str());
+            qdb.setPassword(passwd.c_str());
+            qdb.setPort(port);
+            qdb.setConnectOptions("CLIENT_SSL=1;MYSQL_OPT_RECONNECT=1");
+            if (qdb.open())
+            {
+                QSqlTableModel *model = new QSqlTableModel(fTableComments, qdb);
+                model->setTable("runcomments");
+                model->setEditStrategy(QSqlTableModel::OnManualSubmit);
+
+                const bool ok2 = model->select();
+
+                if (ok2)
+                {
+                    fTableComments->setModel(model);
+                    fTableComments->resizeColumnsToContents();
+                    fTableComments->resizeRowsToContents();
+
+                    connect(fCommentSubmit, SIGNAL(clicked()), model, SLOT(submitAll()));
+                    connect(fCommentRevert, SIGNAL(clicked()), model, SLOT(revertAll()));
+                    connect(fCommentUpdateLayout, SIGNAL(clicked()), fTableComments, SLOT(resizeColumnsToContents()));
+                    connect(fCommentUpdateLayout, SIGNAL(clicked()), fTableComments, SLOT(resizeRowsToContents()));
+
+                    fCommentsWidget->setEnabled(true);
+                }
+                else
+                    cout << "\n==> ERROR: Select on table failed.\n" << endl;
+            }
+            else
+                cout << "\n==> ERROR: Connection to database failed:\n           "
+                    << qdb.lastError().text().toStdString() << endl << endl;
+        }
+
+        // --------------------------------------------------------------------------
+#ifdef HAVE_ROOT
+
+        fGraphFeedbackDev.SetLineColor(kBlue);
+        fGraphFeedbackDev.SetMarkerColor(kBlue);
+        fGraphFeedbackDev.SetMarkerStyle(kFullDotMedium);
+
+        fGraphFeedbackCmd.SetLineColor(kBlue);
+        fGraphFeedbackCmd.SetMarkerColor(kBlue);
+        fGraphFeedbackCmd.SetMarkerStyle(kFullDotMedium);
+
+        // Evolution of control deviation
+        // Evolution of command values (bias voltage change)
+        fGraphFeedbackDev.SetName("ControlDev");
+        fGraphFeedbackCmd.SetName("CommandVal");
+
+        TCanvas *c = fFeedbackDev->GetCanvas();
+        c->SetBorderMode(0);
+        c->SetFrameBorderMode(0);
+        c->SetFillColor(kWhite);
+        c->SetRightMargin(0.03);
+        c->SetTopMargin(0.03);
+        c->SetGrid();
+
+	TH1 *hf = DrawTimeFrame("Overvoltage [V]   ");
+        hf->GetXaxis()->SetLabelSize(0.07);
+        hf->GetYaxis()->SetLabelSize(0.07);
+        hf->GetYaxis()->SetTitleSize(0.08);
+        hf->GetYaxis()->SetTitleOffset(0.55);
+        hf->GetXaxis()->SetTitle("");
+        hf->GetYaxis()->SetRangeUser(0, 1.5);
+
+        c->GetListOfPrimitives()->Add(hf, "");
+        c->GetListOfPrimitives()->Add(&fGraphFeedbackDev, "LP");
+
+        c = fFeedbackCmd->GetCanvas();
+        c->SetBorderMode(0);
+        c->SetFrameBorderMode(0);
+        c->SetFillColor(kWhite);
+        c->SetRightMargin(0.03);
+        c->SetTopMargin(0.03);
+        c->SetGrid();
+
+        hf = DrawTimeFrame("Command temp delta [V]   ");
+        hf->GetXaxis()->SetLabelSize(0.07);
+        hf->GetYaxis()->SetLabelSize(0.07);
+        hf->GetYaxis()->SetTitleSize(0.08);
+        hf->GetYaxis()->SetTitleOffset(0.55);
+        hf->GetXaxis()->SetTitle("");
+        hf->GetYaxis()->SetRangeUser(-2, 2);
+
+        c->GetListOfPrimitives()->Add(hf, "");
+        c->GetListOfPrimitives()->Add(&fGraphFeedbackCmd, "LP");
+
+        // --------------------------------------------------------------------------
+
+        c = fRateScanCanv->GetCanvas();
+        //c->SetBit(TCanvas::kNoContextMenu);
+        c->SetBorderMode(0);
+        c->SetFrameBorderMode(0);
+        c->SetFillColor(kWhite);
+        c->SetRightMargin(0.03);
+        c->SetTopMargin(0.03);
+        c->SetGrid();
+
+        TH1F *h=new TH1F("Frame", "", 1, 0, 1);
+        h->SetDirectory(0);
+        h->SetBit(kCanDelete);
+        h->SetStats(kFALSE);
+        h->SetXTitle("Threshold [DAC]");
+        h->SetYTitle("Rate [Hz]");
+        h->GetXaxis()->CenterTitle();
+	h->GetYaxis()->CenterTitle();
+	h->GetXaxis()->SetLabelSize(0.025);
+	h->GetYaxis()->SetLabelSize(0.025);
+        h->GetYaxis()->SetTitleOffset(1.2);
+        c->GetListOfPrimitives()->Add(h, "");
+
+        fGraphRateScan[0].SetName("CameraRate");
+        for (int i=0; i<40; i++)
+        {
+            fGraphRateScan[i+1].SetName("BoardRate");
+            fGraphRateScan[i+1].SetMarkerStyle(kFullDotMedium);
+        }
+        for (int i=0; i<160; i++)
+        {
+            fGraphRateScan[i+41].SetName("PatchRate");
+            fGraphRateScan[i+41].SetMarkerStyle(kFullDotMedium);
+        }
+
+        fGraphRateScan[0].SetLineColor(kBlue);
+        fGraphRateScan[0].SetMarkerColor(kBlue);
+        fGraphRateScan[0].SetMarkerStyle(kFullDotSmall);
+        c->GetListOfPrimitives()->Add(&fGraphRateScan[0], "LP");
+
+        // --------------------------------------------------------------------------
+
+        c = fFtmRateCanv->GetCanvas();
+        //c->SetBit(TCanvas::kNoContextMenu);
+        c->SetBorderMode(0);
+        c->SetFrameBorderMode(0);
+        c->SetFillColor(kWhite);
+        c->SetRightMargin(0.03);
+        c->SetTopMargin(0.03);
+        c->SetGrid();
+
+	hf = DrawTimeFrame("Trigger rate [Hz]");
+        hf->GetYaxis()->SetRangeUser(0, 1010);
+
+        for (int i=0; i<160; i++)
+        {
+            fGraphPatchRate[i].SetName("PatchRate");
+            //fGraphPatchRate[i].SetLineColor(kBlue);
+            //fGraphPatchRate[i].SetMarkerColor(kBlue);
+            fGraphPatchRate[i].SetMarkerStyle(kFullDotMedium);
+        }
+        for (int i=0; i<40; i++)
+        {
+            fGraphBoardRate[i].SetName("BoardRate");
+            //fGraphBoardRate[i].SetLineColor(kBlue);
+            //fGraphBoardRate[i].SetMarkerColor(kBlue);
+            fGraphBoardRate[i].SetMarkerStyle(kFullDotMedium);
+        }
+
+        fGraphFtmRate.SetLineColor(kBlue);
+        fGraphFtmRate.SetMarkerColor(kBlue);
+        fGraphFtmRate.SetMarkerStyle(kFullDotSmall);
+
+        c->GetListOfPrimitives()->Add(hf, "");
+        c->GetListOfPrimitives()->Add(&fGraphFtmRate, "LP");
+
+        /*
+        TCanvas *c = fFtmTempCanv->GetCanvas();
+        c->SetBit(TCanvas::kNoContextMenu);
+        c->SetBorderMode(0);
+        c->SetFrameBorderMode(0);
+        c->SetFillColor(kWhite);
+        c->SetRightMargin(0.03);
+        c->SetTopMargin(0.03);
+        c->cd();
+        */
+        //CreateTimeFrame("Temperature / �C");
+
+        fGraphFtmTemp[0].SetMarkerStyle(kFullDotSmall);
+        fGraphFtmTemp[1].SetMarkerStyle(kFullDotSmall);
+        fGraphFtmTemp[2].SetMarkerStyle(kFullDotSmall);
+        fGraphFtmTemp[3].SetMarkerStyle(kFullDotSmall);
+
+        fGraphFtmTemp[1].SetLineColor(kBlue);
+        fGraphFtmTemp[2].SetLineColor(kRed);
+        fGraphFtmTemp[3].SetLineColor(kGreen);
+
+        fGraphFtmTemp[1].SetMarkerColor(kBlue);
+        fGraphFtmTemp[2].SetMarkerColor(kRed);
+        fGraphFtmTemp[3].SetMarkerColor(kGreen);
+
+        //fGraphFtmTemp[0].Draw("LP");
+        //fGraphFtmTemp[1].Draw("LP");
+        //fGraphFtmTemp[2].Draw("LP");
+        //fGraphFtmTemp[3].Draw("LP");
+
+        // --------------------------------------------------------------------------
+
+        c = fAdcDataCanv->GetCanvas();
+        //c->SetBit(TCanvas::kNoContextMenu);
+        c->SetBorderMode(0);
+        c->SetFrameBorderMode(0);
+        c->SetFillColor(kWhite);
+        c->SetRightMargin(0.10);
+        c->SetGrid();
+        //c->cd();
+#endif
+
+        // --------------------------------------------------------------------------
+        fFeedbackDevCam->assignPixelMap(fPixelMap);
+        fFeedbackDevCam->setAutoscaleLowerLimit((fFeedbackDevMin->minimum()+0.5*fFeedbackDevMin->singleStep()));
+        fFeedbackDevCam->SetMin(fFeedbackDevMin->value());
+        fFeedbackDevCam->SetMax(fFeedbackDevMax->value());
+        fFeedbackDevCam->updateCamera();
+
+        fFeedbackCmdCam->assignPixelMap(fPixelMap);
+        fFeedbackCmdCam->setAutoscaleLowerLimit((fFeedbackCmdMin->minimum()+0.5*fFeedbackCmdMin->singleStep()));
+        fFeedbackCmdCam->SetMin(fFeedbackCmdMin->value());
+        fFeedbackCmdCam->SetMax(fFeedbackCmdMax->value());
+        fFeedbackCmdCam->updateCamera();
+
+        // --------------------------------------------------------------------------
+
+        fBiasCamV->assignPixelMap(fPixelMap);
+        fBiasCamV->setAutoscaleLowerLimit((fBiasVoltMin->minimum()+0.5*fBiasVoltMin->singleStep()));
+        fBiasCamV->SetMin(fBiasVoltMin->value());
+        fBiasCamV->SetMax(fBiasVoltMax->value());
+        fBiasCamV->updateCamera();
+
+        fBiasCamA->assignPixelMap(fPixelMap);
+        fBiasCamA->setAutoscaleLowerLimit((fBiasCurrentMin->minimum()+0.5*fBiasCurrentMin->singleStep()));
+        fBiasCamA->SetMin(fBiasCurrentMin->value());
+        fBiasCamA->SetMax(fBiasCurrentMax->value());
+        fBiasCamA->updateCamera();
+
+        // --------------------------------------------------------------------------
+
+        fRatesCanv->assignPixelMap(fPixelMap);
+        fRatesCanv->setAutoscaleLowerLimit((fRatesMin->minimum()+0.5*fRatesMin->singleStep())*0.001);
+        fRatesCanv->SetMin(fRatesMin->value());
+        fRatesCanv->SetMax(fRatesMax->value());
+        fRatesCanv->updateCamera();
+        on_fPixelIdx_valueChanged(0);
+
+        // --------------------------------------------------------------------------
+
+        fRatesCanv->setTitle("Patch rates");
+        fRatesCanv->setUnits("Hz");
+
+        fBiasCamA->setTitle("BIAS current");
+        fBiasCamA->setUnits("uA");
+
+        fBiasCamV->setTitle("Applied BIAS voltage");
+        fBiasCamV->setUnits("V");
+
+        fEventCanv1->setTitle("Average (all slices)");
+        fEventCanv2->setTitle("RMS (all slices)");
+        fEventCanv3->setTitle("Maximum (all slices)");
+        fEventCanv4->setTitle("Position of maximum (all slices)");
+
+        fEventCanv1->setUnits("mV");
+        fEventCanv2->setUnits("mV");
+        fEventCanv3->setUnits("mV");
+        fEventCanv4->setUnits("slice");
+
+        // --------------------------------------------------------------------------
+
+        fFeedbackDevCam->setTitle("Control deviation (Pulser amplitude voltage)");
+        fFeedbackCmdCam->setTitle("Applied voltage change (BIAS voltage)");
+
+        fFeedbackDevCam->setUnits("mV");
+        fFeedbackCmdCam->setUnits("mV");
+
+        // --------------------------------------------------------------------------
+
+        QTimer::singleShot(1000, this, SLOT(slot_RootUpdate()));
+
+        //widget->setMouseTracking(true);
+        //widget->EnableSignalEvents(kMouseMoveEvent);
+
+        fFtmRateCanv->setMouseTracking(true);
+        fFtmRateCanv->EnableSignalEvents(kMouseMoveEvent);
+
+        fAdcDataCanv->setMouseTracking(true);
+        fAdcDataCanv->EnableSignalEvents(kMouseMoveEvent);
+
+        fRatesCanv->setMouseTracking(true);
+        fEventCanv1->setMouseTracking(true);
+        fEventCanv2->setMouseTracking(true);
+        fEventCanv3->setMouseTracking(true);
+        fEventCanv4->setMouseTracking(true);
+
+        fBiasCamV->setMouseTracking(true);
+        fBiasCamA->setMouseTracking(true);
+
+        fFeedbackDevCam->setMouseTracking(true);
+        fFeedbackCmdCam->setMouseTracking(true);
+
+        fEventCanv1->ShowPixelCursor(true);
+        fEventCanv2->ShowPixelCursor(true);
+        fEventCanv3->ShowPixelCursor(true);
+        fEventCanv4->ShowPixelCursor(true);
+
+        fEventCanv1->ShowPatchCursor(true);
+        fEventCanv2->ShowPatchCursor(true);
+        fEventCanv3->ShowPatchCursor(true);
+        fEventCanv4->ShowPatchCursor(true);
+
+        fFeedbackDevCam->ShowPixelCursor(true);
+        fFeedbackCmdCam->ShowPixelCursor(true);
+
+        fFeedbackDevCam->ShowPatchCursor(true);
+        fFeedbackCmdCam->ShowPatchCursor(true);
+
+        connect(fRatesCanv, SIGNAL(signalPixelMoveOver(int)),
+                this, SLOT(slot_CameraMouseMove(int)));
+        connect(fEventCanv1, SIGNAL(signalPixelMoveOver(int)),
+                this, SLOT(slot_CameraMouseMove(int)));
+        connect(fEventCanv2, SIGNAL(signalPixelMoveOver(int)),
+                this, SLOT(slot_CameraMouseMove(int)));
+        connect(fEventCanv3, SIGNAL(signalPixelMoveOver(int)),
+                this, SLOT(slot_CameraMouseMove(int)));
+        connect(fEventCanv4, SIGNAL(signalPixelMoveOver(int)),
+                this, SLOT(slot_CameraMouseMove(int)));
+
+        connect(fBiasCamV, SIGNAL(signalPixelMoveOver(int)),
+                this, SLOT(slot_CameraMouseMove(int)));
+        connect(fBiasCamA, SIGNAL(signalPixelMoveOver(int)),
+                this, SLOT(slot_CameraMouseMove(int)));
+
+        connect(fFeedbackDevCam, SIGNAL(signalPixelMoveOver(int)),
+                this, SLOT(slot_CameraMouseMove(int)));
+        connect(fFeedbackCmdCam, SIGNAL(signalPixelMoveOver(int)),
+                this, SLOT(slot_CameraMouseMove(int)));
+
+        connect(fRatesCanv, SIGNAL(signalPixelDoubleClick(int)),
+                this, SLOT(slot_CameraDoubleClick(int)));
+        connect(fRatesCanv, SIGNAL(signalCurrentPixel(int)),
+                this, SLOT(slot_ChoosePixelThreshold(int)));
+        connect(fBiasCamV, SIGNAL(signalCurrentPixel(int)),
+                this, SLOT(slot_ChooseBiasChannel(int)));
+        connect(fBiasCamA, SIGNAL(signalCurrentPixel(int)),
+                this, SLOT(slot_ChooseBiasChannel(int)));
+
+        connect(fFtmRateCanv, SIGNAL(     RootEventProcessed(TObject*, unsigned int, TCanvas*)),
+                this,         SLOT  (slot_RootEventProcessed(TObject*, unsigned int, TCanvas*)));
+        connect(fAdcDataCanv, SIGNAL(     RootEventProcessed(TObject*, unsigned int, TCanvas*)),
+                this,         SLOT  (slot_RootEventProcessed(TObject*, unsigned int, TCanvas*)));
+    }
+
+    ~FactGui()
+    {
+        // Unsubscribe all services
+        for (map<string,DimInfo*>::iterator i=fServices.begin();
+             i!=fServices.end(); i++)
+            delete i->second;
+
+        // This is allocated as a chuck of chars
+        delete [] reinterpret_cast<char*>(fEventData);
+    }
+};
+
+#endif
Index: branches/testFACT++branch/gui/HtmlDelegate.cc
===================================================================
--- branches/testFACT++branch/gui/HtmlDelegate.cc	(revision 18277)
+++ branches/testFACT++branch/gui/HtmlDelegate.cc	(revision 18277)
@@ -0,0 +1,36 @@
+// **************************************************************************
+/** @class HtmlDelegate
+
+@brief A Qt-Delegate to display HTML text (QTextDocument) in a list
+
+*/
+// **************************************************************************
+#include "HtmlDelegate.h"
+
+#include <QPainter>
+#include <QTextDocument>
+
+void HtmlDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
+{
+    QTextDocument doc;
+    doc.setPageSize(option.rect.size());
+    doc.setHtml(index.data().toString());
+
+    // === This can be used if a scrolling is needed ===
+    // painter->save();
+    // painter->translate(option.rect.topLeft());
+    // QRect r(QPoint(0, 0), option.rect.size());
+    // doc.drawContents(painter, r);
+    // painter->restore();
+    // drawFocus(painter, option, option.rect);
+
+    doc.drawContents(painter, option.rect);
+}
+
+QSize HtmlDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
+{
+    QTextDocument doc;
+    doc.setPageSize(option.rect.size());
+    doc.setHtml(index.data().toString());
+    return doc.size().toSize();
+}
Index: branches/testFACT++branch/gui/HtmlDelegate.h
===================================================================
--- branches/testFACT++branch/gui/HtmlDelegate.h	(revision 18277)
+++ branches/testFACT++branch/gui/HtmlDelegate.h	(revision 18277)
@@ -0,0 +1,21 @@
+#ifndef FACT_HtmlDelegate
+#define FACT_HtmlDelegate
+
+#include <QStyledItemDelegate>
+
+class HtmlDelegate : public QStyledItemDelegate
+{
+public:
+    HtmlDelegate(QObject *p=0) : QStyledItemDelegate(p)
+    {
+    }
+
+    void paint(QPainter *painter,
+               const QStyleOptionViewItem &option,
+               const QModelIndex &index) const;
+
+    QSize sizeHint(const QStyleOptionViewItem &option,
+                   const QModelIndex &index) const;
+};
+
+#endif
Index: branches/testFACT++branch/gui/MainWindow.cc
===================================================================
--- branches/testFACT++branch/gui/MainWindow.cc	(revision 18277)
+++ branches/testFACT++branch/gui/MainWindow.cc	(revision 18277)
@@ -0,0 +1,763 @@
+#include "MainWindow.h"
+
+#include <iostream>
+#include <sstream>
+
+#include <QTimer>
+
+#include "src/Dim.h"
+
+#include "DockWindow.h"
+#include "HtmlDelegate.h"
+#include "CheckBoxDelegate.h"
+
+using namespace std;
+
+void MainWindow::MakeLEDs(QPushButton **arr, QGridLayout *lay, const char *slot) const
+{
+    arr[0]->setToolTip("Crate 0, Board 0, Index 0");
+
+    for (int i=1; i<40; i++)
+    {
+        QPushButton *b = new QPushButton(static_cast<QWidget*>(arr[0]->parent()));
+
+        b->setEnabled(arr[0]->isEnabled());
+        b->setSizePolicy(arr[0]->sizePolicy());
+        b->setMaximumSize(arr[0]->maximumSize());
+        b->setIcon(arr[0]->icon());
+        b->setIconSize(arr[0]->iconSize());
+        b->setCheckable(arr[0]->isCheckable());
+        b->setFlat(arr[0]->isFlat());
+
+        ostringstream str;
+        str << "Crate " << i/10 << ", Board " << i%10 << ", Index " << i;
+        b->setToolTip(str.str().c_str());
+
+        lay->addWidget(b, i/10+1, i%10+1, 1, 1);
+
+        arr[i] = b;
+    }
+
+    const QString name = arr[0]->objectName();
+
+    for (int i=0; i<40; i++)
+    {
+        arr[i]->setObjectName(name+QString::number(i));
+        QObject::connect(arr[i], SIGNAL(clicked()), this, slot);
+    }
+}
+
+MainWindow::MainWindow(QWidget *p) : QMainWindow(p)
+{
+    // setupUi MUST be called before the DimNetwork is initilized
+    // In this way it can be ensured that nothing from the
+    // DimNetwork arrives before all graphical elements are
+    // initialized. This is a simple but very powerfull trick.
+    setupUi(this);
+
+    // Now here we can do further setup which should be done
+    // before the gui is finally displayed.
+    fDimCmdServers->setItemDelegate(new CheckBoxDelegate);
+    fDimCmdCommands->setItemDelegate(new CheckBoxDelegate);
+    fDimCmdDescription->setItemDelegate(new HtmlDelegate);
+
+    fDimSvcServers->setItemDelegate(new CheckBoxDelegate);
+    fDimSvcServices->setItemDelegate(new CheckBoxDelegate);
+    fDimSvcDescription->setItemDelegate(new HtmlDelegate);
+
+    // Set a default string to be displayed in a the status bar at startup
+    fStatusBar->showMessage(PACKAGE_STRING "   |   " PACKAGE_URL "   |   report bugs to <" PACKAGE_BUGREPORT ">");
+
+    // Initialize the 40 FTU Leds as a copy of the prototype LED
+    fFtuLED[0] = fFtuLEDPrototype;
+    MakeLEDs(fFtuLED, fFtuLedLayout, SLOT(slot_fFtuLED_clicked()));
+
+    // Initialize the 40 FAD Leds as a copy of the prototype LED
+    fFadLED[0] = fFadLEDPrototype;
+    MakeLEDs(fFadLED, fFadLedLayout, SLOT(slot_fFadLED_clicked()));
+
+    // Initialize a timer to update the displayed UTC time
+    QTimer *timer = new QTimer(this);
+    connect(timer, SIGNAL(timeout()), this, SLOT(slot_TimeUpdate()));
+    timer->start(100);
+}
+
+void MainWindow::slot_TimeUpdate()
+{
+    // Used toUTC to support also older Qt versions
+    // toTime_t() always returns the datetime converted to UTC
+    // dateTime() unfortunately returns our UTC always as LocalTime
+    QDateTime now = QDateTime::currentDateTime().toUTC();
+    now.setTimeSpec(Qt::LocalTime);
+
+    if (now.toTime_t()==fUTC->dateTime().toTime_t())
+        return;
+
+    fUTC->setDateTime(now);
+}
+
+
+void MainWindow::SelectTab(const QString &name)
+{
+    for (int i=0; i<fTabWidget->count(); i++)
+        if (fTabWidget->tabText(i)==name)
+        {
+            fTabWidget->setCurrentIndex(i);
+            break;
+        }
+}
+
+void MainWindow::on_fCommentInsertRow_clicked()
+{
+    if (fTableComments->model())
+        fTableComments->model()->insertRow(fTableComments->model()->rowCount());
+}
+
+void MainWindow::on_fNoutof4Val_valueChanged(int val)
+{
+    const uint32_t v[2] = { -1, val };
+
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_N_OUT_OF_4", v);
+}
+
+void MainWindow::on_fRatesMin_valueChanged(int min)
+{
+    fRatesCanv->SetMin(min);
+}
+
+void MainWindow::on_fRatesMax_valueChanged(int max)
+{
+    fRatesCanv->SetMax(max);
+}
+
+void MainWindow::on_fShutdown_clicked()
+{
+    Dim::SendCommand("DIS_DNS/KILL_SERVERS", int(1));
+}
+
+void MainWindow::on_fShutdownAll_clicked()
+{
+    Dim::SendCommand("DIS_DNS/KILL_SERVERS", int(1));
+    Dim::SendCommand("DIS_DNS/EXIT", int(1));
+}
+
+void MainWindow::on_fTabWidget_tabCloseRequested(int which)
+{
+    // To get the correct size we have to switch to this tab
+    // An alternative would be to take the size of the current tab
+    fTabWidget->setCurrentIndex(which);
+
+    QWidget *w = fTabWidget->currentWidget(); //fTabWidget->widget(which);
+    if (!w)
+    {
+        cout << "Weird... the tab requested to be closed doesn't exist!" << endl;
+        return;
+    }
+
+    QDockWidget *d = w->findChild<QDockWidget*>();
+    if (!d)
+    {
+        cout << "Sorry, tab requested to be closed contains no QDockWidget!" << endl;
+        return;
+    }
+
+    new DockWindow(d, fTabWidget->tabText(which));
+    fTabWidget->removeTab(which);
+
+    if (fTabWidget->count()==1)
+        fTabWidget->setTabsClosable(false);
+}
+
+void MainWindow::on_fMcpStartRun_clicked()
+{
+    struct Value
+    {
+        uint64_t time;
+        uint64_t nevts;
+        char type[];
+    };
+
+    const int idx1 = fMcpRunType->currentIndex();
+    const int idx2 = fMcpTime->currentIndex();
+    const int idx3 = fMcpNumEvents->currentIndex();
+
+    const int64_t v2 = fMcpTime->itemData(idx2).toInt();
+    const int64_t v3 = fMcpNumEvents->itemData(idx3).toInt();
+
+    const QString rt = fMcpRunType->itemData(idx1).toString();
+
+    const size_t len = sizeof(Value)+rt.length()+1;
+
+    char *buf = new char[len];
+
+    Value *val = reinterpret_cast<Value*>(buf);
+
+    val->time  = v2;
+    val->nevts = v3;
+
+    strcpy(val->type, rt.toStdString().c_str());
+
+    Dim::SendCommand("MCP/START", buf, len);
+
+    delete [] buf;
+
+}
+void MainWindow::on_fMcpStopRun_clicked()
+{
+   Dim::SendCommand("MCP/STOP");
+}
+
+void MainWindow::on_fMcpReset_clicked()
+{
+   Dim::SendCommand("MCP/RESET");
+}
+
+void MainWindow::on_fLoggerStart_clicked()
+{
+    Dim::SendCommand("DATA_LOGGER/START_RUN_LOGGING");
+}
+
+void MainWindow::on_fLoggerStop_clicked()
+{
+    Dim::SendCommand("DATA_LOGGER/STOP_RUN_LOGGING");
+}
+
+void MainWindow::on_fFtmStartRun_clicked()
+{
+    Dim::SendCommand("FTM_CONTROL/START_TRIGGER");
+}
+
+void MainWindow::on_fFtmStopRun_clicked()
+{
+    Dim::SendCommand("FTM_CONTROL/STOP_TRIGGER");
+}
+
+/*
+void MainWindow::on_fFadStartRun_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/START_RUN");
+}
+
+void MainWindow::on_fFadStopRun_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/STOP_RUN");
+}
+*/
+
+void MainWindow::on_fFadDrsOn_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_DRS", uint8_t(true));
+}
+
+void MainWindow::on_fFadDrsOff_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_DRS", uint8_t(false));
+}
+
+void MainWindow::on_fFadDwriteOn_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_DWRITE", uint8_t(true));
+}
+
+void MainWindow::on_fFadDwriteOff_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_DWRITE", uint8_t(false));
+}
+
+void MainWindow::on_fFadSingleTrigger_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/SEND_SINGLE_TRIGGER");
+}
+
+void MainWindow::on_fFadTriggerLineOn_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_TRIGGER_LINE", uint8_t(true));
+}
+
+void MainWindow::on_fFadTriggerLineOff_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_TRIGGER_LINE", uint8_t(false));
+}
+
+void MainWindow::on_fFadContTriggerOn_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_CONTINOUS_TRIGGER", uint8_t(true));
+}
+
+void MainWindow::on_fFadContTriggerOff_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_CONTINOUS_TRIGGER", uint8_t(false));
+}
+
+void MainWindow::on_fFadBusyOnOn_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_BUSY_ON", uint8_t(true));
+}
+
+void MainWindow::on_fFadBusyOnOff_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_BUSY_ON", uint8_t(false));
+}
+
+void MainWindow::on_fFadBusyOffOn_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_BUSY_OFF", uint8_t(true));
+}
+
+void MainWindow::on_fFadBusyOffOff_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_BUSY_OFF", uint8_t(false));
+}
+
+void MainWindow::on_fFadSocket0_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_COMMAND_SOCKET_MODE", uint8_t(true));
+}
+
+void MainWindow::on_fFadSocket17_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ENABLE_COMMAND_SOCKET_MODE", uint8_t(false));
+}
+
+void MainWindow::on_fFadResetTriggerId_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/RESET_EVENT_COUNTER");
+}
+
+void MainWindow::FadSetFileFormat(uint16_t fmt)
+{
+    Dim::SendCommand("FAD_CONTROL/SET_FILE_FORMAT", fmt);
+}
+
+void MainWindow::on_fFadStart_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/START");
+}
+
+void MainWindow::on_fFadStop_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/STOP");
+}
+
+void MainWindow::on_fFadAbort_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/ABORT");
+}
+
+void MainWindow::on_fFadSoftReset_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/SOFT_RESET");
+}
+
+void MainWindow::on_fFadHardReset_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/HARD_RESET");
+}
+
+void MainWindow::slot_fFadLED_clicked()
+{
+    for (int32_t i=0; i<40; i++)
+        if (sender()==fFadLED[i])
+        {
+            Dim::SendCommand("FAD_CONTROL/TOGGLE", i);
+            break;
+        }
+}
+
+void MainWindow::on_fFadPrescalerCmd_valueChanged(int val)
+{
+    Dim::SendCommand("FAD_CONTROL/SET_TRIGGER_RATE", uint32_t(val));
+}
+
+void MainWindow::on_fFadRunNumberCmd_valueChanged(int val)
+{
+    Dim::SendCommand("FAD_CONTROL/SET_RUN_NUMBER", uint64_t(val));
+}
+
+void MainWindow::on_fFadRoiCmd_valueChanged(int)
+{
+    const int32_t vals1[2] = { -1, fFadRoiCmd->value() };
+    Dim::SendCommand("FAD_CONTROL/SET_REGION_OF_INTEREST", vals1);
+
+    for (int ch=8; ch<36; ch+=9)
+    {
+        const int32_t vals2[2] = { ch,  fFadRoiCh9Cmd->value() };
+        Dim::SendCommand("FAD_CONTROL/SET_REGION_OF_INTEREST", vals2);
+    }
+}
+
+void MainWindow::FadDacCmd_valueChanged(uint16_t val, uint16_t idx)
+{
+    const uint32_t cmd[2] = { idx, val };
+    Dim::SendCommand("FAD_CONTROL/SET_DAC_VALUE", cmd);
+}
+
+void MainWindow::on_fDrsCalibStart_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/START_DRS_CALIBRATION");
+}
+
+void MainWindow::on_fDrsCalibReset_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/RESET_SECONDARY_DRS_BASELINE");
+}
+
+void MainWindow::SetTriggerSequence()
+{
+    const uint16_t d[3] =
+    {
+        uint16_t(fTriggerSeqPed->value()),
+        uint16_t(fTriggerSeqLPext->value()),
+        uint16_t(fTriggerSeqLPint->value())
+    };
+
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_TRIGGER_SEQUENCE", d);
+}
+
+/*
+void MainWindow::on_fEnableTrigger_clicked(bool b)
+{
+    Dim::SendCommand("FTM_CONTROL/ENABLE_TRIGGER", b);
+}
+
+void MainWindow::on_fEnableExt1_clicked(bool b)
+{
+    Dim::SendCommand("FTM_CONTROL/ENABLE_EXT1", b);
+}
+
+void MainWindow::on_fEnableExt2_clicked(bool b)
+{
+    Dim::SendCommand("FTM_CONTROL/ENABLE_EXT2", b);
+}
+
+void MainWindow::on_fEnableVeto_clicked(bool b)
+{
+    Dim::SendCommand("FTM_CONTROL/ENABLE_VETO", b);
+}
+*/
+void MainWindow::on_fPhysicsCoincidence_valueChanged(int v)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_TRIGGER_MULTIPLICITY", v);
+}
+
+void MainWindow::on_fPhysicsWindow_valueChanged(int v)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_TRIGGER_WINDOW", v/4-2);
+}
+
+void MainWindow::on_fCalibCoincidence_valueChanged(int v)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_CALIBRATION_MULTIPLICITY", v);
+}
+
+void MainWindow::on_fCalibWindow_valueChanged(int v)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_CALIBRATION_WINDOW", v/4-2);
+}
+
+void MainWindow::on_fTriggerInterval_valueChanged(int val)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_TRIGGER_INTERVAL", val);
+}
+
+void MainWindow::on_fTriggerDelay_valueChanged(int val)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_TRIGGER_DELAY", val/4-2);
+}
+
+void MainWindow::on_fTimeMarkerDelay_valueChanged(int val)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_TIME_MARKER_DELAY", val/4-2);
+}
+
+void MainWindow::on_fDeadTime_valueChanged(int val)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_DEAD_TIME", val/4-2);
+}
+
+void MainWindow::on_fPrescalingVal_valueChanged(int val)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_PRESCALING", val);
+}
+
+void MainWindow::on_fPixelEnableAll_clicked()
+{
+    Dim::SendCommand("FTM_CONTROL/ENABLE_PIXEL", int16_t(-1));
+}
+
+void MainWindow::on_fPixelDisableAll_clicked()
+{
+    Dim::SendCommand("FTM_CONTROL/DISABLE_PIXEL", int16_t(-1));
+}
+
+void MainWindow::on_fEnableTrigger_stateChanged(int b)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/ENABLE_TRIGGER", b==Qt::Checked);
+}
+
+void MainWindow::on_fEnableExt1_stateChanged(int b)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/ENABLE_EXT1", b==Qt::Checked);
+}
+
+void MainWindow::on_fEnableExt2_stateChanged(int b)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/ENABLE_EXT2", b==Qt::Checked);
+}
+
+void MainWindow::on_fEnableClockCond_stateChanged(int b)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/ENABLE_CLOCK_CONDITIONER", b==Qt::Checked);
+}
+
+void MainWindow::on_fEnableVeto_stateChanged(int b)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/ENABLE_VETO", b==Qt::Checked);
+}
+
+void MainWindow::on_fClockCondFreq_activated(int idx)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_CLOCK_FREQUENCY", fClockCondFreq->itemData(idx).toInt());
+}
+
+void MainWindow::slot_fFtuLED_clicked()
+{
+    for (int32_t i=0; i<40; i++)
+        if (sender()==fFtuLED[i])
+        {
+            Dim::SendCommand("FTM_CONTROL/TOGGLE_FTU", i);
+            break;
+        }
+}
+
+void MainWindow::on_fFtuPing_toggled(bool checked)
+{
+    if (checked)
+        Dim::SendCommand("FTM_CONTROL/PING");
+}
+
+void MainWindow::on_fFtuAllOn_clicked()
+{
+    static const struct Data { int32_t id; char on; } __attribute__((__packed__)) d = { -1, 1 };
+    Dim::SendCommand("FTM_CONTROL/ENABLE_FTU", &d, sizeof(Data));
+}
+
+void MainWindow::on_fFtuAllOff_clicked()
+{
+    static const struct Data { int32_t id; char on; } __attribute__((__packed__)) d = { -1, 0 };
+    Dim::SendCommand("FTM_CONTROL/ENABLE_FTU", &d, sizeof(Data));
+}
+
+void MainWindow::on_fLpIntIntensity_valueChanged(int val)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_INTENSITY_LPINT", uint16_t(val));
+}
+
+void MainWindow::on_fLpExtIntensity_valueChanged(int val)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_INTENSITY_LPEXT", uint16_t(val));
+}
+
+void MainWindow::on_fLpIntGroup1_stateChanged(int b)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/ENABLE_GROUP1_LPINT", uint8_t(b));
+}
+
+void MainWindow::on_fLpExtGroup1_stateChanged(int b)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/ENABLE_GROUP1_LPEXT", uint8_t(b));
+}
+
+void MainWindow::on_fLpIntGroup2_stateChanged(int b)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/ENABLE_GROUP2_LPINT", uint8_t(b));
+}
+
+void MainWindow::on_fLpExtGroup2_stateChanged(int b)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/ENABLE_GROUP2_LPEXT", uint8_t(b));
+}
+
+void MainWindow::on_fFeedbackDevMin_valueChanged(int min)
+{
+    fFeedbackDevCam->SetMin(min);
+    fFeedbackDevCam->updateCamera();
+}
+
+void MainWindow::on_fFeedbackDevMax_valueChanged(int max)
+{
+    fFeedbackDevCam->SetMax(max);
+    fFeedbackDevCam->updateCamera();
+}
+
+void MainWindow::on_fFeedbackCmdMin_valueChanged(int min)
+{
+    fFeedbackCmdCam->SetMin(min);
+    fFeedbackCmdCam->updateCamera();
+}
+
+void MainWindow::on_fFeedbackCmdMax_valueChanged(int max)
+{
+    fFeedbackCmdCam->SetMax(max);
+    fFeedbackCmdCam->updateCamera();
+}
+
+void MainWindow::on_fFeedbackStart_clicked()
+{
+    Dim::SendCommand("FEEDBACK/START",
+                     (float)fFeedbackOvervoltage->value());
+}
+
+void MainWindow::on_fFeedbackStop_clicked()
+{
+    Dim::SendCommand("FEEDBACK/STOP");
+}
+
+void MainWindow::on_fFeedbackCalibrate_clicked()
+{
+    Dim::SendCommand("FEEDBACK/CALIBRATE");
+}
+
+void MainWindow::on_fBiasVoltDac_valueChanged(int val)
+{
+    fBiasVoltDacVolt->setValue(val*90./4096);
+}
+
+/*
+void MainWindow::on_fBiasRequestStatus_clicked()
+{
+    if (!fInHandler)
+        Dim::SendCommand("BIAS_CONTROL/REQUEST_STATUS");
+}
+*/
+
+void MainWindow::on_fBiasSetToZero_clicked()
+{
+    if (!fInHandler)
+        Dim::SendCommand("BIAS_CONTROL/SET_ZERO_VOLTAGE");
+}
+
+void MainWindow::on_fBiasReset_clicked()
+{
+    if (!fInHandler)
+        Dim::SendCommand("BIAS_CONTROL/RESET_OVER_CURRENT_STATUS");
+}
+
+
+void MainWindow::on_fBiasApplyChVolt_clicked()       // SET_CHANNEL_VOLTAGE
+{
+    if (fInHandler)
+        return;
+
+    const struct Data { uint16_t ch; float val; } __attribute__((__packed__)) val = {
+        uint16_t(fBiasHvBoard->value()*32+fBiasHvChannel->value()),
+        float(fBiasVolt->value())
+    };
+
+    Dim::SendCommand("BIAS_CONTROL/SET_CHANNEL_VOLTAGE", &val, sizeof(Data));
+}
+
+void MainWindow::on_fBiasApplyChDac_clicked()
+{
+    if (fInHandler)
+        return;
+
+    const uint16_t val[2] =
+    {
+        uint16_t(fBiasHvBoard->value()*32+fBiasHvChannel->value()),
+        uint16_t(fBiasVoltDac->value())
+    };
+
+    Dim::SendCommand("BIAS_CONTROL/SET_CHANNEL_DAC", val);
+}
+
+void MainWindow::on_fBiasApplyGlobalVolt_clicked()
+{
+    if (!fInHandler)
+        Dim::SendCommand("BIAS_CONTROL/SET_GLOBAL_VOLTAGE", float(fBiasVolt->value()));
+}
+    
+void MainWindow::on_fBiasApplyGlobalDac_clicked()
+{
+    if (!fInHandler)
+        Dim::SendCommand("BIAS_CONTROL/SET_GLOBAL_DAC", uint16_t(fBiasVoltDac->value()));
+}
+
+void MainWindow::on_fBiasVoltMin_valueChanged(int min)
+{
+    fBiasCamV->SetMin(min);
+    fBiasCamV->updateCamera();
+}
+
+void MainWindow::on_fBiasVoltMax_valueChanged(int max)
+{
+    fBiasCamV->SetMax(max);
+    fBiasCamV->updateCamera();
+}
+
+void MainWindow::on_fBiasCurrentMin_valueChanged(int min)
+{
+    fBiasCamA->SetMin(min);
+    fBiasCamA->updateCamera();
+}
+
+void MainWindow::on_fBiasCurrentMax_valueChanged(int max)
+{
+    fBiasCamA->SetMax(max);
+    fBiasCamA->updateCamera();
+}
+
+void MainWindow::on_fChatSend_clicked()
+{
+    const string msg = fChatMessage->text().toStdString();
+    if (Dim::SendCommand("CHAT/MSG", msg.c_str(), msg.length()+1))
+        fChatMessage->clear();
+}
+
+void MainWindow::on_fStatusLoggerLed_clicked()
+{
+    SelectTab("Logger");
+}
+
+void MainWindow::on_fStatusChatLed_clicked()
+{
+    SelectTab("Chat");
+}
+
+void MainWindow::on_fStatusFTMLed_clicked()
+{
+    SelectTab("Trigger");
+}
+
+void MainWindow::on_fStatusFTULed_clicked()
+{
+    SelectTab("FTUs");
+}
+
+void MainWindow::on_fStatusFADLed_clicked()
+{
+    SelectTab("FAD");
+}
Index: branches/testFACT++branch/gui/MainWindow.h
===================================================================
--- branches/testFACT++branch/gui/MainWindow.h	(revision 18277)
+++ branches/testFACT++branch/gui/MainWindow.h	(revision 18277)
@@ -0,0 +1,269 @@
+#ifndef FACT_MainWindow
+#define FACT_MainWindow
+
+#include "design.h"
+
+#include <QMainWindow>
+
+class TObject;
+class TCanvas;
+
+class MainWindow : public QMainWindow, protected Ui::MainWindow
+{
+    Q_OBJECT;
+
+    void MakeLEDs(QPushButton **arr, QGridLayout *lay, const char *slot) const;
+
+    void SelectTab(const QString &name);
+    void SetTriggerSequence();
+    void SetTriggerCoincidence();
+    void SetCalibCoincidence();
+
+protected:
+    QPushButton *fFtuLED[40];
+    QPushButton *fFadLED[40];
+
+    bool fInHandler;
+
+public:
+    MainWindow(QWidget *p=0);
+
+private slots:
+    // Helper
+    void on_fFtmStartRun_clicked();
+    void on_fFtmStopRun_clicked();
+
+    void on_fFadStart_clicked();
+    void on_fFadStop_clicked();
+    void on_fFadAbort_clicked();
+    void on_fFadSoftReset_clicked();
+    void on_fFadHardReset_clicked();
+
+    void on_fLoggerStart_clicked();
+    void on_fLoggerStop_clicked();
+
+    void on_fMcpStartRun_clicked();
+    void on_fMcpStopRun_clicked();
+    void on_fMcpReset_clicked();
+
+    // Comment Sql Table
+    void on_fCommentInsertRow_clicked();
+
+    // System status
+    void on_fShutdown_clicked();
+    void on_fShutdownAll_clicked();
+
+    // Status LEDs signals
+    void on_fStatusFTULed_clicked();
+    void on_fStatusFTMLed_clicked();
+    void on_fStatusFADLed_clicked();
+    void on_fStatusLoggerLed_clicked();
+    void on_fStatusChatLed_clicked();
+    //void on_fStatusFTMEnable_stateChanged(int state);
+
+    // Tab Widget
+    void on_fTabWidget_tabCloseRequested(int which);
+    virtual void on_fTabWidget_currentChanged(int) = 0;
+
+    // Tab: FAD
+    void slot_fFadLED_clicked();
+
+//    void on_fFadStartRun_clicked();
+//    void on_fFadStopRun_clicked();
+    void on_fFadDrsOn_clicked();
+    void on_fFadDrsOff_clicked();
+    void on_fFadDwriteOn_clicked();
+    void on_fFadDwriteOff_clicked();
+    void on_fFadSingleTrigger_clicked();
+    void on_fFadTriggerLineOn_clicked();
+    void on_fFadTriggerLineOff_clicked();
+    void on_fFadContTriggerOn_clicked();
+    void on_fFadContTriggerOff_clicked();
+    void on_fFadBusyOnOn_clicked();
+    void on_fFadBusyOnOff_clicked();
+    void on_fFadBusyOffOn_clicked();
+    void on_fFadBusyOffOff_clicked();
+    void on_fFadResetTriggerId_clicked();
+    void on_fFadSocket0_clicked();
+    void on_fFadSocket17_clicked();
+
+    void FadSetFileFormat(uint16_t fmt);
+
+    void on_fFadButtonFileFormatNone_clicked()  { FadSetFileFormat(0); }
+    void on_fFadButtonFileFormatDebug_clicked() { FadSetFileFormat(1); }
+    void on_fFadButtonFileFormatFits_clicked()  { FadSetFileFormat(2); }
+    void on_fFadButtonFileFormatRaw_clicked()   { FadSetFileFormat(3); }
+    void on_fFadButtonFileFormatZFits_clicked() { FadSetFileFormat(6); }
+
+    void on_fFadPrescalerCmd_valueChanged(int);
+    void on_fFadRunNumberCmd_valueChanged(int);
+    void on_fFadRoiCmd_valueChanged(int = 0);
+    void on_fFadRoiCh9Cmd_valueChanged(int) { on_fFadRoiCmd_valueChanged(); }
+
+    void FadDacCmd_valueChanged(uint16_t, uint16_t);
+
+    void on_fFadDac0Cmd_valueChanged(int v) { FadDacCmd_valueChanged(v, 0); }
+    void on_fFadDac1Cmd_valueChanged(int v) { FadDacCmd_valueChanged(v, 1); }
+    void on_fFadDac2Cmd_valueChanged(int v) { FadDacCmd_valueChanged(v, 2); }
+    void on_fFadDac3Cmd_valueChanged(int v) { FadDacCmd_valueChanged(v, 3); }
+    void on_fFadDac4Cmd_valueChanged(int v) { FadDacCmd_valueChanged(v, 4); }
+    void on_fFadDac5Cmd_valueChanged(int v) { FadDacCmd_valueChanged(v, 5); }
+    void on_fFadDac6Cmd_valueChanged(int v) { FadDacCmd_valueChanged(v, 6); }
+    void on_fFadDac7Cmd_valueChanged(int v) { FadDacCmd_valueChanged(v, 7); }
+
+    void on_fDrsCalibStart_clicked();
+    void on_fDrsCalibReset_clicked();
+
+    void on_fDrsCalibStart2_clicked() { on_fDrsCalibStart_clicked(); }
+    void on_fDrsCalibReset2_clicked() { on_fDrsCalibReset_clicked(); }
+
+    // Tab: Adc
+    virtual void DisplayEventData() = 0;
+    void on_fAdcCrate_valueChanged(int)   { DisplayEventData(); }
+    void on_fAdcBoard_valueChanged(int)   { DisplayEventData(); }
+    void on_fAdcChip_valueChanged(int)    { DisplayEventData(); }
+    void on_fAdcChannel_valueChanged(int) { DisplayEventData(); }
+
+    // Tab: FTM
+    void on_fEnableTrigger_stateChanged(int);
+    void on_fEnableExt1_stateChanged(int);
+    void on_fEnableExt2_stateChanged(int);
+    void on_fEnableClockCond_stateChanged(int);
+    void on_fEnableVeto_stateChanged(int);
+
+    void on_fTriggerSeqPed_valueChanged(int)   { SetTriggerSequence(); }
+    void on_fTriggerSeqLPint_valueChanged(int) { SetTriggerSequence(); }
+    void on_fTriggerSeqLPext_valueChanged(int) { SetTriggerSequence(); }
+
+    void on_fPhysicsCoincidence_valueChanged(int);
+    void on_fPhysicsWindow_valueChanged(int);
+    void on_fCalibCoincidence_valueChanged(int);
+    void on_fCalibWindow_valueChanged(int);
+
+    void on_fTriggerInterval_valueChanged(int);
+    void on_fTriggerDelay_valueChanged(int);
+    void on_fTimeMarkerDelay_valueChanged(int);
+    void on_fDeadTime_valueChanged(int);
+/*
+    void on_fClockCondR0_valueChanged(int) { }
+    void on_fClockCondR1_valueChanged(int) { }
+    void on_fClockCondR8_valueChanged(int) { }
+    void on_fClockCondR9_valueChanged(int) { }
+    void on_fClockCondR11_valueChanged(int) { }
+    void on_fClockCondR13_valueChanged(int) { }
+    void on_fClockCondR14_valueChanged(int) { }
+    void on_fClockCondR15_valueChanged(int) { }
+*/
+    void on_fPrescalingVal_valueChanged(int);
+
+    void on_fClockCondFreq_activated(int);
+
+    void on_fLpIntIntensity_valueChanged(int);
+    void on_fLpExtIntensity_valueChanged(int);
+    void on_fLpIntGroup1_stateChanged(int);
+    void on_fLpExtGroup1_stateChanged(int);
+    void on_fLpIntGroup2_stateChanged(int);
+    void on_fLpExtGroup2_stateChanged(int);
+
+    // Tab: FTUs
+    void slot_fFtuLED_clicked();
+    void on_fFtuPing_toggled(bool);
+    void on_fFtuAllOn_clicked();
+    void on_fFtuAllOff_clicked();
+
+    // Tab: Feedback
+    void on_fFeedbackDevMin_valueChanged(int);
+    void on_fFeedbackDevMax_valueChanged(int);
+    void on_fFeedbackCmdMin_valueChanged(int);
+    void on_fFeedbackCmdMax_valueChanged(int);
+    void on_fFeedbackStart_clicked();
+    void on_fFeedbackStop_clicked();
+    void on_fFeedbackCalibrate_clicked();
+
+    // Tab: Bias
+    virtual void BiasHvChannelChanged() = 0;
+    virtual void BiasCamChannelChanged() = 0;
+    void on_fBiasHvBoard_valueChanged(int)   { BiasHvChannelChanged(); }
+    void on_fBiasHvChannel_valueChanged(int) { BiasHvChannelChanged(); }
+    void on_fBiasCamCrate_valueChanged(int)  { BiasCamChannelChanged(); }
+    void on_fBiasCamBoard_valueChanged(int)  { BiasCamChannelChanged(); }
+    void on_fBiasCamPatch_valueChanged(int)  { BiasCamChannelChanged(); }
+    void on_fBiasCamPixel_valueChanged(int)  { BiasCamChannelChanged(); }
+
+    void on_fBiasVoltDac_valueChanged(int);
+
+    void on_fBiasVoltMin_valueChanged(int); // FIXME: Could be set as slot in the designer
+    void on_fBiasVoltMax_valueChanged(int); // FIXME: Could be set as slot in the designer
+
+    void on_fBiasCurrentMin_valueChanged(int); // FIXME: Could be set as slot in the designer
+    void on_fBiasCurrentMax_valueChanged(int); // FIXME: Could be set as slot in the designer
+
+    void on_fBiasApplyChVolt_clicked();
+    void on_fBiasApplyChDac_clicked();
+    void on_fBiasApplyGlobalVolt_clicked();
+    void on_fBiasApplyGlobalDac_clicked();
+
+    void on_fBiasSetToZero_clicked();
+    void on_fBiasReset_clicked();
+
+    virtual void on_fBiasDispRefVolt_stateChanged(int) = 0;
+
+    // Tab: Rates
+    //virtual void UpdateThresholdIdx() = 0;
+    virtual void on_fPixelIdx_valueChanged(int) = 0;
+    //void on_fThresholdCrate_valueChanged(int) { UpdateThresholdIdx() ; }
+    //void on_fThresholdBoard_valueChanged(int) { UpdateThresholdIdx() ; }
+    //void on_fThresholdPatch_valueChanged(int) { UpdateThresholdIdx() ; }
+
+    virtual void on_fPixelEnable_stateChanged(int) = 0;
+    virtual void on_fThresholdVal_valueChanged(int) = 0;
+    //virtual void on_fThresholdIdx_valueChanged(int) = 0;
+
+    virtual void on_fBoardRatesEnabled_toggled(bool) = 0;
+
+    void on_fNoutof4Val_valueChanged(int);
+
+    void on_fRatesMin_valueChanged(int); // FIXME: Could be set as slot in the designer
+    void on_fRatesMax_valueChanged(int); // FIXME: Could be set as slot in the designer
+    void on_fPixelEnableAll_clicked();
+    void on_fPixelDisableAll_clicked();
+
+    virtual void on_fPixelDisableOthers_clicked() = 0;
+    virtual void on_fThresholdDisableOthers_clicked() = 0;
+    virtual void on_fThresholdEnablePatch_clicked() = 0;
+    virtual void on_fThresholdDisablePatch_clicked() = 0;
+
+    virtual void DisplayRates() = 0;
+    void on_fRatePatch1_valueChanged(int) { DisplayRates(); }
+    void on_fRatePatch2_valueChanged(int) { DisplayRates(); }
+    void on_fRateBoard1_valueChanged(int) { DisplayRates(); }
+    void on_fRateBoard2_valueChanged(int) { DisplayRates(); }
+
+    // Tab: RateScan
+
+    virtual void DisplayRateScan() = 0;
+    void on_fRateScanPatch1_valueChanged(int) { DisplayRateScan(); }
+    void on_fRateScanPatch2_valueChanged(int) { DisplayRateScan(); }
+    void on_fRateScanBoard1_valueChanged(int) { DisplayRateScan(); }
+    void on_fRateScanBoard2_valueChanged(int) { DisplayRateScan(); }
+
+    // Tab: Chat
+    void on_fChatSend_clicked();
+
+    // Tab: Commands
+    /// Needs access to DimNetwork thus it is implemented in the derived class
+    virtual void on_fDimCmdSend_clicked() = 0;
+
+    // Main menu
+    //    void on_fMenuLogSaveAs_triggered(bool)
+
+    virtual void slot_RootEventProcessed(TObject *, unsigned int, TCanvas *) = 0;
+    virtual void slot_RootUpdate() = 0;
+    virtual void slot_ChoosePixelThreshold(int) = 0;
+    virtual void slot_ChooseBiasChannel(int) = 0;
+    virtual void slot_CameraDoubleClick(int) = 0;
+    virtual void slot_CameraMouseMove(int) = 0;
+    void slot_TimeUpdate();
+};
+
+#endif
Index: branches/testFACT++branch/gui/Q3DCameraWidget.cc
===================================================================
--- branches/testFACT++branch/gui/Q3DCameraWidget.cc	(revision 18277)
+++ branches/testFACT++branch/gui/Q3DCameraWidget.cc	(revision 18277)
@@ -0,0 +1,262 @@
+/*
+ * Q3DCameraWidget.cc
+ *
+ *  Created on: Aug 26, 2011
+ *      Author: lyard
+ */
+#include "Q3DCameraWidget.h"
+
+#include <math.h>
+#include <sstream>
+
+#include <GL/glu.h>
+
+#include <QMouseEvent>
+
+    Q3DCameraWidget::Q3DCameraWidget(QWidget* pparent) : BasicGlCamera(pparent),
+                                                         currentLoc()
+    {
+        _data.resize(432000);
+        _colorR.resize(432000);
+        _colorG.resize(432000);
+        _colorB.resize(432000);
+        _x.resize(432000);
+        _y.resize(432000);
+        _z.resize(432000);
+        for (int i=0;i<432000;i++)
+        {
+            _data[i] = 0;
+            _colorR[i] = 0;
+            _colorG[i] = 0;
+            _colorB[i] = 0;
+            _x[i] = 0;
+            _y[i] = 0;
+            _z[i] = 0;
+        }
+        _warningWritten = false;
+    }
+    Q3DCameraWidget::~Q3DCameraWidget()
+    {
+
+    }
+    void Q3DCameraWidget::timedUpdate()
+    {
+        updateGL();
+    }
+
+    int rotation =130;
+    int rotationy = 30;
+    float transZ = 0;
+   void Q3DCameraWidget::mousePressEvent(QMouseEvent* cEvent)
+    {
+
+         if (cEvent->buttons()  & Qt::LeftButton)
+         {
+             rotationy = -60 + (cEvent->pos().y()/(float)height())*120.f;
+             rotation = 130 + (cEvent->pos().x()/(float)width())*180.f;
+         }
+         else if (cEvent->buttons() & Qt::RightButton)
+         {
+             if (cEvent->pos().y() > height()/2)
+                 transZ -= 0.5;
+             else
+                 transZ += 0.5;
+         }
+         updateGL();
+    }
+    void Q3DCameraWidget::mouseDoubleClickEvent(QMouseEvent *cEvent)
+    {
+
+    }
+    void Q3DCameraWidget::mouseMoveEvent(QMouseEvent *cEvent)
+    {
+        if (cEvent->buttons() & Qt::LeftButton) {
+            mousePressEvent(cEvent);
+        }
+
+    }
+    void Q3DCameraWidget::paintGL()
+    {
+        makeCurrent();
+        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+        glLoadIdentity();
+
+        glTranslatef(-0.0,-0.0, -5);
+        glTranslatef(0,0,(float)(transZ));
+        glRotatef((float)rotationy,1.0,0.0,0.0);
+        glRotatef((float)rotation, 0.0, 1.0, 0.0);
+
+        glColor3f(1.0,0.0,0.0);
+
+        glBegin(GL_TRIANGLES);
+        for (int i=0;i<1439;i++)
+        {
+            for (int j=6;j<250;j++)
+            {
+                //get the 4 vertices that we need for drawing this patch
+                glColor3f(_colorR[i*300+j],_colorG[i*300+j],_colorB[i*300+j]);
+                glVertex3f(_x[i*300+j], _y[i*300+j], _z[i*300+j]);
+                glColor3f(_colorR[i*300+j+1],_colorG[i*300+j+1],_colorB[i*300+j+1]);
+                glVertex3f(_x[i*300+j+1], _y[i*300+j+1], _z[i*300+j+1]);
+                glColor3f(_colorR[(i+1)*300+j],_colorG[(i+1)*300+j],_colorB[(i+1)*300+j]);
+                glVertex3f(_x[(i+1)*300+j], _y[(i+1)*300+j], _z[(i+1)*300+j]);
+
+                glColor3f(_colorR[i*300+j+1],_colorG[i*300+j+1],_colorB[i*300+j+1]);
+                glVertex3f(_x[i*300+j+1], _y[i*300+j+1], _z[i*300+j+1]);
+                glColor3f(_colorR[(i+1)*300+j+1],_colorG[(i+1)*300+j+1],_colorB[(i+1)*300+j+1]);
+                glVertex3f(_x[(i+1)*300+j+1], _y[(i+1)*300+j+1], _z[(i+1)*300+j+1]);
+                glColor3f(_colorR[(i+1)*300+j],_colorG[(i+1)*300+j],_colorB[(i+1)*300+j]);
+                glVertex3f(_x[(i+1)*300+j], _y[(i+1)*300+j], _z[(i+1)*300+j]);
+
+            }
+        }
+        glEnd();
+
+    }
+    void Q3DCameraWidget::calculateColorsAndPositions()
+    {
+        short min = 10000;
+         short max = -10000;
+         for (int k=0;k<1440;k++)
+             for (int j=6;j<251;j++)
+         {
+               int  i = k*300+j;
+             if (_data[i] < min)
+                 min = _data[i];
+             if (_data[i] > max)
+                 max = _data[i];
+         }
+         float span = max - min;
+
+
+         //max should be at one, min at -1
+
+         for (int i=0;i<1440;i++)
+         {
+             for (int j=6;j<251;j++)
+             {
+                 _x[i*300+j] = -1 + (2.f*i)/1440.f;
+                 _y[i*300+j] = -0.5 + 1.0f*(_data[i*300+j] - min)/span;
+                 _z[i*300+j] = -1+(2.f*j)/300.f;
+                 float value = (_data[i*300 + j] - min)/span;
+                 if (value < 0.33)
+                 {
+                      _colorR[i*300+j] = 0;
+                      _colorG[i*300+j] = 0;
+                      _colorB[i*300+j] = value/0.33;
+                 }
+                 if (value >= 0.33 && value <= 0.66)
+                 {
+                     _colorR[i*300+j] = 0;
+                     _colorG[i*300+j] = (value-0.33)/0.33;
+                     _colorB[i*300+j] = 1 - ((value-0.33)/0.33);
+                  }
+                 if (value > 0.66)
+                 {
+                     _colorR[i*300+j] = (value-0.66)/0.33;
+                      _colorG[i*300+j] = 1 - ((value-0.66)/0.33);
+                      _colorB[i*300+j] = 0;
+
+                 }
+             }
+         }
+
+
+
+    }
+    void Q3DCameraWidget::setData(float* ddata)
+    {
+        if (!_warningWritten)
+        {
+            _warningWritten = true;
+            cout << "Info : 3D plotter disabled. requires more work so that less than 300 slices per pixel can be loaded" << endl;
+            cout << "Contact Etienne (etienne.lyard@unige.ch) for more information." << endl;
+        }
+       //disabled for now as I am working with 150 slices only
+/*        for (int i=0;i<1440;i++)
+            for (int j=0;j<300;j++)
+            _data[i*300+j] = (short)(ddata[i*300 + j]);
+        calculateColorsAndPositions();
+        if (isVisible())
+            updateGL();
+*/
+    }
+    void Q3DCameraWidget::setData(short* ddata)
+    {
+        if (!_warningWritten)
+        {
+            _warningWritten = true;
+            cout << "Info : 3D plotter disabled. requires more work so that less than 300 slices per pixel can be loaded" << endl;
+            cout << "Contact Etienne (etienne.lyard@unige.ch) for more information." << endl;
+        }
+            /*        for (int i=0;i<1440;i++)
+            for (int j=0;j<300;j++)
+                _data[i*300+j] = ddata[i* 300 + j];
+        calculateColorsAndPositions();
+        if (isVisible())
+            updateGL();
+*/
+    }
+    void Q3DCameraWidget::drawCameraBody()
+    {
+        glPolygonMode( GL_FRONT_AND_BACK, GL_LINE );
+
+        GLfloat color[4] = {0.8f, 1.f, 1.f, 1.f};
+        glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color);
+        glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 1.0f);
+        gluCylinder( gluNewQuadric(),
+                        0.62,
+                        0.62,
+                        1.83,
+                        30,
+                        2 );
+        glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
+
+
+
+    }
+
+    void Q3DCameraWidget::initializeGL()
+    {
+        qglClearColor(QColor(25,25,38));
+
+        glShadeModel(GL_SMOOTH);
+        glEnable(GL_DEPTH_TEST);
+        glDepthFunc(GL_LESS);
+        glDisable(GL_LIGHTING);
+//        glEnable(GL_LIGHTING);
+//        glEnable(GL_LIGHT0);
+//        glEnable(GL_AUTO_NORMAL);
+        glDisable(GL_CULL_FACE);
+//        glCullFace(GL_FRONT);
+
+        glEnable(GL_POLYGON_SMOOTH);
+        glEnable(GL_BLEND);
+        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+        glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST);
+    }
+    void Q3DCameraWidget::resizeGL(int cWidth, int cHeight)
+    {
+        glViewport(0,0,cWidth, cHeight);
+        glMatrixMode(GL_PROJECTION);
+        glLoadIdentity();
+        GLfloat windowRatio = (float)cWidth/(float)cHeight;
+        if (windowRatio < 1)
+        {
+//            windowRatio = 1.0f/windowRatio;
+            gluPerspective(40.f, windowRatio, 1, 100);
+//            gluOrtho2D(-viewSize, viewSize, -viewSize*windowRatio, viewSize*windowRatio);
+            pixelSize = 2*viewSize/(float)cWidth;
+            shownSizex = 2*viewSize;
+            shownSizey = 2*viewSize*windowRatio;
+        }
+        else
+        {
+            gluPerspective(40.f, windowRatio,1, 8);
+//            gluOrtho2D(-viewSize*windowRatio, viewSize*windowRatio, -viewSize, viewSize);
+            pixelSize = 2*viewSize/(float)cHeight;
+            shownSizex = 2*viewSize*windowRatio;
+            shownSizey = 2*viewSize;
+        }
+        glMatrixMode(GL_MODELVIEW);
+    }
Index: branches/testFACT++branch/gui/Q3DCameraWidget.h
===================================================================
--- branches/testFACT++branch/gui/Q3DCameraWidget.h	(revision 18277)
+++ branches/testFACT++branch/gui/Q3DCameraWidget.h	(revision 18277)
@@ -0,0 +1,81 @@
+/*
+ * Q3DCameraWidget.h
+ *
+ *  Created on: Aug 26, 2011
+ *      Author: lyard
+ */
+
+#ifndef Q3DCAMERAWIDGET_H_
+#define Q3DCAMERAWIDGET_H_
+
+#include "BasicGlCamera.h"
+#include <QtCore/QTimer>
+#include <iostream>
+
+
+using namespace std;
+
+struct cameraLocation
+{
+    float rotX;
+    float rotY;
+    float position[3];
+
+    cameraLocation() : rotX(0), rotY(0), position{0,0,0}
+    {}
+    cameraLocation(float rx, float ry, float x, float y, float z): rotX(rx), rotY(ry), position{x,y,z}
+    {}
+};
+
+struct float3
+{
+    float data[4];
+    float3()
+    {
+        data[0] = data[1] = data[2] = 0;
+        data[3] = 1.f;
+    }
+    float& operator [] (int index)
+    {
+        return data[index];
+    }
+};
+class Q3DCameraWidget : public BasicGlCamera
+{
+    Q_OBJECT
+
+public:
+    Q3DCameraWidget(QWidget* pparent = 0);
+    ~Q3DCameraWidget();
+    void setData(float* data);
+    void setData(short* data);
+public Q_SLOTS:
+    void timedUpdate();
+
+protected:
+    void paintGL();
+    void initializeGL();
+    void resizeGL(int cWidth, int cHeight);
+    void drawCameraBody();
+    float rotX, rotY;
+    void mousePressEvent(QMouseEvent* event);
+    void mouseDoubleClickEvent(QMouseEvent *cEvent);
+    void mouseMoveEvent(QMouseEvent *cEvent);
+
+private:
+    cameraLocation currentLoc;
+    vector<short> _data;
+    vector<float> _colorR;
+    vector<float> _colorG;
+    vector<float> _colorB;
+    vector<float> _x;
+    vector<float> _y;
+    vector<float> _z;
+    QTimer _timer;
+    bool isPicking;
+    void calculateColorsAndPositions();
+    bool _warningWritten;
+
+};
+
+#endif /* Q3DCAMERAWIDGET_H_ */
Index: branches/testFACT++branch/gui/QCameraWidget.cc
===================================================================
--- branches/testFACT++branch/gui/QCameraWidget.cc	(revision 18277)
+++ branches/testFACT++branch/gui/QCameraWidget.cc	(revision 18277)
@@ -0,0 +1,518 @@
+#include "QCameraWidget.h"
+
+#include <sstream>
+#include <iostream>
+
+#include <QMouseEvent>
+
+using namespace std;
+
+    QCameraWidget::QCameraWidget(QWidget *pparent) : BasicGlCamera(pparent)
+    {
+        fBold.resize(1440, false);
+        fEnable.resize(1440, true);
+        lastFace = -1;
+        fShowPixelMoveOver = false;
+        fShowPatchMoveOver = false;
+        fDrawPatch = false;
+
+        CalculatePixelsColor();
+
+   }
+
+    void QCameraWidget::paintGL()
+    {
+        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+         glLoadIdentity();
+
+         glTranslatef(0,-0.44,0);
+         glTranslatef(-0.1,0,0);
+         glRotatef(cameraRotation, 0,0,-1);
+         if (cameraRotation == 90)
+         {
+             glTranslatef(-0.45,-0.45,0);
+  //           cout << "correction" << endl;
+         }
+         if (cameraRotation == -90)
+         {
+             glTranslatef(0.45,-0.45,0);
+         }
+         glScalef(1.5, 1.5, 1.0);
+         glTranslatef(0,0,-0.5);
+         drawCamera(true);
+         glTranslatef(0,0,0.1f);
+
+         if (fDrawPatch)
+             drawPatches();
+         glTranslatef(0,0,0.1f);
+
+         glLineWidth(1.0f);
+         glColor3fv(highlightedPixelsCoulour);
+         for (vector<int>::iterator it = highlightedPixels.begin(); it!= highlightedPixels.end(); it++)
+         {
+             drawHexagon(*it, false);
+         }
+
+        glLineWidth(1.0f);
+        glTranslatef(0,0,0.1f);
+
+        //glColor3f(1.f - pixelsColor[fWhite][0],1.f - pixelsColor[fWhite][1],1.f - pixelsColor[fWhite][2]);
+        if (fWhite != -1)
+        {
+            glColor3f(1.f, 0.f, 0.f);
+            drawHexagon(fWhite, false);
+        }
+        DrawCameraText();
+
+        DrawScale();
+
+//        if (linearButton->isVisible())
+//            repaintInterface();
+    }
+    void QCameraWidget::drawCamera(bool alsoWire)
+    {
+
+        if (!pixelColorUpToDate)
+            CalculatePixelsColor();
+        glLineWidth(1.0);
+        for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+        {
+            glColor3fv(pixelsColor[i]);
+            glLoadName(i);
+            drawHexagon(i,true);
+        }
+        if (!alsoWire)
+            return;
+        glTranslatef(0,0,0.1f);
+        glColor3fv(pixelContourColour);//0.0f,0.0f,0.0f);
+        for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+        {
+            drawHexagon(i, false);
+        }
+    }
+    void QCameraWidget::DrawCameraText()
+    {
+        if (!fTextEnabled) return;
+
+        glPushMatrix();
+        glLoadIdentity();
+
+
+
+//        int textSize = (int)(width()*14/600);
+//        setFont(QFont("Monospace", textSize));
+        qglColor(QColor(25, 22, 12));
+
+        //first let's draw the usual data
+        //title
+        renderText(-shownSizex/2.f + 0.01f, shownSizey/2.f - fTextSize*pixelSize - 0.01f, 0.f, QString(titleText.c_str()));
+        //stats
+        ostringstream str;
+        str.precision(2);
+        str.setf(ios::fixed,ios::floatfield);
+        str << "Med " << fmedian;// << unitsText;
+        renderText(3, height()-3-4*fTextSize-35, QString(str.str().c_str()));
+        str.str("");
+        str << "Avg " << fmean;// <<  unitsText;
+        renderText(3, height()-3-3*fTextSize-27, QString(str.str().c_str()));
+        str.str("");
+        str << "RMS " << frms;// <<  unitsText;
+        renderText(3, height()-3-2*fTextSize-21, QString(str.str().c_str()));
+        str.str("");
+        str << "Min " << fmin;// << unitsText;
+        renderText(3, height()-3-3, QString(str.str().c_str()));
+        str.str("");
+        str << "Max " << fmax;// << unitsText;
+        renderText(3, height()-3-1*fTextSize-8, QString(str.str().c_str()));
+        //then draw the values beside the scale
+        //the difficulty here is to write the correct min/max besides the scale
+        //it depends whether the actual mean of the data is given by the user
+        //or not. the values given by user are fMin and fMax, while the data
+        //real min/max are fmin and fmax (I know, quite confusing... sorry about that)
+        //so. first let's see what is the span of one pixel
+        float min = (fMin < fScaleLimit || fMax < fScaleLimit) ? fmin : fMin;
+        float max = (fMin < fScaleLimit || fMax < fScaleLimit) ? fmax : fMax;
+//        textSize = (int)(height()*12/600);
+ //       setFont(QFont("Monospace", textSize));
+        float pixelSpan = (height() - fTextSize - 1)/(max - min);
+
+        //draw the scale values
+        float value = min;
+        int fontWidth = fTextSize;
+        if (fTextSize > 12) fontWidth--;
+        if (fTextSize > 10) fontWidth--;
+        if (fTextSize > 7) fontWidth--;//else fontWidth -=1;
+//        if (fTextSize < 7) fontWidth++;
+        for (int i=0;i<11;i++)
+        {
+            str.str("");
+            str << value;
+            if (i==0 || i==10)
+                str << ' ' << unitsText;
+            str << ' ';
+            int h = (value - min)*pixelSpan;
+            if (logScale && h != 0)
+            {
+                float fh = h;
+                float mult = (max - min)*pixelSpan;
+                fh = log10(h*10.f/mult);
+                fh *= mult;
+                h = (int)fh;
+            }
+            h = height()-h;
+            int w = width() - (width()/50) - fontWidth*str.str().size();
+            if (i==0 || i==10) w -= width()/50;
+            if (i!=0 && i!=10) h -= fTextSize/2;
+            renderText(w, h, QString(str.str().c_str()));
+            value += (max - min)/10;
+        }
+
+/*
+        str.str("");
+        str << min << unitsText;
+        int fontWidth = textSize;
+        if (textSize > 12) fontWidth-=3; else fontWidth -= 2;
+        //height of min ?
+        int hmin = (min - min)*pixelSpan;
+        hmin = height() - hmin;
+        renderText(width() - (width()/25) - fontWidth*str.str().size(), hmin, QString(str.str().c_str()));
+        str.str("");
+        str << max << unitsText;
+        int hmax = (max - min)*pixelSpan;
+        hmax = height() - hmax;
+        renderText(width() - (width()/25) - fontWidth*str.str().size(), hmax, QString(str.str().c_str()));
+*/
+        glPopMatrix();
+
+//        textSize = (int)(600*14/600);
+//        setFont(QFont("Times", textSize));
+    }
+    void QCameraWidget::drawPatches()
+    {
+        glLineWidth(3.0f);
+        glColor3fv(patchesCoulour);
+         glBegin(GL_LINES);
+                 for (int i=0;i<NTMARK;i++)
+                {
+                     for (unsigned int j=0;j<patchesIndices[i].size();j++)
+                     {
+                         glVertex2fv(verticesList[patchesIndices[i][j].first]);
+                         glVertex2fv(verticesList[patchesIndices[i][j].second]);
+                     }
+                 }
+         glEnd();
+         glTranslatef(0,0,0.1f);
+
+         glColor3fv(highlightedPatchesCoulour);
+         glBegin(GL_LINES);
+         for (vector<int>::iterator it=highlightedPatches.begin(); it!= highlightedPatches.end(); it++)
+         {
+             for (unsigned int j=0;j<patchesIndices[*it].size();j++)
+             {
+                 glVertex2fv(verticesList[patchesIndices[*it][j].first]);
+                 glVertex2fv(verticesList[patchesIndices[*it][j].second]);
+             }
+         }
+         glEnd();
+         if (fWhitePatch != -1)
+         {
+             glTranslatef(0,0,0.01);
+             glColor3f(1.f, 0.6f, 0.f);//patchColour);//[0],patchColour[1],patchColour[2]);//0.5f, 0.5f, 0.3f);
+             glBegin(GL_LINES);
+             for (unsigned int j=0;j<patchesIndices[fWhitePatch].size();j++)
+             {
+                 glVertex2fv(verticesList[patchesIndices[fWhitePatch][j].first]);
+                 glVertex2fv(verticesList[patchesIndices[fWhitePatch][j].second]);
+             }
+             glEnd();
+         }
+
+    }
+    void QCameraWidget::Reset()
+    {
+        fBold.assign(1440, false);
+    }
+
+    void QCameraWidget::mousePressEvent(QMouseEvent *cEvent)
+    {
+        if (cEvent->pos().x() > width()-(width()/50.f))
+        {
+            toggleInterfaceDisplay();
+            return;
+        }
+        int face = PixelAtPosition(cEvent->pos());
+//        cout << face << endl;
+        if (face != -1) {
+            fWhite = face;
+            fWhitePatch = pixelsPatch[fWhite];
+ //           CalculatePatchColor();
+            emit signalCurrentPixel(face);
+            }
+        else
+        {
+            fWhite = -1;
+            fWhitePatch = -1;
+        }
+        updateGL();
+   }
+    void QCameraWidget::mouseMoveEvent(QMouseEvent* cEvent)
+    {
+        int face = PixelAtPosition(cEvent->pos());
+        if (face != -1 && lastFace != face) {
+            emit signalPixelMoveOver(face);
+        }
+        if (lastFace != face)
+        {
+            if (fShowPixelMoveOver)
+                fWhite = face;
+
+            if (fShowPatchMoveOver)
+                fWhitePatch = face != -1 ? pixelsPatch[face] : -1;
+        }
+
+        if (fShowPixelMoveOver || fShowPatchMoveOver)
+            if (lastFace != face && isVisible())
+                updateGL();
+
+        lastFace = face;
+    }
+    void QCameraWidget::mouseDoubleClickEvent(QMouseEvent* cEvent)
+    {
+        int face = PixelAtPosition(cEvent->pos());
+        if (face != -1) {
+ //           cout << "Event !" << endl;
+            fWhite = face;
+             fWhitePatch = pixelsPatch[fWhite];
+ //          highlightPixel(face);
+ //           highlightPatch(fWhitePatch);
+ //           CalculatePatchColor();
+            emit signalPixelDoubleClick(face);
+       }
+        else
+        {
+            fWhite = -1;
+            fWhitePatch = -1;
+ //           clearHighlightedPixels();
+ //           clearHighlightedPatches();
+        }
+        updateGL();
+
+    }
+    void QCameraWidget::ShowPixelCursor(bool on)
+    {
+        fShowPixelMoveOver = on;
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void QCameraWidget::ShowPatchCursor(bool on)
+    {
+        fShowPatchMoveOver = on;
+        if (isVisible() && autoRefresh)
+            updateGL();
+    }
+    void QCameraWidget::SetEnable(int idx, bool b)
+    {
+         fEnable[idx] = b;
+     }
+
+     double QCameraWidget::GetData(int idx)
+     {
+         return fData[idx];
+     }
+     const char* QCameraWidget::GetName()
+     {
+         return "QCameraWidget";
+     }
+     char *QCameraWidget::GetObjectInfo(int px, int py)
+     {
+
+         static stringstream stream;
+         static string str;
+         const int pixel = this->PixelAtPosition(QPoint(px, py));
+         if (pixel >= 0)
+         {
+             stream << "Pixel=" << pixel << "   Data=" << fData[pixel] << '\0';
+         }
+         str = stream.str();
+         return const_cast<char*>(str.c_str());
+     }
+     void QCameraWidget::CalculatePixelsColor()
+     {
+         double dmin = fData[0];
+          double dmax = fData[0];
+          for (int ii=0;ii<ACTUAL_NUM_PIXELS;ii++)
+          {
+              if (finite(fData[ii]))
+              {
+                  dmin = dmax = fData[ii];
+                  break;
+              }
+          }
+          if (fMin < fScaleLimit || fMax < fScaleLimit)
+          {
+              for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+              {
+                  if (!finite(fData[i])) continue;
+                  if (!fEnable[i]) continue;
+                  if (fData[i] > dmax) dmax = fData[i];
+                  if (fData[i] < dmin) dmin = fData[i];
+              }
+          }
+          if (fMin > fScaleLimit) dmin = fMin;
+          if (fMax > fScaleLimit) dmax = fMax;
+//          cout << "min: " << dmin << " max: " << dmax << " fMin: " << fMin << " fMax: " << fMax << endl;
+          float color;
+          for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+           {
+              if (!fEnable[i])
+              {
+//                  cout << "not enabled !" << i << endl;
+                  pixelsColor[i][0] = 0.1f;
+                  pixelsColor[i][1] = 0.1f;
+                  pixelsColor[i][2] = 0.15f;
+                  continue;
+              }
+              if (!finite(fData[i]))
+              {
+//                  cout << "not enabled !" << i << endl;
+                  pixelsColor[i][0] = 0.9f;
+                  pixelsColor[i][1] = 0.0f;
+                  pixelsColor[i][2] = 0.9f;
+                  continue;
+              }
+              if (fData[i] < dmin)
+               {
+                   pixelsColor[i][0] = tooLowValueCoulour[0];
+                   pixelsColor[i][1] = tooLowValueCoulour[1];
+                   pixelsColor[i][2] = tooLowValueCoulour[2];
+                   continue;
+               }
+               if (fData[i] > dmax)
+               {
+                   pixelsColor[i][0] = tooHighValueCoulour[0];
+                   pixelsColor[i][1] = tooHighValueCoulour[1];
+                   pixelsColor[i][2] = tooHighValueCoulour[2];
+                   continue;
+               }
+               color = float((fData[i]-dmin)/(dmax-dmin));
+               if (logScale)
+               {
+                   color *= 9;
+                   color += 1;
+                   color = log10(color);
+               }
+
+               int index = 0;
+               while (ss[index] < color && index < 4)
+                   index++;
+               index--;
+               if (index < 0) index = 0;
+               float weight0 = (color-ss[index]) / (ss[index+1]-ss[index]);
+               if (weight0 > 1.0f) weight0 = 1.0f;
+               if (weight0 < 0.0f) weight0 = 0.0f;
+               float weight1 = 1.0f-weight0;
+               pixelsColor[i][0] = weight1*rr[index] + weight0*rr[index+1];
+               pixelsColor[i][1] = weight1*gg[index] + weight0*gg[index+1];
+               pixelsColor[i][2] = weight1*bb[index] + weight0*bb[index+1];
+          }
+          CalculatePatchColor();
+          UpdateText();
+          pixelColorUpToDate = true;
+     }
+     void QCameraWidget::CalculatePatchColor()
+     {
+         return;
+         //calculate the patch contour color. let's use the anti-colour of the pixels
+         GLfloat averagePatchColour[3] = {0.0f,0.0f,0.0f};
+         for (int i=0;i<9;i++)
+             for (int j=0;j<3;j++)
+                 averagePatchColour[j] += pixelsColor[softwareMapping[fWhitePatch*9+i]][j];
+         for (int j=0;j<3;j++)
+             averagePatchColour[j] /= 9;
+         for (int j=0;j<3;j++)
+             patchColour[j] = 1.0f - averagePatchColour[j];
+     }
+     void QCameraWidget::SetData(const valarray<double> &ddata)
+     {
+//             fData = ddata;
+         for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+             fData[i] = ddata[i];
+         pixelColorUpToDate = false;
+         if (isVisible() && autoRefresh)
+             updateGL();
+     }
+
+void QCameraWidget::SetData(const valarray<float> &ddata)
+     {
+//             fData = ddata;
+         for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+             fData[i] = ddata[i];
+         pixelColorUpToDate = false;
+         if (isVisible() && autoRefresh)
+             updateGL();
+     }
+
+
+     void QCameraWidget::highlightPixel(int idx, bool highlight)
+     {
+         if (idx < 0 || idx >= ACTUAL_NUM_PIXELS)
+         {
+           cout << "Error: requested pixel highlight out of bounds" << endl;
+           return;
+         }
+
+         const vector<int>::iterator v = ::find(highlightedPixels.begin(), highlightedPixels.end(), idx);
+         if (highlight)
+         {
+             if (v==highlightedPixels.end())
+                 highlightedPixels.push_back(idx);
+         }
+         else
+         {
+             if (v!=highlightedPixels.end())
+                 highlightedPixels.erase(v);
+         }
+
+         if (isVisible() && autoRefresh)
+             updateGL();
+     }
+     void QCameraWidget::highlightPatch(int idx, bool highlight)
+     {
+         if (idx < 0 || idx >= NTMARK)
+         {
+             cout << "Error: requested patch highlight out of bounds" << endl;
+             return;
+         }
+
+         const vector<int>::iterator v = ::find(highlightedPatches.begin(), highlightedPatches.end(), idx);
+         if (highlight)
+         {
+             if (v==highlightedPatches.end())
+                 highlightedPatches.push_back(idx);
+         }
+         else
+         {
+             if (v!=highlightedPatches.end())
+                 highlightedPatches.erase(v);
+         }
+
+         if (isVisible() && autoRefresh)
+             updateGL();
+
+     }
+     void QCameraWidget::clearHighlightedPatches()
+     {
+         highlightedPatches.clear();
+         if (isVisible() && autoRefresh)
+             updateGL();
+     }
+     void QCameraWidget::clearHighlightedPixels()
+     {
+         highlightedPixels.clear();
+         if (isVisible() && autoRefresh)
+             updateGL();
+     }
+
+
+
+
Index: branches/testFACT++branch/gui/QCameraWidget.h
===================================================================
--- branches/testFACT++branch/gui/QCameraWidget.h	(revision 18277)
+++ branches/testFACT++branch/gui/QCameraWidget.h	(revision 18277)
@@ -0,0 +1,65 @@
+#ifndef Q_CAMERA_WIDGET_H_
+#define Q_CAMERA_WIDGET_H_
+
+#include "BasicGlCamera.h"
+#include <valarray>
+#include <set>
+
+class QCameraWidget : public BasicGlCamera
+{
+    Q_OBJECT
+
+    typedef std::pair<double, double> Position;
+    typedef std::vector<Position> Positions;
+
+    //FIXME this variable seems to be deprecated
+    Positions fGeom;
+
+    std::vector<bool> fBold;
+    std::vector<bool> fEnable;
+
+    std::vector<int> highlightedPatches;
+    std::vector<int> highlightedPixels;
+
+
+    int lastFace;
+    bool fShowPixelMoveOver;
+    bool fShowPatchMoveOver;
+
+public:
+    bool fDrawPatch;
+    void highlightPixel(int idx, bool highlight=true);
+    void highlightPatch(int idx, bool highlight=true);
+    void clearHighlightedPatches();
+    void clearHighlightedPixels();
+    QCameraWidget(QWidget *pparent = 0);
+    void paintGL();
+    void mousePressEvent(QMouseEvent *cEvent);
+    void mouseMoveEvent(QMouseEvent *event);
+    void mouseDoubleClickEvent(QMouseEvent *event);
+    void Reset();
+    void drawCamera(bool alsoWire);
+    void DrawCameraText();
+    void drawPatches();
+     void SetEnable(int idx, bool b);
+     double GetData(int idx);
+    const char *GetName();
+
+     int GetIdx(float px, float py);
+     char *GetObjectInfo(int px, int py);
+
+     void SetData(const std::valarray<double> &ddata);
+     void SetData(const std::valarray<float> &ddata);
+
+
+     void ShowPixelCursor(bool);
+     void ShowPatchCursor(bool);
+
+private:
+     void CalculatePixelsColor();
+     void CalculatePatchColor();
+
+};
+
+typedef QCameraWidget Camera;
+#endif
Index: branches/testFACT++branch/gui/RawEventsViewer/RawEventsViewer.cc
===================================================================
--- branches/testFACT++branch/gui/RawEventsViewer/RawEventsViewer.cc	(revision 18277)
+++ branches/testFACT++branch/gui/RawEventsViewer/RawEventsViewer.cc	(revision 18277)
@@ -0,0 +1,2402 @@
+/*
+ * QtGl.cpp
+ *
+ *  Created on: Jul 19, 2011
+ *      Author: lyard
+ *
+ ******
+ */
+#include <math.h>
+#include <fstream>
+
+#include <boost/date_time/local_time/local_time.hpp>
+
+#include "RawEventsViewer.h"
+#include "viewer.h"
+
+#include <QFileDialog>
+#include <QMouseEvent>
+
+#include <qwt_symbol.h>
+#include <qwt_plot_grid.h>
+#include <qwt_plot_zoomer.h>
+
+#include "src/Configuration.h"
+#include "externals/factfits.h"
+
+
+using namespace std;
+
+#undef ACTUAL_NUM_PIXELS
+#define ACTUAL_NUM_PIXELS 1440
+
+//bounding box for diplaying the impulse curve
+float bboxMin[2] = {-0.8,-0.9};
+float bboxMax[2] = {0.8,-0.3};
+/************************************************************
+ * CALC BLUR COLOR if in blur display mode, calculate the interpolated
+ * colour for a given vertex
+ ************************************************************/
+void RawDataViewer::calcBlurColor(int pixel,  int vertex)
+{
+    GLfloat color[3];
+    int first, second;
+    first = vertex-1;
+    second = vertex;
+    if (first < 0)
+        first = 5;
+
+    first = neighbors[pixel][first];
+    second = neighbors[pixel][second];
+//    cout << pixel << " " << vertex << " " << "first: " << first << " second: " << second << endl;
+    for (int i=0;i<3;i++)
+        color[i] = pixelsColor[pixel][i];
+    float divide = 1;
+    if (first != -1)
+    {
+        divide++;
+        for (int i=0;i<3;i++)
+            color[i] += pixelsColor[first][i];
+    }
+    if (second != -1)
+    {
+        divide++;
+        for (int i=0;i<3;i++)
+            color[i] += pixelsColor[second][i];
+    }
+    for (int i=0;i<3;i++)
+        color[i] /= divide;
+
+//    cout << color[0] << " " << color[1] << " " << color[2] << endl;
+
+    glColor3fv(color);
+}
+void RawDataViewer::calcMidBlurColor(int pixel, int vertex)
+{
+    GLfloat color[3];
+    int first;
+    first = vertex-1;
+    if (first < 0)
+        first = 5;
+    first = neighbors[pixel][first];
+    for (int i=0;i<3;i++)
+        color[i] = pixelsColor[pixel][i];
+    float divide = 1;
+    if (first != -1)
+    {
+        divide++;
+        for (int i=0;i<3;i++)
+            color[i] += pixelsColor[first][i];
+    }
+    for (int i=0;i<3;i++)
+        color[i] /= divide;
+    glColor3fv(color);
+}
+/************************************************************
+ * DRAW BLURRY HEXAGON. draws a solid hexagon, with interpolated colours
+ ************************************************************/
+void RawDataViewer::drawBlurryHexagon(int index)
+{
+
+//per-pixel mesh
+    GLfloat color[3];
+    for (int i=0;i<3;i++)
+        color[i] = pixelsColor[index][i];
+    glBegin(GL_TRIANGLES);
+    calcBlurColor(index, 0);
+    glVertex2fv(verticesList[verticesIndices[index][0]]);
+    glColor3fv(color);
+    glVertex2fv(pixelsCoords[index]);
+
+    calcBlurColor(index, 1);
+    glVertex2fv(verticesList[verticesIndices[index][1]]);
+
+    glVertex2fv(verticesList[verticesIndices[index][1]]);
+    glColor3fv(color);
+    glVertex2fv(pixelsCoords[index]);
+
+    calcBlurColor(index, 2);
+    glVertex2fv(verticesList[verticesIndices[index][2]]);
+
+    glVertex2fv(verticesList[verticesIndices[index][2]]);
+    glColor3fv(color);
+    glVertex2fv(pixelsCoords[index]);
+
+    calcBlurColor(index, 3);
+    glVertex2fv(verticesList[verticesIndices[index][3]]);
+
+    glVertex2fv(verticesList[verticesIndices[index][3]]);
+    glColor3fv(color);
+    glVertex2fv(pixelsCoords[index]);
+
+    calcBlurColor(index, 4);
+    glVertex2fv(verticesList[verticesIndices[index][4]]);
+
+    glVertex2fv(verticesList[verticesIndices[index][4]]);
+    glColor3fv(color);
+    glVertex2fv(pixelsCoords[index]);
+
+    calcBlurColor(index, 5);
+    glVertex2fv(verticesList[verticesIndices[index][5]]);
+
+    glVertex2fv(verticesList[verticesIndices[index][5]]);
+    glColor3fv(color);
+    glVertex2fv(pixelsCoords[index]);
+
+    calcBlurColor(index, 0);
+    glVertex2fv(verticesList[verticesIndices[index][0]]);
+    glEnd();
+
+    return;
+}
+
+/************************************************************
+ * DRAW CAMERA draws all the camera pixels
+ ************************************************************/
+void RawDataViewer::drawCamera(bool alsoWire)
+{
+    glLoadIdentity();
+    if (!drawImpulse)
+    {
+        glTranslatef(0,-0.44,0);
+        glRotatef(cameraRotation, 0,0,-1);
+        if (cameraRotation == 90)
+        {
+            glTranslatef(-0.45,-0.45,0);
+        }
+        if (cameraRotation == -90)
+        {
+            glTranslatef(0.45,-0.45,0);
+        }
+        glScalef(1.5,1.5,1);
+    }
+    else
+    {
+        glRotatef(cameraRotation, 0,0,-1);
+          if (cameraRotation == 90)
+        {
+            glTranslatef(-0.45/1.5,-0.45/1.5,0);
+        }
+        if (cameraRotation == -90)
+        {
+            glTranslatef(0.45/1.5,-0.45/1.5,0);
+        }
+  }
+    glColor3f(0.5,0.5,0.5);
+    glLineWidth(1.0);
+    float color;
+
+    for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+    {
+        if (!nRoi)
+          color = (float)(i)/(float)(ACTUAL_NUM_PIXELS);
+        else
+
+//        if (_softwareOrdering)
+//            color = float(eventData[nRoi*i + whichSlice] + (VALUES_SPAN/2))/(float)(VALUES_SPAN-1);
+//        else
+            color = float(eventData[nRoi*hardwareMapping[i] + whichSlice]+(VALUES_SPAN/2))/(float)(VALUES_SPAN-1);
+        if (logScale)
+        {
+            color *= 9;
+            color += 1;
+            color = log10(color);
+        }
+
+        if (color < ss[0])
+        {
+            pixelsColor[i][0] = tooLowValueCoulour[0];
+            pixelsColor[i][1] = tooLowValueCoulour[1];
+            pixelsColor[i][2] = tooLowValueCoulour[2];
+            continue;
+        }
+        if (color > ss[4])
+        {
+            pixelsColor[i][0] = tooHighValueCoulour[0];
+            pixelsColor[i][1] = tooHighValueCoulour[1];
+            pixelsColor[i][2] = tooHighValueCoulour[2];
+            continue;
+        }
+        int index = 0;
+        while (ss[index] < color && index < 4)
+            index++;
+        index--;
+        if (index < 0) index = 0;
+        float weight0 = (color-ss[index]) / (ss[index+1]-ss[index]);
+        if (weight0 > 1.0f) weight0 = 1.0f;
+        if (weight0 < 0.0f) weight0 = 0.0f;
+        float weight1 = 1.0f-weight0;
+        pixelsColor[i][0] = weight1*rr[index] + weight0*rr[index+1];
+        pixelsColor[i][1] = weight1*gg[index] + weight0*gg[index+1];
+        pixelsColor[i][2] = weight1*bb[index] + weight0*bb[index+1];
+    }
+
+    for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+    {
+
+        glColor3fv(pixelsColor[i]);
+        glLoadName(i);
+if (drawBlur)
+    drawBlurryHexagon(i);
+else
+    drawHexagon(i,true);
+
+    }
+    if (!alsoWire)
+        return;
+    glTranslatef(0,0,0.1f);
+    glColor3f(0.0f,0.0f,0.0f);
+    for (int i=0;i<ACTUAL_NUM_PIXELS;i++)
+    {
+
+        drawHexagon(i, false);
+    }
+
+}
+
+/************************************************************
+ * DRAW PIXEL CURVE. draws the raw impulse curve of the currently selected pixel
+ ************************************************************/
+void RawDataViewer::drawPixelCurve()
+{
+    float xRange = bboxMax[0] - bboxMin[0];
+    float yRange = bboxMax[1] - bboxMin[1];
+
+    glBegin(GL_LINES);
+    glLineWidth(1.0f);
+    glColor3f(0.0,0.0,0.0);
+    glVertex2f(bboxMin[0], bboxMin[1]);
+    glVertex2f(bboxMax[0], bboxMin[1]);
+    glVertex2f(bboxMin[0], bboxMin[1]);
+    glVertex2f(bboxMin[0], bboxMax[1]);
+    glVertex2f(bboxMin[0], (bboxMin[1]+bboxMax[1])/2.0f);
+    glVertex2f(bboxMax[0], (bboxMin[1]+bboxMax[1])/2.0f);
+    glVertex2f(bboxMin[0] + xRange*nRoi/(float)(nRoi+nRoiTM),
+               bboxMin[1]);
+    glVertex2f(bboxMin[0] + xRange*nRoi/(float)(nRoi+nRoiTM),
+               bboxMax[1]);
+   glEnd();
+    glTranslatef(0,0,0.1f);
+    if (!nRoi)
+          return;
+     glBegin(GL_LINES);
+    glColor3f(1.0f,1.0f,0.0f);
+    float divideMe = (float)(VALUES_SPAN-1);
+    float plusMe = (float)(VALUES_SPAN)/2;
+    if (divideMe <= 0)
+        divideMe = 1;
+
+    /*
+    if (drawCalibrationLoaded)
+        plusMe += 0;//VALUES_SPAN/2;
+    if (drawCalibrationLoaded && calibrationLoaded)
+    {
+        divideMe /=2;
+        plusMe = 0 ;///=2;
+        }*/
+
+//    int mapping = _softwareOrdering ? selectedPixel : hardwareMapping[selectedPixel];
+    int mapping = hardwareMapping[selectedPixel];
+    const int hw = mapping;
+    const PixelMapEntry& mapEntry = fPixelMap.index(selectedPixel);
+    const int pixelIdInPatch = mapEntry.pixel();
+    const int patchId = mapEntry.patch();
+    const int boardId = mapEntry.board();
+    const int crateId = mapEntry.crate();
+
+    if (selectedPixel != -1)
+    {
+    for (int i=0;i<nRoi-1;i++)
+    {
+        float d1 = eventData[nRoi*hw + i]+plusMe;
+        float d2 = eventData[nRoi*hw + i+1]+plusMe;
+        if (!finite(d1)) d1 = 20000;
+        if (!finite(d2)) d2 = 20000;
+        glVertex2f(bboxMin[0] + xRange*i/(float)(nRoi+nRoiTM),
+                   bboxMin[1] + yRange*(d1) /divideMe);
+        glVertex2f(bboxMin[0] + xRange*(i+1)/(float)(nRoi+nRoiTM),
+                   bboxMin[1] + yRange*(d2) /divideMe);
+    }
+    glEnd();
+
+    glColor3f(0.0f, 1.0f, 1.0f);
+    glBegin(GL_LINES);
+    if (pixelIdInPatch == 8)//this channel has a time marker
+    {
+
+        for (int i=0;i<nRoiTM-1;i++)
+        {
+            float d1 = eventData[nRoi*1440 + nRoiTM*(40*crateId + 4*boardId + patchId) + i] + plusMe;
+            float d2 = eventData[nRoi*1440 + nRoiTM*(40*crateId + 4*boardId + patchId) + i+1] + plusMe;
+            if (!finite(d1)) d1 = 20000;
+            if (!finite(d2)) d2 = 20000;
+            glVertex2f(bboxMin[0] + xRange*(i+nRoi)/(float)(nRoi+nRoiTM),
+                       bboxMin[1] + yRange*(d1)/divideMe);
+            glVertex2f(bboxMin[0] + xRange*(i+1+nRoi)/(float)(nRoi+nRoiTM),
+                       bboxMin[1] + yRange*(d2) / divideMe);
+        }
+    }
+
+    }
+    glEnd();
+    glTranslatef(0,0,0.1f);
+    glBegin(GL_LINES);
+    glColor3f(1.0,0.0,0.0);
+    glVertex2f(bboxMin[0] + xRange*whichSlice/(float)(nRoi+nRoiTM),
+               bboxMin[1]);
+    glVertex2f(bboxMin[0] + xRange*whichSlice/(float)(nRoi+nRoiTM),
+               bboxMax[1]);
+
+    glEnd();
+
+}
+/************************************************************
+ * CONSTRUCTOR.
+ ************************************************************/
+RawDataViewer::RawDataViewer(QWidget *cParent) : BasicGlCamera(cParent), RMSvalues(1440), Meanvalues(1440), Maxvalues(1440), PosOfMaxvalues(1440), VALUES_SPAN(4096)
+
+{
+
+    whichSlice = 0;
+
+    nRoi = 0;
+    nRoiTM = 0;
+    offSetRoi = 0;
+    eventNum = 0;
+    rowNum = -1;
+    eventStep = 1;
+    selectedPixel = 393;
+    inputFile = NULL;
+    eventData = NULL;
+    drawPatch = false;
+    drawImpulse = true;
+    drawBlur = false;
+    loopCurrentEvent = false;
+    fIsDrsCalibration = false;
+    SetAutoRefresh(true);
+    runType = "unkown";
+
+
+}
+
+void RawDataViewer::assignPixelMapFile(const string& map)
+{
+    PixelMap mypMap;
+    if (map=="")
+    {
+        if (!mypMap.Read("/swdev_nfs/FACT++/FACTmap111030.txt"))
+        {
+            if (!mypMap.Read("./FACTmap111030.txt"))
+            {
+                cerr << "ERROR - Problems reading FACTmap111030.txt" << endl;
+                exit(-1);
+            }
+        }
+    }
+    else
+    {
+        if (!mypMap.Read(map))
+        {
+            cerr << "ERROR - Problems reading " << map << endl;
+            exit(-1);
+        }
+    }
+
+    assignPixelMap(mypMap);
+
+    for (int i=0;i<160;i++)
+    {
+        const float color[3] = { 0.5, 0.5, 0.3 };
+
+        for (int j=0;j<3;j++)
+            patchesColor[i][j] = color[j];
+    }
+    fZeroArray = NULL;
+
+    _softwareOrdering = false;
+}
+/************************************************************
+ *  DESTRUCTOR
+ ************************************************************/
+RawDataViewer::~RawDataViewer()
+{
+    if (inputFile != NULL)
+    {
+        inputFile->close();
+        delete inputFile;
+    }
+    if (eventData != NULL) {
+        delete[] eventData;
+        delete[] rawEventData;
+        delete[] waveLetArray;
+    }
+    if (fZeroArray != NULL)
+        delete[] fZeroArray;
+}
+void RawDataViewer::allocateZeroArray()
+{
+    if (fZeroArray == NULL)
+    {
+        fZeroArray = new char[8192];
+    }
+}
+/************************************************************
+ * PAINT GL. main drawing function.
+ ************************************************************/
+void RawDataViewer::paintGL()
+{
+    //Should not be required, but apparently it helps when piping it through X forwarding
+    glFinish();
+    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+    glLoadIdentity();
+
+    glTranslatef(0,0,-0.5);
+
+    if (drawBlur)
+    {
+        glShadeModel(GL_SMOOTH);
+        drawCamera(false);
+    }
+    else
+    {
+        glShadeModel(GL_FLAT);
+        drawCamera(true);
+    }
+    glTranslatef(0,0,0.1f);
+    if (drawPatch)
+        drawPatches();
+    glTranslatef(0,0,0.1f);
+   if (!drawBlur && (selectedPixel != -1))
+   {
+        glLineWidth(1.0f);
+        glColor3f(1.0,1.0,1.0);
+        drawHexagon(selectedPixel, false);
+   }
+   glTranslatef(0,0,0.1f);
+   if (drawImpulse)
+   {
+    //   glRotatef(cameraRotation, 0,0,1);
+       glLoadIdentity();
+       glLineWidth(2.0);
+       drawPixelCurve();
+   }
+   glTranslatef(0,0,0.1f);
+   DrawScale();
+}
+
+/************************************************************
+ * MOUSE PRESS EVENT. mouse click handler.
+ ************************************************************/
+void RawDataViewer::mousePressEvent(QMouseEvent *cEvent)
+{
+    if (cEvent->pos().x() > width()-(width()/50.f))
+    {
+        toggleInterfaceDisplay();
+        return;
+    }
+    lastPos = cEvent->pos();
+    if (setCorrectSlice(cEvent))
+        return;
+    int face = PixelAtPosition(cEvent->pos());
+
+        selectedPixel = face;
+        emit signalCurrentPixel(face);
+
+    updateGL();
+}
+
+/************************************************************
+ * SET CORRECT SLICE. if displayed, figures out if the graph was
+ * clicked, and if so, which slice should be displayed
+ ************************************************************/
+bool RawDataViewer::setCorrectSlice(QMouseEvent* cEvent)
+{
+    if (!drawImpulse)
+        return false;
+    float cx = (float)cEvent->x() * pixelSize - shownSizex/2;
+    float cy = ((float)height()-(float)cEvent->y())*pixelSize - shownSizey/2;
+    if (cx < bboxMin[0] ||
+        cx > bboxMax[0] ||
+        cy < bboxMin[1] ||
+        cy > bboxMax[1])
+        return false;
+    whichSlice = (cx - bboxMin[0])*(nRoi+nRoiTM)/(bboxMax[0] - bboxMin[0]);
+    if (whichSlice >= nRoi)
+        whichSlice = nRoi-1;
+    emit signalCurrentSlice(whichSlice);
+    return true;
+}
+
+/************************************************************
+ * MOUSE MOVE EVENT. used to track the dragging of slices display
+ ************************************************************/
+void RawDataViewer::mouseMoveEvent(QMouseEvent *cEvent)
+{
+    if (cEvent->buttons() & Qt::LeftButton) {
+        setCorrectSlice(cEvent);
+        updateGL();
+    } else if (cEvent->buttons() & Qt::RightButton) {
+        updateGL();
+    }
+    lastPos = cEvent->pos();
+}
+
+/************************************************************
+ * MOUSE DOUBLE CLICK EVENT. used to select pixels
+ ************************************************************/
+void RawDataViewer::mouseDoubleClickEvent(QMouseEvent *cEvent)
+{
+    int face = PixelAtPosition(cEvent->pos());
+    if (face != -1) {
+        selectedPixel = face;
+        emit signalCurrentPixel(face);
+        updateGL();
+        }
+}
+
+/************************************************************
+ * OPEN FILE. opens a new fits file
+ ************************************************************/
+void RawDataViewer::openFile(string& file)
+{
+    if (inputFile)
+    {
+        inputFile->close();
+        delete inputFile;
+    }
+    try {
+    inputFile = new factfits(file, "Events");
+    }
+    catch (std::runtime_error e)
+    {
+        cout << "Something went wrong while loading fits. Aborting: " << e.what() << endl;
+        return;
+    }
+    if (!*inputFile)
+    {
+        delete inputFile;
+        inputFile = NULL;
+        return;
+    }
+    vector<string> entriesToCheck;
+    if (inputFile->IsCompressedFITS())
+        entriesToCheck.push_back("ZNAXIS2");
+    else
+        entriesToCheck.push_back("NAXIS2");
+    entriesToCheck.push_back("NROI");
+    entriesToCheck.push_back("REVISION");
+    entriesToCheck.push_back("RUNID");
+    entriesToCheck.push_back("NBOARD");
+    entriesToCheck.push_back("NPIX");
+    entriesToCheck.push_back("NROITM");
+    entriesToCheck.push_back("TIMESYS");
+    entriesToCheck.push_back("DATE");
+    entriesToCheck.push_back("NIGHT");
+    entriesToCheck.push_back("CAMERA");
+    entriesToCheck.push_back("DAQ");
+    entriesToCheck.push_back("TSTART");
+    entriesToCheck.push_back("TSTOP");
+
+
+    for (vector<string>::const_iterator it=entriesToCheck.begin(); it != entriesToCheck.end(); it++)
+    {
+        try {
+        if (!inputFile->HasKey(*it)){
+            cout << "Warning: header keyword " << *it << " missing." << endl;
+            }
+        }
+        catch (std::runtime_error e)
+        {
+            cout << e.what() << endl;
+            return;
+        }
+    }
+
+    nRows = 0;
+    if (inputFile->IsCompressedFITS())
+        nRows = inputFile->HasKey("ZNAXIS2") ? inputFile->GetInt("ZNAXIS2") : 0;
+    else
+        nRows = inputFile->HasKey("NAXIS2") ? inputFile->GetInt("NAXIS2") : 0;
+    nRoi =           inputFile->HasKey("NROI") ?  inputFile->GetInt("NROI") : 0;
+    runNumber =      inputFile->HasKey("RUNID") ?  inputFile->GetInt("RUNID") : -1;
+    nTM =            inputFile->HasKey("NTMARK") ? inputFile->GetInt("NTMARK") : 0;
+
+    runType = "unkown";
+    if (inputFile->HasKey("RUNTYPE"))
+    {
+        runType = inputFile->GetStr("RUNTYPE");
+        if (runType == "")
+            runType = "unkown";
+    }
+    firstDataTime =  inputFile->HasKey("TSTART") ? inputFile->GetInt("TSTART") : -1;
+    lastDataTime =   inputFile->HasKey("TSTOP") ? inputFile->GetInt("TSTOP"): -1;
+    nRoiTM =         inputFile->HasKey("NROITM") ? inputFile->GetInt("NROITM") : 0;
+    revision =       inputFile->HasKey("REVISION") ? inputFile->GetInt("REVISION") : -1;
+    builderVersion = inputFile->HasKey("BLDVER") ? inputFile->GetInt("BLDVER") : -1;
+    nBoards =        inputFile->HasKey("NBOARD") ? inputFile->GetInt("NBOARD") : 0;
+    nPixels =        inputFile->HasKey("NPIX") ?  inputFile->GetInt("NPIX") : 0;
+    timeSystem =     inputFile->HasKey("TIMESYS") ? inputFile->GetStr("TIMESYS") : "";
+    creationDate =   inputFile->HasKey("DATE") ? inputFile->GetStr("DATE") : "";
+    nightInt =       inputFile->HasKey("NIGHT") ? inputFile->GetInt("NIGHT") : 0;
+    camera =         inputFile->HasKey("CAMERA") ? inputFile->GetStr("CAMERA") : "";
+    daq =            inputFile->HasKey("DAQ") ? inputFile->GetStr("DAQ") : "";
+    adcCount =       inputFile->HasKey("ADCRANGE") ? inputFile->GetFloat("ADCRANGE") : 2000;
+    if (nPixels == 0)
+    {
+        cout << "could not read num pixels from fits header. Assuming 1440 (FACT)." << endl;
+        nPixels = 1440;
+    }
+    if (nRoi == 0 && !inputFile->HasKey("NROI"))
+    {//let's try to figure out the roi from the column's format
+        const fits::Table::Columns& cols = inputFile->GetColumns();
+        if (cols.find("Data") == cols.end())
+        {
+            cout << "ERROR: Column \"Data\" could not be found. abortin load." << endl;
+            return;
+        }
+        const fits::Table::Columns::const_iterator col = cols.find("Data");
+        if (col->second.type != 'I')
+        {
+            cout << "ERROR: Data Column has type " << col->second.type << " while viewer expects I" << endl;
+            return;
+        }
+        if (col->second.num % nPixels != 0)
+        {
+            cout << "ERROR: Num pixels (" << nPixels << ") does not match Data length (" << col->second.num << "). Aborting" << endl;
+            return;
+        }
+        nRoi = col->second.num/nPixels;
+        cout << "Estimate num samples per pixels to be " << nRoi;
+        _softwareOrdering = true;
+    }
+    else
+        _softwareOrdering = false;
+
+    if (inputFile->HasKey("OFFSET"))
+        offSetRoi = inputFile->GetInt("OFFSET");
+
+    nbOk = 0;//inputFile->GetInt("NBEVTOK");
+    nbRej = 0;//inputFile->GetInt("NBEVTREJ");
+    nbBad = 0;//inputFile->GetInt("NBEVTBAD");
+
+    eventNum = 1;
+
+    if (eventData != NULL) {
+        delete[] eventData;
+        delete[] rawEventData;
+        delete[] waveLetArray;
+    }
+    eventData = new float[1440*nRoi + 160*nRoiTM];//(1440+160)*nRoi];
+
+    rawEventData = new int16_t[1440*nRoi + 160*nRoiTM];//(1440+160)*nRoi];
+    waveLetArray = new int16_t[1024*1440];
+    try
+    {
+        inputFile->SetPtrAddress("Data", rawEventData);
+        if (inputFile->HasColumn("EventNum"))
+            inputFile->SetPtrAddress("EventNum", &eventNum);
+        else
+            cout << "Warning: could not find column \"EventNum\"" << endl;
+        if (inputFile->HasColumn("TriggerType"))
+            inputFile->SetPtrAddress("TriggerType", &triggerType);
+        else
+            cout << "Warning: could not find column \"TriggerType\"" << endl;
+        if (inputFile->HasColumn("SoftTrig"))
+            inputFile->SetPtrAddress("SoftTrig", &softTrig);
+        else
+            cout << "Warning: could not find column \"SoftTrig\"" << endl;
+        if (inputFile->HasColumn("BoardTime"))
+            inputFile->SetPtrAddress("BoardTime", boardTime);
+        else
+            cout << "Warning: could not find column \"BoardTime\"" << endl;
+        if (inputFile->HasColumn("StartCellData"))
+            inputFile->SetPtrAddress("StartCellData", startPix);
+        else
+            cout << "Warning: could not find column \"StartCellData\"" << endl;
+        if (inputFile->HasColumn("StartCellTimeMarker"))
+            inputFile->SetPtrAddress("StartCellTimeMarker", startTM);
+        else
+            cout << "Warning: could not find column \"StartCellTimeMarker\"" << endl;
+        if (inputFile->HasColumn("TimeMarker"))
+            inputFile->SetPtrAddress("TimeMarker", &rawEventData[1440*nRoi]);
+        else
+            cout << "Warning: could not find column \"TimeMarker\"" << endl;
+    }
+    catch (const runtime_error &e)
+    {
+        cout << e.what() << endl;
+        cout << "Loading aborted." << endl;
+
+        nRoi = nRows = 0;
+
+        return;
+    }
+
+    try
+    {
+        pcTime[0] = pcTime[1] = 0;
+        if (inputFile->HasColumn("UnixTimeUTC"))
+            inputFile->SetPtrAddress("UnixTimeUTC", pcTime);
+    }
+    catch (const runtime_error&)
+    {
+            try
+        {
+            if (inputFile->HasColumn("PCTime"))
+                inputFile->SetPtrAddress("PCTime", pcTime);
+            else
+                cout << "Warning: could not find column \"UnixTimeUTC\" nor \"PCTime\"" << endl;
+
+        }
+        catch (const runtime_error&)
+        {
+
+        }
+    }
+
+
+    int backupStep = eventStep;
+    rowNum = -1;
+    eventStep = 1;
+
+    plusEvent();
+    eventStep = backupStep;
+    emit newFileLoaded();
+    emit signalCurrentPixel(selectedPixel);
+}
+
+void RawDataViewer::openCalibFile(string& file)
+{
+    //calibrationLoaded = false;
+    string msg;
+    try
+    {
+        msg = fDrsCalib.ReadFitsImp(file);
+        if (msg.empty())
+        {
+            emit newFileLoaded();
+            updateGL();
+            return;
+        }
+    }
+    catch (const runtime_error &e)
+    {
+        msg = string("Something went wrong while loading Drs Calib: ") + e.what() + string(".. Aborting file loading");
+    }
+    cerr << msg << endl;
+    fDrsCalib.Clear();
+}
+
+template <typename T>
+void RawDataViewer::getCalibrationDataForDisplay(const CalibDataTypes/* calibTypes*/,
+                                                 const vector<T>& inputData,
+                                                 const int roi,
+                                                 const int roiTM)
+{
+
+    eventData = new float[1440*roi + 160*roiTM];//(1440+160)*nRoi];
+    nRoi=roi;
+    nRoiTM=roiTM;
+
+    long long min, max, mean;
+    min = max = inputData[0];
+    mean=0;
+    for (int i=0;i<1440*roi + 160*roiTM;i++) {
+        eventData[i] = (float)inputData[i];
+        mean += inputData[i];
+        if (inputData[i] > max)
+            max = inputData[i];
+        if (inputData[i] < min)
+            min = inputData[i];
+    }
+    mean /= 1440*roi + 160*roiTM;
+    for (int i=0;i<1440*roi + 160*roiTM;i++)
+        eventData[i] -= (float)mean;
+    VALUES_SPAN = max - min;
+//    cout << VALUES_SPAN << " " << min << " " << max << " " << mean << endl;
+//    cout << 1440*roi + 160*roiTM << " " << roi << " " << roiTM << " " << inputData.size() << endl;
+}
+/************************************************************
+ * PLUS EVENT
+ ************************************************************/
+void RawDataViewer::plusEvent()
+{
+    eventStepping(true);
+}
+/************************************************************
+ * MINUS EVENT
+ ************************************************************/
+void RawDataViewer::minusEvent()
+{
+    eventStepping(false);
+}
+/************************************************************
+ * SET EVENT STEP
+ ************************************************************/
+void RawDataViewer::setEventStep(int step)
+{
+    eventStep = step;
+}
+/************************************************************
+ * EVENT STEPPING
+ ************************************************************/
+
+void RawDataViewer::ApplyCalibration()
+{
+    for (int i=0;i<1440*nRoi + 160*nRoiTM;i++)//(1440+160)*nRoi;i++)
+        eventData[i] = (float)rawEventData[i];
+
+    if (fIsDrsCalibration)
+    {
+        fDrsCalib.Apply(eventData, rawEventData, startPix, nRoi);
+        DrsCalibrate::RemoveSpikes(eventData, nRoi);
+        //TODO apply calibration to the Time markers
+    }
+
+    //hide the time markers
+    int nSlicesToRemove = 60;
+    float* backupData = 0;
+    if (nRoiTM == 0) //they are written into the regular channel
+    {
+        backupData = new float[nSlicesToRemove*160];
+        for (int i=0;i<1440;i++)
+        {
+            const PixelMapEntry& mapEntry = fPixelMap.index(i);
+            const int pixelIdInPatch = mapEntry.pixel();
+            const int patchId = mapEntry.patch();
+            const int boardId = mapEntry.board();
+            const int crateId = mapEntry.crate();
+
+            const int hw = mapEntry.hw();
+            if (pixelIdInPatch == 8)
+            {
+                for (int j=0;j<nSlicesToRemove;j++)
+                {
+                    backupData[(40*crateId + 4*boardId + patchId)*nSlicesToRemove+j] = eventData[(hw*nRoi) + (nRoi-nSlicesToRemove) + j];
+                    eventData[(hw*nRoi) + (nRoi-nSlicesToRemove) + j] = eventData[hw*nRoi + (nRoi-nSlicesToRemove) - 1];
+                }
+            }
+        }
+    }
+
+    vector<float> pixelStatsData(1440*4);
+    DrsCalibrate::GetPixelStats(pixelStatsData.data(), eventData, nRoi);
+
+    for (vector<PixelMapEntry>::const_iterator it=fPixelMap.begin(); it!=fPixelMap.end(); it++)
+    {
+        Meanvalues[it->index]     = pixelStatsData[0*1440+it->hw()];
+        RMSvalues[it->index]      = pixelStatsData[1*1440+it->hw()];
+        Maxvalues[it->index]      = pixelStatsData[2*1440+it->hw()];
+        PosOfMaxvalues[it->index] = pixelStatsData[3*1440+it->hw()];
+    }
+    if (nRoiTM == 0)//move back the data back in place
+    {
+        for (int i=0;i<1440;i++)
+        {
+            const PixelMapEntry& mapEntry = fPixelMap.index(i);
+            const int pixelIdInPatch = mapEntry.pixel();
+            const int patchId = mapEntry.patch();
+            const int boardId = mapEntry.board();
+            const int crateId = mapEntry.crate();
+            if (patchId > 160)
+                cout << "Voila mon probleme: " << patchId << endl;
+            const int hw = mapEntry.hw();
+            if (pixelIdInPatch == 8)
+            {
+ //               cout << "|" << crateId << " " << boardId << " " << patchId << " " << hw << "| ";
+                for (int j=0;j<nSlicesToRemove;j++)
+                {
+                    eventData[(hw*nRoi) + (nRoi - nSlicesToRemove) + j] = backupData[(40*crateId + 4*boardId + patchId)*nSlicesToRemove+j];
+                }
+            }
+        }
+        delete[] backupData;
+    }
+    if (isVisible())
+        updateGL();
+}
+
+void RawDataViewer::eventStepping(bool plus)
+{
+    if (plus)
+        rowNum += eventStep;
+    else
+        rowNum -= eventStep;
+    if (rowNum >= nRows)
+        rowNum -= nRows;
+    if (rowNum < 0)
+        rowNum += nRows;
+
+    if (inputFile == NULL)
+        return;
+    inputFile->GetRow(rowNum);
+    if (_softwareOrdering)
+    {//remap pixels data according to hardware id
+        if (nRoiTM != 0)
+            cout << "Warning: did not expect Time Markers data from Monte-Carlo simulations. These will not be mapped properly." << endl;
+        //first copy the data
+        int16_t* tempData = new int16_t[1440*nRoi];
+        for (int i=0;i<1440*nRoi;i++)
+            tempData[i] = rawEventData[i];
+        //copy back the data and re-map it on the fly
+        for (int i=0;i<1440;i++)
+            for (int j=0;j<nRoi;j++)
+                rawEventData[i*nRoi + j] = tempData[softwareMapping[i]*nRoi + j];
+
+        delete[] tempData;
+    }
+//    cout << "Getting row " << rowNum << endl;
+
+
+    ApplyCalibration();
+
+    emit signalCurrentEvent(eventNum);
+    emit signalCurrentPixel(selectedPixel);
+}
+
+/************************************************************
+ * NEXT SLICE. deprec ?
+ ************************************************************/
+void RawDataViewer::nextSlice()
+{
+    whichSlice++;
+    if (whichSlice >= nRoi)
+    {
+        whichSlice = 0;
+        if (!loopCurrentEvent)
+        {
+            int backupStep = eventStep;
+            eventStep = 1;
+            eventStepping(true);
+            eventStep = backupStep;
+        }
+    }
+    emit signalCurrentSlice(whichSlice);
+    updateGL();
+}
+void RawDataViewer::previousSlice()
+{
+    whichSlice--;
+    if (whichSlice < 0)
+    {
+        whichSlice = nRoi-1;
+        if (!loopCurrentEvent)
+        {
+            int backupStep = eventStep;
+            eventStep = 1;
+            eventStepping(false);
+            eventStep = backupStep;
+        }
+    }
+    emit signalCurrentSlice(whichSlice);
+    updateGL();
+}
+void RawDataViewer::setCurrentPixel(int pix)
+{
+ //   if (pix == -1)
+ //       return;
+    selectedPixel = pix;
+    if (isVisible())
+    updateGL();
+     emit signalCurrentPixel(pix);
+}
+void RawDataViewer::computePulsesStatistics()
+{
+    if (!inputFile)
+    {
+        cout << "A FITS file must be open in order to complete this operation" << endl;
+        return;
+    }
+
+
+//    for (int i=0;i<nRows;i++)//for all events
+//    {
+//        inputFile->GetRow(rowNum);
+//        for (int i=0;i<(1440+160)*nRoi;i++)
+//            eventData[i] = (float)rawEventData[i];
+
+//        for (int j=0;j<ACTUAL_NUM_PIXELS;j++)
+///        {
+    int j = selectedPixel;
+    if (j == -1)
+        return;
+            for (int i=0;i<nRoi;i++)
+            {
+                aMeas[i] = eventData[j*nRoi+i];// * adcCount;
+
+            }
+            for (int i=0;i<nRoi;i++)
+            {
+                if (i==0)
+                    n1mean[i] = aMeas[i+1];
+                else
+                {
+                    if (i==1023)
+                        n1mean[i] = aMeas[i-1];
+                    else
+                        n1mean[i] = (aMeas[i-1]+aMeas[i+1])/2.f;
+                }
+            }
+            //find spike
+            for (int i=0;i<nRoi-3;i++)
+            {
+                const float fract = 0.8f;
+                float xx, xp, xpp;
+                vCorr[i] = 0;//aMeas[i];
+                xx = aMeas[i] - n1mean[i];
+                if (xx < -8.f)
+                {
+                    xp = aMeas[i+1] - n1mean[i+1];
+                    xpp = aMeas[i+2] - n1mean[i+2];
+                    if ((aMeas[i+2] - (aMeas[i] + aMeas[i+3])/2.f) > 10.f)
+                    {
+                        vCorr[i+1] = (aMeas[i] + aMeas[i+3])/2.f;
+                        vCorr[i+2] = (aMeas[i] + aMeas[i+3])/2.f;
+                        i = i+2;
+                    }
+                    else
+                    {
+                        if ((xp > -2.*xx*fract) && (xpp < -10.f))
+                        {
+                            vCorr[i+1] = n1mean[i+1];
+                            n1mean[i+2] = aMeas[i+1] - aMeas[i+3]/2.f;
+                            i++;
+                        }
+                    }
+                }
+            }
+            for (int i=0;i<nRoi;i++)
+                n1mean[i] = aMeas[i]-n1mean[i];
+ //       }
+ //   }
+}
+/************************************************************
+ * UICONNECTOR CONSTRUCTOR
+ ************************************************************/
+UIConnector::UIConnector(QWidget *p)
+{
+    setupUi(this);
+    initHistograms();
+
+    currentFile = "none";
+    currentCalibFile = "none";
+
+    updateSpinnerDisplay = true;
+    updating = false;
+
+    timer.setInterval(10.0);
+    QObject::connect(&timer, SIGNAL(timeout()),
+                     this, SLOT(nextSlicePlease()));
+
+    QButtonGroup &scaleGroup = *new QButtonGroup(p);// = new QButtonGroup(canvas);
+    QButtonGroup &animateGroup = *new QButtonGroup(p);// = new QButtonGroup(canvas);
+
+    scaleGroup.addButton(currentPixelScale);
+    scaleGroup.addButton(entireCameraScale);
+
+    animateGroup.addButton(playEventsRadio);
+    animateGroup.addButton(playSlicesRadio);
+    animateGroup.addButton(playPixelsRadio);
+
+    entireCameraScale->setChecked(true);
+
+    RMS_window->enableText(false);
+    Mean_window->enableText(false);
+    PosOfMax_window->enableText(false);
+    Max_window->enableText(false);
+
+ //   RMS_window->ShowPatchCursor(true);
+
+    QObject::connect(GLWindow, SIGNAL(colorPaletteHasChanged()),
+                     this, SLOT(on_autoScaleColor_clicked()));
+    QObject::connect(GLWindow, SIGNAL(signalCurrentSlice(int)),
+                     this, SLOT(currentSliceHasChanged(int)));
+    QObject::connect(GLWindow, SIGNAL(signalCurrentEvent(int)),
+                     this, SLOT(currentEventHasChanged(int)));
+    QObject::connect(GLWindow, SIGNAL(signalCurrentPixel(int)),
+                     this, SLOT(pixelChanged(int)));
+    QObject::connect(GLWindow, SIGNAL(newFileLoaded()),
+                     this, SLOT(newFileLoaded()));
+
+    QObject::connect(RMS_window, SIGNAL(signalCurrentPixel(int)),
+                     GLWindow, SLOT(setCurrentPixel(int)));
+    QObject::connect(Max_window, SIGNAL(signalCurrentPixel(int)),
+                     GLWindow, SLOT(setCurrentPixel(int)));
+    QObject::connect(PosOfMax_window, SIGNAL(signalCurrentPixel(int)),
+                     GLWindow, SLOT(setCurrentPixel(int)));
+    QObject::connect(Mean_window, SIGNAL(signalCurrentPixel(int)),
+                     GLWindow, SLOT(setCurrentPixel(int)));
+
+
+
+    show();
+}
+UIConnector::~UIConnector()
+{
+    grid1->detach();
+    grid2->detach();
+    grid3->detach();
+    grid4->detach();
+    grid5->detach();
+    grid6->detach();
+    boardsTimeHistoItem.detach();
+    startCellHistoItem.detach();
+    startTimeMarkHistoItem.detach();
+    pixelValueCurveItem.detach();
+    pixelAverageCurveItem.detach();
+    aMeanCurveItem.detach();
+    vCorrCurveItem.detach();
+    meanCurveItem.detach();
+}
+void UIConnector::slicesPlusPlus()
+{
+    GLWindow->nextSlice();
+}
+void UIConnector::slicesMinusMinus()
+{
+    GLWindow->previousSlice();
+}
+void UIConnector::on_calibratedCheckBox_stateChanged(int state)
+{
+    GLWindow->fIsDrsCalibration = state;
+    GLWindow->ApplyCalibration();
+    threeD_Window->setData(GLWindow->eventData);
+
+    on_autoScaleColor_clicked();
+    pixelChanged(GLWindow->selectedPixel);
+
+}
+/************************************************************
+ * DRAW PATCHES CHECK CHANGE. checkbox handler
+ ************************************************************/
+void UIConnector::on_drawPatchCheckBox_stateChanged(int state)
+{
+    GLWindow->drawPatch = state;
+    GLWindow->updateGL();
+    RMS_window->fDrawPatch = state;
+    RMS_window->updateGL();
+    Mean_window->fDrawPatch = state;
+    Mean_window->updateGL();
+    Max_window->fDrawPatch = state;
+    Max_window->updateGL();
+    PosOfMax_window->fDrawPatch = state;
+    PosOfMax_window->updateGL();
+}
+/************************************************************
+ * DRAW IMPULSE CHECK CHANGE. checkbox handler
+ ************************************************************/
+void UIConnector::on_drawImpulseCheckBox_stateChanged(int state)
+{
+    GLWindow->drawImpulse = state;
+    TriggerOffset_window->drawImpulse = state;
+    Gain_window->drawImpulse = state;
+    Baseline_window->drawImpulse = state;
+    GLWindow->updateGL();
+    TriggerOffset_window->updateGL();
+    Gain_window->updateGL();
+    Baseline_window->updateGL();
+}
+/************************************************************
+ * DRAW BLUR CHECK CHANGE. checkbox handler
+ ************************************************************/
+void UIConnector::on_drawBlurCheckBox_stateChanged(int state)
+{
+    GLWindow->drawBlur = state;
+    GLWindow->updateGL();
+}
+void UIConnector::on_loopOverCurrentEventBox_stateChanged(int state)
+{
+    GLWindow->loopCurrentEvent = state;
+}
+
+/************************************************************
+ * NEXT SLICE PLEASE
+ ************************************************************/
+void UIConnector::nextSlicePlease()
+{
+    if (playEventsRadio->isChecked ())
+        GLWindow->eventStepping(true);
+    else
+        if (playPixelsRadio->isChecked())
+            GLWindow->setCurrentPixel((GLWindow->getCurrentPixel()+1)%1440);
+        else
+            GLWindow->nextSlice();
+}
+
+/************************************************************
+ * SET VIEWER.
+ ************************************************************/
+//void UIConnector::setViewer(RawDataViewer* v)
+//{
+//    viewer = v;
+//}
+/************************************************************
+ * SLICES PER SECOND CHANGED. timing ui handler
+ ************************************************************/
+void UIConnector::slicesPerSecondChanged(double value)
+{
+    timer.setInterval(1000.0/value);
+}
+
+void UIConnector::on_colorRange0_valueChanged(double value) { GLWindow->ss[0] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_colorRange1_valueChanged(double value) { GLWindow->ss[1] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_colorRange2_valueChanged(double value) { GLWindow->ss[2] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_colorRange3_valueChanged(double value) { GLWindow->ss[3] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_colorRange4_valueChanged(double value) { GLWindow->ss[4] = (float)value; GLWindow->updateGL(); }
+
+void UIConnector::on_redValue0_valueChanged(double value) { GLWindow->rr[0] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_redValue1_valueChanged(double value) { GLWindow->rr[1] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_redValue2_valueChanged(double value) { GLWindow->rr[2] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_redValue3_valueChanged(double value) { GLWindow->rr[3] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_redValue4_valueChanged(double value) { GLWindow->rr[4] = (float)value; GLWindow->updateGL(); }
+
+void UIConnector::on_greenValue0_valueChanged(double value) { GLWindow->gg[0] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_greenValue1_valueChanged(double value) { GLWindow->gg[1] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_greenValue2_valueChanged(double value) { GLWindow->gg[2] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_greenValue3_valueChanged(double value) { GLWindow->gg[3] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_greenValue4_valueChanged(double value) { GLWindow->gg[4] = (float)value; GLWindow->updateGL(); }
+
+void UIConnector::on_blueValue0_valueChanged(double value) { GLWindow->bb[0] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_blueValue1_valueChanged(double value) { GLWindow->bb[1] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_blueValue2_valueChanged(double value) { GLWindow->bb[2] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_blueValue3_valueChanged(double value) { GLWindow->bb[3] = (float)value; GLWindow->updateGL(); }
+void UIConnector::on_blueValue4_valueChanged(double value) { GLWindow->bb[4] = (float)value; GLWindow->updateGL(); }
+
+/************************************************************
+ * LOAD NEW FILE CLICKED. button handler
+ ************************************************************/
+void UIConnector::on_loadNewFileButton_clicked()
+{
+    QFileDialog dialog;
+    dialog.setFileMode(QFileDialog::ExistingFile);
+    dialog.open(this, SLOT(fileSelected(QString)));
+    dialog.setVisible(true);
+    dialog.exec();
+}
+void UIConnector::on_loadDRSCalibButton_clicked()
+{
+    QFileDialog dialog;
+    dialog.setFileMode(QFileDialog::ExistingFile);
+    dialog.open(this, SLOT(calibFileSelected(QString)));
+    dialog.setVisible(true);
+    dialog.exec();
+}
+/************************************************************
+ * FILE SELECTED. return of the file open dialog handler
+ ************************************************************/
+void UIConnector::fileSelected(QString file)
+{
+    currentFile = file.toStdString();
+    if (currentFile != "")
+        GLWindow->openFile(currentFile);
+}
+void UIConnector::calibFileSelected(QString file)
+{
+    currentCalibFile = file.toStdString();
+    if (currentCalibFile != "")
+        GLWindow->openCalibFile(currentCalibFile);
+    if (GLWindow->fDrsCalib.fRoi != 0)
+    {//spread the calibration data to the displayers
+        Baseline_window->getCalibrationDataForDisplay(RawDataViewer::CALIB_BASELINE,
+                                                      GLWindow->fDrsCalib.fOffset,
+                                                      GLWindow->fDrsCalib.fRoi,
+                                                      GLWindow->fDrsCalib.fNumTm);
+
+        Gain_window->getCalibrationDataForDisplay(RawDataViewer::CALIB_GAIN,
+                                                  GLWindow->fDrsCalib.fGain,
+                                                  GLWindow->fDrsCalib.fRoi,
+                                                  GLWindow->fDrsCalib.fNumTm);
+
+        TriggerOffset_window->getCalibrationDataForDisplay(RawDataViewer::CALIB_TRIG_OFFSET,
+                                                           GLWindow->fDrsCalib.fTrgOff,
+                                                           GLWindow->fDrsCalib.fRoi,
+                                                           GLWindow->fDrsCalib.fNumTm);
+
+    }
+}
+/************************************************************
+ * NEW FILE LOADED. update of the UI after a new file has been loaded
+ ************************************************************/
+void UIConnector::newFileLoaded()
+{
+    ostringstream str;
+
+    //extract the file name only (no path) from the full name
+    str << "File: ";
+    if (currentFile.size() > 2)
+        str << currentFile.substr(currentFile.find_last_of("//")+1, currentFile.size()) << "\n";
+    else
+        str << "--\n";
+    str << "Calibration: ";
+    if (currentCalibFile.size() > 2)
+        str << currentCalibFile.substr(currentCalibFile.find_last_of("//")+1, currentCalibFile.size()) << "\n";
+    else
+        str << "--\n";
+//    fileLoadedLabel->setText(QString(str.str().c_str()));
+//    str.str("");
+    str << "Run number: " << GLWindow->runNumber << "\n";
+//    runNumberLabel->setText(QString(str.str().c_str()));
+//    str.str("");
+    str << "Number of Events: " << GLWindow->nRows << "\n";
+
+    displayingEventBox->setMaximum(GLWindow->nRows-1);
+
+    str << "Number of Slices: " << GLWindow->nRoi << "\n";// << "/1024";
+//    numberOfSlicesLabel->setText(QString(str.str().c_str()));
+//    str.str("");
+    str << "Number of Time Marks: " << GLWindow->nTM << "\n";
+//    numberOfTimeMarksLabel->setText(QString(str.str().c_str()));
+
+//    str.str("");
+    str << "Run Type: " << GLWindow->runType << "\n";
+//    runTypeLabel->setText(QString(str.str().c_str()));
+//    str.str("");
+    str << "Time of 1st data: " << GLWindow->firstDataTime << "\n";
+//    firstTimeLabel->setText(QString(str.str().c_str()));
+//    str.str("");
+    str << "Time of last data: " << GLWindow->lastDataTime << "\n";
+//    lastTimeLabel->setText(QString(str.str().c_str()));
+//    str.str("");
+    str << "SVN revision: " << GLWindow->revision << '\n';
+    str << "Number of boards: " << GLWindow->nBoards << '\n';
+    str << "Number of pixels: " << GLWindow->nPixels << '\n';
+    str << "Number of Slices TM: " << GLWindow->nRoiTM << '\n';
+    str << "Time system: " << GLWindow->timeSystem << '\n';
+    str << "Date: " << GLWindow->creationDate << '\n';
+    str << "Night: " << GLWindow->nightInt << '\n';
+    str << "Camera: " << GLWindow->camera << '\n';
+    str << "DAQ: " << GLWindow->daq << '\n';
+    str << "ADC Count: " << GLWindow->adcCount << '\n';
+    str << "NB Evts OK:" << GLWindow->nbOk << '\n';
+    str << "NB Evts Rejected: " << GLWindow->nbRej << '\n';
+    str << "NB Evts Bad: " << GLWindow->nbBad << '\n';
+    extraInfoLabel->setText(QString(str.str().c_str()));
+
+    /*
+    if (GLWindow->calibrationLoaded)
+    {
+        drawCalibrationCheckBox->setEnabled(true);
+    }*/
+
+
+}
+/************************************************************
+ * PLAY PAUSE CLICKED. ui handler
+ ************************************************************/
+void UIConnector::on_playPauseButton_clicked()
+{
+    if (timer.isActive())
+        timer.stop();
+    else
+        timer.start();
+}
+
+void UIConnector::displaySliceValue()
+{
+    if (!GLWindow->nRoi)
+        return;
+    if (GLWindow->selectedPixel == -1)
+    {
+        ostringstream str;
+        str << " Current Pixel val.: --";
+        currentPixelValue->setText(QString(str.str().c_str()));
+        return;
+    }
+//    int mapping = GLWindow->_softwareOrdering ? GLWindow->selectedPixel : GLWindow->hardwareMapping[GLWindow->selectedPixel];
+    int mapping = GLWindow->hardwareMapping[GLWindow->selectedPixel];
+    const int idx = GLWindow->nRoi*mapping + GLWindow->whichSlice;
+
+    ostringstream str;
+    str << "Current Pixel val.: " << GLWindow->eventData[idx];
+    currentPixelValue->setText(QString(str.str().c_str()));
+}
+
+/************************************************************
+ * CURRENT SLICE HAS CHANGE. ui handler
+ ************************************************************/
+void UIConnector::currentSliceHasChanged(int slice)
+{
+    if (!GLWindow->nRoi)
+        return;
+
+    if (updateSpinnerDisplay)
+        displayingSliceBox->setValue(slice);
+
+    displaySliceValue();
+}
+
+/*****
+ *******************************************************
+ * CURRENT EVENT HAS CHANGED. ui handler
+ ************************************************************/
+
+double xval[50000];
+double yval[50000];
+void UIConnector::on_displayingEventBox_valueChanged(int cEvent)
+{
+//    cout << "Here " << updateSpinnerDisplay << endl;
+    if (!updateSpinnerDisplay)
+        return;
+    updateSpinnerDisplay = false;
+//    currentEventHasChanged(cEvent);
+    GLWindow->rowNum = cEvent - GLWindow->eventStep;
+    GLWindow->eventStepping(true);
+    updateSpinnerDisplay = true;
+
+//    GLWindow->updateGL();
+}
+void UIConnector::on_slicesPerSecValue_valueChanged(double value)
+{
+    timer.setInterval(1000.0/value);
+}
+void UIConnector::on_displayingSliceBox_valueChanged(int cSlice)
+{
+    updateSpinnerDisplay = false;
+    currentSliceHasChanged(cSlice);
+    updateSpinnerDisplay = true;
+    GLWindow->whichSlice = cSlice;
+    GLWindow->updateGL();
+}
+void UIConnector::currentEventHasChanged(int )
+{
+
+    RMS_window->SetData(GLWindow->RMSvalues);
+    Mean_window->SetData(GLWindow->Meanvalues);
+    PosOfMax_window->SetData(GLWindow->PosOfMaxvalues);
+    Max_window->SetData(GLWindow->Maxvalues);
+    threeD_Window->setData(GLWindow->eventData);//rawEventData);
+
+    if (RMS_window->isVisible())
+        RMS_window->updateGL();
+    if (Mean_window->isVisible())
+        Mean_window->updateGL();
+    if (PosOfMax_window->isVisible())
+        PosOfMax_window->updateGL();
+    if (Max_window->isVisible())
+        Max_window->updateGL();
+    ostringstream str;
+//    str << "Displaying Event " << cEvent;
+//    QString qstr(str.str().c_str());
+//    emit updateCurrentEventDisplay(qstr);
+    if (updateSpinnerDisplay)
+    {
+        updateSpinnerDisplay = false;
+        displayingEventBox->setValue(GLWindow->rowNum);
+        updateSpinnerDisplay = true;
+    }
+
+ //   GLWindow->doWaveLetOnCurrentEventPlease();
+
+        //retrieve the data that we want to display
+    boost::posix_time::ptime hrTime( boost::gregorian::date(1970, boost::gregorian::Jan, 1),
+            boost::posix_time::seconds(GLWindow->pcTime[0]) +  boost::posix_time::microsec(GLWindow->pcTime[1]));
+
+    str.str("");
+    str << "PC Time: " << boost::posix_time::to_iso_extended_string(hrTime);
+    PCTimeLabel->setText(QString(str.str().c_str()));
+
+    str.str("");
+    str << "Software Trigger: " << GLWindow->softTrig;
+    softwareTriggerLabel->setText(QString(str.str().c_str()));
+
+    str.str("");
+    str << "Trigger Type: " << GLWindow->triggerType;
+    triggerTypeLabel->setText(QString(str.str().c_str()));
+
+    displaySliceValue();
+
+    if (autoScaleColor->isChecked())
+        emit GLWindow->colorPaletteHasChanged();//autoScalePressed();
+
+    boardsTimeList->clear();
+    startPixelsList->clear();
+    startTimeMarksList->clear();
+    triggerDelayList->clear();
+    std::map<int, int> boardsHistoMap;
+    for (int i=0;i <NBOARDS; i++)
+    {
+        str.str("");
+        str << i;
+        if (i<10) str << " ";
+        if (i<100) str << " ";
+        if (i<1000) str << " ";
+        str << ": " << GLWindow->boardTime[i];
+        boardsTimeList->addItem(QString(str.str().c_str()));
+        if (boardsHistoMap.find(GLWindow->boardTime[i]) != boardsHistoMap.end())
+            boardsHistoMap[GLWindow->boardTime[i]]++;
+        else
+            boardsHistoMap[GLWindow->boardTime[i]] = 1;
+    }
+    std::map<int, int> pixelHistoMap;
+    for (int i=0;i <NPIX; i++)
+    {
+        str.str("");
+        str << i;
+        if (i<10) str << " ";
+        if (i<100) str << " ";
+        if (i<1000) str << " ";
+        str << ": " << GLWindow->startPix[i];
+        startPixelsList->addItem(QString(str.str().c_str()));
+        if (pixelHistoMap.find(GLWindow->startPix[i]) != pixelHistoMap.end())
+            pixelHistoMap[GLWindow->startPix[i]]++;
+        else
+            pixelHistoMap[GLWindow->startPix[i]] = 1;
+    }
+
+    std::map<int, int> timeMarksMap;
+    for (int i=0;i <NTMARK; i++)
+    {
+        str.str("");
+        str << i;
+        if (i<10) str << " ";
+        if (i<100) str << " ";
+        if (i<1000) str << " ";
+        str << ": " << GLWindow->startTM[i];
+        startTimeMarksList->addItem(QString(str.str().c_str()));
+        if (timeMarksMap.find(GLWindow->startTM[i]) != timeMarksMap.end())
+            timeMarksMap[GLWindow->startTM[i]]++;
+        else
+            timeMarksMap[GLWindow->startTM[i]] = 1;
+    }
+    std::map<int,int> delayMap;
+    triggerDelayList->addItem(QString("Patch | Slice:Delay Slice:Delay..."));
+    for (int i=0;i<NTMARK; i++)
+    {
+        str.str("");
+        str << i << " | ";
+        for (int j=0;j<GLWindow->nRoi;j++)
+        {
+            int value = GLWindow->eventData[1440*GLWindow->nRoi + i*GLWindow->nRoi + j];
+            if (delayMap.find(value) != delayMap.end())
+                 delayMap[value]++;
+             else
+                 delayMap[value] = 1;
+            str << j << ":" << value << " ";
+         }
+        triggerDelayList->addItem(QString(str.str().c_str()));
+    }
+
+    std::map<int,int>::iterator it = boardsHistoMap.begin();
+    int nsamples = 0;
+    int previousValue = it->first-10;
+    for (unsigned int i=0;i<boardsHistoMap.size();i++)
+    {
+        if (previousValue != it->first-1)
+        {
+            xval[nsamples] = previousValue+1;
+            yval[nsamples] = 0;
+            nsamples++;
+            xval[nsamples] = it->first-1;
+            yval[nsamples] = 0;
+            nsamples++;
+        }
+        xval[nsamples] = it->first;
+        yval[nsamples] = it->second;
+        previousValue = it->first;
+        it++;
+        nsamples++;
+        xval[nsamples] = previousValue;
+        yval[nsamples] = 0;
+        nsamples++;
+        if (nsamples > 4090)
+        {
+            cout << "Error: Maximum number of samples reached for histograms. skipping what's remaining" << endl;
+            break;
+        }
+    }
+    xval[nsamples] = it==boardsHistoMap.begin() ? 0 : (--it)->first+1;
+    yval[nsamples] = 0;
+    nsamples++;
+ //   if (nsamples > 5)
+#if QWT_VERSION < 0x060000
+       boardsTimeHistoItem.setData(xval, yval, nsamples);
+#else
+       boardsTimeHistoItem.setSamples(xval, yval, nsamples);
+#endif
+
+    it = pixelHistoMap.begin();
+    nsamples = 0;
+    previousValue = it->first-10;
+    for (unsigned int i=0;i<pixelHistoMap.size();i++)
+    {
+        if (previousValue != it->first-1)
+        {
+            xval[nsamples] = previousValue+1;
+            yval[nsamples] = 0;
+            nsamples++;
+            xval[nsamples] = it->first-1;
+            yval[nsamples] = 0;
+            nsamples++;
+        }
+        xval[nsamples] = it->first;
+        yval[nsamples] = it->second;
+        previousValue = it->first;
+        it++;
+        nsamples++;
+        xval[nsamples] = previousValue;
+        yval[nsamples] = 0;
+        nsamples++;
+        if (nsamples > 4090)
+        {
+            cout << "Error: Maximum number of samples reached for histograms. skipping what's remaining" << endl;
+            break;
+        }
+   }
+    xval[nsamples] = it==pixelHistoMap.begin() ? 0 : (--it)->first+1;
+    yval[nsamples] = 0;
+    nsamples++;
+//    if (nsamples > 5)
+#if QWT_VERSION < 0x060000
+       startCellHistoItem.setData(xval, yval, nsamples);
+#else
+       startCellHistoItem.setSamples(xval, yval, nsamples);
+#endif
+
+    it = timeMarksMap.begin();
+    nsamples = 0;
+    previousValue = it->first-10;
+    for (unsigned int i=0;i<timeMarksMap.size();i++)
+    {
+        if (previousValue != it->first-1)
+        {
+            xval[nsamples] = previousValue+1;
+            yval[nsamples] = 0;
+            nsamples++;
+            xval[nsamples] = it->first-1;
+            yval[nsamples] = 0;
+            nsamples++;
+        }
+        xval[nsamples] = it->first;
+        yval[nsamples] = it->second;
+        previousValue = it->first;
+        it++;
+        nsamples++;
+        xval[nsamples] = previousValue;
+        yval[nsamples] = 0;
+        nsamples++;
+        if (nsamples > 4090)
+        {
+            cout << "Error: Maximum number of samples reached for histograms. skipping what's remaining" << endl;
+            break;
+        }
+    }
+    xval[nsamples] = it==timeMarksMap.begin() ? 0 : (--it)->first+1;
+    yval[nsamples] = 0;
+    nsamples++;
+ //   if (nsamples > 5)
+#if QWT_VERSION < 0x060000
+       startTimeMarkHistoItem.setData(xval, yval, nsamples);
+#else
+       startTimeMarkHistoItem.setSamples(xval, yval, nsamples);
+#endif
+
+    it = delayMap.begin();
+    nsamples = 0;
+    previousValue = it->first-10;
+    for (unsigned int i=0;i<delayMap.size();i++)
+    {
+        if (previousValue != it->first-1)
+        {
+            xval[nsamples] = previousValue+1;
+            yval[nsamples] = 0;
+            nsamples++;
+            xval[nsamples] = it->first-1;
+            yval[nsamples] = 0;
+            nsamples++;
+        }
+        xval[nsamples] = it->first;
+        yval[nsamples] = it->second;
+        previousValue = it->first;
+        it++;
+        nsamples++;
+        xval[nsamples] = previousValue;
+        yval[nsamples] = 0;
+        nsamples++;
+        if (nsamples > 4090)
+        {
+            cout << "Error: Maximum number of samples reached for histograms. skipping what's remaining" << endl;
+            break;
+        }
+    }
+    xval[nsamples] = it==delayMap.begin() ? 0 : (--it)->first+1;
+    yval[nsamples] = 0;
+    nsamples++;
+  //  if (nsamples > 5)
+#if QWT_VERSION < 0x060000
+       triggerDelayHistoItem.setData(xval, yval, nsamples);
+#else
+       triggerDelayHistoItem.setSamples(xval, yval, nsamples);
+#endif
+       //WAVELETS HACK
+/*       std::map<int, int> valuesHistoMap;
+       std::map<int, int> waveletHistoMap;
+       for (int i=0;i<1024*1440;i++)
+       {
+           if (valuesHistoMap.find(GLWindow->rawEventData[i]) != valuesHistoMap.end())
+               valuesHistoMap[GLWindow->rawEventData[i]]++;
+           else
+               valuesHistoMap[GLWindow->rawEventData[i]] = 1;
+           if (waveletHistoMap.find(GLWindow->waveLetArray[i]) != waveletHistoMap.end())
+               waveletHistoMap[GLWindow->waveLetArray[i]]++;
+           else
+               waveletHistoMap[GLWindow->waveLetArray[i]] = 1;
+       }
+
+       it = valuesHistoMap.begin();
+       nsamples = 0;
+       previousValue = it->first-10;
+       cout << "Num values Original: " << valuesHistoMap.size() << endl;
+       for (unsigned int i=0;i<valuesHistoMap.size();i++)
+       {
+           if (previousValue != it->first-1)
+           {
+               xval[nsamples] = previousValue+1;
+               yval[nsamples] = 0;
+               nsamples++;
+               xval[nsamples] = it->first-1;
+               yval[nsamples] = 0;
+               nsamples++;
+           }
+           xval[nsamples] = it->first;
+           yval[nsamples] = it->second;
+           previousValue = it->first;
+           it++;
+           nsamples++;
+           xval[nsamples] = previousValue;
+           yval[nsamples] = 0;
+           nsamples++;
+           if (nsamples > 50000)
+           {
+               cout << "Error: Maximum number of samples reached for histograms. skipping what's remaining" << endl;
+               break;
+           }
+       }
+       xval[nsamples] = it==valuesHistoMap.begin() ? 0 : (--it)->first+1;
+       yval[nsamples] = 0;
+       nsamples++;
+     //  if (nsamples > 5)
+   #if QWT_VERSION < 0x060000
+          triggerDelayHistoItem.setData(xval, yval, nsamples);
+   #else
+          triggerDelayHistoItem.setSamples(xval, yval, nsamples);
+   #endif
+
+          it = waveletHistoMap.begin();
+          nsamples = 0;
+          previousValue = it->first-10;
+          cout << "Num values WaveLets: " << waveletHistoMap.size() << endl;
+          for (unsigned int i=0;i<waveletHistoMap.size();i++)
+          {
+              if (previousValue != it->first-1)
+              {
+                  xval[nsamples] = previousValue+1;
+                  yval[nsamples] = 0;
+                  nsamples++;
+                  xval[nsamples] = it->first-1;
+                  yval[nsamples] = 0;
+                  nsamples++;
+              }
+              xval[nsamples] = it->first;
+              yval[nsamples] = it->second;
+              previousValue = it->first;
+              it++;
+              nsamples++;
+              xval[nsamples] = previousValue;
+              yval[nsamples] = 0;
+              nsamples++;
+              if (nsamples > 50000)
+              {
+                  cout << "Error: Maximum number of samples reached for histograms. skipping what's remaining" << endl;
+                  break;
+              }
+          }
+          xval[nsamples] = it==waveletHistoMap.begin() ? 0 : (--it)->first+1;
+          yval[nsamples] = 0;
+          nsamples++;
+        //  if (nsamples > 5)
+      #if QWT_VERSION < 0x060000
+          startTimeMarkHistoItem.setData(xval, yval, nsamples);
+      #else
+          startTimeMarkHistoItem.setSamples(xval, yval, nsamples);
+      #endif
+*/
+//END OF WAVELETS HACK
+       //    startCellHistoZoom->setZoomBase(startCellHistoItem.boundingRect());
+    QStack< QRectF > stack;
+//    QRectF cRectangle = boardsTimeHistoItem.boundingRect();
+    stack.push(scaleBoundingRectangle(boardsTimeHistoItem.boundingRect(), 1.05f));//cRectangle);//boardsTimeHistoItem.boundingRect());
+    boardsTimeHistoZoom->setZoomStack(stack);
+    stack.pop();
+    stack.push(scaleBoundingRectangle(startCellHistoItem.boundingRect(), 1.05f));
+    startCellHistoZoom->setZoomStack(stack);
+    stack.pop();
+    stack.push(scaleBoundingRectangle(startTimeMarkHistoItem.boundingRect(), 1.05f));
+    startTimeMarkHistoZoom->setZoomStack(stack);
+    stack.pop();
+    stack.push(scaleBoundingRectangle(triggerDelayHistoItem.boundingRect(), 1.05f));
+    triggerDelayHistoZoom->setZoomStack(stack);
+    stack.pop();
+
+    pixelChanged(GLWindow->selectedPixel);
+}
+//can't use a ref to rectangle, as the type must be converted first
+QRectF UIConnector::scaleBoundingRectangle(QRectF rectangle, float scale)
+{
+    QPointF bottomRight = rectangle.bottomRight();
+    QPointF topLeft = rectangle.topLeft();
+    QPointF center = rectangle.center();
+    return QRectF(topLeft + (topLeft-center)*(scale-1.0f), //top left
+                  bottomRight + (bottomRight-center)*(scale-1.0f)); //bottom right
+}
+void UIConnector::initHistograms()
+{
+//    QwtPlot*     boardsTimeHisto;
+//    QwtPlotHistogram boardsTimeHistoItem;
+    grid1 = new QwtPlotGrid;
+    grid1->enableX(false);
+    grid1->enableY(true);
+    grid1->enableXMin(false);
+    grid1->enableYMin(false);
+    grid1->setMajPen(QPen(Qt::black, 0, Qt::DotLine));
+    grid1->attach(boardsTimeHisto);
+
+    grid2 = new QwtPlotGrid;
+    grid2->enableX(false);
+    grid2->enableY(true);
+    grid2->enableXMin(false);
+    grid2->enableYMin(false);
+    grid2->setMajPen(QPen(Qt::black, 0, Qt::DotLine));
+    grid2->attach(startCellsHisto);
+
+    grid3 = new QwtPlotGrid;
+    grid3->enableX(false);
+    grid3->enableY(true);
+    grid3->enableXMin(false);
+    grid3->enableYMin(false);
+    grid3->setMajPen(QPen(Qt::black, 0, Qt::DotLine));
+    grid3->attach(startTimeMarkHisto);
+
+    grid4 = new QwtPlotGrid;
+    grid4->enableX(false);
+    grid4->enableY(true);
+    grid4->enableXMin(false);
+    grid4->enableYMin(false);
+    grid4->setMajPen(QPen(Qt::black, 0, Qt::DotLine));
+    grid4->attach(pixelValueCurve);
+
+    grid6 = new QwtPlotGrid;
+    grid6->enableX(false);
+    grid6->enableY(true);
+    grid6->enableXMin(false);
+    grid6->enableYMin(false);
+    grid6->setMajPen(QPen(Qt::black, 0, Qt::DotLine));
+    grid6->attach(pixelAverageCurve);
+
+    grid5 = new QwtPlotGrid;
+    grid5->enableX(false);
+    grid5->enableY(true);
+    grid5->enableXMin(false);
+    grid5->enableYMin(false);
+    grid5->setMajPen(QPen(Qt::black, 0, Qt::DotLine));
+    grid5->attach(triggerDelayHisto);
+
+    boardsTimeHisto->setAutoReplot(true);
+    startCellsHisto->setAutoReplot(true);
+    startTimeMarkHisto->setAutoReplot(true);
+    pixelValueCurve->setAutoReplot(true);
+    pixelAverageCurve->setAutoReplot(true);
+    triggerDelayHisto->setAutoReplot(true);
+    boardsTimeHisto->setTitle("Boards time values");
+    startCellsHisto->setTitle("Start Cell values");
+    startTimeMarkHisto->setTitle("Start Time Marks values");
+    pixelValueCurve->setTitle("Current pixel values");
+    pixelAverageCurve->setTitle("Average pixels values");
+    triggerDelayHisto->setTitle("Trigger Delays");
+
+ //   boardsTimeHistoItem.setBrush(QBrush(Qt::red));
+//    startCellHistoItem.setBrush(QBrush(Qt::red));
+//    startTimeMarkHistoItem.setBrush(QBrush(Qt::red));
+//    triggerDelayHistoItem.setBrush(QBrush(Qt::red));
+//    pixelValueCurveItem.setBrush(QBrush(Qt::red));
+
+    boardsTimeHistoItem.setPen(QColor(Qt::darkGreen));
+    boardsTimeHistoItem.setStyle(QwtPlotCurve::Steps);
+    startCellHistoItem.setPen(QColor(Qt::darkGreen));
+    startCellHistoItem.setStyle(QwtPlotCurve::Steps);
+    startTimeMarkHistoItem.setPen(QColor(Qt::darkGreen));
+    startTimeMarkHistoItem.setStyle(QwtPlotCurve::Steps);
+    triggerDelayHistoItem.setPen(QColor(Qt::darkGreen));
+    triggerDelayHistoItem.setStyle(QwtPlotCurve::Steps);
+
+    boardsTimeHistoItem.attach(boardsTimeHisto);
+    startCellHistoItem.attach(startCellsHisto);
+    startTimeMarkHistoItem.attach(startTimeMarkHisto);
+    triggerDelayHistoItem.attach(triggerDelayHisto);
+
+    //curve
+//    pixelValueCurveItem.setSymbol(new QwtSymbol(QwtSymbol::Cross, Qt::NoBrush, QPen(Qt::black), QSize(5,5)));
+    pixelValueCurveItem.setPen(QColor(Qt::black));
+    pixelAverageCurveItem.setPen(QColor(Qt::black));
+    aMeanCurveItem.setPen(QColor(Qt::darkGreen));
+    vCorrCurveItem.setPen(QColor(Qt::red));
+    meanCurveItem.setPen(QColor(Qt::blue));
+    pixelValueCurveItem.setStyle(QwtPlotCurve::Lines);
+    pixelAverageCurveItem.setStyle(QwtPlotCurve::Lines);
+    aMeanCurveItem.setStyle(QwtPlotCurve::Lines);
+    vCorrCurveItem.setStyle(QwtPlotCurve::Lines);
+    meanCurveItem.setStyle(QwtPlotCurve::Lines);
+
+//    pixelValueCurveItem.setCurveAttribute(QwtPlotCurve::Fitted);
+    pixelValueCurveItem.attach(pixelValueCurve);
+    pixelAverageCurveItem.attach(pixelAverageCurve);
+//    aMeanCurveItem.attach(pixelValueCurve);
+ //   vCorrCurveItem.attach(pixelValueCurve);
+//    meanCurveItem.attach(pixelValueCurve);
+
+    //FIXME delete these pointers with the destructor
+    curveZoom = new QwtPlotZoomer(pixelValueCurve->canvas());
+    curveZoom->setRubberBandPen(QPen(Qt::gray, 2, Qt::DotLine));
+    curveZoom->setTrackerPen(QPen(Qt::gray));
+    averageCurveZoom = new QwtPlotZoomer(pixelAverageCurve->canvas());
+    averageCurveZoom->setRubberBandPen(QPen(Qt::gray, 2, Qt::DotLine));
+    averageCurveZoom->setTrackerPen(QPen(Qt::gray));
+
+    boardsTimeHistoZoom = new QwtPlotZoomer(boardsTimeHisto->canvas());
+    boardsTimeHistoZoom->setRubberBandPen(QPen(Qt::gray, 2, Qt::DotLine));
+    boardsTimeHistoZoom->setTrackerPen(QPen(Qt::gray));
+
+    startCellHistoZoom = new QwtPlotZoomer(startCellsHisto->canvas());
+    startCellHistoZoom->setRubberBandPen(QPen(Qt::gray, 2, Qt::DotLine));
+    startCellHistoZoom->setTrackerPen(QPen(Qt::gray));
+
+    startTimeMarkHistoZoom = new QwtPlotZoomer(startTimeMarkHisto->canvas());
+    startTimeMarkHistoZoom->setRubberBandPen(QPen(Qt::gray, 2, Qt::DotLine));
+    startTimeMarkHistoZoom->setTrackerPen(QPen(Qt::gray));
+
+    triggerDelayHistoZoom = new QwtPlotZoomer(triggerDelayHisto->canvas());
+    triggerDelayHistoZoom->setRubberBandPen(QPen(Qt::gray, 2, Qt::DotLine));
+    triggerDelayHistoZoom->setTrackerPen(QPen(Qt::gray));
+
+
+}
+
+void UIConnector::pixelChanged(int pixel)
+{
+    RMS_window->fWhite = pixel;
+    Mean_window->fWhite = pixel;
+    Max_window->fWhite = pixel;
+    PosOfMax_window->fWhite = pixel;
+    if (pixel != -1)
+    {
+        RMS_window->fWhitePatch = RMS_window->pixelsPatch[pixel];
+        Mean_window->fWhitePatch = Mean_window->pixelsPatch[pixel];
+        Max_window->fWhitePatch = Max_window->pixelsPatch[pixel];
+        PosOfMax_window->fWhitePatch = PosOfMax_window->pixelsPatch[pixel];
+    }
+    else
+    {
+        RMS_window->fWhitePatch = -1;
+        Mean_window->fWhitePatch = -1;
+        Max_window->fWhitePatch = -1;
+        PosOfMax_window->fWhitePatch = -1;
+    }
+    if (pixel == -1)
+        return;
+    int softwarePix = pixel;
+//    if (!GLWindow->_softwareOrdering)
+        pixel = GLWindow->hardwareMapping[pixel];
+
+    HwIDBox->setValue(pixel);
+
+    if (!GLWindow->nRoi)
+        return;
+
+int currentPixel = pixel;
+
+    for (int i=0;i<GLWindow->nRoi;i++)
+    {
+        xval[i] = i;
+        yval[i] = GLWindow->eventData[GLWindow->nRoi*currentPixel + i];
+    }
+
+
+int realNumSamples = GLWindow->nRoi;
+    if (GLWindow->nRoiTM != 0)
+    {
+        const PixelMapEntry& mapEntry = GLWindow->fPixelMap.index(softwarePix);
+        const int pixelIdInPatch = mapEntry.pixel();
+        const int patchId = mapEntry.patch();
+        const int boardId = mapEntry.board();
+        const int crateId = mapEntry.crate();
+        if (pixelIdInPatch == 8)
+        {
+            int TMIndex = 0;
+            int xIndex = GLWindow->nRoi;
+            int arrayIndex = GLWindow->nRoi;
+            if (GLWindow->offSetRoi < 0)
+                TMIndex -= GLWindow->offSetRoi;
+            if (GLWindow->offSetRoi > 0)
+                xIndex += GLWindow->offSetRoi;
+            for (int i=TMIndex;i<GLWindow->nRoiTM;i++, xIndex++, arrayIndex++)
+            {
+                xval[arrayIndex] = xIndex;
+                yval[arrayIndex] = GLWindow->eventData[GLWindow->nRoi*1440 + GLWindow->nRoiTM*(40*crateId + 4*boardId + patchId) + i];
+            }
+            realNumSamples += GLWindow->nRoiTM - TMIndex;
+        }
+      //  cout << pixelIdInPatch << " " ;
+    }
+
+#if QWT_VERSION < 0x060000
+    pixelValueCurveItem.setData(xval, yval, realNumSamples);
+#else
+       pixelValueCurveItem.setSamples(xval, yval, realNumSamples);
+#endif
+
+//now compute the average value of all pixels
+       currentPixel = 0;
+       for (int i=0;i<GLWindow->nRoi;i++)
+           yval[i] = 0;
+       for (int j=0;j<1440;j++) {
+           currentPixel = j;
+           for (int i=0;i<GLWindow->nRoi;i++)
+           {
+               xval[i] = i;
+               yval[i] += GLWindow->eventData[GLWindow->nRoi*currentPixel + i];
+           }
+       }
+       for (int i=0;i<GLWindow->nRoi;i++)
+           yval[i] /= 1440;
+#if QWT_VERSION < 0x060000
+       pixelAverageCurveItem.setData(xval, yval, GLWindow->nRoi);
+#else
+    pixelAverageCurveItem.setSamples(xval, yval, realNumSamples);
+#endif
+
+    QStack< QRectF > stack;
+    stack.push(scaleBoundingRectangle(pixelValueCurveItem.boundingRect(), 1.5f));
+    curveZoom->setZoomBase(scaleBoundingRectangle(pixelValueCurveItem.boundingRect(), 1.5f));
+    curveZoom->setZoomStack(stack);
+    stack.pop();
+    stack.push(scaleBoundingRectangle(pixelAverageCurveItem.boundingRect(), 1.5f));
+    averageCurveZoom->setZoomBase(scaleBoundingRectangle(pixelAverageCurveItem.boundingRect(), 1.5f));
+    averageCurveZoom->setZoomStack(stack);
+    stack.pop();
+
+    displaySliceValue();
+    on_autoScaleColor_clicked();
+}
+
+void UIConnector::on_HwIDBox_valueChanged(int)
+{
+    updating = true;
+
+    const int hwID = HwIDBox->value();
+
+    const int crateID =  hwID/360;
+    const int boardID = (hwID%360)/36;
+    const int patchID = (hwID%36 )/9;
+    const int pixelID =  hwID%9;
+
+    SwIDBox->setValue(GLWindow->softwareMapping[hwID]);
+
+    crateIDBox->setValue(crateID);
+    boardIDBox->setValue(boardID);
+    patchIDBox->setValue(patchID);
+    pixelIDBox->setValue(pixelID);
+
+    updating = false;
+
+    GLWindow->selectedPixel = GLWindow->softwareMapping[hwID];
+    GLWindow->updateGL();
+
+    pixelChanged(GLWindow->selectedPixel);
+}
+
+void UIConnector::cbpxChanged()
+{
+    if (updating)
+        return;
+
+    const int hwid = crateIDBox->value()*360 + boardIDBox->value()*36 + patchIDBox->value()*9 + pixelIDBox->value();
+    HwIDBox->setValue(hwid);
+}
+
+void UIConnector::on_SwIDBox_valueChanged(int swid)
+{
+    if (updating)
+        return;
+
+//    if (GLWindow->_softwareOrdering)
+//        HwIDBox->setValue(swid);
+//    else
+        HwIDBox->setValue(GLWindow->hardwareMapping[swid]);
+}
+
+void UIConnector::on_autoScaleColor_clicked()
+{
+    if (!autoScaleColor->isChecked())
+    {
+        GLWindow->ss[0] = 0.496;
+        GLWindow->ss[1] = 0.507;
+        GLWindow->ss[2] = 0.518;
+        GLWindow->ss[3] = 0.529;
+        GLWindow->ss[4] = 0.540;;
+        colorRange0->setValue(GLWindow->ss[0]);
+        colorRange1->setValue(GLWindow->ss[1]);
+        colorRange2->setValue(GLWindow->ss[2]);
+        colorRange3->setValue(GLWindow->ss[3]);
+        colorRange4->setValue(GLWindow->ss[4]);
+        return;
+    }
+    if (!GLWindow->nRoi)
+        return;
+
+    int start = 0;
+    int end   = 1440;
+
+    if (!entireCameraScale->isChecked())
+    {
+        start = GLWindow->selectedPixel;
+        end   = GLWindow->selectedPixel+1;
+        if (end == 0)
+        {
+            start = 0;
+            end = 1440;
+        }
+    }
+
+    int min =  100000; //real min = -2048, int_16 = -32768 to 32767
+    int max = -100000; //real max = 2047
+
+    long average = 0;
+    long numSamples = 0;
+    int errorDetected = -1;
+
+    for (int i=start;i<end;i++)
+    {
+        if (i==863)//keep crazy pixel out of the autoscale
+            continue;
+        for (int j=10;j<GLWindow->nRoi-50;j++)
+        {
+            int cValue = GLWindow->eventData[i*GLWindow->nRoi+j];
+            if (cValue > max && cValue < 32767)
+                max = cValue;
+            if (cValue < min && cValue > -32768)
+               min = cValue;
+            if (cValue < 32767 && cValue > -32768)
+            {
+                average+=cValue;
+                numSamples++;
+            }
+            else
+            {
+                errorDetected = i;
+            }
+//            numSamples++;
+        }
+    }
+    average /= numSamples;
+    if (errorDetected != -1)
+    {
+        cout << "Overflow detected at pixel " << errorDetected << " (at least)" << endl;
+    }
+//    cout << "min: " << min << " max: " << max << " average: " << average << endl;
+    float minRange = (float)(min+(GLWindow->VALUES_SPAN/2))/(float)(GLWindow->VALUES_SPAN-1);
+    float maxRange = (float)(max+(GLWindow->VALUES_SPAN/2))/(float)(GLWindow->VALUES_SPAN-1);
+    float midRange = (float)(average+(GLWindow->VALUES_SPAN/2))/(float)(GLWindow->VALUES_SPAN-1);
+    if (GLWindow->logScale)
+    {
+        minRange *= 9;
+        maxRange *= 9;
+//        midRange *= 9;
+        minRange += 1;
+        maxRange += 1;
+//        midRange += 1;
+        minRange = log10(minRange);
+        maxRange = log10(maxRange);
+//        midRange = (minRange + maxRange)/2.f;
+        midRange = log10(midRange);
+    }
+
+    GLWindow->ss[0] = minRange;
+    colorRange0->setValue(GLWindow->ss[0]);
+    GLWindow->ss[4] = maxRange;
+    colorRange4->setValue(GLWindow->ss[4]);
+//    GLWindow->ss[2] = midRange;
+//    range2->setValue(GLWindow->ss[2]);
+//    GLWindow->ss[1] = (minRange+midRange)/2;
+//    range1->setValue(GLWindow->ss[1]);
+//    GLWindow->ss[3] = (maxRange+midRange)/2;
+//    range3->setValue(GLWindow->ss[3]);
+
+    GLWindow->ss[2] = (maxRange+minRange)/2;
+    colorRange2->setValue(GLWindow->ss[2]);
+
+    GLWindow->ss[1] = minRange+(maxRange-minRange)/4;
+    colorRange1->setValue(GLWindow->ss[1]);
+
+    GLWindow->ss[3] = minRange+3*(maxRange-minRange)/4;
+    colorRange3->setValue(GLWindow->ss[3]);
+}
+
+void PrintUsage()
+{
+    cout << "\n"
+        "The FACT++ raw data viewer.\n"
+        "\n"
+        "Usage: viewer [OPTIONS] [datafile.fits[.gz|.fz] [calibration.drs.fits[.gz]]]\n"
+        "  or:  viewer [OPTIONS]\n";
+    cout << endl;
+
+}
+
+void PrintHelp()
+{
+    cout <<
+            "\n"
+         << endl;
+}
+
+int UIConnector::SetupConfiguration(Configuration &conf)
+{
+    RawDataViewer *canvas = GLWindow;
+
+    if (conf.Has("mappingFile"))
+    {
+        canvas->assignPixelMapFile(conf.Get<string>("mappingFile"));
+    }
+    else
+        canvas->assignPixelMapFile("");
+
+    if (conf.Has("color.range"))
+    {
+        vector<double> value = conf.Vec<double>("color.range");
+        if (value.size() != 5)
+        {
+            cout << "Error, colorRange option should have exactly 5 double values" << endl;
+            return -1;
+        }
+        for (int i=0;i<5;i++)
+            canvas->ss[i] = value[i];
+    }
+
+    if (conf.Has("color.red"))
+    {
+        vector<double> value = conf.Vec<double>("color.red");
+        if (value.size() != 5)
+        {
+            cout << "Error, colorRed option should have exactly 5 double values" << endl;
+            return -1;
+        }
+        for (int i=0;i<5;i++)
+            canvas->rr[i] = value[i];
+    }
+
+    if (conf.Has("color.green"))
+    {
+        vector<double> value = conf.Vec<double>("color.green");
+        if (value.size() != 5)
+        {
+            cout << "Error, colorGreen option should have exactly 5 double values" << endl;
+            return -1;
+        }
+        for (int i=0;i<5;i++)
+            canvas->gg[i] = value[i];
+    }
+
+    if (conf.Has("color.blue"))
+    {
+        vector<double> value = conf.Vec<double>("color.blue");
+        if (value.size() != 5)
+        {
+            cout << "Error, colorBlue option should have exactly 5 double values" << endl;
+            return -1;
+        }
+        for (int i=0;i<5;i++)
+            canvas->bb[i] = value[i];
+    }
+
+    colorRange0->setValue(canvas->ss[0]);
+    colorRange1->setValue(canvas->ss[1]);
+    colorRange2->setValue(canvas->ss[2]);
+    colorRange3->setValue(canvas->ss[3]);
+    colorRange4->setValue(canvas->ss[4]);
+    redValue0->setValue(canvas->rr[0]);
+    redValue1->setValue(canvas->rr[1]);
+    redValue2->setValue(canvas->rr[2]);
+    redValue3->setValue(canvas->rr[3]);
+    redValue4->setValue(canvas->rr[4]);
+    greenValue0->setValue(canvas->gg[0]);
+    greenValue1->setValue(canvas->gg[1]);
+    greenValue2->setValue(canvas->gg[2]);
+    greenValue3->setValue(canvas->gg[3]);
+    greenValue4->setValue(canvas->gg[4]);
+    blueValue0->setValue(canvas->bb[0]);
+    blueValue1->setValue(canvas->bb[1]);
+    blueValue2->setValue(canvas->bb[2]);
+    blueValue3->setValue(canvas->bb[3]);
+    blueValue4->setValue(canvas->bb[4]);
+
+    if (conf.Has("drs"))
+    {
+        const QString qstr(conf.Get<string>("drs").c_str());
+        calibFileSelected(qstr);
+    }
+
+    if (conf.Has("file"))
+    {
+        const QString qstr(conf.Get<string>("file").c_str());
+        fileSelected(qstr);
+    }
+
+
+    return 0;
+}
+
+void SetupConfiguration(Configuration& conf)
+{
+    po::options_description configs("Raw Events Viewer Options");
+    configs.add_options()
+        ("color.range", vars<double>(), "Range of the display colours")
+        ("color.red",   vars<double>(), "Range of red values")
+        ("color.green", vars<double>(), "Range of green values")
+        ("color.blue",  vars<double>(), "Range of blue values")
+        ("file,f",      var<string>(),  "File to be loaded")
+        ("drs,d",       var<string>(),  "DRS calibration file to be loaded")
+        ("mappingFile", var<string>(),  "Which pixels mapping file to use")
+        ;
+    conf.AddOptions(configs);
+
+    po::positional_options_description p;
+    p.add("file", 1); // The first positional options
+    p.add("drs",  2); // The first positional options
+    conf.SetArgumentPositions(p);
+
+}
+
+/************************************************************
+ * MAIN PROGRAM FUNCTION.
+ ************************************************************/
+int main(int argc, const char *argv[])
+{
+    QApplication app(argc, const_cast<char**>(argv));
+
+    if (!QGLFormat::hasOpenGL()) {
+        std::cerr << "This system has no OpenGL support" << std::endl;
+        return 1;
+    }
+
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 2;
+
+    UIConnector myUi;
+    if (myUi.SetupConfiguration(conf)<0)
+        return 3;
+
+    return app.exec();
+}
+
Index: branches/testFACT++branch/gui/RawEventsViewer/RawEventsViewer.h
===================================================================
--- branches/testFACT++branch/gui/RawEventsViewer/RawEventsViewer.h	(revision 18277)
+++ branches/testFACT++branch/gui/RawEventsViewer/RawEventsViewer.h	(revision 18277)
@@ -0,0 +1,316 @@
+/*
+ * QtGl.h
+ *
+ *  Created on: Jul 20, 2011
+ *      Author: lyard
+ */
+
+#ifndef QTGL_H_
+#define QTGL_H_
+
+#define NBOARDS      40      // max. number of boards
+#define NPIX       1440      // max. number of pixels
+#define NTMARK      160      // max. number of timeMarker signals
+
+#include <string>
+#include <valarray>
+
+#include <QObject>
+
+#include "../BasicGlCamera.h"
+
+#include <qwt_plot_curve.h>
+
+class QwtPlotZoomer;
+class QwtPlotGrid;
+
+#include "../../src/DataCalib.h"
+#include "../../externals/ofits.h"
+
+/*************************************************
+ * Class Raw Data Viewer. FACT raw data diplayer
+ *************************************************/
+class RawDataViewer : public BasicGlCamera//QGLWidget
+{
+    Q_OBJECT
+
+    friend class UIConnector;
+
+    enum CalibDataTypes {
+        CALIB_BASELINE,
+        CALIB_GAIN,
+        CALIB_TRIG_OFFSET
+    };
+
+public:
+    DrsCalibration fDrsCalib;
+
+    bool fIsDrsCalibration;
+
+    RawDataViewer(QWidget *parent = 0);
+    ~RawDataViewer();
+    void openFile(std::string& file);
+    void openCalibFile(std::string& file);
+
+    template <typename T>
+    void getCalibrationDataForDisplay(const CalibDataTypes calibTypes,
+                                                     const vector<T>& inputData,
+                                                     const int roi,
+                                                     const int roiTM);
+    int getCurrentPixel(){return selectedPixel;}
+    void assignPixelMapFile(const string& map="");
+public Q_SLOTS:
+    void plusEvent();
+    void minusEvent();
+    void setEventStep(int step);
+    void nextSlice();
+    void previousSlice();
+    void setCurrentPixel(int);
+
+
+Q_SIGNALS:
+    void signalCurrentEvent(int event);
+    void signalCurrentSlice(int slice);
+    void newFileLoaded();
+    void signalCurrentPixel(int pixel);
+    void signalAutoScaleNeeded();
+
+protected:
+//    void initializeGL();
+//    void resizeGL(int width, int height);
+    void paintGL();
+    void mousePressEvent(QMouseEvent *event);
+    void mouseMoveEvent(QMouseEvent *event);
+    void mouseDoubleClickEvent(QMouseEvent *event);
+    void drawCamera(bool alsoWire);
+//    void drawPatches();
+//    int PixelAtPosition(const QPoint &pos);
+//    void drawHexagon(int index, bool solid);
+    int selectedPixel;
+    float *eventData;
+    float *rmsData;
+    int16_t* rawEventData;
+    int16_t* waveLetArray;
+    valarray<double> RMSvalues;//(1440);
+    valarray<double> Meanvalues;
+    valarray<double> Maxvalues;
+    valarray<double> PosOfMaxvalues;
+
+    ///Used to load zero data in case of missing fits columns
+    void allocateZeroArray();
+    char* fZeroArray;
+    //bool telling whether the data is natively ordered in software or hardware id
+    //used to correctly display monte-carlo data.
+    bool _softwareOrdering;
+
+private:
+    void drawPixelCurve();
+//    void updateNeighbors(int currentPixel);
+//    void skipPixels(int start, int howMany);
+//    void calculatePixelsCoords();
+    bool setCorrectSlice(QMouseEvent* event);
+    void eventStepping(bool plus);
+//    void buildVerticesList();
+//    void buildPatchesIndices();
+    void calcBlurColor(int pixel, int vertex);
+    void calcMidBlurColor(int pixel, int vertex);
+    void drawBlurryHexagon(int index);
+    int whichSlice;
+ //   float shownSizex;
+ //   float shownSizey;
+    bool drawPatch;
+    bool drawImpulse;
+    bool drawBlur;
+    bool loopCurrentEvent;
+    //allocate the maximum size for one event
+    uint32_t boardTime[NBOARDS];
+    int16_t startPix[NPIX];
+    int16_t startTM[NTMARK];
+    int32_t pcTime[2];
+    uint32_t softTrig;
+    uint16_t triggerType;
+    int nRows;
+    int rowNum;
+    int eventNum;
+    int nRoi;
+    int nRoiTM;
+    int offSetRoi;
+    int runNumber;
+    int nTM;
+    std::string runType;
+    int firstDataTime;
+    int lastDataTime;
+    int revision;
+    int builderVersion;
+    int nBoards;
+    int nPixels;
+    std::string timeSystem;
+    std::string creationDate;
+    int nightInt;
+    std::string camera;
+    std::string daq;
+    float adcCount;
+    int nbOk;
+    int nbRej;
+    int nbBad;
+
+    int eventStep;
+
+
+
+
+
+//    int hardwareMapping[1440];
+//    int softwareMapping[1440];
+////    int patches[160][9];
+    GLfloat patchesColor[160][3];
+//    vector<edge> patchesIndices[160];
+    fits* inputFile;
+//    std::fits* calibInputFile;
+//    float baseLineMean[1440*1024];
+//    float gainMean[1440*1024];
+//    float triggerOffsetMean[1440*1024];
+//    bool calibrationLoaded;
+    bool drawCalibrationLoaded;
+
+    QPoint lastPos;
+public:
+    void computePulsesStatistics();
+    double aMeas[1024];
+    double n1mean[1024];
+    double n2mean[1024];
+    double vCorr[1024];
+    int64_t VALUES_SPAN;
+
+    void ApplyCalibration();
+
+//    GLfloat pixelsCoords[MAX_NUM_PIXELS][3];
+//    PixelsNeighbors neighbors[MAX_NUM_PIXELS];
+ //   GLfloat pixelsColor[ACTUAL_NUM_PIXELS][3];
+//    GLfloat verticesList[ACTUAL_NUM_PIXELS*6][2];
+//    int verticesIndices[ACTUAL_NUM_PIXELS][6];
+//    int numVertices;
+};
+
+/*************************************************
+ * Class UIConnector. used to connect the interface to the raw data displayer
+ *************************************************/
+#include "viewer.h"
+
+class Configuration;
+
+class UIConnector : public QMainWindow, protected Ui::MainWindow
+{
+    Q_OBJECT
+private:
+    QTimer timer;
+    std::string currentFile;
+    std::string currentCalibFile;
+
+    QRectF scaleBoundingRectangle(QRectF rectangle, float scale);
+
+    bool updateSpinnerDisplay;
+    bool updating;
+
+    void initHistograms();
+
+public:
+    UIConnector(QWidget *parent = 0);
+    ~UIConnector();
+
+public Q_SLOTS:
+    void fileSelected(QString file);
+    void calibFileSelected(QString file);
+
+    void newFileLoaded();
+    void slicesPerSecondChanged(double value);
+    void nextSlicePlease();
+    void currentSliceHasChanged(int slice);
+    void currentEventHasChanged(int event);
+
+    void on_playPauseButton_clicked();
+    void on_loadNewFileButton_clicked();
+    void on_loadDRSCalibButton_clicked();
+
+    void on_drawPatchCheckBox_stateChanged(int);
+    void on_drawImpulseCheckBox_stateChanged(int);
+    void on_drawBlurCheckBox_stateChanged(int);
+    void on_loopOverCurrentEventBox_stateChanged(int);
+
+    void on_colorRange0_valueChanged(double);
+    void on_colorRange1_valueChanged(double);
+    void on_colorRange2_valueChanged(double);
+    void on_colorRange3_valueChanged(double);
+    void on_colorRange4_valueChanged(double);
+    void on_redValue0_valueChanged(double);
+    void on_redValue1_valueChanged(double);
+    void on_redValue2_valueChanged(double);
+    void on_redValue3_valueChanged(double);
+    void on_redValue4_valueChanged(double);
+    void on_greenValue0_valueChanged(double);
+    void on_greenValue1_valueChanged(double);
+    void on_greenValue2_valueChanged(double);
+    void on_greenValue3_valueChanged(double);
+    void on_greenValue4_valueChanged(double);
+    void on_blueValue0_valueChanged(double);
+    void on_blueValue1_valueChanged(double);
+    void on_blueValue2_valueChanged(double);
+    void on_blueValue3_valueChanged(double);
+    void on_blueValue4_valueChanged(double);
+
+    void on_slicesPerSecValue_valueChanged(double);
+
+    void pixelChanged(int);
+
+    void cbpxChanged();
+
+    void on_HwIDBox_valueChanged(int = 0);
+    void on_SwIDBox_valueChanged(int);
+    void on_crateIDBox_valueChanged(int) { cbpxChanged(); }
+    void on_boardIDBox_valueChanged(int) { cbpxChanged(); }
+    void on_patchIDBox_valueChanged(int) { cbpxChanged(); }
+    void on_pixelIDBox_valueChanged(int) { cbpxChanged(); }
+
+    void on_autoScaleColor_clicked();
+    void on_entireCameraScale_toggled(bool) { on_autoScaleColor_clicked(); }
+    void on_currentPixelScale_toggled(bool) { on_autoScaleColor_clicked(); }
+
+    void slicesPlusPlus();
+    void slicesMinusMinus();
+
+    void on_calibratedCheckBox_stateChanged(int state);
+    void on_displayingSliceBox_valueChanged(int);
+    void on_displayingEventBox_valueChanged(int);
+
+    void displaySliceValue();
+
+    int SetupConfiguration(Configuration &conf);
+
+private:
+    QwtPlotCurve boardsTimeHistoItem;
+    QwtPlotCurve startCellHistoItem;
+    QwtPlotCurve startTimeMarkHistoItem;
+    QwtPlotCurve pixelValueCurveItem;
+    QwtPlotCurve pixelAverageCurveItem;
+    QwtPlotCurve aMeanCurveItem;
+    QwtPlotCurve vCorrCurveItem;
+    QwtPlotCurve meanCurveItem;
+    QwtPlotCurve triggerDelayHistoItem;
+
+    QwtPlotZoomer* curveZoom;
+    QwtPlotZoomer* averageCurveZoom;
+    QwtPlotZoomer* boardsTimeHistoZoom;
+    QwtPlotZoomer* startCellHistoZoom;
+    QwtPlotZoomer* startTimeMarkHistoZoom;
+    QwtPlotZoomer* triggerDelayHistoZoom;
+
+    //declare the grids here, because I must have access to them to detach them properly at destruction time (bug and crash with "bad" versions of qwt)
+    QwtPlotGrid* grid1;
+    QwtPlotGrid* grid2;
+    QwtPlotGrid* grid3;
+    QwtPlotGrid* grid4;
+    QwtPlotGrid* grid5;
+    QwtPlotGrid* grid6;
+};
+
+#endif /* QTGL_H_ */
Index: branches/testFACT++branch/gui/RawEventsViewer/viewer.ui
===================================================================
--- branches/testFACT++branch/gui/RawEventsViewer/viewer.ui	(revision 18277)
+++ branches/testFACT++branch/gui/RawEventsViewer/viewer.ui	(revision 18277)
@@ -0,0 +1,1297 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>984</width>
+    <height>757</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>MainWindow</string>
+  </property>
+  <widget class="QWidget" name="centralwidget">
+   <layout class="QGridLayout" name="gridLayout_2">
+    <item row="0" column="0">
+     <layout class="QHBoxLayout" name="horizontalLayout_2" stretch="10,0">
+      <item>
+       <layout class="QHBoxLayout" name="horizontalLayout_3" stretch="0">
+        <property name="sizeConstraint">
+         <enum>QLayout::SetDefaultConstraint</enum>
+        </property>
+        <item>
+         <widget class="QTabWidget" name="tabWidget_2">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+            <horstretch>1</horstretch>
+            <verstretch>1</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="currentIndex">
+           <number>0</number>
+          </property>
+          <widget class="QWidget" name="tab_5">
+           <property name="layoutDirection">
+            <enum>Qt::LeftToRight</enum>
+           </property>
+           <attribute name="title">
+            <string>Camera</string>
+           </attribute>
+           <layout class="QGridLayout" name="gridLayout_3">
+            <item row="0" column="0">
+             <widget class="RawDataViewer" name="GLWindow" native="true">
+              <property name="enabled">
+               <bool>true</bool>
+              </property>
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                <horstretch>1</horstretch>
+                <verstretch>1</verstretch>
+               </sizepolicy>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+          <widget class="QWidget" name="tab_6">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <attribute name="title">
+            <string>Data</string>
+           </attribute>
+           <layout class="QVBoxLayout" name="verticalLayout_2">
+            <item>
+             <widget class="QTabWidget" name="tabWidget_3">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                <horstretch>1</horstretch>
+                <verstretch>1</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="tabShape">
+               <enum>QTabWidget::Rounded</enum>
+              </property>
+              <property name="currentIndex">
+               <number>1</number>
+              </property>
+              <property name="elideMode">
+               <enum>Qt::ElideNone</enum>
+              </property>
+              <widget class="QWidget" name="tab_3">
+               <property name="sizePolicy">
+                <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                 <horstretch>0</horstretch>
+                 <verstretch>0</verstretch>
+                </sizepolicy>
+               </property>
+               <attribute name="title">
+                <string>Arrays data</string>
+               </attribute>
+               <layout class="QVBoxLayout" name="verticalLayout_6">
+                <item>
+                 <widget class="QLabel" name="label_3">
+                  <property name="text">
+                   <string>Boards time values</string>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QListWidget" name="boardsTimeList">
+                  <property name="font">
+                   <font>
+                    <family>FreeMono</family>
+                   </font>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QLabel" name="label_13">
+                  <property name="text">
+                   <string>Start Cells</string>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QListWidget" name="startPixelsList">
+                  <property name="font">
+                   <font>
+                    <family>FreeMono</family>
+                   </font>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QLabel" name="StartTimeMarksList">
+                  <property name="text">
+                   <string>Start Time Marks</string>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QListWidget" name="startTimeMarksList">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="font">
+                   <font>
+                    <family>FreeMono</family>
+                   </font>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QLabel" name="label_4">
+                  <property name="text">
+                   <string>Trigger Delays</string>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QListWidget" name="triggerDelayList"/>
+                </item>
+               </layout>
+              </widget>
+              <widget class="QWidget" name="tab_4">
+               <attribute name="title">
+                <string>Histograms</string>
+               </attribute>
+               <layout class="QVBoxLayout" name="verticalLayout_3">
+                <item>
+                 <widget class="QwtPlot" name="boardsTimeHisto"/>
+                </item>
+                <item>
+                 <widget class="QwtPlot" name="startCellsHisto"/>
+                </item>
+                <item>
+                 <widget class="QwtPlot" name="startTimeMarkHisto"/>
+                </item>
+                <item>
+                 <widget class="QwtPlot" name="triggerDelayHisto"/>
+                </item>
+               </layout>
+              </widget>
+              <widget class="QWidget" name="tab">
+               <attribute name="title">
+                <string>Pixel Curves</string>
+               </attribute>
+               <layout class="QGridLayout" name="gridLayout_4">
+                <item row="0" column="0">
+                 <widget class="QwtPlot" name="pixelValueCurve"/>
+                </item>
+               </layout>
+              </widget>
+              <widget class="QWidget" name="tab_7">
+               <attribute name="title">
+                <string>Average Curve</string>
+               </attribute>
+               <layout class="QGridLayout" name="gridLayout_41">
+                <item row="0" column="0">
+                 <widget class="QwtPlot" name="pixelAverageCurve"/>
+                </item>
+               </layout>
+              </widget>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+          <widget class="QWidget" name="tab_15">
+           <attribute name="title">
+            <string>Statistics</string>
+           </attribute>
+           <layout class="QGridLayout" name="gridLayout_11">
+            <item row="0" column="0">
+             <widget class="QTabWidget" name="tabWidget_4">
+              <property name="currentIndex">
+               <number>0</number>
+              </property>
+              <widget class="QWidget" name="tab_16">
+               <attribute name="title">
+                <string>RMS</string>
+               </attribute>
+               <layout class="QGridLayout" name="gridLayout_12">
+                <item row="0" column="0">
+                 <widget class="QCameraWidget" name="RMS_window" native="true">
+                  <property name="enabled">
+                   <bool>true</bool>
+                  </property>
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="maximumSize">
+                   <size>
+                    <width>10000</width>
+                    <height>10000</height>
+                   </size>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+              <widget class="QWidget" name="tab_17">
+               <attribute name="title">
+                <string>Mean</string>
+               </attribute>
+               <layout class="QGridLayout" name="gridLayout_13">
+                <item row="0" column="0">
+                 <widget class="QCameraWidget" name="Mean_window" native="true">
+                  <property name="enabled">
+                   <bool>true</bool>
+                  </property>
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="maximumSize">
+                   <size>
+                    <width>10000</width>
+                    <height>10000</height>
+                   </size>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+              <widget class="QWidget" name="tab_18">
+               <attribute name="title">
+                <string>Max</string>
+               </attribute>
+               <layout class="QGridLayout" name="gridLayout_14">
+                <item row="0" column="0">
+                 <widget class="QCameraWidget" name="Max_window" native="true">
+                  <property name="enabled">
+                   <bool>true</bool>
+                  </property>
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="maximumSize">
+                   <size>
+                    <width>10000</width>
+                    <height>10000</height>
+                   </size>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+              <widget class="QWidget" name="tab_19">
+               <attribute name="title">
+                <string>Pos. of Max.</string>
+               </attribute>
+               <layout class="QGridLayout" name="gridLayout_15">
+                <item row="0" column="0">
+                 <widget class="QCameraWidget" name="PosOfMax_window" native="true">
+                  <property name="enabled">
+                   <bool>true</bool>
+                  </property>
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="maximumSize">
+                   <size>
+                    <width>10000</width>
+                    <height>10000</height>
+                   </size>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+          <widget class="QWidget" name="tab_11">
+           <attribute name="title">
+            <string>Calibration</string>
+           </attribute>
+           <layout class="QGridLayout" name="gridLayout_7">
+            <item row="0" column="0">
+             <widget class="QTabWidget" name="tabWidget">
+              <property name="currentIndex">
+               <number>2</number>
+              </property>
+              <widget class="QWidget" name="tab_12">
+               <attribute name="title">
+                <string>Baseline</string>
+               </attribute>
+               <layout class="QGridLayout" name="gridLayout_8">
+                <item row="0" column="0">
+                 <widget class="RawDataViewer" name="Baseline_window" native="true">
+                  <property name="enabled">
+                   <bool>true</bool>
+                  </property>
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                    <horstretch>1</horstretch>
+                    <verstretch>1</verstretch>
+                   </sizepolicy>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+              <widget class="QWidget" name="tab_13">
+               <attribute name="title">
+                <string>Gain</string>
+               </attribute>
+               <layout class="QGridLayout" name="gridLayout_9">
+                <item row="0" column="0">
+                 <widget class="RawDataViewer" name="Gain_window" native="true">
+                  <property name="enabled">
+                   <bool>true</bool>
+                  </property>
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                    <horstretch>1</horstretch>
+                    <verstretch>1</verstretch>
+                   </sizepolicy>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+              <widget class="QWidget" name="tab_14">
+               <attribute name="title">
+                <string>Trigger Offset</string>
+               </attribute>
+               <layout class="QGridLayout" name="gridLayout_10">
+                <item row="0" column="0">
+                 <widget class="RawDataViewer" name="TriggerOffset_window" native="true">
+                  <property name="enabled">
+                   <bool>true</bool>
+                  </property>
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                    <horstretch>1</horstretch>
+                    <verstretch>1</verstretch>
+                   </sizepolicy>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+          <widget class="QWidget" name="tab_2">
+           <attribute name="title">
+            <string>3D</string>
+           </attribute>
+           <layout class="QHBoxLayout" name="horizontalLayout_7">
+            <item>
+             <widget class="Q3DCameraWidget" name="threeD_Window" native="true">
+              <property name="enabled">
+               <bool>true</bool>
+              </property>
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="maximumSize">
+               <size>
+                <width>10000</width>
+                <height>10000</height>
+               </size>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item>
+       <layout class="QVBoxLayout" name="verticalLayout" stretch="0,0,0,0">
+        <property name="sizeConstraint">
+         <enum>QLayout::SetDefaultConstraint</enum>
+        </property>
+        <item>
+         <widget class="QLabel" name="label">
+          <property name="text">
+           <string>FACT - Raw events viewer - v0.7</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLabel" name="extraInfoLabel">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="font">
+           <font>
+            <pointsize>8</pointsize>
+           </font>
+          </property>
+          <property name="text">
+           <string>File loaded: none
+Calibration file loaded: none
+Run number:
+Number of Events:
+Number ofSlices:
+Number of Time Marks:
+Run Type:
+Time of 1st data:
+Time of last data:
+SVN revision:
+Number of boards:
+Number of pixels:
+Number of Slices TM:
+Time system:
+Date:
+Night:
+Camera:
+DAQ:
+ADC Count:
+NB Evts OK:
+NB Evts Rejected:
+NB Evts Bad:
+</string>
+          </property>
+          <property name="scaledContents">
+           <bool>false</bool>
+          </property>
+          <property name="wordWrap">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <layout class="QVBoxLayout" name="verticalLayout_5">
+          <item>
+           <widget class="QLabel" name="label_5">
+            <property name="font">
+             <font>
+              <pointsize>11</pointsize>
+              <weight>75</weight>
+              <bold>true</bold>
+             </font>
+            </property>
+            <property name="text">
+             <string>Selected Pixel</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <layout class="QHBoxLayout" name="horizontalLayout_6">
+            <item>
+             <widget class="QLabel" name="label_10">
+              <property name="text">
+               <string>Hw ID</string>
+              </property>
+              <property name="alignment">
+               <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QSpinBox" name="HwIDBox">
+              <property name="maximum">
+               <number>10000</number>
+              </property>
+              <property name="value">
+               <number>393</number>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QLabel" name="label_11">
+              <property name="text">
+               <string>Sw ID</string>
+              </property>
+              <property name="alignment">
+               <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QSpinBox" name="SwIDBox">
+              <property name="maximum">
+               <number>1440</number>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </item>
+          <item>
+           <layout class="QGridLayout" name="gridLayout_5">
+            <item row="2" column="0">
+             <widget class="QLabel" name="label_6">
+              <property name="text">
+               <string>Crate</string>
+              </property>
+             </widget>
+            </item>
+            <item row="2" column="1">
+             <widget class="QLabel" name="label_8">
+              <property name="text">
+               <string>Board</string>
+              </property>
+             </widget>
+            </item>
+            <item row="2" column="2">
+             <widget class="QLabel" name="label_9">
+              <property name="text">
+               <string>Patch</string>
+              </property>
+             </widget>
+            </item>
+            <item row="3" column="0">
+             <widget class="QSpinBox" name="crateIDBox">
+              <property name="maximum">
+               <number>3</number>
+              </property>
+              <property name="value">
+               <number>0</number>
+              </property>
+             </widget>
+            </item>
+            <item row="3" column="1">
+             <widget class="QSpinBox" name="boardIDBox">
+              <property name="maximum">
+               <number>9</number>
+              </property>
+              <property name="value">
+               <number>0</number>
+              </property>
+             </widget>
+            </item>
+            <item row="3" column="2">
+             <widget class="QSpinBox" name="patchIDBox">
+              <property name="maximum">
+               <number>3</number>
+              </property>
+              <property name="value">
+               <number>0</number>
+              </property>
+             </widget>
+            </item>
+            <item row="3" column="3">
+             <widget class="QSpinBox" name="pixelIDBox">
+              <property name="maximum">
+               <number>8</number>
+              </property>
+              <property name="value">
+               <number>0</number>
+              </property>
+             </widget>
+            </item>
+            <item row="2" column="3">
+             <widget class="QLabel" name="label_2">
+              <property name="text">
+               <string>Ch</string>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <layout class="QVBoxLayout" name="verticalLayout_4">
+          <property name="spacing">
+           <number>2</number>
+          </property>
+          <item>
+           <widget class="QLabel" name="label_7">
+            <property name="font">
+             <font>
+              <pointsize>12</pointsize>
+              <weight>75</weight>
+              <bold>true</bold>
+             </font>
+            </property>
+            <property name="text">
+             <string>Current Event Information</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <layout class="QHBoxLayout" name="horizontalLayout_10">
+            <item>
+             <widget class="QLabel" name="displayingEventLabel">
+              <property name="text">
+               <string>Event</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QSpinBox" name="displayingEventBox"/>
+            </item>
+            <item>
+             <widget class="QLabel" name="displayingSliceLabel">
+              <property name="text">
+               <string>Slice  </string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QSpinBox" name="displayingSliceBox">
+              <property name="maximum">
+               <number>1023</number>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </item>
+          <item>
+           <widget class="QLabel" name="currentPixelValue">
+            <property name="text">
+             <string>Current Pixel val.:</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLabel" name="triggerTypeLabel">
+            <property name="text">
+             <string>Trigger Type:</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLabel" name="softwareTriggerLabel">
+            <property name="text">
+             <string>Software Trigger: </string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLabel" name="PCTimeLabel">
+            <property name="text">
+             <string>PC Time:</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </item>
+    <item row="1" column="0">
+     <layout class="QGridLayout" name="gridLayout">
+      <item row="0" column="7">
+       <widget class="QDoubleSpinBox" name="colorRange4">
+        <property name="enabled">
+         <bool>true</bool>
+        </property>
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="7">
+       <widget class="QDoubleSpinBox" name="greenValue4">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="7">
+       <widget class="QDoubleSpinBox" name="redValue4">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="7">
+       <widget class="QDoubleSpinBox" name="blueValue4">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="6">
+       <widget class="QDoubleSpinBox" name="redValue3">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="5">
+       <widget class="QDoubleSpinBox" name="redValue2">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="4">
+       <widget class="QDoubleSpinBox" name="redValue1">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="3">
+       <widget class="QDoubleSpinBox" name="redValue0">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="2">
+       <widget class="QLabel" name="label_20">
+        <property name="text">
+         <string>Red</string>
+        </property>
+        <property name="alignment">
+         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="2">
+       <widget class="QLabel" name="label_21">
+        <property name="text">
+         <string>Ranges</string>
+        </property>
+        <property name="alignment">
+         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="2">
+       <widget class="QLabel" name="label_22">
+        <property name="text">
+         <string>Green</string>
+        </property>
+        <property name="alignment">
+         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="2">
+       <widget class="QLabel" name="label_23">
+        <property name="text">
+         <string>Blue</string>
+        </property>
+        <property name="alignment">
+         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="3">
+       <widget class="QDoubleSpinBox" name="colorRange0">
+        <property name="enabled">
+         <bool>true</bool>
+        </property>
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="3">
+       <widget class="QDoubleSpinBox" name="greenValue0">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="3">
+       <widget class="QDoubleSpinBox" name="blueValue0">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="4">
+       <widget class="QDoubleSpinBox" name="colorRange1">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="4">
+       <widget class="QDoubleSpinBox" name="greenValue1">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="4">
+       <widget class="QDoubleSpinBox" name="blueValue1">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="5">
+       <widget class="QDoubleSpinBox" name="colorRange2">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="5">
+       <widget class="QDoubleSpinBox" name="greenValue2">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="5">
+       <widget class="QDoubleSpinBox" name="blueValue2">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="6">
+       <widget class="QDoubleSpinBox" name="colorRange3">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="6">
+       <widget class="QDoubleSpinBox" name="greenValue3">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="6">
+       <widget class="QDoubleSpinBox" name="blueValue3">
+        <property name="decimals">
+         <number>3</number>
+        </property>
+        <property name="maximum">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.050000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="8">
+       <layout class="QHBoxLayout" name="horizontalLayout">
+        <item>
+         <widget class="QPushButton" name="playPauseButton">
+          <property name="toolTip">
+           <string>Play/Pause events animation</string>
+          </property>
+          <property name="text">
+           <string>Play/Pause</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLabel" name="label_24">
+          <property name="text">
+           <string>Slices per sec</string>
+          </property>
+          <property name="alignment">
+           <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QDoubleSpinBox" name="slicesPerSecValue">
+          <property name="toolTip">
+           <string>Number of slices to display per seconds</string>
+          </property>
+          <property name="minimum">
+           <double>1.000000000000000</double>
+          </property>
+          <property name="maximum">
+           <double>1000.000000000000000</double>
+          </property>
+          <property name="singleStep">
+           <double>1.000000000000000</double>
+          </property>
+          <property name="value">
+           <double>100.000000000000000</double>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item row="0" column="0">
+       <widget class="QCheckBox" name="drawImpulseCheckBox">
+        <property name="toolTip">
+         <string>Whether the impulse of the current pixel should be drawn below the camera or not</string>
+        </property>
+        <property name="layoutDirection">
+         <enum>Qt::RightToLeft</enum>
+        </property>
+        <property name="text">
+         <string>Draw Impulse</string>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="0">
+       <widget class="QCheckBox" name="drawBlurCheckBox">
+        <property name="toolTip">
+         <string>Draw the pixels blurred (for having &quot;nice&quot;, non-scientific images).</string>
+        </property>
+        <property name="layoutDirection">
+         <enum>Qt::RightToLeft</enum>
+        </property>
+        <property name="text">
+         <string>Blur pixels</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0">
+       <widget class="QCheckBox" name="drawPatchCheckBox">
+        <property name="toolTip">
+         <string>Whether the pixels clustering should be drawn or not</string>
+        </property>
+        <property name="layoutDirection">
+         <enum>Qt::RightToLeft</enum>
+        </property>
+        <property name="text">
+         <string>Draw Patches</string>
+        </property>
+        <property name="checked">
+         <bool>false</bool>
+        </property>
+        <property name="tristate">
+         <bool>false</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="0">
+       <widget class="QCheckBox" name="loopOverCurrentEventBox">
+        <property name="toolTip">
+         <string>Whether the animation should loop over the current event, or continue to the next event</string>
+        </property>
+        <property name="layoutDirection">
+         <enum>Qt::RightToLeft</enum>
+        </property>
+        <property name="text">
+         <string>Loop event</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1">
+       <widget class="QPushButton" name="autoScaleColor">
+        <property name="toolTip">
+         <string>Rescale the coloring to match the values of the current event</string>
+        </property>
+        <property name="text">
+         <string>AutoScale</string>
+        </property>
+        <property name="checkable">
+         <bool>true</bool>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="1">
+       <widget class="QRadioButton" name="entireCameraScale">
+        <property name="toolTip">
+         <string>Use the entire camera to do the scaling</string>
+        </property>
+        <property name="layoutDirection">
+         <enum>Qt::RightToLeft</enum>
+        </property>
+        <property name="text">
+         <string>entire camera</string>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="1">
+       <widget class="QRadioButton" name="currentPixelScale">
+        <property name="toolTip">
+         <string>Use the current pixel only to do the scaling</string>
+        </property>
+        <property name="layoutDirection">
+         <enum>Qt::RightToLeft</enum>
+        </property>
+        <property name="text">
+         <string>current pixel</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="8">
+       <layout class="QHBoxLayout" name="horizontalLayout_5">
+        <item>
+         <widget class="QRadioButton" name="playSlicesRadio">
+          <property name="text">
+           <string>play Slices</string>
+          </property>
+          <property name="checked">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QRadioButton" name="playEventsRadio">
+          <property name="text">
+           <string>play Events</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QRadioButton" name="playPixelsRadio">
+          <property name="text">
+           <string>play Pixels</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item row="0" column="8">
+       <layout class="QHBoxLayout" name="horizontalLayout_8">
+        <item>
+         <widget class="QPushButton" name="loadNewFileButton">
+          <property name="toolTip">
+           <string>Load a new fits file</string>
+          </property>
+          <property name="text">
+           <string>Load Data</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPushButton" name="loadDRSCalibButton">
+          <property name="text">
+           <string>Load DRS calib.</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item row="0" column="1">
+       <widget class="QCheckBox" name="calibratedCheckBox">
+        <property name="layoutDirection">
+         <enum>Qt::RightToLeft</enum>
+        </property>
+        <property name="text">
+         <string>Calibrated data</string>
+        </property>
+        <property name="checked">
+         <bool>false</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="8">
+       <layout class="QHBoxLayout" name="horizontalLayout_4"/>
+      </item>
+     </layout>
+    </item>
+   </layout>
+  </widget>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>QwtPlot</class>
+   <extends>QFrame</extends>
+   <header>qwt_plot.h</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
+   <class>QGLWidget</class>
+   <extends>QWidget</extends>
+   <header>QtOpenGL/QGLWidget</header>
+  </customwidget>
+  <customwidget>
+   <class>RawDataViewer</class>
+   <extends>QGLWidget</extends>
+   <header>RawEventsViewer.h</header>
+  </customwidget>
+  <customwidget>
+   <class>QCameraWidget</class>
+   <extends>QWidget</extends>
+   <header>../QCameraWidget.h</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
+   <class>Q3DCameraWidget</class>
+   <extends>QWidget</extends>
+   <header>../Q3DCameraWidget.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>autoScaleColor</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>entireCameraScale</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>210</x>
+     <y>938</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>197</x>
+     <y>974</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>autoScaleColor</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>currentPixelScale</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>219</x>
+     <y>943</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>214</x>
+     <y>1002</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
Index: branches/testFACT++branch/gui/RootWidget.h
===================================================================
--- branches/testFACT++branch/gui/RootWidget.h	(revision 18277)
+++ branches/testFACT++branch/gui/RootWidget.h	(revision 18277)
@@ -0,0 +1,10 @@
+#ifdef HAVE_ROOT
+
+#include <TQtWidget.h>
+#define RootWidget TQtWidget
+
+#else
+
+#define RootWidget QWidget
+
+#endif
Index: branches/testFACT++branch/gui/SpinBox4ns.h
===================================================================
--- branches/testFACT++branch/gui/SpinBox4ns.h	(revision 18277)
+++ branches/testFACT++branch/gui/SpinBox4ns.h	(revision 18277)
@@ -0,0 +1,45 @@
+#ifndef FACT_SpinBox4ns
+#define FACT_SpinBox4ns
+
+#include <QSpinBox>
+
+class SpinBox4ns : public QSpinBox
+{
+public:
+    SpinBox4ns(QWidget *p) : QSpinBox(p)
+    {
+    }
+
+    QValidator::State validate(QString &input, int &p) const
+    {
+        const QValidator::State rc = QSpinBox::validate(input, p);
+        if (rc!=QValidator::Acceptable)
+            return rc;
+
+        const int pf = prefix().length();
+        const int sf = suffix().length();
+        const int len = input.length();
+
+        return input.mid(pf, len-sf-pf).toUInt()%4==0 ? QValidator::Acceptable : QValidator::Intermediate;
+    }
+
+    void fixup(QString &input) const
+    {
+        const int pf = prefix().length();
+        const int sf = suffix().length();
+        const int len = input.length();
+
+        const uint i = input.mid(pf, len-pf-sf).toUInt()+2;
+        input = QString::number((i/4)*4);
+    }
+};
+
+#endif
+
+// **************************************************************************
+/** @class SpinBox4ns
+
+@brief A QSpinBox which only accepts values dividable by 4
+
+*/
+// **************************************************************************
Index: branches/testFACT++branch/gui/SpinBoxHex.h
===================================================================
--- branches/testFACT++branch/gui/SpinBoxHex.h	(revision 18277)
+++ branches/testFACT++branch/gui/SpinBoxHex.h	(revision 18277)
@@ -0,0 +1,45 @@
+#ifndef FACT_SpinBoxHex
+#define FACT_SpinBoxHex
+
+#include <QSpinBox>
+
+#include <iostream>
+class QRegExpValidator;
+
+class SpinBoxHex : public QSpinBox
+{
+public:
+    SpinBoxHex(QWidget *p=0) : QSpinBox(p)
+    {
+    }
+
+protected:
+    QValidator::State validate(QString &txt, int &/*pos*/) const
+    {
+        bool ok;
+        txt.toInt(&ok, 16);
+
+        return ok ? QValidator::Acceptable : QValidator::Invalid;
+    }
+
+    QString textFromValue(int val) const
+    {
+        return QString::number(val, 16).right(8).rightJustified(8, '0').toLower().insert(4, ':');
+    }
+
+    int valueFromText(const QString &txt) const
+    {
+        bool ok;
+        return txt.toInt(&ok, 16);
+    }
+};
+
+#endif
+
+// **************************************************************************
+/** @class SpinBoxHex
+
+@brief A QSpinBox which displays the value as hex-value
+
+*/
+// **************************************************************************
Index: branches/testFACT++branch/gui/TempViewer.cc
===================================================================
--- branches/testFACT++branch/gui/TempViewer.cc	(revision 18277)
+++ branches/testFACT++branch/gui/TempViewer.cc	(revision 18277)
@@ -0,0 +1,69 @@
+/*
+ * TempViewer.cc
+ *
+ *  Created on: Aug 26, 2011
+ *      Author: lyard
+ */
+#include "Q3DCameraWidget.h"
+#include <qapplication.h>
+#include <qlayout.h>
+
+#include "dic.hxx"
+
+class TemperatureSub : public DimClient
+{
+    DimStampedInfo info;
+    Q3DCameraWidget* view;
+    int numC;
+
+public:
+    TemperatureSub() : info("FSC_CONTROL/TEMPERATURE", (void*)NULL, 0, this), view(NULL)
+    {numC = 0;}
+    void setViewer(Q3DCameraWidget* v) { view = v;}
+    void infoHandler()
+    {
+        DimInfo* I = getInfo();
+        if (!(I==&info))
+        {
+            cout << "Hum, I'm getting info from subsciptions to which I didn\'t subscribe... weird" << endl;
+            return;
+        }
+        float* values = (float*)(I->getData());
+        if (I->getSize() != 60*sizeof(float))
+        {
+            cout << "wrong size: " << I->getSize() << endl;
+            return;
+        }
+        if (view)// && numC > 2)
+            view->updateData(values);
+        numC++;
+    }
+};
+void do3DView(int argc, char** argv)
+{
+    QApplication a(argc, argv);
+
+    Q3DCameraWidget* view = new Q3DCameraWidget();
+    TemperatureSub sub;
+
+    QWidget window;
+    QHBoxLayout* layout = new QHBoxLayout(&window);
+    layout->setContentsMargins(0,0,0,0);
+    layout->addWidget(view);
+//    layout->setMouseTracking(true);
+//    window.setMouseTracking(true);
+//    view->setMouseTracking(true);
+    window.resize(600,600);
+    window.show();
+
+    sub.setViewer(view);
+
+    a.exec();
+
+}
+
+int main(int argc, char** argv)
+{
+    do3DView(argc, argv);
+
+}
Index: branches/testFACT++branch/gui/design.qrc
===================================================================
--- branches/testFACT++branch/gui/design.qrc	(revision 18277)
+++ branches/testFACT++branch/gui/design.qrc	(revision 18277)
@@ -0,0 +1,17 @@
+<RCC>
+  <qresource prefix="Resources">
+    <file>icons/green bar.png</file>
+    <file>icons/green check.png</file>
+    <file>icons/green warn.png</file>
+    <file>icons/in progress.png</file>
+    <file>icons/gray circle 1.png</file>
+    <file>icons/green circle 1.png</file>
+    <file>icons/orange circle 1.png</file>
+    <file>icons/red circle 1.png</file>
+    <file>icons/warning 1.png</file>
+    <file>icons/warning 2.png</file>
+    <file>icons/warning 3.png</file>
+    <file>icons/warning 4.png</file>
+    <file>icons/yellow circle 1.png</file>
+  </qresource>
+</RCC>
Index: branches/testFACT++branch/gui/design.ui
===================================================================
--- branches/testFACT++branch/gui/design.ui	(revision 18277)
+++ branches/testFACT++branch/gui/design.ui	(revision 18277)
@@ -0,0 +1,18035 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <author>Thomas Bretz for the FACT collaboration</author>
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+  <property name="enabled">
+   <bool>true</bool>
+  </property>
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1358</width>
+    <height>936</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle">
+   <string>FACT++</string>
+  </property>
+  <property name="dockNestingEnabled">
+   <bool>false</bool>
+  </property>
+  <widget class="QWidget" name="fCentralWidget">
+   <property name="sizePolicy">
+    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <layout class="QGridLayout" name="gridLayout" rowstretch="0">
+    <property name="sizeConstraint">
+     <enum>QLayout::SetDefaultConstraint</enum>
+    </property>
+    <item row="0" column="0">
+     <widget class="QTabWidget" name="fTabWidget">
+      <property name="enabled">
+       <bool>true</bool>
+      </property>
+      <property name="sizePolicy">
+       <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+        <horstretch>0</horstretch>
+        <verstretch>0</verstretch>
+       </sizepolicy>
+      </property>
+      <property name="mouseTracking">
+       <bool>true</bool>
+      </property>
+      <property name="currentIndex">
+       <number>6</number>
+      </property>
+      <property name="documentMode">
+       <bool>false</bool>
+      </property>
+      <property name="tabsClosable">
+       <bool>true</bool>
+      </property>
+      <property name="movable">
+       <bool>true</bool>
+      </property>
+      <widget class="QWidget" name="fTriggerTab">
+       <attribute name="title">
+        <string>Trigger</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_16">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fTriggerDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="allowedAreas">
+           <set>Qt::AllDockWidgetAreas</set>
+          </property>
+          <property name="windowTitle">
+           <string>Trigger settings</string>
+          </property>
+          <widget class="QWidget" name="fTriggerWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_21" rowstretch="0,1,1" columnstretch="1,1,1">
+            <item row="1" column="0">
+             <widget class="QGroupBox" name="groupBox_5">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="title">
+               <string>Trigger setup</string>
+              </property>
+              <property name="flat">
+               <bool>false</bool>
+              </property>
+              <property name="checkable">
+               <bool>false</bool>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_23">
+               <item row="2" column="2">
+                <layout class="QHBoxLayout" name="horizontalLayout_10">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <spacer name="horizontalSpacer_18">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_31">
+                   <property name="text">
+                    <string>Interval</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fTriggerInterval">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="accelerated">
+                    <bool>true</bool>
+                   </property>
+                   <property name="suffix">
+                    <string> ms</string>
+                   </property>
+                   <property name="minimum">
+                    <number>1</number>
+                   </property>
+                   <property name="maximum">
+                    <number>1023</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="horizontalSpacer_17">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                </layout>
+               </item>
+               <item row="6" column="0" colspan="4">
+                <widget class="Line" name="line_5">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="0" column="0" colspan="4">
+                <widget class="Line" name="line_6">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="2">
+                <spacer name="verticalSpacer_8">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>0</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="15" column="2">
+                <spacer name="verticalSpacer_9">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>0</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="8" column="0">
+                <spacer name="horizontalSpacer_23">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="8" column="3">
+                <spacer name="horizontalSpacer_24">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="11" column="0" colspan="4">
+                <widget class="Line" name="line_11">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="13" column="2">
+                <layout class="QGridLayout" name="gridLayout_30">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item row="0" column="1">
+                  <widget class="QLabel" name="label_23">
+                   <property name="text">
+                    <string>Trg</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignHCenter|Qt::AlignTop</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="2">
+                  <widget class="QLabel" name="label_29">
+                   <property name="text">
+                    <string>Ext1</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignHCenter|Qt::AlignTop</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="3">
+                  <widget class="QLabel" name="label_30">
+                   <property name="text">
+                    <string>Ext2</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignHCenter|Qt::AlignTop</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="4">
+                  <widget class="QLabel" name="label_28">
+                   <property name="text">
+                    <string>Clk</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignHCenter|Qt::AlignTop</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="5">
+                  <spacer name="horizontalSpacer_30">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>10</width>
+                     <height>0</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="0" column="6">
+                  <widget class="QLabel" name="label_27">
+                   <property name="text">
+                    <string>Veto</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignHCenter|Qt::AlignTop</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="6">
+                  <layout class="QHBoxLayout" name="horizontalLayout_20">
+                   <item>
+                    <widget class="QCheckBox" name="fEnableVeto">
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>21</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="baseSize">
+                      <size>
+                       <width>0</width>
+                       <height>0</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="1" column="4">
+                  <layout class="QHBoxLayout" name="horizontalLayout_19">
+                   <item>
+                    <widget class="QCheckBox" name="fEnableClockCond">
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>21</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="1" column="3">
+                  <layout class="QHBoxLayout" name="horizontalLayout_18">
+                   <item>
+                    <widget class="QCheckBox" name="fEnableExt2">
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>21</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="1" column="2">
+                  <layout class="QHBoxLayout" name="horizontalLayout_17">
+                   <item>
+                    <widget class="QCheckBox" name="fEnableExt1">
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>21</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="1" column="1">
+                  <layout class="QHBoxLayout" name="horizontalLayout_16">
+                   <item>
+                    <widget class="QCheckBox" name="fEnableTrigger">
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>21</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="checked">
+                      <bool>false</bool>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                </layout>
+               </item>
+               <item row="7" column="2">
+                <spacer name="verticalSpacer_10">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>40</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="8" column="2">
+                <layout class="QGridLayout" name="gridLayout_24">
+                 <item row="2" column="0">
+                  <widget class="QLabel" name="label_34">
+                   <property name="text">
+                    <string>Pedestal</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="0">
+                  <widget class="QSpinBox" name="fTriggerSeqPed">
+                   <property name="enabled">
+                    <bool>true</bool>
+                   </property>
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="maximum">
+                    <number>31</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="2">
+                  <widget class="QLabel" name="label_32">
+                   <property name="text">
+                    <string>:</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="5">
+                  <widget class="QLabel" name="label_33">
+                   <property name="text">
+                    <string>:</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="6">
+                  <widget class="QSpinBox" name="fTriggerSeqLPint">
+                   <property name="enabled">
+                    <bool>true</bool>
+                   </property>
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="maximum">
+                    <number>31</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="4">
+                  <widget class="QSpinBox" name="fTriggerSeqLPext">
+                   <property name="enabled">
+                    <bool>true</bool>
+                   </property>
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="maximum">
+                    <number>31</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="6">
+                  <widget class="QLabel" name="label_36">
+                   <property name="text">
+                    <string>LPint</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="4">
+                  <widget class="QLabel" name="label_38">
+                   <property name="text">
+                    <string>LPext</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item row="10" column="2">
+                <spacer name="verticalSpacer_11">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeType">
+                  <enum>QSizePolicy::Fixed</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>5</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="12" column="2">
+                <spacer name="verticalSpacer_17">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeType">
+                  <enum>QSizePolicy::Fixed</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>5</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="14" column="2">
+                <spacer name="verticalSpacer_18">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>40</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="3" column="2">
+                <spacer name="verticalSpacer_7">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>40</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="2" column="0">
+             <widget class="QGroupBox" name="groupBox_6">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="title">
+               <string>Light pulser settings</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_56" rowstretch="0,0,0,0,0,0">
+               <item row="0" column="0" colspan="5">
+                <widget class="Line" name="line_16">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="4" column="1">
+                <layout class="QVBoxLayout" name="verticalLayout_9">
+                 <item>
+                  <widget class="QCheckBox" name="fLpIntGroup1">
+                   <property name="text">
+                    <string>Group 1</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QCheckBox" name="fLpIntGroup2">
+                   <property name="text">
+                    <string>Group 2</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer_37">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>5</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_156">
+                   <property name="text">
+                    <string>Intensity</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fLpIntIntensity">
+                   <property name="maximum">
+                    <number>127</number>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item row="4" column="3">
+                <layout class="QVBoxLayout" name="verticalLayout_11">
+                 <item>
+                  <widget class="QCheckBox" name="fLpExtGroup1">
+                   <property name="text">
+                    <string>Group 1</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QCheckBox" name="fLpExtGroup2">
+                   <property name="text">
+                    <string>Group 2</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer_40">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>5</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_157">
+                   <property name="text">
+                    <string>Intensity</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fLpExtIntensity">
+                   <property name="maximum">
+                    <number>127</number>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item row="4" column="2">
+                <spacer name="horizontalSpacer_34">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeType">
+                  <enum>QSizePolicy::MinimumExpanding</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="3" column="1">
+                <widget class="Line" name="line_17">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="3" column="3">
+                <widget class="Line" name="line_18">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="3">
+                <widget class="QLabel" name="label_159">
+                 <property name="text">
+                  <string>Extern</string>
+                 </property>
+                 <property name="alignment">
+                  <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                 </property>
+                </widget>
+               </item>
+               <item row="5" column="2">
+                <spacer name="verticalSpacer_39">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>40</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="1" column="2">
+                <spacer name="verticalSpacer_38">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>40</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="4" column="4">
+                <spacer name="horizontalSpacer_33">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeType">
+                  <enum>QSizePolicy::Preferred</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="4" column="0">
+                <spacer name="horizontalSpacer_32">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeType">
+                  <enum>QSizePolicy::Preferred</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="2" column="1">
+                <widget class="QLabel" name="label_158">
+                 <property name="text">
+                  <string>Intern</string>
+                 </property>
+                 <property name="alignment">
+                  <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                 </property>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="0" column="0" colspan="3">
+             <layout class="QHBoxLayout" name="horizontalLayout_21">
+              <item>
+               <spacer name="horizontalSpacer_15">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeType">
+                 <enum>QSizePolicy::Fixed</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>5</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <layout class="QGridLayout" name="gridLayout_26">
+                <property name="topMargin">
+                 <number>0</number>
+                </property>
+                <item row="1" column="0">
+                 <widget class="QLabel" name="label_35">
+                  <property name="text">
+                   <string>FTM Firmware ID</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="0">
+                 <widget class="QLabel" name="label_37">
+                  <property name="text">
+                   <string>FTM Board ID</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="1">
+                 <widget class="QLineEdit" name="fFtmFirmwareId">
+                  <property name="enabled">
+                   <bool>true</bool>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                  <property name="readOnly">
+                   <bool>true</bool>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="1">
+                 <widget class="QLineEdit" name="fFtmBoardId">
+                  <property name="enabled">
+                   <bool>true</bool>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                  <property name="readOnly">
+                   <bool>true</bool>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </item>
+              <item>
+               <spacer name="horizontalSpacer_7">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeType">
+                 <enum>QSizePolicy::Fixed</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>10</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <layout class="QGridLayout" name="gridLayout_27">
+                <item row="0" column="0">
+                 <widget class="QLabel" name="label_61">
+                  <property name="text">
+                   <string>Header</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="3">
+                 <widget class="QLabel" name="label_62">
+                  <property name="text">
+                   <string>Dynamic data</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="6">
+                 <widget class="QLabel" name="label_66">
+                  <property name="text">
+                   <string>Register</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="8">
+                 <widget class="QSpinBox" name="fFtmCounterE">
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                  <property name="readOnly">
+                   <bool>true</bool>
+                  </property>
+                  <property name="buttonSymbols">
+                   <enum>QAbstractSpinBox::NoButtons</enum>
+                  </property>
+                  <property name="maximum">
+                   <number>16777215</number>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="8">
+                 <widget class="QSpinBox" name="fFtmCounterR">
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                  <property name="readOnly">
+                   <bool>true</bool>
+                  </property>
+                  <property name="buttonSymbols">
+                   <enum>QAbstractSpinBox::NoButtons</enum>
+                  </property>
+                  <property name="maximum">
+                   <number>16777215</number>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="5">
+                 <widget class="QSpinBox" name="fFtmCounterS">
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                  <property name="readOnly">
+                   <bool>true</bool>
+                  </property>
+                  <property name="buttonSymbols">
+                   <enum>QAbstractSpinBox::NoButtons</enum>
+                  </property>
+                  <property name="maximum">
+                   <number>16777215</number>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="5">
+                 <widget class="QSpinBox" name="fFtmCounterD">
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                  <property name="readOnly">
+                   <bool>true</bool>
+                  </property>
+                  <property name="buttonSymbols">
+                   <enum>QAbstractSpinBox::NoButtons</enum>
+                  </property>
+                  <property name="maximum">
+                   <number>16777215</number>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="2">
+                 <widget class="QSpinBox" name="fFtmCounterF">
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                  <property name="readOnly">
+                   <bool>true</bool>
+                  </property>
+                  <property name="buttonSymbols">
+                   <enum>QAbstractSpinBox::NoButtons</enum>
+                  </property>
+                  <property name="maximum">
+                   <number>16777215</number>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="2">
+                 <widget class="QSpinBox" name="fFtmCounterH">
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                  <property name="readOnly">
+                   <bool>true</bool>
+                  </property>
+                  <property name="buttonSymbols">
+                   <enum>QAbstractSpinBox::NoButtons</enum>
+                  </property>
+                  <property name="minimum">
+                   <number>0</number>
+                  </property>
+                  <property name="maximum">
+                   <number>16777215</number>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="3">
+                 <widget class="QLabel" name="label_63">
+                  <property name="text">
+                   <string>Static data</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="6">
+                 <widget class="QLabel" name="label_65">
+                  <property name="text">
+                   <string>Error</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="0">
+                 <widget class="QLabel" name="label_64">
+                  <property name="text">
+                   <string>FTU list</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </item>
+              <item>
+               <spacer name="horizontalSpacer_16">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeType">
+                 <enum>QSizePolicy::Fixed</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>3</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+             </layout>
+            </item>
+            <item row="1" column="1">
+             <widget class="QGroupBox" name="groupBox">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="title">
+               <string>Trigger Majority Logic</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_15">
+               <item row="2" column="1">
+                <widget class="QLabel" name="label_8">
+                 <property name="text">
+                  <string>Physics</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="2">
+                <widget class="QSpinBox" name="fPhysicsCoincidence">
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="suffix">
+                  <string> / 40</string>
+                 </property>
+                 <property name="minimum">
+                  <number>1</number>
+                 </property>
+                 <property name="maximum">
+                  <number>40</number>
+                 </property>
+                </widget>
+               </item>
+               <item row="5" column="2">
+                <widget class="QSpinBox" name="fCalibCoincidence">
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="suffix">
+                  <string> / 40</string>
+                 </property>
+                 <property name="minimum">
+                  <number>1</number>
+                 </property>
+                 <property name="maximum">
+                  <number>40</number>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="3">
+                <widget class="SpinBox4ns" name="fPhysicsWindow">
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="accelerated">
+                  <bool>false</bool>
+                 </property>
+                 <property name="correctionMode">
+                  <enum>QAbstractSpinBox::CorrectToPreviousValue</enum>
+                 </property>
+                 <property name="suffix">
+                  <string> ns</string>
+                 </property>
+                 <property name="minimum">
+                  <number>8</number>
+                 </property>
+                 <property name="maximum">
+                  <number>68</number>
+                 </property>
+                 <property name="singleStep">
+                  <number>4</number>
+                 </property>
+                </widget>
+               </item>
+               <item row="5" column="3">
+                <widget class="SpinBox4ns" name="fCalibWindow">
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="suffix">
+                  <string> ns</string>
+                 </property>
+                 <property name="minimum">
+                  <number>8</number>
+                 </property>
+                 <property name="maximum">
+                  <number>68</number>
+                 </property>
+                 <property name="singleStep">
+                  <number>4</number>
+                 </property>
+                </widget>
+               </item>
+               <item row="5" column="1">
+                <widget class="QLabel" name="label_13">
+                 <property name="text">
+                  <string>LPext</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="2">
+                <widget class="QLabel" name="label_9">
+                 <property name="text">
+                  <string>Coincidence</string>
+                 </property>
+                 <property name="alignment">
+                  <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="3">
+                <widget class="QLabel" name="label_10">
+                 <property name="text">
+                  <string>Window</string>
+                 </property>
+                 <property name="alignment">
+                  <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                 </property>
+                </widget>
+               </item>
+               <item row="0" column="0" colspan="5">
+                <widget class="Line" name="line_8">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="1">
+                <spacer name="verticalSpacer_14">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>0</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="6" column="1">
+                <spacer name="verticalSpacer_15">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>0</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="2" column="0">
+                <spacer name="horizontalSpacer_21">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="2" column="4">
+                <spacer name="horizontalSpacer_22">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="2" column="1">
+             <widget class="QGroupBox" name="groupBox_4">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="title">
+               <string>Rate settings</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_22">
+               <item row="0" column="0" colspan="9">
+                <widget class="Line" name="line_7">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="4">
+                <spacer name="verticalSpacer_6">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>40</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="2" column="4">
+                <widget class="QSpinBox" name="fPrescalingVal">
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="minimum">
+                  <number>1</number>
+                 </property>
+                 <property name="maximum">
+                  <number>256</number>
+                 </property>
+                </widget>
+               </item>
+               <item row="3" column="4">
+                <spacer name="verticalSpacer_22">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>40</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="2" column="3">
+                <widget class="QLabel" name="label_56">
+                 <property name="text">
+                  <string>Prescaling</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="5">
+                <widget class="QLabel" name="label_57">
+                 <property name="text">
+                  <string>· 0.5s</string>
+                 </property>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="1" column="2">
+             <widget class="QGroupBox" name="groupBox_2">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="title">
+               <string>Trigger timing</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_17">
+               <item row="2" column="1">
+                <widget class="QLabel" name="label_12">
+                 <property name="text">
+                  <string>Trigger signal delay</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="3" column="1">
+                <widget class="QLabel" name="label_14">
+                 <property name="text">
+                  <string>Time marker delay</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="4" column="1">
+                <widget class="QLabel" name="label_15">
+                 <property name="text">
+                  <string>Dead time</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="2">
+                <widget class="SpinBox4ns" name="fTriggerDelay">
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="accelerated">
+                  <bool>true</bool>
+                 </property>
+                 <property name="suffix">
+                  <string> ns</string>
+                 </property>
+                 <property name="prefix">
+                  <string/>
+                 </property>
+                 <property name="minimum">
+                  <number>8</number>
+                 </property>
+                 <property name="maximum">
+                  <number>4100</number>
+                 </property>
+                 <property name="singleStep">
+                  <number>4</number>
+                 </property>
+                </widget>
+               </item>
+               <item row="3" column="2">
+                <widget class="SpinBox4ns" name="fTimeMarkerDelay">
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="accelerated">
+                  <bool>true</bool>
+                 </property>
+                 <property name="suffix">
+                  <string> ns</string>
+                 </property>
+                 <property name="minimum">
+                  <number>8</number>
+                 </property>
+                 <property name="maximum">
+                  <number>4100</number>
+                 </property>
+                 <property name="singleStep">
+                  <number>4</number>
+                 </property>
+                </widget>
+               </item>
+               <item row="4" column="2">
+                <widget class="SpinBox4ns" name="fDeadTime">
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="accelerated">
+                  <bool>true</bool>
+                 </property>
+                 <property name="suffix">
+                  <string> ns</string>
+                 </property>
+                 <property name="minimum">
+                  <number>8</number>
+                 </property>
+                 <property name="maximum">
+                  <number>262148</number>
+                 </property>
+                 <property name="singleStep">
+                  <number>4</number>
+                 </property>
+                </widget>
+               </item>
+               <item row="0" column="0" colspan="4">
+                <widget class="Line" name="line_9">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="2">
+                <spacer name="verticalSpacer_2">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>0</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="5" column="1">
+                <spacer name="verticalSpacer_5">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>0</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="2" column="3">
+                <spacer name="horizontalSpacer_19">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="2" column="0">
+                <spacer name="horizontalSpacer_20">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="2" column="2">
+             <widget class="QGroupBox" name="groupBox_3">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="title">
+               <string>Clock conditioner (Clk)</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_18">
+               <item row="0" column="0" colspan="6">
+                <widget class="Line" name="line_10">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="10" column="2">
+                <spacer name="verticalSpacer_12">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>0</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="1" column="2">
+                <spacer name="verticalSpacer_13">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>0</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="6" column="0">
+                <spacer name="horizontalSpacer_25">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="6" column="5">
+                <spacer name="horizontalSpacer_26">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="3" column="1" colspan="2">
+                <widget class="QComboBox" name="fClockCondFreq">
+                 <property name="frame">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="1" colspan="2">
+                <widget class="QLabel" name="label_133">
+                 <property name="text">
+                  <string>DRS sampling frequency (def=2GHz)</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="4" column="2" rowspan="3">
+                <spacer name="verticalSpacer_28">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>0</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="3" column="4">
+                <widget class="QDoubleSpinBox" name="fClockCondFreqRes">
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="readOnly">
+                  <bool>true</bool>
+                 </property>
+                 <property name="buttonSymbols">
+                  <enum>QAbstractSpinBox::NoButtons</enum>
+                 </property>
+                 <property name="suffix">
+                  <string> MHz</string>
+                 </property>
+                 <property name="maximum">
+                  <double>10000.000000000000000</double>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="4">
+                <widget class="QLabel" name="label_143">
+                 <property name="text">
+                  <string>Calculated rate</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="3" column="3">
+                <layout class="QHBoxLayout" name="horizontalLayout_31">
+                 <item>
+                  <spacer name="horizontalSpacer_43">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="QPushButton" name="fClockCondLed">
+                   <property name="enabled">
+                    <bool>true</bool>
+                   </property>
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="maximumSize">
+                    <size>
+                     <width>18</width>
+                     <height>16777215</height>
+                    </size>
+                   </property>
+                   <property name="text">
+                    <string/>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="design.qrc">
+                     <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                   </property>
+                   <property name="iconSize">
+                    <size>
+                     <width>16</width>
+                     <height>16</height>
+                    </size>
+                   </property>
+                   <property name="checkable">
+                    <bool>false</bool>
+                   </property>
+                   <property name="flat">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item row="9" column="1" colspan="4">
+                <layout class="QGridLayout" name="gridLayout_69">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item row="0" column="0">
+                  <widget class="QLabel" name="label_16">
+                   <property name="text">
+                    <string>R0</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="1">
+                  <widget class="QLabel" name="label_11">
+                   <property name="text">
+                    <string>R1</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="2">
+                  <widget class="QLabel" name="label_17">
+                   <property name="text">
+                    <string>R8</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="3">
+                  <widget class="QLabel" name="label_18">
+                   <property name="text">
+                    <string>R9</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="0">
+                  <widget class="SpinBoxHex" name="fClockCondR0">
+                   <property name="enabled">
+                    <bool>false</bool>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="accelerated">
+                    <bool>true</bool>
+                   </property>
+                   <property name="minimum">
+                    <number>-2147483647</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2147483647</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="1">
+                  <widget class="SpinBoxHex" name="fClockCondR1">
+                   <property name="enabled">
+                    <bool>false</bool>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="accelerated">
+                    <bool>true</bool>
+                   </property>
+                   <property name="minimum">
+                    <number>-2147483647</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2147483647</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="2">
+                  <widget class="SpinBoxHex" name="fClockCondR8">
+                   <property name="enabled">
+                    <bool>false</bool>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="accelerated">
+                    <bool>true</bool>
+                   </property>
+                   <property name="minimum">
+                    <number>-2147483647</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2147483647</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="3">
+                  <widget class="SpinBoxHex" name="fClockCondR9">
+                   <property name="enabled">
+                    <bool>false</bool>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="accelerated">
+                    <bool>true</bool>
+                   </property>
+                   <property name="minimum">
+                    <number>-2147483647</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2147483647</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="0">
+                  <widget class="SpinBoxHex" name="fClockCondR11">
+                   <property name="enabled">
+                    <bool>false</bool>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="accelerated">
+                    <bool>true</bool>
+                   </property>
+                   <property name="minimum">
+                    <number>-2147483647</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2147483647</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="1">
+                  <widget class="SpinBoxHex" name="fClockCondR13">
+                   <property name="enabled">
+                    <bool>false</bool>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="accelerated">
+                    <bool>true</bool>
+                   </property>
+                   <property name="minimum">
+                    <number>-2147483647</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2147483647</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="2">
+                  <widget class="SpinBoxHex" name="fClockCondR14">
+                   <property name="enabled">
+                    <bool>false</bool>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="accelerated">
+                    <bool>true</bool>
+                   </property>
+                   <property name="minimum">
+                    <number>-2147483647</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2147483647</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="3">
+                  <widget class="SpinBoxHex" name="fClockCondR15">
+                   <property name="enabled">
+                    <bool>false</bool>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="accelerated">
+                    <bool>true</bool>
+                   </property>
+                   <property name="minimum">
+                    <number>-2147483647</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2147483647</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="0">
+                  <widget class="QLabel" name="label_19">
+                   <property name="text">
+                    <string>R11</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignHCenter|Qt::AlignTop</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="1">
+                  <widget class="QLabel" name="label_20">
+                   <property name="text">
+                    <string>R13</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignHCenter|Qt::AlignTop</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="2">
+                  <widget class="QLabel" name="label_21">
+                   <property name="text">
+                    <string>R14</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignHCenter|Qt::AlignTop</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="3">
+                  <widget class="QLabel" name="label_22">
+                   <property name="text">
+                    <string>R15</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignHCenter|Qt::AlignTop</set>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+              </layout>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fFtuTab">
+       <attribute name="title">
+        <string>FTUs</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_28">
+        <item row="0" column="1">
+         <widget class="QDockWidget" name="fFtuDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="allowedAreas">
+           <set>Qt::AllDockWidgetAreas</set>
+          </property>
+          <property name="windowTitle">
+           <string>FTU overview</string>
+          </property>
+          <widget class="QWidget" name="fFtuWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_25" rowstretch="0,0,0,0,0" columnstretch="1,0">
+            <item row="0" column="1" rowspan="5">
+             <widget class="QGroupBox" name="groupBox_8">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="title">
+               <string>FTM Temperatures</string>
+              </property>
+              <layout class="QVBoxLayout" name="verticalLayout_4">
+               <item>
+                <layout class="QHBoxLayout" name="horizontalLayout_14">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QDoubleSpinBox" name="fFtmTemp0">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string>°C</string>
+                   </property>
+                   <property name="decimals">
+                    <number>1</number>
+                   </property>
+                   <property name="minimum">
+                    <double>-20.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QDoubleSpinBox" name="fFtmTemp1">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string>°C</string>
+                   </property>
+                   <property name="decimals">
+                    <number>1</number>
+                   </property>
+                   <property name="minimum">
+                    <double>-20.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QDoubleSpinBox" name="fFtmTemp2">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string>°C</string>
+                   </property>
+                   <property name="decimals">
+                    <number>1</number>
+                   </property>
+                   <property name="minimum">
+                    <double>-20.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QDoubleSpinBox" name="fFtmTemp3">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string>°C</string>
+                   </property>
+                   <property name="decimals">
+                    <number>1</number>
+                   </property>
+                   <property name="minimum">
+                    <double>-20.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item>
+                <widget class="QFrame" name="frame_2">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                 <property name="frameShape">
+                  <enum>QFrame::StyledPanel</enum>
+                 </property>
+                 <property name="frameShadow">
+                  <enum>QFrame::Sunken</enum>
+                 </property>
+                 <layout class="QGridLayout" name="gridLayout_29">
+                  <property name="margin">
+                   <number>3</number>
+                  </property>
+                  <item row="1" column="0">
+                   <layout class="QGridLayout" name="gridLayout_34">
+                    <property name="topMargin">
+                     <number>0</number>
+                    </property>
+                    <item row="0" column="0">
+                     <widget class="QLabel" name="label_70">
+                      <property name="text">
+                       <string>Patch</string>
+                      </property>
+                     </widget>
+                    </item>
+                    <item row="1" column="0">
+                     <widget class="QSpinBox" name="fRatePatch1">
+                      <property name="specialValueText">
+                       <string>off</string>
+                      </property>
+                      <property name="minimum">
+                       <number>-1</number>
+                      </property>
+                      <property name="maximum">
+                       <number>159</number>
+                      </property>
+                      <property name="value">
+                       <number>-1</number>
+                      </property>
+                     </widget>
+                    </item>
+                    <item row="1" column="2">
+                     <widget class="QSpinBox" name="fRateBoard1">
+                      <property name="specialValueText">
+                       <string>off</string>
+                      </property>
+                      <property name="minimum">
+                       <number>-1</number>
+                      </property>
+                      <property name="maximum">
+                       <number>39</number>
+                      </property>
+                      <property name="value">
+                       <number>-1</number>
+                      </property>
+                     </widget>
+                    </item>
+                    <item row="0" column="2">
+                     <widget class="QLabel" name="label_72">
+                      <property name="text">
+                       <string>Board</string>
+                      </property>
+                     </widget>
+                    </item>
+                    <item row="1" column="1">
+                     <widget class="QSpinBox" name="fRatePatch2">
+                      <property name="specialValueText">
+                       <string>off</string>
+                      </property>
+                      <property name="minimum">
+                       <number>-1</number>
+                      </property>
+                      <property name="maximum">
+                       <number>159</number>
+                      </property>
+                      <property name="value">
+                       <number>-1</number>
+                      </property>
+                     </widget>
+                    </item>
+                    <item row="1" column="3">
+                     <widget class="QSpinBox" name="fRateBoard2">
+                      <property name="specialValueText">
+                       <string>off</string>
+                      </property>
+                      <property name="minimum">
+                       <number>-1</number>
+                      </property>
+                      <property name="maximum">
+                       <number>39</number>
+                      </property>
+                      <property name="value">
+                       <number>-1</number>
+                      </property>
+                     </widget>
+                    </item>
+                   </layout>
+                  </item>
+                  <item row="0" column="0">
+                   <widget class="RootWidget" name="fFtmRateCanv" native="true">
+                    <property name="sizePolicy">
+                     <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                      <horstretch>0</horstretch>
+                      <verstretch>0</verstretch>
+                     </sizepolicy>
+                    </property>
+                   </widget>
+                  </item>
+                 </layout>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="0" column="0">
+             <widget class="QGroupBox" name="fFtuGroupCounter">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="title">
+               <string>FTM Counter</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_33">
+               <item row="1" column="0">
+                <widget class="QLabel" name="label_39">
+                 <property name="text">
+                  <string>Time</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="0">
+                <widget class="QLabel" name="label_41">
+                 <property name="text">
+                  <string>On time</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="1">
+                <widget class="QLineEdit" name="fFtmTime">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="readOnly">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="1">
+                <widget class="QLineEdit" name="fOnTime">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="readOnly">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+               <item row="3" column="1">
+                <widget class="QLineEdit" name="fTriggerCounter">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="readOnly">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+               <item row="3" column="0">
+                <widget class="QLabel" name="label_40">
+                 <property name="text">
+                  <string>Trigger counter</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="2">
+                <widget class="QDoubleSpinBox" name="fOnTimeRel">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="readOnly">
+                  <bool>true</bool>
+                 </property>
+                 <property name="buttonSymbols">
+                  <enum>QAbstractSpinBox::NoButtons</enum>
+                 </property>
+                 <property name="suffix">
+                  <string>%</string>
+                 </property>
+                 <property name="maximum">
+                  <double>100.000000000000000</double>
+                 </property>
+                 <property name="singleStep">
+                  <double>0.010000000000000</double>
+                 </property>
+                 <property name="value">
+                  <double>100.000000000000000</double>
+                 </property>
+                </widget>
+               </item>
+               <item row="3" column="2">
+                <widget class="QDoubleSpinBox" name="fTriggerCounterRate">
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="buttonSymbols">
+                  <enum>QAbstractSpinBox::NoButtons</enum>
+                 </property>
+                 <property name="suffix">
+                  <string> Hz</string>
+                 </property>
+                 <property name="maximum">
+                  <double>10000.000000000000000</double>
+                 </property>
+                 <property name="value">
+                  <double>10000.000000000000000</double>
+                 </property>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="2" column="0">
+             <widget class="QGroupBox" name="groupBox_7">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>359</width>
+                <height>0</height>
+               </size>
+              </property>
+              <property name="title">
+               <string>FTU DNAs</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_13">
+               <item row="0" column="0">
+                <widget class="QTextEdit" name="fFtuDNA">
+                 <property name="readOnly">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="1" column="0">
+             <widget class="QGroupBox" name="fFtuGroupEnable">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>359</width>
+                <height>185</height>
+               </size>
+              </property>
+              <property name="maximumSize">
+               <size>
+                <width>359</width>
+                <height>16777215</height>
+               </size>
+              </property>
+              <property name="title">
+               <string>FTU Enable</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_32">
+               <item row="1" column="0" colspan="6">
+                <layout class="QGridLayout" name="fFtuLedLayout" rowstretch="0,1,1,1,1" columnstretch="0,1,1,1,1,1,1,1,1,1,1,0">
+                 <property name="margin">
+                  <number>4</number>
+                 </property>
+                 <item row="1" column="1">
+                  <widget class="QPushButton" name="fFtuLEDPrototype">
+                   <property name="enabled">
+                    <bool>true</bool>
+                   </property>
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="maximumSize">
+                    <size>
+                     <width>18</width>
+                     <height>16777215</height>
+                    </size>
+                   </property>
+                   <property name="text">
+                    <string/>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="design.qrc">
+                     <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                   </property>
+                   <property name="iconSize">
+                    <size>
+                     <width>16</width>
+                     <height>16</height>
+                    </size>
+                   </property>
+                   <property name="checkable">
+                    <bool>true</bool>
+                   </property>
+                   <property name="flat">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="0">
+                  <widget class="QLabel" name="label_42">
+                   <property name="text">
+                    <string>Crate #0</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="0">
+                  <widget class="QLabel" name="label_43">
+                   <property name="text">
+                    <string>Crate #1</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="0">
+                  <widget class="QLabel" name="label_44">
+                   <property name="text">
+                    <string>Crate #2</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="4" column="0">
+                  <widget class="QLabel" name="label_45">
+                   <property name="text">
+                    <string>Crate #3</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="1">
+                  <widget class="QLabel" name="label_46">
+                   <property name="text">
+                    <string>0</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="2">
+                  <widget class="QLabel" name="label_47">
+                   <property name="text">
+                    <string>1</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="3">
+                  <widget class="QLabel" name="label_48">
+                   <property name="text">
+                    <string>2</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="4">
+                  <widget class="QLabel" name="label_49">
+                   <property name="text">
+                    <string>3</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="5">
+                  <widget class="QLabel" name="label_50">
+                   <property name="text">
+                    <string>4</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="6">
+                  <widget class="QLabel" name="label_51">
+                   <property name="text">
+                    <string>5</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="7">
+                  <widget class="QLabel" name="label_52">
+                   <property name="text">
+                    <string>6</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="8">
+                  <widget class="QLabel" name="label_53">
+                   <property name="text">
+                    <string>7</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="9">
+                  <widget class="QLabel" name="label_54">
+                   <property name="text">
+                    <string>8</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="10">
+                  <widget class="QLabel" name="label_55">
+                   <property name="text">
+                    <string>9</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="11">
+                  <widget class="QSpinBox" name="fFtuAnswersCrate0">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="maximum">
+                    <number>10</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="11">
+                  <widget class="QSpinBox" name="fFtuAnswersCrate1">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="maximum">
+                    <number>10</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="11">
+                  <widget class="QSpinBox" name="fFtuAnswersCrate2">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="maximum">
+                    <number>10</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="4" column="11">
+                  <widget class="QSpinBox" name="fFtuAnswersCrate3">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="maximum">
+                    <number>10</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="11">
+                  <widget class="QSpinBox" name="fFtuAnswersTotal">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="maximum">
+                    <number>40</number>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item row="2" column="4">
+                <widget class="QPushButton" name="fFtuPing">
+                 <property name="text">
+                  <string> Ping </string>
+                 </property>
+                 <property name="checkable">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="1">
+                <widget class="QPushButton" name="fFtuAllOn">
+                 <property name="text">
+                  <string>All on</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="3">
+                <spacer name="horizontalSpacer_13">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="2" column="2">
+                <widget class="QPushButton" name="fFtuAllOff">
+                 <property name="text">
+                  <string>All off</string>
+                 </property>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fRatesTab">
+       <attribute name="title">
+        <string>Rates</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_12">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fRatesDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="minimumSize">
+           <size>
+            <width>224</width>
+            <height>710</height>
+           </size>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="allowedAreas">
+           <set>Qt::AllDockWidgetAreas</set>
+          </property>
+          <property name="windowTitle">
+           <string>FTU rate display</string>
+          </property>
+          <widget class="QWidget" name="fRatesWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_6">
+            <item row="0" column="1" rowspan="2">
+             <widget class="QGroupBox" name="fRatesControls">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="title">
+               <string>Controls</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_64" columnstretch="0">
+               <property name="sizeConstraint">
+                <enum>QLayout::SetMinimumSize</enum>
+               </property>
+               <item row="1" column="0">
+                <layout class="QVBoxLayout" name="verticalLayout_5">
+                 <property name="rightMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QLabel" name="label_68">
+                   <property name="text">
+                    <string>Pixel</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <layout class="QHBoxLayout" name="horizontalLayout_12">
+                   <property name="topMargin">
+                    <number>0</number>
+                   </property>
+                   <item>
+                    <widget class="QSpinBox" name="fPixelIdx">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>1439</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <widget class="QCheckBox" name="fPixelEnable">
+                     <property name="maximumSize">
+                      <size>
+                       <width>20</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item>
+                  <layout class="QHBoxLayout" name="horizontalLayout_24">
+                   <property name="topMargin">
+                    <number>0</number>
+                   </property>
+                   <item>
+                    <widget class="QPushButton" name="fPixelEnableAll">
+                     <property name="text">
+                      <string>Enable all</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <widget class="QPushButton" name="fPixelDisableAll">
+                     <property name="text">
+                      <string>Disable all</string>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item>
+                  <layout class="QHBoxLayout" name="horizontalLayout_22">
+                   <property name="topMargin">
+                    <number>0</number>
+                   </property>
+                   <item>
+                    <widget class="QPushButton" name="fPixelDisableOthers">
+                     <property name="text">
+                      <string>Disable others</string>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item>
+                  <widget class="Line" name="line_52">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer_16">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>0</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_25">
+                   <property name="text">
+                    <string>Patch</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fThresholdIdx">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>false</bool>
+                   </property>
+                   <property name="specialValueText">
+                    <string>all</string>
+                   </property>
+                   <property name="minimum">
+                    <number>-1</number>
+                   </property>
+                   <property name="maximum">
+                    <number>159</number>
+                   </property>
+                   <property name="value">
+                    <number>0</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <layout class="QGridLayout" name="gridLayout_96">
+                   <property name="topMargin">
+                    <number>0</number>
+                   </property>
+                   <item row="1" column="0" colspan="2">
+                    <widget class="QPushButton" name="fThresholdDisableOthers">
+                     <property name="text">
+                      <string>Disable others</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="0">
+                    <widget class="QPushButton" name="fThresholdEnablePatch">
+                     <property name="text">
+                      <string>Enable</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="1">
+                    <widget class="QPushButton" name="fThresholdDisablePatch">
+                     <property name="text">
+                      <string>Disable</string>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer_20">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>5</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <layout class="QGridLayout" name="gridLayout_40">
+                   <property name="topMargin">
+                    <number>0</number>
+                   </property>
+                   <item row="1" column="0">
+                    <widget class="QSpinBox" name="fThresholdCrate">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>3</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="1">
+                    <widget class="QSpinBox" name="fThresholdBoard">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>9</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="3">
+                    <widget class="QSpinBox" name="fThresholdPatch">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>3</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="3">
+                    <widget class="QLabel" name="label_130">
+                     <property name="text">
+                      <string>Patch</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="0">
+                    <widget class="QLabel" name="label_132">
+                     <property name="text">
+                      <string>Crate</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="1">
+                    <widget class="QLabel" name="label_131">
+                     <property name="text">
+                      <string>Board</string>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer_27">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>0</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="Line" name="line_53">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_24">
+                   <property name="text">
+                    <string>Patch threshold</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fThresholdVal">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="maximum">
+                    <number>4095</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QDoubleSpinBox" name="fThresholdVolt">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="minimumSize">
+                    <size>
+                     <width>100</width>
+                     <height>0</height>
+                    </size>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> mV</string>
+                   </property>
+                   <property name="decimals">
+                    <number>1</number>
+                   </property>
+                   <property name="maximum">
+                    <double>2500.000000000000000</double>
+                   </property>
+                   <property name="value">
+                    <double>0.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="Line" name="line_54">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_69">
+                   <property name="text">
+                    <string>Patch Rate</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QDoubleSpinBox" name="fPatchRate">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> Hz</string>
+                   </property>
+                   <property name="maximum">
+                    <double>999999999.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer_79">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>0</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="Line" name="line_55">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_248">
+                   <property name="text">
+                    <string>N-out-of-4 threshold</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fNoutof4Val">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="specialValueText">
+                    <string>inconsistent</string>
+                   </property>
+                   <property name="minimum">
+                    <number>-1</number>
+                   </property>
+                   <property name="maximum">
+                    <number>4095</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QDoubleSpinBox" name="fNoutof4Volt">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="minimumSize">
+                    <size>
+                     <width>100</width>
+                     <height>0</height>
+                    </size>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> mV</string>
+                   </property>
+                   <property name="decimals">
+                    <number>1</number>
+                   </property>
+                   <property name="maximum">
+                    <double>2500.000000000000000</double>
+                   </property>
+                   <property name="value">
+                    <double>0.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_249">
+                   <property name="text">
+                    <string>Board rate</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QDoubleSpinBox" name="fBoardRate">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> Hz</string>
+                   </property>
+                   <property name="maximum">
+                    <double>999999999.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer_19">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>40</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                </layout>
+               </item>
+               <item row="0" column="0">
+                <widget class="Line" name="line_23">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="3" column="0">
+                <layout class="QGridLayout" name="gridLayout_66" rowstretch="0,0" columnstretch="0,0">
+                 <property name="sizeConstraint">
+                  <enum>QLayout::SetDefaultConstraint</enum>
+                 </property>
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item row="0" column="0">
+                  <widget class="QLabel" name="label_173">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>Min</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="1">
+                  <widget class="QSpinBox" name="fRatesMin">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="specialValueText">
+                    <string>auto</string>
+                   </property>
+                   <property name="suffix">
+                    <string> Hz</string>
+                   </property>
+                   <property name="minimum">
+                    <number>-1</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2147483647</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="0">
+                  <widget class="QLabel" name="label_174">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>Max</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="1">
+                  <widget class="QSpinBox" name="fRatesMax">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="specialValueText">
+                    <string>auto</string>
+                   </property>
+                   <property name="suffix">
+                    <string> Hz</string>
+                   </property>
+                   <property name="minimum">
+                    <number>-1</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2147483647</number>
+                   </property>
+                   <property name="value">
+                    <number>10</number>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item row="2" column="0">
+                <widget class="QCheckBox" name="fBoardRatesEnabled">
+                 <property name="text">
+                  <string>Display board rates</string>
+                 </property>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="0" column="0" rowspan="2">
+             <widget class="QFrame" name="frame_4">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>0</height>
+               </size>
+              </property>
+              <property name="frameShape">
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_31">
+               <property name="margin">
+                <number>3</number>
+               </property>
+               <item row="0" column="0">
+                <widget class="QCameraWidget" name="fRatesCanv" native="true"/>
+               </item>
+              </layout>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fTabRateScan">
+       <attribute name="title">
+        <string>Scan</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_108">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fRateScanDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="allowedAreas">
+           <set>Qt::AllDockWidgetAreas</set>
+          </property>
+          <property name="windowTitle">
+           <string>Rate Scan display</string>
+          </property>
+          <widget class="QWidget" name="fRateScanWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_102">
+            <item row="0" column="1" rowspan="2">
+             <widget class="QGroupBox" name="fRateScanControls">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="title">
+               <string>Controls</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_104" columnstretch="0">
+               <property name="sizeConstraint">
+                <enum>QLayout::SetMinimumSize</enum>
+               </property>
+               <item row="1" column="0">
+                <layout class="QVBoxLayout" name="verticalLayout_20">
+                 <property name="rightMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <layout class="QGridLayout" name="gridLayout_106">
+                   <property name="topMargin">
+                    <number>0</number>
+                   </property>
+                   <item row="0" column="0">
+                    <widget class="QLabel" name="label_253">
+                     <property name="text">
+                      <string>Start</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="1">
+                    <widget class="QSpinBox" name="fRateScanTo">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="1">
+                    <widget class="QSpinBox" name="fRateScanFrom">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                     <property name="value">
+                      <number>350</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="0">
+                    <widget class="QLabel" name="label_252">
+                     <property name="text">
+                      <string>End</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="0">
+                    <widget class="QLabel" name="label_254">
+                     <property name="text">
+                      <string>Step</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="1">
+                    <widget class="QSpinBox" name="fRateScanStep">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                     <property name="value">
+                      <number>5</number>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item>
+                  <widget class="QPushButton" name="fRateScanStartTH">
+                   <property name="text">
+                    <string>Start Threshold</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QPushButton" name="fRateScanStartN4">
+                   <property name="text">
+                    <string>Start N/4</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer_81">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>5</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="QPushButton" name="fRateScanStop">
+                   <property name="text">
+                    <string>Stop</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer_80">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>0</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer_82">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>0</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer_83">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>0</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer_84">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>40</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                </layout>
+               </item>
+               <item row="0" column="0">
+                <widget class="Line" name="line_60">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="0" column="0">
+             <widget class="QGroupBox" name="groupBox_26">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="title">
+               <string>Rate vs Threshold</string>
+              </property>
+              <layout class="QVBoxLayout" name="verticalLayout_22">
+               <item>
+                <widget class="QFrame" name="frame_11">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                 <property name="frameShape">
+                  <enum>QFrame::StyledPanel</enum>
+                 </property>
+                 <property name="frameShadow">
+                  <enum>QFrame::Sunken</enum>
+                 </property>
+                 <layout class="QGridLayout" name="gridLayout_109">
+                  <property name="margin">
+                   <number>3</number>
+                  </property>
+                  <item row="0" column="0">
+                   <widget class="RootWidget" name="fRateScanCanv" native="true">
+                    <property name="sizePolicy">
+                     <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                      <horstretch>0</horstretch>
+                      <verstretch>0</verstretch>
+                     </sizepolicy>
+                    </property>
+                   </widget>
+                  </item>
+                  <item row="1" column="0">
+                   <layout class="QGridLayout" name="gridLayout_110">
+                    <property name="topMargin">
+                     <number>0</number>
+                    </property>
+                    <item row="0" column="0">
+                     <widget class="QLabel" name="label_255">
+                      <property name="text">
+                       <string>Patch</string>
+                      </property>
+                     </widget>
+                    </item>
+                    <item row="1" column="0">
+                     <widget class="QSpinBox" name="fRateScanPatch1">
+                      <property name="specialValueText">
+                       <string>off</string>
+                      </property>
+                      <property name="minimum">
+                       <number>-1</number>
+                      </property>
+                      <property name="maximum">
+                       <number>159</number>
+                      </property>
+                      <property name="value">
+                       <number>-1</number>
+                      </property>
+                     </widget>
+                    </item>
+                    <item row="1" column="2">
+                     <widget class="QSpinBox" name="fRateScanBoard1">
+                      <property name="specialValueText">
+                       <string>off</string>
+                      </property>
+                      <property name="minimum">
+                       <number>-1</number>
+                      </property>
+                      <property name="maximum">
+                       <number>39</number>
+                      </property>
+                      <property name="value">
+                       <number>-1</number>
+                      </property>
+                     </widget>
+                    </item>
+                    <item row="0" column="2">
+                     <widget class="QLabel" name="label_260">
+                      <property name="text">
+                       <string>Board</string>
+                      </property>
+                     </widget>
+                    </item>
+                    <item row="1" column="1">
+                     <widget class="QSpinBox" name="fRateScanPatch2">
+                      <property name="specialValueText">
+                       <string>off</string>
+                      </property>
+                      <property name="minimum">
+                       <number>-1</number>
+                      </property>
+                      <property name="maximum">
+                       <number>159</number>
+                      </property>
+                      <property name="value">
+                       <number>-1</number>
+                      </property>
+                     </widget>
+                    </item>
+                    <item row="1" column="3">
+                     <widget class="QSpinBox" name="fRateScanBoard2">
+                      <property name="specialValueText">
+                       <string>off</string>
+                      </property>
+                      <property name="minimum">
+                       <number>-1</number>
+                      </property>
+                      <property name="maximum">
+                       <number>39</number>
+                      </property>
+                      <property name="value">
+                       <number>-1</number>
+                      </property>
+                     </widget>
+                    </item>
+                   </layout>
+                  </item>
+                 </layout>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fBiasTab">
+       <attribute name="title">
+        <string>Bias</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_86">
+        <item row="0" column="1">
+         <widget class="QDockWidget" name="fBiasDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="minimumSize">
+           <size>
+            <width>1094</width>
+            <height>336</height>
+           </size>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="allowedAreas">
+           <set>Qt::AllDockWidgetAreas</set>
+          </property>
+          <property name="windowTitle">
+           <string>BIAS power supply</string>
+          </property>
+          <widget class="QWidget" name="fBiasWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_81">
+            <item row="1" column="0" colspan="2">
+             <widget class="QGroupBox" name="fBiasControls">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="title">
+               <string>Controls</string>
+              </property>
+              <layout class="QHBoxLayout" name="horizontalLayout_46" stretch="0,0,0,0,0,0,0,0,0">
+               <item>
+                <layout class="QGridLayout" name="gridLayout_84">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item row="8" column="4">
+                  <widget class="QSpinBox" name="fBiasCamPixel">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>false</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::UpDownArrows</enum>
+                   </property>
+                   <property name="maximum">
+                    <number>8</number>
+                   </property>
+                   <property name="singleStep">
+                    <number>1</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="8" column="3">
+                  <widget class="QSpinBox" name="fBiasCamPatch">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="maximum">
+                    <number>3</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="8" column="2">
+                  <widget class="QSpinBox" name="fBiasCamBoard">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="maximum">
+                    <number>9</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="8" column="1">
+                  <widget class="QSpinBox" name="fBiasCamCrate">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="maximum">
+                    <number>3</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="7" column="4">
+                  <widget class="QLabel" name="label_231">
+                   <property name="text">
+                    <string>Pixel</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="7" column="3">
+                  <widget class="QLabel" name="label_222">
+                   <property name="text">
+                    <string>Patch</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="7" column="2">
+                  <widget class="QLabel" name="label_224">
+                   <property name="text">
+                    <string>Board</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="7" column="1">
+                  <widget class="QLabel" name="label_223">
+                   <property name="text">
+                    <string>Crate</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="8" column="0">
+                  <widget class="QLabel" name="label_206">
+                   <property name="text">
+                    <string>Camera</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="4">
+                  <widget class="QSpinBox" name="fBiasHvChannel">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>false</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::UpDownArrows</enum>
+                   </property>
+                   <property name="maximum">
+                    <number>31</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="3">
+                  <widget class="QSpinBox" name="fBiasHvBoard">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="maximum">
+                    <number>9</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="1" colspan="2">
+                  <widget class="QLabel" name="label_202">
+                   <property name="text">
+                    <string>Bias supply</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="4">
+                  <widget class="QLabel" name="label_230">
+                   <property name="text">
+                    <string>Channel</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="3">
+                  <widget class="QLabel" name="label_229">
+                   <property name="text">
+                    <string>Board</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="0" colspan="5">
+                  <widget class="Line" name="line_46">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="0" colspan="4">
+                  <widget class="QLabel" name="label_238">
+                   <property name="text">
+                    <string>Channel selection</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="4" column="0" colspan="5">
+                  <widget class="Line" name="line_47">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item>
+                <widget class="Line" name="line_40">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                </widget>
+               </item>
+               <item>
+                <layout class="QGridLayout" name="gridLayout_91">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item row="2" column="1">
+                  <widget class="QDoubleSpinBox" name="fBiasVoltRef">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> V</string>
+                   </property>
+                   <property name="decimals">
+                    <number>3</number>
+                   </property>
+                   <property name="maximum">
+                    <double>90.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="0" colspan="3">
+                  <widget class="Line" name="line_50">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="2">
+                  <widget class="QLabel" name="label_233">
+                   <property name="text">
+                    <string>target</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="2">
+                  <widget class="QLabel" name="label_234">
+                   <property name="text">
+                    <string>applied</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="0">
+                  <widget class="QPushButton" name="fBiasNominalLed">
+                   <property name="enabled">
+                    <bool>true</bool>
+                   </property>
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="maximumSize">
+                    <size>
+                     <width>18</width>
+                     <height>16777215</height>
+                    </size>
+                   </property>
+                   <property name="text">
+                    <string/>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="design.qrc">
+                     <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                   </property>
+                   <property name="iconSize">
+                    <size>
+                     <width>16</width>
+                     <height>16</height>
+                    </size>
+                   </property>
+                   <property name="checkable">
+                    <bool>false</bool>
+                   </property>
+                   <property name="flat">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="1" colspan="2">
+                  <widget class="QLabel" name="label_226">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>Values for this channel</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="4" column="1">
+                  <widget class="QDoubleSpinBox" name="fBiasCurrent">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> µA</string>
+                   </property>
+                   <property name="maximum">
+                    <double>9999999.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="4" column="2">
+                  <widget class="QLabel" name="label_239">
+                   <property name="text">
+                    <string>total</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="4" column="0">
+                  <widget class="QPushButton" name="fBiasOverCurrentLed">
+                   <property name="enabled">
+                    <bool>true</bool>
+                   </property>
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="maximumSize">
+                    <size>
+                     <width>18</width>
+                     <height>16777215</height>
+                    </size>
+                   </property>
+                   <property name="text">
+                    <string/>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="design.qrc">
+                     <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                   </property>
+                   <property name="iconSize">
+                    <size>
+                     <width>16</width>
+                     <height>16</height>
+                    </size>
+                   </property>
+                   <property name="checkable">
+                    <bool>false</bool>
+                   </property>
+                   <property name="flat">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="5" column="1">
+                  <widget class="QDoubleSpinBox" name="fBiasCalibrated">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> µA</string>
+                   </property>
+                   <property name="maximum">
+                    <double>9999999.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="5" column="2">
+                  <widget class="QLabel" name="label_261">
+                   <property name="text">
+                    <string>calibrated</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="1">
+                  <widget class="QDoubleSpinBox" name="fBiasVoltCur">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> V</string>
+                   </property>
+                   <property name="decimals">
+                    <number>3</number>
+                   </property>
+                   <property name="maximum">
+                    <double>90.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item>
+                <widget class="Line" name="line_41">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                </widget>
+               </item>
+               <item>
+                <layout class="QVBoxLayout" name="verticalLayout_17">
+                 <item>
+                  <widget class="QLabel" name="label_225">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="minimumSize">
+                    <size>
+                     <width>0</width>
+                     <height>0</height>
+                    </size>
+                   </property>
+                   <property name="text">
+                    <string>Absolute Voltage</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="Line" name="line_48">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <layout class="QGridLayout" name="gridLayout_47">
+                   <item row="0" column="0">
+                    <widget class="QDoubleSpinBox" name="fBiasVolt">
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>false</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::UpDownArrows</enum>
+                     </property>
+                     <property name="prefix">
+                      <string/>
+                     </property>
+                     <property name="suffix">
+                      <string> V</string>
+                     </property>
+                     <property name="decimals">
+                      <number>3</number>
+                     </property>
+                     <property name="maximum">
+                      <double>99.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="2">
+                    <widget class="QDoubleSpinBox" name="fBiasVoltDacVolt">
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="prefix">
+                      <string>~</string>
+                     </property>
+                     <property name="suffix">
+                      <string> V</string>
+                     </property>
+                     <property name="decimals">
+                      <number>3</number>
+                     </property>
+                     <property name="maximum">
+                      <double>99.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="1" rowspan="4">
+                    <widget class="Line" name="line_66">
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="2">
+                    <widget class="QSpinBox" name="fBiasVoltDac">
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="suffix">
+                      <string> DAC</string>
+                     </property>
+                     <property name="prefix">
+                      <string/>
+                     </property>
+                     <property name="maximum">
+                      <number>4095</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="2">
+                    <widget class="QPushButton" name="fBiasApplyChDac">
+                     <property name="text">
+                      <string>Set Ch</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="2">
+                    <widget class="QPushButton" name="fBiasApplyGlobalDac">
+                     <property name="text">
+                      <string>Set global</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="0">
+                    <widget class="QPushButton" name="fBiasApplyChVolt">
+                     <property name="text">
+                      <string>Set Ch</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="0">
+                    <widget class="QPushButton" name="fBiasApplyGlobalVolt">
+                     <property name="text">
+                      <string>Set global</string>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                </layout>
+               </item>
+               <item>
+                <widget class="Line" name="line_43">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                </widget>
+               </item>
+               <item>
+                <widget class="Line" name="line_42">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                </widget>
+               </item>
+               <item>
+                <widget class="Line" name="line_44">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                </widget>
+               </item>
+               <item>
+                <layout class="QVBoxLayout" name="verticalLayout_16">
+                 <property name="rightMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QPushButton" name="fBiasSetToZero">
+                   <property name="text">
+                    <string>Set all to 0</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="Line" name="line_39">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QPushButton" name="fBiasReset">
+                   <property name="text">
+                    <string>Over current reset</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="verticalSpacer">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Minimum</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>40</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                </layout>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="0" column="0">
+             <widget class="QFrame" name="frame_5">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>0</height>
+               </size>
+              </property>
+              <property name="frameShape">
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_82">
+               <property name="margin">
+                <number>3</number>
+               </property>
+               <item row="0" column="0">
+                <widget class="QCameraWidget" name="fBiasCamA" native="true">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="0">
+                <layout class="QHBoxLayout" name="horizontalLayout_43">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QLabel" name="label_227">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>Min</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fBiasCurrentMin">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="specialValueText">
+                    <string>auto</string>
+                   </property>
+                   <property name="suffix">
+                    <string> µA</string>
+                   </property>
+                   <property name="minimum">
+                    <number>-1</number>
+                   </property>
+                   <property name="maximum">
+                    <number>5000</number>
+                   </property>
+                   <property name="value">
+                    <number>0</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="horizontalSpacer_55">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_228">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>Max</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fBiasCurrentMax">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="specialValueText">
+                    <string>auto</string>
+                   </property>
+                   <property name="suffix">
+                    <string> µA</string>
+                   </property>
+                   <property name="minimum">
+                    <number>-1</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2000</number>
+                   </property>
+                   <property name="value">
+                    <number>110</number>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="0" column="1">
+             <widget class="QFrame" name="frame_6">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>0</height>
+               </size>
+              </property>
+              <property name="frameShape">
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_83">
+               <property name="margin">
+                <number>3</number>
+               </property>
+               <item row="0" column="0">
+                <widget class="QCameraWidget" name="fBiasCamV" native="true">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="0">
+                <layout class="QHBoxLayout" name="horizontalLayout_44">
+                 <property name="bottomMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QLabel" name="label_235">
+                   <property name="text">
+                    <string>Min</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fBiasVoltMin">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="specialValueText">
+                    <string>auto</string>
+                   </property>
+                   <property name="suffix">
+                    <string> V</string>
+                   </property>
+                   <property name="minimum">
+                    <number>-1</number>
+                   </property>
+                   <property name="maximum">
+                    <number>5000</number>
+                   </property>
+                   <property name="value">
+                    <number>0</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="horizontalSpacer_52">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_236">
+                   <property name="text">
+                    <string>Max</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fBiasVoltMax">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="specialValueText">
+                    <string>auto</string>
+                   </property>
+                   <property name="suffix">
+                    <string> V</string>
+                   </property>
+                   <property name="minimum">
+                    <number>-1</number>
+                   </property>
+                   <property name="maximum">
+                    <number>90</number>
+                   </property>
+                   <property name="value">
+                    <number>75</number>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+              </layout>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fFeedbackTab">
+       <attribute name="title">
+        <string>Feedback</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_94">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fFeedbackDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="minimumSize">
+           <size>
+            <width>1048</width>
+            <height>514</height>
+           </size>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="allowedAreas">
+           <set>Qt::AllDockWidgetAreas</set>
+          </property>
+          <property name="windowTitle">
+           <string>BIAS voltage feedback system</string>
+          </property>
+          <widget class="QWidget" name="fFeedbackWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_85" rowstretch="3,2">
+            <item row="0" column="0">
+             <widget class="QFrame" name="fFeedbackFrameLeft">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>450</width>
+                <height>450</height>
+               </size>
+              </property>
+              <property name="frameShape">
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_90">
+               <property name="margin">
+                <number>3</number>
+               </property>
+               <item row="0" column="0">
+                <widget class="QCameraWidget" name="fFeedbackDevCam" native="true">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="0">
+                <layout class="QHBoxLayout" name="horizontalLayout_54">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QLabel" name="label_256">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>Min</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fFeedbackDevMin">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="specialValueText">
+                    <string>auto</string>
+                   </property>
+                   <property name="suffix">
+                    <string> mV</string>
+                   </property>
+                   <property name="minimum">
+                    <number>-2001</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2000</number>
+                   </property>
+                   <property name="value">
+                    <number>-100</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="horizontalSpacer_62">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_257">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>Max</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fFeedbackDevMax">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="specialValueText">
+                    <string>auto</string>
+                   </property>
+                   <property name="suffix">
+                    <string> mV</string>
+                   </property>
+                   <property name="minimum">
+                    <number>-2001</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2000</number>
+                   </property>
+                   <property name="value">
+                    <number>100</number>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="0" column="1">
+             <widget class="QFrame" name="frame_8">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>450</width>
+                <height>450</height>
+               </size>
+              </property>
+              <property name="frameShape">
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_93">
+               <property name="margin">
+                <number>3</number>
+               </property>
+               <item row="0" column="0">
+                <widget class="QCameraWidget" name="fFeedbackCmdCam" native="true">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="0">
+                <layout class="QHBoxLayout" name="fFeedbackRefBox">
+                 <property name="bottomMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QLabel" name="label_258">
+                   <property name="text">
+                    <string>Min</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fFeedbackCmdMin">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="specialValueText">
+                    <string>auto</string>
+                   </property>
+                   <property name="suffix">
+                    <string> mV</string>
+                   </property>
+                   <property name="minimum">
+                    <number>-2001</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2000</number>
+                   </property>
+                   <property name="value">
+                    <number>-1000</number>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="horizontalSpacer_64">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_259">
+                   <property name="text">
+                    <string>Max</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fFeedbackCmdMax">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="specialValueText">
+                    <string>auto</string>
+                   </property>
+                   <property name="suffix">
+                    <string> mV</string>
+                   </property>
+                   <property name="minimum">
+                    <number>-2001</number>
+                   </property>
+                   <property name="maximum">
+                    <number>2000</number>
+                   </property>
+                   <property name="value">
+                    <number>1000</number>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="1" column="0">
+             <widget class="QFrame" name="fFeedbackCanvLeft">
+              <property name="frameShape">
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_92">
+               <item row="0" column="0">
+                <widget class="RootWidget" name="fFeedbackDev" native="true"/>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="1" column="1">
+             <widget class="QFrame" name="frame_10">
+              <property name="frameShape">
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_95">
+               <item row="0" column="0">
+                <widget class="RootWidget" name="fFeedbackCmd" native="true"/>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="0" column="2" rowspan="2">
+             <layout class="QVBoxLayout" name="verticalLayout_19">
+              <property name="rightMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QGroupBox" name="groupBox_23">
+                <property name="title">
+                 <string>Feedback</string>
+                </property>
+                <layout class="QGridLayout" name="gridLayout_99">
+                 <item row="0" column="0">
+                  <widget class="QLabel" name="label_247">
+                   <property name="text">
+                    <string>Voltage offset</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="0">
+                  <widget class="QDoubleSpinBox" name="fFeedbackOvervoltage">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="suffix">
+                    <string> V</string>
+                   </property>
+                   <property name="minimum">
+                    <double>-2.500000000000000</double>
+                   </property>
+                   <property name="maximum">
+                    <double>2.500000000000000</double>
+                   </property>
+                   <property name="singleStep">
+                    <double>0.100000000000000</double>
+                   </property>
+                   <property name="value">
+                    <double>1.100000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="4" column="0">
+                  <widget class="QPushButton" name="fFeedbackStart">
+                   <property name="text">
+                    <string>Start</string>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+              <item>
+               <widget class="QGroupBox" name="groupBox_25">
+                <property name="title">
+                 <string>Global</string>
+                </property>
+                <layout class="QGridLayout" name="gridLayout_101">
+                 <item row="2" column="0">
+                  <spacer name="verticalSpacer_85">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>10</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="0" column="0">
+                  <spacer name="verticalSpacer_78">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Fixed</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>10</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="1" column="0">
+                  <widget class="QPushButton" name="fFeedbackStop">
+                   <property name="text">
+                    <string>Stop</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="0">
+                  <widget class="QPushButton" name="fFeedbackCalibrate">
+                   <property name="text">
+                    <string>Calibrate</string>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+              <item>
+               <spacer name="verticalSpacer_77">
+                <property name="orientation">
+                 <enum>Qt::Vertical</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>20</width>
+                  <height>40</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+             </layout>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fFadTab">
+       <attribute name="title">
+        <string>FAD</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_41">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fFadDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="allowedAreas">
+           <set>Qt::AllDockWidgetAreas</set>
+          </property>
+          <property name="windowTitle">
+           <string>FAD overview</string>
+          </property>
+          <widget class="QWidget" name="fFadWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_53">
+            <item row="0" column="0">
+             <layout class="QHBoxLayout" name="horizontalLayout_32">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QGroupBox" name="groupBox_14">
+                <property name="title">
+                 <string>FAD Controls I</string>
+                </property>
+                <layout class="QGridLayout" name="gridLayout_43">
+                 <property name="leftMargin">
+                  <number>4</number>
+                 </property>
+                 <item row="1" column="0">
+                  <layout class="QGridLayout" name="gridLayout_38">
+                   <item row="2" column="1">
+                    <widget class="QPushButton" name="fFadLedPrescaler">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="0">
+                    <widget class="QLabel" name="label_99">
+                     <property name="text">
+                      <string>Prescaler</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="0">
+                    <widget class="QLabel" name="label_102">
+                     <property name="toolTip">
+                      <string>This is&lt;br&gt;a tool tip</string>
+                     </property>
+                     <property name="text">
+                      <string>Version</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="2">
+                    <widget class="QSpinBox" name="fFadPrescaler">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="2">
+                    <widget class="QDoubleSpinBox" name="fFadFwVersion">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="prefix">
+                      <string>V</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="3">
+                    <widget class="QSpinBox" name="fFadPrescalerCmd">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="0">
+                    <widget class="QLabel" name="label_145">
+                     <property name="text">
+                      <string>Run Number</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="2">
+                    <widget class="QSpinBox" name="fFadRunNumber">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="1">
+                    <widget class="QPushButton" name="fFadLedRunNumber">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="1">
+                    <spacer name="verticalSpacer_26">
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                     <property name="sizeType">
+                      <enum>QSizePolicy::Fixed</enum>
+                     </property>
+                     <property name="sizeHint" stdset="0">
+                      <size>
+                       <width>20</width>
+                       <height>5</height>
+                      </size>
+                     </property>
+                    </spacer>
+                   </item>
+                   <item row="1" column="3">
+                    <widget class="QSpinBox" name="fFadRunNumberCmd">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="2">
+                    <widget class="QLabel" name="label_128">
+                     <property name="text">
+                      <string>Min</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="3">
+                    <widget class="QLabel" name="label_129">
+                     <property name="text">
+                      <string>Max</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="2">
+                    <widget class="QDoubleSpinBox" name="fFadTempMin">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="3">
+                    <widget class="QDoubleSpinBox" name="fFadTempMax">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="8" column="2">
+                    <widget class="QDoubleSpinBox" name="fFadRefClockMin">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> MHz</string>
+                     </property>
+                     <property name="decimals">
+                      <number>3</number>
+                     </property>
+                     <property name="maximum">
+                      <double>70000000.000000000000000</double>
+                     </property>
+                     <property name="value">
+                      <double>0.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="8" column="3">
+                    <widget class="QDoubleSpinBox" name="fFadRefClockMax">
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> MHz</string>
+                     </property>
+                     <property name="decimals">
+                      <number>3</number>
+                     </property>
+                     <property name="maximum">
+                      <double>70000000.000000000000000</double>
+                     </property>
+                     <property name="value">
+                      <double>0.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="0">
+                    <widget class="QLabel" name="label_111">
+                     <property name="text">
+                      <string>Temperature</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="1">
+                    <widget class="QPushButton" name="fFadLedTemp">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="8" column="0">
+                    <widget class="QLabel" name="label_101">
+                     <property name="text">
+                      <string>Reference clock</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="8" column="1">
+                    <widget class="QPushButton" name="fFadLedRefClock">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="9" column="1">
+                    <widget class="QPushButton" name="fFadLedRefClockTooLow">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="9" column="0">
+                    <widget class="QLabel" name="label_103">
+                     <property name="text">
+                      <string>  --  underflow</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="10" column="0">
+                    <widget class="QLabel" name="label_92">
+                     <property name="text">
+                      <string>PLL lock</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="10" column="1">
+                    <widget class="QPushButton" name="fFadLedPllLock">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="2">
+                    <widget class="QSpinBox" name="fFadRoi">
+                     <property name="enabled">
+                      <bool>false</bool>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="minimum">
+                      <number>-1</number>
+                     </property>
+                     <property name="maximum">
+                      <number>1024</number>
+                     </property>
+                     <property name="value">
+                      <number>-1</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="3">
+                    <widget class="QSpinBox" name="fFadRoiCmd">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>1024</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="2">
+                    <widget class="QSpinBox" name="fFadRoiCh9">
+                     <property name="enabled">
+                      <bool>false</bool>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="minimum">
+                      <number>-1</number>
+                     </property>
+                     <property name="maximum">
+                      <number>1024</number>
+                     </property>
+                     <property name="value">
+                      <number>-1</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="3">
+                    <widget class="QSpinBox" name="fFadRoiCh9Cmd">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>1024</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="0" colspan="2">
+                    <widget class="QLabel" name="label_161">
+                     <property name="text">
+                      <string>(ch9)</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="1">
+                    <widget class="QPushButton" name="fFadLedFwVersion">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="0" colspan="2">
+                    <widget class="QLabel" name="label_100">
+                     <property name="text">
+                      <string>Region of interest</string>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="0" column="0">
+                  <widget class="Line" name="line_13">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+              <item>
+               <widget class="QGroupBox" name="groupBox_18">
+                <property name="title">
+                 <string>Memory</string>
+                </property>
+                <layout class="QGridLayout" name="gridLayout_59">
+                 <item row="0" column="0">
+                  <widget class="Line" name="line_19">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="0">
+                  <layout class="QGridLayout" name="gridLayout_49">
+                   <item row="3" column="1">
+                    <spacer name="verticalSpacer_30">
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                     <property name="sizeType">
+                      <enum>QSizePolicy::Fixed</enum>
+                     </property>
+                     <property name="sizeHint" stdset="0">
+                      <size>
+                       <width>20</width>
+                       <height>5</height>
+                      </size>
+                     </property>
+                    </spacer>
+                   </item>
+                   <item row="5" column="0">
+                    <widget class="QLabel" name="label_140">
+                     <property name="text">
+                      <string>Incompl.</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="1">
+                    <widget class="QSpinBox" name="fFadBufferMax">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> MB</string>
+                     </property>
+                     <property name="maximum">
+                      <number>99999</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="0" colspan="2">
+                    <widget class="QProgressBar" name="fFadBuffer">
+                     <property name="value">
+                      <number>0</number>
+                     </property>
+                     <property name="format">
+                      <string>%p%</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="0">
+                    <widget class="QLabel" name="label_105">
+                     <property name="text">
+                      <string>Allocated</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="0">
+                    <spacer name="verticalSpacer_29">
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                     <property name="sizeType">
+                      <enum>QSizePolicy::Fixed</enum>
+                     </property>
+                     <property name="sizeHint" stdset="0">
+                      <size>
+                       <width>20</width>
+                       <height>5</height>
+                      </size>
+                     </property>
+                    </spacer>
+                   </item>
+                   <item row="6" column="1">
+                    <widget class="QSpinBox" name="fFadEvtBufEvt">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> evts</string>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="0">
+                    <widget class="QLabel" name="label_139">
+                     <property name="text">
+                      <string>Complete</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="10" column="0">
+                    <widget class="QLabel" name="label_152">
+                     <property name="text">
+                      <string>Write</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="11" column="0">
+                    <widget class="QLabel" name="label_153">
+                     <property name="text">
+                      <string>Process</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="9" column="0">
+                    <widget class="QLabel" name="label_154">
+                     <property name="text">
+                      <string>Check</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="9" column="1">
+                    <widget class="QSpinBox" name="fFadEvtCheck">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> evts</string>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="10" column="1">
+                    <widget class="QSpinBox" name="fFadEvtWrite">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> evts</string>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="11" column="1">
+                    <widget class="QSpinBox" name="fFadEvtProc">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> evts</string>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="1">
+                    <widget class="QSpinBox" name="fFadEvtBufNew">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> evts</string>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="1">
+                    <widget class="QLabel" name="label_164">
+                     <property name="text">
+                      <string>Buffer contents</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="8" column="1">
+                    <widget class="QLabel" name="label_142">
+                     <property name="text">
+                      <string>Queues</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="3" column="0">
+                  <spacer name="verticalSpacer_35">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>40</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+              <item>
+               <widget class="QGroupBox" name="groupBox_10">
+                <property name="title">
+                 <string>Statistics</string>
+                </property>
+                <layout class="QGridLayout" name="gridLayout_71">
+                 <item row="1" column="0">
+                  <layout class="QVBoxLayout" name="verticalLayout_12">
+                   <property name="rightMargin">
+                    <number>0</number>
+                   </property>
+                   <item>
+                    <widget class="QLabel" name="label_185">
+                     <property name="text">
+                      <string>Run number</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <layout class="QGridLayout" name="gridLayout_70">
+                     <property name="topMargin">
+                      <number>0</number>
+                     </property>
+                     <item row="1" column="0">
+                      <widget class="QSpinBox" name="fFadRunNoCur">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="specialValueText">
+                        <string>n/a</string>
+                       </property>
+                       <property name="maximum">
+                        <number>9999</number>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="1" column="1">
+                      <widget class="QSpinBox" name="fFadRunNoNext">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="maximum">
+                        <number>9999</number>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="0">
+                      <widget class="QLabel" name="label_190">
+                       <property name="text">
+                        <string>Current</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="1">
+                      <widget class="QLabel" name="label_191">
+                       <property name="text">
+                        <string>Next</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                    </layout>
+                   </item>
+                   <item>
+                    <widget class="Line" name="line_56">
+                     <property name="orientation">
+                      <enum>Qt::Horizontal</enum>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <widget class="QLabel" name="label_113">
+                     <property name="text">
+                      <string>Last</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <layout class="QGridLayout" name="gridLayout_60">
+                     <property name="topMargin">
+                      <number>0</number>
+                     </property>
+                     <item row="0" column="0">
+                      <widget class="QLabel" name="label_115">
+                       <property name="text">
+                        <string>Opened</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="1">
+                      <widget class="QLabel" name="label_117">
+                       <property name="text">
+                        <string>Closed</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="1" column="0">
+                      <widget class="QSpinBox" name="fEvtBldLastOpened">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="maximum">
+                        <number>9999</number>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="1" column="1">
+                      <widget class="QSpinBox" name="fEvtBldLastClosed">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="maximum">
+                        <number>9999</number>
+                       </property>
+                      </widget>
+                     </item>
+                    </layout>
+                   </item>
+                   <item>
+                    <widget class="Line" name="line_57">
+                     <property name="orientation">
+                      <enum>Qt::Horizontal</enum>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <widget class="QLabel" name="label_186">
+                     <property name="text">
+                      <string>Event counter</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <widget class="QSpinBox" name="fFadEvtCounter">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <widget class="QLabel" name="label_109">
+                     <property name="text">
+                      <string>Event ID</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <widget class="QSpinBox" name="fEvtBldEventId">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <widget class="QLabel" name="label_108">
+                     <property name="text">
+                      <string>Trigger ID</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <widget class="QSpinBox" name="fEvtBldTriggerId">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="0" column="0">
+                  <widget class="Line" name="line_25">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+              <item>
+               <layout class="QVBoxLayout" name="verticalLayout_21">
+                <property name="rightMargin">
+                 <number>0</number>
+                </property>
+                <item>
+                 <widget class="QGroupBox" name="groupBox_11">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="minimumSize">
+                   <size>
+                    <width>307</width>
+                    <height>161</height>
+                   </size>
+                  </property>
+                  <property name="maximumSize">
+                   <size>
+                    <width>359</width>
+                    <height>16777215</height>
+                   </size>
+                  </property>
+                  <property name="title">
+                   <string>Connection</string>
+                  </property>
+                  <layout class="QGridLayout" name="gridLayout_35">
+                   <item row="3" column="0" colspan="2">
+                    <layout class="QGridLayout" name="fFadLedLayout" rowstretch="0,0,0,0,0" columnstretch="0,0,0,0,0,0,0,0,0,0,0">
+                     <property name="margin">
+                      <number>4</number>
+                     </property>
+                     <item row="1" column="1">
+                      <widget class="QPushButton" name="fFadLEDPrototype">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="sizePolicy">
+                        <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                         <horstretch>0</horstretch>
+                         <verstretch>0</verstretch>
+                        </sizepolicy>
+                       </property>
+                       <property name="maximumSize">
+                        <size>
+                         <width>18</width>
+                         <height>16777215</height>
+                        </size>
+                       </property>
+                       <property name="text">
+                        <string/>
+                       </property>
+                       <property name="icon">
+                        <iconset resource="design.qrc">
+                         <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                       </property>
+                       <property name="iconSize">
+                        <size>
+                         <width>16</width>
+                         <height>16</height>
+                        </size>
+                       </property>
+                       <property name="checkable">
+                        <bool>false</bool>
+                       </property>
+                       <property name="flat">
+                        <bool>true</bool>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="1" column="0">
+                      <widget class="QLabel" name="label_71">
+                       <property name="text">
+                        <string>Crate #0</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="2" column="0">
+                      <widget class="QLabel" name="label_73">
+                       <property name="text">
+                        <string>Crate #1</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="3" column="0">
+                      <widget class="QLabel" name="label_74">
+                       <property name="text">
+                        <string>Crate #2</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="4" column="0">
+                      <widget class="QLabel" name="label_75">
+                       <property name="text">
+                        <string>Crate #3</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="1">
+                      <widget class="QLabel" name="label_76">
+                       <property name="text">
+                        <string>0</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="2">
+                      <widget class="QLabel" name="label_77">
+                       <property name="text">
+                        <string>1</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="3">
+                      <widget class="QLabel" name="label_78">
+                       <property name="text">
+                        <string>2</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="4">
+                      <widget class="QLabel" name="label_79">
+                       <property name="text">
+                        <string>3</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="5">
+                      <widget class="QLabel" name="label_80">
+                       <property name="text">
+                        <string>4</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="6">
+                      <widget class="QLabel" name="label_81">
+                       <property name="text">
+                        <string>5</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="7">
+                      <widget class="QLabel" name="label_82">
+                       <property name="text">
+                        <string>6</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="8">
+                      <widget class="QLabel" name="label_83">
+                       <property name="text">
+                        <string>7</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="9">
+                      <widget class="QLabel" name="label_84">
+                       <property name="text">
+                        <string>8</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="10">
+                      <widget class="QLabel" name="label_85">
+                       <property name="text">
+                        <string>9</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                    </layout>
+                   </item>
+                   <item row="0" column="0" colspan="2">
+                    <widget class="Line" name="line_14">
+                     <property name="orientation">
+                      <enum>Qt::Horizontal</enum>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="1">
+                    <widget class="QSpinBox" name="fFadEvtConn">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> boards</string>
+                     </property>
+                     <property name="maximum">
+                      <number>1000</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="0">
+                    <widget class="QLabel" name="label_163">
+                     <property name="text">
+                      <string>Event builder connections</string>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QGroupBox" name="groupBox_15">
+                  <property name="title">
+                   <string>Network</string>
+                  </property>
+                  <layout class="QGridLayout" name="gridLayout_51">
+                   <item row="0" column="0">
+                    <widget class="QLabel" name="label_188">
+                     <property name="text">
+                      <string>Ethernet transmission rate</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="0">
+                    <widget class="QLabel" name="label_165">
+                     <property name="text">
+                      <string>per board</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="1">
+                    <widget class="QSpinBox" name="fFadEthernetRateTot">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> kB/s</string>
+                     </property>
+                     <property name="maximum">
+                      <number>1000000</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="1">
+                    <widget class="QSpinBox" name="fFadEthernetRateAvg">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> kB/s</string>
+                     </property>
+                     <property name="maximum">
+                      <number>1000000</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="0">
+                    <widget class="QLabel" name="label_187">
+                     <property name="text">
+                      <string>Transmission rate</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="1">
+                    <widget class="QSpinBox" name="fFadTransmission">
+                     <property name="enabled">
+                      <bool>false</bool>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> evt/s</string>
+                     </property>
+                     <property name="maximum">
+                      <number>99999</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="0">
+                    <widget class="QLabel" name="label_189">
+                     <property name="text">
+                      <string>Output buffer release rate</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="1">
+                    <widget class="QSpinBox" name="fFadWriteRate">
+                     <property name="enabled">
+                      <bool>false</bool>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> evt/s</string>
+                     </property>
+                     <property name="maximum">
+                      <number>99999</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="0" colspan="2">
+                    <widget class="Line" name="line_22">
+                     <property name="orientation">
+                      <enum>Qt::Horizontal</enum>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </widget>
+                </item>
+               </layout>
+              </item>
+             </layout>
+            </item>
+            <item row="1" column="0">
+             <layout class="QHBoxLayout" name="horizontalLayout_27">
+              <property name="leftMargin">
+               <number>0</number>
+              </property>
+              <property name="rightMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QGroupBox" name="groupBox_12">
+                <property name="title">
+                 <string>FAD DNAs</string>
+                </property>
+                <layout class="QGridLayout" name="gridLayout_39">
+                 <item row="1" column="0">
+                  <widget class="QTextEdit" name="fFadDNA"/>
+                 </item>
+                 <item row="0" column="0">
+                  <widget class="Line" name="line_62">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+              <item>
+               <widget class="QGroupBox" name="groupBox_9">
+                <property name="title">
+                 <string>DACs</string>
+                </property>
+                <layout class="QGridLayout" name="gridLayout_63">
+                 <item row="1" column="0">
+                  <layout class="QGridLayout" name="gridLayout_62">
+                   <property name="rightMargin">
+                    <number>0</number>
+                   </property>
+                   <item row="0" column="2">
+                    <widget class="QSpinBox" name="fFadDac0">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="2">
+                    <widget class="QSpinBox" name="fFadDac1">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="2">
+                    <widget class="QSpinBox" name="fFadDac2">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="2">
+                    <widget class="QSpinBox" name="fFadDac3">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="2">
+                    <widget class="QSpinBox" name="fFadDac4">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="2">
+                    <widget class="QSpinBox" name="fFadDac5">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="2">
+                    <widget class="QSpinBox" name="fFadDac6">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="3">
+                    <widget class="QSpinBox" name="fFadDac0Cmd">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="3">
+                    <widget class="QSpinBox" name="fFadDac1Cmd">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="3">
+                    <widget class="QSpinBox" name="fFadDac2Cmd">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="3">
+                    <widget class="QSpinBox" name="fFadDac3Cmd">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="3">
+                    <widget class="QSpinBox" name="fFadDac4Cmd">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="3">
+                    <widget class="QSpinBox" name="fFadDac5Cmd">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="3">
+                    <widget class="QSpinBox" name="fFadDac6Cmd">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="2">
+                    <widget class="QSpinBox" name="fFadDac7">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="3">
+                    <widget class="QSpinBox" name="fFadDac7Cmd">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="maximum">
+                      <number>65535</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="0">
+                    <widget class="QLabel" name="label_162">
+                     <property name="text">
+                      <string>DAC0</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="0">
+                    <widget class="QLabel" name="label_166">
+                     <property name="text">
+                      <string>DAC1</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="0">
+                    <widget class="QLabel" name="label_167">
+                     <property name="text">
+                      <string>DAC2</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="0">
+                    <widget class="QLabel" name="label_168">
+                     <property name="text">
+                      <string>DAC3</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="0">
+                    <widget class="QLabel" name="label_169">
+                     <property name="text">
+                      <string>DAC4</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="0">
+                    <widget class="QLabel" name="label_170">
+                     <property name="text">
+                      <string>DAC5</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="0">
+                    <widget class="QLabel" name="label_171">
+                     <property name="text">
+                      <string>DAC6</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="0">
+                    <widget class="QLabel" name="label_172">
+                     <property name="text">
+                      <string>DAC7</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="1">
+                    <widget class="QPushButton" name="fFadLedDac1">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="1">
+                    <widget class="QPushButton" name="fFadLedDac2">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="1">
+                    <widget class="QPushButton" name="fFadLedDac3">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="1">
+                    <widget class="QPushButton" name="fFadLedDac4">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="1">
+                    <widget class="QPushButton" name="fFadLedDac5">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="1">
+                    <widget class="QPushButton" name="fFadLedDac6">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="1">
+                    <widget class="QPushButton" name="fFadLedDac7">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="1">
+                    <widget class="QPushButton" name="fFadLedDac0">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="2" column="0">
+                  <spacer name="verticalSpacer_34">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>40</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="0" column="0">
+                  <widget class="Line" name="line_61">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+              <item>
+               <layout class="QVBoxLayout" name="verticalLayout_7">
+                <property name="leftMargin">
+                 <number>0</number>
+                </property>
+                <item>
+                 <widget class="QGroupBox" name="groupBox_28">
+                  <property name="title">
+                   <string>File format</string>
+                  </property>
+                  <layout class="QGridLayout" name="gridLayout_103">
+                   <item row="1" column="1">
+                    <widget class="QPushButton" name="fFadButtonFileFormatNone">
+                     <property name="text">
+                      <string>None</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="1">
+                    <widget class="QPushButton" name="fFadButtonFileFormatDebug">
+                     <property name="text">
+                      <string>Debug</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="1">
+                    <widget class="QPushButton" name="fFadButtonFileFormatFits">
+                     <property name="text">
+                      <string>FITS</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="1">
+                    <widget class="QPushButton" name="fFadButtonFileFormatRaw">
+                     <property name="text">
+                      <string>Raw</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="0">
+                    <widget class="QPushButton" name="fFadLedFileFormatNone">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="0">
+                    <widget class="QPushButton" name="fFadLedFileFormatDebug">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="0">
+                    <widget class="QPushButton" name="fFadLedFileFormatFits">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="0">
+                    <widget class="QPushButton" name="fFadLedFileFormatRaw">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="0" colspan="2">
+                    <widget class="Line" name="line_58">
+                     <property name="orientation">
+                      <enum>Qt::Horizontal</enum>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="1">
+                    <widget class="QPushButton" name="fDrsCalibStart2">
+                     <property name="text">
+                      <string>DRS Cal</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="9" column="1">
+                    <widget class="QSpinBox" name="fDrsCalibBaseline2">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="specialValueText">
+                      <string>n/a</string>
+                     </property>
+                     <property name="prefix">
+                      <string/>
+                     </property>
+                     <property name="minimum">
+                      <number>-1</number>
+                     </property>
+                     <property name="maximum">
+                      <number>9999</number>
+                     </property>
+                     <property name="value">
+                      <number>-1</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="10" column="1">
+                    <widget class="QSpinBox" name="fDrsCalibGain2">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="specialValueText">
+                      <string>n/a</string>
+                     </property>
+                     <property name="prefix">
+                      <string/>
+                     </property>
+                     <property name="minimum">
+                      <number>-1</number>
+                     </property>
+                     <property name="maximum">
+                      <number>9999</number>
+                     </property>
+                     <property name="value">
+                      <number>-1</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="0">
+                    <widget class="QPushButton" name="fFadLedFileFormatCalib">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="9" column="0">
+                    <widget class="QPushButton" name="fFadLedDrsBaseline">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="10" column="0">
+                    <widget class="QPushButton" name="fFadLedDrsGain">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="11" column="1">
+                    <widget class="QSpinBox" name="fDrsCalibTrgOffset2">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="specialValueText">
+                      <string>n/a</string>
+                     </property>
+                     <property name="prefix">
+                      <string/>
+                     </property>
+                     <property name="minimum">
+                      <number>-1</number>
+                     </property>
+                     <property name="maximum">
+                      <number>9999</number>
+                     </property>
+                     <property name="value">
+                      <number>-1</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="11" column="0">
+                    <widget class="QPushButton" name="fFadLedDrsTrgOff">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="12" column="1">
+                    <widget class="QPushButton" name="fDrsCalibReset2">
+                     <property name="text">
+                      <string>Reset</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="13" column="1">
+                    <widget class="QSpinBox" name="fDrsCalibROI2">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="specialValueText">
+                      <string>n/a</string>
+                     </property>
+                     <property name="prefix">
+                      <string/>
+                     </property>
+                     <property name="minimum">
+                      <number>-1</number>
+                     </property>
+                     <property name="maximum">
+                      <number>9999</number>
+                     </property>
+                     <property name="value">
+                      <number>-1</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="8" column="0" colspan="2">
+                    <widget class="Line" name="line_59">
+                     <property name="orientation">
+                      <enum>Qt::Horizontal</enum>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="0">
+                    <widget class="QPushButton" name="fFadLedFileFormatZFits">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="1">
+                    <widget class="QPushButton" name="fFadButtonFileFormatZFits">
+                     <property name="text">
+                      <string>ZFITS</string>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </widget>
+                </item>
+               </layout>
+              </item>
+              <item>
+               <widget class="QGroupBox" name="groupBox_13">
+                <property name="title">
+                 <string>FAD Controls II</string>
+                </property>
+                <layout class="QGridLayout" name="gridLayout_42">
+                 <item row="2" column="0">
+                  <layout class="QGridLayout" name="gridLayout_37" rowstretch="0,0,0,0,0,0,0,0,0,0,0">
+                   <item row="0" column="2">
+                    <widget class="QPushButton" name="fFadSingleTrigger">
+                     <property name="text">
+                      <string>Trigger</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="3">
+                    <widget class="QPushButton" name="fFadResetTriggerId">
+                     <property name="text">
+                      <string>Reset Evt ID</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="2">
+                    <widget class="QPushButton" name="fFadSocket17">
+                     <property name="text">
+                      <string>Sock 1-7</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="1">
+                    <widget class="QPushButton" name="fFadSocket0">
+                     <property name="text">
+                      <string>Sock 0</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="2">
+                    <widget class="QPushButton" name="fFadTriggerLineOff">
+                     <property name="text">
+                      <string>off</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="2">
+                    <widget class="QPushButton" name="fFadContTriggerOff">
+                     <property name="text">
+                      <string>off</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="2">
+                    <widget class="QPushButton" name="fFadBusyOnOff">
+                     <property name="text">
+                      <string>off</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="2">
+                    <widget class="QPushButton" name="fFadBusyOffOff">
+                     <property name="text">
+                      <string>off</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="2">
+                    <widget class="QPushButton" name="fFadDrsOff">
+                     <property name="text">
+                      <string>off</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="2">
+                    <widget class="QPushButton" name="fFadDwriteOff">
+                     <property name="text">
+                      <string>off</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="3">
+                    <widget class="QLabel" name="label_137">
+                     <property name="text">
+                      <string>Data Sockets</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="3">
+                    <widget class="QLabel" name="label_134">
+                     <property name="text">
+                      <string>Trigger line</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="3">
+                    <widget class="QLabel" name="label_106">
+                     <property name="text">
+                      <string>Continous trigger</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="3">
+                    <widget class="QLabel" name="label_104">
+                     <property name="text">
+                      <string>Constant busy on</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="3">
+                    <widget class="QLabel" name="label_180">
+                     <property name="text">
+                      <string>Constant busy off</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="3">
+                    <widget class="QLabel" name="label_93">
+                     <property name="text">
+                      <string>DRS enable</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="3">
+                    <widget class="QLabel" name="label_94">
+                     <property name="text">
+                      <string>Write enable</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="8" column="3">
+                    <widget class="QLabel" name="label_95">
+                     <property name="text">
+                      <string>DCM locked</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="9" column="3">
+                    <widget class="QLabel" name="label_96">
+                     <property name="text">
+                      <string>DCM ready</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="0">
+                    <widget class="QPushButton" name="fFadLedSocket">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="0">
+                    <widget class="QPushButton" name="fFadLedTriggerLine">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="0">
+                    <widget class="QPushButton" name="fFadLedContTrigger">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="0">
+                    <widget class="QPushButton" name="fFadLedBusyOn">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="0">
+                    <widget class="QPushButton" name="fFadLedBusyOff">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="0">
+                    <widget class="QPushButton" name="fFadLedDrsEnabled">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="0">
+                    <widget class="QPushButton" name="fFadLedDrsWrite">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="8" column="0">
+                    <widget class="QPushButton" name="fFadLedDcmLocked">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="9" column="0">
+                    <widget class="QPushButton" name="fFadLedDcmReady">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="1">
+                    <widget class="QPushButton" name="fFadTriggerLineOn">
+                     <property name="text">
+                      <string>on</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="1">
+                    <widget class="QPushButton" name="fFadContTriggerOn">
+                     <property name="text">
+                      <string>on</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="1">
+                    <widget class="QPushButton" name="fFadBusyOnOn">
+                     <property name="text">
+                      <string>on</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="1">
+                    <widget class="QPushButton" name="fFadBusyOffOn">
+                     <property name="text">
+                      <string>on</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="1">
+                    <widget class="QPushButton" name="fFadDrsOn">
+                     <property name="text">
+                      <string>on</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="7" column="1">
+                    <widget class="QPushButton" name="fFadDwriteOn">
+                     <property name="text">
+                      <string>on</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="10" column="0">
+                    <widget class="QPushButton" name="fFadLedSpiSclk">
+                     <property name="enabled">
+                      <bool>true</bool>
+                     </property>
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>18</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string/>
+                     </property>
+                     <property name="icon">
+                      <iconset resource="design.qrc">
+                       <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                     </property>
+                     <property name="iconSize">
+                      <size>
+                       <width>16</width>
+                       <height>16</height>
+                      </size>
+                     </property>
+                     <property name="checkable">
+                      <bool>false</bool>
+                     </property>
+                     <property name="flat">
+                      <bool>true</bool>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="10" column="3">
+                    <widget class="QLabel" name="label_97">
+                     <property name="text">
+                      <string>SPI serial clock</string>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="0" column="0">
+                  <widget class="Line" name="line_15">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="0">
+                  <spacer name="verticalSpacer_36">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>40</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+             </layout>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fAdcTab">
+       <attribute name="title">
+        <string>ADC</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_57">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fAdcDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="windowTitle">
+           <string>Raw data display</string>
+          </property>
+          <widget class="QWidget" name="fAdcWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_46">
+            <item row="0" column="0">
+             <widget class="QFrame" name="frame">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="frameShape">
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_52">
+               <property name="margin">
+                <number>3</number>
+               </property>
+               <item row="0" column="0">
+                <widget class="RootWidget" name="fAdcDataCanv" native="true"/>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="0" column="1">
+             <layout class="QVBoxLayout" name="verticalLayout_6">
+              <property name="rightMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QLabel" name="label_148">
+                <property name="text">
+                 <string>Crate</string>
+                </property>
+                <property name="alignment">
+                 <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QSpinBox" name="fAdcCrate">
+                <property name="alignment">
+                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                </property>
+                <property name="maximum">
+                 <number>3</number>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QLabel" name="label_149">
+                <property name="text">
+                 <string>Board</string>
+                </property>
+                <property name="alignment">
+                 <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QSpinBox" name="fAdcBoard">
+                <property name="alignment">
+                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                </property>
+                <property name="maximum">
+                 <number>9</number>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QLabel" name="label_138">
+                <property name="text">
+                 <string>Chip</string>
+                </property>
+                <property name="alignment">
+                 <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QSpinBox" name="fAdcChip">
+                <property name="alignment">
+                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                </property>
+                <property name="minimum">
+                 <number>0</number>
+                </property>
+                <property name="maximum">
+                 <number>3</number>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QLabel" name="label_175">
+                <property name="text">
+                 <string>Channel</string>
+                </property>
+                <property name="alignment">
+                 <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QSpinBox" name="fAdcChannel">
+                <property name="alignment">
+                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                </property>
+                <property name="maximum">
+                 <number>8</number>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <spacer name="verticalSpacer_33">
+                <property name="orientation">
+                 <enum>Qt::Vertical</enum>
+                </property>
+                <property name="sizeType">
+                 <enum>QSizePolicy::Fixed</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>20</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QCheckBox" name="fAdcStop">
+                <property name="text">
+                 <string>Stop</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <spacer name="verticalSpacer_51">
+                <property name="orientation">
+                 <enum>Qt::Vertical</enum>
+                </property>
+                <property name="sizeType">
+                 <enum>QSizePolicy::Fixed</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>20</width>
+                  <height>10</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QRadioButton" name="fAdcManualScale">
+                <property name="text">
+                 <string>Manual scale</string>
+                </property>
+                <property name="checked">
+                 <bool>true</bool>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QRadioButton" name="fAdcDynamicScale">
+                <property name="text">
+                 <string>Dynamic scale</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QRadioButton" name="fAdcAutoScale">
+                <property name="text">
+                 <string>Auto min/max</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <spacer name="verticalSpacer_55">
+                <property name="orientation">
+                 <enum>Qt::Vertical</enum>
+                </property>
+                <property name="sizeType">
+                 <enum>QSizePolicy::Fixed</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>20</width>
+                  <height>10</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QCheckBox" name="fAdcPersistent">
+                <property name="text">
+                 <string>Persistent</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QCheckBox" name="fAdcPhysical">
+                <property name="text">
+                 <string>Physical</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <spacer name="verticalSpacer_32">
+                <property name="orientation">
+                 <enum>Qt::Vertical</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>20</width>
+                  <height>40</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QLabel" name="label_184">
+                <property name="text">
+                 <string>DRS Calibration</string>
+                </property>
+                <property name="alignment">
+                 <set>Qt::AlignCenter</set>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="Line" name="line_24">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fDrsCalibStart">
+                <property name="text">
+                 <string>Start</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QLabel" name="label_183">
+                <property name="text">
+                 <string>Baseline</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <layout class="QHBoxLayout" name="horizontalLayout_40">
+                <property name="topMargin">
+                 <number>0</number>
+                </property>
+                <item>
+                 <widget class="QCheckBox" name="fDrsCalibBaselineOn">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="minimumSize">
+                   <size>
+                    <width>0</width>
+                    <height>0</height>
+                   </size>
+                  </property>
+                  <property name="maximumSize">
+                   <size>
+                    <width>20</width>
+                    <height>16777215</height>
+                   </size>
+                  </property>
+                  <property name="text">
+                   <string/>
+                  </property>
+                  <property name="checked">
+                   <bool>true</bool>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QSpinBox" name="fDrsCalibBaseline">
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                  <property name="readOnly">
+                   <bool>true</bool>
+                  </property>
+                  <property name="buttonSymbols">
+                   <enum>QAbstractSpinBox::NoButtons</enum>
+                  </property>
+                  <property name="specialValueText">
+                   <string>n/a</string>
+                  </property>
+                  <property name="prefix">
+                   <string/>
+                  </property>
+                  <property name="minimum">
+                   <number>-1</number>
+                  </property>
+                  <property name="maximum">
+                   <number>9999</number>
+                  </property>
+                  <property name="value">
+                   <number>-1</number>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </item>
+              <item>
+               <widget class="QLabel" name="label_182">
+                <property name="text">
+                 <string>Gain</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <layout class="QHBoxLayout" name="horizontalLayout_41">
+                <property name="topMargin">
+                 <number>0</number>
+                </property>
+                <item>
+                 <widget class="QCheckBox" name="fDrsCalibGainOn">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="minimumSize">
+                   <size>
+                    <width>0</width>
+                    <height>0</height>
+                   </size>
+                  </property>
+                  <property name="maximumSize">
+                   <size>
+                    <width>20</width>
+                    <height>16777215</height>
+                   </size>
+                  </property>
+                  <property name="text">
+                   <string/>
+                  </property>
+                  <property name="checked">
+                   <bool>true</bool>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QSpinBox" name="fDrsCalibGain">
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                  <property name="readOnly">
+                   <bool>true</bool>
+                  </property>
+                  <property name="buttonSymbols">
+                   <enum>QAbstractSpinBox::NoButtons</enum>
+                  </property>
+                  <property name="specialValueText">
+                   <string>n/a</string>
+                  </property>
+                  <property name="prefix">
+                   <string/>
+                  </property>
+                  <property name="minimum">
+                   <number>-1</number>
+                  </property>
+                  <property name="maximum">
+                   <number>9999</number>
+                  </property>
+                  <property name="value">
+                   <number>-1</number>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </item>
+              <item>
+               <widget class="QLabel" name="label_181">
+                <property name="text">
+                 <string>Trigger Offset</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <layout class="QHBoxLayout" name="horizontalLayout_42">
+                <property name="topMargin">
+                 <number>0</number>
+                </property>
+                <item>
+                 <widget class="QCheckBox" name="fDrsCalibTrgOffsetOn">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="minimumSize">
+                   <size>
+                    <width>0</width>
+                    <height>0</height>
+                   </size>
+                  </property>
+                  <property name="maximumSize">
+                   <size>
+                    <width>20</width>
+                    <height>16777215</height>
+                   </size>
+                  </property>
+                  <property name="text">
+                   <string/>
+                  </property>
+                  <property name="checked">
+                   <bool>true</bool>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QSpinBox" name="fDrsCalibTrgOffset">
+                  <property name="alignment">
+                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                  </property>
+                  <property name="readOnly">
+                   <bool>true</bool>
+                  </property>
+                  <property name="buttonSymbols">
+                   <enum>QAbstractSpinBox::NoButtons</enum>
+                  </property>
+                  <property name="specialValueText">
+                   <string>n/a</string>
+                  </property>
+                  <property name="prefix">
+                   <string/>
+                  </property>
+                  <property name="minimum">
+                   <number>-1</number>
+                  </property>
+                  <property name="maximum">
+                   <number>9999</number>
+                  </property>
+                  <property name="value">
+                   <number>-1</number>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fDrsCalibReset">
+                <property name="text">
+                 <string>Reset</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QLabel" name="label_98">
+                <property name="text">
+                 <string>Region of interest</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QSpinBox" name="fDrsCalibROI">
+                <property name="alignment">
+                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                </property>
+                <property name="readOnly">
+                 <bool>true</bool>
+                </property>
+                <property name="buttonSymbols">
+                 <enum>QAbstractSpinBox::NoButtons</enum>
+                </property>
+                <property name="specialValueText">
+                 <string>n/a</string>
+                </property>
+                <property name="prefix">
+                 <string/>
+                </property>
+                <property name="minimum">
+                 <number>-1</number>
+                </property>
+                <property name="maximum">
+                 <number>9999</number>
+                </property>
+                <property name="value">
+                 <number>-1</number>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fEventTab">
+       <attribute name="title">
+        <string>Events</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_68">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fEventDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="windowTitle">
+           <string>Raw data display</string>
+          </property>
+          <widget class="QWidget" name="fEventWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_65">
+            <item row="0" column="0">
+             <widget class="QFrame" name="frame_3">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="frameShape">
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <property name="midLineWidth">
+               <number>0</number>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_67">
+               <property name="margin">
+                <number>4</number>
+               </property>
+               <property name="horizontalSpacing">
+                <number>-1</number>
+               </property>
+               <item row="0" column="0">
+                <widget class="QCameraWidget" name="fEventCanv1" native="true"/>
+               </item>
+               <item row="0" column="1">
+                <widget class="QCameraWidget" name="fEventCanv2" native="true"/>
+               </item>
+               <item row="2" column="0">
+                <widget class="QCameraWidget" name="fEventCanv3" native="true"/>
+               </item>
+               <item row="2" column="1">
+                <widget class="QCameraWidget" name="fEventCanv4" native="true"/>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="0" column="1">
+             <layout class="QVBoxLayout" name="verticalLayout_10">
+              <property name="rightMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QCheckBox" name="fAdcEnable">
+                <property name="enabled">
+                 <bool>false</bool>
+                </property>
+                <property name="text">
+                 <string>Enable</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="Line" name="line_67">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <layout class="QVBoxLayout" name="fAdcControls">
+                <property name="topMargin">
+                 <number>0</number>
+                </property>
+                <item>
+                 <widget class="QLabel" name="label_176">
+                  <property name="text">
+                   <string>Crate</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QSpinBox" name="fAdcCrate_2">
+                  <property name="enabled">
+                   <bool>false</bool>
+                  </property>
+                  <property name="maximum">
+                   <number>3</number>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QLabel" name="label_177">
+                  <property name="text">
+                   <string>Board</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QSpinBox" name="fAdcBoard_2">
+                  <property name="enabled">
+                   <bool>false</bool>
+                  </property>
+                  <property name="maximum">
+                   <number>9</number>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QLabel" name="label_178">
+                  <property name="text">
+                   <string>Chip</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QSpinBox" name="fAdcChip_2">
+                  <property name="enabled">
+                   <bool>false</bool>
+                  </property>
+                  <property name="minimum">
+                   <number>0</number>
+                  </property>
+                  <property name="maximum">
+                   <number>3</number>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QLabel" name="label_179">
+                  <property name="text">
+                   <string>Channel</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QSpinBox" name="fAdcChannel_2">
+                  <property name="enabled">
+                   <bool>false</bool>
+                  </property>
+                  <property name="maximum">
+                   <number>8</number>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <spacer name="verticalSpacer_52">
+                  <property name="orientation">
+                   <enum>Qt::Vertical</enum>
+                  </property>
+                  <property name="sizeType">
+                   <enum>QSizePolicy::Fixed</enum>
+                  </property>
+                  <property name="sizeHint" stdset="0">
+                   <size>
+                    <width>20</width>
+                    <height>20</height>
+                   </size>
+                  </property>
+                 </spacer>
+                </item>
+                <item>
+                 <widget class="QCheckBox" name="fEventsStop">
+                  <property name="enabled">
+                   <bool>true</bool>
+                  </property>
+                  <property name="text">
+                   <string>Stop</string>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <spacer name="verticalSpacer_53">
+                  <property name="orientation">
+                   <enum>Qt::Vertical</enum>
+                  </property>
+                  <property name="sizeType">
+                   <enum>QSizePolicy::Fixed</enum>
+                  </property>
+                  <property name="sizeHint" stdset="0">
+                   <size>
+                    <width>20</width>
+                    <height>10</height>
+                   </size>
+                  </property>
+                 </spacer>
+                </item>
+                <item>
+                 <widget class="QRadioButton" name="fAdcManualScale_2">
+                  <property name="enabled">
+                   <bool>false</bool>
+                  </property>
+                  <property name="text">
+                   <string>Manual scale</string>
+                  </property>
+                  <property name="checked">
+                   <bool>true</bool>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QRadioButton" name="fAdcDynamicScale_2">
+                  <property name="enabled">
+                   <bool>false</bool>
+                  </property>
+                  <property name="text">
+                   <string>Dynamic scale</string>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QRadioButton" name="fAdcAutoScale_2">
+                  <property name="enabled">
+                   <bool>false</bool>
+                  </property>
+                  <property name="text">
+                   <string>Auto min/max</string>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <spacer name="verticalSpacer_54">
+                  <property name="orientation">
+                   <enum>Qt::Vertical</enum>
+                  </property>
+                  <property name="sizeHint" stdset="0">
+                   <size>
+                    <width>20</width>
+                    <height>40</height>
+                   </size>
+                  </property>
+                 </spacer>
+                </item>
+               </layout>
+              </item>
+             </layout>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fAuxTab">
+       <attribute name="title">
+        <string>Aux</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_74">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fAuxDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="windowTitle">
+           <string>Raw data display</string>
+          </property>
+          <widget class="QWidget" name="fAuxWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_72">
+            <item row="0" column="0">
+             <layout class="QGridLayout" name="gridLayout_88">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item row="0" column="0">
+               <layout class="QVBoxLayout" name="verticalLayout_14">
+                <property name="topMargin">
+                 <number>0</number>
+                </property>
+                <item>
+                 <widget class="QGroupBox" name="groupBox_19">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="title">
+                   <string>Camera temperatures</string>
+                  </property>
+                  <layout class="QGridLayout" name="gridLayout_73">
+                   <property name="sizeConstraint">
+                    <enum>QLayout::SetDefaultConstraint</enum>
+                   </property>
+                   <property name="bottomMargin">
+                    <number>0</number>
+                   </property>
+                   <item row="0" column="0">
+                    <widget class="Line" name="line_36">
+                     <property name="orientation">
+                      <enum>Qt::Horizontal</enum>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="0">
+                    <layout class="QVBoxLayout" name="verticalLayout_13">
+                     <item>
+                      <layout class="QHBoxLayout" name="horizontalLayout_34">
+                       <property name="sizeConstraint">
+                        <enum>QLayout::SetDefaultConstraint</enum>
+                       </property>
+                       <item>
+                        <spacer name="horizontalSpacer_46">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam00">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam01">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <spacer name="horizontalSpacer_47">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                      </layout>
+                     </item>
+                     <item>
+                      <layout class="QHBoxLayout" name="horizontalLayout_36">
+                       <item>
+                        <spacer name="horizontalSpacer_44">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam10">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam11">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam12">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam13">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam14">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <spacer name="horizontalSpacer_45">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                      </layout>
+                     </item>
+                     <item>
+                      <layout class="QHBoxLayout" name="horizontalLayout_33">
+                       <item>
+                        <spacer name="horizontalSpacer_58">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam20">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam21">
+                         <property name="enabled">
+                          <bool>false</bool>
+                         </property>
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam22">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam23">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam24">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam25">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <spacer name="horizontalSpacer_59">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                      </layout>
+                     </item>
+                     <item>
+                      <layout class="QHBoxLayout" name="horizontalLayout_35">
+                       <item>
+                        <spacer name="horizontalSpacer_29">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam30">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam31">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam32">
+                         <property name="enabled">
+                          <bool>false</bool>
+                         </property>
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam33">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam34">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <spacer name="horizontalSpacer_31">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                      </layout>
+                     </item>
+                     <item>
+                      <layout class="QHBoxLayout" name="horizontalLayout_37">
+                       <item>
+                        <spacer name="horizontalSpacer_57">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam40">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam41">
+                         <property name="enabled">
+                          <bool>false</bool>
+                         </property>
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam42">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam43">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam44">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam45">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <spacer name="horizontalSpacer_60">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                      </layout>
+                     </item>
+                     <item>
+                      <layout class="QHBoxLayout" name="horizontalLayout_38">
+                       <item>
+                        <spacer name="horizontalSpacer_48">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam50">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam51">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam52">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam53">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam54">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <spacer name="horizontalSpacer_49">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                      </layout>
+                     </item>
+                     <item>
+                      <layout class="QHBoxLayout" name="horizontalLayout_39">
+                       <item>
+                        <spacer name="horizontalSpacer_50">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam60">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <widget class="QDoubleSpinBox" name="fTempCam61">
+                         <property name="sizePolicy">
+                          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                           <horstretch>0</horstretch>
+                           <verstretch>0</verstretch>
+                          </sizepolicy>
+                         </property>
+                         <property name="minimumSize">
+                          <size>
+                           <width>65</width>
+                           <height>52</height>
+                          </size>
+                         </property>
+                         <property name="alignment">
+                          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                         </property>
+                         <property name="readOnly">
+                          <bool>true</bool>
+                         </property>
+                         <property name="buttonSymbols">
+                          <enum>QAbstractSpinBox::NoButtons</enum>
+                         </property>
+                         <property name="suffix">
+                          <string>°C</string>
+                         </property>
+                         <property name="decimals">
+                          <number>1</number>
+                         </property>
+                         <property name="minimum">
+                          <double>-99.900000000000006</double>
+                         </property>
+                         <property name="maximum">
+                          <double>99.900000000000006</double>
+                         </property>
+                         <property name="value">
+                          <double>0.000000000000000</double>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <spacer name="horizontalSpacer_51">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                      </layout>
+                     </item>
+                    </layout>
+                   </item>
+                   <item row="2" column="0">
+                    <layout class="QHBoxLayout" name="horizontalLayout_49">
+                     <property name="topMargin">
+                      <number>0</number>
+                     </property>
+                     <item>
+                      <spacer name="horizontalSpacer_61">
+                       <property name="orientation">
+                        <enum>Qt::Horizontal</enum>
+                       </property>
+                       <property name="sizeHint" stdset="0">
+                        <size>
+                         <width>40</width>
+                         <height>20</height>
+                        </size>
+                       </property>
+                      </spacer>
+                     </item>
+                     <item>
+                      <widget class="QLabel" name="label_240">
+                       <property name="text">
+                        <string>Average</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item>
+                      <widget class="QDoubleSpinBox" name="fTempCamAvg">
+                       <property name="sizePolicy">
+                        <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                         <horstretch>0</horstretch>
+                         <verstretch>0</verstretch>
+                        </sizepolicy>
+                       </property>
+                       <property name="minimumSize">
+                        <size>
+                         <width>0</width>
+                         <height>0</height>
+                        </size>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>°C</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-999.899999999999977</double>
+                       </property>
+                       <property name="maximum">
+                        <double>999.899999999999977</double>
+                       </property>
+                       <property name="value">
+                        <double>0.000000000000000</double>
+                       </property>
+                      </widget>
+                     </item>
+                    </layout>
+                   </item>
+                  </layout>
+                 </widget>
+                </item>
+                <item>
+                 <spacer name="verticalSpacer_62">
+                  <property name="orientation">
+                   <enum>Qt::Vertical</enum>
+                  </property>
+                  <property name="sizeHint" stdset="0">
+                   <size>
+                    <width>20</width>
+                    <height>40</height>
+                   </size>
+                  </property>
+                 </spacer>
+                </item>
+               </layout>
+              </item>
+              <item row="0" column="1">
+               <layout class="QVBoxLayout" name="verticalLayout_15">
+                <property name="topMargin">
+                 <number>0</number>
+                </property>
+                <item>
+                 <widget class="QGroupBox" name="groupBox_21">
+                  <property name="title">
+                   <string>Humidity</string>
+                  </property>
+                  <layout class="QGridLayout" name="gridLayout_76">
+                   <item row="1" column="0">
+                    <layout class="QGridLayout" name="gridLayout_77">
+                     <property name="topMargin">
+                      <number>0</number>
+                     </property>
+                     <item row="0" column="0">
+                      <widget class="QDoubleSpinBox" name="fHumidity1">
+                       <property name="enabled">
+                        <bool>false</bool>
+                       </property>
+                       <property name="autoFillBackground">
+                        <bool>false</bool>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string> %</string>
+                       </property>
+                       <property name="decimals">
+                        <number>1</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-9.900000000000000</double>
+                       </property>
+                       <property name="maximum">
+                        <double>999.899999999999977</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="1">
+                      <widget class="QDoubleSpinBox" name="fHumidity2">
+                       <property name="autoFillBackground">
+                        <bool>false</bool>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string> %</string>
+                       </property>
+                       <property name="decimals">
+                        <number>1</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-9.900000000000000</double>
+                       </property>
+                       <property name="maximum">
+                        <double>999.899999999999977</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="3">
+                      <widget class="QDoubleSpinBox" name="fHumidity4">
+                       <property name="autoFillBackground">
+                        <bool>false</bool>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string> %</string>
+                       </property>
+                       <property name="decimals">
+                        <number>1</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-9.900000000000000</double>
+                       </property>
+                       <property name="maximum">
+                        <double>999.899999999999977</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="2">
+                      <widget class="QDoubleSpinBox" name="fHumidity3">
+                       <property name="enabled">
+                        <bool>false</bool>
+                       </property>
+                       <property name="autoFillBackground">
+                        <bool>false</bool>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string> %</string>
+                       </property>
+                       <property name="decimals">
+                        <number>1</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-9.900000000000000</double>
+                       </property>
+                       <property name="maximum">
+                        <double>999.899999999999977</double>
+                       </property>
+                      </widget>
+                     </item>
+                    </layout>
+                   </item>
+                   <item row="0" column="0">
+                    <widget class="Line" name="line_38">
+                     <property name="orientation">
+                      <enum>Qt::Horizontal</enum>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QGroupBox" name="groupBox_20">
+                  <property name="title">
+                   <string>Power</string>
+                  </property>
+                  <layout class="QGridLayout" name="gridLayout_75">
+                   <item row="1" column="0">
+                    <layout class="QGridLayout" name="gridLayout_78">
+                     <item row="0" column="0">
+                      <widget class="QLabel" name="label_193">
+                       <property name="text">
+                        <string>FAD0</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="1" column="0">
+                      <widget class="QLabel" name="label_194">
+                       <property name="text">
+                        <string>FAD1</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="2" column="0">
+                      <widget class="QLabel" name="label_195">
+                       <property name="text">
+                        <string>FAD2</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="3" column="0">
+                      <widget class="QLabel" name="label_196">
+                       <property name="text">
+                        <string>FAD3</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="5" column="0">
+                      <widget class="QLabel" name="label_197">
+                       <property name="text">
+                        <string>FPA0</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="6" column="0">
+                      <widget class="QLabel" name="label_198">
+                       <property name="text">
+                        <string>FPA1</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="4" column="2" colspan="3">
+                      <widget class="Line" name="line_26">
+                       <property name="orientation">
+                        <enum>Qt::Horizontal</enum>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="7" column="0">
+                      <widget class="QLabel" name="label_199">
+                       <property name="text">
+                        <string>FPA2</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="8" column="0">
+                      <widget class="QLabel" name="label_200">
+                       <property name="text">
+                        <string>FPA3</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="2">
+                      <widget class="QDoubleSpinBox" name="fVoltFad00">
+                       <property name="toolTip">
+                        <string>Nominal 3.47V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="1" column="2">
+                      <widget class="QDoubleSpinBox" name="fVoltFad10">
+                       <property name="toolTip">
+                        <string>Nominal 3.47V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="2" column="2">
+                      <widget class="QDoubleSpinBox" name="fVoltFad20">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="toolTip">
+                        <string>Nominal 3.47V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="3" column="3">
+                      <widget class="QDoubleSpinBox" name="fVoltFad31">
+                       <property name="toolTip">
+                        <string>Nominal 3.49V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="1" column="3">
+                      <widget class="QDoubleSpinBox" name="fVoltFad11">
+                       <property name="toolTip">
+                        <string>Nominal 3.49V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="4">
+                      <widget class="QDoubleSpinBox" name="fVoltFad02">
+                       <property name="toolTip">
+                        <string>Nominal -2.04V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="3">
+                      <widget class="QDoubleSpinBox" name="fVoltFad01">
+                       <property name="toolTip">
+                        <string>Nominal 3.49V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="2" column="3">
+                      <widget class="QDoubleSpinBox" name="fVoltFad21">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="toolTip">
+                        <string>Nominal 3.49V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="3" column="2">
+                      <widget class="QDoubleSpinBox" name="fVoltFad30">
+                       <property name="toolTip">
+                        <string>Nominal 3.47V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="1" column="4">
+                      <widget class="QDoubleSpinBox" name="fVoltFad12">
+                       <property name="toolTip">
+                        <string>Nominal -2.04V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="2" column="4">
+                      <widget class="QDoubleSpinBox" name="fVoltFad22">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="toolTip">
+                        <string>Nominal -2.04V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="3" column="4">
+                      <widget class="QDoubleSpinBox" name="fVoltFad32">
+                       <property name="toolTip">
+                        <string>Nominal -2.04V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="5" column="2">
+                      <widget class="QDoubleSpinBox" name="fVoltFPA00">
+                       <property name="toolTip">
+                        <string>Nominal 5.08V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="5" column="3">
+                      <widget class="QDoubleSpinBox" name="fVoltFPA01">
+                       <property name="toolTip">
+                        <string>Nominal 3.48V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="5" column="4">
+                      <widget class="QDoubleSpinBox" name="fVoltFPA02">
+                       <property name="toolTip">
+                        <string>Nominal -3.47V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="6" column="2">
+                      <widget class="QDoubleSpinBox" name="fVoltFPA10">
+                       <property name="toolTip">
+                        <string>Nominal 5.08V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="6" column="3">
+                      <widget class="QDoubleSpinBox" name="fVoltFPA11">
+                       <property name="toolTip">
+                        <string>Nominal 3.48V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="6" column="4">
+                      <widget class="QDoubleSpinBox" name="fVoltFPA12">
+                       <property name="toolTip">
+                        <string>Nominal -3.47V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="7" column="2">
+                      <widget class="QDoubleSpinBox" name="fVoltFPA20">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="toolTip">
+                        <string>Nominal 5.08V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="7" column="3">
+                      <widget class="QDoubleSpinBox" name="fVoltFPA21">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="toolTip">
+                        <string>Nominal 3.48V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="7" column="4">
+                      <widget class="QDoubleSpinBox" name="fVoltFPA22">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="toolTip">
+                        <string>Nominal -3.47V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="8" column="3">
+                      <widget class="QDoubleSpinBox" name="fVoltFPA31">
+                       <property name="toolTip">
+                        <string>Nominal 3.48V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="8" column="4">
+                      <widget class="QDoubleSpinBox" name="fVoltFPA32">
+                       <property name="toolTip">
+                        <string>Nominal -3.47V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="1" rowspan="4">
+                      <widget class="Line" name="line_27">
+                       <property name="orientation">
+                        <enum>Qt::Vertical</enum>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="5" column="1" rowspan="4">
+                      <widget class="Line" name="line_28">
+                       <property name="orientation">
+                        <enum>Qt::Vertical</enum>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="5" rowspan="4">
+                      <widget class="Line" name="line_29">
+                       <property name="orientation">
+                        <enum>Qt::Vertical</enum>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="5" column="5" rowspan="4">
+                      <widget class="Line" name="line_30">
+                       <property name="orientation">
+                        <enum>Qt::Vertical</enum>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="6">
+                      <widget class="QDoubleSpinBox" name="fAmpFad00">
+                       <property name="toolTip">
+                        <string>Nominal 6.5A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="1" column="6">
+                      <widget class="QDoubleSpinBox" name="fAmpFad10">
+                       <property name="toolTip">
+                        <string>Nominal 6.5A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="2" column="6">
+                      <widget class="QDoubleSpinBox" name="fAmpFad20">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="toolTip">
+                        <string>Nominal 6.5A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="3" column="6">
+                      <widget class="QDoubleSpinBox" name="fAmpFad30">
+                       <property name="toolTip">
+                        <string>Nominal 6.5A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="5" column="6">
+                      <widget class="QDoubleSpinBox" name="fAmpFPA00">
+                       <property name="toolTip">
+                        <string>Nominal 0.56A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="6" column="6">
+                      <widget class="QDoubleSpinBox" name="fAmpFPA10">
+                       <property name="toolTip">
+                        <string>Nominal 0.56A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="7" column="6">
+                      <widget class="QDoubleSpinBox" name="fAmpFPA20">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="toolTip">
+                        <string>Nominal 0.56A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="7">
+                      <widget class="QDoubleSpinBox" name="fAmpFad01">
+                       <property name="toolTip">
+                        <string>Nominal 4.9A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="1" column="7">
+                      <widget class="QDoubleSpinBox" name="fAmpFad11">
+                       <property name="toolTip">
+                        <string>Nominal 4.9A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="2" column="7">
+                      <widget class="QDoubleSpinBox" name="fAmpFad21">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="toolTip">
+                        <string>Nominal 4.9A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="3" column="7">
+                      <widget class="QDoubleSpinBox" name="fAmpFad31">
+                       <property name="toolTip">
+                        <string>Nominal 4.9A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="5" column="7">
+                      <widget class="QDoubleSpinBox" name="fAmpFPA01">
+                       <property name="toolTip">
+                        <string>Nominal 4.5A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="6" column="7">
+                      <widget class="QDoubleSpinBox" name="fAmpFPA11">
+                       <property name="toolTip">
+                        <string>Nominal 4.5A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="7" column="7">
+                      <widget class="QDoubleSpinBox" name="fAmpFPA21">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="toolTip">
+                        <string>Nominal 4.5A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="8" column="7">
+                      <widget class="QDoubleSpinBox" name="fAmpFPA31">
+                       <property name="toolTip">
+                        <string>Nominal 4.5A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="0" column="8">
+                      <widget class="QDoubleSpinBox" name="fAmpFad02">
+                       <property name="toolTip">
+                        <string>Nominal -3.175A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="1" column="8">
+                      <widget class="QDoubleSpinBox" name="fAmpFad12">
+                       <property name="toolTip">
+                        <string>Nominal -3.175A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="2" column="8">
+                      <widget class="QDoubleSpinBox" name="fAmpFad22">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="toolTip">
+                        <string>Nominal -3.175A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="3" column="8">
+                      <widget class="QDoubleSpinBox" name="fAmpFad32">
+                       <property name="toolTip">
+                        <string>Nominal -3.175A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="5" column="8">
+                      <widget class="QDoubleSpinBox" name="fAmpFPA02">
+                       <property name="toolTip">
+                        <string>Nominal -4.775A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="6" column="8">
+                      <widget class="QDoubleSpinBox" name="fAmpFPA12">
+                       <property name="toolTip">
+                        <string>Nominal -4.775A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="7" column="8">
+                      <widget class="QDoubleSpinBox" name="fAmpFPA22">
+                       <property name="enabled">
+                        <bool>true</bool>
+                       </property>
+                       <property name="toolTip">
+                        <string>Nominal -4.775A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="8" column="8">
+                      <widget class="QDoubleSpinBox" name="fAmpFPA32">
+                       <property name="toolTip">
+                        <string>Nominal -4.775A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="4" column="6" colspan="3">
+                      <widget class="Line" name="line_31">
+                       <property name="orientation">
+                        <enum>Qt::Horizontal</enum>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="9" column="2" colspan="3">
+                      <widget class="Line" name="line_32">
+                       <property name="orientation">
+                        <enum>Qt::Horizontal</enum>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="9" column="6" colspan="3">
+                      <widget class="Line" name="line_33">
+                       <property name="orientation">
+                        <enum>Qt::Horizontal</enum>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="10" column="0">
+                      <widget class="QLabel" name="label_192">
+                       <property name="text">
+                        <string>ETH</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="11" column="0">
+                      <widget class="QLabel" name="label_203">
+                       <property name="text">
+                        <string>FTM</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="8" column="2">
+                      <widget class="QDoubleSpinBox" name="fVoltFPA30">
+                       <property name="toolTip">
+                        <string>Nominal 5.08V</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="11" column="3">
+                      <widget class="QDoubleSpinBox" name="fVoltFTM1">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="10" column="2">
+                      <widget class="QDoubleSpinBox" name="fVoltETH0">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="11" column="2">
+                      <widget class="QDoubleSpinBox" name="fVoltFTM0">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="8" column="6">
+                      <widget class="QDoubleSpinBox" name="fAmpFPA30">
+                       <property name="toolTip">
+                        <string>Nominal 0.56A</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="10" column="6">
+                      <widget class="QDoubleSpinBox" name="fAmpETH0">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="11" column="6">
+                      <widget class="QDoubleSpinBox" name="fAmpFTM0">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="11" column="7">
+                      <widget class="QDoubleSpinBox" name="fAmpFTM1">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="10" column="1" rowspan="5">
+                      <widget class="Line" name="line_34">
+                       <property name="orientation">
+                        <enum>Qt::Vertical</enum>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="10" column="5" rowspan="5">
+                      <widget class="Line" name="line_35">
+                       <property name="orientation">
+                        <enum>Qt::Vertical</enum>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="10" column="3">
+                      <widget class="QDoubleSpinBox" name="fVoltETH1">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="10" column="7">
+                      <widget class="QDoubleSpinBox" name="fAmpETH1">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="12" column="2">
+                      <widget class="QDoubleSpinBox" name="fVoltFFC">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="12" column="0">
+                      <widget class="QLabel" name="label_204">
+                       <property name="text">
+                        <string>FFC</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="11" column="4">
+                      <widget class="QLabel" name="label_201">
+                       <property name="text">
+                        <string>FLP</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="12" column="4">
+                      <widget class="QDoubleSpinBox" name="fVoltFLP">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>V</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="11" column="8">
+                      <widget class="QLabel" name="label_205">
+                       <property name="text">
+                        <string>FLP</string>
+                       </property>
+                       <property name="alignment">
+                        <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="12" column="8">
+                      <widget class="QDoubleSpinBox" name="fAmpFLP">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="12" column="6">
+                      <widget class="QDoubleSpinBox" name="fAmpFFC">
+                       <property name="alignment">
+                        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                       </property>
+                       <property name="readOnly">
+                        <bool>true</bool>
+                       </property>
+                       <property name="buttonSymbols">
+                        <enum>QAbstractSpinBox::NoButtons</enum>
+                       </property>
+                       <property name="suffix">
+                        <string>A</string>
+                       </property>
+                       <property name="decimals">
+                        <number>2</number>
+                       </property>
+                       <property name="minimum">
+                        <double>-99.900000000000006</double>
+                       </property>
+                      </widget>
+                     </item>
+                    </layout>
+                   </item>
+                   <item row="0" column="0">
+                    <widget class="Line" name="line_37">
+                     <property name="orientation">
+                      <enum>Qt::Horizontal</enum>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </widget>
+                </item>
+                <item>
+                 <spacer name="verticalSpacer_66">
+                  <property name="orientation">
+                   <enum>Qt::Vertical</enum>
+                  </property>
+                  <property name="sizeHint" stdset="0">
+                   <size>
+                    <width>20</width>
+                    <height>40</height>
+                   </size>
+                  </property>
+                 </spacer>
+                </item>
+               </layout>
+              </item>
+             </layout>
+            </item>
+            <item row="1" column="0">
+             <layout class="QHBoxLayout" name="horizontalLayout_23">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QGroupBox" name="groupBox_30">
+                <property name="title">
+                 <string>MAGIC Weather</string>
+                </property>
+                <layout class="QGridLayout" name="gridLayout_111">
+                 <item row="0" column="0">
+                  <widget class="QLabel" name="label_120">
+                   <property name="text">
+                    <string>Temp</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="0">
+                  <widget class="QLabel" name="label_119">
+                   <property name="text">
+                    <string>Hum</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="7" column="0">
+                  <widget class="QLabel" name="label_136">
+                   <property name="text">
+                    <string>Wind-Direction</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="1">
+                  <widget class="QDoubleSpinBox" name="fMagicTemp">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string>°C</string>
+                   </property>
+                   <property name="decimals">
+                    <number>1</number>
+                   </property>
+                   <property name="minimum">
+                    <double>-9999.000000000000000</double>
+                   </property>
+                   <property name="maximum">
+                    <double>9999.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="1">
+                  <widget class="QDoubleSpinBox" name="fMagicHum">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string>%</string>
+                   </property>
+                   <property name="decimals">
+                    <number>1</number>
+                   </property>
+                   <property name="maximum">
+                    <double>9999.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="1">
+                  <widget class="QDoubleSpinBox" name="fMagicDew">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string>°C</string>
+                   </property>
+                   <property name="decimals">
+                    <number>1</number>
+                   </property>
+                   <property name="minimum">
+                    <double>-9999.000000000000000</double>
+                   </property>
+                   <property name="maximum">
+                    <double>9999.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="0">
+                  <widget class="QLabel" name="label_123">
+                   <property name="text">
+                    <string>Dew</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="1">
+                  <widget class="QDoubleSpinBox" name="fMagicPressure">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> hPa</string>
+                   </property>
+                   <property name="decimals">
+                    <number>0</number>
+                   </property>
+                   <property name="maximum">
+                    <double>99999.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="0">
+                  <widget class="QLabel" name="label_146">
+                   <property name="text">
+                    <string>Pressure</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="5" column="1">
+                  <widget class="QDoubleSpinBox" name="fMagicWind">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> km/h</string>
+                   </property>
+                   <property name="decimals">
+                    <number>1</number>
+                   </property>
+                   <property name="maximum">
+                    <double>999999.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="6" column="1">
+                  <widget class="QDoubleSpinBox" name="fMagicGusts">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> km/h</string>
+                   </property>
+                   <property name="decimals">
+                    <number>1</number>
+                   </property>
+                   <property name="maximum">
+                    <double>999999.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="5" column="0">
+                  <widget class="QLabel" name="label_126">
+                   <property name="text">
+                    <string>Wind-Speed</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="6" column="0">
+                  <widget class="QLabel" name="label_151">
+                   <property name="text">
+                    <string>Wind-Gusts</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="7" column="1">
+                  <widget class="QLineEdit" name="fMagicWindDir">
+                   <property name="text">
+                    <string/>
+                   </property>
+                   <property name="maxLength">
+                    <number>3</number>
+                   </property>
+                   <property name="frame">
+                    <bool>true</bool>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+              <item>
+               <widget class="QGroupBox" name="groupBox_22">
+                <property name="title">
+                 <string>Temperatures</string>
+                </property>
+                <layout class="QGridLayout" name="gridLayout_79">
+                 <item row="0" column="1">
+                  <spacer name="horizontalSpacer_53">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="0" column="4">
+                  <layout class="QGridLayout" name="gridLayout_89">
+                   <property name="topMargin">
+                    <number>0</number>
+                   </property>
+                   <item row="2" column="0">
+                    <widget class="QLabel" name="label_215">
+                     <property name="text">
+                      <string>FTM top</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="0">
+                    <widget class="QLabel" name="label_216">
+                     <property name="text">
+                      <string>FTM bottom</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="0">
+                    <widget class="QLabel" name="label_217">
+                     <property name="text">
+                      <string>FSC bottom</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="0">
+                    <widget class="QLabel" name="label_218">
+                     <property name="text">
+                      <string>FSC top</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="1">
+                    <widget class="QLabel" name="label_219">
+                     <property name="text">
+                      <string>Backpanel</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="1">
+                    <widget class="QDoubleSpinBox" name="fTempBackpanelFTMtop">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="1">
+                    <widget class="QDoubleSpinBox" name="fTempBackpanelFTMbottom">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="1">
+                    <widget class="QDoubleSpinBox" name="fTempBackpanelFSCtop">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="1">
+                    <widget class="QDoubleSpinBox" name="fTempBackpanelFSCbottom">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="1">
+                    <spacer name="verticalSpacer_75">
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                     <property name="sizeType">
+                      <enum>QSizePolicy::Preferred</enum>
+                     </property>
+                     <property name="sizeHint" stdset="0">
+                      <size>
+                       <width>20</width>
+                       <height>40</height>
+                      </size>
+                     </property>
+                    </spacer>
+                   </item>
+                   <item row="7" column="1">
+                    <spacer name="verticalSpacer_76">
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                     <property name="sizeType">
+                      <enum>QSizePolicy::Preferred</enum>
+                     </property>
+                     <property name="sizeHint" stdset="0">
+                      <size>
+                       <width>20</width>
+                       <height>40</height>
+                      </size>
+                     </property>
+                    </spacer>
+                   </item>
+                   <item row="4" column="1" colspan="2">
+                    <widget class="Line" name="line_51">
+                     <property name="orientation">
+                      <enum>Qt::Horizontal</enum>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="2">
+                    <widget class="QDoubleSpinBox" name="fTempAuxFTMtop">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="2">
+                    <widget class="QLabel" name="label_221">
+                     <property name="text">
+                      <string>PS aux</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="2">
+                    <widget class="QDoubleSpinBox" name="fTempAuxFTMbottom">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="2">
+                    <widget class="QDoubleSpinBox" name="fTempAuxFSCtop">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="6" column="2">
+                    <widget class="QDoubleSpinBox" name="fTempAuxFSCbottom">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="0" column="2">
+                  <layout class="QGridLayout" name="gridLayout_87">
+                   <property name="rightMargin">
+                    <number>0</number>
+                   </property>
+                   <item row="2" column="1">
+                    <widget class="QLabel" name="label_220">
+                     <property name="text">
+                      <string>Front</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="1">
+                    <widget class="QDoubleSpinBox" name="fTempSwitchboxTopFront">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="1">
+                    <widget class="QDoubleSpinBox" name="fTempSwitchboxBottomFront">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="0">
+                    <widget class="QLabel" name="label_241">
+                     <property name="text">
+                      <string>Top</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="0">
+                    <widget class="QLabel" name="label_243">
+                     <property name="text">
+                      <string>Bottom</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="2">
+                    <widget class="QDoubleSpinBox" name="fTempSwitchboxTopBack">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="2">
+                    <widget class="QLabel" name="label_245">
+                     <property name="text">
+                      <string>Back</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="2">
+                    <widget class="QDoubleSpinBox" name="fTempSwitchboxBottomBack">
+                     <property name="enabled">
+                      <bool>false</bool>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="1" colspan="2">
+                    <widget class="QLabel" name="label_242">
+                     <property name="text">
+                      <string>Switchbox</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="1">
+                    <spacer name="verticalSpacer_71">
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                     <property name="sizeType">
+                      <enum>QSizePolicy::Preferred</enum>
+                     </property>
+                     <property name="sizeHint" stdset="0">
+                      <size>
+                       <width>20</width>
+                       <height>40</height>
+                      </size>
+                     </property>
+                    </spacer>
+                   </item>
+                   <item row="0" column="1">
+                    <spacer name="verticalSpacer_72">
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                     <property name="sizeType">
+                      <enum>QSizePolicy::Preferred</enum>
+                     </property>
+                     <property name="sizeHint" stdset="0">
+                      <size>
+                       <width>20</width>
+                       <height>40</height>
+                      </size>
+                     </property>
+                    </spacer>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="0" column="3">
+                  <spacer name="horizontalSpacer_65">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="0" column="0">
+                  <layout class="QGridLayout" name="gridLayout_80">
+                   <property name="topMargin">
+                    <number>0</number>
+                   </property>
+                   <item row="2" column="0">
+                    <widget class="QLabel" name="label_210">
+                     <property name="text">
+                      <string>Crate 0</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="0">
+                    <widget class="QLabel" name="label_207">
+                     <property name="text">
+                      <string>Crate 1</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="0">
+                    <widget class="QLabel" name="label_208">
+                     <property name="text">
+                      <string>Crate 3</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="0">
+                    <widget class="QLabel" name="label_209">
+                     <property name="text">
+                      <string>Crate 2</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="2">
+                    <widget class="QLabel" name="label_212">
+                     <property name="text">
+                      <string>Front</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="5">
+                    <widget class="QLabel" name="label_214">
+                     <property name="text">
+                      <string>PS front</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="2">
+                    <widget class="QDoubleSpinBox" name="fTempCrate0front">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="2">
+                    <widget class="QDoubleSpinBox" name="fTempCrate1front">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="2">
+                    <widget class="QDoubleSpinBox" name="fTempCrate2front">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="2">
+                    <widget class="QDoubleSpinBox" name="fTempCrate3front">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="5">
+                    <widget class="QDoubleSpinBox" name="fTempPS0front">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>99.900000000000006</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="5">
+                    <widget class="QDoubleSpinBox" name="fTempPS1front">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="5">
+                    <widget class="QDoubleSpinBox" name="fTempPS2front">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="5">
+                    <widget class="QDoubleSpinBox" name="fTempPS3front">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="3">
+                    <widget class="QDoubleSpinBox" name="fTempCrate0back">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="3">
+                    <widget class="QDoubleSpinBox" name="fTempCrate1back">
+                     <property name="enabled">
+                      <bool>false</bool>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="3">
+                    <widget class="QDoubleSpinBox" name="fTempCrate2back">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="3">
+                    <widget class="QDoubleSpinBox" name="fTempCrate3back">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="3">
+                    <widget class="QLabel" name="label_211">
+                     <property name="text">
+                      <string>Back</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="6">
+                    <widget class="QDoubleSpinBox" name="fTempPS0back">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="6">
+                    <widget class="QDoubleSpinBox" name="fTempPS1back">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="6">
+                    <widget class="QDoubleSpinBox" name="fTempPS2back">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="5" column="6">
+                    <widget class="QDoubleSpinBox" name="fTempPS3back">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string>°C</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="minimum">
+                      <double>-99.900000000000006</double>
+                     </property>
+                     <property name="maximum">
+                      <double>1000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="6">
+                    <widget class="QLabel" name="label_213">
+                     <property name="text">
+                      <string>PS back</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="0">
+                    <spacer name="verticalSpacer_74">
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                     <property name="sizeType">
+                      <enum>QSizePolicy::Preferred</enum>
+                     </property>
+                     <property name="sizeHint" stdset="0">
+                      <size>
+                       <width>20</width>
+                       <height>40</height>
+                      </size>
+                     </property>
+                    </spacer>
+                   </item>
+                   <item row="6" column="0">
+                    <spacer name="verticalSpacer_73">
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                     <property name="sizeType">
+                      <enum>QSizePolicy::Preferred</enum>
+                     </property>
+                     <property name="sizeHint" stdset="0">
+                      <size>
+                       <width>20</width>
+                       <height>40</height>
+                      </size>
+                     </property>
+                    </spacer>
+                   </item>
+                   <item row="2" column="4" rowspan="4">
+                    <widget class="Line" name="line_45">
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+             </layout>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fLoggerTab">
+       <property name="enabled">
+        <bool>true</bool>
+       </property>
+       <attribute name="title">
+        <string>Logger</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_20">
+        <item row="0" column="1">
+         <widget class="QDockWidget" name="fLoggerDock">
+          <property name="enabled">
+           <bool>true</bool>
+          </property>
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="allowedAreas">
+           <set>Qt::AllDockWidgetAreas</set>
+          </property>
+          <property name="windowTitle">
+           <string>Data logger overview</string>
+          </property>
+          <widget class="QWidget" name="fLoggerWidget">
+           <property name="enabled">
+            <bool>true</bool>
+           </property>
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_19">
+            <item row="27" column="1">
+             <spacer name="verticalSpacer_4">
+              <property name="orientation">
+               <enum>Qt::Vertical</enum>
+              </property>
+              <property name="sizeType">
+               <enum>QSizePolicy::Expanding</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>20</width>
+                <height>40</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+            <item row="13" column="1">
+             <spacer name="verticalSpacer_21">
+              <property name="orientation">
+               <enum>Qt::Vertical</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>20</width>
+                <height>40</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+            <item row="15" column="1">
+             <spacer name="verticalSpacer_23">
+              <property name="orientation">
+               <enum>Qt::Vertical</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>20</width>
+                <height>40</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+            <item row="28" column="0" colspan="2">
+             <layout class="QHBoxLayout" name="horizontalLayout_51">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QGroupBox" name="fGroupEthernet">
+                <property name="title">
+                 <string>Ethernet</string>
+                </property>
+                <layout class="QGridLayout" name="gridLayout_58">
+                 <item row="2" column="1">
+                  <layout class="QGridLayout" name="gridLayout_48" columnstretch="0,0,0,0">
+                   <item row="3" column="3">
+                    <widget class="QDoubleSpinBox" name="fFadEthernetRateMin">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> kB/s</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="maximum">
+                      <double>100000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="3">
+                    <widget class="QDoubleSpinBox" name="fFadEthernetRateMax">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string> kB/s</string>
+                     </property>
+                     <property name="decimals">
+                      <number>1</number>
+                     </property>
+                     <property name="maximum">
+                      <double>100000.000000000000000</double>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="2">
+                    <widget class="QLabel" name="label_118">
+                     <property name="text">
+                      <string>Min</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="4" column="2">
+                    <widget class="QLabel" name="label_122">
+                     <property name="text">
+                      <string>Max</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="3">
+                    <spacer name="verticalSpacer_25">
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                     <property name="sizeType">
+                      <enum>QSizePolicy::Fixed</enum>
+                     </property>
+                     <property name="sizeHint" stdset="0">
+                      <size>
+                       <width>20</width>
+                       <height>10</height>
+                      </size>
+                     </property>
+                    </spacer>
+                   </item>
+                   <item row="0" column="3">
+                    <widget class="QLabel" name="label_141">
+                     <property name="text">
+                      <string>I/O Errors</string>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="1" column="3">
+                    <widget class="QSpinBox" name="fFadEvtConnErr">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="suffix">
+                      <string/>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="1" column="1">
+                  <spacer name="verticalSpacer_41">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>40</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="3" column="1">
+                  <spacer name="verticalSpacer_42">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>40</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="2" column="0">
+                  <spacer name="horizontalSpacer_35">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="2" column="2">
+                  <spacer name="horizontalSpacer_36">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="0" column="1">
+                  <widget class="Line" name="line_20">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+              <item>
+               <widget class="QGroupBox" name="fGroupOutput">
+                <property name="title">
+                 <string>Open output streams</string>
+                </property>
+                <layout class="QGridLayout" name="gridLayout_61">
+                 <item row="2" column="1">
+                  <layout class="QGridLayout" name="gridLayout_50">
+                   <item row="1" column="0" colspan="3">
+                    <widget class="QLabel" name="label_114">
+                     <property name="text">
+                      <string>Output stream with maximum run number</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="0">
+                    <widget class="QLabel" name="label_116">
+                     <property name="text">
+                      <string>Current run</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="2" column="1">
+                    <widget class="QSpinBox" name="fEvtsSuccessCurRun">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="0">
+                    <widget class="QLabel" name="label_121">
+                     <property name="text">
+                      <string>Total</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="3" column="1">
+                    <widget class="QSpinBox" name="fEvtsSuccessTotal">
+                     <property name="alignment">
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                     </property>
+                     <property name="readOnly">
+                      <bool>true</bool>
+                     </property>
+                     <property name="buttonSymbols">
+                      <enum>QAbstractSpinBox::NoButtons</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>2147483647</number>
+                     </property>
+                    </widget>
+                   </item>
+                   <item row="0" column="0" colspan="3">
+                    <widget class="Line" name="line_12">
+                     <property name="orientation">
+                      <enum>Qt::Horizontal</enum>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item row="1" column="1">
+                  <spacer name="verticalSpacer_43">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>40</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="4" column="1">
+                  <spacer name="verticalSpacer_44">
+                   <property name="orientation">
+                    <enum>Qt::Vertical</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>20</width>
+                     <height>40</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="2" column="2">
+                  <spacer name="horizontalSpacer_39">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="2" column="0">
+                  <spacer name="horizontalSpacer_40">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="0" column="1">
+                  <widget class="Line" name="line_21">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+             </layout>
+            </item>
+            <item row="1" column="0" colspan="2">
+             <widget class="QGroupBox" name="groupBox_29">
+              <property name="title">
+               <string>Event Builder</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_107">
+               <item row="0" column="1">
+                <layout class="QHBoxLayout" name="horizontalLayout_15">
+                 <item>
+                  <spacer name="horizontalSpacer_27">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="QPushButton" name="fEvtBldLedBin">
+                   <property name="enabled">
+                    <bool>true</bool>
+                   </property>
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="maximumSize">
+                    <size>
+                     <width>16777215</width>
+                     <height>16777215</height>
+                    </size>
+                   </property>
+                   <property name="text">
+                    <string>bin</string>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="design.qrc">
+                     <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                   </property>
+                   <property name="iconSize">
+                    <size>
+                     <width>16</width>
+                     <height>16</height>
+                    </size>
+                   </property>
+                   <property name="checkable">
+                    <bool>false</bool>
+                   </property>
+                   <property name="flat">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QPushButton" name="fEvtBldLedFits">
+                   <property name="enabled">
+                    <bool>true</bool>
+                   </property>
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="maximumSize">
+                    <size>
+                     <width>16777215</width>
+                     <height>16777215</height>
+                    </size>
+                   </property>
+                   <property name="text">
+                    <string>fits</string>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="design.qrc">
+                     <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                   </property>
+                   <property name="iconSize">
+                    <size>
+                     <width>16</width>
+                     <height>16</height>
+                    </size>
+                   </property>
+                   <property name="checkable">
+                    <bool>false</bool>
+                   </property>
+                   <property name="flat">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item row="1" column="1">
+                <widget class="QLineEdit" name="fEvtBldFilename">
+                 <property name="enabled">
+                  <bool>true</bool>
+                 </property>
+                 <property name="readOnly">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="0">
+                <widget class="QLabel" name="label_89">
+                 <property name="text">
+                  <string>Newest file</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="1" rowspan="2">
+                <layout class="QGridLayout" name="gridLayout_36">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item row="0" column="0">
+                  <widget class="QDoubleSpinBox" name="fEvtBuilderWritten">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="toolTip">
+                    <string>Number of bytes written since startup of data logger.</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> MB</string>
+                   </property>
+                   <property name="maximum">
+                    <double>99999.990000000005239</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="1">
+                  <spacer name="horizontalSpacer_28">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item row="1" column="0">
+                  <widget class="QDoubleSpinBox" name="fEvtBuilderRate">
+                   <property name="enabled">
+                    <bool>true</bool>
+                   </property>
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="font">
+                    <font>
+                     <weight>50</weight>
+                     <bold>false</bold>
+                    </font>
+                   </property>
+                   <property name="toolTip">
+                    <string>Current writing speed</string>
+                   </property>
+                   <property name="frame">
+                    <bool>true</bool>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="keyboardTracking">
+                    <bool>true</bool>
+                   </property>
+                   <property name="suffix">
+                    <string> kB/s</string>
+                   </property>
+                   <property name="maximum">
+                    <double>99999.990000000005239</double>
+                   </property>
+                   <property name="value">
+                    <double>0.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item row="3" column="0">
+                <widget class="QLabel" name="label_91">
+                 <property name="text">
+                  <string>Rate</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="0">
+                <widget class="QLabel" name="label_90">
+                 <property name="text">
+                  <string>Written</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="0" column="3" rowspan="5">
+                <layout class="QVBoxLayout" name="verticalLayout_8">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QDoubleSpinBox" name="fEvtBuilderFreeSpace">
+                   <property name="toolTip">
+                    <string>Remaining free disk space</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="prefix">
+                    <string/>
+                   </property>
+                   <property name="suffix">
+                    <string> GB</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_86">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>&gt;=1GB</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <layout class="QHBoxLayout" name="horizontalLayout_13">
+                   <item>
+                    <widget class="QProgressBar" name="fEvtBuilderSpaceLeft">
+                     <property name="enabled">
+                      <bool>false</bool>
+                     </property>
+                     <property name="contextMenuPolicy">
+                      <enum>Qt::DefaultContextMenu</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>1000</number>
+                     </property>
+                     <property name="value">
+                      <number>0</number>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignCenter</set>
+                     </property>
+                     <property name="textVisible">
+                      <bool>false</bool>
+                     </property>
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                     <property name="invertedAppearance">
+                      <bool>false</bool>
+                     </property>
+                     <property name="textDirection">
+                      <enum>QProgressBar::BottomToTop</enum>
+                     </property>
+                     <property name="format">
+                      <string>%p%</string>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_87">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>Empty</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignHCenter|Qt::AlignTop</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QTimeEdit" name="fEvtBuilderET">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="font">
+                    <font>
+                     <weight>50</weight>
+                     <italic>false</italic>
+                     <bold>false</bold>
+                     <underline>false</underline>
+                     <strikeout>false</strikeout>
+                    </font>
+                   </property>
+                   <property name="toolTip">
+                    <string>Estimated time until disk is filled with the current writing speed.</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="time">
+                    <time>
+                     <hour>0</hour>
+                     <minute>0</minute>
+                     <second>0</second>
+                    </time>
+                   </property>
+                   <property name="currentSection">
+                    <enum>QDateTimeEdit::HourSection</enum>
+                   </property>
+                   <property name="displayFormat">
+                    <string>hh:mm:ss</string>
+                   </property>
+                   <property name="calendarPopup">
+                    <bool>false</bool>
+                   </property>
+                   <property name="timeSpec">
+                    <enum>Qt::OffsetFromUTC</enum>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item row="0" column="2" rowspan="4">
+                <widget class="Line" name="line_64">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="0" column="0">
+                <widget class="QLabel" name="label_88">
+                 <property name="text">
+                  <string>Open files</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="4" column="1">
+                <spacer name="verticalSpacer_3">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>40</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="0" column="0" colspan="2">
+             <widget class="QGroupBox" name="groupBox_31">
+              <property name="title">
+               <string>Data Logger</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_112">
+               <item row="0" column="1">
+                <layout class="QHBoxLayout" name="horizontalLayout_11">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QSpinBox" name="fLoggerOpenFiles">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_58">
+                   <property name="text">
+                    <string>/</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QSpinBox" name="fLoggerSubscriptions">
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_147">
+                   <property name="text">
+                    <string>subscriptions</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="horizontalSpacer_12">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                 <item>
+                  <widget class="QPushButton" name="fLoggerLedLog">
+                   <property name="text">
+                    <string>log</string>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="design.qrc">
+                     <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                   </property>
+                   <property name="flat">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QPushButton" name="fLoggerLedRep">
+                   <property name="text">
+                    <string>rep</string>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="design.qrc">
+                     <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                   </property>
+                   <property name="flat">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QPushButton" name="fLoggerLedFits">
+                   <property name="text">
+                    <string>fits</string>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="design.qrc">
+                     <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+                   </property>
+                   <property name="flat">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item row="1" column="1">
+                <widget class="QLineEdit" name="fLoggerFilenameNight">
+                 <property name="enabled">
+                  <bool>true</bool>
+                 </property>
+                 <property name="readOnly">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="1">
+                <widget class="QLineEdit" name="fLoggerFilenameRun">
+                 <property name="enabled">
+                  <bool>true</bool>
+                 </property>
+                 <property name="readOnly">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+               <item row="3" column="1" rowspan="2">
+                <layout class="QGridLayout" name="gridLayout_14">
+                 <item row="1" column="0">
+                  <widget class="QDoubleSpinBox" name="fLoggerWritten">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="toolTip">
+                    <string>Number of bytes written since startup of data logger.</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="suffix">
+                    <string> MB</string>
+                   </property>
+                   <property name="maximum">
+                    <double>99999.990000000005239</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="2" column="0">
+                  <widget class="QDoubleSpinBox" name="fLoggerRate">
+                   <property name="enabled">
+                    <bool>true</bool>
+                   </property>
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="font">
+                    <font>
+                     <weight>50</weight>
+                     <bold>false</bold>
+                    </font>
+                   </property>
+                   <property name="toolTip">
+                    <string>Current writing speed</string>
+                   </property>
+                   <property name="frame">
+                    <bool>true</bool>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="keyboardTracking">
+                    <bool>true</bool>
+                   </property>
+                   <property name="suffix">
+                    <string> kB/s</string>
+                   </property>
+                   <property name="maximum">
+                    <double>99999.990000000005239</double>
+                   </property>
+                   <property name="value">
+                    <double>0.000000000000000</double>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="1">
+                  <spacer name="horizontalSpacer_11">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                </layout>
+               </item>
+               <item row="1" column="0">
+                <widget class="QLabel" name="label_5">
+                 <property name="text">
+                  <string>Night file</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="2" column="0">
+                <widget class="QLabel" name="label_4">
+                 <property name="text">
+                  <string>Run file</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="3" column="0">
+                <widget class="QLabel" name="label_6">
+                 <property name="text">
+                  <string>Written</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="4" column="0">
+                <widget class="QLabel" name="label_7">
+                 <property name="text">
+                  <string>Rate</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="0" column="3" rowspan="7">
+                <layout class="QVBoxLayout" name="verticalLayout_23">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QDoubleSpinBox" name="fLoggerFreeSpace">
+                   <property name="toolTip">
+                    <string>Remaining free disk space</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="prefix">
+                    <string/>
+                   </property>
+                   <property name="suffix">
+                    <string> GB</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_3">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>&gt;=1GB</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <layout class="QHBoxLayout" name="horizontalLayout_9">
+                   <item>
+                    <widget class="QProgressBar" name="fLoggerSpaceLeft">
+                     <property name="enabled">
+                      <bool>false</bool>
+                     </property>
+                     <property name="contextMenuPolicy">
+                      <enum>Qt::DefaultContextMenu</enum>
+                     </property>
+                     <property name="maximum">
+                      <number>1000</number>
+                     </property>
+                     <property name="value">
+                      <number>0</number>
+                     </property>
+                     <property name="alignment">
+                      <set>Qt::AlignCenter</set>
+                     </property>
+                     <property name="textVisible">
+                      <bool>false</bool>
+                     </property>
+                     <property name="orientation">
+                      <enum>Qt::Vertical</enum>
+                     </property>
+                     <property name="invertedAppearance">
+                      <bool>false</bool>
+                     </property>
+                     <property name="textDirection">
+                      <enum>QProgressBar::BottomToTop</enum>
+                     </property>
+                     <property name="format">
+                      <string>%p%</string>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>Empty</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignHCenter|Qt::AlignTop</set>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QTimeEdit" name="fLoggerET">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="font">
+                    <font>
+                     <weight>50</weight>
+                     <italic>false</italic>
+                     <bold>false</bold>
+                     <underline>false</underline>
+                     <strikeout>false</strikeout>
+                    </font>
+                   </property>
+                   <property name="toolTip">
+                    <string>Estimated time until disk is filled with the current writing speed.</string>
+                   </property>
+                   <property name="alignment">
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                   </property>
+                   <property name="readOnly">
+                    <bool>true</bool>
+                   </property>
+                   <property name="buttonSymbols">
+                    <enum>QAbstractSpinBox::NoButtons</enum>
+                   </property>
+                   <property name="time">
+                    <time>
+                     <hour>0</hour>
+                     <minute>0</minute>
+                     <second>0</second>
+                    </time>
+                   </property>
+                   <property name="currentSection">
+                    <enum>QDateTimeEdit::HourSection</enum>
+                   </property>
+                   <property name="displayFormat">
+                    <string>hh:mm:ss</string>
+                   </property>
+                   <property name="calendarPopup">
+                    <bool>false</bool>
+                   </property>
+                   <property name="timeSpec">
+                    <enum>Qt::OffsetFromUTC</enum>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item row="0" column="2" rowspan="5">
+                <widget class="Line" name="line_65">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="5" column="1">
+                <spacer name="verticalSpacer_24">
+                 <property name="orientation">
+                  <enum>Qt::Vertical</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>20</width>
+                   <height>40</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
+               <item row="0" column="0">
+                <widget class="QLabel" name="label_26">
+                 <property name="text">
+                  <string>Open files</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="6" column="1">
+                <layout class="QHBoxLayout" name="horizontalLayout_28">
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QPushButton" name="fLoggerStart">
+                   <property name="text">
+                    <string>Start</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QPushButton" name="fLoggerStop">
+                   <property name="enabled">
+                    <bool>true</bool>
+                   </property>
+                   <property name="text">
+                    <string>Stop</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="horizontalSpacer_37">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                </layout>
+               </item>
+              </layout>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fCommentsTab">
+       <attribute name="title">
+        <string>/*...*/</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_44">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fCommentsDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="windowTitle">
+           <string>Run Comments</string>
+          </property>
+          <widget class="QWidget" name="fCommentsWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_45">
+            <item row="0" column="0">
+             <widget class="QTableView" name="fTableComments">
+              <property name="alternatingRowColors">
+               <bool>true</bool>
+              </property>
+             </widget>
+            </item>
+            <item row="1" column="0">
+             <layout class="QHBoxLayout" name="horizontalLayout_30">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QPushButton" name="fCommentInsertRow">
+                <property name="text">
+                 <string>Insert row</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fCommentUpdateLayout">
+                <property name="text">
+                 <string>Update Layout</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <spacer name="horizontalSpacer_38">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>40</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fCommentSubmit">
+                <property name="text">
+                 <string>Submit</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fCommentUpdate">
+                <property name="enabled">
+                 <bool>false</bool>
+                </property>
+                <property name="text">
+                 <string>Update</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fCommentRevert">
+                <property name="text">
+                 <string>Revert</string>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fDimCmdTab">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="accessibleName">
+        <string/>
+       </property>
+       <attribute name="title">
+        <string>Commands</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_2">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fDimCmdDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="allowedAreas">
+           <set>Qt::AllDockWidgetAreas</set>
+          </property>
+          <property name="windowTitle">
+           <string>Dim command overview</string>
+          </property>
+          <widget class="QWidget" name="fDimCmdWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_7">
+            <item row="2" column="0">
+             <layout class="QHBoxLayout" name="horizontalLayout_5">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QListView" name="fDimCmdServers">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                  <horstretch>3</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="editTriggers">
+                 <set>QAbstractItemView::NoEditTriggers</set>
+                </property>
+                <property name="showDropIndicator" stdset="0">
+                 <bool>false</bool>
+                </property>
+                <property name="alternatingRowColors">
+                 <bool>true</bool>
+                </property>
+                <property name="movement">
+                 <enum>QListView::Static</enum>
+                </property>
+                <property name="resizeMode">
+                 <enum>QListView::Fixed</enum>
+                </property>
+                <property name="selectionRectVisible">
+                 <bool>true</bool>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QListView" name="fDimCmdCommands">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                  <horstretch>5</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="editTriggers">
+                 <set>QAbstractItemView::NoEditTriggers</set>
+                </property>
+                <property name="showDropIndicator" stdset="0">
+                 <bool>false</bool>
+                </property>
+                <property name="alternatingRowColors">
+                 <bool>true</bool>
+                </property>
+                <property name="movement">
+                 <enum>QListView::Static</enum>
+                </property>
+                <property name="resizeMode">
+                 <enum>QListView::Fixed</enum>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QListView" name="fDimCmdDescription">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                  <horstretch>8</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="editTriggers">
+                 <set>QAbstractItemView::NoEditTriggers</set>
+                </property>
+                <property name="showDropIndicator" stdset="0">
+                 <bool>false</bool>
+                </property>
+                <property name="selectionMode">
+                 <enum>QAbstractItemView::NoSelection</enum>
+                </property>
+                <property name="movement">
+                 <enum>QListView::Static</enum>
+                </property>
+                <property name="isWrapping" stdset="0">
+                 <bool>false</bool>
+                </property>
+                <property name="resizeMode">
+                 <enum>QListView::Fixed</enum>
+                </property>
+                <property name="wordWrap">
+                 <bool>true</bool>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+            <item row="4" column="0">
+             <layout class="QHBoxLayout" name="horizontalLayout_6">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QLabel" name="label_2">
+                <property name="text">
+                 <string>Arguments</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QLineEdit" name="fDimCmdLineEdit">
+                <property name="toolTip">
+                 <string>Arguments to be sent with the command (0x will be interpreted as hex value, a leading 0 as octal)</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fDimCmdSend">
+                <property name="text">
+                 <string>Send</string>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fDimSvcTab">
+       <attribute name="title">
+        <string>Services</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_3">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fDimSvcDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="allowedAreas">
+           <set>Qt::AllDockWidgetAreas</set>
+          </property>
+          <property name="windowTitle">
+           <string>Dim service overview</string>
+          </property>
+          <widget class="QWidget" name="fDimSvcWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_10" rowstretch="0,0,4,0,3">
+            <item row="2" column="0">
+             <layout class="QHBoxLayout" name="horizontalLayout_7" stretch="3,5,8">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QListView" name="fDimSvcServers">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="editTriggers">
+                 <set>QAbstractItemView::NoEditTriggers</set>
+                </property>
+                <property name="showDropIndicator" stdset="0">
+                 <bool>false</bool>
+                </property>
+                <property name="alternatingRowColors">
+                 <bool>true</bool>
+                </property>
+                <property name="movement">
+                 <enum>QListView::Static</enum>
+                </property>
+                <property name="resizeMode">
+                 <enum>QListView::Fixed</enum>
+                </property>
+                <property name="selectionRectVisible">
+                 <bool>true</bool>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QListView" name="fDimSvcServices">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="editTriggers">
+                 <set>QAbstractItemView::NoEditTriggers</set>
+                </property>
+                <property name="showDropIndicator" stdset="0">
+                 <bool>false</bool>
+                </property>
+                <property name="alternatingRowColors">
+                 <bool>true</bool>
+                </property>
+                <property name="movement">
+                 <enum>QListView::Static</enum>
+                </property>
+                <property name="resizeMode">
+                 <enum>QListView::Fixed</enum>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QListView" name="fDimSvcDescription">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="editTriggers">
+                 <set>QAbstractItemView::NoEditTriggers</set>
+                </property>
+                <property name="showDropIndicator" stdset="0">
+                 <bool>false</bool>
+                </property>
+                <property name="selectionMode">
+                 <enum>QAbstractItemView::NoSelection</enum>
+                </property>
+                <property name="movement">
+                 <enum>QListView::Static</enum>
+                </property>
+                <property name="isWrapping" stdset="0">
+                 <bool>false</bool>
+                </property>
+                <property name="resizeMode">
+                 <enum>QListView::Fixed</enum>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+            <item row="4" column="0">
+             <widget class="QTextEdit" name="fDimSvcText">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                <horstretch>0</horstretch>
+                <verstretch>1</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="maximumSize">
+               <size>
+                <width>16777215</width>
+                <height>16777215</height>
+               </size>
+              </property>
+              <property name="textInteractionFlags">
+               <set>Qt::TextSelectableByMouse</set>
+              </property>
+             </widget>
+            </item>
+            <item row="3" column="0">
+             <layout class="QHBoxLayout" name="horizontalLayout_8">
+              <property name="bottomMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <spacer name="horizontalSpacer_9">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>40</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QPushButton" name="pushButton">
+                <property name="toolTip">
+                 <string>Clear contents of the service message window.</string>
+                </property>
+                <property name="text">
+                 <string>Clear</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <spacer name="horizontalSpacer_10">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeType">
+                 <enum>QSizePolicy::Fixed</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>20</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QPushButton" name="pushButton_2">
+                <property name="toolTip">
+                 <string>Increase size of the service message window.</string>
+                </property>
+                <property name="text">
+                 <string>+</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QPushButton" name="pushButton_3">
+                <property name="toolTip">
+                 <string>Decrease size of the service message window.</string>
+                </property>
+                <property name="text">
+                 <string>-</string>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="tab">
+       <attribute name="title">
+        <string>Drive</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_98">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fDriveDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="allowedAreas">
+           <set>Qt::AllDockWidgetAreas</set>
+          </property>
+          <property name="windowTitle">
+           <string>Drive controls</string>
+          </property>
+          <widget class="QWidget" name="fDriveWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_97" rowstretch="0,0" columnstretch="0,0">
+            <item row="0" column="1">
+             <widget class="QGroupBox" name="groupBox_27">
+              <property name="title">
+               <string>TPoint LEDs</string>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_105">
+               <item row="0" column="1">
+                <widget class="QSpinBox" name="spinBox">
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="specialValueText">
+                  <string>off</string>
+                 </property>
+                 <property name="maximum">
+                  <number>32767</number>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="1">
+                <widget class="QSpinBox" name="spinBox_2">
+                 <property name="alignment">
+                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                 </property>
+                 <property name="specialValueText">
+                  <string>off</string>
+                 </property>
+                 <property name="maximum">
+                  <number>32767</number>
+                 </property>
+                </widget>
+               </item>
+               <item row="0" column="0">
+                <widget class="QLabel" name="label_250">
+                 <property name="text">
+                  <string>Top</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="1" column="0">
+                <widget class="QLabel" name="label_251">
+                 <property name="text">
+                  <string>Bottom</string>
+                 </property>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="0" column="0">
+             <spacer name="horizontalSpacer_63">
+              <property name="orientation">
+               <enum>Qt::Horizontal</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>40</width>
+                <height>20</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+            <item row="1" column="0">
+             <spacer name="verticalSpacer_90">
+              <property name="orientation">
+               <enum>Qt::Vertical</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>20</width>
+                <height>40</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fChatTab">
+       <attribute name="title">
+        <string>Chat</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_9">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fChatDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="windowTitle">
+           <string>Chat Window</string>
+          </property>
+          <widget class="QWidget" name="fChatWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_8">
+            <item row="0" column="1">
+             <layout class="QHBoxLayout" name="horizontalLayout_3">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <spacer name="horizontalSpacer_5">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>40</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fChatClear">
+                <property name="toolTip">
+                 <string extracomment="bla bla">Clear the contents of the chat-window.</string>
+                </property>
+                <property name="text">
+                 <string>Clear</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <spacer name="horizontalSpacer_6">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeType">
+                 <enum>QSizePolicy::Fixed</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>20</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fChatFontPlus">
+                <property name="toolTip">
+                 <string>Increase font size of the chat-window.</string>
+                </property>
+                <property name="text">
+                 <string>+</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fChatFontMinus">
+                <property name="toolTip">
+                 <string>Decrease font size of the chat-window.</string>
+                </property>
+                <property name="text">
+                 <string>-</string>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+            <item row="1" column="1">
+             <widget class="QTextEdit" name="fChatText">
+              <property name="toolTip">
+               <string/>
+              </property>
+              <property name="frameShape">
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <property name="autoFormatting">
+               <set>QTextEdit::AutoNone</set>
+              </property>
+              <property name="documentTitle">
+               <string/>
+              </property>
+              <property name="undoRedoEnabled">
+               <bool>false</bool>
+              </property>
+              <property name="readOnly">
+               <bool>true</bool>
+              </property>
+              <property name="html">
+               <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Ubuntu'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+              </property>
+              <property name="textInteractionFlags">
+               <set>Qt::TextSelectableByMouse</set>
+              </property>
+             </widget>
+            </item>
+            <item row="2" column="1">
+             <layout class="QHBoxLayout" name="horizontalLayout_4">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QLineEdit" name="fChatMessage">
+                <property name="toolTip">
+                 <string>Entry field for a chat message.</string>
+                </property>
+                <property name="frame">
+                 <bool>true</bool>
+                </property>
+                <property name="dragEnabled">
+                 <bool>false</bool>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fChatSend">
+                <property name="toolTip">
+                 <string>Send a chat message.</string>
+                </property>
+                <property name="text">
+                 <string>Send</string>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fLogTab">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <attribute name="title">
+        <string>Log</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_4">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fLogDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="windowTitle">
+           <string>Logging of MESSAGE services</string>
+          </property>
+          <widget class="QWidget" name="fLogWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_5">
+            <item row="1" column="1">
+             <layout class="QHBoxLayout" name="horizontalLayout_2">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <spacer name="horizontalSpacer_2">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>40</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fLogClear">
+                <property name="toolTip">
+                 <string extracomment="bla bla">Clear the contents of the log-window.</string>
+                </property>
+                <property name="text">
+                 <string>Clear</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <spacer name="horizontalSpacer_3">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeType">
+                 <enum>QSizePolicy::Fixed</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>20</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fLogFontPlus">
+                <property name="toolTip">
+                 <string>Increase font size of the log-window.</string>
+                </property>
+                <property name="text">
+                 <string>+</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fLogFontMinus">
+                <property name="toolTip">
+                 <string>Decrease font size of the log-window.</string>
+                </property>
+                <property name="text">
+                 <string>-</string>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+            <item row="2" column="1">
+             <widget class="QTextEdit" name="fLogText">
+              <property name="toolTip">
+               <string/>
+              </property>
+              <property name="frameShape">
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <property name="autoFormatting">
+               <set>QTextEdit::AutoNone</set>
+              </property>
+              <property name="documentTitle">
+               <string/>
+              </property>
+              <property name="undoRedoEnabled">
+               <bool>false</bool>
+              </property>
+              <property name="lineWrapMode">
+               <enum>QTextEdit::NoWrap</enum>
+              </property>
+              <property name="readOnly">
+               <bool>true</bool>
+              </property>
+              <property name="textInteractionFlags">
+               <set>Qt::TextSelectableByMouse</set>
+              </property>
+             </widget>
+            </item>
+            <item row="0" column="1">
+             <widget class="Line" name="line_3">
+              <property name="orientation">
+               <enum>Qt::Vertical</enum>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="fMenuBar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>1358</width>
+     <height>21</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="fMenuLog">
+    <property name="title">
+     <string>Log</string>
+    </property>
+    <addaction name="fMenuLogSaveAs"/>
+   </widget>
+   <widget class="QMenu" name="menuFile">
+    <property name="title">
+     <string>File</string>
+    </property>
+    <addaction name="actionTest"/>
+   </widget>
+   <addaction name="fMenuLog"/>
+   <addaction name="menuFile"/>
+  </widget>
+  <widget class="QStatusBar" name="fStatusBar">
+   <property name="statusTip">
+    <string/>
+   </property>
+   <property name="whatsThis">
+    <string/>
+   </property>
+  </widget>
+  <widget class="QDockWidget" name="dockWidget_2">
+   <property name="sizePolicy">
+    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="minimumSize">
+    <size>
+     <width>350</width>
+     <height>97</height>
+    </size>
+   </property>
+   <property name="maximumSize">
+    <size>
+     <width>524287</width>
+     <height>524287</height>
+    </size>
+   </property>
+   <property name="features">
+    <set>QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable</set>
+   </property>
+   <property name="allowedAreas">
+    <set>Qt::BottomDockWidgetArea|Qt::TopDockWidgetArea</set>
+   </property>
+   <property name="windowTitle">
+    <string>Warnings and Errors</string>
+   </property>
+   <attribute name="dockWidgetArea">
+    <number>8</number>
+   </attribute>
+   <widget class="QWidget" name="dockWidgetContents_2">
+    <property name="sizePolicy">
+     <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+      <horstretch>0</horstretch>
+      <verstretch>0</verstretch>
+     </sizepolicy>
+    </property>
+    <layout class="QVBoxLayout" name="verticalLayout_3">
+     <item>
+      <layout class="QVBoxLayout" name="verticalLayout_2">
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout">
+         <property name="sizeConstraint">
+          <enum>QLayout::SetDefaultConstraint</enum>
+         </property>
+         <property name="topMargin">
+          <number>0</number>
+         </property>
+         <item>
+          <widget class="QDateTimeEdit" name="fUTC">
+           <property name="enabled">
+            <bool>true</bool>
+           </property>
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="minimumSize">
+            <size>
+             <width>0</width>
+             <height>0</height>
+            </size>
+           </property>
+           <property name="font">
+            <font>
+             <weight>50</weight>
+             <bold>false</bold>
+            </font>
+           </property>
+           <property name="alignment">
+            <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+           </property>
+           <property name="readOnly">
+            <bool>true</bool>
+           </property>
+           <property name="buttonSymbols">
+            <enum>QAbstractSpinBox::NoButtons</enum>
+           </property>
+           <property name="dateTime">
+            <datetime>
+             <hour>0</hour>
+             <minute>0</minute>
+             <second>2</second>
+             <year>2000</year>
+             <month>1</month>
+             <day>1</day>
+            </datetime>
+           </property>
+           <property name="currentSection">
+            <enum>QDateTimeEdit::DaySection</enum>
+           </property>
+           <property name="displayFormat">
+            <string>dd.MM.yyyy HH:mm:ss</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QLabel" name="label_67">
+           <property name="text">
+            <string>UTC</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>40</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="QPushButton" name="fTextClear">
+           <property name="font">
+            <font>
+             <pointsize>9</pointsize>
+            </font>
+           </property>
+           <property name="toolTip">
+            <string>Clear contents of the error message window.</string>
+           </property>
+           <property name="text">
+            <string>Clear</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer_4">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeType">
+            <enum>QSizePolicy::Fixed</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>20</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="QPushButton" name="fTextFontPlus">
+           <property name="toolTip">
+            <string>Increase font size of the error message window.</string>
+           </property>
+           <property name="text">
+            <string>+</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="fTextFontMinus">
+           <property name="toolTip">
+            <string>Decrease font size of the error message window.</string>
+           </property>
+           <property name="text">
+            <string>-</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <widget class="QTextEdit" name="fTextEdit">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>29</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>16777215</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="undoRedoEnabled">
+          <bool>false</bool>
+         </property>
+         <property name="readOnly">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </widget>
+  </widget>
+  <widget class="QDockWidget" name="fStatusDock">
+   <property name="sizePolicy">
+    <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="minimumSize">
+    <size>
+     <width>241</width>
+     <height>787</height>
+    </size>
+   </property>
+   <property name="features">
+    <set>QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable</set>
+   </property>
+   <property name="allowedAreas">
+    <set>Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea</set>
+   </property>
+   <property name="windowTitle">
+    <string>System status</string>
+   </property>
+   <attribute name="dockWidgetArea">
+    <number>1</number>
+   </attribute>
+   <widget class="QWidget" name="fStatusContent">
+    <layout class="QVBoxLayout" name="verticalLayout">
+     <item>
+      <widget class="Line" name="line_2">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QGridLayout" name="gridLayout_11">
+       <item row="2" column="0" colspan="5">
+        <widget class="Line" name="line">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="1">
+        <widget class="QLabel" name="fStatusFTM">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="toolTip">
+          <string>Trigger Master</string>
+         </property>
+         <property name="text">
+          <string>FTM</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="1">
+        <widget class="QLabel" name="fStatusDNS">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="toolTip">
+          <string>DIM Domain Name Servcer (DNS)</string>
+         </property>
+         <property name="text">
+          <string>DNS</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="5" column="1">
+        <widget class="QLabel" name="label_59">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="text">
+          <string>FTU</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="6" column="1">
+        <widget class="QLabel" name="fStatusFAD">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="toolTip">
+          <string>Data acquisition (DRS4 readou)</string>
+         </property>
+         <property name="text">
+          <string>FAD</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="12" column="1">
+        <widget class="QLabel" name="label_135">
+         <property name="text">
+          <string>Slow Control</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="2">
+        <widget class="QPushButton" name="fStatusDNSLed">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>false</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="3">
+        <widget class="QLabel" name="fStatusDNSLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="4">
+        <spacer name="horizontalSpacer_8">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item row="4" column="2">
+        <widget class="QPushButton" name="fStatusFTMLed">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>false</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="3">
+        <widget class="QLabel" name="fStatusFTMLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="5" column="2">
+        <widget class="QPushButton" name="fStatusFTULed">
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="6" column="2">
+        <widget class="QPushButton" name="fStatusFADLed">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>false</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="12" column="2">
+        <widget class="QPushButton" name="fStatusFSCLed">
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="12" column="3">
+        <widget class="QLabel" name="fStatusFSCLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="6" column="3">
+        <widget class="QLabel" name="fStatusFADLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="5" column="3">
+        <widget class="QLabel" name="fStatusFTULabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="7" column="2">
+        <widget class="QPushButton" name="fStatusEventBuilderLed">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>false</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="9" column="1">
+        <widget class="QLabel" name="label_232">
+         <property name="text">
+          <string>Bias supply</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="10" column="1">
+        <widget class="QLabel" name="label_244">
+         <property name="text">
+          <string>Feedback</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="9" column="3">
+        <widget class="QLabel" name="fStatusBiasLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="3">
+        <widget class="QLabel" name="fStatusMCPLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="2">
+        <widget class="QPushButton" name="fStatusMCPLed">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>false</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="1">
+        <widget class="QLabel" name="label_246">
+         <property name="text">
+          <string>MCP</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="9" column="2">
+        <widget class="QPushButton" name="fStatusBiasLed">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>false</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="8" column="2">
+        <widget class="QPushButton" name="fStatusDriveLed">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>false</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="7" column="1">
+        <widget class="QLabel" name="label_124">
+         <property name="text">
+          <string>Event builder</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="8" column="1">
+        <widget class="QLabel" name="label_125">
+         <property name="text">
+          <string>Drive</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="7" column="3">
+        <widget class="QLabel" name="fStatusEventBuilderLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="8" column="3">
+        <widget class="QLabel" name="fStatusDriveLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="11" column="1">
+        <widget class="QLabel" name="label_262">
+         <property name="text">
+          <string>Rate control</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="10" column="2">
+        <widget class="QPushButton" name="fStatusFeedbackLed">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>false</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="11" column="2">
+        <widget class="QPushButton" name="fStatusRateControlLed">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>false</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="10" column="3">
+        <widget class="QLabel" name="fStatusFeedbackLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="11" column="3">
+        <widget class="QLabel" name="fStatusRateControlLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="15" column="3">
+        <widget class="QLabel" name="fStatusChatLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="15" column="2">
+        <widget class="QPushButton" name="fStatusChatLed">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>false</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="15" column="1">
+        <widget class="QLabel" name="fStatusChat">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="toolTip">
+          <string>Chat server</string>
+         </property>
+         <property name="text">
+          <string>Chat</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="16" column="1">
+        <widget class="QLabel" name="label_60">
+         <property name="text">
+          <string>Scheduler</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="16" column="2">
+        <widget class="QPushButton" name="fStatusSchedulerLed">
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="16" column="3">
+        <widget class="QLabel" name="fStatusSchedulerLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="13" column="2">
+        <widget class="QPushButton" name="fStatusLoggerLed">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>false</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="14" column="2">
+        <widget class="QPushButton" name="fStatusWeatherLed">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset resource="design.qrc">
+           <normaloff>:/Resources/icons/gray circle 1.png</normaloff>:/Resources/icons/gray circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>false</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="13" column="1">
+        <widget class="QLabel" name="fStatusLogger">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="toolTip">
+          <string>Data Logger (writes slow control files)</string>
+         </property>
+         <property name="text">
+          <string>Logger</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="14" column="1">
+        <widget class="QLabel" name="fStatusWeather">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="toolTip">
+          <string>Data Logger (writes slow control files)</string>
+         </property>
+         <property name="text">
+          <string>Weather</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="13" column="3">
+        <widget class="QLabel" name="fStatusLoggerLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="14" column="3">
+        <widget class="QLabel" name="fStatusWeatherLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="Line" name="line_4">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLabel" name="label_144">
+       <property name="text">
+        <string>FTM</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout_25">
+       <property name="topMargin">
+        <number>0</number>
+       </property>
+       <item>
+        <widget class="QPushButton" name="fFtmStartRun">
+         <property name="text">
+          <string>Start trigger</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QPushButton" name="fFtmStopRun">
+         <property name="text">
+          <string>Stop trigger</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QLabel" name="label_150">
+       <property name="text">
+        <string>FAD</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QGridLayout" name="gridLayout_54">
+       <property name="topMargin">
+        <number>0</number>
+       </property>
+       <item row="0" column="0">
+        <widget class="QPushButton" name="fFadStart">
+         <property name="text">
+          <string>Start</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="1">
+        <widget class="QPushButton" name="fFadStop">
+         <property name="text">
+          <string>Stop</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="2">
+        <widget class="QPushButton" name="fFadAbort">
+         <property name="text">
+          <string>Abort</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="0" colspan="3">
+        <layout class="QHBoxLayout" name="horizontalLayout_26">
+         <property name="topMargin">
+          <number>0</number>
+         </property>
+         <item>
+          <widget class="QPushButton" name="fFadSoftReset">
+           <property name="text">
+            <string>Soft Reset</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="fFadHardReset">
+           <property name="text">
+            <string>Hard Reset</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QLabel" name="label_155">
+       <property name="text">
+        <string>MCP</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QGridLayout" name="gridLayout_55">
+       <property name="topMargin">
+        <number>0</number>
+       </property>
+       <item row="0" column="0">
+        <widget class="QPushButton" name="fMcpStartRun">
+         <property name="text">
+          <string>Start Run</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="0" colspan="3">
+        <widget class="QComboBox" name="fMcpRunType"/>
+       </item>
+       <item row="2" column="0" colspan="3">
+        <layout class="QHBoxLayout" name="horizontalLayout_29">
+         <item>
+          <widget class="QComboBox" name="fMcpNumEvents"/>
+         </item>
+         <item>
+          <widget class="QComboBox" name="fMcpTime"/>
+         </item>
+        </layout>
+       </item>
+       <item row="0" column="1">
+        <widget class="QPushButton" name="fMcpStopRun">
+         <property name="text">
+          <string>Stop Run</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="2">
+        <widget class="QPushButton" name="fMcpReset">
+         <property name="text">
+          <string>Reset</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <spacer name="verticalSpacer_31">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>40</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="fShutdown">
+       <property name="text">
+        <string>Shutdown Network</string>
+       </property>
+       <property name="icon">
+        <iconset resource="design.qrc">
+         <normaloff>:/Resources/icons/warning 1.png</normaloff>:/Resources/icons/warning 1.png</iconset>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="fShutdownAll">
+       <property name="text">
+        <string>Shutdown Network + DNS</string>
+       </property>
+       <property name="icon">
+        <iconset resource="design.qrc">
+         <normaloff>:/Resources/icons/warning 1.png</normaloff>:/Resources/icons/warning 1.png</iconset>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </widget>
+  </widget>
+  <action name="fMenuLogSaveAs">
+   <property name="text">
+    <string>Save as...</string>
+   </property>
+  </action>
+  <action name="actionTest">
+   <property name="text">
+    <string>Test</string>
+   </property>
+  </action>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>RootWidget</class>
+   <extends>QWidget</extends>
+   <header>RootWidget.h</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
+   <class>SpinBox4ns</class>
+   <extends>QSpinBox</extends>
+   <header>SpinBox4ns.h</header>
+  </customwidget>
+  <customwidget>
+   <class>SpinBoxHex</class>
+   <extends>QSpinBox</extends>
+   <header>SpinBoxHex.h</header>
+  </customwidget>
+  <customwidget>
+   <class>QCameraWidget</class>
+   <extends>QWidget</extends>
+   <header>QCameraWidget.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <resources>
+  <include location="design.qrc"/>
+ </resources>
+ <connections>
+  <connection>
+   <sender>fTextClear</sender>
+   <signal>clicked()</signal>
+   <receiver>fTextEdit</receiver>
+   <slot>clear()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1252</x>
+     <y>870</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>775</x>
+     <y>898</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fTextFontPlus</sender>
+   <signal>clicked()</signal>
+   <receiver>fTextEdit</receiver>
+   <slot>zoomIn()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1313</x>
+     <y>870</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>939</x>
+     <y>898</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fTextFontMinus</sender>
+   <signal>clicked()</signal>
+   <receiver>fTextEdit</receiver>
+   <slot>zoomOut()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1348</x>
+     <y>870</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>927</x>
+     <y>898</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fLogClear</sender>
+   <signal>clicked()</signal>
+   <receiver>fLogText</receiver>
+   <slot>clear()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1241</x>
+     <y>109</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>631</x>
+     <y>122</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fLogFontPlus</sender>
+   <signal>clicked()</signal>
+   <receiver>fLogText</receiver>
+   <slot>zoomIn()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1302</x>
+     <y>109</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>640</x>
+     <y>181</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fLogFontMinus</sender>
+   <signal>clicked()</signal>
+   <receiver>fLogText</receiver>
+   <slot>zoomOut()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1337</x>
+     <y>109</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>640</x>
+     <y>181</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fChatMessage</sender>
+   <signal>returnPressed()</signal>
+   <receiver>fChatSend</receiver>
+   <slot>animateClick()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1280</x>
+     <y>793</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1337</x>
+     <y>794</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fChatClear</sender>
+   <signal>clicked()</signal>
+   <receiver>fChatText</receiver>
+   <slot>clear()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1241</x>
+     <y>105</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>640</x>
+     <y>177</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fChatFontPlus</sender>
+   <signal>clicked()</signal>
+   <receiver>fChatText</receiver>
+   <slot>zoomIn()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1302</x>
+     <y>105</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>640</x>
+     <y>177</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fChatFontMinus</sender>
+   <signal>clicked()</signal>
+   <receiver>fChatText</receiver>
+   <slot>zoomOut()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1337</x>
+     <y>105</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>640</x>
+     <y>177</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimCmdServers</sender>
+   <signal>activated(QModelIndex)</signal>
+   <receiver>fDimCmdCommands</receiver>
+   <slot>setRootIndex(QModelIndex)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>358</x>
+     <y>369</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>607</x>
+     <y>433</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimCmdCommands</sender>
+   <signal>activated(QModelIndex)</signal>
+   <receiver>fDimCmdDescription</receiver>
+   <slot>setRootIndex(QModelIndex)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>607</x>
+     <y>358</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1337</x>
+     <y>539</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimCmdLineEdit</sender>
+   <signal>returnPressed()</signal>
+   <receiver>fDimCmdSend</receiver>
+   <slot>animateClick()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1280</x>
+     <y>793</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1337</x>
+     <y>794</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimCmdServers</sender>
+   <signal>clicked(QModelIndex)</signal>
+   <receiver>fDimCmdCommands</receiver>
+   <slot>setRootIndex(QModelIndex)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>358</x>
+     <y>178</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>607</x>
+     <y>243</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimCmdCommands</sender>
+   <signal>clicked(QModelIndex)</signal>
+   <receiver>fDimCmdDescription</receiver>
+   <slot>setRootIndex(QModelIndex)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>607</x>
+     <y>298</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1337</x>
+     <y>372</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimSvcServers</sender>
+   <signal>clicked(QModelIndex)</signal>
+   <receiver>fDimSvcServices</receiver>
+   <slot>setRootIndex(QModelIndex)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>358</x>
+     <y>255</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>607</x>
+     <y>256</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimSvcServices</sender>
+   <signal>clicked(QModelIndex)</signal>
+   <receiver>fDimSvcDescription</receiver>
+   <slot>setRootIndex(QModelIndex)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>607</x>
+     <y>252</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1337</x>
+     <y>318</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimSvcServers</sender>
+   <signal>activated(QModelIndex)</signal>
+   <receiver>fDimSvcServices</receiver>
+   <slot>setRootIndex(QModelIndex)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>358</x>
+     <y>270</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>607</x>
+     <y>270</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimSvcServices</sender>
+   <signal>activated(QModelIndex)</signal>
+   <receiver>fDimSvcDescription</receiver>
+   <slot>setRootIndex(QModelIndex)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>607</x>
+     <y>270</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1003</x>
+     <y>270</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>pushButton</sender>
+   <signal>clicked()</signal>
+   <receiver>fDimSvcText</receiver>
+   <slot>clear()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1241</x>
+     <y>498</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1004</x>
+     <y>572</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>pushButton_2</sender>
+   <signal>clicked()</signal>
+   <receiver>fDimSvcText</receiver>
+   <slot>zoomIn()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1302</x>
+     <y>498</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1004</x>
+     <y>572</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>pushButton_3</sender>
+   <signal>clicked()</signal>
+   <receiver>fDimSvcText</receiver>
+   <slot>zoomOut()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1337</x>
+     <y>498</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1004</x>
+     <y>572</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fAdcPersistent</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>fAdcAutoScale</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1337</x>
+     <y>438</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1337</x>
+     <y>399</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fAdcPersistent</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>fAdcDynamicScale</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1337</x>
+     <y>438</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1337</x>
+     <y>374</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fAdcPersistent</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>fAdcManualScale</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1337</x>
+     <y>438</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1337</x>
+     <y>349</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
Index: branches/testFACT++branch/gui/fact.cc
===================================================================
--- branches/testFACT++branch/gui/fact.cc	(revision 18277)
+++ branches/testFACT++branch/gui/fact.cc	(revision 18277)
@@ -0,0 +1,97 @@
+#include "FactGui.h"
+
+#include <TQtWidget.h>
+#include <TSystem.h>
+
+#include "src/FACT.h"
+#include "src/Dim.h"
+#include "src/Configuration.h"
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout << "\n"
+        "The FACT++ Graphical User Interfact (GUI).\n"
+        "\n"
+        "Usage: fact [-c type] [OPTIONS]\n"
+        "  or:  fact [OPTIONS]\n";
+    cout << endl;
+
+}
+
+void PrintHelp()
+{
+    /* Additional help text which is printed after the configuration
+     options goes here */
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description config("Program options");
+    config.add_options()
+        ("dns",  var<string>("localhost"), "Dim nameserver (overwites DIM_DNS_NODE environment variable)")
+        ("host", var<string>(""),          "Address with which the Dim nameserver can connect to this host (overwites DIM_HOST_NODE environment variable)")
+        ("pixel-map-file",  var<string>("FACTmap111030.txt"), "Pixel mapping file. Used here to get the default reference voltage.")
+        ("CommentDB",  var<string>(""), "")
+        ;
+
+    po::options_description runtype("Run type configuration");
+    runtype.add_options()
+        ("run-type",  vars<string>(),   "Names of available run-types")
+        ("run-time",  vars<string>(),   "Possible run-times for runs")
+        ("run-count", vars<uint32_t>(), "Number of events for a run")
+        ;
+
+    conf.AddEnv("dns",  "DIM_DNS_NODE");
+    conf.AddEnv("host", "DIM_HOST_NODE");
+
+    conf.AddOptions(config);
+    conf.AddOptions(runtype);
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return -1;
+
+    Dim::Setup(conf.Get<string>("dns"), conf.Get<string>("host"));
+
+    cout << "LD_LIBRARY_PATH=" << gSystem->GetDynamicPath() << endl;
+
+    cout << "--- Starting QApplication ---" << endl;
+    QApplication app(argc, const_cast<char**>(argv));
+
+    cout << "--- Working around a root bug ---" << endl;
+    {
+        // It seems sometimes TGQt::RegisterWid is called before
+        // fWidgetArray is initialized, so we force that to happen here
+//        TQtWidget(NULL);
+//        cout << "LD_LIBRARY_PATH=" << gSystem->GetDynamicPath() << endl;
+    }
+
+    cout << "--- Instantiating GUI ---" << endl;
+    FactGui gui(conf);
+
+    cout << "--- Show GUI ---" << endl;
+    gui.show();
+
+    cout << "--- Main loop ---" << endl;
+
+    const int rc = app.exec();
+
+    cout << "The end." << endl;
+
+    return rc;
+}
Index: branches/testFACT++branch/munin/agilent_curr
===================================================================
--- branches/testFACT++branch/munin/agilent_curr	(revision 18277)
+++ branches/testFACT++branch/munin/agilent_curr	(revision 18277)
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+case $1 in
+   config)
+        cat <<'EOM'
+graph_title Agilent current
+graph_vlabel current
+graph_category environment
+agilent_cur1.label Camera current
+agilent_cur2.label Interlock current
+agilent_cur3.label Bias current
+EOM
+        exit 0;;
+esac
+
+DATA=`echo -e -n "meas:curr?\n" | nc 10.0.100.220 5025`
+RC=$?
+#echo $RC $DATA
+DATA=`printf %.3f ${DATA}`
+if [ "$RC" == "0" -a $DATA != "0.000" ] ; then
+   echo agilent_cur1.value $DATA
+fi
+
+DATA=`echo -e -n "meas:curr?\n" | nc 10.0.100.224 5025`
+RC=$?
+#echo $RC $DATA
+DATA=`printf %.3f ${DATA}`
+if [ "$RC" == "0" -a $DATA != "0.000" ] ; then
+   echo agilent_cur2.value $DATA
+fi
+
+DATA=`echo -e -n "meas:curr?\n" | nc 10.0.100.222 5025`
+RC=$?
+#echo $RC $DATA
+DATA=`printf %.3f ${DATA}`
+if [ "$RC" == "0" -a $DATA != "0.000" ] ; then
+   echo agilent_cur3.value $DATA
+fi
+
Index: branches/testFACT++branch/munin/agilent_volt
===================================================================
--- branches/testFACT++branch/munin/agilent_volt	(revision 18277)
+++ branches/testFACT++branch/munin/agilent_volt	(revision 18277)
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+case $1 in
+   config)
+        cat <<'EOM'
+graph_title Agilent voltage
+graph_vlabel volt
+graph_category environment
+agilent_volt1.label Camera voltage (51V)
+agilent_volt2.label Interlock voltage (24V)
+agilent_volt3.label Bias voltage (80V)
+EOM
+        exit 0;;
+esac
+
+DATA=`echo -e -n "meas:volt?\n" | nc 10.0.100.220 5025`
+RC=$?
+DATA=`printf %.3f ${DATA}`
+
+if [ "$RC" == "0" -a "$DATA" != "0.000"  ] ; then
+   echo agilent_volt1.value $DATA
+fi
+
+DATA=`echo -e -n "meas:volt?\n" | nc 10.0.100.224 5025`
+RC=$?
+DATA=`printf %.3f ${DATA}`
+
+if [ "$RC" == "0" -a "$DATA" != "0.000"  ] ; then
+   echo agilent_volt2.value $DATA
+fi
+
+DATA=`echo -e -n "meas:volt?\n" | nc 10.0.100.222 5025`
+RC=$?
+DATA=`printf %.3f ${DATA}`
+
+if [ "$RC" == "0" -a "$DATA" != "0.000" ] ; then
+   echo agilent_volt3.value $DATA
+fi
+
Index: branches/testFACT++branch/munin/container_temp
===================================================================
--- branches/testFACT++branch/munin/container_temp	(revision 18277)
+++ branches/testFACT++branch/munin/container_temp	(revision 18277)
@@ -0,0 +1,58 @@
+#!/bin/bash
+
+case $1 in
+   config)
+        cat <<'EOM'
+graph_args --lower-limit -15 -r
+graph_title Temperature
+graph_vlabel temperature
+graph_category environment
+container_temp.label container
+magic_temp.label MAGIC
+magic_dew.label dew point
+container_temp.warning 35
+container_temp.critical 40
+EOM
+        exit 0;;
+esac
+
+
+DATA=`curl -s "http://10.0.100.234/statusjsn.js?components=18179&_=1365876572736"`
+
+RC=$?
+
+if [ "$RC" == "0" ] ; then
+
+     . /etc/munin/plugins/ticktick.sh
+
+     tickParse "$DATA"
+
+     VAL1=``sensor_values[0].values[0][0].v``
+     MIN1=``sensor_values[0].values[0][0].st[0]``
+     MAX1=``sensor_values[0].values[0][0].st[1]``
+
+     echo container_temp.value $VAL1
+
+fi
+
+
+VAL2=`wget -q -O- http://www.magic.iac.es/site/weather/weather_data.txt | grep TE | cut -c3-`
+
+RC=$?
+
+if [ "$RC" == "0" ] ; then
+
+    echo magic_temp.value $VAL2
+
+fi
+
+
+VAL3=`wget -q -O- http://www.magic.iac.es/site/weather/weather_data.txt | grep DP | cut -c3-`
+
+RC=$?
+
+if [ "$RC" == "0" ] ; then
+
+    echo magic_dew.value $VAL3
+
+fi
Index: branches/testFACT++branch/munin/ticktick.sh
===================================================================
--- branches/testFACT++branch/munin/ticktick.sh	(revision 18277)
+++ branches/testFACT++branch/munin/ticktick.sh	(revision 18277)
@@ -0,0 +1,368 @@
+#!/usr/bin/env bash
+
+ARGV=$@
+
+__tick_error() {
+  echo "TICKTICK PARSING ERROR: "$1
+}
+
+# This is from https://github.com/dominictarr/JSON.sh
+# See LICENSE for more info. {{{
+__tick_json_tokenize() {
+  local ESCAPE='(\\[^u[:cntrl:]]|\\u[0-9a-fA-F]{4})'
+  local CHAR='[^[:cntrl:]"\\]'
+  local STRING="\"$CHAR*($ESCAPE$CHAR*)*\""
+  local VARIABLE="\\\$[A-Za-z0-9_]*"
+  local NUMBER='-?(0|[1-9][0-9]*)([.][0-9]*)?([eE][+-]?[0-9]*)?'
+  local KEYWORD='null|false|true'
+  local SPACE='[[:space:]]+'
+  egrep -ao "$STRING|$VARIABLE|$NUMBER|$KEYWORD|$SPACE|." --color=never | egrep -v "^$SPACE$"  # eat whitespace
+}
+
+__tick_json_parse_array() {
+  local index=0
+  local ary=''
+
+  read -r Token
+
+  case "$Token" in
+    ']') ;;
+    *)
+      while :
+      do
+        __tick_json_parse_value "$1" "`printf "%012d" $index`"
+
+        (( index++ ))
+        ary+="$Value" 
+
+        read -r Token
+        case "$Token" in
+          ']') break ;;
+          ',') ary+=_ ;;
+          *) 
+            __tick_error "Array syntax malformed"
+            break ;;
+        esac
+        read -r Token
+      done
+      ;;
+  esac
+}
+
+__tick_json_parse_object() {
+  local key
+  local obj=''
+  read -r Token
+
+  case "$Token" in
+    '}') ;;
+    *)
+      while :
+      do
+        # The key, it should be valid
+        case "$Token" in
+          '"'*'"'|\$[A-Za-z0-9_]*) key=$Token ;;
+          # If we get here then we aren't on a valid key
+          *) 
+            __tick_error "Object without a Key"
+            break
+            ;;
+        esac
+
+        # A colon
+        read -r Token
+
+        # The value
+        read -r Token
+        __tick_json_parse_value "$1" "$key"
+        obj+="$key:$Value"        
+
+        read -r Token
+        case "$Token" in
+          '}') break ;;
+          ',') obj+=_ ;;
+        esac
+        read -r Token
+      done
+    ;;
+  esac
+}
+
+__tick_json_parse_value() {
+  local jpath="${1:+$1_}$2"
+  local prej=${jpath//\"/}
+
+  [ "$prej" ] && prej="_$prej"
+  [ "$prej" ] && prej=${prej/-/__hyphen__}
+
+  case "$Token" in
+    '{') __tick_json_parse_object "$jpath" ;;
+    '[') __tick_json_parse_array  "$jpath" ;;
+
+    *) 
+      Value=$Token 
+      Path="$Prefix$prej"
+      Path=${Path/#_/}
+      echo __tick_data_${Path// /}=$Value 
+      ;;
+  esac
+}
+
+__tick_json_parse() {
+  read -r Token
+  __tick_json_parse_value
+  read -r Token
+}
+# }}} End of code from github
+
+# Since the JSON parser is just json parser, and we have a runtime
+# and assignments built on to this, along with javascript like referencing
+# there is a two-pass system, just because it was easier to code.
+#
+# This one separates out the valid JSON from the runtime library support
+# and little fo' language that this is coded in.
+__tick_fun_tokenize_expression() {
+  CHAR='[0-9]*[A-Za-z_$\\][0-9]*'
+  FUNCTION="(push|pop|shift|items|delete|length)[[:space:]]*\("
+  NUMBER='[0-9]*'
+  STRING="$CHAR*($CHAR*)*"
+  PAREN="[()]"
+  QUOTE="[\"\']"
+  SPACE='[[:space:]]+'
+  egrep -ao "$FUNCTION|$STRING|$QUOTE|$PAREN|$NUMBER|$SPACE|." --color=never |\
+    sed "s/^/S/g;s/$/E/g" # Make sure spaces are respected
+}
+
+__tick_fun_parse_expression() {
+  while read -r token; do
+    token=${token/#S/}
+    token=${token/%E/}
+
+    if [ $done ]; then
+      suffix+="$token"
+    else
+      case "$token" in
+        #
+        # The ( makes sure that you can do key.push = 1, not that you would, but
+        # avoiding having reserved words lowers the barrier to entry.  Try doing
+        # say function debugger() {} in javascript and then run it in firefox. That's
+        # a fun one.
+        #
+        # So, it's probably better to be as lenient as possible when dealing with
+        # syntax like this.
+        #
+        'push('|'pop('|'shift('|'items('|'delete('|'length(') function=$token ;;
+        ')') 
+          function=${function/%(/}
+
+          #
+          # Since bash only returns integers, we have to have a significant hack in order
+          # to return a string and then do something to the object. Basically, everything
+          # gets slammed inline.
+          #
+          # Q: Why don't you just reserve a global and then have the subfunction assign to it?
+          #
+          # A: Because the assignment has to happen prior to the function running. There's a number
+          #    of syntax tricks where you can basically emulate "pointers", but then the coder would
+          #    have to know about this "pointer" idea and then deal with their variables a different
+          #    way.
+          #
+          # ---------
+          #
+          # Q: Why don't you just do stuff in a sub-shell and then make sure you emit things in 
+          #    something like a ( ) or a ` ` block?
+          #
+          # A: Because environments get copied into the subshell and then you'd be modifying the
+          #    copy, not the original data.  After the subshell ended, the original environment
+          #    would stay, unmodified.
+          #
+          # ---------
+          # 
+          # Q: Why don't you use the file system and do some magic with subthreads or something?
+          #
+          # A: Really? This should have side-effects? In programming there is something called
+          #    the principle of least astonishment. In a way, the implementation below somewhat
+          #    breaks that principle.  However, using a file system or doing something really 
+          #    funky like that, would violate that principle far more.
+          #
+          # ---------
+          #
+          # But really, I sincerely hate the current solution. If you have a better idea, please
+          # please, open a dialog with me.
+          #
+          case $function in
+            items) echo '${!__tick_data_'"$Prefix"'*}' ;;
+            delete) echo 'unset __tick_data_'${Prefix/%_/} ;;
+            pop) echo '"$( __tick_runtime_last ${!__tick_data_'"$Prefix"'*} )"; __tick_runtime_pop ${!__tick_data_'"$Prefix"'*}' ;;
+            shift) echo '`__tick_runtime_first ${!__tick_data_'"$Prefix"'*}`; __tick_runtime_shift ${!__tick_data_'"$Prefix"'*}' ;;
+            length) echo '`__tick_runtime_length ${!__tick_data_'"$Prefix"'*}`' ;;
+            *) echo "__tick_runtime_$function \"$arguments\" __tick_data_$Prefix "'${!__tick_data_'"$Prefix"'*}'
+          esac
+          unset function
+
+          return
+          ;;
+
+        [0-9]*[A-Za-z]*[0-9]*) [ -n "$function" ] && arguments+="$token" || Prefix+="$token" ;;
+
+        [0-9]*) Prefix+=`printf "%012d" $token` ;;
+        '['|.) Prefix+=_ ;;
+        '"'|"'"|']') ;;
+        =) done=1 ;;
+        # Only respect a space if its in the args.
+        ' ') [ -n "$function" ] && arguments+="$token" ;;
+        *) [ -n "$function" ] && arguments+="$token" || Prefix+="$token" ;;
+      esac
+    fi
+  done
+
+  if [ "$suffix" ]; then
+    echo "$suffix" | __tick_json_tokenize | __tick_json_parse
+  else
+    Prefix=${Prefix/-/__hyphen__}
+    echo '${__tick_data_'$Prefix'}'
+  fi
+}
+
+__tick_fun_parse_tickcount_reset() {
+  # If the tick count is 1 then the backtick we encountered was a 
+  # shell code escape. These ticks need to be preserved for the script.
+  if (( ticks == 1 )); then
+    code+='`'
+  fi
+
+  # This resets the backtick counter so that `some shell code` doesn't
+  # trip up the tokenizer
+  ticks=0
+}
+
+# The purpose of this function is to separate out the Bash code from the
+# special "tick tick" code.  We do this by hijacking the IFS and reading
+# in a single character at a time
+__tick_fun_parse() {
+  IFS=
+
+  # code oscillates between being bash or tick tick blocks.
+  code=''
+
+  # By using -n, we are given that a newline will be an empty token. We
+  # can certainly test for that.
+  while read -r -n 1 token; do
+    case "$token" in
+      '`') 
+
+        # To make sure that we find two sequential backticks, we reset the counter
+        # if it's not a backtick.
+        if (( ++ticks == 2 )); then
+
+          # Whether we are in the stanza or not, is controlled by a different
+          # variable
+          if (( tickFlag == 1 )); then
+            tickFlag=0
+            [ "$code" ] && echo -n "`echo $code | __tick_fun_tokenize_expression | __tick_fun_parse_expression`"
+          else
+            tickFlag=1
+            echo -n "$code"
+          fi
+
+          # If we have gotten this deep, then we are toggling between backtick
+          # and bash. So se should unset the code.
+          unset code
+        fi
+        ;;
+
+      '') 
+        __tick_fun_parse_tickcount_reset
+
+        # this is a newline. If we are in ticktick, then we want to consume
+        # them for the parser later on. If we are in bash, then we want to
+        # preserve them.  We do this by emitting our buffer and then clearing
+        # it
+        if (( tickFlag == 0 )); then
+          echo "$code"
+          unset code
+        fi
+
+        ;;
+
+      *) 
+        __tick_fun_parse_tickcount_reset
+        
+        # This is a buffer of the current code, either bash or backtick
+        code+="$token"
+        ;;
+    esac 
+  done
+}
+
+__tick_fun_tokenize() {
+  # This makes sure that when we rerun the code that we are
+  # interpreting, we don't try to interpret it again.
+  export __tick_var_tokenized=1
+
+  # Using bash's caller function, which is for debugging, we
+  # can find out the name of the program that called us. We 
+  # then cat the calling program and push it through our parser
+  local code=$(cat `caller 1 | cut -d ' ' -f 3` | __tick_fun_parse)
+
+  # Before the execution we search to see if we emitted any parsing errors
+  hasError=`echo "$code" | grep "TICKTICK PARSING ERROR" | wc -l`
+
+  if [ $__tick_var_debug ]; then
+    printf "%s\n" "$code"
+    exit 0
+  fi
+
+  # If there are no errors, then we go ahead
+  if (( hasError == 0 )); then
+    # Take the output and then execute it
+
+    bash -c "$code" -- $ARGV
+  else
+    echo "Parsing Error Detected, see below"
+
+    # printf observes the new lines
+    printf "%s\n" "$code"
+    echo "Parsing stopped here."
+  fi
+
+  exit
+}
+
+## Runtime {
+__tick_runtime_length() { echo $#; }
+__tick_runtime_first() { echo ${!1}; }
+__tick_runtime_last() { eval 'echo $'${!#}; }
+__tick_runtime_pop() { eval unset ${!#}; }
+
+__tick_runtime_shift() {
+  local left=
+  local right=
+
+  for (( i = 1; i <= $# + 1; i++ )) ; do
+    if [ "$left" ]; then
+      eval "$left=\$$right"
+    fi
+    left=$right
+    right=${!i}
+  done
+  eval unset $left
+}
+__tick_runtime_push() {
+  local value="${1/\'/\\\'}"
+  local base=$2
+  local lastarg=${!#}
+
+  let nextval=${lastarg/$base/}+1
+  nextval=`printf "%012d" $nextval`
+
+  eval $base$nextval=\'$value\'
+}
+
+tickParse() {
+  eval `echo "$1" | __tick_json_tokenize | __tick_json_parse | tr '\n' ';'`
+}
+## } End of Runtime
+
+
+[ $__tick_var_tokenized ] || __tick_fun_tokenize
Index: branches/testFACT++branch/recompile.sh
===================================================================
--- branches/testFACT++branch/recompile.sh	(revision 18277)
+++ branches/testFACT++branch/recompile.sh	(revision 18277)
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+if [ ! -f compiling.lock ]; then
+
+   touch compiling.lock
+
+   if [ ! -x dimctrl ]; then
+      make $* dimctrl || exit
+   fi
+
+   dimctrl --quit --cmd ".w 3000" --cmd "DIS_DNS/KILL_SERVERS 126" --cmd ".w 3000" --cmd "DIS_DNS/EXIT 126"
+
+   sleep 5
+
+   make clean
+fi
+
+make $* && rm compiling.lock && sleep 15 && dimctrl --quit --cmd '.js scripts/check.js'
Index: branches/testFACT++branch/scripts/CheckFTU.js
===================================================================
--- branches/testFACT++branch/scripts/CheckFTU.js	(revision 18277)
+++ branches/testFACT++branch/scripts/CheckFTU.js	(revision 18277)
@@ -0,0 +1,47 @@
+'use strict';
+
+var service_ftm = new Subscription("FTM_CONTROL/FTU_LIST");
+
+// Make sure that we receive a 'Yes, we are connected and names are available' event
+service_ftm.get(5000);
+
+// Check for all FTUs to be connected when the next event arrives
+service_ftm.onchange = function(event)
+{
+    var ping = event.obj['Ping'];
+    for (var i=0; i<40; i++)
+    {
+        if (ping[i]==1)
+            continue;
+
+        var str = "";
+        for (var h=0; h<4; h++)
+        {
+            for (var w=0; w<10; w++)
+                str += ping[h*10+w];
+            if (h!=3)
+                str += '|';
+        }
+
+        console.out(str)
+
+        console.out("Problems in the FTU communication found.");
+        console.out("Send command to disable all FTUs.");
+        console.out(" => Crate reset needed.");
+
+        dim.send("FTM_CONTROL/ENABLE_FTU", -1, false);
+        throw new Error("CrateReset[FTU]");
+    }
+
+    // Signal success by closing the connection
+    service_ftm.close();
+}
+
+// Send ping (request FTU status)
+dim.send("FTM_CONTROL/PING");
+
+// Wait for 1 second for the answer
+var timeout = new Thread(3000, function(){ if (service_ftm.isOpen) throw new Error("Could not check that all FTUs are ok within 3s."); });
+while (service_ftm.isOpen)
+    v8.sleep();
+
Index: branches/testFACT++branch/scripts/CheckStates.js
===================================================================
--- branches/testFACT++branch/scripts/CheckStates.js	(revision 18277)
+++ branches/testFACT++branch/scripts/CheckStates.js	(revision 18277)
@@ -0,0 +1,304 @@
+'use strict';
+
+/**
+ *
+ *  Waits for the timeout (in ms) for the given servers to be online
+ *  and in one of the provided states.
+ *
+ *  Returns true if MAGIC_WEATHER is online, FTM_CONTROL is in Idle
+ *  and LID_CONTROL is either in Open or Closed.
+ *
+ *  Returns false if all given servers are online, but at least one is
+ *  not in the expected state.
+ *
+ *  Throws an exception if not all provided servers are online after
+ *  the given timeout.
+ *
+ *  If you want to wait infinitely: CheckStates(table, null)
+ *  If the timeout is negative (e.g. -500 means 500ms) or zero,
+ *     no exception is thrown but false is returned.
+ *
+ * @param table
+ *
+ * @param {Integer} [timeout=5000]
+ *    timeout in milliseconds
+ *
+ * @returns
+ *
+ * @throws
+ *
+ * @example
+ *    var table =
+ *    [
+ *        [ "MAGIC_WEATHER"  ],
+ *        [ "FTM_CONTROL",  [ "Idle" ] ],
+ *        [ "LID_CONTROL",  [ "Open", "Closed" ] ],
+ *    ];
+ *
+ *    checkStates(table);
+ *
+ *
+ */
+function checkStates(table, timeout, wait)
+{
+    if (timeout===undefined)
+        timeout = 5000;
+
+    var states = [];
+
+    var time = new Date();
+    while (1)
+    {
+        // Get states of all servers in question
+        states = [];
+        for (var i=0; i<table.length; i++)
+        {
+            var state = dim.state(table[i][0]);
+            states[i] = state ? state.name : undefined;
+        }
+
+        // Check if they are all valid
+        if (states.indexOf(undefined)<0)
+        {
+            // If they are all valid, check them against the
+            // state lists provided for each server
+            var rc = true;
+            for (var i=0; i<table.length; i++)
+            {
+                if (!table[i][1] || table[i][1].indexOf(states[i])>=0)
+                    continue;
+
+                if (!wait)
+                    dim.log(table[i][0]+" in ["+states[i]+"] not as it ought to be ["+table[i][1]+"]");
+
+                rc = false;
+            }
+            if (rc)
+                return rc;
+
+            if (!wait)
+                return false;
+        }
+
+        if ((new Date())-time>=Math.abs(timeout))
+            break;
+
+        v8.sleep();
+    }
+
+    if (timeout<0)
+        return false;
+
+    // Create a list of all servers which do not have valid states yet
+    var servers = [];
+    for (var i=0; i<table.length; i++)
+        if (!states[i])
+            servers.push(table[i][0]);
+
+    // If all servers do not yet have valid states, it is obsolete to
+    // print all their names
+    if (servers.length==table.length && servers.length>1)
+        servers = [ "servers." ];
+
+    throw new Error("Timeout waiting for access to named states of "+servers.join(", "));
+}
+
+function checkSend(servers, timeout)
+{
+    if (timeout===undefined)
+        timeout = 5000;
+
+    var states = [];
+
+    var time = new Date();
+    while (1)
+    {
+        // Get states of all servers in question
+        states = [];
+        for (var i=0; i<servers.length; i++)
+            states[i] = dim.send(servers[i]);
+
+        // Check if they are all valid
+        if (states.indexOf(false)<0)
+            return true;
+
+        if ((new Date())-time>=Math.abs(timeout))
+            break;
+
+        v8.sleep();
+    }
+
+    if (timeout<0)
+        return false;
+
+    // Create a list of all servers which do not have valid states yet
+    var missing = [];
+    for (var i=0; i<servers.length; i++)
+        if (!states[i])
+            missing.push(servers[i]);
+
+    throw new Error("Timeout waiting for send-ready of "+missing.join(", "));
+}
+
+function Wait(server,states,timeout1,timeout2)
+{
+    if (typeof(states)=="string")
+        states = [ states ];
+
+    // If timeout2 is defined and >0 wait first for the
+    // server to come online. If it does not come online
+    // in time, an exception is thrown.
+    if (timout2>0 && CheckStates([ server ], timeout2))
+        return true;
+
+    var time = new Date();
+    while (1)
+    {
+        // If a server disconnects now while checking for the
+        // states, an exception will be thrown, too.
+        if (CheckStates([ server, states ], 0))
+            return true;
+
+        if (Date()-time>=abs(timeout1))
+            break;
+
+        v8.sleep();
+    }
+
+    if (timeout1<0)
+        throw new Error("Timeout waiting for Server "+server+" to be in ["+states+"]");
+
+    return false;
+}
+
+// Wait 5s for the FAD_CONTROL to get to the states
+//   return false if FAD_CONTROL is not online
+//   return false if state is not
+// Wait("FAD_CONTROL", [ "COnnected", "Disconnected" ], 5000);
+
+function dimwait(server, state, timeout)
+{
+    if (!timeout)
+        timeout = 5000;
+
+    var time = new Date();
+    while (1)
+    {
+        var s = dim.state(server);
+        if (s.index===state || s.name===state)
+            return true;
+
+        //if (s.index==undefined)
+        //    throw "Server "+server+" not connected waiting for "+state+".";
+
+        if (Date()-time>=timeout)
+            break;
+
+        v8.sleep();
+    }
+
+    if (timeout>0)
+        throw new Error("Timeout waiting for ["+states+"] of "+server+".");
+
+    return false;
+
+
+    /*
+    if (!timeout)
+        timeout = 5000;
+
+    var time = new Date();
+    while (timeout<0 || new Date()-time<timeout)
+    {
+        var s = dim.state(server);
+        if (s.index===state || s.name===state)
+            return true;
+
+        if (s.index==undefined)
+            throw "Server "+server+" not connected waiting for "+state+".";
+
+        v8.sleep();
+    }
+
+    return false;
+*/
+}
+
+function Sleep(timeout)
+{
+    if (!timeout)
+        timeout = 5000;
+
+    var time = new Date();
+    while (Date()-time<timeout)
+        v8.sleep();
+}
+
+function Timer()
+{
+    this.date = new Date();
+
+    this.reset = function() { this.date = new Date(); }
+    this.print = function(id)
+    {
+        var diff = Date()-this.date;
+        if (id)
+            console.out("Time["+id+"]: "+diff+"ms");
+        else
+            console.out("Time: "+diff+"ms");
+    }
+}
+
+function WaitStates(server, states, timeout, func)
+{
+    var save = dim.onchange[server];
+
+    function inner()
+    {
+        dim.onchange[server] = function(arg)
+        {
+            if (!this.states)
+                this.states = states instanceof Array ? states : [ states ];
+
+            var comp = this.states[0];
+            if (arg.index===comp || arg.name===comp || comp=='*')
+                this.states.shift();
+
+            //console.out(JSON.stringify(arg), this.states, comp, arg.name, "");
+
+            if (save instanceof Function)
+                save();
+
+            if (this.states.length==0)
+                delete dim.onchange[server];
+
+        }
+
+        if (func instanceof Function)
+            func();
+
+        var time = new Date();
+        while (1)
+        {
+            if (!dim.onchange[server])
+                return true;
+
+            if (new Date()-time>=timeout)
+                break;
+
+            v8.sleep();
+        }
+
+        delete dim.onchange[server];
+
+        if (timeout>0)
+            throw new Error("Timeout waiting for ["+states+"] of "+server+".");
+
+        return false;
+    }
+
+    var rc = inner();
+    dim.onchang
+        e[server] = save;
+    return rc;
+}
Index: branches/testFACT++branch/scripts/CheckUnderflow.js
===================================================================
--- branches/testFACT++branch/scripts/CheckUnderflow.js	(revision 18277)
+++ branches/testFACT++branch/scripts/CheckUnderflow.js	(revision 18277)
@@ -0,0 +1,243 @@
+'use strict';
+
+var Func = function() { };
+Func.sum = function(a, b) { return a+b; }
+Func.sq  = function(a, b) { return Math.sqrt(a*a + b*b); }
+Func.min = function(a, b) { return Math.min(a, b); }
+Func.max = function(a, b) { return Math.max(a, b); }
+Func.avg = function(arr)  { return arr.reduce(Func.Sum, 0)/arr.length; }
+Func.stat = function(arr, func)
+{
+    if (arr.length==0)
+        return undefined;
+
+    var sum = 0;
+    var sq  = 0;
+    var cnt = 0;
+    var min = arr[0];
+    var max = arr[0];
+    arr.forEach(function(val, idx) { sum+=val; sq+=val*val; if (val>max) max=val; if (val<min) min=val; if (func && func(val, idx)) cnt++ });
+    sum /= arr.length;
+    sq  /= arr.length;
+
+    return { avg:sum, rms:Math.sqrt(sq-sum*sum), min:min, max:max, count:cnt };
+}
+
+// ===================================================================
+
+console.out(("\n%78s".$("")).replace(/ /g, "="));
+
+if (dim.state("FTM_CONTROL").name=="TriggerOn")
+{
+    dim.send("FTM_CONTROL/STOP_TRIGGER");
+    dim.wait("FTM_CONTROL", "Valid");
+}
+
+
+include('scripts/CheckStates.js');
+
+var table =
+[
+ [ "MCP",                 [ "Idle"      ] ],
+ [ "AGILENT_CONTROL_24V", [ "VoltageOn" ] ],
+ [ "AGILENT_CONTROL_50V", [ "VoltageOn" ] ],
+ [ "AGILENT_CONTROL_80V", [ "VoltageOn" ] ],
+ [ "FTM_CONTROL",         [ "Valid"     ] ],
+ [ "FAD_CONTROL",         [ "Connected",    "RunInProgress"   ] ],
+ [ "BIAS_CONTROL",        [ "Disconnected", "VoltageOff"      ] ],
+ [ "DATA_LOGGER",         [ "WaitForRun",   "NightlyFileOpen", "Logging" ] ],
+];
+
+console.out("Checking states.");
+if (!checkStates(table))
+{
+    throw new Error("Something unexpected has happened. One of the servers",
+            "is in a state in which it should not be. Please,",
+            "try to find out what happened...");
+}
+
+// ===================================================================
+
+include('scripts/Hist1D.js');
+include('scripts/Hist2D.js');
+
+console.out("Checking power on time");
+
+var service_drs = new Subscription("FAD_CONTROL/DRS_RUNS");
+
+var runs = service_drs.get(5000, false);
+//if (!runs)
+//    throw new Error("Could not connect to FAD_CONTROL/DRS_RUNS");
+
+var power = dim.state("AGILENT_CONTROL_50V").time;
+var now   = new Date();
+
+var diff = (now-runs.time)/3600000;
+
+console.out(" * Now:                "+now);
+console.out(" * Last power cycle:   "+power);
+console.out(" * Last DRS calib set: "+(runs.data?runs.time:"none"));
+
+
+if (1)//diff>8 && now.getHours()>16 || runs.time<power)
+{
+    console.out("Checking send.");
+    checkSend(["FAD_CONTROL", "MCP", "RATE_CONTROL"]);
+    console.out("Checking send: done");
+
+    //console.out("Most probablay the camera has not been checked for underflows yet.");
+
+    var service_event = new Subscription("FAD_CONTROL/EVENT_DATA");
+
+    dim.send("FAD_CONTROL/START_DRS_CALIBRATION");
+    dim.send("FAD_CONTROL/SET_FILE_FORMAT", 0);
+
+    var sub_runs = new Subscription("FAD_CONTROL/RUNS");
+    var sruns = sub_runs.get(5000, false);
+
+    if (dim.state("FAD_CONTROL").name=="RunInProgress" || sruns.qos==1)
+    {
+        dim.send("FAD_CONTROL/CLOSE_OPEN_FILES");
+        dim.wait("FAD_CONTROL", "Connected", 3000);
+
+        console.out("Waiting for open files to be closed...");
+        v8.timeout(60000, function() { if (sub_runs.get(0, false).qos==0) return true; });
+
+        // Although the file should be closed now, the processing might still be on-going
+        // and delayed events might be received. The only fix for that issue is to
+        // add the run number to the data we are waiting for
+        v8.sleep(5000);
+    }
+
+    sub_runs.close();
+
+    console.out("Starting drs-gain... waiting for new event");
+
+    var sub_startrun = new Subscription("FAD_CONTROL/START_RUN");
+    var sub_incomplete = new Subscription("FAD_CONTROL/INCOMPLETE");
+    var sub_connections = new Subscription("FAD_CONTROL/CONNECTIONS");
+    sub_connections.get(5000);
+    sub_startrun.get(5000);
+
+    include('scripts/takeRun.js');
+
+    while (1)
+    {
+        var event_counter = service_event.get(10000, false).counter;
+
+        var stop = function ()
+        {
+            while (1)
+            {
+                if (dim.state("MCP").name=="TakingData" && service_event.get(0, false).counter>event_counter)
+                {
+                    dim.send("MCP/STOP");
+                    console.out("Sent MCP/STOP.");
+                    return;
+                }
+                v8.sleep(100);
+            }
+        }
+
+        var thread = new Thread(250, stop);
+
+        var rc = takeRun("drs-gain");
+
+        thread.kill();
+
+        if (rc)
+            break;
+    }
+
+    console.out("Event received.");
+
+    sub_incomplete.close();
+    sub_connections.close();
+    sub_startrun.close();
+
+
+    // FIXME: Restore DRS calibration in case of failure!!
+    //        FAD Re-connect in case of failure?
+    //        MCP/RESET in case of failure?
+    //        Proper error reporting!
+
+    var event = service_event.get(3000);//, false);
+    service_event.close();
+
+    console.out("Run stopped.");
+
+    dim.send("RATE_CONTROL/STOP"); // GlobalThresholdSet -> Connected
+    dim.wait("MCP", "Idle", 3000);
+
+    var nn = runs.data && runs.data.length>0 && runs.obj['roi']>0 ? runs.obj['run'].reduce(Func.max) : -1;
+    if (nn>0)
+    {
+        var night = runs.obj['night'];
+
+        var yy =  night/10000;
+        var mm = (night/100)%100;
+        var dd =  night%100;
+
+        var filefmt = "/loc_data/raw/%d/%02d/%02d/%8d_%03d.drs.fits";
+
+        dim.log("Trying to restore last DRS calibration #"+nn+"  ["+runs.time+"; "+night+"]");
+
+        // FIXME: Timeout
+        var drs_counter = service_drs.get(0, false).counter;
+        dim.send("FAD_CONTROL/LOAD_DRS_CALIBRATION", filefmt.$(yy, mm, dd, night, nn));
+
+        try
+        {
+            var now = new Date();
+            v8.timeout(3000, function() { if (service_drs.get(0, false).counter>drs_counter) return true; });
+            dim.log("Last DRS calibration restored ["+(new Date()-now)/1000+"s]");
+        }
+        catch (e)
+        {
+            console.warn("Restoring last DRS calibration failed.");
+        }
+    }
+
+    var hist = Hist2D(16, -2048.5, 2048.5, 11, -10, 100);
+
+    var data = event.obj;
+
+    for (var i=0; i<1440; i++)
+        hist.fill(data.avg[i], isNaN(data.rms[i])?-1:data.rms[i]);
+
+    hist.print();
+
+    var stat0 = Func.stat(data.avg, function(val, idx) { if (val<600) console.out(" PIX[hw="+idx+"]="+val); return val<600; });
+    var stat1 = Func.stat(data.rms);
+
+    console.out("Avg[min]=%.1f".$(stat0.min));
+    console.out("Avg[avg]=%.1f +- %.1f".$(stat0.avg, stat0.rms));
+    console.out("Avg[max]=%.1f".$(+stat0.max));
+    console.out("Avg[cnt]="+stat0.count);
+    console.out("");
+    console.out("Rms[min]=%.1f".$(stat1.min));
+    console.out("Rms[avg]=%.1f +- %.1f".$(stat1.avg, stat1.rms));
+    console.out("Rms[max]=%.1f".$(stat1.max));
+    console.out(("%78s\n".$("")).replace(/ /g, "="));
+
+    //      OK                            UNDERFLOW
+    // ------------------------------------------------------
+    // Avg[min]=722.0                Avg[min]=-380.0
+    // Avg[avg]=815.9 +- 45.9        Avg[avg]= 808.0 +- 102.0
+    // Avg[max]=930.5                Avg[max]= 931.1
+    // Avg[cnt]=0                    Avg[cnt]= 9
+
+    // Rms[min]=14.0                 Rms[min]=13.9
+    // Rms[avg]=16.5 +- 1.6          Rms[avg]=18.8 +- 26.8
+    // Rms[max]=44.0                 Rms[max]=382.1
+
+    if (stat0.count>0)
+    {
+        if (stat0.count>8)
+            throw new Error("Underflow condition detected in about "+parseInt(stat0.count/9+.5)+" DRS.");
+
+        console.warn("There is probably an underflow condition in one DRS... please check manually.");
+    }
+}
+
+service_drs.close();
Index: branches/testFACT++branch/scripts/Handler.js
===================================================================
--- branches/testFACT++branch/scripts/Handler.js	(revision 18277)
+++ branches/testFACT++branch/scripts/Handler.js	(revision 18277)
@@ -0,0 +1,48 @@
+'use strict';
+
+function Handler(name)
+{
+    this.name  = name;
+    this.array = [];
+
+    this.add = function(func)
+    {
+        this.array.push(func);
+        //console.out(this.name+":add [N="+this.array.length+"]");
+    }
+
+    this.run = function(timeout)
+    {
+        console.out(this.name+":start");
+
+        var rc = [];
+
+        var start = new Date();
+        while (!timeout || (new Date()-start)<timeout)
+        {
+            var done = true;
+
+            //rc = rc.map(this.array[i]);
+            //
+            //rc.forEach(function(el){ done &= el && el.length==0;);
+
+            for (var i=0; i<this.array.length; i++)
+            {
+                rc[i] = this.array[i](rc[i]);
+                if (rc[i]===undefined || rc[i].length>0)
+                    done = false;
+            }
+
+            if (done)
+            {
+                console.out(this.name+":success [time="+(new Date()-start)+"ms]");
+                return true;
+            }
+
+            v8.sleep();
+        }
+
+        console.out(this.name+":timeout ["+timeout+"ms]");
+        return false;
+    }
+}
Index: branches/testFACT++branch/scripts/Hist1D.js
===================================================================
--- branches/testFACT++branch/scripts/Hist1D.js	(revision 18277)
+++ branches/testFACT++branch/scripts/Hist1D.js	(revision 18277)
@@ -0,0 +1,109 @@
+/**
+ * @fileOverview A simple one dimensional histogram.
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ */
+'use strict';
+
+/**
+ *
+ * @constructor
+ *
+ * @param {Interger} nx
+ *
+ * @param {Number} xmin
+ *
+ * @param {Number} xmax
+ *
+ * @returns
+ *     A sub-classed array with the Hist1D functions added as properties.
+ *
+ * @example
+ *     var hist = Hist1D(10, -0.5, 1.5);
+ *
+ */
+function Hist1D(nx, xmin, xmax)
+{
+    /**
+     *
+     * Array
+     *
+     */
+    var arr = new Array(nx);
+
+    /**
+     *
+     * @exports arr.get as Hist1D.get
+     *
+     */
+    arr.get = function(x)
+    {
+        var ix = parseInt(nx*(x-xmin)/(xmax-xmin));
+
+        return arr[ix] ? arr[ix] : 0;
+    }
+
+    /**
+     *
+     * @exports arr.fill as Hist1D.fill
+     *
+     */
+    arr.fill = function(x, w)
+    {
+        if (!x || x===NaN)
+            return false;
+
+        var ix = parseInt(nx*(x-xmin)/(xmax-xmin));
+        if (ix<0 || ix>=nx)
+            return false;
+
+        if (!arr[ix])
+            arr[ix] = 0;
+
+        arr[ix] += w ? w : 1;
+
+        return true;
+    }
+
+    /**
+     *
+     * @exports arr.print as Hist1D.print
+     *
+     */
+    arr.print = function(len)
+    {
+        if (!len)
+            len = 40;
+        if (len<6)
+            len = 6;
+
+        var sum = arr.reduce(function(a,b){return a+b;}, 0);
+        var max = arr.reduce(function(a,b){return Math.max(a,b);}, 0);
+
+        console.out("");
+        for (var ix=nx-1; ix>=0; ix--)
+        {
+            var entry = arr[ix] ? arr[ix] : 0;
+
+            var line ="%3d [%3d%] ".$(ix, sum==0 ? 0 : 100*entry/sum);
+            if (arr[ix])
+            {
+                var val = parseInt(len*arr[ix]/max);
+                var entry = ("%"+val+"s").$("");
+                entry = entry.replace(/ /g, "*");
+                line += ("%-"+len+"s").$(entry)+" |";
+            }
+
+            console.out(line);
+        }
+
+        var entry = arr[ix] ? arr[ix] : 0;
+        console.out("   --------"+("%"+(len-5)+"s").$("")+"-------");
+
+        var line =" %9d  ".$(sum);
+        line += ("%"+len+"d").$(max);
+        console.out(line);
+        console.out("");
+    }
+
+    return arr;
+}
Index: branches/testFACT++branch/scripts/Hist2D.js
===================================================================
--- branches/testFACT++branch/scripts/Hist2D.js	(revision 18277)
+++ branches/testFACT++branch/scripts/Hist2D.js	(revision 18277)
@@ -0,0 +1,90 @@
+'use strict';
+
+function Hist2D(nx, xmin, xmax, ny, ymin, ymax)
+{
+    var arr = new Array(nx);
+
+    arr.get = function(x, y)
+    {
+        var ix = parseInt(nx*(x-xmin)/(xmax-xmin));
+        var iy = parseInt(ny*(y-ymin)/(ymax-ymin));
+
+        if (!arr[ix])
+            return 0;
+
+        if (!arr[ix][iy])
+            return 0;
+
+        return arr[ix][iy];
+    }
+
+    arr.fill = function(x, y, w)
+    {
+        var ix = parseInt(nx*(x-xmin)/(xmax-xmin));
+        var iy = parseInt(ny*(y-ymin)/(ymax-ymin));
+
+        if (ix<0 || ix>=nx || iy<0 || iy>=ny)
+            return false;
+
+        if (!arr[ix])
+            arr[ix] = new Array(ny);
+
+        if (!arr[ix][iy])
+            arr[ix][iy] = 0;
+
+        arr[ix][iy] += w ? w : 1;
+
+        return true;
+    }
+
+    arr.print = function()
+    {
+        var line1 = "   |";
+        for (var ix=0; ix<nx; ix++)
+            line1 += " %3d ".$(ix);
+
+        var line2 = "---+";
+        for (var ix=0; ix<nx; ix++)
+            line2 += "+----";
+        line2+="+----";
+
+        console.out("", line1, line2);
+
+        var sum = 0;
+        var sx = [];
+        for (var ix=0; ix<nx; ix++)
+            sx[ix] = 0;
+
+        for (var iy=ny-1; iy>=0; iy--)
+        {
+            var line = "%3d|".$(iy);
+
+            var sy = 0;
+            for (var ix=0; ix<nx; ix++)
+            {
+                var val = arr[ix] ? arr[ix][iy] : "";
+                line += " %4s".$(val?val:"");
+
+                if (arr[ix])
+                {
+                    sy     += val?val:0;
+                    sx[ix] += val?val:0;
+                }
+            }
+
+            sum += sy;
+
+            console.out(line+"|%4d".$(sy));
+        }
+
+        console.out(line2);
+
+        line = "   |";
+        for (var ix=0; ix<nx; ix++)
+            line += " %4d".$(sx[ix]);
+
+        console.out(line+"|%4d".$(sum), "");
+    }
+
+    return arr;
+}
Index: branches/testFACT++branch/scripts/Main.js
===================================================================
--- branches/testFACT++branch/scripts/Main.js	(revision 18277)
+++ branches/testFACT++branch/scripts/Main.js	(revision 18277)
@@ -0,0 +1,1527 @@
+/**
+ * @fileOverview This file has functions related to documenting JavaScript.
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ */
+'use strict';
+
+dim.log("Start: "+__FILE__+" ["+__DATE__+"]");
+
+// This should be set in dimctrl.rc as JavaScript.schedule-database.
+// It is sent together with the script to the dimserver.
+// If started directly, it has to be set after the command:
+//
+//   .js scripts/Main.js schedule-database=...
+//
+if (!$['schedule-database'])
+    throw new Error("Environment 'schedule-database' not set!");
+
+//dimctrl.defineState(37, "TimeOutBeforeTakingData", "MCP took more than 5minutes to start TakingData");
+
+// ================================================================
+//  Code related to the schedule
+// ================================================================
+
+//this is just the class implementation of 'Observation'
+include('scripts/Observation_class.js');
+include('scripts/getSchedule.js');
+
+var observations = [ ];
+
+// Get the observation scheduled for 'now' from the table and
+// return its index
+function getObservation(now)
+{
+    if (now==undefined)
+        now = new Date();
+
+    if (isNaN(now.valueOf()))
+        throw new Error("Date argument in getObservation invalid.");
+
+    observations = getSchedule();
+
+    for (var i=0; i<observations.length; i++)
+        if (now<observations[i].start)
+            return i-1;
+
+    return observations.length-1;
+}
+
+// ================================================================
+//  Code to check whether observation is allowed
+// ================================================================
+/*
+function currentEst(source)
+{
+    var moon = new Moon();
+    if (!moon.isUp)
+        return 7.7;
+
+    var dist = Sky.dist(moon, source);
+
+    var alt = 90-moon.toLocal().zd;
+
+    var lc = dist*alt*pow(Moon.disk(), 6)/360/360;
+
+    var cur = 7.7+4942*lc;
+
+    return cur;
+}
+
+function thresholdEst(source) // relative threshold (ratio)
+{
+    // Assumption:
+    // atmosphere is 70km, shower taks place after 60km, earth radius 6400km
+    // just using the cosine law
+    // This fits very well with MC results: See Roger Firpo, p.45
+    // "Study of the MAGIC telescope sensitivity for Large Zenith Angle observations"
+
+    var c = Math.cos(Math.Pi-source.zd);
+    var ratio = (10*sqrt(409600*c*c+9009) + 6400*c - 60)/10;
+
+    // assumption: Energy threshold increases linearily with current
+    // assumption: Energy threshold increases linearily with distance
+
+    return ratio*currentEst(source)/7.7;
+}
+*/
+
+// ================================================================
+//  Code to perform the DRS calib sequence
+// ================================================================
+
+var irq;
+
+function doDrsCalibration(where)
+{
+    dim.log("Starting DRS calibration ["+where+"]");
+
+    service_feedback.voltageOff();
+
+    var tm = new Date();
+
+    while (!irq)
+    {
+        dim.send("FAD_CONTROL/START_DRS_CALIBRATION");
+        if (irq || !takeRun("drs-pedestal", 1000))     // 40 / 20s     (50Hz)
+            continue;
+
+        if (irq || !takeRun("drs-gain",     1000))     // 40 / 20s     (50Hz)
+            continue;
+
+        if (irq || !takeRun("drs-pedestal", 1000))     // 40 / 20s     (50Hz)
+            continue;
+
+        break;
+    }
+
+    dim.send("FAD_CONTROL/SET_FILE_FORMAT", 6);
+
+    while (!irq && !takeRun("drs-pedestal", 1000));     // 40 / 20s     (50Hz)
+    while (!irq && !takeRun("drs-time",     1000));     // 40 / 20s     (50Hz)
+
+    while (!irq)
+    {
+        dim.send("FAD_CONTROL/RESET_SECONDARY_DRS_BASELINE");
+        if (takeRun("pedestal",     1000))              // 40 / 10s     (80Hz)
+            break;
+    }
+
+    dim.send("FAD_CONTROL/SET_FILE_FORMAT", 6);
+
+    while (!irq && !takeRun("pedestal",     1000));     // 40 / 10s     (80Hz)
+    //                                                   -----------
+    //                                                   4'40 / 2'00
+
+    if (irq)
+        dim.log("DRS calibration interrupted [%.1fs]".$((new Date()-tm)/1000));
+    else
+        dim.log("DRS calibration done [%.1fs]".$((new Date()-tm)/1000));
+}
+
+// ================================================================
+//  Code related to the lid
+// ================================================================
+
+function OpenLid()
+{
+    /*
+    while (Sun.horizon(-13).isUp)
+    {
+        var now = new Date();
+        var minutes_until_sunset = (Sun.horizon(-13).set - now)/60000;
+        console.out(now.toUTCString()+": Sun above FACT-horizon, lid cannot be opened: sleeping 1min, remaining %.1fmin".$(minutes_until_sunset));
+        v8.sleep(60000);
+    }*/
+
+    var isClosed = dim.state("LID_CONTROL").name=="Closed";
+
+    var tm = new Date();
+
+    // Wait for lid to be open
+    if (isClosed)
+    {
+        dim.log("Opening lid");
+        dim.send("LID_CONTROL/OPEN");
+    }
+    dim.wait("LID_CONTROL", "Open", 30000);
+
+    if (isClosed)
+        dim.log("Lid open [%.1fs]".$((new Date()-tm)/1000));
+}
+
+function CloseLid()
+{
+    var isOpen = dim.state("LID_CONTROL").name=="Open";
+
+    var tm = new Date();
+
+    // Wait for lid to be open
+    if (isOpen)
+    {
+        if (dim.state("FTM_CONTROL").name=="TriggerOn")
+        {
+            dim.send("FTM_CONTROL/STOP_TRIGGER");
+            dim.wait("FTM_CONTROL", "Valid", 3000);
+        }
+
+        dim.log("Closing lid.");
+        dim.send("LID_CONTROL/CLOSE");
+    }
+    dim.wait("LID_CONTROL", "Closed", 30000);
+
+    if (isOpen)
+        dim.log("Lid closed [%.1fs]".$((new Date()-tm)/1000));
+}
+
+// ================================================================
+//  Interrupt data taking in case of high currents
+// ================================================================
+dim.onchange['FEEDBACK'] = function(state)
+{
+    if ((state.name=="Critical" || state.name=="OnStandby") &&
+        (this.prev!="Critical"  && this.prev!="OnStandby"))
+    {
+        console.out("Feedback state changed from "+this.prev+" to "+state.name+" [Main.js]");
+        irq = "RESCHEDULE";
+    }
+    this.prev=state.name;
+}
+
+// ================================================================
+//  Code related to switching bias voltage on and off
+// ================================================================
+
+var service_feedback = new Subscription("FEEDBACK/CALIBRATED_CURRENTS");
+
+service_feedback.onchange = function(evt)
+{
+    if (!evt.data)
+        return;
+
+    if (this.ok==undefined)
+        return;
+
+    var Unom = evt.obj['U_nom'];
+    var Uov  = evt.obj['U_ov'];
+    if (!Uov)
+        return;
+
+    var cnt = 0;
+    var avg = 0;
+    for (var i=0; i<320; i++)
+    {
+        var dU = Uov[i]-Unom;
+
+        // 0.022 corresponds to 1 DAC count (90V/4096)
+        if (Math.abs(dU)>0.033)
+            cnt++;
+
+        avg += dU;
+    }
+    avg /= 320;
+
+    this.ok = cnt<3;// || (this.last!=undefined && Math.abs(this.last-avg)<0.002);
+
+    console.out("  DeltaUov=%.3f (%.3f) [N(>0.033V)=%d]".$(avg, avg-this.last, cnt));
+
+    this.last = avg;
+}
+
+service_feedback.voltageOff = function()
+{
+    var state = dim.state("BIAS_CONTROL").name;
+
+    if (state=="Disconnected")
+    {
+        console.out("  Voltage off: bias crate disconnected!");
+        return;
+    }
+
+    // check of feedback has to be switched on
+    var isOn = state=="VoltageOn" || state=="Ramping";
+    if (isOn)
+    {
+        dim.log("Switching voltage off.");
+
+        if (dim.state("FTM_CONTROL").name=="TriggerOn")
+        {
+            dim.send("FTM_CONTROL/STOP_TRIGGER");
+            dim.wait("FTM_CONTROL", "Valid", 3000);
+        }
+
+        // Supress the possibility that the bias control is
+        // ramping and will reject the command to switch the
+        // voltage off
+        //dim.send("FEEDBACK/STOP");
+        //dim.wait("FEEDBACK", "Calibrated", 3000);
+
+        // Make sure we are not in Ramping anymore
+        //dim.wait("BIAS_CONTROL", "VoltageOn", 3000);
+
+        // Switch voltage off
+        dim.send("BIAS_CONTROL/SET_ZERO_VOLTAGE");
+    }
+
+    dim.wait("BIAS_CONTROL", "VoltageOff", 60000); // FIXME: 30000?
+    dim.wait("FEEDBACK",     "Calibrated",  3000);
+
+    // FEEDBACK stays in CurrentCtrl when Voltage is off but output enabled
+    // dim.wait("FEEDBACK", "CurrentCtrlIdle", 1000);
+
+    if (isOn)
+        dim.log("Voltage off.");
+}
+
+// DN:  The name of the method voltageOn() in the context of the method
+//      voltageOff() is a little bit misleading, since when voltageOff() returns
+//      the caller can be sure the voltage is off, but when voltageOn() return
+//      this is not the case, in the sense, that the caller can now take data.
+//      instead the caller of voltageOn() *must* call waitForVoltageOn() afterwards
+//      in order to safely take good-quality data.
+//      This could lead to nasty bugs in the sense, that the second call might 
+//      be forgotten by somebody
+//      
+//      so I suggest to rename voltageOn() --> prepareVoltageOn()
+//      waitForVoltageOn() stays as it is
+//      and one creates a third method called:voltageOn() like this
+/*      service_feedback.voltageOn = function()
+ *      {
+ *          this.prepareVoltageOn();
+ *          this.waitForVoltageOn();
+ *      }
+ * 
+ * */
+//      For convenience.
+
+service_feedback.voltageOn = function(ov)
+{
+    if (isNaN(ov))
+        ov = 1.1;
+
+    if (this.ov!=ov && dim.state("FEEDBACK").name=="InProgress") // FIXME: Warning, OnStandby, Critical if (ov<this.ov)
+    {
+        dim.log("Stoping feedback.");
+        if (dim.state("FTM_CONTROL").name=="TriggerOn")
+        {
+            dim.send("FTM_CONTROL/STOP_TRIGGER");
+            dim.wait("FTM_CONTROL", "Valid", 3000);
+        }
+
+        dim.send("FEEDBACK/STOP");
+        dim.wait("FEEDBACK", "Calibrated", 3000);
+
+        // Make sure we are not in Ramping anymore
+        dim.wait("BIAS_CONTROL", "VoltageOn", 3000);
+    }
+
+    var isOff = dim.state("FEEDBACK").name=="Calibrated";
+    if (isOff)
+    {
+        dim.log("Switching voltage to Uov="+ov+"V.");
+
+        dim.send("FEEDBACK/START", ov);
+
+        // FIXME: We could miss "InProgress" if it immediately changes to "Warning"
+        //        Maybe a dim.timeout state>8 ?
+        dim.wait("FEEDBACK", "InProgress", 45000);
+
+        this.ov = ov;
+    }
+
+    // Wait until voltage on
+    dim.wait("BIAS_CONTROL", "VoltageOn", 60000); // FIXME: 30000?
+}
+
+service_feedback.waitForVoltageOn = function()
+{
+    // Avoid output if condition is already fulfilled
+    dim.log("Waiting for voltage to be stable.");
+
+    function func()
+    {
+        if (irq || this.ok==true)
+            return true;
+    }
+
+    var now = new Date();
+
+    this.last = undefined;
+    this.ok = false;
+    v8.timeout(4*60000, func, this); // FIMXE: Remove 4!
+    this.ok = undefined;
+
+    if (irq)
+        dim.log("Waiting for stable voltage interrupted.");
+    else
+        dim.log("Voltage stable within limits");
+}
+
+// ================================================================
+//  Function to shutdown the system
+// ================================================================
+
+function Shutdown(type)
+{
+    if (!type)
+        type = "default";
+
+    dim.log("Starting shutdown ["+type+"].");
+
+    var now1 = new Date();
+
+    var bias = dim.state("BIAS_CONTROL").name;
+    if (bias=="VoltageOn" || bias=="Ramping")
+        service_feedback.voltageOn(0);
+
+    CloseLid();
+
+    var now2 = new Date();
+
+    dim.send("DRIVE_CONTROL/PARK");
+
+    console.out("","Waiting for telescope to park. This may take a while.");
+
+    // FIXME: This might not work is the drive is already close to park position
+    dim.wait("DRIVE_CONTROL", "Locked", 3000);
+
+    //unlock drive if task was sleep
+    if (type=="sleep")
+        dim.send("DRIVE_CONTROL/UNLOCK");
+
+    var sub = new Subscription("DRIVE_CONTROL/POINTING_POSITION");
+    sub.get(5000);  // FIXME: Proper error message in case of failure
+
+    function func()
+    {
+        var report = sub.get();
+
+        var zd = report.obj['Zd'];
+        var az = report.obj['Az'];
+
+        if (zd>100 && Math.abs(az)<1)
+            return true;
+
+        return undefined;
+    }
+
+    try { v8.timeout(150000, func); }
+    catch (e)
+    {
+        var p = sub.get();
+        dim.log('Park position not reached? Telescope at Zd='+p.obj['Zd']+' Az='+p.obj['Az']);
+    }
+    /*
+    // Check if DRS calibration is necessary
+    var diff = getTimeSinceLastDrsCalib();
+    if (diff>30 || diff==null)
+    {
+        doDrsCalibration("singlepe");  // will turn voltage off
+        if (irq)
+            break;
+    }*/
+
+    if (type=="singlepe")
+    {
+        dim.log("Taking single-pe run.");
+
+        // The voltage must be on
+        service_feedback.voltageOn();
+        service_feedback.waitForVoltageOn();
+
+        // Before we can switch to 3000 we have to make the right DRS calibration
+        dim.log("Taking single p.e. run.");
+        while (!irq && !takeRun("single-pe", 10000));
+    }
+
+    // It is unclear what comes next, so we better switch off the voltage
+    service_feedback.voltageOff();
+
+    dim.log("Finishing shutdown.");
+
+    var now3 = new Date();
+
+    dim.send("FTM_CONTROL/STOP_TRIGGER");
+    dim.wait("FTM_CONTROL",  "Valid",        3000);
+
+    if (bias!="Disconnected")
+        dim.wait("FEEDBACK", "Calibrated",   3000);
+
+    if (type!="sleep")
+    {
+        dim.send("BIAS_CONTROL/DISCONNECT");
+
+        var pwrctrl_state = dim.state("PWR_CONTROL").name;
+        if (pwrctrl_state=="SystemOn" ||
+            pwrctrl_state=="BiasOff"  ||
+            pwrctrl_state=="DriveOn")
+            dim.send("PWR_CONTROL/TOGGLE_DRIVE");
+
+        dim.wait("BIAS_CONTROL", "Disconnected", 3000);
+        dim.wait("PWR_CONTROL",  "DriveOff",     6000);
+    }
+
+    var report = sub.get();
+
+    console.out("");
+    console.out("Shutdown procedure ["+type+"] seems to be finished...");
+    console.out("  "+new Date().toUTCString());
+    console.out("  Telescope at Zd=%.1fdeg Az=%.1fdeg".$(report.obj['Zd'], report.obj['Az']));
+    console.out("  Please check on the web cam that the park position was reached");
+    console.out("  and the telescope is not moving anymore.");
+    console.out("  Please check visually that the lid is really closed and");
+    console.out("  that the biasctrl really switched the voltage off.", "");
+    console.out("    DRIVE_CONTROL: "+dim.state("DRIVE_CONTROL").name);
+    console.out("    FEEDBACK:      "+dim.state("FEEDBACK").name);
+    console.out("    FTM_CONTROL:   "+dim.state("FTM_CONTROL").name);
+    console.out("    BIAS_CONTROL:  "+dim.state("BIAS_CONTROL").name);
+    console.out("    PWR_CONTROL:   "+dim.state("PWR_CONTROL").name);
+    console.out("");
+    dim.log("Shutdown: end ["+(now2-now1)/1000+"s, "+(now3-now2)/1000+"s, "+(new Date()-now3)/1000+"s]");
+    console.out("");
+
+    sub.close();
+}
+
+
+// ================================================================
+//  Function to set the system to sleep-mode
+// ================================================================
+// FIXME: do not repeat code from shutdown-function
+/*
+function GoToSleep()
+{
+    CloseLid();
+
+    var isArmed = dim.state("DRIVE_CONTROL").name=="Armed";
+    if (!isArmed)
+    {
+        dim.log("Drive not ready to move. -> send STOP");
+        dim.send("DRIVE_CONTROL/STOP");
+        dim.wait("DRIVE_CONTROL", "Armed", 5000);
+    }
+
+    dim.send("DRIVE_CONTROL/MOVE_TO 101 0");//park position
+    var sub = new Subscription("DRIVE_CONTROL/POINTING_POSITION");
+    sub.get(5000);  // FIXME: Proper error message in case of failure
+
+    function func()
+    {
+        var report = sub.get();
+
+        var zd = report.obj['Zd'];
+        var az = report.obj['Az'];
+
+        if (zd>100 && Math.abs(az)<1)
+            return true;
+
+        return undefined;
+    }
+
+    try { v8.timeout(150000, func); }
+    catch (e)
+    {
+        var p = sub.get();
+        dim.log('Park position not reached? Telescope at Zd='+p.obj['Zd']+' Az='+p.obj['Az']);
+    }
+    var p2 = sub.get();
+    dim.log('Telescope at Zd=%.1fdeg Az=%.1fdeg'.$(p2.obj['Zd'], p2.obj['Az']));
+    sub.close();
+}
+*/
+
+// ================================================================
+// Check datalogger subscriptions
+// ================================================================
+
+var datalogger_subscriptions = new Subscription("DATA_LOGGER/SUBSCRIPTIONS");
+datalogger_subscriptions.get(3000, false);
+
+datalogger_subscriptions.check = function()
+{
+    var obj = this.get();
+    if (!obj.data)
+        throw new Error("DATA_LOGGER/SUBSCRIPTIONS not available.");
+
+    var expected =
+        [
+         "AGILENT_CONTROL_24V/DATA",
+         "AGILENT_CONTROL_50V/DATA",
+         "AGILENT_CONTROL_80V/DATA",
+         "BIAS_CONTROL/CURRENT",
+         "BIAS_CONTROL/DAC",
+         "BIAS_CONTROL/NOMINAL",
+         "BIAS_CONTROL/VOLTAGE",
+         "DRIVE_CONTROL/POINTING_POSITION",
+         "DRIVE_CONTROL/SOURCE_POSITION",
+         "DRIVE_CONTROL/STATUS",
+         "DRIVE_CONTROL/TRACKING_POSITION",
+         "FAD_CONTROL/CONNECTIONS",
+         "FAD_CONTROL/DAC",
+         "FAD_CONTROL/DNA",
+         "FAD_CONTROL/DRS_RUNS",
+         "FAD_CONTROL/EVENTS",
+         "FAD_CONTROL/FEEDBACK_DATA",
+         "FAD_CONTROL/FILE_FORMAT",
+         "FAD_CONTROL/FIRMWARE_VERSION",
+         "FAD_CONTROL/INCOMPLETE",
+         "FAD_CONTROL/PRESCALER",
+         "FAD_CONTROL/REFERENCE_CLOCK",
+         "FAD_CONTROL/REGION_OF_INTEREST",
+         "FAD_CONTROL/RUNS",
+         "FAD_CONTROL/RUN_NUMBER",
+         "FAD_CONTROL/START_RUN",
+         "FAD_CONTROL/STATISTICS1",
+         "FAD_CONTROL/STATS",
+         "FAD_CONTROL/STATUS",
+         "FAD_CONTROL/TEMPERATURE",
+         "FEEDBACK/CALIBRATED_CURRENTS",
+         "FEEDBACK/CALIBRATION",
+         "FEEDBACK/CALIBRATION_R8",
+         "FEEDBACK/CALIBRATION_STEPS",
+/*         "FEEDBACK/REFERENCE",*/
+         "FSC_CONTROL/CURRENT",
+         "FSC_CONTROL/HUMIDITY",
+         "FSC_CONTROL/TEMPERATURE",
+         "FSC_CONTROL/VOLTAGE",
+         "FTM_CONTROL/COUNTER",
+         "FTM_CONTROL/DYNAMIC_DATA",
+         "FTM_CONTROL/ERROR",
+         "FTM_CONTROL/FTU_LIST",
+         "FTM_CONTROL/PASSPORT",
+         "FTM_CONTROL/STATIC_DATA",
+         "FTM_CONTROL/TRIGGER_RATES",
+         "GPS_CONTROL/NEMA",
+         "SQM_CONTROL/DATA",
+         "LID_CONTROL/DATA",
+         "MAGIC_LIDAR/DATA",
+         "MAGIC_WEATHER/DATA",
+         "MCP/CONFIGURATION",
+         "PWR_CONTROL/DATA",
+         "RATE_CONTROL/THRESHOLD",
+         "RATE_SCAN/DATA",
+         "RATE_SCAN/PROCESS_DATA",
+         "TEMPERATURE/DATA",
+         "TIME_CHECK/OFFSET",
+         "TNG_WEATHER/DATA",
+         "TNG_WEATHER/DUST",
+         "PFMINI_CONTROL/DATA",
+        ];
+
+    function map(entry)
+    {
+        if (entry.length==0)
+            return undefined;
+
+        var rc = entry.split(',');
+        if (rc.length!=2)
+            throw new Error("Subscription list entry '"+entry+"' has wrong number of elements.");
+        return rc;
+    }
+
+    var list = obj.data.split('\n').map(map);
+    function check(name)
+    {
+        if (list.every(function(el){return el==undefined || el[0]!=name;}))
+            throw new Error("Subscription to '"+name+"' not available.");
+    }
+
+    expected.forEach(check);
+}
+
+
+
+// ================================================================
+// Crosscheck all states
+// ================================================================
+
+// ----------------------------------------------------------------
+// Do a standard startup to bring the system in into a well
+// defined state
+// ----------------------------------------------------------------
+include('scripts/Startup.js');
+
+// ================================================================
+//  Code to monitor clock conditioner
+// ================================================================
+
+var sub_counter = new Subscription("FTM_CONTROL/COUNTER");
+sub_counter.onchange = function(evt)
+{
+    if (evt.qos>0 && evt.qos!=2 && evt.qos&0x100==0)
+        throw new Error("FTM reports: clock conditioner not locked.");
+}
+
+// ================================================================
+//  Code related to monitoring the fad system
+// ================================================================
+
+// This code is here, because scripts/Startup.js needs the
+// same subscriptions... to be revised.
+var sub_incomplete = new Subscription("FAD_CONTROL/INCOMPLETE");
+var sub_connections = new Subscription("FAD_CONTROL/CONNECTIONS");
+var sub_startrun = new Subscription("FAD_CONTROL/START_RUN");
+sub_startrun.get(5000);
+
+include('scripts/takeRun.js');
+
+// ----------------------------------------------------------------
+// Check that everything we need is availabel to receive commands
+// (FIXME: Should that go to the general CheckState?)
+// ----------------------------------------------------------------
+//console.out("Checking send.");
+checkSend(["MCP", "DRIVE_CONTROL", "LID_CONTROL", "FAD_CONTROL", "FEEDBACK"]);
+//console.out("Checking send: done");
+
+// ----------------------------------------------------------------
+// Bring feedback into the correct operational state
+// ----------------------------------------------------------------
+//console.out("Feedback init: start.");
+service_feedback.get(5000);
+
+// ----------------------------------------------------------------
+// Connect to the DRS_RUNS service
+// ----------------------------------------------------------------
+//console.out("Drs runs init: start.");
+
+var sub_drsruns = new Subscription("FAD_CONTROL/DRS_RUNS");
+sub_drsruns.get(5000);
+// FIXME: Check if the last DRS calibration was complete?
+
+function getTimeSinceLastDrsCalib()
+{
+    // ----- Time since last DRS Calibration [min] ------
+    var runs = sub_drsruns.get(0);
+    var diff = (new Date()-runs.time)/60000;
+
+    // Warning: 'roi=300' is a number which is not intrisically fixed
+    //          but can change depending on the taste of the observers
+    var valid = runs.obj['run'][2]>0 && runs.obj['roi']==300;
+
+    if (valid)
+        dim.log("Last DRS calibration was %.1fmin ago".$(diff));
+    else
+        dim.log("No valid DRS calibration available.");
+
+    return valid ? diff : null;
+}
+
+// ----------------------------------------------------------------
+// Install interrupt handler
+// ----------------------------------------------------------------
+function handleIrq(cmd, args, time, user)
+{
+    console.out("Interrupt received:");
+    console.out("  IRQ:  "+cmd);
+    console.out("  Time: "+time);
+    console.out("  User: "+user);
+
+    irq = cmd ? cmd : "stop";
+
+    // This will end a run in progress as if it where correctly stopped
+    if (dim.state("MCP").name=="TakingData")
+        dim.send("MCP/STOP");
+
+    // This will stop a rate scan in progress
+    if (dim.state("RATE_SCAN").name=="InProgress")
+        dim.send("RATE_SCAN/STOP");
+}
+
+dimctrl.setInterruptHandler(handleIrq);
+
+// ----------------------------------------------------------------
+// Make sure we will write files
+// ----------------------------------------------------------------
+dim.send("FAD_CONTROL/SET_FILE_FORMAT", 6);
+
+// ----------------------------------------------------------------
+// Print some information for the user about the
+// expected first oberservation
+// ----------------------------------------------------------------
+var test = getObservation();
+if (test!=undefined)
+{
+    var n = new Date();
+    if (observations.length>0 && test==-1)
+        dim.log("First observation scheduled for "+observations[0].start.toUTCString()+" [id="+observations[0].id+"]");
+    if (test>=0 && test<observations.length)
+        dim.log("First observation should start immediately ["+observations[test].start.toUTCString()+", id="+observations[test].id+"]");
+    if (observations.length>0 && observations[0].start>n+12*3600*1000)
+        dim.log("No observations scheduled for the next 12 hours!");
+    if (observations.length==0)
+        dim.log("No observations scheduled!");
+}
+
+// ----------------------------------------------------------------
+// Start main loop
+// ----------------------------------------------------------------
+dim.log("Entering main loop.");
+console.out("");
+
+var run = -2; // getObservation never called
+var sub;
+var lastId;
+var nextId;
+var sun = Sun.horizon(-12);
+var system_on;  // undefined
+
+function processIrq()
+{
+    if (!irq)
+        return false;
+
+    if (irq.toUpperCase()=="RESCHEDULE")
+    {
+        irq = undefined;
+        return false;
+    }
+
+    if (irq.toUpperCase()=="OFF")
+    {
+        service_feedback.voltageOff();
+        dim.send("FAD_CONTROL/CLOSE_OPEN_FILES");
+        return true;
+    }
+
+    /*
+    if (irq.toUpperCase()=="STOP")
+    {
+        dim.send("FAD_CONTROL/CLOSE_OPEN_FILES");
+        dim.send("MCP/STOP");
+        return true;
+    }*/
+
+    if (irq.toUpperCase()=="SHUTDOWN")
+    {
+        Shutdown();
+        return true;
+    }
+
+    dim.log("IRQ "+irq+" unhandled... stopping script.");
+    return true;
+}
+
+while (!processIrq())
+{
+    // Check if observation position is still valid
+    // If source position has changed, set run=0
+    var idxObs = getObservation();
+    if (idxObs===undefined)
+        break;
+
+    // we are still waiting for the first observation in the schedule
+    if (idxObs==-1)
+    {
+        // flag that the first observation will be in the future
+        run = -1; 
+        v8.sleep(1000);
+        continue;
+    }
+
+    // Check if we have to take action do to sun-rise
+    var was_up = sun.isUp;
+    sun = Sun.horizon(-12);
+    if (!was_up && sun.isUp)
+    {
+        console.out("");
+        dim.log("Sun rise detected.... automatic shutdown initiated!");
+        // FIXME: State check?
+        Shutdown();
+        system_on = false;
+        continue;
+    }
+
+    // Current and next observation target
+    var obs     = observations[idxObs];
+    var nextObs = observations[idxObs+1];
+
+    // Check if observation target has changed
+    if (lastId!=obs.id) // !Object.isEqual(obs, nextObs)
+    {
+        dim.log("Starting new observation ["+obs.start.toUTCString()+", id="+obs.id+"]");
+
+        // This is the first source, but we do not come from
+        // a scheduled 'START', so we have to check if the
+        // telescop is operational already
+        sub = 0;
+        if (run<0)
+        {
+            //Startup();   // -> Bias On/Off?, Lid open/closed?
+            //CloseLid();
+        }
+
+        // The first observation had a start-time in the past...
+        // In this particular case start with the last entry
+        // in the list of measurements
+        if (run==-2)
+            sub = obs.length-1;
+
+        run = 0;
+        lastId = obs.id;
+    }
+
+    //dim.log("DEBUG: Next observation scheduled for "+nextObs.start.toUTCString()+" [id="+nextObs.id+"]");
+    if (nextObs && nextId!=nextObs.id)
+    {
+        dim.log("Next observation scheduled for "+nextObs.start.toUTCString()+" [id="+nextObs.id+"]");
+        console.out("");
+        nextId = nextObs.id;
+    }
+
+    if (!nextObs && nextId)
+    {
+        dim.log("No further observation scheduled.");
+        console.out("");
+        nextId = undefined;
+    }
+
+    //if (nextObs==undefined && obs[obs.length-1].task!="SHUTDOWN")
+    //    throw Error("Last scheduled measurement must be a shutdown.");
+
+    // We are done with all measurement slots for this
+    // observation... wait for next observation
+    if (sub>=obs.length)
+    {
+        v8.sleep(1000);
+        continue;
+    }
+
+    if (system_on===false && obs[sub].task!="STARTUP")
+    {
+        v8.sleep(1000);
+        continue;
+    }
+
+    // Check if sun is still up... only DATA and */
+    if ((obs[sub].task=="DATA" || obs[sub].task=="RATESCAN" || obs[sub].task=="RATESCAN2" ) && sun.isUp)
+    {
+        var now = new Date();
+        var remaining = (sun.set - now)/60000;
+        console.out(now.toUTCString()+" - "+obs[sub].task+": Sun above FACT-horizon: sleeping 1min, remaining %.1fmin".$(remaining));
+        v8.sleep(60000);
+        continue;
+    }
+
+
+    if (obs[sub].task!="IDLE" && (obs[sub].task!="DATA" && run>0))
+        dim.log("New task ["+obs[sub]+"]");
+
+    // FIXME: Maybe print a warning if Drive is on during day time!
+
+    // It is not ideal that we allow the drive to be on during day time, but
+    // otherwise it is difficult to allow e.g. the STARTUP at the beginning of the night
+    var power_states = sun.isUp || !system_on ? [ "DriveOff", "SystemOn" ] : [ "SystemOn" ];
+    var drive_states = sun.isUp || !system_on ? undefined : [ "Armed", "Tracking", "OnTrack" ];
+
+    // A scheduled task was found, lets check if all servers are
+    // still only and in reasonable states. If this is not the case,
+    // something unexpected must have happend and the script is aborted.
+    //console.out("  Checking states [general]");
+    var table =
+        [
+         [ "TNG_WEATHER"   ],
+         [ "MAGIC_WEATHER" ],
+         [ "CHAT"          ],
+         [ "SMART_FACT"    ],
+         [ "TEMPERATURE"   ],
+         [ "DATA_LOGGER",         [ "NightlyFileOpen", "WaitForRun", "Logging" ] ],
+         [ "FSC_CONTROL",         [ "Connected"                ] ],
+         [ "MCP",                 [ "Idle"                     ] ],
+         [ "TIME_CHECK",          [ "Valid"                    ] ],
+         [ "PWR_CONTROL",         power_states/*[ "SystemOn"                 ]*/ ],
+         [ "AGILENT_CONTROL_24V", [ "VoltageOn"                ] ],
+         [ "AGILENT_CONTROL_50V", [ "VoltageOn"                ] ],
+         [ "AGILENT_CONTROL_80V", [ "VoltageOn"                ] ],
+         [ "BIAS_CONTROL",        [ "VoltageOff", "VoltageOn", "Ramping" ] ],
+         [ "FEEDBACK",            [ "Calibrated", "InProgress", "OnStandby", "Warning", "Critical" ] ],
+         [ "LID_CONTROL",         [ "Open", "Closed"           ] ],
+         [ "DRIVE_CONTROL",       drive_states/*[ "Armed", "Tracking", "OnTrack" ]*/ ],
+         [ "FTM_CONTROL",         [ "Valid", "TriggerOn"       ] ],
+         [ "FAD_CONTROL",         [ "Connected", "RunInProgress" ] ],
+         [ "RATE_SCAN",           [ "Connected"                ] ],
+         [ "RATE_CONTROL",        [ "Connected", "GlobalThresholdSet", "InProgress"  ] ],
+         [ "GPS_CONTROL",         [ "Locked"  ] ],
+         [ "SQM_CONTROL",         [ "Disconnected", "Connected", "Valid" ] ],
+         [ "PFMINI_CONTROL",      [ "Disconnected", "Connected", "Receiving" ] ],
+        ];
+
+
+    if (!checkStates(table))
+    {
+        throw new Error("Something unexpected has happened. One of the servers "+
+                        "is in a state in which it should not be. Please,"+ 
+                        "try to find out what happened...");
+    }
+
+    datalogger_subscriptions.check();                                         
+                                                                                
+    // If this is an observation which needs the voltage to be swicthed on
+    // skip that if the voltage is not stable                                    
+    /*
+    if (obs[sub].task=="DATA" || obs[sub].task=="RATESCAN")
+    {
+        var state = dim.state("FEEDBACK").name;
+        if (state=="Warning" || state=="Critical" || state=="OnStandby")
+        {
+            v8.sleep(1000);
+            continue;
+        }
+    }*/
+
+
+    // Check if obs.task is one of the one-time-tasks
+    switch (obs[sub].task)
+    {
+    case "IDLE":
+        v8.sleep(5000);
+        continue;
+
+    case "SLEEP":
+        Shutdown("sleep"); //GoToSleep();
+
+        sub++;
+        dim.log("Task finished [SLEEP].");
+        console.out("");
+        continue;
+
+    case "STARTUP":
+        CloseLid();
+
+        doDrsCalibration("startup");  // will switch the voltage off
+
+        if (irq)
+            break;
+
+        service_feedback.voltageOn();
+        service_feedback.waitForVoltageOn();
+
+        // Before we can switch to 3000 we have to make the right DRS calibration
+        dim.log("Taking single p.e. run.");
+        while (!irq && !takeRun("single-pe", 10000));
+
+        // It is unclear what comes next, so we better switch off the voltage
+        service_feedback.voltageOff();
+
+        system_on = true;
+        dim.log("Task finished [STARTUP]");
+        console.out("");
+        break;
+
+    case "SHUTDOWN":
+        Shutdown("singlepe");
+        system_on = false;
+
+        // FIXME: Avoid new observations after a shutdown until
+        //        the next startup (set run back to -2?)
+        sub++;
+        dim.log("Task finished [SHUTDOWN]");
+        console.out("");
+        //console.out("  Waiting for next startup.", "");
+        continue;
+
+    case "DRSCALIB":
+        doDrsCalibration("drscalib");  // will switch the voltage off
+        dim.log("Task finished [DRSCALIB]");
+        console.out("");
+        break;
+
+    case "SINGLEPE":
+        // The lid must be closes
+        CloseLid();
+
+        // Check if DRS calibration is necessary
+        var diff = getTimeSinceLastDrsCalib();
+        if (diff>30 || diff==null)
+        {
+            doDrsCalibration("singlepe");  // will turn voltage off
+            if (irq)
+                break;
+        }
+
+        // The voltage must be on
+        service_feedback.voltageOn();
+        service_feedback.waitForVoltageOn();
+
+        // Before we can switch to 3000 we have to make the right DRS calibration
+        dim.log("Taking single p.e. run.");
+        while (!irq && !takeRun("single-pe", 10000));
+
+        // It is unclear what comes next, so we better switch off the voltage
+        service_feedback.voltageOff();
+        dim.log("Task finished [SINGLE-PE]");
+        console.out("");
+        break;
+
+    case "OVTEST":
+        var locked = dim.state("DRIVE_CONTROL").name=="Locked";
+        if (!locked)
+            dim.send("DRIVE_CONTROL/PARK");
+
+        dim.send("FEEDBACK/STOP");
+
+        // The lid must be closed
+        CloseLid();
+
+        if (!locked)
+        {
+            //console.out("Waiting for telescope to park. This may take a while.");
+            dim.wait("DRIVE_CONTROL", "Locked", 3000);
+            dim.send("DRIVE_CONTROL/UNLOCK");
+        }
+
+        // Check if DRS calibration is necessary
+        var diff = getTimeSinceLastDrsCalib();
+        if (diff>30 || diff==null)
+        {
+            doDrsCalibration("ovtest");  // will turn voltage off
+            if (irq)
+                break;
+        }
+
+        // The voltage must be on
+        service_feedback.voltageOn(0.4);
+        service_feedback.waitForVoltageOn();
+
+        dim.log("Taking single p.e. run (0.4V)");
+        while (!irq && !takeRun("single-pe", 10000));
+
+        for (var i=5; i<18 && !irq; i++)
+        {
+            dim.send("FEEDBACK/STOP");
+            dim.wait("FEEDBACK", "Calibrated", 3000);
+            dim.wait("BIAS_CONTROL", "VoltageOn", 3000);
+            dim.send("FEEDBACK/START", i*0.1);
+            dim.wait("FEEDBACK", "InProgress", 45000);
+            dim.wait("BIAS_CONTROL", "VoltageOn", 60000); // FIXME: 30000?
+            service_feedback.waitForVoltageOn();
+            dim.log("Taking single p.e. run ("+(i*0.1)+"V)");
+            while (!irq && !takeRun("single-pe", 10000));
+        }
+
+        // It is unclear what comes next, so we better switch off the voltage
+        service_feedback.voltageOff();
+        dim.log("Task finished [OVTEST]");
+        console.out("");
+        break;
+
+    case "RATESCAN":
+        var tm1 = new Date();
+
+        // This is a workaround to make sure that we really catch
+        // the new OnTrack state later and not the old one
+        dim.send("DRIVE_CONTROL/STOP");
+        dim.wait("DRIVE_CONTROL", "Armed", 15000);
+
+        // The lid must be open
+        OpenLid();
+
+        // Switch the voltage to a reduced level (Ubd)
+        service_feedback.voltageOn(0);
+
+        if (obs[sub].source != undefined)
+        {
+            dim.log("Pointing telescope to '"+obs[sub].source+"'.");
+            dim.send("DRIVE_CONTROL/TRACK_ON", obs[sub].source);
+        }
+        else
+        {
+            dim.log("Pointing telescope to ra="+obs[sub].ra+" dec="+obs[sub].dec);
+            dim.send("DRIVE_CONTROL/TRACK", obs[sub].ra, obs[sub].dec);
+        }
+
+        dim.wait("DRIVE_CONTROL", "OnTrack", 150000); // 110s for turning and 30s for stabilizing
+
+        // Now tracking stable, switch voltage to nominal level and wait
+        // for stability.
+        service_feedback.voltageOn();
+        service_feedback.waitForVoltageOn();
+
+        if (!irq)
+        {
+            var tm2 = new Date();
+
+            dim.log("Starting ratescan.");
+
+            //set reference to whole camera (in case it was changed)
+            dim.send("RATE_SCAN/SET_REFERENCE_CAMERA");
+            // Start rate scan
+            dim.send("RATE_SCAN/START_THRESHOLD_SCAN", 50, 1000, -10, "default");
+
+            // Lets wait if the ratescan really starts... this might take a few
+            // seconds because RATE_SCAN configures the ftm and is waiting for
+            // it to be configured.
+            dim.wait("RATE_SCAN", "InProgress", 10000);
+            dim.wait("RATE_SCAN", "Connected", 2700000);
+
+            // Here one could implement a watchdog for the feedback as well, but what is the difference
+            // whether finally one has to find out if the feedback was in the correct state
+            // or the ratescan was interrupted?
+
+            // this line is actually some kind of hack.
+            // after the Ratescan, no data is written to disk. I don't know why, but it happens all the time
+            // So I decided to put this line here as a kind of patchwork....
+            //dim.send("FAD_CONTROL/SET_FILE_FORMAT", 6);
+
+            dim.log("Ratescan done [%.1fs, %.1fs]".$((tm2-tm1)/1000, (new Date()-tm2)/1000));
+        }
+
+        dim.log("Task finished [RATESCAN]");
+        console.out("");
+        break; // case "RATESCAN"
+
+    case "RATESCAN2":
+        var tm1 = new Date();
+
+        // This is a workaround to make sure that we really catch
+        // the new OnTrack state later and not the old one
+        dim.send("DRIVE_CONTROL/STOP");
+        dim.wait("DRIVE_CONTROL", "Armed", 15000);
+
+        if (obs[sub].rstype=="dark-bias-off")
+            service_feedback.voltageOff();
+        else
+        {
+            // Switch the voltage to a reduced level (Ubd)
+            var bias = dim.state("BIAS_CONTROL").name;
+            if (bias=="VoltageOn" || bias=="Ramping")
+                service_feedback.voltageOn(0);
+        }
+
+        // Open the lid if required
+        if (!obs[sub].lidclosed)
+            OpenLid();
+        else
+            CloseLid();
+
+        // track source/position or move to position
+        if (obs[sub].lidclosed)
+        {
+            dim.log("Moving telescope to zd="+obs[sub].zd+" az="+obs[sub].az);
+            dim.send("DRIVE_CONTROL/MOVE_TO", obs[sub].zd, obs[sub].az);
+            v8.sleep(3000);
+            dim.wait("DRIVE_CONTROL", "Armed", 150000); // 110s for turning and 30s for stabilizing
+        }
+        else
+        {
+            if (obs[sub].source != undefined)
+            {
+                dim.log("Pointing telescope to '"+obs[sub].source+"'.");
+                dim.send("DRIVE_CONTROL/TRACK_ON", obs[sub].source);
+            }
+            else
+            {
+                dim.log("Pointing telescope to ra="+obs[sub].ra+" dec="+obs[sub].dec);
+                dim.send("DRIVE_CONTROL/TRACK", obs[sub].ra, obs[sub].dec);
+            }
+
+            dim.wait("DRIVE_CONTROL", "OnTrack", 150000); // 110s for turning and 30s for stabilizing
+        }
+
+        // Now tracking stable, switch voltage to nominal level and wait
+        // for stability.
+        if (obs[sub].rstype!="dark-bias-off")
+        {
+            service_feedback.voltageOn();
+            service_feedback.waitForVoltageOn();
+        }
+
+        if (!irq)
+        {
+            var tm2 = new Date();
+
+            dim.log("Starting ratescan 2/1 ["+obs[sub].rstype+"]");
+
+            //set reference to whole camera (in case it was changed)
+            dim.send("RATE_SCAN/SET_REFERENCE_CAMERA");
+            // Start rate scan
+            dim.send("RATE_SCAN/START_THRESHOLD_SCAN", 50, 300, 20, obs[sub].rstype);
+
+            // Lets wait if the ratescan really starts... this might take a few
+            // seconds because RATE_SCAN configures the ftm and is waiting for
+            // it to be configured.
+            dim.wait("RATE_SCAN", "InProgress", 10000);
+            //FIXME: discuss what best value is here
+            dim.wait("RATE_SCAN", "Connected", 2700000);//45min
+            //dim.wait("RATE_SCAN", "Connected", 1200000);//3.3h
+
+            // Here one could implement a watchdog for the feedback as well, but what is the difference
+            // whether finally one has to find out if the feedback was in the correct state
+            // or the ratescan was interrupted?
+
+            // this line is actually some kind of hack.
+            // after the Ratescan, no data is written to disk. I don't know why, but it happens all the time
+            // So I decided to put this line here as a kind of patchwork....
+            //dim.send("FAD_CONTROL/SET_FILE_FORMAT", 6);
+
+            dim.log("Ratescan 2/1 done [%.1fs, %.1fs]".$((tm2-tm1)/1000, (new Date()-tm2)/1000));
+        }
+
+        if (!irq)
+        {
+            var tm2 = new Date();
+
+            dim.log("Starting ratescan 2/2 ["+obs[sub].rstype+"]");
+
+            // Start rate scan
+            dim.send("RATE_SCAN/START_THRESHOLD_SCAN", 300, 1000, 100, obs[sub].rstype);
+
+            // Lets wait if the ratescan really starts... this might take a few
+            // seconds because RATE_SCAN configures the ftm and is waiting for
+            // it to be configured.
+            dim.wait("RATE_SCAN", "InProgress", 10000);
+            dim.wait("RATE_SCAN", "Connected", 2700000);
+
+            // Here one could implement a watchdog for the feedback as well, but what is the difference
+            // whether finally one has to find out if the feedback was in the correct state
+            // or the ratescan was interrupted?
+
+            // this line is actually some kind of hack.
+            // after the Ratescan, no data is written to disk. I don't know why, but it happens all the time
+            // So I decided to put this line here as a kind of patchwork....
+            //dim.send("FAD_CONTROL/SET_FILE_FORMAT", 6);
+
+            dim.log("Ratescan 2/2 done [%.1fs, %.1fs]".$((tm2-tm1)/1000, (new Date()-tm2)/1000));
+        }
+
+        dim.log("Task finished [RATESCAN2]");
+        console.out("");
+        break; // case "RATESCAN2"
+
+    case "CUSTOM":
+
+        // This is a workaround to make sure that we really catch
+        // the new OnTrack state later and not the old one
+        dim.send("DRIVE_CONTROL/STOP");
+        dim.wait("DRIVE_CONTROL", "Armed", 15000);
+
+        // Ramp bias if needed
+        if (!obs[sub].biason)
+            service_feedback.voltageOff();
+        else
+        {
+            // Switch the voltage to a reduced level (Ubd)
+            var bias = dim.state("BIAS_CONTROL").name;
+            if (bias=="VoltageOn" || bias=="Ramping")
+                service_feedback.voltageOn(0);
+        }
+        // Close lid
+        CloseLid();
+
+        // Move to position (zd/az)
+        dim.log("Moving telescope to zd="+obs[sub].zd+" az="+obs[sub].az);
+        dim.send("DRIVE_CONTROL/MOVE_TO", obs[sub].zd, obs[sub].az);
+        v8.sleep(3000);
+        dim.wait("DRIVE_CONTROL", "Armed", 150000); // 110s for turning and 30s for stabilizing
+
+        // Now tracking stable, switch voltage to nominal level and wait
+        // for stability.
+        if (obs[sub].biason)
+        {
+            service_feedback.voltageOn();
+            service_feedback.waitForVoltageOn();
+        }
+
+        if (!irq)
+        {
+            dim.log("Taking custom run with time "+obs[sub].time+"s, threshold="+obs[sub].threshold+", biason="+obs[sub].biason);
+
+            var customRun = function()
+            {
+                v8.sleep(500);//wait that configuration is set
+                dim.wait("FTM_CONTROL", "TriggerOn", 15000);
+                dim.send("FAD_CONTROL/SEND_SINGLE_TRIGGER");
+                dim.send("RATE_CONTROL/STOP");
+                dim.send("FTM_CONTROL/STOP_TRIGGER");
+                dim.wait("FTM_CONTROL", "Valid", 3000);
+                dim.send("FTM_CONTROL/ENABLE_TRIGGER", true);
+                dim.send("FTM_CONTROL/SET_TIME_MARKER_DELAY", 123);
+                dim.send("FTM_CONTROL/SET_THRESHOLD", -1, obs[sub].threshold);
+                v8.sleep(500);//wait that configuration is set
+                dim.send("FTM_CONTROL/START_TRIGGER");
+                dim.wait("FTM_CONTROL", "TriggerOn", 15000);
+            }
+
+            takeRun(customRun, -1, obs[sub].time);
+        }
+        dim.log("Task finished [CUSTOM].");
+        dim.log("");
+        break; // case "CUSTOM"
+
+    case "DATA":
+
+        // ========================== case "DATA" ============================
+    /*
+        if (Sun.horizon("FACT").isUp)
+        {
+            console.out("  SHUTDOWN","");
+            Shutdown();
+            console.out("  Exit forced due to broken schedule", "");
+            exit();
+        }
+    */
+
+        // Calculate remaining time for this observation in minutes
+        var remaining = nextObs==undefined ? 0 : (nextObs.start-new Date())/60000;
+        //dim.log("DEBUG: remaining: "+remaining+" nextObs="+nextObs+" start="+nextObs.start);
+
+        // ------------------------------------------------------------
+
+        dim.log("Run count "+run+" [remaining "+parseInt(remaining)+"min]");
+
+        // ----- Time since last DRS Calibration [min] ------
+        var diff = getTimeSinceLastDrsCalib();
+
+        // Changine pointing position and take calibration...
+        //  ...every four runs (every ~20min)
+        //  ...if at least ten minutes of observation time are left
+        //  ...if this is the first run on the source
+        var point  = (run%4==0 && remaining>10) || run==0;
+
+        // Take DRS Calib...
+        //  ...every four runs (every ~20min)
+        //  ...at last  every two hours
+        //  ...when DRS temperature has changed by more than 2deg (?)
+        //  ...when more than 15min of observation are left
+        //  ...no drs calibration was done yet
+        var drscal = (run%4==0 && (remaining>15 && diff>70)) || diff==null;
+    
+        if (point)
+        {
+            // Switch the voltage to a reduced voltage level
+            service_feedback.voltageOn(0);
+
+            // Change wobble position every four runs,
+            // start with alternating wobble positions each day
+            var wobble = (parseInt(run/4) + parseInt(new Date()/1000/3600/24-0.5))%2+1;
+
+            //console.out("  Move telescope to '"+source+"' "+offset+" "+wobble);
+            dim.log("Pointing telescope to '"+obs[sub].source+"' [wobble="+wobble+"]");
+
+            // This is a workaround to make sure that we really catch
+            // the new OnTrack state later and not the old one
+            dim.send("DRIVE_CONTROL/STOP");
+            dim.wait("DRIVE_CONTROL", "Armed", 15000);
+
+            dim.send("DRIVE_CONTROL/TRACK_WOBBLE", wobble, obs[sub].source);
+
+            // Do we have to check if the telescope is really moving?
+            // We can cross-check the SOURCE service later
+        }
+
+        if (drscal)
+        {
+            doDrsCalibration("data");  // will turn voltage off
+
+            // Now we switch on the voltage and a significant amount of
+            // time has been passed, so do the check again.
+            sun = Sun.horizon(-12);
+            if (!was_up && sun.isUp)
+            {
+                dim.log("Sun rise detected....");
+                continue;
+            }
+        }
+
+        if (irq)
+            continue;
+
+        OpenLid();
+
+        // This is now th right time to wait for th drive to be stable
+        dim.wait("DRIVE_CONTROL", "OnTrack", 150000); // 110s for turning and 30s for stabilizing
+
+        // Now check the voltage... (do not start a lot of stuff just to do nothing)
+        var state = dim.state("FEEDBACK").name;
+        if (state=="Warning" || state=="Critical" || state=="OnStandby")
+        {
+            v8.sleep(60000);
+            continue;
+        }
+
+        // Now we are 'OnTrack', so we can ramp to nominal voltage
+        // and wait for the feedback to get stable
+        service_feedback.voltageOn();
+        service_feedback.waitForVoltageOn();
+
+        // If pointing had changed, do calibration
+        if (!irq && point)
+        {
+            dim.log("Starting calibration.");
+
+            // Calibration (2% of 20')
+            while (!irq)
+            {
+                if (irq || !takeRun("pedestal",         1000))  // 80 Hz  -> 10s
+                    continue;
+                if (irq || !takeRun("light-pulser-ext", 1000))  // 80 Hz  -> 10s
+                    continue;
+                break;
+            }
+        }
+
+        //console.out("  Taking data: start [5min]");
+
+        // FIXME: What do we do if during calibration something has happened
+        // e.g. drive went to ERROR? Maybe we have to check all states again?
+
+        var twilight = Sun.horizon(-16).isUp;
+
+        if (twilight)
+        {
+            for (var i=0; i<5 && !irq; i++)
+                takeRun("data", -1, 60); // Take data (1min)
+        }
+        else
+        {
+            var len = 300;
+            while (!irq && len>15)
+            {
+                var time = new Date();
+                if (takeRun("data", -1, len)) // Take data (5min)
+                    break;
+
+                len -= parseInt((new Date()-time)/1000);
+            }
+        }
+
+        //console.out("  Taking data: done");
+        run++;
+
+        continue; // case "DATA"
+    }
+
+    if (nextObs!=undefined && sub==obs.length-1)
+        dim.log("Next observation will start at "+nextObs.start.toUTCString()+" [id="+nextObs.id+"]");
+
+    sub++;
+}
+
+sub_drsruns.close();
+
+dim.log("Left main loop [irq="+irq+"]");
+
+// ================================================================
+// Comments and ToDo goes here
+// ================================================================
+
+// error handline : http://www.sitepoint.com/exceptional-exception-handling-in-javascript/
+// classes: http://www.phpied.com/3-ways-to-define-a-javascript-class/
Index: branches/testFACT++branch/scripts/MainClassic.js
===================================================================
--- branches/testFACT++branch/scripts/MainClassic.js	(revision 18277)
+++ branches/testFACT++branch/scripts/MainClassic.js	(revision 18277)
@@ -0,0 +1,1263 @@
+/**
+ * @fileOverview This file has functions related to documenting JavaScript.
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ */
+'use strict';
+
+dim.log("Start: "+__FILE__+" ["+__DATE__+"]");
+
+//dimctrl.defineState(37, "TimeOutBeforeTakingData", "MCP took more than 5minutes to start TakingData");
+
+// ================================================================
+//  Code related to the schedule
+// ================================================================
+
+//this is just the class implementation of 'Observation'
+include('scripts/Observation_class.js');
+
+// this file just contains the definition of
+// the variable observations, which builds our nightly schedule, hence the filename
+include('scripts/schedule.js');
+
+// make Observation objects from user input and check if 'date' is increasing.
+for (var i=0; i<observations.length; i++)
+{
+    observations[i] = new Observation(observations[i]);
+
+    // check if the start date given by the user is increasing.
+    if (i>0 && observations[i].start <= observations[i-1].start)
+    {
+        throw new Error("Start time '"+ observations[i].start.toUTCString()+
+                        "' in row "+i+" exceeds start time in row "+(i-1));
+    }
+}
+
+// Get the observation scheduled for 'now' from the table and
+// return its index
+function getObservation(now)
+{
+    if (now==undefined)
+        now = new Date();
+
+    if (isNaN(now.valueOf()))
+        throw new Error("Date argument in getObservation invalid.");
+
+    for (var i=0; i<observations.length; i++)
+        if (now<observations[i].start)
+            return i-1;
+
+    return observations.length-1;
+}
+
+// ================================================================
+//  Code to check whether observation is allowed
+// ================================================================
+/*
+function currentEst(source)
+{
+    var moon = new Moon();
+    if (!moon.isUp)
+        return 7.7;
+
+    var dist = Sky.dist(moon, source);
+
+    var alt = 90-moon.toLocal().zd;
+
+    var lc = dist*alt*pow(Moon.disk(), 6)/360/360;
+
+    var cur = 7.7+4942*lc;
+
+    return cur;
+}
+
+function thresholdEst(source) // relative threshold (ratio)
+{
+    // Assumption:
+    // atmosphere is 70km, shower taks place after 60km, earth radius 6400km
+    // just using the cosine law
+    // This fits very well with MC results: See Roger Firpo, p.45
+    // "Study of the MAGIC telescope sensitivity for Large Zenith Angle observations"
+
+    var c = Math.cos(Math.Pi-source.zd);
+    var ratio = (10*sqrt(409600*c*c+9009) + 6400*c - 60)/10;
+
+    // assumption: Energy threshold increases linearily with current
+    // assumption: Energy threshold increases linearily with distance
+
+    return ratio*currentEst(source)/7.7;
+}
+*/
+
+// ----------------------------------------------------------------
+
+// ================================================================
+//  Code related to monitoring the fad system
+// ================================================================
+
+var sub_incomplete = new Subscription("FAD_CONTROL/INCOMPLETE");
+
+var incomplete = 0;
+
+sub_incomplete.onchange = function(evt)
+{
+    if (!evt.data)
+        return;
+
+    var inc = evt.obj['incomplete'];
+    if (!inc || inc>0xffffffffff)
+        return;
+
+    if (incomplete>0)
+        return;
+
+    if (dim.state("MCP").name!="TakingData")
+        return;
+
+    incomplete = inc;
+
+    console.out("Sending MCP/STOP");
+    dim.send("MCP/STOP");
+}
+
+var sub_connections = new Subscription("FAD_CONTROL/CONNECTIONS");
+
+/**
+ * call-back function of FAD_CONTROL/CONNECTIONS
+ * store IDs of problematic FADs 
+ *
+ */
+/*
+sub_connections.onchange = function(evt)
+{
+    // This happens, but why?
+    if (!evt.obj['status'])
+        return;
+
+    this.reset = [ ];
+
+    for (var x=0; x<40; x++)
+        if (evt.obj['status'][x]!=66 && evt.obj['status'][x]!=67)
+            this.reset.push(x);
+
+    if (this.reset.length==0)
+        return;
+
+    //m.alarm("FAD board loss detected...");
+    dim.send("MCP/RESET");
+    dim.send("FAD_CONTROL/CLOSE_OPEN_FILES");
+}
+*/
+
+/**
+ * reconnect to problematic FADs
+ *
+ * Dis- and Reconnects to FADs, found to be problematic by call-back function
+ * onchange() to have a different CONNECTION value than 66 or 67. 
+ * 
+ * @returns
+ *      a boolean is returned. 
+ *      reconnect returns true if:
+ *          * nothing needed to be reset --> no problems found by onchange()
+ *          * the reconnection went fine.
+ *      
+ *      reconnect *never returns false* so far.
+ *
+ * @example
+ *      if (!sub_connections.reconnect())
+ *          exit();
+ */
+sub_connections.reconnect = function()
+{
+    // this.reset is a list containing the IDs of FADs, 
+    // which have neither CONNECTION==66 nor ==67, whatever this means :-)
+    if (this.reset.length==0)
+        return true;
+
+    console.out("  Reconnect: start ["+this.reset.length+"]");
+
+    for (var i=0; i<this.reset.length; i++)
+        dim.send("FAD_CONTROL/DISCONNECT", this.reset[i]);
+
+    v8.sleep(3000);
+
+    while (this.reset.length)
+        dim.send("FAD_CONTROL/CONNECT", this.reset.pop());
+
+    v8.sleep(1000);
+    dim.wait("FAD_CONTROL", "Connected", 3000);
+
+    console.out("  Reconnect: end");
+
+    return true;
+}
+
+// ================================================================
+//  Code related to taking data
+// ================================================================
+
+var startrun = new Subscription("FAD_CONTROL/START_RUN");
+startrun.get(5000);
+
+function reconnect(list, txt)
+{ /*
+    var reset = [ ];
+
+    for (var i=0; i<list.length; i++)
+        {
+            console.out("  FAD %2d".$(list[i])+" lost during "+txt);
+            reset.push(parseInt(list[i]/10));
+        }
+
+    reset = reset.filter(function(elem,pos){return reset.indexOf(elem)==pos;});
+
+    console.out("");
+    console.out("  FADs belong to crate(s): "+reset);
+    console.out("");
+*/
+    console.out("");
+    console.out("Trying automatic reconnect ["+txt+"]...");
+
+    for (var i=0; i<list.length; i++)
+    {
+        console.out("   ...disconnect "+list[i]);
+        dim.send("FAD_CONTROL/DISCONNECT", list[i]);
+    }
+
+    console.out("   ...waiting for 5s");
+    v8.sleep(5000);
+
+    for (var i=0; i<list.length; i++)
+    {
+        console.out("   ...reconnect "+list[i]);
+        dim.send("FAD_CONTROL/CONNECT", list[i]);
+    }
+
+    console.out("   ...waiting for 1s");
+    v8.sleep(1000);
+    console.out("");
+}
+
+function takeRun(type, count, time)
+{
+    if (!count)
+        count = -1;
+    if (!time)
+        time = -1;
+
+    var nextrun = startrun.get().obj['next'];
+    console.out("  Take run %3d".$(nextrun)+": N="+count+" T="+time+"s ["+type+"]");
+
+    incomplete = 0;
+    dim.send("MCP/START", time?time:-1, count?count:-1, type);
+
+    // FIXME: Replace by callback?
+    //
+    // DN: I believe instead of waiting for 'TakingData' one could split this
+    // up into two checks with an extra condition:
+    //  if type == 'data':
+    //      wait until ThresholdCalibration starts:
+    //          --> this time should be pretty identical for each run
+    //      if this takes longer than say 3s:
+    //          there might be a problem with one/more FADs
+    //    
+    //      wait until "TakingData":
+    //          --> this seems to take even some minutes sometimes... 
+    //              (might be optimized rather soon, but still in the moment...)
+    //      if this takes way too long: 
+    //          there might be something broken, 
+    //          so maybe a very high time limit is ok here.
+    //          I think there is not much that can go wrong, 
+    //          when the Thr-Calib has already started. Still it might be nice 
+    //          If in the future RateControl is written so to find out that 
+    //          in case the threshold finding algorithm does 
+    //          *not converge as usual*
+    //          it can complain, and in this way give a hint, that the weather
+    //          might be a little bit too bad.
+    //  else:
+    //      wait until "TakingData":
+    //          --> in a non-data run this time should be pretty short again
+    //      if this takes longer than say 3s:
+    //          there might be a problem with one/more FADs
+    //  
+
+    // Use this if you use the rate control to calibrate by rates
+    //if (!dim.wait("MCP", "TakingData", -300000) )
+    //{
+    //    throw new Error("MCP took longer than 5 minutes to start TakingData"+
+    //                    "maybe this idicates a problem with one of the FADs?");
+    //}
+
+    // Here we could check and handle fad losses
+
+    try
+    {
+        dim.wait("MCP", "TakingData", 15000);
+    }
+    catch (e)
+    {
+        console.out("");
+        console.out("MCP:         "+dim.state("MCP").name);
+        console.out("FAD_CONTROL: "+dim.state("FAD_CONTROL").name);
+        console.out("FTM_CONTROL: "+dim.state("FTM_CONTROL").name);
+        console.out("");
+
+        if (dim.state("MCP").name!="Configuring3" ||
+            dim.state("FAD_CONTROL").name!="Configuring2")
+            throw e;
+
+        console.out("");
+        console.out("Waiting for fadctrl to get configured timed out... checking for in-run FAD loss.");
+
+        var con  = sub_connections.get();
+        var stat = con.obj['status'];
+
+        console.out("Sending MCP/RESET");
+        dim.send("MCP/RESET");
+
+        dim.wait("FTM_CONTROL", "Idle",      3000);
+        dim.wait("FAD_CONTROL", "Connected", 3000);
+        dim.wait("MCP",         "Idle",      3000);
+
+        /*** FOR REMOVE ***/
+        var reset = [ ];
+
+        for (var i=0; i<40; i++)
+            if (stat[i]!=0x43)
+            {
+                console.out("  FAD %2d".$(i)+" not in Configured state.");
+                reset.push(parseInt(i/10));
+            }
+
+        reset = reset.filter(function(elem,pos){return reset.indexOf(elem)==pos;});
+
+        if (reset.length>0)
+        {
+            console.out("");
+            console.out("  FADs belong to crate(s): "+reset);
+            console.out("");
+        }
+        /**** FOR REMOVE ****/
+
+        var list = [];
+        for (var i=0; i<40; i++)
+            if (stat[i]!=0x43)
+                list.push(i);
+
+        reconnect(list, "configuration");
+
+        throw e;
+    }
+
+    dim.wait("MCP", "Idle", time>0 ? time*1250 : undefined); // run time plus 25%
+
+    if (incomplete)
+    {
+        console.out("Incomplete: "+incomplete);
+
+        console.out("");
+        console.out("MCP:         "+dim.state("MCP").name);
+        console.out("FAD_CONTROL: "+dim.state("FAD_CONTROL").name);
+        console.out("FTM_CONTROL: "+dim.state("FTM_CONTROL").name);
+        console.out("");
+
+        dim.wait("MCP",         "Idle", 3000);
+        dim.wait("FTM_CONTROL", "Idle", 3000);
+
+        // Necessary to allow the disconnect, reconnect
+        dim.send("FAD_CONTROL/CLOSE_OPEN_FILES");
+        dim.wait("FAD_CONTROL", "Connected", 3000);
+
+        var list = [];
+        for (var i=0; i<40; i++)
+            if (incomplete&(1<<i))
+                list.push(i);
+
+        reconnect(list, "data taking");
+
+        throw new Error("In-run FAD loss detected.");
+    }
+
+    //console.out("  Take run: end");
+
+    // DN: currently reconnect() never returns false 
+    //     .. but it can fail of course.
+    //if (!sub_connections.reconnect())
+    //    exit();
+
+    return true;//sub_connections.reconnect();
+}
+
+// ----------------------------------------------------------------
+
+function doDrsCalibration(where)
+{
+    console.out("  Take DRS calibration ["+where+"]");
+
+    service_feedback.voltageOff();
+
+    var tm = new Date();
+
+    while (1)
+    {
+        dim.send("FAD_CONTROL/START_DRS_CALIBRATION");
+        if (!takeRun("drs-pedestal", 1000))     // 40 / 20s     (50Hz)
+            continue;
+
+        // Does that fix the runopen before runclose problem?
+        //dim.wait("FAD_CONTROL", "Connected", 3000);
+        //v8.sleep(1000);
+
+        if (!takeRun("drs-gain",     1000))     // 40 / 20s     (50Hz)
+            continue;
+
+        // Does that fix the runopen before runclose problem?
+        //dim.wait("FAD_CONTROL", "Connected", 3000);
+        //v8.sleep(1000);
+
+        if (!takeRun("drs-pedestal", 1000))     // 40 / 20s     (50Hz)
+            continue;
+
+        dim.send("FAD_CONTROL/SET_FILE_FORMAT", 2);
+        if (!takeRun("drs-pedestal", 1000))     // 40 / 20s     (50Hz)
+            continue;
+        if (!takeRun("drs-time",     1000))     // 40 / 20s     (50Hz)
+            continue;
+
+        dim.send("FAD_CONTROL/RESET_SECONDARY_DRS_BASELINE");
+        if (!takeRun("pedestal",     1000))     // 40 / 10s     (80Hz)
+            continue;
+
+        dim.send("FAD_CONTROL/SET_FILE_FORMAT", 2);
+        if (!takeRun("pedestal",     1000))     // 40 / 10s     (80Hz)
+            continue;
+        //                                       -----------
+        //                                       4'40 / 2'00
+
+        break;
+    }
+
+    console.out("  DRS calibration done [%.1f]".$((new Date()-tm)/1000));
+}
+
+// ================================================================
+//  Code related to the lid
+// ================================================================
+
+function OpenLid()
+{
+    /*
+    while (Sun.horizon(-13).isUp)
+    {
+        var now = new Date();
+        var minutes_until_sunset = (Sun.horizon(-13).set - now)/60000;
+        console.out(now.toUTCString()+": Sun above FACT-horizon, lid cannot be opened: sleeping 1min, remaining %.1fmin".$(minutes_until_sunset));
+        v8.sleep(60000);
+    }*/
+
+    var isClosed = dim.state("LID_CONTROL").name=="Closed";
+
+    var tm = new Date();
+
+    // Wait for lid to be open
+    if (isClosed)
+    {
+        console.out("  Open lid: start");
+        dim.send("LID_CONTROL/OPEN");
+    }
+    dim.wait("LID_CONTROL", "Open", 30000);
+
+    if (isClosed)
+        console.out("  Open lid: done [%.1fs]".$((new Date()-tm)/1000));
+}
+
+function CloseLid()
+{
+    var isOpen = dim.state("LID_CONTROL").name=="Open";
+
+    var tm = new Date();
+
+    // Wait for lid to be open
+    if (isOpen)
+    {
+        console.out("  Close lid: start");
+        dim.send("LID_CONTROL/CLOSE");
+    }
+    dim.wait("LID_CONTROL", "Closed", 30000);
+
+    if (isOpen)
+        console.out("  Close lid: end [%.1fs]".$((new Date()-tm)/1000));
+}
+
+// ================================================================
+//  Code related to switching bias voltage on and off
+// ================================================================
+
+var service_feedback = new Subscription("FEEDBACK/DEVIATION");
+
+service_feedback.onchange = function(evt)
+{
+    if (this.cnt && evt.counter>this.cnt+12)
+        return;
+
+    this.voltageStep = null;
+    if (!evt.data)
+        return;
+
+    var delta = evt.obj['DeltaBias'];
+
+    var avg = 0;
+    for (var i=0; i<320; i++)
+        avg += delta[i];
+    avg /= 320;
+
+    if (this.previous)
+        this.voltageStep = Math.abs(avg-this.previous);
+
+    this.previous = avg;
+
+    console.out("  DeltaV="+this.voltageStep);
+}
+
+// DN:  Why is voltageOff() implemented as 
+//      a method of a Subscription to a specific Service
+//      I naively would think of voltageOff() as an unbound function.
+//      I seems to me it has to be a method of a Subscription object, in order
+//      to use the update counting method. But does it have to be
+//      a Subscription to FEEDBACK/DEVIATION, or could it work with other services as well?
+service_feedback.voltageOff = function()
+{
+    var state = dim.state("BIAS_CONTROL").name;
+
+    // check of feedback has to be switched on
+    var isOn = state=="VoltageOn" || state=="Ramping";
+    if (isOn)
+    {
+        console.out("  Voltage off: start");
+
+        // Supress the possibility that the bias control is
+        // ramping and will reject the command to switch the
+        // voltage off
+        var isControl = dim.state("FEEDBACK").name=="CurrentControl";
+        if (isControl)
+        {
+            console.out("  Suspending feedback.");
+            dim.send("FEEDBACK/ENABLE_OUTPUT", false);
+            dim.wait("FEEDBACK", "CurrentCtrlIdle", 3000);
+        }
+
+        // Switch voltage off
+        console.out("  Voltage on: switch off");
+        dim.send("BIAS_CONTROL/SET_ZERO_VOLTAGE");
+
+        // If the feedback was enabled, re-enable it
+        if (isControl)
+        {
+            console.out("  Resuming feedback.");
+            dim.send("FEEDBACK/ENABLE_OUTPUT", true);
+            dim.wait("FEEDBACK", "CurrentControl", 3000);
+        }
+    }
+
+    dim.wait("BIAS_CONTROL", "VoltageOff", 5000);
+
+    // FEEDBACK stays in CurrentCtrl when Voltage is off but output enabled
+    // dim.wait("FEEDBACK", "CurrentCtrlIdle", 1000);
+
+    if (isOn)
+        console.out("  Voltage off: end");
+}
+
+// DN:  The name of the method voltageOn() in the context of the method
+//      voltageOff() is a little bit misleading, since when voltageOff() returns
+//      the caller can be sure the voltage is off, but when voltageOn() return
+//      this is not the case, in the sense, that the caller can now take data.
+//      instead the caller of voltageOn() *must* call waitForVoltageOn() afterwards
+//      in order to safely take good-quality data.
+//      This could lead to nasty bugs in the sense, that the second call might 
+//      be forgotten by somebody
+//      
+//      so I suggest to rename voltageOn() --> prepareVoltageOn()
+//      waitForVoltageOn() stays as it is
+//      and one creates a third method called:voltageOn() like this
+/*      service_feedback.voltageOn = function()
+ *      {
+ *          this.prepareVoltageOn();
+ *          this.waitForVoltageOn();
+ *      }
+ * 
+ * */
+//      For convenience.
+
+service_feedback.voltageOn = function()
+{
+    //if (Sun.horizon("FACT").isUp)
+    //    throw new Error("Sun is above FACT-horizon, voltage cannot be switched on.");
+
+    var isOff = dim.state("BIAS_CONTROL").name=="VoltageOff";
+    if (isOff)
+    {
+        console.out("  Voltage on: switch on");
+        //console.out(JSON.stringify(dim.state("BIAS_CONTROL")));
+
+        dim.send("BIAS_CONTROL/SET_GLOBAL_DAC", 1);
+    }
+
+    // Wait until voltage on
+    dim.wait("BIAS_CONTROL", "VoltageOn", 5000);
+
+    // From now on the feedback waits for a valid report from the FSC
+    // and than switchs to CurrentControl
+    dim.wait("FEEDBACK", "CurrentControl", 60000);
+
+    if (isOff)
+    {
+        console.out("  Voltage on: cnt="+this.cnt);
+
+        this.previous = undefined;
+        this.cnt = this.get().counter;
+        this.voltageStep = undefined;
+    }
+}
+
+service_feedback.waitForVoltageOn = function()
+{
+    // waiting 45sec for the current control to stabilize...
+    // v8.sleep(45000);
+
+    // ----- Wait for at least three updates -----
+    // The feedback is started as if the camera where at 0deg
+    // Then after the first temp update, the temperature will be set to the
+    // correct value (this has already happened)
+    // So we only have to wait for the current to get stable.
+    // This should happen after three to five current updates.
+    // So we want one recent temperature update
+    //  and three recent current updates
+
+    // Avoid output if condition is already fulfilled
+    if (this.cnt && this.get().counter>this.cnt+10)
+        return;
+
+    // FIXME: timeout missing
+    console.out("  Feedback wait: start");
+
+    function func(service)
+    {
+        if ((service.cnt!=undefined && service.get().counter>service.cnt+10) ||
+            (service.voltageStep && service.voltageStep<0.02))
+            return true;
+    }
+
+    var now = new Date();
+    //v8.timeout(5*60000, func, this);
+    while ((this.cnt==undefined || this.get().counter<=this.cnt+10) && (!this.voltageStep || this.voltageStep>0.02))
+        v8.sleep();
+
+    console.out("  Feedback wait: end [dV=%.3f, cnt=%d, %.2fs]".$(this.voltageStep, this.get().counter, (new Date()-now)/1000));
+}
+
+// ================================================================
+//  Function to shutdown the system
+// ================================================================
+
+function Shutdown()
+{
+    console.out("Shutdown: start");
+
+    service_feedback.voltageOff();
+    CloseLid(); 
+    dim.send("DRIVE_CONTROL/PARK");
+
+    console.out("Waiting for telescope to park. This may take a while.");
+
+    // FIXME: This might not work is the drive is already close to park position
+    dim.wait("DRIVE_CONTROL", "Locked", 3000);
+
+    var sub = new Subscription("DRIVE_CONTROL/POINTING_POSITION");
+    sub.get(5000);  // FIXME: Proper error message in case of failure
+
+    function func()
+    {
+        var report = sub.get();
+
+        var zd = report.obj['Zd'];
+        var az = report.obj['Az'];
+
+        if (zd>100 && Math.abs(az)<1)
+            return true;
+
+        return undefined;
+    }
+
+    var now = new Date();
+    v8.timeout(150000, func);
+
+    //dim.send("FEEDBACK/STOP");
+    dim.send("FEEDBACK/ENABLE_OUTPUT", false);
+    dim.send("FTM_CONTROL/STOP_TRIGGER");
+
+    dim.wait("FEEDBACK", "CurrentCtrlIdle", 3000);
+    dim.wait("FTM_CONTROL", "Idle", 3000);
+
+    var report = sub.get();
+
+    console.out("");
+    console.out("Shutdown procedure seems to be finished...");
+    console.out("  Telescope at Zd=%.1fdeg Az=%.1fdeg".$(report.obj['Zd'], report.obj['Az']));
+    console.out("  Please make sure the park position was reached");
+    console.out("  and the telescope is not moving anymore.");
+    console.out("  Please check that the lid is closed and the voltage switched off.");
+    console.out("");
+    console.out("Shutdown: end ["+(new Date()-now)/1000+"s]");
+
+    sub.close();
+}
+
+// ================================================================
+// Check datalogger subscriptions
+// ================================================================
+
+var datalogger_subscriptions = new Subscription("DATA_LOGGER/SUBSCRIPTIONS");
+datalogger_subscriptions.get(3000, false);
+
+datalogger_subscriptions.check = function()
+{
+    var obj = this.get();
+    if (!obj.data)
+        throw new Error("DATA_LOGGER/SUBSCRIPTIONS not available.");
+
+    var expected =
+        [
+         "BIAS_CONTROL/CURRENT",
+         "BIAS_CONTROL/DAC",
+         "BIAS_CONTROL/NOMINAL",
+         "BIAS_CONTROL/VOLTAGE",
+         "DRIVE_CONTROL/POINTING_POSITION",
+         "DRIVE_CONTROL/SOURCE_POSITION",
+         "DRIVE_CONTROL/STATUS",
+         "DRIVE_CONTROL/TRACKING_POSITION",
+         "FAD_CONTROL/CONNECTIONS",
+         "FAD_CONTROL/DAC",
+         "FAD_CONTROL/DNA",
+         "FAD_CONTROL/DRS_RUNS",
+         "FAD_CONTROL/EVENTS",
+         "FAD_CONTROL/FEEDBACK_DATA",
+         "FAD_CONTROL/FILE_FORMAT",
+         "FAD_CONTROL/FIRMWARE_VERSION",
+         "FAD_CONTROL/INCOMPLETE",
+         "FAD_CONTROL/PRESCALER",
+         "FAD_CONTROL/REFERENCE_CLOCK",
+         "FAD_CONTROL/REGION_OF_INTEREST",
+         "FAD_CONTROL/RUNS",
+         "FAD_CONTROL/RUN_NUMBER",
+         "FAD_CONTROL/START_RUN",
+         "FAD_CONTROL/STATISTICS1",
+         "FAD_CONTROL/STATISTICS2",
+         "FAD_CONTROL/STATS",
+         "FAD_CONTROL/STATUS",
+         "FAD_CONTROL/TEMPERATURE",
+         "FEEDBACK/CALIBRATED_CURRENTS",
+         "FEEDBACK/CALIBRATION",
+         "FEEDBACK/DEVIATION",
+         "FEEDBACK/REFERENCE",
+         "FSC_CONTROL/CURRENT",
+         "FSC_CONTROL/HUMIDITY",
+         "FSC_CONTROL/TEMPERATURE",
+         "FSC_CONTROL/VOLTAGE",
+         "FTM_CONTROL/COUNTER",
+         "FTM_CONTROL/DYNAMIC_DATA",
+         "FTM_CONTROL/ERROR",
+         "FTM_CONTROL/FTU_LIST",
+         "FTM_CONTROL/PASSPORT",
+         "FTM_CONTROL/STATIC_DATA",
+         "FTM_CONTROL/TRIGGER_RATES",
+         "LID_CONTROL/DATA",
+         "MAGIC_LIDAR/DATA",
+         "MAGIC_WEATHER/DATA",
+         "MCP/CONFIGURATION",
+         "PWR_CONTROL/DATA",
+         "RATE_CONTROL/THRESHOLD",
+         "RATE_SCAN/DATA",
+         "RATE_SCAN/PROCESS_DATA",
+         "TEMPERATURE/DATA",
+         "TIME_CHECK/OFFSET",
+         "TNG_WEATHER/DATA",
+         "TNG_WEATHER/DUST",
+        ];
+
+    function map(entry)
+    {
+        if (entry.length==0)
+            return undefined;
+
+        var rc = entry.split(',');
+        if (rc.length!=2)
+            throw new Error("Subscription list entry '"+entry+"' has wrong number of elements.");
+        return rc;
+    }
+
+    var list = obj.data.split('\n').map(map);
+
+    function check(name)
+    {
+        if (list.every(function(el){return el[0]!=name;}))
+            throw new Error("Subscription to '"+name+"' not available.");
+    }
+
+    expected.forEach(check);
+}
+
+
+
+// ================================================================
+// Crosscheck all states
+// ================================================================
+
+// ----------------------------------------------------------------
+// Do a standard startup to bring the system in into a well
+// defined state
+// ----------------------------------------------------------------
+include('scripts/Startup.js');
+
+// ----------------------------------------------------------------
+// Check that everything we need is availabel to receive commands
+// (FIXME: Should that go to the general CheckState?)
+// ----------------------------------------------------------------
+console.out("Checking send.");
+checkSend(["MCP", "DRIVE_CONTROL", "LID_CONTROL", "FAD_CONTROL", "FEEDBACK"]);
+console.out("Checking send: done");
+
+// ----------------------------------------------------------------
+// Bring feedback into the correct operational state
+// ----------------------------------------------------------------
+console.out("Feedback init: start.");
+service_feedback.get(5000);
+
+dim.send("FEEDBACK/ENABLE_OUTPUT", true);
+dim.send("FEEDBACK/START_CURRENT_CONTROL", 0.);
+
+v8.timeout(3000, function() { var n = dim.state("FEEDBACK").name; if (n=="CurrentCtrlIdle" || n=="CurrentControl") return true; });
+
+// ----------------------------------------------------------------
+// Connect to the DRS_RUNS service
+// ----------------------------------------------------------------
+console.out("Drs runs init: start.");
+
+var sub_drsruns = new Subscription("FAD_CONTROL/DRS_RUNS");
+sub_drsruns.get(5000);
+// FIXME: Check if the last DRS calibration was complete?
+
+function getTimeSinceLastDrsCalib()
+{
+    // ----- Time since last DRS Calibration [min] ------
+    var runs = sub_drsruns.get(0);
+    var diff = (new Date()-runs.time)/60000;
+
+    // Warning: 'roi=300' is a number which is not intrisically fixed
+    //          but can change depending on the taste of the observers
+    var valid = runs.obj['run'][2]>0 && runs.obj['roi']==300;
+
+    if (valid)
+        console.out("  Last DRS calib: %.1fmin ago".$(diff));
+    else
+        console.out("  No valid drs calibration available");
+
+    return valid ? diff : null;
+}
+
+// ----------------------------------------------------------------
+// Make sure we will write files
+// ----------------------------------------------------------------
+dim.send("FAD_CONTROL/SET_FILE_FORMAT", 2);
+
+// ----------------------------------------------------------------
+// Print some information for the user about the
+// expected first oberservation
+// ----------------------------------------------------------------
+var test = getObservation();
+if (test!=undefined)
+{
+    var n = new Date();
+    if (test==-1)
+        console.out(n.toUTCString()+": First observation scheduled for "+observations[0].start.toUTCString());
+    if (test>=0 && test<observations.length)
+        console.out(n.toUTCString()+": First observation should start immediately.");
+    if (observations[0].start>n+12*3600*1000)
+        console.out(n.toUTCString()+": No observations scheduled for the next 12 hours!");
+}
+
+// ----------------------------------------------------------------
+// Start main loop
+// ----------------------------------------------------------------
+console.out("Start main loop.");
+
+var run = -2; // getObservation never called
+var sub;
+var lastObs;
+var sun = Sun.horizon(-13);
+var system_on;  // undefined
+
+while (1)
+{
+    // Check if observation position is still valid
+    // If source position has changed, set run=0
+    var idxObs = getObservation();
+    if (idxObs===undefined)
+        break;
+
+    // we are still waiting for the first observation in the schedule
+    if (idxObs==-1)
+    {
+        // flag that the first observation will be in the future
+        run = -1; 
+        v8.sleep(1000);
+        continue;
+    }
+
+    // Check if we have to take action do to sun-rise
+    var was_up = sun.isUp;
+    sun = Sun.horizon(-13);
+    if (!was_up && sun.isUp)
+    {
+        console.out("", "Sun rise detected.... automatic shutdown initiated!");
+        // FIXME: State check?
+        Shutdown();
+        system_on = false;
+        continue;
+    }
+
+    // Current and next observation target
+    var obs     = observations[idxObs];
+    var nextObs = observations[idxObs+1];
+
+    // Check if observation target has changed
+    if (lastObs!=idxObs) // !Object.isEqual(obs, nextObs)
+    {
+        console.out("--- "+idxObs+" ---");
+        console.out("Current time:        "+new Date().toUTCString());
+        console.out("Current observation: "+obs.start.toUTCString());
+        if (nextObs!=undefined)
+            console.out("Next    observation: "+nextObs.start.toUTCString());
+        console.out("");
+
+        // This is the first source, but we do not come from
+        // a scheduled 'START', so we have to check if the
+        // telescop is operational already
+        sub = 0;
+        if (run<0)
+        {
+            //Startup();   // -> Bias On/Off?, Lid open/closed?
+            //CloseLid();
+        }
+
+        // The first observation had a start-time in the past...
+        // In this particular case start with the last entry
+        // in the list of measurements
+        if (run==-2)
+            sub = obs.length-1;
+
+        run = 0;
+    }
+    lastObs = idxObs;
+
+    if (nextObs==undefined && obs[obs.length-1].task!="SHUTDOWN")
+        throw Error("Last scheduled measurement must be a shutdown.");
+
+    // We are done with all measurement slots for this
+    // observation... wait for next observation
+    if (sub>=obs.length)
+    {
+        v8.sleep(1000);
+        continue;
+    }
+
+    var task = obs[sub].task;
+
+    if (system_on===false && task!="STARTUP")
+    {
+        v8.sleep(1000);
+        continue;
+    }
+
+    // Check if sun is still up... only DATA and RATESCAN must be suppressed
+    if ((task=="DATA" || task=="RATESCAN") && sun.isUp)
+    {
+        var now = new Date();
+        var remaining = (sun.set - now)/60000;
+        console.out(now.toUTCString()+" - "+obs[sub].task+": Sun above FACT-horizon: sleeping 1min, remaining %.1fmin".$(remaining));
+        v8.sleep(60000);
+        continue;
+    }
+
+    console.out("\n"+(new Date()).toUTCString()+": Current measurement: "+obs[sub]);
+
+    var power_states = sun.isUp || system_on===false ? [ "DriveOff" ] : [ "SystemOn" ];
+    var drive_states = sun.isUp || system_on===false ?   undefined    : [ "Armed", "Tracking", "OnTrack" ];
+
+    // A scheduled task was found, lets check if all servers are
+    // still only and in reasonable states. If this is not the case,
+    // something unexpected must have happend and the script is aborted.
+    //console.out("  Checking states [general]");
+    var table =
+        [
+         [ "TNG_WEATHER"   ],
+         [ "MAGIC_WEATHER" ],
+         [ "CHAT"          ],
+         [ "SMART_FACT"    ],
+         [ "TEMPERATURE"   ],
+         [ "DATA_LOGGER",     [ "NightlyFileOpen", "WaitForRun", "Logging" ] ],
+         [ "FSC_CONTROL",     [ "Connected"                ] ],
+         [ "MCP",             [ "Idle"                     ] ],
+         [ "TIME_CHECK",      [ "Valid"                    ] ],
+         [ "PWR_CONTROL",     power_states/*[ "SystemOn"                 ]*/ ],
+//         [ "AGILENT_CONTROL", [ "VoltageOn"                ] ],
+         [ "BIAS_CONTROL",    [ "VoltageOff", "VoltageOn", "Ramping" ] ],
+         [ "FEEDBACK",        [ "CurrentControl", "CurrentCtrlIdle" ] ],
+         [ "LID_CONTROL",     [ "Open", "Closed"           ] ],
+         [ "DRIVE_CONTROL",   drive_states/*[ "Armed", "Tracking", "OnTrack" ]*/ ],
+         [ "FTM_CONTROL",     [ "Idle", "TriggerOn"        ] ],
+         [ "FAD_CONTROL",     [ "Connected", "WritingData" ] ],
+         [ "RATE_SCAN",       [ "Connected"                ] ],
+         [ "RATE_CONTROL",    [ "Connected", "GlobalThresholdSet", "InProgress"  ] ],
+        ];
+
+    if (!checkStates(table))
+    {
+        throw new Error("Something unexpected has happened. One of the servers"+
+                        "is in a state in which it should not be. Please,"+
+                        "try to find out what happened...");
+    }
+
+    datalogger_subscriptions.check();
+
+    // Check if obs.task is one of the one-time-tasks
+    switch (obs[sub].task)
+    {
+    case "STARTUP":
+        console.out("  STARTUP", "");
+        CloseLid();
+
+        doDrsCalibration("startup");  // will switch the voltage off
+
+        service_feedback.voltageOn();
+        service_feedback.waitForVoltageOn();
+
+        // Before we can switch to 3000 we have to make the right DRS calibration
+        console.out("  Take single p.e. run.");
+        while (!takeRun("pedestal", 5000));
+
+        // It is unclear what comes next, so we better switch off the voltage
+        service_feedback.voltageOff();
+        system_on = true;
+        break;
+
+    case "SHUTDOWN":
+        console.out("  SHUTDOWN", "");
+        Shutdown();
+        system_on = false;
+
+        // FIXME: Avoid new observations after a shutdown until
+        //        the next startup (set run back to -2?)
+        console.out("  Waiting for next startup.", "");
+        sub++;
+        continue;
+
+    case "IDLE":
+        v8.sleep(1000);
+        continue;
+
+    case "DRSCALIB":
+        console.out("  DRSCALIB", "");
+        doDrsCalibration("drscalib");  // will switch the voltage off
+        break;
+
+    case "SINGLEPE":
+        console.out("  SINGLE-PE", "");
+
+        // The lid must be closes
+        CloseLid();
+
+        // Check if DRS calibration is necessary
+        var diff = getTimeSinceLastDrsCalib();
+        if (diff>30 || diff==null)
+            doDrsCalibration("singlepe");  // will turn voltage off
+
+        // The voltage must be on
+        service_feedback.voltageOn();
+        service_feedback.waitForVoltageOn();
+
+        // Before we can switch to 3000 we have to make the right DRS calibration
+        console.out("  Take single p.e. run.");
+        while (!takeRun("pedestal", 5000));
+
+        // It is unclear what comes next, so we better switch off the voltage
+        service_feedback.voltageOff();
+        break;
+
+    case "RATESCAN":
+        console.out("  RATESCAN", "");
+
+        var tm1 = new Date();
+
+        // This is a workaround to make sure that we really catch
+        // the new state and not the old one
+        dim.send("DRIVE_CONTROL/STOP");
+        dim.wait("DRIVE_CONTROL", "Armed", 5000);
+
+        // The lid must be open
+        OpenLid();
+
+        // The voltage must be switched on
+        service_feedback.voltageOn();
+
+        if (obs.source != undefined)
+            dim.send("DRIVE_CONTROL/TRACK_ON", obs[sub].source);
+        else
+            dim.send("DRIVE_CONTROL/TRACK", obs[sub].ra, obs[sub].dec);
+
+        dim.wait("DRIVE_CONTROL", "OnTrack", 150000); // 110s for turning and 30s for stabilizing
+
+        service_feedback.waitForVoltageOn();
+
+        var tm2 = new Date();
+
+        // Start rate scan
+        dim.send("RATE_SCAN/START_THRESHOLD_SCAN", 50, 1000, -10);
+
+        // Lets wait if the ratescan really starts... this might take a few
+        // seconds because RATE_SCAN configures the ftm and is waiting for
+        // it to be configured.
+        dim.wait("RATE_SCAN", "InProgress", 10000);
+        dim.wait("RATE_SCAN", "Connected", 2700000);
+
+        // this line is actually some kind of hack. 
+        // after the Ratescan, no data is written to disk. I don't know why, but it happens all the time
+        // So I decided to put this line here as a kind of patchwork....
+        //dim.send("FAD_CONTROL/SET_FILE_FORMAT", 2);
+
+        console.out("  Ratescan done [%.1fs, %.1fs]".$((tm2-tm1)/1000, (new Date()-tm2)/1000));
+        break; // case "RATESCAN"
+
+    case "DATA":
+
+        // ========================== case "DATA" ============================
+    /*
+        if (Sun.horizon("FACT").isUp)
+        {
+            console.out("  SHUTDOWN","");
+            Shutdown();
+            console.out("  Exit forced due to broken schedule", "");
+            exit();
+        }
+    */
+        // Calculate remaining time for this observation in minutes
+        var remaining = nextObs==undefined ? 0 : (nextObs.start-new Date())/60000;
+
+        // ------------------------------------------------------------
+
+        console.out("  Run #"+run+"  (remaining "+parseInt(remaining)+"min)");
+
+        // ----- Time since last DRS Calibration [min] ------
+        var diff = getTimeSinceLastDrsCalib();
+
+        // Changine pointing position and take calibration...
+        //  ...every four runs (every ~20min)
+        //  ...if at least ten minutes of observation time are left
+        //  ...if this is the first run on the source
+        var point  = (run%4==0 && remaining>10) || run==0;
+
+        // Take DRS Calib...
+        //  ...every four runs (every ~20min)
+        //  ...at last  every two hours
+        //  ...when DRS temperature has changed by more than 2deg (?)
+        //  ...when more than 15min of observation are left
+        //  ...no drs calibration was done yet
+        var drscal = (run%4==0 && (remaining>15 && diff>70)) || diff==null;
+
+        if (point)
+        {
+            // Change wobble position every four runs,
+            // start with alternating wobble positions each day
+            var wobble = (parseInt(run/4) + parseInt(new Date()/1000/3600/24-0.5))%2+1;
+
+            //console.out("  Move telescope to '"+source+"' "+offset+" "+wobble);
+            console.out("  Move telescope to '"+obs[sub].source+"' ["+wobble+"]");
+
+            //var offset = observations[obs][2];
+            //var wobble = observations[obs][3 + parseInt(run/4)%2];
+
+            //dim.send("DRIVE_CONTROL/TRACK_SOURCE", offset, wobble, source);
+
+            dim.send("DRIVE_CONTROL/TRACK_WOBBLE", wobble, obs[sub].source);
+
+            // Do we have to check if the telescope is really moving?
+            // We can cross-check the SOURCE service later
+        }
+
+        if (drscal)
+            doDrsCalibration("data");  // will turn voltage off
+
+        OpenLid();
+
+        // voltage must be switched on after the lid is open for the
+        // feedback to adapt the voltage properly to the night-sky
+        // background light level.
+        service_feedback.voltageOn();
+
+        // This is now th right time to wait for th drive to be stable
+        dim.wait("DRIVE_CONTROL", "OnTrack", 150000); // 110s for turning and 30s for stabilizing
+
+        // Now we have to be prepared for data-taking:
+        // make sure voltage is on
+        service_feedback.waitForVoltageOn();
+
+        // If pointing had changed, do calibration
+        if (point)
+        {
+            console.out("  Calibration.");
+
+            // Calibration (2% of 20')
+            while (1)
+            {
+                if (!takeRun("pedestal",         1000))  // 80 Hz  -> 10s
+                    continue;
+                if (!takeRun("light-pulser-ext", 1000))  // 80 Hz  -> 10s
+                    continue;
+                break;
+            }
+        }
+
+        console.out("  Taking data: start [5min]");
+
+        var len = 300;
+        while (len>0)
+        {
+            var time = new Date();
+            if (takeRun("data", -1, len)) // Take data (5min)
+                break;
+
+            len -= parseInt((new Date()-time)/1000);
+        }
+
+        console.out("  Taking data: done");
+        run++;
+
+        continue; // case "DATA"
+    }
+
+    if (nextObs!=undefined && sub==obs.length-1)
+        console.out("  Waiting for next observation scheduled for "+nextObs.start.toUTCString(),"");
+
+    sub++;
+}
+
+sub_drsruns.close();
+
+// ================================================================
+// Comments and ToDo goes here
+// ================================================================
+
+// error handline : http://www.sitepoint.com/exceptional-exception-handling-in-javascript/
+// classes: http://www.phpied.com/3-ways-to-define-a-javascript-class/
+//
+// Arguments: TakeFirstDrsCalib
+// To be determined: How to stop the script without foreceful interruption?
Index: branches/testFACT++branch/scripts/Observation_class.js
===================================================================
--- branches/testFACT++branch/scripts/Observation_class.js	(revision 18277)
+++ branches/testFACT++branch/scripts/Observation_class.js	(revision 18277)
@@ -0,0 +1,124 @@
+'use strict';
+
+//
+// this file contains just the implementation of the
+// Observation class (I know there are no classes in javascript...)
+//
+
+function Observation(obj)
+{
+    if (typeof(obj)!='object')
+        throw new Error("Observation object can only be constructed using an object.");
+
+    if (!obj.date)
+        throw new Error("Observation object must have a 'date' parameter");
+
+    var ret = [];
+
+    // FIXME: Check transisiton from summer- and winter-time!!
+    var utc = obj.date.toString().toUpperCase()=="NOW" ? new Date() : new Date(obj.date);
+    if (isNaN(utc.valueOf()))
+        throw new Error('"'+obj.date+'" not a valid Date... try something like "2013-01-08 23:05 UTC".');
+    ret.start = utc;
+    ret.id    = obj.id;
+
+    // If the given data is not an array, make it the first entry of an array
+    // so that we can simply loop over all entries
+    if (obj.measurements.length===undefined)
+    {
+        var cpy = obj.measurements;
+        obj.measurements = [];
+        obj.measurements[0] = cpy;
+    }
+
+    for (var i=0; i<obj.measurements.length; i++)
+    {
+        var obs = obj.measurements[i];
+
+        ret[i] = { };
+        ret[i].task   = obs.task ? obs.task.toUpperCase() : "DATA";
+        ret[i].source = obs.source;
+        ret[i].ra     = parseFloat(obs.ra);
+        ret[i].dec    = parseFloat(obs.dec);
+        ret[i].zd     = parseFloat(obs.zd);
+        ret[i].az     = parseFloat(obs.az);
+        ret[i].time   = parseInt(obs.time);
+        ret[i].threshold = parseInt(obs.threshold);
+        ret[i].lidclosed = obs.lidclosed;
+        ret[i].biason = obs.biason;
+        ret[i].rstype = obs.rstype ? obs.rstype : "default";
+        ret[i].sub    = i;
+        ret[i].start  = utc;
+
+        ret[i].toString = function()
+        {
+            var rc = this.task;
+            rc += "["+this.sub+"]";
+            if (this.source)
+                rc += ": " + this.source;
+            //rc += " ["+this.start.toUTCString()+"]";
+            return rc;
+        }
+
+        switch (ret[i].task)
+        {
+        case 'DATA':
+            if (i!=obj.measurements.length-1)
+                throw new Error("DATA [n="+i+", "+utc.toUTCString()+"] must be the last in the list of measurements [cnt="+obj.measurements.length+"]");
+            if (ret[i].source == undefined)
+                throw new Error("Observation must have either 'source' or 'task' " +
+                                "if 'task' == 'data' it must have also have 'source' ");
+            if (ret[i].lidclosed == true)
+                throw new Error("Observation must not have 'lidclosed'== true " +
+                                "if 'task' == 'data' ");
+            break;
+
+        case 'STARTUP':
+            if (ret[i].source != undefined)
+                console.out("warning. Observation with task='startup' also has source defined");
+            break;
+
+        case 'SHUTDOWN':
+            if (ret[i].source != undefined)
+                console.out("warning. Observation with task='shutdown' also has source defined");
+            break;
+
+        case 'RATESCAN':
+            if (ret[i].source == undefined && (isNaN(ret[i].ra) || isNaN(ret[i].dec)))
+                throw new Error("Observation must have either 'source' or 'ra' & 'dec' " +
+                                "if 'task' == 'ratescan'");
+            if (ret[i].lidclosed == true)
+                throw new Error("Observation must not have 'lidclosed'== true " +
+                                "if 'task' == 'ratescan' ");
+            break;
+
+        case 'RATESCAN2':
+            if ((ret[i].lidclosed != true) && ret[i].source == undefined && (isNaN(ret[i].ra) || isNaN(ret[i].dec)))
+                throw new Error("Observation must have either 'source' or 'ra' & 'dec' " +
+                                "if 'task' == 'ratescan2' and lidclosed==false or not given");
+            if (ret[i].lidclosed == true && (isNaN(ret[i].az) || isNaN(ret[i].az)))
+                throw new Error("Observation must have 'zd' & 'az' " +
+                                "if 'task' == 'ratescan2' and option 'lidclosed'=='true'");
+            break;
+
+        case 'CUSTOM':
+
+            if (isNaN(ret[i].az) || isNaN(ret[i].az) || isNaN(ret[i].time) || isNaN(ret[i].threshold))
+                throw new Error("Observation must have 'zd' & 'az', 'time' and 'threshold' " +
+                                "if 'task' == 'custom' ");
+            break;
+
+        case 'SINGLEPE':
+        case 'OVTEST':
+        case 'DRSCALIB':
+        case 'IDLE':
+        case 'SLEEP':
+            break;
+
+        default:
+            throw new Error("The observation type "+ret[i].task+" is unknown.");
+        }
+    }
+
+    return ret;
+}
Index: branches/testFACT++branch/scripts/Startup.js
===================================================================
--- branches/testFACT++branch/scripts/Startup.js	(revision 18277)
+++ branches/testFACT++branch/scripts/Startup.js	(revision 18277)
@@ -0,0 +1,332 @@
+'use strict';
+
+// To de done:
+//  - CheckLID status (should be open or closed)
+//  - Is it necessary to switch the bias-voltage off?
+//  - Get reasonable timeouts for all steps (wait, get, run)
+//  - Improve order to accelerate execution
+//
+// =================================================================
+
+/*
+var table =
+[
+ [ "AGILENT_CONTROL" ],
+ [ "BIAS_CONTROL"    ],
+ [ "CHAT"            ],
+ [ "DATA_LOGGER"     ],
+ [ "DRIVE_CONTROL"   ],
+ [ "FEEDBACK"        ],
+ [ "FAD_CONTROL"     ],
+ [ "FSC_CONTROL"     ],
+ [ "FTM_CONTROL"     ],
+ [ "LID_CONTROL"     ],
+ [ "MAGIC_WEATHER"   ],
+ [ "MCP"             ],
+ [ "PWR_CONTROL"     ],
+ [ "RATE_CONTROL"    ],
+ [ "RATE_SCAN"       ],
+ [ "SMART_FACT"      ],
+ [ "TIME_CHECK"      ],
+ [ "TNG_WEATHER"     ],
+];
+
+if (dim.state("DRIVE_CONTROL").name=="Locked")
+{
+    throw new Error("Drivectrl still locked... needs UNLOCK first.");
+    //while (!dim.send("DRIVE_CONTROL"))
+    //    v8.sleep();
+    //dim.send("DRIVE_CONTROL/UNLOCK");
+    //dim.wait("DRIVE_CONTROL", "Armed", 1000);
+}
+
+*/
+
+console.out("");
+dim.alarm();
+
+var loop;
+include("scripts/Handler.js");
+include("scripts/CheckStates.js");
+
+// -----------------------------------------------------------------
+// Make sure camera electronics is switched on and has power
+// -----------------------------------------------------------------
+
+include("scripts/handleAgilentPowerOn24V.js");
+include("scripts/handleAgilentPowerOn50V.js");
+include("scripts/handleAgilentPowerOn80V.js");
+include("scripts/handlePwrCameraOn.js");
+
+checkSend(["AGILENT_CONTROL_24V","AGILENT_CONTROL_50V","AGILENT_CONTROL_80V","PWR_CONTROL"]);
+
+loop = new Handler("PowerOn");
+//loop.add(handleAgilentPowerOn24V);
+//loop.add(handleAgilentPowerOn50V);
+//loop.add(handleAgilentPowerOn80V);
+loop.add(handlePwrCameraOn);
+loop.run();
+console.out("");
+
+// If power was switched on: wait for a few seconds
+
+// -----------------------------------------------------------------
+// Now take care that the bias control, the ftm and the fsc are
+// properly connected and are in a reasonable state (e.g. the
+// trigger is switched off)
+// -----------------------------------------------------------------
+
+include("scripts/handleBiasVoltageOff.js");
+include("scripts/handleFtmIdle.js");
+include("scripts/handleFscConnected.js");
+include("scripts/handleFeedbackConnected.js");
+include("scripts/handleRatectrlConnected.js");
+include("scripts/handleLidClosed.js");
+include("scripts/handleFadConnected.js");
+
+checkSend(["BIAS_CONTROL","FAD_CONTROL","FTM_CONTROL", "FSC_CONTROL", "FEEDBACK", "RATE_CONTROL", "MCP"]);
+
+dim.send("MCP/RESET");
+
+loop = new Handler("SystemSetup");
+loop.add(handleBiasVoltageOff);
+loop.add(handleFtmIdle);
+loop.add(handleFscConnected);
+loop.add(handleFadConnected);
+loop.add(handleFeedbackConnected); // Feedback needs FAD to be Connected
+loop.add(handleRatectrlConnected);
+loop.add(handleLidClosed);
+loop.run();
+
+console.out("biasctrl:    "+dim.state("BIAS_CONTROL").name);
+console.out("ftmctrl:     "+dim.state("FTM_CONTROL").name);
+console.out("fscctrl:     "+dim.state("FSC_CONTROL").name);
+console.out("feedback:    "+dim.state("FEEDBACK").name);
+console.out("ratecontrol: "+dim.state("RATE_CONTROL").name);
+console.out("fadctrl:     "+dim.state("FAD_CONTROL").name);
+console.out("mcp:         "+dim.state("MCP").name);
+console.out("");
+
+console.out("Enable all FTU");
+dim.send("FTM_CONTROL/ENABLE_FTU", -1, true);
+
+// -----------------------------------------------------------------
+// Now we check the FTU connection
+// -----------------------------------------------------------------
+
+/*
+include("scripts/handleFtuCheck.js");
+
+loop = new Handler("FtuCheck");
+loop.ftuList = new Subscription("FTM_CONTROL/FTU_LIST");
+loop.add(handleFtuCheck);
+loop.run();
+loop.ftuList.close();
+
+dim.log("All FTUs are enabled and without error.");
+*/
+
+console.out("Checking FTU: start");
+include("scripts/CheckFTU.js");
+console.out("Checking FTU: done");
+console.out("");
+
+// -----------------------------------------------------------------
+// Now we check the clock conditioner
+// -----------------------------------------------------------------
+
+var sub_counter = new Subscription("FTM_CONTROL/COUNTER");
+var counter = sub_counter.get(3000, false).counter;
+dim.send("FTM_CONTROL/REQUEST_STATIC_DATA");
+v8.timeout(3000, function() { if (sub_counter.get(0, false).counter>counter) return true; });
+if (sub_counter.get(0, false).qos&0x100==0)
+    throw new Error("Clock conditioner not locked.");
+sub_counter.close();
+
+// -----------------------------------------------------------------
+// Now we can safely try to connect the FAD boards.
+// -----------------------------------------------------------------
+/*
+ include("scripts/handleFadConnected.js");
+
+// If FADs already connected
+
+checkSend(["FAD_CONTROL"]);
+
+loop = new Handler("ConnectFad");
+loop.add(handleFadConnected);
+loop.run();
+
+var failed = false;
+dim.onchange["FAD_CONTROL"] = function(arg)
+{
+    if (this.rc && arg.name!="Connected")
+        failed = true;
+}
+
+console.out("FADs connected.");
+console.out("");
+
+console.out(dim.state("FAD_CONTROL").name);
+console.out(dim.state("MCP").name);
+*/
+
+// ================================================================
+// Underflow check
+// ================================================================
+// Is it necessary to check for the so called 'underflow-problem'?
+// (This is necessary after each power cycle)
+// ----------------------------------------------------------------
+
+include('scripts/CheckUnderflow.js');
+
+// Now it is time to check the connection of the FADs
+// it might hav thrown an exception already anyway
+
+
+// ================================================================
+// Power on drive system if power is off (do it hre to make sure not
+// everything is switchd on at the same time)
+// ================================================================
+
+//console.out("PWR: "+(dim.state("PWR_CONTROL").index&16));
+
+if ((dim.state("PWR_CONTROL").index&16)==0)
+{
+    console.out("Drive cabinet not powered... Switching on.");
+    dim.send("PWR_CONTROL/TOGGLE_DRIVE");
+    v8.timeout(5000, function() { if (dim.state("PWR_CONTROL").index&16) return true; });
+}
+
+include("scripts/handleDriveArmed.js");
+
+checkSend(["DRIVE_CONTROL"]);
+
+loop = new Handler("ArmDrive");
+loop.add(handleDriveArmed);
+loop.run();
+
+
+// ================================================================
+// Bias crate calibration
+// ================================================================
+// Bias crate calibration if necessary (it is aftr 4pm (local tome)
+// and the last calibration was more than eight hours ago.
+// -----------------------------------------------------------------
+
+// At this point we know that:
+//  1) The lid is closed
+//  2) The feedback is stopped
+//  3) The voltage is off
+function makeCurrentCalibration()
+{
+    dim.send("BIAS_CONTROL/SET_ZERO_VOLTAGE");
+    dim.wait("BIAS_CONTROL", "VoltageOff", 30000); // waS: 15000
+
+    var now = new Date();
+    dim.send("FEEDBACK/CALIBRATE");
+
+    console.out("Wait for calibration to start");
+    dim.wait("FEEDBACK", "Calibrating", 5000);
+
+    console.out("Wait for calibration to end");
+    dim.wait("FEEDBACK", "Calibrated", 90000);
+
+    console.out("Calibration finished ["+(new Date()-now)+"ms]");
+
+    console.out("Wait for voltage to be off");
+    dim.wait("BIAS_CONTROL", "VoltageOff", 30000); // was: 15000
+}
+
+// Check age of calibration
+var service_calibration = new Subscription("FEEDBACK/CALIBRATION");
+
+var data_calibration = service_calibration.get(3000, false);
+
+var age = data_calibration.time;
+var now = new Date();
+
+var diff = (now-age)/3600000;
+
+var fb_state = dim.state("FEEDBACK").index;
+
+// !data_calibration.data: FEEDBACK might just be freshly
+// started and will not yet serve this service.
+if (fb_state<5 || (diff>8 && now.getHours()>16))
+{
+    if (fb_state<5)
+        console.out("No BIAS crate calibration available: New calibration needed.");
+    else
+        console.out("Last BIAS crate calibration taken at "+age.toUTCString()+": New calibration needed.");
+
+    makeCurrentCalibration();
+}
+
+service_calibration.close();
+
+// ================================================================
+// Setup GPS control and wait for the satellites to be locked
+// ================================================================
+
+checkSend(["GPS_CONTROL"]);
+
+if (dim.state("GPS_CONTROL").name=="Disconnected")
+    dim.send("GPS_CONTROL/RECONNECT");
+
+// Wait for being connectes
+v8.timeout(5000, function() { if (dim.state("GPS_CONTROL").name!="Disconnected") return true; });
+
+// Wait for status available
+v8.timeout(5000, function() { if (dim.state("GPS_CONTROL").name!="Connected") return true; });
+
+if (dim.state("GPS_CONTROL").name=="Disabled")
+    dim.send("GPS_CONTROL/ENABLE");
+
+// Wait for gps to be enabled and locked
+dim.wait("GPS_CONTROL", "Locked", 15000);
+
+// ================================================================
+// Crosscheck all states
+// ================================================================
+
+// FIXME: Check if there is a startup scheduled, if not do not force
+// drive to be switched on
+
+var table =
+[
+ [ "TNG_WEATHER"   ],
+ [ "MAGIC_WEATHER" ],
+ [ "CHAT"          ],
+ [ "SMART_FACT"    ],
+ [ "TEMPERATURE"   ],
+ [ "EVENT_SERVER",        [ "Running", "Standby" ] ],
+ [ "DATA_LOGGER",         [ "NightlyFileOpen", "WaitForRun", "Logging" ] ],
+ [ "FSC_CONTROL",         [ "Connected"                       ] ],
+ [ "MCP",                 [ "Idle"                            ] ],
+ [ "TIME_CHECK",          [ "Valid"                           ] ],
+ [ "PWR_CONTROL",         [ "SystemOn"                        ] ],
+ [ "AGILENT_CONTROL_24V", [ "VoltageOn"                       ] ],
+ [ "AGILENT_CONTROL_50V", [ "VoltageOn"                       ] ],
+ [ "AGILENT_CONTROL_80V", [ "VoltageOn"                       ] ],
+ [ "BIAS_CONTROL",        [ "VoltageOff"                      ] ],
+ [ "FEEDBACK",            [ "Calibrated"                      ] ],
+ [ "RATE_SCAN",           [ "Connected"                       ] ],
+ [ "RATE_CONTROL",        [ "Connected"                       ] ],
+ [ "DRIVE_CONTROL",       [ "Armed", "Tracking", "OnTrack", "Locked" ] ],
+ [ "LID_CONTROL",         [ "Open", "Closed"                  ] ],
+ [ "FTM_CONTROL",         [ "Valid", "TriggerOn"              ] ],
+ [ "FAD_CONTROL",         [ "Connected", "WritingData"        ] ],
+ [ "GPS_CONTROL",         [ "Locked" ] ],
+ [ "SQM_CONTROL",         [ "Valid" ] ],
+ [ "PFMINI_CONTROL",      [ "Receiving" ] ],
+];
+
+
+
+if (!checkStates(table))
+{
+    throw new Error("Something unexpected has happened. Although the startup-"+
+                    "procedure has finished, not all servers are in the state "+
+                    "in which they ought to be. Please, try to find out what "+
+                    "happened...");
+}
Index: branches/testFACT++branch/scripts/closed_lid_ratescan.js
===================================================================
--- branches/testFACT++branch/scripts/closed_lid_ratescan.js	(revision 18277)
+++ branches/testFACT++branch/scripts/closed_lid_ratescan.js	(revision 18277)
@@ -0,0 +1,143 @@
+voltageOff = function()
+{
+    var state = dim.state("BIAS_CONTROL").name;
+
+    if (state=="Disconnected")
+    {
+        console.out("  Voltage off: bias crate disconnected!");
+        return;
+    }
+
+    // check of feedback has to be switched on
+    var isOn = state=="VoltageOn" || state=="Ramping";
+    if (isOn)
+    {
+        dim.log("Switching voltage off.");
+
+        if (dim.state("FTM_CONTROL").name=="TriggerOn")
+        {
+            dim.send("FTM_CONTROL/STOP_TRIGGER");
+            dim.wait("FTM_CONTROL", "Valid", 3000);
+        }
+
+        // Supress the possibility that the bias control is
+        // ramping and will reject the command to switch the
+        // voltage off
+        //dim.send("FEEDBACK/STOP");
+        //dim.wait("FEEDBACK", "Calibrated", 3000);
+
+        // Make sure we are not in Ramping anymore
+        //dim.wait("BIAS_CONTROL", "VoltageOn", 3000);
+
+        // Switch voltage off
+        dim.send("BIAS_CONTROL/SET_ZERO_VOLTAGE");
+    }
+
+    dim.wait("BIAS_CONTROL", "VoltageOff", 60000); // FIXME: 30000?
+    dim.wait("FEEDBACK",     "Calibrated",  3000);
+
+    // FEEDBACK stays in CurrentCtrl when Voltage is off but output enabled
+    // dim.wait("FEEDBACK", "CurrentCtrlIdle", 1000);
+
+    if (isOn)
+        dim.log("Voltage off.");
+}
+
+waitForVoltageOn = function()
+{
+    // Avoid output if condition is already fulfilled
+    dim.log("Waiting for voltage to be stable.");
+
+    function func()
+    {
+        if (this.ok==true)
+            return true;
+    }
+
+    var now = new Date();
+
+    this.last = undefined;
+    this.ok = false;
+    v8.timeout(4*60000, func, this); // FIMXE: Remove 4!
+    this.ok = undefined;
+
+    dim.log("Voltage On(?)");
+
+    //if (irq)
+        //dim.log("Waiting for stable voltage interrupted.");
+    //else
+        //dim.log("Voltage stable within limits");
+}
+
+
+voltageOn = function(ov)
+{
+    if (isNaN(ov))
+        ov = 1.1;
+
+    if (this.ov!=ov && dim.state("FEEDBACK").name=="InProgress") // FIXME: Warning, OnStandby, Critical if (ov<this.ov)
+    {
+        dim.log("Stoping feedback.");
+        if (dim.state("FTM_CONTROL").name=="TriggerOn")
+        {
+            dim.send("FTM_CONTROL/STOP_TRIGGER");
+            dim.wait("FTM_CONTROL", "Valid", 3000);
+        }
+
+        dim.send("FEEDBACK/STOP");
+        dim.wait("FEEDBACK", "Calibrated", 3000);
+
+        // Make sure we are not in Ramping anymore
+        dim.wait("BIAS_CONTROL", "VoltageOn", 3000);
+    }
+
+    var isOff = dim.state("FEEDBACK").name=="Calibrated";
+    if (isOff)
+    {
+        dim.log("Switching voltage to Uov="+ov+"V.");
+
+        dim.send("FEEDBACK/START", ov);
+
+        // FIXME: We could miss "InProgress" if it immediately changes to "Warning"
+        //        Maybe a dim.timeout state>8 ?
+        dim.wait("FEEDBACK", "InProgress", 45000);
+
+        this.ov = ov;
+    }
+
+    // Wait until voltage on
+    dim.wait("BIAS_CONTROL", "VoltageOn", 60000); // FIXME: 30000?
+}
+
+ dim.log("STARTING SCRIPT closed_lid_ratescan");
+
+// dim.log("Sending Voltage On");
+// voltageOn();
+ v8.sleep(10000);
+
+     var tm = new Date();
+
+     dim.log("Starting ratescan.");
+
+     // Start rate scan
+     //dim.send("RATE_SCAN/START_THRESHOLD_SCAN", 200, 900, 20);
+     dim.send("RATE_SCAN/START_THRESHOLD_SCAN", 100, 900, 10);
+
+      // PAUSE
+     dim.log("PAUSE 10s");
+     v8.sleep(10000);
+     dim.log("Start Ratescan");
+
+     // Lets wait if the ratescan really starts... this might take a few
+     dim.wait("RATE_SCAN", "InProgress", 10000);
+     //dim.wait("RATE_SCAN", "Connected", 2700000);
+     dim.wait("RATE_SCAN", "Connected", 3500000);
+
+     dim.log("Ratescan done");
+
+
+// voltageOff();
+
+ dim.log("Task finished [RATESCAN]");
+ console.out("");
+
Index: branches/testFACT++branch/scripts/crateReset.js
===================================================================
--- branches/testFACT++branch/scripts/crateReset.js	(revision 18277)
+++ branches/testFACT++branch/scripts/crateReset.js	(revision 18277)
@@ -0,0 +1,159 @@
+'use strict';
+
+// ==========================================================================
+// Reset Crate
+// ==========================================================================
+
+// call it with: .js doCrateReset.js crate0=true crate3=true
+//           or: DIM_CONTROL/START doCrateReset.js crate0=true crate3=true
+
+// -------------------------------------------------------------------------
+
+include('scripts/CheckStates.js');
+
+function crateReset(crate)
+{
+    var msg = "Starting crate reset:";
+
+    var cnt = 0;
+    for (var i=0; i<4; i++)
+        if (crate[i])
+        {
+            cnt++;
+            msg += " "+i;
+        }
+
+    if (cnt==0)
+    {
+        console.out("No crate to reset.");
+        return;
+    }
+
+    dim.log(msg);
+
+    console.out("Checking availability of servers...");
+
+    var table =
+        [
+         [ "MCP" ],
+         [ "FTM_CONTROL" ],
+         [ "FAD_CONTROL" ],
+        ];
+    if (!checkStates(table, 3000))
+        throw new Error("Either MCP, FTM_CONTROL or FAD_CONTROL not online.");
+
+    // No data taking should be in progress
+    // Trigger must be switched off
+    checkSend(["MCP", "FAD_CONTROL", "FTM_CONTROL" ]);
+
+
+    var mcp = dim.state("MCP");
+    if (mcp.name=="TriggerOn" || mcp.state=="TakingData")
+        dim.send("MCP/STOP");
+    if (mcp.name.substr(0,7)=="kConfig")
+        dim.send("MCP/RESET");
+    if (dim.state("FTM_CONTROL").name=="TriggerOn")
+        dim.send("FTM_CONTROL/STOP_TRIGGER");
+    if (dim.state("FTM_CONTROL").name.indexOf("Config")==0)
+        dim.send("FTM_CONTROL/RESET_CONFIGURE");
+
+    console.out("Checking status of servers...");
+
+    var table =
+        [
+         [ "MCP", [ "Idle", "Connected" ]],
+         [ "FTM_CONTROL", [ "Valid" ] ],
+         [ "FAD_CONTROL", [ "Disengaged", "Disconnected", "Connecting", "Connected" ] ],
+        ];
+    if (!checkStates(table, 3000, true))
+        throw new Error("Either MCP, FTM_CONTROL or FAD_CONTROL not in a state in which it ought to be.");
+
+    // FTUs must be switched off
+
+    console.out("Disable FTUs...");
+
+    //checkSend(["FTM_CONTROL"]);
+    dim.send("FTM_CONTROL/ENABLE_FTU", -1, false);
+    v8.sleep(1000);
+
+    // Boards in the crates must be disconnected
+
+    //checkSend(["FAD_CONTROL"]);
+
+    dim.log("Disconnecting crates.");
+
+    if (dim.state("FAD_CONTROL").name=="Connecting" || dim.state("FAD_CONTROL").name=="Connected")
+        for (var i=0; i<10; i++)
+        {
+            for (var j=0; j<4; j++)
+                if (crate[j])
+                {
+                    console.out("Sending DISCONNECT "+(j*10+i));
+                    dim.send("FAD_CONTROL/DISCONNECT", j*10+i);
+                }
+        }
+
+    v8.sleep(2000);
+    if (!checkStates([[ "FAD_CONTROL", [ "Disengaged", "Disconnected", "Connected" ] ]]))
+        throw new Error("FAD_CONTROL neither Disengaged, Disconnected not Connected.");
+
+
+    // Reset crates
+
+    dim.log("Sending reset.");
+
+    if (cnt==4)
+        dim.send("FTM_CONTROL/RESET_CAMERA");
+    else
+    {
+        for (var i=0; i<4; i++)
+            if (crate[i])
+            {
+                console.out("Sending RESET_CRATE "+i);
+                dim.send("FTM_CONTROL/RESET_CRATE", i);
+            }
+    }
+
+    // We have to wait a bit
+
+    v8.sleep(3200);
+
+    // Reconnect all boards
+
+    dim.log("Waiting for connection.");
+
+    if (dim.state("FAD_CONTROL").name=="Disengaged")
+    {
+        dim.send("Waiting 38s for crates to finish reset.");
+        v8.sleep(38000);
+        dim.send("FAD_CONTROL", "START");
+    }
+    else
+        for (var i=0; i<10; i++)
+        {
+            v8.sleep(3200);
+            for (var j=0; j<4; j++)
+                if (crate[j])
+                {
+                    console.out("Sending CONNECT "+(j*10+i));
+                    dim.send("FAD_CONTROL/CONNECT", j*10+i);
+                }
+        }
+
+
+    // Reconnect all FTUs
+
+    console.out("Enable FTUs...");
+
+    v8.sleep(1000);
+    dim.send("FTM_CONTROL/ENABLE_FTU", -1, true);
+    v8.sleep(3000);
+    dim.send("FTM_CONTROL/PING");
+    v8.sleep(1000);
+
+    dim.wait("FAD_CONTROL", "Connected", 3000);
+
+    // Done
+
+    dim.log("Crate reset finished.");
+}
Index: branches/testFACT++branch/scripts/doCrateReset.js
===================================================================
--- branches/testFACT++branch/scripts/doCrateReset.js	(revision 18277)
+++ branches/testFACT++branch/scripts/doCrateReset.js	(revision 18277)
@@ -0,0 +1,24 @@
+'use strict';
+
+// ==========================================================================
+// Reset Crate
+// ==========================================================================
+
+// call it with: .js doCrateReset.js crate0=true crate3=true
+//           or: DIM_CONTROL/START doCrateReset.js crate0=true crate3=true
+
+// -------------------------------------------------------------------------
+
+include('scripts/CheckStates.js');
+
+var crates =
+[
+     $['camera']=='true' || $['crate0']=='true',
+     $['camera']=='true' || $['crate1']=='true',
+     $['camera']=='true' || $['crate2']=='true',
+     $['camera']=='true' || $['crate3']=='true'
+];
+
+include('scripts/crateReset.js');
+
+crateReset(crates);
Index: branches/testFACT++branch/scripts/doDrivePark.js
===================================================================
--- branches/testFACT++branch/scripts/doDrivePark.js	(revision 18277)
+++ branches/testFACT++branch/scripts/doDrivePark.js	(revision 18277)
@@ -0,0 +1,6 @@
+console.out("Sending drive park...");
+
+include("scripts/CheckStates.js");
+
+checkSend(["DRIVE_CONTROL"]);
+dim.send("DRIVE_CONTROL/PARK");
Index: branches/testFACT++branch/scripts/doDriveStop.js
===================================================================
--- branches/testFACT++branch/scripts/doDriveStop.js	(revision 18277)
+++ branches/testFACT++branch/scripts/doDriveStop.js	(revision 18277)
@@ -0,0 +1,6 @@
+console.out("Sending drive stop.");
+
+include("scripts/CheckStates.js");
+
+checkSend(["DRIVE_CONTROL"]);
+dim.send("DRIVE_CONTROL/STOP");
Index: branches/testFACT++branch/scripts/doDriveToggle.js
===================================================================
--- branches/testFACT++branch/scripts/doDriveToggle.js	(revision 18277)
+++ branches/testFACT++branch/scripts/doDriveToggle.js	(revision 18277)
@@ -0,0 +1,6 @@
+console.out("Sending troggle drive.");
+
+include("scripts/CheckStates.js");
+
+checkSend(["PWR_CONTROL"]);
+dim.send("PWR_CONTROL/TOGGLE_DRIVE");
Index: branches/testFACT++branch/scripts/doDriveUnlock.js
===================================================================
--- branches/testFACT++branch/scripts/doDriveUnlock.js	(revision 18277)
+++ branches/testFACT++branch/scripts/doDriveUnlock.js	(revision 18277)
@@ -0,0 +1,6 @@
+console.out("Sending drive unlock...");
+
+include("scripts/CheckStates.js");
+
+checkSend(["DRIVE_CONTROL"]);
+dim.send("DRIVE_CONTROL/UNLOCK");
Index: branches/testFACT++branch/scripts/doMoveTelescope.js
===================================================================
--- branches/testFACT++branch/scripts/doMoveTelescope.js	(revision 18277)
+++ branches/testFACT++branch/scripts/doMoveTelescope.js	(revision 18277)
@@ -0,0 +1,15 @@
+var zd = $['zd'];
+var az = $['az'];
+
+if (isNaN(zd) || zd<-100 || zd>100)
+    throw new Error("Invalid zenith distance!");
+
+if (isNaN(az) || az<-290 || az>80)
+    throw new Error("Invalid azimuth!");
+
+console.out("Moving telescope to zd="+zd+"deg, az="+az+"deg");
+
+include("scripts/CheckStates.js");
+
+checkSend(["DRIVE_CONTROL"]);
+dim.send("DRIVE_CONTROL/MOVE_TO", zd, az);
Index: branches/testFACT++branch/scripts/doTrackPosition.js
===================================================================
--- branches/testFACT++branch/scripts/doTrackPosition.js	(revision 18277)
+++ branches/testFACT++branch/scripts/doTrackPosition.js	(revision 18277)
@@ -0,0 +1,9 @@
+var ra = $['ra'];
+var dec = $['dec'];
+
+console.out("Start tracking at ra="+ra+"h, dec="+dec+"deg");
+
+include("scripts/CheckStates.js");
+
+checkSend(["DRIVE_CONTROL"]);
+dim.send("DRIVE_CONTROL/TRACK", ra, dec);
Index: branches/testFACT++branch/scripts/doTrackSource.js
===================================================================
--- branches/testFACT++branch/scripts/doTrackSource.js	(revision 18277)
+++ branches/testFACT++branch/scripts/doTrackSource.js	(revision 18277)
@@ -0,0 +1,16 @@
+var offset = parseFloat($['offset']);
+var angle  = parseFloat($['wobble']);
+var source = $['source'];
+
+if (isNaN(offset) || offset<0)
+    throw new Error("Invalid wobble offset!");
+
+if (isNaN(angle) || angle<0 || angle>360)
+    throw new Error("Invalid wobble angle!");
+
+console.out("Start tracking source "+source+" at wobble angle "+angle+"deg and offset "+offset+"deg");
+
+include("scripts/CheckStates.js");
+
+checkSend(["DRIVE_CONTROL"]);
+dim.send("DRIVE_CONTROL/TRACK_SOURCE", offset, angle, source);
Index: branches/testFACT++branch/scripts/doTrackWobble.js
===================================================================
--- branches/testFACT++branch/scripts/doTrackWobble.js	(revision 18277)
+++ branches/testFACT++branch/scripts/doTrackWobble.js	(revision 18277)
@@ -0,0 +1,9 @@
+var wobble = $['wobble']=='true' ? 2 : 1;
+var source = $['source'];
+
+console.out("Start tracking wobble position "+wobble+" of "+source);
+
+include("scripts/CheckStates.js");
+
+checkSend(["DRIVE_CONTROL"]);
+dim.send("DRIVE_CONTROL/TRACK_WOBBLE", wobble, source);
Index: branches/testFACT++branch/scripts/doc/Database.js
===================================================================
--- branches/testFACT++branch/scripts/doc/Database.js	(revision 18277)
+++ branches/testFACT++branch/scripts/doc/Database.js	(revision 18277)
@@ -0,0 +1,97 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of Database connection object
+ */
+
+/**
+ * @class
+ *
+ * Returns a connection to a MySQL server or a specific database.
+ *
+ * For connection the MySQL++ library is used. MySQL++ throws exceptions
+ * in case of errors, e.g. connection timeout.<P>
+ *
+ * Note that although the object is created with 'new' and there
+ * is a 'delete' is JavaScript, it will not call any kind of
+ * destructor. To close a Subscription you have to explicitly call
+ * the close() member function. 'delete' in JavaScript is only
+ * to remove a property from an Object.
+ *
+ * @param {String} database
+ *    The databse argument is of this form (optional parts ar given in brackets):<br>
+ *    <tt>user:password@server.domain.com[:port]/database</tt>
+ *
+ * @throws
+ *    <li> If number or type of arguments is wrong
+ *    <li> If no connection could be opened, an exception with the reason is
+ *    thrown.
+ *
+ * @example
+ *    var db = new Database("thomas@sql.at-home.com/database");
+ */
+function Database()
+{
+    /**
+     * User connected to the database
+     * @constant
+     */
+    this.user = user;
+
+    /**
+     * Server which is connected
+     * @constant
+     */
+    this.server = server;
+
+    /**
+     * Database which is connected
+     * @constant
+     */
+    this.database = database;
+
+    /**
+     * Port connected (if no port was given 'undefined')
+     * @constant
+     */
+    this.port = port;
+
+    /**
+     * Returns the result of an sql query sent to the database.
+     *
+     * @param arguments
+     *    The arguments specify the query to be sent
+     *
+     * @throws
+     *    If no connection could be opened, an exception with the reason is
+     *    thrown.
+     *
+     * @returns
+     *    An array is returned. Each entry in the array corresponds to one
+     *    row of the table and is expressed an an associative array (object).
+     *    The names of the entries (columns) in each row are stored in
+     *    a property cols which is an array itself. For convenience,
+     *    table and query are stored in identically names properties.
+     *
+     * @example
+     *    var table = db.query("SELECT * FROM table WHERE value BETWEEN", 5, "AND 20");
+     *    for (var row=0; row&lt;table.length; row++)
+     *        for (var col in table.cols)
+     *            console.out("table["+row+"]['"+col+"']="+table[row][col]);
+     *
+     */
+    this.query = function() { /* [native code] */ }
+
+    /**
+     *
+     * Close the connection to the database.
+     *
+     * The connection is automaically closed at cript termination.
+     *
+     * @returns {Boolean}
+     *     If the connection was successfully closed, i.e. it
+     *     was still open, true is returned, false otherwise.
+     *
+     */
+    this.close = function() { /* [native code] */ }
+};
Index: branches/testFACT++branch/scripts/doc/Event.js
===================================================================
--- branches/testFACT++branch/scripts/doc/Event.js	(revision 18277)
+++ branches/testFACT++branch/scripts/doc/Event.js	(revision 18277)
@@ -0,0 +1,119 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of the Event object returned by Subscription.get()
+ */
+
+/**
+ * @class
+ *
+ * The object returned by Subscription.get(). It contains
+ * all data received with the event.
+ *
+ */
+function Event()
+{
+    /**
+     * The name of the Subscription this event belongs to.
+     *
+     * @type String
+     * @constant
+     */
+    this.name = name;
+
+    /**
+     * The format string corresponding to this event.
+     *
+     * @see <A HREF="dim.cern.ch">DIM</A> for more details
+     * @type String
+     * @constant
+     */
+    this.format = format;
+
+    /**
+     * The Quality-of-Service transmitted by this event.
+     *
+     * @type Integer
+     * @constant
+     */
+    this.qos = qos;
+
+    /**
+     * The size in bytes of the event received
+     *
+     * @type Integer
+     * @constant
+     */
+    this.size = size;
+
+    /**
+     * An counter of events received since the Subscription has
+     * been created. The first event received is 1. 0 corresponds
+     * to no event received yet.
+     *
+     * @type Integer
+     * @constant
+     */
+    this.counter = counter;
+
+    /**
+     * The time transmitted with this event, if transmitted. If nonw
+     * was transmitted, this might just be the time the event was
+     * received.
+     *
+     * @type Date
+     * @constant
+     */
+    this.time = time;
+
+    /**
+     * Array with the data received.
+     *
+     * The contents of the array are sorted in the order of the event format
+     * string. The contents of the array can be all kind of objects
+     * defined by the format string. If a format described several entries
+     * (e.g. I:5) and array will be added.<P>
+     *
+     * In the special case that the format string contains only a single
+     * format, e.g. "I", "F:5" or "C", data will not be an array,
+     * but contain the object data (or the array) directly.
+     *
+     * If valid data was received, but the size was zero, then
+     * null is returned as data
+     *
+     *    <li> data===undefined: no data received (no connection)
+     *    <li> data===null:      an event was received, but it was empty
+     *    <li> data.length>0:    an event was received and it contains data
+     *
+     * @type Array
+     * @constant
+     *
+     */
+    this.data = [ ];
+
+    /**
+     * Object with the data received.
+     *
+     * The object contains essentially the same information than the
+     * data memeber, but the received data are added as properties
+     * instead of enumerable lements. This allows to access
+     * the received data by names as specified by the SERVICE_DESC
+     * service.<P>
+     *
+     * If an empty event was received, but names are available,
+     * the object will be empty. Otherwise 'obj' will be undefined.
+     *
+     *     <li> obj===undefined: no names are available
+     *     <li> obj!==undefined, length==0: names are available, but no data (no connection)
+     *     <li> obj!==undefined, length>0: names are available, data has been received
+     *
+     * <P>
+     * Note that to get the number of properties (length) you have to call
+     * Object.keys(obj).length;
+     *
+     * @type Object
+     * @constant
+     *
+     */
+    this.obj = { };
+}
Index: branches/testFACT++branch/scripts/doc/Local.js
===================================================================
--- branches/testFACT++branch/scripts/doc/Local.js	(revision 18277)
+++ branches/testFACT++branch/scripts/doc/Local.js	(revision 18277)
@@ -0,0 +1,101 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of Local class built into dimctrl.
+ */
+
+/**
+ * @class
+ *
+ * A set of coordinates on the celestial sphere.
+ *
+ * The class stores a set of coordinates on the celestial, i.e. local,
+ * sky. If the data was the result of a coordinate transformation, the
+ * corresponding time is stored in addition. Functions to convert to sky
+ * coordinates and to measure distances on th sky are included.
+ *
+ * @param {Number} zenithDistance
+ *     Zenith angle in degree (Zenith=0deg)
+ *
+ * @param {Number} azimuth
+ *     Azimuth angle in degree (North=0deg, East=90deg)
+ *
+ * @example
+ *     var local = new Local(12, 45);
+ *     var sky   = local.toSky();
+ *
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ *
+ */
+function Local(zenithDistance, azimuth)
+{
+    /**
+     * Zenith distance in degree (Zenith=0deg)
+     *
+     * @constant
+     *
+     * @type Number
+     */
+    this.zd = zenithDistance;
+
+    /**
+     * Azimuth in degree (North=0deg, East=90deg)
+     *
+     * @constant
+     *
+     * @type Number
+     */
+    this.az = azimuth;
+
+    /**
+     * Time corresponding to ra and dec if they are the result of
+     * a conversion.
+     *
+     * @constant
+     * @default undefined
+     *
+     * @type Date
+     */
+    this.time = undefined;
+
+
+    /**
+     * Convert celestial coordinats to sky coordinates.
+     * As observatory location the FACT telescope is assumed.
+     * The conversion is done using libnova's ln_get_equ_from_hrz.
+     *
+     * @constant
+     *
+     * @param {Date} [time=new Date()]
+     *     Reference time for the conversion
+     *
+     * @returns {Sky}
+     *     A Sky object with the converted coordinates and
+     *     the corresponding time.
+     */
+    this.toSky = function() { /* [native code] */ }
+}
+
+/**
+ * Calculate the distance between two celestial sky positions.
+ *
+ * The distance between the two provided objects is calculated.
+ * The returned value is an absolute distance (angle) between
+ * the two positions.
+ *
+ * @constant
+ *
+ * @param {Local} local1
+ *     Celestial coordinates for one of the two objects for which
+ *     the distance on the sky should be calculated. In principle
+ *     every object with the properties 'zd' and 'az' can be provided.
+ *
+ * @param {Local} local2
+ *     Celestial coordinates for one of the two objects for which
+ *     the distance on the sky should be calculated. In principle
+ *     every object with the properties 'zd' and 'az' can be provided.
+ *
+ * @returns {Number}
+ *     Absolute distance between both positions on the sky in degrees.
+     */
+Local.dist = function() { /* [native code] */}
Index: branches/testFACT++branch/scripts/doc/Mail.js
===================================================================
--- branches/testFACT++branch/scripts/doc/Mail.js	(revision 18277)
+++ branches/testFACT++branch/scripts/doc/Mail.js	(revision 18277)
@@ -0,0 +1,115 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    A class which allows to send mails through the 'mail' program
+ */
+
+
+/**
+ * @class
+ *
+ * This class represents an interface to the program 'mail'.
+ *
+ * To send a mail, create an instance and fill the properties
+ * (see reference) with proper data.
+ *
+ * @example
+ *     var mail = new Mail("This is the subject");
+ *
+ *     // At least one recipient is mandatory
+ *     mail.recipients.push("max.mustermann@musterstadt.com");
+ *     // To add several recipients
+ *     mail.recipients.push("max.mustermann@musterstadt.com", "erika.mustermann@musterstadt.com");
+ *
+ *     // similar to the property recipient you can use the properties 'cc' and 'bcc'
+ *
+ *     // If you want to add attachments [optional]
+ *     mail.attachments.push("logfile.txt");
+ *     // or for several attachments
+ *     mail.attachments.push("logfile1.txt", "logfile2.txt");
+ *
+ *     // The text of the message is set in the property text...
+ *     // ...either as single string
+ *     mail.text.push("This is line1\nThis is line2");
+ *     mail.text.push("This is line1");
+ *     mail.text.push("This is line2");
+ *
+ *     // Send the message
+ *     mail.send();
+ *
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ *
+ */
+function Mail()
+{
+
+    /**
+     * Subject of the mail
+     *
+     * @type String
+     * @constant
+     */
+    this.subject = subject;
+
+    /**
+     * Recipient(s) of the mail. One recipient is mandatory.
+     *
+     * @type Array[String]
+     */
+    this.recipients = recipient;
+
+    /**
+     * Carbon copy [optional]. Adresses who should receive a copy of the
+     * mail. All entries in the array which are not a string are silently ignored.
+     *
+     * @type Array[String]
+     */
+    this.cc = undefined;
+
+    /**
+     * Blind carbon copy [optional]. Adresses who should receive a copy of the
+     * mail. All entries in the array which are not a string are silently ignored.
+     *
+     * @type Array[String]
+     */
+    this.bcc = undefined;
+
+    /**
+     * Attachments [optional]. File to be attached to the mail.
+     * All entries in the array which are not a string are silently ignored.
+     *
+     * @type Array[String]
+     */
+    this.attachments = undefined;
+
+    /**
+     * Message body. At least one line in the message is mandatory.
+     * Undefined or null entries in the array are silently ignored.
+     *
+     * @type Array[String]
+     */
+    this.text = text;
+
+    /**
+     * Send the message. This calles the 'mailx' program. For further
+     * details, e.g. on the return value, see the corresponding man page.
+     *
+     * @param {Boolean} [block=true]
+     *    This parameter specifies whether the pipe should be closed,
+     *    which means that a blocking wait is performed until the 'mail'
+     *    program returns, or the pipe will be closed automatically
+     *    in the background when the 'mail' program has finished.
+     *    Note, that if the calling program terminates, maybe this
+     *    call will never succeed.
+     *
+     * @returns {Integer}
+     *    The return code of the 'mail' program is returned (0
+     *    usually means success), undefined if block was set to false.
+     *
+     * @throws
+     *    An exception is thrown if any validity check for the
+     *    properties or the arguments fail.
+     *
+     */
+    this.send = function() { /* [native code] */ }
+}
Index: branches/testFACT++branch/scripts/doc/Moon.js
===================================================================
--- branches/testFACT++branch/scripts/doc/Moon.js	(revision 18277)
+++ branches/testFACT++branch/scripts/doc/Moon.js	(revision 18277)
@@ -0,0 +1,116 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of Moon class built into dimctrl.
+ */
+
+/**
+ * @class
+ *
+ * Calculates the moon's sky position at a given time.
+ *
+ * When instantiated, the class members are set to the sky position
+ * of the moon at the given time. The calculation is done using
+ * libnova's ln_get_lunar_equ_coords. A different time can be provided
+ * by the user. The sky coordinates are stored together with the time.
+ * A function is provided to convert the moon's position to celestial
+ * coordinates. A function to calculate the illuminated fraction of
+ * the moon's disk.
+ *
+ * @param {Date} [time=new Date()]
+ *    Reference time for the calculation of the moon's position.
+ *
+ * @example
+ *    var moon = new Moon();
+ *    var local = moon.toLocal();
+ *
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ */
+function Moon(time)
+{
+    /**
+     * Right ascension of the moon in hours.
+     *
+     * @type Number
+     * @constant
+     *
+     */
+    this.ra = 0;
+
+    /**
+     * Declination of the moon in degrees.
+     *
+     * @type Number
+     * @constant
+     *
+     */
+    this.dec = 0;
+
+    /**
+     * Time corresponding to the calculated sky coordinates of the moon.
+     *
+     * @type Date
+     * @constant
+     */
+    this.time = time;
+
+    /**
+     * Converts the moon's sky coordinates to celestial coordinates.
+     * As observatory location the FACT telescope is assumed. For the
+     * time, the time corresponding to the stored sky coordinates is used.
+     * The conversion is done using libnova's ln_get_hrz_from_equ.
+     *
+     * @returns {Local}
+     *     A Local object with the converted coordinates and
+     *     the corresponding time.
+     */
+    this.toLocal = function() { /* [native code] */  }
+}
+
+/**
+ * Calculates the illuminated fraction of the moon's disk.
+ *
+ * Calculates the illuminated fraction of the moon's disk for the
+ * provided time. If no time is provided, the current system time
+ * is used. The calculation is done using libnova's ln_get_lunar_disk.
+ *
+ * @param {Date} [time=new Date()]
+ *    Time for which the moon disk should be calculated. If no time is
+ *    given, the current time is used.
+ *
+ * @type Number
+ *
+ * @returns
+ *    The illuminated fraction of the moon's disk corresponding
+ *    to the time argument
+ *
+ */
+Moon.disk = function() { /* [native code] */ }
+
+/**
+ * Calculate moon rise, set and transit times.
+ *
+ * Calculates the moon rise and set time, above and below horizon,
+ * and the time of culmination (transit time) for the given time.
+ * The calculation is done using libnova's ln_get_lunar_rst and is
+ * always performed for the FACT site at La Palma.
+ *
+ * @param {Date} [time=new Date()]
+ *    Date for which the times should be calculated. Note that the date
+ *    is converted to UTC and the times are calculated such that the
+ *    Date (yy/mm/dd) is identical for all returned values.
+ *
+ * @type {Object}
+ *
+ * @returns
+ *    An object with the following properties is returned: time {Date}
+ *    the provided time; rise, transit, set {Date} times of rise, set and
+ *    transit; isUp {Boolean} whether the moon is above or below horizon
+ *    at the provided time. If the moon does not rise or set, the properties
+ *    rise, transit and set will be undefined.
+ *
+ * @example
+ *    var date = new Date("2012-10-25 16:30 GMT"); // Date in UTC
+ *    console.out(JSON.stringify(Moon.horizon(date));
+ */
+Moon.horizon = function() { /* [native code] */ }
Index: branches/testFACT++branch/scripts/doc/Sky.js
===================================================================
--- branches/testFACT++branch/scripts/doc/Sky.js	(revision 18277)
+++ branches/testFACT++branch/scripts/doc/Sky.js	(revision 18277)
@@ -0,0 +1,97 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of Sky class built into dimctrl.
+ */
+
+
+/**
+ * @class
+ *
+ * This class represents a set of sky coordinates.
+ *
+ * If the data was the result of a coordinate transformation, the
+ * corresponding time is stored in addition. A function to convert
+ * to local coordinates is included.
+ *
+ * @param {Number} rightAscension
+ *    Right ascension in hours
+ *
+ * @param {Number} declination
+ *    Declination in degree
+ *
+ * @example
+ *     var sky   = new Sky(12, 45);
+ *     var local = sky.toLocal();
+ *
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ *
+ */
+function Sky()
+{
+
+    /**
+     * Right ascension in hours
+     *
+     * @constant
+     * @type Number
+     */
+    this.ra = rightAscension
+
+    /**
+     * Declination in degrees
+     *
+     * @constant
+     * @type Number
+     */
+    this.dec = declination;
+
+    /**
+     * Time corresponding to ra and dec if they are the result of
+     * a conversion.
+     *
+     * @constant
+     * @type Date
+     */
+    this.time = undefined;
+
+    /**
+     * Convert sky coordinates to celestial coordinates.
+     * As observatory location the FACT telescope is assumed.
+     * The conversion is done using libnova's ln_get_hrz_from_equ.
+     *
+     * @param {Date} [time=new Date()]
+     *     Reference time for the converstion.
+     *
+     * @type Local
+     *
+     * @returns
+     *     A Local object with the converted coordinates and
+     *     the conversion time.
+     */
+    this.toLocal = function() { /* [native code] */  }
+}
+
+/**
+ * Calculate the distance between two sky positions.
+ *
+ * The distance between the two provided objects is calculated.
+ * The returned value is an absolute distance (angle) between
+ * the two positions.
+ *
+ * @constant
+ *
+ * @param {Sky} sky1
+ *     Celestial coordinates for one of the two objects for which
+ *     the distance on the sky should be calculated. In principle
+ *     every object with the properties 'ra' and 'dec' can be provided.
+ *
+ * @param {Sky} sky2
+ *     Celestial coordinates for one of the two objects for which
+ *     the distance on the sky should be calculated. In principle
+ *     every object with the properties 'ra' and 'dec' can be provided.
+ *
+ * @returns {Number}
+ *     Absolute distance between both positions on the sky in degrees.
+ */
+Sky.dist = function() { /* [native code] */}
Index: branches/testFACT++branch/scripts/doc/String.js
===================================================================
--- branches/testFACT++branch/scripts/doc/String.js	(revision 18277)
+++ branches/testFACT++branch/scripts/doc/String.js	(revision 18277)
@@ -0,0 +1,122 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of the extension of the String class
+ *    built into dimctrl.
+ */
+
+/**
+ * Format a string (similar to printf in C).
+ *
+ * This function replaces modifiers (very similar to printf) with
+ * a formated version of the argument. Since JavaScript does implicit
+ * format conversion already, this is actually a very powerful tool,
+ * because the type of th arguments to be formated is of no importance.
+ * Implicit conversion means that also arrays and objects can be given
+ * as arguments. A shortcut is available as $-extension of the native
+ * String class.<P>
+ *
+ * Note that this function is completely written in JavaScript. It
+ * can be found in InterpreterV8.cc.<P>
+ *
+ * The following modifiers are available (optional parts are put in
+ * brackets:<br>
+ *
+ * <li><dt><B>c:</B> <tt>%[[-][0]N]c</tt></dt>
+ * <dd>Extracts the first element from an array. In case of a String this
+ * is the first character.</dd><p>
+ *
+ * <li><dt><B>s:</B> <tt>%[[-][0]N]s</tt></dt>
+ * <dd>Converts the argument to a string using toString()</dd><p>
+ *
+ * <li><dt><B>f:</B> <tt>%[[-][0]N[.n]]f</tt></dt>
+ * <dd>Converts to a Number value with n internal decimal places</dd><p>
+ *
+ * <li><dt><B>p:</B> <tt>%[[-][0]N[.n]]p</tt></dt>
+ * <dd>Converts to a Number value with a precision of n decimal places</dd><P>
+ *
+ * <li><dt><b>e:</b> <tt>%[[-][0]N]e</tt></dt>
+ * <dd>Converts to an exponential with a precision of n decimal places</dd><p>
+ *
+ * <li><dt><b>x:</b> <tt>%[[-][0]N[#b]x</tt></dt>
+ * <dd>Converts to an integer value using the basis b for conversion
+ * (default is 16 for hexadecimal)</dd><p>
+ *
+ * <li><dt><b>d:</b> <tt>%[[-][0]N[.n][#b]]d</tt></dt>
+ * <dd>Converts from a value using the basis b for conversion (default
+ * is 10 for decimal). The integer can be rounded to the given precision n.
+ * </dd><p>
+ *
+ * The output string will have at least a length of N. If 0 is given,
+ * it is filled with 0's instead of white spaces. If prefixed by a minus
+ * the contents will be left aligned.
+ *
+ * @param {String} format
+ *     The format string defining how the given argument elements are
+ *     formated
+ *
+ * @param {Array} elements
+ *     An array with the elements to be formated
+ *
+ * @returns {String}
+ *     The formated string is returned.
+ *
+ * @see
+ *     String.$
+ *
+ * @example
+ *    var result;
+ *    result = String.form("%5d %3d", [ 5, "2" ]);
+ *    result = String.form("%5x", [ 12 ]);
+ *    result = String.form("%#16d", [ "b" ]);
+ *    result = String.form("%s", [ [ 1, 2, 3, ] ]);
+ *    result = String.form("%s", [ { a:1, b:2, c:3, } ]);
+ *    var abbrev = "%03d".$(42);
+ *
+ */
+String.form = function() { /* [native code] */ }
+
+
+/**
+ * An abbreviation for String.form.
+ *
+ * Converts all arguments provided by the user into an array
+ * which is passed to String.form. The contents of the String itself
+ * is passed as format string. This allows a very compact syntax to
+ * format any kind of object, array or number.
+ * For details see String.form.
+ *
+ * @param   arg       An argument to be formated.
+ * @param   [. . .]   An undefined number of additional optional arguments.
+ *
+ * @returns {String} see String.form
+ * @throws  see String.form
+ * @see     String.form
+ *
+ * @example
+ *    var result = "%5d = %12s".$(5, "five");
+ *
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ */
+String.prototype.$ = function() { /* [native code] */ };
+
+/**
+ * Like String match, but return the number counts how often
+ * the regular expression matches.
+ *
+ * @param {String} regex
+ *     The regular expression to search for, e.g., "s" (to count the s's) or
+ *     "As+A" (to count how often s's are surrounded by A's)
+ *
+ * @param {Boolean} [case=false]
+ *     Search is case insensitive if set to true.
+ *
+ * @returns {Interger}
+ *     The number of occurances of the regular expression
+ *
+ * @example
+ *    var result = "Thomas Bretz".count("[hme]"); // returns 3
+ *
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ */
+String.prototype.count = function() { /* [native code] */ };
Index: branches/testFACT++branch/scripts/doc/Subscription.js
===================================================================
--- branches/testFACT++branch/scripts/doc/Subscription.js	(revision 18277)
+++ branches/testFACT++branch/scripts/doc/Subscription.js	(revision 18277)
@@ -0,0 +1,156 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of a DIM service Subscription
+ */
+
+/**
+ * @class
+ *
+ * Subscription to a DIM service.
+ *
+ * This class represents the subscription to a DIM service. Received
+ * events are first copied to an even queue internally, to avoid
+ * any processing blocking the DIM thread (which could block the
+ * whole network as a result). Then the events are processed.
+ * If a callback is installed, the processing will take place in
+ * another JavaScript thread. Physically it will run synchronously
+ * with the other JavaScript threads. However, the processing blocks
+ * event processing. Consequetly, processing should on average be
+ * faster than the frequency with which events arrive to ensure they
+ * will not fill up the memory and possible reactions to there
+ * contents will happen within a reasonable time and not delayed
+ * too much.
+ *
+ * Each subscription must exist only once, therefore the function-call
+ * can be used to check for an open subscription.  
+ *
+ * @param {String} service
+ *    Name of the DIM service to which a subscription should be made.
+ *    Usully of the form SERVER/SUBSCRIPTION.
+ *
+ * @param {Function} [callback]
+ *    An optional function which is set as 'onchange' property.
+ *    This can avoid to loose th first event after the subscription
+ *    before the callback is set by the 'onchange' property (which
+ *    is very unlikely).
+ *
+ * @throws
+ *    <li>If number or type of arguments is wrong
+ *    <li>If an open subscription to the same service already exists.
+ *
+ * @example
+ *    var handle1 = Subscription("MAGIC_WEATHER/DATA");
+ *    if (!handle1)
+ *        handle1 = new Subscription("MAGIC_WEATHER/DATA");
+ *    var handle2 = new Subscription("TNG_WEATHER/DATA", function(evt) { console.out(JSON.stringify(evt)); });
+ *    ...
+ *    handle2.close();
+ *    handle1.close();
+ */
+function Subscription(service, callback)
+{
+    /**
+     *
+     * The name of the service subscribed to.
+     *
+     * @constant
+     * @type String
+     *
+     */
+    this.name = service;
+
+    /**
+     *
+     * Boolean value which is set to false if the Subscription was closed.
+     *
+     * @type Boolean
+     *
+     */
+    this.isOpen = false;
+
+    /**
+     *
+     * Callback in case of event reception.
+     *
+     * To install a callback in case a new event of this Subscription
+     * was received, set this property to a function. The argument
+     * provided to the function is identical with the object returned
+     * by Subscription.get(). For the code executed, the same rules apply
+     * than for a thread created with Thread.
+     *
+     * @type Function
+     *
+     * @example
+     *     handle.onchange = function(event) { console.out(JSON.stringify(event); };
+     *
+     */
+    this.onchange = callback;
+
+    /**
+     *
+     * Returns the last received event of this subscription.
+     *
+     * @param {Integer} [timeout=0]
+     *     A timeout in millisecond to wait for an event to arrive.
+     *     This timeout only applied if no event has been received yet
+     *     after a new Subscription has been created. If an event
+     *     is already available, the event is returned. If the timeout
+     *     is 'null', waiting will never timeout until an event was received.
+     *     If the timeout is less than zero, no exception will be thrown,
+     *     but 'undefined' returned in case of timeout. The corresponding
+     *     timeout is then Math.abs(timeout).
+     *
+     * @param {Boolean} [requireNamed=true]
+     *     Usually an event is only considered complete, if also the
+     *     corresponding decription is available distributed through
+     *     the service SERVER/SERVICE_DESC. If an event has no
+     *     description or access to the data by name is not important,
+     *     requireNamed can be set to false.
+     *
+     * @throws
+     *    <li> If number or type of arguments is wrong
+     *    <li> After a timeout, if the timeout value was greater or equal zero
+     *    <li> If conversion of the received data to an event object has failed
+     *
+     * @returns {Event}
+     *     A valid event is returned, undefined in the case waiting for an
+     *     event has timed out and exceptions are supressed by a negative
+     *     timeout.
+     *
+     * @example
+     *     var a = new Subscription("...service does not exist...");
+     *     a.get( 3000, true);  // throws an exception
+     *     a.get( 3000, false); // throws and exception
+     *     a.get(-3000, true);  // returns undefined
+     *     a.get(-3000, false); // returns undefined
+     *
+     *     var a = new Subscription("...service with valid description but no valid data yet...");
+     *     a.get( 3000, true);  // throws an exception
+     *     a.get( 3000, false); // returns Event.data==null, Event.obj valid but empty
+     *     a.get(-3000, true);  // return undefined
+     *     a.get(-3000, false); // returns Event.data==null, Event.obj valid but emoty
+     *
+     *     // Assuming that now valid description is available but data
+     *     var a = new Subscription("...service without valid description but valid data...");
+     *     a.get( 3000, true);  // throws an exception
+     *     a.get( 3000, false); // returns Event.data valid, Event.obj==undefined
+     *     a.get(-3000, true);  // returns undefined
+     *     a.get(-3000, false); // returns Event.data valid, Event.obj==undefined
+     *
+     */
+    this.get = function() { /* [native code] */ }
+
+    /**
+     *
+     * Unsubscribe from an existing subscription. Note that all open
+     * subscription produce network traffic and should be omitted if
+     * not needed.
+     *
+     * @returns {Boolean}
+     *     true if the subscription was still open, false if it was
+     *     already closed.
+     *
+     */
+    this.close = function() { /* [native code] */ }
+}
Index: branches/testFACT++branch/scripts/doc/Sun.js
===================================================================
--- branches/testFACT++branch/scripts/doc/Sun.js	(revision 18277)
+++ branches/testFACT++branch/scripts/doc/Sun.js	(revision 18277)
@@ -0,0 +1,58 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of Sun class built into dimctrl.
+ */
+
+/**
+ * @namespace
+ *
+ * Namespace for functions returning astrometry information about the Sun.
+ *
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ */
+var Sun = { };
+
+/**
+ * Calculate sun rise, set and transit times.
+ *
+ * Calculates the sun's rise and set time, above and below horizon,
+ * and the time of culmination (transit time) for the given time.
+ * As a second argument the angle abov or below horizon of interest
+ * can be provided. The calculation is done using libnova's
+ * ln_get_solar_rst_horizon and is always performed for the FACT
+ * site at La Palma.
+ *
+ * @param {Number,String} [angle=null]
+ *    Angle above (positive) or below (negative) horizon. The
+ *    angle can be given as Number in degree or as string referring to
+ *    "horizon" (0deg), "civil" (-6deg), "nautical" (-12deg),
+ *    "fact" (-15deg), "astronomical" (-18deg). Strings can be abbreviated
+ *    down to "h", "c", "n", "f" and "a". If the argument is omitted or
+ *    null, a value referring to the appearance or the disappearance of
+ *    the Sun's disk at horizon is chosen (~-0.8deg).
+ *
+ * @param {Date} [time=new Date()]
+ *    Date for which the times should be calculated. Note that the date
+ *    is converted to UTC and the times are calculated such that the
+ *    Date (yy/mm/dd) is identical for all returned values.
+ *
+ * @type {Object}
+ *
+ * @returns
+ *    An object with the following properties is returned: time {Date}
+ *    the provided time; rise, transit, set {Date} times of rise, set and
+ *    transit; horizon {Number} the angle used for the calculation;
+ *    isUp {Boolean} whether the sun is above or below the given horizon
+ *    at th given time. If the sun does not rise or set, the properties
+ *    rise, transit and set will be undefined, isUp will refer to
+ *    the fact whether the sun is the whole day above or below the
+ *    horizon (0deg).
+ *
+ * @example
+ *    var date = new Date("2012-10-25 16:30 GMT"); // Date in UTC
+ *    console.out(JSON.stringify(Sun.horizon());
+ *    console.out(JSON.stringify(Sun.horizon("astro"));
+ *    console.out(JSON.stringify(Sun.horizon(-12, date); // nautical
+ */
+Sun.horizon = function() { /* [native code] */ }
Index: branches/testFACT++branch/scripts/doc/Thread.js
===================================================================
--- branches/testFACT++branch/scripts/doc/Thread.js	(revision 18277)
+++ branches/testFACT++branch/scripts/doc/Thread.js	(revision 18277)
@@ -0,0 +1,62 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of the Thread object
+ */
+
+/**
+ * @class
+ *
+ * Creates a handle to a new thread.
+ *
+ * The handle can be used to
+ * kill the thread or be ignored. The function provided is
+ * executed after an initial timeout. Note that although this
+ * looks similar to the setTimeout in web-browsers, after started,
+ * the thread will not run until completion but run in parallel to
+ * the executed script.<P>
+ *
+ * To stop the script from within a thread, use exit(). To stop only
+ * execution of the thread (silently) throw a null exception
+ * ("throw null;"). To terminate the script with an exception
+ * throw a normal exception ("throw new Error("my error");").
+ *
+ * Note that a running thread might consume all CPU. Although it is
+ * a seperated thread, JavaScript allows only one thread to run at
+ * a time (thus it can make programming simpler, but is not really
+ * consuming more CPU). In certain circumstances, it might be necessary
+ * to give CPU time with v8.sleep(...) back to allow other threads to run.
+ *
+ * @param {Integer} timeout
+ *    A positive integer given the initial delay in milliseconds before
+ *    the thread is executed.
+ *
+ * @param {Function} function
+ *    A function which is executed aftr the initial timeout.
+ *
+ * @param {Object} [_this]
+ *    An object which will be the reference for 'this' in the function call.
+ *    If none is given, the function itself will be the 'this' object.
+ *
+ * @throws
+ *    <li> If number or type of arguments is wrong
+ *
+ * @example
+ *    var handle = new Thread(100, function() { console.out("Hello world!"); });
+ *    ...
+ *    handle.kill();
+ */
+function Thread(timeout, function, _this)
+{
+    /**
+     *
+     * Kills a running thread
+     *
+     * @returns {Boolean}
+     *     If the thread was still known, true is returned, false
+     *     otherwise. If the thread terminated already, false is
+     *     returned.
+     *
+     */
+    this.kill = function() { /* [native code] */ }
+};
Index: branches/testFACT++branch/scripts/doc/_global_.js
===================================================================
--- branches/testFACT++branch/scripts/doc/_global_.js	(revision 18277)
+++ branches/testFACT++branch/scripts/doc/_global_.js	(revision 18277)
@@ -0,0 +1,161 @@
+throw new Error("Description for built in functions. Must not be included!");
+/***************************************************************************/
+/***                                                                     ***/
+/***        JsDoc: http://code.google.com/p/jsdoc-toolkit/w/list         ***/
+/***                                                                     ***/
+/***                 jsdoc -d=html/dimctrl scripts/doc/                  ***/
+/***                                                                     ***/
+/***************************************************************************/
+/**
+ * @fileOverview
+ *    Documentation of the native functions built into dimctrl's
+ *    global namespace.
+ */
+
+/**
+ * An associative array containing the user supplied arguments identical to arg.
+ *
+ * @static
+ * @type Array
+ *
+ * @example
+ *    var value = $['name'];
+ *
+ */
+_global_.$ = [];
+
+/**
+ * An associative array containing the user supplied arguments identical to $.
+ *
+ * @static
+ * @type Array
+ *
+ * @example
+ *    for (var key in arg)
+ *        console.out("arg["+key+"]="+arg[key]);
+ */
+_global_.arg = [];
+
+/**
+ * A magic variable which is always set to the filename of the
+ * JavaScript file currently executed, if any.
+ *
+ * @static
+ * @type String
+ *
+ * @example
+ *    console.out(__FILE__);
+ */
+_global_.__FILE__ = filename;
+
+/**
+ * A magic variable which is always set to the modification time of the
+ * JavaScript file currently executed, if any.
+ *
+ * @static
+ * @type Date
+ *
+ * @example
+ *    console.out(__DATE__);
+ */
+_global_.__DATE__ = filedate;
+
+/**
+ * A magic variable which is always set to the start time when the
+ * current JavaScript session was started.
+ *
+ * @static
+ * @constant
+ * @type Date
+ *
+ * @example
+ *    console.out(__START__);
+ */
+_global_.__START__ = starttime;
+
+
+/**
+ * Includes another java script.
+ *
+ * Note that it is literally included,
+ * i.e. its code is executed as if it were at included at this
+ * place of the current file.
+ *
+ * @param {String} [name="test"]
+ *    Name of the file to be included. The base directory is
+ *    the directory in which dimctrl was started.
+ *
+ * @param {String} [. . . ]
+ *    More files to be included
+ *
+ * @type Array
+ *
+ * @static
+ *
+ */
+_global_.include = function() { /* [native code] */  }
+
+/**
+ * Forecefully exit the current script. This function can be called
+ * from anywhere and will terminate the current script.
+ *
+ * The effect is the same than throwing a null expecption ("throw null;")
+ * in the main thread. In every other thread or callback, the whole script
+ * will terminate which is different from the behaviour of a null exception
+ * which only terminates the corresponding thread.
+ *
+ * @static
+ *
+ */
+_global_.exit = function() { /* [native code] */  }
+
+/**
+ *
+ * @returns {String}
+ *    A string with the JavaScript V8 version is returned.
+ *
+ * @static
+ *
+ */
+_global_.version = function() { /* [native code] */  }
+
+/**
+ * Reads a file as a whole.
+ *
+ * Files can be split into an array when reading the file. It is
+ * important to note that no size check is done. So trying to read
+ * a file larger than the available memory will most probably crash
+ * the program. Strictly speaking only reading ascii fils make sense.
+ * Also gzip'ed files are supported.
+ *
+ * Note that this is only meant for debugging purpose and should
+ * not be usd in a production environment. Scripts should not
+ * access any files by defaults. If external values have to be
+ * provided arguments should be given to the script.
+ *
+ * @static
+ *
+ * @param {String} name
+ *    Name of the file to read. The base directory is the current
+ *    working directory
+ *
+ * @param {String} [delim=undefined]
+ *    A delimiter used to split the file into an array. If provided
+ *    it must be a String of length 1.
+ *
+ * @returns {String,Array[String]}
+ *    If no delimiter is given, a StringObject with the file (read
+ *    until \0) is returned. If a delimiter is given, an array
+ *    of Strings is returned, one for each chunk. Both objects
+ *    contain the property 'name' with the file name and the array
+ *    contains the property 'delim' with the used delimiter.
+ *
+ * @throws
+ *    <li> If number or type of arguments is wrong
+ *    <li> If there was an error reading the file, the system error is thrown
+ *
+ * @example
+ *    var string = File("fact++.rc");
+ *    var array  = File("fact++.rc", "\n");
+ */
+_global_.File = function() { /* [native code] */ }
Index: branches/testFACT++branch/scripts/doc/console.js
===================================================================
--- branches/testFACT++branch/scripts/doc/console.js	(revision 18277)
+++ branches/testFACT++branch/scripts/doc/console.js	(revision 18277)
@@ -0,0 +1,53 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of dim namespace.
+ */
+
+/**
+ * @namespace
+ *
+ * Namespace for extension functions dealing with the console
+ *
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ */
+var console = { };
+
+/**
+ *
+ * Displays a message on the local console (only).
+ *
+ * @param argument
+ *     Any kind of argument can be given. If it is not a String, it
+ *     is converted using the toString() member function.
+ *
+ * @param [. . .]
+ *     Any number of additional arguments. Each argument will appear in
+ *     a new line.
+ *
+ * @example
+ *     console.out("Five="+5, "--- new line ---");
+ *
+ */
+console.out = function() { /* [native code] */ }
+
+/**
+ *
+ * Displays a warning message on the local console (only).
+ *
+ * (This is mainly meant for debugging purpose to highlight warning
+ *  messages.)
+ *
+ * @param argument
+ *     Any kind of argument can be given. If it is not a String, it
+ *     is converted using the toString() member function.
+ *
+ * @param [. . .]
+ *     Any number of additional arguments. Each argument will appear in
+ *     a new line.
+ *
+ * @example
+ *     console.warn("WARNING: Five="+5, "--- new line ---");
+ *
+ */
+console.warn = function() { /* [native code] */ }
Index: branches/testFACT++branch/scripts/doc/dim.js
===================================================================
--- branches/testFACT++branch/scripts/doc/dim.js	(revision 18277)
+++ branches/testFACT++branch/scripts/doc/dim.js	(revision 18277)
@@ -0,0 +1,260 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of dim namespace.
+ */
+
+/**
+ * @namespace
+ *
+ * Namespace for extension functions dealing with the DIM network.
+ *
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ */
+var dim = { };
+
+/**
+ *
+ * Post a message into the dim log stream.
+ *
+ * It will be logged by the datalogger, displayed on the console
+ * and in the smartfact web-gui.
+ *
+ * @param argument
+ *     Any kind of argument can be given. If it is not a String, it
+ *     is converted using the toString() member function.
+ *
+ * @param [. . .]
+ *     Any number of additional arguments. Each argument will appear in
+ *     a new line.
+ *
+ * @example
+ *     dim.log("Five="+5, "--- new line ---");
+ *
+ */
+dim.log = function() { /* [native code] */ }
+
+/**
+ *
+ * Posts a message to the dim network with alarm severity.
+ *
+ * Similar to dim.log, but the message is posted to the network
+ * with alarm severity. This means that it is displayed in red
+ * and the smartfact web-gui will play an alarm sound.
+ * The alarm state will stay valid (displayed in the web-gui) until it
+ * is reset.
+ *
+ * @param argument
+ *     Any kind of argument can be given. If it is not a String, it
+ *     is converted using the toString() member function.
+ *
+ * @param [. . .]
+ *     Any number of additional arguments. Each argument will appear as
+ *     individual alarm.
+ *
+ * @example
+ *     dim.alarm("Alarm for 30 seconds!");
+ *     v8.sleep(30000);
+ *     dim.alarm();
+ */
+dim.alarm = function() { /* [native code] */ }
+
+/**
+ *
+ * Send a dim command to a dim client.
+ *
+ * @param {String} commandId
+ *     The command id is a string and usually compiles like
+ *     'SERVER/COMMAND'
+ *
+ * @param argument
+ *     Any kind of argument can be given. Arguments are internally
+ *     converted into strings using toString() and processed as
+ *     if they were typed on th console.
+ *
+ * @param [. . .]
+ *     Any number of additional arguments.
+ *
+ * @example
+ *     dim.send('DRIVE_CONTROL/TRACK_SOURCE 0.5 180 "Mrk 421"');
+ *     dim.send('DRIVE_CONTROL/TRACK_SOURCE', 0.5, 180, 'Mrk 421');
+ *
+ * @returns
+ *     A boolean value is returned whether the command was succesfully
+ *     posted into the network or not. Note that true does by no means
+ *     mean that the command was sucessfully received or even processed.
+ */
+dim.send = function() { /* [native code] */ }
+
+/**
+ * Returns the state of the given server.
+ *
+ * @param {String} name
+ *     The name of the server of which you want to get the state.
+ *
+ * @throws
+ *    If number or type of arguments is wrong
+ *
+ * @returns {Object}
+ *     An object with the properties 'index' {Integer} and 'name' {String}
+ *     is returned if a connection to the server is established and
+ *     state information have been received, 'undefined' otherwise. If
+ *     the time of the last state change is available, it is stored
+ *     in the 'property'. If a server disconnected, a valid object will
+ *     be returned, but without any properties.
+ */
+dim.state = function() { /* [native code] */ }
+
+/**
+ * Wait for the given state of a server.
+ *
+ * Note that the function is internally asynchornously checking the
+ * state, that means that theoretically, a state could be missed if
+ * it changes too fast. If this can happen callbacks have to be used.
+ *
+ * @param {String} name
+ *     The name of the server of which you want to wait for a state.
+ *     The name must not contain quotation marks. To wait for
+ *     "not the given state", prefix the server name with an
+ *     exclamation mark, e.g. "!DIM_CONTROL"
+ *
+ * @param {String,Integer} state
+ *     The state you want to wait for. It can either be given as an Integer
+ *     or as the corresponding short name. If given as String it must
+ *     not contain quotation marks.
+ *
+ * @param {Integer} [timeout]
+ *     An optional timeout. If no timeout is given or a timeout of undefined,
+ *     waiting will not stop until the condition is fulfilled. A timeout
+ *     of 0 is allowed and will essentially just check if the server is
+ *     in this state or not. If a negative value is given, exceptions are
+ *     suppressed and false is returned in case of timeout. As timeout
+ *     the absolute value is used.
+ *
+ * @throws
+ *    <li> If number or type of arguments is wrong
+ *    <li> If no connection to the server is established or no state
+ *         has been received yet. This is identical to dim.state()
+ *         returning 'undefined' (only in case a positive timeout 
+ *         is given)
+ *
+ * @returns {Boolean}
+ *     true if the state was achived within the timeout, false otherwise.
+ */
+dim.wait = function() { /* [native code] */ }
+
+/**
+ *
+ * Returns a list of all known state of a given server.
+ *
+ * The returned object has all states with their index as property.
+ * Each state is returned as a String object with the property description.
+ *
+ * @param {String} [server='DIM_CONTROL']
+ *     Name of the server for which states should be listed.
+ *     The states of the DIM_CONTROl server are the default.
+ *
+ * @throws
+ *    If number or type of arguments is wrong
+ *
+ * @type Object[StringObject]
+ *
+ * @example
+ *     var states = dim.getStates("SERVER");
+ *     console.out(JSON.stringify(states));
+ *     for (var index in states)
+ *         console.out(index+"="+states[index]+": "+states[index].description);
+ */
+dim.getStates = function() { /* [native code] */ }
+
+/**
+ *
+ * Returns a description for one service
+ *
+ * The returned array has objects with the properties: name, description and unit. The last
+ * two are optional. The array itself has the properties name, server, service, isCommand
+ * and optionally format.
+ *
+ * @param {String} service
+ *     String specifying the name of the service to be returned.
+ *
+ * @throws
+ *    If number or type of arguments is wrong
+ *
+ * @type {Description}
+ *
+ * @example
+ *     var s = dim.getDescription("TNG_WEATHER/DATA");
+ *     console.out("Name="+s.name);
+ *     console.out("Server="+s.server);
+ *     console.out("Service="+s.service);
+ *     console.out("Format="+s.format);
+ *     console.out("Description="+s.name);
+ *     console.out("IsCommand="+s.isCommand);
+ *     console.out(JSON.stringify(s));
+ */
+dim.getDescription = function() { /* [native code] */ }
+
+/**
+ *
+ * Returns a list of all known services
+ *
+ * The returned array has objects with the properties: name, server, service, command
+ * and (optional) format.
+ *
+ * @param {String} [service='*']
+ *     String a service has to start with to be returned. The default is to return
+ *     all available services. An empty string or '*' are wildcards for all
+ *     services.
+ *
+ * @param {Boolean} [isCommand=undefined]
+ *     If no second argument is specified, data services and commands are returned.
+ *     With true, only commands, with false, only data-services are returned.
+ *
+ * @throws
+ *    If number or type of arguments is wrong
+ *
+ * @type Array[Object]
+ *
+ * @example
+ *     // Return all services of the FAD_CONTROL starting with E
+ *     var services = dim.getServices("FAD_CONTROL/E");
+ *     console.out(JSON.stringify(services));
+ */
+dim.getServices = function() { /* [native code] */ }
+
+/**
+ *
+ * Callback in case of state changes.
+ *
+ * To install a callback in case the state of a server changes. set
+ * the corresponding property of this array to a function. The argument
+ * provided to the function is identical with the object returned
+ * by dim.state(). In addition the name of the server is added
+ * as the 'name' property and the comment sent with the state change
+ * as 'comment' property. For the code executed, the same rules apply
+ * than for a thread created with Thread.<P>
+ *
+ * If a state change is defined for a server for which no callback
+ * has been set, the special entry '*' is checked.
+ *
+ *
+ * @type Array[Function]
+ *
+ * @example
+ *     dim.onchange['*'] = function(state) { console.out("State change from "+state.name+" received"); }
+ *     dim.onchange['DIM_CONTROL'] = function(state) { console.out(JSON.stringify(state); }
+ *     ...
+ *     delete dim.onchange['DIM_CONTROL']; // to remove the callback
+ *
+ */
+dim.onchange = [];
+
+
+/**
+ * DIM version number
+ *
+ * @constant
+ * @type Integer
+ */
+dim.version = 0;
Index: branches/testFACT++branch/scripts/doc/dimctrl.js
===================================================================
--- branches/testFACT++branch/scripts/doc/dimctrl.js	(revision 18277)
+++ branches/testFACT++branch/scripts/doc/dimctrl.js	(revision 18277)
@@ -0,0 +1,157 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of the dimctrl namespace
+ */
+
+/**
+ * @namespace
+ *
+ * Global namespace for functions dealing with the dimctrl state
+ *
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ */
+var dimctrl = { };
+
+/**
+ * Define a new internal state.
+ *
+ * States should be defined when a script is started.
+ *
+ * @param {Integer} index
+ *    The intgeger number assigned to the new state. Only numbers
+ *    in the range [10, 255] are allowed.
+ *
+ * @param {String} [name]
+ *    A short name describing the state. According the the convention
+ *    used throughout FACT++, it it must not contain whitespaces or
+ *    underscores. Ever word should start with a capital letter,
+ *    e.g. 'TriggerOn'
+ *
+ * @param {String} [decription]
+ *    A user defined string which gives a more conscise explanation
+ *    of the meaning of the state and can also be displayed in the GUI
+ *    or anywhere else automatically,
+ *    e.g. "System setup and trigger switched on"
+ *
+ * @throws
+ *    <li> if something is wrong with the supplied arguments (type, number)
+ *    <li> when the index is out of range [10,255]
+ *    <li> the given state name is empty
+ *    <li> the given state name contains a colon or an equal sign
+ *    <li> when a state with the same name or index was already
+ *    <li> set since the script was started.
+ *
+ * @returns {Boolean}
+ *    A boolean whether the state was newly added (true) or an existing
+ *    one overwritten (false).
+ *
+ * @example
+ *     dim.defineState(10, "StateTen", "This is state number ten");
+ */
+dimctrl.defineState = function() { /* [native code] */ }
+
+/**
+ * Change the internal state.
+ *
+ * @param {Integer,String} state
+ *    Either the name of the state to set or its index can be supplied.
+ *
+ * @throws
+ *    <li> if something is wrong with the supplied arguments (type, number)
+ *    <li> if a String is given and it is not found in the list of names
+ *
+ * @returns {Boolean}
+ *     A boolean is returned whether setting the state wa sucessfull or
+ *     not. If the function is not called at unexpected time, i.e.
+ *     before the execution of the JavaScript has been started or
+ *     after it has already be terminated, true should be returned
+ *     always.
+ *
+ * @example
+ *     dim.setState(10);
+ *     dim.setState("StateTen");
+ */
+dimctrl.setState = function() { /* [native code] */ }
+
+/**
+ * Get the current internal state.
+ *
+ * @throws
+ *    if arguments are supplied
+ *
+ * @returns {Object}
+ *     An object with the properties index {Number}, name {String} and
+ *     description {String}. Note that name and description might be
+ *     an empty string.
+ *
+ * @example
+ *     var state = dim.getState();
+ *     console.out(JSON.stringify(state));
+ */
+dimctrl.getState = function() { /* [native code] */ }
+
+/**
+ * Set an interrupt handler, a function which is called if an
+ * interrupt is received, e.g. via dim (dimctrl --interrupt).
+ * Note that the interrupt handler is executed in its own JavaScript
+ * thread. Thus it interrupts the execution of the script, but does
+ * not stop its execution. Please also note that this is a callback
+ * from the main loop. As long as the handler is executed, no other
+ * event (dim or command interface) will be processed.
+ *
+ * If an interrupt was triggered by dimctrl (so not from within
+ * the script) and a number between 10 and 255 is returned,
+ * the state machine will change its state accordingly. Other returned
+ * ojects or returned values outside of this range are ignored.
+ *
+ * @param {Function} [func]
+ *    Function to be called when an interrupt is received. Null, undefined
+ *    or no argument to remove the handler.
+ *
+ * @throws
+ *    if number of type of arguments is wrong
+ *
+ * @example
+ *     function handleIrq(irq, args, time, user)
+ *     {
+ *         console.out("IRQ received:   "+irq);
+ *         console.out("Interrupt time: "+time);
+ *         console.out("Issuing user:   "+user);
+ *         console.out("Arguments:");
+ *         for (var key in args)
+ *             console.out(" args["+key+"="+args[key]);
+ *
+ *         var newState = 10;
+ *         return newState;
+ *     }
+ *     dimctrl.setInterruptHandler(handleIrq);
+ */
+dimctrl.setInterruptHandler = function() { /* [native code] */ }
+
+/**
+ * You can also issue an interrupt from anywhere in your code.
+ *
+ * @param argument
+ *     Any kind of argument can be given. If it is not a String, it
+ *     is converted using the toString() member function. The result
+ *     must not contain any line break.
+ *
+ * @param [. . .]
+ *     Any number of additional arguments. Each argument will appear in
+ *     a new line.
+ *
+ * @returns
+ *    the return of the interrupt handler which is called is returned
+ *
+ * @throws
+ *    if an argument contains a line break
+ *
+ * @example
+ *     dimctrl.triggerInterrupt();
+ *     dimctrl.triggerInterrupt("my_command");
+ *     dimctrl.triggerInterrupt("my_command arg1 arg2=x arg3");
+ *     dimctrl.triggerInterrupt("arg1=x arg2 arg3");
+ *
+ */
+dimctrl.triggerInterrupt = function() { /* [native code] */ }
Index: branches/testFACT++branch/scripts/doc/v8.js
===================================================================
--- branches/testFACT++branch/scripts/doc/v8.js	(revision 18277)
+++ branches/testFACT++branch/scripts/doc/v8.js	(revision 18277)
@@ -0,0 +1,69 @@
+throw new Error("Description for built in functions. Must not be included!");
+/**
+ * @fileOverview
+ *    Documentation of dim namespace.
+ */
+
+/**
+ * @namespace
+ *
+ * Namespace for general extension functions
+ *
+ * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
+ */
+var v8 = { };
+
+/**
+ * Sleep for a while. This can be used to just wait or give time
+ * back to the operating system to produce less CPU load if the
+ * main purpose of a loop is, e.g., to wait for something to happen.
+ *
+ * @param {Integer} [milliseconds=0]
+ *     Number of millliseconds to sleep. Note that even 0 will always
+ *     sleep at least one millisecond.
+ *
+ */
+v8.sleep = function() { /* [native code] */ }
+
+/**
+ * This function implements a simple timeout functionality. 
+ * back to the operating system to produce less CPU load if the
+ * main purpose of a loop is, e.g., to wait for something to happen.
+ *
+ * @param {Integer} milliseconds
+ *     Number of millliseconds until the timeout. Note that even 0
+ *     will execute the function at least once. If the timeout
+ *     is negative no exception will be thrown by undefined will
+ *     be returned in case of a timeout.
+ *
+ * @param {Function} func
+ *     A function. The function defines when the conditional to end
+ *     the timeout will be fullfilled. As soon as the function returns
+ *     a defined value, i.e. something else than undefined, the
+ *     timeout is stopped and its return value is returned.
+ *
+ * @param {Object} [_this]
+ *    An object which will be the reference for 'this' in the function call.
+ *    If none is given, the function itself will be the 'this' object.
+ *
+ * @param [. . .]
+ *     Any further argument will be passed as argument to the function.
+ *
+ * @returns
+ *     Whatever is returned by the function. undefined in case of timeout
+ *     and a negative timeout value.
+ *
+ * @throws
+ *     <li> When the number or type of argument is wrong
+ *     <li> In case the timeout is positive and the timeout condition occurs
+ *
+ */
+v8.timeout = function() { /* [native code] */ }
+
+/**
+ * Version number of the V8 JavaScript engine.
+ *
+ * @constant
+ * @type String
+ */
+v8.version = "";
Index: branches/testFACT++branch/scripts/getSchedule.js
===================================================================
--- branches/testFACT++branch/scripts/getSchedule.js	(revision 18277)
+++ branches/testFACT++branch/scripts/getSchedule.js	(revision 18277)
@@ -0,0 +1,92 @@
+// ======================================================================================
+
+function getSchedule()
+{
+    // List of all available measurement types (see also Observation_class.js)
+    var measurementType = [ "STARTUP", "IDLE", "DRSCALIB", "SINGLEPE", "DATA", "RATESCAN", "SHUTDOWN", "OVTEST", "RATESCAN2", "SLEEP", "CUSTOM" ];
+
+    // Get current time
+    var start = new Date();//new Date("2013-04-07 19:00:00 UTC");
+
+    // Because Main.js could start a new observations just in the moment between 'now'
+    // and entering the new data in the database, we have to use the unique id
+    // in Main.js to check if the current observation should be changed (and sub resetted)
+    start = new Date(start.getTime()-10*3600000);
+
+    // ----------------------------------------------------------------------
+
+    // Connect to database
+    var db = new Database($['schedule-database']);
+
+    // get all sources from database
+    var sources = db.query("SELECT * from Source");
+
+    // Get the current schedule
+    var rows = db.query("SELECT * FROM Schedule WHERE fStart>'"+start.toISOString()+"' ORDER BY fStart, fMeasurementID");
+
+    // Close db connection
+    db.close();
+
+    // ----------------------------------------------------------------------
+
+    var schedule = [];
+    var entry    = -1;
+    var sub      =  0;
+
+    for (var i=0; i<rows.length; i++)
+    {
+        var sub = rows[i]['fMeasurementID'];
+        if (sub==0)
+            entry++;
+
+        var m = { }
+
+        var task = rows[i]['fMeasurementTypeKey'];
+        m.task = measurementType[task];
+
+        var src = rows[i]['fSourceKey'];
+        if (src)
+        {
+            // Convert SourceKey to SourceName
+            var arr = sources.filter(function(e) { return e['fSourceKEY']==src; });
+            if (arr.length==0)
+                throw new Error("SourceKey "+src+" unknown.");
+
+            m.source = arr[0]['fSourceName'];
+        }
+
+        var data = rows[i]['fData'];
+        if (data)
+        {
+            var obj = JSON.parse(("{"+data+"}").replace(/\ /g, "").replace(/(\w+):/gi, "\"$1\":"));
+            for (var key in obj)
+                m[key] = obj[key];
+        }
+
+        if (!schedule[entry])
+            schedule[entry] = { };
+
+        schedule[entry].id   = rows[i]['fScheduleID'];
+        schedule[entry].date = new Date(rows[i]['fStart']+" UTC");
+
+        if (!schedule[entry].measurements)
+            schedule[entry].measurements = [];
+
+        schedule[entry].measurements[sub] = m;
+    }
+
+    for (var i=0; i<schedule.length; i++)
+        schedule[i] = new Observation(schedule[i]);
+
+    return schedule;
+}
+
+// -------------------------------------------------------------------------------------
+
+/*
+ // remove "
+ conv = conv.replace(/\"(\w+)\":/ig, "$1:");
+ // must contain one , less than :
+ // must not contain " and '
+ //var test = "{ra:12,dec:13}".replace(/\ /g, "").replace(/(\w+):/gi, "\"$1\":");
+*/
Index: branches/testFACT++branch/scripts/handleAgilentPowerOn.js
===================================================================
--- branches/testFACT++branch/scripts/handleAgilentPowerOn.js	(revision 18277)
+++ branches/testFACT++branch/scripts/handleAgilentPowerOn.js	(revision 18277)
@@ -0,0 +1,37 @@
+'use strict';
+
+// switch agilent control output on
+function handleAgilentPowerOn(wait_state)
+{
+    var state = dim.state("AGILENT_CONTROL");
+    if (state===undefined)
+        return undefined;
+
+    if (wait_state && wait_state.length>0 && state.name!=wait_state)
+        return wait_state;
+
+    //dim.log("AGILENT_CONTROL:  "+state.name+"["+state.index+"]");
+
+    switch (state.name)
+    {
+    case "Disconnected":
+    case "Connected":
+        return undefined;
+
+    case "VoltageLow":
+        return wait_state;
+
+    case "VoltageOff":
+        console.out("Agilent in 'VoltageOff'... sending SET_POWER ON... waiting for 'VoltageOn'.");
+        dim.send("AGILENT_CONTROL/SET_POWER", true);
+        return "VoltageOn";
+
+    case "VoltageOn":
+        return "";
+
+    case "VoltageHigh":
+        throw new Error("Agilent reports voltage above limit ('VoltageHigh')... please check.");
+    }
+
+    throw new Error("AGILENT_CONTROL:"+state.name+"["+state.index+"] unknown or not handled.");
+}
Index: branches/testFACT++branch/scripts/handleBiasVoltageOff.js
===================================================================
--- branches/testFACT++branch/scripts/handleBiasVoltageOff.js	(revision 18277)
+++ branches/testFACT++branch/scripts/handleBiasVoltageOff.js	(revision 18277)
@@ -0,0 +1,50 @@
+'use strict';
+
+// Get bias control connected and voltage off
+function handleBiasVoltageOff(wait_state)
+{
+    var state = dim.state("BIAS_CONTROL");
+    if (state===undefined)
+        return undefined;
+
+    if (wait_state && wait_state.length>0 && state.name!=wait_state)
+        return wait_state;
+
+    //dim.log("BIAS_CONTROL: "+state.name+"["+state.index+"]");
+
+    switch (state.name)
+    {
+    // Do-nothing conditions
+    case "Connecting":
+    case "Initializing":
+    case "Connected":
+    case "Ramping":
+        return wait_state;
+
+    case "Locked":
+        console.out("WARNING - Bias is LOCKED. Please report, this is serious, unlock manually and go on.");
+        return "";
+
+    // Do-something conditions
+    case "Disconnected":
+        console.out("Bias in Disconnected... connect.");
+        dim.send("BIAS_CONTROL/RECONNECT");
+        return "VoltageOff";
+
+    case "NotReferenced":
+    case "VoltageOn":
+        console.out("Bias in "+state.name+"... switch voltage off.");
+        dim.send("BIAS_CONTROL/SET_ZERO_VOLTAGE");
+        return "VoltageOff";
+
+    // Final state reached condition
+    case "VoltageOff":
+        return "";
+
+    // Conditions which cannot be handled
+    case "OverCurrent": throw "BIAS_CONTROL in OverCurrent";
+    case "ExpertMode":  throw "BIAS_CONTROL in expert mode";
+    }
+
+    throw new Error("BIAS_CONTROL:"+state.name+"["+state.index+"] unknown or not handled.");
+}
Index: branches/testFACT++branch/scripts/handleDriveArmed.js
===================================================================
--- branches/testFACT++branch/scripts/handleDriveArmed.js	(revision 18277)
+++ branches/testFACT++branch/scripts/handleDriveArmed.js	(revision 18277)
@@ -0,0 +1,52 @@
+'use strict';
+
+// Get Drive control armed
+function handleDriveArmed(wait_state)
+{
+    var state = dim.state("DRIVE_CONTROL");
+    if (state===undefined)
+        return undefined;
+
+    if (wait_state && wait_state.length>0 && state.name!=wait_state)
+        return wait_state;
+
+    //dim.log("DRIVE_CONTROL: "+state.name+"["+state.index+"]");
+
+    switch (state.name)
+    {
+    case "Disconnected":
+    case "Connected":
+    case "Ready":
+        v8.sleep(1000);
+        return undefined;
+
+    case "Locked":
+        //console.warn("Drive is LOCKED. Not all observation types will be supported.");
+        console.out("WARNING - Drive is LOCKED. Please unlock manually.");
+        return "";
+        //throw new Error("Drive is LOCKED. Please unlock manually.");
+        //return undefined;
+        //dim.log("Drive in Locked... unlock.");
+        //dim.send("DRIVE_CONTROL/UNLOCK");
+        //return "Armed";
+
+    case "Moving":
+    case "Tracking":
+    case "OnTrack":
+        console.out("Drive in '"+state.name+"'... sending STOP... waiting for 'Armed'.");
+        dim.send("DRIVE_CONTROL/STOP");
+        return "Armed";
+
+    case "NotReady":
+    case "ERROR":
+        console.out("Drive in '"+state.name+"'... sending STOP.");
+        dim.send("DRIVE_CONTROL/STOP");
+        dim.wait("DRIVE_CONTROL", "Armed", 60000);
+        return undefined;  // Process that again if necessary
+
+    case "Armed":
+        return "";
+    }
+
+    throw new Error("DRIVE_CONTROL:"+state.name+"["+state.index+"] unknown or not handled.");
+}
Index: branches/testFACT++branch/scripts/handleFadConnected.js
===================================================================
--- branches/testFACT++branch/scripts/handleFadConnected.js	(revision 18277)
+++ branches/testFACT++branch/scripts/handleFadConnected.js	(revision 18277)
@@ -0,0 +1,65 @@
+'use strict';
+
+// Get fad control connected
+function handleFadConnected(wait_state)
+{
+    var state = dim.state("FAD_CONTROL");
+    if (state===undefined)
+        return undefined;
+
+    if (wait_state && wait_state.length>0 && state.name!=wait_state)
+        return wait_state;
+
+    //dim.log("BIAS_CONTROL: "+state.name+"["+state.index+"]");
+
+    switch (state.name)
+    {
+    case "Offline":
+        return undefined;
+
+    case "Disconnected":
+        console.out("Fadctrl in 'Disconnected'... sending START... waiting for 'Connected'.");
+        dim.send("FAD_CONTROL/START");
+        return "Connected";
+
+    // Do-nothing conditions
+    case "Connecting":
+        return wait_state;
+
+    // Do-something conditions
+    case "Configuring1":
+    case "Configuring2":
+    case "Configuring3":
+    case "Configured":
+        console.out("Fadctrl in Configure state... sending RESET_CONFIGURE... waiting for 'Connected'.");
+        dim.send("FAD_CONTROL/RESET_CONFIGURE");
+        return "Connected";
+
+    case "Disengaged":
+        console.out("Fadctrl in 'Disengaged'... sending START... waiting for 'Connected'.");
+        dim.send("FAD_CONTROL/START");
+        return "Connected";
+
+    case "RunInProgress":
+        console.out("Fadctrl in 'RunInProgress'... sending CLOSE_OPEN_FILES... waiting for 'Connected'.");
+        dim.send("FAD_CONTROL/CLOSE_OPEN_FILES");
+        return "Connected";
+
+    // Final state reached condition
+    case "Connected":
+        var sub_con = new Subscription("FAD_CONTROL/CONNECTIONS");
+        var con = sub_con.get(5000);
+        var all = true;
+        for (var i=0; i<40; i++)
+            if (con.obj['status'][i]&66!=66)
+            {
+                console.out("Board "+i+" not connected... sending CONNECT... waiting for 'Connected'.");
+                dim.send("FAD_CONTROL/CONNECT", i);
+                all = false;
+            }
+        sub_con.close();
+        return all ? "" : "Connected";
+    }
+
+    throw new Error("FAD_CONTROL:"+state.name+"["+state.index+"] unknown or not handled.");
+}
Index: branches/testFACT++branch/scripts/handleFeedbackConnected.js
===================================================================
--- branches/testFACT++branch/scripts/handleFeedbackConnected.js	(revision 18277)
+++ branches/testFACT++branch/scripts/handleFeedbackConnected.js	(revision 18277)
@@ -0,0 +1,41 @@
+'use strict';
+
+function handleFeedbackConnected(wait_state)
+{
+    var state = dim.state("FEEDBACK");
+    if (state===undefined)
+        return undefined;
+
+    if (wait_state && wait_state.length>0 && state.name!=wait_state)
+        return wait_state;
+
+    //dim.log("FEEDBACK:  "+state.name+"["+state.index+"]");
+
+    switch (state.name)
+    {
+    case "Disconnected":
+    case "Connecting":
+        return undefined;
+
+    case "Connected":
+    case "Calibrated":
+        return "";
+
+    case "WaitingForData":
+    case "OnStandby":
+    case "InProgress":
+    case "Warning":
+    case "Critical":
+        console.out("Feedback in '"+state.name+"'... sending STOP... waiting for 'Calibrated'.");
+        dim.send("FEEDBACK/STOP");
+        return "Calibrated";
+
+    case "Calibrating":
+        console.out("Feedback in '"+state.name+"'... sending STOP... waiting for 'Connected'.");
+        dim.send("FEEDBACK/STOP");
+        return "Connected";
+    }
+
+    throw new Error("FEEDBACK:"+state.name+"["+state.index+"] unknown or not handled.");
+}
+
Index: branches/testFACT++branch/scripts/handleFscConnected.js
===================================================================
--- branches/testFACT++branch/scripts/handleFscConnected.js	(revision 18277)
+++ branches/testFACT++branch/scripts/handleFscConnected.js	(revision 18277)
@@ -0,0 +1,28 @@
+'use strict';
+
+// Get FSC connected
+function handleFscConnected(wait_state)
+{
+    var state = dim.state("FSC_CONTROL");
+    if (state===undefined)
+        return undefined;
+
+    if (wait_state && wait_state.length>0 && state.name!=wait_state)
+        return wait_state;
+
+    //console.out("FSC_CONTROL:  "+state.name+"["+state.index+"]");
+
+    switch (state.name)
+    {
+    // Do-nothing conditions
+    case "Disconnected":
+        console.out("Fscctrl in 'Disconnected'... sending RECONNECT... waiting for 'Connected'.");
+        dim.send("FSC_CONTROL/RECONNECT");
+        return "Connected";
+
+    case "Connected":
+        return "";
+    }
+
+    throw new Error("FSC_CONTROL:"+state.name+"["+state.index+"] unknown or not handled.");
+}
Index: branches/testFACT++branch/scripts/handleFtmIdle.js
===================================================================
--- branches/testFACT++branch/scripts/handleFtmIdle.js	(revision 18277)
+++ branches/testFACT++branch/scripts/handleFtmIdle.js	(revision 18277)
@@ -0,0 +1,54 @@
+'use strict';
+
+// Get ftm connected, idle and with working FTUs
+function handleFtmIdle(wait_state)
+{
+    var state = dim.state("FTM_CONTROL");
+    if (state===undefined)
+        return undefined;
+
+    // Only try to open the service if the server is already in the list
+    if (wait_state && wait_state.length>0 && state.name!=wait_state)
+        return wait_state;
+
+    //dim.log("FTM_CONTROL:  "+state.name+"["+state.index+"]");
+
+    switch (state.name)
+    {
+    case "Disconnected":
+        console.out("Ftmctrl in 'Disconnected'... sending RECONNECT... waiting for 'Valid'.");
+        dim.send("FTM_CONTROL/RECONNECT");
+        return "Valid";
+
+    case "Idle":
+        console.out("Ftmctrl in 'Idle'... sending DISCONNECT... waiting for 'Disconnected'.");
+        dim.send("FTM_CONTROL/DISCONNECT");
+        v8.sleep(3000);
+        return "Disconnected";
+
+    case "Valid":
+        return "";
+
+    case "TriggerOn":
+        console.out("Ftmctrl in 'TriggerOn'... sending STOP_TRIGGER... waiting for 'Valid'.");
+        dim.send("FTM_CONTROL/STOP_TRIGGER");
+        return "Valid";
+ 
+    case "Configuring1":
+    case "Configuring2":
+    case "Configured1":
+        console.out("Ftmctrl in '"+state.name+"'... sending RESET_CONFIGURE... waiting for 'Valid'.");
+        dim.send("FTM_CONTROL/RESET_CONFIGURE");
+        return "Valid";
+
+    case "Configured2":
+        return "TriggerOn";
+
+    case "ConfigError1":
+    case "ConfigError2":
+    case "ConfigError3":
+        throw new Error("FTM_CONTROL:"+state.name+"["+state.index+"] in error state.");
+    }
+
+    throw new Error("FTM_CONTROL:"+state.name+"["+state.index+"] unknown or not handled.");
+}
Index: branches/testFACT++branch/scripts/handleFtuCheck.js
===================================================================
--- branches/testFACT++branch/scripts/handleFtuCheck.js	(revision 18277)
+++ branches/testFACT++branch/scripts/handleFtuCheck.js	(revision 18277)
@@ -0,0 +1,32 @@
+'use strict';
+
+function handleFtuCheck(wait_state)
+{
+    var service = this.ftuList.get();
+    if (!service.obj || service.obj.length==0)
+        return undefined;
+
+    if (!wait_state)
+    {
+        dim.send("FTM_CONTOL/PING");
+        return toString(service.counter);
+    }
+
+    if (toInt(wait_state)==service.counter)
+        return wait_state;
+
+    var ping = service.data['Ping'];
+    for (var i=0; i<40; i++)
+    {
+        if (ping[i]==1)
+            continue;
+
+        dim.log("Problems in the FTU communication found.");
+        dim.log("Send command to disable all FTUs.");
+        dim.log(" => Power cycle needed.");
+        dim.send("FTM_CONTOL/ENABLE_FTU", -1, false);
+        throw new Error("CrateReset[FTU]");
+    }
+
+    return "";
+}
Index: branches/testFACT++branch/scripts/handleLidClosed.js
===================================================================
--- branches/testFACT++branch/scripts/handleLidClosed.js	(revision 18277)
+++ branches/testFACT++branch/scripts/handleLidClosed.js	(revision 18277)
@@ -0,0 +1,38 @@
+'use strict';
+
+// Get Lids closed
+function handleLidClosed(wait_state)
+{
+    var state = dim.state("LID_CONTROL");
+    if (state===undefined)
+        return undefined;
+
+    if (wait_state && wait_state.length>0 && state.name!=wait_state)
+        return wait_state;
+
+    //dim.log("LID_CONTROL:  "+state.name+"["+state.index+"]");
+
+    switch (state.name)
+    {
+    // Do-nothing conditions
+    case "NotReady":
+    case "Ready":
+    case "NoConnection":
+    case "Connected":
+    case "Moving":
+        return wait_state;
+
+    case "Unknown":
+    case "Inconsistent":
+    case "PowerProblem":
+    case "Open":
+        console.out("Lidctrl in '"+state.name+"'... sending CLOSE... waiting for 'Closed'.");
+        dim.send("LID_CONTROL/CLOSE");
+        return "Closed";
+
+    case "Closed":
+        return "";
+    }
+
+    throw new Error("LID_CONTROL:"+state.name+"["+state.index+"] unknown or not handled.");
+}
Index: branches/testFACT++branch/scripts/handlePwrCameraOn.js
===================================================================
--- branches/testFACT++branch/scripts/handlePwrCameraOn.js	(revision 18277)
+++ branches/testFACT++branch/scripts/handlePwrCameraOn.js	(revision 18277)
@@ -0,0 +1,52 @@
+'use strict';
+
+// Switch interlock camera power on
+function handlePwrCameraOn(wait_state)
+{
+    var state = dim.state("PWR_CONTROL");
+    if (state===undefined)
+        return undefined;
+
+    if (wait_state && wait_state.length>0 && state.name!=wait_state)
+        return wait_state;
+
+    //dim.log("PWR_CONTROL:  "+state.name+"["+state.index+"]");
+
+    switch (state.name)
+    {
+    // Do-nothing conditions
+    case "Disconnected":
+    case "Connected":
+    case "NoConnection":
+        return undefined;
+
+    // Drive off
+    case "PowerOff":
+        console.out("Pwrctrl in 'PowerOff'... sending CAMERA_POWER ON... waiting for 'DriveOff'.");
+        dim.send("PWR_CONTROL/CAMERA_POWER", true);
+        return "DriveOff";
+
+    // Drive on
+    case "DriveOn":
+        console.out("Pwrctrl in 'DriveOn'... sending CAMERA_POWER ON... waiting for 'SystemOn'.");
+        dim.send("PWR_CONTROL/CAMERA_POWER", true);
+        return "SystemOn";
+
+    // Intermediate states?
+    case "CameraOn":
+    case "BiasOn":
+    case "CameraOff":
+    case "BiasOff":
+        return wait_state;
+
+    case "DriveOff":
+    case "SystemOn":
+        // Now the agilent control need to be switched on!
+        return "";
+
+    case "CoolingFailure":
+        throw new Error("Cooling unit reports failure... please check.");
+    }
+
+    throw new Error("PWR_CONTROL:"+state.name+"["+state.index+"] unknown or not handled.");
+}
Index: branches/testFACT++branch/scripts/handleRatectrlConnected.js
===================================================================
--- branches/testFACT++branch/scripts/handleRatectrlConnected.js	(revision 18277)
+++ branches/testFACT++branch/scripts/handleRatectrlConnected.js	(revision 18277)
@@ -0,0 +1,33 @@
+'use strict';
+
+function handleRatectrlConnected(wait_state)
+{
+    var state = dim.state("RATE_CONTROL");
+    if (state===undefined)
+        return undefined;
+
+    if (wait_state && wait_state.length>0 && state.name!=wait_state)
+        return wait_state;
+
+    //dim.log("RATE_CONTROL: "+state.name+"["+state.index+"]");
+
+    switch (state.name)
+    {
+    case "DimNetworkNotAvailable":
+    case "Disconnected":
+        return undefined;
+
+    case "Calibrating":
+    case "GlobalThresholdSet":
+    case "InProgress":
+        console.out("Ratectrl in '"+state.name+"'... sending STOP... waiting for 'Connected'.");
+        dim.send("RATE_CONTROL/STOP");
+        return "Connected";
+
+    case "Connected":
+        return "";
+    }
+
+    throw new Error("RATE_CONTROL:"+state.name+"["+state.index+"] unknown or not handled.");
+}
+
Index: branches/testFACT++branch/scripts/schedule.js_template
===================================================================
--- branches/testFACT++branch/scripts/schedule.js_template	(revision 18277)
+++ branches/testFACT++branch/scripts/schedule.js_template	(revision 18277)
@@ -0,0 +1,60 @@
+'use strict';
+
+// This list contains the schedule for one or several nights.
+// The schedule consists of observations and measurements.
+// An observation is compiled by several measurements.
+// Most measurements (like RATESCAN) cannot be interrupted, but
+// will be finished at some point (like a single run).
+// A measurement which takes until the next observation is started is DATA.
+// Whenever a measurement is finished and the start time of a new
+// observation has passed, the new observation is started.
+// In an observation it makes only sense that the last measurment
+// is data. All previous measurement just take as much time as they take.
+// Note that after each measurement, a new observation might be started
+// if the start time of the new observation has passed. Thus there is,
+// strictly speaking, no gurantee that any other than the first measurement
+// of one observation will ever be excuted.
+// A list of observations must end with a shutdown.
+//
+// here is an example:
+//
+var observations =
+[
+ { date:"2013-03-14 19:55 UTC", measurements:
+     [
+      { task:'startup' }
+     ]
+ },
+
+ { date:"2013-03-14 20:05 UTC", measurements:
+     [
+      { task:'data', source:'Crab' }
+     ]
+ },
+
+ { date:"2013-03-14 23:58 UTC", measurements:
+     [
+      { task:'ratescan', ra:9.438888, dec:29.0 },
+      { task:'data',     source:'Crab'        }
+     ]
+ },
+
+ { date:"2013-03-15 00:45 UTC", measurements:
+     [
+      { task:'ratescan', ra:11.26888888, dec:28.4477777 },
+      { task:'data',     source:'Mrk 421'}
+     ]
+ },
+
+ { date:"2013-03-15 03:30 UTC", measurements:
+     [
+      { task:'data', source:'Mrk 501'}
+     ]
+ },
+
+ { date:"2013-03-15 06:38 UTC", measurements:
+     [
+      { task:'shutdown'}
+     ]
+ },
+];
Index: branches/testFACT++branch/scripts/takeRun.js
===================================================================
--- branches/testFACT++branch/scripts/takeRun.js	(revision 18277)
+++ branches/testFACT++branch/scripts/takeRun.js	(revision 18277)
@@ -0,0 +1,333 @@
+'use strict';
+
+// ================================================================
+//  Code related to monitoring the fad system
+// ================================================================
+
+var incomplete = 0;
+
+sub_incomplete.onchange = function(evt)
+{
+    if (!evt.data)
+        return;
+
+    var inc = evt.obj['incomplete'];
+    if (!inc || inc>0xffffffffff)
+        return;
+
+    if (incomplete>0)
+        return;
+
+    if (dim.state("MCP").name!="TakingData")
+        return;
+
+    console.out("");
+    dim.log("Incomplete event ["+inc+","+incomplete+"] detected, sending MCP/STOP");
+
+    incomplete = inc;
+    dim.send("MCP/STOP");
+}
+
+// ================================================================
+//  Code related to taking data
+// ================================================================
+
+/**
+ * reconnect to problematic FADs
+ *
+ * Dis- and Reconnects to FADs, found to be problematic by call-back function
+ * onchange() to have a different CONNECTION value than 66 or 67. 
+ * 
+ * @returns
+ *      a boolean is returned. 
+ *      reconnect returns true if:
+ *          * nothing needed to be reset --> no problems found by onchange()
+ *          * the reconnection went fine.
+ *      
+ *      reconnect *never returns false* so far.
+ *
+ * @example
+ *      if (!sub_connections.reconnect())
+ *          exit();
+ */
+function reconnect(list, txt)
+{ /*
+    var reset = [ ];
+
+    for (var i=0; i<list.length; i++)
+        {
+            console.out("  FAD %2d".$(list[i])+" lost during "+txt);
+            reset.push(parseInt(list[i]/10));
+        }
+
+    reset = reset.filter(function(elem,pos){return reset.indexOf(elem)==pos;});
+
+    console.out("");
+    console.out("  FADs belong to crate(s): "+reset);
+    console.out("");
+*/
+    console.out("");
+    dim.log("Trying automatic reconnect ["+txt+",n="+list.length+"]...");
+
+    if (list.length>3)
+        throw new Error("Too many boards to be reconnected. Please check what happened.");
+
+    for (var i=0; i<list.length; i++)
+    {
+        console.out("   ...disconnect "+list[i]);
+        dim.send("FAD_CONTROL/DISCONNECT", list[i]);
+    }
+
+    console.out("   ...waiting for 3s");
+    v8.sleep(3000);
+
+    for (var i=0; i<list.length; i++)
+    {
+        console.out("   ...reconnect "+list[i]);
+        dim.send("FAD_CONTROL/CONNECT", list[i]);
+    }
+
+    console.out("   ...waiting for 1s");
+
+    // Wait for one second to bridge possible pending connects
+    v8.sleep(1000);
+
+    console.out("   ...checking connection");
+
+    // Wait for FAD_CONTROL to realize that all boards are connected
+    // FIXME: Wait for '40' boards being connected instead
+    try
+    {
+        dim.wait("FAD_CONTROL", "Connected", 3000);
+    }
+    catch (e)
+    {
+        if (dim.state("FAD_CONTROL").name!="Connecting")
+        {
+            console.out("");
+            console.out(" + FAD_CONTROL: "+dim.state("FAD_CONTROL").name);
+            console.out("");
+            throw e;
+        }
+
+        var crates = [];
+        for (var i=0; i<list.length; i++)
+            crates[list[i]/10] = true;
+
+        include('scripts/crateReset.js');
+        crateReset(crates);
+    }
+
+    // Wait also for MCP to have all boards connected again
+    dim.wait("MCP", "Idle", 3000);
+
+    dim.log("Automatic reconnect successfull.");
+    console.out("");
+}
+
+function takeRun(type, count, time)
+{
+    if (!count)
+        count = -1;
+    if (!time)
+        time = -1;
+
+    var custom = typeof(type)=="function";
+
+    var nextrun = sub_startrun.get().obj['next'];
+    dim.log("Take run %3d".$(nextrun)+": N="+count+" T="+time+"s ["+(custom?"custom":type)+"]");
+
+    // FIXME: Replace by callback?
+    //
+    // DN: I believe instead of waiting for 'TakingData' one could split this
+    // up into two checks with an extra condition:
+    //  if type == 'data':
+    //      wait until ThresholdCalibration starts:
+    //          --> this time should be pretty identical for each run
+    //      if this takes longer than say 3s:
+    //          there might be a problem with one/more FADs
+    //    
+    //      wait until "TakingData":
+    //          --> this seems to take even some minutes sometimes... 
+    //              (might be optimized rather soon, but still in the moment...)
+    //      if this takes way too long: 
+    //          there might be something broken, 
+    //          so maybe a very high time limit is ok here.
+    //          I think there is not much that can go wrong, 
+    //          when the Thr-Calib has already started. Still it might be nice 
+    //          If in the future RateControl is written so to find out that 
+    //          in case the threshold finding algorithm does 
+    //          *not converge as usual*
+    //          it can complain, and in this way give a hint, that the weather
+    //          might be a little bit too bad.
+    //  else:
+    //      wait until "TakingData":
+    //          --> in a non-data run this time should be pretty short again
+    //      if this takes longer than say 3s:
+    //          there might be a problem with one/more FADs
+    //  
+
+    // Use this if you use the rate control to calibrate by rates
+    //if (!dim.wait("MCP", "TakingData", -300000) )
+    //{
+    //    throw new Error("MCP took longer than 5 minutes to start TakingData"+
+    //                    "maybe this idicates a problem with one of the FADs?");
+    //}
+
+    // ================================================================
+    //  Function for Critical voltage
+    // ================================================================
+
+    // INSTALL a watchdog... send FAD_CONTROL/CLOSE_OPEN_FILES
+    // could send MCP/RESET as well but would result in a timeout
+    var callback = dim.onchange['FEEDBACK'];
+    dim.onchange['FEEDBACK'] = function(state)
+    {
+        if (callback)
+            callback.call(this, state);
+
+        if ((state.name=="Critical" || state.name=="OnStandby") &&
+            (this.last!="Critical"  && this.last!="OnStandby"))
+        {
+            console.out("Feedback state changed from "+this.last+" to "+state.name+" [takeRun.js]");
+
+            // Includes FAD_CONTROL/CLOSE_ALL_OPEN_FILES
+            dim.send("MCP/STOP");
+        }
+
+        this.last=state.name;
+    }
+
+    // Here we could check and handle fad losses
+
+    incomplete = 0;
+
+    var start = true;
+
+    for (var n=0; n<3; n++)
+    {
+        if (start)
+        {
+            dim.send("MCP/START", time, count, custom?"custom":type);
+            if (custom)
+                type();
+        }
+
+        try
+        {
+            dim.wait("MCP", "TakingData", 15000);
+            break;
+        }
+        catch (e)
+        {
+            if (dim.state("MCP").name=="TriggerOn" &&
+                dim.state("FAD_CONTROL").name=="Connected" &&
+                dim.state("FTM_CONTROL").name=="TriggerOn")
+            {
+                console.out("");
+                console.out("Waiting for TakingData timed out. Everything looks ok, but file not yet open... waiting once more.");
+                start = false;
+                continue;
+            }
+
+            start = true;
+
+            console.out("");
+            console.out(" + MCP:         "+dim.state("MCP").name);
+            console.out(" + FAD_CONTROL: "+dim.state("FAD_CONTROL").name);
+            console.out(" + FTM_CONTROL: "+dim.state("FTM_CONTROL").name);
+            console.out("");
+
+            if (dim.state("MCP").name!="Configuring3" ||
+                (dim.state("FAD_CONTROL").name!="Configuring1" &&
+                 dim.state("FAD_CONTROL").name!="Configuring2"))
+                throw e;
+
+            console.out("");
+            console.out("Waiting for fadctrl to get configured timed out... checking for in-run FAD loss.");
+
+            var con  = sub_connections.get();
+            var stat = con.obj['status'];
+
+            console.out("Sending MCP/RESET");
+            dim.send("MCP/RESET");
+
+            dim.wait("FTM_CONTROL", "Valid",     3000);
+            dim.wait("FAD_CONTROL", "Connected", 3000);
+            dim.wait("MCP",         "Idle",      3000);
+
+            var list = [];
+            for (var i=0; i<40; i++)
+                if (stat[i]!=0x43)
+                    list.push(i);
+
+            reconnect(list, "configuration");
+
+            if (n==2)
+                throw e;
+
+            //dim.wait("MCP", "Idle", 3000);
+        }
+    }
+
+    // This is to check if we have missed the event. This can happen as
+    // a race condition when the MCP/STOP is sent by the event handler
+    // but the run was not yet fully configured.
+    var statefb = dim.state("FEEDBACK").name;
+    if (statefb=="Critical" || statefb=="OnStandby")
+    {
+        console.out("Run started by FEEDBACK in state "+statefb);
+        dim.send("MCP/STOP"); // Includes FAD_CONTROL/CLOSE_ALL_OPEN_FILES
+
+        dim.onchange['FEEDBACK'] = callback;
+
+        return true;
+    }
+
+    dim.wait("MCP", "Idle", time>0 ? time*1250 : undefined); // run time plus 25%
+
+    // REMOVE watchdog
+    dim.onchange['FEEDBACK'] = callback;
+
+    if (incomplete)
+    {
+        console.out("");
+        console.out(" - MCP:         "+dim.state("MCP").name);
+        console.out(" - FAD_CONTROL: "+dim.state("FAD_CONTROL").name);
+        console.out(" - FTM_CONTROL: "+dim.state("FTM_CONTROL").name);
+
+        dim.wait("FTM_CONTROL", "Valid",     3000);
+        dim.wait("FAD_CONTROL", "Connected", 3000);
+        dim.wait("MCP",         "Idle",      3000);
+
+        var str = incomplete.toString(2);
+        var len = str.length;
+
+        var list = [];
+        for (var i=0; i<str.length; i++)
+            if (str[str.length-i-1]=='1')
+                list.push(i);
+
+        reconnect(list, "data taking");
+
+        return false;
+    }
+
+    // FIXME: What if the ext1 is not enabled in the configuration?
+    if (type=="data")
+    {
+        var dim_trg = new Subscription("FAD_CONTROL/TRIGGER_COUNTER");
+        var counter = dim_trg.get(3000);
+
+        // The check on physics and pedestal triggers is to ensure that
+        // there was at least a chance to receive any event (e.g. in case
+        // of an interrupt this might not be the case)
+        if (counter.qos!=111 &&
+            (counter.data['N_trg']>1000 || counter.data['N_ped']>5) &&
+            counter.data['N_ext1']==0) // 'o' for open
+            throw new Error("No ext1 triggers received during data taking... please check the reason and report in the logbook.");
+        dim_trg.close();
+    }
+
+    return true;
+}
Index: branches/testFACT++branch/scripts/tests_n_examples/example_Access_of_a_service.py
===================================================================
--- branches/testFACT++branch/scripts/tests_n_examples/example_Access_of_a_service.py	(revision 18277)
+++ branches/testFACT++branch/scripts/tests_n_examples/example_Access_of_a_service.py	(revision 18277)
@@ -0,0 +1,107 @@
+'use strict';
+
+// Subscribe to the the services (returns a handle to each of them)
+var w = new Subscription("MAGIC_WEATHER/DATA");
+var x = new Subscription("TNG_WEATHER/DUST");
+var y = new Subscription("TNG_WEATHER/CLIENT_LIST");
+
+// Name which corresponds to handle
+console.out(w.name);
+
+// Wait until a valid service object is in the internal buffer
+while (!w.get(-1))
+    v8.sleep(100);
+
+// Make sure that the service description for this service is available
+// This allows to access the service values by name (access by index
+// is always possible)
+while (!w.get().obj)
+    v8.sleep(100);
+
+console.out("have data");
+
+// get the current service data
+var d = w.get();
+
+// Here is a summary:
+//    d.obj===undefined: no data received yet
+//    d.obj!==undefined, d.obj.length==0: valid names are available, received data empty (d.data===null)
+//    obj!==undefined, obj.length>0: valid names are available, data received
+//
+//    d.data===undefined: no data received yet
+//    d.data===null: event received, but contains no data
+//    d.data.length>0: event received, contains data
+
+console.out("Format: "+d.format); // Dim format string
+console.out("Counter: "+d.counter); // How many service object have been received so far?
+console.out("Time: "+d.time); // Which time is attached to the data?
+console.out("QoS: "+d.qos); // Quality-of-Service parameter
+console.out("Length: "+d.data.length); // Number of entries in data array
+console.out("Data: "+d.data); // Print array
+
+// Or to plot the whole contents, you can do
+console.out(JSON.stringify(d));
+console.out(JSON.stringify(d.data));
+console.out(JSON.stringify(d.obj));
+
+// Loop over all service properties by name
+for (var name in d.obj)
+{
+    console.out("obj." + name + "=" + d.obj[name]);
+}
+
+// Loop over all service properties by index
+for (var i=0; i<d.data.length; i++)
+{
+    console.out("data["+ i +"]="+ d.data[i]);
+}
+
+// Note that in case of formats like F:160, the entries in data
+// might be arrays themselves
+
+var cnt = d.counter;
+
+// Print counter and time
+console.out("Time: "+d.counter+" - "+d.time);
+
+// Wait until at least one new event has been received
+while (cnt==d.counter)
+{
+    v8.sleep(1000);
+    d = w.get();
+}
+
+// Print counter and time of new event (usually counter+1, but this is
+// not guranteed) We can have missed service objects
+console.out("Time: "+d.counter+" - "+d.time);
+
+// Access the Wind property of the weather data
+console.out("Wind: "+d.obj.v);
+console.out("Wind: "+d.obj['v']);
+
+// Get the dust and client_list
+var xx = x.get();
+var yy = y.get();
+
+// data contains only a single value. No array indexing required
+console.out("Dust: "+xx.data);
+console.out("CL:   "+yy.data);
+
+// Service is still open
+console.out(w.isOpen);
+
+// Close the subscription (unsubscribe from the dim-service)
+// Tells you if the service was still subscribed or not
+var rc = w.close();
+
+// Service is not subscribed anymore
+console.out(w.isOpen);
+console.out(rc)
+
+
+rc = x.close();
+console.out(rc)
+rc = y.close();
+console.out(rc)
+
+
Index: branches/testFACT++branch/scripts/tests_n_examples/test_Sun.js
===================================================================
--- branches/testFACT++branch/scripts/tests_n_examples/test_Sun.js	(revision 18277)
+++ branches/testFACT++branch/scripts/tests_n_examples/test_Sun.js	(revision 18277)
@@ -0,0 +1,16 @@
+'use strict';
+var date = new Date(); // Date in UTC
+console.out(date);
+console.out("------------------------------");
+console.out(" - no params: -");
+console.out( JSON.stringify( Sun.horizon()  ) );
+console.out('params: ("astro") ');
+console.out( JSON.stringify( Sun.horizon("astro") ) );
+console.out('params: (-12, date) ');
+console.out(JSON.stringify(Sun.horizon(-12, date ) ) ); // nautical
+console.out('params: ("FACT") ');
+console.out(JSON.stringify(Sun.horizon("FACT") ) );
+console.out("------------------------------");
+console.out("-----------time when LidOpen() will work-----------");
+console.out('nautical');
+console.out(JSON.stringify(Sun.horizon("nautical" ) ) ); // nautical
Index: branches/testFACT++branch/scripts/tests_n_examples/test_double_subscription.js
===================================================================
--- branches/testFACT++branch/scripts/tests_n_examples/test_double_subscription.js	(revision 18277)
+++ branches/testFACT++branch/scripts/tests_n_examples/test_double_subscription.js	(revision 18277)
@@ -0,0 +1,42 @@
+'use strict';
+
+// Subscribe to the the services (returns a handle to each of them)
+var w = new Subscription("MAGIC_WEATHER/DATA");
+
+// Name which corresponds to handle
+console.out(w.name);
+
+// Wait until a valid service object is in the internal buffer
+while (!w.get(-1))
+    v8.sleep(100);
+
+// Make sure that the service description for this service is available
+// This allows to access the service values by name (access by index
+// is always possible)
+while (!w.get().obj)
+    v8.sleep(100);
+
+console.out("have data");
+
+
+console.out("double subscription");
+var ww = new Subscription("MAGIC_WEATHER/DATA");
+
+console.out("closing 1st subscription.");
+
+var rc = w.close();
+
+console.out(" closing worked? "+rc);
+console.out("is 2nd subscription still open? "+ww.isOpen());
+
+if (ww.isOpen())
+{
+    console.out("was still open?! ... closing it ...");
+    ww.close();
+}
+else
+{
+    console.out("what if we close an already closed subscription?");
+    ww.close();
+}
+
Index: branches/testFACT++branch/scripts/tests_n_examples/test_if_FEEDBACK_CALIBRATION_times_out.py
===================================================================
--- branches/testFACT++branch/scripts/tests_n_examples/test_if_FEEDBACK_CALIBRATION_times_out.py	(revision 18277)
+++ branches/testFACT++branch/scripts/tests_n_examples/test_if_FEEDBACK_CALIBRATION_times_out.py	(revision 18277)
@@ -0,0 +1,13 @@
+'use strict';
+
+// DN 09.12.2012
+
+// this script tests, if FEEDBACK will really time out 
+// when started freshly, when one tries to get the CALIBRATION Service.
+
+// so this script will run fine, when FEEDBACK already had a CALIBRATION in the past
+// and it will throw an exception after the long time of 50sec, when 
+// FEEDBACK had never ever had a CALIBRATION (e.g. becauce it was started just a minute ago)
+var service_calibration = new Subscription("FEEDBACK/CALIBRATION");
+var data_calibration = service_calibration.get(50000);
+
Index: branches/testFACT++branch/scripts/tests_n_examples/throw.js
===================================================================
--- branches/testFACT++branch/scripts/tests_n_examples/throw.js	(revision 18277)
+++ branches/testFACT++branch/scripts/tests_n_examples/throw.js	(revision 18277)
@@ -0,0 +1,2 @@
+console.out("incl");
+throw new Error("test error");
Index: branches/testFACT++branch/showlog.rc
===================================================================
--- branches/testFACT++branch/showlog.rc	(revision 18277)
+++ branches/testFACT++branch/showlog.rc	(revision 18277)
@@ -0,0 +1,1 @@
+no-database=true
Index: branches/testFACT++branch/src/ByteOrder.h
===================================================================
--- branches/testFACT++branch/src/ByteOrder.h	(revision 18277)
+++ branches/testFACT++branch/src/ByteOrder.h	(revision 18277)
@@ -0,0 +1,135 @@
+#ifndef FACT_ByteOrder
+#define FACT_ByteOrder
+
+#include <string.h>
+#include <arpa/inet.h>
+
+#include <vector>
+#include <algorithm>
+#include <typeinfo>
+#include <stdexcept>
+
+template<typename S>
+void reset(S &s)
+{
+    memset(&s, 0, sizeof(S));
+}
+
+template<typename S>
+void init(S &s)
+{
+    if (sizeof(S)%2!=0)
+        throw std::logic_error("size of "+std::string(typeid(S).name())+" not a multiple of 2.");
+
+    reset(s);
+}
+
+template<typename S>
+void hton(S &s)
+{
+    std::transform(reinterpret_cast<uint16_t*>(&s),
+                   reinterpret_cast<uint16_t*>(&s)+sizeof(S)/2,
+                   reinterpret_cast<uint16_t*>(&s),
+                   htons);
+}
+
+template<typename S>
+void ntoh(S &s)
+{
+    std::transform(reinterpret_cast<uint16_t*>(&s),
+                   reinterpret_cast<uint16_t*>(&s)+sizeof(S)/2,
+                   reinterpret_cast<uint16_t*>(&s),
+                   ntohs);
+}
+
+template<typename S>
+S NtoH(const S &s)
+{
+    S ret(s);
+    ntoh(ret);
+        return ret;
+}
+
+template<typename S>
+S HtoN(const S &s)
+{
+    S ret(s);
+    hton(ret);
+    return ret;
+}
+
+template<typename S>
+void ntohcpy(const std::vector<uint16_t> &vec, S &s)
+{
+    if (sizeof(S)!=vec.size()*2)
+        throw std::logic_error("ntohcpy: size of vector mismatch "+std::string(typeid(S).name()));
+
+    std::transform(vec.begin(), vec.end(),
+                   reinterpret_cast<uint16_t*>(&s), ntohs);
+}
+
+template<typename S>
+std::vector<uint16_t> htoncpy(const S &s)
+{
+    if (sizeof(S)%2)
+        throw std::logic_error("htoncpy: size of "+std::string(typeid(S).name())+" not a multiple of 2");
+
+    std::vector<uint16_t> v(sizeof(S)/2);
+
+    std::transform(reinterpret_cast<const uint16_t*>(&s),
+                   reinterpret_cast<const uint16_t*>(&s)+sizeof(S)/2,
+                   v.begin(), htons);
+
+    return v;
+}
+
+template<typename T, typename S>
+void bitcpy(T *target, size_t ntarget, const S *source, size_t nsource, size_t ss=0, size_t ts=0)
+{
+    const size_t targetsize = ts==0 ? sizeof(T)*8 : std::min(ts, sizeof(T)*8);
+    const size_t sourcesize = ss==0 ? sizeof(S)*8 : std::min(ss, sizeof(S)*8);
+
+    const S *const ends = source + nsource;
+    const T *const endt = target + ntarget;
+
+    const S *s = source;
+    T *t = target;
+
+    memset(t, 0, sizeof(T)*ntarget);
+
+    size_t targetpos = 0;
+    size_t sourcepos = 0;
+
+    while (s<ends && t<endt)
+    {
+        // Start filling with "source size" - "position" bits
+        *t |= (*s>>sourcepos)<<targetpos;
+
+        // Calculate how many bits were siuccessfully copied
+        const int ncopy = std::min(sourcesize-sourcepos, targetsize-targetpos);
+
+        targetpos += ncopy;
+        sourcepos += ncopy;
+
+        if (sourcepos>=sourcesize)
+        {
+            sourcepos %= sourcesize;
+            s++;
+        }
+
+        if (targetpos>=targetsize)
+        {
+            targetpos %= targetsize;
+            t++;
+        }
+
+    }
+}
+
+template<typename T>
+void Reverse(T *t)
+{
+    std::reverse((uint16_t*)t, ((uint16_t*)t)+sizeof(T)/2);
+}
+
+#endif
Index: branches/testFACT++branch/src/ChatClient.h
===================================================================
--- branches/testFACT++branch/src/ChatClient.h	(revision 18277)
+++ branches/testFACT++branch/src/ChatClient.h	(revision 18277)
@@ -0,0 +1,127 @@
+#ifndef FACT_ChatClient
+#define FACT_ChatClient
+
+// **************************************************************************
+/** @class ChatClientImp
+
+@brief The base implementation for a chat client
+
+**/
+// **************************************************************************
+#include "Time.h"
+#include "MessageDim.h"
+#include "DimErrorRedirecter.h"
+
+using namespace std;
+
+class ChatClientImp : public MessageImp, public DimErrorRedirecter, public MessageDimRX
+{
+protected:
+    std::ostream &lout;          /// Output stream for local synchrounous output
+
+    int Write(const Time &t, const string &txt, int)
+    {
+        Out() << t << ": " << txt.substr(6) << endl;
+        return 0;
+    }
+
+protected:
+    // Redirect asynchronous output to the output window
+    ChatClientImp(std::ostream &out, std::ostream &in) :
+        MessageImp(out),
+        DimErrorRedirecter(static_cast<MessageImp&>(*this)),
+        MessageDimRX("CHAT", static_cast<MessageImp&>(*this)),
+        lout(in)
+    {
+        Out() << Time::fmt("%H:%M:%S");
+    }
+};
+
+// **************************************************************************
+/** @class ChatClient
+
+@brief Implements a remote control based on a Readline class for the Chat client
+
+@tparam T
+   The base class for ChatClient. Either Readline or a class
+    deriving from it. This is usually either Console or Shell.
+
+**/
+// **************************************************************************
+#include "WindowLog.h"
+#include "ReadlineColor.h"
+#include "tools.h"
+
+template <class T>
+class ChatClient : public T, public ChatClientImp
+{
+public:
+    // Redirect asynchronous output to the output window
+    ChatClient(const char *name) : T(name),
+        ChatClientImp(T::GetStreamOut(), T::GetStreamIn())
+    {
+    }
+
+    // returns whether a command should be put into the history
+    bool Process(const std::string &str)
+    {
+        if (ReadlineColor::Process(lout, str))
+            return true;
+
+        if (T::Process(str))
+            return true;
+
+        const int rc = DimClient::sendCommand("CHAT/MSG", str.c_str());
+        if (!rc)
+            lout << kRed << "ERROR - Sending message failed." << endl;
+
+        return false;
+    }
+
+    std::string GetUpdatePrompt() const
+    {
+        // If we have not cd'ed to a server show only the line start
+        return T::GetLinePrompt() + " " + (IsConnected() ? "" : "dis") + "connected> ";
+    }
+};
+
+
+
+// **************************************************************************
+/** @class ChatConsole
+
+@brief Derives the ChatClient from Control and adds a proper prompt
+
+*/
+// **************************************************************************
+#include "Console.h"
+
+class ChatConsole : public ChatClient<Console>
+{
+public:
+    ChatConsole(const char *name, bool continous=false) :
+        ChatClient<Console>(name)
+    {
+        SetContinous(continous);
+    }
+};
+
+// **************************************************************************
+/** @class ChatShell
+
+@brief Derives the ChatClient from Shell and adds colored prompt
+
+ */
+// **************************************************************************
+#include "Shell.h"
+
+class ChatShell : public ChatClient<Shell>
+{
+public:
+    ChatShell(const char *name, bool = false) :
+        ChatClient<Shell>(name)
+    {
+    }
+};
+
+#endif
Index: branches/testFACT++branch/src/Configuration.cc
===================================================================
--- branches/testFACT++branch/src/Configuration.cc	(revision 18277)
+++ branches/testFACT++branch/src/Configuration.cc	(revision 18277)
@@ -0,0 +1,1481 @@
+// **************************************************************************
+/** @class Configuration
+
+@brief Commandline parsing, resource file parsing and database access
+
+
+@section User For the user
+
+The Configuration class will process the following steps:
+
+Check the command-line for <B> --default=default.rc </B> (If no configuration
+filename is given on the command-line use \e program_name.rc instead. (Note
+that the name is retrieved from \b argv[0] and might change if you start
+the program through a symbolic link with a different name)
+
+Read the "<B>database=user:password@database:port/database</B>" entry from the file.
+(For details about the syntax see Configuration::parse_database)
+The retrieved entry can be overwritten by
+"<B>--database=user:passwd@server:port/database</B>" from the command line. If
+neither option is given no configuration data will be read from the
+database. To suppress any database access use \b --no-database.
+
+Check the command-line for <B> -C priority.rc </B>
+
+The configuration data is now evaluated from the following sources in
+the following order. Note that options from earlier source have
+priority.
+
+   - (1) Commandline options
+   - (2) Options from the high prioroty configuration-file (given by \b -C or \b --config)
+   - (3) Database entries
+   - (4) Options from the default configuration-file (given by \b --default, defaults to \b program_name.rc)
+   - (5) Options from the global configuration-file (constrctor path + \b fact++.rc)
+   - (6) Environment variables
+
+Which options are accepted is defined by the program. To get a list
+of all command-line option use \b --help. This also lists all other
+available options to list for exmaple the options available in the
+configuration files or from the databse. In addition some default options
+are available which allow to debug parsing of the options, by either printing
+the options retrieval or after parsing.
+
+Options in the configuration files must be given in the form
+
+   - key = value
+
+which is equivalent to the command-line option <B>--key=value</B>.
+
+If there are sections in the configuration file like
+
+\code
+
+   [section1]
+   key = value
+
+\endcode
+
+the key is transformed into <B>section1.key</B> (which would be equivalent
+to <B>--section1.key</B>)
+
+@attention
+In principle it is possible that an exception is thrown before options
+like \b --help are properly parsed and evaluated. In this case it is
+necessary to first resolve the problem. Usually, this mean that there
+is a design flaw in the program rather than a mistake of usage.
+
+For more details on the order in which configuration is read,
+check Configuration::Parse. For more details on the parsing itself
+see the documentation of boost::program_options.
+
+
+
+
+@section API For the programmer
+
+The Configuration class heavily uses the
+<A HREF="http://www.boost.org"><B>C++ boost library</B></A>
+and makes heavy use of the
+<A HREF="http://www.boost.org/doc/libs/release/doc/html/program_options.html">
+<B>boost::program_options</B></A>
+
+The databse access is based on the
+<A HREF="http://tangentsoft.net/mysql++/"><B>MySQL++ library</B></A>.
+
+The basic idea is to have an easy to use, but powerfull setup. The setup on
+all options is based on a special syntax of options_description. Here is an
+example:
+
+\code
+
+    int opt = 0;
+
+    po::options_description config("Section");
+    config.add_options()
+        ("option1",    var<string>(),                        "This is option1")
+        ("option2",    var<int>(22),                         "This is option2")
+        ("option3,o",  var<double>->required(),              "This option is mandatory")
+        ("option4",    var<int>(&opt),                       "This is option 4")
+        ("option5",    vars<string>(),                       "A list of strings")
+        ("option6",    vars<string>(),                       "A list of strings")
+        ("option7",    vars<string>,                         "A list of strings")
+        ("option8",    var<string>()->implicit_value("val"), "Just a string")
+        ("option9",    var<string>()->default_value("def"),  "Just a string")
+        ("optionA",    var<string>("def"),                   "Just a string")
+        ("bool",       po_bool(),                            "A special switch")
+        ;
+
+\endcode
+
+This will setup, e.g.,  the commandline option '<B>--option1 arg</B>' (which
+is identical to '<B>--option1=arg</B>'. Option 3 can also be expressed
+in a short form as '<B>-o arg</B>' or '<B>-o=arg</B>'. Option 2 defaults
+to 22 if no explicit value is given. Option 3 is mandatory and an exceptionb
+is thrown if not specified. Option 4 will, apart from the usual access to the
+option values, also store its value in the variable opt.
+
+The used functions po_*() are defined in configuration.h and are abbreviations.
+Generally speaking also other variable types are possible.
+
+If the options are displayed, e.g. by \b --help the corresponding section will
+by titled \e Section, also untitled sections are possible.
+
+If an option can be given more than once then a std::vector<type> can be used.
+Abbreviations po_ints(), po_doubles() and po_strings() are available.
+
+There are several ways to define the behaviour of the options. In the
+example above Parse will throw an exception if the "--option3" or "-o"
+option is not given. "option9" will evaluate to "def" if it is not
+given on the command line. The syntax of "optionA" is just an
+abbreviation. "option8" will evaluate to "val" if just "--option5" but
+no argument is given. Note, that these modifiers can be concatenated.
+
+A special type po_bool() is provided which is an abbreviation of
+var<bool>()->implicit_value(true)->default_value(false). In
+contradiction to po_switch() this allows to set a true and
+false value in the setup file.
+
+In addition to options introduced by a minus or double minus, so called
+positional options can be given on the command line. To describe these
+options use
+
+\code
+
+    po::positional_options_description p;
+    p.add("option5", 2); // The first 2 positional options
+    p.add("option6", 3); // The next three positional options
+    // p.add("option7", -1); // All others, if wanted
+
+\endcode
+
+This assigns option-keys to the positional options (arguments) in the
+command-line. Note that the validity of the given commandline is checked.
+Hence, this way of defining the options makes sense.
+
+As needed options_descriptions can be grouped together
+
+\code
+
+    po::options_description config1("Section1");
+    po::options_description config2("Section2");
+
+    po::options_description configall;
+    configall.add(config1);
+    configall.add(config2);
+
+\endcode
+
+The member functions of Configurations allow to define for which option
+source these options are valid. The member functions are:
+
+\code
+
+    Configuration conf;
+
+    conf.AddOptionsCommandline(configall, true);
+    conf.AddOptionsConfigfile(config1, true);
+    conf.AddOptionsDatabase(config2, true);
+
+    // To enable the mapping of the position arguments call this
+    conf.SetArgumentPositions(p);
+
+\endcode
+
+If the second option is false, the options will not be displayed in any
+\b --help directive, but are available to the user. Each of the functions
+can be called more than once. If an option should be available from
+all kind of inputs AddOptions() can be used which will call all
+four other AddOptions() functions.
+
+A special case are the options from environment variables. Since you might
+want to use the same option-key for the command-line and the environment,
+a mapping is needed (e.g. from \b PATH to \b --path). This mapping
+can be implemented by a mapping function or by the build in mapping
+and be initialized like this:
+
+\code
+
+   conf.AddEnv("path", "PATH");
+
+\endcode
+
+or
+
+\code
+
+   const string name_mapper(const string str)
+   {
+      return str=="PATH" ? "path" : "";
+   }
+
+   conf.SetNameMapper(name_mapper);
+
+\endcode
+
+Assuming all the above is done in a function calles SetupConfiguration(),
+a simple program to demonstrate the power of the class could look like this:
+
+\code
+
+   int main(int argc, char **argv)
+   {
+       int opt;
+
+       Configuration conf(argv[0]);
+       SetupConfiguration(conf, opt);
+
+       po::variables_map vm;
+       try
+       {
+          vm = conf.Parse(argc, argv);
+       }
+       catch (std::exception &e)
+       {
+           po::multiple_occurrences *MO = dynamic_cast<po::multiple_occurrences*>(&e);
+           if (MO)
+               cout << "Error: " << e.what() << " of '" << MO->get_option_name() << "' option." << endl;
+           else
+               cout << "Error: " << e.what() << endl;
+           cout << endl;
+
+           return -1;
+       }
+
+       cout << "Opt1: " << conf.GetString("option1") << endl;
+       cout << "Opt2: " << conf.GetInt("option2") << endl;
+       cout << "Opt3: " << conf.GetDouble("option3") << endl;
+       cout << "Opt4: " << opt << endl;
+
+       return 0;
+   }
+
+\endcode
+
+Another possibility to access the result is the direct approach, for example:
+
+\code
+
+   vector<int>    i   = vm["option2"].as<int>();
+   vector<string> vec = vm["option6"].as<vector<string>>();
+
+\endcode
+
+Note that accessing an option which was not given will throw an exception.
+Therefor its availability should first be checked in one of the following
+ways:
+
+\code
+
+   bool has_option1 = vm.count("option1");
+   bool has_option2 = conf.Has("option2");
+
+\endcode
+
+@section Extensions
+
+The configuration interpreter can be easily extended to new types, for example:
+
+\code
+
+template<class T,class S> // Just for the output
+   std::ostream &operator<<(std::ostream &out, const pair<T,S> &f)
+   {
+       out << f.first << "|" << f.second;
+       return out;
+   }
+
+template<class T, class S> // Needed to convert the option
+   std::istream &operator>>(std::istream &in,  pair<T,S> &f)
+   {
+       char c;
+       in >> f.first;
+       in >> c;
+       if (c!=':')
+           return in;
+       in >> f.second;
+       return in;
+   }
+
+typedef pair<int,int> mytype; // Type definition
+
+void main(int argc, char **argv)
+{
+   po::options_description config("Configuration");
+   config.add_options()
+        ("mytype", var<mytype>(), "my new type")
+        ;
+
+   Configuration conf;
+   conf.AddOptionsCommandline(config);
+   conf.Parse(argc, argv);
+
+   cout << conf.Get<mytype>("mytype") << endl;
+}
+
+\endcode
+
+@section Examples
+
+ - An example can be found in \ref argv.cc
+
+@todo
+
+ - Maybe we should remove the necessity to propagate argv[0] in the constructor?
+ - Add an option to the constructor to switch of database/file access
+
+*/
+// **************************************************************************
+#include "Configuration.h"
+
+#include <fstream>
+#include <iostream>
+#include <iomanip>
+
+#include <boost/filesystem.hpp>
+
+#ifdef HAVE_SQL
+#include "Database.h"
+#endif
+
+using namespace std;
+
+namespace style = boost::program_options::command_line_style;
+
+// --------------------------------------------------------------------------
+//
+//!  The purpose of this function is basically to connect to the database,
+//!  and retrieve all the options entries from the 'Configuration' table.
+//!
+//!  @param database
+//!      The URL of the database from which the configuration data is
+//!      retrieved. It should be given in the form
+//!          \li [user[:password]@]server.com[:port]/database
+//!
+//!      with
+//!          - user:     user name (default is the current user)
+//!          - password: necessary if required by the database rights
+//!          - server:   the URL of the server (can be 'localhost')
+//!          - port:     the port to which to connect (usually obsolete)
+//!          - database: The name of the database containing the table
+//!
+//!  @param desc
+//!     A reference to the object with the description of the options
+//!     which should be retrieved.
+//!
+//!  @param allow_unregistered
+//!     If this is true also unregistered, i.e. options unknown to desc,
+//!     are returned. Otherwise an exception is thrown if such an option
+//!     was retrieved.
+//!
+//!  @return
+//!     Return an object of type basic_parsed_options containing all
+//!     the entries retrieved from the database. Options not found in
+//!     desc are flagged as unregistered.
+//!
+//!  @throws
+//!     Two types of exceptions are thrown
+//!        - It thows an unnamed exception if the options could not be
+//!          retrieved properly from the databse.
+//!        - If an option is not registered within the given descriptions
+//!          and \b allow_unregistered is \b false, an exception of type
+//!          \b  po::unknown_option is thrown.
+//!
+//!  @todo
+//!     - The exceptions handling should be improved.
+//!     - The final database layout is missing in the description
+//!     - Shell we allow options to be given more than once?
+//
+#ifdef HAVE_SQL
+po::basic_parsed_options<char>
+    Configuration::parse_database(const string &prgname, const string &database, const po::options_description& desc, bool allow_unregistered)
+{
+    Database db(database);
+
+    cerr << "Connected to '" << db.uri() << "' for " << prgname << endl;
+
+    const mysqlpp::StoreQueryResult res =
+        db.query("SELECT CONCAT(fKey1,fKey2), fValue "
+                 "FROM ProgramOption "
+                 "WHERE fCounter=(SELECT MAX(fCounter) FROM History) "
+                 "AND NOT ISNULL(fValue) "
+                 "AND (fProgram='"+prgname+"' OR fProgram='*')").store();
+
+    set<string> allowed_options;
+
+    const vector<boost::shared_ptr<po::option_description>> &options = desc.options();
+    for (unsigned i=0; i<options.size(); ++i)
+    {
+        const po::option_description &d = *options[i];
+        if (d.long_name().empty())
+            boost::throw_exception(po::error("long name required for database"));
+
+        allowed_options.insert(d.long_name());
+    }
+
+    po::parsed_options result(&desc);
+
+    for (vector<mysqlpp::Row>::const_iterator v=res.begin(); v<res.end(); v++)
+    {
+        const string key = (*v)[0].c_str();
+        if (key.empty())  // key  == > Throw exception
+            continue;
+
+        // Check if we are allowed to accept unregistered options,
+        // i.e. options which are not in options_description &desc.
+        const bool unregistered = allowed_options.find(key)==allowed_options.end();
+        if (unregistered && allow_unregistered)
+            boost::throw_exception(po::unknown_option(key));
+
+        // Create a key/value-pair and store whether it is a
+        // registered option of not
+        po::option n;
+        n.string_key = key;
+        // This is now identical to file parsing. What if we want
+        // to concatenate options like on the command line?
+        n.value.clear();          // Fixme: composing?
+        n.value.push_back((*v)[1].c_str());
+        //n.unregistered = unregistered;
+
+        // If any parsing will be done in the future...
+        //n.value().original_tokens.clear();
+        //n.value().original_tokens.push_back(name);
+        //n.value().original_tokens.push_back(value);
+
+        result.options.push_back(n);
+    }
+
+    return result;
+}
+#else
+po::basic_parsed_options<char>
+    Configuration::parse_database(const string &, const string &, const po::options_description &desc, bool)
+{
+    return po::parsed_options(&desc);
+}
+#endif
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+Configuration::Configuration(const string &prgname) : fName(UnLibToolize(prgname)),
+fNameMapper(bind1st(mem_fun(&Configuration::DefaultMapper), this)),
+fPrintUsage(bind(&Configuration::PrintUsage, this))
+{
+    po::options_description generic("Generic options");
+    generic.add_options()
+        ("version,V",           "Print version information.")
+        ("help",                "Print available commandline options.")
+        ("help-environment",    "Print available environment variables.")
+        ("help-database",       "Print available options retreived from the database.")
+        ("help-config",         "Print available configuration file options.")
+        ("print-all",           "Print all options as parsed from all the different sources.")
+        ("print",               "Print options as parsed from the commandline.")
+        ("print-default",       "Print options as parsed from default configuration file.")
+        ("print-database",      "Print options as retrieved from the database.")
+        ("print-config",        "Print options as parsed from the high priority configuration file.")
+        ("print-environment",   "Print options as parsed from the environment.")
+        ("print-unknown",       "Print unrecognized options.")
+        ("print-options",       "Print options as passed to program.")
+        ("print-wildcards",     "Print all options registered with wildcards.")
+        ("dont-check",          "Do not check validity of options from files and database.")
+        ("dont-check-files",    "Do not check validity of options from files.")
+        ("dont-check-database", "Do not check validity of options from database.")
+        ;
+
+    po::options_description def_config;
+    def_config.add_options()
+        ("default",  var<string>(fName+string(".rc")), "Default configuration file.")
+        ;
+
+    po::options_description config("Configuration options");
+    config.add_options()
+        ("config,C",    var<string>(), "Configuration file overwriting options retrieved from the database.")
+        ("database",    var<string>(), "Database link as in\n\t[user[:password]@]server.com[:port]/database\nOverwrites options from the default configuration file.")
+        ("no-database",                "Suppress any access to the database even if a database URL was set.")
+        ;
+
+    fOptionsCommandline[kVisible].add(generic);
+    fOptionsCommandline[kVisible].add(config);
+    fOptionsCommandline[kVisible].add(def_config);
+    fOptionsConfigfile[kVisible].add(config);
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+void Configuration::PrintParsed(const po::parsed_options &parsed) const
+{
+    const vector< po::basic_option<char> >& options = parsed.options;
+
+    // .description -> Pointer to opt_commandline
+    // const std::vector< shared_ptr<option_description> >& options() const;
+
+    //const std::string& key(const std::string& option) const;
+    //const std::string& long_name() const;
+    //const std::string& description() const;
+    //shared_ptr<const value_semantic> semantic() const;
+
+    int maxlen = 0;
+    for (unsigned i=0; i<options.size(); ++i)
+    {
+        const po::basic_option<char> &opt = options[i];
+
+        if (opt.value.size()>0 && opt.string_key[0]!='-')
+            Max(maxlen, opt.string_key.length());
+    }
+
+    cout.setf(ios_base::left);
+
+    // =============> Implement prining of parsed options
+    for(unsigned i=0; i<options.size(); ++i)
+    {
+        const po::basic_option<char> &opt = options[i];
+
+        if (opt.value.size()==0 && !opt.string_key[0]=='-')
+            cout << "--";
+        cout << setw(maxlen) << opt.string_key;
+        if (opt.value.size()>0)
+            cout << " = " << opt.value[0];
+
+        //for (int j=0; j<options[i].value.size(); j++)
+        //    cout << "\t = " << options[i].value[j];
+        //cout << "/" << options[i].original_tokens[0];
+
+        ostringstream com;
+
+        if (opt.position_key>=0)
+            com << " [position=" << opt.position_key << "]";
+        if (opt.unregistered)
+            com << " [unregistered]";
+
+        if (!com.str().empty())
+            cout << "  # " << com.str();
+
+        cout << endl;
+    }
+}
+
+template<class T>
+string Configuration::VecAsStr(const po::variable_value &v) const
+{
+    ostringstream str;
+
+    const vector<T> vec = v.as<vector<T>>();
+    for (typename std::vector<T>::const_iterator s=vec.begin(); s<vec.end(); s++)
+        str << " " << *s;
+
+    return str.str().substr(1);
+}
+
+string Configuration::VarAsStr(const po::variable_value &v) const
+{
+    if (v.value().type()==typeid(bool))
+        return v.as<bool>() ? "yes ": "no";
+
+    if (v.value().type()==typeid(string))
+        return v.as<string>();
+
+    if (v.value().type()==typeid(int16_t))
+        return to_string((long long int)v.as<int16_t>());
+
+    if (v.value().type()==typeid(int32_t))
+        return to_string((long long int)v.as<int32_t>());
+
+    if (v.value().type()==typeid(int64_t))
+        return to_string((long long int)v.as<int64_t>());
+
+    if (v.value().type()==typeid(uint16_t))
+        return to_string((long long unsigned int)v.as<uint16_t>());
+
+    if (v.value().type()==typeid(uint32_t))
+        return to_string((long long unsigned int)v.as<uint32_t>());
+
+    if (v.value().type()==typeid(uint64_t))
+        return to_string((long long unsigned int)v.as<uint64_t>());
+
+    if (v.value().type()==typeid(float))
+        return to_string((long double)v.as<float>());
+
+    if (v.value().type()==typeid(double))
+        return to_string((long double)v.as<double>());
+
+    if (v.value().type()==typeid(vector<string>))
+        return VecAsStr<string>(v);
+
+    if (v.value().type()==typeid(vector<int16_t>))
+        return VecAsStr<int16_t>(v);
+
+    if (v.value().type()==typeid(vector<int32_t>))
+        return VecAsStr<int32_t>(v);
+
+    if (v.value().type()==typeid(vector<int64_t>))
+        return VecAsStr<int64_t>(v);
+
+    if (v.value().type()==typeid(vector<uint16_t>))
+        return VecAsStr<uint16_t>(v);
+
+    if (v.value().type()==typeid(vector<uint32_t>))
+        return VecAsStr<uint32_t>(v);
+
+    if (v.value().type()==typeid(vector<uint64_t>))
+        return VecAsStr<uint64_t>(v);
+
+    if (v.value().type()==typeid(vector<float>))
+        return VecAsStr<float>(v);
+
+    if (v.value().type()==typeid(vector<double>))
+        return VecAsStr<double>(v);
+
+    ostringstream str;
+    str << hex << setfill('0') << "0x";
+    if (v.value().type()==typeid(Hex<uint16_t>))
+        str << setw(4) << v.as<Hex<uint16_t>>();
+
+    if (v.value().type()==typeid(Hex<uint32_t>))
+        str << setw(8) << v.as<Hex<uint32_t>>();
+
+    if (v.value().type()==typeid(Hex<uint64_t>))
+        str << setw(16) << v.as<Hex<uint64_t>>();
+
+    return str.str();
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+void Configuration::PrintOptions() const
+{
+    cout << "Options propagated to program:" << endl;
+
+    int maxlen = 0;
+    for (map<string,po::variable_value>::const_iterator m=fVariables.begin();
+         m!=fVariables.end(); m++)
+        Max(maxlen, m->first.length());
+
+    cout.setf(ios_base::left);
+
+    // =============> Implement prining of options in use
+    for (map<string,po::variable_value>::const_iterator m=fVariables.begin();
+         m!=fVariables.end(); m++)
+    {
+        const po::variable_value &v = m->second;
+
+        ostringstream str;
+
+        if (v.value().type()==typeid(bool))
+            str << " bool";
+        if (v.value().type()==typeid(string))
+            str << " string";
+        if (v.value().type()==typeid(int16_t))
+            str << " int16_t";
+        if (v.value().type()==typeid(int32_t))
+            str << " int32_t";
+        if (v.value().type()==typeid(int64_t))
+            str << " int64_t";
+        if (v.value().type()==typeid(uint16_t))
+            str << " uint16_t";
+        if (v.value().type()==typeid(uint32_t))
+            str << " uint32_t";
+        if (v.value().type()==typeid(uint64_t))
+            str << " uint64_t";
+        if (v.value().type()==typeid(float))
+            str << " float";
+        if (v.value().type()==typeid(double))
+            str << " double";
+        if (v.value().type()==typeid(Hex<uint16_t>))
+            str << " Hex<uint16_t>";
+        if (v.value().type()==typeid(Hex<uint32_t>))
+            str << " Hex<uint32_t>";
+        if (v.value().type()==typeid(Hex<uint64_t>))
+            str << " Hex<uint64_t>";
+        if (v.value().type()==typeid(vector<string>))
+            str << " vector<string>";
+        if (v.value().type()==typeid(vector<int16_t>))
+            str << " vector<int16_t>";
+        if (v.value().type()==typeid(vector<int32_t>))
+            str << " vector<int32_t>";
+        if (v.value().type()==typeid(vector<int64_t>))
+            str << " vector<int64_t>";
+        if (v.value().type()==typeid(vector<uint16_t>))
+            str << " vector<uint16_t>";
+        if (v.value().type()==typeid(vector<uint32_t>))
+            str << " vector<uint32_t>";
+        if (v.value().type()==typeid(vector<uint64_t>))
+            str << " vector<uint64_t>";
+        if (v.value().type()==typeid(vector<float>))
+            str << " vector<float>";
+        if (v.value().type()==typeid(vector<double>))
+            str << " vector<double>";
+
+        if (str.str().empty())
+            str << " unknown[" << v.value().type().name() << "]";
+
+        const string var = VarAsStr(v);
+        cout << setw(maxlen) << m->first;
+        if (!var.empty())
+            cout << " = ";
+        cout << var << "   #" << str.str();
+
+        if (v.defaulted())
+            cout << " [default]";
+        if (v.empty())
+            cout << " [empty]";
+
+        cout << endl;
+    }
+
+    cout << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+void Configuration::PrintUnknown(const vector<string> &vec, int steps) const
+{
+    for (vector<string>::const_iterator v=vec.begin(); v<vec.end(); v+=steps)
+        cout << " " << *v << endl;
+    cout << endl;
+}
+
+multimap<string, string> Configuration::GetOptions() const
+{
+    multimap<string,string> rc;
+
+    for (map<string,po::variable_value>::const_iterator m=fVariables.begin();
+         m!=fVariables.end(); m++)
+        rc.insert(make_pair(m->first, VarAsStr(m->second)));
+
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+void Configuration::PrintUnknown() const
+{
+    if (!fUnknownCommandline.empty())
+    {
+        cout << "Unknown commandline options:" << endl;
+        PrintUnknown(fUnknownCommandline);
+    }
+
+    if (!fUnknownConfigfile.empty())
+    {
+        cout << "Unknown options in configfile:" << endl;
+        PrintUnknown(fUnknownConfigfile, 2);
+    }
+
+    if (!fUnknownEnvironment.empty())
+    {
+        cout << "Unknown environment variables:" << endl;
+        PrintUnknown(fUnknownEnvironment);
+    }
+
+    if (!fUnknownDatabase.empty())
+    {
+        cout << "Unknown database entry:" << endl;
+        PrintUnknown(fUnknownDatabase);
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+void Configuration::AddOptionsCommandline(const po::options_description &cl, bool visible)
+{
+    fOptionsCommandline[visible].add(cl);
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+void Configuration::AddOptionsConfigfile(const po::options_description &cf, bool visible)
+{
+    fOptionsConfigfile[visible].add(cf);
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+void Configuration::AddOptionsEnvironment(const po::options_description &env, bool visible)
+{
+    fOptionsEnvironment[visible].add(env);
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+void Configuration::AddOptionsDatabase(const po::options_description &db, bool visible)
+{
+    fOptionsDatabase[visible].add(db);
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+void Configuration::SetArgumentPositions(const po::positional_options_description &desc)
+{
+    fArgumentPositions = desc;
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+void Configuration::SetNameMapper(const function<string(string)> &func)
+{
+    fNameMapper = func;
+}
+
+void Configuration::SetNameMapper()
+{
+    fNameMapper = bind1st(mem_fun(&Configuration::DefaultMapper), this);
+}
+
+void Configuration::SetPrintUsage(const function<void(void)> &func)
+{
+    fPrintUsage = func;
+}
+
+void Configuration::SetPrintUsage()
+{
+    fPrintUsage = bind(&Configuration::PrintUsage, this);
+}
+
+void Configuration::SetPrintVersion(const function<void(const string&)> &func)
+{
+    fPrintVersion = func;
+}
+
+void Configuration::SetPrintVersion()
+{
+    fPrintVersion = function<void(const string&)>();
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//! The idea of the Parse() memeber-function is to parse the command-line,
+//! the configuration files, the databse and the environment and return
+//! a proper combined result.
+//!
+//! In details the following actions are performed in the given order:
+//!
+//!  - (0)  Init local variables with the list of options described by the
+//!         data members.
+//!  - (1)  Reset the data members fPriorityFile, fDefaultFile, fDatabase
+//!  - (2)  Parse the command line
+//!  - (3)  Check for \b --help* command-line options and performe
+//!         corresponding action
+//!  - (4)  Check for \b --print and \b --print-all and perform corresponding
+//!         action
+//!  - (5)  Read and parse the global configuration file, which is compiled
+//!         from the path corresponding to the argument given in the
+//!         constructor + "/fact++.rc", unrecognized options are always
+//!         allowed. Note that in contradiction to all other options
+//!         the options in this file are not checked at all. Hence,
+//!         typos might stay unnoticed.
+//!  - (6)  Read and parse the default configuration file, which is either
+//!         given by the default name or the \b --default command-line
+//!         option. The default name is compiled from the argument
+//!         given to the constructor and ".rc".  If the file-name is
+//!         identical to the default (no command-line option given)
+//!         a missing configuration file is no error. Depending on
+//!         the \b --dont-check and \b --dont-check-files options,
+//!         unrecognized options in the file throw an exception or not.
+//!  - (7)  Check for \b --print-default and \b --print-all and perform
+//!         corresponding action
+//!  - (8)  Read and parse the priority configuration file, which must be given
+//!         by the \b --config or \b -C command-line option or a
+//!         corresponding entry in the default-configuration file.
+//!         If an option on the command-line and the in the configuration
+//!         file exists, the command-line option has priority.
+//!         If none is given, no priority file is read. Depending on
+//!         the \b --dont-check and \b --dont-check-files options,
+//!         unrecognized options in the file throw an exception or not.
+//!  - (9)  Check for \b --print-config and \b --print-all and perform
+//!         corresponding action
+//!  - (10) Retrieve options from the database according to the
+//!         options \b --database and \b --no-database. Note that
+//!         options given on the command-line have highest priority.
+//!         The second priority is the priority-configuration file.
+//!         The options from the default configuration-file have
+//!         lowest priority.
+//!  - (11) Check for \b --print-database and \b --print-all and perform
+//!         corresponding action
+//!  - (12)  Parse the environment options.
+//!  - (13) Check for \b --print-environment and \b --print-all and perform
+//!         corresponding action
+//!  - (14) Compile the final result. The priority of the options is (in
+//!         decreasing order): command-line options, options from the
+//!         priority configuration file, options from the database,
+//!         options from the default configuration-file and options
+//!         from the environment.
+//!  - (15) Find all options which were found and flagged as unrecognized,
+//!         because they are not in the user-defined list of described
+//!         options, are collected and stored in the corresponding
+//!         data-members.
+//!  - (16) Find all options which where registered with wildcards and
+//!         store the list in fWildcardOptions.
+//!  - (17) Before the function returns it check for \b --print-options
+//!         and \b --print-unknown and performs the corresponding actions.
+//!
+//!
+//! @param argc,argv
+//!    arguments passed to <B>main(int argc, char **argv)</B>
+//!
+//! @returns
+//!    A reference to the list with the resulting options with their
+//!    values.
+//!
+//! @todo
+//!    - describe the exceptions
+//!    - describe what happens in a more general way
+//!    - print a waring when no default coonfig file is read
+//!    - proper handling and error messages if files not available
+//
+const po::variables_map &Configuration::Parse(int argc, const char **argv, const std::function<void()> &PrintHelp)
+{
+    const po::positional_options_description &opt_positional = fArgumentPositions;
+
+    // ------------------------ (0) --------------------------
+#ifdef DEBUG
+    cout << "--0--" << endl;
+#endif
+
+    po::options_description opt_commandline;
+    po::options_description opt_configfile;
+    po::options_description opt_environment;
+    po::options_description opt_database;
+
+    for (int i=0; i<2; i++)
+    {
+        opt_commandline.add(fOptionsCommandline[i]);
+        opt_configfile.add(fOptionsConfigfile[i]);
+        opt_environment.add(fOptionsEnvironment[i]);
+        opt_database.add(fOptionsDatabase[i]);
+    }
+
+    // ------------------------ (1) --------------------------
+#ifdef DEBUG
+    cout << "--1--" << endl;
+#endif
+
+    fPriorityFile = "";
+    fDefaultFile  = "";
+    fDatabase     = "";
+
+    // ------------------------ (2) --------------------------
+#ifdef DEBUG
+    cout << "--2--" << endl;
+#endif
+
+    po::command_line_parser parser(argc, const_cast<char**>(argv));
+    parser.options(opt_commandline);
+    parser.positional(opt_positional);
+    parser.style(style::unix_style&~style::allow_guessing);
+    //parser.allow_unregistered();
+
+    const po::parsed_options parsed_commandline = parser.run();
+
+    // ------------------------ (3) --------------------------
+#ifdef DEBUG
+    cout << "--3--" << endl;
+#endif
+
+    po::variables_map getfiles;
+    po::store(parsed_commandline, getfiles);
+
+    if (getfiles.count("version"))
+        PrintVersion();
+    if (getfiles.count("help"))
+    {
+        fPrintUsage();
+        cout <<
+            "Options:\n"
+            "The following describes the available commandline options. "
+            "For further details on how command line option are parsed "
+            "and in which order which configuration sources are accessed "
+            "please refer to the class reference of the Configuration class." << endl;
+        cout << fOptionsCommandline[kVisible] << endl;
+    }
+    if (getfiles.count("help-config"))
+        cout << fOptionsConfigfile[kVisible] << endl;
+    if (getfiles.count("help-env"))
+        cout << fOptionsEnvironment[kVisible] << endl;
+    if (getfiles.count("help-database"))
+        cout << fOptionsDatabase[kVisible] << endl;
+
+
+
+    // ------------------------ (4) --------------------------
+#ifdef DEBUG
+    cout << "--4--" << endl;
+#endif
+
+    if (getfiles.count("print") || getfiles.count("print-all"))
+    {
+        cout << endl << "Parsed commandline options:" << endl;
+        PrintParsed(parsed_commandline);
+        cout << endl;
+    }
+
+    if (getfiles.count("help")     || getfiles.count("help-config") ||
+        getfiles.count("help-env") || getfiles.count("help-database"))
+    {
+        if (PrintHelp)
+            PrintHelp();
+    }
+
+    // ------------------------ (5) --------------------------
+#ifdef DEBUG
+    cout << "--5--" << endl;
+#endif
+
+    const boost::filesystem::path path(GetName());
+    const string globalfile = (path.parent_path()/boost::filesystem::path("fact++.rc")).string();
+
+    cerr << "Reading global  options from '" << globalfile << "'." << endl;
+
+    ifstream gfile(globalfile.c_str());
+    // ===> FIXME: Proper handling of missing file or wrong file name
+    const po::parsed_options parsed_globalfile =
+        !gfile ?
+        po::parsed_options(&opt_configfile) :
+        po::parse_config_file<char>(gfile, opt_configfile, true);
+
+    // ------------------------ (6) --------------------------
+#ifdef DEBUG
+    cout << "--6--" << endl;
+#endif
+
+    // Get default file from command line
+    if (getfiles.count("default"))
+    {
+        fDefaultFile = getfiles["default"].as<string>();
+        cerr << "Reading default options from '" << fDefaultFile << "'." << endl;
+    }
+
+    const bool checkf    = !getfiles.count("dont-check-files") && !getfiles.count("dont-check");
+    const bool defaulted = getfiles.count("default") && getfiles["default"].defaulted();
+    //const bool exists    = boost::filesystem::exists(fDefaultFile);
+
+    ifstream indef(fDefaultFile.c_str());
+    // ===> FIXME: Proper handling of missing file or wrong file name
+    const po::parsed_options parsed_defaultfile =
+        !indef && defaulted ?
+        po::parsed_options(&opt_configfile) :
+        po::parse_config_file<char>(indef, opt_configfile, !checkf);
+
+    // ------------------------ (7) --------------------------
+#ifdef DEBUG
+    cout << "--7--" << endl;
+#endif
+
+    if (getfiles.count("print-default") || getfiles.count("print-all"))
+    {
+        if (!indef.is_open() && defaulted)
+            cout << "No configuration file by --default option specified." << endl;
+        else
+        {
+            cout << endl << "Parsed options from '" << fDefaultFile << "':" << endl;
+            PrintParsed(parsed_defaultfile);
+            cout << endl;
+        }
+    }
+
+    po::store(parsed_defaultfile, getfiles);
+
+    // ------------------------ (8) --------------------------
+#ifdef DEBUG
+    cout << "--8--" << endl;
+#endif
+
+    // Get priority from commandline(1), defaultfile(2)
+    if (getfiles.count("config"))
+    {
+        fPriorityFile = getfiles["config"].as<string>();
+        cerr << "Reading config options from '" << fPriorityFile << "'." << endl;
+    }
+
+    ifstream inpri(fPriorityFile.c_str());
+    // ===> FIXME: Proper handling of missing file or wrong file name
+    const po::parsed_options parsed_priorityfile =
+        fPriorityFile.empty() ? po::parsed_options(&opt_configfile) :
+        po::parse_config_file<char>(inpri, opt_configfile, !checkf);
+
+    // ------------------------ (9) --------------------------
+#ifdef DEBUG
+    cout << "--9--" << endl;
+#endif
+
+    if (getfiles.count("print-config") || getfiles.count("print-all"))
+    {
+        if (fPriorityFile.empty())
+            cout << "No configuration file by --config option specified." << endl;
+        else
+        {
+            cout << endl << "Parsed options from '" << fPriorityFile << "':" << endl;
+            PrintParsed(parsed_priorityfile);
+            cout << endl;
+        }
+    }
+
+    // ------------------------ (10) -------------------------
+#ifdef DEBUG
+    cout << "--10--" << endl;
+#endif
+
+    po::variables_map getdatabase;
+    po::store(parsed_commandline,  getdatabase);
+    po::store(parsed_priorityfile, getdatabase);
+    po::store(parsed_defaultfile,  getdatabase);
+    po::store(parsed_globalfile,   getdatabase);
+
+    if (getdatabase.count("database") && !getdatabase.count("no-database"))
+    {
+        fDatabase = getdatabase["database"].as<string>();
+        cerr << "Requesting options from database for '" << fName << "'" << endl;
+    }
+
+    const bool checkdb = !getdatabase.count("dont-check-database") && !getdatabase.count("dont-check");
+
+    const po::parsed_options parsed_database =
+        fDatabase.empty() ? po::parsed_options(&opt_database) :
+#if BOOST_VERSION < 104600
+        parse_database(path.filename(), fDatabase, opt_database, !checkdb);
+#else
+        parse_database(path.filename().string(), fDatabase, opt_database, !checkdb);
+#endif
+    // ------------------------ (11) -------------------------
+#ifdef DEBUG
+    cout << "--11--" << endl;
+#endif
+
+    if (getfiles.count("print-database") || getfiles.count("print-all"))
+    {
+        if (fDatabase.empty())
+            cout << "No database access requested." << endl;
+        else
+        {
+            cout << endl << "Options received from '" << fDatabase << "':" << endl;
+            PrintParsed(parsed_database);
+            cout << endl;
+        }
+    }
+
+    // ------------------------ (12) -------------------------
+#ifdef DEBUG
+    cout << "--12--" << endl;
+#endif
+
+    const po::parsed_options parsed_environment = po::parse_environment(opt_environment, fNameMapper);
+
+    // ------------------------ (13) -------------------------
+#ifdef DEBUG
+    cout << "--13--" << endl;
+#endif
+
+    if (getfiles.count("print-environment"))
+    {
+        cout << "Parsed options from environment:" << endl;
+        PrintParsed(parsed_environment);
+        cout << endl;
+    }
+
+    // ------------------------ (14) -------------------------
+#ifdef DEBUG
+    cout << "--14--" << endl;
+#endif
+
+    po::variables_map result;
+    po::store(parsed_commandline,  result);
+    po::store(parsed_priorityfile, result);
+    po::store(parsed_database,     result);
+    po::store(parsed_defaultfile,  result);
+    po::store(parsed_globalfile,   result);
+    po::store(parsed_environment,  result);
+    po::notify(result);
+
+    fVariables = result;
+
+    // ------------------------ (15) -------------------------
+#ifdef DEBUG
+    cout << "--15--" << endl;
+#endif
+
+    const vector<string> unknown0 = collect_unrecognized(parsed_globalfile.options,   po::exclude_positional);
+    const vector<string> unknown1 = collect_unrecognized(parsed_defaultfile.options,  po::exclude_positional);
+    const vector<string> unknown2 = collect_unrecognized(parsed_priorityfile.options, po::exclude_positional);
+
+    fUnknownConfigfile.clear();
+    fUnknownConfigfile.insert(fUnknownConfigfile.end(), unknown0.begin(), unknown0.end());
+    fUnknownConfigfile.insert(fUnknownConfigfile.end(), unknown1.begin(), unknown1.end());
+    fUnknownConfigfile.insert(fUnknownConfigfile.end(), unknown2.begin(), unknown2.end());
+
+    fUnknownCommandline = collect_unrecognized(parsed_commandline.options, po::exclude_positional);
+    fUnknownEnvironment = collect_unrecognized(parsed_environment.options, po::exclude_positional);
+    fUnknownDatabase    = collect_unrecognized(parsed_database.options, po::exclude_positional);
+
+    // ------------------------ (16) -------------------------
+#ifdef DEBUG
+    cout << "--16--" << endl;
+#endif
+
+    CreateWildcardOptions();
+
+    // ------------------------ (17) -------------------------
+#ifdef DEBUG
+    cout << "--17--" << endl;
+#endif
+
+    if (result.count("print-options"))
+        PrintOptions();
+
+    if (result.count("print-wildcards"))
+        PrintWildcardOptions();
+
+    if (result.count("print-unknown"))
+        PrintUnknown();
+
+#ifdef DEBUG
+    cout << "------" << endl;
+#endif
+
+    return fVariables;
+}
+
+bool Configuration::DoParse(int argc, const char **argv, const std::function<void()> &PrintHelp)
+{
+    try
+    {
+        Parse(argc, argv, PrintHelp);
+    }
+#if BOOST_VERSION > 104000
+    catch (po::multiple_occurrences &e)
+    {
+        cerr << "Program options invalid due to: " << e.what() << " of '" << e.get_option_name() << "'." << endl;
+        return false;
+    }
+#endif
+    catch (exception& e)
+    {
+        cerr << "Program options invalid due to: " << e.what() << endl;
+        return false;
+    }
+
+    return !HasVersion() && !HasPrint() && !HasHelp();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Create a list of all options which were registered using wildcards
+//!
+void Configuration::CreateWildcardOptions()
+{
+    po::options_description opts;
+
+    for (int i=0; i<2; i++)
+    {
+        opts.add(fOptionsCommandline[i]);
+        opts.add(fOptionsConfigfile[i]);
+        opts.add(fOptionsEnvironment[i]);
+        opts.add(fOptionsDatabase[i]);
+    }
+
+    fWildcardOptions.clear();
+
+    typedef map<string,po::variable_value> Vars;
+    typedef vector<boost::shared_ptr<po::option_description>> Descs;
+
+    const Descs &desc = opts.options();
+
+    for (Vars::const_iterator io=fVariables.begin(); io!=fVariables.end(); io++)
+    {
+        for (Descs::const_iterator id=desc.begin(); id!=desc.end(); id++)
+#if BOOST_VERSION > 104000
+            if ((*id)->match(io->first, false, false, false)==po::option_description::approximate_match)
+#else
+            if ((*id)->match(io->first, false)==po::option_description::approximate_match)
+#endif
+                fWildcardOptions[io->first] = (*id)->long_name();
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! Print a list of all options which were registered using wildcards and
+//! have not be registered subsequently by access.
+//!
+void Configuration::PrintWildcardOptions() const
+{
+    cout << "Options registered with wildcards and not yet accessed:" << endl;
+
+    size_t max = 0;
+    for (auto it=fWildcardOptions.begin(); it!=fWildcardOptions.end(); it++)
+        if (it->second.length()>max)
+            max = it->second.length();
+
+    cout.setf(ios_base::left);
+    for (auto it=fWildcardOptions.begin(); it!=fWildcardOptions.end(); it++)
+        cout << setw(max+1) << it->second << " : " << it->first <<endl;
+}
+
+const vector<string> Configuration::GetWildcardOptions(const std::string &opt) const
+{
+    vector<string> rc;
+
+    for (auto it=fWildcardOptions.begin(); it!=fWildcardOptions.end(); it++)
+    {
+        if (it->second == opt)
+            rc.push_back(it->first);
+    }
+
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Removes /.libs/lt- from a path or just lt- from the filename.
+//!
+//! @param src
+//!    input path with filename
+//! @returns
+//!    path cleaned from libtool extensions
+//!
+string Configuration::UnLibToolize(const string &src) const
+{
+    const boost::filesystem::path path(src);
+
+    string pname = path.parent_path().string();
+#if BOOST_VERSION < 104600
+    string fname = path.filename();
+#else
+    string fname = path.filename().string();
+#endif
+
+    // If the filename starts with "lt-" remove it from the name
+    if (fname.substr(0, 3)=="lt-")
+        fname = fname.substr(3);
+
+    string pwd;
+    // If no directory is contained determine the current directory
+    if (pname.empty())
+        pname = boost::filesystem::current_path().string();
+
+    // If the directory is relative and just ".libs" forget about it
+    if (pname==".libs")
+        return fname;
+
+
+    // Check if the directory is long enough to contain "/.libs"
+    if (pname.length()>=6)
+    {
+        // If the directory ends with "/.libs", remove it
+        const size_t pos = pname.length()-6;
+        if (pname.substr(pos)=="/.libs")
+            pname = pname.substr(0, pos);
+    }
+
+    // If the path is the local path do not return the path-name
+    if (pname==boost::filesystem::current_path().string())
+        return fname;
+
+    return pname+'/'+fname;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Print version information about the program and package.
+//!
+//! The program name is taken from fName. If a leading "lt-" is found,
+//! it is removed. This is useful if the program was build and run
+//! using libtool.
+//!
+//! The package name is taken from the define PACKAGE_STRING. If it is
+//! not defined (like automatically done by autoconf) no package information
+//! is printed. The same is true for PACKAGE_URL and PACKAGE_BUGREPORT.
+//!
+//! From help2man:
+//!
+//! The first line of the --version information is assumed to be in one
+//! of the following formats:
+//!
+//! \verbatim
+//!  - <version>
+//!  - <program> <version>
+//!  - {GNU,Free} <program> <version>
+//!  - <program> ({GNU,Free} <package>) <version>
+//!  - <program> - {GNU,Free} <package> <version>
+//! \endverbatim
+//!
+//!  and separated from any copyright/author details by a blank line.
+//!
+//! Handle multi-line bug reporting sections of the form:
+//!
+//! \verbatim
+//!  - Report <program> bugs to <addr>
+//!  - GNU <package> home page: <url>
+//!  - ...
+//! \endverbatim
+//!
+//! @param name
+//!     name of the program (usually argv[0]). 
+//!
+void Configuration::PrintVersion() const
+{
+#ifndef PACKAGE_STRING
+#define PACKAGE_STRING ""
+#endif
+
+#ifndef PACKAGE_URL
+#define PACKAGE_URL ""
+#endif
+
+#ifndef PACKAGE_BUGREPORT
+#define PACKAGE_BUGREPORT ""
+#endif
+
+    if (fPrintVersion)
+    {
+        fPrintVersion(fName);
+        return;
+    }
+
+#if BOOST_VERSION < 104600
+    const std::string n = boost::filesystem::path(fName).filename();
+#else
+    const std::string n = boost::filesystem::path(fName).filename().string();
+#endif
+
+    const string name = PACKAGE_STRING;
+    const string bugs = PACKAGE_BUGREPORT;
+    const string url  = PACKAGE_URL;
+
+    cout << n;
+    if (!name.empty())
+        cout << " - " << name;
+    cout <<
+        "\n\n"
+        "Written by Thomas Bretz et al.\n"
+        "\n";
+    if (!bugs.empty())
+        cout << "Report bugs to <" << bugs << ">\n";
+    if (!url.empty())
+        cout << "Home page: " << url << "\n";
+    cout <<
+        "\n"
+        "Copyright (C) 2011 by the FACT Collaboration.\n"
+        "This is free software; see the source for copying conditions.\n"
+        << std::endl;
+}
Index: branches/testFACT++branch/src/Configuration.h
===================================================================
--- branches/testFACT++branch/src/Configuration.h	(revision 18277)
+++ branches/testFACT++branch/src/Configuration.h	(revision 18277)
@@ -0,0 +1,271 @@
+#ifndef FACT_Configuration
+#define FACT_Configuration
+
+#include <iostream>
+#include <boost/program_options.hpp>
+
+namespace po = boost::program_options;
+
+class Configuration
+{
+private:
+    /// Convienience enum to access the fOption* data memebers more verbosely.
+    enum
+    {
+        kHidden  = 0, ///< Index for hidden options (not shown in PrintParsed)
+        kVisible = 1  ///< Index for options visible in PrintParsed
+    };
+
+    const std::string fName; /// argv[0]
+
+    std::map<std::string, std::string> fEnvMap;
+
+    po::options_description fOptionsCommandline[2]; /// Description of the command-line options
+    po::options_description fOptionsConfigfile[2];  /// Description of the options in the configuration file
+    po::options_description fOptionsDatabase[2];    /// Description of options from the database
+    po::options_description fOptionsEnvironment[2]; /// Description of options from the environment
+
+    po::positional_options_description fArgumentPositions; /// Description of positional command-line options (arguments)
+
+    std::vector<std::string> fUnknownCommandline;   /// Storage container for unrecognized commandline options
+    std::vector<std::string> fUnknownConfigfile;    /// Storage container for unrecognized options from configuration files
+    std::vector<std::string> fUnknownEnvironment;   /// Storage container for unrecognized options from the environment
+    std::vector<std::string> fUnknownDatabase;      /// Storage container for unrecognized options retrieved from the database
+
+    std::map<std::string, std::string> fWildcardOptions;  /// Options which were registered using wildcards
+
+    std::string fPriorityFile;  /// File name of the priority configuration file (overwrites option from the databse)
+    std::string fDefaultFile;   /// File name of the default configuration file (usually {program}.rc)
+    std::string fDatabase;      /// URL for database connection (see Configuration::parse_database)
+
+    po::variables_map fVariables;  /// Variables as compiled by the Parse-function, which will be passed to the program
+
+    /// A default mapper for environment variables skipping all of them
+    std::string DefaultMapper(const std::string env)
+    {
+        return fEnvMap[env];
+    }
+
+    /// Pointer to the mapper function for environment variables
+    std::function<std::string(std::string)> fNameMapper;
+    std::function<void()>                   fPrintUsage;
+    std::function<void(const std::string&)> fPrintVersion;
+
+    /// Helper function which return the max of the two arguments in the first argument
+    static void Max(int &val, const int &comp)
+    {
+        if (comp>val)
+            val=comp;
+    }
+
+    /// Helper for Parse to create list of used wildcard options
+    void CreateWildcardOptions();
+
+    // Helper functions for PrintOptions and GetOptions
+    template<class T>
+        std::string VecAsStr(const po::variable_value &v) const;
+    std::string VarAsStr(const po::variable_value &v) const;
+
+    /// Print all options from a list of already parsed options
+    void PrintParsed(const po::parsed_options &parsed) const;
+    /// Print a list of all unkown options within the given vector
+    void PrintUnknown(const std::vector<std::string> &vec, int steps=1) const;
+
+    virtual void PrintUsage() const { }
+    virtual void PrintVersion() const;
+
+    std::string UnLibToolize(const std::string &src) const;
+
+public:
+    Configuration(const std::string &prgname="");
+    virtual ~Configuration() { }
+
+    /// Retrieve data from a database and return them as options
+    static po::basic_parsed_options<char>
+        parse_database(const std::string &prgname, const std::string &database, const po::options_description& desc, bool allow_unregistered=false);
+
+    // Setup
+    void AddOptionsCommandline(const po::options_description &cl, bool visible=true);
+    void AddOptionsConfigfile(const po::options_description &cf, bool visible=true);
+    void AddOptionsEnvironment(const po::options_description &env, bool visible=true);
+    void AddOptionsDatabase(const po::options_description &db, bool visible=true);
+    void AddOptions(const po::options_description &opt, bool visible=true)
+    {
+        AddOptionsCommandline(opt, visible);
+        AddOptionsConfigfile(opt, visible);
+        AddOptionsEnvironment(opt, visible);
+        AddOptionsDatabase(opt, visible);
+    }
+
+    void SetArgumentPositions(const po::positional_options_description &desc);
+
+    void SetNameMapper(const std::function<std::string(std::string)> &func);
+    void SetNameMapper();
+
+    void SetPrintUsage(const std::function<void(void)> &func);
+    void SetPrintUsage();
+
+    void SetPrintVersion(const std::function<void(const std::string &)> &func);
+    void SetPrintVersion();
+
+    void AddEnv(const std::string &conf, const std::string &env)
+    {
+        fEnvMap[env] = conf;
+    }
+
+    // Output
+    void PrintOptions() const;
+    void PrintUnknown() const;
+    void PrintWildcardOptions() const;
+
+    const std::map<std::string,std::string> &GetWildcardOptions() const { return fWildcardOptions; }
+    const std::vector<std::string> GetWildcardOptions(const std::string &opt) const;
+
+    template<class T>
+    const std::map<std::string,T> GetOptions(const std::string &opt)
+    {
+        const std::vector<std::string> rc = GetWildcardOptions(opt+'*');
+
+        std::map<std::string,T> map;
+        for (auto it=rc.begin(); it!=rc.end(); it++)
+            map[it->substr(opt.length())] = Get<T>(*it);
+
+        return map;
+    }
+
+    std::multimap<std::string, std::string> GetOptions() const;
+
+    // Process command line arguments
+    const po::variables_map &Parse(int argc, const char **argv, const std::function<void()> &func=std::function<void()>());
+    bool DoParse(int argc, const char **argv, const std::function<void()> &func=std::function<void()>());
+
+    bool HasVersion()
+    {
+        return Has("version");
+    }
+
+    bool HasHelp()
+    {
+        return Has("help") || Has("help-config") || Has("help-env") || Has("help-database");
+    }
+
+    bool HasPrint()
+    {
+        return Has("print-all") || Has("print") || Has("print-default") ||
+            Has("print-database") || Has("print-config") ||
+            Has("print-environment") || Has("print-unknown") ||
+            Has("print-options") || Has("print-wildcards");
+    }
+
+    // Simplified access to the parsed options
+    template<class T>
+        T Get(const std::string &var) { fWildcardOptions.erase(var); return fVariables[var].as<T>(); }
+    bool Has(const std::string &var) { fWildcardOptions.erase(var); return fVariables.count(var)>0; }
+
+    template<class T>
+        std::vector<T> Vec(const std::string &var) { return Has(var) ? fVariables[var].as<std::vector<T>>() : std::vector<T>(); }
+
+    template<class T, class S>
+    T Get(const std::string &var, const S &val)
+    {
+        std::ostringstream str;
+        str << var << val;
+        return Get<T>(str.str());
+    }
+
+    template<class T>
+    bool Has(const std::string &var, const T &val)
+    {
+        std::ostringstream str;
+        str << var << val;
+        return Has(str.str());
+    }
+
+    template<class T, class S>
+    T GetDef(const std::string &var, const S &val)
+    {
+        return Has(var, val) ? Get<T>(var, val) : Get<T>(var+"default");
+    }
+
+    template<class T>
+    bool HasDef(const std::string &var, const T &val)
+    {
+        // Make sure the .default option is touched
+        const bool rc = Has(var+"default");
+
+        return Has(var, val) ? true : rc;
+    }
+
+    void Remove(const std::string &var)
+    {
+        fVariables.erase(var);
+    }
+
+/*
+    template<class T>
+    std::map<std::string, T> GetMap(const std::string &var)
+    {
+        const size_t len = var.length();
+
+        std::map<std::string, T> rc;
+        for (std::map<std::string, boost::program_options::variable_value>::const_iterator it=fVariables.begin();
+             it!=fVariables.end(); it++)
+            if (it->first.substr(0, len)==var)
+                rc[it->first] = it->second.as<T>();
+
+        return rc;
+    }
+
+    template<class T>
+    std::vector<std::string> GetKeys(const std::string &var)
+    {
+        const size_t len = var.length();
+
+        std::vector<std::string> rc;
+        for (std::map<std::string, boost::program_options::variable_value>::const_iterator it=fVariables.begin();
+             it!=fVariables.end(); it++)
+            if (it->first.substr(0, len)==var)
+                rc.push_back(it->first);
+
+        return rc;
+    }
+*/
+    const std::string &GetName() const { return fName; }
+};
+
+template<typename T>
+struct Hex
+{
+    T val;
+    Hex() { }
+    Hex(const T &v) : val(v) { }
+    operator T() const { return val; }
+};
+template<typename T>
+std::istream &operator>>(std::istream &in, Hex<T> &rc)
+{
+    T val;
+    in >> std::hex >> val;
+    rc.val = val;
+    return in;
+}
+
+template<class T>
+inline po::typed_value<T> *var(T *ptr=0)
+{ return po::value<T>(ptr); }
+
+template<class T>
+inline po::typed_value<T> *var(const T &val, T *ptr=0)
+{ return po::value<T>(ptr)->default_value(val); }
+
+template<class T>
+inline po::typed_value<std::vector<T>> *vars()
+{ return po::value<std::vector<T>>(); }
+
+inline po::typed_value<bool> *po_switch()
+{ return po::bool_switch(); }
+
+inline po::typed_value<bool> *po_bool(bool def=false)
+{ return po::value<bool>()->implicit_value(true)->default_value(def); }
+
+#endif
Index: branches/testFACT++branch/src/Connection.cc
===================================================================
--- branches/testFACT++branch/src/Connection.cc	(revision 18277)
+++ branches/testFACT++branch/src/Connection.cc	(revision 18277)
@@ -0,0 +1,460 @@
+// **************************************************************************
+/** @class Connection
+
+@brief Maintains an ansynchronous TCP/IP client connection
+
+@todo
+   Unify with ConnectionUSB
+
+*/
+// **************************************************************************
+#include "Connection.h"
+
+using namespace std;
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+namespace dummy = ba::placeholders;
+
+using ba::ip::tcp;
+
+    // -------- Abbreviations for starting async tasks ---------
+
+int Connection::Write(const Time &t, const string &txt, int qos)
+{
+    if (fLog)
+        return fLog->Write(t, txt, qos);
+
+    return MessageImp::Write(t, txt, qos);
+}
+
+void Connection::AsyncRead(const ba::mutable_buffers_1 buffers, int type)
+{
+    ba::async_read(*this, buffers,
+                   boost::bind(&Connection::HandleReceivedData, this,
+                               dummy::error, dummy::bytes_transferred, type));
+}
+
+void Connection::AsyncWrite(const ba::const_buffers_1 &buffers)
+{
+    ba::async_write(*this, buffers,
+                    boost::bind(&Connection::HandleSentData, this,
+                                dummy::error, dummy::bytes_transferred));
+}
+
+/*
+void Connection::AsyncWait(ba::deadline_timer &timer, int millisec,
+                           void (Connection::*handler)(const bs::error_code&))
+{
+    // - The boost::asio::basic_deadline_timer::expires_from_now()
+    //   function cancels any pending asynchronous waits, and returns
+    //   the number of asynchronous waits that were cancelled. If it
+    //   returns 0 then you were too late and the wait handler has
+    //   already been executed, or will soon be executed. If it
+    //   returns 1 then the wait handler was successfully cancelled.
+    // - If a wait handler is cancelled, the bs::error_code passed to
+    //   it contains the value bs::error::operation_aborted.
+    timer.expires_from_now(boost::posix_time::milliseconds(millisec));
+
+    timer.async_wait(boost::bind(handler, this, dummy::error));
+}
+*/
+
+void Connection::AsyncConnect(tcp::resolver::iterator iterator)
+{
+    tcp::endpoint endpoint = *iterator;
+
+    // AsyncConnect + Deadline
+     async_connect(endpoint,
+                  boost::bind(&Connection::ConnectIter,
+                              this, iterator, ba::placeholders::error));
+
+    // We will get a "Connection timeout anyway"
+    //AsyncWait(fConnectTimeout, 5, &Connection::HandleConnectTimeout);
+}
+
+void Connection::AsyncConnect()
+{
+    // AsyncConnect + Deadline
+     async_connect(fEndpoint,
+                  boost::bind(&Connection::ConnectAddr,
+                              this, fEndpoint, ba::placeholders::error));
+
+    // We will get a "Connection timeout anyway"
+    //AsyncWait(fConnectTimeout, 5, &Connection::HandleConnectTimeout);
+}
+
+// ------------------------ close --------------------------
+// close from another thread
+void Connection::CloseImp(bool restart)
+{
+    if (IsConnected() && fVerbose)
+    {
+        ostringstream str;
+        str << "Connection closed to " << URL() << ".";
+        Info(str);
+    }
+
+    // Stop any pending connection attempt
+    fConnectionTimer.cancel();
+
+    // Close possible open connections
+    close();
+
+    // Reset the connection status
+    fQueueSize = 0;
+    fConnectionStatus = kDisconnected;
+
+    // Stop deadline counters
+    fInTimeout.cancel();
+    fOutTimeout.cancel();
+
+    if (!restart || IsConnecting())
+        return;
+
+    // We need some timeout before reconnecting!
+    // And we have to check if we are alreayd trying to connect
+    // We shoudl wait until all operations in progress were canceled
+
+    // Start trying to reconnect
+    fMsgConnect = "";
+    fErrConnect = "";
+    StartConnect();
+}
+
+void Connection::PostClose(bool restart)
+{
+    get_io_service().post(boost::bind(&Connection::CloseImp, this, restart));
+}
+
+// ------------------------ write --------------------------
+void Connection::HandleWriteTimeout(const bs::error_code &error)
+{
+    if (error==ba::error::basic_errors::operation_aborted)
+        return;
+
+    // 125: Operation canceled (bs::error_code(125, bs::system_category))
+    if (error)
+    {
+        ostringstream str;
+        str << "Write timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+        Error(str);
+
+        CloseImp();
+        return;
+    }
+
+    if (!is_open())
+    {
+        // For example: Here we could schedule a new accept if we
+        // would not want to allow two connections at the same time.
+        return;
+    }
+
+    // Check whether the deadline has passed. We compare the deadline
+    // against the current time since a new asynchronous operation
+    // may have moved the deadline before this actor had a chance
+    // to run.
+    if (fOutTimeout.expires_at() > ba::deadline_timer::traits_type::now())
+        return;
+
+    Error("fOutTimeout has expired, writing data to "+URL());
+
+    CloseImp();
+}
+
+void Connection::HandleSentData(const bs::error_code& error, size_t n)
+{
+    if (error==ba::error::basic_errors::operation_aborted)
+        return;
+
+    if (error && error != ba::error::not_connected)
+    {
+        ostringstream str;
+        str << "Writing to " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+        Error(str);
+
+        CloseImp();
+        return;
+    }
+
+    if (error == ba::error::not_connected)
+    {
+        ostringstream msg;
+        msg << n << " bytes could not be sent to " << URL() << " due to missing connection.";
+        Warn(msg);
+
+        return;
+    }
+
+    if (--fQueueSize==0)
+        fOutTimeout.cancel();
+
+    if (fDebugTx)
+    {
+        ostringstream msg;
+        msg << n << " bytes successfully sent to " << URL();
+        Debug(msg);
+    }
+}
+
+void Connection::PostMessage(const void *ptr, size_t sz)
+{
+    // This function can be called from a different thread...
+    if (!is_open())
+        return;
+
+    // ... this is why we have to increase fQueueSize first
+    fQueueSize++;
+
+    // ... and shift the deadline timer
+    // This is not ideal, because if we are continously
+    // filling the buffer, it will never timeout
+    AsyncWait(fOutTimeout, 5000, &Connection::HandleWriteTimeout);
+
+    // Now we can schedule the buffer to be sent
+    AsyncWrite(ba::const_buffers_1(ptr, sz));
+
+    // If a socket is closed, all pending asynchronous
+    // operation will be aborted.
+}
+
+void Connection::PostMessage(const string &cmd, size_t max)
+{
+    if (max==size_t(-1))
+        max = cmd.length()+1;
+
+    PostMessage(cmd.c_str(), min(cmd.length()+1, max));
+}
+
+void Connection::HandleConnectionTimer(const bs::error_code &error)
+{
+    if (error==ba::error::basic_errors::operation_aborted)
+        return;
+
+    if (error)
+    {
+        ostringstream str;
+        str << "Connetion timer of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+        Error(str);
+    }
+
+    if (is_open())
+    {
+        // For example: Here we could schedule a new accept if we
+        // would not want to allow two connections at the same time.
+        return;
+    }
+
+    // Check whether the deadline has passed. We compare the deadline
+    // against the current time since a new asynchronous operation
+    // may have moved the deadline before this actor had a chance
+    // to run.
+    if (fConnectionTimer.expires_at() < ba::deadline_timer::traits_type::now())
+        StartConnect();
+}
+
+bool Connection::ConnectImp(const tcp::endpoint &endpoint, const bs::error_code& error)
+{
+    const string host = endpoint.port()==0 ? "" :
+        endpoint.address().to_string()+':'+to_string((long long unsigned int)endpoint.port());
+
+    // Connection established
+    if (!error)
+    {
+	set_option(socket_base::keep_alive(true));
+
+	const int optval = 30;
+        // First keep alive after 30s
+	setsockopt(native(), SOL_TCP, TCP_KEEPIDLE, &optval, sizeof(optval));
+        // New keep alive after 30s
+	setsockopt(native(), SOL_TCP, TCP_KEEPINTVL, &optval, sizeof(optval));
+
+        if (fVerbose)
+            Info("Connection established to "+host+"...");
+
+        fQueueSize = 0;
+        fConnectionStatus = kConnected;
+
+        ConnectionEstablished();
+        return true;
+    }
+
+    // If returning from run will lead to deletion of this
+    // instance, close() is not needed (maybe implicitly called).
+    // If run is called again, close() is needed here. Otherwise:
+    // Software caused connection abort when we try to resolve
+    // the endpoint again.
+    CloseImp(false);
+
+    ostringstream msg;
+    if (!host.empty())
+        msg << "Connecting to " << host << ": " << error.message() << " (" << error << ")";
+
+    if (fErrConnect!=msg.str())
+    {
+        if (error!=ba::error::basic_errors::connection_refused)
+            fMsgConnect = "";
+        fErrConnect = msg.str();
+        Warn(fErrConnect);
+    }
+
+    if (error==ba::error::basic_errors::operation_aborted)
+        return true;
+
+    fConnectionStatus = kConnecting;
+
+    return false;
+/*
+    // Go on with the next
+    if (++iterator != tcp::resolver::iterator())
+    {
+        AsyncConnect(iterator);
+        return;
+    }
+*/
+    // No more entries to try, if we would not put anything else
+    // into the queue anymore it would now return (run() would return)
+
+    // Since we don't want to block the main loop, we wait using an
+    // asnychronous timer
+
+    // FIXME: Should we move this before AsyncConnect() ?
+//    AsyncWait(fConnectionTimer, 250, &Connection::HandleConnectionTimer);
+}
+
+void Connection::ConnectIter(tcp::resolver::iterator iterator, const bs::error_code& error)
+{
+    if (ConnectImp(*iterator, error))
+        return;
+
+    // Go on with the next
+    if (++iterator != tcp::resolver::iterator())
+    {
+        AsyncConnect(iterator);
+        return;
+    }
+
+    // No more entries to try, if we would not put anything else
+    // into the queue anymore it would now return (run() would return)
+    AsyncWait(fConnectionTimer, 250, &Connection::HandleConnectionTimer);
+}
+
+void Connection::ConnectAddr(const tcp::endpoint &endpoint, const bs::error_code& error)
+{
+    if (ConnectImp(endpoint, error))
+        return;
+
+    AsyncWait(fConnectionTimer, 250, &Connection::HandleConnectionTimer);
+}
+
+// FIXME: Async connect should get address and port as an argument
+void Connection::StartConnect()
+{
+    fConnectionStatus = kConnecting;
+
+    if (fEndpoint!=tcp::endpoint())
+    {
+        ostringstream msg;
+        msg << "Trying to connect to " << fEndpoint << "...";
+        if (fMsgConnect!=msg.str())
+        {
+            fMsgConnect = msg.str();
+            Info(msg);
+        }
+
+        AsyncConnect();
+        return;
+    }
+
+    const bool valid = !fAddress.empty() || !fPort.empty();
+
+    boost::system::error_code ec;
+
+    ostringstream msg;
+    if (!valid)
+        msg << "No target address... connection attempt postponed.";
+    else
+    {
+        tcp::resolver resolver(get_io_service());
+
+        tcp::resolver::query query(fAddress, fPort);
+        tcp::resolver::iterator iterator = resolver.resolve(query, ec);
+
+        msg << "Trying to connect to " << URL() << "...";
+
+        // Start connection attempts (will also reset deadline counter)
+        if (!ec)
+            AsyncConnect(iterator);
+        else
+            msg << " " << ec.message() << " (" << ec << ")";
+    }
+
+    // Only output message if it has changed
+    if (fMsgConnect!=msg.str())
+    {
+        fMsgConnect = msg.str();
+        if (ec)
+            Error(msg);
+        if (!ec && fVerbose)
+            Info(msg);
+    }
+
+    if (!valid || ec)
+        AsyncWait(fConnectionTimer, 250, &Connection::HandleConnectionTimer);
+}
+
+void Connection::SetEndpoint(const string &addr, int port)
+{
+    if (fConnectionStatus>=1)
+        Warn("Connection or connection attempt in progress. New endpoint only valid for next connection.");
+
+    fAddress = addr;
+    fPort    = to_string((long long)port);
+}
+
+void Connection::SetEndpoint(const string &addr, const string &port)
+{
+    if (fConnectionStatus>=1 && URL()!=":")
+        Warn("Connection or connection attempt in progress. New endpoint only valid for next connection.");
+
+    fAddress = addr;
+    fPort    = port;
+}
+
+void Connection::SetEndpoint(const string &addr)
+{
+    const size_t p0 = addr.find_first_of(':');
+    const size_t p1 = addr.find_last_of(':');
+
+    if (p0==string::npos || p0!=p1)
+    {
+        Error("Connection::SetEndpoint - Wrong format of argument '"+addr+"' ('host:port' expected)");
+        return;
+    }
+
+    SetEndpoint(addr.substr(0, p0), addr.substr(p0+1));
+}
+
+void Connection::SetEndpoint(const tcp::endpoint &ep)
+{
+    const ba::ip::address addr = ep.address();
+
+    const ba::ip::address use =
+        addr.is_v6() && addr.to_v6().is_loopback() ?
+        ba::ip::address(ba::ip::address_v4::loopback()) :
+        addr;
+
+    SetEndpoint(use.to_string(), ep.port());
+
+    fEndpoint = tcp::endpoint(use, ep.port());
+}
+
+
+Connection::Connection(ba::io_service& ioservice, ostream &out) :
+MessageImp(out), tcp::socket(ioservice),
+fLog(0), fVerbose(true), fDebugTx(false),
+fInTimeout(ioservice), fOutTimeout(ioservice), fConnectionTimer(ioservice),
+fQueueSize(0), fConnectionStatus(kDisconnected)
+{
+}
Index: branches/testFACT++branch/src/Connection.h
===================================================================
--- branches/testFACT++branch/src/Connection.h	(revision 18277)
+++ branches/testFACT++branch/src/Connection.h	(revision 18277)
@@ -0,0 +1,156 @@
+#ifndef FACT_Connection
+#define FACT_Connection
+
+#include <list>
+#include <array>
+#include <string>
+
+#include <boost/bind.hpp>
+#include <boost/asio.hpp>
+#include <boost/function.hpp>
+#include <boost/asio/deadline_timer.hpp>
+
+#include "MessageImp.h"
+
+class Connection : public MessageImp, public boost::asio::ip::tcp::socket
+{
+private:
+    MessageImp *fLog;
+
+    std::string fAddress;
+    std::string fPort;
+
+    boost::asio::ip::tcp::endpoint fEndpoint;
+
+    bool fVerbose;
+    bool fDebugTx;
+
+    enum ConnectionStatus_t
+    {
+        kDisconnected = 0,
+        kConnecting   = 1,
+        kConnected    = 2,
+    };
+
+protected:
+    boost::asio::deadline_timer   fInTimeout;
+
+private:
+    boost::asio::deadline_timer   fOutTimeout;
+    boost::asio::deadline_timer   fConnectionTimer;
+
+    size_t fQueueSize;
+
+    ConnectionStatus_t fConnectionStatus;
+
+    std::string fErrConnect;
+    std::string fMsgConnect;
+
+public:
+    void SetLogStream(MessageImp *log) { fLog = log; }
+    std::ostream &Out() { return fLog ? fLog->Out() : Out(); }
+
+    // -------- Abbreviations for starting async tasks ---------
+
+    void AsyncRead(const boost::asio::mutable_buffers_1 buffers, int type=0);
+    void AsyncWrite(const boost::asio::const_buffers_1 &buffers);
+
+    template<class T>
+    void AsyncWaitImp(boost::asio::deadline_timer &timer, int millisec,
+                      void (T::*handler)(const boost::system::error_code&))
+    {
+        // - The boost::asio::basic_deadline_timer::expires_from_now()
+        //   function cancels any pending asynchronous waits, and returns
+        //   the number of asynchronous waits that were cancelled. If it
+        //   returns 0 then you were too late and the wait handler has
+        //   already been executed, or will soon be executed. If it
+        //   returns 1 then the wait handler was successfully cancelled.
+        // - If a wait handler is cancelled, the bs::error_code passed to
+        //   it contains the value bs::error::operation_aborted.
+        timer.expires_from_now(boost::posix_time::milliseconds(millisec));
+
+        timer.async_wait(boost::bind(handler, this, boost::asio::placeholders::error));
+    }
+
+    void AsyncWait(boost::asio::deadline_timer &timer, int millisec,
+                   void (Connection::*handler)(const boost::system::error_code&))
+    {
+        AsyncWaitImp(timer, millisec, handler);
+    }
+
+
+private:
+    void AsyncConnect(boost::asio::ip::tcp::resolver::iterator iterator);
+    void AsyncConnect();
+
+    void CloseImp(bool restart=true);
+
+    bool ConnectImp(const boost::asio::ip::tcp::endpoint &endpoint,
+                    const boost::system::error_code& error);
+    void ConnectIter(boost::asio::ip::tcp::resolver::iterator endpoint_iterator,
+                     const boost::system::error_code& error);
+    void ConnectAddr(const boost::asio::ip::tcp::endpoint &endpoint,
+                     const boost::system::error_code& error);
+
+    void HandleConnectionTimer(const boost::system::error_code &error);
+    void HandleWriteTimeout(const boost::system::error_code &error);
+    void HandleSentData(const boost::system::error_code& error, size_t);
+
+    int Write(const Time &t, const std::string &txt, int qos=kInfo);
+
+    virtual void ConnectionEstablished() { }
+    virtual void ConnectionFailed() { }
+
+public:
+    Connection(boost::asio::io_service& io_service, std::ostream &out);
+
+    // ------------------------ connect --------------------------
+
+    void SetEndpoint(const std::string &addr, int port);
+    void SetEndpoint(const std::string &addr, const std::string &port);
+    void SetEndpoint(const std::string &addr);
+    void SetEndpoint(const boost::asio::ip::tcp::endpoint &ep);
+
+    virtual void StartConnect();
+
+    // ------------------------ close --------------------------
+    void PostClose(bool restart=true);
+
+    // ------------------------ write --------------------------
+    void PostMessage(const void *msg, size_t s=0);
+    void PostMessage(const std::string &cmd, size_t s=-1);
+
+    template<typename T, size_t N>
+    void PostMessage(const std::array<T, N> &msg)
+    {
+        PostMessage(msg.begin(), msg.size()*sizeof(T));
+    }
+
+    template<typename T>
+        void PostMessage(const std::vector<T> &msg)
+    {
+        PostMessage(&msg[0], msg.size()*sizeof(T));
+    }
+
+    // ------------------------ others --------------------------
+
+    virtual void HandleReceivedData(const boost::system::error_code&, size_t, int = 0) { }
+    virtual void HandleReadTimeout(const boost::system::error_code&) { }
+
+    bool IsTxQueueEmpty() const { return fQueueSize==0; /*fOutQueue.empty();*/ }
+
+    int IsClosed() const { return !is_open(); }
+
+    bool IsDisconnected() const { return fConnectionStatus==kDisconnected; }
+    bool IsConnected()  const   { return fConnectionStatus==kConnected;    }
+    bool IsConnecting() const   { return fConnectionStatus==kConnecting;   }
+
+    void SetVerbose(bool b=true) { fVerbose=b; }
+    void SetDebugTx(bool b=true) { fDebugTx=b; }
+
+    std::string URL() const { return fAddress + ":" + fPort; }
+
+    const boost::asio::ip::tcp::endpoint &GetEndpoint() const { return fEndpoint; }
+};
+
+#endif
Index: branches/testFACT++branch/src/ConnectionUSB.cc
===================================================================
--- branches/testFACT++branch/src/ConnectionUSB.cc	(revision 18277)
+++ branches/testFACT++branch/src/ConnectionUSB.cc	(revision 18277)
@@ -0,0 +1,330 @@
+// **************************************************************************
+/** @class Connection
+
+@brief Maintains an ansynchronous TCP/IP client connection
+
+*/
+// **************************************************************************
+#include "ConnectionUSB.h"
+
+#include <boost/bind.hpp>
+
+using namespace std;
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+namespace dummy = ba::placeholders;
+
+using ba::serial_port_base;
+
+//#define DEBUG_TX
+//#define DEBUG
+
+#ifdef DEBUG
+#include <fstream>
+#include <iomanip>
+#include "Time.h"
+#endif
+
+// -------- Abbreviations for starting async tasks ---------
+
+int ConnectionUSB::Write(const Time &t, const string &txt, int qos)
+{
+    if (fLog)
+        return fLog->Write(t, txt, qos);
+
+    return MessageImp::Write(t, txt, qos);
+}
+
+void ConnectionUSB::AsyncRead(const ba::mutable_buffers_1 buffers, int type, int counter)
+{
+    ba::async_read(*this, buffers,
+                   boost::bind(&ConnectionUSB::HandleReceivedData, this,
+                               dummy::error, dummy::bytes_transferred, type, counter));
+}
+
+void ConnectionUSB::AsyncWrite(const ba::const_buffers_1 &buffers)
+{
+    ba::async_write(*this, buffers,
+                    boost::bind(&ConnectionUSB::HandleSentData, this,
+                                dummy::error, dummy::bytes_transferred));
+}
+
+void ConnectionUSB::AsyncWait(ba::deadline_timer &timer, int millisec,
+                           void (ConnectionUSB::*handler)(const bs::error_code&))
+{
+    // - The boost::asio::basic_deadline_timer::expires_from_now()
+    //   function cancels any pending asynchronous waits, and returns
+    //   the number of asynchronous waits that were cancelled. If it
+    //   returns 0 then you were too late and the wait handler has
+    //   already been executed, or will soon be executed. If it
+    //   returns 1 then the wait handler was successfully cancelled.
+    // - If a wait handler is cancelled, the bs::error_code passed to
+    //   it contains the value bs::error::operation_aborted.
+    timer.expires_from_now(boost::posix_time::milliseconds(millisec));
+
+    timer.async_wait(boost::bind(handler, this, dummy::error));
+}
+
+// ------------------------ close --------------------------
+// close from another thread
+void ConnectionUSB::CloseImp(int64_t delay)
+{
+    if (IsConnected())
+        Info("Closing connection to "+URL()+".");
+
+    // Close possible open connections
+    bs::error_code ec;
+    cancel(ec);
+    if (ec && ec!=ba::error::basic_errors::bad_descriptor)
+    {
+        ostringstream msg;
+        msg << "Cancel async requests on " << URL() << ": " << ec.message() << " (" << ec << ")";
+        Error(msg);
+    }
+
+    if (IsConnected())
+    {
+        close(ec);
+        if (ec)
+        {
+            ostringstream msg;
+            msg << "Closing " << URL() << ": " << ec.message() << " (" << ec << ")";
+            Error(msg);
+        }
+        else
+            Info("Closed connection to "+URL()+" succesfully.");
+    }
+
+    // Stop deadline counters
+    fInTimeout.cancel();
+    fOutTimeout.cancel();
+    fConnectTimeout.cancel();
+
+    // Reset the connection status
+    fQueueSize = 0;
+    fConnectionStatus = kDisconnected;
+
+#ifdef DEBUG
+    ofstream fout1("transmitted.txt", ios::app);
+    ofstream fout2("received.txt", ios::app);
+    ofstream fout3("send.txt", ios::app);
+    fout1 << Time() << ": ---" << endl;
+    fout2 << Time() << ": ---" << endl;
+    fout3 << Time() << ": ---" << endl;
+#endif
+
+    if (delay<0 || IsConnecting())
+        return;
+
+    // We need some timeout before reconnecting!
+    // And we have to check if we are alreayd trying to connect
+    // We should wait until all operations in progress were canceled
+    fConnectTimeout.expires_from_now(boost::posix_time::seconds(delay));
+    fConnectTimeout.async_wait(boost::bind(&ConnectionUSB::HandleReconnectTimeout, this, dummy::error));
+}
+
+void ConnectionUSB::PostClose(int64_t delay)
+{
+    get_io_service().post(boost::bind(&ConnectionUSB::CloseImp, this, delay));
+}
+
+void ConnectionUSB::HandleReconnectTimeout(const bs::error_code &error)
+{
+    if (error==ba::error::basic_errors::operation_aborted)
+        return;
+
+    // 125: Operation canceled (bs::error_code(125, bs::system_category))
+    if (error)
+    {
+        ostringstream str;
+        str << "Reconnect timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+        Error(str);
+
+        CloseImp(-1);
+        return;
+    }
+
+
+    if (is_open())
+    {
+        Error("HandleReconnectTimeout - "+URL()+" is already open.");
+        return;
+    }
+
+    // Check whether the deadline has passed. We compare the deadline
+    // against the current time since a new asynchronous operation
+    // may have moved the deadline before this actor had a chance
+    // to run.
+    if (fConnectTimeout.expires_at() > ba::deadline_timer::traits_type::now())
+        return;
+
+    // Start trying to reconnect
+    Connect();
+}
+
+
+// ------------------------ write --------------------------
+void ConnectionUSB::HandleWriteTimeout(const bs::error_code &error)
+{
+    if (error==ba::error::basic_errors::operation_aborted)
+        return;
+
+    // 125: Operation canceled (bs::error_code(125, bs::system_category))
+    if (error)
+    {
+        ostringstream str;
+        str << "Write timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+        Error(str);
+
+        CloseImp(-1);
+        return;
+    }
+
+    if (!is_open())
+    {
+        // For example: Here we could schedule a new accept if we
+        // would not want to allow two connections at the same time.
+        return;
+    }
+
+    // Check whether the deadline has passed. We compare the deadline
+    // against the current time since a new asynchronous operation
+    // may have moved the deadline before this actor had a chance
+    // to run.
+    if (fOutTimeout.expires_at() > ba::deadline_timer::traits_type::now())
+        return;
+
+    Error("fOutTimeout has expired, writing data to "+URL());
+
+    CloseImp(-1);
+}
+
+void ConnectionUSB::HandleSentData(const bs::error_code& error, size_t n)
+{
+    if (error==ba::error::basic_errors::operation_aborted)
+        return;
+
+    if (error && error != ba::error::not_connected)
+    {
+        ostringstream str;
+        str << "Writing to " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+        Error(str);
+
+        CloseImp(-1);
+        return;
+    }
+
+    if (error == ba::error::not_connected)
+    {
+        ostringstream msg;
+        msg << n << " bytes could not be sent to " << URL() << " due to missing connection.";
+        Warn(msg);
+        return;
+    }
+
+    if (--fQueueSize==0)
+        fOutTimeout.cancel();
+
+#ifdef DEBUG_TX
+    ostringstream msg;
+    msg << n << " bytes successfully sent to " << URL();
+    Message(msg);
+#endif
+
+#ifdef DEBUG
+    ofstream fout("transmitted.txt", ios::app);
+    fout << Time() << ": ";
+    for (unsigned int i=0; i<fOutQueue.front().size(); i++)
+        fout << hex << setfill('0') << setw(2) << (uint32_t)fOutQueue.front()[i];
+    fout << endl;
+#endif
+
+    HandleTransmittedData(n);
+}
+
+void ConnectionUSB::PostMessage(const void *ptr, size_t sz)
+{
+    // This function can be called from a different thread...
+    if (!is_open())
+        return;
+
+    // ... this is why we have to increase fQueueSize first
+    fQueueSize++;
+
+    // ... and shift the deadline timer
+    // This is not ideal, because if we are continously
+    // filling the buffer, it will never timeout
+    AsyncWait(fOutTimeout, 5000, &ConnectionUSB::HandleWriteTimeout);
+
+    // Now we can schedule the buffer to be sent
+    AsyncWrite(ba::const_buffers_1(ptr, sz));
+}
+
+void ConnectionUSB::PostMessage(const string &cmd, size_t max)
+{
+    if (max==size_t(-1))
+        max = cmd.length()+1;
+
+    PostMessage(cmd.c_str(), min(cmd.length()+1, max));
+}
+
+void ConnectionUSB::Connect()
+{
+    fConnectionStatus = kConnecting;
+
+    Info("Connecting to "+URL()+".");
+
+    bs::error_code ec;
+    open(URL(), ec);
+
+    if (ec)
+    {
+        ostringstream msg;
+        msg << "Error opening " << URL() << "... " << ec.message() << " (" << ec << ")";
+        Error(msg);
+        fConnectionStatus = kDisconnected;
+        return;
+    }
+
+    Info("Connection established.");
+
+    try
+    {
+        set_option(fBaudRate);
+        set_option(fCharacterSize);
+        set_option(fParity);
+        set_option(fStopBits);
+        set_option(fFlowControl);
+    }
+    catch (const bs::system_error &erc)
+    {
+        Error(string("Setting connection options: ")+erc.what());
+        // CLOSE
+        return;
+    }
+
+    fQueueSize = 0;
+    fConnectionStatus = kConnected;
+
+    ConnectionEstablished();
+}
+
+void ConnectionUSB::SetEndpoint(const string &addr)
+{
+    if (fConnectionStatus>=1)
+        Warn("Connection or connection attempt in progress. New endpoint only valid for next connection.");
+
+    fAddress = "/dev/"+addr;
+}
+
+
+ConnectionUSB::ConnectionUSB(ba::io_service& ioservice, ostream &out) :
+MessageImp(out), ba::serial_port(ioservice), fLog(0),
+fBaudRate(115200),
+fCharacterSize(8), fParity(parity::none), fStopBits(stop_bits::one),
+fFlowControl(flow_control::hardware),
+fInTimeout(ioservice), fOutTimeout(ioservice), fConnectTimeout(ioservice),
+fQueueSize(0), fConnectionStatus(kDisconnected)
+{
+}
Index: branches/testFACT++branch/src/ConnectionUSB.h
===================================================================
--- branches/testFACT++branch/src/ConnectionUSB.h	(revision 18277)
+++ branches/testFACT++branch/src/ConnectionUSB.h	(revision 18277)
@@ -0,0 +1,113 @@
+#ifndef FACT_Connection
+#define FACT_Connection
+
+#include <list>
+#include <array>
+#include <string>
+
+#include <boost/asio.hpp>
+#include <boost/function.hpp>
+#include <boost/asio/deadline_timer.hpp>
+
+#include "MessageImp.h"
+
+class ConnectionUSB : public MessageImp, public boost::asio::serial_port
+{
+private:
+    MessageImp *fLog;
+
+    std::string fAddress;
+
+    boost::asio::serial_port_base::baud_rate      fBaudRate;      // unisgned int
+    boost::asio::serial_port_base::character_size fCharacterSize; // unisgned int
+    boost::asio::serial_port_base::parity         fParity;        // unisgned int
+    boost::asio::serial_port_base::stop_bits      fStopBits;      // unisgned int
+    boost::asio::serial_port_base::flow_control   fFlowControl;   // unisgned int
+
+    enum ConnectionStatus_t
+    {
+        kDisconnected = 0,
+        kConnecting   = 1,
+        kConnected    = 2,
+    };
+
+protected:
+    boost::asio::deadline_timer   fInTimeout;
+
+private:
+    boost::asio::deadline_timer   fOutTimeout;
+    boost::asio::deadline_timer   fConnectTimeout;
+
+    size_t fQueueSize;
+
+    ConnectionStatus_t fConnectionStatus;
+
+public:
+    void SetLogStream(MessageImp *log) { fLog = log; }
+    std::ostream &Out() { return fLog ? fLog->Out() : Out(); }
+
+    // -------- Abbreviations for starting async tasks ---------
+
+    void AsyncRead(const boost::asio::mutable_buffers_1 buffers, int type=0, int counter=0);
+    void AsyncWrite(const boost::asio::const_buffers_1 &buffers);
+    void AsyncWait(boost::asio::deadline_timer &timer, int millisec,
+                   void (ConnectionUSB::*handler)(const boost::system::error_code&));
+
+protected:
+    void CloseImp(int64_t delay=0);
+
+private:
+    void ConnectImp(const boost::system::error_code& error,
+                    boost::asio::ip::tcp::resolver::iterator endpoint_iterator);
+
+    void HandleWriteTimeout(const boost::system::error_code &error);
+    void HandleSentData(const boost::system::error_code& error, size_t);
+    void HandleReconnectTimeout(const boost::system::error_code &error);
+
+    int Write(const Time &t, const std::string &txt, int qos=kInfo);
+
+    virtual void ConnectionEstablished() { }
+
+public:
+    ConnectionUSB(boost::asio::io_service& io_service, std::ostream &out);
+
+    // ------------------------ connect --------------------------
+
+    void SetEndpoint(const std::string &addr);
+
+    void Connect();
+
+    // ------------------------ close --------------------------
+    void PostClose(int64_t delay=0);
+
+    // ------------------------ write --------------------------
+    void PostMessage(const void *msg, size_t s=0);
+    void PostMessage(const std::string &cmd, size_t s=-1);
+
+    template<typename T, size_t N>
+    void PostMessage(const std::array<T, N> &msg)
+    {
+        PostMessage(msg.begin(), msg.size()*sizeof(T));
+    }
+
+    template<typename T>
+        void PostMessage(const std::vector<T> &msg)
+    {
+        PostMessage(&msg[0], msg.size()*sizeof(T));
+    }
+
+    // ------------------------ others --------------------------
+
+    virtual void HandleReceivedData(const boost::system::error_code&, size_t, int = 0, int = 0) { }
+    virtual void HandleTransmittedData(size_t) { }
+    virtual void HandleReadTimeout(const boost::system::error_code&) { }
+
+    int IsClosed() const { return !is_open(); }
+
+    bool IsConnected()  const { return fConnectionStatus==kConnected;  }
+    bool IsConnecting() const { return fConnectionStatus==kConnecting; }
+
+    std::string URL() const { return fAddress; }
+};
+
+#endif
Index: branches/testFACT++branch/src/Console.cc
===================================================================
--- branches/testFACT++branch/src/Console.cc	(revision 18277)
+++ branches/testFACT++branch/src/Console.cc	(revision 18277)
@@ -0,0 +1,263 @@
+// **************************************************************************
+/** @class Console
+
+@brief This is an extension to the Readline class provding buffered output
+
+This in an extension to the Readline class. It's purpose is to keep a
+buffered output stream and flush the stream either between readline entries
+(non continous mode) or continously, keeping the readline prompt as
+intact as possible.
+
+ */
+// **************************************************************************
+#include "Console.h"
+
+#include <unistd.h>
+
+#include <sstream>
+#include <iostream>
+
+#include "tools.h"
+
+#include "ReadlineColor.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! Instantiate a console stream. It will create a WindowLog object
+//! and immediatel switch off its output to the console. The default more
+//! is non-continous.
+//!
+//! @param name
+//!     The name of the program passed to the Readline constructor
+//!
+Console::Console(const char *name) : Readline(name), fContinous(false)
+{
+    fLogO.SetNullOutput();
+    fLogI.SetNullOutput();
+    fLogO.SetBacklog(true);
+    fLogI.SetBacklog(true);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Flush the contents of the buffer before it is destroyed.
+//
+Console::~Console()
+{
+    // flush buffer to display before it is destroyed in its destructor
+    fLogO.Display();
+    fLogI.Display();
+}
+
+void Console::PrintReadlineError(const std::string &str)
+{
+    fLogI << kRed << str << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Wrapper to call the correspnding function from ReadlineColor
+//
+bool Console::PrintGeneralHelp()
+{
+    return ReadlineColor::PrintGeneralHelp(fLogI, GetName());
+}
+
+// --------------------------------------------------------------------------
+//
+//! Wrapper to call the correspnding function from ReadlineColor
+//
+bool Console::PrintCommands()
+{
+    return ReadlineColor::PrintCommands(fLogI);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Wrapper to call the correspnding function from ReadlineColor
+//
+bool Console::PrintKeyBindings()
+{
+    return ReadlineColor::PrintKeyBindings(fLogI);
+}
+
+void Console::Lock()
+{
+    // FIXME: Check missing
+    fLogO.Display(true);
+    fLogO.SetBacklog(false);
+    fLogO.SetNullOutput(false);
+}
+
+void Console::Unlock()
+{
+    // FIXME: Check missing
+    fLogO.SetNullOutput(true);
+    fLogO.SetBacklog(true);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Processes the command provided by the Shell-class.
+//!
+//! @returns
+//!    whether a command was successfully processed or could not be found
+//
+bool Console::Process(const string &str)
+{
+    if (ReadlineColor::Process(fLogI, str))
+        return true;
+
+    if (str.substr(0, 3)==".w ")
+    {
+        Lock();
+        usleep(stoul(str.substr(3))*1000);
+        Unlock();
+        return true;
+    }
+
+    if (Readline::Process(str))
+        return true;
+
+    return false;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Before readline starts flush the buffer to display all stuff which was
+//! buffered since the last readline call returned.
+//
+void Console::Startup()
+{
+    // Call readline's startup (just in case, it is empty)
+    Readline::Startup();
+
+    // First flush the buffer of the stream which is synchronous
+    // with the prompt
+    fLogI.Display(true);
+
+    // Now flush the stream which is asychronous
+    fLogO.Display(true);
+
+    // The order has the advantage that output initiated by the prompt
+    // is not interrupter by the synchronous stream
+}
+
+// --------------------------------------------------------------------------
+//
+//! Flush the buffer if we are in continous mode, and call Readline's
+//! EventHook to update the prompt.
+//
+void Console::EventHook(bool)
+{
+    // If the output is continous and we are going to output something
+    // first jump back to the beginning of the line (well, that
+    // doesn't work well if the input line is already two lines)
+    // and then flush the buffer.
+    const bool newline = fContinous && fLogO.GetSizeBacklog()>0;
+    if (newline)
+    {
+        // Clear the line we are going to overwrite
+        std::cout << "\r\033[0K";
+        fLogO.Display(true);
+    }
+
+    // Call Readline's EventHook to update the prompt
+    // and signal readline so that a new prompt is displayed
+    Readline::EventHook(newline);
+}
+
+string Console::GetLinePrompt() const
+{
+    const string siz = fLogO.GetSizeStr();
+
+    ostringstream str;
+    str << '[' << GetLine();
+    return fContinous ? str.str()+']' : str.str()+':'+siz+']';
+}
+
+// --------------------------------------------------------------------------
+//
+//! Before Readline::Run() is called the buffer is flushed as well as
+//! after the Run() loop has exited.
+//! command processing. This keeps things as seperated as possible,
+//! although there is no gurantee.
+//
+void Console::Run(const char *)
+{
+    // Flush the buffer before we print the boot message
+    fLogO.Display(true);
+
+    ReadlineColor::PrintBootMsg(fLogI, GetName());
+
+    // Flush the buffer before we start out readline loop
+    fLogI.Display(true);
+    fLogO.Display(true);
+
+    // Now run readlines main loop
+    Readline::Run();
+
+    // flush buffer to display
+    fLogI.Display(true);
+    fLogO.Display(true);
+}
+
+// **************************************************************************
+/** @class ConsoleStream
+
+@brief This is an extension to the Readline class provding a colored output
+
+This in an extension to the Readline class. It's purpose is just to have a
+colored output stream available. It's main idea is that it is used in
+environments without user interaction as a replacement the Console class.
+This is interesting to be able to do everything identical as if Console
+would be used, but Run() does not prompt but just wait until Stop()
+was called. The advantage is that some functions of Readline can be used
+like Execute and the history (just for Execute() commands of course)
+
+ */
+// **************************************************************************
+
+ConsoleStream::~ConsoleStream()
+{
+    fLogO.Display();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Instantiate a console stream. It will create a single WindowLog object
+//! which is returned as input and output stream.
+//!
+//! @param name
+//!     The name of the program passed to the Readline constructor
+//!
+ConsoleStream::ConsoleStream(const char *name) : Readline(name)
+{
+    fLogO.SetBacklog(false);
+    fLogO.SetNullOutput(false);
+    ReadlineColor::PrintBootMsg(fLogO, GetName(), false);
+}
+
+void ConsoleStream::PrintReadlineError(const std::string &str)
+{
+    fLogO << kRed << str << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Just usleep until Stop() was called.
+//
+void ConsoleStream::Run(const char *)
+{
+    while (!IsStopped())
+    {
+        const string buf = GetExternalInput();
+        SetExternalInput("");
+        if (!buf.empty())
+            ProcessLine(buf);
+
+        usleep(100000);
+    }
+}
Index: branches/testFACT++branch/src/Console.h
===================================================================
--- branches/testFACT++branch/src/Console.h	(revision 18277)
+++ branches/testFACT++branch/src/Console.h	(revision 18277)
@@ -0,0 +1,75 @@
+#ifndef FACT_Console
+#define FACT_Console
+
+#include "Readline.h"
+#include "WindowLog.h"
+
+class ConsoleStream : public Readline
+{
+private:
+    WindowLog fLogO;
+
+    void PrintReadlineError(const std::string &str);
+
+public:
+    ConsoleStream(const char *name);
+    ~ConsoleStream();
+
+    void SetNullOutput(bool null) { fLogO.SetNullOutput(null); }
+
+    // I/O
+    WindowLog &GetStreamOut() { return fLogO; }
+    WindowLog &GetStreamIn()  { return fLogO; }
+
+    const WindowLog &GetStreamOut() const { return fLogO; }
+    const WindowLog &GetStreamIn()  const { return fLogO; }
+
+    void Lock() { }
+    void Run(const char * = 0);
+    void Unlock() { }
+};
+
+
+
+class Console : public Readline
+{
+private:
+    WindowLog fLogO;
+    WindowLog fLogI;
+
+    bool fContinous;
+
+    void PrintReadlineError(const std::string &str);
+
+public:
+    Console(const char *name);
+    ~Console();
+
+    // Console
+    void SetContinous(bool cont) { fContinous = cont; }
+    bool IsContinous() const { return fContinous; }
+
+    // I/O
+    WindowLog &GetStreamOut() { return fLogO; }
+    WindowLog &GetStreamIn()  { return fLogI; }
+
+    const WindowLog &GetStreamOut() const { return fLogO; }
+    const WindowLog &GetStreamIn()  const { return fLogI; }
+
+    // Readline
+    bool PrintGeneralHelp();
+    bool PrintCommands();
+    bool PrintKeyBindings();
+
+    void Lock();
+    bool Process(const std::string &str);
+    void Unlock();
+
+    std::string GetLinePrompt() const;
+
+    void Startup();
+    void EventHook(bool);
+    void Run(const char * = 0);
+};
+
+#endif
Index: branches/testFACT++branch/src/Converter.cc
===================================================================
--- branches/testFACT++branch/src/Converter.cc	(revision 18277)
+++ branches/testFACT++branch/src/Converter.cc	(revision 18277)
@@ -0,0 +1,1088 @@
+// **************************************************************************
+/** @class Converter
+
+@brief A compiler for the DIM data format string
+
+The Converter class interprets arguments in a string accoring to the
+given format definition and produces a corresponding memory block from it
+which can be attached to an event later.
+
+The format is given according to the Dim format description:
+
+  The format parameter specifies the contents of the structure in the
+  form T:N[;T:N]*[;T] where T is the item type: (I)nteger, (C)haracter,
+  (L)ong, (S)hort, (F)loat, (D)ouble, X(tra long) and N is the
+  number of such items. The type alone at the end means all following items
+  are of the same type. Example: "I:3;F:2;C" means 3 Integers, 2 Floats and
+  characters until the end. The format parameter is used for
+  communicating between different platforms.
+
+Note, that the strange notation T:N[;T:N]*[;T] is meant to be a regular
+expression. An Xtra-long is a 'long long'.
+
+Since Dim itself never really interpretes the format string, the programmer
+is responsible to make sure that the delivered data and the interpretation
+is consistent. Therefore the provided class can be of some help.
+
+For example:
+
+\code
+   Converter c(cout, "I:1;F:2;I:2", );
+   vector<char> v = c.GetVector("COMMAND 1 2.5 4.2 3 4");
+\endcode
+
+would produce a 20 byte data block with the integers 1, the floats
+2.5 and 4.2, and the intergers 3 and 4, in this order.
+
+The opposite direction is also possible
+
+\code
+   Converter c(cout, "I:1;F:2;I:2");
+   cout << c.GetString(pointer, size) << endl;
+ \endcode
+
+Other conversion functions also exist.
+
+To check if the compilation of the format string was successfull
+the valid() member functio is provided.
+
+The format parameter \b W(ord) is dedicated to this kind of conversion and
+not understood by Dim. In addition there are \b O(ptions) which are like
+Words but can be omitted. They should only be used at the end of the string.
+Both can be encapsulated in quotationmarks '"'. Nested quotationmarks
+are not supported. \b B(ool) is also special. It evaluates true/false,
+yes/no, on/off, 1/0.
+
+The non-DIM like format options can be switched on and off by using the
+strict argument in the constructor. In general DimCommands can use these
+options, but DimServices not.
+
+@remark Note that all values are interpreted as signed, except the single
+char (e.g. C:5)
+
+*/
+// **************************************************************************
+#include "Converter.h"
+
+#include <iostream>
+#include <iomanip>
+#include <sstream>
+
+#include <cctype>    // std::tolower
+#include <algorithm> // std::transform
+
+#include <boost/regex.hpp>
+#include <boost/tokenizer.hpp>
+
+#include "tools.h"
+#include "WindowLog.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! This function is supposed to remove all whitespaces from the format
+//! string to allow easier regular expressions later.
+//!
+//! @param s
+//!     string to be cleaned
+//!
+//! @returns
+//!     string cleaned from whitespaces
+//
+std::string Converter::Clean(std::string s)
+{
+    while (1)
+    {
+        const size_t pos = s.find_last_of(' ');
+        if (pos==string::npos)
+            break;
+        s.erase(pos, pos+1);
+    }
+
+    return s;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is just a simplification. For the time being it is used to output
+//! the interpreted contents to the logging stream. Its main purpose
+//! is to add the contents of val in a binary representation to the
+//! vector v
+//!
+//! @tparam
+//!     data type of the variable which should be added
+//!
+//! @param val
+//!     reference to the data
+//!
+//! @param v
+//!     vector<char> to which the binary copy should be added
+//!
+template <class T>
+void Converter::GetBinImp(std::vector<char> &v, const T &val) const
+{
+    wout << " (" << val << ")";
+
+    v.insert(v.end(),
+             reinterpret_cast<const char*>(&val),
+             reinterpret_cast<const char*>(&val+1));
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is just a simplification. For the time being it is used to output
+//! the interpreted contents to the logging stream. Its main purpose
+//! is to add the contents of val as a boost::any object to the
+//! vector v
+//!
+//! @tparam
+//!     data type of the variable which should be added
+//!
+//! @param val
+//!     reference to the data
+//!
+//! @param v
+//!     vector<boost::any> to which the value should be added
+//!
+template <class T>
+void Converter::GetBinImp(std::vector<boost::any> &v, const T &val) const
+{
+    wout << " (" << val << ")";
+
+    v.push_back(val);
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is just a simplification. For the time being it is used to output
+//! the interpreted contents to the logging stream. Its main purpose
+//! is to add the contents of the provided string at the end of the vector v.
+//! vector v
+//!
+//! @param val
+//!     reference to the string
+//!
+//! @param v
+//!     vector<char> to which the value should be added
+//!
+void Converter::GetBinString(std::vector<char> &v, const string &val) const
+{
+    wout << " (" << val << ")";
+
+    v.insert(v.end(), val.begin(), val.end()+1);
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is just a simplification. For the time being it is used to output
+//! the interpreted contents to the logging stream. Its main purpose
+//! is to add the contents of the provided string at the end of the vector v.
+//! vector v
+//!
+//! @param val
+//!     reference to the string
+//!
+//! @param v
+//!     vector<boost::any> to which the value should be added
+//!
+void Converter::GetBinString(std::vector<boost::any> &v, const string &val) const
+{
+    wout << " (" << val << ")";
+
+    v.push_back(val);
+    v.push_back('\n');
+}
+
+// --------------------------------------------------------------------------
+//
+//! Converts from the stringstream into the provided type.
+//!
+//! @param line
+//!     reference to the stringstream from which the data should be
+//!     interpreted
+//!
+//! @tparam
+//!     Type of the data to be returned
+//!
+//! @returns
+//!     The interpreted data
+//!
+template <class T>
+T Converter::Get(std::stringstream &line) const
+{
+    char c;
+    line >> c;
+    if (!line)
+        return T();
+
+    if (c=='0')
+    {
+        if (line.peek()==-1)
+        {
+            line.clear(ios::eofbit);
+            return 0;
+        }
+
+        if (line.peek()=='x')
+        {
+            line >> c;
+            line >> hex;
+        }
+        else
+        {
+            line.unget();
+            line >> oct;
+        }
+    }
+    else
+    {
+        line.unget();
+        line >> dec;
+    }
+
+
+    T val;
+    line >> val;
+    return val;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Converts from the stringstream into bool. It allows to use lexical
+//! boolean representations like yes/no, on/off, true/false and of
+//! course 0/1. If the conversion fails the failbit is set.
+//!
+//! @param line
+//!     reference to the stringstream from which the data should be
+//!     interpreted
+//!
+//! @returns
+//!     The boolean. 0 in case of failure
+//!
+bool Converter::GetBool(std::stringstream &line) const
+{
+    string buf;
+    line >> buf;
+    transform(buf.begin(), buf.end(), buf.begin(), ::tolower);
+
+    if (buf=="yes" || buf=="true" || buf=="on" || buf=="1")
+        return true;
+
+    if (buf=="no" || buf=="false" || buf=="off" || buf=="0")
+        return false;
+
+    line.clear(ios::failbit);
+
+    return false;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Converts from the stringstream into a string. Leading whitespaces are
+//! skipped. Everything up to the next whitespace is returned.
+//! strings can be encapsulated into escape characters ("). Note, that
+//! they cannot be nested.
+//!
+//! @param line
+//!     reference to the stringstream from which the data should be
+//!     interpreted
+//!
+//! @returns
+//!     The string
+//!
+string Converter::GetString(std::stringstream &line) const
+{
+    while (line.peek()==' ')
+        line.get();
+
+    string buf;
+    if (line.peek()=='\"')
+    {
+        line.get();
+        getline(line, buf, '\"');
+        if (line.peek()==-1)
+            line.clear(ios::eofbit);
+    }
+    else
+        line >> buf;
+
+    return buf;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Converts from the stringstream into a string. Leading whitespaces are
+//! skipped. Everything until the end-of-line is returned. A trailing
+//! \0 is added.
+//!
+//! @param line
+//!     reference to the stringstream from which the data should be
+//!     interpreted
+//!
+//! @returns
+//!     The string
+//!
+string Converter::GetStringEol(stringstream &line) const
+{
+    line >> noskipws;
+
+    const istream_iterator<char> eol; // end-of-line iterator
+    const string text(istream_iterator<char>(line), eol);
+
+    string str = Tools::Trim(text);
+    if (str.length()>=2)
+    {
+        const char b = str[0];
+        const char e = str[str.length()-1];
+
+        if ((b=='\"' && e=='\"') || (b=='\'' && e=='\''))
+        {
+            typedef boost::escaped_list_separator<char> separator;
+            const boost::tokenizer<separator> tok(str, separator("\\", " ", "\"'"));
+
+            str = *tok.begin();
+        }
+    }
+
+    return str + '\0';
+}
+
+// --------------------------------------------------------------------------
+//
+//! Converts from a binary block into a string. The type of the expected
+//! value is defined by the template parameter.
+//!
+//! @param ptr
+//!     A refrenece to the pointer of the binary representation to be
+//!     interpreted. The pointer is incremented by the sizeof the type.
+//!
+//! @tparam T
+//!     Expected type
+//!
+//! @returns
+//!     The string
+//!
+template<class T>
+string Converter::GetString(const char* &ptr) const
+{
+    const T &t = *reinterpret_cast<const T*>(ptr);
+
+    ostringstream stream;
+    stream << t;
+    ptr += sizeof(T);
+
+    return stream.str();
+}
+
+template<char>
+string Converter::GetString(const char* &ptr) const
+{
+    ostringstream stream;
+    stream << (int64_t)*ptr;
+    ptr += 1;
+
+    return stream.str();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Convert the pointer using GetString into a string and add it (prefixed
+//! by a whaitespace) to the given string.
+//!
+//! @param str
+//!     Reference to the string to which the ptr should be added
+//!
+//! @param ptr
+//!     Pointer to the binary representation. It will be incremented
+//!     according to the sze of the template argument
+//!
+//! @tparam T
+//!     Type as which the binary data should be interpreted
+//!
+template<class T>
+void Converter::Add(string &str, const char* &ptr) const
+{
+    str += ' ' + GetString<T>(ptr);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Convert the pointer into a boost::any object and add it to the
+//! provided vector
+//!
+//! @param vec
+//!     Vector to which the boost::any object should be added
+//!
+//! @param ptr
+//!     Pointer to the binary representation. It will be incremented
+//!     according to the size of the template argument
+//!
+//! @tparam T
+//!     Type as which the binary data should be interpreted
+//!
+template<class T>
+void Converter::Add(vector<boost::any> &vec, const char* &ptr) const
+{
+    vec.push_back(*reinterpret_cast<const T*>(ptr));
+    ptr += sizeof(T);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Add the string pointed to by ptr to the given string.
+//!
+//! @param str
+//!     Reference to the string to which the ptr should be added
+//!
+//! @param ptr
+//!     Pointer to the binary representation. It will be incremented
+//!     according to the size of the template argument
+//!
+void Converter::AddString(string &str, const char* &ptr) const
+{
+    const string txt(ptr);
+    str += ' '+txt;
+    ptr += txt.length()+1;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Add the string pointed to by ptr as boost::any to the provided vector
+//!
+//! @param vec
+//!     Vector to which the boost::any object should be added
+//!
+//! @param ptr
+//!     Pointer to the binary representation. It will be incremented
+//!     according to the size of the template argument
+//!
+void Converter::AddString(vector<boost::any> &vec, const char* &ptr) const
+{
+    const string txt(ptr);
+    vec.push_back(txt);
+    ptr += txt.length()+1;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Compiles the format string into fList. See Compile() for more details.
+//!
+//! @param out
+//!     Output stream to which possible logging is redirected
+//!
+//! @param fmt
+//!     Format to be compiled. For details see class reference
+//!
+//! @param strict
+//!     Setting this to true allows non DIM options, whiel false
+//!     will restrict the possible format strings to the ones also
+//!     understood by DIM.
+//!
+Converter::Converter(std::ostream &out, const std::string &fmt, bool strict)
+: wout(out), fFormat(Clean(fmt)), fList(Compile(out, fmt, strict))
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Compiles the format string into fList.
+//!
+//! Output by default is redirected to cout.
+//!
+//! @param fmt
+//!     Format to be compiled. For details see class reference
+//!
+//! @param strict
+//!     Setting this to true allows non DIM options, whiel false
+//!     will restrict the possible format strings to the ones also
+//!     understood by DIM.
+//!
+Converter::Converter(const std::string &fmt, bool strict)
+: wout(cout), fFormat(Clean(fmt)), fList(Compile(fmt, strict))
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Converts the provided format string into a vector.
+//!
+//! @tparam T
+//!     Kind of data to be returned. This can either be boost::any objects
+//!     or a bnary data-block (char).
+//!
+//! @param str
+//!     Data to be converted. For details see class reference
+//!
+//! @returns
+//!    A vector of the given template type containing the arguments. In
+//!    case of failure an empty vector is returned.
+//!
+//! @throws
+//!    std::runtime_error if the conversion was not successfull
+//!
+template <class T>
+vector<T> Converter::Get(const std::string &str) const
+{
+    if (!valid())
+        throw runtime_error("Compiled format invalid!");
+
+    // If the format is empty we are already done
+    if (empty() && str.empty())
+    {
+        wout << endl;
+        return vector<T>();
+    }
+
+    int arg = 0;
+    stringstream line(str);
+
+    vector<T> data;
+
+    for (Converter::FormatList::const_iterator i=fList.begin(); i<fList.end()-1; i++)
+    {
+        if (*i->first.first == typeid(string))
+        {
+            GetBinString(data, GetStringEol(line));
+            line.clear(ios::eofbit);
+            continue;
+        }
+
+        // Get as many items from the input line as requested
+        for (int j=0; j<i->second.first; j++)
+        {
+            switch (i->first.first->name()[0])
+            {
+            case 'b': GetBinImp(data, GetBool(line)); break;
+            case 's': GetBinImp(data, Get<short>    (line)); break;
+            case 'i': GetBinImp(data, Get<int>      (line)); break;
+            case 'l': GetBinImp(data, Get<long>     (line)); break;
+            case 'f': GetBinImp(data, Get<float>    (line)); break;
+            case 'd': GetBinImp(data, Get<double>   (line)); break;
+            case 'x': GetBinImp(data, Get<long long>(line)); break;
+            case 'c':
+                {
+                    const unsigned short val = Get<unsigned short>(line);
+                    if (val>255)
+                        line.setstate(ios::failbit);
+                    GetBinImp(data, static_cast<unsigned char>(val));
+                }
+                break;
+            case 'N':
+                GetBinString(data, GetString(line));
+                if (*i->first.first == typeid(O))
+                    line.clear(ios::goodbit|(line.rdstate()&ios::eofbit));
+                break;
+            default:
+                // This should never happen!
+                throw runtime_error("Format '"+string(i->first.first->name())+" not supported!");
+            }
+
+            arg++;
+        }
+
+        if (!line)
+            break;
+    }
+    wout << endl;
+
+    // Something wrong with the conversion (e.g. 5.5 for an int)
+    if (line.fail() && !line.eof())
+    {
+        line.clear(); // This is necesasary to get a proper response from tellg()
+
+        ostringstream err;
+        err << "Error converting argument at " << arg << " [fmt=" << fFormat << "]!\n";
+        err << line.str() << "\n";
+        err << setw(int(line.tellg())) << " " << "^\n";
+        throw runtime_error(err.str());
+    }
+
+    // Not enough arguments, we have not reached the end
+    if (line.fail() && line.eof())
+    {
+        line.clear();
+
+        ostringstream err;
+        err << "Not enough arguments [fmt=" << fFormat << "]!\n";
+        err << line.str() << "\n";
+        err << setw(int(line.tellg())+1) << " " << "^\n";
+        throw runtime_error(err.str());
+    }
+
+    // Too many arguments, we have not reached the end
+    // Unfortunately, this can also mean that there is something
+    // wrong with the last argument
+    if (line.good() && !line.eof())
+    {
+        ostringstream err;
+        err << "More arguments available than expected [fmt=" << fFormat << "]!\n";
+        err << line.str() << "\n";
+        err << setw(int(line.tellg())+1) << " " << "^\n";
+        throw runtime_error(err.str());
+    }
+
+    return data;
+
+}
+
+std::vector<boost::any> Converter::GetAny(const std::string &str) const
+{
+    return Get<boost::any>(str);
+}
+
+std::vector<char> Converter::GetVector(const std::string &str) const
+{
+    return Get<char>(str);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Converts the provided data block into a vector of boost::any or
+//! a string.
+//!
+//! @tparam T
+//!     Kind of data to be returned. This can either be boost::any objects
+//!     or a string
+//!
+//! @returns
+//!    A vector of the given template type containing the arguments. In
+//!    case of failure an empty vector is returned.
+//!
+//! @throws
+//!    std::runtime_error if the conversion was not successfull
+//!
+template<class T>
+T Converter::Get(const void *dat, size_t size) const
+{
+    if (!valid())
+        throw runtime_error("Compiled format invalid!");
+
+    if (dat==0)
+        throw runtime_error("Data pointer == NULL!");
+
+    const char *ptr = reinterpret_cast<const char *>(dat);
+
+    T text;
+    for (Converter::FormatList::const_iterator i=fList.begin(); i<fList.end()-1; i++)
+    {
+        if (ptr-size>dat)
+        {
+            ostringstream err;
+            err << "Format description [fmt=" << fFormat << "|size=" << GetSize() << "] exceeds available data size (" << size << ")";
+            throw runtime_error(err.str());
+        }
+
+        if (*i->first.first == typeid(string))
+        {
+            if (size>0)
+                AddString(text, ptr);
+            if (ptr-size<=dat)
+                return text;
+            break;
+        }
+
+        // Get as many items from the input line as requested
+        for (int j=0; j<i->second.first; j++)
+        {
+            switch (i->first.first->name()[0])
+            {
+            case 'b': Add<bool>     (text, ptr); break;
+            case 'c': Add<char>     (text, ptr); break;
+            case 's': Add<short>    (text, ptr); break;
+            case 'i': Add<int>      (text, ptr); break;
+            case 'l': Add<long>     (text, ptr); break;
+            case 'f': Add<float>    (text, ptr); break;
+            case 'd': Add<double>   (text, ptr); break;
+            case 'x': Add<long long>(text, ptr); break;
+            case 'N': AddString(text, ptr);      break;
+
+            case 'v':
+                // This should never happen!
+                throw runtime_error("Type 'void' not supported!");
+            default:
+                throw runtime_error("TypeId '"+string(i->first.first->name())+"' not known!");
+            }
+        }
+    }
+
+    if (ptr-size!=dat)
+    {
+        ostringstream err;
+        err << "Data block size (" << size << ") doesn't fit format description [fmt=" << fFormat << "|size=" << GetSize() <<"]";
+        throw runtime_error(err.str());
+    }
+
+    return text;
+}
+
+std::vector<boost::any> Converter::GetAny(const void *dat, size_t size) const
+{
+    return Get<vector<boost::any>>(dat, size);
+}
+
+std::vector<char> Converter::GetVector(const void *dat, size_t size) const
+{
+    const string ref = GetString(dat, size);
+
+    vector<char> data;
+    data.insert(data.begin(), ref.begin()+1, ref.end());
+    data.push_back(0);
+
+    return data;
+}
+
+string Converter::GetString(const void *dat, size_t size) const
+{
+    const string s = Get<string>(dat, size);
+    return s.empty() ? s : s.substr(1);
+}
+
+template<class T>
+Converter::Type Converter::GetType()
+{
+    Type t;
+    t.first  = &typeid(T);
+    t.second = sizeof(T);
+    return t;
+}
+
+template<class T>
+Converter::Type Converter::GetVoid()
+{
+    Type t;
+    t.first  = &typeid(T);
+    t.second = 0;
+    return t;
+}
+
+// --------------------------------------------------------------------------
+//
+//! static function to compile a format string.
+//!
+//! @param out
+//!     Output stream to which possible logging is redirected
+//!
+//! @param fmt
+//!     Format to be compiled. For details see class reference
+//!
+//! @param strict
+//!     Setting this to true allows non DIM options, whiel false
+//!     will restrict the possible format strings to the ones also
+//!     understood by DIM.
+//!
+Converter::FormatList Converter::Compile(std::ostream &out, const std::string &fmt, bool strict)
+{
+    ostringstream text;
+
+    // Access both, the data and the format through a stringstream
+    stringstream stream(fmt);
+
+    // For better performance we could use sregex
+    static const boost::regex expr1("^([CSILFDXBOW])(:([1-9]+[0-9]*))?$");
+    static const boost::regex expr2("^([CSILFDX])(:([1-9]+[0-9]*))?$");
+
+    FormatList list;
+    Format   format;
+
+    // Tokenize the format
+    string buffer;
+    while (getline(stream, buffer, ';'))
+    {
+        boost::smatch what;
+        if (!boost::regex_match(buffer, what, strict?expr2:expr1))
+        {
+            out << kRed << "Wrong format string '" << buffer << "'!" << endl;
+            return FormatList();
+        }
+
+        const string t = what[1]; // type id
+        const string n = what[3]; // counter
+
+        const int cnt = n.empty() ? 0 : stoi(n);
+
+        // if the :N part was not given assume 1
+        format.second.first = cnt == 0 ? 1 : cnt;
+
+        /*
+        if (strict && t[0]=='C' && cnt>0)
+        {
+            out << kRed << "Dim doesn't support the format C with N>0!" << endl;
+            return FormatList();
+        }*/
+
+        // Check if the format is just C (without a number)
+        // That would mean that it is a \0 terminated string
+        if (t[0]=='C' && cnt==0)
+        {
+            format.first = GetType<string>();
+            list.push_back(format);
+            format.second.second = 0; // end position not known
+            break;
+        }
+
+        // Get as many items from the input line as requested
+        switch (t[0])
+        {
+        case 'B':  format.first = GetType<bool>();      break;
+        case 'C':  format.first = GetType<char>();      break;
+        case 'S':  format.first = GetType<short>();     break;
+        case 'I':  format.first = GetType<int>();       break;
+        case 'L':  format.first = GetType<long>();      break;
+        case 'F':  format.first = GetType<float>();     break;
+        case 'D':  format.first = GetType<double>();    break;
+        case 'X':  format.first = GetType<long long>(); break;
+        case 'O':  format.first = GetVoid<O>();         break;
+        case 'W':  format.first = GetVoid<W>();         break;
+        default:
+            // This should never happen!
+            out << kRed << "Format '" << t[0] << " not known!" << endl;
+            return list;
+        }
+
+        list.push_back(format);
+        format.second.second += format.first.second * format.second.first;
+    }
+
+    format.first = GetVoid<void>();
+    format.second.first = 0;
+
+    list.push_back(format);
+
+    return list;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Same as Compile(ostream&,string&,bool) but cout is used as the default
+//! output stream.
+//!
+//!
+Converter::FormatList Converter::Compile(const std::string &fmt, bool strict)
+{
+    return Compile(cout, fmt, strict);
+}
+
+vector<string> Converter::Regex(const string &expr, const string &line)
+{
+    const boost::regex reg(expr);
+
+    boost::smatch what;
+    if (!boost::regex_match(line, what, reg, boost::match_extra))
+        return vector<string>();
+
+    vector<string> ret;
+    for (unsigned int i=0; i<what.size(); i++)
+        ret.push_back(what[i]);
+
+    return ret;
+}
+
+// --------------------------------------------------------------------------
+//
+//! @param dest
+//!    Array to which the destination data is written
+//! @param src
+//!    Array with the source data according to the format stored in the
+//!    Converter
+//! @param size
+//!    size of the destination data in bytes
+//!
+void Converter::ToFits(void *dest, const void *src, size_t size) const
+{
+   // crawl through the src buffer and copy the data appropriately to the
+   // destination buffer
+   // Assumption: the string is always last. This way we
+   // use the provided size to determine the number
+   // of character to copy
+
+   char       *charDest = static_cast<char*>(dest);
+   const char *charSrc  = static_cast<const char*>(src);
+
+   // We skip the last element 'v'
+   for (Converter::FormatList::const_iterator i=fList.begin(); i!=fList.end()-1; i++)
+   {
+       /*
+        // For speed reasons we don't do a check in the loop
+       if (charDest-size>dest || charSrc-size>src)
+       {
+           ostringstream err;
+           err << "Format description [fmt=" << fFormat << "] exceeds available data size (" << size << ")";
+           throw runtime_error(err.str());
+       }
+       */
+
+       // Skip strings (must be the last, so we could just skip it)
+       const char type = i->first.first->name()[0];
+       if (type=='S')
+       {
+           charSrc += strlen(charSrc)+1;
+           continue;
+       }
+
+       const int s = i->first.second;      // size of element
+       const int n = i->second.first;      // number of elements
+
+       // Check if there are types with unknown sizes
+       if (s==0 || n==0)
+           throw runtime_error(string("Type '")+type+"' not supported converting to FITS.");
+
+       // Let the compiler do some optimization
+       switch (s)
+       {
+       case 1: memcpy(charDest, charSrc, s*n); charSrc+=s*n; charDest+=s*n; break;
+       case 2: for (int j=0; j<n; j++) { reverse_copy(charSrc, charSrc+2, charDest); charSrc+=2; charDest+=2; } break;
+       case 4: for (int j=0; j<n; j++) { reverse_copy(charSrc, charSrc+4, charDest); charSrc+=4; charDest+=4; } break;
+       case 8: for (int j=0; j<n; j++) { reverse_copy(charSrc, charSrc+8, charDest); charSrc+=8; charDest+=8; } break;
+       }
+   }
+
+   if (charDest-size!=dest/* || charSrc-size!=src*/)
+   {
+       ostringstream err;
+       err << "ToFits - Data block size (" << size << ") doesn't fit format description [fmt=" << fFormat << "|size=" << GetSize() << "]";
+       throw runtime_error(err.str());
+   }
+}
+
+vector<string> Converter::ToStrings(const void *src/*, size_t size*/) const
+{
+   const char *charSrc = static_cast<const char*>(src);
+
+   vector<string> rc;
+
+   for (Converter::FormatList::const_iterator i=fList.begin(); i!=fList.end(); i++)
+   {
+       /*
+       if (charSrc-size>src)
+       {
+           ostringstream err;
+           err << "Format description [fmt=" << fFormat << "] exceeds available data size (" << size << ")";
+           throw runtime_error(err.str());
+       }*/
+
+       const char type = i->first.first->name()[0];
+       if (type=='v')
+           break;
+
+       if (type=='S')
+       {
+           const string str(charSrc);
+           rc.push_back(str);
+           charSrc += str.length()+1;
+           continue;
+       }
+
+       // string types
+       //if (string("bsilfdxc").find_first_of(type)==string::npos)
+       //    throw runtime_error(string("Type '")+type+"' not supported converting to FITS.");
+
+       const int s = i->first.second;      // size of element
+       const int n = i->second.first;      // number of elements
+
+       charSrc  += s*n;
+   }
+
+   return rc;
+
+   /*
+   if (charSrc-size!=src)
+   {
+       ostringstream err;
+       err << "Data block size (" << size << ") doesn't fit format description [fmt=" << fFormat << "]";
+       throw runtime_error(err.str());
+   }*/
+}
+
+vector<char> Converter::ToFits(const void *src, size_t size) const
+{
+    vector<char> dest(size);
+    ToFits(dest.data(), src, size);
+    return dest;
+}
+
+string Converter::ToFormat(const vector<string> &fits)
+{
+    ostringstream str;
+    for (vector<string>::const_iterator it=fits.begin(); it!=fits.end(); it++)
+    {
+        size_t id=0;
+        int n;
+
+        try
+        {
+            n = stoi(*it, &id);
+        }
+        catch (exception&)
+        {
+            n  = 1;
+        }
+
+        if (n==0)
+            continue;
+
+        switch ((*it)[id])
+        {
+        case 'A':
+        case 'L': 
+        case 'B': str << ";C:" << n; break;
+        case 'J': str << ";I:" << n; break;
+        case 'I': str << ";S:" << n; break;
+        case 'K': str << ";X:" << n; break;
+        case 'E': str << ";F:" << n; break;
+        case 'D': str << ";D:" << n; break;
+        default:
+            throw runtime_error("ToFormat - id not known.");
+        }
+    }
+
+    return str.str().substr(1);
+}
+
+vector<string> Converter::GetFitsFormat() const
+{
+    //we've got a nice structure describing the format of this service's messages.
+    //Let's create the appropriate FITS columns
+    vector<string> vec;
+    for (FormatList::const_iterator it=fList.begin(); it!=fList.end(); it++)
+    {
+         ostringstream dataQualifier;
+         dataQualifier << it->second.first;
+
+         switch (it->first.first->name()[0])
+         {
+         case 'c': dataQualifier << 'B'; break;
+         case 's': dataQualifier << 'I'; break;
+         case 'i': dataQualifier << 'J'; break;
+         case 'l': dataQualifier << 'J'; break;
+         case 'f': dataQualifier << 'E'; break;
+         case 'd': dataQualifier << 'D'; break;
+         case 'x': dataQualifier << 'K'; break;
+         case 'v':
+         case 'S': //we skip the variable length strings
+             continue;
+
+         default:
+             throw runtime_error("GetFitsFormat - unknown FITS format.");
+         };
+
+         vec.push_back(dataQualifier.str());
+    }
+
+    return vec;
+}
+
+void Converter::Print(std::ostream &out) const
+{
+    for (FormatList::const_iterator i=fList.begin(); i!=fList.end(); i++)
+    {
+        out << "Type=" << i->first.first->name() << "[" << i->first.second << "]  ";
+        out << "N=" << i->second.first << "  ";
+        out << "offset=" << i->second.second << endl;
+    }
+}
+
+void Converter::Print() const
+{
+    return Print(cout);
+}
Index: branches/testFACT++branch/src/Converter.h
===================================================================
--- branches/testFACT++branch/src/Converter.h	(revision 18277)
+++ branches/testFACT++branch/src/Converter.h	(revision 18277)
@@ -0,0 +1,179 @@
+#ifndef FACT_Converter
+#define FACT_Converter
+
+#include <math.h>
+
+#include <vector>
+#include <iomanip>
+#include <sstream>
+
+#include <boost/any.hpp>
+
+#include <stdexcept>
+
+#include <iostream>
+
+class Converter
+{
+public:
+    typedef std::pair<const std::type_info *, int> Type;
+    typedef std::pair<int, int>                    Offset;
+    typedef std::pair<Type, Offset>                Format;
+    typedef std::vector<Format>                    FormatList;
+
+    struct O { };
+    struct W { };
+
+    static std::string Clean(std::string s);
+
+private:
+    std::ostream &wout;        /// ostream to which output is redirected
+
+    const std::string fFormat; /// Original format string
+    const FormatList  fList;   /// Compiled format description
+
+    template <class T>
+        T Get(std::stringstream &line) const;
+
+    bool        GetBool(std::stringstream &line) const;
+    std::string GetString(std::stringstream &line) const;
+    std::string GetStringEol(std::stringstream &line) const;
+
+    template<class T>
+        void GetBinImp(std::vector<char> &v, const T &val) const;
+    template<class T>
+        void GetBinImp(std::vector<boost::any> &v, const T &val) const;
+
+    void GetBinString(std::vector<char> &v, const std::string &val) const;
+    void GetBinString(std::vector<boost::any> &v, const std::string &val) const;
+
+    template<class T>
+        std::string GetString(const char *&data) const;
+    template<char>
+        std::string GetString(const char* &ptr) const;
+
+    template<class T>
+        static Type GetType();
+    template<class T>
+        static Type GetVoid();
+
+    template <class T>
+        std::vector<T> Get(const std::string &str) const;
+    template <class T>
+        T Get(const void *d, size_t size) const;
+
+
+
+    template<class T>
+        void Add(std::string &str, const char* &ptr) const;
+    void AddString(std::string &str, const char* &ptr) const;
+    template<class T>
+        void Add(std::vector<boost::any> &vec, const char* &ptr) const;
+    void AddString(std::vector<boost::any> &vec, const char* &ptr) const;
+
+
+public:
+    Converter(std::ostream &out, const std::string &fmt, bool strict=true);
+    Converter(const std::string &fmt, bool strict=true);
+
+    /// @returns whether the interpreted format was valid but empty ("")
+    bool empty() const { return fList.size()==1 && fList.back().first.second==0; }
+
+    /// @returns whether the compilation was successfull
+    bool valid() const { return !fList.empty() && fList.back().first.second==0; }
+
+    /// @returns true if the compilation failed
+    bool operator!() const { return !valid(); }
+
+    const FormatList &GetList() const { return fList; }
+    size_t GetSize() const { return fList.size()==0 ? 0 : fList.back().second.second; }
+
+    static FormatList Compile(std::ostream &out, const std::string &fmt, bool strict=false);
+    static FormatList Compile(const std::string &fmt, bool strict=false);
+
+    std::string             GetString(const void *d, size_t size) const;
+    std::vector<char>       GetVector(const void *d, size_t size) const;
+    std::vector<boost::any> GetAny(const void *d, size_t size) const;
+
+    std::vector<boost::any> GetAny(const std::string &str) const;
+    std::vector<char>       GetVector(const std::string &str) const;
+
+    std::vector<std::string> ToStrings(const void *src/*, size_t size*/) const;
+    void ToFits(void* dest, const void* src, size_t size) const;
+
+    std::vector<char> ToFits(const void* src, size_t size) const; 
+    std::vector<std::string> GetFitsFormat() const;
+
+    static std::string ToFormat(const std::vector<std::string> &fits);
+
+    template<typename T>
+        static std::string GetHex(const void *dat, size_t size, size_t col=0, bool prefix=true)
+    {
+        if (size%sizeof(T)!=0)
+            throw std::runtime_error("GetHex: Total not dividable by typesize.");
+
+        const T *ptr = reinterpret_cast<const T*>(dat);
+
+        std::ostringstream text;
+        text << std::hex;
+
+        const size_t w = nearbyint(ceil(log2(size+1)))/4+1;
+
+        for (size_t i=0; i<size/sizeof(T); i++)
+        {
+            if (prefix && col!=0 && i%col==0)
+                text << std::setfill('0') << std::setw(w) << i << "| ";
+
+            text << std::setfill('0') << std::setw(2*sizeof(T));
+            text << (unsigned int)ptr[i] << ':';
+
+            if (col!=0 && i%col==col-1)
+                text << '\n';
+
+        }
+
+        return text.str();
+    }
+
+    template<typename T, typename S>
+        static std::string GetHex(const S &s, size_t col=0, bool prefix=true)
+    {
+        return GetHex<T>(&s, sizeof(S), col, prefix);
+    }
+
+    void Print(std::ostream &out) const;
+    void Print() const;
+
+    static std::vector<std::string> Regex(const std::string &expr, const std::string &line);
+};
+
+#endif
+
+// ***************************************************************************
+/** @template GetHex(const void *dat, size_t size, size_t col, bool prefix)
+
+Converts from a binary block into a hex representation.
+
+@param dat
+    Pointer to the data block
+
+@param size
+    Size of the data block (in bytes)
+
+@param col
+    Number of columns before new line (zero <default> to write a
+    continous stream
+
+@param prefix
+    Boolean which defines whether each line should be prefixed with a counter,
+    the default is true. It is ignored if col==0
+
+@tparam T
+    type to which the data should be converted. Most usefull types are
+    unsigned byte, unsigned short, unsigned int, uint8_t, uint16_t, ...
+
+@returns
+    The string
+
+**/
+// ***************************************************************************
Index: branches/testFACT++branch/src/DataCalib.cc
===================================================================
--- branches/testFACT++branch/src/DataCalib.cc	(revision 18277)
+++ branches/testFACT++branch/src/DataCalib.cc	(revision 18277)
@@ -0,0 +1,362 @@
+#include "DataCalib.h"
+
+#include "EventBuilder.h"
+#include "FitsFile.h"
+#include "DimDescriptionService.h"
+
+#include "externals/fits.h"
+
+using namespace std;
+
+DrsCalibration DataCalib::fData;
+bool DataCalib::fProcessing = false;
+vector<float> DataCalib::fStats(1440*1024*6+160*1024*2+4);
+
+void DataCalib::Restart()
+{
+    fData.Clear();
+
+    reinterpret_cast<uint32_t*>(fStats.data())[0] = 0;
+    reinterpret_cast<uint32_t*>(fStats.data())[1] = 0;
+    reinterpret_cast<uint32_t*>(fStats.data())[2] = 0;
+    reinterpret_cast<uint32_t*>(fStats.data())[3] = 0;
+
+    int i=0;
+    while (i<1024*1440*2+4)  // Set mean and RMS to 0
+        fStats[i++] = 0;
+    while (i<1024*1440*3+4)
+        fStats[i++] = 2000./4096; // Set mean to 0.5
+    while (i<1440*1024*6+160*1024*2+4)
+        fStats[i++] = 0;   // Set everything else to 0
+
+    fProcessing = false;
+}
+
+bool DataCalib::ResetTrgOff(DimDescribedService &dim, DimDescribedService &runs)
+{
+    if (fData.fStep!=3)
+        return false;
+
+    for (int i=1024*1440*4+4; i<1440*1024*6+160*1024*2+4; i++)
+        fStats[i] = 0;
+
+    reinterpret_cast<uint32_t*>(fStats.data())[0] = 0;
+    reinterpret_cast<uint32_t*>(fStats.data())[3] = 0;
+
+    fData.fStep = 1;
+    fData.fDateRunBeg[2] = "1970-01-01T00:00:00";
+    fData.fDateRunEnd[2] = "1970-01-01T00:00:00";
+    fData.fDateEnd = fData.fDateRunEnd[1];
+    Update(dim, runs);
+    fData.fStep = 2;
+
+    return true;
+}
+
+void DataCalib::Update(DimDescribedService &dim, DimDescribedService &runs)
+{
+    const uint16_t roi = fData.fRoi;
+    const uint16_t ntm = fData.fNumTm;
+
+    vector<float> buf(1440*1024*6+160*1024*2+4);
+
+    memcpy(buf.data(), fStats.data(), (4*1024*1440+4)*sizeof(float));
+
+    for (int i=0; i<1440; i++)
+    {
+        memcpy(buf.data()+4+1440*1024*4 + i*1024, fStats.data()+4 + 4*1024*1440 + roi*i,            roi*sizeof(float));
+        memcpy(buf.data()+4+1440*1024*5 + i*1024, fStats.data()+4 + 4*1024*1440 + roi*1440 + roi*i, roi*sizeof(float));
+    }
+
+    /*
+    for (int i=0; i<ntm; i++)
+    {
+        memcpy(buf.data()+4+1440*1024*6          + i*1024, fStats.data()+4 + 4*1024*1440 + 2*roi*1440,       roi*sizeof(float));
+        memcpy(buf.data()+4+1440*1024*6+160*1024 + i*1024, fStats.data()+4 + 4*1024*1440 + 2*roi*1440+i*roi, roi*sizeof(float));
+    }*/
+
+#warning Time marker channels not sent
+
+    const Time time(fData.fDateObs);
+    const uint32_t night = time.NightAsInt();
+
+    dim.setQuality(fData.fStep);
+    dim.setData(buf);
+    dim.Update(time);
+
+    vector<uint32_t> data(5);
+    memcpy(data.data(), buf.data(), 4*sizeof(uint32_t));
+    data[4] = night<19700000 ? 0 : night;
+
+    runs.setQuality(fData.fStep);
+    runs.setData(data);
+    runs.Update(time);
+}
+
+bool DataCalib::Open(const RUN_HEAD &h, const FAD::RunDescription &d)
+{
+    if (h.NPix != 1440)
+    {
+        Error("Number of pixels in header for run "+to_string(GetRunId())+" not 1440.");
+        return false;
+    }
+
+    if (fProcessing)
+    {
+        Warn("Previous DRS calibration run not yet finished (current run "+to_string(GetRunId())+")");
+        return false;
+    }
+
+    if (fData.fStep==3)
+    {
+        Warn("DRS Calibration already finished before current run "+to_string(GetRunId())+"... please restart!");
+        return false;
+    }
+
+    if (fData.fStep!=2 && h.Nroi != 1024)
+    {
+        ostringstream msg;
+        msg << "Region of interest of run " << GetRunId() << " not 1024, but " << h.Nroi << " in step " << fData.fStep <<  " ... as it ought to be.";
+        Error(msg);
+        return false;
+    }
+
+    vector<uint16_t> dac(8);
+/*
+    // We don't check consistency over several boards because this is done
+    // by the eventCheck routine already
+    for (int i=0; i<h.NBoard; i++)
+    {
+        const PEVNT_HEADER &hh = h.FADhead[i];
+
+        if (hh.start_package_flag==0)
+            continue;
+
+        for (int j=0; j<8; j++)
+            dac[j] = hh.dac[j];
+
+        break;
+    }
+
+    for (int i=1; i<7; i++)
+    {
+        if (i==3 || dac[i]==dac[i+1])
+            continue;
+
+        ostringstream msg;
+        msg << "Values of DAC" << i << " (" << dac[i] << ") and DAC" << i+1 <<" (" << dac[i+1] << ") do not match... cannot take DRS calibration!";
+        fMsg.Error(msg);
+        return false;
+    }
+
+    if (fData.fStep>0)
+    {
+        for (int j=0; j<8; j++)
+        {
+            if (fData.fDAC[j]==dac[j])
+                continue;
+
+            ostringstream msg;
+            msg << "DAC value from previous run (DAC" << j << "=" << fData.fDAC[j] << ") and current run ";
+            msg << "(DAC" << j << "=" << dac[j] << ") inconsistent... cannot take DRS calibration!";
+            fMsg.Error(msg);
+            return false;
+        }
+    }
+
+    memcpy(fData.fDAC, dac.data(), 8*sizeof(uint16_t));
+*/
+    fProcessing = true;
+
+    const bool hastm = h.Nroi<=512 && h.NroiTM>=2*h.Nroi;
+
+    Reset();
+    InitSize(hastm ? 1600 : 1440, h.Nroi);
+
+    fData.fRoi   = fNumSamples;
+    fData.fNumTm = hastm ? 160 : 0;
+
+    return DataWriteFits2::Open(h, d);
+}
+
+bool DataCalib::WriteEvt(const EVT_CTRL2 &evt)
+{
+    // FIXME: SET StartPix to 0 if StartPix is -1
+
+    const EVENT &e = *evt.fEvent;
+
+    if (fData.fStep==0)
+    {
+        AddRel(e.Adc_Data, e.StartPix);
+    }
+    if (fData.fStep==1)
+    {
+        AddRel(e.Adc_Data, e.StartPix, fData.fOffset.data(), fData.fNumOffset);
+    }
+    if (fData.fStep==2)
+    {
+        AddAbs(e.Adc_Data, e.StartPix, fData.fOffset.data(), fData.fNumOffset);
+    }
+
+    return DataWriteFits2::WriteEvt(evt);
+}
+
+bool DataCalib::ReadFits(const string &str, MessageImp &msg)
+{
+    if (fProcessing)
+    {
+        msg.Error("Reading "+str+" failed: DRS calibration in process.");
+        return false;
+    }
+
+    try
+    {
+        const string txt = fData.ReadFitsImp(str, fStats);
+        if (txt.empty())
+            return true;
+
+        msg.Error(txt);
+        return false;
+    }
+    catch (const runtime_error &e)
+    {
+        msg.Error("Exception reading "+str+": "+e.what());
+        return false;
+    }
+}
+/*
+void DataCalib::WriteFitsImp(const string &filename, const vector<float> &vec) const
+{
+    const uint16_t roi = fData.fRoi;
+    const uint16_t ntm = fData.fNumTm;
+
+    const size_t n = 1440*1024*4 + 1440*roi*2 + ntm*roi*2 + 3;
+
+    // The vector has a fixed size
+    //if (vec.size()!=n+1)
+    //    throw runtime_error("Size of vector does not match region-of-interest");
+
+    ofits file(filename.c_str());
+
+    file.AddColumnInt("RunNumberBaseline");
+    file.AddColumnInt("RunNumberGain");
+    file.AddColumnInt("RunNumberTriggerOffset");
+
+    file.AddColumnFloat(1024*1440, "BaselineMean",        "mV");
+    file.AddColumnFloat(1024*1440, "BaselineRms",         "mV");
+    file.AddColumnFloat(1024*1440, "GainMean",            "mV");
+    file.AddColumnFloat(1024*1440, "GainRms",             "mV");
+    file.AddColumnFloat( roi*1440, "TriggerOffsetMean",   "mV");
+    file.AddColumnFloat( roi*1440, "TriggerOffsetRms",    "mV");
+    file.AddColumnFloat( roi*ntm,  "TriggerOffsetTMMean", "mV");
+    file.AddColumnFloat( roi*ntm,  "TriggerOffsetTMRms",  "mV");
+
+    DataWriteFits2::WriteDefaultKeys(file);
+
+    file.SetInt("STEP",     fData.fStep, "");
+
+    file.SetInt("ADCRANGE", 2000, "Dynamic range of the ADC in mV");
+    file.SetInt("DACRANGE", 2500, "Dynamic range of the DAC in mV");
+    file.SetInt("ADC",      12,   "Resolution of ADC in bits");
+    file.SetInt("DAC",      16,   "Resolution of DAC in bits");
+    file.SetInt("NPIX",     1440, "Number of channels in the camera");
+    file.SetInt("NTM",      ntm,  "Number of time marker channels");
+    file.SetInt("NROI",     roi,  "Region of interest");
+
+    file.SetInt("NBOFFSET", fData.fNumOffset,       "Num of entries for offset calibration");
+    file.SetInt("NBGAIN",   fData.fNumGain/1953125, "Num of entries for gain calibration");
+    file.SetInt("NBTRGOFF", fData.fNumTrgOff,       "Num of entries for trigger offset calibration");
+
+    // file.WriteKeyNT("DAC_A",    fData.fDAC[0],    "Level of DAC 0 in DAC counts")   ||
+    // file.WriteKeyNT("DAC_B",    fData.fDAC[1],    "Leval of DAC 1-3 in DAC counts") ||
+    // file.WriteKeyNT("DAC_C",    fData.fDAC[4],    "Leval of DAC 4-7 in DAC counts") ||
+
+    file.WriteTableHeader("DrsCalibration");
+    file.WriteRow(vec.data()+1, n*sizeof(float));
+}
+*/
+bool DataCalib::Close(const EVT_CTRL2 &evt)
+{
+    if (fNumEntries==0)
+    {
+        ostringstream str;
+        str << "DRS calibration run (run=" << GetRunId() << ", step=" << fData.fStep << ", roi=" << fData.fRoi << ") has 0 events.";
+        Warn(str);
+    }
+
+    if (fData.fStep==0)
+    {
+        fData.fOffset.assign(fSum.begin(), fSum.end());
+        fData.fNumOffset = fNumEntries;
+
+        for (int i=0; i<1024*1440; i++)
+            fData.fGain[i] = 4096*fNumEntries;
+
+        // Scale ADC data from 12bit to 2000mV
+        GetSampleStats(fStats.data()+4, 2000./4096);
+        reinterpret_cast<uint32_t*>(fStats.data())[1] = GetRunId();;
+    }
+    if (fData.fStep==1)
+    {
+        fData.fGain.assign(fSum.begin(), fSum.end());
+        fData.fNumGain = fNumEntries;
+
+        // DAC:  0..2.5V == 0..65535            2500*50000   625*50000  625*3125
+        // V-mV: 1000                           ----------   ---------  --------
+        //fNumGain *= 2500*50000;                  65536       16384      1024
+        //for (int i=0; i<1024*1440; i++)
+        //    fGain[i] *= 65536;
+        fData.fNumGain *= 1953125;
+        for (int i=0; i<1024*1440; i++)
+            fData.fGain[i] *= 1024;
+
+        // Scale ADC data from 12bit to 2000mV
+        GetSampleStats(fStats.data()+1024*1440*2+4, 2000./4096/fData.fNumOffset);//0.5);
+        reinterpret_cast<uint32_t*>(fStats.data())[2] = GetRunId();;
+    }
+    if (fData.fStep==2)
+    {
+        fData.fTrgOff.assign(fSum.begin(), fSum.end());
+        fData.fNumTrgOff = fNumEntries;
+
+        // Scale ADC data from 12bit to 2000mV
+        GetSampleStats(fStats.data()+1024*1440*4+4, 2000./4096/fData.fNumOffset);//0.5);
+        reinterpret_cast<uint32_t*>(fStats.data())[0] = fNumSamples;
+        reinterpret_cast<uint32_t*>(fStats.data())[3] = GetRunId();
+    }
+
+    const string beg = GetTstart().Iso();
+    const string end = GetTstop().Iso();
+
+    if (fData.fStep==0)
+        fData.fDateObs = beg;
+    fData.fDateEnd = end;
+
+    fData.fDateRunBeg[fData.fStep] = beg;
+    fData.fDateRunEnd[fData.fStep] = end;
+
+    if (fData.fStep<=2)
+    {
+        const string filename = FormFileName("drs.fits");
+        try
+        {
+            fData.WriteFitsImp(filename, fStats, GetNight());
+
+            ostringstream str;
+            str << "Wrote DRS calibration data (run=" << GetRunId() << ", step=" << fData.fStep << ", roi=" << fData.fRoi << ") to '" << filename << "'";
+            Info(str);
+        }
+        catch (const exception &e)
+        {
+            Error("Exception writing run "+to_string(GetRunId())+" '"+filename+"': "+e.what());
+        }
+    }
+
+    Update(fDim, fDimRuns);
+
+    fData.fStep++;
+
+    fProcessing = false;
+
+    return DataWriteFits2::Close(evt);
+}
Index: branches/testFACT++branch/src/DataCalib.h
===================================================================
--- branches/testFACT++branch/src/DataCalib.h	(revision 18277)
+++ branches/testFACT++branch/src/DataCalib.h	(revision 18277)
@@ -0,0 +1,57 @@
+#ifndef FACT_DataCalib
+#define FACT_DataCalib
+
+#include "DataWriteFits2.h"
+#include "externals/DrsCalib.h"
+
+class DimDescribedService;
+
+using namespace std;
+
+class DataCalib : public DataWriteFits2, public DrsCalibrate
+{
+    static DrsCalibration fData;
+
+    static std::vector<float> fStats;     /// Storage for mean and rms values
+
+    /// State of the DRS calibration: Positiove numbers mean that
+    /// we are in a run, negative mean that it is closed
+    static bool fProcessing;
+
+    DimDescribedService &fDim;     // DimService through which statistics updates are transmitted
+    DimDescribedService &fDimRuns; // DimService through which statistics updates are transmitted
+
+//    uint16_t fDAC[8];
+
+//    void WriteFitsImp(const std::string &filename, const std::vector<float> &vec) const;
+
+    int GetDrsStep() const { return fData.fStep; }
+
+public:
+    DataCalib(const std::string &path, uint64_t night, uint32_t id, const DrsCalibration &calib, DimDescribedService &dim, DimDescribedService &runs, MessageImp &imp) : DataWriteFits2(path, night, id, calib, imp), fDim(dim), fDimRuns(runs)
+    {
+    }
+
+    static void Restart();
+    static bool ResetTrgOff(DimDescribedService &dim, DimDescribedService &runs);
+    static void Update(DimDescribedService &dim, DimDescribedService &runs);
+
+    bool Open(const RUN_HEAD &h, const FAD::RunDescription &d);
+    bool WriteEvt(const EVT_CTRL2 &);
+    bool Close(const EVT_CTRL2 &);
+
+    //static void Apply(int16_t *val, const int16_t *start, uint32_t roi);
+    static void Apply(float *vec, int16_t *val, const int16_t *start, uint32_t roi)
+    {
+        fData.Apply(vec, val, start, roi);
+    }
+
+    static bool ReadFits(const string &fname, MessageImp &msg);
+
+    static bool IsValid() { return fData.IsValid(); }
+    static int  GetStep() { return fData.fStep; }
+
+    static const DrsCalibration &GetCalibration() { return fData; }
+};
+
+#endif
Index: branches/testFACT++branch/src/DataProcessorImp.cc
===================================================================
--- branches/testFACT++branch/src/DataProcessorImp.cc	(revision 18277)
+++ branches/testFACT++branch/src/DataProcessorImp.cc	(revision 18277)
@@ -0,0 +1,105 @@
+#include "DataProcessorImp.h"
+
+#include <boost/filesystem.hpp>
+
+#include "HeadersFAD.h"
+#include "EventBuilder.h"
+#include "tools.h"
+
+using namespace std;
+
+
+// --------------------------------------------------------------------------
+//
+//! This creates an appropriate file name for a particular run number and type
+//! @param runNumberq the run number for which a filename is to be created
+//! @param runType an int describing the kind of run. 0=Data, 1=Pedestal, 2=Calibration, 3=Calibrated data
+//! @param extension a string containing the extension to be appened to the file name
+//
+string DataProcessorImp::FormFileName(const string &path, uint64_t night, uint32_t runid, const string &extension)
+{
+    ostringstream name;
+
+    if (!path.empty())
+    {
+        name << path;
+        if (path[path.length()-1] != '/')
+            name << '/';
+    }
+
+    name << Tools::Form("%04d/%02d/%02d/", night/10000, (night/100)%100, night%100);
+
+    try
+    {
+        boost::filesystem::create_directories(name.str());
+    }
+    catch (const runtime_error &)
+    {
+        // File creation will fail anyway
+        //Error(e.what());
+    }
+
+    name << night << '_' << setfill('0') << setw(3) << runid << '.' << extension;
+    return name.str();
+}
+
+// =======================================================================
+
+bool DataDump::Open(const RUN_HEAD &h, const FAD::RunDescription &d)
+{
+    fFileName = "/dev/null";
+
+    ostringstream str;
+    str << this << " - "
+        << "OPEN_FILE #" << GetRunId() << ":"
+        << " Ver=" << h.Version
+        << " Nb="  << h.NBoard
+        << " Np="  << h.NPix
+        << " NTm=" << h.NTm
+        << " roi=" << h.Nroi
+        << " Typ=" << d.name;
+
+    Debug(str);
+
+    fTime = Time();
+
+    return true;
+}
+
+bool DataDump::WriteEvt(const EVT_CTRL2 &e)
+{
+    const Time now;
+    if (now-fTime<boost::posix_time::seconds(5))
+        return true;
+
+    fTime = now;
+
+    ostringstream str;
+    str << this << " - EVENT #" << e.evNum << " / " << e.trgNum;
+    Debug(str);
+
+    return true;
+}
+
+bool DataDump::Close(const EVT_CTRL2 &)
+{
+    ostringstream str;
+    str << this << " - CLOSE FILE #" << GetRunId();
+
+    Debug(str);
+
+    return true;
+}
+
+// =======================================================================
+
+bool DataDebug::WriteEvt(const EVT_CTRL2 &e)
+{
+    cout << "WRITE_EVENT #" << GetRunId() << " (" << e.evNum << ")" << endl;
+    cout << " Typ=" << e.trgTyp << endl;
+    cout << " roi=" << e.nRoi << endl;
+    cout << " tim=" << e.time.tv_sec << endl;
+
+    return true;
+}
+
Index: branches/testFACT++branch/src/DataProcessorImp.h
===================================================================
--- branches/testFACT++branch/src/DataProcessorImp.h	(revision 18277)
+++ branches/testFACT++branch/src/DataProcessorImp.h	(revision 18277)
@@ -0,0 +1,73 @@
+#ifndef FACT_DataProcessorImp
+#define FACT_DataProcessorImp
+
+#include "MessageImp.h"
+
+struct RUN_HEAD;
+struct EVT_CTRL2;
+struct RUN_CTRL2;
+
+namespace FAD
+{
+    struct RunDescription;
+};
+
+class DataProcessorImp : public MessageImp
+{
+    std::string fPath;
+    uint32_t    fNight;
+    uint32_t    fRunId;
+
+    int Write(const Time &time, const std::string &txt, int qos=kMessage)
+    {
+        return fMsg.Write(time, txt, qos);
+    }
+
+protected:
+    MessageImp &fMsg;
+    std::string fFileName;
+
+public:
+    DataProcessorImp(const std::string &path, uint64_t night, uint32_t id, MessageImp &imp) : fPath(path), fNight(night), fRunId(id), fMsg(imp) { }
+    virtual ~DataProcessorImp() { }
+
+    virtual bool Open(const RUN_HEAD &h, const FAD::RunDescription &desc) = 0;
+    virtual bool WriteEvt(const EVT_CTRL2 &) = 0;
+    virtual bool Close(const EVT_CTRL2 &) = 0;
+
+    const std::string &GetFileName() const { return fFileName; }
+
+    std::string GetPath() const { return fPath; }
+    uint32_t    GetNight() const { return fNight; }
+    uint32_t    GetRunId() const { return fRunId; }
+
+    static std::string FormFileName(const std::string &path, uint64_t night, uint32_t runid, const std::string &extension);
+    std::string FormFileName(const std::string &extension)
+    {
+        return FormFileName(fPath, fNight, fRunId, extension);
+    }
+};
+
+#include "Time.h"
+
+class DataDump : public DataProcessorImp
+{
+    Time fTime;
+
+public:
+    DataDump(const std::string &path, uint64_t night, uint32_t id, MessageImp &imp) : DataProcessorImp(path, night, id, imp) { }
+
+    bool Open(const RUN_HEAD &h, const FAD::RunDescription &d);
+    bool WriteEvt(const EVT_CTRL2 &);
+    bool Close(const EVT_CTRL2 &);
+};
+
+class DataDebug : public DataDump
+{
+public:
+    DataDebug(const std::string &path, uint64_t night, uint32_t id, MessageImp &imp) : DataDump(path, night, id, imp) { }
+
+    bool WriteEvt(const EVT_CTRL2 &);
+};
+
+#endif
Index: branches/testFACT++branch/src/DataWriteFits.cc
===================================================================
--- branches/testFACT++branch/src/DataWriteFits.cc	(revision 18277)
+++ branches/testFACT++branch/src/DataWriteFits.cc	(revision 18277)
@@ -0,0 +1,295 @@
+#include "DataWriteFits.h"
+
+#include "HeadersFAD.h"
+#include "EventBuilder.h"
+#include "Converter.h"
+
+
+using namespace std;
+
+DataWriteFits::~DataWriteFits()
+{
+    if (fFile.IsOpen())
+    {
+        WriteFooter();
+        fFile.Close();
+    }
+
+    delete fConv;
+}
+
+template <typename T>
+    void DataWriteFits::WriteKey(const string &name, const int idx, const T &value, const string &comment)
+{
+    ostringstream str;
+    str << name << idx;
+
+    ostringstream com;
+    com << "Board " << setw(2) << idx << ": " << comment;
+
+    fFile.WriteKey(str.str(), value, com.str());
+}
+
+// --------------------------------------------------------------------------
+//
+//! DataWriteFits constructor. This is the one that should be used, not the default one (parameter-less)
+//! @param runid This parameter should probably be removed. I first thought it was the run number, but apparently it is not
+//! @param h a pointer to the RUN_HEAD structure that contains the informations relative to this run
+//
+bool DataWriteFits::Open(const RUN_HEAD &h, const FAD::RunDescription &d)
+{
+    if (fConv)
+    {
+        Error("DataWriteFits::Open called twice.");
+        return false;
+    }
+
+    const int16_t realRoiTM = (h.NroiTM >= 2*h.Nroi && h.Nroi<=512) ? h.Nroi : 0;
+
+    fFile.AddColumn('I', "EventNum");
+    fFile.AddColumn('I', "TriggerNum");
+    fFile.AddColumn('S', "TriggerType");
+    fFile.AddColumn('I', "NumBoards");
+    fFile.AddColumn('C', "Errors",              4);
+    fFile.AddColumn('I', "SoftTrig");
+    fFile.AddColumn('I', "UnixTimeUTC",         2);
+    fFile.AddColumn('I', "BoardTime",           NBOARDS);
+    fFile.AddColumn('S', "StartCellData",       NPIX);
+    fFile.AddColumn('S', "StartCellTimeMarker", NTMARK);
+    fFile.AddColumn('S', "Data",                h.NPix*h.Nroi);	
+    fFile.AddColumn('S', "TimeMarker",          h.NTm*realRoiTM);
+
+    // Write length of physical pipeline (1024)
+    fConv = new Converter(Converter::ToFormat(fFile.GetColumnTypes()));
+
+    const size_t sz = (h.NPix*h.Nroi + h.NTm*realRoiTM)*2;
+    if (fConv->GetSize()-sz+4!=sizeof(EVENT))
+    {
+        ostringstream str;
+        str << "The EVENT structure size (" << sizeof(EVENT) << ") doesn't match the described FITS row (";
+        str << fConv->GetSize()-sz+4 << ")";
+        Error(str);
+        return false;
+    }
+
+    //Form filename, based on runid and run-type
+    fFileName = FormFileName("fits");
+
+    if (!fFile.OpenFile(fFileName))
+        return false;
+
+    if (!fFile.OpenTable("Events"))
+        return false;
+
+    if (!fFile.WriteDefaultKeys("fadctrl"))
+        return false;
+
+    Info("==> TODO: Write sampling frequency...");
+
+    //write header data
+    //first the "standard" keys
+    try
+    {
+        fFile.WriteKey("BLDVER",   h.Version,  "Builder version");
+        fFile.WriteKey("RUNID",    GetRunId(),  "Run number");
+//        fFile.WriteKey("RUNTYPE",  h.RunType,  "Type of run");
+        fFile.WriteKey("NBOARD",   h.NBoard,   "Number of acquisition boards");
+        fFile.WriteKey("NPIX",     h.NPix,     "Number of pixels");
+        fFile.WriteKey("NTMARK",   h.NTm,      "Number of time marker channels");
+        fFile.WriteKey("NCELLS",   1024,        "Maximum number of slices per pixels");
+        fFile.WriteKey("NROI",     h.Nroi,     "Number of slices per pixels");
+        fFile.WriteKey("NROITM",   realRoiTM,   "Number of slices per time-marker");
+
+        const uint16_t realOffset = (h.NroiTM > h.Nroi) ?  h.NroiTM - 2*h.Nroi : 0;
+        fFile.WriteKey("TMSHIFT",  realOffset,  "Shift of the start of the time marker readout wrt to data");
+
+        //FIXME should we also put the start and stop time of the received data ?
+        //now the events header related variables
+        fFile.WriteKey("CAMERA",   "MGeomCamFACT", "");
+        fFile.WriteKey("DAQ",      "DRS4",         "");
+        fFile.WriteKey("ADCRANGE", 2000,        "Dynamic range in mV");
+        fFile.WriteKey("ADC",      12,          "Resolution in bits");
+        fFile.WriteKey("RUNTYPE",  d.name,      "File type according to FAD configuration");
+
+        // Write a single key for:
+        // -----------------------
+        // Start package flag
+        // package length
+        // version number
+        // status
+        // Prescaler
+
+        // Write 40 kays for (?)
+        // Phaseshift
+        // DAC
+
+        for (int i=0; i<h.NBoard; i++)
+        {
+            const PEVNT_HEADER &hh = h.FADhead[i];
+
+            // Header values whihc won't change during the run
+            WriteKey("ID",    i, hh.board_id,   "Board ID");
+            WriteKey("FWVER", i, hh.version_no, "Firmware Version");
+
+            ostringstream dna;
+            dna << "0x" << hex << hh.DNA;
+            WriteKey("DNA", i, dna.str(), "Unique FPGA device identifier (DNA)");
+        }
+
+        // FIXME: Calculate average ref clock frequency
+        for (int i=0; i<h.NBoard; i++)
+        {
+            const PEVNT_HEADER &hh = h.FADhead[i];
+
+            if (hh.start_package_flag==0)
+                continue;
+
+            fFile.WriteKey("BOARD", i, "Board number for RUN, PRESC, PHASE and DAC");
+            // fFile.WriteKey("RUN",   hh.runnumber, "Run number");
+            fFile.WriteKey("PRESC", hh.trigger_generator_prescaler, "Trigger generator prescaler");
+            fFile.WriteKey("PHASE", (int16_t)hh.adc_clock_phase_shift, "ADC clock phase shift");
+
+            for (int j=0; j<8; j++)
+            {
+                ostringstream dac, cmt;
+                dac << "DAC" << j;
+                cmt << "Command value for " << dac.str();
+                fFile.WriteKey(dac.str(), hh.dac[j], cmt.str());
+            }
+
+            break;
+        }
+
+        double avg = 0;
+        int    cnt = 0;
+        for (int i=0; i<h.NBoard; i++)
+        {
+            const PEVNT_HEADER &hh = h.FADhead[i];
+
+            if (hh.start_package_flag==0)
+                continue;
+
+            avg += hh.REFCLK_frequency;
+            cnt ++;
+        }
+
+        // FIXME: I cannot write a double! WHY?
+        fFile.WriteKey("REFCLK", avg/cnt*2.048, "Average reference clock frequency in Hz");
+
+        fFile.WriteKey("DRSCALIB", GetDrsStep()>=0, "This file belongs to a DRS calibration");
+        if (GetDrsStep()>=0)
+            fFile.WriteKey("DRSSTEP", GetDrsStep(), "Step of the DRS calibration");
+
+    }
+    catch (const CCfits::FitsException &e)
+    {
+        Error("CCfits::Table::addKey failed in '"+fFileName+"': "+e.message());
+        return false;
+    }
+
+    fTstart[0] = h.RunTime;
+    fTstart[1] = h.RunUsec;
+
+    fTstop[0] = 0;
+    fTstop[1] = 0;
+
+    fTriggerCounter.fill(0);
+
+    //Last but not least, add header keys that will be updated when closing the file
+    return WriteFooter();
+}
+
+// --------------------------------------------------------------------------
+//
+//! This writes one event to the file
+//! @param e the pointer to the EVENT
+//
+bool DataWriteFits::WriteEvt(const EVT_CTRL2 &evt)
+{
+    if (!fFile.AddRow())
+        return false;
+
+    // Remember the counter of the last written event
+    fTriggerCounter = evt.triggerCounter;
+
+    // Remember the time of the last event
+    fTstop[0] = evt.time.tv_sec;
+    fTstop[1] = evt.time.tv_usec;
+
+    const EVENT &e = *evt.fEvent;
+
+    const int realRoiTM = (e.RoiTM > e.Roi) ? e.Roi : 0;
+    const size_t sz = sizeof(EVENT) + sizeof(e.StartPix)*e.Roi+sizeof(e.StartTM)*realRoiTM; //ETIENNE from RoiTm to Roi
+
+    const vector<char> data = fConv->ToFits(reinterpret_cast<const char*>(&e)+4, sz-4);
+
+    return fFile.WriteData(data.data(), data.size());
+}
+
+bool DataWriteFits::WriteFooter()
+{
+    try
+    {
+        /*
+        fFile.WriteKey("NBEVTOK",  rt ? rt->nEventsOk  : uint32_t(0),
+                       "How many events were written");
+
+        fFile.WriteKey("NBEVTREJ", rt ? rt->nEventsRej : uint32_t(0),
+                       "How many events were rejected by SW-trig");
+
+        fFile.WriteKey("NBEVTBAD", rt ? rt->nEventsBad : uint32_t(0),
+                       "How many events were rejected by Error");
+        */
+
+        //FIXME shouldn't we convert start and stop time to MjD first ?
+        //FIXME shouldn't we also add an MjD reference ?
+
+        const Time start(fTstart[0], fTstart[1]);
+        const Time stop (fTstop[0],  fTstop[1]);
+
+        fFile.WriteKey("TSTARTI",  uint32_t(floor(start.UnixDate())),
+                       "Time when first event received (integral part)");
+        fFile.WriteKey("TSTARTF",  fmod(start.UnixDate(), 1),
+                       "Time when first event received (fractional part)");
+        fFile.WriteKey("TSTOPI",   uint32_t(floor(stop.UnixDate())),
+                       "Time when last event received (integral part)");
+        fFile.WriteKey("TSTOPF",   fmod(stop.UnixDate(), 1),
+                       "Time when last event received (fractional part)");
+        fFile.WriteKey("DATE-OBS", start.Iso(),
+                       "Time when first event received");
+        fFile.WriteKey("DATE-END", stop.Iso(),
+                       "Time when last event received");
+
+        fFile.WriteKey("NTRG",     fTriggerCounter[0], "No of physics triggered events");
+        fFile.WriteKey("NTRGPED",  fTriggerCounter[1], "No of pure pedestal triggered events");
+        fFile.WriteKey("NTRGLPE",  fTriggerCounter[2], "No of external light pulser triggered events");
+        fFile.WriteKey("NTRGTIM",  fTriggerCounter[3], "No of time calibration triggered events");
+        fFile.WriteKey("NTRGLPI",  fTriggerCounter[4], "No of internal light pulser triggered events");
+        fFile.WriteKey("NTRGEXT1", fTriggerCounter[5], "No of triggers from ext1 triggered events");
+        fFile.WriteKey("NTRGEXT2", fTriggerCounter[6], "No of triggers from ext2 triggered events");
+        fFile.WriteKey("NTRGMISC", fTriggerCounter[7], "No of all other triggered events");
+    }
+    catch (const CCfits::FitsException &e)
+    {
+        Error("CCfits::Table::addKey failed in '"+fFile.GetName()+"': "+e.message());
+        return false;
+    }
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Closes the file, and before this it write the TAIL data
+//! @param rt the pointer to the RUN_TAIL data structure
+//
+bool DataWriteFits::Close(const EVT_CTRL2 &)
+{
+    if (!fFile.IsOpen())
+        return false;
+
+    WriteFooter();
+
+    fFile.Close();
+
+    return true;
+}
Index: branches/testFACT++branch/src/DataWriteFits.h
===================================================================
--- branches/testFACT++branch/src/DataWriteFits.h	(revision 18277)
+++ branches/testFACT++branch/src/DataWriteFits.h	(revision 18277)
@@ -0,0 +1,42 @@
+#ifndef FACT_DataWriteFits
+#define FACT_DataWriteFits
+
+#include "DataProcessorImp.h"
+#include "FitsFile.h"
+
+#include <array>
+
+class Converter;
+
+class DataWriteFits : public DataProcessorImp
+{
+    Converter *fConv;
+
+    FitsFile fFile;
+
+    std::array<uint32_t, 8> fTriggerCounter;
+
+    uint32_t fTstart[2];
+    uint32_t fTstop[2];
+
+    template <typename T>
+        void WriteKey(const string &name, const int idx, const T &value, const string &comment);
+
+    bool WriteFooter();
+
+    virtual int GetDrsStep() const { return -1; }
+
+public:
+    DataWriteFits(const std::string path, uint64_t night,  uint32_t runid, MessageImp &imp) :
+        DataProcessorImp(path, night, runid, imp), fConv(0), fFile(imp)
+    {
+    }
+
+    ~DataWriteFits();
+
+    bool Open(const RUN_HEAD &h, const FAD::RunDescription &d);
+    bool WriteEvt(const EVT_CTRL2 &);
+    bool Close(const EVT_CTRL2 &);
+};
+
+#endif
Index: branches/testFACT++branch/src/DataWriteFits2.cc
===================================================================
--- branches/testFACT++branch/src/DataWriteFits2.cc	(revision 18277)
+++ branches/testFACT++branch/src/DataWriteFits2.cc	(revision 18277)
@@ -0,0 +1,357 @@
+#include "DataWriteFits2.h"
+
+#include <boost/filesystem.hpp>
+
+#include "HeadersFAD.h"
+#include "EventBuilder.h"
+
+#include "externals/factofits.h"
+#include "externals/DrsCalib.h"
+
+using namespace std;
+
+DataWriteFits2::DataWriteFits2(const std::string path, uint64_t night, uint32_t runid, MessageImp &imp)
+    : DataProcessorImp(path, night, runid, imp)
+{
+    fFile = std::make_shared<ofits>();
+}
+
+DataWriteFits2::DataWriteFits2(const std::string path, uint64_t night, uint32_t runid, const DrsCalibration &cal, MessageImp &imp)
+    : DataProcessorImp(path, night, runid, imp)
+{
+    factofits *file = new factofits;
+    file->SetDrsCalibration(cal);
+    fFile = std::shared_ptr<ofits>(file);
+}
+
+void DataWriteFits2::WriteHeader(const RUN_HEAD &h, const FAD::RunDescription &d)
+{
+    const int16_t realRoiTM = (h.NroiTM >= 2*h.Nroi && h.Nroi<=512) ? h.Nroi : 0;
+
+    fFile->AddColumnInt("EventNum", "uint32", "FAD board event counter");
+    fFile->AddColumnInt("TriggerNum", "uint32", "FTM board trigger counter");
+    fFile->AddColumnShort("TriggerType", "uint16", "FTM board trigger type");
+    fFile->AddColumnInt("NumBoards", "uint32", "Number of connected boards");
+    fFile->AddColumnInt(2, "UnixTimeUTC", "uint32", "Unix time seconds and microseconds");
+    fFile->AddColumnInt(NBOARDS, "BoardTime", "uint32", "Board internal time counter");
+    fFile->AddColumnShort(NPIX, "StartCellData", "uint16", "DRS4 start cell of readout");
+    fFile->AddColumnShort(NTMARK, "StartCellTimeMarker", "uint16", "DRS4 start cell of readout time marker");
+
+    vector<uint16_t> processing(2);
+    processing[0] = FITS::kFactSmoothing;
+    processing[1] = FITS::kFactHuffman16;
+
+    const FITS::Compression comp(processing, FITS::kOrderByRow);
+
+    fFile->AddColumnShort(comp, h.NPix*h.Nroi,   "Data",       "int16", "Digitized data");
+    fFile->AddColumnShort(comp, h.NTm*realRoiTM, "TimeMarker", "int16", "Digitized time marker - if available");
+
+    const size_t sz = (h.NPix*h.Nroi + h.NTm*realRoiTM)*2;
+    if (fFile->GetBytesPerRow()-sz+4!=sizeof(EVENT))
+    {
+        ostringstream str;
+        str << "The EVENT structure size (" << sizeof(EVENT) << ") doesn't match the described FITS row (";
+        str << fFile->GetBytesPerRow()-sz+4 << ")";
+        throw runtime_error(str.str());
+    }
+
+    // =============== Default keys for all files ================
+    fFile->SetDefaultKeys();
+    fFile->SetInt("NIGHT", GetNight(), "Night as int");
+
+    // ================ Header keys for raw-data =================
+    fFile->SetInt("BLDVER",   h.Version,  "Builder version");
+    fFile->SetInt("RUNID",    GetRunId(),  "Run number");
+    fFile->SetInt("NBOARD",   h.NBoard,   "Number of acquisition boards");
+    fFile->SetInt("NPIX",     h.NPix,     "Number of pixels");
+    fFile->SetInt("NTMARK",   h.NTm,      "Number of time marker channels");
+    fFile->SetInt("NCELLS",   1024,        "Maximum number of slices per pixels");
+    fFile->SetInt("NROI",     h.Nroi,     "Number of slices per pixels");
+    fFile->SetInt("NROITM",   realRoiTM,   "Number of slices per time-marker");
+
+    const uint16_t realOffset = (h.NroiTM > h.Nroi) ?  h.NroiTM - 2*h.Nroi : 0;
+    fFile->SetInt("TMSHIFT",  realOffset,  "Shift of marker readout w.r.t. to data");
+
+    //FIXME should we also put the start and stop time of the received data ?
+    //now the events header related variables
+    fFile->SetStr("CAMERA",   "MGeomCamFACT", "MARS camera geometry class");
+    fFile->SetStr("DAQ",      "DRS4",         "Data acquisition type");
+    fFile->SetInt("ADCRANGE", 2000,        "Dynamic range in mV");
+    fFile->SetInt("ADC",      12,          "Resolution in bits");
+    fFile->SetStr("RUNTYPE",  d.name,      "File type according to FAD configuration");
+
+    // Write a single key for:
+    // -----------------------
+    // Start package flag
+    // package length
+    // version number
+    // status
+    // Prescaler
+
+    // Write 40 keys for (?)
+    // Phaseshift
+    // DAC
+
+    for (int i=0; i<h.NBoard; i++)
+    {
+        const PEVNT_HEADER &hh = h.FADhead[i];
+
+        ostringstream sout;
+        sout << "Board " << setw(2) << i<< ": ";
+
+        const string num = to_string(i);
+
+        // Header values whihc won't change during the run
+        fFile->SetInt("ID"+num,    hh.board_id,   sout.str()+"Board ID");
+        fFile->SetInt("FWVER"+num, hh.version_no, sout.str()+"Firmware Version");
+        fFile->SetHex("DNA"+num,   hh.DNA,        sout.str()+"Unique FPGA device identifier (DNA)");
+    }
+
+    // FIXME: Calculate average ref clock frequency
+    for (int i=0; i<h.NBoard; i++)
+    {
+        const PEVNT_HEADER &hh = h.FADhead[i];
+        if (hh.start_package_flag==0)
+            continue;
+
+        fFile->SetInt("BOARD", i, "Board number for RUN, PRESC, PHASE and DAC");
+        fFile->SetInt("PRESC", hh.trigger_generator_prescaler, "Trigger generator prescaler");
+        fFile->SetInt("PHASE", (int16_t)hh.adc_clock_phase_shift, "ADC clock phase shift");
+
+        for (int j=0; j<8; j++)
+        {
+            ostringstream dac, cmt;
+            dac << "DAC" << j;
+            cmt << "Command value for " << dac.str();
+            fFile->SetInt(dac.str(), hh.dac[j], cmt.str());
+        }
+
+        break;
+    }
+
+    double avg = 0;
+    int    cnt = 0;
+    for (int i=0; i<h.NBoard; i++)
+    {
+        const PEVNT_HEADER &hh = h.FADhead[i];
+
+        if (hh.start_package_flag==0)
+            continue;
+
+        avg += hh.REFCLK_frequency;
+        cnt ++;
+    }
+
+    // FIXME: I cannot write a double! WHY?
+    fFile->SetFloat("REFCLK", avg/cnt*2.048, "Average reference clock frequency in Hz");
+
+    fFile->SetBool("DRSCALIB", GetDrsStep()>=0, "This file belongs to a DRS calibration");
+    if (GetDrsStep()>=0)
+        fFile->SetInt("DRSSTEP", GetDrsStep(), "Step of the DRS calibration");
+
+    fTstart[0] = h.RunTime;
+    fTstart[1] = h.RunUsec;
+
+    fTstop[0] = 0;
+    fTstop[1] = 0;
+
+    fTriggerCounter.fill(0);
+
+    WriteFooter();
+
+    fFile->WriteTableHeader("Events");
+};
+
+// --------------------------------------------------------------------------
+//
+//! DataWriteFits constructor. This is the one that should be used, not the default one (parameter-less)
+//! @param runid This parameter should probably be removed. I first thought it was the run number, but apparently it is not
+//! @param h a pointer to the RUN_HEAD structure that contains the informations relative to this run
+//
+bool DataWriteFits2::Open(const RUN_HEAD &h, const FAD::RunDescription &d)
+{
+    //Form filename, based on runid and run-type
+    fFileName = FormFileName(dynamic_pointer_cast<factofits>(fFile)?"fits.fz":"fits");
+
+    if (boost::filesystem::exists(fFileName))
+    {
+        Error("ofits - file '"+fFileName+"' already exists.");
+        return false;
+    }
+
+    zofits *fits = dynamic_cast<zofits*>(fFile.get());
+    if (fits)
+    {
+        const uint32_t nrpt = zofits::DefaultNumRowsPerTile();
+
+        // Maximum number of events if taken with 100Hz
+        // (If no limit requested, maxtime is 24*60*60)
+        const uint32_t ntime = d.maxtime*100/nrpt;
+
+        // Maximum number of events if taken as number
+        // (If no limit requested, maxevts is INT32_MAX)
+        const uint32_t nevts = d.maxevt/nrpt+1;
+
+        // get the minimum of all three
+        uint32_t num = zofits::DefaultMaxNumTiles();
+        if (ntime<num)
+            num = ntime;
+        if (nevts<num)
+            num = nevts;
+
+        fits->SetNumTiles(num);
+    }
+
+    try
+    {
+        fFile->open(fFileName.c_str());
+    }
+    catch (const exception &e)
+    {
+        Error("ofits::open() failed for '"+fFileName+"': "+e.what());
+        return false;
+    }
+
+    if (!(*fFile))
+    {
+        ostringstream str;
+        str << "ofstream::open() failed for '" << fFileName << "': " << strerror(errno) << " [errno=" << errno << "]";
+        Error(str);
+        return false;
+    }
+
+    try
+    {
+        WriteHeader(h, d);
+    }
+    catch (const exception &e)
+    {
+        Error("ofits - Writing header failed for '"+fFileName+"': "+e.what());
+        return false;
+    }
+
+    if (!(*fFile))
+    {
+        ostringstream str;
+        str << "ofstream::write() failed for '" << fFileName << "': " << strerror(errno) << " [errno=" << errno << "]";
+        Error(str);
+        return false;
+    }
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This writes one event to the file
+//! @param e the pointer to the EVENT
+//
+bool DataWriteFits2::WriteEvt(const EVT_CTRL2 &evt)
+{
+    // Remember the counter of the last written event
+    fTriggerCounter = evt.triggerCounter;
+
+    // Remember the time of the last event
+    fTstop[0] = evt.time.tv_sec;
+    fTstop[1] = evt.time.tv_usec;
+
+    const EVENT &e = *evt.fEvent;
+
+    const int realRoiTM = (e.RoiTM > e.Roi) ? e.Roi : 0;
+    const size_t sz = sizeof(EVENT) + sizeof(e.StartPix)*e.Roi+sizeof(e.StartTM)*realRoiTM; //ETIENNE from RoiTm to Roi
+
+    try
+    {
+        fFile->WriteRow(reinterpret_cast<const char*>(&e)+4, sz-4);
+    }
+    catch (const exception &ex)
+    {
+        Error("ofits::WriteRow failed for '"+fFileName+"': "+ex.what());
+        return false;
+    }
+
+    if (!(*fFile))
+    {
+        ostringstream str;
+        str << "fstream::write() failed for '" << fFileName << "': " << strerror(errno) << " [errno=" << errno << "]";
+        Error(str);
+        return false;
+    }
+
+    return true;
+}
+
+void DataWriteFits2::WriteFooter()
+{
+    //FIXME shouldn't we convert start and stop time to MjD first ?
+    //FIXME shouldn't we also add an MjD reference ?
+
+    const Time start(fTstart[0], fTstart[1]);
+    const Time stop (fTstop[0],  fTstop[1]);
+
+    fFile->SetInt("TSTARTI",  uint32_t(floor(start.UnixDate())),
+                  "Time when first evt received (integral part)");
+    fFile->SetFloat("TSTARTF",  fmod(start.UnixDate(), 1),
+                    "Time when first evt received (fractional part)");
+    fFile->SetInt("TSTOPI",   uint32_t(floor(stop.UnixDate())),
+                  "Time when last evt received (integral part)");
+    fFile->SetFloat("TSTOPF",   fmod(stop.UnixDate(), 1),
+                    "Time when last evt received (fractional part)");
+    fFile->SetStr("DATE-OBS", start.Iso(),
+                  "Time when first event received");
+    fFile->SetStr("DATE-END", stop.Iso(),
+                  "Time when last event received");
+
+    fFile->SetInt("NTRG",     fTriggerCounter[0], "No of physics triggered events");
+    fFile->SetInt("NTRGPED",  fTriggerCounter[1], "No of pure pedestal triggered events");
+    fFile->SetInt("NTRGLPE",  fTriggerCounter[2], "No of external light pulser triggered events");
+    fFile->SetInt("NTRGTIM",  fTriggerCounter[3], "No of time calibration triggered events");
+    fFile->SetInt("NTRGLPI",  fTriggerCounter[4], "No of internal light pulser triggered events");
+    fFile->SetInt("NTRGEXT1", fTriggerCounter[5], "No of triggers from ext1 triggered events");
+    fFile->SetInt("NTRGEXT2", fTriggerCounter[6], "No of triggers from ext2 triggered events");
+    fFile->SetInt("NTRGMISC", fTriggerCounter[7], "No of all other triggered events");
+}
+
+// --------------------------------------------------------------------------
+//
+//! Closes the file, and before this it write the TAIL data
+//! @param rt the pointer to the RUN_TAIL data structure
+//
+bool DataWriteFits2::Close(const EVT_CTRL2 &evt)
+{
+    if (!fFile->is_open())
+    {
+        Error("DataWriteFits2::Close() called but file '"+fFileName+"' not open.");
+        return false;
+    }
+
+    try
+    {
+        WriteFooter();
+    }
+    catch (const exception &e)
+    {
+        Error("ofits - Setting footer key values failed for '"+fFileName+"': "+e.what());
+        return false;
+    }
+
+    try
+    {
+        fFile->close();
+    }
+    catch (const exception &e)
+    {
+        Error("ofits::close() failed for '"+fFileName+"': "+e.what());
+        return false;
+    }
+
+    if (!(*fFile))
+    {
+        ostringstream str;
+        str << "ofstream::close() failed for '" << fFileName << "': " << strerror(errno) << " [errno=" << errno << "]";
+        Error(str);
+        return false;
+    }
+
+    return true;
+}
Index: branches/testFACT++branch/src/DataWriteFits2.h
===================================================================
--- branches/testFACT++branch/src/DataWriteFits2.h	(revision 18277)
+++ branches/testFACT++branch/src/DataWriteFits2.h	(revision 18277)
@@ -0,0 +1,38 @@
+#ifndef FACT_DataWriteFits2
+#define FACT_DataWriteFits2
+
+#include "DataProcessorImp.h"
+
+#include <array>
+
+class ofits;
+
+class DrsCalibration;
+
+class DataWriteFits2 : public DataProcessorImp
+{
+    std::shared_ptr<ofits> fFile;
+
+    std::array<uint32_t, 8> fTriggerCounter;
+
+    uint32_t fTstart[2];
+    uint32_t fTstop[2];
+
+    void WriteHeader(const RUN_HEAD &h, const FAD::RunDescription &d);
+    void WriteFooter();
+
+    virtual int GetDrsStep() const { return -1; }
+
+public:
+    DataWriteFits2(const std::string path, uint64_t night, uint32_t runid, MessageImp &imp);
+    DataWriteFits2(const std::string path, uint64_t night, uint32_t runid, const DrsCalibration &cal, MessageImp &imp);
+
+    bool Open(const RUN_HEAD &h, const FAD::RunDescription &d);
+    bool WriteEvt(const EVT_CTRL2 &e);
+    bool Close(const EVT_CTRL2 &);
+
+    Time GetTstart() const { return Time(fTstart[0], fTstart[1]); }
+    Time GetTstop() const  { return Time(fTstop[0],  fTstop[1]);  }
+};
+
+#endif
Index: branches/testFACT++branch/src/DataWriteRaw.cc
===================================================================
--- branches/testFACT++branch/src/DataWriteRaw.cc	(revision 18277)
+++ branches/testFACT++branch/src/DataWriteRaw.cc	(revision 18277)
@@ -0,0 +1,127 @@
+#include "DataWriteRaw.h"
+
+#include "HeadersFAD.h"
+#include "EventBuilder.h"
+
+using namespace std;
+
+void DataWriteRaw::WriteBlockHeader(uint32_t type, uint32_t ver, uint32_t cnt, uint32_t len)
+{
+    const uint32_t val[4] = { type, ver, cnt, len };
+
+    fOut.write(reinterpret_cast<const char*>(val), sizeof(val));
+}
+
+template<typename T>
+void DataWriteRaw::WriteValue(const T &t)
+{
+    fOut.write(reinterpret_cast<const char*>(&t), sizeof(T));
+}
+
+bool DataWriteRaw::Open(const RUN_HEAD &h, const FAD::RunDescription &)
+{
+    const string name = FormFileName("bin");
+    if (access(name.c_str(), F_OK)==0)
+    {
+        Error("File '"+name+"' already exists.");
+        return false;
+    }
+
+    fFileName = name;
+
+    errno = 0;
+    fOut.open(name.c_str(), ios_base::out);
+    if (!fOut)
+    {
+        ostringstream str;
+        str << "ofstream::open() failed for '" << name << "': " << strerror(errno) << " [errno=" << errno << "]";
+        Error(str);
+
+        return false;
+    }
+
+    fCounter = 0;
+
+    static uint32_t FACT = 0xFAC77e1e;
+
+    fOut.write(reinterpret_cast<char*>(&FACT), 4);
+
+    WriteBlockHeader(kIdentifier, 1, 0, 8);
+    WriteValue(uint32_t(0));
+    WriteValue(GetRunId());
+
+    WriteBlockHeader(kRunHeader, 1, 0, sizeof(RUN_HEAD)-sizeof(PEVNT_HEADER*));
+    fOut.write(reinterpret_cast<const char*>(&h), sizeof(RUN_HEAD)-sizeof(PEVNT_HEADER*));
+
+    for (int i=0; i<40; i++)
+    {
+        WriteBlockHeader(kBoardHeader, 1, i, sizeof(PEVNT_HEADER));
+        fOut.write(reinterpret_cast<const char*>(h.FADhead+i), sizeof(PEVNT_HEADER));
+    }
+
+    // FIXME: Split this
+    const vector<char> block(sizeof(uint32_t)/*+sizeof(RUN_TAIL)*/);
+    WriteBlockHeader(kRunSummary, 1, 0, block.size());
+
+    fPosTail = fOut.tellp();
+    fOut.write(block.data(), block.size());
+
+    if (!fOut)
+    {
+        ostringstream str;
+        str << "ofstream::write() failed for '" << name << "': " << strerror(errno) << " [errno=" << errno << "]";
+        Error(str);
+
+        return false;
+    }
+
+    return true;
+}
+
+bool DataWriteRaw::WriteEvt(const EVT_CTRL2 &evt)
+{
+    const EVENT &e = *evt.fEvent;
+
+    const int sh = sizeof(EVENT)-2 + NPIX*e.Roi*2;
+
+    WriteBlockHeader(kEvent, 1, fCounter++, sh);
+    fOut.write(reinterpret_cast<const char*>(&e)+2, sh);
+    return true;
+}
+
+bool DataWriteRaw::Close()
+{
+    WriteBlockHeader(kEndOfFile, 0, 0, 0);
+
+    /*
+    if (tail)
+    {
+        fOut.seekp(fPosTail);
+
+        WriteValue(uint32_t(1));
+        fOut.write(reinterpret_cast<const char*>(tail), sizeof(RUN_TAIL));
+    }*/
+
+    if (!fOut)
+    {
+        ostringstream str;
+
+        str << "ofstream::write() failed for '" << GetFileName() << "': " << strerror(errno) << " [errno=" << errno << "]";
+        Error(str);
+
+        return false;
+    }
+
+    fOut.close();
+
+    if (!fOut)
+    {
+        ostringstream str;
+        str << "ofstream::close() failed for '" << GetFileName() << "': " << strerror(errno) << " [errno=" << errno << "]";
+        Error(str);
+
+        return false;
+    }
+
+    return true;
+}
Index: branches/testFACT++branch/src/DataWriteRaw.h
===================================================================
--- branches/testFACT++branch/src/DataWriteRaw.h	(revision 18277)
+++ branches/testFACT++branch/src/DataWriteRaw.h	(revision 18277)
@@ -0,0 +1,89 @@
+#ifndef FACT_DataWriteRaw
+#define FACT_DataWriteRaw
+
+#include "DataProcessorImp.h"
+
+class DataWriteRaw : public DataProcessorImp
+{
+    std::ofstream fOut;
+
+    off_t fPosTail;
+
+    uint32_t fCounter;
+
+
+    // WRITE uint32_t 0xFAC77e1e  (FACT Tele)
+    // ===
+    // WRITE uint32_t TYPE(>0)          == 1
+    // WRITE uint32_t ID(>0)            == 0
+    // WRITE uint32_t VERSION(>0)       == 1
+    // WRITE uint32_t LENGTH
+    // -
+    // WRITE uint32_t TELESCOPE ID
+    // WRITE uint32_t RUNID
+    // ===
+    // WRITE uint32_t TYPE(>0)          == 2
+    // WRITE uint32_t ID(>0)            == 0
+    // WRITE uint32_t VERSION(>0)       == 1
+    // WRITE uint32_t LENGTH
+    // -
+    // WRITE          HEADER
+    // ===
+    // [ 40 TIMES
+    //    WRITE uint32_t TYPE(>0)       == 3
+    //    WRITE uint32_t ID(>0)         == 0..39
+    //    WRITE uint32_t VERSION(>0)    == 1
+    //    WRITE uint32_t LENGTH
+    //    -
+    //    WRITE          BOARD-HEADER
+    // ]
+    // ===
+    // WRITE uint32_t TYPE(>0)          == 4
+    // WRITE uint32_t ID(>0)            == 0
+    // WRITE uint32_t VERSION(>0)       == 1
+    // WRITE uint32_t LENGTH
+    // -
+    // WRITE          FOOTER (empty)
+    // ===
+    // [ N times
+    //    WRITE uint32_t TYPE(>0)       == 10
+    //    WRITE uint32_t ID(>0)         == counter
+    //    WRITE uint32_t VERSION(>0)    == 1
+    //    WRITE uint32_t LENGTH HEADER
+    //    -
+    //    WRITE          HEADER+DATA
+    // ]
+    // ===
+    // WRITE uint32_t TYPE   ==0
+    // WRITE uint32_t VERSION==0
+    // WRITE uint32_t LENGTH ==0
+    // ===
+    // Go back and write footer
+
+    void WriteBlockHeader(uint32_t type, uint32_t ver, uint32_t cnt, uint32_t len);
+
+    template<typename T>
+        void WriteValue(const T &t);
+
+
+public:
+    DataWriteRaw(const std::string &path, uint64_t night, uint32_t id, MessageImp &imp) : DataProcessorImp(path, night, id, imp), fPosTail(0) { }
+    ~DataWriteRaw() { if (fOut.is_open()) Close(); }
+
+    enum
+    {
+        kEndOfFile = 0,
+        kIdentifier = 1,
+        kRunHeader,
+        kBoardHeader,
+        kRunSummary,
+        kEvent,
+    };
+
+    bool Open(const RUN_HEAD &h, const FAD::RunDescription &d);
+    bool WriteEvt(const EVT_CTRL2 &);
+    bool Close(const EVT_CTRL2 &) { return Close(); }
+    bool Close();
+};
+
+#endif
Index: branches/testFACT++branch/src/Database.h
===================================================================
--- branches/testFACT++branch/src/Database.h	(revision 18277)
+++ branches/testFACT++branch/src/Database.h	(revision 18277)
@@ -0,0 +1,66 @@
+#ifndef FACT_Database
+#define FACT_Database
+
+#include <exception>
+#include <boost/regex.hpp>
+
+#include <mysql++/mysql++.h>
+
+struct DatabaseName
+{
+    std::string user;
+    std::string passwd;
+    std::string server;
+    std::string db;
+    int port;
+
+    DatabaseName(const std::string &database)
+    {
+        static const boost::regex expr("(([[:word:].-]+)(:(.+))?@)?([[:word:].-]+)(:([[:digit:]]+))?(/([[:word:].-]+))");
+
+        boost::smatch what;
+        if (!boost::regex_match(database, what, expr, boost::match_extra))
+            throw std::runtime_error("Couldn't parse database URI '"+database+"'.");
+
+        if (what.size()!=10)
+            throw std::runtime_error("Error parsing database URI '"+database+"'.");
+
+        user   = what[2];
+        passwd = what[4];
+        server = what[5];
+        db     = what[9];
+
+        try
+        {
+            port = stoi(std::string(what[7]));
+        }
+        catch (...)
+        {
+            port = 0;
+        }
+    }
+
+    std::string uri() const
+    {
+        std::string rc;
+        if (!user.empty())
+            rc += user+"@";
+        rc += server;
+        if (port)
+            rc += ":"+std::to_string(port);
+        if (!db.empty())
+            rc += "/"+db;
+        return rc;
+    }
+};
+
+class Database : public DatabaseName, public mysqlpp::Connection
+{
+public:
+    Database(const std::string &desc) : DatabaseName(desc),
+        mysqlpp::Connection(db.c_str(), server.c_str(), user.c_str(), passwd.c_str(), port)
+    {
+    }
+};
+
+#endif
Index: branches/testFACT++branch/src/Description.cc
===================================================================
--- branches/testFACT++branch/src/Description.cc	(revision 18277)
+++ branches/testFACT++branch/src/Description.cc	(revision 18277)
@@ -0,0 +1,181 @@
+// **************************************************************************
+/** @struct Description
+
+@brief A struct which stores a name, a unit and a comment
+
+To have proper descriptions of commands and services in the network
+(and later proper informations in the FITS files) this struct provides
+a simple storage for a name, a unit and a comment.
+
+Assume you want to write a descriptive string for a command with three arguments.
+It could look like this:
+
+   COMMAND=Description|int[addr]:Address range (from - to)|val[byte]:Value to be set
+
+Description is a general description of the command or service itself,
+int and val are the names of the arguments (e.g. names of FITS columns),
+addr and byte have the meaning of a unit (e.g. unit of FITS column)
+and the text after the colon is a description of the arguments
+(e.g. comment of a FITS column). The description must not contain a
+line-break character \n.
+
+Such a string can then be converted with SplitDescription into a vector
+of Description objects, each containing the name, the unit and a
+comment indivdually. The first object will contain COMMAND as name and
+Description as comment. The unit will remain empty.
+
+You can omit either the name, the unit or the comment or any
+combination of them. The descriptions of the individual format strings
+are separated by a vertical line. If you want to enclose the name into
+[]-braces (e.g. marking an optional argument in a dim command), you
+have add empty brackets for the units.
+
+For a suggestion for rules for the names please have a look at:
+http://heasarc.gsfc.nasa.gov/docs/heasarc/ofwg/docs/ofwg_recomm/r15.html
+
+For units please see:
+http://heasarc.gsfc.nasa.gov/docs/heasarc/ofwg/docs/general/ogip_93_001/ogip_93_001.html
+
+*/
+// **************************************************************************
+#include "Description.h"
+
+#include <sstream>
+
+#include "tools.h"
+
+using namespace std;
+using namespace Tools;
+
+// --------------------------------------------------------------------------
+//
+//! Construct a Description object
+//!
+//! @param n
+//!     Name of the Description, e.g. "temp"
+//!
+//! @param c
+//!     Descriptive text of the Description, e.g. "Temperature of the moon"
+//!
+//! @param u
+//!     Unit of the Description, e.g. "K"
+//
+Description::Description(const string &n, const string &c, const string &u)
+    : name(Trim(n)), comment(Trim(c)), unit(Trim(u))
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! This function breaks down a descriptive string into its components.
+//! For details see class reference.
+//!
+//! @param buffer
+//!     string which should be broekn into pieces
+//!
+//! @returns
+//!     A vector<Description> containing all the descriptions found.
+//!     The first entry contains the Description members name and comment,
+//!     corresponding to the service or command name the Description
+//!     list is for and its corresponding description.
+//
+vector<Description> Description::SplitDescription(const string &buffer)
+{
+    const size_t p0 = buffer.find_first_of('=');
+
+    const string svc  = buffer.substr(0, p0);
+    const string desc = buffer.substr(p0+1);
+
+    const size_t p = desc.find_first_of('|');
+
+    // Extract a general description
+    const string d = Trim(desc.substr(0, p));
+
+    vector<Description> vec;
+    vec.emplace_back(svc, d);
+
+    if (p==string::npos)
+        return vec;
+
+    string buf;
+    stringstream stream(desc.substr(p+1));
+    while (getline(stream, buf, '|'))
+    {
+        if (buf.empty())
+            continue;
+
+        const size_t p1 = buf.find_first_of(':');
+
+        const string comment = p1==string::npos ? "" : buf.substr(p1+1);
+        if (p1!=string::npos)
+            buf.erase(p1);
+
+        const size_t p2 = buf.find_last_of('[');
+        const size_t p3 = buf.find_last_of(']');
+
+        const bool hasunit = p2<p3 && p2!=string::npos;
+
+        const string unit = hasunit ? buf.substr(p2+1, p3-p2-1) : "";
+        const string name = hasunit ? buf.substr(0, p2) : buf;
+
+        vec.emplace_back(name, comment, unit);
+    }
+
+    return vec;
+}
+
+
+// --------------------------------------------------------------------------
+//
+//! Returns a string with an html formatted text containing the descriptions
+//! as returned by SplitDescription
+//!
+//! @param vec
+//!     vector of Description for the individual arguments. First
+//!     element is the global description of the command or service.
+//!
+//! @returns
+//!     string with html formatted text
+//
+string Description::GetHtmlDescription(const vector<Description> &vec)
+{
+    stringstream str;
+    str << "<H3>" << vec[0].name << "</H3>";
+
+    str << "Usage:";
+    for (vector<Description>::const_iterator i=vec.begin()+1; i!=vec.end(); i++)
+        str << "&nbsp;<font color='maroon'>&lt;" << i->name <<    "&gt;</font>";
+
+    if (vec.size()==1)
+        str << " &lt;no arguments&gt;";
+
+    str << "<P>" << vec[0].comment << "<P>";
+
+    str << "<table>";
+
+    for (vector<Description>::const_iterator i=vec.begin()+1; i!=vec.end(); i++)
+    {
+        str << "<tr>"
+            "<td><font color='maroon'>" << i->name <<     "</font>";
+
+        if (i->unit.empty() && !i->comment.empty() && !i->name.empty())
+            str << ':';
+
+        str << "</td>";
+
+        if (!i->unit.empty())
+            str << "<td><font color='green'>[" << i->unit <<    "]</font>";
+
+        if (!i->unit.empty() && !i->comment.empty())
+            str << ':';
+
+        str <<
+            "</td>"
+            "<td><font color='navy'>"   << i->comment <<  "</font></td>"
+            "</tr>";
+    }
+
+    str << "</table>";
+
+    return str.str();
+}
Index: branches/testFACT++branch/src/Description.h
===================================================================
--- branches/testFACT++branch/src/Description.h	(revision 18277)
+++ branches/testFACT++branch/src/Description.h	(revision 18277)
@@ -0,0 +1,19 @@
+#ifndef FACT_Description
+#define FACT_Description
+
+#include <string>
+#include <vector>
+
+struct Description
+{
+    std::string name;
+    std::string comment;
+    std::string unit;
+
+    static std::vector<Description> SplitDescription(const std::string &buffer);
+    static std::string GetHtmlDescription(const std::vector<Description> &vec);
+
+    Description(const std::string &n, const std::string &c, const std::string &u="");
+};
+
+#endif
Index: branches/testFACT++branch/src/Dim.h
===================================================================
--- branches/testFACT++branch/src/Dim.h	(revision 18277)
+++ branches/testFACT++branch/src/Dim.h	(revision 18277)
@@ -0,0 +1,106 @@
+#ifndef FACT_Dim
+#define FACT_Dim
+
+#include "DimSetup.h"
+
+#include <string>
+#include <vector>
+
+#include "dic.hxx"
+
+namespace Dim
+{
+    // --------------------------------------------------------------------------
+    //
+    //! Simplification wrapper to send a command without data
+    //!
+    //! Example:
+    //!   - Dim::SendCommand("SERVER/COMMAND");
+    //!
+    //! @param command
+    //!     Dim command identifier
+    //!
+    //! @returns
+    //!     the return value of DimClient::sendCommand
+    //!
+    inline bool SendCommand(const std::string &command)
+    {
+        return DimClient::sendCommand(command.c_str(), NULL, 0);
+    }
+    inline void SendCommandNB(const std::string &command)
+    {
+        DimClient::sendCommandNB(command.c_str(), NULL, 0);
+    }
+
+    // --------------------------------------------------------------------------
+    //
+    //! Simplification wrapper to send a command with the given data
+    //!
+    //! Example:
+    //!   - Dim::SendCommand("SERVER/COMMAND", uint16_t(42));
+    //!   - struct tm t; Dim::SendCommand("SERVER/TIME", t);
+    //!
+    //! @param command
+    //!     Dim command identifier
+    //!
+    //! @param t
+    //!     object to be sent, the pointer to the data to be sent is
+    //!     set to &t
+    //!
+    //! @tparam T
+    //!     type of the data to be sent. The size of the data to be sent
+    //!     is determined as sizeof(T)
+    //!
+    //! @returns
+    //!     the return value of DimClient::sendCommand
+    //!
+    template<typename T>
+        inline bool SendCommand(const std::string &command, const T &t)
+    {
+        return DimClient::sendCommand(command.c_str(), const_cast<T*>(&t), sizeof(t));
+    }
+
+    template<>
+        inline bool SendCommand(const std::string &command, const std::string &t)
+    {
+        return DimClient::sendCommand(command.c_str(), const_cast<char*>(t.c_str()), t.length()+1);
+    }
+
+    template<typename T>
+        inline bool SendCommand(const std::string &command, const std::vector<T> &v)
+    {
+        return DimClient::sendCommand(command.c_str(), const_cast<char*>(v.data()), v.size()*sizeof(T));
+    }
+
+    inline bool SendCommand(const std::string &command, const void *d, size_t s)
+    {
+        return DimClient::sendCommand(command.c_str(), const_cast<void*>(d), s);
+    }
+
+    // -------------------------------------------------------------------------
+
+    template<typename T>
+        inline void SendCommandNB(const std::string &command, const T &t)
+    {
+        DimClient::sendCommandNB(command.c_str(), const_cast<T*>(&t), sizeof(t));
+    }
+
+    template<>
+        inline void SendCommandNB(const std::string &command, const std::string &t)
+    {
+        DimClient::sendCommandNB(command.c_str(), const_cast<char*>(t.c_str()), t.length()+1);
+    }
+
+    template<typename T>
+        inline void SendCommandNB(const std::string &command, const std::vector<T> &v)
+    {
+        DimClient::sendCommandNB(command.c_str(), const_cast<T*>(v.data()), v.size()*sizeof(T));
+    }
+
+    inline void SendCommandNB(const std::string &command, const void *d, size_t s)
+    {
+        DimClient::sendCommandNB(command.c_str(), const_cast<void*>(d), s);
+    }
+}
+
+#endif
Index: branches/testFACT++branch/src/DimData.h
===================================================================
--- branches/testFACT++branch/src/DimData.h	(revision 18277)
+++ branches/testFACT++branch/src/DimData.h	(revision 18277)
@@ -0,0 +1,42 @@
+#ifndef FACT_DimData
+
+struct DimData
+{
+    const int               qos;
+    const std::string       name;
+    const std::string       format;
+    const std::vector<char> data;
+    const Time              time;
+
+    Time extract(DimInfo *inf) const
+    {
+        // Must be called in exactly this order!
+        const int tsec = inf->getTimestamp();
+        const int tms  = inf->getTimestampMillisecs();
+
+        return Time(tsec, tms*1000);
+    }
+
+    DimData(DimInfo *inf) : qos(inf->getQuality()),
+        name(inf->getName()),
+        format(inf->getFormat()),
+        data(inf->getString(), inf->getString()+inf->getSize()),
+        time(extract(inf))
+    {
+    }
+
+    template<typename T>
+        T get(uint32_t offset=0) const { return *reinterpret_cast<const T*>(data.data()+offset); }
+
+    template<typename T>
+        const T *ptr(uint32_t offset=0) const { return reinterpret_cast<const T*>(data.data()+offset); }
+
+    template<typename T>
+        const T &ref(uint32_t offset=0) const { return *reinterpret_cast<const T*>(data.data()+offset); }
+
+    const char *c_str() const { return (char*)data.data(); }
+
+    size_t size() const { return data.size(); }
+};
+
+#endif
Index: branches/testFACT++branch/src/DimDescriptionService.cc
===================================================================
--- branches/testFACT++branch/src/DimDescriptionService.cc	(revision 18277)
+++ branches/testFACT++branch/src/DimDescriptionService.cc	(revision 18277)
@@ -0,0 +1,175 @@
+// **************************************************************************
+/** @class DimDescriptionService
+
+@brief A DimService which broadcasts descriptions for services and commands
+
+The DimDescriptionService creates a service with the name of the server like
+SERVER/SERVICE_DESC. This is meant in addition to the SERVICE_LIST service
+of each node to contain a description of the service and its arguments.
+
+Assume you have created a service (or command) with the format I:2;F:1
+a valid description string would look like
+
+   Description|int[addr]:Address range (from - to)|val[byte]:Value to be set
+
+Description is a general description of the command or service itself,
+int and val are the names of the arguments (e.g. names of FITS columns),
+addr and byte have the meaning of a unit (e.g. unit of FITS column)
+and the text after the colon is a description of the arguments
+(e.g. comment of a FITS column). The description must not contain a
+line-break character \n.
+
+You can omit either the name, the unit or the comment or any combination of them.
+The descriptions of the individual format strings are separated by a vertical line.
+
+The description should contain as many descriptions as format chunks, e.g.
+
+ - I:1          should contain one description chunks
+ - I:1;F:1      should contain two description chunks
+ - I:2;F:1      should contain two description chunks
+ - I:2;I:1;F:1  should contain three description chunks
+
+*/
+// **************************************************************************
+#include "DimDescriptionService.h"
+
+#include <stdexcept>
+
+#include "dis.hxx"
+#include "Time.h"
+
+using namespace std;
+
+DimService *DimDescriptionService::fService = 0;
+int         DimDescriptionService::fCount   = 0;
+std::string DimDescriptionService::fData    = "";
+
+set<string> DimDescribedService::fServices;
+
+// --------------------------------------------------------------------------
+//
+//! When the constructor is first called, a service with the name
+//! SERVER/SERVICE_DESC is created. The server name SERVER is retrieved
+//! from DimServer::itsName. If DimServer::itsName is empty, the
+//! server name is extracted from the given name as the part before the
+//! first '/'. A string "name=format\n" is added to fData and stored
+//! in fDescription.
+//!
+//! A counter fCount for the number of instantiations is increased.
+//!
+//! @param name
+//!     The name of the service or command to be described, e.g. SERVER/COMMAND
+//!
+//! @param desc
+//!     A description string. For details see class reference
+//!
+//! @throws
+//!     If a server name couldn't be reliably determined a logic_error
+//!     exception is thrown; if the given description contains a '\n'
+//!     also a logic_error is thrown.
+//
+DimDescriptionService::DimDescriptionService(const std::string &name, const std::string &desc)
+{
+    string server = DimServer::itsName ? DimServer::itsName : "";
+    if (server.empty())
+    {
+        const size_t p = name.find_first_of('/');
+        if (p==string::npos)
+            throw logic_error("Could not determine server name");
+
+        server = name.substr(0, p);
+    }
+
+    if (desc.find_first_of('\n')!=string::npos)
+            throw logic_error("Description for "+name+" contains '\\n'");
+
+    if (!fService)
+    {
+        fService = new DimService((server+"/SERVICE_DESC").c_str(), const_cast<char*>(""));
+        fData =
+            server + "/SERVICE_DESC"
+            "=Descriptions of services or commands and there arguments"
+            "|Description[string]:For a detailed "
+            "explanation of the descriptive string see the class reference "
+            "of DimDescriptionService.\n" +
+            server + "/CLIENT_LIST"
+            "=Native Dim service: A list of all connected clients\n" +
+            server + "/VERSION_NUMBER"
+            "=Native Dim service: Version number of Dim in use"
+            "|DimVer[int]:Version*100+Release (e.g. V19r17 = 1917)\n" +
+            server + "/EXIT"
+            "=This is a native Dim command: Exit program"
+            "remotely. FACT++ programs use the given number as return code."
+            "|Rc[int]:Return code, under normal circumstances this should be 0 or 1 (42 will call exit() directly, 0x42 will call abort() directly.\n" +
+            server + "/SERVICE_LIST"
+            "=Native Dim service: List of services, commands and formats"
+            "|ServiceList[string]:For details see the Dim manual.\n";
+    }
+
+
+    fCount++;
+
+    fDescription = name + '=' + desc;
+
+    if (fData.find(fDescription+'\n')!=std::string::npos)
+        return;
+
+    fData += fDescription + '\n';
+
+    const Time t;
+    fService->setTimestamp(t.Time_t(), t.ms());
+    fService->setData(const_cast<char*>(fData.c_str()));
+    fService->updateService();
+}
+
+
+// --------------------------------------------------------------------------
+//
+//! If fDescription is found in fData it is removed from fData.
+//! The counter fCount is decreased and fService deleted if the counter
+//! reached 0.
+//
+DimDescriptionService::~DimDescriptionService()
+{
+    const size_t pos = fData.find(fDescription+'\n');
+    if (pos!=std::string::npos)
+        fData.replace(pos, fDescription.size()+1, "");
+
+    if (--fCount>0)
+        return;
+
+    delete fService;
+    fService=0;
+}
+
+void DimDescribedService::setTime(const Time &t)
+{
+    setTimestamp(t.Time_t(), t.ms());
+}
+
+void DimDescribedService::setTime()
+{
+    setTime(Time());
+}
+
+int DimDescribedService::Update(const Time &t)
+{
+    setTime(t);
+    return updateService();
+}
+
+int DimDescribedService::Update()
+{
+    return Update(Time());
+}
+
+int DimDescribedService::Update(const string &data)
+{
+    return Update(data.data());
+}
+
+int DimDescribedService::Update(const char *data)
+{
+    setData(data);
+    return Update();
+}
Index: branches/testFACT++branch/src/DimDescriptionService.h
===================================================================
--- branches/testFACT++branch/src/DimDescriptionService.h	(revision 18277)
+++ branches/testFACT++branch/src/DimDescriptionService.h	(revision 18277)
@@ -0,0 +1,130 @@
+#ifndef FACT_DimDescriptionService
+#define FACT_DimDescriptionService
+
+#include <set>
+#include <array>
+#include <string>
+#include <vector>
+
+class Time;
+class DimService;
+
+class DimDescriptionService
+{
+    static int         fCount;     /// Counter to count the number of instatiations
+    static DimService *fService;   /// Pointer to the DimService distributing the desscriptions
+    static std::string fData;      /// Data to be distributed with the service
+
+    std::string fDescription;      /// Local storage for the applied description
+
+public:
+    DimDescriptionService(const std::string &name, const std::string &format);
+    virtual ~DimDescriptionService();
+
+    std::string GetDescription() const { return fDescription; }
+};
+
+#include "dis.hxx"
+
+class DimDescribedService : public DimDescriptionService, public DimService
+{
+    static std::set<std::string> fServices;
+
+public:
+    template<typename T>
+    DimDescribedService(const std::string &name, const T &val, const char *desc)
+        : DimDescriptionService(name.c_str(), desc), DimService(name.c_str(), const_cast<T&>(val))
+    {
+        fServices.insert(getName());
+        setQuality(0);
+    }
+
+    template<typename T>
+    DimDescribedService(const std::string &name, const char *format, const T &val, const char *desc)
+        : DimDescriptionService(name.c_str(), desc), DimService(name.c_str(), format, const_cast<T*>(&val), sizeof(T))
+    {
+        fServices.insert(getName());
+        setQuality(0);
+    }
+
+    DimDescribedService(const std::string &name, const char *format, const char *desc)
+       : DimDescriptionService(name.c_str(), desc), DimService(name.c_str(), format, (void*)NULL, 0)
+    {
+        fServices.insert(getName());
+        setQuality(0);
+        // FIXME: compare number of ; with number of |
+    }
+
+    ~DimDescribedService()
+    {
+        fServices.erase(getName());
+    }
+
+    static const std::set<std::string> &GetServices() { return fServices; }
+
+    void setData(const void *ptr, size_t sz)
+    {
+        DimService::setData(const_cast<void*>(ptr), sz);
+    }
+
+    void setData(const char *str)
+    {
+        DimService::setData(const_cast<char*>(str));
+    }
+
+    void setData(const std::string &str)
+    {
+        setData(str.data());
+    }
+
+    template<class T>
+    void setData(const T &data)
+    {
+        setData(&data, sizeof(T));
+    }
+
+    template<typename T>
+    void setData(const std::vector<T> &data)
+    {
+        setData(data.data(), data.size()*sizeof(T));
+    }
+
+    template<class T, size_t N>
+    void setData(const std::array<T, N> &data)
+    {
+        setData(data.data(), N*sizeof(T));
+    }
+
+    void setTime(const Time &t);
+    void setTime();
+
+    int Update();
+    int Update(const Time &t);
+    int Update(const std::string &data);
+    int Update(const char *data);
+
+    template<class T>
+    int Update(const T &data)
+    {
+        setData(&data, sizeof(T));
+        return Update();
+    }
+
+    template<typename T>
+    int Update(const std::vector<T> &data)
+    {
+        setData(data);
+        return Update();
+    }
+
+    template<class T, size_t N>
+    int Update(const std::array<T, N> &data)
+    {
+        setData(data);
+        return Update();
+    }
+
+    // FIXME: Implement callback with boost::function instead of Pointer to this
+};
+
+#endif
Index: branches/testFACT++branch/src/DimErrorRedirecter.cc
===================================================================
--- branches/testFACT++branch/src/DimErrorRedirecter.cc	(revision 18277)
+++ branches/testFACT++branch/src/DimErrorRedirecter.cc	(revision 18277)
@@ -0,0 +1,111 @@
+// **************************************************************************
+/** @class DimErrorRedirecter
+
+@brief A base class taking care of padding, exit handler and error handlers
+
+This class first switches off padding for the DimServer and the DimClient
+(dis and dic). Furthermore, it redirects both error handlers to the
+DimErrorRedirecter. Redirect the exit handler.
+
+Only one instance of this class is allowed, since all Dim handlers are
+global.
+
+In the destructor of the class the handlers are correctly restored.
+The padding setup is kept.
+
+For FACT++ all Dim data is transmitted without padding!
+
+To catch the error messages overwrite the errorHandler. The errorHandler
+of the DimErrorRedirecter redirects the error messages to the logging
+stream given in the constructor.
+
+To catch the exit requests overwrite the exitHandler.
+
+*/
+// **************************************************************************
+#include "DimErrorRedirecter.h"
+
+#include <dic.hxx>
+
+#include "WindowLog.h"
+#include "MessageImp.h"
+
+using namespace std;
+
+int DimErrorRedirecter::fDimErrorRedireterCnt = 0;
+
+// --------------------------------------------------------------------------
+//
+//! - disable padding for dim server and dim client
+//! - redirect DimClient error handler
+//! - redirect DimServer error handler
+//! - set exit handler of DimServer
+//
+DimErrorRedirecter::DimErrorRedirecter(MessageImp &imp) : fMsg(imp)
+{
+    if (fDimErrorRedireterCnt++)
+        throw logic_error("ERROR - More than one instance of MyHandlers.");
+
+    dic_disable_padding();
+    dis_disable_padding();
+
+    DimServer::addExitHandler(this);
+    DimServer::addErrorHandler(this);
+    DimClient::addErrorHandler(this);
+}
+
+// --------------------------------------------------------------------------
+//
+//! - reset DimClient error handler
+//! - reset DimServer error handler
+//! - reset exit handler of DimServer
+//
+DimErrorRedirecter::~DimErrorRedirecter()
+{
+    DimClient::addErrorHandler(0);
+    DimServer::addErrorHandler(0);
+    DimServer::addExitHandler(0);
+}
+
+void DimErrorRedirecter::errorHandler(int severity, int code, char *msg)
+{
+    static const string id = "<DIM> ";
+
+    switch (severity)
+    {
+    case DIM_FATAL:   fMsg.Fatal(id+msg); break;
+    case DIM_ERROR:   fMsg.Error(id+msg); break;
+    case DIM_WARNING: fMsg.Warn(id+msg);  break;
+    case DIM_INFO:    fMsg.Info(id+msg);  break;
+    default:
+        ostringstream str;
+        str << "DIM message with unknown severity (" << severity << "): ";
+        str << msg << " (" << code << ")";
+        fMsg.Warn(str);
+        break;
+    }
+
+    /*
+     DIMDNSUNDEF	DIM_FATAL	DIM_DNS_NODE undefined
+     DIMDNSREFUS	DIM_FATAL	DIM_DNS refuses connection
+     DIMDNSDUPLC	DIM_FATAL	Service already exists in DNS
+     DIMDNSEXIT	        DIM_FATAL	DNS requests server to EXIT
+     DIMDNSTMOUT	DIM_WARNING	Server failed sending Watchdog
+
+     DIMDNSCNERR	DIM_ERROR	Connection to DNS failed
+     DIMDNSCNEST	DIM_INFO	Connection to DNS established
+
+     DIMSVCDUPLC	DIM_ERROR	Service already exists in Server
+     DIMSVCFORMT	DIM_ERROR	Bad format string for service
+     DIMSVCINVAL	DIM_ERROR	Invalid Service ID
+
+     DIMTCPRDERR	DIM_ERROR	TCP/IP read error
+     DIMTCPWRRTY	DIM_WARNING	TCP/IP write error - Retrying
+     DIMTCPWRTMO	DIM_ERROR	TCP/IP write error - Disconnected
+     DIMTCPLNERR	DIM_ERROR	TCP/IP listen error
+     DIMTCPOPERR	DIM_ERROR	TCP/IP open server error
+     DIMTCPCNERR	DIM_ERROR	TCP/IP connection error
+     DIMTCPCNEST	DIM_INFO	TCP/IP connection established
+     */
+}
+
Index: branches/testFACT++branch/src/DimErrorRedirecter.h
===================================================================
--- branches/testFACT++branch/src/DimErrorRedirecter.h	(revision 18277)
+++ branches/testFACT++branch/src/DimErrorRedirecter.h	(revision 18277)
@@ -0,0 +1,23 @@
+#ifndef FACT_DimErrorRedirecter
+#define FACT_DimErrorRedirecter
+
+#include <dis.hxx>
+
+class MessageImp;
+
+class DimErrorRedirecter : public DimErrorHandler, public DimExitHandler
+{
+private:
+    static int fDimErrorRedireterCnt;
+
+    MessageImp &fMsg;
+
+    void errorHandler(int severity, int code, char *msg);
+    void exitHandler(int code) { exit(code); }
+
+public:
+    DimErrorRedirecter(MessageImp &imp);
+    ~DimErrorRedirecter();
+};
+
+#endif
Index: branches/testFACT++branch/src/DimLoggerCheck.h
===================================================================
--- branches/testFACT++branch/src/DimLoggerCheck.h	(revision 18277)
+++ branches/testFACT++branch/src/DimLoggerCheck.h	(revision 18277)
@@ -0,0 +1,73 @@
+#ifndef FACT_DimLoggerCheck
+#define FACT_DimLoggerCheck
+
+#include <set>
+#include <string>
+#include <functional>
+
+#include "tools.h"
+#include "EventImp.h"
+#include "DimDescriptionService.h"
+
+class DimLoggerCheck
+{
+   //typedef std::function<int(const EventImp &)> callback;
+    typedef std::function<int(const std::map<const std::string, const int> &)> callback;
+
+    callback fCallback;
+
+    const std::string name;
+    std::map<const std::string, const int> list;
+
+    virtual int Handler(const EventImp &evt)
+    {
+        using namespace std;
+
+        const set<string>   vserv = DimDescribedService::GetServices();
+        const vector<string> ltxt = Tools::Split(evt.GetString(), "\n");
+
+        map<string, int> vsubs;
+        for (auto it=ltxt.begin(); it!=ltxt.end(); it++)
+        {
+            const vector<string> col = Tools::Split(*it, ",");
+
+            if (col.size()==2 && col[0].substr(0, name.size()+1)==name+"/")
+                vsubs[col[0]] = atoi(col[1].c_str());
+        }
+
+        list.clear();
+        for (auto it=vserv.begin(); it!=vserv.end(); it++)
+        {
+            const auto is = vsubs.find(*it);
+            list.insert(make_pair(it->substr(name.size()+1), is==vsubs.end() ? -2 : is->second));
+        }
+
+        list.erase("STATE_LIST");
+
+        return fCallback ? fCallback(list) : StateMachineImp::kSM_KeepState;
+    }
+
+public:
+    DimLoggerCheck() { }
+    DimLoggerCheck(const std::string &n) : name(n)
+    {
+    }
+    virtual ~DimLoggerCheck()
+    {
+    }
+
+    virtual void Subscribe(StateMachineImp &imp)
+    {
+        imp.Subscribe("DATA_LOGGER/SUBSCRIPTIONS")
+            (imp.Wrap(std::bind(&DimLoggerCheck::Handler, this, std::placeholders::_1)));
+    }
+
+    void SetCallback(const callback &cb)
+    {
+        fCallback = cb;
+    }
+
+    const std::map<const std::string, const int> &GetList() const { return list; }
+};
+
+#endif
Index: branches/testFACT++branch/src/DimNetwork.cc
===================================================================
--- branches/testFACT++branch/src/DimNetwork.cc	(revision 18277)
+++ branches/testFACT++branch/src/DimNetwork.cc	(revision 18277)
@@ -0,0 +1,142 @@
+#include "DimNetwork.h"
+
+StateClient::StateClient(const std::string &name, MessageImp &imp) :
+    MessageDimRX(name, imp), fState(-2),
+    fInfoState((name + "/STATE").c_str(), (void*)NULL, 0, this)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Extract the information about the state and its message. Store the
+//! state and redirect the message to fMsg.
+//
+void StateClient::infoHandler()
+{
+    DimInfo *curr = getInfo(); // get current DimInfo address
+    if (!curr)
+        return;
+
+    if (curr==&fInfoState)
+    {
+        const bool disconnected = fInfoState.getSize()==0;
+
+        // Make sure getTimestamp is called _before_ getTimestampMillisecs
+        const int tsec = fInfoState.getTimestamp();
+        const int tms  = fInfoState.getTimestampMillisecs();
+
+        fState     = disconnected ? -2 : fInfoState.getQuality();
+        fStateTime = Time(tsec, tms*1000);
+
+        const string name = fInfoState.getName();
+
+        fMsg.StateChanged(fStateTime, name.substr(0, name.length()-6),
+                          disconnected ? "" : fInfoState.getString(), fState);
+
+        return;
+    }
+
+    MessageDimRX::infoHandler();
+}
+
+// ==========================================================================
+
+// --------------------------------------------------------------------------
+//
+//! Delete all StateClient objects from teh list and clear the list.
+//
+void DimNetwork::DeleteClientList()
+{
+    for (ClientList::iterator i=fClientList.begin();
+         i!=fClientList.end(); i++)
+        delete i->second;
+
+    fClientList.clear();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Adds the StateClient for the given server. Don't forget to
+//! call this function if it is overwritten in a derived class.
+//!
+//! @param s
+//!     server which should be added
+//!
+//! @throws
+//!     a runtime_error is the server is already in the list
+//
+void DimNetwork::AddServer(const string &s)
+{
+    DimServiceInfoListImp::AddServer(s);
+    if (s=="DIM_DNS")
+        return;
+
+    // Check if this server is already in the list.
+    // This should never happen if Dim works reliable
+    const ClientList::iterator v = fClientList.find(s);
+    if (v!=fClientList.end())
+    {
+        stringstream err;
+        err << "Server '" << s << "' in list not as it ought to be.";
+        throw runtime_error(err.str());
+    }
+
+    // Add the new server to the server list
+    fClientList[s] = new StateClient(s, *this);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Removes the StateClient for the given server. Don't forget to
+//! call this function if it is overwritten in a derived class.
+//!
+//! @param s
+//!     server which should be removed
+//!
+//! @throws
+//!     a runtime_error is the server to be removed is not in the list
+//
+void DimNetwork::RemoveServer(string s)
+{
+    DimServiceInfoListImp::RemoveServer(s);
+    if (s=="DIM_DNS")
+        return;
+
+    const ClientList::iterator v = fClientList.find(s);
+    if (v==fClientList.end())
+    {
+        stringstream err;
+        err << "Server '" << s << "' not in list as it ought to be.";
+        throw runtime_error(err.str());
+    }
+
+    // Remove the server from the server list
+    delete v->second;
+
+    fClientList.erase(v);
+}
+
+// --------------------------------------------------------------------------
+//
+//! RemovesAll StateClients. Don't forget to call this function if it
+//! is overwritten in a derived class.
+//!
+void DimNetwork::RemoveAllServers()
+{
+    DimServiceInfoListImp::RemoveAllServers();
+    DeleteClientList();
+}
+
+// --------------------------------------------------------------------------
+//
+//! @param server
+//!    server for which the current state should be returned
+//!
+//! @returns
+//!    the current state of the given server, -2 if the server was not found
+//!
+int DimNetwork::GetCurrentState(const string &server) const
+{
+    const ClientList::const_iterator v = fClientList.find(server);
+    return v==fClientList.end() ? -2 : v->second->GetState();
+}
Index: branches/testFACT++branch/src/DimNetwork.h
===================================================================
--- branches/testFACT++branch/src/DimNetwork.h	(revision 18277)
+++ branches/testFACT++branch/src/DimNetwork.h	(revision 18277)
@@ -0,0 +1,89 @@
+#ifndef FACT_DimNetwork
+#define FACT_DimNetwork
+
+// **************************************************************************
+/** @class StateClient
+
+@brief A simple Dim client diriving from MessageDimRX subscribing to the STATE service
+
+This is a simple dim client which subscribes to the MESSAGE and STATE
+service of a server. It stores the last state and its time as well as
+the last message sent.
+
+**/
+// **************************************************************************
+#include "MessageDim.h"
+#include "Time.h"
+
+class StateClient : public MessageDimRX
+{
+private:
+    Time fStateTime;           /// Combine into one MTime (together with value)
+    int  fState;               /// -2 not initialized, -1 not connected, 0>= state of client
+
+    DimStampedInfo fInfoState; /// The dim service subscription
+
+protected:
+    void infoHandler();
+
+public:
+    StateClient(const std::string &name, MessageImp &imp);
+
+    bool IsConnected() const { return fState>=0; }
+    int  GetState() const    { return fState;    }
+
+    const char *GetName() const { return const_cast<DimStampedInfo&>(fInfoState).getName(); }
+};
+
+
+
+// **************************************************************************
+/** @class DimNetwork
+
+@brief Implements automatic subscription to MESSAGE and STATE services
+
+This class derives from DimServiceInfoList, so that it has a full
+overview of all commands and services existing in the current Dim
+network. In addition it automatically subscribes to all available
+MESSAGE and STATE services and redirects them to its MessageImp base class.
+
+@todo
+- maybe the StateClient can be abondoned, this way it would be possible
+  to subscribe to only available MESSAGE and STATE services
+
+**/
+// **************************************************************************
+#include "DimServiceInfoList.h"
+#include "DimErrorRedirecter.h"
+
+using namespace std;
+
+class DimNetwork : public MessageImp, public DimErrorRedirecter, public DimServiceInfoListImp
+{
+private:
+    void DeleteClientList();
+
+protected:
+    typedef std::map<const std::string, StateClient*> ClientList;
+
+    ClientList fClientList; /// A list with all MESSAGE services to which we subscribed
+
+    void AddServer(const std::string &s);
+    void RemoveServer(std::string s);
+    void RemoveAllServers();
+
+public:
+    DimNetwork(std::ostream &out=std::cout)
+        : MessageImp(out), DimErrorRedirecter(static_cast<MessageImp&>(*this))
+    {
+    }
+    ~DimNetwork()
+    {
+        DeleteClientList();
+    }
+
+    int GetCurrentState(const string &server) const;
+};
+
+
+#endif
Index: branches/testFACT++branch/src/DimServerList.cc
===================================================================
--- branches/testFACT++branch/src/DimServerList.cc	(revision 18277)
+++ branches/testFACT++branch/src/DimServerList.cc	(revision 18277)
@@ -0,0 +1,143 @@
+// **************************************************************************
+/** @class DimServerList
+
+@brief Maintains a list of all servers based on DIS_DNS/SERVER_LIST
+
+This class describes to the service DIS_DNS/SERVER_LIST of the name server.
+Thus it always contains an up-to-date list of all servers connected
+to the dns server.
+
+Whenever a server is added or removed, or all servers are removed from the
+#list (the dns itself went offline), the follwoing virtual functions are
+called:
+
+- virtual void AddServer(const std::string &)
+- virtual void RemoveServer(const std::string)
+- virtual void RemoveAllServers()
+
+If overwritten the implementations of the base class doesn't need to be
+called, because it's empty.
+
+@Bugs When a server silently disappears and reappears the service has
+not correctly been deleted from the list and an exception is thrown.
+It is not clear what a better handling here is. Maybe a server is
+first removed from the list before it gets re-added if already in the list?
+
+*/
+// **************************************************************************
+#include "DimServerList.h"
+
+#include <sstream>
+#include <algorithm>
+#include <stdexcept>
+
+using namespace std;
+
+
+
+// --------------------------------------------------------------------------
+//
+//! Constructs the DimServerList. Subscribes a DimInfo to
+//! DIS_DNS/SERVER_LIST.
+//
+DimServerList::DimServerList(DimServerListImp *list) : fList(list),
+    fDimServers("DIS_DNS/SERVER_LIST", const_cast<char*>(""), this)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Whenever the service with the server list is updated this functions
+//! changes the contents of the list and calls RemoveAllServers(),
+//! RemoveServer() and AddServer() where appropriate.
+//
+void DimServerList::infoHandler()
+{
+    if (getInfo()!=&fDimServers)
+        return;
+
+    // Get the received string from the handler
+    const string str = fDimServers.getString();
+
+    // Check if it starts with + or -
+    if (str[0]!='-' && str[0]!='+')
+    {
+        fList->RemoveAllServers();
+        fServerList.clear();
+    }
+
+    // Create a stringstream to tokenize the received string
+    stringstream stream(str);
+
+    // Loop over the seperating tokens
+    string buffer;
+    while (getline(stream, buffer, '|'))
+    {
+        // The first part before the first @ is the server name
+        const string server = buffer.substr(0, buffer.find_first_of('@'));
+        if (server.empty())
+            continue;
+
+        // If it starts with a - we have to remove an entry
+        if (server[0]=='-')
+        {
+            const string trunc = server.substr(1);
+
+            // Check if this server is not found in the list.
+            // This should never happen if Dim works reliable
+            const ServerList::iterator v = find(fServerList.begin(), fServerList.end(), trunc);
+            if (v==fServerList.end())
+            {
+                //stringstream err;
+                //err << "DimServerList: Server '" << trunc << "' not in list as it ought to be.";
+                //throw runtime_error(err.str());
+            }
+
+            fList->RemoveServer(trunc);
+            fServerList.erase(v);
+
+            continue;
+        }
+
+        // If it starts with a + we have to add an entry
+        if (server[0]=='+')
+        {
+            const string trunc = server.substr(1);
+
+            // Check if this server is already in the list.
+            // This should never happen if Dim works reliable
+            const ServerList::iterator v = find(fServerList.begin(), fServerList.end(), trunc);
+            if (v!=fServerList.end())
+            {
+                fList->RemoveServer(trunc);
+                fServerList.erase(v);
+
+                //stringstream err;
+                //err << "DimServerList: Server '" << trunc << "' in list not as it ought to be.";
+                //throw runtime_error(err.str());
+            }
+
+            fServerList.push_back(trunc);
+            fList->AddServer(trunc);
+
+            continue;
+        }
+
+        // In any other case we just add the entry to the list
+        fServerList.push_back(server);
+        fList->AddServer(server);
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! @param server
+//!     server-name to check for
+//!
+//! @returns
+//!     whether the server with the given name is online or not
+//!
+bool DimServerList::HasServer(const std::string &server) const
+{
+    return find(fServerList.begin(), fServerList.end(), server)!=fServerList.end();
+}
Index: branches/testFACT++branch/src/DimServerList.h
===================================================================
--- branches/testFACT++branch/src/DimServerList.h	(revision 18277)
+++ branches/testFACT++branch/src/DimServerList.h	(revision 18277)
@@ -0,0 +1,92 @@
+#ifndef FACT_DimServerList
+#define FACT_DimServerList
+
+#include <vector>
+#include <string>
+
+#include "dic.hxx"
+
+class DimServerListImp;
+
+class DimServerList : public DimInfoHandler
+{
+public:
+    typedef std::vector<std::string> ServerList;
+
+private:
+    DimServerListImp *fList;
+    ServerList fServerList;  /// A list with the available servers
+    DimInfo    fDimServers;  /// A DimInfo to retrieve the SERVER_LIST from teh DNS server
+
+protected:
+    void infoHandler();
+
+public:
+    DimServerList(DimServerListImp *list);
+
+    /// @returns a reference to the list of servers
+    const ServerList &GetServerList() const { return fServerList; }
+
+    /// @returns whether the given server is in the list or not
+    /// @param server string with the server which availability should be checked
+    bool HasServer(const std::string &server) const;
+};
+
+class DimServerListImp
+{
+    DimServerList fList;
+
+public:
+    DimServerListImp() : fList(this) { }
+    virtual ~DimServerListImp() { }
+
+    virtual void AddServer(const std::string &) { };
+    virtual void RemoveServer(std::string) { };
+    virtual void RemoveAllServers() { };
+
+    /// @returns a reference to the list of servers
+    const DimServerList::ServerList &GetServerList() const { return fList.GetServerList(); }
+
+    /// @returns whether the given server is in the list or not
+    /// @param server string with the server which availability should be checked
+    bool HasServer(const std::string &server) const { return fList.HasServer(server); }
+};
+
+#endif
+
+// ***************************************************************************
+/** @fn DimServerList::AddServer(const std::string &server)
+
+This virtual function is called as a callback whenever a new server appears
+to be available on the dns.
+
+The default is to do nothing.
+
+@param server
+   Server name of the server which was added
+
+**/
+// ***************************************************************************
+/** @fn DimServerList::RemoveServer(const std::string &server)
+
+This virtual function is called as a callback whenever a server disappears
+from the dns.
+
+The default is to do nothing.
+
+@param server
+   Server name of the server which was removed
+
+
+**/
+// ***************************************************************************
+/** @fn DimServerList::RemoveAllServers()
+
+This virtual function is called as a callback whenever a all servers
+disappear, e.g. the dns has vanished.
+
+The default is to do nothing.
+
+
+**/
+// ***************************************************************************
Index: branches/testFACT++branch/src/DimServiceInfoList.cc
===================================================================
--- branches/testFACT++branch/src/DimServiceInfoList.cc	(revision 18277)
+++ branches/testFACT++branch/src/DimServiceInfoList.cc	(revision 18277)
@@ -0,0 +1,754 @@
+// **************************************************************************
+/** @class DimServiceInfoList
+
+@brief Maintains a list of all services available in the Dim network
+
+The idea of this class is to maintain a list of services available
+in the Dim network as well as state descriptions if available.
+
+Therefore, it subscribes to the SERVICE_LIST, SERVICE_DESC and STATE_LIST
+services of all servers.
+
+To maintain the list it derives from DimServerList which maintains
+a list of all servers.
+
+To maintain the subscriptions it overwrites:
+
+- void DimServerList::AddServer(const std::string &s)
+- void DimServerList::RemoveServer(const std::string &s)
+- void DimServerList::RemoveAllServers()
+
+If a derived class also overwrites these functions it must be ensured that
+the member functions of DimServiceInfoList are still called properly.
+
+Whenever a service is added or removed, or all services of one server
+is removed the following virtual functions are called:
+
+- virtual void AddService(const std::string &server, const std::string &service, const std::string &fmt, bool iscmd)
+- virtual void RemoveService(const std::string &server, const std::string &service, bool iscmd)
+- virtual void RemoveAllServices(const std::string &server)
+
+Note, that these functions are not called from the RemoveServer() and
+RemoveAllServer() functions. It might be a difference whether all services
+were removed but the server is still online or the server went offline.
+
+If a description or a state was added, this is signaled though:
+
+- virtual void AddDescription(const std::string &server, const std::string &service, const std::vector<Description> &vec)
+- virtual void AddStates(const std::string &server, const std::vector<State> &vec)
+
+Note, that Descriptions and States are never removed except a service or
+server goes offline. It is expected that if a service comes online also
+the list of descritions is sent again.
+
+*/
+// **************************************************************************
+#include "DimServiceInfoList.h"
+
+#include <sstream>
+
+#include "WindowLog.h"
+#include "Converter.h"
+
+#include "tools.h"
+#include "Time.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! A helper to shorten the call to create a DimInfo.
+//!
+//! @param str
+//!    name of the server to which we want to subscribe
+//!
+//! @param svc
+//!    name of the servic on the server to which we want to subscribe
+//!
+//! @returns
+//!    a pointer to the newly created DimInfo
+//!
+DimInfo *DimServiceInfoList::CreateDimInfo(const string &str, const string &svc) const
+{
+    return new DimInfo((str+'/'+svc).c_str(),
+                       const_cast<char*>(""),
+                       const_cast<DimServiceInfoList*>(this));
+}
+
+// --------------------------------------------------------------------------
+//
+//! Adds the service subscription for SERVICE_LIST, SERVICE_DESC and
+//! STATE_LIST for the given server. Don't forget to call this function
+//! if it is overwritten in a derived class.
+//!
+//! @param s
+//!     server which should be added
+//!
+//! @throws
+//!     a runtime_error is the server is already in the list
+//
+void DimServiceInfoList::AddServer(const string &s)
+{
+    // Check if this server is already in the list.
+    // This should never happen if Dim works reliable
+    const ServiceInfoList::iterator v = fServiceInfoList.find(s);
+    if (v!=fServiceInfoList.end())
+    {
+        stringstream err;
+        err << "DimServiceInfoList: Server '" << s << "' in list not as it ought to be.";
+        throw runtime_error(err.str());
+    }
+
+    fServiceInfoList[s].push_back(CreateSL(s));
+    fServiceInfoList[s].push_back(CreateFMT(s));
+    fServiceInfoList[s].push_back(CreateDS(s));
+}
+
+// --------------------------------------------------------------------------
+//
+//! Removes the service subscription for SERVICE_LIST, SERVICE_DESC and
+//! STATE_LIST for the given server, as well as the stored informations.
+//! Don't forget to call this function if it is overwritten in a derived
+//! class.
+//!
+//! @param s
+//!     server which should be removed. We need to make a copy, otherwise
+//!     RemoveServer will destroy the staring the reference is pointing to
+//!
+//! @throws
+//!     a runtime_error is the server to be removed is not in the list
+//
+void DimServiceInfoList::RemoveServer(const string s)
+{
+    fList->RemoveAllServices(s);
+
+    const ServiceInfoList::iterator v = fServiceInfoList.find(s);
+    if (v==fServiceInfoList.end())
+        return;
+    /*
+    {
+        stringstream err;
+        err << "DimServiceInfoList: Server '" << s << "' not in list as it ought to be.";
+        throw runtime_error(err.str());
+    }*/
+
+    // Remove the server from the server list
+    delete v->second[0];
+    delete v->second[1];
+    delete v->second[2];
+
+    fServiceInfoList.erase(v);
+    fServiceList.erase(s);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Removes the service subscription for SERVICE_LIST, SERVICE_DESC and
+//! STATE_LIST for all servers, as well as all stored informations.
+//! Don't forget to call this function if it is overwritten in a derived
+//! class.
+//!
+void DimServiceInfoList::RemoveAllServers()
+{
+    while (!fServiceInfoList.empty())
+        RemoveServer(fServiceInfoList.begin()->first);
+}
+
+
+// --------------------------------------------------------------------------
+//
+//! This function processes the update of the SERVICE_LIST, SERVICE_DESC,
+//! and STATE_LIST updates.
+//!
+//! Whenever a service is added or removed or all services of a server are
+//! removed (the list is newly sent completely) the virtual functions
+//! AddService(), RemoveService() and RemoveAllServices() aee called.
+//!
+//! If a new description or a new state is added, the virtual functions
+//! AddDescription() and AddStates() respectively are called.
+//
+void DimServiceInfoList::infoHandler()
+{
+    // Get the name of the service
+    const string svc = getInfo()->getName();
+
+    // Get the server name from the service name
+    const string server  = svc.substr(0, svc.find_first_of('/'));
+    const string service = svc.substr(svc.find_first_of('/')+1);
+
+    if (service=="SERVICE_LIST")
+    {
+        // For easy and fast access get the corresponding reference
+        TypeList &list = fServiceList[server].first;
+
+        const string str = getInfo()->getString();
+
+        // WHAT's THIS???
+        if (str.length()==0)
+            return;
+
+        // Initialize the entry with an empty list
+        if (str[0]!='+' && str[0]!='-')
+        {
+            fList->RemoveAllServices(server);
+            list.clear();
+        }
+
+        string buffer;
+
+        // Tokenize the stream into lines
+        stringstream stream(str);
+        while (getline(stream, buffer, '\n'))
+        {
+            if (buffer.empty())
+                continue;
+
+            // Get the type and compare it with fType
+            const string type = buffer.substr(buffer.find_last_of('|')+1);
+            if (type=="RPC")
+                continue;
+
+            /*
+            const bool iscmd = type=="CMD";
+            if (type!=fType && fType!="*")
+                continue;
+                */
+
+            // Get format, name and command name
+            const string fmt  = buffer.substr(buffer.find_first_of('|')+1, buffer.find_last_of('|')-buffer.find_first_of('|')-1);
+            const string name = buffer.substr(buffer.find_first_of('/')+1, buffer.find_first_of('|')-buffer.find_first_of('/')-1);
+            //const string cmd  = buffer.substr(0, buffer.find_first_of('|'));
+
+            const bool iscmd = type=="CMD";
+
+            // FIXME: Do we need to check that the buffer starts with SERVER ?
+
+            if (buffer[0]=='-')
+            {
+                // Check if this server is not found in the list.
+                // This should never happen if Dim works reliable
+                const TypeList::iterator v = list.find(name);
+                /*
+                if (v==list.end())
+                {
+                    stringstream err;
+                    err << "DimServiceInfoList: Service '" << server << "/" << name << "' not in list as it ought to be.";
+                    // Seems to happen why more than one client is subscribed
+                    // and e.g. the datalogger is immediately quit
+                    throw runtime_error(err.str());
+                }*/
+
+                fList->RemoveService(server, name, iscmd);
+                if (v!=list.end())
+                    list.erase(v);
+
+                continue;
+            }
+
+            if (buffer[0]=='+')
+            {
+                // Check if this server is not found in the list.
+                // This should never happen if Dim works reliable
+                const TypeList::iterator v = list.find(name);
+                if (v!=list.end())
+                {
+                    stringstream err;
+                    err << "DimServiceInfoList: Service '" << server << "/" << name << "' already in list not as it ought to be.";
+                    throw runtime_error(err.str());
+                }
+
+                list[name] = make_pair(fmt, iscmd);
+                fList->AddService(server, name, fmt, iscmd);
+
+                continue;
+            }
+
+            // Add name the the list
+            list[name] = make_pair(fmt, iscmd);
+            fList->AddService(server, name, fmt, iscmd);
+        }
+
+        return;
+    }
+
+    if (service=="SERVICE_DESC")
+    {
+        // For easy and fast access get the corresponding reference
+        DescriptionList &list = fServiceList[server].second;
+
+        list.clear();
+
+        string buffer;
+
+        stringstream stream(getInfo()->getString());
+        while (getline(stream, buffer, '\n'))
+        {
+            if (buffer.empty())
+                continue;
+
+            const vector<Description> v = Description::SplitDescription(buffer);
+
+            const string name    = v[0].name.substr(v[0].name.find_first_of('/')+1);
+            const string comment = v[0].comment;
+
+            list[name] = make_pair(comment, vector<Description>(v.begin()+1, v.end()));
+
+            fList->AddDescription(server, name, v);
+        }
+
+        return;
+    }
+
+    if (service=="STATE_LIST")
+    {
+        vector<State> &vec = fServiceList[server].third;
+        vec = State::SplitStates(getInfo()->getString());
+        fList->AddStates(server, vec);
+
+        return;
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! Returns a list of all services available for the given server.
+//! Depending on iscmd either only services or only commands are returned.
+//!
+//! @param server
+//!     server for which the list should be returned
+//! 
+//! @param iscmd
+//!     true if only commands should be returned, false for services
+//!
+//! @returns
+//!     a vector<string> which contains all the service or command names for
+//!     the given server. The names returned are always SERVER/SERVICE
+//!     If the server was not fund an empty vector is returned.
+//
+vector<string> DimServiceInfoList::GetServiceList(const std::string &server, bool iscmd) const
+{
+    const ServiceList::const_iterator m = fServiceList.find(server);
+    if (m==fServiceList.end())
+        return vector<string>();
+
+    const TypeList &list = m->second.first;
+
+    vector<string> vec;
+    for (TypeList::const_iterator i=list.begin(); i!=list.end(); i++)
+        if (i->second.second==iscmd)
+            vec.push_back(server+'/'+i->first);
+
+    return vec;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Returns a list of all services available in the network.
+//! Depending on iscmd either only services or only commands are returned.
+//!
+//! @param iscmd
+//!     true if only commands should be returned, false for services
+//!
+//! @returns
+//!     a vector<string> which contains all the service or command names in
+//!     the network. The names returned are always SERVER/SERVICE
+//
+vector<string> DimServiceInfoList::GetServiceList(bool iscmd) const
+{
+    vector<string> vec;
+    for (ServiceList::const_iterator m=fServiceList.begin(); m!=fServiceList.end(); m++)
+    {
+        const TypeList &list = m->second.first;
+
+        for (TypeList::const_iterator i=list.begin(); i!=list.end(); i++)
+            if (i->second.second==iscmd)
+                vec.push_back(m->first+'/'+i->first);
+    }
+
+    return vec;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Returns a list of all descriptions for the given service on the
+//! given server. Service in this context can also be a command.
+//!
+//! @param server
+//!     Server name to look for
+//!
+//! @param service
+//!     Service/command name to look for
+//!
+//! @returns
+//!     a vector<Description> which contains all argument descriptions for
+//!     the given service or command. The first entry contains the name
+//!     and the general description for the given service. If the server
+//!     or service was not found an empty vector is returned.
+//
+std::vector<Description> DimServiceInfoList::GetDescription(const std::string &server, const std::string &service) const
+{
+    const ServiceList::const_iterator s = fServiceList.find(server);
+    if (s==fServiceList.end())
+        return vector<Description>();
+
+    const DescriptionList &descs = s->second.second;
+
+    const DescriptionList::const_iterator d = descs.find(service);
+    if (d==descs.end())
+        return vector<Description>();
+
+    vector<Description> vec;
+    vec.push_back(Description(service, d->second.first));
+    vec.insert(vec.end(), d->second.second.begin(), d->second.second.end());
+
+    return vec;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Returns a list of all states associated with the given server.
+//!
+//! @param server
+//!     Server name to look for
+//!
+//! @returns
+//!     a vector<State> which contains all state descriptions for
+//!     the given server. If the server or service was not found an
+//!     empty vector is returned.
+//
+vector<State> DimServiceInfoList::GetStates(const std::string &server) const
+{
+    const ServiceList::const_iterator s = fServiceList.find(server);
+    if (s==fServiceList.end())
+        return vector<State>();
+
+    return s->second.third;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Returns the Description of the state as defined by the arguments.
+//! given server. Service in this context can also be a command.
+//!
+//! @param server
+//!     Server name to look for
+//!
+//! @param state
+//!     The state index to look for (e.g. 1)
+//!
+//! @returns
+//!     The State object containing the description. If the server was
+//!     not found the State object will contain the index -3, if the
+//!     state was not found -2.
+//
+State DimServiceInfoList::GetState(const std::string &server, int state) const
+{
+    const ServiceList::const_iterator s = fServiceList.find(server);
+    if (s==fServiceList.end())
+    {
+        stringstream str;
+        str << "DimServiceInfoList::GetState: Searching for state #" << state << " server " << server << " not found.";
+        return State(-3, "Server not found", str.str());
+    }
+
+    const std::vector<State> &v = s->second.third;
+
+    for (vector<State>::const_iterator i=v.begin(); i!=v.end(); i++)
+        if (i->index==state)
+            return *i;
+
+    stringstream str;
+    str << "DimServiceInfoList::GetState: State #" << state << " not found on server " << server << ".";
+    return State(-2, "State not found", str.str());
+}
+
+// --------------------------------------------------------------------------
+//
+//! Returns whether the given service on the given server is a command
+//! or not.
+//!
+//! @param server
+//!     Server name to look for
+//!
+//! @param service
+//!     The service name to look for
+//!
+//! @returns
+//!     1 if it is a command, 0 if it is a service, -1 if the service
+//!     was not found on the server, -2 if the server was not found.
+//
+int DimServiceInfoList::IsCommand(const std::string &server, const std::string &service) const
+{
+    const ServiceList::const_iterator s = fServiceList.find(server);
+    if (s==fServiceList.end())
+        return -2;
+
+    const TypeList &list = s->second.first;
+
+    const TypeList::const_iterator t = list.find(service);
+    if (t==list.end())
+        return -1;
+
+    return t->second.second;
+}
+
+
+// --------------------------------------------------------------------------
+//
+//! Print the full available documentation (description) of all available
+//! services or comments to the the given stream.
+//!
+//! @param out
+//!    ostream to which the output is send.
+//!
+//! @param iscmd
+//!   true if all commands should be printed, false for services.
+//!
+//! @param serv
+//!    if a server is given, only the information for this server is printed
+//!
+//! @param service
+//!    if a service is given, only information for this service is printed
+//!
+//! @returns
+//!    the number of descriptions found
+//
+int DimServiceInfoList::PrintDescription(std::ostream &out, bool iscmd, const string &serv, const string &service) const
+{
+    int rc = 0;
+    for (ServiceList::const_iterator i=fServiceList.begin(); i!=fServiceList.end(); i++)
+    {
+        const string &server = i->first;
+
+        if (!serv.empty() && server!=serv)
+            continue;
+
+        out << kRed << "----- " << server << " -----" << endl;
+
+        const TypeList        &types = i->second.first;
+        const DescriptionList &descs = i->second.second;
+
+        for (TypeList::const_iterator t=types.begin(); t!=types.end(); t++)
+        {
+            if (!service.empty() && t->first!=service)
+                continue;
+
+            if (t->second.second!=iscmd)
+                continue;
+
+            rc++;
+
+            out << " " << t->first;
+
+            // Check t->second->first for command or service
+            const string fmt = t->second.first;
+            if (!fmt.empty())
+                out << '[' << fmt << ']';
+
+            const DescriptionList::const_iterator d = descs.find(t->first);
+            if (d==descs.end())
+            {
+                out << endl;
+                continue;
+            }
+
+            const string comment         = d->second.first;
+            const vector<Description> &v = d->second.second;
+
+            for (vector<Description>::const_iterator j=v.begin(); j!=v.end(); j++)
+                out << " <" << j->name << ">";
+            out << endl;
+
+            if (!comment.empty())
+                out << "    " << comment << endl;
+
+            for (vector<Description>::const_iterator j=v.begin(); j!=v.end(); j++)
+            {
+                out << "    " << kGreen << j->name;
+                if (!j->comment.empty())
+                    out << kReset << ": " << kBlue << j->comment;
+                if (!j->unit.empty())
+                    out << kYellow << " [" << j->unit << "]";
+                out << endl;
+            }
+        }
+        out << endl;
+    }
+
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Print the full list of stated for the given server.
+//!
+//! @param out
+//!    ostream to which the output is send.
+//!
+//! @param serv
+//!    if a server is given, only the information for this server is printed
+//!
+//! @returns
+//!    the number of states found
+//
+int DimServiceInfoList::PrintStates(std::ostream &out, const string &serv) const
+{
+    int rc = 0;
+    for (ServiceList::const_iterator i=fServiceList.begin(); i!=fServiceList.end(); i++)
+    {
+        const string &server = i->first;
+
+        if (!serv.empty() && server!=serv)
+            continue;
+
+        out << kRed << "----- " << server << " -----" << endl;
+
+        const vector<State> &v = i->second.third;
+
+        if (v.empty())
+            out << "   <no states>" << endl;
+        else
+            rc++;
+
+        for (vector<State>::const_iterator s=v.begin(); s!=v.end(); s++)
+        {
+            out << kBold   << setw(5) << s->index << kReset << ": ";
+            out << kYellow << s->name;
+            out << kBlue   << " (" << s->comment << ")" << endl;
+        }
+        out << endl;
+    }
+
+    return rc;
+}
+
+
+// --------------------------------------------------------------------------
+//
+//! Tries to send a dim command according to the arguments.
+//! The command given is evaluated according to the available format string.
+//!
+//! @param server
+//!    The name of the server to which the command should be send, e.g. DRIVE
+//!
+//! @param str
+//!    Command and data, eg "TRACK 12.5 13.8"
+//!
+//! @param lout
+//!    the ostream to which errors and debug output is redirected
+//!
+//! @throws
+//!    runtime_error if the server or command was not found, or if the
+//!    format associated with the command could not be properly parsed,
+//!    or if the command could not successfully be emitted.
+//!
+void DimServiceInfoList::SendDimCommand(const string &server, string str, ostream &lout) const
+{
+    str = Tools::Trim(str);
+
+    // Find the delimiter between the command name and the data
+    size_t p0 = str.find_first_of(' ');
+    if (p0==string::npos)
+        p0 = str.length();
+
+    // Get just the command name separated from the data
+    const string name = str.substr(0, p0);
+
+    // Compile the command which will be sent to the state-machine
+    const string cmd = server + '/' + name;
+
+    const ServiceList::const_iterator m = fServiceList.find(server);
+    if (m==fServiceList.end())
+        throw runtime_error("Unkown server '"+server+"'");
+
+    const TypeList &services = m->second.first;
+
+    const TypeList::const_iterator t = services.find(name);
+    if (t==services.end())
+        throw runtime_error("Command '"+name+"' not known on server '"+server+"'");
+
+    if (!t->second.second)
+        throw runtime_error("'"+server+"/"+name+" not a command.");
+
+    // Get the format of the event data
+    const string fmt = t->second.first;
+
+    // Avoid compiler warning of unused parameter
+    lout << flush;
+
+    // Convert the user entered data according to the format string
+    // into a data block which will be attached to the event
+#ifndef DEBUG
+    ostringstream sout;
+    const Converter conv(sout, fmt, false);
+#else
+    const Converter conv(lout, fmt, false);
+#endif
+    if (!conv)
+        throw runtime_error("Couldn't properly parse the format... ignored.");
+
+#ifdef DEBUG
+    lout << kBlue << cmd;
+#endif
+    const vector<char> v = conv.GetVector(str.substr(p0));
+#ifdef DEBUG
+    lout << kBlue << " [" << v.size() << "]" << endl;
+#endif
+
+    DimClient::sendCommandNB(cmd.c_str(), (void*)v.data(), v.size());
+}
+
+// --------------------------------------------------------------------------
+//
+//! Catches the runtime_erros thrown by
+//!    SendDimCommand(const string &, string, ostream &)
+//! and redirects the error message to the output stream.
+//!
+//! @param lout
+//!    the ostream to which errors and debug output is redirected
+//!
+//! @param server
+//!    The name of the server to which the command should be send, e.g. DRIVE
+//!
+//! @param str
+//!    Command and data, eg "TRACK 12.5 13.8"
+//!
+//! @returns
+//!    true if SendDimComment didn't throw an exception, false otherwise
+//!
+bool DimServiceInfoList::SendDimCommand(ostream &lout, const string &server, const string &str) const
+{
+    try
+    {
+        SendDimCommand(server, str, lout);
+        //lout << kGreen << "Command emitted successfully to " << server << "." << endl;
+        return true;
+    }
+    catch (const runtime_error &e)
+    {
+        lout << kRed << e.what() << endl;
+        return false;
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls SendDimCommand(const string &, string, ostream &) and dumps
+//! the output.
+//!
+//! @param server
+//!    The name of the server to which the command should be send, e.g. DRIVE
+//!
+//! @param str
+//!    Command and data, eg "TRACK 12.5 13.8"
+//!
+//! @throws
+//!    see SendDimCommand(const string &, string, ostream &)
+//
+void DimServiceInfoList::SendDimCommand(const std::string &server, const std::string &str) const
+{
+    ostringstream dummy;
+    SendDimCommand(server, str, dummy);
+}
+
+DimServiceInfoList::DimServiceInfoList(DimServiceInfoListImp *list) : DimServerList(list), fList(list) { }
Index: branches/testFACT++branch/src/DimServiceInfoList.h
===================================================================
--- branches/testFACT++branch/src/DimServiceInfoList.h	(revision 18277)
+++ branches/testFACT++branch/src/DimServiceInfoList.h	(revision 18277)
@@ -0,0 +1,217 @@
+#ifndef FACT_DimServiceInfoList
+#define FACT_DimServiceInfoList
+
+#include <map>
+#include <vector>
+#include <string>
+
+#include "State.h"
+#include "Description.h"
+#include "DimServerList.h"
+
+class DimInfo;
+class DimServiceInfoListImp;
+
+class DimServiceInfoList : public DimServerList
+{
+public:
+
+    typedef std::map<const std::string, std::vector<DimInfo*>> ServiceInfoList;
+
+    //                   Format   IsCmd
+    typedef std::pair<std::string, bool> ServiceType;
+
+    //                 name of service  Format/description
+    typedef std::map<const std::string, ServiceType> TypeList;
+
+    //                 ServiceName                 comment      list of descriptions
+    typedef std::map<const std::string, std::pair<std::string, std::vector<Description>>> DescriptionList;
+
+    struct ServerInfo
+    {
+        TypeList           first;   /// Format and description of the service
+        DescriptionList    second;  /// Description of the arguments
+        std::vector<State> third;   /// Available states of the server
+    };
+
+    //                   Server         ServerInfo
+    typedef std::map<const std::string, ServerInfo> ServiceList;
+
+private:
+    DimServiceInfoListImp *fList;
+    ServiceInfoList fServiceInfoList; /// A map storing the service description to retrieve all informations
+    ServiceList     fServiceList;     /// A mal containing all the available informations
+
+    DimInfo *CreateDimInfo(const std::string &str, const std::string &svc) const;
+    DimInfo *CreateSL(const std::string &str) const { return CreateDimInfo(str, "SERVICE_LIST"); }
+    DimInfo *CreateFMT(const std::string &str) const { return CreateDimInfo(str, "SERVICE_DESC"); }
+    DimInfo *CreateDS(const std::string &str) const { return CreateDimInfo(str, "STATE_LIST"); }
+
+public:
+    void AddServer(const std::string &s);
+    void RemoveServer(std::string);
+    void RemoveAllServers();
+
+protected:
+    void infoHandler();
+
+public:
+    DimServiceInfoList(DimServiceInfoListImp *list);
+    ~DimServiceInfoList() {  }
+
+    std::vector<std::string> GetServiceList(bool iscmd=false) const;
+    std::vector<std::string> GetServiceList(const std::string &server, bool iscmd=false) const;
+
+    std::vector<Description> GetDescription(const std::string &server, const std::string &service) const;
+    std::vector<State>       GetStates(const std::string &server) const;
+    State                    GetState(const std::string &server, int state) const;
+
+    int IsCommand(const std::string &server, const std::string &service) const;
+
+    int PrintDescription(std::ostream &out, bool iscmd, const std::string &serv="", const std::string &service="") const;
+    int PrintStates(std::ostream &out, const std::string &serv="") const;
+
+    bool SendDimCommand(std::ostream &lout, const std::string &server, const std::string &str) const;
+    void SendDimCommand(const std::string &server, std::string str, std::ostream &lout) const;
+    void SendDimCommand(const std::string &server, const std::string &str) const;
+};
+
+class DimServiceInfoListImp : public DimServerListImp
+{
+public:
+    DimServiceInfoList fInfo;
+
+protected:
+    virtual void AddServer(const std::string &s) { fInfo.AddServer(s); }
+    virtual void RemoveServer(std::string s)     { fInfo.RemoveServer(s); }
+    virtual void RemoveAllServers()              { fInfo.RemoveAllServers(); }
+
+public:
+    virtual void AddService(const std::string &, const std::string &, const std::string &, bool) { }
+    virtual void RemoveService(std::string, std::string, bool) { }
+    virtual void RemoveAllServices(const std::string &) { }
+    virtual void AddDescription(const std::string &, const std::string &, const std::vector<Description> &) { }
+    virtual void AddStates(const std::string &, const std::vector<State> &) { }
+
+public:
+    DimServiceInfoListImp() : fInfo(this) { }
+    ~DimServiceInfoListImp() { fInfo.RemoveAllServers(); }
+
+    std::vector<std::string> GetServiceList(bool iscmd=false) const
+    { return fInfo.GetServiceList(iscmd); }
+    std::vector<std::string> GetServiceList(const std::string &server, bool iscmd=false) const
+    { return fInfo.GetServiceList(server, iscmd); }
+
+    std::vector<std::string> GetCommandList() const { return GetServiceList(true); }
+    std::vector<std::string> GetCommandList(const std::string &server) const { return GetServiceList(server, true); }
+
+    std::vector<Description> GetDescription(const std::string &server, const std::string &service) const
+    { return fInfo.GetDescription(server, service); }
+    std::vector<State>       GetStates(const std::string &server) const
+    { return fInfo.GetStates(server); }
+    State                    GetState(const std::string &server, int state) const
+    { return fInfo.GetState(server, state); }
+
+    int IsCommand(const std::string &server, const std::string &service) const
+    { return fInfo.IsCommand(server, service); }
+
+    int PrintDescription(std::ostream &out, bool iscmd, const std::string &serv="", const std::string &service="") const
+    { return fInfo.PrintDescription(out, iscmd, serv, service); }
+    int PrintStates(std::ostream &out, const std::string &serv="") const
+    { return fInfo.PrintStates(out, serv); }
+
+    bool SendDimCommand(std::ostream &lout, const std::string &server, const std::string &str) const
+    { return fInfo.SendDimCommand(lout, server, str); }
+    void SendDimCommand(const std::string &server, std::string str, std::ostream &lout) const
+    { return fInfo.SendDimCommand(server, str, lout); }
+    void SendDimCommand(const std::string &server, const std::string &str) const
+    { return fInfo.SendDimCommand(server, str); }
+};
+
+
+
+// ***************************************************************************
+/** @fn DimServiceInfoList::AddService(const std::string &server, const std::string &service, const std::string &fmt, bool iscmd)
+
+This virtual function is called as a callback whenever a new service appears.
+The default is to do nothing.
+
+@param server
+   Server name of the server at which the new service appeared
+
+@param service
+   Service name which appeared
+
+@param fmt
+   Dim format string associated with the service
+
+@param iscmd
+   boolean which is true if it is a command, and false if it is a service
+
+
+**/
+// ***************************************************************************
+/** @fn DimServiceInfoList::RemoveService(const std::string &server, const std::string &service, bool iscmd)
+
+This virtual function is called as a callback whenever a service disappears.
+The default is to do nothing.
+
+@param server
+   Server name of the server at which the new service appeared
+
+@param service
+   Service name which appeared
+
+@param iscmd
+   boolean which is true if it is a command, and false if it is a service
+
+
+**/
+// ***************************************************************************
+/** @fn DimServiceInfoList::RemoveAllServices(const std::string &server)
+
+This virtual function is called as a callback whenever a server disappears,
+or the list must be cleared because a new list has been retrieved.
+The default is to do nothing.
+
+@param server
+   Server name of the server at which the new service appeared
+
+
+**/
+// ***************************************************************************
+/** @fn DimServiceInfoList::AddDescription(const std::string &server, const std::string &service, const std::vector<Description> &vec)
+
+This virtual function is called as a callback whenever a new description
+was received.
+The default is to do nothing.
+
+@param server
+   Server name of the server for which something was received
+
+@param service
+   Service name for which the description weer received
+
+@param vec
+   vector<Description> associated with this service. The first entry in the
+   list belongs to the service itself, each consecutive entry to its arguments
+
+
+**/
+// ***************************************************************************
+/** @fn DimServiceInfoList::AddStates(const std::string &server, const std::vector<State> &vec)
+
+This virtual function is called as a callback whenever a new list of states
+was received.
+The default is to do nothing.
+
+@param server
+   Server name for which the list was received
+
+@param vec
+   vector<State> associated with this server.
+
+**/
+// ***************************************************************************
+
+#endif
Index: branches/testFACT++branch/src/DimSetup.cc
===================================================================
--- branches/testFACT++branch/src/DimSetup.cc	(revision 18277)
+++ branches/testFACT++branch/src/DimSetup.cc	(revision 18277)
@@ -0,0 +1,188 @@
+// **************************************************************************
+/** @namespace Dim
+
+@brief Namespace to host some global Dim helper functions
+
+*/
+// **************************************************************************
+#include "Dim.h"
+
+/*
+#include <netdb.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <arpa/inet.h>
+*/
+#include <boost/asio.hpp>
+
+#include <iostream>
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! Tries to determine the local IP address with which we will connect
+//! to the DIM dns.
+//!
+//! The local IP address is necessary because in some circumstances
+//! Dim needs the IP address of the connecting machine (DIM_HOST_NODE)
+//! for the clients to correctly connect to them. So what we would
+//! need is the IP address over which the machine is reachable from
+//! the client. Unfortunately, we have no access to the client
+//! connection, hence, we have to find the best guess of an address
+//! which is not our own machine and hope it is routed over the
+//! standard ethernet interface over which other clients will connect.
+//!
+//! To not send random packages over the network we use a local
+//! IP address. To make sure it is something which leaves the network
+//! card and is not just our machine, we can use a broadcast address.
+//! Consequently, the deafult has been chosen to be "192.168.0.255"
+//!
+//! @param dns
+//!     Address of the Dim-dns
+//!
+//! @returns
+//!     The IP Address through which the connection to the DNS will
+//!     take place.
+//!
+//! @todo
+//!     Implement a --host command line option (just in case)
+//!
+string Dim::GetLocalIp(const string &dns)
+{
+    using namespace boost::asio;
+    using namespace boost::asio::ip;
+
+    cout << "Trying to resolve local IP address..." << endl;
+
+    boost::system::error_code ec;
+
+    boost::asio::io_service io_service;
+
+    udp::socket socket(io_service);
+
+    udp::resolver resolver(io_service);
+    udp::resolver::query query(dns, "0");
+    udp::resolver::iterator iterator = resolver.resolve(query, ec);
+    if (ec)
+    {
+        //cout << "WARNING - Failure in name-resolution of '" << dns << ":0': ";
+        cout << "WARNING - Could not resolve local ip address: ";
+        cout << ec.message() << " (" << ec << ")" << endl;
+        return dns;
+    }
+
+    for (; iterator != udp::resolver::iterator(); ++iterator)
+    {
+        udp::endpoint endpoint = *iterator;
+        socket.connect(endpoint, ec);
+        if (ec)
+        {
+            cout << "WARNING - Could not resolve local ip address: ";
+            cout << ec.message() << " (" << ec << ")" << endl;
+            continue;
+        }
+
+        const string addr = socket.local_endpoint().address().to_v4().to_string();
+        return addr;
+    }
+
+    return "localhost";
+
+/*
+    struct addrinfo hints, *servinfo, *p;
+
+    memset(&hints, 0, sizeof hints);
+    hints.ai_family   = AF_INET; //AF_UNSPEC; // use AF_INET6 to force IPv6
+    hints.ai_socktype = SOCK_STREAM;
+
+    int rv;
+    if ((rv = getaddrinfo(dns.c_str(), NULL, &hints, &servinfo)) != 0)
+    {
+        cout << "WARNING - getaddrinfo: " << gai_strerror(rv) << endl;
+        return dns;
+    }
+
+    // loop through all the results and connect to the first we can
+    for (p=servinfo; p; p=p->ai_next)
+    {
+        const int sock = socket(AF_INET, SOCK_DGRAM, 0);
+        if (sock==-1)
+            continue;
+
+        if (connect(sock, p->ai_addr, p->ai_addrlen)==-1)
+        {
+            cout << "WARNING - connect: " << strerror(errno) << endl;
+            close(sock);
+            continue;
+        }
+
+        sockaddr_in name;
+        socklen_t namelen = sizeof(name);
+        if (getsockname(sock, (sockaddr*)&name, &namelen)==-1)
+        {
+            cout << "WARNING - getsockname: " << strerror(errno) << endl;
+            close(sock);
+            continue;
+        }
+
+        char buffer[16];
+        if (!inet_ntop(AF_INET, &name.sin_addr, buffer, 16))
+        {
+            cout << "WARNING - inet_ntop: " << strerror(errno) << endl;
+            close(sock);
+            continue;
+        }
+
+        close(sock);
+
+        freeaddrinfo(servinfo); // all done with this structure
+
+        cout << "DIM_HOST_NODE=" << buffer << endl;
+        return buffer;
+    }
+
+    freeaddrinfo(servinfo); // all done with this structure
+
+    return dns;
+*/
+}
+
+// --------------------------------------------------------------------------
+//
+//! Set the environment variable DIM_DNS_NODE to the given string and
+//! DIM_HOST_NODE to the IP-address through which this machine connects
+//! to the dns.
+//!
+//! @param dns
+//!     Address of the Dim-dns
+//!
+void Dim::Setup(const std::string &dns, const std::string &host)
+{
+    if (dns.empty())
+    {
+        setenv("DIM_DNS_NODE", "...", 1);
+        //unsetenv("DIM_DNS_NODE");
+        //unsetenv("DIM_HOST_NODE");
+        return;
+    }
+
+    const string loc = host.empty() ? Dim::GetLocalIp(dns.c_str()) : host;
+
+    setenv("DIM_DNS_NODE",  dns.c_str(), 1);
+    setenv("DIM_HOST_NODE", loc.c_str(), 1);
+
+    cout << "Setting DIM_DNS_NODE =" << dns << endl;
+    cout << "Setting DIM_HOST_NODE=" << loc << endl;
+}
+
+extern "C"
+{
+    const char *GetLocalIp()
+    {
+        static string rc;
+        rc = Dim::GetLocalIp();
+        cout << "Setting DIM_HOST_NODE=" << rc << endl;
+        return rc.c_str();
+    }
+}
Index: branches/testFACT++branch/src/DimSetup.h
===================================================================
--- branches/testFACT++branch/src/DimSetup.h	(revision 18277)
+++ branches/testFACT++branch/src/DimSetup.h	(revision 18277)
@@ -0,0 +1,13 @@
+#ifndef FACT_DimSetup
+#define FACT_DimSetup
+
+#include <string>
+
+namespace Dim
+{
+    //std::string GetLocalIp(const std::string &dns="192.168.0.255");
+    std::string GetLocalIp(const std::string &dns="10.0.100.1");
+    void Setup(const std::string &dns="", const std::string &host="");
+}
+
+#endif
Index: branches/testFACT++branch/src/DimState.cc
===================================================================
--- branches/testFACT++branch/src/DimState.cc	(revision 18277)
+++ branches/testFACT++branch/src/DimState.cc	(revision 18277)
@@ -0,0 +1,107 @@
+#include "DimState.h"
+
+using namespace std;
+using namespace boost;
+
+void DimDnsServerList::HandlerServerImp(const EventImp &evt)
+{
+    if (evt.GetSize()==0)
+        return;
+
+    time = evt.GetTime();
+    msg  = evt.GetString();
+
+    typedef char_separator<char> separator;
+    const tokenizer<separator> tok(msg, separator("|"));
+
+    for (auto it=tok.begin(); it!=tok.end(); it++)
+    {
+        const size_t p = it->find_first_of('@');
+        if (p==string::npos)
+            continue;
+
+        // The first part before the first @ is the server name
+        string server = it->substr(0, p);
+        if (server.empty())
+            continue;
+
+        // If it starts with a - we have to remove an entry
+        if (server[0]=='-')
+        {
+            fServerList.erase(server.substr(1));
+            CallbackServerRemove(server.substr(1));
+            continue;
+        }
+
+        // If it starts with a + we have to add an entry
+        if (server[0]=='+')
+            server = server.substr(1);
+
+        // Check if this server is already in the list.
+        // This should never happen if Dim works reliable
+        if (fServerList.insert(server).second)
+            CallbackServerAdd(server);
+    }
+}
+
+void DimDnsServiceList::HandlerServiceListImp(const EventImp &evt)
+{
+    if (evt.GetSize()==0)
+        return;
+
+    // Get the name of the service
+    //const string svc = getInfo()->getName();
+
+    // Get the server name from the service name
+    //const string server  = svc.substr(0, svc.find_first_of('/'));
+    //const string service = svc.substr(svc.find_first_of('/')+1);
+
+    msg  = evt.GetString();
+    time = evt.GetTime();
+
+    // Initialize the entry with an empty list
+    //if (msg[0]!='+' && msg[0]!='-')
+    //    return;
+
+    typedef char_separator<char> separator;
+    const tokenizer<separator> tok(msg, separator("\n"));
+
+    for (auto it=tok.begin(); it!=tok.end(); it++)
+    {
+        string str = *it;
+
+        if (str[0]=='-')
+            continue;
+
+        if (str[0]=='+')
+            str = str.substr(1);
+
+        const size_t last_pipe = str.find_last_of('|');
+
+        // Get the type and compare it with fType
+        const string type = str.substr(last_pipe+1);
+        if (type=="RPC")
+            continue;
+
+        //const bool iscmd = type=="CMD";
+        //if (type!=fType && fType!="*")
+        //    continue;
+
+        const size_t first_pipe  = str.find_first_of('|');
+        const size_t first_slash = str.find_first_of('/');
+
+        // Get format, name and command name
+        Service service;
+        service.server  = str.substr(0, first_slash);
+        service.name    = str.substr(0, first_pipe);
+        service.service = str.substr(first_slash+1, first_pipe-first_slash-1);
+        service.format  = str.substr(first_pipe +1, last_pipe -first_pipe -1);
+        service.iscmd   = type=="CMD";
+
+        const auto v = find(fServiceList.begin(), fServiceList.end(), service.name);
+        if (v!=fServiceList.end())
+            continue;
+
+        CallbackServiceAdd(service);
+    }
+}
Index: branches/testFACT++branch/src/DimState.h
===================================================================
--- branches/testFACT++branch/src/DimState.h	(revision 18277)
+++ branches/testFACT++branch/src/DimState.h	(revision 18277)
@@ -0,0 +1,460 @@
+#ifndef FACT_DimState
+#define FACT_DimState
+
+#include <set>
+#include <string>
+#include <functional>
+
+#include "State.h"
+#include "Service.h"
+#include "EventImp.h"
+#include "WindowLog.h"
+#include "Description.h"
+#include "StateMachineImp.h"
+
+class DimState
+{
+public:
+    enum
+    {
+        kOffline      = -256,
+        kNotAvailable = -257,
+    };
+
+protected:
+    typedef std::function<int(const EventImp &)> callback;
+
+    callback fCallback;
+
+    void HandlerImp(const EventImp &evt)
+    {
+        const bool disconnected = evt.GetSize()==0;
+
+        last = cur;
+        cur  = std::make_pair(evt.GetTime(), disconnected ? kOffline : evt.GetQoS());
+
+        msg = disconnected ? "" : evt.GetString();
+    }
+
+    int Callback(const EventImp &evt)
+    {
+        return fCallback ? fCallback(evt) : StateMachineImp::kSM_KeepState;
+    }
+
+    virtual int Handler(const EventImp &evt)
+    {
+        HandlerImp(evt);
+        return Callback(evt);
+    }
+
+public:
+    DimState() { }
+    DimState(const std::string &n, const std::string s="STATE") : server(n),
+        service(n+"/"+s),
+        last(std::make_pair(Time(), kOffline)), cur(std::make_pair(Time(), kOffline))
+    {
+    }
+    virtual ~DimState()
+    {
+    }
+
+    /*const*/ std::string server;
+    /*const*/ std::string service;
+
+    std::pair<Time, int32_t> last;
+    std::pair<Time, int32_t> cur;
+    std::string msg;
+
+    virtual void Subscribe(StateMachineImp &imp)
+    {
+        imp.Subscribe(service)
+            (imp.Wrap(std::bind(&DimState::Handler, this, std::placeholders::_1)));
+    }
+
+    void SetCallback(const callback &cb)
+    {
+        fCallback = cb;
+    }
+
+    const Time    &time() const  { return cur.first; }
+    const int32_t &state() const { return cur.second; }
+
+    bool online() const { return state()>kOffline; }
+
+    virtual State description() const { return State(kNotAvailable, ""); }
+};
+
+inline std::ostream &operator<<(std::ostream& out, const DimState &s)
+{
+    const State rc = s.description();
+
+    out << s.time().GetAsStr("%H:%M:%S.%f").substr(0, 12) << " - ";
+    out << kBold << s.server;
+
+    if (s.state()==DimState::kOffline)
+        return out << ": Offline";
+
+    if (rc.index==DimState::kNotAvailable)
+        return out;
+
+    out << ": ";
+
+//    if (rc.index==-2)
+//        out << s.state();
+//    else
+        out << rc.name << "[" << rc.index << "]";
+
+    if (!rc.comment.empty())
+        out << " - " << kBlue << rc.comment;
+
+    return out;
+}
+
+
+class DimDescribedState : public DimState
+{
+    typedef std::function<void()> callback_desc;
+
+    callback_desc fCallbackStates;
+
+    virtual void CallbackStates()
+    {
+        if (fCallbackStates)
+            fCallbackStates();
+    }
+
+
+public:
+    DimDescribedState(const std::string &n) : DimState(n)
+    {
+    }
+
+    std::vector<State> states;
+
+    virtual void Subscribe(StateMachineImp &imp)
+    {
+        imp.Subscribe(server+"/STATE_LIST")
+            (imp.Wrap(std::bind(&DimDescribedState::HandleDesc, this, std::placeholders::_1)));
+
+        DimState::Subscribe(imp);
+    }
+
+    void SetCallbackStates(const callback_desc &cb)
+    {
+        fCallbackStates = cb;
+    }
+
+    int HandleDesc(const EventImp &evt)
+    {
+        if (evt.GetSize()>0)
+        {
+            states = State::SplitStates(evt.GetString());
+            states.emplace_back(kOffline, "Offline");
+
+            CallbackStates();
+        }
+
+        return StateMachineImp::kSM_KeepState;
+    }
+
+    State description() const
+    {
+        for (auto it=states.begin(); it!=states.end(); it++)
+            if (it->index==state())
+                return State(it->index, it->name, it->comment, time());
+
+        return State(kNotAvailable, "n/a");
+    }
+};
+
+class DimDescriptions : public DimDescribedState
+{
+    typedef std::function<void()> callback_desc;
+
+    callback_desc fCallbackDescriptions;
+
+    virtual void CallbackDescriptions()
+    {
+        if (fCallbackDescriptions)
+            fCallbackDescriptions();
+    }
+
+public:
+    DimDescriptions(const std::string &n) : DimDescribedState(n)
+    {
+    }
+
+    std::vector<std::vector<Description>> descriptions;
+
+    virtual void Subscribe(StateMachineImp &imp)
+    {
+        imp.Subscribe(server+"/SERVICE_DESC")
+            (imp.Wrap(std::bind(&DimDescriptions::HandleServiceDesc, this, std::placeholders::_1)));
+
+        DimDescribedState::Subscribe(imp);
+    }
+
+    void SetCallbackDescriptions(const callback_desc &cb)
+    {
+        fCallbackDescriptions = cb;
+    }
+
+
+    int HandleServiceDesc(const EventImp &evt)
+    {
+        descriptions.clear();
+        if (evt.GetSize()>0)
+        {
+            std::string buf;
+            std::stringstream stream(evt.GetString());
+            while (getline(stream, buf, '\n'))
+                descriptions.push_back(Description::SplitDescription(buf));
+        }
+
+        CallbackDescriptions();
+
+        return StateMachineImp::kSM_KeepState;
+    }
+};
+
+class DimVersion : public DimState
+{
+    int Handler(const EventImp &evt)
+    {
+        HandlerImp(evt);
+
+        cur.second = evt.GetSize()==4 ? evt.GetInt() : kOffline;
+        if (cur.second==0)
+            cur.second=kOffline;
+
+        return Callback(evt);
+    }
+
+public:
+    DimVersion() : DimState("DIS_DNS", "VERSION_NUMBER") { }
+
+    std::string version() const
+    {
+        if (!online())
+            return "Offline";
+
+        std::ostringstream out;
+        out << "V" << state()/100 << 'r' << state()%100;
+        return out.str();
+    }
+
+    State description() const
+    {
+        return State(state(), version(), "", time());
+    }
+};
+
+class DimControl : public DimState
+{
+    std::map<std::string, callback> fCallbacks;
+
+    int Handler(const EventImp &evt)
+    {
+        HandlerImp(evt);
+
+        shortmsg    = msg;
+        file        = "";
+        scriptdepth = -1;
+
+        // Find begining of descriptor
+        const size_t p0 = msg.find_first_of(' ');
+        if (p0==std::string::npos)
+            return StateMachineImp::kSM_KeepState;
+
+        // Find begining of filename
+        const size_t p1 = msg.find_first_of(':');
+        if (p1==std::string::npos)
+            return StateMachineImp::kSM_KeepState;
+
+        // Find end of filename
+        const size_t p2 = msg.find_last_of('[');
+        if (p2==std::string::npos)
+            return StateMachineImp::kSM_KeepState;
+
+        scriptdepth = atoi(msg.c_str()+p0+1);
+        file = msg.substr(p1+1, p2-p1-1);
+
+        shortmsg.insert(0, msg.substr(p0+1, p1-p0));
+        shortmsg.erase(p1+1,p2-p0-1);
+
+        const int rc = Callback(evt);
+
+        const auto func = fCallbacks.find(file);
+        if (func==fCallbacks.end())
+            return rc;
+
+        // Call callback
+        return func->second(evt);
+    }
+
+
+public:
+    DimControl() : DimState("DIM_CONTROL") { }
+
+    std::string file;
+    std::string shortmsg;
+    int scriptdepth;
+
+    void AddCallback(const std::string &script, const callback &cb)
+    {
+        fCallbacks[script] = cb;
+    }
+
+    State description() const
+    {
+        return State(state(), "Current label", "", time());
+    }
+};
+
+class DimDnsServerList
+{
+protected:
+    typedef std::function<void(const std::string &)> callback_srv;
+    typedef std::function<void(const EventImp &)>    callback_evt;
+
+    callback_srv fCallbackServerAdd;
+    callback_srv fCallbackServerRemove;
+    callback_evt fCallbackServerEvent;
+
+    std::set<std::string> fServerList;
+
+    void HandlerServerImp(const EventImp &evt);
+
+    virtual void CallbackServerAdd(const std::string &str)
+    {
+        if (fCallbackServerAdd)
+            fCallbackServerAdd(str);
+    }
+    virtual void CallbackServerRemove(const std::string &str)
+    {
+        if (fCallbackServerRemove)
+            fCallbackServerRemove(str);
+    }
+    virtual void CallbackServerEvent(const EventImp &evt)
+    {
+        if (fCallbackServerEvent)
+            fCallbackServerEvent(evt);
+    }
+    virtual int HandlerServer(const EventImp &evt)
+    {
+        HandlerServerImp(evt);
+        CallbackServerEvent(evt);
+
+        return StateMachineImp::kSM_KeepState;
+    }
+
+public:
+    DimDnsServerList() 
+    {
+    }
+    virtual ~DimDnsServerList()
+    {
+    }
+
+    Time  time;
+    std::string msg;
+
+    virtual void Subscribe(StateMachineImp &imp)
+    {
+        imp.Subscribe("DIS_DNS/SERVER_LIST")
+            (imp.Wrap(std::bind(&DimDnsServerList::HandlerServer, this, std::placeholders::_1)));
+    }
+
+    void SetCallbackServerAdd(const callback_srv &cb)
+    {
+        fCallbackServerAdd = cb;
+    }
+
+    void SetCallbackServerRemove(const callback_srv &cb)
+    {
+        fCallbackServerRemove = cb;
+    }
+
+    void SetCallbackServerEvent(const callback_evt &cb)
+    {
+        fCallbackServerEvent = cb;
+    }
+
+    //const Time &time() const { return time; }
+    //const std::string &msg() const { return msg; }
+};
+
+class DimDnsServiceList : public DimDnsServerList
+{
+    StateMachineImp *fStateMachine;
+
+    typedef std::function<void(const Service &)> callback_svc;
+
+    callback_svc fCallbackServiceAdd;
+    //callback_evt fCallbackServiceEvt;
+
+    std::vector<std::string> fServiceList;
+
+    std::set<std::string> fServers;
+
+    void CallbackServerAdd(const std::string &server)
+    {
+        DimDnsServerList::CallbackServerAdd(server);
+
+        if (fServers.find(server)!=fServers.end())
+            return;
+
+        fStateMachine->Subscribe(server+"/SERVICE_LIST")
+            (fStateMachine->Wrap(std::bind(&DimDnsServiceList::HandlerServiceList, this, std::placeholders::_1)));
+
+        fServers.insert(server);
+    }
+
+    void HandlerServiceListImp(const EventImp &evt);
+
+/*
+    virtual void CallbackServiceEvt(const EventImp &evt)
+    {
+        if (fCallbackServiceEvt)
+            fCallbackServiceEvt(evt);
+    }
+*/
+    virtual int HandlerServiceList(const EventImp &evt)
+    {
+        HandlerServiceListImp(evt);
+        //CallbackServiceEvent(evt);
+
+        return StateMachineImp::kSM_KeepState;
+    }
+
+
+    virtual void CallbackServiceAdd(const Service &service)
+    {
+        if (fCallbackServiceAdd)
+            fCallbackServiceAdd(service);
+    }
+
+public:
+    DimDnsServiceList() : fStateMachine(0)
+    {
+    }
+
+    void Subscribe(StateMachineImp &imp)
+    {
+        fStateMachine = &imp;
+        DimDnsServerList::Subscribe(imp);
+    }
+
+    void SetCallbackServiceAdd(const callback_svc &cb)
+    {
+        fCallbackServiceAdd = cb;
+    }
+/*
+    void SetCallbackServiceEvt(const callback_svc &cb)
+    {
+        fCallbackServiceEvt = cb;
+    }
+*/
+};
+
+#endif
Index: branches/testFACT++branch/src/DimWriteStatistics.cc
===================================================================
--- branches/testFACT++branch/src/DimWriteStatistics.cc	(revision 18277)
+++ branches/testFACT++branch/src/DimWriteStatistics.cc	(revision 18277)
@@ -0,0 +1,261 @@
+//*************************************************************************************
+/** @class DimWriteStatistics
+
+ @brief provides a statistics service telling the free space on disk and the total size written so far
+
+*/
+//*************************************************************************************
+#include "DimWriteStatistics.h"
+
+#include <sys/statvfs.h> //for getting disk free space
+#include <sys/stat.h>    //for getting files sizes
+
+#include <boost/filesystem.hpp>
+
+#include "Time.h"
+
+using namespace std;
+using namespace boost::posix_time;
+
+// --------------------------------------------------------------------------
+//
+//! Constructor with correct service name. The state machine using this object should give it
+//! its own name as a parameter
+//! @param serverName the name of the server which created this object
+//
+DimWriteStatistics::DimWriteStatistics(const string& server, MessageImp &log) :
+    fLog(log),
+    fDimService(server + "/STATS",  "X:1;X:1;X:1;X:1",
+                "Statistics about size written"
+                "|FreeSpace[bytes]:Free space on disk"
+                "|Written[bytes]:Bytes written in total"
+                "|Rate[bytes]:Bytes written since last update"
+                "|Elapsed[ms]:Milliseconds elapsed since last update"),
+    fCurrentFolder("."),
+    fUpdateInterval(1000),
+    fBaseSize(0),
+    fDebug(false)
+{
+    fThread = boost::thread(boost::bind(&DimWriteStatistics::UpdateService, this));
+}
+
+// --------------------------------------------------------------------------
+//
+//! Destructor. Stop thread by setting fUpdateInterval to 0 and join the
+//! thread.
+//
+DimWriteStatistics::~DimWriteStatistics()
+{
+    fUpdateInterval = 0;
+
+    // This blocks for fPeriod duration, but maybe canceling the thread
+    // could be more dangerous leaving Dim in an undefined state.
+    fThread.interrupt();
+}
+
+int DimWriteStatistics::Write(const Time &t, const string &txt, int qos)
+{
+    return fLog.Write(t, txt, qos);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Retrieves the free space of the current base path
+//! @return the available free space on disk, in bytes
+//
+int64_t DimWriteStatistics::GetFreeSpace()
+{
+    struct statvfs vfs;
+    if (statvfs(fCurrentFolder.c_str(), &vfs))
+        return -1;
+
+    return vfs.f_bsize*vfs.f_bavail;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Retrieves the size on disk of a given file, in bytes
+//! @param file the filename for which the size should be retrieved
+//! @return the size of the file, in bytes
+//
+int64_t DimWriteStatistics::GetFileSizeOnDisk(const string& file, MessageImp &log)
+{
+     errno = 0;
+     struct stat st;
+     if (!stat(file.c_str(), &st))
+         return st.st_size;
+
+     //ignoring error #2: no such file or directory is not an error for new files
+     if (errno == 0 || errno == 2)
+         return 0;
+
+     ostringstream str;
+     str << "stat() failed for '" << file << "': " << strerror(errno) << " [errno=" << errno << "]";
+     log.Error(str);
+
+     return -1;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Check if a given path exists
+//! @param path the path to be checked
+//! @return whether or not the given path exists
+//
+bool DimWriteStatistics::DoesPathExist(string path, MessageImp &log)
+{
+    namespace fs = boost::filesystem;
+
+    if (path.empty())
+        path = ".";
+
+    const fs::path fullPath = fs::system_complete(fs::path(path));
+
+    if (!fs::exists(fullPath))
+       return false;
+
+    if (!fs::is_directory(fullPath))
+    {
+        log.Error("Path given for checking '" + path + "' designate a file name. Please provide a path name only");
+        return false;
+    }
+
+    if (access(path.c_str(), R_OK|W_OK|X_OK) != 0)
+    {
+        log.Error("Missing read, write or execute permissions on directory '" + path + "'");
+        return false;
+    }
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Sets the current folder
+//! @param folder the path to the folder
+//
+bool DimWriteStatistics::SetCurrentFolder(const string& folder)
+{
+    struct statvfs vfs;
+    if (statvfs(folder.empty()?".":folder.c_str(), &vfs))
+    {
+        fLog.Error("statvfs() failed for '"+folder+"'... ignoring it.");
+        return false;
+    }
+
+    fCurrentFolder = folder.empty()?".":folder;
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Updates the service. This is the function executed by the thread
+//
+void DimWriteStatistics::UpdateService()
+{
+    Time previousTime;
+    uint64_t previousSize = 0;
+
+    while (1)
+    {
+        if (fUpdateInterval==0)
+        {
+            boost::this_thread::interruption_point();
+            boost::this_thread::yield();
+            continue;
+        }
+
+        Stats data;
+
+        for (set<string>::const_iterator it = fOpenedFiles.begin(); it != fOpenedFiles.end(); it++)
+            data.sizeWritten += GetFileSizeOnDisk(*it);
+        data.sizeWritten -= fBaseSize;
+
+        const Time cTime = Time();
+
+        data.freeSpace   = GetFreeSpace();
+        data.rateWritten = data.sizeWritten-previousSize;
+        data.timeElapsed = (cTime - previousTime).total_milliseconds();
+
+        previousSize = data.sizeWritten;
+        previousTime = cTime;
+
+        fDimService.setData(data);
+        fDimService.Update(cTime);
+
+        fStats = data;
+
+        if (fDebug)
+        {
+            ostringstream str;
+            str << "Written: " << fStats.sizeWritten/1000 << " kB; writing rate: ";
+            str << fStats.rateWritten/fStats.timeElapsed << " kB/s; free space: ";
+            str << fStats.freeSpace/1000000 << " MB";
+            fLog.Debug(str);
+        }
+
+        boost::this_thread::sleep(milliseconds(fUpdateInterval));
+    }
+}
+// --------------------------------------------------------------------------
+//
+//! Let the object know that a new file has been opened
+//! @param fileName the full name of the file newly opened
+//! @return whether this file could be stated or not
+//
+bool DimWriteStatistics::FileOpened(const string& fileName)
+{
+    if (fOpenedFiles.find(fileName) != fOpenedFiles.end())
+        return false;
+
+    //Add a newly opened file, and remember its original size
+    const int64_t newSize = GetFileSizeOnDisk(fileName);
+    if (newSize == -1)
+        return false;
+
+    fBaseSize += newSize;
+    fOpenedFiles.insert(fileName);
+
+    return true;
+}
+// --------------------------------------------------------------------------
+//
+//! Set the debug mode on and off
+//! @param debug the new mode (true or false)
+//
+void DimWriteStatistics::SetDebugMode(bool debug)
+{
+    fDebug = debug;
+
+    if (fDebug)
+        fLog.Debug("Debug mode is now on.");
+}
+// --------------------------------------------------------------------------
+//
+//! Set the update of the service interval
+//! @param duration the duration between two services update, in second
+//
+void DimWriteStatistics::SetUpdateInterval(const int16_t duration)
+{
+    if (!finite(duration))
+    {
+        fLog.Error("Provided update interval is not a valid float... discarding.");
+        return;
+    }
+    if (uint16_t(duration) == fUpdateInterval)
+    {
+        fLog.Warn("Statistics update interval not modified. Supplied value already in use.");
+        return;
+    }
+
+    if (duration <= 0)
+        fLog.Message("Statistics are now OFF.");
+    else
+    {
+        ostringstream str;
+        str << "Statistics update interval is now " << duration << " seconds";
+        fLog.Message(str);
+    }
+
+    fUpdateInterval = duration<0 ? 0 : duration;
+}
Index: branches/testFACT++branch/src/DimWriteStatistics.h
===================================================================
--- branches/testFACT++branch/src/DimWriteStatistics.h	(revision 18277)
+++ branches/testFACT++branch/src/DimWriteStatistics.h	(revision 18277)
@@ -0,0 +1,86 @@
+#ifndef FACT_DimWriteStatistics
+#define FACT_DimWriteStatistics
+
+#include <set>
+#include <string>
+
+// Keep these two together! Otheriwse it won't compile
+#include <boost/bind.hpp>
+#if BOOST_VERSION < 104400
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))
+#undef BOOST_HAS_RVALUE_REFS
+#endif
+#endif
+#include <boost/thread.hpp>
+
+#include "MessageImp.h"
+#include "DimDescriptionService.h"
+
+class DimWriteStatistics
+{
+public:
+    struct Stats
+    {
+        uint64_t freeSpace;
+        uint64_t sizeWritten;
+        uint64_t rateWritten;
+        uint64_t timeElapsed;
+
+        Stats() : freeSpace(0), sizeWritten(0), rateWritten(0), timeElapsed(0) { }
+    };
+
+private:
+    MessageImp &fLog;
+
+    DimDescribedService   fDimService;
+
+    std::string           fCurrentFolder;   /// Current folder being watched for free space
+    uint16_t              fUpdateInterval;  /// Duration, in millisecond between two service updates. 0 means no more updates
+    size_t                fBaseSize;        /// Total base size of all opened files
+    std::set<std::string> fOpenedFiles;     /// List of all opened files. set is used to easily check for entries
+
+    /// Bool indicating if debug information should be printed
+    bool fDebug;
+
+    /// The data structure holding the stat data
+    Stats fStats;
+
+    /// The boost thread used to update the service
+    boost::thread fThread;                  
+
+    ///Main loop
+    void UpdateService();
+
+    ///Returns the free space on the disk of the folder being watched (fCurrentFolder)
+    int64_t GetFreeSpace();
+
+    ///Returns the size on disk of a given file
+    int64_t GetFileSizeOnDisk(const std::string& file) { return GetFileSizeOnDisk(file, fLog); }
+
+    int Write(const Time &t, const std::string &txt, int qos);
+
+public:
+    ///Constructor
+    DimWriteStatistics(const std::string& serverName, MessageImp &log);
+
+    ///Default destructor
+    ~DimWriteStatistics();
+
+    ///Configures that current folder where files are written to
+    bool SetCurrentFolder(const std::string& folder);
+
+    bool FileOpened(const std::string& fileName);
+
+    void SetDebugMode(bool);
+    void SetUpdateInterval(const int16_t millisec);
+
+    const Stats &GetTotalSizeWritten() const { return fStats; }
+    uint16_t GetUpdateInterval() const { return fUpdateInterval; }
+
+    ///Returns the size on disk of a given file
+    static int64_t GetFileSizeOnDisk(const std::string& file, MessageImp &imp);
+
+    static bool DoesPathExist(std::string path, MessageImp &log);
+};
+
+#endif
Index: branches/testFACT++branch/src/Event.cc
===================================================================
--- branches/testFACT++branch/src/Event.cc	(revision 18277)
+++ branches/testFACT++branch/src/Event.cc	(revision 18277)
@@ -0,0 +1,90 @@
+// **************************************************************************
+/** @class Event
+
+@brief Concerete implementation of an EventImp stroring name, format, data and time
+
+This is the implementation of an event which can be posted to a state
+machine, hosting all the data itself. In addition to the base class
+it has storage for name, format, the data and a time stamp.
+
+*/
+// **************************************************************************
+#include "Event.h"
+
+#include <iostream>
+
+#include "Time.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! Store the name in fName and the format in fFormat. Initializes fTime
+//! to an invalid time.
+//!
+//! @param name
+//!    Name given to the event
+//!
+//! @param fmt
+//!    If the event has data attached (like arguments of commands)
+//!    the format can be given here. How the format string is defined
+//!    is defined within the dim libarary. It is used in console
+//!    and shell access to properly format the data sent with the event
+//!
+//! <B>From the dim manual:</B>
+//!    The format parameter specifies the contents of the structure in
+//!    the form T:N[;T:N]*[;T] where T is the item type: (I)nteger,
+//!    (C)haracter, (L)ong, (S)hort, (F)loat, (D)ouble, and N is the
+//!    number of such items. The type alone at the end means all
+//!    following items are of the same type. Example: "I:3;F:2;C" means
+//!    3 Integers, 2 Floats and Characters until the end. The format
+//!    parameter is used for communicating between different platforms.
+//!
+//
+Event::Event(const string &name, const string &fmt) :
+    fName(name), fFormat(fmt), fTime(Time::none), fQoS(0), fEmpty(true)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Copies the all contents from an EventImp. Note, that also the data
+//! area is copied. If the name contains a slash ('/') everything before
+//! the slash is removed.
+//!
+//! @param evt
+//!    Reference to an object of type EventImp.
+//
+Event::Event(const EventImp &evt) : EventImp(evt),
+fName(evt.GetName()), fFormat(evt.GetFormat()),
+fData(evt.GetText(), evt.GetText()+evt.GetSize()), fTime(evt.GetTime()),
+fQoS(evt.GetQoS()), fEmpty(evt.IsEmpty())
+{
+    const size_t pos = fName.find_first_of('/');
+    if (pos!=string::npos)
+        fName = fName.substr(pos+1);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Copies the all contents from an EventImp. fData is initialized from the
+//! given memory. If the name contains a slash ('/') everything before
+//! the slash is removed.
+//!
+//! @param evt
+//!    Reference to an object of type EventImp.
+//!
+//! @param ptr
+//!    Pointer to the memory region to be copied.
+//!
+//! @param siz
+//!    Size of the memory region to be copied.
+//
+Event::Event(const EventImp &evt, const char *ptr, size_t siz) : EventImp(evt),
+fName(evt.GetName()), fFormat(evt.GetFormat()),
+fData(ptr, ptr+siz), fTime(evt.GetTime()), fQoS(evt.GetQoS()), fEmpty(ptr==0)
+{
+    const size_t pos = fName.find_first_of('/');
+    if (pos!=string::npos)
+        fName = fName.substr(pos+1);
+}
Index: branches/testFACT++branch/src/Event.h
===================================================================
--- branches/testFACT++branch/src/Event.h	(revision 18277)
+++ branches/testFACT++branch/src/Event.h	(revision 18277)
@@ -0,0 +1,61 @@
+#ifndef FACT_Event
+#define FACT_Event
+
+#include "EventImp.h"
+
+class Event : public EventImp
+{
+private:
+    std::string fName;        /// A name associated with the event
+    std::string fFormat;      /// A string describing the format of the data
+    std::string fDescription; /// A human readable description of the event
+
+    std::vector<char> fData;  /// Data associated with this event
+
+    Time  fTime;              /// Time stamp
+    int   fQoS;               /// Quality of service
+    bool  fEmpty;             /// Empty is true if received event was a NULL pointer
+
+public:
+    Event() : fQoS(0), fEmpty(true) { }
+    /// Constructs an event as a combination of an EventImp and a DimCommand
+    Event(const std::string &name, const std::string &fmt="");
+    /// Copy constructor
+    Event(const EventImp &imp);
+    Event(const EventImp &imp, const char *ptr, size_t siz);
+
+    void SetDescription(const std::string &str) { fDescription=str; }
+    std::string GetDescription() const { return fDescription; }
+
+    /// Return the stored name of the event
+    std::string GetName() const { return fName; }
+    /// Return the stored format of the data
+    std::string GetFormat() const { return fFormat; }
+
+    /// Return a pointer to the data region
+    const void *GetData() const { return &*fData.begin(); }
+    /// Return the size of the data
+    size_t      GetSize() const { return fData.size(); }
+
+    /// Return reference to a time stamp
+    Time GetTime() const { return fTime; }
+    /// Return Quality of Service
+    int  GetQoS() const  { return fQoS; }
+    /// Return if event is not just zero size but empty
+    bool IsEmpty() const { return fEmpty; }
+
+    void SetTime() { fTime = Time(); }
+    void SetData(const std::vector<char> &data) { fData = data; }
+    void SetData(const void *ptr, size_t siz) {
+        const char *c = reinterpret_cast<const char*>(ptr);
+        fData = std::vector<char>(c, c+siz); }
+
+    void SetInt(int i) { SetData(&i, sizeof(i)); }
+    void SetFloat(float f) { SetData(&f, sizeof(f)); }
+    void SetDouble(float d) { SetData(&d, sizeof(d)); }
+    void SetShort(short s) { SetData(&s, sizeof(s)); }
+    void SetText(const char *txt) { SetData(txt, strlen(txt)+1); }
+    void SetString(const std::string &str) { SetData(str.c_str(), str.length()+1); }
+};
+
+#endif
Index: branches/testFACT++branch/src/EventBuilder.cc
===================================================================
--- branches/testFACT++branch/src/EventBuilder.cc	(revision 18277)
+++ branches/testFACT++branch/src/EventBuilder.cc	(revision 18277)
@@ -0,0 +1,1573 @@
+#include <poll.h>
+#include <sys/time.h>
+#include <sys/epoll.h>
+#include <netinet/tcp.h>
+
+#include <cstring>
+#include <cstdarg>
+#include <list>
+#include <queue>
+
+#include <boost/algorithm/string/join.hpp>
+
+#include "../externals/Queue.h"
+
+#include "MessageImp.h"
+#include "EventBuilder.h"
+#include "HeadersFAD.h"
+
+using namespace std;
+
+#define MIN_LEN  32    // min #bytes needed to interpret FADheader
+#define MAX_LEN  81920 // one max evt = 1024*2*36 + 8*36 + 72 + 4 = 74092  (data+boardheader+eventheader+endflag)
+
+//#define COMPLETE_EVENTS
+//#define USE_POLL
+//#define USE_EPOLL
+//#define USE_SELECT
+//#define COMPLETE_EPOLL
+//#define PRIORITY_QUEUE
+
+// Reading only 1024: 13:  77Hz, 87%
+// Reading only 1024: 12:  78Hz, 46%
+// Reading only  300:  4: 250Hz, 92%
+// Reading only  300:  3: 258Hz, 40%
+
+// Reading only four threads 1024: 13:  77Hz, 60%
+// Reading only four threads 1024: 12:  78Hz, 46%
+// Reading only four threads  300:  4: 250Hz, 92%
+// Reading only four threads  300:  3: 258Hz, 40%
+
+// Default  300:  4: 249Hz, 92%
+// Default  300:  3: 261Hz, 40%
+// Default 1024: 13:  76Hz, 93%
+// Default 1024: 12:  79Hz, 46%
+
+// Poll [selected] 1024: 13:  63Hz, 45%
+// Poll [selected] 1024: 14:  63Hz, 63%
+// Poll [selected] 1024: 15:  64Hz, 80%
+// Poll [selected]  300:  4: 230Hz, 47%
+// Poll [selected]  300:  3: 200Hz, 94%
+
+// Poll [all]      1024: 13:  65Hz, 47%
+// Poll [all]      1024: 14:  64Hz, 59%
+// Poll [all]      1024: 15:  62Hz, 67%
+// Poll [all]       300:  4: 230Hz, 47%
+// Poll [all]       300:  3: 230Hz, 35%
+
+// ==========================================================================
+
+bool runOpen(const EVT_CTRL2 &evt);
+bool runWrite(const EVT_CTRL2 &evt);
+void runClose(const EVT_CTRL2 &run);
+void applyCalib(const EVT_CTRL2 &evt, const size_t &size);
+void factOut(int severity, const char *message);
+void factReportIncomplete (uint64_t rep);
+void gotNewRun(RUN_CTRL2 &run);
+void runFinished();
+void factStat(const GUI_STAT &gj);
+bool eventCheck(const EVT_CTRL2 &evt);
+void debugHead(void *buf);
+
+// ==========================================================================
+
+int g_reset;
+
+size_t g_maxMem;                //maximum memory allowed for buffer
+
+uint16_t g_evtTimeout;           // timeout (sec) for one event
+
+FACT_SOCK g_port[NBOARDS];      // .addr=string of IP-addr in dotted-decimal "ddd.ddd.ddd.ddd"
+
+uint gi_NumConnect[NBOARDS];    //4 crates * 10 boards
+
+GUI_STAT gj;
+
+// ==========================================================================
+
+namespace Memory
+{
+    uint64_t inuse     = 0;
+    uint64_t allocated = 0;
+
+    uint64_t max_inuse = 0;
+
+    std::mutex mtx;
+
+    std::forward_list<void*> memory;
+
+    void *malloc()
+    {
+        // No free slot available, next alloc would exceed max memory
+        if (memory.empty() && allocated+MAX_TOT_MEM>g_maxMem)
+            return NULL;
+
+        // We will return this amount of memory
+        // This is not 100% thread safe, but it is not a super accurate measure anyway
+        inuse += MAX_TOT_MEM;
+        if (inuse>max_inuse)
+            max_inuse = inuse;
+
+        if (memory.empty())
+        {
+            // No free slot available, allocate a new one
+            allocated += MAX_TOT_MEM;
+            return  new char[MAX_TOT_MEM];
+        }
+
+        // Get the next free slot from the stack and return it
+        const std::lock_guard<std::mutex> lock(mtx);
+
+        void *mem = memory.front();
+        memory.pop_front();
+        return mem;
+    };
+
+    void free(void *mem)
+    {
+        if (!mem)
+            return;
+
+        // Decrease the amont of memory in use accordingly
+        inuse -= MAX_TOT_MEM;
+
+        // If the maximum memory has changed, we might be over the limit.
+        // In this case: free a slot
+        if (allocated>g_maxMem)
+        {
+            delete [] (char*)mem;
+            allocated -= MAX_TOT_MEM;
+            return;
+        }
+
+        const std::lock_guard<std::mutex> lock(mtx);
+        memory.push_front(mem);
+    }
+
+};
+
+// ==========================================================================
+
+void factPrintf(int severity, const char *fmt, ...)
+{
+    char str[1000];
+
+    va_list ap;
+    va_start(ap, fmt);
+    vsnprintf(str, 1000, fmt, ap);
+    va_end(ap);
+
+    factOut(severity, str);
+}
+
+// ==========================================================================
+
+struct READ_STRUCT
+{
+    enum buftyp_t
+    {
+        kStream,
+        kHeader,
+        kData,
+#ifdef COMPLETE_EVENTS
+        kWait
+#endif
+    };
+
+    // ---------- connection ----------
+
+    static uint activeSockets;
+
+    int  sockId;       // socket id (board number)
+    int  socket;       // socket handle
+    bool connected;    // is this socket connected?
+
+    struct sockaddr_in SockAddr;  // Socket address copied from wrapper during socket creation
+
+    // ------------ epoll -------------
+
+    static int  fd_epoll;
+    static epoll_event events[NBOARDS];
+
+    static void init();
+    static void close();
+    static int  wait();
+    static READ_STRUCT *get(int i) { return reinterpret_cast<READ_STRUCT*>(events[i].data.ptr); }
+
+    // ------------ buffer ------------
+
+    buftyp_t  bufTyp;  // what are we reading at the moment: 0=header 1=data -1=skip ...
+
+    uint32_t  bufLen;  // number of bytes left to read
+    uint8_t  *bufPos;  // next byte to read to the buffer next
+
+    union
+    {
+        uint8_t  B[MAX_LEN];
+        uint16_t S[MAX_LEN / 2];
+        uint32_t I[MAX_LEN / 4];
+        uint64_t L[MAX_LEN / 8];
+        PEVNT_HEADER H;
+    };
+
+    timeval  time;
+    uint64_t totBytes;  // total received bytes
+    uint64_t relBytes;  // total released bytes
+    uint32_t skip;      // number of bytes skipped before start of event
+
+    uint32_t len() const { return uint32_t(H.package_length)*2; }
+
+    void swapHeader();
+    void swapData();
+
+    // --------------------------------
+
+    READ_STRUCT() : socket(-1), connected(false), totBytes(0), relBytes(0)
+    {
+        if (fd_epoll<0)
+            init();
+    }
+    ~READ_STRUCT()
+    {
+        destroy();
+    }
+
+    void destroy();
+    bool create(sockaddr_in addr);
+    bool check(int, sockaddr_in addr);
+    bool read();
+
+};
+
+#ifdef PRIORITY_QUEUE
+struct READ_STRUCTcomp
+{
+    bool operator()(const READ_STRUCT *r1, const READ_STRUCT *r2)
+    {
+        const int64_t rel1 = r1->totBytes - r1->relBytes;
+        const int64_t rel2 = r2->totBytes - r2->relBytes;
+        return rel1 > rel2;
+    }
+};
+#endif
+
+int READ_STRUCT::wait()
+{
+    // wait for something to do...
+    const int rc = epoll_wait(fd_epoll, events, NBOARDS, 100); // max, timeout[ms]
+    if (rc>=0)
+        return rc;
+
+    if (errno==EINTR) // timout or signal interruption
+        return 0;
+
+    factPrintf(MessageImp::kError, "epoll_wait failed: %m (rc=%d)", errno);
+    return -1;
+}
+
+uint READ_STRUCT::activeSockets = 0;
+int READ_STRUCT::fd_epoll = -1;
+epoll_event READ_STRUCT::events[NBOARDS];
+
+void READ_STRUCT::init()
+{
+    if (fd_epoll>=0)
+        return;
+
+#ifdef USE_EPOLL
+    fd_epoll = epoll_create(NBOARDS);
+    if (fd_epoll<0)
+    {
+        factPrintf(MessageImp::kError, "Waiting for data failed: %d (epoll_create,rc=%d)", errno);
+        return;
+    }
+#endif
+}
+
+void READ_STRUCT::close()
+{
+#ifdef USE_EPOLL
+    if (fd_epoll>=0 && ::close(fd_epoll)>0)
+        factPrintf(MessageImp::kFatal, "Closing epoll failed: %m (close,rc=%d)", errno);
+#endif
+
+    fd_epoll = -1;
+}
+
+bool READ_STRUCT::create(sockaddr_in sockAddr)
+{
+    if (socket>=0)
+        return false;
+
+    const int port = ntohs(sockAddr.sin_port) + 1;
+
+    SockAddr.sin_family = sockAddr.sin_family;
+    SockAddr.sin_addr   = sockAddr.sin_addr;
+    SockAddr.sin_port   = htons(port);
+
+    if ((socket = ::socket(PF_INET, SOCK_STREAM | SOCK_NONBLOCK, 0)) <= 0)
+    {
+        factPrintf(MessageImp::kFatal, "Generating socket %d failed: %m (socket,rc=%d)", sockId, errno);
+        socket = -1;
+        return false;
+    }
+
+    int optval = 1;
+    if (setsockopt(socket, IPPROTO_TCP, TCP_NODELAY, &optval, sizeof(int)) < 0)
+        factPrintf(MessageImp::kInfo, "Setting TCP_NODELAY for socket %d failed: %m (setsockopt,rc=%d)", sockId, errno);
+
+    optval = 1;
+    if (setsockopt (socket, SOL_SOCKET, SO_KEEPALIVE, &optval, sizeof(int)) < 0)
+        factPrintf(MessageImp::kInfo, "Setting SO_KEEPALIVE for socket %d failed: %m (setsockopt,rc=%d)", sockId, errno);
+
+    optval = 10;                 //start after 10 seconds
+    if (setsockopt (socket, SOL_TCP, TCP_KEEPIDLE, &optval, sizeof(int)) < 0)
+        factPrintf(MessageImp::kInfo, "Setting TCP_KEEPIDLE for socket %d failed: %m (setsockopt,rc=%d)", sockId, errno);
+
+    optval = 10;                 //do every 10 seconds
+    if (setsockopt (socket, SOL_TCP, TCP_KEEPINTVL, &optval, sizeof(int)) < 0)
+        factPrintf(MessageImp::kInfo, "Setting TCP_KEEPINTVL for socket %d failed: %m (setsockopt,rc=%d)", sockId, errno);
+
+    optval = 2;                  //close after 2 unsuccessful tries
+    if (setsockopt (socket, SOL_TCP, TCP_KEEPCNT, &optval, sizeof(int)) < 0)
+        factPrintf(MessageImp::kInfo, "Setting TCP_KEEPCNT for socket %d failed: %m (setsockopt,rc=%d)", sockId, errno);
+
+    factPrintf(MessageImp::kInfo, "Generated socket %d (%d)", sockId, socket);
+
+    //connected = false;
+    activeSockets++;
+
+    return true;
+}
+
+void READ_STRUCT::destroy()
+{
+    if (socket<0)
+        return;
+
+#ifdef USE_EPOLL
+    // strictly speaking this should not be necessary
+    if (fd_epoll>=0 && connected && epoll_ctl(fd_epoll, EPOLL_CTL_DEL, socket, NULL)<0)
+        factPrintf(MessageImp::kError, "epoll_ctrl failed: %m (EPOLL_CTL_DEL,rc=%d)", errno);
+#endif
+
+    if (::close(socket) > 0)
+        factPrintf(MessageImp::kFatal, "Closing socket %d failed: %m (close,rc=%d)", sockId, errno);
+    else
+        factPrintf(MessageImp::kInfo, "Closed socket %d (%d)", sockId, socket);
+
+    // Set the socket to "not connected"
+    socket = -1;
+    connected = false;
+    activeSockets--;
+    bufLen = 0;
+}
+
+bool READ_STRUCT::check(int sockDef, sockaddr_in addr)
+{
+    // Continue in the most most likely case (performance)
+    //if (socket>=0 && sockDef!=0 && connected)
+    //    return;
+    const int old = socket;
+
+    // socket open, but should not be open
+    if (socket>=0 && sockDef==0)
+        destroy();
+
+    // Socket closed, but should be open
+    if (socket<0 && sockDef!=0)
+        create(addr); //generate address and socket
+
+    const bool retval = old!=socket;
+
+    // Socket closed
+    if (socket<0)
+        return retval;
+
+    // Socket open and connected: Nothing to do
+    if (connected)
+        return retval;
+
+    //try to connect if not yet done
+    const int rc = connect(socket, (struct sockaddr *) &SockAddr, sizeof(SockAddr));
+    if (rc == -1)
+        return retval;
+
+    connected = true;
+
+    if (sockDef<0)
+    {
+        bufTyp = READ_STRUCT::kStream; // full data to be skipped
+        bufLen = MAX_LEN;              // huge for skipping
+    }
+    else
+    {
+        bufTyp = READ_STRUCT::kHeader;  // expect a header
+        bufLen = sizeof(PEVNT_HEADER);  // max size to read at begining
+    }
+
+    bufPos   = B;  // no byte read so far
+    skip     = 0;  // start empty
+    totBytes = 0;
+    relBytes = 0;
+
+    factPrintf(MessageImp::kInfo, "Connected socket %d (%d)", sockId, socket);
+
+#ifdef USE_EPOLL
+    epoll_event ev;
+    ev.events = EPOLLIN;
+    ev.data.ptr = this;  // user data (union: ev.ptr)
+    if (epoll_ctl(fd_epoll, EPOLL_CTL_ADD, socket, &ev)<0)
+        factPrintf(MessageImp::kError, "epoll_ctl failed: %m (EPOLL_CTL_ADD,rc=%d)", errno);
+#endif
+
+    return retval;
+}
+
+bool READ_STRUCT::read()
+{
+    if (!connected)
+        return false;
+
+    if (bufLen==0)
+        return true;
+
+    const int32_t jrd = recv(socket, bufPos, bufLen, MSG_DONTWAIT);
+    // recv failed
+    if (jrd<0)
+    {
+        // There was just nothing waiting
+        if (errno==EWOULDBLOCK || errno==EAGAIN)
+            return false;
+
+        factPrintf(MessageImp::kError, "Reading from socket %d failed: %m (recv,rc=%d)", sockId, errno);
+        return false;
+    }
+
+    // connection was closed ...
+    if (jrd==0)
+    {
+        factPrintf(MessageImp::kInfo, "Socket %d closed by FAD", sockId);
+
+        destroy();//DestroySocket(rd[i]); //generate address and socket
+        return false;
+    }
+
+    totBytes += jrd;
+
+    // are we skipping this board ...
+    if (bufTyp==kStream)
+        return false;
+
+    if (bufPos==B)
+        gettimeofday(&time, NULL);
+
+    bufPos += jrd;  //==> prepare for continuation
+    bufLen -= jrd;
+
+    // not yet all read
+    return bufLen==0;
+}
+
+void READ_STRUCT::swapHeader()
+{
+    S[1]  = ntohs(S[1]);    // package_length (bytes not swapped!)
+    S[2]  = ntohs(S[2]);    // version_no
+    S[3]  = ntohs(S[3]);    // PLLLCK
+    S[4]  = ntohs(S[4]);    // trigger_crc
+    S[5]  = ntohs(S[5]);    // trigger_type
+
+    I[3]  = ntohl(I[3]);    // trigger_id
+    I[4]  = ntohl(I[4]);    // fad_evt_counter
+    I[5]  = ntohl(I[5]);    // REFCLK_frequency
+
+    S[12] = ntohs(S[12]);   // board id
+    S[13] = ntohs(S[13]);   // adc_clock_phase_shift
+    S[14] = ntohs(S[14]);   // number_of_triggers_to_generate
+    S[15] = ntohs(S[15]);   // trigger_generator_prescaler
+
+    I[10] = ntohl(I[10]);   // runnumber;
+    I[11] = ntohl(I[11]);   // time;
+
+    // Use back inserter??
+    for (int s=24; s<24+NTemp+NDAC; s++)
+        S[s] = ntohs(S[s]); // drs_temperature / dac
+}
+
+void READ_STRUCT::swapData()
+{
+    // swapEventHeaderBytes: End of the header. to channels now
+
+    int i = 36;
+    for (int ePatchesCount = 0; ePatchesCount<4*9; ePatchesCount++)
+    {
+        S[i+0] = ntohs(S[i+0]);//id
+        S[i+1] = ntohs(S[i+1]);//start_cell
+        S[i+2] = ntohs(S[i+2]);//roi
+        S[i+3] = ntohs(S[i+3]);//filling
+
+        i += 4+S[i+2];//skip the pixel data
+    }
+}
+
+// ==========================================================================
+
+bool checkRoiConsistency(const READ_STRUCT &rd, uint16_t roi[])
+{
+    int xjr = -1;
+    int xkr = -1;
+
+    //points to the very first roi
+    int roiPtr = sizeof(PEVNT_HEADER)/2 + 2;
+
+    roi[0] = ntohs(rd.S[roiPtr]);
+
+    for (int jr = 0; jr < 9; jr++)
+    {
+        roi[jr] = ntohs(rd.S[roiPtr]);
+
+        if (roi[jr]>1024)
+        {
+            factPrintf(MessageImp::kError, "Illegal roi in channel %d (allowed: roi<=1024)", jr, roi[jr]);
+            return false;
+        }
+
+        // Check that the roi of pixels jr are compatible with the one of pixel 0
+        if (jr!=8 && roi[jr]!=roi[0])
+        {
+            xjr = jr;
+            break;
+        }
+
+        // Check that the roi of all other DRS chips on boards are compatible
+        for (int kr = 1; kr < 4; kr++)
+        {
+            const int kroi = ntohs(rd.S[roiPtr]);
+            if (kroi != roi[jr])
+            {
+                xjr = jr;
+                xkr = kr;
+                break;
+            }
+            roiPtr += kroi+4;
+        }
+    }
+
+    if (xjr>=0)
+    {
+        if (xkr<0)
+            factPrintf(MessageImp::kFatal, "Inconsistent Roi accross chips [DRS=%d], expected %d, got %d", xjr, roi[0], roi[xjr]);
+        else
+            factPrintf(MessageImp::kFatal, "Inconsistent Roi accross channels [DRS=%d Ch=%d], expected %d, got %d", xjr, xkr, roi[xjr], ntohs(rd.S[roiPtr]));
+
+        return false;
+    }
+
+    if (roi[8] < roi[0])
+    {
+        factPrintf(MessageImp::kError, "Mismatch of roi (%d) in channel 8. Should be larger or equal than the roi (%d) in channel 0.", roi[8], roi[0]);
+        return false;
+    }
+
+    return true;
+}
+
+list<shared_ptr<EVT_CTRL2>> evtCtrl;
+
+shared_ptr<EVT_CTRL2> mBufEvt(const READ_STRUCT &rd, shared_ptr<RUN_CTRL2> &actrun)
+{
+    /*
+     checkroi consistence
+     find existing entry
+     if no entry, try to allocate memory
+     if entry and memory, init event structure
+     */
+
+    uint16_t nRoi[9];
+    if (!checkRoiConsistency(rd, nRoi))
+        return shared_ptr<EVT_CTRL2>();
+
+    for (auto it=evtCtrl.rbegin(); it!=evtCtrl.rend(); it++)
+    {
+        // A reference is enough because the evtCtrl holds the shared_ptr anyway
+        const shared_ptr<EVT_CTRL2> &evt = *it;
+
+        // If the run is different, go on searching.
+        // We cannot stop searching if a lower run-id is found as in
+        // the case of the events, because theoretically, there
+        // can be the same run on two different days.
+        if (rd.H.runnumber != evt->runNum)
+            continue;
+
+        // If the ID of the new event if higher than the last one stored
+        // in that run, we have to assign a new slot (leave the loop)
+        if (rd.H.fad_evt_counter > evt->evNum/* && runID == evtCtrl[k].runNum*/)
+            break;
+
+        if (rd.H.fad_evt_counter != evt->evNum/* || runID != evtCtrl[k].runNum*/)
+            continue;
+
+        // We have found an entry with the same runID and evtID
+        // Check if ROI is consistent
+        if (evt->nRoi != nRoi[0] || evt->nRoiTM != nRoi[8])
+        {
+            factPrintf(MessageImp::kError, "Mismatch of roi within event. Expected roi=%d and roi_tm=%d, got %d and %d.",
+                       evt->nRoi, evt->nRoiTM, nRoi[0], nRoi[8]);
+            return shared_ptr<EVT_CTRL2>();
+        }
+
+        // It is maybe not likely, but the header of this board might have
+        // arrived earlier. (We could also update the run-info, but
+        // this should not make a difference here)
+        if ((rd.time.tv_sec==evt->time.tv_sec && rd.time.tv_usec<evt->time.tv_usec) ||
+            rd.time.tv_sec<evt->time.tv_sec)
+            evt->time = rd.time;
+
+        //everything seems fine so far ==> use this slot ....
+        return evt;
+    }
+
+    if (actrun->runId==rd.H.runnumber && (actrun->roi0 != nRoi[0] || actrun->roi8 != nRoi[8]))
+    {
+        factPrintf(MessageImp::kError, "Mismatch of roi within run. Expected roi=%d and roi_tm=%d, got %d and %d (runID=%d, evID=%d)",
+                   actrun->roi0, actrun->roi8, nRoi[0], nRoi[8], rd.H.runnumber, rd.H.fad_evt_counter);
+        return shared_ptr<EVT_CTRL2>();
+    }
+
+    EVT_CTRL2 *evt = new EVT_CTRL2;
+
+    evt->time   = rd.time;
+
+    evt->runNum = rd.H.runnumber;
+    evt->evNum  = rd.H.fad_evt_counter;
+
+    evt->trgNum = rd.H.trigger_id;
+    evt->trgTyp = rd.H.trigger_type;
+
+    evt->nRoi   = nRoi[0];
+    evt->nRoiTM = nRoi[8];
+
+    //evt->firstBoard = rd.sockId;
+
+    const bool newrun = actrun->runId != rd.H.runnumber;
+    if (newrun)
+    {
+        // Since we have started a new run, we know already when to close the
+        // previous run in terms of number of events
+        actrun->maxEvt = actrun->lastEvt;
+
+        factPrintf(MessageImp::kInfo, "New run %d (evt=%d) registered with roi=%d(%d), prev=%d",
+                   rd.H.runnumber, rd.H.fad_evt_counter, nRoi[0], nRoi[8], actrun->runId);
+
+        // The new run is the active run now
+        actrun = make_shared<RUN_CTRL2>();
+
+        const time_t &tsec = evt->time.tv_sec;
+
+        actrun->openTime  = tsec;
+        actrun->closeTime = tsec + 3600 * 24; // max time allowed
+        actrun->runId     = rd.H.runnumber;
+        actrun->roi0      = nRoi[0];  // FIXME: Make obsolete!
+        actrun->roi8      = nRoi[8];  // FIXME: Make obsolete!
+
+        // Signal the fadctrl that a new run has been started
+        // Note this is the only place at which we can ensure that
+        // gotnewRun is called only once
+        gotNewRun(*actrun);
+    }
+
+    // Keep pointer to run of this event
+    evt->runCtrl = actrun;
+
+    // Increase the number of events we have started to receive in this run
+    actrun->lastTime = evt->time.tv_sec;  // Time when the last event was received
+    actrun->lastEvt++;
+
+    // An event can be the first and the last, but not the last and the first.
+    // Therefore gotNewRun is called before runFinished.
+    // runFinished signals that the last event of a run was just received. Processing
+    // might still be ongoing, but we can start a new run.
+    const bool cond1 = actrun->lastEvt  < actrun->maxEvt;     // max number of events not reached
+    const bool cond2 = actrun->lastTime < actrun->closeTime;  // max time not reached
+    if (!cond1 || !cond2)
+        runFinished();
+
+    // We don't mind here that this is not common to all events,
+    // because every coming event will fullfil the condition as well.
+    if (!cond1)
+        evt->closeRequest |= kRequestMaxEvtsReached;
+    if (!cond2)
+        evt->closeRequest |= kRequestMaxTimeReached;
+
+    // Secure access to evtCtrl against access in CloseRunFile
+    // This should be the last... otherwise we can run into threading issues
+    // if the event is accessed before it is fully initialized.
+    evtCtrl.emplace_back(evt);
+    return evtCtrl.back();
+}
+
+
+void copyData(const READ_STRUCT &rBuf, EVT_CTRL2 *evt)
+{
+    const int i = rBuf.sockId;
+
+    memcpy(evt->FADhead+i, &rBuf.H, sizeof(PEVNT_HEADER));
+
+    int src = sizeof(PEVNT_HEADER) / 2;  // Header is 72 byte = 36 shorts
+
+    // consistency of ROIs have been checked already (is it all correct?)
+    const uint16_t &roi = rBuf.S[src+2];
+
+    // different sort in FAD board.....
+    EVENT *event = evt->fEvent;
+    for (int px = 0; px < 9; px++)
+    {
+        for (int drs = 0; drs < 4; drs++)
+        {
+            const int16_t pixC = rBuf.S[src+1];    // start-cell
+            const int16_t pixR = rBuf.S[src+2];    // roi
+            //here we should check if pixH is correct ....
+
+            const int pixS = i*36 + drs*9 + px;
+
+            event->StartPix[pixS] = pixC;
+
+            memcpy(event->Adc_Data + pixS*roi, &rBuf.S[src+4], roi * 2);
+
+            src += 4+pixR;
+
+            // Treatment for ch 9 (TM channel)
+            if (px != 8)
+                continue;
+
+            const int tmS = i*4 + drs;
+
+            //and we have additional TM info
+            if (pixR > roi)
+            {
+                event->StartTM[tmS] = (pixC + pixR - roi) % 1024;
+
+                memcpy(event->Adc_Data + tmS*roi + NPIX*roi, &rBuf.S[src - roi], roi * 2);
+            }
+            else
+            {
+                event->StartTM[tmS] = -1;
+            }
+        }
+    }
+}
+
+// ==========================================================================
+
+uint64_t reportIncomplete(const shared_ptr<EVT_CTRL2> &evt, const char *txt)
+{
+    factPrintf(MessageImp::kWarn, "skip incomplete evt (run=%d, evt=%d, n=%d, %s)",
+               evt->runNum, evt->evNum, evtCtrl.size(), txt);
+
+    uint64_t report = 0;
+
+    char str[1000];
+
+    int ik=0;
+    for (int ib=0; ib<NBOARDS; ib++)
+    {
+        if (ib%10==0)
+            str[ik++] = '|';
+
+        const int jb = evt->board[ib];
+        if (jb>=0) // data received from that board
+        {
+            str[ik++] = '0'+(jb%10);
+            continue;
+        }
+
+        // FIXME: This is not synchronous... it reports
+        // accoridng to the current connection status, not w.r.t. to the
+        // one when the event was taken.
+        if (gi_NumConnect[ib]==0) // board not connected
+        {
+            str[ik++] = 'x';
+            continue;
+        }
+
+        // data from this board lost
+        str[ik++] = '.';
+        report |= ((uint64_t)1)<<ib;
+    }
+
+    str[ik++] = '|';
+    str[ik]   = 0;
+
+    factOut(MessageImp::kWarn, str);
+
+    return report;
+}
+
+// ==========================================================================
+// ==========================================================================
+
+bool proc1(const shared_ptr<EVT_CTRL2> &);
+
+Queue<shared_ptr<EVT_CTRL2>> processingQueue1(bind(&proc1, placeholders::_1));
+
+bool proc1(const shared_ptr<EVT_CTRL2> &evt)
+{
+    applyCalib(*evt, processingQueue1.size());
+    return true;
+}
+
+// If this is not convenient anymore, it could be replaced by
+// a command queue, to which command+data is posted,
+// (e.g. runOpen+runInfo, runClose+runInfo, evtWrite+evtInfo)
+bool writeEvt(const shared_ptr<EVT_CTRL2> &evt)
+{
+    //const shared_ptr<RUN_CTRL2> &run = evt->runCtrl;
+    RUN_CTRL2 &run = *evt->runCtrl;
+
+    // Is this a valid event or just an empty event to trigger run close?
+    // If this is not an empty event open the new run-file
+    // Empty events are there to trigger run-closing conditions
+    if (evt->valid())
+    {
+        // File not yet open
+        if (run.fileStat==kFileNotYetOpen)
+        {
+            // runOpen will close a previous run, if still open
+            if (!runOpen(*evt))
+            {
+                factPrintf(MessageImp::kError, "Could not open new file for run %d (evt=%d, runOpen failed)", evt->runNum, evt->evNum);
+                run.fileStat = kFileClosed;
+                return true;
+            }
+
+            factPrintf(MessageImp::kInfo, "Opened new file for run %d (evt=%d)", evt->runNum, evt->evNum);
+            run.fileStat = kFileOpen;
+        }
+
+        // Here we have a valid calibration and can go on with that.
+        // It is important that _all_ events are sent for calibration (except broken ones)
+        processingQueue1.post(evt);
+    }
+
+    // File already closed
+    if (run.fileStat==kFileClosed)
+        return true;
+
+    // If we will have a software trigger which prevents single events from writing,
+    // the logic of writing the stop time and the trigger counters need to be adapted.
+    // Currently it is just the values of the last valid event.
+    bool rc1 = true;
+    if (evt->valid())
+    {
+        rc1 = runWrite(*evt);
+        if (!rc1)
+            factPrintf(MessageImp::kError, "Writing event %d for run %d failed (runWrite)", evt->evNum, evt->runNum);
+    }
+
+    // File not open... no need to close or to check for close
+    // ... this is the case if CloseRunFile was called before any file was opened.
+    if (run.fileStat!=kFileOpen)
+        return true;
+
+    // File is not yet to be closed.
+    if (rc1 && evt->closeRequest==kRequestNone)
+        return true;
+
+    runClose(*evt);
+    run.fileStat = kFileClosed;
+
+    vector<string> reason;
+    if (evt->closeRequest&kRequestManual)
+        reason.emplace_back("close requested");
+    if (evt->closeRequest&kRequestTimeout)
+        reason.emplace_back("receive timeout");
+    if (evt->closeRequest&kRequestConnectionChange)
+        reason.emplace_back("connection changed");
+    if (evt->closeRequest&kRequestEventCheckFailed)
+        reason.emplace_back("event check failed");
+    if (evt->closeRequest&kRequestMaxTimeReached)
+        reason.push_back(to_string(run.closeTime-run.openTime)+"s reached");
+    if (evt->closeRequest&kRequestMaxEvtsReached)
+        reason.push_back(to_string(run.maxEvt)+" evts reached");
+    if (!rc1)
+        reason.emplace_back("runWrite failed");
+
+    const string str = boost::algorithm::join(reason, ", ");
+    factPrintf(MessageImp::kInfo, "File closed because %s",  str.c_str());
+
+    return true;
+}
+
+Queue<shared_ptr<EVT_CTRL2>> secondaryQueue(bind(&writeEvt, placeholders::_1));
+
+bool procEvt(const shared_ptr<EVT_CTRL2> &evt)
+{
+    RUN_CTRL2 &run = *evt->runCtrl;
+
+    bool check = true;
+    if (evt->valid())
+    {
+        EVENT *event = evt->fEvent;
+
+        // This is already done in initMemory()
+        //event->Roi         = evt->runCtrl->roi0;
+        //event->RoiTM       = evt->runCtrl->roi8;
+        //event->EventNum    = evt->evNum;
+        //event->TriggerNum  = evt->trgNum;
+        //event->TriggerType = evt->trgTyp;
+
+        event->NumBoards = evt->nBoard;
+
+        event->PCTime = evt->time.tv_sec;
+        event->PCUsec = evt->time.tv_usec;
+
+        for (int ib=0; ib<NBOARDS; ib++)
+            event->BoardTime[ib] = evt->FADhead[ib].time;
+
+        check = eventCheck(*evt);
+
+        // If the event is valid, increase the trigger counter accordingly
+        if (check)
+        {
+            // Physics trigger
+            if (evt->trgTyp && !(evt->trgTyp & FAD::EventHeader::kAll))
+                run.triggerCounter[0]++;
+            // Pure pedestal trigger
+            else  if ((evt->trgTyp&FAD::EventHeader::kPedestal) && !(evt->trgTyp&FAD::EventHeader::kTIM))
+                run.triggerCounter[1]++;
+            // external light pulser trigger
+            else if (evt->trgTyp & FAD::EventHeader::kLPext)
+                run.triggerCounter[2]++;
+            // time calibration triggers
+            else if (evt->trgTyp & (FAD::EventHeader::kTIM|FAD::EventHeader::kPedestal))
+                run.triggerCounter[3]++;
+            // internal light pulser trigger
+            else if (evt->trgTyp & FAD::EventHeader::kLPint)
+                run.triggerCounter[4]++;
+            // external trigger input 1
+            else if (evt->trgTyp & FAD::EventHeader::kExt1)
+                run.triggerCounter[5]++;
+            // external trigger input 2
+            else if (evt->trgTyp & FAD::EventHeader::kExt2)
+                run.triggerCounter[6]++;
+            // other triggers
+            else
+                run.triggerCounter[7]++;
+        }
+    }
+
+    // If this is an invalid event, the current triggerCounter needs to be copied
+    // because runClose will use that one to update the TRIGGER_COUNTER.
+    // When closing the file, the trigger counter of the last successfully
+    // written event is used.
+    evt->triggerCounter = run.triggerCounter;
+
+    // If event check has failed, skip the event and post a close request instead.
+    // Otherwise, if file is open post the event for being written
+    if (!check)
+        secondaryQueue.emplace(new EVT_CTRL2(kRequestEventCheckFailed, evt->runCtrl));
+    else
+        secondaryQueue.post(evt);
+
+    return true;
+}
+
+// ==========================================================================
+// ==========================================================================
+
+/*
+ task 1-4:
+
+ lock1()-lock4();
+ while (1)
+ {
+       wait for signal [lockN];  // unlocked
+
+       while (n!=10)
+         wait sockets;
+         read;
+
+       lockM();
+       finished[n] = true;
+       signal(mainloop);
+       unlockM();
+ }
+
+
+ mainloop:
+
+ while (1)
+ {
+       lockM();
+       while (!finished[0] || !finished[1] ...)
+          wait for signal [lockM];  // unlocked... signals can be sent
+       finished[0-1] = false;
+       unlockM()
+
+       copy data to queue    // locked
+
+       lockN[0-3];
+       signalN[0-3];
+       unlockN[0-3];
+ }
+
+
+ */
+
+/*
+    while (g_reset)
+    {
+        shared_ptr<EVT_CTRL2> evt = new shared_ptr<>;
+
+        // Check that all sockets are connected
+
+        for (int i=0; i<40; i++)
+            if (rd[i].connected && epoll_ctl(fd_epoll, EPOLL_CTL_ADD, socket, NULL)<0)
+               factPrintf(kError, "epoll_ctrl failed: %m (EPOLL_CTL_ADD,rc=%d)", errno);
+
+        while (g_reset)
+        {
+           if (READ_STRUCT::wait()<0)
+              break;
+
+           if (rc_epoll==0)
+              break;
+
+           for (int jj=0; jj<rc_epoll; jj++)
+           {
+              READ_STRUCT *rs = READ_STRUCT::get(jj);
+              if (!rs->connected)
+                  continue;
+
+              const bool rc_read = rs->read();
+              if (!rc_read)
+                  continue;
+
+              if (rs->bufTyp==READ_STRUCT::kHeader)
+              {
+                  [...]
+              }
+
+              [...]
+
+              if (epoll_ctl(fd_epoll, EPOLL_CTL_DEL, socket, NULL)<0)
+                 factPrintf(kError, "epoll_ctrl failed: %m (EPOLL_CTL_DEL,rc=%d)", errno);
+           }
+
+           if (once_a_second)
+           {
+              if (evt==timeout)
+                  break;
+           }
+        }
+
+        if (evt.nBoards==actBoards)
+            primaryQueue.post(evt);
+    }
+*/
+
+Queue<shared_ptr<EVT_CTRL2>> primaryQueue(bind(&procEvt, placeholders::_1));
+
+// This corresponds more or less to fFile... should we merge both?
+shared_ptr<RUN_CTRL2> actrun;
+
+void CloseRunFile()
+{
+    // Currently we need actrun here, to be able to set kFileClosed.
+    // Apart from that we have to ensure that there is an open file at all
+    // which we can close.
+    // Submission to the primary queue ensures that the event
+    // is placed at the right place in the processing chain.
+    // (Corresponds to the correct run)
+    primaryQueue.emplace(new EVT_CTRL2(kRequestManual, actrun));
+}
+
+bool mainloop(READ_STRUCT *rd)
+{
+    factPrintf(MessageImp::kInfo, "Starting EventBuilder main loop");
+
+    primaryQueue.start();
+    secondaryQueue.start();
+    processingQueue1.start();;
+
+    actrun = make_shared<RUN_CTRL2>();
+
+    //time in seconds
+    time_t gi_SecTime = time(NULL)-1;
+
+    //loop until global variable g_runStat claims stop
+    g_reset = 0;
+    while (g_reset == 0)
+    {
+#ifdef USE_POLL
+        int    pp[40];
+        int    nn = 0;
+        pollfd fds[40];
+        for (int i=0; i<40; i++)
+        {
+            if (rd[i].socket>=0 && rd[i].connected && rd[i].bufLen>0)
+            {
+                fds[nn].fd = rd[i].socket;
+                fds[nn].events = POLLIN;
+                pp[nn] = i;
+                nn++;
+            }
+        }
+
+        const int rc_epoll = poll(fds, nn, 100);
+        if (rc_epoll<0)
+            break;
+#endif
+
+#ifdef USE_SELECT
+        fd_set readfs;
+        FD_ZERO(&readfs);
+        int nfsd = 0;
+        for (int i=0; i<NBOARDS; i++)
+            if (rd[i].socket>=0 && rd[i].connected && rd[i].bufLen>0)
+            {
+                FD_SET(rd[i].socket, &readfs);
+                if (rd[i].socket>nfsd)
+                    nfsd = rd[i].socket;
+            }
+
+        timeval tv;
+        tv.tv_sec = 0;
+        tv.tv_usec = 100000;
+        const int rc_select = select(nfsd+1, &readfs, NULL, NULL, &tv);
+        // 0: timeout
+        // -1: error
+        if (rc_select<0)
+        {
+            factPrintf(MessageImp::kError, "Waiting for data failed: %d (select,rc=%d)", errno);
+            continue;
+        }
+#endif
+
+#ifdef USE_EPOLL
+        const int rc_epoll = READ_STRUCT::wait();
+        if (rc_epoll<0)
+            break;
+#endif
+
+#ifdef PRIORITY_QUEUE
+        priority_queue<READ_STRUCT*, vector<READ_STRUCT*>, READ_STRUCTcomp> prio;
+
+        for (int i=0; i<NBOARDS; i++)
+            if (rd[i].connected)
+                prio.push(rd+i);
+
+        if (!prio.empty()) do
+#endif
+
+
+#ifdef USE_POLL
+        for (int jj=0; jj<nn; jj++)
+#endif
+#ifdef USE_EPOLL
+        for (int jj=0; jj<rc_epoll; jj++)
+#endif
+#if !defined(USE_EPOLL) && !defined(USE_POLL) && !defined(PRIORITY_QUEUE)
+        for (int jj=0; jj<NBOARDS; jj++)
+#endif
+        {
+#ifdef PRIORITY_QUEUE
+            READ_STRUCT *rs = prio.top();
+#endif
+#ifdef USE_SELECT
+            if (!FD_ISSET(rs->socket, &readfs))
+                continue;
+#endif
+
+#ifdef USE_POLL
+            if ((fds[jj].revents&POLLIN)==0)
+                continue;
+#endif
+
+#ifdef USE_EPOLL
+            // FIXME: How to get i?
+            READ_STRUCT *rs = READ_STRUCT::get(jj);
+#endif
+
+#ifdef USE_POLL
+            // FIXME: How to get i?
+            READ_STRUCT *rs = &rd[pp[jj]];
+#endif
+
+#if !defined(USE_POLL) && !defined(USE_EPOLL) && !defined(PRIORITY_QUEUE)
+            const int i = (jj%4)*10 + (jj/4);
+            READ_STRUCT *rs = &rd[i];
+#endif
+
+#ifdef COMPLETE_EVENTS
+            if (rs->bufTyp==READ_STRUCT::kWait)
+                continue;
+#endif
+
+            // ==================================================================
+
+            const bool rc_read = rs->read();
+
+            // Connect might have gotten closed during read
+            gi_NumConnect[rs->sockId] = rs->connected;
+            gj.numConn[rs->sockId]    = rs->connected;
+
+            // Read either failed or disconnected, or the buffer is not yet full
+            if (!rc_read)
+                continue;
+
+            // ==================================================================
+
+            if (rs->bufTyp==READ_STRUCT::kHeader)
+            {
+                //check if startflag correct; else shift block ....
+                // FIXME: This is not enough... this combination of
+                //        bytes can be anywhere... at least the end bytes
+                //        must be checked somewhere, too.
+                uint k;
+                for (k=0; k<sizeof(PEVNT_HEADER)-1; k++)
+                {
+                    if (rs->B[k]==0xfb && rs->B[k+1] == 0x01)
+                        break;
+                }
+                rs->skip += k;
+
+                //no start of header found
+                if (k==sizeof(PEVNT_HEADER)-1)
+                {
+                    rs->B[0]   = rs->B[sizeof(PEVNT_HEADER)-1];
+                    rs->bufPos = rs->B+1;
+                    rs->bufLen = sizeof(PEVNT_HEADER)-1;
+                    continue;
+                }
+
+                if (k > 0)
+                {
+                    memmove(rs->B, rs->B+k, sizeof(PEVNT_HEADER)-k);
+
+                    rs->bufPos -= k;
+                    rs->bufLen += k;
+
+                    continue; // We need to read more (bufLen>0)
+                }
+
+                if (rs->skip>0)
+                {
+                    factPrintf(MessageImp::kInfo, "Skipped %d bytes on port %d", rs->skip, rs->sockId);
+                    rs->skip = 0;
+                }
+
+                // Swap the header entries from network to host order
+                rs->swapHeader();
+
+                rs->bufTyp = READ_STRUCT::kData;
+                rs->bufLen = rs->len() - sizeof(PEVNT_HEADER);
+
+                debugHead(rs->B);  // i and fadBoard not used
+
+                continue;
+            }
+
+            const uint16_t &end = *reinterpret_cast<uint16_t*>(rs->bufPos-2);
+            if (end != 0xfe04)
+            {
+                factPrintf(MessageImp::kError, "End-of-event flag wrong on socket %2d for event %d (len=%d), got %04x",
+                           rs->sockId, rs->H.fad_evt_counter, rs->len(), end);
+
+                // ready to read next header
+                rs->bufTyp = READ_STRUCT::kHeader;
+                rs->bufLen = sizeof(PEVNT_HEADER);
+                rs->bufPos = rs->B;
+                // FIXME: What to do with the validity flag?
+                continue;
+            }
+
+            // get index into mBuffer for this event (create if needed)
+            const shared_ptr<EVT_CTRL2> evt = mBufEvt(*rs, actrun);
+
+            // We have a valid entry, but no memory has yet been allocated
+            if (evt && !evt->initMemory())
+            {
+                const time_t tm = time(NULL);
+                if (evt->runCtrl->reportMem==tm)
+                    continue;
+
+                factPrintf(MessageImp::kError, "No free memory left for %d (run=%d)", evt->evNum, evt->runNum);
+                evt->runCtrl->reportMem = tm;
+                continue;
+            }
+
+            // ready to read next header
+            rs->bufTyp = READ_STRUCT::kHeader;
+            rs->bufLen = sizeof(PEVNT_HEADER);
+            rs->bufPos = rs->B;
+
+            // Fatal error occured. Event cannot be processed. Skip it. Start reading next header.
+            if (!evt)
+                continue;
+
+            // This should never happen
+            if (evt->board[rs->sockId] != -1)
+            {
+                factPrintf(MessageImp::kError, "Got event %5d from board %3d (i=%3d, len=%5d) twice.",
+                           evt->evNum, rs->sockId, jj, rs->len());
+                // FIXME: What to do with the validity flag?
+                continue; // Continue reading next header
+            }
+
+            // Swap the data entries (board headers) from network to host order
+            rs->swapData();
+
+            // Copy data from rd[i] to mBuffer[evID]
+            copyData(*rs, evt.get());
+
+#ifdef COMPLETE_EVENTS
+            // Do not read anmymore from this board until the whole event has been received
+            rs->bufTyp = READ_STRUCT::kWait;
+#endif
+            // now we have stored a new board contents into Event structure
+            evt->board[rs->sockId] = rs->sockId;
+            evt->header = evt->FADhead+rs->sockId;
+            evt->nBoard++;
+
+#ifdef COMPLETE_EPOLL
+            if (epoll_ctl(READ_STRUCT::fd_epoll, EPOLL_CTL_DEL, rs->socket, NULL)<0)
+            {
+                factPrintf(MessageImp::kError, "epoll_ctrl failed: %m (EPOLL_CTL_DEL,rc=%d)", errno);
+                break;
+            }
+#endif
+            // event not yet complete
+            if (evt->nBoard < READ_STRUCT::activeSockets)
+                continue;
+
+            // All previous events are now flagged as incomplete ("expired")
+            // and will be removed. (This is a bit tricky, because pop_front()
+            // would invalidate the current iterator if not done _after_ the increment)
+            for (auto it=evtCtrl.begin(); it!=evtCtrl.end(); )
+            {
+                const bool found = it->get()==evt.get();
+                if (!found)
+                    reportIncomplete(*it, "expired");
+                else
+                    primaryQueue.post(evt);
+
+                // package_len is 0 if nothing was received.
+                for (int ib=0; ib<40; ib++)
+                    rd[ib].relBytes += uint32_t((*it)->FADhead[ib].package_length)*2;
+
+                // The counter must be increased _before_ the pop_front,
+                // otherwise the counter is invalidated by the pop_front!
+                it++;
+                evtCtrl.pop_front();
+
+                // We reached the current event, so we are done
+                if (found)
+                    break;
+            }
+
+#ifdef COMPLETE_EPOLL
+            for (int j=0; j<40; j++)
+            {
+                epoll_event ev;
+                ev.events = EPOLLIN;
+                ev.data.ptr = &rd[j];  // user data (union: ev.ptr)
+                if (epoll_ctl(READ_STRUCT::fd_epoll, EPOLL_CTL_ADD, rd[j].socket, &ev)<0)
+                {
+                    factPrintf(MessageImp::kError, "epoll_ctl failed: %m (EPOLL_CTL_ADD,rc=%d)", errno);
+                    return;
+                }
+            }
+#endif
+
+#ifdef COMPLETE_EVENTS
+            for (int j=0; j<40; j++)
+            {
+                //if (rs->bufTyp==READ_STRUCT::kWait)
+                {
+                    rs->bufTyp = READ_STRUCT::kHeader;
+                    rs->bufLen = sizeof(PEVNT_HEADER);
+                    rs->bufPos = rs->B;
+                }
+            }
+#endif
+        } // end for loop over all sockets
+#ifdef PRIORITY_QUEUE
+        while (0); // convert continue into break ;)
+#endif
+
+        // ==================================================================
+
+        const time_t actTime = time(NULL);
+        if (actTime == gi_SecTime)
+        {
+#if !defined(USE_SELECT) && !defined(USE_EPOLL) && !defined(USE_POLL)
+            if (evtCtrl.empty())
+                usleep(actTime-actrun->lastTime>300 ? 10000 : 1);
+#endif
+            continue;
+        }
+        gi_SecTime = actTime;
+
+        // ==================================================================
+        //loop over all active events and flag those older than read-timeout
+        //delete those that are written to disk ....
+
+        // This could be improved having the pointer which separates the queue with
+        // the incomplete events from the queue with the complete events
+        for (auto it=evtCtrl.begin(); it!=evtCtrl.end(); )
+        {
+            // A reference is enough because the shared_ptr is hold by the evtCtrl
+            const shared_ptr<EVT_CTRL2> &evt = *it;
+
+            // The first event is the oldest. If the first event within the
+            // timeout window was received, we can stop searching further.
+            if (evt->time.tv_sec+g_evtTimeout>=actTime)
+                break;
+
+            // The counter must be increased _before_ the pop_front,
+            // otherwise the counter is invalidated by the pop_front!
+            it++;
+
+            // This timeout is caused because complete data from one or more
+            // boards has been received, but the memory could not be allocated.
+            // There is no reason why we should not go on waiting for
+            // memory to become free. However, the FADs will disconnect
+            // after 60s due to their keep-alive timeout, but the event builder
+            // will still wait for memory to become available.
+            // Currently, the only possibility to free the memory from the
+            // evtCtrl to restart the event builder (STOP/START).
+            if (!evt->valid())
+                continue;
+
+            // This will result in the emission of a dim service.
+            // It doesn't matter if that takes comparably long,
+            // because we have to stop the run anyway.
+            const uint64_t rep = reportIncomplete(evt, "timeout");
+            factReportIncomplete(rep);
+
+            // At least the data from one boards is complete...
+            // package_len is 0 when nothing was received from this board
+            for (int ib=0; ib<40; ib++)
+                rd[ib].relBytes += uint32_t(evt->FADhead[ib].package_length)*2;
+
+            evtCtrl.pop_front();
+        }
+
+        // =================================================================
+
+        gj.bufNew   = evtCtrl.size();            //# incomplete events in buffer
+        gj.bufEvt   = primaryQueue.size();       //# complete events in buffer
+        gj.bufWrite = secondaryQueue.size();     //# complete events in buffer
+        gj.bufProc  = processingQueue1.size();   //# complete events in buffer
+        gj.bufTot   = Memory::max_inuse/MAX_TOT_MEM;
+        gj.usdMem   = Memory::max_inuse;
+        gj.totMem   = Memory::allocated;
+        gj.maxMem   = g_maxMem;
+
+        gj.deltaT = 1000; // temporary, must be improved
+
+        bool changed = false;
+
+        static vector<uint64_t> store(NBOARDS);
+
+        for (int ib=0; ib<NBOARDS; ib++)
+        {
+            gj.rateBytes[ib] = store[ib]>rd[ib].totBytes ? rd[ib].totBytes : rd[ib].totBytes-store[ib];
+            gj.relBytes[ib]  = rd[ib].totBytes-rd[ib].relBytes;
+
+            store[ib] = rd[ib].totBytes;
+
+            if (rd[ib].check(g_port[ib].sockDef, g_port[ib].sockAddr))
+                changed = true;
+
+            gi_NumConnect[ib] = rd[ib].connected;
+            gj.numConn[ib]    = rd[ib].connected;
+        }
+
+        factStat(gj);
+
+        Memory::max_inuse = 0;
+
+        // =================================================================
+
+        // This is a fake event to trigger possible run-closing conditions once a second
+        // FIXME: This is not yet ideal because a file would never be closed
+        //        if a new file has been started and no events of the new file
+        //        have been received yet
+        int request = kRequestNone;
+
+        // If nothing was received for more than 5min, close file
+        if (actTime-actrun->lastTime>300)
+            request |= kRequestTimeout;
+
+        // If connection status has changed
+        if (changed)
+            request |= kRequestConnectionChange;
+
+        if (request!=kRequestNone)
+            runFinished();
+
+        if (actrun->fileStat==kFileOpen)
+            primaryQueue.emplace(new EVT_CTRL2(request, actrun));
+    }
+
+    //   1: Stop, wait for event to get processed
+    //   2: Stop, finish immediately
+    // 101: Restart, wait for events to get processed
+    // 101: Restart, finish immediately
+    //
+    const int gi_reset = g_reset;
+
+    const bool abort = gi_reset%100==2;
+
+    factPrintf(MessageImp::kInfo, "Stop reading ... RESET=%d (%s threads)", gi_reset, abort?"abort":"join");
+
+    primaryQueue.wait(abort);
+    secondaryQueue.wait(abort);
+    processingQueue1.wait(abort);
+
+    // Here we also destroy all runCtrl structures and hence close all open files
+    evtCtrl.clear();
+    actrun.reset();
+
+    factPrintf(MessageImp::kInfo, "Exit read Process...");
+    factPrintf(MessageImp::kInfo, "%ld Bytes flagged as in-use.", Memory::inuse);
+
+    factStat(gj);
+
+    return gi_reset>=100;
+}
+
+// ==========================================================================
+// ==========================================================================
+
+void StartEvtBuild()
+{
+    factPrintf(MessageImp::kInfo, "Starting EventBuilder++");
+
+    memset(gi_NumConnect, 0, NBOARDS*sizeof(*gi_NumConnect));
+
+    memset(&gj, 0, sizeof(GUI_STAT));
+
+    gj.usdMem   = Memory::inuse;
+    gj.totMem   = Memory::allocated;
+    gj.maxMem   = g_maxMem;
+
+
+    READ_STRUCT rd[NBOARDS];
+
+    // This is only that every socket knows its id (maybe we replace that by arrays instead of an array of sockets)
+    for (int i=0; i<NBOARDS; i++)
+        rd[i].sockId = i;
+
+    while (mainloop(rd));
+
+    //must close all open sockets ...
+    factPrintf(MessageImp::kInfo, "Close all sockets...");
+
+    READ_STRUCT::close();
+
+    // Now all sockets get closed. This is not reflected in gi_NumConnect
+    // The current workaround is to count all sockets as closed when the thread is not running
+}
Index: branches/testFACT++branch/src/EventBuilder.h
===================================================================
--- branches/testFACT++branch/src/EventBuilder.h	(revision 18277)
+++ branches/testFACT++branch/src/EventBuilder.h	(revision 18277)
@@ -0,0 +1,209 @@
+#ifndef FACT_EventBuilder
+#define FACT_EventBuilder
+
+#include "FAD.h"
+
+#include <list>
+#include <array>
+#include <forward_list>
+
+namespace std
+{
+    class mutex;
+}
+
+
+/* global variables; 
+   to avoid race canoditions, only one thread is allowed to write 
+   the name of the variable defines which process shall write it:
+
+   g_XXX : main control thread
+   gi_XX : input thread (reading from camera)
+   gw_XX : write thread (writing to disk)
+   qp_XX : processing thread(s) (processing data, eg. soft-trig)
+
+*/
+extern int  g_reset     ;  //>0 = reset different levels of eventbuilder
+extern size_t g_maxMem  ;  //maximum memory allowed for buffer
+extern uint16_t g_evtTimeout;  //timeout (sec) for one event
+
+extern FACT_SOCK g_port[NBOARDS] ;  // .port = baseport, .addr=string of IP-addr in dotted-decimal "ddd.ddd.ddd.ddd"
+
+extern uint gi_NumConnect[NBOARDS];   //4 crates * 10 boards
+
+class DrsCalibration;
+
+enum FileStatus_t
+{
+    kFileNotYetOpen,
+    kFileOpen,
+    kFileClosed
+};
+
+enum CloseRequest_t
+{
+    kRequestNone             =    0,
+    kRequestManual           = 1<<1,
+    kRequestTimeout          = 1<<2,
+    kRequestConnectionChange = 1<<3,
+    kRequestEventCheckFailed = 1<<4,
+    kRequestMaxEvtsReached   = 1<<5,
+    kRequestMaxTimeReached   = 1<<6
+};
+
+
+struct RUN_CTRL2
+{
+    int64_t runId ;      // Run number
+
+    time_t reportMem;        // initMemory has reported no memory once (set outside of class)
+
+    time_t openTime;     // Time when first event (first board) was received
+    time_t lastTime;     // Time when last event was received (set when first board data received)
+    time_t closeTime;    // Time when run should be closed
+    uint32_t night;      // night as int as determined for this run
+
+    uint32_t lastEvt;    // number of events received (counted when the first board was received)
+    uint32_t maxEvt;     // maximum number which should be written to file
+
+    uint16_t roi0;       // roi for normal pixels
+    uint16_t roi8;       // roi for pixels8
+
+    std::string runType;
+
+    FileStatus_t fileStat;
+
+    std::array<uint32_t, 8> triggerCounter;  // triggerCounter must only be manipulated in procEvt to keep it thread safe
+
+    std::shared_ptr<DrsCalibration> calib;
+    std::list<std::array<int16_t,1440>> prevStart; // History for start cells of previous events (for step calibration)
+
+    RUN_CTRL2() : runId(-1), reportMem(0), lastTime(0), lastEvt(0), maxEvt(1<<31), fileStat(kFileNotYetOpen)
+    {
+        triggerCounter.fill(0);
+
+        // runId   = -1;
+        // fileId  = kFileNotYetOpen;
+        // lastEvt =  0;    // Number of events partially started to read
+        // actEvt  =  0;    // Number of written events
+        // maxEvt  = 1<<31; // max number events allowed (~2400min @ 250Hz)
+
+    }
+    //~RUN_CTRL2();
+};
+
+#define MAX_HEAD_MEM (NBOARDS * sizeof(PEVNT_HEADER))
+#define MAX_TOT_MEM (sizeof(EVENT) + (NPIX+NTMARK)*1024*2 + MAX_HEAD_MEM)
+
+namespace Memory
+{
+    extern uint64_t inuse;
+    extern uint64_t allocated;
+
+    extern uint64_t max_inuse;
+
+    extern std::mutex mtx;
+
+    extern std::forward_list<void*> memory;
+
+    extern void *malloc();
+    extern void  free(void *mem);
+};
+
+struct EVT_CTRL2
+{
+    uint32_t  runNum;  // header->runnumber;
+    uint32_t  evNum;   // header->fad_evt_counter
+
+    uint32_t  trgNum;  // header->trigger_id
+    uint32_t  trgTyp;  // header->trigger_type
+    uint32_t  fadLen;
+
+    //uint16_t  firstBoard; // first board from which data was received
+    uint16_t  nBoard;
+    int16_t   board[NBOARDS];
+
+    uint16_t  nRoi;
+    uint16_t  nRoiTM;
+
+    timeval   time;
+
+    PEVNT_HEADER *FADhead; // Pointer to the whole allocated memory
+    EVENT        *fEvent;  // Pointer to the event data itself
+    PEVNT_HEADER *header;  // Pointer to a valid header within FADhead
+
+    int closeRequest;
+
+    std::array<uint32_t, 8> triggerCounter;  // triggerCounter must only be manipulated in procEvt to keep it thread safe
+
+    std::shared_ptr<RUN_CTRL2> runCtrl;
+
+    // Be carefull with this constructor... writeEvt can seg fault
+    // it gets an empty runCtrl
+    EVT_CTRL2() : nBoard(0), FADhead(0), header(0), closeRequest(kRequestNone)
+    {
+        //flag all boards as unused
+        std::fill(board,  board+NBOARDS, -1);
+    }
+    /*
+    EVT_CTRL2(CloseRequest_t req) : nBoard(0), FADhead(0), header(0), reportMem(false), closeRequest(req), runCtrl(new RUN_CTRL2)
+    {
+        //flag all boards as unused
+        std::fill(board, board+NBOARDS, -1);
+        }*/
+
+    EVT_CTRL2(int req, const std::shared_ptr<RUN_CTRL2> &run) : nBoard(0), FADhead(0), header(0), closeRequest(req), runCtrl(run)
+    {
+        //flag all boards as unused
+        std::fill(board, board+NBOARDS, -1);
+    }
+    ~EVT_CTRL2()
+    {
+        Memory::free(FADhead);
+    }
+
+    operator RUN_HEAD() const
+    {
+        RUN_HEAD rh;
+
+        rh.Nroi    = nRoi;
+        rh.NroiTM  = nRoiTM;
+        rh.RunTime = time.tv_sec;
+        rh.RunUsec = time.tv_usec;
+
+        memcpy(rh.FADhead, FADhead, NBOARDS*sizeof(PEVNT_HEADER));
+
+        return rh;
+    }
+
+    bool valid() const { return header; }
+
+    bool initMemory()
+    {
+        // We have a valid entry, but no memory has yet been allocated
+        if (FADhead)
+            return true;
+
+        FADhead = (PEVNT_HEADER*)Memory::malloc();
+        if (!FADhead)
+            return false;
+
+        fEvent = reinterpret_cast<EVENT*>(FADhead+NBOARDS);
+
+        memset(FADhead, 0, (NPIX+NTMARK)*2*nRoi+NBOARDS*sizeof(PEVNT_HEADER)+sizeof(EVENT));
+
+        //flag all pixels as unused, flag all TMark as unused
+        std::fill(fEvent->StartPix, fEvent->StartPix+NPIX,   -1);
+        std::fill(fEvent->StartTM,  fEvent->StartTM +NTMARK, -1);
+
+        fEvent->Roi         = nRoi;
+        fEvent->RoiTM       = nRoiTM;
+        fEvent->EventNum    = evNum;
+        fEvent->TriggerNum  = trgNum;
+        fEvent->TriggerType = trgTyp;
+
+        return true;
+    }
+};
+
+#endif
Index: branches/testFACT++branch/src/EventBuilderWrapper.h
===================================================================
--- branches/testFACT++branch/src/EventBuilderWrapper.h	(revision 18277)
+++ branches/testFACT++branch/src/EventBuilderWrapper.h	(revision 18277)
@@ -0,0 +1,1492 @@
+#ifndef FACT_EventBuilderWrapper
+#define FACT_EventBuilderWrapper
+
+#include <sstream>
+
+#if BOOST_VERSION < 104400
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))
+#undef BOOST_HAS_RVALUE_REFS
+#endif
+#endif
+#include <boost/thread.hpp>
+#include <boost/filesystem.hpp>
+#include <boost/date_time/posix_time/posix_time_types.hpp>
+
+#include "DimWriteStatistics.h"
+
+#include "DataCalib.h"
+#include "DataWriteRaw.h"
+
+#ifdef HAVE_FITS
+#include "DataWriteFits.h"
+#else
+#define DataWriteFits DataWriteFits2
+#endif
+
+#include "DataWriteFits2.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+namespace fs = boost::filesystem;
+
+using ba::ip::tcp;
+
+using namespace std;
+
+// ========================================================================
+
+#include "EventBuilder.h"
+
+void StartEvtBuild();
+void CloseRunFile();
+
+// ========================================================================
+
+class EventBuilderWrapper
+{
+public:
+    // FIXME
+    static EventBuilderWrapper *This;
+
+    MessageImp &fMsg;
+
+private:
+    boost::thread fThreadMain;
+
+    enum
+    {
+        kCurrent   = 0,
+        kTotal     = 1,
+        kEventId   = 2,
+        kTriggerId = 3,
+    };
+
+    FAD::FileFormat_t fFileFormat;
+
+    //uint32_t fMaxRun;
+    uint32_t fLastOpened;
+    uint32_t fLastClosed;
+    array<uint32_t,4> fNumEvts;
+
+    DimWriteStatistics  fDimWriteStats;
+    DimDescribedService fDimRuns;
+    DimDescribedService fDimEvents;
+    DimDescribedService fDimTrigger;
+    DimDescribedService fDimRawData;
+    DimDescribedService fDimEventData;
+    DimDescribedService fDimFeedbackData;
+    DimDescribedService fDimFwVersion;
+    DimDescribedService fDimRunNumber;
+    DimDescribedService fDimStatus;
+    DimDescribedService fDimDNA;
+    DimDescribedService fDimTemperature;
+    DimDescribedService fDimPrescaler;
+    DimDescribedService fDimRefClock;
+    DimDescribedService fDimRoi;
+    DimDescribedService fDimDac;
+    DimDescribedService fDimDrsRuns;
+    DimDescribedService fDimDrsCalibration;
+    DimDescribedService fDimStatistics1;
+    //DimDescribedService fDimStatistics2;
+    DimDescribedService fDimFileFormat;
+    DimDescribedService fDimIncomplete;
+
+    Queue<pair<Time,GUI_STAT>>                      fQueueStatistics1;
+    Queue<tuple<Time,bool,FAD::EventHeader>>        fQueueProcHeader;
+    Queue<pair<Time,array<uint32_t,4>>>             fQueueEvents;
+    Queue<tuple<Time,char,array<uint32_t,8>>>       fQueueTrigger;
+    Queue<pair<Time,array<uint16_t,2>>>             fQueueRoi;
+    Queue<vector<char>>                             fQueueRawData;
+    Queue<tuple<Time,uint32_t,array<float,1440*4>>> fQueueEventData;
+    Queue<tuple<Time, array<uint32_t,40>, array<int16_t,160>>> fQueueTempRefClk;
+
+    string   fPath;
+    uint32_t fNightAsInt;
+    uint32_t fRunNumber;
+    int64_t  fRunInProgress;
+
+    array<uint16_t,2> fVecRoi;
+    pair<float,array<float, 1440*4>> fMaxEvent; // Maximum event from applyCalib
+
+protected:
+    bool InitRunNumber(const string &path="")
+    {
+        if (!path.empty())
+        {
+            if (!DimWriteStatistics::DoesPathExist(path, fMsg))
+            {
+                fMsg.Error("Data path "+path+" does not exist!");
+                return false;
+            }
+
+            fPath = path;
+            fDimWriteStats.SetCurrentFolder(fPath);
+
+            fMsg.Info("Data path set to "+path+".");
+        }
+
+        // Get current night
+        const Time now;
+
+        const uint32_t night = now.NightAsInt();
+        if (night==fNightAsInt)
+            return true;
+
+        const string crosscheck = now.GetPrevSunRise().GetAsStr("%Y%m%d");
+        if (crosscheck!=to_string(night))
+        {
+            fMsg.Warn("The crosscheck for the night failed. "+crosscheck+" is not equal to "+to_string(night)+"... keeping old one.");
+            fMsg.Warn("This is a severe error. Please restart fadctrl.");
+            return true;
+        }
+
+        // In some circumstances, I do not understand yet (but I guess it can happen
+        // when the shared objects are re-compiled while the program is not
+        // re-started), it can happen that the returned value is wrong by one day.
+        // So this is just another check to avoid problems.
+        const uint32_t night_test = Time(now-boost::posix_time::seconds(1)).NightAsInt();
+        if (night_test != night)
+            return true;
+
+        // And another check. Let's read the clock again.
+        // In both cases a false condition is no error and can happen. But if it happens,
+        // the bahaviour will change a fraction of a second later and the conditon
+        // will be true. No run should be taken just around that moment and if one
+        // is taken, then the date doesn't matter.
+        if (Time().NightAsInt() != night)
+            return true;
+
+        if (night<fNightAsInt)
+        {
+            fMsg.Warn("New night "+to_string(night)+" ["+now.GetAsStr()+"] before current night "+to_string(night)+"... keeping old one.");
+            fMsg.Warn("Please check the system clock.");
+            return true;
+        }
+
+        // Check for run numbers
+        fRunNumber = 1000;
+
+        while (--fRunNumber>0)
+        {
+            const string name = DataProcessorImp::FormFileName(fPath, night, fRunNumber, "");
+
+            if (access((name+"bin").c_str(), F_OK) == 0)
+                break;
+            if (access((name+"fits").c_str(), F_OK) == 0)
+                break;
+            if (access((name+"fits.fz").c_str(), F_OK) == 0)
+                break;
+            if (access((name+"fits.gz").c_str(), F_OK) == 0)
+                break;
+            if (access((name+"drs.fits").c_str(), F_OK) == 0)
+                break;
+        }
+
+        // This is now the first file which does not exist
+        fRunNumber++;
+        fLastOpened = 0;
+
+        // Check if we have exceeded the maximum
+        if (fRunNumber==1000)
+        {
+            fMsg.Error("You have a file with run-number 1000 in "+fPath+" ["+to_string(night)+"]");
+            return false;
+        }
+
+        ostringstream str;
+        if (fNightAsInt==0)
+            str << "First night...";
+        else
+            str << "Night has changed from " << fNightAsInt << " [" << now << "]... ";
+        str << " next run-number is " << night << "-" << setfill('0') << setw(3) << fRunNumber << " [" << (fPath.empty()?".":fPath) << "]";
+        fMsg.Message(str);
+
+        fNightAsInt = night;
+
+        return true;
+    }
+
+public:
+    EventBuilderWrapper(MessageImp &imp) : fMsg(imp),
+        fFileFormat(FAD::kNone), /*fMaxRun(0),*/ fLastOpened(0), fLastClosed(0),
+        fDimWriteStats  ("FAD_CONTROL", imp),
+        fDimRuns        ("FAD_CONTROL/RUNS",               "I:2;C",
+                                                           "Run files statistics"
+                                                           "|stats[int]:last opened or closed run"
+                                                           "|file[string]:filename of last opened file"),
+        fDimEvents      ("FAD_CONTROL/EVENTS",             "I:4",
+                                                           "Event counts"
+                                                           "|evtsCount[int]:Num evts cur. run, total (all run), evt ID, trig. Num"),
+        fDimTrigger     ("FAD_CONTROL/TRIGGER_COUNTER",    "I:1;I:1;I:1;I:1;I:1;I:1;I:1;I:1",
+                                                           "Trigger counter"
+                                                           "|N_trg[uint32]:Number of physics triggers"
+                                                           "|N_ped[uint32]:Number of pure pedestal triggers"
+                                                           "|N_lpe[uint32]:Number of external light pulser triggers"
+                                                           "|N_tim[uint32]:Number of time calibration triggers"
+                                                           "|N_lpi[uint32]:Number of internal light pulser triggers"
+                                                           "|N_ext1[uint32]:Number of external triggers at input ext1"
+                                                           "|N_ext2[uint32]:Number of external triggers at input ext2"
+                                                           "|N_misc[uint32]:Number of all other triggers"),
+        fDimRawData     ("FAD_CONTROL/RAW_DATA",           "S:1;S:1;I:1;I:1;S:1;I:1;I:2;I:40;S:1440;S:160;F",
+                                                           "|roi[uint16]:number of samples per pixel"
+                                                           "|roi_tm[uint16]:number of samples per time-marker channel"
+                                                           "|num_fad[uint32]:event number from FADs"
+                                                           "|num_ftm[uint32]:trigger number from FTM"
+                                                           "|type[uint16]:trigger type from FTM"
+                                                           "|num_boards[uint32]:number of active boards"
+                                                           "|time[uint32]:PC time as unix time stamp"
+                                                           "|time_board[uint32]:Time stamp of FAD boards"
+                                                           "|start_pix[int16]:start sample of pixels"
+                                                           "|start_tm[int16]:start sample of time marker channels"
+                                                           "|adc[int16]:adc data"),
+        fDimEventData   ("FAD_CONTROL/EVENT_DATA",         "F:1440;F:1440;F:1440;F:1440", "|avg:|rms:|max:|pos"),
+        fDimFeedbackData("FAD_CONTROL/FEEDBACK_DATA",      "F:1440", ""),
+        fDimFwVersion   ("FAD_CONTROL/FIRMWARE_VERSION",   "F:42",
+                                                           "Firmware version number of fad boards"
+                                                           "|firmware[float]:Version number of firmware, for each board. 40=min, 41=max"),
+        fDimRunNumber   ("FAD_CONTROL/RUN_NUMBER",         "I:42",
+                                                           "Run numbers coming from FAD boards"
+                                                           "|runNumbers[int]:current run number of each FAD board. 40=min, 41=max"),
+        fDimStatus      ("FAD_CONTROL/STATUS",             "S:42",
+                                                           "Status of FAD boards"
+                                                           "|status[bitpattern]:Status of each FAD board. Maybe buggy"),
+        fDimDNA         ("FAD_CONTROL/DNA",                "X:40",
+                                                           "DNA of FAD boards"
+                                                           "|DNA[hex]:Hex identifier of each FAD board"),
+        fDimTemperature ("FAD_CONTROL/TEMPERATURE",        "S:1;F:160",
+                                                           "DRS temperatures"
+                                                           "|cnt[uint16]:Counter of averaged values"
+                                                           "|temp[deg C]:average temp of all DRS chips"),
+        fDimPrescaler   ("FAD_CONTROL/PRESCALER",          "S:42",
+                                                           "Trigger generator prescaler of fad boards"
+                                                           "|prescaler[int]:Trigger generator prescaler value, for each board"),
+        fDimRefClock    ("FAD_CONTROL/REFERENCE_CLOCK",    "S:1;F:40",
+                                                           "Reference clock of FAD boards"
+                                                           "|cnt[uint16]:Counter of averaged values"
+                                                           "|clk[Hz]:Averaged clock of ref clocks of FAD boards"),
+        fDimRoi         ("FAD_CONTROL/REGION_OF_INTEREST", "S:2",  "roi:|roi_rm:"),
+        fDimDac         ("FAD_CONTROL/DAC",                "S:336",
+                                                           "DAC settings of each FAD board"
+                                                           "|DAC[int]:DAC counts, sequentially DAC 0 board 0, 0/1, 0/2... (plus min max)"),
+        fDimDrsRuns     ("FAD_CONTROL/DRS_RUNS",           "I:1;I:3;I:1",
+                                                           "|roi:Region of interest of secondary baseline"
+                                                           "|run:Run numbers of DRS runs (0=none)"
+                                                           "|night:Night as int of the first run (0 if none)"),
+        fDimDrsCalibration("FAD_CONTROL/DRS_CALIBRATION",  "I:1;I:3;F:1474560;F:1474560;F:1474560;F:1474560;F:1474560;F:1474560;F:163840;F:163840",
+                                                           "|roi:Region of interest of secondary baseline"
+                                                           "|run:Run numbers of DRS runs (0=none)"),
+        fDimStatistics1 ("FAD_CONTROL/STATISTICS1",        "I:5;X:3;I:1;I:2;C:40;I:40;I:40",
+                                                           "Event Builder status for GUI display"
+                                                           "|bufferInfo[int]:Events in buffer, incomp., comp., write, proc., tot."
+                                                           "|memInfo[int]:total mem allocated, used mem, max memory"
+                                                           "|deltaT[ms]:Time in ms for rates"
+                                                           "|rateNew[int]:Number of new start events received"
+                                                           "|numConn[int]:Number of connections per board"
+                                                           "|rateBytes[int]:Bytes read during last cylce"
+                                                           "|relBytes[int]:Relative number of total bytes received (received - released)"),
+        fDimFileFormat("FAD_CONTROL/FILE_FORMAT",          "S:1", "|format[int]:Current file format"),
+        fDimIncomplete("FAD_CONTROL/INCOMPLETE",           "X:1", "|incomplete[bits]:bit_index=c*10+b. board b(0..3) in crate c(0..9)"),
+        // It is important to instantiate them after the DimServices
+        fQueueStatistics1(std::bind(&EventBuilderWrapper::UpdateDimStatistics1, this, placeholders::_1)),
+        fQueueProcHeader( std::bind(&EventBuilderWrapper::procHeader,           this, placeholders::_1)),
+        fQueueEvents(     std::bind(&EventBuilderWrapper::UpdateDimEvents,      this, placeholders::_1)),
+        fQueueTrigger(    std::bind(&EventBuilderWrapper::UpdateDimTrigger,     this, placeholders::_1)),
+        fQueueRoi(        std::bind(&EventBuilderWrapper::UpdateDimRoi,         this, placeholders::_1)),
+        fQueueRawData(    std::bind(&EventBuilderWrapper::UpdateDimRawData,     this, placeholders::_1)),
+        fQueueEventData(  std::bind(&EventBuilderWrapper::UpdateDimEventData,   this, placeholders::_1)),
+        fQueueTempRefClk( std::bind(&EventBuilderWrapper::UpdateDimTempRefClk,  this, placeholders::_1)),
+        fNightAsInt(0), fRunInProgress(-1),
+        fMaxEvent(make_pair(-FLT_MAX, array<float,1440*4>()))
+    {
+        if (This)
+            throw logic_error("EventBuilderWrapper cannot be instantiated twice.");
+
+        This = this;
+
+        fVecRoi.fill(0);
+
+        memset(fNumEvts.data(), 0, sizeof(fNumEvts));
+        fDimEvents.Update(fNumEvts);
+
+        for (size_t i=0; i<40; i++)
+            ConnectSlot(i, tcp::endpoint());
+    }
+
+    virtual ~EventBuilderWrapper()
+    {
+        Abort();
+
+        // FIXME: Used timed_join and abort afterwards
+        //        What's the maximum time the eb need to abort?
+        fThreadMain.join();
+    }
+
+    map<uint32_t, FAD::RunDescription> fExpectedRuns;
+
+    mutex mtx_newrun;
+
+    uint32_t StartNewRun(int64_t maxtime, int64_t maxevt, const pair<string, FAD::Configuration> &ref)
+    {
+        if (maxtime<=0 || maxtime>24*60*60)
+            maxtime = 24*60*60;
+        if (maxevt<=0 || maxevt>INT32_MAX)
+            maxevt  = INT32_MAX;
+
+        if (!InitRunNumber())
+            return 0;
+
+        const FAD::RunDescription descr =
+        {
+            uint32_t(maxtime),
+            uint32_t(maxevt),
+            fNightAsInt,
+            ref.first,
+            ref.second,
+        };
+
+        const lock_guard<mutex> lock(mtx_newrun);
+        fExpectedRuns[fRunNumber] = descr;
+        return fRunNumber++;
+    }
+
+    bool IsThreadRunning()
+    {
+        if (fThreadMain.get_id()==boost::this_thread::get_id())
+            return true;
+        return !fThreadMain.timed_join(boost::posix_time::microseconds(0));
+    }
+
+    void SetMaxMemory(unsigned int mb) const
+    {
+        g_maxMem = size_t(mb)*1000000;
+    }
+    void SetEventTimeout(uint16_t to) const
+    {
+        g_evtTimeout = to;
+    }
+
+    void StartThread(const vector<tcp::endpoint> &addr)
+    {
+        if (IsThreadRunning())
+        {
+            fMsg.Warn("Start - EventBuilder still running");
+            return;
+        }
+
+        //fLastMessage.clear();
+
+        for (size_t i=0; i<40; i++)
+            ConnectSlot(i, addr[i]);
+
+        fMsg.Message("Starting EventBuilder thread");
+
+        fThreadMain = boost::thread(StartEvtBuild);
+    }
+
+    void ConnectSlot(unsigned int i, const tcp::endpoint &addr)
+    {
+        if (i>39)
+            return;
+
+        fRunInProgress = -1;
+
+        if (addr==tcp::endpoint())
+        {
+            // In this order
+            g_port[i].sockDef = 0;
+
+            fDimIncomplete.setQuality(0);
+            fDimIncomplete.Update(uint64_t(0));
+            return;
+        }
+
+        struct sockaddr_in sockaddr; //IP for each socket
+        sockaddr.sin_family      = AF_INET;
+        sockaddr.sin_addr.s_addr = htonl(addr.address().to_v4().to_ulong());
+        sockaddr.sin_port        = htons(addr.port());
+        memcpy(&g_port[i].sockAddr, &sockaddr, sizeof(struct sockaddr_in));
+
+        // In this order
+        g_port[i].sockDef = 1;
+
+        fDimIncomplete.setQuality(0);
+        fDimIncomplete.Update(uint64_t(0));
+    }
+
+    void IgnoreSlot(unsigned int i)
+    {
+        if (i>39)
+            return;
+
+        if (g_port[i].sockAddr.sin_port==0)
+            return;
+
+        g_port[i].sockDef = -1;
+    }
+
+
+    void Abort()
+    {
+        fMsg.Message("Signal abort to EventBuilder thread...");
+        g_reset = 2;
+    }
+
+    void ResetThread(bool soft)
+    {
+        fMsg.Message("Signal reset to EventBuilder thread...");
+        g_reset = soft ? 101 : 102;
+    }
+
+    void Exit()
+    {
+        fMsg.Message("Signal exit to EventBuilder thread...");
+        g_reset = 1;
+    }
+
+    bool IsConnected(int i) const     { return gi_NumConnect[i]==1; }
+    bool IsConnecting(int i) const    { return gi_NumConnect[i]==0 && g_port[i].sockDef!=0; }
+    bool IsDisconnected(int i) const  { return gi_NumConnect[i]==0 && g_port[i].sockDef==0; }
+    bool IsRunInProgress() const { return fRunInProgress>=0; }
+
+    void SetIgnore(int i, bool b) const { if (g_port[i].sockDef!=0) g_port[i].sockDef=b?-1:1; }
+    bool IsIgnored(int i) const { return g_port[i].sockDef==-1; }
+
+    void SetOutputFormat(FAD::FileFormat_t f)
+    {
+        const bool changed = f!=fFileFormat;
+
+        fFileFormat = f;
+        fDimFileFormat.Update(uint16_t(f));
+
+        string msg = "File format set to: ";
+        switch (f)
+	{
+        case FAD::kNone:    msg += "kNone.";   break;
+        case FAD::kDebug:   msg += "kDebug.";  break;
+        case FAD::kFits:    msg += "kFits.";   break;
+        case FAD::kZFits:   msg += "kZFits.";  break;
+        case FAD::kCfitsio: msg += "kCfitsio"; break;
+        case FAD::kRaw:     msg += "kRaw";     break;
+        case FAD::kCalib:
+            DataCalib::Restart();
+            DataCalib::Update(fDimDrsCalibration, fDimDrsRuns);
+            fMsg.Message("Resetted DRS calibration.");
+            return;
+        }
+
+        if (changed)
+            fMsg.Message(msg);
+    }
+
+    virtual int ResetSecondaryDrsBaseline()
+    {
+        if (DataCalib::ResetTrgOff(fDimDrsCalibration, fDimDrsRuns))
+        {
+            fFileFormat = FAD::kCalib;
+            fDimFileFormat.Update(uint16_t(fFileFormat));
+            fMsg.Message("Resetted DRS calibration for secondary baseline.");
+        }
+        else
+            fMsg.Warn("Could not reset DRS calibration of secondary baseline.");
+
+        return 0;
+    }
+
+    void LoadDrsCalibration(const char *fname)
+    {
+        if (!DataCalib::ReadFits(fname, fMsg))
+            return;
+
+        fMsg.Info("Successfully loaded DRS calibration from "+string(fname));
+        DataCalib::Update(fDimDrsCalibration, fDimDrsRuns);
+    }
+
+    virtual int CloseOpenFiles() { CloseRunFile(); fRunInProgress = -1; return 0; }
+
+
+    // -------------- Mapped event builder callbacks ------------------
+
+    void UpdateRuns(const string &fname="")
+    {
+        uint32_t values[2] =
+        {
+            fLastOpened,
+            fLastClosed
+        };
+
+        vector<char> data(sizeof(values)+fname.size()+1);
+        memcpy(data.data(), values, sizeof(values));
+        strcpy(data.data()+sizeof(values), fname.c_str());
+        fDimRuns.setQuality((bool)fFile);
+        fDimRuns.Update(data);
+
+        if (!fname.empty())
+            fDimWriteStats.FileOpened(fname);
+    }
+
+    shared_ptr<DataProcessorImp> fFile;
+
+    bool UpdateDimEvents(const pair<Time,array<uint32_t,4>> &stat)
+    {
+        fDimEvents.setData(stat.second.data(), sizeof(uint32_t)*4);
+        fDimEvents.Update(stat.first);
+        return true;
+    }
+
+    bool UpdateDimTrigger(const tuple<Time,char,array<uint32_t,8>> &stat)
+    {
+        fDimTrigger.setQuality(get<1>(stat));
+        fDimTrigger.setData(get<2>(stat).data(), sizeof(uint32_t)*8);
+        fDimTrigger.Update(get<0>(stat));
+        return true;
+    }
+
+    bool runOpen(const EVT_CTRL2 &evt)
+    {
+        const uint32_t night = evt.runCtrl->night;
+        const uint32_t runid = evt.runNum>0 ? evt.runNum : time(NULL);
+
+        // If there is still an open file: close it
+        if (fFile)
+            runClose(evt);
+
+        // Keep a copy of the currently valid drs calibration
+        // and associate it to the run control structure
+        evt.runCtrl->calib = make_shared<DrsCalibration>(DataCalib::GetCalibration());
+
+        // Crate the file
+        DataProcessorImp *file = 0;
+        switch (fFileFormat)
+        {
+        case FAD::kNone:    file = new DataDump(fPath, night, runid,  fMsg); break;
+        case FAD::kDebug:   file = new DataDebug(fPath, night, runid, fMsg); break;
+        case FAD::kCfitsio: file = new DataWriteFits(fPath, night, runid,  fMsg); break;
+        case FAD::kFits:    file = new DataWriteFits2(fPath, night, runid, fMsg); break;
+        case FAD::kZFits:   file = new DataWriteFits2(fPath, night, runid, *evt.runCtrl->calib, fMsg); break;
+	case FAD::kRaw:     file = new DataWriteRaw(fPath, night, runid, fMsg); break;
+	case FAD::kCalib:   file = new DataCalib(fPath, night, runid, *evt.runCtrl->calib, fDimDrsCalibration, fDimDrsRuns, fMsg); break;
+        }
+
+        try
+        {
+            // Try to open the file
+            FAD::RunDescription desc;
+            desc.maxevt  = evt.runCtrl->maxEvt;
+            desc.maxtime = evt.runCtrl->closeTime - evt.runCtrl->openTime;
+            desc.name    = evt.runCtrl->runType;
+
+            if (!file->Open(evt, desc))
+                return false;
+        }
+        catch (const exception &e)
+        {
+            fMsg.Error("Exception trying to open file: "+string(e.what()));
+            return false;
+        }
+
+        fLastOpened = runid;
+
+        // Signal that a file is open
+        fFile = shared_ptr<DataProcessorImp>(file);
+
+        // Now do all the calls which potentially block (dim)
+
+        // Time for update runs before time for update events
+        UpdateRuns(file->GetFileName());
+        fNumEvts[kEventId]   = 0;
+        fNumEvts[kTriggerId] = 0;
+        fNumEvts[kCurrent]   = 0;
+
+        const Time time;
+
+        fQueueEvents.emplace(time, fNumEvts);
+        fQueueTrigger.emplace(time, 'o', evt.triggerCounter);
+
+        ostringstream str;
+        str << "Opened: " << file->GetFileName() << " (" << file->GetRunId() << ")";
+        fMsg.Info(str);
+
+        return true;
+    }
+
+    bool runWrite(const EVT_CTRL2 &e)
+    {
+        /*
+        const size_t size = sizeof(EVENT)+1440*(evt.Roi+evt.RoiTM)*2;
+        vector evt(e.fEvent, e.fEvent+size);
+
+        const EVENT &evt = *reinterpret_cast<EVENT*>(evt.data());
+
+        int16_t *val = evt.Adc_Data;
+        const int16_t *off = e.runCtrl->zcalib.data();
+        for (const int16_t *start=evt.StartPix; start<evt.StartPix+1440; val+=1024, off+=1024, start++)
+        {
+            if (*start<0)
+                continue;
+
+            for (size_t i=0; i<roi; i++)
+                val[i] -= offset[(*start+i)%1024];
+        }*/
+
+        if (!fFile->WriteEvt(e))
+            return false;
+
+        //const EVENT &evt = *e.fEvent;
+
+        fNumEvts[kCurrent]++;
+        fNumEvts[kEventId]   = e.evNum;//evt.EventNum;
+        fNumEvts[kTriggerId] = e.trgNum;//evt.TriggerNum;
+        fNumEvts[kTotal]++;
+
+        static Time oldt(boost::date_time::neg_infin);
+        Time newt;
+        if (newt>oldt+boost::posix_time::seconds(1))
+        {
+            fQueueEvents.emplace(newt, fNumEvts);
+            fQueueTrigger.emplace(newt, 'w', e.triggerCounter);
+            oldt = newt;
+        }
+
+        return true;
+    }
+
+    void runClose(const EVT_CTRL2 &evt)
+    {
+        if (!fFile)
+            return;
+
+        // It can happen that runFinished was never called
+        // (e.g. runWrite failed)
+        if (fRunInProgress==fFile->GetRunId())
+            fRunInProgress = -1;
+
+        // Close the file
+        const bool rc = fFile->Close(evt);
+
+        fLastClosed = fFile->GetRunId();
+
+        ostringstream str;
+        str << "Closed: " << fFile->GetFileName() << " (" << fFile->GetRunId() << ")";
+        if (!rc)
+            str << "... failed!";
+
+        // Signal that the file is closed
+
+        fFile.reset();
+
+        // Now do all the calls which can potentially block (dim)
+
+        CloseRun(fLastClosed); 
+
+        // Time for update events before time for update runs
+        const Time time;
+
+        fQueueEvents.emplace(time, fNumEvts);
+        fQueueTrigger.emplace(time, 'c', evt.triggerCounter);
+
+        UpdateRuns();
+
+        // Do the potentially blocking call after all others
+        rc ? fMsg.Info(str) : fMsg.Error(str);
+
+        // If a Drs Calibration has just been finished, all following events
+        // should also be processed with this calibration.
+        // Note that this is a generally dangerous operation. Here, the previous
+        // DRS calibration shared_ptr gets freed and if it is the last in use,
+        // the memory will vanish. If another thread accesses that pointer,
+        // it _must_ make a copy of the shared_ptr first to ensure that
+        // the memory will stay in scope until the end of its operation.
+        const DrsCalibration &cal = DataCalib::GetCalibration();
+
+        RUN_CTRL2 &run = *evt.runCtrl;
+        if (!run.calib || run.calib->fStep != cal.fStep || run.calib->fRoi!=cal.fRoi)
+            run.calib = make_shared<DrsCalibration>(cal);
+    }
+
+    virtual void CloseRun(uint32_t /*runid*/) { }
+
+    bool UpdateDimRoi(const pair<Time, array<uint16_t,2>> &roi)
+    {
+        fDimRoi.setData(roi.second.data(), sizeof(uint16_t)*2);
+        fDimRoi.Update(roi.first);
+        return true;
+    }
+
+    bool UpdateDimTempRefClk(const tuple<Time, array<uint32_t,40>, array<int16_t,160>> &dat)
+    {
+        const auto delay = boost::posix_time::seconds(5);
+
+        const Time &tm = get<0>(dat);
+
+        const array<uint32_t,40> &clk = get<1>(dat);
+        const array<int16_t,160> &tmp = get<2>(dat);
+
+        // --------------- RefClock ---------------
+
+        // history, add current data to history
+        static list<pair<Time,array<uint32_t,40>>> listclk;
+        listclk.emplace_back(tm, clk);
+
+        // --------------- Temperatures ---------------
+
+        // history, add current data to history
+        static list<pair<Time,array<int16_t,160>>> listtmp;
+        listtmp.emplace_back(tm, tmp);
+
+        // ========== Update dim services once a second =========
+
+        static Time oldt(boost::date_time::neg_infin);
+        Time newt;
+
+        if (newt<oldt+delay)
+            return true;
+
+        oldt = newt;
+
+        // --------------- RefClock ---------------
+
+        // remove expired data from history
+        while (1)
+        {
+            auto it=listclk.begin();
+            if (it==listclk.end() || it->first+delay>tm)
+                break;
+            listclk.pop_front();
+        }
+
+        // Structure for dim service
+        struct Clock
+        {
+            uint16_t num;
+            float val[40];
+            Clock() { memset(this, 0, sizeof(Clock)); }
+        } __attribute__((__packed__));
+
+        // Calculate average and fll structure
+        vector<uint16_t> clknum(40);
+
+        Clock avgclk;
+        avgclk.num = listclk.size();
+        for (auto it=listclk.begin(); it!=listclk.end(); it++)
+            for (int i=0; i<40; i++)
+                if (it->second[i]!=UINT32_MAX)
+                {
+                    avgclk.val[i] += it->second[i];
+                    clknum[i]++;
+                }
+        for (int i=0; i<40; i++)
+            avgclk.val[i] *= 2.048/clknum[i];
+
+        // Update dim service
+        fDimRefClock.setData(avgclk);
+        fDimRefClock.Update(tm);
+
+        listclk.clear();
+
+        // --------------- Temperatures ---------------
+
+        // remove expired data from history
+        while (1)
+        {
+            auto it=listtmp.begin();
+            if (it==listtmp.end() || it->first+delay>tm)
+                break;
+            listtmp.pop_front();
+        }
+
+        // Structure for dim service
+        struct Temp
+        {
+            uint16_t num;
+            float val[160];
+            Temp() { memset(this, 0, sizeof(Temp)); }
+        } __attribute__((__packed__));
+
+        // Calculate average and fll structure
+        vector<uint32_t> tmpnum(160);
+
+        Temp avgtmp;
+        avgtmp.num = listtmp.size();
+        for (auto it=listtmp.begin(); it!=listtmp.end(); it++)
+            for (int i=0; i<160; i++)
+                if (it->second[i]!=INT16_MIN)
+                {
+                    avgtmp.val[i] += it->second[i];
+                    tmpnum[i]++;
+                }
+        for (int i=0; i<160; i++)
+            avgtmp.val[i] /= tmpnum[i]*16;
+
+        // Update dim service
+        fDimTemperature.setData(avgtmp);
+        fDimTemperature.Update(tm);
+
+        listtmp.clear();
+
+        return true;
+    }
+
+    bool eventCheck(const EVT_CTRL2 &evt)
+    {
+        const EVENT *event = evt.fEvent;
+
+        const Time tm(evt.time);
+
+	const array<uint16_t,2> roi = {{ event->Roi, event->RoiTM }};
+
+	if (roi!=fVecRoi)
+        {
+            fQueueRoi.emplace(tm, roi);
+	    fVecRoi = roi;
+	}
+
+        const FAD::EventHeader *beg = reinterpret_cast<const FAD::EventHeader*>(evt.FADhead);
+        const FAD::EventHeader *end = reinterpret_cast<const FAD::EventHeader*>(evt.FADhead)+40;
+
+        // FIMXE: Compare with target configuration
+
+        // Copy data to array
+        array<uint32_t,40> clk;
+        array<int16_t,160> tmp;
+
+        for (int i=0; i<40; i++)
+            clk[i] = UINT32_MAX;
+
+        for (int i=0; i<160; i++)
+            tmp[i] = INT16_MIN;
+
+        //fill(clk.data(), clk.data()+ 40, UINT32_MAX);
+        //fill(tmp.data(), tmp.data()+160,  INT16_MIN);
+
+        for (const FAD::EventHeader *ptr=beg; ptr!=end; ptr++)
+        {
+            // FIXME: Compare with expectations!!!
+            if (ptr->fStartDelimiter==0)
+            {
+                if (ptr==beg)
+                    beg++;
+                continue;
+            }
+
+            clk[ptr->Id()] = ptr->fFreqRefClock;
+            for (int i=0; i<4; i++)
+                tmp[ptr->Id()*4+i] = ptr->fTempDrs[i];
+
+            if (beg->fStatus != ptr->fStatus)
+            {
+                fMsg.Error("Inconsistency in FAD status detected.... closing run.");
+                return false;
+            }
+
+            if (beg->fRunNumber != ptr->fRunNumber)
+            {
+                fMsg.Error("Inconsistent run number detected.... closing run.");
+                return false;
+            }
+
+            /*
+            if (beg->fVersion != ptr->fVersion)
+            {
+                Error("Inconsist firmware version detected.... closing run.");
+                CloseRunFile(runNr, 0, 0);
+                break;
+                }
+                */
+            if (beg->fEventCounter != ptr->fEventCounter)
+            {
+                fMsg.Error("Inconsistent FAD event number detected.... closing run.");
+                return false;
+            }
+
+            if (beg->fTriggerCounter != ptr->fTriggerCounter)
+            {
+                fMsg.Error("Inconsistent FTM trigger number detected.... closing run.");
+                return false;
+            }
+
+            // FIXME: Check with first event!
+            if (beg->fAdcClockPhaseShift != ptr->fAdcClockPhaseShift)
+            {
+                fMsg.Error("Inconsistent phase shift detected.... closing run.");
+                return false;
+            }
+
+            // FIXME: Check with first event!
+            if (memcmp(beg->fDac, ptr->fDac, sizeof(beg->fDac)))
+            {
+                fMsg.Error("Inconsistent DAC values detected.... closing run.");
+                return false;
+            }
+
+            if (beg->fTriggerType != ptr->fTriggerType)
+            {
+                fMsg.Error("Inconsistent trigger type detected.... closing run.");
+                return false;
+            }
+        }
+
+        // check REFCLK_frequency
+        // check consistency with command configuration
+        // how to log errors?
+        // need gotNewRun/closedRun to know it is finished
+
+        fQueueTempRefClk.emplace(tm, clk, tmp);
+
+        if (evt.runCtrl->fileStat == kFileClosed)
+        {
+            static Time oldt(boost::date_time::neg_infin);
+            if (tm>oldt+boost::posix_time::seconds(1))
+            {
+                fQueueTrigger.emplace(tm, 0, evt.runCtrl->triggerCounter);
+                oldt = tm;
+            }
+        }
+
+        return true;
+    }
+
+    Time fLastDimRawData;
+    Time fLastDimEventData;
+
+    bool UpdateDimRawData(const vector<char> &v)
+    {
+        const EVENT *evt = reinterpret_cast<const EVENT*>(v.data());
+
+        fDimRawData.setData(v);
+        fDimRawData.setQuality(evt->TriggerType);
+        fDimRawData.Update(Time(evt->PCTime, evt->PCUsec));
+
+        return true;
+    }
+
+    bool UpdateDimEventData(const tuple<Time,uint32_t,array<float, 1440*4>> &tup)
+    {
+        fDimEventData.setQuality(get<1>(tup));
+        fDimEventData.setData(get<2>(tup));
+        fDimEventData.Update(get<0>(tup));
+
+        return true;
+    }
+
+    void applyCalib(const EVT_CTRL2 &evt, const size_t &size)
+    {
+        const EVENT   *event = evt.fEvent;
+        const int16_t *start = event->StartPix;
+
+        // Get the reference to the run associated information
+        RUN_CTRL2 &run = *evt.runCtrl;
+
+        if (size==1) // If there is more than one event waiting (including this one), throw them away
+        {
+            Time now;
+
+            // ------------------- Copy event data to new memory --------------------
+            // (to make it thread safe; a static buffer might improve memory handling)
+            const uint16_t roi = event->Roi;
+
+            // ------------------- Apply full DRS calibration ------------------------
+            // (Is that necessray, or would a simple offset correct do well already?)
+
+            // This is a very important step. Making a copy of the shared pointer ensures
+            // that another thread (here: runClose) can set a new shared_ptr with new
+            // data without this thread being affected. If we just did run.calib->Apply
+            // the shared_pointer in use here might vanash during the processing, the
+            // memory is freed and we access invalid memory. It is not important
+            // which memory we acces (the old or the new one) because it is just for
+            // display purpose anyway.
+            const shared_ptr<DrsCalibration> cal = run.calib;
+
+            // There seems to be a problem using std::array... maybe the size is too big?
+            // array<float, (1440+160)*1024> vec2;
+            vector<float> vec((1440+160)*roi);
+            cal->Apply(vec.data(), event->Adc_Data, start, roi);
+
+            // ------------------- Appy DRS-step correction --------------------------
+            for (auto it=run.prevStart.begin(); it!=run.prevStart.end(); it++)
+            {
+                DrsCalibrate::CorrectStep(vec.data(), 1440, roi, it->data(), start, roi+10);
+                DrsCalibrate::CorrectStep(vec.data(), 1440, roi, it->data(), start, 3);
+            }
+
+            // ------------------------- Remove spikes --------------------------------
+            DrsCalibrate::RemoveSpikes4(vec.data(), roi);
+
+            // -------------- Update raw data dim sevice (VERY SLOW) -----------------
+            if (fQueueRawData.empty() && now>fLastDimRawData+boost::posix_time::seconds(5))
+            {
+                vector<char> data1(sizeof(EVENT)+vec.size()*sizeof(float));
+                memcpy(data1.data(), event, sizeof(EVENT));
+                memcpy(data1.data()+sizeof(EVENT), vec.data(), vec.size()*sizeof(float));
+                fQueueRawData.emplace(data1);
+
+                fLastDimRawData = now;
+            }
+
+            // ------------------------- Basic statistics -----------------------------
+            DrsCalibrate::SlidingAverage(vec.data(), roi, 10);
+
+            // If this is a cosmic event
+            array<float, 1440*4> stats; // Mean, RMS, Max, Pos
+            const float max = DrsCalibrate::GetPixelStats(stats.data(), vec.data(), roi, 15, 5);
+            if (evt.trgTyp==0 && max>fMaxEvent.first)
+                fMaxEvent = make_pair(max, stats);
+
+            // ------------------ Update dim service (statistics) ---------------------
+
+            if (fQueueEventData.empty() && now>fLastDimEventData+boost::posix_time::milliseconds(4999))
+            {
+                fQueueEventData.emplace(evt.time, evt.trgTyp, evt.trgTyp==0 ? fMaxEvent.second : stats);
+                if (evt.trgTyp==0)
+                    fMaxEvent.first = -FLT_MAX;
+
+                fLastDimEventData = now;
+            }
+
+            // === SendFeedbackData(PEVNT_HEADER *fadhd, EVENT *event)
+            //
+            //    if (!ptr->HasTriggerLPext() && !ptr->HasTriggerLPint())
+            //        return;
+            //
+            //    vector<float> data2(1440); // Mean, RMS, Max, Pos, first, last
+            //    DrsCalibrate::GetPixelMax(data2.data(), data.data(), event->Roi, 0, event->Roi-1);
+            //
+            //    fDimFeedbackData.Update(data2);
+        }
+
+        // Keep the start cells of the last five events for further corrections
+        // As a performance improvement we could also just store the
+        // pointers to the last five events...
+        // What if a new run is started? Do we mind?
+        auto &l = run.prevStart; // History for start cells of previous events (for step calibration)
+
+        if (l.size()<5)
+            l.emplace_front();
+        else
+        {
+            auto it = l.end();
+            l.splice(l.begin(), l, --it);
+        }
+
+        memcpy(l.front().data(), start, 1440*sizeof(int16_t));
+    }
+
+    bool IsRunWaiting()
+    {
+        const lock_guard<mutex> lock(mtx_newrun);
+        return fExpectedRuns.find(fRunNumber-1)!=fExpectedRuns.end();
+    }
+
+    uint32_t GetRunNumber() const
+    {
+        return fRunNumber;
+    }
+
+    bool IncreaseRunNumber(uint32_t run)
+    {
+        if (!InitRunNumber())
+            return false;
+
+        if (run<fRunNumber)
+        {
+            ostringstream msg;
+            msg <<
+                "Run number " << run << " smaller than next available "
+                "run number " << fRunNumber << " in " << fPath << " [" << fNightAsInt << "]";
+            fMsg.Error(msg);
+            return false;
+        }
+
+        fRunNumber = run;
+
+        return true;
+    }
+
+    void gotNewRun(RUN_CTRL2 &run)
+    {
+        // This is to secure iteration over fExpectedRuns
+        const lock_guard<mutex> lock(mtx_newrun);
+
+        map<uint32_t,FAD::RunDescription>::iterator it = fExpectedRuns.begin();
+        while (it!=fExpectedRuns.end())
+        {
+            if (it->first<run.runId)
+            {
+                ostringstream str;
+                str << "runOpen - Missed run " << it->first << ".";
+                fMsg.Info(str);
+
+                // Increase the iterator first, it becomes invalid with the next call
+                const auto is = it++;
+                fExpectedRuns.erase(is);
+                continue;
+            }
+
+            if (it->first==run.runId)
+                break;
+
+            it++;
+        }
+
+        if (it==fExpectedRuns.end())
+        {
+            ostringstream str;
+            str << "runOpen - Run " << run.runId << " wasn't expected (maybe manual triggers)";
+            fMsg.Warn(str);
+
+            // This is not ideal, but the best we can do
+            run.night = fNightAsInt;
+
+            return;
+        }
+
+        const FAD::RunDescription &conf = it->second;
+
+        run.runType   = conf.name;
+        run.maxEvt    = conf.maxevt;
+        run.closeTime = conf.maxtime + run.openTime;
+        run.night     = conf.night;
+
+        fExpectedRuns.erase(it);
+
+        // Now signal the fadctrl (configuration process that a run is in progress)
+        // Maybe this could be done earlier, but we are talking about a
+        // negligible time scale here.
+        fRunInProgress = run.runId;
+    }
+
+    void runFinished()
+    {
+        // This is called when the last event of a run (run time exceeded or
+        // max number of events exceeded) has been received.
+        fRunInProgress = -1;
+    }
+
+    //map<boost::thread::id, string> fLastMessage;
+
+    void factOut(int severity, const char *message)
+    {
+        ostringstream str;
+        str << "EventBuilder: " << message;
+
+        /*
+        string &old = fLastMessage[boost::this_thread::get_id()];
+
+        if (str.str()==old)
+            return;
+        old = str.str();
+        */
+
+        fMsg.Update(str, severity);
+    }
+
+/*
+    void factStat(int64_t *stat, int len)
+    {
+        if (len!=7)
+        {
+            fMsg.Warn("factStat received unknown number of values.");
+            return;
+        }
+
+        vector<int64_t> data(1, g_maxMem);
+        data.insert(data.end(), stat, stat+len);
+
+        static vector<int64_t> last(8);
+        if (data==last)
+            return;
+        last = data;
+
+        fDimStatistics.Update(data);
+
+        //   len ist die Laenge des arrays.
+        //   array[4] enthaelt wieviele bytes im Buffer aktuell belegt sind; daran
+        //   kannst Du pruefen, ob die 100MB voll sind ....
+
+        ostringstream str;
+        str
+            << "Wait=" << stat[0] << " "
+            << "Skip=" << stat[1] << " "
+            << "Del="  << stat[2] << " "
+            << "Tot="  << stat[3] << " "
+            << "Mem="  << stat[4] << "/" << g_maxMem << " "
+            << "Read=" << stat[5] << " "
+            << "Conn=" << stat[6];
+
+        fMsg.Info(str);
+    }
+    */
+
+    bool UpdateDimStatistics1(const pair<Time,GUI_STAT> &stat)
+    {
+        fDimStatistics1.setData(&stat.second, sizeof(GUI_STAT));
+        fDimStatistics1.Update(stat.first);
+
+        return true;
+    }
+
+    void factStat(const GUI_STAT &stat)
+    {
+        fQueueStatistics1.emplace(Time(), stat);
+    }
+
+    void factReportIncomplete(uint64_t rep)
+    {
+        fDimIncomplete.setQuality(1);
+        fDimIncomplete.Update(rep);
+    }
+
+    array<FAD::EventHeader, 40> fVecHeader;
+
+    template<typename T, class S>
+    array<T, 42> Compare(const S *vec, const T *t)
+    {
+        const int offset = reinterpret_cast<const char *>(t) - reinterpret_cast<const char *>(vec);
+
+        const T *min = NULL;
+        const T *val = NULL;
+        const T *max = NULL;
+
+        array<T, 42> arr;
+
+        // bool rc = true;
+        for (int i=0; i<40; i++)
+        {
+            const char *base = reinterpret_cast<const char*>(vec+i);
+            const T *ref = reinterpret_cast<const T*>(base+offset);
+
+            arr[i] = *ref;
+
+            if (gi_NumConnect[i]==0)
+            {
+                arr[i] = 0;
+                continue;
+            }
+
+            if (!val)
+            {
+                min = ref;
+                val = ref;
+                max = ref;
+            }
+
+            if (*ref<*min)
+                min = ref;
+
+            if (*ref>*max)
+                max = ref;
+
+            // if (*val!=*ref)
+            //     rc = false;
+        }
+
+        arr[40] = val ? *min : 1;
+        arr[41] = val ? *max : 0;
+
+        return arr;
+    }
+
+    template<typename T>
+    array<T, 42> CompareBits(const FAD::EventHeader *h, const T *t)
+    {
+        const int offset = reinterpret_cast<const char *>(t) - reinterpret_cast<const char *>(h);
+
+        T val = 0;
+        T rc  = 0;
+
+        array<T, 42> vec;
+
+        bool first = true;
+
+        for (int i=0; i<40; i++)
+        {
+            const char *base = reinterpret_cast<const char*>(&fVecHeader[i]);
+            const T *ref = reinterpret_cast<const T*>(base+offset);
+
+            vec[i+2] = *ref;
+
+            if (gi_NumConnect[i]==0)
+            {
+                vec[i+2] = 0;
+                continue;
+            }
+
+            if (first)
+            {
+                first = false;
+                val = *ref;
+                rc = 0;
+            }
+
+            rc |= val^*ref;
+        }
+
+        vec[0] = rc;
+        vec[1] = val;
+
+        return vec;
+    }
+
+    template<typename T, size_t N>
+    void Update(DimDescribedService &svc, const array<T, N> &data, const Time &t=Time(), int n=N)
+    {
+        svc.setData(const_cast<T*>(data.data()), sizeof(T)*n);
+        svc.Update(t);
+    }
+
+    template<typename T>
+        void Print(const char *name, const pair<bool,array<T, 43>> &data)
+    {
+        cout << name << "|" << data.first << "|" << data.second[1] << "|" << data.second[0] << "<x<" << data.second[1] << ":";
+        for (int i=0; i<40;i++)
+            cout << " " << data.second[i+3];
+        cout << endl;
+    }
+
+    vector<uint> fNumConnected;
+
+    bool procHeader(const tuple<Time,bool,FAD::EventHeader> &dat)
+    {
+        const Time             &t = get<0>(dat);
+        const bool        changed = get<1>(dat);
+        const FAD::EventHeader &h = get<2>(dat);
+
+        const FAD::EventHeader old = fVecHeader[h.Id()];
+        fVecHeader[h.Id()] = h;
+
+        if (old.fVersion != h.fVersion || changed)
+        {
+            const array<uint16_t,42> ver = Compare(&fVecHeader[0], &fVecHeader[0].fVersion);
+
+            array<float,42> data;
+            for (int i=0; i<42; i++)
+            {
+                ostringstream str;
+                str << (ver[i]>>8) << '.' << (ver[i]&0xff);
+                data[i] = stof(str.str());
+            }
+            Update(fDimFwVersion, data, t);
+        }
+
+        if (old.fRunNumber != h.fRunNumber || changed)
+        {
+            const array<uint32_t,42> run = Compare(&fVecHeader[0], &fVecHeader[0].fRunNumber);
+            fDimRunNumber.setData(&run[0], 42*sizeof(uint32_t));
+            fDimRunNumber.Update(t);
+        }
+
+        if (old.fTriggerGeneratorPrescaler != h.fTriggerGeneratorPrescaler || changed)
+        {
+            const array<uint16_t,42> pre = Compare(&fVecHeader[0], &fVecHeader[0].fTriggerGeneratorPrescaler);
+            fDimPrescaler.setData(&pre[0], 42*sizeof(uint16_t));
+            fDimPrescaler.Update(t);
+        }
+
+        if (old.fDNA != h.fDNA || changed)
+        {
+            const array<uint64_t,42> dna = Compare(&fVecHeader[0], &fVecHeader[0].fDNA);
+            Update(fDimDNA, dna, t, 40);
+        }
+
+        if (old.fStatus != h.fStatus || changed)
+        {
+            const array<uint16_t,42> sts = CompareBits(&fVecHeader[0], &fVecHeader[0].fStatus);
+            Update(fDimStatus, sts, t);
+        }
+
+        if (memcmp(old.fDac, h.fDac, sizeof(h.fDac)) || changed)
+        {
+            array<uint16_t, FAD::kNumDac*42> dacs;
+
+            for (int i=0; i<FAD::kNumDac; i++)
+            {
+                const array<uint16_t, 42> dac = Compare(&fVecHeader[0], &fVecHeader[0].fDac[i]);
+                memcpy(&dacs[i*42], &dac[0], sizeof(uint16_t)*42);
+            }
+
+            Update(fDimDac, dacs, t);
+        }
+
+        return true;
+    }
+
+    void debugHead(const FAD::EventHeader &h)
+    {
+        const uint16_t id = h.Id();
+        if (id>39) 
+            return;
+
+        if (fNumConnected.size()!=40)
+	    fNumConnected.resize(40);
+
+	const vector<uint> con(gi_NumConnect, gi_NumConnect+40);
+
+	const bool changed = con!=fNumConnected || !IsThreadRunning();
+
+        fNumConnected = con;
+
+        fQueueProcHeader.emplace(Time(), changed, h);
+    }
+};
+
+EventBuilderWrapper *EventBuilderWrapper::This = 0;
+
+// ----------- Event builder callbacks implementation ---------------
+bool runOpen(const EVT_CTRL2 &evt)
+{
+    return EventBuilderWrapper::This->runOpen(evt);
+}
+
+bool runWrite(const EVT_CTRL2 &evt)
+{
+    return EventBuilderWrapper::This->runWrite(evt);
+}
+
+void runClose(const EVT_CTRL2 &evt)
+{
+    EventBuilderWrapper::This->runClose(evt);
+}
+
+bool eventCheck(const EVT_CTRL2 &evt)
+{
+    return EventBuilderWrapper::This->eventCheck(evt);
+}
+
+void gotNewRun(RUN_CTRL2 &run)
+{
+    EventBuilderWrapper::This->gotNewRun(run);
+}
+
+void runFinished()
+{
+    EventBuilderWrapper::This->runFinished();
+}
+
+void applyCalib(const EVT_CTRL2 &evt, const size_t &size)
+{
+    EventBuilderWrapper::This->applyCalib(evt, size);
+}
+
+void factOut(int severity, const char *message)
+{
+    EventBuilderWrapper::This->factOut(severity, message);
+}
+
+void factStat(const GUI_STAT &stat)
+{
+    EventBuilderWrapper::This->factStat(stat);
+}
+
+void factReportIncomplete(uint64_t rep)
+{
+    EventBuilderWrapper::This->factReportIncomplete(rep);
+}
+
+// ------
+
+void debugHead(void *buf)
+{
+    const FAD::EventHeader &h = *reinterpret_cast<FAD::EventHeader*>(buf);
+    EventBuilderWrapper::This->debugHead(h);
+}
+
+#endif
Index: branches/testFACT++branch/src/EventDim.h
===================================================================
--- branches/testFACT++branch/src/EventDim.h	(revision 18277)
+++ branches/testFACT++branch/src/EventDim.h	(revision 18277)
@@ -0,0 +1,68 @@
+// **************************************************************************
+/** @class EventDim
+
+@brief Concerete implementation of an EventImp as a DimCommand
+
+This is the implementation of an event which can be posted to a state
+machine via the DIM network.
+
+@todo
+- Add reference to DIM docu
+- improve docu
+
+*/
+// **************************************************************************
+#ifndef FACT_EventDim
+#define FACT_EventDim
+
+#include "EventImp.h"
+
+#include "dis.hxx" // DimCommand
+
+#include "DimDescriptionService.h"
+
+class EventDim : public EventImp, public DimCommand
+{
+    DimDescriptionService *fDescription;
+
+public:
+    EventDim(const std::string &name, const std::string &format, DimCommandHandler *handler)
+        : EventImp(), DimCommand(name.c_str(), format.c_str(), handler), fDescription(0)
+    {
+        // Initialize these values from DimCommand, because DimCommand
+        // does not yet do it.
+        itsData   = 0;
+        itsSize   = 0;
+
+        secs      = 0;
+        millisecs = 0;
+    }
+    ~EventDim()
+    {
+        delete fDescription;
+    }
+    void SetDescription(const std::string &str)
+    {
+        if (fDescription)
+            delete fDescription;
+        fDescription = new DimDescriptionService(GetName(), str);
+    }
+    std::string GetDescription() const { return fDescription ? fDescription->GetDescription() : ""; }
+
+    std::string GetName() const   { return const_cast<EventDim*>(this)->getName(); }
+    std::string GetFormat() const { return const_cast<EventDim*>(this)->getFormat(); }
+
+    const void *GetData() const   { return const_cast<EventDim*>(this)->getData(); }
+    size_t      GetSize() const   { return const_cast<EventDim*>(this)->getSize(); }
+
+    Time GetTime() const
+    {
+        // Must be in exactly this order!
+        const int tsec = const_cast<EventDim*>(this)->getTimestamp();
+        const int tms  = const_cast<EventDim*>(this)->getTimestampMillisecs();
+
+        return Time(tsec, tms*1000);
+    }
+};
+
+#endif
Index: branches/testFACT++branch/src/EventImp.cc
===================================================================
--- branches/testFACT++branch/src/EventImp.cc	(revision 18277)
+++ branches/testFACT++branch/src/EventImp.cc	(revision 18277)
@@ -0,0 +1,306 @@
+// **************************************************************************
+/** @class EventImp
+
+@brief A general base-class describing events issues in a state machine
+
+@section General purpose
+
+The general purpose of this class is to describe an event which can
+occur in one of our StateMachines. It provides pointers to data
+associated with the event, a target state and stores the states in which
+issuing this event is allowed. The target state might be negative to
+describe that no transition of the state is requested.
+
+Such an event canjust be a description of an event, but can also be
+an issued event which already contain data.
+
+The format can, but need not, contain the format of the data area.
+As a rule, it should follow the format also used in the DIM network.
+
+
+@section Assigning functions to an event
+
+To any event a function call can be assigned. Thanks to boost::bind there
+are various and different very powerful ways to do that. 
+
+The function assigned with AssignFunction must return int. When it is
+executed it is given a const reference of the current event as an argument,
+i.e. if you want to get such a reference in your function, you can reference
+it using the placeholder _1. (Remark: it is allowe to omit the _1 placeholder
+if no reference to the EventImp object is needed)
+
+A few examples:
+
+\code
+   int function(const EventImp &evt, int i, const char *txt) { return i; }
+
+   EventImp evt;
+   evt.AssignFunction(boost::bind(function, _1, 7, "hallo"));
+   cout << evt.Exec() << endl;
+   // 7
+\endcode
+
+When the function is executed later via ExecFunc() in will get a reference
+to the executing EventImp as its first argument (indicated by '_1'), it will
+get 7 and "hallo" as second and third argument.
+
+\code
+   int function(int i, const char *txt, const EventImp &evt) { return i; }
+
+   EventImp evt;
+   evt.AssignFunction(boost::bind(function, 7, "hallo", _1));
+   cout << evt.Exec() << endl;
+   // 7
+\endcode
+
+Is the same example than the one above, but the arguments are in a different
+order.
+
+\code
+   class A
+   {
+      int function(const EventImp &evt, int i, const char *txt)
+      {
+         cout << this << endl; return i;
+      }
+   };
+
+   A a;
+
+   EventImp evt;
+   evt.AssignFunction(boost::bind(&A::function, &a, _1, 7, "hallo"));
+   cout << evt.Exec() << endl;
+   // &a
+   // 7
+\endcode
+
+The advanatge of boost::bind is that it also works for member functions
+of classes. In this case the first argument after the function-pointer
+\b must be a pointer to a valid class-object. This can also be \em this
+if called from within a class object.
+
+Also note that everything (as usual) which is not a reference is copied
+when the bind function is invoked. If you want to distribute a reference
+instead use ref(something), like
+
+\code
+   int function(int &i)  { return i; }
+
+   int j = 5;
+   EventImp evt;
+   evt.AssignFunction(bind(function, ref(j));
+   j = 7;
+   cout << evt.Exec() << endl;
+   // 7
+\endcode
+
+Note, that you are responsible for the validity, that means: Do not
+destroy your object (eg. reference to j) while bind might still be called
+later, or a pointer to \em this.
+
+@section References
+   - <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/bind/bind.html">boost::bind (V1.45.0)</A>
+
+@todo
+   Add link to DIM format
+
+*/
+// **************************************************************************
+#include "EventImp.h"
+
+#include <sstream>
+
+#include "Time.h"
+#include "WindowLog.h"
+#include "Description.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! Copy the contents of an EventImp (fTargetState, fAllowedStates and
+//!  fFunction)
+//
+EventImp::EventImp(const EventImp &cmd) : fAllowedStates(cmd.fAllowedStates),
+    fFunction(cmd.fFunction)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! If the state is 0 or positive add it to fAllowedStates
+//!
+//! @param state
+//!     The state which should be added
+//
+void EventImp::AddAllowedState(int state)
+{
+    if (state>=0)
+        fAllowedStates.push_back(state);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Add all states in the string to fAllowedStates.
+//! 
+//! @param states
+//!    A string containing the states. They can either be separated by
+//!    whitespaces or commas, e.g. "1 2 3 4" or "1, 7, 9, 10". Note that
+//!    no real consistency check is done.
+//
+void EventImp::AddAllowedStates(const string &states)
+{
+    stringstream stream(states);
+
+    const bool sep = stream.str().find(',')==string::npos;
+
+    string buffer;
+    while (getline(stream, buffer, sep ? ' ' : ','))
+        AddAllowedState(stoi(buffer));
+}
+
+// --------------------------------------------------------------------------
+//
+//! Return whether the given state is in the list of allowed states.
+//! 
+//! @param state
+//!    The state to look for in fAllowedStates
+//!
+//! @returns
+//!    If the given state is negative returns false. If the list of allowed
+//!    states is empty return true. Otherwise return whether the state
+//!    is found in fAllowedList or not.
+//
+bool EventImp::IsStateAllowed(int state) const
+{
+    // States with negative values are internal states and are
+    // never allowed
+    // if (state<0)
+    //    return false;
+
+    // In case no allowed state is explicitly set
+    // all positive states are allowed
+    if (fAllowedStates.size()==0)
+        return true;
+
+    return find(fAllowedStates.begin(), fAllowedStates.end(), state)!=fAllowedStates.end();
+}
+
+// --------------------------------------------------------------------------
+//
+//! @returns the event data converted to a std::string. Trailing redundant
+//!          \0's are removed.
+//!
+string EventImp::GetString() const
+{
+    size_t s = GetSize()-1;
+    while (s>0 && GetText()[s]==0)
+        s--;
+
+    return std::string(GetText(), s+1);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Print the contents of the event to the given stream.
+//!
+//! @param out
+//!    An ostream to which the output should be redirected.
+//!
+//! @param strip
+//!    defines whether a possible SERVER name in the event name
+//!    should be stripped or not.
+//!
+void EventImp::Print(ostream &out, bool strip) const
+{
+    if (GetDescription().empty())
+        return;
+
+    out << " -";
+
+    const string str = GetName();
+    if (!str.empty())
+        out << kBold << str.substr(strip?str.find_first_of('/')+1:0) << kReset << "-";
+
+    const string fmt = GetFormat();
+
+    if (!str.empty() && !fmt.empty())
+        out << " ";
+
+    if (!fmt.empty())
+        out << "[" << fmt << "]";
+
+    vector<Description> v = Description::SplitDescription(GetDescription());
+
+    if (!GetDescription().empty())
+    {
+        out << kBold;
+        for (vector<Description>::const_iterator j=v.begin()+1;
+             j!=v.end(); j++)
+            out << " <" << j->name << ">";
+        out << kReset;
+    }
+
+    for (unsigned int i=0; i<fAllowedStates.size(); i++)
+        out << " " << fAllowedStates[i];
+
+    const Time tm = GetTime();
+
+    const bool t = tm!=Time::None && tm!=Time(1970,1,1);
+    const bool s = GetSize()>0;
+
+    if (s || t)
+        out << "(";
+    if (t)
+        out << tm.GetAsStr("%H:%M:%S.%f");
+    if (s && t)
+        out << "/";
+    if (s)
+        out << "size=" << GetSize();
+    if (s || t)
+        out << ")";
+    out << endl;
+
+    if (GetDescription().empty())
+    {
+        out << endl;
+        return;
+    }
+
+    out << "     " << v[0].comment << endl;
+
+    for (vector<Description>::const_iterator j=v.begin()+1;
+         j!=v.end(); j++)
+    {
+        out << "      ||" << kGreen << j->name;
+        if (!j->comment.empty())
+            out << kReset << ": " << kBlue << j->comment;
+        if (!j->unit.empty())
+            out << kYellow << " [" << j->unit << "]";
+        out << endl;
+    }
+    out << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls Print(std::cout)
+//!
+//! @param strip
+//!    defines whether a possible SERVER name in the event name
+//!    should be stripped or not.
+//
+void EventImp::Print(bool strip) const
+{
+    Print(cout, strip);
+}
+
+string EventImp::GetTimeAsStr(const char *fmt) const
+{
+    return GetTime().GetAsStr(fmt);
+}
+
+uint64_t EventImp::GetJavaDate() const
+{
+    return GetTime().JavaDate();
+}
Index: branches/testFACT++branch/src/EventImp.h
===================================================================
--- branches/testFACT++branch/src/EventImp.h	(revision 18277)
+++ branches/testFACT++branch/src/EventImp.h	(revision 18277)
@@ -0,0 +1,104 @@
+#ifndef FACT_EventImp
+#define FACT_EventImp
+
+#include <string>
+#include <vector>
+
+#include <functional>
+
+#include "Time.h"
+
+class EventImp
+{
+    std::vector<int> fAllowedStates; /// List of states in which this event is allowed
+
+    /// http://www.boost.org/doc/libs/1_45_0/libs/bind/bind.html
+    std::function<int(const EventImp &)> fFunction;
+
+public:
+    /// Constructor. Stores the target state given.
+    EventImp() { }
+    /// Copy constructor
+    EventImp(const EventImp &cmd);
+    virtual ~EventImp() {}
+
+    // Description
+    virtual void SetDescription(const std::string &) { }
+    virtual std::string GetDescription() const { return ""; }
+
+    // Function handling
+    EventImp &AssignFunction(const std::function<int(const EventImp &)> &func=std::function<int(const EventImp &)>()) { fFunction = func; return *this; }
+    bool HasFunc() const { return (bool)fFunction; }
+    int ExecFunc() const { return fFunction ? fFunction(*this) : -1; }
+
+    // Configuration helper
+    EventImp &operator()(const std::function<int(const EventImp &)> &func) { return AssignFunction(func); }
+    EventImp &operator()(const std::string str) { SetDescription(str); return *this; }
+    EventImp &operator()(const char *str) { SetDescription(str); return *this; }
+    EventImp &operator()(int state) { fAllowedStates.push_back(state); return *this; }
+
+    // Print contents
+    virtual void Print(std::ostream &out, bool strip=false) const;
+    virtual void Print(bool strip=false) const;
+
+    // Handling of the states
+    void AddAllowedState(int state);
+    void AddAllowedStates(const std::string &states);
+
+    bool IsStateAllowed(int state) const;
+
+    // virtual function to return the data as stored in the derived classes
+    virtual std::string GetName() const   { return ""; }
+    virtual std::string GetFormat() const { return ""; }
+
+    virtual const void *GetData() const { return 0; }
+    virtual size_t      GetSize() const { return 0; }
+
+    virtual Time GetTime() const { return Time::None; }
+    virtual int  GetQoS() const  { return 0; }
+    virtual bool IsEmpty() const { return GetData()==0; }
+
+    std::string GetTimeAsStr(const char *fmt) const;
+    uint64_t GetJavaDate() const;
+
+    // Generalized access operators
+    template<typename T>
+        T Get(size_t offset=0) const
+    {
+        if (offset>=GetSize())
+            throw std::logic_error("EventImp::Get - offset out of range.");
+        return *reinterpret_cast<const T*>(GetText()+offset);
+    }
+
+    template<typename T>
+        const T *Ptr(size_t offset=0) const
+    {
+        if (offset>=GetSize())
+            throw std::logic_error("EventImp::Ptr - offset out of range.");
+        return reinterpret_cast<const T*>(GetText()+offset);
+    }
+
+    template<typename T>
+        const T &Ref(size_t offset=0) const
+    {
+        return *Ptr<T>(offset);
+    }
+
+    // Getter for all the data contained (name, format, data and time)
+    const char *GetText() const { return reinterpret_cast<const char*>(GetData()); }
+
+    bool     GetBool() const   { return Get<uint8_t>()!=0; }
+    int16_t  GetShort() const  { return Get<int16_t>();    }
+    uint16_t GetUShort() const { return Get<uint16_t>();   }
+    int32_t  GetInt() const    { return Get<int32_t>();    }
+    uint32_t GetUInt() const   { return Get<uint32_t>();   }
+    int64_t  GetXtra() const   { return Get<int64_t>();    }
+    uint64_t GetUXtra() const  { return Get<int64_t>();    }
+    float    GetFloat() const  { return Get<float>();      }
+    double   GetDouble() const { return Get<double>();     }
+
+    std::vector<char> GetVector() const { return std::vector<char>(GetText(), GetText()+GetSize()); }
+    std::string       GetString() const;
+};
+
+#endif
Index: branches/testFACT++branch/src/FACT.cc
===================================================================
--- branches/testFACT++branch/src/FACT.cc	(revision 18277)
+++ branches/testFACT++branch/src/FACT.cc	(revision 18277)
@@ -0,0 +1,65 @@
+// **************************************************************************
+/** @namespace FACT
+
+@brief Namespace to help with some general things in the program initialization
+
+*/
+// **************************************************************************
+#include "FACT.h"
+
+#include <iostream>
+
+#include <boost/version.hpp>
+#include <boost/filesystem.hpp>
+
+// --------------------------------------------------------------------------
+//
+//! Print version information about FACT++
+//!
+//! From help2man:
+//!
+//! The first line of the --version information is assumed to be in one
+//! of the following formats:
+//!
+//! \verbatim
+//!  - <version>
+//!  - <program> <version>
+//!  - {GNU,Free} <program> <version>
+//!  - <program> ({GNU,Free} <package>) <version>
+//!  - <program> - {GNU,Free} <package> <version>
+//! \endverbatim
+//!
+//!  and separated from any copyright/author details by a blank line.
+//!
+//! Handle multi-line bug reporting sections of the form:
+//!
+//! \verbatim
+//!  - Report <program> bugs to <addr>
+//!  - GNU <package> home page: <url>
+//!  - ...
+//! \endverbatim
+//!
+//! @param name
+//!     name of the program (usually argv[0]). A possible leading "lt-"
+//!     is removed.
+//!
+void FACT::PrintVersion(const char *name)
+{
+#if BOOST_VERSION < 104600
+    const std::string n = boost::filesystem::path(name).filename();
+#else
+    const std::string n = boost::filesystem::path(name).filename().string();
+#endif
+
+    std::cout <<
+        n << " - " PACKAGE_STRING "\n"
+        "\n"
+        "Written by Thomas Bretz et al.\n"
+        "\n"
+        "Report bugs to <" PACKAGE_BUGREPORT ">\n"
+        "Home page: " PACKAGE_URL "\n"
+        "\n"
+        "Copyright (C) 2011 by the FACT Collaboration.\n"
+        "This is free software; see the source for copying conditions.\n"
+        << std::endl;
+}
Index: branches/testFACT++branch/src/FACT.h
===================================================================
--- branches/testFACT++branch/src/FACT.h	(revision 18277)
+++ branches/testFACT++branch/src/FACT.h	(revision 18277)
@@ -0,0 +1,9 @@
+#ifndef FACT_FACT
+#define FACT_FACT
+
+namespace FACT
+{
+    void PrintVersion(const char *name);
+}
+
+#endif
Index: branches/testFACT++branch/src/FAD.h
===================================================================
--- branches/testFACT++branch/src/FAD.h	(revision 18277)
+++ branches/testFACT++branch/src/FAD.h	(revision 18277)
@@ -0,0 +1,159 @@
+#ifndef FACT_FAD_H
+#define FACT_FAD_H
+
+//---------------------------------------------------------------
+//
+// FAD internal structures
+//
+//---------------------------------------------------------------
+
+#define NTemp          4
+#define NDAC           8
+
+typedef struct {
+
+  uint16_t start_package_flag;
+  uint16_t package_length;
+  uint16_t version_no;
+  uint16_t PLLLCK;
+
+  uint16_t trigger_crc;
+  uint16_t trigger_type;
+  uint32_t trigger_id;
+
+  uint32_t fad_evt_counter;
+  uint32_t REFCLK_frequency;
+
+  uint16_t board_id;
+  uint8_t  zeroes;
+   int8_t  adc_clock_phase_shift;
+  uint16_t number_of_triggers_to_generate;
+  uint16_t trigger_generator_prescaler;
+
+  uint64_t DNA;
+
+  uint32_t time;
+  uint32_t runnumber;
+
+  int16_t  drs_temperature[NTemp];
+
+  uint16_t  dac[NDAC];
+
+} __attribute__((__packed__)) PEVNT_HEADER;
+
+typedef struct {
+uint16_t id;
+uint16_t start_cell;
+uint16_t roi;
+uint16_t filling;
+ int16_t adc_data[];
+} __attribute__((__packed__)) PCHANNEL;
+
+
+typedef struct {
+uint16_t package_crc;
+uint16_t end_package_flag;
+} __attribute__((__packed__)) PEVNT_FOOTER;
+
+#define NBOARDS      40      // max. number of boards
+#define NPIX       1440      // max. number of pixels
+#define NTMARK      160      // max. number of timeMarker signals
+
+//---------------------------------------------------------------
+//
+// Data structures
+//
+//---------------------------------------------------------------
+
+typedef struct _EVENT {
+  uint16_t Roi ;            // #slices per pixel (same for all pixels)
+  uint16_t RoiTM ;          // #slices per pixel (same for all tmarks) [ 0 or Roi ]
+  uint32_t EventNum ;       // EventNumber as from FADs
+  uint32_t TriggerNum ;     // EventNumber as from FTM
+  uint16_t TriggerType ;    // Trigger Type from FTM
+
+  uint32_t NumBoards ;      // number of active boards included
+
+  uint32_t PCTime ;         // epoch
+  uint32_t PCUsec ;         // micro-seconds
+
+  uint32_t BoardTime[NBOARDS];//
+
+   int16_t StartPix[NPIX];  // First Channel per Pixel (Pixels sorted according Software ID)  ; -1 if not filled
+
+   int16_t StartTM[NTMARK]; // First Channel for TimeMark (sorted Hardware ID) ; -1 if not filled
+
+   int16_t Adc_Data[];     // final length defined by malloc ....
+
+} __attribute__((__packed__)) EVENT ;
+
+//---------------------------------------------------------------
+
+struct RUN_HEAD
+{
+  uint32_t Version ;
+  uint32_t RunType ;
+  uint32_t RunTime ;  //unix epoch for first event
+  uint32_t RunUsec ;  //microseconds
+  uint16_t NBoard  ;  //#boards (always 40)
+  uint16_t NPix ;     //#pixels (always 1440)
+  uint16_t NTm  ;     //#TM     (always 160)
+  uint16_t Nroi ;     //roi for pixels
+  uint16_t NroiTM ;   //roi for TM  <=0 if TM is empty 
+
+//headers of all FAD-boards for first event ==> all FAD configs
+  PEVNT_HEADER FADhead[NBOARDS];    // [ NBoards ] sorted Board Headers (according Hardware ID)
+
+  RUN_HEAD() : Version(1), RunType(-1), NBoard(NBOARDS), NPix(NPIX), NTm(NTMARK)
+  {
+  }
+
+
+//do we also have info about FTM config we want to add here ???
+} __attribute__((__packed__));
+
+
+//---------------------------------------------------------------
+
+// FIXME: This doesn't neet to be here... it is inlcuded in all
+//        data processors
+
+#include <netinet/in.h>
+
+typedef struct {
+   struct sockaddr_in sockAddr ;
+   int    sockDef ; //<0 not defined/ ==0 not to be used/ >0 used
+} FACT_SOCK ;    //internal to eventbuilder
+
+
+//---------------------------------------------------------------
+
+typedef struct {
+  //info about (current state of) the buffer 
+   uint32_t bufNew ;            //# incomplete events in buffer (evtCtrl)
+   uint32_t bufEvt ;            //# complete events in buffer  (primaryQueue)
+   uint32_t bufWrite ;          //# events in write queue (secondaryQueue)
+   uint32_t bufProc ;           //# events in processing queue (processingQueue1)
+   uint32_t bufTot ;            //# total events currently in buffer (this corresponds to totMem)
+
+   uint64_t totMem;             //# Bytes available in Buffer
+   uint64_t usdMem;             //# Bytes currently used
+   uint64_t maxMem;             //max # Bytes used during past cycle
+
+  //rates
+   int32_t  deltaT ;            //time in milli-seconds for rates
+   int32_t  rateNew ;           //#New start events recieved
+   int32_t  rateWrite ;         //#Complete events written (or flushed)
+
+  //connections
+   int8_t   numConn[NBOARDS] ;  //#connections per board (at the moment)
+   uint32_t rateBytes[NBOARDS];  //#Bytes read (counter)
+   int32_t  relBytes[NBOARDS];   //#Bytes read this cycle  **
+
+  // ** // if counter and rates exist, do only update the rates in
+  // ** // real time; 
+  // ** // counters will be updated only once per cycle based on rates
+
+}  __attribute__((__packed__)) GUI_STAT ;         //EventBuilder Status
+
+#endif
Index: branches/testFACT++branch/src/Fits.cc
===================================================================
--- branches/testFACT++branch/src/Fits.cc	(revision 18277)
+++ branches/testFACT++branch/src/Fits.cc	(revision 18277)
@@ -0,0 +1,493 @@
+// **************************************************************************
+/** @class FactFits
+
+@brief FITS writter for the FACT project. 
+
+The FactFits class is able to open, manage and update FITS files. 
+
+The file columns should be given to the class before the file is openned. Once
+a file has been created, the structure of its columns cannot be changed. Only
+row can be added.
+
+This class relies on the CCfits and CFitsIO packages.
+
+*/
+// **************************************************************************
+#include "Fits.h"
+
+#include "Time.h"
+#include "Converter.h"
+#include "MessageImp.h"
+
+#include <sys/stat.h> //for file stats
+#include <cstdio> // for file rename
+#include <cerrno>
+
+#include <boost/algorithm/string/predicate.hpp>
+
+using namespace std;
+using namespace CCfits;
+
+// --------------------------------------------------------------------------
+//
+//! This gives a standard variable to the file writter. 
+//! This variable should not be related to the DIM service being logged. 
+//! @param desc the description of the variable to add
+//! @param dataFormat the FITS data format corresponding to the variable to add.
+//! @param dataPointer the memory location where the variable is stored
+//! @param numDataBytes the number of bytes taken by the variable
+//
+void Fits::AddStandardColumn(const Description& desc, const string &dataFormat, void* dataPointer, long unsigned int numDataBytes)
+{
+    //check if entry already exist
+    for (vector<Description>::const_iterator it=fStandardColDesc.begin(); it != fStandardColDesc.end(); it++)
+        if (it->name == desc.name)
+            return;
+
+    fStandardColDesc.push_back(desc);
+    fStandardFormats.push_back(dataFormat);
+    fStandardPointers.push_back(dataPointer);
+    fStandardNumBytes.push_back(numDataBytes);
+}
+
+// --------------------------------------------------------------------------
+//
+//! This gives the file writter access to the DIM data
+//! @param desc a vector containing the description of all the columns to log
+//! @param dataFormat a vector containing the FITS data format of all the columsn to log
+//! @param dataPointer the memory location where the DIM data starts
+//! @param numDataBytes the number of bytes taken by the DIM data. 
+//! @param out Message object to use for propagating messages
+//	
+void Fits::InitDataColumns(const vector<Description> &desc, const vector<string>& dataFormat, MessageImp* out)
+{
+    fDataFormats = dataFormat;
+
+    if ((desc.size() == 0) && (dataFormat.size() == 0))
+    {
+        fDataColDesc.clear();
+        return;
+    }
+
+    //we will copy this information here. It duplicates the data, which is not great,
+    // but it is the easiest way of doing it right now
+    if (
+        (desc.size() == dataFormat.size()+1) || // regular service
+        (desc.size() == dataFormat.size()+2)    // service with ending string. skipped in fits
+       )
+    {
+        //services have one (or two) more description than columns. skip the first entry while copying as it describes the table itself.
+
+        fDataColDesc.clear();
+
+        fTableDesc = desc[0].comment;
+        if (fTableDesc.size() > 68)
+        {
+            out->Warn("Table description '" + fTableDesc + "' exceeds 68 chars... truncated.");
+            fTableDesc = fTableDesc.substr(0,68);
+        }
+
+        for (unsigned int i=0; i<dataFormat.size(); i++)
+        {
+            string name = desc[i+1].name;
+            if (name.length() > 68)
+            {
+                out->Warn("Column name '" + name + "' exceeds 68 chars... truncated.");
+                name = name.substr(0, 68);
+            }
+
+            string comment = desc[i+1].comment;
+            if (comment.length() + name.length() > 71)
+            {
+                out->Warn("Column '" + name + " / " + comment + "' exceeds 68 chars... truncated.");
+                comment = comment.substr(0,68);
+            }
+
+            string unit = desc[i+1].unit;
+            if (unit.length() > 68)
+            {
+                out->Warn("Unit '" + name + "' exceeds 68 chars... truncated.");
+                unit = comment.substr(0,68);
+            }
+
+            const size_t p = fDataFormats[i].find_last_of('B');
+            if ((boost::iequals(unit, "text") || boost::iequals(unit, "string")) && p!=string::npos)
+            {
+                out->Info("Column '" + name + "' detected to be an ascii string (FITS format 'A').");
+                fDataFormats[i].replace(p, 1, "A");
+            }
+
+            fDataColDesc.push_back(Description(name, comment, unit));
+        }
+        return;
+    }
+
+    {//if we arrived here, this means that the columns descriptions could not be parsed
+        ostringstream str;
+        str << "Expected " << dataFormat.size() << " descriptions of columns, got " << (int)(desc.size())-1 << " for service: ";
+        if (desc.size() > 0)
+            str << desc[0].name;
+        else
+            str << "<unknown>";
+
+        out->Warn(str.str());
+    }
+
+    fDataColDesc.clear();
+ //   fDataColDesc.push_back(Description("service", "comment", "unit"));
+    for (unsigned int i=0;i<dataFormat.size();i++)
+    {
+        ostringstream stt;
+        stt << "Data" << i;
+        fDataColDesc.push_back(Description(stt.str(), "", ""));
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! This opens the FITS file (after the columns have been passed)
+//! @param fileName the filename with complete or relative path of the file to open
+//! @param tableName the name of the table that will receive the logged data.
+//! @param file a pointer to an existing FITS file. If NULL, file will be opened and managed internally
+//! @param fitsCounter a pointer to the integer keeping track of the opened FITS files
+//! @param out a pointer to the MessageImp that should be used to log errors
+//! @param runNumber the runNumber for which this file is opened. 0 means nightly file.
+//
+bool Fits::Open(const string& fileName, const string& tableName, uint32_t* fitsCounter, MessageImp* out, int runNumber, FITS* file)
+{
+    fRunNumber = runNumber;
+    fMess = out;
+    fFileName = fileName;
+
+    if (fFile)
+    {
+        fMess->Error("File already open...");
+        return false;
+    }
+
+    fFile = new FitsFile(*fMess);
+
+    if (file == NULL)
+    {
+        if (!fFile->OpenFile(fileName, true))
+            return false;
+
+        fNumOpenFitsFiles = fitsCounter;
+        (*fNumOpenFitsFiles)++;
+    }
+    else
+    {
+        if (!fFile->SetFile(file))
+            return false;
+    }
+
+    //concatenate the standard and data columns
+    //do it the inneficient way first: its easier and faster to code.
+    for (unsigned int i=0;i<fStandardColDesc.size();i++)
+    {
+        fFile->AddColumn(fStandardColDesc[i].name, fStandardFormats[i],
+                         fStandardColDesc[i].unit);
+    }
+
+    for (unsigned int i=0; i<fDataColDesc.size(); i++)
+    {
+        string name = fDataColDesc[i].name;
+        if (name.empty())
+        {
+            ostringstream stt;
+            stt << "Data" << i;
+            name = stt.str();
+        }
+//cout << endl << "#####adding column: " << name << " " << fDataFormats[i] << " " << fDataColDesc[i].unit << endl << endl;
+        fFile->AddColumn(name, fDataFormats[i], fDataColDesc[i].unit);
+    }
+
+    try
+    {
+        if (!fFile->OpenNewTable(tableName, 100))
+        {
+            Close();
+            //if the file already exist, then the column names must have changed
+            //let's move the file and try to open it again.
+            string fileNameWithoutFits = fFileName.substr(0, fileName.size()-4);
+            int counter = 0;
+            while (counter < 100)
+            {
+                ostringstream newFileName;
+                newFileName << fileNameWithoutFits << counter << ".fits";
+                ifstream testStream(newFileName.str().c_str());
+                if (!testStream)
+                {
+                    if (rename(fFileName.c_str(), newFileName.str().c_str()))
+                        return false;
+                    break;
+                }
+                counter++;
+            }
+            if (counter == 100)
+                return false;
+            //now we open it again.
+            fFile = new FitsFile(*fMess);
+            if (file == NULL)
+            {
+                if (!fFile->OpenFile(fileName, true))
+                    return false;
+                fNumOpenFitsFiles = fitsCounter;
+                (*fNumOpenFitsFiles)++;
+            }
+            else
+            {
+                if (!fFile->SetFile(file))
+                    return false;
+            }
+            //YES, we must also redo that thing here...
+            //concatenate the standard and data columns
+            //do it the inneficient way first: its easier and faster to code.
+            for (unsigned int i=0;i<fStandardColDesc.size();i++)
+            {
+                fFile->AddColumn(fStandardColDesc[i].name, fStandardFormats[i],
+                                 fStandardColDesc[i].unit);
+            }
+
+            for (unsigned int i=0; i<fDataColDesc.size(); i++)
+            {
+                string name = fDataColDesc[i].name;
+                if (name.empty())
+                {
+                    ostringstream stt;
+                    stt << "Data" << i;
+                    name = stt.str();
+                }
+        //cout << endl << "#####adding column: " << name << " " << fDataFormats[i] << " " << fDataColDesc[i].unit << endl << endl;
+                fFile->AddColumn(name, fDataFormats[i], fDataColDesc[i].unit);
+            }
+            if (!fFile->OpenNewTable(tableName, 100))
+            {
+                Close();
+                return false;
+            }
+        }
+
+        fCopyBuffer.resize(fFile->GetDataSize());
+//write header comments
+
+        ostringstream str;
+        for (unsigned int i=0;i<fStandardColDesc.size();i++)
+        {
+            str.str("");
+            str << "TTYPE" << i+1;
+            fFile->WriteKeyNT(str.str(), fStandardColDesc[i].name, fStandardColDesc[i].comment);
+            str.str("");
+            str << "TCOMM" << i+1;
+            fFile->WriteKeyNT(str.str(), fStandardColDesc[i].comment, "");
+        }
+
+        for (unsigned int i=0; i<fDataColDesc.size(); i++)
+        {
+            string name = fDataColDesc[i].name;
+            if (name.empty())
+            {
+                ostringstream stt;
+                stt << "Data" << i;
+                name = stt.str();
+            }
+            str.str("");
+            str << "TTYPE" << i+fStandardColDesc.size()+1;
+            fFile->WriteKeyNT(str.str(), name, fDataColDesc[i].comment);
+            str.str("");
+            str << "TCOMM" << i+fStandardColDesc.size()+1;
+            fFile->WriteKeyNT(str.str(), fDataColDesc[i].comment, "");
+        }
+
+        fFile->WriteKeyNT("COMMENT", fTableDesc, "");
+
+        if (fFile->GetNumRows() == 0)
+        {//if new file, then write header keys -> reset fEndMjD used as flag
+            fEndMjD = 0;
+        }
+        else
+        {//file is beingn updated. Prevent from overriding header keys
+            fEndMjD = Time().Mjd();
+        }
+
+        return fFile->GetNumRows()==0 ? WriteHeaderKeys() : true;
+    }
+    catch (const CCfits::FitsException &e)
+    {
+        cout << "Exception !" << endl;
+        fMess->Error("Opening or creating table '"+tableName+"' in '"+fileName+"': "+e.message());
+
+        fFile->fTable = NULL;
+        Close();
+        return false;
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! This writes the standard header 
+//
+bool Fits::WriteHeaderKeys()
+{
+    if (!fFile->fTable)
+        return false;
+
+    if (!fFile->WriteDefaultKeys("datalogger"))
+        return false;
+
+    if (!fFile->WriteKeyNT("TSTARTI",  0, "Time when first event received (integral part)")   ||
+        !fFile->WriteKeyNT("TSTARTF",  0, "Time when first event received (fractional part)") ||
+        !fFile->WriteKeyNT("TSTOPI",   0, "Time when last event received (integral part)")    ||
+        !fFile->WriteKeyNT("TSTOPF",   0, "Time when last event received (fractional part)")  ||
+        !fFile->WriteKeyNT("DATE-OBS", 0, "Time when first event received") ||
+        !fFile->WriteKeyNT("DATE-END", 0, "Time when last event received") ||
+        !fFile->WriteKeyNT("RUNID", fRunNumber, "Run number. 0 means not run file"))
+        return false;
+
+    return true;
+}
+void Fits::MoveFileToCorruptedFile()
+{
+    ostringstream corruptName;
+    struct stat st;
+    int append = 0;
+    corruptName << fFileName << "corrupt" << append;
+    while (!stat(corruptName.str().c_str(), &st))
+    {
+        append++;
+        corruptName.str("");
+        corruptName << fFileName << "corrupt" << append;
+    }
+    if (rename(fFileName.c_str(), corruptName.str().c_str()) != 0)
+    {
+        ostringstream str;
+        str << "rename() failed for '" << fFileName << "': " << strerror(errno) << " [errno=" << errno << "]";
+        fMess->Error(str);
+        return;
+    }
+
+    fMess->Message("Renamed file " + fFileName + " to " + corruptName.str());
+
+}
+// --------------------------------------------------------------------------
+//
+//! This writes one line of data to the file.
+//! @param conv the converter corresponding to the service being logged
+//
+bool Fits::Write(const Converter &conv, const void* data)
+{
+    //first copy the standard variables to the copy buffer
+    int shift = 0;
+    for (unsigned int i=0;i<fStandardNumBytes.size();i++)
+    {
+        const char *charSrc = reinterpret_cast<char*>(fStandardPointers[i]);
+        reverse_copy(charSrc, charSrc+fStandardNumBytes[i], fCopyBuffer.data()+shift);
+        shift += fStandardNumBytes[i];
+    }
+    try
+    {
+        //now take care of the DIM data. The Converter is here for that purpose
+        conv.ToFits(fCopyBuffer.data()+shift, data, fCopyBuffer.size()-shift);
+    }
+    catch (const runtime_error &e)
+    {
+        ostringstream str;
+        str << fFile->GetName() << ": " << e.what();
+        fMess->Error(str);
+        return false;
+    }
+
+    // This is not necessary, is it?
+    // fFile->fTable->makeThisCurrent();
+    if (!fFile->AddRow())
+    {
+        Close();
+        MoveFileToCorruptedFile();
+        return false;
+    }
+    if (!fFile->WriteData(fCopyBuffer))
+    {
+        Close();
+        return false;
+    }
+    const double tm = *reinterpret_cast<double*>(fStandardPointers[0]);
+
+    //the first standard variable is the current MjD
+    if (fEndMjD==0)
+    {
+        // FIXME: Check error?
+        fFile->WriteKeyNT("TSTARTI", uint32_t(floor(tm)),      "Time when first event received (integral part)");
+        fFile->WriteKeyNT("TSTARTF", fmod(tm, 1),              "Time when first event received (fractional part)");
+        fFile->WriteKeyNT("TSTOPI",  uint32_t(floor(fEndMjD)), "Time when last event received (integral part)");
+        fFile->WriteKeyNT("TSTOPF",  fmod(fEndMjD, 1),         "Time when last event received (fractional part)");
+
+        fFile->WriteKeyNT("DATE-OBS", Time(tm+40587).Iso(),
+                          "Time when first event received");
+
+        fFile->WriteKeyNT("DATE-END", Time(fEndMjD+40587).Iso(),
+                          "Time when last event received");
+    }
+
+    fEndMjD = tm;
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This closes the currently openned FITS file. 
+//! it also updates the header to reflect the time of the last logged row
+//	
+void Fits::Close() 
+{
+    if (!fFile)
+        return;
+    if (fFile->IsOpen() && fFile->IsOwner())
+    {
+        // FIMXE: Check for error? (It is allowed that fFile is NULL)
+        fFile->WriteKeyNT("TSTOPI", uint32_t(floor(fEndMjD)), "Time when last event received (integral part)");
+        fFile->WriteKeyNT("TSTOPF", fmod(fEndMjD, 1),         "Time when last event received (fractional part)");
+
+        fFile->WriteKeyNT("DATE-END", Time(fEndMjD+40587).Iso(),
+                          "Time when last event received");
+    }
+    if (fFile->IsOwner())
+    {
+        if (fNumOpenFitsFiles != NULL)
+            (*fNumOpenFitsFiles)--;
+    }
+    const string name = fFile->GetName();
+    delete fFile;
+    fFile = NULL;
+    fMess->Info("Closed: "+name);
+//    fMess = NULL;
+}
+
+void Fits::Flush()
+{
+    if (!fFile)
+        return;
+
+    fFile->Flush();
+}
+// --------------------------------------------------------------------------
+//! Returns the size on the disk of the Fits file being written.
+int Fits::GetWrittenSize() const
+{
+    if (!IsOpen())
+        return 0;
+
+    struct stat st;
+    if (stat(fFile->GetName().c_str(), &st))
+        return 0;
+
+    return st.st_size;
+}
+
+/*
+ To be done:
+ - Check the check for column names in opennewtable
+ - If Open return false we end in an infinite loop (at least if
+   the dynamic cats to Bintable fails.
+
+*/
Index: branches/testFACT++branch/src/Fits.h
===================================================================
--- branches/testFACT++branch/src/Fits.h	(revision 18277)
+++ branches/testFACT++branch/src/Fits.h	(revision 18277)
@@ -0,0 +1,98 @@
+#ifndef FACT_Fits
+#define FACT_Fits
+
+#include "Description.h"
+#include "FitsFile.h"
+
+class Converter;
+
+using namespace std;
+
+class Fits
+{
+private:
+    FitsFile *fFile;
+    string fFileName;
+
+    ///Name of the "standard", i.e. data found in every fits file
+    ///TODO make these variable static so that they are shared by every object.
+    ///TODO add also a static boolean to initialize these only once
+    vector<Description> fStandardColDesc;
+    ///Format of the standard columns.
+    vector<string> fStandardFormats;
+    ///the pointers to the standard variables
+    vector<void*> fStandardPointers;
+    ///the number of bytes taken by each standard variable
+    vector<int> fStandardNumBytes;
+
+    ///the vector of data column names
+    vector<Description> fDataColDesc;
+    //Description of the table
+    string fTableDesc;
+    ///the data format of the data columns
+    vector<string> fDataFormats;
+
+    ///the copy buffer. Required to put the standard and data variable in contguous memory
+    vector<char> fCopyBuffer;
+    ///to keep track of the time of the latest written entry (to update the header when closing the file)
+    double fEndMjD;
+    ///Keep track of number of opened fits
+    uint32_t* fNumOpenFitsFiles;
+    ///were to log the errors
+    MessageImp* fMess;
+
+    ///Write the FITS header keys
+    bool WriteHeaderKeys();
+    //if a write error occurs
+    void MoveFileToCorruptedFile();
+
+
+
+public:
+    ///current run number being logged
+    int32_t fRunNumber;
+
+    Fits() : fFile(NULL),
+        fEndMjD(0.0),
+        fNumOpenFitsFiles(NULL),
+        fMess(NULL),
+        fRunNumber(0)
+    {}
+
+    virtual ~Fits()
+    {
+        Close();
+    }
+
+    ///returns wether or not the file is currently open or not
+    bool IsOpen() const { return fFile != NULL && fFile->IsOpen(); }
+
+    ///Adds a column that exists in all FITS files
+    void AddStandardColumn(const Description& desc, const string &dataFormat, void* dataPointer, long unsigned int numDataBytes);
+
+    ///Adds columns specific to the service being logged.
+    void InitDataColumns(const vector<Description> &desc, const vector<string>& dataFormat, MessageImp* out);
+
+    ///Opens a FITS file
+    bool Open(const string& fileName, const string& tableName,  uint32_t* fitsCounter, MessageImp* out, int runNumber, CCfits::FITS *file=0);//ostream& out);
+
+    ///Write one line of data. Use the given converter.
+    bool Write(const Converter &conv, const void* data);
+
+    ///Close the currently opened file.
+    void Close();
+
+    ///Flush the currently opened file to disk.
+    void Flush();
+
+    ///Get the size currently written on the disk
+    int GetWrittenSize() const;
+
+    string GetName() const { return fFile ? fFile->GetName() : ""; }
+
+};//Fits
+
+
+#endif /*FITS_H_*/
+
+// WriteToFITS vs Open/Close
Index: branches/testFACT++branch/src/FitsFile.cc
===================================================================
--- branches/testFACT++branch/src/FitsFile.cc	(revision 18277)
+++ branches/testFACT++branch/src/FitsFile.cc	(revision 18277)
@@ -0,0 +1,495 @@
+// **************************************************************************
+/** @class FitsFile
+
+@brief FITS writter for the FACT project. 
+
+The FactFits class is able to open, manage and update FITS files. 
+
+The file columns should be given to the class before the file is openned. Once
+a file has been created, the structure of its columns cannot be changed. Only
+row can be added.
+
+This class relies on the CCfits and CFitsIO packages.
+
+*/
+// **************************************************************************
+#include "FitsFile.h"
+
+using namespace std;
+using namespace CCfits;
+
+bool FitsFile::WriteDefaultKeys(const string &prgname, float version)
+{
+    if (!fTable)
+        return false;
+
+    try
+    {
+        const Time now;
+        WriteKey("TELESCOP", "FACT", "Telescope that acquired this data");
+        WriteKey("PACKAGE",   PACKAGE_NAME, "Package name");
+        WriteKey("VERSION",   PACKAGE_VERSION, "Package description");
+        WriteKey("CREATOR",  prgname, "Program that wrote this file");
+        WriteKey("EXTREL",   version, "Release Number");
+        WriteKey("COMPILED",  __DATE__ " " __TIME__, "Compile time");
+        WriteKey("REVISION",  REVISION, "SVN revision");
+        WriteKey("ORIGIN",   "FACT", "Institution that wrote the file");
+        WriteKey("DATE",     now.Iso(), "File creation date");
+        WriteKey("NIGHT",    now.NightAsInt(), "Night as int");
+        WriteKey("TIMESYS",  "UTC", "Time system");
+        WriteKey("TIMEUNIT", "d",   "Time given in days w.r.t. to MJDREF");
+        WriteKey("MJDREF",   40587, "Store times in UNIX time (for convenience, seconds since 1970/1/1)");
+
+        //WriteKey("CONTACT",   PACKAGE_BUGREPORT, "Current package maintainer");
+        //WriteKey("URL",       PACKAGE_URL, "Current repositiory location");
+    }
+    catch (const CCfits::FitsException &e)
+    {
+        Error("CCfits::Table::addKey failed for '"+fTable->name()+"' in '"+fFile->name()+"': "+e.message());
+        return false;
+    }
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Add a new column to the vectors storing the column data.
+//! @param names the vector of string storing the columns names
+//! @param types the vector of string storing the FITS data format
+//! @param numElems the number of elements in this column
+//! @param type the char describing the FITS data format
+//! @param name the name of the particular column to be added.
+//
+void FitsFile::AddColumn(char type, const string &name, int numElems, const string &unit)
+{
+    fColNames.push_back(name);
+    fColUnits.push_back(unit);
+
+    ostringstream str;
+    if (numElems != 1)
+        str << numElems;
+
+    switch (toupper(type))
+    {
+    case 'B': str << 'L'; break; // logical
+    case 'C': str << 'B'; break; // byte
+    case 'S': str << 'I'; break; // short
+    case 'I': str << 'J'; break; // int
+    case 'X': str << 'K'; break; // long long
+    case 'F': str << 'E'; break; // float
+    case 'D': str << 'D'; break; // double
+    }
+
+    fColTypes.push_back(str.str());
+}
+
+void FitsFile::AddColumn(const string &name, const string &format, const string &unit)
+{
+    fColNames.push_back(name);
+    fColUnits.push_back(unit);
+    fColTypes.push_back(format);
+}
+
+bool FitsFile::OpenFile(const string &filename, bool allow_open)
+{
+    if (fFile || fTable)
+    {
+        Error("FitsFile::OpenFile - File already open.");
+        return false;
+    }
+    // fFileName = fileName;
+    if (!allow_open && access(filename.c_str(), F_OK)==0)
+    {
+        Error("File '"+filename+"' already existing.");
+        return false;
+    }
+    //create the FITS object
+    try
+    {
+        fFile = new CCfits::FITS(filename, CCfits::RWmode::Write);
+    }
+    catch (CCfits::FitsException e)
+    {
+        Error("CCfits::FITS failed for '"+filename+"': "+e.message());
+        return false;
+    }
+    /*
+     "SIMPLE  =                    T / file does conform to FITS standard             "
+     "BITPIX  =                    8 / number of bits per data pixel                  "
+     "NAXIS   =                    0 / number of data axes                            "
+     "EXTEND  =                    T / FITS dataset may contain extensions            "
+     "COMMENT   FITS (Flexible Image Transport System) format is defined in 'Astronomy"
+     "COMMENT   and Astrophysics', volume 376, page 359; bibcode: 2001A&A...376..359H "
+     "END                                                                             ";
+     */
+
+    fIsOwner = true;
+
+    return true;
+}
+
+void FitsFile::ResetColumns()
+{
+    fColNames.clear();
+    fColTypes.clear();
+    fColUnits.clear();
+}
+
+bool FitsFile::SetFile(CCfits::FITS *file)
+{
+    if (!file)
+    {
+        Error("Fits::SetFile failed: NULL argument.");
+        return false;
+    }
+
+    if (fFile)
+    {
+        Error("Fits::SetFile failed: File already set.");
+        return false;
+    }
+
+    fFile = file;
+    fIsOwner = false;
+
+    return true;
+}
+
+bool FitsFile::OpenTable(const string &tablename)
+{
+    if (!fFile)
+    {
+        Error("FitsFile::OpenTable - No file open.");
+        return false;
+    }
+    if (fTable)
+    {
+        Error("FitsFile::OpenTable - Table already open.");
+        return false;
+    }
+
+    //actually create the table
+    CCfits::Table *table = 0;
+    try
+    {
+        table = fFile->addTable(tablename, 0, fColNames, fColTypes, fColUnits);
+    }
+    catch (const CCfits::FitsException &e)
+    {
+        Error("CCfits::Table::addTable failed for '"+tablename+"' in '"+fFile->name()+"': "+e.message());
+        return false;
+    }
+
+    if (table->rows() != 0)
+    {
+        Error("FITS table '"+tablename+"' created in '"+fFile->name()+"' on the fly looks non-empty.");
+        return false;
+    }
+
+    // Set this as last - we use it for IsOpen()
+    fTable = table;
+    fNumRows = 0;
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This looks for a suitable table in the fits file, i.e. that corresponds to the name and column names. (no format check yet)
+//! @param tableName. the base table name to be obtained. If not suitable, numbers are appened to the name
+//! @param allNames. the name of all columns
+//! @param allDataTypes. the data types of all columns
+//! @param allUnits. the units of the columns
+//! @return a pointer to the newly retrieved/created table
+//
+bool FitsFile::OpenNewTable(const string &tableName, int maxtry)
+{
+    if (!fFile)
+    {
+        Error("FitsFile::OpenNewTable - No file open.");
+        return false;
+    }
+
+    if (fTable)
+    {
+        Error("FitsFile::OpenNewTable - Table already open.");
+        return false;
+    }
+
+    //first, let's check if the table already exist in the file
+    fFile->read(vector<string>(1, tableName));
+
+    // FIXME: Check for fFile and fTable
+    const multimap<string, CCfits::ExtHDU *> &extMap = fFile->extension();
+
+    for (int i=0; i<maxtry; i++)
+    {
+        //if (i==10)
+        //    fMess->Warn("Already 10 different tables with different formats exist in this file. Please consider re-creating the file entirely (i.e. delete it please)");
+
+        ostringstream str;
+        str << tableName;
+        if (i != 0)
+            str << "-" << i;
+
+        const string tname = str.str();
+
+        const multimap<string,CCfits::ExtHDU*>::const_iterator it = extMap.find(tname);
+
+        //current table name does not exist yet. return its associated fits table newly created
+        if (it == extMap.end())
+        {
+            // What is this for?
+            //for (multimap<string, CCfits::ExtHDU*>::const_iterator it=extMap.begin();
+            //     it!= extMap.end(); it++)
+            //    fMess->Debug(it->first);
+
+            return OpenTable(tname);
+        }
+
+        CCfits::Table *table = dynamic_cast<CCfits::Table*>(it->second);
+
+        // something wrong happened while getting the table pointer
+        if (!table)
+        {
+            Error("HDU '"+tname+"' found in file, but it is not a proper CCfits::Table.");
+            return false;
+        }
+
+        //now check that the table columns are the same
+        //as the service columns
+        table->makeThisCurrent();
+
+        // FIXME: To be checked...
+        /*
+         const map<string, Column*> cMap = table->column();
+         for (vector<string>::const_iterator ii=fFile->fColNames;
+         ii!=fFile->fColNames.end(); ii++)
+         if (cMap.find(*ii) == cMap.end())
+         continue;
+         */
+
+        fNumRows = table->rows();
+
+        // ----------- This is just a simple sanity check ----------
+
+        // This is not necessary this is done already in
+        // findSuitableTable (either directly or indirectly through OpenTable)
+        // fFile->fTable->makeThisCurrent();
+
+        //If the file already existed, then we must load its data to memory before writing to it.
+        if (fNumRows>0)
+        {
+            CCfits::BinTable* bTable = dynamic_cast<CCfits::BinTable*>(table);
+            if (!bTable)
+            {
+                Error("Table '"+tableName+"' found in '"+fFile->name()+"' is not a binary table.");
+                return false;
+            }
+
+            //read the table binary data.
+            vector<string> colName;
+            bTable->readData(true, colName);
+
+            // double check that the data was indeed read from the disk.
+            // Go through the fTable instead as colName is empty (yes, it is !)
+            const map<string,CCfits::Column*> &cMap = table->column();
+
+            //check that the existing columns are the same as the ones we want to write
+            for (map<string, CCfits::Column*>::const_iterator mapIt = cMap.begin(); mapIt != cMap.end(); mapIt++)
+            {
+                bool found = false;
+                for (unsigned int ii=0;ii<fColNames.size();ii++)
+                {
+                    if (mapIt->first == fColNames[ii])
+                    {
+                        found = true;
+                        if (mapIt->second->format() != fColTypes[ii])
+                        {
+                            Error("Column "+fColNames[ii]+" has wrong format ("+fColTypes[ii]+" vs "+mapIt->second->format()+" in file)");
+                            return false;
+                        }
+                    }
+                }
+                if (!found)
+                {
+                    Error("Column "+mapIt->first+" only exist in written file");
+                    return false;
+                }
+            }
+            //now we know that all the file's columns are requested. Let's do it the other way around
+            for (unsigned int ii=0;ii<fColNames.size();ii++)
+            {
+                bool found = false;
+                for (map<string, CCfits::Column*>::const_iterator mapIt = cMap.begin(); mapIt != cMap.end(); mapIt++)
+                {
+                    if (fColNames[ii] == mapIt->first)
+                    {
+                        found = true;
+                        if (fColTypes[ii] != mapIt->second->format())
+                        {
+                            Error("Column "+fColNames[ii]+" has wrong format ("+fColTypes[ii]+" vs "+mapIt->second->format()+" in file)");
+                            return false;
+                        }
+                    }
+                }
+                if (!found)
+                {
+                    Error("Column "+fColNames[ii]+" only exist in requested description");
+                    return false;
+                }
+            }
+
+            for (map<string,CCfits::Column*>::const_iterator cMapIt = cMap.begin();
+                 cMapIt != cMap.end(); cMapIt++)
+            {
+                if (!cMapIt->second->isRead())
+                {
+                    Error("Reading column '"+cMapIt->first+"' back from '"+fFile->name()+"' failed.");
+                    return false;
+                }
+            }
+        }
+
+        // Set this as last - we use it for IsOpen()
+        fTable = table;
+
+        return true;
+    }
+
+    ostringstream str;
+    str << "FitsFile::OpenNewTable failed - more than " << maxtry << " tables tried." << endl;
+    Error(str);
+
+    return false;
+}
+
+bool FitsFile::AddRow()
+{
+    if (!fFile || !fTable)
+    {
+        Error("FitsFile::AddRow - No table open.");
+        return false;
+    }
+
+    //insert a new row (1==number of rows to insert)
+    int status(0);
+    fits_insert_rows(fFile->fitsPointer(), fNumRows, 1, &status);
+
+    // Status is also directly returned, but we need to give the
+    // pointer anyway
+    if (status)
+    {
+        char text[30];//max length of cfitsio error strings (from doc)
+        fits_get_errstatus(status, text);
+
+        ostringstream str;
+        str << "Inserting row " << fNumRows << " failed in '"+fFile->name()+"': " << text << " (fits_insert_rows,rc=" << status << ")";
+        Error(str);
+
+        return false;
+    }
+
+    fNumRows++;
+    fCursor = 1;
+
+    return true;
+}
+
+bool FitsFile::WriteData(size_t &start, const void *ptr, size_t size)
+{
+    if (!fFile || !fTable)
+    {
+        Error("FitsFile::AddRow - No table open.");
+        return false;
+    }
+
+    int status = 0;
+    fits_write_tblbytes(fFile->fitsPointer(), fNumRows, start, size,
+                        (unsigned char*)ptr, &status);
+
+    // Status is also directly returned, but we need to give the
+    // pointer anyway
+    if (status)
+    {
+        char text[30];//max length of cfitsio error strings (from doc)
+        fits_get_errstatus(status, text);
+
+        ostringstream str;
+        str << "Writing row " << fNumRows << " failed in '"+fFile->name()+"': " << text << " (file_write_tblbytes,rc=" << status << ")";
+        Error(str);
+    }
+
+    start += size;
+    return status==0;
+}
+
+void FitsFile::Close()
+{
+    if (!fFile)
+        return;
+
+    if (fIsOwner)
+    {
+        const string name = fFile->name();
+        delete fFile;
+    }
+
+    //WARNING: do NOT delete the table as it gets deleted by the
+    // fFile object
+    fFile = NULL;
+    fTable = NULL;
+}
+
+void FitsFile::Flush()
+{
+    if (!fFile)
+        return;
+
+    int status = 0;
+    fits_flush_file(fFile->fitsPointer(), &status);
+
+    if (status)
+    {
+        char text[30];
+        fits_get_errstatus(status, text);
+
+        ostringstream str;
+        str << "Flushing file " << fFile->name() << " failed: " << text << " (fits_flush_file, rc=" << status << ")";
+        Error(str);
+    }
+}
+size_t FitsFile::GetDataSize() const
+{
+    size_t size = 0;
+
+    for (vector<string>::const_iterator it=fColTypes.begin();
+         it!=fColTypes.end(); it++)
+    {
+        size_t id=0;
+
+        int n=1;
+        try { n = stoi(*it, &id); }
+        catch (const exception&) { }
+
+        if (n==0)
+            continue;
+
+        switch ((*it)[id])
+        {
+        case 'L':
+        case 'A': size += n*1; break; // ascii
+        case 'B': size += n*1; break; // logical/byte
+        case 'I': size += n*2; break; // short
+        case 'J': size += n*4; break; // int
+        case 'K': size += n*8; break; // long long
+        case 'E': size += n*4; break; // float
+        case 'D': size += n*8; break; // double
+        default:
+            throw runtime_error("FitsFile::GetDataSize - id not known.");
+        }
+    }
+
+    return size;
+}
Index: branches/testFACT++branch/src/FitsFile.h
===================================================================
--- branches/testFACT++branch/src/FitsFile.h	(revision 18277)
+++ branches/testFACT++branch/src/FitsFile.h	(revision 18277)
@@ -0,0 +1,109 @@
+#ifndef FACT_FitsFile
+#define FACT_FitsFile
+
+#include <CCfits/CCfits>
+
+#include "MessageImp.h"
+#include "Time.h"
+
+class FitsFile : public MessageImp
+{
+public:
+    MessageImp &fMsg;
+
+    std::vector<std::string> fColNames;
+    std::vector<std::string> fColTypes;
+    std::vector<std::string> fColUnits;
+
+    CCfits::FITS*  fFile;        /// The pointer to the CCfits FITS file
+    CCfits::Table* fTable;       /// The pointer to the CCfits binary table
+
+    size_t fNumRows;             ///the number of rows that have been written already to the FITS file.
+    size_t fCursor;
+
+    bool fIsOwner;
+
+    int Write(const Time &time, const std::string &txt, int qos)
+    {
+        return fMsg.Write(time, txt, qos);
+    }
+
+public:
+    FitsFile(MessageImp &imp) :
+        fMsg(imp), fFile(0), fTable(0), fNumRows(0), fCursor(0)
+    {
+    }
+    ~FitsFile() { Close(); }
+
+    bool WriteDefaultKeys(const string &prgname, float version=1.0);
+
+    void AddColumn(char type, const string &name, int numElems=1, const string &unit="");
+    void AddColumn(const string &name, const string &format, const string &unit="");
+    void AddColumn(char type, const string &name, const string &unit)
+    {
+        AddColumn(type, name, 1, unit);
+    }
+
+    void ResetColumns();
+
+    bool OpenFile(const string &filename, bool allow_open=false);
+    bool SetFile(CCfits::FITS *file=0);
+    bool OpenTable(const string &tablename);
+    bool OpenNewTable(const string &tableName, int maxtry=1);
+
+    template <typename T>
+    void WriteKey(const string &name, const T &value, const string &comment)
+    {
+        if (fTable)
+            fTable->addKey(name, value, comment);
+    }
+
+    template <typename T>
+        bool WriteKeyNT(const string &name, const T &value, const string &comment)
+    {
+        if (!fTable)
+            return false;
+
+        try
+        {
+            fTable->addKey(name, value, comment);
+        }
+        catch (CCfits::FitsException e)
+        {
+            Error("CCfits::Table::addKey failed for '"+name+"' in '"+fFile->name()+'/'+fTable->name()+"': "+e.message());
+            return false;
+        }
+
+        return true;
+    }
+
+    bool AddRow();
+    bool WriteData(size_t &start, const void *ptr, size_t size);
+    bool WriteData(const void *ptr, size_t size)
+    {
+        return WriteData(fCursor, ptr, size);
+    }
+
+    template<typename T>
+        bool WriteData(const std::vector<T> &vec)
+    {
+        return WriteData(fCursor, vec.data(), vec.size()*sizeof(T));
+    }
+
+    void Close();
+
+    void Flush();
+
+    bool IsOpen() const { return fFile && fTable; }
+
+    const std::vector<std::string> &GetColumnTypes() const { return fColTypes; }
+    string GetName() const { return fFile ? fFile->name() : "<no file open>"; }
+    bool IsOwner() const { return fIsOwner; }
+
+    size_t GetDataSize() const;
+
+    size_t GetNumRows() const { return fNumRows; }
+
+};
+
+#endif
Index: branches/testFACT++branch/src/HeadersAgilent.h
===================================================================
--- branches/testFACT++branch/src/HeadersAgilent.h	(revision 18277)
+++ branches/testFACT++branch/src/HeadersAgilent.h	(revision 18277)
@@ -0,0 +1,31 @@
+#ifndef FACT_HeadersAgilent
+#define FACT_HeadersAgilent
+
+namespace Agilent
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected,
+            kVoltageOff,
+            kVoltageLow,
+            kVoltageOn,
+            kVoltageHigh,
+        };
+    }
+
+    struct Data
+    {
+        float fVoltageSet;
+        float fVoltageMeasured;
+
+        float fCurrentLimit;
+        float fCurrentMeasured;
+
+        Data() : fVoltageSet(-1), fVoltageMeasured(-1), fCurrentLimit(-1), fCurrentMeasured(-1) { }
+    };
+}
+
+#endif
Index: branches/testFACT++branch/src/HeadersBIAS.h
===================================================================
--- branches/testFACT++branch/src/HeadersBIAS.h	(revision 18277)
+++ branches/testFACT++branch/src/HeadersBIAS.h	(revision 18277)
@@ -0,0 +1,52 @@
+#ifndef FACT_HeadersBIAS
+#define FACT_HeadersBIAS
+
+namespace BIAS
+{
+    enum
+    {
+        kNumBoards           = 13,
+        kNumChannelsPerBoard = 32,
+        kNumChannels = kNumBoards*kNumChannelsPerBoard
+    };
+
+    enum Command_t
+    {
+        // Communication commands
+        kCmdReset         =  0,
+        kCmdRead          =  1,
+        kCmdGlobalSet     =  2,
+        kCmdChannelSet    =  3,
+
+        // Internal command names
+        kResetChannels    = 0x10|kCmdChannelSet,
+        kUpdate           = 0x10|kCmdRead,
+        kExpertChannelSet = 0x14|kCmdChannelSet,
+        kSynchronize      = 0x1e,
+    };
+
+    enum
+    {
+        kMaxDac = 0xfff
+    };
+
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,//StateMachineImp::kSM_UserMode,
+            kConnecting,
+            kInitializing,
+            kConnected,
+            kRamping,
+            kOverCurrent,
+            kVoltageOff,
+            kNotReferenced,
+            kVoltageOn,
+            kExpertMode, // 'forward' declaration to be used in StateMachineBias
+            kLocked,
+        };
+    }
+}
+
+#endif
Index: branches/testFACT++branch/src/HeadersDrive.h
===================================================================
--- branches/testFACT++branch/src/HeadersDrive.h	(revision 18277)
+++ branches/testFACT++branch/src/HeadersDrive.h	(revision 18277)
@@ -0,0 +1,79 @@
+#ifndef FACT_HeadersDrive
+#define FACT_HeadersDrive
+
+namespace Drive
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected,
+            kLocked,
+            kNotReady,
+            kReady,
+            kArmed,
+            kMoving,
+            kTracking,
+            kOnTrack,
+        };
+    };
+
+    struct DimPointing
+    {
+    } __attribute__((__packed__));
+
+    struct DimTracking
+    {
+    } __attribute__((__packed__));
+
+    struct DimStarguider
+    {
+        double fMissZd;
+        double fMissAz;
+
+        double fNominalZd;
+        double fNominalAz;
+
+        double fCenterX;
+        double fCenterY;
+
+        double fBrightness;
+
+        uint16_t fNumCorrelated;
+        uint16_t fNumLeds;
+        uint16_t fNumRings;
+        uint16_t fNumStars;
+
+    } __attribute__((__packed__));
+
+    struct DimTPoint
+    {
+        double fRa;
+        double fDec;
+
+        double fNominalZd;
+        double fNominalAz;
+
+        double fPointingZd;
+        double fPointingAz;
+
+        double fFeedbackZd;
+        double fFeedbackAz;
+
+        uint16_t fNumLeds;
+        uint16_t fNumRings;
+ 
+        double fCenterX;
+        double fCenterY;
+        double fCenterMag;
+
+        double fStarX;
+        double fStarY;
+        double fStarMag;
+
+        double fRealMag;
+
+    } __attribute__((__packed__));
+};
+#endif
Index: branches/testFACT++branch/src/HeadersEventServer.h
===================================================================
--- branches/testFACT++branch/src/HeadersEventServer.h	(revision 18277)
+++ branches/testFACT++branch/src/HeadersEventServer.h	(revision 18277)
@@ -0,0 +1,16 @@
+#ifndef FACT_HeadersEventServer
+#define FACT_HeadersEventServer
+
+namespace EventServer
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kIdle = 1,
+            kStandby,
+            kRunning,
+        };
+    };
+};
+#endif
Index: branches/testFACT++branch/src/HeadersFAD.cc
===================================================================
--- branches/testFACT++branch/src/HeadersFAD.cc	(revision 18277)
+++ branches/testFACT++branch/src/HeadersFAD.cc	(revision 18277)
@@ -0,0 +1,97 @@
+#include "HeadersFAD.h"
+
+#include <string.h>
+
+#include <iomanip>
+
+using namespace std;
+
+void FAD::EventHeader::print(std::ostream &out) const
+{
+    out << "Delimiter:  " << hex << fStartDelimiter;
+    out << (fStartDelimiter==kDelimiterStart?" (ok)":" (WRONG)") << endl;
+    out << " (Crate=" << dec << Crate() << ", Board=" << Board() << ", Version=" << (fVersion>>8) << "." << (fVersion&0xff) << ", DNA=" << hex << fDNA <<")" << endl;
+
+    out << dec;
+    out << "PkgLength:  " << fPackageLength << endl;
+
+    out << "RunNumber:  " << fRunNumber << endl;
+    out << "Time:       " << setprecision(3) << fixed << fTimeStamp/10000. << "s" << endl;
+    out << "EvtCounter: " << fEventCounter << " of " << fNumTriggersToGenerate << endl;
+    out << "Trigger:    Type=" << hex << fTriggerType << dec << " Counter=" << fTriggerCounter << " Crc=0x" << hex << fTriggerCrc << endl;
+
+    out << "            N/40  = " << dec << GetTriggerLogic() << endl;
+    out << "            TRG   =";
+
+    if (IsTriggerPhys())
+        out << " phys";
+    if (HasTriggerPed())
+        out << " ped";
+    if (HasTriggerLPext())
+        out << " LPext";
+    if (HasTriggerLPint())
+        out << " LPint";
+    if (HasTIMsource())
+        out << " TIM";
+    if (HasTriggerExt1())
+        out << " ext1";
+    if (HasTriggerExt2())
+        out << " ext2";
+    out << endl;
+
+    out << "            LPset = " << GetTriggerLPset() << endl;
+
+    out << "RefClock:   " << dec << fFreqRefClock << " (approx. " << fFreqRefClock*2.048 <<  "GHz)" << endl;
+    out << "PhaseShift: " << fAdcClockPhaseShift << endl;
+    out << "Prescaler:  " << fTriggerGeneratorPrescaler << endl;
+
+    out << "DAC:       " << dec;
+    for (int i=0; i<kNumDac; i++)
+        out << " " << fDac[i];
+    out << endl;
+
+    out << "Temp:      " << dec;
+    for (int i=0; i<kNumTemp; i++)
+        out << " " << GetTemp(i);
+    out << endl;
+
+    out << "Status=" << hex << fStatus << endl;
+    // PllLock -> 1111
+    out << "  RefClk locked (PLLLCK):  ";
+    if ((PLLLCK()&15)==15)
+        out << "all";
+    else
+        if (PLLLCK()==0)
+            out << "none";
+        else
+            out
+                << "0:" << ((PLLLCK()&1)?"yes":"no") << " "
+                << "1:" << ((PLLLCK()&2)?"yes":"no") << " "
+                << "2:" << ((PLLLCK()&4)?"yes":"no") << " "
+                << "3:" << ((PLLLCK()&8)?"yes":"no") << endl;
+//    if (IsRefClockTooHigh())
+//        out << " (too high)";
+    if (IsRefClockTooLow())
+        out << " (too low)";
+    out << endl;
+    out << "  Domino wave (Denable):     " << (HasDenable()?"enabled":"disabled") << endl;
+    out << "  DRS sampling (Dwrite):     " << (HasDwrite()?"enabled":"disabled") << endl;
+    out << "  Dig.clock manager (DCM):   " << (IsDcmLocked()?"locked":"unlocked");
+    out << " / " << (IsDcmReady()?"ready":"not ready") << endl;
+    out << "  SPI Serial Clock (SCLK):   " << (HasSpiSclk()?"enabled":"disabled") << endl;
+    out << "  Busy enabled:              ";
+    if (HasBusyOn())
+        out << "constantly enabled" << endl;
+    else
+        out << (HasBusyOff()?"constantly disabled":"normal") << endl;
+    out << "  Trigger line enabled:      " << (HasTriggerEnabled()?"enabled":"disabled") << endl;
+    out << "  Continous trigger enabled: " << (HasContTriggerEnabled()?"enabled":"disabled") << endl;
+    out << "  Data transmission socket:  " << (IsInSock17Mode()?"Socket 1-7":"Sockets 0") << endl;
+}
+
+void FAD::ChannelHeader::print(std::ostream &out) const
+{
+    out << "Chip=" << dec << Chip() << " Ch=" << Channel() << ":";
+    out << " StartCell=" << fStartCell;
+    out << " ROI=" << fRegionOfInterest << endl;
+}
Index: branches/testFACT++branch/src/HeadersFAD.h
===================================================================
--- branches/testFACT++branch/src/HeadersFAD.h	(revision 18277)
+++ branches/testFACT++branch/src/HeadersFAD.h	(revision 18277)
@@ -0,0 +1,393 @@
+#ifndef FACT_HeadersFAD
+#define FACT_HeadersFAD
+
+#ifdef __cplusplus
+#include <ostream>
+
+// For debugging
+#include <iostream>
+
+#include "ByteOrder.h"
+
+// ====================================================================
+
+namespace FAD
+{
+#endif
+    enum Enable
+    {
+        kCmdDrsEnable         = 0x0600,  // CMD_DENABLE/CMD_DISABLE
+        kCmdDwrite            = 0x0800,  // CMD_DWRITE_RUN/CMD_DWRITE_STOP
+        kCmdSclk              = 0x1000,  // CMD_SCLK_ON/OFF
+        kCmdSrclk             = 0x1500,  // CMD_SRCLK_ON/OFF
+        kCmdTriggerLine       = 0x1800,  // CMD_TRIGGERS_ON/CMD_TRIGGERS_OFF
+        kCmdContTrigger       = 0x1f00,
+        kCmdRun               = 0x2200,  // CMD_Start/Stop
+        kCmdBusyOff           = 0x2400,  //
+        kCmdBusyOn            = 0x3200,  //
+        kCmdResetEventCounter = 0x2A00,  //
+        kCmdSocket            = 0x3000,  // CMD_mode_command/CMD_mode_all_sockets
+        kCmdSingleTrigger     = 0xA000,  // CMD_Trigger
+    };
+
+    enum Commands
+    {
+        kCmdWriteExecute      = 0x0400,         // Configure FAD with the current config ram
+
+        kCmdWrite             = 0x0500,         // write to Config-RAM
+        kCmdWriteRoi          = kCmdWrite|0x00, // Baseaddress ROI-Values
+        kCmdWriteDac          = kCmdWrite|0x24, // Baseaddress DAC-Values
+
+        kCmdWriteRate         = kCmdWrite|0x2c, // Continous trigger rate
+        kCmdWriteRunNumberMSW = kCmdWrite|0x2d, // Run Number most  significant word
+        kCmdWriteRunNumberLSW = kCmdWrite|0x2e, // Run Number least significant word
+
+        /*
+         kCmdRead            = 0x0a00,         // read from Config-RAM
+         kCmdReadRoi         = kCmdRead|0x00,  // Baseaddress ROI-Values
+         kCmdReadDac         = kCmdRead|0x24,  // Baseaddress DAC-Values
+         */
+
+        kCmdPhaseIncrease   = 0x1200,         // CMD_PS_DIRINC
+        kCmdPhaseDecrease   = 0x1300,         // CMD_PS_DIRDEC
+        kCmdPhaseApply      = 0x1400,         // CMD_PS_DO
+        kCmdPhaseReset      = 0x1700,         // CMD_PS_RESET
+    };
+
+    namespace State
+    {
+        enum States
+        {
+            // State Machine states
+            kOffline = 1,   // StateMachineImp::kSM_UserMode
+            kDisconnected,
+            kConnecting,
+            kConnected,
+            kConfiguring1,
+            kConfiguring2,
+            kConfiguring3,
+            kConfigured,
+            kRunInProgress
+        };
+    }
+
+    enum FileFormat_t
+    {
+        kNone = 0,  // Nothing is written just some little output in the log-stream
+        kDebug,     // The contents of the headers are output to the console
+        kFits,      // FITS file written with streamer class ofits
+        kRaw,       // Raw binary streams are written
+        kCalib,     // DRS calibration in progress
+        kCfitsio,   // FITS file written with cfitsio
+        kZFits,     // Compressed FITS file written
+    };
+
+    enum
+    {
+        kMaxBins            = 1024,
+        kNumTemp            = 4,
+        kNumDac             = 8,
+        kNumChips           = 4,
+        kNumChannelsPerChip = 9,
+        kNumChannels        = kNumChips*kNumChannelsPerChip,
+    };
+
+    enum
+    {
+        kMaxRegAddr   = 0xff,    // Highest address in config-ram
+        kMaxRegValue  = 0xffff,
+        kMaxDacAddr   = kNumDac-1,
+        kMaxDacValue  = 0xffff,
+        kMaxRoiAddr   = kNumChannels-1,
+        kMaxRoiValue  = kMaxBins,
+        kMaxRunNumber = 0xffffffff,
+    };
+
+    enum
+    {
+        kDelimiterStart = 0xfb01,
+        kDelimiterEnd   = 0x04fe,
+    };
+
+    // --------------------------------------------------------
+
+    struct EventHeader
+    {
+#ifdef __cplusplus
+        enum Bits
+        {
+            kDenable       = 1<<11,
+            kDwrite        = 1<<10,
+            //kRefClkTooHigh = 1<< 9,
+            kRefClkTooLow  = 1<< 8,
+            kDcmLocked     = 1<< 7,
+            kDcmReady      = 1<< 6,
+            kSpiSclk       = 1<< 5,
+            kBusyOff       = 1<< 4,  // Busy continously off
+            kTriggerLine   = 1<< 3,  // Trigger line enabled
+            kContTrigger   = 1<< 2,  // Cont trigger enabled
+            kSock17        = 1<< 1,  // Socket 1-7 for data transfer
+            kBusyOn        = 1<< 0,  // Busy continously on
+        };
+
+        enum TriggerType
+        {
+            kLPext    = 0x0100,
+            kLPint    = 0x0200,
+            kPedestal = 0x0400,
+            kLPset    = 0x7800,
+            kTIM      = 0x8000,
+
+            kExt1     = 0x0001,
+            kExt2     = 0x0002,
+            kAll      = kLPext|kLPint|kTIM|kPedestal|kExt1|kExt2
+        };
+#endif
+        // Einmalig:     (new header changes entry in array --> send only if array changed)
+        // ----------------------------------
+        // Event builder stores an array with all available values.
+        // Disconnected boards are removed (replaced by def values)
+        // Any received header information is immediately put in the array.
+        // The array is transmitted whenever it changes.
+        // This will usually happen only very rarely when a new connection
+        // is opened.
+        //
+        // Array[40] of BoardId
+        // Array[40] of Version
+        // Array[40] of DNA
+
+        // Slow changes: (new header changes entry in array --> send only if arra changed)
+        // -------------------------------------------
+        // Event builder stores an array with all available values.
+        // Disconnected boards can be kept in the arrays.
+        // Any received header information is immediately put in the array.
+        // The array is transmitted whenever it changes.
+        //
+        // Connection status (disconnected, connecting, connected) / Array[40]
+        // Consistency of PLLLCK       / Array[  40] of PLLLCK
+        // Consistency of Trigger type / Array[  40] of trigger type
+        // Consistency of ROI          / Array[1440] of ROI
+        // Consistency of RefClock     / Array[  40] of ref clock
+        // Consistency of DAC values   / Array[ 400] of DAC values
+        // Consistency of run number   / Array[  40] of Run numbers
+
+        // Fast changes  (new header changes value --> send only if something changed)
+        // -------------------
+        // Event builder stores an internal array of all boards and
+        //  transmits the min/max values determined from the array
+        //  only if they have changed. Disconnected boards are not considered.
+        //
+        // Maximum/minimum Event counter of all boards in memory + board id
+        // Maximum/minimum time stamp    of all boards in memory + board id
+        // Maximum/minimum temp          of all boards in memory + board id
+
+        // Unknown:
+        // ------------------
+        // Trigger Id ?
+        // TriggerGeneratorPrescaler ?
+        // Number of Triggers to generate ?
+
+
+        // ------------------------------------------------------------
+
+        uint16_t fStartDelimiter;     // 0x04FE
+        uint16_t fPackageLength;
+        uint16_t fVersion;
+        uint16_t fStatus;
+        //
+        uint16_t fTriggerCrc;          // Receiver timeout / CRC ; 1 byte each
+        uint16_t fTriggerType;
+        uint32_t fTriggerCounter;
+        //
+        uint32_t fEventCounter;
+        uint32_t fFreqRefClock;
+        //
+        uint16_t fBoardId;
+        uint16_t fAdcClockPhaseShift;
+        uint16_t fNumTriggersToGenerate;
+        uint16_t fTriggerGeneratorPrescaler;
+        //
+        uint64_t fDNA; // Xilinx DNA
+        //
+        uint32_t fTimeStamp;
+        uint32_t fRunNumber;
+        //
+        int16_t  fTempDrs[kNumTemp];   // In units of 1/16 deg(?)
+        //
+        uint16_t fDac[kNumDac];
+        //
+#ifdef __cplusplus
+        EventHeader() { init(*this); }
+        EventHeader(const uint16_t *ptr)
+        {
+            *this = std::vector<uint16_t>(ptr, ptr+sizeof(EventHeader)/2);
+        }
+
+        void operator=(const std::vector<uint16_t> &vec)
+        {
+            ntohcpy(vec, *this);
+
+            Reverse(&fEventCounter);
+            Reverse(&fTriggerCounter);
+            Reverse(&fFreqRefClock);
+            Reverse(&fTimeStamp);
+            Reverse(&fRunNumber);
+
+            for (int i=0; i<8; i+=2)
+                std::swap(reinterpret_cast<uint8_t*>(&fDNA)[i],
+                          reinterpret_cast<uint8_t*>(&fDNA)[i+1]);
+        }
+
+        std::vector<uint16_t> HtoN() const
+        {
+            EventHeader h(*this);
+
+            Reverse(&h.fEventCounter);
+            Reverse(&h.fFreqRefClock);
+            Reverse(&h.fTimeStamp);
+            Reverse(&h.fRunNumber);
+
+            for (int i=0; i<8; i+=2)
+                std::swap(reinterpret_cast<uint8_t*>(&h.fDNA)[i],
+                          reinterpret_cast<uint8_t*>(&h.fDNA)[i+1]);
+
+            return htoncpy(h);
+        }
+
+        bool operator==(const EventHeader &h) const
+        {
+            return
+                (fStatus&~(kSock17|kBusyOn)) == (h.fStatus&~(kSock17|kBusyOn)) &&
+                fRunNumber == h.fRunNumber &&
+                fEventCounter == h.fEventCounter &&
+                fAdcClockPhaseShift == h.fAdcClockPhaseShift &&
+                fTriggerGeneratorPrescaler == h.fTriggerGeneratorPrescaler &&
+                memcmp(fDac, h.fDac, sizeof(fDac))==0;
+        }
+        bool operator!=(const EventHeader &h) const { return !operator==(h); }
+
+        float GetTemp(int i) const { return fTempDrs[i]/16.; }
+
+        uint8_t PLLLCK() const         { return fStatus>>12; }
+
+        bool HasDenable() const        { return fStatus&kDenable; }
+        bool HasDwrite() const         { return fStatus&kDwrite; }
+//        bool IsRefClockTooHigh() const { return fStatus&kRefClkTooHigh; }
+        bool IsRefClockTooLow() const  { return fStatus&kRefClkTooLow; }
+        bool IsDcmLocked() const       { return fStatus&kDcmLocked; }
+        bool IsDcmReady() const        { return fStatus&kDcmReady; }
+        bool HasSpiSclk() const        { return fStatus&kSpiSclk; }
+        bool HasBusyOn() const         { return fStatus&kBusyOn; }
+        bool HasBusyOff() const        { return fStatus&kBusyOff; }
+        bool HasTriggerEnabled() const { return fStatus&kTriggerLine; }
+        bool HasContTriggerEnabled() const { return fStatus&kContTrigger; }
+        bool IsInSock17Mode() const    { return fStatus&kSock17; }
+
+        int  GetTriggerLogic() const { return (fTriggerType>>2)&0x3f; }
+        bool HasTriggerExt1() const  { return fTriggerType&kExt1; }
+        bool HasTriggerExt2() const  { return fTriggerType&kExt2; }
+        bool HasTIMsource() const    { return fTriggerType&kTIM; }
+        bool HasTriggerLPext() const { return fTriggerType&kLPext; }
+        bool HasTriggerLPint() const { return fTriggerType&kLPint; }
+        bool HasTriggerPed() const   { return fTriggerType&kPedestal; }
+        bool IsTriggerPhys() const   { return !(fTriggerType&kAll); }
+        int  GetTriggerLPset() const { return (fTriggerType&kLPset)>>11; }
+
+        uint16_t Crate() const { return fBoardId>>8; }
+        uint16_t Board() const { return fBoardId&0xff; }
+
+        uint16_t Id() const { return Crate()*10+Board(); }
+
+        void Enable(Bits pos, bool enable=true)
+        {
+            if (enable)
+                fStatus |= pos;
+            else
+                fStatus &= ~pos;
+        }
+
+        void clear() { reset(*this); }
+        void print(std::ostream &out) const;
+#endif
+
+    } __attribute__((__packed__));
+
+    struct ChannelHeader
+    {
+        uint16_t fId;
+        uint16_t fStartCell;
+        uint16_t fRegionOfInterest;
+        uint16_t fDummy;
+        // uint16_t fData[];
+
+#ifdef __cplusplus
+        ChannelHeader() { init(*this); }
+
+        void operator=(const std::vector<uint16_t> &vec)
+        {
+            ntohcpy(vec, *this);
+        }
+
+        std::vector<uint16_t> HtoN() const
+        {
+            ChannelHeader h(*this);
+            return htoncpy(h);
+        }
+
+        void clear() { reset(*this); }
+        void print(std::ostream &out) const;
+
+        uint16_t Chip() const    { return fId>>4; }
+        uint16_t Channel() const { return fId&0xf; }
+#endif
+    } __attribute__((__packed__));
+
+    // Package ends with:
+    //   0x4242
+    //   0x04fe
+
+    struct Configuration
+    {
+        bool     fDwrite;
+        bool     fDenable;
+        bool     fContinousTrigger;
+        uint16_t fTriggerRate;
+        uint16_t fRoi[FAD::kNumChannelsPerChip];
+        uint16_t fDac[FAD::kNumDac];
+
+#ifdef __cplusplus
+        Configuration() { init(*this); }
+#endif
+    };
+
+    struct RunDescription
+    {
+        uint32_t maxtime;
+        uint32_t maxevt;
+        uint32_t night;
+
+        std::string name;
+
+        Configuration reference;
+    };
+
+    // --------------------------------------------------------------------
+#ifdef __cplusplus
+    inline std::ostream &operator<<(std::ostream &out, const EventHeader &h)
+    {
+        h.print(out);
+        return out;
+    }
+
+    inline std::ostream &operator<<(std::ostream &out, const ChannelHeader &h)
+    {
+        h.print(out);
+        return out;
+    }
+#endif
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif
Index: branches/testFACT++branch/src/HeadersFSC.h
===================================================================
--- branches/testFACT++branch/src/HeadersFSC.h	(revision 18277)
+++ branches/testFACT++branch/src/HeadersFSC.h	(revision 18277)
@@ -0,0 +1,51 @@
+#ifndef FACT_HeadersFSC
+#define FACT_HeadersFSC
+
+namespace FSC
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected    = 2,
+        };
+    }
+
+    enum {
+        kNumResistanceChannels = 64,
+        kNumResistanceRegs     =  8,
+        kNumVoltageChannels    = 84,
+        kNumVoltageRegs        = 11
+    };
+
+
+    struct BinaryOutput_t
+    {
+        uint8_t  ad7719_readings_since_last_muxing;
+        uint8_t  ad7719_current_channel;
+        uint32_t ad7719_current_reading;
+        uint8_t  ad7719_enables[kNumResistanceRegs];
+        uint8_t  ad7719_channels_ready[kNumResistanceRegs];
+        uint32_t ad7719_values[kNumResistanceChannels];
+        uint16_t ad7719_values_checksum;
+
+        uint8_t  adc_readings_since_last_muxing;
+        uint8_t  adc_current_channel;
+        uint16_t adc_current_reading;
+        uint8_t  adc_enables[kNumVoltageRegs];
+        uint8_t  adc_channels_ready[kNumVoltageRegs];
+        uint16_t adc_values[kNumVoltageChannels];
+        uint16_t adc_values_checksum;
+
+        uint8_t  ad7719_measured_all;    // treat it as a bool
+        uint8_t  adc_measured_all;       // treat it as a bool
+
+        uint8_t  app_reset_source;
+        uint32_t time_sec;
+        uint16_t time_ms;
+    } __attribute__((__packed__));
+}
+
+#endif
+
Index: branches/testFACT++branch/src/HeadersFTM.cc
===================================================================
--- branches/testFACT++branch/src/HeadersFTM.cc	(revision 18277)
+++ branches/testFACT++branch/src/HeadersFTM.cc	(revision 18277)
@@ -0,0 +1,209 @@
+#include "HeadersFTM.h"
+
+#include <string.h>
+
+#include <iomanip>
+
+#include "Converter.h"
+
+using namespace std;
+
+void FTM::Header::print(std::ostream &out) const
+{
+    out << "State=" << std::dec << (fState&kFtmStates);
+    switch (fState&kFtmStates)
+    {
+    case kFtmIdle:    out << " [idle]";    break;
+    case kFtmConfig:  out << " [config]";  break;
+    case kFtmRunning: out << " [running]"; break;
+    case kFtmCalib:   out << " [calib]";   break;
+    }
+
+    out << "  Type=" << fType;
+    switch (fType)
+    {
+    case kHeader:      out << " [header]";    break;
+    case kStaticData:  out << " [static]";    break;
+    case kDynamicData: out << " [dynamic]";   break;
+    case kFtuList:     out << " [ftulist]";   break;
+    case kErrorList:   out << " [errorlist]"; break;
+    case kRegister:    out << " [register]";  break;
+    }
+
+    out << "  (len=" << fDataSize << ")";
+    out << "  Id=0x" << std::hex << fBoardId;
+    out << "  FW=" << fFirmwareId;
+    out << "  TriggerCounter=" << std::dec << fTriggerCounter;
+    out << "  TimeStamp=" << fTimeStamp;
+    if (fState&kFtmLocked)
+        out << "  [locked]";
+    else
+        out << "  [unlocked]";
+    out << std::endl;
+}
+
+void FTM::FtuResponse::print(std::ostream &out) const
+{
+    out << std::hex << "Pings=" << ((fPingAddr>>8)&0x3);
+    out << "  Addr=" << std::setw(2) << (fPingAddr&0x1f);
+    out << "  DNA=" << std::setw(16) << fDNA;
+    out << " ErrorCounter=" << std::dec << fErrorCounter << std::endl;
+}
+
+void FTM::FtuList::print(std::ostream &out) const
+{
+    out << "Number of boards responded: " << std::dec << fNumBoards << " (";
+    out << fNumBoardsCrate[0] << ", ";
+    out << fNumBoardsCrate[1] << ", ";
+    out << fNumBoardsCrate[2] << ", ";
+    out << fNumBoardsCrate[3] << ")" << std::endl;
+    out << "Active boards: " << std::hex;
+    out << std::setfill('0');
+    out << std::setw(4) << fActiveFTU[0];
+    out << std::setw(4) << fActiveFTU[1];
+    out << std::setw(4) << fActiveFTU[2];
+    out << std::setw(4) << fActiveFTU[3] << std::dec << std::endl;
+    for (int c=0; c<4; c++)
+        for (int b=0; b<10; b++)
+        {
+            out << ' ' << c << ':' << std::setfill('0') << std::setw(2) << b << ": ";
+            out << fFTU[c][b];
+        }
+}
+
+void FTM::DynamicDataBoard::print(std::ostream &out) const
+{
+    out << "Rate=" << std::setw(5) << fRateTotal << " (";
+    out << std::setw(5) << fRatePatch[0] << ", ";
+    out << std::setw(5) << fRatePatch[1] << ", ";
+    out << std::setw(5) << fRatePatch[2] << ", ";
+    out << std::setw(5) << fRatePatch[3] << ") ";
+    out << "Overflow=" << fOverflow << " ";
+    out << "CrcError=" << fCrcError << std::endl;
+}
+
+void FTM::DynamicData::print(std::ostream &out) const
+{
+    out << "OnTime=" << std::dec << fOnTimeCounter << " ";
+    out << "Temp=(";
+    out << fTempSensor[0] << ",";
+    out << fTempSensor[1] << ",";
+    out << fTempSensor[2] << ",";
+    out << fTempSensor[3] << ")" << std::endl;
+
+    for (int c=0; c<4; c++)
+        for (int b=0; b<10; b++)
+        {
+            out << ' ' << c << ':' << std::setfill('0') << std::setw(2) << b << ": ";
+            out << fBoard[c][b];
+        }
+}
+
+void FTM::StaticDataBoard::print(std::ostream &out) const
+{
+    out << "Enable=( " << std::hex;
+    for (int i=0; i<4; i++)
+        out << std::setw(4) << fEnable[i] << " ";
+    out << ")  " << std::dec;
+
+    out << "DAC A=" << fDAC[0] << " ";
+    out << "B=" << fDAC[1] << " ";
+    out << "C=" << fDAC[2] << " ";
+    out << "D=" << fDAC[3] << " ";
+    out << "H=" << fDAC[4] << "  ";
+
+    out << "Prescaling=" << fPrescaling << endl;
+}
+
+void FTM::StaticData::print(std::ostream &out) const
+{
+    out << std::hex;
+    out << "General settings: ";
+    if (IsEnabled(kTrigger))
+        out << " Trigger";
+    if (IsEnabled(kPedestal))
+        out << " Pedestal";
+    if (IsEnabled(kLPint))
+        out << " LPint";
+    if (IsEnabled(kLPext))
+        out << " LPext";
+    if (IsEnabled(kExt1))
+        out << " Ext1";
+    if (IsEnabled(kExt2))
+        out << " Ext2";
+    if (IsEnabled(kVeto))
+        out << " Veto";
+    if (IsEnabled(kClockConditioner))
+        out << " ClockCond";
+    out << " (" << fGeneralSettings << ")" << endl;
+    out << "Status LEDs:       " << fStatusLEDs << endl;
+    out << std::dec;
+    out << "TriggerInterval:   " << fTriggerInterval << " ms" << endl;
+    out << "TriggerSequence:   ";
+    out <<  (fTriggerSequence     &0x1f) << ":";
+    out << ((fTriggerSequence>> 5)&0x1f) << ":";
+    out << ((fTriggerSequence>>10)&0x1f) << " (LPint:LPext:PED)" << endl;
+    out << "Coinc. physics:    " << std::setw(2) << fMultiplicityPhysics << "/N  ";
+    out << fWindowPhysics*4+8 << "ns" << endl;
+    out << "Coinc. calib:      " << std::setw(2) << fMultiplicityCalib << "/N  ";
+    out << fWindowCalib*4+8 << "ns" << endl;
+    out << "Trigger delay:     " << fDelayTrigger*4+8 << "ns" << endl;
+    out << "Time marker delay: " << fDelayTimeMarker*4+8 << "ns" << endl;
+    out << "Dead time:         " << fDeadTime*4+8 << "ns" << endl;
+    out << "Light pulser (int): " << dec << (int)fIntensityLPint;
+    if (fEnableLPint&kGroup1)
+        out << " + Group1";
+    if (fEnableLPint&kGroup2)
+        out << " + Group2";
+    out << endl;
+    out << "Light pulser (ext): " << dec << (int)fIntensityLPext;
+    if (fEnableLPext&kGroup1)
+        out << " + Group1";
+    if (fEnableLPext&kGroup2)
+        out << " + Group2";
+    out << endl;
+    out << "Clock conditioner:";
+    out << std::hex << setfill('0');
+    for (int i=0; i<8; i++)
+        out << " " << setw(8) << fClockConditioner[i];
+    out << endl;
+    out << "Active FTUs:       ";
+    out << fActiveFTU[0] << " ";
+    out << fActiveFTU[1] << " ";
+    out << fActiveFTU[2] << " ";
+    out << fActiveFTU[3] << endl;
+    out << std::dec;
+
+    for (int c=0; c<4; c++)
+        for (int b=0; b<10; b++)
+        {
+            out << ' ' << c << ':' << std::setfill('0') << std::setw(2) << b << ": ";
+            out << fBoard[c][b];
+        }
+}
+
+void FTM::Error::print(std::ostream &out) const
+{
+    out << dec;
+    out << "ERROR: Num Calls   = " << fNumCalls;
+    if (fNumCalls==0)
+        out << " (too many)";
+    out << endl;
+    out << "       Delimiter   = " << (fDelimiter=='@'?"ok":"wrong") << endl;
+    out << "       Path        = ";
+    if (fSrcAddress==0xc0)
+        out << "FTM(192)";
+    else
+        out << "FTU(" << (fSrcAddress &0x3) << ":" << (fSrcAddress >>2) << ")";
+    out << " --> ";
+    if (fDestAddress==0xc0)
+        out << "FTM(192)";
+    else
+        out << "FTU(" << (fDestAddress&0x3) << ":" << (fDestAddress>>2) << ")";
+    out << endl;
+    out << "       FirmwareId  = " << hex << fFirmwareId << endl;
+    out << "       Command     = " << hex << fCommand << endl;
+    out << "       CRC counter = " << dec << fCrcErrorCounter << endl;
+    out << "       CRC         = " << hex << fCrcCheckSum << endl;
+    out << "       Data: " << Converter::GetHex<unsigned short>(fData, 0, false) << endl;
+}
Index: branches/testFACT++branch/src/HeadersFTM.h
===================================================================
--- branches/testFACT++branch/src/HeadersFTM.h	(revision 18277)
+++ branches/testFACT++branch/src/HeadersFTM.h	(revision 18277)
@@ -0,0 +1,826 @@
+#ifndef FACT_HeadersFTM
+#define FACT_HeadersFTM
+
+#include <ostream>
+
+// For debugging
+#include <iostream>
+
+#include "ByteOrder.h"
+
+// ====================================================================
+
+
+namespace FTM
+{
+    enum States
+    {
+        kFtmUndefined = 0,
+
+        // FTM internal states
+        kFtmIdle    = 1, ///< Trigger output disabled, configuration possible
+        kFtmConfig  = 2, ///< FTM and FTUs are being reconfigured
+        kFtmRunning = 3, ///< Trigger output enabled, configuration ignored
+        kFtmCalib   = 4,
+
+        kFtmStates  = 0x0ff,
+        kFtmLocked  = 0x100,
+
+    };
+
+    // idle:    not locked: 0x2711
+    // running: not locked: 0x2713
+
+    namespace State
+    {
+        enum StateMachine
+        {
+            kDisconnected = 1,
+            kConnected,
+            kIdle,
+            kValid,
+            kTriggerOn,
+            kConfiguring1,
+            kConfiguring2,
+            kConfigured1,
+            kConfigured2,
+
+            kConfigError1 = 0x101,
+            kConfigError2 = 0x102,
+            //kConfigError3 = 0x103,
+        };
+    }
+
+    /// Command codes for FTM communication
+    enum Commands
+    {
+        // First word
+        kCmdRead           = 0x0001, ///< Request data
+        kCmdWrite          = 0x0002, ///< Send data
+        kCmdStartRun       = 0x0004, ///< Enable the trigger output
+        kCmdStopRun        = 0x0008, ///< Disable the trigger output
+        kCmdPing           = 0x0010, ///< Ping all FTUs (get FTU list)
+        kCmdCrateReset     = 0x0020, ///< Reboot (no power cycle) all FTUs and FADs of one crate
+        kCmdDisableReports = 0x0040, ///< Disable transmission of rate-reports (dynamic data)
+        kCmdConfigFTU      = 0x0080, ///< Configure single FTU board
+        kCmdToggleLed      = 0xc000,
+
+        // second word for read and write
+        kCmdStaticData     = 0x0001, ///< Specifies that static (configuration) data is read/written
+        kCmdDynamicData    = 0x0002, ///< Specifies that dynamic data is read/written
+        kCmdRegister       = 0x0004, ///< Specifies that a register is read/written
+
+        // second word for StartRun
+        kStartRun          = 0x0001, ///< ...until kCmdStopRun
+        kTakeNevents       = 0x0002, ///< ...fixed number of events
+
+        // second word for kCmdCrateReset
+        kResetCrate0       = 0x0001,
+        kResetCrate1       = 0x0002,
+        kResetCrate2       = 0x0004,
+        kResetCrate3       = 0x0008,
+    };
+
+
+    /// Types sent in the header of the following data
+    enum Types
+    {
+        kHeader      = 0,  ///< Local extension to identify a header in fCounter
+        kStaticData  = 1,  ///< Static (configuration) data
+        kDynamicData = 2,  ///< Dynamic data (rates)
+        kFtuList     = 3,  ///< FTU list (answer of ping)
+        kErrorList   = 4,  ///< Error list (error when FTU communication failed)
+        kRegister    = 5,  ///< A requested register value
+    };
+
+    // --------------------------------------------------------------------
+
+    enum Delimiter
+    {
+        kDelimiterStart = 0xfb01, ///< Start delimiter send before each header
+        kDelimiterEnd   = 0x04fe  ///< End delimiter send after each data block
+    };
+
+    struct Header
+    {
+        uint16_t fDelimiter;      ///< Start delimiter
+        uint16_t fType;           ///< Type of the data to be received after the header
+        uint16_t fDataSize;       ///< Size in words to be received after the header (incl end delim.)
+        uint16_t fState;          ///< State of the FTM central state machine
+        uint64_t fBoardId;        ///< FPGA device DNA (unique chip id)
+        uint16_t fFirmwareId;     ///< Version number
+        uint32_t fTriggerCounter; ///< FTM internal counter of all trigger decision independant of trigger-line enable/disable (reset: start/stop run)
+        uint64_t fTimeStamp;      ///< Internal counter (micro-seconds, reset: start/stop run)
+
+        Header() { init(*this); }
+
+        std::vector<uint16_t> HtoN() const
+        {
+            Header h(*this);
+
+            Reverse(&h.fBoardId);
+            Reverse(&h.fTriggerCounter);
+            Reverse(&h.fTimeStamp);
+
+            return htoncpy(h);
+        }
+        void operator=(const std::vector<uint16_t> &vec)
+        {
+            ntohcpy(vec, *this);
+
+            Reverse(&fBoardId);
+            Reverse(&fTriggerCounter);
+            Reverse(&fTimeStamp);
+        }
+
+        void clear() { reset(*this); }
+        void print(std::ostream &out) const;
+
+    } __attribute__((__packed__));
+
+    struct DimPassport
+    {
+        uint64_t fBoardId;
+        uint16_t fFirmwareId;
+
+        DimPassport(const Header &h) :
+            fBoardId(h.fBoardId),
+            fFirmwareId(h.fFirmwareId)
+        {
+        }
+    } __attribute__((__packed__));
+
+    /*
+    struct DimTriggerCounter
+    {
+        uint64_t fTimeStamp;
+        uint32_t fTriggerCounter;
+
+        DimTriggerCounter(const Header &h) :
+            fTimeStamp(h.fTimeStamp),
+            fTriggerCounter(h.fTriggerCounter)
+       {
+        }
+    } __attribute__((__packed__));
+    */
+
+    struct StaticDataBoard
+    {
+        uint16_t fEnable[4];   /// enable of 4x9 pixels coded as 4x9bits
+        uint16_t fDAC[5];      /// 0-3 (A-D) Threshold of patches, 4 (H) Threshold for N out of 4 (12 bit each)
+        uint16_t fPrescaling;  /// Internal readout time of FTUs for trigger counter
+
+        StaticDataBoard() { init(*this); }
+
+        void print(std::ostream &out) const;
+
+    } __attribute__((__packed__));
+
+    struct StaticData
+    {
+        enum Limits
+        {
+            kMaxMultiplicity    = 40,      ///< Minimum required trigger multiplicity
+            kMaxWindow          = 0xf,     ///< (4ns * x + 8ns) At least N (multiplicity) rising edges (trigger signal) within this window
+            kMaxDeadTime        = 0xffff,  ///< (4ns * x + 8ns)
+            kMaxDelayTimeMarker = 0x3ff,   ///< (4ns * x + 8ns)
+            kMaxDelayTrigger    = 0x3ff,   ///< (4ns * x + 8ns)
+            kMaxTriggerInterval = 0x3ff,   ///< 
+            kMaxIntensity       = 0x7f,
+            kMaxSequence        = 0x1f,
+            kMaxDAC             = 0xfff,
+            kMaxAddr            = 0xfff,
+            kMaxPatchIdx        = 159,
+            kMaxPixelIdx        = 1439,
+            kMaskSettings       = 0xf,
+            kMaskLEDs           = 0xf,
+        };
+
+        enum GeneralSettings
+        {
+            kTrigger    = 0x80,  ///< Physics trigger decision (PhysicTrigger)
+            kPedestal   = 0x40,  ///< Pedestal trigger (artifical)
+            kLPint      = 0x20,  ///< Enable artificial trigger after light pulse (LP2)
+            kLPext      = 0x10,  ///< Enable trigger decision after light pulse (CalibrationTrigger, LP1)
+            kExt2       = 0x08,  ///< External trigger signal 2
+            kExt1       = 0x04,  ///< External trigger signal 1
+            kVeto       = 0x02,  ///< Veto trigger decision / artifical triggers
+            kClockConditioner = 0x01,  ///< Select clock conditioner frequency (1) / time marker (0) as output
+        };
+
+        enum LightPulserEnable
+        {
+            kGroup1 = 0x40,
+            kGroup2 = 0x80,
+        };
+
+        uint16_t fGeneralSettings;         /// Enable for different trigger types / select for TIM/ClockConditioner output (only 8 bit used)
+        uint16_t fStatusLEDs;              /// only 8 bit used
+        uint16_t fTriggerInterval;         /// [ms] Interval between two artificial triggers (no matter which type) minimum 1ms, 10 bit
+        uint16_t fTriggerSequence;         /// Ratio between trigger types send as artificial trigger (in this order) 3x5bit
+        uint8_t  fIntensityLPext;          /// Intensity of LEDs (0-127)
+        uint8_t  fEnableLPext;             /// Enable for LED group 1/2 (LightPulserEnable)
+        uint8_t  fIntensityLPint;          /// Intensity of LEDs (0-127)
+        uint8_t  fEnableLPint;             /// Enable for LED group 1/2 (LightPulserEnable)
+        uint32_t fDummy0;
+        uint16_t fMultiplicityPhysics;     /// Required trigger multiplicity for physcis triggers (0-40)
+        uint16_t fMultiplicityCalib;       /// Required trigger multiplicity calibration (LPext) triggers (0-40)
+        uint16_t fDelayTrigger;            /// (4ns * x + 8ns) FTM internal programmable delay between trigger decision and output
+        uint16_t fDelayTimeMarker;         /// (4ns * x + 8ns) FTM internal programmable delay between trigger descision and time marker output
+        uint16_t fDeadTime;                /// (4ns * x + 8ns) FTM internal programmable dead time after trigger decision
+        uint32_t fClockConditioner[8];     /// R0, R1, R8, R9, R11, R13, R14, R15
+        uint16_t fWindowPhysics;           /// (4ns * x + 8ns) At least N (multiplicity) rising edges (trigger signal) within this window
+        uint16_t fWindowCalib;             /// (4ns * x + 8ns) At least N (multiplicity) rising edges (trigger signal) within this window
+        uint16_t fDummy1;
+
+        StaticDataBoard fBoard[4][10];      // 4 crates * 10 boards (Crate0/FTU0 == readout time of FTUs)
+
+        uint16_t fActiveFTU[4];             // 4 crates * 10 bits   (FTU enable)
+
+        StaticData() { init(*this); }
+        StaticData(const std::vector<uint16_t> &vec)
+        {
+            ntohcpy(vec, *this);
+
+            for (int i=0; i<8; i++)
+                Reverse(fClockConditioner+i);
+        }
+
+        std::vector<uint16_t> HtoN() const
+        {
+            StaticData d(*this);
+            for (int i=0; i<8; i++)
+                Reverse(d.fClockConditioner+i);
+
+            return htoncpy(d);
+        }
+
+        bool operator==(StaticData d) const
+        {
+            for (int i=0; i<4; i++)
+                for (int j=0; j<10; j++)
+                    memcpy(d.fBoard[i][j].fDAC, fBoard[i][j].fDAC, sizeof(uint16_t)*5);
+            return memcmp(this, &d, sizeof(StaticData))==0;
+        }
+
+        bool valid() const { static StaticData empty; return memcmp(this, &empty, sizeof(FTM::StaticData))!=0; }
+
+        void clear() { reset(*this); }
+        void print(std::ostream &out) const;
+
+        StaticDataBoard &operator[](int i) { return fBoard[i/10][i%10]; }
+        const StaticDataBoard &operator[](int i) const { return fBoard[i/10][i%10]; }
+
+        void EnableFTU(int i)  { fActiveFTU[i/10] |=  (1<<(i%10)); }
+        void DisableFTU(int i) { fActiveFTU[i/10] &= ~(1<<(i%10)); }
+
+        void EnableAllFTU()    { for (int i=0; i<4; i++) fActiveFTU[i] = 0x3ff; }
+        void DisableAllFTU()   { for (int i=0; i<4; i++) fActiveFTU[i] = 0;     }
+
+        void EnableLPint(LightPulserEnable group, bool enable)
+        {
+            if (enable)
+                fEnableLPint |= group;
+            else
+                fEnableLPint &= ~group;
+        }
+
+        void EnableLPext(LightPulserEnable group, bool enable)
+        {
+            if (enable)
+                fEnableLPext |= group;
+            else
+                fEnableLPext &= ~group;
+        }
+
+        void ToggleFTU(int i)  { fActiveFTU[i/10] ^= (1<<(i%10)); }
+
+        void Enable(GeneralSettings type, bool enable)
+        {
+	    if (enable)
+		fGeneralSettings |= uint16_t(type);
+	    else
+                fGeneralSettings &= ~uint16_t(type);
+        }
+
+        bool IsEnabled(GeneralSettings type) const { return fGeneralSettings&uint16_t(type); }
+
+        uint16_t *EnablePixel(int idx, bool enable)
+        {
+            const int pixel = idx%9;
+            const int patch = (idx/9)%4;
+            const int board = (idx/9)/4;
+
+            uint16_t &pix = fBoard[board/10][board%10].fEnable[patch];
+
+            if (enable)
+                pix |= (1<<pixel);
+            else
+                pix &= ~(1<<pixel);
+
+            return &pix;
+        }
+
+        void EnablePatch(int idx, bool enable)
+        {
+            const int patch = idx%4;
+            const int board = idx/4;
+
+            fBoard[board/10][board%10].fEnable[patch] = enable ? 0x1ff : 0;
+        }
+
+        void EnableAllPixel()
+        {
+            for (int c=0; c<4; c++)
+                for (int b=0; b<10; b++)
+                    for (int p=0; p<4; p++)
+                        fBoard[c][b].fEnable[p] = 0x1ff;
+        }
+
+        bool Enabled(uint16_t idx) const
+        {
+            const int pixel = idx%9;
+            const int patch = (idx/9)%4;
+            const int board = (idx/9)/4;
+
+            return (fBoard[board/10][board%10].fEnable[patch]>>pixel)&1;
+        }
+
+        uint8_t GetSequencePed() const   { return (fTriggerSequence>>10)&0x1f; }
+        uint8_t GetSequenceLPint() const { return (fTriggerSequence>> 5)&0x1f; }
+        uint8_t GetSequenceLPext() const { return (fTriggerSequence)    &0x1f; }
+
+        void SetSequence(uint8_t ped, uint8_t lpint, uint8_t lpext)
+        {
+            fTriggerSequence = ((ped&0x1f)<<10)|((lpint&0x1f)<<5)|(lpext&0x1f);
+
+            Enable(kPedestal, ped  >0);
+            Enable(kLPext,    lpext>0);
+            Enable(kLPint,    lpint>0);
+        }
+
+        void SetClockRegister(const uint64_t reg[])
+        {
+            for (int i=0; i<8; i++)
+                fClockConditioner[i] = reg[i];
+        }
+
+        void SetPrescaling(uint16_t val)
+        {
+            for (int c=0; c<4; c++)
+                for (int b=0; b<10; b++)
+                    fBoard[c][b].fPrescaling = val;
+        }
+
+    } __attribute__((__packed__));
+
+    // DimStructures must be a multiple of two... I don't know why
+    struct DimStaticData
+    {
+        uint64_t fTimeStamp;
+        //8
+        uint16_t fGeneralSettings;         // only 8 bit used
+        uint16_t fStatusLEDs;              // only 8 bit used
+        uint64_t fActiveFTU;               // 40 bits in row
+        //20
+        uint16_t fTriggerInterval;         // only 10 bit used
+        //22
+        uint16_t fTriggerSeqLPint;         // only 5bits used
+        uint16_t fTriggerSeqLPext;         // only 5bits used
+        uint16_t fTriggerSeqPed;           // only 5bits used
+        // 28
+        uint8_t  fEnableLPint;             /// Enable for LED group 1/2 (LightPulserEnable)
+        uint8_t  fEnableLPext;             /// Enable for LED group 1/2 (LightPulserEnable)
+        uint8_t  fIntensityLPint;          /// Intensity of LEDs (0-127)
+        uint8_t  fIntensityLPext;          /// Intensity of LEDs (0-127)
+        //32
+        uint16_t fMultiplicityPhysics;      // 0-40
+        uint16_t fMultiplicityCalib;        // 0-40
+        //36
+        uint16_t fWindowPhysics;
+        uint16_t fWindowCalib;
+        //40
+        uint16_t fDelayTrigger;
+        uint16_t fDelayTimeMarker;
+        uint32_t fDeadTime;
+        //48
+        uint32_t fClockConditioner[8];
+        //64
+        uint16_t fEnable[90];  // 160*9bit = 180byte
+        uint16_t fThreshold[160];
+        uint16_t fMultiplicity[40];     // N out of 4
+        uint16_t fPrescaling[40];
+        // 640+64 = 704
+
+        bool HasTrigger() const     { return fGeneralSettings & StaticData::kTrigger; }
+        bool HasPedestal() const    { return fGeneralSettings & StaticData::kPedestal; }
+        bool HasLPext() const       { return fGeneralSettings & StaticData::kLPext; }
+        bool HasLPint() const       { return fGeneralSettings & StaticData::kLPint; }
+        bool HasExt2() const        { return fGeneralSettings & StaticData::kExt2; }
+        bool HasExt1() const        { return fGeneralSettings & StaticData::kExt1; }
+        bool HasVeto() const        { return fGeneralSettings & StaticData::kVeto; }
+        bool HasClockConditioner() const { return fGeneralSettings & StaticData::kClockConditioner; }
+
+        bool HasLPextG1() const { return fEnableLPext&StaticData::kGroup1; }
+        bool HasLPextG2() const { return fEnableLPext&StaticData::kGroup2; }
+        bool HasLPintG1() const { return fEnableLPint&StaticData::kGroup1; }
+        bool HasLPintG2() const { return fEnableLPint&StaticData::kGroup2; }
+
+        bool IsActive(int i) const { return fActiveFTU&(uint64_t(1)<<i); }
+        bool IsEnabled(int i) const { return fEnable[i/16]&(1<<(i%16)); }
+
+        DimStaticData() { memset(this, 0, sizeof(DimStaticData)); }
+
+        DimStaticData(const Header &h, const StaticData &d) :
+            fTimeStamp(h.fTimeStamp),
+            fGeneralSettings(d.fGeneralSettings),
+            fStatusLEDs(d.fStatusLEDs),
+            fActiveFTU( uint64_t(d.fActiveFTU[0])      |
+                       (uint64_t(d.fActiveFTU[1])<<10) |
+                       (uint64_t(d.fActiveFTU[2])<<20) |
+                       (uint64_t(d.fActiveFTU[3])<<30)),
+            fTriggerInterval(d.fTriggerInterval),
+            fTriggerSeqLPint((d.fTriggerSequence>>5)&0x1f),
+            fTriggerSeqLPext((d.fTriggerSequence)&0x1f),
+            fTriggerSeqPed((d.fTriggerSequence>>10)&0x1f),
+            fEnableLPint(d.fEnableLPint),
+            fEnableLPext(d.fEnableLPext),
+            fIntensityLPint(d.fIntensityLPint),
+            fIntensityLPext(d.fIntensityLPext),
+            fMultiplicityPhysics(d.fMultiplicityPhysics),
+            fMultiplicityCalib(d.fMultiplicityCalib),
+            fWindowPhysics(d.fWindowPhysics*4+8),
+            fWindowCalib(d.fWindowCalib*4+8),
+            fDelayTrigger(d.fDelayTrigger*4+8),
+            fDelayTimeMarker(d.fDelayTimeMarker*4+8),
+            fDeadTime(uint32_t(d.fDeadTime)*4+8)
+        {
+            memcpy(fClockConditioner, d.fClockConditioner, sizeof(uint32_t)*8);
+
+            uint16_t src[160];
+            for (int i=0; i<40; i++)
+            {
+                for (int j=0; j<4; j++)
+                {
+                    src[i*4+j] = d[i].fEnable[j];
+                    fThreshold[i*4+j] = d[i].fDAC[j];
+                }
+
+                fMultiplicity[i] = d[i].fDAC[4];
+                fPrescaling[i] = d[i].fPrescaling+1;
+            }
+            bitcpy(fEnable, 90, src, 160, 9);
+        }
+
+    } __attribute__((__packed__));
+
+
+    struct DynamicDataBoard
+    {
+        uint32_t fRatePatch[4];   // Patch 0,1,2,3
+        uint32_t fRateTotal;      // Sum
+
+        uint16_t fOverflow;       // Patches: bits 0-3, total 4
+        uint16_t fCrcError;
+
+        void print(std::ostream &out) const;
+
+        void reverse()
+        {
+            for (int i=0; i<4; i++)
+                Reverse(fRatePatch+i);
+
+            Reverse(&fRateTotal);
+        }
+
+        uint32_t &operator[](int i) { return fRatePatch[i]; }
+
+    }  __attribute__((__packed__));
+
+
+    struct DynamicData
+    {
+        uint64_t fOnTimeCounter;
+        uint16_t fTempSensor[4];  // U45, U46, U48, U49
+
+        DynamicDataBoard fBoard[4][10];      // 4 crates * 10 boards
+
+        DynamicData() { init(*this); }
+
+        std::vector<uint16_t> HtoN() const
+        {
+            DynamicData d(*this);
+
+            Reverse(&d.fOnTimeCounter);
+
+            for (int c=0; c<4; c++)
+                for (int b=0; b<10; b++)
+                    d.fBoard[c][b].reverse();
+
+            return htoncpy(d);
+        }
+
+        void operator=(const std::vector<uint16_t> &vec)
+        {
+            ntohcpy(vec, *this);
+
+            Reverse(&fOnTimeCounter);
+
+            for (int c=0; c<4; c++)
+                for (int b=0; b<10; b++)
+                    fBoard[c][b].reverse();
+        }
+
+        void clear() { reset(*this); }
+        void print(std::ostream &out) const;
+
+        DynamicDataBoard &operator[](int i) { return fBoard[i/10][i%10]; }
+        const DynamicDataBoard &operator[](int i) const { return fBoard[i/10][i%10]; }
+
+    } __attribute__((__packed__));
+
+
+    struct DimDynamicData
+    {
+        uint64_t fTimeStamp;
+
+        uint64_t fOnTimeCounter;
+        float    fTempSensor[4];
+
+        uint32_t fRatePatch[160];
+
+        uint32_t fRateBoard[40];
+        uint16_t fRateOverflow[40];
+
+        uint16_t fPrescaling[40];
+
+        uint16_t fCrcError[40];
+
+        uint16_t fState;
+
+        DimDynamicData(const Header &h, const DynamicData &d, const StaticData &s) :
+            fTimeStamp(h.fTimeStamp),
+            fOnTimeCounter(d.fOnTimeCounter),
+            fState(h.fState)
+        {
+            for (int i=0; i<4; i++)
+                fTempSensor[i] = d.fTempSensor[i];
+
+            for (int i=0; i<40; i++)
+            {
+                fRateBoard[i]    = d[i].fRateTotal;
+                fRateOverflow[i] = d[i].fOverflow;
+                fCrcError[i]     = d[i].fCrcError;
+                for (int j=0; j<4; j++)
+                    fRatePatch[i*4+j] = d[i].fRatePatch[j];
+
+                fPrescaling[i] = s[i].fPrescaling+1;
+            }
+        }
+
+    } __attribute__((__packed__));
+
+    struct DimTriggerRates
+    {
+        uint64_t fTimeStamp;
+        uint64_t fOnTimeCounter;
+        uint32_t fTriggerCounter;
+        float    fTriggerRate;
+        float    fBoardRate[40];
+        float    fPatchRate[160];
+
+        float fElapsedTime;
+        float fOnTime;
+
+        DimTriggerRates() { memset(this, 0, sizeof(DimTriggerRates)); }
+
+        DimTriggerRates(const Header &h, const DynamicData &d, const StaticData &s, float rate, float et, float ot) :
+            fTimeStamp(h.fTimeStamp), fOnTimeCounter(d.fOnTimeCounter),
+            fTriggerCounter(h.fTriggerCounter), fTriggerRate(rate),
+            fElapsedTime(et), fOnTime(ot)
+        {
+            for (int i=0; i<40; i++)
+            {
+                if ((d[i].fOverflow>>4)&1)
+                    fBoardRate[i] = float(UINT32_MAX+1)*2/(s[i].fPrescaling+1);
+                else
+                    fBoardRate[i] = float(d[i].fRateTotal)*2/(s[i].fPrescaling+1);
+
+                // FIXME: Include fCrcError in calculation
+                //fRateOverflow[i] = d[i].fOverflow;
+                for (int j=0; j<4; j++)
+                    if ((d[i].fOverflow>>j)&1)
+                        fPatchRate[i*4+j] = float(UINT32_MAX+1)*2/(s[i].fPrescaling+1);
+                    else
+                        fPatchRate[i*4+j] = float(d[i].fRatePatch[j])*2/(s[i].fPrescaling+1);
+            }
+        }
+
+    } __attribute__((__packed__));
+
+
+    struct FtuResponse
+    {
+        uint16_t fPingAddr;       // Number of Pings and addr (pings= see error)
+        uint64_t fDNA;
+        uint16_t fErrorCounter;   //
+
+        void reverse() { Reverse(&fDNA); }
+
+        void print(std::ostream &out) const;
+
+    } __attribute__((__packed__));
+
+    struct FtuList
+    {
+        uint16_t fNumBoards;         /// Total number of boards responded
+        uint16_t fNumBoardsCrate[4]; /// Num of board responded in crate 0-3
+        uint16_t fActiveFTU[4];      /// List of active FTU boards in crate 0-3
+
+        FtuResponse fFTU[4][10];
+
+        FtuList() { init(*this); }
+
+        std::vector<uint16_t> HtoN() const
+        {
+            FtuList d(*this);
+
+            for (int c=0; c<4; c++)
+                for (int b=0; b<10; b++)
+                    d.fFTU[c][b].reverse();
+
+            return htoncpy(d);
+        }
+
+        void operator=(const std::vector<uint16_t> &vec)
+        {
+            ntohcpy(vec, *this);
+
+            for (int c=0; c<4; c++)
+                for (int b=0; b<10; b++)
+                    fFTU[c][b].reverse();
+        }
+
+        void clear() { reset(*this); }
+        void print(std::ostream &out) const;
+
+        FtuResponse &operator[](int i) { return fFTU[i/10][i%10]; }
+        const FtuResponse &operator[](int i) const { return fFTU[i/10][i%10]; }
+
+    } __attribute__((__packed__));
+
+    struct DimFtuList
+    {
+        uint64_t fTimeStamp;
+        uint64_t fActiveFTU;
+
+        uint16_t fNumBoards;          /// Number of boards answered in total
+        uint8_t  fNumBoardsCrate[4];  /// Number of boards answered per crate
+
+        uint64_t fDNA[40];            /// DNA of FTU board
+        uint8_t  fAddr[40];           /// Address of FTU board
+        uint8_t  fPing[40];           /// Number of pings until response (same as in Error)
+
+        DimFtuList(const Header &h, const FtuList &d) :
+            fTimeStamp(h.fTimeStamp),
+            fActiveFTU( uint64_t(d.fActiveFTU[0])      |
+                       (uint64_t(d.fActiveFTU[1])<<10) |
+                       (uint64_t(d.fActiveFTU[2])<<20) |
+                       (uint64_t(d.fActiveFTU[3])<<30)),
+            fNumBoards(d.fNumBoards)
+        {
+            for (int i=0; i<4; i++)
+                fNumBoardsCrate[i] = d.fNumBoardsCrate[i];
+
+            for (int i=0; i<40; i++)
+            {
+                fDNA[i]  =  d[i].fDNA;
+                fAddr[i] =  d[i].fPingAddr&0x3f;
+                fPing[i] = (d[i].fPingAddr>>8)&0x3;
+            }
+        }
+
+        bool IsActive(int i) const { return fActiveFTU&(uint64_t(1)<<i); }
+
+    } __attribute__((__packed__));
+
+
+    struct Error
+    {
+        uint16_t fNumCalls;   // 0=error, >1 needed repetition but successfull
+
+        uint16_t fDelimiter;
+        uint16_t fDestAddress;
+        uint16_t fSrcAddress;
+        uint16_t fFirmwareId;
+        uint16_t fCommand;
+        uint16_t fData[21];
+        uint16_t fCrcErrorCounter;
+        uint16_t fCrcCheckSum;
+
+        Error() { init(*this); }
+
+        std::vector<uint16_t> HtoN() const
+        {
+            return htoncpy(*this);
+        }
+
+        void operator=(const std::vector<uint16_t> &vec) { ntohcpy(vec, *this); }
+
+        void clear() { reset(*this); }
+
+        uint16_t &operator[](int idx) { return fData[idx]; }
+        const uint16_t &operator[](int idx) const { return fData[idx]; }
+
+        void print(std::ostream &out) const;
+
+    } __attribute__((__packed__));
+
+    struct DimError
+    {
+        uint64_t fTimeStamp;
+        Error    fError;
+
+        DimError(const Header &h, const Error &e) :
+            fTimeStamp(h.fTimeStamp),
+            fError(e)
+        {
+            fError.fDestAddress = (e.fDestAddress&0x3)*10 + ((e.fDestAddress>>2)&0xf);
+            fError.fSrcAddress  = (e.fSrcAddress &0x3)*10 + ((e.fSrcAddress >>2)&0xf);
+        }
+
+    }  __attribute__((__packed__));
+
+    /*
+    struct Command
+    {
+        uint16_t fStartDelimiter;
+        uint16_t fCommand;
+        uint16_t fParam[3];
+
+        Command() { init(*this); }
+
+        void HtoN() { hton(*this); }
+        void NtoH() { ntoh(*this); }
+
+        void operator=(const std::vector<uint16_t> &vec) { ntohcpy(vec, *this); }
+
+        void clear() { reset(*this); }
+
+
+     } __attribute__((__packed__));
+    */
+
+    // --------------------------------------------------------------------
+
+    inline std::ostream &operator<<(std::ostream &out, const FtuResponse &h)
+    {
+        h.print(out);
+        return out;
+    }
+
+    inline std::ostream &operator<<(std::ostream &out, const Header &h)
+    {
+        h.print(out);
+        return out;
+    }
+
+
+    inline std::ostream &operator<<(std::ostream &out, const FtuList &h)
+    {
+        h.print(out);
+        return out;
+    }
+
+    inline std::ostream &operator<<(std::ostream &out, const DynamicDataBoard &h)
+    {
+        h.print(out);
+        return out;
+    }
+
+    inline std::ostream &operator<<(std::ostream &out, const DynamicData &h)
+    {
+        h.print(out);
+        return out;
+    }
+
+    inline std::ostream &operator<<(std::ostream &out, const StaticDataBoard &h)
+    {
+        h.print(out);
+        return out;
+    }
+
+    inline std::ostream &operator<<(std::ostream &out, const StaticData &h)
+    {
+        h.print(out);
+        return out;
+    }
+
+    inline std::ostream &operator<<(std::ostream &out, const Error &h)
+    {
+        h.print(out);
+        return out;
+    }
+};
+
+#endif
Index: branches/testFACT++branch/src/HeadersFeedback.h
===================================================================
--- branches/testFACT++branch/src/HeadersFeedback.h	(revision 18277)
+++ branches/testFACT++branch/src/HeadersFeedback.h	(revision 18277)
@@ -0,0 +1,30 @@
+#ifndef FACT_HeadersFeedback
+#define FACT_HeadersFeedback
+
+namespace Feedback
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDimNetworkNA = 1,
+            kDisconnected,
+            kConnecting,
+            kConnected,
+
+            kCalibrating,
+            kCalibrated,
+
+            kWaitingForData,
+            kInProgress,
+
+            kWarning,
+            kCritical,
+            kOnStandby,
+
+
+        };
+    }
+}
+
+#endif
Index: branches/testFACT++branch/src/HeadersGCN.h
===================================================================
--- branches/testFACT++branch/src/HeadersGCN.h	(revision 18277)
+++ branches/testFACT++branch/src/HeadersGCN.h	(revision 18277)
@@ -0,0 +1,149 @@
+#ifndef FACT_HeadersGCN
+#define FACT_HeadersGCN
+
+namespace GCN
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected    = 2,
+            kValid        = 3,
+        };
+
+    }
+
+    struct PaketType_t
+    {
+        int16_t type;
+        string  name;
+        string  description;
+    };
+
+    static const PaketType_t kTypes[] =
+    {   // inactive, ACTIVE[1], T-Only[-], in-work[+]
+        { 1,   /*   */ "GRB_COORDS",	           "BATSE Trigger coords (the first GCN Notice Type)" },
+        { 2,   /* 1 */ "TEST_COORDS",	           "Test coords" },
+        { 3,   /* 1 */ "IM_ALIVE",	           "I'm alive socket packet every 60 sec" },
+        { 4,   /* 1 */ "KILL_SOCKET",	           "Kill a socket connection" },
+        { 11,  /*   */ "MAXBC",	                   "MAXC1/BC" },
+        { 21,  /*   */ "BRAD_COORDS",	           "Special Test coords packet for BRADFORD" },
+        { 22,  /*   */ "GRB_FINAL",	           "Final BATSE coords" },
+        { 24,  /*   */ "HUNTS_SRC",	 	   "Huntsville LOCBURST GRB coords (HitL)" },
+        { 25,  /*   */ "ALEXIS_SRC",	           "ALEXIS Transient coords" },
+        { 26,  /*   */ "XTE_PCA_ALERT",	           "XTE-PCA ToO Observation Scheduled" },
+        { 27,  /*   */ "XTE_PCA_SRC",	           "XTE-PCA GRB coords" },
+        { 28,  /*   */ "XTE_ASM_ALERT",	           "XTE-ASM Alert" },
+        { 29,  /*   */ "XTE_ASM_SRC",	           "XTE-ASM GRB coords" },
+        { 30,  /*   */ "COMPTEL_SRC",	           "COMPTEL GRB coords" },
+        { 31,  /*   */ "IPN_RAW",	           "IPN_RAW GRB annulus coords (position is center of Annulus)" },
+        { 32,  /*   */ "IPN_SEG",	           "IPN+POS GRB annulus seg (kind of a cheat to allow error filter)" },
+        { 33,  /*   */ "SAX_WFC_ALERT",	           "SAX-WFC Alert" },
+        { 34,  /*   */ "SAX_WFC_SRC",	 	   "SAX-WFC GRB coords" },
+        { 35,  /*   */ "SAX_NFI_ALERT",	           "SAX-NFI Alert" },
+        { 36,  /*   */ "SAX_NFI_SRC",	           "SAX-NFI GRB coords" },
+        { 37,  /*   */ "XTE_ASM_TRANS",	 	   "XTE-ASM TRANSIENT coords" },
+        { 38,  /* 1 */ "spare38",	           "(spare; used for s/w development testing)" },
+        { 39,  /* 1 */ "IPN_POS",	           "IPN Position coords" },
+        { 40,  /*   */ "HETE_ALERT_SRC",	   "HETE Trigger Alert" },
+        { 41,  /*   */ "HETE_UPDATE_SRC",	   "HETE Update position (multiples)" },
+        { 42,  /*   */ "HETE_FINAL_SRC",	   "HETE Last/Final position" },
+        { 43,  /*   */ "HETE_GNDANA_SRC",	   "HETE position from Ground Analysis (HitL)" },
+        { 44,  /* 1 */ "HETE_TEST",	           "HETE TEST" },
+        { 45,  /* 1 */ "GRB_CNTRPART",	           "GRB Counterpart coordinates" },
+        { 46,  /* 1 */ "SWIFT_TOO_FOM",	           "SWIFT TOO-form of the FOM" },
+        { 47,  /* 1 */ "SWIFT_TOO_SC_SLEW",	   "SWIFT TOO-form of the SC_SLEW" },
+        { 48,  /* - */ "DOW_TOD",	           "Day-of-Week Time-of-Day end2end testing" },
+        { 50,  /* 1 */ "spare50",	           "(spare; not yet assigned)" },
+        { 51,  /* 1 */ "INTEGRAL_POINTDIR",	   "INTEGRAL Pointing Direction" },
+        { 52,  /* 1 */ "INTEGRAL_SPIACS",	   "INTEGRAL SPIACS" },
+        { 53,  /* 1 */ "INTEGRAL_WAKEUP",	   "INTEGRAL Wakeup" },
+        { 54,  /* 1 */ "INTEGRAL_REFINED",	   "INTEGRAL Refined" },
+        { 55,  /* 1 */ "INTEGRAL_OFFLINE",	   "INTEGRAL Offline (HitL)" },
+        { 56,  /* 1 */ "INTEGRAL_WEAK",	           "INTEGRAL Weak" },
+        { 57,  /* + */ "AAVSO",	                   "AAVSO" },
+        { 58,  /*   */ "MILAGRO_POS",	           "MILAGRO Position" },
+        { 59,  /* 1 */ "KONUS_LC",	           "KONUS Lightcurve" },
+        { 60,  /* 1 */ "SWIFT_BAT_GRB_ALERT",	   "BAT ALERT. Never transmitted by the s/c." },
+        { 61,  /* 1 */ "SWIFT_BAT_GRB_POS_ACK",	   "BAT GRB Position Acknowledge" },
+        { 62,  /* 1 */ "SWIFT_BAT_GRB_POS_NACK",   "BAT GRB Position NOT_Ack (pos not found)." },
+        { 63,  /* 1 */ "SWIFT_BAT_GRB_LC",	   "BAT GRB Lightcurve" },
+        { 64,  /* - */ "SWIFT_BAT_SCALEDMAP",	   "BAT Scaled Map" },
+        { 65,  /* 1 */ "SWIFT_FOM_OBS",	           "BAT FOM to Observe (FOM_2OBSAT)" },
+        { 66,  /* 1 */ "SWIFT_SC_SLEW",	           "BAT S/C to Slew (FOSC_2OBSAT)" },
+        { 67,  /* 1 */ "SWIFT_XRT_POSITION",	   "XRT Position" },
+        { 68,  /* - */ "SWIFT_XRT_SPECTRUM",	   "XRT Spectrum" },
+        { 69,  /* 1 */ "SWIFT_XRT_IMAGE",	   "XRT Image (aka postage stamp)" },
+        { 70,  /* - */ "SWIFT_XRT_LC",	           "XRT Lightcurve (aka Prompt)" },
+        { 71,  /* 1 */ "SWIFT_XRT_CENTROID",	   "XRT Centroid Error (Pos Nack)" },
+        { 72,  /* 1 */ "SWIFT_UVOT_DBURST",	   "UVOT DarkBurst (aka Neighbor, aka GeNie)" },
+        { 73,  /* 1 */ "SWIFT_UVOT_FCHART",	   "UVOT Finding Chart" },
+        { 76,  /* + */ "SWIFT_BAT_GRB_LC_PROC",	   "BAT GRB Lightcurve processed" },
+        { 77,  /* - */ "SWIFT_XRT_SPECTRUM_PROC",  "XRT Spectrum processed" },
+        { 78,  /* 1 */ "SWIFT_XRT_IMAGE_PROC",	   "XRT Image processed" },
+        { 79,  /* 1 */ "SWIFT_UVOT_DBURST_PROC",   "UVOT DarkBurst proc mesg (aka Neighbor)" },
+        { 80,  /* 1 */ "SWIFT_UVOT_FCHART_PROC",   "UVOT Finding Chart processed" },
+        { 81,  /* 1 */ "SWIFT_UVOT_POS",	   "UVOT Position" },
+        { 82,  /* 1 */ "SWIFT_BAT_GRB_POS_TEST",   "BAT GRB Position Test" },
+        { 83,  /* 1 */ "SWIFT_POINTDIR",	   "Pointing Direction" },
+        { 84,  /* 1 */ "SWIFT_BAT_TRANS",	   "BAT Hard X-ray Transient coords" },
+        { 85,  /* - */ "SWIFT_XRT_THRESHPIX",	   "XRT Thresholded-Pixel-list" },
+        { 86,  /* - */ "SWIFT_XRT_THRESHPIX_PROC", "XRT Thresholded-Pixel-list processed" },
+        { 87,  /* - */ "SWIFT_XRT_SPER",	   "XRT Single-Pixel-Event-Report" },
+        { 88,  /* - */ "SWIFT_XRT_SPER_PROC",	   "XRT Single-Pixel-Event-Report processed" },
+        { 89,  /* 1 */ "SWIFT_UVOT_POS_NACK",	   "UVOT Position Nack (contains BATs/XRTs position)" },
+        { 90,  /* - */ "SWIFT_BAT_ALARM_SHORT",	   "SWIFT Appendix_C non-public (Team Ops)" },
+        { 91,  /* - */ "SWIFT_BAT_ALARM_LONG",	   "SWIFT Appendix_C non-public (Team Ops)" },
+        { 92,  /* - */ "SWIFT_UVOT_EMERGENCY",	   "SWIFT Appendix_C non-public (Team Ops)" },
+        { 93,  /* - */ "SWIFT_XRT_EMERGENCY",	   "SWIFT Appendix_C non-public (Team Ops)" },
+        { 94,  /* - */ "SWIFT_FOM_PPT_ARG_ERR",	   "SWIFT Appendix_C non-public (Team Ops)" },
+        { 95,  /* - */ "SWIFT_FOM_SAFE_POINT",	   "SWIFT Appendix_C non-public (Team Ops)" },
+        { 96,  /* - */ "SWIFT_FOM_SLEW_ABORT",	   "SWIFT Appendix_C non-public (Team Ops)" },
+        { 97,  /* 1 */ "SWIFT_BAT_QL_POS",	   "BAT Quick Look Position (1-6 sec sooner)" },
+        { 98,  /* 1 */ "SWIFT_BAT_SUB_THRESHOLD",  "BAT Sub-Threshold Position" },
+        { 99,  /* 1 */ "SWIFT_BAT_SLEW_POS",	   "BAT Burst/Trans Pos during slewing" },
+        { 100, /* 1 */ "AGILE_GRB_WAKEUP",	   "AGILE GRB Wake-Up Position" },
+        { 101, /* 1 */ "AGILE_GRB_GROUND",	   "AGILE GRB Prompt Position" },
+        { 102, /* 1 */ "AGILE_GRB_REFINED",	   "AGILE GRB Refined Position" },
+        { 107, /* 1 */ "AGILE_POINTDIR",	   "AGILE Pointing Direction" },
+        { 108, /* + */ "AGILE_TRANS",	           "AGILE Transient Position" },
+        { 109, /* 1 */ "AGILE_GRB_POS_TEST",	   "AGILE GRB Position Test" },
+        { 110, /* 1 */ "FERMI_GBM_ALERT",	   "GBM Alert" },
+        { 111, /* 1 */ "FERMI_GBM_FLT_POS",	   "GBM Flightt-calculated Position" },
+        { 112, /* 1 */ "FERMI_GBM_GND_POS",	   "GBM Ground-calculated Position" },
+        { 113, /* + */ "FERMI_GBM_LC",	           "GBM Lightcurve" },
+        { 114, /* - */ "FERMI_GBM_GND_INTERNAL",   "GBM Gnd-calc Internal (beyond 112)" },
+        { 115, /* 1 */ "FERMI_GBM_FIN_POS",	   "GBM Final Position HitL or Offline" },
+        { 118, /* + */ "FERMI_GBM_TRANS",	   "GBM Transient Position" },
+        { 119, /* 1 */ "FERMI_GBM_POS_TEST",	   "GBM Position Test" },
+        { 120, /* - */ "FERMI_LAT_POS_INI",	   "LAT Position Initial" },
+        { 121, /* 1 */ "FERMI_LAT_POS_UPD",	   "LAT Position Update" },
+        { 122, /* - */ "FERMI_LAT_POS_DIAG",	   "LAT Position Diagnostic" },
+        { 123, /* + */ "FERMI_LAT_TRANS",	   "LAT Transient Position (previously unknown source)" },
+        { 124, /* 1 */ "FERMI_LAT_POS_TEST",	   "LAT Position Test (like UPD only)" },
+        { 125, /* + */ "FERMI_LAT_MONITOR",	   "LAT Monitor (eg Blazar, AGN, etc)" },
+        { 126, /* 1 */ "FERMI_SC_SLEW",	           "Spcecraft Slew" },
+        { 127, /* 1 */ "FERMI_LAT_GND",	           "LAT Ground-analysis refined Pos" },
+        { 128, /* + */ "FERMI_LAT_OFFLINE",	   "LAT Ground-analysis Trigger Pos, Offline" },
+        { 129, /* 1 */ "FERMI_POINTDIR",	   "Pointing Direction" },
+        { 130, /* 1 */ "SIMBADNED",	           "SIMBAD/NED Search Results" },
+        { 131, /* + */ "PIOTS_OT_POS",	           "Pi-Of-The-Sky Optical Transient Pos" },
+        { 132, /* + */ "KAIT_SN",	           "KAIT SuperNova" },
+        { 133, /* 1 */ "SWIFT_BAT_MONITOR",	   "Swift BAT Transient Monitor LC page event" },
+        { 134, /* 1 */ "MAXI_UNKNOWN",	           "MAXI previously Unknown source transient (GRBs or other x-ray trans)" },
+        { 135, /* 1 */ "MAXI_KNOWN",	           "MAXI previously Known source transient (already in some catalog)" },
+        { 136, /* 1 */ "MAXI_TEST",	           "MAXI Test notice (for the Unknown type)" },
+        { 137, /* + */ "OGLE",	                   "OGLE lensing event (Inten, yes; but not Signif)" },
+        { 138, /* + */ "CBAT",	                   "CBAT" },
+        { 139, /* + */ "MOA",	                   "MOA lensing event (turn off inten for now!!!)" },
+        { 140, /* 1 */ "SWIFT_BAT_SUBSUB",	   "BAT SubSubThreshold trigger" },
+        { 141, /* 1 */ "SWIFT_BAT_KNOWN_SRC",	   "Known source detected in ach BAT image" },
+        { 142, /* 1 */ "VOE_1.1_IM_ALIVE",	   "I'm alive socket packet sent every 60 sec" },
+        { 143, /* 1 */ "VOE_2.0_IM_ALIVE",	   "I'm alive socket packet sent every 60 sec" },
+        { 148, /* 1 */ "SUZAKU_LC",	           "SUZAKU-WAM Lightcurve" },
+        { -1,          "",                         "" },
+    };
+}
+
+#endif
Index: branches/testFACT++branch/src/HeadersGPS.h
===================================================================
--- branches/testFACT++branch/src/HeadersGPS.h	(revision 18277)
+++ branches/testFACT++branch/src/HeadersGPS.h	(revision 18277)
@@ -0,0 +1,31 @@
+#ifndef FACT_HeadersGPS
+#define FACT_HeadersGPS
+
+namespace GPS
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected,
+            kDisabled,
+            kEnabled,
+            kLocked
+        };
+    };
+
+    struct NEMA
+    {
+        float    time;
+        float    lat;
+        float    lng;
+        float    hdop;
+        float    height;
+        float    geosep;
+        uint16_t count;
+        uint16_t qos;
+    }  __attribute__((__packed__));
+
+};
+#endif
Index: branches/testFACT++branch/src/HeadersLid.h
===================================================================
--- branches/testFACT++branch/src/HeadersLid.h	(revision 18277)
+++ branches/testFACT++branch/src/HeadersLid.h	(revision 18277)
@@ -0,0 +1,24 @@
+#ifndef FACT_HeadersLid
+#define FACT_HeadersLid
+
+namespace Lid
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected,
+            kUnidentified,
+            kInconsistent,
+            kUnknown,
+            kPowerProblem,
+            kOvercurrent,
+            kClosed,
+            kOpen,
+            kMoving,
+            kLocked
+        };
+    };
+};
+#endif
Index: branches/testFACT++branch/src/HeadersMCP.h
===================================================================
--- branches/testFACT++branch/src/HeadersMCP.h	(revision 18277)
+++ branches/testFACT++branch/src/HeadersMCP.h	(revision 18277)
@@ -0,0 +1,29 @@
+#ifndef FACT_HeadersMCP
+#define FACT_HeadersMCP
+
+namespace MCP
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDimNetworkNA = 1,
+            kDisconnected,
+            kConnecting,
+            kConnected,
+            kIdle,
+            kDummy, // Doesn't exist, kept to keep the numbers
+            kConfiguring1,
+            kConfiguring2,
+            kConfiguring3,
+            kCrateReset0,
+            kCrateReset1,
+            kCrateReset2,
+            kCrateReset3,
+            kConfigured,
+            kTriggerOn,
+            kTakingData,
+        };
+    }
+}
+#endif
Index: branches/testFACT++branch/src/HeadersMagicLidar.h
===================================================================
--- branches/testFACT++branch/src/HeadersMagicLidar.h	(revision 18277)
+++ branches/testFACT++branch/src/HeadersMagicLidar.h	(revision 18277)
@@ -0,0 +1,34 @@
+#ifndef FACT_HeadersMagicLidar
+#define FACT_HeadersMagicLidar
+
+namespace MagicLidar
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected,
+            kReceiving,
+        };
+    }
+
+    struct DimLidar
+    {
+        DimLidar() { memset(this, 0, sizeof(DimLidar)); }
+
+        float fZd;
+        float fAz;
+        //float fCHE;
+        //float fCOT;
+        //float fPBL;
+
+        float fT3;
+        float fT6;
+        float fT9;
+        float fT12;
+
+    } __attribute__((__packed__));
+}
+
+#endif
Index: branches/testFACT++branch/src/HeadersMagicWeather.h
===================================================================
--- branches/testFACT++branch/src/HeadersMagicWeather.h	(revision 18277)
+++ branches/testFACT++branch/src/HeadersMagicWeather.h	(revision 18277)
@@ -0,0 +1,33 @@
+#ifndef FACT_HeadersMagicWeather
+#define FACT_HeadersMagicWeather
+
+namespace MagicWeather
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected,
+            kReceiving,
+        };
+    }
+
+    struct DimWeather
+    {
+        DimWeather() { memset(this, 0, sizeof(DimWeather)); }
+
+        uint16_t fStatus;
+
+        float    fTemp;
+        float    fDew;
+        float    fHum;
+        float    fPress;
+        float    fWind;
+        float    fGusts;
+        float    fDir;
+
+    } __attribute__((__packed__));
+}
+
+#endif
Index: branches/testFACT++branch/src/HeadersPFmini.h
===================================================================
--- branches/testFACT++branch/src/HeadersPFmini.h	(revision 18277)
+++ branches/testFACT++branch/src/HeadersPFmini.h	(revision 18277)
@@ -0,0 +1,23 @@
+#ifndef FACT_HeadersPFmini
+#define FACT_HeadersPFmini
+
+namespace PFmini
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected,
+            kReceiving
+        };
+    };
+
+    struct Data
+    {
+        float    hum;
+        float    temp;
+    }  __attribute__((__packed__));
+
+};
+#endif
Index: branches/testFACT++branch/src/HeadersPower.cc
===================================================================
--- branches/testFACT++branch/src/HeadersPower.cc	(revision 18277)
+++ branches/testFACT++branch/src/HeadersPower.cc	(revision 18277)
@@ -0,0 +1,80 @@
+#include "HeadersPower.h"
+
+#include <string>
+#include <iomanip>
+#include <iostream>
+
+#include <QString>
+#include <QtXml/QDomNamedNodeMap>
+
+#include "WindowLog.h"
+
+using namespace std;
+using namespace Power;
+
+bool Status::Set(bool &rc, const QString &value)
+{
+    rc = value.toInt();
+    return true;
+}
+
+bool Status::Set(const QDomNamedNodeMap &map)
+{
+    if (!map.contains("id") || !map.contains("title"))
+        return false;
+
+    QString item  = map.namedItem("id").nodeValue();
+    QString value = map.namedItem("title").nodeValue();
+
+    if (item==(QString("flow_meter")))
+        return Set(fWaterFlowOk, value);
+
+    if (item==(QString("level")))
+        return Set(fWaterLevelOk, value);
+
+    if (item==(QString("bias_power")))
+        return Set(fPwrBiasOn, value);
+
+    if (item==(QString("power_24v")))
+        return Set(fPwr24VOn, value);
+
+    if (item==(QString("pump")))
+        return Set(fPwrPumpOn, value);
+
+    if (item==(QString("drive_power")))
+        return Set(fPwrDriveOn, value);
+
+    if (item==(QString("drive_on")))
+        return Set(fDriveMainSwitchOn, value);
+
+    if (item==(QString("drive_enable")))
+        return Set(fDriveFeedbackOn, value);
+
+    return false;
+}
+
+void Status::Print(ostream &out, const char *title, const bool &val, const char *t, const char *f)
+{
+    out << setw(9) << title << " : ";
+    if (val)
+        out << kGreen << t << kReset << '\n';
+    else
+        out << kRed   << f << kReset << '\n';
+}
+
+void Status::Print(ostream &out)
+{
+    out << kReset << '\n';
+    out << "------- WATER -------\n";
+    Print(out, "level",    fWaterLevelOk, "ok", "low");
+    Print(out, "flow",     fWaterFlowOk,  "ok", "low");
+    out << "------- POWER -------\n";
+    Print(out, "24V",      fPwr24VOn);
+    Print(out, "pump",     fPwrPumpOn);
+    Print(out, "bias",     fPwrBiasOn);
+    Print(out, "drive",    fPwrDriveOn);
+    out << "------- DRIVE -------\n";
+    Print(out, "feedback", fDriveFeedbackOn,   "on", "off");
+    Print(out, "main",     fDriveMainSwitchOn, "on", "off");
+    out << "---------------------" << endl;
+}
Index: branches/testFACT++branch/src/HeadersPower.h
===================================================================
--- branches/testFACT++branch/src/HeadersPower.h	(revision 18277)
+++ branches/testFACT++branch/src/HeadersPower.h	(revision 18277)
@@ -0,0 +1,65 @@
+#ifndef FACT_HeadersPower
+#define FACT_HeadersPower
+
+#include <iosfwd>
+#include <stdint.h>
+
+class QString;
+class QDomNamedNodeMap;
+
+namespace Power
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected,
+            kSystemOff,
+            kCameraOn  =  4,
+            kBiasOn    =  8,
+            kDriveOn   = 16,
+            kCameraOff = kBiasOn|kDriveOn,
+            kBiasOff   = kCameraOn|kDriveOn,
+            kDriveOff  = kCameraOn|kBiasOn,
+            kSystemOn  = kCameraOn|kBiasOn|kDriveOn,
+            kCoolingFailure
+        };
+    };
+
+    struct Status
+    {
+        bool fWaterLevelOk;
+        bool fWaterFlowOk;
+
+        bool fPwr24VOn;
+        bool fPwrPumpOn;
+        bool fPwrBiasOn;
+        bool fPwrDriveOn;
+
+        bool fDriveMainSwitchOn;
+        bool fDriveFeedbackOn;
+
+        Status() { }
+
+        bool Set(bool &rc, const QString &value);
+        bool Set(const QDomNamedNodeMap &map);
+
+        void Print(std::ostream &out, const char *title, const bool &val, const char *t="enabled", const char *f="disabled");
+        void Print(std::ostream &out);      
+
+        uint8_t GetVal() const
+        {
+            return
+                fWaterLevelOk      <<0 |
+                fWaterFlowOk       <<1 |
+                fPwr24VOn          <<2 |
+                fPwrPumpOn         <<3 |
+                fPwrDriveOn        <<4 |
+                fDriveMainSwitchOn <<5 |
+                fDriveFeedbackOn   <<6;
+        }
+
+    } __attribute__((__packed__));
+};
+#endif
Index: branches/testFACT++branch/src/HeadersRateControl.h
===================================================================
--- branches/testFACT++branch/src/HeadersRateControl.h	(revision 18277)
+++ branches/testFACT++branch/src/HeadersRateControl.h	(revision 18277)
@@ -0,0 +1,30 @@
+#ifndef FACT_HeadersRateControl
+#define FACT_HeadersRateControl
+
+namespace RateControl
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDimNetworkNA = 1,
+            kDisconnected,
+            kConnecting,              // obsolete, not used
+            kConnected,
+
+            kSettingGlobalThreshold,
+            kGlobalThresholdSet,
+
+            kInProgress,
+        };
+    };
+
+    struct DimThreshold
+    {
+        uint16_t threshold;
+        double   begin;
+        double   end;
+    }  __attribute__((__packed__));
+}
+
+#endif
Index: branches/testFACT++branch/src/HeadersRateScan.h
===================================================================
--- branches/testFACT++branch/src/HeadersRateScan.h	(revision 18277)
+++ branches/testFACT++branch/src/HeadersRateScan.h	(revision 18277)
@@ -0,0 +1,21 @@
+#ifndef FACT_HeadersRateScan
+#define FACT_HeadersRateScan
+
+namespace RateScan
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDimNetworkNA = 1,
+            kDisconnected,
+            kConnecting,
+            kConnected,
+            kConfiguring,
+            kInProgress,
+            kPaused,
+        };
+    }
+}
+
+#endif
Index: branches/testFACT++branch/src/HeadersSQM.h
===================================================================
--- branches/testFACT++branch/src/HeadersSQM.h	(revision 18277)
+++ branches/testFACT++branch/src/HeadersSQM.h	(revision 18277)
@@ -0,0 +1,27 @@
+#ifndef FACT_HeadersSQM
+#define FACT_HeadersSQM
+
+namespace SQM
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected,
+            kInvalid,
+            kValid,
+        };
+    };
+
+    struct Data
+    {
+        float    mag;        // Magnitude per square arc second (0.00m upper brightness limit)
+        uint32_t freq;       // Frequency of sensor in Hz
+        uint32_t counts;     // Period of sensor in counts (counts occur at 14.7456MHz/32)
+        float    period;     // Period of sensor in seconds (millisecond resolution)
+        float    temp;       // Temperature measured at light sensor in degC
+    }  __attribute__((__packed__));
+
+};
+#endif
Index: branches/testFACT++branch/src/HeadersTNGWeather.h
===================================================================
--- branches/testFACT++branch/src/HeadersTNGWeather.h	(revision 18277)
+++ branches/testFACT++branch/src/HeadersTNGWeather.h	(revision 18277)
@@ -0,0 +1,37 @@
+#ifndef FACT_HeadersTNGWeather
+#define FACT_HeadersTNGWeather
+
+namespace TNGWeather
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected,
+            kReceiving,
+        };
+    }
+
+    struct DimWeather
+    {
+        DimWeather() { memset(this, 0, sizeof(DimWeather)); }
+
+        float fTemp10M;
+        float fTemp5M;
+        float fTemp2M;
+        float fTempGround;
+        float fDewPoint;
+        float fHumidity;
+        float fAirPressure;
+        float fWindSpeed;
+        float fWindDirection;
+        float fDeltaM1;
+        float fDustTotal;
+        float fSeeingMed;
+        float fSeeingStdev;
+        float fSolarimeter;
+
+    } __attribute__((__packed__));
+};
+#endif
Index: branches/testFACT++branch/src/HeadersTemperature.h
===================================================================
--- branches/testFACT++branch/src/HeadersTemperature.h	(revision 18277)
+++ branches/testFACT++branch/src/HeadersTemperature.h	(revision 18277)
@@ -0,0 +1,16 @@
+#ifndef FACT_HeadersTemperature
+#define FACT_HeadersTemperature
+
+namespace Temperature
+{
+    namespace State
+    {
+        enum states_t
+        {
+            kDisconnected = 1,
+            kConnected,
+            kValid
+        };
+    };
+};
+#endif
Index: branches/testFACT++branch/src/InterpreterV8.cc
===================================================================
--- branches/testFACT++branch/src/InterpreterV8.cc	(revision 18277)
+++ branches/testFACT++branch/src/InterpreterV8.cc	(revision 18277)
@@ -0,0 +1,2868 @@
+#include "InterpreterV8.h"
+
+#ifdef HAVE_V8
+
+#include <fstream>
+#include <sstream>
+#include <iomanip>
+
+#include <sys/stat.h>
+
+#include <boost/tokenizer.hpp>
+
+#ifdef HAVE_NOVA
+#include "externals/nova.h"
+#endif
+
+#ifdef HAVE_SQL
+#include "Database.h"
+#endif
+
+#include <v8.h>
+
+#include "dim.h"
+#include "tools.h"
+#include "Readline.h"
+#include "externals/izstream.h"
+
+#include "WindowLog.h"
+
+using namespace std;
+using namespace v8;
+
+v8::Handle<v8::FunctionTemplate> InterpreterV8::fTemplateLocal;
+v8::Handle<v8::FunctionTemplate> InterpreterV8::fTemplateSky;
+v8::Handle<v8::FunctionTemplate> InterpreterV8::fTemplateEvent;
+v8::Handle<v8::FunctionTemplate> InterpreterV8::fTemplateDescription;
+//v8::Handle<v8::FunctionTemplate> InterpreterV8::fTemplateDatabase;
+
+
+// ==========================================================================
+//                           Some documentation
+// ==========================================================================
+//
+// Threads:
+// --------
+// In most cases Js* and other calls to native C++ code could be wrapped
+// with an Unlocker to allow possible other JavaScipt 'threads' to run
+// during that time. However, all of these calls should take much less than
+// the preemption time of 10ms, so it would just be a waste of tim.
+//
+// Termination:
+// ------------
+// Each thread running V8 code needs to be signalled individually for
+// termination. Therefor a list of V8 thread ids is created.
+//
+// If termination has already be signalled, no thread should start running
+// anymore (thy could, e.g., wait for their locking). So after locking
+// it has to be checked if the thread was terminated already. Note
+// that all calls to Terminate() must be locked to ensure that fThreadId
+// is correct when it is checked.
+//
+// The current thread id must be added to fThreadIds _before_ any
+// function is called after Locking and before execution is given
+// back to JavaScript, e.g. in script->Run(). So until the thread
+// is added to the list Terminate will not be executed. If Terminate
+// is then executed, it is ensured that the current thread is
+// already in the list. If terminate has been called before
+// the Locking, the check for the validiy of fThreadId ensures that
+// nothing is executed.
+//
+// Empty handles:
+// --------------
+// If exceution is terminated, V8 calls might return with empty handles,
+// e.g. Date::New(). Therefore, the returned handles of these calls have to
+// be checked in all placed to avoid that V8 will core dump.
+//
+// HandleScope:
+// ------------
+// A handle scope is a garbage collector and collects all handles created
+// until it goes out of scope. Handles which are not needed anymore are
+// then deleted. To return a handle from a HandleScope you need to use
+// Close(). E.g., String::AsciiValue does not create a new handle and
+// hence does not need a HandleScope. Any ::New will need a handle scope.
+// Forgetting the HandleScope could in principle fill your memory,
+// but everything is properly deleted by the global HandleScope at
+// script termination.
+//
+// Here is another good reference for v8, also containing some
+// good explanations for the meaning of handles, persistent handles
+// and weak handles: http://create.tpsitulsa.com/wiki/V8_Cookbook
+//
+// ==========================================================================
+//                            Simple interface
+// ==========================================================================
+
+Handle<Value> InterpreterV8::FuncExit(const Arguments &)
+{
+    V8::TerminateExecution(fThreadId);
+
+    // we have to throw an excption to make sure that the
+    // calling thread does not go on executing until it
+    // has realized that it should terminate
+    return ThrowException(Null());
+}
+
+Handle<Value> InterpreterV8::FuncSleep(const Arguments& args)
+{
+    if (args.Length()==0)
+    {
+        // Theoretically, the CPU usage can be reduced by maybe a factor
+        // of four using a larger value, but this also means that the
+        // JavaScript is locked for a longer time.
+        const Unlocker unlock;
+        usleep(1000);
+        return Undefined();
+    }
+
+    if (args.Length()!=1)
+        return ThrowException(String::New("Number of arguments must be exactly 1."));
+
+    if (!args[0]->IsUint32())
+        return ThrowException(String::New("Argument 1 must be an uint32."));
+
+    // Using a Javascript function has the advantage that it is fully
+    // interruptable without the need of C++ code
+    const string code =
+        "(function(){"
+        "var t=new Date();"
+        "while ((new Date()-t)<"+to_string(args[0]->Int32Value())+") v8.sleep();"
+        "})();";
+
+    return ExecuteInternal(code);
+}
+
+Handle<Value> InterpreterV8::FuncTimeout(const Arguments &args)
+{
+    if (args.Length()<2)
+        return ThrowException(String::New("Number of arguments must be at least two."));
+
+    if (!args[0]->IsNull() && !args[0]->IsInt32())
+        return ThrowException(String::New("Argument 0 not null and not an int32."));
+
+    if (!args[1]->IsFunction())
+        return ThrowException(String::New("Argument 1 not a function."));
+
+    if (args.Length()>2 && !args[2]->IsObject())
+        return ThrowException(String::New("Argument 2 not an object."));
+
+    const int32_t timeout = args[0]->IsNull() ? 0 : args[0]->Int32Value();
+    const bool    null    = args[0]->IsNull();
+
+    HandleScope handle_scope;
+
+    Handle<Function> func = Handle<Function>::Cast(args[1]);
+
+    const int nn = args.Length()==2 ? 0 : args.Length()-3;
+
+    Handle<Value> argv[nn];
+    for (int i=0; i<nn; i++)
+        argv[i] = args[i+3];
+
+    Time t;
+    while (1)
+    {
+        const Handle<Value> rc = args.Length()<3 ? func->Call(func, nn, argv) : func->Call(args[2]->ToObject(), nn, argv);
+        if (rc.IsEmpty())
+            return Undefined();
+
+        if (!rc->IsUndefined())
+            return handle_scope.Close(rc);
+
+        if (!null && Time()-t>=boost::posix_time::milliseconds(abs(timeout)))
+            break;
+
+        // Theoretically, the CPU usage can be reduced by maybe a factor
+        // of four using a larger value, but this also means that the
+        // JavaScript is locked for a longer time.
+        const Unlocker unlock;
+        usleep(1000);
+    }
+
+    if (timeout<0)
+        return Undefined();
+
+    const string str = "Waiting for func to return a defined value timed out.";
+    return ThrowException(String::New(str.c_str()));
+}
+
+void InterpreterV8::Thread(int &id, Persistent<Object> _this, Persistent<Function> func, uint32_t ms)
+{
+    const Locker lock;
+
+    if (fThreadId<0)
+    {
+        id = -1;
+        return;
+    }
+
+    // Warning: As soon as id is set, the parent of this thread might terminate
+    //          and hance the reference to id does not exist anymore. So, id
+    //          is just a kind of return value and must not be used at all
+    //          otherwise.
+
+    const int id_local = V8::GetCurrentThreadId();
+    id = id_local;
+    fThreadIds.insert(id_local);
+
+    const HandleScope handle_scope;
+
+    func->CreationContext()->Enter();
+
+    TryCatch exception;
+
+    const bool rc = ms==0 || !ExecuteInternal("v8.sleep("+to_string(ms)+");").IsEmpty();
+    if (rc)
+    {
+        if (_this.IsEmpty())
+            func->Call(func, 0, NULL);
+        else
+            func->Call(_this, 0, NULL);
+    }
+
+    func.Dispose();
+    _this.Dispose();
+
+    fThreadIds.erase(id_local);
+
+    if (!HandleException(exception, "thread"))
+        V8::TerminateExecution(fThreadId);
+
+    func->CreationContext()->Exit();
+}
+
+Handle<Value> InterpreterV8::FuncThread(const Arguments& args)
+{
+    if (!args.IsConstructCall())
+        return ThrowException(String::New("Thread must be called as constructor."));
+
+    if (args.Length()!=2 && args.Length()!=3)
+        return ThrowException(String::New("Number of arguments must be two or three."));
+
+    if (!args[0]->IsUint32())
+        return ThrowException(String::New("Argument 0 not an uint32."));
+
+    if (!args[1]->IsFunction())
+        return ThrowException(String::New("Argument 1 not a function."));
+
+    if (args.Length()==3 && !args[2]->IsObject())
+        return ThrowException(String::New("Argument 2 not an object."));
+
+    //if (!args.IsConstructCall())
+    //    return Constructor(args);
+
+    const HandleScope handle_scope;
+
+    Handle<Function> handle = Handle<Function>::Cast(args[1]);
+
+    Persistent<Function> func =  Persistent<Function>::New(handle);
+    Persistent<Object> _this;
+    if (args.Length()==3)
+        _this = Persistent<Object>::New(args[2]->ToObject());
+
+    const uint32_t ms = args[0]->Uint32Value();
+
+    int id=-2;
+    fThreads.push_back(thread(bind(&InterpreterV8::Thread, this, ref(id), _this, func, ms)));
+    {
+        // Allow the thread to lock, so we can get the thread id.
+        const Unlocker unlock;
+        while (id==-2)
+            usleep(1);
+    }
+
+    Handle<Object> self = args.This();
+
+    self->Set(String::New("id"), Integer::NewFromUnsigned(id), ReadOnly);
+    self->Set(String::New("kill"), FunctionTemplate::New(WrapKill)->GetFunction(), ReadOnly);
+
+    return Undefined();
+}
+
+Handle<Value> InterpreterV8::FuncKill(const Arguments& args)
+{
+    const uint32_t id = args.This()->Get(String::New("id"))->Uint32Value();
+
+    V8::TerminateExecution(id);
+
+    return Boolean::New(fThreadIds.erase(id));
+}
+
+Handle<Value> InterpreterV8::FuncSend(const Arguments& args)
+{
+    if (args.Length()==0)
+        return ThrowException(String::New("Number of arguments must be at least 1."));
+
+    if (!args[0]->IsString())
+        return ThrowException(String::New("Argument 1 must be a string."));
+
+    const String::AsciiValue str(args[0]);
+
+    string command = *str;
+
+    if (command.length()==0)
+        return ThrowException(String::New("Server name empty."));
+
+    if (args.Length()==0)
+    {
+        if (command.find_first_of('/')==string::npos)
+            command += "/";
+    }
+
+    // Escape all string arguments. All others can be kept as they are.
+    for (int i=1; i<args.Length(); i++)
+    {
+        string arg = *String::AsciiValue(args[i]);
+
+        // Escape string
+        if (args[i]->IsString())
+        {
+            boost::replace_all(arg, "\\", "\\\\");
+            boost::replace_all(arg, "'", "\\'");
+            boost::replace_all(arg, "\"", "\\\"");
+        }
+
+        command += " "+arg;
+    }
+
+    try
+    {
+        return Boolean::New(JsSend(command));
+    }
+    catch (const runtime_error &e)
+    {
+        return ThrowException(String::New(e.what()));
+    }
+}
+
+// ==========================================================================
+//                               State control
+// ==========================================================================
+
+Handle<Value> InterpreterV8::FuncWait(const Arguments& args)
+{
+    if (args.Length()!=2 && args.Length()!=3)
+        return ThrowException(String::New("Number of arguments must be 2 or 3."));
+
+    if (!args[0]->IsString())
+        return ThrowException(String::New("Argument 1 not a string."));
+
+    if (!args[1]->IsInt32() && !args[1]->IsString())
+        return ThrowException(String::New("Argument 2 not an int32 and not a string."));
+
+    if (args.Length()==3 && !args[2]->IsInt32() && !args[2]->IsUndefined())
+        return ThrowException(String::New("Argument 3 not an int32 and not undefined."));
+
+    // Using a Javascript function has the advantage that it is fully
+    // interruptable without the need of C++ code
+
+    const string index   = args[1]->IsInt32() ? "s.index" : "s.name";
+    const bool   timeout = args.Length()==3 && !args[2]->IsUndefined();
+    const string arg0    = *String::AsciiValue(args[0]);
+    const string state   = args[1]->IsString() ? *String::AsciiValue(args[1]) : "";
+    const string arg1    = args[1]->IsString() ? ("\""+state+"\"") : to_string(args[1]->Int32Value());
+    const bool   isNot   = arg0[0]=='!';
+    const string name    = isNot ? arg0.substr(1) : arg0;
+
+    if (arg0.find_first_of("\"'")!=string::npos)
+        return ThrowException(String::New("Server name must not contain quotation marks."));
+
+    if (args[1]->IsString())
+        if (state.find_first_of("\"'")!=string::npos)
+            return ThrowException(String::New("State name must not contain quotation marks."));
+
+    string code =  "(function(name,state,ms)"
+                   "{";
+    if (timeout)
+        code +=       "var t = new Date();";
+    code +=           "while (1)"
+                      "{"
+                         "var s = dim.state(name);"
+                         "if(!s)throw new Error('Waiting for state "+arg1+" of server "+arg0+" failed.');";
+    if (isNot)
+        code +=
+                         "if(state!="+index+")return true;";
+    else
+        code +=
+                         "if(state=="+index+")return true;";
+    if (timeout)
+        code +=          "if((new Date()-t)>Math.abs(ms))break;";
+
+    code +=              "v8.sleep();"
+                      "}";
+    if (timeout)
+        code +=    "if(ms>0)throw new Error('Waiting for state "+arg1+" of server "+arg0+" timed out.');";
+    code +=        "return false;"
+                   "})('"+name+"',"+arg1;
+    if (timeout)
+        code +=    "," + (args[2]->IsUndefined()?"undefined":to_string(args[2]->Int32Value()));
+    code +=        ");";
+
+    return ExecuteInternal(code);
+}
+
+Handle<Value> InterpreterV8::FuncState(const Arguments& args)
+{
+    if (args.Length()!=1)
+        return ThrowException(String::New("Number of arguments must be exactly 1."));
+
+    if (!args[0]->IsString())
+        return ThrowException(String::New("Argument 1 must be a string."));
+
+    // Return state.name/state.index
+
+    const String::AsciiValue str(args[0]);
+
+    const State rc = JsState(*str);
+    if (rc.index<=-256)
+        return Undefined();
+
+    HandleScope handle_scope;
+
+    Handle<Object> obj = Object::New();
+
+    obj->Set(String::New("server"), String::New(*str),            ReadOnly);
+    obj->Set(String::New("index"),  Integer::New(rc.index),       ReadOnly);
+    obj->Set(String::New("name"),   String::New(rc.name.c_str()), ReadOnly);
+
+    const Local<Value> date = Date::New(rc.time.JavaDate());
+    if (rc.index>-256 && !date.IsEmpty())
+        obj->Set(String::New("time"),  date);
+
+    return handle_scope.Close(obj);
+}
+
+Handle<Value> InterpreterV8::FuncNewState(const Arguments& args)
+{
+    if (args.Length()<1 || args.Length()>3)
+        return ThrowException(String::New("Number of arguments must be 1, 2 or 3."));
+
+    if (!args[0]->IsUint32())
+        return ThrowException(String::New("Argument 1 must be an uint32."));
+    if (args.Length()>1 && !args[1]->IsString())
+        return ThrowException(String::New("Argument 2 must be a string."));
+    if (args.Length()>2 && !args[2]->IsString())
+        return ThrowException(String::New("Argument 3 must be a string."));
+
+    const uint32_t index   = args[0]->Int32Value();
+    const string   name    = *String::AsciiValue(args[1]);
+    const string   comment = *String::AsciiValue(args[2]);
+
+    if (index<10 || index>255)
+        return ThrowException(String::New("State must be in the range [10, 255]."));
+
+    if (name.empty())
+        return ThrowException(String::New("State name must not be empty."));
+
+    if (name.find_first_of(':')!=string::npos || name.find_first_of('=')!=string::npos)
+        return ThrowException(String::New("State name must not contain : or =."));
+
+    struct Find : State
+    {
+        Find(int idx, const string &n) : State(idx, n) { }
+        bool operator()(const pair<int, string> &p) { return index==p.first || name==p.second; }
+    };
+
+    if (find_if(fStates.begin(), fStates.end(), Find(index, name))!=fStates.end())
+    {
+        const string what =
+            "State index ["+to_string(index)+"] or name ["+name+"] already defined.";
+
+        return ThrowException(String::New(what.c_str()));
+    }
+
+    return Boolean::New(JsNewState(index, name, comment));
+}
+
+Handle<Value> InterpreterV8::FuncSetState(const Arguments& args)
+{
+    if (args.Length()!=1)
+        return ThrowException(String::New("Number of arguments must be exactly 1."));
+
+    if (!args[0]->IsUint32() && !args[0]->IsString())
+        return ThrowException(String::New("Argument must be an unint32 or a  string."));
+
+    int index = -2;
+    if (args[0]->IsUint32())
+    {
+        index = args[0]->Int32Value();
+    }
+    else
+    {
+        const string name = *String::AsciiValue(args[0]);
+        index = JsGetState(name);
+        if (index==-2)
+            return ThrowException(String::New(("State '"+name+"' not found.").c_str()));
+    }
+
+    if (index<10 || index>255)
+        return ThrowException(String::New("State must be in the range [10, 255]."));
+
+    return Boolean::New(JsSetState(index));
+}
+
+Handle<Value> InterpreterV8::FuncGetState(const Arguments& args)
+{
+    if (args.Length()>0)
+        return ThrowException(String::New("getState must not take arguments."));
+
+    const State state = JsGetCurrentState();
+
+    HandleScope handle_scope;
+
+    Handle<Object> rc = Object::New();
+    if (rc.IsEmpty())
+        return Undefined();
+
+    rc->Set(String::New("index"), Integer::New(state.index), ReadOnly);
+    rc->Set(String::New("name"), String::New(state.name.c_str()), ReadOnly);
+    rc->Set(String::New("description"), String::New(state.comment.c_str()), ReadOnly);
+
+    return handle_scope.Close(rc);
+}
+
+Handle<Value> InterpreterV8::FuncGetStates(const Arguments& args)
+{
+    if (args.Length()>1)
+        return ThrowException(String::New("getStates must not take more than one arguments."));
+
+    if (args.Length()==1 && !args[0]->IsString())
+        return ThrowException(String::New("Argument must be a string."));
+
+    const string server = args.Length()==1 ? *String::AsciiValue(args[0]) : "DIM_CONTROL";
+
+    const vector<State> states = JsGetStates(server);
+
+    HandleScope handle_scope;
+
+    Handle<Object> list = Object::New();
+    if (list.IsEmpty())
+        return Undefined();
+
+    for (auto it=states.begin(); it!=states.end(); it++)
+    {
+        Handle<Value> entry = StringObject::New(String::New(it->name.c_str()));
+        if (entry.IsEmpty())
+            return Undefined();
+
+        StringObject::Cast(*entry)->Set(String::New("description"), String::New(it->comment.c_str()), ReadOnly);
+        list->Set(Integer::New(it->index), entry, ReadOnly);
+    }
+
+    return handle_scope.Close(list);
+}
+
+Handle<Value> InterpreterV8::FuncGetDescription(const Arguments& args)
+{
+    if (args.Length()!=1)
+        return ThrowException(String::New("getDescription must take exactly one argument."));
+
+    if (args.Length()==1 && !args[0]->IsString())
+        return ThrowException(String::New("Argument must be a string."));
+
+    const string service = *String::AsciiValue(args[0]);
+
+    const vector<Description> descriptions = JsGetDescription(service);
+    const set<Service> services = JsGetServices();
+
+    auto is=services.begin();
+    for (; is!=services.end(); is++)
+        if (is->name==service)
+            break;
+
+    if (is==services.end())
+        return Undefined();
+
+    HandleScope handle_scope;
+
+    Handle<Object> arr = fTemplateDescription->GetFunction()->NewInstance();//Object::New();
+    if (arr.IsEmpty())
+        return Undefined();
+
+    auto it=descriptions.begin();
+    arr->Set(String::New("name"), String::New(it->name.c_str()), ReadOnly);
+    if (!it->comment.empty())
+        arr->Set(String::New("description"), String::New(it->comment.c_str()), ReadOnly);
+    if (is!=services.end())
+    {
+        arr->Set(String::New("server"), String::New(is->server.c_str()), ReadOnly);
+        arr->Set(String::New("service"), String::New(is->service.c_str()), ReadOnly);
+        arr->Set(String::New("isCommand"), Boolean::New(is->iscmd), ReadOnly);
+        if (!is->format.empty())
+            arr->Set(String::New("format"), String::New(is->format.c_str()), ReadOnly);
+    }
+
+    uint32_t i=0;
+    for (it++; it!=descriptions.end(); it++)
+    {
+        Handle<Object> obj = Object::New();
+        if (obj.IsEmpty())
+            return Undefined();
+
+        if (!it->name.empty())
+            obj->Set(String::New("name"), String::New(it->name.c_str()), ReadOnly);
+        if (!it->comment.empty())
+            obj->Set(String::New("description"), String::New(it->comment.c_str()), ReadOnly);
+        if (!it->unit.empty())
+            obj->Set(String::New("unit"), String::New(it->unit.c_str()), ReadOnly);
+
+        arr->Set(i++, obj);
+    }
+
+    return handle_scope.Close(arr);
+}
+
+Handle<Value> InterpreterV8::FuncGetServices(const Arguments& args)
+{
+    if (args.Length()>2)
+        return ThrowException(String::New("getServices must not take more than two argument."));
+
+    if (args.Length()>=1 && !args[0]->IsString())
+        return ThrowException(String::New("First argument must be a string."));
+
+    if (args.Length()==2 && !args[1]->IsBoolean())
+        return ThrowException(String::New("Second argument must be a boolean."));
+
+    string arg0 = args.Length() ? *String::AsciiValue(args[0]) : "";
+    if (arg0=="*")
+        arg0=="";
+
+    const set<Service> services = JsGetServices();
+
+    HandleScope handle_scope;
+
+    Handle<Array> arr = Array::New();
+    if (arr.IsEmpty())
+        return Undefined();
+
+    uint32_t i=0;
+    for (auto is=services.begin(); is!=services.end(); is++)
+    {
+        if (!arg0.empty() && is->name.find(arg0)!=0)
+            continue;
+
+        if (args.Length()==2 && args[1]->BooleanValue()!=is->iscmd)
+            continue;
+
+        Handle<Object> obj = Object::New();
+        if (obj.IsEmpty())
+            return Undefined();
+
+        obj->Set(String::New("name"), String::New(is->name.c_str()), ReadOnly);
+        obj->Set(String::New("server"), String::New(is->server.c_str()), ReadOnly);
+        obj->Set(String::New("service"), String::New(is->service.c_str()), ReadOnly);
+        obj->Set(String::New("isCommand"), Boolean::New(is->iscmd), ReadOnly);
+        if (!is->format.empty())
+            obj->Set(String::New("format"), String::New(is->format.c_str()), ReadOnly);
+
+        arr->Set(i++, obj);
+    }
+
+    return handle_scope.Close(arr);
+}
+
+// ==========================================================================
+//                             Internal functions
+// ==========================================================================
+
+
+// The callback that is invoked by v8 whenever the JavaScript 'print'
+// function is called.  Prints its arguments on stdout separated by
+// spaces and ending with a newline.
+Handle<Value> InterpreterV8::FuncLog(const Arguments& args)
+{
+    for (int i=0; i<args.Length(); i++)
+    {
+        const String::AsciiValue str(args[i]);
+        if (*str)
+            JsPrint(*str);
+    }
+
+    if (args.Length()==0)
+        JsPrint();
+
+    return Undefined();
+}
+
+Handle<Value> InterpreterV8::FuncAlarm(const Arguments& args)
+{
+    for (int i=0; i<args.Length(); i++)
+    {
+        const String::AsciiValue str(args[i]);
+        if (*str)
+            JsAlarm(*str);
+    }
+
+    if (args.Length()==0)
+        JsAlarm();
+
+    return Undefined();
+}
+
+Handle<Value> InterpreterV8::FuncOut(const Arguments& args)
+{
+    for (int i=0; i<args.Length(); i++)
+    {
+        const String::AsciiValue str(args[i]);
+        if (*str)
+            JsOut(*str);
+    }
+    return Undefined();
+}
+
+Handle<Value> InterpreterV8::FuncWarn(const Arguments& args)
+{
+    for (int i=0; i<args.Length(); i++)
+    {
+        const String::AsciiValue str(args[i]);
+        if (*str)
+            JsWarn(*str);
+    }
+    return Undefined();
+}
+
+// The callback that is invoked by v8 whenever the JavaScript 'load'
+// function is called.  Loads, compiles and executes its argument
+// JavaScript file.
+Handle<Value> InterpreterV8::FuncInclude(const Arguments& args)
+{
+    if (args.Length()!=1)
+        return ThrowException(String::New("Number of arguments must be one."));
+
+    if (!args[0]->IsString())
+        return ThrowException(String::New("Argument must be a string."));
+
+    const String::AsciiValue file(args[0]);
+    if (*file == NULL)
+        return ThrowException(String::New("File name missing."));
+
+    if (strlen(*file)==0)
+        return ThrowException(String::New("File name empty."));
+
+    izstream fin(*file);
+    if (!fin)
+        return ThrowException(String::New(errno!=0?strerror(errno):"Insufficient memory for decompression"));
+
+    string buffer;
+    getline(fin, buffer, '\0');
+
+    if ((fin.fail() && !fin.eof()) || fin.bad())
+        return ThrowException(String::New(strerror(errno)));
+
+    if (buffer.length()>1 && buffer[0]=='#' && buffer[1]=='!')
+        buffer.insert(0, "//");
+
+    return ExecuteCode(buffer, *file);
+}
+
+Handle<Value> InterpreterV8::FuncFile(const Arguments& args)
+{
+    if (args.Length()!=1 && args.Length()!=2)
+        return ThrowException(String::New("Number of arguments must be one or two."));
+
+    const String::AsciiValue file(args[0]);
+    if (*file == NULL)
+        return ThrowException(String::New("File name missing"));
+
+    if (args.Length()==2 && !args[1]->IsString())
+        return ThrowException(String::New("Second argument must be a string."));
+
+    const string delim = args.Length()==2 ? *String::AsciiValue(args[1]) : "";
+
+    if (args.Length()==2 && delim.size()!=1)
+        return ThrowException(String::New("Second argument must be a string of length 1."));
+
+    HandleScope handle_scope;
+
+    izstream fin(*file);
+    if (!fin)
+        return ThrowException(String::New(errno!=0?strerror(errno):"Insufficient memory for decompression"));
+
+    if (args.Length()==1)
+    {
+        string buffer;
+        getline(fin, buffer, '\0');
+        if ((fin.fail() && !fin.eof()) || fin.bad())
+            return ThrowException(String::New(strerror(errno)));
+
+        Handle<Value> str = StringObject::New(String::New(buffer.c_str()));
+        StringObject::Cast(*str)->Set(String::New("name"), String::New(*file));
+        return handle_scope.Close(str);
+    }
+
+    Handle<Array> arr = Array::New();
+    if (arr.IsEmpty())
+        return Undefined();
+
+    int i=0;
+    string buffer;
+    while (getline(fin, buffer, delim[0]))
+        arr->Set(i++, String::New(buffer.c_str()));
+
+    if ((fin.fail() && !fin.eof()) || fin.bad())
+        return ThrowException(String::New(strerror(errno)));
+
+    arr->Set(String::New("name"),  String::New(*file));
+    arr->Set(String::New("delim"), String::New(delim.c_str(), 1));
+
+    return handle_scope.Close(arr);
+}
+
+// ==========================================================================
+//                                 Mail
+// ==========================================================================
+
+Handle<Value> InterpreterV8::ConstructorMail(const Arguments &args)
+{
+    if (!args.IsConstructCall())
+        return ThrowException(String::New("Mail must be called as constructor"));
+
+    if (args.Length()!=1 || !args[0]->IsString())
+        return ThrowException(String::New("Constructor must be called with a single string as argument"));
+
+    HandleScope handle_scope;
+
+    Handle<Array> rec = Array::New();
+    Handle<Array> att = Array::New();
+    Handle<Array> bcc = Array::New();
+    Handle<Array> cc  = Array::New();
+    Handle<Array> txt = Array::New();
+    if (rec.IsEmpty() || att.IsEmpty() || bcc.IsEmpty() || cc.IsEmpty() || txt.IsEmpty())
+        return Undefined();
+
+    Handle<Object> self = args.This();
+
+    self->Set(String::New("subject"),     args[0]->ToString(), ReadOnly);
+    self->Set(String::New("recipients"),  rec, ReadOnly);
+    self->Set(String::New("attachments"), att, ReadOnly);
+    self->Set(String::New("bcc"),         bcc, ReadOnly);
+    self->Set(String::New("cc"),          cc,  ReadOnly);
+    self->Set(String::New("text"),        txt, ReadOnly);
+
+    self->Set(String::New("send"), FunctionTemplate::New(WrapSendMail)->GetFunction(), ReadOnly);
+
+    return handle_scope.Close(self);
+}
+
+vector<string> InterpreterV8::ValueToArray(const Handle<Value> &val, bool only)
+{
+    vector<string> rc;
+
+    Handle<Array> arr = Handle<Array>::Cast(val);
+    for (uint32_t i=0; i<arr->Length(); i++)
+    {
+        Handle<Value> obj = arr->Get(i);
+        if (obj.IsEmpty())
+            continue;
+
+        if (obj->IsNull() || obj->IsUndefined())
+            continue;
+
+        if (only && !obj->IsString())
+            continue;
+
+        rc.push_back(*String::AsciiValue(obj->ToString()));
+    }
+
+    return rc;
+}
+
+Handle<Value> InterpreterV8::FuncSendMail(const Arguments& args)
+{
+    HandleScope handle_scope;
+
+    if (args.Length()>1)
+        return ThrowException(String::New("Only one argument allowed."));
+
+    if (args.Length()==1 && !args[0]->IsBoolean())
+        return ThrowException(String::New("Argument must be a boolean."));
+
+    const bool block = args.Length()==0 || args[0]->BooleanValue();
+
+    const Handle<Value> sub = args.This()->Get(String::New("subject"));
+    const Handle<Value> rec = args.This()->Get(String::New("recipients"));
+    const Handle<Value> txt = args.This()->Get(String::New("text"));
+    const Handle<Value> att = args.This()->Get(String::New("attachments"));
+    const Handle<Value> bcc = args.This()->Get(String::New("bcc"));
+    const Handle<Value> cc  = args.This()->Get(String::New("cc"));
+
+    const vector<string> vrec = ValueToArray(rec);
+    const vector<string> vtxt = ValueToArray(txt, false);
+    const vector<string> vatt = ValueToArray(att);
+    const vector<string> vbcc = ValueToArray(bcc);
+    const vector<string> vcc  = ValueToArray(cc);
+
+    if (vrec.size()==0)
+        return ThrowException(String::New("At least one valid string is required in 'recipients'."));
+    if (vtxt.size()==0)
+        return ThrowException(String::New("At least one valid string is required in 'text'."));
+
+    const string subject = *String::AsciiValue(sub->ToString());
+
+    FILE *pipe = popen(("from=no-reply@fact-project.org mailx -~ "+vrec[0]).c_str(), "w");
+    if (!pipe)
+        return ThrowException(String::New(strerror(errno)));
+
+    fprintf(pipe, "%s", ("~s"+subject+"\n").c_str());
+    for (auto it=vrec.begin()+1; it<vrec.end(); it++)
+        fprintf(pipe, "%s", ("~t"+*it+"\n").c_str());
+    for (auto it=vbcc.begin(); it<vbcc.end(); it++)
+        fprintf(pipe, "%s", ("~b"+*it+"\n").c_str());
+    for (auto it=vcc.begin(); it<vcc.end(); it++)
+        fprintf(pipe, "%s", ("~c"+*it+"\n").c_str());
+    for (auto it=vatt.begin(); it<vatt.end(); it++)
+        fprintf(pipe, "%s", ("~@"+*it+"\n").c_str());  // Must not contain white spaces
+
+    for (auto it=vtxt.begin(); it<vtxt.end(); it++)
+        fwrite((*it+"\n").c_str(), it->length()+1, 1, pipe);
+
+    fprintf(pipe, "\n---\nsent by dimctrl");
+
+    if (!block)
+        return Undefined();
+
+    const int rc = pclose(pipe);
+
+    const Locker lock;
+    return handle_scope.Close(Integer::New(WEXITSTATUS(rc)));
+}
+
+// ==========================================================================
+//                                 Database
+// ==========================================================================
+
+Handle<Value> InterpreterV8::FuncDbClose(const Arguments &args)
+{
+    void *ptr = External::Unwrap(args.This()->GetInternalField(0));
+    if (!ptr)
+        return Boolean::New(false);
+
+#ifdef HAVE_SQL
+    Database *db = reinterpret_cast<Database*>(ptr);
+    auto it = find(fDatabases.begin(), fDatabases.end(), db);
+    fDatabases.erase(it);
+    delete db;
+#endif
+
+    HandleScope handle_scope;
+
+    args.This()->SetInternalField(0, External::New(0));
+
+    return handle_scope.Close(Boolean::New(true));
+}
+
+Handle<Value> InterpreterV8::FuncDbQuery(const Arguments &args)
+{
+    if (args.Length()==0)
+        return ThrowException(String::New("Arguments expected."));
+
+    void *ptr = External::Unwrap(args.This()->GetInternalField(0));
+    if (!ptr)
+        return Undefined();
+
+    string query;
+    for (int i=0; i<args.Length(); i++)
+        query += string(" ") + *String::AsciiValue(args[i]);
+    query.erase(0, 1);
+
+#ifdef HAVE_SQL
+    try
+    {
+        HandleScope handle_scope;
+
+        Database *db = reinterpret_cast<Database*>(ptr);
+
+        const mysqlpp::StoreQueryResult res = db->query(query).store();
+
+        Handle<Array> ret = Array::New();
+        if (ret.IsEmpty())
+            return Undefined();
+
+        ret->Set(String::New("table"), String::New(res.table()),   ReadOnly);
+        ret->Set(String::New("query"), String::New(query.c_str()), ReadOnly);
+
+        Handle<Array> cols = Array::New();
+        if (cols.IsEmpty())
+            return Undefined();
+
+        int irow=0;
+        for (vector<mysqlpp::Row>::const_iterator it=res.begin(); it<res.end(); it++)
+        {
+            Handle<Object> row = Object::New();
+            if (row.IsEmpty())
+                return Undefined();
+
+            const mysqlpp::FieldNames *list = it->field_list().list;
+
+            for (size_t i=0; i<it->size(); i++)
+            {
+                const Handle<Value> name = String::New((*list)[i].c_str());
+                if (irow==0)
+                    cols->Set(i, name);
+
+                if ((*it)[i].is_null())
+                {
+                    row->Set(name, Undefined(), ReadOnly);
+                    continue;
+                }
+
+                const string sql_type = (*it)[i].type().sql_name();
+
+                const bool uns = sql_type.find("UNSIGNED")==string::npos;
+
+                if (sql_type.find("BIGINT")!=string::npos)
+                {
+                    if (uns)
+                    {
+                        const uint64_t val = (uint64_t)(*it)[i];
+                        if (val>UINT32_MAX)
+                            row->Set(name, Number::New(val), ReadOnly);
+                        else
+                            row->Set(name, Integer::NewFromUnsigned(val), ReadOnly);
+                    }
+                    else
+                    {
+                        const int64_t val = (int64_t)(*it)[i];
+                        if (val<INT32_MIN || val>INT32_MAX)
+                            row->Set(name, Number::New(val), ReadOnly);
+                        else
+                            row->Set(name, Integer::NewFromUnsigned(val), ReadOnly);
+                    }
+                    continue;
+                }
+
+                // 32 bit
+                if (sql_type.find("INT")!=string::npos)
+                {
+                    if (uns)
+                        row->Set(name, Integer::NewFromUnsigned((uint32_t)(*it)[i]), ReadOnly);
+                    else
+                        row->Set(name, Integer::New((int32_t)(*it)[i]), ReadOnly);
+                    continue;
+                }
+
+                if (sql_type.find("BOOL")!=string::npos )
+                {
+                    row->Set(name, Boolean::New((bool)(*it)[i]), ReadOnly);
+                    continue;
+                }
+
+                if (sql_type.find("FLOAT")!=string::npos)
+                {
+                    ostringstream val;
+                    val << setprecision(7) << (float)(*it)[i];
+                    row->Set(name, Number::New(stod(val.str())), ReadOnly);
+                    continue;
+
+                }
+                if (sql_type.find("DOUBLE")!=string::npos)
+                {
+                    row->Set(name, Number::New((double)(*it)[i]), ReadOnly);
+                    continue;
+                }
+
+                if (sql_type.find("CHAR")!=string::npos ||
+                    sql_type.find("TEXT")!=string::npos)
+                {
+                    row->Set(name, String::New((const char*)(*it)[i]), ReadOnly);
+                    continue;
+                }
+
+                time_t date = 0;
+                if (sql_type.find("TIMESTAMP")!=string::npos)
+                    date = mysqlpp::Time((*it)[i]);
+
+                if (sql_type.find("DATETIME")!=string::npos)
+                    date = mysqlpp::DateTime((*it)[i]);
+
+                if (sql_type.find(" DATE ")!=string::npos)
+                    date = mysqlpp::Date((*it)[i]);
+
+                if (date>0)
+                {
+                    // It is important to catch the exception thrown
+                    // by Date::New in case of thread termination!
+                    const Local<Value> val = Date::New(date*1000);
+                    if (val.IsEmpty())
+                        return Undefined();
+
+                    row->Set(name, val, ReadOnly);
+                }
+            }
+
+            ret->Set(irow++, row);
+        }
+
+        if (irow>0)
+            ret->Set(String::New("cols"), cols, ReadOnly);
+
+        return handle_scope.Close(ret);
+    }
+    catch (const exception &e)
+    {
+        return ThrowException(String::New(e.what()));
+    }
+#endif
+}
+
+Handle<Value> InterpreterV8::FuncDatabase(const Arguments &args)
+{
+    if (!args.IsConstructCall())
+        return ThrowException(String::New("Database must be called as constructor."));
+
+    if (args.Length()!=1)
+        return ThrowException(String::New("Number of arguments must be 1."));
+
+    if (!args[0]->IsString())
+        return ThrowException(String::New("Argument 1 not a string."));
+
+#ifdef HAVE_SQL
+    try
+    {
+        HandleScope handle_scope;
+
+        //if (!args.IsConstructCall())
+        //    return Constructor(fTemplateDatabase, args);
+
+        Database *db = new Database(*String::AsciiValue(args[0]));
+        fDatabases.push_back(db);
+
+        Handle<Object> self = args.This();
+        self->Set(String::New("user"),     String::New(db->user.c_str()), ReadOnly);
+        self->Set(String::New("server"),   String::New(db->server.c_str()), ReadOnly);
+        self->Set(String::New("database"), String::New(db->db.c_str()), ReadOnly);
+        self->Set(String::New("port"),     db->port==0?Undefined():Integer::NewFromUnsigned(db->port), ReadOnly);
+        self->Set(String::New("query"),    FunctionTemplate::New(WrapDbQuery)->GetFunction(), ReadOnly);
+        self->Set(String::New("close"),    FunctionTemplate::New(WrapDbClose)->GetFunction(),   ReadOnly);
+        self->SetInternalField(0, External::New(db));
+
+        return handle_scope.Close(self);
+    }
+    catch (const exception &e)
+    {
+        return ThrowException(String::New(e.what()));
+    }
+#endif
+}
+
+// ==========================================================================
+//                                 Services
+// ==========================================================================
+
+Handle<Value> InterpreterV8::Convert(char type, const char* &ptr)
+{
+    // Dim values are always unsigned per (FACT++) definition
+    switch (type)
+    {
+    case 'F':
+        {
+            // Remove the "imprecision" effect coming from casting a float to
+            // a double and then showing it with double precision
+            ostringstream val;
+            val << setprecision(7) << *reinterpret_cast<const float*>(ptr);
+            ptr += 4;
+            return Number::New(stod(val.str()));
+        }
+    case 'D':  { Handle<Value> v=Number::New(*reinterpret_cast<const double*>(ptr)); ptr+=8; return v; }
+    case 'I':
+    case 'L':  { Handle<Value> v=Integer::NewFromUnsigned(*reinterpret_cast<const uint32_t*>(ptr)); ptr += 4; return v; }
+    case 'X':
+        {
+            const int64_t val = *reinterpret_cast<const int64_t*>(ptr);
+            ptr += 8;
+            if (val>=0 && val<=UINT32_MAX)
+                return Integer::NewFromUnsigned(val);
+            if (val>=INT32_MIN && val<0)
+                return Integer::New(val);
+            return Number::New(val);
+        }
+    case 'S':  { Handle<Value> v=Integer::NewFromUnsigned(*reinterpret_cast<const uint16_t*>(ptr)); ptr += 2; return v; }
+    case 'C':  { Handle<Value> v=Integer::NewFromUnsigned((uint16_t)*reinterpret_cast<const uint8_t*>(ptr));  ptr += 1; return v; }
+    }
+    return Undefined();
+}
+
+Handle<Value> InterpreterV8::FuncClose(const Arguments &args)
+{
+    HandleScope handle_scope;
+
+    //const void *ptr = Local<External>::Cast(args.Holder()->GetInternalField(0))->Value();
+
+    const String::AsciiValue str(args.This()->Get(String::New("name")));
+
+    const auto it = fReverseMap.find(*str);
+    if (it!=fReverseMap.end())
+    {
+        it->second.Dispose();
+        fReverseMap.erase(it);
+    }
+
+    args.This()->Set(String::New("isOpen"), Boolean::New(false), ReadOnly);
+
+    return handle_scope.Close(Boolean::New(JsUnsubscribe(*str)));
+}
+
+Handle<Value> InterpreterV8::ConvertEvent(const EventImp *evt, uint64_t counter, const char *str)
+{
+    const vector<Description> vec = JsDescription(str);
+
+    Handle<Object> ret = fTemplateEvent->GetFunction()->NewInstance();//Object::New();
+    if (ret.IsEmpty())
+        return Undefined();
+
+    const Local<Value> date = Date::New(evt->GetJavaDate());
+    if (date.IsEmpty())
+        return Undefined();
+
+    ret->Set(String::New("name"),    String::New(str),              ReadOnly);
+    ret->Set(String::New("format"),  String::New(evt->GetFormat().c_str()), ReadOnly);
+    ret->Set(String::New("qos"),     Integer::New(evt->GetQoS()),   ReadOnly);
+    ret->Set(String::New("size"),    Integer::New(evt->GetSize()),  ReadOnly);
+    ret->Set(String::New("counter"), Integer::New(counter),         ReadOnly);
+    if (evt->GetJavaDate()>0)
+        ret->Set(String::New("time"), date, ReadOnly);
+
+    // If names are available data will also be provided as an
+    // object. If an empty event was received, but names are available,
+    // the object will be empty. Otherwise 'obj' will be undefined.
+    // obj===undefined:               no data received
+    // obj!==undefined, length==0:    names for event available
+    // obj!==undefined, obj.length>0: names available, data received
+    Handle<Object> named = Object::New();
+    if (vec.size()>0)
+        ret->Set(String::New("obj"), named, ReadOnly);
+
+    // If no event was received (usually a disconnection event in
+    // the context of FACT++), no data is returned
+    if (evt->IsEmpty())
+        return ret;
+
+    // If valid data was received, but the size was zero, then
+    // null is returned as data
+    // data===undefined: no data received
+    // data===null:      event received, but no data
+    // data.length>0:    event received, contains data
+    if (evt->GetSize()==0 || evt->GetFormat().empty())
+    {
+        ret->Set(String::New("data"), Null(), ReadOnly);
+        return ret;
+    }
+
+    typedef boost::char_separator<char> separator;
+    const boost::tokenizer<separator> tokenizer(evt->GetFormat(), separator(";:"));
+
+    const vector<string> tok(tokenizer.begin(), tokenizer.end());
+
+    Handle<Object> arr = tok.size()>1 ? Array::New() : ret;
+    if (arr.IsEmpty())
+        return Undefined();
+
+    const char *ptr = evt->GetText();
+    const char *end = evt->GetText()+evt->GetSize();
+
+    try
+    {
+        size_t pos = 1;
+        for (auto it=tok.begin(); it<tok.end() && ptr<end; it++, pos++)
+        {
+            char type = (*it)[0];
+            it++;
+
+            string name = pos<vec.size() ? vec[pos].name : "";
+            if (tok.size()==1)
+                name = "data";
+
+            // Get element size
+            uint32_t sz = 1;
+            switch (type)
+            {
+            case 'X':
+            case 'D': sz = 8; break;
+            case 'F':
+            case 'I':
+            case 'L': sz = 4; break;
+            case 'S': sz = 2; break;
+            case 'C': sz = 1; break;
+            }
+
+            // Check if no number is attached if the size of the
+            // received data is consistent with the format string
+            if (it==tok.end() && (end-ptr)%sz>0)
+                return Exception::Error(String::New(("Number of received bytes ["+to_string(evt->GetSize())+"] does not match format ["+evt->GetFormat()+"]").c_str()));
+
+            // Check if format has a number attached.
+            // If no number is attached calculate number of elements
+            const uint32_t cnt = it==tok.end() ? (end-ptr)/sz : stoi(it->c_str());
+
+            // is_str: Array of type C but unknown size (String)
+            // is_one: Array of known size, but size is 1 (I:1)
+            const bool is_str = type=='C' && it==tok.end();
+            const bool is_one = cnt==1    && it!=tok.end();
+
+            Handle<Value> v;
+
+            if (is_str)
+                v = String::New(ptr);
+            if (is_one)
+                v = Convert(type, ptr);
+
+            // Array of known (I:5) or unknown size (I), but no string
+            if (!is_str && !is_one)
+            {
+                Handle<Object> a = Array::New(cnt);
+                if (a.IsEmpty())
+                    return Undefined();
+
+                for (uint32_t i=0; i<cnt; i++)
+                    a->Set(i, Convert(type, ptr));
+
+                v = a;
+            }
+
+            if (tok.size()>1)
+                arr->Set(pos-1, v);
+            else
+                ret->Set(String::New("data"), v, ReadOnly);
+
+            if (!name.empty())
+            {
+                const Handle<String> n = String::New(name.c_str());
+                named->Set(n, v);
+            }
+        }
+
+        if (tok.size()>1)
+            ret->Set(String::New("data"), arr, ReadOnly);
+
+        return ret;
+    }
+    catch (...)
+    {
+        return Exception::Error(String::New(("Format string conversion '"+evt->GetFormat()+"' failed.").c_str()));
+    }
+}
+/*
+Handle<Value> InterpreterV8::FuncGetData(const Arguments &args)
+{
+    HandleScope handle_scope;
+
+    const String::AsciiValue str(args.Holder()->Get(String::New("name")));
+
+    const pair<uint64_t, EventImp *> p = JsGetEvent(*str);
+
+    const EventImp *evt = p.second;
+    if (!evt)
+        return Undefined();
+
+    //if (counter==cnt)
+    //    return info.Holder();//Holder()->Get(String::New("data"));
+
+    Handle<Value> ret = ConvertEvent(evt, p.first, *str);
+    return ret->IsNativeError() ? ThrowException(ret) : handle_scope.Close(ret);
+}
+*/
+Handle<Value> InterpreterV8::FuncGetData(const Arguments &args)
+{
+    if (args.Length()>2)
+        return ThrowException(String::New("Number of arguments must not be greater than 2."));
+
+    if (args.Length()>=1 && !args[0]->IsInt32() && !args[0]->IsNull())
+        return ThrowException(String::New("Argument 1 not an uint32."));
+
+    if (args.Length()==2 && !args[1]->IsBoolean())
+        return ThrowException(String::New("Argument 2 not a boolean."));
+
+    // Using a Javascript function has the advantage that it is fully
+    // interruptable without the need of C++ code
+    const bool    null    = args.Length()>=1 && args[0]->IsNull();
+    const int32_t timeout = args.Length()>=1 ? args[0]->Int32Value() : 0;
+    const bool    named   = args.Length()<2 || args[1]->BooleanValue();
+
+    HandleScope handle_scope;
+
+    const Handle<String> data   = String::New("data");
+    const Handle<String> object = String::New("obj");
+
+    const String::AsciiValue name(args.Holder()->Get(String::New("name")));
+
+    TryCatch exception;
+
+    Time t;
+    while (!exception.HasCaught())
+    {
+        const pair<uint64_t, EventImp *> p = JsGetEvent(*name);
+
+        const EventImp *evt = p.second;
+        if (evt)
+        {
+            const Handle<Value> val = ConvertEvent(evt, p.first, *name);
+            if (val->IsNativeError())
+                return ThrowException(val);
+
+            // Protect against the return of an exception
+            if (val->IsObject())
+            {
+                const Handle<Object> event = val->ToObject();
+                const Handle<Value>  obj   = event->Get(named?object:data);
+                if (!obj.IsEmpty())
+                {
+                    if (!named)
+                    {
+                        // No names (no 'obj'), but 'data'
+                        if (!obj->IsUndefined())
+                            return handle_scope.Close(val);
+                    }
+                    else
+                    {
+                        // Has names and data was received?
+                        if (obj->IsObject() && obj->ToObject()->GetOwnPropertyNames()->Length()>0)
+                            return handle_scope.Close(val);
+                    }
+                }
+            }
+        }
+
+        if (args.Length()==0)
+            break;
+
+        if (!null && Time()-t>=boost::posix_time::milliseconds(abs(timeout)))
+            break;
+
+        // Theoretically, the CPU usage can be reduced by maybe a factor
+        // of four using a larger value, but this also means that the
+        // JavaScript is locked for a longer time.
+        const Unlocker unlock;
+        usleep(1000);
+    }
+
+    // This hides the location of the exception, which is wanted.
+    if (exception.HasCaught())
+        return exception.ReThrow();
+
+    if (timeout<0)
+        return Undefined();
+
+    const string str = "Waiting for a valid event of "+string(*name)+" timed out.";
+    return ThrowException(String::New(str.c_str()));
+}
+
+
+// This is a callback from the RemoteControl piping event handling
+// to the java script ---> in test phase!
+void InterpreterV8::JsHandleEvent(const EventImp &evt, uint64_t cnt, const string &service)
+{
+    const Locker locker;
+
+    if (fThreadId<0)
+        return;
+
+    const auto it = fReverseMap.find(service);
+    if (it==fReverseMap.end())
+        return;
+
+    const HandleScope handle_scope;
+
+    Handle<Object> obj = it->second;
+
+    const Handle<String> onchange = String::New("onchange");
+    if (!obj->Has(onchange))
+        return;
+
+    const Handle<Value> val = obj->Get(onchange);
+    if (!val->IsFunction())
+        return;
+
+    obj->CreationContext()->Enter();
+
+    // -------------------------------------------------------------------
+
+    TryCatch exception;
+
+    const int id = V8::GetCurrentThreadId();
+    fThreadIds.insert(id);
+
+    Handle<Value> ret = ConvertEvent(&evt, cnt, service.c_str());
+    if (ret->IsObject())
+        Handle<Function>::Cast(val)->Call(obj, 1, &ret);
+
+    fThreadIds.erase(id);
+
+    if (!HandleException(exception, "Service.onchange"))
+        V8::TerminateExecution(fThreadId);
+
+    if (ret->IsNativeError())
+    {
+        JsException(service+".onchange callback - "+*String::AsciiValue(ret));
+        V8::TerminateExecution(fThreadId);
+    }
+
+    obj->CreationContext()->Exit();
+}
+
+Handle<Value> InterpreterV8::OnChangeSet(Local<String> prop, Local<Value> value, const AccessorInfo &)
+{
+    // Returns the value if the setter intercepts the request. Otherwise, returns an empty handle.
+    const string server = *String::AsciiValue(prop);
+    auto it = fStateCallbacks.find(server);
+
+    if (it!=fStateCallbacks.end())
+    {
+        it->second.Dispose();
+        fStateCallbacks.erase(it);
+    }
+
+    if (value->IsFunction())
+        fStateCallbacks[server] = Persistent<Object>::New(value->ToObject());
+
+    return Handle<Value>();
+}
+
+void InterpreterV8::JsHandleState(const std::string &server, const State &state)
+{
+    const Locker locker;
+
+    if (fThreadId<0)
+        return;
+
+    auto it = fStateCallbacks.find(server);
+    if (it==fStateCallbacks.end())
+    {
+        it = fStateCallbacks.find("*");
+        if (it==fStateCallbacks.end())
+            return;
+    }
+
+    const HandleScope handle_scope;
+
+    it->second->CreationContext()->Enter();
+
+    // -------------------------------------------------------------------
+
+    Handle<ObjectTemplate> obj = ObjectTemplate::New();
+    obj->Set(String::New("server"),  String::New(server.c_str()), ReadOnly);
+
+    if (state.index>-256)
+    {
+        obj->Set(String::New("index"),   Integer::New(state.index),          ReadOnly);
+        obj->Set(String::New("name"),    String::New(state.name.c_str()),    ReadOnly);
+        obj->Set(String::New("comment"), String::New(state.comment.c_str()), ReadOnly);
+        const Local<Value> date = Date::New(state.time.JavaDate());
+        if (!date.IsEmpty())
+            obj->Set(String::New("time"), date);
+    }
+
+    // -------------------------------------------------------------------
+
+    TryCatch exception;
+
+    const int id = V8::GetCurrentThreadId();
+    fThreadIds.insert(id);
+
+    Handle<Value> args[] = { obj->NewInstance() };
+    Handle<Function> fun = Handle<Function>(Function::Cast(*it->second));
+    fun->Call(fun, 1, args);
+
+    fThreadIds.erase(id);
+
+    if (!HandleException(exception, "dim.onchange"))
+        V8::TerminateExecution(fThreadId);
+
+    it->second->CreationContext()->Exit();
+}
+
+// ==========================================================================
+//                           Interrupt handling
+// ==========================================================================
+
+Handle<Value> InterpreterV8::FuncSetInterrupt(const Arguments &args)
+{
+    if (args.Length()!=1)
+        return ThrowException(String::New("Number of arguments must be 1."));
+
+    if (!args[0]->IsNull() && !args[0]->IsUndefined() && !args[0]->IsFunction())
+        return ThrowException(String::New("Argument not a function, null or undefined."));
+
+    if (args[0]->IsNull() || args[0]->IsUndefined())
+    {
+        fInterruptCallback.Dispose();
+        fInterruptCallback.Clear();
+        return Undefined();
+    }
+
+    // Returns the value if the setter intercepts the request. Otherwise, returns an empty handle.
+    fInterruptCallback = Persistent<Object>::New(args[0]->ToObject());
+    return Undefined();
+}
+
+Handle<Value> InterpreterV8::HandleInterruptImp(string str, uint64_t time)
+{
+    if (fInterruptCallback.IsEmpty())
+        return Handle<Value>();
+
+    const size_t p = str.find_last_of('\n');
+
+    const string usr = p==string::npos?"":str.substr(p+1);
+
+    string irq = p==string::npos?str:str.substr(0, p);
+    const map<string,string> data = Tools::Split(irq, true);
+
+    Local<Value>  irq_str = String::New(irq.c_str());
+    Local<Value>  usr_str = String::New(usr.c_str());
+    Local<Value>  date    = Date::New(time);
+    Handle<Object> arr    = Array::New(data.size());
+
+    if (date.IsEmpty() || arr.IsEmpty())
+        return Handle<Value>();
+
+    for (auto it=data.begin(); it!=data.end(); it++)
+        arr->Set(String::New(it->first.c_str()), String::New(it->second.c_str()));
+
+    Handle<Value> args[] = { irq_str, arr, date, usr_str };
+    Handle<Function> fun = Handle<Function>(Function::Cast(*fInterruptCallback));
+
+    return fun->Call(fun, 4, args);
+}
+
+int InterpreterV8::JsHandleInterrupt(const EventImp &evt)
+{
+    const Locker locker;
+
+    if (fThreadId<0)
+        return -42;
+
+    const HandleScope handle_scope;
+
+    fInterruptCallback->CreationContext()->Enter();
+
+    // -------------------------------------------------------------------
+
+    TryCatch exception;
+
+    const int id = V8::GetCurrentThreadId();
+    fThreadIds.insert(id);
+
+    const Handle<Value> val = HandleInterruptImp(evt.GetString(), evt.GetJavaDate());
+
+    fThreadIds.erase(id);
+
+    const int rc = !val.IsEmpty() && val->IsInt32() ? val->Int32Value() : 0;
+
+    if (!HandleException(exception, "interrupt"))
+        V8::TerminateExecution(fThreadId);
+
+    fInterruptCallback->CreationContext()->Exit();
+
+    return rc<10 || rc>255 ? -42 : rc;
+}
+
+Handle<Value> InterpreterV8::FuncTriggerInterrupt(const Arguments &args)
+{
+    string data;
+    for (int i=0; i<args.Length(); i++)
+    {
+        const String::AsciiValue str(args[i]);
+
+        if (string(*str).find_first_of('\n')!=string::npos)
+            return ThrowException(String::New("No argument must contain line breaks."));
+
+        if (!*str)
+            continue;
+
+        data += *str;
+        data += ' ';
+    }
+
+    HandleScope handle_scope;
+
+    const Handle<Value> rc = HandleInterruptImp(Tools::Trim(data), Time().JavaDate());
+    return handle_scope.Close(rc);
+}
+
+// ==========================================================================
+//                           Class 'Subscription'
+// ==========================================================================
+
+Handle<Value> InterpreterV8::FuncSubscription(const Arguments &args)
+{
+    if (args.Length()!=1 && args.Length()!=2)
+        return ThrowException(String::New("Number of arguments must be one or two."));
+
+    if (!args[0]->IsString())
+        return ThrowException(String::New("Argument 1 must be a string."));
+
+    if (args.Length()==2 && !args[1]->IsFunction())
+        return ThrowException(String::New("Argument 2 must be a function."));
+
+    const String::AsciiValue str(args[0]);
+
+    if (!args.IsConstructCall())
+    {
+        const auto it = fReverseMap.find(*str);
+        if (it!=fReverseMap.end())
+            return it->second;
+
+        return Undefined();
+    }
+
+    const HandleScope handle_scope;
+
+    Handle<Object> self = args.This();
+    self->Set(String::New("get"),    FunctionTemplate::New(WrapGetData)->GetFunction(),  ReadOnly);
+    self->Set(String::New("close"),  FunctionTemplate::New(WrapClose)->GetFunction(),    ReadOnly);
+    self->Set(String::New("name"),   String::New(*str), ReadOnly);
+    self->Set(String::New("isOpen"), Boolean::New(true));
+
+    if (args.Length()==2)
+        self->Set(String::New("onchange"), args[1]);
+
+    fReverseMap[*str] = Persistent<Object>::New(self);
+
+    void *ptr = JsSubscribe(*str);
+    if (ptr==0)
+        return ThrowException(String::New(("Subscription to '"+string(*str)+"' already exists.").c_str()));
+
+    self->SetInternalField(0, External::New(ptr));
+
+    return Undefined();
+
+    // Persistent<Object> p = Persistent<Object>::New(obj->NewInstance());
+    // obj.MakeWeak((void*)1, Cleanup);
+    // return obj;
+}
+
+// ==========================================================================
+//                            Astrometry
+// ==========================================================================
+#ifdef HAVE_NOVA
+
+double InterpreterV8::GetDataMember(const Arguments &args, const char *name)
+{
+    return args.This()->Get(String::New(name))->NumberValue();
+}
+
+Handle<Value> InterpreterV8::CalcDist(const Arguments &args, const bool local)
+{
+    if (args.Length()!=2)
+        return ThrowException(String::New("dist must not be called with two arguments."));
+
+    if (!args[0]->IsObject() || !args[1]->IsObject())
+        return ThrowException(String::New("at least one argument not an object."));
+
+    HandleScope handle_scope;
+
+    Handle<Object> obj[2] =
+    {
+        Handle<Object>::Cast(args[0]),
+        Handle<Object>::Cast(args[1])
+    };
+
+    const Handle<String> s_theta = String::New(local?"zd":"dec"); // was: zd
+    const Handle<String> s_phi   = String::New(local?"az":"ra");  // was: az
+
+    const double conv_t = M_PI/180;
+    const double conv_p = local ? -M_PI/180 : M_PI/12;
+    const double offset = local ? 0 : M_PI;
+
+    const double theta0 = offset - obj[0]->Get(s_theta)->NumberValue() * conv_t;
+    const double phi0   =          obj[0]->Get(s_phi  )->NumberValue() * conv_p;
+    const double theta1 = offset - obj[1]->Get(s_theta)->NumberValue() * conv_t;
+    const double phi1   =          obj[1]->Get(s_phi  )->NumberValue() * conv_p;
+
+    if (!finite(theta0) || !finite(theta1) || !finite(phi0) || !finite(phi1))
+        return ThrowException(String::New("some values not valid or not finite."));
+
+    /*
+    const double x0 = sin(zd0) * cos(az0);   // az0 -= az0
+    const double y0 = sin(zd0) * sin(az0);   // az0 -= az0
+    const double z0 = cos(zd0);
+
+    const double x1 = sin(zd1) * cos(az1);   // az1 -= az0
+    const double y1 = sin(zd1) * sin(az1);   // az1 -= az0
+    const double z1 = cos(zd1);
+
+    const double res = acos(x0*x1 + y0*y1 + z0*z1) * 180/M_PI;
+    */
+
+    // cos(az1-az0) = cos(az1)*cos(az0) + sin(az1)*sin(az0)
+
+    const double x = sin(theta0) * sin(theta1) * cos(phi1-phi0);
+    const double y = cos(theta0) * cos(theta1);
+
+    const double res = acos(x + y) * 180/M_PI;
+
+    return handle_scope.Close(Number::New(res));
+}
+
+Handle<Value> InterpreterV8::LocalDist(const Arguments &args)
+{
+    return CalcDist(args, true);
+}
+
+Handle<Value> InterpreterV8::SkyDist(const Arguments &args)
+{
+    return CalcDist(args, false);
+}
+
+Handle<Value> InterpreterV8::MoonDisk(const Arguments &args)
+{
+    if (args.Length()>1)
+        return ThrowException(String::New("disk must not be called with more than one argument."));
+
+    const uint64_t v = uint64_t(args[0]->NumberValue());
+    const Time utc = args.Length()==0 ? Time() : Time(v/1000, v%1000);
+
+    return Number::New(Nova::GetLunarDisk(utc.JD()));
+}
+
+Handle<Value> InterpreterV8::LocalToSky(const Arguments &args)
+{
+    if (args.Length()>1)
+        return ThrowException(String::New("toSky must not be called with more than one argument."));
+
+    if (args.Length()==1 && !args[0]->IsDate())
+        return ThrowException(String::New("Argument must be a Date"));
+
+    Nova::ZdAzPosn hrz;
+    hrz.zd = GetDataMember(args, "zd");
+    hrz.az = GetDataMember(args, "az");
+
+    if (!finite(hrz.zd) || !finite(hrz.az))
+        return ThrowException(String::New("zd and az must be finite."));
+
+    HandleScope handle_scope;
+
+    const Local<Value> date =
+        args.Length()==0 ? Date::New(Time().JavaDate()) : args[0];
+    if (date.IsEmpty())
+        return Undefined();
+
+    const uint64_t v = uint64_t(date->NumberValue());
+    const Time utc(v/1000, v%1000);
+
+    const Nova::EquPosn equ = Nova::GetEquFromHrz(hrz, utc.JD());
+
+    // -----------------------------
+
+    Handle<Value> arg[] = { Number::New(equ.ra/15), Number::New(equ.dec), date };
+    return handle_scope.Close(fTemplateSky->GetFunction()->NewInstance(3, arg));
+}
+
+Handle<Value> InterpreterV8::SkyToLocal(const Arguments &args)
+{
+    if (args.Length()>1)
+        return ThrowException(String::New("toLocal must not be called with more than one argument."));
+
+    if (args.Length()==1 && !args[0]->IsDate())
+        return ThrowException(String::New("Argument must be a Date"));
+
+    Nova::EquPosn equ;
+    equ.ra  = GetDataMember(args, "ra")*15;
+    equ.dec = GetDataMember(args, "dec");
+
+    if (!finite(equ.ra) || !finite(equ.dec))
+        return ThrowException(String::New("Ra and dec must be finite."));
+
+    HandleScope handle_scope;
+
+    const Local<Value> date =
+        args.Length()==0 ? Date::New(Time().JavaDate()) : args[0];
+    if (date.IsEmpty())
+        return Undefined();
+
+    const uint64_t v = uint64_t(date->NumberValue());
+    const Time utc(v/1000, v%1000);
+
+    const Nova::ZdAzPosn hrz = Nova::GetHrzFromEqu(equ, utc.JD());
+
+    Handle<Value> arg[] = { Number::New(hrz.zd), Number::New(hrz.az), date };
+    return handle_scope.Close(fTemplateLocal->GetFunction()->NewInstance(3, arg));
+}
+
+Handle<Value> InterpreterV8::MoonToLocal(const Arguments &args)
+{
+    if (args.Length()>0)
+        return ThrowException(String::New("toLocal must not be called with arguments."));
+
+    Nova::EquPosn equ;
+    equ.ra  = GetDataMember(args, "ra")*15;
+    equ.dec = GetDataMember(args, "dec");
+
+    if (!finite(equ.ra) || !finite(equ.dec))
+        return ThrowException(String::New("ra and dec must be finite."));
+
+    HandleScope handle_scope;
+
+    const Local<Value> date = args.This()->Get(String::New("time"));
+    if (date.IsEmpty() || date->IsUndefined() )
+        return Undefined();
+
+    const uint64_t v = uint64_t(date->NumberValue());
+    const Time utc(v/1000, v%1000);
+
+    const Nova::ZdAzPosn hrz = Nova::GetHrzFromEqu(equ, utc.JD());
+
+    Handle<Value> arg[] = { Number::New(hrz.zd), Number::New(hrz.az), date };
+    return handle_scope.Close(fTemplateLocal->GetFunction()->NewInstance(3, arg));
+}
+
+Handle<Value> InterpreterV8::ConstructorMoon(const Arguments &args)
+{
+    if (args.Length()>1)
+        return ThrowException(String::New("Moon constructor must not be called with more than one argument."));
+
+    if (args.Length()==1 && !args[0]->IsDate())
+        return ThrowException(String::New("Argument must be a Date"));
+
+    HandleScope handle_scope;
+
+    const Local<Value> date =
+        args.Length()==0 ? Date::New(Time().JavaDate()) : args[0];
+    if (date.IsEmpty())
+        return Undefined();
+
+    const uint64_t v = uint64_t(date->NumberValue());
+    const Time utc(v/1000, v%1000);
+
+    const Nova::EquPosn equ = Nova::GetLunarEquCoords(utc.JD(), 0.01);
+
+    // ----------------------------
+
+    if (!args.IsConstructCall())
+        return handle_scope.Close(Constructor(args));
+
+    Handle<Function> function =
+        FunctionTemplate::New(MoonToLocal)->GetFunction();
+    if (function.IsEmpty())
+        return Undefined();
+
+    Handle<Object> self = args.This();
+    self->Set(String::New("ra"),      Number::New(equ.ra/15),  ReadOnly);
+    self->Set(String::New("dec"),     Number::New(equ.dec),    ReadOnly);
+    self->Set(String::New("toLocal"), function,                ReadOnly);
+    self->Set(String::New("time"),    date,                    ReadOnly);
+
+    return handle_scope.Close(self);
+}
+
+Handle<Value> InterpreterV8::ConstructorSky(const Arguments &args)
+{
+    if (args.Length()<2 || args.Length()>3)
+        return ThrowException(String::New("Sky constructor takes two or three arguments."));
+
+    if (args.Length()==3 && !args[2]->IsDate())
+        return ThrowException(String::New("Third argument must be a Date."));
+
+    const double ra  = args[0]->NumberValue();
+    const double dec = args[1]->NumberValue();
+
+    if (!finite(ra) || !finite(dec))
+        return ThrowException(String::New("Both arguments to Sky must be valid numbers."));
+
+    // ----------------------------
+
+    HandleScope handle_scope;
+
+    if (!args.IsConstructCall())
+        return handle_scope.Close(Constructor(args));
+
+    Handle<Function> function =
+        FunctionTemplate::New(SkyToLocal)->GetFunction();
+    if (function.IsEmpty())
+        return Undefined();
+
+    Handle<Object> self = args.This();
+    self->Set(String::New("ra"),      Number::New(ra),  ReadOnly);
+    self->Set(String::New("dec"),     Number::New(dec), ReadOnly);
+    self->Set(String::New("toLocal"), function,         ReadOnly);
+    if (args.Length()==3)
+        self->Set(String::New("time"), args[2], ReadOnly);
+
+    return handle_scope.Close(self);
+}
+
+Handle<Value> InterpreterV8::ConstructorLocal(const Arguments &args)
+{
+    if (args.Length()<2 || args.Length()>3)
+        return ThrowException(String::New("Local constructor takes two or three arguments."));
+
+    if (args.Length()==3 && !args[2]->IsDate())
+        return ThrowException(String::New("Third argument must be a Date."));
+
+    const double zd = args[0]->NumberValue();
+    const double az = args[1]->NumberValue();
+
+    if (!finite(zd) || !finite(az))
+        return ThrowException(String::New("Both arguments to Local must be valid numbers."));
+
+    // --------------------
+
+    HandleScope handle_scope;
+
+    if (!args.IsConstructCall())
+        return handle_scope.Close(Constructor(args));
+
+    Handle<Function> function =
+        FunctionTemplate::New(LocalToSky)->GetFunction();
+    if (function.IsEmpty())
+        return Undefined();
+
+    Handle<Object> self = args.This();
+    self->Set(String::New("zd"),    Number::New(zd), ReadOnly);
+    self->Set(String::New("az"),    Number::New(az), ReadOnly);
+    self->Set(String::New("toSky"), function,        ReadOnly);
+    if (args.Length()==3)
+        self->Set(String::New("time"), args[2], ReadOnly);
+
+    return handle_scope.Close(self);
+}
+
+Handle<Object> InterpreterV8::ConstructRiseSet(const Handle<Value> time, const Nova::RstTime &rst, const bool &rc)
+{
+    Handle<Object> obj = Object::New();
+    obj->Set(String::New("time"), time, ReadOnly);
+
+    const uint64_t v = uint64_t(time->NumberValue());
+    const double jd = Time(v/1000, v%1000).JD();
+
+    const bool isUp = rc>0 ||
+        (rst.rise<rst.set && (jd>rst.rise && jd<rst.set)) ||
+        (rst.rise>rst.set && (jd<rst.set  || jd>rst.rise));
+
+    obj->Set(String::New("isUp"), Boolean::New(rc>=0 && isUp), ReadOnly);
+
+    if (rc!=0)
+        return obj;
+
+    Handle<Value> rise  = Date::New(Time(rst.rise).JavaDate());
+    Handle<Value> set   = Date::New(Time(rst.set).JavaDate());
+    Handle<Value> trans = Date::New(Time(rst.transit).JavaDate());
+    if (rise.IsEmpty() || set.IsEmpty() || trans.IsEmpty())
+        return Handle<Object>();
+
+    obj->Set(String::New("rise"), rise, ReadOnly);
+    obj->Set(String::New("set"), set, ReadOnly);
+    obj->Set(String::New("transit"), trans, ReadOnly);
+
+    return obj;
+}
+
+Handle<Value> InterpreterV8::SunHorizon(const Arguments &args)
+{
+    if (args.Length()>2)
+        return ThrowException(String::New("Sun.horizon must not be called with one or two arguments."));
+
+    if (args.Length()==2 && !args[1]->IsDate())
+        return ThrowException(String::New("Second argument must be a Date"));
+
+    HandleScope handle_scope;
+
+    double hrz = NAN;
+    if (args.Length()==0 || args[0]->IsNull())
+        hrz = LN_SOLAR_STANDART_HORIZON;
+    if (args.Length()>0 && args[0]->IsNumber())
+        hrz = args[0]->NumberValue();
+    if (args.Length()>0 && args[0]->IsString())
+    {
+        string arg(Tools::Trim(*String::AsciiValue(args[0])));
+        transform(arg.begin(), arg.end(), arg.begin(), ::tolower);
+
+        if (arg==string("horizon").substr(0, arg.length()))
+            hrz = LN_SOLAR_STANDART_HORIZON;
+        if (arg==string("civil").substr(0, arg.length()))
+            hrz = LN_SOLAR_CIVIL_HORIZON;
+        if (arg==string("nautical").substr(0, arg.length()))
+            hrz = LN_SOLAR_NAUTIC_HORIZON;
+        if (arg==string("fact").substr(0, arg.length()))
+            hrz = -13;
+        if (arg==string("astronomical").substr(0, arg.length()))
+            hrz = LN_SOLAR_ASTRONOMICAL_HORIZON;
+    }
+
+    if (!finite(hrz))
+        return ThrowException(String::New("Second argument did not yield a valid number."));
+
+    const Local<Value> date =
+        args.Length()<2 ? Date::New(Time().JavaDate()) : args[1];
+    if (date.IsEmpty())
+        return Undefined();
+
+    const uint64_t v = uint64_t(date->NumberValue());
+    const Time utc(v/1000, v%1000);
+
+    Nova::LnLatPosn obs = Nova::ORM();
+
+    ln_rst_time sun;
+    const int rc = ln_get_solar_rst_horizon(utc.JD()-0.5, &obs, hrz, &sun);
+    Handle<Object> rst = ConstructRiseSet(date, sun, rc);
+    rst->Set(String::New("horizon"), Number::New(hrz));
+    return handle_scope.Close(rst);
+};
+
+Handle<Value> InterpreterV8::MoonHorizon(const Arguments &args)
+{
+    if (args.Length()>1)
+        return ThrowException(String::New("Moon.horizon must not be called with one argument."));
+
+    if (args.Length()==1 && !args[0]->IsDate())
+        return ThrowException(String::New("Argument must be a Date"));
+
+    HandleScope handle_scope;
+
+    const Local<Value> date =
+        args.Length()==0 ? Date::New(Time().JavaDate()) : args[0];
+    if (date.IsEmpty())
+        return Undefined();
+
+    const uint64_t v = uint64_t(date->NumberValue());
+    const Time utc(v/1000, v%1000);
+
+    Nova::LnLatPosn obs = Nova::ORM();
+
+    ln_rst_time moon;
+    const int rc = ln_get_lunar_rst(utc.JD()-0.5, &obs, &moon);
+    Handle<Object> rst = ConstructRiseSet(date, moon, rc);
+    return handle_scope.Close(rst);
+};
+#endif
+
+// ==========================================================================
+//                            Process control
+// ==========================================================================
+
+bool InterpreterV8::HandleException(TryCatch& try_catch, const char *where)
+{
+    if (!try_catch.HasCaught() || !try_catch.CanContinue())
+        return true;
+
+    const HandleScope handle_scope;
+
+    Handle<Value> except = try_catch.Exception();
+    if (except.IsEmpty() || except->IsNull())
+        return true;
+
+    const String::AsciiValue exception(except);
+
+    const Handle<Message> message = try_catch.Message();
+    if (message.IsEmpty())
+        return false;
+
+    ostringstream out;
+
+    if (!message->GetScriptResourceName()->IsUndefined())
+    {
+        // Print (filename):(line number): (message).
+        const String::AsciiValue filename(message->GetScriptResourceName());
+        if (filename.length()>0)
+        {
+            out << *filename;
+            if (message->GetLineNumber()>0)
+                out << ": l." << message->GetLineNumber();
+            if (*exception)
+                out << ": ";
+        }
+    }
+
+    if (*exception)
+        out << *exception;
+
+    out << " [" << where << "]";
+
+    JsException(out.str());
+
+    // Print line of source code.
+    const String::AsciiValue sourceline(message->GetSourceLine());
+    if (*sourceline)
+        JsException(*sourceline);
+
+    // Print wavy underline (GetUnderline is deprecated).
+    const int start = message->GetStartColumn();
+    const int end   = message->GetEndColumn();
+
+    out.str("");
+    if (start>0)
+        out << setfill(' ') << setw(start) << ' ';
+    out << setfill('^') << setw(end-start) << '^';
+
+    JsException(out.str());
+
+    const String::AsciiValue stack_trace(try_catch.StackTrace());
+    if (stack_trace.length()<=0)
+        return false;
+
+    if (!*stack_trace)
+        return false;
+
+    const string trace(*stack_trace);
+
+    typedef boost::char_separator<char> separator;
+    const boost::tokenizer<separator> tokenizer(trace, separator("\n"));
+
+    // maybe skip: "    at internal:"
+    // maybe skip: "    at unknown source:"
+
+    auto it = tokenizer.begin();
+    JsException("");
+    while (it!=tokenizer.end())
+        JsException(*it++);
+
+    return false;
+}
+
+Handle<Value> InterpreterV8::ExecuteInternal(const string &code)
+{
+    // Try/catch and re-throw hides our internal code from
+    // the displayed exception showing the origin and shows
+    // the user function instead.
+    TryCatch exception;
+
+    const Handle<Value> result = ExecuteCode(code);
+
+    // This hides the location of the exception in the internal code,
+    // which is wanted.
+    if (exception.HasCaught())
+        exception.ReThrow();
+
+    return result;
+}
+
+Handle<Value> InterpreterV8::ExecuteCode(const string &code, const string &file)
+{
+    HandleScope handle_scope;
+
+    const Handle<String> source = String::New(code.c_str(), code.size());
+    const Handle<String> origin = String::New(file.c_str());
+    if (source.IsEmpty())
+        return Undefined();
+
+    const Handle<Script> script = Script::Compile(source, origin);
+    if (script.IsEmpty())
+        return Undefined();
+
+    const Handle<String> __date__ = String::New("__DATE__");
+    const Handle<String> __file__ = String::New("__FILE__");
+
+    Handle<Value> save_date;
+    Handle<Value> save_file;
+
+    Handle<Object> global = Context::GetCurrent()->Global();
+    if (!global.IsEmpty())
+    {
+        struct stat attrib;
+        if (stat(file.c_str(), &attrib)==0)
+        {
+            save_date = global->Get(__date__);
+            save_file = global->Get(__file__);
+
+            global->Set(__file__, String::New(file.c_str()));
+
+            const Local<Value> date = Date::New(attrib.st_mtime*1000);
+            if (!date.IsEmpty())
+                global->Set(__date__, date);
+        }
+    }
+
+    const Handle<Value> rc = script->Run();
+    if (rc.IsEmpty())
+        return Undefined();
+
+    if (!global.IsEmpty() && !save_date.IsEmpty())
+    {
+        global->ForceSet(__date__, save_date);
+        global->ForceSet(__file__, save_file);
+    }
+
+    return handle_scope.Close(rc);
+}
+
+void InterpreterV8::ExecuteConsole()
+{
+    JsSetState(3);
+
+    WindowLog lout;
+    lout << "\n " << kUnderline << " JavaScript interpreter " << kReset << " (enter '.q' to quit)\n" << endl;
+
+    Readline::StaticPushHistory("java.his");
+
+    string command;
+    while (1)
+    {
+        // Create a local handle scope so that left-overs from single
+        // console inputs will not fill up the memory
+        const HandleScope handle_scope;
+
+        // Unlocking is necessary for the preemption to work
+        const Unlocker global_unlock;
+
+        const string buffer = Tools::Trim(Readline::StaticPrompt(command.empty() ? "JS> " : " \\> "));
+        if (buffer==".q")
+            break;
+
+        // buffer empty, do nothing
+        if (buffer.empty())
+            continue;
+
+        // Compose command
+        if (!command.empty())
+            command += ' ';
+        command += buffer;
+
+        // If line ends with a backslash, allow addition of next line
+        auto back = command.rbegin();
+        if (*back=='\\')
+        {
+            *back = ' ';
+            command = Tools::Trim(command);
+            continue;
+        }
+
+        // Locking is necessary to be able to execute java script code
+        const Locker lock;
+
+        // Catch exceptions during code compilation
+        TryCatch exception;
+
+        // Execute code which was entered
+        const Handle<Value> rc = ExecuteCode(command, "console");
+
+        // If all went well and the result wasn't undefined then print
+        // the returned value.
+        if (!rc->IsUndefined() && !rc->IsFunction())
+            JsResult(*String::AsciiValue(rc));
+
+        if (!HandleException(exception, "console"))
+            lout << endl;
+
+        // Stop all other threads
+        for (auto it=fThreadIds.begin(); it!=fThreadIds.end(); it++)
+            V8::TerminateExecution(*it);
+
+        // Allow the java scripts (threads) to run and hence to terminate
+        const Unlocker unlock;
+
+        // Wait until all threads are terminated
+        while (!fThreadIds.empty())
+            usleep(1000);
+
+        // command has been executed, collect new command
+        command = "";
+    }
+
+    lout << endl;
+
+    Readline::StaticPopHistory("java.his");
+}
+
+// ==========================================================================
+//                                  CORE
+// ==========================================================================
+
+InterpreterV8::InterpreterV8() : fThreadId(-1)
+{
+    const string ver(V8::GetVersion());
+
+    typedef boost::char_separator<char> separator;
+    const boost::tokenizer<separator> tokenizer(ver, separator("."));
+
+    const vector<string> tok(tokenizer.begin(), tokenizer.end());
+
+    const int major = tok.size()>0 ? stol(tok[0]) : -1;
+    const int minor = tok.size()>1 ? stol(tok[1]) : -1;
+    const int build = tok.size()>2 ? stol(tok[2]) : -1;
+
+    if (major>3 || (major==3 && minor>9) || (major==3 && minor==9 && build>10))
+    {
+        const string argv = "--use_strict";
+        V8::SetFlagsFromString(argv.c_str(), argv.size());
+    }
+
+    /*
+     const string argv1 = "--prof";
+     const string argv2 = "--noprof-lazy";
+
+     V8::SetFlagsFromString(argv1.c_str(), argv1.size());
+     V8::SetFlagsFromString(argv2.c_str(), argv2.size());
+     */
+
+    This = this;
+}
+
+Handle<Value> InterpreterV8::Constructor(/*Handle<FunctionTemplate> T,*/ const Arguments &args)
+{
+    Handle<Value> argv[args.Length()];
+
+    for (int i=0; i<args.Length(); i++)
+        argv[i] = args[i];
+
+    return args.Callee()->NewInstance(args.Length(), argv);
+}
+
+
+void InterpreterV8::AddFormatToGlobal()// const
+{
+    const string code =
+        "String.form = function(str, arr)"
+        "{"
+            "var i = -1;"
+            "function callback(exp, p0, p1, p2, p3, p4/*, pos, str*/)"
+            "{"
+                "if (exp=='%%')"
+                    "return '%';"
+                ""
+                "if (arr[++i]===undefined)"
+                    "return undefined;"
+                ""
+                "var exp  = p2 ? parseInt(p2.substr(1)) : undefined;"
+                "var base = p3 ? parseInt(p3.substr(1)) : undefined;"
+                ""
+                "var val;"
+                "switch (p4)"
+                "{"
+                "case 's': val = arr[i]; break;"
+                "case 'c': val = arr[i][0]; break;"
+                "case 'f': val = parseFloat(arr[i]).toFixed(exp); break;"
+                "case 'p': val = parseFloat(arr[i]).toPrecision(exp); break;"
+                "case 'e': val = parseFloat(arr[i]).toExponential(exp); break;"
+                "case 'x': val = parseInt(arr[i]).toString(base?base:16); break;"
+                "case 'd': val = parseFloat(parseInt(arr[i], base?base:10).toPrecision(exp)).toFixed(0); break;"
+                //"default:\n"
+                //"    throw new SyntaxError('Conversion specifier '+p4+' unknown.');\n"
+                "}"
+                ""
+                "val = typeof(val)=='object' ? JSON.stringify(val) : val.toString(base);"
+                ""
+                "var sz = parseInt(p1); /* padding size */"
+                "var ch = p1 && p1[0]=='0' ? '0' : ' '; /* isnull? */"
+                "while (val.length<sz)"
+                    "val = p0 !== undefined ? val+ch : ch+val; /* isminus? */"
+                ""
+                "return val;"
+            "}"
+            ""
+            "var regex = /%(-)?(0?[0-9]+)?([.][0-9]+)?([#][0-9]+)?([scfpexd])/g;"
+            "return str.replace(regex, callback);"
+        "}"
+        "\n"
+        "String.prototype.$ = function()"
+        "{"
+            "return String.form(this, Array.prototype.slice.call(arguments));"
+        "}"
+        "\n"
+        "String.prototype.count = function(c,i)"
+        "{"
+            "return (this.match(new RegExp(c,i?'gi':'g'))||[]).length;"
+        "}"/*
+        "\n"
+        "var format = function()"
+        "{"
+            "return dim.format(arguments[0], Array.prototype.slice.call(arguments,1));"
+        "}"*/;
+
+    // ExcuteInternal does not work properly here...
+    // If suring compilation an exception is thrown, it will not work
+    Handle<Script> script = Script::New(String::New(code.c_str()), String::New("internal"));
+    if (!script.IsEmpty())
+        script->Run();
+}
+
+void InterpreterV8::JsLoad(const std::string &)
+{
+    Readline::SetScriptDepth(1);
+}
+
+void InterpreterV8::JsEnd(const std::string &)
+{
+    Readline::SetScriptDepth(0);
+}
+
+bool InterpreterV8::JsRun(const string &filename, const map<string, string> &map)
+{
+    const Locker locker;
+    fThreadId = V8::GetCurrentThreadId();
+
+    JsPrint(string("JavaScript Engine V8 ")+V8::GetVersion());
+
+    JsLoad(filename);
+
+    const HandleScope handle_scope;
+
+    // Create a template for the global object.
+    Handle<ObjectTemplate> dim = ObjectTemplate::New();
+    dim->Set(String::New("log"),       FunctionTemplate::New(WrapLog),       ReadOnly);
+    dim->Set(String::New("alarm"),     FunctionTemplate::New(WrapAlarm),     ReadOnly);
+    dim->Set(String::New("wait"),      FunctionTemplate::New(WrapWait),      ReadOnly);
+    dim->Set(String::New("send"),      FunctionTemplate::New(WrapSend),      ReadOnly);
+    dim->Set(String::New("state"),     FunctionTemplate::New(WrapState),     ReadOnly);
+    dim->Set(String::New("version"),   Integer::New(DIM_VERSION_NUMBER),     ReadOnly);
+    dim->Set(String::New("getStates"), FunctionTemplate::New(WrapGetStates), ReadOnly);
+    dim->Set(String::New("getDescription"), FunctionTemplate::New(WrapGetDescription), ReadOnly);
+    dim->Set(String::New("getServices"), FunctionTemplate::New(WrapGetServices), ReadOnly);
+
+    Handle<ObjectTemplate> dimctrl = ObjectTemplate::New();
+    dimctrl->Set(String::New("defineState"), FunctionTemplate::New(WrapNewState),  ReadOnly);
+    dimctrl->Set(String::New("setState"),    FunctionTemplate::New(WrapSetState),  ReadOnly);
+    dimctrl->Set(String::New("getState"),    FunctionTemplate::New(WrapGetState),  ReadOnly);
+    dimctrl->Set(String::New("setInterruptHandler"), FunctionTemplate::New(WrapSetInterrupt), ReadOnly);
+    dimctrl->Set(String::New("triggerInterrupt"), FunctionTemplate::New(WrapTriggerInterrupt), ReadOnly);
+
+    Handle<ObjectTemplate> v8 = ObjectTemplate::New();
+    v8->Set(String::New("sleep"),   FunctionTemplate::New(WrapSleep), ReadOnly);
+    v8->Set(String::New("timeout"), FunctionTemplate::New(WrapTimeout), ReadOnly);
+    v8->Set(String::New("version"), String::New(V8::GetVersion()),    ReadOnly);
+
+    Handle<ObjectTemplate> console = ObjectTemplate::New();
+    console->Set(String::New("out"), FunctionTemplate::New(WrapOut), ReadOnly);
+    console->Set(String::New("warn"), FunctionTemplate::New(WrapWarn), ReadOnly);
+
+    Handle<ObjectTemplate> onchange = ObjectTemplate::New();
+    onchange->SetNamedPropertyHandler(OnChangeGet, WrapOnChangeSet);
+    dim->Set(String::New("onchange"), onchange);
+
+    Handle<ObjectTemplate> global = ObjectTemplate::New();
+    global->Set(String::New("v8"),      v8,      ReadOnly);
+    global->Set(String::New("dim"),     dim,     ReadOnly);
+    global->Set(String::New("dimctrl"), dimctrl, ReadOnly);
+    global->Set(String::New("console"), console, ReadOnly);
+    global->Set(String::New("include"), FunctionTemplate::New(WrapInclude),                ReadOnly);
+    global->Set(String::New("exit"),    FunctionTemplate::New(WrapExit),                   ReadOnly);
+
+    Handle<FunctionTemplate> sub = FunctionTemplate::New(WrapSubscription);
+    sub->SetClassName(String::New("Subscription"));
+    sub->InstanceTemplate()->SetInternalFieldCount(1);
+    global->Set(String::New("Subscription"), sub, ReadOnly);
+
+#ifdef HAVE_SQL
+    Handle<FunctionTemplate> db = FunctionTemplate::New(WrapDatabase);
+    db->SetClassName(String::New("Database"));
+    db->InstanceTemplate()->SetInternalFieldCount(1);
+    global->Set(String::New("Database"), db, ReadOnly);
+#endif
+
+    Handle<FunctionTemplate> thread = FunctionTemplate::New(WrapThread);
+    thread->SetClassName(String::New("Thread"));
+    global->Set(String::New("Thread"), thread, ReadOnly);
+
+    Handle<FunctionTemplate> file = FunctionTemplate::New(WrapFile);
+    file->SetClassName(String::New("File"));
+    global->Set(String::New("File"), file, ReadOnly);
+
+    Handle<FunctionTemplate> evt = FunctionTemplate::New();
+    evt->SetClassName(String::New("Event"));
+    global->Set(String::New("Event"), evt, ReadOnly);
+
+    Handle<FunctionTemplate> desc = FunctionTemplate::New();
+    desc->SetClassName(String::New("Description"));
+    global->Set(String::New("Description"), desc, ReadOnly);
+
+    fTemplateEvent = evt;
+    fTemplateDescription = desc;
+
+#ifdef HAVE_MAILX
+    Handle<FunctionTemplate> mail = FunctionTemplate::New(ConstructorMail);
+    mail->SetClassName(String::New("Mail"));
+    global->Set(String::New("Mail"), mail, ReadOnly);
+#endif
+
+#ifdef HAVE_NOVA
+    Handle<FunctionTemplate> sky = FunctionTemplate::New(ConstructorSky);
+    sky->SetClassName(String::New("Sky"));
+    sky->Set(String::New("dist"),  FunctionTemplate::New(SkyDist), ReadOnly);
+    global->Set(String::New("Sky"), sky, ReadOnly);
+
+    Handle<FunctionTemplate> loc = FunctionTemplate::New(ConstructorLocal);
+    loc->SetClassName(String::New("Local"));
+    loc->Set(String::New("dist"),  FunctionTemplate::New(LocalDist), ReadOnly);
+    global->Set(String::New("Local"), loc, ReadOnly);
+
+    Handle<FunctionTemplate> moon = FunctionTemplate::New(ConstructorMoon);
+    moon->SetClassName(String::New("Moon"));
+    moon->Set(String::New("disk"), FunctionTemplate::New(MoonDisk), ReadOnly);
+    moon->Set(String::New("horizon"), FunctionTemplate::New(MoonHorizon), ReadOnly);
+    global->Set(String::New("Moon"), moon, ReadOnly);
+
+    Handle<FunctionTemplate> sun = FunctionTemplate::New();
+    sun->SetClassName(String::New("Sun"));
+    sun->Set(String::New("horizon"), FunctionTemplate::New(SunHorizon), ReadOnly);
+    global->Set(String::New("Sun"), sun, ReadOnly);
+
+    fTemplateLocal = loc;
+    fTemplateSky   = sky;
+#endif
+
+    // Persistent
+    Persistent<Context> context = Context::New(NULL, global);
+    if (context.IsEmpty())
+    {
+        JsException("Creation of global context failed...");
+        JsEnd(filename);
+        return false;
+    }
+
+    // Switch off eval(). It is not possible to track it's exceptions.
+    context->AllowCodeGenerationFromStrings(false);
+
+    Context::Scope scope(context);
+
+    Handle<Array> args = Array::New(map.size());
+    for (auto it=map.begin(); it!=map.end(); it++)
+        args->Set(String::New(it->first.c_str()), String::New(it->second.c_str()));
+    context->Global()->Set(String::New("$"),   args, ReadOnly);
+    context->Global()->Set(String::New("arg"), args, ReadOnly);
+
+    const Local<Value> starttime = Date::New(Time().JavaDate());
+    if (!starttime.IsEmpty())
+        context->Global()->Set(String::New("__START__"), starttime, ReadOnly);
+
+    //V8::ResumeProfiler();
+
+    TryCatch exception;
+
+    AddFormatToGlobal();
+
+    if (!exception.HasCaught())
+    {
+        JsStart(filename);
+
+        Locker::StartPreemption(10);
+
+        if (filename.empty())
+            ExecuteConsole();
+        else
+        {
+            // We call script->Run because it is the only way to
+            // catch exceptions.
+            const Handle<String> source = String::New(("include('"+filename+"');").c_str());
+            const Handle<String> origin = String::New("main");
+            const Handle<Script> script = Script::Compile(source, origin);
+            if (!script.IsEmpty())
+            {
+                JsSetState(3);
+                script->Run();
+            }
+        }
+
+        Locker::StopPreemption();
+
+        // Stop all other threads
+        for (auto it=fThreadIds.begin(); it!=fThreadIds.end(); it++)
+            V8::TerminateExecution(*it);
+        fThreadIds.clear();
+    }
+
+    // Handle an exception
+    /*const bool rc =*/ HandleException(exception, "main");
+
+    // IsProfilerPaused()
+    // V8::PauseProfiler();
+
+    // -----
+    // This is how an exit handler could look like, but there is no way to interrupt it
+    // -----
+    // Handle<Object> obj = Handle<Object>::Cast(context->Global()->Get(String::New("dim")));
+    // if (!obj.IsEmpty())
+    // {
+    //     Handle<Value> onexit = obj->Get(String::New("onexit"));
+    //     if (!onexit->IsUndefined())
+    //         Handle<Function>::Cast(onexit)->NewInstance(0, NULL); // argc, argv
+    //     // Handle<Object> result = Handle<Function>::Cast(onexit)->NewInstance(0, NULL); // argc, argv
+    // }
+
+    //context->Exit();
+
+    // The threads are started already and wait to get the lock
+    // So we have to unlock (manual preemtion) so that they get
+    // the signal to terminate.
+    {
+        const Unlocker unlock;
+
+        for (auto it=fThreads.begin(); it!=fThreads.end(); it++)
+            it->join();
+        fThreads.clear();
+    }
+
+    // Now we can dispose all persistent handles from state callbacks
+    for (auto it=fStateCallbacks.begin(); it!=fStateCallbacks.end(); it++)
+        it->second.Dispose();
+    fStateCallbacks.clear();
+
+    // Now we can dispose the persistent interrupt handler
+    fInterruptCallback.Dispose();
+    fInterruptCallback.Clear();
+
+    // Now we can dispose all persistent handles from reverse maps
+    for (auto it=fReverseMap.begin(); it!=fReverseMap.end(); it++)
+        it->second.Dispose();
+    fReverseMap.clear();
+
+#ifdef HAVE_SQL
+    // ...and close all database handles
+    for (auto it=fDatabases.begin(); it!=fDatabases.end(); it++)
+        delete *it;
+    fDatabases.clear();
+#endif
+
+    fStates.clear();
+
+    context.Dispose();
+
+    JsEnd(filename);
+
+    return true;
+}
+
+void InterpreterV8::JsStop()
+{
+    Locker locker;
+    V8::TerminateExecution(This->fThreadId);
+}
+
+vector<string> InterpreterV8::JsGetCommandList(const char *, int) const
+{
+    vector<string> rc;
+
+    rc.emplace_back("for (");
+    rc.emplace_back("while (");
+    rc.emplace_back("if (");
+    rc.emplace_back("switch (");
+    rc.emplace_back("case ");
+    rc.emplace_back("var ");
+    rc.emplace_back("function ");
+    rc.emplace_back("Date(");
+    rc.emplace_back("new Date(");
+    rc.emplace_back("'use strict';");
+    rc.emplace_back("undefined");
+    rc.emplace_back("null");
+    rc.emplace_back("delete ");
+
+    rc.emplace_back("dim.log(");
+    rc.emplace_back("dim.alarm(");
+    rc.emplace_back("dim.wait(");
+    rc.emplace_back("dim.send(");
+    rc.emplace_back("dim.state(");
+    rc.emplace_back("dim.version");
+    rc.emplace_back("dim.getStates(");
+    rc.emplace_back("dim.getDescription(");
+    rc.emplace_back("dim.getServices(");
+
+    rc.emplace_back("dimctrl.defineState(");
+    rc.emplace_back("dimctrl.setState(");
+    rc.emplace_back("dimctrl.getState(");
+    rc.emplace_back("dimctrl.setInterruptHandler(");
+    rc.emplace_back("dimctrl.triggerInterrupt(");
+
+    rc.emplace_back("v8.sleep(");
+    rc.emplace_back("v8.timeout(");
+    rc.emplace_back("v8.version()");
+
+    rc.emplace_back("console.out(");
+    rc.emplace_back("console.warn(");
+
+    rc.emplace_back("include(");
+    rc.emplace_back("exit()");
+
+#ifdef HAVE_SQL
+    rc.emplace_back("Database(");
+    rc.emplace_back("new Database(");
+
+    rc.emplace_back(".table");
+    rc.emplace_back(".user");
+    rc.emplace_back(".database");
+    rc.emplace_back(".port");
+    rc.emplace_back(".query");
+#endif
+
+    rc.emplace_back("Subscription(");
+    rc.emplace_back("new Subscription(");
+
+    rc.emplace_back("Thread(");
+    rc.emplace_back("new Thread(");
+
+    rc.emplace_back("File(");
+    rc.emplace_back("new File(");
+
+    rc.emplace_back("Event(");
+    rc.emplace_back("new Event(");
+
+    rc.emplace_back("Description(");
+    rc.emplace_back("new Description(");
+
+#ifdef HAVE_MAILX
+    rc.emplace_back("Mail(");
+    rc.emplace_back("new Mail(");
+
+    rc.emplace_back(".subject");
+    rc.emplace_back(".receipients");
+    rc.emplace_back(".attachments");
+    rc.emplace_back(".bcc");
+    rc.emplace_back(".cc");
+    rc.emplace_back(".text");
+    rc.emplace_back(".send(");
+#endif
+
+#ifdef HAVE_NOVA
+    rc.emplace_back("Sky(");
+    rc.emplace_back("new Sky(");
+
+    rc.emplace_back("Sky.dist");
+    rc.emplace_back("Local(");
+
+    rc.emplace_back("new Local(");
+    rc.emplace_back("Local.dist");
+
+    rc.emplace_back("Moon(");
+    rc.emplace_back("new Moon(");
+    rc.emplace_back("Moon.disk(");
+    rc.emplace_back("Moon.horizon(");
+
+    rc.emplace_back("Sun.horizon(");
+
+    rc.emplace_back(".zd");
+    rc.emplace_back(".az");
+    rc.emplace_back(".ra");
+    rc.emplace_back(".dec");
+
+    rc.emplace_back(".toLocal(");
+    rc.emplace_back(".toSky(");
+    rc.emplace_back(".rise");
+    rc.emplace_back(".set");
+    rc.emplace_back(".transit");
+    rc.emplace_back(".isUp");
+
+    rc.emplace_back("horizon");
+    rc.emplace_back("civil");
+    rc.emplace_back("nautical");
+    rc.emplace_back("astronomical");
+#endif
+
+    rc.emplace_back(".server");
+    rc.emplace_back(".service");
+    rc.emplace_back(".name");
+    rc.emplace_back(".isCommand");
+    rc.emplace_back(".format");
+    rc.emplace_back(".description");
+    rc.emplace_back(".unit");
+    rc.emplace_back(".delim");
+    rc.emplace_back(".isOpen");
+
+    rc.emplace_back(".qos");
+    rc.emplace_back(".size");
+    rc.emplace_back(".counter");
+    rc.emplace_back(".type");
+    rc.emplace_back(".obj");
+    rc.emplace_back(".data");
+    rc.emplace_back(".comment");
+    rc.emplace_back(".index");
+    rc.emplace_back(".time");
+    rc.emplace_back(".close()");
+    rc.emplace_back(".onchange");
+    rc.emplace_back(".get(");
+
+
+    rc.emplace_back("__DATE__");
+    rc.emplace_back("__FILE__");
+
+    return rc;
+}
+
+#endif
+
+InterpreterV8 *InterpreterV8::This = 0;
Index: branches/testFACT++branch/src/InterpreterV8.h
===================================================================
--- branches/testFACT++branch/src/InterpreterV8.h	(revision 18277)
+++ branches/testFACT++branch/src/InterpreterV8.h	(revision 18277)
@@ -0,0 +1,235 @@
+#ifndef FACT_InterpreterV8
+#define FACT_InterpreterV8
+
+#include <map>
+#include <set>
+#include <list>
+#include <string>
+#include <thread>
+
+#ifdef HAVE_V8
+#include <v8.h>
+#endif
+
+#include "State.h"
+#include "Service.h"
+#include "Description.h"
+#include "EventImp.h"
+
+class Database;
+
+#ifdef HAVE_NOVA
+struct ln_rst_time;
+#endif
+
+class InterpreterV8
+{
+    static InterpreterV8 *This;
+
+    // The main thread id, needed to be able to terminate
+    // the thread forcefully from 'the outside'
+    int fThreadId;
+    std::set<int> fThreadIds;
+
+    // A loookup table which allows to indentify the
+    // the JavaScript object corrsponding to the
+    // service name (for checking of an .onchange
+    // subscription exists for that object)
+    std::map<std::string, v8::Persistent<v8::Object>> fReverseMap;
+
+    // Lookup table for the callbacks in cases of state changes
+    std::map<std::string, v8::Persistent<v8::Object>> fStateCallbacks;
+
+    // List of all threads
+    std::vector<std::thread> fThreads;
+
+    // List of all states already set
+    std::vector<std::pair<int, std::string>> fStates;
+
+    // Interrupt handler
+    v8::Persistent<v8::Object> fInterruptCallback;
+
+    static v8::Handle<v8::FunctionTemplate> fTemplateLocal;
+    static v8::Handle<v8::FunctionTemplate> fTemplateSky;
+    static v8::Handle<v8::FunctionTemplate> fTemplateEvent;
+    static v8::Handle<v8::FunctionTemplate> fTemplateDescription;
+
+#ifdef HAVE_SQL
+    std::list<Database*> fDatabases;
+#endif
+
+#ifdef HAVE_V8
+    bool HandleException(v8::TryCatch &try_catch, const char *where);
+    void ExecuteConsole();
+    v8::Handle<v8::Value> ExecuteCode(const std::string &code, const std::string &file="internal");
+    v8::Handle<v8::Value> ExecuteInternal(const std::string &code);
+
+    void Thread(int &id, v8::Persistent<v8::Object> _this, v8::Persistent<v8::Function> func, uint32_t ms);
+
+    std::vector<std::string> ValueToArray(const v8::Handle<v8::Value> &val, bool only=true);
+
+    v8::Handle<v8::Value> FuncWait(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncSend(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncSleep(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncTimeout(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncThread(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncKill(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncLog(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncAlarm(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncOut(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncWarn(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncFile(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncSendMail(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncInclude(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncExit(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncState(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncSetState(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncGetState(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncGetStates(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncGetDescription(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncGetServices(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncNewState(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncSetInterrupt(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncTriggerInterrupt(const v8::Arguments& args);
+    //v8::Handle<v8::Value> FuncOpen(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncSubscription(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncGetData(const v8::Arguments &args);
+    v8::Handle<v8::Value> FuncClose(const v8::Arguments &args);
+    v8::Handle<v8::Value> FuncQuery(const v8::Arguments &args);
+    v8::Handle<v8::Value> FuncDatabase(const v8::Arguments &args);
+    v8::Handle<v8::Value> FuncDbQuery(const v8::Arguments &args);
+    v8::Handle<v8::Value> FuncDbClose(const v8::Arguments &args);
+    v8::Handle<v8::Value> OnChangeSet(v8::Local<v8::String>, v8::Local<v8::Value>, const v8::AccessorInfo &);
+
+    static v8::Handle<v8::Value> Constructor(const v8::Arguments &args);
+
+    static v8::Handle<v8::Value> ConstructorMail(const v8::Arguments &args);
+
+#ifdef HAVE_NOVA
+    static double GetDataMember(const v8::Arguments &args, const char *name);
+
+    static v8::Handle<v8::Value> CalcDist(const v8::Arguments &args, const bool);
+
+    static v8::Handle<v8::Value> LocalToString(const v8::Arguments &args);
+    static v8::Handle<v8::Value> SkyToString(const v8::Arguments &args);
+    static v8::Handle<v8::Value> MoonToString(const v8::Arguments &args);
+    static v8::Handle<v8::Value> LocalDist(const v8::Arguments &args);
+    static v8::Handle<v8::Value> SkyDist(const v8::Arguments &args);
+    static v8::Handle<v8::Value> MoonDisk(const v8::Arguments &args);
+    static v8::Handle<v8::Value> LocalToSky(const v8::Arguments &args);
+    static v8::Handle<v8::Value> SkyToLocal(const v8::Arguments &args);
+    static v8::Handle<v8::Value> MoonToLocal(const v8::Arguments &args);
+    static v8::Handle<v8::Value> ConstructorMoon(const v8::Arguments &args);
+    static v8::Handle<v8::Value> ConstructorSky(const v8::Arguments &args);
+    static v8::Handle<v8::Value> ConstructorLocal(const v8::Arguments &args);
+    static v8::Handle<v8::Value> MoonHorizon(const v8::Arguments &args);
+    static v8::Handle<v8::Value> SunHorizon(const v8::Arguments &args);
+    static v8::Handle<v8::Object> ConstructRiseSet(const v8::Handle<v8::Value>, const ln_rst_time &, const bool &);
+#endif
+
+    static v8::Handle<v8::Value> WrapInclude(const v8::Arguments &args)  { if (This) return This->FuncInclude(args);  else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapFile(const v8::Arguments &args)     { if (This) return This->FuncFile(args);     else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapSendMail(const v8::Arguments &args) { if (This) return This->FuncSendMail(args); else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapLog(const v8::Arguments &args)      { if (This) return This->FuncLog(args);      else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapAlarm(const v8::Arguments &args)    { if (This) return This->FuncAlarm(args);    else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapOut(const v8::Arguments &args)      { if (This) return This->FuncOut(args);      else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapWarn(const v8::Arguments &args)     { if (This) return This->FuncWarn(args);     else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapWait(const v8::Arguments &args)     { if (This) return This->FuncWait(args);     else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapSend(const v8::Arguments &args)     { if (This) return This->FuncSend(args);     else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapSleep(const v8::Arguments &args)    { if (This) return This->FuncSleep(args);    else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapTimeout(const v8::Arguments &args)  { if (This) return This->FuncTimeout(args);  else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapThread(const v8::Arguments &args)   { if (This) return This->FuncThread(args);   else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapKill(const v8::Arguments &args)     { if (This) return This->FuncKill(args);     else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapExit(const v8::Arguments &args)     { if (This) return This->FuncExit(args);     else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapState(const v8::Arguments &args)    { if (This) return This->FuncState(args);    else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapNewState(const v8::Arguments &args) { if (This) return This->FuncNewState(args); else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapSetState(const v8::Arguments &args) { if (This) return This->FuncSetState(args); else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapGetState(const v8::Arguments &args) { if (This) return This->FuncGetState(args); else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapGetStates(const v8::Arguments &args){ if (This) return This->FuncGetStates(args);else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapGetDescription(const v8::Arguments &args){ if (This) return This->FuncGetDescription(args);else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapGetServices(const v8::Arguments &args){ if (This) return This->FuncGetServices(args);else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapSetInterrupt(const v8::Arguments &args){ if (This) return This->FuncSetInterrupt(args);else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapTriggerInterrupt(const v8::Arguments &args){ if (This) return This->FuncTriggerInterrupt(args);else return v8::Undefined(); }
+    //static v8::Handle<v8::Value> WrapOpen(const v8::Arguments &args)     { if (This) return This->FuncOpen(args);     else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapSubscription(const v8::Arguments &args){ if (This) return This->FuncSubscription(args);else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapGetData(const v8::Arguments &args)  { if (This) return This->FuncGetData(args);  else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapClose(const v8::Arguments &args)    { if (This) return This->FuncClose(args);    else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapQuery(const v8::Arguments &args)    { if (This) return This->FuncQuery(args);    else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapDatabase(const v8::Arguments &args) { if (This) return This->FuncDatabase(args); else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapDbQuery(const v8::Arguments &args)  { if (This) return This->FuncDbQuery(args);  else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapDbClose(const v8::Arguments &args)  { if (This) return This->FuncDbClose(args);  else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapOnChangeSet(v8::Local<v8::String> prop, v8::Local<v8::Value> value, const v8::AccessorInfo &info)
+    {
+        if (This) return This->OnChangeSet(prop, value, info);  else return v8::Undefined();
+    }
+
+    static v8::Handle<v8::Value> OnChangeGet(v8::Local<v8::String>, const v8::AccessorInfo &)
+    {
+        return v8::Handle<v8::Value>();
+    }
+
+    static v8::Handle<v8::Value> Convert(char type, const char* &ptr);
+    v8::Handle<v8::Value> ConvertEvent(const EventImp *evt, uint64_t, const char *str);
+#endif
+
+    v8::Handle<v8::Value> HandleInterruptImp(std::string, uint64_t);
+
+public:
+    InterpreterV8();
+    virtual ~InterpreterV8()
+    {
+        This = 0;
+
+#ifdef HAVE_V8
+        v8::Locker locker;
+        v8::V8::Dispose();
+#endif
+    }
+
+    std::vector<std::string> JsGetCommandList(const char *, int) const;
+
+    virtual void  JsLoad(const std::string & = "");
+    virtual void  JsStart(const std::string &) { }
+    virtual void  JsEnd(const std::string & = "");
+    virtual void  JsPrint(const std::string & = "") { }
+    virtual void  JsAlarm(const std::string & = "") { }
+    virtual void  JsOut(const std::string &) { }
+    virtual void  JsWarn(const std::string &) { }
+    virtual void  JsResult(const std::string &) { }
+    virtual void  JsException(const std::string &) { }
+    virtual bool  JsSend(const std::string &) { return true; }
+    //virtual void  JsSleep(uint32_t) { }
+    //virtual int   JsWait(const std::string &, int32_t, uint32_t) { return -1; };
+    virtual State JsState(const std::string &) { return State(); };
+    virtual void *JsSubscribe(const std::string &) { return 0; };
+    virtual bool  JsUnsubscribe(const std::string &) { return false; };
+
+    virtual bool  JsNewState(int, const std::string&, const std::string&) { return false; }
+    virtual bool  JsSetState(int) { return false; }
+    virtual bool  JsHasState(int) const { return false; }
+    virtual bool  JsHasState(const std::string &) const { return false; }
+    virtual int   JsGetState(const std::string &) const { return -2; }
+    virtual State JsGetCurrentState() const { return State(); }
+    virtual std::vector<State> JsGetStates(const std::string &) { return std::vector<State>(); }
+    virtual std::set<Service> JsGetServices() { return std::set<Service>(); }
+    virtual std::vector<Description> JsGetDescription(const std::string &) { return std::vector<Description>(); }
+
+    virtual std::vector<Description> JsDescription(const std::string &) { return std::vector<Description>(); };
+    virtual std::pair<uint64_t, EventImp *> JsGetEvent(const std::string &) { return std::make_pair(0, (EventImp*)0); };
+
+    int JsHandleInterrupt(const EventImp &);
+    void JsHandleEvent(const EventImp &, uint64_t, const std::string &);
+    void JsHandleState(const std::string &, const State &);
+
+    void AddFormatToGlobal();
+
+    bool JsRun(const std::string &, const std::map<std::string,std::string> & = std::map<std::string,std::string>());
+    static void JsStop();
+};
+
+#ifndef HAVE_V8
+inline bool InterpreterV8::JsRun(const std::string &, const std::map<std::string,std::string> &) { return false; }
+inline void InterpreterV8::JsStop() { }
+#endif
+
+#endif
Index: branches/testFACT++branch/src/LocalControl.h
===================================================================
--- branches/testFACT++branch/src/LocalControl.h	(revision 18277)
+++ branches/testFACT++branch/src/LocalControl.h	(revision 18277)
@@ -0,0 +1,232 @@
+#ifndef FACT_LocalControl
+#define FACT_LocalControl
+
+#include <ostream>
+
+// **************************************************************************
+/** @class LocalControl
+
+@brief Implements a local control for a StateMachine based on a Readline class
+
+This template implements all functions which overwrite any function from the
+Readline class needed for a local control of a state machien. Since
+several derivatives of the Readline class implement different kind of
+Readline access, this class can be derived by any of them due to its
+template argument. However, the normal case will be deriving it from
+either Console or Shell.
+
+@tparam T
+   The base class for RemoteControl. Either Readlien or a class
+   deriving from it. This is usually either Console or Shell.
+
+**/
+// **************************************************************************
+#include <boost/version.hpp>
+#include <boost/filesystem.hpp>
+
+#include "tools.h"
+
+#include "WindowLog.h"
+#include "StateMachineImp.h"
+
+using namespace std;
+
+template <class T>
+class LocalControl : public T
+{
+private:
+    char **Completion(const char *text, int pos, int)
+    {
+        return pos>0 ? 0 : T::Complete(fStateMachine->GetEventNames(), text);
+    }
+
+protected:
+    StateMachineImp *fStateMachine;
+
+    std::ostream &lout;
+
+    std::string fName;
+
+    LocalControl(const char *name) : T(name), 
+        fStateMachine(0), lout(T::GetStreamIn()),
+#if BOOST_VERSION < 104600
+        fName(boost::filesystem::path(name).filename())
+#else
+        fName(boost::filesystem::path(name).filename().string())
+#endif
+    { }
+
+    bool PrintGeneralHelp()
+    {
+        T::PrintGeneralHelp();
+        lout << " " << kUnderline << "Specific commands:" << endl;
+        lout << kBold << "   ac,allowed   " << kReset << "Display a list of all currently allowed commands." << endl;
+        lout << kBold << "   st,states    " << kReset << "Display a list of the available states with description." << endl;
+        lout << kBold << "   > <text>     " << kReset << "Echo <text> to the output stream" << endl;
+        lout << kBold << "   .s           " << kReset << "Wait for the state-machine to change to the given state.\n";
+        lout <<          "                "              "     .s <server> [<state> [<timeout> [<label>]]]\n";
+        lout <<          "                "              "<server>  The server for which state to wait (e.g. FTM_CONTROL)\n";
+        lout <<          "                "              "<state>   The state id (see 'states') for which to wait (e.g. 3)\n";
+        lout <<          "                "              "<imeout>  A timeout in millisenconds how long to wait (e.g. 500)\n";
+        lout <<          "                "              "<label>   A label until which everything is skipped in case of timeout\n";
+        lout << endl;
+        return true;
+    }
+    bool PrintCommands()
+    {
+        lout << endl << kBold << "List of commands:" << endl;
+        fStateMachine->PrintListOfEvents(lout);
+        lout << endl;
+
+        return true;
+    }
+
+    bool Process(const std::string &str)
+    {
+        if (str.substr(0, 2)=="h " || str.substr(0, 5)=="help ")
+        {
+            lout << endl;
+            fStateMachine->PrintListOfEvents(lout, str.substr(str.find_first_of(' ')+1));
+            lout << endl;
+
+            return true;
+        }
+        if (str=="states" || str=="st")
+        {
+            fStateMachine->PrintListOfStates(lout);
+            return true;
+        }
+        if (str=="allowed" || str=="ac")
+        {
+            lout << endl << kBold << "List of commands allowed in current state:" << endl;
+            fStateMachine->PrintListOfAllowedEvents(lout);
+            lout << endl;
+            return true;
+        }
+
+        if (str.substr(0, 3)==".s ")
+        {
+            istringstream in(str.substr(3));
+
+            int state=-100, ms=0;
+            in >> state >> ms;
+
+            if (state==-100)
+            {
+                lout << kRed << "Couldn't parse state id in '" << str.substr(3) << "'" << endl;
+                return true;
+            }
+
+            const Time timeout = ms<=0 ? Time(Time::none) : Time()+boost::posix_time::millisec(ms);
+
+            while (fStateMachine->GetCurrentState()!=state && timeout>Time() && !T::IsScriptStopped())
+                usleep(1);
+
+            if (fStateMachine->GetCurrentState()==state)
+                return true;
+
+            int label = -1;
+            in >> label;
+            if (in.fail() && !in.eof())
+            {
+                lout << kRed << "Invalid label in '" << str.substr(3) << "'" << endl;
+                T::StopScript();
+                return true;
+            }
+            T::SetLabel(label);
+
+            return true;
+        }
+
+        if (str[0]=='>')
+        {
+            fStateMachine->Comment(Tools::Trim(str.substr(1)));
+            return true;
+        }
+
+        if (T::Process(str))
+            return true;
+
+        return !fStateMachine->PostEvent(lout, str);
+    }
+
+public:
+
+    void SetReceiver(StateMachineImp &imp) { fStateMachine = &imp; }
+};
+
+// **************************************************************************
+/** @class LocalStream
+
+@brief Derives the LocalControl from ConsoleStream
+
+This is basically a LocalControl, which derives through the template
+argument from the ConsoleStream class. 
+
+ */
+// **************************************************************************
+#include "Console.h"
+
+class LocalStream : public LocalControl<ConsoleStream>
+{
+public:
+    LocalStream(const char *name, bool null = false)
+        : LocalControl<ConsoleStream>(name) { SetNullOutput(null); }
+};
+
+// **************************************************************************
+/** @class LocalConsole
+
+@brief Derives the LocalControl from Control and adds prompt
+
+This is basically a LocalControl, which derives through the template
+argument from the Console class. It enhances the functionality of
+the local control with a proper updated prompt.
+
+ */
+// **************************************************************************
+#include "tools.h"
+
+class LocalConsole : public LocalControl<Console>
+{
+public:
+    LocalConsole(const char *name, bool continous=false)
+        : LocalControl<Console>(name)
+    {
+        SetContinous(continous);
+    }
+
+    string GetUpdatePrompt() const
+    {
+        return GetLinePrompt()+" "
+            "\033[34m\033[1m"+fName+"\033[0m:"
+            "\033[32m\033[1m"+fStateMachine->GetStateName()+"\033[0m> ";
+    }
+};
+
+// **************************************************************************
+/** @class LocalShell
+
+@brief Derives the LocalControl from Shell and adds a colored prompt
+
+This is basically a LocalControl, which derives through the template
+argument from the Shell class. It enhances the functionality of
+the local control with a proper updated prompt.
+
+ */
+// **************************************************************************
+#include "Shell.h"
+
+class LocalShell : public LocalControl<Shell>
+{
+public:
+    LocalShell(const char *name, bool = false)
+        : LocalControl<Shell>(name) { }
+
+    string GetUpdatePrompt() const
+    {
+        return GetLinePrompt()+' '+fName+':'+fStateMachine->GetStateName()+"> ";
+    }
+};
+
+#endif
Index: branches/testFACT++branch/src/Main.h
===================================================================
--- branches/testFACT++branch/src/Main.h	(revision 18277)
+++ branches/testFACT++branch/src/Main.h	(revision 18277)
@@ -0,0 +1,270 @@
+#ifndef FACT_Main
+#define FACT_Main
+
+#include <map>
+#include <thread>
+#include <functional>
+
+#include <boost/filesystem.hpp>
+
+#include "dim.h"
+
+#include "Dim.h"
+#include "Time.h"
+#include "MainImp.h"
+#include "Readline.h"
+#include "WindowLog.h"
+#include "MessageImp.h"
+#include "Configuration.h"
+
+namespace Main
+{
+    using namespace std;
+    namespace fs = boost::filesystem;
+
+    void SetupConfiguration(Configuration &conf)
+    {
+        const string n = conf.GetName()+".log";
+
+        po::options_description config("Program options");
+        config.add_options()
+            ("dns",        var<string>("localhost"),       "Dim nameserver (overwites DIM_DNS_NODE environment variable)")
+            ("host",       var<string>(),                  "Address with which the Dim nameserver can connect to this host (overwites DIM_HOST_NODE environment variable)")
+            ("log,l",      var<string>(n), "Name of local log-file")
+            ("logpath",    var<string>(),  "Absolute path to log-files (default: excutable's directory)")
+            ("no-log",     po_switch(),    "Supress log-file")
+            ("append-log", po_bool(),      "Append log information to local log-file")
+            ("null",       po_switch(),    "Suppresses almost all console output - including errors (only available without --console option)")
+            ("console,c",  var<int>(),     "Use console (0=shell, 1=simple buffered, X=simple unbuffered)")
+            ("cmd",        vars<string>(), "Execute one or more commands at startup")
+            ("exec,e",     vars<string>(), "Execute one or more scrips at startup ('file:N' - start at label N)")
+            ("arg:*",      var<string>(),  "Arguments for script execution with --exc, e.g. --arg:ra='12.5436'")
+            ("home",       var<string>(),  "Path to home directory (used as default for logpath if standard log files not writable)")
+            ("quit",       po_switch(),    "Quit after startup");
+        ;
+
+        conf.AddEnv("dns",  "DIM_DNS_NODE");
+        conf.AddEnv("host", "DIM_HOST_NODE");
+        conf.AddEnv("home", "HOME");
+
+        conf.AddOptions(config);
+    }
+
+    void PrintUsage()
+    {
+        cout <<
+            "Files:\n"
+            "The following files are written by each program by default\n"
+            "  program.evt:   A log of all executed of skipped events\n"
+            "  program.his:   The history accessible by Pg-up/dn\n"
+            "  program.log:   All output piped to the log-stream\n"
+            << endl;
+    }
+
+    template<class T>
+    void PrintHelp()
+    {
+        Dim::Setup();
+
+        ofstream fout("/dev/null");
+
+        T io_service(fout);
+
+        io_service.PrintListOfStates(cout);
+        cout << "\nList of available commands:\n";
+        io_service.PrintListOfEvents(cout);
+        cout << "\n";
+    }
+
+    void Thread(MainImp *io_service, bool dummy, int &rc)
+    {
+        // This is necessary so that the StateMachien Thread can signal the
+        // Readline to exit
+        rc = io_service->Run(dummy);
+        Readline::Stop();
+    }
+
+    template<class T, class S>
+    int execute(Configuration &conf, bool dummy=false)
+    {
+        Dim::Setup(conf.Get<string>("dns"), conf.Has("host")?conf.Get<string>("host"):"");
+
+        // -----------------------------------------------------------------
+        const fs::path program(conf.GetName());
+
+        // Split path to program into path and filename
+        const string prgpath = program.parent_path().string();
+
+#if BOOST_VERSION < 104600
+        const string prgname = program.filename();
+#else
+        const string prgname = program.filename().string();
+#endif
+
+        fs::path path = conf.Has("logpath") ? conf.Get<string>("logpath") : "";
+
+        // No explicit path given
+        if (path.empty())
+        {
+            path = prgpath;
+
+            // default path not accessible
+            if (access(prgpath.empty() ? "." : prgpath.c_str(), W_OK))
+            {
+                path = ".";
+
+                if (conf.Has("home"))
+                {
+                    path  = conf.Get<string>("home");
+                    path /= ".fact++";
+                }
+            }
+        }
+
+        // Create directories if necessary
+        fs::create_directories(path);
+
+        // -----------------------------------------------------------------
+
+        static T shell((path/prgname).string().c_str(),
+                       conf.Has("console") ? conf.Get<int>("console")!=1 : conf.Get<bool>("null"));
+
+        WindowLog &win  = shell.GetStreamIn();
+        WindowLog &wout = shell.GetStreamOut();
+
+        // Switching off buffering is not strictly necessary, since
+        // the destructor of shell should flush everything still buffered,
+        // nevertheless it helps to debug problems in the initialization
+        // sequence.
+        const bool backlog = wout.GetBacklog();
+        const bool null    = wout.GetNullOutput();
+        if (conf.Has("console") || !conf.Get<bool>("null"))
+        {
+            wout.SetBacklog(false);
+            wout.SetNullOutput(false);
+            wout.Display(true);
+        }
+
+        if (conf.Has("log") && !conf.Get<bool>("no-log"))
+        {
+#if BOOST_VERSION < 104600
+            const fs::path file = fs::path(conf.Get<string>("log")).filename();
+#else
+            const fs::path file = fs::path(conf.Get<string>("log")).filename();
+#endif
+            if (!wout.OpenLogFile((path/file).string(), conf.Get<bool>("append-log")))
+                win << kYellow << "WARNING - Couldn't open log-file " << (path/file).string() << ": " << strerror(errno) << endl;
+        }
+
+        S io_service(wout);
+
+        const Time now;
+        io_service.Write(now, "/----------------------- Program ------------------------");
+        io_service.Write(now, "| Program:  " PACKAGE_STRING " ("+prgname+":"+to_string(getpid())+")");
+        io_service.Write(now, "| CallPath: "+prgpath);
+        io_service.Write(now, "| Compiled: " __DATE__ " " __TIME__ );
+        io_service.Write(now, "| Revision: " REVISION);
+        io_service.Write(now, "| DIM:      v"+to_string(DIM_VERSION_NUMBER/100)+"r"+to_string(DIM_VERSION_NUMBER%100)+" ("+io_service.GetName()+")");
+        io_service.Write(now, "| Contact:  " PACKAGE_BUGREPORT);
+        io_service.Write(now, "| URL:      " PACKAGE_URL);
+        io_service.Write(now, "| Start:    "+now.GetAsStr("%c"));
+        io_service.Write(now, "\\----------------------- Options ------------------------");
+        const multimap<string,string> mmap = conf.GetOptions();
+        for (auto it=mmap.begin(); it!=mmap.end(); it++)
+            io_service.Write(now, ": "+it->first+(it->second.empty()?"":" = ")+it->second);
+
+        const map<string,string> &args = conf.GetOptions<string>("arg:");
+        if (!args.empty())
+        {
+            io_service.Write(now, "------------------------ Arguments ----------------------", MessageImp::kMessage);
+
+            for (auto it=args.begin(); it!=args.end(); it++)
+            {
+                ostringstream str;
+                str.setf(ios_base::left);
+                str << ": " << it->first << " = " << it->second;
+                io_service.Write(now, str.str(), MessageImp::kMessage);
+            }
+        }
+
+        io_service.Write(now, "\\------------------- Evaluating options -----------------");
+        const int rc = io_service.EvalOptions(conf);
+        if (rc>=0)
+        {
+            ostringstream str;
+            str << "Exit triggered by EvalOptions with rc=" << rc;
+            io_service.Write(now, str.str(), rc==0?MessageImp::kInfo:MessageImp::kError);
+            return rc;
+        }
+
+        const map<string,string> &wco = conf.GetWildcardOptions();
+        if (!wco.empty())
+        {
+            io_service.Write(now, "------------- Unrecognized wildcard options -------------", MessageImp::kWarn);
+
+            size_t max = 0;
+            for (auto it=wco.begin(); it!=wco.end(); it++)
+                if (it->second.length()>max)
+                    max = it->second.length();
+
+            for (auto it=wco.begin(); it!=wco.end(); it++)
+            {
+                ostringstream str;
+                str.setf(ios_base::left);
+                str << setw(max+1) << it->second << " : " << it->first;
+                io_service.Write(now, str.str(), MessageImp::kWarn);
+            }
+            io_service.Write(now, "Unrecognized options found, will exit with rc=127", MessageImp::kError);
+            return 127;
+        }
+
+        io_service.Message("==================== Starting main loop =================");
+
+        if (conf.Has("console") || !conf.Get<bool>("null"))
+        {
+            wout.SetNullOutput(null);
+            wout.SetBacklog(backlog);
+        }
+
+        shell.SetReceiver(io_service);
+
+        //    boost::thread t(boost::bind(&AutoScheduler<S>::Run, &io_service));
+        int ret = 0;
+        thread t(bind(Main::Thread, &io_service, dummy, ref(ret)));
+
+        // Wait until state machine is ready (The only case I can imagine
+        // in which the state will never chane is when DIM triggers
+        // an exit before the state machine has been started at all.
+        // Hopefully checking the readline (see Threed) should fix
+        // that -- difficult to test.)
+        while ((io_service.GetCurrentState()<StateMachineImp::kSM_Ready ||
+                !io_service.MessageQueueEmpty()) && !shell.IsStopped())
+            usleep(1);
+
+        // Execute command line commands
+        const vector<string> v1 = conf.Vec<string>("cmd");
+        for (vector<string>::const_iterator it=v1.begin(); it!=v1.end(); it++)
+            shell.ProcessLine(*it);
+
+        const vector<string> v2 = conf.Vec<string>("exec");
+        for (vector<string>::const_iterator it=v2.begin(); it!=v2.end(); it++)
+            shell.Execute(*it, args);
+
+        // Run the shell if no immediate exit was requested
+        if (!conf.Get<bool>("quit"))
+            shell.Run();
+
+        io_service.Stop();           // Signal Loop-thread to stop
+        // io_service.Close();       // Obsolete, done by the destructor
+        // wout << "join: " << t.timed_join(boost::posix_time::milliseconds(0)) << endl;
+
+        // Wait until the StateMachine has finished its thread
+        // before returning and destroying the dim objects which might
+        // still be in use.
+        t.join();
+
+        return ret;
+    }
+}
+
+#endif
Index: branches/testFACT++branch/src/MainImp.h
===================================================================
--- branches/testFACT++branch/src/MainImp.h	(revision 18277)
+++ branches/testFACT++branch/src/MainImp.h	(revision 18277)
@@ -0,0 +1,12 @@
+#ifndef FACT_MainImp
+#define FACT_MainImp
+
+class MainImp
+{
+public:
+    virtual ~MainImp() {}
+    virtual int Run(bool) = 0;
+    virtual void Stop(int) = 0;
+};
+
+#endif
Index: branches/testFACT++branch/src/MessageDim.cc
===================================================================
--- branches/testFACT++branch/src/MessageDim.cc	(revision 18277)
+++ branches/testFACT++branch/src/MessageDim.cc	(revision 18277)
@@ -0,0 +1,164 @@
+#include "MessageDim.h"
+
+#include "tools.h"
+#include "Time.h"
+
+using namespace std;
+
+// **************************************************************************
+/** @class MessageDimTX
+
+@brief Based on MessageImp, redirects log-output to a Dim service MESSAGE
+
+This is a special DimService which offers SERVER/MESSAGE to the DimNetwork
+and redirects output issued via its base-class MessageImp to the Dim
+service. The severity of the message is send as qualiy of service of
+the service message.
+
+@section Examples
+
+ - A simple and usefull example can be found in \ref log.cc and \ref logtime.cc
+
+**/
+// **************************************************************************
+
+// --------------------------------------------------------------------------
+//
+//! Constructs a DimService with the name SERVER/MESSAGE. And passes the
+//! given ostream down to the MessageImp base.
+//!
+//! @param name
+//!    Name of the message server to which we want to subscribe, e.g. DRIVE
+//!
+//! @param out
+//!    ostream passed to MessageImp. It is used to redirect the output to.
+//
+MessageDimTX::MessageDimTX(const std::string &name, std::ostream &out)
+    : DimDescribedService(name + "/MESSAGE", const_cast<char*>("C"),
+                          "A general logging service providing a quality of service (severity)"
+                          "|Message[string]:The message"),
+    MessageImp(out), fDebug(false),
+    fMsgQueue(std::bind(&MessageDimTX::UpdateService, this, placeholders::_1))
+{
+    // This is a message which will never arrive because
+    // the time to establish a client-sever connection is
+    // too short.
+    Message("MessageDimTX started.");
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+MessageDimTX::~MessageDimTX()
+{
+    // Everything here will never be sent by dim because the
+    // dim services have been stopped already. This is necessary,
+    // to have them available already during startup
+    Message("MessageDimTX shutting down ["+to_string(fMsgQueue.size())+"]");
+    fMsgQueue.wait();
+}
+
+bool MessageDimTX::UpdateService(const tuple<Time,string,int> &data)
+{
+    setData(get<1>(data));
+    setQuality(get<2>(data));
+
+    const int rc = DimDescribedService::Update(get<0>(data));
+    if (rc==0 && fDebug)
+        Out() << " !! " << get<0>(data).GetAsStr() << " - Sending failed!" << endl;
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! First calls MessageImp::Write to output the message tobe transmitted
+//! also to a local logging stream. Then the Dim service is updated.
+//! If sending of the message failed a message is written to the
+//! logging stream stored in MessageImp. It is intentionally not
+//! output through Update to make it look different than usual
+//! transmitted messages.
+//
+int MessageDimTX::Write(const Time &t, const string &txt, int qos)
+{
+    MessageImp::Write(t, txt, qos);
+    fMsgQueue.emplace(t, txt, qos);
+    return 1;
+}
+
+// **************************************************************************
+/** @class MessageDimRX
+
+@brief Based on MessageImp, subscribes to a MESSAGE service in the Dim network
+
+This is a special DimInfoHandler. It subscribes to a service SERVER/MESSAGE
+on the DimNetwork and redirects all received output to its base class
+MessageImp view MessageImp::Write. the quality of service received with
+each service update is passed as severity.
+
+@section Examples
+
+ - A simple and usefull example can be found in \ref log.cc and \ref logtime.cc
+
+ @todo Maybe it is not a good idea that MessageImp is a base class,
+ maybe it should be a reference given in the constructor
+
+**/
+// **************************************************************************
+
+// --------------------------------------------------------------------------
+//
+//! Setup a DimStamedInfo service subscription for SERVER/MESSAGE
+//!
+//! @param name
+//!    the name of the SERVER
+//!
+//! @param imp
+//!    A reference to MessageImo to which messages will be redirected
+//
+MessageDimRX::MessageDimRX(const std::string &name, MessageImp &imp)
+: fMinLogLevel(0), fConnected(false), fMsg(imp),
+fDimMessage((name+"/MESSAGE").c_str(), (void*)NULL, 0, this)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! If the server has been disconnected write a simple log-message.
+//! Skip all received messages which have a severity smaller than
+//! fMinLogLevel. Write any other message with MessageImp::Write.
+//
+void MessageDimRX::infoHandler()
+{
+    if (getInfo()!=&fDimMessage)
+        return;
+
+    const string name   = fDimMessage.getName();
+    const string server = name.substr(0, name.find_first_of('/'));
+
+    fConnected = fDimMessage.getSize()!=0;
+
+    // The server is diconnected. Do nothing
+    if (!fConnected)
+    {
+        // We cannot print this message because it is produced by
+        // every server which doesn't have the MESSAGE service, too.
+        //fMsg.Message(server+": Disconnected.");
+        return;
+    }
+
+    // skip all messages with a severity smaller than the minimum log level
+    if (fDimMessage.getQuality()<fMinLogLevel)
+        return;
+
+    const string msg = server+": "+fDimMessage.getString();
+
+    // Make sure getTimestamp is called _before_ getTimestampMillisecs
+    // Must be in exactly this order!
+    const int tsec = fDimMessage.getTimestamp();
+    const int tms  = fDimMessage.getTimestampMillisecs();
+
+    // Write the received message to the output
+    fMsg.Write(Time(tsec, tms*1000), msg, fDimMessage.getQuality());
+}
Index: branches/testFACT++branch/src/MessageDim.h
===================================================================
--- branches/testFACT++branch/src/MessageDim.h	(revision 18277)
+++ branches/testFACT++branch/src/MessageDim.h	(revision 18277)
@@ -0,0 +1,56 @@
+#ifndef FACT_MessageDim
+#define FACT_MessageDim
+
+#include "MessageImp.h"
+#include "DimDescriptionService.h"
+//#include <dis.hxx> // DimService
+
+#include "../externals/Queue.h"
+
+class MessageDimTX : public DimDescribedService, public MessageImp
+{
+private:
+    bool fDebug;
+
+    Queue<std::tuple<Time,std::string,int>> fMsgQueue;
+
+    bool UpdateService(const std::tuple<Time,std::string,int> &data);
+
+public:
+    MessageDimTX(const std::string &name, std::ostream &out=std::cout);
+    ~MessageDimTX();
+
+    int Write(const Time &t, const std::string &txt, int qos=kInfo);
+
+    void SetDebug(bool b=true) { fDebug=b; }
+
+    bool MessageQueueEmpty() const { return fMsgQueue.empty(); }
+};
+
+
+
+#include <dic.hxx> // DimStampedInfo
+
+class MessageDimRX : public DimInfoHandler
+{
+private:
+    int  fMinLogLevel;
+    bool fConnected;
+
+protected:
+    MessageImp &fMsg;
+
+private:
+    DimStampedInfo fDimMessage;
+
+protected:
+    void infoHandler();
+
+public:
+    MessageDimRX(const std::string &name, MessageImp &imp);
+
+    void SetMinLogLevel(int min=0) { fMinLogLevel=min; }
+    bool IsConnected() const { return fConnected; }
+};
+
+#endif
Index: branches/testFACT++branch/src/MessageImp.cc
===================================================================
--- branches/testFACT++branch/src/MessageImp.cc	(revision 18277)
+++ branches/testFACT++branch/src/MessageImp.cc	(revision 18277)
@@ -0,0 +1,182 @@
+// **************************************************************************
+/** @class MessageImp
+
+@brief The base implementation of a distributed messaging system
+
+
+Overwriting the Write() member function allows to change the look and
+feel and also the target of the messages issued through a MessageImp
+
+**/
+// **************************************************************************
+#include "MessageImp.h"
+
+#include <stdarg.h>
+
+#include <mutex>
+
+#include "tools.h"
+#include "Time.h"
+#include "WindowLog.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! Stores a reference to the given ostream in fOut. This is the stream to
+//! which all messaged issued are redirected by default if Write() has
+//! not been overwritten doing something else
+//!
+//! The stored reference can be accessed by either
+//!    operator()() or Out()
+//!
+//! Note, that you have to ensure the stream which is references doesn't
+//! go out of scope while in use by MessageImp or one of its derivatives.
+//!
+//! @param out
+//!    ostream to which the output should be redirected
+//
+MessageImp::MessageImp(ostream &out) : fOut(out)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is a special write function formatting a string when the
+//! state of a state machine has changed.
+//! 
+//! If the state is <-1 nothing is done.
+//!
+//! Calls the virtual function IndicateStateChange
+//!
+//! @param time
+//!    The time assigned to the message
+//!
+//! @param server
+//!    The server name which is emitting the state change
+//!
+//! @param msg
+//!    The message text
+//!
+//! @param state
+//!    The new state of the system
+//
+void MessageImp::StateChanged(const Time &time, const string &server, const string &msg, int state)
+{
+    if (state<-1)
+        return;
+
+    ostringstream out;
+    out << server << ": Changed state to " << state << " '" << msg << "' received.";
+
+    Write(time, out.str(), MessageImp::kInfo);
+
+    IndicateStateChange(time, server);
+}
+
+// --------------------------------------------------------------------------
+//
+//! The basic implementation of the output of a message to the output
+//! stream. This can overwritten by inheriting classes. The default is
+//! to redirect the message to the stream fOut. In addition colors
+//! from WindowLog are used depending on the severity. The color are ignored
+//! if the stream is not of type WindowLog.
+//!
+//! The default message has the form:
+//!     ## 2011-02-22 11:13:32.000754 - Text message.
+//!
+//! while ## is a placeholder depending on the severity of the message, e.g.
+//!
+//!     kMessage:  default    ->
+//!     kInfo:     green      I>
+//!     kWarn:     yellow     W>
+//!     kError:    red        E>
+//!     kAlarm     red        E>
+//!     kFatal:    red-blink  !>
+//!     kDebug:    blue
+//!     default:   bold       >>
+//!
+//! @param time
+//!    The time assigned to the message
+//!
+//! @param txt
+//!    The message text
+//!
+//! @param severity
+//!    The severity of the message
+//
+int MessageImp::WriteImp(const Time &time, const string &txt, int severity)
+{
+    if (severity==kAlarm && txt.length()==0)
+        return 0;
+
+    static mutex mtx;
+    const lock_guard<mutex> guard(mtx);
+
+    switch (severity)
+    {
+    case kMessage: fOut << kDefault       << " -> "; break;
+    case kComment: fOut << kDefault       << " #> "; break;
+    case kInfo:    fOut << kGreen         << " I> "; break;
+    case kWarn:    fOut << kYellow        << " W> "; break;
+    case kError:
+    case kAlarm:   fOut << kRed           << " E> "; break;
+    case kFatal:   fOut << kRed << kBlink << " !> "; break;
+    case kDebug:   fOut << kBlue          << "    "; break;
+    default:       fOut << kBold          << " >> "; break;
+    }
+    fOut << time.GetAsStr("%H:%M:%S.%f") << " - " << txt << endl;
+
+    return 0;
+}
+
+int MessageImp::Write(const Time &time, const string &txt, int severity)
+{
+    const uint32_t mjd = time.Mjd();
+
+    if (fLastMjd != mjd)
+        WriteImp(time, "=================== "+time.GetAsStr("%Y-%m-%d")+" ["+to_string(mjd)+"] ==================");
+
+    fLastMjd = mjd;
+
+    WriteImp(time, txt, severity);
+    return 0;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls Write with the current time the message text and the severity.
+//!
+//! @param txt
+//!    The message text to be passed to Write
+//!
+//! @param severity
+//!    The severity of the message to be passed to Write
+//
+int MessageImp::Update(const string &txt, int severity)
+{
+    Write(Time(), txt, severity);
+    return 0;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Just a helper to format the message according to the user input.
+//! See the documentation of printf for details.
+//!
+//! @param severity
+//!    The severity of the message to be passed to Write
+//!
+//! @param fmt
+//!    Format string according to which the text is formatted
+//
+/*
+int MessageImp::Update(int severity, const char *fmt, ...)
+{
+    va_list ap;
+    va_start(ap, fmt);
+    string str = Tools::Format(fmt, ap);
+    va_end(ap);
+    return Update(str, severity);
+}
+*/
Index: branches/testFACT++branch/src/MessageImp.h
===================================================================
--- branches/testFACT++branch/src/MessageImp.h	(revision 18277)
+++ branches/testFACT++branch/src/MessageImp.h	(revision 18277)
@@ -0,0 +1,93 @@
+#ifndef FACT_MessageImp
+#define FACT_MessageImp
+
+#include <string>
+#include <sstream>
+#include <iostream>
+
+class Time;
+
+class MessageImp
+{
+public:
+    /// Severity of a message
+    enum Severity
+    {
+        kMessage = 10, ///< Just a message, usually obsolete
+        kInfo    = 20, ///< An info telling something which can be interesting to know
+        kWarn    = 30, ///< A warning, things that somehow might result in unexpected or unwanted bahaviour
+        kError   = 40, ///< Error, something unexpected happened, but can still be handled by the program
+        kAlarm   = 45, ///< Error, something unexpected happened, but needs user intervention (i.e. it needs a signal to the user)
+        kFatal   = 50, ///< An error which cannot be handled at all happend, the only solution is program termination
+        kComment = 90, ///< A comment which is always printed
+        kDebug   = 99, ///< A message used for debugging only
+    };
+
+private:
+    std::ostream &fOut; /// The ostream to which by default Write redirects its output
+    uint32_t fLastMjd;  /// Mjd of last message
+
+    int WriteImp(const Time &time, const std::string &txt, int qos=kMessage);
+
+public:
+    MessageImp(std::ostream &out=std::cout);
+    virtual ~MessageImp() { }
+
+    virtual void IndicateStateChange(const Time &, const std::string &) { }
+    void StateChanged(const Time &time, const std::string &server, const std::string &msg, int state);
+    virtual int Write(const Time &time, const std::string &txt, int qos=kMessage);
+
+    int Update(const std::string &txt, int severity=kMessage);
+    int Update(const char *txt, int severity=kMessage) { return Update(std::string(txt), severity); }
+    int Update(const std::ostringstream &str, int severity=kMessage) { return Update(str.str(), severity); }
+//    int Update(int qos, const char *fmt, ...);
+
+    int Debug(const std::string &str)    { return Update(str, kDebug);   }
+    int Message(const std::string &str)  { return Update(str, kMessage); }
+    int Info(const std::string &str)     { return Update(str, kInfo);    }
+    int Warn(const std::string &str)     { return Update(str, kWarn);    }
+    int Error(const std::string &str)    { return Update(str, kError);   }
+    int Alarm(const std::string &str)    { return Update(str, kAlarm);   }
+    int Fatal(const std::string &str)    { return Update(str, kFatal);   }
+    int Comment(const std::string &str)  { return Update(str, kComment); }
+
+    int Debug(const char *txt)   { return Debug(std::string(txt));   }
+    int Message(const char *txt) { return Message(std::string(txt)); }
+    int Info(const char *txt)    { return Info(std::string(txt));    }
+    int Warn(const char *txt)    { return Warn(std::string(txt));    }
+    int Error(const char *txt)   { return Error(std::string(txt));   }
+    int Alarm(const char *txt)   { return Alarm(std::string(txt));   }
+    int Fatal(const char *txt)   { return Fatal(std::string(txt));   }
+    int Comment(const char *txt) { return Comment(std::string(txt)); }
+
+    int Debug(const std::ostringstream &str)   { return Debug(str.str());   }
+    int Message(const std::ostringstream &str) { return Message(str.str()); }
+    int Info(const std::ostringstream &str)    { return Info(str.str());    }
+    int Warn(const std::ostringstream &str)    { return Warn(str.str());    }
+    int Alarm(const std::ostringstream &str)   { return Alarm(str.str());   }
+    int Error(const std::ostringstream &str)   { return Error(str.str());   }
+    int Fatal(const std::ostringstream &str)   { return Fatal(str.str());   }
+    int Comment(const std::ostringstream &str) { return Comment(str.str()); }
+
+    std::ostream &operator()() const { return fOut; }
+    std::ostream &Out() const { return fOut; }
+
+    virtual bool MessageQueueEmpty() const { return true; }
+};
+
+#endif
+
+// ***************************************************************************
+/** @fn MessageImp::IndicateStateChange(const Time &time, const std::string &server)
+
+This function is called to indicate a state change by StateChanged() to
+derived classes.
+
+@param time
+   Time at which the state change happened
+
+@param server
+   Server which emitted the state change
+
+**/
+// ***************************************************************************
Index: branches/testFACT++branch/src/PixelMap.cc
===================================================================
--- branches/testFACT++branch/src/PixelMap.cc	(revision 18277)
+++ branches/testFACT++branch/src/PixelMap.cc	(revision 18277)
@@ -0,0 +1,69 @@
+#include "externals/PixelMap.h"
+
+using namespace std;
+
+#include <boost/regex.hpp>
+#include <mysql++/mysql++.h>
+
+void BiasMap::Retrieve(const std::string &database)
+{
+    static const boost::regex expr("(([[:word:].-]+)(:(.+))?@)?([[:word:].-]+)(:([[:digit:]]+))?(/([[:word:].-]+))");
+    // 2: user
+    // 4: pass
+    // 5: server
+    // 7: port
+    // 9: db
+
+    boost::smatch what;
+    if (!boost::regex_match(database, what, expr, boost::match_extra))
+        throw runtime_error("Couldn't parse '"+database+"'.");
+
+    if (what.size()!=10)
+        throw runtime_error("Error parsing '"+database+"'.");
+
+    const string user   = what[2];
+    const string passwd = what[4];
+    const string server = what[5];
+    const string db     = what[9];
+    const int port      = atoi(string(what[7]).c_str());
+
+    mysqlpp::Connection conn(db.c_str(), server.c_str(), user.c_str(), passwd.c_str(), port);
+
+    const mysqlpp::StoreQueryResult res =
+        conn.query("SELECT fPatchNumber, AVG(fVoltageNom), fOffset "
+                   " FROM GapdVoltages "
+                   " LEFT JOIN BiasOffsets USING(fPatchNumber) "
+                   " GROUP BY fPatchNumber").store();
+
+    clear();
+
+    int l = 0;
+    for (vector<mysqlpp::Row>::const_iterator v=res.begin(); v<res.end(); v++)
+    {
+        const int id = (*v)[0];
+
+        if (id<0 || id>416)
+        {
+            ostringstream str;
+            str << "Invalid channel id " << id << " received from database.";
+            throw runtime_error(str.str());
+        }
+
+        BiasMapEntry entry;
+
+        entry.hv_board   = id/32;
+        entry.hv_channel = id%32;
+        entry.Vnom       = (*v)[1];
+        entry.Voff       = (*v)[2];
+
+        (*this)[id] = entry;
+
+        l++;
+    }
+
+    if (l!=416)
+        throw runtime_error("Number of rows retrieved from the database does not match 416.");
+
+    if (size()!=416)
+        throw runtime_error("Number of entries retrived from database does not match 416.");
+}
Index: branches/testFACT++branch/src/Readline.cc
===================================================================
--- branches/testFACT++branch/src/Readline.cc	(revision 18277)
+++ branches/testFACT++branch/src/Readline.cc	(revision 18277)
@@ -0,0 +1,1556 @@
+// **************************************************************************
+/** @class Readline
+
+@brief C++ wrapper for GNU's readline library
+
+This class is meant as a C++ wrapper around GNU's readline library.
+Note that because readline uses a global namespace only one instance
+of this class can exist at a time. Instantiating a second object after
+a first one was deleted might show unexpected results.
+
+When the object is instantiated readline's history is read from a file.
+At destruction the history in memory is copied back to that file.
+The history file will be truncated to fMaxLines.
+
+By overloading the Readline class the function used for auto-completion
+can be overwritten.
+
+Simple example:
+
+\code
+
+   Readline rl("MyProg"); // will read the history from "MyProg.his"
+   while (1)
+   {
+        string txt = rl.Prompt("prompt> ");
+        if (txt=="quit)
+           break;
+
+        // ... do something ...
+
+        rl.AddHistory(txt);
+   }
+
+   // On destruction the history will be written to the file
+
+\endcode
+
+Simpler example (you need to implement the Process() function)
+
+\code
+
+   Readline rl("MyProg"); // will read the history from "MyProg.his"
+   rl.Run("prompt> ");
+
+   // On destruction the history will be written to the file
+
+\endcode
+
+@section References
+
+ - <A HREF="http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html">GNU Readline</A>
+ - <A HREF="http://www.rendezvousalpha.com/f/bash_d596c169?fn=1670">GNU Readline (src code)</A>
+
+ */
+// **************************************************************************
+#include "Readline.h"
+
+#include <sstream>
+#include <fstream>
+#include <iostream>
+
+#include <sys/ioctl.h>
+#include <readline/readline.h>
+#include <readline/history.h>
+
+#include <boost/version.hpp>
+#include <boost/filesystem.hpp>
+
+#include "tools.h"
+#include "Time.h"
+
+namespace fs = boost::filesystem;
+
+using namespace std;
+
+Readline   *Readline::This   =  0;
+bool        Readline::fStopScript = false;
+int         Readline::fScriptDepth = 0;
+std::string Readline::fScript;
+std::string Readline::fExternalInput;
+
+// --------------------------------------------------------------------------
+//
+//! Construct a Readline object. The constructor reads the history from a
+//! history file. The filename is compiled by adding ".his" to the
+//! supplied argument. The name oif the history file is stored in fName.
+//!
+//! Since readline has a global namespace, the creation of only one
+//! Readline instance is allowed.
+//!
+//! The provided program name is supplied to readline by means of
+//! rl_readline_name.
+//!
+//! Readlines default callback frunction for completions is redirected
+//! to CompletionImp which in turn will call Completion, which can be
+//! overwritten by the user.
+//!
+//! Bind some default key sequences like Page-up/-down for searching forward
+//! and backward in history.
+//!
+//! @param prgname
+//!    The prefix of the history filename. Usually the program name, which
+//!    can be initialized by argv[0].
+//
+Readline::Readline(const char *prgname) :
+    fMaxLines(500), fLine(0), fSection(-4), fLabel(-1), fCompletion(0)
+{
+    if (This)
+    {
+        cout << "ERROR - Readline can only be instatiated once!" << endl;
+        exit(-1);
+    }
+
+    This = this;
+
+    // Alternative completion function
+    rl_attempted_completion_function = rl_ncurses_completion_function;
+
+    // Program name
+#if BOOST_VERSION < 104600
+    static const string fname = boost::filesystem::path(prgname).filename();
+#else
+    static const string fname = boost::filesystem::path(prgname).filename().string();
+#endif
+    rl_readline_name = fname.c_str();
+
+    // Compile filename for history file
+    fName = string(prgname)+".his";
+
+    // Read history file
+    read_history(fName.c_str());
+    //if (read_history(fName.c_str()))
+    //    cout << "WARNING - Reading " << fName << ": " << strerror(errno) << endl;
+
+    fCommandLog.open(string(prgname)+".evt");
+
+    // Setup the readline callback which are needed to redirect
+    // the otuput properly to our ncurses panel
+    rl_getc_function                   = rl_ncurses_getc;
+    rl_startup_hook                    = rl_ncurses_startup;
+    rl_redisplay_function              = rl_ncurses_redisplay;
+    rl_event_hook                      = rl_ncurses_event_hook;
+    rl_completion_display_matches_hook = rl_ncurses_completion_display;
+
+    // Bind delete, page up, page down
+    rl_bind_keyseq("\e[1~",  rl_named_function("beginning-of-line"));
+    rl_bind_keyseq("\e[3~",  rl_named_function("delete-char"));
+    rl_bind_keyseq("\e[4~",  rl_named_function("end-of-line"));
+    rl_bind_keyseq("\e[5~",  rl_named_function("history-search-backward"));
+    rl_bind_keyseq("\e[6~",  rl_named_function("history-search-forward"));
+    rl_bind_keyseq("\033[1;3F", rl_named_function("kill-line"));
+    rl_bind_keyseq("\033[1;5D", rl_named_function("backward-word"));
+    rl_bind_keyseq("\033[1;5C", rl_named_function("forward-word"));
+    rl_bind_key(25, rl_named_function("kill-whole-line"));
+
+    //for (int i=0; i<10; i++) cout << (int)getchar() << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Writes the current history to the file with the name stored in fName.
+//! In addition the written file is truncated to fMaxLines to keep the
+//! file of a reasonable size. The number of lines fMaxLines can be set
+//! by SetMaxLines before the destructor is called. Setting fMaxLines
+//! to 0 or a negative value switches automatic truncation off.
+//
+Readline::~Readline()
+{
+    // Write current history to file
+    if (write_history(fName.c_str()))
+        cout << "WARNING - Write " << fName.c_str() << ": " << strerror(errno) << endl;
+
+    // Truncate file
+    if (fMaxLines>0 && history_truncate_file(fName.c_str(), fMaxLines))
+        cout << "WARNING - Truncate " << fName.c_str() << ": " << strerror(errno) << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This wraps the given readline function such that the output can be
+//! redirected from thr rl_outstream to the given C++ ostream.
+//!
+//! @param out
+//!    The stream to which the output should be redirected.
+//!
+//! @param function
+//!    Takes a function of type bool(*)() as argument
+//!
+//! @returns
+//!    The return value of the function
+//
+bool Readline::RedirectionWrapper(ostream &out, bool (*function)())
+{
+    FILE *save = SetStreamOut(tmpfile());
+    const bool rc = function();
+    FILE *file = SetStreamOut(save);
+
+    const bool empty = ftell(file)==0;
+
+    rewind(file);
+
+    if (empty)
+    {
+        out << " <empty>" << endl;
+        fclose(file);
+        return rc;
+    }
+
+    while (1)
+    {
+        const int c = getc(file);
+        if (feof(file))
+            break;
+        out << (char)c;
+    }
+    out << endl;
+
+    fclose(file);
+
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Redirected from rl_getc_function, calls Getc
+//
+int Readline::rl_ncurses_getc(FILE *f)
+{
+    return This->Getc(f);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Redirected from rl_startup_hook, calls Startup.
+//! A function called just before readline prints the first prompt.
+//
+int Readline::rl_ncurses_startup()
+{
+    This->Startup();
+    return 0; // What is this for?
+}
+
+// --------------------------------------------------------------------------
+//
+//! Redirected from rl_redisplay_function, calls Redisplay.
+//! Readline will call indirectly to update the display with the current
+//! contents of the editing buffer. 
+//
+void Readline::rl_ncurses_redisplay()
+{
+    This->Redisplay();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Redirected from rl_event_hook, calls Update().
+//! A function called periodically when readline is waiting for
+//! terminal input.
+//!
+int Readline::rl_ncurses_event_hook()
+{
+    This->EventHook();
+    return 0;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Redirected from rl_completion_display_matches_hook,
+//! calls CompletionDisplayImp
+//!
+//! A function to be called when completing a word would normally display
+//! the list of possible matches. This function is called in lieu of
+//! Readline displaying the list. It takes three arguments:
+//! (char **matches, int num_matches, int max_length) where matches is
+//! the array of matching strings, num_matches is the number of strings
+//! in that array, and max_length is the length of the longest string in
+//! that array. Readline provides a convenience function,
+//! rl_display_match_list, that takes care of doing the display to
+//! Readline's output stream. 
+//
+void Readline::rl_ncurses_completion_display(char **matches, int num, int max)
+{
+    This->CompletionDisplay(matches, num, max);
+}
+
+char **Readline::rl_ncurses_completion_function(const char *text, int start, int end)
+{
+    return This->Completion(text, start, end);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls the default rl_getc function.
+//
+int  Readline::Getc(FILE *f)
+{
+    return rl_getc(f);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Default: Do nothing.
+//
+void Readline::Startup()
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! The default is to redisplay the prompt which is gotten from
+//! GetUpdatePrompt(). If GetUpdatePrompt() returns an empty string the
+//! prompt is kept untouched. This can be used to keep a prompt updated
+//! with some information (e.g. time) just by overwriting GetUpdatePrompt()
+//!
+void Readline::EventHook(bool newline)
+{
+    const string cpy = fExternalInput;
+    fExternalInput = "";
+
+    if (!cpy.empty())
+    {
+        rl_replace_line(cpy.c_str(), 1);
+        rl_done = 1;
+    }
+
+    string p = GetUpdatePrompt();
+    if (p.empty())
+        p = rl_prompt;
+
+    if (newline)
+        rl_on_new_line();
+
+    if (rl_prompt==p && !newline)
+        return;
+
+    UpdatePrompt(p);
+
+    int w, h;
+    rl_get_screen_size(&h, &w);
+    cout << '\r' << string(w+1, ' ') << '\r';
+    rl_forced_update_display();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Called from Prompt and PromptEOF after readline has returned. It is
+//! meant as the opposite of Startup (called after readline finsihes)
+//! The default is to do nothing.
+//!
+//! @param buf
+//!    A pointer to the buffer returned by readline
+//
+void Readline::Shutdown(const char *)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Default: call rl_redisplay()
+//
+
+void Readline::Redisplay()
+{
+    static int W=-1, H=-1;
+
+    int w, h;
+    rl_get_screen_size(&h, &w);
+    if (W==w && h==H)
+    {
+        rl_redisplay();
+        return;
+    }
+
+    cout << '\r' << string(w+1, ' ') << '\r';
+
+    W=w;
+    H=h;
+
+    rl_forced_update_display();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Default: call rl_completion_display_matches()
+//
+void Readline::CompletionDisplay(char **matches, int num, int max)
+{
+    rl_display_match_list(matches, num, max);
+    rl_forced_update_display();
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is a static helper for the compilation of a completion-list.
+//! It compares the two inputs (str and txt) to a maximum of the size of
+//! txt. If they match, memory is allocated with malloc and a pointer to
+//! the null-terminated version of str is returned.
+//!
+//! @param str
+//!    A reference to the string which is checked (e.g. "Makefile.am")
+//!
+//! @param txt
+//!    A reference to the part of the string the user has already typed,
+//!    e.g. "Makef"
+//!
+//! @returns
+//!    A pointer to memory allocated with malloc containing the string str
+//
+char *Readline::Compare(const string &str, const string &txt)
+{
+    /*return strncmp(str.c_str(), txt.c_str(), txt.length())==0 ? */
+    return strncasecmp(str.c_str(), txt.c_str(), txt.length())==0 ?
+        strndup(str.c_str(), str.length()) : 0;
+}
+
+char **Readline::CompletionMatches(const char *text, char *(*func)(const char*, int))
+{
+    return rl_completion_matches(text, func);
+}
+
+// --------------------------------------------------------------------------
+//
+//! The given vector should be a reference to a vector of strings
+//! containing all possible matches. The actual match-making is then
+//! done in Complete(const char *, int)
+//!
+//! The pointer fCompletion is redirected to the vector for the run time
+//! of the function, but restored afterwards. So by this you can set a
+//! default completion list in case Complete is not called or Completion
+//! not overloaded.
+//!
+//! @param v
+//!    reference to a vector of strings with all possible matches
+//!
+//! @param text
+//!    the text which should be matched (it is just propagated to
+//!    Readline::Completion)
+//!
+char **Readline::Complete(const vector<string> &v, const char *text)
+{
+    const vector<string> *save = fCompletion;
+
+    fCompletion = &v;
+    char **rc = rl_completion_matches(const_cast<char*>(text), CompleteImp);
+    fCompletion = save;
+
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//! If fCompletion==0 the default is to call readline's
+//! rl_filename_completion_function. Otherwise the contents of fCompletion
+//! are returned. To change fCompletion either initialize it via
+//! SetCompletion() (in this case you must ensure the life time of the
+//! object) or call
+//!    Complete(const vector<string>&, const char*)
+//! from
+//!    Completion(const char * int, int)
+//!
+//! This is the so called generator function, the readline manual says
+//! about this function:
+//!
+//!   The generator function is called repeatedly from
+//!   rl_completion_matches(), returning a string each time. The arguments
+//!   to the generator function are text and state. text is the partial word
+//!   to be completed. state is zero the first time the function is called,
+//!   allowing the generator to perform any necessary initialization, and a
+//!   positive non-zero integer for each subsequent call. The generator
+//!   function returns (char *)NULL to inform rl_completion_matches() that
+//!   there are no more possibilities left. Usually the generator function
+//!   computes the list of possible completions when state is zero, and
+//!   returns them one at a time on subsequent calls. Each string the
+//!   generator function returns as a match must be allocated with malloc();
+//!   Readline frees the strings when it has finished with them.
+//
+char *Readline::Complete(const char* text, int state)
+{
+    if (fCompletion==0)
+        return rl_filename_completion_function(text, state);
+
+    static vector<string>::const_iterator pos;
+    if (state==0)
+        pos = fCompletion->begin();
+
+    while (pos!=fCompletion->end())
+    {
+        char *rc = Compare(*pos++, text);
+        if (rc)
+            return rc;
+    }
+
+    return 0;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls Complete()
+//
+char *Readline::CompleteImp(const char* text, int state)
+{
+    return This->Complete(text, state);
+}
+
+// --------------------------------------------------------------------------
+//
+//! The readline manual says about this function:
+//!
+//!   A  pointer to an alternative function to create matches. The
+//!   function is called with text, start, and end. start and end are
+//!   indices in rl_line_buffer saying what the boundaries of text are.
+//!   If this function exists and returns NULL, or if this variable is
+//!   set to NULL, then rl_complete() will call the value of
+//!   rl_completion_entry_function to generate matches, otherwise the
+//!   array of strings returned will be used.
+//!
+//! This function is virtual and can be overwritten. It defaults to
+//! a call to rl_completion_matches with CompleteImp as an argument
+//! which defaults to filename completion, but can also be overwritten.
+//!
+//! It is suggested that you call
+//!    Complete(const vector<string>&, const char*)
+//! from here.
+//!
+//! @param text
+//!    A pointer to a char array conatining the text which should be
+//!    completed. The text is null-terminated.
+//!
+//! @param start
+//!    The start index within readline's line buffer rl_line_buffer,
+//!    at which the text starts which presumably should be completed.
+//!
+//! @param end
+//!    The end index within readline's line buffer rl_line_buffer,
+//!    at which the text ends which presumably should be completed.
+//!
+//! @returns
+//!    An array of strings which were allocated with malloc and which
+//!    will be freed by readline with the possible matches.
+//
+char **Readline::Completion(const char *text, int /*start*/, int /*end*/)
+{
+    // To do filename completion call
+    return rl_completion_matches((char*)text, CompleteImp);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Adds the given string to the history buffer of readline's history by
+//! calling add_history. 
+//!
+//! @param str
+//!    A reference to a string which should be added to readline's
+//!    history.
+//!
+//! @param skip
+//!    If skip is 1 and str matches the last added entry in the history,
+//!    the entry is skipped. If skip==2, all entries matching str are
+//!    removed from the history before the new entry is added as last one.
+//!    <skip==2 is the default>
+//
+void Readline::AddToHistory(const string &str, int skip)
+{
+    if (skip==1 && fLastLine==str)
+        return;
+
+    if (str.empty())
+        return;
+
+    int p = -1;
+    while (skip==2)
+    {
+        p = history_search_pos(str.c_str(), 0, p+1);
+        if (p<0)
+            break;
+
+        HIST_ENTRY *e = remove_history(p--);
+
+        free(e->line);
+        free(e);
+    }
+
+    add_history(str.c_str());
+    fLastLine = str;
+}
+
+// --------------------------------------------------------------------------
+//
+//! @returns
+//!     a string containing [{fLine}]
+//
+string Readline::GetLinePrompt() const
+{
+    ostringstream str;
+    str << '[' << fLine << ']';
+    return str.str();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls rl_set_prompt. This can be used from readline's callback function
+//! to change the prompt while a call to the readline function is in
+//! progress.
+//!
+//! @param prompt
+//!     The new prompt to be shown
+//
+void Readline::UpdatePrompt(const string &prompt) const
+{
+    rl_set_prompt(prompt.c_str());
+}
+
+// --------------------------------------------------------------------------
+//
+//! This function is used to bind a key sequence via a call to
+//! rl_bind_keyseq.
+//!
+//! Readline's manual says about this function:
+//!
+//!   Bind the key sequence represented by the string keyseq to the
+//!   function function, beginning in the current keymap. This makes
+//!   new keymaps as necessary. The return value is non-zero if keyseq
+//!   is invalid.
+//!
+//! Key sequences are escaped sequences of characters read from an input
+//! stream when a special key is pressed. This is necessary because
+//! there are usually more keys and possible combinations than ascii codes.
+//!
+//! Possible key sequences are for example:
+//!   "\033OP"       F1
+//!   "\033[1;5A"    Ctrl+up
+//!   "\033[1;5B"    Ctrl+down
+//!   "\033[1;3A"    Alt+up
+//!   "\033[1;3B"    Alt+down
+//!   "\033[5;3~"    Alt+page up
+//!   "\033[6;3~"    Alt+page down
+//!   "\033+"        Alt++
+//!   "\033-"        Alt+-
+//!   "\033\t"       Alt+tab
+//!   "\033[1~"      Alt+tab
+//!
+//! @param seq
+//!     The key sequence to be bound
+//!
+//! @param func
+//!     A function of type "int func(int, int)
+//
+void Readline::BindKeySequence(const char *seq, int (*func)(int, int))
+{
+    rl_bind_keyseq(seq, func);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls rl_variable_dumper(1)
+//!
+//!   Print the readline variable names and their current values
+//!   to rl_outstream. If readable is non-zero, the list is formatted
+//!   in such a way that it can be made part of an inputrc file and
+//!   re-read.
+//!
+//! rl_outstream can be redirected using SetStreamOut()
+//!
+//! @returns
+//!     always true
+//
+bool Readline::DumpVariables()
+{
+    rl_variable_dumper(1);
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls rl_function_dumper(1)
+//!
+//!   Print the readline function names and the key sequences currently
+//!   bound to them to rl_outstream. If readable is non-zero, the list
+//!   is formatted in such a way that it can be made part of an inputrc
+//!   file and re-read.
+//!
+//! rl_outstream can be redirected using SetStreamOut()
+//!
+//! @returns
+//!     always true
+//
+bool Readline::DumpFunctions()
+{
+    rl_function_dumper(1);
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls rl_list_funmap_names()
+//!
+//!    Print the names of all bindable Readline functions to rl_outstream.
+//!
+//! rl_outstream can be redirected using SetStreamOut()
+//!
+//! @returns
+//!     always true
+//
+bool Readline::DumpFunmap()
+{
+    rl_list_funmap_names();
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Sets rl_outstream (the stdio stream to which Readline performs output)
+//! to the new stream.
+//!
+//! @param f
+//!    The new stdio stream to which readline should perform its output
+//!
+//! @return
+//!    The old stream to which readline was performing output
+//
+FILE *Readline::SetStreamOut(FILE *f)
+{
+    FILE *rc = rl_outstream;
+    rl_outstream = f;
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Sets rl_instream (the stdio stream from which Readline reads input)
+//! to the new stream.
+//!
+//! @param f
+//!    The new stdio stream from which readline should read its input
+//!
+//! @return
+//!    The old stream from which readline was reading it input
+//
+FILE *Readline::SetStreamIn(FILE *f)
+{
+    FILE *rc = rl_instream;
+    rl_instream = f;
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//! return rl_display_prompt (the prompt which should currently be
+//! displayed on the screen) while a readline command is in progress
+//
+string Readline::GetPrompt()
+{
+    return rl_display_prompt;
+}
+
+// --------------------------------------------------------------------------
+//
+//! return rl_line_buffer (the current input line which should currently be
+//! displayed on the screen) while a readline command is in progress
+//!
+//! The length of the current line buffer (rl_end) is available as
+//! GetLineBuffer().size()
+//!
+//! Note that after readline has returned the contents of rl_end might
+//! not reflect the correct buffer length anymore, hence, the returned buffer
+//! might be truncated.
+//
+string Readline::GetBuffer()
+{
+    return string(rl_line_buffer, rl_end);
+}
+
+// --------------------------------------------------------------------------
+//
+//! return rl_point (the current cursor position within the line buffer)
+//
+int Readline::GetCursor()
+{
+    return rl_point;
+}
+
+// --------------------------------------------------------------------------
+//
+//! return strlen(rl_display_prompt) + rl_point
+//
+int Readline::GetAbsCursor()
+{
+    return strlen(rl_display_prompt) + rl_point;
+}
+
+// --------------------------------------------------------------------------
+//
+//! return rl_end (the current total length of the line buffer)
+//! Note that after readline has returned the contents of rl_end might
+//! not reflect the correct buffer length anymore.
+//
+int Readline::GetBufferLength()
+{
+    return rl_end;
+}
+
+// --------------------------------------------------------------------------
+//
+//! return the length of the prompt plus the length of the line buffer
+//
+int Readline::GetLineLength()
+{
+    return strlen(rl_display_prompt) + rl_end;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls: Function: void rl_resize_terminal()
+//! Update Readline's internal screen size by reading values from the kernel.
+//
+void Readline::Resize()
+{
+    rl_resize_terminal();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls: Function: void rl_set_screen_size (int rows, int cols)
+//! Set Readline's idea of the terminal size to rows rows and cols columns.
+//!
+//! @param width
+//!    Number of columns
+//!
+//! @param height
+//!    Number of rows
+//
+void Readline::Resize(int width, int height)
+{
+    rl_set_screen_size(height, width);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Get the number of cols readline assumes the screen size to be
+//
+int Readline::GetCols() const
+{
+    int rows, cols;
+    rl_get_screen_size(&rows, &cols);
+    return cols;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Get the number of rows readline assumes the screen size to be
+//
+int Readline::GetRows() const
+{
+    int rows, cols;
+    rl_get_screen_size(&rows, &cols);
+    return rows;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Return a list of pointer to the history contents
+//
+vector<const char*> Readline::GetHistory() const
+{
+    HIST_ENTRY **next = history_list();
+
+    vector<const char*> v;
+
+    for (; *next; next++)
+        v.push_back((*next)->line);
+
+    return v;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Clear readline history (calls clear_history())
+//!
+//! @returns
+//!     always true
+//
+bool Readline::ClearHistory()
+{
+    clear_history();
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Displays the current history on rl_outstream
+//!
+//! rl_outstream can be redirected using SetStreamOut()
+//!
+//! @returns
+//!     always true
+//
+bool Readline::DumpHistory()
+{
+    HIST_ENTRY **next = history_list();
+
+    if (!next)
+        return true;
+
+    for (; *next; next++)
+        fprintf(rl_outstream, "%s\n", (*next)->line);
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Execute a shell command through a pipe. Write stdout to rl_outstream
+//!
+//! @param cmd
+//!     Command to be executed
+//!
+//! @returns
+//!     always true
+//
+bool Readline::ExecuteShellCommand(const string &cmd)
+{
+    FILE *pipe = popen(cmd.c_str(), "r");
+    if (!pipe)
+    {
+        fprintf(rl_outstream, "ERROR - Could not create pipe '%s': %m\n", cmd.c_str());
+        return true;
+    }
+
+    while (1)
+    {
+        char buf[1024];
+
+        const size_t sz = fread(buf, 1, 1024, pipe);
+
+        fwrite(buf, 1, sz, rl_outstream);
+
+        if (feof(pipe) || ferror(pipe))
+            break;
+    }
+
+    if (ferror(pipe))
+        fprintf(rl_outstream, "ERROR - Reading from pipe '%s': %m\n", cmd.c_str());
+
+    pclose(pipe);
+
+    fprintf(rl_outstream, "\n");
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Print the available commands. This is intended for being overwritten
+//! by deriving classes.
+//!
+//! rl_outstream can be redirected using SetStreamOut()
+//!
+//! @returns
+//!     always true
+//
+//
+bool Readline::PrintCommands()
+{
+    fprintf(rl_outstream, "\n");
+    fprintf(rl_outstream, " Commands:\n");
+    fprintf(rl_outstream, "   No application specific commands defined.\n");
+    fprintf(rl_outstream, "\n");
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Print a general help message. This is intended for being overwritten
+//! by deriving classes.
+//!
+//!
+//! rl_outstream can be redirected using SetStreamOut()
+//!
+//! @returns
+//!     always true
+//
+//
+bool Readline::PrintGeneralHelp()
+{
+    fprintf(rl_outstream, "\n");
+    fprintf(rl_outstream, " General help:\n");
+    fprintf(rl_outstream, "   h,help       Print this help message\n");
+    fprintf(rl_outstream, "   clear        Clear history buffer\n");
+    fprintf(rl_outstream, "   lh,history   Dump the history buffer to the screen\n");
+    fprintf(rl_outstream, "   v,variables  Dump readline variables\n");
+    fprintf(rl_outstream, "   f,functions  Dump readline functions\n");
+    fprintf(rl_outstream, "   m,funmap     Dump readline funmap\n");
+    fprintf(rl_outstream, "   c,commands   Dump available commands\n");
+    fprintf(rl_outstream, "   k,keylist    Dump key bindings\n");
+    fprintf(rl_outstream, "   .! command   Execute a shell command\n");
+    fprintf(rl_outstream, "   .w n         Sleep n milliseconds\n");
+    fprintf(rl_outstream, "   .x file ..   Execute a script of commands (+optional argumnets)\n");
+    fprintf(rl_outstream, "   .x file:N .. Execute a script of commands, start at label N\n");
+    fprintf(rl_outstream, "   .j N         Forward jump to label N\n");
+    fprintf(rl_outstream, "   .lt f0 f1 N  If float f0 lower than float f1, jump to label N\n");
+    fprintf(rl_outstream, "   .gt f0 f1 N  If float f0 greater than float f1, jump to label N\n");
+    fprintf(rl_outstream, "   .eq i0 i1 N  If int i0 equal int i1, jump to label N\n");
+    fprintf(rl_outstream, "   : N          Defines a label (N=number)\n");
+    fprintf(rl_outstream, "   # comment    Ignored\n");
+    fprintf(rl_outstream, "   .q,quit      Quit\n");
+    fprintf(rl_outstream, "\n");
+    fprintf(rl_outstream, " The command history is automatically loaded and saves to\n");
+    fprintf(rl_outstream, " and from %s.\n", GetName().c_str());
+    fprintf(rl_outstream, "\n");
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Print a help text about key bindings. This is intended for being
+//! overwritten by deriving classes.
+//!
+//!
+//! rl_outstream can be redirected using SetStreamOut()
+//!
+//! @returns
+//!     always true
+//
+//
+bool Readline::PrintKeyBindings()
+{
+    fprintf(rl_outstream, "\n");
+    fprintf(rl_outstream, " Key bindings:\n");
+    fprintf(rl_outstream, "   Page-up         Search backward in history\n");
+    fprintf(rl_outstream, "   Page-dn         Search forward in history\n");
+    fprintf(rl_outstream, "   Ctrl-left       One word backward\n");
+    fprintf(rl_outstream, "   Ctrl-right      One word forward\n");
+    fprintf(rl_outstream, "   Home            Beginning of line\n");
+    fprintf(rl_outstream, "   End             End of line\n");
+    fprintf(rl_outstream, "   Ctrl-d          Quit\n");
+    fprintf(rl_outstream, "   Ctrl-y          Delete line\n");
+    fprintf(rl_outstream, "   Alt-end/Ctrl-k  Delete until the end of the line\n");
+    fprintf(rl_outstream, "   F1              Toggle visibility of upper panel\n");
+    fprintf(rl_outstream, "\n");
+    fprintf(rl_outstream, " Default key-bindings are identical with your bash.\n");
+    fprintf(rl_outstream, "\n");
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+bool Readline::PreProcess(const string &str)
+{
+    // ----------- Labels -------------
+
+    if (str[0]==':')
+    {
+        try
+        {
+            fSection = stoi(str.substr(1));
+            SetSection(fSection);
+
+            if (fLabel!=fSection)
+                return true;
+        }
+        catch (const logic_error &e)
+        {
+            fCommandLog << "# ERROR[" << fScriptDepth << "] - Inavlid label '" << str.substr(1) << "'" << endl;
+            fLabel = -2;
+            return true;
+        }
+
+        fLabel=-1;
+        return false;
+    }
+
+    if (fLabel>=0)
+    {
+        fCommandLog << "# SKIP[" << fScriptDepth << "]: " << fLabel << " - " << str << endl;
+        return true;
+    }
+
+    if (str.substr(0, 3)==".j ")
+    {
+        fLabel = atoi(str.substr(3).c_str());
+        return false;
+    }
+
+    return Process(str);
+
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+bool Readline::Process(const string &str)
+{
+    // ----------- Common commands -------------
+
+    if (str.substr(0, 3)==".w ")
+    {
+         usleep(stoi(str.substr(3))*1000);
+         return true;
+    }
+
+    if (str.substr(0, 3)==".x ")
+    {
+        string opt(str.substr(3));
+
+        map<string,string> data = Tools::Split(opt);
+        if (opt.size()==0)
+        {
+            if (data.size()==0)
+                PrintReadlineError("Filename missing.");
+            else
+                PrintReadlineError("Equal sign missing in argument '"+data.begin()->first+"'");
+
+            return true;
+        }
+
+        const string save  = fScript;
+        const int save_sec = fSection;
+        Execute(opt, data);
+        fScript = save;
+        if (save_sec!=-4)
+        {
+            fSection = save_sec;
+            SetSection(save_sec);
+        }
+
+        return true;
+    }
+
+    if (str.substr(0, 2)==".!")
+    {
+         ExecuteShellCommand(str.substr(2));
+         return true;
+    }
+
+    if (str.substr(0, 4)==".gt ")
+    {
+        istringstream in(str.substr(4));
+
+        float v0, v1;
+        int label;
+
+        in >> v0 >> v1 >> label;
+        if (in.fail())
+        {
+            PrintReadlineError("Couldn't parse '"+str+"'");
+            fLabel = -2;
+            return true;
+        }
+
+        if (v0 > v1)
+            fLabel = label;
+
+        return true;
+    }
+
+    if (str.substr(0, 4)==".lt ")
+    {
+        istringstream in(str.substr(4));
+
+        float v0, v1;
+        int label;
+
+        in >> v0 >> v1 >> label;
+        if (in.fail())
+        {
+            PrintReadlineError("Couldn't parse '"+str+"'");
+            fLabel = -2;
+            return true;
+        }
+
+        if (v0 < v1)
+           fLabel = label;
+
+        return true;
+    }
+
+    if (str.substr(0, 4)==".eq ")
+    {
+        istringstream in(str.substr(4));
+
+        int v0, v1, label;
+
+        in >> v0 >> v1 >> label;
+        if (in.fail())
+        {
+            PrintReadlineError("Couldn't parse '"+str+"'");
+            fLabel = -2;
+            return true;
+        }
+
+        if (v0==v1)
+            fLabel = label;
+
+        return true;
+    }
+
+
+    // ----------- Readline static -------------
+
+    if (str=="clear")
+        return ClearHistory();
+
+    if (str=="lh" || str=="history")
+        return DumpHistory();
+
+    if (str=="v" || str=="variables")
+        return DumpVariables();
+
+    if (str=="f" || str=="functions")
+        return DumpFunctions();
+
+    if (str=="m" || str=="funmap")
+        return DumpFunmap();
+
+    // ---------- Readline virtual -------------
+
+    if (str=="h" || str=="help")
+        return PrintGeneralHelp();
+
+    if (str=="c" || str=="commands")
+        return PrintCommands();
+
+    if (str=="k" || str=="keylist")
+        return PrintKeyBindings();
+
+    return false;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This function is a wrapper around the call to readline. It encapsultes
+//! the return buffer into a std::string and deletes the memory allocated
+//! by readline. Furthermore, it removes leading and trailing whitespaces
+//! before return the result. The result is returned in the given
+//! argument containing the prompt. Before the function returns Shutdown()
+//! is called (as opposed to Startup when readline starts)
+//!
+//! @param str
+//!    The prompt which is to be shown by the readline libarary. it is
+//!    directly given to the call to readline. The result of the
+//!    readline call is returned in this string.
+//!
+//! @returns
+//!    true if the call succeeded as usual, false if EOF was detected
+//!    by the readline call.
+//
+bool Readline::PromptEOF(string &str)
+{
+    char *buf = readline(str.c_str());
+    Shutdown(buf);
+
+    // Happens when EOF is encountered
+    if (!buf)
+        return false;
+
+    str = Tools::Trim(buf);
+
+    free(buf);
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This function is a wrapper around the call to readline. It encapsultes
+//! the return buffer into a std::string and deletes the memory allocated
+//! by readline. Furthermore, it removes leading and trailing whitespaces
+//! before return the result. Before the function returns Shutdown() is
+//! called (as opposed to Startup when readline starts)
+//!
+//! @param prompt
+//!    The prompt which is to be shown by the readline libarary. it is
+//!    directly given to the call to readline.
+//!
+//! @returns
+//!    The result of the readline call
+//
+string Readline::Prompt(const string &prompt)
+{
+    char *buf = readline(prompt.c_str());
+
+    Shutdown(buf ? buf : "");
+
+    const string str = !buf || (rl_done && rl_pending_input==4)
+        ? ".q" : Tools::Trim(buf);
+
+    free(buf);
+
+    return str;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Writes the current history to the file defined by fName and
+//! replaces the history by the data from the given file.
+//!
+//! @param fname
+//!    Name of the history file to read
+//!
+void Readline::StaticPushHistory(const string &fname="")
+{
+    fs::path his = fs::path(This->fName).parent_path();
+    his /= fname;
+
+    write_history(This->fName.c_str());
+    stifle_history(0);
+    unstifle_history();
+    read_history(his.string().c_str());
+}
+
+// --------------------------------------------------------------------------
+//
+//! Writes the current history to the file with the given name
+//! and replaces the history by the file defined by fName.
+//!
+//! @param fname
+//!    Name of the history file to write (it will be truncated to 1000 lines)
+//!
+void Readline::StaticPopHistory(const string &fname="")
+{
+    fs::path his = fs::path(This->fName).parent_path();
+    his /= fname;
+
+    write_history(his.string().c_str());
+    history_truncate_file(his.string().c_str(), 1000);
+
+    stifle_history(0);
+    unstifle_history();
+    read_history(This->fName.c_str());
+}
+
+// --------------------------------------------------------------------------
+//
+//! Just calls readline and thus allows to just prompt for something.
+//! Adds everything to the history except '.q'
+//!
+//! @param prompt
+//!    Prompt to be displayed
+//!
+//! @return
+//!    String entered by the user ('.q' is Ctrl-d is pressed)
+//!
+string Readline::StaticPrompt(const string &prompt)
+{
+    char *buf = readline(prompt.c_str());
+    if (!buf)
+        return ".q";
+
+    const string str(buf);
+    if (Tools::Trim(str)!=".q" && !Tools::Trim(str).empty())
+        if (history_length==0 || history_search_pos(str.c_str(), -1, history_length-1)!=history_length-1)
+            add_history(buf);
+
+    free(buf);
+
+    return str;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Process a single line. All lines are added to the history, but only
+//! accepted lines are written to the command log. In this case fLine is
+//! increased by one.
+//! Comment (starting with #) are removed from the command-line. A # can be
+//! escaped with quotation marks "#"
+//
+void Readline::ProcessLine(const string &str)
+{
+    const string cmd = Tools::Uncomment(str);
+
+    if (!cmd.empty())
+    {
+        const bool rc = PreProcess(cmd);
+
+        AddToHistory(cmd);
+
+        if (rc)
+            return;
+
+        fLine++;
+    }
+
+    fCommandLog << str << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This implements a loop over readline calls. A prompt to issue can be
+//! given. If it is NULL, the prompt is retrieved from GetUpdatePrompt().
+//! It is updated regularly by means of calls to GetUpdatePrompt() from
+//! EventHook(). If Prompt() returns with "quit" or ".q" the loop is
+//! exited. If ".qqq" is entered exit(-1) is called. In case of ".qqqqqq"
+//! abort(). Both ways to exit the program are not recommended. Empty
+//! inputs are ignored. After that Process() with the returned string
+//! is called. If Process returns true the input is not counted and not
+//! added to the history, otherwise the line counter is increased
+//! and the input is added to the history.
+//!
+//! @param prompt
+//!    The prompt to be issued or NULL if GetUPdatePrompt should be used
+//!    instead.
+//!
+void Readline::Run(const char *prompt)
+{
+    fLine = 0;
+    while (1)
+    {
+        // Before we start we have to make sure that the
+        // screen looks like and is ordered like expected.
+        const string str = Prompt(prompt?prompt:GetUpdatePrompt());
+        if (str.empty())
+            continue;
+
+        if (str=="quit" || str==".q")
+            break;
+
+        if (str==".qqq")
+            exit(128);
+
+        if (str==".qqqqqq")
+            abort();
+
+        ProcessLine(str);
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! Executes commands read from an ascii file as they were typed in
+//! the console. Empty lines and lines beginning with # are ignored.
+//!
+//! @param fname
+//!    Filename of file to read
+//!
+//! @param args
+//!    Arguments to be passed to the script. A search and replace
+//!    will be done for ${arg}
+//!
+//! @returns
+//!    -1 if the file couldn't be read and the number of commands for which
+//!    Process() was callled otherwise
+//!
+int Readline::Execute(const string &fname, const map<string,string> &args)
+{
+    // this could do the same:
+    //    rl_instream = fopen(str.c_str(), "r");
+
+    if (IsStopped())
+        return 0;
+
+    string name = Tools::Trim(fname);
+    fScript = name;
+
+    fSection = -3;
+    SetSection(-3);
+    fLabel = -1;
+
+    const size_t p = name.find_last_of(':');
+    if (p!=string::npos)
+    {
+        fLabel = atoi(name.substr(p+1).c_str());
+        name = name.substr(0, p);
+    }
+
+    ifstream fin(name.c_str());
+    if (!fin)
+    {
+        fSection = -4;
+        SetSection(-4);
+        return -1;
+    }
+
+    if (fScriptDepth++==0)
+        fStopScript = false;
+
+    fCommandLog << "# " << Time() << " - " << name << " (START[" << fScriptDepth<< "]";
+    if (fLabel>=0)
+        fCommandLog << ':' << fLabel;
+    fCommandLog << ")" << endl;
+
+    fSection = -1;
+    SetSection(-1);
+
+    int rc = 0;
+
+    string buffer;
+    while (getline(fin, buffer, '\n') && !fStopScript)
+    {
+        buffer = Tools::Trim(buffer);
+        if (buffer.empty())
+            continue;
+
+        rc++;
+
+        if (buffer=="quit" || buffer==".q")
+        {
+            Stop();
+            break;
+        }
+
+        // find and replace arguments
+        for (auto it=args.begin(); it!=args.end(); it++)
+        {
+            const string find = "${"+it->first+"}";
+            for (size_t pos=0; (pos=buffer.find(find, pos))!=string::npos; pos+=find.length())
+                buffer.replace(pos, find.size(), it->second);
+        }
+
+        // process line
+        ProcessLine(buffer);
+    }
+
+    fCommandLog << "# " << Time() << " - " << name << " (FINISHED[" << fScriptDepth<< "])" << endl;
+
+    if (--fScriptDepth==0)
+        fStopScript = false;
+
+    fLabel = -1;
+    fSection = -4;
+    SetSection(-4);
+
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Stops the readline execution. It fakes the end of an editing by
+//! setting rl_done to 1. To distinguish this from a normal edit,
+//! rl_pending_input is set to EOT.
+//!
+void Readline::Stop()
+{
+    rl_done          = 1;
+    rl_pending_input = 4; // EOT (end of transmission, ctrl-d)
+}
+
+// --------------------------------------------------------------------------
+//
+//! @returns
+//!    the status of rl_done and rl_pending_input. If rl_done==1 and
+//!    rl_pending_input==4 true is returned, false otherwise.
+//!    This can be used to check if Stop() was called. If readline is
+//!    not in operation.
+//!
+bool Readline::IsStopped() const
+{
+    return rl_done==1 && rl_pending_input==4;
+};
+
+void Readline::PrintReadlineError(const std::string &str)
+{
+    fprintf(rl_outstream, "%s\n", str.c_str());
+}
Index: branches/testFACT++branch/src/Readline.h
===================================================================
--- branches/testFACT++branch/src/Readline.h	(revision 18277)
+++ branches/testFACT++branch/src/Readline.h	(revision 18277)
@@ -0,0 +1,153 @@
+#ifndef FACT_Readline
+#define FACT_Readline
+
+#include <map>
+#include <string>
+#include <vector>
+#include <fstream>
+#include <iostream>
+
+class Readline
+{
+public:
+    static bool RedirectionWrapper(std::ostream &out, bool (*function)());
+
+protected:
+    /// A pointer to the unique instance of Readline to let the static
+    /// functions used as callback for readline call member function
+    /// with an object. This makes overwriting easier.
+    static Readline *This;
+
+private:
+    std::string fName;     /// Filename for the history file compiled in the constructor
+    int fMaxLines;         /// Maximum number of lines in the history file
+
+    std::ofstream fCommandLog;
+
+    std::string fLastLine; /// Last line adde to history
+
+    int fLine;
+    int fSection;
+    int fLabel;
+    static int  fScriptDepth;
+    static bool fStopScript;
+
+    static std::string fExternalInput;
+
+    /// Static member function which are used to adapt readline to ncurses
+    static int    rl_ncurses_getc(FILE *);
+    static int    rl_ncurses_startup();
+    static void   rl_ncurses_redisplay();
+    static int    rl_ncurses_event_hook();
+    static void   rl_ncurses_completion_display(char **matches, int num, int max);
+    static char **rl_ncurses_completion_function(const char *text, int start, int end);
+    static char   *CompleteImp(const char* text, int state);
+
+
+protected:
+    static std::string fScript;
+
+    /// The non static implementations of the callback funtions above
+    virtual int  Getc(FILE *);
+    virtual void Startup();
+    virtual void EventHook(bool newline=false);
+    virtual void Shutdown(const char *buf);
+    virtual void Redisplay();
+    virtual void CompletionDisplay(char **matches, int num, int max);
+
+    /// Functions dealing with auto completion
+    virtual char *Complete(const char* text, int state);
+    virtual char **Completion(const char *text, int start, int end);
+
+    /// Pointer to a list of possible matched for auto-completion
+    const std::vector<std::string> *fCompletion; 
+    void SetCompletion(const std::vector<std::string> *v) { fCompletion = v; }
+    char **Complete(const std::vector<std::string> &v, const char *text);
+
+    ///
+    virtual void SetSection(int) { }
+    virtual void PrintReadlineError(const std::string &str);
+
+public:
+    Readline(const char *prgname);
+    virtual ~Readline();
+
+    // Access to readline
+    void BindKeySequence(const char *seq, int (*func)(int, int));
+
+    static  bool DumpVariables();
+    static  bool DumpFunctions();
+    static  bool DumpFunmap();
+    static  bool DumpHistory();
+
+    virtual bool PrintGeneralHelp();
+    virtual bool PrintCommands();
+    virtual bool PrintKeyBindings();
+
+    // History functions
+    std::string GetName() const { return fName; }
+
+    void AddToHistory(const std::string &str, int skip=2);
+    static bool ClearHistory();
+    std::vector<const char*> GetHistory() const;
+
+    void SetMaxSize(int lines) { fMaxLines = lines; }
+
+    // Prompting
+    void UpdatePrompt(const std::string &prompt) const;
+    void UpdatePrompt() const { UpdatePrompt(GetUpdatePrompt()); }
+
+    virtual bool PreProcess(const std::string &str);
+    virtual bool Process(const std::string &str);
+    virtual std::string GetUpdatePrompt() const { return ""; }
+    virtual bool PromptEOF(std::string &str);
+    virtual std::string Prompt(const std::string &prompt);
+    virtual void Run(const char *prompt=0);
+    static  void Stop();
+    virtual bool ExecuteShellCommand(const std::string &cmd);
+    int          Execute(const std::string &fname, const std::map<std::string,std::string> &args=std::map<std::string,std::string>());
+    bool         IsStopped() const;
+    void         ProcessLine(const std::string &str);
+    void         SetLabel(int l) { fLabel = l; }
+    static void  StopScript() { fStopScript = true; }
+    static bool  IsScriptStopped() { return fStopScript; }
+    static int   GetScriptDepth() { return fScriptDepth; }
+    static void  SetScriptDepth(unsigned int d) { fScriptDepth=d; }
+    static void  SetExternalInput(const std::string &inp) { fExternalInput = inp; }
+
+    static std::string GetScript() { return fScript; }
+    static std::string GetExternalInput() { return fExternalInput; }
+
+    int GetLine() const { return fLine; }
+    virtual std::string GetLinePrompt() const;
+
+    // Helper
+    static char  *Compare(const std::string &str, const std::string &txt);
+    static char **CompletionMatches(const char *text, char *(*func)(const char*, int));
+
+    // I/O Streams
+    static FILE *SetStreamOut(FILE *f);
+    static FILE *SetStreamIn(FILE *f);
+
+    // Other global readline variables
+    static std::string GetPrompt();
+    static std::string GetBuffer();
+    static int GetAbsCursor();
+    static int GetCursor();
+    static int GetBufferLength();
+    static int GetLineLength();
+
+    // Screen size
+    static void Resize();
+    static void Resize(int w, int h);
+    int GetCols() const;
+    int GetRows() const;
+
+    static Readline *Instance() { return This; }
+
+    static void        StaticPushHistory(const std::string &fname);
+    static std::string StaticPrompt(const std::string &prompt);
+    static void        StaticPopHistory(const std::string &fname);
+};
+
+#endif
Index: branches/testFACT++branch/src/ReadlineColor.cc
===================================================================
--- branches/testFACT++branch/src/ReadlineColor.cc	(revision 18277)
+++ branches/testFACT++branch/src/ReadlineColor.cc	(revision 18277)
@@ -0,0 +1,256 @@
+// **************************************************************************
+/** @namespace ReadlineColor
+
+@brief A fewer helper functions to apply color attributes and redirect the output
+
+ */
+// **************************************************************************
+#include "ReadlineColor.h"
+
+#include <boost/version.hpp>
+#include <boost/filesystem.hpp>
+
+#include "Time.h"
+#include "Readline.h"
+#include "WindowLog.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! @returns
+//!    always true
+//
+bool ReadlineColor::PrintBootMsg(ostream &out, const string &name, bool interactive)
+{
+#if BOOST_VERSION < 104600
+    const string n = boost::filesystem::path(name).stem();
+#else
+    const string n = boost::filesystem::path(name).stem().string();
+#endif
+
+    out << kBlue << kBold << kUnderline << "\n Master Control Program (compiled " __DATE__ " " __TIME__ << ") " << endl;
+    out << kBlue <<
+        "\n"
+        "  ENCOM MX 16-923 USER # 0" << int(Time().Mjd()) << Time::fmt(" %H:%M:%S") << Time() << Time::reset << " INFORMATION\n"
+        "\n"
+        "  TELESCOPE CONTROL PROGRAM: " << n << "\n"
+        "  ANNEXED BY FACT COLLABORATION\n"
+        "  ORIGINAL PROGRAM WRITTEN BY T.BRETZ\n"
+        "  THIS INFORMATION " << kUnderline << "PRIORITY ONE"
+        << endl;
+    out << kBlue << "  END OF LINE\n" << endl;
+
+    if (!interactive)
+        return true;
+
+    out << "Enter 'h' for help." << endl;
+    out << endl;
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! @returns
+//!    always true
+//
+bool ReadlineColor::PrintCommands(ostream &out)
+{
+    out << endl;
+    out << " " << kUnderline << " Commands:" << endl;
+    out << "   No application specific commands defined." << endl;
+    out << endl;
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Displays the available ncurses attributes, like color.
+//!
+//! @returns
+//!    always true
+//
+bool ReadlineColor::PrintAttributes(ostream &out)
+{
+    out << endl;
+    out << " Attributes:" << endl;
+    out << "   " << kReset      << "kReset" << endl;
+    out << "   " << kNormal     << "kNormal" << endl;
+    out << "   " << kHighlight  << "kHighlight" << endl;
+    out << "   " << kReverse    << "kReverse" << endl;
+    out << "   " << kUnderline  << "kUnderline" << endl;
+    out << "   " << kBlink      << "kBlink" << endl;
+    out << "   " << kDim        << "kDim" << endl;
+    out << "   " << kBold       << "kBold" << endl;
+    out << "   " << kProtect    << "kProtect" << endl;
+    out << "   " << kInvisible  << "kInvisible" << endl;
+    out << "   " << kAltCharset << "kAltCharset" << kReset << "  (kAltCharset)" << endl;
+    out << endl;
+    out << " Colors:" << endl;
+    out << "   " << kDefault << "kDefault  " << kBold << "+  kBold" << endl;
+    out << "   " << kRed     << "kRed      " << kBold << "+  kBold" << endl;
+    out << "   " << kGreen   << "kGreen    " << kBold << "+  kBold" << endl;
+    out << "   " << kYellow  << "kYellow   " << kBold << "+  kBold" << endl;
+    out << "   " << kBlue    << "kBlue     " << kBold << "+  kBold" << endl;
+    out << "   " << kMagenta << "kMagenta  " << kBold << "+  kBold" << endl;
+    out << "   " << kCyan    << "kCyan     " << kBold << "+  kBold" << endl;
+    out << "   " << kWhite   << "kWhite    " << kBold << "+  kBold" << endl;
+    out << "   " << endl;
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Displays the keybindings available due to the Shell class
+//!
+//! @returns
+//!    always true
+//!
+//! @todo
+//!    Update output
+//
+bool ReadlineColor::PrintKeyBindings(ostream &out)
+{
+    out << endl;
+    out << " " << kUnderline << "Key bindings:" << endl << endl;;
+    out << "  Default key-bindings are identical with your bash." << endl;
+    out << endl;
+    out << kBold << "   Page-up         " << kReset << "Search backward in history" << endl;
+    out << kBold << "   Page-dn         " << kReset << "Search forward in history" << endl;
+    out << kBold << "   Ctrl-left       " << kReset << "One word backward" << endl;
+    out << kBold << "   Ctrl-right      " << kReset << "One word forward" << endl;
+    out << kBold << "   Home            " << kReset << "Beginning of line" << endl;
+    out << kBold << "   End             " << kReset << "End of line" << endl;
+    out << kBold << "   Ctrl-d          " << kReset << "Quit" << endl;
+    out << kBold << "   Ctrl-y          " << kReset << "Delete line" << endl;
+    out << kBold << "   Alt-end/Ctrl-k  " << kReset << "Delete until the end of the line" << endl;
+    out << endl;
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Print a general help text which also includes the commands pre-defined
+//! by the Shell class.
+//!
+//! @returns
+//!    always true
+//!
+//! @todo
+//!    Get it up-to-date
+//
+bool ReadlineColor::PrintGeneralHelp(ostream &out, const string &name)
+{
+    out << endl;
+    out << " " << kUnderline << "General help:" << endl << endl;
+    out << "  The command history is automatically loaded and saves to" << endl;
+    out << "  and from " << name << endl;
+    out << endl;
+    out << kBold << "   h,help       " << kReset << "Print this help message\n";
+    out << kBold << "   clear        " << kReset << "Clear history buffer\n";
+    out << kBold << "   lh,history   " << kReset << "Dump the history buffer to the screen\n";
+    out << kBold << "   v,variable   " << kReset << "Dump readline variables\n";
+    out << kBold << "   f,function   " << kReset << "Dump readline functions\n";
+    out << kBold << "   m,funmap     " << kReset << "Dump readline funmap\n";
+    out << kBold << "   c,command    " << kReset << "Dump available commands\n";
+    out << kBold << "   k,keylist    " << kReset << "Dump key bindings\n";
+    out << kBold << "   a,attrs      " << kReset << "Dump available stream attributes\n";
+    out << kBold << "   .! command   " << kReset << "Execute a shell command\n";
+    out << kBold << "   .w n         " << kReset << "Sleep n milliseconds\n";
+    out << kBold << "   .x filename  " << kReset << "Execute a script of commands (+optional arguments)\n";
+    out << kBold << "   .x file:N    " << kReset << "Execute a script of commands, start at label N\n";
+    out << kBold << "   .j N         " << kReset << "Forward jump to label N\n";
+    out << kBold << "   .lt f0 f1 N  " << kReset << "If float f0 lower than float f1, jump to label N\n";
+    out << kBold << "   .gt f0 f1 N  " << kReset << "If float f0 greater than float f1, jump to label N\n";
+    out << kBold << "   .eq i0 i1 N  " << kReset << "If int i0 equal int i1, jump to label N\n";
+    out << kBold << "   : N          " << kReset << "Defines a label (N=number)\n";
+    out << kBold << "   # comment    " << kReset << "Ignored\n";
+    out << kBold << "   .q,quit      " << kReset << "Quit" << endl;
+    out << endl;
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Execute a shell command through a pipe. Write stdout to rl_outstream
+//!
+//! @param cmd
+//!     Command to be executed
+//!
+//! @returns
+//!     always true
+//
+bool ReadlineColor::ExecuteShellCommand(ostream &out, const string &cmd)
+{
+    FILE *pipe = popen(cmd.c_str(), "r");
+    if (!pipe)
+    {
+        out << kRed << "ERROR - Could not create pipe '" << cmd << "': " << strerror(errno) << " [" << errno << "]" << endl;
+        return true;
+    }
+
+    while (1)
+    {
+        char buf[1024];
+
+        const size_t sz = fread(buf, 1, 1024, pipe);
+        out.write(buf, sz);
+
+        if (feof(pipe) || ferror(pipe))
+            break;
+    }
+
+    out << endl;
+
+    if (ferror(pipe))
+        out << kRed << "ERROR - Reading from pipe '" << cmd << "': " << strerror(errno) << " [" << errno << "]" << endl;
+
+    pclose(pipe);
+
+    return true;
+}
+
+
+bool ReadlineColor::Process(ostream &out, const string &str)
+{
+    // ----------- Readline -----------
+
+    if (str.substr(0, 2)==".!")
+         return ExecuteShellCommand(out, str.substr(2));
+
+    if (str=="lh" || str=="history")
+    {
+        out << endl << kBold << "History:" << endl;
+        return Readline::RedirectionWrapper(out, Readline::DumpHistory);
+    }
+
+    if (str=="v" || str=="variable")
+    {
+        out << endl << kBold << "Variables:" << endl;
+        return Readline::RedirectionWrapper(out, Readline::DumpVariables);
+    }
+
+    if (str=="f" || str=="function")
+    {
+        out << endl << kBold << "Functions:" << endl;
+        return Readline::RedirectionWrapper(out, Readline::DumpFunctions);
+    }
+
+    if (str=="m" || str=="funmap")
+    {
+        out << endl << kBold << "Funmap:" << endl;
+        return Readline::RedirectionWrapper(out, Readline::DumpFunmap);
+    }
+
+    // ------------ ReadlineWindow -------------
+
+    if (str=="a" || str=="attrs")
+        return PrintAttributes(out);
+
+    return false;
+}
Index: branches/testFACT++branch/src/ReadlineColor.h
===================================================================
--- branches/testFACT++branch/src/ReadlineColor.h	(revision 18277)
+++ branches/testFACT++branch/src/ReadlineColor.h	(revision 18277)
@@ -0,0 +1,20 @@
+#ifndef FACT_ReadlineColor
+#define FACT_ReadlineColor
+
+#include <ostream>
+
+namespace ReadlineColor
+{
+    bool ExecuteShellCommand(std::ostream &out, const std::string &cmd);
+
+    bool PrintBootMsg(std::ostream &out, const std::string &name, bool interactive=true);
+    bool PrintAttributes(std::ostream &out);
+
+    bool PrintGeneralHelp(std::ostream &out, const std::string &name);
+    bool PrintCommands(std::ostream &out);
+    bool PrintKeyBindings(std::ostream &out);
+
+    bool Process(std::ostream &out, const std::string &str);
+};
+
+#endif
Index: branches/testFACT++branch/src/ReadlineWindow.cc
===================================================================
--- branches/testFACT++branch/src/ReadlineWindow.cc	(revision 18277)
+++ branches/testFACT++branch/src/ReadlineWindow.cc	(revision 18277)
@@ -0,0 +1,363 @@
+// **************************************************************************
+/** @class ReadlineWindow
+
+@brief Helper to redirect readline's in- and output to an ncurses window
+
+The idea of this class is to allow the use of the readline functionality
+within a ncurses window. Therefore, several callback and hook function
+of the readline libarary are redirected, which allow to redirect the
+window's input stream to readline and the readline output to the
+window.
+
+After instantisation a pointer to a ncurses WINDOW must be given to the
+object to 'bind' readline to this window.
+
+In addition the color of the readline prompt can be set using the
+SetPromptColor() member function. Note that the given color must
+be the index of a COLOR_PAIR. For details on this see the ncurses
+documentation
+
+If ncurses will use more than one window on the screen it might
+be necessary to redraw the screen before the cursor is displayed.
+Therefore, the Refresh() function must be overwritten. It is called
+before the cursor is put to its final location in the readline line
+and after all update to the screen was performed.
+
+Refresh() can be used to force a redisplay of the current input line
+from a derived class. This might be necessary after changes top the
+screen or window size.
+
+@section References
+
+ - <A HREF="http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html">GNU Readline</A>
+ - <A HREF="http://www.gnu.org/software/ncurses">GNU Ncurses</A>
+
+**/
+// **************************************************************************
+#include "Shell.h"
+
+#include <sstream>
+#include <iostream>
+#include <string.h> // strlen
+
+#include "tools.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! Propagate prgname to the Readline constructor.
+//! Initialize fPromtX and fPromtY to 0.
+//! Set fWindow to 0. 
+//!
+//! @param prgname
+//!    see Readline::Readline()
+//!
+//! @todo
+//!    Maybe we should add sanity check for fWindow==0 in the functions?
+//!
+ReadlineWindow::ReadlineWindow(const char *prgname) : Readline(prgname),
+    fWindow(0), fPromptX(0), fPromptY(0)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Set the window in which the readline prompt and all readline output
+//! is displayed. Sets the readline screen size (rl_set_screen_size)
+//! accoring to the size of the window.
+//!
+//! Setup all necessry callback functions. To redirect readline input
+//! and output properly.
+//!
+//! @param w
+//!    Pointer to a ncurses WINDOW.
+//
+void ReadlineWindow::SetWindow(WINDOW *w)
+{
+    if (!w)
+        return;
+
+    // Get size of the window
+    int width, height;
+    getmaxyx(w, height, width);
+
+    // Propagate the size to the readline library
+    Resize(width, height);
+
+    // Finally set the pointer to the panel in which we are supposed to
+    // operate
+    fWindow = w;
+}
+
+
+// --------------------------------------------------------------------------
+//
+//! Callback function for readlines rl_getc_function. Apart from redirecting
+//! the input from the window to the readline libarary, it also checks if
+//! the input forced scrolling of the window contents and in this case
+//! adapt fPromptY.
+//!
+//! @return
+//!    the character read by wgetch
+//
+/*
+int ReadlineWindow::Getc(FILE *)
+{
+    /// ====   It seems this is obsolete because we will get teh scrolling
+    //         from the continous call to event hook anyway
+
+    // Get size of the window
+    int lines, cols;
+    getmaxyx(fWindow, lines, cols);
+
+    // Get current cursor position
+    int x0, y0, y1, x1;
+    getyx(fWindow, y0, x0);
+
+    // Read a character from stream in window
+    const int c = wgetch(fWindow);
+
+    // Get new cursor position
+    getyx(fWindow, y1, x1);
+
+    // Find out whether the last character initiated a scroll
+    if (y0==lines-1 && y1==lines-1 && x1==0 && x0==cols-1)
+        fPromptY--;
+
+    // return character
+    return c;
+}
+*/
+
+// --------------------------------------------------------------------------
+//
+//! Store the current cursor position in fPromptX/Y
+//
+void ReadlineWindow::Startup()
+{
+    getyx(fWindow, fPromptY, fPromptX);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Move the cursor to the position stored in fPromptX/Y which should
+//! correspond to the beginning of the output line
+//
+void ReadlineWindow::RewindCursor() const
+{
+    wmove(fWindow, fPromptY, fPromptX);
+}
+
+// --------------------------------------------------------------------------
+//
+//! The event hook which is called regularly when a readline call is in
+//! progress. We use this to synchronously upadte our prompt (mainly
+//! the current cursor position) and refresh the screen, so that all
+//! changes get displayed soon.
+//!
+//! By default, this will be called at most ten times a second if there
+//! is no keyboard input.
+//
+void ReadlineWindow::EventHook(bool)
+{
+    Readline::EventHook();
+    Redisplay();
+    /*
+     * This doesn't work if the contents of the line changes, e.g. when
+     * the prompt is replaced
+
+    // Refresh the screen
+    Refresh();
+
+    // Now move the cursor to its expected position
+    int lines, cols;
+    getmaxyx(fWindow, lines, cols);
+
+    const int pos = fPromptY*cols + fPromptX + GetAbsCursor();
+    wmove(fWindow, pos/cols, pos%cols);
+
+    // Make the cursor movement visible on the screen
+    wrefresh(fWindow);
+    */
+
+    // The lines above are just a simplified version of Redisplay()
+    // which skips all the output.
+}
+
+// --------------------------------------------------------------------------
+//
+//! This basically implement displaying the whole line, starting with the
+//! prompt and the rl_line_buffer. It also checks if displaying it
+//! results in a scroll of the window and adapt fPromptY accordingly.
+//!
+//! The prompt is displayed in the color defined by fColor.
+//!
+//! Before the cursor position is finally set a screen refresh (Refresh())
+//! is initiated to ensure that nothing afterwards will change the cursor
+//! position. It might be necessary to overwrite this function.
+//!
+//! @todo fix docu
+//
+void ReadlineWindow::Redisplay()
+{
+    // Move to the beginning of the output
+    wmove(fWindow, fPromptY, fPromptX);
+
+    // Get site of the window
+    int lines, cols;
+    getmaxyx(fWindow, lines, cols);
+
+    const string prompt = GetPrompt();
+    const string buffer = GetBuffer();
+
+    // Issue promt and redisplay text
+    wattron(fWindow, fColor);
+    wprintw(fWindow, "%s", prompt.c_str());
+    wattroff(fWindow, fColor);
+    wprintw(fWindow, "%s", buffer.c_str());
+
+    // Clear everything after that
+    wclrtobot(fWindow);
+
+    // Calculate absolute position in window or beginning of output
+    int xy = fPromptY*cols + fPromptX;
+
+    // Calculate position of end of prompt
+    xy += prompt.length();
+
+    // Calculate position of cursor and end of output
+    const int cur = xy + GetCursor();
+    const int end = xy + buffer.size();
+
+    // Calculate if the above output scrolled the window and by how many lines
+    int scrolls = end/cols - lines + 1;
+
+    if (scrolls<0)
+        scrolls = 0;
+
+    fPromptY -= scrolls;
+
+    // new position
+    const int px = cur%cols;
+    const int py = scrolls>=1 ? cur/cols - scrolls : cur/cols;
+
+    // Make sure that whatever happens while typing the correct
+    // screen is shown (otherwise the top-panel disappears when
+    // we scroll)
+    Refresh();
+
+    // Move the cursor to the cursor position
+    wmove(fWindow, py, px);
+
+    // Make changes visible on screen
+    wrefresh(fWindow);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Callback function to display the finally compiled list of completion
+//! options. Adapts fPromtY for the number of scrolled lines.
+//!
+//! @param matches
+//!    A list with the matches found. The first element contains
+//!    what was completed. The length of the list is therefore
+//!    num+1.
+//!
+//! @param num
+//!    Number of possible completion entries in the list.
+//!
+//! @param max
+//!    maximum length of the entries
+//!
+//! @todo
+//!    Maybe we can use rl_outstream here if we find a way to redirect
+//!    the stream to us instead of a file.
+//
+void ReadlineWindow::CompletionDisplay(char **matches, int num, int max)
+{
+    // Increase maximum size by two to get gaps in between the columns
+    max += 2; // Two whitespaces in between the output
+
+    // Get size of window
+    int lines, cols;
+    getmaxyx(fWindow, lines, cols);
+
+    // Allow an empty space at the end of the lines for a '\n'
+    cols--;
+
+    // calculate the final number columns
+    const int ncols = cols / max;
+
+    // Compile a proper format string
+    ostringstream fmt;
+    fmt << "%-" << max << 's';
+
+    // loop over all entries and display them
+    int l=0;
+    for (int i=0; i<num; i++)
+    {
+        // Check if we have to put a line-break
+        if (i%ncols==0)
+        {
+            if ((max+0)*ncols < cols)
+                wprintw(fWindow, "\n");
+            l++;
+        }
+
+        // Display an entry
+        wprintw(fWindow, fmt.str().c_str(), matches[i+1]);
+    }
+
+    // Display an empty line after the list
+    if ((num-1)%ncols>0)
+        wprintw(fWindow, "\n");
+    wprintw(fWindow, "\n");
+
+    // Get new cursor position
+    int x, y;
+    getyx(fWindow, y, x);
+
+    // Clear everything behind the list
+    wclrtobot(fWindow);
+
+    // Adapt fPromptY for the number of scrolled lines if any.
+    if (y==lines-1)
+        fPromptY = lines-1;
+
+    // Display anything
+    wrefresh(fWindow);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Overwrites Shutdown() of Readline. After Readline::Prompt has
+//! returned a Redisplay() is forced to ensure a proper display of
+//! everything. Finally, the display line is ended by a \n.
+//!
+//! @param buf
+//!    The buffer returned by the readline call
+//
+void ReadlineWindow::Shutdown(const char *buf)
+{
+    // Move the cursor to the end of the total line entered by the user
+    // (the user might have pressed return in the middle of the line)...
+    int lines, cols;
+    getmaxyx(fWindow, lines, cols);
+
+    // Calculate absolute position in window or beginning of output
+    // We can't take a pointer to the buffer because rl_end is not
+    // valid anymore at the end of a readline call
+    int xy = fPromptY*cols + fPromptX + GetPrompt().size() + strlen(buf);
+    wmove(fWindow, xy/cols, xy%cols);
+
+    // ...and output a newline. We have to do the manually.
+    wprintw(fWindow, "\n");
+
+    // refresh the screen
+    wrefresh(fWindow);
+
+    // This might have scrolled the window
+    if (xy/cols==lines-1)
+        fPromptY--;
+}
Index: branches/testFACT++branch/src/ReadlineWindow.h
===================================================================
--- branches/testFACT++branch/src/ReadlineWindow.h	(revision 18277)
+++ branches/testFACT++branch/src/ReadlineWindow.h	(revision 18277)
@@ -0,0 +1,42 @@
+#ifndef FACT_ReadlineWindow
+#define FACT_ReadlineWindow
+
+#include "Readline.h"
+
+typedef struct _win_st WINDOW;
+
+class ReadlineWindow : public Readline
+{
+    WINDOW *fWindow; /// Pointer to the panel for the input stream
+
+    int fPromptX;    /// When the readline call is issued the x position at which the output will start is stored here
+    int fPromptY;    /// When the readline call is issued the y position at which the output will start is stored here
+
+    int fColor;      /// Color index in which the prompt should be displayed
+
+protected:
+    // The implementations of the callback funtions
+    //int  Getc(FILE *);
+    void Startup();
+    void Redisplay();
+    void EventHook(bool = false);
+    void CompletionDisplay(char **matches, int num, int max);
+
+    // Refresh the display before setting the cursor position
+    virtual void Refresh() { }
+
+    // Callback after readline has returned
+    void Shutdown(const char *buf);
+
+public:
+    ReadlineWindow(const char *prgname);
+
+    // Initialization
+    void SetWindow(WINDOW *w);
+    void SetColorPrompt(int col) { fColor = col; }
+
+    // Move cursor to start of last prompt
+    void RewindCursor() const;
+};
+
+#endif
Index: branches/testFACT++branch/src/RemoteControl.cc
===================================================================
--- branches/testFACT++branch/src/RemoteControl.cc	(revision 18277)
+++ branches/testFACT++branch/src/RemoteControl.cc	(revision 18277)
@@ -0,0 +1,103 @@
+#include "RemoteControl.h"
+
+// ==========================================================================
+
+bool RemoteControlImp::ProcessCommand(const std::string &str, bool change)
+{
+    if (fCurrentServer.empty())
+    {
+        const size_t p1 = str.find_first_of(' ');
+        const size_t p2 = str.find_first_of('/');
+
+        const bool is_cmd = p2!=string::npos && p1>p2;
+
+        string s = str;
+        if (is_cmd)
+            s = str.substr(0, p2);
+
+        if (p2<p1 && p2!=str.length()-1)
+        {
+            const string c = str.substr(p2+1);
+            return SendDimCommand(lout, s, c, !change);
+        }
+
+        if (HasServer(s))
+        {
+            if (!change)
+                return SendDimCommand(lout, str, "", !change);
+
+            fCurrentServer = s;
+            return true;
+        }
+
+        if (!change && is_cmd)
+            throw runtime_error("Unkown server '"+s+"'");
+
+        if (change)
+            lout << kRed << "Unkown server '" << s << "'" << endl;
+
+        return false;
+    }
+
+    if (!fCurrentServer.empty() && str=="..")
+    {
+        fCurrentServer = "";
+        return true;
+    }
+    return SendDimCommand(lout, fCurrentServer, str, !change);
+}
+
+// ==========================================================================
+
+#include "tools.h"
+
+string RemoteConsole::GetUpdatePrompt() const
+{
+    if (fImp->GetCurrentState()>=3)
+        return "";
+
+    // If we are continously flushing the buffer omit the buffer size
+    // If we are buffering show the buffer size
+    const string beg = GetLinePrompt();
+
+    // If we have not cd'ed to a server show only the line start
+    if (fCurrentServer.empty() || !fImp)
+        return beg + "> ";
+
+    // Check if we have cd'ed to a valid server
+    const State state = fImp->GetServerState(fCurrentServer);
+    if (state.index==-256)
+        return beg + "> ";
+
+    // The server
+    const string serv = "\033[34m\033[1m"+fCurrentServer+"\033[0m";
+
+    // If no match found or something wrong found just output the server
+    if (state.index<-1)
+        return beg + " " + serv + "> ";
+
+    // If everything found add the state to the server
+    return beg + " " + serv + ":\033[32m\033[1m" + state.name + "\033[0m> ";
+}
+
+string RemoteShell::GetUpdatePrompt() const
+{
+    // If we are continously flushing the buffer omit the buffer size
+    // If we are buffering show the buffer size
+    const string beg = GetLinePrompt();
+
+    // If we have not cd'ed to a server show only the line start
+    if (fCurrentServer.empty() || !fImp)
+        return beg + "> ";
+
+    const State state = fImp->GetServerState(fCurrentServer);
+    if (state.index==-256)
+        return beg + "> ";//Form("\n[%d] \033[34m\033[1m%s\033[0m> ", GetLine(), fCurrentServer.c_str());
+
+    // If no match found or something wrong found just output the server
+    if (state.index<-1)
+        return beg + " " + fCurrentServer + "> ";
+
+    // If everything found add the state to the server
+    return beg + " " + fCurrentServer + ":" + state.name + "> ";
+}
Index: branches/testFACT++branch/src/RemoteControl.h
===================================================================
--- branches/testFACT++branch/src/RemoteControl.h	(revision 18277)
+++ branches/testFACT++branch/src/RemoteControl.h	(revision 18277)
@@ -0,0 +1,599 @@
+#ifndef FACT_RemoteControl
+#define FACT_RemoteControl
+
+// **************************************************************************
+/** @class RemoteControlImp
+
+@brief This implements the basic functions of a remote control via dim
+
+Through a ServiceList object this object subscribes to all available
+SERVICE_LISTs  in the dim network. This allows to keep an up-to-date
+list of all servers and services. Its ProcessCommand member function
+allows to emit commands according to the services found in the network.
+Its infoHandler() is called as an update notifier from the ClientList
+object.
+
+**/
+// **************************************************************************
+#include <string>
+
+using namespace std;
+
+class RemoteControlImp
+{
+protected:
+    std::ostream &lin;           /// Output stream for local synchrounous output
+    std::ostream &lout;          /// Output stream for local synchrounous output
+
+    std::string fCurrentServer;  /// The server to which we currently cd'ed
+
+protected:
+    // Redirect asynchronous output to the output window
+    RemoteControlImp(std::ostream &out, std::ostream &in) : lin(out), lout(in)
+    {
+    }
+    virtual ~RemoteControlImp() { }
+    bool ProcessCommand(const std::string &str, bool change=true);
+
+    virtual bool HasServer(const std::string &) { return false; }
+    virtual bool SendDimCommand(ostream &, const std::string &, const std::string &, bool = false) { return false; }
+};
+
+// **************************************************************************
+/** @class RemoteControl
+
+@brief Implements a remote control based on a Readline class for the dim network
+
+This template implements all functions which overwrite any function from the
+Readline class. Since several derivatives of the Readline class implement
+different kind of Readline access, this class can be derived by any of them
+due to its template argument. However, the normal case will be
+deriving it from either Console or Shell.
+
+@tparam T
+   The base class for RemoteControl. Either Readlien or a class
+    deriving from it. This is usually either Console or Shell.
+
+**/
+// **************************************************************************
+#include "StateMachineDimControl.h"
+
+#include "InterpreterV8.h"
+#include "ReadlineColor.h"
+#include "Event.h"
+#include "tools.h"
+
+template <class T>
+class RemoteControl : public T, public RemoteControlImp, public InterpreterV8
+{
+protected:
+    StateMachineDimControl *fImp;
+
+    void SetSection(int s) { if (fImp) fImp->ChangeState(s); }
+
+    int Write(const Time &time, const std::string &txt, int qos=MessageImp::kMessage)
+    {
+        if (!fImp)
+            return 0;
+        return fImp ? fImp->Write(time, txt, qos) : MessageImp::Write(time, txt, qos);
+    }
+
+    void exitHandler(int code) { if (dynamic_cast<MainImp*>(fImp)) dynamic_cast<MainImp*>(fImp)->Stop(code); else exit(code); }
+
+    // ==================== Readline tab-completion =====================
+
+    static void append(std::string &str)
+    {
+        str.append("/");
+    }
+    static void chop(std::string &str)
+    {
+        const size_t p = str.find_first_of('/');
+        if (p!=string::npos)
+            str = str.substr(p+1);
+    }
+
+    // This funtion defines which generator should be called.
+    // If it returns 0 the standard readline generator are called.
+    // Otherwise set the right generator with rl_completion_matches.
+    char **Completion(const char *text, int start, int)
+    {
+        if (T::fScript=="java")
+        {
+            return T::Complete(JsGetCommandList(text, start), text);
+        }
+
+        // Get the whole buffer before the tab-position
+        const string b = string(T::GetBuffer());
+        const string s = b.substr(0, start);
+        const string l = Tools::Trim(s.c_str());
+        if (l.empty())
+        {
+            if (fCurrentServer.empty())
+            {
+                const size_t p1 = b.find_first_of(' ');
+                const size_t p2 = b.find_first_of('/');
+
+                if (p1==string::npos && p2!=string::npos)
+                    return T::Complete(GetCommandList(), text);
+
+                std::vector<std::string> v = GetServerList();
+                for_each(v.begin(), v.end(), RemoteControl::append);
+                return T::Complete(v, text);
+            }
+            else
+            {
+                std::vector<std::string> v = GetCommandList(fCurrentServer);
+                for_each(v.begin(), v.end(), RemoteControl::chop);
+                return T::Complete(v, text);
+            }
+        }
+        return T::Complete(GetCommandList(l), text);
+    }
+
+    void EventHook(bool newline)
+    {
+        if (fImp && !fImp->HasServer(fCurrentServer))
+            fCurrentServer = "";
+
+        T::EventHook(newline);
+    }
+
+    // ===== Interface to access the DIM network through the StateMachine ====
+
+    bool HasServer(const std::string &server) { return fImp ? fImp->HasServer(server) : false; }
+    vector<string> GetServerList() const { return fImp ? fImp->GetServerList() : vector<string>(); }
+    vector<string> GetCommandList(const string &server) const { return fImp ? fImp->GetCommandList(server) : vector<string>(); }
+    vector<string> GetCommandList() const { return fImp ? fImp->GetCommandList() : vector<string>(); }
+    int PrintStates(std::ostream &out, const std::string &serv="") const { return fImp ? fImp->PrintStates(out, serv) : 0; }
+    int PrintDescription(std::ostream &out, bool iscmd, const std::string &serv="", const std::string &service="") const
+    { return fImp ? fImp->PrintDescription(out, iscmd, serv, service) : 0; }
+    bool SendDimCommand(ostream &out, const std::string &server, const std::string &str, bool do_throw=false)
+    {
+        if (do_throw)
+            return fImp ? fImp->SendDimCommand(server, str, out) : false;
+
+        try
+        {
+            return fImp ? fImp->SendDimCommand(server, str, out) : false;
+        }
+        catch (const runtime_error &e)
+        {
+            lout << kRed << e.what() << endl;
+            return false;
+        }
+    }
+
+    // ============ Pseudo-callback interface for the JavaScrip engine =======
+
+    void  JsLoad(const std::string &)         { SetSection(-3); InterpreterV8::JsLoad(); }
+    void  JsStart(const std::string &)        { SetSection(-2); }
+    void  JsEnd(const std::string &)          { UnsubscribeAll(); InterpreterV8::JsEnd(); SetSection(-4); }
+    bool  JsSend(const std::string &str)      { return ProcessCommand(str, false); }
+    void  JsOut(const std::string &msg)       { lin << kDefault << msg << endl; }
+    void  JsWarn(const std::string &msg)      { lin << kYellow << msg << endl; }
+    void  JsResult(const std::string &msg)    { lin << kBlue << " = " << msg << '\n' << endl; }
+    void  JsPrint(const std::string &msg)     { if (fImp) fImp->Comment(msg); }
+    void  JsAlarm(const std::string &msg)     { if (fImp) fImp->Alarm(msg); }
+    void  JsException(const std::string &str) { if (fImp) fImp->Error(str.empty()?"|":("| "+str)); }
+    bool  JsHasState(int s) const             { return fImp && fImp->HasState(s); }
+    bool  JsHasState(const string &n) const   { return fImp && (fImp->GetStateIndex(n)!=StateMachineImp::kSM_NotAvailable); }
+    bool  JsSetState(int s)                   { if (!fImp || fImp->GetCurrentState()<2) return false; SetSection(s-4); return true; }
+    int   JsGetState(const string &n) const   { return fImp ? fImp->GetStateIndex(n) : StateMachineImp::kSM_NotAvailable; }
+    vector<State> JsGetStates(const string &server) { return fImp ? fImp->GetStates(server) : vector<State>(); }
+    set<Service> JsGetServices() { return fImp ? fImp->GetServiceList() : set<Service>(); }
+    vector<Description> JsGetDescription(const string &server) { return fImp ? fImp->GetDescription(server) : vector<Description>(); }
+    State JsGetCurrentState() const
+    {
+        if (!fImp)
+            return State();
+        const int idx = fImp->GetCurrentState();
+        return State(idx, fImp->GetStateName(idx), fImp->GetStateDescription(idx));
+    }
+    State JsState(const std::string &server)  { return fImp ? fImp->GetServerState(server) : State(-256, string()); }
+    bool  JsNewState(int s, const string &n, const string &c)
+    {
+        return fImp && fImp->AddStateName(s, n, c);
+    }
+
+    /*
+    void JsSleep(uint32_t ms)
+    {
+        const Time timeout = Time()+boost::posix_time::millisec(ms==0?1:ms);
+
+        T::Lock();
+
+        while (timeout>Time() && !T::IsScriptStopped())
+            usleep(1);
+
+        T::Unlock();
+    }*/
+
+    int JsWait(const string &server, int32_t state, uint32_t ms)
+    {
+        if (!fImp)
+        {
+            lout << kRed << "RemoteControl class not fully initialized." << endl;
+            T::StopScript();
+            return -1;
+        }
+
+        if (!HasServer(server))
+        {
+            lout << kRed << "Server '" << server << "' not found." << endl;
+            T::StopScript();
+            return -1;
+        }
+
+        T::Lock();
+
+        const Time timeout = ms<=0 ? Time(Time::none) : Time()+boost::posix_time::millisec(ms);
+
+        int rc = 0;
+        do
+        {
+            State st = fImp->GetServerState(server);
+            if (st.index==-256)
+            {
+                lout << kRed << "Server '" << server << "' disconnected." << endl;
+                T::StopScript();
+                return -1;
+            }
+            if (st.index==state)
+            {
+                rc = 1;
+                break;
+            }
+
+            usleep(1);
+        }
+        while (timeout>Time() && !T::IsScriptStopped());
+
+        T::Unlock();
+
+        return rc;
+    }
+
+    vector<Description> JsDescription(const string &service)
+    {
+        return fImp ? fImp->GetDescription(service) :  vector<Description>();
+    }
+
+    struct EventInfo
+    {
+        EventImp *ptr;
+        uint64_t counter;
+        Event data;
+        EventInfo(EventImp *p) : ptr(p), counter(0) { }
+    };
+
+    // Keep a copy of the data for access by V8
+    map<string, EventInfo> fInfo;
+    std::mutex fMutex;
+
+    pair<uint64_t, EventImp *> JsGetEvent(const std::string &service)
+    {
+        // This function is called from JavaScript
+        const lock_guard<mutex> lock(fMutex);
+
+        const auto it = fInfo.find(service);
+
+        // No subscription for this event available
+        if (it==fInfo.end())
+            return make_pair(0, static_cast<EventImp*>(NULL));
+
+        EventInfo &info = it->second;
+
+        // No event was received yet
+        if (info.counter==0)
+            return make_pair(0, static_cast<EventImp*>(NULL));
+
+        return make_pair(info.counter-1, (EventImp*)&info.data);
+    }
+
+    int Handle(const EventImp &evt, const string &service)
+    {
+        // This function is called from the StateMachine
+        fMutex.lock();
+
+        const auto it = fInfo.find(service);
+
+        // This should never happen... but just in case.
+        if (it==fInfo.end())
+        {
+            fMutex.unlock();
+            return StateMachineImp::kSM_KeepState;
+        }
+
+        EventInfo &info = it->second;
+
+        const uint64_t cnt = ++info.counter;
+        info.data = static_cast<Event>(evt);
+
+        fMutex.unlock();
+
+        JsHandleEvent(evt, cnt, service);
+
+        return StateMachineImp::kSM_KeepState;
+    }
+
+    void *JsSubscribe(const std::string &service)
+    {
+        if (!fImp)
+            return 0;
+
+        // This function is called from JavaScript
+        const lock_guard<mutex> lock(fMutex);
+
+        // Do not subscribe twice
+        if (fInfo.find(service)!=fInfo.end())
+            return 0;
+
+        EventImp *ptr = &fImp->Subscribe(service)(fImp->Wrap(bind(&RemoteControl<T>::Handle, this, placeholders::_1, service)));
+        fInfo.insert(make_pair(service, EventInfo(ptr)));
+        return ptr;
+    }
+
+    bool JsUnsubscribe(const std::string &service)
+    {
+        if (!fImp)
+            return false;
+
+        // This function is called from JavaScript
+        const lock_guard<mutex> lock(fMutex);
+
+        const auto it = fInfo.find(service);
+        if (it==fInfo.end())
+            return false;
+
+        fImp->Unsubscribe(it->second.ptr);
+        fInfo.erase(it);
+
+        return true;
+    }
+
+    void UnsubscribeAll()
+    {
+        // This function is called from JavaScript
+        const lock_guard<mutex> lock(fMutex);
+
+        for (auto it=fInfo.begin(); it!=fInfo.end(); it++)
+            fImp->Unsubscribe(it->second.ptr);
+
+        fInfo.clear();
+    }
+
+    // ===========================================================================
+
+
+public:
+    // Redirect asynchronous output to the output window
+    RemoteControl(const char *name) : T(name),
+        RemoteControlImp(T::GetStreamOut(), T::GetStreamIn()), fImp(0)
+    {
+    }
+
+    bool PrintGeneralHelp()
+    {
+        T::PrintGeneralHelp();
+        lout << " " << kUnderline << "Specific commands:\n";
+        lout << kBold << "   h,help <arg> " << kReset << "List help text for given server or command.\n";
+        lout << kBold << "   svc,services " << kReset << "List all services in the network.\n";
+        lout << kBold << "   st,states    " << kReset << "List all states in the network.\n";
+        lout << kBold << "   > <text>     " << kReset << "Echo <text> to the output stream\n";
+        lout << kBold << "   .s           " << kReset << "Wait for the state-machine to change to the given state.\n";
+        lout <<          "                "              "     .s <server> [<state> [<timeout> [<label>]]]\n";
+        lout <<          "                "              "<server>  The server for which state to wait (e.g. FTM_CONTROL)\n";
+        lout <<          "                "              "<state>   The state id (see 'states') for which to wait (e.g. 3)\n";
+        lout <<          "                "              "<imeout>  A timeout in millisenconds how long to wait (e.g. 500)\n";
+        lout <<          "                "              "<label>   A label (number) until which everything is skipped in case of timeout\n";
+        lout << kBold << "   .js file     " << kReset << "Execute a JavaScript\n";
+        if (!StateMachineDimControl::fIsServer)
+            lout << kBold << "   .java        " << kReset << "Start JavaScript interpreter\n";
+        lout << endl;
+        return true;
+    }
+
+    bool PrintCommands()
+    {
+        lout << endl << kBold << "List of commands:" << endl;
+        PrintDescription(lout, true);
+        return true;
+    }
+
+    // returns whether a command should be put into the history
+    bool Process(const std::string &str)
+    {
+        if (str.substr(0, 2)=="h " || str.substr(0, 5)=="help ")
+        {
+            const size_t p1 = str.find_first_of(' ');
+            const string svc = str.substr(p1+1);
+
+            const size_t p3 = svc.find_first_of('/');
+            const string s = svc.substr(0, p3);
+            const string c = p3==string::npos?"":svc.substr(p3+1);
+
+            lout << endl;
+            if (!fCurrentServer.empty())
+            {
+                if (PrintDescription(lout, true, fCurrentServer, svc)==0)
+                    lout << "   " << svc << ": <not found>" << endl;
+            }
+            else
+            {
+                if (PrintDescription(lout, true, s, c)==0)
+                    lout << "   <no matches found>" <<endl;
+            }
+
+            return true;
+        }
+
+        if (str.substr(0, 4)==".js ")
+        {
+            string opt(str.substr(4));
+
+            map<string,string> data = Tools::Split(opt, true);
+            if (opt.size()==0)
+            {
+                if (data.size()==0)
+                    lout << kRed << "JavaScript filename missing." << endl;
+                else
+                    lout << kRed << "Equal sign missing in argument '" << data.begin()->first << "'" << endl;
+
+                return true;
+            }
+
+            T::fScript = opt;
+
+            T::Lock();
+            JsRun(opt, data);
+            T::Unlock();
+
+            return true;
+        }
+
+        if (str==".java" && !StateMachineDimControl::fIsServer)
+        {
+            T::fScript = "java";
+
+            T::Lock();
+            JsRun("");
+            T::Unlock();
+
+            T::fScript = "";
+
+            return true;
+        }
+
+        if (str.substr(0, 3)==".s ")
+        {
+            istringstream in(str.substr(3));
+
+            int state=-100, ms=0;
+            string server;
+
+            in >> server >> state >> ms;
+            if (state==-100)
+            {
+                lout << kRed << "Couldn't parse state id in '" << str.substr(3) << "'" << endl;
+                return true;
+            }
+
+            T::Lock();
+            const int rc = JsWait(server, state, ms);
+            T::Unlock();
+
+            if (rc<0 || rc==1)
+                return true;
+
+            int label = -1;
+            in >> label;
+            if (in.fail() && !in.eof())
+            {
+                lout << kRed << "Invalid label in '" << str.substr(3) << "'" << endl;
+                T::StopScript();
+                return true;
+            }
+            T::SetLabel(label);
+
+            return true;
+        }
+
+        if (str[0]=='>')
+        {
+            fImp->Comment(Tools::Trim(str.substr(1)));
+            return true;
+        }
+
+        if (ReadlineColor::Process(lout, str))
+            return true;
+
+        if (T::Process(str))
+            return true;
+
+        if (str=="services" || str=="svc")
+        {
+            PrintDescription(lout, false);
+            return true;
+        }
+
+        if (str=="states" || str=="st")
+        {
+            PrintStates(lout);
+            return true;
+        }
+
+        return !ProcessCommand(str);
+    }
+
+    void SetReceiver(StateMachineDimControl &imp)
+    {
+        fImp = &imp;
+        fImp->SetStateCallback(bind(&InterpreterV8::JsHandleState, this, placeholders::_1, placeholders::_2));
+        fImp->SetInterruptHandler(bind(&InterpreterV8::JsHandleInterrupt, this, placeholders::_1));
+    }
+};
+
+
+
+// **************************************************************************
+/** @class RemoteStream
+
+ */
+// **************************************************************************
+#include "Console.h"
+
+class RemoteStream : public RemoteControl<ConsoleStream>
+{
+public:
+    RemoteStream(const char *name, bool null = false)
+        : RemoteControl<ConsoleStream>(name) { SetNullOutput(null); }
+};
+
+// **************************************************************************
+/** @class RemoteConsole
+
+@brief Derives the RemoteControl from Control and adds a proper prompt
+
+This is basically a RemoteControl, which derives through the template
+argument from the Console class. It enhances the functionality of
+the remote control with a proper updated prompt.
+
+ */
+// **************************************************************************
+
+class RemoteConsole : public RemoteControl<Console>
+{
+public:
+    RemoteConsole(const char *name, bool continous=false) :
+        RemoteControl<Console>(name)
+    {
+        SetContinous(continous);
+    }
+    string GetUpdatePrompt() const;
+};
+
+// **************************************************************************
+/** @class RemoteShell
+
+@brief Derives the RemoteControl from Shell and adds colored prompt
+
+This is basically a RemoteControl, which derives through the template
+argument from the Shell class. It enhances the functionality of
+the local control with a proper updated prompt.
+
+ */
+// **************************************************************************
+#include "Shell.h"
+
+class RemoteShell : public RemoteControl<Shell>
+{
+public:
+    RemoteShell(const char *name, bool = false) :
+        RemoteControl<Shell>(name)
+    {
+    }
+    string GetUpdatePrompt() const;
+};
+
+#endif
Index: branches/testFACT++branch/src/RowChecker.cc
===================================================================
--- branches/testFACT++branch/src/RowChecker.cc	(revision 18277)
+++ branches/testFACT++branch/src/RowChecker.cc	(revision 18277)
@@ -0,0 +1,114 @@
+/*
+ * RowChecker.cc
+ *
+ *  Created on: Dec 20, 2011
+ *      Author: lyard
+ */
+
+#include <fstream>
+#include <cstdlib>
+#include <iostream>
+#include <cstring>
+#include <sstream>
+
+using namespace std;
+
+
+//usage RowChecker <name of file> <size of header> <size of line> <mjdref> <givenLines>
+int main(int argc, char** argv)
+{
+
+    if (argc < 6)
+        return 0;
+
+    fstream file(argv[1]);
+
+    int headLen = atoi(argv[2]);
+    int lineWidth = atoi(argv[3]);
+    double mjdRef = atof(argv[4]);
+    int numLines = atoi(argv[5]);
+
+    int totalBytes = headLen;
+    file.seekp(headLen);
+
+    char* buf = new char[lineWidth];
+
+    double currentTime = 0;
+    char timeBuf[16];
+    int realNumRows = 0;
+
+    while (file.read(buf, lineWidth))
+    {
+        timeBuf[0] = buf[7];
+        timeBuf[1] = buf[6];
+        timeBuf[2] = buf[5];
+        timeBuf[3] = buf[4];
+        timeBuf[4] = buf[3];
+        timeBuf[5] = buf[2];
+        timeBuf[6] = buf[1];
+        timeBuf[7] = buf[0];
+        currentTime = reinterpret_cast<double*>(timeBuf)[0];
+
+        if (realNumRows >= numLines)
+        {
+            if (currentTime + mjdRef > 60000 || currentTime + mjdRef < 10000)
+                break;
+            if (currentTime + mjdRef > 20000 && currentTime + mjdRef < 50000)
+                break;
+        }
+//fix the time column if required.
+        if (currentTime > 50000 && currentTime < 60000)
+        {
+            currentTime -= 40587;
+            reinterpret_cast<double*>(timeBuf)[0] = currentTime;
+            file.seekp(totalBytes);
+            file.put(timeBuf[7]);
+            file.put(timeBuf[6]);
+            file.put(timeBuf[5]);
+            file.put(timeBuf[4]);
+            file.put(timeBuf[3]);
+            file.put(timeBuf[2]);
+            file.put(timeBuf[1]);
+            file.put(timeBuf[0]);
+            file.seekp(totalBytes + lineWidth);
+        }
+
+        realNumRows++;
+        totalBytes += lineWidth;
+    }
+    //now update the number of lines of the file
+    file.close();
+    file.open(argv[1]);
+    file.seekp(2880);
+    delete[] buf;
+    buf = new char[81];
+    buf[80] = 0;
+    bool changeDone = false;
+    int seeked = 2880;
+    if (realNumRows == numLines)
+        changeDone = true;
+
+    while (file.good() && !changeDone)
+    {
+        file.read(buf, 80);
+        string str(buf);
+
+        if (str.substr(0,9) == "NAXIS2  =")
+        {
+            ostringstream ss;
+            ss << realNumRows;
+            file.seekp(seeked + 30 - ss.str().size());
+            for (int i=0;i<ss.str().size();i++)
+                file.put(ss.str()[i]);
+            changeDone = true;
+            break;
+        }
+        seeked += 80;
+    }
+    if (!changeDone)
+        cout << -1;
+    else
+        cout << realNumRows;
+    file.close();
+    return realNumRows;
+}
Index: branches/testFACT++branch/src/Service.h
===================================================================
--- branches/testFACT++branch/src/Service.h	(revision 18277)
+++ branches/testFACT++branch/src/Service.h	(revision 18277)
@@ -0,0 +1,17 @@
+#ifndef FACT_Service
+#define FACT_Service
+
+struct Service
+{
+    std::string name;
+    std::string server;
+    std::string service;
+    std::string format;
+    bool   iscmd;
+};
+
+inline bool operator<(const Service& left, const Service& right)
+{
+    return left.name < right.name;
+}
+#endif
Index: branches/testFACT++branch/src/ServiceDim.h
===================================================================
--- branches/testFACT++branch/src/ServiceDim.h	(revision 18277)
+++ branches/testFACT++branch/src/ServiceDim.h	(revision 18277)
@@ -0,0 +1,46 @@
+// **************************************************************************
+/** @class EventDim
+
+@brief Implementation of an EventImp as a DimStampedInfo
+
+This is the implementation of an event which can be posted to a state
+machine via the DIM network.
+
+@todo
+- Add reference to DIM docu
+- improve docu
+
+*/
+// **************************************************************************
+#ifndef FACT_ServiceDim
+#define FACT_ServiceDim
+
+#include "EventImp.h"
+#include "dic.hxx"
+
+class ServiceDim : public EventImp, public DimStampedInfo
+{
+public:
+    ServiceDim(const std::string &name, DimInfoHandler *handler)
+        : EventImp(), DimStampedInfo(name.c_str(), (void*)NULL, 0, handler)
+    {
+    }
+    std::string GetName() const   { return const_cast<ServiceDim*>(this)->getName(); }
+    std::string GetFormat() const { return const_cast<ServiceDim*>(this)->getFormat(); }
+
+    const void *GetData() const   { return const_cast<ServiceDim*>(this)->getData(); }
+    size_t      GetSize() const   { return const_cast<ServiceDim*>(this)->getSize(); }
+
+    Time GetTime() const
+    {
+        // Must be in exactly this order!
+        const int tsec = const_cast<ServiceDim*>(this)->getTimestamp();
+        const int tms  = const_cast<ServiceDim*>(this)->getTimestampMillisecs();
+
+        return Time(tsec, tms*1000);
+    }
+
+    int GetQoS() const { return const_cast<ServiceDim*>(this)->getQuality(); }
+};
+
+#endif
Index: branches/testFACT++branch/src/ServiceList.cc
===================================================================
--- branches/testFACT++branch/src/ServiceList.cc	(revision 18277)
+++ branches/testFACT++branch/src/ServiceList.cc	(revision 18277)
@@ -0,0 +1,782 @@
+// **************************************************************************
+/** @class ServiceList
+
+@brief Maintains a list of all servers and services available in the Dim nbetwork
+
+The idea of this class is to maintain a list of servers and services
+available in the Dim network. The servers are retrieved by subscribing to
+DIS_DNS/SERVER_LIST. The services are retrieved by subscribing to all
+servers SERVICE_LIST service.
+
+The server names and the corresponidng DimInfo ovjects for their service
+lists are stored in fServerList.
+
+The services of all servers are stored in the fServiceList.
+
+From the services a lookup table fFormatList is created storing the
+received formats of all services/commands. The format list is only
+updated. So it might happen that formats for commands not available
+anymore are still in the list.
+
+Whether commands or services are stored can be selected in the constructor
+by the type argument. Use "CMD" for commands and "" for services.
+
+
+@todo
+- Resolve the dependancy on WindowLog, maybe we can issue the log-messages
+  via MessageImp or we provide more general modfiers (loike in MLogManip)
+- Maybe we also get updates (+/-) on the SERVCIE_LIST?
+- check if we really need our own logging stream
+- Implement fType=="*"
+
+*/
+// **************************************************************************
+#include "ServiceList.h"
+
+#include <sstream>
+
+#include "WindowLog.h"
+#include "Converter.h"
+
+#include "tools.h"
+#include "Time.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! Instantiates the default output-stream, subscribes to the Dim service
+//! DIS_DNS/SERVER_LIST, which is supposed to contain all servers available
+//! in the network, sets fType to type and inistialises fHandler with 0
+//!
+//! @param type
+//!    The type of rows which is filtered out of the retrieved server list.
+//!    Use "CMD" for commands and "" for services.
+//!
+//! @param out
+//!    A log-stream to which errors are sent. This however is something
+//!    which should not happen anyway.
+//
+ServiceList::ServiceList(const char *type, ostream &out) :
+    wout(out), fDimServers("DIS_DNS/SERVER_LIST", const_cast<char*>(""), this),
+    fType(type), fHandler(0)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Instantiates the default output-stream, subscribes to the Dim service
+//! DIS_DNS/SERVER_LIST, which is supposed to contain all servers available
+//! in the network, sets fType to "CMD" and inistialises fHandler with 0
+//!
+//! @param out
+//!    A log-stream to which errors are sent. This however is something
+//!    which should not happen anyway.
+//
+ServiceList::ServiceList(ostream &out) :
+    wout(out), fDimServers("DIS_DNS/SERVER_LIST", const_cast<char*>(""), this),
+    fType(""), fHandler(0)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Delete the allocated memory from fServerList
+//
+ServiceList::~ServiceList()
+{
+    for (ServerMap::iterator i=fServerList.begin(); i!=fServerList.end(); i++)
+    {
+            delete i->second.first;
+            delete i->second.second;
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! The infoHandler which is called when an update to one of our subscribed
+//! services is available. If it is the service list, it calls
+//! ProcessServerList() and ProcessServiceList() otherwise.
+//!
+//! After the update has been processed the infoHandler() of fHandler
+//! is called if fHandler is available to signal an update to a parent
+//! class.
+//
+void ServiceList::infoHandler()
+{
+    if (getInfo()==&fDimServers)
+        ProcessServerList();
+    else
+        ProcessServiceList(*getInfo());
+
+    if (fHandler)
+    {
+        fHandler->itsService = 0;
+        fHandler->infoHandler();
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! A helper to shorten the call to create a DimInfo.
+//!
+//! @param str
+//!    name of the server to which we want to subscribe
+//!
+//! @param svc
+//!    name of the servic on the server to which we want to subscribe
+//!
+//! @returns
+//!    a pointer to the newly created DimInfo
+//!
+DimInfo *ServiceList::CreateDimInfo(const string &str, const string &svc) const
+{
+    return new DimInfo((str+'/'+svc).c_str(),
+                       const_cast<char*>(""),
+                       const_cast<ServiceList*>(this));
+}
+
+// --------------------------------------------------------------------------
+//
+//! This function processes the update of the DIS_DNS/SERVER_LIST update.
+//! After this function the server list should be up-to-date again.
+//!
+//! For each new server a SERVER/SERVICE_LIST service subscription is
+//! created and stored in the fServerList. For each removed server
+//! the corresponding object are deleted, as well as the corresponding
+//! entries from the fServiceList.
+//!
+void ServiceList::ProcessServerList()
+{
+    // Get the received string from the handler
+    const string str = fDimServers.getString();
+
+    // Check if it starts with + or -
+    if (str[0]!='-' && str[0]!='+')
+    {
+        // If it doesn't start with + or - remove all existing servers
+        // we have received a full server list
+        for (ServerMap::iterator i=fServerList.begin(); i!=fServerList.end(); i++)
+        {
+            delete i->second.first;
+            delete i->second.second;
+
+            ServiceMap::iterator x = fServiceList.find(i->first);
+            fServiceList.erase(x);
+            //wout << "Delete: " << i->first << endl;
+        }
+
+        fServerList.clear();
+    }
+
+    // Create a stringstream to tokenize the received string
+    stringstream stream(str);
+
+    // Loop over the seperating tokens
+    string buffer;
+    while (getline(stream, buffer, '|'))
+    {
+        // The first part before the first @ is the server name
+        const string server = buffer.substr(0, buffer.find_first_of('@'));
+        if (server.empty())
+            continue;
+
+        // If it starts with a - we have to remove an entry
+        if (server[0]=='-')
+        {
+            const string trunc = server.substr(1);
+
+            // Check if this server is not found in the list.
+            // This should never happen if Dim works reliable
+            const ServerMap::iterator v = fServerList.find(trunc);
+            if (v==fServerList.end())
+            {
+                wout << kRed << "Server '" << trunc << "' not in list as it ought to be." << endl;
+                continue;
+            }
+
+            // Remove the server from the server list
+            delete v->second.first;
+            delete v->second.second;
+            fServerList.erase(v);
+
+            // Remove the server from the command list
+            ServiceMap::iterator w = fServiceList.find(trunc);
+            fServiceList.erase(w);
+
+            wout << " -> " << Time().GetAsStr() << " - " << trunc << "/SERVICE_LIST: Disconnected." << endl;
+            //wout << "Remove: " << server << endl;
+            continue;
+        }
+
+        // If it starts with a + we have to add an entry
+        if (server[0]=='+')
+        {
+            const string trunc = server.substr(1);
+
+            // Check if this server is already in the list.
+            // This should never happen if Dim works reliable
+            const ServerMap::iterator v = fServerList.find(trunc);
+            if (v!=fServerList.end())
+            {
+                wout << kRed << "Server '" << trunc << "' in list not as it ought to be." << endl;
+                continue;
+            }
+
+            // Add the new server to the server list
+            fServerList[trunc] = make_pair(CreateSL(trunc), CreateFMT(trunc));
+
+            wout << " -> " << Time().GetAsStr() << " - " << trunc << "/SERVICE_LIST: Connected." << endl;
+            //wout << "Add   : " << server << endl;
+            continue;
+        }
+
+        // In any other case we just add the entry to the list
+        fServerList[server] = make_pair(CreateSL(server), CreateFMT(server));
+        //wout << "Add  0: " << server << endl;
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! Process an update of the SERVICE_LIST service of the given DimInfo
+//!
+//! All services found are stored in the fServiceList map to be accessible
+//! through the server name. Their format is format is stored in the
+//! fFormatList. Note, that the list if only updated. So it will also
+//! contain services which are not available anymore. For an up-to-date
+//! list of service use fServiceList
+//!
+//! Only entries matching the fType data member are stored.
+//!
+//! @todo
+//!    Make sure that we do not receive +/- updates on the SERVICE_LIST
+//!    like on the SERVER_LIST
+//!
+void ServiceList::ProcessServiceList(DimInfo &info)
+{
+    const string str = info.getString();
+    if (str.empty())
+        return;
+
+    // Get the name of the service
+    string buffer = info.getName();
+
+    if (buffer.find("SERVICE_DESC")!=buffer.length()-12)
+    {
+        // Get the server name from the service name
+        const string server = buffer.substr(0, buffer.find_first_of('/'));
+
+        // Initialize the entry with an empty list
+        if (str[0]!='+')
+            fServiceList[server] = vector<string>();
+
+        // For easy and fast access get the corresponding reference
+        vector<string> &list = fServiceList[server];
+
+        // Tokenize the stream into lines
+        stringstream stream(str);
+        while (getline(stream, buffer, '\n'))
+        {
+            if (buffer.empty())
+                continue;
+
+            // Get the type and compare it with fType
+            const string type = buffer.substr(buffer.find_last_of('|')+1);
+            if (type!=fType)
+                continue;
+
+            // Get format, name and command name
+            const string fmt  = buffer.substr(buffer.find_first_of('|')+1, buffer.find_last_of('|')-buffer.find_first_of('|')-1);
+            const string name = buffer.substr(buffer.find_first_of('/')+1, buffer.find_first_of('|')-buffer.find_first_of('/')-1);
+            const string cmd  = buffer.substr(0, buffer.find_first_of('|'));
+
+            // Add name the the list
+            list.push_back(name);
+
+            // Add format to the list
+            fFormatList[cmd] = fmt;
+        }
+    }
+    else
+    {
+        fDescriptionMap.clear();
+
+        stringstream stream(str);
+        while (getline(stream, buffer, '\n'))
+        {
+            if (buffer.empty())
+                continue;
+
+            const vector<Description> v = Description::SplitDescription(buffer);
+
+            const string svc = v[0].name;
+
+            fDescriptionMap[svc]  = v[0].comment;
+            fDescriptionList[svc] = vector<Description>(v.begin()+1, v.end());
+        }
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! @returns
+//!    the list of servers as a vector of strings.
+//
+vector<string> ServiceList::GetServerList() const
+{
+    vector<string> v;
+    for (ServerMap::const_iterator i=fServerList.begin(); i!=fServerList.end(); i++)
+        v.push_back(i->first);
+
+    return v;
+}
+
+vector<string> ServiceList::GetServiceList(const std::string &server) const
+{
+    const ServiceMap::const_iterator m = fServiceList.find(server);
+    return m==end() ? vector<string>() : m->second;
+}
+
+vector<string> ServiceList::GetServiceList() const
+{
+    vector<string> vec;
+    for (ServerMap::const_iterator i=fServerList.begin(); i!=fServerList.end(); i++)
+    {
+        const string server = i->first;
+
+        const vector<string> v = GetServiceList(server);
+
+        for (vector<string>::const_iterator s=v.begin(); s<v.end(); s++)
+            vec.push_back(server+"/"+*s);
+    }
+
+    return vec;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Get the format of a command or service
+//!
+//! @param service
+//!    full qualified service name, e.g. SERVER/EXIT
+//!
+//! @returns
+//!    the format corresponding to the given service. If the service is not
+//!    found an empty string is returned.
+//
+string ServiceList::GetFormat(const string &service) const
+{
+    const StringMap::const_iterator i = fFormatList.find(service);
+    return i==fFormatList.end() ? "" : i->second;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Get the format of a command or service
+//!
+//! @param server
+//!     the server name, e.g. SERVER
+//!
+//! @param name
+//!     the service name, e.g. EXIT
+//!
+//! @returns
+//!    the format corresponding to the given service. If the service is not
+//!    found an empty string is returned.
+//
+string ServiceList::GetFormat(const string &server, const string &name) const
+{
+    return GetFormat(server+'/'+name);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Get the Description vector of a command or service
+//!
+//! @param service
+//!    full qualified service name, e.g. SERVER/EXIT
+//!
+//! @returns
+//!    a vector of Description objects corresponding to the arguments
+//!
+//
+vector<Description> ServiceList::GetDescriptions(const string &service) const
+{
+    const DescriptionMap::const_iterator i = fDescriptionList.find(service);
+    return i==fDescriptionList.end() ? vector<Description>() : i->second;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Get the Description vector of a command or service
+//!
+//! @param server
+//!     the server name, e.g. SERVER
+//!
+//! @param name
+//!     the service name, e.g. EXIT
+//!
+//! @returns
+//!    a vector of Description objects corresponding to the arguments
+//
+vector<Description> ServiceList::GetDescriptions(const string &server, const string &name) const
+{
+    return GetDescriptions(server+'/'+name);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Get a description describing the given command or service if available.
+//!
+//! @param service
+//!    full qualified service name, e.g. SERVER/EXIT
+//!
+//! @returns
+//!    string with the stored comment
+//!
+//
+string ServiceList::GetComment(const string &service) const
+{
+    const StringMap::const_iterator i = fDescriptionMap.find(service);
+    return i==fDescriptionMap.end() ? "" : i->second;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Get a description describing the given command or service if available.
+//!
+//! @param server
+//!     the server name, e.g. SERVER
+//!
+//! @param name
+//!     the service name, e.g. EXIT
+//!
+//! @returns
+//!    string with the stored comment
+//
+string ServiceList::GetComment(const string &server, const string &name) const
+{
+    return GetComment(server+"/"+name);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Checks if a server is existing.
+//!
+//! @param name
+//!     Name of a server, e.g. DIS_DNS
+//!
+//! @returns
+//!    true if the server is found in fServiceList, false otherwise
+//
+bool ServiceList::HasServer(const string &name) const
+{
+    return fServiceList.find(name)!=end();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Checks if a given service is existing.
+//!
+//! @param server
+//!     Name of a server, e.g. DIS_DNS
+//!
+//! @param service
+//!     Name of a service, e.g. EXIT
+//!
+//! @returns
+//!    true if the service is found in fServiceList, false otherwise.
+//
+bool ServiceList::HasService(const string &server, const string &service) const
+{
+    ServiceMap::const_iterator v = fServiceList.find(server);
+    if (v==end())
+        return false;
+
+    const vector<string> &w = v->second;
+    return find(w.begin(), w.end(), service)!=w.end();
+}
+
+bool ServiceList::HasService(const string &svc) const
+{
+    const size_t p = svc.find_first_of('/');
+    if (p==string::npos)
+        return false;
+
+    return HasService(svc.substr(0, p), svc.substr(p+1));
+}
+
+// --------------------------------------------------------------------------
+//
+//! Returns an iterator to the begin of ta vector<string> which will
+//! contain the service names of the given server.
+//!
+//! @param server
+//!     Name of a server, e.g. DIS_DNS
+//!
+//! @returns
+//!    an iterator to the vector of strings with the service names
+//!    for the given server. If none is found it returns
+//!    vector<string>().end()
+//
+vector<string>::const_iterator ServiceList::begin(const string &server) const
+{
+    ServiceMap::const_iterator i = fServiceList.find(server);
+    if (i==end())
+        return vector<string>().end();
+
+    return i->second.begin();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Returns an iterator to the end of ta vector<string> which will
+//! contain the service names of the given server.
+//!
+//! @param server
+//!     Name of a server, e.g. DIS_DNS
+//!
+//! @returns
+//!     an iterator to the vector of strings with the service names
+//!    for the given server. If none is found it returns
+//!    vector<string>().end()
+//
+vector<string>::const_iterator ServiceList::end(const string &server) const
+{
+    ServiceMap::const_iterator i = fServiceList.find(server);
+    if (i==end())
+        return vector<string>().end();
+
+    return i->second.end();
+}
+
+
+// --------------------------------------------------------------------------
+//
+//! Print the stored list of servers to the given stream.
+//!
+//! @param out
+//!    ostream to which the server names stored in fServerList are dumped
+//!
+void ServiceList::PrintServerList(ostream &out) const
+{
+    out << endl << kBold << "ServerList:" << endl;
+
+    for (ServerMap::const_iterator i=fServerList.begin(); i!=fServerList.end(); i++)
+    {
+        const string &server = i->first;
+        DimInfo *ptr1 = i->second.first;
+        DimInfo *ptr2 = i->second.second;
+
+        out << " " << server << " " << ptr1->getName() << "|" << ptr2->getName() << endl;
+    }
+    out << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Print the stored list of services to the given stream.
+//!
+//! @param out
+//!    ostream to which the services names stored in fServiceList are dumped
+//!
+void ServiceList::PrintServiceList(ostream &out) const
+{
+    out << endl << kBold << "ServiceList:" << endl;
+
+    for (ServiceMap::const_iterator i=fServiceList.begin(); i!=fServiceList.end(); i++)
+    {
+        const string &server = i->first;
+        const vector<string> &lst = i->second;
+
+        out << " " << server << endl;
+
+        for (vector<string>::const_iterator j=lst.begin(); j!=lst.end(); j++)
+            out << "  " << *j << " [" << GetFormat(server, *j) << "]" << endl;
+    }
+    out << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Print the full available documentation (description) of all available
+//! services or comments to the the given stream.
+//!
+//! @param out
+//!    ostream to which the output is send.
+//!
+//! @param serv
+//!    if a server is given, only the information for this server is printed
+//!
+//! @param service
+//!    if a service is given, only information for this service is printed
+//
+int ServiceList::PrintDescription(std::ostream &out, const string &serv, const string &service) const
+{
+    int rc = 0;
+    for (ServiceMap::const_iterator i=fServiceList.begin(); i!=fServiceList.end(); i++)
+    {
+        const string &server = i->first;
+
+        if (!serv.empty() && server!=serv)
+            continue;
+
+        out << kRed << "----- " << server << " -----" << endl;
+
+        const vector<string> &lst = i->second;
+        for (vector<string>::const_iterator s=lst.begin(); s!=lst.end(); s++)
+        {
+            if (!service.empty() && *s!=service)
+                continue;
+
+            rc++;
+
+            out << " " << *s;
+
+            const string fmt = GetFormat(server, *s);
+            if (!fmt.empty())
+                out << '[' << fmt << ']';
+
+            const string svc = server + '/' + *s;
+
+            const DescriptionMap::const_iterator v = fDescriptionList.find(svc);
+            if (v==fDescriptionList.end())
+            {
+                out << endl;
+                continue;
+            }
+
+            for (vector<Description>::const_iterator j=v->second.begin();
+                 j!=v->second.end(); j++)
+                out << " <" << j->name << ">";
+            out << endl;
+
+            const StringMap::const_iterator d = fDescriptionMap.find(svc);
+            if (d!=fDescriptionMap.end() && !d->second.empty())
+                out << "    " << d->second << endl;
+
+            for (vector<Description>::const_iterator j=v->second.begin();
+                 j!=v->second.end(); j++)
+            {
+                out << "    " << kGreen << j->name;
+                if (!j->comment.empty())
+                    out << kReset << ": " << kBlue << j->comment;
+                if (!j->unit.empty())
+                    out << kYellow << " [" << j->unit << "]";
+                out << endl;
+            }
+        }
+        out << endl;
+    }
+
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Request a SERVER_LIST from the name server and a SERVICE_LIST from all
+//! servers in the list. Dumps the result to the given ostream.
+//!
+//! @param out
+//!    ostream to which the received info is redirected
+//!
+void ServiceList::DumpServiceList(ostream &out)
+{
+    DimCurrentInfo info1("DIS_DNS/SERVER_LIST", const_cast<char*>(""));
+
+    stringstream stream(info1.getString());
+
+    string buffer;
+    while (getline(stream, buffer, '|'))
+    {
+        const string server = buffer.substr(0, buffer.find_first_of('@'));
+        if (server.empty())
+            continue;
+
+        out << kBold << " " << server << endl;
+
+        DimCurrentInfo info2((server+"/SERVICE_LIST").c_str(), const_cast<char*>(""));
+
+        string buffer2;
+
+        stringstream stream2(info2.getString());
+        while (getline(stream2, buffer2, '\n'))
+        {
+            if (buffer2.empty())
+                continue;
+
+            out << "  " << buffer2 << endl;
+        }
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! Tries to send a dim command according to the arguments.
+//! The command given is evaluated according to the available format string.
+//!
+//! @param lout
+//!    the ostream to which errors and debug output is redirected
+//!
+//! @param server
+//!    The name of the server to which the command should be send, e.g. DRIVE
+//!
+//! @param str
+//!    Command and data, eg "TRACK 12.5 13.8"
+//!
+//! @returns
+//!    If parsing the string was successfull and the command exists in the
+//!    network true is returned, false otherwise.
+//!
+bool ServiceList::SendDimCommand(ostream &lout, const string &server, const string &str) const
+{
+    // Find the delimiter between the command name and the data
+    size_t p0 = str.find_first_of(' ');
+    if (p0==string::npos)
+        p0 = str.length();
+
+    // Get just the command name separated from the data
+    const string name = str.substr(0, p0);
+
+    // Compile the command which will be sent to the state-machine
+    const string cmd = server + '/' + name;
+
+    if (!HasService(server, name))
+    {
+        lout << kRed << "Unkown command '" << cmd << "'" << endl;
+        return false;
+    }
+
+    // Get the format of the event data
+    const string fmt = GetFormat(cmd);
+
+    // Convert the user entered data according to the format string
+    // into a data block which will be attached to the event
+    const Converter conv(lout, fmt, false);
+    if (!conv)
+    {
+        lout << kRed << "Couldn't properly parse the format... ignored." << endl;
+        return false;
+    }
+
+    try
+    {
+        lout << kBlue << cmd;
+        const vector<char> v = conv.GetVector(str.substr(p0));
+        lout << endl;
+
+        const int rc = DimClient::sendCommand(cmd.c_str(), (void*)v.data(), v.size());
+        if (rc)
+            lout << kGreen << "Command " << cmd << " emitted successfully to DimClient." << endl;
+        else
+            lout << kRed << "ERROR - Sending command " << cmd << " failed." << endl;
+    }
+    catch (const std::runtime_error &e)
+    {
+        lout << endl << kRed << e.what() << endl;
+        return false;
+    }
+
+    return true;
+}
Index: branches/testFACT++branch/src/ServiceList.h
===================================================================
--- branches/testFACT++branch/src/ServiceList.h	(revision 18277)
+++ branches/testFACT++branch/src/ServiceList.h	(revision 18277)
@@ -0,0 +1,94 @@
+#ifndef FACT_ServiceList
+#define FACT_ServiceList
+
+#include <map>
+#include <vector>
+#include <string>
+#include <iostream>
+
+#include "dic.hxx"
+#include "dis.hxx"
+
+#include "Description.h"
+
+class ServiceList : public DimClient
+{
+public:
+    typedef std::map<const std::string, std::pair<DimInfo*, DimInfo*>> ServerMap;
+    typedef std::map<const std::string, std::vector<std::string>>      ServiceMap;
+    typedef std::map<const std::string, std::string>                   StringMap;
+    typedef std::map<const std::string, std::vector<Description>>      DescriptionMap;
+
+private:
+    std::ostream &wout;        /// stream for redirection of the output
+
+    DimInfo fDimServers;       /// A DimInfo to retrieve the SERVER_LIST from teh DNS server
+
+    const std::string fType;   /// A filter for the type of the services to be collected, e.g. CMD
+
+    ServerMap      fServerList;      /// A map storing server names and a DimInfo for their SERVICE_LIST
+    ServiceMap     fServiceList;     /// A map storing server names and vector with all their available commands
+    StringMap      fFormatList;      /// A map storing all commands and their format strings
+    StringMap      fDescriptionMap;  /// A map storing all descriptions for commands and services
+    DescriptionMap fDescriptionList; /// A map storing all descriptions for arguments of command and services
+
+    DimInfoHandler *fHandler;  /// A callback to signal updates
+
+    DimInfo *CreateDimInfo(const std::string &str, const std::string &svc) const;
+
+    DimInfo *CreateSL(const std::string &str) const { return CreateDimInfo(str, "SERVICE_LIST"); }
+    DimInfo *CreateFMT(const std::string &str) const { return CreateDimInfo(str, "SERVICE_DESC"); }
+
+    void ProcessServerList();
+    void ProcessServiceList(DimInfo &info);
+
+    void infoHandler();
+
+public:
+    ServiceList(const char *type, std::ostream &out=std::cout);
+    ServiceList(std::ostream &out=std::cout);
+    ~ServiceList();
+
+    void SetHandler(DimInfoHandler *handler=0) { fHandler=handler; }
+
+    std::vector<std::string> GetServerList() const;
+    std::vector<std::string> GetServiceList() const;
+    std::vector<std::string> GetServiceList(const std::string &server) const;
+
+    bool HasServer(const std::string &name) const;
+    bool HasService(const std::string &server, const std::string &service) const;
+    bool HasService(const std::string &service) const;
+
+    ServiceMap::const_iterator begin() const { return fServiceList.begin(); }
+    ServiceMap::const_iterator end() const  { return fServiceList.end(); }
+
+    std::vector<std::string>::const_iterator begin(const std::string &server) const;
+    std::vector<std::string>::const_iterator end(const std::string &server) const;
+
+    std::string GetFormat(const std::string &server, const std::string &name) const;
+    std::string GetFormat(const std::string &service) const;
+
+    std::string GetComment(const std::string &server, const std::string &name) const;
+    std::string GetComment(const std::string &service) const;
+
+    std::vector<Description> GetDescriptions(const std::string &server, const std::string &name) const;
+    std::vector<Description> GetDescriptions(const std::string &service) const;
+
+    void PrintServerList(std::ostream &out) const;
+    void PrintServiceList(std::ostream &out) const;
+    int  PrintDescription(std::ostream &out, const std::string &serv="", const std::string &svc="") const;
+    void PrintServerList() const { PrintServerList(wout); }
+    void PrintServiceList() const { PrintServiceList(wout); }
+    int  PrintDescription(const std::string &serv="", const std::string &svc="") const { return PrintDescription(wout, serv, svc); }
+
+    static void DumpServiceList(std::ostream &out);
+    void DumpServiceList() const { DumpServiceList(wout); }
+
+    bool SendDimCommand(std::ostream &lout, const std::string &server, const std::string &str) const;
+    bool SendDimCommand(const std::string &server, const std::string &str) const
+    {
+        return SendDimCommand(std::cout, server, str);
+    }
+};
+
+#endif
Index: branches/testFACT++branch/src/Shell.cc
===================================================================
--- branches/testFACT++branch/src/Shell.cc	(revision 18277)
+++ branches/testFACT++branch/src/Shell.cc	(revision 18277)
@@ -0,0 +1,513 @@
+// **************************************************************************
+/** @class Shell
+
+@brief Implementation of a console based user shell with an input and output window
+
+Shell is based on the ReadlineWindow class. It creates two windows
+(panels) using ncurses which are used for input and output. The output
+window panel is displayed on top of the input panel, but can be hidden
+for example by pressing F1.
+
+The idea is that continous messages like logging messages do not interfere
+with the input area, although one still has both diplayed in the same
+console window.
+
+To get a list of the command and functions supported by Shell
+type 'h' or 'help' at a command line prompt.
+
+The usage is quite simple. Instantiate an object of Shell with the
+programname as an argument. For its meaning see the base class
+documentation Readline::Readline(). The created input- and output-
+stream can be accessed through GetStreamIn() and GetStreamOut()
+whihc are both ostreams, one redirected to the input window and the
+other one redirected to the output window. Especially, GetStreamIn()
+should not be used while the Readline prompt is in progress, but can for
+example be used to display errors about what was entered.
+
+The recommanded way of usage is:
+
+\code
+
+   static Shell shell("myprog"); // readline will read the myprog.his history file
+
+   while (1)
+   {
+        string txt = shell.Prompt("prompt> ");
+        if (txt=="quit)
+           break;
+
+        // ... do something ...
+
+        shell.AddHistory(txt);
+   }
+
+   // On destruction redline will write the current history to the file
+   // By declaring the Shell static the correct terminal is restored even
+   // the program got killed (not if killed with SIGABRT)
+
+\endcode
+
+If for some reason the terminal is not correctly restored type (maybe blindly)
+<I>reset</I> in your console. This should restor everything back to normal.
+
+@section References
+
+ - <A HREF="http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html">GNU Readline</A>
+ - <A HREF="http://www.gnu.org/software/ncurses">GNU Ncurses</A>
+
+
+@todo
+ - Introduce the possibility to scroll in both windows
+ - Add redisplay functionality for both panels if the console was resized
+
+*/
+// **************************************************************************
+#include "Shell.h"
+
+#include <fstream>
+#include <iostream>
+
+#include <signal.h>    // SIGWINCH
+#include <sys/wait.h>  // waitpid
+#include <sys/ioctl.h> // ioctl
+
+#include <panel.h>
+
+#define FORK_ALLOWED
+
+using namespace std;
+
+Shell *Shell::This = 0;
+
+// --------------------------------------------------------------------------
+//
+//! This initializes the Ncurses environment. Since the ncurses environment
+//! is global only one instance of this class is allowed.
+//!
+//! The first 8 color pairs (COLOR_PAIR) are set to the first 8 color
+//! with default background.
+//!
+//! The shells windows and panels are created. And their pointers are
+//! propagated to the two associated WindowLog streams.
+//!
+//! Also some key bindings are initialized.
+//
+Shell::Shell(const char *prgname) : ReadlineWindow(prgname),
+    fPanelHeight(13), fIsVisible(1), fLine(0)
+{
+    if (stdscr!=0)
+    {
+        endwin();
+        cout << "ERROR - Only one instance of class Shell is allowed." << endl;
+        exit(-1);
+    }
+
+    This = this;
+
+    // ---------------------- Setup ncurses -------------------------
+
+    initscr();		      // Start curses mode
+
+    cbreak();		      // Line buffering disabled, Pass on
+    noecho();                 // Switch off echo mode
+    nonl();                   // Associate return with CR
+
+    intrflush(stdscr, FALSE);
+    keypad(stdscr, FALSE);    // Switch off keymapping for function keys
+
+    start_color();            // Initialize ncurses colors
+    use_default_colors();     // Assign terminal default colors to -1
+    //assume_default_colors(-1, -1); // standard terminal colors assigned to pair 0
+
+    // Setup colors
+    for (int i=1; i<8; i++)
+        init_pair(i, i, -1);  // -1: def background
+
+    signal(SIGWINCH, HandleResizeImp);  // Attach HandleResize to SIGWINCH signal
+
+    // ---------------------- Setup pansl --------------------------
+
+    // Create the necessary windows
+    WINDOW *wins[4];
+    CreateWindows(wins);
+
+    // Initialize the panels
+    fPanelIn    = new_panel(wins[0]);
+    fPanelFrame = new_panel(wins[1]);
+    fPanelOut   = new_panel(wins[2]);
+
+    win.SetWindow(wins[0]);
+    wout.SetWindow(wins[2]);
+
+    // Get the panels into the right order for startup
+    ShowHide(1);
+
+    // Setup Readline
+    SetWindow(wins[0]);
+    SetColorPrompt(COLOR_PAIR(COLOR_BLUE));
+
+    // ------------------- Setup key bindings -----------------------
+    BindKeySequence("\033OP",    rl_proc_F1);
+    BindKeySequence("\033[1;5B", rl_scroll_top);
+    BindKeySequence("\033[1;5A", rl_scroll_top);
+    BindKeySequence("\033[1;3A", rl_scroll_bot);
+    BindKeySequence("\033[1;3B", rl_scroll_bot);
+    BindKeySequence("\033[5;3~", rl_top_inc);
+    BindKeySequence("\033[6;3~", rl_top_dec);
+    BindKeySequence("\033+",     rl_top_resize);
+    BindKeySequence("\033-",     rl_top_resize);
+
+    /*
+     rl_bind_keyseq("\033\t",   rl_complete); // Meta-Tab
+     rl_bind_keyseq("\033[1~",  home); // Home (console)
+     rl_bind_keyseq("\033[H",   home); // Home (x)
+     rl_bind_keyseq("\033[4~",  end); // End (console)
+     rl_bind_keyseq("\033[F",   end); // End (x)
+     rl_bind_keyseq("\033[A",   up); // Up
+     rl_bind_keyseq("\033[B",   down); // Down
+     rl_bind_keyseq("\033[[B",  accept); // F2 (console)
+     rl_bind_keyseq("\033OQ",   accept); // F2 (x)
+     rl_bind_keyseq("\033[21~", cancel); // F10
+     */
+
+    // Ctrl+dn:   \033[1;5B
+    // Ctrl+up:   \033[1;5A
+    // Alt+up:    \033[1;3A
+    // Alt+dn:    \033[1;3B
+    // Alt+pg up: \033[5;3~
+    // Alt+pg dn: \033[6;3~
+}
+
+// --------------------------------------------------------------------------
+//
+//! Ends the ncurses environment by calling endwin().
+//
+Shell::~Shell()
+{
+    // Maybe not needed because the window is more or less valid until the
+    // object is destructed anyway.
+    //win.SetWindow(0);
+    //wout.SetWindow(0);
+    //SetWindow(0);
+
+    endwin();
+    cout << "The end." << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This function gets the windows into the expected order which is:
+//!
+//! @param v
+//!    - \b 0:  Do not show the output panel
+//!    - \b 1:  Show the output panel
+//!    - \b -1: Toggle the visibility of the output panel
+//!    - \b -2: Just update the panels, do not change their visibility
+//
+void Shell::ShowHide(int v)
+{
+    if (v>-2)
+        fIsVisible = v==-1 ? !fIsVisible : v;
+
+    if (fIsVisible)
+    {
+        show_panel(fPanelIn);
+        show_panel(fPanelFrame);
+        show_panel(fPanelOut);
+    }
+    else
+    {
+        show_panel(fPanelIn);
+        hide_panel(fPanelFrame);
+        hide_panel(fPanelOut);
+    }
+
+    update_panels();
+    doupdate();
+}
+
+
+// --------------------------------------------------------------------------
+//
+//! Creates the windows to be used as panels and draws a frame around one
+//!
+//! @param w
+//!    pointers to the three windows which have been created are returned
+//!
+//! @param all
+//!   If all is false do not (re-)create the bottom or input-window
+//
+void Shell::CreateWindows(WINDOW *w[3], int all)
+{
+    int maxx, maxy;
+    getmaxyx(stdscr, maxy, maxx);
+
+    int separator = maxy-fPanelHeight;
+
+    WINDOW *new_in    = all ? newwin(maxy,    maxx,   0, 0) : 0;
+    WINDOW *new_frame = newwin(separator-1,   maxx,   0, 0);
+    WINDOW *new_out   = newwin(separator-1-2, maxx-2, 1, 1);
+
+    box(new_frame,     0,0);
+    wmove(new_frame,   0, 1);
+    waddch(new_frame,  ACS_RTEE);
+    wprintw(new_frame, " F1 ");
+    waddch(new_frame,  ACS_LTEE);
+
+    scrollok(new_out, true);
+    leaveok (new_out, true);
+
+    if (new_in)
+    {
+        scrollok(new_in, true);  // Allow scrolling
+        leaveok (new_in, false);  // Move the cursor with the output
+
+        wmove(new_in, maxy-1, 0);
+    }
+
+    w[0] = new_in;
+    w[1] = new_frame;
+    w[2] = new_out;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Key binding for F1. Toggles upper panel by calling ShowHide(-1)
+//
+int Shell::rl_proc_F1(int /*cnt*/, int /*key*/)
+{
+    This->ShowHide(-1); // toggle
+    return 0;
+}
+
+int Shell::rl_scroll_top(int, int key)
+{
+    This->win << "Scroll " << key << endl;
+    return 0;
+}
+
+int Shell::rl_scroll_bot(int, int key)
+{
+    This->win << "Scroll " << key << endl;
+    return 0;
+}
+
+int Shell::rl_top_inc(int, int key)
+{
+    This->win << "Increase " << key << endl;
+    return 0;
+}
+
+int Shell::rl_top_dec(int, int key)
+{
+    This->win << "Increase " << key << endl;
+    return 0;
+}
+
+int Shell::rl_top_resize(int, int key)
+{
+    This->Resize(key=='+' ? This->fPanelHeight-1 : This->fPanelHeight+1);
+    return 0;
+}
+
+
+// --------------------------------------------------------------------------
+//
+//! Signal handler for SIGWINCH, calls HandleResize
+//
+void Shell::HandleResizeImp(int)
+{
+    This->HandleResize();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Signal handler for SIGWINCH. It resizes the terminal and all panels
+//! according to the new terminal size and redisplay the backlog buffer
+//! in both windows
+//!
+//! @todo
+//!   Maybe there are more efficient ways than to display the whole buffers
+//
+void Shell::HandleResize()
+{
+    // Get the new terminal size
+    struct winsize w;
+    ioctl(0, TIOCGWINSZ, &w);
+
+    // propagate it to the terminal
+    resize_term(w.ws_row, w.ws_col);
+
+    // Store the pointer to the old windows
+    WINDOW *w_in    = panel_window(fPanelIn);
+    WINDOW *w_frame = panel_window(fPanelFrame);
+    WINDOW *w_out   = panel_window(fPanelOut);
+
+    // Create new windows
+    WINDOW *wins[3];
+    CreateWindows(wins);
+
+    // Redirect the streams and the readline output to the new windows
+    win.SetWindow(wins[0]);
+    wout.SetWindow(wins[2]);
+
+    SetWindow(wins[0]);
+
+    // Replace windows in the panels
+    replace_panel(fPanelIn,    wins[0]);
+    replace_panel(fPanelFrame, wins[1]);
+    replace_panel(fPanelOut,   wins[2]);
+
+    // delete the old obsolete windows
+    delwin(w_in);
+    delwin(w_out);
+    delwin(w_frame);
+
+    // FIXME:  NEEDED also in Redisplay panel
+    //Redisplay();
+
+    // Redisplay their contents
+    win.Display();
+    wout.Display();
+}
+
+// --------------------------------------------------------------------------
+//
+//! This resized the top panel or output panel as requested by the argument.
+//! The argument is the number of lines which are kept free for the input
+//! panel below the top panel
+//!
+//! @returns
+//!    always true
+//
+bool Shell::Resize(int h)
+{
+    // Get curretn terminal size
+    int lines, cols;
+    getmaxyx(stdscr, lines, cols);
+
+    // Check if we are in a valid range
+    if (h<1 || h>lines-5)
+        return false;
+
+    // Set new height for panel to be kept free
+    fPanelHeight = h;
+
+    // Store the pointers of the old windows associated with the panels
+    // which should be resized
+    WINDOW *w_frame = panel_window(fPanelFrame);
+    WINDOW *w_out   = panel_window(fPanelOut);
+
+    // Create new windows
+    WINDOW *wins[3];
+    CreateWindows(wins, false);
+
+    // Redirect the output stream to the new window
+    wout.SetWindow(wins[2]);
+
+    // Replace the windows associated with the panels
+    replace_panel(fPanelFrame, wins[1]);
+    replace_panel(fPanelOut,   wins[2]);
+
+    // delete the ols windows
+    delwin(w_out);
+    delwin(w_frame);
+
+    // FIXME:  NEEDED also in Redisplay panel
+    //Redisplay();
+
+    // Redisplay the contents
+    wout.Display();
+
+    return true;
+}
+
+bool Shell::PrintKeyBindings()
+{
+    ReadlineColor::PrintKeyBindings(win);
+    win << " " << kUnderline << "Special key bindings:" << endl << endl;;
+    win << kBold << "   F1              " << kReset << "Toggle visibility of upper panel" << endl;
+    win << endl;
+    return true;
+}
+
+bool Shell::PrintGeneralHelp()
+{
+    ReadlineColor::PrintGeneralHelp(win, GetName());
+    win << kBold << "   hide         " << kReset << "Hide upper panel." << endl;
+    win << kBold << "   show         " << kReset << "Show upper panel." << endl;
+    win << kBold << "   height <h>   " << kReset << "Set height of upper panel to h." << endl;
+    win << endl;
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Processes the command provided by the Shell-class.
+//!
+//! @returns
+//!    whether a command was successfully processed or could not be found
+//
+bool Shell::Process(const string &str)
+{
+    // Implement readline commands:
+    //   rl set     (rl_variable_bind(..))
+    //   rl_read_init_file(filename)
+    //  int rl_add_defun (const char *name, rl_command_func_t *function, int key)
+
+    if (ReadlineColor::Process(win, str))
+        return true;
+
+    if (Readline::Process(str))
+        return true;
+
+    // ----------- ReadlineNcurses -----------
+
+    if (string(str)=="hide")
+    {
+        ShowHide(0);
+        return true;
+    }
+    if (string(str)=="show")
+    {
+        ShowHide(1);
+        return true;
+    }
+
+    if (str.substr(0, 7)=="height ")
+    {
+        int h;
+        sscanf(str.c_str()+7, "%d", &h);
+        return Resize(h);
+    }
+
+    if (str=="d")
+    {
+        wout.Display();
+        return true;
+    }
+
+    return false;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Overwrites Shutdown. It's main purpose is to re-output
+//! the prompt and the buffer using the WindowLog stream so that it is
+//! buffered in its backlog.
+//!
+//! @param buf
+//!    A pointer to the buffer returned by readline
+//!
+void Shell::Shutdown(const char *buf)
+{
+    ReadlineWindow::Shutdown(buf);
+
+    // Now move the cursor to the start of the prompt
+    RewindCursor();
+
+    // Output the text ourself to get it into the backlog
+    // buffer of win. We cannot use GetBuffer() because rl_end
+    // is not updated finally.
+    win << kBlue << GetPrompt() << kReset << buf << endl;
+}
Index: branches/testFACT++branch/src/Shell.h
===================================================================
--- branches/testFACT++branch/src/Shell.h	(revision 18277)
+++ branches/testFACT++branch/src/Shell.h	(revision 18277)
@@ -0,0 +1,79 @@
+#ifndef FACT_Shell
+#define FACT_Shell
+
+#include "ReadlineWindow.h"
+#include "ReadlineColor.h"
+#include "WindowLog.h"
+
+class WindowLog;
+
+typedef struct panel PANEL;
+
+class Shell : public ReadlineWindow
+{
+protected:
+    static Shell *This; /// pointer to our glocal object to get the static member functions into scope
+
+    WindowLog win;//(&fPanelIn);    // FIXME: Ref
+    WindowLog wout;//(&fPanelOut);  // FIXME: Ref
+
+private:
+    PANEL *fPanelIn;    /// Pointer to the panel for the input stream
+    PANEL *fPanelFrame; /// Pointer to the panel for the frame around the output
+    PANEL *fPanelOut;   /// Pointer to the panel for the output stream
+
+    int fPanelHeight;   /// Space between the bottom of the screen and the output panel
+    int fIsVisible;     /// Flag whether the output panel is visible or not (for toggle operations)
+
+    int fLine;
+
+    // Callback function for key presses
+    static int rl_proc_F1(int cnt, int key);
+    static int rl_scroll_top(int cnt, int key);
+    static int rl_scroll_bot(int cnt, int key);
+    static int rl_top_inc(int cnt, int key);
+    static int rl_top_dec(int cnt, int key);
+    static int rl_top_resize(int cnt, int key);
+
+    /// Static member function used as callback for a signal which is
+    /// emitted by the system if the size of the console window has changed
+    static void HandleResizeImp(int dummy);
+
+    /// Non static member function called by HandleResize
+    void HandleResize();
+
+    /// Helper for the constructor and window resizing to create the windows and panels
+    void CreateWindows(WINDOW *w[3], int all=true);
+
+    // Action after readline finished
+    void Shutdown(const char *);
+
+public:
+    Shell(const char *prgname);
+    ~Shell();
+
+    bool Resize(int h);
+    void ShowHide(int v);
+    void Refresh() { ShowHide(-2); }
+
+    bool PrintCommands() { return ReadlineColor::PrintCommands(win); }
+    bool PrintGeneralHelp();
+    bool PrintKeyBindings();
+
+    bool Process(const std::string &str);
+
+    void Lock() { }
+    void Run(const char * = "")
+    {
+        ReadlineColor::PrintBootMsg(win, GetName());
+        ReadlineWindow::Run();
+    }
+    void Unlock() { }
+
+    WindowLog &GetStreamOut() { return wout; }
+    WindowLog &GetStreamIn() { return win; }
+    const WindowLog &GetStreamOut() const { return wout; }
+    const WindowLog &GetStreamIn() const { return win; }
+};
+
+#endif
Index: branches/testFACT++branch/src/State.cc
===================================================================
--- branches/testFACT++branch/src/State.cc	(revision 18277)
+++ branches/testFACT++branch/src/State.cc	(revision 18277)
@@ -0,0 +1,86 @@
+// **************************************************************************
+/** @struct State
+
+@brief A struct which stores an index, a comment and a name of a State
+
+To have proper descriptions of states in the network, this struct provides
+a simple storage for the properties of a state.
+
+Assume you want to write a descriptive string for a state machine
+with two states, it could look like this:
+
+"1:Disconnected=Connection not established\n2:Connected=Connection established."
+
+Such a string can then be converted with SplitStates into a vector
+of State objects.
+
+*/
+// **************************************************************************
+#include "State.h"
+
+#include <sstream>
+#include <algorithm>
+
+#include "tools.h"
+
+using namespace std;
+using namespace Tools;
+
+// --------------------------------------------------------------------------
+//
+//! Construct a Description object
+//!
+//! @param i
+//!     Index of the state, e.g. 1
+//!
+//! @param n
+//!     Name of the state, e.g. 'Connected'
+//!
+//! @param c
+//!     Descriptive text of the state, e.g. "Connection to hardware established."
+//
+State::State(int i, const std::string &n, const std::string &c, const Time &t)
+    : index(i), name(Trim(n)), comment(Trim(c)), time(t)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! This function breaks down a descriptive string into its components.
+//! For details see class reference.
+//!
+//! @param buffer
+//!     string which should be broekn into pieces
+//!
+//! @returns
+//!     A vector<State> containing all the states found.
+//
+vector<State> State::SplitStates(const string &buffer)
+{
+    vector<State> vec;
+
+    string buf;
+    stringstream stream(buffer);
+    while (getline(stream, buf, '\n'))
+    {
+        if (buf.empty())
+            continue;
+
+        const size_t p1 = buf.find_first_of(':');
+        const size_t p2 = buf.find_first_of('=');
+
+        stringstream s(buf.substr(0, p1));
+
+        int index;
+        s >> index;
+
+        const string name    = buf.substr(p1+1, p2-p1-1);
+        const string comment = p2==string::npos ? "" : buf.substr(p2+1);
+
+        vec.emplace_back(index, name, comment);
+    }
+
+    sort(vec.begin(), vec.end(), State::Compare);
+
+    return vec;
+}
Index: branches/testFACT++branch/src/State.h
===================================================================
--- branches/testFACT++branch/src/State.h	(revision 18277)
+++ branches/testFACT++branch/src/State.h	(revision 18277)
@@ -0,0 +1,23 @@
+#ifndef FACT_State
+#define FACT_State
+
+#include <string>
+#include <vector>
+
+#include "Time.h"
+
+struct State
+{
+    int         index;    /// Index (e.g. 1)
+    std::string name;     /// Name (e.g. 'Connected')
+    std::string comment;  /// Description (e.g. 'Connection to hardware established.')
+    Time        time;     /// Time of state change
+
+    static std::vector<State> SplitStates(const std::string &buffer);
+
+    static bool Compare(const State &i, const State &j) { return i.index<j.index; }
+
+    State(int i=-256, const std::string &n="", const std::string &c="", const Time &t=Time(Time::none));
+};
+
+#endif
Index: branches/testFACT++branch/src/StateMachine.cc
===================================================================
--- branches/testFACT++branch/src/StateMachine.cc	(revision 18277)
+++ branches/testFACT++branch/src/StateMachine.cc	(revision 18277)
@@ -0,0 +1,72 @@
+// **************************************************************************
+/** @class StateMachine
+
+ @brief Class for a state machine implementation just on the console
+
+This class implements a StateMachine which is to be controlled from the
+console. It redirects all output posted via MessageImp to the console
+and, if the stream is a WindowLog, adds colors.
+
+When constructing the Dim network is started and while dstruction it is
+stopped.
+
+@todo
+   Do we really need to create Event-objects? Shouldn't we add a
+   ProcessEvent function which takes an event as argument instead?
+   Or something else which easily allows to add data to the events?
+
+*/
+// **************************************************************************
+#include "StateMachine.h"
+
+#include "WindowLog.h"
+
+#include "Event.h"
+#include "Time.h"
+#include "Shell.h"
+
+#include "tools.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! Overwrite StateMachineImp::AddTransition to create an Event object
+//! instead of an EventImp object. The event name propagated is name.
+//!
+//! For parameter description see StateMachineImp.
+//!
+EventImp *StateMachine::CreateEvent(const string &name, const string &fmt)
+{
+    return new Event(GetName()+'/'+name, fmt);
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is (analog to StateMachineDim::commandHandler()) the function which
+//! is called if an event from the console is received. It then is
+//! supposed to send the event to the messge queue or handle it directly
+//! if the machine was not yet started.
+//!
+//! If fCurrentState is smaller than 0 or we are in kSM_FatalError state,
+//! all incoming commands are ignored.
+//!
+//! The commandHandler will go through the list of available commands
+//! (fListOfEventss). If the received command was recognized, it is added
+//! via PostCommand into the fifo.
+//!
+//! @todo
+//!    - Fix the exit when cmd is not of type EventImp
+//!    - Do we need a possibility to suppress a call to "HandleEvent"
+//!      or is a state<0 enough?
+//
+bool StateMachine::ProcessCommand(const std::string &str, const char *ptr, size_t siz)
+{
+    EventImp *evt = FindEvent(str);
+    if (!evt)
+        return false;
+
+    PostEvent(*evt, ptr, siz);
+    return true;
+}
+
Index: branches/testFACT++branch/src/StateMachine.h
===================================================================
--- branches/testFACT++branch/src/StateMachine.h	(revision 18277)
+++ branches/testFACT++branch/src/StateMachine.h	(revision 18277)
@@ -0,0 +1,23 @@
+#ifndef FACT_StateMachine
+#define FACT_StateMachine
+
+#include "StateMachineImp.h"
+
+class StateMachine : public StateMachineImp
+{
+protected:
+    EventImp *CreateEvent(const std::string &name, const std::string &fmt);
+
+public:
+    StateMachine(std::ostream &out, const std::string &name="") :
+        StateMachineImp(out, name)
+    {
+    }
+
+    bool ProcessCommand(const std::string &str, const char *ptr, size_t siz);
+    bool ProcessCommand(const EventImp &evt);
+    bool ProcessCommand(const std::string &str) { return ProcessCommand(str, 0, 0); }
+
+};
+
+#endif
Index: branches/testFACT++branch/src/StateMachineAsio.h
===================================================================
--- branches/testFACT++branch/src/StateMachineAsio.h	(revision 18277)
+++ branches/testFACT++branch/src/StateMachineAsio.h	(revision 18277)
@@ -0,0 +1,94 @@
+#ifndef FACT_StateMachineAsio
+#define FACT_StateMachineAsio
+
+#include <boost/asio.hpp>
+#include <boost/bind.hpp>
+
+template <class T>
+class StateMachineAsio : public T, public boost::asio::io_service, public boost::asio::io_service::work
+{
+    boost::asio::deadline_timer fTrigger;
+
+    void HandleTrigger(const boost::system::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=boost::asio::error::basic_errors::operation_aborted)
+            return;
+
+        fTrigger.expires_from_now(boost::posix_time::microseconds(10000));
+        fTrigger.async_wait(boost::bind(&StateMachineAsio::HandleTrigger,
+                                        this, boost::asio::placeholders::error));
+
+        if (!T::HandleNewState(Execute(), 0, "by HandleTrigger()"))
+            Stop(-1);
+    }
+
+    void Handler()
+    {
+        const auto ptr = T::PopEvent();
+        if (!T::HandleEvent(*ptr))
+            Stop(-1);
+    }
+
+    void PushEvent(Event *cmd)
+    {
+        T::PushEvent(cmd);
+        post(boost::bind(&StateMachineAsio::Handler, this));
+    }
+
+    int Execute()=0;
+
+    int Run(bool)
+    {
+        fTrigger.expires_from_now(boost::posix_time::microseconds(0));
+        fTrigger.async_wait(boost::bind(&StateMachineAsio::HandleTrigger,
+                                        this, boost::asio::placeholders::error));
+
+        T::SetCurrentState(StateMachineImp::kSM_Ready, "by Run()");
+
+        T::fRunning = true;
+
+        while (run_one())
+        {
+            if (!T::HandleNewState(Execute(), 0, "by Run()"))
+                Stop(-1);
+        }
+        reset();
+
+        T::fRunning = false;
+
+        if (T::fExitRequested==-1)
+        {
+            T::Fatal("Fatal Error occured... shutting down.");
+            return -1;
+        }
+
+        T::SetCurrentState(StateMachineImp::kSM_NotReady, "due to return from Run().");
+
+        const int exitcode = T::fExitRequested-1;
+        T::fExitRequested = 0;
+        return exitcode;
+    }
+
+
+public:
+    StateMachineAsio(std::ostream &out, const std::string &server) :
+        T(out, server), boost::asio::io_service::work(static_cast<boost::asio::io_service&>(*this)),
+        fTrigger(static_cast<boost::asio::io_service&>(*this))
+    {
+        // ba::io_service::work is a kind of keep_alive for the loop.
+        // It prevents the io_service to go to stopped state, which
+        // would prevent any consecutive calls to run()
+        // or poll() to do nothing. reset() could also revoke to the
+        // previous state but this might introduce some overhead of
+        // deletion and creation of threads and more.
+    }
+
+    void Stop(int code=0)
+    {
+        T::Stop(code);
+        stop();
+    }
+};
+
+#endif
Index: branches/testFACT++branch/src/StateMachineDim.cc
===================================================================
--- branches/testFACT++branch/src/StateMachineDim.cc	(revision 18277)
+++ branches/testFACT++branch/src/StateMachineDim.cc	(revision 18277)
@@ -0,0 +1,240 @@
+// **************************************************************************
+/** @class StateMachineDim
+
+This class implements a StateMachine within a Dim network. It redirects
+all output posted via MessageImp to a service called "NAME/MESSAGE"
+while name is the name of the machine given in the constructor. In
+addition two services are offered: NAME/STATE and NAME/VERSION.
+NAME/STATE propagates any state change to the netork.
+
+When constructing the Dim network is started and while dstruction it is
+stopped.
+
+@todo
+    Proper support for versioning
+
+*/
+// **************************************************************************
+#include "StateMachineDim.h"
+
+#include "tools.h"
+
+#include "EventDim.h"
+#include "ServiceDim.h"
+
+using namespace std;
+
+const int StateMachineDim::fVersion = 42;
+
+// --------------------------------------------------------------------------
+//
+//! The constrcutor first initialized DimStart with the given machine name.
+//! DimStart is just a wrapper which constructor calls DimServer::start()
+//! to ensure that initializing the Dim sub-system, is the first what is
+//! done.
+//!
+//! The second objet instantiated is the MessageDim class which offers
+//! the MESSAGE service used to broadcast logging messages to other
+//! Dim clients.
+//!
+//! After this the services STATE and VERSION are setup. STATE will
+//! be used to broadcast the state of the machine. Version broadcasts
+//! the global version number of the StateMachineDim implementation
+//!
+//! After redirecting the handler which handels dim's EXIT command
+//! to ourself (it will then call StateMachineDim::exitHandler) and
+//! adding human readable state names for the default states
+//! implemented by StateMachingImp the state is set to kSM_Initializing.
+//! Warning: The EXIT handler is global!
+//!
+//! @param name
+//!    The name with which the dim-services should be prefixed, e.g.
+//!    "DRIVE" will lead to "DRIVE/SERVICE". It is also propagated
+//!    to DimServer::start()
+//!
+//! @param out
+//!    A refrence to an ostream which allows to redirect the log-output
+//!    to something else than cout. The default is cout. The reference
+//!    is propagated to fLog
+//!
+//! @todo
+//!    - Shell the VERSION be set from the derived class?
+//
+StateMachineDim::StateMachineDim(ostream &out, const std::string &name)
+    : DimLog(out, name), DimStart(name, DimLog::fLog), StateMachineImp(out, name),
+    fDescriptionStates(name+"/STATE_LIST", "C",
+                       "Provides a list with descriptions for each service."
+                       "|StateList[string]:A \\n separated list of the form id:name=description"),
+    fSrvState(name+"/STATE", "C",
+              "Provides the state of the state machine as quality of service."
+              "|Text[string]:A human readable string sent by the last state change.")
+    //    fSrvVersion((name+"/VERSION").c_str(), const_cast<int&>(fVersion)),
+{
+    SetDefaultStateNames();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Overwrite StateMachineImp::AddTransition to create a EventDim
+//! instead of an Event object. The event name propagated to the EventDim
+//! is fName+"/"+name.
+//!
+//! For parameter description see StateMachineImp.
+//!
+EventImp *StateMachineDim::CreateEvent(const string &name, const string &fmt)
+{
+    return new EventDim(GetName()+"/"+name, fmt, this);
+}
+
+EventImp *StateMachineDim::CreateService(const string &name)
+{
+    return new ServiceDim(name, this);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Overwrite StateMachineImp::AddStateName. In addition to storing the
+//! state locally it is also propagated through Dim in the STATE_LIST
+//! service. 
+//!
+//! @param state
+//!    Number of the state to which a name should be assigned
+//!
+//! @param name
+//!    A name which should be assigned to the state, e.g. "Tracking"
+//!
+//! @param doc
+//!    A explanatory text describing the state
+//!
+bool StateMachineDim::AddStateName(const int state, const std::string &name, const std::string &doc)
+{
+    if (name.empty())
+        return false;
+
+    const bool rc = HasState(state) || GetStateIndex(name)!=kSM_NotAvailable;
+
+    StateMachineImp::AddStateName(state, name, doc);
+
+    string str;
+    for (auto it=fStateNames.begin(); it!=fStateNames.end(); it++)
+        str += to_string(it->first)+':'+it->second.first+'='+it->second.second+'\n';
+
+    fDescriptionStates.Update(str);
+
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Overwrite StateMachineImp::SetCurrentState. In addition to
+//! calling StateMachineImo::SetCurrentState the new state is also
+//! distributed via the DimService STATE.
+//!
+//! For parameter description see StateMachineImp.
+//!
+string StateMachineDim::SetCurrentState(int state, const char *txt, const std::string &cmd)
+{
+    const string msg = StateMachineImp::SetCurrentState(state, txt, cmd);
+    if (msg.empty())
+        return "";
+
+    fSrvState.setQuality(state);
+    fSrvState.Update(msg);
+
+    return msg;
+}
+
+// --------------------------------------------------------------------------
+//
+//! In the case of dim this secures HandleEvent against dim's commandHandler
+//!
+void StateMachineDim::Lock()
+{
+    dim_lock();
+}
+
+// --------------------------------------------------------------------------
+//
+//! In the case of dim this secures HandleEvent against dim's commandHandler
+//!
+void StateMachineDim::UnLock()
+{
+    dim_unlock();
+}
+
+void StateMachineDim::infoHandler()
+{
+    DimInfo *inf = getInfo();
+    if (!inf)
+        return;
+
+    const EventImp *evt = dynamic_cast<EventImp*>(inf);
+
+    if (HasEvent(evt))
+        PostEvent(*evt);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Overwritten DimCommand::commandHandler()
+//!
+//! If fCurrentState is smaller than 0 or we are in kSM_FatalError state,
+//! all incoming commands are ignored.
+//!
+//! The commandHandler will go through the list of available commands
+//! (fListOfEventss). If the received command was recognized, it is added
+//! via PushCommand into the fifo.
+//!
+//! @todo
+//!    - Fix the exit when cmd is not of type EventImp
+//!    - Fix docu
+//!    - Do we need a possibility to suppress a call to "HandleEvent"
+//!      or is a state<0 enough?
+//
+void StateMachineDim::commandHandler()
+{
+    DimCommand *cmd = getCommand();
+    if (!cmd)
+        return;
+
+    const EventImp *evt = dynamic_cast<EventImp*>(cmd);
+
+    if (HasEvent(evt))
+        PostEvent(*evt);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Overwrites MessageImp::Update. This redirects output issued via
+//! MessageImp to MessageDim object.
+//
+int StateMachineDim::Write(const Time &time, const string &txt, int qos)
+{
+    return DimLog::fLog.Write(time, txt, qos);
+}
+
+// --------------------------------------------------------------------------
+//
+//! exitHandler of the DimServer. The EXIT command is implemented by each
+//! DimServer automatically. exitHandler calls Stop(code) and exit(-1)
+//! in case the received exit-value is a special number (42). abort()
+//! is called if 0x42 is received.
+//!
+//! @param code
+//!    value which is passed to Stop(code)
+//
+void StateMachineDim::exitHandler(int code)
+{
+    Out() << " -- " << Time().GetAsStr() << " - EXIT(" << code << ") command received." << endl;
+    if (code<0) // negative values reserved for internal use
+    {
+        Out() << " -- " << Time().GetAsStr() << ": ignored." << endl;
+        return;
+    }
+
+    Stop(code);
+    if (code==42)
+        exit(128);
+    if (code==0x42)
+        abort();
+}
Index: branches/testFACT++branch/src/StateMachineDim.h
===================================================================
--- branches/testFACT++branch/src/StateMachineDim.h	(revision 18277)
+++ branches/testFACT++branch/src/StateMachineDim.h	(revision 18277)
@@ -0,0 +1,106 @@
+#ifndef FACT_StateMachineDim
+#define FACT_StateMachineDim
+
+// ***************************************************************************
+/**
+ @class DimLog
+
+ @brief Ensures that the MessageDimTX is initialized before errors could be redirected to it
+
+**/
+// ***************************************************************************
+#include "MessageDim.h"       // MessageDimTX
+
+class DimLog
+{
+    friend class StateMachineDim;
+
+    MessageDimTX fLog;
+    DimLog(std::ostream &out, const std::string &name) : fLog(name, out) { }
+};
+
+// ***************************************************************************
+/**
+ @class DimStart
+
+ @brief Ensures calling DimServer::start() in its constructor and DimServer::stop() in its destructor
+
+**/
+// ***************************************************************************
+#include "DimErrorRedirecter.h"
+
+class DimStart : public DimErrorRedirecter
+{
+    const bool fIsValidServer;
+
+protected:
+    DimStart(const std::string &name, MessageImp &imp) : DimErrorRedirecter(imp), fIsValidServer(!name.empty())
+    {
+        DimClient::setNoDataCopy();
+        if (fIsValidServer)
+        {
+            DimServer::start(name.c_str());
+
+            // Give some time to come up before
+            // the first log messages are sent
+            sleep(1);
+        }
+    }
+    ~DimStart()
+    {
+        if (!fIsValidServer)
+            return;
+
+        // Give some time for pending log messages to be
+        // transmitted before the network is stopped
+        sleep(1);
+        DimServer::stop();
+    }
+};
+
+// ***************************************************************************
+/**
+ @class StateMachineDim
+
+ @brief Class for a state machine implementation within a DIM network
+
+**/
+// ***************************************************************************
+#include "StateMachine.h"     // StateMachien
+
+class StateMachineDim : public DimCommandHandler, public DimInfoHandler, public DimLog, public DimStart, public StateMachineImp
+{
+private:
+    static const int fVersion;   /// Version number
+
+    DimDescribedService fDescriptionStates; /// DimService propagating the state descriptions
+    DimDescribedService fSrvState;          /// DimService offering fCurrentState
+//    DimService fSrvVersion;        /// DimService offering fVersion
+
+    void exitHandler(int code);  /// Overwritten DimCommand::exitHandler.
+    void commandHandler();       /// Overwritten DimCommand::commandHandler 
+    void infoHandler();          /// Overwritten DimInfo::infoHandler
+
+    EventImp *CreateEvent(const std::string &name, const std::string &fmt);
+    EventImp *CreateService(const std::string &name);
+
+protected:
+    /// This is an internal function to do some action in case of
+    /// a state change, like updating the corresponding service.
+    std::string SetCurrentState(int state, const char *txt="", const std::string &cmd="");
+
+    void Lock();
+    void UnLock();
+
+public:
+    StateMachineDim(std::ostream &out=std::cout, const std::string &name="DEFAULT");
+
+    /// Redirect our own logging to fLog
+    int Write(const Time &time, const std::string &txt, int qos=kMessage);
+
+    bool AddStateName(const int state, const std::string &name, const std::string &doc="");
+
+    bool MessageQueueEmpty() const { return DimLog::fLog.MessageQueueEmpty(); }
+};
+
+#endif
Index: branches/testFACT++branch/src/StateMachineDimControl.cc
===================================================================
--- branches/testFACT++branch/src/StateMachineDimControl.cc	(revision 18277)
+++ branches/testFACT++branch/src/StateMachineDimControl.cc	(revision 18277)
@@ -0,0 +1,613 @@
+#include "StateMachineDimControl.h"
+
+#include <boost/filesystem.hpp>
+
+#include "Dim.h"
+#include "Event.h"
+#include "Readline.h"
+#include "InterpreterV8.h"
+#include "Configuration.h"
+#include "Converter.h"
+
+#include "tools.h"
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+bool StateMachineDimControl::fIsServer = false;
+
+string StateMachineDimControl::Line(const string &txt, char fill)
+{
+    const int n = (55-txt.length())/2;
+
+    ostringstream out;
+    out << setfill(fill);
+    out << setw(n) << fill << ' ';
+    out << txt;
+    out << ' ' << setw(n) << fill;
+
+    if (2*n+txt.length()+2 != 57)
+        out << fill;
+
+    return out.str();
+}
+
+int StateMachineDimControl::ChangeState(int qos, const Time &, int scriptdepth, string scriptfile, string user)
+{
+    string msg;
+    /*
+    switch (qos)
+    {
+    case -4: msg = "End";       break;
+    case -3: msg = "Loading";   break;
+    case -2: msg = "Compiling"; break;
+    case -1: msg = "Running";   break;
+    default:
+        {
+            ostringstream out;
+            out << "Label " << qos;
+            msg = out.str();
+        }
+    }
+    */
+
+    //if (qos<0)
+        msg += to_string(scriptdepth);
+
+    msg += ":"+scriptfile+"["+user+":"+to_string(getpid())+"]";
+
+    //if (fDebug)
+    //Write(time, Line(msg, qos<-1 ? '=' :'-'), MessageImp::kInternal);
+
+    if (qos==-4)
+        fScriptUser = fUser;
+
+    SetCurrentState(qos+4, msg.c_str());
+    //SetCurrentState(qos+4, Line(msg, qos<-1 ? '=' :'-').c_str());
+    return GetCurrentState();
+
+    //return qos+4;
+}
+
+int StateMachineDimControl::ChangeState(int state)
+{
+    return ChangeState(state, Time(), Readline::GetScriptDepth(), Readline::GetScript(), fScriptUser);
+        /*
+         === This might be necessary for thread safety,
+         === but it break that the signal for the start of a new
+         === script arrives synchronously before the first output
+         === from the script
+
+        // Post an anonymous event to the event loop
+        Event evt("");
+        evt.AssignFunction(bind(&StateMachineDimControl::ChangeState, this,
+                                qos, time, Readline::GetScriptDepth(),
+                                Readline::GetScript(), fScriptUser));
+        return PostEvent(evt);
+        */
+}
+
+int StateMachineDimControl::StartScript(const EventImp &imp, const string &cmd)
+{
+    string opt(imp.GetString());
+
+    const map<string,string> data = Tools::Split(opt, true);
+    if (imp.GetSize()==0 || opt.size()==0 || opt[0]==0)
+    {
+        Error("File name missing in DIM_CONTROL/START");
+        return GetCurrentState();
+    }
+
+    if (fDebug)
+        Debug("Start '"+opt+"' received.");
+
+    if (fDebug)
+        Debug("Received data: "+imp.GetString());
+
+    const auto user = data.find("user");
+    fScriptUser = user==data.end() ? fUser : user->second;
+
+    if (fDebug)
+    {
+        for (auto it=data.begin(); it!=data.end(); it++)
+            Debug("   Arg: "+it->first+" = "+it->second);
+    }
+
+    string emit = cmd+imp.GetString();
+    if (cmd==".js ")
+        emit += fArgumentsJS;
+
+    Readline::SetExternalInput(emit);
+    return GetCurrentState();
+}
+
+int StateMachineDimControl::StopScript(const EventImp &imp)
+{
+    const string str(imp.GetString());
+
+    string msg("Stop received");
+    msg += str.empty() ? "." : " ["+str+"]";
+
+    Info(msg);
+
+    Readline::StopScript();
+    InterpreterV8::JsStop();
+    return GetCurrentState();
+}
+
+int StateMachineDimControl::InterruptScript(const EventImp &evt)
+{
+    if (!fInterruptHandler)
+        return GetCurrentState();
+
+    string str = evt.GetString();
+
+    const size_t p = str.find_last_of('\n');
+    if (p!=string::npos)
+        str[p] = ':';
+
+    if (GetCurrentState()<3)
+    {
+        Warn("Interrupt request received ["+str+"]... but no running script.");
+        return GetCurrentState();
+    }
+
+    Info("Interrupt request received ["+str+"]");
+    return fInterruptHandler(evt);
+}
+
+bool StateMachineDimControl::SendDimCommand(const string &server, string str, ostream &lout)
+{
+    const lock_guard<mutex> guard(fMutex);
+
+    if (fServerList.find(server)==fServerList.end())
+        throw runtime_error("SendDimCommand - Server '"+server+"' not online.");
+
+    str = Tools::Trim(str);
+
+    // Find the delimiter between the command name and the data
+    size_t p0 = str.find_first_of(' ');
+    if (p0==string::npos)
+        p0 = str.length();
+
+    // Get just the command name separated from the data
+    const string name = str.substr(0, p0);
+
+    // Compile the command which will be sent to the state-machine
+    for (auto is=fServiceList.begin(); is!=fServiceList.end(); is++)
+    {
+        if (str.empty() && is->server==server)
+            return true;
+
+        if (is->server!=server || is->service!=name)
+            continue;
+
+        if (!is->iscmd)
+            throw runtime_error("'"+server+"/"+name+" not a command.");
+
+        // Avoid compiler warning of unused parameter
+        lout << flush;
+
+        // Convert the user entered data according to the format string
+        // into a data block which will be attached to the event
+#ifndef DEBUG
+        ostringstream sout;
+        const Converter conv(sout, is->format, false);
+#else
+        const Converter conv(lout, is->format, false);
+#endif
+        if (!conv)
+            throw runtime_error("Couldn't properly parse the format... ignored.");
+
+#ifdef DEBUG
+        lout << kBlue << server << '/' << name;
+#endif
+        const vector<char> v = conv.GetVector(str.substr(p0));
+#ifdef DEBUG
+        lout << kBlue << " [" << v.size() << "]" << endl;
+#endif
+        const string cmd = server + '/' + name;
+        const int rc = DimClient::sendCommand(cmd.c_str(), (void*)v.data(), v.size());
+        if (!rc)
+            throw runtime_error("ERROR - Sending command "+cmd+" failed.");
+
+        return true;
+    }
+
+    if (!str.empty())
+        throw runtime_error("SendDimCommand - Format information for "+server+"/"+name+" not yet available.");
+
+    return false;
+}
+
+int StateMachineDimControl::PrintStates(std::ostream &out, const std::string &serv)
+{
+    const lock_guard<mutex> guard(fMutex);
+
+    int rc = 0;
+    for (auto it=fServerList.begin(); it!=fServerList.end(); it++)
+    {
+        if (!serv.empty() && *it!=serv)
+            continue;
+
+        out << kRed << "----- " << *it << " -----" << endl;
+
+        int cnt = 0;
+        for (auto is=fStateDescriptionList.begin(); is!=fStateDescriptionList.end(); is++)
+        {
+            const string &server = is->first.first;
+
+            if (server!=*it)
+                continue;
+
+            const int32_t &state   = is->first.second;
+            const string  &name    = is->second.first;
+            const string  &comment = is->second.second;
+
+            out << kBold   << setw(5) << state << kReset << ": ";
+            out << kYellow << name;
+            if (!comment.empty())
+                out << kBlue   << " (" << comment << ")";
+            out << endl;
+
+            cnt++;
+        }
+
+        if (cnt==0)
+            out << "   <no states>" << endl;
+        else
+            rc++;
+
+        out << endl;
+    }
+
+    return rc;
+}
+
+int StateMachineDimControl::PrintDescription(std::ostream &out, bool iscmd, const std::string &serv, const std::string &service)
+{
+    const lock_guard<mutex> guard(fMutex);
+
+    int rc = 0;
+    for (auto it=fServerList.begin(); it!=fServerList.end(); it++)
+    {
+        if (!serv.empty() && *it!=serv)
+            continue;
+
+        out << kRed << "----- " << *it << " -----" << endl << endl;
+
+        for (auto is=fServiceList.begin(); is!=fServiceList.end(); is++)
+        {
+            if (is->server!=*it)
+                continue;
+
+            if (!service.empty() && is->service!=service)
+                continue;
+
+            if (is->iscmd!=iscmd)
+                continue;
+
+            rc++;
+
+            out << " " << is->service;
+            if (!is->format.empty())
+                out << '[' << is->format << ']';
+
+            const auto id = fServiceDescriptionList.find(*it+"/"+is->service);
+            if (id!=fServiceDescriptionList.end())
+            {
+                const vector<Description> &v = id->second;
+
+                for (auto j=v.begin()+1; j!=v.end(); j++)
+                    out << " <" << j->name << ">";
+                out << endl;
+
+                if (!v[0].comment.empty())
+                    out << "    " << v[0].comment << endl;
+
+                for (auto j=v.begin()+1; j!=v.end(); j++)
+                {
+                    out << "    " << kGreen << j->name;
+                    if (!j->comment.empty())
+                        out << kReset << ": " << kBlue << j->comment;
+                    if (!j->unit.empty())
+                        out << kYellow << " [" << j->unit << "]";
+                    out << endl;
+                }
+            }
+            out << endl;
+        }
+        out << endl;
+    }
+
+    return rc;
+}
+
+int StateMachineDimControl::HandleStateChange(const string &server, DimDescriptions *dim)
+{
+    fMutex.lock();
+    const State descr = dim->description();
+    const State state = State(dim->state(), descr.index==DimState::kNotAvailable?"":descr.name, descr.comment, dim->cur.first);
+    fCurrentStateList[server] = state;
+    fMutex.unlock();
+
+    fStateCallback(server, state);
+
+    return GetCurrentState();
+}
+
+State StateMachineDimControl::GetServerState(const std::string &server)
+{
+    const lock_guard<mutex> guard(fMutex);
+
+    const auto it = fCurrentStateList.find(server);
+    return it==fCurrentStateList.end() ? State() : it->second;
+}
+
+int StateMachineDimControl::HandleStates(const string &server, DimDescriptions *dim)
+{
+    const lock_guard<mutex> guard(fMutex);
+
+    const auto is = fCurrentStateList.find(server);
+    for (auto it=dim->states.begin(); it!=dim->states.end(); it++)
+    {
+        fStateDescriptionList[make_pair(server, it->index)] = make_pair(it->name, it->comment);
+        if (is==fCurrentStateList.end())
+            continue;
+
+        State &s = is->second;
+        if (s.index==it->index)
+        {
+            s.name    = it->name;
+            s.comment = it->comment;
+        }
+    }
+
+    return GetCurrentState();
+}
+
+int StateMachineDimControl::HandleDescriptions(DimDescriptions *dim)
+{
+    const lock_guard<mutex> guard(fMutex);
+
+    for (auto it=dim->descriptions.begin(); it!=dim->descriptions.end(); it++)
+        fServiceDescriptionList[it->front().name].assign(it->begin(), it->end());
+
+    return GetCurrentState();
+}
+
+std::vector<Description> StateMachineDimControl::GetDescription(const std::string &service)
+{
+    const lock_guard<mutex> guard(fMutex);
+
+    const auto it = fServiceDescriptionList.find(service);
+    return it==fServiceDescriptionList.end() ? vector<Description>() : it->second;
+}
+
+int StateMachineDimControl::HandleServerAdd(const string &server)
+{
+    if (server!="DIS_DNS")
+    {
+        struct Find : string
+        {
+            Find(const string &ref) : string(ref) { }
+            bool operator()(const DimDescriptions *dim) { return *this==dim->server; }
+        };
+
+        if (find_if(fDimDescriptionsList.begin(), fDimDescriptionsList.end(),
+                    Find(server))==fDimDescriptionsList.end())
+        {
+            DimDescriptions *d = new DimDescriptions(server);
+
+            fDimDescriptionsList.push_back(d);
+            d->SetCallback(bind(&StateMachineDimControl::HandleStateChange, this, server, d));
+            d->SetCallbackStates(bind(&StateMachineDimControl::HandleStates, this, server, d));
+            d->SetCallbackDescriptions(bind(&StateMachineDimControl::HandleDescriptions, this, d));
+            d->Subscribe(*this);
+        }
+    }
+
+    // Make a copy of the list to be able to
+    // lock the access to the list
+
+    const lock_guard<mutex> guard(fMutex);
+    fServerList.insert(server);
+
+    return GetCurrentState();
+}
+
+int StateMachineDimControl::HandleServerRemove(const string &server)
+{
+    const lock_guard<mutex> guard(fMutex);
+    fServerList.erase(server);
+
+    return GetCurrentState();
+}
+
+vector<string> StateMachineDimControl::GetServerList()
+{
+    vector<string> rc;
+
+    const lock_guard<mutex> guard(fMutex);
+
+    rc.reserve(fServerList.size());
+    for (auto it=fServerList.begin(); it!=fServerList.end(); it++)
+        rc.push_back(*it);
+
+    return rc;
+}
+
+vector<string> StateMachineDimControl::GetCommandList(const string &server)
+{
+    const lock_guard<mutex> guard(fMutex);
+
+    const string  s = server.substr(0, server.length()-1);
+
+    if (fServerList.find(s)==fServerList.end())
+        return vector<string>();
+
+    vector<string> rc;
+
+    for (auto it=fServiceList.begin(); it!=fServiceList.end(); it++)
+        if (it->iscmd && it->server==s)
+            rc.push_back(server+it->service);
+
+    return rc;
+}
+
+vector<string> StateMachineDimControl::GetCommandList()
+{
+    vector<string> rc;
+
+    const lock_guard<mutex> guard(fMutex);
+
+    for (auto it=fServiceList.begin(); it!=fServiceList.end(); it++)
+        if (it->iscmd)
+            rc.push_back(it->server+"/"+it->service);
+
+    return rc;
+}
+
+set<Service> StateMachineDimControl::GetServiceList()
+{
+    const lock_guard<mutex> guard(fMutex);
+    return fServiceList;
+}
+
+vector<State> StateMachineDimControl::GetStates(const string &server)
+{
+    const lock_guard<mutex> guard(fMutex);
+
+    vector<State> rc;
+
+    for (auto it=fStateDescriptionList.begin(); it!=fStateDescriptionList.end(); it++)
+    {
+        if (it->first.first!=server)
+            continue;
+
+        rc.emplace_back(it->first.second, it->second.first, it->second.second);
+    }
+
+    return rc;
+}
+
+
+int StateMachineDimControl::HandleAddService(const Service &svc)
+{
+    // Make a copy of the list to be able to
+    // lock the access to the list
+    const lock_guard<mutex> guard(fMutex);
+    fServiceList.insert(svc);
+
+    return GetCurrentState();
+}
+
+bool StateMachineDimControl::HasServer(const std::string &server)
+{
+    const lock_guard<mutex> guard(fMutex);
+    return fServerList.find(server)!=fServerList.end();
+}
+
+StateMachineDimControl::StateMachineDimControl(ostream &out) : StateMachineDim(out, fIsServer?"DIM_CONTROL":"")
+{
+    fDim.Subscribe(*this);
+    fDimList.Subscribe(*this);
+
+    fDimList.SetCallbackServerAdd   (bind(&StateMachineDimControl::HandleServerAdd,    this, placeholders::_1));
+    fDimList.SetCallbackServerRemove(bind(&StateMachineDimControl::HandleServerRemove, this, placeholders::_1));
+    fDimList.SetCallbackServiceAdd  (bind(&StateMachineDimControl::HandleAddService,   this, placeholders::_1));
+
+    // State names
+    AddStateName(0, "Idle",      "No script currently in processing.");
+    AddStateName(1, "Loading",   "Script is loading.");
+    AddStateName(2, "Compiling", "JavaScript is compiling.");
+    AddStateName(3, "Running",   "Script is running.");
+
+    AddEvent("START", "C", 0)
+        (bind(&StateMachineDimControl::StartScript, this, placeholders::_1, ".js "))
+        ("Start a JavaScript");
+
+    AddEvent("EXECUTE", "C", 0)
+        (bind(&StateMachineDimControl::StartScript, this, placeholders::_1, ".x "))
+        ("Execute a batch script");
+
+    AddEvent("STOP", "C")
+        (bind(&StateMachineDimControl::StopScript, this, placeholders::_1))
+        ("Stop a runnning batch script or JavaScript");
+
+    AddEvent("INTERRUPT", "C")
+        (bind(&StateMachineDimControl::InterruptScript, this, placeholders::_1))
+        ("Send an interrupt request (IRQ) to a running JavaScript");
+}
+
+StateMachineDimControl::~StateMachineDimControl()
+{
+    for (auto it=fDimDescriptionsList.begin(); it!=fDimDescriptionsList.end(); it++)
+        delete *it;
+}
+
+int StateMachineDimControl::EvalOptions(Configuration &conf)
+{
+    fDebug = conf.Get<bool>("debug");
+    fUser  = conf.Get<string>("user");
+    fScriptUser = fUser;
+
+    // FIXME: Check fUser for quotes!
+
+    const map<string, string> &js = conf.GetOptions<string>("JavaScript.");
+    for (auto it=js.begin(); it!=js.end(); it++)
+    {
+        string key = it->first;
+        string val = it->second;
+
+        // Escape key
+        boost::replace_all(key, "\\", "\\\\");
+        boost::replace_all(key, "'", "\\'");
+        boost::replace_all(key, "\"", "\\\"");
+
+        // Escape value
+        boost::replace_all(val, "\\", "\\\\");
+        boost::replace_all(val, "'", "\\'");
+        boost::replace_all(val, "\"", "\\\"");
+
+        fArgumentsJS += " '"+key +"'='"+val+"'";
+    }
+
+    // fVerbosity = 40;
+
+    // if (conf.Has("verbosity"))
+    //     fVerbosity = conf.Get<uint32_t>("verbosity");
+
+    // if (conf.Get<bool>("quiet"))
+    //     fVerbosity = 90;
+
+#if BOOST_VERSION < 104600
+    const string fname = boost::filesystem::path(conf.GetName()).filename();
+#else
+    const string fname = boost::filesystem::path(conf.GetName()).filename().string();
+#endif
+
+    if (fname=="dimserver")
+        return -1;
+
+    if (conf.Get<bool>("stop"))
+        return !Dim::SendCommand("DIM_CONTROL/STOP", fUser);
+
+    if (conf.Has("interrupt"))
+        return !Dim::SendCommand("DIM_CONTROL/INTERRUPT", conf.Get<string>("interrupt")+"\n"+fUser);
+
+    if (conf.Has("start"))
+        return !Dim::SendCommand("DIM_CONTROL/START", conf.Get<string>("start")+" user='"+fUser+"'"+fArgumentsJS);
+
+    if (conf.Has("batch"))
+        return !Dim::SendCommand("DIM_CONTROL/EXECUTE", conf.Get<string>("batch")+" user='"+fUser+"'");
+
+    if (conf.Has("msg"))
+        return !Dim::SendCommand("CHAT/MSG", fUser+": "+conf.Get<string>("msg"));
+
+    if (conf.Has("restart"))
+        return !Dim::SendCommand(conf.Get<string>("restart")+"/EXIT", uint32_t(126));
+
+    return -1;
+}
Index: branches/testFACT++branch/src/StateMachineDimControl.h
===================================================================
--- branches/testFACT++branch/src/StateMachineDimControl.h	(revision 18277)
+++ branches/testFACT++branch/src/StateMachineDimControl.h	(revision 18277)
@@ -0,0 +1,86 @@
+#ifndef FACT_StateMachineDimControl
+#define FACT_StateMachineDimControl
+
+#include <set>
+
+#include "DimState.h"
+#include "StateMachineDim.h"
+
+class Configuration;
+
+class StateMachineDimControl : public StateMachineDim
+{
+    std::mutex fMutex;
+
+    std::vector<DimDescriptions*> fDimDescriptionsList;
+
+    std::set<std::string> fServerList;
+    std::set<Service> fServiceList;
+    std::map<std::string, std::vector<std::string>> fCommandList;
+    std::map<std::string, State> fCurrentStateList;
+    std::map<std::pair<std::string, int32_t>, std::pair<std::string, std::string>> fStateDescriptionList;
+    std::map<std::string, std::vector<Description>> fServiceDescriptionList;
+
+    std::function<void(const std::string &, const State&)> fStateCallback;
+
+    DimVersion fDim;
+    DimDnsServiceList fDimList;
+
+    int  fVerbosity;
+    bool fDebug;
+
+    std::string fUser;
+    std::string fScriptUser;
+
+    /// Default arguments provided to very java script
+    std::string fArgumentsJS;
+
+    std::function<int(const EventImp &)> fInterruptHandler;
+
+    std::string Line(const std::string &txt, char fill);
+
+public:
+    static bool fIsServer;
+
+    int ChangeState(int qos, const Time &time, int scriptdepth, std::string scriptfile, std::string user);
+    int ChangeState(int state);
+
+    int StartScript(const EventImp &imp, const std::string &cmd);
+    int StopScript(const EventImp &imp);
+    int InterruptScript(const EventImp &imp);
+
+    int HandleStateChange(const std::string &server, DimDescriptions *state);
+    int HandleDescriptions(DimDescriptions *state);
+    int HandleStates(const std::string &server, DimDescriptions *state);
+    int HandleServerAdd(const std::string &server);
+    int HandleServerRemove(const std::string &server);
+    int HandleAddService(const Service &svc);
+
+    bool HasServer(const std::string &server);
+
+    std::vector<std::string> GetServerList();
+    std::vector<std::string> GetCommandList(const std::string &server);
+    std::vector<std::string> GetCommandList();
+    std::vector<Description> GetDescription(const std::string &service);
+    std::vector<State>       GetStates(const std::string &server);
+    std::set<Service>        GetServiceList();
+
+    int PrintStates(std::ostream &out, const std::string &serv="");
+    int PrintDescription(std::ostream &out, bool iscmd, const std::string &serv="", const std::string &service="");
+
+    State GetServerState(const std::string &server);
+
+    bool SendDimCommand(const std::string &server, std::string str, std::ostream &lout);
+
+    void SetStateCallback(const std::function<void(const std::string &, const State &)> &func) { fStateCallback = func; }
+
+    void SetInterruptHandler(const std::function<int(const EventImp &)> &func=std::function<int(const EventImp &)>()) { fInterruptHandler = func; }
+
+public:
+    StateMachineDimControl(std::ostream &out=std::cout);
+    ~StateMachineDimControl();
+
+    int EvalOptions(Configuration &conf);
+};
+
+#endif
Index: branches/testFACT++branch/src/StateMachineImp.cc
===================================================================
--- branches/testFACT++branch/src/StateMachineImp.cc	(revision 18277)
+++ branches/testFACT++branch/src/StateMachineImp.cc	(revision 18277)
@@ -0,0 +1,1076 @@
+// **************************************************************************
+/** @class StateMachineImp
+
+ @brief Base class for a state machine implementation
+
+ \dot
+  digraph example {
+      node [shape=record, fontname=Helvetica, fontsize=10];
+      s [ label="Constructor" style="rounded"  color="red"   URL="\ref StateMachineImp::StateMachineImp"];
+      a [ label="State -3 (kSM_NotReady)"      color="red"   URL="\ref StateMachineImp::StateMachineImp"];
+      b [ label="State -2 (kSM_Initializing)"  color="red"   URL="\ref StateMachineImp::StateMachineImp"];
+      c [ label="State -1 (kSM_Configuring)"   color="red"   URL="\ref StateMachineImp::StateMachineImp"];
+      y [ label="State 0 (kSM_Ready)"                        URL="\ref StateMachineImp::Run"];
+      r [ label="User states (Running)" ];
+      e [ label="State 256 (kSM_Error)" ];
+      f [ label="State 65535 (kSM_FatalError)" color="red"   URL="\ref StateMachineImp::Run"];
+
+      // ---- manual means: command or program introduced ----
+
+      // Startup from Run() to Ready
+      s -> a [ arrowhead="open" color="red"  style="solid"  ]; // automatic (mandatory)
+      a -> b [ arrowhead="open" color="red"  style="solid"  ]; // automatic (mandatory)
+      b -> c [ arrowhead="open" color="red"  style="solid"  ]; // automatic (mandatory)
+
+      c -> y [ arrowhead="open" color="red"  style="solid" URL="\ref StateMachineImp::Run" ]; // prg: Run()
+
+      y -> c [ arrowhead="open" style="dashed" URL="\ref StateMachineDim::exitHandler" ]; // CMD: EXIT
+      r -> c [ arrowhead="open" style="dashed" URL="\ref StateMachineDim::exitHandler" ]; // CMD: EXIT
+      e -> c [ arrowhead="open" style="dashed" URL="\ref StateMachineDim::exitHandler" ]; // CMD: EXIT
+
+      e -> y [ arrowhead="open" color="red"  style="dashed" ]; // CMD: RESET (e.g.)
+
+      y -> e [ arrowhead="open" color="blue" style="solid"  ]; // prg
+      r -> e [ arrowhead="open" color="blue" style="solid"  ]; // prg
+
+      y -> r [ arrowhead="open" color="blue" style="dashed" ]; // CMD/PRG
+      r -> y [ arrowhead="open" color="blue" style="dashed" ]; // CMD/PRG
+
+      y -> f [ arrowhead="open" color="blue" style="solid"  ]; // prg
+      r -> f [ arrowhead="open" color="blue" style="solid"  ]; // prg
+      e -> f [ arrowhead="open" color="blue" style="solid"  ]; // prg
+  }
+  \enddot
+
+  - <B>Red box</B>: Internal states. Events which are received are
+    discarded.
+  - <B>Black box</B>: State machine running. Events are accepted and
+    processed according to the implemented functions Transition(),
+    Configuration() and Execute(). Events are accepted accoding to the
+    lookup table of allowed transitions.
+  - <B>Red solid arrow</B>: A transition initiated by the program itself.
+  - <b>Dashed arrows in general</b>: Transitions which can be initiated
+    by a dim-command or get inistiated by the program.
+  - <b>Solid arrows in general</b>: These transitions are always initiated by
+    the program.
+  - <B>Red dashed</B>: Suggested RESET event (should be implemented by
+    the derived class)
+  - <B>Black dashed arrow</B>: Exit from the main loop. This can either
+    happen by the Dim-provided EXIT-command or a call to StateMachineDim::Stop.
+  - <B>Black arrows</B>: Other events or transitions which can be
+    implemented by the derived class.
+  - <B>Dotted black arrow</B>: Exit from the main-loop which is initiated
+    by the program itself through StateMachineDim::Stop() and not by the
+    state machine itself (Execute(), Configure() and Transition())
+  - <b>Blue dashed arrows</b>: Transitions which happen either by receiving
+    a event or are initiated from the state machine itself
+    (by return values of (Execute(), Configure() and Transition())
+  - <b>Blue solid</b>: Transitions which cannot be initiated by dim
+    event but only by the state machine itself.
+  - From the program point of view the fatal error is identical with
+    the kSM_Configuring state, i.e. it is returned from the main-loop.
+    Usually this will result in program termination. However, depending
+    on the state the program might decide to use different cleaning
+    routines.
+
+@todo
+   - A proper and correct cleanup after an EXIT or Stop() is missing.
+     maybe we have to force a state 0 first?
+*/
+// **************************************************************************
+#include "StateMachineImp.h"
+
+#include "Time.h"
+#include "Event.h"
+
+#include "WindowLog.h"
+#include "Converter.h"
+
+#include "tools.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! The state of the state machine (fCurrentState) is initialized with
+//! kSM_NotReady
+//!
+//! Default state names for kSM_NotReady, kSM_Ready, kSM_Error and
+//! kSM_FatalError are set via AddStateName.
+//!
+//! fExitRequested is set to 0, fRunning to false.
+//!
+//! Furthermore, the ostream is propagated to MessageImp, as well as
+//! stored in fOut.
+//!
+//! MessageImp is used for messages which are distributed (e.g. via DIM),
+//! fOut is used for messages which are only displayed on the local console.
+//!
+//! Subsequent, i.e. derived classes should setup all allowed state
+//! transitions as well as all allowed configuration event by
+//! AddEvent and AddStateName.
+//!
+//! @param out
+//!    A refrence to an ostream which allows to redirect the log-output
+//!    to something else than cout. The default is cout. The reference
+//!    is propagated to fLog
+//!
+//! @param name
+//!    The server name stored in fName
+//!
+//
+StateMachineImp::StateMachineImp(ostream &out, const std::string &name)
+    : MessageImp(out), fName(name), fCurrentState(kSM_NotReady),
+    fBufferEvents(true), fRunning(false), fExitRequested(0)
+{
+    SetDefaultStateNames();
+}
+
+// --------------------------------------------------------------------------
+//
+//! delete all object stored in fListOfEvent and in fEventQueue
+//
+StateMachineImp::~StateMachineImp()
+{
+    // For this to work EventImp must be the first class from which
+    // the object inherits
+    for (vector<EventImp*>::iterator cmd=fListOfEvents.begin(); cmd!=fListOfEvents.end(); cmd++)
+        delete *cmd;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Sets the default state names. This function should be called in
+//! derived classes again if they overwrite SetStateName().
+//
+void StateMachineImp::SetDefaultStateNames()
+{
+    AddStateName(kSM_NotReady,   "NotReady", "State machine not ready, events are ignored.");
+    AddStateName(kSM_Ready,      "Ready",    "State machine ready to receive events.");
+    AddStateName(kSM_Error,      "ERROR",    "Common error state.");
+    AddStateName(kSM_FatalError, "FATAL",    "A fatal error occured, the eventloop is stopped.");
+}
+
+// --------------------------------------------------------------------------
+//
+//! Puts the given event into the fifo. The fifo will take over ownership.
+//! Access to fEventQueue is encapsulated by fMutex.
+//!
+//! @param cmd
+//!    Pointer to an object of type Event to be stored in the fifo
+//!
+//! @todo
+//!    Can we also allow EventImp?
+//
+void StateMachineImp::PushEvent(Event *cmd)
+{
+    const lock_guard<mutex> guard(fMutex);
+    fEventQueue.emplace_back(cmd);
+    fCond.notify_one();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Get an event from the fifo. We will take over the owenership of the
+//! object. The pointer is deleted from the fifo. Access of fEventQueue
+//! is encapsulated by fMutex.
+//!
+//! @returns
+//!    A pointer to an Event object
+//
+shared_ptr<Event> StateMachineImp::PopEvent()
+{
+    const lock_guard<mutex> guard(fMutex);
+
+    // Get the next event from the stack
+    // and remove event from the stack
+    const shared_ptr<Event> cmd = fEventQueue.front();
+    fEventQueue.pop_front();
+    return cmd;
+}
+
+// --------------------------------------------------------------------------
+//
+//! With this function commands are posted to the event queue. The data
+//! is not given as binary data but as a string instead. It is converted
+//! according to the format of the corresponding event and an event
+//! is posted to the queue if successfull.
+//!
+//! @param lout
+//!    Stream to which output should be redirected
+//!    event should be for.
+//!
+//! @param str
+//!    Command with data, e.g. "COMMAND 1 2 3 4 5 test"
+//!
+//! @returns
+//!    false if no event was posted to the queue. If
+//!    PostEvent(EventImp&,const char*, size_t) was called return its
+//!    return value
+//
+bool StateMachineImp::PostEvent(ostream &lout, const string &str)
+{
+    // Find the delimiter between the command name and the data
+    size_t p0 = str.find_first_of(' ');
+    if (p0==string::npos)
+        p0 = str.length();
+
+    // Compile the command which will be sent to the state-machine
+    const string name = fName + "/" + str.substr(0, p0);
+
+    // Check if this command is existing at all
+    EventImp *evt = FindEvent(name);
+    if (!evt)
+    {
+        lout << kRed << "Unknown command '" << name << "'" << endl;
+        return false;
+    }
+
+    // Get the format of the event data
+    const string fmt = evt->GetFormat();
+
+    // Convert the user entered data according to the format string
+    // into a data block which will be attached to the event
+#ifndef DEBUG
+    ostringstream sout;
+    const Converter conv(sout, fmt, false);
+#else
+    const Converter conv(lout, fmt, false);
+#endif
+    if (!conv)
+    {
+        lout << kRed << "Couldn't properly parse the format... ignored." << endl;
+        return false;
+    }
+
+    try
+    {
+#ifdef DEBUG
+        lout << kBlue << name;
+#endif
+        const vector<char> v = conv.GetVector(str.substr(p0));
+#ifdef DEBUG
+        lout << endl;
+#endif
+
+        return PostEvent(*evt, v.data(), v.size());
+    }
+    catch (const std::runtime_error &e)
+    {
+        lout << endl << kRed << e.what() << endl;
+    }
+
+    return false;
+}
+
+// --------------------------------------------------------------------------
+//
+//! With this function commands are posted to the event queue. If the
+//! event loop has not yet been started with Run() the command is directly
+//! handled by HandleEvent.
+//!
+//! Events posted when the state machine is in a negative state or
+//! kSM_FatalError are ignored.
+//!
+//! A new event is created and its data contents initialized with the
+//! specified memory.
+//!
+//! @param evt
+//!    The event to be posted. The precise contents depend on what the
+//!    event should be for.
+//!
+//! @param ptr
+//!    pointer to the memory which should be attached to the event
+//!
+//! @param siz
+//!    size of the memory which should be attached to the event
+//!
+//! @returns
+//!    false if the event is ignored, true otherwise.
+//!
+//! @todo
+//!    - Shell we check for the validity of a command at the current state, too?
+//!    - should we also get the output stream as an argument here?
+//
+bool StateMachineImp::PostEvent(const EventImp &evt, const char *ptr, size_t siz)
+{
+    if (/*GetCurrentState()<0 ||*/ GetCurrentState()==kSM_FatalError)
+    {
+        Out() << kYellow << "State<0 or FatalError: Event ignored." << endl;
+        return false;
+    }
+
+    if (IsRunning() || fBufferEvents)
+    {
+        Event *event = new Event(evt, ptr, siz);
+        //Debug("Posted: "+event->GetName());
+        PushEvent(event);
+    }
+    else
+    {
+        // FIXME: Is this thread safe? (Yes, because the data is copied)
+        // But two handlers could be called at the same time. Do we
+        // need to lock the handlers? (Dim + console)
+        // FIXME: Is copying of the data necessary?
+        const Event event(evt, ptr, siz);
+        Lock();
+        HandleEvent(event);
+        UnLock();
+    }
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! With this function commands are posted to the event queue. If the
+//! event loop has not yet been started with Run() the command is directly
+//! handled by HandleEvent.
+//!
+//! Events posted when the state machine is in a negative state or
+//! kSM_FatalError are ignored.
+//!
+//! @param evt
+//!    The event to be posted. The precise contents depend on what the
+//!    event should be for.
+//!
+//! @returns
+//!    false if the event is ignored, true otherwise.
+//!
+//! @todo
+//!    - Shell we check for the validity of a command at the current state, too?
+//!    - should we also get the output stream as an argument here?
+//
+bool StateMachineImp::PostEvent(const EventImp &evt)
+{
+    if (/*GetCurrentState()<0 ||*/ GetCurrentState()==kSM_FatalError)
+    {
+        Out() << kYellow << "State<0 or FatalError: Event ignored." << endl;
+        return false;
+    }
+
+    if (IsRunning() || fBufferEvents)
+        PushEvent(new Event(evt));
+    else
+    {
+        // FIXME: Is this thread safe? (Yes, because it is only used
+        // by Dim and this is thread safe) But two handlers could
+        // be called at the same time. Do we need to lock the handlers?
+        HandleEvent(evt);
+    }
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Return all event names of the StateMachine
+//!
+//! @returns
+//!    A vector of strings with all event names of the state machine.
+//!    The event names all have the SERVER/ pre-fix removed.
+//
+const vector<string> StateMachineImp::GetEventNames()
+{
+    vector<string> v;
+
+    const string &name = fName + "/";
+    const int     len  = name.length();
+
+    const lock_guard<mutex> guard(fMutexEvt);
+
+    for (vector<EventImp*>::const_iterator i=fListOfEvents.begin();
+         i!=fListOfEvents.end(); i++)
+    {
+        const string evt = (*i)->GetName();
+
+        v.push_back(evt.substr(0, len)==name ? evt.substr(len) : evt);
+    }
+
+    return v;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Call for each event in fListEvents its Print function with the given
+//! stream.
+//!
+//! @param out
+//!    ostream to which the output should be redirected
+//!
+//! @param evt
+//!    if given only the given event is selected
+//
+void StateMachineImp::PrintListOfEvents(ostream &out, const string &evt)
+{
+    const lock_guard<mutex> guard(fMutexEvt);
+
+    for (vector<EventImp*>::const_iterator c=fListOfEvents.begin(); c!=fListOfEvents.end(); c++)
+        if (evt.empty() || GetName()+'/'+evt==(*c)->GetName())
+            (*c)->Print(out, true);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Call for each event in fListEvents its Print function with the given
+//! stream if it is an allowed event in the current state.
+//!
+//! @param out
+//!    ostream to which the output should be redirected
+//!
+//
+void StateMachineImp::PrintListOfAllowedEvents(ostream &out)
+{
+    const lock_guard<mutex> guard(fMutexEvt);
+
+    for (vector<EventImp*>::const_iterator c=fListOfEvents.begin(); c!=fListOfEvents.end(); c++)
+        if ((*c)->IsStateAllowed(fCurrentState))
+            (*c)->Print(out, true);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Call PrintListOfEvents with fOut as the output stream
+//!
+//! @param str
+//!    if given only the given event is selected
+//
+//
+void StateMachineImp::PrintListOfEvents(const string &str)
+{
+    PrintListOfEvents(Out(), str);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Print a list of all states with descriptions.
+//!
+//! @param out
+//!    ostream to which the output should be redirected
+//
+void StateMachineImp::PrintListOfStates(std::ostream &out) const
+{
+    out << endl;
+    out << kBold << "List of available states:" << endl;
+    for (StateNames::const_iterator i=fStateNames.begin(); i!=fStateNames.end(); i++)
+    {
+        ostringstream state;
+        state << i->first;
+        out << " -[" << kBold << state.str() << kReset << "]:" << setfill(' ') << setw(6-state.str().length()) << ' ' << kYellow << i->second.first << kBlue << " (" << i->second.second << ")" << endl;
+    }
+    out << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Print a list of all states with descriptions.
+//
+void StateMachineImp::PrintListOfStates() const
+{
+    PrintListOfStates(Out());
+}
+
+// --------------------------------------------------------------------------
+//
+//! Check whether an event (same pointer!) is in fListOfEvents
+//!
+//! @returns
+//!    true if the event was found, false otherwise
+//
+bool StateMachineImp::HasEvent(const EventImp *cmd)
+{
+    // Find the event from the list of commands and queue it
+    const lock_guard<mutex> guard(fMutexEvt);
+    return find(fListOfEvents.begin(), fListOfEvents.end(), cmd)!=fListOfEvents.end();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Check whether an event with the given name is found in fListOfEvents.
+//! Note that currently there is no mechanism which ensures that not two
+//! events have the same name.
+//!
+//! @returns
+//!    true if the event was found, false otherwise
+//
+EventImp *StateMachineImp::FindEvent(const string &evt)
+{
+    // Find the command from the list of commands and queue it
+    const lock_guard<mutex> guard(fMutexEvt);
+    for (vector<EventImp*>::const_iterator c=fListOfEvents.begin(); c!=fListOfEvents.end(); c++)
+        if (evt == (*c)->GetName())
+            return *c;
+
+    return 0;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calling this function, a new (named) event is added to the state
+//! machine. Via a call to CreateEvent a new event is created with the
+//! given targetstate, name and format. 
+//!
+//! The allowed states are passed to the new event and a message
+//! is written to the output-stream.
+//!
+//! @param name
+//!    The command name which should initiate the transition. The DimCommand
+//!    will be constructed with the name given to the constructor and this
+//!    name, e.g. "DRIVE/CHANGE_STATE_TO_NEW_STATE"
+//!
+//! @param states
+//!    A comma sepeareted list of ints, e.g. "1, 4, 5, 9" with states
+//!    in which this new state transition is allowed and will be accepted.
+//!
+//! @param fmt
+//!    A format as defined by the dim system can be given for the command.
+//!    However, it has no real meaning except that it is stored within the
+//!    DimCommand object. However, the user must make sure that the data of
+//!    received commands is properly extracted. No check is done.
+//
+EventImp &StateMachineImp::AddEvent(const string &name, const string &states, const string &fmt)
+{
+    EventImp *evt = CreateEvent(name, fmt);
+
+    evt->AddAllowedStates(states);
+
+#ifdef DEBUG
+    Out() << ":   " << Time().GetAsStr("%H:%M:%S.%f");
+    Out() << " - Adding command " << evt->GetName();
+    Out() << endl;
+#endif
+
+    const lock_guard<mutex> guard(fMutexEvt);
+    fListOfEvents.push_back(evt);
+    return *evt;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calling this function, a new (named) event is added to the state
+//! machine. Therefore an instance of type DimEvent is created and added
+//! to the list of available commands fListOfEvents.
+//!
+//! @param name
+//!    The command name which should initiate the transition. The DimCommand
+//!    will be constructed with the name given to the constructor and this
+//!    name, e.g. "DRIVE/CHANGE_STATE_TO_NEW_STATE"
+//!
+//! @param s1, s2, s3, s4, s5
+//!    A list of states from which a transition to targetstate is allowed
+//!    by this command.
+//
+EventImp &StateMachineImp::AddEvent(const string &name, int s1, int s2, int s3, int s4, int s5)
+{
+    ostringstream str;
+    str << s1 << ' '  << s2 << ' ' << s3 << ' ' << s4 << ' ' << s5;
+    return AddEvent(name, str.str(), "");
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calling this function, a new (named) event is added to the state
+//! machine. Therefore an instance of type DimEvent is created and added
+//! to the list of available commands fListOfEvents.
+//!
+//! @param name
+//!    The command name which should initiate the transition. The DimCommand
+//!    will be constructed with the name given to the constructor and this
+//!    name, e.g. "DRIVE/CHANGE_STATE_TO_NEW_STATE"
+//!
+//! @param fmt
+//!    A format as defined by the dim system can be given for the command.
+//!    However, it has no real meaning except that it is stored within the
+//!    DimCommand object. However, the user must make sure that the data of
+//!    received commands is properly extracted. No check is done.
+//!
+//! @param s1, s2, s3, s4, s5
+//!    A list of states from which a transition to targetstate is allowed
+//!    by this command.
+//
+EventImp &StateMachineImp::AddEvent(const string &name, const string &fmt, int s1, int s2, int s3, int s4, int s5)
+{
+    ostringstream str;
+    str << s1 << ' '  << s2 << ' ' << s3 << ' ' << s4 << ' ' << s5;
+    return AddEvent(name, str.str(), fmt);
+}
+
+EventImp *StateMachineImp::CreateService(const string &)
+{
+    return new EventImp();
+}
+
+// --------------------------------------------------------------------------
+//
+EventImp &StateMachineImp::Subscribe(const string &name)
+{
+    EventImp *evt = CreateService(name);
+
+    const lock_guard<mutex> guard(fMutexEvt);
+    fListOfEvents.push_back(evt);
+    return *evt;
+}
+
+void StateMachineImp::Unsubscribe(EventImp *evt)
+{
+    {
+        const lock_guard<mutex> guard(fMutexEvt);
+
+        auto it = find(fListOfEvents.begin(), fListOfEvents.end(), evt);
+        if (it==fListOfEvents.end())
+            return;
+
+        fListOfEvents.erase(it);
+    }
+    delete evt;
+}
+
+// --------------------------------------------------------------------------
+//
+//! To be able to name states, i.e. present the current state in human
+//! readable for to the user, a string can be assigned to each state.
+//! For each state this function can be called only once, i.e. state name
+//! cannot be overwritten.
+//!
+//! Be aware that two states should not have the same name!
+//!
+//! @param state
+//!    Number of the state to which a name should be assigned
+//!
+//! @param name
+//!    A name which should be assigned to the state, e.g. "Tracking"
+//!
+//! @param doc
+//!    A explanatory text describing the state
+//!
+bool StateMachineImp::AddStateName(const int state, const std::string &name, const std::string &doc)
+{
+    //auto it = fStateNames.find(state);
+
+    //if (/*it!=fStateNames.end() &&*/ !it->second.first.empty())
+    //    return false;
+
+    fStateNames[state] = make_pair(name, doc);
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Get a state's index by its name.
+//!
+//! @param name
+//!    Name of the state to search for
+//!
+//! @returns
+//!    Index of the state if found, kSM_NotAvailable otherwise
+//!
+int StateMachineImp::GetStateIndex(const string &name) const
+{
+    for (auto it=fStateNames.begin(); it!=fStateNames.end(); it++)
+        if (it->second.first==name)
+            return it->first;
+
+    return kSM_NotAvailable;
+}
+
+// --------------------------------------------------------------------------
+//
+//! @param state
+//!    The state for which the name should be returned.
+//!
+//! @returns
+//!    The state name as stored in fStateNames is returned, corresponding
+//!    to the state given. If no name exists the number is returned
+//!    as string.
+//!
+const string StateMachineImp::GetStateName(int state) const
+{
+    const StateNames::const_iterator i = fStateNames.find(state);
+    return i==fStateNames.end() || i->second.first.empty() ? to_string(state) : i->second.first;
+}
+
+// --------------------------------------------------------------------------
+//
+//! @param state
+//!    The state for which should be checked
+//!
+//! @returns
+//!    true if a nam for this state already exists, false otherwise
+//!
+bool StateMachineImp::HasState(int state) const
+{
+    return fStateNames.find(state) != fStateNames.end();
+}
+
+// --------------------------------------------------------------------------
+//
+//! @param state
+//!    The state for which the name should be returned.
+//!
+//! @returns
+//!    The description of a state name as stored in fStateNames is returned,
+//!    corresponding to the state given. If no name exists an empty string is
+//!    returned.
+//!
+const string StateMachineImp::GetStateDesc(int state) const
+{
+    const StateNames::const_iterator i = fStateNames.find(state);
+    return i==fStateNames.end() ? "" : i->second.second;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This functions works in analogy to GetStateName, but the state number
+//! is added in []-parenthesis after the state name if it is available.
+//!
+//! @param state
+//!    The state for which the name should be returned.
+//!
+//! @returns
+//!    The state name as stored in fStateName is returned corresponding
+//!    to the state given plus the state number added in []-parenthesis.
+//!    If no name exists the number is returned as string.
+//!
+//
+const string StateMachineImp::GetStateDescription(int state) const
+{
+    const string &str = GetStateName(state);
+
+    ostringstream s;
+    s << state;
+    if (str==s.str())
+        return str;
+
+    return str.empty() ? s.str() : (str+'['+s.str()+']');
+}
+
+// --------------------------------------------------------------------------
+//
+//! This function is a helpter function to do all the corresponding action
+//! if the state machine decides to change its state.
+//!
+//! If state is equal to the current state (fCurrentState) nothing is done.
+//! Then the service STATE (fSrcState) is updated with the new state
+//! and the text message and updateService() is called to distribute
+//! the update to all clients.
+//!
+//! In addition a log message is created and set via UpdateMsg.
+//!
+//! @param state
+//!    The new state which should be applied
+//!
+//! @param txt
+//!    A text corresponding to the state change which is distributed
+//!    together with the state itself for convinience.
+//!
+//! @param cmd
+//!    This argument can be used to give an additional name of the function
+//!    which is reponsible for the state change. It will be included in the
+//!    message
+//!
+//! @return
+//!    return the new state which was set or -1 in case of no change
+//
+string StateMachineImp::SetCurrentState(int state, const char *txt, const std::string &cmd)
+{
+    if (state==fCurrentState)
+    {
+        Out() << " -- " << Time().GetAsStr("%H:%M:%S.%f") << " - State " << GetStateDescription(state) << " already set... ";
+        if (!cmd.empty())
+            Out() << "'" << cmd << "' ignored.";
+        Out() << endl;
+        return "";
+    }
+
+    const int old = fCurrentState;
+
+    const string nold = GetStateDescription(old);
+    const string nnew = GetStateDescription(state);
+
+    string msg = nnew + " " + txt;
+    if (!cmd.empty())
+        msg += " (" + cmd + ")";
+
+    fCurrentState = state;
+
+    // State might have changed already again...
+    // Not very likely, but possible. That's why state is used
+    // instead of fCurrentState.
+
+    ostringstream str;
+    str << "State Transition from " << nold << " to " << nnew << " (" << txt;
+    if (!cmd.empty())
+        str << ": " << cmd;
+    str << ")";
+    Message(str);
+
+    return msg;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This function handles a new state issued by one of the event handlers.
+//!
+//! @param newstate
+//!    A possible new state
+//!
+//! @param evt
+//!    A pointer to the event which was responsible for the state change,
+//!    NULL if no event was responsible.
+//!
+//! @param txt
+//!    Text which is issued if the current state has changed and the new
+//!    state is identical to the target state as stored in the event
+//!    reference, or when no alternative text was given, or the pointer to
+//!    evt is NULL.
+//!
+//! @param alt
+//!    An alternative text which is issues when the newstate of a state change
+//!    doesn't match the expected target state.
+//!
+//! @returns
+//!    false if newstate is kSM_FatalError, true otherwise
+//
+bool StateMachineImp::HandleNewState(int newstate, const EventImp *evt,
+                                     const char *txt)
+{
+    if (newstate==kSM_FatalError)
+        return false;
+
+    if (newstate==fCurrentState || newstate==kSM_KeepState)
+        return true;
+
+    SetCurrentState(newstate, txt, evt ? evt->GetName() : "");
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is the event handler. Depending on the type of event it calles
+//! the function associated with the event, the Transition() or
+//! Configure() function.
+//!
+//! It first checks if the given even is valid in the current state. If
+//! it is not valid the function returns with true.
+//!
+//! If it is valid, it is checked whether a function is associated with
+//! the event. If this is the case, evt.Exec() is called and HandleNewState
+//! called with its return value. 
+//!
+//! If the event's target state is negative (unnamed Event) the Configure()
+//! function is called with the event as argument and HandleNewState with
+//! its returned new state.
+//!
+//! If the event's target state is 0 or positive (named Event) the
+//! Transition() function is called with the event as argument and
+//! HandleNewState with its returned new state.
+//!
+//! In all three cases the return value of HandleNewState is returned.
+//!
+//! Any of the three commands should usually return the current state
+//! or (in case of the Transition() command) return the new state. However,
+//! all three command can issue a state change by returning a new state.
+//! However, this will just change the internal state. Any action which
+//! is connected with the state change must have been executed already.
+//!
+//! @param evt
+//!    a reference to the event which should be handled
+//!
+//! @returns
+//!    false in case one of the commands changed the state to kSM_FataError,
+//!    true otherwise
+//
+bool StateMachineImp::HandleEvent(const EventImp &evt)
+{
+    if (!evt.HasFunc())
+    {
+        Warn(evt.GetName()+": No function assigned... ignored.");
+        return true;
+
+    }
+
+#ifdef DEBUG
+    ostringstream out;
+    out << "Handle: " << evt.GetName() << "[" << evt.GetSize() << "]";
+    Debug(out);
+#endif
+
+    // Check if the received command is allow in the current state
+    if (!evt.IsStateAllowed(fCurrentState))
+    {
+        Warn(evt.GetName()+": Not allowed in state "+GetStateDescription()+"... ignored.");
+        return true;
+    }
+
+    return HandleNewState(evt.ExecFunc(), &evt,
+                          "by ExecFunc function-call");
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is the main loop, or what could be called the running state
+//! machine. The flow diagram below shows what the loop is actually doing.
+//! It's main purpose is to serialize command excecution and the main
+//! loop in the state machine (e.g. the tracking loop)
+//!
+//! Leaving the loop can be forced by setting fExitRequested to another
+//! value than zero. This is done automatically if dim's EXIT command
+//! is received or can be forced by calling Stop().
+//!
+//! As long as no new command arrives the Execute() command is called
+//! continously. This should implement the current action which
+//! should be performed in the current state, e.g. calculating a
+//! new command value and sending it to the hardware.
+//!
+//! If a command is received it is put into the fifo by the commandHandler().
+//! The main loop now checks the fifo. If commands are in the fifo, it is
+//! checked whether the command is valid ithin this state or not. If it is
+//! not valid it is ignored. If it is valid the corresponding action
+//! is performed. This can either be a call to Configure() (when no state
+//! change is connected to the command) or Transition() (if the command
+//! involves a state change).
+//! In both cases areference to the received command (Command) is
+//! passed to the function. Note that after the functions have finished
+//! the command will go out of scope and be deleted.
+//!
+//! None of the commands should take to long for execution. Otherwise the
+//! response time of the main loop will become too slow.
+//!
+//! Any of the three commands should usually return the current state
+//! or (in case of the Transition() command) return the new state. However,
+//! all three command can issue a state change by returning a new state.
+//! However, this will just change the internal state. Any action which
+//! is connected with the state change must have been executed already.
+//!
+//!
+//!
+//!  \dot
+//!   digraph Run {
+//!       node  [ shape=record, fontname=Helvetica, fontsize=10 ];
+//!       edge  [ labelfontname=Helvetica, labelfontsize=8 ];
+//!       start0 [ label="Run()" style="rounded"];
+//!       start1 [ label="fExitRequested=0\nfRunning=true\nSetCurrentState(kSM_Ready)"];
+//!       cond1  [ label="Is fExitRequested==0?"];
+//!       exec   [ label="HandleNewState(Execute())"];
+//!       fifo   [ label="Any event in FIFO?"];
+//!       get    [ label="Get event from FIFO\n Is event allowed within the current state?" ];
+//!       handle [ label="HandleEvent()" ];
+//!       exit1  [ label="fRunning=false\nSetCurrentState(kSM_FatalError)\n return -1" style="rounded"];
+//!       exit2  [ label="fRunning=false\nSetCurrentState(kSM_NotReady)\n return fExitRequested-1" style="rounded"];
+//!
+//!       start0   -> start1   [ weight=8 ];
+//!       start1   -> cond1    [ weight=8 ];
+//!
+//!       cond1:e  -> exit2:n  [ taillabel="true"  ];
+//!       cond1    -> exec     [ taillabel="false"  weight=8 ];
+//!
+//!       exec     -> fifo     [ taillabel="true"   weight=8 ];
+//!       exec:e   -> exit1:e  [ taillabel="false" ];
+//!
+//!       fifo     -> cond1    [ taillabel="false" ];
+//!       fifo     -> get      [ taillabel="true"   weight=8 ];
+//!
+//!       get      -> handle   [ taillabel="true"  ];
+//!
+//!       handle:s -> exit1:n  [ taillabel="false"  weight=8 ];
+//!       handle   -> cond1    [ taillabel="true"  ];
+//!   }
+//!   \enddot
+//!
+//! @param dummy
+//!    If this parameter is set to treu then no action is executed
+//!    and now events are dispatched from the event list. It is usefull
+//!    if functions are assigned directly to any event to simulate
+//!    a running loop (e.g. block until Stop() was called or fExitRequested
+//!    was set by an EXIT command.  If dummy==true, fRunning is not set
+//!    to true to allow handling events directly from the event handler.
+//!
+//! @returns
+//!    In the case of a a fatal error -1 is returned, fExitRequested-1 in all
+//!    other cases (This corresponds to the exit code either received by the
+//!    EXIT event or given to the Stop() function)
+//!
+//! @todo  Fix docu (kSM_SetReady, HandleEvent)
+//
+int StateMachineImp::Run(bool dummy)
+{
+    if (fCurrentState>=kSM_Ready)
+    {
+        Error("Run() can only be called in the NotReady state.");
+        return -1;
+    }
+
+    if (!fExitRequested)
+    {
+        fRunning = !dummy;
+
+        SetCurrentState(kSM_Ready, "by Run()");
+
+        std::unique_lock<std::mutex> lock(fMutex);
+        fMutex.unlock();
+
+        while (1)
+        {
+            fMutex.lock();
+            if (IsQueueEmpty())
+                fCond.wait_for(lock, chrono::microseconds(10000));
+            fMutex.unlock();
+
+            if (fExitRequested)
+                break;
+
+            if (dummy)
+                continue;
+
+            // If the command stack is empty go on with processing in the
+            // current state
+            if (!IsQueueEmpty())
+            {
+                // Pop the next command which arrived from the stack
+                const shared_ptr<Event> cmd(PopEvent());
+                if (!HandleEvent(*cmd))
+                    break;
+            }
+
+            // Execute a step in the current state of the state machine
+            if (!HandleNewState(Execute(), 0, "by Execute-command"))
+                break;
+        }
+
+        fRunning = false;
+
+        if (!fExitRequested)
+        {
+            Fatal("Fatal Error occured... shutting down.");
+            return -1;
+        }
+
+        SetCurrentState(kSM_NotReady, "due to return from Run().");
+    }
+
+    const int exitcode = fExitRequested-1;
+
+    // Prepare for next call
+    fExitRequested = 0;
+
+    return exitcode;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This function can be called to stop the loop of a running state machine.
+//! Run() will then return with a return value corresponding to the value
+//! given as argument.
+//!
+//! Note that this is a dangerous operation, because as soon as one of the
+//! three state machine commands returns (Execute(), Configure() and
+//! Transition()) the loop will be left and Run(9 will return. The program
+//! is then responsible of correctly cleaning up the mess which might be left
+//! behind.
+//!
+//! @param code
+//!    int with which Run() should return when returning.
+//
+void StateMachineImp::Stop(int code)
+{
+    fExitRequested = code+1;
+}
Index: branches/testFACT++branch/src/StateMachineImp.h
===================================================================
--- branches/testFACT++branch/src/StateMachineImp.h	(revision 18277)
+++ branches/testFACT++branch/src/StateMachineImp.h	(revision 18277)
@@ -0,0 +1,259 @@
+#ifndef FACT_StateMachineImp
+#define FACT_StateMachineImp
+
+#include <map>
+#include <list>
+#include <mutex>
+#include <vector>
+#include <memory>
+#include <condition_variable>
+
+#include "MainImp.h"
+#include "MessageImp.h"
+
+class Event;
+class EventImp;
+
+class StateMachineImp : public MainImp, public MessageImp
+{
+public:
+    /// A list of default states available to any state machine.
+    /// Derived classes must define different state-number for
+    /// their purpose
+    enum DefaultStates_t
+    {
+        kSM_KeepState    =    -42,  ///< 
+        kSM_NotAvailable =     -2,  ///< Possible return value for GetStateIndex
+        kSM_NotReady     =     -1,  ///< Mainloop not running, state machine stopped
+        kSM_Ready        =      0,  ///< Mainloop running, state machine in operation
+        kSM_UserMode     =      1,  ///< First user defined mode (to be used in derived classes' enums)
+        kSM_Error        =  0x100,  ///< Error states should be between 0x100 and 0xffff
+        kSM_FatalError   = 0xffff,  ///< Fatal error: stop program
+    };
+
+private:
+    std::string fName;   /// Name of the state-machine / server (e.g. DRIVE)
+
+    int fCurrentState;   /// Current state of the state machine
+
+    typedef std::map<const int, std::pair<std::string, std::string>> StateNames;
+
+protected:
+    /// Human readable names associated with the states
+    StateNames fStateNames;
+
+private:
+    std::vector<EventImp*> fListOfEvents; /// List of available commands as setup by user
+    std::list<std::shared_ptr<Event>> fEventQueue;   /// Event queue (fifo) for the received commands
+
+    std::mutex fMutex;    /// Mutex to ensure thread-safe access to the command fifo
+    std::mutex fMutexEvt; /// Mutex to ensure thread-safe access to the command fifo
+
+    std::condition_variable fCond; /// Conditional to signal run the an event is waiting
+
+    bool fBufferEvents;  /// Flag if events should be buffered outside the event loop
+
+protected:
+    bool fRunning;       /// Machine is in main-loop
+    int  fExitRequested; /// This is a flag which is set true if the main loop should stop
+
+    /// Push a command into the fifo. The fifo takes over ownership
+    virtual void PushEvent(Event *cmd);
+    /// Pop a command from the fifo.
+    std::shared_ptr<Event> PopEvent();
+
+    bool HandleNewState(int newstate, const EventImp *evt, const char *txt);
+
+protected:
+    /// Is called continously to execute actions in the current state
+    virtual int Execute() { return fCurrentState; }
+    /// Is called when a configuration event is to be processed (no transition of state)
+    //virtual int Configure(const Event &) { return kSM_FatalError; }
+    /// Is called when a transition change event is to be processed (from one state to another) is received
+    //virtual int Transition(const Event &) { return kSM_FatalError; }
+
+private:
+    virtual EventImp *CreateEvent(const std::string &name, const std::string &fmt) = 0;
+    virtual EventImp *CreateService(const std::string &);
+
+    virtual void Lock() { }
+    virtual void UnLock() { }
+
+    int Wrapper(const std::function<int(const EventImp &)> &f, const EventImp &imp)
+    {
+        const int rc = f(imp);
+        return rc==kSM_KeepState ? GetCurrentState() : rc;
+    }
+
+protected:
+
+    bool HandleEvent(const EventImp &evt);
+
+    /// This is an internal function to do some action in case of
+    /// a state change, like updating the corresponding service.
+    virtual std::string SetCurrentState(int state, const char *txt="", const std::string &cmd="");
+
+    EventImp &AddEvent(const std::string &name, const std::string &states, const std::string &fmt);
+    EventImp &AddEvent(const std::string &name, int s1=-1, int s2=-1, int s3=-1, int s4=-1, int s5=-1);
+    EventImp &AddEvent(const std::string &name, const std::string &fmt, int s1=-1, int s2=-1, int s3=-1, int s4=-1, int s5=-1);
+
+    virtual bool AddStateName(const int state, const std::string &name, const std::string &doc="");
+
+    void SetDefaultStateNames();
+
+public:
+    StateMachineImp(std::ostream &out=std::cout, const std::string &name="");
+    ~StateMachineImp();
+
+    std::function<int(const EventImp &)> Wrap(const std::function<int(const EventImp &)> &func)
+    {
+        return bind(&StateMachineImp::Wrapper, this, func, std::placeholders::_1);
+    }
+
+    const std::string &GetName() const { return fName; }
+
+    EventImp &Subscribe(const std::string &name);
+    void Unsubscribe(EventImp *evt);
+
+    /// return the current state of the machine
+    int GetCurrentState() const { return fCurrentState; }
+
+    void SetReady()    { SetCurrentState(kSM_Ready, "set manually");    }
+    void SetNotReady() { SetCurrentState(kSM_NotReady, "set manually"); }
+
+    /// Start the mainloop
+    virtual int Run(bool dummy);
+    int Run() { return Run(false); }
+
+    /// Request to stop the mainloop
+    virtual void Stop(int code=0);
+
+    /// Used to check if the main loop is already running or still running
+    bool IsRunning() const { return fRunning; }
+
+    /// Used to enable or disable buffering of events outside of the main loop
+    void EnableBuffer(bool b=true) { fBufferEvents=b; }
+
+    /// Post an event to the event queue
+    bool PostEvent(std::ostream &lout, const std::string &str);
+    bool PostEvent(const std::string &evt) { return PostEvent(std::cout, evt); }
+    bool PostEvent(const EventImp &evt);
+    bool PostEvent(const EventImp &evt, const char *ptr, size_t siz);
+
+    // Event handling
+    bool HasEvent(const EventImp *cmd);
+    EventImp *FindEvent(const std::string &evt);
+
+    bool IsQueueEmpty() const { return fEventQueue.empty(); }
+
+    //const std::vector<EventImp*> &GetListOfEvents() const { return fListOfEvents; }
+    const std::vector<std::string> GetEventNames();
+
+    void PrintListOfEvents(std::ostream &out, const std::string &evt="");
+    void PrintListOfEvents(const std::string &str="");
+
+    void PrintListOfAllowedEvents(std::ostream &out);
+    void PrintListOfAllowedEvents();
+
+    void PrintListOfStates(std::ostream &out) const;
+    void PrintListOfStates() const;
+
+
+    int GetStateIndex(const std::string &name) const;
+    bool HasState(int index) const;
+
+    const std::string GetStateName(int state) const;
+    const std::string GetStateName() const { return GetStateName(fCurrentState); }
+
+    const std::string GetStateDesc(int state) const;
+    const std::string GetStateDesc() const { return GetStateDesc(fCurrentState); }
+
+    const std::string GetStateDescription(int state) const;
+    const std::string GetStateDescription() const { return GetStateDescription(fCurrentState); }
+};
+
+#endif
+
+// ***************************************************************************
+/** @fn StateMachineImp::Execute()
+
+This is what the state machine is doing in a certain state
+continously. In an idle state this might just be doing nothing.
+
+In the tracking state of the drive system this might be sending
+new command values to the drive based on its current position.
+
+The current state of the state machine can be accessed by GetCurrentState()
+
+@returns
+   Usually it should just return the current state. However, sometimes
+   execution might lead to a new state, e.g. when a hardware error
+   is detected. In this case a new state can be returned to put the state
+   machine into a different state. Note, that the function is responsible
+   of doing all actions connected with the state change itself.
+   If not overwritten it returns the current status.
+
+**/
+// ***************************************************************************
+/** @fn StateMachineImp::Configure(const Event &evt)
+
+This function is called when a configuration event is to be processed.
+
+The current state of the state machine is accessible via GetCurrentState().
+
+The issued event and its corresponding data is accessible through
+evn. (see Event and DimEvent for details) Usually such an event
+will not change the state. In this case fCurrentState will be returned.
+However, to allow the machine to go into an error state it is possible
+to change the state by giving a different return value. When the
+Configure function is called the validity of the state transition has
+already been checked.
+
+@param evt
+   A reference to an Event object with the event which should
+   be processed. Note that the cmd-object will get deleted after the
+   function has returned.
+
+@returns
+   Usually it should just return the current state. However, sometimes
+   a configuration command which was not intended to change the state
+   has to change the state, e.g. to go to an error state. Return any
+   other state than GetCurrentState() can put the state machine into
+   a different state.  Note, that the function is responsible
+   of doing all actions connected with the state change itself.
+   If not overwritten it returns kSM_FatalError.
+
+**/
+// ***************************************************************************
+/** @fn StateMachineImp::Transition(const Event &evt)
+
+This function is called if a state transision was requested.
+
+The current state of the state machine is accessible via GetCurrentState().
+
+The new state is accessible via evt.GetTargetState().
+
+The event and its corresponding data is accessible through evt.
+(see DimCommand and DimEvent for details) If the transition was
+successfull the new status should be returned. If it was unsuccessfull
+either the old or any other new status will be returned.
+
+When the Transition function is called the validity of the state
+transition has already been checked.
+
+@param evt
+   A reference to an Event object with the event which should
+   be processed. Note that the cmd-object will get deleted after the
+   function has returned.
+
+@returns
+   Usually it should return the new state. However, sometimes
+   a transition command might has to change the state to a different
+   state than the one requested (e.g. an error has occured) In this
+   case it is also allowed to return a different state.  Note, that the
+   function is responsible of doing all actions connected with the
+   state change itself.
+   If not overwritten it returns kSM_FatalError.
+
+**/
+// ***************************************************************************
Index: branches/testFACT++branch/src/Time.cc
===================================================================
--- branches/testFACT++branch/src/Time.cc	(revision 18277)
+++ branches/testFACT++branch/src/Time.cc	(revision 18277)
@@ -0,0 +1,483 @@
+// **************************************************************************
+/** @class Time
+
+@brief Adds some functionality to boost::posix_time::ptime for our needs
+
+This is basically a wrapper around boost::posix_time::ptime which is made
+to adapt the functionality to our needs. Time can store the current
+data and time with a precision up to nanoseconds if provided by the
+undrlaying system, otherwise microsecond precision is used.
+
+It main purpose is to provide needed constructors and simplyfy the
+conversion of dates and times from and to a string/stream.
+
+Note that posix_time (as Posix times have) has a limited range. You cannot
+use it for example for very early years of the last century.
+
+@section Examples
+
+ - An example can be found in \ref time.cc
+
+@section References
+
+ - <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/date_time.html">BOOST++ date_time (V1.45.0)</A>
+
+**/
+// **************************************************************************
+#include "Time.h"
+
+#ifdef HAVE_LIBNOVA
+#include "../externals/nova.h"
+#endif
+
+using namespace std;
+using namespace boost::posix_time;
+
+const boost::gregorian::date Time::fUnixOffset(1970, 1, 1);
+
+const Time Time::None(Time::none);
+
+// strftime
+const _time_format Time::reset  = 0;
+const _time_format Time::def    = "%c";
+const _time_format Time::std    = "%x %X%F";
+const _time_format Time::sql    = "%Y-%m-%d %H:%M:%S.%f";
+const _time_format Time::ssql   = "%Y-%m-%d %H:%M:%S";
+const _time_format Time::iso    = "%Y-%m-%dT%H:%M:%S%F%q";
+const _time_format Time::magic  = "%Y %m %d %H %M %S %f";
+const _time_format Time::smagic = "%Y %m %d %H %M %S";
+
+// --------------------------------------------------------------------------
+//
+//! Construct a Time object with either UTC or local time, or without any
+//! particular time.
+//!
+//! @param typ
+//!    enum as defined in Time::init_t
+//
+Time::Time(enum init_t typ)
+{
+    switch (typ)
+    {
+    case utc:
+        *this = microsec_clock::universal_time();
+        break;
+    case local:
+        *this = microsec_clock::local_time();
+        break;
+    case none:
+        break;
+    }
+}
+
+
+// --------------------------------------------------------------------------
+//
+//! Construct a Time object with a date_time::special_value, e.g.
+//!
+//!  - neg_infin
+//!  - pos_infin
+//!  - not_a_date_time
+//!  - max_date_time
+//!  - min_date_time
+//!
+//!
+//! @param val
+//!    date_time::special_value
+//
+Time::Time(const boost::date_time::special_values &val) : ptime(val)
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Construct a Time object from seconds since 1970/1/1 and number of
+//! milliseconds, as for example returned by gettimeofday()
+//!
+//! @param tm
+//!    seconds since 1970/1/1
+//!
+//! @param millisec
+//!    number of milliseconds
+//
+Time::Time(const time_t &tm, const suseconds_t &usec)
+: ptime(fUnixOffset, time_duration(0, 0, tm, usec*pow(10, time_duration::num_fractional_digits()-6)))
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Construct a Time object from a struct timeval.
+//!
+//! @param tv
+//!    struct timeval
+//!
+Time::Time(const timeval &tv)
+: ptime(fUnixOffset, time_duration(0, 0, tv.tv_sec, tv.tv_usec*pow(10, time_duration::num_fractional_digits()-6)))
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Construct a Time from a date and time.
+//!
+//! @param year, month, day, hh, mm, ss, microsec
+//!    A full date and time down to microsecond precision. From the end
+//!    arguments can be omitted.
+//!
+Time::Time(short year, unsigned char month, unsigned char day,
+           unsigned char hh, unsigned char mm, unsigned char ss, unsigned int microsec)
+// Last argument is fractional_seconds ( correct with num_fractional_digits() )
+: ptime(boost::gregorian::date(year, month, day),
+        time_duration(hh, mm, ss, microsec*pow(10, time_duration::num_fractional_digits()-6)))
+{
+}
+
+// --------------------------------------------------------------------------
+//
+//! Set the Time object to a given MJD. Note that this involves
+//! conversion from double. So converting forth and back many many
+//! times might results in drifts.
+//!
+//! @param mjd
+//!    Modified Julian Date
+//!
+void Time::Mjd(double mjd)
+{
+    if (mjd > 2400000.5)
+        mjd -= 2400000.5;
+
+    // Convert MJD to seconds since offset
+    mjd -= 40587;
+    mjd *= 24*60*60;
+
+    const double frac = fmod(mjd, 1)*pow(10, time_duration::num_fractional_digits());
+
+    *this = ptime(fUnixOffset, time_duration(0, 0, mjd, frac));
+}
+
+// --------------------------------------------------------------------------
+//
+//! @returns the seconds of the day including the fractional seconds.
+//!
+double Time::SecondsOfDay() const
+{
+    const time_duration tod = time_of_day();
+
+    const double frac = tod.fractional_seconds()/pow(10, time_duration::num_fractional_digits());
+    const double sec  = tod.total_seconds()+frac;
+
+    return sec;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Get the current MJD. Note that this involves
+//! conversion to double. So converting forth and back many many
+//! times might results in drifts.
+//!
+//! @returns
+//!    Modified Julian Date
+//!
+double Time::Mjd() const
+{
+    return date().modjulian_day()+SecondsOfDay()/(24*60*60);
+
+    /*
+     const time_duration mjd = *this - ptime(fUnixOffset);
+     const double sec = mjd.total_seconds()+mjd.fractional_seconds()/1e6;
+     return sec/(24*60*60)+40587;
+     */
+}
+
+// --------------------------------------------------------------------------
+//
+// @returns seconds since 1970/1/1
+//
+double Time::UnixTime() const
+{
+    return (date().modjulian_day()-40587)*24*60*60 + SecondsOfDay();
+}
+
+// --------------------------------------------------------------------------
+//
+// @returns days since 1970/1/1
+//
+double Time::UnixDate() const
+{
+    return (date().modjulian_day()-40587) + SecondsOfDay()/(24*60*60);
+}
+
+// --------------------------------------------------------------------------
+//
+// @returns seconds since 1970/1/1
+//
+time_t Time::Time_t() const
+{
+    return (date().modjulian_day()-40587)*24*60*60 + time_of_day().total_seconds();
+}
+
+// --------------------------------------------------------------------------
+//
+//! @returns the time in a format needed for root's TAxis
+//!
+double Time::RootTime() const
+{
+    return (date().modjulian_day()-49718)*24*60*60 + SecondsOfDay();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Returns a string with the contents of the Time object formated
+//! as defined in format.
+//!
+//! @param format
+//!    format description of the string to be returned. For details
+//!    see the boost documentation or the man page of strftime
+//!
+//! @returns
+//!    A string with the time formatted as requested. Note some special
+//!    strings might be returned in case the time is invalid.
+//
+string Time::GetAsStr(const char *format) const
+{
+    stringstream out;
+    out << Time::fmt(format) << *this;
+    return out.str();
+}
+
+// --------------------------------------------------------------------------
+//
+//! @returns
+//!     a human readable string which complies with ISO 8601, in the
+//!    "CCYY-MM-DDThh:mm:ss.f"
+//
+string Time::Iso() const
+{
+    stringstream out;
+    out << Time::iso << *this;
+    return out.str();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Sets the time of the Time object to a time corresponding to
+//! the one given as argument. It is evaluated according to the given
+//! format.
+//!
+//! @param str
+//!    The time as a string which should be converted to the Time object
+//!
+//! @param format
+//!    format description of the string to be returned. For details
+//!    see the boost documentation or the man page of strftime
+//!
+void Time::SetFromStr(const string &str, const char *format)
+{
+    // FIXME: exception handline
+    stringstream stream;
+    stream << str;
+    stream >> Time::fmt(format) >> *this;
+}
+
+string Time::MinutesTo(const Time &time) const
+{
+    ostringstream str;
+    if (time>*this)
+        str << time-*this;
+    else
+        str << *this-time;
+    return str.str().substr(0, 5);
+}
+
+string Time::SecondsTo(const Time &time) const
+{
+    ostringstream str;
+    if (time>*this)
+        str << time-*this;
+    else
+        str << *this-time;
+    return str.str().substr(str.str().substr(0, 3)=="00:" ? 3 : 0, 5);
+}
+
+// --------------------------------------------------------------------------
+//
+//! @returns
+//!     The time of the previous sun-rise, relative to given horizon in degree,
+//!     for the coordinates of the ORM, La Palma.
+//!     if libnova was not compiled in, it will return the next noon.
+//!
+//!  @throws
+//!     a runtime_error exception is thrown if the calculation of the sun-rise
+//!     by libnova fails (this would happen if libnova thinks the sun is
+//!     circumpolar which should never happen at La Palma)
+//
+Time Time::GetPrevSunRise(double horizon) const
+{
+#ifdef HAVE_LIBNOVA
+    Nova::LnLatPosn obs = Nova::ORM();
+
+    ln_rst_time sun_day;
+    if (ln_get_solar_rst_horizon(JD()-0.5, &obs, horizon, &sun_day)==1)
+        throw runtime_error("ln_get_solar_rst_horizon reported the sun to be circumpolar at the coordinates of La Palma!");
+
+    if (Time(sun_day.rise)<*this)
+        return Time(sun_day.rise);
+
+    if (ln_get_solar_rst_horizon(JD()-1.5, &obs, horizon, &sun_day)==1)
+        throw runtime_error("ln_get_solar_rst_horizon reported the sun to be circumpolar at the coordinates of La Palma!");
+
+    return Time(sun_day.rise);
+#else
+    return Time(floor(Mjd()-0.5)+0.5);
+#endif
+}
+
+// --------------------------------------------------------------------------
+//
+//! @returns
+//!     The time of the next sun-rise, relative to given horizon in degree,
+//!     for the coordinates of the ORM, La Palma.
+//!     if libnova was not compiled in, it will return the next noon.
+//!
+//!  @throws
+//!     a runtime_error exception is thrown if the calculation of the sun-rise
+//!     by libnova fails (this would happen if libnova thinks the sun is
+//!     circumpolar which should never happen at La Palma)
+//
+Time Time::GetNextSunRise(double horizon) const
+{
+#ifdef HAVE_LIBNOVA
+    Nova::LnLatPosn obs = Nova::ORM();
+
+    ln_rst_time sun_day;
+    if (ln_get_solar_rst_horizon(JD()-0.5, &obs, horizon, &sun_day)==1)
+        throw runtime_error("ln_get_solar_rst_horizon reported the sun to be circumpolar at the coordinates of La Palma!");
+
+    if (Time(sun_day.rise)>=*this)
+        return Time(sun_day.rise);
+
+    if (ln_get_solar_rst_horizon(JD()+0.5, &obs, horizon, &sun_day)==1)
+        throw runtime_error("ln_get_solar_rst_horizon reported the sun to be circumpolar at the coordinates of La Palma!");
+
+    return Time(sun_day.rise);
+#else
+    return Time(floor(Mjd()+0.5))+0.5;
+#endif
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls GetPrevSunRise(LN_SOLAR_STANDART_HORIZON)
+//
+Time Time::GetPrevSunRise() const
+{
+    return GetPrevSunRise(LN_SOLAR_STANDART_HORIZON);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calls GetNextSunRise(LN_SOLAR_STANDART_HORIZON)
+//
+Time Time::GetNextSunRise() const
+{
+    return GetNextSunRise(LN_SOLAR_STANDART_HORIZON);
+}
+
+// --------------------------------------------------------------------------
+//
+//! @returns
+//!     Returns an int corresponding to the current sun-cycle, that means
+//!     the day of the last sun-rise w.r.t. this Time.
+//!     YYYYMMDD, e.g. 20111224 for Christmas eve 2011
+//!
+//! @remark
+//!     Before March 30th 2013, 12:00 noon was the reference and the
+//!     returned value belonged to the day of sun-set within the
+//!     24h period between two noon's.
+//
+uint32_t Time::NightAsInt() const
+{
+    const Time tm = GetPrevSunRise();
+    return tm.Y()*10000 + tm.M()*100 + tm.D();
+}
+
+// --------------------------------------------------------------------------
+//
+//! A stream manipulator which sets the streams Time output format
+//! as defined in the argument.
+//!
+//! @param format
+//!    format description of the manipulator be returned. For details
+//!    see the boost documentation or the man page of strftime
+//!
+//! @returns
+//!    a stream manipulator for the given format
+//!
+const _time_format Time::fmt(const char *format)
+{
+    return format;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Sets the locale discription of the stream (the way how a time is
+//! output) to the format defined by the given manipulator.
+//!
+//! Example:
+//! \code
+//!    Time t();
+//!    cout << Time::fmt("%Y:%m:%d %H:%M:%S.%f") << t << endl;
+//! \endcode
+//!
+//! @param out
+//!    Reference to the stream
+//!
+//! @param f
+//!    Time format described by a manipulator
+//!
+//! @returns
+//!    A reference to the stream
+//!
+ostream &operator<<(ostream &out, const _time_format &f)
+{
+    const locale loc(locale::classic(),
+                     f.ptr==0 ? 0 : new time_facet(f.ptr));
+
+    out.imbue(loc);
+
+    return out;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Sets the locale discription of the stream (the way how a time is
+//! input) to the format defined by the given manipulator.
+//!
+//! Example:
+//! \code
+//!    stringstream s;
+//!    s << "09.09.1974 21:59";
+//!
+//!    Time t;
+//!    s >> Time::fmt("%d.%m.%Y %H:%M") >> t;
+//! \endcode
+//!
+//! @param in
+//!    Reference to the stream
+//!
+//! @param f
+//!    Time format described by a manipulator
+//!
+//! @returns
+//!    A reference to the stream
+//!
+istream &operator>>(istream &in, const _time_format &f)
+{
+    const locale loc(locale::classic(),
+                     f.ptr==0 ? 0 : new time_input_facet(f.ptr));
+
+    in.imbue(loc);
+
+    return in;
+}
Index: branches/testFACT++branch/src/Time.h
===================================================================
--- branches/testFACT++branch/src/Time.h	(revision 18277)
+++ branches/testFACT++branch/src/Time.h	(revision 18277)
@@ -0,0 +1,128 @@
+#ifndef FACT_Time
+#define FACT_Time
+
+#include <boost/date_time/local_time/local_time.hpp>
+
+// **************************************************************************
+/** @class _time_format
+
+@brief Helper to manipulate the input and output format of a time in a stream
+
+This class represents a stream manipulator. It is used to change the input
+or output format of a Time (or boost::posix_time) object to and from a
+stream.
+
+**/
+// **************************************************************************
+class _time_format
+{
+    friend std::ostream &operator<<(std::ostream &out, const _time_format &f);
+    friend std::istream &operator>>(std::istream &in,  const _time_format &f);
+private:
+    const char *ptr; /// pointer given to the iostreams
+
+public:
+    /// initialize ptr with what should be passed to the iostreams
+    _time_format(const char *txt) : ptr(txt) { }
+    std::string str() const { return ptr; }
+};
+
+class Time : public boost::posix_time::ptime
+{
+public:
+    /// A none-time, this can be used as a simple representation of an invalid time
+    static const Time None;
+
+    /// A stream manipulator to set the output/input format
+    static const _time_format fmt(const char *txt=0);
+
+    static const _time_format reset;   /// Remove the format description from the stream
+    static const _time_format def;     /// set to format to the locale default
+    static const _time_format std;     /// set to format to the iso standard
+    static const _time_format sql;     /// set to format to the sql format
+    static const _time_format ssql;    /// set to format to the sql format (without the fraction of seconds)
+    static const _time_format iso;     /// set to format to the extended iso standard
+    static const _time_format magic;   /// set to format to the MAGIC report format
+    static const _time_format smagic;  /// set to format to the MAGIC report format (without the fraction of seconds)
+
+    /// Enum used in the instantisation of the class to change the inititalisation value
+    enum init_t
+    {
+        none,  ///< Do not initialize the time
+        utc,   ///< Initialize with UTC
+        local  ///< Initialize with local time
+    };
+
+public:
+    /// Points to the famous 1/1/1970, the standard offset for unix times
+    const static boost::gregorian::date fUnixOffset;
+
+public:
+    // Constructors
+    Time(enum init_t type=utc);
+    Time(const boost::date_time::special_values &val);
+    Time(const time_t &tm, const suseconds_t &us);
+    Time(const timeval &tm);
+    Time(const ptime &pt) : boost::posix_time::ptime(pt) { }
+    Time(short year, unsigned char month, unsigned char day,
+         unsigned char h=0, unsigned char m=0, unsigned char s=0,
+         unsigned int us=0);
+    Time(double mjd) { Mjd(mjd); }
+    Time(const std::string &str)
+    {
+        std::stringstream stream;
+        stream << str;
+        stream >> Time::iso >> *this;
+    }
+
+    // Convesion from and to a string
+    std::string GetAsStr(const char *fmt="%Y-%m-%d %H:%M:%S") const;
+    void SetFromStr(const std::string &str, const char *fmt="%Y-%m-%d %H:%M:%S");
+
+    std::string Iso() const;
+
+    // Conversion to and from MJD
+    void Mjd(double mjd);
+    double Mjd() const;
+    double JD() const { return Mjd()+2400000.5; }
+
+    // Check validity
+    bool IsValid() const   { return *this != boost::date_time::not_special; }
+    bool operator!() const { return *this == boost::date_time::not_special; }
+
+    // Getter
+    unsigned short Y() const  { return date().year(); }
+    unsigned short M() const  { return date().month(); }
+    unsigned short D() const  { return date().day(); }
+
+    unsigned short h() const  { return time_of_day().hours(); }
+    unsigned short m() const  { return time_of_day().minutes(); }
+    unsigned short s() const  { return time_of_day().seconds(); }
+
+    unsigned int   ms() const { return time_of_day().total_milliseconds()%1000; }
+    unsigned int   us() const { return time_of_day().total_microseconds()%1000000; }
+
+    double SecondsOfDay() const;
+
+    time_t Time_t() const;
+    double UnixTime() const;
+    double UnixDate() const;
+    double RootTime() const;
+    uint64_t JavaDate() const { return IsValid() ? uint64_t(UnixTime()*1000) : 0; }
+
+    std::string MinutesTo(const Time & = Time()) const;
+    std::string SecondsTo(const Time & = Time()) const;
+
+    Time GetPrevSunRise(double horizon) const;
+    Time GetNextSunRise(double horizon) const;
+
+    Time GetPrevSunRise() const;
+    Time GetNextSunRise() const;
+
+    uint32_t NightAsInt() const;
+};
+
+std::ostream &operator<<(std::ostream &out, const _time_format &f);
+std::istream &operator>>(std::istream &in,  const _time_format &f);
+
+#endif
Index: branches/testFACT++branch/src/Timers.h
===================================================================
--- branches/testFACT++branch/src/Timers.h	(revision 18277)
+++ branches/testFACT++branch/src/Timers.h	(revision 18277)
@@ -0,0 +1,43 @@
+class Timers
+{
+private:
+    std::ostream &fOut;
+
+    Time fT[4];
+
+    int fSum[2];
+    int fCnt;
+
+    int fNwait;
+
+public:
+    Timers(std::ostream &out=std::cout) : fOut(out) { fSum[0] = fSum[1] = fCnt = fNwait = 0;/*fT[0] = Time(); fT[1] = Time(); fT[2] = Time(); fT[3] = Time();*/ }
+
+    void SetT() { fT[1] = Time(); }
+
+    void Proc(bool cond, int maxwait=5000, int interval=10000)
+    {
+        fT[2] = Time();
+
+        fSum[0] += (fT[2]-fT[1]).total_microseconds();
+        fSum[1] += (fT[1]-fT[3]).total_microseconds();
+        fCnt++;
+
+        if (cond)
+        {
+            usleep(std::max(maxwait-(int)(fT[2]-fT[3]).total_microseconds(), 1));
+            fNwait++;
+        }
+
+        const int diff = (fT[2]-fT[0]).total_milliseconds();
+        if (diff > interval)
+        {
+            fOut << "Rate(10s):  poll=" << fSum[0]/fCnt << "us   exec=" << fSum[1]/fCnt << "us   (" << fNwait <<"/" << fCnt << ")" << std::endl;
+
+            fSum[0] = fSum[1] = fCnt = fNwait = 0;
+            fT[0] = Time();
+        }
+
+        fT[3] = Time();
+    }
+};
Index: branches/testFACT++branch/src/WindowLog.cc
===================================================================
--- branches/testFACT++branch/src/WindowLog.cc	(revision 18277)
+++ branches/testFACT++branch/src/WindowLog.cc	(revision 18277)
@@ -0,0 +1,406 @@
+// **************************************************************************
+/** @class WindowLog
+
+@brief A C++ ostream to an ncurses window supporting attributes and colors
+
+@section References
+
+ - <A HREF="http://www.gnu.org/software/ncurses">GNU Ncurses</A>
+
+@todo
+   improve docu
+
+
+**/
+// **************************************************************************
+#include "WindowLog.h"
+
+#include <sstream>
+#include <iostream>
+#include <algorithm>
+
+#include <curses.h>
+
+#include "tools.h"
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//! Delete the contents of the backlog
+//
+void WindowLog::EmptyBacklog()
+{
+    fMuxBacklog.lock();
+    fBacklog.clear();
+    fMuxBacklog.unlock();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Display the backlog. If fWindow is NULL then it is flushed to cout
+//! otherwise to the window (including the colors and attributes)
+//!
+//! Access to cout, the backlog and the window is encapsulated in mutices.
+//
+void WindowLog::Display(bool empty)
+{
+    if (!fWindow)
+    {
+        fMuxBacklog.lock();
+        fMuxCout.lock();
+
+        cout.write(fBacklog.data(), fBacklog.size());
+        cout.flush();
+
+        if (empty)
+            fBacklog.clear();
+
+        fMuxCout.unlock();
+        fMuxBacklog.unlock();
+        return;
+    }
+
+    const int w = getmaxx(fWindow);
+
+    fMuxBacklog.lock();
+    fMuxWindow.lock();
+    //vector<char>::iterator p0 = fBacklog.begin();
+
+    int lines = 0;
+    int x     = 0;
+
+    for (unsigned int i=0; i<fBacklog.size(); i++)
+    {
+        if (fAttributes.find(i)!=fAttributes.end())
+            fAttributes[i]==-1 ? wattrset(fWindow, 0) : wattron(fWindow, fAttributes[i]);
+
+        if (fBacklog[i]=='\n')
+        {
+            // The attribute is added to the backlog in WriteBuffer
+            //wattrset(fWindow, 0);
+            lines += x/w + 1;
+            x=0;
+        }
+        wprintw(fWindow, "%c", fBacklog[i]);
+        x++;
+    }
+
+    if (empty)
+        fBacklog.clear();
+
+    fMuxWindow.unlock();
+    fMuxBacklog.unlock();
+
+    lines += x/w;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Open a log-file into which any of the following output is written. If a
+//! log-file is alraedy open it is closed.
+//! before the new file is opened or an old one closed the current buffer
+//! is flushed.
+//!
+//! @param filename
+//!    The filename of the file to open
+//!
+//! @returns
+//!    Whether the log-file stream is open or not
+//
+bool WindowLog::OpenLogFile(const string &filename, bool append)
+{
+    fMuxFile.lock();
+    flush();
+
+    if (fLogFile.is_open())
+        fLogFile.close();
+
+    fLogFile.open(filename, append ? ios::app|ios::out : ios::out);
+    if (append)
+        fLogFile << '\n';
+
+    fMuxFile.unlock();
+
+    return fLogFile.is_open();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Close an open log-file
+//
+void WindowLog::CloseLogFile()
+{
+    fMuxFile.lock();
+    fLogFile.close();
+    fMuxFile.unlock();
+}
+
+bool WindowLog::WriteFile(const string &sout)
+{
+    fMuxFile.lock();
+    fLogFile << sout;
+    fLogFile.flush();
+    fMuxFile.unlock();
+
+    return true;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is the function which writes the stream physically to a device.
+//! If you want to add a new device this must be done here.
+//!
+//! If the backlog is enabled, the contents are put into the backlog.
+//! if fWindow is NULL the contents are flushed to cout, otherwise
+//! to the window defined by fWindow.
+//!
+//! In addition the contents are flushed to the log-file if open.
+//! If fIsNull is true any output on the screen (cout or fWindow) is
+//! suppressed.
+//!
+//! @todo
+//!    Truncate the backlog
+//
+void WindowLog::WriteBuffer()
+{
+    // Store the number of characters in the buffer which should be flushed
+    const int len = fPPtr - fBase;
+
+    // restart writing to the buffer at its first char
+    fPPtr = fBase;
+
+    // If the is nothing to output, we are done
+    if (len<=0)
+        return;
+
+    // FIXME: Truncate backlog!
+
+    // If fWindow is set, output everything to the window, otherwise
+    // to cout
+    if (!fIsNull)
+    {
+        if (fWindow)
+        {
+            fMuxWindow.lock();
+            if (!fIsNull)
+            {
+                const string sout = string(fBase, len);
+                wprintw(fWindow, "%s", sout.c_str());
+            }
+            // If the stream got flushed due to a line break
+            // reset all attributes
+            if (fBase[len-1]=='\n')
+                wattrset(fWindow, 0);
+            fMuxWindow.unlock();
+        }
+        else
+        {
+            fMuxCout.lock();
+            cout.write(fBase, len);// << sout;
+            // If the stream got flushed due to a line break
+            // reset all attributes
+            if (fBase[len-1]=='\n')
+                cout << "\033[0m";
+            cout.flush();
+            fMuxCout.unlock();
+        }
+    }
+
+    // Add the buffer to the backlog
+    if (fEnableBacklog)
+    {
+        fMuxBacklog.lock();
+        fBacklog.insert(fBacklog.end(), fBase, fBase+len);
+
+        // If the stream got flushed due to a line break
+        // add the reset of all attributes to the backlog
+        if (fBase[len-1]=='\n')
+        {
+            if (!fWindow)
+            {
+                const char *reset = "\033[0m";
+                fBacklog.insert(fBacklog.end(), reset, reset+4);
+
+            }
+            else
+                fAttributes[fBacklog.size()] = -1;
+        }
+        fMuxBacklog.unlock();
+    }
+
+    fQueueFile.emplace(fBase, len);
+    /*
+    // Output everything also to the log-file
+    fMuxFile.lock();
+    fLogFile << sout;
+    //fLogFile.flush();
+    fMuxFile.unlock();
+    */
+    // If we are flushing because of an EOL, we reset also all attributes
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is called to flush the buffer of the streaming devices
+//
+int WindowLog::sync()
+{
+    WriteBuffer();
+    return 0;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This function comes from streambuf and should output the buffer to
+//! the device (flush, endl) or handle a buffer overflow (too many chars)
+//! If a real overflow happens i contains the next chars which doesn't
+//! fit into the buffer anymore.If the buffer is not really filled,
+//! i is EOF(-1).
+//
+int WindowLog::overflow(int i) // i=EOF means not a real overflow
+{
+    *fPPtr++ = (char)i;
+
+    if (fPPtr == fEPtr)
+        WriteBuffer();
+
+    return 0;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Returns the size of the backlog buffer as string.
+//!
+//! @returns
+//!     Size of the backlog as a string, e.g. "1k"
+//
+string WindowLog::GetSizeStr() const
+{
+    int s = GetSizeBacklog()/1000;
+    if (s==0)
+        return "0";
+
+    char u = 'k';
+    if (s>999)
+    {
+        s/=1000;
+        u = 'M';
+    }
+
+    ostringstream str;
+    str << s << u;
+    return str.str();
+}
+
+// --------------------------------------------------------------------------
+//
+//! @returns
+//!     the ANSI code corresponding to the attributes
+//
+string WindowLog::GetAnsiAttr(int m)
+{
+    if (m==kReset || m==kDefault)
+        return "\033[0m";
+
+    string rc;
+
+    if ((m&COLOR_PAIR(kRed)    )==COLOR_PAIR(kRed)    )  rc += "\033[31m";
+    if ((m&COLOR_PAIR(kGreen)  )==COLOR_PAIR(kGreen)  )  rc += "\033[32m";
+    if ((m&COLOR_PAIR(kYellow) )==COLOR_PAIR(kYellow) )  rc += "\033[33m";
+    if ((m&COLOR_PAIR(kBlue)   )==COLOR_PAIR(kBlue)   )  rc += "\033[34m";
+    if ((m&COLOR_PAIR(kMagenta))==COLOR_PAIR(kMagenta))  rc += "\033[35m";
+    if ((m&COLOR_PAIR(kCyan)   )==COLOR_PAIR(kCyan)   )  rc += "\033[36m";
+    if ((m&COLOR_PAIR(kWhite)  )==COLOR_PAIR(kWhite)  )  rc += "\033[0m\033[1m";
+
+    if ((m&kBold     )==kBold     )  rc += "\033[1m";
+    if ((m&kDim      )==kDim      )  rc += "\033[2m";
+    if ((m&kUnderline)==kUnderline)  rc += "\033[4m";
+    if ((m&kBlink    )==kBlink    )  rc += "\033[5m";
+
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Add color to the stream according to the attribute. If fWindow is not
+//! set this is an ANSI color code, otherwise the window's output
+//! attributes are set.
+//! It is also added to the backlog. Access to the backlog is encapsulated
+//! into its mutex.
+//
+void WindowLog::AddColor(int m)
+{
+    const int col = COLOR_PAIR(m);
+
+    if (!fWindow)
+        // We don't have to flush here, because the attributes are simply
+        // part of the stream
+        *this << GetAnsiAttr(col);
+    else
+    {
+        // Before we change the attributes we have to flush the screen
+        // otherwise we would have to buffer them until we flush the
+        // contents
+        flush();
+        wattron(fWindow, col);
+    }
+
+    fMuxBacklog.lock();
+    fAttributes[fBacklog.size()] |= col;
+    fMuxBacklog.unlock();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Add attributes to the stream according to the attribute. If fWindow is
+//! not set this is an ANSI code, otherwise the window's output
+//! attributes are set.
+//! It is also added to the backlog. Access to the backlog is encapsulated
+//! into its mutex.
+//
+void WindowLog::AddAttr(int m)
+{
+    if (!fWindow)
+        // We don't have to flush here, because the attributes are simply
+        // part of the stream
+        *this << GetAnsiAttr(m);
+    else
+    {
+        // Before we change the attributes we have to flush the screen
+        // otherwise we would have to buffer them until we flush the
+        // contents
+        flush();
+        m==kReset ? wattrset(fWindow, 0) : wattron(fWindow, m);
+    }
+
+    fMuxBacklog.lock();
+    m==kReset ?
+        fAttributes[fBacklog.size()] = -1 :
+        fAttributes[fBacklog.size()] |= m;
+    fMuxBacklog.unlock();
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+std::ostream &operator<<(std::ostream &lout, WindowLogColor m)
+{
+    WindowLog *log=dynamic_cast<WindowLog*>(lout.rdbuf());
+    if (log)
+        log->AddColor(m);
+    return lout;
+}
+
+// --------------------------------------------------------------------------
+//
+//!
+//
+std::ostream &operator<<(std::ostream &lout, WindowLogAttrs m)
+{
+    WindowLog *log=dynamic_cast<WindowLog*>(lout.rdbuf());
+    if (log)
+        log->AddAttr(m);
+    return lout;
+}
Index: branches/testFACT++branch/src/WindowLog.h
===================================================================
--- branches/testFACT++branch/src/WindowLog.h	(revision 18277)
+++ branches/testFACT++branch/src/WindowLog.h	(revision 18277)
@@ -0,0 +1,148 @@
+#ifndef FACT_WindowLog
+#define FACT_WindowLog
+
+#include <map>
+#include <mutex>
+#include <vector>
+#include <fstream>
+
+#include <ncurses.h> // A_NORMAL etc
+
+#include "../externals/Queue.h"
+
+/// Stream manipulators to change the color of a WindowLog stream
+enum WindowLogColor
+{
+    kDefault = 0,  ///< Set default colors
+    kRed     = 1,  ///< Set color Red
+    kGreen   = 2,  ///< Set color Green
+    kYellow  = 3,  ///< Set color Yellow
+    kBlue    = 4,  ///< Set color Blue
+    kMagenta = 5,  ///< Set color Magenta
+    kCyan    = 6,  ///< Set color Cyan
+    kWhite   = 7,  ///< Set color White
+};
+
+/// Stream manipulators to change the attributes of a WindowLog stream
+enum WindowLogAttrs
+{
+    kReset      = -1,            ///< Reset all attributes
+    kNormal     = A_NORMAL,      ///< Set attribute Normal
+    kHighlight  = A_STANDOUT,    ///< Set attribute Highlight
+    kUnderline  = A_UNDERLINE,   ///< Set attribute Underline
+    kReverse    = A_REVERSE,     ///< Set attribute Reverse
+    kBlink      = A_BLINK,       ///< Set attribute Blink
+    kDim        = A_DIM,         ///< Set attribute Dim
+    kBold       = A_BOLD,        ///< Set attribute Bold
+    kProtect    = A_PROTECT,     ///< Set attribute Protect
+    kInvisible  = A_INVIS,       ///< Set attribute Invisible
+    kAltCharset = A_ALTCHARSET,  ///< Set attribute Alternative charset
+};
+/*
+enum WindowLogManip
+{
+    kLogOn   = 1,
+    kLogOff  = 2,
+    kNullOn  = 3,
+    kNullOff = 4,
+};
+*/
+class WindowLog : public std::streambuf, public std::ostream
+{
+    friend std::ostream &operator<<(std::ostream &lout, WindowLogColor m);
+    friend std::ostream &operator<<(std::ostream &lout, WindowLogAttrs m);
+    //friend std::ostream &operator<<(std::ostream &lout, WindowLogManip m);
+private:
+    static const int fgBufferSize = 160;
+
+    char        fBuffer;               ///
+    char        fBase[fgBufferSize+1]; /// Buffer to store the data in
+    char       *fPPtr;                 /// Pointer to present position in buffer
+    const char *fEPtr;                 /// Pointer to end of buffer
+
+    WINDOW     *fWindow;               /// Pointer to an ncurses Window
+
+    std::vector<char>  fBacklog;       /// Backlog storage
+    std::map<int, int> fAttributes;    /// Storage for attributes (backlog)
+
+    std::ofstream fLogFile;    /// Stream for redirection to a log-file
+
+    bool fIsNull;              /// Switch to toggle off physical output to the screen
+    bool fEnableBacklog;       /// Switch to toggle storage in the backlog on or off
+
+    std::mutex fMuxBacklog;    /// Mutex securing backlog access
+    std::mutex fMuxFile;       /// Mutex securing file access
+    std::mutex fMuxCout;       /// Mutex securing output to cout
+    std::mutex fMuxWindow;     /// Mutex securing output to fWindow
+
+    Queue<std::string> fQueueFile;
+
+    static std::string GetAnsiAttr(int m);
+
+    void AddAttr(int m);
+    void AddColor(int m);
+
+    bool WriteFile(const std::string &);
+    void WriteBuffer();
+
+    int sync();
+    int overflow(int i); // i=EOF means not a real overflow
+
+public:
+    // --------------------------------------------------------------------------
+    //
+    //! Default constructor which initializes the streamer and sets the device
+    //! which is used for the output
+    //!
+    //! Switch on backlog
+    //! Switch on screen output
+    //
+    WindowLog() : std::ostream(this), fPPtr(fBase), fEPtr(fBase+fgBufferSize), fWindow(0), fIsNull(false), fEnableBacklog(true),
+        fQueueFile(std::bind(&WindowLog::WriteFile, this, std::placeholders::_1))
+    {
+        //fLogFile.rdbuf()->pubsetbuf(0,0); // Switch off buffering
+        setp(&fBuffer, &fBuffer+1);
+        *this << '\0';
+    }
+    WindowLog(WindowLog const& log) : std::ios(), std::streambuf(), std::ostream((std::streambuf*)&log), fWindow(log.fWindow), fIsNull(false), fEnableBacklog(true),
+        fQueueFile(bind(&WindowLog::WriteFile, this, std::placeholders::_1))
+    {
+        //fLogFile.rdbuf()->pubsetbuf(0,0); // Switch off buffering
+    }
+    ~WindowLog()
+    {
+        fQueueFile.wait(false);
+    }
+
+    /// Redirect the output to an ncurses WINDOW instead of cout
+    void SetWindow(WINDOW *w) { fWindow=w; }
+
+    /// Open a log-file
+    bool OpenLogFile(const std::string &filename, bool append=false);
+
+    /// Close a log-file
+    void CloseLogFile();
+
+    /// Display backlog
+    void Display(bool empty=false);
+
+    /// Empty backlog
+    void EmptyBacklog();
+
+    /// Get the current size of the backlog in bytes
+    size_t GetSizeBacklog() const { return fBacklog.size(); }
+    std::string GetSizeStr() const;
+
+    /// Switch on or off any physical output to the screen (cout or fWindow)
+    void SetNullOutput(bool n=true) { fIsNull=n; }
+    bool GetNullOutput() const { return fIsNull; }
+
+    /// Switch on or off any storage in the backlog
+    void SetBacklog(bool n=true) { fEnableBacklog=n; }
+    bool GetBacklog() const { return fEnableBacklog; }
+};
+
+std::ostream &operator<<(std::ostream &lout, WindowLogColor m);
+std::ostream &operator<<(std::ostream &lout, WindowLogAttrs m);
+
+#endif
Index: branches/testFACT++branch/src/agilentctrl.cc
===================================================================
--- branches/testFACT++branch/src/agilentctrl.cc	(revision 18277)
+++ branches/testFACT++branch/src/agilentctrl.cc	(revision 18277)
@@ -0,0 +1,605 @@
+#include <functional>
+
+#include "Dim.h"
+#include "Event.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+
+#include "tools.h"
+
+#include "HeadersAgilent.h"
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+using namespace Agilent;
+
+// ------------------------------------------------------------------------
+
+class ConnectionAgilent : public Connection
+{
+public:
+    static string fMode;
+
+private:
+    bool fIsVerbose;
+    bool fDebugRx;
+
+    uint16_t fInterval;
+
+    boost::asio::deadline_timer fTimeout;
+    boost::asio::deadline_timer fTimeoutPowerCycle;
+    boost::asio::streambuf fBuffer;
+
+    Data fData;
+
+    Time fLastReceived;
+    Time fLastCommand;
+
+protected:
+
+    virtual void UpdateDim(const Data &)
+    {
+    }
+
+    void RequestStatus()
+    {
+        if (IsConnected())
+            PostMessage(string("*IDN?\nvolt?\nmeas:volt?\nmeas:curr?\ncurr?\n"));
+
+        fTimeout.expires_from_now(boost::posix_time::seconds(fInterval));
+        fTimeout.async_wait(boost::bind(&ConnectionAgilent::HandleStatusTimer,
+                                        this, dummy::error));
+    }
+
+
+    void HandleStatusTimer(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "Status request timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            PostClose(true);
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fTimeout.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        RequestStatus();
+    }
+
+    void HandlePowerCycle(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "Power cycle timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            PostClose(true);
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fTimeout.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        SetPower(true);
+    }
+
+private:
+    void StartRead(int line=0)
+    {
+        ba::async_read_until(*this, fBuffer, "\n",
+                             boost::bind(&ConnectionAgilent::HandleReceivedData, this,
+                                         dummy::error, dummy::bytes_transferred, line+1));
+    }
+
+    void HandleReceivedData(const bs::error_code& err, size_t bytes_received, int line)
+    {
+
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+                Warn("Connection closed by remote host (FTM).");
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+            return;
+        }
+
+
+        if (fDebugRx)
+        {
+            Out() << kBold << "Received (" << bytes_received << ", " << fBuffer.size() << " bytes):" << endl;
+            Out() << "-----\n" << string(ba::buffer_cast<const char*>(fBuffer.data()), bytes_received) << "-----\n";
+        }
+
+        istream is(&fBuffer);
+
+        string str;
+        getline(is, str, '\n');
+
+        try
+        {
+            switch (line)
+            {
+            case 1:  Out() << "ID: " << str << endl; break;
+            case 2:  fData.fVoltageSet      = stof(str); break;
+            case 3:  fData.fVoltageMeasured = stof(str); break;
+            case 4:  fData.fCurrentMeasured = stof(str); break;
+            case 5:  fData.fCurrentLimit    = stof(str); break;
+            default:
+                return;
+            }
+        }
+        catch (const exception &e)
+        {
+            Error("String conversion failed for '"+str+" ("+e.what()+")");
+
+            // We need to synchronize the stream again
+            PostClose(true);
+            return;
+        }
+
+        if (line==5)
+        {
+            if (fIsVerbose)
+            {
+                Out() << "Voltage: " << fData.fVoltageMeasured << "V/" << fData.fVoltageSet   << "V\n";
+                Out() << "Current: " << fData.fCurrentMeasured << "A/" << fData.fCurrentLimit << "A\n" << endl;
+            }
+
+            UpdateDim(fData);
+
+            fLastReceived = Time();
+
+            line = 0;
+
+        }
+
+        StartRead(line);
+    }
+
+
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        fBuffer.prepare(1000);
+
+        StartRead();
+        RequestStatus();
+    }
+
+public:
+
+    ConnectionAgilent(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsVerbose(true), fDebugRx(false), fTimeout(ioservice), fTimeoutPowerCycle(ioservice)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+    }
+
+    void SetDebugRx(bool b)
+    {
+        fDebugRx = b;
+    }
+
+    void SetInterval(uint16_t i)
+    {
+        fInterval = i;
+    }
+
+    bool SetPower(bool on)
+    {
+        if (!IsConnected())
+            return false;
+
+        if (fLastCommand+boost::posix_time::seconds(59)>Time())
+        {
+            Error("Last power command within the last 59 seconds... ignored.");
+            return false;
+        }
+
+        PostMessage("outp "+string(on?"on":"off")+"\n*IDN?\nvolt?\nmeas:volt?\nmeas:curr?\ncurr?\n");
+        fLastCommand = Time();
+
+        // Stop any pending power cycling
+        fTimeoutPowerCycle.cancel();
+
+        return true;
+    }
+
+    void PowerCycle(uint16_t seconds)
+    {
+        if (!SetPower(false))
+            return;
+
+        fTimeoutPowerCycle.expires_from_now(boost::posix_time::seconds(seconds));
+        fTimeoutPowerCycle.async_wait(boost::bind(&ConnectionAgilent::HandlePowerCycle,
+                                                  this, dummy::error));
+    }
+
+    int GetState()
+    {
+        if (!IsConnected())
+            return State::kDisconnected;
+
+        if (fLastReceived+boost::posix_time::seconds(fInterval*2)<Time())
+            return State::kDisconnected;
+
+        if (fData.fCurrentMeasured<0)
+            return State::kConnected;
+
+        if (fData.fVoltageMeasured<0.1)
+            return State::kVoltageOff;
+
+        if (fData.fVoltageMeasured<fData.fVoltageSet-0.1)
+            return State::kVoltageLow;
+
+        if (fData.fVoltageMeasured>fData.fVoltageSet+0.1)
+            return State::kVoltageHigh;
+
+        return State::kVoltageOn;
+    }
+};
+
+string ConnectionAgilent::fMode;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimAgilent : public ConnectionAgilent
+{
+private:
+
+    DimDescribedService fDim;
+
+    void UpdateDim(const Data &data)
+    {
+        fDim.Update(data);
+    }
+
+public:
+    ConnectionDimAgilent(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionAgilent(ioservice, imp),
+        fDim("AGILENT_CONTROL_"+fMode+"/DATA", "F:1;F:1;F:1;F:1",
+             "|U_nom[V]: Nominal output voltage"
+             "|U_mes[V]: Measured output voltage"
+             "|I_max[A]: Current limit"
+             "|I_mes[A]: Measured current")
+    {
+        // nothing happens here.
+    }
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineAgilent : public StateMachineAsio<T>
+{
+private:
+    S fAgilent;
+
+    int Disconnect()
+    {
+        // Close all connections
+        fAgilent.PostClose(false);
+
+        /*
+         // Now wait until all connection have been closed and
+         // all pending handlers have been processed
+         poll();
+         */
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fAgilent.PostClose(false);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        ba::io_service::poll();
+
+        if (evt.GetBool())
+            fAgilent.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fAgilent.PostClose(true);
+
+        return T::GetCurrentState();
+    }
+
+    int Execute()
+    {
+        return fAgilent.GetState();
+    }
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fAgilent.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetDebugRx(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetDebugRx", 1))
+            return T::kSM_FatalError;
+
+        fAgilent.SetDebugRx(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetPower(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetPower", 1))
+            return T::kSM_FatalError;
+
+        fAgilent.SetPower(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int PowerCycle(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "PowerCyle", 2))
+            return T::kSM_FatalError;
+
+        if (evt.GetShort()<60)
+        {
+            T::Warn("Power cycle delays of less than 60s not allowed.");
+            return T::GetCurrentState();
+        }
+
+        fAgilent.PowerCycle(evt.GetShort());
+
+        return T::GetCurrentState();
+    }
+
+
+public:
+    StateMachineAgilent(ostream &out=cout) :
+        StateMachineAsio<T>(out, "AGILENT_CONTROL_"+S::fMode), fAgilent(*this, *this)
+    {
+        // State names
+        T::AddStateName(State::kDisconnected, "Disconnected",
+                        "Agilent not connected via ethernet.");
+        T::AddStateName(State::kConnected, "Connected",
+                        "Ethernet connection to Agilent established, but not data received yet.");
+
+        T::AddStateName(State::kVoltageOff, "VoltageOff",
+                        "The measured output voltage is lower than 0.1V");
+        T::AddStateName(State::kVoltageLow, "VoltageLow",
+                        "The measured output voltage is higher than 0.1V, but lower than the command voltage");
+        T::AddStateName(State::kVoltageOn, "VoltageOn",
+                        "The measured output voltage is higher than 0.1V and comparable to the command voltage");
+        T::AddStateName(State::kVoltageHigh, "VoltageHigh",
+                        "The measured output voltage is higher than the command voltage!");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B:1")
+            (bind(&StateMachineAgilent::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no)");
+
+        T::AddEvent("SET_DEBUG_RX", "B:1")
+            (bind(&StateMachineAgilent::SetVerbosity, this, placeholders::_1))
+            ("set debug state"
+             "|debug[bool]:disable or enable verbosity for received raw data (yes/no)");
+
+        T::AddEvent("SET_POWER", "B:1")
+            (bind(&StateMachineAgilent::SetPower, this, placeholders::_1))
+            ("Enable or disable power output"
+             "|output[bool]:set power output to 'on' or 'off'");
+
+        T::AddEvent("POWER_CYCLE", "S:1")
+            (bind(&StateMachineAgilent::PowerCycle, this, placeholders::_1))
+            ("Power cycle the power output"
+             "|delay[short]:Defines the delay between switching off and on.");
+
+
+        // Conenction commands
+        T::AddEvent("DISCONNECT", State::kConnected)
+            (bind(&StateMachineAgilent::Disconnect, this))
+            ("disconnect from ethernet");
+
+        T::AddEvent("RECONNECT", "O", State::kDisconnected, State::kConnected)
+            (bind(&StateMachineAgilent::Reconnect, this, placeholders::_1))
+            ("(Re)connect ethernet connection to Agilent, a new address can be given"
+             "|[host][string]:new ethernet address in the form <host:port>");
+
+        fAgilent.StartConnect();
+    }
+
+    void SetEndpoint(const string &url)
+    {
+        fAgilent.SetEndpoint(url);
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fAgilent.SetVerbose(!conf.Get<bool>("quiet"));
+        fAgilent.SetDebugRx(conf.Get<bool>("debug-rx"));
+        fAgilent.SetInterval(conf.Get<uint16_t>("interval"));
+
+        SetEndpoint(conf.Get<string>("addr.", S::fMode));
+
+        const std::vector<std::string> opts = conf.GetWildcardOptions("addr.*");
+        for (auto it=opts.begin(); it!=opts.end(); it++)
+            conf.Get<string>(*it);
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineAgilent<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("agilent_ctrl control options");
+    control.add_options()
+        ("no-dim",    po_bool(),         "Disable dim services")
+        ("mode,m",    var<string>()->required(), "Mode (e.g. 24V, 50V, 80V)")
+        ("addr.*",    var<string>(),     "Network address of Agilent specified by mode")
+        ("debug-rx",  po_bool(false),    "Enable raw debug output wehen receiving data")
+        ("interval",  var<uint16_t>(15), "Interval in seconds in which the Agilent status is requested")
+        ("quiet,q",   po_bool(true),     "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ;
+
+    po::positional_options_description p;
+    p.add("mode", 1); // The first positional options
+
+    conf.AddOptions(control);
+    conf.SetArgumentPositions(p);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The agilentctrl controls the FACT Agilent power supplies.\n\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: agilentctrl [-c type] [OPTIONS] mode\n"
+        "  or:  agilentctrl [OPTIONS] mode\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineAgilent<StateMachine, ConnectionAgilent>>();
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    ConnectionAgilent::fMode = conf.Get<string>("mode");
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+            if (conf.Get<bool>("no-dim"))
+                return RunShell<LocalStream, StateMachine, ConnectionAgilent>(conf);
+            else
+                return RunShell<LocalStream, StateMachineDim, ConnectionDimAgilent>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionAgilent>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionAgilent>(conf);
+        }
+        else
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim, ConnectionDimAgilent>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim, ConnectionDimAgilent>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/testFACT++branch/src/argv.cc
===================================================================
--- branches/testFACT++branch/src/argv.cc	(revision 18277)
+++ branches/testFACT++branch/src/argv.cc	(revision 18277)
@@ -0,0 +1,246 @@
+#include "Configuration.h"
+
+#include <iostream>
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+//!  Main Doxygen/Autotools integration example program.
+//!
+//!  @param conf  Number of command line options.
+//!  @param opt  The command line options.
+//!  @return      The exit status.
+//
+void SetupConfiguration(Configuration &conf, int &opt)
+{
+    /*
+     // Default in case the option was not specified
+     typed_value* default_value(const T& v)
+     typed_value* default_value(const T& v, const std::string& textual)
+
+     // Default value in case the option was given
+     //    forces -o    to become -o5
+     //    forces --opt to become --opt=3
+     typed_value* implicit_value(const T &v)
+     typed_value* implicit_value(const T &v, const std::string& textual)
+
+     // notifier function when the final value is determined
+     typed_value* notifier(function1<void, const T&> f)
+
+     /// Merge values from different sources (e.g. file, command line)
+     typed_value* composing()
+
+     // Specifies that the value can span multiple tokens.
+     typed_value* multitoken()
+     typed_value* zero_tokens()
+
+     // Specifies that the value must occur.
+     typed_value* required()
+     */
+
+    // To merge the options from several parsers (e.g. comand_line and
+    // config file) use po_strings()->composing()
+    /*
+    po::options_description generic("Generic options");
+    generic.add_options()
+        ("help-config",   "Print available configuration file options.")
+        ("help-env",      "Print available environment variables.")
+        ("help",          "Print available commandline options.")
+        ("print-unknown", "Print unrecognized options.")
+        ("config", po_string("config.txt"), "Set configuration file name.")
+        ;
+
+
+    // Declare the supported options.
+    po::options_description generic("Generaic options");
+    generic.add_options()
+//        ("testreq",     po_int()->required(),         "set compression level (madatory)")
+        ("default",     po_string("my_default"),      "set compression level")
+        ("unknown",     po_int(1),                    "set compression level")
+        ("U",           po_int(2)->implicit_value(1), "set compression level")
+        ;
+      */
+    // Declare a group of options that will be
+    // allowed both on command line and in
+    // config file
+    po::options_description config("Configuration");
+    config.add_options()
+        ("compression",    var<int>(),                      "set compression level")
+        ("optimization",   var<int>(10, &opt),              "optimization level")
+        ("test-def",       var<int>(42),                    "optimization level")
+        ("include-path,I", vars<string>()/*->composing()*/, "include path")
+        ("test,T",         vars<string>()/*->composing()*/, "include path")
+        ("file1",          vars<string>(),                   "include path")
+        ("int1",           var<int>(),                      "include path")
+        ("Int2",           var<int>(),                      "include path")
+        ("Int1",           var<int>(),                      "include path")
+        ("test-db",        var<string>("database"),                      "include path")
+        ("float1",         var<double>(),                   "include path")
+//        (",A",          po_float(),                    "include path")
+        ("radec",         po::value<vector<double>>(),                    "include path")
+        ("switch",        po_switch(),                    "include path")
+        ("bool",          var<bool>()->implicit_value(true),                    "include path")
+        ;
+
+    // !!! Option which are "shorted" must be placed last.
+    //     Can this be switched off?
+
+    po::options_description sections("Sections");
+    config.add_options()
+        ("unregistered",            var<string>(),                    "include path")
+        ("Section1.unregistered",   var<string>(),                    "include path")
+//        ("Section2*",               po_string(),                    "include path")
+        // The latter accepts all options starting with Section2.
+        ;
+
+    // Hidden options, will be allowed both on command line and
+    // in config file, but will not be shown to the user.
+    po::options_description hidden("Hidden options");
+    hidden.add_options()
+        ("input-file",  vars<string>(), "input file")
+        ("output-file", vars<string>(), "output file")
+        ("test-file",   vars<string>(), "test file")
+        ;
+
+    po::options_description env("Environment options");
+    env.add_options()
+        ("linux", var<string>(), "LINUX env")
+        ("path",  var<string>(), "PATH env")
+        ("dns",   var<string>(), "DIM_DNS_SERVER env")
+        ;
+
+    conf.AddEnv("linux", "LINUX");
+    conf.AddEnv("path",  "PATH");
+    conf.AddEnv("dns",   "DIM_DNS_SERVER");
+
+    // define translation from position to name
+    po::positional_options_description p;
+    p.add("output-file", 2); // The first 2 positional options is output-file
+    p.add("test-file",   3); // The next three positional options is output-file
+    p.add("input-file", -1); // All others go to...
+
+    conf.AddOptionsCommandline(config);
+    conf.AddOptionsCommandline(sections);
+    conf.AddOptionsCommandline(hidden, false);
+
+    conf.AddOptionsConfigfile(config);
+    conf.AddOptionsConfigfile(sections);
+    conf.AddOptionsConfigfile(hidden, false);
+
+    conf.AddOptionsEnvironment(env);
+
+    conf.AddOptionsDatabase(config);
+
+    conf.SetArgumentPositions(p);
+}
+
+
+int main(int argc, const char **argv)
+{
+    int opt;
+
+    Configuration conf(argv[0]);
+    SetupConfiguration(conf, opt);
+
+    po::variables_map vm;
+    try
+    {
+        vm = conf.Parse(argc, argv);
+    }
+    catch (std::exception &e)
+    {
+#if BOOST_VERSION > 104000
+        po::multiple_occurrences *MO = dynamic_cast<po::multiple_occurrences*>(&e);
+        if (MO)
+            cout << "Error: " << e.what() << " of '" << MO->get_option_name() << "' option." << endl;
+        else
+#endif
+            cout << "Error: " << e.what() << endl;
+        cout << endl;
+
+        return -1;
+    }
+
+    if (conf.HasHelp() || conf.HasPrint())
+        return -1;
+
+    cout << "------------------------------" << endl;
+
+    cout << "Program " << argv[0] << " started successfully." << endl;
+
+    cout << conf.Has("switch") << " " << conf.Get<bool>("switch") << endl;
+    cout << conf.Has("bool") << " " << conf.Get<bool>("bool") << endl;
+
+    return 0;
+/*
+    if (vm.count("compression"))
+        cout << "Compression level was set to " << vm["compression"].as<int>() << ".\n";
+    else
+        cout << "Compression level was not set.\n";
+
+
+    cout << "Test default is always: " << vm["test-def"].as<int>() << "\n";
+    cout << "Optimization level is " << vm["optimization"].as<int>() << "\n";
+    //cout << "Int2: " << vm["Int2"].as<int>() << "\n";
+
+    cout << conf.GetString("unregistered") << endl;
+    cout << conf.GetString("Section1.unregistered") << endl;
+    cout << conf.Has("Section2.unregistered") << endl;
+    cout << conf.GetString("Section2.Section3.unregistered") << endl;
+    cout << "test-db: " << conf.GetString("test-db") << endl;
+
+
+    if (vm.count("include-path"))
+    {
+        vector<string> v = vm["include-path"].as< vector<string> >();
+        for (vector<string>::iterator s=v.begin(); s<v.end(); s++)
+            cout << "Incl P: " << *s << endl;
+    }
+
+    if (vm.count("input-file"))
+    {
+        vector<string> v = vm["input-file"].as< vector<string> >();
+        for (vector<string>::iterator s=v.begin(); s<v.end(); s++)
+            cout << "Incl F: " << *s << endl;
+    }
+
+    if (vm.count("output-file"))
+    {
+        vector<string> v = vm["output-file"].as< vector<string> >();
+        for (vector<string>::iterator s=v.begin(); s<v.end(); s++)
+            cout << "Out: " << *s << endl;
+    }
+
+    if (vm.count("test-file"))
+    {
+        vector<string> v = vm["test-file"].as< vector<string> >();
+        for (vector<string>::iterator s=v.begin(); s<v.end(); s++)
+            cout << "Testf: " << *s << endl;
+    }
+
+    cout << "Linux: " << conf.Get<string>("linux") << endl;
+
+    if (vm.count("path"))
+        cout << "Path: "   << vm["path"].as<string>()  << endl;
+    if (vm.count("file1"))
+        cout << "File1: "  << vm["file1"].as<string>() << endl;
+    if (vm.count("int1"))
+        cout << "Int1: "   << vm["int1"].as<int>()     << endl;
+    if (vm.count("float1"))
+        cout << "Float1: " << vm["float1"].as<float>() << endl;
+
+    if (vm.count("test"))
+    {
+        vector<string> v = vm["test"].as< vector<string> >();
+        for (vector<string>::iterator s=v.begin(); s<v.end(); s++)
+            cout << "Test: " << *s << endl;
+    }*/
+}
+// ***************************************************************************
+/** @example argv.cc
+
+Example for the usage of the class Configuration
+
+**/
+// ***************************************************************************
Index: branches/testFACT++branch/src/biasctrl.cc
===================================================================
--- branches/testFACT++branch/src/biasctrl.cc	(revision 18277)
+++ branches/testFACT++branch/src/biasctrl.cc	(revision 18277)
@@ -0,0 +1,2382 @@
+#include <functional>
+
+#include <boost/bind.hpp>
+
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "ConnectionUSB.h"
+#include "Configuration.h"
+#include "Console.h"
+#include "externals/PixelMap.h"
+
+#include "tools.h"
+
+#include "LocalControl.h"
+#include "HeadersBIAS.h"
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std::placeholders;
+using namespace std;
+
+// We can do that because we do not include other headers than HeadersBIAS
+using namespace BIAS;
+
+// ------------------------------------------------------------------------
+
+class ConnectionBias : public ConnectionUSB
+{
+    boost::asio::deadline_timer fSyncTimer;
+    boost::asio::deadline_timer fRampTimer;
+    boost::asio::deadline_timer fUpdateTimer;
+
+    vector<uint8_t> fBuffer;
+    vector<uint8_t> fBufferRamp;
+    vector<uint8_t> fBufferUpdate;
+
+    bool fIsVerbose;
+    bool fIsDummyMode;
+
+    vector<bool>     fPresent;
+
+    int64_t fWrapCounter;
+    int64_t fSendCounter;
+
+    int16_t fGlobalDacCmd;      // Command value to be reached
+
+    int16_t fRampStep;
+    int16_t fRampTime;
+
+    uint32_t fUpdateTime;
+    uint16_t fSyncTime;
+    uint32_t fReconnectDelay;
+
+    int  fIsInitializing;
+    bool fIsRamping;
+    int  fWaitingForAnswer;
+
+    vector<uint64_t> fCounter;
+
+    Time fLastConnect;
+
+    int32_t  fEmergencyLimit;
+    bool     fEmergencyShutdown;
+
+protected:
+
+    vector<int16_t>  fCurrent;     // Current in ADC units (12bit = 5mA)
+
+    virtual void UpdateV(const Time = Time())
+    {
+    }
+
+    virtual void UpdateVgapd()
+    {
+    }
+
+public:
+    virtual void UpdateVA()
+    {
+    }
+
+    // ====================================================
+
+protected:
+    vector<float> fOperationVoltage;      // Operation voltage of GAPDs
+    //vector<float> fChannelOffset;         // User defined channel offset
+
+    vector<float> fCalibrationOffset;     // Bias crate channel offset
+    vector<float> fCalibrationSlope;      // Bias crate channel slope
+
+    float fVoltageMaxAbs;  // Maximum voltage
+    float fVoltageMaxRel;  // Maximum voltgage above (what?)
+
+    vector<uint16_t> fDacTarget;    // Target values
+    vector<uint16_t> fDacCommand;   // Last sent command value
+    vector<uint16_t> fDacActual;    // Actual value
+
+    // ====================================================
+
+private:
+    vector<char> GetCmd(uint16_t board, uint16_t channel, Command_t cmd, uint16_t dac=0)
+    {
+        vector<char> data(3);
+
+        /*
+        if (board>kNumBoards)
+            return;
+        if (channel>kNumChannelsPerBoard)
+            return;
+        if (dac>0xfff)
+            return;
+        */
+
+        data[0] = (cmd<<5) | (board<<1) | (((channel&16)>>4) & 1);
+        data[1] = (channel<<4) | (dac>>8);
+        data[2] =  dac&0xff;
+
+        return data;
+    }
+
+    vector<char> GetCmd(Command_t cmd, uint16_t id=0, uint16_t dac=0)
+    {
+        const unsigned int board   = id/kNumChannelsPerBoard;
+        const unsigned int channel = id%kNumChannelsPerBoard;
+
+        return GetCmd(board, channel, cmd, dac);
+    }
+
+    bool CheckMessageLength(int received, int expected, const string &msg)
+    {
+        if (received==expected)
+            return true;
+
+        ostringstream str;
+        str << msg << ": Expected " << expected << " bytes in answer, but got " << received << endl;
+        Error(str);
+
+        return false;
+    }
+
+    bool EvalAnswer(const uint8_t *answer, uint16_t id, int command)
+    {
+        answer += id*3;
+
+        const uint16_t status = (answer[0]>>7)&1;
+        const uint16_t wrap   = (answer[0]>>4)&7;
+        const uint16_t ddd    = ((uint16_t(answer[0])&0xf)<<8) | answer[1];
+        const uint16_t error  = (answer[2]>>4)&0xf;
+        const uint16_t board  =  answer[2]&0xf;
+
+        // 0x10 00 7f
+        //   status = 0
+        //   wrap   = 1
+        //   ddd    = 0
+        //   error  = not present
+        //   board  = 15
+
+        /*
+        Out() << dec << setw(2) << board << '|' << wrap << " ";
+        if (id%8==7)
+            Out() << endl;
+            */
+
+        if (fWrapCounter>=0)
+        {
+            if ((fWrapCounter+1)%8 != wrap)
+            {
+                ostringstream msg;
+                msg << "Corrupted answer (id=" << id << "): received wrap counter " << wrap << " doesn't match last one " << fWrapCounter << " ";
+                msg << " (fSendCounter=" << fSendCounter << ")";
+                Error(msg);
+                return false;
+            }
+        }
+
+        fWrapCounter = wrap;
+
+        if (command==kSynchronize)
+        {
+            ostringstream msg;
+            msg << hex << setfill('0');
+            msg << "Initial answer received: 0x";
+            msg << setw(2) << (int)answer[2];
+            msg << setw(2) << (int)answer[1];
+            msg << setw(2) << (int)answer[0];
+            Message(msg);
+
+            if (status!=0 || ddd!=0 || error!=0 || board!=0)
+            {
+                Warn("Initial answer doesn't seem to be a reset as naively expected.");
+
+                //ostringstream msg;
+                //msg << hex << setfill('0');
+                //msg << "S=" << status << " D=" << ddd << " E=" << error << " B=" << board;
+                //Message(msg);
+            }
+
+            fSendCounter = wrap;
+
+            msg.str("");
+            msg << "Setting fSendCounter to " << wrap;
+            Info(msg);
+
+            return true;
+        }
+
+        if (error==0x8) // No device
+        {
+            Message("Reset button on crate pressed!");
+            RampAllDacs(0);
+            return true;
+        }
+
+        if (command==kCmdReset)
+        {
+            if (status==0 && ddd==0 && error==0 && board==0)
+            {
+                Message("Reset successfully executed.");
+                return true;
+            }
+
+            Warn("Answer to 'reset' command contains unexpected data.");
+            return false;
+        }
+
+        if (command==kCmdGlobalSet)
+        {
+            if (status==0 && ddd==0 && error==0 && board==0)
+            {
+                for (int i=0; i<kNumChannels; i++)
+                    fDacActual[i] = fGlobalDacCmd;
+
+                fGlobalDacCmd = -1;
+
+                return true;
+            }
+
+            Warn("Answer to 'global set' command contains unexpected data.");
+            return false;
+        }
+
+        if ((command&0xff)==kExpertChannelSet)
+            id = command>>8;
+
+        const int cmd = command&3;
+
+        if (cmd==kCmdRead || cmd==kCmdChannelSet)
+        {
+            if (board!=id/kNumChannelsPerBoard)
+            {
+                ostringstream out;
+                out << "Talked to board " << id/kNumChannelsPerBoard << ", but got answer from board " <<  board << " (fSendCounter=" << fSendCounter << ")";
+                Error(out);
+                return false;
+            }
+
+            // Not present
+            if (error==0x7 || error==0xf)
+            {
+                fPresent[board] = false;
+                fCurrent[id]    = 0x8000;
+                return true;
+            }
+
+            // There is no -0 therefore we make a trick and replace it by -1.
+            // This is not harmfull, because typical zero currents are in the
+            // order of one to three bits anyway and they are never stable.
+            fCurrent[id]    = status ? -(ddd==0?1:ddd) : ddd;
+            fPresent[board] = true;
+
+            if (!fEmergencyShutdown)
+            {
+                if (fCurrent[id]<0)
+                {
+                    Warn("OverCurrent detected.");
+                    fEmergencyShutdown = true;
+                }
+
+                if (fEmergencyLimit>0 && fCurrent[id]>fEmergencyLimit && !fEmergencyShutdown)
+                {
+                    Warn("Emergency limit exceeded.");
+                    fEmergencyShutdown = true;
+                }
+
+                if (fEmergencyShutdown)
+                {
+                    Error("Emergency ramp down initiated.");
+                    Dim::SendCommandNB("MCP/STOP");
+                    RampAllDacs(0);
+                }
+            }
+        }
+
+        if (cmd==kCmdChannelSet)
+            fDacActual[id] = fDacCommand[id];
+
+        return true;
+
+    }
+
+private:
+    void DelayedReconnect()
+    {
+        const Time now;
+
+        // If we have been connected without a diconnect for at least 60s
+        // we can reset the delay.
+        if (now-fLastConnect>boost::posix_time::seconds(60))
+            fReconnectDelay = 1;
+
+        ostringstream msg;
+        msg << "Automatic reconnect in " << fReconnectDelay << "s after being connected for ";
+        msg << (now-fLastConnect).seconds() << "s";
+        Info(msg);
+
+        CloseImp(fReconnectDelay);
+        fReconnectDelay *= 2;
+    }
+
+    void HandleReceivedData(const vector<uint8_t> &buf, size_t bytes_received, int command, int send_counter)
+    {
+#ifdef DEBUG
+    ofstream fout("received.txt", ios::app);
+    fout << Time() << ": ";
+    for (unsigned int i=0; i<bytes_received; i++)
+        fout << hex << setfill('0') << setw(2) << (uint16_t)buf[i];
+    fout << endl;
+#endif
+
+        // Now print the received message if requested by the user
+        if (fIsVerbose/* && command!=kUpdate*/)
+        {
+            Out() << endl << kBold << dec << "Data received (size=" << bytes_received << "):" << endl;
+            Out() << " Command=" << command << " fWrapCounter=" << fWrapCounter << " fSendCounter=" << fSendCounter << " fIsInitializing=" << fIsInitializing << " fIsRamping=" << fIsRamping;
+            Out() << hex << setfill('0');
+
+            for (size_t i=0; i<bytes_received/3; i++)
+            {
+                if (i%8==0)
+                    Out() << '\n' << setw(2) << bytes_received/24 << "| ";
+
+                Out() << setw(2) << uint16_t(buf[i*3+2]);
+                Out() << setw(2) << uint16_t(buf[i*3+1]);
+                Out() << setw(2) << uint16_t(buf[i*3+0]) << " ";
+            }
+            Out() << endl;
+        }
+
+        const int cmd = command&0xf;
+
+        // Check the number of received_byted according to the answer expected
+        if ((cmd==kSynchronize      && !CheckMessageLength(bytes_received, 3,                "Synchronization")) ||
+            (cmd==kCmdReset         && !CheckMessageLength(bytes_received, 3,                "CmdReset"))        ||
+            (cmd==kCmdRead          && !CheckMessageLength(bytes_received, 3*kNumChannels,   "CmdRead"))         ||
+            (cmd==kCmdChannelSet    && !CheckMessageLength(bytes_received, 3*kNumChannels,   "CmdChannelSet"))   ||
+            (cmd==kExpertChannelSet && !CheckMessageLength(bytes_received, 3,                "CmdExpertChannelSet")))
+        {
+            CloseImp(-1);
+            return;
+        }
+
+        // Now evaluate the whole bunch of messages
+        for (size_t i=0; i<bytes_received/3; i++)
+        {
+            if (!EvalAnswer(buf.data(), i, command))
+            {
+                DelayedReconnect();
+                return;
+            }
+        }
+
+        if (command==kSynchronize)
+        {
+            Message("Stream successfully synchronized.");
+            fIsInitializing = 2;
+
+            // Cancel sending of the next 0
+            fSyncTimer.cancel();
+            fCounter[0]++;
+
+            // Start continous reading of all channels
+            ScheduleUpdate(100);
+            return;
+        }
+
+        if (send_counter%8 != fWrapCounter)
+        {
+            ostringstream msg;
+            msg << "Corrupted answer: received wrap counter " << fWrapCounter  << " is not send counter " << send_counter << "%8.";
+            Error(msg);
+
+            DelayedReconnect();
+        }
+
+
+        // Check if new values have been received
+        if (cmd==kCmdRead || cmd==kCmdChannelSet || cmd==kExpertChannelSet)
+            UpdateVA();
+
+        // ----- Take action depending on what is going on -----
+
+        if (command==kCmdReset)
+        {
+            Message("Reset command successfully answered...");
+
+            fCounter[1]++;
+
+            // Re-start cyclic reading of values after a short time
+            // to allow the currents to become stable. This ensures that
+            // we get an update soon but wait long enough to get reasonable
+            // values
+            fUpdateTimer.cancel();
+
+            if (fUpdateTime==0)
+                ReadAllChannels(true);
+            else
+            {
+                Message("...restarting automatic readout.");
+                ScheduleUpdate(100);
+            }
+        }
+
+        if (command==kResetChannels)
+        {
+            ExpertReset(false);
+            fCounter[5]++;
+        }
+
+        if (command==kUpdate)
+        {
+            ScheduleUpdate(fUpdateTime);
+            fCounter[2]++;
+        }
+
+        // If we are ramping, schedule a new ramp step
+        if (command==kCmdChannelSet && fIsRamping)
+        {
+            bool oc = false;
+            for (int ch=0; ch<kNumChannels; ch++)
+                if (fPresent[ch/kNumChannelsPerBoard] && fCurrent[ch]<0)
+                    oc = true;
+
+            if (oc)
+            {
+                if (!fEmergencyShutdown)
+                {
+                    Warn("OverCurrent detected - emergency ramp down initiated.");
+                    Dim::SendCommandNB("MCP/STOP");
+                    RampAllDacs(0);
+                    fEmergencyShutdown = true;
+                }
+            }
+            else
+                ScheduleRampStep();
+
+            fCounter[3]++;
+        }
+
+        if (command==kCmdRead)
+            fCounter[4]++;
+
+        if ((command&0xff)==kExpertChannelSet)
+            fCounter[6]++;
+
+        if (command==kCmdGlobalSet)
+            fCounter[7]++;
+    }
+
+    void HandleReceivedData(const bs::error_code& err, size_t bytes_received, int command, int send_counter)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+            {
+                ostringstream msg;
+                msg << "Connection closed by remote host (BIAS, fSendCounter=" << fSendCounter << ")";
+                Warn(msg);
+            }
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            CloseImp(-1);//err!=ba::error::basic_errors::operation_aborted);
+            return;
+        }
+
+        // Check if the number of received bytes is correctly dividable by 3
+        // This check should never fail - just for sanity
+        if (bytes_received%3)
+        {
+            Error("Number of received bytes not a multiple of 3, can't read data.");
+            CloseImp(-1);
+            return;
+        }
+
+        // We have three different parallel streams:
+        //  1) The setting of voltages due to ramping
+        //  2) The cynclic request of the currents
+        //  3) Answers to commands
+        // For each of these three streams an own buffer is needed, otherwise
+        // a buffer which is filled in the background might overwrite
+        // a buffer which is currently evaluated. In all other programs
+        // this is no problem because the boards don't answer and if
+        // they do the answer identifies itself. Consequently,
+        // there is always only one async_read in progress. Here we have
+        // three streams which need to be connected somehow to the
+        // commands.
+
+        // Maybe a better possibility would be to setup a command
+        // queue (each command will be queued in a buffer)
+        // and whenever an answer has been received, a new async_read is
+        // scheduled.
+        // Build a command queue<pair<command, vector<char>>>
+        ///  This replaces the send counter and the command argument
+        //   in handleReceivedData
+
+        switch (command&0xff)
+        {
+        case kSynchronize:
+        case kCmdReset:
+        case kExpertChannelSet:
+        case kCmdGlobalSet:
+        case kResetChannels:
+        case kCmdRead:
+            HandleReceivedData(fBuffer, bytes_received, command, send_counter);
+            fWaitingForAnswer = -1;
+            return;
+
+        case kCmdChannelSet:
+            HandleReceivedData(fBufferRamp, bytes_received, command, send_counter);
+            return;
+
+        case kUpdate:
+            HandleReceivedData(fBufferUpdate, bytes_received, command, send_counter);
+            return;
+        }
+    }
+
+    // --------------------------------------------------------------------
+
+    void HandleSyncTimer(int counter, const bs::error_code &error)
+    {
+        if (error==ba::error::basic_errors::operation_aborted)
+        {
+            if (fIsInitializing==1)
+                Warn("Synchronization aborted...");
+            // case 0 and 2 should not happen
+            return;
+        }
+
+        if (error)
+        {
+            ostringstream str;
+            str << "Synchronization timer: " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            CloseImp(-1);
+            return;
+        }
+
+        if (!is_open())
+        {
+            Warn("Synchronization in progress, but disconnected.");
+            return;
+        }
+
+        ostringstream msg;
+        msg << "Synchronization time expired (" << counter << ")";
+        Info(msg);
+
+        if (fIsInitializing)
+        {
+            PostMessage("\0", 1);
+
+            if (counter==2)
+            {
+                Error("Synchronization attempt timed out.");
+                CloseImp(-1);
+                return;
+            }
+
+            ScheduleSync(counter+1);
+            return;
+        }
+
+        Info("Synchronisation successfull.");
+    }
+
+    void ScheduleSync(int counter=0)
+    {
+        fSyncTimer.expires_from_now(boost::posix_time::milliseconds(fSyncTime));
+        fSyncTimer.async_wait(boost::bind(&ConnectionBias::HandleSyncTimer, this, counter, dummy::error));
+    }
+
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        // We connect for the first time or haven't received
+        // a valid warp counter yet... this procedure also sets
+        // our volatges to 0 if we have connected but never received
+        // any answer.
+        if (fWrapCounter<0)
+        {
+            fDacTarget.assign(kNumChannels, 0);
+            fDacCommand.assign(kNumChannels, 0);
+            fDacActual.assign(kNumChannels, 0);
+        }
+
+        // Reset everything....
+        fSendCounter    = -1;
+        fWrapCounter    = -1;
+        fGlobalDacCmd   = -1;
+        fIsInitializing =  1;
+        fIsRamping      = false;
+
+        fLastConnect = Time();
+
+        // Send a single 0 (and possible two consecutive 0's
+        // to make sure we are in sync with the device)
+        PostMessage("\0", 1);
+        AsyncRead(ba::buffer(fBuffer, 3), kSynchronize, 0);//++fSendCounter);
+        fWaitingForAnswer = kSynchronize;
+
+        // Wait for some time before sending the next 0
+        ScheduleSync();
+    }
+
+    // --------------------------------------------------------------------
+
+    void HandleUpdateTimer(const bs::error_code &error)
+    {
+        if (error==ba::error::basic_errors::operation_aborted)
+        {
+            Warn("Update timer aborted...");
+            fIsRamping = false;
+            return;
+        }
+
+        if (error)
+        {
+            ostringstream str;
+            str << "Update timer: " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            CloseImp(-1);
+            return;
+        }
+
+        if (!is_open())
+            return;
+
+        if (fUpdateTime==0 && fIsInitializing!=2)
+            return;
+
+        if (fIsRamping)
+            ScheduleUpdate(fUpdateTime);
+        else
+            ReadAllChannels(true);
+
+        fIsInitializing = 0;
+    }
+
+    void ScheduleUpdate(int millisec)
+    {
+        fUpdateTimer.expires_from_now(boost::posix_time::milliseconds(millisec));
+        fUpdateTimer.async_wait(boost::bind(&ConnectionBias::HandleUpdateTimer, this, dummy::error));
+    }
+
+    // --------------------------------------------------------------------
+
+    void PrintLineCmdDac(int b, int ch, const vector<uint16_t> &dac)
+    {
+        Out() << setw(2) << b << "|";
+
+        for (int c=ch; c<ch+4; c++)
+        {
+            const int id = c+kNumChannelsPerBoard*b;
+            Out() << " " << setw(4) << int32_t(dac[id])<<"/"<<fDacActual[id] << ":" << setw(5) << ConvertDacToVolt(id, fDacTarget[id]);
+        }
+        Out() << endl;
+    }
+
+    void PrintCommandDac(const vector<uint16_t> &dac)
+    {
+        Out() << dec << setprecision(2) << fixed << setfill(' ');
+        for (int b=0; b<kNumBoards; b++)
+        {
+            if (!fPresent[b])
+            {
+                Out() << setw(2) << b << "-" << endl;
+                continue;
+            }
+
+            PrintLineCmdDac(b,  0, dac);
+            PrintLineCmdDac(b,  4, dac);
+            PrintLineCmdDac(b,  8, dac);
+            PrintLineCmdDac(b, 12, dac);
+            PrintLineCmdDac(b, 16, dac);
+            PrintLineCmdDac(b, 20, dac);
+            PrintLineCmdDac(b, 24, dac);
+            PrintLineCmdDac(b, 28, dac);
+        }
+    }
+
+    void SetAllChannels(const vector<uint16_t> &dac, bool special=false)
+    {
+        if (fIsDummyMode)
+        {
+            PrintCommandDac(dac);
+            return;
+        }
+
+        vector<char> data;
+        data.reserve(kNumChannels*3);
+
+        for (int ch=0; ch<kNumChannels; ch++)
+        {
+            // FIXME: dac[ch] += calib_offset
+            const vector<char> cmd = GetCmd(kCmdChannelSet, ch, dac[ch]);
+            data.insert(data.end(), cmd.begin(), cmd.end());
+
+            fDacCommand[ch] = dac[ch];
+        }
+
+        fSendCounter += kNumChannels;
+
+        PostMessage(data);
+        AsyncRead(ba::buffer(special ? fBuffer : fBufferRamp, kNumChannels*3),
+                  special ? kResetChannels : kCmdChannelSet, fSendCounter);
+
+        if (special)
+            fWaitingForAnswer = kResetChannels;
+    }
+
+    uint16_t RampOneStep(uint16_t ch)
+    {
+        if (fDacTarget[ch]>fDacActual[ch])
+            return fDacActual[ch]+fRampStep>fDacTarget[ch] ? fDacTarget[ch] : fDacActual[ch]+fRampStep;
+
+        if (fDacTarget[ch]<fDacActual[ch])
+            return fDacActual[ch]-fRampStep<fDacTarget[ch] ? fDacTarget[ch] : fDacActual[ch]-fRampStep;
+
+        return fDacActual[ch];
+    }
+
+    bool RampOneStep()
+    {
+        if (fRampTime<0)
+        {
+            Warn("Ramping step time not yet set... ramping not started.");
+            return false;
+        }
+        if (fRampStep<0)
+        {
+            Warn("Ramping step not yet set... ramping not started.");
+            return false;
+        }
+
+        vector<uint16_t> dac(kNumChannels);
+
+        bool identical = true;
+        for (int ch=0; ch<kNumChannels; ch++)
+        {
+            dac[ch] = RampOneStep(ch);
+            if (dac[ch]!=fDacActual[ch] && fPresent[ch/kNumChannelsPerBoard])
+                identical = false;
+        }
+
+        if (identical)
+        {
+            Info("Ramping: target values reached.");
+            return false;
+        }
+
+        if (fWaitingForAnswer<0)
+        {
+            SetAllChannels(dac);
+            return true;
+        }
+
+        ostringstream msg;
+        msg << "RampOneStep while waiting for answer to last command (id=" << fWaitingForAnswer << ")... ramp step delayed.";
+        Warn(msg);
+
+        // Delay ramping
+        ScheduleRampStep();
+        return true;
+    }
+
+    void HandleRampTimer(const bs::error_code &error)
+    {
+        if (error==ba::error::basic_errors::operation_aborted)
+        {
+            Warn("Ramping aborted...");
+            fIsRamping = false;
+            return;
+        }
+
+        if (error)
+        {
+            ostringstream str;
+            str << "Ramping timer: " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            fIsRamping = false;
+            CloseImp(-1);
+            return;
+        }
+
+        if (!is_open())
+        {
+            Warn("Ramping in progress, but disconnected.");
+            fIsRamping = false;
+            return;
+        }
+
+        if (!fIsRamping)
+        {
+            Error("Ramp handler called although no ramping in progress.");
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fRampTimer.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        fIsRamping = RampOneStep();
+    }
+
+    void ScheduleRampStep()
+    {
+        fRampTimer.expires_from_now(boost::posix_time::milliseconds(fRampTime));
+        fRampTimer.async_wait(boost::bind(&ConnectionBias::HandleRampTimer, this, dummy::error));
+    }
+
+public:
+    ConnectionBias(ba::io_service& ioservice, MessageImp &imp) : ConnectionUSB(ioservice, imp()),
+        fSyncTimer(ioservice),
+        fRampTimer(ioservice),
+        fUpdateTimer(ioservice),
+        fBuffer(3*kNumChannels),
+        fBufferRamp(3*kNumChannels),
+        fBufferUpdate(3*kNumChannels),
+        fIsVerbose(false),
+        fIsDummyMode(false),
+        fPresent(kNumBoards),
+        fWrapCounter(-1),
+        fRampStep(-1),
+        fRampTime(-1),
+        fUpdateTime(3000),
+        fSyncTime(333),
+        fReconnectDelay(1),
+        fIsRamping(false),
+        fWaitingForAnswer(-1),
+        fCounter(8),
+        fEmergencyLimit(0),
+        fEmergencyShutdown(false),
+        fCurrent(kNumChannels),
+        fOperationVoltage(kNumChannels, 0),
+        //fChannelOffset(kNumChannels),
+        fCalibrationOffset(kNumChannels),
+        fCalibrationSlope(kNumChannels, 90000),
+        fVoltageMaxAbs(75),
+        fVoltageMaxRel(2),
+        fDacTarget(kNumChannels),
+        fDacCommand(kNumChannels),
+        fDacActual(kNumChannels)
+    {
+        SetLogStream(&imp);
+    }
+
+    // --------------------------------------------------------------------
+
+    bool CheckDac(uint16_t dac)
+    {
+        if (dac<4096)
+            return true;
+
+        ostringstream msg;
+        msg << "CheckDac - Dac value of " << dac << " exceeds maximum of 4095.";
+        Error(msg);
+        return false;
+    }
+
+    bool CheckChannel(uint16_t ch)
+    {
+        if (ch<kNumChannels)
+            return true;
+
+        ostringstream msg;
+        msg << "CheckChannel - Channel " << ch << " out of range [0;" << kNumChannels-1 << "].";
+        Error(msg);
+        return false;
+    }
+
+    bool CheckChannelVoltage(uint16_t ch, float volt)
+    {
+        if (volt>fVoltageMaxAbs)
+        {
+            ostringstream msg;
+            msg << "CheckChannelVoltage - Set voltage " << volt << "V of channel " << ch << " exceeds absolute limit of " << fVoltageMaxAbs << "V.";
+            Warn(msg);
+            return false;
+        }
+
+        if (fOperationVoltage[ch]<=0)
+            return true;
+
+        if (volt>fOperationVoltage[ch]+fVoltageMaxRel) // FIXME: fVoltageMaxRel!!!
+        {
+            ostringstream msg;
+            msg << "CheckChannelVoltage - Set voltage " << volt << "V of channel " << ch << " exceeds limit of " << fVoltageMaxRel << "V above operation voltage " << fOperationVoltage[ch] << "V + limit " << fVoltageMaxRel << "V.";
+            Error(msg);
+            return false;
+        }
+
+        return true;
+    }
+
+    // --------------------------------------------------------------------
+
+    bool RampSingleChannelDac(uint16_t ch, uint16_t dac)
+    {
+        if (!CheckChannel(ch))
+            return false;
+
+        if (!CheckDac(dac))
+            return false;
+
+        fDacTarget[ch] = dac;
+        UpdateV();
+
+        if (!fIsRamping)
+            fIsRamping = RampOneStep();
+
+        return true;
+    }
+
+    bool RampAllChannelsDac(const vector<uint16_t> &dac)
+    {
+        for (int ch=0; ch<kNumChannels; ch++)
+            if (!CheckDac(dac[ch]))
+                return false;
+
+        fDacTarget = dac;
+        UpdateV();
+
+        if (!fIsRamping)
+            fIsRamping = RampOneStep();
+
+        return true;
+    }
+
+    bool RampAllDacs(uint16_t dac)
+    {
+        return RampAllChannelsDac(vector<uint16_t>(kNumChannels, dac));
+    }
+
+    // --------------------------------------------------------------------
+
+    uint16_t ConvertVoltToDac(uint16_t ch, double volt)
+    {
+        if (fCalibrationSlope[ch]<=0)
+            return 0;
+
+        const double current = (volt-fCalibrationOffset[ch])/fCalibrationSlope[ch];
+        return current<0 ? 0 : nearbyint(current*4096000); // Current [A] to dac [ /= 1mA/4096]
+    }
+
+    double ConvertDacToVolt(uint16_t ch, uint16_t dac)
+    {
+        if (fCalibrationSlope[ch]<=0)
+            return 0;
+
+        const double current = dac/4096000.;  // Convert dac to current [A] [ *= 1mA/4096]
+        return current*fCalibrationSlope[ch] + fCalibrationOffset[ch];
+    }
+
+    // --------------------------------------------------------------------
+
+    bool RampSingleChannelVoltage(uint16_t ch, float volt)
+    {
+        if (!CheckChannel(ch))
+            return false;
+
+        if (!CheckChannelVoltage(ch, volt))
+            return false;
+
+        const uint16_t dac = ConvertVoltToDac(ch, volt);
+        return RampSingleChannelDac(ch, dac);
+    }
+
+    bool RampAllChannelsVoltage(const vector<float> &volt)
+    {
+        vector<uint16_t> dac(kNumChannels);
+        for (size_t ch=0; ch<kNumChannels; ch++)
+        {
+            if (!CheckChannelVoltage(ch, volt[ch]))
+                return false;
+
+            dac[ch] = ConvertVoltToDac(ch, volt[ch]);
+        }
+
+        return RampAllChannelsDac(dac);
+    }
+
+    bool RampAllVoltages(float volt)
+    {
+        return RampAllChannelsVoltage(vector<float>(kNumChannels, volt));
+    }
+
+    // --------------------------------------------------------------------
+
+    /*
+    bool RampSingleChannelOffset(uint16_t ch, float offset, bool relative)
+    {
+        if (!CheckChannel(ch))
+            return false;
+
+//        if (relative)
+//            offset += fDacActual[ch]*90./4096 - fBreakdownVoltage[ch];
+
+        const float volt = fBreakdownVoltage[ch]>0 ? fBreakdownVoltage[ch] + offset : 0;
+
+        if (!RampSingleChannelVoltage(ch, volt))
+            return false;
+
+        fChannelOffset[ch] = offset;
+
+        return true;
+    }
+
+    bool RampAllChannelsOffset(vector<float> offset, bool relative)
+    {
+        vector<float> volt(kNumChannels);
+
+//        if (relative)
+//            for (size_t ch=0; ch<kNumChannels; ch++)
+//                offset[ch] += fDacActual[ch]*90./4096 - fBreakdownVoltage[ch];
+
+        for (size_t ch=0; ch<kNumChannels; ch++)
+            volt[ch] = fBreakdownVoltage[ch]>0 ? fBreakdownVoltage[ch] + offset[ch] : 0;
+
+        if (!RampAllChannelsVoltage(volt))
+            return false;
+
+        fChannelOffset = offset;
+
+        return true;
+    }
+
+    bool RampAllOffsets(float offset, bool relative)
+    {
+        return RampAllChannelsOffset(vector<float>(kNumChannels, offset), relative);
+    }
+    */
+
+    /*
+    bool RampSingleChannelOvervoltage(float offset)
+    {
+        return RampAllChannelsOvervoltage(vector<float>(kNumChannels, offset));
+    }
+    bool RampAllOvervoltages(const vector<float> &overvoltage)
+    {
+        vector<float> volt(kNumChannels);
+
+        for (size_t ch=0; ch<kNumChannels; ch++)
+            volt[ch] = fBreakdownVoltage[ch] + fOvervoltage[ch] + fChannelOffset[ch];
+
+#warning What about empty channels?
+
+        if (!RampAllChannelsVoltage(volt))
+            return false;
+
+        for (size_t ch=0; ch<kNumChannels; ch++)
+            fOvervoltage[ch] = overvoltage[ch];
+
+        return true;
+    }*/
+
+    // --------------------------------------------------------------------
+
+    void OverCurrentReset()
+    {
+        if (fWaitingForAnswer>=0)
+        {
+            ostringstream msg;
+            msg << "OverCurrentReset - Answer on last command (id=" << fWaitingForAnswer << ") not yet received.";
+            Error(msg);
+            return;
+        }
+
+        if (fIsRamping)
+        {
+            Warn("OverCurrentReset - Ramping in progres.");
+            RampStop();
+        }
+
+        vector<uint16_t> dac(fDacActual);
+
+        for (int ch=0; ch<kNumChannels; ch++)
+            if (fCurrent[ch]<0)
+                dac[ch] = 0;
+
+        SetAllChannels(dac, true);
+    }
+
+    void ReadAllChannels(bool special = false)
+    {
+        if (!special && fWaitingForAnswer>=0)
+        {
+            ostringstream msg;
+            msg << "ReadAllChannels - Answer on last command (id=" << fWaitingForAnswer << ") not yet received.";
+            Error(msg);
+            return;
+        }
+
+        vector<char> data;
+        data.reserve(kNumChannels*3);
+
+        for (int ch=0; ch<kNumChannels; ch++)
+        {
+            const vector<char> cmd = GetCmd(kCmdRead, ch);
+            data.insert(data.end(), cmd.begin(), cmd.end());
+        }
+
+        fSendCounter += kNumChannels;
+
+        PostMessage(data);
+        AsyncRead(ba::buffer(special ? fBufferUpdate : fBuffer, kNumChannels*3),
+                  special ? kUpdate : kCmdRead, fSendCounter);
+
+        if (!special)
+            fWaitingForAnswer = kCmdRead;
+    }
+
+    bool SetReferences(const vector<float> &volt, const vector<float> &offset, const vector<float> &slope)
+    {
+        if (volt.size()!=kNumChannels)
+        {
+            ostringstream out;
+            out << "SetReferences - Given vector has " << volt.size() << " elements - expected " << kNumChannels << endl;
+            Error(out);
+            return false;
+        }
+        if (offset.size()!=kNumChannels)
+        {
+            ostringstream out;
+            out << "SetReferences - Given vector has " << offset.size() << " elements - expected " << kNumChannels << endl;
+            Error(out);
+            return false;
+        }
+        if (slope.size()!=kNumChannels)
+        {
+            ostringstream out;
+            out << "SetReferences - Given vector has " << slope.size() << " elements - expected " << kNumChannels << endl;
+            Error(out);
+            return false;
+        }
+
+        fOperationVoltage  = volt;
+        fCalibrationOffset = offset;
+        fCalibrationSlope  = slope;
+
+        UpdateVgapd();
+
+        return true;
+    }
+
+    // --------------------------------------------------------------------
+
+    void RampStop()
+    {
+        fRampTimer.cancel();
+        fIsRamping = false;
+
+        Message("Ramping stopped.");
+    }
+
+    void RampStart()
+    {
+        if (fIsRamping)
+        {
+            Warn("RampStart - Ramping already in progress... ignored.");
+            return;
+        }
+
+        fIsRamping = RampOneStep();
+    }
+
+    void SetRampTime(uint16_t val)
+    {
+        fRampTime = val;
+    }
+
+    void SetRampStep(uint16_t val)
+    {
+        fRampStep = val;
+    }
+
+    uint16_t GetRampStepVolt() const
+    {
+        return fRampStep*90./4096;
+    }
+
+    bool IsRamping() const { return fIsRamping; }
+
+    // -------------------------------------------------------------------
+
+    void ExpertReset(bool expert_mode=true)
+    {
+        if (expert_mode && fWaitingForAnswer>=0)
+        {
+            ostringstream msg;
+            msg << "ExpertReset - Answer on last command (id=" << fWaitingForAnswer << ") not yet received.";
+            Error(msg);
+            return;
+        }
+
+        if (expert_mode)
+            Warn("EXPERT MODE: Sending reset.");
+
+        PostMessage(GetCmd(kCmdReset));
+        AsyncRead(ba::buffer(fBuffer, 3), kCmdReset, ++fSendCounter);
+        fWaitingForAnswer = kCmdReset;
+    }
+
+
+    bool ExpertChannelSetDac(uint16_t ch, uint16_t dac)
+    {
+        if (fWaitingForAnswer>=0)
+        {
+            ostringstream msg;
+            msg << "ExpertChannelSetDac - Answer on last command (id=" << fWaitingForAnswer << ") not yet received.";
+            Error(msg);
+            return false;
+        }
+
+        if (!CheckDac(dac))
+            return false;
+
+        fDacCommand[ch] = dac;
+
+        ostringstream msg;
+        msg << "EXPERT MODE: Sending 'ChannelSet' (set ch " << ch << " to DAC=" << dac << ")";
+        Warn(msg);
+
+        // FIXME: dac += calib_offset
+        PostMessage(GetCmd(kCmdChannelSet, ch, dac));
+        AsyncRead(ba::buffer(fBuffer, 3), kExpertChannelSet|(ch<<8), ++fSendCounter);
+        fWaitingForAnswer = kExpertChannelSet|(ch<<8);
+
+        return true;
+    }
+
+    bool ExpertChannelSetVolt(uint16_t ch, double volt)
+    {
+        return ExpertChannelSetDac(ch, volt*4096/90.);
+    }
+
+    bool ExpertGlobalSetDac(uint16_t dac)
+    {
+        if (fWaitingForAnswer>=0)
+        {
+            ostringstream msg;
+            msg << "ExpertGlobalSetDac - Answer on last command (id=" << fWaitingForAnswer << ") not yet received.";
+            Error(msg);
+            return false;
+        }
+
+        if (!CheckDac(dac))
+            return false;
+
+        if (fGlobalDacCmd>=0)
+        {
+            Error("ExpertGlobalSetDac - Still waiting for previous answer to 'GlobalSet'");
+            return false;
+        }
+
+        fGlobalDacCmd = dac;
+
+        ostringstream msg;
+        msg << "EXPERT MODE: Sending 'GlobalSet' (DAC=" << dac << ")";
+        Warn(msg);
+
+        PostMessage(GetCmd(kCmdGlobalSet, 0, dac));
+        AsyncRead(ba::buffer(fBuffer, 3), kCmdGlobalSet, ++fSendCounter);
+        fWaitingForAnswer = kCmdGlobalSet;
+
+        return true;
+    }
+
+    bool ExpertGlobalSetVolt(float volt)
+    {
+        return ExpertGlobalSetDac(volt*4096/90);
+    }
+
+    // --------------------------------------------------------------------
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+    }
+
+    void SetDummyMode(bool b)
+    {
+        fIsDummyMode = b;
+    }
+
+    void PrintInfo()
+    {
+        Out() << endl << kBold << dec << '\n';
+        Out() << "fWrapCounter    = " << fWrapCounter << '\n';
+        Out() << "fSendCounter    = " << fSendCounter%8 << " (" << fSendCounter << ")" << '\n';
+        Out() << "fIsInitializing = " << fIsInitializing << '\n';
+        Out() << "fIsRamping      = " << fIsRamping << '\n';
+        Out() << "Answer counter:" << '\n';
+        Out() << " - Synchronization: " << fCounter[0] << '\n';
+        Out() << " - Reset:           " << fCounter[1] << '\n';
+        Out() << " - Request update:  " << fCounter[2] << '\n';
+        Out() << " - Ramp step:       " << fCounter[3] << '\n';
+        Out() << " - Read:            " << fCounter[4] << '\n';
+        Out() << " - Reset channels:  " << fCounter[5] << '\n';
+        Out() << " - Global set:      " << fCounter[7] << '\n';
+        Out() << " - Channel set:     " << fCounter[6] << '\n' << endl;
+    }
+
+    void PrintLineA(int b, int ch)
+    {
+        Out() << setw(2) << b << "|";
+
+        for (int c=ch; c<ch+8; c++)
+        {
+            const int id = c+kNumChannelsPerBoard*b;
+            Out() << (fCurrent[id]<0?kRed:kGreen);
+            Out() << " " << setw(7) << abs(fCurrent[id])*5000/4096.;
+        }
+        Out() << endl;
+
+    }
+
+    void PrintA()
+    {
+        Out() << dec << setprecision(2) << fixed << setfill(' ');
+        for (int b=0; b<kNumBoards; b++)
+        {
+            if (!fPresent[b])
+            {
+                Out() << setw(2) << b << "-" << endl;
+                continue;
+            }
+
+            PrintLineA(b,  0);
+            PrintLineA(b,  8);
+            PrintLineA(b, 16);
+            PrintLineA(b, 24);
+        }
+    }
+
+    void PrintLineV(int b, int ch)
+    {
+        Out() << setw(2) << b << "|";
+
+        for (int c=ch; c<ch+4; c++)
+        {
+            const int id = c+kNumChannelsPerBoard*b;
+            Out() << " ";
+            Out() << (fDacActual[id]==fDacTarget[id]?kGreen:kRed);
+            //Out() << setw(5) << fDacActual[id]*90/4096. << '/';
+            //Out() << setw(5) << fDacTarget[id]*90/4096.;
+
+            Out() << setw(5) << ConvertDacToVolt(id, fDacActual[id]) << '/';
+            Out() << setw(5) << ConvertDacToVolt(id, fDacTarget[id]);
+        }
+        Out() << endl;
+    }
+
+    void PrintV()
+    {
+        Out() << dec << setprecision(2) << fixed << setfill(' ');
+        for (int b=0; b<kNumBoards; b++)
+        {
+            if (!fPresent[b])
+            {
+                Out() << setw(2) << b << "-" << endl;
+                continue;
+            }
+
+            PrintLineV(b,  0);
+            PrintLineV(b,  4);
+            PrintLineV(b,  8);
+            PrintLineV(b, 12);
+            PrintLineV(b, 16);
+            PrintLineV(b, 20);
+            PrintLineV(b, 24);
+            PrintLineV(b, 28);
+        }
+    }
+
+    void PrintLineGapd(int b, int ch)
+    {
+        Out() << setw(2) << b << "|";
+
+        for (int c=ch; c<ch+8; c++)
+        {
+            const int id = c+kNumChannelsPerBoard*b;
+            Out() << " " << setw(5) << fOperationVoltage[id];
+        }
+        Out() << endl;
+    }
+
+    void PrintReferenceVoltage()
+    {
+        Out() << dec << setprecision(2) << fixed << setfill(' ');
+        for (int b=0; b<kNumBoards; b++)
+        {
+            if (!fPresent[b])
+            {
+                Out() << setw(2) << b << "-" << endl;
+                continue;
+            }
+
+            PrintLineGapd(b,  0);
+            PrintLineGapd(b,  8);
+            PrintLineGapd(b, 16);
+            PrintLineGapd(b, 24);
+        }
+    }
+
+    // -------------------------------------------------------------------
+
+    void SetUpdateInterval(uint32_t val)
+    {
+        fUpdateTime = val;
+
+        if (!IsConnected() || fIsInitializing)
+            return;
+
+        fUpdateTimer.cancel();
+
+        if (fUpdateTime>0)
+            ScheduleUpdate(fUpdateTime);
+    }
+
+    void SetSyncDelay(uint16_t val)
+    {
+        fSyncTime = val;
+    }
+
+    void SetVoltMaxAbs(float max)
+    {
+        if (max>90)
+            max = 90;
+        if (max<0)
+            max = 0;
+
+        fVoltageMaxAbs = max;
+    }
+
+    void SetVoltMaxRel(float max)
+    {
+        if (max>90)
+            max = 90;
+        if (max<0)
+            max = 0;
+
+        fVoltageMaxRel = max;
+    }
+
+    uint16_t GetVoltMaxAbs() const
+    {
+        return fVoltageMaxAbs;
+    }
+
+    uint16_t GetVoltMaxRel() const
+    {
+        return fVoltageMaxRel;
+    }
+
+    State::states_t GetStatus()
+    {
+        if (!IsConnected())
+            return State::kDisconnected;
+
+        if (IsConnecting())
+            return State::kConnecting;
+
+        if (fIsInitializing)
+            return State::kInitializing;
+
+        if (fIsRamping)
+            return State::kRamping;
+
+        for (int ch=0; ch<kNumChannels; ch++)
+            if (fPresent[ch/kNumChannelsPerBoard] && fCurrent[ch]<0)
+                return State::kOverCurrent;
+
+        bool isoff = true;
+        for (int ch=0; ch<kNumChannels; ch++)
+            if (fPresent[ch/kNumChannelsPerBoard] && fDacActual[ch]!=0)
+                isoff = false;
+        if (isoff)
+            return State::kVoltageOff;
+
+        for (int ch=0; ch<kNumChannels; ch++)
+            if (fPresent[ch/kNumChannelsPerBoard] && fDacActual[ch]!=fDacTarget[ch])
+                return State::kNotReferenced;
+
+        return State::kVoltageOn;
+    }
+
+    void SetReconnectDelay(uint32_t delay=1)
+    {
+        fReconnectDelay = delay;
+    }
+
+    void SetEmergencyLimit(int32_t limit=0)
+    {
+        fEmergencyLimit = limit;
+    }
+
+    void ResetEmergencyShutdown()
+    {
+        fEmergencyShutdown = false;
+    }
+
+    bool IsEmergencyShutdown() const
+    {
+        return fEmergencyShutdown;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimBias : public ConnectionBias
+{
+private:
+
+    DimDescribedService fDimCurrent;
+    DimDescribedService fDimDac;
+    DimDescribedService fDimVolt;
+    DimDescribedService fDimGapd;
+
+public:
+    void UpdateVA()
+    {
+        const Time now;
+
+        UpdateV(now);
+
+        fDimCurrent.setTime(now);
+        fDimCurrent.Update(fCurrent);
+    }
+
+private:
+    void UpdateV(const Time now=Time())
+    {
+        const bool rc = !memcmp(fDacActual.data(), fDacTarget.data(), kNumChannels*2);
+
+        vector<uint16_t> val(2*kNumChannels);
+        memcpy(val.data(),              fDacActual.data(), kNumChannels*2);
+        memcpy(val.data()+kNumChannels, fDacTarget.data(), kNumChannels*2);
+        fDimDac.setTime(now);
+        fDimDac.setQuality(rc);
+        fDimDac.Update(val);
+
+        vector<float> volt(kNumChannels);
+        for (float ch=0; ch<kNumChannels; ch++)
+            volt[ch] = ConvertDacToVolt(ch, fDacActual[ch]);
+        fDimVolt.setTime(now);
+        fDimVolt.setQuality(rc);
+        fDimVolt.Update(volt);
+    }
+
+    void UpdateVgapd()
+    {
+        vector<float> volt;
+        volt.reserve(3*kNumChannels);
+        volt.insert(volt.end(), fOperationVoltage.begin(),   fOperationVoltage.end());
+        volt.insert(volt.end(), fCalibrationOffset.begin(),  fCalibrationOffset.end());
+        volt.insert(volt.end(), fCalibrationSlope.begin(),   fCalibrationSlope.end());
+        fDimGapd.Update(volt);
+    }
+
+public:
+    ConnectionDimBias(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionBias(ioservice, imp),
+        fDimCurrent("BIAS_CONTROL/CURRENT", "S:416",
+                    "|I[dac]:Bias current (conversion: 5000uA/4096dac)"),
+        fDimDac("BIAS_CONTROL/DAC", "S:416;S:416",
+                "|U[dac]:Current dac setting"
+                "|Uref[dac]:Reference dac setting"),
+        fDimVolt("BIAS_CONTROL/VOLTAGE", "F:416",
+                 "|Uout[V]:Output voltage"),
+        fDimGapd("BIAS_CONTROL/NOMINAL", "F:416;F:416;F:416",
+                 "|Uop[V]:Nominal operation voltage at 25deg C"
+                 "|Uoff[V]:Bias crate channel calibration offsets"
+                 "|Rcal[Ohm]:Bias crate channel calibration slope")
+    {
+    }
+
+    // A B [C] [D] E [F] G H [I] J K [L] M N O P Q R [S] T U V W [X] Y Z
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineBias : public StateMachineAsio<T>
+{
+    int Wrap(boost::function<void()> f)
+    {
+        f();
+        return T::GetCurrentState();
+    }
+
+    function<int(const EventImp &)> Wrapper(function<void()> func)
+    {
+        return bind(&StateMachineBias::Wrap, this, func);
+    }
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+private:
+    S fBias;
+
+    bool fExpertMode;
+
+    Time fSunRise;
+
+    // --------------------------------------------------------------------
+
+    // SET_GLOBAL_DAC_VALUE
+    int SetGlobalDac(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetGlobalDac", 2))
+            return false;
+
+        fBias.RampAllDacs(evt.GetUShort());
+
+        return T::GetCurrentState();
+    }
+
+    // SET_CHANNEL_DAC_VALUE
+    int SetChannelDac(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetChannelDac", 4))
+            return false;
+
+        fBias.RampSingleChannelDac(evt.Get<uint16_t>(), evt.Get<uint16_t>(2));
+
+        return T::GetCurrentState();
+    }
+
+    // --------------------------------------------------------------------
+
+    // SET_CHANNEL_VOLTAGE
+    int SetChannelVolt(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetChannelVolt", 6))
+            return false;
+
+        fBias.RampSingleChannelVoltage(evt.GetUShort(), evt.Get<float>(2));
+
+        return T::GetCurrentState();
+    }
+
+    // SET_GLOBAL_VOLTAGE
+    int SetGlobalVolt(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetGlobalVolt", 4))
+            return false;
+
+        fBias.RampAllVoltages(evt.GetFloat());
+
+        return T::GetCurrentState();
+    }
+
+    // SET_ALL_CHANNELS_VOLTAGES
+    int SetAllChannelsVolt(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetAllChannelsVolt", 4*kNumChannels))
+            return false;
+
+        const float *ptr = evt.Ptr<float>();
+        fBias.RampAllChannelsVoltage(vector<float>(ptr, ptr+kNumChannels));
+
+        return T::GetCurrentState();
+    }
+
+    // --------------------------------------------------------------------
+
+/*    // INCREASE_GLOBAL_VOLTAGE
+    int IncGlobalVolt(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "IncGlobalVolt", 4))
+            return false;
+
+        fBias.RampAllOffsets(evt.GetFloat(), true);
+
+        return T::GetCurrentState();
+    }
+
+    // INCREASE_CHANNEL_VOLTAGE
+    int IncChannelVolt(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "IncChannelVolt", 6))
+            return false;
+
+        fBias.RampSingleChannelOffset(evt.Get<uint16_t>(), evt.Get<float>(2), true);
+
+        return T::GetCurrentState();
+    }
+
+    // INCREASE_ALL_CHANNELS_VOLTAGES
+    int IncAllChannelsVolt(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "IncAllChannelsVolt", 4*kNumChannels))
+            return false;
+
+        const float *ptr = evt.Ptr<float>();
+        fBias.RampAllChannelsOffset(vector<float>(ptr, ptr+416), true);
+
+        return T::GetCurrentState();
+    }
+*/
+    // --------------------------------------------------------------------
+
+    int ExpertSetGlobalVolt(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "ExpertSetGlobalVolt", 4))
+            return false;
+
+        fBias.ExpertGlobalSetVolt(evt.GetFloat());
+
+        return T::GetCurrentState();
+    }
+
+    int ExpertSetGlobalDac(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "ExpertSetGlobalDac", 2))
+            return false;
+
+        fBias.ExpertGlobalSetDac(evt.GetUShort());
+
+        return T::GetCurrentState();
+    }
+
+    int ExpertSetChannelVolt(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "ExpertSetChannelVolt", 6))
+            return false;
+
+        fBias.ExpertChannelSetVolt(evt.GetUShort(), evt.Get<float>(2));
+
+        return T::GetCurrentState();
+    }
+
+    int ExpertSetChannelDac(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "ExpertSetChannelDac", 4))
+            return false;
+
+        fBias.ExpertChannelSetDac(evt.Get<uint16_t>(), evt.Get<uint16_t>(2));
+
+        return T::GetCurrentState();
+    }
+
+    int ExpertLoadMapFile(const EventImp &evt)
+    {
+        if (evt.GetSize()==0)
+        {
+            T::Warn("ExpertLoadMapFile - No file name given.");
+            return T::GetCurrentState();
+        }
+
+        if (fBias.GetStatus()!=State::kVoltageOff)
+        {
+            T::Warn("ExpertLoadMapFile - Voltage must have been turned off.");
+            return T::GetCurrentState();
+        }
+
+        BiasMap map;
+
+        try
+        {
+            map.Read(evt.GetText());
+        }
+        catch (const runtime_error &e)
+        {
+            T::Warn("Getting reference voltages failed: "+string(e.what()));
+            return T::GetCurrentState();
+        }
+
+        if (!fBias.SetReferences(map.Vgapd(), map.Voffset(), map.Vslope()))
+        {
+            T::Warn("Setting reference voltages failed.");
+            return T::GetCurrentState();
+        }
+
+        fBias.UpdateVA();
+
+        T::Info("Successfully loaded new mapping '"+evt.GetString()+"'");
+
+        return T::GetCurrentState();
+    }
+
+    // --------------------------------------------------------------------
+
+    int SetUpdateInterval(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetUpdateInterval", 4))
+            return false;
+
+        fBias.SetUpdateInterval(evt.Get<int32_t>()<0 ? 0 : evt.Get<uint32_t>());
+
+        return T::GetCurrentState();
+    }
+
+    int Disconnect()
+    {
+        // Close all connections
+        fBias.PostClose(-1);
+
+        /*
+         // Now wait until all connection have been closed and
+         // all pending handlers have been processed
+         poll();
+         */
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fBias.PostClose(-1);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        ba::io_service::poll();
+
+        if (evt.GetBool())
+            fBias.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fBias.SetReconnectDelay();
+        fBias.PostClose(0);
+
+        return T::GetCurrentState();
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fBias.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetDummyMode(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetDummyMode", 1))
+            return T::kSM_FatalError;
+
+        fBias.SetDummyMode(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetExpertMode(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetExpertMode", 1))
+            return T::kSM_FatalError;
+
+        fExpertMode = evt.GetBool();
+
+        if (fExpertMode)
+            T::Warn("Expert commands enabled -- please ensure that you EXACTLY know what you do. These commands can destroy the system.");
+
+        return T::GetCurrentState();
+    }
+
+    int Shutdown(const string &reason)
+    {
+        fBias.RampAllDacs(0);
+        T::Info("Emergency shutdown initiated ["+reason+"].");
+        return State::kLocked;
+    }
+
+    int Unlock()
+    {
+        fBias.ResetEmergencyShutdown();
+        return fBias.GetStatus();
+    }
+
+    int Execute()
+    {
+        const int state = fBias.GetStatus();
+
+        if (fBias.IsEmergencyShutdown()/* && state>State::kInitializing && state<State::kExpertMode*/)
+        {
+            // This needs to be repeated for the case that in between a different command was processed
+            fBias.RampAllDacs(0);
+            return State::kLocked;
+        }
+
+        const Time now;
+        if (now>fSunRise)
+        {
+            const bool shutdown =
+                state==State::kRamping       ||
+                state==State::kVoltageOn     ||
+                state==State::kNotReferenced ||
+                state==State::kOverCurrent;
+
+            if (shutdown)
+                Shutdown("beginning of civil twilight");
+
+            fSunRise = now.GetNextSunRise(-6);
+
+            ostringstream msg;
+            msg << "During next sun-rise nautical twilight will end at " << fSunRise;
+            T::Info(msg);
+
+            if (shutdown)
+                return State::kLocked;
+        }
+
+        if (T::GetCurrentState()==State::kLocked)
+            return T::GetCurrentState();
+
+        if (fExpertMode && state>=State::kConnected)
+            return State::kExpertMode;
+
+        return state;
+    }
+
+public:
+    StateMachineBias(ostream &out=cout) :
+        StateMachineAsio<T>(out, "BIAS_CONTROL"), fBias(*this, *this),
+        fExpertMode(false), fSunRise(Time().GetNextSunRise(-6))
+    {
+        // State names
+        T::AddStateName(State::kDisconnected, "Disconnected",
+                        "Bias-power supply not connected via USB.");
+
+        T::AddStateName(State::kConnecting, "Connecting",
+                        "Trying to establish USB connection to bias-power supply.");
+
+        T::AddStateName(State::kInitializing, "Initializing",
+                        "USB connection to bias-power supply established, synchronizing USB stream.");
+
+        T::AddStateName(State::kConnected, "Connected",
+                        "USB connection to bias-power supply established.");
+
+        T::AddStateName(State::kNotReferenced, "NotReferenced",
+                        "Internal reference voltage does not match last sent voltage.");
+
+        T::AddStateName(State::kVoltageOff, "VoltageOff",
+                        "All voltages are supposed to be switched off.");
+
+        T::AddStateName(State::kVoltageOn, "VoltageOn",
+                        "At least one voltage is switched on and all are at reference.");
+
+        T::AddStateName(State::kOverCurrent, "OverCurrent",
+                        "At least one channel is in over current state.");
+
+        T::AddStateName(State::kExpertMode, "ExpertMode",
+                        "Special (risky!) mode to directly send command to the bias-power supply.");
+
+        T::AddStateName(State::kRamping, "Ramping",
+                        "Voltage ramping in progress.");
+
+        T::AddStateName(State::kLocked, "Locked",
+                        "Locked due to emergency shutdown, no commands accepted except UNLOCK.");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B:1")
+            (bind(&StateMachineBias::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+
+        T::AddEvent("ENABLE_DUMMY_MODE", "B:1")
+            (bind(&StateMachineBias::SetDummyMode, this, placeholders::_1))
+            ("Enable dummy mode. In this mode SetAllChannels prints informations instead of sending anything to the bias crate."
+             "|enable[bool]:disable or enable dummy mode");
+
+        // Conenction commands
+        T::AddEvent("DISCONNECT", State::kConnected, State::kVoltageOff)
+            (bind(&StateMachineBias::Disconnect, this))
+            ("disconnect from USB");
+        T::AddEvent("RECONNECT", "O", State::kDisconnected, State::kConnected, State::kVoltageOff)
+            (bind(&StateMachineBias::Reconnect, this, placeholders::_1))
+            ("(Re)connect USB connection to Bias power supply, a new address can be given"
+             "|tty[string]:new USB address");
+
+
+        T::AddEvent("SET_UPDATE_INTERVAL", "I:1")
+            (bind(&StateMachineBias::SetUpdateInterval, this, placeholders::_1))
+            ("Set the updat einterval how often the currents are requested"
+             "|interval[ms]:Update interval in milliseconds");
+
+
+
+        T::AddEvent("REQUEST_STATUS", State::kConnected, State::kVoltageOn, State::kVoltageOff, State::kNotReferenced, State::kOverCurrent)
+            (Wrapper(bind(&ConnectionBias::ReadAllChannels, &fBias, false)))
+            ("Asynchronously request the status (current) of all channels.");
+
+        T::AddEvent("RESET_OVER_CURRENT_STATUS", State::kOverCurrent)
+            (Wrapper(bind(&ConnectionBias::OverCurrentReset, &fBias)))
+            ("Set all channels in over current state to 0V and send a system reset to reset the over current flags.");
+
+
+        T::AddEvent("SET_CHANNEL_DAC", "S:1;S:1")(State::kConnected)(State::kVoltageOff)(State::kVoltageOn)(State::kNotReferenced)(State::kOverCurrent)(State::kRamping)
+            (bind(&StateMachineBias::SetChannelDac, this, placeholders::_1))
+            ("Set a new target value in DAC counts for a single channel. Starts ramping if necessary."
+             "|channel[short]:Channel for which to set the target voltage [0-415]"
+             "|voltage[dac]:Target voltage in DAC units for the given channel");
+        T::AddEvent("SET_GLOBAL_DAC", "S:1")(State::kConnected)(State::kVoltageOff)(State::kVoltageOn)(State::kNotReferenced)(State::kOverCurrent)(State::kRamping)
+            (bind(&StateMachineBias::SetGlobalDac, this, placeholders::_1))
+            ("Set a new target value for all channels in DAC counts. Starts ramping if necessary. (This command is not realized with the GLOBAL SET command.)"
+             "|voltage[dac]:Global target voltage in DAC counts.");
+
+
+        T::AddEvent("SET_CHANNEL_VOLTAGE", "S:1;F:1")(State::kConnected)(State::kVoltageOff)(State::kVoltageOn)(State::kNotReferenced)(State::kOverCurrent)(State::kRamping)
+            (bind(&StateMachineBias::SetChannelVolt, this, placeholders::_1))
+            ("Set a new target voltage for a single channel. Starts ramping if necessary."
+             "|channel[short]:Channel for which to set the target voltage [0-415]"
+             "|voltage[V]:Target voltage in volts for the given channel (will be converted to DAC units)");
+        T::AddEvent("SET_GLOBAL_VOLTAGE", "F:1")(State::kConnected)(State::kVoltageOff)(State::kVoltageOn)(State::kNotReferenced)(State::kOverCurrent)(State::kRamping)
+            (bind(&StateMachineBias::SetGlobalVolt, this, placeholders::_1))
+            ("Set a new target voltage for all channels. Starts ramping if necessary. (This command is not realized with the GLOBAL SET command.)"
+             "|voltage[V]:Global target voltage in volts (will be converted to DAC units)");
+        T::AddEvent("SET_ALL_CHANNELS_VOLTAGE", "F:416")(State::kConnected)(State::kVoltageOff)(State::kVoltageOn)(State::kNotReferenced)(State::kOverCurrent)(State::kRamping)
+            (bind(&StateMachineBias::SetAllChannelsVolt, this, placeholders::_1))
+            ("Set all channels to the given new reference voltage. Starts ramping if necessary."
+             "|voltage[V]:New reference voltage for all channels");
+
+/*
+        T::AddEvent("INCREASE_CHANNEL_VOLTAGE", "S:1;F:1", State::kConnected, State::kVoltageOff, State::kVoltageOn, State::kNotReferenced, State::kOverCurrent)
+            (bind(&StateMachineBias::IncChannelVolt, this, placeholders::_1))
+            ("Increases the voltage of all channels by the given offset. Starts ramping if necessary. (This command is not realized with the GLOBAL SET command.)"
+             "|channel[short]:Channel for which to adapt the voltage [0-415]"
+             "|offset[V]:Offset to be added to all channels (will be converted to DAC counts)");
+        T::AddEvent("INCREASE_GLOBAL_VOLTAGE", "F:1", State::kConnected, State::kVoltageOff, State::kVoltageOn, State::kNotReferenced, State::kOverCurrent)
+            (bind(&StateMachineBias::IncGlobalVolt, this, placeholders::_1))
+            ("Increases the voltage of all channels by the given offset. Starts ramping if necessary. (This command is not realized with the GLOBAL SET command.)"
+             "|offset[V]:Offset to be added to all channels (will be converted to DAC counts)");
+        T::AddEvent("INCREASE_ALL_CHANNELS_VOLTAGE", "F:416", State::kConnected, State::kVoltageOff, State::kVoltageOn, State::kNotReferenced, State::kOverCurrent)
+            (bind(&StateMachineBias::IncAllChannelsVolt, this, placeholders::_1))
+            ("Add the given voltages to the current reference voltages. Starts ramping if necessary."
+             "offset[V]:Offsets to be added to the reference voltage of all channels in volts");
+*/
+
+
+
+        T::AddEvent("SET_ZERO_VOLTAGE")(State::kConnected)(State::kVoltageOff)(State::kVoltageOn)(State::kNotReferenced)(State::kOverCurrent)(State::kRamping)
+            (Wrapper(bind(&ConnectionBias::RampAllDacs, &fBias, 0)))
+            ("Set all channels to a zero reference voltage. Starts ramping if necessary.");
+        T::AddEvent("SHUTDOWN")(State::kConnected)(State::kVoltageOff)(State::kVoltageOn)(State::kNotReferenced)(State::kOverCurrent)(State::kRamping)
+            (bind(&StateMachineBias::Shutdown, this, "user request"))
+            ("Same as SET_ZERO_VOLTAGE; but goes to locked state afterwards.");
+
+        T::AddEvent("UNLOCK", State::kLocked)
+            (bind(&StateMachineBias::Unlock, this))
+            ("Unlock if in locked state.");
+
+
+
+
+
+        T::AddEvent("STOP", State::kConnected, State::kRamping)
+            (Wrapper(bind(&ConnectionBias::RampStop, &fBias)))
+            ("Stop an on-going ramping");
+
+        T::AddEvent("START", State::kConnected, State::kNotReferenced)
+            (Wrapper(bind(&ConnectionBias::RampStart, &fBias)))
+            ("Start a ramping if no ramping is in progress and if reference values differ from current voltages");
+
+
+
+        T::AddEvent("PRINT_INFO")
+            (Wrapper(bind(&ConnectionBias::PrintInfo, &fBias)))
+            ("Print a table with all current read back with the last request operation");
+        T::AddEvent("PRINT_CURRENTS")
+            (Wrapper(bind(&ConnectionBias::PrintA, &fBias)))
+            ("Print a table with all current read back with the last request operation");
+        T::AddEvent("PRINT_VOLTAGES")
+            (Wrapper(bind(&ConnectionBias::PrintV, &fBias)))
+            ("Print a table with all voltages (current and reference voltages as currently in memory)");
+        T::AddEvent("PRINT_GAPD_REFERENCE_VOLTAGES")
+            (Wrapper(bind(&ConnectionBias::PrintReferenceVoltage, &fBias)))
+            ("Print the G-APD reference values (breakdown voltage + overvoltage) obtained from file");
+
+
+        T::AddEvent("EXPERT_MODE", "B:1")
+            (bind(&StateMachineBias::SetExpertMode, this, placeholders::_1))
+            ("Enable usage of expert commands (note that for safty reasons the are exclusive with the standard commands)");
+
+        T::AddEvent("EXPERT_RESET", State::kExpertMode)
+            (Wrapper(bind(&ConnectionBias::ExpertReset, &fBias, true)))
+            ("Send the RESET command (note that this is possibly harmfull command)");
+
+        T::AddEvent("EXPERT_SET_GLOBAL_VOLTAGE", "F:1", State::kExpertMode)
+            (bind(&StateMachineBias::ExpertSetGlobalVolt, this, placeholders::_1))
+            ("Send the global set command. The given voltage is converted to DAC counts.");
+
+        T::AddEvent("EXPERT_SET_GLOBAL_DAC", "S:1", State::kExpertMode)
+            (bind(&StateMachineBias::ExpertSetGlobalDac, this, placeholders::_1))
+            ("Send the global set command.");
+
+        T::AddEvent("EXPERT_SET_CHANNEL_VOLTAGE", "S:1;F:1", State::kExpertMode)
+            (bind(&StateMachineBias::ExpertSetChannelVolt, this, placeholders::_1))
+            ("Send a single channel set command. The given voltage is converted to DAC commands.");
+
+        T::AddEvent("EXPERT_SET_CHANNEL_DAC", "S:1;S:1", State::kExpertMode)
+            (bind(&StateMachineBias::ExpertSetChannelDac, this, placeholders::_1))
+            ("Send a single channel set command.");
+
+        T::AddEvent("EXPERT_LOAD_MAP_FILE", "C", State::kExpertMode)
+            (bind(&StateMachineBias::ExpertLoadMapFile, this, placeholders::_1))
+            ("Load a new mapping file.");
+    }
+
+    ~StateMachineBias() { T::Warn("TODO: Implement rampming at shutdown!"); }
+
+    int EvalOptions(Configuration &conf)
+    {
+        // FIXME: Read calib_offset
+        // FIXME: Check calib offset being smaller than +/-0.25V
+
+        fBias.SetVerbose(!conf.Get<bool>("quiet"));
+        fBias.SetDummyMode(conf.Get<bool>("dummy-mode"));
+
+        if (conf.Has("dev"))
+        {
+            fBias.SetEndpoint(conf.Get<string>("dev"));
+            T::Message("Setting device to "+fBias.URL());
+        }
+
+        const uint16_t step = conf.Get<uint16_t>("ramp-step");
+        const uint16_t time = conf.Get<uint16_t>("ramp-delay");
+
+        if (step>230) // 5V
+        {
+            T::Error("ramp-step exceeds allowed range.");
+            return 1;
+        }
+
+        fBias.SetRampStep(step);
+        fBias.SetRampTime(time);
+        fBias.SetUpdateInterval(conf.Get<uint32_t>("update-interval"));
+        fBias.SetEmergencyLimit(conf.Get<uint16_t>("emergency-limit"));
+        fBias.SetSyncDelay(conf.Get<uint16_t>("sync-delay"));
+
+        ostringstream str1, str2;
+        str1 << "Ramping in effective steps of " << fBias.GetRampStepVolt() << "V";
+        str2 << "Ramping with a delay per step of " << time << "ms";
+        T::Message(str1);
+        T::Message(str2);
+
+        // --------------------------------------------------------------------------
+
+        const float maxabsv = conf.Get<float>("volt-max-abs");
+        const float maxrelv = conf.Get<float>("volt-max-rel");
+        if (maxabsv>90)
+        {
+            T::Error("volt-max exceeds 90V.");
+            return 2;
+        }
+        if (maxabsv>75)
+            T::Warn("volt-max exceeds 75V.");
+        if (maxabsv<70)
+            T::Warn("volt-max below 70V.");
+        if (maxabsv<0)
+        {
+            T::Error("volt-max negative.");
+            return 3;
+        }
+
+        fBias.SetVoltMaxAbs(maxabsv);
+        fBias.SetVoltMaxRel(maxrelv);
+
+        ostringstream str3, str4;
+        str3 << "Effective maximum allowed absolute voltage: " << fBias.GetVoltMaxAbs() << "V";
+        str4 << "Effective maximum difference w.r.t to G-APD reference: " << fBias.GetVoltMaxRel() << "V";
+        T::Message(str3);
+        T::Message(str4);
+
+        // --------------------------------------------------------------------------
+
+        BiasMap map;
+
+        if (!conf.Has("bias-map-file") && !conf.Has("bias-database"))
+        {
+            T::Error("Neither bias-map-file not bias-database specified.");
+            return 5;
+        }
+
+        try
+        {
+            if (conf.Has("bias-map-file"))
+                map.Read(conf.Get<string>("bias-map-file"));
+
+            //if (conf.Has("bias-database"))
+            //    map.Retrieve(conf.Get<string>("bias-database"));
+        }
+        catch (const runtime_error &e)
+        {
+            T::Error("Getting reference voltages failed: "+string(e.what()));
+            return 7;
+        }
+
+        if (!fBias.SetReferences(map.Vgapd(), map.Voffset(), map.Vslope()))
+        {
+            T::Error("Setting reference voltages failed.");
+            return 8;
+        }
+
+        // --------------------------------------------------------------------------
+
+        if (conf.Has("dev"))
+            fBias.Connect();
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineBias<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("BIAS control options");
+    control.add_options()
+        ("no-dim,d",        po_bool(),  "Disable dim services")
+        ("dev",             var<string>(),       "Device address of USB port to bias-power supply")
+        ("quiet,q",         po_bool(true),       "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ("dummy-mode",      po_bool(),           "Dummy mode - SetAllChannels prints info instead of sending new values.")
+        ("ramp-delay",      var<uint16_t>(15),   "Delay between the answer of one ramping step and sending the next ramp command to all channels in milliseconds.")
+        ("ramp-step",       var<uint16_t>(46),   "Maximum step in DAC counts during ramping (Volt = DAC*90/4096)")
+        ("update-interval", var<uint32_t>(3000), "Interval between two current requests in milliseconds")
+        ("sync-delay",      var<uint16_t>(500),  "Delay between sending the inital 0's after a newly established connection to synchronize the output stream in milliseconds")
+        ("volt-max-abs",    var<float>(75),      "Absolte upper limit for the voltage (in Volts)")
+        ("volt-max-rel",    var<float>(3.5),     "Relative upper limit for the voltage w.r.t. the G-APD reference voltage (in Volts)")
+        ("bias-map-file",   var<string>(),       "File with nominal and offset voltages for each channel.")
+        ("bias-database",   var<string>(),       "")
+        ("emergency-limit", var<uint16_t>(2200), "A current limit in ADC counts which, if exceeded, will initiate an emergency shutdown (0=off)")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The biasctrl program controls the bias-power supply boards.\n"
+        "\n"
+        "Note: At default the program is started without a command line (user) "
+        "interface. In this case Actions/Commands are available via Dim "
+        "exclusively.\n"
+        "Use the -c option to start the program with a command line interface.\n"
+        "\n"
+        "In the running application:\n"
+        "Use h or help to print a short help message about its usage.\n"
+        "\n"
+        "Usage: biasctrl [-c type] [OPTIONS]\n"
+        "  or:  biasctrl [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineBias<StateMachine,ConnectionBias>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+            if (conf.Get<bool>("no-dim"))
+                return RunShell<LocalStream, StateMachine, ConnectionBias>(conf);
+            else
+                return RunShell<LocalStream, StateMachineDim, ConnectionDimBias>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionBias>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionBias>(conf);
+        }
+        else
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim, ConnectionDimBias>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim, ConnectionDimBias>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/testFACT++branch/src/chatclient.cc
===================================================================
--- branches/testFACT++branch/src/chatclient.cc	(revision 18277)
+++ branches/testFACT++branch/src/chatclient.cc	(revision 18277)
@@ -0,0 +1,93 @@
+#include <boost/filesystem.hpp>
+
+#include "Configuration.h"
+#include "ChatClient.h"
+#include "DimSetup.h"
+
+using namespace std;
+
+template <class T>
+void RunShell(Configuration &conf)
+{
+    // A normal kill will call its destructor! (Very nice feature ;) )
+    static T shell(conf.GetName().c_str(), conf.Get<int>("console")!=1);
+
+    WindowLog &win  = shell.GetStreamIn();
+    WindowLog &wout = shell.GetStreamOut();
+
+    if (conf.Has("log"))
+        if (!wout.OpenLogFile(conf.Get<string>("log")))
+            win << kRed << "ERROR - Couldn't open log-file " << conf.Get<string>("log") << ": " << strerror(errno) << endl;
+
+    shell.Run();
+}
+
+
+// ========================================================================
+void SetupConfiguration(Configuration &conf)
+{
+    const string n = conf.GetName()+".log";
+
+    po::options_description config("Program options");
+    config.add_options()
+        ("dns",       var<string>("localhost"),       "Dim nameserver (overwites DIM_DNS_NODE environment variable)")
+        ("host",      var<string>(""),                "Address with which the Dim nameserver can connect to this host (overwites DIM_HOST_NODE environment variable)")
+        ("log,l",     var<string>(n), "Write log-file")
+        ("console,c", var<int>(0),    "Use console (0=shell, 1=simple buffered, X=simple unbuffered)")
+        ;
+
+    conf.AddEnv("dns",  "DIM_DNS_NODE");
+    conf.AddEnv("host", "DIM_HOST_NODE");
+
+    conf.AddOptions(config);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout << "\n"
+        "The chatclient is a simple Dim based chatclient.\n"
+        "\n"
+        "The chatclient is always started with user intercation. "
+        "Just enter a message. It will be broadcasted through the chatserv, "
+        "which need to be running."
+        "\n"
+        "Usage: chatclient [-c type] [OPTIONS]\n"
+        "  or:  chatclient [OPTIONS]\n";
+    cout << endl;
+
+}
+
+void PrintHelp()
+{
+    /* Additional help text which is printed after the configuration
+     options goes here */
+}
+
+int main(int argc, const char *argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    Dim::Setup(conf.Get<string>("dns"), conf.Get<string>("host"));
+
+    if (conf.Get<int>("console")==0)
+        RunShell<ChatShell>(conf);
+    else
+        RunShell<ChatConsole>(conf);
+
+
+    return 0;
+}
Index: branches/testFACT++branch/src/chatserv.cc
===================================================================
--- branches/testFACT++branch/src/chatserv.cc	(revision 18277)
+++ branches/testFACT++branch/src/chatserv.cc	(revision 18277)
@@ -0,0 +1,103 @@
+#include <iostream>
+
+#include "Dim.h"
+#include "EventImp.h"
+#include "WindowLog.h"
+#include "Configuration.h"
+#include "StateMachineDim.h"
+#include "ReadlineColor.h"
+
+using namespace std;
+
+void SetupConfiguration(Configuration &conf)
+{
+    const string n = conf.GetName()+".log";
+
+    po::options_description config("Program options");
+    config.add_options()
+        ("dns",       var<string>("localhost"),       "Dim nameserver (overwites DIM_DNS_NODE environment variable)")
+        ("host",      var<string>(""),                "Address with which the Dim nameserver can connect to this host (overwites DIM_HOST_NODE environment variable)")
+        ("log,l",     var<string>(n), "Write log-file")
+        ;
+
+    conf.AddEnv("dns",  "DIM_DNS_NODE");
+    conf.AddEnv("host", "DIM_HOST_NODE");
+
+    conf.AddOptions(config);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The chatserv is a Dim-based chat server.\n"
+        "\n"
+        "It is a non-interactive program which acts as a relay of messages "
+        "sent via a Dim command CHAT/MSG and which are redirected to the "
+        "logging service CHAT/MESSAGE.\n"
+        "\n"
+        "Usage: chatserv [OPTIONS]\n"
+        "  or:  chatserv [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    /* Additional help text which is printed after the configuration
+     options goes here */
+}
+
+class ChatServer : public StateMachineDim
+{
+private:
+    int HandleMsg(const EventImp &evt)
+    {
+        Comment(evt.GetString());
+        return GetCurrentState();
+    }
+public:
+    ChatServer(ostream &lout) : StateMachineDim(lout, "CHAT")
+    {
+        AddEvent("MSG", "C")
+            (bind(&ChatServer::HandleMsg, this, placeholders::_1))
+            ("|msg[string]:message to be distributed");
+    }
+};
+
+int main(int argc, const char *argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    Dim::Setup(conf.Get<string>("dns"), conf.Get<string>("host"));
+
+    WindowLog log;
+
+    ReadlineColor::PrintBootMsg(log, conf.GetName(), false);
+
+    if (conf.Has("log"))
+        if (!log.OpenLogFile(conf.Get<string>("log")))
+            cerr << "ERROR - Couldn't open log-file " << conf.Get<string>("log") << ": " << strerror(errno) << endl;
+
+    return ChatServer(log).Run();
+}
+
+// **************************************************************************
+/** @example chatserv.cc
+
+The program is stopped by CTRL-C
+
+*/
+// **************************************************************************
Index: branches/testFACT++branch/src/datalogger.cc
===================================================================
--- branches/testFACT++branch/src/datalogger.cc	(revision 18277)
+++ branches/testFACT++branch/src/datalogger.cc	(revision 18277)
@@ -0,0 +1,2402 @@
+//****************************************************************
+/** @class DataLogger 
+  
+  @brief Logs all message and infos between the services
+  
+  This is the main logging class facility. 
+  It derives from StateMachineDim and DimInfoHandler. the first parent is here to enforce 
+  a state machine behaviour, while the second one is meant to make the dataLogger receive
+  dim services to which it subscribed from.
+  The possible states and transitions of the machine are:
+  \dot
+  // FIXME FIXME: Error states missing...
+  digraph datalogger
+  { 
+     node [shape=record, fontname=Helvetica, fontsize=10];
+  
+     srt  [label="Start" style="rounded"]
+     rdy  [label="Ready"]
+     nop  [label="NightlyOpen"]
+     wait [label="WaitingRun"]
+     log  [label="Logging"]
+
+     //e    [label="Error" color="red"];
+     //c    [label="BadFolder" color="red"]
+     
+     
+     cmd_start  [label="START"              shape="none" height="0"]
+     cmd_stop   [label="STOP"               shape="none" height="0"]
+     cmd_stopr  [label="STOP_RUN_LOGGING"   shape="none" height="0"]
+     cmd_startr [label="START_RUN_LOGGING"  shape="none" height="0"]
+     
+     { rank=same; cmd_startr cmd_stopr }
+     { rank=same; cmd_start  cmd_stop  }
+     
+  
+     srt  -> rdy  
+       
+     rdy -> cmd_start   [ arrowhead="open" dir="both" arrowtail="tee" weight=10 ]
+     cmd_start -> nop   
+
+     nop  -> cmd_stop   [ arrowhead="none" dir="both" arrowtail="inv"  ]
+     wait -> cmd_stop   [ arrowhead="none" dir="both" arrowtail="inv"  ]
+     log  -> cmd_stop   [ arrowhead="none" dir="both" arrowtail="inv"  ]
+     cmd_stop -> rdy    
+
+     wait -> cmd_stopr  [ arrowhead="none" dir="both" arrowtail="inv"  ]
+     log  -> cmd_stopr  [ arrowhead="none" dir="both" arrowtail="inv"  ]
+     cmd_stopr -> nop   
+
+     nop -> cmd_startr  [ arrowhead="none" dir="both" arrowtail="inv" weight=10 ]
+     rdy -> cmd_startr  [ arrowhead="none" dir="both" arrowtail="inv" ]
+     cmd_startr -> wait [ weight=10 ]
+
+
+     wait -> log
+     log  -> wait
+  }
+  \enddot
+
+  For questions or bug report, please contact Etienne Lyard (etienne.lyard@unige.ch) or Thomas Bretz.
+ */
+ //****************************************************************
+#include <unistd.h>      //for getting stat of opened files
+//#include <sys/statvfs.h> //for getting disk free space
+//#include <sys/stat.h>    //for getting files sizes
+#include <fstream>
+#include <functional>
+
+#include <boost/filesystem.hpp>
+
+#include "Dim.h"
+#include "Event.h"
+#include "StateMachineDim.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Converter.h"
+#include "DimWriteStatistics.h"
+
+#include "Description.h"
+//#include "DimNetwork.h"
+
+#ifdef HAVE_FITS
+#include "Fits.h"
+#endif
+
+#include "DimState.h"
+
+#ifdef HAVE_LIBNOVA
+#include <libnova/solar.h>
+#include <libnova/rise_set.h>
+#endif
+
+//Dim structures
+///distributes the number of opened subscriptions and fits files
+struct NumSubAndFitsType {
+    uint32_t numSubscriptions;
+    uint32_t numOpenFits;
+};
+///distributes which files were opened.
+struct OpenFileToDim {
+    uint32_t code;
+    char fileName[FILENAME_MAX];
+};
+
+///Run number record. Used to keep track of which run numbers are still active
+struct RunNumberType {
+
+    ///the actual run number
+    int32_t runNumber;
+    ///the time at which the run number was received
+    Time time;
+    ///default constructor
+    RunNumberType()
+    {
+        runNumber = 0;
+    }
+    ///default destructor
+    ~RunNumberType()
+    {
+
+    }
+};
+
+EventImp nullEventImp;
+///Dim subscription type. Stores all the relevant info to handle a Dim subscription
+struct SubscriptionType
+{
+#ifdef HAVE_FITS
+    ///Nightly FITS output file
+    Fits    nightlyFile;
+#endif
+    ///the server
+    string server;
+    ///the service
+    string service;
+    ///the converter for outputting the data according to the format
+    shared_ptr<Converter> fConv;
+    ///the original format string. So that we can check if format is changing over time
+    string format;
+    ///the current run number used by this subscription
+    int32_t runNumber;
+    ///time of the latest received event
+    Time lastReceivedEvent;
+    ///whether or not the fits buffer was allocated already
+    bool fitsBufferAllocated;
+    ///the actual dimInfo pointer (must be the last in the list to ensure
+    /// that it is the first which is deleted -- and consequently none of
+    /// the other members can still be in use in an infoHandler)
+    //DIM_REPLACE
+    //shared_ptr<DimStampedInfo> dimInfo;
+    unsigned int index;
+    ///counter to know if format has changed during operations
+    unsigned int increment;
+
+    ///Dim info constructor
+    //DIM_REPLACE
+//    SubscriptionType(DimStampedInfo* info=NULL)
+    SubscriptionType()
+    {
+        fConv = shared_ptr<Converter>();
+        runNumber = 0;
+        lastReceivedEvent = Time::None;
+        fitsBufferAllocated = false;
+        // Should be the last instantiated to make sure that all other
+        // variables which might be used are already initialized
+        //DIM_REPLACE
+        //dimInfo = shared_ptr<DimStampedInfo>(info);
+        index = 0;
+        increment = 0;
+    }
+    ///default destructor
+    ~SubscriptionType()
+    {
+    }
+};
+
+class DataLogger : public StateMachineDim
+//DIM_REPLACE
+//, DimServiceInfoListImp
+{
+public:
+    /// The list of existing states specific to the DataLogger
+    enum
+    {
+        kSM_NightlyOpen     = 20,    ///< Nightly file openned and writing
+        kSM_WaitingRun      = 30,    ///< waiting for the run number to open the run file
+        kSM_Logging         = 40,    ///< both files openned and writing
+        kSM_BadFolder       = 0x101, ///< the folder specified for Nightly logging does not exist or has bad permissions
+        kSM_RunWriteError   = 0x103, ///< Denotes that an error occured while writing a run file (text or fits).
+        kSM_DailyWriteError = 0x103, ///< Denots that an error occured while writing a daily file (text or fits).
+    } localstates_t;
+    
+    DataLogger(ostream &out);
+    ~DataLogger(); 
+
+    int EvalOptions(Configuration& conf);
+
+private:
+    /************************************************
+     * MEMBER VARIABLES
+     ************************************************/
+    /// ofstream for the NightlyLogfile
+    ofstream fNightlyLogFile;
+    /// Log stream to fNightlyLogFile
+    MessageImp fNightlyLogImp;
+    /// ofstream for the Nightly report file
+    ofstream fNightlyReportFile;
+    /// base path of files
+    string fFilePath;
+    ///run numbers
+    list<RunNumberType> fRunNumber;
+    ///old run numbers time-out delay (in seconds)
+    uint32_t fRunNumberTimeout;
+    ///previous run number. to check if changed while logging
+    int fPreviousRunNumber;
+    ///Current Service Quality
+    int fQuality;
+    ///Modified Julian Date
+    double fMjD;
+    ///for obtaining the name of the existing services
+//    ServiceList fServiceList;
+    typedef map<const string, map<string, SubscriptionType> > SubscriptionsListType;
+    ///All the services to which we have subscribed to, sorted by server name.
+    SubscriptionsListType fServiceSubscriptions;
+    ///full name of the nightly log file
+    string fFullNightlyLogFileName;
+    ///full name of the nightly report file
+    string fFullNightlyReportFileName;
+    ///variable to track when the statistic were last calculated
+//    Time fPreviousStatsUpdateTime;
+    Time fPreviousOldRunNumberCheck;
+    ///boolean to know whether we should close and reopen daily files or not
+    bool fDailyFileDayChangedAlready;
+
+    DimWriteStatistics fFilesStats;
+
+    ///map and mutex for storing services description
+    map<string, vector<Description> > fServiceDescriptionList;
+    mutex fMutex;
+    int HandleDescriptions(DimDescriptions* desc);
+    vector<Description> GetDescription(const string& server, const string& service);
+private:
+    /***************************************************
+     * DIM INFO HANDLER
+     ***************************************************/
+    //overloading of DIM's infoHandler function
+    int infoCallback(const EventImp& evt, unsigned int infoIndex);
+
+//    Time GetSunRise(const Time &time=Time());
+
+    /***************************************************
+     * TRANSITION FUNCTIONS
+     ***************************************************/
+    ///Reporting method for the services info received
+    void Report(const EventImp& evt, SubscriptionType& sub);
+
+    ///Configuration of the nightly file path
+    int ConfigureFilePath(const Event& evt);
+    ///print the current state of the dataLogger
+    int PrintState(const Event& evt);
+    ///checks whether or not the current info being treated is a run number
+    void CheckForRunNumber(const EventImp& evt, unsigned int index);
+    /// start transition
+    int Start();
+    ///from waiting to logging transition
+    //int StartRun();
+    // from logging to waiting transition
+    int StopRunLogging();
+    ///stop and reset transition
+    int GoToReady();
+    ///from NightlyOpen to waiting transition
+    int NightlyToWaitRun();
+    ///from wait for run number to nightly open
+    int BackToNightlyOpen();
+#ifdef HAVE_FITS
+    ///Open fits files
+    void OpenFITSFiles(SubscriptionType& sub);
+    ///Write data to FITS files
+    void WriteToFITS(SubscriptionType& sub, const void* data);
+    ///Allocate the buffers required for fits
+    void AllocateFITSBuffers(SubscriptionType& sub);
+#endif//has_fits
+
+    /***************************************
+     * DIM SERVICES PROVIDED BY THE DATA LOGGER
+     ***************************************/
+    ///monitoring notification loop
+    void ServicesMonitoring();
+    inline void NotifyOpenedFile(const string &name, int type, DimDescribedService* service);
+    ///Service for opened files
+    DimDescribedService* fOpenedNightlyFiles;
+    DimDescribedService* fOpenedRunFiles;
+    DimDescribedService* fNumSubAndFits;
+    NumSubAndFitsType fNumSubAndFitsData;
+
+    ///Service for broadcasting subscription status
+    DimDescribedService* fCurrentSubscription;
+    ///Number of seconds since the last update of the subscribed list
+    int fCurrentSubscriptionUpdateRate;
+    ///The last time in seconds of the day when the service was update
+    Time fLastSubscriptionUpdate;
+    ///update the service
+    void updateSubscriptionList();
+    ///set the duration between two updates. a zero or negative value disables the service updates
+    int setSubscriptionListUpdateTimeLapse(const Event& evt);
+    /***************************************************
+     * DATA LOGGER's CONFIGURATION STUFF
+     ***************************************************/
+    ///black/white listing
+    set<string> fBlackList;
+    set<string> fWhiteList;
+    ///list of services to be grouped
+    set<string> fGrouping;
+    ///configuration flags
+    bool fDebugIsOn;
+    bool fOpenedFilesIsOn;
+    bool fNumSubAndFitsIsOn;
+    //functions for controlling the services behavior
+    int SetDebugOnOff(const Event& evt);
+    int SetStatsPeriod(const Event& evt);
+    int SetOpenedFilesOnOff(const Event& evt);
+    int SetNumSubsAndFitsOnOff(const Event& evt);
+    int SetRunTimeoutDelay(const Event& evt);
+
+    ///boolean to prevent DIM update while desctructing the dataLogger
+    bool fDestructing;    
+    /***************************************************
+     * UTILITIES
+     ***************************************************/
+    ///vectors to keep track of opened Fits files, for grouping purposes.
+    map<string, vector<string> > fOpenedNightlyFits;
+    ///creates a group fits file based on a list of files to be grouped
+    void CreateFitsGrouping(map<string, vector<string> >& filesToGroup);
+
+    bool OpenStreamImp(ofstream &stream, const string &filename, bool mightbeopen);
+    bool OpenStream(shared_ptr<ofstream> stream, const string &filename);
+    ///Open the relevant text files related to a particular run
+    int OpenRunFile(RunNumberType& run);
+    ///add a new run number
+    void AddNewRunNumber(int64_t newRun, Time time);
+    std::vector<int64_t> previousRunNumbers;
+    ///removes the oldest run number, and close the relevant files.
+    void RemoveOldestRunNumber();
+    ///retrieves the size of a file
+    off_t GetFileSize(const string&);
+    ///Get the digits of year, month and day for filenames and paths
+    void GetYearMonthDayForFiles(unsigned short& year, unsigned short& month, unsigned short& day);
+    ///Appends the relevant year month day to a given path
+    void AppendYearMonthDaytoPath(string& path);
+    ///Form the files path
+    string CompileFileNameWithPath(const string &path, const string &service, const string & extension);
+    ///Form the file names only
+    string CompileFileName(const string& service, const string& extension, const Time& time=Time()) const;
+    ///Check whether service is in black and/or white list
+    bool ShouldSubscribe(const string& server, const string& service);
+    ///Subscribe to a given server and service
+//    EventImp& SubscribeTo(const string& server, const string& service);
+    ///Open a text file and checks for ofstream status
+    bool OpenTextFile(ofstream& stream, const string& name);
+    ///Checks if the input osftream is in error state, and if so close it.
+    bool CheckForOfstreamError(ofstream& out, bool isDailyStream);
+    ///Goes to Write error states
+    void GoToRunWriteErrorState();
+    void GoToNightlyWriteErrorState();
+    ///Checks if a given path exist
+    bool DoesPathExist(string path);
+    ///Check if old run numbers can be trimmed, and if so, do it
+    void TrimOldRunNumbers();
+    ///Create a given directory
+    bool CreateDirectory(const string &path);
+    /***************************************************
+    * INHERITED FROM DimServiceInfoList
+    ***************************************************/
+    ///Add a new server subscription
+    void AddServer(const string& server);
+    ///Add a new service subscription
+    void AddService(const Service& svc);
+    ///Remove a given service subscription
+    //FIXME unused
+    void RemoveService(const string, const string, bool);
+    ///Remove all the services associated with a given server
+    //FIXME unused
+    void RemoveAllServices(const string&);
+    ///pointer to the dim's subscription that should distribute the run numbers.
+    //DIM_REPLACE
+    //DimInfo* fRunNumberService;
+    unsigned int fRunNumberService;
+    /***************************************************
+     * Overwritten from MessageImp
+    ***************************************************/
+    vector<string> backLogBuffer;
+    bool shouldBackLog;
+    bool fShouldAutoStart;
+    bool fAutoStarted;
+
+    //Current day variable. Used to close nightly files when night changes
+    Time fCurrentDay;
+    Time lastFlush;
+
+    DimDnsServiceList fDimList;
+    vector<DimDescriptions*> fServerDescriptionsList;
+
+    //counter for keeping tracker of services
+    unsigned int servicesCounter;
+public:
+    int Write(const Time &time, const std::string &txt, int qos=kMessage);
+
+}; //DataLogger
+
+
+/**
+ * @brief the two methods below were copied from StateMachineDimControl.cc
+ *
+ */
+int DataLogger::HandleDescriptions(DimDescriptions* desc)
+{
+    fMutex.lock();
+    for (auto it=desc->descriptions.begin(); it != desc->descriptions.end(); it++) {
+        if (fDebugIsOn)
+        {
+            Debug("Adding description for service: " + it->front().name);
+        }
+        fServiceDescriptionList[it->front().name].assign(it->begin(), it->end());
+    }
+    fMutex.unlock();
+
+    return GetCurrentState();
+}
+/**
+ *  UPDATE SUBSCRIPTION LIST. Updates the subscription list service if enough time has passed.
+ *                            Otherwise does nothing
+ */
+void DataLogger::updateSubscriptionList()
+{
+    if (fCurrentSubscriptionUpdateRate <= 0) return;
+    Time timeNow;
+    //if less than the update rate time has passed, just return
+    if (timeNow - fLastSubscriptionUpdate < boost::posix_time::seconds(fCurrentSubscriptionUpdateRate))
+        return;
+    //TODO remove me !
+//    cout << "Updating subscription list with: " << endl;
+
+    fLastSubscriptionUpdate = timeNow;
+
+    //update service !
+    ostringstream output;
+    for (auto serverIt=fServiceSubscriptions.begin();serverIt!=fServiceSubscriptions.end(); serverIt++)
+    {
+        if (serverIt->first == "DATA_LOGGER")
+            continue;
+        for (auto serviceIt=serverIt->second.begin(); serviceIt!=serverIt->second.end(); serviceIt++)
+        {
+            output << serverIt->first << "/" << serviceIt->first << ",";
+            if (serviceIt->second.lastReceivedEvent != Time::None)
+                output << (timeNow - serviceIt->second.lastReceivedEvent).total_seconds();
+            else
+                output << "-1";
+            output << "\n";
+        }
+    }
+//TODO remove me !
+//cout << output.str();
+    fCurrentSubscription->setData(output.str().c_str(), output.str().size()+1);
+    fCurrentSubscription->setQuality(0);
+    fCurrentSubscription->Update();
+}
+int DataLogger::setSubscriptionListUpdateTimeLapse(const Event& evt)
+{
+    fCurrentSubscriptionUpdateRate = evt.GetInt();
+
+    return GetCurrentState();
+}
+vector<Description> DataLogger::GetDescription(const string& server, const string& service)
+{
+    const lock_guard<mutex> guard(fMutex);
+    const auto it = fServiceDescriptionList.find(server+"/"+service);
+    return it==fServiceDescriptionList.end()?vector<Description>():it->second;
+}
+// --------------------------------------------------------------------------
+//
+//! Overwritten write function. This way we directly log the datalogger's messages, without going through dim's dns,
+//! thus increasing robustness.
+//! @param time: see MessageImp class param
+//! @param txt: see MessageImp class param
+//! @param qos: see MessageImp class param
+//! @return see MessageImp class param
+//
+int DataLogger::Write(const Time&time, const std::string& txt, int qos)
+{
+    ostringstream ss;
+    ss << "datalogger: " << txt;
+    if (fNightlyLogFile.is_open())
+    {
+        fNightlyLogImp.Write(time, ss.str(), qos);
+    }
+    else if (shouldBackLog)
+    {
+             ostringstream str;
+             MessageImp mimp(str);
+             mimp.Write(time, ss.str(), qos);
+             backLogBuffer.push_back(str.str());
+         }
+    return StateMachineDim::Write(time, ss.str(), qos);
+}
+// --------------------------------------------------------------------------
+//
+//! Check if a given path exists
+//! @param path the path to be checked
+//! @return whether or not the creation has been successfull
+//
+bool DataLogger::CreateDirectory(const string &path)
+{
+    try
+    {
+        boost::filesystem::create_directories(path);
+        return true;
+    }
+    catch (const runtime_error &e)
+    {
+        Error(e.what());
+        return false;
+    }
+}
+// --------------------------------------------------------------------------
+//
+//! Check if a given path exists
+//! @param path the path to be checked
+//! @return whether or not the given path exists
+//
+bool DataLogger::DoesPathExist(string path)
+{
+    return DimWriteStatistics::DoesPathExist(path, *this);
+}
+
+void DataLogger::AddServer(const string& server)
+{
+    Info("Got request to add server " + server );
+    if (server != "DIS_DNS")
+    {
+        for (auto it=fServerDescriptionsList.begin(); it != fServerDescriptionsList.end(); it++)
+            if ((*it)->server == server)
+            {
+                if (fDebugIsOn)
+                {
+                    ostringstream str;
+                    str << "Already got description for server " << server << ". Ignoring." << endl;
+                    Debug(str.str());
+                    return;
+                }
+            }
+        DimDescriptions* d = new DimDescriptions(server);
+        d->SetCallbackDescriptions(bind(&DataLogger::HandleDescriptions, this, d));
+        d->Subscribe(*this);
+        fServerDescriptionsList.push_back(d);
+    }
+
+}
+
+// --------------------------------------------------------------------------
+//
+//! Add a new service subscription
+//! @param server the server for which the subscription should be created
+//! @param service the service for which the subscription should be created
+//! @param isCmd whether this is a Dim Command or not. Commands are not logged
+//
+void DataLogger::AddService(const Service& svc)
+{
+    const string& serverr = svc.server;
+    //FIX in order to get rid of the '+' that sometimes makes it all the way to me
+    string server = serverr;
+    if (server.size() > 0 && server[0] == '+')
+    {
+        server = server.substr(1);
+        Warn("Got a service beginning with +. This is not supposed to happen");
+    }
+//    server = server.substr(1);
+
+    const string& service = svc.service;
+    const bool isCmd = svc.iscmd;
+
+   //dataLogger does not subscribe to commands
+    if (isCmd)
+        return;
+
+    Info("Got request to add service: "+server+"/"+service);
+
+    //check the given subscription against black and white lists
+    if (!ShouldSubscribe(server, service))
+        return;
+
+    map<string, SubscriptionType> &list = fServiceSubscriptions[server];
+
+    if (list.find(service) != list.end())
+    {
+        if (list[service].format != svc.format)
+        {
+            if (list[service].nightlyFile.IsOpen())
+            {
+                string fileName = list[service].nightlyFile.GetName();
+                if (fileName == "")
+                {
+                    Error("Something went wrong while dealing with new format of "+server+"/"+service+" file tagged as open but filename is empty. Aborting");
+                    return;
+                }
+                list[service].nightlyFile.Close();
+                list[service].increment++;
+                Warn("Format of "+server+"/"+service+" has changed. Closing "+fileName);
+/*                string fileNameWithoutFits = fileName.substr(0, fileName.size()-4);
+                int counter=0;
+                while (counter < 100)
+                {
+                    ostringstream newFileName;
+                    newFileName << fileNameWithoutFits << counter << ".fits";
+                    ifstream testStream(newFileName.str());
+                    if (!testStream) //fileName available
+                    {
+                        rename(fileName.c_str(), newFileName.str().c_str());
+                        break;
+                    }
+                    counter++;
+                }
+                if (counter==100)
+                    Error("Could not rename "+fileName+" after 100 trials (because of format change). Aborting");
+*/
+                //reallocate the fits buffer...
+                list[service].fitsBufferAllocated = false;
+            }
+            list[service].fConv = shared_ptr<Converter>(new Converter(Out(), svc.format));
+            list[service].format = svc.format;
+        }
+        if (fDebugIsOn)
+            Debug("Service " + server + "/" + service + " is already in the dataLogger's list... ignoring update.");
+        return;
+    }
+    //DIM_REPLACE
+//    list[service].dimInfo.reset(SubscribeTo(server, service));
+    if (fDebugIsOn)
+        Debug("Subscribing to service "+server+"/"+service);
+    Subscribe(server + "/" + service)
+        (bind(&DataLogger::infoCallback, this, placeholders::_1, servicesCounter));
+    list[service].server  = server;
+    list[service].service = service;
+    list[service].format = svc.format;
+    list[service].index = servicesCounter;
+    fNumSubAndFitsData.numSubscriptions++;
+    //check if this is the run numbers service
+    if ((server == "FAD_CONTROL") && (service == "START_RUN"))
+        fRunNumberService = servicesCounter;
+    servicesCounter++;
+    Info("Added subscription to " + server + "/" + service);
+}
+// --------------------------------------------------------------------------
+//
+//! Remove a given service subscription
+//! @param server the server for which the subscription should be removed
+//! @param service the service that should be removed
+//! @param isCmd whether or not this is a command
+//
+void DataLogger::RemoveService(string server, string service, bool isCmd)
+{
+
+    Info("Got request to remove service: "+server+"/"+service);
+    if (fDestructing)//this function is called by the super class, after the destructor has deleted its own subscriptions
+        return;
+//FIXME unused
+    return;
+
+    if (isCmd)
+        return;
+
+    if (fServiceSubscriptions.find(server) == fServiceSubscriptions.end())
+    {
+        Error("Request to remove service "+service+" from server "+server+", but service not found.");
+        return;
+    }
+
+    if (fServiceSubscriptions[server].erase(service) != 1)
+    {
+        //check the given subscription against black and white lists
+        if (!ShouldSubscribe(server, service))
+            return;
+
+        Error("Subscription "+server+"/"+service+" could not be removed as it is not present");
+        return;
+    }
+    fNumSubAndFitsData.numSubscriptions--;
+
+    if ((server == "FAD_CONTROL") && (service == "START_RUN"))
+        fRunNumberService = 0;
+
+    Info("Removed subscription to " + server + "/" + service);
+}
+// --------------------------------------------------------------------------
+//
+//! Remove all the services associated with a given server
+//! @param server the server for which all the services should be removed
+//
+void DataLogger::RemoveAllServices(const string& server)
+{
+    Info("Got request for removing all services from: "+server);
+    if (fServiceSubscriptions.find(server)==fServiceSubscriptions.end())
+    {
+        Warn("Request to remove all services, but corresponding server " + server + " not found.");
+        return;
+    }
+//FIXME unused
+    return;
+    fNumSubAndFitsData.numSubscriptions -= fServiceSubscriptions[server].size();
+
+    fServiceSubscriptions[server].clear();
+    fServiceSubscriptions.erase(server);
+
+    if (server == "FAD_CONTROL")
+        fRunNumberService = 0;
+
+    if (fDebugIsOn)
+        Debug("Removed all subscriptions to " + server + "/");
+}
+
+// --------------------------------------------------------------------------
+//
+//! Checks if the given ofstream is in error state and if so, close it
+//! @param out the ofstream that should be checked
+//
+bool DataLogger::CheckForOfstreamError(ofstream& out, bool isDailyStream)
+{
+    if (out.good())
+        return true;
+
+    Error("An error occured while writing to a text file. Closing it");
+    if (out.is_open())
+        out.close();
+    if (isDailyStream)
+        GoToNightlyWriteErrorState();
+    else
+        GoToRunWriteErrorState();
+
+    return false;
+}
+
+bool DataLogger::OpenStreamImp(ofstream &stream, const string &filename, bool mightbeopen)
+{
+    if (stream.is_open())
+    {
+        if (!mightbeopen)
+            Error(filename+" was already open when trying to open it.");
+        return mightbeopen;
+    }
+
+    errno = 0;
+    stream.open(filename.c_str(), ios_base::out | ios_base::app);
+    if (!stream /*|| errno!=0*/)
+    {
+        ostringstream str;
+        str << "ofstream::open() failed for '" << filename << "': " << strerror(errno) << " [errno=" << errno << "]";
+        Error(str);
+        return false;
+    }
+
+    if (!stream.is_open())
+    {
+        Error("File "+filename+" not open as it ought to be.");
+        return false;
+    }
+
+    Info("Opened: "+filename);
+
+    return true;
+}
+
+bool DataLogger::OpenStream(shared_ptr<ofstream> stream, const string &filename)
+{
+    return OpenStreamImp(*stream, filename, false);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Open a text file and checks for error code
+//! @param stream the ofstream for which the file should be opened
+//! @name the file name
+//
+bool DataLogger::OpenTextFile(ofstream& stream, const string& name)
+{
+    return OpenStreamImp(stream, name, true);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Create a new dim subscription to a given server and service
+//! @param server the server name
+//! @param service the service name
+//
+/*EventImp& DataLogger::SubscribeTo(const string& server, const string& service)
+{
+
+    //DIM_REPLACE
+    //return new DimStampedInfo((server + "/" + service).c_str(), (void*)NULL, 0, this);
+    EventImp& newSubscription = Subscribe(server + "/" + service);
+    newSubscription.bind(&infoHandler, this, placeholders::_1);
+    return newSubscription;
+}*/
+// --------------------------------------------------------------------------
+//
+//! Check whether a service should be subscribed to, based on the black/white list entries
+//! @param server the server name associated with the service being checked
+//! @param service the service name associated with the service being checked
+//
+bool DataLogger::ShouldSubscribe(const string& server, const string& service)
+{
+    if ((fBlackList.find(server + "/") != fBlackList.end()) ||
+         (fBlackList.find(server + "/" + service) != fBlackList.end()) ||
+         (fBlackList.find("/" + service) != fBlackList.end()))
+		 {
+		     if (fWhiteList.size()>0 &&
+        		(fWhiteList.find(server + "/" + service) != fWhiteList.end()))
+				{
+					if (fDebugIsOn)
+						Debug("White list saved service " + server + "/" + service + " from blacklisting");
+        			return true;
+				}
+			if (fDebugIsOn)
+				Debug("Blacklist banned service " + server + "/" + service);
+		 	return false;
+		}
+    return true;
+}
+// --------------------------------------------------------------------------
+//
+//! Compiles a file name
+//! @param path the base path where to put the file
+//! @param time the time at which the file is created
+//! @param service the service name, if any
+//! @param extension the extension to add, if any
+//
+string DataLogger::CompileFileName(const string& service, const string& extension, const Time& time) const
+{
+    ostringstream str;
+
+    const Time ftime(time);//removed this as already done by nightAsInt: -boost::posix_time::hours(12));
+    str << ftime.NightAsInt();
+
+    if (!service.empty())
+        str << '.' << service;
+
+    if (!extension.empty())
+        str << "." << extension;
+
+    return str.str();
+}
+
+string DataLogger::CompileFileNameWithPath(const string& path, const string& service, const string& extension)
+{
+    ostringstream str;
+
+    const Time time;
+
+    //calculate time suitable for naming files.
+    //fCurrentDay is 30 minutes after upcoming sunrise. So just use 12 hours before then
+    const Time ftime = fCurrentDay-boost::posix_time::hours(12);
+
+    //output it
+    str << path << ftime.GetAsStr("/%Y/%m/%d");
+
+    //check if target directory exist
+    if (!DoesPathExist(str.str()))
+        CreateDirectory(str.str());
+
+    str << '/' << CompileFileName(service, extension, ftime);//fCurrentDay);
+
+    return str.str();
+
+
+}
+
+// --------------------------------------------------------------------------
+//
+//!retrieves the size on disk of a file
+//! @param fileName the full file name for which the size on disk should be retrieved
+//! @return the size of the file on disk, in bytes. 0 if the file does not exist or if an error occured
+//
+off_t DataLogger::GetFileSize(const string& fileName)
+{
+    return DimWriteStatistics::GetFileSizeOnDisk(fileName, *this);
+}
+
+// --------------------------------------------------------------------------
+//
+//! Removes the oldest run number and closes the fits files that should be closed
+//! Also creates the fits grouping file
+//
+void DataLogger::RemoveOldestRunNumber()
+{
+    if (fDebugIsOn)
+    {
+        ostringstream str;
+        str << "Removing run number " << fRunNumber.front().runNumber;
+        Debug(str);
+    }
+    //remove the entry
+    fRunNumber.pop_front();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Default constructor. The name of the machine is given DATA_LOGGER
+//! and the state is set to kSM_Ready at the end of the function.
+//
+//!Setup the allows states, configs and transitions for the data logger
+//
+DataLogger::DataLogger(ostream &out) : StateMachineDim(out, "DATA_LOGGER"),
+fNightlyLogImp(fNightlyLogFile), fFilesStats("DATA_LOGGER", *this)
+{
+    shouldBackLog = true;
+
+    servicesCounter=1;
+
+    //initialize member data
+    fFilePath = ".";
+
+    fDimList.Subscribe(*this);
+    fDimList.SetCallbackServerAdd(bind(&DataLogger::AddServer, this, placeholders::_1));
+    fDimList.SetCallbackServiceAdd(bind(&DataLogger::AddService, this, placeholders::_1));
+
+    //calculate time "centered" around noon instead of midnight
+    const Time timeNow;
+//    const Time nowMinusTwelve = timeNow-boost::posix_time::hours(12);
+    //the "current day" is actually the next closing time of nightly files
+    //the next closing time is 30 minutes after upcoming sunrise.
+    //If we are within 30 minutes after sunrise, closing time is soon
+    fCurrentDay = Time().GetNextSunRise();//GetSunRise(Time()-boost::posix_time::minutes(30)) + boost::posix_time::minutes(30);//(int)(nowMinusTwelve.Mjd());//nowMinusTwelve.M()*31 + nowMinusTwelve.D();//assume 31 days per month. we do not really care, only want unique number per day of the year
+    lastFlush = Time();
+
+    //Give a name to this machine's specific states
+    AddStateName(kSM_NightlyOpen,      "NightlyFileOpen",  "The summary files for the night are open.");
+    AddStateName(kSM_WaitingRun,       "WaitForRun",       "The summary files for the night are open and we wait for a run to be started.");
+    AddStateName(kSM_Logging,          "Logging",          "The summary files for the night and the files for a single run are open.");
+    AddStateName(kSM_BadFolder,        "ErrInvalidFolder", "The folder for the files is not invalid.");
+    AddStateName(kSM_DailyWriteError,  "ErrDailyWrite",    "An error occured while writing to a daily (and run) file.");
+    AddStateName(kSM_RunWriteError,    "ErrRunWrite",      "An error occured while writing to a run file.");
+
+    // Add the possible transitions for this machine
+    AddEvent("START", kSM_Ready, kSM_BadFolder)
+        (bind(&DataLogger::Start, this))
+        ("Start the nightly logging. Nightly file location must be specified already");
+
+    AddEvent("STOP", kSM_NightlyOpen, kSM_WaitingRun, kSM_Logging, kSM_DailyWriteError, kSM_RunWriteError)
+        (bind(&DataLogger::GoToReady, this))
+        ("Stop all data logging, close all files.");
+
+    AddEvent("RESET", kSM_Error, kSM_BadFolder, kSM_DailyWriteError, kSM_RunWriteError)
+        (bind(&DataLogger::GoToReady, this))
+        ("Transition to exit error states. Closes the any open file.");
+
+    AddEvent("START_RUN_LOGGING", /*kSM_Logging,*/ kSM_NightlyOpen, kSM_Ready)
+        (bind(&DataLogger::NightlyToWaitRun, this))
+        ("Go to waiting for run number state. In this state with any received run-number a new file is opened.");
+
+    AddEvent("STOP_RUN_LOGGING", kSM_WaitingRun, kSM_Logging)
+        (bind(&DataLogger::BackToNightlyOpen, this))
+        ("Go from the wait for run to nightly open state.");
+
+     // Provide a print command
+     AddEvent("PRINT_INFO")
+            (bind(&DataLogger::PrintState, this, placeholders::_1))
+            ("Print information about the internal status of the data logger.");
+
+
+     OpenFileToDim fToDim;
+     fToDim.code = 0;
+     fToDim.fileName[0] = '\0';
+
+     fOpenedNightlyFiles = new DimDescribedService(GetName() + "/FILENAME_NIGHTLY", "I:1;C", fToDim,
+                               "Path and base name used for the nightly files."
+                               "|Type[int]:type of open files (1=log, 2=rep, 4=fits)"
+                               "|Name[string]:path and base file name");
+
+     fOpenedRunFiles = new DimDescribedService(GetName() + "/FILENAME_RUN", "I:1;C", fToDim,
+                               "Path and base name used for the run files."
+                               "|Type[int]:type of open files (1=log, 2=rep, 4=fits)"
+                               "|Name[string]:path and base file name");
+
+     fNumSubAndFitsData.numSubscriptions = 0;
+     fNumSubAndFitsData.numOpenFits = 0;
+     fNumSubAndFits = new DimDescribedService(GetName() + "/NUM_SUBS", "I:2", fNumSubAndFitsData,
+                               "Num. open files + num. subscribed services"
+                               "|NSubAndOpenFiles[int]:Num. of subs and open files");
+
+     //services parameters
+     fDebugIsOn         = false;
+     fOpenedFilesIsOn   = true;
+     fNumSubAndFitsIsOn = true;
+
+     string emptyString="";
+     //Subscription list service
+     fCurrentSubscription = new DimDescribedService(GetName() + "/SUBSCRIPTIONS", "C", emptyString.c_str(),
+                                     "List of all the services subscribed by datalogger, except the ones provided by itself."
+                                     "|Liste[string]:list of logged services and the delay in seconds since last update");
+     fCurrentSubscriptionUpdateRate = 60; //by default, 1 minute between each update
+     fLastSubscriptionUpdate = timeNow;
+
+     // provide services control commands
+     AddEvent("SET_DEBUG_MODE", "B:1", kSM_NightlyOpen, kSM_Logging, kSM_WaitingRun, kSM_Ready)
+         (bind(&DataLogger::SetDebugOnOff, this, placeholders::_1))
+         ("Switch debug mode on or off. Debug mode prints information about every service written to a file."
+          "|Enable[bool]:Enable of disable debug mode (yes/no).");
+
+     AddEvent("SET_STATISTICS_UPDATE_INTERVAL", "S:1", kSM_NightlyOpen, kSM_Logging, kSM_WaitingRun, kSM_Ready)
+         (bind(&DataLogger::SetStatsPeriod, this, placeholders::_1))
+         ("Interval in which the data-logger statistics service (STATS) is updated."
+          "|Interval[ms]:Value in milliseconds (<=0: no update).");
+
+     AddEvent("ENABLE_FILENAME_SERVICES", "B:1", kSM_NightlyOpen, kSM_Logging, kSM_WaitingRun, kSM_Ready)
+         (bind(&DataLogger::SetOpenedFilesOnOff ,this, placeholders::_1))
+         ("Switch service which distributes information about the open files on or off."
+          "|Enable[bool]:Enable of disable filename services (yes/no).");
+
+     AddEvent("ENABLE_NUMSUBS_SERVICE", "B:1", kSM_NightlyOpen, kSM_Logging, kSM_WaitingRun, kSM_Ready)
+         (bind(&DataLogger::SetNumSubsAndFitsOnOff, this, placeholders::_1))
+         ("Switch the service which distributes information about the number of subscriptions and open files on or off."
+          "|Enable[bool]:Enable of disable NUM_SUBS service (yes/no).");
+
+     AddEvent("SET_RUN_TIMEOUT", "L:1", kSM_Ready, kSM_NightlyOpen, kSM_Logging, kSM_WaitingRun)
+         (bind(&DataLogger::SetRunTimeoutDelay, this, placeholders::_1))
+         ("Set the timeout delay for old run numbers."
+          "|timeout[min]:Time out in minutes after which files for expired runs are closed.");
+     //Provide access to the duration between two updates of the service list
+     AddEvent("SET_SERVICE_LIST_UPDATE_INTERVAL", "I:1", kSM_Ready, kSM_NightlyOpen, kSM_Logging, kSM_WaitingRun)
+         (bind(&DataLogger::setSubscriptionListUpdateTimeLapse, this, placeholders::_1))
+         ("Set the min interval between two services-list updates."
+          "|duration[sec]:The interval between two updates, in seconds.");
+
+     fDestructing = false;
+
+     fPreviousOldRunNumberCheck = Time().Mjd();
+
+     fDailyFileDayChangedAlready = true;
+     fRunNumberTimeout = 60000; //default run-timeout set to 1 minute
+     fRunNumber.push_back(RunNumberType());
+     fRunNumber.back().runNumber = -1;
+     fRunNumber.back().time = Time();
+     NotifyOpenedFile("", 0, fOpenedNightlyFiles);
+     NotifyOpenedFile("", 0, fOpenedRunFiles);
+
+     fRunNumberService = 0;
+
+     fShouldAutoStart = false;
+     fAutoStarted = false;
+
+
+     if(fDebugIsOn)
+     {
+         Debug("DataLogger Init Done.");
+     }
+}
+
+// --------------------------------------------------------------------------
+//
+//! Destructor
+//
+DataLogger::~DataLogger()
+{
+    if (fDebugIsOn)
+        Debug("DataLogger destruction starts");    
+
+    //this boolean should not be required anymore
+    fDestructing = true;
+
+    //now clear the services subscriptions
+    dim_lock();
+    fServiceSubscriptions.clear();
+    dim_unlock();
+
+    //clear any remaining run number (should remain only one)
+    while (fRunNumber.size() > 0)
+    {
+         RemoveOldestRunNumber();
+    }
+    //go to the ready state. i.e. close all files, run-wise first
+    GoToReady();
+
+    Info("Will soon close the daily log file");
+
+    delete fOpenedNightlyFiles;
+    delete fOpenedRunFiles;
+    delete fNumSubAndFits;
+    delete fCurrentSubscription;
+
+    if (fNightlyLogFile.is_open())//this file is the only one that has not been closed by GoToReady
+    {
+        fNightlyLogFile << endl;
+        fNightlyLogFile.close();
+    }
+    if (!fNightlyLogFile.is_open())
+        Info("Daily log file was closed indeed");
+    else
+        Warn("Seems like there was a problem while closing the daily log file.");
+    for (auto it=fServerDescriptionsList.begin(); it!= fServerDescriptionsList.end(); it++)
+        delete *it;
+
+    if (fDebugIsOn)
+        Debug("DataLogger desctruction ends");    
+}
+
+// --------------------------------------------------------------------------
+//
+//! checks if old run numbers should be trimmed and if so, do it
+//
+void DataLogger::TrimOldRunNumbers()
+{
+    const Time cTime = Time();
+
+    if (cTime - fPreviousOldRunNumberCheck < boost::posix_time::milliseconds(fRunNumberTimeout))
+        return;
+
+    while (fRunNumber.size() > 1 && (cTime - fRunNumber.back().time) > boost::posix_time::milliseconds(fRunNumberTimeout))
+    {
+         RemoveOldestRunNumber();
+    }
+    fPreviousOldRunNumberCheck = cTime;
+}
+// --------------------------------------------------------------------------
+//
+//! Inherited from DimInfo. Handles all the Infos to which we subscribed, and log them
+//
+int DataLogger::infoCallback(const EventImp& evt, unsigned int subIndex)
+{
+//    if (fDebugIsOn)
+//    {
+//        ostringstream str;
+//        str << "Got infoCallback called with service index= " << subIndex;
+//        Debug(str.str());
+//    }
+
+    if ((GetCurrentState() == kSM_Ready) &&  (!fAutoStarted) && fShouldAutoStart)
+    {
+        fAutoStarted = true;
+        SetCurrentState(Start(), "infoCallback");
+//        SetCurrentState(NightlyToWaitRun());
+    }
+    else
+    {
+        if (GetCurrentState() > kSM_Ready)
+            fAutoStarted = true;
+    }
+
+
+    //check if the service pointer corresponds to something that we subscribed to
+    //this is a fix for a bug that provides bad Infos when a server starts
+    bool found = false;
+    SubscriptionsListType::iterator x;
+    map<string, SubscriptionType>::iterator y;
+    for (x=fServiceSubscriptions.begin(); x != fServiceSubscriptions.end(); x++)
+    {//find current service is subscriptions
+     //Edit: this should be useless now... remove it sometimes ?
+        for (y=x->second.begin(); y!=x->second.end();y++)
+            if (y->second.index == subIndex)
+            {
+                found = true;    
+                break;
+            }
+        if (found)
+            break;
+    }
+
+    if (!found && fDebugIsOn)
+    {
+        ostringstream str;
+        str << "Service " << evt.GetName() << " not found in subscriptions" << endl;
+        Debug(str.str());
+    }
+    if (!found)
+        return GetCurrentState();
+
+
+    if (evt.GetSize() == 0 && fDebugIsOn)
+    {
+        ostringstream str;
+        str << "Got 0 size for " << evt.GetName() << endl;
+        Debug(str.str());
+    }
+    if (evt.GetSize() == 0)
+        return GetCurrentState();
+
+    if (evt.GetFormat() == "" && fDebugIsOn)
+    {
+        ostringstream str;
+        str << "Got no format for " << evt.GetName() << endl;
+        Debug(str.str());
+    }
+    if (evt.GetFormat() == "")
+        return GetCurrentState();
+
+//    cout.precision(20);
+//    cout << "Orig timestamp: " << Time(I->getTimestamp(), I->getTimestampMillisecs()*1000).Mjd() << endl;
+    // FIXME: Here we have to check if we have received the
+    //        service with the run-number.
+    //        CheckForRunNumber(I); has been removed because we have to
+    //        subscribe to this service anyway and hence we have the pointer
+    //        (no need to check for the name)
+    CheckForRunNumber(evt, subIndex);
+
+    Report(evt, y->second);
+
+    //remove old run numbers
+    TrimOldRunNumbers();
+
+    return GetCurrentState();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Add a new active run number
+//! @param newRun the new run number
+//! @param time the time at which the new run number was issued
+//
+void DataLogger::AddNewRunNumber(int64_t newRun, Time time)
+{
+
+    if (newRun > 0xffffffff)
+    {
+        Error("New run number too large, out of range. Ignoring.");
+        return;
+    }
+    for (std::vector<int64_t>::const_iterator it=previousRunNumbers.begin(); it != previousRunNumbers.end(); it++)
+    {
+        if (*it == newRun)
+        {
+            Error("Newly provided run number has already been used (or is still in use). Going to error state");
+            SetCurrentState(kSM_BadFolder, "AddNewRunNumber");
+            return;
+        }
+    }
+    if (fDebugIsOn)
+    {
+        ostringstream str;
+        str << "Adding new run number " << newRun << " issued at " << time;
+        Debug(str);
+    }
+    //Add new run number to run number list
+    fRunNumber.push_back(RunNumberType());
+    fRunNumber.back().runNumber = int32_t(newRun);
+    fRunNumber.back().time = time;
+
+    if (fDebugIsOn)
+    {
+        ostringstream str;
+        str << "The new run number is: " << fRunNumber.back().runNumber;
+        Debug(str);
+    }
+    if (GetCurrentState() != kSM_Logging && GetCurrentState() != kSM_WaitingRun )
+        return;
+
+    if (newRun > 0 && GetCurrentState()  == kSM_WaitingRun)
+        SetCurrentState(kSM_Logging, "AddNewRunNumber");
+    if (newRun < 0 && GetCurrentState() == kSM_Logging)
+        SetCurrentState(kSM_WaitingRun, "AddNewRunNumber");
+}
+// --------------------------------------------------------------------------
+//
+//! Checks whether or not the current info is a run number.
+//! If so, then remember it. A run number is required to open the run-log file
+//! @param I
+//!        the current DimInfo
+//
+void DataLogger::CheckForRunNumber(const EventImp& evt, unsigned int index)
+{
+    if (index != fRunNumberService)
+        return;
+//    int64_t newRun = reinterpret_cast<const uint64_t*>(evt.GetData())[0];
+    AddNewRunNumber(evt.GetXtra(), evt.GetTime());
+}
+// --------------------------------------------------------------------------
+//
+//! Get SunRise. Copied from drivectrl.cc
+//! Used to know when to close and reopen files
+//!
+/*
+Time DataLogger::GetSunRise(const Time &time)
+{
+#ifdef HAVE_LIBNOVA
+    const double lon = -(17.+53./60+26.525/3600);
+    const double lat =   28.+45./60+42.462/3600;
+
+    ln_lnlat_posn observer;
+    observer.lng = lon;
+    observer.lat = lat;
+
+    // This caluclates the sun-rise of the next day after 12:00 noon
+    ln_rst_time sun_day;
+    if (ln_get_solar_rst(time.JD(), &observer, &sun_day)==1)
+    {
+        Fatal("GetSunRise reported the sun to be circumpolar!");
+        return Time(Time::none);
+    }
+
+    if (Time(sun_day.rise)>=time)
+        return Time(sun_day.rise);
+
+    if (ln_get_solar_rst(time.JD()+0.5, &observer, &sun_day)==1)
+    {
+        Fatal("GetSunRise reported the sun to be circumpolar!");
+        return Time(Time::none);
+    }
+
+    return Time(sun_day.rise);
+#else
+    return time;
+#endif
+}
+*/
+// --------------------------------------------------------------------------
+//
+//! write infos to log files.
+//! @param I
+//!     The current DimInfo 
+//! @param sub
+//!        The dataLogger's subscription corresponding to this DimInfo
+//
+void DataLogger::Report(const EventImp& evt, SubscriptionType& sub)
+{
+    const string fmt(evt.GetFormat());
+
+    const bool isItaReport = fmt!="C";
+
+    if (!fNightlyLogFile.is_open())
+        return;
+
+    if (fDebugIsOn && string(evt.GetName())!="DATA_LOGGER/MESSAGE")
+    {
+        ostringstream str;
+        str << "Logging " << evt.GetName() << " [" << evt.GetFormat() << "] (" << evt.GetSize() << ")";
+        Debug(str);
+    }
+
+    //
+    // Check whether we should close and reopen daily text files or not
+    // calculate time "centered" around noon instead of midnight
+    // if number of days has changed, then files should be closed and reopenned.
+    const Time timeNow;
+//    const Time nowMinusTwelve = timeNow-boost::posix_time::hours(12);
+//    int newDayNumber = (int)(nowMinusTwelve.Mjd());
+
+    //also check if we should flush the nightly files
+    if (lastFlush < timeNow-boost::posix_time::minutes(1))
+    {
+        lastFlush = timeNow;
+        SubscriptionsListType::iterator x;
+        map<string, SubscriptionType>::iterator y;
+        for (x=fServiceSubscriptions.begin(); x != fServiceSubscriptions.end(); x++)
+        {//find current service is subscriptions
+            for (y=x->second.begin(); y!=x->second.end();y++)
+                if (y->second.nightlyFile.IsOpen())
+                {
+                    y->second.nightlyFile.Flush();
+                }
+        }
+        if (fDebugIsOn)
+            Debug("Just flushed nightly fits files to the disk");
+    }
+    //check if we should close and reopen the nightly files
+    if (timeNow > fCurrentDay)//GetSunRise(fCurrentDay)+boost::posix_time::minutes(30)) //if we went past 30 minutes after sunrise
+    {
+        //set the next closing time. If we are here, we have passed 30 minutes after sunrise.
+        fCurrentDay = timeNow.GetNextSunRise();//GetSunRise(timeNow-boost::posix_time::minutes(30))+boost::posix_time::minutes(30);
+        //crawl through the subcriptions and close any open nightly file
+        SubscriptionsListType::iterator x;
+        map<string, SubscriptionType>::iterator y;
+        for (x=fServiceSubscriptions.begin(); x != fServiceSubscriptions.end(); x++)
+        {//find current service is subscriptions
+            for (y=x->second.begin(); y!=x->second.end();y++)
+            {
+                if (y->second.nightlyFile.IsOpen())
+                {
+                    y->second.nightlyFile.Close();
+                }
+                y->second.increment = 0;
+            }
+        }
+
+        if (fDebugIsOn)
+            Debug("Day have changed! Closing and reopening nightly files");
+
+        fNightlyLogFile << endl;
+        fNightlyLogFile.close();
+        fNightlyReportFile.close();
+
+        Info("Closed: "+fFullNightlyLogFileName);
+        Info("Closed: "+fFullNightlyReportFileName);
+
+        fFullNightlyLogFileName = CompileFileNameWithPath(fFilePath, "", "log");
+        if (!OpenTextFile(fNightlyLogFile, fFullNightlyLogFileName))
+        {
+            GoToReady();
+            SetCurrentState(kSM_BadFolder, "Report");
+            return;
+        }
+        fNightlyLogFile << endl;
+
+        fFullNightlyReportFileName = CompileFileNameWithPath(fFilePath, "", "rep");
+        if (!OpenTextFile(fNightlyReportFile, fFullNightlyReportFileName))
+        {
+            GoToReady();
+            SetCurrentState(kSM_BadFolder, "Report");
+            return;
+        }
+    }
+    //create the converter for that service
+    if (!sub.fConv)
+    {
+        sub.fConv = shared_ptr<Converter>(new Converter(Out(), evt.GetFormat()));
+        if (!sub.fConv->valid())
+        {
+            ostringstream str;
+            str << "Couldn't properly parse the format... service " << evt.GetName() << " ignored.";
+            Error(str);
+            return;    
+        }
+    }
+    //construct the header
+    ostringstream header;
+    const Time cTime(evt.GetTime());
+    fQuality = evt.GetQoS();
+
+    //update subscription last received time
+    sub.lastReceivedEvent = cTime;
+    //update subscription list service if required
+    updateSubscriptionList();
+
+    fMjD = cTime.Mjd() ? cTime.Mjd()-40587 : 0;
+
+    if (isItaReport)
+    {
+//DISABLED REPORT WRITING BY THOMAS REQUEST
+        //write text header
+/*        string serviceName = (sub.service == "MESSAGE") ? "" : "_"+sub.service;
+        header << sub.server << serviceName << " " << fQuality << " ";
+        header << evt.GetTime() << " ";
+
+        string text;
+        try
+        {
+            text = sub.fConv->GetString(evt.GetData(), evt.GetSize());
+        }
+        catch (const runtime_error &e)
+        {
+            ostringstream str;
+            str << "Parsing service " << evt.GetName();
+            str << " failed: " << e.what() << " removing the subscription to " << sub.server << "/" << sub.service;
+            Warn(str);
+            //remove this subscription from the list.
+            //because these operators use references to elements, and because they're supposed here to erase these objects on the way, I'm not too sure... so duplicate the names !
+            RemoveService(sub.server, sub.service, false);
+            return;
+        }
+
+        if (text.empty())
+        {
+            ostringstream str;
+            str << "Service " << evt.GetName() << " sent an empty string";
+            Info(str);
+            return;
+        }
+        //replace bizarre characters by white space
+        replace(text.begin(), text.end(), '\n', '\\');
+        replace_if(text.begin(), text.end(), ptr_fun<int, int>(&iscntrl), ' ');
+        
+        //write entry to Nightly report
+        if (fNightlyReportFile.is_open())
+        {
+            fNightlyReportFile << header.str() << text << endl;
+            if (!CheckForOfstreamError(fNightlyReportFile, true))
+                return;
+        }
+*/
+#ifdef HAVE_FITS
+        //check if the last received event was before noon and if current one is after noon.
+        //if so, close the file so that it gets reopened.
+//        sub.lastReceivedEvent = cTime;
+        if (!sub.nightlyFile.IsOpen())
+            if (GetCurrentState() != kSM_Ready)
+                OpenFITSFiles(sub);
+        WriteToFITS(sub, evt.GetData());
+#endif
+    }
+    else
+    {//write entry to Nightly log
+        vector<string> strings;
+        try
+        {
+           strings = sub.fConv->ToStrings(evt.GetData());
+        }
+        catch (const runtime_error &e)
+        {
+            ostringstream str;
+            str << "Parsing service " << evt.GetName();
+            str << " failed: " << e.what() << " removing the subscription for now.";
+            Error(str);
+            //remove this subscription from the list.
+            //because these operators use references to elements, and because they're supposed here to erase these objects on the way, I'm not too sure... so duplicate the names !
+            RemoveService(sub.server, sub.service, false);
+            return;
+        }
+        if (strings.size() > 1)
+        {
+            ostringstream err;
+            err << "There was more than one string message in service " << evt.GetName() << " going to fatal error state";
+            Error(err.str());
+        }
+
+        bool isMessage = (sub.service == "MESSAGE");
+        ostringstream msg;
+        string serviceName = isMessage ? "" : "_"+sub.service;
+        msg << sub.server << serviceName;
+
+        //fix the quality of non message "messages"
+        if (!isMessage)
+        {
+            msg << "[" << fQuality << "]";
+            fQuality = kMessage;
+        }
+
+        //special case for alarm reset
+        if (isMessage && (fQuality == kAlarm) && (strings[0] == ""))
+        {
+            fQuality = kInfo;
+            strings[0] = "Alarm reset";
+        }
+        msg << ": " << strings[0];
+
+        if (fNightlyLogFile.is_open())
+        {
+            fNightlyLogImp.Write(cTime, msg.str().c_str(), fQuality);
+            if (!CheckForOfstreamError(fNightlyLogFile, true))
+                return;
+        }
+
+//        sub.lastReceivedEvent = cTime;
+        if (!sub.nightlyFile.IsOpen())
+            if (GetCurrentState() != kSM_Ready)
+                OpenFITSFiles(sub);
+        WriteToFITS(sub, evt.GetData());
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! print the dataLogger's current state. invoked by the PRINT command
+//! @param evt
+//!        the current event. Not used by the method
+//! @returns 
+//!        the new state. Which, in that case, is the current state
+//!
+int DataLogger::PrintState(const Event& )
+{
+    Message("------------------------------------------");
+    Message("------- DATA LOGGER CURRENT STATE --------");
+    Message("------------------------------------------");
+
+    //print the path configuration
+#if BOOST_VERSION < 104600
+    Message("File path:    " + boost::filesystem::system_complete(boost::filesystem::path(fFilePath)).directory_string());
+#else
+    Message("File path:    " + boost::filesystem::system_complete(boost::filesystem::path(fFilePath)).parent_path().string());
+#endif
+
+    //print active run numbers
+    ostringstream str;
+    //timeout value
+    str << "Timeout delay for old run numbers: " << fRunNumberTimeout << " ms";
+    Message(str);
+    str.str("");
+    str << "Active Run Numbers:";
+    for (list<RunNumberType>::const_iterator it=fRunNumber.begin(); it!=fRunNumber.end(); it++)
+        str << " " << it->runNumber;
+    if (fRunNumber.empty())
+        str << " <none>";
+    Message(str);
+
+    //print all the open files. 
+    Message("------------ OPEN FILES ----------------");
+    if (fNightlyLogFile.is_open())
+        Message("Nightly log-file:    "+fFullNightlyLogFileName);
+
+    if (fNightlyReportFile.is_open())
+        Message("Nightly report-file: "+fFullNightlyReportFileName);
+
+    const DimWriteStatistics::Stats statVar = fFilesStats.GetTotalSizeWritten();
+ //   /*const bool statWarning =*/ calculateTotalSizeWritten(statVar, true);
+#ifdef HAVE_FITS
+    str.str("");
+    str << "Number of open FITS files: " << fNumSubAndFitsData.numOpenFits;
+    Message(str);
+    // FIXME: Print list of open FITS files
+#else
+    Message("FITS output disabled at compilation");
+#endif
+    Message("----------------- STATS ------------------");
+    if (fFilesStats.GetUpdateInterval()>0)
+    {
+        str.str("");
+        str << "Statistics are updated every " << fFilesStats.GetUpdateInterval() << " ms";
+        Message(str);
+    }
+    else
+        Message("Statistics updates are currently disabled.");
+    str.str("");
+    str << "Total Size written: " << statVar.sizeWritten/1000 << " kB";
+        Message(str);
+    str.str("");
+    str << "Disk free space:    " << statVar.freeSpace/1000000   << " MB";
+    Message(str);
+
+    Message("------------ DIM SUBSCRIPTIONS -----------");
+    str.str("");
+    str << "There are " << fNumSubAndFitsData.numSubscriptions << " active DIM subscriptions.";
+    Message(str);
+    for (map<const string, map<string, SubscriptionType> >::const_iterator it=fServiceSubscriptions.begin(); it!= fServiceSubscriptions.end();it++)
+    {
+        Message("Server "+it->first);
+        for (map<string, SubscriptionType>::const_iterator it2=it->second.begin(); it2!=it->second.end(); it2++)
+            Message(" -> "+it2->first);
+    }
+    Message("--------------- BLOCK LIST ---------------");
+    for (set<string>::const_iterator it=fBlackList.begin(); it != fBlackList.end(); it++)
+        Message(" -> "+*it);
+    if (fBlackList.empty())
+        Message(" <empty>");
+
+    Message("--------------- ALLOW LIST ---------------");
+    for (set<string>::const_iterator it=fWhiteList.begin(); it != fWhiteList.end(); it++)
+        Message(" -> "+*it);
+    if (fWhiteList.empty())
+        Message(" <empty>");
+
+    Message("-------------- GROUPING LIST -------------");
+    Message("The following servers and/or services will");
+    Message("be grouped into a single fits file:");
+    for (set<string>::const_iterator it=fGrouping.begin(); it != fGrouping.end(); it++)
+        Message(" -> "+*it);
+    if (fGrouping.empty())
+        Message(" <no grouping>");
+
+    Message("------------------------------------------");
+    Message("-------- END OF DATA LOGGER STATE --------");
+    Message("------------------------------------------");
+
+    return GetCurrentState();
+}
+
+// --------------------------------------------------------------------------
+//
+//! turn debug mode on and off
+//! @param evt
+//!        the current event. contains the instruction string: On, Off, on, off, ON, OFF, 0 or 1
+//! @returns 
+//!        the new state. Which, in that case, is the current state
+//!
+int DataLogger::SetDebugOnOff(const Event& evt)
+{
+    const bool backupDebug = fDebugIsOn;
+
+    fDebugIsOn = evt.GetBool();
+
+    if (fDebugIsOn == backupDebug)
+        Message("Debug mode was already in the requested state.");
+
+    ostringstream str;
+    str << "Debug mode is now " << fDebugIsOn;
+    Message(str);
+
+    fFilesStats.SetDebugMode(fDebugIsOn);
+
+    return GetCurrentState();
+}
+// --------------------------------------------------------------------------
+//
+//! set the statistics update period duration. 0 disables the statistics
+//! @param evt
+//!        the current event. contains the new duration.
+//! @returns 
+//!        the new state. Which, in that case, is the current state
+//!
+int DataLogger::SetStatsPeriod(const Event& evt)
+{
+    fFilesStats.SetUpdateInterval(evt.GetShort());
+    return GetCurrentState();
+}
+// --------------------------------------------------------------------------
+//
+//! set the opened files service on or off. 
+//! @param evt
+//!        the current event. contains the instruction string. similar to setdebugonoff
+//! @returns 
+//!        the new state. Which, in that case, is the current state
+//!
+int DataLogger::SetOpenedFilesOnOff(const Event& evt)
+{
+    const bool backupOpened = fOpenedFilesIsOn;
+
+    fOpenedFilesIsOn = evt.GetBool();
+
+    if (fOpenedFilesIsOn == backupOpened)
+        Message("Opened files service mode was already in the requested state.");
+
+    ostringstream str;
+    str << "Opened files service mode is now " << fOpenedFilesIsOn;
+    Message(str);
+
+    return GetCurrentState();
+}
+
+// --------------------------------------------------------------------------
+//
+//! set the number of subscriptions and opened fits on and off
+//! @param evt
+//!        the current event. contains the instruction string. similar to setdebugonoff
+//! @returns 
+//!        the new state. Which, in that case, is the current state
+//!
+int DataLogger::SetNumSubsAndFitsOnOff(const Event& evt)
+{
+    const bool backupSubs = fNumSubAndFitsIsOn;
+
+    fNumSubAndFitsIsOn = evt.GetBool();
+
+    if (fNumSubAndFitsIsOn == backupSubs)
+        Message("Number of subscriptions service mode was already in the requested state");
+
+    ostringstream str;
+    str << "Number of subscriptions service mode is now " << fNumSubAndFitsIsOn;
+    Message(str);
+
+    return GetCurrentState();
+}
+// --------------------------------------------------------------------------
+//
+//! set the timeout delay for old run numbers
+//! @param evt
+//!        the current event. contains the timeout delay long value
+//! @returns
+//!        the new state. Which, in that case, is the current state
+//!
+int DataLogger::SetRunTimeoutDelay(const Event& evt)
+{
+    if (evt.GetUInt() == 0)
+    {
+        Error("Timeout delays for old run numbers must be greater than 0... ignored.");
+        return GetCurrentState();
+    }
+
+    if (fRunNumberTimeout == evt.GetUInt())
+        Message("New timeout for old run numbers is same value as previous one.");
+
+    fRunNumberTimeout = evt.GetUInt();
+
+    ostringstream str;
+    str  << "Timeout delay for old run numbers is now " << fRunNumberTimeout << " ms";
+    Message(str);
+
+    return GetCurrentState();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Notifies the DIM service that a particular file was opened
+//! @ param name the base name of the opened file, i.e. without path nor extension. 
+//!     WARNING: use string instead of string& because I pass values that do not convert to string&.
+//!        this is not a problem though because file are not opened so often.
+//! @ param type the type of the opened file. 0 = none open, 1 = log, 2 = text, 4 = fits
+inline void DataLogger::NotifyOpenedFile(const string &name, int type, DimDescribedService* service)
+{
+    if (!fOpenedFilesIsOn)
+        return;
+
+    if (fDebugIsOn)
+    {
+        ostringstream str;
+        str << "Updating " << service->getName() << " file '" << name << "' (type=" << type << ")";
+        Debug(str);
+
+        str.str("");
+        str << "Num subscriptions: " << fNumSubAndFitsData.numSubscriptions << " Num open FITS files: " << fNumSubAndFitsData.numOpenFits;
+        Debug(str);
+    }
+
+    if (name.size()+1 > FILENAME_MAX)
+    {
+        Error("Provided file name '" + name + "' is longer than allowed file name length.");
+        return;
+    }
+
+    OpenFileToDim fToDim;
+    fToDim.code = type;
+    memcpy(fToDim.fileName, name.c_str(), name.size()+1);
+
+    service->setData(reinterpret_cast<void*>(&fToDim), name.size()+1+sizeof(uint32_t));
+    service->setQuality(0);
+    service->Update();
+}
+// --------------------------------------------------------------------------
+//
+//! Implements the Start transition.
+//! Concatenates the given path for the Nightly file and the filename itself (based on the day), 
+//! and tries to open it.
+//! @returns 
+//!        kSM_NightlyOpen if success, kSM_BadFolder if failure
+int DataLogger::Start()
+{
+    if (fDebugIsOn)
+    {
+        Debug("Starting...");    
+    }
+    fFullNightlyLogFileName = CompileFileNameWithPath(fFilePath, "", "log");
+    bool nightlyLogOpen = fNightlyLogFile.is_open();
+    if (!OpenTextFile(fNightlyLogFile, fFullNightlyLogFileName))
+        return kSM_BadFolder;
+    if (!nightlyLogOpen)
+        fNightlyLogFile << endl;
+
+    fFullNightlyReportFileName = CompileFileNameWithPath(fFilePath, "", "rep");
+    if (!OpenTextFile(fNightlyReportFile, fFullNightlyReportFileName))
+    {
+        fNightlyLogFile.close();
+        Info("Closed: "+fFullNightlyReportFileName);
+        return kSM_BadFolder;
+    }
+
+    fFilesStats.FileOpened(fFullNightlyLogFileName);
+    fFilesStats.FileOpened(fFullNightlyReportFileName);
+    //notify that a new file has been opened.
+    const string baseFileName = CompileFileNameWithPath(fFilePath, "", "");
+    NotifyOpenedFile(baseFileName, 3, fOpenedNightlyFiles);
+
+    fOpenedNightlyFits.clear();
+    
+    return kSM_NightlyOpen;     
+}
+
+#ifdef HAVE_FITS
+// --------------------------------------------------------------------------
+//
+//! open if required a the FITS files corresponding to a given subscription
+//! @param sub
+//!     the current DimInfo subscription being examined
+void DataLogger::OpenFITSFiles(SubscriptionType& sub)
+{
+    string serviceName(sub.server + "_" + sub.service);//evt.GetName());
+
+    for (unsigned int i=0;i<serviceName.size(); i++)
+    {
+        if (serviceName[i] == '/')
+        {
+            serviceName[i] = '_';
+            break;    
+        }    
+    }
+    //we open the NightlyFile anyway, otherwise this function shouldn't have been called.
+    if (!sub.nightlyFile.IsOpen())
+    {
+        string incrementedServiceName = serviceName;
+        if (sub.increment != 0)
+        {
+            ostringstream str;
+            str << "." << sub.increment;
+            incrementedServiceName += str.str();
+        }
+        const string partialName = CompileFileNameWithPath(fFilePath, incrementedServiceName, "fits");
+
+        const string fileNameOnly = partialName.substr(partialName.find_last_of('/')+1, partialName.size());
+        if (!sub.fitsBufferAllocated)
+            AllocateFITSBuffers(sub);
+        //get the size of the file we're about to open
+        if (fFilesStats.FileOpened(partialName))
+            fOpenedNightlyFits[fileNameOnly].push_back(serviceName);
+
+        if (!sub.nightlyFile.Open(partialName, serviceName, &fNumSubAndFitsData.numOpenFits, this, 0))
+        {
+            GoToRunWriteErrorState();
+            return;
+        }
+
+        ostringstream str;
+        str << "Opened: " << partialName << " (Nfits=" << fNumSubAndFitsData.numOpenFits << ")";
+        Info(str);
+
+        //notify the opening
+        const string baseFileName = CompileFileNameWithPath(fFilePath, "", "");
+        NotifyOpenedFile(baseFileName, 7, fOpenedNightlyFiles);
+        if (fNumSubAndFitsIsOn)
+            fNumSubAndFits->Update();
+    }
+
+}    
+// --------------------------------------------------------------------------
+//
+//! Allocates the required memory for a given pair of fits files (nightly and run)
+//! @param sub the subscription of interest.
+//
+void DataLogger::AllocateFITSBuffers(SubscriptionType& sub)
+{
+    //Init the time columns of the file
+    Description dateDesc(string("Time"), string("Modified Julian Date"), string("MJD"));
+    sub.nightlyFile.AddStandardColumn(dateDesc, "1D", &fMjD, sizeof(double));
+
+    Description QoSDesc("QoS", "Quality of service", "");
+    sub.nightlyFile.AddStandardColumn(QoSDesc, "1J", &fQuality, sizeof(int));
+
+    // Compilation failed
+    if (!sub.fConv->valid())
+    {
+        Error("Compilation of format string failed.");
+        return;
+    }
+
+    //we've got a nice structure describing the format of this service's messages.
+    //Let's create the appropriate FITS columns
+    const vector<string> dataFormatsLocal = sub.fConv->GetFitsFormat();
+
+    ostringstream str;
+    str << "Initializing data columns for service " << sub.server << "/" << sub.service;
+    Info(str);
+    sub.nightlyFile.InitDataColumns(GetDescription(sub.server, sub.service), dataFormatsLocal, this);
+
+    sub.fitsBufferAllocated = true;
+}
+// --------------------------------------------------------------------------
+//
+//! write a dimInfo data to its corresponding FITS files
+//
+//FIXME: DO I REALLY NEED THE EVENT IMP HERE ???
+void DataLogger::WriteToFITS(SubscriptionType& sub, const void* data)
+{
+        //nightly File status (open or not) already checked
+        if (sub.nightlyFile.IsOpen())
+        {
+            if (!sub.nightlyFile.Write(*sub.fConv.get(), data))
+            {
+                RemoveService(sub.server, sub.service, false);
+                GoToNightlyWriteErrorState();
+                return;
+            }
+         }
+}
+#endif //if has_fits
+// --------------------------------------------------------------------------
+//
+//! Go to Run Write Error State
+//      A write error has occurred. Checks what is the current state and take appropriate action
+void DataLogger::GoToRunWriteErrorState()
+{
+    if ((GetCurrentState() != kSM_RunWriteError) &&
+        (GetCurrentState() != kSM_DailyWriteError))
+        SetCurrentState(kSM_RunWriteError, "GoToRunWriteErrorState");
+}
+// --------------------------------------------------------------------------
+//
+//! Go to Nightly Write Error State
+//      A write error has occurred. Checks what is the current state and take appropriate action
+void DataLogger::GoToNightlyWriteErrorState()
+{
+    if (GetCurrentState() != kSM_DailyWriteError)
+        SetCurrentState(kSM_DailyWriteError, "GoToNightlyWriteErrorState");
+}
+
+
+#ifdef HAVE_FITS
+// --------------------------------------------------------------------------
+//
+//! Create a fits group file with all the run-fits that were written (either daily or run)
+//! @param filesToGroup a map of filenames mapping to table names to be grouped (i.e. a
+//!        single file can contain several tables to group
+//! @param runNumber the run number that should be used for grouping. 0 means nightly group
+//
+void DataLogger::CreateFitsGrouping(map<string, vector<string> > & filesToGroup)
+{
+    if (fDebugIsOn)
+    {
+        ostringstream str;
+        str << "Creating fits group for nightly files";
+        Debug(str);
+    }
+    //create the FITS group corresponding to the ending run.
+    CCfits::FITS* groupFile;
+    unsigned int numFilesToGroup = 0;
+    unsigned int maxCharLength = 0;
+    for (map<string, vector<string> >::const_iterator it=filesToGroup.begin(); it != filesToGroup.end(); it++)
+    {
+        //add the number of tables in this file to the total number to group
+        numFilesToGroup += it->second.size();
+        //check the length of all the strings to be written, to determine the max string length to write
+        if (it->first.size() > maxCharLength)
+            maxCharLength = it->first.size();
+        for (vector<string>::const_iterator jt=it->second.begin(); jt != it->second.end(); jt++)
+            if (jt->size() > maxCharLength)
+                maxCharLength = jt->size();
+    }
+
+    if (fDebugIsOn)
+    {
+        ostringstream str;
+        str << "There are " << numFilesToGroup << " tables to group";
+        Debug(str);
+    }
+    if (numFilesToGroup <= 1)
+    {
+        filesToGroup.clear();
+        return;
+    }
+    const string groupName = CompileFileNameWithPath(fFilePath, "", "fits");
+
+    Info("Creating FITS group in: "+groupName);
+
+    CCfits::Table* groupTable;
+
+    try
+    {
+        groupFile = new CCfits::FITS(groupName, CCfits::RWmode::Write);
+        //setup the column names
+        ostringstream pathTypeName;
+        pathTypeName << maxCharLength << "A";
+        vector<string> names;
+        vector<string> dataTypes;
+        names.emplace_back("MEMBER_XTENSION");
+        dataTypes.emplace_back("8A");
+        names.emplace_back("MEMBER_URI_TYPE");
+        dataTypes.emplace_back("3A");
+        names.emplace_back("MEMBER_LOCATION");
+        dataTypes.push_back(pathTypeName.str());
+        names.emplace_back("MEMBER_NAME");
+        dataTypes.push_back(pathTypeName.str());
+        names.emplace_back("MEMBER_VERSION");
+        dataTypes.emplace_back("1J");
+        names.emplace_back("MEMBER_POSITION");
+        dataTypes.emplace_back("1J");
+
+        groupTable = groupFile->addTable("GROUPING", numFilesToGroup, names, dataTypes);
+//TODO handle the case when the logger was stopped and restarted during the same day, i.e. the grouping file must be updated
+     }
+     catch (CCfits::FitsException e)
+     {
+         ostringstream str;
+         str << "Creating FITS table GROUPING in " << groupName << ": " << e.message();
+         Error(str);
+         return;
+     }
+     try
+     {
+         groupTable->addKey("GRPNAME", "FACT_RAW_DATA", "Data from the FACT telescope");
+     }
+     catch (CCfits::FitsException e)
+     {
+         Error("CCfits::Table::addKey failed for 'GRPNAME' in '"+groupName+"-GROUPING': "+e.message());
+         return;
+     }
+    //CCfits seems to be buggy somehow: can't use the column's function "write": it create a compilation error: maybe strings were not thought about.
+    //use cfitsio routines instead
+    groupTable->makeThisCurrent();
+    //create appropriate buffer.
+    const unsigned int n = 8 + 3 + 2*maxCharLength + 1 + 8; //+1 for trailling character
+
+    vector<char> realBuffer(n);
+
+    char *startOfExtension = realBuffer.data();
+    char *startOfURI       = realBuffer.data()+8;
+    char *startOfLocation  = realBuffer.data()+8+3;
+    char *startOfName      = realBuffer.data()+8+3+maxCharLength;
+
+    strcpy(startOfExtension, "BINTABLE");
+    strcpy(startOfURI,       "URL");
+
+    realBuffer[8+3+2*maxCharLength+3] = 1;
+    realBuffer[8+3+2*maxCharLength+7] = 1;
+
+    int i=1;
+    for (map<string, vector<string> >::const_iterator it=filesToGroup.begin(); it!=filesToGroup.end(); it++)
+        for (vector<string>::const_iterator jt=it->second.begin(); jt != it->second.end(); jt++, i++)
+        {
+            memset(startOfLocation, 0, 2*maxCharLength+1+8);
+
+            strcpy(startOfLocation, it->first.c_str());
+            strcpy(startOfName,     jt->c_str());
+
+            if (fDebugIsOn)
+            {
+                ostringstream str;
+                str << "Grouping " << it->first << " " << *jt;
+                Debug(str);
+            }
+
+            int status = 0;
+            fits_write_tblbytes(groupFile->fitsPointer(), i, 1, 8+3+2*maxCharLength +8,
+                                reinterpret_cast<unsigned char*>(realBuffer.data()), &status);
+            if (status)
+            {
+                char text[30];//max length of cfitsio error strings (from doc)
+                fits_get_errstatus(status, text);
+                ostringstream str;
+                str << "Writing FITS row " << i << " in " << groupName << ": " << text << " (file_write_tblbytes, rc=" << status << ")";
+                Error(str);
+                GoToRunWriteErrorState();
+                delete groupFile;
+                return;
+            }
+        }
+
+    filesToGroup.clear();
+    delete groupFile;
+}
+#endif //HAVE_FITS
+
+// --------------------------------------------------------------------------
+//
+//! Implements the StopRun transition.
+//! Attempts to close the run file.
+//! @returns
+//!        kSM_WaitingRun if success, kSM_FatalError otherwise
+int DataLogger::StopRunLogging()
+{
+
+    if (fDebugIsOn)
+    {
+        Debug("Stopping Run Logging...");    
+    }
+
+    if (fNumSubAndFitsIsOn)
+        fNumSubAndFits->Update();
+
+    while (fRunNumber.size() > 0)
+    {
+        RemoveOldestRunNumber();
+    }
+    return kSM_WaitingRun;
+}
+// --------------------------------------------------------------------------
+//
+//! Implements the Stop and Reset transitions.
+//! Attempts to close any openned file.
+//! @returns
+//!     kSM_Ready
+int DataLogger::GoToReady()
+{
+   if (fDebugIsOn)
+   {
+        Debug("Going to the Ready state...");
+   }
+   if (GetCurrentState() == kSM_Logging || GetCurrentState() == kSM_WaitingRun)
+       StopRunLogging();
+
+   //it may be that dim tries to write a dimInfo while we're closing files. Prevent that
+   const string baseFileName = CompileFileNameWithPath(fFilePath, "", "");
+
+    if (fNightlyReportFile.is_open())
+    {
+        fNightlyReportFile.close();
+        Info("Closed: "+baseFileName+".rep");
+    }
+#ifdef HAVE_FITS
+    for (SubscriptionsListType::iterator i = fServiceSubscriptions.begin(); i != fServiceSubscriptions.end(); i++)
+        for (map<string, SubscriptionType>::iterator j = i->second.begin(); j != i->second.end(); j++)
+        {
+            if (j->second.nightlyFile.IsOpen())
+                j->second.nightlyFile.Close();
+        }
+#endif
+    if (GetCurrentState() == kSM_Logging || 
+        GetCurrentState() == kSM_WaitingRun || 
+        GetCurrentState() == kSM_NightlyOpen)
+    { 
+        NotifyOpenedFile("", 0, fOpenedNightlyFiles);
+        if (fNumSubAndFitsIsOn)
+            fNumSubAndFits->Update();
+    }
+#ifdef HAVE_FITS
+    CreateFitsGrouping(fOpenedNightlyFits);
+#endif
+    return kSM_Ready;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Implements the transition towards kSM_WaitingRun
+//! If current state is kSM_Ready, then tries to go to nightlyOpen state first.
+//!    @returns
+//!        kSM_WaitingRun or kSM_BadFolder
+int DataLogger::NightlyToWaitRun()
+{
+    int cState = GetCurrentState();
+
+    if (cState == kSM_Ready)
+        cState = Start();
+
+    if (cState != kSM_NightlyOpen)
+        return GetCurrentState();
+
+    if (fDebugIsOn)
+    {
+        Debug("Going to Wait Run Number state...");    
+    }
+    return kSM_WaitingRun;    
+}
+// --------------------------------------------------------------------------
+//
+//! Implements the transition from wait for run number to nightly open
+//! Does nothing really.
+//!    @returns
+//!        kSM_WaitingRun
+int DataLogger::BackToNightlyOpen()
+{
+    if (GetCurrentState()==kSM_Logging)
+        StopRunLogging();
+
+    if (fDebugIsOn)
+    {
+        Debug("Going to NightlyOpen state...");
+    }
+    return kSM_NightlyOpen;
+}
+// --------------------------------------------------------------------------
+//
+//! Setup Logger's configuration from a Configuration object
+//! @param conf the configuration object that should be used
+//!
+int DataLogger::EvalOptions(Configuration& conf)
+{
+    fDebugIsOn = conf.Get<bool>("debug");
+    fFilesStats.SetDebugMode(fDebugIsOn);
+
+    //Set the block or allow list
+    fBlackList.clear();
+    fWhiteList.clear();
+
+    //Adding entries that should ALWAYS be ignored
+    fBlackList.insert("DATA_LOGGER/MESSAGE");
+    fBlackList.insert("DATA_LOGGER/SUBSCRIPTIONS");
+    fBlackList.insert("/SERVICE_LIST");
+    fBlackList.insert("DIS_DNS/");
+
+    //set the black list, white list and the goruping
+    const vector<string> vec1 = conf.Vec<string>("block");
+    const vector<string> vec2 = conf.Vec<string>("allow");
+    const vector<string> vec3 = conf.Vec<string>("group");
+
+    fBlackList.insert(vec1.begin(), vec1.end());
+    fWhiteList.insert(vec2.begin(), vec2.end());
+    fGrouping.insert( vec3.begin(), vec3.end());
+
+    //set the old run numbers timeout delay
+    if (conf.Has("run-timeout"))
+    {
+        const uint32_t timeout = conf.Get<uint32_t>("run-timeout");
+        if (timeout == 0)
+        {
+            Error("Time out delay for old run numbers must not be 0.");
+            return 1;
+        }
+        fRunNumberTimeout = timeout;
+    }
+
+    //configure the run files directory
+    if (conf.Has("destination-folder"))
+     {
+         const string folder = conf.Get<string>("destination-folder");
+         if (!fFilesStats.SetCurrentFolder(folder))
+             return 2;
+
+         fFilePath = folder;
+         fFullNightlyLogFileName = CompileFileNameWithPath(fFilePath, "", "log");
+         if (!OpenTextFile(fNightlyLogFile, fFullNightlyLogFileName))
+             return 3;
+
+         fNightlyLogFile << endl;
+         NotifyOpenedFile(fFullNightlyLogFileName, 1, fOpenedNightlyFiles);
+         for (vector<string>::iterator it=backLogBuffer.begin();it!=backLogBuffer.end();it++)
+             fNightlyLogFile << *it;
+     }
+
+    shouldBackLog = false;
+    backLogBuffer.clear();
+
+    //configure the interval between statistics updates
+    if (conf.Has("stats-interval"))
+        fFilesStats.SetUpdateInterval(conf.Get<int16_t>("stats-interval"));
+
+    //configure if the filenames service is on or off
+    fOpenedFilesIsOn = !conf.Get<bool>("no-filename-service");
+
+    //configure if the number of subscriptions and fits files is on or off.
+    fNumSubAndFitsIsOn = !conf.Get<bool>("no-numsubs-service");
+    //should we open the daily files at startup ?
+    if (conf.Has("start-daily-files"))
+        if (conf.Get<bool>("start-daily-files"))
+        {
+            fShouldAutoStart = true;
+        }
+    if (conf.Has("service-list-interval"))
+        fCurrentSubscriptionUpdateRate = conf.Get<int32_t>("service-list-interval");
+    return -1;
+}
+
+
+#include "Main.h"
+
+// --------------------------------------------------------------------------
+template<class T>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, DataLogger>(conf);//, true);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout << "\n"
+        "The data logger connects to all available Dim services and "
+        "writes them to ascii and fits files.\n"
+        "\n"
+        "The default is that the program is started without user interaction. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usage can be brought to the screen.\n"
+        "\n"
+        "Usage: datalogger [-c type] [OPTIONS]\n"
+        "  or:  datalogger [OPTIONS]\n";
+    cout << endl;
+
+}
+// --------------------------------------------------------------------------
+void PrintHelp()
+{
+    /* Additional help text which is printed after the configuration
+     options goes here */
+    cout <<
+        "\n"
+        "If the allow list has any element, only the servers and/or services "
+        "specified in the list will be used for subscription. The black list "
+        "will disable service subscription and has higher priority than the "
+        "allow list. If the allow list is not present by default all services "
+        "will be subscribed."
+        "\n"
+        "For example, block=DIS_DNS/ will skip all the services offered by "
+        "the DIS_DNS server, while block=/SERVICE_LIST will skip all the "
+        "SERVICE_LIST services offered by any server and DIS_DNS/SERVICE_LIST "
+        "will skip DIS_DNS/SERVICE_LIST.\n"
+        << endl;
+
+    Main::PrintHelp<DataLogger>();
+}
+
+// --------------------------------------------------------------------------
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description configs("DataLogger options");
+    configs.add_options()
+        ("block,b",             vars<string>(),  "Black-list to block services")
+        ("allow,a",             vars<string>(),  "White-list to only allowe certain services")
+        ("debug,d",             po_bool(),       "Debug mode. Print clear text of received service reports.")
+        ("group,g",             vars<string>(),  "Grouping of services into a single run-Fits")
+        ("run-timeout",         var<uint32_t>(), "Time out delay for old run numbers in milliseconds.")
+        ("destination-folder",  var<string>(),   "Base path for the nightly and run files")
+        ("stats-interval",      var<int16_t>(),  "Interval in milliseconds for write statistics update")
+        ("no-filename-service", po_bool(),       "Disable update of filename service")
+        ("no-numsubs-service",  po_bool(),       "Disable update of number-of-subscriptions service")
+        ("start-daily-files",   po_bool(),       "Starts the logger in DailyFileOpen instead of Ready")
+        ("service-list-interval", var<int32_t>(), "Interval between two updates of the service SUBSCRIPTIONS")
+        ;
+
+    conf.AddOptions(configs);
+}
+// --------------------------------------------------------------------------
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+            return RunShell<LocalStream>(conf);
+
+        // Console access w/ and w/o Dim
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell>(conf);
+        else
+            return RunShell<LocalConsole>(conf);
+    }
+
+
+    return 0;
+}
Index: branches/testFACT++branch/src/dclient5.cc
===================================================================
--- branches/testFACT++branch/src/dclient5.cc	(revision 18277)
+++ branches/testFACT++branch/src/dclient5.cc	(revision 18277)
@@ -0,0 +1,703 @@
+#include <boost/bind.hpp>
+#if BOOST_VERSION < 104400
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))
+#undef BOOST_HAS_RVALUE_REFS
+#endif
+#endif
+#include <boost/thread.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/deadline_timer.hpp>
+
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "Connection.h"
+#include "Configuration.h"
+#include "Timers.h"
+#include "Console.h"
+
+#include "tools.h"
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+
+using ba::deadline_timer;
+using ba::ip::tcp;
+
+using namespace std;
+
+
+// ------------------------------------------------------------------------
+
+#include "LocalControl.h"
+
+// ------------------------------------------------------------------------
+
+class ConnectionFAD : public Connection
+{
+    MessageImp &fMsg;
+
+    int state;
+
+    char fReadBuffer[1000];
+
+public:
+    void ConnectionEstablished()
+    {
+        StartAsyncRead();
+    }
+
+    void HandleReadTimeout(const bs::error_code &error)
+    {
+        return;
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            return;
+        }
+
+        // 125: Operation canceled
+
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+
+            str << "HandleReadTimeout: " << error.message() << " (" << error << ")";// << endl;
+            if (error==ba::error::misc_errors::eof)
+                Warn(str); // Connection: EOF (closed by remote host)
+            else
+                Error(str);
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fInTimeout.expires_at() > deadline_timer::traits_type::now())
+            return;
+
+        Error("fInTimeout has expired...");
+
+       PostClose();
+    }
+
+    void HandleReceivedData(const bs::error_code& error, size_t bytes_received, int)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || error)
+        {
+            // 107: Transport endpoint is not connected
+            // 125: Operation canceled
+            if (error && error!=ba::error::basic_errors::not_connected)
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+                Error(str);
+            }
+            PostClose(error!=ba::error::basic_errors::operation_aborted);
+            return;
+        }
+
+        string txt;
+
+        if (bytes_received==2)
+        {
+            txt = string(fReadBuffer, bytes_received);
+            //std::vector<char> buf(128);
+            //bytes_transferred = sock.receive(boost::asio::buffer(d3));
+
+            fMsg() << "Received b=" << bytes_received << ": " << (int)fReadBuffer[0] << " " << (int)txt[0] << " '" << txt << "' " << " " << error.message() << "  (" << error << ")" << endl;
+
+            if (fReadBuffer[0]=='T')
+            {
+                // AsyncRead + Deadline
+                // Do all manipulation to the buffer BEFORE this call!
+                AsyncRead(ba::buffer(fReadBuffer+2, 21)/*,
+                          &Connection::HandleReceivedData*/);
+                AsyncWait(fInTimeout, 5000, &Connection::HandleReadTimeout);
+            }
+            else
+            {
+                // AsyncRead + Deadline
+                // Do all manipulation to the buffer BEFORE this call!
+                AsyncRead(ba::buffer(fReadBuffer+2, 35)/*,
+                          &Connection::HandleReceivedData*/);
+                AsyncWait(fInTimeout, 5000, &Connection::HandleReadTimeout);
+            }
+        }
+        else
+        {
+            txt = string(fReadBuffer, bytes_received+2);
+            const int s = atoi(fReadBuffer+35);
+            if (s==9)
+                Info("Requested time received: "+txt);
+            else
+                state = s;
+
+            Out() << "Received b=" << bytes_received << ": " << (int)fReadBuffer[0] << " " << (int)txt[0] << " '" << txt << "' " << " " << error.message() << "  (" << error << ")" << endl;
+            memset(fReadBuffer, 0, 100);
+
+            // Do all manipulation to the buffer BEFORE this call!
+            AsyncRead(ba::buffer(fReadBuffer, 2)/*,
+                      &Connection::HandleReceivedData*/);
+
+
+        }
+    }
+
+    int GetState() const { return state; }
+
+    void StartAsyncRead()
+    {
+        // Start also a dealine_time for a proper timeout
+        // Therefore we must know how often we expect messages
+        // FIXME: Add deadline_counter
+
+        memset(fReadBuffer, 0, 100);
+
+        // AsyncRead + Deadline
+        AsyncRead(ba::buffer(fReadBuffer, 2)/*,
+                  &Connection::HandleReceivedData*/);
+        AsyncWait(fInTimeout, 5000, &Connection::HandleReadTimeout);
+    }
+
+    /*
+     ConnectionFAD(ba::io_service& io_service, const string &addr, int port) :
+     Connection(io_service, addr, port), state(0) { }
+     ConnectionFAD(ba::io_service& io_service, const string &addr, const string &port) :
+     Connection(io_service, addr, port), state(0) { }
+     */
+
+    ConnectionFAD(ba::io_service& ioservice, MessageImp &imp) :
+    Connection(ioservice, imp()), fMsg(imp), state(0)
+    {
+    }
+};
+
+template <class T>
+class StateMachineFAD : public T, public ba::io_service
+{
+public:
+    enum states_t
+    {
+        kSM_Disconnected = 1,
+        kSM_Connecting,
+        kSM_Connected,
+        kSM_Running,
+        kSM_SomeRunning,
+        kSM_Starting,
+        kSM_Stopping,
+        kSM_Reconnect,
+        kSM_SetUrl,
+    };
+
+    ConnectionFAD c1;
+    ConnectionFAD c2;
+    ConnectionFAD c3;
+    ConnectionFAD c4;
+    ConnectionFAD c5;
+    ConnectionFAD c6;
+    ConnectionFAD c7;
+    ConnectionFAD c8;
+    ConnectionFAD c9;
+
+    /*
+    int Write(const Time &time, const char *txt, int qos)
+    {
+        return T::Write(time, txt, qos);
+    }
+    */
+    Timers fTimers;
+
+    StateMachineFAD(const string &name="", ostream &out=cout) :
+        T(out, name),
+        c1(*this, *this), c2(*this, *this), c3(*this, *this), c4(*this, *this),
+        c5(*this, *this), c6(*this, *this), c7(*this, *this), c8(*this, *this),
+        c9(*this, *this), fTimers(out)
+    {
+//        c1.SetEndpoint();
+        c2.SetEndpoint("localhost", 4001);
+        c3.SetEndpoint("ftmboard1.ethz.ch", 5000);
+        c4.SetEndpoint("localhost", 4003);
+        c5.SetEndpoint("localhost", 4004);
+        c6.SetEndpoint("localhost", 4005);
+        c7.SetEndpoint("localhost", 4006);
+        c8.SetEndpoint("localhost", 4007);
+        c9.SetEndpoint("localhost", 4008);
+
+        c1.SetLogStream(this);
+        c2.SetLogStream(this);
+        c3.SetLogStream(this);
+        c4.SetLogStream(this);
+        c5.SetLogStream(this);
+        c6.SetLogStream(this);
+        c7.SetLogStream(this);
+        c8.SetLogStream(this);
+        c9.SetLogStream(this);
+
+        c1.StartConnect(); // This sets the connection to "open"
+        c2.StartConnect(); // This sets the connection to "open"
+        c3.StartConnect(); // This sets the connection to "open"
+        //c4.StartConnect(); // This sets the connection to "open"
+        //c5.StartConnect(); // This sets the connection to "open"
+        //c6.StartConnect(); // This sets the connection to "open"
+        //c7.StartConnect(); // This sets the connection to "open"
+        //c8.StartConnect(); // This sets the connection to "open"
+        //c9.StartConnect(); // This sets the connection to "open"
+
+        AddStateName(kSM_Disconnected,  "Disconnected");
+        AddStateName(kSM_Connecting,    "Connecting"); // Some connected
+        AddStateName(kSM_Connected,     "Connected");
+        AddStateName(kSM_Running,       "Running");
+        AddStateName(kSM_SomeRunning,   "SomeRunning");
+        AddStateName(kSM_Starting,      "Starting");
+        AddStateName(kSM_Stopping,      "Stopping");
+
+        AddEvent(kSM_Running,   "START", kSM_Connected).
+            AssignFunction(boost::bind(&StateMachineFAD::Start, this, _1, 5));
+        AddEvent(kSM_Connected, "STOP",  kSM_Running);
+
+        AddEvent("TIME", kSM_Running);
+        AddEvent("LED",  kSM_Connected);
+
+        T::AddEvent("TESTI",    "I");
+        T::AddEvent("TESTI2",   "I:2");
+        T::AddEvent("TESTIF",   "I:2;F:2");
+        T::AddEvent("TESTIC",   "I:2;C");
+
+        T::AddEvent("CMD", "C").
+            AssignFunction(boost::bind(&StateMachineFAD::Command, this, _1));
+
+        AddEvent(kSM_Reconnect, "RECONNECT");
+
+        AddEvent(kSM_SetUrl, "SETURL", "C");
+    }
+
+    int Command(const EventImp &evt)
+    {
+        string cmd = evt.GetText();
+
+        size_t p0 = cmd.find_first_of(' ');
+        if (p0==string::npos)
+            p0 = cmd.length();
+
+    T::Out() << "\nCommand: '" << cmd.substr(0, p0) << "'" << cmd.substr(p0)<< "'" << endl;
+    /*
+    const Converter c(T::Out(), "B:5;I:2;F;W;O;C", "yes no false 0 1 31 42 11.12 \"test hallo\" ");
+
+     T::Out() << c.GetRc() << endl;
+     T::Out() << c.N() << endl;
+     T::Out() << c.Get<bool>(0) << endl;
+     T::Out() << c.Get<bool>(1) << endl;
+     T::Out() << c.Get<bool>(2) << endl;
+     T::Out() << c.Get<bool>(3) << endl;
+     T::Out() << c.Get<bool>(4) << endl;
+     T::Out() << c.Get<int>(5) << endl;
+     T::Out() << c.Get<int>(6) << endl;
+     T::Out() << c.Get<float>(7) << endl;
+     T::Out() << c.Get<int>(7) << endl;
+     T::Out() << c.Get<string>(8) << endl;
+     T::Out() << c.Get<string>(9) << endl;
+     T::Out() << c.Get<string>(10) << endl;
+     */
+     return T::GetCurrentState();
+    }
+    int Start(const EventImp &evt, int i)
+    {
+        switch (evt.GetTargetState())
+        {
+        case kSM_Running:    // We are coming from kRunning
+        case kSM_Starting:   // We are coming from kConnected
+            T::Out() << "Received Start(" << i << ")" << endl;
+            c1.PostMessage("START", 10);
+            c2.PostMessage("START", 10);
+            // We could introduce a "waiting for execution" state
+            return T::GetCurrentState();
+        }
+        return T::kSM_FatalError;
+    }
+
+    void Close()
+    {
+        c1.PostClose();
+        c2.PostClose();
+        c3.PostClose();
+        c4.PostClose();
+        c5.PostClose();
+        c6.PostClose();
+        c7.PostClose();
+        c8.PostClose();
+        c9.PostClose();
+    }
+
+
+    int Execute()
+    {
+        // Dispatch at most one handler from the queue. In contrary
+        // to run_run(), it doesn't wait until a handler is available
+        // which can be dispatched, so poll_one() might return with 0
+        // handlers dispatched. The handlers are always dispatched
+        // synchronously.
+
+        fTimers.SetT();
+        const int n = poll_one();
+        fTimers.Proc(n==0 && T::IsQueueEmpty());
+
+//        return c3.IsConnected() ? kSM_Connected : kSM_Disconnected;
+
+
+        // None is connected
+        if (!c1.IsConnected() && !c2.IsConnected())
+            return kSM_Disconnected;
+
+        // Some are connected
+        if (c1.IsConnected()!=c2.IsConnected())
+            return kSM_Connecting;
+
+        if (c1.GetState()==0 && c2.GetState()==0 && T::GetCurrentState()!=kSM_Starting)
+            return kSM_Connected;
+
+        if (c1.GetState()==1 && c2.GetState()==1 && T::GetCurrentState()!=kSM_Stopping)
+            return kSM_Running;
+
+        return kSM_SomeRunning;//GetCurrentState();
+    }
+
+    int Transition(const Event &evt)
+    {
+        ConnectionFAD *con1 = &c1;
+        ConnectionFAD *con2 = &c2;
+
+        switch (evt.GetTargetState())
+        {
+        case kSM_SetUrl:
+            T::Out() << evt.GetText() << endl;
+            c1.SetEndpoint(evt.GetText());
+            return T::GetCurrentState();
+        case kSM_Reconnect:
+            // Close all connections
+            c1.PostClose(false);
+            c2.PostClose(false);
+            c3.PostClose(false);
+
+            // Now wait until all connection have been closed and
+            // all pending handlers have been processed
+            poll();
+
+            // Now we can reopen the connection
+            c1.PostClose(true);
+            c2.PostClose(true);
+            c3.PostClose(true);
+
+
+            //c4.PostClose(true);
+            //c5.PostClose(true);
+            //c6.PostClose(true);
+            //c7.PostClose(true);
+            //c8.PostClose(true);
+            //c9.PostClose(true);
+            return T::GetCurrentState();
+        case kSM_Running: // We are coming from kRunning
+        case kSM_Starting:   // We are coming from kConnected
+            T::Out() << "Received START" << endl;
+            con1->PostMessage("START", 10);
+            con2->PostMessage("START", 10);
+            // We could introduce a "waiting for execution" state
+            return T::GetCurrentState();
+            return kSM_Starting; //GetCurrentState();
+
+        case kSM_Connected:   // We are coming from kConnected
+        case kSM_Stopping: // We are coming from kRunning
+            T::Out() << "Received STOP" << endl;
+            con1->PostMessage("STOP", 10);
+            con2->PostMessage("STOP", 10);
+            // We could introduce a "waiting for execution" state
+            return T::GetCurrentState();
+            return kSM_Stopping;//GetCurrentState();
+        }
+
+        return T::kSM_FatalError; //evt.GetTargetState();
+    }
+    int Configure(const Event &evt)
+    {
+        if (evt.GetName()=="TIME")
+        {
+            c1.PostMessage("TIME", 10);
+            c2.PostMessage("TIME", 10);
+        }
+
+        vector<char> v(2);
+        v[0] = 0xc0;
+        v[1] = 0x00;
+
+        if (evt.GetName()=="LED")
+            c3.PostMessage(v);
+
+        return T::GetCurrentState();
+    }
+};
+
+// ------------------------------------------------------------------------
+
+template<class S>
+int RunDim(Configuration &conf)
+{
+    /*
+     initscr();		      // Start curses mode
+     cbreak();		      // Line buffering disabled, Pass on
+     intrflush(stdscr, FALSE);
+     start_color();            // Initialize ncurses colors
+     use_default_colors();     // Assign terminal default colors to -1
+     for (int i=1; i<8; i++)
+        init_pair(i, i, -1);  // -1: def background
+        scrollok(stdscr, true);
+        */
+
+    WindowLog wout;
+
+    //log.SetWindow(stdscr);
+    if (conf.Has("log"))
+        if (!wout.OpenLogFile(conf.Get<string>("log")))
+            wout << kRed << "ERROR - Couldn't open log-file " << conf.Get<string>("log") << ": " << strerror(errno) << endl;
+
+    // Start io_service.Run to use the StateMachineImp::Run() loop
+    // Start io_service.run to only use the commandHandler command detaching
+    StateMachineFAD<S> io_service("DATA_LOGGER", wout);
+    io_service.Run();
+
+    return 0;
+}
+
+template<class T, class S>
+int RunShell(Configuration &conf)
+{
+    static T shell(conf.GetName().c_str(), conf.Get<int>("console")!=1);
+
+    WindowLog &win  = shell.GetStreamIn();
+    WindowLog &wout = shell.GetStreamOut();
+
+    if (conf.Has("log"))
+        if (!wout.OpenLogFile(conf.Get<string>("log")))
+            win << kRed << "ERROR - Couldn't open log-file " << conf.Get<string>("log") << ": " << strerror(errno) << endl;
+
+    StateMachineFAD<S> io_service("DATA_LOGGER", wout);
+    shell.SetReceiver(io_service);
+
+    boost::thread t(boost::bind(&StateMachineFAD<S>::Run, &io_service));
+
+    //io_service.SetReady();
+
+    shell.Run();                 // Run the shell
+    io_service.Stop();           // Signal Loop-thread to stop
+    // io_service.Close();       // Obsolete, done by the destructor
+    // wout << "join: " << t.timed_join(boost::posix_time::milliseconds(0)) << endl;
+
+    // Wait until the StateMachine has finished its thread
+    // before returning and destroying the dim objects which might
+    // still be in use.
+    t.join();
+
+    return 0;
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout << "\n"
+        "The console connects to all available Dim Servers and allows to "
+        "easily access all of their commands.\n"
+        "\n"
+        "Usage: test3 [-c type] [OPTIONS]\n"
+        "  or:  test3 [OPTIONS]\n"
+        "\n"
+        "Options:\n"
+        "The following describes the available commandline options. "
+        "For further details on how command line option are parsed "
+        "and in which order which configuration sources are accessed "
+        "please refer to the class reference of the Configuration class.";
+    cout << endl;
+
+}
+
+void PrintHelp()
+{
+    cout << "\n"
+        "The default is that the program is started without user interaction. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen."
+        << endl;
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+/*
+ The first line of the --version information is assumed to be in one
+ of the following formats:
+
+   <version>
+   <program> <version>
+   {GNU,Free} <program> <version>
+   <program> ({GNU,Free} <package>) <version>
+   <program> - {GNU,Free} <package> <version>
+
+ and separated from any copyright/author details by a blank line.
+
+ Handle multi-line bug reporting sections of the form:
+
+   Report <program> bugs to <addr>
+   GNU <package> home page: <url>
+   ...
+*/
+void PrintVersion(const char *name)
+{
+    cout <<
+        name << " - "PACKAGE_STRING"\n"
+        "\n"
+        "Written by Thomas Bretz et al.\n"
+        "\n"
+        "Report bugs to <"PACKAGE_BUGREPORT">\n"
+        "Home page: "PACKAGE_URL"\n"
+        "\n"
+        "Copyright (C) 2011 by the FACT Collaboration.\n"
+        "This is free software; see the source for copying conditions.\n"
+        << endl;
+}
+
+
+void SetupConfiguration(Configuration &conf)
+{
+    const string n = conf.GetName()+".log";
+
+    po::options_description config("Program options");
+    config.add_options()
+        ("dns",       var<string>("localhost"),  "Dim nameserver host name (Overwites DIM_DNS_NODE environment variable)")
+        ("log,l",     var<string>(n), "Write log-file")
+        ("no-dim,d",  po_switch(),    "Disable dim services")
+        ("console,c", var<int>(),     "Use console (0=shell, 1=simple buffered, X=simple unbuffered)")
+        ;
+
+    conf.AddEnv("dns", "DIM_DNS_NODE");
+
+    conf.AddOptions(config);
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    po::variables_map vm;
+    try
+    {
+        vm = conf.Parse(argc, argv);
+    }
+    catch (std::exception &e)
+    {
+#if BOOST_VERSION > 104000
+        po::multiple_occurrences *MO = dynamic_cast<po::multiple_occurrences*>(&e);
+        if (MO)
+            cout << "Error: " << e.what() << " of '" << MO->get_option_name() << "' option." << endl;
+        else
+#endif
+            cout << "Error: " << e.what() << endl;
+        cout << endl;
+
+        return -1;
+    }
+
+    if (conf.HasPrint())
+        return -1;
+
+    if (conf.HasVersion())
+    {
+        PrintVersion(argv[0]);
+        return -1;
+    }
+
+    if (conf.HasHelp())
+    {
+        PrintHelp();
+        return -1;
+    }
+
+    // To allow overwriting of DIM_DNS_NODE set 0 to 1
+    setenv("DIM_DNS_NODE", conf.Get<string>("dns").c_str(), 1);
+
+    try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+            if (conf.Get<bool>("no-dim"))
+                return RunDim<StateMachine>(conf);
+            else
+                return RunDim<StateMachineDim>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine>(conf);
+        }
+        else
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim>(conf);
+        }
+    }
+    catch (std::exception& e)
+    {
+        std::cerr << "Exception: " << e.what() << "\n";
+    }
+
+    return 0;
+}
+
+/*
+class FADctrlDim : public StateMachineFAD<StateMachineDim>
+{
+public:
+FADctrlDim(const std::string &name="DATA_LOGGER", std::ostream &out=std::cout)
+: StateMachineFAD<StateMachineDim>(out, name) { }
+};
+
+ class FADctrlLocalShell : public StateMachineFAD<StateMachine>
+{
+public:
+    ostream &win;
+
+    FADctrlLocalShell(std::ostream &out, std::ostream &out2)
+        : StateMachineFAD<StateMachine>(out), win(out2) { }
+
+    FADctrlLocalShell(std::ostream &out=std::cout)
+        : StateMachineFAD<StateMachine>(out), win(out) { }
+
+};
+*/
Index: branches/testFACT++branch/src/dimctrl.cc
===================================================================
--- branches/testFACT++branch/src/dimctrl.cc	(revision 18277)
+++ branches/testFACT++branch/src/dimctrl.cc	(revision 18277)
@@ -0,0 +1,140 @@
+#include "StateMachineDimControl.h"
+
+//#include <sys/stat.h>
+
+#include "RemoteControl.h"
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+namespace fs = boost::filesystem;
+
+template<class T>
+int RunShell(Configuration &conf)
+{
+#if BOOST_VERSION < 104600
+    const string fname = fs::path(conf.GetName()).filename();
+#else
+    const string fname = fs::path(conf.GetName()).filename().string();
+#endif
+
+    StateMachineDimControl::fIsServer = fname=="dimserver";
+    return Main::execute<T, StateMachineDimControl>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+#if BOOST_VERSION < 104600
+    const string fname = fs::path(conf.GetName()).filename();
+#else
+    const string fname = fs::path(conf.GetName()).filename().string();
+#endif
+
+    po::options_description control("Options ("+fname+")");
+    control.add_options()
+        ("force-console", po_switch(),     "Forces console mode in server-mode.")
+        ("debug",         po_bool(false),  "Print the labels for debugging purpose")
+        ("user,u",        var<string>(""), "A user name - just for logging purposes (default is ${USER})")
+        ("JavaScript.*",  var<string>(),   "Additional arguments which are provided to JavaScripts started in a dimctrl server via the START command")
+        ;
+
+    if (fname!="dimserver")
+    {
+        control.add_options()
+            ("batch",   var<string>(), "Start a batch script with the given name at the given label (script.dim[:N]) on the dimctrl-server")
+            ("start",   var<string>(), "Start a java script with the given name on the dimctrl-server")
+            ("stop",    po_switch(),   "Stop a currently running script on the dimctrl-server")
+            ("interrupt", var<string>()->implicit_value(""), "Send an interrupt request (IRQ) to a running JavaScript.")
+            ("restart", var<string>(), "Send 'EXIT 126' to the given server")
+            ("msg",     var<string>(), "Send a message to the chat server.")
+            ;
+    }
+
+    conf.AddEnv("user", "USER");
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The dim control is a central master for the dim network.\n"
+        "\n"
+        "The program can be started as a dim server, so that it is visible "
+        "in the dim network to other clients. If started as a client (dimctrl), "
+        "it can only interact passively with the dim network. The usual case "
+        "should be to have one server running (dimserver) and control it from "
+        "a dimctrl started.\n"
+        "\n"
+        "Usage: dimctrl [-c type] [OPTIONS]\n"
+        "  or:  dimctrl [OPTIONS]\n"
+        "  or:  dimserver [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineDimControl>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    //chmod(argv[0], 04775);
+
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    if (conf.Get<bool>("force-console") && !conf.Has("console"))
+        throw runtime_error("--force-console must be used with --console/-c");
+
+#if BOOST_VERSION < 104600
+    const string fname = fs::path(conf.GetName()).filename();
+#else
+    const string fname = fs::path(conf.GetName()).filename().string();
+#endif
+
+    if (fname=="dimserver" && !conf.Get<bool>("force-console"))
+        conf.Remove("console");
+
+    if (!conf.Has("console"))
+        return RunShell<RemoteStream>(conf);
+
+    if (conf.Get<int>("console")==0)
+        return RunShell<RemoteShell>(conf);
+    else
+        return RunShell<RemoteConsole>(conf);
+}
Index: branches/testFACT++branch/src/dns.c
===================================================================
--- branches/testFACT++branch/src/dns.c	(revision 18277)
+++ branches/testFACT++branch/src/dns.c	(revision 18277)
@@ -0,0 +1,15 @@
+#include <stdlib.h>
+
+extern const char *GetLocalIp();
+
+int local_main(int argc, char **argv);
+
+int main(int argc, char **argv)
+{
+    setenv("DIM_HOST_NODE", GetLocalIp(), 1);
+
+    return local_main(argc, argv);
+}
+
+#define main local_main
+#include "dim/src/dns.c"
Index: branches/testFACT++branch/src/drivectrl.cc
===================================================================
--- branches/testFACT++branch/src/drivectrl.cc	(revision 18277)
+++ branches/testFACT++branch/src/drivectrl.cc	(revision 18277)
@@ -0,0 +1,1737 @@
+#include <boost/regex.hpp>
+
+#ifdef HAVE_SQL
+#include "Database.h"
+#endif
+
+#include "FACT.h"
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Timers.h"
+#include "Console.h"
+
+#include "HeadersDrive.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+using namespace Drive;
+
+// ------------------------------------------------------------------------
+
+class ConnectionDrive : public Connection
+{
+    int  fState;
+
+    bool fIsVerbose;
+
+    // --verbose
+    // --hex-out
+    // --dynamic-out
+    // --load-file
+    // --leds
+    // --trigger-interval
+    // --physcis-coincidence
+    // --calib-coincidence
+    // --physcis-window
+    // --physcis-window
+    // --trigger-delay
+    // --time-marker-delay
+    // --dead-time
+    // --clock-conditioner-r0
+    // --clock-conditioner-r1
+    // --clock-conditioner-r8
+    // --clock-conditioner-r9
+    // --clock-conditioner-r11
+    // --clock-conditioner-r13
+    // --clock-conditioner-r14
+    // --clock-conditioner-r15
+    // ...
+
+    virtual void UpdatePointing(const Time &, const array<double, 2> &)
+    {
+    }
+
+    virtual void UpdateTracking(const Time &, const array<double, 8> &)
+    {
+    }
+
+    virtual void UpdateStatus(const Time &, const array<uint8_t, 3> &)
+    {
+    }
+
+    virtual void UpdateStarguider(const Time &, const DimStarguider &)
+    {
+    }
+
+    virtual void UpdateTPoint(const Time &, const DimTPoint &, const string &)
+    {
+    }
+
+public:
+    virtual void UpdateSource(const string & = "", bool = false)
+    {
+    }
+    virtual void UpdateSource(const array<double, 6> &, const string& = "")
+    {
+    }
+
+protected:
+    map<uint16_t, int> fCounter;
+
+    ba::streambuf fBuffer;
+
+public:
+    static Time ReadTime(istream &in)
+    {
+        uint16_t y, m, d, hh, mm, ss, ms;
+        in >> y >> m >> d >> hh >> mm >> ss >> ms;
+
+        return Time(y, m, d, hh, mm, ss, ms*1000);
+    }
+
+    static double ReadAngle(istream &in)
+    {
+        char     sgn;
+        uint16_t d, m;
+        float    s;
+
+        in >> sgn >> d >> m >> s;
+
+        const double ret = ((60.0 * (60.0 * (double)d + (double)m) + s))/3600.;
+        return sgn=='-' ? -ret : ret;
+    }
+
+    double GetDevAbs(double nomzd, double meszd, double devaz)
+    {
+        nomzd *= M_PI/180;
+        meszd *= M_PI/180;
+        devaz *= M_PI/180;
+
+        const double x = sin(meszd) * sin(nomzd) * cos(devaz);
+        const double y = cos(meszd) * cos(nomzd);
+
+        return acos(x + y) * 180/M_PI;
+    }
+
+    uint16_t fDeviationLimit;
+    uint16_t fDeviationCounter;
+    uint16_t fDeviationMax;
+
+    vector<double> fDevBuffer;
+    uint64_t       fDevCount;
+
+    uint64_t fTrackingCounter;
+
+    void ProcessDriveStatus(const string &line)
+    {
+        Message(line);
+    }
+
+    bool ProcessStargReport(const string &line)
+    {
+        istringstream stream(line);
+
+        // 0: Error
+        // 1: Standby
+        // 2: Monitoring
+        uint16_t status1;
+        stream >> status1;
+        /*const Time t1 = */ReadTime(stream);
+
+        uint16_t status2;
+        stream >> status2;
+        /*const Time t2 = */ReadTime(stream);
+
+        double misszd, missaz;
+        stream >> misszd >> missaz;
+
+        const double zd = ReadAngle(stream);
+        const double az = ReadAngle(stream);
+
+        double cx, cy;
+        stream >> cx >> cy;
+
+        int ncor;
+        stream >> ncor;
+
+        double bright, mjd;
+        stream >> bright >> mjd;
+
+        int nled, nring, nstars;
+        stream >> nled >> nring >> nstars;
+
+        if (stream.fail())
+            return false;
+
+        DimStarguider data;
+
+        data.fMissZd = misszd;
+        data.fMissAz = missaz;
+        data.fNominalZd = zd;
+        data.fNominalAz = az;
+        data.fCenterX = cx;
+        data.fCenterY = cy;
+        data.fNumCorrelated = ncor;
+        data.fBrightness = bright;
+        data.fNumLeds = nled;
+        data.fNumRings = nring;
+        data.fNumStars = nstars;
+
+        UpdateStarguider(Time(mjd), data);
+
+        return true;
+    }
+
+    bool ProcessTpointReport(const string &line)
+    {
+        istringstream stream(line);
+
+        uint16_t status1;
+        stream >> status1;
+        const Time t1 = ReadTime(stream);
+
+        uint16_t status2;
+        stream >> status2;
+        /*const Time t2 =*/ ReadTime(stream);
+
+        char type;
+        stream >> type;
+        if (type != 'T')
+            return false;
+
+        double az1, alt1, az2, alt2, ra, dec, dzd, daz;
+        stream >> az1 >> alt1 >> az2 >> alt2 >> ra >> dec >> dzd >> daz;
+
+        // c: center, s:start
+        double mjd, cmag, smag, cx, cy, sx, sy;
+        stream >> mjd >> cmag >> smag >> cx >> cy >> sx >> sy;
+
+        int nled, nring, nstar, ncor;
+        stream >> nled >> nring >> nstar >> ncor;
+
+        double bright, mag;
+        stream >> bright >> mag;
+
+        string name;
+        stream >> name;
+
+        if (stream.fail())
+            return false;
+
+        DimTPoint tpoint;
+
+        tpoint.fRa         = ra;
+        tpoint.fDec        = dec;
+
+        tpoint.fNominalZd  = 90-alt1-dzd;
+        tpoint.fNominalAz  = az1 +daz;
+
+        tpoint.fPointingZd = 90-alt1;
+        tpoint.fPointingAz = az1;
+
+        tpoint.fFeedbackZd = 90-alt2;
+        tpoint.fFeedbackAz = az2;
+
+        tpoint.fNumLeds    = nled;
+        tpoint.fNumRings   = nring;
+
+        tpoint.fCenterX    = cx;
+        tpoint.fCenterY    = cy;
+        tpoint.fCenterMag  = cmag;
+
+        tpoint.fStarX      = sx;
+        tpoint.fStarY      = sy;
+        tpoint.fStarMag    = smag;
+
+        tpoint.fRealMag    = mag;
+
+        UpdateTPoint(t1, tpoint, name);
+
+        return true;
+    }
+
+    bool ProcessDriveReport(const string &line)
+    {
+        // DRIVE-REPORT M1
+        // 01 2011 05 14 11 31 19 038
+        // 02 1858 11 17 00 00 00 000
+        // + 000 00 000 + 000 00 000
+        // + 000 00 000
+        // 55695.480081
+        // + 000 00 000 + 000 00 000
+        // + 000 00 000 + 000 00 000
+        // 0000.000 0000.000
+        // 0 2
+
+        // status
+        // year month day hour minute seconds millisec
+        // year month day hour minute seconds millisec
+        // ra(+ h m s) dec(+ d m s) ha(+ h m s)
+        // mjd
+        // zd(+ d m s) az(+ d m s)
+        // zd(+ d m s) az(+ d m s)
+        // zd_err az_err
+        // armed(0=unlocked, 1=locked)
+        // stgmd(0=none, 1=starguider, 2=starguider off)
+        istringstream stream(line);
+
+        uint16_t status1;
+        stream >> status1;
+        const Time t1 = ReadTime(stream);
+
+        uint16_t status2;
+        stream >> status2;
+        /*const Time t2 =*/ ReadTime(stream);
+
+        const double ra  = ReadAngle(stream);
+        const double dec = ReadAngle(stream);
+        const double ha  = ReadAngle(stream);
+
+        double mjd;
+        stream >> mjd;
+
+        const double zd1 = ReadAngle(stream);  // Nominal (zd/az asynchronous, dev  synchronous, mjd  synchronous with zd)
+        const double az1 = ReadAngle(stream);  // Nominal (zd/az asynchronous, dev  synchronous, mjd  synchronous with z)
+        const double zd2 = ReadAngle(stream);  // Masured (zd/az  synchronous, dev asynchronous, mjd asynchronous)
+        const double az2 = ReadAngle(stream);  // Measurd (zd/az  synchronous, dev asynchronous, mjd asynchronous)
+
+        double zd_err, az_err;
+        stream >> zd_err;                      // Deviation = Nominal - Measured
+        stream >> az_err;                      // Deviation = Nominal - Measured
+
+        uint16_t armed, stgmd;
+        stream >> armed;
+        stream >> stgmd;
+
+        uint32_t pdo3;
+        stream >> hex >> pdo3;
+
+        if (stream.fail())
+            return false;
+
+        // Status 0: Error
+        // Status 1: Stopped
+        // Status 3: Stopping || Moving
+        // Status 4: Tracking
+        if (status1==0)
+            status1 = StateMachineImp::kSM_Error - Drive::State::kNotReady;
+
+        const bool ready = (pdo3&0xef00ef)==0xef00ef;
+        if (!ready)
+            fState = Drive::State::kNotReady;
+        else
+            fState = status1==1 ?
+                Drive::State::kReady+armed :
+                Drive::State::kNotReady+status1;
+
+        // kDisconnected = 1,
+        // kConnected,
+        // kNotReady,
+        // kReady,
+        // kArmed,
+        // kMoving,
+        // kTracking,
+        // kOnTrack,
+
+        // pdo3:
+        //   1 Ab
+        //   2 1
+        //   4 Emergency
+        //   8 OverVolt
+        //  10 Move (Drehen-soll)
+        //  20 Af
+        //  40 1
+        //  80 Power on Az
+        // ------------------
+        // 100 NOT UPS Alarm
+        // 200 UPS on Battery
+        // 400 UPS charging
+
+        // Power cut: 2ef02ef
+        // charging:  4ef04ef
+
+        // Convert to deg
+        zd_err /= 3600;
+        az_err /= 3600;
+
+        // Calculate absolut deviation on the sky
+
+        const double dev = GetDevAbs(zd1, zd1-zd_err, az_err)*3600;
+
+        fDevBuffer[fDevCount++%5] = dev;
+
+        const uint8_t cnt    = fDevCount<5 ? fDevCount : 5;
+        const double  avgdev = accumulate(fDevBuffer.begin(), fDevBuffer.begin()+cnt, 0)/cnt;
+
+        // If any other state than tracking or a deviation
+        // larger than 60, reset the counter
+        if (fState!=State::kTracking || avgdev>fDeviationLimit)
+            fTrackingCounter = 0;
+        else
+            fTrackingCounter++;
+
+        // If in tracking, at least five consecutive reports (5s)
+        // must be below 60arcsec deviation, this is considered OnTrack
+        if (fState==State::kTracking && fTrackingCounter>=fDeviationCounter)
+            fState = State::kOnTrack;
+
+        // Having th state as Tracking will reset the counter
+        if (fState==State::kOnTrack && avgdev>fDeviationMax)
+            fState = State::kTracking;
+
+        if (fState!=State::kTracking && fState!=State::kOnTrack)
+            fDevCount = 0;
+
+        // 206 206         ce ce       pwr vlt emcy fs        |  pwr vlt emcy fs
+        // 239 239         ef ef       pwr vlt emcy fs bb rf  |  pwr vlt emcy fs bb rf
+        // 111  78         6f 4e           vlt emcy fs bb rf  |          emcy fs bb
+
+        /*
+        fArmed     = data[3]&0x01; // armed status
+        fPosActive = data[3]&0x02; // positioning active
+        fRpmActive = data[3]&0x04; // RPM mode switched on
+                  // data[3]&0x08; //  - unused -
+                  // data[3]&0x10; //  - unused -
+                  // data[3]&0x20; //  - unused -
+        //fInControl = data[3]&0x40; // motor uncontrolled
+                  // data[3]&0x80; // axis resetted (after errclr, motor stop, motor on)
+
+        fStatus = data[3];
+    }
+
+    const LWORD_t stat = data[0] | (data[1]<<8);
+    if (fStatusPdo3!=stat)
+    {
+        gLog << inf << MTime(-1) << ": " << GetNodeName() << " - PDO3(0x" << hex << (int)stat << dec << ") = ";
+        const Bool_t ready  = stat&0x001;
+        const Bool_t fuse   = stat&0x002;
+        const Bool_t emcy   = stat&0x004;
+        const Bool_t vltg   = stat&0x008;
+        const Bool_t mode   = stat&0x010;
+        const Bool_t rf     = stat&0x020;
+        const Bool_t brake  = stat&0x040;
+        const Bool_t power  = stat&0x080;
+        const Bool_t alarm  = stat&0x100;  // UPS Alarm      (FACT only)
+        const Bool_t batt   = stat&0x200;  // UPS on battery (FACT only)
+        const Bool_t charge = stat&0x400;  // UPS charging   (FACT only)
+        if (ready)  gLog << "DKC-Ready ";
+        if (fuse)   gLog << "FuseOk ";
+        if (emcy)   gLog << "EmcyOk ";
+        if (vltg)   gLog << "OvervoltOk ";
+        if (mode)   gLog << "SwitchToManualMode ";
+        if (rf)     gLog << "RF ";
+        if (brake)  gLog << "BrakeOpen ";
+        if (power)  gLog << "PowerOn ";
+        if (alarm)  gLog << "UPS-PowerLoss ";
+        if (batt)   gLog << "UPS-OnBattery ";
+        if (charge) gLog << "UPS-Charging ";
+        gLog << endl;
+
+        fStatusPdo3 = stat;
+        }*/
+
+        // ((stat1&0xffff)<<16)|(stat2&0xffff)
+                                                                              // no alarm, no batt, no charge
+        const array<uint8_t, 3> state = {{ uint8_t(pdo3>>16), uint8_t(pdo3), uint8_t(pdo3>>24) }};
+        UpdateStatus(t1, state);
+
+        const array<double, 2> point = {{ zd2, az2 }};
+        UpdatePointing(t1, point);
+
+        const array<double, 8> track =
+        {{
+            ra, dec, ha,
+            zd1, az1,
+            zd_err, az_err,
+            dev
+        }};
+        if (mjd>0)
+            UpdateTracking(Time(mjd), track);
+
+        // ---- DIM ----> t1 as event time
+        //                status1
+        //                mjd
+        //                ra/dec/ha
+        //                zd/az (nominal)
+        //                zd/az (current)
+        //                err(zd/az)
+        //                [armed] [stgmd]
+
+        // Maybe:
+        // POINTING_POSITION --> t1, zd/az (current), [armed, stgmd, status1]
+        //
+        // if (mjd>0)
+        // TRACKING_POSITION --> mjd, zd/az (nominal), err(zd/az)
+        //                       ra/dec, ha(not well defined),
+        //                       [Nominal + Error == Current]
+
+        // MJD is the time which corresponds to the nominal position
+        // t1  is the time which corresponds to the current position/HA
+
+        return true;
+    }
+
+protected:
+    void HandleReceivedReport(const boost::system::error_code& err, size_t bytes_received)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+                Warn("Connection closed by remote host (cosy).");
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+            return;
+        }
+
+        istream is(&fBuffer);
+
+        string line;
+        getline(is, line);
+
+        if (fIsVerbose)
+            Out() << line << endl;
+
+        StartReadReport();
+
+        if (line.substr(0, 13)=="DRIVE-STATUS ")
+        {
+            ProcessDriveStatus(line.substr(70));
+            return;
+        }
+
+        if (line.substr(0, 13)=="STARG-REPORT ")
+        {
+            ProcessStargReport(line.substr(16));
+            return;
+        }
+
+        if (line.substr(0, 14)=="TPOINT-REPORT ")
+        {
+            ProcessTpointReport(line.substr(17));
+            return;
+        }
+
+        if (line.substr(0, 13)=="DRIVE-REPORT ")
+        {
+            ProcessDriveReport(line.substr(16));
+            return;
+        }
+    }
+
+    void StartReadReport()
+    {
+        boost::asio::async_read_until(*this, fBuffer, '\n',
+                                      boost::bind(&ConnectionDrive::HandleReceivedReport, this,
+                                                  dummy::error, dummy::bytes_transferred));
+    }
+
+    boost::asio::deadline_timer fKeepAlive;
+
+    void KeepAlive()
+    {
+        PostMessage(string("KEEP_ALIVE"));
+
+        fKeepAlive.expires_from_now(boost::posix_time::seconds(10));
+        fKeepAlive.async_wait(boost::bind(&ConnectionDrive::HandleKeepAlive,
+                                          this, dummy::error));
+    }
+
+    void HandleKeepAlive(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "Write timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fKeepAlive.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        KeepAlive();
+    }
+
+
+private:
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        StartReadReport();
+        KeepAlive();
+    }
+
+    /*
+    void HandleReadTimeout(const bs::error_code &error)
+    {
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            stringstream str;
+            str << "Read timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose();
+            return;
+
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fInTimeout.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        Error("Timeout reading data from "+URL());
+
+        PostClose();
+    }*/
+
+
+public:
+
+    static const uint16_t kMaxAddr;
+
+public:
+    ConnectionDrive(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fState(-1), fIsVerbose(true),
+        fDeviationLimit(120), fDeviationCounter(5), fDeviationMax(240),
+        fDevBuffer(5), fDevCount(0),
+        fTrackingCounter(0), fKeepAlive(ioservice)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+    }
+
+    void SetDeviationCondition(uint16_t limit, uint16_t counter, uint16_t max)
+    {
+        fDeviationLimit   = limit;
+        fDeviationCounter = counter;
+        fDeviationMax     = max;
+    }
+
+    int GetState() const
+    {
+        if (!IsConnected())
+            return 1;
+        if (IsConnected() && fState<0)
+            return 2;
+        return fState;
+    }
+};
+
+const uint16_t ConnectionkMaxAddr = 0xfff;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimDrive : public ConnectionDrive
+{
+private:
+    DimDescribedService fDimPointing;
+    DimDescribedService fDimTracking;
+    DimDescribedService fDimSource;
+    DimDescribedService fDimTPoint;
+    DimDescribedService fDimStatus;
+
+    void UpdatePointing(const Time &t, const array<double, 2> &arr)
+    {
+        fDimPointing.setData(arr);
+        fDimPointing.Update(t);
+    }
+
+    void UpdateTracking(const Time &t,const array<double, 8> &arr)
+    {
+        fDimTracking.setData(arr);
+        fDimTracking.Update(t);
+    }
+
+    void UpdateStatus(const Time &t, const array<uint8_t, 3> &arr)
+    {
+        fDimStatus.setData(arr);
+        fDimStatus.Update(t);
+    }
+
+    void UpdateTPoint(const Time &t, const DimTPoint &data,
+                      const string &name)
+    {
+        vector<char> dim(sizeof(data)+name.length()+1);
+        memcpy(dim.data(), &data, sizeof(data));
+        memcpy(dim.data()+sizeof(data), name.c_str(), name.length()+1);
+
+        fDimTPoint.setData(dim);
+        fDimTPoint.Update(t);
+    }
+
+public:
+    ConnectionDimDrive(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionDrive(ioservice, imp),
+        fDimPointing("DRIVE_CONTROL/POINTING_POSITION", "D:1;D:1",
+                     "|Zd[deg]:Zenith distance (encoder readout)"
+                     "|Az[deg]:Azimuth angle (encoder readout)"),
+        fDimTracking("DRIVE_CONTROL/TRACKING_POSITION", "D:1;D:1;D:1;D:1;D:1;D:1;D:1;D:1",
+                     "|Ra[h]:Command right ascension"
+                     "|Dec[deg]:Command declination"
+                     "|Ha[h]:Corresponding hour angle"
+                     "|Zd[deg]:Nominal zenith distance"
+                     "|Az[deg]:Nominal azimuth angle"
+                     "|dZd[deg]:Control deviation Zd"
+                     "|dAz[deg]:Control deviation Az"
+                     "|dev[arcsec]:Absolute control deviation"),
+        fDimSource("DRIVE_CONTROL/SOURCE_POSITION", "D:1;D:1;D:1;D:1;D:1;D:1;C:31",
+                     "|Ra_src[h]:Source right ascension"
+                     "|Dec_src[deg]:Source declination"
+                     "|Ra_cmd[h]:Command right ascension"
+                     "|Dec_cmd[deg]:Command declination"
+                     "|Offset[deg]:Wobble offset"
+                     "|Angle[deg]:Wobble angle"
+                     "|Name[string]:Source name if available"),
+        fDimTPoint("DRIVE_CONTROL/TPOINT_DATA", "D:1;D:1;D:1;D:1;D:1;D:1;D:1;D:1;S:1;S:1;D:1;D:1;D:1;D:1;D:1;D:1;D:1;C",
+                   "|Ra[h]:Command right ascension"
+                   "|Dec[deg]:Command declination"
+                   "|Zd_nom[deg]:Nominal zenith distance"
+                   "|Az_nom[deg]:Nominal azimuth angle"
+                   "|Zd_cur[deg]:Current zenith distance (calculated from image)"
+                   "|Az_cur[deg]:Current azimuth angle (calculated from image)"
+                   "|Zd_enc[deg]:Feedback zenith axis (from encoder)"
+                   "|Az_enc[deg]:Feedback azimuth angle (from encoder)"
+                   "|N_leds[cnt]:Number of detected LEDs"
+                   "|N_rings[cnt]:Number of rings used to calculate the camera center"
+                   "|Xc[pix]:X position of center in CCD camera frame"
+                   "|Yc[pix]:Y position of center in CCD camera frame"
+                   "|Ic[au]:Average intensity (LED intensity weighted with their frequency of occurance in the calculation)"
+                   "|Xs[pix]:X position of start in CCD camera frame"
+                   "|Ys[pix]:Y position of star in CCD camera frame"
+                   "|Ms[mag]:Artifical magnitude of star (calculated form image))"
+                   "|Mc[mag]:Catalog magnitude of star"
+                   "|name[string]:Name of star"),
+        fDimStatus("DRIVE_CONTROL/STATUS", "C:2;C:1", "")
+
+    {
+    }
+
+    void UpdateSource(const string &name="", bool tracking=false)
+    {
+        vector<char> dat(6*sizeof(double)+31, 0);
+        strncpy(dat.data()+6*sizeof(double), name.c_str(), 30);
+
+        fDimSource.setQuality(tracking);
+        fDimSource.Update(dat);
+    }
+
+    void UpdateSource(const array<double, 6> &arr, const string &name="")
+    {
+        vector<char> dat(6*sizeof(double)+31, 0);
+        memcpy(dat.data(), arr.data(), 6*sizeof(double));
+        strncpy(dat.data()+6*sizeof(double), name.c_str(), 30);
+
+        fDimSource.setQuality(1);
+        fDimSource.Update(dat);
+    }
+
+    // A B [C] [D] E [F] G H [I] J K [L] M N O P Q R [S] T U V W [X] Y Z
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineDrive : public StateMachineAsio<T>
+{
+private:
+    S fDrive;
+
+    string fDatabase;
+
+    typedef map<string, Source> sources;
+    sources fSources;
+
+    string fLastCommand;  // Last tracking (RADEC) command
+    int fAutoResume;      // 0: disabled, 1: enables, 2: resuming
+    Time fAutoResumeTime;
+
+    // Status 0: Error
+    // Status 1: Unlocked
+    // Status 2: Locked
+    // Status 3: Stopping || Moving
+    // Status 4: Tracking
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    enum Coordinates
+    {
+        kPoint,
+        kTrackSlow,
+        kTrackFast
+    };
+
+    string AngleToStr(double angle)
+    {
+        /* Handle sign */
+        const char sgn = angle<0?'-':'+';
+
+        /* Round interval and express in smallest units required */
+        double a = round(3600. * fabs(angle)); // deg to seconds
+
+        /* Separate into fields */
+        const double ad = trunc(a/3600.);
+        a -= ad * 3600.;
+        const double am = trunc(a/60.);
+        a -= am * 60.;
+        const double as = trunc(a);
+
+        /* Return results */
+        ostringstream str;
+        str << sgn << " " << uint16_t(ad) << " " << uint16_t(am) << " " << as;
+        return str.str();
+    }
+
+    int SendCommand(const string &str)
+    {
+        // This happens if fLastCommand should be send,
+        // but the last command was not a tracking command
+        if (str.empty())
+        {
+            T::Info("Last command was not a tracking command. RESUME ignored.");
+            return T::GetCurrentState();
+        }
+
+        fLastCommand = str.compare(0, 6, "RADEC ")==0 ? str : "";
+
+        fDrive.PostMessage(str);
+        T::Message("Sending: "+str);
+
+        return T::GetCurrentState();
+    }
+
+    int TrackCelest(const string &cmd, const string &source)
+    {
+        SendCommand(cmd);
+
+        fDrive.UpdateSource(source, true);
+
+        return T::GetCurrentState();
+    }
+
+    int Park()
+    {
+        SendCommand("PREPS Park");
+        fDrive.UpdateSource("Park");
+
+        // FIXME: Go to locked state only when park position properly reached
+        return Drive::State::kLocked;
+    }
+
+    int SendStop()
+    {
+        SendCommand("STOP!");
+        fDrive.UpdateSource();
+
+        return T::GetCurrentState();
+    }
+
+    int Resume()
+    {
+        if (fLastCommand.empty())
+        {
+            T::Info("Last command was not a tracking command. RESUME ignored.");
+            return T::GetCurrentState();
+        }
+
+        
+        T::Info("Resume: "+fLastCommand);
+        return SendCommand(fLastCommand);
+    }
+
+    int SendCoordinates(const EventImp &evt, const Coordinates type)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SendCoordinates", 16))
+            return T::kSM_FatalError;
+
+        const double *dat = evt.Ptr<double>();
+
+        string command;
+
+        switch (type)
+        {
+        case kPoint:      command += "ZDAZ ";  break;
+        case kTrackSlow:  command += "RADEC "; break;
+        case kTrackFast:  command += "GRB ";   break;
+        }
+
+        if (type!=kPoint)
+        {
+            const array<double, 6> dim = {{ dat[0], dat[1], dat[0], dat[1], 0, 0 }};
+            fDrive.UpdateSource(dim);
+        }
+        else
+            fDrive.UpdateSource("", false);
+
+
+        command += AngleToStr(dat[0]) + ' ' + AngleToStr(dat[1]);
+        return SendCommand(command);
+    }
+
+    int StartWobble(const double &srcra,  const double &srcdec,
+                    const double &woboff, const double &wobang,
+                    const string name="")
+    {
+        const double ra  = srcra *M_PI/12;
+        const double dec = srcdec*M_PI/180;
+        const double off = woboff*M_PI/180;
+        const double dir = wobang*M_PI/180;
+
+        const double cosdir = cos(dir);
+        const double sindir = sin(dir);
+        const double cosoff = cos(off);
+        const double sinoff = sin(off);
+        const double cosdec = cos(dec);
+        const double sindec = sin(dec);
+
+        if (off==0)
+        {
+            const array<double, 6> dim = {{ srcra, srcdec, srcra, srcdec, 0, 0 }};
+            fDrive.UpdateSource(dim, name);
+
+            string command = "RADEC ";
+            command += AngleToStr(srcra) + ' ' + AngleToStr(srcdec);
+            return SendCommand(command);
+        }
+
+        const double sintheta = sindec*cosoff + cosdec*sinoff*cosdir;
+        if (sintheta >= 1)
+        {
+            T::Error("cos(Zd) > 1");
+            return T::GetCurrentState();
+        }
+
+        const double costheta = sqrt(1 - sintheta*sintheta);
+
+        const double cosdeltara = (cosoff - sindec*sintheta)/(cosdec*costheta);
+        const double sindeltara = sindir*sinoff/costheta;
+
+        const double ndec = asin(sintheta)*180/M_PI;
+        const double nra  = (atan2(sindeltara, cosdeltara) + ra)*12/M_PI;
+
+        const array<double, 6> dim = {{ srcra, srcdec, nra, ndec, woboff, wobang }};
+        fDrive.UpdateSource(dim, name);
+
+        string command = "RADEC ";
+        command += AngleToStr(nra) + ' ' + AngleToStr(ndec);
+        return SendCommand(command);
+    }
+
+    int Wobble(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "Wobble", 32))
+            return T::kSM_FatalError;
+
+        const double *dat = evt.Ptr<double>();
+
+        return StartWobble(dat[0], dat[1], dat[2], dat[3]);
+    }
+
+    const sources::const_iterator GetSourceFromDB(const char *ptr, const char *last)
+    {
+        if (find(ptr, last, '\0')==last)
+        {
+            T::Fatal("TrackWobble - The name transmitted by dim is not null-terminated.");
+            throw uint32_t(T::kSM_FatalError);
+        }
+
+        const string name(ptr);
+
+        const sources::const_iterator it = fSources.find(name);
+        if (it==fSources.end())
+        {
+            T::Error("Source '"+name+"' not found in list.");
+            throw uint32_t(T::GetCurrentState());
+        }
+
+        return it;
+    }
+
+    int TrackWobble(const EventImp &evt)
+    {
+        if (evt.GetSize()<=2)
+        {
+            ostringstream msg;
+            msg << "Track - Received event has " << evt.GetSize() << " bytes, but expected at least 3.";
+            T::Fatal(msg);
+            return T::kSM_FatalError;
+        }
+
+        const uint16_t wobble = evt.GetUShort();
+        if (wobble!=1 && wobble!=2)
+        {
+            ostringstream msg;
+            msg << "TrackWobble - Wobble id " << wobble << " undefined, only 1 and 2 allowed.";
+            T::Error(msg);
+            return T::GetCurrentState();
+        }
+
+        const char *ptr  = evt.Ptr<char>(2);
+        const char *last = ptr+evt.GetSize()-2;
+
+        try
+        {
+            const sources::const_iterator it = GetSourceFromDB(ptr, last);
+
+            const string &name = it->first;
+            const Source &src  = it->second;
+
+            return StartWobble(src.ra, src.dec, src.offset, src.angle[wobble-1], name);
+        }
+        catch (const uint32_t &e)
+        {
+            return e;
+        }
+    }
+
+    int StartTrackWobble(const char *ptr, size_t size, const double &offset=0, const double &angle=0)
+    {
+        const char *last = ptr+size;
+
+        try
+        {
+            const sources::const_iterator it = GetSourceFromDB(ptr, last);
+
+            const string &name = it->first;
+            const Source &src  = it->second;
+
+            return StartWobble(src.ra, src.dec, offset, angle, name);
+        }
+        catch (const uint32_t &e)
+        {
+            return e;
+        }
+
+    }
+
+    int Track(const EventImp &evt)
+    {
+        if (evt.GetSize()<=16)
+        {
+            ostringstream msg;
+            msg << "Track - Received event has " << evt.GetSize() << " bytes, but expected at least 17.";
+            T::Fatal(msg);
+            return T::kSM_FatalError;
+        }
+
+        const double *dat  = evt.Ptr<double>();
+        const char   *ptr  = evt.Ptr<char>(16);
+        const size_t  size = evt.GetSize()-16;
+
+        return StartTrackWobble(ptr, size, dat[0], dat[1]);
+    }
+
+    int TrackOn(const EventImp &evt)
+    {
+        if (evt.GetSize()==0)
+        {
+            ostringstream msg;
+            msg << "TrackOn - Received event has " << evt.GetSize() << " bytes, but expected at least 1.";
+            T::Fatal(msg);
+            return T::kSM_FatalError;
+        }
+
+        return StartTrackWobble(evt.Ptr<char>(), evt.GetSize());
+    }
+
+
+    int TakeTPoint(const EventImp &evt)
+    {
+        if (evt.GetSize()<=4)
+        {
+            ostringstream msg;
+            msg << "TakePoint - Received event has " << evt.GetSize() << " bytes, but expected at least 5.";
+            T::Fatal(msg);
+            return T::kSM_FatalError;
+        }
+
+        const float  mag  = evt.Get<float>();
+        const char  *ptr  = evt.Ptr<char>(4);
+
+        string src(ptr);
+
+        while (src.find_first_of(' ')!=string::npos)
+            src.erase(src.find_first_of(' '), 1);
+
+        SendCommand("TPOIN "+src+" "+to_string(mag));;
+
+        return T::GetCurrentState();
+    }
+
+    int SetLedBrightness(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetLedBrightness", 8))
+            return T::kSM_FatalError;
+
+        const uint32_t *led = evt.Ptr<uint32_t>();
+
+        return SendCommand("LEDS "+to_string(led[0])+" "+to_string(led[1]));
+    }
+
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fDrive.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetAutoResume(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetAutoResume", 1))
+            return T::kSM_FatalError;
+
+        fAutoResume = evt.GetBool();
+
+        return T::GetCurrentState();
+    }
+
+    int Unlock()
+    {
+        if (fDrive.GetState()==StateMachineImp::kSM_Error)
+        {
+            T::Warn("Drive in error - maybe no connection to electronics... trying to send STOP.");
+            SendStop();
+        }
+
+        return Drive::State::kNotReady;
+    }
+
+    int Print()
+    {
+        for (auto it=fSources.begin(); it!=fSources.end(); it++)
+        {
+            const string &name = it->first;
+            const Source &src  = it->second;
+
+            T::Out() << name << ",";
+            T::Out() << src.ra       << "," << src.dec      << "," << src.offset << ",";
+            T::Out() << src.angle[0] << "," << src.angle[1] << endl;
+        }
+        return T::GetCurrentState();
+    }
+
+    int ReloadSources()
+    {
+        try
+        {
+            ReadDatabase();
+        }
+        catch (const exception &e)
+        {
+            T::Error("Reading sources from databse failed: "+string(e.what()));
+        }
+        return T::GetCurrentState();
+    }
+
+    int Disconnect()
+    {
+        // Close all connections
+        fDrive.PostClose(false);
+
+        /*
+         // Now wait until all connection have been closed and
+         // all pending handlers have been processed
+         poll();
+         */
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fDrive.PostClose(false);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        ba::io_service::poll();
+
+        if (evt.GetBool())
+            fDrive.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fDrive.PostClose(true);
+
+        return T::GetCurrentState();
+    }
+
+    Time fSunRise;
+    /*
+    int ShiftSunRise()
+    {
+        const Time sunrise = fSunRise;
+
+        fSunRise = Time().GetNextSunRise();
+
+        if (sunrise==fSunRise)
+            return Drive::State::kLocked;
+
+        ostringstream msg;
+        msg << "Next sun-rise will be at " << fSunRise;
+        T::Info(msg);
+
+        return Drive::State::kLocked;
+    }*/
+
+    int Execute()
+    {
+        /*
+        if (T::GetCurrentState()==Drive::State::kLocked)
+            return ShiftSunRise();
+
+        if (T::GetCurrentState()>Drive::State::kLocked)
+        {
+            if (Time()>fSunRise)
+                return Park();
+        }*/
+
+        const Time now;
+
+
+        if (now>fSunRise)
+        {
+            if (T::GetCurrentState()>Drive::State::kLocked)
+                return Park();
+
+            if (T::GetCurrentState()==Drive::State::kLocked)
+            {
+                fSunRise = now.GetNextSunRise();
+
+                ostringstream msg;
+                msg << "Next sun-rise will be at " << fSunRise;
+                T::Info(msg);
+
+                return Drive::State::kLocked;
+            }
+        }
+
+        if (T::GetCurrentState()==Drive::State::kLocked)
+            return Drive::State::kLocked;
+
+        const int state = fDrive.GetState();
+
+        if (!fLastCommand.empty())
+        {
+            // If auto resume is enabled and the drive is in error,
+            // resume tracking
+            if (state==StateMachineImp::kSM_Error)
+            {
+                if (fAutoResume==1)
+                {
+                    Resume();
+                    fAutoResume = 2;
+                    fAutoResumeTime = now;
+                }
+
+                if (fAutoResume==2 && fAutoResumeTime+boost::posix_time::seconds(5)<now)
+                {
+                    Resume();
+                    fAutoResume = 3;
+                }
+            }
+            else
+            {
+                // If drive got out of the error state,
+                // enable auto resume again
+                if (fAutoResume>1)
+                    fAutoResume = 1;
+            }
+        }
+
+        return state;
+    }
+
+
+public:
+    StateMachineDrive(ostream &out=cout) :
+        StateMachineAsio<T>(out, "DRIVE_CONTROL"), fDrive(*this, *this),
+        fAutoResume(false), fSunRise(Time().GetNextSunRise())
+    {
+        // State names
+        T::AddStateName(State::kDisconnected, "Disconnected",
+                     "No connection to cosy");
+
+        T::AddStateName(State::kConnected, "Connected",
+                        "Cosy connected, drive stopped");
+
+        T::AddStateName(State::kNotReady, "NotReady",
+                        "Drive system not ready for movement");
+
+        T::AddStateName(State::kLocked, "Locked",
+                        "Drive system is locked (will not accept commands)");
+
+        T::AddStateName(State::kReady, "Ready",
+                        "Drive system ready for movement");
+
+        T::AddStateName(State::kArmed, "Armed",
+                        "Cosy armed, drive stopped");
+
+        T::AddStateName(State::kMoving, "Moving",
+                        "Telescope moving");
+
+        T::AddStateName(State::kTracking, "Tracking",
+                        "Telescope is in tracking mode");
+
+        T::AddStateName(State::kOnTrack, "OnTrack",
+                        "Telescope tracking stable");
+
+        // State::kIdle
+        // State::kArmed
+        // State::kMoving
+        // State::kTracking
+
+        // Init
+        // -----------
+        // "ARM lock"
+        // "STGMD off"
+
+        /*
+         [ ] WAIT   -> WM_WAIT
+         [x] STOP!  -> WM_STOP
+         [x] RADEC  ra(+ d m s.f)  dec(+ d m s.f)
+         [x] GRB    ra(+ d m s.f)  dec(+ d m s.f)
+         [x] ZDAZ   zd(+ d m s.f)  az (+ d m s.f)
+         [ ] CELEST id offset angle
+         [ ] MOON   wobble offset
+         [ ] PREPS  string
+         [ ] TPOIN  star mag
+         [ ] ARM    lock/unlock
+         [ ] STGMD  on/off
+         */
+
+        // Drive Commands
+        T::AddEvent("MOVE_TO", "D:2", State::kArmed)  // ->ZDAZ
+            (bind(&StateMachineDrive::SendCoordinates, this, placeholders::_1, kPoint))
+            ("Move the telescope to the given local coordinates"
+             "|Zd[deg]:Zenith distance"
+             "|Az[deg]:Azimuth");
+
+        T::AddEvent("TRACK", "D:2", State::kArmed, State::kTracking, State::kOnTrack)   // ->RADEC/GRB
+            (bind(&StateMachineDrive::SendCoordinates, this, placeholders::_1, kTrackSlow))
+            ("Move the telescope to the given sky coordinates and start tracking them"
+             "|Ra[h]:Right ascension"
+             "|Dec[deg]:Declination");
+
+        T::AddEvent("WOBBLE", "D:4", State::kArmed, State::kTracking, State::kOnTrack)   // ->RADEC/GRB
+            (bind(&StateMachineDrive::Wobble, this, placeholders::_1))
+            ("Move the telescope to the given wobble position around the given sky coordinates and start tracking them"
+             "|Ra[h]:Right ascension"
+             "|Dec[deg]:Declination"
+             "|Offset[deg]:Wobble offset"
+             "|Angle[deg]:Wobble angle");
+
+        T::AddEvent("TRACK_SOURCE", "D:2;C", State::kArmed, State::kTracking, State::kOnTrack)   // ->RADEC/GRB
+            (bind(&StateMachineDrive::Track, this, placeholders::_1))
+            ("Move the telescope to the given wobble position around the given source and start tracking"
+             "|Offset[deg]:Wobble offset"
+             "|Angle[deg]:Wobble angle"
+             "|Name[string]:Source name");
+
+        T::AddEvent("TRACK_WOBBLE", "S:1;C", State::kArmed, State::kTracking, State::kOnTrack)   // ->RADEC/GRB
+            (bind(&StateMachineDrive::TrackWobble, this, placeholders::_1))
+            ("Move the telescope to the given wobble position around the given source and start tracking"
+             "|id:Wobble angle id (1 or 2)"
+             "|Name[string]:Source name");
+
+        T::AddEvent("TRACK_ON", "C", State::kArmed, State::kTracking, State::kOnTrack)   // ->RADEC/GRB
+            (bind(&StateMachineDrive::TrackOn, this, placeholders::_1))
+            ("Move the telescope to the given position and start tracking"
+             "|Name[string]:Source name");
+
+        T::AddEvent("RESUME", StateMachineImp::kSM_Error)
+            (bind(&StateMachineDrive::Resume, this))
+            ("If drive is in Error state, this can b used to resume the last tracking command, if the last command sent to cosy was a tracking command.");
+
+        T::AddEvent("MOON", State::kArmed, State::kTracking, State::kOnTrack)
+            (bind(&StateMachineDrive::TrackCelest, this, "MOON 0 0", "Moon"))
+            ("Start tracking the moon");
+        T::AddEvent("VENUS", State::kArmed, State::kTracking, State::kOnTrack)
+            (bind(&StateMachineDrive::TrackCelest, this, "CELEST 2 0 0", "Venus"))
+            ("Start tracking Venus");
+        T::AddEvent("MARS", State::kArmed, State::kTracking, State::kOnTrack)
+            (bind(&StateMachineDrive::TrackCelest, this, "CELEST 4 0 0", "Mars"))
+            ("Start tracking Mars");
+        T::AddEvent("JUPITER", State::kArmed, State::kTracking, State::kOnTrack)
+            (bind(&StateMachineDrive::TrackCelest, this, "CELEST 5 0 0", "Jupiter"))
+            ("Start tracking Jupiter");
+        T::AddEvent("SATURN", State::kArmed, State::kTracking, State::kOnTrack)
+            (bind(&StateMachineDrive::TrackCelest, this, "CELEST 6 0 0", "Saturn"))
+            ("Start tracking Saturn");
+
+        T::AddEvent("PARK", State::kArmed, State::kMoving, State::kTracking, State::kOnTrack, 0x100)
+            (bind(&StateMachineDrive::Park, this))
+            ("Park the telescope");
+
+        T::AddEvent("TAKE_TPOINT")
+            (bind(&StateMachineDrive::SendCommand, this, "TPOIN FACT 0"))
+            ("Take a TPoint");
+
+        T::AddEvent("TPOINT", "F:1;C")
+            (bind(&StateMachineDrive::TakeTPoint, this, placeholders::_1))
+            ("Take a TPoint (given values will be written to the TPoint files)"
+             "|mag[float]:Magnitude of the star"
+             "|name[string]:Name of the star");
+
+        T::AddEvent("SET_LED_BRIGHTNESS", "I:2")
+            (bind(&StateMachineDrive::SetLedBrightness, this, placeholders::_1))
+            ("Set the LED brightness of the top and bottom leds"
+             "|top[au]:Allowed range 0-32767 for top LEDs"
+             "|bot[au]:Allowed range 0-32767 for bottom LEDs");
+
+        T::AddEvent("LEDS_OFF")
+            (bind(&StateMachineDrive::SendCommand, this, "LEDS 0 0"))
+            ("Switch off TPoint LEDs");
+
+        T::AddEvent("STOP")
+            (bind(&StateMachineDrive::SendStop, this))
+            ("Stop any kind of movement.");
+
+//        T::AddEvent("ARM", State::kConnected)
+//            (bind(&StateMachineSendCommand, this, "ARM lock"))
+//            ("");
+
+        T::AddEvent("UNLOCK", Drive::State::kLocked)
+            (bind(&StateMachineDrive::Unlock, this))
+            ("Unlock locked state.");
+
+        T::AddEvent("SET_AUTORESUME", "B:1")
+            (bind(&StateMachineDrive::SetAutoResume, this, placeholders::_1))
+            ("Enable/disable auto resume"
+             "|resume[bool]:if enabled, drive is tracking and goes to error state, the last tracking command is repeated automatically.");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B:1")
+            (bind(&StateMachineDrive::SetVerbosity, this, placeholders::_1))
+            ("Set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+
+        // Conenction commands
+        T::AddEvent("DISCONNECT", State::kConnected, State::kArmed)
+            (bind(&StateMachineDrive::Disconnect, this))
+            ("disconnect from ethernet");
+
+        T::AddEvent("RECONNECT", "O", State::kDisconnected, State::kConnected, State::kArmed)
+            (bind(&StateMachineDrive::Reconnect, this, placeholders::_1))
+            ("(Re)connect Ethernet connection to cosy, a new address can be given"
+             "|[host][string]:new ethernet address in the form <host:port>");
+
+
+        T::AddEvent("PRINT")
+            (bind(&StateMachineDrive::Print, this))
+            ("Print source list.");
+
+        T::AddEvent("RELOAD_SOURCES")
+            (bind(&StateMachineDrive::ReloadSources, this))
+            ("Reload sources from database after database has changed..");
+
+        fDrive.StartConnect();
+    }
+
+    void SetEndpoint(const string &url)
+    {
+        fDrive.SetEndpoint(url);
+    }
+
+    bool AddSource(const string &name, const Source &src)
+    {
+        const auto it = fSources.find(name);
+        if (it!=fSources.end())
+            T::Warn("Source '"+name+"' already in list... overwriting.");
+
+        fSources[name] = src;
+        return it==fSources.end();
+    }
+
+    void ReadDatabase(bool print=true)
+    {
+#ifdef HAVE_SQL
+        Database db(fDatabase);
+
+        T::Message("Connected to '"+db.uri()+"'");
+
+        const mysqlpp::StoreQueryResult res =
+            db.query("SELECT fSourceName, fRightAscension, fDeclination, fWobbleOffset, fWobbleAngle0, fWobbleAngle1 FROM Source").store();
+
+        fSources.clear();
+        for (vector<mysqlpp::Row>::const_iterator v=res.begin(); v<res.end(); v++)
+        {
+            const string name = (*v)[0].c_str();
+
+            Source src;
+            src.ra  = (*v)[1];
+            src.dec = (*v)[2];
+            src.offset = (*v)[3];
+            src.angle[0] = (*v)[4];
+            src.angle[1] = (*v)[5];
+            AddSource(name, src);
+
+            if (!print)
+                continue;
+
+            ostringstream msg;
+            msg << " " << name << setprecision(8) << ":   Ra=" << src.ra << "h Dec=" << src.dec << "deg";
+            msg << " Wobble=[" << src.offset << "," << src.angle[0] << "," << src.angle[1] << "]";
+            T::Message(msg);
+        }
+#else
+        T::Warn("MySQL support not compiled into the program.");
+#endif
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        if (!fSunRise)
+            return 1;
+
+        fDrive.SetVerbose(!conf.Get<bool>("quiet"));
+
+        const vector<string> &vec = conf.Vec<string>("source");
+
+        for (vector<string>::const_iterator it=vec.begin(); it!=vec.end(); it++)
+        {
+            istringstream stream(*it);
+
+            string name;
+
+            int i=0;
+
+            Source src;
+
+            string buffer;
+            while (getline(stream, buffer, ','))
+            {
+                istringstream is(buffer);
+
+                switch (i++)
+                {
+                case 0: name = buffer; break;
+                case 1: src.ra  = ConnectionDrive::ReadAngle(is); break;
+                case 2: src.dec = ConnectionDrive::ReadAngle(is); break;
+                case 3: is >> src.offset; break;
+                case 4: is >> src.angle[0]; break;
+                case 5: is >> src.angle[1]; break;
+                }
+
+                if (is.fail())
+                    break;
+            }
+
+            if (i==3 || i==6)
+            {
+                AddSource(name, src);
+                continue;
+            }
+
+            T::Warn("Resource 'source' not correctly formatted: '"+*it+"'");
+        }
+
+        fDrive.SetDeviationCondition(conf.Get<uint16_t>("deviation-limit"),
+                                     conf.Get<uint16_t>("deviation-count"),
+                                     conf.Get<uint16_t>("deviation-max"));
+
+        fAutoResume = conf.Get<bool>("auto-resume");
+
+        if (conf.Has("source-database"))
+        {
+            fDatabase = conf.Get<string>("source-database");
+            ReadDatabase();
+        }
+
+        if (fSunRise.IsValid())
+        {
+            ostringstream msg;
+            msg << "Next sun-rise will be at " << fSunRise;
+            T::Message(msg);
+        }
+
+        // The possibility to connect should be last, so that
+        // everything else is already initialized.
+        SetEndpoint(conf.Get<string>("addr"));
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineDrive<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    const string def = "localhost:7404";
+
+    po::options_description control("Drive control options");
+    control.add_options()
+        ("no-dim,d",        po_switch(),        "Disable dim services")
+        ("addr,a",          var<string>(def),   "Network address of cosy")
+        ("quiet,q",         po_bool(true),      "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ("source-database", var<string>(),      "Database link as in\n\tuser:password@server[:port]/database.")
+        ("source",          vars<string>(),     "Additional source entry in the form \"name,hh:mm:ss,dd:mm:ss\"")
+        ("deviation-limit", var<uint16_t>(90),  "Deviation limit in arcsec to get 'OnTrack'")
+        ("deviation-count", var<uint16_t>(3),   "Minimum number of reported deviation below deviation-limit to get 'OnTrack'")
+        ("deviation-max",   var<uint16_t>(180), "Maximum deviation in arcsec allowed to keep status 'OnTrack'")
+        ("auto-resume",     po_bool(false),     "Enable auto result during tracking if connection is lost")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The drivectrl is an interface to cosy.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: drivectrl [-c type] [OPTIONS]\n"
+        "  or:  drivectrl [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineDrive<StateMachine,ConnectionDrive>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+            if (conf.Get<bool>("no-dim"))
+                return RunShell<LocalStream, StateMachine, ConnectionDrive>(conf);
+            else
+                return RunShell<LocalStream, StateMachineDim, ConnectionDimDrive>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionDrive>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionDrive>(conf);
+        }
+        else
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim, ConnectionDimDrive>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim, ConnectionDimDrive>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/testFACT++branch/src/dserver2.cc
===================================================================
--- branches/testFACT++branch/src/dserver2.cc	(revision 18277)
+++ branches/testFACT++branch/src/dserver2.cc	(revision 18277)
@@ -0,0 +1,333 @@
+#include <iostream>
+#include <string>
+#include <boost/asio.hpp>
+#include <boost/bind.hpp>
+#include <boost/lexical_cast.hpp>
+#include <boost/asio/deadline_timer.hpp>
+#include <boost/enable_shared_from_this.hpp>
+
+using boost::lexical_cast;
+
+#include "Time.h"
+
+using namespace std;
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+namespace dummy = ba::placeholders;
+
+using boost::lexical_cast;
+using ba::ip::tcp;
+
+int Port = 0;
+
+class tcp_connection : public ba::ip::tcp::socket, public boost::enable_shared_from_this<tcp_connection>
+{
+
+private:
+    void AsyncRead(ba::mutable_buffers_1 buffers)
+    {
+        ba::async_read(*this, buffers,
+                       boost::bind(&tcp_connection::HandleReceivedData, shared_from_this(),
+                                   dummy::error, dummy::bytes_transferred));
+    }
+
+    void AsyncWrite(ba::const_buffers_1 buffers)
+    {
+        ba::async_write(*this, buffers,
+                        boost::bind(&tcp_connection::HandleSentData, shared_from_this(),
+                                    dummy::error, dummy::bytes_transferred));
+    }
+    void AsyncWait(ba::deadline_timer &timer, int seconds,
+                               void (tcp_connection::*handler)(const bs::error_code&))// const
+    {
+        timer.expires_from_now(boost::posix_time::seconds(seconds));
+        timer.async_wait(boost::bind(handler, shared_from_this(), dummy::error));
+    }
+
+    static int inst;
+    int instance;
+    ba::deadline_timer deadline_;
+
+    std::string message_;
+    std::string message2;
+    std::string msg_in;
+
+    char mybuffer[10000];
+
+    int state;
+
+    // The constructor is prvate to force the obtained pointer to be shared
+    tcp_connection(ba::io_service& ioservice) : ba::ip::tcp::socket(ioservice),
+        instance(inst++), deadline_(ioservice)
+    {
+        deadline_.expires_at(boost::posix_time::pos_infin);
+        state=0;
+    }
+
+    // Callback when writing was successfull or failed
+    void HandleSentData(const boost::system::error_code& error, size_t bytes_transferred)
+    {
+        cout << "Data sent: (transmitted=" << bytes_transferred << ") rc=" << error.message() << " (" << error << ")" << endl;
+    }
+
+    void HandleReceivedData(const boost::system::error_code& error, size_t bytes_received)
+    {
+        string str = string(mybuffer, bytes_received);
+        cout << "Received b=" << bytes_received << ": '" << str << "' " << error.message() << " (" << error << ")" << endl;
+
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0)
+        {
+            // Close the connection
+            close();
+            deadline_.cancel();
+            return;
+        }
+
+        if (strcmp(mybuffer, "START")==0 && state==0)
+            state = 1;
+
+        if (strcmp(mybuffer, "STOP")==0 && state==1)
+            state = 0;
+
+        if (strcmp(mybuffer, "TIME")==0)
+        {
+            stringstream msg;
+            msg << "s-" << Port << ": " << Time() << " 9";
+            message2 = msg.str();
+
+            AsyncWrite(ba::buffer(message2.c_str(), 37));
+
+            cout << msg.str() << endl;
+        }
+
+        AsyncRead(ba::buffer(mybuffer, 10));
+    }
+
+    void check_deadline(const boost::system::error_code &)
+    {
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (deadline_.expires_at() <= ba::deadline_timer::traits_type::now())
+        {
+            stringstream str;
+            str << "s-" << Port << ": " << Time() << " " << state;
+
+            message_ = str.str();
+
+            // The deadline has passed. Stop the session. The other
+            // actors will terminate as soon as possible.
+            AsyncWrite(ba::buffer(message_.c_str(), 37));
+            AsyncWait(deadline_, 3, &tcp_connection::check_deadline);
+
+            cout << str.str() << endl;
+
+            return;
+        }
+
+        AsyncWait(deadline_, 3, &tcp_connection::check_deadline);
+    }
+
+public:
+    typedef boost::shared_ptr<tcp_connection> shared_ptr;
+
+    static shared_ptr create(ba::io_service& io_service)
+    {
+        return shared_ptr(new tcp_connection(io_service));
+    }
+
+    void start()
+    {
+        message_ = "This is the first msg. ";
+
+        // Ownership of buffer must be valid until Handler is called.
+
+        // Emit something to be written to the socket
+        AsyncRead(ba::buffer(mybuffer, 10));
+
+        // async_read_until
+        AsyncWrite(ba::buffer(message_));
+
+        // Whenever the time expires we will schedule a new message to be sent
+        AsyncWait(deadline_, 3, &tcp_connection::check_deadline);
+    }
+};
+
+
+int tcp_connection::inst = 0;
+
+
+class tcp_server : public tcp::acceptor
+{
+public:
+    tcp_server(ba::io_service& ioservice, int port) :
+        tcp::acceptor(ioservice, tcp::endpoint(tcp::v4(), port))
+
+    {
+        // We could start listening for more than one connection
+        // here, but since there is only one handler executed each time
+        // it would not make sense. Before one handle_accept is not
+        // finished no new handle_accept will be called.
+        // Workround: Start a new thread in handle_accept
+        start_accept();
+    }
+
+private:
+    void start_accept()
+    {
+        cout << "Start accept..." << flush;
+        tcp_connection::shared_ptr new_connection = tcp_connection::create(/*acceptor_.*/get_io_service());
+
+        // This will accept a connection without blocking
+        async_accept(*new_connection,
+                     boost::bind(&tcp_server::handle_accept,
+                                 this,
+                                 new_connection,
+                                 ba::placeholders::error));
+
+        cout << "start-done." << endl;
+    }
+
+    void handle_accept(tcp_connection::shared_ptr new_connection, const boost::system::error_code& error)
+    {
+        // The connection has been accepted and is now ready to use
+
+        // not installing a new handler will stop run()
+        cout << "Handle accept..." << flush;
+        if (!error)
+        {
+
+            new_connection->start();
+
+            // The is now an open connection/server (tcp_connection)
+            // we immediatly schedule another connection
+            // This allowed two client-connection at the same time
+            start_accept();
+        }
+        cout << "handle-done." << endl;
+    }
+};
+
+int main(int argc, const char **argv)
+{
+    try
+    {
+        ba::io_service io_service;
+
+        Port = argc==2 ? lexical_cast<int>(argv[1]) : 5000;
+
+        tcp_server server(io_service, Port);
+        //  ba::add_service(io_service, &server);
+        //  server.add_service(...);
+        cout << "Run..." << flush;
+
+        // Calling run() from a single thread ensures no concurrent access
+        // of the handler which are called!!!
+        io_service.run();
+
+        cout << "end." << endl;
+    }
+    catch (std::exception& e)
+    {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 0;
+}
+/*  ====================== Buffers ===========================
+
+char d1[128]; ba::buffer(d1));
+std::vector<char> d2(128); ba::buffer(d2);
+boost::array<char, 128> d3; by::buffer(d3);
+
+// --------------------------------
+char d1[128];
+std::vector<char> d2(128);
+boost::array<char, 128> d3;
+
+boost::array<mutable_buffer, 3> bufs1 = {
+   ba::buffer(d1),
+   ba::buffer(d2),
+   ba::buffer(d3) };
+sock.read(bufs1);
+
+std::vector<const_buffer> bufs2;
+bufs2.push_back(boost::asio::buffer(d1));
+bufs2.push_back(boost::asio::buffer(d2));
+bufs2.push_back(boost::asio::buffer(d3));
+sock.write(bufs2);
+
+
+// ======================= Read functions =========================
+
+ba::async_read_until --> delimiter
+
+streambuf buf; // Ensure validity until handler!
+by::async_read(s, buf, ....);
+
+ba::async_read(s, ba:buffer(data, size), handler);
+ // Single buffer
+ boost::asio::async_read(s,
+                         ba::buffer(data, size),
+ compl-func -->          ba::transfer_at_least(32),
+                         handler);
+
+ // Multiple buffers
+boost::asio::async_read(s, buffers,
+ compl-func -->         boost::asio::transfer_all(),
+                        handler);
+                        */
+
+// ================= Others ===============================
+
+        /*
+        strand   Provides serialised handler execution.
+        work     Class to inform the io_service when it has work to do.
+
+
+io_service::
+dispatch   Request the io_service to invoke the given handler.
+poll       Run the io_service's event processing loop to execute ready
+           handlers.
+poll_one   Run the io_service's event processing loop to execute one ready
+           handler.
+post       Request the io_service to invoke the given handler and return
+           immediately.
+reset      Reset the io_service in preparation for a subsequent run()
+           invocation.
+run        Run the io_service's event processing loop.
+run_one    Run the io_service's event processing loop to execute at most
+           one handler.
+stop       Stop the io_service's event processing loop.
+wrap       Create a new handler that automatically dispatches the wrapped
+           handler on the io_service.
+
+strand::         The io_service::strand class provides the ability to
+                 post and dispatch handlers with the guarantee that none
+                 of those handlers will execute concurrently.
+
+dispatch         Request the strand to invoke the given handler.
+get_io_service   Get the io_service associated with the strand.
+post             Request the strand to invoke the given handler and return
+                 immediately.
+wrap             Create a new handler that automatically dispatches the
+                 wrapped handler on the strand.
+
+work::           The work class is used to inform the io_service when
+                 work starts and finishes. This ensures that the io_service's run() function will not exit while work is underway, and that it does exit when there is no unfinished work remaining.
+get_io_service   Get the io_service associated with the work.
+work             Constructor notifies the io_service that work is starting.
+
+*/
+
+
Index: branches/testFACT++branch/src/evtserver.cc
===================================================================
--- branches/testFACT++branch/src/evtserver.cc	(revision 18277)
+++ branches/testFACT++branch/src/evtserver.cc	(revision 18277)
@@ -0,0 +1,375 @@
+#include <valarray>
+
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "Connection.h"
+#include "Configuration.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "LocalControl.h"
+
+#include "HeadersFAD.h"
+#include "HeadersEventServer.h"
+
+#include "externals/fits.h"
+#include "externals/nova.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+#include "DimState.h"
+
+// ------------------------------------------------------------------------
+
+class StateMachineEventServer : public StateMachineDim
+{
+    DimDescribedState fDimFadControl;
+
+    string        fAuxPath;
+    string        fOutPath;
+    uint32_t      fStartDate;
+    uint32_t      fNight;
+    uint32_t      fInterval;
+
+    fits         *fIn;
+
+    uint32_t      fQoS;
+    double        fTime;
+    //vector<float> fAvg;
+    //vector<float> fRms;
+    vector<float> fMax;
+    //vector<float> fPos;
+
+    Time fTimer;
+
+private:
+
+    int Execute()
+    {
+        if (GetCurrentState()==StateMachineImp::kSM_Ready)
+            return EventServer::State::kRunning;
+
+        // Nothing to do if not started
+        if (GetCurrentState()==EventServer::State::kIdle)
+            return EventServer::State::kIdle;
+
+        if (fDimFadControl.state()==FAD::State::kRunInProgress)
+            return EventServer::State::kStandby;
+
+        // Run only once in 5s
+        const Time now;
+        if (now<fTimer+boost::posix_time::milliseconds(fInterval))
+            return GetCurrentState();
+        fTimer = now;
+
+        // Running is only allowed when sun is up
+        const Nova::RstTime rst = Nova::GetSolarRst(now.JD()-0.5);
+        const bool isUp =
+            (rst.rise<rst.set && (now.JD()>rst.rise && now.JD()<rst.set)) ||
+            (rst.rise>rst.set && (now.JD()<rst.set  || now.JD()>rst.rise));
+
+        // FIXME: What about errors?
+        if (!isUp)
+            return EventServer::State::kStandby;
+
+        // Check if file has to be changed
+        const uint32_t night = fStartDate>0 ? fStartDate : Time().NightAsInt()-1;
+
+        if (fNight!=night)
+        {
+            fNight = night;
+
+            delete fIn;
+
+            const string name = fAuxPath + Tools::Form("/%04d/%02d/%02d/%08d.FAD_CONTROL_EVENT_DATA.fits", night/10000, (night/100)%100, night%100, night);
+
+            fIn = new fits(name);
+            if (!fIn->is_open())
+            {
+                Error(string("Failed to open "+name+": ")+strerror(errno));
+                return StateMachineImp::kSM_Error;
+            }
+
+            try
+            {
+                fIn->SetRefAddress("QoS",  fQoS);
+                fIn->SetRefAddress("Time", fTime);
+                fIn->SetVecAddress("max",  fMax);
+                //fIn->SetVecAddress(fRms);
+                //fIn->SetVecAddress(fMax);
+                //fIn->SetVecAddress(fPos);
+            }
+            catch (const runtime_error &e)
+            {
+                delete fIn;
+                fIn = 0;
+
+                Error("Failed to open "+name+": "+e.what());
+                return StateMachineImp::kSM_Error;
+            }
+
+            Info("File "+name+" open.");
+        }
+
+        if (GetCurrentState()==StateMachineImp::kSM_Error)
+            return  StateMachineImp::kSM_Error;
+
+        // Get next data event
+        vector<float> sorted;
+        while (1)
+        {
+            if (!fIn->GetNextRow())
+            {
+                fNight = 0;
+                return EventServer::State::kRunning;
+            }
+
+            // Select a
+            if (fQoS & FAD::EventHeader::kAll)
+                continue;
+
+            for (int i=0; i<1440; i++)
+                fMax[i] /= 1000;
+
+            for (int i=8; i<1440; i+=9)
+                fMax[i] = fMax[i-2];
+
+            // construct output
+            sorted = fMax;
+            sort(sorted.begin(), sorted.end());
+
+            const double med = sorted[719];
+
+            vector<float> dev(1440);
+            for (int i=0; i<1440; i++)
+                dev[i] = fabs(sorted[i]-med);
+            sort(dev.begin(), dev.end());
+
+            const double deviation = dev[uint32_t(0.682689477208650697*1440)];
+
+            // In a typical shower or muon ring, the first
+            // few pixels will have comparable brightness,
+            // in a NSB event not. Therefore, the 4th brightest
+            // pixel is a good reference.
+            if (sorted[1439-3]>med+deviation*5)
+                break;
+        }
+
+        const double scale = max(0.25f, sorted[1436]);
+
+        ostringstream out;
+        out << Time(fTime+40587).JavaDate() << '\n';
+        out << "0\n";
+        out << scale << '\n';
+        out << setprecision(3);
+        out << "DEMO\nDEMO\nDEMO\x7f";
+        //out << sorted[1439] << '\n';
+        //out << sorted[719]  << '\n';
+        //out << sorted[0]    << '\x7f';
+
+        // The valid range is from 1 to 127
+        // \0 is used to seperate different curves
+        vector<uint8_t> val(1440);
+        for (uint64_t i=0; i<1440; i++)
+        {
+            float range = nearbyint(126*fMax[i]/scale); // [-2V; 2V]
+            if (range>126)
+                range=126;
+            if (range<0)
+                range=0;
+            val[i] = (uint8_t)range;
+        }
+
+        const char *ptr = reinterpret_cast<char*>(val.data());
+        out.write(ptr, val.size()*sizeof(uint8_t));
+        out << '\x7f';
+
+        if (fOutPath=="-")
+            Out() << out.str();
+        else
+            ofstream(fOutPath+"/cam-fadcontrol-eventdata.bin") << out.str();
+
+        return EventServer::State::kRunning;
+    }
+
+    int StartServer()
+    {
+        fStartDate = 0;
+        return EventServer::State::kRunning;
+    }
+
+    int StopServer()
+    {
+        delete fIn;
+        fIn = 0;
+
+        return EventServer::State::kIdle;
+    }
+
+    int StartDate(const EventImp &evt)
+    {
+        fStartDate = evt.GetUInt();
+        return EventServer::State::kRunning;
+    }
+
+
+public:
+    StateMachineEventServer(ostream &out=cout) : StateMachineDim(out, "EVENT_SERVER"),
+        fDimFadControl("FAD_CONTROL"), fStartDate(0), fNight(0), fIn(0), fMax(1440)
+
+    {
+        fDimFadControl.Subscribe(*this);
+
+        // State names
+        AddStateName(EventServer::State::kIdle, "Idle",
+                     "Event server stopped.");
+        AddStateName(EventServer::State::kRunning, "Running",
+                     "Reading events file and writing to output.");
+        AddStateName(EventServer::State::kStandby, "Standby",
+                     "No events are processed, either the sun is down or fadctrl in kRunInProgress.");
+
+
+        AddEvent("START", EventServer::State::kIdle, EventServer::State::kRunning, StateMachineImp::kSM_Error)
+            (bind(&StateMachineEventServer::StartServer, this))
+            ("Start serving the smartfact camera file");
+
+        AddEvent("START_DATE", "I:1", EventServer::State::kIdle, EventServer::State::kRunning, StateMachineImp::kSM_Error)
+            (bind(&StateMachineEventServer::StartDate, this, placeholders::_1))
+            ("Start serving the smartfact camera file with the events from the given date"
+             "|uint32[yyyymmdd]:Integer representing the date from which the data should be read");
+
+        AddEvent("STOP", EventServer::State::kRunning, EventServer::State::kStandby, StateMachineImp::kSM_Error)
+            (bind(&StateMachineEventServer::StopServer, this))
+            ("Stop serving the smartfact camera file");
+    }
+    ~StateMachineEventServer()
+    {
+        delete fIn;
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fAuxPath  = conf.Get<string>("aux-path");
+        fOutPath  = conf.Get<string>("out-path");
+        fInterval = conf.Get<uint32_t>("interval");
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineEventServer>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Event server options");
+    control.add_options()
+        ("aux-path", var<string>("/fact/aux"), "The root path to the auxilary files.")
+        ("out-path", var<string>("www/smartfact/data"), "Path where the output camera file should be written.")
+        ("interval", var<uint32_t>(5000), "Interval of updates in milliseconds.")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The event server copies events from fits files to the smartfact data.\n"
+        "\n"
+        "Usage: evtserver [-c type] [OPTIONS]\n"
+        "  or:  evtserver [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineEventServer>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+//            if (conf.Get<bool>("no-dim"))
+//                return RunShell<LocalStream, StateMachine, ConnectionFSC>(conf);
+//            else
+                return RunShell<LocalStream>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+/*        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionFSC>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionFSC>(conf);
+        }
+        else
+*/        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell>(conf);
+            else
+                return RunShell<LocalConsole>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/testFACT++branch/src/fad.cc
===================================================================
--- branches/testFACT++branch/src/fad.cc	(revision 18277)
+++ branches/testFACT++branch/src/fad.cc	(revision 18277)
@@ -0,0 +1,771 @@
+#include <iostream>
+#include <string>
+#include <boost/asio.hpp>
+#include <boost/bind.hpp>
+#include <boost/lexical_cast.hpp>
+#include <boost/asio/deadline_timer.hpp>
+#include <boost/enable_shared_from_this.hpp>
+
+using boost::lexical_cast;
+
+#include "Time.h"
+#include "Converter.h"
+
+#include "HeadersFAD.h"
+
+#include "dis.hxx"
+#include "Dim.h"
+
+using namespace std;
+using namespace FAD;
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+namespace dummy = ba::placeholders;
+
+using boost::lexical_cast;
+using ba::ip::tcp;
+
+class tcp_connection;
+
+class Trigger : public DimCommandHandler
+{
+    DimCommand fCmd;
+
+    vector<tcp_connection*> vec;
+
+public:
+    Trigger() : fCmd("FAD/TRIGGER", "I:1", this)
+    {
+    }
+
+    void Add(tcp_connection *ptr)
+    {
+        vec.push_back(ptr);
+    }
+
+    void Remove(tcp_connection *ptr)
+    {
+        vec.erase(find(vec.begin(), vec.end(), ptr));
+    }
+
+    void commandHandler();
+};
+
+// ------------------------------------------------------------------------
+
+class tcp_connection : public ba::ip::tcp::socket, public boost::enable_shared_from_this<tcp_connection>
+{
+public:
+    static Trigger fTrigger;
+
+    const int fBoardId;
+
+    double   fStartTime;
+
+    void AsyncRead(ba::mutable_buffers_1 buffers)
+    {
+        ba::async_read(*this, buffers,
+                       boost::bind(&tcp_connection::HandleReceivedData, shared_from_this(),
+                                   dummy::error, dummy::bytes_transferred));
+    }
+
+    void AsyncWrite(ba::ip::tcp::socket *socket, const ba::const_buffers_1 &buffers)
+    {
+        ba::async_write(*socket, buffers,
+                        boost::bind(&tcp_connection::HandleSentData, shared_from_this(),
+                                    dummy::error, dummy::bytes_transferred));
+    }
+    void AsyncWait(ba::deadline_timer &timer, int seconds,
+                               void (tcp_connection::*handler)(const bs::error_code&))// const
+    {
+        timer.expires_from_now(boost::posix_time::milliseconds(seconds));
+        timer.async_wait(boost::bind(handler, shared_from_this(), dummy::error));
+    }
+
+    // The constructor is prvate to force the obtained pointer to be shared
+    tcp_connection(ba::io_service& ioservice, int boardid) : ba::ip::tcp::socket(ioservice),
+        fBoardId(boardid), fRamRoi(kNumChannels), fTriggerSendData(ioservice),
+        fTriggerEnabled(false)
+    {
+        fTrigger.Add(this);
+    }
+    void PostTrigger(uint32_t triggerid)
+    {
+        if (fTriggerEnabled)
+            get_io_service().post(boost::bind(&tcp_connection::SendData, this, triggerid));
+    }
+
+    // Callback when writing was successfull or failed
+#ifdef DEBUG_TX
+    void HandleSentData(const boost::system::error_code& error, size_t bytes_transferred)
+    {
+        cout << "Data sent[" << fBoardId << "]: (transmitted=" << bytes_transferred << ") rc=" << error.message() << " (" << error << ")" << endl;
+        fOutQueue.pop_front();
+    }
+#else
+    void HandleSentData(const boost::system::error_code&, size_t)
+    {
+        fOutQueue.pop_front();
+    }
+#endif
+
+    vector<uint16_t> fBufCommand;
+
+    vector<uint16_t> fCommand;
+
+    FAD::EventHeader   fHeader;
+    FAD::EventHeader   fRam;
+    FAD::ChannelHeader fChHeader[kNumChannels];
+
+    vector<uint16_t> fRamRoi;
+
+    ba::deadline_timer fTriggerSendData;
+
+    bool fTriggerEnabled;
+    bool fCommandSocket;
+
+    int fSocket;
+
+    deque<vector<uint16_t>> fOutQueue;
+
+    void SendData(uint32_t triggerid)
+    {
+        if (fOutQueue.size()>3)
+            return;
+
+        fHeader.fPackageLength = sizeof(EventHeader)/2+1;
+        fHeader.fEventCounter++;
+        fHeader.fTriggerCounter = triggerid;
+        fHeader.fTimeStamp = uint32_t((Time(Time::utc).UnixTime()-fStartTime)*10000);
+        fHeader.fFreqRefClock = 997+rand()/(RAND_MAX/7);
+
+        /* Trigger ID
+
+        * Byte[4]: Bit 0:    ext1
+        * Byte[4]: Bit 1:    ext2
+        * Byte[4]: Bit 2-7:  n/40
+        * Byte[5]: Bit 0: LP_1
+        * Byte[5]: Bit 1: LP_2
+        * Byte[5]: Bit 2: Pedestal
+        * Byte[5]: Bit 3:
+        * Byte[5]: Bit 4:
+        * Byte[5]: Bit 5:
+        * Byte[5]: Bit 6:
+        * Byte[5]: Bit 7: TIM source
+
+        */
+
+        for (int i=0; i<FAD::kNumTemp; i++)
+            fHeader.fTempDrs[i] = (42.+fBoardId/40.+float(rand())/RAND_MAX*5)*16;
+
+        // Header, channel header, end delimiter
+        size_t sz = sizeof(fHeader) + kNumChannels*sizeof(FAD::ChannelHeader) + 2;
+        // Data
+        for (int i=0; i<kNumChannels; i++)
+            sz += fChHeader[i].fRegionOfInterest*2;
+
+        vector<uint16_t> evtbuf;
+        evtbuf.reserve(sz);
+
+        for (int i=0; i<kNumChannels; i++)
+        {
+            fChHeader[i].fStartCell = int64_t(1023)*rand()/RAND_MAX;
+
+             vector<int16_t> data(fChHeader[i].fRegionOfInterest, -1024+0x42+i/9+fHeader.fDac[1]/32);
+
+            for (int ii=0; ii<fChHeader[i].fRegionOfInterest; ii++)
+            {
+                const int rel =  ii;
+                const int abs = (ii+fChHeader[i].fStartCell)%fChHeader[i].fRegionOfInterest;
+
+                data[rel] +=  6.*rand()/RAND_MAX +  5*exp(-rel/10); // sigma=10
+                data[rel] += 15*sin(2*3.1415*abs/512); // sigma=10
+            }
+
+            if (triggerid>0)
+            {
+                int    p    =   5.*rand()/RAND_MAX+ 20;
+                double rndm = 500.*rand()/RAND_MAX+500;
+                for (int ii=0; ii<fChHeader[i].fRegionOfInterest; ii++)
+                    data[ii] += rndm*exp(-0.5*(ii-p)*(ii-p)/25); // sigma=10
+            }
+
+            const vector<uint16_t> buf = fChHeader[i].HtoN();
+
+            evtbuf.insert(evtbuf.end(), buf.begin(), buf.end());
+            evtbuf.insert(evtbuf.end(), data.begin(), data.end());
+
+            fHeader.fPackageLength += sizeof(ChannelHeader)/2;
+            fHeader.fPackageLength += fChHeader[i].fRegionOfInterest;
+        }
+
+        evtbuf.push_back(htons(FAD::kDelimiterEnd));
+
+        const vector<uint16_t> h = fHeader.HtoN();
+
+        evtbuf.insert(evtbuf.begin(), h.begin(), h.end());
+
+        fOutQueue.push_back(evtbuf);
+
+        if (fCommandSocket)
+            AsyncWrite(this, ba::buffer(ba::const_buffer(fOutQueue.back().data(), fOutQueue.back().size()*2)));
+        else
+        {
+            if (fSockets.size()==0)
+                return;
+
+            fSocket++;
+            fSocket %= fSockets.size();
+
+            AsyncWrite(fSockets[fSocket].get(), ba::buffer(ba::const_buffer(fOutQueue.back().data(), fOutQueue.back().size()*2)));
+        }
+    }
+
+    void TriggerSendData(const boost::system::error_code &ec)
+    {
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            return;
+        }
+
+        if (ec==ba::error::basic_errors::operation_aborted)
+            return;
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fTriggerSendData.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        // The deadline has passed.
+        if (fTriggerEnabled)
+            SendData(0);
+
+        AsyncWait(fTriggerSendData, fHeader.fTriggerGeneratorPrescaler, &tcp_connection::TriggerSendData);
+    }
+
+    void HandleReceivedData(const boost::system::error_code& error, size_t bytes_received)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0)
+        {
+            // Close the connection
+            close();
+            return;
+        }
+
+        // No command received yet
+        if (fCommand.size()==0)
+        {
+            transform(fBufCommand.begin(), fBufCommand.begin()+bytes_received/2,
+                      fBufCommand.begin(), ntohs);
+
+            switch (fBufCommand[0])
+            {
+            case kCmdDrsEnable:
+            case kCmdDrsEnable+0x100:
+                fHeader.Enable(FAD::EventHeader::kDenable, fBufCommand[0]==kCmdDrsEnable);
+                cout << "-> DrsEnable " << fBoardId << " " << (fBufCommand[0]==kCmdDrsEnable) << endl;
+                break;
+
+            case kCmdDwrite:
+            case kCmdDwrite+0x100:
+                fHeader.Enable(FAD::EventHeader::kDwrite, fBufCommand[0]==kCmdDwrite);
+                cout << "-> Dwrite " << fBoardId << " " << (fBufCommand[0]==kCmdDwrite) << endl;
+                break;
+
+            case kCmdTriggerLine:
+            case kCmdTriggerLine+0x100:
+                cout << "-> Trigger line " << fBoardId << " " << (fBufCommand[0]==kCmdTriggerLine) << endl;
+                fTriggerEnabled = fBufCommand[0]==kCmdTriggerLine;
+                fHeader.Enable(FAD::EventHeader::kTriggerLine, fTriggerEnabled);
+                break;
+
+            case kCmdSclk:
+            case kCmdSclk+0x100:
+                cout << "-> Sclk " << fBoardId << endl;
+                fHeader.Enable(FAD::EventHeader::kSpiSclk, fBufCommand[0]==kCmdSclk);
+                break;
+
+            case kCmdSrclk:
+            case kCmdSrclk+0x100:
+                cout << "-> Srclk " << fBoardId << endl;
+                break;
+
+            case kCmdRun:
+            case kCmdRun+0x100:
+                fStartTime = Time(Time::utc).UnixTime();
+                cout << "-> Run " << fBoardId << endl;
+                break;
+
+            case kCmdBusyOff:
+            case kCmdBusyOff+0x100:
+                cout << "-> BusyOff " << fBoardId << " " << (fBufCommand[0]==kCmdBusyOff) << endl;
+                fHeader.Enable(FAD::EventHeader::kBusyOff, fBufCommand[0]==kCmdBusyOff);
+                break;
+
+            case kCmdBusyOn:
+            case kCmdBusyOn+0x100:
+                cout << "-> BusyOn " << fBoardId << " " << (fBufCommand[0]==kCmdBusyOn) << endl;
+                fHeader.Enable(FAD::EventHeader::kBusyOn, fBufCommand[0]==kCmdBusyOn);
+                break;
+
+            case kCmdSocket:
+            case kCmdSocket+0x100:
+                cout << "-> Socket " << fBoardId << " " << (fBufCommand[0]==kCmdSocket) << endl;
+                fCommandSocket = fBufCommand[0]==kCmdSocket;
+                fHeader.Enable(FAD::EventHeader::kSock17, !fCommandSocket);
+                break;
+
+            case kCmdContTrigger:
+            case kCmdContTrigger+0x100:
+                if (fBufCommand[0]==kCmdContTrigger)
+                    AsyncWait(fTriggerSendData, 0, &tcp_connection::TriggerSendData);
+                else
+                    fTriggerSendData.cancel();
+                fHeader.Enable(FAD::EventHeader::kContTrigger, fBufCommand[0]==kCmdContTrigger);
+                cout << "-> ContTrig " << fBoardId << " " << (fBufCommand[0]==kCmdContTrigger) << endl;
+                break;
+
+            case kCmdResetEventCounter:
+                cout << "-> ResetId " << fBoardId << endl;
+                fHeader.fEventCounter = 0;
+                break;
+
+            case kCmdSingleTrigger:
+                cout << "-> Trigger " << fBoardId << endl;
+                SendData(0);
+                break;
+
+            case kCmdWriteExecute:
+                cout << "-> Execute " << fBoardId << endl;
+                memcpy(fHeader.fDac, fRam.fDac, sizeof(fHeader.fDac));
+                for (int i=0; i<kNumChannels; i++)
+                    fChHeader[i].fRegionOfInterest = fRamRoi[i];
+                fHeader.fRunNumber = fRam.fRunNumber;
+                break;
+
+            case kCmdWriteRunNumberMSW:
+                fCommand = fBufCommand;
+                break;
+
+            case kCmdWriteRunNumberLSW:
+                fCommand = fBufCommand;
+                break;
+
+            default:
+                if (fBufCommand[0]>=kCmdWriteRoi && fBufCommand[0]<kCmdWriteRoi+kNumChannels)
+                {
+                    fCommand.resize(2);
+                    fCommand[0] = kCmdWriteRoi;
+                    fCommand[1] = fBufCommand[0]-kCmdWriteRoi;
+                    break;
+                }
+                if (fBufCommand[0]>= kCmdWriteDac && fBufCommand[0]<kCmdWriteDac+kNumDac)
+                {
+                    fCommand.resize(2);
+                    fCommand[0] = kCmdWriteDac;
+                    fCommand[1] = fBufCommand[0]-kCmdWriteDac;
+                    break;
+                }
+                if (fBufCommand[0]==kCmdWriteRate)
+                {
+                    fCommand.resize(1);
+                    fCommand[0] = kCmdWriteRate;
+                    break;
+                }
+
+                cout << "Received b=" << bytes_received << ": " << error.message() << " (" << error << ")" << endl;
+                cout << "Hex:" << Converter::GetHex<uint16_t>(&fBufCommand[0], bytes_received) << endl;
+                return;
+            }
+
+            fBufCommand.resize(1);
+            AsyncRead(ba::buffer(fBufCommand));
+            return;
+        }
+
+        transform(fBufCommand.begin(), fBufCommand.begin()+bytes_received/2,
+                  fBufCommand.begin(), ntohs);
+
+        switch (fCommand[0])
+        {
+        case kCmdWriteRunNumberMSW:
+            fRam.fRunNumber &= 0xffff;
+            fRam.fRunNumber |= fBufCommand[0]<<16;
+            cout << "-> Set RunNumber " << fBoardId << " MSW" << endl;
+            break;
+        case kCmdWriteRunNumberLSW:
+            fRam.fRunNumber &= 0xffff0000;
+            fRam.fRunNumber |= fBufCommand[0];
+            cout << "-> Set RunNumber " << fBoardId << " LSW" << endl;
+            break;
+        case kCmdWriteRoi:
+            cout << "-> Set " << fBoardId << " Roi[" << fCommand[1] << "]=" << fBufCommand[0] << endl;
+            //fChHeader[fCommand[1]].fRegionOfInterest = fBufCommand[0];
+            fRamRoi[fCommand[1]] = fBufCommand[0];
+            break;
+
+        case kCmdWriteDac:
+            cout << "-> Set " << fBoardId << " Dac[" << fCommand[1] << "]=" << fBufCommand[0] << endl;
+            fRam.fDac[fCommand[1]] = fBufCommand[0];
+            break;
+
+        case kCmdWriteRate:
+            cout << "-> Set " << fBoardId << " Rate =" << fBufCommand[0] << endl;
+            fHeader.fTriggerGeneratorPrescaler = fBufCommand[0];
+            break;
+        }
+
+        fCommand.resize(0);
+
+        fBufCommand.resize(1);
+        AsyncRead(ba::buffer(fBufCommand));
+    }
+
+public:
+    typedef boost::shared_ptr<tcp_connection> shared_ptr;
+
+    static shared_ptr create(ba::io_service& io_service, int boardid)
+    {
+        return shared_ptr(new tcp_connection(io_service, boardid));
+    }
+
+    void start()
+    {
+        // Ownership of buffer must be valid until Handler is called.
+
+        fTriggerEnabled=false;
+        fCommandSocket=true;
+
+        fHeader.fStartDelimiter = FAD::kDelimiterStart;
+        fHeader.fVersion = 0x104;
+        fHeader.fBoardId = (fBoardId%10) | ((fBoardId/10)<<8);
+        fHeader.fRunNumber = 0;
+        fHeader.fDNA = reinterpret_cast<uint64_t>(this);
+        fHeader.fTriggerGeneratorPrescaler = 100;
+        fHeader.fStatus = 0xf<<12 |
+            FAD::EventHeader::kDenable    |
+            FAD::EventHeader::kDwrite     |
+            FAD::EventHeader::kDcmLocked  |
+            FAD::EventHeader::kDcmReady   |
+            FAD::EventHeader::kSpiSclk;
+
+
+        fStartTime = Time(Time::utc).UnixTime();
+
+        for (int i=0; i<kNumChannels; i++)
+        {
+            fChHeader[i].fId = (i%9) | ((i/9)<<4);
+            fChHeader[i].fRegionOfInterest = 0;
+        }
+
+        // Emit something to be written to the socket
+        fBufCommand.resize(1);
+        AsyncRead(ba::buffer(fBufCommand));
+
+//        AsyncWait(fTriggerDynData, 1, &tcp_connection::SendDynData);
+
+//        AsyncWrite(ba::buffer(ba::const_buffer(&fHeader, sizeof(FTM::Header))));
+//        AsyncWait(deadline_, 3, &tcp_connection::check_deadline);
+
+    }
+
+    vector<boost::shared_ptr<ba::ip::tcp::socket>> fSockets;
+
+    ~tcp_connection()
+    {
+        fTrigger.Remove(this);
+        fSockets.clear();
+    }
+
+    void handle_accept(boost::shared_ptr<ba::ip::tcp::socket> socket, int port, const boost::system::error_code&/* error*/)
+    {
+        cout << this << " Added one socket[" << fBoardId << "] " << socket->remote_endpoint().address().to_v4().to_string();
+        cout << ":"<< port << endl;
+        fSockets.push_back(socket);
+    }
+};
+
+Trigger tcp_connection::fTrigger;
+
+void Trigger::commandHandler()
+{
+    if (!getCommand())
+        return;
+
+    for (vector<tcp_connection*>::iterator it=vec.begin();
+         it!=vec.end(); it++)
+        (*it)->PostTrigger(getCommand()->getInt());
+}
+
+
+class tcp_server
+{
+    tcp::acceptor acc0;
+    tcp::acceptor acc1;
+    tcp::acceptor acc2;
+    tcp::acceptor acc3;
+    tcp::acceptor acc4;
+    tcp::acceptor acc5;
+    tcp::acceptor acc6;
+    tcp::acceptor acc7;
+
+    int fBoardId;
+
+public:
+    tcp_server(ba::io_service& ioservice, int port, int board) :
+        acc0(ioservice, tcp::endpoint(tcp::v4(), port)),
+        acc1(ioservice, tcp::endpoint(tcp::v4(), port+1)),
+        acc2(ioservice, tcp::endpoint(tcp::v4(), port+2)),
+        acc3(ioservice, tcp::endpoint(tcp::v4(), port+3)),
+        acc4(ioservice, tcp::endpoint(tcp::v4(), port+4)),
+        acc5(ioservice, tcp::endpoint(tcp::v4(), port+5)),
+        acc6(ioservice, tcp::endpoint(tcp::v4(), port+6)),
+        acc7(ioservice, tcp::endpoint(tcp::v4(), port+7)),
+        fBoardId(board)
+    {
+        // We could start listening for more than one connection
+        // here, but since there is only one handler executed each time
+        // it would not make sense. Before one handle_accept is not
+        // finished no new handle_accept will be called.
+        // Workround: Start a new thread in handle_accept
+        start_accept();
+    }
+
+private:
+    void start_accept(tcp_connection::shared_ptr dest, tcp::acceptor &acc)
+    {
+        boost::shared_ptr<ba::ip::tcp::socket> connection =
+            boost::shared_ptr<ba::ip::tcp::socket>(new ba::ip::tcp::socket(acc.get_io_service()));
+
+        acc.async_accept(*connection,
+                          boost::bind(&tcp_connection::handle_accept,
+                                      dest, connection,
+                                      acc.local_endpoint().port(),
+                                      ba::placeholders::error));
+    }
+
+    void start_accept()
+    {
+        cout << "Start accept[" << fBoardId << "] " << acc0.local_endpoint().port() << "..." << flush;
+        tcp_connection::shared_ptr new_connection = tcp_connection::create(/*acceptor_.*/acc0.get_io_service(), fBoardId);
+
+        cout << new_connection.get() << " ";
+
+        // This will accept a connection without blocking
+        acc0.async_accept(*new_connection,
+                          boost::bind(&tcp_server::handle_accept,
+                                      this,
+                                      new_connection,
+                                      ba::placeholders::error));
+
+        start_accept(new_connection, acc1);
+        start_accept(new_connection, acc2);
+        start_accept(new_connection, acc3);
+        start_accept(new_connection, acc4);
+        start_accept(new_connection, acc5);
+        start_accept(new_connection, acc6);
+        start_accept(new_connection, acc7);
+
+        cout << "start-done." << endl;
+    }
+
+    void handle_accept(tcp_connection::shared_ptr new_connection, const boost::system::error_code& error)
+    {
+        // The connection has been accepted and is now ready to use
+
+        // not installing a new handler will stop run()
+        cout << new_connection.get() << " Handle accept[" << fBoardId << "]["<<new_connection->fBoardId<<"]..." << flush;
+        if (!error)
+        {
+            new_connection->start();
+
+            // The is now an open connection/server (tcp_connection)
+            // we immediatly schedule another connection
+            // This allowed two client-connection at the same time
+            start_accept();
+        }
+        cout << "handle-done." << endl;
+    }
+};
+
+#include "Configuration.h"
+
+void SetupConfiguration(::Configuration &conf)
+{
+    const string n = conf.GetName()+".log";
+
+    po::options_description config("Program options");
+    config.add_options()
+        ("dns",       var<string>("localhost"), "Dim nameserver host name (Overwites DIM_DNS_NODE environment variable)")
+        ("port,p",    var<uint16_t>(4000), "")
+        ("num,n",     var<uint16_t>(40),   "")
+        ;
+
+    po::positional_options_description p;
+    p.add("port", 1); // The first positional options
+    p.add("num",  1); // The second positional options
+
+    conf.AddEnv("dns", "DIM_DNS_NODE");
+
+    conf.AddOptions(config);
+    conf.SetArgumentPositions(p);
+}
+
+int main(int argc, const char **argv)
+{
+    ::Configuration conf(argv[0]);
+
+    SetupConfiguration(conf);
+
+    po::variables_map vm;
+    try
+    {
+        vm = conf.Parse(argc, argv);
+    }
+#if BOOST_VERSION > 104000
+    catch (po::multiple_occurrences &e)
+    {
+        cerr << "Program options invalid due to: " << e.what() << " of '" << e.get_option_name() << "'." << endl;
+        return -1;
+    }
+#endif
+    catch (exception& e)
+    {
+        cerr << "Program options invalid due to: " << e.what() << endl;
+        return -1;
+    }
+
+    if (conf.HasVersion() || conf.HasPrint() || conf.HasHelp())
+        return -1;
+
+    Dim::Setup(conf.Get<string>("dns"));
+
+    DimServer::start("FAD");
+
+    //try
+    {
+        ba::io_service io_service;
+
+        const uint16_t n = conf.Get<uint16_t>("num");
+        uint16_t port = conf.Get<uint16_t>("port");
+
+        vector<shared_ptr<tcp_server>> servers;
+
+        for (int i=0; i<n; i++)
+        {
+            shared_ptr<tcp_server> server(new tcp_server(io_service, port, i));
+            servers.push_back(server);
+
+            port += 8;
+        }
+
+        //  ba::add_service(io_service, &server);
+        //  server.add_service(...);
+        //cout << "Run..." << flush;
+
+        // Calling run() from a single thread ensures no concurrent access
+        // of the handler which are called!!!
+        io_service.run();
+
+        //cout << "end." << endl;
+    }
+    /*catch (std::exception& e)
+    {
+        std::cerr << e.what() << std::endl;
+    }*/
+
+    return 0;
+}
+/*  ====================== Buffers ===========================
+
+char d1[128]; ba::buffer(d1));
+std::vector<char> d2(128); ba::buffer(d2);
+boost::array<char, 128> d3; by::buffer(d3);
+
+// --------------------------------
+char d1[128];
+std::vector<char> d2(128);
+boost::array<char, 128> d3;
+
+boost::array<mutable_buffer, 3> bufs1 = {
+   ba::buffer(d1),
+   ba::buffer(d2),
+   ba::buffer(d3) };
+sock.read(bufs1);
+
+std::vector<const_buffer> bufs2;
+bufs2.push_back(boost::asio::buffer(d1));
+bufs2.push_back(boost::asio::buffer(d2));
+bufs2.push_back(boost::asio::buffer(d3));
+sock.write(bufs2);
+
+
+// ======================= Read functions =========================
+
+ba::async_read_until --> delimiter
+
+streambuf buf; // Ensure validity until handler!
+by::async_read(s, buf, ....);
+
+ba::async_read(s, ba:buffer(data, size), handler);
+ // Single buffer
+ boost::asio::async_read(s,
+                         ba::buffer(data, size),
+ compl-func -->          ba::transfer_at_least(32),
+                         handler);
+
+ // Multiple buffers
+boost::asio::async_read(s, buffers,
+ compl-func -->         boost::asio::transfer_all(),
+                        handler);
+                        */
+
+// ================= Others ===============================
+
+        /*
+        strand   Provides serialised handler execution.
+        work     Class to inform the io_service when it has work to do.
+
+
+io_service::
+dispatch   Request the io_service to invoke the given handler.
+poll       Run the io_service's event processing loop to execute ready
+           handlers.
+poll_one   Run the io_service's event processing loop to execute one ready
+           handler.
+post       Request the io_service to invoke the given handler and return
+           immediately.
+reset      Reset the io_service in preparation for a subsequent run()
+           invocation.
+run        Run the io_service's event processing loop.
+run_one    Run the io_service's event processing loop to execute at most
+           one handler.
+stop       Stop the io_service's event processing loop.
+wrap       Create a new handler that automatically dispatches the wrapped
+           handler on the io_service.
+
+strand::         The io_service::strand class provides the ability to
+                 post and dispatch handlers with the guarantee that none
+                 of those handlers will execute concurrently.
+
+dispatch         Request the strand to invoke the given handler.
+get_io_service   Get the io_service associated with the strand.
+post             Request the strand to invoke the given handler and return
+                 immediately.
+wrap             Create a new handler that automatically dispatches the
+                 wrapped handler on the strand.
+
+work::           The work class is used to inform the io_service when
+                 work starts and finishes. This ensures that the io_service's run() function will not exit while work is underway, and that it does exit when there is no unfinished work remaining.
+get_io_service   Get the io_service associated with the work.
+work             Constructor notifies the io_service that work is starting.
+
+*/
+
+
Index: branches/testFACT++branch/src/fadctrl.cc
===================================================================
--- branches/testFACT++branch/src/fadctrl.cc	(revision 18277)
+++ branches/testFACT++branch/src/fadctrl.cc	(revision 18277)
@@ -0,0 +1,2342 @@
+#include <functional>
+
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Console.h"
+#include "Converter.h"
+#include "HeadersFAD.h"
+
+#include "tools.h"
+
+#include "DimDescriptionService.h"
+#include "EventBuilderWrapper.h"
+
+#include "../externals/zofits.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+
+using ba::ip::tcp;
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+class ConnectionFAD : public Connection
+{
+    uint16_t fSlot;
+//    tcp::endpoint fEndpoint;
+
+    vector<uint16_t> fBuffer;
+
+protected:
+    FAD::EventHeader   fEventHeader;
+    FAD::ChannelHeader fChannelHeader[FAD::kNumChannels];
+
+private:
+    bool fIsVerbose;
+    bool fIsHexOutput;
+    bool fIsDataOutput;
+    bool fBlockTransmission;
+
+    uint64_t fCounter;
+
+    FAD::EventHeader fBufEventHeader;
+    vector<uint16_t> fTargetRoi;
+
+protected:
+    void PrintEventHeader()
+    {
+        Out() << endl << kBold << "Header received (N=" << dec << fCounter << "):" << endl;
+        Out() << fEventHeader;
+        if (fIsHexOutput)
+            Out() << Converter::GetHex<uint16_t>(fEventHeader, 16) << endl;
+    }
+
+    void PrintChannelHeaders()
+    {
+        Out() << dec << endl;
+
+        for (unsigned int c=0; c<FAD::kNumChips; c++)
+        {
+            Out() << "ROI|" << fEventHeader.Crate() << ":" << fEventHeader.Board() << ":" << c << ":";
+            for (unsigned int ch=0; ch<FAD::kNumChannelsPerChip; ch++)
+		Out() << " " << setw(4) << fChannelHeader[c+ch*FAD::kNumChips].fRegionOfInterest;
+            Out() << endl;
+        }
+
+        Out() << "CEL|" << fEventHeader.Crate() << ":" <<fEventHeader.Board() << ": ";
+        for (unsigned int c=0; c<FAD::kNumChips; c++)
+        {
+            if (0)//fIsFullChannelHeader)
+            {
+                for (unsigned int ch=0; ch<FAD::kNumChannelsPerChip; ch++)
+                    Out() << " " << setw(4) << fChannelHeader[c+ch*FAD::kNumChips].fStartCell;
+                Out() << endl;
+            }
+            else
+            {
+                Out() << " ";
+                const uint16_t cel = fChannelHeader[c*FAD::kNumChannelsPerChip].fStartCell;
+                for (unsigned int ch=1; ch<FAD::kNumChannelsPerChip; ch++)
+                    if (cel!=fChannelHeader[c+ch*FAD::kNumChips].fStartCell)
+                    {
+                        Out() << "!";
+                        break;
+                    }
+                Out() << cel;
+            }
+        }
+        Out() << endl;
+
+        if (fIsHexOutput)
+            Out() << Converter::GetHex<uint16_t>(fChannelHeader, 16) << endl;
+
+    }
+
+    virtual void UpdateFirstHeader()
+    {
+    }
+
+    virtual void UpdateEventHeader()
+    {
+        // emit service with trigger counter from header
+        if (fIsVerbose)
+            PrintEventHeader();
+    }
+
+    virtual void UpdateChannelHeaders()
+    {
+        // emit service with trigger counter from header
+        if (fIsVerbose)
+            PrintChannelHeaders();
+
+    }
+
+    virtual void UpdateData(const uint16_t *data, size_t sz)
+    {
+        // emit service with trigger counter from header
+        if (fIsVerbose && fIsDataOutput)
+            Out() << Converter::GetHex<uint16_t>(data, sz, 16, true) << endl;
+    }
+
+private:
+    enum
+    {
+        kReadHeader = 1,
+        kReadData   = 2,
+    };
+
+    void HandleReceivedData(const bs::error_code& err, size_t bytes_received, int type)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+                Warn("Connection to "+URL()+" closed by remote host (FAD).");
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            //PostClose(err!=ba::error::basic_errors::operation_aborted);
+            PostClose(false);
+            return;
+        }
+
+        if (type==kReadHeader)
+        {
+            if (bytes_received!=sizeof(FAD::EventHeader))
+            {
+                ostringstream str;
+                str << "Bytes received (" << bytes_received << " don't match header size " << sizeof(FAD::EventHeader);
+                Error(str);
+                PostClose(false);
+                return;
+            }
+
+            fEventHeader = fBuffer;
+
+            if (fEventHeader.fStartDelimiter!=FAD::kDelimiterStart)
+            {
+                ostringstream str;
+                str << "Invalid header received: start delimiter wrong, received ";
+                str << hex << fEventHeader.fStartDelimiter << ", expected " << FAD::kDelimiterStart << ".";
+                Error(str);
+                PostClose(false);
+                return;
+            }
+
+            if (fCounter==0)
+                UpdateFirstHeader();
+
+            UpdateEventHeader();
+
+            EventBuilderWrapper::This->debugHead(fEventHeader);
+
+            fBuffer.resize(fEventHeader.fPackageLength-sizeof(FAD::EventHeader)/2);
+            AsyncRead(ba::buffer(fBuffer), kReadData);
+            AsyncWait(fInTimeout, 2000, &Connection::HandleReadTimeout);
+
+            return;
+        }
+
+        fInTimeout.cancel();
+
+        if (ntohs(fBuffer.back())!=FAD::kDelimiterEnd)
+        {
+            ostringstream str;
+            str << "Invalid data received: end delimiter wrong, received ";
+            str << hex << ntohs(fBuffer.back()) << ", expected " << FAD::kDelimiterEnd << ".";
+            Error(str);
+            PostClose(false);
+            return;
+        }
+
+        uint8_t *ptr = reinterpret_cast<uint8_t*>(fBuffer.data());
+        uint8_t *end = ptr + fBuffer.size()*2;
+        for (unsigned int i=0; i<FAD::kNumChannels; i++)
+        {
+            if (ptr+sizeof(FAD::ChannelHeader) > end)
+            {
+                Error("Channel header exceeds buffer size.");
+                PostClose(false);
+                return;
+            }
+
+            fChannelHeader[i] = vector<uint16_t>((uint16_t*)ptr, (uint16_t*)ptr+sizeof(FAD::ChannelHeader)/2);
+            ptr += sizeof(FAD::ChannelHeader);
+
+            //UpdateChannelHeader(i);
+
+            if (ptr+fChannelHeader[i].fRegionOfInterest*2 > end)
+            {
+                Error("Data block exceeds buffer size.");
+                PostClose(false);
+                return;
+            }
+
+            const uint16_t *data = reinterpret_cast<uint16_t*>(ptr);
+            UpdateData(data, fChannelHeader[i].fRegionOfInterest*2);
+            ptr += fChannelHeader[i].fRegionOfInterest*2;
+        }
+
+        if (fIsVerbose)
+            UpdateChannelHeaders();
+
+        fCounter++;
+
+        fBuffer.resize(sizeof(FAD::EventHeader)/2);
+        AsyncRead(ba::buffer(fBuffer), kReadHeader);
+    }
+
+    void HandleReadTimeout(const bs::error_code &error)
+    {
+        if (error==ba::error::basic_errors::operation_aborted)
+            return;
+
+        if (error)
+        {
+            ostringstream str;
+            str << "Read timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fInTimeout.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        Error("Timeout reading data from "+URL());
+        PostClose(false);
+    }
+
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        fBufEventHeader.clear();
+        fBufEventHeader.fEventCounter = 1;
+        fBufEventHeader.fStatus = 0xf000|
+            FAD::EventHeader::kDenable|
+            FAD::EventHeader::kDwrite|
+            FAD::EventHeader::kDcmLocked|
+            FAD::EventHeader::kDcmReady|
+            FAD::EventHeader::kSpiSclk;
+
+        fEventHeader.clear();
+        for (unsigned int i=0; i<FAD::kNumChannels; i++)
+            fChannelHeader[i].clear();
+
+        fCounter = 0;
+
+        fBuffer.resize(sizeof(FAD::EventHeader)/2);
+        AsyncRead(ba::buffer(fBuffer), kReadHeader);
+
+//        for (int i=0; i<36; i++)
+//            CmdSetRoi(i, 100);
+
+//        Cmd(FAD::kCmdTriggerLine, true);
+//        Cmd(FAD::kCmdSingleTrigger);
+    }
+
+public:
+    void PostCmd(std::vector<uint16_t> cmd)
+    {
+        if (fBlockTransmission || !IsConnected())
+            return;
+
+#ifdef DEBUG_TX
+        ostringstream msg;
+        msg << "Sending command:" << hex;
+        msg << " 0x" << setw(4) << setfill('0') << cmd[0];
+        msg << " (+ " << cmd.size()-1 << " bytes data)";
+        Message(msg);
+#endif
+        transform(cmd.begin(), cmd.end(), cmd.begin(), htons);
+
+        PostMessage(cmd);
+    }
+
+    void PostCmd(uint16_t cmd)
+    {
+        if (fBlockTransmission || !IsConnected())
+            return;
+
+#ifdef DEBUG_TX
+        ostringstream msg;
+        msg << "Sending command:" << hex;
+        msg << " 0x" << setw(4) << setfill('0') << cmd;
+        Message(msg);
+#endif
+        cmd = htons(cmd);
+        PostMessage(&cmd, sizeof(uint16_t));
+    }
+
+    void PostCmd(uint16_t cmd, uint16_t data)
+    {
+        if (fBlockTransmission || !IsConnected())
+            return;
+
+#ifdef DEBUG_TX
+        ostringstream msg;
+        msg << "Sending command:" << hex;
+        msg << " 0x" << setw(4) << setfill('0') << cmd;
+        msg << " 0x" << setw(4) << setfill('0') << data;
+        Message(msg);
+#endif
+        const uint16_t d[2] = { htons(cmd), htons(data) };
+        PostMessage(d, sizeof(d));
+    }
+
+public:
+    ConnectionFAD(ba::io_service& ioservice, MessageImp &imp, uint16_t slot) :
+        Connection(ioservice, imp()), fSlot(slot),
+        fIsVerbose(false), fIsHexOutput(false), fIsDataOutput(false),
+        fBlockTransmission(false), fCounter(0),
+        fTargetRoi(FAD::kNumChannels)
+    {
+        // Maximum possible needed space:
+        // The full header, all channels with all DRS bins
+        // Two trailing shorts
+        fBuffer.reserve(sizeof(FAD::EventHeader) + FAD::kNumChannels*(sizeof(FAD::ChannelHeader) + FAD::kMaxBins*sizeof(uint16_t)) + 2*sizeof(uint16_t));
+
+        SetLogStream(&imp);
+    }
+
+    void Cmd(FAD::Enable cmd, bool on=true)
+    {
+        switch (cmd)
+        {
+        case FAD::kCmdDrsEnable:   fBufEventHeader.Enable(FAD::EventHeader::kDenable,     on);  break;
+        case FAD::kCmdDwrite:      fBufEventHeader.Enable(FAD::EventHeader::kDwrite,      on);  break;
+        case FAD::kCmdTriggerLine: fBufEventHeader.Enable(FAD::EventHeader::kTriggerLine, on);  break;
+        case FAD::kCmdBusyOn:      fBufEventHeader.Enable(FAD::EventHeader::kBusyOn,      on);  break;
+        case FAD::kCmdBusyOff:     fBufEventHeader.Enable(FAD::EventHeader::kBusyOff,     on);  break;
+        case FAD::kCmdContTrigger: fBufEventHeader.Enable(FAD::EventHeader::kContTrigger, on);  break;
+        case FAD::kCmdSocket:      fBufEventHeader.Enable(FAD::EventHeader::kSock17,      !on); break;
+        default:
+            break;
+        }
+
+        PostCmd(cmd + (on ? 0 : 0x100));
+    }
+
+    // ------------------------------
+
+    // IMPLEMENT: Abs/Rel
+    void CmdPhaseShift(int16_t val)
+    {
+        vector<uint16_t> cmd(abs(val)+2, FAD::kCmdPhaseApply);
+        cmd[0] = FAD::kCmdPhaseReset;
+        cmd[1] = val<0 ? FAD::kCmdPhaseDecrease : FAD::kCmdPhaseIncrease;
+        PostCmd(cmd);
+    }
+
+    bool CmdSetTriggerRate(int32_t val)
+    {
+        if (val<0 || val>0xffff)
+            return false;
+
+        fBufEventHeader.fTriggerGeneratorPrescaler = val;
+        PostCmd(FAD::kCmdWriteRate, val);//uint8_t(1000./val/12.5));
+        //PostCmd(FAD::kCmdWriteExecute);
+
+        return true;
+    }
+
+    void CmdSetRunNumber(uint32_t num)
+    {
+        fBufEventHeader.fRunNumber = num;
+
+        PostCmd(FAD::kCmdWriteRunNumberLSW, num&0xffff);
+        PostCmd(FAD::kCmdWriteRunNumberMSW, num>>16);
+        PostCmd(FAD::kCmdWriteExecute);
+    }
+
+    void CmdSetRegister(uint8_t addr, uint16_t val)
+    {
+        // Allowed addr:  [0, MAX_ADDR]
+        // Allowed value: [0, MAX_VAL]
+        PostCmd(FAD::kCmdWrite + addr, val);
+        PostCmd(FAD::kCmdWriteExecute);
+    }
+
+    bool CmdSetDacValue(int8_t addr, uint16_t val)
+    {
+        if (addr<0)
+        {
+            for (unsigned int i=0; i<=FAD::kMaxDacAddr; i++)
+            {
+                fBufEventHeader.fDac[i] = val;
+                PostCmd(FAD::kCmdWriteDac + i, val);
+            }
+            PostCmd(FAD::kCmdWriteExecute);
+            return true;
+        }
+
+        if (uint8_t(addr)>FAD::kMaxDacAddr) // NDAC
+            return false;
+
+        fBufEventHeader.fDac[addr] = val;
+
+        PostCmd(FAD::kCmdWriteDac + addr, val);
+        PostCmd(FAD::kCmdWriteExecute);
+        return true;
+    }
+
+    bool CmdSetRoi(int8_t addr, uint16_t val)
+    {
+        if (val>FAD::kMaxRoiValue)
+            return false;
+
+        if (addr<0)
+        {
+            for (unsigned int i=0; i<=FAD::kMaxRoiAddr; i++)
+            {
+                fTargetRoi[i] = val;
+                PostCmd(FAD::kCmdWriteRoi + i, val);
+            }
+            PostCmd(FAD::kCmdWriteExecute);
+            return true;
+        }
+
+        if (uint8_t(addr)>FAD::kMaxRoiAddr)
+            return false;
+
+        fTargetRoi[addr] = val;
+
+        PostCmd(FAD::kCmdWriteRoi + addr, val);
+        PostCmd(FAD::kCmdWriteExecute);
+        return true;
+    }
+
+    bool CmdSetRoi(uint16_t val) { return CmdSetRoi(-1, val); }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+    }
+
+    void SetHexOutput(bool b)
+    {
+        fIsHexOutput = b;
+    }
+
+    void SetDataOutput(bool b)
+    {
+        fIsDataOutput = b;
+    }
+
+    void SetBlockTransmission(bool b)
+    {
+        fBlockTransmission = b;
+    }
+
+    bool IsTransmissionBlocked() const
+    {
+        return fBlockTransmission;
+    }
+
+    void PrintEvent()
+    {
+        if (fCounter>0)
+        {
+            PrintEventHeader();
+            PrintChannelHeaders();
+        }
+        else
+            Out() << "No event received yet." << endl;
+    }
+
+    bool HasCorrectRoi() const
+    {
+        for (int i=0; i<FAD::kNumChannels; i++)
+            if (fTargetRoi[i]!=fChannelHeader[i].fRegionOfInterest)
+                return false;
+
+        return true;
+    }
+
+    bool HasCorrectHeader() const
+    {
+        return fEventHeader==fBufEventHeader;
+    }
+
+    bool IsConfigured() const
+    {
+        return HasCorrectRoi() && HasCorrectHeader();
+    }
+
+    void PrintCheckHeader()
+    {
+        Out() << "================================================================================" << endl;
+        fEventHeader.print(Out());
+        Out() << "--------------------------------------------------------------------------------" << endl;
+        fBufEventHeader.print(Out());
+        Out() << "================================================================================" << endl;
+    }
+
+    const FAD::EventHeader &GetConfiguration() const { return fBufEventHeader; }
+};
+
+// ------------------------------------------------------------------------
+
+template <class T>
+class StateMachineFAD : public StateMachineAsio<T>, public EventBuilderWrapper
+{
+private:
+    typedef map<uint8_t, ConnectionFAD*> BoardList;
+
+    BoardList fBoards;
+
+    bool fIsVerbose;
+    bool fIsHexOutput;
+    bool fIsDataOutput;
+    bool fDebugTx;
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int Cmd(FAD::Enable command)
+    {
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->Cmd(command);
+
+        return T::GetCurrentState();
+    }
+
+    int SendCmd(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SendCmd", 4))
+            return T::kSM_FatalError;
+
+        if (evt.GetUInt()>0xffff)
+        {
+            T::Warn("Command value out of range (0-65535).");
+            return T::GetCurrentState();
+        }
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->PostCmd(evt.GetUInt());
+
+        return T::GetCurrentState();
+    }
+
+    int SendCmdData(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SendCmdData", 8))
+            return T::kSM_FatalError;
+
+        const uint32_t *ptr = evt.Ptr<uint32_t>();
+
+        if (ptr[0]>0xffff)
+        {
+            T::Warn("Command value out of range (0-65535).");
+            return T::GetCurrentState();
+        }
+
+        if (ptr[1]>0xffff)
+        {
+            T::Warn("Data value out of range (0-65535).");
+            return T::GetCurrentState();
+        }
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->PostCmd(ptr[0], ptr[1]);
+
+        return T::GetCurrentState();
+    }
+
+    int CmdEnable(const EventImp &evt, FAD::Enable command)
+    {
+        if (!CheckEventSize(evt.GetSize(), "CmdEnable", 1))
+            return T::kSM_FatalError;
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->Cmd(command, evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    bool Check(const uint32_t *dat, uint32_t maxaddr, uint32_t maxval)
+    {
+        if (dat[0]>maxaddr)
+        {
+            ostringstream msg;
+            msg << hex << "Address " << dat[0] << " out of range, max=" << maxaddr << ".";
+            T::Error(msg);
+            return false;
+        }
+
+        if (dat[1]>maxval)
+        {
+            ostringstream msg;
+            msg << hex << "Value " << dat[1] << " out of range, max=" << maxval << ".";
+            T::Error(msg);
+            return false;
+        }
+
+        return true;
+    }
+
+    int SetRegister(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetRegister", 8))
+            return T::kSM_FatalError;
+
+        const uint32_t *dat = evt.Ptr<uint32_t>();
+
+        if (!Check(dat, FAD::kMaxRegAddr, FAD::kMaxRegValue))
+            return T::GetCurrentState();
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->CmdSetRegister(dat[0], dat[1]);
+
+        return T::GetCurrentState();
+    }
+
+    int SetRoi(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetRoi", 8))
+            return T::kSM_FatalError;
+
+        const int32_t *dat = evt.Ptr<int32_t>();
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            if (!i->second->CmdSetRoi(dat[0], dat[1]))
+            {
+                ostringstream msg;
+                msg << hex << "Channel " << dat[0] << " or Value " << dat[1] << " out of range.";
+                T::Error(msg);
+                return T::GetCurrentState();
+            }
+
+
+        return T::GetCurrentState();
+    }
+
+    int SetDac(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetDac", 8))
+            return T::kSM_FatalError;
+
+        const int32_t *dat = evt.Ptr<int32_t>();
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            if (!i->second->CmdSetDacValue(dat[0], dat[1]))
+            {
+                ostringstream msg;
+                msg << hex << "Channel " << dat[0] << " or Value " << dat[1] << " out of range.";
+                T::Error(msg);
+                return T::GetCurrentState();
+            }
+
+        return T::GetCurrentState();
+    }
+
+    int Trigger(int n)
+    {
+        for (int nn=0; nn<n; nn++)
+            for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+                i->second->Cmd(FAD::kCmdSingleTrigger);
+
+        return T::GetCurrentState();
+    }
+
+    int SendTriggers(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SendTriggers", 4))
+            return T::kSM_FatalError;
+
+        Trigger(evt.GetUInt());
+
+        return T::GetCurrentState();
+    }
+/*
+    int StartRun(const EventImp &evt, bool start)
+    {
+        if (!CheckEventSize(evt.GetSize(), "StartRun", 0))
+            return T::kSM_FatalError;
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->Cmd(FAD::kCmdRun, start);
+
+        return T::GetCurrentState();
+    }
+*/
+    int PhaseShift(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "PhaseShift", 2))
+            return T::kSM_FatalError;
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->CmdPhaseShift(evt.GetShort());
+
+        return T::GetCurrentState();
+    }
+
+    int SetTriggerRate(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetTriggerRate", 4))
+            return T::kSM_FatalError;
+
+        if (evt.GetUInt()>0xffff)
+        {
+            ostringstream msg;
+            msg << hex << "Value " << evt.GetUShort() << " out of range, max=" << 0xffff << "(?)";
+            T::Error(msg);
+            return T::GetCurrentState();
+        }
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->CmdSetTriggerRate(evt.GetUInt());
+
+        return T::GetCurrentState();
+    }
+
+    int SetRunNumber(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetRunNumber", 8))
+            return T::kSM_FatalError;
+
+        const uint64_t num = evt.GetUXtra();
+
+        if (num<=0 || num>FAD::kMaxRunNumber)
+        {
+            ostringstream msg;
+            msg << "Run number " << num << " out of range [1;" << FAD::kMaxRunNumber << "]";
+            T::Error(msg);
+            return T::GetCurrentState();
+        }
+
+        if (!IncreaseRunNumber(num))
+            return T::GetCurrentState();
+ 
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->CmdSetRunNumber(GetRunNumber());
+
+        return T::GetCurrentState();
+    }
+
+    int SetMaxMemoryBuffer(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetMaxMemoryBuffer", 2))
+            return T::kSM_FatalError;
+
+        const int16_t mem = evt.GetShort();
+
+        if (mem<=0)
+        {
+            ostringstream msg;
+            msg << hex << "Value " << mem << " out of range.";
+            T::Error(msg);
+            return T::GetCurrentState();
+        }
+
+        SetMaxMemory(mem);
+
+        return T::GetCurrentState();
+    }
+
+    int SetEventTimeoutSec(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetEventTimeoutSec", 2))
+            return T::kSM_FatalError;
+
+        const int16_t sec = evt.GetShort();
+
+        if (sec<=0)
+        {
+            ostringstream msg;
+            msg << hex << "Value " << sec << " out of range.";
+            T::Error(msg);
+            return T::GetCurrentState();
+        }
+
+        SetEventTimeout(sec);
+
+        return T::GetCurrentState();
+    }
+
+    int SetFileFormat(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetFileFormat", 2))
+            return T::kSM_FatalError;
+
+        const uint16_t fmt = evt.GetUShort();
+
+        // A simple way to make sure that no invalid file format
+        // is passed to the event builder
+	switch (fmt)
+	{
+        case FAD::kNone:
+        case FAD::kDebug:
+        case FAD::kFits:
+        case FAD::kZFits:
+        case FAD::kCfitsio:
+        case FAD::kRaw:
+        case FAD::kCalib:
+            SetOutputFormat(FAD::FileFormat_t(fmt));
+            break;
+	default:
+            T::Error("File format unknonw.");
+            return T::GetCurrentState();
+        }
+
+        return T::GetCurrentState();
+    }
+
+    int StartDrsCalibration()
+    {
+        SetOutputFormat(FAD::kCalib);
+        return T::GetCurrentState();
+    }
+
+    int ResetSecondaryDrsBaseline()
+    {
+        EventBuilderWrapper::ResetSecondaryDrsBaseline();
+        return T::GetCurrentState();
+    }
+
+    int LoadDrsCalibration(const EventImp &evt)
+    {
+        EventBuilderWrapper::LoadDrsCalibration(evt.GetText());
+        return T::GetCurrentState();
+    }
+/*
+    int Test(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "Test", 2))
+            return T::kSM_FatalError;
+
+
+        SetMode(evt.GetShort());
+
+        return T::GetCurrentState();
+    }*/
+
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetHexOutput(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetHexOutput", 1))
+            return T::kSM_FatalError;
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->SetHexOutput(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetDataOutput(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetDataOutput", 1))
+            return T::kSM_FatalError;
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->SetDataOutput(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetDebugTx(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetDebugTx", 1))
+            return T::kSM_FatalError;
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            i->second->SetDebugTx(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    const BoardList::iterator GetSlot(uint16_t slot)
+    {
+        const BoardList::iterator it=fBoards.find(slot);
+        if (it==fBoards.end())
+        {
+            ostringstream str;
+            str << "Slot " << slot << " not found.";
+            T::Warn(str);
+        }
+
+        return it;
+    }
+
+    int PrintEvent(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "PrintEvent", 2))
+            return T::kSM_FatalError;
+
+        const int16_t slot = evt.Get<int16_t>();
+
+        if (slot<0)
+        {
+            for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+                i->second->PrintEvent();
+        }
+        else
+        {
+            const BoardList::iterator it=GetSlot(slot);
+            if (it!=fBoards.end())
+                it->second->PrintEvent();
+        }
+
+        return T::GetCurrentState();
+    }
+
+    int SetBlockTransmission(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetBlockTransmission", 3))
+            return T::kSM_FatalError;
+
+        const int16_t slot = evt.Get<int32_t>();
+
+        const BoardList::iterator it=GetSlot(slot);
+        if (it!=fBoards.end())
+            it->second->SetBlockTransmission(evt.Get<uint8_t>(2));
+
+        return T::GetCurrentState();
+    }
+
+    int SetBlockTransmissionRange(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetBlockTransmissionRange", 5))
+            return T::kSM_FatalError;
+
+        const int16_t *slot  = evt.Ptr<int16_t>();
+        const bool     block = evt.Get<uint8_t>(4);
+
+        for (int i=slot[0]; i<=slot[1]; i++)
+        {
+            const BoardList::iterator it=GetSlot(i);
+            if (it!=fBoards.end())
+                it->second->SetBlockTransmission(block);
+        }
+
+        return T::GetCurrentState();
+    }
+
+    int SetIgnoreSlot(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetIgnoreSlot", 3))
+            return T::kSM_FatalError;
+
+        const uint16_t slot = evt.Get<uint16_t>();
+
+        if (slot>39)
+        {
+            T::Warn("Slot out of range (0-39).");
+            return T::GetCurrentState();
+        }
+
+        SetIgnore(slot, evt.Get<uint8_t>(2));
+
+        return T::GetCurrentState();
+    }
+
+    int SetIgnoreSlots(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetIgnoreSlots", 5))
+            return T::kSM_FatalError;
+
+        const int16_t *slot  = evt.Ptr<int16_t>();
+        const bool     block = evt.Get<uint8_t>(4);
+
+        if (slot[0]<0 || slot[1]>39 || slot[0]>slot[1])
+        {
+            T::Warn("Slot out of range.");
+            return T::GetCurrentState();
+        }
+
+        for (int i=slot[0]; i<=slot[1]; i++)
+            SetIgnore(i, block);
+
+        return T::GetCurrentState();
+    }
+
+    int StartConfigure(const EventImp &evt)
+    {
+        const string name = evt.Ptr<char>(16);
+
+        fTargetConfig = fConfigs.find(name);
+        if (fTargetConfig==fConfigs.end())
+        {
+            T::Error("StartConfigure - Run-type '"+name+"' not found.");
+            return T::GetCurrentState();
+        }
+
+        // FIXME: What about an error state?
+        const uint32_t runno = StartNewRun(evt.Get<int64_t>(), evt.Get<int64_t>(8), *fTargetConfig);
+        if (runno==0)
+            return FAD::State::kConnected;
+
+        ostringstream str;
+        str << "Starting configuration for run " << runno << " (" << name << ")";
+        T::Message(str.str());
+
+        if (runno>=1000)
+            T::Warn("Run number exceeds logical maximum of 999 - this is no problem for writing but might give raise to problems in the analysis.");
+
+        const FAD::Configuration &conf = fTargetConfig->second;
+
+        for (BoardList::iterator it=fBoards.begin(); it!=fBoards.end(); it++)
+        {
+            ConnectionFAD &fad  = *it->second;
+
+            fad.Cmd(FAD::kCmdBusyOn,      true);  // continously on
+            fad.Cmd(FAD::kCmdTriggerLine, false);
+            fad.Cmd(FAD::kCmdContTrigger, false);
+            fad.Cmd(FAD::kCmdSocket,      true);
+            fad.Cmd(FAD::kCmdBusyOff,     false);  // normal when BusyOn==0
+
+            fad.Cmd(FAD::kCmdDwrite,      conf.fDwrite);
+            fad.Cmd(FAD::kCmdDrsEnable,   conf.fDenable);
+
+            for (int i=0; i<FAD::kNumDac; i++)
+                fad.CmdSetDacValue(i, conf.fDac[i]);
+
+            for (int i=0; i<FAD::kNumChips; i++)
+                for (int j=0; j<FAD::kNumChannelsPerChip; j++)
+                    fad.CmdSetRoi(i*FAD::kNumChannelsPerChip+j, conf.fRoi[j]);
+
+            fad.CmdSetTriggerRate(conf.fTriggerRate);
+            fad.CmdSetRunNumber(runno);
+            fad.Cmd(FAD::kCmdResetEventCounter);
+            fad.Cmd(FAD::kCmdTriggerLine, true);
+            //fad.Cmd(FAD::kCmdSingleTrigger);
+            //fad.Cmd(FAD::kCmdTriggerLine, true);
+        }
+
+        // Now the old run is stopped already. So all other servers can start a new run
+        // (Note that we might need another step which only checks if the continous trigger
+        //  is wwitched off, too)
+        const int64_t runs[2] = { runno, runno+1 };
+        fDimStartRun.Update(runs);
+
+        return FAD::State::kConfiguring1;
+    }
+
+    int ResetConfig()
+    {
+        const int64_t runs[2] = { -1, GetRunNumber() };
+        fDimStartRun.Update(runs);
+
+        return FAD::State::kConnected;
+    }
+
+    void CloseRun(uint32_t runid)
+    {
+        if (runid==GetRunNumber()-1)
+            ResetConfig();
+    }
+
+    int AddAddress(const EventImp &evt)
+    {
+        const string addr = Tools::Trim(evt.GetText());
+
+        const tcp::endpoint endpoint = GetEndpoint(addr);
+        if (endpoint==tcp::endpoint())
+            return T::GetCurrentState();
+
+        for (BoardList::const_iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+        {
+            if (i->second->GetEndpoint()==endpoint)
+            {
+               T::Warn("Address "+addr+" already known.... ignored.");
+               return T::GetCurrentState();
+            }
+        }
+
+        AddEndpoint(endpoint);
+
+        return T::GetCurrentState();
+    }
+
+    int RemoveSlot(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "RemoveSlot", 2))
+            return T::kSM_FatalError;
+
+        const int16_t slot = evt.GetShort();
+
+        const BoardList::iterator it = GetSlot(slot);
+
+        if (it==fBoards.end())
+            return T::GetCurrentState();
+
+        ConnectSlot(slot, tcp::endpoint());
+
+        delete it->second;
+        fBoards.erase(it);
+
+        return T::GetCurrentState();
+    }
+
+    int ListSlots()
+    {
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+        {
+            const int           &idx = i->first;
+            const ConnectionFAD *fad = i->second;
+
+            ostringstream str;
+            str << "Slot " << setw(2) << idx << ": " << fad->GetEndpoint();
+
+            if (fad->IsConnecting())
+                str << " (0:connecting, ";
+            else
+            {
+                if (fad->IsClosed())
+                    str << " (0:disconnected, ";
+                if (fad->IsConnected())
+                    str << " (0:connected, ";
+            }
+
+            switch (fStatus2[idx])
+            {
+            case 0:  str << "1:disconnected)"; break;
+            case 8:  str << "1:connected)";     break;
+            default: str << "1:connecting)";    break;
+            }
+
+            if (fad->IsTransmissionBlocked())
+                str << " [cmd_blocked]";
+
+            if (fStatus2[idx]==8 && IsIgnored(idx))
+                str << " [data_ignored]";
+
+            if (fad->IsConnected() && fStatus2[idx]==8 && fad->IsConfigured())
+                str << " [configured]";
+
+            T::Out() << str.str() << endl;
+        }
+
+        T::Out() << "Event builder thread:";
+        if (!IsThreadRunning())
+            T::Out() << " not";
+        T::Out() << " running" << endl;
+
+        // FIXME: Output state
+
+        return T::GetCurrentState();
+    }
+
+    void EnableConnection(ConnectionFAD *ptr, bool enable=true)
+    {
+        if (!enable)
+        {
+            ptr->PostClose(false);
+            return;
+        }
+
+        if (!ptr->IsDisconnected())
+        {
+            ostringstream str;
+            str << ptr->GetEndpoint();
+
+            T::Warn("Connection to "+str.str()+" already in progress.");
+            return;
+        }
+
+	ptr->StartConnect();
+    }
+
+    void EnableAll(bool enable=true)
+    {
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            EnableConnection(i->second, enable);
+    }
+
+    int CloseOpenFiles()
+    {
+        EventBuilderWrapper::CloseOpenFiles();
+        return T::GetCurrentState();
+    }
+
+    int EnableSlot(const EventImp &evt, bool enable)
+    {
+        if (!CheckEventSize(evt.GetSize(), "EnableSlot", 2))
+            return T::kSM_FatalError;
+
+        const int16_t slot = evt.GetShort();
+
+        const BoardList::iterator it = GetSlot(slot);
+        if (it==fBoards.end())
+            return T::GetCurrentState();
+
+        EnableConnection(it->second, enable);
+        ConnectSlot(it->first, enable ? it->second->GetEndpoint() : tcp::endpoint());
+
+        return T::GetCurrentState();
+    }
+
+    int ToggleSlot(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "ToggleSlot", 2))
+            return T::kSM_FatalError;
+
+        const int16_t slot = evt.GetShort();
+
+        const BoardList::iterator it = GetSlot(slot);
+        if (it==fBoards.end())
+            return T::GetCurrentState();
+
+        const bool enable = it->second->IsDisconnected();
+
+        EnableConnection(it->second, enable);
+        ConnectSlot(it->first, enable ? it->second->GetEndpoint() : tcp::endpoint());
+
+        return T::GetCurrentState();
+    }
+
+    int StartConnection()
+    {
+        vector<tcp::endpoint> addr(40);
+
+        for (BoardList::iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            addr[i->first] = i->second->GetEndpoint();
+
+        StartThread(addr);
+        EnableAll(true);
+
+        return T::GetCurrentState();
+    }
+
+    int StopConnection()
+    {
+        Exit();
+        EnableAll(false);
+        return T::GetCurrentState();
+    }
+
+    int AbortConnection()
+    {
+        Abort();
+        EnableAll(false);
+        return T::GetCurrentState();
+    }
+
+    int Reset(bool soft)
+    {
+        ResetThread(soft);
+        return T::GetCurrentState();
+    }
+
+    // ============================================================================
+
+    int SetupZFits(const EventImp &evt, const std::function<void(int32_t)> &func)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetupZFits", 2))
+            return T::kSM_FatalError;
+
+        func(evt.GetShort());
+        return T::GetCurrentState();
+    }
+
+
+    // ============================================================================
+/*
+    bool ProcessReconnection(const list<ReconnectionSlot>::iterator &it)
+    {
+        auto board = GetSlot(it->slot);
+        if (board==fBoards.end())
+            return false;
+
+        ConnectionFAD *fad  = board->second;
+
+        // ----------------------------------------------
+        // Disconnect
+        // ----------------------------------------------
+        if (it->state==0)
+        {
+            if (!fad->IsConnected())
+                return false;
+
+            EnableConnection(fad, false);
+            ConnectSlot(it->slot, tcp::endpoint());
+
+            it->time  = Time();
+            it->state = 1;
+
+            return true;
+        }
+
+        // ----------------------------------------------
+        // Wait for disconnect or timeout
+        // ----------------------------------------------
+        if (it->state==1)
+        {
+            if (!fad->IsDisconnected() && it->time+boost::posix_time::seconds(10)>Time())
+                return true;
+
+            it->time  = Time();
+            it->state = 2;
+
+            return true;
+        }
+
+        // ----------------------------------------------
+        // Wait for timeout after disconnect / Re-connect
+        // ----------------------------------------------
+        if (it->state==2)
+        {
+            if (it->time+boost::posix_time::seconds(3)>Time())
+                return true;
+
+            EnableConnection(fad, true);
+            ConnectSlot(it->slot, fad->GetEndpoint());
+
+            it->time  = Time();
+            it->state = 3;
+
+            return true;
+        }
+
+        // ----------------------------------------------
+        // Wait for connect or timeout / Re-start
+        // ----------------------------------------------
+        if (!fad->IsConnected() && it->time+boost::posix_time::seconds(10)>Time())
+            return true;
+
+        // 'Fix' the information which got lost during re-connection
+        fad->Cmd(FAD::kCmdBusyOff,     false);
+        fad->Cmd(FAD::kCmdSocket,      false);
+        fad->Cmd(FAD::kCmdTriggerLine, true);
+
+        return false;
+    }
+*/
+    // ============================================================================
+
+    vector<uint8_t> fStatus1;
+    vector<uint8_t> fStatus2;
+    bool            fStatusT;
+
+    int Execute()
+    {
+        // ===== Evaluate connection status =====
+
+        uint16_t nclosed1     = 0;
+        uint16_t nconnecting1 = 0;
+        uint16_t nconnecting2 = 0;
+        uint16_t nconnected1  = 0;
+        uint16_t nconnected2  = 0;
+        uint16_t nconfigured  = 0;
+
+        vector<uint8_t> stat1(40);
+        vector<uint8_t> stat2(40);
+
+        int cnt = 0; // counter for enabled board
+
+        const bool runs = IsThreadRunning();
+
+        for (int idx=0; idx<40; idx++)
+        {
+            // ----- Command socket -----
+            const BoardList::const_iterator &slot = fBoards.find(idx);
+            if (slot!=fBoards.end())
+            {
+                const ConnectionFAD *c = slot->second;
+                if (c->IsDisconnected())
+                {
+                    stat1[idx] = 0;
+                    nclosed1++;
+
+                    //DisconnectSlot(idx);
+                }
+                if (c->IsConnecting())
+                {
+                    stat1[idx] = 1;
+                    nconnecting1++;
+                }
+                if (c->IsConnected())
+                {
+                    stat1[idx] = 2;
+                    nconnected1++;
+
+                    if (c->IsConfigured())
+                    {
+                        stat1[idx] = 3;
+                        nconfigured++;
+                    }
+                }
+
+                cnt++;
+            }
+
+            // ----- Event builder -----
+
+            stat2[idx] = 0; // disconnected
+            if (!runs)
+                continue;
+
+            if (IsConnecting(idx))
+            {
+                nconnecting2++;
+                stat2[idx] = 1; // connecting
+            }
+
+            if (IsConnected(idx))
+            {
+                nconnected2++;
+                stat2[idx] = 8; // connected
+            }
+        }
+
+        // ===== Send connection status via dim =====
+
+        if (fStatus1!=stat1 || fStatus2!=stat2 || fStatusT!=runs)
+        {
+            fStatus1 = stat1;
+            fStatus2 = stat2;
+            fStatusT = runs;
+            UpdateConnectionStatus(stat1, stat2, runs);
+        }
+
+        // ===== Return connection status =====
+
+        // Keep the state during reconnection (theoretically, can only be WritingData)
+/*        if (fReconnectionList.size()>0)
+        {
+            bool isnew = true;
+            for (auto it=fReconnectionList.begin(); it!=fReconnectionList.end(); it++)
+                if (it->state>0)
+                {
+                    isnew = false;
+                    break;
+                }
+
+            if (isnew)
+            {
+                for (BoardList::iterator it=fBoards.begin(); it!=fBoards.end(); it++)
+                    it->second->Cmd(FAD::kCmdBusyOn, true);  // continously on
+            }
+
+            // Loop over all scheduled re-connections
+            for (auto it=fReconnectionList.begin(); it!=fReconnectionList.end(); it++)
+            {
+                if (ProcessReconnection(it))
+                    continue;
+
+                const lock_guard<mutex> guard(fMutexReconnect);
+                fReconnectionList.erase(it);
+            }
+
+            if (fReconnectionList.size()==0)
+            {
+                for (BoardList::iterator it=fBoards.begin(); it!=fBoards.end(); it++)
+                    it->second->Cmd(FAD::kCmdBusyOff, false);
+            }
+
+            return T::GetCurrentState();
+        }
+*/
+        // fadctrl:       Always connecting if not disabled
+        // event builder:
+        if (nconnecting1==0 && nconnected1>0 && nconnected2==nconnected1)
+        {
+            if (T::GetCurrentState()==FAD::State::kConfiguring1)
+            {
+                // Wait until the configuration commands to all boards
+                // have been sent and achknowledged
+                for (BoardList::iterator it=fBoards.begin(); it!=fBoards.end(); it++)
+                    if (!it->second->IsTxQueueEmpty())
+                        return FAD::State::kConfiguring1;
+
+                // Note that if there are less than 40 boards, this
+                // can be so fast that the single trigger still
+                // comes to early, and a short watiting is necessary :(
+
+                // Now we can sent the trigger
+                for (BoardList::iterator it=fBoards.begin(); it!=fBoards.end(); it++)
+                    it->second->Cmd(FAD::kCmdSingleTrigger);
+
+                return FAD::State::kConfiguring2;
+            }
+
+            // If all boards are configured and we are configuring
+            // go on and start the FADs
+            if (T::GetCurrentState()==FAD::State::kConfiguring2)
+            {
+                // If not all boards have yet received the proper
+                // configuration
+                if (nconfigured!=nconnected1)
+                    return FAD::State::kConfiguring2;
+
+                // FIXME: Distinguish between not all boards have received
+                // the configuration and the configuration is not consistent
+
+                for (BoardList::iterator it=fBoards.begin(); it!=fBoards.end(); it++)
+                {
+                    ConnectionFAD &fad  = *it->second;
+
+                    // Make sure that after switching on the trigger line
+                    // there needs to be some waiting before all boards
+                    // can be assumed to be listening
+                    fad.Cmd(FAD::kCmdResetEventCounter);
+                    fad.Cmd(FAD::kCmdSocket,      false);
+                    //fad.Cmd(FAD::kCmdTriggerLine, true);
+                    if (fTargetConfig->second.fContinousTrigger)
+                        fad.Cmd(FAD::kCmdContTrigger, true);
+                    fad.Cmd(FAD::kCmdBusyOn,      false);  // continously on
+
+                    // FIXME: How do we find out when the FADs
+                    //        successfully enabled the trigger lines?
+                }
+
+//                const lock_guard<mutex> guard(fMutexReconnect);
+//                fReconnectionList.clear();
+
+                return FAD::State::kConfiguring3;
+            }
+
+            if (T::GetCurrentState()==FAD::State::kConfiguring3)
+            {
+                // Wait until the configuration commands to all boards
+                // have been sent and achknowledged
+                for (BoardList::iterator it=fBoards.begin(); it!=fBoards.end(); it++)
+                    if (!it->second->IsTxQueueEmpty())
+                        return FAD::State::kConfiguring3;
+
+                return FAD::State::kConfigured;
+            }
+
+            if (T::GetCurrentState()==FAD::State::kConfigured)
+            {
+                // Stay in Configured as long as we have a valid
+                // configuration and the run has not yet been started
+                // (means the the event builder has received its
+                // first event)
+                if (IsRunWaiting() && nconfigured==nconnected1)
+                    return FAD::State::kConfigured;
+
+                if (!IsRunWaiting())
+                    T::Message("Run successfully started... first data received.");
+                if (nconfigured!=nconnected1)
+                    T::Message("Configuration of some boards changed.");
+            }
+
+            // FIXME: Rename WritingData to TakingData
+            return IsRunInProgress() ? FAD::State::kRunInProgress : FAD::State::kConnected;
+        }
+
+        if (nconnecting1>0 || nconnecting2>0 || nconnected1!=nconnected2)
+            return FAD::State::kConnecting;
+
+        // nconnected1 == nconnected2 == 0
+        return runs ? FAD::State::kDisconnected : FAD::State::kOffline;
+    }
+
+    void AddEndpoint(const tcp::endpoint &addr)
+    {
+        int i=0;
+        while (i<40)
+        {
+            if (fBoards.find(i)==fBoards.end())
+                break;
+            i++;
+        }
+
+        if (i==40)
+        {
+            T::Warn("Not more than 40 slots allowed.");
+            return;
+        }
+
+        ConnectionFAD *fad = new ConnectionFAD(*this, *this, i);
+
+        fad->SetEndpoint(addr);
+        fad->SetVerbose(fIsVerbose);
+        fad->SetHexOutput(fIsHexOutput);
+        fad->SetDataOutput(fIsDataOutput);
+        fad->SetDebugTx(fDebugTx);
+
+        fBoards[i] = fad;
+    }
+
+
+    DimDescribedService fDimStartRun;
+    DimDescribedService fDimConnection;
+
+    void UpdateConnectionStatus(const vector<uint8_t> &stat1, const vector<uint8_t> &stat2, bool thread)
+    {
+        vector<uint8_t> stat(41);
+
+        for (int i=0; i<40; i++)
+            stat[i] = stat1[i]|(stat2[i]<<3);
+
+        stat[40] = thread;
+
+        fDimConnection.Update(stat);
+    }
+
+public:
+    StateMachineFAD(ostream &out=cout) :
+        StateMachineAsio<T>(out, "FAD_CONTROL"),
+        EventBuilderWrapper(*static_cast<MessageImp*>(this)),
+        fStatus1(40), fStatus2(40), fStatusT(false),
+        fDimStartRun("FAD_CONTROL/START_RUN", "X:1;X:1",
+                                              "Run numbers"
+                                              "|run[idx]:Run no of last conf'd run (-1 if reset or none config'd yet)"
+                                              "|next[idx]:Run number which will be assigned to next configuration"),
+        fDimConnection("FAD_CONTROL/CONNECTIONS", "C:40;C:1",
+                                                  "Connection status of FAD boards"
+                                                  "|status[bitpattern]:lower bits stat1, upper bits stat2, for every board. 40=thread"
+                                                  "|thread[bool]:true or false whether the event builder threads are running")
+    {
+        ResetConfig();
+        SetOutputFormat(FAD::kNone);
+
+        // State names
+        T::AddStateName(FAD::State::kOffline, "Disengaged",
+                        "All enabled FAD boards are disconnected and the event-builer thread is not running.");
+
+        T::AddStateName(FAD::State::kDisconnected, "Disconnected",
+                        "All enabled FAD boards are disconnected, but the event-builder thread is running.");
+
+        T::AddStateName(FAD::State::kConnecting, "Connecting",
+                        "Only some enabled FAD boards are connected.");
+
+        T::AddStateName(FAD::State::kConnected, "Connected",
+                        "All enabled FAD boards are connected..");
+
+        T::AddStateName(FAD::State::kConfiguring1, "Configuring1",
+                        "Waiting 3 seconds for all FADs to be configured before requesting configuration.");
+
+        T::AddStateName(FAD::State::kConfiguring2, "Configuring2",
+                        "Waiting until all boards returned their configuration and they are valid.");
+
+        T::AddStateName(FAD::State::kConfiguring3, "Configuring3",
+                        "Waiting until 'enable trigger line' was sent to all boards.");
+
+        T::AddStateName(FAD::State::kConfigured, "Configured",
+                        "The configuration of all boards was successfully cross checked. Waiting for events with a new run number to receive.");
+
+        T::AddStateName(FAD::State::kRunInProgress, "RunInProgress",
+                        "Events currently received by the event builder will be flagged to be written, no end-of-run event occured yet.");
+
+        // FAD Commands
+        T::AddEvent("SEND_CMD", "I:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::SendCmd, this, placeholders::_1))
+            ("Send a command to the FADs. Values between 0 and 0xffff are allowed."
+             "|command[uint16]:Command to be transmittted.");
+        T::AddEvent("SEND_DATA", "I:2", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::SendCmdData, this, placeholders::_1))
+            ("Send a command with data to the FADs. Values between 0 and 0xffff are allowed."
+             "|command[uint16]:Command to be transmittted."
+             "|data[uint16]:Data to be sent with the command.");
+
+        T::AddEvent("ENABLE_SRCLK", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdSrclk))
+            ("Set SRCLK");
+        T::AddEvent("ENABLE_BUSY_OFF", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdBusyOff))
+            ("Set BUSY continously low");
+        T::AddEvent("ENABLE_BUSY_ON", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdBusyOn))
+            ("Set BUSY constantly high (has priority over BUSY_OFF)");
+        T::AddEvent("ENABLE_SCLK", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdSclk))
+            ("Set SCLK");
+        T::AddEvent("ENABLE_DRS", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdDrsEnable))
+            ("Switch Domino wave");
+        T::AddEvent("ENABLE_DWRITE", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdDwrite))
+            ("Set Dwrite (possibly high / always low)");
+        T::AddEvent("ENABLE_CONTINOUS_TRIGGER", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdContTrigger))
+            ("Enable continous (internal) trigger.");
+        T::AddEvent("ENABLE_TRIGGER_LINE", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdTriggerLine))
+            ("Incoming triggers can be accepted/will not be accepted");
+        T::AddEvent("ENABLE_COMMAND_SOCKET_MODE", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdSocket))
+            ("Set debug mode (yes: dump events through command socket, no=dump events through other sockets)");
+
+        T::AddEvent("SET_TRIGGER_RATE", "I:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::SetTriggerRate, this, placeholders::_1))
+            ("Enable continous trigger");
+        T::AddEvent("SEND_SINGLE_TRIGGER")
+            (bind(&StateMachineFAD::Trigger, this, 1))
+            ("Issue software triggers");
+        T::AddEvent("SEND_N_TRIGGERS", "I", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::SendTriggers, this, placeholders::_1))
+            ("Issue N software triggers (note that these are the triggers sent, not the triggers executed)"
+             "|N[int]: Number of triggers to be sent to the board.");
+        /*
+        T::AddEvent("START_RUN", "", FAD::kConnecting, FAD::kConnected, FAD::kRunInProgress)
+            (bind(&StateMachineFAD::StartRun, this, placeholders::_1, true))
+            ("Set FAD DAQ mode. when started, no configurations must be send.");
+        T::AddEvent("STOP_RUN", FAD::kConnecting, FAD::kConnected, FAD::kRunInProgress)
+            (bind(&StateMachineFAD::StartRun, this, placeholders::_1, false))
+            ("");
+            */
+        T::AddEvent("PHASE_SHIFT", "S:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::PhaseShift, this, placeholders::_1))
+            ("Adjust ADC phase (in 'steps')"
+             "|phase[short]");
+
+        T::AddEvent("RESET_EVENT_COUNTER", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::Cmd, this, FAD::kCmdResetEventCounter))
+            ("Reset the FAD boards' event counter to 0.");
+
+        T::AddEvent("SET_RUN_NUMBER", "X:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::SetRunNumber, this, placeholders::_1))
+            ("Sent a new run-number to the boards"
+             "|num[int]:Run number");
+
+        T::AddEvent("SET_MAX_MEMORY", "S:1")
+            (bind(&StateMachineFAD::SetMaxMemoryBuffer, this, placeholders::_1))
+            ("Set maximum memory buffer size allowed to be consumed by the EventBuilder to buffer events."
+             "|memory[short]:Buffer size in Mega-bytes.");
+
+        T::AddEvent("SET_EVENT_TIMEOUT", "S:1")
+            (bind(&StateMachineFAD::SetEventTimeoutSec, this, placeholders::_1))
+            ("Set the timeout after which an event expires which was not completely received yet."
+             "|timeout[sec]:Timeout in seconds [1;32767]");
+
+        T::AddEvent("SET_REGISTER", "I:2", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::SetRegister, this, placeholders::_1))
+            ("set register to value"
+            "|addr[short]:Address of register"
+            "|val[short]:Value to be set");
+
+        // FIXME:  Maybe add a mask which channels should be set?
+        T::AddEvent("SET_REGION_OF_INTEREST", "I:2", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::SetRoi, this, placeholders::_1))
+            ("Set region-of-interest to value"
+            "|channel[short]:Channel on each chip for which the ROI is set (0-8), -1 for all"
+            "|val[short]:Value to be set");
+
+        // FIXME:  Maybe add a mask which channels should be set?
+        T::AddEvent("SET_DAC_VALUE", "I:2", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::SetDac, this, placeholders::_1))
+            ("Set DAC numbers in range to value"
+            "|addr[short]:Address of register (-1 for all)"
+            "|val[short]:Value to be set");
+
+        T::AddEvent("CONFIGURE", "X:2;C", FAD::State::kConnected, FAD::State::kConfigured, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::StartConfigure, this, placeholders::_1))
+            ("Configure a new run. If the internla trigger is enabled this might even start a new run."
+             "|time_max[s]:Maximum time before the run is closed in seconds (0: unlimited)"
+             "|num_max[int]:Maximum number of events before the run is closed in seconds (0: unlimited)"
+             "|run_type[string]:Run type which describes the runs");
+
+        T::AddEvent("RESET_CONFIGURE", FAD::State::kConfiguring1, FAD::State::kConfiguring2, FAD::State::kConfiguring3, FAD::State::kConfigured)
+            (bind(&StateMachineFAD::ResetConfig, this))
+            ("If configuration failed and the fadctrl is waiting for something, use this to reset the state.");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B:1")
+            (bind(&StateMachineFAD::SetVerbosity, this, placeholders::_1))
+            ("Set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+
+        T::AddEvent("SET_HEX_OUTPUT", "B:1")
+            (bind(&StateMachineFAD::SetHexOutput, this, placeholders::_1))
+            ("Enable or disable hex output for received data"
+             "|hexout[bool]:disable or enable hex output for received data (yes/no)");
+
+        T::AddEvent("SET_DATA_OUTPUT", "B:1")
+            (bind(&StateMachineFAD::SetDataOutput, this, placeholders::_1))
+            ("Enable or disable printing of the received adc data to the console"
+             "|dataout[bool]:disable or enable data output for received data (yes/no)");
+
+        T::AddEvent("SET_DEBUG_TX", "B:1")
+            (bind(&StateMachineFAD::SetDebugTx, this, placeholders::_1))
+	    ("Enable or disable the output of messages in case of successfull data transmission to the boards."
+	     "|debug[bool]:disable or enable debug output for transmitted data (yes/no)");
+
+        T::AddEvent("PRINT_EVENT", "S:1")
+            (bind(&StateMachineFAD::PrintEvent, this, placeholders::_1))
+            ("Print (last) event"
+             "|board[short]:slot from which the event should be printed (-1 for all)");
+
+        T::AddEvent("BLOCK_TRANSMISSION", "S:1;B:1")
+            (bind(&StateMachineFAD::SetBlockTransmission, this, placeholders::_1))
+            ("Blocks the transmission of commands to the given slot. Use with care! For debugging pupose only!"
+             "|slot[short]:Slot to which the command transmission should be blocked (0-39)"
+             "|enable[bool]:Whether the command transmission should be blockes (yes) or allowed (no)");
+
+        T::AddEvent("BLOCK_TRANSMISSION_RANGE", "S:2;B:1")
+            (bind(&StateMachineFAD::SetBlockTransmissionRange, this, placeholders::_1))
+            ("Blocks the transmission of commands to the given range of slots. Use with care! For debugging pupose only!"
+             "|first[short]:First slot to which the command transmission should be blocked (0-39)"
+             "|last[short]:Last slot to which the command transmission should be blocked (0-39)"
+             "|enable[bool]:Whether the command transmission should be blockes (yes) or allowed (no)");
+
+        T::AddEvent("IGNORE_EVENTS", "S:1;B:1")
+            (bind(&StateMachineFAD::SetIgnoreSlot, this, placeholders::_1))
+            ("Instructs the event-builder to ignore events from the given slot but still read the data from the socket."
+             "|slot[short]:Slot from which the data should be ignored when building events"
+             "|enable[bool]:Whether the event builder should ignore data from this slot (yes) or allowed (no)");
+
+        T::AddEvent("IGNORE_EVENTS_RANGE", "S:2;B:1")
+            (bind(&StateMachineFAD::SetIgnoreSlots, this, placeholders::_1))
+            ("Instructs the event-builder to ignore events from the given slot but still read the data from the socket."
+             "|first[short]:First slot from which the data should be ignored when building events"
+             "|last[short]:Last slot from which the data should be ignored when building events"
+             "|enable[bool]:Whether the event builder should ignore data from this slot (yes) or allowed (no)");
+
+        T::AddEvent("CLOSE_OPEN_FILES", FAD::State::kDisconnected, FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::CloseOpenFiles, this))
+            ("Close all run files opened by the EventBuilder.");
+
+        //T::AddEvent("TEST", "S:1")
+        //   (bind(&StateMachineFAD::Test, this, placeholders::_1))
+        //    ("");
+
+
+
+        // Conenction commands
+        T::AddEvent("START", FAD::State::kOffline)
+            (bind(&StateMachineFAD::StartConnection, this))
+            ("Start EventBuilder thread and connect all valid slots.");
+
+        T::AddEvent("STOP",  FAD::State::kDisconnected, FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::StopConnection, this))
+            ("Stop EventBuilder thread (still write buffered events) and disconnect all slots.");
+
+        T::AddEvent("ABORT", FAD::State::kDisconnected, FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::AbortConnection, this))
+            ("Immediately abort EventBuilder thread and disconnect all slots.");
+
+        T::AddEvent("SOFT_RESET", FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::Reset, this, true))
+            ("Wait for buffers to drain, close all files and reinitialize event builder thread.");
+
+        T::AddEvent("HARD_RESET", FAD::State::kConnected, FAD::State::kRunInProgress)
+            (bind(&StateMachineFAD::Reset, this, false))
+            ("Free all buffers, close all files and reinitialize event builder thread.");
+
+        T::AddEvent("CONNECT", "S:1", FAD::State::kDisconnected, FAD::State::kConnecting, FAD::State::kConnected)
+            (bind(&StateMachineFAD::EnableSlot, this, placeholders::_1, true))
+            ("Connect a disconnected slot.");
+
+        T::AddEvent("DISCONNECT", "S:1", FAD::State::kConnecting, FAD::State::kConnected)
+            (bind(&StateMachineFAD::EnableSlot, this, placeholders::_1, false))
+            ("Disconnect a connected slot.");
+
+        T::AddEvent("TOGGLE", "S:1", FAD::State::kDisconnected, FAD::State::kConnecting, FAD::State::kConnected)
+            (bind(&StateMachineFAD::ToggleSlot, this, placeholders::_1))
+            ("");
+
+        T::AddEvent("SET_FILE_FORMAT", "S:1")
+            (bind(&StateMachineFAD::SetFileFormat, this, placeholders::_1))
+            ("");
+
+        T::AddEvent("START_DRS_CALIBRATION")
+            (bind(&StateMachineFAD::StartDrsCalibration, this))
+            ("");
+
+        T::AddEvent("RESET_SECONDARY_DRS_BASELINE")
+            (bind(&StateMachineFAD::ResetSecondaryDrsBaseline, this))
+            ("");
+
+        T::AddEvent("LOAD_DRS_CALIBRATION", "C")
+            (bind(&StateMachineFAD::LoadDrsCalibration, this, placeholders::_1))
+            ("Load a DRS calibration file"
+             "|absolute path");
+
+
+        // --------- Setup compression of FITS files -----------
+        T::AddEvent("SET_ZFITS_DEFAULT_NUM_THREADS", "S")
+            (bind(&StateMachineFAD::SetupZFits, this, placeholders::_1, zofits::DefaultNumThreads))
+            ("Set the number of compression threads to use (+1 for writing)"
+             "|num[int]:Number of threads");
+        T::AddEvent("SET_ZFITS_DEFAULT_MAX_MEMORY", "S")
+            (bind(&StateMachineFAD::SetupZFits, this, placeholders::_1, zofits::DefaultMaxMemory))
+            ("Set the maximum amount of memory zfits will use for compression"
+             "|mem[int]:Memory in MB");
+        T::AddEvent("SET_ZFITS_DEFAULT_NUM_TILES", "S")
+            (bind(&StateMachineFAD::SetupZFits, this, placeholders::_1, zofits::DefaultMaxNumTiles))
+            ("Set the number of tiles with which the catalog is initialized"
+             "|num[int]:Number of tiles");
+        T::AddEvent("SET_ZFITS_DEFAULT_ROWS_PER_TILE", "S")
+            (bind(&StateMachineFAD::SetupZFits, this, placeholders::_1, zofits::DefaultNumRowsPerTile))
+            ("Set the number of rows which are compressed into one tile"
+             "|num[int]:Number of rows per tile");
+
+
+        T::AddEvent("ADD_ADDRESS", "C", FAD::State::kOffline)
+            (bind(&StateMachineFAD::AddAddress, this, placeholders::_1))
+            ("Add the address of a DRS4 board to the first free slot"
+             "|IP[string]:address in the format <address:port>");
+        T::AddEvent("REMOVE_SLOT", "S:1", FAD::State::kOffline)
+            (bind(&StateMachineFAD::RemoveSlot, this, placeholders::_1))
+            ("Remove the Iaddress in slot n. For a list see LIST"
+             "|slot[short]:Remove the address in slot n from the list");
+        T::AddEvent("LIST_SLOTS")
+            (bind(&StateMachineFAD::ListSlots, this))
+            ("Print a list of all available board addressesa and whether they are enabled");
+    }
+
+    ~StateMachineFAD()
+    {
+        for (BoardList::const_iterator i=fBoards.begin(); i!=fBoards.end(); i++)
+            delete i->second;
+        fBoards.clear();
+    }
+
+    tcp::endpoint GetEndpoint(const string &base)
+    {
+        const size_t p0 = base.find_first_of(':');
+        const size_t p1 = base.find_last_of(':');
+
+        if (p0==string::npos || p0!=p1)
+        {
+           T::Out() << kRed << "GetEndpoint - Wrong format ('host:port' expected)" << endl;
+           return tcp::endpoint();
+        }
+
+        tcp::resolver resolver(StateMachineAsio<T>::get_io_service());
+
+        boost::system::error_code ec;
+
+        const tcp::resolver::query query(base.substr(0, p0), base.substr(p0+1));
+        const tcp::resolver::iterator iterator = resolver.resolve(query, ec);
+
+        if (ec)
+        {
+           T::Out() << kRed << "GetEndpoint - Couldn't resolve endpoint '" << base << "': " << ec.message();
+           return tcp::endpoint();
+        }
+
+        return *iterator;
+    }
+
+    typedef map<string, FAD::Configuration> Configs;
+    Configs fConfigs;
+    Configs::const_iterator fTargetConfig;
+
+
+    template<class V>
+    bool CheckConfigVal(Configuration &conf, V max, const string &name, const string &sub)
+    {
+        if (!conf.HasDef(name, sub))
+        {
+            T::Error("Neither "+name+"default nor "+name+sub+" found.");
+            return false;
+        }
+
+        const V val = conf.GetDef<V>(name, sub);
+
+        if (val<=max)
+            return true;
+
+        ostringstream str;
+        str << name << sub << "=" << val << " exceeds allowed maximum of " << max << "!";
+        T::Error(str);
+
+        return false;
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        // ---------- General setup ---------
+        fIsVerbose = !conf.Get<bool>("quiet");
+        fIsHexOutput = conf.Get<bool>("hex-out");
+        fIsDataOutput = conf.Get<bool>("data-out");
+        fDebugTx = conf.Get<bool>("debug-tx");
+
+        // --------- Setup compression of FITS files -----------
+        if (conf.Has("zfits.num-threads"))
+            zofits::DefaultNumThreads(conf.Get<int32_t>("zfits.num-threads"));
+        if (conf.Has("zfits.max-mem"))
+            zofits::DefaultMaxMemory(conf.Get<uint32_t>("zfits.max-mem")*1000);
+        if (conf.Has("zfits.num-tiles"))
+            zofits::DefaultMaxNumTiles(conf.Get<uint32_t>("zfits.num-tiles"));
+        if (conf.Has("zfits.num-rows"))
+            zofits::DefaultNumRowsPerTile(conf.Get<uint32_t>("zfits.num-rows"));
+
+        // ---------- Setup event builder ---------
+        SetMaxMemory(conf.Get<unsigned int>("max-mem"));
+        SetEventTimeout(conf.Get<uint16_t>("event-timeout"));
+
+        if (!InitRunNumber(conf.Get<string>("destination-folder")))
+            return 1;
+
+        // ---------- Setup run types ---------
+        const vector<string> types = conf.Vec<string>("run-type");
+        if (types.size()==0)
+            T::Warn("No run-types defined.");
+        else
+            T::Message("Defining run-types");
+        for (vector<string>::const_iterator it=types.begin();
+             it!=types.end(); it++)
+        {
+            T::Message(" -> "+ *it);
+
+            if (fConfigs.count(*it)>0)
+            {
+                T::Error("Run-type "+*it+" defined twice.");
+                return 2;
+            }
+
+            FAD::Configuration target;
+
+            if (!CheckConfigVal<bool>(conf, true, "enable-drs.",               *it) ||
+                !CheckConfigVal<bool>(conf, true, "enable-dwrite.",            *it) ||
+                !CheckConfigVal<bool>(conf, true, "enable-continous-trigger.", *it))
+                return 3;
+
+            target.fDenable          = conf.GetDef<bool>("enable-drs.", *it);
+            target.fDwrite           = conf.GetDef<bool>("enable-dwrite.", *it);
+            target.fContinousTrigger = conf.GetDef<bool>("enable-continous-trigger.", *it);
+
+            target.fTriggerRate = 0;
+            //if (target.fContinousTrigger)
+            {
+                if (!CheckConfigVal<uint16_t>(conf, 0xffff, "trigger-rate.", *it))
+                    return 4;
+
+                target.fTriggerRate = conf.GetDef<uint16_t>("trigger-rate.", *it);
+            }
+
+            for (int i=0; i<FAD::kNumChannelsPerChip; i++)
+            {
+                ostringstream str;
+                str << "roi-ch" << i << '.';
+
+                if (!CheckConfigVal<uint16_t>(conf, FAD::kMaxRoiValue, "roi.",    *it) &&
+                    !CheckConfigVal<uint16_t>(conf, FAD::kMaxRoiValue, str.str(), *it))
+                    return 5;
+
+                target.fRoi[i] = conf.HasDef(str.str(), *it) ?
+                    conf.GetDef<uint16_t>(str.str(), *it) :
+                    conf.GetDef<uint16_t>("roi.",    *it);
+            }
+
+            for (int i=0; i<FAD::kNumDac; i++)
+            {
+                ostringstream str;
+                str << "dac-" << i << '.';
+
+                if (!CheckConfigVal<uint16_t>(conf, FAD::kMaxDacValue, "dac.",    *it) &&
+                    !CheckConfigVal<uint16_t>(conf, FAD::kMaxDacValue, str.str(), *it))
+                    return 6;
+
+                target.fDac[i] = conf.HasDef(str.str(), *it) ?
+                    conf.GetDef<uint16_t>(str.str(), *it) :
+                    conf.GetDef<uint16_t>("dac.",    *it);
+            }
+
+            fConfigs[*it] = target;
+        }
+
+        // FIXME: Add a check about unsused configurations
+
+        // ---------- Setup board addresses for fake-fad ---------
+
+        if (conf.Has("debug-addr"))
+        {
+            const string addr = conf.Get<string>("debug-addr");
+            const int    num  = conf.Get<unsigned int>("debug-num");
+
+            const tcp::endpoint endpoint = GetEndpoint(addr);
+            if (endpoint==tcp::endpoint())
+                return 7;
+
+            for (int i=0; i<num; i++)
+                AddEndpoint(tcp::endpoint(endpoint.address(), endpoint.port()+8*i));
+
+            if (conf.Get<bool>("start"))
+                StartConnection();
+            return -1;
+        }
+
+        // ---------- Setup board addresses for the real camera ---------
+
+        if (conf.Has("base-addr"))
+        {
+            string base = conf.Get<string>("base-addr");
+
+            if (base=="def" || base =="default")
+                base = "10.0.128.128:31919";
+
+            const tcp::endpoint endpoint = GetEndpoint(base);
+            if (endpoint==tcp::endpoint())
+                return 8;
+
+            const ba::ip::address_v4::bytes_type ip = endpoint.address().to_v4().to_bytes();
+
+            if (ip[2]>250 || ip[3]>244)
+            {
+                T::Out() << kRed << "EvalConfiguration - IP address given by --base-addr out-of-range." << endl;
+                return 9;
+            }
+
+            for (int crate=0; crate<4; crate++)
+                for (int board=0; board<10; board++)
+                {
+                    ba::ip::address_v4::bytes_type target = endpoint.address().to_v4().to_bytes();
+                    target[2] += crate;
+                    target[3] += board;
+
+                    AddEndpoint(tcp::endpoint(ba::ip::address_v4(target), endpoint.port()));
+                }
+
+            if (conf.Get<bool>("start"))
+                StartConnection();
+            return -1;
+
+        }
+
+        // ---------- Setup board addresses one by one ---------
+
+        if (conf.Has("addr"))
+        {
+            const vector<string> addrs = conf.Vec<string>("addr");
+            for (vector<string>::const_iterator i=addrs.begin(); i<addrs.end(); i++)
+            {
+                const tcp::endpoint endpoint = GetEndpoint(*i);
+                if (endpoint==tcp::endpoint())
+                    return 10;
+
+                AddEndpoint(endpoint);
+            }
+
+            if (conf.Get<bool>("start"))
+                StartConnection();
+            return -1;
+        }
+        return -1;
+    }
+
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T, class S>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineFAD<S>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("FAD control options");
+    control.add_options()
+        ("quiet,q",  po_bool(true), "Disable printing contents of all received messages in clear text.")
+        ("hex-out",  po_bool(), "Enable printing contents of all printed messages also as hex data.")
+        ("data-out", po_bool(), "Enable printing received event data.")
+        ("debug-tx", po_bool(), "Enable debugging of ethernet transmission.")
+        ;
+
+    po::options_description connect("FAD connection options");
+    connect.add_options()
+        ("addr",        vars<string>(), "Network address of FAD")
+        ("base-addr",   var<string>(),  "Base address of all FAD")
+        ("debug-num,n", var<unsigned int>(40),  "Sets the number of fake boards to be connected locally")
+        ("debug-addr",  var<string>(),  "")
+        ("start",       po_bool(false), "Start the connction immediately after boot")
+        ;
+
+    po::options_description builder("Event builder options");
+    builder.add_options()
+        ("max-mem",            var<unsigned int>(100), "Maximum memory the event builder thread is allowed to consume for its event buffer")
+        ("event-timeout",      var<uint16_t>(30),      "After how many seconds is an event considered to be timed out? (<=0: disabled)")
+        ("destination-folder", var<string>(""),        "Destination folder (base folder) for the event builder binary data files.")
+        ;
+
+    po::options_description zfits("FITS compression options");
+    zfits.add_options()
+        ("zfits.num-threads", var<int32_t>(),  "Number of threads to spawn writing compressed FITS files")
+        ("zfits.max-mem",     var<uint32_t>(), "Maximum amount of memory to be allocated by FITS compression in MB")
+        ("zfits.num-tiles",   var<uint32_t>(), "Maximum number of tiles in the catalog")
+        ("zfits.num-rows",    var<uint32_t>(), "Maximum number of rows per tile")
+        ;
+
+    po::options_description runtype("Run type configuration");
+    runtype.add_options()
+        ("run-type",                     vars<string>(),        "Run type, e.g. data, pedestal, drs-calibration, light-pulser")
+        ("enable-dwrite.*",              var<bool>(),           "")
+        ("enable-drs.*",                 var<bool>(),           "")
+        ("enable-continous-trigger.*",   var<bool>(),           "")
+        ("trigger-rate.*",               var<uint16_t>(),       "")
+        ("dac.*",                        var<uint16_t>(),       "")
+        ("dac-0.*",                      var<uint16_t>(),       "")
+        ("dac-1.*",                      var<uint16_t>(),       "")
+        ("dac-2.*",                      var<uint16_t>(),       "")
+        ("dac-3.*",                      var<uint16_t>(),       "")
+        ("dac-4.*",                      var<uint16_t>(),       "")
+        ("dac-5.*",                      var<uint16_t>(),       "")
+        ("dac-6.*",                      var<uint16_t>(),       "")
+        ("dac-7.*",                      var<uint16_t>(),       "")
+        ("roi.*",                        var<uint16_t>(),       "")
+        ("roi-ch0.*",                    var<uint16_t>(),       "")
+        ("roi-ch1.*",                    var<uint16_t>(),       "")
+        ("roi-ch2.*",                    var<uint16_t>(),       "")
+        ("roi-ch3.*",                    var<uint16_t>(),       "")
+        ("roi-ch4.*",                    var<uint16_t>(),       "")
+        ("roi-ch5.*",                    var<uint16_t>(),       "")
+        ("roi-ch6.*",                    var<uint16_t>(),       "")
+        ("roi-ch7.*",                    var<uint16_t>(),       "")
+        ("roi-ch8.*",                    var<uint16_t>(),       "")
+        ;
+
+    conf.AddEnv("dns",  "DIM_DNS_NODE");
+    conf.AddEnv("host", "DIM_HOST_NODE");
+
+    conf.AddOptions(control);
+    conf.AddOptions(connect);
+    conf.AddOptions(builder);
+    conf.AddOptions(zfits);
+    conf.AddOptions(runtype);
+}
+
+void PrintUsage()
+{
+    cout <<
+        "The fadctrl controls the FAD boards.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: fadctrl [-c type] [OPTIONS]\n"
+        "  or:  fadctrl [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineFAD<StateMachine>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+//    try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+//            if (conf.Get<bool>("no-dim"))
+//                return RunShell<LocalStream, StateMachine>(conf);
+//            else
+                return RunShell<LocalStream, StateMachineDim>(conf);
+        }
+
+        // Cosole access w/ and w/o Dim
+/*        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine>(conf);
+        }
+        else
+*/        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim>(conf);
+        }
+    }
+/*    catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/testFACT++branch/src/feedback.cc
===================================================================
--- branches/testFACT++branch/src/feedback.cc	(revision 18277)
+++ branches/testFACT++branch/src/feedback.cc	(revision 18277)
@@ -0,0 +1,1392 @@
+#include <valarray>
+#include <algorithm>
+
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "Connection.h"
+#include "Configuration.h"
+#include "Console.h"
+#include "externals/PixelMap.h"
+
+#include "tools.h"
+
+#include "LocalControl.h"
+
+#include "HeadersFSC.h"
+#include "HeadersBIAS.h"
+#include "HeadersFeedback.h"
+
+#include "DimState.h"
+#include "DimDescriptionService.h"
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+class StateMachineFeedback : public StateMachineDim
+{
+private:
+    PixelMap fMap;
+
+    bool fIsVerbose;
+
+    DimVersion fDim;
+
+    DimDescribedState fDimFSC;
+    DimDescribedState fDimBias;
+
+    DimDescribedService fDimCalibration;
+    DimDescribedService fDimCalibration2;
+    DimDescribedService fDimCalibrationR8;
+    DimDescribedService fDimCurrents;
+    DimDescribedService fDimOffsets;
+
+    vector<float>    fCalibCurrentMes[6]; // Measured calibration current at six different levels
+    vector<float>    fCalibVoltage[6];    // Corresponding voltage as reported by biasctrl
+
+    vector<int64_t>  fCurrentsAvg;
+    vector<int64_t>  fCurrentsRms;
+
+    vector<float>    fVoltGapd;     // Nominal breakdown voltage + 1.1V
+    vector<float>    fBiasVolt;     // Output voltage as reported by bias crate (voltage between R10 and R8)
+    vector<float>    fBiasR9;       // 
+    vector<uint16_t> fBiasDac;      // Dac value corresponding to the voltage setting
+
+    vector<float>    fCalibration;
+    vector<float>    fCalibDeltaI;
+    vector<float>    fCalibR8;
+
+     int64_t fCursorCur;
+
+    Time fTimeCalib;
+    Time fTimeTemp;
+    Time fTimeCritical;
+
+    double fUserOffset;
+    double fVoltageReduction;
+    vector<double> fTempOffset;
+    float fTempOffsetAvg;
+    float fTempOffsetRms;
+    double fTempCoefficient;
+    double fTemp;
+
+    vector<double> fVoltOffset;
+
+    uint16_t fCurrentRequestInterval;
+    uint16_t fNumCalibIgnore;
+    uint16_t fNumCalibRequests;
+    uint16_t fCalibStep;
+
+    uint16_t fTimeoutCritical;
+
+    // ============================= Handle Services ========================
+
+    int HandleBiasStateChange()
+    {
+        if (fDimBias.state()==BIAS::State::kVoltageOn && GetCurrentState()==Feedback::State::kCalibrating)
+        {
+            Dim::SendCommandNB("BIAS_CONTROL/REQUEST_STATUS");
+            Info("Starting calibration step "+to_string(fCalibStep));
+        }
+
+        if (fDimBias.state()==BIAS::State::kVoltageOff && GetCurrentState()>=Feedback::State::kInProgress)
+            return Feedback::State::kCalibrated;
+
+        return GetCurrentState();
+    }
+    // ============================= Handle Services ========================
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        // Disconnected
+        if (has==0)
+            return false;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        Fatal(msg);
+        return false;
+    }
+
+    int HandleBiasNom(const EventImp &evt)
+    {
+        if (evt.GetSize()>=416*sizeof(float))
+        {
+            fVoltGapd.assign(evt.Ptr<float>(), evt.Ptr<float>()+416);
+            fBiasR9.assign(evt.Ptr<float>()+2*416, evt.Ptr<float>()+3*416);
+
+            for (int i=0; i<320; i++)
+                fVoltGapd[i] += 1.1;
+
+            Info("Nominal bias voltages and calibration resistor received.");
+        }
+
+        return GetCurrentState();
+    }
+
+    int HandleBiasVoltage(const EventImp &evt)
+    {
+        if (evt.GetSize()>=416*sizeof(float))
+            fBiasVolt.assign(evt.Ptr<float>(), evt.Ptr<float>()+416);
+        return GetCurrentState();
+    }
+
+    int HandleBiasDac(const EventImp &evt)
+    {
+        if (evt.GetSize()>=416*sizeof(uint16_t))
+            fBiasDac.assign(evt.Ptr<uint16_t>(), evt.Ptr<uint16_t>()+416);
+        return GetCurrentState();
+    }
+
+    int HandleCameraTemp(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "HandleCameraTemp", 323*sizeof(float)))
+        {
+            fTimeTemp = Time(Time::none);
+            return GetCurrentState();
+        }
+
+        //fTempOffset = (avgt-25)*0.0561765; // [V] From Hamamatsu datasheet
+        //fTempOffset = (avgt-25)*0.05678; // [V] From Hamamatsu datasheet plus our own measurement (gein vs. temperature)
+
+        const float *ptr = evt.Ptr<float>(4);
+
+        fTimeTemp = evt.GetTime();
+        fTemp     = evt.Get<float>(321*4);
+
+        fTempOffsetAvg = (fTemp-25)*fTempCoefficient;
+        fTempOffsetRms =  evt.Get<float>(322*4)*fTempCoefficient;
+
+        fTempOffset.resize(320);
+        for (int i=0; i<320; i++)
+            fTempOffset[i] = (ptr[i]-25)*fTempCoefficient;
+
+        return GetCurrentState();
+    }
+
+    pair<vector<float>, vector<float>> AverageCurrents(const int16_t *ptr, int n)
+    {
+        if (fCursorCur++>=0)
+        {
+            for (int i=0; i<BIAS::kNumChannels; i++)
+            {
+                fCurrentsAvg[i] += ptr[i];
+                fCurrentsRms[i] += ptr[i]*ptr[i];
+            }
+        }
+
+        if (fCursorCur<n)
+            return make_pair(vector<float>(), vector<float>());
+
+        const double conv = 5e-3/4096;
+
+        vector<float> rms(BIAS::kNumChannels);
+        vector<float> avg(BIAS::kNumChannels);
+        for (int i=0; i<BIAS::kNumChannels; i++)
+        {
+            avg[i]  = double(fCurrentsAvg[i])/fCursorCur * conv;
+            rms[i]  = double(fCurrentsRms[i])/fCursorCur * conv * conv;
+            rms[i] -= avg[i]*avg[i];
+            rms[i]  = rms[i]<0 ? 0 : sqrt(rms[i]);
+        }
+
+        return make_pair(avg, rms);
+    }
+
+    int HandleCalibration(const EventImp &evt)
+    {
+        if (fDimBias.state()!=BIAS::State::kVoltageOn)
+            return GetCurrentState();
+
+        const uint16_t dac = 256+512*fCalibStep; // Command value
+
+        // Only the channels which are no spare channels are ramped
+        if (std::count(fBiasDac.begin(), fBiasDac.end(), dac)!=320)
+            return GetCurrentState();
+
+        const auto rc = AverageCurrents(evt.Ptr<int16_t>(), fNumCalibRequests);
+        if (rc.first.size()==0)
+        {
+            Dim::SendCommandNB("BIAS_CONTROL/REQUEST_STATUS");
+            return GetCurrentState();
+        }
+
+        const vector<float> &avg = rc.first;
+        const vector<float> &rms = rc.second;
+
+        // Current through resistor R8
+        fCalibCurrentMes[fCalibStep] = avg;       // [A]
+        fCalibVoltage[fCalibStep]    = fBiasVolt; // [V]
+
+        // ------------------------- Update calibration data --------------------
+
+        struct cal_data
+        {
+            uint32_t dac;
+            float    U[416];
+            float    Iavg[416];
+            float    Irms[416];
+
+            cal_data() { memset(this, 0, sizeof(cal_data)); }
+        } __attribute__((__packed__));
+
+        cal_data cal;
+        cal.dac = dac;
+        memcpy(cal.U,    fBiasVolt.data(), 416*sizeof(float));
+        memcpy(cal.Iavg, avg.data(),       416*sizeof(float));
+        memcpy(cal.Irms, rms.data(),       416*sizeof(float));
+
+        fDimCalibration2.setData(cal);
+        fDimCalibration2.Update(fTimeCalib);
+
+        // -------------------- Start next calibration steo ---------------------
+
+        if (++fCalibStep<6)
+        {
+            fCursorCur  = -fNumCalibIgnore;
+            fCurrentsAvg.assign(BIAS::kNumChannels, 0);
+            fCurrentsRms.assign(BIAS::kNumChannels, 0);
+
+            Dim::SendCommandNB("BIAS_CONTROL/SET_GLOBAL_DAC", uint32_t(256+512*fCalibStep));
+
+            return GetCurrentState();
+        }
+
+        // --------------- Calculate old style calibration ----------------------
+
+        fCalibration.resize(BIAS::kNumChannels*4);
+
+        float *pavg  = fCalibration.data();
+        float *prms  = fCalibration.data()+BIAS::kNumChannels;
+        float *pres  = fCalibration.data()+BIAS::kNumChannels*2;
+        float *pUmes = fCalibration.data()+BIAS::kNumChannels*3;
+
+        for (int i=0; i<BIAS::kNumChannels; i++)
+        {
+            const double I = fCalibCurrentMes[5][i]; // [A]
+            const double U = fBiasVolt[i];           // [V]
+
+            pavg[i]  = I*1e6;                        // [uA]
+            prms[i]  = rms[i]*1e6;                   // [uA]
+            pres[i]  = U/I;                          // [Ohm]
+            pUmes[i] = U;                            // [V]
+        }
+
+        fDimCalibration.setData(fCalibration);
+        fDimCalibration.Update(fTimeCalib);
+
+        // -------------------- New style calibration --------------------------
+
+        fCalibDeltaI.resize(BIAS::kNumChannels);
+        fCalibR8.resize(BIAS::kNumChannels);
+
+        // Linear regression of the values at 256+512*N for N={ 3, 4, 5 }
+        for (int i=0; i<BIAS::kNumChannels; i++)
+        {
+            // x: Idac
+            // y: Iadc
+
+            double x  = 0;
+            double y  = 0;
+            double xx = 0;
+            double xy = 0;
+
+            const int beg = 3;
+            const int end = 5;
+            const int len = end-beg+1;
+
+            for (int j=beg; j<=end; j++)
+            {
+                const double Idac = (256+512*j)*1e-3/4096;
+
+                x  += Idac;
+                xx += Idac*Idac;
+                y  += fCalibCurrentMes[j][i];
+                xy += fCalibCurrentMes[j][i]*Idac;
+            }
+
+            const double m1 = xy - x*y / len;
+            const double m2 = xx - x*x / len;
+
+            const double m = m2==0 ? 0 : m1/m2;
+
+            const double t = (y - m*x) / len;
+
+            fCalibDeltaI[i] = t;     // [A]
+            fCalibR8[i]     = 100/m; // [Ohm]
+        }
+
+        vector<float> v;
+        v.reserve(BIAS::kNumChannels*2);
+        v.insert(v.end(), fCalibDeltaI.begin(), fCalibDeltaI.end());
+        v.insert(v.end(), fCalibR8.begin(),     fCalibR8.end());
+
+        fDimCalibrationR8.setData(v);
+        fDimCalibrationR8.Update(fTimeCalib);
+
+        // ---------------------------------------------------------------------
+
+        Info("Calibration successfully done.");
+        Dim::SendCommandNB("BIAS_CONTROL/SET_ZERO_VOLTAGE");
+
+        return Feedback::State::kCalibrated;
+    }
+
+    int CheckLimits(const float *I)
+    {
+        const float fAbsoluteMedianCurrentLimit   = 85;
+        const float fRelativePixelCurrentLimit3   = 20;
+        const float fRelativePixelCurrentLimit0   = 45;
+
+        const float fAbsolutePixelCurrentLimit3   = fAbsoluteMedianCurrentLimit + fRelativePixelCurrentLimit3;
+        const float fAbsolutePixelCurrentLimit0   = fAbsoluteMedianCurrentLimit + fRelativePixelCurrentLimit0;
+
+        const float fRelativeCurrentLimitWarning  = 10;//10;
+        const float fRelativeCurrentLimitCritical = 15;//20;
+        const float fRelativeCurrentLimitShutdown = 25;
+
+        fTimeoutCritical = 3000; // 5s
+
+        // Copy the calibrated currents
+        vector<float> v(I, I+320);
+
+        // Exclude the crazy patches (that's currently the best which could be done)
+        v[66]  = 0;
+        v[191] = 0;
+        v[193] = 0;
+
+        sort(v.begin(), v.end());
+
+        const float &imax0 = v[319];
+        const float &imax3 = v[316];
+        const float &imed  = v[161];
+
+        const bool shutdown =
+            imed >fAbsoluteMedianCurrentLimit+fRelativeCurrentLimitShutdown ||
+            imax3>fAbsolutePixelCurrentLimit3+fRelativeCurrentLimitShutdown ||
+            imax0>fAbsolutePixelCurrentLimit0+fRelativeCurrentLimitShutdown;
+
+        const bool critical =
+            imed >fAbsoluteMedianCurrentLimit+fRelativeCurrentLimitCritical ||
+            imax3>fAbsolutePixelCurrentLimit3+fRelativeCurrentLimitCritical ||
+            imax0>fAbsolutePixelCurrentLimit0+fRelativeCurrentLimitCritical;
+
+        const bool warning =
+            imed >fAbsoluteMedianCurrentLimit+fRelativeCurrentLimitWarning ||
+            imax3>fAbsolutePixelCurrentLimit3+fRelativeCurrentLimitWarning ||
+            imax0>fAbsolutePixelCurrentLimit0+fRelativeCurrentLimitWarning;
+
+        bool standby = GetCurrentState()==Feedback::State::kOnStandby;
+
+        if (standby)
+        {
+            // On Standby
+            if (fVoltageReduction==0 &&
+                imed <fAbsoluteMedianCurrentLimit &&
+                imax3<fAbsolutePixelCurrentLimit3 &&
+                imax0<fAbsolutePixelCurrentLimit0)
+            {
+                // Currents are back at nominal value and currents are again
+                // below the current limit, switching back to standard operation.
+                return Feedback::State::kInProgress;
+            }
+        }
+
+        // Shutdown level
+        if (!standby && shutdown)
+        {
+            // Currents exceed the shutdown limit, operation is switched
+            // immediately to voltage reduced operation
+
+            // Just in case (FIXME: Is that really the right location?)
+            Dim::SendCommandNB("FAD_CONTROL/CLOSE_ALL_OPEN_FILES");
+
+            Error("Current limit for shutdown exceeded.... swtching to standby mode.");
+
+            standby = true;
+        }
+
+        // Critical level
+        if (!standby && critical)
+        {
+            // This is a state transition from InProgress or Warning to Critical.
+            // Keep the transition time.
+            if (GetCurrentState()==Feedback::State::kInProgress || GetCurrentState()==Feedback::State::kWarning)
+            {
+                Info("Critical current limit exceeded.... waiting for "+to_string(fTimeoutCritical)+" ms.");
+                fTimeCritical = Time();
+            }
+
+            // Critical is only allowed for fTimeoutCritical milliseconds.
+            // After this time, the operation is changed to reduced voltage.
+            if (Time()<fTimeCritical+boost::posix_time::milliseconds(fTimeoutCritical))
+                return Feedback::State::kCritical;
+
+            // Just in case (FIXME: Is that really the right location?)
+            Dim::SendCommandNB("FAD_CONTROL/CLOSE_ALL_OPEN_FILES");
+
+            // Currents in critical state
+            Warn("Critical current limit exceeded timeout.... switching to standby mode.");
+
+            standby = true;
+        }
+
+        // Warning level (is just informational)
+        if (!standby && warning)
+            return Feedback::State::kWarning;
+
+        // keep voltage
+        return standby ? Feedback::State::kOnStandby : Feedback::State::kInProgress;
+    }
+
+    int HandleBiasCurrent(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "HandleBiasCurrent", BIAS::kNumChannels*sizeof(uint16_t)))
+            return Feedback::State::kConnected;
+
+        if (GetCurrentState()<Feedback::State::kCalibrating)
+            return GetCurrentState();
+
+        // ------------------------------- HandleCalibration -----------------------------------
+        if (GetCurrentState()==Feedback::State::kCalibrating)
+            return HandleCalibration(evt);
+
+        // ---------------------- Calibrated, WaitingForData, InProgress -----------------------
+
+        // We are waiting but no valid temperature yet, go on waiting
+        if (GetCurrentState()==Feedback::State::kWaitingForData &&
+            (!fTimeTemp.IsValid() || Time()-fTimeTemp>boost::posix_time::minutes(5)))
+            return GetCurrentState();
+
+        // We are waiting but biasctrl is still in ramping (this might
+        // be the case if the feedback was started with a new overvoltage
+        // while the last ramping command was still in progress)
+        if (GetCurrentState()==Feedback::State::kWaitingForData &&
+            fDimBias.state()==BIAS::State::kRamping)
+            return GetCurrentState();
+
+        // We are already in progress but no valid temperature update anymore
+        if (GetCurrentState()>=Feedback::State::kInProgress &&
+            (!fTimeTemp.IsValid() || Time()-fTimeTemp>boost::posix_time::minutes(5)))
+        {
+            Warn("Current control in progress, but last received temperature older than 5min... switching voltage off.");
+            Dim::SendCommandNB("BIAS_CONTROL/SET_ZERO_VOLTAGE");
+            return Feedback::State::kCalibrated;
+        }
+
+        // ---------------------- Calibrated, WaitingForData, InProgress -----------------------
+
+        const int Navg = fDimBias.state()!=BIAS::State::kVoltageOn ? 1 : 3;
+
+        const vector<float> &Imes = AverageCurrents(evt.Ptr<int16_t>(), Navg).first;
+        if (Imes.size()==0)
+            return GetCurrentState();
+
+        fCurrentsAvg.assign(416, 0);
+        fCurrentsRms.assign(416, 0);
+        fCursorCur = 0;
+
+        // -------------------------------------------------------------------------------------
+
+        // Nominal overvoltage (w.r.t. the bias setup values)
+        const double voltageoffset = GetCurrentState()<Feedback::State::kWaitingForData ? 0 : fUserOffset;
+
+        double avg[2] = {   0,   0 };
+        double min[2] = {  90,  90 };
+        double max[2] = { -90, -90 };
+        int    num[3] = {   0,   0,   0 };
+
+        vector<double> med[3];
+        med[0].resize(416);
+        med[1].resize(416);
+        med[2].resize(416);
+
+        struct dim_data
+        {
+            float I[416];
+            float Iavg;
+            float Irms;
+            float Imed;
+            float Idev;
+            uint32_t N;
+            float Tdiff;
+            float Uov[416];
+            float Unom;
+            float dUtemp;
+
+            dim_data() { memset(this, 0, sizeof(dim_data)); }
+        } __attribute__((__packed__));
+
+        int Ndev[3] = { 0, 0, 0 };
+
+        dim_data data;
+
+        data.Unom   = voltageoffset;
+        data.dUtemp = fTempOffsetAvg;
+
+        vector<float> vec(416);
+
+        // ================================= old =======================
+        // Pixel  583: 5 31 == 191 (5)  C2 B3 P3
+        // Pixel  830: 2  2 ==  66 (4)  C0 B8 P1
+        // Pixel 1401: 6  1 == 193 (5)  C2 B4 P0
+
+        double UdrpAvg = 0;
+        double UdrpRms = 0;
+
+        for (int i=0; i<320/*BIAS::kNumChannels*/; i++)
+        {
+            const PixelMapEntry &hv = fMap.hv(i);
+            if (!hv)
+                continue;
+
+            // Number of G-APDs in this patch
+            const int N = hv.count();
+
+            // Average measured ADC value for this channel
+            // FIXME: This is a workaround for the problem with the
+            // readout of bias voltage channel 263
+            const double adc = Imes[i]/* * (5e-3/4096)*/; // [A]
+
+            // Current through ~100 Ohm measurement resistor
+            //const double I8 = (adc-fCalibDeltaI[i])*fCalibR8[i]/100;
+            const double I8 = adc-fCalibDeltaI[i];
+
+            // Current through calibration resistors (R9)
+            // This is uncalibrated, but since the corresponding calibrated
+            // value I8 is subtracted, the difference should yield a correct value
+            const double I9 = fBiasDac[i] * (1e-3/4096);//U9/R9;   [A]
+
+            // Current in R4/R5 branch
+            //const double Iout = I8 - I9;//I8>I9 ? I8 - I9 : 0;
+            const double Iout = I8 - I9*100/fCalibR8[i];//I8>I9 ? I8 - I9 : 0;
+
+            // Applied voltage at calibration resistors, according to biasctrl
+            const double U9 = fBiasVolt[i];
+
+            //          new    I8 - I9*100/fCalibR8       100
+            // change = --- = ---------------------- =  --------  = 0.8
+            //          old    I8*fCalibR8/100 - I9     fCalibR8
+
+            // Serial resistors (one 1kOhm at the output of the bias crate, one 1kOhm in the camera)
+            const double R4 = 2000;
+
+            // Serial resistor of the individual G-APDs plus 50 Ohm termination
+            double R5 = 3900./N + 50;
+
+            // This is assuming that the broken pixels have a 390 Ohm instead of 3900 Ohm serial resistor
+            if (i==66 || i==193)               // Pixel 830(66) / Pixel 583(191)
+                R5 = 1./((N-1)/3900.+1/1000.);
+            if (i==191)                        // Pixel 1399(193)
+                R5 = 1./((N-1)/3900.+1/390.);
+            if (i==17 || i==206)               // dead pixel 923(80) / dead pixel 424(927)
+                R5 = 3900./(N-1);              // cannot identify third dead pixel in light-pulser data
+
+            // The measurement resistor
+            const double R8 = 0;
+
+            // Total resistance of branch with diodes (R4+R5)
+            // Assuming that the voltage output of the OpAMP is linear
+            // with the DAC setting and not the voltage at R9, the
+            // additional voltage drop at R8 must be taken into account
+            const double R = R4 + R5 + R8;
+
+            // For the patches with a broken resistor - ignoring the G-APD resistance -
+            // we get:
+            //
+            // I[R=3900] =  Iout *      1/(10+(N-1))  = Iout        /(N+9)
+            // I[R= 390] =  Iout * (1 - 1/(10+(N-1))) = Iout * (N+8)/(N+9)
+            //
+            // I[R=390] / I[R=3900] = N+8
+            //
+            // Udrp = Iout*3900/(N+9) + Iout*1000 + Iout*1000 = Iout * R
+
+            // Voltage drop in R4/R5 branch (for the G-APDs with correct resistor)
+            // The voltage drop should not be <0, otherwise an unphysical value
+            // would be amplified when Uset is calculated.
+            const double Udrp = Iout<0 ? 0 : R*Iout;
+
+            // Nominal operation voltage with correction for temperature dependence
+            const double Uop = fVoltGapd[i] + fVoltOffset[i] + fTempOffset[i];
+
+            // Current overvoltage (at a G-APD with the correct 3900 Ohm resistor)
+            // expressed w.r.t. to the operation voltage
+            const double Uov = (U9-Udrp)-Uop>-1.4 ? (U9-Udrp)-Uop : -1.4;
+
+            // The current through one G-APD is the sum divided by the number of G-APDs
+            // (assuming identical serial resistors)
+            double Iapd = Iout/N;
+
+            // Rtot = Uapd/Iout
+            // Ich  = Uapd/Rch = (Rtot*Iout) / Rch = Rtot/Rch * Iout
+            //
+            // Rtot = 3900/N
+            // Rch  = 3900
+            //
+            // Rtot = 1./((N-1)/3900 + 1/X)       X=390 or X=1000
+            // Rch  = 3900
+            //
+            // Rtot/Rch =   1/((N-1)/3900 + 1/X)/3900
+            // Rtot/Rch =   1/( [ X*(N-1) + 3900 ] / [ 3900 * X ])/3900
+            // Rtot/Rch =   X/( [ X*(N-1)/3900 + 1 ] )/3900
+            // Rtot/Rch =   X/( [ X*(N-1) + 3900 ] )
+            // Rtot/Rch =   1/( [ (N-1) + 3900/X ] )
+            //
+            // Rtot/Rch[390Ohm]  =  1/( [ N + 9.0 ] )
+            // Rtot/Rch[1000Ohm] =  1/( [ N + 2.9 ] )
+            //
+            // In this and the previosu case we neglect the resistance of the G-APDs, but we can make an
+            // assumption: The differential resistance depends more on the NSB than on the PDE,
+            // thus it is at least comparable for all G-APDs in the patch. In addition, although the
+            // G-APD with the 390Ohm serial resistor has the wrong voltage applied, this does not
+            // significantly influences the ohmic resistor or the G-APD because the differential
+            // resistor is large enough that the increase of the overvoltage does not dramatically
+            // increase the current flow as compared to the total current flow.
+            if (i==66 || i==193)           // Iout/13 15.8   / Iout/14  16.8
+                Iapd = Iout/(N+2.9);
+            if (i==191)                    // Iout/7.9  38.3
+                Iapd = Iout/(N+9);
+            if (i==17 || i==206)
+                Iapd = Iout/(N-1);
+
+            // The differential resistance of the G-APD, i.e. the dependence of the
+            // current above the breakdown voltage, is given by
+            //const double Rapd = Uov/Iapd;
+            // This allows us to estimate the current Iov at the overvoltage we want to apply
+            //const double Iov = overvoltage/Rapd;
+
+            // Estimate set point for over-voltage (voltage drop at the target point)
+            // This estimation is based on the linear increase of the
+            // gain with voltage and the increase of the crosstalk with
+            // voltage, as measured with the overvoltage-tests (OVTEST)
+            /*
+             Uov+0.44<0.022 ?
+                Ubd + overvoltage + Udrp*exp(0.6*(overvoltage-Uov))*pow((overvoltage+0.44), 0.6) :
+                Ubd + overvoltage + Udrp*exp(0.6*(overvoltage-Uov))*pow((overvoltage+0.44)/(Uov+0.44), 0.6);
+             */
+            const double Uset =
+                Uov+1.4<0.022 ?
+                Uop + voltageoffset + Udrp*exp(0.6*(voltageoffset-Uov))*pow((voltageoffset+1.4),           0.6) :
+                Uop + voltageoffset + Udrp*exp(0.6*(voltageoffset-Uov))*pow((voltageoffset+1.4)/(Uov+1.4), 0.6);
+
+            if (fabs(voltageoffset-Uov)>0.033)
+                Ndev[0]++;
+            if (fabs(voltageoffset-Uov)>0.022)
+                Ndev[1]++;
+            if (fabs(voltageoffset-Uov)>0.011)
+                Ndev[2]++;
+
+            // Voltage set point
+            vec[i] = Uset;
+
+            // Calculate statistics only for channels with a valid calibration
+            //if (Uov>0)
+            {
+                const int g = hv.group();
+
+                med[g][num[g]] = Uov;
+                avg[g] += Uov;
+                num[g]++;
+
+                if (Uov<min[g])
+                    min[g] = Uov;
+                if (Uov>max[g])
+                    max[g] = Uov;
+
+                const double iapd = Iapd*1e6; // A --> uA
+
+                data.I[i]  = iapd;
+                data.Iavg += iapd;
+                data.Irms += iapd*iapd;
+
+                data.Uov[i] = Uov;
+
+                med[2][num[2]++] = iapd;
+
+                UdrpAvg += Udrp;
+                UdrpRms += Udrp*Udrp;
+            }
+        }
+
+
+        // ---------------------------- Calculate statistics ----------------------------------
+
+        // average and rms
+        data.Iavg /= num[2];
+        data.Irms /= num[2];
+        data.Irms -= data.Iavg*data.Iavg;
+
+        data.N = num[2];
+        data.Irms = data.Irms<0 ? 0: sqrt(data.Irms);
+
+        // median
+        sort(med[2].data(), med[2].data()+num[2]);
+
+        data.Imed = num[2]%2 ? med[2][num[2]/2] : (med[2][num[2]/2-1]+med[2][num[2]/2])/2;
+
+        // deviation
+        for (int i=0; i<num[2]; i++)
+            med[2][i] = fabs(med[2][i]-data.Imed);
+
+        sort(med[2].data(), med[2].data()+num[2]);
+
+        data.Idev = med[2][uint32_t(0.682689477208650697*num[2])];
+
+        // time difference to calibration
+        data.Tdiff = evt.GetTime().UnixTime()-fTimeCalib.UnixTime();
+
+        // Average overvoltage
+        const double Uov = (avg[0]+avg[1])/(num[0]+num[1]);
+
+        // ------------------------------- Update voltages ------------------------------------
+
+        int newstate = GetCurrentState();
+
+        if (GetCurrentState()!=Feedback::State::kCalibrated) // WaitingForData, OnStandby, InProgress, kWarning, kCritical
+        {
+            if (fDimBias.state()!=BIAS::State::kRamping)
+            {
+                newstate = CheckLimits(data.I);
+
+                // standby and change reduction level of voltage
+                if (newstate==Feedback::State::kOnStandby)
+                {
+                    // Calculate average applied overvoltage and estimate an offset
+                    // to reach fAbsoluteMedianCurrentLimit
+                    float fAbsoluteMedianCurrentLimit = 85;
+                    const double deltaU = (Uov+1.4)*(1-pow(fAbsoluteMedianCurrentLimit/data.Imed, 1./1.7));
+
+                    if (fVoltageReduction+deltaU<0.033)
+                        fVoltageReduction = 0;
+                    else
+                    {
+                        fVoltageReduction += deltaU;
+
+                        for (int i=0; i<320; i++)
+                            vec[i] -= fVoltageReduction;
+                    }
+                }
+
+                // FIXME: What if the brightest pixel gets too bright???
+                // FIXME: What if fVolatgeReduction > U1.4V?
+
+                // set voltage in 262 -> current in 262/263
+                vec[263] = vec[262]-fVoltGapd[262]+fVoltGapd[263];
+
+//            if (fDimBias.state()!=BIAS::State::kRamping)
+//            {
+                DimClient::sendCommandNB("BIAS_CONTROL/SET_ALL_CHANNELS_VOLTAGE",
+                                         vec.data(), BIAS::kNumChannels*sizeof(float));
+
+                UdrpAvg /= 320;
+                UdrpRms /= 320;
+                UdrpRms -= UdrpAvg*UdrpAvg;
+                UdrpRms  = UdrpRms<0 ? 0 : sqrt(UdrpRms);
+
+                ostringstream msg;
+                msg << fixed;
+                msg << setprecision(2) << "dU(" << fTemp << "degC)="
+                    << setprecision(3) << fTempOffsetAvg << "V+-" << fTempOffsetRms << "  Udrp="
+                    << UdrpAvg << "V+-" << UdrpRms;
+                msg.unsetf(ios_base::floatfield);
+
+                if (fVoltageReduction==0)
+                    msg << " Unom=" << voltageoffset << "V";
+                else
+                    msg << " Ured=" << fVoltageReduction << "V";
+
+                msg << " Uov=" << Uov;
+                msg << " Imed=" << data.Imed << "uA [N=" << Ndev[0] << "/" << Ndev[1] << "/" << Ndev[2] << "]";
+                Info(msg);
+            }
+        }
+        else
+        {
+            if (fDimBias.state()==BIAS::State::kVoltageOn)
+            {
+                ostringstream msg;
+                msg << setprecision(4) << "Current status: dU(" << fTemp << "degC)=" << fTempOffsetAvg << "V+-" << fTempOffsetRms << ", Unom=" << voltageoffset << "V, Uov=" << (num[0]+num[1]>0?(avg[0]+avg[1])/(num[0]+num[1]):0) << " [N=" << Ndev[0] << "/" << Ndev[1] << "/" << Ndev[2] << "]";
+                Info(msg);
+            }
+        }
+
+        //if (GetCurrentState()>=Feedback::State::kOnStandby &&
+        //    fDimBias.state()==BIAS::State::kRamping)
+        //    return newstate;
+
+        // --------------------------------- Console out --------------------------------------
+
+        if (fIsVerbose && !fDimBias.state()==BIAS::State::kRamping)
+        {
+            sort(med[0].begin(), med[0].begin()+num[0]);
+            sort(med[1].begin(), med[1].begin()+num[1]);
+
+            ostringstream msg;
+            msg << "   Avg0=" << setw(7) << avg[0]/num[0]    << "  |  Avg1=" << setw(7) << avg[1]/num[1];
+            Debug(msg);
+
+            msg.str("");
+            msg << "   Med0=" << setw(7) << med[0][num[0]/2] << "  |  Med1=" << setw(7) << med[1][num[1]/2];
+            Debug(msg);
+
+            msg.str("");
+            msg << "   Min0=" << setw(7) << min[0]           << "  |  Min1=" << setw(7) << min[1];
+            Debug(msg);
+
+            msg.str("");
+            msg << "   Max0=" << setw(7) << max[0]           << "  |  Max1=" << setw(7) << max[1];
+            Debug(msg);
+        }
+
+        // ---------------------------- Calibrated Currents -----------------------------------
+
+        // FIXME:
+        //  + Current overvoltage
+        //  + Temp offset
+        //  + User offset
+        //  + Command overvoltage
+        fDimCurrents.setQuality(GetCurrentState());
+        fDimCurrents.setData(&data, sizeof(dim_data));
+        fDimCurrents.Update(evt.GetTime());
+
+        // FIXME: To be checked
+        return GetCurrentState()==Feedback::State::kCalibrated ? Feedback::State::kCalibrated : newstate;
+    }
+
+    // ======================================================================
+
+    int Print() const
+    {
+        Out() << fDim << endl;
+        Out() << fDimFSC << endl;
+        Out() << fDimBias << endl;
+
+        return GetCurrentState();
+    }
+
+    int PrintCalibration()
+    {
+        /*
+        if (fCalibration.size()==0)
+        {
+            Out() << "No calibration performed so far." << endl;
+            return GetCurrentState();
+        }
+
+        const float *avg = fCalibration.data();
+        const float *rms = fCalibration.data()+BIAS::kNumChannels;
+        const float *res = fCalibration.data()+BIAS::kNumChannels*2;
+
+        Out() << "Average current at " << fCalibrationOffset << "V below G-APD operation voltage:\n";
+
+        for (int k=0; k<13; k++)
+            for (int j=0; j<8; j++)
+            {
+                Out() << setw(2) << k << "|" << setw(2) << j*4 << "|";
+                for (int i=0; i<4; i++)
+                    Out() << Tools::Form(" %6.1f+-%4.1f", avg[k*32+j*4+i], rms[k*32+j*4+i]);
+                Out() << '\n';
+            }
+        Out() << '\n';
+
+        Out() << "Measured calibration resistor:\n";
+        for (int k=0; k<13; k++)
+            for (int j=0; j<4; j++)
+            {
+                Out() << setw(2) << k << "|" << setw(2) << j*8 << "|";
+                for (int i=0; i<8; i++)
+                    Out() << Tools::Form(" %5.0f", res[k*32+j*8+i]);
+                Out() << '\n';
+            }
+
+        Out() << flush;
+        */
+        return GetCurrentState();
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return kSM_FatalError;
+
+        fIsVerbose = evt.GetBool();
+
+        return GetCurrentState();
+    }
+
+    int SetCurrentRequestInterval(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetCurrentRequestInterval", 2))
+            return kSM_FatalError;
+
+        fCurrentRequestInterval = evt.GetUShort();
+
+        Info("New current request interval: "+to_string(fCurrentRequestInterval)+"ms");
+
+        return GetCurrentState();
+    }
+
+    int Calibrate()
+    {
+        if (fDimBias.state()!=BIAS::State::kVoltageOff)
+        {
+            Warn("Calibration can only be started when biasctrl is in state VoltageOff.");
+            return GetCurrentState();
+        }
+
+        Message("Starting calibration (ignore="+to_string(fNumCalibIgnore)+", N="+to_string(fNumCalibRequests)+")");
+
+        fCursorCur  = -fNumCalibIgnore;
+        fCurrentsAvg.assign(BIAS::kNumChannels, 0);
+        fCurrentsRms.assign(BIAS::kNumChannels, 0);
+
+        fBiasDac.assign(BIAS::kNumChannels, 0);
+
+        fCalibStep = 3;
+        fTimeCalib = Time();
+
+        Dim::SendCommandNB("BIAS_CONTROL/SET_GLOBAL_DAC", uint32_t(256+512*fCalibStep));
+
+        return Feedback::State::kCalibrating;
+    }
+
+    int Start(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "Start", 4))
+            return kSM_FatalError;
+
+        /*
+        if (fDimBias.state()==BIAS::State::kRamping)
+        {
+            Warn("Feedback can not be started when biasctrl is in state Ramping.");
+            return GetCurrentState();
+        }*/
+
+        fUserOffset = evt.GetFloat()-1.1;
+        fVoltageReduction = 0;
+
+        fCursorCur = 0;
+
+        fCurrentsAvg.assign(BIAS::kNumChannels, 0);
+        fCurrentsRms.assign(BIAS::kNumChannels, 0);
+
+        ostringstream out;
+        out << "Starting feedback with an offset of " << fUserOffset << "V";
+        Message(out);
+
+        return Feedback::State::kWaitingForData;
+    }
+
+    int StopFeedback()
+    {
+        if (GetCurrentState()==Feedback::State::kCalibrating)
+            return Feedback::State::kConnected;
+
+        if (GetCurrentState()>Feedback::State::kCalibrated)
+            return Feedback::State::kCalibrated;
+
+        return GetCurrentState();
+    }
+
+    bool LoadOffsets(const string &file)
+    {
+        vector<double> data(416);
+
+        ifstream fin(file);
+
+        int cnt = 0;
+        while (fin && cnt<320)
+            fin >> data[cnt++];
+
+        if (cnt!=320)
+        {
+            Error("Reading offsets from "+file+" failed [N="+to_string(cnt-1)+"]");
+            return false;
+        }
+
+        fVoltOffset = data;
+
+        fDimOffsets.Update(fVoltOffset);
+
+        Info("New voltage offsets loaded from "+file);
+        return true;
+
+    }
+
+    int LoadOffset(const EventImp &evt)
+    {
+        LoadOffsets(evt.GetText());
+        return GetCurrentState();
+    }
+
+    int ResetOffset()
+    {
+        fVoltOffset.assign(416, 0);
+
+        fDimOffsets.Update(fVoltOffset);
+
+        Info("Voltage offsets resetted.");
+        return GetCurrentState();
+    }
+
+    int SaveCalibration()
+    {
+        ofstream fout("feedback-calib.bin");
+
+        double mjd = fTimeCalib.Mjd();
+        fout.write((char*)&mjd, sizeof(double));
+        fout.write((char*)fCalibDeltaI.data(), BIAS::kNumChannels*sizeof(float));
+        fout.write((char*)fCalibR8.data(),     BIAS::kNumChannels*sizeof(float));
+
+        return GetCurrentState();
+    }
+
+    int LoadCalibration()
+    {
+        ifstream fin("feedback-calib.bin");
+
+        double mjd;
+
+        vector<float> di(BIAS::kNumChannels);
+        vector<float> r8(BIAS::kNumChannels);
+
+        fin.read((char*)&mjd, sizeof(double));
+        fin.read((char*)di.data(), BIAS::kNumChannels*sizeof(float));
+        fin.read((char*)r8.data(), BIAS::kNumChannels*sizeof(float));
+
+        if (!fin)
+        {
+            Warn("Reading of calibration failed.");
+            return GetCurrentState();
+        }
+
+        fTimeCalib.Mjd(mjd);
+        fCalibDeltaI = di;
+        fCalibR8 = r8;
+
+        return Feedback::State::kCalibrated;
+    }
+
+
+
+    int Execute()
+    {
+        if (!fDim.online())
+            return Feedback::State::kDimNetworkNA;
+
+        const bool bias = fDimBias.state() >= BIAS::State::kConnecting;
+        const bool fsc  = fDimFSC.state()  >= FSC::State::kConnected;
+
+        // All subsystems are not connected
+        if (!bias && !fsc)
+            return Feedback::State::kDisconnected;
+
+        // Not all subsystems are yet connected
+        if (!bias || !fsc)
+            return Feedback::State::kConnecting;
+
+        if (GetCurrentState()<Feedback::State::kCalibrating)
+            return Feedback::State::kConnected;
+
+        if (GetCurrentState()==Feedback::State::kConnected)
+            return GetCurrentState();
+        if (GetCurrentState()==Feedback::State::kCalibrating)
+            return GetCurrentState();
+
+        // kCalibrated, kWaitingForData, kInProgress
+
+        if (fDimBias.state()==BIAS::State::kVoltageOn || (fDimBias.state()==BIAS::State::kVoltageOff && GetCurrentState()==Feedback::State::kWaitingForData))
+        {
+            static Time past;
+            if (fCurrentRequestInterval>0 && Time()-past>boost::posix_time::milliseconds(fCurrentRequestInterval))
+            {
+                Dim::SendCommandNB("BIAS_CONTROL/REQUEST_STATUS");
+                past = Time();
+            }
+        }
+
+        return GetCurrentState();
+    }
+
+public:
+    StateMachineFeedback(ostream &out=cout) : StateMachineDim(out, "FEEDBACK"),
+        fIsVerbose(false), 
+        //---
+        fDimFSC("FSC_CONTROL"),
+        fDimBias("BIAS_CONTROL"),
+        //---
+        fDimCalibration("FEEDBACK/CALIBRATION", "F:416;F:416;F:416;F:416",
+                        "Current offsets"
+                        "|Avg[uA]:Average offset at dac=256+5*512"
+                        "|Rms[uA]:Rms of Avg"
+                        "|R[Ohm]:Measured calibration resistor"
+                        "|U[V]:Corresponding voltage reported by biasctrl"),
+        fDimCalibration2("FEEDBACK/CALIBRATION_STEPS", "I:1;F:416;F:416;F:416",
+                        "Calibration of the R8 resistor"
+                        "|DAC[dac]:DAC setting"
+                        "|U[V]:Corresponding voltages reported by biasctrl"
+                        "|Iavg[uA]:Averaged measured current"
+                        "|Irms[uA]:Rms measured current"),
+        fDimCalibrationR8("FEEDBACK/CALIBRATION_R8", "F:416;F:416",
+                          "Calibration of R8"
+                          "|DeltaI[uA]:Average offset"
+                          "|R8[Ohm]:Measured effective resistor R8"),
+        fDimCurrents("FEEDBACK/CALIBRATED_CURRENTS", "F:416;F:1;F:1;F:1;F:1;I:1;F:1;F:416;F:1;F:1",
+                     "Calibrated currents"
+                     "|I[uA]:Calibrated currents per pixel"
+                     "|I_avg[uA]:Average calibrated current (N channels)"
+                     "|I_rms[uA]:Rms of calibrated current (N channels)"
+                     "|I_med[uA]:Median calibrated current (N channels)"
+                     "|I_dev[uA]:Deviation of calibrated current (N channels)"
+                     "|N[uint16]:Number of valid values"
+                     "|T_diff[s]:Time difference to calibration"
+                     "|U_ov[V]:Calculated overvoltage w.r.t. operation voltage"
+                     "|U_nom[V]:Nominal overvoltage w.r.t. operation voltage"
+                     "|dU_temp[V]:Correction calculated from temperature"
+                    ),
+        fDimOffsets("FEEDBACK/OFFSETS", "F:416",
+                    "Offsets operation voltages"
+                    "|U[V]:Offset per bias channels"),
+        fVoltOffset(416),
+        fCurrentRequestInterval(0),
+        fNumCalibIgnore(30),
+        fNumCalibRequests(300)
+    {
+        fDim.Subscribe(*this);
+        fDimFSC.Subscribe(*this);
+        fDimBias.Subscribe(*this);
+
+        fDimBias.SetCallback(bind(&StateMachineFeedback::HandleBiasStateChange, this));
+
+        Subscribe("BIAS_CONTROL/CURRENT")
+            (bind(&StateMachineFeedback::HandleBiasCurrent, this, placeholders::_1));
+        Subscribe("BIAS_CONTROL/VOLTAGE")
+            (bind(&StateMachineFeedback::HandleBiasVoltage, this, placeholders::_1));
+        Subscribe("BIAS_CONTROL/DAC")
+            (bind(&StateMachineFeedback::HandleBiasDac,     this, placeholders::_1));
+        Subscribe("BIAS_CONTROL/NOMINAL")
+            (bind(&StateMachineFeedback::HandleBiasNom,     this, placeholders::_1));
+        Subscribe("FSC_CONTROL/BIAS_TEMP")
+            (bind(&StateMachineFeedback::HandleCameraTemp,  this, placeholders::_1));
+
+        // State names
+        AddStateName(Feedback::State::kDimNetworkNA, "DimNetworkNotAvailable",
+                     "The Dim DNS is not reachable.");
+
+        AddStateName(Feedback::State::kDisconnected, "Disconnected",
+                     "The Dim DNS is reachable, but the required subsystems are not available.");
+        AddStateName(Feedback::State::kConnecting, "Connecting",
+                     "Either biasctrl or fscctrl not connected.");
+        AddStateName(Feedback::State::kConnected, "Connected",
+                     "biasctrl and fscctrl are available and connected with their hardware.");
+
+        AddStateName(Feedback::State::kCalibrating, "Calibrating",
+                     "Bias crate calibrating in progress.");
+        AddStateName(Feedback::State::kCalibrated, "Calibrated",
+                     "Bias crate calibrated.");
+
+        AddStateName(Feedback::State::kWaitingForData, "WaitingForData",
+                     "Current control started, waiting for valid temperature and current data.");
+
+        AddStateName(Feedback::State::kOnStandby, "OnStandby",
+                     "Current control in progress but with limited voltage.");
+        AddStateName(Feedback::State::kInProgress, "InProgress",
+                     "Current control in progress.");
+        AddStateName(Feedback::State::kWarning, "Warning",
+                     "Current control in progress but current warning level exceeded.");
+        AddStateName(Feedback::State::kCritical, "Critical",
+                     "Current control in progress but critical current limit exceeded.");
+
+
+        /*
+        AddEvent("SET_CURRENT_REQUEST_INTERVAL")
+            (bind(&StateMachineFeedback::SetCurrentRequestInterval, this, placeholders::_1))
+            ("|interval[ms]:Interval between two current requests in modes which need that.");
+        */
+
+        AddEvent("CALIBRATE", Feedback::State::kConnected, Feedback::State::kCalibrated)
+            (bind(&StateMachineFeedback::Calibrate, this))
+            ("");
+
+        AddEvent("START", "F:1", Feedback::State::kCalibrated)
+            (bind(&StateMachineFeedback::Start, this, placeholders::_1))
+            ("Start the current/temperature control loop"
+             "|Uov[V]:Overvoltage to be applied (standard value is 1.1V)");
+
+        AddEvent("STOP")
+            (bind(&StateMachineFeedback::StopFeedback, this))
+            ("Stop any control loop");
+
+        AddEvent("LOAD_OFFSETS", "C", Feedback::State::kConnected, Feedback::State::kCalibrated)
+            (bind(&StateMachineFeedback::LoadOffset, this, placeholders::_1))
+            ("");
+        AddEvent("RESET_OFFSETS", Feedback::State::kConnected, Feedback::State::kCalibrated)
+            (bind(&StateMachineFeedback::ResetOffset, this))
+            ("");
+
+
+        AddEvent("SAVE_CALIBRATION", Feedback::State::kCalibrated)
+            (bind(&StateMachineFeedback::SaveCalibration, this))
+            ("");
+        AddEvent("LOAD_CALIBRATION", Feedback::State::kConnected)
+            (bind(&StateMachineFeedback::LoadCalibration, this))
+            ("");
+
+
+        AddEvent("PRINT")
+            (bind(&StateMachineFeedback::Print, this))
+            ("");
+        AddEvent("PRINT_CALIBRATION")
+            (bind(&StateMachineFeedback::PrintCalibration, this))
+            ("");
+
+        // Verbosity commands
+        AddEvent("SET_VERBOSE", "B:1")
+            (bind(&StateMachineFeedback::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity when calculating overvoltage");
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fIsVerbose = !conf.Get<bool>("quiet");
+
+        if (!fMap.Read(conf.Get<string>("pixel-map-file")))
+        {
+            Error("Reading mapping table from "+conf.Get<string>("pixel-map-file")+" failed.");
+            return 1;
+        }
+
+        fCurrentRequestInterval = conf.Get<uint16_t>("current-request-interval");
+        fNumCalibIgnore         = conf.Get<uint16_t>("num-calib-ignore");
+        fNumCalibRequests       = conf.Get<uint16_t>("num-calib-average");
+        fTempCoefficient        = conf.Get<double>("temp-coefficient");
+
+        if (conf.Has("offset-file"))
+            LoadOffsets(conf.Get<string>("offset-file"));
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineFeedback>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Feedback options");
+    control.add_options()
+        ("quiet,q", po_bool(true), "Disable printing more information on average overvoltagecontents of all received messages (except dynamic data) in clear text.")
+        ("pixel-map-file",      var<string>()->required(), "Pixel mapping file. Used here to get the default reference voltage.")
+        ("current-request-interval",  var<uint16_t>(1000), "Interval between two current requests.")
+        ("num-calib-ignore",    var<uint16_t>(30), "Number of current requests to be ignored before averaging")
+        ("num-calib-average",   var<uint16_t>(300), "Number of current requests to be averaged")
+        ("temp-coefficient",    var<double>()->required(), "Temp. coefficient [V/K]")
+        ("offset-file",         var<string>(), "File with operation voltage offsets")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The feedback control the BIAS voltages based on the calibration signal.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: feedback [-c type] [OPTIONS]\n"
+        "  or:  feedback [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineFeedback>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+//            if (conf.Get<bool>("no-dim"))
+//                return RunShell<LocalStream, StateMachine, ConnectionFSC>(conf);
+//            else
+                return RunShell<LocalStream>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+/*        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionFSC>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionFSC>(conf);
+        }
+        else
+*/        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell>(conf);
+            else
+                return RunShell<LocalConsole>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/testFACT++branch/src/fitsCompressor.cc
===================================================================
--- branches/testFACT++branch/src/fitsCompressor.cc	(revision 18277)
+++ branches/testFACT++branch/src/fitsCompressor.cc	(revision 18277)
@@ -0,0 +1,2133 @@
+/*
+ * fitsCompressor.cc
+ *
+ *  Created on: May 7, 2013
+ *      Author: lyard
+ */
+
+
+#include "Configuration.h"
+#include "../externals/factfits.h"
+#include "../externals/ofits.h"
+#include "../externals/checksum.h"
+
+#include <map>
+#include <fstream>
+#include <sstream>
+#include <iostream>
+
+
+using namespace std;
+
+class CompressedFitsFile
+{
+public:
+    class HeaderEntry
+    {
+        public:
+            /**
+             *  Default constructor
+             */
+            HeaderEntry(): _key(""),
+                           _value(""),
+                           _comment(""),
+                           _fitsString("")
+            {
+            }
+
+            /**
+             * Regular constructor.
+             * @param key the name of the keyword entry
+             * @param value its value
+             * @param comment an optionnal comment to be placed after the value
+             */
+            template<typename T>
+            HeaderEntry(const string& k,
+                        const T& val,
+                        const string& comm) : _key(k),
+                                              _value(""),
+                                              _comment(comm),
+                                              _fitsString("")
+            {
+                setValue(val);
+            }
+
+            /**
+             * From fits.h
+             */
+            string Trim(const string &str, char c=' ')
+            {
+                // Trim Both leading and trailing spaces
+                const size_t pstart = str.find_first_not_of(c); // Find the first character position after excluding leading blank spaces
+                const size_t pend   = str.find_last_not_of(c);  // Find the first character position from reverse af
+
+                // if all spaces or empty return an empty string
+                if (string::npos==pstart || string::npos==pend)
+                    return string();
+
+                return str.substr(pstart, pend-pstart+1);
+            }
+            /**
+             *  Constructor from the original fits entry
+             */
+            HeaderEntry(const string& line)
+            {
+                _fitsString = line.data();
+
+                //parse the line
+                _key = Trim(line.substr(0,8));
+                //COMMENT and/or HISTORY values
+                if (line.substr(8,2)!= "= ")
+                {
+                    _value = "";
+                    _comment = Trim(line.substr(10));
+                    return;
+                }
+                string next=line.substr(10);
+                const size_t slash = next.find_first_of('/');
+                _value = Trim(Trim(Trim(next.substr(0, slash)), '\''));
+                _comment = Trim(next.substr(slash+1));
+            }
+            /**
+             *  Alternative constroctor from the fits entry
+             */
+            HeaderEntry(const vector<char>& lineVec)
+            {
+                HeaderEntry(string(lineVec.data()));
+            }
+            /**
+             *  Destructor
+             */
+            virtual ~HeaderEntry(){}
+
+            const string& value()      const {return _value;}
+            const string& key()        const {return _key;}
+            const string& comment()    const {return _comment;}
+            const string& fitsString() const {return _fitsString;}
+
+            /**
+             * Set a keyword value.
+             * @param value The value to be set
+             * @param update whether the value already exist or not. To be modified soon.
+             */
+            template<typename T>
+            void setValue(const T& val)
+            {
+                ostringstream str;
+                str << val;
+                _value = str.str();
+                buildFitsString();
+            };
+            /**
+             *  Set the comment for a given entry
+             */
+            void setComment(const string& comm)
+            {
+                _comment = comm;
+                buildFitsString();
+            }
+
+        private:
+            /**
+             *  Construct the FITS header string from the key, value and comment
+             */
+            void buildFitsString()
+            {
+                ostringstream str;
+                unsigned int totSize = 0;
+
+                // Tuncate the key if required
+                if (_key.length() > 8)
+                {
+                    str << _key.substr(0, 8);
+                    totSize += 8;
+                }
+                else
+                {
+                    str << _key;
+                    totSize += _key.length();
+                }
+
+                // Append space if key is less than 8 chars long
+                for (int i=totSize; i<8;i++)
+                {
+                    str << " ";
+                    totSize++;
+                }
+
+                // Add separator
+                str << "= ";
+                totSize += 2;
+
+                // Format value
+                if (_value.length() < 20)
+                    for (;totSize<30-_value.length();totSize++)
+                        str << " ";
+
+                if (_value.length() > 70)
+                {
+                    str << _value.substr(0,70);
+                    totSize += 70;
+                }
+                else
+                {
+                    str << _value;
+                    totSize += _value.size();
+                }
+
+                // If there is space remaining, add comment area
+                if (totSize < 77)
+                {
+                    str << " / ";
+                    totSize += 3;
+                    if (totSize < 80)
+                    {
+                        unsigned int commentSize = 80 - totSize;
+                        if (_comment.length() > commentSize)
+                        {
+                            str << _comment.substr(0,commentSize);
+                            totSize += commentSize;
+                        }
+                        else
+                        {
+                            str << _comment;
+                            totSize += _comment.length();
+                        }
+                    }
+                }
+
+                // If there is yet some free space, fill up the entry with spaces
+                for (int i=totSize; i<80;i++)
+                    str << " ";
+
+                _fitsString = str.str();
+
+                // Check for correct completion
+                if (_fitsString.length() != 80)
+                    cout << "Error |" << _fitsString << "| is not of length 80" << endl;
+            }
+
+            string _key;        ///< the key (name) of the header entry
+            string _value;      ///< the value of the header entry
+            string _comment;    ///< the comment associated to the header entry
+            string _fitsString; ///< the string that will be written to the fits file
+    };
+
+    /**
+     *  Supported compressions
+     */
+    typedef enum
+    {
+        UNCOMPRESSED,
+        SMOOTHMAN
+    } FitsCompression;
+
+    /**
+     *  Columns class
+     */
+    class ColumnEntry
+    {
+        public:
+            /**
+             *  Default constructor
+             */
+            ColumnEntry();
+
+            /**
+             *  Default destructor
+             */
+            virtual ~ColumnEntry(){}
+
+            /**
+             *  Constructor from values
+             *  @param n the column name
+             *  @param t the column type
+             *  @param numof the number of entries in the column
+             *  @param comp the compression type for this column
+             */
+            ColumnEntry(const string& n,
+                        char          t,
+                        int           numOf,
+                        BlockHeader&   head,
+                        vector<uint16_t>& seq) : _name(n),
+                                                 _num(numOf),
+                                                 _typeSize(0),
+                                                 _offset(0),
+                                                 _type(t),
+                                                 _description(""),
+                                                 _header(head),
+                                                 _compSequence(seq)
+            {
+                switch (t)
+                {
+                    case 'L':
+                    case 'A':
+                    case 'B': _typeSize = 1; break;
+                    case 'I': _typeSize = 2; break;
+                    case 'J':
+                    case 'E': _typeSize = 4; break;
+                    case 'K':
+                    case 'D': _typeSize = 8; break;
+                    default:
+                    cout << "Error: typename " << t << " missing in the current implementation" << endl;
+                };
+
+                ostringstream str;
+                str << "data format of field: ";
+
+                switch (t)
+                {
+                    case 'L': str << "1-byte BOOL"; break;
+                    case 'A': str << "1-byte CHAR"; break;
+                    case 'B': str << "BYTE"; break;
+                    case 'I': str << "2-byte INTEGER"; break;
+                    case 'J': str << "4-byte INTEGER"; break;
+                    case 'K': str << "8-byte INTEGER"; break;
+                    case 'E': str << "4-byte FLOAT"; break;
+                    case 'D': str << "8-byte FLOAT"; break;
+                }
+
+                _description = str.str();
+            }
+
+            const string& name()                 const { return _name;};
+            int           width()                const { return _num*_typeSize;};
+            int           offset()               const { return _offset; };
+            int           numElems()             const { return _num; };
+            int           sizeOfElems()          const { return _typeSize;};
+            void          setOffset(int off)           { _offset = off;};
+            char          type()                 const { return _type;};
+            string        getDescription()       const { return _description;}
+            BlockHeader& getBlockHeader()  { return _header;}
+            const vector<uint16_t>& getCompressionSequence() const { return _compSequence;}
+            const char& getColumnOrdering() const { return _header.ordering;}
+
+
+            string        getCompressionString() const
+            {
+                return "FACT";
+             /*
+                ostringstream str;
+                for (uint32_t i=0;i<_compSequence.size();i++)
+                switch (_compSequence[i])
+                {
+                    case FACT_RAW: if (str.str().size() == 0) str << "RAW"; break;
+                    case FACT_SMOOTHING: str << "SMOOTHING "; break;
+                    case FACT_HUFFMAN16: str << "HUFFMAN16 "; break;
+                };
+                return str.str();*/
+            }
+
+        private:
+
+            string _name;          ///< name of the column
+            int     _num;          ///< number of elements contained in one row of this column
+            int    _typeSize;      ///< the number of bytes taken by one element
+            int    _offset;        ///< the offset of the column, in bytes, from the beginning of one row
+            char   _type;          ///< the type of the column, as specified by the fits documentation
+            string _description;   ///< a description for the column. It will be placed in the header
+            BlockHeader _header;
+            vector<uint16_t> _compSequence;
+    };
+
+    public:
+        ///@brief default constructor. Assigns a default number of rows and tiles
+        CompressedFitsFile(uint32_t numTiles=100, uint32_t numRowsPerTile=100);
+
+        ///@brief default destructor
+        virtual ~CompressedFitsFile();
+
+        ///@brief get the header of the file
+        vector<HeaderEntry>& getHeaderEntries() { return _header;}
+
+    protected:
+        ///@brief protected function to allocate the intermediate buffers
+        bool reallocateBuffers();
+
+        //FITS related stuff
+        vector<HeaderEntry>  _header;         ///< Header keys
+        vector<ColumnEntry>  _columns;        ///< Columns in the file
+        uint32_t             _numTiles;       ///< Number of tiles (i.e. groups of rows)
+        uint32_t             _numRowsPerTile; ///< Number of rows per tile
+        uint32_t             _totalNumRows;   ///< Total number of raws
+        uint32_t             _rowWidth;       ///< Total number of bytes in one row
+        bool                 _headerFlushed;  ///< Flag telling whether the header record is synchronized with the data on disk
+        char*                _buffer;         ///< Memory buffer to store rows while they are not compressed
+        Checksum             _checksum;       ///< Checksum for asserting the consistency of the data
+        fstream              _file;           ///< The actual file streamer for accessing disk data
+
+        //compression related stuff
+        typedef pair<int64_t, int64_t> CatalogEntry;
+        typedef vector<CatalogEntry>   CatalogRow;
+        typedef vector<CatalogRow>     CatalogType;
+        CatalogType _catalog;              ///< Catalog, i.e. the main table that points to the compressed data.
+        uint64_t                 _heapPtr; ///< the address in the file of the heap area
+        vector<char*> _transposedBuffer;   ///< Memory buffer to store rows while they are transposed
+        vector<char*> _compressedBuffer;   ///< Memory buffer to store rows while they are compressed
+
+        //thread related stuff
+        uint32_t          _numThreads;    ///< The number of threads that will be used to compress
+        uint32_t          _threadIndex;   ///< A variable to assign threads indices
+        vector<pthread_t> _thread;        ///< The thread handler of the compressor
+        vector<uint32_t>  _threadNumRows; ///< Total number of rows for thread to compress
+        vector<uint32_t>  _threadStatus;  ///< Flag telling whether the buffer to be transposed (and compressed) is full or empty
+
+        //thread states. Not all used, but they do not hurt
+        static const uint32_t       _THREAD_WAIT_; ///< Thread doing nothing
+        static const uint32_t   _THREAD_COMPRESS_; ///< Thread working, compressing
+        static const uint32_t _THREAD_DECOMPRESS_; ///< Thread working, decompressing
+        static const uint32_t      _THREAD_WRITE_; ///< Thread writing data to disk
+        static const uint32_t       _THREAD_READ_; ///< Thread reading data from disk
+        static const uint32_t       _THREAD_EXIT_; ///< Thread exiting
+
+        static HeaderEntry _dummyHeaderEntry; ///< Dummy entry for returning if requested on is not found
+};
+
+class CompressedFitsWriter : public CompressedFitsFile
+{
+    public:
+        ///@brief Default constructor. 100 tiles of 100 rows each are assigned by default
+        CompressedFitsWriter(uint32_t numTiles=100, uint32_t numRowsPerTile=100);
+
+        ///@brief default destructor
+        virtual ~CompressedFitsWriter();
+
+        ///@brief add one column to the file
+        bool addColumn(const ColumnEntry& column);
+
+        ///@brief sets a given header key
+        bool setHeaderKey(const HeaderEntry&);
+
+        bool changeHeaderKey(const string& origName, const string& newName);
+
+        ///@brief open a new fits file
+        bool open(const string& fileName, const string& tableName="Data");
+
+        ///@brief close the opened file
+        bool close();
+
+        ///@brief write one row of data, already placed in bufferToWrite. Does the byte-swapping
+        bool writeBinaryRow(const char* bufferToWrite);
+
+        uint32_t getRowWidth();
+
+        ///@brief assign a given (already loaded) drs calibration
+        void setDrsCalib(int16_t* data);
+
+        ///@brief set the number of worker threads compressing the data.
+        bool setNumWorkingThreads(uint32_t num);
+
+    private:
+        ///@brief compresses one buffer of data, the one given by threadIndex
+        uint64_t compressBuffer(uint32_t threadIndex);
+
+        ///@brief writes an already compressed buffer to disk
+        bool writeCompressedDataToDisk(uint32_t threadID, uint32_t sizeToWrite);
+
+        ///@brief add the header checksum to the datasum
+        void addHeaderChecksum(Checksum& checksum);
+
+        ///@brief write the header. If closingFile is set to true, checksum is calculated
+        void writeHeader(bool closingFile = false);
+
+        ///@brief write the compressed data catalog. If closingFile is set to true, checksum is calculated
+        void writeCatalog(bool closingFile=false);
+
+        /// FIXME this was a bad idea. Move everything to the regular header
+        vector<HeaderEntry> _defaultHeader;
+
+        /// the main function compressing the data
+        static void* threadFunction(void* context);
+
+        /// Write the drs calibration to disk, if any
+        void writeDrsCalib();
+
+        /// Copy and transpose (or semi-transpose) one tile of data
+        void copyTransposeTile(uint32_t index);
+
+        /// Specific compression functions
+        uint32_t compressUNCOMPRESSED(char* dest, const char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems);
+        uint32_t      compressHUFFMAN(char* dest, const char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems);
+        uint32_t    compressSMOOTHMAN(char* dest, char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems);
+        uint32_t       applySMOOTHING(char* dest, char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems);
+
+        int32_t         _checkOffset;  ///< offset to the data pointer to calculate the checksum
+        int16_t*        _drsCalibData; ///< array of the Drs baseline mean
+        int32_t         _threadLooper; ///< Which thread will deal with the upcoming bunch of data ?
+        pthread_mutex_t _mutex;        ///< mutex for compressing threads
+
+
+        static string _emptyBlock; ///< an empty block to be apened at the end of a file so that its length is a multiple of 2880
+        static string _fitsHeader; ///< the default header to be written in every fits file
+};
+
+const uint32_t CompressedFitsFile::_THREAD_WAIT_      = 0;
+const uint32_t CompressedFitsFile::_THREAD_COMPRESS_  = 1;
+const uint32_t CompressedFitsFile::_THREAD_DECOMPRESS_= 2;
+const uint32_t CompressedFitsFile::_THREAD_WRITE_     = 3;
+const uint32_t CompressedFitsFile::_THREAD_READ_      = 4;
+const uint32_t CompressedFitsFile::_THREAD_EXIT_      = 5;
+
+template<>
+void CompressedFitsFile::HeaderEntry::setValue(const string& v)
+{
+    string val = v;
+    if (val.size() > 2 && val[0] == '\'')
+    {
+        size_t pos = val.find_last_of("'");
+        if (pos != string::npos && pos != 0)
+            val = val.substr(1, pos-1);
+    }
+    ostringstream str;
+
+    str << "'" << val << "'";
+    for (int i=str.str().length(); i<20;i++)
+        str << " ";
+    _value = str.str();
+    buildFitsString();
+}
+
+/**
+ * Default header to be written in all fits files
+ */
+string CompressedFitsWriter::_fitsHeader = "SIMPLE  =                    T / file does conform to FITS standard             "
+                    "BITPIX  =                    8 / number of bits per data pixel                  "
+                    "NAXIS   =                    0 / number of data axes                            "
+                    "EXTEND  =                    T / FITS dataset may contain extensions            "
+                    "CHECKSUM= '4AcB48bA4AbA45bA'   / Checksum for the whole HDU                     "
+                    "DATASUM = '         0'         / Checksum for the data block                    "
+                    "COMMENT   FITS (Flexible Image Transport System) format is defined in 'Astronomy"
+                    "COMMENT   and Astrophysics', volume 376, page 359; bibcode: 2001A&A...376..359H "
+                    "END                                                                             "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                ";
+
+/**
+ * Empty block to be appenned at the end of files, so that the length matches multiple of 2880 bytes
+ *
+ */
+string CompressedFitsWriter::_emptyBlock = "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                ";
+
+CompressedFitsFile::HeaderEntry CompressedFitsFile::_dummyHeaderEntry;
+/****************************************************************
+ *              SUPER CLASS DEFAULT CONSTRUCTOR
+ ****************************************************************/
+CompressedFitsFile::CompressedFitsFile(uint32_t numTiles,
+                                       uint32_t numRowsPerTile) : _header(),
+                                                                 _columns(),
+                                                                 _numTiles(numTiles),
+                                                                 _numRowsPerTile(numRowsPerTile),
+                                                                 _totalNumRows(0),
+                                                                 _rowWidth(0),
+                                                                 _headerFlushed(false),
+                                                                 _buffer(NULL),
+                                                                 _checksum(0),
+                                                                 _heapPtr(0),
+                                                                 _transposedBuffer(1),
+                                                                 _compressedBuffer(1),
+                                                                 _numThreads(1),
+                                                                 _threadIndex(0),
+                                                                 _thread(1),
+                                                                 _threadNumRows(1),
+                                                                 _threadStatus(1)
+{
+    _catalog.resize(_numTiles);
+    _transposedBuffer[0] = NULL;
+    _compressedBuffer[0] = NULL;
+    _threadStatus[0] = _THREAD_WAIT_;
+    _threadNumRows[0] = 0;
+}
+
+/****************************************************************
+ *              SUPER CLASS DEFAULT DESTRUCTOR
+ ****************************************************************/
+CompressedFitsFile::~CompressedFitsFile()
+{
+    if (_buffer != NULL)
+    {
+        _buffer = _buffer-4;
+        delete[] _buffer;
+        _buffer = NULL;
+        for (uint32_t i=0;i<_numThreads;i++)
+        {
+            _compressedBuffer[i] = _compressedBuffer[i]-4;
+            delete[] _transposedBuffer[i];
+            delete[] _compressedBuffer[i];
+            _transposedBuffer[i] = NULL;
+            _compressedBuffer[i] = NULL;
+        }
+    }
+    if (_file.is_open())
+        _file.close();
+}
+
+/****************************************************************
+ *              REALLOCATE BUFFER
+ ****************************************************************/
+bool CompressedFitsFile::reallocateBuffers()
+{
+    if (_buffer)
+    {
+        _buffer = _buffer - 4;
+        delete[] _buffer;
+        for (uint32_t i=0;i<_compressedBuffer.size();i++)
+        {
+            _compressedBuffer[i] = _compressedBuffer[i]-4;
+            delete[] _transposedBuffer[i];
+            delete[] _compressedBuffer[i];
+        }
+    }
+    _buffer = new char[_rowWidth*_numRowsPerTile + 12];
+    if (_buffer == NULL) return false;
+    memset(_buffer, 0, 4);
+    _buffer = _buffer + 4;
+    if (_compressedBuffer.size() != _numThreads)
+    {
+        _transposedBuffer.resize(_numThreads);
+        _compressedBuffer.resize(_numThreads);
+    }
+    for (uint32_t i=0;i<_numThreads;i++)
+    {
+        _transposedBuffer[i] = new char[_rowWidth*_numRowsPerTile];
+        _compressedBuffer[i] = new char[_rowWidth*_numRowsPerTile + _columns.size() + sizeof(TileHeader) + 12]; //use a bit more memory for compression flags and checksumming
+        if (_transposedBuffer[i] == NULL || _compressedBuffer[i] == NULL)
+            return false;
+        //shift the compressed buffer by 4 bytes, for checksum calculation
+        memset(_compressedBuffer[i], 0, 4);
+        _compressedBuffer[i] = _compressedBuffer[i]+4;
+        //initialize the tile header
+        TileHeader tileHeader;
+        memcpy(_compressedBuffer[i], &tileHeader, sizeof(TileHeader));
+    }
+    return true;
+}
+
+/****************************************************************
+ *                  DEFAULT WRITER CONSTRUCTOR
+ ****************************************************************/
+CompressedFitsWriter::CompressedFitsWriter(uint32_t numTiles,
+                                           uint32_t numRowsPerTile) : CompressedFitsFile(numTiles, numRowsPerTile),
+                                                                    _checkOffset(0),
+                                                                    _drsCalibData(NULL),
+                                                                    _threadLooper(0)
+{
+    _defaultHeader.push_back(HeaderEntry("XTENSION", "'BINTABLE'          ", "binary table extension"));
+    _defaultHeader.push_back(HeaderEntry("BITPIX", 8, "8-bit bytes"));
+    _defaultHeader.push_back(HeaderEntry("NAXIS", 2, "2-dimensional binary table"));
+    _defaultHeader.push_back(HeaderEntry("NAXIS1", _rowWidth, "width of table in bytes"));
+    _defaultHeader.push_back(HeaderEntry("NAXIS2", numTiles, "num of rows in table"));
+    _defaultHeader.push_back(HeaderEntry("PCOUNT", 0, "size of special data area"));
+    _defaultHeader.push_back(HeaderEntry("GCOUNT", 1, "one data group (required keyword)"));
+    _defaultHeader.push_back(HeaderEntry("TFIELDS", _columns.size(), "number of fields in each row"));
+    _defaultHeader.push_back(HeaderEntry("CHECKSUM", "'0000000000000000'  ", "Checksum for the whole HDU"));
+    _defaultHeader.push_back(HeaderEntry("DATASUM",  "         0", "Checksum for the data block"));
+    //compression stuff
+    _defaultHeader.push_back(HeaderEntry("ZTABLE", "T", "Table is compressed"));
+    _defaultHeader.push_back(HeaderEntry("ZNAXIS1", 0, "Width of uncompressed rows"));
+    _defaultHeader.push_back(HeaderEntry("ZNAXIS2", 0, "Number of uncompressed rows"));
+    _defaultHeader.push_back(HeaderEntry("ZPCOUNT", 0, ""));
+    _defaultHeader.push_back(HeaderEntry("ZHEAPPTR", 0, ""));
+    _defaultHeader.push_back(HeaderEntry("ZTILELEN", numRowsPerTile, "Number of rows per tile"));
+    _defaultHeader.push_back(HeaderEntry("THEAP", 0, ""));
+
+    pthread_mutex_init(&_mutex, NULL);
+}
+
+/****************************************************************
+ *              DEFAULT DESTRUCTOR
+ ****************************************************************/
+CompressedFitsWriter::~CompressedFitsWriter()
+{
+    pthread_mutex_destroy(&_mutex);
+}
+
+/****************************************************************
+ *              SET THE POINTER TO THE DRS CALIBRATION
+ ****************************************************************/
+void CompressedFitsWriter::setDrsCalib(int16_t* data)
+{
+    _drsCalibData = data;
+}
+
+/****************************************************************
+ *                  SET NUM WORKING THREADS
+ ****************************************************************/
+bool CompressedFitsWriter::setNumWorkingThreads(uint32_t num)
+{
+    if (_file.is_open())
+        return false;
+    if (num < 1 || num > 64)
+    {
+        cout << "ERROR: num threads must be between 1 and 64. Ignoring" << endl;
+        return false;
+    }
+    _numThreads = num;
+    _transposedBuffer[0] = NULL;
+    _compressedBuffer[0] = NULL;
+    _threadStatus.resize(num);
+    _thread.resize(num);
+    _threadNumRows.resize(num);
+    for (uint32_t i=0;i<num;i++)
+    {
+        _threadNumRows[i] = 0;
+        _threadStatus[i] = _THREAD_WAIT_;
+    }
+    return reallocateBuffers();
+}
+
+/****************************************************************
+ *              WRITE DRS CALIBRATION TO FILE
+ ****************************************************************/
+void CompressedFitsWriter::writeDrsCalib()
+{
+    //if file was not loaded, ignore
+    if (_drsCalibData == NULL)
+        return;
+    uint64_t whereDidIStart = _file.tellp();
+    vector<HeaderEntry> header;
+    header.push_back(HeaderEntry("XTENSION", "'BINTABLE'          ", "binary table extension"));
+    header.push_back(HeaderEntry("BITPIX"  , 8                     , "8-bit bytes"));
+    header.push_back(HeaderEntry("NAXIS"   , 2                     , "2-dimensional binary table"));
+    header.push_back(HeaderEntry("NAXIS1"  , 1024*1440*2           , "width of table in bytes"));
+    header.push_back(HeaderEntry("NAXIS2"  , 1                     , "number of rows in table"));
+    header.push_back(HeaderEntry("PCOUNT"  , 0                     , "size of special data area"));
+    header.push_back(HeaderEntry("GCOUNT"  , 1                     , "one data group (required keyword)"));
+    header.push_back(HeaderEntry("TFIELDS" , 1                     , "number of fields in each row"));
+    header.push_back(HeaderEntry("CHECKSUM", "'0000000000000000'  ", "Checksum for the whole HDU"));
+    header.push_back(HeaderEntry("DATASUM" ,  "         0"         , "Checksum for the data block"));
+    header.push_back(HeaderEntry("EXTNAME" , "'ZDrsCellOffsets'    ", "name of this binary table extension"));
+    header.push_back(HeaderEntry("TTYPE1"  , "'OffsetCalibration' ", "label for field   1"));
+    header.push_back(HeaderEntry("TFORM1"  , "'1474560I'          ", "data format of field: 2-byte INTEGER"));
+
+    for (uint32_t i=0;i<header.size();i++)
+        _file.write(header[i].fitsString().c_str(), 80);
+    //End the header
+    _file.write("END                                                                             ", 80);
+    long here = _file.tellp();
+    if (here%2880)
+        _file.write(_emptyBlock.c_str(), 2880 - here%2880);
+    //now write the data itself
+    int16_t* swappedBytes = new int16_t[1024];
+    Checksum checksum;
+    for (int32_t i=0;i<1440;i++)
+    {
+        memcpy(swappedBytes, &(_drsCalibData[i*1024]), 2048);
+        for (int32_t j=0;j<2048;j+=2)
+        {
+            int8_t inter;
+            inter = reinterpret_cast<int8_t*>(swappedBytes)[j];
+            reinterpret_cast<int8_t*>(swappedBytes)[j] = reinterpret_cast<int8_t*>(swappedBytes)[j+1];
+            reinterpret_cast<int8_t*>(swappedBytes)[j+1] = inter;
+        }
+        _file.write(reinterpret_cast<char*>(swappedBytes), 2048);
+        checksum.add(reinterpret_cast<char*>(swappedBytes), 2048);
+    }
+    uint64_t whereDidIStop = _file.tellp();
+    delete[] swappedBytes;
+    //No need to pad the data, as (1440*1024*2)%2880==0
+
+    //calculate the checksum from the header
+    ostringstream str;
+    str << checksum.val();
+    header[9] = HeaderEntry("DATASUM", str.str(), "Checksum for the data block");
+    for (vector<HeaderEntry>::iterator it=header.begin();it!=header.end(); it++)
+        checksum.add(it->fitsString().c_str(), 80);
+    string   end("END                                                                             ");
+    string space("                                                                                ");
+    checksum.add(end.c_str(), 80);
+    int headerRowsLeft = 36 - (header.size() + 1)%36;
+    for (int i=0;i<headerRowsLeft;i++)
+        checksum.add(space.c_str(), 80);
+    //udpate the checksum keyword
+    header[8] = HeaderEntry("CHECKSUM", checksum.str(), "Checksum for the whole HDU");
+    //and eventually re-write the header data
+    _file.seekp(whereDidIStart);
+    for (uint32_t i=0;i<header.size();i++)
+        _file.write(header[i].fitsString().c_str(), 80);
+    _file.seekp(whereDidIStop);
+}
+
+/****************************************************************
+ *              ADD COLUMN
+ ****************************************************************/
+bool CompressedFitsWriter::addColumn(const ColumnEntry& column)
+{
+    if (_totalNumRows != 0)
+    {
+        cout << "Error: cannot add new columns once first row has been written" << endl;
+        return false;
+    }
+    for (vector<ColumnEntry>::iterator it=_columns.begin(); it != _columns.end(); it++)
+    {
+        if (it->name() == column.name())
+        {
+            cout << "Warning: column already exist (" << column.name() << "). Ignoring" << endl;
+            return false;
+        }
+    }
+    _columns.push_back(column);
+    _columns.back().setOffset(_rowWidth);
+    _rowWidth += column.width();
+    reallocateBuffers();
+
+    ostringstream str, str2, str3;
+    str << "TTYPE" << _columns.size();
+    str2 << column.name();
+    str3 << "label for field ";
+    if (_columns.size() < 10) str3 << " ";
+    if (_columns.size() < 100) str3 << " ";
+    str3 << _columns.size();
+    setHeaderKey(HeaderEntry(str.str(), str2.str(), str3.str()));
+    str.str("");
+    str2.str("");
+    str3.str("");
+    str << "TFORM" << _columns.size();
+    str2 << "1QB";
+    str3 << "data format of field " << _columns.size();
+    setHeaderKey(HeaderEntry(str.str(), str2.str(), str3.str()));
+    str.str("");
+    str2.str("");
+    str3.str("");
+    str << "ZFORM" << _columns.size();
+    str2 << column.numElems() << column.type();
+    str3 << "Original format of field " << _columns.size();
+    setHeaderKey(HeaderEntry(str.str(), str2.str(), str3.str()));
+    str.str("");
+    str2.str("");
+    str3.str("");
+    str << "ZCTYP" << _columns.size();
+    str2 << column.getCompressionString();
+    str3 << "Comp. Scheme of field " << _columns.size();
+    setHeaderKey(HeaderEntry(str.str(), str2.str(), str3.str()));
+    //resize the catalog vector accordingly
+    for (uint32_t i=0;i<_numTiles;i++)
+    {
+        _catalog[i].resize(_columns.size());
+        for (uint32_t j=0;j<_catalog[i].size();j++)
+            _catalog[i][j] = make_pair(0,0);
+    }
+    return true;
+}
+
+/****************************************************************
+ *                  SET HEADER KEY
+ ****************************************************************/
+bool CompressedFitsWriter::setHeaderKey(const HeaderEntry& entry)
+{
+    HeaderEntry ent = entry;
+    for (vector<HeaderEntry>::iterator it=_header.begin(); it != _header.end(); it++)
+    {
+        if (it->key() == entry.key())
+        {
+            if (entry.comment() == "")
+                ent.setComment(it->comment());
+            (*it) = ent;
+            _headerFlushed = false;
+            return true;
+        }
+    }
+    for (vector<HeaderEntry>::iterator it=_defaultHeader.begin(); it != _defaultHeader.end(); it++)
+    {
+        if (it->key() == entry.key())
+        {
+            if (entry.comment() == "")
+                ent.setComment(it->comment());
+            (*it) = ent;
+            _headerFlushed = false;
+            return true;
+        }
+    }
+    if (_totalNumRows != 0)
+    {
+        cout << "Error: new header keys (" << entry.key() << ") must be set before the first row is written. Ignoring." << endl;
+        return false;
+    }
+    _header.push_back(entry);
+    _headerFlushed = false;
+    return true;
+}
+
+bool CompressedFitsWriter::changeHeaderKey(const string& origName, const string& newName)
+{
+    for (vector<HeaderEntry>::iterator it=_header.begin(); it != _header.end(); it++)
+    {
+        if (it->key() == origName)
+        {
+            (*it) = HeaderEntry(newName, it->value(), it->comment());
+            _headerFlushed = false;
+            return true;
+        }
+    }
+    for (vector<HeaderEntry>::iterator it=_defaultHeader.begin(); it != _defaultHeader.end(); it++)
+    {
+        if (it->key() == origName)
+        {
+            (*it) = HeaderEntry(newName, it->value(), it->comment());
+            _headerFlushed = false;
+            return true;
+        }
+    }
+    return false;
+}
+/****************************************************************
+ *              OPEN
+ ****************************************************************/
+bool CompressedFitsWriter::open(const string& fileName, const string& tableName)
+{
+     _file.open(fileName.c_str(), ios_base::out);
+    if (!_file.is_open())
+    {
+        cout << "Error: Could not open the file (" << fileName << ")." << endl;
+        return false;
+    }
+    _defaultHeader.push_back(HeaderEntry("EXTNAME", tableName, "name of this binary table extension"));
+    _headerFlushed = false;
+    _threadIndex = 0;
+    //create requested number of threads
+    for (uint32_t i=0;i<_numThreads;i++)
+        pthread_create(&(_thread[i]), NULL, threadFunction, this);
+    //wait for the threads to start
+    while (_numThreads != _threadIndex)
+        usleep(1000);
+    //set the writing fence to the last thread
+    _threadIndex = _numThreads-1;
+    return (_file.good());
+}
+
+/****************************************************************
+ *              WRITE HEADER
+ ****************************************************************/
+void CompressedFitsWriter::writeHeader(bool closingFile)
+{
+    if (_headerFlushed)
+        return;
+    if (!_file.is_open())
+        return;
+
+    long cPos = _file.tellp();
+
+    _file.seekp(0);
+
+    _file.write(_fitsHeader.c_str(), 2880);
+
+    //Write the DRS calib table here !
+    writeDrsCalib();
+
+    //we are now at the beginning of the main table. Write its header
+    for (vector<HeaderEntry>::iterator it=_defaultHeader.begin(); it != _defaultHeader.end(); it++)
+        _file.write(it->fitsString().c_str(), 80);
+
+    for (vector<HeaderEntry>::iterator it=_header.begin(); it != _header.end(); it++)
+        _file.write(it->fitsString().c_str(), 80);
+
+    _file.write("END                                                                             ", 80);
+    long here = _file.tellp();
+    if (here%2880)
+        _file.write(_emptyBlock.c_str(), 2880 - here%2880);
+
+    _headerFlushed = true;
+
+    here = _file.tellp();
+
+    if (here%2880)
+        cout << "Error: seems that header did not finish at the end of a block." << endl;
+
+    if (here > cPos && cPos != 0)
+    {
+        cout << "Error, entries were added after the first row was written. This is not supposed to happen." << endl;
+        return;
+    }
+
+    here = _file.tellp();
+    writeCatalog(closingFile);
+
+    here = _file.tellp() - here;
+    _heapPtr = here;
+
+    if (cPos != 0)
+        _file.seekp(cPos);
+}
+
+/****************************************************************
+ *              WRITE CATALOG
+ *  WARNING: writeCatalog is only meant to be used by writeHeader.
+ *  external usage will most likely corrupt the file
+ ****************************************************************/
+void CompressedFitsWriter::writeCatalog(bool closingFile)
+{
+    uint32_t sizeWritten = 0;
+    for (uint32_t i=0;i<_catalog.size();i++)
+    {
+        for (uint32_t j=0;j<_catalog[i].size();j++)
+        {
+            //swap the bytes
+            int8_t swappedEntry[16];
+            swappedEntry[0] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[7];
+            swappedEntry[1] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[6];
+            swappedEntry[2] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[5];
+            swappedEntry[3] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[4];
+            swappedEntry[4] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[3];
+            swappedEntry[5] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[2];
+            swappedEntry[6] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[1];
+            swappedEntry[7] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[0];
+
+            swappedEntry[8] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[7];
+            swappedEntry[9] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[6];
+            swappedEntry[10] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[5];
+            swappedEntry[11] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[4];
+            swappedEntry[12] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[3];
+            swappedEntry[13] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[2];
+            swappedEntry[14] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[1];
+            swappedEntry[15] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[0];
+            if (closingFile)
+            {
+                _checksum.add(reinterpret_cast<char*>(swappedEntry), 16);
+            }
+            _file.write(reinterpret_cast<char*>(&swappedEntry[0]), 2*sizeof(int64_t));
+            sizeWritten += 2*sizeof(int64_t);
+        }
+    }
+
+    //we do not reserve space for now because fverify does not like that.
+    //TODO bug should be fixed in the new version. Install it on the cluster and restor space reservation
+    return ;
+
+    //write the padding so that the HEAP section starts at a 2880 bytes boundary
+    if (sizeWritten % 2880 != 0)
+    {
+        vector<char> nullVec(2880 - sizeWritten%2880, 0);
+        _file.write(nullVec.data(), 2880 - sizeWritten%2880);
+    }
+}
+
+/****************************************************************
+ *              ADD HEADER CHECKSUM
+ ****************************************************************/
+void CompressedFitsWriter::addHeaderChecksum(Checksum& checksum)
+{
+    for (vector<HeaderEntry>::iterator it=_defaultHeader.begin();it!=_defaultHeader.end(); it++)
+        _checksum.add(it->fitsString().c_str(), 80);
+    for (vector<HeaderEntry>::iterator it=_header.begin(); it != _header.end(); it++)
+        _checksum.add(it->fitsString().c_str(), 80);
+    string   end("END                                                                             ");
+    string space("                                                                                ");
+    checksum.add(end.c_str(), 80);
+    int headerRowsLeft = 36 - (_defaultHeader.size() + _header.size() + 1)%36;
+    for (int i=0;i<headerRowsLeft;i++)
+        checksum.add(space.c_str(), 80);
+}
+
+/****************************************************************
+ *                  CLOSE
+ ****************************************************************/
+bool CompressedFitsWriter::close()
+{
+    for (uint32_t i=0;i<_numThreads;i++)
+        while (_threadStatus[i] != _THREAD_WAIT_)
+            usleep(100000);
+    for (uint32_t i=0;i<_numThreads;i++)
+        _threadStatus[i] = _THREAD_EXIT_;
+    for (uint32_t i=0;i<_numThreads;i++)
+        pthread_join(_thread[i], NULL);
+    //flush the rows that were not written yet
+    if (_totalNumRows%_numRowsPerTile != 0)
+    {
+        copyTransposeTile(0);
+
+        _threadNumRows[0] = _totalNumRows;
+        uint32_t numBytes = compressBuffer(0);
+        writeCompressedDataToDisk(0, numBytes);
+    }
+    //compression stuff
+    setHeaderKey(HeaderEntry("ZNAXIS1", _rowWidth, "Width of uncompressed rows"));
+    setHeaderKey(HeaderEntry("ZNAXIS2", _totalNumRows, "Number of uncompressed rows"));
+    //TODO calculate the real offset from the main table to the start of the HEAP data area
+    setHeaderKey(HeaderEntry("ZHEAPPTR", _heapPtr, ""));
+    setHeaderKey(HeaderEntry("THEAP", _heapPtr, ""));
+
+    //regular stuff
+    if (_catalog.size() > 0)
+    {
+        setHeaderKey(HeaderEntry("NAXIS1", 2*sizeof(int64_t)*_catalog[0].size(), "width of table in bytes"));
+        setHeaderKey(HeaderEntry("NAXIS2", _numTiles, ""));
+        setHeaderKey(HeaderEntry("TFIELDS", _columns.size(), "number of fields in each row"));
+        int64_t heapSize = 0;
+        int64_t compressedOffset = 0;
+        for (uint32_t i=0;i<_catalog.size();i++)
+        {
+            compressedOffset += sizeof(TileHeader);
+            heapSize += sizeof(TileHeader);
+            for (uint32_t j=0;j<_catalog[i].size();j++)
+            {
+                heapSize += _catalog[i][j].first;
+//		cout << "heapSize: " << heapSize << endl;
+                //set the catalog offsets to their actual values
+                _catalog[i][j].second = compressedOffset;
+                compressedOffset += _catalog[i][j].first;
+                //special case if entry has zero length
+                if (_catalog[i][j].first == 0) _catalog[i][j].second = 0;
+            }
+        }
+        setHeaderKey(HeaderEntry("PCOUNT", heapSize, "size of special data area"));
+    }
+    else
+    {
+        setHeaderKey(HeaderEntry("NAXIS1", _columns.size()*2*sizeof(int64_t), "width of table in bytes"));
+        setHeaderKey(HeaderEntry("NAXIS2", 0, ""));
+        setHeaderKey(HeaderEntry("TFIELDS", _columns.size(), "number of fields in each row"));
+        setHeaderKey(HeaderEntry("PCOUNT", 0, "size of special data area"));
+        changeHeaderKey("THEAP", "ZHEAP");
+    }
+    ostringstream str;
+
+    writeHeader(true);
+
+    str.str("");
+    str << _checksum.val();
+
+    setHeaderKey(HeaderEntry("DATASUM", str.str(), ""));
+    addHeaderChecksum(_checksum);
+    setHeaderKey(HeaderEntry("CHECKSUM", _checksum.str(), ""));
+    //update header value
+    writeHeader();
+    //update file length
+    long here = _file.tellp();
+    if (here%2880)
+    {
+        vector<char> nullVec(2880 - here%2880, 0);
+        _file.write(nullVec.data(), 2880 - here%2880);
+    }
+    _file.close();
+    return true;
+}
+
+/****************************************************************
+ *                  COPY TRANSPOSE TILE
+ ****************************************************************/
+void CompressedFitsWriter::copyTransposeTile(uint32_t index)
+{
+    uint32_t thisRoundNumRows = (_totalNumRows%_numRowsPerTile) ? _totalNumRows%_numRowsPerTile : _numRowsPerTile;
+
+    //copy the tile and transpose it
+    uint32_t offset = 0;
+    for (uint32_t i=0;i<_columns.size();i++)
+    {
+        switch (_columns[i].getColumnOrdering())//getCompression())
+        {
+            case FITS::kOrderByRow:
+                for (uint32_t k=0;k<thisRoundNumRows;k++)
+                {//regular, "semi-transposed" copy
+                    memcpy(&(_transposedBuffer[index][offset]), &_buffer[k*_rowWidth + _columns[i].offset()], _columns[i].sizeOfElems()*_columns[i].numElems());
+                    offset += _columns[i].sizeOfElems()*_columns[i].numElems();
+                }
+            break;
+
+            case FITS::kOrderByCol :
+                for (int j=0;j<_columns[i].numElems();j++)
+                    for (uint32_t k=0;k<thisRoundNumRows;k++)
+                    {//transposed copy
+                        memcpy(&(_transposedBuffer[index][offset]), &_buffer[k*_rowWidth + _columns[i].offset() + _columns[i].sizeOfElems()*j], _columns[i].sizeOfElems());
+                        offset += _columns[i].sizeOfElems();
+                    }
+            break;
+            default:
+                    cout << "Error: unknown column ordering: " << _columns[i].getColumnOrdering() << endl;
+
+        };
+    }
+}
+
+/****************************************************************
+ *          WRITE BINARY ROW
+ ****************************************************************/
+bool CompressedFitsWriter::writeBinaryRow(const char* bufferToWrite)
+{
+    if (_totalNumRows == 0)
+        writeHeader();
+
+    memcpy(&_buffer[_rowWidth*(_totalNumRows%_numRowsPerTile)], bufferToWrite, _rowWidth);
+    _totalNumRows++;
+    if (_totalNumRows%_numRowsPerTile == 0)
+    {
+        //which is the next thread that we should use ?
+        while (_threadStatus[_threadLooper] == _THREAD_COMPRESS_)
+            usleep(100000);
+
+        copyTransposeTile(_threadLooper);
+
+        while (_threadStatus[_threadLooper] != _THREAD_WAIT_)
+            usleep(100000);
+
+        _threadNumRows[_threadLooper] = _totalNumRows;
+        _threadStatus[_threadLooper] = _THREAD_COMPRESS_;
+        _threadLooper = (_threadLooper+1)%_numThreads;
+    }
+    return _file.good();
+}
+
+uint32_t CompressedFitsWriter::getRowWidth()
+{
+    return _rowWidth;
+}
+
+/****************************************************************
+ *                  COMPRESS BUFFER
+ ****************************************************************/
+uint32_t CompressedFitsWriter::compressUNCOMPRESSED(char* dest, const char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems)
+{
+    memcpy(dest, src, numRows*sizeOfElems*numRowElems);
+    return numRows*sizeOfElems*numRowElems;
+}
+
+/****************************************************************
+ *                  COMPRESS BUFFER
+ ****************************************************************/
+uint32_t CompressedFitsWriter::compressHUFFMAN(char* dest, const char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems)
+{
+    string huffmanOutput;
+    uint32_t previousHuffmanSize = 0;
+    if (numRows < 2)
+    {//if we have less than 2 elems to compress, Huffman encoder does not work (and has no point). Just return larger size than uncompressed to trigger the raw storage.
+        return numRows*sizeOfElems*numRowElems + 1000;
+    }
+    if (sizeOfElems < 2 )
+    {
+        cout << "Fatal ERROR: HUFMANN can only encode short or longer types" << endl;
+        return 0;
+    }
+    uint32_t huffmanOffset = 0;
+    for (uint32_t j=0;j<numRowElems;j++)
+    {
+        Huffman::Encode(huffmanOutput,
+                        reinterpret_cast<const uint16_t*>(&src[j*sizeOfElems*numRows]),
+                        numRows*(sizeOfElems/2));
+        reinterpret_cast<uint32_t*>(&dest[huffmanOffset])[0] = huffmanOutput.size() - previousHuffmanSize;
+        huffmanOffset += sizeof(uint32_t);
+        previousHuffmanSize = huffmanOutput.size();
+    }
+    const size_t totalSize = huffmanOutput.size() + huffmanOffset;
+
+    //only copy if not larger than not-compressed size
+    if (totalSize < numRows*sizeOfElems*numRowElems)
+        memcpy(&dest[huffmanOffset], huffmanOutput.data(), huffmanOutput.size());
+
+    return totalSize;
+}
+
+/****************************************************************
+ *                  COMPRESS BUFFER
+ ****************************************************************/
+uint32_t CompressedFitsWriter::compressSMOOTHMAN(char* dest, char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems)
+{
+    uint32_t colWidth = numRowElems;
+    for (int j=colWidth*numRows-1;j>1;j--)
+        reinterpret_cast<int16_t*>(src)[j] = reinterpret_cast<int16_t*>(src)[j] - (reinterpret_cast<int16_t*>(src)[j-1]+reinterpret_cast<int16_t*>(src)[j-2])/2;
+    //call the huffman transposed
+    return compressHUFFMAN(dest, src, numRowElems, sizeOfElems, numRows);
+}
+
+uint32_t CompressedFitsWriter::applySMOOTHING(char* , char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems)
+{
+    uint32_t colWidth = numRowElems;
+    for (int j=colWidth*numRows-1;j>1;j--)
+        reinterpret_cast<int16_t*>(src)[j] = reinterpret_cast<int16_t*>(src)[j] - (reinterpret_cast<int16_t*>(src)[j-1]+reinterpret_cast<int16_t*>(src)[j-2])/2;
+
+    return numRows*sizeOfElems*numRowElems;
+}
+/****************************************************************
+ *                  COMPRESS BUFFER
+ ****************************************************************/
+uint64_t CompressedFitsWriter::compressBuffer(uint32_t threadIndex)
+{
+    uint32_t thisRoundNumRows = (_threadNumRows[threadIndex]%_numRowsPerTile) ? _threadNumRows[threadIndex]%_numRowsPerTile : _numRowsPerTile;
+    uint32_t offset=0;
+    uint32_t currentCatalogRow = (_threadNumRows[threadIndex]-1)/_numRowsPerTile;
+    uint64_t compressedOffset = sizeof(TileHeader); //skip the 'TILE' marker and tile size entry
+
+    //now compress each column one by one by calling compression on arrays
+    for (uint32_t i=0;i<_columns.size();i++)
+    {
+        _catalog[currentCatalogRow][i].second = compressedOffset;
+
+        if (_columns[i].numElems() == 0) continue;
+
+        BlockHeader& head = _columns[i].getBlockHeader();
+        const vector<uint16_t>& sequence = _columns[i].getCompressionSequence();
+        //set the default byte telling if uncompressed the compressed Flag
+        uint64_t previousOffset = compressedOffset;
+        //skip header data
+        compressedOffset += sizeof(BlockHeader) + sizeof(uint16_t)*sequence.size();
+
+        for (uint32_t j=0;j<sequence.size(); j++)
+        {
+            switch (sequence[j])
+            {
+                case FITS::kFactRaw:
+//                    if (head.numProcs == 1)
+                        compressedOffset += compressUNCOMPRESSED(&(_compressedBuffer[threadIndex][compressedOffset]), &(_transposedBuffer[threadIndex][offset]), thisRoundNumRows, _columns[i].sizeOfElems(), _columns[i].numElems());
+                break;
+                case FITS::kFactSmoothing:
+                        applySMOOTHING(&(_compressedBuffer[threadIndex][compressedOffset]), &(_transposedBuffer[threadIndex][offset]), thisRoundNumRows, _columns[i].sizeOfElems(), _columns[i].numElems());
+                break;
+                case FITS::kFactHuffman16:
+                    if (head.ordering == FITS::kOrderByCol)
+                        compressedOffset += compressHUFFMAN(&(_compressedBuffer[threadIndex][compressedOffset]), &(_transposedBuffer[threadIndex][offset]), thisRoundNumRows, _columns[i].sizeOfElems(), _columns[i].numElems());
+                    else
+                        compressedOffset += compressHUFFMAN(&(_compressedBuffer[threadIndex][compressedOffset]), &(_transposedBuffer[threadIndex][offset]), _columns[i].numElems(), _columns[i].sizeOfElems(),  thisRoundNumRows);
+                break;
+                default:
+                    cout << "ERROR: Unkown compression sequence entry: " << sequence[i] << endl;
+                break;
+            }
+        }
+
+        //check if compressed size is larger than uncompressed
+        if (sequence[0] != FITS::kFactRaw &&
+            compressedOffset - previousOffset > _columns[i].sizeOfElems()*_columns[i].numElems()*thisRoundNumRows+sizeof(BlockHeader)+sizeof(uint16_t)*sequence.size())
+        {//if so set flag and redo it uncompressed
+            cout << "REDOING UNCOMPRESSED" << endl;
+            compressedOffset = previousOffset + sizeof(BlockHeader) + 1;
+            compressedOffset += compressUNCOMPRESSED(&(_compressedBuffer[threadIndex][compressedOffset]), &(_transposedBuffer[threadIndex][offset]), thisRoundNumRows, _columns[i].sizeOfElems(), _columns[i].numElems());
+            BlockHeader he;
+            he.size = compressedOffset - previousOffset;
+            he.numProcs = 1;
+            he.ordering = FITS::kOrderByRow;
+            memcpy(&(_compressedBuffer[threadIndex][previousOffset]), (char*)(&he), sizeof(BlockHeader));
+            _compressedBuffer[threadIndex][previousOffset+sizeof(BlockHeader)] = FITS::kFactRaw;
+            offset += thisRoundNumRows*_columns[i].sizeOfElems()*_columns[i].numElems();
+           _catalog[currentCatalogRow][i].first = compressedOffset - _catalog[currentCatalogRow][i].second;
+           continue;
+        }
+        head.size = compressedOffset - previousOffset;
+        memcpy(&(_compressedBuffer[threadIndex][previousOffset]), (char*)(&head), sizeof(BlockHeader));
+        memcpy(&(_compressedBuffer[threadIndex][previousOffset+sizeof(BlockHeader)]), sequence.data(), sizeof(uint16_t)*sequence.size());
+
+         offset += thisRoundNumRows*_columns[i].sizeOfElems()*_columns[i].numElems();
+        _catalog[currentCatalogRow][i].first = compressedOffset - _catalog[currentCatalogRow][i].second;
+    }
+
+    TileHeader tHead(thisRoundNumRows, compressedOffset);
+    memcpy(_compressedBuffer[threadIndex], &tHead, sizeof(TileHeader));
+    return compressedOffset;
+}
+
+/****************************************************************
+ *              WRITE COMPRESS DATA TO DISK
+ ****************************************************************/
+bool CompressedFitsWriter::writeCompressedDataToDisk(uint32_t threadID, uint32_t sizeToWrite)
+{
+    char* checkSumPointer = _compressedBuffer[threadID];
+    int32_t extraBytes = 0;
+    uint32_t sizeToChecksum = sizeToWrite;
+    if (_checkOffset != 0)
+    {//should we extend the array to the left ?
+        sizeToChecksum += _checkOffset;
+        checkSumPointer -= _checkOffset;
+        memset(checkSumPointer, 0, _checkOffset);
+    }
+    if (sizeToChecksum%4 != 0)
+    {//should we extend the array to the right ?
+        extraBytes = 4 - (sizeToChecksum%4);
+        memset(checkSumPointer+sizeToChecksum, 0,extraBytes);
+        sizeToChecksum += extraBytes;
+    }
+    //do the checksum
+    _checksum.add(checkSumPointer, sizeToChecksum);
+//    cout << endl << "Checksum: " << _checksum.val() << endl;
+    _checkOffset = (4 - extraBytes)%4;
+    //write data to disk
+    _file.write(_compressedBuffer[threadID], sizeToWrite);
+    return _file.good();
+}
+
+/****************************************************************
+ *              WRITER THREAD LOOP
+ ****************************************************************/
+void* CompressedFitsWriter::threadFunction(void* context)
+{
+    CompressedFitsWriter* myself =static_cast<CompressedFitsWriter*>(context);
+
+    uint32_t myID = 0;
+    pthread_mutex_lock(&(myself->_mutex));
+    myID = myself->_threadIndex++;
+    pthread_mutex_unlock(&(myself->_mutex));
+    uint32_t threadToWaitForBeforeWriting = (myID == 0) ? myself->_numThreads-1 : myID-1;
+
+    while (myself->_threadStatus[myID] != _THREAD_EXIT_)
+    {
+        while (myself->_threadStatus[myID] == _THREAD_WAIT_)
+            usleep(100000);
+        if (myself->_threadStatus[myID] != _THREAD_COMPRESS_)
+            continue;
+        uint32_t numBytes = myself->compressBuffer(myID);
+        myself->_threadStatus[myID] = _THREAD_WRITE_;
+
+        //wait for the previous data to be written
+        while (myself->_threadIndex != threadToWaitForBeforeWriting)
+            usleep(1000);
+        //do the actual writing to disk
+        pthread_mutex_lock(&(myself->_mutex));
+        myself->writeCompressedDataToDisk(myID, numBytes);
+        myself->_threadIndex = myID;
+        pthread_mutex_unlock(&(myself->_mutex));
+        myself->_threadStatus[myID] = _THREAD_WAIT_;
+    }
+    return NULL;
+}
+
+/****************************************************************
+ *                 PRINT USAGE
+ ****************************************************************/
+void printUsage()
+{
+    cout << endl;
+    cout << "The FACT-Fits compressor reads an input Fits file from FACT"
+            " and compresses it.\n It can use a drs calibration in order to"
+            " improve the compression ratio. If so, the input calibration"
+            " is embedded into the compressed file.\n"
+            " By default, the Data column will be compressed using SMOOTHMAN (Thomas' algorithm)"
+            " while other columns will be compressed with the AMPLITUDE coding (Veritas)"
+            "Usage: Compressed_Fits_Test <inputFile>";
+    cout << endl;
+}
+
+/****************************************************************
+ *                  PRINT HELP
+ ****************************************************************/
+void printHelp()
+{
+    cout << endl;
+    cout << "The inputFile is required. It must have fits in its filename and the compressed file will be written in the same folder. "
+            "The fz extension will be added, replacing the .gz one if required \n"
+            "If output is specified, then it will replace the automatically generated output filename\n"
+            "If --drs, followed by a drs calib then it will be applied to the data before compressing\n"
+            "rowPerTile can be used to tune how many rows are in each tile. Default is 100\n"
+            "threads gives the number of threads to use. Cannot be less than the default (1)\n"
+            "compression explicitely gives the compression scheme to use for a given column. The syntax is:\n"
+            "<ColumnName>=<CompressionScheme> with <CompressionScheme> one of the following:\n"
+            "UNCOMPRESSED\n"
+            "AMPLITUDE\n"
+            "HUFFMAN\n"
+            "SMOOTHMAN\n"
+            "INT_WAVELET\n"
+            "\n"
+            "--quiet removes any textual output, except error messages\n"
+            "--verify makes the compressor check the compressed data. It will read it back, and compare the reconstructed CHECKSUM and DATASUM with the original file values."
+            ;
+    cout << endl << endl;
+}
+
+/****************************************************************
+ *                  SETUP CONFIGURATION
+ ****************************************************************/
+void setupConfiguration(Configuration& conf)
+{
+    po::options_description configs("FitsCompressor options");
+    configs.add_options()
+            ("inputFile,i",   vars<string>(),      "Input file")
+            ("drs,d",         var<string>(),       "Input drs calibration file")
+            ("rowPerTile,r",  var<unsigned int>(), "Number of rows per tile. Default is 100")
+            ("output,o",      var<string>(),       "Output file. If empty, .fz is appened to the original name")
+            ("threads,t",     var<unsigned int>(), "Number of threads to use for compression")
+            ("compression,c", vars<string>(),      "which compression to use for which column. Syntax <colName>=<compressionScheme>")
+            ("quiet,q",       po_switch(),         "Should the program display any text at all ?")
+            ("verify,v",      po_switch(),         "Should we verify the data that has been compressed ?")
+            ;
+    po::positional_options_description positional;
+    positional.add("inputFile", -1);
+    conf.AddOptions(configs);
+    conf.SetArgumentPositions(positional);
+}
+
+/****************************************************************
+ *                  MAIN
+ ****************************************************************/
+int main(int argc, const char** argv)
+{
+     Configuration conf(argv[0]);
+     conf.SetPrintUsage(printUsage);
+     setupConfiguration(conf);
+
+     if (!conf.DoParse(argc, argv, printHelp))
+         return -1;
+
+     //initialize the file names to nothing.
+     string fileNameIn = "";
+     string fileNameOut = "";
+     string drsFileName = "";
+     uint32_t numRowsPerTile = 100;
+     bool displayText=true;
+
+    //parse configuration
+    if (conf.Get<bool>("quiet")) displayText = false;
+    const vector<string> inputFileNameVec = conf.Vec<string>("inputFile");
+    if (inputFileNameVec.size() != 1)
+    {
+       cout << "Error: ";
+       if (inputFileNameVec.size() == 0) cout << "no";
+       else cout << inputFileNameVec.size();
+       cout << " input file(s) given. Expected one. Aborting. Input:" << endl;;
+       for (unsigned int i=0;i<inputFileNameVec.size(); i++)
+           cout << inputFileNameVec[i] << endl;
+       return -1;
+    }
+
+    //Assign the input filename
+    fileNameIn = inputFileNameVec[0];
+
+    //Check if we have a drs calib too
+    if (conf.Has("drs")) drsFileName = conf.Get<string>("drs");
+
+    //Should we verify the data ?
+    bool verifyDataPlease = false;
+    if (conf.Has("verify")) verifyDataPlease = conf.Get<bool>("verify");
+
+
+    //should we use a specific output filename ?
+    if (conf.Has("output"))
+        fileNameOut = conf.Get<string>("output");
+    else
+    {
+        size_t pos = fileNameIn.find(".fits");
+        if (pos == string::npos)
+        {
+            cout << "ERROR: input file does not seems ot be fits. Aborting." << endl;
+            return -1;
+        }
+        fileNameOut = fileNameIn + ".fz";
+    }
+
+
+    //should we use specific compression on some columns ?
+    const vector<string> columnsCompression = conf.Vec<string>("compression");
+
+    //split up values between column names and compression scheme
+    vector<std::pair<string, string>> compressions;
+    for (unsigned int i=0;i<columnsCompression.size();i++)
+    {
+        size_t pos = columnsCompression[i].find_first_of("=");
+        if (pos == string::npos)
+        {
+            cout << "ERROR: Something wrong occured while parsing " << columnsCompression[i] << ". Aborting." << endl;
+            return -1;
+        }
+        string comp = columnsCompression[i].substr(pos+1);
+        if (comp != "UNCOMPRESSED" && comp != "AMPLITUDE" && comp != "HUFFMAN" &&
+            comp != "SMOOTHMAN" && comp != "INT_WAVELET")
+        {
+            cout << "Unkown compression scheme requested (" << comp << "). Aborting." << endl;
+            return -1;
+        }
+        compressions.push_back(make_pair(columnsCompression[i].substr(0, pos), comp));
+    }
+
+    //How many rows per tile should we use ?
+    if (conf.Has("rowPerTile")) numRowsPerTile = conf.Get<unsigned int>("rowPerTile");
+
+    /************************************************************************************
+     *  Done reading configuration. Open relevant files
+     ************************************************************************************/
+
+    //Open input's fits file
+    factfits inFile(fileNameIn);
+
+    if (inFile.IsCompressedFITS())
+    {
+        cout << "ERROR: input file is already a compressed fits. Cannot be compressed again: Aborting." << endl;
+        return -1;
+    }
+
+    //decide how many tiles should be put in the compressed file
+    uint32_t originalNumRows = inFile.GetNumRows();
+    uint32_t numTiles = (originalNumRows%numRowsPerTile) ? (originalNumRows/numRowsPerTile)+1 : originalNumRows/numRowsPerTile;
+    CompressedFitsWriter outFile(numTiles, numRowsPerTile);
+
+    //should we use a specific number of threads for compressing ?
+    unsigned int numThreads = 1;
+    if (conf.Has("threads"))
+    {
+        numThreads = conf.Get<unsigned int>("threads");
+        outFile.setNumWorkingThreads(numThreads);
+    }
+
+    if (!outFile.open(fileNameOut))
+    {
+        cout << "Error: could not open " << fileNameOut << " for writing" << endl;
+        return -1;
+    }
+
+    //Because the file to open MUST be given by the constructor, I must use a pointer instead
+    factfits* drsFile = NULL;
+    //try to open the Drs file. If any.
+    if (drsFileName != "")
+    {
+        try
+        {
+            drsFile = new factfits(drsFileName);
+        }
+        catch (...)
+        {
+            cout << "Error: could not open " << drsFileName << " for calibration" << endl;
+            return -1;
+        }
+    }
+
+    if (displayText)
+    {
+        cout << endl;
+        cout << "**********************" << endl;
+        cout << "Will compress from    : " << fileNameIn << endl;
+        cout << "to                    : " << fileNameOut << endl;
+        if (drsFileName != "")
+            cout << "while calibrating with: " << drsFileName << endl;
+        cout << "Compression will use  : " << numThreads << " worker threads" << endl;
+        cout << "Data will be verified : ";
+        if (verifyDataPlease)
+            cout << "yes" << endl;
+        else
+            cout << "no (WARNING !)" << endl;
+        cout << "**********************" << endl;
+        cout << endl;
+    }
+
+    /************************************************************************************
+     *  Done opening input files. Allocate memory and configure output file
+     ************************************************************************************/
+
+    //allocate the buffer for temporary storage of each read/written row
+    uint32_t rowWidth = inFile.GetUInt("NAXIS1");
+    char* buffer = new char[rowWidth + 12];
+    memset(buffer, 0, 4);
+    buffer = buffer+4;
+
+    //get the source columns
+    const fits::Table::Columns& columns = inFile.GetColumns();
+    const fits::Table::SortedColumns& sortedColumns = inFile.GetSortedColumns();
+    if (displayText)
+        cout << "Input file has " << columns.size() << " columns and " << inFile.GetNumRows() << " rows" << endl;
+
+    //Add columns.
+    uint32_t totalRowWidth = 0;
+    for (uint32_t i=0;i<sortedColumns.size(); i++)
+    {
+        //get column name
+        ostringstream str;
+        str << "TTYPE" << i+1;
+        string colName = inFile.GetStr(str.str());
+        if (displayText)
+        {
+            cout << "Column " << colName;
+            for (uint32_t j=colName.size();j<21;j++)
+                cout << " ";
+            cout << " -> ";
+        }
+
+        //get header structures
+        BlockHeader rawHeader;
+        BlockHeader smoothmanHeader(0, FITS::kOrderByRow, 2);
+        vector<uint16_t> rawProcessings(1);
+        rawProcessings[0] = FITS::kFactRaw;
+        vector<uint16_t> smoothmanProcessings(2);
+        smoothmanProcessings[0] = FITS::kFactSmoothing;
+        smoothmanProcessings[1] = FITS::kFactHuffman16;
+//        smoothmanProcessings[2] = FACT_RAW;
+
+        totalRowWidth += sortedColumns[i].bytes;
+
+        //first lets see if we do have an explicit request
+        bool explicitRequest = false;
+        for (unsigned int j=0;j<compressions.size();j++)
+        {
+            if (compressions[j].first == colName)
+            {
+                explicitRequest = true;
+                if (displayText) cout << compressions[j].second << endl;
+                if (compressions[j].second == "UNCOMPRESSED")
+                    outFile.addColumn(CompressedFitsFile::ColumnEntry(colName, sortedColumns[i].type, sortedColumns[i].num, rawHeader, rawProcessings));
+                if (compressions[j].second == "SMOOTHMAN")
+                    outFile.addColumn(CompressedFitsFile::ColumnEntry(colName, sortedColumns[i].type,  sortedColumns[i].num, smoothmanHeader, smoothmanProcessings));
+                break;
+            }
+        }
+
+        if (explicitRequest) continue;
+
+        if (colName != "Data")
+        {
+            if (displayText) cout << "UNCOMPRESSED" << endl;
+            outFile.addColumn(CompressedFitsFile::ColumnEntry(colName, sortedColumns[i].type,  sortedColumns[i].num, rawHeader, rawProcessings));
+        }
+        else
+        {
+            if (displayText) cout << "SMOOTHMAN" << endl;
+            outFile.addColumn(CompressedFitsFile::ColumnEntry(colName, sortedColumns[i].type,  sortedColumns[i].num, smoothmanHeader, smoothmanProcessings));
+        }
+    }
+
+    //translate original header entries to their Z-version
+    const fits::Table::Keys& header = inFile.GetKeys();
+    for (fits::Table::Keys::const_iterator i=header.begin(); i!= header.end(); i++)
+    {
+        string k = i->first;//header[i].key();
+        if (k == "XTENSION" || k == "BITPIX" || k == "PCOUNT" || k == "GCOUNT" || k == "TFIELDS")
+            continue;
+        if (k == "CHECKSUM")
+        {
+            outFile.setHeaderKey(CompressedFitsFile::HeaderEntry("ZCHKSUM", i->second.value, i->second.comment));
+            continue;
+        }
+        if (k == "DATASUM")
+        {
+            outFile.setHeaderKey(CompressedFitsFile::HeaderEntry("ZDTASUM", i->second.value, i->second.comment));
+            continue;
+        }
+        k = k.substr(0,5);
+        if (k == "TTYPE" || k == "TFORM")
+        {
+            string tmpKey = i->second.fitsString;
+            tmpKey[0] = 'Z';
+            outFile.setHeaderKey(tmpKey);
+            continue;
+        }
+        if (k == "NAXIS")
+            continue;
+        outFile.setHeaderKey(i->second.fitsString);
+//        cout << i->first << endl;
+    }
+
+    outFile.setHeaderKey(CompressedFitsFile::HeaderEntry("RAWSUM", "         0", "Checksum of raw littlen endian data"));
+
+    //deal with the DRS calib
+    int16_t* drsCalib16 = NULL;
+
+    //load the drs calib. data
+    int32_t startCellOffset = -1;
+    if (drsFileName != "")
+    {
+        drsCalib16 = new int16_t[1440*1024];
+        float* drsCalibFloat = NULL;
+        try
+        {
+            drsCalibFloat = reinterpret_cast<float*>(drsFile->SetPtrAddress("BaselineMean"));
+        }
+        catch (...)
+        {
+            cout << "Could not find column BaselineMean in drs calibration file " << drsFileName << ". Aborting" << endl;
+            return -1;
+        }
+
+        //read the calibration and calculate its integer value
+        drsFile->GetNextRow();
+        for (uint32_t i=0;i<1440*1024;i++)
+            drsCalib16[i] = (int16_t)(drsCalibFloat[i]*4096.f/2000.f);
+
+
+        //get the start cells offsets
+        for (fits::Table::Columns::const_iterator it=columns.begin(); it!= columns.end(); it++)
+            if (it->first == "StartCellData")
+            {
+                startCellOffset = it->second.offset;
+                if (it->second.type != 'I')
+                {
+                    cout << "Wrong type for the StartCellData Column: " << it->second.type << " instead of I expected"<< endl;
+                    return -1;
+                }
+            }
+
+        if (startCellOffset == -1)
+        {
+            cout << "WARNING: Could not find StartCellData in input file " << fileNameIn << ". Doing it uncalibrated"<< endl;
+        }
+        else
+        {
+            //assign it to the ouput file
+            outFile.setDrsCalib(drsCalib16);
+        }
+    }
+
+    /************************************************************************************
+     *  Done configuring compression. Do the real job now !
+     ************************************************************************************/
+
+    if (displayText) cout << "Converting file..." << endl;
+
+    int numSlices = -1;
+    int32_t dataOffset = -1;
+
+    //Get the pointer to the column that must be drs-calibrated
+    for (fits::Table::Columns::const_iterator it=columns.begin(); it!= columns.end(); it++)
+        if (it->first == "Data")
+        {
+            numSlices = it->second.num;
+            dataOffset = it->second.offset;
+        }
+    if (numSlices % 1440 != 0)
+    {
+        cout << "seems like the number of samples is not a multiple of 1440. Aborting." << endl;
+        return -1;
+    }
+    if (dataOffset == -1)
+    {
+        cout << "Could not find the column Data in the input file. Aborting." << endl;
+        return -1;
+    }
+
+    numSlices /= 1440;
+
+    //set pointers to the readout data to later be able to gather it to "buffer".
+    vector<void*>   readPointers;
+    vector<int32_t> readOffsets;
+    vector<int32_t> readElemSize;
+    vector<int32_t> readNumElems;
+    for (fits::Table::Columns::const_iterator it=columns.begin(); it!= columns.end(); it++)
+    {
+        readPointers.push_back(inFile.SetPtrAddress(it->first));
+        readOffsets.push_back(it->second.offset);
+        readElemSize.push_back(it->second.size);
+        readNumElems.push_back(it->second.num);
+    }
+
+    Checksum rawsum;
+    //Convert each row one after the other
+    ostringstream wrongChannels;
+    map<int, int> wrongChannelsMap;
+    map<int, int> wrongChannelsLastValues;
+    for (uint32_t i=0;i<1440;i++)
+    {
+        wrongChannelsMap[i] = 0;
+        wrongChannelsLastValues[i] = 0;
+    }
+    for (uint32_t i=0;i<inFile.GetNumRows();i++)
+    {
+        if (displayText) cout << "\r Row " << i+1 << flush;
+        if (!inFile.GetNextRow())
+        {
+            cout << "ERROR: file has less rows than advertized. aborting" << endl;
+            exit(0);
+        }
+        //copy from inFile internal structures to buffer
+        int32_t count=0;
+        for (fits::Table::Columns::const_iterator it=columns.begin(); it!= columns.end();it++)
+        {
+            memcpy(&buffer[readOffsets[count]], readPointers[count], readElemSize[count]*readNumElems[count]);
+            count++;
+        }
+
+        char* checkSumPointer = buffer;
+        const int chkOffset = (i*totalRowWidth)%4;
+        checkSumPointer -= chkOffset;
+        uint32_t sizeToChecksum = totalRowWidth + chkOffset;
+        if (sizeToChecksum%4 != 0)
+        {
+            int32_t extraBytes = 4 - (sizeToChecksum%4);
+            memset(checkSumPointer+sizeToChecksum, 0, extraBytes);
+            sizeToChecksum += extraBytes;
+        }
+        rawsum.add(checkSumPointer, sizeToChecksum, false);
+
+        if (startCellOffset != -1)
+        {//drs calibrate this data
+            for (int j=0;j<1440;j++)
+            {
+                const int thisStartCell = reinterpret_cast<int16_t*>(&buffer[startCellOffset])[j];
+                if (thisStartCell > 1023)
+                {
+                    wrongChannelsMap[j]++;
+                    wrongChannelsLastValues[j] = thisStartCell;
+                    wrongChannels << j;
+                }
+                if (thisStartCell < 0)  continue;
+                for (int k=0;k<numSlices;k++)
+                    reinterpret_cast<int16_t*>(&buffer[dataOffset])[numSlices*j + k] -= drsCalib16[1024*j + (thisStartCell+k)%1024];
+            }
+        }
+        outFile.writeBinaryRow(buffer);
+    };
+
+    if (wrongChannels.str() != "")
+    {
+        cout << "ERROR: Wrong channels: ";
+        for (uint32_t i=0;i<1440;i++)
+        {
+            if (wrongChannelsMap[i] != 0)
+                cout << i << "(" << wrongChannelsMap[i] << "|" << wrongChannelsLastValues[i] << ") ";
+        }
+        cout << endl;
+        exit(-1);
+    }
+    ostringstream strSum;
+    strSum << rawsum.val();
+    outFile.setHeaderKey(CompressedFitsFile::HeaderEntry("RAWSUM", strSum.str(), "Checksum of raw littlen endian data"));
+
+    //Get table name for later use in case the compressed file is to be verified
+    string tableName = inFile.GetStr("EXTNAME");
+
+    if (displayText) cout << endl << "Done. Flushing output file..." << endl;
+
+    inFile.close();
+    if (!outFile.close())
+    {
+        cout << "Something went wrong while writing the catalog: negative index" << endl;
+        return false;
+    }
+
+    if (drsCalib16 != NULL)
+        delete[] drsCalib16;
+
+    if (displayText) cout << "Done." << endl;
+
+    /************************************************************************************
+     *  Actual job done. Should we verify what we did ?
+     ************************************************************************************/
+
+    if (verifyDataPlease)
+    {
+        if (displayText) cout << "Now verify data..." << endl;
+    }
+    else
+        return 0;
+
+    //get a compressed reader
+//TEMP try to copy the file too
+//    string copyName("/gpfs/scratch/fact/etienne/copyFile.fz");
+//    string copyName(fileNameOut+".copy");
+    string copyName("");
+    factfits verifyFile(fileNameOut, copyName, tableName, false);
+
+    //and the header of the compressed file
+    const fits::Table::Keys& header2 = verifyFile.GetKeys();
+
+    //get a non-compressed writer
+    ofits reconstructedFile;
+
+    //figure out its name: /dev/null unless otherwise specified
+    string reconstructedName = fileNameOut+".recons";
+    reconstructedName = "/dev/null";
+    reconstructedFile.open(reconstructedName.c_str(), false);
+
+    //reconstruct the original columns from the compressed file.
+    string origChecksumStr;
+    string origDatasum;
+
+    //reset tablename value so that it is re-read from compressed table's header
+    tableName = "";
+
+    /************************************************************************************
+     *  Reconstruction setup done. Rebuild original header
+     ************************************************************************************/
+
+    //re-tranlate the keys
+    for (fits::Table::Keys::const_iterator it=header2.begin(); it!= header2.end(); it++)
+    {
+        string k = it->first;
+        if (k == "XTENSION" || k == "BITPIX"  || k == "PCOUNT"   || k == "GCOUNT" ||
+            k == "TFIELDS"  || k == "ZTABLE"  || k == "ZNAXIS1"  || k == "ZNAXIS2" ||
+            k == "ZHEAPPTR" || k == "ZPCOUNT" || k == "ZTILELEN" || k == "THEAP" ||
+            k == "CHECKSUM" || k == "DATASUM" || k == "FCTCPVER" || k == "ZHEAP")
+        {
+            continue;
+        }
+
+        if (k == "ZCHKSUM")
+        {
+            reconstructedFile.SetKeyComment("CHECKSUM", it->second.comment);
+            origChecksumStr = it->second.value;
+            continue;
+        }
+        if (k == "RAWSUM")
+        {
+            continue;
+        }
+
+        if (k == "ZDTASUM")
+        {
+            reconstructedFile.SetKeyComment("DATASUM",  it->second.comment);
+            origDatasum = it->second.value;
+            continue;
+        }
+
+        if (k == "EXTNAME")
+        {
+            tableName = it->second.value;
+        }
+
+        k = k.substr(0,5);
+
+        if (k == "TTYPE")
+        {//we have an original column name here.
+         //manually deal with these in order to preserve the ordering (easier than re-constructing yet another list on the fly)
+            continue;
+        }
+
+        if (k == "TFORM" || k == "NAXIS" || k == "ZCTYP" )
+        {
+            continue;
+        }
+
+        if (k == "ZFORM" || k == "ZTYPE")
+        {
+            string tmpKey = it->second.fitsString;
+            tmpKey[0] = 'T';
+            reconstructedFile.SetKeyFromFitsString(tmpKey);
+            continue;
+        }
+
+        reconstructedFile.SetKeyFromFitsString(it->second.fitsString);
+    }
+
+    if (tableName == "")
+    {
+        cout << "Error: table name from file " << fileNameOut << " could not be found. Aborting" << endl;
+        return -1;
+    }
+
+    //Restore the original columns
+    for (uint32_t numCol=1; numCol<10000; numCol++)
+    {
+        ostringstream str;
+        str << numCol;
+        if (!verifyFile.HasKey("TTYPE"+str.str())) break;
+
+        string ttype    = verifyFile.GetStr("TTYPE"+str.str());
+        string tform    = verifyFile.GetStr("ZFORM"+str.str());
+        char   type     = tform[tform.size()-1];
+        string number   = tform.substr(0, tform.size()-1);
+        int    numElems = atoi(number.c_str());
+
+        if (number == "") numElems=1;
+
+        reconstructedFile.AddColumn(numElems, type, ttype, "", "", false);
+    }
+
+    reconstructedFile.WriteTableHeader(tableName.c_str());
+
+    /************************************************************************************
+     *  Original header restored. Do the data
+     ************************************************************************************/
+
+    //set pointers to the readout data to later be able to gather it to "buffer".
+    readPointers.clear();
+    readOffsets.clear();
+    readElemSize.clear();
+    readNumElems.clear();
+    for (fits::Table::Columns::const_iterator it=columns.begin(); it!= columns.end(); it++)
+    {
+        readPointers.push_back(verifyFile.SetPtrAddress(it->first));
+        readOffsets.push_back(it->second.offset);
+        readElemSize.push_back(it->second.size);
+        readNumElems.push_back(it->second.num);
+    }
+
+    //do the actual reconstruction work
+    uint32_t i=1;
+    while (i<=verifyFile.GetNumRows() && verifyFile.GetNextRow())
+    {
+        int count=0;
+        for (fits::Table::Columns::const_iterator it=columns.begin(); it!= columns.end();it++)
+        {
+            memcpy(&buffer[readOffsets[count]], readPointers[count], readElemSize[count]*readNumElems[count]);
+            count++;
+        }
+        if (displayText) cout << "\r Row " << i << flush;
+        reconstructedFile.WriteRow(buffer, rowWidth);
+        i++;
+    }
+
+    if (displayText) cout << endl;
+
+    //close reconstruction input and output
+//    Do NOT close the verify file, otherwise data cannot be flushed to copy file
+//    verifyFile.close();
+    if (!verifyFile.IsFileOk())
+        cout << "ERROR: file checksums seems wrong" << endl;
+
+    if (!reconstructedFile.close())
+    {
+        cout << "ERROR: disk probably full..." << endl;
+        return -1;
+    }
+
+    //get original and reconstructed checksum and datasum
+    std::pair<string, int> origChecksum = make_pair(origChecksumStr, atoi(origDatasum.c_str()));
+    std::pair<string, int> newChecksum = reconstructedFile.GetChecksumData();
+
+    //verify that no mistake was made
+    if (origChecksum.second != newChecksum.second)
+    {
+        cout << "ERROR: datasums are NOT identical: " << (uint32_t)(origChecksum.second) << " vs " << (uint32_t)(newChecksum.second) << endl;
+        return -1;
+    }
+    if (origChecksum.first != newChecksum.first)
+    {
+        cout << "WARNING: checksums are NOT Identical: " << origChecksum.first << " vs " << newChecksum.first << endl;
+    }
+    else
+    {
+        if (true) cout << "Ok" << endl;
+    }
+
+    buffer = buffer-4;
+    delete[] buffer;
+    return 0;
+}
+
Index: branches/testFACT++branch/src/fitsDecompressor.cc
===================================================================
--- branches/testFACT++branch/src/fitsDecompressor.cc	(revision 18277)
+++ branches/testFACT++branch/src/fitsDecompressor.cc	(revision 18277)
@@ -0,0 +1,1850 @@
+/*
+ * fitsCompressor.cc
+ *
+ *  Created on: May 7, 2013
+ *      Author: lyard
+ */
+
+
+#include "Configuration.h"
+#include "../externals/factfits.h"
+#include "../externals/ofits.h"
+#include "../externals/checksum.h"
+
+#include <map>
+#include <fstream>
+#include <sstream>
+#include <iostream>
+
+
+using namespace std;
+
+class CompressedFitsFile
+{
+public:
+    class HeaderEntry
+    {
+        public:
+            /**
+             *  Default constructor
+             */
+            HeaderEntry(): _key(""),
+                           _value(""),
+                           _comment(""),
+                           _fitsString("")
+            {
+            }
+
+            /**
+             * Regular constructor.
+             * @param key the name of the keyword entry
+             * @param value its value
+             * @param comment an optionnal comment to be placed after the value
+             */
+            template<typename T>
+            HeaderEntry(const string& k,
+                        const T& val,
+                        const string& comm) : _key(k),
+                                              _value(""),
+                                              _comment(comm),
+                                              _fitsString("")
+            {
+                setValue(val);
+            }
+
+            /**
+             * From fits.h
+             */
+            string Trim(const string &str, char c=' ')
+            {
+                // Trim Both leading and trailing spaces
+                const size_t pstart = str.find_first_not_of(c); // Find the first character position after excluding leading blank spaces
+                const size_t pend   = str.find_last_not_of(c);  // Find the first character position from reverse af
+
+                // if all spaces or empty return an empty string
+                if (string::npos==pstart || string::npos==pend)
+                    return string();
+
+                return str.substr(pstart, pend-pstart+1);
+            }
+            /**
+             *  Constructor from the original fits entry
+             */
+            HeaderEntry(const string& line)
+            {
+                _fitsString = line.data();
+
+                //parse the line
+                _key = Trim(line.substr(0,8));
+                //COMMENT and/or HISTORY values
+                if (line.substr(8,2)!= "= ")
+                {
+                    _value = "";
+                    _comment = Trim(line.substr(10));
+                    return;
+                }
+                string next=line.substr(10);
+                const size_t slash = next.find_first_of('/');
+                _value = Trim(Trim(Trim(next.substr(0, slash)), '\''));
+                _comment = Trim(next.substr(slash+1));
+            }
+            /**
+             *  Alternative constroctor from the fits entry
+             */
+            HeaderEntry(const vector<char>& lineVec)
+            {
+                HeaderEntry(string(lineVec.data()));
+            }
+            /**
+             *  Destructor
+             */
+            virtual ~HeaderEntry(){}
+
+            const string& value()      const {return _value;}
+            const string& key()        const {return _key;}
+            const string& comment()    const {return _comment;}
+            const string& fitsString() const {return _fitsString;}
+
+            /**
+             * Set a keyword value.
+             * @param value The value to be set
+             * @param update whether the value already exist or not. To be modified soon.
+             */
+            template<typename T>
+            void setValue(const T& val)
+            {
+                ostringstream str;
+                str << val;
+                _value = str.str();
+                buildFitsString();
+            };
+            /**
+             *  Set the comment for a given entry
+             */
+            void setComment(const string& comm)
+            {
+                _comment = comm;
+                buildFitsString();
+            }
+
+        private:
+            /**
+             *  Construct the FITS header string from the key, value and comment
+             */
+            void buildFitsString()
+            {
+                ostringstream str;
+                unsigned int totSize = 0;
+
+                // Tuncate the key if required
+                if (_key.length() > 8)
+                {
+                    str << _key.substr(0, 8);
+                    totSize += 8;
+                }
+                else
+                {
+                    str << _key;
+                    totSize += _key.length();
+                }
+
+                // Append space if key is less than 8 chars long
+                for (int i=totSize; i<8;i++)
+                {
+                    str << " ";
+                    totSize++;
+                }
+
+                // Add separator
+                str << "= ";
+                totSize += 2;
+
+                // Format value
+                if (_value.length() < 20)
+                    for (;totSize<30-_value.length();totSize++)
+                        str << " ";
+
+                if (_value.length() > 70)
+                {
+                    str << _value.substr(0,70);
+                    totSize += 70;
+                }
+                else
+                {
+                    str << _value;
+                    totSize += _value.size();
+                }
+
+                // If there is space remaining, add comment area
+                if (totSize < 77)
+                {
+                    str << " / ";
+                    totSize += 3;
+                    if (totSize < 80)
+                    {
+                        unsigned int commentSize = 80 - totSize;
+                        if (_comment.length() > commentSize)
+                        {
+                            str << _comment.substr(0,commentSize);
+                            totSize += commentSize;
+                        }
+                        else
+                        {
+                            str << _comment;
+                            totSize += _comment.length();
+                        }
+                    }
+                }
+
+                // If there is yet some free space, fill up the entry with spaces
+                for (int i=totSize; i<80;i++)
+                    str << " ";
+
+                _fitsString = str.str();
+
+                // Check for correct completion
+                if (_fitsString.length() != 80)
+                    cout << "Error |" << _fitsString << "| is not of length 80" << endl;
+            }
+
+            string _key;        ///< the key (name) of the header entry
+            string _value;      ///< the value of the header entry
+            string _comment;    ///< the comment associated to the header entry
+            string _fitsString; ///< the string that will be written to the fits file
+    };
+
+    /**
+     *  Supported compressions
+     */
+    typedef enum
+    {
+        UNCOMPRESSED,
+        SMOOTHMAN
+    } FitsCompression;
+
+    /**
+     *  Columns class
+     */
+    class ColumnEntry
+    {
+        public:
+            /**
+             *  Default constructor
+             */
+            ColumnEntry();
+
+            /**
+             *  Default destructor
+             */
+            virtual ~ColumnEntry(){}
+
+            /**
+             *  Constructor from values
+             *  @param n the column name
+             *  @param t the column type
+             *  @param numof the number of entries in the column
+             *  @param comp the compression type for this column
+             */
+            ColumnEntry(const string& n,
+                        char          t,
+                        int           numOf,
+                        BlockHeader&   head,
+                        vector<uint16_t>& seq) : _name(n),
+                                                 _num(numOf),
+                                                 _typeSize(0),
+                                                 _offset(0),
+                                                 _type(t),
+                                                 _description(""),
+                                                 _header(head),
+                                                 _compSequence(seq)
+            {
+                switch (t)
+                {
+                    case 'L':
+                    case 'A':
+                    case 'B': _typeSize = 1; break;
+                    case 'I': _typeSize = 2; break;
+                    case 'J':
+                    case 'E': _typeSize = 4; break;
+                    case 'K':
+                    case 'D': _typeSize = 8; break;
+                    default:
+                    cout << "Error: typename " << t << " missing in the current implementation" << endl;
+                };
+
+                ostringstream str;
+                str << "data format of field: ";
+
+                switch (t)
+                {
+                    case 'L': str << "1-byte BOOL"; break;
+                    case 'A': str << "1-byte CHAR"; break;
+                    case 'B': str << "BYTE"; break;
+                    case 'I': str << "2-byte INTEGER"; break;
+                    case 'J': str << "4-byte INTEGER"; break;
+                    case 'K': str << "8-byte INTEGER"; break;
+                    case 'E': str << "4-byte FLOAT"; break;
+                    case 'D': str << "8-byte FLOAT"; break;
+                }
+
+                _description = str.str();
+            }
+
+            const string& name()                 const { return _name;};
+            int           width()                const { return _num*_typeSize;};
+            int           offset()               const { return _offset; };
+            int           numElems()             const { return _num; };
+            int           sizeOfElems()          const { return _typeSize;};
+            void          setOffset(int off)           { _offset = off;};
+            char          type()                 const { return _type;};
+            string        getDescription()       const { return _description;}
+            BlockHeader& getBlockHeader()  { return _header;}
+            const vector<uint16_t>& getCompressionSequence() const { return _compSequence;}
+            const char& getColumnOrdering() const { return _header.ordering;}
+
+
+            string        getCompressionString() const
+            {
+                return "FACT";
+             /*
+                ostringstream str;
+                for (uint32_t i=0;i<_compSequence.size();i++)
+                switch (_compSequence[i])
+                {
+                    case FACT_RAW: if (str.str().size() == 0) str << "RAW"; break;
+                    case FACT_SMOOTHING: str << "SMOOTHING "; break;
+                    case FACT_HUFFMAN16: str << "HUFFMAN16 "; break;
+                };
+                return str.str();*/
+            }
+
+        private:
+
+            string _name;          ///< name of the column
+            int     _num;          ///< number of elements contained in one row of this column
+            int    _typeSize;      ///< the number of bytes taken by one element
+            int    _offset;        ///< the offset of the column, in bytes, from the beginning of one row
+            char   _type;          ///< the type of the column, as specified by the fits documentation
+            string _description;   ///< a description for the column. It will be placed in the header
+            BlockHeader _header;
+            vector<uint16_t> _compSequence;
+    };
+
+    public:
+        ///@brief default constructor. Assigns a default number of rows and tiles
+        CompressedFitsFile(uint32_t numTiles=100, uint32_t numRowsPerTile=100);
+
+        ///@brief default destructor
+        virtual ~CompressedFitsFile();
+
+        ///@brief get the header of the file
+        vector<HeaderEntry>& getHeaderEntries() { return _header;}
+
+    protected:
+        ///@brief protected function to allocate the intermediate buffers
+        bool reallocateBuffers();
+
+        //FITS related stuff
+        vector<HeaderEntry>  _header;         ///< Header keys
+        vector<ColumnEntry>  _columns;        ///< Columns in the file
+        uint32_t             _numTiles;       ///< Number of tiles (i.e. groups of rows)
+        uint32_t             _numRowsPerTile; ///< Number of rows per tile
+        uint32_t             _totalNumRows;   ///< Total number of raws
+        uint32_t             _rowWidth;       ///< Total number of bytes in one row
+        bool                 _headerFlushed;  ///< Flag telling whether the header record is synchronized with the data on disk
+        char*                _buffer;         ///< Memory buffer to store rows while they are not compressed
+        Checksum             _checksum;       ///< Checksum for asserting the consistency of the data
+        fstream              _file;           ///< The actual file streamer for accessing disk data
+
+        //compression related stuff
+        typedef pair<int64_t, int64_t> CatalogEntry;
+        typedef vector<CatalogEntry>   CatalogRow;
+        typedef vector<CatalogRow>     CatalogType;
+        CatalogType _catalog;              ///< Catalog, i.e. the main table that points to the compressed data.
+        uint64_t                 _heapPtr; ///< the address in the file of the heap area
+        vector<char*> _transposedBuffer;   ///< Memory buffer to store rows while they are transposed
+        vector<char*> _compressedBuffer;   ///< Memory buffer to store rows while they are compressed
+
+        //thread related stuff
+        uint32_t          _numThreads;    ///< The number of threads that will be used to compress
+        uint32_t          _threadIndex;   ///< A variable to assign threads indices
+        vector<pthread_t> _thread;        ///< The thread handler of the compressor
+        vector<uint32_t>  _threadNumRows; ///< Total number of rows for thread to compress
+        vector<uint32_t>  _threadStatus;  ///< Flag telling whether the buffer to be transposed (and compressed) is full or empty
+
+        //thread states. Not all used, but they do not hurt
+        static const uint32_t       _THREAD_WAIT_; ///< Thread doing nothing
+        static const uint32_t   _THREAD_COMPRESS_; ///< Thread working, compressing
+        static const uint32_t _THREAD_DECOMPRESS_; ///< Thread working, decompressing
+        static const uint32_t      _THREAD_WRITE_; ///< Thread writing data to disk
+        static const uint32_t       _THREAD_READ_; ///< Thread reading data from disk
+        static const uint32_t       _THREAD_EXIT_; ///< Thread exiting
+
+        static HeaderEntry _dummyHeaderEntry; ///< Dummy entry for returning if requested on is not found
+};
+
+class CompressedFitsWriter : public CompressedFitsFile
+{
+    public:
+        ///@brief Default constructor. 100 tiles of 100 rows each are assigned by default
+        CompressedFitsWriter(uint32_t numTiles=100, uint32_t numRowsPerTile=100);
+
+        ///@brief default destructor
+        virtual ~CompressedFitsWriter();
+
+        ///@brief add one column to the file
+        bool addColumn(const ColumnEntry& column);
+
+        ///@brief sets a given header key
+        bool setHeaderKey(const HeaderEntry&);
+
+        bool changeHeaderKey(const string& origName, const string& newName);
+
+        ///@brief open a new fits file
+        bool open(const string& fileName, const string& tableName="Data");
+
+        ///@brief close the opened file
+        bool close();
+
+        ///@brief write one row of data, already placed in bufferToWrite. Does the byte-swapping
+        bool writeBinaryRow(const char* bufferToWrite);
+
+        uint32_t getRowWidth();
+
+        ///@brief assign a given (already loaded) drs calibration
+        void setDrsCalib(int16_t* data);
+
+        ///@brief set the number of worker threads compressing the data.
+        bool setNumWorkingThreads(uint32_t num);
+
+    private:
+        ///@brief compresses one buffer of data, the one given by threadIndex
+        uint64_t compressBuffer(uint32_t threadIndex);
+
+        ///@brief writes an already compressed buffer to disk
+        bool writeCompressedDataToDisk(uint32_t threadID, uint32_t sizeToWrite);
+
+        ///@brief add the header checksum to the datasum
+        void addHeaderChecksum(Checksum& checksum);
+
+        ///@brief write the header. If closingFile is set to true, checksum is calculated
+        void writeHeader(bool closingFile = false);
+
+        ///@brief write the compressed data catalog. If closingFile is set to true, checksum is calculated
+        void writeCatalog(bool closingFile=false);
+
+        /// FIXME this was a bad idea. Move everything to the regular header
+        vector<HeaderEntry> _defaultHeader;
+
+        /// the main function compressing the data
+        static void* threadFunction(void* context);
+
+        /// Write the drs calibration to disk, if any
+        void writeDrsCalib();
+
+        /// Copy and transpose (or semi-transpose) one tile of data
+        void copyTransposeTile(uint32_t index);
+
+        /// Specific compression functions
+        uint32_t compressUNCOMPRESSED(char* dest, const char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems);
+        uint32_t      compressHUFFMAN(char* dest, const char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems);
+        uint32_t    compressSMOOTHMAN(char* dest, char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems);
+        uint32_t       applySMOOTHING(char* dest, char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems);
+
+        int32_t         _checkOffset;  ///< offset to the data pointer to calculate the checksum
+        int16_t*        _drsCalibData; ///< array of the Drs baseline mean
+        int32_t         _threadLooper; ///< Which thread will deal with the upcoming bunch of data ?
+        pthread_mutex_t _mutex;        ///< mutex for compressing threads
+
+
+        static string _emptyBlock; ///< an empty block to be apened at the end of a file so that its length is a multiple of 2880
+        static string _fitsHeader; ///< the default header to be written in every fits file
+};
+
+const uint32_t CompressedFitsFile::_THREAD_WAIT_      = 0;
+const uint32_t CompressedFitsFile::_THREAD_COMPRESS_  = 1;
+const uint32_t CompressedFitsFile::_THREAD_DECOMPRESS_= 2;
+const uint32_t CompressedFitsFile::_THREAD_WRITE_     = 3;
+const uint32_t CompressedFitsFile::_THREAD_READ_      = 4;
+const uint32_t CompressedFitsFile::_THREAD_EXIT_      = 5;
+
+template<>
+void CompressedFitsFile::HeaderEntry::setValue(const string& v)
+{
+    string val = v;
+    if (val.size() > 2 && val[0] == '\'')
+    {
+        size_t pos = val.find_last_of("'");
+        if (pos != string::npos && pos != 0)
+            val = val.substr(1, pos-1);
+    }
+    ostringstream str;
+
+    str << "'" << val << "'";
+    for (int i=str.str().length(); i<20;i++)
+        str << " ";
+    _value = str.str();
+    buildFitsString();
+}
+
+/**
+ * Default header to be written in all fits files
+ */
+string CompressedFitsWriter::_fitsHeader = "SIMPLE  =                    T / file does conform to FITS standard             "
+                    "BITPIX  =                    8 / number of bits per data pixel                  "
+                    "NAXIS   =                    0 / number of data axes                            "
+                    "EXTEND  =                    T / FITS dataset may contain extensions            "
+                    "CHECKSUM= '4AcB48bA4AbA45bA'   / Checksum for the whole HDU                     "
+                    "DATASUM = '         0'         / Checksum for the data block                    "
+                    "COMMENT   FITS (Flexible Image Transport System) format is defined in 'Astronomy"
+                    "COMMENT   and Astrophysics', volume 376, page 359; bibcode: 2001A&A...376..359H "
+                    "END                                                                             "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                ";
+
+/**
+ * Empty block to be appenned at the end of files, so that the length matches multiple of 2880 bytes
+ *
+ */
+string CompressedFitsWriter::_emptyBlock = "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                "
+                    "                                                                                ";
+
+CompressedFitsFile::HeaderEntry CompressedFitsFile::_dummyHeaderEntry;
+/****************************************************************
+ *              SUPER CLASS DEFAULT CONSTRUCTOR
+ ****************************************************************/
+CompressedFitsFile::CompressedFitsFile(uint32_t numTiles,
+                                       uint32_t numRowsPerTile) : _header(),
+                                                                 _columns(),
+                                                                 _numTiles(numTiles),
+                                                                 _numRowsPerTile(numRowsPerTile),
+                                                                 _totalNumRows(0),
+                                                                 _rowWidth(0),
+                                                                 _headerFlushed(false),
+                                                                 _buffer(NULL),
+                                                                 _checksum(0),
+                                                                 _heapPtr(0),
+                                                                 _transposedBuffer(1),
+                                                                 _compressedBuffer(1),
+                                                                 _numThreads(1),
+                                                                 _threadIndex(0),
+                                                                 _thread(1),
+                                                                 _threadNumRows(1),
+                                                                 _threadStatus(1)
+{
+    _catalog.resize(_numTiles);
+    _transposedBuffer[0] = NULL;
+    _compressedBuffer[0] = NULL;
+    _threadStatus[0] = _THREAD_WAIT_;
+    _threadNumRows[0] = 0;
+}
+
+/****************************************************************
+ *              SUPER CLASS DEFAULT DESTRUCTOR
+ ****************************************************************/
+CompressedFitsFile::~CompressedFitsFile()
+{
+    if (_buffer != NULL)
+    {
+        _buffer = _buffer-4;
+        delete[] _buffer;
+        _buffer = NULL;
+        for (uint32_t i=0;i<_numThreads;i++)
+        {
+            _compressedBuffer[i] = _compressedBuffer[i]-4;
+            delete[] _transposedBuffer[i];
+            delete[] _compressedBuffer[i];
+            _transposedBuffer[i] = NULL;
+            _compressedBuffer[i] = NULL;
+        }
+    }
+    if (_file.is_open())
+        _file.close();
+}
+
+/****************************************************************
+ *              REALLOCATE BUFFER
+ ****************************************************************/
+bool CompressedFitsFile::reallocateBuffers()
+{
+    if (_buffer)
+    {
+        _buffer = _buffer - 4;
+        delete[] _buffer;
+        for (uint32_t i=0;i<_compressedBuffer.size();i++)
+        {
+            _compressedBuffer[i] = _compressedBuffer[i]-4;
+            delete[] _transposedBuffer[i];
+            delete[] _compressedBuffer[i];
+        }
+    }
+    _buffer = new char[_rowWidth*_numRowsPerTile + 12];
+    if (_buffer == NULL) return false;
+    memset(_buffer, 0, 4);
+    _buffer = _buffer + 4;
+    if (_compressedBuffer.size() != _numThreads)
+    {
+        _transposedBuffer.resize(_numThreads);
+        _compressedBuffer.resize(_numThreads);
+    }
+    for (uint32_t i=0;i<_numThreads;i++)
+    {
+        _transposedBuffer[i] = new char[_rowWidth*_numRowsPerTile];
+        _compressedBuffer[i] = new char[_rowWidth*_numRowsPerTile + _columns.size() + sizeof(TileHeader) + 12]; //use a bit more memory for compression flags and checksumming
+        if (_transposedBuffer[i] == NULL || _compressedBuffer[i] == NULL)
+            return false;
+        //shift the compressed buffer by 4 bytes, for checksum calculation
+        memset(_compressedBuffer[i], 0, 4);
+        _compressedBuffer[i] = _compressedBuffer[i]+4;
+        //initialize the tile header
+        TileHeader tileHeader;
+        memcpy(_compressedBuffer[i], &tileHeader, sizeof(TileHeader));
+    }
+    return true;
+}
+
+/****************************************************************
+ *                  DEFAULT WRITER CONSTRUCTOR
+ ****************************************************************/
+CompressedFitsWriter::CompressedFitsWriter(uint32_t numTiles,
+                                           uint32_t numRowsPerTile) : CompressedFitsFile(numTiles, numRowsPerTile),
+                                                                    _checkOffset(0),
+                                                                    _drsCalibData(NULL),
+                                                                    _threadLooper(0)
+{
+    _defaultHeader.push_back(HeaderEntry("XTENSION", "'BINTABLE'          ", "binary table extension"));
+    _defaultHeader.push_back(HeaderEntry("BITPIX", 8, "8-bit bytes"));
+    _defaultHeader.push_back(HeaderEntry("NAXIS", 2, "2-dimensional binary table"));
+    _defaultHeader.push_back(HeaderEntry("NAXIS1", _rowWidth, "width of table in bytes"));
+    _defaultHeader.push_back(HeaderEntry("NAXIS2", numTiles, "num of rows in table"));
+    _defaultHeader.push_back(HeaderEntry("PCOUNT", 0, "size of special data area"));
+    _defaultHeader.push_back(HeaderEntry("GCOUNT", 1, "one data group (required keyword)"));
+    _defaultHeader.push_back(HeaderEntry("TFIELDS", _columns.size(), "number of fields in each row"));
+    _defaultHeader.push_back(HeaderEntry("CHECKSUM", "'0000000000000000'  ", "Checksum for the whole HDU"));
+    _defaultHeader.push_back(HeaderEntry("DATASUM",  "         0", "Checksum for the data block"));
+    //compression stuff
+    _defaultHeader.push_back(HeaderEntry("ZTABLE", "T", "Table is compressed"));
+    _defaultHeader.push_back(HeaderEntry("ZNAXIS1", 0, "Width of uncompressed rows"));
+    _defaultHeader.push_back(HeaderEntry("ZNAXIS2", 0, "Number of uncompressed rows"));
+    _defaultHeader.push_back(HeaderEntry("ZPCOUNT", 0, ""));
+    _defaultHeader.push_back(HeaderEntry("ZHEAPPTR", 0, ""));
+    _defaultHeader.push_back(HeaderEntry("ZTILELEN", numRowsPerTile, "Number of rows per tile"));
+    _defaultHeader.push_back(HeaderEntry("THEAP", 0, ""));
+
+    pthread_mutex_init(&_mutex, NULL);
+}
+
+/****************************************************************
+ *              DEFAULT DESTRUCTOR
+ ****************************************************************/
+CompressedFitsWriter::~CompressedFitsWriter()
+{
+    pthread_mutex_destroy(&_mutex);
+}
+
+/****************************************************************
+ *              SET THE POINTER TO THE DRS CALIBRATION
+ ****************************************************************/
+void CompressedFitsWriter::setDrsCalib(int16_t* data)
+{
+    _drsCalibData = data;
+}
+
+/****************************************************************
+ *                  SET NUM WORKING THREADS
+ ****************************************************************/
+bool CompressedFitsWriter::setNumWorkingThreads(uint32_t num)
+{
+    if (_file.is_open())
+        return false;
+    if (num < 1 || num > 64)
+    {
+        cout << "ERROR: num threads must be between 1 and 64. Ignoring" << endl;
+        return false;
+    }
+    _numThreads = num;
+    _transposedBuffer[0] = NULL;
+    _compressedBuffer[0] = NULL;
+    _threadStatus.resize(num);
+    _thread.resize(num);
+    _threadNumRows.resize(num);
+    for (uint32_t i=0;i<num;i++)
+    {
+        _threadNumRows[i] = 0;
+        _threadStatus[i] = _THREAD_WAIT_;
+    }
+    return reallocateBuffers();
+}
+
+/****************************************************************
+ *              WRITE DRS CALIBRATION TO FILE
+ ****************************************************************/
+void CompressedFitsWriter::writeDrsCalib()
+{
+    //if file was not loaded, ignore
+    if (_drsCalibData == NULL)
+        return;
+    uint64_t whereDidIStart = _file.tellp();
+    vector<HeaderEntry> header;
+    header.push_back(HeaderEntry("XTENSION", "'BINTABLE'          ", "binary table extension"));
+    header.push_back(HeaderEntry("BITPIX"  , 8                     , "8-bit bytes"));
+    header.push_back(HeaderEntry("NAXIS"   , 2                     , "2-dimensional binary table"));
+    header.push_back(HeaderEntry("NAXIS1"  , 1024*1440*2           , "width of table in bytes"));
+    header.push_back(HeaderEntry("NAXIS2"  , 1                     , "number of rows in table"));
+    header.push_back(HeaderEntry("PCOUNT"  , 0                     , "size of special data area"));
+    header.push_back(HeaderEntry("GCOUNT"  , 1                     , "one data group (required keyword)"));
+    header.push_back(HeaderEntry("TFIELDS" , 1                     , "number of fields in each row"));
+    header.push_back(HeaderEntry("CHECKSUM", "'0000000000000000'  ", "Checksum for the whole HDU"));
+    header.push_back(HeaderEntry("DATASUM" ,  "         0"         , "Checksum for the data block"));
+    header.push_back(HeaderEntry("EXTNAME" , "'ZDrsCellOffsets'    ", "name of this binary table extension"));
+    header.push_back(HeaderEntry("TTYPE1"  , "'OffsetCalibration' ", "label for field   1"));
+    header.push_back(HeaderEntry("TFORM1"  , "'1474560I'          ", "data format of field: 2-byte INTEGER"));
+
+    for (uint32_t i=0;i<header.size();i++)
+        _file.write(header[i].fitsString().c_str(), 80);
+    //End the header
+    _file.write("END                                                                             ", 80);
+    long here = _file.tellp();
+    if (here%2880)
+        _file.write(_emptyBlock.c_str(), 2880 - here%2880);
+    //now write the data itself
+    int16_t* swappedBytes = new int16_t[1024];
+    Checksum checksum;
+    for (int32_t i=0;i<1440;i++)
+    {
+        memcpy(swappedBytes, &(_drsCalibData[i*1024]), 2048);
+        for (int32_t j=0;j<2048;j+=2)
+        {
+            int8_t inter;
+            inter = reinterpret_cast<int8_t*>(swappedBytes)[j];
+            reinterpret_cast<int8_t*>(swappedBytes)[j] = reinterpret_cast<int8_t*>(swappedBytes)[j+1];
+            reinterpret_cast<int8_t*>(swappedBytes)[j+1] = inter;
+        }
+        _file.write(reinterpret_cast<char*>(swappedBytes), 2048);
+        checksum.add(reinterpret_cast<char*>(swappedBytes), 2048);
+    }
+    uint64_t whereDidIStop = _file.tellp();
+    delete[] swappedBytes;
+    //No need to pad the data, as (1440*1024*2)%2880==0
+
+    //calculate the checksum from the header
+    ostringstream str;
+    str << checksum.val();
+    header[9] = HeaderEntry("DATASUM", str.str(), "Checksum for the data block");
+    for (vector<HeaderEntry>::iterator it=header.begin();it!=header.end(); it++)
+        checksum.add(it->fitsString().c_str(), 80);
+    string   end("END                                                                             ");
+    string space("                                                                                ");
+    checksum.add(end.c_str(), 80);
+    int headerRowsLeft = 36 - (header.size() + 1)%36;
+    for (int i=0;i<headerRowsLeft;i++)
+        checksum.add(space.c_str(), 80);
+    //udpate the checksum keyword
+    header[8] = HeaderEntry("CHECKSUM", checksum.str(), "Checksum for the whole HDU");
+    //and eventually re-write the header data
+    _file.seekp(whereDidIStart);
+    for (uint32_t i=0;i<header.size();i++)
+        _file.write(header[i].fitsString().c_str(), 80);
+    _file.seekp(whereDidIStop);
+}
+
+/****************************************************************
+ *              ADD COLUMN
+ ****************************************************************/
+bool CompressedFitsWriter::addColumn(const ColumnEntry& column)
+{
+    if (_totalNumRows != 0)
+    {
+        cout << "Error: cannot add new columns once first row has been written" << endl;
+        return false;
+    }
+    for (vector<ColumnEntry>::iterator it=_columns.begin(); it != _columns.end(); it++)
+    {
+        if (it->name() == column.name())
+        {
+            cout << "Warning: column already exist (" << column.name() << "). Ignoring" << endl;
+            return false;
+        }
+    }
+    _columns.push_back(column);
+    _columns.back().setOffset(_rowWidth);
+    _rowWidth += column.width();
+    reallocateBuffers();
+
+    ostringstream str, str2, str3;
+    str << "TTYPE" << _columns.size();
+    str2 << column.name();
+    str3 << "label for field ";
+    if (_columns.size() < 10) str3 << " ";
+    if (_columns.size() < 100) str3 << " ";
+    str3 << _columns.size();
+    setHeaderKey(HeaderEntry(str.str(), str2.str(), str3.str()));
+    str.str("");
+    str2.str("");
+    str3.str("");
+    str << "TFORM" << _columns.size();
+    str2 << "1QB";
+    str3 << "data format of field " << _columns.size();
+    setHeaderKey(HeaderEntry(str.str(), str2.str(), str3.str()));
+    str.str("");
+    str2.str("");
+    str3.str("");
+    str << "ZFORM" << _columns.size();
+    str2 << column.numElems() << column.type();
+    str3 << "Original format of field " << _columns.size();
+    setHeaderKey(HeaderEntry(str.str(), str2.str(), str3.str()));
+    str.str("");
+    str2.str("");
+    str3.str("");
+    str << "ZCTYP" << _columns.size();
+    str2 << column.getCompressionString();
+    str3 << "Comp. Scheme of field " << _columns.size();
+    setHeaderKey(HeaderEntry(str.str(), str2.str(), str3.str()));
+    //resize the catalog vector accordingly
+    for (uint32_t i=0;i<_numTiles;i++)
+    {
+        _catalog[i].resize(_columns.size());
+        for (uint32_t j=0;j<_catalog[i].size();j++)
+            _catalog[i][j] = make_pair(0,0);
+    }
+    return true;
+}
+
+/****************************************************************
+ *                  SET HEADER KEY
+ ****************************************************************/
+bool CompressedFitsWriter::setHeaderKey(const HeaderEntry& entry)
+{
+    HeaderEntry ent = entry;
+    for (vector<HeaderEntry>::iterator it=_header.begin(); it != _header.end(); it++)
+    {
+        if (it->key() == entry.key())
+        {
+            if (entry.comment() == "")
+                ent.setComment(it->comment());
+            (*it) = ent;
+            _headerFlushed = false;
+            return true;
+        }
+    }
+    for (vector<HeaderEntry>::iterator it=_defaultHeader.begin(); it != _defaultHeader.end(); it++)
+    {
+        if (it->key() == entry.key())
+        {
+            if (entry.comment() == "")
+                ent.setComment(it->comment());
+            (*it) = ent;
+            _headerFlushed = false;
+            return true;
+        }
+    }
+    if (_totalNumRows != 0)
+    {
+        cout << "Error: new header keys (" << entry.key() << ") must be set before the first row is written. Ignoring." << endl;
+        return false;
+    }
+    _header.push_back(entry);
+    _headerFlushed = false;
+    return true;
+}
+
+bool CompressedFitsWriter::changeHeaderKey(const string& origName, const string& newName)
+{
+    for (vector<HeaderEntry>::iterator it=_header.begin(); it != _header.end(); it++)
+    {
+        if (it->key() == origName)
+        {
+            (*it) = HeaderEntry(newName, it->value(), it->comment());
+            _headerFlushed = false;
+            return true;
+        }
+    }
+    for (vector<HeaderEntry>::iterator it=_defaultHeader.begin(); it != _defaultHeader.end(); it++)
+    {
+        if (it->key() == origName)
+        {
+            (*it) = HeaderEntry(newName, it->value(), it->comment());
+            _headerFlushed = false;
+            return true;
+        }
+    }
+    return false;
+}
+/****************************************************************
+ *              OPEN
+ ****************************************************************/
+bool CompressedFitsWriter::open(const string& fileName, const string& tableName)
+{
+     _file.open(fileName.c_str(), ios_base::out);
+    if (!_file.is_open())
+    {
+        cout << "Error: Could not open the file (" << fileName << ")." << endl;
+        return false;
+    }
+    _defaultHeader.push_back(HeaderEntry("EXTNAME", tableName, "name of this binary table extension"));
+    _headerFlushed = false;
+    _threadIndex = 0;
+    //create requested number of threads
+    for (uint32_t i=0;i<_numThreads;i++)
+        pthread_create(&(_thread[i]), NULL, threadFunction, this);
+    //wait for the threads to start
+    while (_numThreads != _threadIndex)
+        usleep(1000);
+    //set the writing fence to the last thread
+    _threadIndex = _numThreads-1;
+    return (_file.good());
+}
+
+/****************************************************************
+ *              WRITE HEADER
+ ****************************************************************/
+void CompressedFitsWriter::writeHeader(bool closingFile)
+{
+    if (_headerFlushed)
+        return;
+    if (!_file.is_open())
+        return;
+
+    long cPos = _file.tellp();
+
+    _file.seekp(0);
+
+    _file.write(_fitsHeader.c_str(), 2880);
+
+    //Write the DRS calib table here !
+    writeDrsCalib();
+
+    //we are now at the beginning of the main table. Write its header
+    for (vector<HeaderEntry>::iterator it=_defaultHeader.begin(); it != _defaultHeader.end(); it++)
+        _file.write(it->fitsString().c_str(), 80);
+
+    for (vector<HeaderEntry>::iterator it=_header.begin(); it != _header.end(); it++)
+        _file.write(it->fitsString().c_str(), 80);
+
+    _file.write("END                                                                             ", 80);
+    long here = _file.tellp();
+    if (here%2880)
+        _file.write(_emptyBlock.c_str(), 2880 - here%2880);
+
+    _headerFlushed = true;
+
+    here = _file.tellp();
+
+    if (here%2880)
+        cout << "Error: seems that header did not finish at the end of a block." << endl;
+
+    if (here > cPos && cPos != 0)
+    {
+        cout << "Error, entries were added after the first row was written. This is not supposed to happen." << endl;
+        return;
+    }
+
+    here = _file.tellp();
+    writeCatalog(closingFile);
+
+    here = _file.tellp() - here;
+    _heapPtr = here;
+
+    if (cPos != 0)
+        _file.seekp(cPos);
+}
+
+/****************************************************************
+ *              WRITE CATALOG
+ *  WARNING: writeCatalog is only meant to be used by writeHeader.
+ *  external usage will most likely corrupt the file
+ ****************************************************************/
+void CompressedFitsWriter::writeCatalog(bool closingFile)
+{
+    uint32_t sizeWritten = 0;
+    for (uint32_t i=0;i<_catalog.size();i++)
+    {
+        for (uint32_t j=0;j<_catalog[i].size();j++)
+        {
+            //swap the bytes
+            int8_t swappedEntry[16];
+            swappedEntry[0] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[7];
+            swappedEntry[1] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[6];
+            swappedEntry[2] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[5];
+            swappedEntry[3] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[4];
+            swappedEntry[4] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[3];
+            swappedEntry[5] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[2];
+            swappedEntry[6] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[1];
+            swappedEntry[7] = reinterpret_cast<int8_t*>(&_catalog[i][j].first)[0];
+
+            swappedEntry[8] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[7];
+            swappedEntry[9] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[6];
+            swappedEntry[10] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[5];
+            swappedEntry[11] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[4];
+            swappedEntry[12] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[3];
+            swappedEntry[13] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[2];
+            swappedEntry[14] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[1];
+            swappedEntry[15] = reinterpret_cast<int8_t*>(&_catalog[i][j].second)[0];
+            if (closingFile)
+            {
+                _checksum.add(reinterpret_cast<char*>(swappedEntry), 16);
+            }
+            _file.write(reinterpret_cast<char*>(&swappedEntry[0]), 2*sizeof(int64_t));
+            sizeWritten += 2*sizeof(int64_t);
+        }
+    }
+
+    //we do not reserve space for now because fverify does not like that.
+    //TODO bug should be fixed in the new version. Install it on the cluster and restor space reservation
+    return ;
+
+    //write the padding so that the HEAP section starts at a 2880 bytes boundary
+    if (sizeWritten % 2880 != 0)
+    {
+        vector<char> nullVec(2880 - sizeWritten%2880, 0);
+        _file.write(nullVec.data(), 2880 - sizeWritten%2880);
+    }
+}
+
+/****************************************************************
+ *              ADD HEADER CHECKSUM
+ ****************************************************************/
+void CompressedFitsWriter::addHeaderChecksum(Checksum& checksum)
+{
+    for (vector<HeaderEntry>::iterator it=_defaultHeader.begin();it!=_defaultHeader.end(); it++)
+        _checksum.add(it->fitsString().c_str(), 80);
+    for (vector<HeaderEntry>::iterator it=_header.begin(); it != _header.end(); it++)
+        _checksum.add(it->fitsString().c_str(), 80);
+    string   end("END                                                                             ");
+    string space("                                                                                ");
+    checksum.add(end.c_str(), 80);
+    int headerRowsLeft = 36 - (_defaultHeader.size() + _header.size() + 1)%36;
+    for (int i=0;i<headerRowsLeft;i++)
+        checksum.add(space.c_str(), 80);
+}
+
+/****************************************************************
+ *                  CLOSE
+ ****************************************************************/
+bool CompressedFitsWriter::close()
+{
+    for (uint32_t i=0;i<_numThreads;i++)
+        while (_threadStatus[i] != _THREAD_WAIT_)
+            usleep(100000);
+    for (uint32_t i=0;i<_numThreads;i++)
+        _threadStatus[i] = _THREAD_EXIT_;
+    for (uint32_t i=0;i<_numThreads;i++)
+        pthread_join(_thread[i], NULL);
+    //flush the rows that were not written yet
+    if (_totalNumRows%_numRowsPerTile != 0)
+    {
+        copyTransposeTile(0);
+
+        _threadNumRows[0] = _totalNumRows;
+        uint32_t numBytes = compressBuffer(0);
+        writeCompressedDataToDisk(0, numBytes);
+    }
+    //compression stuff
+    setHeaderKey(HeaderEntry("ZNAXIS1", _rowWidth, "Width of uncompressed rows"));
+    setHeaderKey(HeaderEntry("ZNAXIS2", _totalNumRows, "Number of uncompressed rows"));
+    //TODO calculate the real offset from the main table to the start of the HEAP data area
+    setHeaderKey(HeaderEntry("ZHEAPPTR", _heapPtr, ""));
+    setHeaderKey(HeaderEntry("THEAP", _heapPtr, ""));
+
+    //regular stuff
+    if (_catalog.size() > 0)
+    {
+        setHeaderKey(HeaderEntry("NAXIS1", 2*sizeof(int64_t)*_catalog[0].size(), "width of table in bytes"));
+        setHeaderKey(HeaderEntry("NAXIS2", _numTiles, ""));
+        setHeaderKey(HeaderEntry("TFIELDS", _columns.size(), "number of fields in each row"));
+        int64_t heapSize = 0;
+        int64_t compressedOffset = 0;
+        for (uint32_t i=0;i<_catalog.size();i++)
+        {
+            compressedOffset += sizeof(TileHeader);
+            heapSize += sizeof(TileHeader);
+            for (uint32_t j=0;j<_catalog[i].size();j++)
+            {
+                heapSize += _catalog[i][j].first;
+//      cout << "heapSize: " << heapSize << endl;
+                //set the catalog offsets to their actual values
+                _catalog[i][j].second = compressedOffset;
+                compressedOffset += _catalog[i][j].first;
+                //special case if entry has zero length
+                if (_catalog[i][j].first == 0) _catalog[i][j].second = 0;
+            }
+        }
+        setHeaderKey(HeaderEntry("PCOUNT", heapSize, "size of special data area"));
+    }
+    else
+    {
+        setHeaderKey(HeaderEntry("NAXIS1", _columns.size()*2*sizeof(int64_t), "width of table in bytes"));
+        setHeaderKey(HeaderEntry("NAXIS2", 0, ""));
+        setHeaderKey(HeaderEntry("TFIELDS", _columns.size(), "number of fields in each row"));
+        setHeaderKey(HeaderEntry("PCOUNT", 0, "size of special data area"));
+        changeHeaderKey("THEAP", "ZHEAP");
+    }
+    ostringstream str;
+
+    writeHeader(true);
+
+    str.str("");
+    str << _checksum.val();
+
+    setHeaderKey(HeaderEntry("DATASUM", str.str(), ""));
+    addHeaderChecksum(_checksum);
+    setHeaderKey(HeaderEntry("CHECKSUM", _checksum.str(), ""));
+    //update header value
+    writeHeader();
+    //update file length
+    long here = _file.tellp();
+    if (here%2880)
+    {
+        vector<char> nullVec(2880 - here%2880, 0);
+        _file.write(nullVec.data(), 2880 - here%2880);
+    }
+    _file.close();
+    return true;
+}
+
+/****************************************************************
+ *                  COPY TRANSPOSE TILE
+ ****************************************************************/
+void CompressedFitsWriter::copyTransposeTile(uint32_t index)
+{
+    uint32_t thisRoundNumRows = (_totalNumRows%_numRowsPerTile) ? _totalNumRows%_numRowsPerTile : _numRowsPerTile;
+
+    //copy the tile and transpose it
+    uint32_t offset = 0;
+    for (uint32_t i=0;i<_columns.size();i++)
+    {
+        switch (_columns[i].getColumnOrdering())//getCompression())
+        {
+            case FITS::kOrderByRow:
+                for (uint32_t k=0;k<thisRoundNumRows;k++)
+                {//regular, "semi-transposed" copy
+                    memcpy(&(_transposedBuffer[index][offset]), &_buffer[k*_rowWidth + _columns[i].offset()], _columns[i].sizeOfElems()*_columns[i].numElems());
+                    offset += _columns[i].sizeOfElems()*_columns[i].numElems();
+                }
+            break;
+
+            case FITS::kOrderByCol :
+                for (int j=0;j<_columns[i].numElems();j++)
+                    for (uint32_t k=0;k<thisRoundNumRows;k++)
+                    {//transposed copy
+                        memcpy(&(_transposedBuffer[index][offset]), &_buffer[k*_rowWidth + _columns[i].offset() + _columns[i].sizeOfElems()*j], _columns[i].sizeOfElems());
+                        offset += _columns[i].sizeOfElems();
+                    }
+            break;
+            default:
+                    cout << "Error: unknown column ordering: " << _columns[i].getColumnOrdering() << endl;
+
+        };
+    }
+}
+
+/****************************************************************
+ *          WRITE BINARY ROW
+ ****************************************************************/
+bool CompressedFitsWriter::writeBinaryRow(const char* bufferToWrite)
+{
+    if (_totalNumRows == 0)
+        writeHeader();
+
+    memcpy(&_buffer[_rowWidth*(_totalNumRows%_numRowsPerTile)], bufferToWrite, _rowWidth);
+    _totalNumRows++;
+    if (_totalNumRows%_numRowsPerTile == 0)
+    {
+        //which is the next thread that we should use ?
+        while (_threadStatus[_threadLooper] == _THREAD_COMPRESS_)
+            usleep(100000);
+
+        copyTransposeTile(_threadLooper);
+
+        while (_threadStatus[_threadLooper] != _THREAD_WAIT_)
+            usleep(100000);
+
+        _threadNumRows[_threadLooper] = _totalNumRows;
+        _threadStatus[_threadLooper] = _THREAD_COMPRESS_;
+        _threadLooper = (_threadLooper+1)%_numThreads;
+    }
+    return _file.good();
+}
+
+uint32_t CompressedFitsWriter::getRowWidth()
+{
+    return _rowWidth;
+}
+
+/****************************************************************
+ *                  COMPRESS BUFFER
+ ****************************************************************/
+uint32_t CompressedFitsWriter::compressUNCOMPRESSED(char* dest, const char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems)
+{
+    memcpy(dest, src, numRows*sizeOfElems*numRowElems);
+    return numRows*sizeOfElems*numRowElems;
+}
+
+/****************************************************************
+ *                  COMPRESS BUFFER
+ ****************************************************************/
+uint32_t CompressedFitsWriter::compressHUFFMAN(char* dest, const char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems)
+{
+    string huffmanOutput;
+    uint32_t previousHuffmanSize = 0;
+    if (numRows < 2)
+    {//if we have less than 2 elems to compress, Huffman encoder does not work (and has no point). Just return larger size than uncompressed to trigger the raw storage.
+        return numRows*sizeOfElems*numRowElems + 1000;
+    }
+    if (sizeOfElems < 2 )
+    {
+        cout << "Fatal ERROR: HUFMANN can only encode short or longer types" << endl;
+        return 0;
+    }
+    uint32_t huffmanOffset = 0;
+    for (uint32_t j=0;j<numRowElems;j++)
+    {
+        Huffman::Encode(huffmanOutput,
+                        reinterpret_cast<const uint16_t*>(&src[j*sizeOfElems*numRows]),
+                        numRows*(sizeOfElems/2));
+        reinterpret_cast<uint32_t*>(&dest[huffmanOffset])[0] = huffmanOutput.size() - previousHuffmanSize;
+        huffmanOffset += sizeof(uint32_t);
+        previousHuffmanSize = huffmanOutput.size();
+    }
+    const size_t totalSize = huffmanOutput.size() + huffmanOffset;
+
+    //only copy if not larger than not-compressed size
+    if (totalSize < numRows*sizeOfElems*numRowElems)
+        memcpy(&dest[huffmanOffset], huffmanOutput.data(), huffmanOutput.size());
+
+    return totalSize;
+}
+
+/****************************************************************
+ *                  COMPRESS BUFFER
+ ****************************************************************/
+uint32_t CompressedFitsWriter::compressSMOOTHMAN(char* dest, char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems)
+{
+    uint32_t colWidth = numRowElems;
+    for (int j=colWidth*numRows-1;j>1;j--)
+        reinterpret_cast<int16_t*>(src)[j] = reinterpret_cast<int16_t*>(src)[j] - (reinterpret_cast<int16_t*>(src)[j-1]+reinterpret_cast<int16_t*>(src)[j-2])/2;
+    //call the huffman transposed
+    return compressHUFFMAN(dest, src, numRowElems, sizeOfElems, numRows);
+}
+
+uint32_t CompressedFitsWriter::applySMOOTHING(char* , char* src, uint32_t numRows, uint32_t sizeOfElems, uint32_t numRowElems)
+{
+    uint32_t colWidth = numRowElems;
+    for (int j=colWidth*numRows-1;j>1;j--)
+        reinterpret_cast<int16_t*>(src)[j] = reinterpret_cast<int16_t*>(src)[j] - (reinterpret_cast<int16_t*>(src)[j-1]+reinterpret_cast<int16_t*>(src)[j-2])/2;
+
+    return numRows*sizeOfElems*numRowElems;
+}
+/****************************************************************
+ *                  COMPRESS BUFFER
+ ****************************************************************/
+uint64_t CompressedFitsWriter::compressBuffer(uint32_t threadIndex)
+{
+    uint32_t thisRoundNumRows = (_threadNumRows[threadIndex]%_numRowsPerTile) ? _threadNumRows[threadIndex]%_numRowsPerTile : _numRowsPerTile;
+    uint32_t offset=0;
+    uint32_t currentCatalogRow = (_threadNumRows[threadIndex]-1)/_numRowsPerTile;
+    uint64_t compressedOffset = sizeof(TileHeader); //skip the 'TILE' marker and tile size entry
+
+    //now compress each column one by one by calling compression on arrays
+    for (uint32_t i=0;i<_columns.size();i++)
+    {
+        _catalog[currentCatalogRow][i].second = compressedOffset;
+
+        if (_columns[i].numElems() == 0) continue;
+
+        BlockHeader& head = _columns[i].getBlockHeader();
+        const vector<uint16_t>& sequence = _columns[i].getCompressionSequence();
+        //set the default byte telling if uncompressed the compressed Flag
+        uint64_t previousOffset = compressedOffset;
+        //skip header data
+        compressedOffset += sizeof(BlockHeader) + sizeof(uint16_t)*sequence.size();
+
+        for (uint32_t j=0;j<sequence.size(); j++)
+        {
+            switch (sequence[j])
+            {
+                case FITS::kFactRaw:
+//                    if (head.numProcs == 1)
+                        compressedOffset += compressUNCOMPRESSED(&(_compressedBuffer[threadIndex][compressedOffset]), &(_transposedBuffer[threadIndex][offset]), thisRoundNumRows, _columns[i].sizeOfElems(), _columns[i].numElems());
+                break;
+                case FITS::kFactSmoothing:
+                        applySMOOTHING(&(_compressedBuffer[threadIndex][compressedOffset]), &(_transposedBuffer[threadIndex][offset]), thisRoundNumRows, _columns[i].sizeOfElems(), _columns[i].numElems());
+                break;
+                case FITS::kFactHuffman16:
+                    if (head.ordering == FITS::kOrderByCol)
+                        compressedOffset += compressHUFFMAN(&(_compressedBuffer[threadIndex][compressedOffset]), &(_transposedBuffer[threadIndex][offset]), thisRoundNumRows, _columns[i].sizeOfElems(), _columns[i].numElems());
+                    else
+                        compressedOffset += compressHUFFMAN(&(_compressedBuffer[threadIndex][compressedOffset]), &(_transposedBuffer[threadIndex][offset]), _columns[i].numElems(), _columns[i].sizeOfElems(),  thisRoundNumRows);
+                break;
+                default:
+                    cout << "ERROR: Unkown compression sequence entry: " << sequence[i] << endl;
+                break;
+            }
+        }
+
+        //check if compressed size is larger than uncompressed
+        if (sequence[0] != FITS::kFactRaw &&
+            compressedOffset - previousOffset > _columns[i].sizeOfElems()*_columns[i].numElems()*thisRoundNumRows+sizeof(BlockHeader)+sizeof(uint16_t)*sequence.size())
+        {//if so set flag and redo it uncompressed
+            cout << "REDOING UNCOMPRESSED" << endl;
+            compressedOffset = previousOffset + sizeof(BlockHeader) + 1;
+            compressedOffset += compressUNCOMPRESSED(&(_compressedBuffer[threadIndex][compressedOffset]), &(_transposedBuffer[threadIndex][offset]), thisRoundNumRows, _columns[i].sizeOfElems(), _columns[i].numElems());
+            BlockHeader he;
+            he.size = compressedOffset - previousOffset;
+            he.numProcs = 1;
+            he.ordering = FITS::kOrderByRow;
+            memcpy(&(_compressedBuffer[threadIndex][previousOffset]), (char*)(&he), sizeof(BlockHeader));
+            _compressedBuffer[threadIndex][previousOffset+sizeof(BlockHeader)] = FITS::kFactRaw;
+            offset += thisRoundNumRows*_columns[i].sizeOfElems()*_columns[i].numElems();
+           _catalog[currentCatalogRow][i].first = compressedOffset - _catalog[currentCatalogRow][i].second;
+           continue;
+        }
+        head.size = compressedOffset - previousOffset;
+        memcpy(&(_compressedBuffer[threadIndex][previousOffset]), (char*)(&head), sizeof(BlockHeader));
+        memcpy(&(_compressedBuffer[threadIndex][previousOffset+sizeof(BlockHeader)]), sequence.data(), sizeof(uint16_t)*sequence.size());
+
+         offset += thisRoundNumRows*_columns[i].sizeOfElems()*_columns[i].numElems();
+        _catalog[currentCatalogRow][i].first = compressedOffset - _catalog[currentCatalogRow][i].second;
+    }
+
+    TileHeader tHead(thisRoundNumRows, compressedOffset);
+    memcpy(_compressedBuffer[threadIndex], &tHead, sizeof(TileHeader));
+    return compressedOffset;
+}
+
+/****************************************************************
+ *              WRITE COMPRESS DATA TO DISK
+ ****************************************************************/
+bool CompressedFitsWriter::writeCompressedDataToDisk(uint32_t threadID, uint32_t sizeToWrite)
+{
+    char* checkSumPointer = _compressedBuffer[threadID];
+    int32_t extraBytes = 0;
+    uint32_t sizeToChecksum = sizeToWrite;
+    if (_checkOffset != 0)
+    {//should we extend the array to the left ?
+        sizeToChecksum += _checkOffset;
+        checkSumPointer -= _checkOffset;
+        memset(checkSumPointer, 0, _checkOffset);
+    }
+    if (sizeToChecksum%4 != 0)
+    {//should we extend the array to the right ?
+        extraBytes = 4 - (sizeToChecksum%4);
+        memset(checkSumPointer+sizeToChecksum, 0,extraBytes);
+        sizeToChecksum += extraBytes;
+    }
+    //do the checksum
+    _checksum.add(checkSumPointer, sizeToChecksum);
+//    cout << endl << "Checksum: " << _checksum.val() << endl;
+    _checkOffset = (4 - extraBytes)%4;
+    //write data to disk
+    _file.write(_compressedBuffer[threadID], sizeToWrite);
+    return _file.good();
+}
+
+/****************************************************************
+ *              WRITER THREAD LOOP
+ ****************************************************************/
+void* CompressedFitsWriter::threadFunction(void* context)
+{
+    CompressedFitsWriter* myself =static_cast<CompressedFitsWriter*>(context);
+
+    uint32_t myID = 0;
+    pthread_mutex_lock(&(myself->_mutex));
+    myID = myself->_threadIndex++;
+    pthread_mutex_unlock(&(myself->_mutex));
+    uint32_t threadToWaitForBeforeWriting = (myID == 0) ? myself->_numThreads-1 : myID-1;
+
+    while (myself->_threadStatus[myID] != _THREAD_EXIT_)
+    {
+        while (myself->_threadStatus[myID] == _THREAD_WAIT_)
+            usleep(100000);
+        if (myself->_threadStatus[myID] != _THREAD_COMPRESS_)
+            continue;
+        uint32_t numBytes = myself->compressBuffer(myID);
+        myself->_threadStatus[myID] = _THREAD_WRITE_;
+
+        //wait for the previous data to be written
+        while (myself->_threadIndex != threadToWaitForBeforeWriting)
+            usleep(1000);
+        //do the actual writing to disk
+        pthread_mutex_lock(&(myself->_mutex));
+        myself->writeCompressedDataToDisk(myID, numBytes);
+        myself->_threadIndex = myID;
+        pthread_mutex_unlock(&(myself->_mutex));
+        myself->_threadStatus[myID] = _THREAD_WAIT_;
+    }
+    return NULL;
+}
+
+/****************************************************************
+ *                 PRINT USAGE
+ ****************************************************************/
+void printUsage()
+{
+    cout << endl;
+    cout << "The FACT-Fits compressor reads an input Fits file from FACT"
+            " and compresses it.\n It can use a drs calibration in order to"
+            " improve the compression ratio. If so, the input calibration"
+            " is embedded into the compressed file.\n"
+            " By default, the Data column will be compressed using SMOOTHMAN (Thomas' algorithm)"
+            " while other columns will be compressed with the AMPLITUDE coding (Veritas)"
+            "Usage: Compressed_Fits_Test <inputFile>";
+    cout << endl;
+}
+
+/****************************************************************
+ *                  PRINT HELP
+ ****************************************************************/
+void printHelp()
+{
+    cout << endl;
+    cout << "The inputFile is required. It must have fits in its filename and the compressed file will be written in the same folder. "
+            "The fz extension will be added, replacing the .gz one if required \n"
+            "If output is specified, then it will replace the automatically generated output filename\n"
+            "If --drs, followed by a drs calib then it will be applied to the data before compressing\n"
+            "rowPerTile can be used to tune how many rows are in each tile. Default is 100\n"
+            "threads gives the number of threads to use. Cannot be less than the default (1)\n"
+            "compression explicitely gives the compression scheme to use for a given column. The syntax is:\n"
+            "<ColumnName>=<CompressionScheme> with <CompressionScheme> one of the following:\n"
+            "UNCOMPRESSED\n"
+            "AMPLITUDE\n"
+            "HUFFMAN\n"
+            "SMOOTHMAN\n"
+            "INT_WAVELET\n"
+            "\n"
+            "--quiet removes any textual output, except error messages\n"
+            "--verify makes the compressor check the compressed data. It will read it back, and compare the reconstructed CHECKSUM and DATASUM with the original file values."
+            ;
+    cout << endl << endl;
+}
+
+/****************************************************************
+ *                  SETUP CONFIGURATION
+ ****************************************************************/
+void setupConfiguration(Configuration& conf)
+{
+    po::options_description configs("FitsCompressor options");
+    configs.add_options()
+            ("inputFile,i",   vars<string>(),      "Input file")
+            ("drs,d",         var<string>(),       "Input drs calibration file")
+            ("rowPerTile,r",  var<unsigned int>(), "Number of rows per tile. Default is 100")
+            ("output,o",      var<string>(),       "Output file. If empty, .fz is appened to the original name")
+            ("threads,t",     var<unsigned int>(), "Number of threads to use for compression")
+            ("compression,c", vars<string>(),      "which compression to use for which column. Syntax <colName>=<compressionScheme>")
+            ("quiet,q",       po_switch(),         "Should the program display any text at all ?")
+            ("verify,v",      po_switch(),         "Should we verify the data that has been compressed ?")
+            ;
+    po::positional_options_description positional;
+    positional.add("inputFile", -1);
+    conf.AddOptions(configs);
+    conf.SetArgumentPositions(positional);
+}
+
+/****************************************************************
+ *                  MAIN
+ ****************************************************************/
+int main(int argc, const char** argv)
+{
+     Configuration conf(argv[0]);
+     conf.SetPrintUsage(printUsage);
+     setupConfiguration(conf);
+
+     if (!conf.DoParse(argc, argv, printHelp))
+         return -1;
+
+     //initialize the file names to nothing.
+     string fileNameIn = "";
+     string fileNameOut = "";
+     string drsFileName = "";
+     uint32_t numRowsPerTile = 100;
+     bool displayText=true;
+
+    //parse configuration
+    if (conf.Get<bool>("quiet")) displayText = false;
+    const vector<string> inputFileNameVec = conf.Vec<string>("inputFile");
+    if (inputFileNameVec.size() != 1)
+    {
+       cout << "Error: ";
+       if (inputFileNameVec.size() == 0) cout << "no";
+       else cout << inputFileNameVec.size();
+       cout << " input file(s) given. Expected one. Aborting. Input:" << endl;;
+       for (unsigned int i=0;i<inputFileNameVec.size(); i++)
+           cout << inputFileNameVec[i] << endl;
+       return -1;
+    }
+
+    //Assign the input filename
+    fileNameIn = inputFileNameVec[0];
+
+    //Check if we have a drs calib too
+    if (conf.Has("drs")) drsFileName = conf.Get<string>("drs");
+
+    //Should we verify the data ?
+    bool verifyDataPlease = false;
+    if (conf.Has("verify")) verifyDataPlease = conf.Get<bool>("verify");
+
+
+    //should we use a specific output filename ?
+    if (conf.Has("output"))
+        fileNameOut = conf.Get<string>("output");
+    else
+    {
+        size_t pos = fileNameIn.find(".fits.fz");
+        if (pos == string::npos)
+        {
+            cout << "ERROR: input file does not seems ot be fits. Aborting." << endl;
+            return -1;
+        }
+        fileNameOut = fileNameIn.substr(0, pos) + ".fits";
+    }
+
+
+    //should we use specific compression on some columns ?
+    const vector<string> columnsCompression = conf.Vec<string>("compression");
+
+    //split up values between column names and compression scheme
+    vector<std::pair<string, string>> compressions;
+        for (unsigned int i=0;i<columnsCompression.size();i++)
+    {
+        size_t pos = columnsCompression[i].find_first_of("=");
+        if (pos == string::npos)
+        {
+            cout << "ERROR: Something wrong occured while parsing " << columnsCompression[i] << ". Aborting." << endl;
+            return -1;
+        }
+        string comp = columnsCompression[i].substr(pos+1);
+        if (comp != "UNCOMPRESSED" && comp != "AMPLITUDE" && comp != "HUFFMAN" &&
+            comp != "SMOOTHMAN" && comp != "INT_WAVELET")
+        {
+            cout << "Unkown compression scheme requested (" << comp << "). Aborting." << endl;
+            return -1;
+        }
+        compressions.push_back(make_pair(columnsCompression[i].substr(0, pos), comp));
+    }
+
+    //How many rows per tile should we use ?
+    if (conf.Has("rowPerTile")) numRowsPerTile = conf.Get<unsigned int>("rowPerTile");
+
+    //////////////////////////////////////////////////////////////////////////////////////
+    //  Done reading configuration. Open relevant files
+    //////////////////////////////////////////////////////////////////////////////////////
+
+
+    //Open input's fits file
+    factfits inFile(fileNameIn, "", "Events", false);
+
+    if (!inFile.IsCompressedFITS())
+    {
+        cout << "ERROR: input file is NOT a compressed fits. Cannot be decompressed: Aborting." << endl;
+        return -1;
+    }
+
+    //decide how many tiles should be put in the compressed file
+    uint32_t originalNumRows = inFile.GetNumRows();
+    uint32_t numTiles = (originalNumRows%numRowsPerTile) ? (originalNumRows/numRowsPerTile)+1 : originalNumRows/numRowsPerTile;
+//    CompressedFitsWriter outFile(numTiles, numRowsPerTile);
+
+    //should we use a specific number of threads for compressing ?
+    unsigned int numThreads = 1;
+    if (conf.Has("threads"))
+    {
+        numThreads = conf.Get<unsigned int>("threads");
+//        outFile.setNumWorkingThreads(numThreads);
+    }
+
+
+
+    //Because the file to open MUST be given by the constructor, I must use a pointer instead
+    factfits* drsFile = NULL;
+    //try to open the Drs file. If any.
+    if (drsFileName != "")
+    {
+        try
+        {
+            drsFile = new factfits(drsFileName);
+        }
+        catch (...)
+        {
+            cout << "Error: could not open " << drsFileName << " for calibration" << endl;
+            return -1;
+        }
+    }
+
+    if (displayText)
+    {
+        cout << endl;
+        cout << "**********************" << endl;
+        cout << "Will decompress from    : " << fileNameIn << endl;
+        cout << "to                    : " << fileNameOut << endl;
+        cout << "**********************" << endl;
+        cout << endl;
+    }
+
+    //////////////////////////////////////////////////////////////////////////////////////
+    //  Done opening input files. Allocate memory and configure output file
+    //////////////////////////////////////////////////////////////////////////////////////
+
+    //allocate the buffer for temporary storage of each read/written row
+    uint32_t rowWidth = inFile.GetUInt("ZNAXIS1");
+    char* buffer = new char[rowWidth + 12];
+    memset(buffer, 0, 4);
+    buffer = buffer+4;
+
+    //get the source columns
+    const fits::Table::Columns& columns = inFile.GetColumns();
+    const fits::Table::SortedColumns& sortedColumns = inFile.GetSortedColumns();
+    if (displayText)
+        cout << "Input file has " << columns.size() << " columns and " << inFile.GetNumRows() << " rows" << endl;
+
+
+    //////////////////////////////////////////////////////////////////////////////////////
+    //  Done configuring compression. Do the real job now !
+    //////////////////////////////////////////////////////////////////////////////////////
+    vector<void*>   readPointers;
+    vector<int32_t> readOffsets;
+    vector<int32_t> readElemSize;
+    vector<int32_t> readNumElems;
+    //Get table name for later use in case the compressed file is to be verified
+    string tableName = inFile.GetStr("EXTNAME");
+
+
+    //and the header of the compressed file
+    const fits::Table::Keys& header2 = inFile.GetKeys();
+
+    //get a non-compressed writer
+    ofits reconstructedFile;
+
+    //figure out its name: /dev/null unless otherwise specified
+    string reconstructedName = fileNameOut;
+    reconstructedFile.open(reconstructedName.c_str(), false);
+
+    //reconstruct the original columns from the compressed file.
+    string origChecksumStr;
+    string origDatasum;
+
+    //reset tablename value so that it is re-read from compressed table's header
+    tableName = "";
+
+    /************************************************************************************
+     *  Reconstruction setup done. Rebuild original header
+     ************************************************************************************/
+
+    //re-tranlate the keys
+    for (fits::Table::Keys::const_iterator it=header2.begin(); it!= header2.end(); it++)
+    {
+        string k = it->first;
+        if (k == "XTENSION" || k == "BITPIX"  || k == "PCOUNT"   || k == "GCOUNT" ||
+            k == "TFIELDS"  || k == "ZTABLE"  || k == "ZNAXIS1"  || k == "ZNAXIS2" ||
+            k == "ZHEAPPTR" || k == "ZPCOUNT" || k == "ZTILELEN" || k == "THEAP" ||
+            k == "CHECKSUM" || k == "DATASUM" || k == "FCTCPVER" || k == "ZHEAP")
+        {
+            continue;
+        }
+
+        if (k == "ZCHKSUM")
+        {
+            reconstructedFile.SetKeyComment("CHECKSUM", it->second.comment);
+            origChecksumStr = it->second.value;
+            continue;
+        }
+        if (k == "RAWSUM")
+        {
+            continue;
+        }
+
+        if (k == "ZDTASUM")
+        {
+            reconstructedFile.SetKeyComment("DATASUM",  it->second.comment);
+            origDatasum = it->second.value;
+            continue;
+        }
+
+        if (k == "EXTNAME")
+        {
+            tableName = it->second.value;
+        }
+
+        k = k.substr(0,5);
+
+        if (k == "TTYPE")
+        {//we have an original column name here.
+         //manually deal with these in order to preserve the ordering (easier than re-constructing yet another list on the fly)
+            continue;
+        }
+
+        if (k == "TFORM" || k == "NAXIS" || k == "ZCTYP" )
+        {
+            continue;
+        }
+
+        if (k == "ZFORM" || k == "ZTYPE")
+        {
+            string tmpKey = it->second.fitsString;
+            tmpKey[0] = 'T';
+            reconstructedFile.SetKeyFromFitsString(tmpKey);
+            continue;
+        }
+
+        reconstructedFile.SetKeyFromFitsString(it->second.fitsString);
+    }
+
+    if (tableName == "")
+    {
+        cout << "Error: table name from file " << fileNameOut << " could not be found. Aborting" << endl;
+        return -1;
+    }
+
+    //Restore the original columns
+    for (uint32_t numCol=1; numCol<10000; numCol++)
+    {
+        ostringstream str;
+        str << numCol;
+        if (!inFile.HasKey("TTYPE"+str.str())) break;
+
+        string ttype    = inFile.GetStr("TTYPE"+str.str());
+        string tform    = inFile.GetStr("ZFORM"+str.str());
+        char   type     = tform[tform.size()-1];
+        string number   = tform.substr(0, tform.size()-1);
+        int    numElems = atoi(number.c_str());
+
+        if (number == "") numElems=1;
+
+        reconstructedFile.AddColumn(numElems, type, ttype, "", "", false);
+    }
+
+    reconstructedFile.WriteTableHeader(tableName.c_str());
+
+    /************************************************************************************
+     *  Original header restored. Do the data
+     ************************************************************************************/
+
+    //set pointers to the readout data to later be able to gather it to "buffer".
+    readPointers.clear();
+    readOffsets.clear();
+    readElemSize.clear();
+    readNumElems.clear();
+    for (fits::Table::Columns::const_iterator it=columns.begin(); it!= columns.end(); it++)
+    {
+        readPointers.push_back(inFile.SetPtrAddress(it->first));
+        readOffsets.push_back(it->second.offset);
+        readElemSize.push_back(it->second.size);
+        readNumElems.push_back(it->second.num);
+    }
+
+    //do the actual reconstruction work
+    uint32_t i=1;
+    while (i<=inFile.GetNumRows() && inFile.GetNextRow())
+    {
+        int count=0;
+        for (fits::Table::Columns::const_iterator it=columns.begin(); it!= columns.end();it++)
+        {
+            memcpy(&buffer[readOffsets[count]], readPointers[count], readElemSize[count]*readNumElems[count]);
+            count++;
+        }
+        if (displayText) cout << "\r Row " << i << flush;
+        reconstructedFile.WriteRow(buffer, rowWidth);
+        if (!reconstructedFile.good())
+        {
+            cout << "ERROR: no space left on device (probably)" << endl;
+            return -1;
+        }
+        i++;
+    }
+
+    if (displayText) cout << endl;
+
+    //close reconstruction input and output
+//    Do NOT close the verify file, otherwise data cannot be flushed to copy file
+//    verifyFile.close();
+    if (!inFile.IsFileOk())
+        cout << "ERROR: file checksums seems wrong" << endl;
+
+    if (!reconstructedFile.close())
+    {
+        cout << "ERROR: disk probably full..." <<endl;
+        return -1;
+    }
+
+    //get original and reconstructed checksum and datasum
+    std::pair<string, int> origChecksum = make_pair(origChecksumStr, atoi(origDatasum.c_str()));
+    std::pair<string, int> newChecksum = reconstructedFile.GetChecksumData();
+
+    //verify that no mistake was made
+    if (origChecksum.second != newChecksum.second)
+    {
+        cout << "ERROR: datasums are NOT identical: " << (uint32_t)(origChecksum.second) << " vs " << (uint32_t)(newChecksum.second) << endl;
+        return -1;
+    }
+    if (origChecksum.first != newChecksum.first)
+    {
+        cout << "WARNING: checksums are NOT Identical: " << origChecksum.first << " vs " << newChecksum.first << endl;
+    }
+    else
+    {
+        if (true) cout << "Ok" << endl;
+    }
+
+    buffer = buffer-4;
+    delete[] buffer;
+    return 0;
+}
+
Index: branches/testFACT++branch/src/fitsHacker.cc
===================================================================
--- branches/testFACT++branch/src/fitsHacker.cc	(revision 18277)
+++ branches/testFACT++branch/src/fitsHacker.cc	(revision 18277)
@@ -0,0 +1,133 @@
+/*
+ * fitsHacker.cc
+ *
+ *  Created on: Sep 8, 2011
+ *      Author: lyard
+ */
+
+#include <fstream>
+#include <cstdlib>
+#include <iostream>
+#include <cstring>
+
+using namespace std;
+/*
+ * Usage: fitsHacker <nameOfFileToHack> <numberOfBytesToSkip> <WhichCharactersToPutAfterShift>(optionnal)
+ *
+ *
+ *
+ */
+
+enum ModeT {seekingHDU,
+            foundHDU,
+            fixedEND,
+            reachedHeaderEnd};
+
+int main(int argc, char** argv)
+{
+    if (argc < 2)
+        return 0;
+
+/* ENDfixer */
+    fstream file(argv[1]);
+
+    char c[81];
+    c[80] = 0;
+    int seeking=0;
+
+    ModeT mode = seekingHDU;
+
+    bool reallyFixedEnd = false;
+    int endAddress = 0;
+
+    while (mode != fixedEND)
+    {
+        file.read(c, 80);
+        if (!file.good()) {
+            cout << 0;
+            return 0;
+        }
+        string str(c);
+//        cout << c << endl;
+        if (str.substr(0, 9) == "XTENSION=")
+            mode = foundHDU;
+
+        if (mode == foundHDU && str=="END                                                                             ")
+        {
+            mode = fixedEND;
+            endAddress = seeking;
+//            cout << "found END at " << endAddress << endl;
+        }
+        if (mode == foundHDU && str =="                                                                                ")
+        {
+            file.seekp(seeking);
+            file.put('E');
+            file.put('N');
+            file.put('D');
+            mode = fixedEND;
+            reallyFixedEnd = true;
+            endAddress = seeking;
+//            cout << "added END at " << endAddress << endl;
+        }
+
+        seeking+=80;
+    }
+
+    file.seekp(seeking-1);
+    while (mode != reachedHeaderEnd)
+    {
+        file.read(c, 80);
+        if (!file.good()) {
+            cout << 0;
+            return 0;
+        }
+        string str(c);
+
+        if (str =="                                                                                ")
+            seeking+=80;
+        else
+            mode = reachedHeaderEnd;
+    }
+
+    file.close();
+
+    if (seeking % 2880 != 0)
+    {
+        cout << "Error: header length not acceptable" << endl;
+        return 0;
+    }
+
+    if (((seeking - endAddress)/80) > 35)
+    {
+        cout << "Error: too much header space after END keyword" << endl;
+        return 0;
+    }
+
+    cout << seeking;
+
+    return seeking;
+
+/* FITS HACKER
+    file.get(data, shift);
+
+    for (int i=0;i<shift;i++)
+    {
+        if (i%80 == 0)
+            cout << "||| " << endl;
+        cout << data[i];
+    }
+    cout << endl;
+    if (argc < 4)
+        return 0;
+
+    int length = strlen(argv[3]);
+
+
+    file.seekp(shift-1);
+    for (int i=0;i<length;i++)
+        file.put(argv[3][i]);
+
+    file.close();
+
+    delete[] data;*/
+}
Index: branches/testFACT++branch/src/fitscheck.cc
===================================================================
--- branches/testFACT++branch/src/fitscheck.cc	(revision 18277)
+++ branches/testFACT++branch/src/fitscheck.cc	(revision 18277)
@@ -0,0 +1,99 @@
+//****************************************************************
+/** 
+
+ */
+ //****************************************************************
+#include "Configuration.h"
+
+#include "externals/fits.h"
+
+using namespace std;
+
+
+void PrintUsage()
+{
+    cout <<
+        "fitscheck is a tool to verify the checksums in a fits file.\n"
+        "\n"
+        "Usage: fitscheck [OPTIONS] fitsfile\n"
+        //"  or:  fitscheck [OPTIONS]\n"
+        "\n"
+        "Return values:\n"
+        " 0:  in case of success\n"
+        " 1:  if the file could not be opened\n"
+        " 2:  if the header checksum could not be varified and\n"
+        " 3:  if the header checksum is ok but the data checksum could not be verified.\n"
+        "\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+}
+
+void SetupConfiguration(Configuration& conf)
+{
+    po::options_description configs("Fitscheck options");
+    configs.add_options()
+        ("fitsfile,f",  var<string>()
+#if BOOST_VERSION >= 104200
+         ->required()
+#endif
+                                     , "Name of FITS file")
+        ;
+
+    po::positional_options_description p;
+    p.add("fitsfile", 1); // The first positional options
+
+    conf.AddOptions(configs);
+    conf.SetArgumentPositions(p);
+}
+
+int main(int argc, const char** argv)
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return -1;
+
+    if (!conf.Has("fitsfile"))
+    {
+        cerr << "Filename required." << endl;
+        return -1;
+    }
+
+    const string fname = conf.Get<string>("fitsfile");
+
+    cout << "Reading '" << fname << "'.." << flush;
+
+    fits file(fname.c_str());
+    if (!file)
+    {
+        cout << "fits::open() failed: " << strerror(errno) << " [errno=" << errno << "]";
+        return 1;
+    }
+
+    if (!file.IsHeaderOk())
+    {
+        cout << " header checksum could not be verified." << endl;
+        return 2;
+    }
+
+    const size_t n = file.GetNumRows()/10;
+
+    while (file.GetNextRow())
+        if (file.GetRow()<n && file.GetRow()%n==0)
+            cout << '.' << flush;
+
+    if (!file.IsFileOk())
+    {
+        cout << " data checksum could not be verified." << endl;
+        return 3;
+    }
+
+    cout << " file ok." << endl;
+
+    return 0;
+}
Index: branches/testFACT++branch/src/fitsdump.cc
===================================================================
--- branches/testFACT++branch/src/fitsdump.cc	(revision 18277)
+++ branches/testFACT++branch/src/fitsdump.cc	(revision 18277)
@@ -0,0 +1,1167 @@
+//****************************************************************
+/** @class FitsDumper
+
+  @brief Dumps contents of fits tables to stdout or a file
+
+ */
+ //****************************************************************
+#include "Configuration.h"
+
+#include <float.h>
+
+#include <map>
+#include <fstream>
+
+#include <boost/regex.hpp>
+
+#include "tools.h"
+#include "Time.h"
+#include "externals/factfits.h"
+
+#ifdef HAVE_ROOT
+#include "TFormula.h"
+#endif
+
+using namespace std;
+
+struct MyColumn
+{
+    string name;
+
+    fits::Table::Column col;
+
+    uint32_t first;
+    uint32_t last;
+
+    void *ptr;
+};
+
+struct minMaxStruct
+{
+    double min;
+    double max;
+    long double average;
+    long double squared;
+    long numValues;
+    minMaxStruct() : min(FLT_MAX), max(-FLT_MAX), average(0), squared(0), numValues(0) { }
+
+    void add(long double val)
+    {
+        average += val;
+        squared += val*val;
+
+        if (val<min)
+            min = val;
+
+        if (val>max)
+            max = val;
+
+        numValues++;
+    }
+};
+
+
+class FitsDumper : public factfits
+{
+private:
+    string fFilename;
+
+    // Convert CCfits::ValueType into a human readable string
+    string ValueTypeToStr(char type) const;
+
+    /// Lists all columns of an open file
+    void List();                          
+    void ListFileContent() const;
+    void ListHeader(const string& filename);
+    void ListKeywords(ostream &);
+
+    vector<MyColumn> InitColumns(vector<string> list);
+    vector<MyColumn> InitColumnsRoot(vector<string> &list);
+
+    double GetDouble(const MyColumn &, size_t) const;
+    int64_t GetInteger(const MyColumn &, size_t) const;
+    string Format(const string &fmt, const double &val) const;
+    string Format(const string &fmt, const MyColumn &, size_t) const;
+
+    ///Display the selected columns values VS time
+    void Dump(ofstream &, const vector<string> &, const vector<MyColumn> &, const string &, size_t, size_t, const string &);
+    void DumpRoot(ofstream &, const vector<string> &, const string &, size_t, size_t, const string &);
+    void DumpMinMax(ofstream &, const vector<MyColumn> &, size_t, size_t, bool);
+    void DumpStats(ofstream &, const vector<MyColumn> &, const string &, size_t, size_t);
+
+public:
+    FitsDumper(const string &fname, const string &tablename);
+
+    ///Configures the fitsLoader from the config file and/or command arguments.
+    int Exec(Configuration& conf);
+};
+
+// --------------------------------------------------------------------------
+//
+//! Constructor
+//! @param out
+//!        the ostream where to redirect the outputs
+//
+FitsDumper::FitsDumper(const string &fname, const string &tablename) : factfits(fname, tablename), fFilename(fname)
+{
+}
+
+string FitsDumper::ValueTypeToStr(char type) const
+{
+    switch (type)
+    {
+        case 'L': return "bool(8)";
+        case 'A': return "char(8)";
+        case 'B': return "byte(8)";
+        case 'I': return "short(16)";
+        case 'J': return "int(32)";
+        case 'K': return "int(64)";
+        case 'E': return "float(32)";
+        case 'D': return "double(64)";
+    default:
+        return "unknown";
+    }
+}
+
+void FitsDumper::List()
+{
+    const fits::Table::Keys    &fKeyMap = GetKeys();
+    const fits::Table::Columns &fColMap = GetColumns();
+
+    cout << "\nFile: " << fFilename << "\n";
+
+    cout << " " << fKeyMap.find("EXTNAME")->second.value << " [";
+    cout << GetNumRows() << "]\n";
+
+    for (auto it = fColMap.begin(); it != fColMap.end(); it++)
+    {
+        cout << "   " << it->first << "[" << it->second.num << "] (" << it->second.unit << ":" << ValueTypeToStr(it->second.type) << ") ";
+        for (auto jt = fKeyMap.begin(); jt != fKeyMap.end(); jt++)
+            if (jt->second.value == it->first)
+                cout << "/ " << jt->second.comment << endl;
+    }
+
+    cout << endl;
+}
+
+void FitsDumper::ListKeywords(ostream &fout)
+{
+    const fits::Table::Keys &fKeyMap = GetKeys();
+
+    for (auto it=fKeyMap.begin(); it != fKeyMap.end(); it++)
+    {
+        fout << "## " << ::left << setw(8) << it->first << "= ";
+
+        if (it->second.type=='T')
+            fout << ::left  << setw(20) << ("'"+it->second.value+"'");
+        else
+            fout << ::right << setw(20) << it->second.value;
+
+        if (!it->second.comment.empty())
+            fout << " / " << it->second.comment;
+        fout << '\n';
+    }
+
+    fout << flush;
+}
+
+void FitsDumper::ListFileContent() const
+{
+    const std::vector<std::string> &tables = GetTables();
+
+    cout << "File " << fFilename << " has " << tables.size() << " table(s): " << endl;
+    for (auto it=tables.begin(); it!=tables.end(); it++)
+        cout << " * " << *it << endl;
+}
+
+void FitsDumper::ListHeader(const string& filename)
+{
+    ofstream fout(filename=="-"?"/dev/stdout":filename);
+    if (!fout)
+    {
+        cerr << "Cannot open file " << filename << ": " << strerror(errno) << endl;
+        return;
+    }
+
+    const fits::Table::Keys &fKeyMap = GetKeys();
+
+    fout << "\nTable: " << fKeyMap.find("EXTNAME")->second.value << " (rows=" << GetNumRows() << ")\n";
+    if (fKeyMap.find("COMMENT") != fKeyMap.end())
+        fout << "Comment: \t" << fKeyMap.find("COMMENT")->second.value << "\n";
+
+    ListKeywords(fout);
+    fout << endl;
+}
+
+vector<MyColumn> FitsDumper::InitColumns(vector<string> names)
+{
+    static const boost::regex expr("([[:word:].]+)(\\[([[:digit:]]+)?(:)?([[:digit:]]+)?\\])?");
+
+    const fits::Table::Columns &fColMap = GetColumns();
+
+    if (names.empty())
+        for (auto it=fColMap.begin(); it!=fColMap.end(); it++)
+            if (it->second.num>0)
+                names.push_back(it->first);
+
+    vector<MyColumn> vec;
+
+    for (auto it=names.begin(); it!=names.end(); it++)
+    {
+        boost::smatch what;
+        if (!boost::regex_match(*it, what, expr, boost::match_extra))
+        {
+            cerr << "Couldn't parse expression '" << *it << "' " << endl;
+            return vector<MyColumn>();
+        }
+
+        const string name = what[1];
+
+        const auto iter = fColMap.find(name);
+        if (iter==fColMap.end())
+        {
+            cerr << "ERROR - Column '" << name << "' not found in table." << endl;
+            return vector<MyColumn>();
+        }
+
+        const fits::Table::Column &col = iter->second;
+
+        const string val0  = what[3];
+        const string delim = what[4];
+        const string val1  = what[5];
+
+        const uint32_t first = atol(val0.c_str());
+        const uint32_t last  = (val0.empty() && delim.empty()) ? col.num-1 : (val1.empty() ? first : atoi(val1.c_str()));
+
+        if (first>=col.num)
+        {
+            cerr << "ERROR - First index " << first << " for column " << name << " exceeds number of elements " << col.num << endl;
+            return vector<MyColumn>();
+        }
+
+        if (last>=col.num)
+        {
+            cerr << "ERROR - Last index " << last << " for column " << name << " exceeds number of elements " << col.num << endl;
+            return vector<MyColumn>();
+        }
+
+        if (first>last)
+        {
+            cerr << "ERROR - Last index " << last << " for column " << name << " exceeds first index " << first << endl;
+            return vector<MyColumn>();
+        }
+
+        MyColumn mycol;
+
+        mycol.name  = name;
+        mycol.col   = col;
+        mycol.first = first;
+        mycol.last  = last;
+        mycol.ptr   = SetPtrAddress(name);
+
+        vec.push_back(mycol);
+    }
+
+    return vec;
+}
+
+double FitsDumper::GetDouble(const MyColumn &it, size_t i) const
+{
+    switch (it.col.type)
+    {
+    case 'A':
+        return reinterpret_cast<const char*>(it.ptr)[i];
+
+    case 'L':
+        return reinterpret_cast<const bool*>(it.ptr)[i];
+
+    case 'B':
+        return (unsigned int)reinterpret_cast<const uint8_t*>(it.ptr)[i];
+
+    case 'I':
+        return reinterpret_cast<const int16_t*>(it.ptr)[i];
+
+    case 'J':
+        return reinterpret_cast<const int32_t*>(it.ptr)[i];
+
+    case 'K':
+        return reinterpret_cast<const int64_t*>(it.ptr)[i];
+
+    case 'E':
+        return reinterpret_cast<const float*>(it.ptr)[i];
+
+    case 'D':
+        return reinterpret_cast<const double*>(it.ptr)[i];
+    }
+
+    return 0;
+}
+
+int64_t FitsDumper::GetInteger(const MyColumn &it, size_t i) const
+{
+    switch (it.col.type)
+    {
+    case 'A':
+        return reinterpret_cast<const char*>(it.ptr)[i];
+
+    case 'L':
+        return reinterpret_cast<const bool*>(it.ptr)[i];
+
+    case 'B':
+        return (unsigned int)reinterpret_cast<const uint8_t*>(it.ptr)[i];
+
+    case 'I':
+        return reinterpret_cast<const int16_t*>(it.ptr)[i];
+
+    case 'J':
+        return reinterpret_cast<const int32_t*>(it.ptr)[i];
+
+    case 'K':
+        return reinterpret_cast<const int64_t*>(it.ptr)[i];
+
+    case 'E':
+        return reinterpret_cast<const float*>(it.ptr)[i];
+
+    case 'D':
+        return reinterpret_cast<const double*>(it.ptr)[i];
+    }
+
+    return 0;
+}
+
+string FitsDumper::Format(const string &format, const MyColumn &col, size_t i) const
+{
+    switch (*format.rbegin())
+    {
+    case 'd':
+    case 'i':
+    case 'o':
+    case 'u':
+    case 'x':
+    case 'X':
+        return Tools::Form(format.c_str(), GetDouble(col, i));
+
+    case 'e':
+    case 'E':
+    case 'f':
+    case 'F':
+    case 'g':
+    case 'G':
+    case 'a':
+    case 'A':
+        return Tools::Form(format.c_str(), GetInteger(col, i));
+
+    case 'h':
+        {
+            string rc = Tools::Scientific(GetDouble(col, i));
+            *remove_if(rc.begin(), rc.end(), ::isspace)=0;
+            return rc;
+        }
+    }
+
+    return "";
+}
+
+string FitsDumper::Format(const string &format, const double &val) const
+{
+    switch (*format.rbegin())
+    {
+    case 'd':
+    case 'i':
+    case 'o':
+    case 'u':
+    case 'x':
+    case 'X':
+        return Tools::Form(format.c_str(), int64_t(val));
+
+    case 'e':
+    case 'E':
+    case 'f':
+    case 'F':
+    case 'g':
+    case 'G':
+    case 'a':
+    case 'A':
+        return Tools::Form(format.c_str(), val);
+
+    case 'h':
+        {
+            string rc = Tools::Scientific(val);
+            *remove_if(rc.begin(), rc.end(), ::isspace)=0;
+            return rc;
+        }
+    }
+
+    return "";
+}
+
+
+// --------------------------------------------------------------------------
+//
+//! Perform the actual dump, based on the current parameters
+//
+void FitsDumper::Dump(ofstream &fout, const vector<string> &format, const vector<MyColumn> &cols, const string &filter, size_t first, size_t limit, const string &filename)
+{
+    const fits::Table::Keys &fKeyMap = GetKeys();
+
+#ifdef HAVE_ROOT
+    TFormula select;
+    if (!filter.empty() && select.Compile(filter.c_str()))
+        throw runtime_error("Syntax Error: TFormula::Compile failed for '"+filter+"'");
+#endif
+
+    fout << "## --------------------------------------------------------------------------\n";
+    fout << "## Fits file:  \t" << fFilename << '\n';
+    if (filename!="-")
+        fout << "## File:      \t" << filename << '\n';
+    fout << "## Table:     \t" << fKeyMap.find("EXTNAME")->second.value << '\n';
+    fout << "## NumRows:   \t" << GetNumRows() << '\n';
+    fout << "## Comment:   \t" << ((fKeyMap.find("COMMENT") != fKeyMap.end()) ? fKeyMap.find("COMMENT")->second.value : "") << '\n';
+#ifdef HAVE_ROOT
+    if (!filter.empty())
+        fout << "## Selection: \t" << select.GetExpFormula() << '\n';
+#endif
+    fout << "## --------------------------------------------------------------------------\n";
+    ListKeywords(fout);
+    fout << "## --------------------------------------------------------------------------\n";
+    fout << "#\n";
+
+    size_t num = 0;
+    for (auto it=cols.begin(); it!=cols.end(); it++)
+    {
+        fout << "# " << it->name;
+
+        if (it->first==it->last)
+        {
+            if (it->first!=0)
+                fout << "[" << it->first << "]";
+        }
+        else
+            fout << "[" << it->first << ":" << it->last << "]";
+
+        if (!it->col.unit.empty())
+            fout << ": " << it->col.unit;
+        fout << '\n';
+
+        num += it->last-it->first+1;
+    }
+    fout << "#" << endl;
+
+    // -----------------------------------------------------------------
+
+#ifdef HAVE_ROOT
+    vector<Double_t> data(num+1);
+#endif
+
+    const size_t last = limit ? first + limit : size_t(-1);
+
+    while (GetRow(first++))
+    {
+        const size_t row = GetRow();
+        if (row==GetNumRows() || row==last)
+            break;
+
+        size_t p = 0;
+
+#ifdef HAVE_ROOT
+        data[p++] = first-1;
+#endif
+
+        ostringstream sout;
+        sout.precision(fout.precision());
+        sout.flags(fout.flags());
+
+        uint32_t col = 0;
+        for (auto it=cols.begin(); it!=cols.end(); it++, col++)
+        {
+            string msg;
+            for (uint32_t i=it->first; i<=it->last; i++, p++)
+            {
+                if (col<format.size())
+                    sout << Format("%"+format[col], *it, i) << " ";
+                else
+                {
+                    switch (it->col.type)
+                    {
+                    case 'A':
+                        msg += reinterpret_cast<const char*>(it->ptr)[i];
+                        break;
+                    case 'B':
+                        sout << (unsigned int)reinterpret_cast<const unsigned char*>(it->ptr)[i] << " ";
+                        break;
+                    case 'L':
+                        sout << reinterpret_cast<const bool*>(it->ptr)[i] << " ";
+                        break;
+                    case 'I':
+                        sout << reinterpret_cast<const int16_t*>(it->ptr)[i] << " ";
+                        break;
+                    case 'J':
+                        sout << reinterpret_cast<const int32_t*>(it->ptr)[i] << " ";
+                        break;
+                    case 'K':
+                        sout << reinterpret_cast<const int64_t*>(it->ptr)[i] << " ";
+                        break;
+                    case 'E':
+                        sout << reinterpret_cast<const float*>(it->ptr)[i] << " ";
+                        break;
+                    case 'D':
+                        sout << reinterpret_cast<const double*>(it->ptr)[i] << " ";
+                        break;
+                    default:
+                        ;
+                    }
+                }
+#ifdef HAVE_ROOT
+                if (!filter.empty())
+                    data[p] = GetDouble(*it, i);
+#endif
+            }
+
+            if (it->col.type=='A')
+                sout << "'" << msg.c_str() << "' ";
+        }
+#ifdef HAVE_ROOT
+        if (!filter.empty() && select.EvalPar(0, data.data())<0.5)
+            continue;
+#endif
+        fout << sout.str() << endl;
+    }
+}
+
+vector<MyColumn> FitsDumper::InitColumnsRoot(vector<string> &names)
+{
+    static const boost::regex expr("[^\\[]([[:word:].]+)(\\[([[:digit:]]+)\\])?");
+
+    const fits::Table::Columns &cols = GetColumns();
+
+    vector<MyColumn> vec;
+
+    for (auto it=names.begin(); it!=names.end(); it++)
+    {
+        if (it->empty())
+            continue;
+
+        *it = ' '+*it;
+
+        string::const_iterator ibeg = it->begin();
+        string::const_iterator iend = it->end();
+
+        boost::smatch what;
+        while (boost::regex_search(ibeg, iend, what, expr, boost::match_extra))
+        {
+            const string all  = what[0];
+            const string name = what[1];
+            const size_t idx  = atol(string(what[3]).c_str());
+
+            // Check if found colum is valid
+            const auto ic = cols.find(name);
+            if (ic==cols.end())
+            {
+                ibeg++;
+                //cout << "Column '" << name << "' does not exist." << endl;
+                //return vector<MyColumn>();
+                continue;
+            }
+            if (idx>=ic->second.num)
+            {
+                cout << "Column '" << name << "' has no index " << idx << "." << endl;
+                return vector<MyColumn>();
+            }
+
+            // find index if column already exists
+            size_t p = 0;
+            for (; p<vec.size(); p++)
+                if (vec[p].name==name)
+                    break;
+
+            const string id = '['+to_string(p)+']';
+
+            // Replace might reallocate the memory. Therefore, we cannot use what[0].first
+            // directly but have to store the offset
+            const size_t offset = what[0].first - it->begin();
+
+            it->replace(ibeg-it->begin()+what.position(1), what.length()-1, id);
+
+            ibeg = it->begin() + offset + id.size();
+            iend = it->end();
+
+            if (p<vec.size())
+                continue;
+
+            // Column not found, add new column
+            MyColumn mycol;
+
+            mycol.name  = name;
+            mycol.col   = ic->second;
+            mycol.first = idx;
+            mycol.last  = idx;
+            mycol.ptr   = SetPtrAddress(name);
+
+            vec.push_back(mycol);
+        }
+    }
+
+    ostringstream id;
+    id << '[' << vec.size() << ']';
+
+    for (auto it=names.begin(); it!=names.end(); it++)
+    {
+        while (1)
+        {
+            auto p = it->find_first_of('#');
+            if (p==string::npos)
+                break;
+
+            it->replace(p, 1, id.str());
+        }
+    }
+
+    //cout << endl;
+    //for (size_t i=0; i<vec.size(); i++)
+    //    cout << "val[" << i << "] = " << vec[i].name << '[' << vec[i].first << ']' << endl;
+    //cout << endl;
+
+    return vec;
+}
+
+void FitsDumper::DumpRoot(ofstream &fout, const vector<string> &cols, const string &filter, size_t first, size_t limit, const string &filename)
+{
+#ifdef HAVE_ROOT
+    vector<string> names(cols);
+    names.insert(names.begin(), filter);
+
+    const vector<MyColumn> vec = InitColumnsRoot(names);
+    if (vec.empty())
+        return;
+
+    vector<TFormula> form(names.size());
+
+    auto ifo = form.begin();
+    for (auto it=names.begin(); it!=names.end(); it++, ifo++)
+    {
+        if (!it->empty() && ifo->Compile(it->c_str()))
+            throw runtime_error("Syntax Error: TFormula::Compile failed for '"+*it+"'");
+    }
+
+    const fits::Table::Keys &fKeyMap = GetKeys();
+
+    fout << "## --------------------------------------------------------------------------\n";
+    fout << "## Fits file:  \t" << fFilename << '\n';
+    if (filename!="-")
+        fout << "## File:      \t" << filename << '\n';
+    fout << "## Table:     \t" << fKeyMap.find("EXTNAME")->second.value << '\n';
+    fout << "## NumRows:   \t" << GetNumRows() << '\n';
+    fout << "## Comment:   \t" << ((fKeyMap.find("COMMENT") != fKeyMap.end()) ? fKeyMap.find("COMMENT")->second.value : "") << '\n';
+    fout << "## --------------------------------------------------------------------------\n";
+    ListKeywords(fout);
+    fout << "## --------------------------------------------------------------------------\n";
+    fout << "##\n";
+    if (!filter.empty())
+        fout << "## Selection: " << form[0].GetExpFormula() << "\n##\n";
+
+    size_t num = 0;
+    for (auto it=vec.begin(); it!=vec.end(); it++, num++)
+    {
+        fout << "## [" << num << "] = " << it->name;
+
+        if (it->first==it->last)
+        {
+            if (it->first!=0)
+                fout << "[" << it->first << "]";
+        }
+        else
+            fout << "[" << it->first << ":" << it->last << "]";
+
+        if (!it->col.unit.empty())
+            fout << ": " << it->col.unit;
+        fout << '\n';
+    }
+    fout << "##\n";
+    fout << "## --------------------------------------------------------------------------\n";
+    fout << "#\n";
+
+    fout << "# ";
+    for (auto it=form.begin()+1; it!=form.end(); it++)
+        fout << " \"" << it->GetExpFormula() << "\"";
+    fout << "\n#" << endl;
+
+    // -----------------------------------------------------------------
+
+    vector<Double_t> data(vec.size()+1);
+
+    const size_t last = limit ? first + limit : size_t(-1);
+
+    while (GetRow(first++))
+    {
+        const size_t row = GetRow();
+        if (row==GetNumRows() || row==last)
+            break;
+
+        size_t p = 0;
+        for (auto it=vec.begin(); it!=vec.end(); it++, p++)
+            data[p] = GetDouble(*it, it->first);
+
+        data[p] = first;
+
+        if (!filter.empty() && form[0].EvalPar(0, data.data())<0.5)
+            continue;
+
+        for (auto iform=form.begin()+1; iform!=form.end(); iform++)
+            fout << iform->EvalPar(0, data.data()) << " ";
+
+        fout << endl;
+    }
+#endif
+}
+
+void FitsDumper::DumpMinMax(ofstream &fout, const vector<MyColumn> &cols, size_t first, size_t limit, bool fNoZeroPlease)
+{
+    vector<minMaxStruct> statData(cols.size());
+
+    // Loop over all columns in our list of requested columns
+    const size_t last = limit ? first + limit : size_t(-1);
+
+    while (GetRow(first++))
+    {
+        const size_t row = GetRow();
+        if (row==GetNumRows() || row==last)
+            break;
+
+        auto statsIt = statData.begin();
+
+        for (auto it=cols.begin(); it!=cols.end(); it++, statsIt++)
+        {
+            if ((it->name=="UnixTimeUTC" || it->name=="PCTime") && it->first==0 && it->last==1)
+            {
+                const uint32_t *val = reinterpret_cast<const uint32_t*>(it->ptr);
+                if (fNoZeroPlease && val[0]==0 && val[1]==0)
+                    continue;
+
+                statsIt->add(Time(val[0], val[1]).Mjd());
+                continue;
+            }
+
+            for (uint32_t i=it->first; i<=it->last; i++)
+            {
+                const double cValue = GetDouble(*it, i);
+
+                if (fNoZeroPlease && cValue == 0)
+                    continue;
+
+                statsIt->add(cValue);
+            }
+        }
+    }
+
+    // okay. So now I've got ALL the data, loaded.
+    // let's do the summing and averaging in a safe way (i.e. avoid overflow
+    // of variables as much as possible)
+    auto statsIt = statData.begin();
+    for (auto it=cols.begin(); it!=cols.end(); it++, statsIt++)
+    {
+        fout << "\n[" << it->name << ':' << it->first;
+        if (it->first!=it->last)
+            fout << ':' << it->last;
+        fout << "]\n";
+
+        if (statsIt->numValues == 0)
+        {
+            fout << "Min: -\nMax: -\nAvg: -\nRms: -" << endl;
+            continue;
+        }
+
+        const long &num = statsIt->numValues;
+
+        long double &avg = statsIt->average;
+        long double &rms = statsIt->squared;
+
+        avg /= num;
+        rms /= num;
+        rms += avg*avg;
+        rms  = rms<0 ? 0 : sqrt(rms);
+
+        fout << "Min: " << statsIt->min << '\n';
+        fout << "Max: " << statsIt->max << '\n';
+        fout << "Avg: " << avg << '\n';
+        fout << "Rms: " << rms << endl;
+    }
+}
+
+template<typename T>
+void displayStats(vector<char> &array, ofstream& out)
+{
+    const size_t numElems = array.size()/sizeof(T);
+    if (numElems == 0)
+    {
+        out << "Min: -\nMax: -\nMed: -\nAvg: -\nRms: -" << endl;
+        return;
+    }
+
+    T *val = reinterpret_cast<T*>(array.data());
+
+    sort(val, val+numElems);
+
+    out << "Min: " << double(val[0]) << '\n';
+    out << "Max: " << double(val[numElems-1]) << '\n';
+
+    if (numElems%2 == 0)
+        out << "Med: " << (double(val[numElems/2-1]) + double(val[numElems/2]))/2 << '\n';
+    else
+        out << "Med: " << double(val[numElems/2]) << '\n';
+
+    long double avg = 0;
+    long double rms = 0;
+    for (uint32_t i=0;i<numElems;i++)
+    {
+        const long double v = val[i];
+        avg += v;
+        rms += v*v;
+    }
+
+    avg /= numElems;
+    rms /= numElems;
+    rms -= avg*avg;
+    rms  = rms<0 ? 0 : sqrt(rms);
+
+
+    out << "Avg: " << avg << '\n';
+    out << "Rms: " << rms << endl;
+}
+
+void FitsDumper::DumpStats(ofstream &fout, const vector<MyColumn> &cols, const string &filter, size_t first, size_t limit)
+{
+#ifdef HAVE_ROOT
+    TFormula select;
+    if (!filter.empty() && select.Compile(filter.c_str()))
+        throw runtime_error("Syntax Error: TFormula::Compile failed for '"+filter+"'");
+#endif
+
+    // Loop over all columns in our list of requested columns
+    vector<vector<char>> statData;
+
+    const size_t rows = limit==0 || GetNumRows()<limit ? GetNumRows() : limit;
+
+    for (auto it=cols.begin(); it!=cols.end(); it++)
+        statData.emplace_back(vector<char>(it->col.size*rows*(it->last-it->first+1)));
+
+#ifdef HAVE_ROOT
+    size_t num = 0;
+    for (auto it=cols.begin(); it!=cols.end(); it++)
+        num += it->last-it->first+1;
+
+    vector<Double_t> data(num+1);
+#endif
+
+    // Loop over all columns in our list of requested columns
+    const size_t last = limit ? first + limit : size_t(-1);
+
+    uint64_t counter = 0;
+
+    while (GetRow(first++))
+    {
+        const size_t row = GetRow();
+        if (row==GetNumRows() || row==last)
+            break;
+
+#ifdef HAVE_ROOT
+        if (!filter.empty())
+        {
+            size_t p = 0;
+
+            data[p++] = first-1;
+
+            for (auto it=cols.begin(); it!=cols.end(); it++)
+                for (uint32_t i=it->first; i<=it->last; i++, p++)
+                    data[p] = GetDouble(*it, i);
+
+            if (select.EvalPar(0, data.data())<0.5)
+                continue;
+        }
+#endif
+
+        auto statsIt = statData.begin();
+        for (auto it=cols.begin(); it!=cols.end(); it++, statsIt++)
+        {
+            const char *src = reinterpret_cast<const char*>(it->ptr);
+            const size_t sz = (it->last-it->first+1)*it->col.size;
+            memcpy(statsIt->data()+counter*sz, src+it->first*it->col.size, sz);
+        }
+
+        counter++;
+    }
+
+    auto statsIt = statData.begin();
+    for (auto it=cols.begin(); it!=cols.end(); it++, statsIt++)
+    {
+        fout << "\n[" << it->name << ':' << it->first;
+        if (it->last!=it->first)
+            fout << ':' << it->last;
+        fout << "]\n";
+
+        const size_t sz = (it->last-it->first+1)*it->col.size;
+        statsIt->resize(counter*sz);
+
+        switch (it->col.type)
+        {
+        case 'L':
+            displayStats<bool>(*statsIt, fout);
+            break;
+        case 'B':
+            displayStats<char>(*statsIt, fout);
+            break;
+        case 'I':
+            displayStats<int16_t>(*statsIt, fout);
+            break;
+        case 'J':
+            displayStats<int32_t>(*statsIt, fout);
+            break;
+        case 'K':
+            displayStats<int64_t>(*statsIt, fout);
+            break;
+        case 'E':
+            displayStats<float>(*statsIt, fout);
+            break;
+        case 'D':
+            displayStats<double>(*statsIt, fout);
+            break;
+        default:
+            ;
+        }
+    }
+}
+
+// --------------------------------------------------------------------------
+//
+//! Retrieves the configuration parameters
+//! @param conf
+//!             the configuration object
+//
+int FitsDumper::Exec(Configuration& conf)
+{
+    if (conf.Get<bool>("list"))
+        List();
+
+    if (conf.Get<bool>("filecontent"))
+        ListFileContent();
+
+    if (conf.Get<bool>("header"))
+        ListHeader(conf.Get<string>("outfile"));
+
+
+    if (conf.Get<bool>("header") || conf.Get<bool>("list") || conf.Get<bool>("filecontent"))
+        return 1;
+
+    // ------------------------------------------------------------
+
+    if (conf.Get<bool>("minmax") && conf.Get<bool>("stat"))
+    {
+        cerr << "Invalid combination of options: cannot do stats and minmax." << endl;
+        return -1;
+    }
+    if (conf.Get<bool>("stat") && conf.Get<bool>("nozero"))
+    {
+        cerr << "Invalid combination of options: nozero only works with minmax." << endl;
+        return -1;
+    }
+
+    if (conf.Get<bool>("scientific") && conf.Get<bool>("fixed"))
+    {
+        cerr << "Switched --scientific and --fixed are mutually exclusive." << endl;
+        return -1;
+    }
+
+    if (conf.Has("%") && conf.Has("%%"))
+    {
+        cerr << "Switched --% and --%% are mutually exclusive." << endl;
+        return -1;
+    }
+
+    // ------------------------------------------------------------
+
+    const string filename = conf.Get<string>("outfile");
+
+    ofstream fout(filename=="-"?"/dev/stdout":filename);
+    if (!fout)
+    {
+        cerr << "Cannot open file " << filename << ": " << strerror(errno) << endl;
+        return false;
+    }
+    fout.precision(conf.Get<int>("precision"));
+    if (conf.Get<bool>("fixed"))
+        fout << fixed;
+    if (conf.Get<bool>("scientific"))
+        fout << scientific;
+
+    const string filter = conf.Has("filter") ? conf.Get<string>("filter") : "";
+    const size_t first  = conf.Get<size_t>("first");
+    const size_t limit  = conf.Get<size_t>("limit");
+
+#ifdef HAVE_ROOT
+    if (conf.Get<bool>("root"))
+    {
+        DumpRoot(fout, conf.Vec<string>("col"), filter, first, limit, filename);
+        return 0;
+    }
+#endif
+
+    const vector<string> format = conf.Vec<string>("%");
+    for (auto it=format.begin(); it<format.end(); it++)
+    {
+        static const boost::regex expr("-?[0-9]*[.]?[0-9]*[diouxXeEfFgGaAh]");
+
+        boost::smatch what;
+        if (!boost::regex_match(*it, what, expr, boost::match_extra))
+        {
+            cerr << "Format '" << *it << "' not supported." << endl;
+            return -1;
+        }
+    }
+
+    const vector<MyColumn> cols = InitColumns(conf.Vec<string>("col"));
+    if (cols.empty())
+        return false;
+
+    if (conf.Get<bool>("minmax"))
+    {
+        DumpMinMax(fout, cols, first, limit, conf.Get<bool>("nozero"));
+        return 0;
+    }
+
+    if (conf.Get<bool>("stat"))
+    {
+        DumpStats(fout, cols, filter, first, limit);
+        return 0;
+    }
+
+    Dump(fout, format, cols, filter, first, limit, filename);
+
+    return 0;
+}
+
+void PrintUsage()
+{
+    cout <<
+        "fitsdump is a tool to dump data from a FITS table as ascii.\n"
+        "\n"
+        "Usage: fitsdump [OPTIONS] fitsfile col col ... \n"
+        "  or:  fitsdump [OPTIONS]\n"
+        "\n"
+        "Addressing a column:\n"
+        "  ColumnName:         Will address all fields of a column\n"
+        "  ColumnName[n]:      Will address the n-th field of a column (starts with 0)\n"
+        "  ColumnName[n1:n2]:  Will address all fields between n1 and including n2\n"
+#ifdef HAVE_ROOT
+        "\n"
+        "Selecting a column:\n"
+        "  Commandline option:  --filter\n"
+        "  Explanation:  Such a selection is evaluated using TFormula, hence, every "
+        "mathematical operation allowed in TFormula is allowed there, too. "
+        "The reference is the column index as printed in the output stream, "
+        "starting with 1. The index 0 is reserved for the row number.\n"
+#endif
+        ;
+    cout << endl;
+}
+
+void PrintHelp()
+{
+#ifdef HAVE_ROOT
+    cout <<
+        "\n\n"
+        "Examples:\n"
+        "In --root mode, fitsdump support TFormula's syntax for all columns and the filter "
+        "You can then refer to a column or a (single) index of the column just by its name "
+        "If the index is omitted, 0 is assumed. Note that the [x:y] syntax in this mode is "
+        "not supported\n"
+        "\n"
+        "  fitsdump Zd --filter=\"[0]>20 && cos([1])*TMath::RadToDeg()<45\"\n"
+        "\n"
+        "The columns can also be addressed with their names\n"
+        "\n"
+        "  fitsdump -r \"(Zd+Err)*TMath::DegToRad()\" --filter=\"[0]<25 && [1]<0.05\"\n"
+        "\n"
+        "is identical to\n"
+        "\n"
+        "  fitsdump -r \"(Zd[0]+Err[0])*TMath::DegToRad()\" --filter=\"[0]<25 && [1]<0.05\"\n"
+        "\n"
+        "A special placeholder exists for the row number\n"
+        "\n"
+        "  fitsdump -r \"#\" --filter=\"#>10 && #<100\"\n"
+        "\n"
+        "To format a single column you can do\n"
+        "\n"
+        "  fitsdump col1 -%.1f col2 -%d\n"
+        "\n"
+        "A special format is provided converting to 'human readable format'\n"
+        "\n"
+        "  fitsdump col1 -%h\n"
+        "\n";
+    cout << endl;
+#endif
+}
+
+
+void SetupConfiguration(Configuration& conf)
+{
+    po::options_description configs("Fitsdump options");
+    configs.add_options()
+        ("filecontent", po_switch(),            "List the number of tables in the file, along with their name")
+        ("header,h",    po_switch(),            "Dump header of given table")
+        ("list,l",      po_switch(),            "List all tables and columns in file")
+        ("fitsfile",    var<string>()
+#if BOOST_VERSION >= 104200
+         ->required()
+#endif
+                                              , "Name of FITS file")
+        ("col,c",       vars<string>(),         "List of columns to dump\narg is a list of columns, separated by a space.\nAdditionnally, a list of sub-columns can be added\ne.g. Data[3] will dump sub-column 3 of column Data\nData[3:4] will dump sub-columns 3 and 4\nOmitting this argument dump the entire column\nnote: all indices start at zero")
+        ("outfile,o",   var<string>("-"),       "Name of output file (-:/dev/stdout)")
+        ("precision,p", var<int>(20),           "Precision of ofstream")
+        ("stat,s",      po_switch(),            "Perform statistics instead of dump")
+        ("minmax,m",    po_switch(),            "Calculates min and max of data")
+        ("nozero,z",    po_switch(),            "skip 0 values for stats")
+        ("fixed",       po_switch(),            "Switch output stream to floating point values in fixed-point notation")
+        ("scientific",  po_switch(),            "Switch output stream to floating point values in scientific notation")
+        ("%,%",         vars<string>(),         "Format for the output (currently not available in root-mode)")
+        ("force",       po_switch(),            "Force reading the fits file even if END key is missing")
+        ("first",       var<size_t>(size_t(0)), "First number of row to read")
+        ("limit",       var<size_t>(size_t(0)), "Limit for the maximum number of rows to read (0=unlimited)")
+        ("tablename,t", var<string>(""),        "Name of the table to open. If not specified, first binary table is opened")
+#ifdef HAVE_ROOT
+        ("root,r",      po_switch(),            "Enable root mode")
+        ("filter,f",    var<string>(""),        "Filter to restrict the selection of events (e.g. '[0]>10 && [0]<20';  does not work with stat and minmax yet)")
+#endif
+        ;
+
+    po::positional_options_description p;
+    p.add("fitsfile",  1); // The first positional options
+    p.add("col",      -1); // All others
+
+    conf.AddOptions(configs);
+    conf.SetArgumentPositions(p);
+}
+
+int main(int argc, const char** argv)
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return -1;
+
+    if (!conf.Has("fitsfile"))
+    {
+        cerr << "Filename required." << endl;
+        return -1;
+    }
+
+    FitsDumper loader(conf.Get<string>("fitsfile"), conf.Get<string>("tablename"));
+    if (!loader)
+    {
+        cerr << "ERROR - Opening " << conf.Get<string>("fitsfile");
+        cerr << " failed: " << strerror(errno) << endl;
+        return -1;
+    }
+
+    return loader.Exec(conf);
+}
Index: branches/testFACT++branch/src/fitsloader.cc
===================================================================
--- branches/testFACT++branch/src/fitsloader.cc	(revision 18277)
+++ branches/testFACT++branch/src/fitsloader.cc	(revision 18277)
@@ -0,0 +1,689 @@
+//****************************************************************
+/** @class FitsLoader
+
+  @brief Load a given Fits file and table, and dump selected columns if requested.
+
+  It derives from StateMachineDim. the first parent is here to enforce
+  a state machine behaviour
+  The possible states and transitions of the machine are:
+  \dot
+  digraph FitsLoader {
+          node [shape=record, fontname=Helvetica, fontsize=10];
+      e [label="Error" color="red"];
+   r [label="Ready"]
+   d [label="FileLoaded"]
+
+  e -> r
+  r -> e
+  r -> d
+  d -> r
+   }
+  \enddot
+ */
+ //****************************************************************
+#include "Event.h"
+#include "StateMachineDim.h"
+#include "WindowLog.h"
+#include "Configuration.h"
+#include "LocalControl.h"
+#include "Description.h"
+
+
+#include <boost/bind.hpp>
+#if BOOST_VERSION < 104400
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))
+#undef BOOST_HAS_RVALUE_REFS
+#endif
+#endif
+#include <boost/thread.hpp>
+
+#include <iostream>
+
+#include <CCfits/CCfits>
+
+class FitsLoader : public StateMachineDim
+{
+
+public:
+    enum
+    {
+        kSM_FileLoaded = 20,
+    } localstates_t;
+
+    FitsLoader(ostream& out);
+    ~FitsLoader();
+
+    ///Define command names
+    static const char* fLoadFits;
+    static const char* fUnloadFits;
+    static const char* fListColumns;
+    static const char* fDumpColumns;
+    static const char* fClearDumpList;
+    static const char* fDoDump;
+    static const char* fConfigFileName;
+    static const char* fConfigTableName;
+    static const char* fConfigPrecName;
+    static const char* fConfigFileOutName;
+
+private:
+    ///Name of the fits file to load
+    string fFileName;
+    ///Name of the table to load from the  file
+    string fTableName;
+    ///FITS pointer
+    CCfits::FITS* fFile;
+    ///Table pointer
+    CCfits::Table* fTable;
+    ///Precision of the ofstream. Used to output a given number of significant digits for floats or doubles
+    int fStreamPrecision;
+    ///Name of the output file
+    string fFileOut;
+    ///map between the column names and their CCfits objects
+    map<string, CCfits::Column*> fColMap;
+    ///List of the column names to be dumped
+    vector<string> fDumpList;
+    ///Transition from ready to fileLoaded.
+    int LoadPlease();
+    ///Transition from fileLoaded to ready
+    int UnloadPlease();
+    ///Lists the loaded column names
+    int ListColumnsPlease(const Event&);
+    ///Add a column name to the dump list
+    int AddDumpColumnsPlease(const Event&);
+    ///Clear the dump list
+    int ClearDumpListPlease(const Event&);
+    ///Perform the dumping, based on the current dump list
+    int DoDumpPlease(const Event&);
+    ///Set the name of the Fits file to be loaded
+    int ConfigFileNamePlease(const Event&);
+    ///Set the name of the table to be loaded
+    int ConfigTableNamePlease(const Event&);
+    ///Set the ofstream precision
+    int SetOFStreamPrecisionPlease(const Event&);
+    ///Set the name of the output file
+    int SetFileOutPlease(const Event&);
+    ///Calculate the buffer size required to read a row of the fits table, as well as the offsets to each column
+    vector<int> CalculateBufferSize();
+    ///Write a single row of the selected data
+    void writeValuesFromFits(vector<int>& offsets,ofstream& targetFile, unsigned char* fitsBuffer);
+
+public:
+    ///Configures the fitsLoader from the config file and/or command arguments.
+    void SetupConfig(Configuration& conf);
+};
+
+const char* FitsLoader::fLoadFits = "load";
+const char* FitsLoader::fUnloadFits = "unload";
+const char* FitsLoader::fListColumns = "list_columns";
+const char* FitsLoader::fDumpColumns = "add_dump";
+const char* FitsLoader::fClearDumpList = "clear_dump";
+const char* FitsLoader::fDoDump = "dump";
+const char* FitsLoader::fConfigFileName = "set_file";
+const char* FitsLoader::fConfigTableName = "set_table";
+const char* FitsLoader::fConfigPrecName = "set_prec";
+const char* FitsLoader::fConfigFileOutName = "set_outfile";
+
+// --------------------------------------------------------------------------
+//
+//! Set the name of the output file
+//! @param evt
+//!        the event transporting the file name
+//
+int FitsLoader::SetFileOutPlease(const Event& evt)
+{
+    fFileOut = evt.GetText();
+    ostringstream str;
+    str << "Output file is now " << fFileOut;
+    Message(str);
+    return 0;
+}
+// --------------------------------------------------------------------------
+//
+//! Set the precision of the ofstream. So that an appropriate number of significant digits are outputted.
+//! @param evt
+//!        the event transporting the precision
+//
+int FitsLoader::SetOFStreamPrecisionPlease(const Event& evt)
+{
+    fStreamPrecision = evt.GetInt();
+    ostringstream str;
+    str << "ofstream precision is now " << fStreamPrecision;
+    Message(str);
+    return 0;
+}
+// --------------------------------------------------------------------------
+//
+//! Writes a single row of the selected FITS data to the output file.
+//! @param offsets
+//!         a vector containing the offsets to the columns (in bytes)
+//! @param targetFile
+//!         the ofstream where to write to
+//! @param fitsBuffer
+//!         the memory were the row has been loaded by cfitsio
+//
+void FitsLoader::writeValuesFromFits(vector<int>& offsets,ofstream& targetFile, unsigned char* fitsBuffer)
+{
+    targetFile.precision(fStreamPrecision);
+    map<string, CCfits::Column*>::iterator it;
+   for (it=fColMap.begin(); it != fColMap.end(); it++)
+    {
+        bool found = false;
+        for (vector<string>::iterator jt=fDumpList.begin(); jt != fDumpList.end(); jt++)
+        {
+            if (it->first == *jt)
+            {
+                found = true;
+                break;
+            }
+        }
+        if (!found)
+            continue;
+       int offset = offsets[it->second->index()-1];
+       const char* charSrc = reinterpret_cast<char*>(&fitsBuffer[offset]);
+        unsigned char copyBuffer[30];//max size of a single variable
+        for (int width = 0; width<it->second->width(); width++)
+        {
+            switch (it->second->type())
+            {
+            case CCfits::Tbyte:
+                targetFile << *charSrc;
+                charSrc += sizeof(char);
+            break;
+            case CCfits::Tushort:
+                targetFile << *reinterpret_cast<const unsigned short*>(charSrc);
+                charSrc += sizeof(char);
+            break;
+            case CCfits::Tshort:
+                targetFile << *reinterpret_cast<const short*>(charSrc);
+                charSrc += sizeof(char);
+            break;
+            case CCfits::Tuint:
+                reverse_copy(charSrc, charSrc+sizeof(unsigned int), copyBuffer);
+                //warning suppressed in gcc4.0.2
+                targetFile << *reinterpret_cast<unsigned int*>(copyBuffer);
+                charSrc += sizeof(int);
+            break;
+            case CCfits::Tint:
+                reverse_copy(charSrc, charSrc+sizeof(int), copyBuffer);
+                targetFile << *reinterpret_cast<int*>(copyBuffer);
+                charSrc += sizeof(int);
+            break;
+            case CCfits::Tulong:
+                reverse_copy(charSrc, charSrc+sizeof(unsigned long), copyBuffer);
+                targetFile << *reinterpret_cast<unsigned long*>(copyBuffer);
+                charSrc += sizeof(int);
+            break;
+            case CCfits::Tlong:
+                reverse_copy(charSrc, charSrc+sizeof(long), copyBuffer);
+                targetFile << *reinterpret_cast<long*>(copyBuffer);
+                charSrc += sizeof(int);
+            break;
+            case CCfits::Tlonglong:
+                reverse_copy(charSrc, charSrc+sizeof(long long), copyBuffer);
+                targetFile << *reinterpret_cast<long long*>(copyBuffer);
+                charSrc += sizeof(long long);
+            break;
+            case CCfits::Tfloat:
+                reverse_copy(charSrc, charSrc+sizeof(float), copyBuffer);
+                targetFile << *reinterpret_cast<float*>(copyBuffer);
+                charSrc += sizeof(float);
+            break;
+            case CCfits::Tdouble:
+                reverse_copy(charSrc, charSrc+sizeof(double), copyBuffer);
+                targetFile << *reinterpret_cast<double*>(copyBuffer);
+                charSrc += sizeof(double);
+            break;
+            case CCfits::Tnull:
+            case CCfits::Tbit:
+            case CCfits::Tlogical:
+            case CCfits::Tstring:
+            case CCfits::Tcomplex:
+            case CCfits::Tdblcomplex:
+            case CCfits::VTbit:
+            case CCfits::VTbyte:
+            case CCfits::VTlogical:
+            case CCfits::VTushort:
+            case CCfits::VTshort:
+            case CCfits::VTuint:
+            case CCfits::VTint:
+            case CCfits::VTulong:
+            case CCfits::VTlong:
+            case CCfits::VTlonglong:
+            case CCfits::VTfloat:
+            case CCfits::VTdouble:
+            case CCfits::VTcomplex:
+            case CCfits::VTdblcomplex:
+                Error("Data type not implemented yet.");
+                return;
+            break;
+            default:
+                Error("THIS SHOULD NEVER BE REACHED");
+                return;
+            }//switch
+            targetFile << " ";
+        }//width loop
+    }//iterator over the columns
+    targetFile << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calculates the required buffer size for reading one row of the current table.
+//! Also calculates the offsets to all the columns
+//
+vector<int> FitsLoader::CalculateBufferSize()
+{
+    vector<int> result;
+    map<int,int> sizes;
+    int size = 0;
+
+    for (map<string, CCfits::Column*>::iterator it=fColMap.begin(); it != fColMap.end(); it++)
+    {
+        int width = it->second->width();
+        switch (it->second->type())
+        {
+        case CCfits::Tbyte:
+        case CCfits::Tushort:
+        case CCfits::Tshort:
+            Message("short");
+            sizes[it->second->index()] =  sizeof(char)*width;
+        break;
+        case CCfits::Tuint:
+        case CCfits::Tint:
+            Message("int");
+            sizes[it->second->index()] =  sizeof(int)*width;
+        break;
+        case CCfits::Tulong:
+        case CCfits::Tlong:
+            Message("long");
+            sizes[it->second->index()] = sizeof(int)*width;
+        break;
+        case CCfits::Tlonglong:
+            Message("longlong");
+            sizes[it->second->index()] =  sizeof(long long)*width;
+        break;
+        case CCfits::Tfloat:
+            Message("float");
+            sizes[it->second->index()] =  sizeof(float)*width;
+        break;
+        case CCfits::Tdouble:
+            Message("double");
+            sizes[it->second->index()] =  sizeof(double)*width;
+        break;
+        case CCfits::Tnull:
+        case CCfits::Tbit:
+        case CCfits::Tlogical:
+        case CCfits::Tstring:
+        case CCfits::Tcomplex:
+        case CCfits::Tdblcomplex:
+        case CCfits::VTbit:
+        case CCfits::VTbyte:
+        case CCfits::VTlogical:
+        case CCfits::VTushort:
+        case CCfits::VTshort:
+        case CCfits::VTuint:
+        case CCfits::VTint:
+        case CCfits::VTulong:
+        case CCfits::VTlong:
+        case CCfits::VTlonglong:
+        case CCfits::VTfloat:
+        case CCfits::VTdouble:
+        case CCfits::VTcomplex:
+        case CCfits::VTdblcomplex:
+            Error("Data type not implemented yet.");
+            return vector<int>();
+        break;
+        default:
+            Error("THIS SHOULD NEVER BE REACHED");
+            return vector<int>();
+        }
+    }
+    //calculate the offsets in the vector.
+    int checkIndex = 1;
+    for (map<int,int>::iterator it=sizes.begin(); it != sizes.end(); it++)
+    {
+        result.push_back(size);
+        size += it->second;
+        if (it->first != checkIndex)
+        {
+            ostringstream str;
+            str << "Expected index " << checkIndex << " found " << it->first;
+            Error(str);
+        }
+        checkIndex++;
+    }
+    result.push_back(size);
+    return result;
+}
+// --------------------------------------------------------------------------
+//
+//! Constructor
+//! @param out
+//!        the ostream where to redirect the outputs
+//
+FitsLoader::FitsLoader(ostream& out) : StateMachineDim(out, "FITS_LOADER")
+{
+    //Add the existing states
+    AddStateName(kSM_FileLoaded,  "FileLoaded", "A Fits file has been loaded");
+
+    //Add the possible transitions
+    AddEvent(kSM_FileLoaded, fLoadFits, kSM_Ready)
+            (boost::bind(&FitsLoader::LoadPlease, this))
+            ("Loads the given Fits file");
+    AddEvent(kSM_Ready, fUnloadFits, kSM_FileLoaded)
+            (boost::bind(&FitsLoader::UnloadPlease, this))
+            ("Unloads the given Fits file");
+
+    //Add the possible configurations
+    AddEvent(fListColumns, "", kSM_FileLoaded)
+            (boost::bind(&FitsLoader::ListColumnsPlease, this, _1))
+            ("List the columns that were loaded from that file");
+    AddEvent(fDumpColumns, "C", kSM_FileLoaded)
+            (boost::bind(&FitsLoader::AddDumpColumnsPlease, this, _1))
+            ("Add a given column to the dumping list");
+    AddEvent(fClearDumpList, "", kSM_FileLoaded)
+            (boost::bind(&FitsLoader::ClearDumpListPlease, this, _1))
+            ("Clear the dumping list");
+    AddEvent(fDoDump, "", kSM_FileLoaded)
+            (boost::bind(&FitsLoader::DoDumpPlease, this, _1))
+            ("Perform the dump of columns data, based on the to dump list");
+    AddEvent(fConfigFileName, "C", kSM_Ready, kSM_FileLoaded)
+            (boost::bind(&FitsLoader::ConfigFileNamePlease, this, _1))
+            ("Gives the name of the Fits file to be loaded");
+    AddEvent(fConfigTableName, "C", kSM_Ready, kSM_FileLoaded)
+            (boost::bind(&FitsLoader::ConfigTableNamePlease, this, _1))
+            ("Gives the name of the Table to be loaded");
+    AddEvent(fConfigPrecName, "I", kSM_Ready, kSM_FileLoaded)
+            (boost::bind(&FitsLoader::SetOFStreamPrecisionPlease, this, _1))
+            ("Set the precision of the ofstream, i.e. the number of significant digits being outputted");
+    AddEvent(fConfigFileOutName, "C", kSM_Ready, kSM_FileLoaded)
+            (boost::bind(&FitsLoader::SetFileOutPlease, this, _1))
+            ("Set the name of the outputted file.");
+
+    fFile = NULL;
+    fStreamPrecision = 20;
+
+}
+// --------------------------------------------------------------------------
+//
+//! Destructor
+//
+FitsLoader::~FitsLoader()
+{
+    if (fFile)
+        delete fFile;
+    fFile = NULL;
+}
+// --------------------------------------------------------------------------
+//
+//! Loads the fits file based on the current parameters
+//
+int FitsLoader::LoadPlease()
+{
+    ostringstream str;
+    try
+    {
+        fFile = new CCfits::FITS(fFileName);
+    }
+    catch (CCfits::FitsException e)
+     {
+         str << "Could not open FITS file " << fFileName << " reason: " << e.message();
+         Error(str);
+         return kSM_Ready;
+     }
+    str.str("");
+    const multimap< string, CCfits::ExtHDU * > extMap = fFile->extension();
+    if (extMap.find(fTableName) == extMap.end())
+    {
+        str.str("");
+        str << "Could not open table " << fTableName << ". Tables in file are: ";
+        for (std::multimap<string, CCfits::ExtHDU*>::const_iterator it=extMap.begin(); it != extMap.end(); it++)
+            str << it->first << " ";
+        Error(str);
+        return kSM_Ready;
+    }
+    else
+        fTable = dynamic_cast<CCfits::Table*>(extMap.find(fTableName)->second);
+    int numRows = fTable->rows();
+    str.str("");
+    str << "Loaded table has " << numRows << " rows";
+    Message(str);
+
+    fColMap = fTable->column();
+    if (fDumpList.size() != 0)
+    {
+        bool should_clear = false;
+        for (vector<string>::iterator it=fDumpList.begin(); it!= fDumpList.end(); it++)
+        {
+            if (fColMap.find(*it) == fColMap.end())
+            {
+                should_clear = true;
+                Error("Config-given dump list contains invalid entry " + *it + " clearing the list");
+            }
+        }
+        if (should_clear)
+            fDumpList.clear();
+    }
+    return kSM_FileLoaded;
+}
+// --------------------------------------------------------------------------
+//
+//! Unloads the Fits file
+//
+int FitsLoader::UnloadPlease()
+{
+    if (fFile)
+        delete fFile;
+    else
+        Error("Error: Fits file is  NULL while it should not have been");
+    fFile = NULL;
+    return kSM_Ready;
+}
+// --------------------------------------------------------------------------
+//
+//! List the columns that are in the loaded Fits table
+//
+int FitsLoader::ListColumnsPlease(const Event&)
+{
+    Message("Columns in the loaded table are:");
+    map<string, CCfits::Column*>::iterator it;
+    for (it=fColMap.begin(); it != fColMap.end(); it++)
+        Message(it->first);
+    return GetCurrentState();
+}
+// --------------------------------------------------------------------------
+//
+//! Add a given column name  to the list of columns to dump
+//! @param evt
+//!        the event transporting the column name
+//
+int FitsLoader::AddDumpColumnsPlease(const Event& evt)
+{
+    string evtText(evt.GetText());
+    //TODO check that this column indeed exist in the file
+    if (fColMap.find(evtText) != fColMap.end())
+        fDumpList.push_back(evtText);
+    else
+        Error("Could not find column " + evtText + " int table");
+    Message("New dump list:");
+    for (vector<string>::iterator it=fDumpList.begin(); it != fDumpList.end(); it++)
+        Message(*it);
+    return GetCurrentState();
+}
+// --------------------------------------------------------------------------
+//
+//! Clear the list of columns to dump
+//
+int FitsLoader::ClearDumpListPlease(const Event&)
+{
+    fDumpList.clear();
+    Message("Dump list is now empty");
+    return GetCurrentState();
+}
+// --------------------------------------------------------------------------
+//
+//! Perform the actual dump, based on the current parameters
+//
+int FitsLoader::DoDumpPlease(const Event&)
+{
+    fTable->makeThisCurrent();
+    vector<int> offsets = CalculateBufferSize();
+    int size = offsets[offsets.size()-1];
+    offsets.pop_back();
+    unsigned char* fitsBuffer = new unsigned char[size];
+
+    ofstream targetFile(fFileOut);
+    int status = 0;
+
+    for (int i=1;i<=fTable->rows(); i++)
+    {
+        fits_read_tblbytes(fFile->fitsPointer(), i, 1, size, fitsBuffer, &status);
+        if (status)
+        {
+            ostringstream str;
+            str << "An error occurred while reading fits row #" << i << " error code: " << status;
+            Error(str);
+            str.str("");
+            for (unsigned int j=0;j<offsets.size(); j++)
+                str << offsets[j] << " ";
+            Error(str);
+        }
+        writeValuesFromFits(offsets, targetFile, fitsBuffer);
+    }
+    delete[] fitsBuffer;
+    return GetCurrentState();
+}
+// --------------------------------------------------------------------------
+//
+//! Set the name of the intput Fits file
+//! @param evt
+//!        the event transporting the file name
+//
+int FitsLoader::ConfigFileNamePlease(const Event& evt)
+{
+    fFileName = string(evt.GetText());
+    Message("New Fits file: " + fFileName);
+    return GetCurrentState();
+}
+// --------------------------------------------------------------------------
+//
+//! Set the name of the input table
+//! @param evt
+//!        the event transporting the table name
+//
+int FitsLoader::ConfigTableNamePlease(const Event& evt)
+{
+    fTableName = string(evt.GetText());
+    Message("New Fits table: " + fTableName);
+    return GetCurrentState();
+}
+// --------------------------------------------------------------------------
+//
+//! Retrieves the configuration parameters
+//! @param conf
+//!             the configuration object
+//
+void FitsLoader::SetupConfig(Configuration& conf)
+{
+    if (conf.Has("outfile"))
+    {
+        fFileOut = conf.Get<string>("outfile");
+        Message("Output file is: " + fFileOut);
+    }
+    if (conf.Has("fitsfile"))
+    {
+        fFileName = conf.Get<string>("fitsfile");
+        Message("Input fits is: " + fFileName);
+    }
+    if (conf.Has("tablename"))
+    {
+        fTableName = conf.Get<string>("tablename");
+        Message("Input Table is: " + fTableName);
+    }
+    if (conf.Has("dump"))
+    {
+        fDumpList = conf.Get<vector<string>>("dump");
+        Message("Dump list is:");
+        for (vector<string>::iterator it=fDumpList.begin(); it != fDumpList.end(); it++)
+            Message(*it);
+    }
+    if (conf.Has("precision"))
+    {
+        fStreamPrecision = conf.Get<int>("precision");
+
+        ostringstream str;
+        str << "OFStream precision is: " << fStreamPrecision;
+        Message(str);
+    }
+}
+void RunThread(FitsLoader* loader)
+{
+    loader->Run(true);
+    Readline::Stop();
+}
+template<class T>
+int RunShell(Configuration& conf)
+{
+    static T shell(conf.GetName().c_str(), conf.Get<int>("console")!=1);
+
+    WindowLog& wout = shell.GetStreamOut();
+
+    FitsLoader loader(wout);
+    loader.SetupConfig(conf);
+    shell.SetReceiver(loader);
+
+    boost::thread t(boost::bind(RunThread, &loader));
+
+    shell.Run();
+
+    loader.Stop();
+
+    t.join();
+
+    return 0;
+}
+void PrintUsage()
+{
+    cout << "This is a usage. to be completed" << endl;
+}
+void PrintHelp()
+{
+    cout << "This is the help. I know, not so helpfull at the moment..." << endl;
+}
+void SetupConfiguration(Configuration& conf)
+{
+    po::options_description configp("Programm options");
+    configp.add_options()
+            ("console,c", var<int>(), "Use console (0=shell, 1=simple buffered, X=simple unbuffered)");
+
+    po::options_description configs("Fits Loader options");
+    configs.add_options()
+            ("outfile,o", var<string>(), "Output file")
+            ("fitsfile,f", var<string>(), "Input Fits file")
+            ("tablename,t", var<string>(), "Input Table")
+            ("dump,d", vars<string>(), "List of columns to dump")
+            ("precision,p", var<int>(), "Precision of ofstream")
+            ;
+//    conf.AddEnv("dns", "DIM_DNS_NODE");
+
+    conf.AddOptions(configp);
+    conf.AddOptions(configs);
+}
+int main(int argc, const char** argv)
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return -1;
+
+//    if (!conf.Has("console"))
+//        return Run(conf);
+    if (conf.Get<int>("console")==0)
+        return RunShell<LocalShell>(conf);
+    else
+        return RunShell<LocalConsole>(conf);
+
+    return 0;
+}
Index: branches/testFACT++branch/src/fitsselect.cc
===================================================================
--- branches/testFACT++branch/src/fitsselect.cc	(revision 18277)
+++ branches/testFACT++branch/src/fitsselect.cc	(revision 18277)
@@ -0,0 +1,137 @@
+#include "Configuration.h"
+
+#include "externals/factfits.h"
+#include "externals/factofits.h"
+
+using namespace std;
+
+void PrintUsage()
+{
+    cout <<
+        "fitsselect is....\n"
+        "\n"
+        "Usage: fitsselect rawfile eventlist outfile\n"
+        "\n"
+        ;
+    cout << endl;
+}
+
+void SetupConfiguration(Configuration& conf)
+{
+    po::options_description configs("Fitsdump options");
+    configs.add_options()
+        ("infile",    var<string>()->required(), "")
+        ("outfile",   var<string>()->required(), "")
+        ("eventlist", var<string>()->required(), "")
+        ;
+
+    po::positional_options_description p;
+    p.add("infile",    1); // The first positional options
+    p.add("eventlist", 1); // The second positional options
+    p.add("outfile",  -1); // All others
+
+    conf.AddOptions(configs);
+    conf.SetArgumentPositions(p);
+}
+
+int main(int argc, const char** argv)
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv))//, PrintHelp))
+        return -1;
+
+    const string infile = conf.Get<string>("infile");
+
+    const string outfile   = conf.Get<string>("outfile");
+    const string eventlist = conf.Get<string>("eventlist");
+
+    set<uint32_t> list;
+    ifstream fin(eventlist.c_str());
+    while (1)
+    {
+        uint32_t evt;
+        fin >> evt;
+        if (!fin)
+            break;
+
+        list.insert(evt);
+    }
+
+    factfits  inf(infile.c_str(), "Events", false);
+    factofits outf(outfile.c_str());
+
+    outf.SetDrsCalibration(inf.GetOffsetCalibration());
+
+    uint32_t rowWidth = inf.HasKey("ZNAXIS1") ? inf.GetUInt("ZNAXIS1") : inf.GetUInt("ZNAXIS2");
+
+    vector<char> buffer(rowWidth);
+
+    outf.CopyKeys(inf);
+
+    vector<pair<void*, char*>> pointers;
+
+    unsigned int count = 0;
+
+    uint32_t *evtNum = 0;
+
+    const fits::Table::Columns& columns = inf.GetColumns();
+    for (fits::Table::Columns::const_iterator it=columns.begin(); it!=columns.end(); it++)
+    {
+        const fits::Table::Column &col = it->second;
+
+        if (it->first=="Data" || it->first=="TimeMarker")
+        {
+            vector<uint16_t> processing(2);
+            processing[0] = FITS::kFactSmoothing;
+            processing[1] = FITS::kFactHuffman16;
+
+            const FITS::Compression comp(processing, FITS::kOrderByRow);
+
+            outf.AddColumn(comp, col.num, col.type, it->first, col.unit, "");
+        }
+        else
+            outf.AddColumn(col.num, col.type, it->first, col.unit, "");
+
+        void *ptr = inf.SetPtrAddress(it->first);
+        pointers.emplace_back(ptr, buffer.data()+count);
+        count += col.num*col.size;
+
+        if (it->first=="EventNum")
+            evtNum = reinterpret_cast<uint32_t*>(ptr);
+    }
+
+    if (evtNum==0)
+        throw runtime_error("Colum EventNum not found.");
+
+    if (count!=rowWidth)
+        throw runtime_error("Size mismatch.");
+
+    inf.PrintColumns();
+
+    outf.WriteTableHeader(inf.GetStr("EXTNAME").c_str());
+
+    while (inf.GetNextRow())
+    {
+        if (list.find(*evtNum)==list.end())
+            continue;
+
+        int i=0;
+        for (fits::Table::Columns::const_iterator it=columns.begin(); it!= columns.end(); it++, i++)
+            memcpy(pointers[i].second, pointers[i].first, it->second.num*it->second.size);
+
+        outf.WriteRow(buffer.data(), rowWidth);
+        if (!outf)
+            throw runtime_error("Write stream failure.");
+    }
+
+    if (!inf.good())
+        throw runtime_error("Read stream failure.");
+
+    if (!outf.close())
+        throw runtime_error("Write stream failure.");
+
+    return 0;
+}
Index: branches/testFACT++branch/src/fsc.cc
===================================================================
--- branches/testFACT++branch/src/fsc.cc	(revision 18277)
+++ branches/testFACT++branch/src/fsc.cc	(revision 18277)
@@ -0,0 +1,303 @@
+#include <iostream>
+#include <string>
+#include <boost/asio.hpp>
+#include <boost/bind.hpp>
+#include <boost/lexical_cast.hpp>
+#include <boost/asio/deadline_timer.hpp>
+#include <boost/enable_shared_from_this.hpp>
+
+using boost::lexical_cast;
+
+#include "Time.h"
+
+#include "HeadersFTM.h"
+
+using namespace std;
+using namespace FTM;
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+namespace dummy = ba::placeholders;
+
+using boost::lexical_cast;
+using ba::ip::tcp;
+
+// ------------------------------------------------------------------------
+
+
+// ------------------------------------------------------------------------
+
+class tcp_connection : public ba::ip::tcp::socket, public boost::enable_shared_from_this<tcp_connection>
+{
+private:
+
+    /*
+    void AsyncRead(ba::mutable_buffers_1 buffers)
+    {
+        ba::async_read(*this, buffers,
+                       boost::bind(&tcp_connection::HandleReceivedData, shared_from_this(),
+                                   dummy::error, dummy::bytes_transferred));
+    }*/
+
+    void AsyncWrite(const ba::const_buffers_1 &buffers)
+    {
+        ba::async_write(*this, buffers,
+                        boost::bind(&tcp_connection::HandleSentData, shared_from_this(),
+                                    dummy::error, dummy::bytes_transferred));
+    }
+    void AsyncWait(ba::deadline_timer &timer, int seconds,
+                               void (tcp_connection::*handler)(const bs::error_code&))// const
+    {
+        timer.expires_from_now(boost::posix_time::seconds(seconds));
+        timer.async_wait(boost::bind(handler, shared_from_this(), dummy::error));
+    }
+
+    ba::deadline_timer fTriggerSendData;
+
+    // The constructor is prvate to force the obtained pointer to be shared
+    tcp_connection(ba::io_service& ioservice) : ba::ip::tcp::socket(ioservice),
+        fTriggerSendData(ioservice)
+    {
+    }
+
+    // Callback when writing was successfull or failed
+    void HandleSentData(const boost::system::error_code& error, size_t bytes_transferred)
+    {
+        cout << "Data sent: (transmitted=" << bytes_transferred << ") rc=" << error.message() << " (" << error << ")" << endl;
+    }
+
+    stringstream fBuffer;
+
+    void SendData()
+    {
+        fBuffer.str("");
+        fBuffer <<
+            "status: 00000538 \n"
+            "time_s: 764.755 \n"
+            "VOLTAGES \n"
+            " \n"
+            "enable:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111  00001111 \n"
+            "  done:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111  00001111 \n"
+            "values:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 \n"
+            "RESISTANCES \n"
+            " \n"
+            "enable:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 \n"
+            "  done:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 \n"
+            "values: \n"
+            "1000.16 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 \n"
+            "3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 \n"
+            "1197.07 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 \n"
+            "558.59 677.92 817.26 989.39 1200.35 1503.06 1799.90 2204.18 \n"
+            "3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 \n"
+            "3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 \n"
+            "3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 \n"
+            "3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 3199.99 \n"
+            "end.\n";
+
+        AsyncWrite(ba::buffer(ba::const_buffer(fBuffer.str().c_str(), fBuffer.str().length())));
+    }
+
+    void TriggerSendData(const boost::system::error_code &ec)
+    {
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            return;
+        }
+
+        if (ec==ba::error::basic_errors::operation_aborted)
+            return;
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fTriggerSendData.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        // The deadline has passed.
+        SendData();
+
+        AsyncWait(fTriggerSendData, 1, &tcp_connection::TriggerSendData);
+    }
+
+
+public:
+    typedef boost::shared_ptr<tcp_connection> shared_ptr;
+
+    static shared_ptr create(ba::io_service& io_service)
+    {
+        return shared_ptr(new tcp_connection(io_service));
+    }
+
+    void start()
+    {
+        AsyncWait(fTriggerSendData, 1, &tcp_connection::TriggerSendData);
+    }
+};
+
+
+class tcp_server : public tcp::acceptor
+{
+public:
+    tcp_server(ba::io_service& ioservice, int port) :
+        tcp::acceptor(ioservice, tcp::endpoint(tcp::v4(), port))
+
+    {
+        // We could start listening for more than one connection
+        // here, but since there is only one handler executed each time
+        // it would not make sense. Before one handle_accept is not
+        // finished no new handle_accept will be called.
+        // Workround: Start a new thread in handle_accept
+        start_accept();
+    }
+
+private:
+    void start_accept()
+    {
+        cout << "Start accept..." << flush;
+        tcp_connection::shared_ptr new_connection = tcp_connection::create(/*acceptor_.*/get_io_service());
+
+        // This will accept a connection without blocking
+        async_accept(*new_connection,
+                     boost::bind(&tcp_server::handle_accept,
+                                 this,
+                                 new_connection,
+                                 ba::placeholders::error));
+
+        cout << "start-done." << endl;
+    }
+
+    void handle_accept(tcp_connection::shared_ptr new_connection, const boost::system::error_code& error)
+    {
+        // The connection has been accepted and is now ready to use
+
+        // not installing a new handler will stop run()
+        cout << "Handle accept..." << flush;
+        if (!error)
+        {
+            new_connection->start();
+
+            // The is now an open connection/server (tcp_connection)
+            // we immediatly schedule another connection
+            // This allowed two client-connection at the same time
+            start_accept();
+        }
+        cout << "handle-done." << endl;
+    }
+};
+
+int main(int argc, const char **argv)
+{
+    //try
+    {
+        ba::io_service io_service;
+
+        int Port = argc==2 ? lexical_cast<int>(argv[1]) : 5000;
+
+        tcp_server server(io_service, Port);
+        //  ba::add_service(io_service, &server);
+        //  server.add_service(...);
+        //cout << "Run..." << flush;
+
+        // Calling run() from a single thread ensures no concurrent access
+        // of the handler which are called!!!
+        io_service.run();
+
+        //cout << "end." << endl;
+    }
+    /*catch (std::exception& e)
+    {
+        std::cerr << e.what() << std::endl;
+    }*/
+
+    return 0;
+}
+/*  ====================== Buffers ===========================
+
+char d1[128]; ba::buffer(d1));
+std::vector<char> d2(128); ba::buffer(d2);
+boost::array<char, 128> d3; by::buffer(d3);
+
+// --------------------------------
+char d1[128];
+std::vector<char> d2(128);
+boost::array<char, 128> d3;
+
+boost::array<mutable_buffer, 3> bufs1 = {
+   ba::buffer(d1),
+   ba::buffer(d2),
+   ba::buffer(d3) };
+sock.read(bufs1);
+
+std::vector<const_buffer> bufs2;
+bufs2.push_back(boost::asio::buffer(d1));
+bufs2.push_back(boost::asio::buffer(d2));
+bufs2.push_back(boost::asio::buffer(d3));
+sock.write(bufs2);
+
+
+// ======================= Read functions =========================
+
+ba::async_read_until --> delimiter
+
+streambuf buf; // Ensure validity until handler!
+by::async_read(s, buf, ....);
+
+ba::async_read(s, ba:buffer(data, size), handler);
+ // Single buffer
+ boost::asio::async_read(s,
+                         ba::buffer(data, size),
+ compl-func -->          ba::transfer_at_least(32),
+                         handler);
+
+ // Multiple buffers
+boost::asio::async_read(s, buffers,
+ compl-func -->         boost::asio::transfer_all(),
+                        handler);
+                        */
+
+// ================= Others ===============================
+
+        /*
+        strand   Provides serialised handler execution.
+        work     Class to inform the io_service when it has work to do.
+
+
+io_service::
+dispatch   Request the io_service to invoke the given handler.
+poll       Run the io_service's event processing loop to execute ready
+           handlers.
+poll_one   Run the io_service's event processing loop to execute one ready
+           handler.
+post       Request the io_service to invoke the given handler and return
+           immediately.
+reset      Reset the io_service in preparation for a subsequent run()
+           invocation.
+run        Run the io_service's event processing loop.
+run_one    Run the io_service's event processing loop to execute at most
+           one handler.
+stop       Stop the io_service's event processing loop.
+wrap       Create a new handler that automatically dispatches the wrapped
+           handler on the io_service.
+
+strand::         The io_service::strand class provides the ability to
+                 post and dispatch handlers with the guarantee that none
+                 of those handlers will execute concurrently.
+
+dispatch         Request the strand to invoke the given handler.
+get_io_service   Get the io_service associated with the strand.
+post             Request the strand to invoke the given handler and return
+                 immediately.
+wrap             Create a new handler that automatically dispatches the
+                 wrapped handler on the strand.
+
+work::           The work class is used to inform the io_service when
+                 work starts and finishes. This ensures that the io_service's run() function will not exit while work is underway, and that it does exit when there is no unfinished work remaining.
+get_io_service   Get the io_service associated with the work.
+work             Constructor notifies the io_service that work is starting.
+
+*/
+
+
Index: branches/testFACT++branch/src/fscctrl.cc
===================================================================
--- branches/testFACT++branch/src/fscctrl.cc	(revision 18277)
+++ branches/testFACT++branch/src/fscctrl.cc	(revision 18277)
@@ -0,0 +1,991 @@
+#include <functional>
+
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Console.h"
+#include "Converter.h"
+#include "externals/Interpolator2D.h"
+
+#include "tools.h"
+
+#include "HeadersFSC.h"
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+using namespace FSC;
+
+// ------------------------------------------------------------------------
+
+class ConnectionFSC : public Connection
+{
+    FSC::BinaryOutput_t fMsg;       // A single message
+
+    bool fIsVerbose;
+    bool fIsAutoReconnect;
+
+    size_t fNumConsecutiveErrors;   // Number of consecutive messages with errors
+    size_t fNumConsecutiveMessages; // Number of consecutive message which are ok
+
+    boost::asio::deadline_timer fReconnectTimeout;
+
+protected:
+    vector<Interpolator2D::vec> fPositionsSensors;
+    vector<Interpolator2D::vec> fPositionsBias;
+
+    virtual void UpdateTemp(float, const vector<float> &)
+    {
+    }
+
+    virtual void UpdateHum(float, const vector<float>&) 
+    {
+    }
+
+    virtual void UpdateVolt(float, const vector<float>&) 
+    {
+    }
+
+    virtual void UpdateCur(float, const vector<float>&) 
+    {
+    }
+
+private:
+    //
+    // From: http://de.wikipedia.org/wiki/Pt100
+    //
+    double GetTempPT1000(double R) const 
+    {
+        // This is precise within the range 5degC and 25degC
+        // by 3e-3 degC. At 0degC and 30degC it overestimates the
+        // temperature by 0.025 degC. At -10degC it is ~0.9degC
+        // and at 40degC ~0.05degC.
+        const double x = R/1000;
+        return -193.804 + 96.0651*x + 134.673*x*x - 36.9091*x*x*x;
+
+        //for a reasonable range:
+        // R=970 -> -7.6 degC
+        // R=1300 -> 77.6 degC
+
+        //const double R0 = 1000; // 1kOhm
+        //const double a = 3.893e-3;
+        //return (R/R0 - 1)/a;
+    }
+
+    bool CheckChecksum()
+    {
+        const uint16_t volt_checksum = Tools::Fletcher16(fMsg.adc_values,    kNumVoltageChannels);
+        const uint16_t resi_checksum = Tools::Fletcher16(fMsg.ad7719_values, kNumResistanceChannels);
+
+        const bool volt_ok = volt_checksum == fMsg.adc_values_checksum;
+        const bool resi_ok = resi_checksum == fMsg.ad7719_values_checksum;
+
+        if (volt_ok && resi_ok)
+            return true;
+
+        fNumConsecutiveErrors++;
+
+        ostringstream out;
+        out << "Checksum error (V:";
+        out << hex << setfill('0');
+
+        if (volt_ok)
+            out << "----|----";
+        else
+        {
+            out << setw(4) << volt_checksum;
+            out << "|";
+            out << setw(4) << fMsg.adc_values_checksum;
+        }
+
+        out << ", R:";
+
+        if (resi_ok)
+            out << "----|----";
+        else
+        {
+            out << setw(4) << resi_checksum;
+            out << "|";
+            out << setw(4) << fMsg.ad7719_values_checksum;
+        }
+
+        out << ",  " << dec;
+        out << "Nok=" << fNumConsecutiveMessages << ", ";
+        out << "Nerr=" << fNumConsecutiveErrors << ")";
+
+        Warn(out);
+
+        fNumConsecutiveMessages = 0;
+
+        return false;
+    }
+
+    bool ProcessMessage()
+    {
+        if (fIsVerbose)
+           Out() << "Received one_message of FSC::BinaryOutput_t ... will now process it" << endl;
+
+        if (!CheckChecksum())
+            return false;
+
+        // That looks a bit odd because it copies the values twice for no reason.
+        // This is historical and keeps the following code consistent with the
+        // previous code which was reading ascii data from the fsc
+        vector<float> volt(  fMsg.adc_values,    fMsg.adc_values    + kNumVoltageChannels);
+        vector<float> resist(fMsg.ad7719_values, fMsg.ad7719_values + kNumResistanceChannels);
+
+        const float time = fMsg.time_sec + fMsg.time_ms/1000.;
+
+        // We want to convert the pure ADC values from the FSC board to mV and kOhm respectively
+        // So we do:
+        for (unsigned int i=0; i<volt.size(); i++)
+            volt[i] /= 10;
+
+        for (unsigned int i=0; i<resist.size(); i++)
+            resist[i] *= (6.25 * 1024) / (1 << 25);
+
+        int mapv[] =
+        {
+            0, 16, 24,  8,
+            1, 17, 25,  9,
+            2, 18, 26, 10,
+            //
+            3, 19, 27, 11,
+            4, 20, 28, 12,
+            5, 21, 29, 13,
+            //
+            32, 36, 33, 34, 37, 38,
+            //
+            -1
+        };
+
+        int mapc[] =
+        {
+            40, 56, 64, 48,
+            41, 57, 65, 49,
+            42, 58, 66, 50,
+            //
+            43, 59, 67, 51,
+            44, 60, 68, 52,
+            45, 61, 69, 53,
+            //
+            72, 76, 73, 74, 77, 78,
+            //
+            -1
+        };
+
+
+        int maprh[] =
+        {
+            80, 81, 82, 83, -1
+        };
+
+        int offrh[] =
+        {
+            821, 822, 816, 822,
+        };
+
+        int mapt[] =
+        {
+            // sensor compartment temperatures
+            0,  1,  2,  3,  4,  5,  6, 56, 57, 58, 59, 60,
+            61, 62, 32, 33, 34, 35, 36, 63, 37, 38, 39, 24,
+            25, 26, 27, 28, 29, 30, 31,
+            // crate temperatures (0-3, back/front)
+            12, 13, 52, 53, 44, 46, 20, 21,
+            //crate power supply temperatures (0-3)
+            8, 9, 48, 49, 40, 41, 16, 17,
+            // aux power supplies (FTM-side top/bot, FSC-side top/bot)
+            45, 50, 19, 42,
+            // backpanel (FTM-side top/bot, FSC-side top/bot)
+            11, 51, 18, 43,
+            // switch boxes (top front/back, bottom front/back)
+            15, 14, 47, 10,
+            //
+            -1
+        };
+
+        vector<float> voltages;
+        vector<float> currents;
+        vector<float> humidities;
+        vector<float> temperatures;
+
+        for (int *pv=mapv; *pv>=0; pv++)
+            voltages.push_back(volt[*pv]*0.001);
+
+        for (int *pc=mapc; *pc>=0; pc++)
+            currents.push_back(volt[*pc]*0.005);
+
+        for (int idx=0; idx<4; idx++)
+        {
+            voltages[idx +8] *= -1;
+            voltages[idx+20] *= -1;
+            currents[idx +8] *= -1;
+            currents[idx+20] *= -1;
+        }
+        voltages[12] *=  2;
+        voltages[13] *=  2;
+        voltages[14] *=  2;
+        voltages[15] *=  2;
+
+        voltages[24] *=  2;
+        voltages[25] *=  2;
+
+        voltages[27] *= -1;
+        voltages[29] *= -1;
+
+        currents[27] *= -1;
+        currents[29] *= -1;
+
+        int idx=0;
+        for (int *ph=maprh; *ph>=0; ph++, idx++)
+            humidities.push_back((volt[*ph]-offrh[idx])*0.0313);
+
+        //1019=4.8
+        //1005=1.3
+        //970=-7.6
+        //1300=76
+        for (int *pt=mapt; *pt>=0; pt++)
+            //temperatures.push_back(resist[*pt]>800&&resist[*pt]<2000 ? GetTempPT1000(resist[*pt]) : 0);
+            temperatures.push_back(resist[*pt]>970&&resist[*pt]<1300 ? GetTempPT1000(resist[*pt]) : 0);
+            //temperatures.push_back(resist[*pt]>1019&&resist[*pt]<1300 ? GetTempPT1000(resist[*pt]) : 0);
+
+        // 0 = 3-(3+0)%4
+        // 3 = 3-(3+1)%4
+        // 2 = 3-(3+2)%4
+        // 1 = 3-(3+3)%4
+
+        /*
+         index	unit	offset	scale	crate	for board:
+         0	mV	0	1	0	FAD  3.3V
+         24	mV	0	1	1	FAD  3.3V
+         16	mV	0	1	2	FAD  3.3V
+         8	mV	0	1	3	FAD  3.3V
+
+         1	mV	0	1	0	FAD  3.3V
+         25	mV	0	1	1	FAD  3.3V
+         17	mV	0	1	2	FAD  3.3V
+         9	mV	0	1	3	FAD  3.3V
+
+         2	mV	0	-1	0	FAD  -2.0V
+         26	mV	0	-1	1	FAD  -2.0V
+         18	mV	0	-1	2	FAD  -2.0V
+         10	mV	0	-1	3	FAD  -2.0V
+
+         --
+
+         3	mV	0	1	0	FPA  5.0V
+         27	mV	0	1	1	FPA  5.0V
+         19	mV	0	1	2	FPA  5.0V
+         11	mV	0	1	3	FPA  5.0V
+
+         4	mV	0	1	0	FPA  3.3V
+         28	mV	0	1	1	FPA  3.3V
+         20	mV	0	1	2	FPA  3.3V
+         12	mV	0	1	3	FPA  3.3V
+
+         5	mV	0	-1	0	FPA  -3.3V
+         29	mV	0	-1	1	FPA  -3.3V
+         21	mV	0	-1	2	FPA  -3.3V
+         13	mV	0	-1	3	FPA  -3.3V
+
+         --
+
+         32	mV	0	1	bottom	ETH   5V
+         36	mV	0	1	top	ETH   5V
+
+         33	mV	0	1	bottom	FTM   3.3V
+         34	mV	0	-1	bottom	FTM  -3.3V
+
+         37	mV	0	1	top	FFC   3.3V
+         38	mV	0	-1	top	FLP  -3.3V
+
+         -----
+
+         40	mA	0	5	0	FAD
+         64	mA	0	5	1	FAD
+         56	mA	0	5	2	FAD
+         48	mA	0	5	3	FAD
+
+         41	mA	0	5	0	FAD
+         65	mA	0	5	1	FAD
+         57	mA	0	5	2	FAD
+         49	mA	0	5	3	FAD
+
+         42	mA	0	-5	0	FAD
+         66	mA	0	-5	1	FAD
+         58	mA	0	-5	2	FAD
+         50	mA	0	-5	3	FAD
+
+         --
+
+         43	mA	0	5	0	FPA
+         67	mA	0	5	1	FPA
+         59	mA	0	5	2	FPA
+         51	mA	0	5	3	FPA
+
+         44	mA	0	5	0	FPA
+         68	mA	0	5	1	FPA
+         60	mA	0	5	2	FPA
+         52	mA	0	5	3	FPA
+
+         45	mA	0	-5	0	FPA
+         69	mA	0	-5	1	FPA
+         61	mA	0	-5	2	FPA
+         53	mA	0	-5	3	FPA
+
+         ---
+
+         72	mA	0	5	bottom	ETH
+         76	mA	0	5	top	ETH
+
+         73	mA	0	5	bottom	FTM
+         74	mA	0	-5	bottom	FTM
+
+         77	mA	0	5	top	FFC
+         78	mA	0	-5	top	FLP
+
+         ----
+
+         80	% RH	-821	0.0313		FSP000
+         81	% RH	-822	0.0313		FSP221
+         82	% RH	-816	0.0313		Sector0
+         83	% RH	-822	0.0313		Sector2
+         */
+
+        // TEMPERATURES
+        // 31 x Sensor plate
+        //  8 x Crate
+        // 12 x PS
+        //  4 x Backpanel
+        //  4 x Switchbox
+
+
+
+        /*
+         0	ohms	FSP	000
+         1	ohms	FSP	010
+         2	ohms	FSP	023
+         3	ohms	FSP	043
+         4	ohms	FSP	072
+         5	ohms	FSP	080
+         6	ohms	FSP	092
+         56	ohms	FSP	103
+         57	ohms	FSP	111
+         58	ohms	FSP	121
+         59	ohms	FSP	152
+         60	ohms	FSP	163
+         61	ohms	FSP	171
+         62	ohms	FSP	192
+         32	ohms	FSP	200
+         33	ohms	FSP	210
+         34	ohms	FSP	223
+         35	ohms	FSP	233
+         36	ohms	FSP	243
+         63	ohms	FSP	252
+         37	ohms	FSP	280
+         38	ohms	FSP	283
+         39	ohms	FSP	293
+         24	ohms	FSP	311
+         25	ohms	FSP	321
+         26	ohms	FSP	343
+         27	ohms	FSP	352
+         28	ohms	FSP	363
+         29	ohms	FSP	371
+         30	ohms	FSP	381
+         31	ohms	FSP	392
+         8	ohms	Crate0	?
+         9	ohms	Crate0	?
+         48	ohms	Crate1	?
+         49	ohms	Crate1	?
+         40	ohms	Crate2	?
+         41	ohms	Crate2	?
+         16	ohms	Crate3	?
+         17	ohms	Crate3	?
+         10	ohms	PS	Crate 0
+         11	ohms	PS	Crate 0
+         50	ohms	PS	Crate 1
+         51	ohms	PS	Crate 1
+         42	ohms	PS	Crate 2
+         43	ohms	PS	Crate 2
+         18	ohms	PS	Crate 3
+         19	ohms	PS	Crate 3
+         12	ohms	PS	Aux0
+         52	ohms	PS	Aux0
+         20	ohms	PS	Aux1
+         44	ohms	PS	Aux1
+         13	ohms	Backpanel	?
+         21	ohms	Backpanel	?
+         45	ohms	Backpanel	?
+         53	ohms	Backpanel	?
+         14	ohms	Switchbox0	?
+         15	ohms	Switchbox0	?
+         46	ohms	Switchbox1	?
+         47	ohms	Switchbox1	?
+         7	ohms	nc	nc
+         22	ohms	nc	nc
+         23	ohms	nc	nc
+         54	ohms	nc	nc
+         55	ohms	nc	nc
+         */
+
+        if (fIsVerbose)
+        {
+            for (size_t i=0; i<resist.size(); i++)
+                //if (resist[i]>800 && resist[i]<2000)
+                if (resist[i]>970 && resist[i]<1300)
+                //if (resist[i]>1019 && resist[i]<1300)
+                    Out() << setw(2) << i << " - " << setw(4) << (int)resist[i] << ": " << setprecision(1) << fixed << GetTempPT1000(resist[i]) << endl;
+                else
+                    Out() << setw(2) << i << " - " << setw(4) << (int)resist[i] << ": " << "----" << endl;
+        }
+
+        UpdateTemp(time, temperatures);
+        UpdateVolt(time, voltages);
+        UpdateCur( time, currents);
+        UpdateHum( time, humidities);
+
+        fNumConsecutiveErrors = 0;
+        fNumConsecutiveMessages++;
+
+        return true;
+    }
+
+    void StartRead()
+    {
+        ba::async_read(*this, ba::buffer(&fMsg, sizeof(FSC::BinaryOutput_t)),
+                       boost::bind(&ConnectionFSC::HandleRead, this,
+                                   dummy::error, dummy::bytes_transferred));
+
+        AsyncWait(fInTimeout, 35000, &Connection::HandleReadTimeout); // 30s
+    }
+
+    void HandleRead(const boost::system::error_code& err, size_t bytes_received)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+                return;
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+            return;
+        }
+
+        if (!ProcessMessage())
+        {
+            fIsAutoReconnect = true;
+            fReconnectTimeout.expires_from_now(boost::posix_time::seconds(10));
+            fReconnectTimeout.async_wait(boost::bind(&ConnectionFSC::HandleReconnectTimeout,
+                                                     this, dummy::error));
+            PostClose(true);
+            return;
+        }
+
+        StartRead();
+    }
+
+    void ConnectionEstablished()
+    {
+        fNumConsecutiveErrors   = 0;
+        fNumConsecutiveMessages = 0;
+        fIsAutoReconnect = false;
+
+        StartRead();
+    }
+
+    void HandleReconnectTimeout(const bs::error_code &)
+    {
+        fIsAutoReconnect = false;
+    }
+
+    void HandleReadTimeout(const bs::error_code &error)
+    {
+        if (error==ba::error::basic_errors::operation_aborted)
+            return;
+
+        if (error)
+        {
+            ostringstream str;
+            str << "Read timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose();
+            return;
+
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fInTimeout.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        Error("Timeout reading data from "+URL());
+
+        PostClose();
+    }
+
+public:
+    ConnectionFSC(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsVerbose(false), fIsAutoReconnect(false), fReconnectTimeout(ioservice)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+    }
+
+    void SetPositionsSensors(const vector<Interpolator2D::vec> &vec)
+    {
+        fPositionsSensors = vec;
+    }
+
+    void SetPositionsBias(const vector<Interpolator2D::vec> &vec)
+    {
+        fPositionsBias = vec;
+    }
+
+    bool IsOpen() const
+    {
+        return IsConnected() || fIsAutoReconnect;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimFSC : public ConnectionFSC
+{
+private:
+
+    vector<double> fLastRms;
+
+    DimDescribedService fDimTemp;
+    DimDescribedService fDimTemp2;
+    DimDescribedService fDimHum;
+    DimDescribedService fDimVolt;
+    DimDescribedService fDimCurrent;
+
+    void Update(DimDescribedService &svc, vector<float> data, float time) const
+    {
+        data.insert(data.begin(), time);
+        svc.Update(data);
+    }
+
+    void UpdateTemp(float time, const vector<float> &temp)
+    {
+        Update(fDimTemp, temp, time);
+
+        vector<double> T;
+        vector<Interpolator2D::vec> xy;
+
+        T.reserve(31);
+        xy.reserve(31);
+
+        double avg = 0;
+        double rms = 0;
+
+        // Create a list of all valid sensors
+        for (int i=0; i<31; i++)
+            if (temp[i]!=0)
+            {
+                T.emplace_back(temp[i]);
+                xy.emplace_back(fPositionsSensors[i]);
+
+                avg += temp[i];
+                rms += temp[i]*temp[i];
+            }
+
+        if (T.size()==0)
+        {
+            Warn("No valid sensor temperatures.");
+            return;
+        }
+
+        avg /= T.size();
+        rms /= T.size();
+        rms -= avg*avg;
+        rms = rms<0 ? 0 : sqrt(rms);
+
+        // Clean broken reports
+        const double cut_val = 0.015;
+        const bool reject = rms>4 || (fabs(fLastRms[0]-fLastRms[1])<=cut_val && fabs(rms-fLastRms[0])>cut_val);
+
+        fLastRms[1] = fLastRms[0];
+        fLastRms[0] = rms;
+
+        if (reject)
+        {
+            Warn("Suspicious temperature values rejecte for BIAS_TEMP.");
+            return;
+        }
+
+        // Create interpolator for the corresponding sensor positions
+        Interpolator2D inter(xy);
+
+        // Calculate weights for the output positions
+        if (!inter.SetOutputGrid(fPositionsBias))
+        {
+            Warn("Temperature values rejecte for BIAS_TEMP (calculation of weights failed).");
+            return;
+        }
+
+        // Interpolate the data
+        T = inter.Interpolate(T);
+
+        avg = 0;
+        rms = 0;
+        for (int i=0; i<320; i++)
+        {
+            avg += T[i];
+            rms += T[i]*T[i];
+        }
+
+        avg /= 320;
+        rms /= 320;
+        rms -= avg*avg;
+        rms = rms<0 ? 0 : sqrt(rms);
+
+        vector<float> out;
+        out.reserve(322);
+        out.assign(T.cbegin(), T.cend());
+        out.emplace_back(avg);
+        out.emplace_back(rms);
+
+        // Update the Dim service with the interpolated positions
+        Update(fDimTemp2, out, time);
+    }
+
+    void UpdateHum(float time, const vector<float> &hum)
+    {
+        Update(fDimHum, hum, time);
+    }
+
+    void UpdateVolt(float time, const vector<float> &volt)
+    {
+        Update(fDimVolt, volt, time);
+    }
+
+    void UpdateCur(float time, const vector<float> &curr)
+    {
+        Update(fDimCurrent, curr, time);
+    }
+
+public:
+    ConnectionDimFSC(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionFSC(ioservice, imp), fLastRms(2),
+        fDimTemp   ("FSC_CONTROL/TEMPERATURE", "F:1;F:31;F:8;F:8;F:4;F:4;F:4",
+                    "|t[s]:FSC uptime"
+                    "|T_sens[deg C]:Sensor compartment temperatures"
+                    "|T_crate[deg C]:Temperatures crate 0 (back/front), 1 (b/f), 2 (b/f), 3 (b/f)"
+                    "|T_ps[deg C]:Temp power supplies crate 0 (back/front), 1, 2, 3"
+                    "|T_aux[deg C]:Auxiliary power supply temperatures FTM (top/bottom), FSC (t/b)"
+                    "|T_back[deg C]:FTM backpanel temperatures FTM (top/bottom), FSC (top/bottom)"
+                    "|T_eth[deg C]:Ethernet switches temperatures top (front/back), bottom (f/b)"),
+        fDimTemp2  ("FSC_CONTROL/BIAS_TEMP", "F:1;F:320;F:1;F:1",
+                    "|t[s]:FSC uptime"
+                    "|T[deg C]:Interpolated temperatures at bias patch positions"
+                    "|T_avg[deg C]:Average temperature calculated from all patches"
+                    "|T_rms[deg C]:Temperature RMS calculated from all patches"),
+        fDimHum    ("FSC_CONTROL/HUMIDITY", "F:1;F:4",
+                    "|t[s]:FSC uptime"
+                    "|H[%]:Humidity sensors readout"),
+        fDimVolt   ("FSC_CONTROL/VOLTAGE",
+                    "F:1;F:4;F:4;F:4;F:4;F:4;F:4;F:2;F:2;F:1;F:1",
+                    "|t[s]:FSC uptime"
+                    "|FAD_Ud[V]:FAD digital (crate 0-3)"
+                    "|FAD_Up[V]:FAD positive (crate 0-3)"
+                    "|FAD_Un[V]:FAD negative (crate 0-3)"
+                    "|FPA_Ud[V]:FPA digital (crate 0-3)"
+                    "|FPA_Up[V]:FPA positive (crate 0-3)"
+                    "|FPA_Un[V]:FPA negative (crate 0-3)"
+                    "|ETH_U[V]:Ethernet switch (pos/neg)"
+                    "|FTM_U[V]:FTM - trigger master (pos/neg)"
+                    "|FFC_U[V]:FFC"
+                    "|FLP_U[V]:FLP - light pulser"),
+        fDimCurrent("FSC_CONTROL/CURRENT", "F:1;F:4;F:4;F:4;F:4;F:4;F:4;F:2;F:2;F:1;F:1",
+                    "|t[s]:FSC uptime"
+                    "|FAD_Id[A]:FAD digital (crate 0-3)"
+                    "|FAD_Ip[A]:FAD positive (crate 0-3)"
+                    "|FAD_In[A]:FAD negative (crate 0-3)"
+                    "|FPA_Id[A]:FPA digital (crate 0-3)"
+                    "|FPA_Ip[A]:FPA positive (crate 0-3)"
+                    "|FPA_In[A]:FPA negative (crate 0-3)"
+                    "|ETH_I[A]:Ethernet switch (pos/neg)"
+                    "|FTM_I[A]:FTM - trigger master (pos/neg)"
+                    "|FFC_I[A]:FFC"
+                    "|FLP_I[A]:FLP - light pulser")
+    {
+        fLastRms[0] = 1.5;
+    }
+
+    // A B [C] [D] E [F] G H [I] J K [L] M N O P Q R [S] T U V W [X] Y Z
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineFSC : public StateMachineAsio<T>
+{
+private:
+    S fFSC;
+
+    int Disconnect()
+    {
+        // Close all connections
+        fFSC.PostClose(false);
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fFSC.PostClose(false);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        ba::io_service::poll();
+
+        if (evt.GetBool())
+            fFSC.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fFSC.PostClose(true);
+
+        return T::GetCurrentState();
+    }
+
+    int Execute()
+    {
+        return fFSC.IsOpen() ? State::kConnected : State::kDisconnected;
+    }
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fFSC.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+public:
+    StateMachineFSC(ostream &out=cout) :
+        StateMachineAsio<T>(out, "FSC_CONTROL"), fFSC(*this, *this)
+    {
+        // State names
+        T::AddStateName(State::kDisconnected, "Disconnected",
+                     "FSC board not connected via ethernet.");
+
+        T::AddStateName(State::kConnected, "Connected",
+                     "Ethernet connection to FSC established.");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B:1")
+            (bind(&StateMachineFSC::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+
+        // Conenction commands
+        T::AddEvent("DISCONNECT", State::kConnected)
+            (bind(&StateMachineFSC::Disconnect, this))
+            ("disconnect from ethernet");
+
+        T::AddEvent("RECONNECT", "O", State::kDisconnected, State::kConnected)
+            (bind(&StateMachineFSC::Reconnect, this, placeholders::_1))
+            ("(Re)connect ethernet connection to FSC, a new address can be given"
+             "|[host][string]:new ethernet address in the form <host:port>");
+
+        fFSC.StartConnect();
+    }
+
+    void SetEndpoint(const string &url)
+    {
+        fFSC.SetEndpoint(url);
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fFSC.SetVerbose(!conf.Get<bool>("quiet"));
+
+        const string fname1 = conf.Get<string>("sensor-pos-file");
+        const auto v1 = Interpolator2D::ReadGrid(fname1);
+        if (v1.size() != 31)
+        {
+            T::Error("Reading sensor positions from "+fname1+"failed ("+to_string(v1.size())+")");
+            return 1;
+        }
+
+        const string fname2 = conf.Get<string>("patch-pos-file");
+        const auto v2 = Interpolator2D::ReadGrid(fname2);
+        if (v2.size() != 320)
+        {
+            T::Error("Reading bias patch positions from "+fname2+"failed ("+to_string(v2.size())+")");
+            return 1;
+        }
+
+        fFSC.SetPositionsSensors(v1);
+        fFSC.SetPositionsBias(v2);
+
+        SetEndpoint(conf.Get<string>("addr"));
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineFSC<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("FTM control options");
+    control.add_options()
+        ("no-dim",        po_bool(),  "Disable dim services")
+        ("addr,a",        var<string>("localhost:5000"),  "Network address of FSC")
+        ("sensor-pos-file", var<string>()->required(),  "File with the positions of the 31 temperature sensors")
+        ("patch-pos-file",  var<string>()->required(),  "File with the positions of the 320 bias patches")
+        ("quiet,q",       po_bool(true),  "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The fscctrl controls the FSC (FACT Slow Control) board.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: fscctrl [-c type] [OPTIONS]\n"
+        "  or:  fscctrl [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineFSC<StateMachine, ConnectionFSC>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+            if (conf.Get<bool>("no-dim"))
+                return RunShell<LocalStream, StateMachine, ConnectionFSC>(conf);
+            else
+                return RunShell<LocalStream, StateMachineDim, ConnectionDimFSC>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionFSC>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionFSC>(conf);
+        }
+        else
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim, ConnectionDimFSC>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim, ConnectionDimFSC>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/testFACT++branch/src/ftm.cc
===================================================================
--- branches/testFACT++branch/src/ftm.cc	(revision 18277)
+++ branches/testFACT++branch/src/ftm.cc	(revision 18277)
@@ -0,0 +1,713 @@
+#include <iostream>
+#include <string>
+#include <boost/asio.hpp>
+#include <boost/bind.hpp>
+#include <boost/lexical_cast.hpp>
+#include <boost/asio/deadline_timer.hpp>
+#include <boost/enable_shared_from_this.hpp>
+
+using boost::lexical_cast;
+
+#include "Time.h"
+#include "Converter.h"
+
+#include "Dim.h"
+#include "HeadersFTM.h"
+
+using namespace std;
+using namespace FTM;
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+namespace dummy = ba::placeholders;
+
+using boost::lexical_cast;
+using ba::ip::tcp;
+
+int Port = 0;
+
+// ------------------------------------------------------------------------
+
+
+// ------------------------------------------------------------------------
+
+class tcp_connection : public ba::ip::tcp::socket, public boost::enable_shared_from_this<tcp_connection>
+{
+private:
+
+    double fStartTime;
+
+    void AsyncRead(ba::mutable_buffers_1 buffers)
+    {
+        ba::async_read(*this, buffers,
+                       boost::bind(&tcp_connection::HandleReceivedData, shared_from_this(),
+                                   dummy::error, dummy::bytes_transferred));
+    }
+
+    void AsyncWrite(const ba::const_buffers_1 &buffers)
+    {
+        ba::async_write(*this, buffers,
+                        boost::bind(&tcp_connection::HandleSentData, shared_from_this(),
+                                    dummy::error, dummy::bytes_transferred));
+    }
+    void AsyncWait(ba::deadline_timer &timer, int seconds,
+                               void (tcp_connection::*handler)(const bs::error_code&))// const
+    {
+        timer.expires_from_now(boost::posix_time::milliseconds(seconds));
+        timer.async_wait(boost::bind(handler, shared_from_this(), dummy::error));
+    }
+
+    ba::deadline_timer fTriggerDynData;
+
+    // The constructor is prvate to force the obtained pointer to be shared
+    tcp_connection(ba::io_service& ioservice) : ba::ip::tcp::socket(ioservice),
+        fTriggerDynData(ioservice), fTriggerSendData(ioservice)
+    {
+        //deadline_.expires_at(boost::posix_time::pos_infin);
+
+        fHeader.fDelimiter=kDelimiterStart;
+        fHeader.fState=FTM::kFtmIdle|FTM::kFtmLocked;
+        fHeader.fBoardId=0xaffe;
+        fHeader.fFirmwareId=0x42;
+
+        fDelimiter = htons(kDelimiterEnd);
+
+        fStaticData.clear();
+
+        fStaticData.fMultiplicityPhysics = 1;
+        fStaticData.fMultiplicityCalib   = 40;
+        fStaticData.fWindowCalib         = 1;
+        fStaticData.fWindowPhysics       = 0;
+        fStaticData.fDelayTrigger        = 21;
+        fStaticData.fDelayTimeMarker     = 42;
+        fStaticData.fDeadTime            = 84;
+
+        fStaticData.fClockConditioner[0] = 100;
+        fStaticData.fClockConditioner[1] = 1;
+        fStaticData.fClockConditioner[2] = 8;
+        fStaticData.fClockConditioner[3] = 9;
+        fStaticData.fClockConditioner[4] = 11;
+        fStaticData.fClockConditioner[5] = 13;
+        fStaticData.fClockConditioner[6] = 14;
+        fStaticData.fClockConditioner[7] = 15;
+
+        fStaticData.fTriggerSequence = 1 | (2<<5) | (3<<10);
+
+        fStaticData.fGeneralSettings =
+            FTM::StaticData::kTrigger |
+            FTM::StaticData::kLPext   |
+            FTM::StaticData::kPedestal;
+
+        fStaticData.fActiveFTU[0] = 0x3ff;
+        fStaticData.fActiveFTU[3] = 0x3ff;
+
+        for (int i=0; i<40; i++)
+        {
+            for (int p=0; p<4; p++)
+                fStaticData[i].fEnable[p] = 0x1ff;
+
+            for (int p=0; p<5; p++)
+                fStaticData[i].fDAC[p]    = (p+1)*10;
+
+            fStaticData[i].fPrescaling    = 42;
+        }
+
+        for (unsigned long long i=0; i<40; i++)
+        {
+            fFtuList[i].fDNA      = (i<<48)|(i<<32)|(i<<16)|i;
+            fFtuList[i].fPingAddr = (1<<8) | i;
+        }
+
+        fFtuList[1].fPingAddr = (1<<9) | 1;
+        fFtuList[0].fPingAddr = 0;
+
+        fFtuList.fNumBoards = 19;
+        fFtuList.fNumBoardsCrate[0] = 9;
+        fFtuList.fNumBoardsCrate[1] = 0;
+        fFtuList.fNumBoardsCrate[2] = 0;
+        fFtuList.fNumBoardsCrate[3] = 10;
+    }
+
+    // Callback when writing was successfull or failed
+    void HandleSentData(const boost::system::error_code& error, size_t bytes_transferred)
+    {
+        cout << "Data sent: (transmitted=" << bytes_transferred << ") rc=" << error.message() << " (" << error << ")" << endl;
+    }
+
+    vector<uint16_t> fBufCommand;
+    vector<uint16_t> fBufHeader;
+    vector<uint16_t> fBufFtuList;
+    vector<uint16_t> fBufStaticData;
+    vector<uint16_t> fBufDynamicData;
+
+    vector<uint16_t> fCommand;
+    FTM::Header      fHeader;
+    FTM::FtuList     fFtuList;
+    FTM::StaticData  fStaticData;
+    FTM::DynamicData fDynamicData;
+
+    //vector<uint16_t> fStaticData;
+
+    uint16_t fDelimiter;
+    uint16_t fBufRegister;
+
+    uint16_t fCounter;
+    uint16_t fTimeStamp;
+
+    bool fReportsDisabled;
+
+    ba::deadline_timer fTriggerSendData;
+
+    void SendDynamicData()
+    {
+        if (fReportsDisabled)
+            return;
+
+        //if (fHeader.fState == FTM::kFtmRunning)
+        //    fDynamicData.fOnTimeCounter = lrint(Time().UnixTime()-fStartTime);
+
+        fDynamicData.fTempSensor[0] = (23. + (6.*rand()/RAND_MAX-3))*10;
+        fDynamicData.fTempSensor[1] = (55. + (6.*rand()/RAND_MAX-3))*10;
+        fDynamicData.fTempSensor[2] = (39. + (6.*rand()/RAND_MAX-3))*10;
+        fDynamicData.fTempSensor[3] = (42. + (6.*rand()/RAND_MAX-3))*10;
+
+        for (int i=0; i<40; i++)
+            for (int p=0; p<4; p++)
+                fDynamicData[i].fRatePatch[p] = (1000 + (float(rand())/RAND_MAX-0.5)*25*p);
+
+        fHeader.fType=kDynamicData;     // FtuList
+        fHeader.fDataSize=sizeof(FTM::DynamicData)/2+1;
+        fHeader.fTriggerCounter = fCounter;
+        fHeader.fTimeStamp = fTimeStamp++*1000000;//lrint(Time().UnixTime());
+
+        fBufHeader      = fHeader.HtoN();
+        fBufDynamicData = fDynamicData.HtoN();
+
+        AsyncWrite(ba::buffer(ba::const_buffer(&fBufHeader[0],      fBufHeader.size()*2)));
+        AsyncWrite(ba::buffer(ba::const_buffer(&fBufDynamicData[0], sizeof(FTM::DynamicData))));
+        AsyncWrite(ba::buffer(ba::const_buffer(&fDelimiter, 2)));
+    }
+
+    void SendStaticData()
+    {
+        fHeader.fType=kStaticData;     // FtuList
+        fHeader.fDataSize=sizeof(FTM::StaticData)/2+1;
+        fHeader.fTriggerCounter = fCounter;
+        fHeader.fTimeStamp = fTimeStamp*1000000;//lrint(Time().UnixTime());
+
+        for (int i=0; i<4; i++)
+            fFtuList.fActiveFTU[i] = fStaticData.fActiveFTU[i];
+
+        fBufHeader     = fHeader.HtoN();
+        fBufStaticData = fStaticData.HtoN();
+
+        AsyncWrite(ba::buffer(ba::const_buffer(&fBufHeader[0],     fBufHeader.size()*2)));
+        AsyncWrite(ba::buffer(ba::const_buffer(&fBufStaticData[0], fBufStaticData.size()*2)));
+        AsyncWrite(ba::buffer(ba::const_buffer(&fDelimiter, 2)));
+    }
+
+    void HandleReceivedData(const boost::system::error_code& error, size_t bytes_received)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0)
+        {
+            // Close the connection
+            close();
+            return;
+        }
+
+        // No command received yet
+        if (fCommand.size()==0)
+        {
+            transform(fBufCommand.begin(), fBufCommand.begin()+bytes_received/2,
+                      fBufCommand.begin(), ntohs);
+
+            if (fBufCommand[0]!='@')
+            {
+                cout << "Inavlid command: 0x" << hex << fBufCommand[0] << dec << endl;
+                cout << "Received b=" << bytes_received << ": " << error.message() << " (" << error << ")" << endl;
+                cout << "Hex:" << Converter::GetHex<uint16_t>(&fBufCommand[0], bytes_received) << endl;
+                return;
+            }
+
+            switch (fBufCommand[1])
+            {
+            case kCmdToggleLed:
+                cout << "-> TOGGLE_LED" << endl;
+
+                fBufCommand.resize(5);
+                AsyncRead(ba::buffer(fBufCommand));
+                return;
+
+            case kCmdPing:
+                cout << "-> PING" << endl;
+
+                fHeader.fType=kFtuList;     // FtuList
+                fHeader.fDataSize=sizeof(FTM::FtuList)/2+1;
+                fHeader.fTriggerCounter = fCounter;
+                fHeader.fTimeStamp = fTimeStamp*1000000;//lrint(Time().UnixTime());
+
+                fFtuList[1].fPingAddr = ((rand()&1)<<9) | 1;
+                fFtuList[0].fPingAddr = ((rand()&1)<<8);
+
+                fBufHeader  = fHeader.HtoN();
+                fBufFtuList = fFtuList.HtoN();
+
+                AsyncWrite(ba::buffer(ba::const_buffer(&fBufHeader[0],  fBufHeader.size()*2)));
+                AsyncWrite(ba::buffer(ba::const_buffer(&fBufFtuList[0], fBufFtuList.size()*2)));
+                AsyncWrite(ba::buffer(ba::const_buffer(&fDelimiter, 2)));
+
+                fBufCommand.resize(5);
+                AsyncRead(ba::buffer(fBufCommand));
+                return;
+
+            case kCmdRead: // kCmdRead
+                cout << "-> READ" << endl;
+                switch (fBufCommand[2])
+                {
+                case kCmdStaticData:
+                    cout << "-> STATIC" << endl;
+
+                    SendStaticData();
+
+                    fBufCommand.resize(5);
+                    AsyncRead(ba::buffer(fBufCommand));
+
+                    return;
+
+                case kCmdDynamicData:
+                    cout << "-> DYNAMIC" << endl;
+
+                    SendDynamicData();
+
+                    fBufCommand.resize(5);
+                    AsyncRead(ba::buffer(fBufCommand));
+
+                    return;
+
+                case kCmdRegister:
+                    fCommand = fBufCommand;
+                    cout << "-> REGISTER" << endl;
+
+                    fBufCommand.resize(1);
+                    AsyncRead(ba::buffer(fBufCommand));
+                    return;
+                }
+                break;
+
+
+            case kCmdWrite:
+                switch (fBufCommand[2])
+                {
+                case kCmdRegister:
+                    fCommand = fBufCommand;
+                    cout << "-> REGISTER" << endl;
+
+                    fBufCommand.resize(2);
+                    AsyncRead(ba::buffer(fBufCommand));
+                    return;
+
+                case kCmdStaticData:
+                    fCommand = fBufCommand;
+                    cout << "-> STATIC DATA" << endl;
+
+                    fBufCommand.resize(sizeof(StaticData)/2);
+                    AsyncRead(ba::buffer(fBufCommand));
+                    return;
+                }
+                break;
+
+            case kCmdDisableReports:
+                cout << "-> DISABLE REPORTS " << !fBufCommand[2] << endl;
+                fReportsDisabled = !fBufCommand[2];
+
+                fBufCommand.resize(5);
+                AsyncRead(ba::buffer(fBufCommand));
+                return;
+
+            case kCmdConfigFTU:
+                cout << "-> Configure FTU " << (fBufCommand[2]&0xff) << " " << (fBufCommand[2]>>8) << endl;
+
+                fBufCommand.resize(5);
+                AsyncRead(ba::buffer(fBufCommand));
+                return;
+
+            case kCmdStartRun:
+                fHeader.fState = FTM::kFtmRunning|FTM::kFtmLocked;
+
+                fStartTime = Time().UnixTime();
+
+                fCounter = 0;
+                fTimeStamp = 0;
+                fHeader.fTriggerCounter = fCounter;
+
+                fBufCommand.resize(5);
+                AsyncRead(ba::buffer(fBufCommand));
+
+                AsyncWait(fTriggerSendData, 0, &tcp_connection::TriggerSendData);
+                return;
+
+            case kCmdStopRun:
+                fHeader.fState = FTM::kFtmIdle|FTM::kFtmLocked;
+
+                fTriggerSendData.cancel();
+
+                fCounter = 0;
+                fTimeStamp = 0;
+
+                fBufCommand.resize(5);
+                AsyncRead(ba::buffer(fBufCommand));
+                return;
+            }
+
+            cout << "Received b=" << bytes_received << ": " << error.message() << " (" << error << ")" << endl;
+            cout << "Hex:" << Converter::GetHex<uint16_t>(&fBufCommand[0], bytes_received) << endl;
+            return;
+        }
+
+        // Command data received
+
+        // Prepare reception of next command
+        switch (fCommand[1])
+        {
+        case kCmdRead: // kCmdRead
+            {
+                const uint16_t addr = ntohs(fBufCommand[0]);
+                const uint16_t val  = reinterpret_cast<uint16_t*>(&fStaticData)[addr];
+
+                cout << "-> GET REGISTER[" << addr << "]=" << val << endl;
+
+                fHeader.fType=kRegister;     // FtuList
+                fHeader.fDataSize=2;
+                fHeader.fTimeStamp = fTimeStamp*1000000;//lrint(Time().UnixTime());
+
+                fBufHeader = fHeader.HtoN();
+                fBufStaticData[addr] = htons(val);
+
+                AsyncWrite(ba::buffer(ba::const_buffer(&fBufHeader[0], fBufHeader.size()*2)));
+                AsyncWrite(ba::buffer(ba::const_buffer(&fBufStaticData[addr], 2)));
+                AsyncWrite(ba::buffer(ba::const_buffer(&fDelimiter, 2)));
+                break;
+            }
+
+        case kCmdWrite:
+            switch (fCommand[2])
+            {
+            case kCmdRegister:
+                {
+                    const uint16_t addr = ntohs(fBufCommand[0]);
+                    const uint16_t val  = ntohs(fBufCommand[1]);
+
+                    cout << "-> SET REGISTER[" << addr << "]=" << val << endl;
+
+                    reinterpret_cast<uint16_t*>(&fStaticData)[addr] = val;
+                }
+                break;
+
+            case kCmdStaticData:
+                {
+                    cout << "-> SET STATIC DATA" << endl;
+                    fStaticData = fBufCommand;
+                }
+                break;
+            }
+            break;
+        }
+
+        fCommand.resize(0);
+
+        fBufCommand.resize(5);
+        AsyncRead(ba::buffer(fBufCommand));
+    }
+
+    void SendDynData(const boost::system::error_code &ec)
+    {
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            return;
+        }
+
+        if (ec==ba::error::basic_errors::operation_aborted)
+            return;
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+
+        if (fTriggerDynData.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        // The deadline has passed.
+        SendDynamicData();
+
+        AsyncWait(fTriggerDynData, 1000, &tcp_connection::SendDynData);
+    }
+
+    void TriggerSendData(const boost::system::error_code &ec)
+    {
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            return;
+        }
+
+        if (ec==ba::error::basic_errors::operation_aborted)
+            return;
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fTriggerSendData.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+
+        if (fStaticData.IsEnabled(StaticData::kTrigger))
+            Dim::SendCommand("FAD/TRIGGER", fCounter++);
+
+        const uint16_t time = 100*float(rand())/RAND_MAX+50;
+
+        AsyncWait(fTriggerSendData, time, &tcp_connection::TriggerSendData);
+    }
+
+public:
+    typedef boost::shared_ptr<tcp_connection> shared_ptr;
+
+    static shared_ptr create(ba::io_service& io_service)
+    {
+        return shared_ptr(new tcp_connection(io_service));
+    }
+
+    void start()
+    {
+        // Ownership of buffer must be valid until Handler is called.
+
+        // Emit something to be written to the socket
+        fBufCommand.resize(5);
+        AsyncRead(ba::buffer(fBufCommand));
+
+        AsyncWait(fTriggerDynData, 1000, &tcp_connection::SendDynData);
+
+//        AsyncWrite(ba::buffer(ba::const_buffer(&fHeader, sizeof(FTM::Header))));
+//        AsyncWait(deadline_, 3, &tcp_connection::check_deadline);
+
+    }
+};
+
+
+class tcp_server : public tcp::acceptor
+{
+public:
+    tcp_server(ba::io_service& ioservice, int port) :
+        tcp::acceptor(ioservice, tcp::endpoint(tcp::v4(), port))
+
+    {
+        // We could start listening for more than one connection
+        // here, but since there is only one handler executed each time
+        // it would not make sense. Before one handle_accept is not
+        // finished no new handle_accept will be called.
+        // Workround: Start a new thread in handle_accept
+        start_accept();
+    }
+
+private:
+    void start_accept()
+    {
+        cout << "Start accept..." << flush;
+        tcp_connection::shared_ptr new_connection = tcp_connection::create(/*acceptor_.*/get_io_service());
+
+        // This will accept a connection without blocking
+        async_accept(*new_connection,
+                     boost::bind(&tcp_server::handle_accept,
+                                 this,
+                                 new_connection,
+                                 ba::placeholders::error));
+
+        cout << "start-done." << endl;
+    }
+
+    void handle_accept(tcp_connection::shared_ptr new_connection, const boost::system::error_code& error)
+    {
+        // The connection has been accepted and is now ready to use
+
+        // not installing a new handler will stop run()
+        cout << "Handle accept..." << flush;
+        if (!error)
+        {
+            new_connection->start();
+
+            // The is now an open connection/server (tcp_connection)
+            // we immediatly schedule another connection
+            // This allowed two client-connection at the same time
+            start_accept();
+        }
+        cout << "handle-done." << endl;
+    }
+};
+
+#include "Configuration.h"
+
+void SetupConfiguration(::Configuration &conf)
+{
+    const string n = conf.GetName()+".log";
+
+    po::options_description config("Program options");
+    config.add_options()
+        ("dns",       var<string>("localhost"), "Dim nameserver host name (Overwites DIM_DNS_NODE environment variable)")
+        ("port,p",    var<uint16_t>(5000), "")
+        ;
+
+    po::positional_options_description p;
+    p.add("port", 1); // The first positional options
+    p.add("num",  1); // The second positional options
+
+    conf.AddEnv("dns", "DIM_DNS_NODE");
+
+    conf.AddOptions(config);
+    conf.SetArgumentPositions(p);
+}
+
+int main(int argc, const char **argv)
+{
+    ::Configuration conf(argv[0]);
+
+    SetupConfiguration(conf);
+
+    po::variables_map vm;
+    try
+    {
+        vm = conf.Parse(argc, argv);
+    }
+#if BOOST_VERSION > 104000
+    catch (po::multiple_occurrences &e)
+    {
+        cerr << "Program options invalid due to: " << e.what() << " of '" << e.get_option_name() << "'." << endl;
+        return -1;
+    }
+#endif
+    catch (exception& e)
+    {
+        cerr << "Program options invalid due to: " << e.what() << endl;
+        return -1;
+    }
+
+    if (conf.HasVersion() || conf.HasPrint() || conf.HasHelp())
+        return -1;
+
+    Dim::Setup(conf.Get<string>("dns"));
+
+    //try
+    {
+        ba::io_service io_service;
+
+        Port = conf.Get<uint16_t>("port");
+
+        tcp_server server(io_service, Port);
+        //  ba::add_service(io_service, &server);
+        //  server.add_service(...);
+        //cout << "Run..." << flush;
+
+        // Calling run() from a single thread ensures no concurrent access
+        // of the handler which are called!!!
+        io_service.run();
+
+        //cout << "end." << endl;
+    }
+    /*catch (std::exception& e)
+    {
+        std::cerr << e.what() << std::endl;
+    }*/
+
+    return 0;
+}
+/*  ====================== Buffers ===========================
+
+char d1[128]; ba::buffer(d1));
+std::vector<char> d2(128); ba::buffer(d2);
+boost::array<char, 128> d3; by::buffer(d3);
+
+// --------------------------------
+char d1[128];
+std::vector<char> d2(128);
+boost::array<char, 128> d3;
+
+boost::array<mutable_buffer, 3> bufs1 = {
+   ba::buffer(d1),
+   ba::buffer(d2),
+   ba::buffer(d3) };
+sock.read(bufs1);
+
+std::vector<const_buffer> bufs2;
+bufs2.push_back(boost::asio::buffer(d1));
+bufs2.push_back(boost::asio::buffer(d2));
+bufs2.push_back(boost::asio::buffer(d3));
+sock.write(bufs2);
+
+
+// ======================= Read functions =========================
+
+ba::async_read_until --> delimiter
+
+streambuf buf; // Ensure validity until handler!
+by::async_read(s, buf, ....);
+
+ba::async_read(s, ba:buffer(data, size), handler);
+ // Single buffer
+ boost::asio::async_read(s,
+                         ba::buffer(data, size),
+ compl-func -->          ba::transfer_at_least(32),
+                         handler);
+
+ // Multiple buffers
+boost::asio::async_read(s, buffers,
+ compl-func -->         boost::asio::transfer_all(),
+                        handler);
+                        */
+
+// ================= Others ===============================
+
+        /*
+        strand   Provides serialised handler execution.
+        work     Class to inform the io_service when it has work to do.
+
+
+io_service::
+dispatch   Request the io_service to invoke the given handler.
+poll       Run the io_service's event processing loop to execute ready
+           handlers.
+poll_one   Run the io_service's event processing loop to execute one ready
+           handler.
+post       Request the io_service to invoke the given handler and return
+           immediately.
+reset      Reset the io_service in preparation for a subsequent run()
+           invocation.
+run        Run the io_service's event processing loop.
+run_one    Run the io_service's event processing loop to execute at most
+           one handler.
+stop       Stop the io_service's event processing loop.
+wrap       Create a new handler that automatically dispatches the wrapped
+           handler on the io_service.
+
+strand::         The io_service::strand class provides the ability to
+                 post and dispatch handlers with the guarantee that none
+                 of those handlers will execute concurrently.
+
+dispatch         Request the strand to invoke the given handler.
+get_io_service   Get the io_service associated with the strand.
+post             Request the strand to invoke the given handler and return
+                 immediately.
+wrap             Create a new handler that automatically dispatches the
+                 wrapped handler on the strand.
+
+work::           The work class is used to inform the io_service when
+                 work starts and finishes. This ensures that the io_service's run() function will not exit while work is underway, and that it does exit when there is no unfinished work remaining.
+get_io_service   Get the io_service associated with the work.
+work             Constructor notifies the io_service that work is starting.
+
+*/
+
+
Index: branches/testFACT++branch/src/ftmctrl.cc
===================================================================
--- branches/testFACT++branch/src/ftmctrl.cc	(revision 18277)
+++ branches/testFACT++branch/src/ftmctrl.cc	(revision 18277)
@@ -0,0 +1,2881 @@
+#include <array>
+
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Console.h"
+#include "Converter.h"
+
+#include "tools.h"
+
+#include "HeadersFTM.h"
+
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+class ConnectionFTM : public Connection
+{
+public:
+    enum States
+    {
+        // State Machine states
+        kDisconnected = StateMachineImp::kSM_UserMode,
+        kConnected,
+        kIdle,
+        kConfigured,  // Returned if idle and fBufStaticData==fStaticData
+        kTriggerOn,
+    };
+
+private:
+    vector<uint16_t> fBuffer;
+
+    bool fHasHeader;
+
+    bool fIsVerbose;
+    bool fIsDynamicOut;
+    bool fIsHexOutput;
+
+protected:
+    map<uint16_t, uint32_t> fCounter;
+
+    FTM::Header      fHeader;
+    FTM::FtuList     fFtuList;
+    FTM::StaticData  fStaticData;    // fStaticBufferTx
+    FTM::DynamicData fDynamicData;
+    FTM::Error       fError;
+
+    FTM::StaticData  fBufStaticData; // fStaticBufferRx
+
+    virtual void UpdateFirstHeader()
+    {
+        // FIXME: Message() ?
+        Out() << endl << kBold << "First header received:" << endl;
+        Out() << fHeader;
+        if (fIsHexOutput)
+            Out() << Converter::GetHex<uint16_t>(fHeader, 16) << endl;
+    }
+
+    virtual void UpdateHeader()
+    {
+        // emit service with trigger counter from header
+        if (!fIsVerbose)
+            return;
+
+        if (fHeader.fType==FTM::kDynamicData && !fIsDynamicOut)
+            return;
+
+        Out() << endl << kBold << "Header received:" << endl;
+        Out() << fHeader;
+        if (fIsHexOutput)
+            Out() << Converter::GetHex<uint16_t>(fHeader, 16) << endl;
+    }
+
+    virtual void UpdateFtuList()
+    {
+        if (!fIsVerbose)
+            return;
+
+        Out() << endl << kBold << "FtuList received:" << endl;
+        Out() << fFtuList;
+        if (fIsHexOutput)
+            Out() << Converter::GetHex<uint16_t>(fFtuList, 16) << endl;
+    }
+
+    virtual void UpdateStaticData()
+    {
+        if (!fIsVerbose)
+            return;
+
+        Out() << endl << kBold << "Static data received:" << endl;
+        Out() << fStaticData;
+        if (fIsHexOutput)
+            Out() << Converter::GetHex<uint16_t>(fStaticData, 16) << endl;
+    }
+
+    virtual void UpdateDynamicData()
+    {
+        if (!fIsDynamicOut)
+            return;
+
+        Out() << endl << kBold << "Dynamic data received:" << endl;
+        Out() << fDynamicData;
+        if (fIsHexOutput)
+            Out() << Converter::GetHex<uint16_t>(fDynamicData, 16) << endl;
+    }
+
+    virtual void UpdateError()
+    {
+        if (!fIsVerbose)
+            return;
+
+        Out() << endl << kRed << "Error received:" << endl;
+        Out() << fError;
+        if (fIsHexOutput)
+            Out() << Converter::GetHex<uint16_t>(fError, 16) << endl;
+    }
+
+    virtual void UpdateCounter()
+    {
+        if (!fIsVerbose)
+            return;
+
+        if (!fIsDynamicOut)
+            return;
+
+        Out() << "Received: ";
+        Out() << "H=" << fCounter[FTM::kHeader] << "  ";
+        Out() << "S=" << fCounter[FTM::kStaticData] << "  ";
+        Out() << "D=" << fCounter[FTM::kDynamicData] << "  ";
+        Out() << "F=" << fCounter[FTM::kFtuList] << "  ";
+        Out() << "E=" << fCounter[FTM::kErrorList] << "  ";
+        Out() << "R=" << fCounter[FTM::kRegister] << endl;
+    }
+
+    bool CheckConsistency(FTM::StaticData &data)
+    {
+        bool warn1 = false;
+        if (data.IsEnabled(FTM::StaticData::kPedestal) != (data.GetSequencePed()  >0) ||
+            data.IsEnabled(FTM::StaticData::kLPint)    != (data.GetSequenceLPint()>0) ||
+            data.IsEnabled(FTM::StaticData::kLPext)    != (data.GetSequenceLPext()>0))
+        {
+            warn1 = true;
+            data.Enable(FTM::StaticData::kPedestal, data.GetSequencePed()>0);
+            data.Enable(FTM::StaticData::kLPint,    data.GetSequenceLPint()>0);
+            data.Enable(FTM::StaticData::kLPext,    data.GetSequenceLPext()>0);
+        }
+
+        bool warn2 = false;
+        const uint16_t ref = data[0].fPrescaling;
+        for (int i=1; i<40; i++)
+        {
+            if (data[i].fPrescaling != ref)
+            {
+                warn2 = true;
+                data[i].fPrescaling = ref;
+            }
+        }
+
+        bool warn3 = false;
+        for (int i=0; i<4; i++)
+            if (data.fActiveFTU[i]!=0x3ff)
+            {
+                warn3 = true;
+                data.fActiveFTU[i]=0x3ff;
+            }
+
+
+
+        if (warn1)
+            Warn("GeneralSettings not consistent with trigger sequence.");
+        if (warn2)
+            Warn("Prescaling not consistent for all boards.");
+        if (warn3)
+            Warn("Not all FTUs are enabled - enable all FTUs.");
+
+        return !warn1 && !warn2 && !warn3;
+    }
+
+private:
+    void HandleReceivedData(const bs::error_code& err, size_t bytes_received, int /*type*/)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+                Warn("Connection closed by remote host (FTM).");
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+            return;
+        }
+
+        // If we have not yet received a header we expect one now
+        // This could be moved to a HandleReceivedHeader function
+        if (!fHasHeader)
+        {
+            if (bytes_received!=sizeof(FTM::Header))
+            {
+                ostringstream str;
+                str << "Excepted " << sizeof(FTM::Header) << " bytes (FTM::Header) but received " << bytes_received << ".";
+                Error(str);
+                PostClose(false);
+                return;
+            }
+
+            fHeader = fBuffer;
+
+            // Check the data integrity
+            if (fHeader.fDelimiter!=FTM::kDelimiterStart)
+            {
+                ostringstream str;
+                str << "Invalid header received: start delimiter wrong, received ";
+                str << hex << fHeader.fDelimiter << ", expected " << FTM::kDelimiterStart << ".";
+                Error(str);
+                PostClose(false);
+                return;
+            }
+
+            fHasHeader = true;
+
+            // Convert FTM state into FtmCtrl state
+            if (++fCounter[FTM::kHeader]==1)
+                UpdateFirstHeader();
+
+            UpdateCounter();
+            UpdateHeader();
+
+            // Start reading of data
+            switch (fHeader.fType)
+            {
+            case FTM::kStaticData:
+            case FTM::kDynamicData:
+            case FTM::kFtuList:
+            case FTM::kRegister:
+            case FTM::kErrorList:
+                // This is not very efficient because the space is reallocated
+                // maybe we can check if the capacity of the std::vector
+                // is ever decreased. If not, everythign is fine.
+                fBuffer.resize(fHeader.fDataSize);
+                AsyncRead(ba::buffer(fBuffer));
+                AsyncWait(fInTimeout, 1000, &Connection::HandleReadTimeout);
+                return;
+
+            default:
+                ostringstream str;
+                str << "Unknonw type " << fHeader.fType << " in received header." << endl;
+                Error(str);
+                PostClose(false);
+                return;
+            }
+
+            return;
+        }
+
+        // Check the data integrity (check end delimiter)
+        if (ntohs(fBuffer.back())!=FTM::kDelimiterEnd)
+        {
+            ostringstream str;
+            str << "Invalid data received: end delimiter wrong, received ";
+            str << hex << ntohs(fBuffer.back()) << ", expected " << FTM::kDelimiterEnd << ".";
+            Error(str);
+            PostClose(false);
+            return;
+        }
+
+        // Remove end delimiter
+        fBuffer.pop_back();
+
+        try
+        {
+            // If we have already received a header this is the data now
+            // This could be moved to a HandleReceivedData function
+
+            fCounter[fHeader.fType]++;
+            UpdateCounter();
+
+            switch (fHeader.fType)
+            {
+            case FTM::kFtuList:
+                fFtuList = fBuffer;
+                UpdateFtuList();
+                break;
+
+            case FTM::kStaticData:
+                if (fCounter[FTM::kStaticData]==1)
+                {
+                    // This check is only done at startup
+                    FTM::StaticData data(fBuffer);
+                    if (!CheckConsistency(data))
+                    {
+                        CmdSendStatDat(data);
+                        CmdPing(); // FIXME: Only needed in case of warn3
+                        break;
+                    }
+                }
+
+                fStaticData = fBuffer;
+
+                // is this the first received static data block?
+                if (!fBufStaticData.valid())
+                    fBufStaticData = fStaticData;
+
+                UpdateStaticData();
+                break;
+
+            case FTM::kDynamicData:
+                fDynamicData = fBuffer;
+                UpdateDynamicData();
+                break;
+
+            case FTM::kRegister:
+                if (fIsVerbose)
+                {
+                    Out() << endl << kBold << "Register received: " << endl;
+                    Out() << "Addr:  " << ntohs(fBuffer[0]) << endl;
+                    Out() << "Value: " << ntohs(fBuffer[1]) << endl;
+                }
+                break;
+
+            case FTM::kErrorList:
+                fError = fBuffer;
+                UpdateError();
+                break;
+
+            default:
+                ostringstream str;
+                str << "Unknonw type " << fHeader.fType << " in header." << endl;
+                Error(str);
+                PostClose(false);
+                return;
+            }
+        }
+        catch (const logic_error &e)
+        {
+            ostringstream str;
+            str << "Exception converting buffer into data structure: " << e.what();
+            Error(str);
+            PostClose(false);
+            return;
+        }
+
+        fInTimeout.cancel();
+
+        //fHeader.clear();
+        fHasHeader = false;
+        fBuffer.resize(sizeof(FTM::Header)/2);
+        AsyncRead(ba::buffer(fBuffer));
+    }
+
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        fCounter.clear();
+        fBufStaticData.clear();
+
+        fHeader.clear();
+        fHasHeader = false;
+        fBuffer.resize(sizeof(FTM::Header)/2);
+        AsyncRead(ba::buffer(fBuffer));
+
+//        if (!fDefaultSetup.empty())
+//            LoadStaticData(fDefaultSetup);
+
+        // Get a header and configdata!
+        CmdReqStatDat();
+
+        // get the DNA of the FTUs
+        CmdPing();
+    }
+
+    void HandleReadTimeout(const bs::error_code &error)
+    {
+        if (error==ba::error::basic_errors::operation_aborted)
+            return;
+
+        if (error)
+        {
+            ostringstream str;
+            str << "Read timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose();
+            return;
+
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fInTimeout.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        Error("Timeout ("+to_simple_string(fInTimeout.expires_from_now())+") reading data from "+URL());
+
+        PostClose();
+    }
+
+    template<size_t N>
+    void PostCmd(array<uint16_t, N> dat, uint16_t u1=0, uint16_t u2=0, uint16_t u3=0, uint16_t u4=0)
+    {
+        array<uint16_t, 5> cmd = {{ '@', u1, u2, u3, u4 }};
+
+        if (fIsVerbose)
+        {
+            ostringstream msg;
+            msg << "Sending command:" << hex;
+            msg << " 0x" << setw(4) << setfill('0') << cmd[0];
+            msg << " 0x" << setw(4) << setfill('0') << u1;
+            msg << " 0x" << setw(4) << setfill('0') << u2;
+            msg << " 0x" << setw(4) << setfill('0') << u3;
+            msg << " 0x" << setw(4) << setfill('0') << u4;
+            msg << " (+" << dec << dat.size() << " words)";
+            Message(msg);
+        }
+
+        vector<uint16_t> out(cmd.size()+dat.size());
+
+        transform(cmd.begin(), cmd.end(), out.begin(), htons);
+        transform(dat.begin(), dat.end(), out.begin()+cmd.size(), htons);
+
+        PostMessage(out);
+    }
+
+    void PostCmd(vector<uint16_t> dat, uint16_t u1=0, uint16_t u2=0, uint16_t u3=0, uint16_t u4=0)
+    {
+        array<uint16_t, 5> cmd = {{ '@', u1, u2, u3, u4 }};
+
+        if (fIsVerbose)
+        {
+            ostringstream msg;
+            msg << "Sending command:" << hex;
+            msg << " 0x" << setw(4) << setfill('0') << cmd[0];
+            msg << " 0x" << setw(4) << setfill('0') << u1;
+            msg << " 0x" << setw(4) << setfill('0') << u2;
+            msg << " 0x" << setw(4) << setfill('0') << u3;
+            msg << " 0x" << setw(4) << setfill('0') << u4;
+            msg << " (+" << dec << dat.size() << " words)";
+            Message(msg);
+        }
+
+        vector<uint16_t> out(cmd.size()+dat.size());
+
+        transform(cmd.begin(), cmd.end(), out.begin(), htons);
+        copy(dat.begin(), dat.end(), out.begin()+cmd.size());
+
+        PostMessage(out);
+    }
+
+    void PostCmd(uint16_t u1=0, uint16_t u2=0, uint16_t u3=0, uint16_t u4=0)
+    {
+        PostCmd(array<uint16_t, 0>(), u1, u2, u3, u4);
+    }
+public:
+
+//    static const uint16_t kMaxAddr;
+
+public:
+    ConnectionFTM(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsVerbose(true), fIsDynamicOut(true), fIsHexOutput(true)
+    {
+        SetLogStream(&imp);
+    }
+
+    void CmdToggleLed()
+    {
+        PostCmd(FTM::kCmdToggleLed);
+    }
+
+    void CmdPing()
+    {
+        PostCmd(FTM::kCmdPing);
+    }
+
+    void CmdReqDynDat()
+    {
+        PostCmd(FTM::kCmdRead, FTM::kCmdDynamicData);
+    }
+
+    void CmdReqStatDat()
+    {
+        PostCmd(FTM::kCmdRead, FTM::kCmdStaticData);
+    }
+
+    void CmdSendStatDat(const FTM::StaticData &data)
+    {
+        fBufStaticData = data;
+
+        PostCmd(data.HtoN(), FTM::kCmdWrite, FTM::kCmdStaticData);
+
+        // Request the changed configuration to ensure the
+        // change is distributed in the network
+        CmdReqStatDat();
+    }
+
+    void CmdStartRun(bool log=true)
+    {
+        PostCmd(FTM::kCmdStartRun, FTM::kStartRun);
+        CmdGetRegister(0);
+
+        if (log)
+            Info("Sending start trigger.");
+    }
+
+    void CmdStopRun()
+    {
+        PostCmd(FTM::kCmdStopRun);
+        CmdGetRegister(0);
+
+        Info("Sending stop trigger.");
+    }
+
+    void CmdTakeNevents(uint32_t n)
+    {
+        const array<uint16_t, 2> data = {{ uint16_t(n>>16), uint16_t(n&0xffff) }};
+        PostCmd(data, FTM::kCmdStartRun, FTM::kTakeNevents);
+
+        // Update state information by requesting a new header
+        CmdGetRegister(0);
+    }
+
+    bool CmdSetRegister(uint16_t addr, uint16_t val)
+    {
+        if (addr>FTM::StaticData::kMaxAddr)
+            return false;
+
+        const array<uint16_t, 2> data = {{ addr, val }};
+        PostCmd(data, FTM::kCmdWrite, FTM::kCmdRegister);
+
+        reinterpret_cast<uint16_t*>(&fBufStaticData)[addr] = val;
+
+        // Request the changed configuration to ensure the
+        // change is distributed in the network
+        CmdReqStatDat();
+
+        return true;
+    }
+
+    bool CmdGetRegister(uint16_t addr)
+    {
+        if (addr>FTM::StaticData::kMaxAddr)
+            return false;
+
+        const array<uint16_t, 1> data = {{ addr }};
+        PostCmd(data, FTM::kCmdRead, FTM::kCmdRegister);
+
+        return true;
+    }
+
+    bool CmdResetCrate(uint16_t addr)
+    {
+        if (addr>3)
+            return false;
+
+        PostCmd(FTM::kCmdCrateReset, 1<<addr);
+        Info("Sending crate reset for crate "+to_string(addr));
+
+        return true;
+    }
+
+    bool CmdResetCamera()
+    {
+        PostCmd(FTM::kCmdCrateReset, FTM::kResetCrate0);
+        PostCmd(FTM::kCmdCrateReset, FTM::kResetCrate1);
+        PostCmd(FTM::kCmdCrateReset, FTM::kResetCrate2);
+        PostCmd(FTM::kCmdCrateReset, FTM::kResetCrate3);
+
+        Info("Sending camera reset");
+
+        return true;
+    }
+
+    bool CmdDisableReports(bool b)
+    {
+        PostCmd(FTM::kCmdDisableReports, b ? uint16_t(0) : uint16_t(1));
+        return true;
+    }
+
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+    }
+
+    void SetHexOutput(bool b)
+    {
+        fIsHexOutput = b;
+    }
+
+    void SetDynamicOut(bool b)
+    {
+        fIsDynamicOut = b;
+    }
+/*
+    void SetDefaultSetup(const string &file)
+    {
+        fDefaultSetup = file;
+    }
+*/
+
+    bool LoadStaticData(string name)
+    {
+        if (name.rfind(".bin")!=name.length()-4)
+            name += ".bin";
+
+        ifstream fin(name);
+        if (!fin)
+            return false;
+
+        FTM::StaticData data;
+
+        fin.read(reinterpret_cast<char*>(&data), sizeof(FTM::StaticData));
+
+        if (fin.gcount()<streamsize(sizeof(FTM::StaticData)))
+            return false;
+
+        if (fin.fail() || fin.eof())
+            return false;
+
+        if (fin.peek()!=-1)
+            return false;
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool SaveStaticData(string name) const
+    {
+        if (name.rfind(".bin")!=name.length()-4)
+            name += ".bin";
+
+        ofstream fout(name);
+        if (!fout)
+            return false;
+
+        fout.write(reinterpret_cast<const char*>(&fStaticData), sizeof(FTM::StaticData));
+
+        return !fout.bad();
+    }
+
+    bool SetThreshold(int32_t patch, int32_t value)
+    {
+        if (patch>FTM::StaticData::kMaxPatchIdx)
+            return false;
+
+        if (value<0 || value>FTM::StaticData::kMaxDAC)
+            return false;
+
+        if (patch<0)
+        {
+            FTM::StaticData data(fBufStaticData);
+
+            bool ident = true;
+            for (int i=0; i<=FTM::StaticData::kMaxPatchIdx; i++)
+                if (data[i/4].fDAC[i%4] != value)
+                {
+                    ident = false;
+                    break;
+                }
+
+            if (ident)
+                return true;
+
+            for (int i=0; i<=FTM::StaticData::kMaxPatchIdx; i++)
+                data[i/4].fDAC[i%4] = value;
+
+            // Maybe move to a "COMMIT" command?
+            CmdSendStatDat(data);
+
+            return true;
+        }
+
+        /*
+          if (data[patch/4].fDAC[patch%4] == value)
+             return true;
+          */
+ 
+        // Calculate offset in static data block
+        const uint16_t addr = (uintptr_t(&fStaticData[patch/4].fDAC[patch%4])-uintptr_t(&fStaticData))/2;
+
+        // From CmdSetRegister
+        const array<uint16_t, 2> data = {{ addr, uint16_t(value) }};
+        PostCmd(data, FTM::kCmdWrite, FTM::kCmdRegister);
+
+        reinterpret_cast<uint16_t*>(&fBufStaticData)[addr] = value;
+
+        // Now execute change before the static data is requested back
+        PostCmd(FTM::kCmdConfigFTU, (patch/40) | (((patch/4)%10)<<8));
+
+        //CmdGetRegister(addr);
+        CmdReqStatDat();
+
+        return true;
+    }
+
+    bool SetSelectedThresholds(const int32_t *th)
+    {
+        for (int i=0; i<FTM::StaticData::kMaxPatchIdx; i++)
+            if (th[i]>FTM::StaticData::kMaxDAC)
+                return false;
+
+        FTM::StaticData data(fBufStaticData);
+
+        for (int i=0; i<=FTM::StaticData::kMaxPatchIdx; i++)
+        {
+            if (th[i]<0 || fBufStaticData[i/4].fDAC[i%4]==th[i])
+                continue;
+
+            // Calculate offset in static data block
+            const uint16_t addr = (uintptr_t(&fStaticData[i/4].fDAC[i%4])-uintptr_t(&fStaticData))/2;
+
+            reinterpret_cast<uint16_t*>(&fBufStaticData)[addr] = th[i];
+
+            // From CmdSetRegister
+            const array<uint16_t, 2> arr = {{ addr, uint16_t(th[i]) }};
+            PostCmd(arr, FTM::kCmdWrite, FTM::kCmdRegister);
+            PostCmd(FTM::kCmdConfigFTU, (i/40) | (((i/4)%10)<<8));
+        }
+
+        //CmdGetRegister(addr);
+        CmdReqStatDat();
+
+        return true;
+    }
+
+    bool SetAllThresholds(const int32_t *th)
+    {
+        for (int i=0; i<FTM::StaticData::kMaxPatchIdx; i++)
+            if (th[i]<0 || th[i]>FTM::StaticData::kMaxDAC)
+                return false;
+
+        FTM::StaticData data(fBufStaticData);
+
+        for (int i=0; i<=FTM::StaticData::kMaxPatchIdx; i++)
+            data[i/4].fDAC[i%4] = th[i];
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool SetNoutof4(int32_t patch, int32_t value)
+    {
+        if (patch>=FTM::StaticData::kMaxMultiplicity)
+            return false;
+
+        if (value<0 || value>FTM::StaticData::kMaxDAC)
+            return false;
+
+        if (patch<0)
+        {
+            FTM::StaticData data(fBufStaticData);
+
+            bool ident = true;
+            for (int i=0; i<FTM::StaticData::kMaxMultiplicity; i++)
+                if (data[i].fDAC[4] != value)
+                {
+                    ident = false;
+                    break;
+                }
+
+            if (ident)
+                return true;
+
+            for (int i=0; i<=FTM::StaticData::kMaxMultiplicity; i++)
+                data[i].fDAC[4] = value;
+
+            // Maybe move to a "COMMIT" command?
+            CmdSendStatDat(data);
+
+            return true;
+        }
+
+        /*
+         if (data[patch/4].fDAC[patch%4] == value)
+            return true;
+
+         data[patch/4].fDAC[patch%4] = value;
+
+         CmdSendStatDat(data);
+         return true;
+         */
+
+        // Calculate offset in static data block
+        const uint16_t addr = (uintptr_t(&fStaticData[patch].fDAC[4])-uintptr_t(&fStaticData))/2;
+
+        // From CmdSetRegister
+        const array<uint16_t, 2> data = {{ addr, uint16_t(value) }};
+        PostCmd(data, FTM::kCmdWrite, FTM::kCmdRegister);
+
+        reinterpret_cast<uint16_t*>(&fBufStaticData)[addr] = value;
+
+        // Now execute change before the static data is requested back
+        PostCmd(FTM::kCmdConfigFTU, (patch/40) | (((patch/4)%10)<<8));
+
+        //CmdGetRegister(addr);
+        CmdReqStatDat();
+
+        return true;
+    }
+
+    bool SetPrescaling(uint32_t value)
+    {
+        if (value>0xffff)
+            return false;
+
+        FTM::StaticData data(fBufStaticData);
+
+        bool ident = true;
+        for (int i=0; i<40; i++)
+            if (data[i].fPrescaling != value)
+            {
+                ident = false;
+                break;
+            }
+
+        if (ident)
+            return true;
+
+        data.SetPrescaling(value);
+
+        // Maybe move to a "COMMIT" command?
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool EnableFTU(int32_t board, bool enable)
+    {
+        if (board>39)
+            return false;
+
+        FTM::StaticData data(fBufStaticData);
+
+        if (board<0)
+        {
+            if (enable)
+                data.EnableAllFTU();
+            else
+                data.DisableAllFTU();
+        }
+        else
+        {
+            if (enable)
+                data.EnableFTU(board);
+            else
+                data.DisableFTU(board);
+
+        }
+
+        // Maybe move to a "COMMIT" command?
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool ToggleFTU(uint32_t board)
+    {
+        if (board>39)
+            return false;
+
+        FTM::StaticData data(fBufStaticData);
+
+        data.ToggleFTU(board);
+
+        // Maybe move to a "COMMIT" command?
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool SetVal(uint16_t *dest, uint32_t val, uint32_t max)
+    {
+        if (val>max)
+            return false;
+
+        if (*dest==val)
+            return true;
+
+        FTM::StaticData data(fBufStaticData);
+
+        dest = reinterpret_cast<uint16_t*>(&data) + (dest - reinterpret_cast<uint16_t*>(&fStaticData));
+
+        *dest = val;
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool SetTriggerInterval(uint32_t val)
+    {
+        return SetVal(&fStaticData.fTriggerInterval, val,
+                      FTM::StaticData::kMaxTriggerInterval);
+    }
+
+    bool SetTriggerDelay(uint32_t val)
+    {
+        return SetVal(&fStaticData.fDelayTrigger, val,
+                      FTM::StaticData::kMaxDelayTrigger);
+    }
+
+    bool SetTimeMarkerDelay(uint32_t val)
+    {
+        return SetVal(&fStaticData.fDelayTimeMarker, val,
+                      FTM::StaticData::kMaxDelayTimeMarker);
+    }
+
+    bool SetDeadTime(uint32_t val)
+    {
+        return SetVal(&fStaticData.fDeadTime, val,
+                      FTM::StaticData::kMaxDeadTime);
+    }
+
+    void Enable(FTM::StaticData::GeneralSettings type, bool enable)
+    {
+        //if (fStaticData.IsEnabled(type)==enable)
+        //    return;
+
+        FTM::StaticData data(fBufStaticData);
+        data.Enable(type, enable);
+        CmdSendStatDat(data);
+    }
+
+    bool SetTriggerSeq(const uint16_t d[3])
+    {
+	if (d[0]>FTM::StaticData::kMaxSequence ||
+            d[1]>FTM::StaticData::kMaxSequence ||
+            d[2]>FTM::StaticData::kMaxSequence)
+            return false;
+
+        FTM::StaticData data(fBufStaticData);
+
+        /*
+         data.Enable(FTM::StaticData::kPedestal, d[0]>0);
+         data.Enable(FTM::StaticData::kLPext,    d[1]>0);
+         data.Enable(FTM::StaticData::kLPint,    d[2]>0);
+         */
+
+        data.SetSequence(d[0], d[2], d[1]);
+
+        //if (fStaticData.fTriggerSeq     !=data.fTriggerSequence ||
+        //    fStaticData.fGeneralSettings!=data.fGeneralSettings)
+        //    CmdSendStatDat(data);
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool SetTriggerMultiplicity(uint16_t n)
+    {
+        if (n==0 || n>FTM::StaticData::kMaxMultiplicity)
+            return false;
+
+        //if (n==fBufStaticData.fMultiplicityPhysics)
+        //    return true;
+
+        FTM::StaticData data(fBufStaticData);
+
+        data.fMultiplicityPhysics = n;
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool SetTriggerWindow(uint16_t win)
+    {
+        if (win>FTM::StaticData::kMaxWindow)
+            return false;
+
+        //if (win==fStaticData.fWindowPhysics)
+        //    return true;
+
+        FTM::StaticData data(fBufStaticData);
+
+        data.fWindowPhysics = win;
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool SetCalibMultiplicity(uint16_t n)
+    {
+        if (n==0 || n>FTM::StaticData::kMaxMultiplicity)
+            return false;
+
+        //if (n==fStaticData.fMultiplicityCalib)
+        //    return true;
+
+        FTM::StaticData data(fBufStaticData);
+
+        data.fMultiplicityCalib = n;
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool SetCalibWindow(uint16_t win)
+    {
+        if (win>FTM::StaticData::kMaxWindow)
+            return false;
+
+        //if (win==fStaticData.fWindowCalib)
+        //    return true;
+
+        FTM::StaticData data(fBufStaticData);
+
+        data.fWindowCalib = win;
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool SetClockRegister(const uint64_t reg[])
+    {
+        FTM::StaticData data(fBufStaticData);
+
+        for (int i=0; i<8; i++)
+            if (reg[i]>0xffffffff)
+                return false;
+
+        data.SetClockRegister(reg);
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool EnableLP(FTM::StaticData::GeneralSettings lp, FTM::StaticData::LightPulserEnable group, bool enable)
+    {
+        if (lp!=FTM::StaticData::kLPint && lp!=FTM::StaticData::kLPext)
+            return false;
+
+        FTM::StaticData data(fBufStaticData);
+
+        if (lp==FTM::StaticData::kLPint)
+            data.EnableLPint(group, enable);
+
+        if (lp==FTM::StaticData::kLPext)
+            data.EnableLPext(group, enable);
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool SetIntensity(FTM::StaticData::GeneralSettings lp, uint16_t intensity)
+    {
+        if (intensity>FTM::StaticData::kMaxIntensity)
+            return false;
+
+        if (lp!=FTM::StaticData::kLPint && lp!=FTM::StaticData::kLPext)
+            return false;
+
+        FTM::StaticData data(fBufStaticData);
+
+        if (lp==FTM::StaticData::kLPint)
+            data.fIntensityLPint = intensity;
+
+        if (lp==FTM::StaticData::kLPext)
+            data.fIntensityLPext = intensity;
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool EnablePixel(int16_t idx, bool enable)
+    {
+        if (idx<-1 || idx>FTM::StaticData::kMaxPixelIdx)
+            return false;
+
+        if (idx==-1)
+        {
+            FTM::StaticData data(fBufStaticData);
+
+            for (int i=0; i<=FTM::StaticData::kMaxPixelIdx; i++)
+                data.EnablePixel(i, enable);
+
+            CmdSendStatDat(data);
+
+            return true;
+        }
+
+        /*
+         data.EnablePixel(idx, enable);
+         CmdSendStatDat(data);
+         return true;
+         */
+
+        FTM::StaticData data(fBufStaticData);
+
+        const uintptr_t base = uintptr_t(&data);
+        const uint16_t *mem  = data.EnablePixel(idx, enable);
+
+        // Calculate offset in static data block
+        const uint16_t addr = (uintptr_t(mem)-base)/2;
+
+        // From CmdSetRegister
+        const array<uint16_t, 2> cmd = {{ addr, *mem }};
+        PostCmd(cmd, FTM::kCmdWrite, FTM::kCmdRegister);
+
+        reinterpret_cast<uint16_t*>(&fBufStaticData)[addr] = *mem;
+
+        // Now execute change before the static data is requested back
+        PostCmd(FTM::kCmdConfigFTU, (idx/360) | (((idx/36)%10)<<8));
+
+        // Now request the register back to ensure consistency
+        //CmdGetRegister(addr);
+        CmdReqStatDat();
+
+        return true;
+    }
+
+    bool DisableAllPixelsExcept(uint16_t idx)
+    {
+        if (idx>FTM::StaticData::kMaxPixelIdx)
+            return false;
+
+        FTM::StaticData data(fBufStaticData);
+
+        for (int i=0; i<=FTM::StaticData::kMaxPixelIdx; i++)
+            data.EnablePixel(i, i==idx);
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool DisableAllPatchesExcept(int16_t idx)
+    {
+        if (idx>FTM::StaticData::kMaxPatchIdx)
+            return false;
+
+        FTM::StaticData data(fBufStaticData);
+
+        for (int i=0; i<=FTM::StaticData::kMaxPixelIdx; i++)
+            data.EnablePixel(i, i/9==idx);
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool EnablePatch(int16_t idx, bool enable)
+    {
+        if (idx>FTM::StaticData::kMaxPatchIdx)
+            return false;
+
+        FTM::StaticData data(fBufStaticData);
+
+        for (int i=0; i<=FTM::StaticData::kMaxPixelIdx; i++)
+            if (i/9==idx)
+                data.EnablePixel(i, enable);
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool TogglePixel(uint16_t idx)
+    {
+        if (idx>FTM::StaticData::kMaxPixelIdx)
+            return false;
+
+        FTM::StaticData data(fBufStaticData);
+
+        data.EnablePixel(idx, !fBufStaticData.Enabled(idx));
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    States GetState() const
+    {
+        if (!IsConnected())
+            return kDisconnected; // rc=1
+
+        switch (fHeader.fState&FTM::kFtmStates)
+        {
+        case FTM::kFtmUndefined:  // 0
+            return fBufStaticData.valid() ? kConnected :  kDisconnected;    // rc=2
+
+        case FTM::kFtmRunning:    // 3
+        case FTM::kFtmCalib:      // 4
+            return kTriggerOn;    // rc=4
+
+        case FTM::kFtmIdle:      // 1
+        case FTM::kFtmConfig:    // 2          //  rc=7          // rc=3
+            return fStaticData == fBufStaticData ? kConfigured : kIdle;
+        }
+
+        throw runtime_error("ConnectionFTM::GetState - Impossible code reached.");
+    }
+
+    // If fState==2, the clock conditioner will always be reported as unlocked
+    //bool IsLocked() const { return fHeader.fState&FTM::kFtmLocked; }
+
+    uint32_t GetCounter(FTM::Types type) { return fCounter[type]; }
+
+    const FTM::StaticData &GetStaticData() const { return fStaticData; }
+};
+
+//const uint16_t ConnectionFTM::kMaxAddr = 0xfff;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimFTM : public ConnectionFTM
+{
+private:
+
+    DimDescribedService fDimPassport;
+    DimDescribedService fDimTriggerRates;
+    DimDescribedService fDimError;
+    DimDescribedService fDimFtuList;
+    DimDescribedService fDimStaticData;
+    DimDescribedService fDimDynamicData;
+    DimDescribedService fDimCounter;
+
+    uint64_t fTimeStamp;
+    uint64_t fTimeStampOn;
+    uint32_t fTriggerCounter;
+    uint64_t fPrevState;
+
+    void UpdateFirstHeader()
+    {
+        ConnectionFTM::UpdateFirstHeader();
+
+        const FTM::DimPassport data(fHeader);
+        fDimPassport.Update(data);
+    }
+
+    /*
+    void UpdateHeader()
+    {
+        ConnectionFTM::UpdateHeader();
+
+        if (fHeader.fType!=FTM::kDynamicData)
+            return;
+
+        const FTM::DimTriggerCounter data(fHeader);
+        fDimTriggerCounter.Update(data);
+    }*/
+
+    void UpdateFtuList()
+    {
+        ConnectionFTM::UpdateFtuList();
+
+        const FTM::DimFtuList data(fHeader, fFtuList);
+        fDimFtuList.Update(data);
+    }
+
+    void UpdateStaticData()
+    {
+        ConnectionFTM::UpdateStaticData();
+
+        const FTM::DimStaticData data(fHeader, fStaticData);
+        fDimStaticData.setQuality(fHeader.fState);
+        fDimStaticData.Update(data);
+    }
+
+    void UpdateDynamicData()
+    {
+        ConnectionFTM::UpdateDynamicData();
+
+        const FTM::DimDynamicData data(fHeader, fDynamicData, fStaticData);
+        fDimDynamicData.setQuality(fHeader.fState);
+        fDimDynamicData.Update(data);
+
+        uint64_t odiff = fDynamicData.fOnTimeCounter;
+        uint32_t cdiff = fHeader.fTriggerCounter;
+        uint64_t tdiff = fHeader.fTimeStamp;
+
+        // The easiest way to detect whether the counters have been
+        // reset or not is to detect a state change, because with
+        // every state change they are reset. However, there are cases
+        // when the trigger is switched on already (data run) and
+        // the trigger is turned off ans switched on again within
+        // a very short time, that the state of the previous and the
+        // new report is the same. So in addition we have to check
+        // for other indications. Any counter decreasing is a hint.
+        // None of them should ever decrease. So all three are checked.
+        const uint8_t state = fHeader.fState & FTM::States::kFtmStates;
+
+        const bool first = state!=fPrevState ||
+            fHeader.fTimeStamp<fTimeStamp ||
+            fHeader.fTriggerCounter<fTriggerCounter ||
+            fDynamicData.fOnTimeCounter<fTimeStampOn;
+
+        if (!first)
+        {
+            tdiff -= fTimeStamp;
+            odiff -= fTimeStampOn;
+            cdiff -= fTriggerCounter;
+        }
+
+        // The observation time calculated in the first report is most likely
+        // too large because the previous report is taken as reference,
+        // but this is the best what could be done.
+        const float rate = tdiff==0 ? 0 : 1e6*cdiff/tdiff;
+
+        fTimeStamp      = fHeader.fTimeStamp;
+        fTimeStampOn    = fDynamicData.fOnTimeCounter;
+        fTriggerCounter = fHeader.fTriggerCounter;
+        fPrevState      = state;
+
+        const FTM::DimTriggerRates rates(fHeader, fDynamicData, fStaticData,
+                                         rate, tdiff*1e-6, odiff*1e-6);
+
+        fDimTriggerRates.setQuality(fHeader.fState);
+        fDimTriggerRates.Update(rates);
+    }
+
+    void UpdateError()
+    {
+        ConnectionFTM::UpdateError();
+
+        const FTM::DimError data(fHeader, fError);
+        fDimError.Update(data);
+    }
+
+    void UpdateCounter()
+    {
+        ConnectionFTM::UpdateCounter();
+
+        const uint32_t counter[6] =
+        {
+            fCounter[FTM::kHeader],
+            fCounter[FTM::kStaticData],
+            fCounter[FTM::kDynamicData],
+            fCounter[FTM::kFtuList],
+            fCounter[FTM::kErrorList],
+            fCounter[FTM::kRegister],
+        };
+
+        fDimCounter.setQuality(fHeader.fState);
+        fDimCounter.Update(counter);
+    }
+
+public:
+    ConnectionDimFTM(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionFTM(ioservice, imp),
+        fDimPassport      ("FTM_CONTROL/PASSPORT",        "X:1;S:1",
+                                                          "Info about the FTM and FPGA version"
+                                                          "|BoardId[int]:BoardId, hexCode"
+                                                          "|DNA[int]:DNA of the FTM board"),
+        fDimTriggerRates  ("FTM_CONTROL/TRIGGER_RATES",   "X:1;X:1;I:1;F:1;F:40;F:160;F:1;F:1",
+                                                          "Patch,Board,Camera trigger rates"
+                                                          "|FTMtimeStamp[us]:Time in microseconds, since trigger enabled or disabled"
+                                                          "|OnTimeCounter[us]:Effective on-time, ie. FTM triggers (eg. w/o busy)"
+                                                          "|TriggerCounter[int]:Counter of triggers since enabled or disabled"
+                                                          "|TriggerRate[Hz]:Trigger rate"
+                                                          "|BoardRate[Hz]:Trigger rate of individual FTUs"
+                                                          "|PatchRate[Hz]:Trigger rate of individual patches"
+                                                          "|ElapsedTime[s]:Time elapsed since previous report"
+                                                          "|OnTime[s]:OnTime elapsed since previous report"),
+        fDimError         ("FTM_CONTROL/ERROR",           "X:1;S:1;S:28", ""),
+        fDimFtuList       ("FTM_CONTROL/FTU_LIST",        "X:1;X:1;S:1;C:4;X:40;C:40;C:40",
+                                                          "Logs the changes of status of the FTUs"
+                                                          "|FTMtimeStamp[us]:Time in microseconds"
+                                                          "|ActiveFTU[bitpattern]:Description of enabled FTUs"
+                                                          "|NumBoards[int]:Total number of enabled FTUs"
+                                                          "|NumBoardsCrate[int]:Total number of enabled FTUs per crate"
+                                                          "|DNA[hexCode]:Hex code identifier of FTUs"
+                                                          "|Addr[bitpattern]:Crate address (hardware) of FTUs"
+                                                          "|Ping[int]:Number of pings until FTU response"),
+        fDimStaticData    ("FTM_CONTROL/STATIC_DATA",     "X:1;S:1;S:1;X:1;S:1;S:3;C:4;S:1;S:1;S:1;S:1;S:1;S:1;I:1;I:8;S:90;S:160;S:40;S:40",
+                                                          "Configuration of FTM and FTUs"
+                                                          "|FTMtimeStamp[us]:Time in microseconds, since trigger enabled or disabled"
+                                                          "|GeneralSettings[bitpattern]:Status of the FTM settings (cf. FTM doc)"
+                                                          "|LEDStatus[bitpattern]:Not Used"
+                                                          "|ActiveFTU[bitpattern]:List of enabled FTUs"
+                                                          "|TriggerInterval[bitpattern]:Period of cal. and ped. events (cf. FTM doc)"
+                                                          "|TriggerSeq[int]:Sequence of calib. and pedestal events (LPint, LPext, Ped)"
+                                                          "|LPSettings[bitpattern]:Settings of LP, enabled int, ext, intensity int, ext"
+                                                          "|PhysTrigMult[int]:N for N out of 40 logic on FTM (Physics)"
+                                                          "|CalibTrigMult[int]: N for N out of 40 logic on FTM (Calib)"
+                                                          "|PhysTrigWindow[ns]:Coincidence window for N out of 40 (Physics)"
+                                                          "|CalibTrigWindow[ns]:Coincidence window for N out of 40 (Calib)"
+                                                          "|TrigDelay[ns]:Trigger delay applied on FTM"
+                                                          "|TMDelay[ns]:TM delay applied on FTM"
+                                                          "|DeadTime[ns]:Dead time applied after each event on the FTM"
+                                                          "|ClkCond[bitpattern]:Clock conditionner settings on the FTM (DRS sampling freq.)"
+                                                          "|PixEnabled[bitpattern]:Enabled pixels, pckd in 90 shorts (160*9bits=180bytes)"
+                                                          "|PatchThresh[DACcounts]:Threshold of the trigger patches"
+                                                          "|Multiplicity[DACcounts]:N out of 4 logic settings per FTU"
+                                                          "|Prescaling[500ms]:Update rate of the rate counter"),
+        fDimDynamicData   ("FTM_CONTROL/DYNAMIC_DATA",    "X:1;X:1;F:4;I:160;I:40;S:40;S:40;S:40;S:1",
+                                                          "Regular reports sent by FTM"
+                                                          "|FTMtimeStamp[us]:Time in microseconds, since trigger enabled or disabled"
+                                                          "|OnTimeCounter[us]:Ontime, i.e. FTM processes triggers (e.g. No FAD busy)"
+                                                          "|Temperatures[Nan]:not yet defined nor used (wanna be FTM onboard temps)"
+                                                          "|TriggerPatchCounter[int]:counting since last update (prescaling)"
+                                                          "|BoardsCounter[int]:FTU board counting after N out of 4 and since last update"
+                                                          "|RateOverflow[bitpattern]:bits 0-4=patches overflow, 5=board overflow, 1 per board"
+                                                          "|Prescaling[500ms]:Update rate of the rate counter"
+                                                          "|CrcError[int]:Number of checksum error in RS485 communication"
+                                                          "|State[int]:State value of the FTM firmware (cf. FTM doc)"),
+        fDimCounter       ("FTM_CONTROL/COUNTER",         "I:1;I:1;I:1;I:1;I:1;I:1",
+                                                          "Communication statistics to or from FTM control and FTM"
+                                                          "|NumHeaders[int]:Num. of headers (any header) received by ftm control"
+                                                          "|NumStaticData[int]:Num. of static data blocks (ftm and ftu settings)"
+                                                          "|NumDynamicData[int]:Num. of dynamic data blocks (e.g. rates)"
+                                                          "|NumFtuList[int]:Num. of FTU list (FTU identifiers, answer from ping)"
+                                                          "|NumErrors[int]:Num. of error messages"
+                                                          "|NumRegister[int]:Num. of answers from a single register accesess"),
+        fTimeStamp(0), fTimeStampOn(0), fTriggerCounter(0), fPrevState(0)
+    {
+    }
+
+    // A B [C] [D] E [F] G H [I] J K [L] M N O P Q R [S] T U V W [X] Y Z
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineFTM : public StateMachineAsio<T>
+{
+    int Wrap(function<void()> f)
+    {
+        f();
+        return T::GetCurrentState();
+    }
+
+    function<int(const EventImp &)> Wrapper(function<void()> func)
+    {
+        return bind(&StateMachineFTM::Wrap, this, func);
+    }
+
+private:
+    S fFTM;
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int SetRegister(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetRegister", 8))
+            return T::kSM_FatalError;
+
+        const uint32_t *dat = evt.Ptr<uint32_t>();
+
+        if (dat[1]>uint16_t(-1))
+        {
+            ostringstream msg;
+            msg << hex << "Value " << dat[1] << " out of range.";
+            T::Error(msg);
+            return T::GetCurrentState();
+        }
+
+
+        if (dat[0]>uint16_t(-1) || !fFTM.CmdSetRegister(dat[0], dat[1]))
+        {
+            ostringstream msg;
+            msg << hex << "Address " << dat[0] << " out of range.";
+            T::Error(msg);
+        }
+
+        return T::GetCurrentState();
+    }
+
+    int GetRegister(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "GetRegister", 4))
+            return T::kSM_FatalError;
+
+        const unsigned int addr = evt.GetInt();
+        if (addr>uint16_t(-1) || !fFTM.CmdGetRegister(addr))
+        {
+            ostringstream msg;
+            msg << hex << "Address " << addr << " out of range.";
+            T::Error(msg);
+        }
+
+        return T::GetCurrentState();
+    }
+
+    int StartRun()
+    {
+        // This is a workaround... it seems that the FTM ignored the 'trigger on'
+        // as long as it is still sending thresholds to the FTUs (and it seems
+        // that this is the only command/confguration) which gets ignored.
+        // So if we are configuring, we resent this command until we got a
+        // reasonable answer (TriggerOn) back from the FTM.
+        // There is no need to send the command here, because Execute
+        // will be called immediately after this anyway before any
+        // answer could be processed. So it would just guarantee that
+        // the command is sent twice for no reason.
+
+        fFTM.CmdStartRun();
+
+        if (T::GetCurrentState()!=FTM::State::kConfigured1)
+            return T::GetCurrentState();
+
+        fCounterReg = fFTM.GetCounter(FTM::kRegister);
+        return FTM::State::kConfigured2;
+    }
+
+    int TakeNevents(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "TakeNevents", 4))
+            return T::kSM_FatalError;
+
+        const unsigned int dat = evt.GetUInt();
+
+        /*
+        if (dat[1]>uint32_t(-1))
+        {
+            ostringstream msg;
+            msg << hex << "Value " << dat[1] << " out of range.";
+            T::Error(msg);
+            return T::GetCurrentState();
+        }*/
+
+        fFTM.CmdTakeNevents(dat);
+
+        return T::GetCurrentState();
+    }
+
+    int DisableReports(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "DisableReports", 1))
+            return T::kSM_FatalError;
+
+        fFTM.CmdDisableReports(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fFTM.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetHexOutput(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetHexOutput", 1))
+            return T::kSM_FatalError;
+
+        fFTM.SetHexOutput(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetDynamicOut(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetDynamicOut", 1))
+            return T::kSM_FatalError;
+
+        fFTM.SetDynamicOut(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int LoadStaticData(const EventImp &evt)
+    {
+        if (fFTM.LoadStaticData(evt.GetString()))
+            return T::GetCurrentState();
+
+        ostringstream msg;
+        msg << "Loading static data from file '" << evt.GetString() << "' failed ";
+
+        if (errno)
+            msg << "(" << strerror(errno) << ")";
+        else
+            msg << "(wrong size, expected " << sizeof(FTM::StaticData) << " bytes)";
+
+        T::Warn(msg);
+
+        return T::GetCurrentState();
+    }
+
+    int SaveStaticData(const EventImp &evt)
+    {
+        if (fFTM.SaveStaticData(evt.GetString()))
+            return T::GetCurrentState();
+
+        ostringstream msg;
+        msg << "Writing static data to file '" << evt.GetString() << "' failed ";
+        msg << "(" << strerror(errno) << ")";
+
+        T::Warn(msg);
+
+        return T::GetCurrentState();
+    }
+
+    int SetThreshold(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetThreshold", 8))
+            return T::kSM_FatalError;
+
+        const int32_t *data = evt.Ptr<int32_t>();
+
+        if (!fFTM.SetThreshold(data[0], data[1]))
+        {
+            ostringstream msg;
+            msg << "SetThreshold - Maximum allowed patch number 159, valid value range 0-0xffff (got: " << data[0] << " " << data[1] << ")";
+            T::Warn(msg);
+        }
+
+        return T::GetCurrentState();
+    }
+
+    int SetSelectedThresholds(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetSelectedThresholds", 160*4))
+            return T::kSM_FatalError;
+
+        const int32_t *data = evt.Ptr<int32_t>();
+        if (!fFTM.SetSelectedThresholds(data))
+        {
+            ostringstream msg;
+            msg << "SetSelectedThresholds - Value out of range, maximum 0xffff.";
+            T::Warn(msg);
+        }
+
+        return T::GetCurrentState();
+    }
+
+    int SetAllThresholds(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetAllThresholds", 160*4))
+            return T::kSM_FatalError;
+
+        const int32_t *data = evt.Ptr<int32_t>();
+        if (!fFTM.SetAllThresholds(data))
+        {
+            ostringstream msg;
+            msg << "SetAllThresholds - Value out of range [0; 0xffff]";
+            T::Warn(msg);
+        }
+
+        return T::GetCurrentState();
+    }
+
+    int SetNoutof4(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetNoutof4", 8))
+            return T::kSM_FatalError;
+
+        const int32_t *data = evt.Ptr<int32_t>();
+
+        if (!fFTM.SetNoutof4(data[0], data[1]))
+            T::Warn("SetNoutof4 - Maximum allowed board number 39, valid value range 0-0xffff");
+
+        return T::GetCurrentState();
+    }
+
+    int EnableFTU(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "EnableFTU", 5))
+            return T::kSM_FatalError;
+
+        const int32_t &board  = evt.Get<int32_t>();
+        const int8_t  &enable = evt.Get<int8_t>(4);
+
+        if (!fFTM.EnableFTU(board, enable))
+            T::Warn("EnableFTU - Board number must be <40.");
+
+        return T::GetCurrentState();
+    }
+
+    int ToggleFTU(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "ToggleFTU", 4))
+            return T::kSM_FatalError;
+
+        if (!fFTM.ToggleFTU(evt.GetInt()))
+            T::Warn("ToggleFTU - Allowed range of boards 0-39.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetTriggerInterval(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetTriggerInterval", 4))
+            return T::kSM_FatalError;
+
+        if (!fFTM.SetTriggerInterval(evt.GetInt()))
+            T::Warn("SetTriggerInterval - Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetTriggerDelay(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetTriggerDelay", 4))
+            return T::kSM_FatalError;
+
+        if (!fFTM.SetTriggerDelay(evt.GetInt()))
+            T::Warn("SetTriggerDealy - Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetTimeMarkerDelay(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetTimeMarkerDelay", 4))
+            return T::kSM_FatalError;
+
+        if (!fFTM.SetTimeMarkerDelay(evt.GetInt()))
+            T::Warn("SetTimeMarkerDelay - Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetPrescaling(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetPrescaling", 4))
+            return T::kSM_FatalError;
+
+        if (!fFTM.SetPrescaling(evt.GetInt()-1))
+            T::Warn("SetPrescaling - Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetTriggerSeq(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetTriggerSeq", 6))
+            return T::kSM_FatalError;
+
+        const uint16_t *data = evt.Ptr<uint16_t>();
+
+        if (!fFTM.SetTriggerSeq(data))
+            T::Warn("SetTriggerSeq - Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetDeadTime(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetDeadTime", 4))
+            return T::kSM_FatalError;
+
+        if (!fFTM.SetDeadTime(evt.GetInt()))
+            T::Warn("SetDeadTime - Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetTriggerMultiplicity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetTriggerMultiplicity", 2))
+            return T::kSM_FatalError;
+
+        if (!fFTM.SetTriggerMultiplicity(evt.GetUShort()))
+            T::Warn("SetTriggerMultiplicity -  Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetCalibMultiplicity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetCalibMultiplicity", 2))
+            return T::kSM_FatalError;
+
+        if (!fFTM.SetCalibMultiplicity(evt.GetUShort()))
+            T::Warn("SetCalibMultiplicity -  Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetTriggerWindow(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetTriggerWindow", 2))
+            return T::kSM_FatalError;
+
+        if (!fFTM.SetTriggerWindow(evt.GetUShort()))
+            T::Warn("SetTriggerWindow -  Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetCalibWindow(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetCalibWindow", 2))
+            return T::kSM_FatalError;
+
+        if (!fFTM.SetCalibWindow(evt.GetUShort()))
+            T::Warn("SetCalibWindow -  Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetClockRegister(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetClockRegister", 8*8))
+            return T::kSM_FatalError;
+
+        const uint64_t *reg = evt.Ptr<uint64_t>();
+
+        if (!fFTM.SetClockRegister(reg))
+            T::Warn("SetClockRegister - Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetClockFrequency(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetClockFrequency", 2))
+            return T::kSM_FatalError;
+
+        const map<uint16_t,array<uint64_t, 8>>::const_iterator it =
+            fClockCondSetup.find(evt.GetUShort());
+
+        if (it==fClockCondSetup.end())
+        {
+            T::Warn("SetClockFrequency - Frequency not supported.");
+            return T::GetCurrentState();
+        }
+
+        if (!fFTM.SetClockRegister(it->second.data()))
+            T::Warn("SetClockFrequency - Register values out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int EnableLP(const EventImp &evt, FTM::StaticData::GeneralSettings lp, FTM::StaticData::LightPulserEnable group)
+    {
+        if (!CheckEventSize(evt.GetSize(), "EnableLP", 1))
+            return T::kSM_FatalError;
+
+        if (!fFTM.EnableLP(lp, group, evt.GetBool()))
+            T::Warn("EnableLP - Invalid light pulser id.");
+
+        return T::GetCurrentState();
+    }
+
+    int SetIntensity(const EventImp &evt, FTM::StaticData::GeneralSettings lp)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetIntensity", 2))
+            return T::kSM_FatalError;
+
+        if (!fFTM.SetIntensity(lp, evt.GetShort()))
+            T::Warn("SetIntensity - Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int Enable(const EventImp &evt, FTM::StaticData::GeneralSettings type)
+    {
+        if (!CheckEventSize(evt.GetSize(), "Enable", 1))
+            return T::kSM_FatalError;
+
+        fFTM.Enable(type, evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int EnablePixel(const EventImp &evt, bool b)
+    {
+        if (!CheckEventSize(evt.GetSize(), "EnablePixel", 2))
+            return T::kSM_FatalError;
+
+        if (!fFTM.EnablePixel(evt.GetUShort(), b))
+            T::Warn("EnablePixel -  Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int DisableAllPixelsExcept(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "DisableAllPixelsExcept", 2))
+            return T::kSM_FatalError;
+
+        if (!fFTM.DisableAllPixelsExcept(evt.GetUShort()))
+            T::Warn("DisableAllPixelsExcept -  Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int DisableAllPatchesExcept(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "DisableAllPatchesExcept", 2))
+            return T::kSM_FatalError;
+
+        if (!fFTM.DisableAllPatchesExcept(evt.GetUShort()))
+            T::Warn("DisableAllPatchesExcept -  Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int EnablePatch(const EventImp &evt, bool enable)
+    {
+        if (!CheckEventSize(evt.GetSize(), "EnablePatch", 2))
+            return T::kSM_FatalError;
+
+        if (!fFTM.EnablePatch(evt.GetUShort(), enable))
+            T::Warn("EnablePatch -  Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int TogglePixel(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "TogglePixel", 2))
+            return T::kSM_FatalError;
+
+        if (!fFTM.TogglePixel(evt.GetUShort()))
+            T::Warn("TogglePixel -  Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
+    int ResetCrate(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "ResetCrate", 2))
+            return T::kSM_FatalError;
+
+        fFTM.CmdResetCrate(evt.GetUShort());
+
+        return T::GetCurrentState();
+    }
+
+    int Disconnect()
+    {
+        // Close all connections
+        fFTM.PostClose(false);
+
+        /*
+         // Now wait until all connection have been closed and
+         // all pending handlers have been processed
+         poll();
+         */
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fFTM.PostClose(false);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        ba::io_service::poll();
+
+        if (evt.GetBool())
+            fFTM.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fFTM.PostClose(true);
+
+        return T::GetCurrentState();
+    }
+
+    /*
+    int Transition(const Event &evt)
+    {
+        switch (evt.GetTargetState())
+        {
+        case kDisconnected:
+        case kConnected:
+        }
+
+        return T::kSM_FatalError;
+    }*/
+
+    uint32_t fCounterReg;
+    uint32_t fCounterStat;
+
+    typedef map<string, FTM::StaticData> Configs;
+    Configs fConfigs;
+    Configs::const_iterator fTargetConfig;
+
+    int ConfigureFTM(const EventImp &evt)
+    {
+        const string name = evt.GetText();
+
+        fTargetConfig = fConfigs.find(name);
+        if (fTargetConfig==fConfigs.end())
+        {
+            T::Error("ConfigureFTM - Run-type '"+name+"' not found.");
+            return T::GetCurrentState();
+        }
+
+        T::Message("Starting configuration for '"+name+"' ["+to_string(fFTM.IsTxQueueEmpty())+"]");
+
+        fCounterReg = fFTM.GetCounter(FTM::kRegister);
+        fFTM.CmdStopRun();
+
+        return FTM::State::kConfiguring1;
+    }
+
+    int ResetConfig()
+    {
+        return fFTM.GetState();
+    }
+
+    int Execute()
+    {
+        // If FTM is neither in data taking nor idle,
+        // leave configuration state
+        switch (fFTM.GetState())
+        {
+        case ConnectionFTM::kDisconnected: return FTM::State::kDisconnected;
+        case ConnectionFTM::kConnected:    return FTM::State::kConnected;
+        default:
+            break;
+        }
+
+        // FIXME: Add timeouts and go to error state
+        //        so that a configuration error can be handled
+        switch (T::GetCurrentState())
+        {
+        case FTM::State::kConfiguring1:
+            // If FTM has received an anwer to the stop_run command
+            // the counter for the registers has been increased
+            if (fFTM.GetCounter(FTM::kRegister)<=fCounterReg)
+                return FTM::State::kConfiguring1;
+
+            // If now the state is not idle as expected this means we had
+            // an error (maybe old events waiting in the queue)
+            if (fFTM.GetState()!=ConnectionFTM::kIdle &&
+                fFTM.GetState()!=ConnectionFTM::kConfigured)
+                return FTM::State::kConfigError1;
+
+            fCounterStat = fFTM.GetCounter(FTM::kStaticData);
+
+            fFTM.CmdSendStatDat(fTargetConfig->second);
+
+            T::Message("Trigger successfully disabled... sending new configuration.");
+
+            // Next state is: wait for the answer to our configuration
+            return FTM::State::kConfiguring2;
+
+        case FTM::State::kConfiguring2:
+        case FTM::State::kConfigured1:
+            // If FTM has received an anwer to the CmdSendStatDat
+            // the counter for static data has been increased
+            if (fFTM.GetCounter(FTM::kStaticData)<=fCounterStat)
+                break;
+
+            // If now the configuration is not what we expected
+            // we had an error (maybe old events waiting in the queue?)
+            if (fFTM.GetState()!=ConnectionFTM::kConfigured)
+                return FTM::State::kConfigError2;
+
+            // Check configuration again when a new static data block
+            // will be received
+            fCounterStat = fFTM.GetCounter(FTM::kStaticData);
+
+            // This is also displayed when the ratecontrol sends its configuration...
+            if (T::GetCurrentState()==FTM::State::kConfiguring2)
+                T::Message("Sending new configuration was successfull.");
+            else
+                T::Message("Configuration successfully updated.");
+
+            // Next state is: wait for the answer to our configuration
+            return FTM::State::kConfigured1;
+
+        // This state is set by StartRun [START_TRIGGER]
+        case FTM::State::kConfigured2:
+            // No answer to the CmdStartRun received yet... go on waiting
+            if (fFTM.GetCounter(FTM::kRegister)<=fCounterReg)
+                return FTM::State::kConfigured2;
+
+            // Answer received and trigger enable acknowledged
+            if (fFTM.GetState()==ConnectionFTM::kTriggerOn)
+                return FTM::State::kTriggerOn;
+
+            // If the trigger is not enabled, but the configuration
+            // has changed go to error state (should never happen)
+            if (fFTM.GetState()!=ConnectionFTM::kConfigured)
+                return FTM::State::kConfigError2;
+
+            // Send a new command... the previous one might have gone
+            // ignored by the ftm because it was just after a
+            // threshold setting during the configured state
+            fFTM.CmdStartRun(false);
+
+            // Set counter to wait for answer.
+            fCounterReg = fFTM.GetCounter(FTM::kRegister);
+
+            // Go on waiting for a proper acknowledge of the trigger enable
+            return FTM::State::kConfigured2;
+
+        case FTM::State::kConfigError1:
+        case FTM::State::kConfigError2:
+        //case FTM::State::kConfigError3:
+            break;
+
+        default:
+            switch (fFTM.GetState())
+            {
+            case ConnectionFTM::kIdle:         return FTM::State::kIdle;
+            case ConnectionFTM::kConfigured:   return FTM::State::kValid;
+            case ConnectionFTM::kTriggerOn:    return FTM::State::kTriggerOn;
+            default:
+                throw runtime_error("StateMachineFTM - Execute() - Inavlid state.");
+            }
+        }
+
+        return T::GetCurrentState();
+    }
+
+public:
+    StateMachineFTM(ostream &out=cout) :
+        StateMachineAsio<T>(out, "FTM_CONTROL"), fFTM(*this, *this)
+    {
+        // State names
+        T::AddStateName(FTM::State::kDisconnected, "Disconnected",
+                        "FTM board not connected via ethernet.");
+
+        T::AddStateName(FTM::State::kConnected, "Connected",
+                        "Ethernet connection to FTM established (no state received yet).");
+
+        T::AddStateName(FTM::State::kIdle, "Idle",
+                        "Ethernet connection to FTM established, FTM in idle state.");
+
+        T::AddStateName(FTM::State::kValid, "Valid",
+                        "FTM in idle state and the last sent and received static data block are bitwise identical.");
+
+        T::AddStateName(FTM::State::kConfiguring1, "Configuring1",
+                        "Command to disable run sent... waiting for response.");
+        T::AddStateName(FTM::State::kConfiguring2, "Configuring2",
+                        "New configuration sent... waiting for response.");
+        T::AddStateName(FTM::State::kConfigured1,   "Configured1",
+                        "Received answer identical with target configuration.");
+        T::AddStateName(FTM::State::kConfigured2, "Configured2",
+                        "Waiting for acknowledge of trigger enable.");
+
+        T::AddStateName(FTM::State::kTriggerOn, "TriggerOn",
+                        "Ethernet connection to FTM established, FTM trigger output to FADs enabled.");
+
+        T::AddStateName(FTM::State::kConfigError1, "ErrorInConfig1", "Unexpected state received from FTM");
+        T::AddStateName(FTM::State::kConfigError2, "ErrorInConfig2", "Unexpected state received from FTM");
+        //T::AddStateName(FTM::State::kConfigError3, "ClockCondError", "Clock conditioner not locked");
+
+        // FTM Commands
+        T::AddEvent("TOGGLE_LED", FTM::State::kIdle, FTM::State::kValid)
+            (Wrapper(bind(&ConnectionFTM::CmdToggleLed, &fFTM)))
+            ("toggle led");
+
+        T::AddEvent("PING", FTM::State::kIdle, FTM::State::kValid)
+            (Wrapper(bind(&ConnectionFTM::CmdPing, &fFTM)))
+            ("send ping");
+
+        T::AddEvent("REQUEST_DYNAMIC_DATA", FTM::State::kIdle, FTM::State::kValid)
+            (Wrapper(bind(&ConnectionFTM::CmdReqDynDat, &fFTM)))
+            ("request transmission of dynamic data block");
+
+        T::AddEvent("REQUEST_STATIC_DATA", FTM::State::kIdle, FTM::State::kValid)
+            (Wrapper(bind(&ConnectionFTM::CmdReqStatDat, &fFTM)))
+            ("request transmission of static data from FTM to memory");
+
+        T::AddEvent("GET_REGISTER", "I", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::GetRegister, this, placeholders::_1))
+            ("read register from address addr"
+            "|addr[short]:Address of register");
+
+        T::AddEvent("SET_REGISTER", "I:2", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetRegister, this, placeholders::_1))
+            ("set register to value"
+            "|addr[short]:Address of register"
+            "|val[short]:Value to be set");
+
+        T::AddEvent("START_TRIGGER", FTM::State::kIdle, FTM::State::kValid, FTM::State::kConfigured1, FTM::State::kConfigured2)
+            (bind(&StateMachineFTM::StartRun, this))
+            ("start a run (start distributing triggers)");
+
+        T::AddEvent("STOP_TRIGGER", FTM::State::kTriggerOn)
+            (Wrapper(bind(&ConnectionFTM::CmdStopRun, &fFTM)))
+            ("stop a run (stop distributing triggers)");
+
+        T::AddEvent("TAKE_N_EVENTS", "I", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::TakeNevents, this, placeholders::_1))
+            ("take n events (distribute n triggers)|number[int]:Number of events to be taken");
+
+        T::AddEvent("DISABLE_REPORTS", "B", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::DisableReports, this, placeholders::_1))
+            ("disable sending rate reports"
+             "|status[bool]:disable or enable that the FTM sends rate reports (yes/no)");
+
+        T::AddEvent("SET_THRESHOLD", "I:2", FTM::State::kIdle, FTM::State::kValid, FTM::State::kConfigured1, FTM::State::kTriggerOn)
+            (bind(&StateMachineFTM::SetThreshold, this, placeholders::_1))
+            ("Set the comparator threshold"
+             "|Patch[idx]:Index of the patch (0-159), -1 for all"
+             "|Threshold[counts]:Threshold to be set in binary counts");
+
+        T::AddEvent("SET_SELECTED_THRESHOLDS", "I:160", FTM::State::kTriggerOn)
+            (bind(&StateMachineFTM::SetSelectedThresholds, this, placeholders::_1))
+            ("Set the comparator thresholds. Only thresholds which are different and >=0 are sent."
+             "|Thresholds[counts]:Threshold to be set in binary counts");
+
+        T::AddEvent("SET_ALL_THRESHOLDS", "I:160", FTM::State::kIdle, FTM::State::kValid, FTM::State::kConfigured1)
+            (bind(&StateMachineFTM::SetAllThresholds, this, placeholders::_1))
+            ("Set the comparator thresholds"
+             "|Thresholds[counts]:Threshold to be set in binary counts");
+
+        T::AddEvent("SET_N_OUT_OF_4", "I:2", FTM::State::kIdle, FTM::State::kValid, FTM::State::kTriggerOn)
+            (bind(&StateMachineFTM::SetNoutof4, this, placeholders::_1))
+            ("Set the comparator threshold"
+             "|Board[idx]:Index of the board (0-39), -1 for all"
+             "|Threshold[counts]:Threshold to be set in binary counts");
+
+        T::AddEvent("SET_PRESCALING", "I:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetPrescaling, this, placeholders::_1))
+            ("Sets the FTU readout time intervals"
+             "|time[0.5s]:The interval is given in units of 0.5s, i.e. 1 means 0.5s, 2 means 1s, ...");
+
+        T::AddEvent("ENABLE_FTU", "I:1;B:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::EnableFTU, this, placeholders::_1))
+            ("Enable or disable FTU"
+             "|Board[idx]:Index of the board (0-39), -1 for all"
+             "|Enable[bool]:Whether FTU should be enabled or disabled (yes/no)");
+
+        T::AddEvent("DISABLE_PIXEL", "S:1", FTM::State::kIdle, FTM::State::kValid, FTM::State::kTriggerOn)
+            (bind(&StateMachineFTM::EnablePixel, this, placeholders::_1, false))
+            ("(-1 or all)");
+
+        T::AddEvent("ENABLE_PIXEL", "S:1", FTM::State::kIdle, FTM::State::kValid, FTM::State::kTriggerOn)
+            (bind(&StateMachineFTM::EnablePixel, this, placeholders::_1, true))
+            ("(-1 or all)");
+
+        T::AddEvent("DISABLE_ALL_PIXELS_EXCEPT", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::DisableAllPixelsExcept, this, placeholders::_1))
+            ("");
+
+        T::AddEvent("DISABLE_ALL_PATCHES_EXCEPT", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::DisableAllPatchesExcept, this, placeholders::_1))
+            ("");
+
+        T::AddEvent("ENABLE_PATCH", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::EnablePatch, this, placeholders::_1, true))
+            ("");
+
+        T::AddEvent("DISABLE_PATCH", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::EnablePatch, this, placeholders::_1, false))
+            ("");
+
+        T::AddEvent("TOGGLE_PIXEL", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::TogglePixel, this, placeholders::_1))
+            ("");
+
+        T::AddEvent("TOGGLE_FTU", "I:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::ToggleFTU, this, placeholders::_1))
+            ("Toggle status of FTU (this is mainly meant to be used in the GUI)"
+             "|Board[idx]:Index of the board (0-39)");
+
+        T::AddEvent("SET_TRIGGER_INTERVAL", "I:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetTriggerInterval, this, placeholders::_1))
+            ("Sets the trigger interval which is the distance between two consecutive artificial triggers."
+             "|interval[ms]:The applied trigger interval in millisecond (min 1ms / 10bit)");
+
+        T::AddEvent("SET_TRIGGER_DELAY", "I:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetTriggerDelay, this, placeholders::_1))
+            (""
+             "|delay[int]:The applied trigger delay is: delay*4ns+8ns");
+
+        T::AddEvent("SET_TIME_MARKER_DELAY", "I:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetTimeMarkerDelay, this, placeholders::_1))
+            (""
+            "|delay[int]:The applied time marker delay is: delay*4ns+8ns");
+
+        T::AddEvent("SET_DEAD_TIME", "I:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetDeadTime, this, placeholders::_1))
+            (""
+            "|dead_time[int]:The applied dead time is: dead_time*4ns+8ns");
+
+        T::AddEvent("ENABLE_TRIGGER", "B:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::Enable, this, placeholders::_1, FTM::StaticData::kTrigger))
+            ("Switch on the physics trigger"
+             "|Enable[bool]:Enable physics trigger (yes/no)");
+
+        // FIXME: Switch on/off depending on sequence
+        T::AddEvent("ENABLE_EXT1", "B:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::Enable, this, placeholders::_1, FTM::StaticData::kExt1))
+            ("Switch on the triggers through the first external line"
+             "|Enable[bool]:Enable ext1 trigger (yes/no)");
+
+        // FIXME: Switch on/off depending on sequence
+        T::AddEvent("ENABLE_EXT2", "B:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::Enable, this, placeholders::_1, FTM::StaticData::kExt2))
+            ("Switch on the triggers through the second external line"
+             "|Enable[bool]:Enable ext2 trigger (yes/no)");
+
+        T::AddEvent("ENABLE_VETO", "B:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::Enable, this, placeholders::_1, FTM::StaticData::kVeto))
+            ("Enable veto line"
+             "|Enable[bool]:Enable veto (yes/no)");
+
+        T::AddEvent("ENABLE_CLOCK_CONDITIONER", "B:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::Enable, this, placeholders::_1, FTM::StaticData::kClockConditioner))
+            ("Enable clock conidtioner output in favor of time marker output"
+             "|Enable[bool]:Enable clock conditioner (yes/no)");
+
+        T::AddEvent("ENABLE_GROUP1_LPINT", "B:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::EnableLP, this, placeholders::_1, FTM::StaticData::kLPint, FTM::StaticData::kGroup1))
+            ("");
+        T::AddEvent("ENABLE_GROUP1_LPEXT", "B:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::EnableLP, this, placeholders::_1, FTM::StaticData::kLPext, FTM::StaticData::kGroup1))
+            ("");
+        T::AddEvent("ENABLE_GROUP2_LPINT", "B:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::EnableLP, this, placeholders::_1, FTM::StaticData::kLPint, FTM::StaticData::kGroup2))
+            ("");
+        T::AddEvent("ENABLE_GROUP2_LPEXT", "B:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::EnableLP, this, placeholders::_1, FTM::StaticData::kLPext, FTM::StaticData::kGroup2))
+            ("");
+        T::AddEvent("SET_INTENSITY_LPINT", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetIntensity, this, placeholders::_1, FTM::StaticData::kLPint))
+            ("");
+        T::AddEvent("SET_INTENSITY_LPEXT", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetIntensity, this, placeholders::_1, FTM::StaticData::kLPext))
+            ("");
+
+
+        T::AddEvent("SET_TRIGGER_SEQUENCE", "S:3", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetTriggerSeq, this, placeholders::_1))
+            ("Setup the sequence of artificial triggers produced by the FTM"
+             "|Ped[short]:number of pedestal triggers in a row"
+             "|LPext[short]:number of triggers of the external light pulser"
+             "|LPint[short]:number of triggers of the internal light pulser");
+
+        T::AddEvent("SET_TRIGGER_MULTIPLICITY", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetTriggerMultiplicity, this, placeholders::_1))
+            ("Setup the Multiplicity condition for physcis triggers"
+             "|N[int]:Number of requirered coincident triggers from sum-patches (1-40)");
+
+        T::AddEvent("SET_TRIGGER_WINDOW", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetTriggerWindow, this, placeholders::_1))
+            ("");
+
+        T::AddEvent("SET_CALIBRATION_MULTIPLICITY", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetCalibMultiplicity, this, placeholders::_1))
+            ("Setup the Multiplicity condition for artificial (calibration) triggers"
+             "|N[int]:Number of requirered coincident triggers from sum-patches (1-40)");
+
+        T::AddEvent("SET_CALIBRATION_WINDOW", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetCalibWindow, this, placeholders::_1))
+            ("");
+
+        T::AddEvent("SET_CLOCK_FREQUENCY", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetClockFrequency, this, placeholders::_1))
+            ("");
+
+        T::AddEvent("SET_CLOCK_REGISTER", "X:8", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SetClockRegister, this, placeholders::_1))
+            ("");
+
+        // A new configure will first stop the FTM this means
+        // we can allow it in idle _and_ taking data
+        T::AddEvent("CONFIGURE", "C")(FTM::State::kIdle)(FTM::State::kValid)(FTM::State::kConfiguring1)(FTM::State::kConfiguring2)(FTM::State::kConfigured1)(FTM::State::kConfigured2)(FTM::State::kTriggerOn)
+            (bind(&StateMachineFTM::ConfigureFTM, this, placeholders::_1))
+            ("");
+
+        T::AddEvent("RESET_CONFIGURE")(FTM::State::kConfiguring1)(FTM::State::kConfiguring2)(FTM::State::kConfigured1)(FTM::State::kConfigured2)(FTM::State::kConfigError1)(FTM::State::kConfigError2)(FTM::State::kConfigError2)
+            (bind(&StateMachineFTM::ResetConfig, this))
+            ("Reset states during a configuration or in case of configuration error");
+
+
+
+        T::AddEvent("RESET_CRATE", "S:1", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::ResetCrate, this, placeholders::_1))
+            ("Reset one of the crates 0-3"
+             "|crate[short]:Crate number to be reseted (0-3)");
+
+        T::AddEvent("RESET_CAMERA", FTM::State::kIdle, FTM::State::kValid)
+            (Wrapper(bind(&ConnectionFTM::CmdResetCamera, &fFTM)))
+            ("Reset all crates. The commands are sent in the order 0,1,2,3");
+
+
+        // Load/save static data block
+        T::AddEvent("SAVE", "C", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::SaveStaticData, this, placeholders::_1))
+            ("Saves the static data (FTM configuration) from memory to a file"
+             "|filename[string]:Filename (can include a path), .bin is automatically added");
+
+        T::AddEvent("LOAD", "C", FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::LoadStaticData, this, placeholders::_1))
+            ("Loads the static data (FTM configuration) from a file into memory and sends it to the FTM"
+             "|filename[string]:Filename (can include a path), .bin is automatically added");
+
+
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B")
+            (bind(&StateMachineFTM::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+
+        T::AddEvent("SET_HEX_OUTPUT", "B")
+            (bind(&StateMachineFTM::SetHexOutput, this, placeholders::_1))
+            ("enable or disable hex output for received data"
+             "|hexout[bool]:disable or enable hex output for received data (yes/no)");
+
+        T::AddEvent("SET_DYNAMIC_OUTPUT", "B")
+            (bind(&StateMachineFTM::SetDynamicOut, this, placeholders::_1))
+            ("enable or disable output for received dynamic data (data is still broadcasted via Dim)"
+             "|dynout[bool]:disable or enable output for dynamic data (yes/no)");
+
+
+        // Conenction commands
+        T::AddEvent("DISCONNECT", FTM::State::kConnected, FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::Disconnect, this))
+            ("disconnect from ethernet");
+
+        T::AddEvent("RECONNECT", "O", FTM::State::kDisconnected, FTM::State::kConnected, FTM::State::kIdle, FTM::State::kValid)
+            (bind(&StateMachineFTM::Reconnect, this, placeholders::_1))
+            ("(Re)connect ethernet connection to FTM, a new address can be given"
+             "|[host][string]:new ethernet address in the form <host:port>");
+
+        fFTM.StartConnect();
+    }
+
+    void SetEndpoint(const string &url)
+    {
+        fFTM.SetEndpoint(url);
+    }
+
+    map<uint16_t, array<uint64_t, 8>> fClockCondSetup;
+
+    template<class V>
+    bool CheckConfigVal(Configuration &conf, V max, const string &name, const string &sub)
+    {
+        if (!conf.HasDef(name, sub))
+        {
+            T::Error("Neither "+name+"default nor "+name+sub+" found.");
+            return false;
+        }
+
+        const V val = conf.GetDef<V>(name, sub);
+
+        if (val<=max)
+            return true;
+
+        ostringstream str;
+        str << name << sub << "=" << val << " exceeds allowed maximum of " << max << "!";
+        T::Error(str);
+
+        return false;
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        // ---------- General setup ----------
+        fFTM.SetVerbose(!conf.Get<bool>("quiet"));
+        fFTM.SetHexOutput(conf.Get<bool>("hex-out"));
+        fFTM.SetDynamicOut(conf.Get<bool>("dynamic-out"));
+
+        // ---------- Setup clock conditioner frequencies ----------
+        const vector<uint16_t> freq = conf.Vec<uint16_t>("clock-conditioner.frequency");
+        if (freq.empty())
+            T::Warn("No frequencies for the clock-conditioner defined.");
+        else
+            T::Message("Defining clock conditioner frequencies");
+        for (vector<uint16_t>::const_iterator it=freq.begin();
+             it!=freq.end(); it++)
+        {
+            if (fClockCondSetup.count(*it)>0)
+            {
+                T::Error("clock-conditioner frequency defined twice.");
+                return 1;
+            }
+
+            if (!conf.HasDef("clock-conditioner.R0.",  *it) ||
+                !conf.HasDef("clock-conditioner.R1.",  *it) ||
+                !conf.HasDef("clock-conditioner.R8.",  *it) ||
+                !conf.HasDef("clock-conditioner.R9.",  *it) ||
+                !conf.HasDef("clock-conditioner.R11.", *it) ||
+                !conf.HasDef("clock-conditioner.R13.", *it) ||
+                !conf.HasDef("clock-conditioner.R14.", *it) ||
+                !conf.HasDef("clock-conditioner.R15.", *it))
+            {
+                T::Error("clock-conditioner values incomplete.");
+                return 1;
+            }
+
+            array<uint64_t, 8> &arr = fClockCondSetup[*it];
+
+            arr[0] = conf.GetDef<Hex<uint32_t>>("clock-conditioner.R0.",  *it);
+            arr[1] = conf.GetDef<Hex<uint32_t>>("clock-conditioner.R1.",  *it);
+            arr[2] = conf.GetDef<Hex<uint32_t>>("clock-conditioner.R8.",  *it);
+            arr[3] = conf.GetDef<Hex<uint32_t>>("clock-conditioner.R9.",  *it);
+            arr[4] = conf.GetDef<Hex<uint32_t>>("clock-conditioner.R11.", *it);
+            arr[5] = conf.GetDef<Hex<uint32_t>>("clock-conditioner.R13.", *it);
+            arr[6] = conf.GetDef<Hex<uint32_t>>("clock-conditioner.R14.", *it);
+            arr[7] = conf.GetDef<Hex<uint32_t>>("clock-conditioner.R15.", *it);
+
+            ostringstream out;
+            out << " -> " << setw(4) << *it << "MHz:" << hex << setfill('0');
+            for (int i=0; i<8; i++)
+                out << " " << setw(8) << arr[i];
+            T::Message(out.str());
+        }
+
+        // ---------- Setup run types ---------
+        const vector<string> types = conf.Vec<string>("run-type");
+        if (types.empty())
+            T::Warn("No run-types defined.");
+        else
+            T::Message("Defining run-types");
+        for (vector<string>::const_iterator it=types.begin();
+             it!=types.end(); it++)
+        {
+            T::Message(" -> "+ *it);
+
+            if (fConfigs.count(*it)>0)
+            {
+                T::Error("Run-type "+*it+" defined twice.");
+                return 2;
+            }
+
+            if (!conf.HasDef("sampling-frequency.", *it))
+            {
+                T::Error("Neither sampling-frequency."+*it+" nor sampling-frequency.default found.");
+                return 2;
+            }
+
+            const uint16_t frq = conf.GetDef<uint16_t>("sampling-frequency.", *it);
+
+            FTM::StaticData data;
+            data.SetClockRegister(fClockCondSetup[frq].data());
+
+            // Trigger sequence ped:lp1:lp2
+            // (data. is used here as an abbreviation for FTM::StaticData::
+            if (!CheckConfigVal<bool>    (conf, true,                     "trigger.enable-trigger.",              *it) ||
+                !CheckConfigVal<bool>    (conf, true,                     "trigger.enable-external-1.",           *it) ||
+                !CheckConfigVal<bool>    (conf, true,                     "trigger.enable-external-2.",           *it) ||
+                !CheckConfigVal<bool>    (conf, true,                     "trigger.enable-veto.",                 *it) ||
+                !CheckConfigVal<bool>    (conf, true,                     "trigger.enable-clock-conditioner.",    *it) ||
+                !CheckConfigVal<bool>    (conf, true,                     "light-pulser.external.enable-group1.", *it) ||
+                !CheckConfigVal<bool>    (conf, true,                     "light-pulser.external.enable-group2.", *it) ||
+                !CheckConfigVal<bool>    (conf, true,                     "light-pulser.internal.enable-group1.", *it) ||
+                !CheckConfigVal<bool>    (conf, true,                     "light-pulser.internal.enable-group2.", *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxSequence,        "trigger.sequence.pedestal.",           *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxSequence,        "trigger.sequence.lp-ext.",             *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxSequence,        "trigger.sequence.lp-int.",             *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxTriggerInterval, "trigger.sequence.interval.",           *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxMultiplicity,    "trigger.multiplicity-physics.",        *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxMultiplicity,    "trigger.multiplicity-calib.",          *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxWindow,          "trigger.coincidence-window-physics.",  *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxWindow,          "trigger.coincidence-window-calib.",    *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxDeadTime,        "trigger.dead-time.",                   *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxDelayTrigger,    "trigger.delay.",                       *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxDelayTimeMarker, "trigger.time-marker-delay.",           *it) ||
+                !CheckConfigVal<uint16_t>(conf, 0xffff,                   "ftu-report-interval.",                 *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxIntensity,       "light-pulser.external.intensity.",     *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxIntensity,       "light-pulser.internal.intensity.",     *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxDAC,             "trigger.threshold.patch.",             *it) ||
+                !CheckConfigVal<uint16_t>(conf, data.kMaxDAC,             "trigger.threshold.logic.",             *it) ||
+                0)
+                return 2;
+
+            data.Enable(data.kTrigger,          conf.GetDef<bool>("trigger.enable-trigger.",           *it));
+            data.Enable(data.kExt1,             conf.GetDef<bool>("trigger.enable-external-1.",        *it));
+            data.Enable(data.kExt2,             conf.GetDef<bool>("trigger.enable-external-2.",        *it));
+            data.Enable(data.kVeto,             conf.GetDef<bool>("trigger.enable-veto.",              *it));
+            data.Enable(data.kClockConditioner, conf.GetDef<bool>("trigger.enable-clock-conditioner.", *it));
+
+            data.EnableLPint(data.kGroup1, conf.GetDef<bool>("light-pulser.internal.enable-group1.", *it));
+            data.EnableLPint(data.kGroup2, conf.GetDef<bool>("light-pulser.internal.enable-group2.", *it));
+            data.EnableLPext(data.kGroup1, conf.GetDef<bool>("light-pulser.external.enable-group1.", *it));
+            data.EnableLPext(data.kGroup2, conf.GetDef<bool>("light-pulser.external.enable-group2.", *it));
+
+            // [ms] Interval between two artificial triggers (no matter which type) minimum 1ms, 10 bit
+            data.fIntensityLPint      = conf.GetDef<uint16_t>("light-pulser.internal.intensity.", *it);
+            data.fIntensityLPext      = conf.GetDef<uint16_t>("light-pulser.external.intensity.", *it);
+            data.fTriggerInterval     = conf.GetDef<uint16_t>("trigger.sequence.interval.",          *it);
+            data.fMultiplicityPhysics = conf.GetDef<uint16_t>("trigger.multiplicity-physics.",       *it);
+            data.fMultiplicityCalib   = conf.GetDef<uint16_t>("trigger.multiplicity-calib.",         *it);
+            data.fWindowPhysics       = conf.GetDef<uint16_t>("trigger.coincidence-window-physics.", *it); /// (4ns * x + 8ns)
+            data.fWindowCalib         = conf.GetDef<uint16_t>("trigger.coincidence-window-calib.",   *it); /// (4ns * x + 8ns)
+            data.fDelayTrigger        = conf.GetDef<uint16_t>("trigger.delay.",              *it); /// (4ns * x + 8ns)
+            data.fDelayTimeMarker     = conf.GetDef<uint16_t>("trigger.time-marker-delay.",  *it); /// (4ns * x + 8ns)
+            data.fDeadTime            = conf.GetDef<uint16_t>("trigger.dead-time.",          *it); /// (4ns * x + 8ns)
+
+            data.SetPrescaling(conf.GetDef<uint16_t>("ftu-report-interval.", *it));
+
+            const uint16_t seqped = conf.GetDef<uint16_t>("trigger.sequence.pedestal.",  *it);
+            const uint16_t seqint = conf.GetDef<uint16_t>("trigger.sequence.lp-int.",    *it);
+            const uint16_t seqext = conf.GetDef<uint16_t>("trigger.sequence.lp-ext.",    *it);
+
+            data.SetSequence(seqped, seqint, seqext);
+
+            data.EnableAllFTU();
+            data.EnableAllPixel();
+
+            const vector<uint16_t> pat1 = conf.Vec<uint16_t>("trigger.disable-patch.default");
+            const vector<uint16_t> pat2 = conf.Vec<uint16_t>("trigger.disable-patch."+*it);
+
+            const vector<uint16_t> pix1 = conf.Vec<uint16_t>("trigger.disable-pixel.default");
+            const vector<uint16_t> pix2 = conf.Vec<uint16_t>("trigger.disable-pixel."+*it);
+
+            const vector<uint16_t> ftu1 = conf.Vec<uint16_t>("disable-ftu.default");
+            const vector<uint16_t> ftu2 = conf.Vec<uint16_t>("disable-ftu."+*it);
+
+            vector<uint16_t> ftu, pat, pix;
+            ftu.insert(ftu.end(), ftu1.begin(), ftu1.end());
+            ftu.insert(ftu.end(), ftu2.begin(), ftu2.end());
+            pat.insert(pat.end(), pat1.begin(), pat1.end());
+            pat.insert(pat.end(), pat2.begin(), pat2.end());
+            pix.insert(pix.end(), pix1.begin(), pix1.end());
+            pix.insert(pix.end(), pix2.begin(), pix2.end());
+
+            for (vector<uint16_t>::const_iterator ip=ftu.begin(); ip!=ftu.end(); ip++)
+            {
+                if (*ip>FTM::StaticData::kMaxPatchIdx)
+                {
+                    ostringstream str;
+                    str << "disable-ftu.*=" << *ip << " exceeds allowed maximum of " << FTM::StaticData::kMaxPatchIdx << "!";
+                    T::Error(str);
+                    return 2;
+                }
+                data.DisableFTU(*ip);
+            }
+            for (vector<uint16_t>::const_iterator ip=pat.begin(); ip!=pat.end(); ip++)
+            {
+                if (*ip>FTM::StaticData::kMaxPatchIdx)
+                {
+                    ostringstream str;
+                    str << "trigger.disable-patch.*=" << *ip << " exceeds allowed maximum of " << FTM::StaticData::kMaxPatchIdx << "!";
+                    T::Error(str);
+                    return 2;
+                }
+                data.EnablePatch(*ip, false);
+            }
+            for (vector<uint16_t>::const_iterator ip=pix.begin(); ip!=pix.end(); ip++)
+            {
+                if (*ip>FTM::StaticData::kMaxPixelIdx)
+                {
+                    ostringstream str;
+                    str << "trigger.disable-pixel.*=" << *ip << " exceeds allowed maximum of " << FTM::StaticData::kMaxPixelIdx << "!";
+                    T::Error(str);
+                    return 2;
+                }
+                data.EnablePixel(*ip, false);
+            }
+
+            const uint16_t th0 = conf.GetDef<uint16_t>("trigger.threshold.patch.", *it);
+            const uint16_t th1 = conf.GetDef<uint16_t>("trigger.threshold.logic.", *it);
+
+            for (int i=0; i<40; i++)
+            {
+                data[i].fDAC[0] = th0;
+                data[i].fDAC[1] = th0;
+                data[i].fDAC[2] = th0;
+                data[i].fDAC[3] = th0;
+                data[i].fDAC[4] = th1;
+            }
+
+            fConfigs[*it] = data;
+
+            // trigger.threshold.dac-0:
+
+            /*
+             threshold-A  data[n].fDAC[0] = val
+             threshold-B  data[n].fDAC[1] = val
+             threshold-C  data[n].fDAC[2] = val
+             threshold-D  data[n].fDAC[3] = val
+             threshold-H  data[n].fDAC[4] = val
+             */
+
+            // kMaxDAC = 0xfff,
+        }
+
+        // FIXME: Add a check about unsused configurations
+
+        // ---------- FOR TESTING PURPOSE ---------
+
+        //        fFTM.SetDefaultSetup(conf.Get<string>("default-setup"));
+        fConfigs["test"] = FTM::StaticData();
+
+        // ---------- Setup connection endpoint ---------
+        SetEndpoint(conf.Get<string>("addr"));
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineFTM<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Control options");
+    control.add_options()
+        ("no-dim",        po_bool(),  "Disable dim services")
+        ("addr,a",        var<string>("localhost:5000"),  "Network address of FTM")
+        ("quiet,q",       po_bool(true), "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ("hex-out",       po_bool(),  "Enable printing contents of all printed messages also as hex data.")
+        ("dynamic-out",   po_bool(),  "Enable printing received dynamic data.")
+//        ("default-setup", var<string>(), "Binary file with static data loaded whenever a connection to the FTM was established.")
+        ;
+
+    po::options_description freq("Sampling frequency setup");
+    freq.add_options()
+        ("clock-conditioner.frequency",  vars<uint16_t>(),      "Frequencies for which to setup the clock-conditioner (replace the * in the following options by this definition)")
+        ("clock-conditioner.R0.*",       var<Hex<uint32_t>>(),  "Clock-conditioner R0")
+        ("clock-conditioner.R1.*",       var<Hex<uint32_t>>(),  "Clock-conditioner R1")
+        ("clock-conditioner.R8.*",       var<Hex<uint32_t>>(),  "Clock-conditioner R8")
+        ("clock-conditioner.R9.*",       var<Hex<uint32_t>>(),  "Clock-conditioner R9")
+        ("clock-conditioner.R11.*",      var<Hex<uint32_t>>(),  "Clock-conditioner R11")
+        ("clock-conditioner.R13.*",      var<Hex<uint32_t>>(),  "Clock-conditioner R13")
+        ("clock-conditioner.R14.*",      var<Hex<uint32_t>>(),  "Clock-conditioner R14")
+        ("clock-conditioner.R15.*",      var<Hex<uint32_t>>(),  "Clock-conditioner R15");
+
+    po::options_description runtype("Run type configuration");
+    runtype.add_options()
+        ("run-type",                     vars<string>(),        "Name of run-types (replace the * in the following configuration by the case-sensitive names defined here)")
+        ("sampling-frequency.*",         var<uint16_t>(),       "Sampling frequency as defined in the clock-conditioner.frequency")
+        ("trigger.enable-trigger.*",             var<bool>(),   "Enable trigger output of physics trigger")
+        ("trigger.enable-external-1.*",          var<bool>(),   "Enable external trigger line 1")
+        ("trigger.enable-external-2.*",          var<bool>(),   "Enable external trigger line 2")
+        ("trigger.enable-veto.*",                var<bool>(),   "Enable veto line")
+        ("trigger.enable-clock-conditioner.*",   var<bool>(),   "")
+        ("trigger.sequence.interval.*",          var<uint16_t>(),  "Interval between two artifical triggers in units of ms")
+        ("trigger.sequence.pedestal.*",          var<uint16_t>(),  "Number of pedestal events in the sequence of artificial triggers")
+        ("trigger.sequence.lp-int.*",            var<uint16_t>(),  "Number of LPint events in the sequence of artificial triggers")
+        ("trigger.sequence.lp-ext.*",            var<uint16_t>(),  "Number of LPext events in the sequence of artificial triggers")
+        ("trigger.multiplicity-physics.*",       var<uint16_t>(),  "Multiplicity for physics events (n out of 40)")
+        ("trigger.multiplicity-calib.*",         var<uint16_t>(),  "Multiplicity for LPext events (n out of 40)")
+        ("trigger.coincidence-window-physics.*", var<uint16_t>(),  "Coincidence window for physics triggers in units of n*4ns+8ns")
+        ("trigger.coincidence-window-calib.*",   var<uint16_t>(),  "Coincidence window for LPext triggers in units of n*4ns+8ns")
+        ("trigger.dead-time.*",                  var<uint16_t>(),  "Dead time after trigger in units of n*4ns+8ns")
+        ("trigger.delay.*",                      var<uint16_t>(),  "Delay of the trigger send to the FAD boards after a trigger in units of n*4ns+8ns")
+        ("trigger.time-marker-delay.*",          var<uint16_t>(),  "Delay of the time-marker after a trigger in units of n*4ns+8ns")
+        ("trigger.disable-pixel.*",              vars<uint16_t>(), "")
+        ("trigger.disable-patch.*",              vars<uint16_t>(), "")
+        ("trigger.threshold.patch.*",            var<uint16_t>(),  "")
+        ("trigger.threshold.logic.*",            var<uint16_t>(),  "")
+        ("ftu-report-interval.*",                var<uint16_t>(),  "")
+        ("disable-ftu.*",                        var<uint16_t>(),  "")
+        ("light-pulser.external.enable-group1.*", var<bool>(),     "Enable LED group 1 of external light pulser")
+        ("light-pulser.external.enable-group2.*", var<bool>(),     "Enable LED group 2 of external light pulser")
+        ("light-pulser.internal.enable-group1.*", var<bool>(),     "Enable LED group 1 of internal light pulser")
+        ("light-pulser.internal.enable-group2.*", var<bool>(),     "Enable LED group 2 of internal light pulser")
+        ("light-pulser.external.intensity.*",     var<uint16_t>(), "Intensity of external light pulser")
+        ("light-pulser.internal.intensity.*",     var<uint16_t>(), "Intensity of internal light pulser")
+        ;
+
+    conf.AddOptions(control);
+    conf.AddOptions(freq);
+    conf.AddOptions(runtype);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The ftmctrl controls the FTM (FACT Trigger Master) board.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: ftmctrl [-c type] [OPTIONS]\n"
+        "  or:  ftmctrl [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineFTM<StateMachine, ConnectionFTM>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+            if (conf.Get<bool>("no-dim"))
+                return RunShell<LocalStream, StateMachine, ConnectionFTM>(conf);
+            else
+                return RunShell<LocalStream, StateMachineDim, ConnectionDimFTM>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionFTM>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionFTM>(conf);
+        }
+        else
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim, ConnectionDimFTM>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim, ConnectionDimFTM>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/testFACT++branch/src/gcn.cc
===================================================================
--- branches/testFACT++branch/src/gcn.cc	(revision 18277)
+++ branches/testFACT++branch/src/gcn.cc	(revision 18277)
@@ -0,0 +1,649 @@
+#include <functional>
+
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Console.h"
+#include "Converter.h"
+
+#include "tools.h"
+#include "../externals/nova.h"
+
+#include "HeadersGCN.h"
+
+#include <QtXml/QDomDocument>
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+using namespace GCN;
+
+// ------------------------------------------------------------------------
+
+class ConnectionGCN : public Connection
+{
+private:
+    map<uint16_t, GCN::PaketType_t> fTypes;
+
+    vector<string> fEndPoints;
+    int fEndPoint;
+
+    bool fIsVerbose;
+    bool fDebugRx;
+
+    uint32_t     fRxSize;
+    vector<char> fRxData;
+
+    Time fLastKeepAlive;
+
+    GCN::PaketType_t GetType(const QDomElement &what)
+    {
+        const QDomNodeList param = what.elementsByTagName("Param");
+        for (int i=0; i<param.count(); i++)
+        {
+            const QDomElement elem = param.at(i).toElement();
+            if (elem.attribute("name").toStdString()!="Packet_Type")
+                continue;
+
+            const uint16_t val = elem.attribute("value").toUInt();
+            const auto it = fTypes.find(val);
+            if (it!=fTypes.end())
+                return it->second;
+
+            Warn("Unknown paket type "+to_string(val)+".");
+        }
+
+        return { -1, "", "" };
+    }
+
+
+    int ProcessXml(const QDomElement &root)
+    {
+        if (root.isNull())
+            return -1;
+
+        const string role = root.attribute("role", "").toStdString();
+        const string name = root.tagName().toStdString();
+
+        // A full description can be found at http://voevent.dc3.com/schema/default.html
+
+        if (name=="trn:Transport")
+        {
+            if (role=="iamalive")
+            {
+                const QDomElement orig = root.firstChildElement("Origin");
+                const QDomElement time = root.firstChildElement("TimeStamp");
+                if (orig.isNull() || time.isNull())
+                    return -1;
+
+                fLastKeepAlive = Time(time.text().toStdString());
+
+                if (fIsVerbose)
+                {
+                    Out() << Time().GetAsStr() << " ----- " << name << " [" << role << "] -----" << endl;
+                    Out() << " " << time.tagName().toStdString() << " = " << fLastKeepAlive.GetAsStr() << '\n';
+                    Out() << " " << orig.tagName().toStdString() << " = " << orig.text().toStdString() << '\n';
+                    Out() << endl;
+                }
+
+                return true;
+            }
+
+            return false;
+        }
+
+        ofstream fout("gcn.stream", ios::app);
+        fout << "------------------------------------------------------------------------------\n" << fRxData.data() << endl;
+
+        if (name=="voe:VOEvent")
+        {
+            // WHAT: http://gcn.gsfc.nasa.gov/tech_describe.html
+            const QDomElement who  = root.firstChildElement("Who");
+            const QDomElement what = root.firstChildElement("What");
+            const QDomElement when = root.firstChildElement("WhereWhen");
+            //const QDomElement how  = root.firstChildElement("How");
+            //const QDomElement why  = root.firstChildElement("Why");
+            //const QDomElement cite = root.firstChildElement("Citations");
+            //const QDomElement desc = root.firstChildElement("Description");
+            //const QDomElement ref  = root.firstChildElement("Reference");
+            if (who.isNull() || what.isNull() || when.isNull())
+                return -1;
+
+            const QDomElement date   = who.firstChildElement("Date");
+            const QDomElement author = who.firstChildElement("Author");
+            const QDomElement sname  = author.firstChildElement("shortName");
+            const QDomElement desc   = what.firstChildElement("Description");
+
+            const QDomElement obsdat = when.firstChildElement("ObsDataLocation");
+            const QDomElement obsloc = obsdat.firstChildElement("ObservationLocation");
+            const QDomElement coord  = obsloc.firstChildElement("AstroCoords");
+
+            const QDomElement time   = coord.firstChildElement("Time").firstChildElement("TimeInstant").firstChildElement("ISOTime");
+            const QDomElement pos2d  = coord.firstChildElement("Position2D");
+            const QDomElement name1  = pos2d.firstChildElement("Name1");
+            const QDomElement name2  = pos2d.firstChildElement("Name2");
+            const QDomElement val2   = pos2d.firstChildElement("Value2");
+            const QDomElement c1     = val2.firstChildElement("C1");
+            const QDomElement c2     = val2.firstChildElement("C2");
+            const QDomElement errad  = pos2d.firstChildElement("Error2Radius");
+
+            if (date.isNull()   || author.isNull() || sname.isNull() || desc.isNull() ||
+                obsdat.isNull() || obsloc.isNull() || coord.isNull() || time.isNull() ||
+                pos2d.isNull()  || name1.isNull()  || name2.isNull() || val2.isNull() ||
+                c1.isNull()     || c2.isNull()     || errad.isNull())
+                return -1;
+
+            const GCN::PaketType_t ptype = GetType(what);
+
+            //  59/31: Konus LC / IPN raw         [observation]
+            //   110:  Fermi GBM (ART)            [observation]  (Initial)       // Stop data taking
+            //   111:  Fermi GBM (FLT)            [observation]  (after ~2s)     // Start pointing/run
+            //   112:  Fermi GBM (GND)            [observation]  (after 2-20s)   // Refine pointing
+            //   115:  Fermi GBM position         [observation]  (final ~hours)
+            //
+            //    51:  Intergal pointdir              [utility]
+            //    83:  Swift pointdir                 [utility]
+            //   129:  Fermi pointdir                 [utility]
+            //
+            //     2:  Test coord             (      1)  [test]
+            //    44:  HETE test              ( 41- 43)  [test]
+            //    52:  Integral SPIACS                   [test]
+            //    53:  Integral Wakeup                   [test]
+            //    54:  Integral refined                  [test]
+            //    55:  Integral Offline                  [test]
+            //    56:  Integral Weak                     [test]
+            //    82:  BAT   GRB pos test     (     61)  [test]
+            //   109:  AGILE GRB pos test     (100-103)  [test]
+            //   119:  Fermi GRB pos test     (111-113)  [test]
+            //   124:  Fermi LAT pos upd test (120-122)  [test]
+            //   136:  MAXI coord test        (    134)  [test]
+            //
+            // Integral: RA=1.2343, Dec=2.3456
+            //
+
+            /*
+             54
+             ==
+             <Group name="Test_mpos" >
+               <Param name="Test_Notice"              value="true" />
+             </Group>
+
+
+             82
+             ==
+             <Group name="Solution_Status" >
+               <Param name="Test_Submission"          value="false" />
+             </Group>
+
+
+             115
+             ===
+             2013-07-20 19:04:13: TIME = 2013-07-20 02:46:40
+
+             <Group name="Trigger_ID" >
+               <Param name="Test_Submission"       value="false" />
+             </Group>
+             */
+
+            const string unit = pos2d.attribute("unit").toStdString();
+
+            const double ra  = c1.text().toDouble();
+            const double dec = c2.text().toDouble();
+            const double err = errad.text().toDouble();
+
+            const string n1 = name1.text().toStdString();
+            const string n2 = name2.text().toStdString();
+
+            Out() << Time(date.text().toStdString()).GetAsStr() << " ----- " << sname.text().toStdString() << " [" << role << "]\n";
+            Out() << "[" << desc.text().toStdString()  << "]\n";
+            Out() << ptype.name << "[" << ptype.type << "]: " << ptype.description << endl;
+            Out() << left;
+            Out() << "  " << setw(5) << "TIME" << "= " << Time(time.text().toStdString()).GetAsStr() << '\n';
+            Out() << "  " << setw(5) << n1     << "= " << ra  << unit << '\n';
+            Out() << "  " << setw(5) << n2     << "= " << dec << unit << '\n';
+            Out() << "  " << setw(5) << "ERR"  << "= " << err << unit << '\n';
+
+            if (n1=="RA" && n2=="Dec" && unit=="deg")
+            {
+                const double jd = Time().JD();
+
+                Nova::EquPosn equ;
+                equ.ra  = ra;
+                equ.dec = dec; 
+
+                const Nova::ZdAzPosn pos = Nova::GetHrzFromEqu(equ, jd);
+                const Nova::EquPosn moon = Nova::GetLunarEquCoords(jd);
+                const Nova::ZdAzPosn sun = Nova::GetHrzFromEqu(Nova::GetSolarEquCoords(jd), jd);
+
+                const double disk = Nova::GetLunarDisk(jd);
+                const double dist = Nova::GetAngularSeparation(equ, moon);
+
+                Out() << "  " << setw(5) << "ZD"   << "= " << pos.zd << "deg\n";
+                Out() << "  " << setw(5) << "Az"   << "= " << pos.az << "deg\n";
+
+                Out() << "  " << setw(5) << "MOON" << "= " << int(disk*100) << "%\n";
+                Out() << "  " << setw(5) << "DIST" << "= " << dist << "deg\n";
+
+                if (dist>10 && dist<170 && pos.zd<80 && sun.zd>108)
+                {
+                    Out() << "  visible ";
+                    if (pos.zd<70)
+                        Out() << '+';
+                    if (pos.zd<60)
+                        Out() << '+';
+                    if (pos.zd<45)
+                        Out() << '+';
+                    Out() << '\n';
+                }
+            }
+
+            Out() << endl;
+
+            if (role=="observation")
+            {
+                return true;
+            }
+
+            if (role=="test")
+            {
+                return true;
+            }
+
+            if (role=="retraction")
+            {
+                return true;
+            }
+
+            if (role=="utility")
+            {
+                return true;
+            }
+
+            return false;
+        }
+
+        Out() << Time().GetAsStr() << " ----- " << name << " [" << role << "] -----" << endl;
+
+        return false;
+    }
+
+    void HandleReceivedData(const bs::error_code& err, size_t bytes_received, int type)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+                Warn("Connection closed by remote host (GCN).");
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+            return;
+        }
+
+        if (type==0)
+        {
+            fRxSize = ntohl(fRxSize);
+            fRxData.assign(fRxSize+1, 0);
+            ba::async_read(*this, ba::buffer(fRxData, fRxSize),
+                             boost::bind(&ConnectionGCN::HandleReceivedData, this,
+                                         dummy::error, dummy::bytes_transferred, 1));
+            return;
+        }
+
+        if (fDebugRx)
+        {
+            Out() << "------------------------------------------------------\n";
+            Out() << fRxData.data() << '\n';
+            Out() << "------------------------------------------------------" << endl;
+        }
+
+        QDomDocument doc;
+        if (!doc.setContent(QString(fRxData.data()), false))
+        {
+            Warn("Parsing of xml failed [0].");
+            PostClose(false);
+            return;
+        }
+
+        if (fDebugRx)
+            Out() << "Parsed:\n-------\n" << doc.toString().toStdString() << endl;
+
+        const int rc = ProcessXml(doc.documentElement());
+        if (rc<0)
+        {
+            Warn("Parsing of xml failed [1].");
+            PostClose(false);
+            return;
+        }
+
+        if (!rc)
+        {
+            Out() << "------------------------------------------------------\n";
+            Out() << doc.toString().toStdString() << '\n';
+            Out() << "------------------------------------------------------" << endl;
+        }
+
+        StartRead();
+    }
+
+    void StartRead()
+    {
+        ba::async_read(*this, ba::buffer(&fRxSize, 4),
+                       boost::bind(&ConnectionGCN::HandleReceivedData, this,
+                                   dummy::error, dummy::bytes_transferred, 0));
+    }
+
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        StartRead();
+    }
+
+public:
+    ConnectionGCN(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsVerbose(false), fDebugRx(false), fLastKeepAlive(Time::none)
+    {
+        SetLogStream(&imp);
+
+        for (auto it=GCN::kTypes; it->type>0; it++)
+            fTypes[it->type] = *it;
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+    }
+
+    void SetDebugRx(bool b)
+    {
+        fDebugRx = b;
+        Connection::SetVerbose(b);
+    }
+
+    void SetEndPoints(const vector<string> &v)
+    {
+        fEndPoints = v;
+        fEndPoint = 0;
+    }
+
+    void StartConnect()
+    {
+        if (fEndPoints.size()>0)
+            SetEndpoint(fEndPoints[fEndPoint++%fEndPoints.size()]);
+        Connection::StartConnect();
+    }
+
+    bool IsValid()
+    {
+        return fLastKeepAlive.IsValid() ? Time()-fLastKeepAlive<boost::posix_time::minutes(2) : false;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimGCN : public ConnectionGCN
+{
+private:
+
+public:
+    ConnectionDimGCN(ba::io_service& ioservice, MessageImp &imp) : ConnectionGCN(ioservice, imp)
+    {
+    }
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineGCN : public StateMachineAsio<T>
+{
+private:
+    S fGCN;
+
+    int Disconnect()
+    {
+        // Close all connections
+        fGCN.PostClose(false);
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fGCN.PostClose(false);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        ba::io_service::poll();
+
+        if (evt.GetBool())
+            fGCN.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fGCN.PostClose(true);
+
+        return T::GetCurrentState();
+    }
+
+    int Execute()
+    {
+        if (!fGCN.IsConnected())
+            return State::kDisconnected;
+
+        return fGCN.IsValid() ? State::kValid : State::kConnected;
+    }
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fGCN.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetDebugRx(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetDebugRx", 1))
+            return T::kSM_FatalError;
+
+        fGCN.SetDebugRx(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+public:
+    StateMachineGCN(ostream &out=cout) :
+        StateMachineAsio<T>(out, "GCN"), fGCN(*this, *this)
+    {
+        // State names
+        T::AddStateName(State::kDisconnected, "Disconnected",
+                     "No connection to GCN.");
+        T::AddStateName(State::kConnected, "Connected",
+                     "Connection to GCN established.");
+        T::AddStateName(State::kValid, "Valid",
+                     "Connection valid (keep alive received within past 2min)");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B:1")
+            (bind(&StateMachineGCN::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+        T::AddEvent("SET_DEBUG_RX", "B:1")
+            (bind(&StateMachineGCN::SetDebugRx, this, placeholders::_1))
+            ("Set debux-rx state"
+             "|debug[bool]:dump received text and parsed text to console (yes/no)");
+
+
+        // Conenction commands
+        T::AddEvent("DISCONNECT", State::kConnected)
+            (bind(&StateMachineGCN::Disconnect, this))
+            ("disconnect from ethernet");
+        T::AddEvent("RECONNECT", "O", State::kDisconnected, State::kConnected)
+            (bind(&StateMachineGCN::Reconnect, this, placeholders::_1))
+            ("(Re)connect ethernet connection to FTM, a new address can be given"
+             "|[host][string]:new ethernet address in the form <host:port>");
+
+        fGCN.StartConnect();
+    }
+
+    void SetEndpoint(const string &url)
+    {
+        vector<string> v;
+        v.push_back(url);
+        fGCN.SetEndPoints(v);
+    }
+
+    vector<string> fEndPoints;
+
+    int EvalOptions(Configuration &conf)
+    {
+        fGCN.SetVerbose(!conf.Get<bool>("quiet"));
+        fGCN.SetEndPoints(conf.Vec<string>("addr"));
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineGCN<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("FTM control options");
+    control.add_options()
+        ("no-dim",        po_bool(),  "Disable dim services")
+        ("addr,a",        vars<string>(),  "Network addresses of GCN server")
+        ("quiet,q",       po_bool(true),  "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The gcn reads and evaluates alerts from the GCN network.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: gcn [-c type] [OPTIONS]\n"
+        "  or:  gcn [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineGCN<StateMachine, ConnectionGCN>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+            if (conf.Get<bool>("no-dim"))
+                return RunShell<LocalStream, StateMachine, ConnectionGCN>(conf);
+            else
+                return RunShell<LocalStream, StateMachineDim, ConnectionDimGCN>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionGCN>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionGCN>(conf);
+        }
+        else
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim, ConnectionDimGCN>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim, ConnectionDimGCN>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/testFACT++branch/src/getevent.cc
===================================================================
--- branches/testFACT++branch/src/getevent.cc	(revision 18277)
+++ branches/testFACT++branch/src/getevent.cc	(revision 18277)
@@ -0,0 +1,247 @@
+#include <valarray>
+
+#include <boost/filesystem.hpp>
+
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "Connection.h"
+#include "Configuration.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "externals/zfits.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+#include "DimState.h"
+
+// ------------------------------------------------------------------------
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Program options");
+    control.add_options()
+        ("target,t", var<string>()->required(),  "")
+        ("event,e",  var<uint32_t>(), "")
+        ;
+
+    po::positional_options_description p;
+    p.add("target", 1); // The first positional options
+    p.add("event",  2); // The second positional options
+
+    conf.AddOptions(control);
+    conf.SetArgumentPositions(p);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "Retrieve an event from a file in binary representation.\n"
+        "\n"
+        "Usage: getevent [-c type] [OPTIONS]\n"
+        "  or:  getevent [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    //Main::PrintHelp<StateMachineEventServer>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+/*
+boost::filesystem::recursive_directory_iterator createRIterator(boost::filesystem::path path)
+{
+    try
+    {
+        return boost::filesystem::recursive_directory_iterator(path);
+    }
+    catch(boost::filesystem::filesystem_error& fex)
+    {
+        std::cout << fex.what() << std::endl;
+        return boost::filesystem::recursive_directory_iterator();
+    }
+}
+
+void dump(boost::filesystem::path path, int level)
+{
+    try
+    {
+        std::cout << (boost::filesystem::is_directory(path) ? 'D' : ' ') << ' ';
+        std::cout << (boost::filesystem::is_symlink(path) ? 'L' : ' ') << ' ';
+
+        for(int i = 0; i < level; ++i)
+            std::cout << ' ';
+
+        std::cout << path.filename() << std::endl;
+    }
+    catch(boost::filesystem::filesystem_error& fex)
+    {
+        std::cout << fex.what() << std::endl;
+    }
+}
+
+void plainListTree(boost::filesystem::path path) // 1.
+{
+    dump(path, 0);
+ 
+    boost::filesystem::recursive_directory_iterator it = createRIterator(path);
+    boost::filesystem::recursive_directory_iterator end;
+ 
+    while(it != end) // 2.
+    {
+        dump(*it, it.level()); // 3.
+ 
+        if (boost::filesystem::is_directory(*it) && boost::filesystem::is_symlink(*it)) // 4.
+            it.no_push();
+ 
+        try
+        {
+            ++it; // 5.
+        }
+        catch(std::exception& ex)
+        {
+            std::cout << ex.what() << std::endl;
+            it.no_push(); // 6.
+            try { ++it; } catch(...) { std::cout << "!!" << std::endl; return; } // 7.
+        }
+    }
+}
+*/
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    const string name = conf.Get<string>("target");
+/*
+    if (!conf.Has("event"))
+    {
+        plainListTree(name);
+        return 0;
+    }
+*/
+    const uint32_t event = conf.Has("event") ? conf.Get<uint32_t>("event") : 0;
+
+    zfits file(name);
+    if (!file)
+    {
+        cerr << name << ": " <<  strerror(errno) << endl;
+        return 1;
+    }
+
+    // Php can only read 32bit ints
+    const uint32_t nRows = file.GetNumRows();
+
+    const uint32_t nRoi = file.GetUInt("NROI");
+    const uint32_t nPix = file.GetUInt("NPIX");
+
+    const bool     isMC = file.HasKey("ISMC") && file.GetStr("ISMC")=="T";
+
+    // Is drs calibration file?
+    const int8_t step = file.HasKey("STEP") ? file.GetUInt("STEP") : -1;
+
+    const string strbeg = isMC ? "DATE" : "RUN"+to_string(step)+"-BEG";
+    const string strend = isMC ? "DATE" : "RUN"+to_string(step)+"-END";
+
+    const double start = step==-1 && !isMC ? file.GetUInt("TSTARTI")+file.GetFloat("TSTARTF") : Time(file.GetStr(strbeg)).UnixDate();
+    const double stop  = step==-1 && !isMC ? file.GetUInt("TSTOPI")+file.GetFloat("TSTOPF")   : Time(file.GetStr(strend)).UnixDate();
+
+    const bool     isDrsCalib = file.HasKey("DRSCALIB") &&  file.GetStr("DRSCALIB")=="T";
+    const int16_t  drsStep    = isDrsCalib ? file.GetUInt("DRSSTEP") : step;
+    const string   runType    = step==-1 ? file.GetStr("RUNTYPE") : "";
+    const uint16_t scale      = file.HasKey("SCALE") ? file.GetUInt("SCALE") : (step==-1?0:10);
+
+    vector<char>     run(80);
+    vector<int16_t>  data(nRoi*nPix);
+    vector<float>    mean(nRoi*nPix);
+    vector<uint32_t> unixTimeUTC(2);
+
+    //uint32_t boardTime[40];
+    uint32_t eventNum;
+    //uint32_t numBoards;
+    //uint16_t startCellData[1440];
+    //uint16_t startCellTimeMarker[160];
+    //uint32_t triggerNum;
+    uint16_t triggerType;
+
+    if (step==-1)
+    {
+        file.SetRefAddress("EventNum", eventNum);
+        //file.SetRefAddress("TriggerNum", triggerNum);
+        file.SetRefAddress("TriggerType", triggerType);
+        if (!isMC)
+            file.SetVecAddress("UnixTimeUTC", unixTimeUTC);
+    }
+
+    switch (step)
+    {
+    case 0:  file.SetVecAddress("BaselineMean",      mean); strcpy( run.data(), "DRS (pedestal 1024)"); break;
+    case 1:  file.SetVecAddress("GainMean",          mean); strcpy( run.data(), "DRS (gain)");          break;
+    case 2:  file.SetVecAddress("TriggerOffsetMean", mean); strcpy( run.data(), "DRS (pedestal roi)");  break;
+    default: file.SetVecAddress("Data",              data); strncpy(run.data(), runType.c_str(), 79);   break;
+    }
+
+    if (!file.GetRow(step==-1 ? event : 0))
+        return 2;
+
+    if (step!=-1)
+        for (uint32_t i=0; i<nRoi*nPix; i++)
+            data[i] = round(mean[i]*10);
+
+    cout.write(run.data(),                80);
+    cout.write((char*)&start,             sizeof(double));
+    cout.write((char*)&stop,              sizeof(double));
+    cout.write((char*)&drsStep,           sizeof(drsStep));
+    cout.write((char*)&nRows,             sizeof(nRows));
+    cout.write((char*)&scale,             sizeof(scale));
+
+    cout.write((char*)&nRoi,              sizeof(nRoi));
+    cout.write((char*)&nPix,              sizeof(nPix));
+    cout.write((char*)&eventNum,          sizeof(eventNum));
+    //cout.write((char*)&triggerNum,        sizeof(triggerNum));
+    cout.write((char*)&triggerType,       sizeof(triggerType));
+    cout.write((char*)unixTimeUTC.data(), sizeof(uint32_t)*2);
+    cout.write((char*)data.data(),        sizeof(int16_t)*nRoi*nPix);
+
+    return 0;
+}
Index: branches/testFACT++branch/src/gpsctrl.cc
===================================================================
--- branches/testFACT++branch/src/gpsctrl.cc	(revision 18277)
+++ branches/testFACT++branch/src/gpsctrl.cc	(revision 18277)
@@ -0,0 +1,598 @@
+#include "FACT.h"
+#include "Dim.h"
+#include "Event.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "HeadersGPS.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+
+class ConnectionGPS : public Connection
+{
+protected:
+    virtual void Update(const GPS::NEMA &)
+    {
+    }
+
+private:
+    bool fIsVerbose;
+
+    Time fLastReport;
+
+    int fState;
+
+    float ConvLngLat(const string &l) const
+    {
+        const double   lf = stof(l);
+        const uint32_t li = stoi(l);
+
+        const double min = fmod(lf, 100);
+        const double deg = li/100;
+
+        return deg + min/60;
+    }
+
+    float ConvTm(const string &t) const
+    {
+        const double   tf = stof(t);
+        const uint32_t ti = stoi(t);
+
+        const double h = ti/10000;
+        const double m = (ti/100)%100;
+        const double s = fmod(tf, 100);
+
+        return h/24 + m/1440 + s/86400;
+    }
+
+    bool ParseAnswer(const string &buffer)
+    {
+        if (buffer=="Invalid command, type help")
+        {
+            Error("Command was ignored by GPS.");
+            return false;
+        }
+
+        // answer to get_status or veto_[on|off|60]
+        if (buffer=="veto_60" || buffer=="veto 60 now on")
+        {
+            if (fState!=GPS::State::kLocked)
+                fState = GPS::State::kEnabled;
+            PostMessage(string("get_nema\r\n"), 10);
+            return true;
+        }
+        if (buffer=="veto_on" || buffer=="veto now on")
+        {
+            fState = GPS::State::kDisabled;
+            PostMessage(string("get_nema\r\n"), 10);
+            return true;
+        }
+        /*
+        if (buffer=="veto_off" || buffer=="veto now off")
+        {
+            fState = GPS::State::kVetoOff;
+            PostMessage(string("get_nema\r\n"), 10);
+            return true;
+        }*/
+
+        // answer to get_nema
+        if (buffer[0]=='$')
+        {
+            /*
+             1    = UTC of Position
+             2    = Latitude
+             3    = N or S
+             4    = Longitude
+             5    = E or W
+             6    = GPS quality indicator (0=invalid; 1=GPS fix;
+                    2=Diff. GPS fix)
+             7    = Number of satellites in use [not those in view]
+             8    = Horizontal dilution of position
+             9    = Antenna altitude above/below mean sea level (geoid)
+             10   = Meters  (Antenna height unit)
+             11   = Geoidal separation (Diff. between WGS-84 earth ellipsoid
+                    and mean sea level.  -=geoid is below WGS-84 ellipsoid)
+             12   = Meters  (Units of geoidal separation)
+             13   = Age in seconds since last update from diff.
+                    reference station
+             14   = Diff. reference station ID#
+             */
+
+            const vector<string> cs = Tools::Split(buffer, "$*");
+            if (cs.size()!=3)
+                throw runtime_error("syntax error");
+
+            // check checksum
+            uint8_t c = cs[1][0];
+            for (size_t i=1; i<cs[1].size(); i++)
+                c ^= cs[1][i];
+
+            stringstream ss;
+            ss << std::hex << cs[2];
+
+            unsigned int x;
+            ss >> x;
+
+            if (x!=c)
+                throw runtime_error("checksum error");
+
+            // interpret contents
+            const vector<string> dat = Tools::Split(cs[1], ",");
+            if (dat.size()!=15)
+                throw runtime_error("size mismatch");
+            if (dat[0]!="GPGGA")
+                throw runtime_error("type mismatch");
+            if (dat[5]!="W" && dat[5]!="E")
+                throw runtime_error("longitude type unknown");
+            if (dat[10]!="M")
+                throw runtime_error("height unit unknown");
+            if (dat[12]!="M")
+                throw runtime_error("hdop unit unknown");
+            if (!dat[13].empty())
+                throw runtime_error("unexpected data at position 13");
+            if (dat[14]!="0000")
+                throw runtime_error("unexpected data at position 14");
+
+            GPS::NEMA nema;
+            nema.time   = ConvTm(dat[1]);
+            nema.lat    = dat[3]=="N" ? ConvLngLat(dat[2]) : -ConvLngLat(dat[3]);
+            nema.lng    = dat[5]=="W" ? ConvLngLat(dat[4]) : -ConvLngLat(dat[4]);
+            nema.qos    = stoi(dat[6]);
+            nema.count  = stoi(dat[7]);
+            nema.hdop   = stof(dat[8]);
+            nema.height = stof(dat[9]);
+            nema.geosep = stof(dat[11]);
+
+            if (fabs(nema.time-fmod(Time().Mjd(), 1))*24*3600>5)
+            {
+                Error("Time mismatch: GPS time deviates from PC time by more than 5s");
+                return false;
+            }
+
+            if (fState>=GPS::State::kEnabled)
+                fState = nema.qos==1 ? GPS::State::kLocked : GPS::State::kEnabled;
+
+            Update(nema);
+
+            return true;
+        }
+
+        return false;
+    }
+
+    void HandleRead(const boost::system::error_code& err, size_t bytes_received)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+                Warn("Connection closed by remote host.");
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+            return;
+        }
+
+        istream is(&fBuffer);
+
+        string buffer;
+        if (!getline(is, buffer, '\n'))
+        {
+            Error("Received message does not contain \\n... closing connection.");
+            PostClose(false);
+            return;
+        }
+        buffer = buffer.substr(0, buffer.size()-1);
+
+        if (fIsVerbose)
+            Out() << buffer << endl;
+
+        try
+        {
+            if (!ParseAnswer(buffer))
+            {
+                Error("Received: "+buffer);
+                PostClose(false);
+                return;
+            }
+        }
+        catch (const exception &e)
+        {
+            Error("Parsing NEMA message failed ["+string(e.what())+"]");
+            Error("Received: "+buffer);
+            PostClose(false);
+            return;
+        }
+
+        fLastReport = Time();
+        StartReadReport();
+    }
+
+    boost::asio::streambuf fBuffer;
+
+    void StartReadReport()
+    {
+        async_read_until(*this, fBuffer, '\n',
+                         boost::bind(&ConnectionGPS::HandleRead, this,
+                                     dummy::error, dummy::bytes_transferred));
+    }
+
+    boost::asio::deadline_timer fKeepAlive;
+
+    void HandleRequest(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "Write timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            PostClose(true);
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fKeepAlive.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        PostMessage(string("get_status\r\n"), 12);
+        Request();
+    }
+
+
+private:
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        fState = GPS::State::kConnected;
+
+        StartReadReport();
+        Request(true);
+    }
+
+public:
+    static const uint16_t kMaxAddr;
+
+public:
+    ConnectionGPS(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsVerbose(true), fLastReport(Time::none), fKeepAlive(ioservice)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+        Connection::SetVerbose(b);
+    }
+
+    void Request(bool immediate=false)
+    {
+        double mjd = Time().Mjd();
+
+        if (!immediate)
+            mjd = (ceil(mjd*24*60+0.01)+0.5)/(24*60);
+
+        fKeepAlive.expires_at(Time(mjd));
+        fKeepAlive.async_wait(boost::bind(&ConnectionGPS::HandleRequest,
+                                          this, dummy::error));
+    }
+
+    int GetState() const
+    {
+        if (!is_open())
+            return GPS::State::kDisconnected;
+
+        if (fState!=GPS::State::kConnected && fLastReport+boost::posix_time::seconds(105) < Time())
+            return StateMachineImp::kSM_Error;
+
+        return fState;
+    }
+};
+
+const uint16_t ConnectionGPS::kMaxAddr = 0xfff;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimWeather : public ConnectionGPS
+{
+private:
+    DimDescribedService fDim;
+
+public:
+    ConnectionDimWeather(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionGPS(ioservice, imp),
+        fDim("GPS_CONTROL/NEMA", "F:1;F:1;F:1;F:1;F:1;F:1;S:1;S:1",
+             "NEMA message from the GPS module"
+             "|time[utc]:Time of day as fraction of day (UTC)"
+             "|lat[deg]:Latitude"
+             "|long[deg]:Longitude"
+             "|hdop:Horizontal delution of precision"
+             "|height[m]:Antenna altitude above mean sea level (geoid)"
+             "|geosep[m]:Geoidal separation (Diff. between WGS-84 earth ellipsoid and mean sea level)"
+             "|count:Number of satellites in use (not those in view)"
+             "|quality:GPS quality indicator (see Venus manual)")
+    {
+    }
+
+    void Update(const GPS::NEMA &nema)
+    {
+        fDim.Update(nema);
+    }
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineGPSControl : public StateMachineAsio<T>
+{
+private:
+    S fGPS;
+    Time fLastCommand;
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int Disconnect()
+    {
+        // Close all connections
+        fGPS.PostClose(false);
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fGPS.PostClose(false);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        ba::io_service::poll();
+
+        if (evt.GetBool())
+            fGPS.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fGPS.PostClose(true);
+
+        return T::GetCurrentState();
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fGPS.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int Send(const string &cmd)
+    {
+        const string tx = cmd+"\r\n";
+        fGPS.PostMessage(tx, tx.size());
+        return T::GetCurrentState();
+    }
+
+    int SendCommand(const EventImp &evt)
+    {
+        return Send(evt.GetString());
+    }
+
+    int Execute()
+    {
+        return fGPS.GetState();
+    }
+
+
+public:
+    StateMachineGPSControl(ostream &out=cout) :
+        StateMachineAsio<T>(out, "GPS_CONTROL"), fGPS(*this, *this)
+    {
+        // State names
+        T::AddStateName(GPS::State::kDisconnected, "Disconnected",
+                        "No connection to web-server could be established recently");
+
+        T::AddStateName(GPS::State::kConnected, "Connected",
+                        "Connection established, but status still not known");
+
+        T::AddStateName(GPS::State::kDisabled, "Disabled",
+                        "Veto is on, no trigger will be emitted");
+
+        T::AddStateName(GPS::State::kEnabled, "Enabled",
+                        "System enabled, waiting for satellites");
+
+        T::AddStateName(GPS::State::kLocked, "Locked",
+                        "One trigger per second will be send, but the one at the exact minute is vetoed");
+
+        // Commands
+        T::AddEvent("SEND_COMMAND", "C")
+            (bind(&StateMachineGPSControl::SendCommand, this, placeholders::_1))
+            ("Send command to GPS");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B")
+            (bind(&StateMachineGPSControl::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+
+        T::AddEvent("ENABLE")
+            (bind(&StateMachineGPSControl::Send, this, "veto_60"))
+            ("Enable trigger signal once a second vetoed at every exact minute");
+
+        T::AddEvent("DISABLE")
+            (bind(&StateMachineGPSControl::Send, this, "veto_on"))
+            ("Diable trigger output");
+
+        // Conenction commands
+        T::AddEvent("DISCONNECT")
+            (bind(&StateMachineGPSControl::Disconnect, this))
+            ("disconnect from ethernet");
+
+         T::AddEvent("RECONNECT", "O")
+            (bind(&StateMachineGPSControl::Reconnect, this, placeholders::_1))
+            ("(Re)connect ethernet connection to GPS, a new address can be given"
+             "|[host][string]:new ethernet address in the form <host:port>");
+
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fGPS.SetVerbose(!conf.Get<bool>("quiet"));
+        fGPS.SetDebugTx(conf.Get<bool>("debug-tx"));
+        fGPS.SetEndpoint(conf.Get<string>("addr"));
+        fGPS.StartConnect();
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineGPSControl<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("GPS control");
+    control.add_options()
+        ("no-dim,d", po_switch(), "Disable dim services")
+        ("addr,a",   var<string>("gps:23"), "Network address of the lid controling Arduino including port")
+        ("quiet,q",  po_bool(true), "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ("debug-tx", po_bool(), "Enable debugging of ethernet transmission.")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The gpsctrl is an interface to the GPS hardware.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: gpsctrl [-c type] [OPTIONS]\n"
+        "  or:  gpsctrl [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+//    Main::PrintHelp<StateMachineFTM<StateMachine, ConnectionFTM>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    // No console access at all
+    if (!conf.Has("console"))
+    {
+        if (conf.Get<bool>("no-dim"))
+            return RunShell<LocalStream, StateMachine, ConnectionGPS>(conf);
+        else
+            return RunShell<LocalStream, StateMachineDim, ConnectionDimWeather>(conf);
+    }
+    // Cosole access w/ and w/o Dim
+    if (conf.Get<bool>("no-dim"))
+    {
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell, StateMachine, ConnectionGPS>(conf);
+        else
+            return RunShell<LocalConsole, StateMachine, ConnectionGPS>(conf);
+    }
+    else
+    {
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell, StateMachineDim, ConnectionDimWeather>(conf);
+        else
+            return RunShell<LocalConsole, StateMachineDim, ConnectionDimWeather>(conf);
+    }
+
+    return 0;
+}
Index: branches/testFACT++branch/src/lidctrl.cc
===================================================================
--- branches/testFACT++branch/src/lidctrl.cc	(revision 18277)
+++ branches/testFACT++branch/src/lidctrl.cc	(revision 18277)
@@ -0,0 +1,764 @@
+#include <boost/array.hpp>
+
+#include <string>    // std::string
+#include <algorithm> // std::transform
+#include <cctype>    // std::tolower
+
+#include <QtXml/QDomDocument>
+
+#include "FACT.h"
+#include "Dim.h"
+#include "Event.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "HeadersLid.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+
+class ConnectionLid : public Connection
+{
+protected:
+
+    struct Lid
+    {
+        int id;
+
+        float position;
+        float current;
+        string status;
+
+        Lid(int i) : id(i) { }
+
+        bool Set(const QDomNamedNodeMap &map)
+        {
+            if (!map.contains("id") || !map.contains("value"))
+                return false;
+
+            QString item  = map.namedItem("id").nodeValue();
+            QString value = map.namedItem("value").nodeValue();
+
+            const char c = '0'+id;
+
+            if (item==(QString("cur")+c))
+            {
+                current = value.toFloat();
+                return true;
+            }
+
+            if (item==(QString("pos")+c))
+            {
+                position = value.toFloat();
+                return true;
+            }
+
+            if (item==(QString("lid")+c))
+            {
+                status = value.toStdString();
+                return true;
+            }
+
+            return false;
+        }
+
+        void Print(ostream &out)
+        {
+            out << "Lid" << id << " @ " << position << " / " << current << "A [" << status << "]" << endl;
+        }
+
+    };
+
+private:
+    uint16_t fInterval;
+
+    bool fIsVerbose;
+
+    string fSite;
+    string fRdfData;
+
+    boost::array<char, 4096> fArray;
+
+    string fNextCommand;
+
+    Time fLastReport;
+
+    Lid fLid1;
+    Lid fLid2;
+
+    virtual void Update(const Lid &, const Lid &)
+    {
+    }
+
+
+    void ProcessAnswer()
+    {
+        if (fIsVerbose)
+        {
+            Out() << "------------------------------------------------------" << endl;
+            Out() << fRdfData << endl;
+            Out() << "------------------------------------------------------" << endl;
+        }
+
+        fRdfData.insert(0, "<?xml version=\"1.0\"?>\n");
+
+        QDomDocument doc;
+        if (!doc.setContent(QString(fRdfData.c_str()), false))
+        {
+            Warn("Parsing of html failed.");
+            return;
+        }
+
+        if (fIsVerbose)
+        {
+            Out() << "Parsed:\n-------\n" << doc.toString().toStdString() << endl;
+            Out() << "------------------------------------------------------" << endl;
+        }
+
+        const QDomNodeList imageElems = doc.elementsByTagName("span"); // "input"
+
+        /*
+        // elementById
+        for (unsigned int i=0; i<imageElems.length(); i++)
+        {
+            QDomElement e = imageElems.item(i).toElement();
+            Out() << "<" << e.tagName().toStdString() << " ";
+
+            QDomNamedNodeMap att = e.attributes();
+
+            for (int j=0; j<att.size(); j++)
+            {
+                Out() << att.item(j).nodeName().toStdString() << "=";
+                Out() << att.item(j).nodeValue().toStdString() << " ";
+            }
+            Out() << "> " << e.text().toStdString() << endl;
+        }*/
+
+        for (unsigned int i=0; i<imageElems.length(); i++)
+        {
+            const QDomElement e = imageElems.item(i).toElement();
+
+            const QDomNamedNodeMap att = e.attributes();
+
+            fLid1.Set(att);
+            fLid2.Set(att);
+        }
+
+        if (fIsVerbose)
+        {
+            fLid1.Print(Out());
+            fLid2.Print(Out());
+            Out() << "------------------------------------------------------" << endl;
+        }
+
+        Update(fLid1, fLid2);
+
+        fRdfData = "";
+
+        if ((fLid1.status!="Open" && fLid1.status!="Closed" && fLid1.status!="Power Problem" && fLid1.status!="Unknown" && fLid1.status!="Overcurrent") ||
+            (fLid2.status!="Open" && fLid2.status!="Closed" && fLid2.status!="Power Problem" && fLid2.status!="Unknown" && fLid1.status!="Overcurrent"))
+            Warn("Lid reported status unknown by lidctrl ("+fLid1.status+"/"+fLid2.status+")");
+
+        fLastReport = Time();
+    }
+
+    void HandleRead(const boost::system::error_code& err, size_t bytes_received)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+            {
+                //Warn("Connection closed by remote host.");
+                ProcessAnswer();
+                PostClose(false);
+                return;
+            }
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+
+            fRdfData = "";
+            return;
+        }
+
+        fRdfData += string(fArray.data(), bytes_received);
+
+        //cout << "." << flush;
+
+        // Does the message contain a header?
+        const size_t p1 = fRdfData.find("\r\n\r\n");
+        if (p1!=string::npos)
+        {
+            // Does the answer also contain the body?
+            const size_t p2 = fRdfData.find("\r\n\r\n", p1+4);
+            if (p2!=string::npos)
+            {
+                ProcessAnswer();
+            }
+        }
+
+        // Go on reading until the web-server closes the connection
+        StartReadReport();
+    }
+
+    boost::asio::streambuf fBuffer;
+
+    void StartReadReport()
+    {
+        async_read_some(ba::buffer(fArray),
+                        boost::bind(&ConnectionLid::HandleRead, this,
+                                    dummy::error, dummy::bytes_transferred));
+    }
+
+    boost::asio::deadline_timer fKeepAlive;
+
+    void PostRequest(string cmd, const string &args="")
+    {
+        cmd += " "+fSite+" HTTP/1.1\r\n"
+            //"Connection: Keep-Alive\r\n"
+            ;
+
+        ostringstream msg;
+        msg << args.length();
+
+        cmd += "Content-Length: ";
+        cmd += msg.str();
+        cmd +="\r\n";
+
+        if (args.length()>0)
+            cmd += "\r\n"+args + "\r\n";
+
+        cmd += "\r\n";
+
+        //cout << "Post: " << cmd << endl;
+        PostMessage(cmd);
+    }
+
+    void HandleRequest(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "Write timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            PostClose(true);
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fKeepAlive.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        Request();
+    }
+
+
+private:
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        Request();
+        StartReadReport();
+    }
+
+    void ConnectionFailed()
+    {
+        StartConnect();
+    }
+
+public:
+    static const uint16_t kMaxAddr;
+
+public:
+    ConnectionLid(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsVerbose(true), fLastReport(Time::none),
+        fLid1(1), fLid2(2), fKeepAlive(ioservice)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+        Connection::SetVerbose(b);
+    }
+
+    void SetInterval(uint16_t i)
+    {
+        fInterval = i;
+    }
+
+    void SetSite(const string &site)
+    {
+        fSite = site;
+    }
+
+    void Post(const string &post)
+    {
+        fNextCommand = post;
+
+        fLid1.status = "";
+        fLid2.status = "";
+        //PostRequest("POST", post);
+    }
+
+    void Request()
+    {
+        PostRequest("POST", fNextCommand);
+        fNextCommand = "";
+
+        fKeepAlive.expires_from_now(boost::posix_time::seconds(fInterval));
+        fKeepAlive.async_wait(boost::bind(&ConnectionLid::HandleRequest,
+                                          this, dummy::error));
+    }
+
+    int GetInterval() const
+    {
+        return fInterval;
+    }
+
+    int GetState() const
+    {
+        using namespace Lid;
+
+        // Timeout
+        if (fLastReport.IsValid() && fLastReport+boost::posix_time::seconds(fInterval*2)<Time())
+            return State::kDisconnected;
+
+        // Unidentified state detected
+        if ((!fLid1.status.empty() && fLid1.status!="Open" && fLid1.status!="Closed" && fLid1.status!="Power Problem" && fLid1.status!="Unknown" && fLid1.status!="Overcurrent") ||
+            (!fLid2.status.empty() && fLid2.status!="Open" && fLid2.status!="Closed" && fLid2.status!="Power Problem" && fLid2.status!="Unknown" && fLid2.status!="Overcurrent"))
+            return State::kUnidentified;
+
+        // This is an assumption, but the best we have...
+        if (fLid1.status=="Closed" && fLid2.status=="Power Problem")
+            return State::kClosed;
+        if (fLid2.status=="Closed" && fLid1.status=="Power Problem")
+            return State::kClosed;
+        if (fLid1.status=="Open" && fLid2.status=="Power Problem")
+            return State::kOpen;
+        if (fLid2.status=="Open" && fLid1.status=="Power Problem")
+            return State::kOpen;
+
+        // Inconsistency
+        if (fLid1.status!=fLid2.status)
+            return State::kInconsistent;
+
+        // Unknown
+        if (fLid1.status=="Unknown")
+            return State::kUnknown;
+
+        // Power Problem
+        if (fLid1.status=="Power Problem")
+            return State::kPowerProblem;
+
+        // Overcurrent
+        if (fLid1.status=="Overcurrent")
+            return State::kOvercurrent;
+
+        // Closed
+        if (fLid1.status=="Closed")
+            return State::kClosed;
+
+        // Open
+        if (fLid1.status=="Open")
+            return State::kOpen;
+
+        return State::kConnected;
+    }
+};
+
+const uint16_t ConnectionLid::kMaxAddr = 0xfff;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimWeather : public ConnectionLid
+{
+private:
+    DimDescribedService fDim;
+
+public:
+    ConnectionDimWeather(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionLid(ioservice, imp),
+        fDim("LID_CONTROL/DATA", "S:2;F:2;F:2",
+             "|status[bool]:Lid1/2 open or closed"
+             "|I[A]:Lid1/2 current"
+             "|P[dac]:Lid1/2 hall sensor position in averaged dac counts")
+    {
+    }
+
+    void Update(const Lid &l1, const Lid &l2)
+    {
+        struct DimData
+        {
+            int16_t status[2];
+            float   current[2];
+            float   position[2];
+
+            DimData() { status[0] = status[1] = -1; }
+
+        } __attribute__((__packed__));
+
+        DimData data;
+
+        if (l1.status=="Unknown")
+            data.status[0] = 3;
+        if (l1.status=="Power Problem")
+            data.status[0] = 2;
+        if (l1.status=="Open")
+            data.status[0] = 1;
+        if (l1.status=="Closed")
+            data.status[0] = 0;
+
+        if (l2.status=="Unknown")
+            data.status[1] = 3;
+        if (l2.status=="Power Problem")
+            data.status[1] = 2;
+        if (l2.status=="Open")
+            data.status[1] = 1;
+        if (l2.status=="Closed")
+            data.status[1] = 0;
+
+        data.current[0]  = l1.current;
+        data.current[1]  = l2.current;
+
+        data.position[0] = l1.position;
+        data.position[1] = l2.position;
+
+        fDim.setQuality(GetState());
+        fDim.Update(data);
+    }
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineLidControl : public StateMachineAsio<T>
+{
+private:
+    S fLid;
+    Time fLastCommand;
+    Time fSunRise;
+
+    uint16_t fTimeToMove;
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fLid.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int Post(const EventImp &evt)
+    {
+        fLid.Post(evt.GetText());
+        return T::GetCurrentState();
+    }
+
+    int Open()
+    {
+        fLastCommand = Time();
+        fLid.Post("Button5=");
+        return Lid::State::kMoving;
+    }
+    int Close()
+    {
+        fLastCommand = Time();
+        fLid.Post("Button6=");
+        return Lid::State::kMoving;
+
+    }
+    /*
+    int MoveMotor(const EventImp &evt, int mid)
+    {
+        if (!CheckEventSize(evt.GetSize(), "MoveMotor", 2))
+            return T::kSM_FatalError;
+
+        if (evt.GetUShort()>0xfff)
+        {
+            ostringstream msg;
+            msg << "Position " << evt.GetUShort() << " for motor " << mid+1 << " out of range [0,1023].";
+            T::Error(msg);
+            return T::GetCurrentState();
+        }
+
+        fLid.MoveMotor(mid, evt.GetUShort());
+
+        return T::GetCurrentState();
+    }*/
+
+    int Unlock()
+    {
+        return fLid.GetState();
+    }
+
+    int Execute()
+    {
+        const int rc = fLid.GetState();
+        const int state = T::GetCurrentState();
+
+        if (state==Lid::State::kMoving &&
+            (rc==Lid::State::kConnected || rc==Lid::State::kDisconnected) &&
+            fLastCommand+boost::posix_time::seconds(fTimeToMove+fLid.GetInterval()) > Time())
+        {
+            return Lid::State::kMoving;
+        }
+
+        const Time now;
+        if (now>fSunRise)
+        {
+            if (state!=Lid::State::kClosed && state!=Lid::State::kLocked && state>Lid::State::kDisconnected)
+            {
+                T::Error("Lidctrl not in 'Closed' at end of nautical twilight!");
+                Close();
+            }
+
+            fSunRise = now.GetNextSunRise(-6);
+
+            ostringstream msg;
+            msg << "During next sun-rise nautical twilight will end at " << fSunRise;
+            T::Info(msg);
+
+            return Lid::State::kLocked;
+        }
+
+        return rc==Lid::State::kConnected ? state : rc;
+    }
+
+
+public:
+    StateMachineLidControl(ostream &out=cout) :
+        StateMachineAsio<T>(out, "LID_CONTROL"), fLid(*this, *this),
+        fSunRise(Time().GetNextSunRise(-6))
+    {
+        // State names
+        T::AddStateName(Lid::State::kDisconnected, "NoConnection",
+                     "No connection to web-server could be established recently");
+
+        T::AddStateName(Lid::State::kConnected, "Connected",
+                     "Connection established, but status still not known");
+
+        T::AddStateName(Lid::State::kUnidentified, "Unidentified",
+                     "At least one lid reported a state which could not be identified by lidctrl");
+
+        T::AddStateName(Lid::State::kInconsistent, "Inconsistent",
+                     "Both lids show different states");
+
+        T::AddStateName(Lid::State::kUnknown, "Unknown",
+                     "Arduino reports at least one lids in an unknown status");
+
+        T::AddStateName(Lid::State::kPowerProblem, "PowerProblem",
+                     "Arduino reports both lids to have a power problem (might also be that both are at the end switches)");
+
+        T::AddStateName(Lid::State::kOvercurrent, "Overcurrent",
+                     "Arduino reports both lids to have a overcurrent (might also be that both are at the end switches)");
+
+        T::AddStateName(Lid::State::kClosed, "Closed",
+                     "Both lids are closed");
+
+        T::AddStateName(Lid::State::kOpen, "Open",
+                     "Both lids are open");
+
+        T::AddStateName(Lid::State::kMoving, "Moving",
+                     "Lids are supposed to move, waiting for next status");
+
+        T::AddStateName(Lid::State::kLocked, "Locked",
+                        "Locked, no commands accepted except UNLOCK.");
+
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B")
+            (bind(&StateMachineLidControl::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+
+        T::AddEvent("OPEN", Lid::State::kUnidentified, Lid::State::kInconsistent, Lid::State::kUnknown, Lid::State::kPowerProblem, Lid::State::kClosed)
+            (bind(&StateMachineLidControl::Open, this))
+            ("Open the lids");
+
+        T::AddEvent("CLOSE")(Lid::State::kUnidentified)(Lid::State::kInconsistent)(Lid::State::kUnknown)(Lid::State::kOvercurrent)(Lid::State::kPowerProblem)(Lid::State::kOpen)
+            (bind(&StateMachineLidControl::Close, this))
+            ("Close the lids");
+
+        T::AddEvent("POST", "C")(Lid::State::kUnidentified)(Lid::State::kInconsistent)(Lid::State::kUnknown)(Lid::State::kOvercurrent)(Lid::State::kPowerProblem)(Lid::State::kOpen)(Lid::State::kClosed)(Lid::State::kMoving)
+            (bind(&StateMachineLidControl::Post, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+
+        T::AddEvent("UNLOCK", Lid::State::kLocked)
+            (bind(&StateMachineLidControl::Unlock, this))
+            ("Unlock if in locked state.");
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fLid.SetVerbose(!conf.Get<bool>("quiet"));
+        fLid.SetInterval(conf.Get<uint16_t>("interval"));
+        fLid.SetDebugTx(conf.Get<bool>("debug-tx"));
+        fLid.SetSite(conf.Get<string>("url"));
+        fLid.SetEndpoint(conf.Get<string>("addr"));
+        fLid.StartConnect();
+
+        fTimeToMove = conf.Get<uint16_t>("time-to-move");
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineLidControl<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Lid control");
+    control.add_options()
+        ("no-dim,d",   po_switch(),    "Disable dim services")
+        ("addr,a",     var<string>(""),  "Network address of the lid controling Arduino including port")
+        ("url,u",      var<string>(""),  "File name and path to load")
+        ("quiet,q",    po_bool(true),  "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ("interval,i", var<uint16_t>(5), "Interval between two updates on the server in seconds")
+        ("time-to-move", var<uint16_t>(20), "Expected minimum time the lid taks to open/close")
+        ("debug-tx",   po_bool(), "Enable debugging of ethernet transmission.")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The lidctrl is an interface to the LID control hardware.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: lidctrl [-c type] [OPTIONS]\n"
+        "  or:  lidctrl [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+//    Main::PrintHelp<StateMachineFTM<StateMachine, ConnectionFTM>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    // No console access at all
+    if (!conf.Has("console"))
+    {
+        if (conf.Get<bool>("no-dim"))
+            return RunShell<LocalStream, StateMachine, ConnectionLid>(conf);
+        else
+            return RunShell<LocalStream, StateMachineDim, ConnectionDimWeather>(conf);
+    }
+    // Cosole access w/ and w/o Dim
+    if (conf.Get<bool>("no-dim"))
+    {
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell, StateMachine, ConnectionLid>(conf);
+        else
+            return RunShell<LocalConsole, StateMachine, ConnectionLid>(conf);
+    }
+    else
+    {
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell, StateMachineDim, ConnectionDimWeather>(conf);
+        else
+            return RunShell<LocalConsole, StateMachineDim, ConnectionDimWeather>(conf);
+    }
+
+    return 0;
+}
Index: branches/testFACT++branch/src/log.cc
===================================================================
--- branches/testFACT++branch/src/log.cc	(revision 18277)
+++ branches/testFACT++branch/src/log.cc	(revision 18277)
@@ -0,0 +1,43 @@
+#include "MessageDim.h"
+
+#include "tools.h"
+
+#include <iostream>
+
+int main(int, const char **argv)
+{
+    // We could use putenv to make the Configure class change the value...
+    setenv("DIM_DNS_NODE", "localhost", 0);
+
+    // Get the name of the server we should subscribe to from the cmd line
+    const std::string server = argv[1] ? argv[1] : "TIME";
+
+    // Some info on the console
+    std::cout << "Subscribing to " << server << "/MESSAGE...\n" << std::endl;
+
+    // Create a message handler (default: redirects to stdout)
+    MessageImp msg;
+
+    // Subscribe to SERVER/MESSAGE and start output
+    MessageDimRX msgrx(server, msg);
+
+    // Just do nothing ;)
+    while (1)
+        usleep(1);
+
+    return 0;
+}
+
+// **************************************************************************
+/** @example log.cc
+
+This is a simple example which subscribes to the message service of one
+dedicated dim client. It can be used to remotely log its log-messages.
+
+To redirect the output to a file use the shell redirection or the
+tee-program.
+
+The program is stopped by CTRL-C
+
+*/
+// **************************************************************************
Index: branches/testFACT++branch/src/logtime.cc
===================================================================
--- branches/testFACT++branch/src/logtime.cc	(revision 18277)
+++ branches/testFACT++branch/src/logtime.cc	(revision 18277)
@@ -0,0 +1,57 @@
+#include "MessageDim.h"
+
+#include "tools.h"
+#include "Time.h"
+
+#include <iostream>
+
+int main(int, const char **)
+{
+   // We could use putenv to make the Configure class change the value...
+    setenv("DIM_DNS_NODE", "localhost", 0);
+
+    // Start a DimServer called TIME
+    DimServer::start("TIME");
+
+
+
+    // Some info on the console
+    std::cout << "Offering TIME/MESSAGE...\n" << std::endl;
+
+    // Setup a DimService called TIME/MESSAGE
+    MessageDimTX msg("TIME");
+    while (1)
+    {
+        // Send current time
+        msg.Message(Time().GetAsStr());
+
+        // wait approximately one second
+        usleep(1000000);
+
+        //std::cout << DimServer::getClientName() << std::endl;
+        //std::cout << DimServer::getClientId() << std::endl;
+        //std::cout << DimServer::getDnsPort() << std::endl;
+        std::cout << "con: " << dis_get_conn_id() << std::endl;
+
+        char **ids = DimServer::getClientServices();
+
+        while (*ids)
+        {
+            std::cout << *ids << std::endl;
+            ids++;
+        }
+    }
+
+    return 0;
+}
+
+// **************************************************************************
+/** @example logtime.cc
+
+This is a simple example how to log messages through the Dim network
+using MessageDimTX. Here we are offering the time once a second.
+
+The program is stopped by CTRL-C
+
+*/
+// **************************************************************************
Index: branches/testFACT++branch/src/magiclidar.cc
===================================================================
--- branches/testFACT++branch/src/magiclidar.cc	(revision 18277)
+++ branches/testFACT++branch/src/magiclidar.cc	(revision 18277)
@@ -0,0 +1,569 @@
+#include <boost/array.hpp>
+
+#include "FACT.h"
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Timers.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "HeadersMagicLidar.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+using namespace MagicLidar;
+
+// ------------------------------------------------------------------------
+
+class ConnectionLidar : public Connection
+{
+    uint16_t fInterval;
+
+    bool fIsVerbose;
+
+    string fSite;
+
+    virtual void UpdateLidar(const Time &, const DimLidar &)
+    {
+    }
+
+protected:
+
+    boost::array<char, 4096> fArray;
+
+    Time fLastReport;
+    Time fLastReception;
+
+    void HandleRead(const boost::system::error_code& err, size_t bytes_received)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+                Warn("Connection closed by remote host.");
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+            return;
+        }
+
+        fLastReception = Time();
+
+        const string str(fArray.data(), bytes_received);
+        memset(fArray.data(), 0, fArray.size());
+
+        if (fIsVerbose)
+            Out() << str << endl;
+
+        bool isheader = true;
+
+        DimLidar data;
+
+        int hh=0, mm=0, ss=0, y=0, m=0, d=0;
+
+        bool keepalive = false;
+        bool failed = false;
+
+        stringstream is(str);
+        string line;
+        while (getline(is, line))
+        {
+            if (line.size()==1 && line[0]==13)
+            {
+                isheader = false;
+                continue;
+            }
+
+            if (isheader)
+            {
+                const size_t p = line.find_first_of(": ");
+                if (p==string::npos)
+                    continue;
+
+                std::transform(line.begin(), line.end(), line.begin(), (int(&)(int))std::tolower);
+
+                const string key = line.substr(0, p);
+                const string val = line.substr(p+2);
+
+                if (key=="connection" && val=="keep-alive")
+                    keepalive = true;
+            }
+            else
+            {
+                try
+                {
+                    if (line.substr(0, 3)=="ZEN")
+                        data.fZd = stoi(line.substr(3));
+                    if (line.substr(0, 2)=="AZ")
+                        data.fAz = stof(line.substr(2));
+
+                    //if (line.substr(0, 3)=="PBL")
+                    //    data.fPBL = stof(line.substr(3));
+                    //if (line.substr(0, 3)=="CHE")
+                    //    data.fCHE = stof(line.substr(3));
+                    //if (line.substr(0, 3)=="COT")
+                    //    data.fCOT = stof(line.substr(3));
+
+                    if (line.substr(0, 2)=="T3")
+                        data.fT3 = stof(line.substr(2));
+                    if (line.substr(0, 2)=="T6")
+                        data.fT6 = stof(line.substr(2));
+                    if (line.substr(0, 2)=="T9")
+                        data.fT9 = stof(line.substr(2));
+                    if (line.substr(0, 3)=="T12")
+                        data.fT12 = stof(line.substr(3));
+
+                    if (line.substr(0, 4)=="HOUR")
+                        hh = stoi(line.substr(4));
+                    if (line.substr(0, 6)=="MINUTS")
+                        mm = stoi(line.substr(6));
+                    if (line.substr(0, 7)=="SECONDS")
+                        ss = stoi(line.substr(7));
+
+                    if (line.substr(0, 4)=="YEAR")
+                        y = stoi(line.substr(4));
+                    if (line.substr(0, 5)=="MONTH")
+                        m = stoi(line.substr(5));
+                    if (line.substr(0, 3)=="DAY")
+                        d = stoi(line.substr(3));
+                }
+                catch (const exception &e)
+                {
+                    Warn("Conversion of received data failed");
+                    failed = true;
+                    break;
+                }
+            }
+        }
+
+        if (!keepalive)
+            PostClose(false);
+
+        if (failed)
+            return;
+
+        try
+        {
+            const Time tm = Time(2000+y, m, d, hh, mm, ss);
+            if (tm==fLastReport)
+                return;
+
+            fLastReport = tm;
+
+            if (data.fT3==0 && data.fT6==0 && data.fT9==0 && data.fT12==0)
+                return;
+
+            ostringstream msg;
+            msg << tm.GetAsStr("%H:%M:%S") << ":"
+                //<< " PBL=" << data.fPBL
+                //<< " CHE=" << data.fCHE
+                //<< " COT=" << data.fCOT
+                << " T3-12=" << data.fT3
+                << "/" << data.fT6
+                << "/" << data.fT9
+                << "/" << data.fT12
+                << " Zd="  << data.fZd  << "°"
+                << " Az="  << data.fAz  << "°";
+            Message(msg);
+
+            UpdateLidar(tm, data);
+        }
+        catch (const exception &e)
+        {
+            Warn("Corrupted time received.");
+        }
+
+    }
+
+    void StartReadReport()
+    {
+        async_read_some(ba::buffer(fArray),
+                        boost::bind(&ConnectionLidar::HandleRead, this,
+                                    dummy::error, dummy::bytes_transferred));
+    }
+
+    boost::asio::deadline_timer fKeepAlive;
+
+    void PostRequest()
+    {
+        const string cmd =
+            "GET "+fSite+" HTTP/1.1\r\n"
+            "Accept: */*\r\n"
+            "Content-Type: application/octet-stream\r\n"
+            "User-Agent: FACT\r\n"
+            "Host: www.fact-project.org\r\n"
+            "Pragma: no-cache\r\n"
+            "Cache-Control: no-cache\r\n"
+            "Expires: 0\r\n"
+            "Connection: Keep-Alive\r\n"
+            "Cache-Control: max-age=0\r\n"
+            "\r\n";
+
+        PostMessage(cmd);
+    }
+
+    void Request()
+    {
+        PostRequest();
+
+        fKeepAlive.expires_from_now(boost::posix_time::seconds(fInterval/2));
+        fKeepAlive.async_wait(boost::bind(&ConnectionLidar::HandleRequest,
+                                          this, dummy::error));
+    }
+
+    void HandleRequest(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "Write timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            PostClose(true);
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fKeepAlive.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        Request();
+    }
+
+
+private:
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        Request();
+        StartReadReport();
+    }
+
+public:
+
+    static const uint16_t kMaxAddr;
+
+public:
+    ConnectionLidar(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsVerbose(true), fLastReport(Time::none), fLastReception(Time::none), fKeepAlive(ioservice)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+        Connection::SetVerbose(b);
+    }
+
+    void SetInterval(uint16_t i)
+    {
+        fInterval = i;
+    }
+
+    void SetSite(const string &site)
+    {
+        fSite = site;
+    }
+
+    int GetState() const
+    {
+        if (fLastReport.IsValid() && fLastReport+boost::posix_time::seconds(fInterval*2)>Time())
+            return 3;
+
+        if (fLastReception.IsValid() && fLastReception+boost::posix_time::seconds(fInterval*2)>Time())
+            return 2;
+
+        return 1;
+
+    }
+};
+
+const uint16_t ConnectionLidar::kMaxAddr = 0xfff;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimLidar : public ConnectionLidar
+{
+private:
+
+    DimDescribedService fDimLidar;
+
+    virtual void UpdateLidar(const Time &t, const DimLidar &data)
+    {
+        fDimLidar.setData(&data, sizeof(DimLidar));
+        fDimLidar.Update(t);
+    }
+
+public:
+    ConnectionDimLidar(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionLidar(ioservice, imp),
+        fDimLidar("MAGIC_LIDAR/DATA", "F:1;F:1;F:1;F:1;F:1;F:1",
+                  "|Zd[deg]:Pointing direction zenith distance"
+                  "|Az[deg]:Pointing direction azimuth"
+                  //"|CHE[km]:Cloud height"
+                  //"|COT[1]:Cloud optical transparency at 532nm"
+                  //"|PBL[100]:Planetary boundary layer normalized to 100 for clear nights"
+                  "|T3[1]:Transmission below 3km normalized to 1"
+                  "|T6[1]:Transmission below 6km normalized to 1"
+                  "|T9[1]:Transmission below 9km normalized to 1"
+                  "|T12[1]:Transmission below 12km normalized to 1")
+    {
+    }
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineLidar : public StateMachineAsio<T>
+{
+private:
+    S fLidar;
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fLidar.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+/*
+    int Disconnect()
+    {
+        // Close all connections
+        fLidar.PostClose(false);
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fLidar.PostClose(false);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        poll();
+
+        if (evt.GetBool())
+            fLidar.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fLidar.PostClose(true);
+
+        return T::GetCurrentState();
+    }
+*/
+    int Execute()
+    {
+        return fLidar.GetState();
+    }
+
+
+public:
+    StateMachineLidar(ostream &out=cout) :
+        StateMachineAsio<T>(out, "MAGIC_LIDAR"), fLidar(*this, *this)
+    {
+        // State names
+        T::AddStateName(State::kDisconnected, "NoConnection",
+                     "No connection to web-server could be established recently");
+
+        T::AddStateName(State::kConnected, "Invalid",
+                     "Connection to webserver can be established, but received data is not recent or invalid");
+
+        T::AddStateName(State::kReceiving, "Valid",
+                     "Connection to webserver can be established, receint data received");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B")
+            (bind(&StateMachineLidar::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+/*
+        // Conenction commands
+        AddEvent("DISCONNECT")
+            (bind(&StateMachineLidar::Disconnect, this))
+            ("disconnect from ethernet");
+
+        AddEvent("RECONNECT", "O")
+            (bind(&StateMachineLidar::Reconnect, this, placeholders::_1))
+            ("(Re)connect ethernet connection to FTM, a new address can be given"
+             "|[host][string]:new ethernet address in the form <host:port>");
+*/
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fLidar.SetVerbose(!conf.Get<bool>("quiet"));
+        fLidar.SetInterval(conf.Get<uint16_t>("interval"));
+        fLidar.SetDebugTx(conf.Get<bool>("debug-tx"));
+        fLidar.SetSite(conf.Get<string>("url"));
+        fLidar.SetEndpoint(conf.Get<string>("addr"));
+        fLidar.StartConnect();
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineLidar<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("MAGIC lidar control options");
+    control.add_options()
+        ("no-dim,d",  po_switch(),    "Disable dim services")
+        ("addr,a",  var<string>("www.magic.iac.es:80"),  "Network address of Cosy")
+        ("url,u",  var<string>("/site/weather/lidar_data.txt"),  "File name and path to load")
+        ("quiet,q", po_bool(true),  "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ("interval,i", var<uint16_t>(30), "Interval between two updates on the server in seconds")
+        ("debug-tx", po_bool(), "Enable debugging of ethernet transmission.")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The magiclidar is an interface to the MAGIC lidar data.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: magiclidar [-c type] [OPTIONS]\n"
+        "  or:  magiclidar [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+//    Main::PrintHelp<StateMachineFTM<StateMachine, ConnectionFTM>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+            if (conf.Get<bool>("no-dim"))
+                return RunShell<LocalStream, StateMachine, ConnectionLidar>(conf);
+            else
+                return RunShell<LocalStream, StateMachineDim, ConnectionDimLidar>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionLidar>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionLidar>(conf);
+        }
+        else
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim, ConnectionDimLidar>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim, ConnectionDimLidar>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/testFACT++branch/src/magicweather.cc
===================================================================
--- branches/testFACT++branch/src/magicweather.cc	(revision 18277)
+++ branches/testFACT++branch/src/magicweather.cc	(revision 18277)
@@ -0,0 +1,562 @@
+#include <boost/array.hpp>
+
+#include <string>    // std::string
+#include <algorithm> // std::transform
+#include <cctype>    // std::tolower
+
+#include "FACT.h"
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Timers.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "HeadersMagicWeather.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+using namespace MagicWeather;
+
+// ------------------------------------------------------------------------
+
+class ConnectionWeather : public Connection
+{
+    uint16_t fInterval;
+
+    bool fIsVerbose;
+
+    string fSite;
+
+    virtual void UpdateWeather(const Time &, const DimWeather &)
+    {
+    }
+
+protected:
+
+    boost::array<char, 4096> fArray;
+
+    Time fLastReport;
+    Time fLastReception;
+
+    void HandleRead(const boost::system::error_code& err, size_t bytes_received)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+                Warn("Connection closed by remote host.");
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+            return;
+        }
+
+        fLastReception = Time();
+
+        const string str(fArray.data(), bytes_received);
+        memset(fArray.data(), 0, fArray.size());
+
+        if (fIsVerbose)
+            Out() << str << endl;
+
+        bool isheader = true;
+
+        DimWeather data;
+
+        int hh=0, mm=0, ss=0, y=0, m=0, d=0;
+
+        bool keepalive = false;
+
+        stringstream is(str);
+        string line;
+        while (getline(is, line))
+        {
+            if (line.size()==1 && line[0]==13)
+            {
+                isheader = false;
+                continue;
+            }
+
+            if (isheader)
+            {
+                const size_t p = line.find_first_of(": ");
+                if (p==string::npos)
+                    continue;
+
+                std::transform(line.begin(), line.end(), line.begin(), (int(&)(int))std::tolower);
+
+                const string key = line.substr(0, p);
+                const string val = line.substr(p+2);
+
+                if (key=="connection" && val=="keep-alive")
+                    keepalive = true;
+            }
+            else
+            {
+                if (line.substr(0, 2)=="ST")
+                    data.fStatus = stoi(line.substr(2));
+
+                if (line.substr(0, 2)=="TE")
+                    data.fTemp = stof(line.substr(2));
+
+                if (line.substr(0, 2)=="DP")
+                    data.fDew = stof(line.substr(2));
+
+                if (line.substr(0, 3)=="HUM")
+                    data.fHum = stof(line.substr(3));
+
+                if (line.substr(0, 2)=="WS")
+                    data.fWind = stof(line.substr(2));
+
+                if (line.substr(0, 3)=="MWD")
+                    data.fDir = stof(line.substr(3));
+
+                if (line.substr(0, 2)=="WP")
+                    data.fGusts = stof(line.substr(2));
+
+                if (line.substr(0, 5)=="PRESS")
+                    data.fPress = stof(line.substr(5));
+
+                if (line.substr(0, 4)=="HOUR")
+                    hh = stoi(line.substr(4));
+
+                if (line.substr(0, 6)=="MINUTS")
+                    mm = stoi(line.substr(6));
+
+                if (line.substr(0, 7)=="SECONDS")
+                    ss = stoi(line.substr(7));
+
+                if (line.substr(0, 4)=="YEAR")
+                    y = stoi(line.substr(4));
+
+                if (line.substr(0, 5)=="MONTH")
+                    m = stoi(line.substr(5));
+
+                if (line.substr(0, 3)=="DAY")
+                    d = stoi(line.substr(3));
+            }
+        }
+
+        if (!keepalive)
+            PostClose(false);
+
+        try
+        {
+            const Time tm = Time(2000+y, m, d, hh, mm, ss);
+            if (tm==fLastReport)
+                return;
+
+            ostringstream msg;
+            msg << tm.GetAsStr("%H:%M:%S") << "[" << data.fStatus << "]:"
+                << " T="    << data.fTemp  << "°C"
+                << " H="    << data.fHum   << "%"
+                << " P="    << data.fPress << "hPa"
+                << " Td="   << data.fDew   << "°C"
+                << " V="    << data.fWind  << "km/h"
+                << " Vmax=" << data.fGusts << "km/h"
+                << " dir="  << data.fDir   << "°";
+            Message(msg);
+
+            UpdateWeather(tm, data);
+
+            fLastReport = tm;
+        }
+        catch (const exception &e)
+        {
+            Warn("Corrupted time received.");
+        }
+
+    }
+
+    void StartReadReport()
+    {
+        async_read_some(ba::buffer(fArray),
+                        boost::bind(&ConnectionWeather::HandleRead, this,
+                                    dummy::error, dummy::bytes_transferred));
+    }
+
+    ba::deadline_timer fKeepAlive;
+
+    void PostRequest()
+    {
+        const string cmd =
+            "GET "+fSite+" HTTP/1.1\r\n"
+            "Accept: */*\r\n"
+            "Content-Type: application/octet-stream\r\n"
+            "User-Agent: FACT\r\n"
+            "Host: www.fact-project.org\r\n"
+            "Pragma: no-cache\r\n"
+            "Cache-Control: no-cache\r\n"
+            "Expires: 0\r\n"
+            "Connection: Keep-Alive\r\n"
+            "Cache-Control: max-age=0\r\n"
+            "\r\n";
+
+        PostMessage(cmd);
+    }
+
+    void Request()
+    {
+        PostRequest();
+
+        fKeepAlive.expires_from_now(boost::posix_time::seconds(fInterval/2));
+        fKeepAlive.async_wait(boost::bind(&ConnectionWeather::HandleRequest,
+                                          this, dummy::error));
+    }
+
+    void HandleRequest(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "Write timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            PostClose(true);
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fKeepAlive.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        Request();
+    }
+
+
+private:
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        Request();
+        StartReadReport();
+    }
+
+public:
+
+    static const uint16_t kMaxAddr;
+
+public:
+    ConnectionWeather(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsVerbose(true), fLastReport(Time::none), fLastReception(Time::none), fKeepAlive(ioservice)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+        Connection::SetVerbose(b);
+    }
+
+    void SetInterval(uint16_t i)
+    {
+        fInterval = i;
+    }
+
+    void SetSite(const string &site)
+    {
+        fSite = site;
+    }
+
+    int GetState() const
+    {
+        if (fLastReport.IsValid() && fLastReport+boost::posix_time::seconds(fInterval*2)>Time())
+            return 3;
+
+        if (fLastReception.IsValid() && fLastReception+boost::posix_time::seconds(fInterval*2)>Time())
+            return 2;
+
+        return 1;
+
+    }
+};
+
+const uint16_t ConnectionWeather::kMaxAddr = 0xfff;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimWeather : public ConnectionWeather
+{
+private:
+
+    DimDescribedService fDimWeather;
+
+    virtual void UpdateWeather(const Time &t, const DimWeather &data)
+    {
+        fDimWeather.setData(&data, sizeof(DimWeather));
+        fDimWeather.Update(t);
+    }
+
+public:
+    ConnectionDimWeather(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionWeather(ioservice, imp),
+        fDimWeather("MAGIC_WEATHER/DATA", "S:1;F:1;F:1;F:1;F:1;F:1;F:1;F:1",
+                     "|stat:Status"
+                     "|T[deg C]:Temperature"
+                     "|T_dew[deg C]:Dew point"
+                     "|H[%]:Humidity"
+                     "|P[hPa]:Air pressure"
+                     "|v[km/h]:Wind speed"
+                     "|v_max[km/h]:Wind gusts"
+                     "|d[deg]:Wind direction (N-E)")
+    {
+    }
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineWeather : public StateMachineAsio<T>
+{
+private:
+    S fWeather;
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fWeather.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+/*
+    int Disconnect()
+    {
+        // Close all connections
+        fWeather.PostClose(false);
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fWeather.PostClose(false);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        ba::io_service::poll();
+
+        if (evt.GetBool())
+            fWeather.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fWeather.PostClose(true);
+
+        return T::GetCurrentState();
+    }
+*/
+    int Execute()
+    {
+        return fWeather.GetState();
+    }
+
+public:
+    StateMachineWeather(ostream &out=cout) :
+        StateMachineAsio<T>(out, "MAGIC_WEATHER"), fWeather(*this, *this)
+    {
+        // State names
+        T::AddStateName(State::kDisconnected, "NoConnection",
+                     "No connection to web-server could be established recently");
+
+        T::AddStateName(State::kConnected, "Invalid",
+                     "Connection to webserver can be established, but received data is not recent or invalid");
+
+        T::AddStateName(State::kReceiving, "Valid",
+                     "Connection to webserver can be established, receint data received");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B")
+            (bind(&StateMachineWeather::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+/*
+        // Conenction commands
+        AddEvent("DISCONNECT")
+            (bind(&StateMachineWeather::Disconnect, this))
+            ("disconnect from ethernet");
+
+        AddEvent("RECONNECT", "O")
+            (bind(&StateMachineWeather::Reconnect, this, placeholders::_1))
+            ("(Re)connect ethernet connection to FTM, a new address can be given"
+             "|[host][string]:new ethernet address in the form <host:port>");
+*/
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fWeather.SetVerbose(!conf.Get<bool>("quiet"));
+        fWeather.SetInterval(conf.Get<uint16_t>("interval"));
+        fWeather.SetDebugTx(conf.Get<bool>("debug-tx"));
+        fWeather.SetSite(conf.Get<string>("url"));
+        fWeather.SetEndpoint(conf.Get<string>("addr"));
+        fWeather.StartConnect();
+
+        return -1;
+    }
+};
+
+
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineWeather<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("MAGIC weather control options");
+    control.add_options()
+        ("no-dim,d",  po_switch(),    "Disable dim services")
+        ("addr,a",  var<string>("www.magic.iac.es:80"),  "Network address of Cosy")
+        ("url,u",  var<string>("/site/weather/weather_data.txt"),  "File name and path to load")
+        ("quiet,q", po_bool(true),  "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ("interval,i", var<uint16_t>(30), "Interval between two updates on the server in seconds")
+        ("debug-tx", po_bool(), "Enable debugging of ethernet transmission.")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The magicweather is an interface to the MAGIC weather data.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: magicweather [-c type] [OPTIONS]\n"
+        "  or:  magicweather [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+//    Main::PrintHelp<StateMachineFTM<StateMachine, ConnectionFTM>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+            if (conf.Get<bool>("no-dim"))
+                return RunShell<LocalStream, StateMachine, ConnectionWeather>(conf);
+            else
+                return RunShell<LocalStream, StateMachineDim, ConnectionDimWeather>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionWeather>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionWeather>(conf);
+        }
+        else
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim, ConnectionDimWeather>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim, ConnectionDimWeather>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/testFACT++branch/src/makedata.cc
===================================================================
--- branches/testFACT++branch/src/makedata.cc	(revision 18277)
+++ branches/testFACT++branch/src/makedata.cc	(revision 18277)
@@ -0,0 +1,162 @@
+#include "externals/Prediction.h"
+
+#include "Database.h"
+
+#include "Time.h"
+#include "Configuration.h"
+
+using namespace std;
+using namespace Nova;
+
+// ========================================================================
+// ========================================================================
+// ========================================================================
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Smart FACT");
+    control.add_options()
+        ("source-name", var<string>(), "Source name")
+        ("date-time", var<string>(), "SQL time (UTC)")
+        ("source-database", var<string>(""), "Database link as in\n\tuser:password@server[:port]/database.")
+        ("max-current", var<double>(75), "Maximum current to display in other plots.")
+        ("max-zd", var<double>(75), "Maximum zenith distance to display in other plots")
+        ("no-limits", po_switch(), "Switch off limits in plots")
+        ;
+
+    po::positional_options_description p;
+    p.add("source-name", 1); // The 1st positional options
+    p.add("date-time",   2); // The 2nd positional options
+
+    conf.AddOptions(control);
+    conf.SetArgumentPositions(p);
+}
+
+void PrintUsage()
+{
+    cout <<
+        "makedata - The astronomy data listing\n"
+        "\n"
+//        "Calculates several plots for the sources in the database\n"
+//        "helpful or needed for scheduling. The Plot is always calculated\n"
+//        "for the night which starts at the same so. So no matter if\n"
+//        "you specify '1974-09-09 00:00:00' or '1974-09-09 21:56:00'\n"
+//        "the plots will refer to the night 1974-09-09/1974-09-10.\n"
+//        "The advantage is that specification of the date as in\n"
+//        "1974-09-09 is enough. Time axis starts and ends at nautical\n"
+//        "twilight which is 12deg below horizon.\n"
+//        "\n"
+        "Usage: makedata sql-datetime [--ra={ra} --dec={dec}]\n";
+    cout << endl;
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv))
+        return 127;
+/*
+    if (!conf.Has("source-name"))
+    {
+        cout << "ERROR - --source-name missing." << endl;
+        return 1;
+    }
+*/
+    // ------------------ Eval config ---------------------
+
+    Time time;
+    if (conf.Has("date-time"))
+        time.SetFromStr(conf.Get<string>("date-time"));
+
+    const double max_current = conf.Get<double>("max-current");
+    const double max_zd      = conf.Get<double>("max-zd");
+    const double no_limits   = conf.Get<bool>("no-limits");
+
+    // -12: nautical
+    const RstTime sun_set  = GetSolarRst(time.JD()-0.5, -12);   // Sun set with the same date than th provided date
+    const RstTime sun_rise = GetSolarRst(time.JD()+0.5, -12);  // Sun rise on the following day
+
+    const double jd  = floor(time.Mjd())+2400001;
+    const double mjd = floor(time.Mjd())+49718+0.5;
+
+
+    const double jd0 = fmod(sun_set.set,   1);   // ~0.3
+    const double jd1 = fmod(sun_rise.rise, 1);   // ~0.8
+
+    cout << Time::iso << time << ", " << mjd-49718 << ", ";
+    cout << jd0  << ", ";
+    cout << jd1 << "\n";
+
+    if (!conf.Has("source-name"))
+        return 1;
+
+    const string source_name = conf.Get<string>("source-name");
+    const string fDatabase   = conf.Get<string>("source-database");
+
+    // ------------- Get Sources from databasse ---------------------
+
+    const mysqlpp::StoreQueryResult res =
+        Database(fDatabase).query("SELECT fRightAscension, fDeclination FROM Source WHERE fSourceName='"+source_name+"'").store();
+
+    // ------------- Create canvases and frames ---------------------
+
+    vector<mysqlpp::Row>::const_iterator row=res.begin();
+    if (row==res.end())
+        return 1;
+
+    EquPosn pos;
+    pos.ra  = double((*row)[0])*15;
+    pos.dec = double((*row)[1]);
+
+    // Loop over 24 hours
+    for (int i=0; i<24*12; i++)
+    {
+        const double h = double(i)/(24*12);
+
+        // check if it is betwene sun-rise and sun-set
+        if (h<jd0 || h>jd1)
+            continue;
+
+        const SolarObjects so(jd+h);
+
+        // get local position of source
+        const HrzPosn hrz = GetHrzFromEqu(pos, jd+h);
+
+        // get current prediction
+        const double cur = FACT::PredictI(so, pos);
+
+        // Relative  energy threshold prediction
+        const double ratio = pow(cos((90-hrz.alt)*M_PI/180), -2.664);
+
+        // Add points to curve
+        // const double axis = (mjd+h)*24*3600;
+
+        Time t(mjd-49718);
+        t += boost::posix_time::minutes(i*5);
+
+        cout << t << ", " << h << ", ";
+
+        if (no_limits || cur<max_current)
+            cout << hrz.alt;
+        cout << ", ";
+
+        if (no_limits || 90-hrz.alt<max_zd)
+            cout << cur;
+        cout << ", ";
+
+        if (no_limits || (cur<max_current && 90-hrz.alt<max_zd))
+            cout << ratio*cur/6.2;
+        cout << ", ";
+
+        if (no_limits || (cur<max_current && 90-hrz.alt<max_zd))
+            cout << GetAngularSeparation(so.fMoonEqu, pos);
+        cout << "\n";
+    }
+
+    cout << flush;
+
+    return 0;
+}
Index: branches/testFACT++branch/src/makeplots.cc
===================================================================
--- branches/testFACT++branch/src/makeplots.cc	(revision 18277)
+++ branches/testFACT++branch/src/makeplots.cc	(revision 18277)
@@ -0,0 +1,329 @@
+#include "externals/Prediction.h"
+
+#include "Database.h"
+
+#include "Time.h"
+#include "Configuration.h"
+
+#include <TROOT.h>
+#include <TH1.h>
+#include <TGraph.h>
+#include <TCanvas.h>
+#include <TLegend.h>
+
+using namespace std;
+using namespace Nova;
+
+// ------------------------------------------------------------------------
+
+void CheckForGap(TCanvas &c, TGraph &g, double axis)
+{
+    if (g.GetN()==0 || axis-g.GetX()[g.GetN()-1]<450)
+        return;
+
+    c.cd();
+    ((TGraph*)g.DrawClone("C"))->SetBit(kCanDelete);
+    while (g.GetN())
+        g.RemovePoint(0);
+}
+
+void DrawClone(TCanvas &c, TGraph &g)
+{
+    if (g.GetN()==0)
+        return;
+
+    c.cd();
+    ((TGraph*)g.DrawClone("C"))->SetBit(kCanDelete);
+}
+
+// ========================================================================
+// ========================================================================
+// ========================================================================
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Smart FACT");
+    control.add_options()
+        //("ra",        var<double>(), "Source right ascension")
+        //("dec",       var<double>(), "Source declination")
+        ("date-time", var<string>(), "SQL time (UTC)")
+        ("source-database", var<string>(""), "Database link as in\n\tuser:password@server[:port]/database.")
+        ("max-current", var<double>(100), "Maximum current to display in other plots.")
+        ("max-zd", var<double>(50), "Maximum zenith distance to display in other plots")
+        ("no-limits", po_switch(), "Switch off limits in plots")
+        ;
+
+    po::positional_options_description p;
+    p.add("date-time", 1); // The first positional options
+
+    conf.AddOptions(control);
+    conf.SetArgumentPositions(p);
+}
+
+void PrintUsage()
+{
+    cout <<
+        "makeplots - The astronomy plotter\n"
+        "\n"
+        "Calculates several plots for the sources in the database\n"
+        "helpful or needed for scheduling. The Plot is always calculated\n"
+        "for the night which starts at the same so. So no matter if\n"
+        "you specify '1974-09-09 00:00:00' or '1974-09-09 21:56:00'\n"
+        "the plots will refer to the night 1974-09-09/1974-09-10.\n"
+        "The advantage is that specification of the date as in\n"
+        "1974-09-09 is enough. Time axis starts and ends at nautical\n"
+        "twilight which is 12deg below horizon.\n"
+        "\n"
+        "Usage: makeplots sql-datetime\n";
+//        "Usage: makeplots sql-datetime [--ra={ra} --dec={dec}]\n";
+    cout << endl;
+}
+
+int main(int argc, const char* argv[])
+{
+    gROOT->SetBatch();
+
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv))
+        return 127;
+
+//    if (conf.Has("ra")^conf.Has("dec"))
+//    {
+//        cout << "ERROR - Either --ra or --dec missing." << endl;
+//        return 1;
+//    }
+
+    // ------------------ Eval config ---------------------
+
+    Time time;
+    if (conf.Has("date-time"))
+        time.SetFromStr(conf.Get<string>("date-time"));
+
+    const double max_current = conf.Get<double>("max-current");
+    const double max_zd      = conf.Get<double>("max-zd");
+    const double no_limits   = conf.Get<bool>("no-limits");
+
+    // -12: nautical
+    // Sun set with the same date than th provided date
+    // Sun rise on the following day
+    const RstTime sun_set  = GetSolarRst(time.JD()-0.5, -12);
+    const RstTime sun_rise = GetSolarRst(time.JD()+0.5, -12);
+
+    const double jd = floor(time.Mjd())+2400001;
+
+    cout << "Time: " << time     << endl;
+    cout << "Base: " << Time(jd-0.5) << endl;
+    cout << "Set:  " << Time(sun_set.set)   << endl;
+    cout << "Rise: " << Time(sun_rise.rise) << endl;
+
+    const double sunset  = sun_set.set;
+    const double sunrise = sun_rise.rise;
+
+    const string fDatabase = conf.Get<string>("source-database");
+
+    // ------------- Get Sources from databasse ---------------------
+
+    const mysqlpp::StoreQueryResult res =
+        Database(fDatabase).query("SELECT fSourceName, fRightAscension, fDeclination FROM Source WHERE fSourceTypeKEY=1").store();
+
+    // ------------- Create canvases and frames ---------------------
+
+    // It is important to use an offset which is larger than
+    // 1970-01-01 00:00:00. This one will not work if your
+    // local time zone is positive!
+    TH1S hframe("", "", 1, Time(sunset).Mjd()*24*3600, Time(sunrise).Mjd()*24*3600);
+    hframe.SetStats(kFALSE);
+    hframe.GetXaxis()->SetTimeFormat("%Hh%M%F1995-01-01 00:00:00 GMT");
+    hframe.GetXaxis()->SetTitle((Time(jd).GetAsStr("%d/%m/%Y")+"  -  "+Time(jd+1).GetAsStr("%d/%m/%Y")+"  [UTC]").c_str());
+    hframe.GetXaxis()->CenterTitle();
+    hframe.GetYaxis()->CenterTitle();
+    hframe.GetXaxis()->SetTimeDisplay(true);
+    hframe.GetYaxis()->SetTitleSize(0.040);
+    hframe.GetXaxis()->SetTitleSize(0.040);
+    hframe.GetXaxis()->SetTitleOffset(1.1);
+    hframe.GetYaxis()->SetLabelSize(0.040);
+    hframe.GetXaxis()->SetLabelSize(0.040);
+
+    TCanvas c1;
+    c1.SetFillColor(kWhite);
+    c1.SetBorderMode(0);
+    c1.SetFrameBorderMode(0);
+    c1.SetLeftMargin(0.085);
+    c1.SetRightMargin(0.01);
+    c1.SetTopMargin(0.03);
+    c1.SetGrid();
+    hframe.GetYaxis()->SetTitle("Altitude [deg]");
+    hframe.SetMinimum(15);
+    hframe.SetMaximum(90);
+    hframe.DrawCopy();
+
+    TCanvas c2;
+    c2.SetFillColor(kWhite);
+    c2.SetBorderMode(0);
+    c2.SetFrameBorderMode(0);
+    c2.SetLeftMargin(0.085);
+    c2.SetRightMargin(0.01);
+    c2.SetTopMargin(0.03);
+    c2.SetGrid();
+    hframe.GetYaxis()->SetTitle("Predicted Current [#muA]");
+    hframe.SetMinimum(0);
+    hframe.SetMaximum(100);
+    hframe.DrawCopy();
+
+    TCanvas c3;
+    c3.SetFillColor(kWhite);
+    c3.SetBorderMode(0);
+    c3.SetFrameBorderMode(0);
+    c3.SetLeftMargin(0.085);
+    c3.SetRightMargin(0.01);
+    c3.SetTopMargin(0.03);
+    c3.SetGrid();
+    c3.SetLogy();
+    hframe.GetYaxis()->SetTitle("Estimated relative threshold");
+    hframe.GetYaxis()->SetMoreLogLabels();
+    hframe.SetMinimum(0.9);
+    hframe.SetMaximum(11);
+    hframe.DrawCopy();
+
+    TCanvas c4;
+    c4.SetFillColor(kWhite);
+    c4.SetBorderMode(0);
+    c4.SetFrameBorderMode(0);
+    c4.SetLeftMargin(0.085);
+    c4.SetRightMargin(0.01);
+    c4.SetTopMargin(0.03);
+    c4.SetGrid();
+    hframe.GetYaxis()->SetTitle("Distance to moon [deg]");
+    hframe.SetMinimum(0);
+    hframe.SetMaximum(180);
+    hframe.DrawCopy();
+
+    Int_t color[] = { kBlack, kRed, kBlue, kGreen, kCyan, kMagenta };
+    Int_t style[] = { kSolid, kDashed, kDotted };
+
+    TLegend leg(0, 0, 1, 1);
+
+    // ------------- Loop over sources ---------------------
+
+    Int_t cnt=0;
+    for (vector<mysqlpp::Row>::const_iterator v=res.begin(); v<res.end(); v++, cnt++)
+    {
+        // Eval row
+        const string name = (*v)[0].c_str();
+
+        EquPosn pos;
+        pos.ra  = double((*v)[1])*15;
+        pos.dec = double((*v)[2]);
+
+        // Create graphs
+        TGraph g1, g2, g3, g4, gr, gm;
+        g1.SetName(name.data());
+        g2.SetName(name.data());
+        g3.SetName(name.data());
+        g4.SetName(name.data());
+        g1.SetLineWidth(2);
+        g2.SetLineWidth(2);
+        g3.SetLineWidth(2);
+        g4.SetLineWidth(2);
+        gm.SetLineWidth(1);
+        g1.SetLineStyle(style[cnt/6]);
+        g2.SetLineStyle(style[cnt/6]);
+        g3.SetLineStyle(style[cnt/6]);
+        g4.SetLineStyle(style[cnt/6]);
+        g1.SetLineColor(color[cnt%6]);
+        g2.SetLineColor(color[cnt%6]);
+        g3.SetLineColor(color[cnt%6]);
+        g4.SetLineColor(color[cnt%6]);
+        gm.SetLineColor(kYellow);
+
+        if (cnt==0)
+            leg.AddEntry(gm.Clone(), "Moon", "l");
+        leg.AddEntry(g1.Clone(), name.data(), "l");
+
+        // Loop over 24 hours
+        for (double h=0; h<1; h+=1./(24*12))
+        {
+            const SolarObjects so(jd+h);
+
+            // get local position of source
+            const HrzPosn hrz = GetHrzFromEqu(pos, so.fJD);
+
+            if (v==res.begin())
+                cout << Time(so.fJD) <<" " << 90-so.fMoonHrz.alt <<  endl;
+
+            const double cur = FACT::PredictI(so, pos);
+
+            // Relative  energy threshold prediction
+            const double ratio = pow(cos((90-hrz.alt)*M_PI/180), -2.664);
+
+            // Add points to curve
+            const double axis = Time(so.fJD).Mjd()*24*3600;
+
+            // If there is a gap of more than one bin, start a new curve
+            CheckForGap(c1, g1, axis);
+            CheckForGap(c1, gm, axis);
+            CheckForGap(c2, g2, axis);
+            CheckForGap(c3, g3, axis);
+            CheckForGap(c4, g4, axis);
+
+            // Add data
+            if (no_limits || cur<max_current)
+                g1.SetPoint(g1.GetN(), axis, hrz.alt);
+
+            if (no_limits || 90-hrz.alt<max_zd)
+                g2.SetPoint(g2.GetN(), axis, cur);
+
+            if (no_limits || (cur<max_current && 90-hrz.alt<max_zd))
+                g3.SetPoint(g3.GetN(), axis, ratio*pow(cur/6.2, 0.394));
+
+            if (no_limits || (cur<max_current && 90-hrz.alt<max_zd))
+            {
+                const double angle = GetAngularSeparation(so.fMoonEqu, pos);
+                g4.SetPoint(g4.GetN(), axis, angle);
+            }
+
+            if (cnt==0)
+                gm.SetPoint(gm.GetN(), axis, so.fMoonHrz.alt);
+        }
+
+        if (cnt==0)
+            DrawClone(c1, gm);
+
+        DrawClone(c1, g1);
+        DrawClone(c2, g2);
+        DrawClone(c3, g3);
+        DrawClone(c4, g4);
+    }
+
+
+    // Save three plots
+    TCanvas c5;
+    c5.SetFillColor(kWhite);
+    c5.SetBorderMode(0);
+    c5.SetFrameBorderMode(0);
+    leg.Draw();
+
+    const string t = Time(jd).GetAsStr("%Y%m%d");
+
+    c1.SaveAs((t+"-ZenithDistance.eps").c_str());
+    c2.SaveAs((t+"-PredictedCurrent.eps").c_str());
+    c3.SaveAs((t+"-RelativeThreshold.eps").c_str());
+    c4.SaveAs((t+"-MoonDist.eps").c_str());
+    c5.SaveAs((t+"-Legend.eps").c_str());
+
+    c1.SaveAs((t+"-ZenithDistance.root").c_str());
+    c2.SaveAs((t+"-PredictedCurrent.root").c_str());
+    c3.SaveAs((t+"-RelativeThreshold.root").c_str());
+    c4.SaveAs((t+"-MoonDist.root").c_str());
+
+    c1.Print((t+".pdf(").c_str(), "pdf");
+    c2.Print((t+".pdf" ).c_str(), "pdf");
+    c3.Print((t+".pdf" ).c_str(), "pdf");
+    c4.Print((t+".pdf" ).c_str(), "pdf");
+    c5.Print((t+".pdf)").c_str(), "pdf");
+
+    return 0;
+}
Index: branches/testFACT++branch/src/mcp.cc
===================================================================
--- branches/testFACT++branch/src/mcp.cc	(revision 18277)
+++ branches/testFACT++branch/src/mcp.cc	(revision 18277)
@@ -0,0 +1,706 @@
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "Connection.h"
+#include "Configuration.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "LocalControl.h"
+
+#include "HeadersFTM.h"
+#include "HeadersFAD.h"
+#include "HeadersMCP.h"
+#include "HeadersRateControl.h"
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+#include "DimState.h"
+
+// ------------------------------------------------------------------------
+
+class StateMachineMCP : public StateMachineDim
+{
+private:
+    vector<bool> fFadConnected;
+    vector<bool> fFadNeedsReset;
+
+    vector<bool> fFadCratesForReset;
+    vector<bool> fFadBoardsForConnection;
+
+    uint16_t fNumConnectedFtu;
+    uint16_t fNumConnectedFad;
+
+    uint16_t fNumReset;
+
+    DimVersion fDim;
+    DimDescribedState fDimFTM;
+    DimDescribedState fDimFAD;
+    DimDescribedState fDimLog;
+    DimDescribedState fDimRC;
+
+    DimDescribedService fService;
+
+    Time fFadTimeout;
+
+    int HandleFadConnections(const EventImp &d)
+    {
+        if (d.GetSize()!=41)
+            return GetCurrentState();
+
+        const uint8_t *ptr = d.Ptr<uint8_t>();
+
+        fNumConnectedFad = 0;
+        fFadConnected.assign(40, false);
+
+        vector<bool> reset(4);
+
+        for (int i=0; i<40; i++)
+        {
+            const uint8_t stat1 = ptr[i]&3;
+            const uint8_t stat2 = ptr[i]>>3;
+
+            // disconnected: ignore
+            if (stat1==0 && stat2==0)
+                continue;
+
+            fFadConnected[i] = true;
+
+            if (stat1>=2 && stat2==8)
+                fNumConnectedFad++;
+
+            // Does not need reset
+            if (stat1>2 && stat2==8)
+                continue;
+
+            // Not configured (stat1==2?kLedGreen:kLedGreenCheck)
+            // Connection problem (stat1==1&&stat2==1?kLedRed:kLedOrange)
+            reset[i/10] = true;
+        }
+        return GetCurrentState();
+    }
+
+    int HandleFtmStaticData(const EventImp &d)
+    {
+        if (d.GetSize()!=sizeof(FTM::DimStaticData))
+            return GetCurrentState();
+
+        const FTM::DimStaticData &sdata = d.Ref<FTM::DimStaticData>();
+
+        fNumConnectedFtu = 0;
+        for (int i=0; i<40; i++)
+        {
+            if (sdata.IsActive(i))
+                fNumConnectedFtu++;
+        }
+        return GetCurrentState();
+    }
+
+    int Print() const
+    {
+        Out() << fDim    << endl;
+        Out() << fDimFTM << endl;
+        Out() << fDimFAD << endl;
+        Out() << fDimLog << endl;
+        Out() << fDimRC  << endl;
+
+        return GetCurrentState();
+    }
+
+    int GetReady()
+    {
+        return GetCurrentState();
+    }
+
+    int StopRun()
+    {
+	if (fDimFTM.state()==FTM::State::kTriggerOn)
+	{
+            Message("Stopping FTM");
+	    Dim::SendCommandNB("FTM_CONTROL/STOP_TRIGGER");
+	}
+
+        // FIXME: Do step 2 only when FTM is stopped
+        if (fDimFAD.state()==FAD::State::kConnected || fDimFAD.state()==FAD::State::kRunInProgress)
+        {
+            //Dim::SendCommand("FAD_CONTROL/ENABLE_TRIGGER_LINE",      bool(false));
+	    Message("Stopping FAD");
+            Dim::SendCommandNB("FAD_CONTROL/ENABLE_CONTINOUS_TRIGGER", bool(false));
+            if (fDimFAD.state()==FAD::State::kRunInProgress)
+                Dim::SendCommandNB("FAD_CONTROL/CLOSE_OPEN_FILES");
+        }
+
+        return GetCurrentState();
+    }
+
+    int Reset()
+    {
+        if (GetCurrentState()<MCP::State::kConfiguring1 ||
+            GetCurrentState()>MCP::State::kConfigured)
+            return GetCurrentState();
+
+        fRunType = "";
+	Message("Reseting configuration states of FAD and FTM");
+
+        Dim::SendCommandNB("FTM_CONTROL/RESET_CONFIGURE");
+	Dim::SendCommandNB("FAD_CONTROL/RESET_CONFIGURE");
+	Dim::SendCommandNB("RATE_CONTROL/STOP");
+
+        Update(MCP::State::kIdle);
+        return MCP::State::kIdle;
+        /*
+        // FIMXE: Handle error states!
+        if (fDimLog.state()>=20)//kSM_NightlyOpen
+            Dim::SendCommand("DATA_LOGGER/STOP");
+
+        if (fDimLog.state()==0)
+            Dim::SendCommand("DATA_LOGGER/WAIT_FOR_RUN_NUMBER");
+
+        if (fDimFAD.state()==FAD::State::kConnected)
+        {
+            Dim::SendCommand("FAD_CONTROL/ENABLE_TRIGGER_LINE", bool(false));
+            Dim::SendCommand("FAD_CONTROL/ENABLE_CONTINOUS_TRIGGER", bool(false));
+        }
+
+        if (fDimFTM.state()==FTM::State::kTakingData)
+            Dim::SendCommand("FTM_CONTROL/STOP");
+
+        return GetCurrentState(); */
+    }
+
+    int64_t fMaxTime;
+    int64_t fNumEvents;
+    string  fRunType;
+
+    int StartRun(const EventImp &evt)
+    {
+        if (!fDimFTM.online())
+        {
+            Error("No connection to ftmcontrol (see PRINT).");
+            return GetCurrentState();
+        }
+        if (!fDimFAD.online())
+        {
+            Warn("No connection to fadcontrol (see PRINT).");
+            return GetCurrentState();
+        }
+        if (!fDimLog.online())
+        {
+            Warn("No connection to datalogger (see PRINT).");
+            return GetCurrentState();
+        }
+        if (!fDimRC.online())
+        {
+            Warn("No connection to ratecontrol (see PRINT).");
+            return GetCurrentState();
+        }
+
+        fMaxTime   = evt.Get<int64_t>();
+        fNumEvents = evt.Get<int64_t>(8);
+        fRunType   = evt.Ptr<char>(16);
+
+        fNumReset  = 0;
+
+        ostringstream str;
+        str << "Starting configuration '" << fRunType << "' for new run";
+        if (fNumEvents>0 || fMaxTime>0)
+            str << " [";
+        if (fNumEvents>0)
+            str << fNumEvents << " events";
+        if (fNumEvents>0 && fMaxTime>0)
+            str << " / ";
+        if (fMaxTime>0)
+            str << fMaxTime << "s";
+        if (fNumEvents>0 || fMaxTime>0)
+            str << "]";
+        Message(str);
+
+        // Strictly speaking, it is not necessary, but
+        // stopping the ratecontrol before we configure
+        // the FTM ensures that no threshold setting commands
+        // interfere with the configuration of the FTM.
+        if (fDimRC.state()!=RateControl::State::kConnected)
+        {
+            Dim::SendCommandNB("RATE_CONTROL/STOP");
+            Message("Stopping ratecontrol");
+        }
+
+        if (fDimLog.state()<30/*kSM_WaitForRun*/)
+        {
+            Dim::SendCommandNB("DATA_LOGGER/START_RUN_LOGGING");
+            Message("Starting datalogger");
+        }
+
+        Update(MCP::State::kConfiguring1);
+        return MCP::State::kConfiguring1;
+    }
+
+    struct Value
+    {
+        uint64_t time;
+        uint64_t nevts;
+        char type[];
+    };
+
+    Value *GetBuffer()
+    {
+        const size_t len = sizeof(Value)+fRunType.length()+1;
+
+        char *buf = new char[len];
+
+        Value *val = reinterpret_cast<Value*>(buf);
+
+        val->time  = fMaxTime;
+        val->nevts = fNumEvents;
+
+        strcpy(val->type, fRunType.c_str());
+
+        return val;
+    }
+
+    void Update(int newstate)
+    {
+        Value *buf = GetBuffer();
+        fService.setQuality(newstate);
+        fService.setData(buf, sizeof(Value)+fRunType.length()+1);
+        fService.Update();
+        delete buf;
+    }
+
+    void ConfigureFAD()
+    {
+        Value *buf = GetBuffer();
+
+        Dim::SendCommandNB("FAD_CONTROL/CONFIGURE", buf, sizeof(Value)+fRunType.length()+1);
+	Message("Configuring FAD");
+
+        delete buf;
+    }
+
+    int HandleStateChange()
+    {
+        if (!fDim.online())
+            return MCP::State::kDimNetworkNA;
+
+        if (fDimFTM.state() >= FTM::State::kConnected &&
+            fDimFAD.state() >= FAD::State::kConnected &&
+            fDimLog.state() >= kSM_Ready)
+            return GetCurrentState()<=MCP::State::kIdle ? MCP::State::kIdle : GetCurrentState();
+
+        if (fDimFTM.state() >-2 &&
+            fDimFAD.state() >-2 &&
+            fDimLog.state() >-2 &&
+            fDimRC.state()  >-2)
+            return MCP::State::kConnected;
+
+        if (fDimFTM.state() >-2 ||
+            fDimFAD.state() >-2 ||
+            fDimLog.state() >-2 ||
+            fDimRC.state()  >-2)
+            return MCP::State::kConnecting;
+
+        return MCP::State::kDisconnected;
+    }
+
+    int Execute()
+    {
+        // ========================================================
+
+        if (GetCurrentState()==MCP::State::kConfiguring1)
+        {
+            if (fDimRC.state()!=RateControl::State::kConnected)
+                return MCP::State::kConfiguring1;
+
+            Dim::SendCommandNB("FTM_CONTROL/CONFIGURE", fRunType);
+            Message("Configuring Trigger (FTM)");
+
+            Update(MCP::State::kConfiguring2);
+            return MCP::State::kConfiguring2;
+        }
+
+        // --------------------------------------------------------
+
+        if (GetCurrentState()==MCP::State::kConfiguring2)
+        {
+            if (fDimFTM.state() != FTM::State::kConfigured1 ||
+                fDimLog.state()<30 || fDimLog.state()>0xff ||
+                fDimRC.state()!=RateControl::State::kConnected)
+                return MCP::State::kConfiguring2;
+
+            // For calibration, ratecontrol will globally set all threshold
+            // to make sure that does not interfer with the configuration,
+            // it is only done when the ftm reports Configured
+            Dim::SendCommandNB("RATE_CONTROL/CALIBRATE_RUN", fRunType);
+            Message("Starting Rate Control");
+
+            ConfigureFAD();
+
+            fFadTimeout = Time();
+
+            Update(MCP::State::kConfiguring3);
+            return MCP::State::kConfiguring3;
+        }
+
+        // --------------------------------------------------------
+
+        if (GetCurrentState()==MCP::State::kConfiguring3)
+        {
+            /*
+            // If everything is configured but the FADs
+            // we run into a timeout and some FAD need to be reset
+            // then we start an automatic crate reset
+            if (fDimFTM.state() == FTM::State::kConfigured &&
+                fDimFAD.state() != FAD::State::kConfigured &&
+                //fDimRC.state()  >  RateControl::State::kSettingGlobalThreshold &&
+                fFadTimeout+boost::posix_time::seconds(15)<Time() &&
+                count(fFadNeedsReset.begin(), fFadNeedsReset.end(), true)>0)
+            {
+                Update(MCP::State::kCrateReset0);
+                return MCP::State::kCrateReset0;
+            }
+            */
+            // If something is not yet properly configured: keep state
+            if (fDimFTM.state() != FTM::State::kConfigured1 ||
+                fDimFAD.state() != FAD::State::kConfigured ||
+                fDimRC.state()  <= RateControl::State::kSettingGlobalThreshold)
+                return MCP::State::kConfiguring3;
+
+            // Note that before the trigger is started, the ratecontrol
+            // must not be InProgress. In rare cases there is interference.
+            Dim::SendCommandNB("FTM_CONTROL/START_TRIGGER");
+            Message("Starting Trigger (FTM)");
+
+            Update(MCP::State::kConfigured);
+            return MCP::State::kConfigured;
+        }
+
+        // --------------------------------------------------------
+
+        if (GetCurrentState()==MCP::State::kConfigured)
+        {
+            if (fDimFTM.state() != FTM::State::kTriggerOn)
+                return MCP::State::kConfigured;
+
+            Update(MCP::State::kTriggerOn);
+            return MCP::State::kTriggerOn;
+        }
+
+        // --------------------------------------------------------
+
+        if (GetCurrentState()==MCP::State::kTriggerOn)
+        {
+            if (fDimFTM.state() != FTM::State::kTriggerOn)
+            {
+                Update(MCP::State::kIdle);
+                return MCP::State::kIdle;
+            }
+
+            if (fDimFAD.state() != FAD::State::kRunInProgress)
+                return MCP::State::kTriggerOn;
+
+            Update(MCP::State::kTakingData);
+            return MCP::State::kTakingData;
+        }
+
+        // --------------------------------------------------------
+
+        if (GetCurrentState()==MCP::State::kTakingData)
+        {
+            if (/*fDimFTM.state()==FTM::State::kTriggerOn &&*/
+                fDimFAD.state()==FAD::State::kRunInProgress)
+                return MCP::State::kTakingData;
+
+            Update(MCP::State::kIdle);
+            return MCP::State::kIdle;
+        }
+
+        // ========================================================
+        /*
+        if (GetCurrentState()==MCP::State::kCrateReset0)
+        {
+            static const struct Data { int32_t id; char on; } __attribute__((__packed__)) d = { -1, 0 };
+
+            Dim::SendCommandNB("FTM_CONTROL/ENABLE_FTU", &d, sizeof(Data));
+
+            fFadCratesForReset      = fFadNeedsReset;
+            fFadBoardsForConnection = fFadConnected;
+
+            for (int c=0; c<4; c++)
+                if (fFadNeedsReset[c])
+                    for (int b=0; b<10; b++)
+                        Dim::SendCommandNB("FAD_CONTROL/DISCONNECT", uint16_t(c*10+b));
+
+            fNumReset++;
+
+            Update(MCP::State::kCrateReset1);
+            return MCP::State::kCrateReset1;
+        }
+
+        // --------------------------------------------------------
+
+        if (GetCurrentState()==MCP::State::kCrateReset1)
+        {
+            if (fNumConnectedFtu>0 || count(fFadNeedsReset.begin(), fFadNeedsReset.end(), true)>0)
+                return MCP::State::kCrateReset1;
+
+            for (int i=0; i<4; i++)
+                if (fFadCratesForReset[i])
+                    Dim::SendCommandNB("FAD_CONTROL/RESET_CRATE", uint16_t(i));
+
+            fFadTimeout = Time();
+
+            Update(MCP::State::kCrateReset2);
+            return MCP::State::kCrateReset2;
+        }
+
+        // --------------------------------------------------------
+
+        if (GetCurrentState()==MCP::State::kCrateReset2)
+        {
+            if (fFadTimeout+boost::posix_time::seconds(45)>Time())
+                return MCP::State::kCrateReset2;
+
+            static const struct Data { int32_t id; char on; } __attribute__((__packed__)) d = { -1, 1 };
+
+            Dim::SendCommandNB("FTM_CONTROL/ENABLE_FTU", &d, sizeof(Data));
+
+            for (int c=0; c<4; c++)
+                if (fFadCratesForReset[c])
+                    for (int b=0; b<10; b++)
+                        if (fFadBoardsForConnection[c*10+b])
+                            Dim::SendCommandNB("FAD_CONTROL/CONNECT", uint16_t(c*10+b));
+
+            Update(MCP::State::kCrateReset3);
+            return MCP::State::kCrateReset3;
+        }
+
+        // --------------------------------------------------------
+
+        if (GetCurrentState()==MCP::State::kCrateReset3)
+        {
+            if (fNumConnectedFtu<40 || fFadBoardsForConnection!=fFadConnected)
+                return MCP::State::kCrateReset3;
+
+            if (count(fFadNeedsReset.begin(), fFadNeedsReset.end(), true)>0 && fNumReset<6)
+            {
+                Update(MCP::State::kCrateReset0);
+                return MCP::State::kCrateReset0;
+            }
+
+            // restart configuration
+            Update(MCP::State::kConfiguring1);
+            return MCP::State::kConfiguring1;
+        }
+        */
+        // ========================================================
+
+        return GetCurrentState();
+    }
+
+public:
+    StateMachineMCP(ostream &out=cout) : StateMachineDim(out, "MCP"),
+        fFadNeedsReset(4), fNumConnectedFtu(40),
+        fDimFTM("FTM_CONTROL"),
+        fDimFAD("FAD_CONTROL"),
+        fDimLog("DATA_LOGGER"),
+        fDimRC("RATE_CONTROL"),
+        fService("MCP/CONFIGURATION", "X:1;X:1;C", "Run configuration information"
+                 "|MaxTime[s]:Maximum time before the run gets stopped"
+                 "|MaxEvents[num]:Maximum number of events before the run gets stopped"
+                 "|Name[text]:Name of the chosen configuration")
+    {
+        // ba::io_service::work is a kind of keep_alive for the loop.
+        // It prevents the io_service to go to stopped state, which
+        // would prevent any consecutive calls to run()
+        // or poll() to do nothing. reset() could also revoke to the
+        // previous state but this might introduce some overhead of
+        // deletion and creation of threads and more.
+
+        fDim.Subscribe(*this);
+        fDimFTM.Subscribe(*this);
+        fDimFAD.Subscribe(*this);
+        fDimLog.Subscribe(*this);
+        fDimRC.Subscribe(*this);
+
+        fDim.SetCallback(bind(&StateMachineMCP::HandleStateChange, this));
+        fDimFTM.SetCallback(bind(&StateMachineMCP::HandleStateChange, this));
+        fDimFAD.SetCallback(bind(&StateMachineMCP::HandleStateChange, this));
+        fDimLog.SetCallback(bind(&StateMachineMCP::HandleStateChange, this));
+        fDimRC.SetCallback(bind(&StateMachineMCP::HandleStateChange, this));
+
+        Subscribe("FAD_CONTROL/CONNECTIONS")
+            (bind(&StateMachineMCP::HandleFadConnections, this, placeholders::_1));
+        Subscribe("FTM_CONTROL/STATIC_DATA")
+            (bind(&StateMachineMCP::HandleFtmStaticData, this, placeholders::_1));
+
+        // State names
+        AddStateName(MCP::State::kDimNetworkNA, "DimNetworkNotAvailable",
+                     "DIM dns server not available.");
+        AddStateName(MCP::State::kDisconnected, "Disconnected",
+                     "Neither ftmctrl, fadctrl, datalogger nor rate control online.");
+        AddStateName(MCP::State::kConnecting, "Connecting",
+                     "Either ftmctrl, fadctrl, datalogger or rate control not online.");
+        AddStateName(MCP::State::kConnected, "Connected",
+                     "All needed subsystems online.");
+        AddStateName(MCP::State::kIdle, "Idle",
+                     "Waiting for next configuration command");
+        AddStateName(MCP::State::kConfiguring1, "Configuring1",
+                     "Starting configuration procedure, checking datalogger/ratecontrol state");
+        AddStateName(MCP::State::kConfiguring2, "Configuring2",
+                     "Starting ratecontrol, waiting for FTM to get configured and Datalogger to get ready");
+        AddStateName(MCP::State::kConfiguring3, "Configuring3",
+                     "Waiting for FADs and ratecontrol to get ready");
+        /*
+        AddStateName(MCP::State::kCrateReset0, "CrateReset0",
+                     "Disabling FTUs, disconnecting FADs");
+        AddStateName(MCP::State::kCrateReset1, "CrateReset1",
+                     "Waiting for FTUs to be disabled and for FADs to be disconnected");
+        AddStateName(MCP::State::kCrateReset2, "CrateReset2",
+                     "Waiting 45s");
+        AddStateName(MCP::State::kCrateReset3, "CrateReset3",
+                     "Waiting for FTUs to be enabled and for FADs to be re-connected");
+        */
+        AddStateName(MCP::State::kConfigured, "Configured",
+                     "Everything is configured, trigger will be switched on now");
+        AddStateName(MCP::State::kTriggerOn, "TriggerOn",
+                     "The trigger is switched on, waiting for FAD to receive data");
+        AddStateName(MCP::State::kTakingData, "TakingData",
+                     "The trigger is switched on, FADs are sending data");
+
+
+        AddEvent("START", "X:2;C")//, MCP::State::kIdle)
+            (bind(&StateMachineMCP::StartRun, this, placeholders::_1))
+            ("Start the configuration and data taking for a run-type of a pre-defined setup"
+             "|TimeMax[s]:Maximum number of seconds before the run will be closed automatically"
+             "|NumMax[count]:Maximum number events before the run will be closed automatically"
+             "|Name[text]:Name of the configuration to be used for taking data");
+
+        AddEvent("STOP")
+            (bind(&StateMachineMCP::StopRun, this))
+            ("Stops the trigger (either disables the FTM trigger or the internal DRS trigger)");
+
+        AddEvent("RESET")
+            (bind(&StateMachineMCP::Reset, this))
+            ("If a configuration blockes because a system cannot configure itself properly, "
+             "this command can be called to leave the configuration procedure. The command "
+             "is also propagated to FTM and FAD");
+
+        AddEvent("PRINT")
+            (bind(&StateMachineMCP::Print, this))
+            ("Print the states and connection status of all systems connected to the MCP.");
+    }
+
+    int EvalOptions(Configuration &)
+    {
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineMCP>(conf);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The ftmctrl controls the FSC (FACT Slow Control) board.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: fscctrl [-c type] [OPTIONS]\n"
+        "  or:  fscctrl [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineMCP>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+//            if (conf.Get<bool>("no-dim"))
+//                return RunShell<LocalStream, StateMachine, ConnectionFSC>(conf);
+//            else
+                return RunShell<LocalStream>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+/*        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionFSC>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionFSC>(conf);
+        }
+        else
+*/        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell>(conf);
+            else
+                return RunShell<LocalConsole>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/testFACT++branch/src/moon.cc
===================================================================
--- branches/testFACT++branch/src/moon.cc	(revision 18277)
+++ branches/testFACT++branch/src/moon.cc	(revision 18277)
@@ -0,0 +1,207 @@
+#include <libnova/solar.h>
+#include <libnova/lunar.h>
+#include <libnova/rise_set.h>
+#include <libnova/transform.h>
+
+#include "Time.h"
+#include "Configuration.h"
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+class Moon
+{
+public:
+    Time time;
+
+    double ra;
+    double dec;
+
+    double zd;
+    double az;
+
+    double disk;
+
+    bool visible;
+
+    Time fRise;
+    Time fTransit;
+    Time fSet;
+
+    int state;
+
+    Moon() : time(Time::none)
+    {
+    }
+
+    // Could be done more efficient: Only recalcuate if
+    // the current time exceeds at least on of the stored times
+    Moon(double lon, double lat, const Time &t=Time()) : time(t)
+    {
+        const double JD = time.JD();
+
+        ln_lnlat_posn observer;
+        observer.lng = lon;
+        observer.lat = lat;
+
+        ln_rst_time moon;
+        ln_get_lunar_rst(JD-0.5, &observer, &moon);
+
+        fRise    = Time(moon.rise);
+        fTransit = Time(moon.transit);
+        fSet     = Time(moon.set);
+
+        //visible =
+        //    ((JD>moon.rise && JD<moon.set ) && moon.rise<moon.set) ||
+        //    ((JD<moon.set  || JD>moon.rise) && moon.rise>moon.set);
+
+        const bool is_up      = JD>moon.rise;
+        const bool is_sinking = JD>moon.transit;
+        const bool is_dn      = JD>moon.set;
+
+        ln_get_lunar_rst(JD+0.5, &observer, &moon);
+        if (is_up)
+            fRise = Time(moon.rise);
+        if (is_sinking)
+            fTransit = Time(moon.transit);
+        if (is_dn)
+            fSet = Time(moon.set);
+
+        ln_equ_posn pos;
+        ln_get_lunar_equ_coords(JD, &pos);
+
+        ln_hrz_posn hrz;
+        ln_get_hrz_from_equ (&pos, &observer, JD, &hrz);
+        az =    hrz.az;
+        zd = 90-hrz.alt;
+
+        ra  = pos.ra/15;
+        dec = pos.dec;
+
+        disk = ln_get_lunar_disk(JD)*100;
+        state = 0;
+        if (fRise   <fTransit && fRise   <fSet)     state = 0;  // not visible
+        if (fTransit<fSet     && fTransit<fRise)    state = 1;  // before culm
+        if (fSet    <fRise    && fSet    <fTransit) state = 2;  // after culm
+
+        visible = state!=0;
+
+        // 0: not visible
+        // 1: visible before cul
+        // 2: visible after cul
+    }
+
+    double Angle(double r, double d) const
+    {
+        const double theta0 = M_PI/2-d*M_PI/180;
+        const double phi0   = r*M_PI/12;
+
+        const double theta1 = M_PI/2-dec*M_PI/180;
+        const double phi1   = ra*M_PI/12;
+
+        const double x0 = sin(theta0) * cos(phi0);
+        const double y0 = sin(theta0) * sin(phi0);
+        const double z0 = cos(theta0);
+
+        const double x1 = sin(theta1) * cos(phi1);
+        const double y1 = sin(theta1) * sin(phi1);
+        const double z1 = cos(theta1);
+
+        double arg = x0*x1 + y0*y1 + z0*z1;
+        if(arg >  1.0) arg =  1.0;
+        if(arg < -1.0) arg = -1.0;
+
+        return acos(arg) * 180/M_PI;
+    }
+};
+
+// ========================================================================
+// ========================================================================
+// ========================================================================
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Smart FACT");
+    control.add_options()
+        ("ra",        var<double>(), "Source right ascension")
+        ("dec",       var<double>(), "Source declination")
+        ("date-time", var<string>()
+#if BOOST_VERSION >= 104200
+         ->required()
+#endif
+                                   , "SQL time (UTC)")
+        ;
+
+    po::positional_options_description p;
+    p.add("date-time", 1); // The first positional options
+
+    conf.AddOptions(control);
+    conf.SetArgumentPositions(p);
+}
+
+void PrintUsage()
+{
+    cout <<
+        "moon - The moon calculator\n"
+        "\n"
+        "Usage: moon sql-datetime [--ra={ra} --dec={dec}]\n";
+    cout << endl;
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv))
+        return 127;
+
+    if (conf.Has("ra")^conf.Has("dec"))
+    {
+        cout << "ERROR - Either --ra or --dec missing." << endl;
+        return 1;
+    }
+
+    Time time;
+    time.SetFromStr(conf.Get<string>("date-time"));
+
+    ln_lnlat_posn observer;
+    observer.lng = -(17.+53./60+26.525/3600);
+    observer.lat =   28.+45./60+42.462/3600; 
+
+    Moon moon(observer.lng, observer.lat, time);
+
+    cout << setprecision(15);
+    cout << time.GetAsStr() << '\n';
+
+    ln_equ_posn pos;
+    ln_hrz_posn hrz;
+    ln_get_solar_equ_coords(time.JD(), &pos);
+    ln_get_hrz_from_equ(&pos, &observer, time.JD(), &hrz);
+    cout << 90-hrz.alt   << '\n';
+
+    cout << moon.visible << '\n';
+    cout << moon.disk    << '\n';
+    cout << moon.zd      << '\n';
+
+    if (conf.Has("ra") && conf.Has("dec"))
+    {
+        pos.ra  = conf.Get<double>("ra")*15;
+        pos.dec = conf.Get<double>("dec");
+
+        cout << moon.Angle(pos.ra/15, pos.dec) << '\n';
+
+        // Trick 17
+        moon.ra  = pos.ra;
+        moon.dec = pos.dec;
+
+        // Sun distance
+        cout << moon.Angle(pos.ra/15, pos.dec) << '\n';
+    }
+
+    cout << endl;
+
+    return 0;
+}
Index: branches/testFACT++branch/src/pfminictrl.cc
===================================================================
--- branches/testFACT++branch/src/pfminictrl.cc	(revision 18277)
+++ branches/testFACT++branch/src/pfminictrl.cc	(revision 18277)
@@ -0,0 +1,430 @@
+#include "FACT.h"
+#include "Dim.h"
+#include "Event.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "HeadersPFmini.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+
+class ConnectionPFmini : public Connection
+{
+protected:
+    virtual void Update(const PFmini::Data &)
+    {
+    }
+
+private:
+    bool fIsVerbose;
+    uint16_t fInterval;
+
+    bool fReceived;
+
+    int fState;
+
+    vector<int16_t> fBuffer;
+
+    void HandleReceivedData(const bs::error_code& err, size_t bytes_received, int /*type*/)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || (err && err!=ba::error::eof))
+        {
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(false);
+            return;
+        }
+
+        const uint16_t chk0 = Tools::Fletcher16(fBuffer.data(), 2);
+        const uint16_t chk1 = uint16_t(fBuffer[2]);
+
+        if (chk0!=chk1)
+        {
+            ostringstream out;
+            out << "Checksum error (";
+            out << hex << setfill('0');
+            out << setw(4) << fBuffer[0] << ":";
+            out << setw(4) << fBuffer[1] << "|";
+            out << setw(4) << fBuffer[2] << "!=";
+            out << setw(4) << chk1 << ")";
+
+            Error(out);
+
+            PostClose(false);
+
+            return;
+        }
+
+        PFmini::Data data;
+        data.hum  = 110*fBuffer[0]/1024.;
+        data.temp = 110*fBuffer[1]/1024.-20;
+
+        Update(data);
+
+        ostringstream msg;
+        msg << fixed << setprecision(1) << "H=" << data.hum << "% T=" << data.temp << "°C"   ;
+        Message(msg);
+
+        fState = PFmini::State::kReceiving;
+        fReceived = true;
+    }
+
+    boost::asio::deadline_timer fKeepAlive;
+
+    void HandleRequest(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "Timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fKeepAlive.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        // Re-open connection
+        PostClose(true);
+    }
+
+    void HandleReadTimeout(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "Read timeout of " << URL() << " timed out: " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!fReceived)
+            PostClose(false);
+    }
+
+    void Request()
+    {
+        fReceived = false;
+
+        string cmd =  "GET / HTTP/1.1\r\n\r\n";
+        PostMessage(cmd);
+
+        fBuffer.resize(6);
+        AsyncRead(ba::buffer(fBuffer));
+        AsyncWait(fInTimeout, 3000, &Connection::HandleReadTimeout);
+
+        fKeepAlive.expires_from_now(boost::posix_time::seconds(fInterval));
+        fKeepAlive.async_wait(boost::bind(&ConnectionPFmini::HandleRequest,
+                                          this, dummy::error));
+    }
+
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        // Keep state kReceiving
+        if (fState<PFmini::State::kConnected)
+            fState = PFmini::State::kConnected;
+
+        Request();
+    }
+
+public:
+    static const uint16_t kMaxAddr;
+
+public:
+    ConnectionPFmini(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsVerbose(true), fKeepAlive(ioservice)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+        Connection::SetVerbose(b);
+    }
+
+    void SetInterval(uint16_t i)
+    {
+        fInterval = i;
+    }
+
+    int GetState() const
+    {
+        if (!is_open())
+            return PFmini::State::kDisconnected;
+
+        return fState;
+    }
+};
+
+const uint16_t ConnectionPFmini::kMaxAddr = 0xfff;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimWeather : public ConnectionPFmini
+{
+private:
+    DimDescribedService fDim;
+
+public:
+    ConnectionDimWeather(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionPFmini(ioservice, imp),
+        fDim("PFMINI_CONTROL/DATA", "F:1;F:1",
+             "Humidity and temperature as read out from the PFmini arduino"
+             "|Humidity[%]:Measures humidity"
+             "|Temperature[deg]:Measured temperature")
+    {
+    }
+
+    void Update(const PFmini::Data &data)
+    {
+        fDim.Update(data);
+    }
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachinePFminiControl : public StateMachineAsio<T>
+{
+private:
+    S fPFmini;
+    Time fLastCommand;
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int Disconnect()
+    {
+        // Close all connections
+        fPFmini.PostClose(false);
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fPFmini.PostClose(false);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        ba::io_service::poll();
+
+        if (evt.GetBool())
+            fPFmini.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fPFmini.PostClose(true);
+
+        return T::GetCurrentState();
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fPFmini.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int Execute()
+    {
+        return fPFmini.GetState();
+    }
+
+
+public:
+    StateMachinePFminiControl(ostream &out=cout) :
+        StateMachineAsio<T>(out, "PFMINI_CONTROL"), fPFmini(*this, *this)
+    {
+        // State names
+        T::AddStateName(PFmini::State::kDisconnected, "Disconnected",
+                        "No connection to web-server could be established recently");
+
+        T::AddStateName(PFmini::State::kConnected, "Connected",
+                        "Connection established, but status still not known");
+
+        T::AddStateName(PFmini::State::kReceiving, "Receiving",
+                        "Connection established, receiving reports");
+
+        // Commands
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B")
+            (bind(&StateMachinePFminiControl::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+
+        // Conenction commands
+        T::AddEvent("DISCONNECT")
+            (bind(&StateMachinePFminiControl::Disconnect, this))
+            ("disconnect from ethernet");
+
+         T::AddEvent("RECONNECT", "O")
+            (bind(&StateMachinePFminiControl::Reconnect, this, placeholders::_1))
+            ("(Re)connect ethernet connection to PFmini, a new address can be given"
+             "|[host][string]:new ethernet address in the form <host:port>");
+
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fPFmini.SetVerbose(!conf.Get<bool>("quiet"));
+        fPFmini.SetDebugTx(conf.Get<bool>("debug-tx"));
+        fPFmini.SetEndpoint(conf.Get<string>("addr"));
+        fPFmini.SetInterval(conf.Get<uint16_t>("interval"));
+        fPFmini.StartConnect();
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachinePFminiControl<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("PFmini control");
+    control.add_options()
+        ("no-dim,d", po_switch(), "Disable dim services")
+        ("addr,a",   var<string>("10.0.130.140:80"), "Network address of the lid controling Arduino including port")
+        ("quiet,q",  po_bool(true), "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ("debug-tx", po_bool(), "Enable debugging of ethernet transmission.")
+        ("interval", var<uint16_t>(15), "Interval in seconds at which a report is requested.")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The pfminictrl is an interface to the PFmini arduino.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: pfminictrlö [-c type] [OPTIONS]\n"
+        "  or:  pfminictrl [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+//    Main::PrintHelp<StateMachineFTM<StateMachine, ConnectionFTM>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    // No console access at all
+    if (!conf.Has("console"))
+    {
+        if (conf.Get<bool>("no-dim"))
+            return RunShell<LocalStream, StateMachine, ConnectionPFmini>(conf);
+        else
+            return RunShell<LocalStream, StateMachineDim, ConnectionDimWeather>(conf);
+    }
+    // Cosole access w/ and w/o Dim
+    if (conf.Get<bool>("no-dim"))
+    {
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell, StateMachine, ConnectionPFmini>(conf);
+        else
+            return RunShell<LocalConsole, StateMachine, ConnectionPFmini>(conf);
+    }
+    else
+    {
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell, StateMachineDim, ConnectionDimWeather>(conf);
+        else
+            return RunShell<LocalConsole, StateMachineDim, ConnectionDimWeather>(conf);
+    }
+
+    return 0;
+}
Index: branches/testFACT++branch/src/pwrctrl.cc
===================================================================
--- branches/testFACT++branch/src/pwrctrl.cc	(revision 18277)
+++ branches/testFACT++branch/src/pwrctrl.cc	(revision 18277)
@@ -0,0 +1,590 @@
+#include <boost/array.hpp>
+
+#include <string>
+
+#include <QtXml/QDomDocument>
+
+#include "FACT.h"
+#include "Dim.h"
+#include "Event.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "HeadersPower.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+
+class ConnectionInterlock : public Connection
+{
+protected:
+    bool fIsValid;
+
+private:
+    uint16_t fInterval;
+
+    bool fIsVerbose;
+    bool fDebugRx;
+
+    string fSite;
+    string fRdfData;
+
+    boost::array<char, 4096> fArray;
+
+    string fNextCommand;
+
+    Time fLastReport;
+
+    Power::Status fStatus;
+
+    virtual void Update(const Power::Status &)
+    {
+    }
+
+
+    void ProcessAnswer()
+    {
+        if (fDebugRx)
+        {
+            Out() << "------------------------------------------------------" << endl;
+            Out() << fRdfData << endl;
+            Out() << "------------------------------------------------------" << endl;
+        }
+
+        const size_t p1 = fRdfData.find("\r\n\r\n");
+        if (p1==string::npos)
+        {
+            Warn("HTTP header not found.");
+            PostClose(false);
+            return;
+        }
+
+        fRdfData.erase(0, p1+4);
+        fRdfData.insert(0, "<?xml version=\"1.0\"?>\n");
+
+        QDomDocument doc;
+        if (!doc.setContent(QString(fRdfData.c_str()), false))
+        {
+            Warn("Parsing of html failed.");
+            PostClose(false);
+            return;
+        }
+
+        if (fDebugRx)
+            Out() << "Parsed:\n-------\n" << doc.toString().toStdString() << endl;
+
+        const QDomNodeList imageElems = doc.elementsByTagName("span");
+
+        for (unsigned int i=0; i<imageElems.length(); i++)
+        {
+            const QDomElement e = imageElems.item(i).toElement();
+
+            const QDomNamedNodeMap att = e.attributes();
+
+            if (fStatus.Set(att))
+                fIsValid = true;
+        }
+
+        if (fIsVerbose)
+            fStatus.Print(Out());
+
+        Update(fStatus);
+
+        fRdfData = "";
+
+        fLastReport = Time();
+        PostClose(false);
+    }
+
+    void HandleRead(const boost::system::error_code& err, size_t bytes_received)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+            {
+                if (!fRdfData.empty())
+                    ProcessAnswer();
+                return;
+            }
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+
+            fRdfData = "";
+            return;
+        }
+
+        fRdfData += string(fArray.data(), bytes_received);
+
+        // Does the message contain a header?
+        const size_t p1 = fRdfData.find("\r\n\r\n");
+        if (p1!=string::npos)
+        {
+            // Does the answer also contain the body?
+            const size_t p2 = fRdfData.find("\r\n\r\n", p1+4);
+            if (p2!=string::npos)
+                ProcessAnswer();
+        }
+
+        // Go on reading until the web-server closes the connection
+        StartReadReport();
+    }
+
+    boost::asio::streambuf fBuffer;
+
+    void StartReadReport()
+    {
+        async_read_some(ba::buffer(fArray),
+                        boost::bind(&ConnectionInterlock::HandleRead, this,
+                                    dummy::error, dummy::bytes_transferred));
+    }
+
+    boost::asio::deadline_timer fKeepAlive;
+
+    void HandleRequest(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "Write timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            PostClose(true);
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fKeepAlive.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        Request();
+    }
+
+
+private:
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        Request();
+        StartReadReport();
+    }
+
+public:
+    static const uint16_t kMaxAddr;
+
+public:
+    ConnectionInterlock(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsValid(false), fIsVerbose(true), fDebugRx(false), fLastReport(Time::none), fKeepAlive(ioservice)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+    }
+
+    void SetDebugRx(bool b)
+    {
+        fDebugRx = b;
+        Connection::SetVerbose(b);
+    }
+
+    void SetInterval(uint16_t i)
+    {
+        fInterval = i;
+    }
+
+    void SetSite(const string &site)
+    {
+        fSite = site;
+    }
+
+    void Post(const string &post)
+    {
+        fNextCommand = post;
+    }
+
+    void Request()
+    {
+        string cmd = "GET " + fSite;
+
+        if (!fNextCommand.empty())
+            cmd += "?" + fNextCommand;
+
+        cmd += " HTTP/1.1\r\n";
+        cmd += "\r\n";
+
+        PostMessage(cmd);
+
+        fNextCommand = "";
+
+        fKeepAlive.expires_from_now(boost::posix_time::seconds(fInterval));
+        fKeepAlive.async_wait(boost::bind(&ConnectionInterlock::HandleRequest,
+                                          this, dummy::error));
+    }
+
+    int GetInterval() const
+    {
+        return fInterval;
+    }
+
+    int GetState() const
+    {
+        // Timeout
+        if (!fLastReport.IsValid() || Time()>fLastReport+boost::posix_time::seconds(fInterval*3))
+            return Power::State::kDisconnected;
+
+        // No data received yet
+        if (!fIsValid)
+            return Power::State::kConnected;
+
+        /*
+         bool fWaterFlowOk;
+         bool fWaterLevelOk;
+         bool fPwrBiasOn;
+         bool fPwr24VOn;
+         bool fPwrPumpOn;
+         bool fPwrDriveOn;
+         bool fDriveMainSwitchOn;
+         bool fDriveFeedbackOn;
+        */
+
+        if (!fStatus.fWaterLevelOk || (fStatus.fPwrPumpOn && !fStatus.fWaterFlowOk))
+            return Power::State::kCoolingFailure;
+
+        const int rc =
+            (fStatus.fPwrBiasOn       ? Power::State::kBiasOn   : 0) |
+            (fStatus.fPwrPumpOn       ? Power::State::kCameraOn : 0) |
+            (fStatus.fDriveFeedbackOn ? Power::State::kDriveOn  : 0);
+
+        return rc==0 ? Power::State::kSystemOff : rc;
+    }
+};
+
+const uint16_t ConnectionInterlock::kMaxAddr = 0xfff;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimWeather : public ConnectionInterlock
+{
+private:
+    DimDescribedService fDim;
+
+public:
+    ConnectionDimWeather(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionInterlock(ioservice, imp),
+        fDim("PWR_CONTROL/DATA", "C:1;C:1;C:1;C:1;C:1;C:1;C:1;C:1",
+             "|water_lvl[bool]:Water level ok"
+             "|water_flow[bool]:Water flowing"
+             "|pwr_24V[bool]:24V power enabled"
+             "|pwr_pump[bool]:Pump power enabled"
+             "|pwr_bias[bool]:Bias power enabled"
+             "|pwr_drive[bool]:Drive power enabled (command value)"
+             "|main_drive[bool]:Drive manual main switch on"
+             "|feedback_drive[bool]:Drive power on (feedback value)")
+    {
+    }
+
+    void Update(const Power::Status &status)
+    {
+        fDim.setQuality(status.GetVal());
+        fDim.Update(status);
+    }
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachinePowerControl : public StateMachineAsio<T>
+{
+private:
+    S fPower;
+    Time fLastCommand;
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fPower.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetDebugRx(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetDebugRx", 1))
+            return T::kSM_FatalError;
+
+        fPower.SetDebugRx(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int Post(const EventImp &evt)
+    {
+        fPower.Post(evt.GetText());
+        return T::GetCurrentState();
+    }
+
+    int SetCameraPower(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetCameraPower", 1))
+            return T::kSM_FatalError;
+
+        fLastCommand = Time();
+        fPower.Post(evt.GetBool() ? "cam_on=Camera+ON" : "cam_off=Camera+OFF");
+        return T::GetCurrentState();
+    }
+
+    int ToggleDrive()
+    {
+        fLastCommand = Time();
+        fPower.Post("dt=Drive+ON%2FOFF");
+        return T::GetCurrentState();
+
+    }
+
+    int Execute()
+    {
+        const int rc = fPower.GetState();
+
+        if (rc==Power::State::kCoolingFailure && T::GetCurrentState()!=Power::State::kCoolingFailure)
+            T::Error("Power control unit reported cooling failure.");
+
+        return fPower.GetState();
+    }
+
+
+public:
+    StateMachinePowerControl(ostream &out=cout) :
+        StateMachineAsio<T>(out, "PWR_CONTROL"), fPower(*this, *this)
+    {
+        // State names
+        T::AddStateName(Power::State::kDisconnected, "NoConnection",
+                     "No connection to web-server could be established recently");
+
+        T::AddStateName(Power::State::kConnected, "Connected",
+                     "Connection established, but status still not known");
+
+        T::AddStateName(Power::State::kSystemOff, "PowerOff",
+                     "Camera, Bias and Drive power off");
+
+        T::AddStateName(Power::State::kBiasOn, "BiasOn",
+                     "Camera and Drive power off, Bias on");
+
+        T::AddStateName(Power::State::kDriveOn, "DriveOn",
+                     "Camera and Bias power off, Drive on");
+
+        T::AddStateName(Power::State::kCameraOn, "CameraOn",
+                     "Drive and Bias power off, Camera on");
+
+        T::AddStateName(Power::State::kBiasOff, "BiasOff",
+                     "Camera and Drive power on, Bias off");
+
+        T::AddStateName(Power::State::kDriveOff, "DriveOff",
+                     "Camera and Bias power on, Drive off");
+
+        T::AddStateName(Power::State::kCameraOff, "CameraOff",
+                     "Drive and Bias power on, Camera off");
+
+        T::AddStateName(Power::State::kSystemOn, "SystemOn",
+                     "Camera, Bias and drive power on");
+
+        T::AddStateName(Power::State::kCoolingFailure, "CoolingFailure",
+                     "The cooling unit has failed, the interlock has switched off");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B:1")
+            (bind(&StateMachinePowerControl::SetVerbosity, this, placeholders::_1))
+            ("Set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for interpreted data (yes/no)");
+
+        T::AddEvent("SET_DEBUG_RX", "B:1")
+            (bind(&StateMachinePowerControl::SetDebugRx, this, placeholders::_1))
+            ("Set debux-rx state"
+             "|debug[bool]:dump received text and parsed text to console (yes/no)");
+
+        T::AddEvent("CAMERA_POWER", "B:1")
+            (bind(&StateMachinePowerControl::SetCameraPower, this, placeholders::_1))
+            ("Switch camera power"
+             "|power[bool]:Switch camera power 'on' or 'off'");
+
+        T::AddEvent("TOGGLE_DRIVE")
+            (bind(&StateMachinePowerControl::ToggleDrive, this))
+            ("Toggle drive power");
+
+        T::AddEvent("POST", "C")
+            (bind(&StateMachinePowerControl::Post, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fPower.SetVerbose(!conf.Get<bool>("quiet"));
+        fPower.SetInterval(conf.Get<uint16_t>("interval"));
+        fPower.SetDebugTx(conf.Get<bool>("debug-tx"));
+        fPower.SetDebugRx(conf.Get<bool>("debug-rx"));
+        fPower.SetSite(conf.Get<string>("url"));
+        fPower.SetEndpoint(conf.Get<string>("addr"));
+        fPower.StartConnect();
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachinePowerControl<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Interlock control");
+    control.add_options()
+        ("no-dim,d",   po_switch(),    "Disable dim services")
+        ("addr,a",     var<string>(""),  "Network address of the lid controling Arduino including port")
+        ("url,u",      var<string>(""),  "File name and path to load")
+        ("quiet,q",    po_bool(true),  "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ("interval,i", var<uint16_t>(5), "Interval between two updates on the server in seconds")
+        ("debug-tx",   po_bool(), "Enable debugging of ethernet transmission.")
+        ("debug-rx",   po_bool(), "Enable debugging for received data.")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The pwrctrl is an interface to the interlock hardware.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: pwrctrl [-c type] [OPTIONS]\n"
+        "  or:  pwrctrl [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+//    Main::PrintHelp<StateMachineFTM<StateMachine, ConnectionFTM>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    // No console access at all
+    if (!conf.Has("console"))
+    {
+        if (conf.Get<bool>("no-dim"))
+            return RunShell<LocalStream, StateMachine, ConnectionInterlock>(conf);
+        else
+            return RunShell<LocalStream, StateMachineDim, ConnectionDimWeather>(conf);
+    }
+    // Cosole access w/ and w/o Dim
+    if (conf.Get<bool>("no-dim"))
+    {
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell, StateMachine, ConnectionInterlock>(conf);
+        else
+            return RunShell<LocalConsole, StateMachine, ConnectionInterlock>(conf);
+    }
+    else
+    {
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell, StateMachineDim, ConnectionDimWeather>(conf);
+        else
+            return RunShell<LocalConsole, StateMachineDim, ConnectionDimWeather>(conf);
+    }
+
+    return 0;
+}
Index: branches/testFACT++branch/src/queue.h
===================================================================
--- branches/testFACT++branch/src/queue.h	(revision 18277)
+++ branches/testFACT++branch/src/queue.h	(revision 18277)
@@ -0,0 +1,198 @@
+#ifndef FACT_Queue
+#define FACT_Queue
+
+#include <list>
+#include <thread>
+#include <condition_variable>
+
+template<class T>
+class Queue
+{
+    size_t fSize;                 // Only necessary for before C++11
+
+    std::list<T> fList;
+
+    std::mutex fMutex;        // Mutex needed for the conditional
+    std::condition_variable fCond; // Conditional
+
+    enum state_t
+    {
+        kIdle,
+        kRun,
+        kStop,
+        kAbort,
+    };
+
+    state_t fState;               // Stop signal for the thread
+
+    typedef std::function<void(const T &)> callback;
+    callback fCallback;       // Callback function called by the thread
+
+    std::thread fThread;      // Handle to the thread
+
+    void Thread()
+    {
+        std::unique_lock<std::mutex> lock(fMutex);
+
+        while (1)
+        {
+            while (fList.empty() && fState==kRun)
+                fCond.wait(lock);
+
+            if (fState==kAbort)
+                break;
+
+            if (fState==kStop && fList.empty())
+                break;
+
+            const T &val = fList.front();
+
+            // Theoretically, we can loose a signal here, but this is
+            // not a problem, because then we detect a non-empty queue
+            lock.unlock();
+
+            if (fCallback)
+                fCallback(val);
+
+            lock.lock();
+
+            fList.pop_front();
+            fSize--;
+        }
+
+        fList.clear();
+        fSize = 0;
+
+        fState = kIdle;
+    }
+
+public:
+    Queue(const callback &f) : fSize(0), fState(kIdle), fCallback(f)
+    {
+        start();
+    }
+    ~Queue()
+    {
+        wait(true);
+    }
+
+    bool start()
+    {
+        const std::lock_guard<std::mutex> lock(fMutex);
+        if (fState!=kIdle)
+            return false;
+
+        fState = kRun;
+        fThread = std::thread(std::bind(&Queue::Thread, this));
+        return true;
+    }
+
+    bool stop()
+    {
+        const std::lock_guard<std::mutex> lock(fMutex);
+        if (fState==kIdle)
+            return false;
+
+        fState = kStop;
+        fCond.notify_one();
+
+        return true;
+    }
+
+    bool abort()
+    {
+        const std::lock_guard<std::mutex> lock(fMutex);
+        if (fState==kIdle)
+            return false;
+
+        fState = kAbort;
+        fCond.notify_one();
+
+        return true;
+    }
+
+    bool wait(bool abrt=false)
+    {
+        {
+            const std::lock_guard<std::mutex> lock(fMutex);
+            if (fState==kIdle)
+                return false;
+
+            if (fState==kRun)
+            {
+                fState = abrt ? kAbort : kStop;
+                fCond.notify_one();
+            }
+        }
+
+        fThread.join();
+        return true;
+    }
+
+    bool post(const T &val)
+    {
+        const std::lock_guard<std::mutex> lock(fMutex);
+        if (fState==kIdle)
+            return false;
+
+        fList.push_back(val);
+        fSize++;
+
+        fCond.notify_one();
+
+        return true;
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    template<typename... _Args>
+        bool emplace(_Args&&... __args)
+    {
+        const std::lock_guard<std::mutex> lock(fMutex);
+        if (fState==kIdle)
+            return false;
+
+        fList.emplace_back(__args...);
+        fSize++;
+
+        fCond.notify_one();
+
+        return true;
+    }
+
+    bool post(T &&val) { return emplace(std::move(val)); }
+#endif
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    bool move(std::list<T>&& x, typename std::list<T>::iterator i)
+#else
+    bool move(std::list<T>& x, typename std::list<T>::iterator i)
+#endif
+    {
+        const std::lock_guard<std::mutex> lock(fMutex);
+        if (fState==kIdle)
+            return false;
+
+        fList.splice(fList.end(), x, i);
+        fSize++;
+
+        fCond.notify_one();
+
+        return true;
+    }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    bool move(std::list<T>& x, typename std::list<T>::iterator i) { return move(std::move(x), i); }
+#endif
+
+    size_t size() const
+    {
+        return fSize;
+    }
+
+    bool empty() const
+    {
+        return fSize==0;
+    }
+};
+
+#endif
Index: branches/testFACT++branch/src/ratecontrol.cc
===================================================================
--- branches/testFACT++branch/src/ratecontrol.cc	(revision 18277)
+++ branches/testFACT++branch/src/ratecontrol.cc	(revision 18277)
@@ -0,0 +1,981 @@
+#include <valarray>
+
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "Connection.h"
+#include "Configuration.h"
+#include "Console.h"
+#include "externals/PixelMap.h"
+
+#include "tools.h"
+
+#include "LocalControl.h"
+
+#include "HeadersFTM.h"
+#include "HeadersDrive.h"
+#include "HeadersRateScan.h"
+#include "HeadersRateControl.h"
+
+namespace ba    = boost::asio;
+namespace bs    = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+#include "DimState.h"
+
+// ------------------------------------------------------------------------
+
+class StateMachineRateControl : public StateMachineDim//, public DimInfoHandler
+{
+private:
+    struct config
+    {
+        uint16_t fCalibrationType;
+        uint16_t fTargetRate;
+        uint16_t fMinThreshold;
+        uint16_t fAverageTime;
+        uint16_t fRequiredEvents;
+    };
+
+    map<string, config> fRunTypes;
+
+    PixelMap fMap;
+
+    bool fPhysTriggerEnabled;
+    bool fTriggerOn;
+
+    vector<bool> fBlock;
+
+    DimVersion fDim;
+    DimDescribedState fDimFTM;
+    DimDescribedState fDimRS;
+    DimDescribedState fDimDrive;
+
+    DimDescribedService fDimThreshold;
+
+    float  fTargetRate;
+    float  fTriggerRate;
+
+    uint16_t fThresholdMin;
+    uint16_t fThresholdReference;
+
+    uint16_t fAverageTime;
+    uint16_t fRequiredEvents;
+
+    list<pair<Time,float>> fCurrentsMed;
+    list<pair<Time,float>> fCurrentsDev;
+    list<pair<Time,vector<float>>> fCurrentsVec;
+
+    bool fVerbose;
+    bool fCalibrateByCurrent;
+
+    uint64_t fCounter;
+
+    Time fCalibrationTimeStart;
+
+    bool CheckEventSize(const EventImp &evt, size_t size)
+    {
+        if (size_t(evt.GetSize())==size)
+            return true;
+
+        if (evt.GetSize()==0)
+            return false;
+
+        ostringstream msg;
+        msg << evt.GetName() << " - Received event has " << evt.GetSize() << " bytes, but expected " << size << ".";
+        Fatal(msg);
+        return false;
+    }
+
+    vector<uint32_t> fThresholds;
+
+    void PrintThresholds(const FTM::DimStaticData &sdata)
+    {
+        if (!fVerbose)
+            return;
+
+        if (fThresholds.empty())
+            return;
+
+        if (GetCurrentState()<=RateControl::State::kConnected)
+            return;
+
+        Out() << "Min. DAC=" << fThresholdMin << endl;
+
+        for (int j=0; j<10; j++)
+        {
+            for (int k=0; k<4; k++)
+            {
+                for (int i=0; i<4; i++)
+                {
+                    const int p = i + k*4 + j*16;
+
+                    if (fThresholds[p]!=fThresholdMin)
+                        Out() << setw(3) << fThresholds[p];
+                    else
+                        Out() << " - ";
+
+                    if (fThresholds[p]!=sdata.fThreshold[p])
+                        Out() << "!";
+                    else
+                        Out() << " ";
+                }
+
+                Out() << "   ";
+            }
+            Out() << endl;
+        }
+        Out() << endl;
+    }
+
+    // RETUNR VALUE
+    bool Step(int idx, float step)
+    {
+        uint32_t diff = fThresholds[idx]+int16_t(truncf(step));
+        if (diff<fThresholdMin)
+            diff=fThresholdMin;
+        if (diff>0xffff)
+            diff = 0xffff;
+
+        if (diff==fThresholds[idx])
+            return false;
+
+        if (fVerbose)
+        {
+            Out() << "Apply: Patch " << setw(3) << idx << " [" << idx/40 << "|" << (idx/4)%10 << "|" << idx%4 << "]";
+            Out() << (step>0 ? " += " : " -= ");
+            Out() << fabs(step) << " (old=" << fThresholds[idx] << ", new=" << diff << ")" << endl;
+        }
+
+        fThresholds[idx] = diff;
+        fBlock[idx/4] = true;
+
+        return true;
+    }
+
+    void ProcessPatches(const FTM::DimTriggerRates &sdata)
+    {
+
+        // Caluclate Median and deviation
+        vector<float> medb(sdata.fBoardRate, sdata.fBoardRate+40);
+        vector<float> medp(sdata.fPatchRate, sdata.fPatchRate+160);
+
+        sort(medb.begin(), medb.end());
+        sort(medp.begin(), medp.end());
+
+        vector<float> devb(40);
+        for (int i=0; i<40; i++)
+            devb[i] = fabs(sdata.fBoardRate[i]-medb[i]);
+
+        vector<float> devp(160);
+        for (int i=0; i<160; i++)
+            devp[i] = fabs(sdata.fPatchRate[i]-medp[i]);
+
+        sort(devb.begin(), devb.end());
+        sort(devp.begin(), devp.end());
+
+        const double mb = (medb[19]+medb[20])/2;
+        const double mp = (medp[79]+medp[80])/2;
+
+        const double db = devb[27];
+        const double dp = devp[109];
+
+        // If any is zero there is something wrong
+        if (mb==0 || mp==0 || db==0 || dp==0)
+            return;
+
+        if (fVerbose)
+            Out() << Tools::Form("Boards: Med=%3.1f +- %3.1f Hz   Patches: Med=%3.1f +- %3.1f Hz", mb, db, mp, dp) << endl;
+
+        bool changed = false;
+
+        for (int i=0; i<40; i++)
+        {
+            if (fBlock[i])
+            {
+                fBlock[i] = false;
+                continue;
+            }
+
+            int maxi = -1;
+
+            const float dif = fabs(sdata.fBoardRate[i]-mb)/db;
+            if (dif>3)
+            {
+                if (fVerbose)
+                    Out() << "Board " << setw(3) << i << ": " << dif << " dev away from med" << endl;
+
+                float max = sdata.fPatchRate[i*4];
+                maxi = 0;
+
+                for (int j=1; j<4; j++)
+                    if (sdata.fPatchRate[i*4+j]>max)
+                    {
+                        max = sdata.fPatchRate[i*4+j];
+                        maxi = j;
+                    }
+            }
+
+            for (int j=0; j<4; j++)
+            {
+                // For the noise pixel correct down to median+3*deviation
+                if (maxi==j)
+                {
+                    // This is the step which has to be performed to go from
+                    // a NSB rate of sdata.fPatchRate[i*4+j]
+
+
+                    const float step = (log10(sdata.fPatchRate[i*4+j])-log10(mp+3.5*dp))/0.039;
+                    //  * (dif-5)/dif
+                    changed |= Step(i*4+j, step);
+                    continue;
+                }
+
+                // For pixels below the median correct also back to median+3*deviation
+                if (sdata.fPatchRate[i*4+j]<mp)
+                {
+                    const float step = (log10(sdata.fPatchRate[i*4+j])-log10(mp+3.5*dp))/0.039;
+                    changed |= Step(i*4+j, step);
+                    continue;
+                }
+
+                const float step =  -1.5*(log10(mp+dp)-log10(mp))/0.039;
+                changed |= Step(i*4+j, step);
+            }
+        }
+
+        if (changed)
+            Dim::SendCommandNB("FTM_CONTROL/SET_SELECTED_THRESHOLDS", fThresholds);
+    }
+
+    int ProcessCamera(const FTM::DimTriggerRates &sdata)
+    {
+        if (fCounter++==0)
+            return GetCurrentState();
+
+        // Caluclate Median and deviation
+        vector<float> medb(sdata.fBoardRate, sdata.fBoardRate+40);
+
+        sort(medb.begin(), medb.end());
+
+        vector<float> devb(40);
+        for (int i=0; i<40; i++)
+            devb[i] = fabs(sdata.fBoardRate[i]-medb[i]);
+
+        sort(devb.begin(), devb.end());
+
+        double mb = (medb[19]+medb[20])/2;
+        double db = devb[27];
+
+        // If any is zero there is something wrong
+        if (mb==0 || db==0)
+        {
+            Warn("The median or the deviation of all board rates is zero... cannot calibrate.");
+            return GetCurrentState();
+        }
+
+        double avg = 0;
+        int    num = 0;
+
+        for (int i=0; i<40; i++)
+        {
+            if ( fabs(sdata.fBoardRate[i]-mb)<2.5*db)
+            {
+                avg += sdata.fBoardRate[i];
+                num++;
+            }
+        }
+
+        fTriggerRate = avg/num * 40;
+
+        if (fVerbose)
+        {
+            Out() << "Board:  Median=" << mb << " Dev=" << db << endl;
+            Out() << "Camera: " << fTriggerRate << " (" << sdata.fTriggerRate << ", n=" << num << ")" << endl;
+            Out() << "Target: " << fTargetRate << endl;
+        }
+
+        if (sdata.fTriggerRate<fTriggerRate)
+            fTriggerRate = sdata.fTriggerRate;
+
+        // ----------------------
+
+        /*
+        if (avg>0 && avg<fTargetRate)
+        {
+            // I am assuming here (and at other places) the the answer from the FTM when setting
+            // the new threshold always arrives faster than the next rate update.
+            fThresholdMin = fThresholds[0];
+            Out() << "Setting fThresholdMin to " << fThresholds[0] << endl;
+        }
+        */
+
+        if (fTriggerRate>0 && fTriggerRate<fTargetRate)
+        {
+            fThresholds.assign(160, fThresholdMin);
+
+            const RateControl::DimThreshold data = { fThresholdMin, fCalibrationTimeStart.Mjd(), Time().Mjd() };
+            fDimThreshold.setQuality(0);
+            fDimThreshold.Update(data);
+
+            ostringstream out;
+            out << setprecision(3);
+            out << "Measured rate " << fTriggerRate << "Hz below target rate " << fTargetRate << "... mininum threshold set to " << fThresholdMin;
+            Info(out);
+
+            fTriggerOn = false;
+            fPhysTriggerEnabled = false;
+            return RateControl::State::kGlobalThresholdSet;
+        }
+
+        // This is a step towards a threshold at which the NSB rate is equal the target rate
+        // +1 to avoid getting a step of 0
+        const float step = (log10(fTriggerRate)-log10(fTargetRate))/0.039 + 1;
+
+        const uint16_t diff = fThresholdMin+int16_t(truncf(step));
+        if (diff<=fThresholdMin)
+        {
+            const RateControl::DimThreshold data = { fThresholdMin, fCalibrationTimeStart.Mjd(), Time().Mjd() };
+            fDimThreshold.setQuality(1);
+            fDimThreshold.Update(data);
+
+            ostringstream out;
+            out << setprecision(3);
+            out << "Next step would be 0... mininum threshold set to " << fThresholdMin;
+            Info(out);
+
+            fTriggerOn = false;
+            fPhysTriggerEnabled = false;
+            return RateControl::State::kGlobalThresholdSet;
+        }
+
+        if (fVerbose)
+        {
+            //Out() << idx/40 << "|" << (idx/4)%10 << "|" << idx%4;
+            Out() << fThresholdMin;
+            Out() << (step>0 ? " += " : " -= ");
+            Out() << step << " (" << diff << ")" << endl;
+        }
+
+        const uint32_t val[2] = { -1,  diff };
+        Dim::SendCommandNB("FTM_CONTROL/SET_THRESHOLD", val);
+
+        fThresholdMin = diff;
+
+        return GetCurrentState();
+    }
+
+    int HandleStaticData(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt, sizeof(FTM::DimStaticData)))
+            return GetCurrentState();
+
+        const FTM::DimStaticData &sdata = *static_cast<const FTM::DimStaticData*>(evt.GetData());
+        fPhysTriggerEnabled = sdata.HasTrigger();
+        fTriggerOn = (evt.GetQoS()&FTM::kFtmStates)==FTM::kFtmRunning;
+
+        Out() << "\n" << evt.GetTime() << ": " << (bool)fTriggerOn << " " << (bool)fPhysTriggerEnabled << endl;
+        PrintThresholds(sdata);
+
+        if (GetCurrentState()==RateControl::State::kSettingGlobalThreshold && fCalibrateByCurrent)
+        {
+            if (fThresholds.empty())
+                return RateControl::State::kSettingGlobalThreshold;
+
+            if (!std::equal(sdata.fThreshold, sdata.fThreshold+160, fThresholds.begin()))
+                return RateControl::State::kSettingGlobalThreshold;
+
+            return RateControl::State::kGlobalThresholdSet;
+        }
+
+        fThresholds.assign(sdata.fThreshold, sdata.fThreshold+160);
+
+        return GetCurrentState();
+    }
+
+    int HandleTriggerRates(const EventImp &evt)
+    {
+        fTriggerOn = (evt.GetQoS()&FTM::kFtmStates)==FTM::kFtmRunning;
+
+        if (fThresholds.empty())
+            return GetCurrentState();
+
+        if (GetCurrentState()<=RateControl::State::kConnected ||
+            GetCurrentState()==RateControl::State::kGlobalThresholdSet)
+            return GetCurrentState();
+
+        if (!CheckEventSize(evt, sizeof(FTM::DimTriggerRates)))
+            return GetCurrentState();
+
+        const FTM::DimTriggerRates &sdata = *static_cast<const FTM::DimTriggerRates*>(evt.GetData());
+
+        if (GetCurrentState()==RateControl::State::kSettingGlobalThreshold && !fCalibrateByCurrent)
+            return ProcessCamera(sdata);
+
+        if (GetCurrentState()==RateControl::State::kInProgress)
+            ProcessPatches(sdata);
+
+        return GetCurrentState();
+    }
+
+    int HandleCalibratedCurrents(const EventImp &evt)
+    {
+        // Check if received event is valid
+        if (!CheckEventSize(evt, (2*416+8)*4))
+            return GetCurrentState();
+
+        // Record only currents when the drive is tracking to avoid
+        // bias from the movement
+        if (fDimDrive.state()<Drive::State::kTracking)
+            return GetCurrentState();
+
+        // Get time and median current (FIXME: check N?)
+        const Time &time = evt.GetTime();
+        const float med  = evt.Get<float>(416*4+4+4);
+        const float dev  = evt.Get<float>(416*4+4+4+4);
+        const float *cur = evt.Ptr<float>();
+
+        // Keep all median currents of the past 10 seconds
+        fCurrentsMed.emplace_back(time, med);
+        fCurrentsDev.emplace_back(time, dev);
+        fCurrentsVec.emplace_back(time, vector<float>(cur, cur+320));
+        while (!fCurrentsMed.empty())
+        {
+            if (time-fCurrentsMed.front().first<boost::posix_time::seconds(fAverageTime))
+                break;
+
+            fCurrentsMed.pop_front();
+            fCurrentsDev.pop_front();
+            fCurrentsVec.pop_front();
+        }
+
+        // If we are not doing a calibration no further action necessary
+        if (!fCalibrateByCurrent)
+            return GetCurrentState();
+
+        // We are not setting thresholds at all
+        if (GetCurrentState()!=RateControl::State::kSettingGlobalThreshold)
+            return GetCurrentState();
+
+        // Target thresholds have been assigned already
+        if (!fThresholds.empty())
+            return GetCurrentState();
+
+        // We want at least 8 values for averaging
+        if (fCurrentsMed.size()<fRequiredEvents)
+            return GetCurrentState();
+
+        // Calculate avera and rms of median
+        double avg = 0;
+        double rms = 0;
+        for (auto it=fCurrentsMed.begin(); it!=fCurrentsMed.end(); it++)
+        {
+            avg += it->second;
+            rms += it->second*it->second;
+        }
+        avg /= fCurrentsMed.size();
+        rms /= fCurrentsMed.size();
+        rms -= avg*avg;
+        rms = rms<0 ? 0 : sqrt(rms);
+
+        double avg_dev = 0;
+        for (auto it=fCurrentsDev.begin(); it!=fCurrentsDev.end(); it++)
+            avg_dev += it->second;
+        avg_dev /= fCurrentsMed.size();
+
+        // One could recalculate the median of all pixels including the
+        // correction for the three crazy pixels, but that is three out
+        // of 320. The effect on the median should be negligible anyhow.
+        vector<double> vec(160);
+        for (auto it=fCurrentsVec.begin(); it!=fCurrentsVec.end(); it++)
+            for (int i=0; i<320; i++)
+            {
+                const PixelMapEntry &hv = fMap.hv(i);
+                if (hv)
+                    vec[hv.hw()/9] += it->second[i]*hv.count();
+            }
+
+        //fThresholdMin = max(uint16_t(36.0833*pow(avg, 0.638393)+184.037), fThresholdReference);
+        //fThresholdMin = max(uint16_t(42.4*pow(avg, 0.642)+182), fThresholdReference);
+        //fThresholdMin = max(uint16_t(41.6*pow(avg+1, 0.642)+175), fThresholdReference);
+        //fThresholdMin = max(uint16_t(42.3*pow(avg, 0.655)+190), fThresholdReference);
+        //fThresholdMin = max(uint16_t(46.6*pow(avg, 0.627)+187), fThresholdReference);
+        fThresholdMin = max(uint16_t(156.3*pow(avg, 0.3925)+1), fThresholdReference);
+        //fThresholdMin = max(uint16_t(41.6*pow(avg, 0.642)+175), fThresholdReference);
+        fThresholds.assign(160, fThresholdMin);
+
+        int counter = 1;
+
+        double avg2 = 0;
+        for (int i=0; i<160; i++)
+        {
+            vec[i] /= fCurrentsVec.size()*9;
+
+            avg2 += vec[i];
+
+            if (vec[i]>avg+3.5*avg_dev)
+            {
+                fThresholds[i] = max(uint16_t(40.5*pow(vec[i], 0.642)+164), fThresholdMin);
+
+                counter++;
+            }
+        }
+        avg2 /= 160;
+
+
+        Dim::SendCommandNB("FTM_CONTROL/SET_ALL_THRESHOLDS", fThresholds);
+
+
+        const RateControl::DimThreshold data = { fThresholdMin, fCalibrationTimeStart.Mjd(), Time().Mjd() };
+        fDimThreshold.setQuality(2);
+        fDimThreshold.Update(data);
+
+        //Info("Sent a total of "+to_string(counter)+" commands for threshold setting");
+
+        ostringstream out;
+        out << setprecision(3);
+        out << "Measured average current " << avg << "uA +- " << rms << "uA [N=" << fCurrentsMed.size() << "]... mininum threshold set to " << fThresholdMin;
+        Info(out);
+        Info("Set "+to_string(counter)+" individual thresholds.");
+
+        fTriggerOn = false;
+        fPhysTriggerEnabled = false;
+
+        return RateControl::State::kSettingGlobalThreshold;
+    }
+
+    int Calibrate()
+    {
+        if (!fPhysTriggerEnabled)
+        {
+            Info("Physics trigger not enabled... CALIBRATE command ignored.");
+
+            fTriggerOn = false;
+            fPhysTriggerEnabled = false;
+            return RateControl::State::kGlobalThresholdSet;
+        }
+
+        const int32_t val[2] = { -1, fThresholdReference };
+        Dim::SendCommandNB("FTM_CONTROL/SET_THRESHOLD", val);
+
+        fThresholds.assign(160, fThresholdReference);
+
+        fThresholdMin = fThresholdReference;
+        fTriggerRate  = -1;
+        fCounter      = 0;
+        fBlock.assign(160, false);
+
+        fCalibrateByCurrent = false;
+        fCalibrationTimeStart = Time();
+
+        ostringstream out;
+        out << "Rate calibration started at a threshold of " << fThresholdReference << " with a target rate of " << fTargetRate << " Hz";
+        Info(out);
+
+        return RateControl::State::kSettingGlobalThreshold;
+    }
+
+    int CalibrateByCurrent()
+    {
+        if (!fPhysTriggerEnabled)
+        {
+            Info("Physics trigger not enabled... CALIBRATE command ignored.");
+
+            fTriggerOn = false;
+            fPhysTriggerEnabled = false;
+            return RateControl::State::kGlobalThresholdSet;
+        }
+
+        if (fDimDrive.state()<Drive::State::kMoving)
+            Warn("Drive not even moving...");
+
+        fCounter = 0;
+        fCalibrateByCurrent = true;
+        fCalibrationTimeStart = Time();
+        fBlock.assign(160, false);
+
+        fThresholds.clear();
+
+        ostringstream out;
+        out << "Rate calibration by current with min. threshold of " << fThresholdReference << ".";
+        Info(out);
+
+        return RateControl::State::kSettingGlobalThreshold;
+    }
+
+    int CalibrateRun(const EventImp &evt)
+    {
+        const string name = evt.GetText();
+
+        auto it = fRunTypes.find(name);
+        if (it==fRunTypes.end())
+        {
+            Info("CalibrateRun - Run-type '"+name+"' not found... trying 'default'.");
+
+            it = fRunTypes.find("default");
+            if (it==fRunTypes.end())
+            {
+                Error("CalibrateRun - Run-type 'default' not found.");
+                return GetCurrentState();
+            }
+        }
+
+        const config &conf = it->second;
+
+        switch (conf.fCalibrationType)
+        {
+        case 0:
+            Info("No calibration requested.");
+            fTriggerOn = false;
+            fPhysTriggerEnabled = false;
+            return RateControl::State::kGlobalThresholdSet;
+            break;
+
+        case 1:
+            fThresholdReference = conf.fMinThreshold;
+            fTargetRate = conf.fTargetRate;
+            return Calibrate();
+
+        case 2:
+            fThresholdReference = conf.fMinThreshold;
+            fAverageTime = conf.fAverageTime;
+            fRequiredEvents = conf.fRequiredEvents;
+            return CalibrateByCurrent();
+        }
+
+        Error("CalibrateRun - Calibration type "+to_string(conf.fCalibrationType)+" unknown.");
+        return GetCurrentState();
+    }
+
+    int StopRC()
+    {
+        Info("Stop received.");
+        return RateControl::State::kConnected;
+    }
+
+    int SetMinThreshold(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt, 4))
+            return kSM_FatalError;
+
+        // FIXME: Check missing
+
+        fThresholdReference = evt.GetUShort();
+
+        return GetCurrentState();
+    }
+
+    int SetTargetRate(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt, 4))
+            return kSM_FatalError;
+
+        fTargetRate = evt.GetFloat();
+
+        return GetCurrentState();
+    }
+
+    int Print() const
+    {
+        Out() << fDim << endl;
+        Out() << fDimFTM << endl;
+        Out() << fDimRS << endl;
+        Out() << fDimDrive << endl;
+
+        return GetCurrentState();
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt, 1))
+            return kSM_FatalError;
+
+        fVerbose = evt.GetBool();
+
+        return GetCurrentState();
+    }
+
+    int Execute()
+    {
+        if (!fDim.online())
+            return RateControl::State::kDimNetworkNA;
+
+        // All subsystems are not connected
+        if (fDimFTM.state()<FTM::State::kConnected || fDimDrive.state()<Drive::State::kConnected)
+            return RateControl::State::kDisconnected;
+
+        // Do not allow any action while a ratescan is configured or in progress
+        if (fDimRS.state()>=RateScan::State::kConfiguring)
+            return RateControl::State::kConnected;
+
+        switch (GetCurrentState())
+        {
+        case RateControl::State::kSettingGlobalThreshold:
+            return RateControl::State::kSettingGlobalThreshold;
+
+        case RateControl::State::kGlobalThresholdSet:
+
+            // Wait for the trigger to get switched on before starting control loop
+            if (fTriggerOn && fPhysTriggerEnabled)
+                return RateControl::State::kInProgress;
+
+            return RateControl::State::kGlobalThresholdSet;
+
+        case RateControl::State::kInProgress:
+
+            // Go back to connected when the trigger has been switched off
+            if (!fTriggerOn || !fPhysTriggerEnabled)
+                return RateControl::State::kConnected;
+
+            return RateControl::State::kInProgress;
+        }
+
+        return RateControl::State::kConnected;
+    }
+
+public:
+    StateMachineRateControl(ostream &out=cout) : StateMachineDim(out, "RATE_CONTROL"),
+        fPhysTriggerEnabled(false), fTriggerOn(false), fBlock(40),
+        fDimFTM("FTM_CONTROL"),
+        fDimRS("RATE_SCAN"),
+        fDimDrive("DRIVE_CONTROL"),
+        fDimThreshold("RATE_CONTROL/THRESHOLD", "S:1;D:1;D:1",
+                      "Resulting threshold after calibration"
+                      "|threshold[dac]:Resulting threshold from calibration"
+                      "|begin[mjd]:Start time of calibration"
+                      "|end[mjd]:End time of calibration")
+    {
+        // ba::io_service::work is a kind of keep_alive for the loop.
+        // It prevents the io_service to go to stopped state, which
+        // would prevent any consecutive calls to run()
+        // or poll() to do nothing. reset() could also revoke to the
+        // previous state but this might introduce some overhead of
+        // deletion and creation of threads and more.
+
+        fDim.Subscribe(*this);
+        fDimFTM.Subscribe(*this);
+        fDimRS.Subscribe(*this);
+        fDimDrive.Subscribe(*this);
+
+        Subscribe("FTM_CONTROL/TRIGGER_RATES")
+            (bind(&StateMachineRateControl::HandleTriggerRates, this, placeholders::_1));
+        Subscribe("FTM_CONTROL/STATIC_DATA")
+            (bind(&StateMachineRateControl::HandleStaticData,   this, placeholders::_1));
+        Subscribe("FEEDBACK/CALIBRATED_CURRENTS")
+            (bind(&StateMachineRateControl::HandleCalibratedCurrents, this, placeholders::_1));
+
+        // State names
+        AddStateName(RateControl::State::kDimNetworkNA, "DimNetworkNotAvailable",
+                     "The Dim DNS is not reachable.");
+
+        AddStateName(RateControl::State::kDisconnected, "Disconnected",
+                     "The Dim DNS is reachable, but the required subsystems are not available.");
+
+        AddStateName(RateControl::State::kConnected, "Connected",
+                     "All needed subsystems are connected to their hardware, no action is performed.");
+
+        AddStateName(RateControl::State::kSettingGlobalThreshold, "Calibrating",
+                     "A global minimum thrshold is currently determined.");
+
+        AddStateName(RateControl::State::kGlobalThresholdSet, "GlobalThresholdSet",
+                     "A global threshold has ben set, waiting for the trigger to be switched on.");
+
+        AddStateName(RateControl::State::kInProgress, "InProgress",
+                     "Rate control in progress.");
+
+        AddEvent("CALIBRATE")
+            (bind(&StateMachineRateControl::Calibrate, this))
+            ("Start a search for a reasonable minimum global threshold");
+
+        AddEvent("CALIBRATE_BY_CURRENT")
+            (bind(&StateMachineRateControl::CalibrateByCurrent, this))
+            ("Set the global threshold from the median current");
+
+        AddEvent("CALIBRATE_RUN", "C")
+            (bind(&StateMachineRateControl::CalibrateRun, this, placeholders::_1))
+            ("Start a threshold calibration as defined in the setup for this run-type, state change to InProgress is delayed until trigger enabled");
+
+        AddEvent("STOP", RateControl::State::kSettingGlobalThreshold, RateControl::State::kGlobalThresholdSet, RateControl::State::kInProgress)
+            (bind(&StateMachineRateControl::StopRC, this))
+            ("Stop a calibration or ratescan in progress");
+
+        AddEvent("SET_MIN_THRESHOLD", "I:1")
+            (bind(&StateMachineRateControl::SetMinThreshold, this, placeholders::_1))
+            ("Set a minimum threshold at which th rate control starts calibrating");
+
+        AddEvent("SET_TARGET_RATE", "F:1")
+            (bind(&StateMachineRateControl::SetTargetRate, this, placeholders::_1))
+            ("Set a target trigger rate for the calibration");
+
+        AddEvent("PRINT")
+            (bind(&StateMachineRateControl::Print, this))
+            ("Print current status");
+
+        AddEvent("SET_VERBOSE", "B")
+            (bind(&StateMachineRateControl::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+
+    }
+
+    bool GetConfig(Configuration &conf, const string &name, const string &sub, uint16_t &rc)
+    {
+        if (conf.HasDef(name, sub))
+        {
+            rc = conf.GetDef<uint16_t>(name, sub);
+            return true;
+        }
+
+        Error("Neither "+name+"default nor "+name+sub+" found.");
+        return false;
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fVerbose = !conf.Get<bool>("quiet");
+
+        if (!fMap.Read(conf.Get<string>("pixel-map-file")))
+        {
+            Error("Reading mapping table from "+conf.Get<string>("pixel-map-file")+" failed.");
+            return 1;
+        }
+
+        fThresholdReference = 300;
+        fThresholdMin       = 300;
+        fTargetRate         =  75;
+
+        fAverageTime        =  10;
+        fRequiredEvents     =   8;
+
+        // ---------- Setup run types ---------
+        const vector<string> types = conf.Vec<string>("run-type");
+        if (types.empty())
+            Warn("No run-types defined.");
+        else
+            Message("Defining run-types");
+
+        for (auto it=types.begin(); it!=types.end(); it++)
+        {
+            Message(" -> "+ *it);
+
+            if (fRunTypes.count(*it)>0)
+            {
+                Error("Run-type "+*it+" defined twice.");
+                return 1;
+            }
+
+            config &c = fRunTypes[*it];
+            if (!GetConfig(conf, "calibration-type.", *it, c.fCalibrationType) ||
+                !GetConfig(conf, "target-rate.",      *it, c.fTargetRate)      ||
+                !GetConfig(conf, "min-threshold.",    *it, c.fMinThreshold)    ||
+                !GetConfig(conf, "average-time.",     *it, c.fAverageTime)     ||
+                !GetConfig(conf, "required-events.",  *it, c.fRequiredEvents))
+                return 2;
+        }
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineRateControl>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Rate control options");
+    control.add_options()
+        ("quiet,q", po_bool(),  "Disable printing more informations during rate control.")
+        ("pixel-map-file", var<string>()->required(), "Pixel mapping file. Used here to get the default reference voltage.")
+       //("max-wait",   var<uint16_t>(150), "The maximum number of seconds to wait to get the anticipated resolution for a point.")
+       // ("resolution", var<double>(0.05) , "The minimum resolution required for a single data point.")
+        ;
+
+    conf.AddOptions(control);
+
+    po::options_description runtype("Run type configuration");
+    runtype.add_options()
+        ("run-type",           vars<string>(),  "Name of run-types (replace the * in the following configuration by the case-sensitive names defined here)")
+        ("calibration-type.*", var<uint16_t>(), "Calibration type (0: none, 1: by rate, 2: by current)")
+        ("target-rate.*",      var<uint16_t>(), "Target rate for calibration by rate")
+        ("min-threshold.*",    var<uint16_t>(), "Minimum threshold which can be applied in a calibration")
+        ("average-time.*",     var<uint16_t>(), "Time in seconds to average the currents for a calibration by current.")
+        ("required-events.*",  var<uint16_t>(), "Number of required current events to start a calibration by current.");
+    ;
+
+    conf.AddOptions(runtype);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The ratecontrol program is a keep the rate reasonable low.\n"
+        "\n"
+        "Usage: ratecontrol [-c type] [OPTIONS]\n"
+        "  or:  ratecontrol [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineRateControl>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    if (!conf.Has("console"))
+        return RunShell<LocalStream>(conf);
+
+    if (conf.Get<int>("console")==0)
+        return RunShell<LocalShell>(conf);
+    else
+        return RunShell<LocalConsole>(conf);
+
+    return 0;
+}
Index: branches/testFACT++branch/src/ratescan.cc
===================================================================
--- branches/testFACT++branch/src/ratescan.cc	(revision 18277)
+++ branches/testFACT++branch/src/ratescan.cc	(revision 18277)
@@ -0,0 +1,691 @@
+#include <valarray>
+
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "Connection.h"
+#include "Configuration.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "LocalControl.h"
+
+#include "HeadersFTM.h"
+#include "HeadersRateScan.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+#include "DimState.h"
+
+// ------------------------------------------------------------------------
+
+class StateMachineRateScan : public StateMachineDim
+{
+private:
+    struct config
+    {
+        int fCounterMax;
+        float fResolution;
+    };
+    map<string, config> fTypes;
+
+    DimVersion fDim;
+
+    DimDescribedState   fDimFTM;
+    DimDescribedService fDimData;
+    DimDescribedService fDimProc;
+
+    bool fAutoPause;
+
+    int fCounter;
+    int fCounterMax;
+
+    int fThreshold;
+    int fThresholdMin;
+    int fThresholdMax;
+    int fThresholdStep;
+    int fThresholdStepDyn;
+
+    double fRate;
+    double fRateBoard[40];
+    double fRatePatch[160];
+
+    double fOnTime;
+
+    uint64_t fStartTime;
+
+    float fResolution;
+
+    enum reference_t
+    {
+        kCamera,
+        kBoard,
+        kPatch
+    };
+
+    reference_t fReference;
+    uint16_t    fReferenceIdx;
+
+    string fCommand;
+
+    void UpdateProc()
+    {
+        const array<uint32_t,3> v = {{ uint32_t(fThresholdMin), uint32_t(fThresholdMax), uint32_t(fThresholdStep) }};
+        fDimProc.Update(v);
+    }
+
+    bool CheckEventSize(const EventImp &evt, size_t size)
+    {
+        if (size_t(evt.GetSize())==size)
+            return true;
+
+        if (evt.GetSize()==0)
+            return false;
+
+        ostringstream msg;
+        msg << evt.GetName() << " - Received event has " << evt.GetSize() << " bytes, but expected " << size << ".";
+        Fatal(msg);
+        return false;
+    }
+
+    int HandleTriggerRates(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt, sizeof(FTM::DimTriggerRates)))
+            return GetCurrentState();
+
+        if (GetCurrentState()<RateScan::State::kInProgress)
+            return GetCurrentState();
+
+        const FTM::DimTriggerRates &sdata = *static_cast<const FTM::DimTriggerRates*>(evt.GetData());
+
+        if (++fCounter<0)
+            return GetCurrentState();
+
+        if (GetCurrentState()==RateScan::State::kPaused)
+            fCounter=0;
+
+        if (fCounter==0)
+        {
+            fRate = 0;
+
+            memset(fRateBoard, 0,  40*sizeof(double));
+            memset(fRatePatch, 0, 160*sizeof(double));
+
+            fOnTime = 0;
+            return GetCurrentState();
+        }
+/*
+        if (sdata.fTriggerRate==0)
+        {
+            Message("Rate scan stopped due zero trigger rate.");
+            fThreshold = -1;
+            return;
+        }
+*/
+
+        fRate += sdata.fTriggerRate;
+        for (int i=0; i<40; i++)
+            fRateBoard[i] += sdata.fBoardRate[i];
+        for (int i=0; i<160; i++)
+            fRatePatch[i] += sdata.fPatchRate[i];
+
+        double reference = fRate;
+        if (fReference==kBoard)
+            reference = fRateBoard[fReferenceIdx];
+        if (fReference==kPatch)
+            reference = fRatePatch[fReferenceIdx];
+
+        fOnTime += sdata.fOnTime;
+
+        reference *= sdata.fElapsedTime;
+
+        if ((reference==0 || sqrt(reference)>fResolution*reference) && fCounter<fCounterMax)
+        {
+            ostringstream out;
+            out << "Triggers so far: " << reference;
+            if (reference>0)
+                out << " (" << sqrt(reference)/reference << ")";
+            Info(out);
+
+            return GetCurrentState();
+        }
+
+        const double   time = sdata.fElapsedTime*fCounter;
+        const uint32_t th   = fThreshold;
+
+        float data[2+3+1+40+160];
+        memcpy(data,   &fStartTime, 8);
+        memcpy(data+2, &th, 4);
+        data[3] = time;         // total elapsed time
+        data[4] = fOnTime/time; // relative on time
+        data[5] = fRate/fCounter;
+        for (int i=0; i<40; i++)
+            data[i+6] = fRateBoard[i]/fCounter;
+        for (int i=0; i<160; i++)
+            data[i+46] = fRatePatch[i]/fCounter;
+
+        ostringstream sout1, sout2, sout3;
+
+        sout1 << th << " " << data[5];
+        for (int i=0; i<200; i++)
+            sout2 << " " << data[i+6];
+        sout3 << " " << data[3] << " " << data[4];
+
+        Info(sout1.str());
+
+        //ofstream fout("ratescan.txt", ios::app);
+        //fout << sout1.str() << sout2.str() << sout3.str() << endl;
+
+        fDimData.setQuality(fCommand=="FTM_CONTROL/SET_THRESHOLD");
+        fDimData.setData(data, sizeof(data));
+        fDimData.Update();
+
+        fThreshold += fThresholdStep;
+
+        if (fCounter>=fCounterMax)
+        {
+            Message("Rate scan stopped due to timeout.");
+            //Dim::SendCommandNB("FTM_CONTROL/RESET_CONFIGURE");
+            return RateScan::State::kConnected;
+        }
+
+        if (fThreshold>fThresholdMax)
+        {
+            Message("Rate scan finished.");
+            //Dim::SendCommandNB("FTM_CONTROL/RESET_CONFIGURE");
+            return RateScan::State::kConnected;
+        }
+
+        // Does this need to be shifted upwards?
+        if (fCounter>1 && fThresholdStepDyn>0)
+        {
+            //const double scale = fCounter/reference/fResolution/fResolution;
+            //const double step  = floor(scale*fThresholdStepDyn);
+
+            fThresholdStep = fCounter*fThresholdStepDyn;
+        }
+
+        //fCounter = -2;  // FIXME: In principle one missed report is enough
+        fCounter = -1;
+
+        const int32_t cmd[2] = { -1, fThreshold };
+        Dim::SendCommandNB(fCommand.c_str(), cmd);
+
+        return GetCurrentState();
+    }
+
+    int Print() const
+    {
+        Out() << fDim << endl;
+        Out() << fDimFTM << endl;
+
+        return GetCurrentState();
+    }
+
+    int StartRateScan(const EventImp &evt, const string &command)
+    {
+        //FIXME: check at least that size>12
+        //if (!CheckEventSize(evt, 12))
+        //    return kSM_FatalError;
+
+        const string fType = evt.Ptr<char>(12);
+
+        auto it = fTypes.find(fType);
+        if (it==fTypes.end())
+        {
+            Info("StartRateScan - Type '"+fType+"' not found... trying 'default'.");
+
+            it = fTypes.find("default");
+            if (it==fTypes.end())
+            {
+                Error("StartRateScan - Type 'default' not found.");
+                return GetCurrentState();
+            }
+        }
+
+        fCounterMax = it->second.fCounterMax;
+        fResolution = it->second.fResolution;
+
+        fCommand = "FTM_CONTROL/"+command;
+
+        const int32_t step = evt.Get<int32_t>(8);
+
+        fThresholdMin  = evt.Get<uint32_t>();
+        fThresholdMax  = evt.Get<uint32_t>(4);
+        fThresholdStep = abs(step);
+
+        fThresholdStepDyn = step<0 ? -step : 0;
+
+        UpdateProc();
+
+        //Dim::SendCommand("FAD_CONTROL/SET_FILE_FORMAT", uint16_t(0));
+        Dim::SendCommandNB("FTM_CONTROL/CONFIGURE", string("ratescan"));
+
+        Message("Configuration for ratescan started.");
+
+        return RateScan::State::kConfiguring;
+    }
+
+    int HandleFtmStateChange(/*const EventImp &evt*/)
+    {
+        // ftmctrl connected to FTM
+        if (GetCurrentState()!=RateScan::State::kConfiguring)
+            return GetCurrentState();
+
+        if (fDimFTM.state()!=FTM::State::kConfigured1)
+            return GetCurrentState();
+
+        const int32_t data[2] = { -1, fThresholdMin };
+
+        Dim::SendCommandNB("FTM_CONTROL/RESET_CONFIGURE");
+        Dim::SendCommandNB(fCommand, data);
+
+        fThreshold = fThresholdMin;
+        fCounter = -2;
+
+        const Time now;
+        fStartTime = trunc(now.UnixTime());
+
+        /*
+        ofstream fout("ratescan.txt", ios::app);
+        fout << "# ----- " << now << " (" << fStartTime << ") -----\n";
+        fout << "# Command: " << fCommand << '\n';
+        fout << "# Reference: ";
+        switch (fReference)
+        {
+        case kCamera: fout << "Camera"; break;
+        case kBoard:  fout << "Board #" << fReferenceIdx; break;
+        case kPatch:  fout << "Patch #" << fReferenceIdx; break;
+        }
+        fout << '\n';
+        fout << "# -----" << endl;
+        */
+
+        ostringstream msg;
+        msg << "Rate scan " << now << "(" << fStartTime << ") from " << fThresholdMin << " to ";
+        msg << fThresholdMax << " in steps of " << fThresholdStep;
+        msg << " with a resolution of " << fResolution ;
+        msg << " and max-wait " << fCounterMax  ;
+        msg << " started.";
+        Message(msg);
+
+        if (!fAutoPause)
+            return RateScan::State::kInProgress;
+
+        fAutoPause = false;
+
+        return RateScan::State::kPaused;
+    }
+
+    int StopRateScan()
+    {
+        if (GetCurrentState()<RateScan::State::kConfiguring)
+            return GetCurrentState();
+
+        Dim::SendCommandNB("FTM_CONTROL/RESET_CONFIGURE");
+        Message("Rate scan manually stopped.");
+
+        return RateScan::State::kConnected;
+    }
+
+    int SetReferenceCamera()
+    {
+        fReference = kCamera;
+
+        return GetCurrentState();
+    }
+
+    int SetReferenceBoard(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt, 4))
+            return kSM_FatalError;
+
+        if (evt.GetUInt()>39)
+        {
+            Error("SetReferenceBoard - Board index out of range [0;39]");
+            return GetCurrentState();
+        }
+
+        fReference    = kBoard;
+        fReferenceIdx = evt.GetUInt();
+
+        return GetCurrentState();
+    }
+
+    int SetReferencePatch(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt, 4))
+            return kSM_FatalError;
+
+        if (evt.GetUInt()>159)
+        {
+            Error("SetReferencePatch - Patch index out of range [0;159]");
+            return GetCurrentState();
+        }
+
+        fReference    = kPatch;
+        fReferenceIdx = evt.GetUInt();
+
+        return GetCurrentState();
+    }
+
+    int ChangeStepSize(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt, 4))
+            return kSM_FatalError;
+
+        fThresholdStep = evt.Get<uint32_t>();
+
+        ostringstream msg;
+        msg << "New step size " << fThresholdStep;
+        Info(msg);
+
+        UpdateProc();
+
+        return GetCurrentState();
+    }
+
+    int ChangeMaximum(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt, 4))
+            return kSM_FatalError;
+
+        fThresholdMax = evt.Get<uint32_t>();
+
+        return GetCurrentState();
+    }
+
+    int TriggerAutoPause()
+    {
+        fAutoPause = true;
+        return GetCurrentState();
+    }
+
+    int Pause()
+    {
+        return RateScan::State::kPaused;
+    }
+
+    int Resume()
+    {
+        return RateScan::State::kInProgress;
+    }
+
+    int Execute()
+    {
+        if (!fDim.online())
+            return RateScan::State::kDimNetworkNA;
+
+        // All subsystems are not connected
+        if (fDimFTM.state()<FTM::State::kConnected)
+            return RateScan::State::kDisconnected;
+
+        // ftmctrl connected to FTM
+        if (GetCurrentState()<=RateScan::State::kDisconnected)
+            return RateScan::State::kConnected;
+
+        return GetCurrentState();
+    }
+
+public:
+    StateMachineRateScan(ostream &out=cout) : StateMachineDim(out, "RATE_SCAN"),
+        fDimFTM("FTM_CONTROL"),
+        fDimData("RATE_SCAN/DATA", "X:1;I:1;F:1;F:1;F:1;F:40;F:160",
+                 "|Id[s]:Start time used to identify measurement (UnixTime)"
+                 "|Threshold[dac]:Threshold in DAC counts"
+                 "|ElapsedTime[s]:Real elapsed time"
+                 "|RelOnTime[ratio]:Relative on time"
+                 "|TriggerRate[Hz]:Camera trigger rate"
+                 "|BoardRate[Hz]:Board trigger rates"
+                 "|PatchRate[Hz]:Patch trigger rates"),
+        fDimProc("RATE_SCAN/PROCESS_DATA", "I:1;I:1;I:1",
+                 "Rate scan process data"
+                 "|min[DAC]:Value at which scan was started"
+                 "|max[DAC]:Value at which scan will end"
+                 "|step[DAC]:Step size for scan"),
+        fAutoPause(false), fThreshold(-1), fReference(kCamera), fReferenceIdx(0)
+    {
+        // ba::io_service::work is a kind of keep_alive for the loop.
+        // It prevents the io_service to go to stopped state, which
+        // would prevent any consecutive calls to run()
+        // or poll() to do nothing. reset() could also revoke to the
+        // previous state but this might introduce some overhead of
+        // deletion and creation of threads and more.
+
+        fDim.Subscribe(*this);
+        fDimFTM.Subscribe(*this);
+        fDimFTM.SetCallback(bind(&StateMachineRateScan::HandleFtmStateChange, this));
+
+        Subscribe("FTM_CONTROL/TRIGGER_RATES")
+            (bind(&StateMachineRateScan::HandleTriggerRates, this, placeholders::_1));
+
+        // State names
+        AddStateName(RateScan::State::kDimNetworkNA, "DimNetworkNotAvailable",
+                     "The Dim DNS is not reachable.");
+
+        AddStateName(RateScan::State::kDisconnected, "Disconnected",
+                     "The Dim DNS is reachable, but the required subsystems are not available.");
+
+        AddStateName(RateScan::State::kConnected, "Connected",
+                     "All needed subsystems are connected to their hardware, no action is performed.");
+
+        AddStateName(RateScan::State::kConfiguring, "Configuring",
+                     "Waiting for FTM to get 'Configured'.");
+
+        AddStateName(RateScan::State::kInProgress, "InProgress",
+                     "Rate scan in progress.");
+
+        AddStateName(RateScan::State::kPaused, "Paused",
+                     "Rate scan in progress but paused.");
+
+        AddEvent("START_THRESHOLD_SCAN", "I:3;C", RateScan::State::kConnected)
+            (bind(&StateMachineRateScan::StartRateScan, this, placeholders::_1, "SET_THRESHOLD"))
+            ("Start rate scan for the threshold in the defined range"
+             "|min[int]:Start value in DAC counts"
+             "|max[int]:Limiting value in DAC counts"
+             "|step[int]:Single step in DAC counts"
+             "|type[text]:Ratescan type");
+
+        AddEvent("START_N_OUT_OF_4_SCAN", "I:3", RateScan::State::kConnected)
+            (bind(&StateMachineRateScan::StartRateScan, this, placeholders::_1, "SET_N_OUT_OF_4"))
+            ("Start rate scan for N-out-of-4 in the defined range"
+             "|min[int]:Start value in DAC counts"
+             "|max[int]:Limiting value in DAC counts"
+             "|step[int]:Single step in DAC counts");
+
+        AddEvent("CHANGE_STEP_SIZE", "I:1", RateScan::State::kPaused, RateScan::State::kInProgress)
+            (bind(&StateMachineRateScan::ChangeStepSize, this, placeholders::_1))
+            ("Change the step size during a ratescan in progress"
+             "|step[int]:Single step in DAC counts");
+
+        AddEvent("CHANGE_MAXIMUM", "I:1", RateScan::State::kPaused, RateScan::State::kInProgress)
+            (bind(&StateMachineRateScan::ChangeMaximum, this, placeholders::_1))
+            ("Change the maximum limit during a ratescan in progress"
+             "|max[int]:Limiting value in DAC counts");
+
+        AddEvent("STOP", RateScan::State::kConfiguring, RateScan::State::kPaused, RateScan::State::kInProgress)
+            (bind(&StateMachineRateScan::StopRateScan, this))
+            ("Stop a ratescan in progress");
+
+        AddEvent("SET_REFERENCE_CAMERA", RateScan::State::kDimNetworkNA, RateScan::State::kDisconnected, RateScan::State::kConnected)
+            (bind(&StateMachineRateScan::SetReferenceCamera, this))
+            ("Use the camera trigger rate as reference for the reolution");
+        AddEvent("SET_REFERENCE_BOARD", "I:1", RateScan::State::kDimNetworkNA, RateScan::State::kDisconnected, RateScan::State::kConnected)
+            (bind(&StateMachineRateScan::SetReferenceBoard, this, placeholders::_1))
+            ("Use the given board trigger-rate as reference for the reolution"
+             "|board[idx]:Index of the board (4*crate+board)");
+        AddEvent("SET_REFERENCE_PATCH", "I:1", RateScan::State::kDimNetworkNA, RateScan::State::kDisconnected, RateScan::State::kConnected)
+            (bind(&StateMachineRateScan::SetReferencePatch, this, placeholders::_1))
+            ("Use the given patch trigger-rate as reference for the reolution"
+             "|patch[idx]:Index of the patch (360*crate+36*board+patch)");
+
+        AddEvent("TRIGGER_AUTO_PAUSE", RateScan::State::kDimNetworkNA, RateScan::State::kDisconnected, RateScan::State::kConnected)
+            (bind(&StateMachineRateScan::TriggerAutoPause, this))
+            ("Enable an automatic pause for the next ratescan, after it got configured.");
+
+        AddEvent("PAUSE", RateScan::State::kInProgress)
+            (bind(&StateMachineRateScan::Pause, this))
+            ("Pause a ratescan in progress");
+        AddEvent("RESUME", RateScan::State::kPaused)
+            (bind(&StateMachineRateScan::Resume, this))
+            ("Resume a paused ratescan");
+
+        AddEvent("PRINT")
+            (bind(&StateMachineRateScan::Print, this))
+            ("");
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        // ---------- Setup run types ---------
+        const vector<string> types = conf.Vec<string>("type");
+        if (types.empty())
+            Warn("No types defined.");
+        else
+            Message("Defining types");
+
+        for (auto it=types.begin(); it!=types.end(); it++)
+        {
+            Message(" -> "+ *it);
+
+            if (fTypes.count(*it)>0)
+            {
+                Error("Type "+*it+" defined twice.");
+                return 1;
+            }
+
+            config &c = fTypes[*it];
+            if (conf.HasDef("max-wait.", *it))
+                c.fCounterMax = conf.GetDef<int>("max-wait.", *it);
+            else
+            {
+                Error("Neither max-wait.default nor max-wait."+*it+" found.");
+                return 2;
+            }
+            if (conf.HasDef("resolution.", *it))
+                c.fResolution = conf.GetDef<double>("resolution.", *it);
+            else
+            {
+                Error("Neither resolution.default nor resolution."+*it+" found.");
+                return 2;
+            }
+        }
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineRateScan>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description type("Ratescan type configuration");
+    type.add_options()
+        ("type",           vars<string>(),  "Name of ratescan types (replace the * in the following configuration by the case-sensitive names defined here)")
+        ("max-wait.*",   var<int>(), "The maximum number of seconds to wait to get the anticipated resolution for a point.")
+        ("resolution.*", var<double>() , "The minimum resolution required for a single data point.")
+    ;
+
+    conf.AddOptions(type);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The ratescan program is a tool for automation of rate scans.\n"
+        "\n"
+        "Usage: ratescan [-c type] [OPTIONS]\n"
+        "  or:  ratescan [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineRateScan>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+//            if (conf.Get<bool>("no-dim"))
+//                return RunShell<LocalStream, StateMachine, ConnectionFSC>(conf);
+//            else
+                return RunShell<LocalStream>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+/*        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionFSC>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionFSC>(conf);
+        }
+        else
+*/        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell>(conf);
+            else
+                return RunShell<LocalConsole>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/testFACT++branch/src/scheduler.cc
===================================================================
--- branches/testFACT++branch/src/scheduler.cc	(revision 18277)
+++ branches/testFACT++branch/src/scheduler.cc	(revision 18277)
@@ -0,0 +1,834 @@
+#include <vector>
+
+#include <boost/regex.hpp>
+
+#include <mysql++/mysql++.h>
+
+#include "Dim.h"
+#include "Time.h"
+#include "Event.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "StateMachineDim.h"
+
+#include "tools.h"
+
+using namespace std;
+using namespace boost::gregorian;
+using namespace boost::posix_time;
+
+// things to be done/checked/changed
+// * --schedule-database should be required
+// * move definition of config parameters to AutoScheduler class
+//   + read in from config
+// * in some (all?) loops iterator over vector can be replaced by counter
+
+// other things to do
+//
+// define what to transmit as info/warn/error
+
+
+// config parameters:
+//   mintime
+//   runtimec
+//   runtimep
+//   repostime
+
+// missing:
+//
+// calculate time for std obs
+// calculate sun set/rise
+//
+// return errors and other otherput from sendcommand to webinterface
+
+// in which cases should the scheduler go in error state?
+//   when db is unavailable
+// does one also need a 'set scheduler to ready' function then?
+// do we want any error state at all?
+
+
+// =========================================================================
+
+template <class T>
+class AutoScheduler : public T
+{
+    bool fNextIsPreview;
+public:
+    enum states_t
+    {
+        kSM_Scheduling=1,
+        kSM_Comitting,
+    };
+
+    struct ObservationParameters
+    {
+        int obskey;
+        int obsmode;
+        int obstype;
+        int splitflag;
+        int telsetup;
+        float fluxweight;
+        float slope;
+        float flux;
+        float ra;
+        float dec;
+        ptime start;
+        ptime stop;
+        time_duration duration_db;
+        string sourcename;
+        int sourcekey;
+    };
+
+    struct FixedObs
+    {
+        int obskey;
+        int sourcekey;
+        string sourcename;
+        int obsmode;
+        int obstype;
+        int telsetup;
+        float ra;
+        float dec;
+        ptime start;
+        ptime stop;
+    };
+
+    // will need other types of obs
+    // FloatingObs (duration < stop-start + splitflag no)
+    // FloatingSplittedObs (duration < stop-start + splitflag yes)
+    // FixedSlot, i.e. just block a time slot
+
+    struct StdObs
+    {
+        int obskey_std;
+        int sourcekey_std;
+        string sourcename_std;
+        int obsmode_std;
+        int obstype_std;
+        int telsetup_std;
+        float fluxweight_std;
+        float slope_std;
+        float flux_std;
+        float ra_std;
+        float dec_std;
+        ptime obsstdstart;
+        ptime obsstdstop;
+    };
+
+    struct ScheduledObs
+    {
+        int obskey_obs;
+        int sourcekey_obs;
+        string sourcename_obs;
+        int obsmode_obs;
+        int obstype_obs;
+        int telsetup_obs;
+        ptime obsstart;
+        ptime obsstop;
+    };
+
+    struct ScheduledRun
+    {
+        //int runnumber; // to be seen, if runnumber is needed
+        int obskey_run;
+        int runtype;
+        int sourcekey_run;
+        string sourcename_run;//for convenience
+        int obsmode_run;
+        int obstype_run;
+        int telsetup_run;
+        ptime runstart;
+        ptime runstop;
+    };
+
+    string fDatabase;
+    string fDBName;
+    int fDurationCalRun; //unit: minutes
+    int fDurationPedRun; //unit: minutes
+    int fDurationRepos; //unit: minutes
+
+    int Schedule()
+    {
+        bool error = false;
+
+        time_duration runtimec(0, fDurationCalRun, 0);
+        time_duration runtimep(0, fDurationPedRun, 0);
+        time_duration repostime(0, fDurationRepos, 0);
+        time_duration mintime(1, 0, 0);
+
+        const ptime startsched(microsec_clock::local_time());
+        const ptime stopsched=startsched+years(1);
+
+        ostringstream str;
+        str << "Scheduling for the period from " << startsched << " to " << stopsched;
+        T::Message(str);
+
+        static const boost::regex expr("([[:word:].-]+):(.+)@([[:word:].-]+)(:([[:digit:]]+))?/([[:word:].-]+)");
+        // 2: user
+        // 4: pass
+        // 5: server
+        // 7: port
+        // 9: db
+
+        boost::smatch what;
+        if (!boost::regex_match(fDatabase, what, expr, boost::match_extra))
+        {
+            ostringstream msg;
+            msg << "Regex to parse database '" << fDatabase << "' empty.";
+            T::Error(msg);
+            return T::kSM_Error;
+        }
+
+        if (what.size()!=7)
+        {
+            ostringstream msg;
+            msg << "Parsing database name failed: '" << fDatabase << "'";
+            T::Error(msg);
+            return T::kSM_Error;
+        }
+
+        const string user   = what[1];
+        const string passwd = what[2];
+        const string server = what[3];
+        const string db     = fDBName.empty() ? what[6] : fDBName;
+        const int    port   = stoi(what[5]);
+
+        ostringstream dbnamemsg;
+        dbnamemsg << "Scheduling started -> using database " << db << ".";
+        T::Message(dbnamemsg);
+
+        str.str("");
+        str << "Connecting to '";
+        if (!user.empty())
+            str << user << "@";
+        str << server;
+        if (port)
+            str << ":" << port;
+        if (!db.empty())
+            str << "/" << db;
+        str << "'";
+        T::Info(str);
+
+        mysqlpp::Connection conn(db.c_str(), server.c_str(), user.c_str(), passwd.c_str(), port);
+        /* throws exceptions
+        if (!conn.connected())
+        {
+            ostringstream msg;
+            msg << "MySQL connection error: " << conn.error();
+            T::Error(msg);
+            return T::kSM_Error;
+        }*/
+
+        // get observation parameters from DB
+        // maybe order by priority?
+        const mysqlpp::StoreQueryResult res =
+            conn.query("SELECT fObservationKEY, fStartTime, fStopTime, fDuration, fSourceName, fSourceKEY, fSplitFlag, fFluxWeight, fSlope, fFlux, fRightAscension, fDeclination, fObservationModeKEY, fObservationTypeKEY , fTelescopeSetupKEY FROM ObservationParameters LEFT JOIN Source USING(fSourceKEY) ORDER BY fStartTime").store();
+        // FIXME: Maybe we have to check for a successfull
+        //        query but an empty result
+        /* thorws exceptions?
+        if (!res)
+        {
+            ostringstream msg;
+            msg << "MySQL query failed: " << query.error();
+            T::Error(msg);
+            return T::kSM_Error;
+        }*/
+
+        str.str("");
+        str << "Found " << res.num_rows() << " Observation Parameter sets.";
+        T::Debug(str);
+
+        ObservationParameters olist[res.num_rows()];
+        vector<FixedObs>     obsfixedlist;
+        vector<StdObs>       obsstdlist;
+        vector<ScheduledObs> obslist;
+        vector<ScheduledRun> runlist;
+
+        // loop over observation parameters from DB
+        // fill these parameters into FixedObs and StdObs
+        int counter=0;
+        int counter2=0;
+        int counter3=0;
+        cout << "Obs: <obskey> <sourcename>(<sourcekey>, <fluxweight>) from <starttime> to <stoptime>" << endl;
+        for (vector<mysqlpp::Row>::const_iterator v=res.begin(); v<res.end(); v++)
+        {
+            cout << "  Obs: " << (*v)[0].c_str() << " " << (*v)[4].c_str() << "(" << (*v)[5].c_str() << flush;
+            cout << ", " << (*v)[7].c_str() << ")" << flush;
+            cout << " from " << (*v)[1].c_str() << " to " << (*v)[2].c_str() << endl;
+
+            //0: obskey
+            //1: startime
+            //2: stoptime
+            //3: duration
+            //4: sourcename
+            //5: sourcekey
+            //6: splitflag
+            //7: fluxweight
+            //8: slope
+            //9: flux
+            //10: ra
+            //11: dec
+            //12: obsmode
+            //13: obstype
+            //14: telsetup
+            stringstream t1;
+            stringstream t2;
+            stringstream t3;
+            t1 << (*v)[1].c_str();
+            t2 << (*v)[2].c_str();
+            t3 << (*v)[3].c_str();
+
+            //boost::posix_time::time_duration mintime(0,conf.Get<int>("mintime"), 0);
+            t1 >> Time::sql >> olist[counter].start;
+            t2 >> Time::sql >> olist[counter].stop;
+            t3 >> olist[counter].duration_db;
+            const time_period period(olist[counter].start, olist[counter].stop);
+
+            olist[counter].sourcename=(*v)[4].c_str();
+            olist[counter].sourcekey=(*v)[5];
+
+            if (!(*v)[0].is_null())
+                olist[counter].obskey=(*v)[0];
+            if (!(*v)[12].is_null())
+                olist[counter].obsmode=(*v)[12];
+            if (!(*v)[13].is_null())
+                olist[counter].obstype=(*v)[13];
+            if (!(*v)[14].is_null())
+                olist[counter].telsetup=(*v)[14];
+            if (!(*v)[6].is_null())
+                olist[counter].splitflag=(*v)[6];
+            if (!(*v)[7].is_null())
+                olist[counter].fluxweight=(*v)[7];
+            else
+                olist[counter].fluxweight=0;//set fluxweight to 0 for check below
+            if (!(*v)[8].is_null())
+                olist[counter].slope=(*v)[8];
+            if (!(*v)[9].is_null())
+                olist[counter].flux=(*v)[9];
+            if (!(*v)[10].is_null())
+                olist[counter].ra=(*v)[10];
+            if (!(*v)[11].is_null())
+                olist[counter].dec=(*v)[11];
+
+            // time_duration cannot be used, as only up to 99 hours are handeled
+            // const time_duration duration = period.length();
+
+            /*
+            if (olist[counter].stoptime < olist[counter].starttime+mintime)
+                cout << "  ====> WARN: Observation too short. " << endl;
+
+            if (olist[counter].starttime.is_not_a_date_time())
+                cout << "  WARN: starttime not a date_time. " << endl;
+            else
+                cout << "  start:   " << Time::sql << olist[counter].starttime << endl;
+            if (olist[counter].stoptime.is_not_a_date_time())
+                cout << "  WARN: stoptime not a date_time. " << endl;
+            else
+                cout << "  stop:   " << Time::sql << olist[counter].stoptime << endl;
+            if (!(olist[counter].starttime.is_not_a_date_time() || olist[counter].stoptime.is_not_a_date_time()))
+                cout << "  diff:   " << period << endl;
+            if (olist[counter].stoptime < olist[counter].starttime)
+                cout << "  ====> WARN: stop time (" << olist[counter].stoptime << ") < start time (" << olist[counter].starttime << "). " << endl;
+            cout << "diff:   " << duration << flush;
+            cout << "dur_db:   " << olist[counter].duration_db << endl;
+            */
+
+            // always filled: obstype
+            //
+            // fixed observations:
+            //   filled: starttime, stoptime
+            //   not filled: fluxweight
+            //   maybe filled: obsmode, telsetup, source (not filled for FixedSlotObs)
+            //   maybe filled: duration (filled for FloatingObs and FloatingSplittedObs)
+            //   maybe filled: splitflag (filled for FloatingSplittedObs)
+            //
+            // std observations:
+            //   filled: fluxweight, telsetup, obsmore, source
+            //   not filled: starttime, stoptime, duration
+
+            // fixed observations
+            if (!(olist[counter].stop.is_not_a_date_time()
+                  && olist[counter].start.is_not_a_date_time())
+                && olist[counter].fluxweight==0
+               )
+            {
+                obsfixedlist.resize(counter2+1);
+                obsfixedlist[counter2].start=olist[counter].start;
+                obsfixedlist[counter2].stop=olist[counter].stop;
+                obsfixedlist[counter2].sourcename=olist[counter].sourcename;
+                obsfixedlist[counter2].obskey=olist[counter].obskey;
+                obsfixedlist[counter2].obstype=olist[counter].obstype;
+                obsfixedlist[counter2].obsmode=olist[counter].obsmode;
+                obsfixedlist[counter2].telsetup=olist[counter].telsetup;
+                obsfixedlist[counter2].sourcekey=olist[counter].sourcekey;
+                obsfixedlist[counter2].ra=olist[counter].ra;
+                obsfixedlist[counter2].dec=olist[counter].dec;
+                counter2++;
+            }
+
+            // std obs
+            if (olist[counter].stop.is_not_a_date_time()
+                  && olist[counter].start.is_not_a_date_time()
+                && olist[counter].fluxweight>0
+               )
+            {
+                obsstdlist.resize(counter3+1);
+                obsstdlist[counter3].sourcename_std=olist[counter].sourcename;
+                obsstdlist[counter3].obskey_std=olist[counter].obskey;
+                obsstdlist[counter3].obsmode_std=olist[counter].obsmode;
+                obsstdlist[counter3].obstype_std=olist[counter].obstype;
+                obsstdlist[counter3].telsetup_std=olist[counter].telsetup;
+                obsstdlist[counter3].sourcekey_std=olist[counter].sourcekey;
+                obsstdlist[counter3].fluxweight_std=olist[counter].fluxweight;
+                obsstdlist[counter3].flux_std=olist[counter].flux;
+                obsstdlist[counter3].slope_std=olist[counter].slope;
+                obsstdlist[counter3].ra_std=olist[counter].ra;
+                obsstdlist[counter3].dec_std=olist[counter].dec;
+                counter3++;
+            }
+
+            counter++;
+        }
+        ostringstream fixedobsmsg;
+        fixedobsmsg << obsfixedlist.size() << " fixed observations found. ";
+        T::Message(fixedobsmsg);
+        cout << obsfixedlist.size() << " fixed observations found. " << endl;
+
+        ostringstream stdobsmsg;
+        stdobsmsg << obsstdlist.size() << " standard observations found. ";
+        T::Message(stdobsmsg);
+        cout << obsstdlist.size() << " standard observations found. " << endl;
+
+        // loop to add the fixed observations to the ScheduledObs list
+        // performed checks:
+        //   * overlap of fixed observations: the overlap is split half-half
+        //   * check for scheduling time range: only take into account fixed obs within the range
+        // missing checks and evaluation
+        //   * check for mintime (pb with overlap checks)
+        //   * check for sun
+        //   * check for moon
+        counter2=0;
+        int skipcounter=0;
+        ptime finalobsfixedstart;
+        ptime finalobsfixedstop;
+        time_duration delta0(0,0,0);
+
+        cout << "Fixed Observations: " << endl;
+        for (struct vector<FixedObs>::const_iterator vobs=obsfixedlist.begin(); vobs!=obsfixedlist.end(); vobs++)
+        {
+            if (obsfixedlist[counter2].start < startsched
+                || obsfixedlist[counter2].stop > stopsched)
+            {
+                ostringstream skipfixedobsmsg;
+                skipfixedobsmsg << "Skip 1 fixed observation (obskey ";
+                skipfixedobsmsg << obsfixedlist[counter2].obskey;
+                skipfixedobsmsg << ") as it is out of scheduling time range.";
+                T::Message(skipfixedobsmsg);
+
+                counter2++;
+                skipcounter++;
+                continue;
+            }
+            counter3=0;
+
+            time_duration delta1=delta0;
+            time_duration delta2=delta0;
+
+            finalobsfixedstart=obsfixedlist[counter2].start;
+            finalobsfixedstop=obsfixedlist[counter2].stop;
+
+            for (struct vector<FixedObs>::const_iterator vobs5=obsfixedlist.begin(); vobs5!=obsfixedlist.end(); vobs5++)
+            {
+                if (vobs5->start < obsfixedlist[counter2].stop
+                    && obsfixedlist[counter2].stop <= vobs5->stop
+                    && obsfixedlist[counter2].start <= vobs5->start
+                    && counter2!=counter3)
+                {
+                    delta1=(obsfixedlist[counter2].stop-vobs5->start)/2;
+                    finalobsfixedstop=obsfixedlist[counter2].stop-delta1;
+
+                    ostringstream warndelta1;
+                    warndelta1 << "Overlap between two fixed observations (";
+                    warndelta1 << obsfixedlist[counter2].obskey << " ";
+                    warndelta1 << vobs5->obskey << "). The stoptime of ";
+                    warndelta1 << obsfixedlist[counter2].obskey << " has been changed.";
+                    T::Warn(warndelta1);
+                }
+                if (vobs5->start <= obsfixedlist[counter2].start
+                    && obsfixedlist[counter2].start < vobs5->stop
+                    && obsfixedlist[counter2].stop >= vobs5->stop
+                    && counter2!=counter3)
+                {
+                    delta2=(vobs5->stop-obsfixedlist[counter2].start)/2;
+                    finalobsfixedstart=obsfixedlist[counter2].start+delta2;
+
+                    ostringstream warndelta2;
+                    warndelta2 << "Overlap between two fixed observations (";
+                    warndelta2 << obsfixedlist[counter2].obskey << " ";
+                    warndelta2 << vobs5->obskey << "). The starttime of ";
+                    warndelta2 << obsfixedlist[counter2].obskey << " has been changed.";
+
+                    T::Warn(warndelta2);
+                }
+                counter3++;
+            }
+
+            const int num=counter2-skipcounter;
+            obslist.resize(num+1);
+            obslist[num].obsstart=finalobsfixedstart;
+            obslist[num].obsstop=finalobsfixedstop;
+            obslist[num].sourcename_obs=obsfixedlist[counter2].sourcename;
+            obslist[num].obsmode_obs=obsfixedlist[counter2].obsmode;
+            obslist[num].obstype_obs=obsfixedlist[counter2].obstype;
+            obslist[num].telsetup_obs=obsfixedlist[counter2].telsetup;
+            obslist[num].sourcekey_obs=obsfixedlist[counter2].sourcekey;
+            obslist[num].obskey_obs=obsfixedlist[counter2].obskey;
+            counter2++;
+
+            cout << "  " << vobs->sourcename <<  " " << vobs->start;
+            cout << " - " << vobs->stop << endl;
+        }
+        ostringstream obsmsg;
+        obsmsg << "Added " << obslist.size() << " fixed observations to ScheduledObs. ";
+        T::Message(obsmsg);
+        cout << "Added " << obslist.size() << " fixed observations to ScheduledObs. " << endl;
+
+        for (int i=0; i<(int)obsstdlist.size(); i++)
+        {
+            for (int j=0; j<(int)obsstdlist.size(); j++)
+            {
+                if (obsstdlist[i].sourcekey_std == obsstdlist[j].sourcekey_std && i!=j)
+                {
+                    cout << "One double sourcekey in std observations: " << obsstdlist[j].sourcekey_std << endl;
+                    ostringstream errdoublestd;
+                    errdoublestd << "One double sourcekey in std observations: " << obsstdlist[j].sourcekey_std << " (" << obsstdlist[j].sourcename_std << ").";
+                    T::Error(errdoublestd);
+                    T::Message("Scheduling stopped.");
+                    return error ? T::kSM_Error : T::kSM_Ready;
+                }
+            }
+        }
+
+        // loop over nights
+        //   calculate sunset and sunrise
+        //   check if there is already scheduled obs in that night
+        //
+
+        // in this loop the standard observations shall be
+        // checked, evaluated
+        // the observation times shall be calculated
+        // and the observations added to the ScheduledObs list
+        cout << "Standard Observations: " << endl;
+        for (struct vector<StdObs>::const_iterator vobs2=obsstdlist.begin(); vobs2!=obsstdlist.end(); vobs2++)
+        {
+            cout << "  " << vobs2->sourcename_std << endl;
+        }
+
+        // in this loop the ScheduledRuns are filled
+        //  (only data runs -> no runtype yet)
+        // might be merged with next loop
+        counter2=0;
+        for (struct vector<ScheduledObs>::const_iterator vobs3=obslist.begin(); vobs3!=obslist.end(); vobs3++)
+        {
+            runlist.resize(counter2+1);
+            runlist[counter2].runstart=obslist[counter2].obsstart;
+            runlist[counter2].runstop=obslist[counter2].obsstop;
+            runlist[counter2].sourcename_run=obslist[counter2].sourcename_obs;
+            runlist[counter2].obsmode_run=obslist[counter2].obsmode_obs;
+            runlist[counter2].obstype_run=obslist[counter2].obstype_obs;
+            runlist[counter2].telsetup_run=obslist[counter2].telsetup_obs;
+            runlist[counter2].sourcekey_run=obslist[counter2].sourcekey_obs;
+            runlist[counter2].obskey_run=obslist[counter2].obskey_obs;
+            counter2++;
+            //cout << (*vobs3).sourcename_obs << endl;
+        }
+
+        //delete old scheduled runs from the DB
+        const mysqlpp::SimpleResult res0 =
+            conn.query("DELETE FROM ScheduledRun").execute();
+        // FIXME: Maybe we have to check for a successfull
+        //        query but an empty result
+        /* throws exceptions
+        if (!res0)
+        {
+            ostringstream msg;
+            msg << "MySQL query failed: " << query0.error();
+            T::Error(msg);
+            return T::kSM_Error;
+        }*/
+
+        // in this loop the ScheduledRuns are inserted to the DB
+        //   before the runtimes are adapted according to
+        //   duration of P-Run, C-Run and repositioning
+        counter3=0;
+        int insertcount=0;
+        ptime finalstarttime;
+        ptime finalstoptime;
+        for (struct vector<ScheduledRun>::const_iterator vobs4=runlist.begin(); vobs4!=runlist.end(); vobs4++)
+        {
+            for (int i=2; i<5; i++)
+            {
+                switch(i)
+                {
+                case 2:
+                    finalstarttime=runlist[counter3].runstart+repostime+runtimec+runtimep;
+                    finalstoptime=runlist[counter3].runstop;
+                    break;
+                case 3:
+                    finalstarttime=runlist[counter3].runstart+repostime;
+                    finalstoptime=runlist[counter3].runstart+runtimep+repostime;
+                    break;
+                case 4:
+                    finalstarttime=runlist[counter3].runstart+runtimep+repostime;
+                    finalstoptime=runlist[counter3].runstart+repostime+runtimep+runtimec;
+                    break;
+                }
+                ostringstream q1;
+                //cout << (*vobs4).sourcename_run << endl;
+                q1 << "INSERT ScheduledRun set fStartTime='" << Time::sql << finalstarttime;
+                q1 << "', fStopTime='" << Time::sql << finalstoptime;
+                q1 << "', fSourceKEY='" << (*vobs4).sourcekey_run;
+                q1 << "', fObservationKEY='" << (*vobs4).obskey_run;
+                q1 << "', fRunTypeKEY='" << i;
+                q1 << "', fTelescopeSetupKEY='" << (*vobs4).telsetup_run;
+                q1 << "', fObservationTypeKEY='" << (*vobs4).obstype_run;
+                q1 << "', fObservationModeKEY='" << (*vobs4).obsmode_run;
+                q1 << "'";
+
+                //cout << "executing query: " << q1.str() << endl;
+
+                const mysqlpp::SimpleResult res1 = conn.query(q1.str()).execute();
+                // FIXME: Maybe we have to check for a successfull
+                //        query but an empty result
+                /* throws exceptions
+                if (!res1)
+                {
+                    ostringstream msg;
+                    msg << "MySQL query failed: " << query1.error();
+                    T::Error(str);
+                    return T::kSM_Error;
+                }*/
+                insertcount++;
+            }
+            counter3++;
+        }
+        ostringstream insertmsg;
+        insertmsg << "Inserted " << insertcount << " runs into the DB.";
+        T::Message(insertmsg);
+        //usleep(3000000);
+        T::Message("Scheduling done.");
+
+        return error;
+    }
+
+    /*
+    // commit probably done by webinterface
+    int Commit()
+    {
+        ostringstream str;
+        str << "Comitting preview (id=" << fSessionId << ")";
+        T::Message(str);
+
+        usleep(3000000);
+        T::Message("Comitted.");
+
+        fSessionId = -1;
+
+        bool error = false;
+        return error ? T::kSM_Error : T::kSM_Ready;
+    }
+    */
+
+    AutoScheduler(ostream &out=cout) : T(out, "SCHEDULER"), fNextIsPreview(true), fDBName("")
+    {
+        AddStateName(kSM_Scheduling, "Scheduling", "Scheduling in progress.");
+
+        AddEvent(kSM_Scheduling, "SCHEDULE", "C", T::kSM_Ready)
+            ("FIXME FIXME FIXME (explanation for the command)"
+             "|database[string]:FIXME FIXME FIMXE (meaning and format)");
+
+        AddEvent(T::kSM_Ready, "RESET", T::kSM_Error)
+            ("Reset command to get out of the error state");
+
+        //AddEvent(kSM_Comitting,  "COMMIT",   T::kSM_Ready);
+
+        T::PrintListOfEvents();
+    }
+
+    int Execute()
+    {
+        switch (T::GetCurrentState())
+        {
+        case kSM_Scheduling:
+            try
+            {
+                return Schedule() ? T::kSM_Error : T::kSM_Ready;
+            }
+            catch (const mysqlpp::Exception &e)
+            {
+                T::Error(string("MySQL: ")+e.what());
+                return T::kSM_Error;
+            }
+
+            // This does an autmatic reset (FOR TESTING ONLY)
+        case T::kSM_Error:
+            return T::kSM_Ready;
+        }
+        return T::GetCurrentState();
+    }
+
+    int Transition(const Event &evt)
+    {
+        switch (evt.GetTargetState())
+        {
+        case kSM_Scheduling:
+            if (evt.GetSize()>0)
+                fDBName = evt.GetText();
+            break;
+        }
+
+        return evt.GetTargetState();
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fDatabase       = conf.Get<string>("schedule-database");
+        fDurationCalRun = conf.Get<int>("duration-cal-run");
+        fDurationPedRun = conf.Get<int>("duration-ped-run");
+        fDurationRepos  = conf.Get<int>("duration-repos");
+
+        if (!conf.Has("schedule"))
+            return -1;
+
+        fDBName = conf.Get<string>("schedule");
+        return Schedule();
+    }
+
+};
+
+
+// ------------------------------------------------------------------------
+#include "Main.h"
+
+template<class T, class S>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, AutoScheduler<S>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Scheduler options");
+    control.add_options()
+        ("no-dim",    po_switch(),    "Disable dim services")
+        ("schedule-database", var<string>()
+#if BOOST_VERSION >= 104200
+         ->required()
+#endif
+                                           ,  "Database link as in\n\tuser:password@server[:port]/database\nOverwrites options from the default configuration file.")
+        ("schedule",          var<string>(),  "")
+        ("mintime",           var<int>(),     "minimum observation time")
+        ("duration-cal-run",  var<int>()
+#if BOOST_VERSION >= 104200
+         ->required()
+#endif
+                                           ,     "duration of calibration run [min]")
+        ("duration-ped-run",  var<int>()
+#if BOOST_VERSION >= 104200
+         ->required()
+#endif
+                                           ,     "duration of pedestal run [min]")
+        ("duration-repos",    var<int>()
+#if BOOST_VERSION >= 104200
+         ->required()
+#endif
+                                           ,     "duration of repositioning [min]")
+        ;
+
+    po::positional_options_description p;
+    p.add("schedule", 1); // The first positional options
+
+    conf.AddOptions(control);
+    conf.SetArgumentPositions(p);
+}
+
+void PrintUsage()
+{
+    cout <<
+        "The scheduler... TEXT MISSING\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: scheduler [-c type] [OPTIONS] <schedule-database>\n"
+        "  or:  scheduler [OPTIONS] <schedule-database>\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    /* Additional help text which is printed after the configuration
+     options goes here */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    po::variables_map vm;
+    try
+    {
+        vm = conf.Parse(argc, argv);
+    }
+#if BOOST_VERSION > 104000
+    catch (po::multiple_occurrences &e)
+    {
+        cerr << "Program options invalid due to: " << e.what() << " of '" << e.get_option_name() << "'." << endl;
+        return -1;
+    }
+#endif
+    catch (exception& e)
+    {
+        cerr << "Program options invalid due to: " << e.what() << endl;
+        return -1;
+    }
+
+//    try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+            if (conf.Get<bool>("no-dim"))
+                return RunShell<LocalStream, StateMachine>(conf);
+            else
+                return RunShell<LocalStream, StateMachineDim>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine>(conf);
+        }
+        else
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim>(conf);
+        }
+    }
+/*    catch (std::exception& e)
+    {
+        std::cerr << "Exception: " << e.what() << "\n";
+    }*/
+
+    return 0;
+}
Index: branches/testFACT++branch/src/showlog.cc
===================================================================
--- branches/testFACT++branch/src/showlog.cc	(revision 18277)
+++ branches/testFACT++branch/src/showlog.cc	(revision 18277)
@@ -0,0 +1,203 @@
+#include <boost/regex.hpp>
+
+#include "Time.h"
+#include "tools.h"
+#include "WindowLog.h"
+#include "Configuration.h"
+
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Showlog");
+    control.add_options()
+        ("file,f",    vars<string>(), "File names of log-files to be read.")
+        ("begin,b",   var<string>(), "Start time to be displayed (e.g. 20:00:12)")
+        ("end,e",     var<string>(), "End time to be displayed (e.g. 21:00:13)")
+        ("verbose,v", var<int16_t>()->implicit_value(true)->default_value(8), "Verbosity level (0:only fatal errors, 8:everything)")
+        ("color,c",   po_switch(), "Process a file which already contains color codes")
+        ("strip,s",   po_switch(), "Strip color codes completely")
+        ;
+
+    po::positional_options_description p;
+    p.add("file", -1); // The first positional options
+
+    conf.AddOptions(control);
+    conf.SetArgumentPositions(p);
+}
+
+void PrintUsage()
+{
+    cout <<
+        "showlog - Log file converter\n"
+        "\n"
+        "This tool can be used to convert the log-files written by the\n"
+        "datalogger back to colored output, limit the displayed time\n"
+        "range and limit the displayed severity of the messages.\n"
+        "Note that this tool will not work by default on logs containing\n"
+        "already colored output as the logs directly written by the programs.\n"
+        "Use -c or --color to process color coded files.\n"
+        "\n"
+        "The default is to read from stdin if no filoename as given. If, as "
+        "a filename, just a number between 2000000 and 21000000 is given, "
+        "e.g. 20111016 a log with the name /fact/aux/2011/10/16/20111016.log "
+        "is read.\n"
+        "\n"
+        "Usage: showlog [-c] [-vN] [-b start] [-e end] [file1 ...]\n"
+        "  or:  showlog [-c] [-vN] [-b start] [-e end] YYYYMMDD\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    cout <<
+        "\n"
+        "Examples:\n"
+        " cat temperature.log | showlog -c -v2\n"
+        " showlog -c temperature.log -v2\n"
+        " cat 20130909.log | showlog -v2\n"
+        " showlog 20130909.log -v2\n"
+        "\n";
+    cout << endl;
+}
+
+
+void showlog(string fname, const Time &tbeg, const Time &tend, int16_t severity, bool color, bool strip)
+{
+    // Alternatives
+    // \x1B\[[0-9;]*[mK]
+    // \x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]
+    // \x1B\[([0-9]{1,3}((;[0-9]{1,3})*)?)?[m|K]
+    const boost::regex reg("\x1B\[([0-9]{1,3}(;[0-9]{1,3})?[a-zA-Z]");
+
+    const uint32_t night = atoi(fname.c_str());
+    if (night>20000000 && night<21000000 &&to_string(night)==fname)
+        fname = Tools::Form("/fact/aux/%04d/%02d/%02d/%d.log",
+                            night/10000, (night/100)%100, night%100, night);
+
+    if (!fname.empty())
+        cerr << "Reading " << fname << endl;
+
+    ifstream fin(fname.empty() ? "/dev/stdin" : fname.c_str());
+    if (!fin)
+        throw runtime_error(strerror(errno));
+
+    string buffer;
+
+    WindowLog log;
+
+    Time tprev;
+
+    while (getline(fin, buffer, '\n'))
+    {
+        if (color || strip)
+            buffer = boost::regex_replace(buffer, reg, "");
+
+        if (buffer.size()==0)
+            continue;
+
+        if (buffer.size()>18)
+        {
+            const string tm = buffer.substr(4, 15);
+
+            const Time t("1970-01-01 "+tm);
+
+            if (tbeg.IsValid() && !tend.IsValid() && t<tbeg)
+                continue;
+
+            if (tend.IsValid() && !tbeg.IsValid() && t>tend)
+                continue;
+
+            if (tbeg.IsValid() && tend.IsValid())
+            {
+                if (tend>tbeg)
+                {
+                    if (t<tbeg)
+                        continue;
+                    if (t>tend)
+                        continue;
+                }
+                else
+                {
+                    if (t>tbeg)
+                        continue;
+                    if (t<tend)
+                        continue;
+                }
+            }
+        }
+
+        if (buffer.size()>1 && !strip)
+        {
+            int16_t lvl = -1;
+            switch (buffer[1])
+            {
+            case ' ': lvl = 7; break; // kDebug
+            case '#': lvl = 6; break; // kComment
+            case '-': lvl = 5; break; // kMessage
+            case '>': lvl = 4; break;
+            case 'I': lvl = 3; break; // kInfo
+            case 'W': lvl = 2; break; // kWarn
+            case 'E': lvl = 1; break; // kError/kAlarm
+            case '!': lvl = 0; break; // kFatal
+            }
+
+            if (lvl>severity)
+                continue;
+
+            switch (buffer[1])
+            {
+            case ' ': log << kBlue;          break; // kDebug
+            case '#': log << kDefault;       break; // kComment
+            case '-': log << kDefault;       break; // kMessage
+            case '>': log << kBold;          break;
+            case 'I': log << kGreen;         break; // kInfo
+            case 'W': log << kYellow;        break; // kWarn
+            case 'E': log << kRed;           break; // kError/kAlarm
+            case '!': log << kRed << kBlink; break; // kFatal
+            }
+        }
+
+        (strip?cout:log) << buffer << endl;
+    }
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    const vector<string> files = conf.Vec<string>("file");
+
+    Time tbeg(Time::none);
+    Time tend(Time::none);
+
+    if (conf.Has("begin"))
+    {
+        std::stringstream stream;
+        stream << "1970-01-01 " << conf.Get<string>("begin");
+        stream >> Time::iso >> tbeg;
+    }
+
+    if (conf.Has("end"))
+    {
+        std::stringstream stream;
+        stream << "1970-01-01 " << conf.Get<string>("end");
+        stream >> Time::iso >> tend;
+    }
+
+    if (files.size()==0)
+        showlog("", tbeg, tend, conf.Get<int16_t>("verbose"), conf.Get<bool>("color"), conf.Get<bool>("strip"));
+
+    for (auto it=files.begin(); it!=files.end(); it++)
+        showlog(*it, tbeg, tend, conf.Get<int16_t>("verbose"), conf.Get<bool>("color"), conf.Get<bool>("strip"));
+
+    return 0;
+}
Index: branches/testFACT++branch/src/simpleFitsDumper.cc
===================================================================
--- branches/testFACT++branch/src/simpleFitsDumper.cc	(revision 18277)
+++ branches/testFACT++branch/src/simpleFitsDumper.cc	(revision 18277)
@@ -0,0 +1,275 @@
+#include <map>
+#include <vector>
+#include <iostream>
+#include <fstream>
+
+#include <CCfits/CCfits>
+
+using namespace std;
+
+void writeValuesFromFits(vector<int>& offsets,ofstream& targetFile, unsigned char* fitsBuffer, vector<string> dumpList, map<string, CCfits::Column*>& colMap)
+{
+   targetFile.precision(20);
+   map<string, CCfits::Column*>::iterator it;
+   for (it=colMap.begin(); it != colMap.end(); it++)
+    {
+        bool found = false;
+        for (vector<string>::iterator jt=dumpList.begin(); jt != dumpList.end(); jt++)
+        {
+            if (it->first == *jt)
+            {
+                found = true;
+                break;
+            }
+        }
+        if (!found)
+            continue;
+       int offset = offsets[it->second->index()-1];
+       const char* charSrc = reinterpret_cast<char*>(&fitsBuffer[offset]);
+        unsigned char copyBuffer[30];//max size of a single variable
+        for (int width = 0; width<it->second->width(); width++)
+        {
+            switch (it->second->type())
+            {
+            case CCfits::Tbyte:
+                targetFile << *charSrc;
+                charSrc += sizeof(char);
+            break;
+            case CCfits::Tushort:
+                reverse_copy(charSrc, charSrc+sizeof(unsigned short), copyBuffer);
+                targetFile << *reinterpret_cast<const unsigned short*>(copyBuffer);
+                charSrc += sizeof(char);
+            break;
+            case CCfits::Tshort:
+                reverse_copy(charSrc, charSrc+sizeof(short), copyBuffer);
+                targetFile << *reinterpret_cast<const short*>(copyBuffer);
+                charSrc += sizeof(char);
+            break;
+            case CCfits::Tuint:
+                reverse_copy(charSrc, charSrc+sizeof(unsigned int), copyBuffer);
+                //warning suppressed in gcc4.0.2
+                targetFile << *reinterpret_cast<unsigned int*>(copyBuffer);
+                charSrc += sizeof(int);
+            break;
+            case CCfits::Tint:
+                reverse_copy(charSrc, charSrc+sizeof(int), copyBuffer);
+                targetFile << *reinterpret_cast<int*>(copyBuffer);
+                charSrc += sizeof(int);
+            break;
+            case CCfits::Tulong:
+                reverse_copy(charSrc, charSrc+sizeof(unsigned long), copyBuffer);
+                targetFile << *reinterpret_cast<unsigned long*>(copyBuffer);
+                charSrc += sizeof(int);
+            break;
+            case CCfits::Tlong:
+                reverse_copy(charSrc, charSrc+sizeof(long), copyBuffer);
+                targetFile << *reinterpret_cast<long*>(copyBuffer);
+                charSrc += sizeof(int);
+            break;
+            case CCfits::Tlonglong:
+                reverse_copy(charSrc, charSrc+sizeof(long long), copyBuffer);
+                targetFile << *reinterpret_cast<long long*>(copyBuffer);
+                charSrc += sizeof(long long);
+            break;
+            case CCfits::Tfloat:
+                reverse_copy(charSrc, charSrc+sizeof(float), copyBuffer);
+                targetFile << *reinterpret_cast<float*>(copyBuffer);
+                charSrc += sizeof(float);
+            break;
+            case CCfits::Tdouble:
+                reverse_copy(charSrc, charSrc+sizeof(double), copyBuffer);
+                targetFile << *reinterpret_cast<double*>(copyBuffer);
+                charSrc += sizeof(double);
+            break;
+            case CCfits::Tnull:
+            case CCfits::Tbit:
+            case CCfits::Tlogical:
+            case CCfits::Tstring:
+            case CCfits::Tcomplex:
+            case CCfits::Tdblcomplex:
+            case CCfits::VTbit:
+            case CCfits::VTbyte:
+            case CCfits::VTlogical:
+            case CCfits::VTushort:
+            case CCfits::VTshort:
+            case CCfits::VTuint:
+            case CCfits::VTint:
+            case CCfits::VTulong:
+            case CCfits::VTlong:
+            case CCfits::VTlonglong:
+            case CCfits::VTfloat:
+            case CCfits::VTdouble:
+            case CCfits::VTcomplex:
+            case CCfits::VTdblcomplex:
+                cout << "Data type not implemented yet." << endl;
+                return;
+            break;
+            default:
+                cout << "THIS SHOULD NEVER BE REACHED" << endl;
+                return;
+            }//switch
+            targetFile << " ";
+        }//width loop
+    }//iterator over the columns
+    targetFile << endl;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Calculates the required buffer size for reading one row of the current table.
+//! Also calculates the offsets to all the columns
+//
+vector<int> CalculateBufferSize(map<string, CCfits::Column*>& colMap)
+{
+    vector<int> result;
+    map<int,int> sizes;
+    int size = 0;
+
+    for (map<string, CCfits::Column*>::iterator it=colMap.begin(); it != colMap.end(); it++)
+    {
+        int width = it->second->width();
+        switch (it->second->type())
+        {
+        case CCfits::Tbyte:
+        case CCfits::Tushort:
+        case CCfits::Tshort:
+            sizes[it->second->index()] =  sizeof(char)*width;
+        break;
+        case CCfits::Tuint:
+        case CCfits::Tint:
+            sizes[it->second->index()] =  sizeof(int)*width;
+        break;
+        case CCfits::Tulong:
+        case CCfits::Tlong:
+            sizes[it->second->index()] = sizeof(int)*width;
+        break;
+        case CCfits::Tlonglong:
+            sizes[it->second->index()] =  sizeof(long long)*width;
+        break;
+        case CCfits::Tfloat:
+            sizes[it->second->index()] =  sizeof(float)*width;
+        break;
+        case CCfits::Tdouble:
+            sizes[it->second->index()] =  sizeof(double)*width;
+        break;
+        case CCfits::Tnull:
+        case CCfits::Tbit:
+        case CCfits::Tlogical:
+        case CCfits::Tstring:
+        case CCfits::Tcomplex:
+        case CCfits::Tdblcomplex:
+        case CCfits::VTbit:
+        case CCfits::VTbyte:
+        case CCfits::VTlogical:
+        case CCfits::VTushort:
+        case CCfits::VTshort:
+        case CCfits::VTuint:
+        case CCfits::VTint:
+        case CCfits::VTulong:
+        case CCfits::VTlong:
+        case CCfits::VTlonglong:
+        case CCfits::VTfloat:
+        case CCfits::VTdouble:
+        case CCfits::VTcomplex:
+        case CCfits::VTdblcomplex:
+            cout << "Data type not implemented yet." << endl;
+            return vector<int>();
+        break;
+        default:
+            cout << "THIS SHOULD NEVER BE REACHED" << endl;
+            return vector<int>();
+        }
+    }
+    //calculate the offsets in the vector.
+    int checkIndex = 1;
+    for (map<int,int>::iterator it=sizes.begin(); it != sizes.end(); it++)
+    {
+        result.push_back(size);
+        size += it->second;
+        if (it->first != checkIndex)
+        {
+            cout << "Expected index " << checkIndex << " found " << it->first << endl;
+        }
+        checkIndex++;
+    }
+    result.push_back(size);
+    return result;
+}
+
+int main(int argc, const char** argv)
+{
+    //set the names of the file and table to be loaded
+    string fileNameToLoad = "test.fits";
+    string tableNameToLoad = "FACT-TIME_ETIENNE";
+    //set the vector of columns to be dumped
+    vector<string> columnsToDump;
+    columnsToDump.push_back("Data0");
+    columnsToDump.push_back("Data1");
+    //set the name of the output text file
+    string outputFile = "output.txt";
+
+    //load the fits file
+    CCfits::FITS* file = NULL;
+    try
+    {
+        file = new CCfits::FITS(fileNameToLoad);
+    }
+    catch (CCfits::FitsException e)
+    {
+         cout << "Could not open FITS file " << fileNameToLoad << " reason: " << e.message() << endl;
+         return -1;
+    }
+    //check if the selected table indeed exists in the loaded file. If so, load it. Otherwise display the existing tables
+    CCfits::Table* table;
+    const multimap< string, CCfits::ExtHDU * > extMap = file->extension();
+    if (extMap.find(tableNameToLoad) == extMap.end())
+    {
+        cout << "Could not open table " << tableNameToLoad << ". Tables in file are: " << endl;
+        for (std::multimap<string, CCfits::ExtHDU*>::const_iterator it=extMap.begin(); it != extMap.end(); it++)
+            cout << it->first << " ";
+        cout << endl;
+        delete file;
+        return -1;
+    }
+    else
+        table = dynamic_cast<CCfits::Table*>(extMap.find(tableNameToLoad)->second);
+    int numRows = table->rows();
+    //check that the given column names are indeed part of that table
+    map<string, CCfits::Column*> colMap = table->column();
+    if (columnsToDump.size() != 0)
+    {
+        for (vector<string>::iterator it=columnsToDump.begin(); it!= columnsToDump.end(); it++)
+        {
+            if (colMap.find(*it) == colMap.end())
+            {
+                cout << "Config-given dump list contains invalid entry " << *it << endl;
+                delete file;
+                return -1;
+            }
+        }
+    }
+    //dump the requested columns
+    table->makeThisCurrent();
+    vector<int> offsets = CalculateBufferSize(colMap);
+    int size = offsets[offsets.size()-1];
+    offsets.pop_back();
+    unsigned char* fitsBuffer = new unsigned char[size];
+
+    ofstream targetFile(outputFile.c_str());
+    int status = 0;
+
+    for (int i=1;i<=table->rows(); i++)
+    {
+        fits_read_tblbytes(file->fitsPointer(), i, 1, size, fitsBuffer, &status);
+        if (status)
+        {
+            cout << "An error occurred while reading fits row #" << i << " error code: " << status << endl;
+            for (unsigned int j=0;j<offsets.size(); j++)
+                cout << offsets[j] << " ";
+            cout << endl;
+        }
+        writeValuesFromFits(offsets, targetFile, fitsBuffer, columnsToDump, colMap);
+    }
+    delete file;
+    return 0;
+}
Index: branches/testFACT++branch/src/skypeclient.cc
===================================================================
--- branches/testFACT++branch/src/skypeclient.cc	(revision 18277)
+++ branches/testFACT++branch/src/skypeclient.cc	(revision 18277)
@@ -0,0 +1,781 @@
+#include <iostream>
+
+#include "EventImp.h"
+#include "Configuration.h"
+#include "StateMachineDim.h"
+#include "LocalControl.h"
+
+#include <boost/tokenizer.hpp>
+
+#include <dbus/dbus-glib-lowlevel.h>
+
+using namespace std;
+
+class SkypeClient : public StateMachineDim
+{
+private:
+    static const string fAuthorizationMsg;
+
+    enum {
+        kStateDisconnected = 1,
+        kStateConnected = 2,
+    };
+
+    Time fLastConnect;
+
+    DBusConnection *fBus;
+    GMainLoop *fLoop;
+
+    vector<string> fContacts;
+
+    string fUser;
+
+    bool fAllowRaw;
+
+    uint64_t fLastReadMessage;
+
+    string Contact(const string &id) const
+    {
+        if (id.size()==0)
+            return "";
+
+        if (id[0]!='#')
+            return "";
+
+        const size_t p = id.find_first_of('/');
+        if (p==string::npos)
+            return "";
+
+        return id.substr(1, p-1);
+    }
+
+
+
+    static DBusHandlerResult NotifyHandler(DBusConnection *, DBusMessage *dbus_msg, void *user_data)
+    {
+        static_cast<SkypeClient*>(user_data)->HandleDBusMessage(dbus_msg);
+        static_cast<SkypeClient*>(user_data)->Minimize();
+        return DBUS_HANDLER_RESULT_HANDLED;
+    }
+
+    int HandleMsg(const EventImp &evt)
+    {
+        if (evt.GetSize()==0)
+            return GetCurrentState();
+
+        for (auto it=fContacts.begin(); it!=fContacts.end(); it++)
+            SendSkypeMessage(*it, evt.GetString());
+
+        ostringstream msg;
+        msg << evt.GetString() << " [" << fContacts.size() << "]";
+
+        Info(msg);
+
+        return GetCurrentState();
+    }
+
+    int HandleRaw(const EventImp &evt)
+    {
+        if (evt.GetSize()==0 || !fAllowRaw)
+            return GetCurrentState();
+
+        SendDBusMessage(evt.GetString());
+
+        return GetCurrentState();
+    }
+
+    int HandleCall()
+    {
+        int cnt = 0;
+        for (auto it=fContacts.begin(); it!=fContacts.end(); it++)
+        {
+            const string user = Contact(*it);
+            if (user.empty())
+                continue;
+
+            SendDBusMessageNB("CALL "+user);
+
+            cnt++;
+        }
+
+        ostringstream msg;
+        msg << "CALLING [" << cnt << "/" << fContacts.size() << "]";
+
+        Info(msg);
+
+        return GetCurrentState();
+    }
+
+    int HandleSMS(const EventImp &/*sms*/)
+    {
+        /*
+         -> CREATE SMS OUTGOING +0123456789
+            <- SMS 821 STATUS COMPOSING
+            <- SMS 821 PRICE 0
+            <- SMS 821 TIMESTAMP 0
+            <- SMS 821 PRICE_PRECISION 3
+            <- SMS 821 PRICE_CURRENCY EUR
+            <- SMS 821 STATUS COMPOSING
+            <- SMS 821 TARGET_NUMBERS +0123456789
+            <- SMS 821 PRICE -1
+            <- SMS 821 TARGET_STATUSES +0123456789=TARGET_ANALYZING
+            <- SMS 821 TARGET_STATUSES +0123456789=TARGET_ACCEPTABLE
+            <- SMS 821 PRICE 78
+
+         //-------------------------------------------------------------------
+         // Now let's add two more target numbers (in addition to original)
+         -> SET SMS 1702 TARGET_NUMBERS +37259877305, +37259877306, +37259877307
+            <- SMS 1702 TARGET_NUMBERS +37259877305, +37259877306, +37259877307
+            <- SMS 1702 TARGET_NUMBERS +37259877305, +37259877306, +37259877307
+            <- SMS 1702 PRICE -1
+            <- SMS 1702 TARGET_STATUSES +37259877305=TARGET_ACCEPTABLE, +37259877306=TARGET_ANALYZING, +37259877307=TARGET_ANALYZING
+            <- SMS 1702 TARGET_STATUSES +37259877305=TARGET_ACCEPTABLE, +37259877306=TARGET_ACCEPTABLE, +37259877307=TARGET_ACCEPTABLE
+            <- SMS 1702 TARGET_STATUSES +37259877305=TARGET_ACCEPTABLE, +37259877306=TARGET_ACCEPTABLE, +37259877307=TARGET_ACCEPTABLE
+            <- SMS 1702 PRICE 234
+
+            TARGET_ANALYZING
+            TARGET_UNDEFINED
+            TARGET_ACCEPTABLE
+            TARGET_NOT_ROUTABLE
+            TARGET_DELIVERY_PENDING
+            TARGET_DELIVERY_SUCCESSFUL
+            TARGET_DELIVERY_FAILED
+            UNKNOWN
+
+         // ----------------------------------------------------------------
+         // This is how to set the message text property
+         // Note that you will get two identical lines in response
+         -> SET SMS 821 BODY "test 123 test 223 test 333"
+            <- SMS 821 BODY "test 123 test 223 test 333"
+            <- SMS 821 BODY "test 123 test 223 test 333"
+
+         // ----------------------------------------------------------------
+         // Now lets try to send the message
+         -> ALTER SMS 821 SEND
+            <- ALTER SMS 821 SEND
+            <- SMS 821 STATUS SENDING_TO_SERVER
+            <- SMS 821 TIMESTAMP 1174058095
+            <- SMS 821 TARGET_STATUSES +0123456789=TARGET_ACCEPTABLE
+            <- SMS 821 TARGET_STATUSES +0123456789=TARGET_DELIVERY_FAILED
+            <- SMS 821 FAILUREREASON INSUFFICIENT_FUNDS
+            <- SMS 821 STATUS FAILED
+            <- SMS 821 IS_FAILED_UNSEEN TRUE
+
+            STATUS
+             RECEIVED                   the message has been received (but not tagged as read)
+             READ                       the message has been tagged as read
+             COMPOSING                  the message has been created but not yet sent
+             SENDING_TO_SERVER          the message is in process of being sent to server
+             SENT_TO_SERVER             the message has been sent to server
+             DELIVERED                  server has confirmed that the message is sent out to recepient
+             SOME_TARGETS_FAILED        server reports failure to deliver the message to one of the recepients within 24h
+             FAILED                     the message has failed, possible reason may be found in FAILUREREASON property
+             UNKNOWN                    message status is unknown
+
+            FAILUREREASON
+             MISC_ERROR                 indicates failure to supply a meaningful error message
+             SERVER_CONNECT_FAILED      unable to connect to SMS server
+             NO_SMS_CAPABILITY          recepient is unable to receive SMS messages
+             INSUFFICIENT_FUNDS         insufficient Skype Credit to send an SMS message
+             INVALID_CONFIRMATION_CODE  set when an erroneous code was submitted in a CONFIRMATION_CODE_SUBMIT message
+             USER_BLOCKED               user is blocked from the server
+             IP_BLOCKED                 user IP is blocked from the server
+             NODE_BLOCKED               user p2p network node has been blocked from the server
+             UNKNOWN                    default failure code
+             NO_SENDERID_CAPABILITY     Set when a CONFIRMATION_CODE_REQUEST SMS message is sent with a mobile phone number containing country code of either USA, Taiwan or China. Setting reply-to number from Skype SMS’s to your mobile number is not supported in these countries. Added in Skype version 3.5 (protocol 8).
+
+         // ----------------------------------------------------------------
+         // As sending the message failed (not enough Skype credit),
+         // lets delete the message
+         -> DELETE SMS 821
+            <- DELETE SMS 821
+            */
+
+        return GetCurrentState();
+    }
+
+    string SendDBusMessage(const string &cmd, bool display=true)
+    {
+        DBusMessage *send = GetDBusMessage(cmd);
+        if (!send)
+            return "";
+
+        DBusError error;
+        dbus_error_init(&error);
+
+        // Send the message and wait for reply
+        if (display)
+            Info("TX: "+cmd);
+        DBusMessage *reply=
+            dbus_connection_send_with_reply_and_block(fBus, send,
+                                                      -1,//DBUS_TIMEOUT_USE_DEFAULT,
+                                                      &error);
+        /*
+        DBusPendingCall *pending = 0;
+        if (!dbus_connection_send_with_reply (fBus, send,
+                                              &pending, DBUS_TIMEOUT_USE_DEFAULT))
+            return "";
+
+        if (!pending)
+            return "";
+
+        bool = dbus_pending_call_get_completed(pending);
+        //dbus_pending_call_block(pending);
+        DBusMessage *reply = dbus_pending_call_steal_reply(pending);
+        dbus_pending_call_unref(pending);
+        */
+
+        if (!reply)
+        {
+            Error("dbus_connection_send_with_reply_and_block: "+string(error.message));
+            dbus_error_free(&error);
+            return "";
+        }
+
+        // Get Skype's reply string
+        const char *ack = 0;
+        dbus_message_get_args(reply, 0, DBUS_TYPE_STRING, &ack, DBUS_TYPE_INVALID);
+
+        if (display)
+            Info("RX: "+string(ack));
+
+        const string rc = ack;
+
+        // Show no interest in the previously created messages.
+        // DBus will delete a message if reference count drops to zero.
+        dbus_message_unref(send);
+        dbus_message_unref(reply);
+
+        return rc;
+    }
+
+    DBusMessage *GetDBusMessage(const string &cmd)
+    {
+        // Create a message to be sent to Skype
+
+        // Constructs a new message to invoke a method on a remote object.
+        // Sets the service the message should be sent to "com.Skype.API"
+        // Sets the object path the message should be sent to "/com/Skype"
+        // Sets the interface to invoke method on to "com.Skype.API"
+        // Sets the method to invoke to "Invoke"
+        DBusMessage *send=
+            dbus_message_new_method_call("com.Skype.API", "/com/Skype",
+                                         "com.Skype.API", "Invoke");
+        if (!send)
+        {
+            Error("dbus_message_new_method_call failed.");
+            return NULL;
+        }
+
+        // Set the argument of the Invoke method
+        // Sets arg to be an argument to be passed to the Invoke method.
+        // It is an input argument. It has a type string.
+        // There are no output arguments.
+        const char *msg = cmd.c_str();
+        dbus_message_append_args(send,
+                                 DBUS_TYPE_STRING, &msg,
+                                 DBUS_TYPE_INVALID);
+
+        return send;
+    }
+
+    bool Minimize()
+    {
+        DBusMessage *send = GetDBusMessage("MINIMIZE");
+        if (!send)
+            return false;
+
+        // Send the message and ignore the reply
+        const bool rc = dbus_connection_send(fBus, send, NULL);
+
+        // Show no interest in the previously created messages.
+        // DBus will delete a message if reference count drops to zero.
+        dbus_message_unref(send);
+
+        return rc;
+    }
+
+    bool SendDBusMessageNB(const string &cmd)
+    {
+        DBusMessage *send = GetDBusMessage(cmd);
+        if (!send)
+            return false;
+
+        // Send the message and ignore the reply
+        Info("TX: "+cmd);
+        const bool rc = dbus_connection_send(fBus, send, NULL);
+
+        // Show no interest in the previously created messages.
+        // DBus will delete a message if reference count drops to zero.
+        dbus_message_unref(send);
+
+        return rc;
+    }
+
+    bool SendSkypeMessage(const string &chat, const string &msg)
+    {
+        return SendDBusMessageNB("CHATMESSAGE "+chat+" "+msg);
+/*
+        // SendDBusMessage(bus, "CHAT CREATE "+user);
+
+        const string rc = SendDBusMessage("CHATMESSAGE "+chat+" "+msg);
+
+        const vector<string> vec = Split(rc);
+        if (vec[0]=="ERROR")
+        {
+            auto it = find(fContacts.begin(), fContacts.end(), chat);
+            if (it!=fContacts.end())
+                fContacts.erase(it);
+            return false;
+        }
+
+        return true;
+        */
+    }
+    vector<string> Split(const string &msg)
+    {
+        using namespace boost;
+
+        typedef char_separator<char> separator;
+        const tokenizer<separator> tok(msg, separator(" "));
+
+        vector<string> vec;
+        for (auto it=tok.begin(); it!=tok.end(); it++)
+            vec.push_back((*it)[0]==0?it->substr(1):*it);
+
+        return vec;
+    }
+
+    void HandleDBusMessage(DBusMessage *dbus_msg)
+    {
+        if (GetCurrentState()!=kStateConnected)
+            return;
+
+        // CALL target1, target2, target3
+        // SET CALL <id> STATUS FINISHED
+
+        // Stores the argument passed to the Notify method
+        // into notify_argument.
+
+        char *notify_argument=0;
+        dbus_message_get_args(dbus_msg, 0,
+                              DBUS_TYPE_STRING, &notify_argument,
+                              DBUS_TYPE_INVALID);
+
+        Info("Notify: "+string(notify_argument));
+
+        const vector<string> vec = Split(notify_argument);
+
+        if (vec[0]=="CURRENTUSERHANDLE")
+        {
+            if (vec[1]!=fUser)
+            {
+                Error("Wrong user '"+vec[1]+"' logged in, '"+fUser+"' expected!");
+                fNewState = kStateDisconnected;
+                return;
+            }
+        }
+
+        if (vec[0]=="CONNSTATUS")
+        {
+            // OFFLINE / CONNECTING / PAUSING / ONLINE
+            if (vec[1]!="ONLINE")
+            {
+                Error("Connection status '"+vec[1]+"'");
+                fNewState = kStateDisconnected;
+                return;
+            }
+        }
+
+        if (vec[0]=="USERSTATUS")
+        {
+            if (vec[1]!="ONLINE")
+            {
+                Info("Skype user not visible... setting online.");
+                SendDBusMessageNB("SET USERSTATUS ONLINE");
+            }
+        }
+
+       // USER rtlprmft RECEIVEDAUTHREQUEST Please allow me to see when you are online
+ 
+        if (vec[0]=="USER")
+        {
+            if (vec[2]=="ONLINESTATUS")
+            {
+                if (vec[3]=="OFFLINE")
+                {
+                }
+                Info("User '"+vec[1]+"' changed status to '"+vec[3]+"'");
+            }
+
+            // Answer authorization requests
+            if (vec[2]=="RECEIVEDAUTHREQUEST")
+                SendDBusMessageNB("SET USER "+vec[1]+" BUDDYSTATUS 2 "+fAuthorizationMsg);
+
+            //if (vec[2]=="NROF_AUTHED_BUDDIES")
+            //    cout << vec[1] << " --> " << vec[3];
+        }
+
+        if (vec[0]=="GROUP")
+        {
+            // 1: gorup id
+            // 2: NROFUSERS
+            // 3: n
+        }
+
+        if (vec[0]=="CHATMESSAGE")
+        {
+            if (vec[2]=="STATUS" && (vec[3]=="RECEIVED"|| vec[3]=="READ"))
+            {
+                const uint64_t last = stoll(vec[1]);
+
+                // Check if message has already been processed: Sometimes
+                // some messages are received twice as READ/READ
+                if (last<=fLastReadMessage)
+                    return;
+                fLastReadMessage = last;
+
+                string rc;
+
+                rc=SendDBusMessage("GET CHATMESSAGE "+vec[1]+" CHATNAME");
+
+                const string id = Split(rc)[3];
+
+                rc=SendDBusMessage("GET CHATMESSAGE "+vec[1]+" BODY");
+
+                const size_t p = rc.find(" BODY ");
+                if (p==string::npos)
+                {
+                    cout<< "BODY TAG NOT FOUND|" << rc << "|" << endl;
+                    return;
+                }
+
+                rc = Tools::Trim(rc.substr(rc.find(" BODY ")+6));
+
+                if (rc=="start")
+                {
+                    auto it = find(fContacts.begin(), fContacts.end(), id);
+                    if (it==fContacts.end())
+                    {
+                        SendSkypeMessage(id, "Successfully subscribed.");
+                        fContacts.push_back(id);
+                    }
+                    else
+                        SendSkypeMessage(id, "You are already subscribed.");
+
+                    return;
+                }
+                if (rc=="stop")
+                {
+                    auto it = find(fContacts.begin(), fContacts.end(), id);
+                    if (it!=fContacts.end())
+                    {
+                        SendSkypeMessage(id, "Successfully un-subscribed.");
+                        fContacts.erase(it);
+                    }
+                    else
+                        SendSkypeMessage(id, "You were not subscribed.");
+
+                    return;
+                }
+
+                if (rc=="status")
+                {
+                    for (auto it=fContacts.begin(); it!=fContacts.end(); it++)
+                    {
+                        if (*it==vec[1])
+                        {
+                            SendSkypeMessage(id, "You are subscribed.");
+                            return;
+                        }
+                    }
+                    SendSkypeMessage(id, "You are not subscribed.");
+                    return;
+                }
+
+                SendSkypeMessage(id, "SYNTAX ERROR\n\nAvailable commands:\nPlease use either 'start', 'stop' or 'status'");
+
+            }
+        }
+
+        if (vec[0]=="CHAT")
+        {
+            const string id = vec[1];
+            if (vec[2]=="ACTIVITY_TIMESTAMP")
+            {
+                //SendDBusMessage("CHAT CREATE "+Contact(vec[1]));
+                //Info(vec[2]);
+                // ALTER CHAT DISBAND
+            }
+            if (vec[2]=="MYROLE")
+            {
+            }
+            if (vec[2]=="MEMBERS")
+            {
+            }
+            if (vec[2]=="ACTIVEMEMBERS")
+            {
+            }
+            if (vec[2]=="STATUS")
+            {
+                // vec[3]=="DIALOG")
+            }
+            if (vec[2]=="TIMESTAMP")
+            {
+            }
+            if (vec[2]=="DIALOG_PARTNER")
+            {
+            }
+            if (vec[2]=="FRIENDLYNAME")
+            {
+                // Notify: CHAT #maggiyy/$rtlprmft;da26ea52b3e70e65 FRIENDLYNAME Lamouette | noch ne message
+            }
+        }
+
+        if (vec[0]=="CALL")
+        {
+            if (vec[2]=="STATUS" && vec[2]=="INPROGRESS")
+                SendDBusMessageNB("SET CALL "+vec[1]+ "STATUS FINISHED");
+
+            // CALL 1501 STATUS UNPLACED
+            // CALL 1501 STATUS ROUTING
+            // CALL 1501 STATUS RINGING
+        }
+
+    }
+
+    int HandleDisconnect()
+    {
+        return kStateDisconnected;
+    }
+
+    int HandleConnect()
+    {
+        fLastConnect = Time();
+
+        // Enable client connection to Skype
+        if (SendDBusMessage("NAME FACT++")!="OK")
+            return kStateDisconnected;
+
+        // Negotiate protocol version
+        if (SendDBusMessage("PROTOCOL 5")!="PROTOCOL 5")
+            return kStateDisconnected;
+
+        // Now we are connected: Minimize the window...
+        SendDBusMessageNB("MINIMIZE");
+
+        // ... and switch off the away message
+        SendDBusMessageNB("SET AUTOAWAY OFF");
+
+        // Check for unauthorized users and...
+        const string rc = SendDBusMessage("SEARCH USERSWAITINGMYAUTHORIZATION");
+
+        // ...authorize them
+        vector<string> users = Split(rc);
+
+        if (users[0]!="USERS")
+        {
+            Error("Unexpected answer received '"+rc+"'");
+            return kStateDisconnected;
+        }
+
+        for (auto it=users.begin()+1; it!=users.end(); it++)
+        {
+            const size_t p = it->length()-1;
+            if (it->at(p)==',')
+                it->erase(p);
+
+            SendDBusMessageNB("SET USER "+*it+" BUDDYSTATUS 2 "+fAuthorizationMsg);
+        }
+
+        return kStateConnected;
+    }
+
+    Time fLastPing;
+    int fNewState;
+
+    int Execute()
+    {
+        fNewState = -1;
+
+        static GMainContext *context = g_main_loop_get_context(fLoop);
+        g_main_context_iteration(context, FALSE);
+
+        if (fNewState>0)
+            return fNewState;
+
+        const Time now;
+
+        if (GetCurrentState()>kStateDisconnected)
+        {
+            if (now-fLastPing>boost::posix_time::seconds(15))
+            {
+                if (SendDBusMessage("PING", false)!="PONG")
+                    return kStateDisconnected;
+
+                fLastPing = now;
+            }
+
+            return GetCurrentState();
+        }
+
+        if (now-fLastConnect>boost::posix_time::minutes(1))
+            return HandleConnect();
+
+        return GetCurrentState();
+    }
+
+public:
+    SkypeClient(ostream &lout) : StateMachineDim(lout, "SKYPE"),
+        fLastConnect(Time()-boost::posix_time::minutes(5)), fLoop(0),
+        fLastReadMessage(0)
+    {
+        AddStateName(kStateDisconnected, "Disonnected", "");
+        AddStateName(kStateConnected,    "Connected",   "");
+
+        AddEvent("MSG", "C", kStateConnected)
+            (bind(&SkypeClient::HandleMsg, this, placeholders::_1))
+            ("|msg[string]:message to be distributed");
+
+        AddEvent("RAW", "C")
+            (bind(&SkypeClient::HandleRaw, this, placeholders::_1))
+            ("|msg[string]:send a raw message to the Skype API");
+
+        AddEvent("CALL", "", kStateConnected)
+            (bind(&SkypeClient::HandleCall, this))
+            ("");
+
+        AddEvent("CONNECT", kStateDisconnected)
+            (bind(&SkypeClient::HandleConnect, this))
+            ("");
+
+        AddEvent("DISCONNECT", kStateConnected)
+            (bind(&SkypeClient::HandleDisconnect, this))
+            ("");
+
+        fLoop = g_main_loop_new(NULL, FALSE);
+    }
+    ~SkypeClient()
+    {
+        g_main_loop_unref(fLoop);
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fUser = conf.Get<string>("user");
+        fAllowRaw = conf.Get<bool>("allow-raw");
+
+        // Get a connection to the session bus.
+        DBusError error;
+        dbus_error_init(&error);
+
+        fBus = dbus_bus_get(DBUS_BUS_SESSION, &error);
+        if (!fBus)
+        {
+            Error("dbus_bus_get failed: "+string(error.message));
+            dbus_error_free(&error);
+            return 1;
+        }
+
+        // Set up this connection to work in a GLib event loop.
+        dbus_connection_setup_with_g_main(fBus, NULL);
+
+        // Install notify handler to process Skype's notifications.
+        // The Skype-to-client method call.
+        DBusObjectPathVTable vtable;
+        vtable.message_function = SkypeClient::NotifyHandler;
+
+        // We will process messages with the object path "/com/Skype/Client".
+        const dbus_bool_t check =
+            dbus_connection_register_object_path(fBus, "/com/Skype/Client",
+                                                 &vtable, this);
+        if (!check)
+        {
+            Error("dbus_connection_register_object_path failed.");
+            return 2;
+        }
+
+        return -1;
+    }
+
+    int Write(const Time &time, const string &txt, int severity=MessageImp::kMessage)
+    {
+        return MessageImp::Write(time, txt, severity);
+    }
+};
+
+const string SkypeClient::fAuthorizationMsg =
+    "This is an automatic client of the FACT project (www.fact-project.org). "
+    "If you haven't tried to get in contact with this bot, feel free to block it. "
+    "In case of problems or questions please contact system@fact-project.org.";
+
+
+// -------------------------------------------------------------------------------------
+
+void SetupConfiguration(Configuration &conf)
+{
+    const string n = conf.GetName()+".log";
+
+    po::options_description config("Skype client options");
+    config.add_options()
+        ("user", var<string>("www.fact-project.org"), "If a user is given only connection to a skype with this user are accepted.")
+        ("allow-raw", po_bool(false), "This allows sending raw messages to the SKype API (for debugging)")
+        ;
+
+    conf.AddOptions(config);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The skypeclient is a Dim to Skype interface.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: skypeclient [OPTIONS]\n"
+        "  or:  skypeclient [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    /* Additional help text which is printed after the configuration
+     options goes here */
+}
+
+
+#include "Main.h"
+
+int main(int argc, const char *argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    // No console access at all
+    if (!conf.Has("console"))
+        return Main::execute<LocalStream, SkypeClient>(conf);
+
+    if (conf.Get<int>("console")==0)
+        return Main::execute<LocalShell, SkypeClient>(conf);
+    else
+        return Main::execute<LocalConsole, SkypeClient>(conf);
+
+    return 0;
+}
Index: branches/testFACT++branch/src/smartfact.cc
===================================================================
--- branches/testFACT++branch/src/smartfact.cc	(revision 18277)
+++ branches/testFACT++branch/src/smartfact.cc	(revision 18277)
@@ -0,0 +1,3307 @@
+#ifdef HAVE_NOVA
+#include "externals/Prediction.h"
+#endif
+
+#ifdef HAVE_SQL
+#include "Database.h"
+#endif
+
+#include <sys/stat.h> //for file stats
+
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "Connection.h"
+#include "Configuration.h"
+#include "Console.h"
+#include "DimWriteStatistics.h"
+#include "externals/PixelMap.h"
+
+#include "tools.h"
+
+#include "LocalControl.h"
+
+#include "HeadersFAD.h"
+#include "HeadersBIAS.h"
+#include "HeadersFTM.h"
+#include "HeadersFSC.h"
+#include "HeadersGPS.h"
+#include "HeadersSQM.h"
+#include "HeadersMCP.h"
+#include "HeadersLid.h"
+#include "HeadersDrive.h"
+#include "HeadersPower.h"
+#include "HeadersAgilent.h"
+#include "HeadersFeedback.h"
+#include "HeadersRateScan.h"
+#include "HeadersRateControl.h"
+#include "HeadersTNGWeather.h"
+#include "HeadersMagicLidar.h"
+#include "HeadersMagicWeather.h"
+#include "HeadersTemperature.h"
+
+#include <boost/filesystem.hpp>
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+#include "DimState.h"
+
+// ------------------------------------------------------------------------
+/*
+template<class T>
+    class buffer : public deque<T>
+    {
+        int32_t max_size;
+
+    public:
+        buffer(int32_t max=-1) : max_size(max) { }
+        const T &operator=(const T &t) const { push_back(t); if (max_size>0 && deque<T>::size()>max_size) deque<T>::pop_front(); }
+        operator T() const { return deque<T>::size()>0 ? deque<T>::back() : T(); }
+        bool valid() const { return deque<T>::size()>0; }
+    };
+*/
+
+// ------------------------------------------------------------------------
+
+namespace HTML
+{
+    const static string kWhite  = "#ffffff";
+    const static string kYellow = "#fffff0";
+    const static string kRed    = "#fff8f0";
+    const static string kGreen  = "#f0fff0";
+    const static string kBlue   = "#f0f0ff";
+};
+
+// ========================================================================
+// ========================================================================
+// ========================================================================
+
+class Sun
+{
+public:
+    Time time;
+
+    Time fRiseDayTime;
+    Time fRiseCivil;
+    Time fRiseAstronomical;
+    Time fRiseDarkTime;
+
+    Time fSetDayTime;
+    Time fSetCivil;
+    Time fSetAstronomical;
+    Time fSetDarkTime;
+
+    int state;
+    string description;
+    string color;
+
+    bool isday;
+    bool visible;
+
+public:
+    Sun() : time(Time::none)
+    {
+    }
+
+    // Could be done more efficient: Only recalcuate if
+    // the current time exceeds at least on of the stored times
+    Sun(const Time &t) :  time(t)
+    {
+#ifdef HAVE_LIBNOVA
+        // get Julian day from local time
+        const double JD = time.JD();
+
+        // Warning: return code of 1 means circumpolar and is not checked!
+        Nova::RstTime sun_day          = Nova::GetSolarRst(JD-0.5);
+        Nova::RstTime sun_civil        = Nova::GetSolarRst(JD-0.5,  -6);
+        Nova::RstTime sun_astronomical = Nova::GetSolarRst(JD-0.5, -12);
+        Nova::RstTime sun_dark         = Nova::GetSolarRst(JD-0.5, -18);
+
+        fSetDayTime       = Time(sun_day.set);
+        fSetCivil         = Time(sun_civil.set);
+        fSetAstronomical  = Time(sun_astronomical.set);
+        fSetDarkTime      = Time(sun_dark.set);
+
+        fRiseDayTime      = Time(sun_day.rise);
+        fRiseCivil        = Time(sun_civil.rise);
+        fRiseAstronomical = Time(sun_astronomical.rise);
+        fRiseDarkTime     = Time(sun_dark.rise);
+
+        const bool is_day   = JD>sun_day.rise;
+        const bool is_night = JD>sun_dark.set;
+
+        sun_day          = Nova::GetSolarRst(JD+0.5);
+        sun_civil        = Nova::GetSolarRst(JD+0.5,  -6);
+        sun_astronomical = Nova::GetSolarRst(JD+0.5, -12);
+        sun_dark         = Nova::GetSolarRst(JD+0.5, -18);
+
+        if (is_day)
+        {
+            fRiseDayTime      = Time(sun_day.rise);
+            fRiseCivil        = Time(sun_civil.rise);
+            fRiseAstronomical = Time(sun_astronomical.rise);
+            fRiseDarkTime     = Time(sun_dark.rise);
+        }
+
+        if (is_night)
+        {
+            fSetDayTime      = Time(sun_day.set);
+            fSetCivil        = Time(sun_civil.set);
+            fSetAstronomical = Time(sun_astronomical.set);
+            fSetDarkTime     = Time(sun_dark.set);
+        }
+
+        // case 0: midnight to sun-rise | !is_day && !is_night | rise/set
+        // case 1: sun-rise to sun-set  |  is_day && !is_night | set /rise
+        // case 2: sun-set  to midnight |  is_day &&  is_night | rise/set
+
+        isday = is_day^is_night;
+
+        state = isday ? 4 : 0;
+        if (time>fSetDayTime)       state++;
+        if (time>fSetCivil)         state++;
+        if (time>fSetAstronomical)  state++;
+        if (time>fSetDarkTime)      state++;
+
+        if (time>fRiseDarkTime)     state++;
+        if (time>fRiseAstronomical) state++;
+        if (time>fRiseCivil)        state++;
+        if (time>fRiseDayTime)      state++;
+
+        string name[] =
+        {
+            "dark time",
+            "astron. twilight",
+            "civil twilight",
+            "sunrise",
+            "day time",
+            "sunset",
+            "civil twilight",
+            "astron. twilight",
+            "dark time"
+        };
+
+        description = name[state];
+
+        const string arr = isday ?
+            fSetDarkTime.MinutesTo(time)+"&darr;" :
+            fRiseDarkTime.MinutesTo(time)+"&uarr;";
+
+        description += " ["+arr+"]";
+
+        switch (state)
+        {
+        case 0: case 1:  color = HTML::kGreen;   break;
+        case 2: case 3:  color = HTML::kYellow;  break;
+        case 4:          color = HTML::kRed;     break;
+        case 5: case 6:  color = HTML::kYellow;  break;
+        case 7: case 8:  color = HTML::kGreen;   break;
+        }
+
+        visible = state>=3 && state<=5;
+#endif
+    }
+};
+
+class Moon
+{
+public:
+    Time time;
+
+    double ra;
+    double dec;
+
+    double zd;
+    double az;
+
+    double disk;
+
+    bool visible;
+
+    Time fRise;
+    Time fTransit;
+    Time fSet;
+
+    string description;
+    string color;
+
+    int state;
+
+    Moon() : time(Time::none)
+    {
+    }
+
+    // Could be done more efficient: Only recalcuate if
+    // the current time exceeds at least on of the stored times
+    Moon(const Time &t) : time(t)
+    {
+#ifdef HAVE_LIBNOVA
+        const double JD = time.JD();
+
+        Nova::RstTime moon = Nova::GetLunarRst(JD-0.5);
+
+        fRise    = Time(moon.rise);
+        fTransit = Time(moon.transit);
+        fSet     = Time(moon.set);
+
+        //visible =
+        //    ((JD>moon.rise && JD<moon.set ) && moon.rise<moon.set) ||
+        //    ((JD<moon.set  || JD>moon.rise) && moon.rise>moon.set);
+
+        const bool is_up      = JD>moon.rise;
+        const bool is_sinking = JD>moon.transit;
+        const bool is_dn      = JD>moon.set;
+
+        moon = Nova::GetLunarRst(JD+0.5);
+        if (is_up)
+            fRise = Time(moon.rise);
+        if (is_sinking)
+            fTransit = Time(moon.transit);
+        if (is_dn)
+            fSet = Time(moon.set);
+
+        const Nova::EquPosn  pos = Nova::GetLunarEquCoords(JD);
+        const Nova::ZdAzPosn hrz = Nova::GetHrzFromEqu(pos, JD);
+
+        az = hrz.az;
+        zd = hrz.zd;
+
+        ra  = pos.ra/15;
+        dec = pos.dec;
+
+        disk = Nova::GetLunarDisk(JD)*100;
+        state = 0;
+        if (fRise   <fTransit && fRise   <fSet)     state = 0;  // not visible
+        if (fTransit<fSet     && fTransit<fRise)    state = 1;  // before culm
+        if (fSet    <fRise    && fSet    <fTransit) state = 2;  // after culm
+
+        visible = state!=0;
+
+        // 0: not visible
+        // 1: visible before cul
+        // 2: visible after cul
+
+        if (!visible || disk<25)
+            color = HTML::kGreen;
+        else
+            color = disk>75 ? HTML::kRed : HTML::kYellow;
+
+        const string arr = fSet<fRise ?
+            fSet.MinutesTo(time) +"&darr;" :
+            fRise.MinutesTo(time)+"&uarr;";
+
+        ostringstream out;
+        out << setprecision(2);
+        out << (visible?"visible ":"") << (disk<0.1?0:disk) << "% [" << arr << "]";
+
+        description = out.str();
+#endif
+    }
+
+    double Angle(double r, double d) const
+    {
+        const double theta0 = M_PI/2-d*M_PI/180;
+        const double phi0   = r*M_PI/12;
+
+        const double theta1 = M_PI/2-dec*M_PI/180;
+        const double phi1   = ra*M_PI/12;
+
+        const double x0 = sin(theta0) * cos(phi0);
+        const double y0 = sin(theta0) * sin(phi0);
+        const double z0 = cos(theta0);
+
+        const double x1 = sin(theta1) * cos(phi1);
+        const double y1 = sin(theta1) * sin(phi1);
+        const double z1 = cos(theta1);
+
+        double arg = x0*x1 + y0*y1 + z0*z1;
+        if(arg >  1.0) arg =  1.0;
+        if(arg < -1.0) arg = -1.0;
+
+        return acos(arg) * 180/M_PI;
+    }
+
+    static string Color(double angle)
+    {
+        if (angle<10 || angle>150)
+            return HTML::kRed;
+        if (angle<20 || angle>140)
+            return HTML::kYellow;
+        return HTML::kGreen;
+    }
+};
+
+// ========================================================================
+// ========================================================================
+// ========================================================================
+
+class StateMachineSmartFACT : public StateMachineDim
+{
+public:
+    static bool fIsServer;
+
+private:
+    enum states_t
+    {
+        kStateDimNetworkNA = 1,
+        kStateRunning,
+    };
+
+    // ------------------------- History classes -----------------------
+
+    struct EventElement
+    {
+        Time time;
+        string msg;
+
+        EventElement(const Time &t, const string &s) : time(t), msg(s) { }
+    };
+
+    class EventHist : public list<EventElement>
+    {
+        const boost::posix_time::time_duration deltat; //boost::posix_time::pos_infin
+        const uint64_t max;
+
+    public:
+        EventHist(const boost::posix_time::time_duration &dt=boost::posix_time::hours(12), uint64_t mx=UINT64_MAX) : deltat(dt), max(mx) { }
+
+        void add(const string &s, const Time &t=Time())
+        {
+            while (!empty() && (front().time+deltat<t || size()>max))
+                pop_front();
+
+            emplace_back(t, s);
+        }
+
+        void clean()
+        {
+            for (auto it=begin(); it!=end();)
+                if (!it->time)
+                {
+                    const auto is = it++;
+                    erase(is);
+                }
+        }
+
+        string get() const
+        {
+            ostringstream out;
+
+            string last = "";
+            for (auto it=begin(); it!=end(); it++)
+            {
+                const string tm = it->time.GetAsStr("%H:%M:%S ");
+                out << (tm!=last?tm:"--:--:-- ") << it->msg << "<br/>";
+                last = tm;
+            }
+
+            return out.str();
+        }
+        string rget() const
+        {
+            ostringstream out;
+
+            for (auto it=rbegin(); it!=rend(); it++)
+                out << it->time.GetAsStr("%H:%M:%S ") << it->msg << "<br/>";
+
+            return out.str();
+        }
+    };
+
+    // ------------------------- Internal variables -----------------------
+
+    const Time fRunTime;
+
+    PixelMap fPixelMap;
+
+    string fDatabase;
+
+    Time fLastUpdate;
+    Time fLastAstroCalc;
+
+    string fPath;
+
+    // ----------------------------- Data storage -------------------------
+
+    EventHist fControlMessageHist;
+    EventHist fControlAlarmHist;
+    int32_t   fControlScriptDepth;
+
+     int32_t  fMcpConfigurationState;   // For consistency
+     int64_t  fMcpConfigurationMaxTime;
+     int64_t  fMcpConfigurationMaxEvents;
+    string    fMcpConfigurationName;
+    Time      fMcpConfigurationRunStart;
+    EventHist fMcpConfigurationHist;
+    bool fLastRunFinishedWithZeroEvents;
+
+    enum weather_t { kWeatherBegin=0, kTemp = kWeatherBegin, kDew, kHum, kPress, kWind, kGusts, kDir, kWeatherEnd = kDir+1 };
+    deque<float> fMagicWeatherHist[kWeatherEnd];
+
+    deque<float> fTngWeatherDustHist;
+    Time  fTngWeatherDustTime;
+
+    vector<float> fBiasControlVoltageVec;
+
+    float  fBiasControlPowerTot;
+    float  fBiasControlVoltageMed;
+    float  fBiasControlCurrentMed;
+    float  fBiasControlCurrentMax;
+
+    deque<float> fBiasControlCurrentHist;
+    deque<float> fFscControlTemperatureHist;
+
+    float fFscControlHumidityAvg;
+
+    deque<float> fTemperatureControlHist;
+
+    float  fDriveControlPointingZd;
+    string fDriveControlPointingAz;
+    string fDriveControlSourceName;
+    float  fDriveControlMoonDist;
+
+    deque<float> fDriveControlTrackingDevHist;
+
+     int64_t fFadControlNumEvents;
+     int64_t fFadControlStartRun;
+     int32_t fFadControlDrsStep;
+    vector<uint32_t> fFadControlDrsRuns;
+
+    deque<float> fFtmControlTriggerRateHist;
+     int32_t     fFtmControlTriggerRateTooLow;
+     int         fFtmControlState;
+
+    float fFtmPatchThresholdMed;
+    float fFtmBoardThresholdMed;
+
+    bool fFtmControlFtuOk;
+
+    deque<float> fRateControlThreshold;
+
+    uint64_t  fRateScanDataId;
+    uint8_t   fRateScanBoard;
+    deque<float> fRateScanDataHist[41];
+
+    set<string> fErrorList;
+    EventHist   fErrorHist;
+    EventHist   fChatHist;
+
+    uint64_t fFreeSpace;
+
+    Sun   fSun;
+    Moon  fMoon;
+
+    // --------------------------- File header ----------------------------
+
+    Time   fAudioTime;
+    string fAudioName;
+
+    string Header(const Time &d)
+    {
+        ostringstream msg;
+        msg << d.JavaDate() << '\t' << fAudioTime.JavaDate() << '\t' << fAudioName;
+        return msg.str();
+    }
+
+    string Header(const EventImp &d)
+    {
+        return Header(d.GetTime());
+    }
+
+    void SetAudio(const string &name)
+    {
+        fAudioName = name;
+        fAudioTime = Time();
+    }
+
+    // ------------- Initialize variables before the Dim stuff ------------
+
+    DimVersion fDimDNS;
+    DimControl fDimControl;
+    DimDescribedState fDimMcp;
+    DimDescribedState fDimDataLogger;
+    DimDescribedState fDimDriveControl;
+    DimDescribedState fDimTimeCheck;
+    DimDescribedState fDimMagicWeather;
+    DimDescribedState fDimMagicLidar;
+    DimDescribedState fDimTngWeather;
+    DimDescribedState fDimTemperature;
+    DimDescribedState fDimFeedback;
+    DimDescribedState fDimBiasControl;
+    DimDescribedState fDimFtmControl;
+    DimDescribedState fDimFadControl;
+    DimDescribedState fDimFscControl;
+    DimDescribedState fDimGpsControl;
+    DimDescribedState fDimSqmControl;
+    DimDescribedState fDimAgilentControl24;
+    DimDescribedState fDimAgilentControl50;
+    DimDescribedState fDimAgilentControl80;
+    DimDescribedState fDimPwrControl;
+    DimDescribedState fDimLidControl;
+    DimDescribedState fDimRateControl;
+    DimDescribedState fDimRateScan;
+    DimDescribedState fDimChat;
+    DimDescribedState fDimSkypeClient;
+
+    // -------------------------------------------------------------------
+
+    string GetDir(const double angle)
+    {
+        static const char *dir[] =
+        {
+            "N", "NNE", "NE", "ENE",
+            "E", "ESE", "SE", "SSE",
+            "S", "SSW", "SW", "WSW",
+            "W", "WNW", "NW", "NNW"
+        };
+
+        const uint16_t idx = uint16_t(floor(angle/22.5+16.5))%16;
+        return dir[idx];
+    }
+
+    // -------------------------------------------------------------------
+
+    bool CheckDataSize(const EventImp &d, const char *name, size_t size, bool min=false)
+    {
+        if (d.GetSize()==0)
+            return false;
+
+        if ((!min && d.GetSize()==size) || (min && d.GetSize()>size))
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received service has " << d.GetSize() << " bytes, but expected ";
+        if (min)
+            msg << "more than ";
+        msg << size << ".";
+        Warn(msg);
+        return false;
+    }
+
+    // -------------------------------------------------------------------
+
+    template<class T>
+        void WriteBinaryVec(const Time &tm, const string &fname, const vector<T> &vec, double scale, double offset=0, const string &title="", const string &col="")
+    {
+        if (vec.empty())
+            return;
+
+        ostringstream out;
+        out << tm.JavaDate() << '\n';
+        out << offset << '\n';
+        out << offset+scale << '\n';
+        out << setprecision(3);
+        if (!title.empty())
+            out << title <<  '\x7f';
+        else
+        {
+            const Statistics stat(vec[0]);
+            out << stat.min << '\n';
+            out << stat.med << '\n';
+            out << stat.max << '\x7f';
+        }
+        if (!col.empty())
+            out << col;
+        for (auto it=vec.cbegin(); it!=vec.cend(); it++)
+        {
+            // The valid range is from 1 to 127
+            // \0 is used to seperate different curves
+            vector<uint8_t> val(it->size());
+            for (uint64_t i=0; i<it->size(); i++)
+            {
+                float range = nearbyint(126*(double(it->at(i))-offset)/scale); // [-2V; 2V]
+                if (range>126)
+                    range=126;
+                if (range<0)
+                    range=0;
+                val[i] = (uint8_t)range;
+            }
+
+            const char *ptr = reinterpret_cast<char*>(val.data());
+            out.write(ptr, val.size()*sizeof(uint8_t));
+            out << '\x7f';
+        }
+
+        ofstream(fPath+"/"+fname+".bin") << out.str();
+    }
+    /*
+    template<class T>
+        void WriteBinaryVec(const EventImp &d, const string &fname, const vector<T> &vec, double scale, double offset=0, const string &title="")
+    {
+        WriteBinaryVec(d.GetTime(), fname, vec, scale, offset, title);
+    }
+
+    template<class T>
+        void WriteBinary(const Time &tm, const string &fname, const T &t, double scale, double offset=0)
+    {
+        WriteBinaryVec(tm, fname, vector<T>(&t, &t+1), scale, offset);
+    }
+
+    template<class T>
+        void WriteBinary(const EventImp &d, const string &fname, const T &t, double scale, double offset=0)
+    {
+        WriteBinaryVec(d.GetTime(), fname, vector<T>(&t, &t+1), scale, offset);
+    }*/
+
+    template<class T>
+        void WriteHist(const EventImp &d, const string &fname, const T &t, double scale, double offset=0)
+    {
+        WriteBinaryVec(d.GetTime(), fname, vector<T>(&t, &t+1), scale, offset, "", "000");
+    }
+
+    template<class T>
+        void WriteCam(const EventImp &d, const string &fname, const T &t, double scale, double offset=0)
+    {
+        WriteBinaryVec(d.GetTime(), fname, vector<T>(&t, &t+1), scale, offset, "", "");
+    }
+
+
+    // -------------------------------------------------------------------
+
+    struct Statistics
+    {
+        float min;
+        float max;
+        float med;
+        float avg;
+        //float rms;
+
+        template<class T>
+            Statistics(const T &t, size_t offset_min=0, size_t offset_max=0)
+            : min(0), max(0), med(0), avg(0)
+        {
+            if (t.empty())
+                return;
+
+            T copy(t);
+            sort(copy.begin(), copy.end());
+
+            if (offset_min>t.size())
+                offset_min = 0;
+            if (offset_max>t.size())
+                offset_max = 0;
+
+            min = copy[offset_min];
+            max = copy[copy.size()-1-offset_max];
+            avg = accumulate (t.begin(), t.end(), 0.)/t.size();
+
+            const size_t p = copy.size()/2;
+            med = copy.size()%2 ? copy[p] : (copy[p-1]+copy[p])/2.;
+        }
+    };
+
+    void HandleControlMessageImp(const EventImp &d)
+    {
+        if (d.GetSize()==0)
+            return;
+
+        fControlMessageHist.add(d.GetText(), d.GetTime());
+
+        ostringstream out;
+        out << setprecision(3);
+        out << Header(d) << '\n';
+        out << HTML::kWhite << '\t';
+        out << "<->" << fControlMessageHist.get() << "</->";
+        out << '\n';
+
+        ofstream(fPath+"/scriptlog.data") << out.str();
+    }
+
+    int HandleDimControlMessage(const EventImp &d)
+    {
+        if (d.GetSize()==0)
+            return GetCurrentState();
+
+        if (d.GetQoS()==MessageImp::kAlarm)
+        {
+            if (d.GetSize()<2)
+                for (auto it=fControlAlarmHist.begin(); it!=fControlAlarmHist.end(); it++)
+                    it->time = Time(Time::none);
+            else
+                fControlAlarmHist.add(d.GetText(), d.GetTime());
+        }
+
+        if (d.GetQoS()==MessageImp::kComment && d.GetSize()>1)
+            HandleControlMessageImp(d);
+
+        return GetCurrentState();
+    }
+
+    int HandleControlStateChange(const EventImp &d)
+    {
+        if (d.GetSize()==0)
+            return StateMachineImp::kSM_KeepState;
+
+        if (fDimControl.scriptdepth>0)
+            return StateMachineImp::kSM_KeepState;
+
+        if (d.GetQoS()>=2)
+            return StateMachineImp::kSM_KeepState;
+
+#if BOOST_VERSION < 104600
+        const string file = boost::filesystem::path(fDimControl.file).filename();
+#else
+        const string file = boost::filesystem::path(fDimControl.file).filename().string();
+#endif
+
+        // [0] DimControl::kIdle
+        // [1] DimControl::kLoading
+        // [2] DimControl::kCompiling
+        // [3] DimControl::kRunning
+        if (d.GetQoS()==1)
+        {
+            fControlMessageHist.clear();
+            HandleControlMessageImp(Event(d, "========================================", 41));
+        }
+
+        HandleControlMessageImp(Event(d, ("----- "+fDimControl.shortmsg+" -----").data(), fDimControl.shortmsg.length()+13));
+        if (!file.empty() && d.GetQoS()<2)
+            HandleControlMessageImp(Event(d, file.data(), file.length()+1));
+
+        // Note that this will also "ding" just after program startup
+        // if the dimctrl is still in state -3
+        if (d.GetQoS()==0)
+        {
+            HandleControlMessageImp(Event(d, "========================================", 41));
+            if (fDimControl.last.second!=DimState::kOffline)
+                SetAudio("ding");
+        }
+
+        return StateMachineImp::kSM_KeepState;
+    }
+
+    void AddMcpConfigurationHist(const EventImp &d, const string &msg)
+    {
+        fMcpConfigurationHist.add(msg, d.GetTime());
+
+        ostringstream out;
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t';
+        out << "<->" << fMcpConfigurationHist.rget() << "</->";
+        out << '\n';
+
+        ofstream(fPath+"/observations.data") << out.str();
+    }
+
+    int HandleFscControlStateChange(const EventImp &d)
+    {
+        const int32_t &last  = fDimFscControl.last.second;
+        const int32_t &state = fDimFscControl.state();
+
+        if (last==DimState::kOffline || state==DimState::kOffline)
+            return StateMachineImp::kSM_KeepState;
+
+        if (last<FSC::State::kConnected && state==FSC::State::kConnected)
+        {
+            AddMcpConfigurationHist(d, "<B>FSC swiched on</B>");
+            //SetAudio("startup");
+        }
+
+        if (last==FSC::State::kConnected && state<FSC::State::kConnected)
+        {
+            AddMcpConfigurationHist(d, "<B>FSC swiched off</B>");
+            //SetAudio("shutdown");
+        }
+
+        return StateMachineImp::kSM_KeepState;
+    }
+
+    int HandleMcpConfiguration(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "Mcp:Configuration", 16, true))
+        {
+            fMcpConfigurationState     = DimState::kOffline;
+            fMcpConfigurationMaxTime   = 0;
+            fMcpConfigurationMaxEvents = 0;
+            fMcpConfigurationName      = "";
+            fMcpConfigurationRunStart  = Time(Time::none);
+            return GetCurrentState();
+        }
+
+        // If a run ends...
+        if (fMcpConfigurationState==MCP::State::kTakingData && d.GetQoS()==MCP::State::kIdle)
+        {
+            // ...and no script is running just play a simple 'tick'
+            // ...and a script is running just play a simple 'tick'
+            if (/*fDimControl.state()<-2 &&*/ fDimControl.scriptdepth==0)
+                SetAudio("dong");
+            else
+                SetAudio("losticks");
+
+            fLastRunFinishedWithZeroEvents = fFadControlNumEvents==0;
+
+            ostringstream out;
+            out << "<#darkred>" << d.Ptr<char>(16);
+            if (!fDriveControlSourceName.empty())
+                out << " [" << fDriveControlSourceName << ']';
+            out << " (N=" << fFadControlNumEvents << ')';
+            out << "</#>";
+
+            AddMcpConfigurationHist(d, out.str());
+        }
+
+        if (d.GetQoS()==MCP::State::kTakingData)
+        {
+            fMcpConfigurationRunStart = Time();
+            SetAudio("losticks");
+
+            ostringstream out;
+            out << "<#darkgreen>" << fMcpConfigurationName;
+            if (!fDriveControlSourceName.empty())
+                out << " [" << fDriveControlSourceName << ']';
+            if (fFadControlStartRun>0)
+                out << " (Run " << fFadControlStartRun << ')';
+            out << "</#>";
+
+            AddMcpConfigurationHist(d, out.str());
+        }
+
+        fMcpConfigurationState     = d.GetQoS();
+        fMcpConfigurationMaxTime   = d.Get<uint64_t>();
+        fMcpConfigurationMaxEvents = d.Get<uint64_t>(8);
+        fMcpConfigurationName      = d.Ptr<char>(16);
+
+        return GetCurrentState();
+    }
+
+    void WriteWeather(const EventImp &d, const string &name, int i, float min, float max)
+    {
+        const Statistics stat(fMagicWeatherHist[i]);
+
+        ostringstream out;
+        out << setprecision(3);
+        out << d.GetJavaDate() << '\n';
+
+        out << HTML::kWhite << '\t' << fMagicWeatherHist[i].back() << '\n';
+        out << HTML::kWhite << '\t' << stat.min << '\n';
+        out << HTML::kWhite << '\t' << stat.avg << '\n';
+        out << HTML::kWhite << '\t' << stat.max << '\n';
+
+        ofstream(fPath+"/"+name+".data") << out.str();
+
+        WriteHist(d, "hist-magicweather-"+name, fMagicWeatherHist[i], max-min, min);
+    }
+
+    int HandleMagicWeatherData(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "MagicWeather:Data", 7*4+2))
+            return GetCurrentState();
+
+        // Store a history of the last 300 entries
+        for (int i=kWeatherBegin; i<kWeatherEnd; i++)
+        {
+            fMagicWeatherHist[i].push_back(d.Ptr<float>(2)[i]);
+            if (fMagicWeatherHist[i].size()>300)
+                fMagicWeatherHist[i].pop_front();
+        }
+
+        ostringstream out;
+        out << d.GetJavaDate() << '\n';
+        if (fSun.time.IsValid() && fMoon.time.IsValid())
+        {
+            out << fSun.color << '\t' << fSun.description << '\n';
+            out << setprecision(2);
+            out << (fSun.isday?HTML::kWhite:fMoon.color) << '\t' << fMoon.description << '\n';
+        }
+        else
+            out << "\n\n";
+        out << setprecision(3);
+        for (int i=0; i<6; i++)
+            out << HTML::kWhite << '\t' << fMagicWeatherHist[i].back() << '\n';
+        out << HTML::kWhite << '\t' << GetDir(fMagicWeatherHist[kDir].back()) << '\n';
+        out << HTML::kWhite << '\t';
+        if (!fTngWeatherDustHist.empty())
+            out << fTngWeatherDustHist.back() << '\t' << fTngWeatherDustTime.GetAsStr("%H:%M") << '\n';
+        else
+            out << "\t\n";
+
+        ofstream(fPath+"/weather.data") << out.str();
+
+        WriteWeather(d, "temp",  kTemp,   -5,   35);
+        WriteWeather(d, "dew",   kDew,    -5,   35);
+        WriteWeather(d, "hum",   kHum,     0,  100);
+        WriteWeather(d, "wind",  kWind,    0,  100);
+        WriteWeather(d, "gusts", kGusts,   0,  100);
+        WriteWeather(d, "press", kPress, 700, 1000);
+
+        return GetCurrentState();
+    }
+
+    int HandleTngWeatherDust(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "TngWeather:Dust", 4))
+            return GetCurrentState();
+
+        fTngWeatherDustTime = d.GetTime();
+
+        fTngWeatherDustHist.push_back(d.GetFloat());
+        if (fTngWeatherDustHist.size()>300)
+                fTngWeatherDustHist.pop_front();
+
+        const Statistics stat(fTngWeatherDustHist);
+
+        const double scale = stat.max>0 ? pow(10, ceil(log10(stat.max))) : 0;
+
+        WriteHist(d, "hist-tng-dust", fTngWeatherDustHist, scale);
+
+        ostringstream out;
+        out << d.GetJavaDate() << '\n';
+
+        ofstream(fPath+"/tngdust.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleDriveControlStateChange(const EventImp &d)
+    {
+        const int32_t &last  = fDimFscControl.last.second;
+        const int32_t &state = fDimFscControl.state();
+
+        if (last==DimState::kOffline || state==DimState::kOffline)
+            return StateMachineImp::kSM_KeepState;
+
+        if (last<Drive::State::kArmed && state>=Drive::State::kArmed)
+            AddMcpConfigurationHist(d, "Drive connected");
+
+        if (last>=Drive::State::kArmed && state<Drive::State::kArmed)
+            AddMcpConfigurationHist(d, "Drive disconnected");
+
+        return StateMachineImp::kSM_KeepState;
+    }
+
+    int HandleDrivePointing(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "DriveControl:Pointing", 16))
+            return GetCurrentState();
+
+        fDriveControlPointingZd = d.Get<double>();
+
+        const double az = d.Get<double>(8);
+
+        fDriveControlPointingAz = GetDir(az);
+
+        ostringstream out;
+        out << d.GetJavaDate() << '\n';
+
+        out << setprecision(0) << fixed;
+        out << HTML::kWhite << '\t' << az << '\t' << fDriveControlPointingAz << '\n';
+        out << HTML::kWhite << '\t' << fDriveControlPointingZd << '\n';
+
+        ofstream(fPath+"/pointing.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleDriveTracking(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "DriveControl:Tracking", 64))
+            return GetCurrentState();
+
+        const double Ra  = d.Get<double>(0*8);
+        const double Dec = d.Get<double>(1*8);
+        const double Zd  = d.Get<double>(3*8);
+        const double Az  = d.Get<double>(4*8);
+
+        const double dev = d.Get<double>(7*8);
+
+        fDriveControlTrackingDevHist.push_back(dev);
+        if (fDriveControlTrackingDevHist.size()>300)
+            fDriveControlTrackingDevHist.pop_front();
+
+        WriteHist(d, "hist-control-deviation", fDriveControlTrackingDevHist, 120);
+
+        ostringstream out;
+        out << d.GetJavaDate() << '\n';
+
+        out << HTML::kWhite << '\t' << fDriveControlSourceName << '\n';
+        out << setprecision(5);
+        out << HTML::kWhite << '\t' << Ra  << '\n';
+        out << HTML::kWhite << '\t' << Dec << '\n';
+        out << setprecision(3);
+        out << HTML::kWhite << '\t' << Zd  << '\n';
+        out << HTML::kWhite << '\t' << Az  << '\n';
+        out << HTML::kWhite << '\t' << dev << '\n';
+
+        fDriveControlMoonDist = -1;
+
+        if (fMoon.visible)
+        {
+            const double angle = fMoon.Angle(Ra, Dec);
+            out << Moon::Color(angle) << '\t' << setprecision(3) << angle << '\n';
+
+            fDriveControlMoonDist = angle;
+        }
+        else
+            out << HTML::kWhite << "\t&mdash; \n";
+
+        ofstream(fPath+"/tracking.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleDriveSource(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "DriveControl:Source", 7*4+2, true))
+            return GetCurrentState();
+
+        const double *ptr = d.Ptr<double>();
+
+        const double ra   = ptr[0];  // Ra[h]
+        const double dec  = ptr[1];  // Dec[deg]
+        const double woff = ptr[4];  // Wobble offset [deg]
+        const double wang = ptr[5];  // Wobble angle  [deg]
+
+        fDriveControlSourceName = d.Ptr<char>(6*8);
+
+        ostringstream out;
+        out << d.GetJavaDate() << '\n';
+
+        out << HTML::kWhite << '\t' << fDriveControlSourceName << '\n';
+        out << setprecision(5);
+        out << HTML::kWhite << '\t' << ra  << '\n';
+        out << HTML::kWhite << '\t' << dec << '\n';
+        out << setprecision(3);
+        out << HTML::kWhite << '\t' << woff << '\n';
+        out << HTML::kWhite << '\t' << wang << '\n';
+
+        ofstream(fPath+"/source.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleFeedbackCalibratedCurrents(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "Feedback:CalibratedCurrents", (416+1+1+1+1+1+416+1+1)*sizeof(float)+sizeof(uint32_t)))
+            return GetCurrentState();
+
+        const float *ptr = d.Ptr<float>();
+
+        double power_tot = 0;
+        double power_apd = 0;
+
+        if (fBiasControlVoltageVec.size()>0)
+        {
+            // Calibrate the data (subtract offset)
+            for (int i=0; i<320; i++)
+            {
+                // Group index (0 or 1) of the of the pixel (4 or 5 pixel patch)
+                const int N = fPixelMap.hv(i).count();
+
+                // Serial resistor of the individual G-APDs
+                double R5 = 3900/N;
+
+                // This is also valid for the patches with wrong resistors,
+                // because Iapd is a factor f larger but R a factor f smaller
+                double Iapd = ptr[i] * 1e-6;  // [A]
+                double Iout = Iapd*N;         // [A]
+
+                double UdrpCam =     1000 *Iout;  // Voltage seen by everything in Camera
+                double UdrpApd = (R5+2000)*Iout;  // Voltage seen by G-APD
+
+                const double pwrCam = Iout * (fBiasControlVoltageVec[i]-UdrpCam);
+                const double pwrApd = Iout * (fBiasControlVoltageVec[i]-UdrpApd);
+
+                // Total power participated in the camera at the G-APD
+                // and the serial resistors (total voltage minus voltage
+                // drop at resistors in bias crate)
+                power_tot += pwrCam;
+
+                // Power consumption per G-APD
+                power_apd += pwrApd;
+            }
+        }
+
+        // Divide by number of summed channels, convert to mW
+        power_apd /= 320e-3; // [mW]
+
+        if (power_tot<1e-3)
+            power_tot = 0;
+        if (power_apd<1e-3)
+            power_apd = 0;
+
+        fBiasControlPowerTot = power_tot;
+
+        // --------------------------------------------------------
+
+        // Get the maximum of each patch
+        vector<float> val(320, 0);
+        for (int i=0; i<320; i++)
+        {
+            const int idx = (fPixelMap.hv(i).hw()/9)*2+fPixelMap.hv(i).group();
+            val[idx] = ptr[i];
+        }
+
+        // Write the 160 patch values to a file
+        WriteCam(d, "cam-biascontrol-current", val, 100);
+
+        // --------------------------------------------------------
+
+        const Statistics stat(vector<float>(ptr, ptr+320));
+
+        // Exclude the three crazy channels
+        fBiasControlCurrentMed = stat.med;
+        fBiasControlCurrentMax = stat.max;
+
+        // Store a history of the last 60 entries
+        fBiasControlCurrentHist.push_back(fBiasControlCurrentMed);
+        if (fBiasControlCurrentHist.size()>360)
+            fBiasControlCurrentHist.pop_front();
+
+        // write the history to a file
+        WriteHist(d, "hist-biascontrol-current", fBiasControlCurrentHist, 125);
+
+        // --------------------------------------------------------
+
+        string col1 = HTML::kGreen;
+        string col2 = HTML::kGreen;
+        string col3 = HTML::kGreen;
+        string col4 = HTML::kGreen;
+
+        if (stat.min>90)
+            col1 = HTML::kYellow;
+        if (stat.min>110)
+            col1 = HTML::kRed;
+
+        if (stat.med>90)
+            col2 = HTML::kYellow;
+        if (stat.med>110)
+            col2 = HTML::kRed;
+
+        if (stat.avg>90)
+            col3 = HTML::kYellow;
+        if (stat.avg>110)
+            col3 = HTML::kRed;
+
+        if (stat.max>90)
+            col4 = HTML::kYellow;
+        if (stat.max>110)
+            col4 = HTML::kRed;
+
+        ostringstream out;
+        out << setprecision(3);
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kGreen << '\t' << "yes" << '\n';
+        out << col1 << '\t' << stat.min << '\n';
+        out << col2 << '\t' << stat.med << '\n';
+        out << col3 << '\t' << stat.avg << '\n';
+        out << col4 << '\t' << stat.max << '\n';
+        out << HTML::kWhite << '\t' << power_tot << "W [" << power_apd << "mW]\n";
+        ofstream(fPath+"/current.data") << out.str();
+
+        // --------------------------------------------------------
+
+        const float Unom = ptr[2*416+6];
+        const float Utmp = ptr[2*416+7];
+
+        vector<float> Uov(ptr+416+6, ptr+416+6+320);
+
+        WriteCam(d, "cam-feedback-overvoltage", Uov, 0.2, 1.0);
+
+        const Statistics stat2(Uov);
+
+        out.str("");
+        out << d.GetJavaDate() << '\n';
+        out << setprecision(3);
+        out << HTML::kWhite << '\t' << Utmp << '\n';
+        out << HTML::kWhite << '\t' << Unom << '\n';
+        out << HTML::kWhite << '\t' << stat2.min << '\n';
+        out << HTML::kWhite << '\t' << stat2.med << '\n';
+        out << HTML::kWhite << '\t' << stat2.avg << '\n';
+        out << HTML::kWhite << '\t' << stat2.max << '\n';
+        ofstream(fPath+"/feedback.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleBiasCurrent(const EventImp &d)
+    {
+        if (fDimFeedback.state()>=Feedback::State::kCalibrated)
+            return GetCurrentState();
+
+        if (!CheckDataSize(d, "BiasControl:Current", 832))
+            return GetCurrentState();
+
+        // Convert dac counts to uA
+        vector<float> v(320);
+        for (int i=0; i<320; i++)
+            v[i] = d.Ptr<uint16_t>()[i] * 5000./4096;
+
+        fBiasControlPowerTot = 0;
+
+        // Get the maximum of each patch
+        vector<float> val(320, 0);
+        for (int i=0; i<320; i++)
+        {
+            const PixelMapEntry &hv = fPixelMap.hv(i);
+            if (!hv)
+                continue;
+
+            const int idx = (hv.hw()/9)*2+hv.group();
+            val[idx] = v[i];
+        }
+
+        // Write the 160 patch values to a file
+        WriteCam(d, "cam-biascontrol-current", val, 1000);
+
+        const Statistics stat(v, 0, 3);
+
+        // Exclude the three crazy channels
+        fBiasControlCurrentMed = stat.med;
+        fBiasControlCurrentMax = stat.max;
+
+        // Store a history of the last 60 entries
+        fBiasControlCurrentHist.push_back(fBiasControlCurrentMed);
+        if (fBiasControlCurrentHist.size()>360)
+            fBiasControlCurrentHist.pop_front();
+
+        // write the history to a file
+        WriteHist(d, "hist-biascontrol-current", fBiasControlCurrentHist, 1000);
+
+        ostringstream out;
+        out << setprecision(3);
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite<< '\t' << "no" << '\n';
+        out << HTML::kWhite << '\t' << stat.min << '\n';
+        out << HTML::kWhite << '\t' << stat.med << '\n';
+        out << HTML::kWhite << '\t' << stat.avg << '\n';
+        out << HTML::kWhite << '\t' << stat.max << '\n';
+        out << HTML::kWhite << '\t' << "---\n";
+        ofstream(fPath+"/current.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleBiasVoltage(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "BiasControl:Voltage", 1664))
+        {
+            fBiasControlVoltageVec.clear();
+            return GetCurrentState();
+        }
+
+        fBiasControlVoltageVec.assign(d.Ptr<float>(), d.Ptr<float>()+320);
+
+        const Statistics stat(fBiasControlVoltageVec);
+
+        fBiasControlVoltageMed = stat.med;
+
+        vector<float> val(320, 0);
+        for (int i=0; i<320; i++)
+        {
+            const int idx = (fPixelMap.hv(i).hw()/9)*2+fPixelMap.hv(i).group();
+            val[idx] = fBiasControlVoltageVec[i];
+        }
+
+        if (fDimBiasControl.state()==BIAS::State::kVoltageOn || fDimBiasControl.state()==BIAS::State::kRamping)
+            WriteCam(d, "cam-biascontrol-voltage", val, 10, 65);
+        else
+            WriteCam(d, "cam-biascontrol-voltage", val, 75);
+
+        ostringstream out;
+        out << setprecision(3);
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << stat.min << '\n';
+        out << HTML::kWhite << '\t' << stat.med << '\n';
+        out << HTML::kWhite << '\t' << stat.avg << '\n';
+        out << HTML::kWhite << '\t' << stat.max << '\n';
+        ofstream(fPath+"/voltage.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleFadEvents(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "FadControl:Events", 4*4))
+        {
+            fFadControlNumEvents = -1;
+            return GetCurrentState();
+        }
+
+        fFadControlNumEvents = d.Get<uint32_t>();
+
+        return GetCurrentState();
+    }
+
+    int HandleFadStartRun(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "FadControl:StartRun", 16))
+        {
+            fFadControlStartRun = -1;
+            return GetCurrentState();
+        }
+
+        fFadControlStartRun = d.Get<int64_t>();
+
+        return GetCurrentState();
+    }
+
+    int HandleFadDrsRuns(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "FadControl:DrsRuns", 5*4))
+        {
+            fFadControlDrsStep = -1;
+            return GetCurrentState();
+        }
+
+        const uint32_t *ptr = d.Ptr<uint32_t>();
+        fFadControlDrsStep    = ptr[0];
+        fFadControlDrsRuns[0] = ptr[1];
+        fFadControlDrsRuns[1] = ptr[2];
+        fFadControlDrsRuns[2] = ptr[3];
+
+        return GetCurrentState();
+    }
+
+    int HandleFadConnections(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "FadControl:Connections", 41))
+        {
+            //fStatusEventBuilderLabel->setText("Offline");
+            return GetCurrentState();
+        }
+
+        string rc(40, '-'); // orange/red [45]
+
+        const uint8_t *ptr = d.Ptr<uint8_t>();
+
+        int c[4] = { '.', '.', '.', '.' };
+
+        for (int i=0; i<40; i++)
+        {
+            const uint8_t stat1 = ptr[i]&3;
+            const uint8_t stat2 = ptr[i]>>3;
+
+            if (stat1==0 && stat2==0)
+                rc[i] = '.'; // gray [46]
+            else
+                if (stat1>=2 && stat2==8)
+                    rc[i] = stat1==2?'+':'*';  // green [43] : check [42]
+
+            if (rc[i]<c[i/10])
+                c[i/10] = rc[i];
+        }
+
+        string col[4];
+        for (int i=0; i<4; i++)
+            switch (c[i])
+            {
+            case '.': col[i]=HTML::kWhite;  break;
+            case '-': col[i]=HTML::kRed;    break;
+            case '+': col[i]=HTML::kYellow; break;
+            case '*': col[i]=HTML::kGreen;  break;
+            }
+
+        ostringstream out;
+        out << setprecision(3);
+        out << d.GetJavaDate() << '\n';
+        out << col[0] << '\t' << rc.substr( 0, 10) << '\n';
+        out << col[1] << '\t' << rc.substr(10, 10) << '\n';
+        out << col[2] << '\t' << rc.substr(20, 10) << '\n';
+        out << col[3] << '\t' << rc.substr(30, 10) << '\n';
+        ofstream(fPath+"/fad.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    /*
+    int HandleFtmControlStateChange()
+    {
+        const int32_t &last  = fDimFtmControl.last.second;
+        const int32_t &state = fDimFtmControl.state();
+
+        // If a new run has been started ensure that the counter
+        // is reset. The reset in HandleFtmTriggerRates might
+        // arrive only after the run was started.
+        if (last!=FTM::State::kTriggerOn && state==MCP::State::kTriggerOn)
+            fFtmControlTriggerRateTooLow = -1;
+
+        return StateMachineImp::kSM_KeepState;
+    }*/
+
+
+    int HandleFtmTriggerRates(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "FtmControl:TriggerRates", 24+160+640+8))
+        {
+            fFtmControlTriggerRateTooLow = 0;
+            return GetCurrentState();
+        }
+
+        const FTM::DimTriggerRates &dim = d.Ref<FTM::DimTriggerRates>();
+
+        // If the trigger rate is too low...
+        // ... and the run was not just started (can lead to very small elapsed times)
+        // ... and the trigger is switched on
+        // ... and there was no state change (then the trigger was started or stopped)
+        fFtmControlTriggerRateTooLow =
+            dim.fTriggerRate<1 && dim.fElapsedTime>0.45 &&
+            (fFtmControlState&FTM::kFtmStates)==FTM::kFtmRunning &&
+            (fFtmControlState&FTM::kFtmStates)==(d.GetQoS()&FTM::kFtmStates);
+
+        fFtmControlState = d.GetQoS();
+
+        const float *brates = dim.fBoardRate; // Board rate
+        const float *prates = dim.fPatchRate; // Patch rate
+
+        // Store a history of the last 60 entries
+        fFtmControlTriggerRateHist.push_back(dim.fTriggerRate);
+        if (fFtmControlTriggerRateHist.size()>300)
+            fFtmControlTriggerRateHist.pop_front();
+
+        // FIXME: Add statistics for all kind of rates
+
+        WriteHist(d, "hist-ftmcontrol-triggerrate",
+                  fFtmControlTriggerRateHist, 100);
+        WriteCam(d, "cam-ftmcontrol-boardrates",
+                 vector<float>(brates, brates+40), 10);
+        WriteCam(d, "cam-ftmcontrol-patchrates",
+                 vector<float>(prates, prates+160), 10);
+
+        ostringstream out;
+        out << setprecision(3);
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << dim.fTriggerRate << '\n';
+
+        ofstream(fPath+"/trigger.data") << out.str();
+
+        const Statistics bstat(vector<float>(brates, brates+ 40));
+        const Statistics pstat(vector<float>(prates, prates+160));
+
+        out.str("");
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << bstat.min << '\n';
+        out << HTML::kWhite << '\t' << bstat.med << '\n';
+        out << HTML::kWhite << '\t' << bstat.avg << '\n';
+        out << HTML::kWhite << '\t' << bstat.max << '\n';
+        ofstream(fPath+"/boardrates.data") << out.str();
+
+        out.str("");
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << pstat.min << '\n';
+        out << HTML::kWhite << '\t' << pstat.med << '\n';
+        out << HTML::kWhite << '\t' << pstat.avg << '\n';
+        out << HTML::kWhite << '\t' << pstat.max << '\n';
+        ofstream(fPath+"/patchrates.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleFtmStaticData(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "FtmControl:StaticData", sizeof(FTM::DimStaticData)))
+            return GetCurrentState();
+
+        // If the FTM is in state Configuring, the clock conditioner
+        // is always reported to be unlocked
+        fFtmControlState = d.GetQoS();
+
+        const FTM::DimStaticData &dat = d.Ref<FTM::DimStaticData>();
+
+        vector<uint16_t> vecp(dat.fThreshold, dat.fThreshold+160);
+        vector<uint16_t> vecb(dat.fMultiplicity, dat.fMultiplicity+40);
+
+        WriteCam(d, "cam-ftmcontrol-thresholds-patch", vecp, 1000);
+        WriteCam(d, "cam-ftmcontrol-thresholds-board", vecb,  100);
+
+        const Statistics statp(vecp);
+        const Statistics statb(vecb);
+
+        fFtmPatchThresholdMed = statp.med;
+        fFtmBoardThresholdMed = statb.med;
+
+        ostringstream out;
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << statb.min << '\n';
+        out << HTML::kWhite << '\t' << statb.med << '\n';
+        out << HTML::kWhite << '\t' << statb.max << '\n';
+        ofstream(fPath+"/thresholds-board.data") << out.str();
+
+        out.str("");
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << statp.min << '\n';
+        out << HTML::kWhite << '\t' << statp.med << '\n';
+        out << HTML::kWhite << '\t' << statp.max << '\n';
+        ofstream(fPath+"/thresholds-patch.data") << out.str();
+
+        out.str("");
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << statb.med << '\n';
+        out << HTML::kWhite << '\t' << statp.med << '\n';
+        ofstream(fPath+"/thresholds.data") << out.str();
+
+        out.str("");
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << dat.fTriggerInterval << '\n';
+        out << HTML::kWhite << '\t';
+        if (dat.HasPedestal())
+            out << dat.fTriggerSeqPed;
+        else
+            out << "&ndash;";
+        out << ':';
+        if (dat.HasLPext())
+            out << dat.fTriggerSeqLPext;
+        else
+            out << "&ndash;";
+        out << ':';
+        if (dat.HasLPint())
+            out << dat.fTriggerSeqLPint;
+        else
+            out << "&ndash;";
+        out << '\n';
+
+        out << HTML::kWhite << '\t' << (dat.HasTrigger()?"on":"off") << " / " << (dat.HasExt1()?"on":"off") << " / " << (dat.HasExt2()?"on":"off") << '\n';
+        out << HTML::kWhite << '\t' << (dat.HasVeto()?"on":"off") << " / " << (dat.HasClockConditioner()?"time cal":"marker") << '\n';
+        out << HTML::kWhite << '\t' << dat.fMultiplicityPhysics << " / " << dat.fMultiplicityCalib << '\n';
+        out << HTML::kWhite << '\t' << dat.fWindowPhysics << '\t' << dat.fWindowCalib << '\n';
+        out << HTML::kWhite << '\t' << dat.fDelayTrigger << '\t' << dat.fDelayTimeMarker << '\n';
+        out << HTML::kWhite << '\t' << dat.fDeadTime << '\n';
+
+        int64_t vp = dat.fPrescaling[0];
+        for (int i=1; i<40; i++)
+            if (vp!=dat.fPrescaling[i])
+                vp = -1;
+
+        if (vp<0)
+            out << HTML::kYellow << "\tdifferent\n";
+        else
+            out << HTML::kWhite  << '\t' << 0.5*vp << "\n";
+
+        ofstream(fPath+"/ftm.data") << out.str();
+
+        // Active FTUs: IsActive(i)
+        // Enabled Pix: IsEnabled(i)
+
+        return GetCurrentState();
+    }
+
+    int HandleFtmFtuList(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "FtmControl:FtuList", sizeof(FTM::DimFtuList)))
+            return GetCurrentState();
+
+        const FTM::DimFtuList &sdata = d.Ref<FTM::DimFtuList>();
+
+        ostringstream out;
+        out << d.GetJavaDate() << '\n';
+
+        int cnt = 0;
+        for (int i=0; i<4; i++)
+        {
+            out << HTML::kWhite << '\t';
+            for (int j=0; j<10; j++)
+                if (sdata.IsActive(i*10+j))
+                {
+                    if (sdata.fPing[i*10+j]==1)
+                    {
+                        out << '*';
+                        cnt++;
+                    }
+                    else
+                        out << sdata.fPing[i*10+j];
+                }
+                else
+                    out << '-';
+            out << '\n';
+        }
+
+        fFtmControlFtuOk = cnt==40;
+
+        ofstream(fPath+"/ftu.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleFadEventData(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "FadControl:EventData", 23040))
+            return GetCurrentState();
+
+        const float *dat = d.Ptr<float>(1440*sizeof(float)*2);
+
+        /*
+        vector<float> max(320, 0);
+        for (int i=0; i<1440; i++)
+        {
+            if (i%9==8)
+                continue;
+
+            const int idx = (fPixelMap.hw(i).hw()/9)*2+fPixelMap.hw(i).group();
+            const double v = dat[i]/1000;
+            //if (v>max[idx])
+            //    max[idx]=v;
+
+            max[idx] += v/4;
+            } */
+
+        vector<float> val(1440);
+        for (int i=0; i<1440; i++)
+            val[i] = dat[i%9==8 ? i-2 : i]/1000;
+
+        vector<float> sorted(val);
+        nth_element(sorted.begin(), sorted.begin()+3, sorted.end(),
+                    std::greater<float>());
+
+        const uint32_t trig = d.GetQoS() & FAD::EventHeader::kLPext;
+
+        const float min = fFadControlDrsRuns[0]==0 ? -1 : 0;
+
+        float scale = 2;
+        if (trig&FAD::EventHeader::kLPext)
+            scale = 1;
+        if (trig&FAD::EventHeader::kPedestal)
+            scale = 0.25;
+        if (trig==0)
+            scale = max(0.25f, sorted[3]);
+
+        // assume it is drs-gain
+        //if ((trig&FAD::EventHeader::kPedestal) && fFadControlDrsRuns[0]>0 && fFadControlDrsRuns[1]==0)
+        //    min = 0.75;
+
+        WriteCam(d, "cam-fadcontrol-eventdata", val, scale, min);
+
+        return GetCurrentState();
+    }
+
+    int HandleStats(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "Stats", 4*8))
+        {
+            fFreeSpace = UINT64_MAX;
+            return GetCurrentState();
+        }
+
+        const DimWriteStatistics::Stats &s = d.Ref<DimWriteStatistics::Stats>();
+        fFreeSpace = s.freeSpace;
+
+        return GetCurrentState();
+    }
+
+    int HandleFscTemperature(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "FscControl:Temperature", 240))
+            return GetCurrentState();
+
+        const float *ptr = d.Ptr<float>(4);
+
+        double avg =   0;
+        double rms =   0;
+        double min =  99;
+        double max = -99;
+
+        int num = 0;
+        for (const float *t=ptr; t<ptr+31; t++)
+        {
+            if (*t==0)
+                continue;
+
+            if (*t>max)
+                max = *t;
+
+            if (*t<min)
+                min = *t;
+
+            avg += *t;
+            rms += *t * *t;
+
+            num++;
+        }
+
+        avg /= num;
+        rms /= num;
+        rms += avg*avg;
+        rms = rms<0 ? 0 : sqrt(rms);
+
+        // Clean broken reports
+        static double pre_rms1 = 1.5;
+        static double pre_rms2 = 0;
+
+        const double cut = pre_rms1 + 0.1;
+
+        const bool reject = rms>cut && pre_rms2<cut;
+
+        pre_rms2 = pre_rms1;
+        pre_rms1 = rms;
+
+        if (reject)
+            return GetCurrentState();
+
+
+        if (!fMagicWeatherHist[kTemp].empty())
+        {
+            fFscControlTemperatureHist.push_back(avg-fMagicWeatherHist[kTemp].back());
+            if (fFscControlTemperatureHist.size()>300)
+                fFscControlTemperatureHist.pop_front();
+        }
+
+        const Statistics stat(fFscControlTemperatureHist);
+
+        ostringstream out;
+        out << setprecision(3);
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << fFscControlHumidityAvg << '\n';
+        out << HTML::kWhite << '\t' << stat.min << '\n';
+        out << HTML::kWhite << '\t' << stat.avg << '\n';
+        out << HTML::kWhite << '\t' << stat.max << '\n';
+
+        ofstream(fPath+"/fsc.data") << out.str();
+
+        WriteHist(d, "hist-fsccontrol-temperature",
+                  fFscControlTemperatureHist, 10);
+
+        out.str("");
+        out << setprecision(3);
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << max << '\n';
+        out << HTML::kWhite << '\t' << avg << '\n';
+        out << HTML::kWhite << '\t' << min << '\n';
+
+        ofstream(fPath+"/camtemp.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleFscBiasTemp(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "FscControl:BiasTemp", 323*4))
+            return GetCurrentState();
+
+        const float *ptr = d.Ptr<float>(4);
+        const float avg = d.Get<float>(321*4);
+        //const float rms = d.Get<float>(322*4);
+
+        vector<double> tout(320);
+        for (int i=0; i<320; i++)
+        {
+            const int idx = (fPixelMap.hv(i).hw()/9)*2+fPixelMap.hv(i).group();
+            tout[idx] = ptr[i];
+        }
+
+        WriteCam(d, "cam-fsccontrol-temperature", tout, 3, avg-1.75);
+
+        return GetCurrentState();
+    }
+
+    int HandleFscHumidity(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "FscControl:Humidity", 5*4))
+            return GetCurrentState();
+
+        const float *ptr = d.Ptr<float>(4);
+
+        double avg =0;
+        int num = 0;
+
+        for (const float *t=ptr; t<ptr+4; t++)
+            if (*t>0 && *t<=100 && t!=ptr+2 /*excl broken sensor*/)
+            {
+                avg += *t;
+                num++;
+            }
+
+        fFscControlHumidityAvg = num>0 ? avg/num : 0;
+
+        return GetCurrentState();
+    }
+
+    int HandleGpsNema(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "GpsControl:Nema", sizeof(GPS::NEMA)))
+            return GetCurrentState();
+
+        const GPS::NEMA &nema = d.Ref<GPS::NEMA>();
+
+        ostringstream out;
+
+        out << fixed;
+        out << d.GetJavaDate() << '\n';
+
+        switch (nema.qos)
+        {
+        case 1:  out << HTML::kGreen << "\tGPS fix [1]\n"; break;
+        case 2:  out << HTML::kGreen << "\tDifferential fix [2]\n"; break;
+        default: out << HTML::kRed << "\tinvalid [" << nema.qos << "]\n"; break;
+        }
+
+        out << HTML::kWhite << '\t' << nema.count << '\n';
+        out << HTML::kWhite << '\t' << Time(floor(Time().Mjd())+nema.time).GetAsStr("%H:%M:%S") << '\n';
+        out << HTML::kWhite << '\t' << setprecision(4) << nema.lat    << '\n';
+        out << HTML::kWhite << '\t' << setprecision(4) << nema.lng    << '\n';
+        out << HTML::kWhite << '\t' << setprecision(1) << nema.height << "\n";
+        out << HTML::kWhite << '\t' << setprecision(1) << nema.hdop   << "\n";
+        out << HTML::kWhite << '\t' << setprecision(1) << nema.geosep << "\n";
+
+        ofstream(fPath+"/gps.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleSqmData(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "SqmControl:Data", sizeof(SQM::Data)))
+            return GetCurrentState();
+
+        const SQM::Data &data = d.Ref<SQM::Data>();
+
+        ostringstream out;
+
+        out << fixed;
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << setprecision(2) << data.mag    << '\n';
+        out << HTML::kWhite << '\t' <<                    data.freq   << '\n';
+        out << HTML::kWhite << '\t' <<                    data.counts << '\n';
+        out << HTML::kWhite << '\t' << setprecision(3) << data.period << '\n';
+        out << HTML::kWhite << '\t' << setprecision(1) << data.temp   << "\n";
+
+        ofstream(fPath+"/sqm.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    string GetTempColor(float t)
+    {
+        if (t>25 && t<30)
+            return HTML::kGreen;
+
+        if (t<20 || t>35)
+            return HTML::kRed;
+
+        return HTML::kYellow;
+    }
+
+    int HandleTemperatureData(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "Temperature:Data", 3*sizeof(float)))
+            return GetCurrentState();
+
+        const float *temp = d.Ptr<float>();
+
+        ostringstream out;
+
+        out << fixed << setprecision(1);
+        out << d.GetJavaDate() << '\n';
+
+        out << GetTempColor(temp[1]) << '\t' << temp[1] << '\n';
+        out << GetTempColor(temp[0]) << '\t' << temp[0] << '\n';
+        out << GetTempColor(temp[2]) << '\t' << temp[2] << '\n';
+
+        ofstream(fPath+"/temperature.data") << out.str();
+
+        fTemperatureControlHist.push_back(temp[0]);
+        if (fTemperatureControlHist.size()>60) // 1h
+            fTemperatureControlHist.pop_front();
+
+        WriteHist(d, "hist-temperaturecontrol",
+                  fTemperatureControlHist, 45, 0);
+
+        return GetCurrentState();
+    }
+
+    int HandleAgilentData(const EventImp &d, const string &ext)
+    {
+        if (!CheckDataSize(d, ("Agilent"+ext+":Data").c_str(), 4*sizeof(float)))
+            return GetCurrentState();
+
+        const float *data = d.Ptr<float>();
+
+        ostringstream out;
+
+        out << fixed << setprecision(1);
+        out << d.GetJavaDate() << '\n';
+
+        out << HTML::kWhite << '\t' << data[0] << '\n';
+        out << HTML::kWhite << '\t' << data[1] << '\n';
+        out << HTML::kWhite << '\t' << data[2] << '\n';
+        out << HTML::kWhite << '\t' << data[3] << '\n';
+
+        ofstream(fPath+"/agilent"+ext+".data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleRateScanData(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "RateScan:Data", 824))
+            return GetCurrentState();
+
+        const uint64_t id   = d.Get<uint64_t>();
+        const float   *rate = d.Ptr<float>(20);
+
+        if (fRateScanDataId!=id)
+        {
+            for (int i=0; i<41; i++)
+                fRateScanDataHist[i].clear();
+            fRateScanDataId = id;
+        }
+        fRateScanDataHist[0].push_back(log10(rate[0]));
+
+        double max = 0;
+        for (int i=1; i<41; i++)
+        {
+            fRateScanDataHist[i].push_back(log10(rate[i]));
+            if (rate[i]>max)
+                max = rate[i];
+        }
+
+        // Cycle by time!
+        fRateScanBoard ++;
+        fRateScanBoard %= 40;
+
+        WriteHist(d, "hist-ratescan",      fRateScanDataHist[0],                10, -2);
+        WriteCam(d,  "cam-ratescan-board", fRateScanDataHist[fRateScanBoard+1], 10, -4);
+
+        ostringstream out;
+        out << setprecision(3);
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << fFtmBoardThresholdMed << '\n';
+        out << HTML::kWhite << '\t' << fFtmPatchThresholdMed << '\n';
+        out << HTML::kWhite << '\t' << floor(pow(10, fRateScanDataHist[0].back())+.5) << '\n';
+        out << HTML::kWhite << '\t' << floor(max+.5) << '\n';
+
+        ofstream(fPath+"/ratescan.data") << out.str();
+
+        out.str("");
+        out << d.GetJavaDate() << '\n';
+        out << HTML::kWhite << '\t' << int(fRateScanBoard) << '\n';
+        out << HTML::kWhite << '\t' << pow(10, fRateScanDataHist[fRateScanBoard+1].back()) << '\n';
+
+        ofstream(fPath+"/ratescan_board.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleRateControlThreshold(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "RateControl:Threshold", 18))
+            return GetCurrentState();
+
+        const uint16_t th = d.Get<uint16_t>();
+
+        fRateControlThreshold.push_back(th);
+        if (fRateControlThreshold.size()>300)
+            fRateControlThreshold.pop_front();
+
+        WriteHist(d, "hist-ratecontrol-threshold", fRateControlThreshold, 1000);
+
+        return GetCurrentState();
+    }
+
+    int HandleChatMsg(const EventImp &d)
+    {
+        if (d.GetSize()==0 || d.GetQoS()!=MessageImp::kComment)
+            return GetCurrentState();
+
+        if (Time()<d.GetTime()+boost::posix_time::minutes(1))
+            SetAudio("message");
+
+        fChatHist.add(d.GetText(), d.GetTime());
+
+        ostringstream out;
+        out << setprecision(3);
+        out << Header(d) << '\n';
+        out << HTML::kWhite << '\t';
+        out << "<->" << fChatHist.rget() << "</->";
+        out << '\n';
+
+        ofstream(fPath+"/chat.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    // -------------------------------------------------------------------
+
+    int HandleDoTest(const EventImp &d)
+    {
+        ostringstream out;
+        out << d.GetJavaDate() << '\n';
+
+        switch (d.GetQoS())
+        {
+        case -3: out << HTML::kWhite << "\tNot running\n"; break;
+        case -2: out << HTML::kBlue  << "\tLoading\n";     break;
+        case -1: out << HTML::kBlue  << "\tStarted\n";     break;
+        default: out << HTML::kGreen << "\tRunning [" << d.GetQoS() << "]\n"; break;
+        }
+
+        ofstream(fPath+"/dotest.data") << out.str();
+
+        return StateMachineImp::kSM_KeepState;
+    }
+
+    // -------------------------------------------------------------------
+
+    /*
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        Fatal(msg);
+        return false;
+    }*/
+
+    int Print() const
+    {
+        Out() << fDimDNS            << endl;
+        Out() << fDimMcp            << endl;
+        Out() << fDimControl        << endl;
+        Out() << fDimDataLogger     << endl;
+        Out() << fDimDriveControl   << endl;
+        Out() << fDimTimeCheck      << endl;
+        Out() << fDimFadControl     << endl;
+        Out() << fDimFtmControl     << endl;
+        Out() << fDimBiasControl    << endl;
+        Out() << fDimFeedback       << endl;
+        Out() << fDimRateControl    << endl;
+        Out() << fDimFscControl     << endl;
+        Out() << fDimAgilentControl24 << endl;
+        Out() << fDimAgilentControl50 << endl;
+        Out() << fDimAgilentControl80 << endl;
+        Out() << fDimPwrControl     << endl;
+        Out() << fDimLidControl     << endl;
+        Out() << fDimMagicWeather   << endl;
+        Out() << fDimTngWeather     << endl;
+        Out() << fDimMagicLidar     << endl;
+        Out() << fDimTemperature    << endl;
+        Out() << fDimRateScan       << endl;
+        Out() << fDimChat           << endl;
+        Out() << fDimSkypeClient    << endl;
+
+        return GetCurrentState();
+    }
+
+    string GetStateHtml(const DimState &state, int green) const
+    {
+        if (!state.online())
+            return HTML::kWhite+"\t&mdash;\n";
+
+        if (&state==&fDimControl)
+            return HTML::kGreen +'\t'+(state.state()==0?"Idle":fDimControl.shortmsg)+'\n';
+
+        const State rc = state.description();
+
+        // Sate not found in list, server online (-3: offline; -2: not found)
+        if (rc.index==-2)
+        {
+            ostringstream out;
+            out << HTML::kWhite << '\t' << state.state() << '\n';
+            return out.str();
+        }
+
+        //ostringstream msg;
+        //msg << HTML::kWhite << '\t' << rc.name << " [" << rc.index << "]\n";
+        //return msg.str();
+
+        if (rc.index<0)
+            return HTML::kWhite + "\t&mdash;\n";
+
+        string col = HTML::kGreen;
+        if (rc.index<green)
+            col = HTML::kYellow;
+        if (rc.index>0xff)
+            col = HTML::kRed;
+
+        return col + '\t' + rc.name + '\n';
+    }
+
+    bool SetError(bool b, const string &err)
+    {
+        if (!b)
+        {
+            fErrorList.erase(err);
+            return 0;
+        }
+
+        const bool isnew = fErrorList.insert(err).second;
+        if (isnew)
+            fErrorHist.add(err);
+
+        return isnew;
+    }
+
+#ifdef HAVE_NOVA
+
+    //vector<pair<Nova::EquPosn, double>> fMoonCoords;
+
+    vector<Nova::SolarObjects> fCoordinates;
+
+    void CalcCoordinates(double jd)
+    {
+        jd = floor(jd);
+
+        fCoordinates.clear();
+        for (double h=0; h<1; h+=1./(24*12))
+            fCoordinates.emplace_back(jd+h);
+    }
+
+    pair<vector<float>, pair<Time, float>> GetVisibility(Nova::EquPosn *src=0)
+    {
+        const double sunset  = fSun.fSetAstronomical.JD();
+        const double sunrise = fSun.fRiseAstronomical.JD();
+
+        Nova::EquPosn  moon;
+        Nova::EquPosn *pos = src ? src : &moon;
+
+        double max   = 0;
+        double maxjd = 0;
+
+        int cnt = 0;
+
+        vector<float> alt;
+        for (auto it=fCoordinates.begin(); it!=fCoordinates.end(); it++)
+        {
+            if (src==0)
+                moon = it->fMoonEqu;
+
+            const Nova::HrzPosn hrz = Nova::GetHrzFromEqu(*pos, it->fJD);
+
+            if (it->fJD>sunset && it->fJD<sunrise)
+                alt.push_back(hrz.alt);
+
+            if (hrz.alt>max)
+            {
+                max   = hrz.alt;
+                maxjd = it->fJD;
+            }
+
+            if (it->fJD>sunset && it->fJD<sunrise && hrz.alt>15)
+                cnt++;
+        }
+
+        if (max<=15 || cnt==0)
+            return make_pair(vector<float>(), make_pair(Time(), 0));
+
+        return make_pair(alt, make_pair(maxjd, maxjd>sunset&&maxjd<sunrise?max:0));
+    }
+
+    pair<vector<float>, pair<Time, float>> GetLightCondition(const Nova::EquPosn &src_pos)
+    {
+        const double sunset  = fSun.fSetAstronomical.JD();
+        const double sunrise = fSun.fRiseAstronomical.JD();
+
+        double max   = -1;
+        double maxjd =  0;
+
+        int cnt = 0;
+
+        vector<float> vec;
+        for (auto it=fCoordinates.begin(); it!=fCoordinates.end(); it++)
+        {
+            double cur = -1;
+
+            if (it->fJD>sunset && it->fJD<sunrise)
+            {
+                cur = FACT::PredictI(*it, src_pos);
+                vec.push_back(cur);
+            }
+
+            if (cur>max)
+            {
+                max   = cur;
+                maxjd = it->fJD;
+            }
+
+            if (it->fJD>sunset && it->fJD<sunrise && cur>0)
+                cnt++;
+        }
+
+        if (max<=0 || cnt==0)
+            return make_pair(vector<float>(), make_pair(Time(), 0));
+
+        return make_pair(vec, make_pair(maxjd, maxjd>sunset&&maxjd<sunrise?max:-1));
+    }
+#endif
+
+    void UpdateAstronomy()
+    {
+        Time now;
+
+        CalcCoordinates(now.JD());
+
+        fSun  = Sun (now);
+        fMoon = Moon(now);
+
+        vector<string> color(8, HTML::kWhite);
+        color[fSun.state%8] = HTML::kBlue;
+
+        ostringstream out;
+        out << setprecision(3);
+        out << now.JavaDate() << '\n';
+        out << color[0] << '\t' << fSun.fRiseDarkTime.GetAsStr("%H:%M") << '\n';
+        out << color[1] << '\t' << fSun.fRiseAstronomical.GetAsStr("%H:%M") << '\n';
+        out << color[2] << '\t' << fSun.fRiseCivil.GetAsStr("%H:%M") << '\n';
+        out << color[3] << '\t' << fSun.fRiseDayTime.GetAsStr("%H:%M") << '\n';
+
+        out << color[4] << '\t' << fSun.fSetDayTime.GetAsStr("%H:%M") << '\n';
+        out << color[5] << '\t' << fSun.fSetCivil.GetAsStr("%H:%M") << '\n';
+        out << color[6] << '\t' << fSun.fSetAstronomical.GetAsStr("%H:%M") << '\n';
+        out << color[7] << '\t' << fSun.fSetDarkTime.GetAsStr("%H:%M") << '\n';
+
+        ofstream(fPath+"/sun.data") << out.str();
+
+        color.assign(3, HTML::kWhite);
+        color[fMoon.state%3] = HTML::kBlue;
+
+        out.str("");
+        out << now.JavaDate() << '\n';
+
+        out << color[0] << '\t' << fMoon.fRise.GetAsStr("%H:%M") << '\n';
+        out << color[1] << '\t' << fMoon.fTransit.GetAsStr("%H:%M") << '\n';
+        out << color[2] << '\t' << fMoon.fSet.GetAsStr("%H:%M") << '\n';
+
+        out << (fSun.isday?HTML::kWhite:fMoon.color) << '\t' << fMoon.description << '\n';
+
+        if (!fMoon.visible)
+            out << HTML::kWhite << "\t&mdash;\t\n";
+        else
+        {
+            string col = HTML::kWhite;
+            if (!fSun.isday)
+            {
+                col = HTML::kGreen;
+                if (fMoon.zd>25)
+                    col = HTML::kYellow;
+                if (fMoon.zd>45 && fMoon.zd<80)
+                    col = HTML::kRed;
+                if (fMoon.zd>=80)
+                    col = HTML::kRed;
+            }
+            out << col << '\t' << fMoon.zd << '\t' << GetDir(fMoon.az) << '\n';
+        }
+
+        ostringstream out2, out3, out4;
+        out2 << setprecision(3);
+        out2 << now.JavaDate() << '\n';
+        out3 << now.JavaDate() << '\n';
+        out4 << now.JavaDate() << '\n';
+
+        struct Entry
+        {
+            string name;
+            float value;
+            int color;
+            Entry(const string &n, float v, int c) : name(n), value(v), color(c%8) { }
+
+            const string &Col() const
+            {
+                // If this list is updatd the number count in the constructor needs
+                // to be updated, too
+                static const string hcol[] = { "888", "8cf", "c8f", "bbb", "8fc", "cf8", "f8c", "fc8" };
+                return hcol[color];
+            }
+
+            vector<float> GetColor(double scale, double offset=0) const
+            {
+                vector<float> rc(3);
+                rc[0] = double(Col()[0])*scale/126+offset;
+                rc[1] = double(Col()[1])*scale/126+offset;
+                rc[2] = double(Col()[2])*scale/126+offset;
+                return rc;
+            }
+        };
+
+        multimap<Time, Entry> culmination;
+        multimap<Time, Entry> lightcond;
+        vector<vector<float>> alt;
+        vector<vector<float>> cur;
+
+#ifdef HAVE_NOVA
+        int ccol = 0;
+        int lcol = 0;
+
+        /*const*/ pair<vector<float>, pair<Time, float>> vism = GetVisibility();
+        if (!vism.first.empty())
+        {
+            const Entry entry("Moon", vism.second.second, ccol);
+            culmination.insert(make_pair(vism.second.first, entry));
+            const vector<float> col = entry.GetColor(75, 15);
+            vism.first.insert(vism.first.begin(), col.begin(), col.end());
+            alt.push_back(vism.first);
+
+            ccol++;
+        }
+#endif
+
+#ifdef HAVE_SQL
+        try
+        {
+            const mysqlpp::StoreQueryResult res =
+                Database(fDatabase).query("SELECT fSourceName, fRightAscension, fDeclination FROM Source WHERE fSourceTypeKEY=1").store();
+
+            out  << HTML::kWhite << '\t';
+            out2 << HTML::kWhite << '\t';
+            out3 << HTML::kWhite << '\t';
+            out4 << HTML::kWhite << '\t';
+
+            for (vector<mysqlpp::Row>::const_iterator v=res.begin(); v<res.end(); v++)
+            {
+                const string name = (*v)[0].c_str();
+                const double ra   = (*v)[1];
+                const double dec  = (*v)[2];
+#ifdef HAVE_NOVA
+                Nova::EquPosn pos;
+                pos.ra  = ra*15;
+                pos.dec = dec;
+
+                const Nova::ZdAzPosn hrz = Nova::GetHrzFromEqu(pos, now.JD());
+
+                /*const*/ pair<vector<float>, pair<Time, float>> vis = GetVisibility(&pos);
+                if (!vis.first.empty())
+                {
+                    const Entry entry(name, vis.second.second, ccol);
+                    culmination.insert(make_pair(vis.second.first, entry));
+                    const vector<float> col = entry.GetColor(75, 15);
+                    vis.first.insert(vis.first.begin(), col.begin(), col.end());
+                    alt.push_back(vis.first);
+
+                    ccol++;
+
+                    /*const*/ pair<vector<float>, pair<Time, float>> lc = GetLightCondition(pos);
+                    if (!lc.first.empty())
+                    {
+                        const Entry entry2(name, lc.second.second, lcol);
+                        lightcond.insert(make_pair(lc.second.first, entry2));
+                        const vector<float> col2 = entry2.GetColor(100);
+                        lc.first.insert(lc.first.begin(), col2.begin(), col2.end());
+                        cur.push_back(lc.first);
+
+                        lcol++;
+                    }
+                }
+
+                string col = HTML::kWhite;
+                if (hrz.zd<85)
+                    col = HTML::kRed;
+                if (hrz.zd<65)
+                    col = HTML::kYellow;
+                if (hrz.zd<30)
+                    col = HTML::kGreen;
+
+                out2 << "<tr bgcolor='" << col << "'>";
+                out2 << "<td>" << name << "</td>";
+                if (hrz.zd<85)
+                {
+                    out2 << "<td>" << hrz.zd << "&deg;</td>";
+                    out2 << "<td>" << GetDir(hrz.az) << "</td>";
+                }
+                else
+                    out2 << "<td/><td/>";
+                out2 << "</tr>";
+#endif
+                const int32_t angle = fMoon.Angle(ra, dec);
+
+                out << "<tr bgcolor='" << Moon::Color(angle) << "'>";
+                out << "<td>" << name << "</td>";
+                out << "<td>" << round(angle) << "&deg;</td>";
+                out << "</tr>";
+            }
+
+            for (auto it=culmination.begin(); it!=culmination.end(); it++)
+            {
+                const Entry &e = it->second;
+                if (it!=culmination.begin())
+                    out3 << ", ";
+                out3 << "<B#" << e.Col() << ">" << e.name << "</B>";
+                if (e.value>0)
+                    out3 << " [" << nearbyint(90-e.value) << "&deg;]";
+            }
+
+            out4 << setprecision(3);
+
+            for (auto it=lightcond.begin(); it!=lightcond.end(); it++)
+            {
+                const Entry &e = it->second;
+                if (it!=lightcond.begin())
+                    out4 << ", ";
+                out4 << "<B#" << e.Col() << ">" << e.name << "</B>";
+                if (e.value>0)
+                    out4 << " [" << nearbyint(e.value) << "]";
+            }
+
+            if (fSun.fSetAstronomical>fSun.fRiseAstronomical)
+                fSun.fSetAstronomical += boost::posix_time::hours(24);
+
+            ostringstream title;
+            title << fSun.fSetAstronomical.GetAsStr("%H:%M");
+            title << " / ";
+            title << ((fSun.fRiseAstronomical-fSun.fSetAstronomical)/20).minutes();
+            title << "' / ";
+            title << fSun.fRiseAstronomical.GetAsStr("%H:%M");
+
+            out  << '\n';
+            out2 << '\n';
+            out3 << '\n';
+            out4 << '\n';
+            out  << HTML::kWhite << '\t' << Time()-now << '\n';
+            out2 << HTML::kWhite << '\t' << Time()-now << '\n';
+
+            WriteBinaryVec(now, "hist-visibility",         alt,  75, 15, "Alt "+title.str());
+            WriteBinaryVec(now, "hist-current-prediction", cur, 100,  0, "I "  +title.str());
+        }
+        catch (const exception &e)
+        {
+            out  << '\n';
+            out2 << '\n';
+            out  << HTML::kWhite << '\t' << "ERROR  - "+string(e.what()) << '\n';
+            out2 << HTML::kWhite << '\t' << "ERROR  - "+string(e.what()) << '\n';
+            out3 << HTML::kWhite << '\t' << "ERROR  - "+string(e.what()) << '\n';
+            out4 << HTML::kWhite << '\t' << "ERROR  - "+string(e.what()) << '\n';
+        }
+#endif
+
+        ofstream(fPath+"/moon.data") << out.str();
+        ofstream(fPath+"/source-list.data") << out2.str();
+        ofstream(fPath+"/visibility.data") << out3.str();
+        ofstream(fPath+"/current-prediction.data") << out4.str();
+    }
+
+    int Execute()
+    {
+        Time now;
+        if (now-fLastUpdate<boost::posix_time::seconds(1))
+            return fDimDNS.online() ? kStateRunning : kStateDimNetworkNA;
+        fLastUpdate=now;
+
+        // ==============================================================
+
+        const bool data_taking =
+            fDimMcp.state()==MCP::State::kTriggerOn ||
+            fDimMcp.state()==MCP::State::kTakingData;
+
+        const bool data_run =
+            fMcpConfigurationName=="data" ||
+            fMcpConfigurationName=="data-rt";
+
+        const bool bias_on =
+            fDimBiasControl.state()==BIAS::State::kRamping     ||
+            fDimBiasControl.state()==BIAS::State::kOverCurrent ||
+            fDimBiasControl.state()==BIAS::State::kVoltageOn;
+
+        const bool calibrated =
+            fDimFeedback.state()>=Feedback::State::kCalibrated;
+
+        const bool haderr = !fErrorList.empty();
+
+        bool newerr = false;
+
+        newerr |= SetError(!fDimDNS.online(),
+                           "<b><#darkred>DIM network not available</#></b>");
+        newerr |= SetError(!fDimControl.online(),
+                           "<b>no dimctrl server available</b>");
+        newerr |= SetError(fDimDataLogger.state()<20 || fDimDataLogger.state()>40,
+                           "<b>datalogger not ready</b>");
+
+        //newerr |= SetError(fDimDriveControl.state()==Drive::State::kLocked,
+        //                   "<b><#darkred>Drive in LOCKED state, drive was automatically parked</#></b>");
+
+        newerr |= SetError(fDimDriveControl.state()>0xff && data_taking && data_run,
+                           "Drive in ERROR state during data-run");
+        newerr |= SetError(fDriveControlMoonDist>155,
+                           "Moon within the field-of-view of the cones");
+        newerr |= SetError(fDriveControlMoonDist>=0 && fDriveControlMoonDist<3,
+                           "Moon within the field-of-view of the camera");
+
+        newerr |= SetError(fDimBiasControl.state()<BIAS::State::kRamping && data_taking && data_run,
+                           "BIAS not operating during data-run");
+        newerr |= SetError(fDimBiasControl.state()==BIAS::State::kOverCurrent,
+                           "BIAS channels in OverCurrent");
+        newerr |= SetError(fDimBiasControl.state()==BIAS::State::kNotReferenced,
+                           "BIAS voltage not at reference");
+
+
+        newerr |= SetError(bias_on && calibrated && fBiasControlCurrentMed>90,
+                           "Median current exceeds 90&micro;A/pix");
+        newerr |= SetError(bias_on && calibrated && fBiasControlCurrentMax>110,
+                           "Maximum current exceeds 110&micro;A/pix");
+
+        newerr |= SetError(fFscControlHumidityAvg>60,
+                           "Average camera humidity exceed 60%");
+
+        newerr |= SetError(!fMagicWeatherHist[kHum].empty() && fMagicWeatherHist[kHum].back()>98 && fDimLidControl.state()==Lid::State::kOpen,
+                           "Outside humidity exceeds 98% while lid is open");
+        newerr |= SetError(!fMagicWeatherHist[kGusts].empty() && fMagicWeatherHist[kGusts].back()>50 && (fDimDriveControl.state()==Drive::State::kTracking||fDimDriveControl.state()==Drive::State::kOnTrack),
+                           "Wind gusts exceed 50km/h during tracking");
+
+        newerr |= SetError(fDimFscControl.state()>=FSC::State::kConnected && !fFscControlTemperatureHist.empty() && fFscControlTemperatureHist.back()>15,
+                           "Sensor temperature exceeds outside temperature by more than 15&deg;C");
+
+        newerr |= SetError(fFtmControlTriggerRateTooLow>0,
+                           "Trigger rate below 1Hz while trigger switched on");
+
+        newerr |= SetError(fFtmControlState!=FTM::kFtmConfig && (fFtmControlState&FTM::kFtmLocked)==0,
+                           "FTM - clock conditioner not locked!");
+
+        newerr |= SetError(fDimTimeCheck.state()==1,
+                           "Warning NTP time difference of drive PC exceeds 1s");
+        newerr |= SetError(fDimTimeCheck.state()<1,
+                           "Warning timecheck not running");
+
+        newerr |= SetError(fDimBiasControl.state()==BIAS::State::kVoltageOn &&
+                           fDimFeedback.state()<Feedback::State::kCalibrating &&
+                           fBiasControlVoltageMed>3,
+                           "Bias voltage switched on, but bias crate not calibrated");
+
+        newerr |= SetError(fLastRunFinishedWithZeroEvents,
+                           "Last run finshed, but contained zero events.");
+
+        newerr |= SetError(fFreeSpace<50000000000,
+                           "Less than 50GB disk space left.");
+
+        newerr |= SetError(fDimPwrControl.state()==Power::State::kCoolingFailure,
+                           "Cooling unit reports failure!");
+
+        for (auto it=fControlAlarmHist.begin(); it!=fControlAlarmHist.end(); it++)
+            newerr |= SetError(it->time.IsValid(), it->msg);
+        fControlAlarmHist.clean();;
+
+        fLastRunFinishedWithZeroEvents = false;
+
+        // FTM in Connected instead of Idle --> power cyclen
+
+        /* // Check offline and disconnected status?
+          Out() << fDimMcp          << endl;
+          Out() << fDimControl      << endl;
+          Out() << fDimDataLogger   << endl;
+          Out() << fDimDriveControl << endl;
+          Out() << fDimFadControl   << endl;
+          Out() << fDimFtmControl   << endl;
+          Out() << fDimBiasControl  << endl;
+          Out() << fDimFeedback     << endl;
+          Out() << fDimRateControl  << endl;
+          Out() << fDimFscControl   << endl;
+          Out() << fDimMagicWeather << endl;
+          Out() << fDimRateScan     << endl;
+          Out() << fDimChat         << endl;
+          */
+
+        // FTU in error
+        // FAD lost
+
+        // --------------------------------------------------------------
+        ostringstream out;
+
+        if (newerr)
+        {
+            SetAudio("error");
+
+            out << now.JavaDate() << '\n';
+            out << HTML::kWhite << '\t';
+            out << "<->" << fErrorHist.rget() << "<->";
+            out << '\n';
+
+            ofstream(fPath+"/errorhist.data") << out.str();
+        }
+
+        out.str("");
+        out << Header(now) << '\t' << (!fErrorList.empty()) << '\t' << (fDimControl.state()>0) << '\n';
+        out << setprecision(3);
+        out << HTML::kWhite << '\t';
+        for (auto it=fErrorList.begin(); it!=fErrorList.end(); it++)
+            out << *it << "<br/>";
+        out << '\n';
+
+        if (haderr || !fErrorList.empty())
+            ofstream(fPath+"/error.data") << out.str();
+
+        // ==============================================================
+
+        out.str("");
+        out << Header(now) << '\t' << (!fErrorList.empty()) << '\t' << (fDimControl.state()>0) << '\n';
+        out << setprecision(3);
+
+        // -------------- System status --------------
+        if (fDimDNS.online() && fDimMcp.state()>=MCP::State::kIdle) // Idle
+        {
+            string col = HTML::kBlue;
+            switch (fMcpConfigurationState)
+            {
+            case MCP::State::kIdle:
+            case DimState::kOffline:
+                col = HTML::kWhite;
+                break;
+            case MCP::State::kConfiguring1:
+            case MCP::State::kConfiguring2:
+            case MCP::State::kConfiguring3:
+            case MCP::State::kConfigured:
+            case MCP::State::kTriggerOn:
+                col = HTML::kBlue;
+                break;
+            case MCP::State::kTakingData:
+                col = HTML::kBlue;
+                if (fDimFadControl.state()==FAD::State::kRunInProgress)
+                    col = HTML::kGreen;
+                break;
+            }
+
+            const bool other =
+                fDimRateControl.state()==RateControl::State::kSettingGlobalThreshold ||
+                fDimLidControl.state()==Lid::State::kMoving ||
+                fDimRateScan.state()==RateScan::State::kInProgress;
+
+            if (other)
+                col = HTML::kBlue;
+
+            out << col << '\t';
+
+            if (!other)
+            {
+                const string conf = fMcpConfigurationName.length()>0?" ["+fMcpConfigurationName+"]":"";
+                switch (fMcpConfigurationState)
+                {
+                case MCP::State::kIdle:
+                    out << "Idle" << conf;
+                    break;
+                case MCP::State::kConfiguring1:
+                case MCP::State::kConfiguring2:
+                case MCP::State::kConfiguring3:
+                    out << "Configuring" << conf;
+                    break;
+                case MCP::State::kConfigured:
+                    out << "Configured" << conf;
+                    break;
+                case MCP::State::kTriggerOn:
+                case MCP::State::kTakingData:
+                    out << fMcpConfigurationName;
+                    if (fFadControlDrsRuns[2]>0)
+                        out << "(" << fFadControlDrsRuns[2] << ")";
+                    break;
+                }
+            }
+            else
+                if (fDimRateControl.state()==RateControl::State::kSettingGlobalThreshold)
+                    out << "Calibrating threshold";
+                else
+                    if (fDimRateScan.state()==RateScan::State::kInProgress)
+                        out << "Rate scan in progress";
+                    else
+                        if (fDimLidControl.state()==Lid::State::kMoving)
+                            out << "Lid moving";
+
+
+            if (fMcpConfigurationState>MCP::State::kConfigured &&
+                fDimRateControl.state()!=RateControl::State::kSettingGlobalThreshold)
+            {
+                ostringstream evt;
+                if (fMcpConfigurationMaxEvents>0)
+                {
+                    const int64_t de = int64_t(fMcpConfigurationMaxEvents) - int64_t(fFadControlNumEvents);
+                    if (de>=0 && fMcpConfigurationState==MCP::State::kTakingData)
+                        evt << de;
+                    else
+                        evt << fMcpConfigurationMaxEvents;
+                }
+                else
+                {
+                    if (fMcpConfigurationState==MCP::State::kTakingData)
+                    {
+                        if (fFadControlNumEvents>2999)
+                            evt << floor(fFadControlNumEvents/1000) << 'k';
+                        else
+                            evt << fFadControlNumEvents;
+                    }
+                }
+
+                ostringstream tim;
+                if (fMcpConfigurationMaxTime>0)
+                {
+                    const uint32_t dt = (Time()-fMcpConfigurationRunStart).total_seconds();
+                    if (dt<=fMcpConfigurationMaxTime && fMcpConfigurationState==MCP::State::kTakingData)
+                        tim << fMcpConfigurationMaxTime-dt << 's';
+                    else
+                        tim << fMcpConfigurationMaxTime << 's';
+                }
+                else
+                {
+                    if (fMcpConfigurationState==MCP::State::kTakingData)
+                        tim << fMcpConfigurationRunStart.SecondsTo();
+                }
+
+                const bool has_evt = !evt.str().empty();
+                const bool has_tim = !tim.str().empty();
+
+                if (has_evt || has_tim)
+                    out << " [";
+                out << evt.str();
+                if (has_evt && has_tim)
+                    out << '/';
+                out << tim.str();
+                if (has_evt || has_tim)
+                    out << ']';
+            }
+        }
+        else
+            out << HTML::kWhite;
+        out << '\n';
+
+        // ------------------ Drive -----------------
+        if (fDimDNS.online() && fDimDriveControl.state()>=Drive::State::kArmed)   // Armed, Moving, Tracking, OnTrack, Error
+        {
+            const uint32_t dev = !fDriveControlTrackingDevHist.empty() ? round(fDriveControlTrackingDevHist.back()) : 0;
+            const State rc = fDimDriveControl.description();
+            string col = HTML::kGreen;
+            if (fDimDriveControl.state()==Drive::State::kMoving) // Moving
+                col = HTML::kBlue;
+            if (fDimDriveControl.state()==Drive::State::kArmed) // Armed
+                col = HTML::kWhite;
+            if (fDimDriveControl.state()==Drive::State::kTracking || fDimDriveControl.state()==Drive::State::kOnTrack) // Tracking
+            {
+                if (dev>60)   // ~1.5mm
+                    col = HTML::kYellow;
+                if (dev>120)  // ~1/4 of a pixel ~ 2.5mm
+                    col = HTML::kRed;
+            }
+            if (fDimDriveControl.state()==0x100)
+                col = HTML::kRed;
+            out << col << '\t';
+
+            //out << rc.name << '\t';
+            out << fDriveControlPointingAz << ' ';
+            out << fDriveControlPointingZd  << "&deg;";
+            out << setprecision(2);
+            if (fDimDriveControl.state()==Drive::State::kTracking || fDimDriveControl.state()==Drive::State::kOnTrack)
+            {
+                out << " &plusmn; " << dev << '"';
+                if (!fDriveControlSourceName.empty())
+                    out << " [" << fDriveControlSourceName  << ']';
+            }
+            if (fDimDriveControl.state()==Drive::State::kMoving)
+                out << " &#10227;";
+            out << setprecision(3);
+        }
+        else
+            out << HTML::kWhite << '\t';
+
+        if (fSun.time.IsValid() && fMoon.time.IsValid())
+        {
+            if (fSun.visible)
+            {
+                out << " &#9788;";
+                if (fDimDriveControl.state()<Drive::State::kArmed)
+                    out << " [" << fSun.fSetCivil.MinutesTo() << "&darr;]";
+            }
+            else
+                if (!fSun.visible && fMoon.visible)
+                {
+                    out << " &#9790;";
+                    if (fDimDriveControl.state()<Drive::State::kArmed)
+                        out << " [" << fMoon.disk << "%]";
+                }
+        }
+        if (fDimDNS.online() && fDimDriveControl.state()==0x100)
+            out << " <ERR>";
+        if (fDimDNS.online() && fDimDriveControl.state()==Drive::State::kLocked)
+            out << " &otimes;";
+        out << '\n';
+
+        // ------------------- FSC ------------------
+        if (fDimDNS.online() && fDimFscControl.state()>FSC::State::kDisconnected && !fFscControlTemperatureHist.empty())
+        {
+            string col = HTML::kGreen;
+            if (fFscControlTemperatureHist.back()>9)
+                col = HTML::kYellow;
+            if (fFscControlTemperatureHist.back()>15)
+                col = HTML::kRed;
+
+            out << col << '\t' << fFscControlTemperatureHist.back() << '\n';
+        }
+        else
+            out << HTML::kWhite << '\n';
+
+        // --------------- MagicWeather -------------
+        if (fDimDNS.online() && fDimMagicWeather.state()==MagicWeather::State::kReceiving && !fMagicWeatherHist[kWeatherBegin].empty())
+        {
+            /*
+            const float diff = fMagicWeatherHist[kTemp].back()-fMagicWeatherHist[kDew].back();
+            string col1 = HTML::kRed;
+            if (diff>0.3)
+                col1 = HTML::kYellow;
+            if (diff>0.7)
+                col1 = HTML::kGreen;
+                */
+
+            const float wind = fMagicWeatherHist[kGusts].back();
+            const float hum  = fMagicWeatherHist[kHum].back();
+            string col = HTML::kGreen;
+            if (wind>35 || hum>95)
+                col = HTML::kYellow;
+            if (wind>45 || hum>98)
+                col = HTML::kRed;
+
+            out << col << '\t';
+            out << fMagicWeatherHist[kHum].back()   << '\t';
+            out << setprecision(2);
+            out << fMagicWeatherHist[kGusts].back() << '\n';
+            out << setprecision(3);
+        }
+        else
+            out << HTML::kWhite << "\n";
+
+        // --------------- FtmControl -------------
+        if (fDimDNS.online() && fDimFtmControl.state()==FTM::State::kTriggerOn)
+        {
+            string col = HTML::kGreen;
+            if (!fFtmControlTriggerRateHist.empty())
+            {
+                if (fFtmControlTriggerRateHist.back()<15)
+                    col = HTML::kYellow;
+                if (fFtmControlTriggerRateHist.back()>100)
+                    col = HTML::kRed;
+
+                out << col << '\t' << fFtmControlTriggerRateHist.back() << " Hz";
+            }
+
+            if (bias_on)
+                out << " (" << setprecision(4) << fFtmPatchThresholdMed << ')';
+            out << '\n';
+        }
+        else
+            out << HTML::kWhite << '\n';
+
+        // --------------- BiasControl -------------
+        const bool bias_off = fDimBiasControl.state()==BIAS::State::kVoltageOff;
+        const bool bias_oc  = fDimBiasControl.state()==BIAS::State::kOverCurrent;
+
+        if (fDimDNS.online() && (bias_on || bias_off))
+        {
+
+            string col = fBiasControlVoltageMed>3?HTML::kGreen:HTML::kWhite;
+            if (bias_on)
+            {
+                if (fBiasControlCurrentMed>70 || fBiasControlCurrentMax>90)
+                    col = HTML::kYellow;
+                if (fBiasControlCurrentMed>90 || fBiasControlCurrentMax>110)
+                    col = HTML::kRed;
+            }
+
+            // Bias in overcurrent => Red
+            if (bias_oc)
+                col = HTML::kRed;
+
+            // MCP in ReadyForDatataking/Configuring/Configured/TriggerOn/TakingData
+            // and Bias not in "data-taking state' => Red
+            if (fMcpConfigurationState>MCP::State::kIdle && !bias_on)
+                col = HTML::kWhite;
+
+            const bool cal = fDimFeedback.state()>=Feedback::State::kCalibrated;
+
+            // Feedback is currently calibrating => Blue
+            if (fDimFeedback.state()==Feedback::State::kCalibrating)
+            {
+                out << HTML::kBlue << '\t';
+                out << "***\t";
+                out << "***\t";
+            }
+            else
+            {
+                out << col << '\t';
+                out << setprecision(fBiasControlCurrentMed<100?2:3);
+                out << (bias_off ? 0 : (fBiasControlCurrentMed<10?fBiasControlCurrentMed:floor(fBiasControlCurrentMed))) << '\t';
+                if (bias_oc)
+                    out << "(OC) ";
+                else
+                {
+                    if (cal)
+                    {
+                        out << setprecision(fBiasControlCurrentMax<100?2:3);
+                        out << (bias_off ? 0 : (fBiasControlCurrentMax<10?fBiasControlCurrentMax:floor(fBiasControlCurrentMax)));
+                    }
+                    else
+                        out << "&mdash; ";
+                }
+                out << '\t';
+            }
+            if (cal && fDimFeedback.state()!=Feedback::State::kCalibrating)
+                out << setprecision(2) << fBiasControlPowerTot << " W";
+            else
+                out << setprecision(3) << (bias_off ? 0 : fBiasControlVoltageMed) << " V";
+            out << '\n';
+        }
+        else
+            out << HTML::kWhite << '\n';
+
+        ofstream(fPath+"/fact.data") << out.str();
+
+        // ==============================================================
+
+        out.str("");
+        out << Header(now) << '\t' << (!fErrorList.empty()) << '\t' << (fDimControl.state()>0) << '\n';
+
+        if (!fDimDNS.online())
+            out << HTML::kWhite << "\tOffline\n\n\n\n\n\n\n\n\n\n\n\n\n";
+        else
+        {
+            ostringstream dt;
+            dt << (Time()-fRunTime);
+
+            out << HTML::kGreen << '\t' << fDimDNS.version() << '\n';
+
+            out << GetStateHtml(fDimControl,        0);
+            out << GetStateHtml(fDimMcp,            MCP::State::kConnected);
+            out << GetStateHtml(fDimDataLogger,     1);
+            out << GetStateHtml(fDimDriveControl,   Drive::State::kConnected);
+            out << GetStateHtml(fDimTimeCheck,      1);
+            out << GetStateHtml(fDimFadControl,     FAD::State::kConnected);
+            out << GetStateHtml(fDimFtmControl,     FTM::State::kConnected);
+            out << GetStateHtml(fDimBiasControl,    BIAS::State::kConnected);
+            out << GetStateHtml(fDimFeedback,       Feedback::State::kConnected);
+            out << GetStateHtml(fDimRateControl,    RateControl::State::kConnected);
+            out << GetStateHtml(fDimFscControl,     FSC::State::kConnected);
+            out << GetStateHtml(fDimGpsControl,     GPS::State::kConnected);
+            out << GetStateHtml(fDimSqmControl,     SQM::State::kConnected);
+            out << GetStateHtml(fDimAgilentControl24, Agilent::State::kVoltageOff);
+            out << GetStateHtml(fDimAgilentControl50, Agilent::State::kVoltageOff);
+            out << GetStateHtml(fDimAgilentControl80, Agilent::State::kVoltageOff);
+            out << GetStateHtml(fDimPwrControl,     Power::State::kSystemOff);
+            out << GetStateHtml(fDimLidControl,     Lid::State::kConnected);
+            out << GetStateHtml(fDimRateScan,       RateScan::State::kConnected);
+            out << GetStateHtml(fDimMagicWeather,   MagicWeather::State::kConnected);
+            out << GetStateHtml(fDimTngWeather,     TNGWeather::State::kConnected);
+            out << GetStateHtml(fDimMagicLidar,     MagicLidar::State::kConnected);
+            out << GetStateHtml(fDimTemperature,    Temperature::State::kValid);
+            out << GetStateHtml(fDimChat,           0);
+            out << GetStateHtml(fDimSkypeClient,    1);
+
+            string col = HTML::kRed;
+            if (fFreeSpace>uint64_t(199999999999))
+                col = HTML::kYellow;
+            if (fFreeSpace>uint64_t(999999999999))
+                col = HTML::kGreen;
+            if (fFreeSpace==UINT64_MAX)
+                col = HTML::kWhite;
+
+            out << col << '\t' << Tools::Scientific(fFreeSpace) << "B\n";
+
+            out << HTML::kGreen << '\t' << dt.str().substr(0, dt.str().length()-7) << '\n';
+        }
+
+        ofstream(fPath+"/status.data") << out.str();
+
+        if (now-fLastAstroCalc>boost::posix_time::seconds(15))
+        {
+            UpdateAstronomy();
+            fLastAstroCalc = now;
+        }
+
+        return fDimDNS.online() ? kStateRunning : kStateDimNetworkNA;
+    }
+
+
+public:
+    StateMachineSmartFACT(ostream &out=cout) : StateMachineDim(out, fIsServer?"SMART_FACT":""),
+        fLastAstroCalc(boost::date_time::neg_infin),
+        fPath("www/smartfact/data"),
+        fControlScriptDepth(0),
+        fMcpConfigurationState(DimState::kOffline),
+        fMcpConfigurationMaxTime(0),
+        fMcpConfigurationMaxEvents(0),
+        fLastRunFinishedWithZeroEvents(false),
+        fTngWeatherDustTime(Time::none),
+        fBiasControlVoltageMed(0),
+        fBiasControlCurrentMed(0),
+        fBiasControlCurrentMax(0),
+        fFscControlHumidityAvg(0),
+        fDriveControlMoonDist(-1),
+        fFadControlNumEvents(0),
+        fFadControlDrsRuns(3),
+        fFtmControlState(FTM::kFtmLocked),
+        fRateScanDataId(0),
+        fRateScanBoard(0),
+        fFreeSpace(UINT64_MAX),
+        // ---
+        fDimMcp           ("MCP"),
+        fDimDataLogger    ("DATA_LOGGER"),
+        fDimDriveControl  ("DRIVE_CONTROL"),
+        fDimTimeCheck     ("TIME_CHECK"),
+        fDimMagicWeather  ("MAGIC_WEATHER"),
+        fDimMagicLidar    ("MAGIC_LIDAR"),
+        fDimTngWeather    ("TNG_WEATHER"),
+        fDimTemperature   ("TEMPERATURE"),
+        fDimFeedback      ("FEEDBACK"),
+        fDimBiasControl   ("BIAS_CONTROL"),
+        fDimFtmControl    ("FTM_CONTROL"),
+        fDimFadControl    ("FAD_CONTROL"),
+        fDimFscControl    ("FSC_CONTROL"),
+        fDimGpsControl    ("GPS_CONTROL"),
+        fDimSqmControl    ("SQM_CONTROL"),
+        fDimAgilentControl24("AGILENT_CONTROL_24V"),
+        fDimAgilentControl50("AGILENT_CONTROL_50V"),
+        fDimAgilentControl80("AGILENT_CONTROL_80V"),
+        fDimPwrControl    ("PWR_CONTROL"),
+        fDimLidControl    ("LID_CONTROL"),
+        fDimRateControl   ("RATE_CONTROL"),
+        fDimRateScan      ("RATE_SCAN"),
+        fDimChat          ("CHAT"),
+        fDimSkypeClient   ("SKYPE_CLIENT")
+    {
+        fDimDNS.Subscribe(*this);
+        fDimControl.Subscribe(*this);
+        fDimMcp.Subscribe(*this);
+        fDimDataLogger.Subscribe(*this);
+        fDimDriveControl.Subscribe(*this);
+        fDimTimeCheck.Subscribe(*this);
+        fDimMagicWeather.Subscribe(*this);
+        fDimMagicLidar.Subscribe(*this);
+        fDimTngWeather.Subscribe(*this);
+        fDimTemperature.Subscribe(*this);
+        fDimFeedback.Subscribe(*this);
+        fDimBiasControl.Subscribe(*this);
+        fDimFtmControl.Subscribe(*this);
+        fDimFadControl.Subscribe(*this);
+        fDimFscControl.Subscribe(*this);
+        fDimGpsControl.Subscribe(*this);
+        fDimSqmControl.Subscribe(*this);
+        fDimAgilentControl24.Subscribe(*this);
+        fDimAgilentControl50.Subscribe(*this);
+        fDimAgilentControl80.Subscribe(*this);
+        fDimPwrControl.Subscribe(*this);
+        fDimLidControl.Subscribe(*this);
+        fDimRateControl.Subscribe(*this);
+        fDimRateScan.Subscribe(*this);
+        fDimChat.Subscribe(*this);
+        fDimSkypeClient.Subscribe(*this);
+
+        fDimFscControl.SetCallback(bind(&StateMachineSmartFACT::HandleFscControlStateChange, this, placeholders::_1));
+        //fDimFtmControl.SetCallback(bind(&StateMachineSmartFACT::HandleFtmControlStateChange, this));
+        fDimDriveControl.SetCallback(bind(&StateMachineSmartFACT::HandleDriveControlStateChange, this, placeholders::_1));
+        fDimControl.SetCallback(bind(&StateMachineSmartFACT::HandleControlStateChange, this, placeholders::_1));
+        fDimControl.AddCallback("dotest.dim", bind(&StateMachineSmartFACT::HandleDoTest, this, placeholders::_1));
+
+        Subscribe("DIM_CONTROL/MESSAGE")
+            (bind(&StateMachineSmartFACT::HandleDimControlMessage,   this, placeholders::_1));
+
+        Subscribe("MCP/CONFIGURATION")
+            (bind(&StateMachineSmartFACT::HandleMcpConfiguration,    this, placeholders::_1));
+
+        Subscribe("DRIVE_CONTROL/POINTING_POSITION")
+            (bind(&StateMachineSmartFACT::HandleDrivePointing,       this, placeholders::_1));
+        Subscribe("DRIVE_CONTROL/TRACKING_POSITION")
+            (bind(&StateMachineSmartFACT::HandleDriveTracking,       this, placeholders::_1));
+        Subscribe("DRIVE_CONTROL/SOURCE_POSITION")
+            (bind(&StateMachineSmartFACT::HandleDriveSource,         this, placeholders::_1));
+
+        Subscribe("FSC_CONTROL/TEMPERATURE")
+            (bind(&StateMachineSmartFACT::HandleFscTemperature,      this, placeholders::_1));
+        Subscribe("FSC_CONTROL/HUMIDITY")
+            (bind(&StateMachineSmartFACT::HandleFscHumidity,         this, placeholders::_1));
+        Subscribe("FSC_CONTROL/BIAS_TEMP")
+            (bind(&StateMachineSmartFACT::HandleFscBiasTemp,         this, placeholders::_1));
+
+        Subscribe("GPS_CONTROL/NEMA")
+            (bind(&StateMachineSmartFACT::HandleGpsNema,             this, placeholders::_1));
+
+        Subscribe("SQM_CONTROL/DATA")
+            (bind(&StateMachineSmartFACT::HandleSqmData,             this, placeholders::_1));
+
+        Subscribe("TEMPERATURE/DATA")
+            (bind(&StateMachineSmartFACT::HandleTemperatureData,     this, placeholders::_1));
+
+        Subscribe("AGILENT_CONTROL_24V/DATA")
+            (bind(&StateMachineSmartFACT::HandleAgilentData,         this, placeholders::_1, "24"));
+        Subscribe("AGILENT_CONTROL_50V/DATA")
+            (bind(&StateMachineSmartFACT::HandleAgilentData,         this, placeholders::_1, "50"));
+        Subscribe("AGILENT_CONTROL_80V/DATA")
+            (bind(&StateMachineSmartFACT::HandleAgilentData,         this, placeholders::_1, "80"));
+
+        Subscribe("MAGIC_WEATHER/DATA")
+            (bind(&StateMachineSmartFACT::HandleMagicWeatherData,    this, placeholders::_1));
+        Subscribe("TNG_WEATHER/DUST")
+            (bind(&StateMachineSmartFACT::HandleTngWeatherDust,      this, placeholders::_1));
+
+        Subscribe("FEEDBACK/CALIBRATED_CURRENTS")
+            (bind(&StateMachineSmartFACT::HandleFeedbackCalibratedCurrents, this, placeholders::_1));
+
+        Subscribe("BIAS_CONTROL/VOLTAGE")
+            (bind(&StateMachineSmartFACT::HandleBiasVoltage,         this, placeholders::_1));
+        Subscribe("BIAS_CONTROL/CURRENT")
+            (bind(&StateMachineSmartFACT::HandleBiasCurrent,         this, placeholders::_1));
+
+        Subscribe("FAD_CONTROL/CONNECTIONS")
+            (bind(&StateMachineSmartFACT::HandleFadConnections,      this, placeholders::_1));
+        Subscribe("FAD_CONTROL/EVENTS")
+            (bind(&StateMachineSmartFACT::HandleFadEvents,           this, placeholders::_1));
+        Subscribe("FAD_CONTROL/START_RUN")
+            (bind(&StateMachineSmartFACT::HandleFadStartRun,         this, placeholders::_1));
+        Subscribe("FAD_CONTROL/DRS_RUNS")
+            (bind(&StateMachineSmartFACT::HandleFadDrsRuns,          this, placeholders::_1));
+        Subscribe("FAD_CONTROL/EVENT_DATA")
+            (bind(&StateMachineSmartFACT::HandleFadEventData,        this, placeholders::_1));
+        Subscribe("FAD_CONTROL/STATS")
+            (bind(&StateMachineSmartFACT::HandleStats,               this, placeholders::_1));
+
+        Subscribe("DATA_LOGGER/STATS")
+            (bind(&StateMachineSmartFACT::HandleStats,               this, placeholders::_1));
+
+        Subscribe("FTM_CONTROL/TRIGGER_RATES")
+            (bind(&StateMachineSmartFACT::HandleFtmTriggerRates,     this, placeholders::_1));
+        Subscribe("FTM_CONTROL/STATIC_DATA")
+            (bind(&StateMachineSmartFACT::HandleFtmStaticData,       this, placeholders::_1));
+        Subscribe("FTM_CONTROL/FTU_LIST")
+            (bind(&StateMachineSmartFACT::HandleFtmFtuList,          this, placeholders::_1));
+
+        Subscribe("RATE_CONTROL/THRESHOLD")
+            (bind(&StateMachineSmartFACT::HandleRateControlThreshold,this, placeholders::_1));
+
+        Subscribe("RATE_SCAN/DATA")
+            (bind(&StateMachineSmartFACT::HandleRateScanData,        this, placeholders::_1));
+
+        Subscribe("CHAT/MESSAGE")
+            (bind(&StateMachineSmartFACT::HandleChatMsg,             this, placeholders::_1));
+
+
+        // =================================================================
+
+        // State names
+        AddStateName(kStateDimNetworkNA, "DimNetworkNotAvailable",
+                     "The Dim DNS is not reachable.");
+
+        AddStateName(kStateRunning, "Running", "");
+
+        // =================================================================
+
+        AddEvent("PRINT")
+            (bind(&StateMachineSmartFACT::Print, this))
+            ("Print a list of the states of all connected servers.");
+
+    }
+    int EvalOptions(Configuration &conf)
+    {
+        if (!fPixelMap.Read(conf.Get<string>("pixel-map-file")))
+        {
+            Error("Reading mapping table from "+conf.Get<string>("pixel-map-file")+" failed.");
+            return 1;
+        }
+
+        fPath     = conf.Get<string>("path");
+        fDatabase = conf.Get<string>("source-database");
+
+        struct stat st;
+        if (stat(fPath.c_str(), &st))
+        {
+            Error(fPath+" does not exist!");
+            return 2;
+        }
+
+        if ((st.st_mode&S_IFDIR)==0)
+        {
+            Error(fPath+" not a directory!");
+            return 3;
+        }
+
+        if ((st.st_mode&S_IWUSR)==0)
+        {
+            Error(fPath+" has no write permission!");
+            return 4;
+        }
+
+        if ((st.st_mode&S_IXUSR)==0)
+        {
+            Error(fPath+" has no execute permission!");
+            return 5;
+        }
+
+        ostringstream out;
+        out << Time().JavaDate() << '\n';
+
+        ofstream(fPath+"/error.data") << out.str();
+
+        return -1;
+    }
+};
+
+bool StateMachineSmartFACT::fIsServer = false;
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T>
+int RunShell(Configuration &conf)
+{
+    StateMachineSmartFACT::fIsServer = !conf.Get<bool>("client");
+    return Main::execute<T, StateMachineSmartFACT>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Smart FACT");
+    control.add_options()
+        ("pixel-map-file",  var<string>()->required(),     "Pixel mapping file. Used here to get the default reference voltage")
+        ("path",            var<string>("www/smartfact/data"), "Output path for the data-files")
+        ("source-database", var<string>(""), "Database link as in\n\tuser:password@server[:port]/database.")
+        ("client",          po_bool(false), "For a standalone client choose this option.")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "SmartFACT is a tool writing the files needed for the SmartFACT web interface.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: smartfact [-c type] [OPTIONS]\n"
+        "  or:  smartfact [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineSmartFACT>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    if (!conf.Has("console"))
+        return RunShell<LocalStream>(conf);
+
+    if (conf.Get<int>("console")==0)
+        return RunShell<LocalShell>(conf);
+    else
+        return RunShell<LocalConsole>(conf);
+
+    return 0;
+}
Index: branches/testFACT++branch/src/sqmctrl.cc
===================================================================
--- branches/testFACT++branch/src/sqmctrl.cc	(revision 18277)
+++ branches/testFACT++branch/src/sqmctrl.cc	(revision 18277)
@@ -0,0 +1,534 @@
+#include <boost/algorithm/string.hpp>
+
+#include "FACT.h"
+#include "Dim.h"
+#include "Event.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "HeadersSQM.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+
+class ConnectionSQM : public Connection
+{
+protected:
+    virtual void Update(const SQM::Data &)
+    {
+    }
+
+private:
+    bool     fIsVerbose;
+    bool     fFirstMessage;
+    bool     fValid;
+    uint16_t fTimeout;
+
+    boost::asio::streambuf fBuffer;
+
+    boost::asio::deadline_timer fTrigger;
+
+    void HandleRead(const boost::system::error_code& err, size_t bytes_received)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+                Warn("Connection closed by remote host.");
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(false);//err!=ba::error::basic_errors::operation_aborted);
+            return;
+        }
+
+        istream is(&fBuffer);
+
+        string buffer;
+        if (!getline(is, buffer, '\n'))
+        {
+            Fatal("Received message does not contain \\n... closing connection.");
+            PostClose(false);
+            return;
+        }
+
+        buffer = buffer.substr(0, buffer.size()-1);
+
+        if (fIsVerbose)
+        {
+            Out() << Time().GetAsStr("%H:%M:%S.%f") << "[" << buffer.size() << "]: " << buffer << "|" << endl;
+            // Out() << Time().GetAsStr("%H:%M:%S.%f") << "[ " << vec.size() << "]: ";
+            // for (auto it=vec.begin(); it!=vec.end(); it++)
+            //     Out() << *it << "|";
+            // Out() << endl;
+        }
+
+        vector<string> vec;
+        boost::split(vec, buffer, boost::is_any_of(","));
+
+        try
+        {
+            if (vec.size()!=6)
+                throw runtime_error("Unknown number of fields in received data");
+
+            if (vec[0]!="r")
+                throw runtime_error("Not a proper answer");
+
+            SQM::Data data;
+
+            data.mag    = stof(vec[1]);
+            data.freq   = stol(vec[2]);
+            data.counts = stol(vec[3]);
+            data.period = stof(vec[4]);
+            data.temp   = stof(vec[5]);
+
+            Update(data);
+
+            fValid = true;
+        }
+        catch (const exception &e)
+        {
+            if (fFirstMessage)
+                Warn("Parsing first message failed ["+string(e.what())+"]");
+            else
+            {
+                Error("Parsing received message failed ["+string(e.what())+"]");
+                Error("Received: "+buffer);
+                PostClose(false);
+                return;
+            }
+        }
+
+        // Send next request in fTimeout milliseconds calculated from
+        // the last request onwards.
+        fTrigger.expires_at(fTrigger.expires_at()+boost::posix_time::milliseconds(fTimeout));
+        fTrigger.async_wait(boost::bind(&ConnectionSQM::HandleRequestTrigger,
+                                        this, dummy::error));
+
+        fFirstMessage = false;
+    }
+
+    void HandleReadTimeout(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "ReadTimeout of " << URL() << " failed: " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            fValid = false;
+            PostClose(true);
+            return;
+        }
+
+        // This is called if the deadline has been shifted
+        if (error==ba::error::basic_errors::operation_aborted)
+            return;
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fInTimeout.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        ostringstream str;
+        str << "No valid answer received from " << URL() << " within " << ceil(fTimeout*1.5) << "ms";
+        Error(str);
+
+        PostClose(false);
+
+        fInTimeout.expires_from_now(boost::posix_time::milliseconds(1000));
+        fInTimeout.async_wait(boost::bind(&ConnectionSQM::HandleReadTimeout,
+                                          this, dummy::error));
+    }
+
+    void HandleRequestTrigger(const bs::error_code &error)
+    {
+
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "RequestTrigger failed of " << URL() << " failed: " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            //PostClose(true);
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fTrigger.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        StartReadReport();
+    }
+
+    void StartReadReport()
+    {
+        PostMessage(string("rx\n"), 3);
+
+        // Do not schedule two reads
+        if (!fFirstMessage)
+        {
+            async_read_until(*this, fBuffer, '\n',
+                             boost::bind(&ConnectionSQM::HandleRead, this,
+                                         dummy::error, dummy::bytes_transferred));
+        }
+
+        fInTimeout.expires_from_now(boost::posix_time::milliseconds(fTimeout*1.5));
+        fInTimeout.async_wait(boost::bind(&ConnectionSQM::HandleReadTimeout,
+                                          this, dummy::error));
+    }
+
+private:
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        fValid = false;
+        fFirstMessage = true;
+
+        // Empty a possible buffer first before we start reading
+        // otherwise reading and writing might not be consecutive
+        async_read_until(*this, fBuffer, '\n',
+                         boost::bind(&ConnectionSQM::HandleRead, this,
+                                     dummy::error, dummy::bytes_transferred));
+
+        // If there was no immediate answer, send a request
+        fTrigger.expires_at(Time()+boost::posix_time::milliseconds(1000));
+        fTrigger.async_wait(boost::bind(&ConnectionSQM::HandleRequestTrigger,
+                                        this, dummy::error));
+    }
+
+public:
+    static const uint16_t kMaxAddr;
+
+public:
+    ConnectionSQM(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsVerbose(true), fTimeout(0), fTrigger(ioservice)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+        Connection::SetVerbose(b);
+    }
+
+    void SetTimeout(uint16_t t)
+    {
+        fTimeout = t;
+    }
+
+    int GetState() const
+    {
+        if (!is_open())
+            return  SQM::State::kDisconnected;
+
+        return fValid ? SQM::State::kValid : SQM::State::kConnected;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimWeather : public ConnectionSQM
+{
+private:
+    DimDescribedService fDim;
+
+public:
+    ConnectionDimWeather(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionSQM(ioservice, imp),
+        fDim("SQM_CONTROL/DATA", "F:1;I:1;I:1;F:1;F:1",
+             "Data received from sky quality meter"
+             "|Mag[mag/arcsec^2]:Magnitude (0 means upper brightness limit)"
+             "|Freq[Hz]:Frequency of sensor"
+             "|Counts:Period of sensor (counts occur at 14.7456MHz/32)"
+             "|Period[s]:Period of sensor"
+             "|Temp[deg C]:Sensor temperature in deg C")
+    {
+    }
+
+    void Update(const SQM::Data &data)
+    {
+        fDim.Update(data);
+    }
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineSQMControl : public StateMachineAsio<T>
+{
+private:
+    S fSQM;
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int Disconnect()
+    {
+        // Close all connections
+        fSQM.PostClose(false);
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fSQM.PostClose(false);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        ba::io_service::poll();
+
+        if (evt.GetBool())
+            fSQM.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fSQM.PostClose(true);
+
+        return T::GetCurrentState();
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fSQM.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int Send(const string &cmd)
+    {
+        const string tx = cmd+"\r\n";
+        fSQM.PostMessage(tx, tx.size());
+        return T::GetCurrentState();
+    }
+
+    int SendCommand(const EventImp &evt)
+    {
+        return Send(evt.GetString());
+    }
+
+    int Execute()
+    {
+        return fSQM.GetState();
+    }
+
+
+public:
+    StateMachineSQMControl(ostream &out=cout) :
+        StateMachineAsio<T>(out, "SQM_CONTROL"), fSQM(*this, *this)
+    {
+        // State names
+        T::AddStateName(SQM::State::kDisconnected, "Disconnected",
+                        "No connection to Sky Quality Meter");
+
+        T::AddStateName(SQM::State::kConnected, "Connected",
+                        "Connection established, but no valid message received");
+
+        T::AddStateName(SQM::State::kValid, "Valid",
+                        "Valid message received");
+
+        // Commands
+        //T::AddEvent("SEND_COMMAND", "C")
+        //    (bind(&StateMachineSQMControl::SendCommand, this, placeholders::_1))
+        //    ("Send command to SQM");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B")
+            (bind(&StateMachineSQMControl::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+
+        //T::AddEvent("ENABLE")
+        //    (bind(&StateMachineSQMControl::Send, this, "veto_60"))
+        //    ("Enable trigger signal once a second vetoed at every exact minute");
+
+        //T::AddEvent("DISABLE")
+        //    (bind(&StateMachineSQMControl::Send, this, "veto_on"))
+        //    ("Diable trigger output");
+
+        // Conenction commands
+        T::AddEvent("DISCONNECT")
+            (bind(&StateMachineSQMControl::Disconnect, this))
+            ("disconnect from ethernet");
+
+         T::AddEvent("RECONNECT", "O")
+            (bind(&StateMachineSQMControl::Reconnect, this, placeholders::_1))
+            ("(Re)connect ethernet connection to SQM, a new address can be given"
+             "|[host][string]:new ethernet address in the form <host:port>");
+
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fSQM.SetVerbose(!conf.Get<bool>("quiet"));
+        fSQM.SetTimeout(conf.Get<uint16_t>("request-interval"));
+        fSQM.SetDebugTx(conf.Get<bool>("debug-tx"));
+        fSQM.SetEndpoint(conf.Get<string>("addr"));
+        fSQM.StartConnect();
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineSQMControl<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("SQM control");
+    control.add_options()
+        ("no-dim,d",         po_switch(),         "Disable dim services")
+        ("addr,a",           var<string>("10.0.100.208:10001"), "Network address of the lid controling Arduino including port")
+        ("quiet,q",          po_bool(true),       "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ("debug-tx",         po_bool(),           "Enable debugging of ethernet transmission.")
+        ("request-interval", var<uint16_t>(5000), "How often to request a report [milliseconds].")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The sqmctrl is an interface to the Sky Quality Meter.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: sqmctrl [-c type] [OPTIONS]\n"
+        "  or:  sqmctrl [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+//    Main::PrintHelp<StateMachineFTM<StateMachine, ConnectionFTM>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    // No console access at all
+    if (!conf.Has("console"))
+    {
+        if (conf.Get<bool>("no-dim"))
+            return RunShell<LocalStream, StateMachine, ConnectionSQM>(conf);
+        else
+            return RunShell<LocalStream, StateMachineDim, ConnectionDimWeather>(conf);
+    }
+    // Cosole access w/ and w/o Dim
+    if (conf.Get<bool>("no-dim"))
+    {
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell, StateMachine, ConnectionSQM>(conf);
+        else
+            return RunShell<LocalConsole, StateMachine, ConnectionSQM>(conf);
+    }
+    else
+    {
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell, StateMachineDim, ConnectionDimWeather>(conf);
+        else
+            return RunShell<LocalConsole, StateMachineDim, ConnectionDimWeather>(conf);
+    }
+
+    return 0;
+}
Index: branches/testFACT++branch/src/temperature.cc
===================================================================
--- branches/testFACT++branch/src/temperature.cc	(revision 18277)
+++ branches/testFACT++branch/src/temperature.cc	(revision 18277)
@@ -0,0 +1,513 @@
+#if BOOST_VERSION < 104600
+#include <assert.h>
+#endif
+
+#include <boost/array.hpp>
+
+#include <boost/property_tree/ptree.hpp>
+#include <boost/property_tree/json_parser.hpp>
+
+#include <string>
+
+#include "FACT.h"
+#include "Dim.h"
+#include "Event.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "HeadersTemperature.h"
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+namespace pt = boost::property_tree;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+
+class ConnectionPowerSwitch : public Connection
+{
+protected:
+    bool fIsValid;
+
+private:
+    uint16_t fInterval;
+
+    bool fIsVerbose;
+    bool fDebugRx;
+
+    string fSite;
+    string fRdfData;
+
+    boost::array<char, 4096> fArray;
+
+    string fNextCommand;
+
+    Time fLastReport;
+
+    int fStatus;
+
+    virtual void Update(const vector<float> &)
+    {
+    }
+
+
+    void ProcessAnswer()
+    {
+        if (fDebugRx)
+        {
+            Out() << "------------------------------------------------------" << endl;
+            Out() << fRdfData << endl;
+            Out() << "------------------------------------------------------" << endl;
+        }
+
+        const size_t p1 = fRdfData.find("\r\n\r\n");
+        if (p1==string::npos)
+        {
+            Warn("HTTP header not found.");
+            PostClose(false);
+            return;
+        }
+
+        fRdfData.erase(0, p1+4);
+
+        vector<float> temp(3);
+        try
+        {
+            std::stringstream ss;
+            ss << fRdfData;
+
+            pt::ptree tree;
+            pt::read_json(ss, tree);
+
+            const pt::ptree sub2 = tree.get_child("sensor_values.").begin()->second;
+            const pt::ptree sub3 = sub2.get_child("values").begin()->second.begin()->second;
+
+            temp[0] = sub3.get_child("v").get_value<float>();
+
+            auto sub = sub3.get_child("st.").begin();
+
+            temp[1] = sub++->second.get_value<float>();
+            temp[2] = sub->second.get_value<float>();
+        }
+        catch (std::exception const& e)
+        {
+            Warn("Parsing of JSON failed: "+string(e.what()));
+
+            fStatus = Temperature::State::kConnected;
+
+            PostClose(false);
+            return;
+        }
+
+        fRdfData = "";
+
+        Update(temp);
+
+        ostringstream msg;
+        msg << "T="    << temp[0] << "°C"
+            << " Tmin=" << temp[1] << "°C"
+            << " Tmax=" << temp[2] << "°C";
+        Message(msg);
+
+        fStatus = Temperature::State::kValid;
+
+        fLastReport = Time();
+        PostClose(false);
+    }
+
+    void HandleRead(const boost::system::error_code& err, size_t bytes_received)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+            {
+                if (!fRdfData.empty())
+                    ProcessAnswer();
+                return;
+            }
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+
+            fRdfData = "";
+            return;
+        }
+
+        fRdfData += string(fArray.data(), bytes_received);
+
+        // Does the message contain a header?
+        const size_t p1 = fRdfData.find("\r\n\r\n");
+        if (p1!=string::npos)
+        {
+            // Does the answer also contain the body?
+            const size_t p2 = fRdfData.find("\r\n\r\n", p1+4);
+            if (p2!=string::npos)
+                ProcessAnswer();
+        }
+
+        // Go on reading until the web-server closes the connection
+        StartReadReport();
+    }
+
+    boost::asio::streambuf fBuffer;
+
+    void StartReadReport()
+    {
+        async_read_some(ba::buffer(fArray),
+                        boost::bind(&ConnectionPowerSwitch::HandleRead, this,
+                                    dummy::error, dummy::bytes_transferred));
+    }
+
+    boost::asio::deadline_timer fKeepAlive;
+
+    void HandleRequest(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "Write timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            PostClose(true);
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fKeepAlive.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        Request();
+    }
+
+
+private:
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        Request();
+        StartReadReport();
+    }
+
+public:
+    static const uint16_t kMaxAddr;
+
+public:
+    ConnectionPowerSwitch(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsValid(false), fIsVerbose(true), fDebugRx(false), fLastReport(Time::none),
+        fStatus(Temperature::State::kDisconnected), fKeepAlive(ioservice)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+    }
+
+    void SetDebugRx(bool b)
+    {
+        fDebugRx = b;
+        Connection::SetVerbose(b);
+    }
+
+    void SetInterval(uint16_t i)
+    {
+        fInterval = i;
+    }
+
+    void SetSite(const string &site)
+    {
+        fSite = site;
+    }
+
+    void Post(const string &post)
+    {
+        fNextCommand = post;
+    }
+
+    void Request()
+    {
+        string cmd = "GET " + fSite;
+
+        if (!fNextCommand.empty())
+            cmd += "?" + fNextCommand;
+
+        cmd += " HTTP/1.1\r\n";
+        cmd += "\r\n";
+
+        PostMessage(cmd);
+
+        fNextCommand = "";
+
+        fKeepAlive.expires_from_now(boost::posix_time::seconds(fInterval));
+        fKeepAlive.async_wait(boost::bind(&ConnectionPowerSwitch::HandleRequest,
+                                          this, dummy::error));
+    }
+
+    int GetInterval() const
+    {
+        return fInterval;
+    }
+
+    int GetState() const
+    {
+        // Timeout
+        if (!fLastReport.IsValid() || Time()>fLastReport+boost::posix_time::seconds(fInterval*3))
+            return Temperature::State::kDisconnected;
+
+        return fStatus;
+    }
+};
+
+const uint16_t ConnectionPowerSwitch::kMaxAddr = 0xfff;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimPowerSwitch : public ConnectionPowerSwitch
+{
+private:
+    DimDescribedService fDim;
+
+public:
+    ConnectionDimPowerSwitch(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionPowerSwitch(ioservice, imp),
+        fDim("TEMPERATURE/DATA", "F:1;F:1;F:1",
+             "Temperature readout from power switch"
+             "|T[degC]:Current temperature"
+             "|Tmin[degC]:24h minimum"
+             "|Tmax[degC]:24h maximum")
+    {
+    }
+
+    void Update(const vector<float> &temp)
+    {
+        fDim.Update(temp);
+    }
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachinePowerControl : public StateMachineAsio<T>
+{
+private:
+    S fPower;
+    Time fLastCommand;
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fPower.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int SetDebugRx(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetDebugRx", 1))
+            return T::kSM_FatalError;
+
+        fPower.SetDebugRx(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+
+    int Execute()
+    {
+        return fPower.GetState();
+    }
+
+
+public:
+    StateMachinePowerControl(ostream &out=cout) :
+        StateMachineAsio<T>(out, "TEMPERATURE"), fPower(*this, *this)
+    {
+        // State names
+        T::AddStateName(Temperature::State::kDisconnected, "NoConnection",
+                     "No connection to web-server could be established recently");
+
+        T::AddStateName(Temperature::State::kConnected, "Connected",
+                     "Connection established, but no valid data received");
+
+        T::AddStateName(Temperature::State::kValid, "Valid",
+                     "Connection established, received data valid");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B:1")
+            (bind(&StateMachinePowerControl::SetVerbosity, this, placeholders::_1))
+            ("Set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for interpreted data (yes/no)");
+
+        T::AddEvent("SET_DEBUG_RX", "B:1")
+            (bind(&StateMachinePowerControl::SetDebugRx, this, placeholders::_1))
+            ("Set debux-rx state"
+             "|debug[bool]:dump received text and parsed text to console (yes/no)");
+
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fPower.SetVerbose(!conf.Get<bool>("quiet"));
+        fPower.SetInterval(conf.Get<uint16_t>("interval"));
+        fPower.SetDebugTx(conf.Get<bool>("debug-tx"));
+        fPower.SetDebugRx(conf.Get<bool>("debug-rx"));
+        fPower.SetSite(conf.Get<string>("url"));
+        fPower.SetEndpoint(conf.Get<string>("addr"));
+        fPower.StartConnect();
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachinePowerControl<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Lid control");
+    control.add_options()
+        ("no-dim,d",   po_switch(),    "Disable dim services")
+        ("addr,a",     var<string>("10.0.100.234:80"),  "Network address of the lid controling Arduino including port")
+        ("url,u",      var<string>("/statusjsn.js?components=18179&_=1365876572736"),  "File name and path to load")
+        ("quiet,q",    po_bool(true),  "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ("interval,i", var<uint16_t>(60), "Interval between two updates on the server in seconds")
+        ("debug-tx",   po_bool(), "Enable debugging of ethernet transmission.")
+        ("debug-rx",   po_bool(), "Enable debugging for received data.")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The temperature is an interface to readout the temperature from the power switch.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: temperature [-c type] [OPTIONS]\n"
+        "  or:  temperature [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+//    Main::PrintHelp<StateMachineFTM<StateMachine, ConnectionFTM>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    // No console access at all
+    if (!conf.Has("console"))
+    {
+        if (conf.Get<bool>("no-dim"))
+            return RunShell<LocalStream, StateMachine, ConnectionPowerSwitch>(conf);
+        else
+            return RunShell<LocalStream, StateMachineDim, ConnectionDimPowerSwitch>(conf);
+    }
+    // Cosole access w/ and w/o Dim
+    if (conf.Get<bool>("no-dim"))
+    {
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell, StateMachine, ConnectionPowerSwitch>(conf);
+        else
+            return RunShell<LocalConsole, StateMachine, ConnectionPowerSwitch>(conf);
+    }
+    else
+    {
+        if (conf.Get<int>("console")==0)
+            return RunShell<LocalShell, StateMachineDim, ConnectionDimPowerSwitch>(conf);
+        else
+            return RunShell<LocalConsole, StateMachineDim, ConnectionDimPowerSwitch>(conf);
+    }
+
+    return 0;
+}
Index: branches/testFACT++branch/src/time.cc
===================================================================
--- branches/testFACT++branch/src/time.cc	(revision 18277)
+++ branches/testFACT++branch/src/time.cc	(revision 18277)
@@ -0,0 +1,112 @@
+#include "Time.h"
+
+#include <iostream>
+
+using namespace std;
+using namespace boost::posix_time;
+
+int main(int, char **)
+{
+    // Print the local time in the default representation of cout
+    cout << endl;
+    cout << "Local Time:   " << Time(Time::local) << endl;
+
+    // Print UTC in several different representations
+    Time utc; 
+    cout << "Universal CT: " << utc << endl;
+    cout << "User defined: " << Time::fmt("%Y=%m=%d %H=%M=%S.%f") << utc << endl;
+    cout << "SQL-format:   " << Time::sql << utc << endl;
+    cout << "ISO-format:   " << Time::iso << utc << endl;
+    cout << "Default:      " << Time::reset << utc << endl;
+    cout << endl;
+
+    // Copy the UTC into a stringstream and show it on the screen
+    stringstream str;
+    str << "stringstream: " << Time::sql << utc;
+    cout << str.str() << endl;
+    cout << endl;
+
+    // Calculate the corresponsing MJD and shoud MJD and corresponding UTC
+    const double mjd1 = utc.Mjd();
+    cout << "Mjd:   " << Time::sql << utc << " (" << mjd1 << ")" << endl;
+
+    // Set utc to the previously calculated MJD
+    utc.Mjd(mjd1);
+
+    // Re-calcualte MJD from this
+    const double mjd2 = utc.Mjd();
+
+    // Show the newly calculated MJD and time and the difference between both
+    cout << "Mjd:   " << Time::sql << utc << " (" << mjd2 << ")" << endl;
+    cout << "Diff:  " << mjd1 - mjd2 << endl;
+    cout << endl;
+
+    // Instantiate a Time object with an artificial time
+    const Time bd(1974, 9, 9, 21, 59, 42, 123456);
+
+    // Show it in two different representations
+    cout << "Loc default:  " << Time::def << bd << endl;
+    cout << "Standard:     " << Time::std << bd << endl;
+    cout << endl;
+
+    // Clear the stringstream contents
+    str.str("");
+
+    // Stream the time in its sql representation into the stringstream
+    str << Time::ssql << bd;
+
+    // Stream a time from the stringstream considering an sql representation
+    // into a Time object
+    Time tm;
+    str >> Time::ssql >> tm;
+
+    // Output stream and interpreted time
+    cout << "Stream: " << str.str() << endl; 
+    cout << "Time:   " << Time::ssql << tm << endl;
+    cout << endl;
+
+    // Print the individual elements of the date and the time
+    cout << "Elements: ";
+    cout << tm.Y() << " " << tm.M() << " " << tm.D() << " " ;
+    cout << tm.h() << " " << tm.m() << " " << tm.s() << " " ;
+    cout << tm.us() << endl;
+    cout << endl;
+
+    // Set and get a Time from a string
+    const string s = "2042-12-24 12:42:42";
+
+    Time tstr;
+    tstr.SetFromStr(s);
+    cout << "String:      " << s << endl;
+    cout << "TimeFromStr: " << tstr.GetAsStr() << endl;
+    cout << endl;
+
+    // Calculate with times
+    const Time t0;
+    Time t1 = t0;
+    cout << "T0  =          " << t0 << endl;
+    cout << "T1  =          " << t1 << endl;
+    t1 += hours(4242);
+    cout << "T1 += 4242h:   " << t1 << endl;
+    t1 += minutes(42);
+    cout << "T1 += 42min:   " << t1 << endl;
+    t1 += seconds(42);
+    cout << "T1 += 42sec:   " << t1 << endl;
+    cout << endl;
+
+    cout << "T1 - T0 = " << t1-t0 << endl;
+
+    const time_duration diff = t1-t0;
+    cout << "T1 - T0 = " << diff.total_seconds() << "sec" << endl;
+    cout << endl;
+
+    return 0;
+}
+
+// **************************************************************************
+/** @example time.cc
+
+Example for the usage of the class Time
+
+**/
+// **************************************************************************
Index: branches/testFACT++branch/src/timecheck.cc
===================================================================
--- branches/testFACT++branch/src/timecheck.cc	(revision 18277)
+++ branches/testFACT++branch/src/timecheck.cc	(revision 18277)
@@ -0,0 +1,236 @@
+#include "StateMachineDim.h"
+
+#include "tools.h"
+#include "Time.h"
+#include "Configuration.h"
+#include "LocalControl.h"
+
+using namespace std;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+// ========================================================================
+// ========================================================================
+// ========================================================================
+
+class StateMachineTimeCheck : public StateMachineDim
+{
+private:
+    Time fLastUpdate;
+
+    string   fServer;
+    uint16_t fInterval;
+
+    DimDescribedService fService;
+
+    enum
+    {
+        kStateOutOfRange = 1,
+        kStateRunning    = 2,
+    };
+
+    // ------------- Initialize variables before the Dim stuff ------------
+
+    int Execute()
+    {
+        Time now;
+        if (now-fLastUpdate<boost::posix_time::minutes(fInterval))
+            return kStateRunning;
+
+        fLastUpdate=now;
+
+        const string cmd = "ntpdate -q "+fServer;
+
+        Info("Calling '"+cmd+"'");
+
+        // !!!!! Warning: this is a blocking operation !!!!!
+        FILE *pipe = popen(cmd.c_str(), "r");
+        if (!pipe)
+        {
+            const string err = strerror(errno);
+            Error("Could not create pipe '"+cmd+"': "+err);
+            return 0x100;
+        }
+
+        vector<string> args;
+
+        string line;
+        while (1)
+        {
+            const int rc = fgetc(pipe);
+            if (rc==EOF || rc=='\n')
+            {
+                args.push_back(Tools::Trim(line));
+                break;
+            }
+
+            if (rc==',')
+            {
+                args.push_back(Tools::Trim(line));
+                line = "";
+                continue;
+            }
+
+            line += static_cast<unsigned char>(rc);
+        }
+        pclose(pipe);
+
+        if (args.size()!=4)
+        {
+            Error("First returned line contains other than four arguments (separated by commas)");
+            return 0x100;
+        }
+
+        if (args[2].substr(0, 7)!="offset ")
+        {
+            Error("Argument 3 '"+args[2]+"' is not what it ought to be.");
+            return 0x100;
+        }
+
+        try
+        {
+            const float offset = stof(args[2].substr(7));
+            fService.Update(offset);
+
+            const string msg = "NTP: "+fServer+" returned: "+args[2]+" ms";
+
+            if (offset>=1000)
+            {
+                Warn(msg);
+                return kStateOutOfRange;
+            }
+
+            Message(msg);
+
+        }
+        catch (const exception &e)
+        {
+            Error("Converting offset '"+args[2]+"' to float failed: "+e.what());
+            return 0x100;
+        }
+
+        return kStateRunning;
+    }
+
+    int Trigger()
+    {
+        fLastUpdate = Time()-boost::posix_time::minutes(fInterval);
+        return GetCurrentState();
+    }
+
+public:
+    StateMachineTimeCheck(ostream &out=cout) : StateMachineDim(out, "TIME_CHECK"),
+        fService("TIME_CHECK/OFFSET", "F:1", "Time offset measured with ntp|offset[ms]:Time offset in milliseconds")
+    {
+        // State names
+        AddStateName(kStateRunning,    "Valid",      "Last check was valid.");
+        AddStateName(kStateOutOfRange, "OutOfRange", "Last time check exceeded 1s.");
+
+        AddEvent("TRIGGER");
+            (bind(&StateMachineTimeCheck::Trigger, this))
+            ("Trigger update");
+
+    }
+    int EvalOptions(Configuration &conf)
+    {
+        fServer   = conf.Get<string>("ntp-server");
+        fInterval = conf.Get<uint16_t>("interval");
+        if (fInterval==0)
+            fInterval=1;
+
+        Trigger();
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+template<class T>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineTimeCheck>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("Time check");
+    control.add_options()
+        ("ntp-server", var<string>("hora.roa.es"),  "The ntp server to be queried")
+        ("interval",   var<uint16_t>(15),           "Interval in minutes the ntp server should be queried")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    /*
+    cout <<
+        "SmartFACT is a tool writing the files needed for the SmartFACT web interface.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: smartfact [-c type] [OPTIONS]\n"
+        "  or:  smartfact [OPTIONS]\n";
+    cout << endl;*/
+}
+
+void PrintHelp()
+{
+    Main::PrintHelp<StateMachineTimeCheck>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    if (!conf.Has("console"))
+        return RunShell<LocalStream>(conf);
+
+    if (conf.Get<int>("console")==0)
+        return RunShell<LocalShell>(conf);
+    else
+        return RunShell<LocalConsole>(conf);
+
+    return 0;
+}
Index: branches/testFACT++branch/src/tngweather.cc
===================================================================
--- branches/testFACT++branch/src/tngweather.cc	(revision 18277)
+++ branches/testFACT++branch/src/tngweather.cc	(revision 18277)
@@ -0,0 +1,622 @@
+#include <boost/array.hpp>
+
+#include <string>    // std::string
+#include <algorithm> // std::transform
+#include <cctype>    // std::tolower
+
+#include "FACT.h"
+#include "Dim.h"
+#include "Event.h"
+#include "Shell.h"
+#include "StateMachineDim.h"
+#include "StateMachineAsio.h"
+#include "Connection.h"
+#include "LocalControl.h"
+#include "Configuration.h"
+#include "Timers.h"
+#include "Console.h"
+
+#include "tools.h"
+
+#include "HeadersTNGWeather.h"
+
+#include <QtXml/QDomDocument>
+
+namespace ba = boost::asio;
+namespace bs = boost::system;
+namespace dummy = ba::placeholders;
+
+using namespace std;
+using namespace TNGWeather;
+
+
+class ConnectionWeather : public Connection
+{
+    uint16_t fInterval;
+
+    bool fIsVerbose;
+
+    string fSite;
+
+    virtual void UpdateWeather(const Time &, const DimWeather &)
+    {
+    }
+
+    virtual void UpdateDust(const Time &, const float &)
+    {
+    }
+
+    string fRdfData;
+    float  fDust;
+
+protected:
+
+    boost::array<char, 4096> fArray;
+
+    Time fLastReport;
+    Time fLastReception;
+
+    void HandleRead(const boost::system::error_code& err, size_t bytes_received)
+    {
+        // Do not schedule a new read if the connection failed.
+        if (bytes_received==0 || err)
+        {
+            if (err==ba::error::eof)
+                Warn("Connection closed by remote host.");
+
+            // 107: Transport endpoint is not connected (bs::error_code(107, bs::system_category))
+            // 125: Operation canceled
+            if (err && err!=ba::error::eof &&                     // Connection closed by remote host
+                err!=ba::error::basic_errors::not_connected &&    // Connection closed by remote host
+                err!=ba::error::basic_errors::operation_aborted)  // Connection closed by us
+            {
+                ostringstream str;
+                str << "Reading from " << URL() << ": " << err.message() << " (" << err << ")";// << endl;
+                Error(str);
+            }
+            PostClose(err!=ba::error::basic_errors::operation_aborted);
+
+            fRdfData = "";
+            return;
+        }
+
+        fRdfData += string(fArray.data(), bytes_received);
+
+        const size_t end = fRdfData.find("\r\n\r\n");
+        if (end==string::npos)
+        {
+            Out() << "Received data corrupted [1]." << endl;
+            Out() << fRdfData << endl;
+            return;
+        }
+
+        string data(fRdfData);
+        data.erase(0, end+4);
+
+        size_t pos = 0;
+        while (1)
+        {
+            const size_t chunk = data.find("\r\n", pos);
+            if (chunk==0 || chunk==string::npos)
+            {
+                StartReadReport();
+                return;
+            }
+
+            size_t len = 0;
+            stringstream val(data.substr(pos, chunk-pos));
+            val >> hex >> len;
+
+            data.erase(pos, chunk-pos+2);
+            if (len==0)
+                break;
+
+            pos += len+2; // Count trailing \r\n of chunk
+        }
+
+
+        fLastReception = Time();
+        fRdfData = "";
+        PostClose(false);
+
+        if (fIsVerbose)
+        {
+            Out() << "------------------------------------------------------" << endl;
+            Out() << data << endl;
+            Out() << "------------------------------------------------------" << endl;
+        }
+
+        QDomDocument doc;
+        if (!doc.setContent(QString(data.data()), false))
+        {
+            Warn("Parsing of xml failed [0].");
+            PostClose(false);
+            return;
+        }
+
+        if (fIsVerbose)
+            Out() << "Parsed:\n-------\n" << doc.toString().toStdString() << endl;
+
+        const QDomElement root = doc.documentElement();
+        const QDomElement item = root.firstChildElement("item");
+
+        const QDomElement med   = item.firstChildElement("tngw:dimmSeeing.median");
+        const QDomElement sdev  = item.firstChildElement("tngw:dimmSeeing.stdev");
+        const QDomElement dust  = item.firstChildElement("tngw:dustTotal");
+        const QDomElement delta = item.firstChildElement("tngw:deltaM1");
+        const QDomElement pres  = item.firstChildElement("tngw:airPressure");
+        const QDomElement dew   = item.firstChildElement("tngw:dewPoint");
+        const QDomElement wdir  = item.firstChildElement("tngw:windDirection");
+        const QDomElement speed = item.firstChildElement("tngw:windSpeed");
+        const QDomElement hum   = item.firstChildElement("tngw:hum");
+        const QDomElement tmp0  = item.firstChildElement("tngw:tempGround");
+        const QDomElement tmp2  = item.firstChildElement("tngw:temp2M");
+        const QDomElement tmp5  = item.firstChildElement("tngw:temp5M");
+        const QDomElement tmp10 = item.firstChildElement("tngw:temp10M");
+        const QDomElement solar = item.firstChildElement("tngw:solarimeter");
+        const QDomElement date  = item.firstChildElement("tngw:date");
+
+        if (med.isNull()  || sdev.isNull()  || dust.isNull()  || delta.isNull() ||
+            pres.isNull() || dew.isNull()   || wdir.isNull()  || speed.isNull() ||
+            hum.isNull()  || hum.isNull()   || tmp0.isNull()  || tmp2.isNull()  ||
+            tmp5.isNull() || tmp10.isNull() || solar.isNull() || date.isNull())
+        {
+            Warn("Parsing of xml failed [1].");
+            PostClose(false);
+            return;
+        }
+
+        DimWeather w;
+        w.fSeeingMed     = med  .text().toFloat();
+        w.fSeeingStdev   = sdev .text().toFloat();
+        w.fDustTotal     = dust .text().toFloat();
+        w.fDeltaM1       = delta.text().toFloat();
+        w.fAirPressure   = pres .text().toFloat();
+        w.fDewPoint      = dew  .text().toFloat();
+        w.fWindDirection = wdir .text().toFloat();
+        w.fWindSpeed     = speed.text().toFloat()*3.6;
+        w.fHumidity      = hum  .text().toFloat();
+        w.fTempGround    = tmp0 .text().toFloat();
+        w.fTemp2M        = tmp2 .text().toFloat();
+        w.fTemp5M        = tmp5 .text().toFloat();
+        w.fTemp10M       = tmp10.text().toFloat();
+        w.fSolarimeter   = solar.text().toFloat();
+
+        const string obj = date.text().toStdString();
+
+        Time time(obj);
+        if (!time.IsValid())
+        {
+            struct tm tm;
+
+            vector<char> buf(255);
+            if (strptime(obj.c_str(), "%c", &tm))
+                time = Time(tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday,
+                            tm.tm_hour,      tm.tm_min,   tm.tm_sec);
+        }
+
+        if (!time.IsValid())
+            throw runtime_error("time invalid");
+
+        if (time!=fLastReport && fIsVerbose)
+        {
+            Out() << endl;
+            Out() << "Date:           " << time             << endl;
+            Out() << "Seeing:         " << w.fSeeingMed << " +- " << w.fSeeingStdev << endl;
+            Out() << "DustTotal:      " << w.fDustTotal     << endl;
+            Out() << "DeltaM1:        " << w.fDeltaM1       << endl;
+            Out() << "AirPressure:    " << w.fAirPressure   << endl;
+            Out() << "DewPoint:       " << w.fDewPoint      << endl;
+            Out() << "WindDirection:  " << w.fWindDirection << endl;
+            Out() << "WindSpeed:      " << w.fWindSpeed     << endl;
+            Out() << "Humidity:       " << w.fHumidity      << endl;
+            Out() << "TempGround:     " << w.fTempGround    << endl;
+            Out() << "Temp2M:         " << w.fTemp2M        << endl;
+            Out() << "Temp5M:         " << w.fTemp5M        << endl;
+            Out() << "Temp10M:        " << w.fTemp10M       << endl;
+            Out() << "Solarimeter:    " << w.fSolarimeter   << endl;
+            Out() << endl;
+        }
+
+        fLastReport = time;
+
+        UpdateWeather(time, w);
+
+        if (fDust==w.fDustTotal)
+            return;
+
+        UpdateDust(time, w.fDustTotal);
+        fDust = w.fDustTotal;
+
+        ostringstream out;
+        out << setprecision(3) << "Dust: " << fDust << "ug/m^3 [" << time << "]";
+        Message(out);
+    }
+
+    void StartReadReport()
+    {
+        async_read_some(ba::buffer(fArray),
+                        boost::bind(&ConnectionWeather::HandleRead, this,
+                                    dummy::error, dummy::bytes_transferred));
+    }
+
+    boost::asio::deadline_timer fKeepAlive;
+
+    void PostRequest()
+    {
+        const string cmd =
+            "GET "+fSite+" HTTP/1.1\r\n"
+            "Accept: */*\r\n"
+            "Content-Type: application/octet-stream\r\n"
+            "User-Agent: FACT\r\n"
+            "Host: www.fact-project.org\r\n"
+            "Pragma: no-cache\r\n"
+            "Cache-Control: no-cache\r\n"
+            "Expires: 0\r\n"
+            "Connection: Keep-Alive\r\n"
+            "Cache-Control: max-age=0\r\n"
+            "\r\n";
+
+        PostMessage(cmd);
+    }
+
+    void Request()
+    {
+        PostRequest();
+
+        fKeepAlive.expires_from_now(boost::posix_time::seconds(fInterval));
+        fKeepAlive.async_wait(boost::bind(&ConnectionWeather::HandleRequest,
+                                          this, dummy::error));
+    }
+
+    void HandleRequest(const bs::error_code &error)
+    {
+        // 125: Operation canceled (bs::error_code(125, bs::system_category))
+        if (error && error!=ba::error::basic_errors::operation_aborted)
+        {
+            ostringstream str;
+            str << "Write timeout of " << URL() << ": " << error.message() << " (" << error << ")";// << endl;
+            Error(str);
+
+            PostClose(false);
+            return;
+        }
+
+        if (!is_open())
+        {
+            // For example: Here we could schedule a new accept if we
+            // would not want to allow two connections at the same time.
+            PostClose(true);
+            return;
+        }
+
+        // Check whether the deadline has passed. We compare the deadline
+        // against the current time since a new asynchronous operation
+        // may have moved the deadline before this actor had a chance
+        // to run.
+        if (fKeepAlive.expires_at() > ba::deadline_timer::traits_type::now())
+            return;
+
+        Request();
+    }
+
+
+private:
+    // This is called when a connection was established
+    void ConnectionEstablished()
+    {
+        Request();
+        StartReadReport();
+    }
+
+public:
+
+    static const uint16_t kMaxAddr;
+
+public:
+    ConnectionWeather(ba::io_service& ioservice, MessageImp &imp) : Connection(ioservice, imp()),
+        fIsVerbose(true), fDust(-1),
+        fLastReport(Time::none), fLastReception(Time::none),
+        fKeepAlive(ioservice)
+    {
+        SetLogStream(&imp);
+    }
+
+    void SetVerbose(bool b)
+    {
+        fIsVerbose = b;
+        Connection::SetVerbose(b);
+    }
+
+    void SetInterval(uint16_t i)
+    {
+        fInterval = i;
+    }
+
+    void SetSite(const string &site)
+    {
+        fSite = site;
+    }
+
+    int GetState() const
+    {
+        if (fLastReport.IsValid() && fLastReport+boost::posix_time::seconds(fInterval*2)>Time())
+            return 3; // receiving
+
+        if (fLastReception.IsValid() && fLastReception+boost::posix_time::seconds(fInterval*2)>Time())
+            return 2; // connected
+
+        return 1; // Disconnected
+    }
+};
+
+const uint16_t ConnectionWeather::kMaxAddr = 0xfff;
+
+// ------------------------------------------------------------------------
+
+#include "DimDescriptionService.h"
+
+class ConnectionDimWeather : public ConnectionWeather
+{
+private:
+    DimDescribedService fDimWeather;
+    DimDescribedService fDimAtmosphere;
+
+    virtual void UpdateWeather(const Time &t, const DimWeather &data)
+    {
+        fDimWeather.setData(&data, sizeof(DimWeather));
+        fDimWeather.Update(t);
+    }
+
+    virtual void UpdateDust(const Time &t, const float &dust)
+    {
+        fDimAtmosphere.setData(&dust, sizeof(float));
+        fDimAtmosphere.Update(t);
+    }
+
+public:
+    ConnectionDimWeather(ba::io_service& ioservice, MessageImp &imp) :
+        ConnectionWeather(ioservice, imp),
+        fDimWeather("TNG_WEATHER/DATA", "F:1;F:1;F:1;F:1;F:1;F:1;F:1;F:1;F:1;F:1;F:1;F:1;F:1;F:1",
+                     "|T_10M[deg C]:Temperature 10m above ground"
+                     "|T_5M[deg C]:Temperature 5m above ground"
+                     "|T_2M[deg C]:Temperature 2m above ground"
+                     "|T_0[deg C]:Temperature at ground"
+                     "|T_dew[deg C]:Dew point"
+                     "|H[%]:Humidity"
+                     "|P[mbar]:Air pressure"
+                     "|v[km/h]:Wind speed"
+                     "|d[deg]:Wind direction (N-E)"
+                     "|DeltaM1"
+                     "|Dust[ug/m^3]:Dust (total)"
+                     "|Seeing[arcsec]:Seeing Median"
+                     "|SeeingStdev[arcsec]:Seeing Stdev"
+                     "|Solarimeter[W/m^2]:Solarimeter"),
+        fDimAtmosphere("TNG_WEATHER/DUST", "F:1",
+                       "|Dust[ug/m^3]:Dust (total)")
+    {
+    }
+};
+
+// ------------------------------------------------------------------------
+
+template <class T, class S>
+class StateMachineWeather : public StateMachineAsio<T>
+{
+private:
+    S fWeather;
+
+    bool CheckEventSize(size_t has, const char *name, size_t size)
+    {
+        if (has==size)
+            return true;
+
+        ostringstream msg;
+        msg << name << " - Received event has " << has << " bytes, but expected " << size << ".";
+        T::Fatal(msg);
+        return false;
+    }
+
+    int SetVerbosity(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "SetVerbosity", 1))
+            return T::kSM_FatalError;
+
+        fWeather.SetVerbose(evt.GetBool());
+
+        return T::GetCurrentState();
+    }
+/*
+    int Disconnect()
+    {
+        // Close all connections
+        fWeather.PostClose(false);
+
+        return T::GetCurrentState();
+    }
+
+    int Reconnect(const EventImp &evt)
+    {
+        // Close all connections to supress the warning in SetEndpoint
+        fWeather.PostClose(false);
+
+        // Now wait until all connection have been closed and
+        // all pending handlers have been processed
+        poll();
+
+        if (evt.GetBool())
+            fWeather.SetEndpoint(evt.GetString());
+
+        // Now we can reopen the connection
+        fWeather.PostClose(true);
+
+        return T::GetCurrentState();
+    }
+*/
+    int Execute()
+    {
+        return fWeather.GetState();
+    }
+
+
+public:
+    StateMachineWeather(ostream &out=cout) :
+        StateMachineAsio<T>(out, "TNG_WEATHER"), fWeather(*this, *this)
+    {
+        // State names
+        T::AddStateName(State::kDisconnected, "NoConnection",
+                     "No connection to web-server could be established recently");
+
+        T::AddStateName(State::kConnected, "Invalid",
+                     "Connection to webserver can be established, but received data is not recent or invalid");
+
+        T::AddStateName(State::kReceiving, "Valid",
+                     "Connection to webserver can be established, receint data received");
+
+        // Verbosity commands
+        T::AddEvent("SET_VERBOSE", "B")
+            (bind(&StateMachineWeather::SetVerbosity, this, placeholders::_1))
+            ("set verbosity state"
+             "|verbosity[bool]:disable or enable verbosity for received data (yes/no), except dynamic data");
+/*
+        // Conenction commands
+        AddEvent("DISCONNECT")
+            (bind(&StateMachineWeather::Disconnect, this))
+            ("disconnect from ethernet");
+
+        AddEvent("RECONNECT", "O")
+            (bind(&StateMachineWeather::Reconnect, this, placeholders::_1))
+            ("(Re)connect ethernet connection to FTM, a new address can be given"
+             "|[host][string]:new ethernet address in the form <host:port>");
+*/
+    }
+
+    int EvalOptions(Configuration &conf)
+    {
+        fWeather.SetVerbose(!conf.Get<bool>("quiet"));
+        fWeather.SetInterval(conf.Get<uint16_t>("interval"));
+        fWeather.SetDebugTx(conf.Get<bool>("debug-tx"));
+        fWeather.SetSite(conf.Get<string>("url"));
+        fWeather.SetEndpoint(conf.Get<string>("addr"));
+        fWeather.StartConnect();
+
+        return -1;
+    }
+};
+
+// ------------------------------------------------------------------------
+
+#include "Main.h"
+
+
+template<class T, class S, class R>
+int RunShell(Configuration &conf)
+{
+    return Main::execute<T, StateMachineWeather<S, R>>(conf);
+}
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("TNG weather control options");
+    control.add_options()
+        ("no-dim,d",  po_switch(),    "Disable dim services")
+        ("addr,a",  var<string>("tngweb.tng.iac.es:80"),  "Network address of Cosy")
+        ("url,u",  var<string>("/weather/rss/"),  "File name and path to load")
+        ("quiet,q", po_bool(true),  "Disable printing contents of all received messages (except dynamic data) in clear text.")
+        ("interval,i", var<uint16_t>(300), "Interval between two updates on the server in seconds")
+        ("debug-tx", po_bool(), "Enable debugging of ethernet transmission.")
+        ;
+
+    conf.AddOptions(control);
+}
+
+/*
+ Extract usage clause(s) [if any] for SYNOPSIS.
+ Translators: "Usage" and "or" here are patterns (regular expressions) which
+ are used to match the usage synopsis in program output.  An example from cp
+ (GNU coreutils) which contains both strings:
+  Usage: cp [OPTION]... [-T] SOURCE DEST
+    or:  cp [OPTION]... SOURCE... DIRECTORY
+    or:  cp [OPTION]... -t DIRECTORY SOURCE...
+ */
+void PrintUsage()
+{
+    cout <<
+        "The tngweather is an interface to the TNG weather data.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: tngweather [-c type] [OPTIONS]\n"
+        "  or:  tngweather [OPTIONS]\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+//    Main::PrintHelp<StateMachineFTM<StateMachine, ConnectionFTM>>();
+
+    /* Additional help text which is printed after the configuration
+     options goes here */
+
+    /*
+     cout << "bla bla bla" << endl << endl;
+     cout << endl;
+     cout << "Environment:" << endl;
+     cout << "environment" << endl;
+     cout << endl;
+     cout << "Examples:" << endl;
+     cout << "test exam" << endl;
+     cout << endl;
+     cout << "Files:" << endl;
+     cout << "files" << endl;
+     cout << endl;
+     */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    Main::SetupConfiguration(conf);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return 127;
+
+    //try
+    {
+        // No console access at all
+        if (!conf.Has("console"))
+        {
+            if (conf.Get<bool>("no-dim"))
+                return RunShell<LocalStream, StateMachine, ConnectionWeather>(conf);
+            else
+                return RunShell<LocalStream, StateMachineDim, ConnectionDimWeather>(conf);
+        }
+        // Cosole access w/ and w/o Dim
+        if (conf.Get<bool>("no-dim"))
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachine, ConnectionWeather>(conf);
+            else
+                return RunShell<LocalConsole, StateMachine, ConnectionWeather>(conf);
+        }
+        else
+        {
+            if (conf.Get<int>("console")==0)
+                return RunShell<LocalShell, StateMachineDim, ConnectionDimWeather>(conf);
+            else
+                return RunShell<LocalConsole, StateMachineDim, ConnectionDimWeather>(conf);
+        }
+    }
+    /*catch (std::exception& e)
+    {
+        cerr << "Exception: " << e.what() << endl;
+        return -1;
+    }*/
+
+    return 0;
+}
Index: branches/testFACT++branch/src/tools.cc
===================================================================
--- branches/testFACT++branch/src/tools.cc	(revision 18277)
+++ branches/testFACT++branch/src/tools.cc	(revision 18277)
@@ -0,0 +1,302 @@
+// **************************************************************************
+/** @file tools.cc
+
+@todo
+   - Resolve the dependancies with dim
+   - Move code to a more appropriate place
+   - put stuff in namespaces
+*/
+// **************************************************************************
+#include "tools.h"
+
+#include <stdarg.h>
+#include <iomanip>
+#include <sstream>
+
+#include <boost/tokenizer.hpp>
+#include <boost/algorithm/string.hpp>
+
+using namespace std;
+
+string Tools::Format(const char *fmt, va_list &ap)
+{
+    int n=256;
+
+    char *ret=0;
+    while (1)
+    {
+        ret = new char[n+1];
+
+        const int sz = vsnprintf(ret, n, fmt, ap);
+        if (sz<=n)
+            break;
+
+        n *= 2;
+        delete [] ret;
+    };
+
+    string str(ret);
+
+    delete [] ret;
+
+    return str;
+}
+
+string Tools::Form(const char *fmt, ...)
+{
+    va_list ap;
+    va_start(ap, fmt);
+
+    string str = Format(fmt, ap);
+
+    va_end(ap);
+
+    return str;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is a static helper to remove leading and trailing whitespaces.
+//!
+//! @param buf
+//!    a pointer to the char array from which the whitespaces should be
+//!    removed
+//!
+//! @returns
+//!    a std::string with the whitespaces removed from buf
+//
+string Tools::Trim(const string &str)
+{
+    // Trim Both leading and trailing spaces
+    const size_t start = str.find_first_not_of(' '); // Find the first character position after excluding leading blank spaces
+    const size_t end   = str.find_last_not_of(' ');  // Find the first character position from reverse af
+
+    // if all spaces or empty return an empty string
+    if (string::npos==start || string::npos==end)
+        return string();
+
+    return str.substr(start, end-start+1);
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is a static helper to remove leading and trailing whitespaces and
+//! if available leading and trailing quotes, can be either ' or "
+//!
+//! @param buf
+//!    a pointer to the char array to be trimmed
+//!
+//! @returns
+//!    a std::string with the content trimmed
+//
+string Tools::TrimQuotes(const string &str)
+{
+    string rc = Trim(str);
+    if (rc.length()<2)
+        return rc;
+
+    const char b = rc[0];
+    const char e = rc[rc.length()-1];
+
+    if ((b=='\"' && e=='\"') || (b=='\'' && e=='\''))
+        return rc.substr(1, rc.length()-2);
+
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//! This is a static helper to remove leading and trailing whitespaces.
+//!
+//! Usage example:
+//!
+//! \code
+//!    string str = "     Dies ist ein test fuer einen ganz     langen Satz "
+//!        "und ob er korrekt umgebrochen und formatiert wird. Alles "
+//!        "nur ein simpler test aber trotzdem ganz wichtig.";
+//!
+//!    cout << setfill('-') << setw(40) << "+" << endl;
+//!    while (1)
+//!    {
+//!        const string rc = Tools::Wrap(str, 40);
+//!        if (rc.empty())
+//!            break;
+//!        cout << rc << endl;
+//!    }
+//! \endcode
+//!
+string Tools::Wrap(string &str, size_t width)
+{
+    const size_t pos = str.length()<width ? string::npos : str.find_last_of(' ', width);
+    if (pos==string::npos)
+    {
+        const string rc = str;
+        str = "";
+        return rc;
+    }
+
+    const size_t indent = str.find_first_not_of(' ');
+
+    const string rc = str.substr(0, pos);
+    const size_t p2 = str.find_first_not_of(' ', pos+1);
+
+    str = str.substr(0, indent) + str.substr(p2==string::npos ? pos+1 : p2);
+
+    return rc;
+}
+
+string Tools::Scientific(uint64_t val)
+{
+    ostringstream rc;
+    rc << setprecision(1) << fixed;
+
+    if (val<1000)
+    {
+        rc << val << " ";
+        return rc.str();
+    }
+
+    if (val<3000)
+    {
+        rc << val/1000. << " k";
+        return rc.str();
+    }
+
+    if (val<1000000)
+    {
+        rc << val/1000 << " k";
+        return rc.str();
+    }
+
+    if (val<3000000)
+    {
+        rc << val/1000000. << " M";
+        return rc.str();
+    }
+
+    if (val<1000000000)
+    {
+        rc << val/1000000 << " M";
+        return rc.str();
+    }
+
+    if (val<3000000000)
+    {
+        rc << val/1000000000. << " G";
+        return rc.str();
+    }
+
+    if (val<1000000000000)
+    {
+        rc << val/1000000000 << " G";
+        return rc.str();
+    }
+
+    if (val<3000000000000)
+    {
+        rc << val/1000000000000. << " T";
+        return rc.str();
+    }
+
+    if (val<1000000000000000)
+    {
+        rc << val/1000000000000 << " T";
+        return rc.str();
+    }
+
+    if (val<3000000000000000)
+    {
+        rc << val/1000000000000000. << " P";
+        return rc.str();
+    }
+
+    rc << val/1000000000000000. << " P";
+    return rc.str();
+}
+
+// --------------------------------------------------------------------------
+//
+//! Splits a string into a filename and command line arguments, like:
+//!
+//!    file.txt arg1=argument1 arg2="argument 2" arg3="argument \"3\""
+//!
+//! 'file.txt' will be returned on opt, the arguments will be returned in
+//! the returned map.
+//!
+//! If the returned file name is empty, an error has occured:
+//!   If the map is also empty the file name was empty, if the map has
+//!   one entry then for this entry the equal sign was missing.
+//!
+map<string,string> Tools::Split(string &opt, bool allow)
+{
+    using namespace boost;
+    typedef escaped_list_separator<char> separator;
+
+    const string data(opt);
+
+    const tokenizer<separator> tok(data, separator("\\", " ", "\"'"));
+
+    auto it=tok.begin();
+    if (it==tok.end())
+    {
+        opt = "";
+        return map<string,string>();
+    }
+
+    opt = string(*it).find_first_of('=')==string::npos ? *it++ : "";
+
+    map<string,string> rc;
+
+    int i=-1;
+
+    for (; it!=tok.end(); it++)
+    {
+        if (it->empty())
+            continue;
+
+        i++;
+
+        const size_t pos = it->find_first_of('=');
+        if (pos==string::npos)
+        {
+            if (allow)
+            {
+                rc[to_string(i)] = *it;
+                continue;
+            }
+
+            opt = "";
+            rc.clear();
+            rc[*it] = "";
+            return rc;
+        }
+
+        rc[it->substr(0, pos)] = it->substr(pos+1);
+    }
+
+    return rc;
+}
+
+vector<string> Tools::Split(const string &str, const string &delim)
+{
+    vector<string> rc;
+    boost::split(rc, str, boost::is_any_of(delim));
+    return rc;
+}
+
+// --------------------------------------------------------------------------
+//
+//! Returns the string with a comment (introduced by a #) stripped. The
+//! comment mark can be escaped by either \# or "#"
+//!
+string Tools::Uncomment(const string &opt)
+{
+    using namespace boost;
+    typedef escaped_list_separator<char> separator;
+
+    const auto it = tokenizer<separator>(opt, separator("\\", "#", "\"'")).begin();
+
+    const int charPos = it.base() - opt.begin();
+
+    return charPos<1 ? "" : opt.substr(0, opt[charPos-1]=='#' ? charPos-1 : charPos);
+}
Index: branches/testFACT++branch/src/tools.h
===================================================================
--- branches/testFACT++branch/src/tools.h	(revision 18277)
+++ branches/testFACT++branch/src/tools.h	(revision 18277)
@@ -0,0 +1,53 @@
+#ifndef FACT_Tools
+#define FACT_Tools
+
+#include <map>
+#include <string>
+#include <vector>
+
+namespace Tools
+{
+    std::string Format(const char *fmt, va_list &ap);
+    std::string Form(const char *fmt, ...);
+    std::string Trim(const std::string &str);
+    std::string TrimQuotes(const std::string &str);
+    std::string Wrap(std::string &str, size_t width=78);
+    std::string Scientific(uint64_t val);
+
+    std::map<std::string,std::string> Split(std::string &, bool = false);
+    std::vector<std::string> Split(const std::string &, const std::string &);
+    std::string Uncomment(const std::string &opt);
+
+    template<typename T>
+        uint16_t Fletcher16(const T *t, size_t cnt)
+    {
+        const uint8_t *data = reinterpret_cast<const uint8_t*>(t);
+
+        size_t bytes = cnt*sizeof(T);
+
+        uint16_t sum1 = 0xff;
+        uint16_t sum2 = 0xff;
+
+        while (bytes) 
+        {
+            size_t tlen = bytes > 20 ? 20 : bytes;
+            bytes -= tlen;
+
+            do {
+                sum2 += sum1 += *data++;
+            } while (--tlen);
+
+            sum1 = (sum1 & 0xff) + (sum1 >> 8);
+            sum2 = (sum2 & 0xff) + (sum2 >> 8);
+        }
+
+        // Second reduction step to reduce sums to 8 bits
+        sum1 = (sum1 & 0xff) + (sum1 >> 8);
+        sum2 = (sum2 & 0xff) + (sum2 >> 8);
+
+        return sum2 << 8 | sum1;
+    }
+
+}
+
+#endif
Index: branches/testFACT++branch/src/triggerschedule.cc
===================================================================
--- branches/testFACT++branch/src/triggerschedule.cc	(revision 18277)
+++ branches/testFACT++branch/src/triggerschedule.cc	(revision 18277)
@@ -0,0 +1,74 @@
+#include <iostream>
+#include <dic.hxx>
+
+#include "Dim.h"
+#include "Configuration.h"
+
+using namespace std;
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description config("Configuration");
+    config.add_options()
+        ("dns",                    var<string>("localhost"),  "Dim nameserver host name (Overwites DIM_DNS_NODE environment variable)")
+        ("schedule-database-name", var<string>(), "Database name for scheduling")
+        ;
+
+    po::positional_options_description p;
+    p.add("schedule-database-name", 1); // The first positional options
+
+    conf.AddEnv("dns", "DIM_DNS_NODE");
+    conf.AddOptions(config);
+    conf.SetArgumentPositions(p);
+}
+
+void PrintUsage()
+{
+    cout <<
+        "The triggerschedule triggers the scheduler.\n"
+        "\n"
+        "The default is that the program is started without user intercation. "
+        "All actions are supposed to arrive as DimCommands. Using the -c "
+        "option, a local shell can be initialized. With h or help a short "
+        "help message about the usuage can be brought to the screen.\n"
+        "\n"
+        "Usage: triggerschedule [-c type] [OPTIONS] <schedule-database-name>\n"
+        "  or:  triggerschedule [OPTIONS] <schedule-database-name>\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+    cout <<
+        "\n"
+        "The method sendCommand(...) will wait for the command to "
+        "be actualy sent to the server and return a completion code "
+        "of:\n"
+        " 0 - if it was successfully sent.\n"
+        " 1 - if it couldn't be delivered.\n "
+        << endl;
+    /* Additional help text which is printed after the configuration
+     options goes here */
+}
+
+int main(int argc, const char* argv[])
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return -1;
+
+    const string dbname = conf.Get<string>("schedule-database-name");
+
+    Dim::Setup(conf.Get<string>("dns"));
+
+    const int rc = DimClient::sendCommand("SCHEDULER/SCHEDULE", dbname.c_str());
+    if (!rc)
+        cerr << "Sending failed!" << endl;
+    else
+        cout << "Command issued successfully." << endl;
+
+    return !rc;
+}
Index: branches/testFACT++branch/src/webServer.c
===================================================================
--- branches/testFACT++branch/src/webServer.c	(revision 18277)
+++ branches/testFACT++branch/src/webServer.c	(revision 18277)
@@ -0,0 +1,24 @@
+#include <string.h>
+#include <unistd.h>
+
+int local_main(int argc, char **argv);
+
+int main(int argc, char **argv)
+{
+    if (argc) {}
+
+    char currwd[1024];
+    strcpy(currwd, argv[0]);
+
+    char *ptr = strrchr(currwd,'/');
+    if (ptr)
+        *ptr = '\0';
+
+    strcpy(ptr, "/../dim/WebDID/");
+
+    char *arg[2] = { currwd, argv[1] };
+    return local_main(2, arg);
+}
+
+#define main local_main
+#include "dim/src/webDid/webServer.c"
Index: branches/testFACT++branch/src/zfits.cc
===================================================================
--- branches/testFACT++branch/src/zfits.cc	(revision 18277)
+++ branches/testFACT++branch/src/zfits.cc	(revision 18277)
@@ -0,0 +1,455 @@
+#include <fstream>
+#include <iostream>
+#include <algorithm>
+#include <map>
+#include <vector>
+
+#include "Configuration.h"
+
+#include "externals/fits.h"
+#include "externals/huffman.h"
+
+#include "Time.h"
+
+using namespace std;
+
+void SetupConfiguration(Configuration &conf)
+{
+    po::options_description control("zfits");
+    control.add_options()
+        ("in",           var<string>()->required(), "")
+        ("out",          var<string>(),             "")
+        ("decompress,d", po_switch(),               "")
+        ("force,f",      var<string>(),             "Force overwrite of output file")
+        ;
+
+    po::positional_options_description p;
+    p.add("in",  1); // The 1st positional options
+    p.add("out", 2); // The 2nd positional options
+
+    conf.AddOptions(control);
+    conf.SetArgumentPositions(p);
+}
+
+void PrintUsage()
+{
+    cout <<
+        "zfits - A fits compressor\n"
+        "\n"
+        "\n"
+        "Usage: zfits [-d] input.fits[.gz] [output.zf]\n";
+    cout << endl;
+}
+
+
+string ReplaceEnd(const string &str, const string &expr, const string &repl)
+{
+    string out(str);
+
+    const size_t p = out.rfind(expr);
+    if (p==out.size()-expr.length())
+        out.replace(p, expr.length(), repl);
+
+    return out;
+}
+
+
+string ReplaceExt(const string &name, bool decomp)
+{
+    if (decomp)
+        return ReplaceEnd(name, ".zfits", ".fits");
+
+    string out = ReplaceEnd(name, ".fits",    ".zfits");
+    return ReplaceEnd(out, ".fits.gz", ".zfits");
+}
+
+int Compress(const string &ifile, const string &ofile)
+{
+    // when to print some info on the screen (every f percent)
+    float frac = 0.01;
+
+    // open a fits file
+    fits f(ifile);
+
+    // open output file
+    ofstream fout(ofile);
+
+    // counters for total size and compressed size
+    uint64_t tot = 0;
+    uint64_t com = 0;
+
+    // very simple timer
+    double sec = 0;
+
+    // Produce a lookup table with all informations about the
+    // columns in the same order as they are in the file
+    const fits::Table::Columns &cols= f.GetColumns();
+
+    struct col_t : fits::Table::Column
+    {
+        string name;
+        void *ptr;
+    };
+
+
+    map<size_t, col_t> columns;
+
+    size_t row_tot = 0;
+    for (auto it=cols.begin(); it!=cols.end(); it++)
+    {
+        col_t c;
+
+        c.offset = it->second.offset;
+        c.size   = it->second.size;
+        c.num    = it->second.num;
+        c.name   = it->first;
+        c.ptr    = f.SetPtrAddress(it->first);
+
+        columns[c.offset] = c;
+
+        row_tot += c.size*c.num;
+    }
+
+    // copy the header from the input to the output file
+    // and prefix the output file as a compressed fits file
+    string header;
+    header.resize(f.tellg());
+
+    f.seekg(0);
+    f.read((char*)header.c_str(), header.size());
+
+    char m[2];
+    m[0] = 'z'+128;
+    m[1] = 'f'+128;
+
+    const size_t hlen = 0;
+
+    size_t hs = header.size();
+
+    fout.write(m, 2);                           // magic number
+    fout.write((char*)&hlen, sizeof(size_t));   // length of possible header data (e.g. file version, compression algorithm)
+    fout.write((char*)&hs,   sizeof(size_t));   // size of FITS header
+    fout.write(header.c_str(), header.size());  // uncompressed FITS header
+
+    tot += header.size();
+    com += header.size()+2+2*sizeof(size_t);
+
+    cout << fixed;
+
+    Time start;
+
+    // loop over all rows
+    vector<char> cache(row_tot);
+    while (f.GetNextRow())
+    {
+        // pointer to the start of the cache for the data of one row
+        char *out = cache.data();
+
+        // mask stroing which column have been compressed and which not
+        vector<uint8_t> mask(cols.size()/8 + 1);
+
+        // loop over all columns
+        uint32_t icol = 0;
+        for (auto it=columns.begin(); it!=columns.end(); it++, icol++)
+        {
+            // size of cell in bytes
+            const size_t len_col = it->second.size * it->second.num;
+
+            // get pointer to data
+            int16_t *ptr = (int16_t*)it->second.ptr;
+
+            // If the column is the data, preprocess the data
+            /*
+            if (it->second.name=="Data")
+            {
+                int16_t *end = ptr+1440*300-4-(1440*300)%2;
+                int16_t *beg = ptr;
+
+                while (end>=beg)
+                {
+                    const int16_t avg = (end[0] + end[1])/2;
+                    end[2] -= avg;
+                    end[3] -= avg;
+                    end -=2;
+                }
+            }*/
+
+            // do not try to compress less than 32bytes
+            if (len_col>32 && it->second.size==2)
+            {
+                Time now;
+
+                // perform 16bit hoffman (option for 8bit missing, skip 64bit)
+                // (what to do with floats?)
+                string buf;
+                /*int len =*/ Huffman::Encode(buf, (uint16_t*)ptr, len_col/2);
+
+                sec += Time().UnixTime()-now.UnixTime();
+
+                // check if data was really compressed
+                if (buf.size()<len_col)
+                {
+                    // copy compressed data into output cache
+                    memcpy(out, buf.c_str(), buf.size());
+                    out += buf.size();
+
+                    // update mask
+                    const uint64_t bit = (icol%8);
+                    mask[icol/8] |= (1<<bit);
+
+                    continue;
+                }
+            }
+
+            // just copy the data if it has not been compressed
+            memcpy(out, (char*)ptr, len_col);
+            out += len_col;
+        }
+
+        // calcualte size of output buffer
+        const size_t sz = out-cache.data();
+
+        // update counters
+        tot += row_tot;
+        com += sz + mask.size();
+
+        // write the compression mask and the (partly) copmpressed data stream
+        fout.write((char*)mask.data(), mask.size());
+        fout.write(cache.data(), sz);
+
+      	 //if (sz2<0 || memcmp(data, dest3.data(), 432000*2)!=0)
+         //   cout << "grrrr" << endl;
+
+        const float proc = float(f.GetRow())/f.GetNumRows();
+        if (proc>frac)
+        {
+            const double elep = Time().UnixTime()-start.UnixTime();
+            cout << "\r" << setprecision(0) << setw(3) << 100*proc << "% [" << setprecision(1) << setw(5) << 100.*com/tot << "%] cpu:" << sec << "s in:" << tot/1000000/elep << "MB/s" << flush;
+            frac += 0.01;
+        }
+    }
+
+    const double elep = Time().UnixTime()-start.UnixTime();
+    cout << setprecision(0) << "\r100% [" << setprecision(1) << setw(5) << 100.*com/tot << "%] cpu:"  << sec << "s in:" << tot/1000000/elep << "MB/s" << endl;
+
+    return 0;
+}
+
+template<size_t N>
+void revcpy(char *dest, const char *src, int num)
+{
+    const char *pend = src + num*N;
+    for (const char *ptr = src; ptr<pend; ptr+=N, dest+=N)
+        reverse_copy(ptr, ptr+N, dest);
+}
+
+int Decompress(const string &ifile, const string &ofile)
+{
+    // open a fits file
+    ifstream fin(ifile);
+
+    // open output file
+    ofstream fout(ofile);
+
+    // get and check magic number
+    unsigned char m[2];
+    fin.read((char*)m, 2);
+    if (m[0]!='z'+128 || m[1]!='f'+128)
+        throw runtime_error("File not a compressed fits file.");
+
+    // get length of additional header information
+    size_t hlen = 0;
+    fin.read((char*)&hlen, sizeof(size_t));
+    if (hlen>0)
+        throw runtime_error("Only Version-zero files supported.");
+
+    // get size of FITS header
+    size_t hs = 0;
+    fin.read((char*)&hs, sizeof(size_t));
+    if (!fin)
+        throw runtime_error("Could not access header size.");
+
+    // copy the header from the input to the output file
+    // and prefix the output file as a compressed fits file
+    string header;
+    header.resize(hs);
+
+    fin.read((char*)header.c_str(), header.size());
+    fout.write((char*)header.c_str(), header.size());
+    if (!fin)
+        throw runtime_error("Could not read full header");
+
+    string templ("tmpXXXXXX");
+    int fd = mkstemp((char*)templ.c_str());
+    const ssize_t rc = write(fd, header.c_str(), header.size());
+    close(fd);
+
+    if (rc<0)
+        throw runtime_error("Could not write to temporary file: "+string(strerror(errno)));
+
+    // open the output file to get the header parsed
+    fits info(templ);
+
+    remove(templ.c_str());
+
+    // get the maximum size of one row and a list
+    // of all columns ordered by their offset
+    size_t row_tot = 0;
+    const fits::Table::Columns &cols = info.GetColumns();
+    map<size_t, fits::Table::Column> columns;
+    for (auto it=cols.begin(); it!=cols.end(); it++)
+    {
+        columns[it->second.offset] = it->second;
+        row_tot += it->second.num*it->second.size;
+    }
+
+    // very simple timer
+    double sec = 0;
+    double frac = 0;
+
+    size_t com = 2+hs+2*sizeof(size_t);
+    size_t tot = hs;
+
+    const size_t masklen = cols.size()/8+1;
+
+    // loop over all rows
+    vector<char> buf(row_tot+masklen);
+    vector<char> swap(row_tot);
+    uint32_t offset = 0;
+
+    const uint64_t nrows = info.GetUInt("NAXIS2");
+
+    Time start;
+
+    cout << fixed;
+    for (uint32_t irow=0; irow<nrows; irow++)
+    {
+        fin.read(buf.data()+offset, buf.size()-offset);
+
+        const uint8_t *mask = reinterpret_cast<uint8_t*>(buf.data());
+        offset = masklen;
+
+        char *ptr = swap.data();
+
+        uint32_t icol = 0;
+        for (auto it=columns.begin(); it!= columns.end(); it++, icol++)
+        {
+            const size_t &num  = it->second.num;
+            const size_t &size = it->second.size;
+
+            if (mask[icol/8]&(1<<(icol%8)))
+            {
+                Time now;
+
+                vector<uint16_t> out(num*size/2);
+                int len = Huffman::Decode((uint8_t*)buf.data()+offset, buf.size()-offset, out);
+                if (len<0)
+                    throw runtime_error("Decoding failed.");
+
+                sec += Time().UnixTime()-now.UnixTime();
+
+                offset += len;
+
+                revcpy<2>(ptr, (char*)out.data(), num);
+            }
+            else
+            {
+                switch (size)
+                {
+                case 1: memcpy   (ptr, buf.data()+offset, num*size); break;
+                case 2: revcpy<2>(ptr, buf.data()+offset, num);      break;
+                case 4: revcpy<4>(ptr, buf.data()+offset, num);      break;
+                case 8: revcpy<8>(ptr, buf.data()+offset, num);      break;
+                }
+
+                offset += num*size;
+            }
+
+            ptr += num*size;
+        }
+
+        com += offset+masklen;
+        tot += row_tot;
+
+        fout.write((char*)swap.data(), swap.size());
+
+        memmove(buf.data(), buf.data()+offset, buf.size()-offset);
+        offset = buf.size()-offset;
+
+        if (!fout)
+            throw runtime_error("Error writing to output file");
+
+        const float proc = float(irow)/nrows;
+        if (proc>frac)
+        {
+            const double elep = Time().UnixTime()-start.UnixTime();
+            cout << "\r" << setprecision(0) << setw(3) << 100*proc << "% [" << setprecision(1) << setw(5) << 100.*com/tot << "%] cpu:" << sec << "s out:" << tot/1000000/elep << "MB/s" << flush;
+            frac += 0.01;
+        }
+    }
+
+    const double elep = Time().UnixTime()-start.UnixTime();
+    cout << setprecision(0) << "\r100% [" << setprecision(1) << setw(5) << 100.*com/tot << "%] cpu:" << sec << "s out:" << tot/1000000/elep << "MB/s" << endl;
+
+    return 0;
+}
+
+int main(int argc, const char **argv)
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv))
+        return 127;
+
+    const bool decomp = conf.Get<bool>("decompress");
+
+    const string ifile = conf.Get<string>("in");
+    const string ofile = conf.Has("out") ? conf.Get<string>("out") : ReplaceExt(ifile, decomp);
+
+    return decomp ? Decompress(ifile, ofile) : Compress(ifile, ofile);
+
+    /*
+    // reading and writing files which just contain the binary data
+    // For simplicity I assume ROI=300
+
+    ifstream finx( "20130117_082.fits.pu");
+    ofstream foutx("20130117_082.fits.puz");
+
+    while (1)
+    {
+        string str;
+        str.resize(432000*2);
+
+        finx.read((char*)str.c_str(), 432000*2);
+        if (!finx)
+            break;
+
+        // Preprocess the data, e.g. subtract median pixelwise
+        for (int i=0; i<1440; i++)
+        {
+            int16_t *chunk = (int16_t*)str.c_str()+i*300;
+            sort(chunk, chunk+300);
+
+            int16_t med = chunk[149];
+
+            for (int j=0; j<300; j++)
+                chunk[j] -= med;
+        }
+
+        // do huffman encoding on shorts
+        string buf;
+        int len = huffmans_encode(buf, (uint16_t*)str.c_str(), 432000);
+
+        // if the result is smaller than the original data write
+        // the result, otherwise the original data
+        if (buf.size()<432000*2)
+            foutx.write(buf.c_str(), buf.size());
+        else
+            foutx.write(str.c_str(), 432000);
+    }
+
+    return 0;
+    */
+}
Index: branches/testFACT++branch/start.sh
===================================================================
--- branches/testFACT++branch/start.sh	(revision 18277)
+++ branches/testFACT++branch/start.sh	(revision 18277)
@@ -0,0 +1,86 @@
+#!/bin/bash --login
+
+cd `dirname "$0"`
+
+CALL=`basename "$0"`
+LINK=`readlink "$0"`
+
+if [ -n "$LINK" -a $CALL != 'start.sh' ]; then
+   DIR=`dirname "$LINK"`
+   PRG=$DIR/$CALL
+   CMD=$PRG" "$*
+else
+   DIR=`dirname "$0"`
+   PRG=$DIR/$1
+   CMD=$DIR/$*
+fi
+
+if [ "$CALL" = "fadctrl" ]; then
+   NICE="ionice -c 2 -n 0"
+fi
+
+# echo DIR=$DIR
+# echo PRG=$PRG
+# echo CMD=$CMD
+
+while [ true ]; do
+
+   reset
+
+   if [ -n "$RC" ]; then
+      echo LAST RETURN CODE=$RC [`date -u`]
+   fi
+
+   echo COMMAND=$NICE $CMD
+   echo
+
+   if [ ! -x $PRG ]; then
+      echo $1 not available... waiting 5s.
+      sleep 5
+      continue
+   fi
+
+   if [ -e $DIR/compiling.lock ]; then
+      echo Compilation in progress... waiting 1s.
+      sleep 1
+      continue
+   fi
+
+   $NICE $CMD
+   RC=$?
+
+   echo RETURN CODE=$RC [`date -u`]
+   echo
+
+   # HUP    1  exit
+   # INT    2  exit
+   # QUIT   3  core
+   # ILL    4  core
+   # TRAP   5  core
+   # ABRT   6  core
+   # FPE    8  core
+   # KILL   9  exit
+   # SEGV  11  core
+   # PIPE  13  exit
+   # ALRM  14  exit
+   # TERM  15  exit
+
+   # 0    (User requested exit from the command line)
+   # 1-   (Eval options failed, return code of StateMachineImp::Run)
+   # 126  (exit requested from recompile.sh)
+   # 127  (problem with option parsing or no program start, like --help)
+   # 128  (exit(128))
+   # 134  (ABRT, double corruption, abort())
+   # 139  (SEGV, 128+11)
+   # 255  (exception)
+
+   if [ $RC -eq 126 ]; then
+      continue
+   fi
+
+   # RC<=128 || RC==KILL || RC=TERM || RC=exception
+   if [ $RC -le 128 ] || [ $RC -eq 137 ] || [ $RC -eq 143 ] || [ $RC -eq 255 ] ]; then
+      exit
+   fi
+
+done
Index: branches/testFACT++branch/www/schedule/config.template.php
===================================================================
--- branches/testFACT++branch/www/schedule/config.template.php	(revision 18277)
+++ branches/testFACT++branch/www/schedule/config.template.php	(revision 18277)
@@ -0,0 +1,9 @@
+<?PHP
+
+$path = "/home/fact/FACT++";
+
+$ldaphost = "161.72.93.133:389";
+$baseDN   = "dc=fact,dc=iac,dc=es";
+$groupDN  = "cn=Operations,ou=Application Groups,".$baseDN;
+
+?>
Index: branches/testFACT++branch/www/schedule/index.css
===================================================================
--- branches/testFACT++branch/www/schedule/index.css	(revision 18277)
+++ branches/testFACT++branch/www/schedule/index.css	(revision 18277)
@@ -0,0 +1,550 @@
+.DynarchCalendar-titleCont
+{
+    width:100%;
+}
+
+.highlight
+{
+    color: #0A0 !important;
+    font-weight: bold;
+}
+
+.selected
+{
+    border:1px solid;
+}
+
+.overlay
+{
+    background-color: rgba(0, 0, 0, 0.5);
+    color: #333;
+    position: fixed;
+    z-index: 400;
+    width: 100%;
+    height: 100%;
+    top: 0px;
+    left: 0px;
+    display:none;
+    overflow:auto;
+    border:1px solid gray;
+}
+
+.close
+{
+    width: 13px;
+    height: 18px;
+    background-color: blue;
+    color:black;
+}
+
+/* This is for firefox */
+[disabled] {
+  color:#444;
+}
+/*
+table.myTable
+{
+	width:100%;
+}
+
+.myTable td
+{
+	border: solid 1px #cecece;
+}
+
+.myTable td.first
+{
+	width:190px;
+}
+
+.myTable td.last
+{
+	width:50px;
+}
+*/
+*{
+    margin: 0px;
+    padding: 0px;
+}
+
+img, fieldset
+{
+    padding: 0px;
+    border: none;
+    margin: 0px;
+    line-height: 0px;
+}
+
+a
+{
+    color: #ffffff;
+    text-decoration: none;
+    font-weight: bold;
+}
+
+a:hover
+{
+    text-decoration: none;
+    color: #0870d7;
+}
+/*
+h2
+{
+    font: 24px Arial, Helvetica, sans-serif;
+    font-weight: normal;
+    color: #0870d7;
+    padding: 30px 0px 10px 40px;
+}*/
+
+/*h3{
+	background: url(images/title.png) no-repeat top left;
+	font: 18px Arial, Helvetica, sans-serif;
+	color: #ffffff;
+	height: 43px;
+	width: 265px;
+	text-align: center;
+	line-height: 43px;
+	font-weight: normal;
+	
+}*/
+
+body
+{
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    line-height: 18px;
+    color: #ffffff;
+    background: #000 url(images/bg.jpg) no-repeat center 87px;
+	
+}
+
+#bg2
+{
+    background: url(images/bg2.png) repeat-x top;
+    height: 87px;
+    position: absolute;
+    width: 100%;
+}
+
+#wrapper1
+{
+    position: relative;
+    width:900px;
+    margin: 0 auto;
+}
+
+.clear
+{
+    clear: both;
+}
+
+/*
+	menu
+*/
+
+#header2
+{
+    height: 91px;
+    width: 900px;
+    margin: 0 93px;
+}
+
+#header2 ul
+{
+    padding-left: 0px;
+    list-style: none;
+    width: 800px;
+    margin: 0 auto;
+}
+
+#header2 ul li li2
+{
+    display: inline;
+}
+
+#header2 ul li a
+{
+    font: 24px  Arial, Helvetica, sans-serif;
+    color: #ffffff;
+    text-align: center;
+    font-weight: normal;
+    text-decoration: none;
+    display: block;
+    float: left;
+    width: 620px;
+    height: 120px;
+    line-height: 91px;
+    font-family:broadway;
+    font-size: 3em;
+}
+
+#header2 ul li2
+{
+    font-size: .6em;
+    font-family:broadway;
+    color: #ffffff;
+    width: 620px;
+    height: 120px;
+    line-height: 91px;
+}
+
+#header2 ul li li2 a:hover,  #menu ul li .active
+{
+    color: #FF0;
+}
+
+
+/*logo*/
+/*
+#logo{
+	width: 1032px;
+	margin: 0 auto;
+	height: 112px;
+	padding-top: 50px;
+	padding-left: 60px;
+	
+}
+
+#logo h1 a{
+	font: 14px Arial, Helvetica, sans-serif;
+	color: #ffffff;
+	font-weight: bold;
+	text-decoration: none;
+}
+
+#logo a small{
+	font: 12px Arial, Helvetica, sans-serif;
+	color: #ffffff;
+	font-weight: normal;
+	text-decoration: none;
+}
+
+#prew_img{
+	background: url(images/img_prew.png) no-repeat top left;
+	height: 297px;
+	width: 1054px;
+	margin: 0 auto;
+}
+*/
+
+/*
+	Content
+*/
+#content_bg_top
+{
+    background: url(images/content_top.png) no-repeat top left;
+    height: 10px;
+}
+/*
+#content_bg_bot
+{
+    background: url(images/content_bot.png) no-repeat bottom left;
+    height: 10px;
+}*/
+
+#content_box
+{
+    background: url(images/content_repeat.png);
+    padding:0px 12px;
+}
+
+/*
+header
+*/
+/*
+#header {
+	background: url(images/header.jpg) no-repeat left top;
+	height: 326px;
+	width: 876px;
+}
+*/
+
+/*
+download_box
+*/
+/*
+#download_box{
+	
+	width: 876px;
+	height: 112px;
+	
+}
+
+#download_box p {
+	color: #303030;
+	font: 12px Arial, Helvetica, sans-serif;
+	font-weight: normal;
+}
+#download_box p a {
+	color: #303030;
+	font: 12px Arial, Helvetica, sans-serif;
+	font-weight: bold;
+	
+}
+#download_box p a:hover {
+	color: #0870d7;
+}
+#download_left {
+	padding: 25px 0px 10px 25px;
+	float:left;
+	width: 638px;
+}
+
+#download_right a{
+	font: 18px Arial, Helvetica, sans-serif;
+	font-weight: bold;
+	text-align: center;
+	line-height: 56px;
+	width: 195px;
+	height: 56px;
+	text-transform: uppercase;
+	background: url(images/download_button.png) no-repeat top left;
+	display: block;
+	float: right;
+	margin: 38px 15px 0px 0px;
+}
+
+#download_right a:hover{
+		color: #ffffff;
+}
+*/
+/*
+column_box
+*/
+#column_box
+{
+    padding-left: 15px;
+    padding-bottom: 30px;
+}
+
+#column_box a
+{
+    color: #666666;
+}
+
+#column_box a:hover
+{
+    color: #ffffff;
+}
+
+#column_box p
+{
+    color: #666666;
+    padding-top: 5px;
+}
+
+#column1
+{
+    float: left;
+    width: 280px;
+}
+
+#column2
+{
+    float: left;
+    width: 260px;
+}
+
+#column3
+{
+    float: left;
+    width: 580px;
+}
+
+#column2
+{
+    margin: 0px 40px;
+}
+/*
+	footer_top
+*/
+
+
+
+/*
+#footer_top{
+	padding-top: 35px;	
+}
+
+
+#footer_top a{
+	color: #ffffff;
+	font-weight: bold;
+}
+
+#footer_top a:hover{
+	color: #0870d7;
+}
+
+#footer_top p{
+	color: #ffffff;
+	line-height: 20px;
+}
+
+#footer_column1, #footer_column2, #footer_column3{
+	width: 265px;
+	float: left;
+}
+
+.footer_text{
+	background: url(images/footer_top_border.png) no-repeat top left;
+	padding: 10px 0px 10px 20px;
+}
+
+#footer_column2{
+	padding: 0px 38px 0px 31px;
+}
+
+.foot_pad{
+    padding-left: 45px;
+	padding-top: 10px;
+}
+
+
+.ls{
+    list-style: none;
+    padding-left: 0px;
+}
+
+.ls li{
+    background: url(images/ls1.gif) no-repeat 0px 6px;
+    margin-bottom: 8px;
+    padding-left: 15px;
+}
+*/
+/*
+	footer_bot
+*/
+
+#footer_bot
+{
+    padding: 25px;
+    text-align: center;
+}
+
+.button
+{
+    cursor:pointer;
+    border-top: 1px solid #96d1f8;
+    background: #65a9d7;
+    background: -webkit-gradient(linear, left top, left bottom, from(#3e779d), to(#65a9d7));
+    background: -webkit-linear-gradient(top, #3e779d, #65a9d7);
+    background: -moz-linear-gradient(top, #3e779d, #65a9d7);
+    background: -ms-linear-gradient(top, #3e779d, #65a9d7);
+    background: -o-linear-gradient(top, #3e779d, #65a9d7);
+    padding: 3px 6px;
+    -webkit-border-radius: 6px;
+    -moz-border-radius: 6px;
+    border-radius: 6px;
+    -webkit-box-shadow: rgba(0,0,0,1) 0 1px 0;
+    -moz-box-shadow: rgba(0,0,0,1) 0 1px 0;
+    box-shadow: rgba(0,0,0,1) 0 1px 0;
+    text-shadow: rgba(0,0,0,.4) 0 1px 0;
+    color: white;
+    font-size: 14px;
+    font-family: 'Lucida Grande', Helvetica, Arial, Sans-Serif;
+    text-decoration: none;
+    vertical-align: middle;
+}
+
+.button:hover
+{
+   border-top-color: #28597a;
+   background: #28597a;
+   color: #ccc;
+}
+
+.button:active
+{
+   border-top-color: #b6c5cf;
+   background: #b6c5cf;
+}
+
+#button
+{
+   border-top: 1px solid #96d1f8;
+   background: #65a9d7;
+   background: -webkit-gradient(linear, left top, left bottom, from(#3e779d), to(#65a9d7));
+   background: -webkit-linear-gradient(top, #3e779d, #65a9d7);
+   background: -moz-linear-gradient(top, #3e779d, #65a9d7);
+   background: -ms-linear-gradient(top, #3e779d, #65a9d7);
+   background: -o-linear-gradient(top, #3e779d, #65a9d7);
+   padding: 3px 6px;
+   -webkit-border-radius: 6px;
+   -moz-border-radius: 6px;
+   border-radius: 6px;
+   -webkit-box-shadow: rgba(0,0,0,1) 0 1px 0;
+   -moz-box-shadow: rgba(0,0,0,1) 0 1px 0;
+   box-shadow: rgba(0,0,0,1) 0 1px 0;
+   text-shadow: rgba(0,0,0,.4) 0 1px 0;
+   color: white;
+   font-size: 12px;
+   font-family: 'Lucida Grande', Helvetica, Arial, Sans-Serif;
+   text-decoration: none;
+   vertical-align: middle;
+}
+
+#button:hover
+{
+   border-top-color: #28597a;
+   background: #28597a;
+   color: #ccc;
+}
+
+#button:active
+{
+   border-top-color: #b6c5cf;
+   background: #b6c5cf;
+}
+/*
+ .buttonc {
+	cursor:pointer;
+   border-top: 1px solid #96d1f8;
+  
+   padding: -1px 6px;
+   -webkit-border-radius: 6px;
+   -moz-border-radius: 6px;
+   border-radius: 6px;
+   -webkit-box-shadow: rgba(0,0,0,1) 0 1px 0;
+   -moz-box-shadow: rgba(0,0,0,1) 0 1px 0;
+   box-shadow: rgba(0,0,0,1) 0 1px 0;
+   text-shadow: rgba(0,0,0,.4) 0 1px 0;
+   color: black;
+   font-size: 14px;
+   font-family: 'Lucida Grande', Helvetica, Arial, Sans-Serif;
+   text-decoration: none;
+   vertical-align: middle;
+   }
+
+   #buttonc {
+   border-top: 1px solid #96d1f8;
+   background: #65a9d7;
+   background: -webkit-gradient(linear, left top, left bottom, from(#3e779d), to(#65a9d7));
+   background: -webkit-linear-gradient(top, #3e779d, #65a9d7);
+   background: -moz-linear-gradient(top, #3e779d, #65a9d7);
+   background: -ms-linear-gradient(top, #3e779d, #65a9d7);
+   background: -o-linear-gradient(top, #3e779d, #65a9d7);
+   padding: 3px 6px;
+   -webkit-border-radius: 6px;
+   -moz-border-radius: 6px;
+   border-radius: 6px;
+   -webkit-box-shadow: rgba(0,0,0,1) 0 1px 0;
+   -moz-box-shadow: rgba(0,0,0,1) 0 1px 0;
+   box-shadow: rgba(0,0,0,1) 0 1px 0;
+   text-shadow: rgba(0,0,0,.4) 0 1px 0;
+   color: white;
+   font-size: 12px;
+   font-family: 'Lucida Grande', Helvetica, Arial, Sans-Serif;
+   text-decoration: none;
+   vertical-align: middle;
+   }
+#buttonc:hover {
+   border-top-color: #28597a;
+   background: #28597a;
+   color: #ccc;
+   }
+#buttonc:active {
+   border-top-color: #b6c5cf;
+   background: #b6c5cf;
+   }
+ */
Index: branches/testFACT++branch/www/schedule/index.html
===================================================================
--- branches/testFACT++branch/www/schedule/index.html	(revision 18277)
+++ branches/testFACT++branch/www/schedule/index.html	(revision 18277)
@@ -0,0 +1,135 @@
+<!DOCTYLE HTML>
+<html>
+<head>
+   <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+   <title>FACT Scheduling</title>
+   <meta name="keywords" content="" />
+   <meta name="description" content="" />
+
+   <script src="jquery-2.1.0.min.js"></script>
+   <script src="jquery-ui-1.10.4.custom/js/jquery-ui-1.10.4.custom.js"></script>
+
+   <script src="JSCal2-1.8/src/js/jscal2.js"></script>
+   <script src="JSCal2-1.8/src/js/lang/en.js"></script>
+
+   <script src="index.js"></script>
+
+   <link rel="stylesheet" href="jquery-ui-1.10.4.custom/css/smoothness/jquery-ui-1.10.4.custom.min.css"/>
+   <link rel="stylesheet" href="index.css" media="screen" />
+
+   <link rel="stylesheet" href="JSCal2-1.8/src/css/jscal2.css" />
+   <link rel="stylesheet" href="JSCal2-1.8/src/css/border-radius.css" />
+   <link rel="stylesheet" href="JSCal2-1.8/src/css/steel/steel.css" />
+</head>
+
+<body style="background-color: #000;">
+<div id="wait" style="background:rgba(0,0,0,0.75) url('images/helium-anim-trans.gif') no-repeat center center;z-index:400;position:fixed;top:0px;left:0px;width:100%;height:100%;text-align:center;vertical-align:middle;"></div>
+<div id="bg2"></div>
+<div id="wrapper1">
+   <div id="header2">
+      <ul>
+         <li><a href="http://www.fact-project.org">FACT <li2>OBSERVATION SCHEDULING</li2></a></li>
+      </ul>
+      <div class="clear"></div>
+   </div>	
+   <div id="content_bg_top"></div>
+   <div id="content_box">
+      <div id="column_box">
+         <div id="column1">
+	    <div id="calendar">
+      	       <div id="cont"></div>
+            </div>
+	 </div>
+	 <div id="column3"></div>
+         <div class="clear"></div>
+      </div>
+      <div style="width:100%;">
+         <table width="100%">
+            <tr>
+               <td style="font-weight:bold;">TIME:&nbsp;&nbsp;</td>
+               <td id="clock" style="white-space:nowrap; font-size:16px; font-weight:bold; color:#FFFF00"></td>
+               <td style="text-align:right;width:100%;">
+                  <input type="button" class="button"  id="load" value="Load Night"  title="Click to load given night"/>
+                  <input type="date"                   id="loaddate"                 title="Date to load a schedule from."/>&nbsp;&nbsp;
+                  <input type="button" class="button"  id="save" value="SAVE"        title="Click to save"/>
+                  <input type="date"   disabled="true" readonly="true" id="savedate" title="Date to which the schedule is saved."/>&nbsp;&nbsp;
+                  <input type="button" class="button"  id="help" value="HELP"        title="Click to view help" align="left"/>
+               </td>
+            </tr>
+         </table>
+      </div>
+      <div style="border:2px solid white; width:100%;">
+         <table width="100%" id="TableHolder" >
+	    <tr>
+	       <td style="border:1px solid white; color:palegreen; font-size:14px; text-align:center; width:1%; font-weight:bold;" align="center"><div id="time" style="white-space:nowrap;"></div></td>
+	       <td style="border:1px solid white; color:palegreen; font-size:14px; text-align:center; width:1%;">Measurement</td>
+               <td style="border:1px solid white; color:palegreen; font-size:14px; text-align:center; width:1%;">Source</td>
+	       <td style="border:1px solid white; color:palegreen; font-size:14px; text-align:center; ">Value</td>
+	    </tr>
+	 </table>
+      </div>
+	
+      <div id="footer_bot">
+         <p>&copy; 2014 FACT Project, Implemented by Western Mindanao State University (<strong><a href="http://www.wmsu.edu.ph">WMSU</a>, Philippines</strong>)</p>
+      </div>
+   </div>
+   <div id="debug"></div>
+</div>
+<div id="Overlay" name="Overlay" class="overlay">
+    <div style="padding-top:25px;padding-bottom:15px;padding-left:25%;padding-right:25%;">
+    <div style="background-color:black;color:white;padding:15px;">
+    <div style="color:white;small-caps;"><span id="close" class="close">X</span> To close click here or press Esc.</div>
+    <BR>
+    <!--<hr><br>-->
+    <H1>HELP</H1>
+    <div style="font-size:17px;padding-top:5px;font-family:'Times New Roman';text-align:justify;">
+    
+    <H3 style="font-family:arial;padding-top:20px;padding-bottom:10px;">Loading a schedule</H3>
+    To load a schedule click on the corresponding date in the calendar. If
+    you click on <B>SAVE</B> the schedule will be saved to the date shown in the box close to the
+    <B>SAVE</B> button. It is always identical with the last calender date you clicked.
+    <p>
+
+    <H3 style="font-family:arial;padding-top:20px;padding-bottom:10px;">Remarks about saving</H3>
+    If saving fails, an error message is displayed. If it was supposed to be successful,
+    the schedule of the selected date is newly loaded and displayed.
+    <p>
+    
+    <H3 style="font-family:arial;padding-top:20px;padding-bottom:10px;">Replacing a schedule</H3>
+    You can overwrite a schedule with the schedule from a different date by entering the
+    date in the box close to <B>Load Night</B> and either pressing Enter or the <B>Load Night</B>
+    button.
+    <p>
+
+    <H3 style="font-family:arial;padding-top:20px;padding-bottom:10px;">Disabled entries</H3>
+    Entries which are at the time the schedule is loaded already in the past, are 
+    disabled and cannot be changed. This is because they might already have been processed
+    by the scheduler and are currently executed.
+
+    <H3 style="font-family:arial;padding-top:20px;padding-bottom:10px;">Color of times</H3>
+    For the current night, entries which are before the current time are
+    displayed in red, entries which are later, are displayed in green. Colors are updated
+    interactively.
+
+    <H3 style="font-family:arial;padding-top:20px;padding-bottom:10px;">Scheduling</H3>
+    Note that the last entry display in red will most probably the first one
+    executed by the scheduler. If the scheduling is running, it will just replace
+    the next entry in the schedule and be executed completely. If the scheduler is not
+    running, still the last red entry will be the first one to be executed, but since
+    it is the first one executed by the script, the script assumes that it failed and
+    was restarted. Therefore, only the last of its observations (usually <I>data</I>
+    is executed.
+
+    <H3 style="font-family:arial;padding-top:20px;padding-bottom:10px;">Options</H3>
+    Options are ecoded as JSON object (search google for details). The meaning of
+    their properties is defined by the task to be executed. The starting and
+    closing brace must be omitted. Note that for a correct JSON object, the property
+    names must be enclosed in double quotation marks ("...").
+    </div>
+    </div>
+    </div>
+</div>
+
+</body>
+
+</html>
Index: branches/testFACT++branch/www/schedule/index.js
===================================================================
--- branches/testFACT++branch/www/schedule/index.js	(revision 18277)
+++ branches/testFACT++branch/www/schedule/index.js	(revision 18277)
@@ -0,0 +1,750 @@
+'use strict';
+
+function pad(n)
+{
+    return (n<10) ? '0' + n : n;
+}
+
+function getYMD(d)
+{
+    return d.getUTCFullYear()+'-'+pad(d.getUTCMonth()+1)+'-'+pad(d.getUTCDate());
+}
+
+function updateClock()
+{
+    var now = new Date();
+    var s = getYMD(now)+' '+pad(now.getUTCHours())+':'+pad(now.getUTCMinutes())+' UTC';
+    $('#clock').html(s);
+
+    var table = document.getElementById("TableHolder");
+
+    if (!table.isTonight)
+        return;
+
+    var rows = table.childNodes;
+
+    for (var i=2; i<rows.length; i++)
+    {
+        var el = rows[i].firstChild.firstChild;
+
+        // FIXME: replace by classes?
+        if (!el.valueAsDate)
+        {
+//            el.setAttribute("style", "color:#000000");
+            continue;
+        }
+
+        var t0 = now.getTime()%86400000;
+        var t1 = el.valueAsDate%86400000;
+        if (t1<43200000)
+            t1 += 86400000;
+
+        el.setAttribute("style", t1>t0 ? "color:darkgreen" : "color:darkred");
+    }
+};
+
+function addEmptyRow(prev, start)
+{
+    var empty =
+    {
+        fStart: "0000/00/00 "+(start?start:""),
+        fMeasurementTypeKey:0,
+        fMeasurementID:0,
+        fSourceKEY:0,
+    };
+
+    addRow(empty, false, prev);
+}
+
+function debug(txt)
+{
+    var dbg = document.getElementById("debug");
+    dbg.appendChild(document.createTextNode(txt));
+    dbg.appendChild(document.createElement("br"));
+}
+
+function addRow(row, disabled, prev)
+{
+    var table = document.getElementById("TableHolder");
+
+    var sources = table.sources;
+    var measurements = table.measurements;
+
+    var tr = document.createElement("tr");
+    tr.setAttribute("width", "100%");
+
+    if (!prev)
+        table.appendChild(tr);
+    else
+        table.insertBefore(tr, prev.nextSibling);
+
+    // ---------- column 1 ----------
+
+    var input1t = document.createElement("input");
+    input1t.setAttribute("type","time");
+    input1t.setAttribute("size","10");
+    input1t.setAttribute("autofocus","true");
+    if (row.fMeasurementID!=0)
+        input1t.setAttribute("hidden", "true");
+    input1t.setAttribute("value", row.fStart.substr(11));
+    if (disabled)
+        input1t.setAttribute("disabled", "true");
+
+    /*
+    input1t.onblur = function()
+    {
+        var prevRow = tr.previousSibling;
+        while (prevRow && prevRow.firstChild.firstChild.hidden)
+            prevRow = prevRow.previousSibling;
+
+        var nextRow = tr.nextSibling;
+        while (nextRow && nextRow.firstChild.firstChild.hidden)
+            nextRow = nextRow.nextSibling;
+
+        var prevEl = prevRow ? prevRow.firstChild : undefined;
+        var nextEl = nextRow ? nextRow.firstChild : undefined;
+
+        var prevTime = "";
+        if (prevEl && prevEl.firstChild.constructor.name=="HTMLInputElement")
+            prevTime = prevEl.firstChild.value;
+
+        var nextTime = "";
+        if (nextEl && nextEl.firstChild.constructor.name=="HTMLInputElement")
+            nextTime = nextEl.firstChild.value;
+
+        alert(prevTime+"/"+input1t.value+"/"+nextTime);
+    }*/
+
+    var td1 = document.createElement("td");
+    td1.setAttribute("style","white-space:nowrap;padding-left:4px;padding-right:2px;");
+    td1.setAttribute("align","center");
+    td1.appendChild(input1t);
+
+    // Check if this is the transition from disabled to enabled.
+    // In this case enable all previous [+]
+    if (tr.previousSibling && tr.previousSibling.firstChild.firstChild.disabled && !disabled)
+    {
+        var prevRow = tr.previousSibling;
+
+        var tm = prevRow.firstChild.firstChild.value;
+        while (1)
+        {
+            prevRow.firstChild.childNodes[1].removeAttribute("disabled");
+            prevRow = prevRow.previousSibling;
+            if (prevRow.firstChild.firstChild.value!=tm)
+                break;
+        }
+    }
+
+    var input1p = document.createElement("input");
+    input1p.setAttribute("style","width:20px");
+    input1p.setAttribute("type","button");
+    input1p.setAttribute("value","+");
+    if (row.fMeasurementID!=0)
+        input1p.setAttribute("hidden", "true");
+    // FIXME: Enable if this is the last "+" in tonight
+    if (disabled && ! (table.isTonight && row.last))
+        input1p.setAttribute("disabled", "true");
+    input1p.onclick = function()
+    {
+        // FiXME: Do not allow deleting of last line
+        var nextRow = tr;
+        while (nextRow.nextSibling)
+        {
+            if (!nextRow.nextSibling.firstChild.firstChild.hidden)
+                break;
+
+            nextRow = nextRow.nextSibling;
+        }
+
+        addEmptyRow(nextRow, input1t.value);
+    }
+    td1.appendChild(input1p);
+
+    var input1m = document.createElement("input");
+    input1m.setAttribute("style","width:20px");
+    input1m.setAttribute("type","button");
+    input1m.setAttribute("value","-");
+    if (row.fMeasurementID!=0)
+        input1m.setAttribute("hidden", "true");
+    if (disabled)
+        input1m.setAttribute("disabled", "true");
+    input1m.onclick = function()
+    {
+        //if (table.childNodes.length==3)
+        //    return;
+
+        var nextRow = tr.nextSibling;
+        table.removeChild(tr);
+
+        while (nextRow)
+        {
+            var inp = nextRow.firstChild.firstChild;
+            if (!inp.hidden)
+                break;
+
+            var xx = nextRow;
+            nextRow = nextRow.nextSibling;
+            table.removeChild(xx);
+        }
+
+        if (table.childNodes.length==2)
+            addEmptyRow();
+    }
+    td1.appendChild(input1m);
+
+    tr.appendChild(td1);
+
+    // ---------- column 2 -----------
+
+    var select2 = document.createElement("select");
+    // select2.setAttribute("style", "width:100px");
+    select2.setAttribute("class", "measurement");
+    if (disabled)
+        select2.setAttribute("disabled", "true");
+
+    for (var i=0; i<measurements.length; i++)
+    {
+        var option = document.createElement("option");
+        select2.appendChild(option);
+        option.setAttribute('value', measurements[i].key);
+        option.appendChild(document.createTextNode(measurements[i].val));
+        if (row.fMeasurementTypeKey==measurements[i].key)
+            select2.selectedIndex = i;
+    }
+
+    var td2 = document.createElement("td");
+    td2.setAttribute("style","white-space:nowrap;padding-left:2px;padding-right:2px;");
+    td2.setAttribute("align","center");
+    td2.appendChild(select2);
+
+    var input2 = document.createElement("input");
+    input2.setAttribute("type","button");
+    input2.setAttribute("value","+");
+    input2.setAttribute("style","width:20px");
+    if (disabled)
+        input2.setAttribute("disabled", "true");
+    input2.onclick = function()
+    {
+        var empty =
+        {
+            fStart: row.fStart,
+            fMeasurementTypeKey:0,
+            fMeasurementID:-1,
+            fSourceKEY:0,
+        };
+
+        addRow(empty, false, tr);
+    }
+    td2.appendChild(input2);
+
+    input2 = document.createElement("input");
+    input2.setAttribute("type","button");
+    input2.setAttribute("style","width:20px");
+    input2.setAttribute("value","-");
+    if (disabled)
+        input2.setAttribute("disabled", "true");
+    input2.onclick = function()
+    {
+        //if (table.childNodes.length==3)
+        //    return;
+
+        if (!tr.firstChild.childNodes[0].hidden)
+        {
+            var tm = tr.firstChild.childNodes[0].value;
+
+            var nextRow = tr.nextSibling;
+            if (nextRow)
+            {
+                var e = nextRow.firstChild.childNodes;
+                e[0].removeAttribute("hidden");
+                e[1].removeAttribute("hidden");
+                e[2].removeAttribute("hidden");
+                e[0].value = tm;
+            }
+        }
+        table.removeChild(tr);
+
+        if (table.childNodes.length==2)
+            addEmptyRow();
+    }
+    td2.appendChild(input2);
+
+    tr.appendChild(td2);
+
+    // ---------- column 3 -----------
+
+    var select3 = document.createElement("select");
+    //select3.setAttribute("style", "width:100px");
+    select3.setAttribute("class", "sources");
+    if (disabled)
+        select3.setAttribute("disabled", "true");
+
+    for (var i=0; i<sources.length; i++)
+    {
+        var option = document.createElement("option");
+        select3.appendChild(option);
+        option.setAttribute('value', sources[i].key);
+        option.appendChild(document.createTextNode(sources[i].val));
+        if (row.fSourceKey==sources[i].key)
+            select3.selectedIndex = i;
+    }
+
+    var td3 = document.createElement("td");
+    td3.setAttribute("style","white-space:nowrap;padding-left:2px;padding-right:2px;");
+    td3.setAttribute("align","center");
+    td3.appendChild(select3);
+
+    tr.appendChild(td3);
+
+    // ---------- column 4 ------------
+
+    var input4 = document.createElement("input");
+    input4.setAttribute("type","text");
+    input4.setAttribute("style","width:100%");
+    input4.setAttribute("placeholder","JSON object");
+    if (row.fData)
+        input4.setAttribute("value",row.fData);
+    if (disabled)
+        input4.setAttribute("disabled","true");
+
+    var td4 = document.createElement("td");
+    td4.setAttribute("style", "padding-left:2px;padding-right:4px;");
+    td4.setAttribute("align","center");
+    td4.appendChild(input4);
+
+    tr.appendChild(td4);
+}
+
+function setupCalendar(result, date)
+{
+    debug("cal="+date);
+
+    date = date.replace('-','');
+    date = date.replace('-','');
+
+    var dates = { };
+
+    for (var i=0; i<result.length; i++)
+    {
+        result[i].d = result[i].d.replace('-','');
+        result[i].d = result[i].d.replace('-','');
+
+        dates[result[i].d] = { klass: "highlight", tooltip: "Schedule set." };
+    }
+
+    dates[date] = { klass: "selected", tooltip: "Currently selected." };
+
+    function getDateInfo(date, wantsClassName)
+    {
+        var as_number = Calendar.dateToInt(date);
+        return dates[as_number];
+    };
+
+    var cont = document.getElementById("cont");
+    while (cont.firstChild)
+        cont.removeChild(cont.firstChild);
+
+    var setup =
+    {
+        cont: "cont",
+        selectionType: Calendar.SEL_MULTIPLE,
+        bottomBar: false,
+        date:parseInt(date),
+        dateInfo:getDateInfo
+    };
+
+    debug("cal.date="+date);
+
+    var cal = Calendar.setup(setup); 
+    cal.addEventListener("onSelect", function(){ loadDay(this.selection.print("%Y-%m-%d")); });
+}
+
+
+function onDataReceived(result)
+{
+    var table = document.getElementById("TableHolder");
+    if (!table.currentDay)
+        return;
+
+    // Split the results of the different queries
+    // They are separated by newlines
+    var data = result.split('\\n');
+    if (data.length<5)
+    {
+        alert("Malformed result returned["+data.length+"]:\n"+data[data.length-1]);
+        return;
+    }
+
+    debug("table.currentDay="+table.currentDay);
+
+    // Decode the results into variables
+
+    // Does that work in all browsers, or do we need "YYYY-MM-DDTHH:MM:SSZ" ?
+    //data[0] = data[0].replace('-', '/');
+    //data[0] = data[0].replace('-', '/');
+
+    // year, month, day, hours, minutes, seconds, milliseconds
+    var tonight      = new String(table.currentDay);
+    var day          = new Date(table.currentDay);
+    var dates        = JSON.parse(data[0]);
+    var sources      = JSON.parse(data[1]);
+    var measurements = JSON.parse(data[2]);
+    var schedule     = JSON.parse(data[3]);
+
+    if (data[4])
+        alert(data[4]);
+
+    var ld = document.getElementById("loaddate");
+    ld.setAttribute("size","10");
+
+    ld.value = table.prevDay;
+
+    // First update the calender
+    setupCalendar(dates, tonight);
+
+    // Add a fake source to the list of sources to allow 'deselection' of source
+    sources.splice(0, 0, { key: 0, val: "---" });
+
+    table.sources = sources;
+    table.measurements = measurements;
+
+    // Enable or disable the SAVE and LoadPrev button
+    var save  = document.getElementById("save");
+    var load  = document.getElementById("load");
+    var ldate = document.getElementById("loaddate");
+
+    if (day.getTime()+36*3600*1000>table.loadTime)
+    {
+        save.removeAttribute("disabled");
+        load.removeAttribute("disabled");
+        ldate.removeAttribute("disabled");
+
+
+        // If this is a dayin the future, but no schedule is in the db,
+        // create an empty one
+        if (schedule.length==0)
+            addEmptyRow();
+    }
+    else
+    {
+        save.setAttribute("disabled", "true");
+        load.setAttribute("disabled", "true");
+        ldate.setAttribute("disabled", "true");
+    }
+
+    // Update the header of the date/time column
+    var tm = document.getElementById("time");
+    while (tm.firstChild)
+        tm.removeChild(tm.firstChild);
+
+    var nxt = new Date(day.getTime()+24*3600*1000);
+
+    var d1 = pad(day.getUTCMonth()+1)+'-'+pad(day.getUTCDate());
+    var d2 = pad(nxt.getUTCMonth()+1)+'-'+pad(nxt.getUTCDate());
+
+    tm.appendChild(document.createTextNode(d1+ " / "+d2));
+
+    var offset = new Date(table.loadedDay).getTime();
+
+    // other day loaded and tonight
+
+    if (!table.isTonight || !table.loadedDay)
+        table.cutTime = "12:00:00";
+
+    // Now loop over all rows and add them one by one to the table
+    for (var i=0; i<schedule.length; i++)
+    {
+        schedule[i].last   = schedule[schedule.length-1].fStart==schedule[i].fStart;
+        schedule[i].fStart = schedule[i].fStart.replace('-', '/');
+        schedule[i].fStart = schedule[i].fStart.replace('-', '/');
+
+        var stamp = new Date(schedule[i].fStart+" UTC");
+
+        if (table.loadedDay)
+            stamp = new Date(stamp.getTime()+day.getTime()-offset);
+
+        var disabled = stamp.getTime()<table.loadTime && !table.loadedDay;
+        if (disabled)
+            table.cutTime = pad(stamp.getUTCHours())+":"+pad(stamp.getUTCMinutes())+":"+pad(stamp.getUTCSeconds());
+
+        addRow(schedule[i], disabled);
+    }
+
+    debug("currentDay="+table.currentDay);
+    debug("nextDay="+table.nextDay);
+    debug("isTonight="+table.isTonight);
+    debug("cutTime="+table.cutTime);
+}
+
+function loadDay(date, dateToLoad)
+{
+    // Clean elements from table before new elements are added
+    var table = document.getElementById("TableHolder");
+
+    // In very rare cases (fast and frequent clicks on a date with a long schedule)
+    // the event listened of the calender returns a wrong value
+    if (new String(date).length!=10)
+        return;
+
+    var dbg = document.getElementById("debug");
+    while (dbg.firstChild)
+        dbg.removeChild(dbg.firstChild);
+
+    var count = 0;
+
+    var cut;
+    while (table.childNodes.length>2)
+    {
+        var cols = table.lastChild.childNodes;
+        var time = cols[0].firstChild;
+
+        if (time.disabled)
+        {
+            debug("disabled="+time.value);
+
+            cut = time.value;
+            if (dateToLoad)
+                break;
+        }
+
+        count++;
+        table.removeChild(table.lastChild);
+    }
+
+    debug(count+" lines removed ");
+
+    document.getElementById("savedate").value = date;
+
+    // it helps to know if this is tonight or not
+    var now   = new Date();
+    var day   = new Date(date);
+    var night = getYMD(new Date(now.getTime()-12*3600*1000));
+
+    table.isTonight  = date==night;
+    table.currentDay = date;
+    table.loadedDay  = dateToLoad;
+    table.loadTime   = now.getTime();
+
+    if (!table.isTonight || !table.loadedDay)
+        table.cutTime = undefined;
+
+    // remember the currently displayed day (FIXME: Move to table property?)
+    table.prevDay = getYMD(new Date(day.getTime()-24*3600*1000));
+    table.nextDay = getYMD(new Date(day.getTime()+24*3600*1000));
+
+    debug("day="+date+"|"+date.length);
+    debug("dayToLoad="+table.loadedDay);
+    debug("cut="+cut);
+
+    var data = "n="+(dateToLoad?dateToLoad:date);
+    if (cut && (!table.isTonight || table.loadedDay))
+        data += "&t="+cut;
+
+    debug("data="+data);
+
+    // request data from the datanbase and on reception, display the data
+    $.ajax({
+        type:    "POST",
+        cache:   false,
+        url:     "load.php",
+        data:    data,
+        success: onDataReceived,
+        error:   function(xhr) { if (xhr.status==0) alert("ERROR[0] - Request failed!"); else alert("ERROR[0] - "+xhr.statusText+" ["+xhr.status+"]"); }
+    });
+}
+
+function onLoad()
+{
+    if (location.href.search('debug')==-1)
+        $("#debug").hide();
+
+    /*---------------------------------------------------------------------------------------------
+     Prevent any user interaction during AJAX requests
+     ----------------------------------------------------------------------------------------------*/
+
+    $(document).ajaxStart(function() { $('#wait').fadeIn(); }).ajaxStop(function() { $('#wait').fadeOut(200); });
+
+    /*---------------------------------------------------------------------------------------------
+     Check if a dedicated day was requested, if not start with the current day.
+     Load the data from the database and display the calendar and the data.
+     ----------------------------------------------------------------------------------------------*/
+
+    var reg = /^\?day=(20[123][0-9]-[01][0-9]-[0123][0-9])/;
+    var res = reg.exec(location.search);
+
+    var day;
+    if (!res)
+    {
+        var now = new Date();
+
+        if (now.getUTCHours()<12)
+            now = new Date(now.getTime()-12*3600*1000);
+
+        day = getYMD(now);
+    }
+    else
+        day = res[1];
+
+    loadDay(day);
+
+    /*---------------------------------------------------------------------------------------------
+     Start updating the clock
+     ----------------------------------------------------------------------------------------------*/
+
+    updateClock();
+    setInterval(updateClock, 1000);
+
+    /*---------------------------------------------------------------------------------------------
+     Loading of previous data. Get the previous date with existing data through PreviousData.php
+     Same Shedule.ph passed to load on the controls with extra parameter 'prev' to indicate that
+     data is from previous schedule.
+     ----------------------------------------------------------------------------------------------*/
+
+    // FIXME: Do not overwrite the disabled part of the schedule if it is TONIGHT!!!!
+
+    function onLoad()
+    {
+        var cd = document.getElementById("TableHolder");
+        var dt = document.getElementById("loaddate");
+        loadDay(cd.currentDay, dt.value);
+    }
+
+    $('#load').click(onLoad);
+    $('#loaddate').keypress(function(event) { if (event.which==13) { onLoad(); } event.preventDefault(); });
+
+    /*---------------------------------------------------------------------------------------------
+     Savng and updating of schedule. Data array is generated from the current table to be submitted
+     to saveSchedule.php for the execution of queries.
+     ----------------------------------------------------------------------------------------------*/
+
+    function onSaveClick()
+    {
+        var table = document.getElementById("TableHolder");
+
+        var rows = table.childNodes;
+
+        var schedule = [];
+
+        // cutTime is the last time of a measurement which is past
+        // and should not be updated. This assumes that all
+        // time values are sequential.
+        //var cutTime  = "12:00:00";
+        //var prevTime = new Date(currentDay+" 12:00:00");
+
+        // FIXME: Make sure dates are sequentiel
+
+        for (var i=2; i<rows.length; i++)
+        {
+            var cols = rows[i].childNodes;
+
+            var time     = cols[0].firstChild.value;
+            var measure  = cols[1].firstChild.value;
+            var source   = cols[2].firstChild.value;
+            var value    = cols[3].firstChild.value;
+            var hidden   = cols[0].firstChild.hidden;
+            var disabled = cols[0].firstChild.disabled;
+
+            if (!hidden && !time)
+            {
+                alert("ERROR - Invalid time fields detected.");
+                return;
+            }
+
+            /*
+            if (!hidden)
+            {
+                // This is just to check the times... theoretically,
+                // these times could be sent, so that the php does not
+                // have to do that again, or should the php check things
+                // to ensure that it cannot be hacked?
+                var t = time;
+                t = t.replace(':','');
+                t = t.replace(':','');
+
+                t = new Date(t<120000 ? currentDay+" "+time : nextDay+" "+time);
+
+                if (t.getTime()<prevTime.getTime())
+                {
+                    alert("Times not sequential... cannot save schedule.");
+                    return;
+                }
+
+                prevTime = t;
+            }
+
+            if (disabled)
+            {
+                // if (cutTime>time) // no time yet!
+                cutTime = time;
+                continue;
+            }*/
+
+            if (disabled)
+                continue;
+
+            if (hidden)
+                time = null;
+
+            schedule.push([ time, measure, source, value ]);
+        }
+
+        if (schedule.length==0)
+        {
+            alert("No active tasks - nothing to be saved.");
+            return;
+        }
+
+        //alert(table.isTonight+"/"+table.cutTime+"/"+schedule.length);
+
+        var data = "n="+table.currentDay+"&d="+JSON.stringify(schedule);
+        if (table.isTonight)
+            data += "&t="+table.cutTime;
+
+        $.ajax({
+           type:    "POST",
+           cache:   false,
+           url:     "save.php",
+           data:    data,
+           success: function(result) { if (result.length==0) { /*alert("Success.");*/ loadDay(table.currentDay); } else alert("ERROR - "+result); },
+           error:   function(xhr) { if (xhr.status==0) alert("ERROR[1] - Unauthorized!"); else alert("ERROR[1] - "+xhr.statusText+" ["+xhr.status+"]"); }
+        });
+    }
+
+    $('#save').click(onSaveClick);
+
+
+    function onHelp()
+    {
+        var ov  = $("#Overlay");
+        var pos = $("#help").offset();
+        //var doc = $(document);
+        ov.css({
+           left:   pos.left + 'px',
+           top:    pos.top + 'px',
+           width:  0,
+           height: 0
+        })
+        .show()
+        .animate({
+           left:   0,
+           top:    0,
+           width:  '100%',
+           height: '100%'
+        }, "slow");
+
+        event.preventDefault();
+    }
+
+    function onClose()
+    {
+        $("#Overlay").hide("slow");
+    }
+
+    $('#help').click(onHelp);
+    $(document).keydown(function(event) { if (event.which==27) { onClose(); event.preventDefault(); } });
+    $('#close').click(onClose);
+
+}
+
+$('document').ready(onLoad);
Index: branches/testFACT++branch/www/schedule/load.php
===================================================================
--- branches/testFACT++branch/www/schedule/load.php	(revision 18277)
+++ branches/testFACT++branch/www/schedule/load.php	(revision 18277)
@@ -0,0 +1,63 @@
+<?php
+
+
+if (!isset($_POST['n']))
+   return header('HTTP/1.0 400 Syntax error.');
+
+// ================================================================
+//                       Database interaction
+// ================================================================
+
+function query($query)
+{
+   $sql = mysql_query($query);
+   if (!$sql)
+   	die(mysql_error());
+
+   $rows = array();
+   while($row = mysql_fetch_assoc($sql))
+      $rows[] = $row;
+
+   print(json_encode($rows).'\n');
+}
+
+// ----------------------------------------------------------------
+
+$cut = "";
+if (isset($_POST['t']))
+{
+    $cut = $_POST['n'].' '.$_POST['t'];
+
+    $d = new DateTime($cut);
+    if ($d->format("His")<120000)
+    {
+        $d->add(new DateInterval('P1D'));  // PnYnMnDTnHnMnS
+        $cut = $d->format("Y-m-d H:i:s");
+    }
+
+    $cut = " AND fStart>'".$cut."' ";
+}
+
+// ----------------------------------------------------------------
+
+require_once 'config.php';
+
+$db = mysql_connect($dbhost,$dbuser,$dbpass);
+if (!$db)
+   die(mysql_error());
+
+if (!mysql_select_db($dbname, $db))
+   die(mysql_error());
+
+/*mixed date_sunrise ( int $timestamp [, int $format = SUNFUNCS_RET_STRING [, float $latitude = ini_get("date.default_latitude") [, float $longitude = ini_get("date.default_longitude") [, float $zenith = ini_get("date.sunrise_zenith") [, float $gmt_offset = 0 ]]]]] )*/
+
+query("SELECT DISTINCT(DATE(ADDTIME(fStart, '-12:00'))) AS 'd' FROM Schedule");
+query("SELECT fSourceKEY AS 'key', fSourceName AS 'val' FROM Source WHERE fSourceTypeKEY=1");
+query("SELECT fMeasurementTypeKEY AS 'key', fMeasurementTypeName AS 'val' FROM MeasurementType");
+query("SELECT * FROM Schedule WHERE DATE(ADDTIME(fStart, '-12:00:00')) = '".$_POST['n']."'".$cut."ORDER BY fScheduleID ASC, fMeasurementID ASC");
+
+//sleep(3);
+
+//print($test1."|".$test2."|".$test3."|SELECT * FROM Schedule WHERE DATE(ADDTIME(fStart, '-12:00:00')) = '".$_POST['day']."'".$cut."ORDER BY fScheduleID ASC, fMeasurementID ASC\n");
+
+?>
Index: branches/testFACT++branch/www/schedule/save.php
===================================================================
--- branches/testFACT++branch/www/schedule/save.php	(revision 18277)
+++ branches/testFACT++branch/www/schedule/save.php	(revision 18277)
@@ -0,0 +1,262 @@
+<?php
+
+if (!isset($_POST['n']) || !isset($_POST['d']))
+    return header('HTTP/1.0 400 Syntax error.');
+
+require_once 'config.php';
+
+function login()
+{
+    global $ldaphost;
+    global $baseDN;
+    global $groupDN;
+
+    $username = $_SERVER['PHP_AUTH_USER'];
+    $password = $_SERVER['PHP_AUTH_PW'];
+
+    if (!isset($username) || !isset($password))
+        return "Unauthorized.";
+
+    $con = @ldap_connect($ldaphost);
+    if (!$con)
+        return "ldap_connect failed to ".$ldaphost;
+
+    //------------------ Look for user common name
+    $attributes = array('cn', 'mail');
+    $dn         = 'ou=People,'.$baseDN;
+    $filter     = '(uid='.$username.')';
+
+    $sr = @ldap_search($con, $dn, $filter, $attributes);
+    if (!$sr)
+        return "ldap_search failed for dn=".$dn.": ".ldap_error($con);
+
+    $srData = @ldap_get_entries($con, $sr);
+    if ($srData["count"]==0)
+        return "No results returned by ldap_get_entries for dn=".$dn.".";
+
+    $email         =$srData[0]['mail'][0];
+    $userCommonName=$srData[0]['cn'][0];
+    $userDN        =$srData[0]['dn'];
+
+    //------------------ Authenticate user
+    if (!@ldap_bind($con, $userDN, $password))
+        return "ldap_bind failed: ".ldap_error($con);
+
+    //------------------ Check if the user is in FACT ldap group
+    $attributes= array("member");
+    $filter= '(objectClass=*)';
+
+    // Get all members of the group.
+    $sr = @ldap_read($con, $groupDN, $filter, $attributes);
+    if (!$sr)
+        return "ldap_read failed for dn=".$groupDN.": ".ldap_error($con);
+
+    // retrieve the corresponding data
+    $srData = @ldap_get_entries($con, $sr);
+    if ($srData["count"]==0)
+        return "No results returned by ldap_get_entries for dn=".$dn.".";
+
+    @ldap_unbind($con);
+
+    $found = false;
+    foreach ($srData[0]['member'] as $member)
+        if (strpos($member, "cn=".$userCommonName.",")===0)
+            return "";
+
+    return "Authorization failed.";
+}
+
+// --------------------------------------------------------------------
+
+if (isset($_GET['logout']))
+{
+    if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']))
+        return;
+
+    return header('HTTP/1.0 401 Successfull logout!');
+}
+
+// --------------------------------------------------------------------
+
+$rc = login();
+if ($rc!="")
+{
+    header('WWW-Authenticate: Basic realm="FACT Schedule"');
+    header('HTTP/1.0 401 '.$rc);
+}
+
+// ====================================================================
+
+// This is the day/night from which the data is to be deleted
+// and to which the data is to be submitted
+$day  = $_POST['n'];
+
+// This is the time of the last diabled entry (or the time from which
+// on the data should be deleted/submitted)
+// Note that there is no sanity check yet, therefore the data and the
+// time variable must be consistent
+// FIXME: This should be 11:59:59 the prev day to allow for 12:00 being
+// the first possible entry, but this makes things below more complicated
+$time = isset($_POST['t']) ? $_POST['t'] : "12:00:00";
+
+// The data to be submitted
+$data = json_decode($_POST['d']);
+
+// Get user
+$user = $_SERVER['PHP_AUTH_USER'];
+
+// FIXME: Make sure that the date is valid (in the future)?
+
+// ----------------------------------------------------------------
+
+// Calculate the date for the next day, to have the correct
+//date after midnight as well
+$date = new DateTime($day);
+$date->add(new DateInterval('P1D'));  // PnYnMnDTnHnMnS
+$nextDay = $date->format('Y-m-d');
+
+// ----------------------------------------------------------------
+
+// Calculate the lower limit from which on data should be deleted.
+// This is either noon (if the date is in the future) or the provided
+// time (different from 12:00:00) during the night
+$cut = $day." ".$time;
+
+$d = new DateTime($cut);
+
+// If the time lays before noon, it belongs to the next day
+if ($d->format("His")<120000)
+{
+    $d->add(new DateInterval('P1D'));  // PnYnMnDTnHnMnS
+    $cut = $d->format("Y-m-d H:i:s");
+}
+
+// ================================================================
+
+$db = mysql_connect($dbhost,$dbuser,$dbpass);
+if (!$db)
+    die(mysql_error());
+
+if (!mysql_select_db($dbname, $db))
+    die(mysql_error());
+
+$query = "SELECT * FROM MeasurementType";
+
+$sql = mysql_query($query);
+if (!$sql)
+    die(mysql_error());
+
+$measurements = array();
+while($row = mysql_fetch_assoc($sql))
+    $measurements[$row['fMeasurementTypeKey']] = $row;
+
+// ----------------------------------------------------------------
+
+// Now create the queries with the correct dates (date and time)
+// from the posted data and the times therein
+$queries = array();
+
+array_push($queries, "LOCK TABLES Schedule WRITE");
+array_push($queries, "DELETE FROM Schedule WHERE fStart>'".$cut."' AND DATE(ADDTIME(fStart, '-12:00')) = '".$day."'");
+
+// ----------------------------------------------------------------
+
+$last = $cut;
+
+foreach ($data as $row)
+{
+    $t = $row[0]; // time
+
+    // If there is a time set (first task in an observation),
+    // remember the time, if not this is just a measurement
+    // within an observation so duplicate the time
+    if (!isset($t))
+    {
+        $t = $save;
+        $id++;
+    }
+    else
+    {
+        $save = $t;
+        $id = 0;
+    }
+
+    // Check if the time is before noon. If it is before noon,
+    // it belongs to the next day
+    $d = date_parse($t);
+    $t = $d['hour']<12 ? $nextDay." ".$t : $day." ".$t;
+
+    // Check all but the last task in a measurement whether
+    // the are not unlimited
+    if ($last==$t)
+    {
+        if ($measurements[$m]['fIsUnlimited']==true)
+            die("Unlimited task '".$measurements[$m]['fMeasurementTypeName']."' detected before end of observation\n[".$last."|".($id-1)."]");
+    }
+
+    if ($last>$t)
+        die("Times not sequential\n[".$last."|".$t."]");
+
+    $last = $t;
+
+    $m = $row[1]; // measurement
+    $s = $row[2]; // source
+    $v = $row[3]; // value
+
+    // Check if task need source or must not have a source
+    if ($measurements[$m]['fNeedsSource']==true && $s==0)
+        die("Task '".$measurements[$m]['fMeasurementTypeName']."' needs source.\n[".$t."|".$id."]");
+    if ($measurements[$m]['fNeedsSource']!=true && $s>0)
+        die("Task '".$measurements[$m]['fMeasurementTypeName']."' must not have source.\n[".$t."|".$id."]");
+
+    // Compile query
+    $query = "INSERT INTO Schedule SET";
+    $query .= " fStart='".$t."'";
+    $query .= ",fMeasurementID=".$id;
+    $query .= ",fMeasurementTypeKey=".$m;
+    $query .= ",fUser='".$user."'";
+    if ($s>0)
+        $query .= ",fSourceKey=".$s;
+
+    // Check if this is a valid JSON object
+    if (!json_decode('{'.$v.'}'))
+    {
+        switch (json_last_error())
+        {
+        case JSON_ERROR_NONE:             break;
+        case JSON_ERROR_DEPTH:            $err = 'Maximum stack depth exceeded'; break;
+        case JSON_ERROR_STATE_MISMATCH:   $err = 'Invalid or malformed JSON';    break;
+        case JSON_ERROR_CTRL_CHAR:        $err = 'Unexpected control character'; break;
+        case JSON_ERROR_SYNTAX:           $err = 'Syntax error';                 break;
+        case JSON_ERROR_UTF8:             $err = 'Malformed UTF-8 characters';   break;
+        default:                          $err = 'Unknown error';                break;
+        }
+
+        if (isset($err))
+            die($err." at ".$t." [entry #".($id+1)."]:\n".$v);
+    }
+
+    // PHP >= 5.5.0
+    // if (!json_decode('{'.$v.'}'))
+    //    die("Invalid option at ".$t.": ".$v." [JSON - ".json_last_error_msg()."]");
+
+
+    $query .= ",fData='".$v."'";
+
+    // add query to the list of queries
+    array_push($queries, $query);
+}
+
+array_push($queries, "UNLOCK TABLES");
+
+// ================================================================
+//                       Database interaction
+// ================================================================
+
+foreach ($queries as $query)
+    if (!mysql_query($query))
+        die(mysql_error());
+
+mysql_close($db);
+
+?>
Index: branches/testFACT++branch/www/shift/calendar.css
===================================================================
--- branches/testFACT++branch/www/shift/calendar.css	(revision 18277)
+++ branches/testFACT++branch/www/shift/calendar.css	(revision 18277)
@@ -0,0 +1,128 @@
+/**********************************************************************
+*          Calendar JavaScript [DOM] v3.1 by Michael Loesler           *
+************************************************************************
+* Copyright (C) 2005-10 by Michael Loesler, http//derletztekick.com    *
+*                                                                      *
+*                                                                      *
+* 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 3 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, see <http://www.gnu.org/licenses/>  *
+* or write to the                                                      *
+* Free Software Foundation, Inc.,                                      *
+* 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.            *
+*                                                                      *
+ **********************************************************************/
+
+			html, body { 
+				background-color: #ECECEC;
+				font-family: verdana, arial, sans-serif; 
+			}
+				
+			#calendar { /* Fuer IE <= 6 */
+				text-align: center;
+			}
+    
+			#calendar table thead th{ 
+				font-weight: bold; 
+				font-size: 0.75em;
+				line-height: 1.5em;				
+				color: #BFBFC1; 
+				text-align: center;
+				background-color: #112A5D;
+			}
+			
+			#calendar table thead th.weekday{ 
+				font-weight: bold; 
+				font-size: 0.66em;
+				line-height: 1.5em;
+				color: #112A5D; 
+				text-align: center;
+				background-color: #CCD2D8;
+				border: solid #112A5D 1px;
+			}
+
+			#calendar table tbody td, #calendar table tfoot td{ 
+				font-weight: normal; 
+				font-size: 0.66em;
+				line-height: 1.5em;
+				/*width: 2.0em;*/
+				padding-left: 0.6em; 
+				padding-right: 0.6em; 
+				color: #0E224B; 
+				text-align: right;
+				border: 1px solid #CCD2D8;
+                                vertical-align:top;
+                                font-weight:bolder;
+			}
+			
+			#calendar table tfoot td {
+				font-size: 0.65em;
+				border: none;
+			}
+			
+			#calendar table tfoot td.clock {
+				text-align: left;
+			}
+
+			#calendar table tfoot td.logout {
+				text-align: right;
+			}
+			
+			#calendar table tbody td.saturday{ 
+				color: #9A2525;
+				font-weight: normal;
+			}
+			
+			#calendar table tbody td.sunday{ 
+				color: #9A2525;
+				font-weight: bold;
+			}
+			
+			#calendar table tbody td.weekend{ 
+				color: #9A2525;
+			}
+			
+			#calendar table tbody td.today{
+				/*background-color: #A7B5F7;*/
+                                border:3px solid #FC8298;
+			}
+
+			#calendar table tbody td.enabled{
+				background-color: #E8F5C7;
+			}
+			#calendar table tbody div.institute{
+				background-color: #C8D5A7;
+                                text-align:center;
+                                font-size:1.25em;
+			}
+			#calendar table tbody td.choosen{
+                                border:2px solid #808080;
+			}
+			
+			#calendar table thead th.prev_year, #calendar table thead th.next_year {
+				margin: 0.1em;
+				padding: 0.1em;
+				line-height: 0.75em;
+				font-size: 0.65em;
+			}
+			
+			#calendar table tbody td.last_month, #calendar table tbody td.next_month {
+				color: 	#a3afc4;
+			}
+			
+			#calendar table{
+				border-collapse: collapse;
+				border: solid #112A5D 2px;
+				padding: 0;
+				margin:0;
+				background-color: #F6F6F6;
+			}
Index: branches/testFACT++branch/www/shift/calendar.js
===================================================================
--- branches/testFACT++branch/www/shift/calendar.js	(revision 18277)
+++ branches/testFACT++branch/www/shift/calendar.js	(revision 18277)
@@ -0,0 +1,916 @@
+/**********************************************************************
+*          Calendar JavaScript [DOM] v3.11 by Michael Loesler          *
+************************************************************************
+* Copyright (C) 2005-09 by Michael Loesler, http//derletztekick.com    *
+*                                                                      *
+*                                                                      *
+* 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 3 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, see <http://www.gnu.org/licenses/>  *
+* or write to the                                                      *
+* Free Software Foundation, Inc.,                                      *
+* 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.            *
+*                                                                      *
+ **********************************************************************/
+/*
+function logout()
+{
+    var xmlHttp = new XMLHttpRequest();
+    xmlHttp.open('POST', "calendar.php?logout=1", true);
+    xmlHttp.onload = function ()
+    {
+        if (xmlHttp.status!=200)
+        {
+            alert("ERROR - HTTP request: "+xmlHttp.statusText+" ["+xmlHttp.status+"]");
+            return;
+        }
+
+        alert("Logout successful!");
+    };
+
+    xmlHttp.send();
+}
+*/
+function resize()
+{
+    var table = document.getElementById("table");
+
+    var W = window.innerWidth;
+    var H = window.innerHeight;
+
+    table.style.width =W+"px";
+    table.style.height=H+"px";
+}
+
+var institutes= ["Shift", "Debug", "moon", "ETHZ", "ISDC", "TUDO", "UNIWUE" ];
+
+function CalendarJS()
+{
+    this.now       = new Date();
+    this.dayname   = ["Mo","Tu","We","Th","Fr","Sa","So"];
+    this.monthname = ["January","February","March","April","May","June","July","August","September","October","November","December"];
+    this.tooltip   = ["previous month","next month","current date","last year","next year"];
+    this.monthCell = document.createElement("th");
+    this.tableHead = null;
+    this.tableFoot = null;
+    this.parEl     = null;
+
+    this.init = function( id, initDate )
+    {
+        this.now       = initDate ? initDate : new Date();
+        this.date      = this.now.getDate();
+        this.month     = this.mm = this.now.getMonth();
+        this.year      = this.yy = this.now.getFullYear();
+        this.monthCell.appendChild(document.createTextNode( this.monthname[this.mm]+"\u00a0"+this.yy ));
+
+        this.tableHead = this.createTableHead();
+        this.tableFoot = this.createTableFoot();
+
+        this.parEl = document.getElementById( id );
+        this.show();
+
+        if (!initDate)
+            this.checkDate();
+    };
+
+    this.checkDate = function()
+    {
+        var self  = this;
+        var today = new Date();
+
+        if (this.date != today.getDate())
+        {
+            this.tableHead = this.createTableHead();
+            this.tableFoot = this.createTableFoot();
+
+            this.date = today.getDate();
+            if (this.mm == this.month && this.yy == this.year)
+                this.switchMonth("current");
+
+            this.month = today.getMonth();
+            if (this.mm == this.month && this.yy == this.year)
+                this.switchMonth("current");
+
+            this.year  = today.getFullYear();
+            if (this.mm == this.month && this.yy == this.year)
+                this.switchMonth("current");
+        }
+        window.setTimeout(function() { self.checkDate(); }, Math.abs(new Date(this.year, this.month, this.date, 24, 0, 0)-this.now));
+    },
+
+    this.removeElements = function( Obj )
+    {
+        while( Obj.childNodes.length > 0)
+            Obj.removeChild(Obj.lastChild);
+
+        return Obj;
+    };
+
+    this.show = function()
+    {
+        this.parEl = this.removeElements( this.parEl );
+        this.monthCell.firstChild.replaceData(0, this.monthCell.firstChild.nodeValue.length, this.monthname[this.mm]+"\u00a0"+this.yy);
+
+        var table = document.createElement("table");
+        table.id = "table";
+
+        this.parEl.appendChild( table );
+
+        table.appendChild( this.tableHead );
+        table.appendChild( this.tableFoot );
+
+        table.appendChild( this.createTableBody(window.innerHeight-table.offsetHeight) );
+ 
+        resize();
+    };
+
+    this.createTableFoot = function()
+    {
+        var tfoot = document.createElement("tfoot");
+
+        var tr = document.createElement("tr");
+        var td = document.createElement("td");
+        td.height = "1%";
+        td.colSpan = 7;
+        td.style.padding="3px 3px";
+        tfoot.appendChild(tr);
+        tr.appendChild(td);
+        var table = document.createElement("table");
+        table.width="100%";
+        td.appendChild(table);
+        tr = document.createElement("tr");
+        table.appendChild(tr);
+        for (var i=0; i<institutes.length; i++)
+        {
+            td = document.createElement("td");
+            td.width=100/institutes.length+"%";
+            td.setAttribute("style", "text-align:center;font-size:1em;border:solid #112A5D 2px;padding:3px 3px;");
+            td.changeUser = this.changeUser;
+            td.onclick = function(e) { this.changeUser(); }
+            td.appendChild(document.createTextNode(institutes[i]));
+            tr.appendChild(td);
+
+            if (i==0)
+                td.style.backgroundColor = "yellow";
+        }
+        document.getElementById("body").setAttribute("data-user", institutes[0]);
+
+
+        tr = document.createElement("tr");
+        td = document.createElement("td");
+        td.colSpan = 7;
+        td.style.paddingLeft = "0px";
+        td.style.paddingTop  = "0px";
+        td.height = "1%";
+        var form  = document.createElement("form");
+        var input = document.createElement("textarea");
+        input.overflow    = "auto";
+        input.wrap        = "virtual";
+        input.id          = "comment";
+        input.value       = "enter comment here";
+        input.style.color = "#888";
+        input.style.width = "100%";
+        input.rows        = 5;
+        input.title       = "Enter a comment. Click somewhere in the calender to store the comment.";
+        input.onchange    = function() { pushComment(); };
+        input.onfocus     = function() { if (input.value=="enter comment here" && input.style.color!="black") input.value=""; input.style.color="black"; };
+        input.onblur      = function() { input.style.color="#888"; if (input.value=="") input.value="enter comment here"; };
+        form.appendChild(input);
+        td.appendChild( form );
+        tr.appendChild( td );
+        tfoot.appendChild(tr);
+
+        tr = document.createElement("tr");
+
+        var td = document.createElement("td");
+        td.height="1%";
+        td.colSpan=7;
+        tr.appendChild(td);
+
+        var tab = document.createElement("table");
+        var tr2 = document.createElement("tr");
+        tab.width="100%";
+        tab.cellSpacing=0;
+        tab.cellPadding=0;
+        tab.style.borderWidth = 0;
+        tab.style.fontSize = "1.5em";
+        tab.style.marginBottom = "2px";
+        td.appendChild(tab);
+        tab.appendChild(tr2);
+
+        var tm = this.getCell( "td", this.timeTrigger(), "clock" );
+        tm.style.whiteSpace="nowrap";
+        tm.style.paddingLeft = "0px";
+        tm.style.width="33%";
+        tr2.appendChild( tm );
+
+        var self = this;
+        window.setInterval(function() { tm.firstChild.nodeValue = self.timeTrigger(); }, 500);
+
+        var td = document.createElement("td");
+        td.style.width="33%";
+        td.style.textAlign="center";
+        var a = document.createElement("a");
+        a.href = "overview.png";
+        a.style.whiteSpace="nowrap";
+        a.appendChild(document.createTextNode("click here for help"));
+        td.appendChild(a);
+        tr2.appendChild( td );
+
+        td = this.getCell( "td", "logout", "logout");
+        td.style.width="33%";
+        td.onclick = function(e) { logout(); }
+        td.style.paddingRight = "0px";
+        tr2.appendChild( td );
+
+        tfoot.appendChild( tr );
+
+        return tfoot;
+    }
+
+    this.createTableHead = function()
+    {
+        var thead = document.createElement("thead");
+        thead.style.height="1%";
+        var tr = document.createElement("tr");
+        var th = this.getCell( "th", "\u00AB", "prev_month" );
+
+        th.rowSpan = 2;
+        th.Instanz = this;
+        th.onclick = function() { this.Instanz.switchMonth("prev"); };
+        th.title = this.tooltip[0];
+
+        try { th.style.cursor = "pointer"; } catch(e){ th.style.cursor = "hand"; }
+        tr.appendChild( th );
+
+        this.monthCell.Instanz = this;
+        this.monthCell.rowSpan = 2;
+        this.monthCell.colSpan = 4;
+        this.monthCell.onclick = function() { this.Instanz.switchMonth("current"); };
+        this.monthCell.title = this.tooltip[2];
+
+        try { this.monthCell.style.cursor = "pointer"; } catch(e){ this.monthCell.style.cursor = "hand"; }
+        tr.appendChild( this.monthCell );
+
+        th = this.getCell( "th", "\u00BB", "next_month" );
+        th.rowSpan = 2;
+        th.Instanz = this;
+        th.onclick = function() { this.Instanz.switchMonth("next"); };
+        th.title = this.tooltip[1];
+
+        try { th.style.cursor = "pointer"; } catch(e){ th.style.cursor = "hand"; }
+        tr.appendChild( th );
+
+        th = this.getCell( "th", "\u02c4", "prev_year" );
+        th.Instanz = this;
+        th.onclick = function() { this.Instanz.switchMonth("prev_year"); };
+        th.title = this.tooltip[3];
+
+        try { th.style.cursor = "pointer"; } catch(e){ th.style.cursor = "hand"; }
+        tr.appendChild( th );
+
+        thead.appendChild( tr );
+
+        tr = document.createElement("tr");
+        th = this.getCell( "th", "\u02c5", "next_year" );
+        th.Instanz = this;
+        th.onclick = function() { this.Instanz.switchMonth("next_year"); };
+        th.title = this.tooltip[4];
+
+        try { th.style.cursor = "pointer"; } catch(e){ th.style.cursor = "hand"; }
+        tr.appendChild( th );
+
+        thead.appendChild( tr );
+
+        tr = document.createElement('tr');
+        for (var i=0; i<this.dayname.length; i++)
+        {
+            var th = this.getCell("th", this.dayname[i], "weekday" );
+            th.width=100/7+"%";
+            tr.appendChild( th );
+        }
+
+        thead.appendChild( tr );
+
+        return thead;
+    },
+
+    this.createTableBody = function(height)
+    {
+        var dayspermonth = [31,28,31,30,31,30,31,31,30,31,30,31];
+        var sevendaysaweek = 0;
+        var begin = new Date(this.yy, this.mm, 1);
+        var firstday = begin.getDay()-1;
+        if (firstday < 0)
+            firstday = 6;
+        if ((this.yy%4==0) && ((this.yy%100!=0) || (this.yy%400==0)))
+            dayspermonth[1] = 29;
+
+        var tbody = document.createElement("tbody");
+        var tr    = document.createElement('tr');
+
+        tbody.height="100%";
+
+        var height="";//"20%";//100/8+"%";
+
+        if (firstday == 0)
+        {
+            for (var i=0; i<this.dayname.length; i++)
+            {
+                var prevMonth = (this.mm == 0)?11:this.mm-1;
+                var td = this.getCell( "td", dayspermonth[prevMonth]-6+i, "last_month" );
+                td.style.height=height;
+                tr.appendChild( td );
+            }
+            tbody.appendChild( tr );
+            tr = document.createElement('tr');
+        }
+
+        for (var i=0; i<firstday; i++, sevendaysaweek++)
+        {
+            var prevMonth = (this.mm == 0)?11:this.mm-1;
+            var td = this.getCell( "td", dayspermonth[prevMonth]-firstday+i+1, "last_month" );
+            td.style.height=height;
+            tr.appendChild( td );
+        }
+
+        for (var i=1; i<=dayspermonth[this.mm]; i++, sevendaysaweek++)
+        {
+            if (this.dayname.length == sevendaysaweek)
+            {
+                tbody.appendChild( tr );
+                tr = document.createElement('tr');
+                sevendaysaweek = 0;
+            }
+
+            var td = null;
+            if (i==this.date && this.mm==this.month && this.yy==this.year && (sevendaysaweek == 5 || sevendaysaweek == 6))
+                td = this.getCell( "td", i, "today weekend" );
+            else
+                if (i==this.date && this.mm==this.month && this.yy==this.year)
+                    td = this.getCell( "td", i, "today" );
+                else
+                    if (sevendaysaweek == 5 || sevendaysaweek == 6)
+                        td = this.getCell( "td", i, "weekend" );
+                    else
+                        td = this.getCell( "td", i, null);
+
+            td.setDate    = this.setDate;
+            td.chooseDate = this.chooseDate;
+            td.dd = i;
+            td.mm = this.mm;
+            td.yy = this.yy;
+            td.id = this.mm+"-"+i;
+            td.title = "Click to select this date.";
+
+            td.style.height=height;
+
+            td.onclick = function(e) {
+                this.chooseDate();
+            };
+
+            var tab = document.createElement("table");
+            tab.width="100%";
+            tab.style.border = 0;
+            tab.style.padding = 0;
+            tab.style.margin = 0;
+            tab.style.fontSize = "1.5em";
+            tab.style.backgroundColor = "transparent";
+            var tr0 = document.createElement("tr");
+            var td0 = document.createElement("td");
+            var td1 = document.createElement("td");
+            td0.style.textAlign = "left";
+            td1.style.textAlign = "right";
+            td1.style.textWeight= "normal";
+            td0.style.color = "lightgray";
+            td0.style.border=0;
+            td1.style.border=0;
+            td0.style.padding=0;
+            td1.style.padding=0;
+            tab.appendChild(tr0);
+            tr0.appendChild(td0);
+            tr0.appendChild(td1);
+            //td0.appendChild(document.createTextNode(txt));
+
+            td1.appendChild(td.firstChild);
+            td.appendChild(tab);
+
+            var IP    = this.getMoonPhase(this.yy, this.mm, i);
+            var str   = this.getMoonPhaseStr(IP);
+            var phase = 100-Math.abs(IP-0.5)*200;
+            var txt   = parseInt(phase+0.5,10)+"%";
+            if (phase>50)
+                td0.style.color = "gray";
+            if (phase<3.4)
+            {
+                txt = "o";
+                td0.style.textWeight = "bolder";
+                td0.style.fontSize = "0.7em";
+                td0.style.color = "darkgreen";
+            }
+            if (phase>96.6)
+            {
+                txt = "&bull;";
+                td0.style.textWeight = "bolder";
+                td0.style.fontSize = "0.8em";
+                td0.style.color = "darkred";
+            }
+            tab.title = str;
+            td0.innerHTML = txt;
+
+            var sp = document.createElement("span");
+            sp.appendChild(document.createTextNode("*"));
+            sp.style.color="darkred";
+            sp.style.display="none";
+            td1.appendChild(sp);
+
+
+            tr.appendChild( td );
+        }
+
+        var daysNextMonth = 1;
+        for (var i=sevendaysaweek; i<this.dayname.length; i++)
+            tr.appendChild( this.getCell( "td", daysNextMonth++, "next_month"  ) );
+
+        tbody.appendChild( tr );
+
+        while (tbody.getElementsByTagName("tr").length<6) {
+            tr = document.createElement('tr');
+            for (var i=0; i<this.dayname.length; i++)
+            {
+                var td = this.getCell( "td", daysNextMonth++, "next_month"  );
+                td.style.height=height;
+                tr.appendChild( td );
+            }
+            tbody.appendChild( tr );
+        }
+
+        requestAll(this.yy, this.mm);
+        requestAllComments(this.yy, this.mm);
+        if (this.year==this.yy && this.month==this.mm)
+            requestComment(this.year, this.month, this.date);
+        else
+        {
+            var c = document.getElementById("comment");
+            c.color="#888";
+            c.value="enter comment here";
+        }
+
+        return tbody;
+    };
+
+    this.getCalendarWeek = function(j,m,t)
+    {
+        var cwDate = this.now;
+        if (!t)
+        {
+            j = cwDate.getFullYear();
+            m = cwDate.getMonth();
+            t = cwDate.getDate();
+        }
+        cwDate = new Date(j,m,t);
+
+        var doDat = new Date(cwDate.getTime() + (3-((cwDate.getDay()+6) % 7)) * 86400000);
+        cwYear = doDat.getFullYear();
+
+        var doCW = new Date(new Date(cwYear,0,4).getTime() + (3-((new Date(cwYear,0,4).getDay()+6) % 7)) * 86400000);
+        cw = Math.floor(1.5+(doDat.getTime()-doCW.getTime())/86400000/7);
+        return cw;
+    };
+
+    function request(td)
+    {
+        var user = document.getElementById("body").getAttribute("data-user");
+        var uri = "calendar.php?toggle&y="+td.yy+"&m="+td.mm+"&d="+td.dd;
+
+        if (user!="Shift" && user!="Debug")
+            uri += "&u="+user;
+
+        uri += "&x="+(user=="Debug"?1:0);
+
+        var xmlHttp = new XMLHttpRequest();
+        xmlHttp.open('POST', uri, true);
+        xmlHttp.onload = function ()
+        {
+            if (xmlHttp.status!=200)
+            {
+                alert("ERROR - HTTP request: "+xmlHttp.statusText+" ["+xmlHttp.status+"]");
+                return;
+            }
+
+            var lines = xmlHttp.responseText.split('\n');
+            if (lines.length==0)
+                return;
+
+            while (td.childNodes.length>1)
+                td.removeChild(td.lastChild);
+
+            for (var i=0; i<lines.length; i++)
+            {
+                var x = lines[i].split('\t');
+                if (x.length!=3)
+                    continue;
+
+                var div = document.createElement("div");
+                div.style.fontWeight="normal";
+                div.appendChild(document.createTextNode(x[2]=="1"?'('+x[1]+')':x[1]));
+                td.appendChild(div);
+
+                for (var j=0; j<institutes.length; j++)
+                    if (x[1]==institutes[j])
+                    {
+                        div.className += " institute";
+                        break;
+                    }
+            }
+
+            if (td.childNodes.length>1)
+                td.className += " enabled";
+            else
+                td.className = td.className.replace(/enabled/g, "");
+        };
+
+        xmlHttp.send();
+    }
+
+    function logout()
+    {
+        var xmlHttp = new XMLHttpRequest();
+        xmlHttp.open('POST', "calendar.php?logout", true);
+        xmlHttp.onload = function ()
+        {
+            if (xmlHttp.status!=401)
+            {
+                alert("ERROR - HTTP request: "+xmlHttp.statusText+" ["+xmlHttp.status+"]");
+                return;
+            }
+
+            alert(xmlHttp.statusText);
+        };
+
+        xmlHttp.send();
+    }
+
+    function pushComment()
+    {
+        var c = document.getElementById("comment");
+
+        var y = c.getAttribute("data-y");
+        var m = c.getAttribute("data-m");
+        var d = c.getAttribute("data-d");
+        var v = c.value;
+
+        var uri = "calendar.php?y="+y+"&m="+m+"&d="+d+"&c="+encodeURIComponent(v);
+
+        var xmlHttp = new XMLHttpRequest();
+        xmlHttp.open('POST', uri, true);
+        xmlHttp.onload = function()
+        {
+            if (xmlHttp.status!=200)
+            {
+                alert("ERROR - HTTP request: "+xmlHttp.statusText+" ["+xmlHttp.status+"]");
+                return;
+            }
+
+            alert("Comment inserted successfully.");
+
+            var td = document.getElementById(m+"-"+d);
+            var sp = td.firstChild.firstChild.lastChild.lastChild;
+            if (v=="")
+            {
+                sp.style.display="none";
+                td.title="Click to select this date.";
+            }
+            else
+            {
+                sp.style.display="";
+                td.title=v;
+            }
+
+        };
+
+        xmlHttp.send();
+    }
+
+    function requestComment(yy, mm, dd)
+    {
+        var c = document.getElementById("comment");
+
+        var y = c.getAttribute("data-y");
+        var m = c.getAttribute("data-m");
+        var d = c.getAttribute("data-d");
+
+        if (y==yy && m==mm && d==dd)
+            return;
+
+        var uri = "calendar.php?comment&y="+yy+"&m="+mm+"&d="+dd;
+        var xmlHttp = new XMLHttpRequest();
+        xmlHttp.open('POST', uri, true);
+        xmlHttp.onload = function ()
+        {
+            if (xmlHttp.status!=200)
+            {
+                alert("ERROR - HTTP request: "+xmlHttp.statusText+" ["+xmlHttp.status+"]");
+                return;
+            }
+
+            var td = document.getElementById(mm+"-"+dd);
+            var sp = td.firstChild.firstChild.lastChild.lastChild;
+
+            if (sp!=undefined)
+            {
+                c.color="#888";
+                if (xmlHttp.responseText=="")
+                {
+                    c.value="enter comment here";
+                    sp.style.display="none";
+                    td.title="";
+                }
+                else
+                {
+                    c.value = xmlHttp.responseText;
+                    sp.style.display="";
+                    td.title=xmlHttp.responseText;
+                }
+            }
+
+            c.setAttribute("data-y", yy);
+            c.setAttribute("data-m", mm);
+            c.setAttribute("data-d", dd);
+        };
+
+        xmlHttp.send();
+    }
+
+    var xmlReqAll = null;
+    function requestAll(yy, mm)
+    {
+        if (xmlReqAll)
+            xmlReqAll.abort();
+
+        var uri = "calendar.php?y="+yy+"&m="+mm;
+
+        xmlReqAll = new XMLHttpRequest();
+        xmlReqAll.open('POST', uri, true);
+        xmlReqAll.onload = function ()
+        {
+            if (xmlReqAll.status!=200)
+            {
+                alert("ERROR - HTTP request: "+xmlReqAll.statusText+" ["+xmlReqAll.status+"]");
+                return;
+            }
+
+            var lines = xmlReqAll.responseText.split('\n');
+            if (lines.length==0)
+                return;
+
+            for (var i=0; i<lines.length; i++)
+            {
+                var x = lines[i].split('\t');
+                if (x.length!=3)
+                    continue;
+
+                var td = document.getElementById(mm+"-"+x[0]);
+
+                var div = document.createElement("div");
+                div.style.fontWeight="normal";
+                div.appendChild(document.createTextNode(x[2]=="1"?'('+x[1]+')':x[1]));
+                td.appendChild(div);
+
+                for (var j=0; j<institutes.length; j++)
+                    if (x[1]==institutes[j])
+                    {
+                        div.className += " institute";
+                        break;
+                    }
+
+                td.className += " enabled";
+            }
+        };
+
+        xmlReqAll.send();
+    }
+
+    var xmlReqCom = null;
+    function requestAllComments(yy, mm)
+    {
+        if (xmlReqCom)
+            xmlReqCom.abort();
+
+        var uri = "calendar.php?comment&y="+yy+"&m="+mm;
+        xmlReqCom = new XMLHttpRequest();
+        xmlReqCom.open('POST', uri, true);
+        xmlReqCom.onload = function ()
+        {
+            if (xmlReqCom.status!=200)
+            {
+                alert("ERROR - HTTP request: "+xmlReqCom.statusText+" ["+xmlReqCom.status+"]");
+                return;
+            }
+
+            if (xmlReqCom.responseText<4)
+                return;
+
+            var pos = 6;
+
+            while (pos<xmlReqCom.responseText.length)
+            {
+                var len = parseInt(xmlReqCom.responseText.substr(pos-6, 4), 10);
+                var dd  = parseInt(xmlReqCom.responseText.substr(pos-2, 2), 10);
+                var com = xmlReqCom.responseText.substr(pos, len);
+                pos += len+6;
+
+                if (com!="")
+                {
+                    var td = document.getElementById(mm+"-"+dd);
+                    var sp = td.firstChild.firstChild.lastChild.lastChild;
+                    sp.style.display="";
+                    td.title=com;
+                }
+            }
+        };
+
+        xmlReqCom.send();
+    }
+
+    this.setDate = function()
+    {
+        request(this);
+    };
+
+    this.changeUser = function()
+    {
+        var sib = this.nextSibling;
+        while (sib)
+        {
+            sib.style.backgroundColor = "";
+            sib = sib.nextSibling;
+        }
+
+        sib = this.previousSibling;
+        while (sib)
+        {
+            sib.style.backgroundColor = "";
+            sib = sib.previousSibling;
+        }
+
+        this.style.backgroundColor = "yellow";
+
+        document.getElementById("body").setAttribute("data-user", this.firstChild.textContent);
+    };
+
+    this.chooseDate = function()
+    {
+        while (document.getElementsByClassName("choosen")[0])
+        {
+            var e = document.getElementsByClassName("choosen")[0];
+            e.title = "Click to select this date.";
+            e.className = e.className.replace(/choosen/g, "");
+            e.onclick = function() {
+                this.chooseDate();
+            };
+        }
+
+        this.className += " choosen";
+        this.title = "Click again to add or remove your name.";
+
+        requestComment(this.yy, this.mm, this.dd);
+
+        this.onclick = function() {
+            this.setDate();
+        };
+    };
+
+    this.timeTrigger = function()
+    {
+        var now = new Date();
+        var ss  = (now.getSeconds()<10)?"0"+now.getSeconds():now.getSeconds();
+        var mm  = (now.getMinutes()<10)?"0"+now.getMinutes():now.getMinutes();
+        var hh  = (now.getHours()  <10)?"0"+now.getHours()  :now.getHours();
+
+        var kw = "KW" + this.getCalendarWeek(this.year, this.month, this.date);
+        var str = hh+":"+mm+":"+ss+"\u00a0["+kw+"]";
+        return str;
+    };
+
+    this.getCell = function(tag, str, cssClass)
+    {
+        var El = document.createElement( tag );
+        El.appendChild(document.createTextNode( str ));
+        if (cssClass != null)
+            El.className = cssClass;
+        return El;
+    },
+
+    this.switchMonth = function( s )
+    {
+        switch (s)
+        {
+        case "prev":
+            this.yy = (this.mm == 0) ? this.yy-1 : this.yy;
+            this.mm = (this.mm == 0) ? 11        : this.mm-1;
+            break;
+
+        case "next":
+            this.yy = (this.mm == 11) ? this.yy+1 : this.yy;
+            this.mm = (this.mm == 11) ? 0         : this.mm+1;
+            break;
+
+        case "prev_year":
+            this.yy = this.yy-1;
+            break;
+
+        case "next_year":
+            this.yy = this.yy+1;
+            break;
+
+        case "current":
+            this.yy = this.year;
+            this.mm = this.month;
+            break;
+        }
+        this.show();
+    }
+
+    this.getMoonPhase = function(Y, M, D)
+    {
+        // M=0..11 --> 1..12
+        M += 1;
+
+        // calculate the Julian date at 12h UT
+        var YY = Y - Math.floor( ( 12 - M ) / 10 );
+        var MM = ( M + 9 ) % 12;
+
+        var K1 = Math.floor( 365.25 * ( YY + 4712 ) );
+        var K2 = Math.floor( 30.6 * MM + 0.5 );
+        var K3 = Math.floor( Math.floor( ( YY / 100 ) + 49 ) * 0.75 ) - 38;
+
+        var JD = K1 + K2 + D + 59;  // for dates in Julian calendar
+        if ( JD > 2299160 )         // for Gregorian calendar
+            JD = JD - K3;
+
+        // calculate moon's age in days
+        var IP = ( ( JD - 2451550.1 ) / 29.530588853 ) % 1;
+
+        return IP;
+
+        // Moon's age
+        //var AG = IP*29.53;
+    }
+
+    this.getMoonPhaseStr = function(IP)
+    {
+        var phase = " ("+(100-Math.abs(IP-0.5)*200).toPrecision(2)+"%)";
+
+        if (IP*16 < 1) return "New moon" + phase;
+        if (IP*16 < 3) return "Evening crescent" + phase;
+        if (IP*16 < 5) return "First quarter" + phase;
+        if (IP*16 < 7) return "Waxing gibbous" + phase;
+        if (IP*16 < 9) return "Full moon" + phase;
+        if (IP*16 <11) return "Waning gibbous" + phase;
+        if (IP*16 <13) return "Last quarter" + phase;
+        if (IP*16 <15) return "Morning crescent" + phase;
+
+        return "New moon"+phase;
+    }
+}
+
+var DOMContentLoaded = false;
+function addContentLoadListener (func)
+{
+    if (document.addEventListener)
+    {
+        var DOMContentLoadFunction = function ()
+        {
+            window.DOMContentLoaded = true;
+            func();
+        };
+
+        document.addEventListener("DOMContentLoaded", DOMContentLoadFunction, false);
+    }
+
+    var oldfunc = (window.onload || new Function());
+
+    window.onload = function ()
+    {
+        if (!window.DOMContentLoaded)
+        {
+            oldfunc();
+            func();
+        }
+    };
+}
+
+addContentLoadListener( function() {
+new CalendarJS().init("calendar");
+//new CalendarJS().init("calendar", new Date(2009, 1, 15));
+} );
Index: branches/testFACT++branch/www/shift/calendar.php
===================================================================
--- branches/testFACT++branch/www/shift/calendar.php	(revision 18277)
+++ branches/testFACT++branch/www/shift/calendar.php	(revision 18277)
@@ -0,0 +1,181 @@
+<?PHP
+
+require_once("config.php");
+
+function log_sql_error($query, $error)
+{
+    if (!file_exists("log/"))
+        mkdir("log/", 0777, true);
+
+    $file = fopen("log/mysql.log", "a");
+    fwrite($file, date("Y-m-d H:i:s")."\n".$query."\n".$error."\n\n");
+    fclose($file);
+
+    return header('HTTP/1.0 500 '.$error);
+}
+
+function login()
+{
+    global $ldaphost;
+    global $baseDN;
+    global $groupDN;
+
+    $username = $_SERVER['PHP_AUTH_USER'];
+    $password = $_SERVER['PHP_AUTH_PW'];
+
+    $con = @ldap_connect($ldaphost);
+    if (!$con)
+        return "ldap_connect failed to ".$ldaphost;
+
+    //------------------ Look for user common name
+    $attributes = array('cn', 'mail');
+    $dn         = 'ou=People,'.$baseDN;
+    $filter     = '(uid='.$username.')';
+
+    $sr = @ldap_search($con, $dn, $filter, $attributes);
+    if (!$sr)
+        return "ldap_search failed for dn=".$dn.": ".ldap_error($con);
+
+    $srData = @ldap_get_entries($con, $sr);
+    if ($srData["count"]==0)
+        return "No results returned by ldap_get_entries for dn=".$dn.".";
+
+    $email         =$srData[0]['mail'][0];
+    $userCommonName=$srData[0]['cn'][0];
+    $userDN        =$srData[0]['dn'];
+
+    //------------------ Authenticate user
+    if (!@ldap_bind($con, $userDN, $password))
+        return "ldap_bind failed: ".ldap_error($con);
+
+    //------------------ Check if the user is in FACT ldap group
+    $attributes= array("member");
+    $filter= '(objectClass=*)';
+
+    // Get all members of the group.
+    $sr = @ldap_read($con, $groupDN, $filter, $attributes);
+    if (!$sr)
+        return "ldap_read failed for dn=".$groupDN.": ".ldap_error($con);
+
+    // retrieve the corresponding data
+    $srData = @ldap_get_entries($con, $sr);
+    if ($srData["count"]==0)
+        return "No results returned by ldap_get_entries for dn=".$dn.".";
+
+    @ldap_unbind($con);
+
+    $found = false;
+    foreach ($srData[0]['member'] as $member)
+        if (strpos($member, "cn=".$userCommonName.",")===0)
+            return "";
+
+    return "Sorry, your credentials don't match!";
+}
+
+if (isset($_GET['logout']))
+{
+    Header( "HTTP/1.0 401 Logout successfull!");
+    exit();
+}
+
+if (!isset($_GET['y']) || !isset($_GET['m']))
+    return;
+
+$y = $_GET['y'];
+$m = $_GET['m'];
+
+if (!mysql_connect($dbhost, $dbuser, $dbpass))
+    return log_sql_error("connect: ".$dbhost."[".$dbuser."]", mysql_error());
+
+if (!mysql_select_db($dbname))
+    return log_sql_error("select_db: ".$dbname, mysql_error());
+
+if (isset($_GET['comment']))
+{
+    $query = "SELECT d, c FROM Comments WHERE y=".$y." AND m=".$m;
+    if (isset($_GET['d']))
+        $query .= " AND d=".$_GET['d'];
+
+    $result = mysql_query($query);
+    if (!$result)
+        return log_sql_error($query, mysql_error());
+
+    if (isset($_GET['d']))
+    {
+        $row = mysql_fetch_array($result, MYSQL_NUM);
+        print($row[1]);
+        return;
+    }
+
+    while ($row = mysql_fetch_array($result, MYSQL_NUM))
+    {
+        printf("%04d%02d%s", strlen($row[1]), $row[0], $row[1]);
+    }
+
+    return;
+}
+
+if (isset($_GET['d']))
+{
+    if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']))
+    {
+        header('WWW-Authenticate: Basic realm="Shift schedule"');
+        header('HTTP/1.0 401 Unauthorized');
+        return;
+    }
+
+    $rc = login();
+    if ($rc!="")
+    {
+        header('HTTP/1.0 401 '.$rc);
+        return;
+    }
+
+    $d = $_GET['d'];
+
+    if (isset($_GET['c']))
+    {
+        $c = $_GET['c'];
+
+        $query = "DELETE FROM Comments WHERE y=".$y." AND m=".$m." AND d=".$d;
+        if (!mysql_query($query))
+            return log_sql_error($query, mysql_error());
+
+        if (strlen($c)<=0)
+            return;
+
+        $query = "INSERT Comments SET y=".$y.", m=".$m.", d=".$d.", c='".$c."'";
+        if (!mysql_query($query))
+            return log_sql_error($query, mysql_error());
+
+        return;
+    }
+
+    $u = isset($_GET['u']) ? $_GET['u'] : $_SERVER['PHP_AUTH_USER'];
+
+    $query = "DELETE FROM Data WHERE y=".$y." AND m=".$m." AND d=".$d." AND u='".$u."'";
+    if (!mysql_query($query))
+        return log_sql_error($query, mysql_error());
+
+    if (mysql_affected_rows()==0)
+    {
+        $x = $_GET['x'];
+
+        $query = "INSERT Data SET y=".$y.", m=".$m.", d=".$d.", x=".$x.", u='".$u."'";
+        if (!mysql_query($query))
+            return log_sql_error($query, mysql_error());
+    }
+}
+
+$query = "SELECT d, u, x FROM Data WHERE y=".$y." AND m=".$m;
+if (isset($_GET['d']))
+    $query .= " AND d=".$_GET['d'];
+
+$result = mysql_query($query);
+if (!$result)
+    if (!mysql_query($query))
+        return log_sql_error($query, mysql_error());
+
+while ($row = mysql_fetch_array($result, MYSQL_NUM))
+    print($row[0]."\t".$row[1]."\t".$row[2]."\n");
+?>
Index: branches/testFACT++branch/www/shift/config.template.php
===================================================================
--- branches/testFACT++branch/www/shift/config.template.php	(revision 18277)
+++ branches/testFACT++branch/www/shift/config.template.php	(revision 18277)
@@ -0,0 +1,12 @@
+<?PHP
+
+$dbhost = "mysql.host.com";
+$dbuser = "user";
+$dbpass = "password";
+$dbname = "calendar";
+
+$ldaphost = "161.72.93.133:389";
+$baseDN   = "dc=fact,dc=iac,dc=es";
+$groupDN  = "cn=Operations,ou=Application Groups,".$baseDN;
+
+?>
Index: branches/testFACT++branch/www/shift/index.html
===================================================================
--- branches/testFACT++branch/www/shift/index.html	(revision 18277)
+++ branches/testFACT++branch/www/shift/index.html	(revision 18277)
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+<head>
+   <title>FACT shift schedule</title>
+   <link rel="stylesheet" media="screen" href="./calendar.css" type="text/css" />
+   <script type="text/javascript" src="./calendar.js"></script>
+   <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0" />
+</head>
+<body id="body" onresize="resize();">
+<div id="calendar" style="position:fixed;top:0;left:0;overflow:hidden;"/>
+</body>
+</html>
Index: branches/testFACT++branch/www/showlog/index.css
===================================================================
--- branches/testFACT++branch/www/showlog/index.css	(revision 18277)
+++ branches/testFACT++branch/www/showlog/index.css	(revision 18277)
@@ -0,0 +1,75 @@
+.up {
+    padding:0 5px 4px 7px;
+    position:fixed;
+    top:0;
+    right:0;
+    background-color:#ebe7e6;
+}
+
+.dn {
+    padding:0 5px 4px 7px;
+    padding-top:0px;
+    position:fixed;
+    bottom:0;
+    right:0;
+    background-color:#ebe7e6;
+}
+
+#nav {
+    position:fixed;
+    right:90px;
+    top:0;
+    background-color:#ebe7e6;
+}
+
+#nav ul {
+    list-style-type:none;
+    margin:0;
+    padding:0;
+}
+
+#nav li {
+    float:left;
+    padding:0;
+    margin:0;
+}
+
+#nav li a {
+    padding:0 9px 4px 11px;
+    display:block;
+    color:#000; 
+    color:navy;
+    text-decoration:none; 
+    solid #ccc; 
+}
+
+#nav li a:hover { 
+    color:#f00; 
+}
+
+#nav ul ul {
+    display:none; 
+    position:absolute; 
+    z-index:999; 
+}
+
+#nav li li { 
+    float:none; 
+}
+
+#nav li li a { 
+    background:#EBE7E6!important; 
+    text-align:left; 
+    height:auto; 
+    line-height:1; 
+    width:auto; 
+    padding:4px 20px 4px 22px; 
+    border:1px solid #D0D0D0; 
+    border-top:none; 
+    margin-right:0; 
+}
+
+/* IE6 Bugfix... */
+* html li li { 
+    display:inline; 
+} 
Index: branches/testFACT++branch/www/showlog/index.php
===================================================================
--- branches/testFACT++branch/www/showlog/index.php	(revision 18277)
+++ branches/testFACT++branch/www/showlog/index.php	(revision 18277)
@@ -0,0 +1,433 @@
+<?php
+
+require_once("../smartfact/config.php");
+
+function login()
+{
+    global $ldaphost;
+    global $baseDN;
+    global $groupDN;
+
+    $username = $_SERVER['PHP_AUTH_USER'];
+    $password = $_SERVER['PHP_AUTH_PW'];
+
+    $con = @ldap_connect($ldaphost);
+    if (!$con)
+        return "ldap_connect failed to ".$ldaphost;
+
+    //------------------ Look for user common name
+    $attributes = array('cn', 'mail');
+    $dn         = 'ou=People,'.$baseDN;
+    $filter     = '(uid='.$username.')';
+
+    $sr = @ldap_search($con, $dn, $filter, $attributes);
+    if (!$sr)
+        return "ldap_search failed for dn=".$dn.": ".ldap_error($con);
+
+    $srData = @ldap_get_entries($con, $sr);
+    if ($srData["count"]==0)
+        return "No results returned by ldap_get_entries for dn=".$dn.".";
+
+    $email         =$srData[0]['mail'][0];
+    $userCommonName=$srData[0]['cn'][0];
+    $userDN        =$srData[0]['dn'];
+
+    //------------------ Authenticate user
+    if (!@ldap_bind($con, $userDN, $password))
+        return "ldap_bind failed: ".ldap_error($con);
+
+    //------------------ Check if the user is in FACT ldap group
+    $attributes= array("member");
+    $filter= '(objectClass=*)';
+
+    // Get all members of the group.
+    $sr = @ldap_read($con, $groupDN, $filter, $attributes);
+    if (!$sr)
+        return "ldap_read failed for dn=".$groupDN.": ".ldap_error($con);
+
+    // retrieve the corresponding data
+    $srData = @ldap_get_entries($con, $sr);
+    if ($srData["count"]==0)
+        return "No results returned by ldap_get_entries for dn=".$dn.".";
+
+    @ldap_unbind($con);
+
+    $found = false;
+    foreach ($srData[0]['member'] as $member)
+        if (strpos($member, "cn=".$userCommonName.",")===0)
+            return "";
+
+    return "Sorry, your credentials don't match!";
+}
+
+/*
+function ascii2entities($string)
+{
+    for ($i=128; $i<256; $i++)
+    {
+        $entity  = htmlentities(chr($i), ENT_QUOTES, 'cp1252');
+        $temp    = substr($entity, 0, 1);
+        $temp   .= substr($entity, -1, 1);
+        $string  = str_replace(chr($i), $temp!='&;'?'':$entity, $string);
+    }
+    return $string;
+}
+*/
+
+function ansi_decode($matches)
+{
+    static $colors =
+        array(
+              'black',
+              'maroon',
+              'green',
+              'olive',
+              'navy',
+              'purple',
+              'teal',
+              'silver',
+              'gray',
+              'red',
+              'lime',
+              'yellow',
+              'blue',
+              'fuchsia',
+              'aqua',
+              'white'
+             );
+
+    // Default styles.
+    static $styles =
+        array(
+              'background'   => null,  // Default is defined by the stylesheet.
+              'blink'        => false,
+              'bold'         => false,
+              'color'        => null,  // Default is defined by the stylesheet.
+              //'inverse'      => false, // Cannot be expressed in terms of CSS!
+              'italic'       => false, // Not supported by DarkOwl's ANSI.
+              'line-through' => false, // Not supported by DarkOwl's ANSI.
+              'underline'    => false,
+             );
+
+    static $css = '';
+
+    // Copy the previous styles.
+    $newstyles = $styles;
+    // Extract the codes from the escape sequences.
+    preg_match_all('/\d+/', $matches[0], $matches);
+
+    // Walk through the codes.
+    foreach ($matches[0] as $code)
+    {
+        switch ($code)
+        {
+        case '0':
+            // Reset all styles.
+            $newstyles['background']   = null;
+            $newstyles['blink']        = false;
+            $newstyles['bold']         = false;
+            $newstyles['color']        = null;
+            //              $newstyles['inverse']      = false;
+            $newstyles['italic']       = false;
+            $newstyles['line-through'] = false;
+            $newstyles['underline']    = false;
+            break;
+
+        case '1':
+            // Set the bold style.
+            $newstyles['bold'] = true;
+            break;
+
+        case '3':
+            // Set the italic style.
+            $newstyles['italic'] = true;
+            break;
+
+        case '4':
+        case '21': // Actually double underline, but CSS doesn't support that yet.
+            // Set the underline style.
+            $newstyles['underline'] = true;
+            break;
+
+        case '5':
+        case '6': // Actually rapid blinking, but CSS doesn't support that.
+            // Set the blink style.
+            $newstyles['blink'] = true;
+            break;
+
+//          case '7':
+//              // Set the inverse style.
+//              $newstyles['inverse'] = true;
+//              break;
+
+        case '9':
+            // Set the line-through style.
+            $newstyles['line-through'] = true;
+            break;
+
+        case '2': // Previously incorrectly interpreted by Pueblo/UE as cancel bold, now still supported for backward compatibility.
+        case '22':
+            // Reset the bold style.
+            $newstyles['bold'] = false;
+            break;
+
+        case '23':
+            // Reset the italic style.
+            $newstyles['italic'] = false;
+            break;
+
+        case '24':
+            // Reset the underline style.
+            $newstyles['underline'] = false;
+            break;
+
+        case '25':
+            // Reset the blink style.
+            $newstyles['blink'] = false;
+            break;
+
+//          case '27':
+//              // Reset the inverse style.
+//              $newstyles['inverse'] = false;
+//              break;
+
+        case '29':
+            // Reset the line-through style.
+            $newstyles['line-through'] = false;
+            break;
+
+        case '30': case '31': case '32': case '33': case '34': case '35': case '36': case '37':
+            // Set the foreground color.
+            $newstyles['color'] = $code - 30;
+            break;
+
+        case '39':
+            // Reset the foreground color.
+            $newstyles['color'] = null;
+            break;
+
+        case '40': case '41': case '42': case '43': case '44': case '45': case '46': case '47':
+            // Set the background color.
+            $newstyles['background'] = $code - 40;
+            break;
+
+        case '49':
+            // Reset the background color.
+            $newstyles['background'] = null;
+            break;
+
+        default:
+            // Unsupported code; simply ignore.
+            break;
+        }
+    }
+
+    // Styles are effectively unchanged; return nothing.
+    if ($newstyles === $styles)
+        return '';
+
+    // Copy the new styles.
+    $styles = $newstyles;
+    // If there's a previous CSS in effect, close the <span>.
+    $html = $css ? '</span>' : '';
+    // Generate CSS.
+    $css = '';
+
+    // background-color property.
+    if (!is_null($styles['background']))
+        $css .= ($css ? ';' : '') . "background-color:{$colors[$styles['background']]}";
+
+    // text-decoration property.
+    if ($styles['blink'] || $styles['line-through'] || $styles['underline'])
+    {
+        $css .= ($css ? ';' : '') . 'text-decoration:';
+
+        if ($styles['blink'])
+            $css .= 'blink';
+
+        if ($styles['line-through'])
+            $css .= 'line-through';
+
+        if ($styles['underline'])
+            $css .= 'underline';
+    }
+
+    // font-weight property.
+    if ($styles['bold'] && is_null($styles['color']))
+        $css .= ($css ? ';' : '') . 'font-weight:bold';
+
+    // color property.
+    if (!is_null($styles['color']))
+        $css .= ($css ? ';' : '') . "color:{$colors[$styles['color'] | $styles['bold'] << 3]}";
+
+    // font-style property.
+    if ($styles['italic'])
+        $css .= ($css ? ';' : '') . 'font-style:italic';
+
+    // Generate and return the HTML.
+    if ($css)
+        $html .= "<span style=\"$css\">";
+
+    return $html;
+}
+
+function ansi2html($str)
+{
+    // Replace database strings
+    $str = preg_replace("/\ (([[:word:].-]+)(:[^ ]+)?(@))?([[:word:].-]+)(:([[:digit:]]+))?(\/([[:word:].-]+))/", " $2$4$5$8", $str);
+
+    // Replace special characters to their corresponding HTML entities
+    //$str = ascii2entities($str);
+    $str = htmlentities($str, ENT_NOQUOTES);
+
+    // Replace ANSI codes.
+    $str = preg_replace_callback('/(?:\e\[\d+(?:;\d+)*m)+/', 'ansi_decode', "$str\033[0m");
+
+    // Strip ASCII bell.
+    // $str = str_replace("\007", '', $str);
+
+    // Replace \n
+    // $str = str_replace("\n", "<br/>\n", $str);
+
+    // Return the parsed string.
+    return $str;
+}
+
+if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']))
+{
+    header('WWW-Authenticate: Basic realm="SmartFACT++"');
+    header('HTTP/1.1 401 Unauthorized');
+    return;
+}
+
+$rc = login();
+if ($rc!="")
+    return header('HTTP/1.1 401 '.$rc);
+
+$refresh = isset($_GET['refresh']) ? $_GET['refresh'] : -1;
+if ($refresh>0 && $refresh<60)
+   $refresh = 60;
+
+unset($_GET['refresh']);
+
+$prg = empty($_GET['log']) ? "dimserver" : $_GET['log'];
+$dir = empty($_GET['dir']) ? "" : $_GET['dir'];
+
+if (!strpos($prg, "/")===false || !strpos($dir, "/")===false)
+{
+    header('HTTP/1.1 403 Access forbidden.');
+    print("HTTP/1.1 403 Access forbidden.\n");
+    return;
+}
+
+if (empty($_GET['dir']))
+{
+    if ($prg=="schedule")
+        $prg = "scripts/schedule.js";
+
+    $filename = "/users/fact/operation/".$prg;
+    if (is_link($filename))
+        $filename = "/users/fact/operation/".dirname(readlink($filename))."/".$prg.".log";
+}
+
+if (empty($filename))
+    $filename = "/users/fact/".$dir."/".$prg.".log";
+
+$size = filesize($filename);
+
+$file=array();
+$fp = fopen($filename, "r");
+
+if ($fp===false)
+{
+    header('HTTP/1.1 403 Access forbidden.');
+    print("Access forbidden.\n");
+    return;
+}
+
+fseek($fp, -min(10000000, $size), SEEK_END);
+fgets($fp);
+while(!feof($fp))
+{
+   $line = fgets($fp);
+   array_push($file, $line);
+}
+fclose($fp);
+
+
+$dir  = basename(dirname($filename));
+$name = basename($filename);
+?>
+
+<!DOCTYPE HTML>
+<html>
+<head>
+<?php
+if ($refresh>0)
+   print("<meta http-equiv='refresh' content='".$refresh."'>\n");
+?>
+<meta charset="UTF-8">
+<title><?php print($dir." - ".$name);?></title>
+<link rel="stylesheet" type="text/css" href="index.css" />
+<script src="jquery-2.0.0.min.js" type="text/javascript"></script>
+<script>
+$(function(){
+   $("#nav li:has(ul)").hover(function(){
+      $(this).find("ul").slideDown(200);
+   }, function(){
+      $(this).find("ul").hide();
+   });
+});
+</script>
+</head>
+<body onload="if (location.hash.length==0) location.hash = '#bottom';">
+<a class="up" href="#top">go to top &uarr;</a>
+<span id="nav">
+   <ul>
+      <li>
+	 <a>Logs</a>
+            <ul>
+	       <li><a href="?log=biasctrl">biasctrl</a></li>
+	       <li><a href="?log=agilentctrl">agilentctrl</a></li>
+	       <li><a href="?log=chatserv">chatserv</a></li>
+	       <li><a href="?log=datalogger">datalogger</a></li>
+	       <li><a href="?log=dimserver"><b>dimserver</b></a></li>
+	       <li><a href="?log=dimctrl">dimctrl</a></li>
+	       <li><a href="?log=drivectrl">drivectrl</a></li>
+	       <li><a href="?log=fadctrl">fadctrl</a></li>
+	       <li><a href="?log=feedback">feedback</a></li>
+	       <li><a href="?log=fscctrl">fscctrl</a></li>
+	       <li><a href="?log=ftmctrl">ftmctrl</a></li>
+	       <li><a href="?log=gcn">gcn</a></li>
+	       <li><a href="?log=gpsctrl">gpsctrl</a></li>
+	       <li><a href="?log=lidctrl">lidctrl</a></li>
+	       <li><a href="?log=magiclidar">magiclidar</a></li>
+	       <li><a href="?log=magicweather">magicweather</a></li>
+	       <li><a href="?log=mcp">mcp</a></li>
+	       <li><a href="?log=pwrctrl">pwrctrl</a></li>
+	       <li><a href="?log=ratecontrol">ratecontrol</a></li>
+	       <li><a href="?log=ratescan">ratescan</a></li>
+	       <li><a href="?log=sqmctrl">sqmctrl</a></li>
+	       <li><a href="?log=temperature">temperature</a></li>
+	       <li><a href="?log=timecheck">timecheck</a></li>
+	       <li><a href="?log=tngweather">tngweather</a></li>
+            </ul>
+      </li>
+   </ul>
+</span>
+</span>
+<a class="dn" href="#bottom">go to bottom &darr;</a>
+
+
+<H2 id="top"><?php printf("%s - %s   (%dkB)", $dir, $name, $size/1000);?></H2>
+
+<pre style="font-size:small;font-family:'Lucida Console',Monaco,monospace">
+<?php
+foreach ($file as $line)
+    print(ansi2html(substr($line, 0, -1))."\n");
+?>
+
+</pre>
+<div id="bottom"></div>
+</body>
+</html>
Index: branches/testFACT++branch/www/showlog/jquery-2.0.0.min.js
===================================================================
--- branches/testFACT++branch/www/showlog/jquery-2.0.0.min.js	(revision 18277)
+++ branches/testFACT++branch/www/showlog/jquery-2.0.0.min.js	(revision 18277)
@@ -0,0 +1,6 @@
+/*! jQuery v2.0.0 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
+//@ sourceMappingURL=jquery.min.map
+*/
+(function(e,undefined){var t,n,r=typeof undefined,i=e.location,o=e.document,s=o.documentElement,a=e.jQuery,u=e.$,l={},c=[],f="2.0.0",p=c.concat,h=c.push,d=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=f.trim,x=function(e,n){return new x.fn.init(e,n,t)},b=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^-ms-/,N=/-([\da-z])/gi,E=function(e,t){return t.toUpperCase()},S=function(){o.removeEventListener("DOMContentLoaded",S,!1),e.removeEventListener("load",S,!1),x.ready()};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,t,n){var r,i;if(!e)return this;if("string"==typeof e){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:T.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof x?t[0]:t,x.merge(this,x.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:o,!0)),C.test(r[1])&&x.isPlainObject(t))for(r in t)x.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return i=o.getElementById(r[2]),i&&i.parentNode&&(this.length=1,this[0]=i),this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?n.ready(e):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return d.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,t,n,r,i,o,s=arguments[0]||{},a=1,u=arguments.length,l=!1;for("boolean"==typeof s&&(l=s,s=arguments[1]||{},a=2),"object"==typeof s||x.isFunction(s)||(s={}),u===a&&(s=this,--a);u>a;a++)if(null!=(e=arguments[a]))for(t in e)n=s[t],r=e[t],s!==r&&(l&&r&&(x.isPlainObject(r)||(i=x.isArray(r)))?(i?(i=!1,o=n&&x.isArray(n)?n:[]):o=n&&x.isPlainObject(n)?n:{},s[t]=x.extend(l,o,r)):r!==undefined&&(s[t]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=a),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){(e===!0?--x.readyWait:x.isReady)||(x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(o,[x]),x.fn.trigger&&x(o).trigger("ready").off("ready")))},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray,isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if("object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(t){return!1}return!0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:JSON.parse,parseXML:function(e){var t,n;if(!e||"string"!=typeof e)return null;try{n=new DOMParser,t=n.parseFromString(e,"text/xml")}catch(r){t=undefined}return(!t||t.getElementsByTagName("parsererror").length)&&x.error("Invalid XML: "+e),t},noop:function(){},globalEval:function(e){var t,n=eval;e=x.trim(e),e&&(1===e.indexOf("use strict")?(t=o.createElement("script"),t.text=e,o.head.appendChild(t).parentNode.removeChild(t)):n(e))},camelCase:function(e){return e.replace(k,"ms-").replace(N,E)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,s=j(e);if(n){if(s){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(s){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:function(e){return null==e?"":v.call(e)},makeArray:function(e,t){var n=t||[];return null!=e&&(j(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:g.call(t,e,n)},merge:function(e,t){var n=t.length,r=e.length,i=0;if("number"==typeof n)for(;n>i;i++)e[r++]=t[i];else while(t[i]!==undefined)e[r++]=t[i++];return e.length=r,e},grep:function(e,t,n){var r,i=[],o=0,s=e.length;for(n=!!n;s>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,s=j(e),a=[];if(s)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(a[a.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(a[a.length]=r);return p.apply([],a)},guid:1,proxy:function(e,t){var n,r,i;return"string"==typeof t&&(n=e[t],t=e,e=n),x.isFunction(e)?(r=d.call(arguments,2),i=function(){return e.apply(t||this,r.concat(d.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):undefined},access:function(e,t,n,r,i,o,s){var a=0,u=e.length,l=null==n;if("object"===x.type(n)){i=!0;for(a in n)x.access(e,t,a,n[a],!0,o,s)}else if(r!==undefined&&(i=!0,x.isFunction(r)||(s=!0),l&&(s?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(x(e),n)})),t))for(;u>a;a++)t(e[a],n,s?r:r.call(e[a],a,t(e[a],n)));return i?e:l?t.call(e):u?t(e[0],n):o},now:Date.now,swap:function(e,t,n,r){var i,o,s={};for(o in t)s[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=s[o];return i}}),x.ready.promise=function(t){return n||(n=x.Deferred(),"complete"===o.readyState?setTimeout(x.ready):(o.addEventListener("DOMContentLoaded",S,!1),e.addEventListener("load",S,!1))),n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function j(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}t=x(o),function(e,undefined){var t,n,r,i,o,s,a,u,l,c,f,p,h,d,g,m,y="sizzle"+-new Date,v=e.document,b={},w=0,T=0,C=ot(),k=ot(),N=ot(),E=!1,S=function(){return 0},j=typeof undefined,D=1<<31,A=[],L=A.pop,q=A.push,H=A.push,O=A.slice,F=A.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},P="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",R="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=M.replace("w","w#"),$="\\["+R+"*("+M+")"+R+"*(?:([*^$|!~]?=)"+R+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+R+"*\\]",B=":("+M+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",I=RegExp("^"+R+"+|((?:^|[^\\\\])(?:\\\\.)*)"+R+"+$","g"),z=RegExp("^"+R+"*,"+R+"*"),_=RegExp("^"+R+"*([>+~]|"+R+")"+R+"*"),X=RegExp(R+"*[+~]"),U=RegExp("="+R+"*([^\\]'\"]*)"+R+"*\\]","g"),Y=RegExp(B),V=RegExp("^"+W+"$"),G={ID:RegExp("^#("+M+")"),CLASS:RegExp("^\\.("+M+")"),TAG:RegExp("^("+M.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+B),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+R+"*(even|odd|(([+-]|)(\\d*)n|)"+R+"*(?:([+-]|)"+R+"*(\\d+)|))"+R+"*\\)|)","i"),"boolean":RegExp("^(?:"+P+")$","i"),needsContext:RegExp("^"+R+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+R+"*((?:-\\d)?\\d*)"+R+"*\\)|)(?=[^-]|$)","i")},J=/^[^{]+\{\s*\[native \w/,Q=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,et=/'|\\/g,tt=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,nt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{H.apply(A=O.call(v.childNodes),v.childNodes),A[v.childNodes.length].nodeType}catch(rt){H={apply:A.length?function(e,t){q.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function it(e){return J.test(e+"")}function ot(){var e,t=[];return e=function(n,i){return t.push(n+=" ")>r.cacheLength&&delete e[t.shift()],e[n]=i}}function st(e){return e[y]=!0,e}function at(e){var t=c.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ut(e,t,n,r){var i,o,s,a,u,f,d,g,x,w;if((t?t.ownerDocument||t:v)!==c&&l(t),t=t||c,n=n||[],!e||"string"!=typeof e)return n;if(1!==(a=t.nodeType)&&9!==a)return[];if(p&&!r){if(i=Q.exec(e))if(s=i[1]){if(9===a){if(o=t.getElementById(s),!o||!o.parentNode)return n;if(o.id===s)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(s))&&m(t,o)&&o.id===s)return n.push(o),n}else{if(i[2])return H.apply(n,t.getElementsByTagName(e)),n;if((s=i[3])&&b.getElementsByClassName&&t.getElementsByClassName)return H.apply(n,t.getElementsByClassName(s)),n}if(b.qsa&&(!h||!h.test(e))){if(g=d=y,x=t,w=9===a&&e,1===a&&"object"!==t.nodeName.toLowerCase()){f=gt(e),(d=t.getAttribute("id"))?g=d.replace(et,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=f.length;while(u--)f[u]=g+mt(f[u]);x=X.test(e)&&t.parentNode||t,w=f.join(",")}if(w)try{return H.apply(n,x.querySelectorAll(w)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(I,"$1"),t,n,r)}o=ut.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},l=ut.setDocument=function(e){var t=e?e.ownerDocument||e:v;return t!==c&&9===t.nodeType&&t.documentElement?(c=t,f=t.documentElement,p=!o(t),b.getElementsByTagName=at(function(e){return e.appendChild(t.createComment("")),!e.getElementsByTagName("*").length}),b.attributes=at(function(e){return e.className="i",!e.getAttribute("className")}),b.getElementsByClassName=at(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),b.sortDetached=at(function(e){return 1&e.compareDocumentPosition(c.createElement("div"))}),b.getById=at(function(e){return f.appendChild(e).id=y,!t.getElementsByName||!t.getElementsByName(y).length}),b.getById?(r.find.ID=function(e,t){if(typeof t.getElementById!==j&&p){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},r.filter.ID=function(e){var t=e.replace(tt,nt);return function(e){return e.getAttribute("id")===t}}):(r.find.ID=function(e,t){if(typeof t.getElementById!==j&&p){var n=t.getElementById(e);return n?n.id===e||typeof n.getAttributeNode!==j&&n.getAttributeNode("id").value===e?[n]:undefined:[]}},r.filter.ID=function(e){var t=e.replace(tt,nt);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),r.find.TAG=b.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==j?t.getElementsByTagName(e):undefined}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=b.getElementsByClassName&&function(e,t){return typeof t.getElementsByClassName!==j&&p?t.getElementsByClassName(e):undefined},d=[],h=[],(b.qsa=it(t.querySelectorAll))&&(at(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||h.push("\\["+R+"*(?:value|"+P+")"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){var t=c.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&h.push("[*^$]="+R+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(b.matchesSelector=it(g=f.webkitMatchesSelector||f.mozMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&at(function(e){b.disconnectedMatch=g.call(e,"div"),g.call(e,"[s!='']:x"),d.push("!=",B)}),h=h.length&&RegExp(h.join("|")),d=d.length&&RegExp(d.join("|")),m=it(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},S=f.compareDocumentPosition?function(e,n){if(e===n)return E=!0,0;var r=n.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(n);return r?1&r||!b.sortDetached&&n.compareDocumentPosition(e)===r?e===t||m(v,e)?-1:n===t||m(v,n)?1:u?F.call(u,e)-F.call(u,n):0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,n){var r,i=0,o=e.parentNode,s=n.parentNode,a=[e],l=[n];if(e===n)return E=!0,0;if(!o||!s)return e===t?-1:n===t?1:o?-1:s?1:u?F.call(u,e)-F.call(u,n):0;if(o===s)return lt(e,n);r=e;while(r=r.parentNode)a.unshift(r);r=n;while(r=r.parentNode)l.unshift(r);while(a[i]===l[i])i++;return i?lt(a[i],l[i]):a[i]===v?-1:l[i]===v?1:0},c):c},ut.matches=function(e,t){return ut(e,null,null,t)},ut.matchesSelector=function(e,t){if((e.ownerDocument||e)!==c&&l(e),t=t.replace(U,"='$1']"),!(!b.matchesSelector||!p||d&&d.test(t)||h&&h.test(t)))try{var n=g.call(e,t);if(n||b.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return ut(t,c,null,[e]).length>0},ut.contains=function(e,t){return(e.ownerDocument||e)!==c&&l(e),m(e,t)},ut.attr=function(e,t){(e.ownerDocument||e)!==c&&l(e);var n=r.attrHandle[t.toLowerCase()],i=n&&n(e,t,!p);return i===undefined?b.attributes||!p?e.getAttribute(t):(i=e.getAttributeNode(t))&&i.specified?i.value:null:i},ut.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},ut.uniqueSort=function(e){var t,n=[],r=0,i=0;if(E=!b.detectDuplicates,u=!b.sortStable&&e.slice(0),e.sort(S),E){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return e};function lt(e,t){var n=t&&e,r=n&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ct(e,t,n){var r;return n?undefined:(r=e.getAttributeNode(t))&&r.specified?r.value:e[t]===!0?t.toLowerCase():null}function ft(e,t,n){var r;return n?undefined:r=e.getAttribute(t,"type"===t.toLowerCase()?1:2)}function pt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ht(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function dt(e){return st(function(t){return t=+t,st(function(n,r){var i,o=e([],n.length,t),s=o.length;while(s--)n[i=o[s]]&&(n[i]=!(r[i]=n[i]))})})}i=ut.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r];r++)n+=i(t);return n},r=ut.selectors={cacheLength:50,createPseudo:st,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(tt,nt),e[3]=(e[4]||e[5]||"").replace(tt,nt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ut.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ut.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return G.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&Y.test(n)&&(t=gt(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(tt,nt).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=C[e+" "];return t||(t=RegExp("(^|"+R+")"+e+"("+R+"|$)"))&&C(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=ut.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,h,d,g=o!==s?"nextSibling":"previousSibling",m=t.parentNode,v=a&&t.nodeName.toLowerCase(),x=!u&&!a;if(m){if(o){while(g){f=t;while(f=f[g])if(a?f.nodeName.toLowerCase()===v:1===f.nodeType)return!1;d=g="only"===e&&!d&&"nextSibling"}return!0}if(d=[s?m.firstChild:m.lastChild],s&&x){c=m[y]||(m[y]={}),l=c[e]||[],h=l[0]===w&&l[1],p=l[0]===w&&l[2],f=h&&m.childNodes[h];while(f=++h&&f&&f[g]||(p=h=0)||d.pop())if(1===f.nodeType&&++p&&f===t){c[e]=[w,h,p];break}}else if(x&&(l=(t[y]||(t[y]={}))[e])&&l[0]===w)p=l[1];else while(f=++h&&f&&f[g]||(p=h=0)||d.pop())if((a?f.nodeName.toLowerCase()===v:1===f.nodeType)&&++p&&(x&&((f[y]||(f[y]={}))[e]=[w,p]),f===t))break;return p-=i,p===r||0===p%r&&p/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||ut.error("unsupported pseudo: "+e);return i[y]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?st(function(e,n){var r,o=i(e,t),s=o.length;while(s--)r=F.call(e,o[s]),e[r]=!(n[r]=o[s])}):function(e){return i(e,0,n)}):i}},pseudos:{not:st(function(e){var t=[],n=[],r=s(e.replace(I,"$1"));return r[y]?st(function(e,t,n,i){var o,s=r(e,null,i,[]),a=e.length;while(a--)(o=s[a])&&(e[a]=!(t[a]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:st(function(e){return function(t){return ut(e,t).length>0}}),contains:st(function(e){return function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:st(function(e){return V.test(e||"")||ut.error("unsupported lang: "+e),e=e.replace(tt,nt).toLowerCase(),function(t){var n;do if(n=p?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===c.activeElement&&(!c.hasFocus||c.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Z.test(e.nodeName)},input:function(e){return K.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:dt(function(){return[0]}),last:dt(function(e,t){return[t-1]}),eq:dt(function(e,t,n){return[0>n?n+t:n]}),even:dt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:dt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:dt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:dt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=pt(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=ht(t);function gt(e,t){var n,i,o,s,a,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);a=e,u=[],l=r.preFilter;while(a){(!n||(i=z.exec(a)))&&(i&&(a=a.slice(i[0].length)||a),u.push(o=[])),n=!1,(i=_.exec(a))&&(n=i.shift(),o.push({value:n,type:i[0].replace(I," ")}),a=a.slice(n.length));for(s in r.filter)!(i=G[s].exec(a))||l[s]&&!(i=l[s](i))||(n=i.shift(),o.push({value:n,type:s,matches:i}),a=a.slice(n.length));if(!n)break}return t?a.length:a?ut.error(e):k(e,u).slice(0)}function mt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function yt(e,t,r){var i=t.dir,o=r&&"parentNode"===i,s=T++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,r,a){var u,l,c,f=w+" "+s;if(a){while(t=t[i])if((1===t.nodeType||o)&&e(t,r,a))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[y]||(t[y]={}),(l=c[i])&&l[0]===f){if((u=l[1])===!0||u===n)return u===!0}else if(l=c[i]=[f],l[1]=e(t,r,a)||n,l[1]===!0)return!0}}function vt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,s=[],a=0,u=e.length,l=null!=t;for(;u>a;a++)(o=e[a])&&(!n||n(o,r,i))&&(s.push(o),l&&t.push(a));return s}function bt(e,t,n,r,i,o){return r&&!r[y]&&(r=bt(r)),i&&!i[y]&&(i=bt(i,o)),st(function(o,s,a,u){var l,c,f,p=[],h=[],d=s.length,g=o||Ct(t||"*",a.nodeType?[a]:a,[]),m=!e||!o&&t?g:xt(g,p,e,a,u),y=n?i||(o?e:d||r)?[]:s:m;if(n&&n(m,y,a,u),r){l=xt(y,h),r(l,[],a,u),c=l.length;while(c--)(f=l[c])&&(y[h[c]]=!(m[h[c]]=f))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(f=y[c])&&l.push(m[c]=f);i(null,y=[],l,u)}c=y.length;while(c--)(f=y[c])&&(l=i?F.call(o,f):p[c])>-1&&(o[l]=!(s[l]=f))}}else y=xt(y===s?y.splice(d,y.length):y),i?i(null,s,y,u):H.apply(s,y)})}function wt(e){var t,n,i,o=e.length,s=r.relative[e[0].type],u=s||r.relative[" "],l=s?1:0,c=yt(function(e){return e===t},u,!0),f=yt(function(e){return F.call(t,e)>-1},u,!0),p=[function(e,n,r){return!s&&(r||n!==a)||((t=n).nodeType?c(e,n,r):f(e,n,r))}];for(;o>l;l++)if(n=r.relative[e[l].type])p=[yt(vt(p),n)];else{if(n=r.filter[e[l].type].apply(null,e[l].matches),n[y]){for(i=++l;o>i;i++)if(r.relative[e[i].type])break;return bt(l>1&&vt(p),l>1&&mt(e.slice(0,l-1)).replace(I,"$1"),n,i>l&&wt(e.slice(l,i)),o>i&&wt(e=e.slice(i)),o>i&&mt(e))}p.push(n)}return vt(p)}function Tt(e,t){var i=0,o=t.length>0,s=e.length>0,u=function(u,l,f,p,h){var d,g,m,y=[],v=0,x="0",b=u&&[],T=null!=h,C=a,k=u||s&&r.find.TAG("*",h&&l.parentNode||l),N=w+=null==C?1:Math.random()||.1;for(T&&(a=l!==c&&l,n=i);null!=(d=k[x]);x++){if(s&&d){g=0;while(m=e[g++])if(m(d,l,f)){p.push(d);break}T&&(w=N,n=++i)}o&&((d=!m&&d)&&v--,u&&b.push(d))}if(v+=x,o&&x!==v){g=0;while(m=t[g++])m(b,y,l,f);if(u){if(v>0)while(x--)b[x]||y[x]||(y[x]=L.call(p));y=xt(y)}H.apply(p,y),T&&!u&&y.length>0&&v+t.length>1&&ut.uniqueSort(p)}return T&&(w=N,a=C),b};return o?st(u):u}s=ut.compile=function(e,t){var n,r=[],i=[],o=N[e+" "];if(!o){t||(t=gt(e)),n=t.length;while(n--)o=wt(t[n]),o[y]?r.push(o):i.push(o);o=N(e,Tt(i,r))}return o};function Ct(e,t,n){var r=0,i=t.length;for(;i>r;r++)ut(e,t[r],n);return n}function kt(e,t,n,i){var o,a,u,l,c,f=gt(e);if(!i&&1===f.length){if(a=f[0]=f[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&p&&r.relative[a[1].type]){if(t=(r.find.ID(u.matches[0].replace(tt,nt),t)||[])[0],!t)return n;e=e.slice(a.shift().value.length)}o=G.needsContext.test(e)?0:a.length;while(o--){if(u=a[o],r.relative[l=u.type])break;if((c=r.find[l])&&(i=c(u.matches[0].replace(tt,nt),X.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=i.length&&mt(a),!e)return H.apply(n,i),n;break}}}return s(e,f)(i,t,!p,n,X.test(e)),n}r.pseudos.nth=r.pseudos.eq;function Nt(){}Nt.prototype=r.filters=r.pseudos,r.setFilters=new Nt,b.sortStable=y.split("").sort(S).join("")===y,l(),[0,0].sort(S),b.detectDuplicates=E,at(function(e){if(e.innerHTML="<a href='#'></a>","#"!==e.firstChild.getAttribute("href")){var t="type|href|height|width".split("|"),n=t.length;while(n--)r.attrHandle[t[n]]=ft}}),at(function(e){if(null!=e.getAttribute("disabled")){var t=P.split("|"),n=t.length;while(n--)r.attrHandle[t[n]]=ct}}),x.find=ut,x.expr=ut.selectors,x.expr[":"]=x.expr.pseudos,x.unique=ut.uniqueSort,x.text=ut.getText,x.isXMLDoc=ut.isXML,x.contains=ut.contains}(e);var D={};function A(e){var t=D[e]={};return x.each(e.match(w)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?D[e]||A(e):x.extend({},e);var t,n,r,i,o,s,a=[],u=!e.once&&[],l=function(f){for(t=e.memory&&f,n=!0,s=i||0,i=0,o=a.length,r=!0;a&&o>s;s++)if(a[s].apply(f[0],f[1])===!1&&e.stopOnFalse){t=!1;break}r=!1,a&&(u?u.length&&l(u.shift()):t?a=[]:c.disable())},c={add:function(){if(a){var n=a.length;(function s(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&c.has(n)||a.push(n):n&&n.length&&"string"!==r&&s(n)})})(arguments),r?o=a.length:t&&(i=n,l(t))}return this},remove:function(){return a&&x.each(arguments,function(e,t){var n;while((n=x.inArray(t,a,n))>-1)a.splice(n,1),r&&(o>=n&&o--,s>=n&&s--)}),this},has:function(e){return e?x.inArray(e,a)>-1:!(!a||!a.length)},empty:function(){return a=[],o=0,this},disable:function(){return a=u=t=undefined,this},disabled:function(){return!a},lock:function(){return u=undefined,t||c.disable(),this},locked:function(){return!u},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!a||n&&!u||(r?u.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!n}};return c},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var s=o[0],a=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var s=o[2],a=o[3];r[o[1]]=s.add,a&&s.add(function(){n=a},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=s.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=d.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),s=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?d.call(arguments):r,n===a?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},a,u,l;if(r>1)for(a=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(s(t,l,n)).fail(o.reject).progress(s(t,u,a)):--i;return i||o.resolveWith(l,n),o.promise()}}),x.support=function(t){var n=o.createElement("input"),r=o.createDocumentFragment(),i=o.createElement("div"),s=o.createElement("select"),a=s.appendChild(o.createElement("option"));return n.type?(n.type="checkbox",t.checkOn=""!==n.value,t.optSelected=a.selected,t.reliableMarginRight=!0,t.boxSizingReliable=!0,t.pixelPosition=!1,n.checked=!0,t.noCloneChecked=n.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!a.disabled,n=o.createElement("input"),n.value="t",n.type="radio",t.radioValue="t"===n.value,n.setAttribute("checked","t"),n.setAttribute("name","t"),r.appendChild(n),t.checkClone=r.cloneNode(!0).cloneNode(!0).lastChild.checked,t.focusinBubbles="onfocusin"in e,i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===i.style.backgroundClip,x(function(){var n,r,s="padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box",a=o.getElementsByTagName("body")[0];a&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",a.appendChild(n).appendChild(i),i.innerHTML="",i.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%",x.swap(a,null!=a.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===i.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(i,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(i,null)||{width:"4px"}).width,r=i.appendChild(o.createElement("div")),r.style.cssText=i.style.cssText=s,r.style.marginRight=r.style.width="0",i.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),a.removeChild(n))}),t):t}({});var L,q,H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,O=/([A-Z])/g;function F(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=x.expando+Math.random()}F.uid=1,F.accepts=function(e){return e.nodeType?1===e.nodeType||9===e.nodeType:!0},F.prototype={key:function(e){if(!F.accepts(e))return 0;var t={},n=e[this.expando];if(!n){n=F.uid++;try{t[this.expando]={value:n},Object.defineProperties(e,t)}catch(r){t[this.expando]=n,x.extend(e,t)}}return this.cache[n]||(this.cache[n]={}),n},set:function(e,t,n){var r,i=this.key(e),o=this.cache[i];if("string"==typeof t)o[t]=n;else if(x.isEmptyObject(o))this.cache[i]=t;else for(r in t)o[r]=t[r]},get:function(e,t){var n=this.cache[this.key(e)];return t===undefined?n:n[t]},access:function(e,t,n){return t===undefined||t&&"string"==typeof t&&n===undefined?this.get(e,t):(this.set(e,t,n),n!==undefined?n:t)},remove:function(e,t){var n,r,i=this.key(e),o=this.cache[i];if(t===undefined)this.cache[i]={};else{x.isArray(t)?r=t.concat(t.map(x.camelCase)):t in o?r=[t]:(r=x.camelCase(t),r=r in o?[r]:r.match(w)||[]),n=r.length;while(n--)delete o[r[n]]}},hasData:function(e){return!x.isEmptyObject(this.cache[e[this.expando]]||{})},discard:function(e){delete this.cache[this.key(e)]}},L=new F,q=new F,x.extend({acceptData:F.accepts,hasData:function(e){return L.hasData(e)||q.hasData(e)},data:function(e,t,n){return L.access(e,t,n)},removeData:function(e,t){L.remove(e,t)},_data:function(e,t,n){return q.access(e,t,n)},_removeData:function(e,t){q.remove(e,t)}}),x.fn.extend({data:function(e,t){var n,r,i=this[0],o=0,s=null;if(e===undefined){if(this.length&&(s=L.get(i),1===i.nodeType&&!q.get(i,"hasDataAttrs"))){for(n=i.attributes;n.length>o;o++)r=n[o].name,0===r.indexOf("data-")&&(r=x.camelCase(r.substring(5)),P(i,r,s[r]));q.set(i,"hasDataAttrs",!0)}return s}return"object"==typeof e?this.each(function(){L.set(this,e)}):x.access(this,function(t){var n,r=x.camelCase(e);if(i&&t===undefined){if(n=L.get(i,e),n!==undefined)return n;if(n=L.get(i,r),n!==undefined)return n;if(n=P(i,r,undefined),n!==undefined)return n}else this.each(function(){var n=L.get(this,r);L.set(this,r,t),-1!==e.indexOf("-")&&n!==undefined&&L.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){L.remove(this,e)})}});function P(e,t,n){var r;if(n===undefined&&1===e.nodeType)if(r="data-"+t.replace(O,"-$1").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:H.test(n)?JSON.parse(n):n}catch(i){}L.set(e,t,n)}else n=undefined;return n}x.extend({queue:function(e,t,n){var r;return e?(t=(t||"fx")+"queue",r=q.get(e,t),n&&(!r||x.isArray(n)?r=q.access(e,t,x.makeArray(n)):r.push(n)),r||[]):undefined},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),s=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,s,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return q.get(e,n)||q.access(e,n,{empty:x.Callbacks("once memory").add(function(){q.remove(e,[t+"queue",n])})})}}),x.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),n>arguments.length?x.queue(this[0],e):t===undefined?this:this.each(function(){var n=x.queue(this,e,t);
+x._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=x.Deferred(),o=this,s=this.length,a=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=undefined),e=e||"fx";while(s--)n=q.get(o[s],e+"queueHooks"),n&&n.empty&&(r++,n.empty.add(a));return a(),i.promise(t)}});var R,M,W=/[\t\r\n]/g,$=/\r/g,B=/^(?:input|select|textarea|button)$/i;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[x.propFix[e]||e]})},addClass:function(e){var t,n,r,i,o,s=0,a=this.length,u="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,s=0,a=this.length,u=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,i="boolean"==typeof t;return x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,s=0,a=x(this),u=t,l=e.match(w)||[];while(o=l[s++])u=i?u:!a.hasClass(o),a[u?"addClass":"removeClass"](o)}else(n===r||"boolean"===n)&&(this.className&&q.set(this,"__className__",this.className),this.className=this.className||e===!1?"":q.get(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(W," ").indexOf(t)>=0)return!0;return!1},val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=x.isFunction(e),this.each(function(n){var i,o=x(this);1===this.nodeType&&(i=r?e.call(this,n,o.val()):e,null==i?i="":"number"==typeof i?i+="":x.isArray(i)&&(i=x.map(i,function(e){return null==e?"":e+""})),t=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&t.set(this,i,"value")!==undefined||(this.value=i))});if(i)return t=x.valHooks[i.type]||x.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&(n=t.get(i,"value"))!==undefined?n:(n=i.value,"string"==typeof n?n.replace($,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,s=o?null:[],a=o?i+1:r.length,u=0>i?a:o?i:0;for(;a>u;u++)if(n=r[u],!(!n.selected&&u!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),s=i.length;while(s--)r=i[s],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,t,n){var i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===r?x.prop(e,t,n):(1===s&&x.isXMLDoc(e)||(t=t.toLowerCase(),i=x.attrHooks[t]||(x.expr.match.boolean.test(t)?M:R)),n===undefined?i&&"get"in i&&null!==(o=i.get(e,t))?o:(o=x.find.attr(e,t),null==o?undefined:o):null!==n?i&&"set"in i&&(o=i.set(e,n,t))!==undefined?o:(e.setAttribute(t,n+""),n):(x.removeAttr(e,t),undefined))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.boolean.test(n)&&(e[r]=!1),e.removeAttribute(n)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,t,n){var r,i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return o=1!==s||!x.isXMLDoc(e),o&&(t=x.propFix[t]||t,i=x.propHooks[t]),n!==undefined?i&&"set"in i&&(r=i.set(e,n,t))!==undefined?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){return e.hasAttribute("tabindex")||B.test(e.nodeName)||e.href?e.tabIndex:-1}}}}),M={set:function(e,t,n){return t===!1?x.removeAttr(e,n):e.setAttribute(n,n),n}},x.each(x.expr.match.boolean.source.match(/\w+/g),function(e,t){var n=x.expr.attrHandle[t]||x.find.attr;x.expr.attrHandle[t]=function(e,t,r){var i=x.expr.attrHandle[t],o=r?undefined:(x.expr.attrHandle[t]=undefined)!=n(e,t,r)?t.toLowerCase():null;return x.expr.attrHandle[t]=i,o}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,t){return x.isArray(t)?e.checked=x.inArray(x(e).val(),t)>=0:undefined}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var I=/^key/,z=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,X=/^([^.]*)(?:\.(.+)|)$/;function U(){return!0}function Y(){return!1}function V(){try{return o.activeElement}catch(e){}}x.event={global:{},add:function(e,t,n,i,o){var s,a,u,l,c,f,p,h,d,g,m,y=q.get(e);if(y){n.handler&&(s=n,n=s.handler,o=s.selector),n.guid||(n.guid=x.guid++),(l=y.events)||(l=y.events={}),(a=y.handle)||(a=y.handle=function(e){return typeof x===r||e&&x.event.triggered===e.type?undefined:x.event.dispatch.apply(a.elem,arguments)},a.elem=e),t=(t||"").match(w)||[""],c=t.length;while(c--)u=X.exec(t[c])||[],d=m=u[1],g=(u[2]||"").split(".").sort(),d&&(p=x.event.special[d]||{},d=(o?p.delegateType:p.bindType)||d,p=x.event.special[d]||{},f=x.extend({type:d,origType:m,data:i,handler:n,guid:n.guid,selector:o,needsContext:o&&x.expr.match.needsContext.test(o),namespace:g.join(".")},s),(h=l[d])||(h=l[d]=[],h.delegateCount=0,p.setup&&p.setup.call(e,i,g,a)!==!1||e.addEventListener&&e.addEventListener(d,a,!1)),p.add&&(p.add.call(e,f),f.handler.guid||(f.handler.guid=n.guid)),o?h.splice(h.delegateCount++,0,f):h.push(f),x.event.global[d]=!0);e=null}},remove:function(e,t,n,r,i){var o,s,a,u,l,c,f,p,h,d,g,m=q.hasData(e)&&q.get(e);if(m&&(u=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(a=X.exec(t[l])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h){f=x.event.special[h]||{},h=(r?f.delegateType:f.bindType)||h,p=u[h]||[],a=a[2]&&RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));s&&!p.length&&(f.teardown&&f.teardown.call(e,d,m.handle)!==!1||x.removeEvent(e,h,m.handle),delete u[h])}else for(h in u)x.event.remove(e,h+t[l],n,r,!0);x.isEmptyObject(u)&&(delete m.handle,q.remove(e,"events"))}},trigger:function(t,n,r,i){var s,a,u,l,c,f,p,h=[r||o],d=y.call(t,"type")?t.type:t,g=y.call(t,"namespace")?t.namespace.split("."):[];if(a=u=r=r||o,3!==r.nodeType&&8!==r.nodeType&&!_.test(d+x.event.triggered)&&(d.indexOf(".")>=0&&(g=d.split("."),d=g.shift(),g.sort()),c=0>d.indexOf(":")&&"on"+d,t=t[x.expando]?t:new x.Event(d,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=g.join("."),t.namespace_re=t.namespace?RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=undefined,t.target||(t.target=r),n=null==n?[t]:x.makeArray(n,[t]),p=x.event.special[d]||{},i||!p.trigger||p.trigger.apply(r,n)!==!1)){if(!i&&!p.noBubble&&!x.isWindow(r)){for(l=p.delegateType||d,_.test(l+d)||(a=a.parentNode);a;a=a.parentNode)h.push(a),u=a;u===(r.ownerDocument||o)&&h.push(u.defaultView||u.parentWindow||e)}s=0;while((a=h[s++])&&!t.isPropagationStopped())t.type=s>1?l:p.bindType||d,f=(q.get(a,"events")||{})[t.type]&&q.get(a,"handle"),f&&f.apply(a,n),f=c&&a[c],f&&x.acceptData(a)&&f.apply&&f.apply(a,n)===!1&&t.preventDefault();return t.type=d,i||t.isDefaultPrevented()||p._default&&p._default.apply(h.pop(),n)!==!1||!x.acceptData(r)||c&&x.isFunction(r[d])&&!x.isWindow(r)&&(u=r[c],u&&(r[c]=null),x.event.triggered=d,r[d](),x.event.triggered=undefined,u&&(r[c]=u)),t.result}},dispatch:function(e){e=x.event.fix(e);var t,n,r,i,o,s=[],a=d.call(arguments),u=(q.get(this,"events")||{})[e.type]||[],l=x.event.special[e.type]||{};if(a[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),t=0;while((i=s[t++])&&!e.isPropagationStopped()){e.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(o.namespace))&&(e.handleObj=o,e.data=o.data,r=((x.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,a),r!==undefined&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,s=[],a=t.delegateCount,u=e.target;if(a&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!==this;u=u.parentNode||this)if(u.disabled!==!0||"click"!==e.type){for(r=[],n=0;a>n;n++)o=t[n],i=o.selector+" ",r[i]===undefined&&(r[i]=o.needsContext?x(i,this).index(u)>=0:x.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&s.push({elem:u,handlers:r})}return t.length>a&&s.push({elem:this,handlers:t.slice(a)}),s},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,r,i,s=t.button;return null==e.pageX&&null!=t.clientX&&(n=e.target.ownerDocument||o,r=n.documentElement,i=n.body,e.pageX=t.clientX+(r&&r.scrollLeft||i&&i.scrollLeft||0)-(r&&r.clientLeft||i&&i.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||i&&i.scrollTop||0)-(r&&r.clientTop||i&&i.clientTop||0)),e.which||s===undefined||(e.which=1&s?1:2&s?3:4&s?2:0),e}},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=z.test(i)?this.mouseHooks:I.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return 3===e.target.nodeType&&(e.target=e.target.parentNode),s.filter?s.filter(e,o):e},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==V()&&this.focus?(this.focus(),!1):undefined},delegateType:"focusin"},blur:{trigger:function(){return this===V()&&this.blur?(this.blur(),!1):undefined},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&x.nodeName(this,"input")?(this.click(),!1):undefined},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==undefined&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)},x.Event=function(e,t){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.getPreventDefault&&e.getPreventDefault()?U:Y):this.type=e,t&&x.extend(this,t),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,undefined):new x.Event(e,t)},x.Event.prototype={isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=U,e&&e.preventDefault&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=U,e&&e.stopPropagation&&e.stopPropagation()},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=U,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,t,n,r,i){var o,s;if("object"==typeof e){"string"!=typeof t&&(n=n||t,t=undefined);for(s in e)this.on(s,t,n,e[s],i);return this}if(null==n&&null==r?(r=t,n=t=undefined):null==r&&("string"==typeof t?(r=n,n=undefined):(r=n,n=t,t=undefined)),r===!1)r=Y;else if(!r)return this;return 1===i&&(o=r,r=function(e){return x().off(e),o.apply(this,arguments)},r.guid=o.guid||(o.guid=x.guid++)),this.each(function(){x.event.add(this,e,r,n,t)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,x(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return(t===!1||"function"==typeof t)&&(n=t,t=undefined),n===!1&&(n=Y),this.each(function(){x.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?x.event.trigger(e,t,n,!0):undefined}});var G=/^.[^:#\[\.,]*$/,J=x.expr.match.needsContext,Q={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return t=this,this.pushStack(x(e).filter(function(){for(r=0;i>r;r++)if(x.contains(t[r],this))return!0}));for(n=[],r=0;i>r;r++)x.find(e,this[r],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t=x(e,this),n=t.length;return this.filter(function(){var e=0;for(;n>e;e++)if(x.contains(this,t[e]))return!0})},not:function(e){return this.pushStack(Z(this,e||[],!0))},filter:function(e){return this.pushStack(Z(this,e||[],!1))},is:function(e){return!!e&&("string"==typeof e?J.test(e)?x(e,this.context).index(this[0])>=0:x.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,o=[],s=J.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(s?s.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?g.call(x(e),this[0]):g.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function K(e,t){while((e=e[t])&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return K(e,"nextSibling")},prev:function(e){return K(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(Q[e]||x.unique(i),"p"===e[0]&&i.reverse()),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,t,n){var r=[],i=n!==undefined;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&x(e).is(n))break;r.push(e)}return r},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function Z(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(G.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return g.call(t,e)>=0!==n})}var et=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,tt=/<([\w:]+)/,nt=/<|&#?\w+;/,rt=/<(?:script|style|link)/i,it=/^(?:checkbox|radio)$/i,ot=/checked\s*(?:[^=]|=\s*.checked.)/i,st=/^$|\/(?:java|ecma)script/i,at=/^true\/(.*)/,ut=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,lt={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};lt.optgroup=lt.option,lt.tbody=lt.tfoot=lt.colgroup=lt.caption=lt.col=lt.thead,lt.th=lt.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===undefined?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=ct(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=ct(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(gt(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&ht(gt(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++)1===e.nodeType&&(x.cleanData(gt(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!rt.test(e)&&!lt[(tt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(et,"<$1></$2>");try{for(;r>n;n++)t=this[n]||{},1===t.nodeType&&(x.cleanData(gt(t,!1)),t.innerHTML=e);t=0}catch(i){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=p.apply([],e);var r,i,o,s,a,u,l=0,c=this.length,f=this,h=c-1,d=e[0],g=x.isFunction(d);if(g||!(1>=c||"string"!=typeof d||x.support.checkClone)&&ot.test(d))return this.each(function(r){var i=f.eq(r);g&&(e[0]=d.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(r=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),i=r.firstChild,1===r.childNodes.length&&(r=i),i)){for(o=x.map(gt(r,"script"),ft),s=o.length;c>l;l++)a=r,l!==h&&(a=x.clone(a,!0,!0),s&&x.merge(o,gt(a,"script"))),t.call(this[l],a,l);if(s)for(u=o[o.length-1].ownerDocument,x.map(o,pt),l=0;s>l;l++)a=o[l],st.test(a.type||"")&&!q.access(a,"globalEval")&&x.contains(u,a)&&(a.src?x._evalUrl(a.src):x.globalEval(a.textContent.replace(ut,"")))}return this}}),x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=[],i=x(e),o=i.length-1,s=0;for(;o>=s;s++)n=s===o?this:this.clone(!0),x(i[s])[t](n),h.apply(r,n.get());return this.pushStack(r)}}),x.extend({clone:function(e,t,n){var r,i,o,s,a=e.cloneNode(!0),u=x.contains(e.ownerDocument,e);if(!(x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(s=gt(a),o=gt(e),r=0,i=o.length;i>r;r++)mt(o[r],s[r]);if(t)if(n)for(o=o||gt(e),s=s||gt(a),r=0,i=o.length;i>r;r++)dt(o[r],s[r]);else dt(e,a);return s=gt(a,"script"),s.length>0&&ht(s,!u&&gt(e,"script")),a},buildFragment:function(e,t,n,r){var i,o,s,a,u,l,c=0,f=e.length,p=t.createDocumentFragment(),h=[];for(;f>c;c++)if(i=e[c],i||0===i)if("object"===x.type(i))x.merge(h,i.nodeType?[i]:i);else if(nt.test(i)){o=o||p.appendChild(t.createElement("div")),s=(tt.exec(i)||["",""])[1].toLowerCase(),a=lt[s]||lt._default,o.innerHTML=a[1]+i.replace(et,"<$1></$2>")+a[2],l=a[0];while(l--)o=o.firstChild;x.merge(h,o.childNodes),o=p.firstChild,o.textContent=""}else h.push(t.createTextNode(i));p.textContent="",c=0;while(i=h[c++])if((!r||-1===x.inArray(i,r))&&(u=x.contains(i.ownerDocument,i),o=gt(p.appendChild(i),"script"),u&&ht(o),n)){l=0;while(i=o[l++])st.test(i.type||"")&&n.push(i)}return p},cleanData:function(e){var t,n,r,i=e.length,o=0,s=x.event.special;for(;i>o;o++){if(n=e[o],x.acceptData(n)&&(t=q.access(n)))for(r in t.events)s[r]?x.event.remove(n,r):x.removeEvent(n,r,t.handle);L.discard(n),q.discard(n)}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"text",async:!1,global:!1,success:x.globalEval})}});function ct(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function ft(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function pt(e){var t=at.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function ht(e,t){var n=e.length,r=0;for(;n>r;r++)q.set(e[r],"globalEval",!t||q.get(t[r],"globalEval"))}function dt(e,t){var n,r,i,o,s,a,u,l;if(1===t.nodeType){if(q.hasData(e)&&(o=q.access(e),s=x.extend({},o),l=o.events,q.set(t,s),l)){delete s.handle,s.events={};for(i in l)for(n=0,r=l[i].length;r>n;n++)x.event.add(t,i,l[i][n])}L.hasData(e)&&(a=L.access(e),u=x.extend({},a),L.set(t,u))}}function gt(e,t){var n=e.getElementsByTagName?e.getElementsByTagName(t||"*"):e.querySelectorAll?e.querySelectorAll(t||"*"):[];return t===undefined||t&&x.nodeName(e,t)?x.merge([e],n):n}function mt(e,t){var n=t.nodeName.toLowerCase();"input"===n&&it.test(e.type)?t.checked=e.checked:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}x.fn.extend({wrapAll:function(e){var t;return x.isFunction(e)?this.each(function(t){x(this).wrapAll(e.call(this,t))}):(this[0]&&(t=x(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this)},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var yt,vt,xt=/^(none|table(?!-c[ea]).+)/,bt=/^margin/,wt=RegExp("^("+b+")(.*)$","i"),Tt=RegExp("^("+b+")(?!px)[a-z%]+$","i"),Ct=RegExp("^([+-])=("+b+")","i"),kt={BODY:"block"},Nt={position:"absolute",visibility:"hidden",display:"block"},Et={letterSpacing:0,fontWeight:400},St=["Top","Right","Bottom","Left"],jt=["Webkit","O","Moz","ms"];function Dt(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=jt.length;while(i--)if(t=jt[i]+n,t in e)return t;return r}function At(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function Lt(t){return e.getComputedStyle(t,null)}function qt(e,t){var n,r,i,o=[],s=0,a=e.length;for(;a>s;s++)r=e[s],r.style&&(o[s]=q.get(r,"olddisplay"),n=r.style.display,t?(o[s]||"none"!==n||(r.style.display=""),""===r.style.display&&At(r)&&(o[s]=q.access(r,"olddisplay",Pt(r.nodeName)))):o[s]||(i=At(r),(n&&"none"!==n||!i)&&q.set(r,"olddisplay",i?n:x.css(r,"display"))));for(s=0;a>s;s++)r=e[s],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[s]||"":"none"));return e}x.fn.extend({css:function(e,t){return x.access(this,function(e,t,n){var r,i,o={},s=0;if(x.isArray(t)){for(r=Lt(e),i=t.length;i>s;s++)o[t[s]]=x.css(e,t[s],!1,r);return o}return n!==undefined?x.style(e,t,n):x.css(e,t)},e,t,arguments.length>1)},show:function(){return qt(this,!0)},hide:function(){return qt(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:At(this))?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=yt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,s,a=x.camelCase(t),u=e.style;return t=x.cssProps[a]||(x.cssProps[a]=Dt(u,a)),s=x.cssHooks[t]||x.cssHooks[a],n===undefined?s&&"get"in s&&(i=s.get(e,!1,r))!==undefined?i:u[t]:(o=typeof n,"string"===o&&(i=Ct.exec(n))&&(n=(i[1]+1)*i[2]+parseFloat(x.css(e,t)),o="number"),null==n||"number"===o&&isNaN(n)||("number"!==o||x.cssNumber[a]||(n+="px"),x.support.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),s&&"set"in s&&(n=s.set(e,n,r))===undefined||(u[t]=n)),undefined)}},css:function(e,t,n,r){var i,o,s,a=x.camelCase(t);return t=x.cssProps[a]||(x.cssProps[a]=Dt(e.style,a)),s=x.cssHooks[t]||x.cssHooks[a],s&&"get"in s&&(i=s.get(e,!0,n)),i===undefined&&(i=yt(e,t,r)),"normal"===i&&t in Et&&(i=Et[t]),""===n||n?(o=parseFloat(i),n===!0||x.isNumeric(o)?o||0:i):i}}),yt=function(e,t,n){var r,i,o,s=n||Lt(e),a=s?s.getPropertyValue(t)||s[t]:undefined,u=e.style;return s&&(""!==a||x.contains(e.ownerDocument,e)||(a=x.style(e,t)),Tt.test(a)&&bt.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=s.width,u.width=r,u.minWidth=i,u.maxWidth=o)),a};function Ht(e,t,n){var r=wt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function Ot(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,s=0;for(;4>o;o+=2)"margin"===n&&(s+=x.css(e,n+St[o],!0,i)),r?("content"===n&&(s-=x.css(e,"padding"+St[o],!0,i)),"margin"!==n&&(s-=x.css(e,"border"+St[o]+"Width",!0,i))):(s+=x.css(e,"padding"+St[o],!0,i),"padding"!==n&&(s+=x.css(e,"border"+St[o]+"Width",!0,i)));return s}function Ft(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Lt(e),s=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=yt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Tt.test(i))return i;r=s&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+Ot(e,t,n||(s?"border":"content"),r,o)+"px"}function Pt(e){var t=o,n=kt[e];return n||(n=Rt(e,t),"none"!==n&&n||(vt=(vt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(vt[0].contentWindow||vt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=Rt(e,t),vt.detach()),kt[e]=n),n}function Rt(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,t){x.cssHooks[t]={get:function(e,n,r){return n?0===e.offsetWidth&&xt.test(x.css(e,"display"))?x.swap(e,Nt,function(){return Ft(e,t,r)}):Ft(e,t,r):undefined},set:function(e,n,r){var i=r&&Lt(e);return Ht(e,n,r?Ot(e,t,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,t){return t?x.swap(e,{display:"inline-block"},yt,[e,"marginRight"]):undefined}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,t){x.cssHooks[t]={get:function(e,n){return n?(n=yt(e,t),Tt.test(n)?x(e).position()[t]+"px":n):undefined}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+St[r]+t]=o[r]||o[r-2]||o[0];return i}},bt.test(e)||(x.cssHooks[e+t].set=Ht)});var Mt=/%20/g,Wt=/\[\]$/,$t=/\r?\n/g,Bt=/^(?:submit|button|image|reset|file)$/i,It=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&It.test(this.nodeName)&&!Bt.test(e)&&(this.checked||!it.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace($t,"\r\n")}}):{name:t.name,value:n.replace($t,"\r\n")}}).get()}}),x.param=function(e,t){var n,r=[],i=function(e,t){t=x.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(t===undefined&&(t=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){i(this.name,this.value)});else for(n in e)zt(n,e[n],t,i);return r.join("&").replace(Mt,"+")};function zt(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||Wt.test(e)?r(e,i):zt(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)zt(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var _t,Xt,Ut=x.now(),Yt=/\?/,Vt=/#.*$/,Gt=/([?&])_=[^&]*/,Jt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Qt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Kt=/^(?:GET|HEAD)$/,Zt=/^\/\//,en=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,tn=x.fn.load,nn={},rn={},on="*/".concat("*");try{Xt=i.href}catch(sn){Xt=o.createElement("a"),Xt.href="",Xt=Xt.href}_t=en.exec(Xt.toLowerCase())||[];function an(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(w)||[];
+if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function un(e,t,n,r){var i={},o=e===rn;function s(a){var u;return i[a]=!0,x.each(e[a]||[],function(e,a){var l=a(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):undefined:(t.dataTypes.unshift(l),s(l),!1)}),u}return s(t.dataTypes[0])||!i["*"]&&s("*")}function ln(e,t){var n,r,i=x.ajaxSettings.flatOptions||{};for(n in t)t[n]!==undefined&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,t,n){if("string"!=typeof e&&tn)return tn.apply(this,arguments);var r,i,o,s=this,a=e.indexOf(" ");return a>=0&&(r=e.slice(a),e=e.slice(0,a)),x.isFunction(t)?(n=t,t=undefined):t&&"object"==typeof t&&(i="POST"),s.length>0&&x.ajax({url:e,type:i,dataType:"html",data:t}).done(function(e){o=arguments,s.html(r?x("<div>").append(x.parseHTML(e)).find(r):e)}).complete(n&&function(e,t){s.each(n,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Xt,type:"GET",isLocal:Qt.test(_t[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":on,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?ln(ln(e,x.ajaxSettings),t):ln(x.ajaxSettings,e)},ajaxPrefilter:an(nn),ajaxTransport:an(rn),ajax:function(e,t){"object"==typeof e&&(t=e,e=undefined),t=t||{};var n,r,i,o,s,a,u,l,c=x.ajaxSetup({},t),f=c.context||c,p=c.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),d=x.Callbacks("once memory"),g=c.statusCode||{},m={},y={},v=0,b="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(2===v){if(!o){o={};while(t=Jt.exec(i))o[t[1].toLowerCase()]=t[2]}t=o[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===v?i:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return v||(e=y[n]=y[n]||e,m[e]=t),this},overrideMimeType:function(e){return v||(c.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>v)for(t in e)g[t]=[g[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||b;return n&&n.abort(t),k(0,t),this}};if(h.promise(T).complete=d.add,T.success=T.done,T.error=T.fail,c.url=((e||c.url||Xt)+"").replace(Vt,"").replace(Zt,_t[1]+"//"),c.type=t.method||t.type||c.method||c.type,c.dataTypes=x.trim(c.dataType||"*").toLowerCase().match(w)||[""],null==c.crossDomain&&(a=en.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===_t[1]&&a[2]===_t[2]&&(a[3]||("http:"===a[1]?"80":"443"))===(_t[3]||("http:"===_t[1]?"80":"443")))),c.data&&c.processData&&"string"!=typeof c.data&&(c.data=x.param(c.data,c.traditional)),un(nn,c,t,T),2===v)return T;u=c.global,u&&0===x.active++&&x.event.trigger("ajaxStart"),c.type=c.type.toUpperCase(),c.hasContent=!Kt.test(c.type),r=c.url,c.hasContent||(c.data&&(r=c.url+=(Yt.test(r)?"&":"?")+c.data,delete c.data),c.cache===!1&&(c.url=Gt.test(r)?r.replace(Gt,"$1_="+Ut++):r+(Yt.test(r)?"&":"?")+"_="+Ut++)),c.ifModified&&(x.lastModified[r]&&T.setRequestHeader("If-Modified-Since",x.lastModified[r]),x.etag[r]&&T.setRequestHeader("If-None-Match",x.etag[r])),(c.data&&c.hasContent&&c.contentType!==!1||t.contentType)&&T.setRequestHeader("Content-Type",c.contentType),T.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+("*"!==c.dataTypes[0]?", "+on+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)T.setRequestHeader(l,c.headers[l]);if(c.beforeSend&&(c.beforeSend.call(f,T,c)===!1||2===v))return T.abort();b="abort";for(l in{success:1,error:1,complete:1})T[l](c[l]);if(n=un(rn,c,t,T)){T.readyState=1,u&&p.trigger("ajaxSend",[T,c]),c.async&&c.timeout>0&&(s=setTimeout(function(){T.abort("timeout")},c.timeout));try{v=1,n.send(m,k)}catch(C){if(!(2>v))throw C;k(-1,C)}}else k(-1,"No Transport");function k(e,t,o,a){var l,m,y,b,w,C=t;2!==v&&(v=2,s&&clearTimeout(s),n=undefined,i=a||"",T.readyState=e>0?4:0,l=e>=200&&300>e||304===e,o&&(b=cn(c,T,o)),b=fn(c,b,T,l),l?(c.ifModified&&(w=T.getResponseHeader("Last-Modified"),w&&(x.lastModified[r]=w),w=T.getResponseHeader("etag"),w&&(x.etag[r]=w)),204===e?C="nocontent":304===e?C="notmodified":(C=b.state,m=b.data,y=b.error,l=!y)):(y=C,(e||!C)&&(C="error",0>e&&(e=0))),T.status=e,T.statusText=(t||C)+"",l?h.resolveWith(f,[m,C,T]):h.rejectWith(f,[T,C,y]),T.statusCode(g),g=undefined,u&&p.trigger(l?"ajaxSuccess":"ajaxError",[T,c,l?m:y]),d.fireWith(f,[T,C]),u&&(p.trigger("ajaxComplete",[T,c]),--x.active||x.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,t){return x.get(e,undefined,t,"script")}}),x.each(["get","post"],function(e,t){x[t]=function(e,n,r,i){return x.isFunction(n)&&(i=i||r,r=n,n=undefined),x.ajax({url:e,type:t,dataType:i,data:n,success:r})}});function cn(e,t,n){var r,i,o,s,a=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),r===undefined&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in a)if(a[i]&&a[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}s||(s=i)}o=o||s}return o?(o!==u[0]&&u.unshift(o),n[o]):undefined}function fn(e,t,n,r){var i,o,s,a,u,l={},c=e.dataTypes.slice();if(c[1])for(s in e.converters)l[s.toLowerCase()]=e.converters[s];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(s=l[u+" "+o]||l["* "+o],!s)for(i in l)if(a=i.split(" "),a[1]===o&&(s=l[u+" "+a[0]]||l["* "+a[0]])){s===!0?s=l[i]:l[i]!==!0&&(o=a[0],c.unshift(a[1]));break}if(s!==!0)if(s&&e["throws"])t=s(t);else try{t=s(t)}catch(f){return{state:"parsererror",error:s?f:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===undefined&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),x.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,i){t=x("<script>").prop({async:!0,charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&i("error"===e.type?404:200,e.type)}),o.head.appendChild(t[0])},abort:function(){n&&n()}}}});var pn=[],hn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=pn.pop()||x.expando+"_"+Ut++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,s,a=t.jsonp!==!1&&(hn.test(t.url)?"url":"string"==typeof t.data&&!(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&hn.test(t.data)&&"data");return a||"jsonp"===t.dataTypes[0]?(i=t.jsonpCallback=x.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,a?t[a]=t[a].replace(hn,"$1"+i):t.jsonp!==!1&&(t.url+=(Yt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return s||x.error(i+" was not called"),s[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){s=arguments},r.always(function(){e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,pn.push(i)),s&&x.isFunction(o)&&o(s[0]),s=o=undefined}),"script"):undefined}),x.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(e){}};var dn=x.ajaxSettings.xhr(),gn={0:200,1223:204},mn=0,yn={};e.ActiveXObject&&x(e).on("unload",function(){for(var e in yn)yn[e]();yn=undefined}),x.support.cors=!!dn&&"withCredentials"in dn,x.support.ajax=dn=!!dn,x.ajaxTransport(function(e){var t;return x.support.cors||dn&&!e.crossDomain?{send:function(n,r){var i,o,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(i in e.xhrFields)s[i]=e.xhrFields[i];e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||n["X-Requested-With"]||(n["X-Requested-With"]="XMLHttpRequest");for(i in n)s.setRequestHeader(i,n[i]);t=function(e){return function(){t&&(delete yn[o],t=s.onload=s.onerror=null,"abort"===e?s.abort():"error"===e?r(s.status||404,s.statusText):r(gn[s.status]||s.status,s.statusText,"string"==typeof s.responseText?{text:s.responseText}:undefined,s.getAllResponseHeaders()))}},s.onload=t(),s.onerror=t("error"),t=yn[o=mn++]=t("abort"),s.send(e.hasContent&&e.data||null)},abort:function(){t&&t()}}:undefined});var vn,xn,bn=/^(?:toggle|show|hide)$/,wn=RegExp("^(?:([+-])=|)("+b+")([a-z%]*)$","i"),Tn=/queueHooks$/,Cn=[Dn],kn={"*":[function(e,t){var n,r,i=this.createTween(e,t),o=wn.exec(t),s=i.cur(),a=+s||0,u=1,l=20;if(o){if(n=+o[2],r=o[3]||(x.cssNumber[e]?"":"px"),"px"!==r&&a){a=x.css(i.elem,e,!0)||n||1;do u=u||".5",a/=u,x.style(i.elem,e,a+r);while(u!==(u=i.cur()/s)&&1!==u&&--l)}i.unit=r,i.start=a,i.end=o[1]?a+(o[1]+1)*n:n}return i}]};function Nn(){return setTimeout(function(){vn=undefined}),vn=x.now()}function En(e,t){x.each(t,function(t,n){var r=(kn[t]||[]).concat(kn["*"]),i=0,o=r.length;for(;o>i;i++)if(r[i].call(e,t,n))return})}function Sn(e,t,n){var r,i,o=0,s=Cn.length,a=x.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;var t=vn||Nn(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,s=0,u=l.tweens.length;for(;u>s;s++)l.tweens[s].run(o);return a.notifyWith(e,[l,o,n]),1>o&&u?n:(a.resolveWith(e,[l]),!1)},l=a.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:vn||Nn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?a.resolveWith(e,[l,t]):a.rejectWith(e,[l,t]),this}}),c=l.props;for(jn(c,l.opts.specialEasing);s>o;o++)if(r=Cn[o].call(l,e,c,l.opts))return r;return En(l,c),x.isFunction(l.opts.start)&&l.opts.start.call(e,l),x.fx.timer(x.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function jn(e,t){var n,r,i,o,s;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),s=x.cssHooks[r],s&&"expand"in s){o=s.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(Sn,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],kn[n]=kn[n]||[],kn[n].unshift(t)},prefilter:function(e,t){t?Cn.unshift(e):Cn.push(e)}});function Dn(e,t,n){var r,i,o,s,a,u,l,c,f,p=this,h=e.style,d={},g=[],m=e.nodeType&&At(e);n.queue||(c=x._queueHooks(e,"fx"),null==c.unqueued&&(c.unqueued=0,f=c.empty.fire,c.empty.fire=function(){c.unqueued||f()}),c.unqueued++,p.always(function(){p.always(function(){c.unqueued--,x.queue(e,"fx").length||c.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),a=q.get(e,"fxshow");for(r in t)if(o=t[r],bn.exec(o)){if(delete t[r],u=u||"toggle"===o,o===(m?"hide":"show")){if("show"!==o||a===undefined||a[r]===undefined)continue;m=!0}g.push(r)}if(s=g.length){a=q.get(e,"fxshow")||q.access(e,"fxshow",{}),"hidden"in a&&(m=a.hidden),u&&(a.hidden=!m),m?x(e).show():p.done(function(){x(e).hide()}),p.done(function(){var t;q.remove(e,"fxshow");for(t in d)x.style(e,t,d[t])});for(r=0;s>r;r++)i=g[r],l=p.createTween(i,m?a[i]:0),d[i]=a[i]||x.style(e,i),i in a||(a[i]=l.start,m&&(l.end=l.start,l.start="width"===i||"height"===i?1:0))}}function An(e,t,n,r,i){return new An.prototype.init(e,t,n,r,i)}x.Tween=An,An.prototype={constructor:An,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=An.propHooks[this.prop];return e&&e.get?e.get(this):An.propHooks._default.get(this)},run:function(e){var t,n=An.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):An.propHooks._default.set(this),this}},An.prototype.init.prototype=An.prototype,An.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},An.propHooks.scrollTop=An.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(Ln(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(At).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),s=function(){var t=Sn(this,x.extend({},e),o);s.finish=function(){t.stop(!0)},(i||q.get(this,"finish"))&&t.stop(!0)};return s.finish=s,i||o.queue===!1?this.each(s):this.queue(o.queue,s)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=undefined),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=x.timers,s=q.get(this);if(i)s[i]&&s[i].stop&&r(s[i]);else for(i in s)s[i]&&s[i].stop&&Tn.test(i)&&r(s[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));(t||!n)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=q.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,s=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.cur&&i.cur.finish&&i.cur.finish.call(this),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;s>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function Ln(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=St[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:Ln("show"),slideUp:Ln("hide"),slideToggle:Ln("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=An.prototype.init,x.fx.tick=function(){var e,t=x.timers,n=0;for(vn=x.now();t.length>n;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||x.fx.stop(),vn=undefined},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){xn||(xn=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(xn),xn=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===undefined?this:this.each(function(t){x.offset.setOffset(this,e,t)});var t,n,i=this[0],o={top:0,left:0},s=i&&i.ownerDocument;if(s)return t=s.documentElement,x.contains(t,i)?(typeof i.getBoundingClientRect!==r&&(o=i.getBoundingClientRect()),n=qn(s),{top:o.top+n.pageYOffset-t.clientTop,left:o.left+n.pageXOffset-t.clientLeft}):o},x.offset={setOffset:function(e,t,n){var r,i,o,s,a,u,l,c=x.css(e,"position"),f=x(e),p={};"static"===c&&(e.style.position="relative"),a=f.offset(),o=x.css(e,"top"),u=x.css(e,"left"),l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1,l?(r=f.position(),s=r.top,i=r.left):(s=parseFloat(o)||0,i=parseFloat(u)||0),x.isFunction(t)&&(t=t.call(e,n,a)),null!=t.top&&(p.top=t.top-a.top+s),null!=t.left&&(p.left=t.left-a.left+i),"using"in t?t.using.call(e,p):f.css(p)}},x.fn.extend({position:function(){if(this[0]){var e,t,n=this[0],r={top:0,left:0};return"fixed"===x.css(n,"position")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(r=e.offset()),r.top+=x.css(e[0],"borderTopWidth",!0),r.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-r.top-x.css(n,"marginTop",!0),left:t.left-r.left-x.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,n){var r="pageYOffset"===n;x.fn[t]=function(i){return x.access(this,function(t,i,o){var s=qn(t);return o===undefined?s?s[n]:t[i]:(s?s.scrollTo(r?e.pageXOffset:o,r?o:e.pageYOffset):t[i]=o,undefined)},t,i,arguments.length,null)}});function qn(e){return x.isWindow(e)?e:9===e.nodeType&&e.defaultView}x.each({Height:"height",Width:"width"},function(e,t){x.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){x.fn[r]=function(r,i){var o=arguments.length&&(n||"boolean"!=typeof r),s=n||(r===!0||i===!0?"margin":"border");return x.access(this,function(t,n,r){var i;return x.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):r===undefined?x.css(t,n,s):x.style(t,n,r,s)},t,o?r:undefined,o,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&"object"==typeof module.exports?module.exports=x:"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}),"object"==typeof e&&"object"==typeof e.document&&(e.jQuery=e.$=x)})(window);
Index: branches/testFACT++branch/www/smartfact/config.template.php
===================================================================
--- branches/testFACT++branch/www/smartfact/config.template.php	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/config.template.php	(revision 18277)
@@ -0,0 +1,9 @@
+<?PHP
+
+$path = "/home/fact/FACT++";
+
+$ldaphost = "161.72.93.133:389";
+$baseDN   = "dc=fact,dc=iac,dc=es";
+$groupDN  = "cn=Operations,ou=Application Groups,".$baseDN;
+
+?>
Index: branches/testFACT++branch/www/smartfact/index.css
===================================================================
--- branches/testFACT++branch/www/smartfact/index.css	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/index.css	(revision 18277)
@@ -0,0 +1,288 @@
+body {
+ 	overflow-x: hidden;
+        overflow-y: auto;
+}
+
+.thead {
+	background: #23a0da url(img/gradient.png) bottom left repeat-x;
+	color: #09415b;
+	padding: 2px 6px 2px 6px;
+/*	padding: 4px 6px;*/
+	border-color: #1379a8;
+	border-style: solid;
+	border-width: 1px 1px 1px 1px;
+	text-shadow: 0 1px 0 #37b2eb;
+	/*-moz-border-radius: 5px 5px 0 0;*/
+	/*-webkit-border-top-left-radius: 5px;*/
+	/*-webkit-border-top-right-radius: 5px;*/
+	font-size: 13px;
+}
+.thead td
+{
+	vertical-align:middle;
+}
+
+/*
+.thead a {
+	color: #09415b;
+	text-decoration: none;
+}
+
+.tcat {
+	background: #444;
+	color: #fff;
+	padding: 4px 6px;
+	font-size: 12px;
+}
+
+.tcat a {
+	color: #fff;
+}
+*/
+
+.tcol0 {
+	border-left: 1px solid #ccc;
+	border-bottom: 1px solid #ccc;
+        text-align:left;
+        padding-left:5px;
+        margin:0;
+}
+
+.tcol1 {
+	border-bottom: 1px solid #ccc;
+        padding-left:3px;
+        padding-right:3px;
+        margin:0;
+}
+
+.tcol2 {
+	border-right: 1px solid #ccc;
+	border-bottom: 1px solid #ccc;
+        text-align:right;
+        margin:0;
+        padding-right:5px;
+}
+/*
+.description {
+        text-align:left;
+}*/
+
+.tcell1 {
+        font-weight:bolder;
+        text-align:left;
+}
+
+.tcell2 {
+        text-align:right;
+}
+
+.tcell2l {
+        text-align:left;
+}
+
+.tcell2l pre {
+	display:inline;
+        color:darkblue;
+        font-weight:bold;
+/*        font-size:15px;*/
+}
+
+.tcell2 pre {
+	display:inline;
+        color:darkblue;
+        font-weight:bold;
+/*        font-size:15px;*/
+}
+
+/*
+.tcell3 {
+        text-align:center;
+}*/
+
+/*
+.trow3 {
+	background: #eee;
+	border-bottom: 1px solid #ccc;
+	padding: 4px;
+}
+*/
+
+.icon_black {
+   /*-webkit-box-shadow: rgba(255, 255, 255, 0.398438) 0px 1px 0px 0px;*/
+   /*background-attachment: scroll;*/
+   /*background-clip: border-box;*/
+   background-color: rgba(0, 0, 0, 0);
+   background-image: url(img/icons-18-black.png);
+   /*background-origin: padding-box;*/
+   background-repeat: no-repeat;
+   box-shadow: rgba(255, 255, 255, 0.398438) 0px 1px 0px 0px;
+   padding: 0;
+   margin:0;
+   white-space: nowrap;
+   width: 18px;
+   height: 18px;
+   zoom: 1;
+}
+
+.icon_white {
+   /*-webkit-box-shadow: rgba(255, 255, 255, 0.398438) 1px 1px 0px 0px;*/
+   /*background-attachment: scroll;*/
+   /*background-clip: border-box;*/
+   background-color: rgba(0, 0, 0, 0.398438);
+   background-image: url(img/icons-18-white.png);
+   /*background-origin: padding-box;*/
+   background-repeat: no-repeat;
+   box-shadow: rgba(255, 255, 255, 0.398438) 1px 1px 0px 0px;
+   padding: 0;
+   margin:0;
+   white-space: nowrap;
+   width: 18px;
+   height: 18px;
+   zoom: 1;
+}
+
+.icon_login {
+   background-image: url(img/icons-18-white.png);
+   background-repeat: no-repeat;
+   padding: 0;
+   margin:0;
+   white-space: nowrap;
+   width: 18px;
+   height: 18px;
+   zoom: 1;
+}
+
+.icon_color {
+   /*-webkit-box-shadow: rgba(255, 255, 255, 0.398438) 1px 1px 0px 0px;*/
+   /*background-attachment: scroll;*/
+   /*background-clip: border-box;*/
+   /*background-color: rgba(0, 0, 0, 0.398438);*/
+   background-image: url(img/icons.png);
+   /*background-origin: padding-box;*/
+   background-repeat: no-repeat;
+   /*box-shadow: rgba(255, 255, 255, 0.398438) 1px 1px 0px 0px;*/
+   padding: 0;
+   margin:0;
+   white-space: nowrap;
+   width: 18px;
+   height: 18px;
+   zoom: 1.;
+}
+
+/*
+.trow_shaded {
+	background: #ffdde0;
+	border-bottom: 1px solid #fcc;
+}
+
+.trow_selected td {
+	background: #FFFBD9;
+}
+
+.trow_sep {
+	background: #ddd;
+	color: #555;
+	padding: 4px;
+	text-align: center;
+
+	font-size: 12px;
+	font-weight: bold;
+}
+*/
+.tfoot {
+	background: #737373 url(img/gradient.png) bottom left repeat-x;
+	color: #fff;
+	border-color: #525252;
+	border-style: solid;
+	border-width: 1px 1px 1px 1px;
+	vertical-align: middle;
+	padding: 0px 6px 0px 6px;
+	/*-moz-border-radius: 0 0 5px 5px;*/
+	/*-webkit-border-bottom-left-radius: 5px;*/
+	/*-webkit-border-bottom-right-radius: 5px;*/
+	text-shadow: 0 -1px 0 #333;
+	/*font-size: 10px;*/
+}
+
+.tfoot td {
+	vertical-align:middle;
+}
+/*
+.tfoot a {
+	color: #fff;
+	text-decoration: none;
+}*/
+
+.container {
+ 	padding: 0;
+        margin: 0;
+        width: 100%;
+        border-left:  1px solid #ccc;
+        border-right: 1px solid #ccc;
+}
+
+h1 {
+ 	margin:0;
+}
+
+h2 {
+ 	margin:0;
+}
+
+h3 {
+ 	margin:0;
+ 	color:#206;
+}
+
+h4 {
+ 	margin:0;
+ 	color:#206;
+}
+
+.astro {
+	width:100%;
+}
+
+.astro td:nth-child(1) {
+        padding:0px 0px 0px 5px;
+        margin:0;
+}
+.astro td:nth-child(2) {
+	text-align:right;
+        padding:0px 5px 0px 0px;
+        margin:0;
+}
+.astro td:nth-child(3) {
+	text-align:center;
+        padding:0px 5px 0px 0px;
+        margin:0;
+}
+
+.sources B {
+	background:#eef;
+        padding-left:4px;
+        padding-right:4px;
+}
+
+.help P {
+	text-align:justify;
+}
+.help li {
+        padding-left:4px;
+        margin-bottom:1ex;
+}
+.help li:nth-child(1) {
+	background:#f0fff0;
+}
+.help li:nth-child(2) {
+	background:#fffff0;
+}
+.help li:nth-child(3) {
+	background:#fff8f0;
+}
+.help li:nth-child(4) {
+	background:#fcfcfc;
+}
+.help li:nth-child(5) {
+	background:#f0f0ff;
+}
Index: branches/testFACT++branch/www/smartfact/index.html
===================================================================
--- branches/testFACT++branch/www/smartfact/index.html	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/index.html	(revision 18277)
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML>
+<html>
+
+<head>
+  <title>SmartFACT++</title>
+  <script src="index.js"></script>
+  <link rel="stylesheet" type="text/css" href="index.css" />
+  <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, user-scalable=0, minimum-scale=1, maximum-scale=1, target-densitydpi=device-dpi" />
+</head>
+
+<body id="body" onload="onload();" onresize="onresize();">
+<audio autoplay id="audio">
+  <source type="audio/mp3"/>
+  <source type="audio/ogg"/>
+</audio>
+</body>
+</html>
Index: branches/testFACT++branch/www/smartfact/index.js
===================================================================
--- branches/testFACT++branch/www/smartfact/index.js	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/index.js	(revision 18277)
@@ -0,0 +1,1605 @@
+"use strict";
+
+var debug = false;
+
+var codedMap = "966676:6:A;68656364626Y?\\?;A=A<AGADAN4K4i5g5h5o506W?Z?]?_?>A@A?AJAIAFACAM4J4H4f5d5e5l5m5n516X?[?^?N?P?AA1ABAVAUAKAHAEAO4L4I4G4E4c5a5b5M6j5k5V6Y6\\6_6G?J?O?Q?S?2A4A3AYAXAWAbA_AnAkAhA3404F4D4B4`5^5_5J6K6L6S6T6W6Z6]6E?H?K?M?R?T?V?5A7A6A\\A[AZAeAdAaA^AmAjAgA24o3m3C4A4?4]5[5\\5G6H6I6P6Q6R6U6X6[6^6F?I?L?<?>?U?;@=@8Ah@9AMALA]ABCACfAcA`AoAlAiA4414n3l3<4@4>425Z5X5Y5D6E6F698N6O608E8H8K8H>K>N>?>B>=???A?<@>@@@i@k@j@PAOANAECDCCC<C9CZCWCTC=3:3734313=4;4943515o4W5U5V5A6B6C6687888m7n7C8F8I8F>I>L>=>@>C>E>@?B?D??@A@C@l@n@m@SARAQAHCGCFC?C>C;C8CYCVCSC<393633303n2:4846405n4l4T5R5S5>6?6@6384858j7k7l7o7D8G8J8G>J>M>>>A>D>4>6>C?3?5?B@2@4@o@_@0ALBKBTA0CoBIC8D7D@C=C:C[CXCUC>3;3835323o2m2k27454j3m4k4i4Q5O5P5C7<6=6g71828o8h7i7S9<8?8B8Q>T>W>@=C=F=e<h<5>7>9>4?6?8?3@5@7@`@b@a@OBNBMB3C2C1C;D:D9D_D\\DQCNCKCF3C3@3>2;282Z1W1l2j2h2k3i3g3j4h4f4N5L5M5@7A7B7d7e7f7l8m8n8P9Q9:8=8@8O>R>U>>=A=D=c<f<i<k<8>:><>7?9?;?6@8@:@c@e@d@RBQBPB6C5C4C>D=D<DbDaD^D[DPCMCJCE3B3?3=2:272Y1V1T1i2g2e2h3f3d3g4e4c4K5I5J5=7>7?7a7b7c7i8j8k8M9N9O9R9;8>8A8P>S>V>?=B=E=d<g<j<Z<\\<;>k=m=:?j>l>9@i?k?f@V@g@CBBBSBgBfB7CoCnC?DSDRDcD`D]DRCOCLCG3D3A3?2<292[1X1U1S1Q1f2d2b2e3c3a3d4b4`4H5F5G5:7;7<7^7_7`7f8g8h8J9K9L97:::=:@:C:F:I:I=L=O=7=:===n<1=[<]<_<l=n=0>k>m>o>j?l?n?W@Y@X@FBEBDBjBiBhB2D1D0DVDUDTDCE@EOELEIEXEUERE5222o1l1i1f1c1`1R1P1N1c2a2_2b3`3^3a4_4]4<5:5;5778797[7\\7]7c8d8e8G9H9I94:5:8:;:>:A:D:G:G=J=M=5=8=;=l<o<2=4=^<`<b<o=1>3>n>0?2?m?o?1@Z@\\@[@IBHBGBmBlBkB5D4D3DYDXDWDFEEEBE?ENEKEHEWETEQE4212n1k1h1e1b1_1]1O1M1K1`2^2\\2_3]3[3^4\\4Z4957585475767X7Y7Z7`8a8b8D9E9F91:2:3:6:9:<:?:B:E:H:H=K=N=6=9=<=m<0=3=d;f;a<H<J<2>b=d=1?a>c>0@`?b?]@D@^@:B9BJB^B]BnBfCeC6DJDIDZDnDmDGEDEAEPEMEJEYEVESE623202m1j1g1d1a1^1\\1[0L1J1?1]2[2Y2\\3Z3X3[4Y4W4654555172737U7V7W7]8^8_8A9B9C9e9o90:n9g:j:m:L:O:R:U:X:[:];`;c;T;W;Z;7<9<e;g;i;I<K<M<c=e=g=b>d>f>a?c?e?E@G@F@=B<B;BaB`B_BiChCgCMDLDKD1E0EoD9E7E<F9F6FaE^E[EjEgEdER0O0L0I0F0C0n0l0\\0Z0X0@1>1<1Z2X2V2Y3W3U3X4V4T4E5C5D5n6o607R7S7T7Z8[8\\8>9?9@9b9c9d9l9m9e:h:k:J:M:P:S:V:Y:[;^;a;R;U;X;6<8<:<;<h;j;l;L<N<P<f=h=j=e>g>i>d?f?h?N@Q@H@@B?B>BdBcBbBlCkCjCPDODND4E3E2E;E:E8E6E;F8F5F`E]EZEiEfEcEQ0N0K0H0E0B0m0k0j0Y0W0U0=1;191W2U2S2V3T3R3U4S4Q4B5@5A5k6l6m6O7P7Q7W8X8Y8;9<9=9_9`9a9j9k9\\:_:f:i:l:K:N:Q:T:W:Z:\\;_;b;S;V;Y;C<E<G<<<m;k;1<2<O<Q<S<i=[=P=h>X>Z>g?M@O@R@U@S@J@I@AB1B0BeBTB\\CmCAD@DQDiDhD5EdD<E4F2F0F=F:F7FbE_E\\EkEhEeES0P0M0J0G0D011o0h0g0e0V0T0`0:181Q2T2R2H2S3Q3P3R4P4K3?5=5>5c6i6j6h6M7N7L7U8V8T899:9W9]9^9\\9g9h9i9]:`:c:5;2;o:>;;;8;P;M;J;G;D;A;?<A<D<F<=<><n;o;3<5<R<T<Y=Z=Q=R=Y>[>\\>^>P@T@L@K@5B4B3B2BVBUB^C]CCDBDkDjDfDeD>E=E3F1FnElE@FCFFFIFLFOF;0>0A0205080513101i0f0d0c0b0_0I1H1D1P2O2G2F2D2O3N3M3J3H3a6b6e6f6g6I7J7K7R8S8397989V9Y9Z9[9f9^:a:d:4;1;n:=;:;7;O;L;I;F;C;@;@<B<0<4<U<V<X<`=]=\\=S=U=W=]>_>`>8B7B6BZBXBWB_CaC`CFDEDDDlDgDoEmE>FAFDFGFJFMF90<0?0003060714121a0^0]0G1C1B1N2L2E2C2B2@2L3I3`6d6E7F7G7H7O8Q8192969T9U9X96;3;0;?;<;9;Q;N;K;H;E;B;W<Y<^=_=a=T=V=X=\\B[BYBdCcCbCHDGD?FBFEFHFKFNF:0=0@0104070F1E1A1M2K2J2I2A2D7L8M8N8P809495961b:";
+var map = new Array(1440);
+
+function $(id) { return document.getElementById(id); }
+function $new(name) { return document.createElement(name); }
+function $txt(txt) { return document.createTextNode(txt); }
+function trim(str) { return str.replace(/^\s\s*/, "").replace(/\s*\s$/, ""); }
+function valid(str) { if (!str) return false; if (str.length==0) return false; return true;}
+function isSliding() { var z = $("body").visiblePage/*getAttribute("data-visible")*/; return $("table"+z) ? $("table"+z).offsetLeft!=0 : false; }
+function htmlDecode(input) { var e = $new('div'); e.innerHTML = input; return e.firstChild ? e.firstChild.nodeValue : input; }
+function setUTC(el, time) { var str = time.toUTCString(); var utc = str.substr(str.length-12, 8); el.innerHTML = "&#8226;&nbsp;"+utc+"&nbsp;UTC&nbsp;&#8226;"; }
+
+function cycleCol(el)
+{
+    var col = el.dotColor;//el.getAttribute("data-color");
+    col++;
+    col %= 31;
+    el.dotColor = col; //setAttribute("data-color", col);
+    if (col>16)
+        col = 31-col;
+    var hex = col.toString(16);
+    el.style.color = "#"+hex+"0"+hex+"0"+hex+"f";
+}
+
+function onload()
+{
+    try
+    {
+        var xmlLoad = new XMLHttpRequest();
+        xmlLoad.open('POST', "index.php?load", true);
+        xmlLoad.setRequestHeader("Cache-Control", "no-cache");
+        xmlLoad.setRequestHeader("If-Match", "*");
+        xmlLoad.onload = function()
+        {
+            if (xmlLoad.status==401)
+                login("");
+
+            if (xmlLoad.status!=200)
+            {
+                //alert("ERROR[0] - HTTP request '"+xmlLoad.statusText+" ["+xmlLoad.status+"]");
+                //return;
+            }
+
+            if (xmlLoad.status==200)
+                login(xmlLoad.responseText);
+        };
+        xmlLoad.send(null);
+    }
+    catch(e)
+    {
+        // FIXME: Add a message to the body.
+        alert("Your browser doesn't support dynamic reload.");
+        return;
+    }
+
+    var name = location.hash.length==0 ? "fact" : location.hash.substr(1);
+
+    var args = location.search.substr(1).split('&');
+
+    for (var i=0; i<args.length; i++)
+    {
+        switch (args[i])
+        {
+        //case "max":     $("body").setAttribute("data-max",     "yes"); continue;
+        //case "noslide": $("body").setAttribute("data-noslide", "yes"); continue;
+        case "max":     $("body").displayMax     = true; continue;
+        case "noslide": $("body").displayNoslide = true; continue;
+        case "sound":   $("body").sound          = true; continue;
+        }
+
+        var entry = args[i].split('=');
+        if (entry.length!=2)
+            continue;
+
+        switch (entry[0])
+        {
+        case "w": $("body").displayFixedWidth  = entry[1]; break; //setAttribute("data-width",  entry[1]); break;
+        case "h": $("body").displayFixedHeight = entry[1]; break; //setAttribute("data-height", entry[1]); break;
+        }
+    }
+
+    /*
+     alert("0 -- "+navigator.appCodeName+"\n"+
+          "1 -- "+navigator.appName+"\n"+
+          "2 -- "+navigator.appVersion+"\n"+
+          "3 -- "+navigator.platform+"\n"+
+          "4 -- "+navigator.userAgent);
+          */
+    loadPage(name, 0, 0);
+}
+
+function login(user)
+{
+    var z = $("body").visiblePage;
+    var l = $("login"+z);
+
+    $("body").user = user;
+
+    if (l)
+    {
+        l.setAttribute("style", "background-position:-"+(user?"720":"755")+"px 50%;");
+        l.alt = user;
+    }
+}
+
+function onresize()
+{
+    var z = $("body").visiblePage/*getAttribute("data-visible")*/;
+
+    //$("table"+z).style.width="100%";
+    $("image"+z).style.width="1px";
+    $("canvas"+z).width=1;
+
+    doresize(z);
+
+}
+
+function loadPage(name, z, dz)
+{
+    if (isSliding())
+        return;
+
+    var xmlPage = new XMLHttpRequest();
+    xmlPage.open('GET', "struct/"+name+'.page', true);
+    xmlPage.setRequestHeader("Cache-Control", "no-cache");
+    xmlPage.setRequestHeader("If-Match", "*");
+    xmlPage.onload = function ()
+    {
+        if (xmlPage.status!=200)
+        {
+            alert("ERROR[0] - HTTP request '"+name+".page': "+xmlPage.statusText+" ["+xmlPage.status+"]");
+            //setTimeout("loadPage('+name+')", 5000);
+            /****** invalidate ******/
+            return;
+        }
+
+        if (!isSliding())
+        {
+            buildPage(name, xmlPage.responseText, z, dz);
+            changePage(z, z+dz);
+        }
+
+        //changePage(name, xmlHttp.resposeText);
+        //slideOut(name, xmlHttp.responseText);
+        //displayPage(name, xmlHttp.responseText);
+        //onresize(true);
+    };
+
+    xmlPage.send(null);
+
+    location.hash = name;
+}
+
+function sendCommand(command)
+{
+    if (command=="stop")
+    {
+        if (!confirm("Do you really want to stop a running script?"))
+            return;
+    }
+
+    var debug = false;
+
+    var uri = "index.php?";
+    if (debug==true)
+        uri += "debug&";
+    uri += command;
+
+    var xmlCmd = new XMLHttpRequest();
+    xmlCmd.open('POST', uri, true);
+    xmlCmd.setRequestHeader("Cache-Control", "no-cache");
+    xmlCmd.setRequestHeader("If-Match", "*");
+    xmlCmd.onload = function ()
+    {
+        if (xmlCmd.status==401)
+            login("");
+
+        if (xmlCmd.status!=200)
+        {
+            alert("ERROR[1] - HTTP request: "+xmlCmd.statusText+" ["+xmlCmd.status+"]");
+            return;
+        }
+
+        if (xmlCmd.responseText.length==0)
+        {
+            alert("No proper acknowledgment of command execution received.");
+            return;
+        }
+
+        var txt = xmlCmd.responseText.split('\n');
+        login(txt[0]);
+        if (txt.length>1)
+            alert(xmlCmd.responseText);
+        else
+            alert("Command submitted.");
+    };
+    xmlCmd.send(null);
+}
+
+
+function submit(script, isIrq)
+{
+    var inputs = document.getElementsByTagName("input");
+
+    var args = isIrq ? "interrupt="+script : "start="+script+".js";
+
+    for (var i=0; i<inputs.length; i++)
+        args += "&"+inputs[i].name+"="+inputs[i].value;
+
+    var selects = document.getElementsByTagName("select");
+    for (var i=0; i<selects.length; i++)
+        args += "&"+selects[i].name+"="+selects[i].value;
+
+    sendCommand(args);
+}
+
+function buildPage(name, text, oldz, dz)
+{
+    var fname = dz==0 ? "fact" : $("table"+oldz).pageName;//getAttribute("data-file");
+
+    var z = oldz + dz;
+
+    var lines = text.split('\n');
+
+    if (lines.length==0)
+    {
+        alert("buildPage - received data empty.");
+        return;
+    }
+
+    if (lines[0].length==0)
+    {
+        alert("buildPage - title missing");
+        return;
+    }
+
+    $("audio").date = new Date();
+
+    var title  = lines[0];
+    var is_cmd = title[0]=='*' || title[0]=='!';
+    var is_irq = title[0]=='!';
+    var script = title.split('|');
+    if (is_cmd)
+    {
+        title = script.length>=1 ? script[0].substr(1) : title.substr(1);
+        script = script.length>=1 ? script[1] : name;
+    }
+
+    // ==================================================================
+
+    var th = $new("thead");
+    th.colSpan = 3;
+    th.width = "100%";
+
+    var htr = $new("tr");
+    th.appendChild(htr);
+
+    var htd = $new("td");
+    htd.setAttribute("class", "thead");
+    htd.colSpan = 3;
+    htd.width = "100%";
+    htr.appendChild(htd);
+
+    // -------------
+
+    var htab = $new("table");
+    htab.width = "100%";
+    htd.appendChild(htab);
+
+    var hhtr = $new("tr");
+    htab.appendChild(hhtr);
+
+    var htd0 = $new("td");
+    var htd1 = $new("td");
+    var htd2 = $new("td");
+    var htd3 = $new("td");
+    var htd4 = $new("td");
+    var htd5 = $new("td");
+    var htd6 = $new("td");
+    htd0.setAttribute("class", "tcell1");
+    htd1.setAttribute("class", "tcell2");
+    htd2.setAttribute("class", "tcell1");
+    htd2.setAttribute("width", "1px");
+    htd3.setAttribute("class", "tcell1");
+    htd3.setAttribute("width", "1px");
+    htd4.setAttribute("width", "1px");
+    htd5.setAttribute("width", "1px");
+    htd6.setAttribute("width", "1px");
+    hhtr.appendChild(htd6);
+    hhtr.appendChild(htd4);
+    hhtr.appendChild(htd3);
+    hhtr.appendChild(htd0);
+    hhtr.appendChild(htd1);
+    hhtr.appendChild(htd2);
+    hhtr.appendChild(htd5);
+
+    var div0 = $new("div");
+    var div1 = $new("div");
+    var div2 = $new("div");
+    var div3 = $new("div");
+    var div4 = $new("div");
+    var div5 = $new("div");
+    div0.id = "login"+z;
+    div0.alt = $("body").user;
+    div4.id = "warn"+z;
+    div5.id = "speaker"+z;
+    div0.setAttribute("class", "icon_login");
+    div2.setAttribute("class", "icon_white");
+    div4.setAttribute("class", "icon_color");
+    div5.setAttribute("class", "icon_color");
+    div0.setAttribute("style", "background-position:-"+($("body").user?"720":"755")+"px 50%;");
+    div2.setAttribute("style", "background-position:-396px 50%;");
+    div4.setAttribute("style", "background-position:-12px -13px;display:none;");
+    div5.setAttribute("style", "background-position:-189px -57px;");
+    div0.onclick = function () { sendCommand("logout"); };
+    div2.onclick = function () { this.style.backgroundColor='rgba(0,0,0,0.77)'; loadPage(fname,   z, -dz); };
+    div4.onclick = function () { this.style.backgroundColor='rgba(0,0,0,0.77)'; loadPage('error', z,  +1); };
+
+    if (name=="fact")
+    {
+        div3.setAttribute("class", "icon_color");
+        div3.setAttribute("style", "background-position:-58px -146px;");
+    }
+    else
+    {
+        div3.setAttribute("class", "icon_white");
+        div3.setAttribute("style", "background-position:-575px 50%;");
+        div3.onclick = function () { this.style.backgroundColor='rgba(0,0,0,0.77)'; loadPage('fact',  z,  -1); };
+    }
+
+    var sp0 = $new("span");
+    var sp1 = $new("span");
+    var sp2 = $new("span");
+    sp0.id = "ldot" +z;
+    sp1.id = "title"+z;
+    sp2.id = "rdot" +z;
+    sp1.setAttribute("style", "font-size:large;");
+    //sp0.setAttribute("data-color", "3");
+    //sp2.setAttribute("data-color", "3");
+    sp0.dotColor = 3;
+    sp2.dotColor = 3;
+    sp0.appendChild($txt(" \u2022 "));
+    sp1.appendChild($txt(title));
+    sp2.appendChild($txt(" \u2022 "));
+    if (is_cmd)
+    {
+        sp1.onclick = function () { this.style.backgroundColor='rgba(0,0,0,0.77)'; submit(script, is_irq); this.style.backgroundColor=''; };
+    }
+    else
+    {
+        if (name!='control')
+            sp1.onclick = function () { this.style.backgroundColor='rgba(0,0,0,0.15)'; loadPage('control', z, +1); };
+    }
+
+    div1.setAttribute("style", "font-size:small;");
+    div1.id = "reporttime"+z;
+    div1.appendChild($txt("---"));
+
+    div1.onclick = function () { this.style.backgroundColor='rgba(0,0,0,0.77)'; sendCommand('stop'); this.style.backgroundColor=''; };
+
+    htd0.appendChild(sp0);
+    htd0.appendChild(sp1);
+    htd0.appendChild(sp2);
+
+    htd6.appendChild(div0);     // Login
+    htd1.appendChild(div1);
+    if (dz!=0/* && z+dz!=0*/)
+        htd2.appendChild(div2); // back
+    htd3.appendChild(div3);     // home
+    htd4.appendChild(div4);     // Warning
+    htd5.appendChild(div5);     // Speaker
+
+    // ==================================================================
+
+    var tf = $new("tfoot");
+
+    var ftr = $new("tr");
+    tf.appendChild(ftr);
+
+    var ftd = $new("td");
+    ftd.setAttribute("class",   "tfoot");
+    ftd.width = "100%";
+    ftd.colSpan = 3;
+    ftr.appendChild(ftd);
+
+    var ftab = $new("table");
+    ftab.width = "100%";
+    ftd.appendChild(ftab);
+
+    var ftdH = $new("td");
+    var ftd0 = $new("td");
+    var ftd1 = $new("td");
+    var ftd2 = $new("td");
+    var ftd3 = $new("td");
+    var ftd4 = $new("td");
+    ftdH.setAttribute("width", "1px");
+    ftd2.setAttribute("width", "1px");
+    ftd3.setAttribute("width", "1px");
+    ftd4.setAttribute("width", "1px");
+
+    ftdH.setAttribute("class", "tcell1");
+    ftd0.setAttribute("class", "tcell1");
+    ftd1.setAttribute("class", "tcell2");
+    ftd2.setAttribute("class", "tcell2");
+    ftd3.setAttribute("class", "tcell2");
+    ftd4.setAttribute("class", "tcell2");
+
+    ftab.appendChild(ftdH);
+    ftab.appendChild(ftd0);
+    ftab.appendChild(ftd1);
+    ftab.appendChild(ftd2);
+    ftab.appendChild(ftd3);
+    ftab.appendChild(ftd4);
+
+    var fdivH = $new("div");
+    var fdiv0 = $new("span");
+    var fdiv1 = $new("span");
+    var fdiv2 = $new("div");
+    var fdiv3 = $new("div");
+    var fdiv4 = $new("div");
+    ftd0.style.paddingLeft = "5px";
+    fdiv4.id="cmd"+z;
+
+    fdiv2.setAttribute("class", "icon_white");
+    fdiv3.setAttribute("class", "icon_white");
+    fdiv4.setAttribute("class", "icon_white");
+    fdiv2.setAttribute("style", "background-position:-72px 50%;");
+    fdiv4.setAttribute("style", "background-position:-432px 50%;");
+    fdiv2.onclick = function () { this.style.backgroundColor='rgba(0,0,0,0.77)'; sendCommand('stop'); this.style.backgroundColor=''; };
+    if (is_cmd)
+    {
+        fdiv3.onclick = function () { this.style.backgroundColor='rgba(0,0,0,0.77)'; submit(script, is_irq); this.style.backgroundColor=''; };
+        fdiv3.setAttribute("style", "background-position:-109px 50%;");
+    }
+    else
+    {
+        fdiv3.onclick = function () { this.style.backgroundColor='rgba(0,0,0,0.77)'; loadPage('control', z,  +1); };
+        fdiv3.setAttribute("style", "background-position:-289px 50%;");
+    }
+
+    if (name.substr(0, 5)=="help-")
+    {
+        fdivH.setAttribute("class", "icon_color");
+        fdivH.setAttribute("style", "background-position:-408px -57px;");
+        //fdivH.setAttribute("style", "background-position:-13px -57px;");
+    }
+    else
+    {
+        fdivH.setAttribute("class", "icon_white");
+        fdivH.setAttribute("style", "background-position:-611px 50%;");
+        fdivH.onclick = function () { this.style.backgroundColor='rgba(0,0,0,0.77)'; loadPage('help-'+name, z, +1); };
+    }
+    fdiv4.onclick = function () { this.style.backgroundColor='rgba(0,0,0,0.77)'; loadPage('scriptlog', z,  +1); };
+
+
+    fdiv0.setAttribute("style", "font-size:large;");
+    fdiv1.setAttribute("style", "font-size:small;");
+    fdiv1.id = "localtime"+z;
+
+    fdiv0.onclick = function () { window.location='https://www.fact-project.org/logbook/misc.php?action=mobile'; }
+    fdiv0.appendChild($txt("logbook"));
+    fdiv1.appendChild($txt("loading..."));
+
+    ftdH.appendChild(fdivH);
+    ftd0.appendChild(fdiv0);
+    ftd1.appendChild(fdiv1);
+    ftd2.appendChild(fdiv2);
+    if (is_cmd || name!='control')
+        ftd3.appendChild(fdiv3);
+    if (name!='scriptlog')
+        ftd4.appendChild(fdiv4);
+
+    // ==================================================================
+
+    var tbody = $new("tbody");
+
+    for (var i=0; i<lines.length; i++)
+    {
+        lines[i] = trim(lines[i]);
+
+        if (lines[i][0] == '#')
+            lines.splice(i--, 1);
+    }
+
+    // Concatenate consecutive lines until they have at least two colons
+    for (var i=2; i<lines.length; i++)
+    {
+        if (lines[i].length==0)
+            continue;
+
+        while (i<lines.length)
+        {
+            var cols = lines[i-1].split('|');
+            if (cols.length>=3)
+                break;
+
+            lines[i-1] += lines[i].length==0 ? '<p/>' : " "+lines[i];
+            lines.splice(i,1);
+        }
+    }
+
+    var counter = 1;
+    for (var i=1; i<lines.length; i++)
+    {
+        lines[i] = trim(lines[i]);
+
+        if (lines[i].length==0)
+            continue;
+
+        var cols = lines[i].split('|');
+        if (cols.length != 3 && cols.length !=4)
+        {
+            alert("Wrong number of columns in line #"+i+" in '"+name+"': '"+lines[i]+"' N(cols)="+cols.length);
+            continue;
+        }
+
+        var check = cols[1].split("=");
+
+        if (check.length>1 && (check[0]=="camera" || check[0]=="hist"))
+        {
+            var data = cols[1].substring(check[0].length+1).split("/");
+
+            var tr = $new("tr");
+            tr.setAttribute("class", "row");
+            //tr.setAttribute("style", "margin:0;padding:0;");
+
+            var td = $new("td");
+            td.setAttribute("class", "container");
+            td.id = "container";
+            td.colSpan = 3;
+            tr.appendChild(td);
+
+            var canv = $new("canvas");
+            canv.id = "canvas"+z;
+            canv.width = "1";
+            canv.height = "1";
+            //canv.onclick = function () { save(); }
+            //canv.setAttribute("data-type", check[0]);
+            //canv.setAttribute("data-file", data[0]);
+            //canv.setAttribute("data-data", cols[1].substring(check[0].length+data[0].length+2));
+            canv.dataType = check[0];
+            canv.fileName = data[0];
+            canv.dataUnit = htmlDecode(cols[1].substring(check[0].length+data[0].length+2));
+//            canv.setAttribute("style", "display:none;");
+            td.appendChild(canv);
+
+            var img = $new("img");
+            img.src = "img/dummy.png";//needed in firefox
+            img.id = "image"+z;
+            img.setAttribute("style", "width:1px;height:15px;display:none;");
+            td.appendChild(img);
+
+            tbody.appendChild(tr);
+            continue;
+        }
+
+        var tr = $new("tr");
+        tr.setAttribute("class", "row");
+
+        if (valid(cols[0]))
+        {
+            tr.linkName = cols[0];
+            tr.onclick = function () { this.style.background='#ccb'; loadPage(this.linkName, z, -1); };
+        }
+
+        if (valid(cols[3]))
+        {
+            tr.linkName = cols[3];
+            tr.onclick = function () { this.style.background='#cbb'; loadPage(this.linkName, z, +1); };
+        }
+
+        var td0 = $new("td");
+        td0.setAttribute("class", "tcol0");
+        tr.appendChild(td0);
+
+        if (check.length>0 && check[0]=="image")
+        {
+            var img = $new("img");
+            img.style.width="100%";
+            img.style.display="block";
+            img.src = "img/"+check[1];
+            td0.style.paddingLeft=0;
+            td0.style.border=0;
+            td0.colSpan=3;
+            td0.appendChild(img);
+
+            tbody.appendChild(tr);
+            continue;
+        }
+
+        if (valid(cols[0]))
+        {
+            var sp = $new("div");
+            sp.setAttribute("class", "icon_black");
+            sp.setAttribute("style", "background-position: -144px 50%;");
+            td0.appendChild(sp);
+        }
+
+        var td1 = $new("td");
+        td1.setAttribute("class", "tcol1");
+        td1.width = "100%";
+        tr.appendChild(td1);
+
+        var td2 = $new("td");
+        td2.setAttribute("class", "tcol2");
+        td2.width = "18px";
+
+        if (valid(cols[3]))
+        {
+            var sp = $new("div");
+            sp.setAttribute("class", "icon_black");
+            sp.setAttribute("style", "background-position: -108px 50%;");
+            td2.appendChild(sp);
+        }
+        tr.appendChild(td2);
+
+        var tab = $new("table");
+        tab.width = "100%";
+        td1.appendChild(tab);
+
+        var innertr = $new("tr");
+        tab.appendChild(innertr);
+
+        var cell1 = $new("td");
+        cell1.setAttribute("class", "tcell1");
+
+        var cell2 = $new("td");
+        cell2.setAttribute("class", valid(cols[1]) ? "tcell2" : "tcell2l");
+
+        if (check.length>0 && check[0]=="select")
+        {
+            var args = check[1].split('/');
+
+            if (args.length<2)
+                alert("Argument name missing for'"+check[1]+"'");
+            else
+            {
+                var div = $new("div");
+                div.innerHTML = args[0];
+                cell1.appendChild(div);
+
+                var input = $new("SELECT");
+                input.name = args[1];
+                for (var j=2; j<args.length; j++)
+                    input.options.add(new Option(args[j]));
+                cell2.appendChild(input);
+            }
+
+        }
+        if (check.length>0 && check[0]=="input")
+        {
+            var opt = check[1].split('/');
+
+            if (opt.length<2)
+                alert("Argument name missing for'"+check[1]+"'");
+            else
+            {
+                var div = $new("div");
+                div.innerHTML = opt[0];
+                cell1.appendChild(div);
+
+                var input = $new("input");
+                input.name = opt[1];
+                input.type = "text";
+                input.maxlength = 80;
+                input.style.textAlign = "right";
+                input.style.width = "100%";
+                if (opt.length>2)
+                    input.value=opt[2];
+
+                cell2.appendChild(input);
+            }
+        }
+        if (check.length>0 && check[0]=="checkbox")
+        {
+            var opt = check[1].split('/');
+
+            var div = $new("div");
+            div.innerHTML = opt[0];
+            cell1.appendChild(div);
+
+            var input = $new("input");
+            input.type  = "checkbox";
+            input.name  = opt[1];
+            input.onclick = function() { this.value=this.checked; };
+            var c = opt.length>2 && opt[2]=="1";
+            input.checked = c;
+            input.value = c;
+
+            cell2.appendChild(input);
+        }
+        if (check.length==0 || (check[0]!="input" && check[0]!="select" && check[0]!="checkbox"))
+        {
+            var div = $new("div");
+            div.innerHTML = cols[1];
+            cell1.appendChild(div);
+
+            if (cols.length>2 && cols[2].length>0)
+            {
+                cell2.id = "data"+z+"-"+counter;
+                cell2.dataFormat = cols[2];
+                cell2.appendChild($txt("---"));
+                counter++;
+            }
+            else
+                cell1.setAttribute("class", "description");
+        }
+
+        innertr.appendChild(cell1);
+        innertr.appendChild(cell2);
+
+        tbody.appendChild(tr);
+    }
+
+    // ==================================================================
+
+    if (debug == true)
+    {
+        tr = $new("tr");
+        tr.setAttribute("class", "row");
+
+        td = $new("td");
+        td.id = "debug"+z;
+        td.colSpan = 3;
+        tr.appendChild(td);
+
+        tbody.appendChild(tr);
+    }
+
+    // ==================================================================
+
+    var table = $("table"+z);
+    if (table)
+        $("body").removeChild(table);
+
+    table = $new("table");
+    table.id = "table"+z;
+    table.border = 0;
+    table.cellSpacing = 0;
+    table.cellPadding = "0px";
+    //table.setAttribute("style", "overflow:hidden;position:fixed;top:0px;left:"+window.innerWidth+"px;")
+    table.setAttribute("style",
+                       "position:fixed;width:100%;top:0px;"+
+                       "left:"+window.innerWidth+"px;");
+
+    table.appendChild(th);
+    table.appendChild(tbody);
+    table.appendChild(tf);
+
+    $("body").appendChild(table);
+
+    // ==================================================================
+
+    /*
+     // Scrollbar for just the body
+     table.style.position  = "fixed";
+     th.style.position     = "aboslute";
+     tf.style.position     = "aboslute";
+     tbody.style.overflowY = "auto";
+     tbody.style.display   = "block";
+     tbody.style.height    = (window.innerHeight-th.clientHeight-tf.clientHeight)+"px";
+     tbody.id = "tbody"+z;
+     th.id    = "thead"+z;
+     tf.id    = "tfoot"+z;
+     */
+
+    // ==================================================================
+
+    table.pageName = name;//setAttribute("data-file", name);
+    table.counter = counter;
+
+    // This is needed so that the page is extended in height
+    // _before_ the sliding (in case it contains graphics
+    doresize(z);
+}
+
+function doresize(z)
+{
+    var img  = $("image"+z);
+    var canv = $("canvas"+z);
+    if (!img || !canv)
+        return;
+
+    var h = $("table"+z).offsetHeight;
+    if (h == 0)
+        return;
+
+    // ===========================================
+    /*
+     var tb = $("tbody"+z);
+     var hw = $("thead"+z).clientHeight;
+     var fw = $("tfoot"+z).clientHeight;
+
+     tb.style.height = (window.innerHeight-hw-fw)+"px";
+     */
+    // ===========================================
+
+    var fixedw = $("body").displayFixedWidth;//getAttribute("data-width");
+    var fixedh = $("body").displayFixedHeight;//getAttribute("data-height");
+
+    var W = fixedw>0 ? fixedw : window.innerWidth;
+    var H = fixedh>0 ? fixedh : window.innerHeight;
+
+    //var max = $("body").getAttribute("data-max")=="yes";
+    var max = $("body").displayMax;
+
+    var ih = max ? W : H - h + parseInt(img.style.height, 10);
+
+    // This might create the scroll bar
+
+    if (img.style.height!=ih+"px")
+        img.style.height = ih+"px";
+    if (canv.height!=ih)
+        canv.height = ih;
+
+    // now we can evaluate the correct view-port
+    // (-2 is the border size of the parent element 'container')
+    //var sW = (fixedw ? fixedw : $("table"+z).scrollWidth)-2;
+    var sW = fixedw ? fixedw : canv.parentNode.clientWidth;
+
+    if (img.style.width!=sW+"px")
+        img.style.width = sW+"px";
+    if (canv.width!=sW)
+        canv.width = sW;
+
+    // ------ debug -----
+    if (debug == true)
+    {
+        $('debug'+z).innerHTML = "";
+        $('debug'+z).innerHTML += "|W="+W +"/"+H;
+        $('debug'+z).innerHTML += "|H="+h+"/"+$("table"+z).offsetHeight+"/"+img.offsetHeight;
+        $('debug'+z).innerHTML += "|I="+img.style.height+"+"+H+"-"+h;
+    }
+}
+
+var intervalSlide = null;
+
+function changePage(oldz, newz)
+{
+    // No page displayed yet
+    if (oldz==newz)
+    {
+        var tab = $("table"+newz);
+
+        tab.style.left="0px";
+        tab.style.position="absolute";
+
+        $("body").visiblePage = newz; //.setAttribute("data-visible", newz);
+
+        doresize(newz);
+
+        //setInterval(refresh_text, 1000);
+        //setInterval(refresh_graphics, 5000);
+
+        refresh_text();
+
+        // first: decode the pixel mapping!
+        var sum = 1036080;
+        for (var i=0; i<1440; i++)
+        {
+            var d0 = codedMap.charCodeAt(i*2)  -48;
+            var d1 = codedMap.charCodeAt(i*2+1)-48;
+
+            map[i] = d0 | (d1<<6);
+            sum -= map[i];
+        }
+        if (sum!=0)
+            alert("Pixel mapping table corrupted!");
+
+        refresh_graphics();
+        return;
+    }
+
+    var W = window.innerWidth;
+    if (W==0 || $("body").displayNoslide)//$("body").getAttribute("data-noslide")=="yes")
+    {
+        $("body").visiblePage = newz;//setAttribute("data-visible", newz);
+        $("body").removeChild($("table"+oldz));
+        $("table"+newz).style.left="0px";
+        return;
+    }
+
+    if (newz>oldz)
+        $("table"+newz).style.left = W+"px";
+    else
+        $("table"+newz).style.left = (-W-1)+"px";
+
+    $("body").visiblePage = newz;//setAttribute("data-visible", newz);
+
+    // This is needed on my mobile to ensure that te browser
+    // doesn't try to zoom during shifting
+    $("table"+newz).style.position="fixed";
+    $("table"+oldz).style.position="fixed";
+
+    intervalSlide = setInterval(function (){doShift(oldz,newz);}, 75);
+}
+
+function doShift(oldz, newz)
+{
+    var t0 = $("table"+oldz);
+    var t1 = $("table"+newz);
+
+    if (t0.style.display=="none")
+    {
+        clearInterval(intervalSlide);
+        $("body").removeChild(t0);
+
+        t1.style.position="absolute";
+
+        // Now the scroll bar might have to appear or disappear
+        doresize(newz);
+        return;
+    }
+
+    var x0 = t0.offsetLeft;
+    var x1 = t1.offsetLeft;
+
+    var W = window.innerWidth;
+
+    if (newz<oldz)
+    {
+        x0 += W/5;
+        x1 += W/5;
+    }
+
+    if (newz>oldz)
+    {
+        x0 -= W/5;
+        x1 -= W/5;
+    }
+
+    if ((newz<oldz && x1>=0) || (newz>oldz && x1<=0))
+    {
+        t0.style.display="none";
+        x1 = 0;
+    }
+
+    t0.style.left = x0+"px";
+    t1.style.left = x1+"px";
+}
+
+var timeoutText = null;
+var timeoutGraphics = null;
+
+var test_counter = 0;
+
+function refresh_text()
+{
+    var z=$("body").visiblePage;//getAttribute("data-visible");
+
+    var fname = $("table"+z).pageName;//getAttribute("data-file");
+    var counter = $("table"+z).counter;//getAttribute("data-file");
+
+    var is_help = fname.substr(0,5)=="help-";
+
+    // Is sliding, no file defined or just help text?
+    if (isSliding() || !valid(fname) || is_help)
+    {
+        if (is_help)
+        {
+            setUTC($("localtime"+z), new Date());
+            $("reporttime"+z).innerHTML="";
+        }
+            
+        // invalidate?
+        timeoutText = setTimeout(refresh_text, 1000);
+        return;
+    }
+            
+    var xmlText = new XMLHttpRequest();
+    xmlText.open('GET', "data/"+fname+'.data', true);
+    xmlText.setRequestHeader("Cache-Control", "no-cache");
+    xmlText.setRequestHeader("If-Match", "*");
+    xmlText.onload = function ()
+    {
+//        if (xmlText.status==412)
+//        {
+//            timeoutText = setTimeout(refresh_text, 3000);
+//            return;
+//        }
+
+        if (counter>1 && xmlText.status!=200 && xmlText.status!=412)
+        {
+            alert("ERROR[2] - HTTP request '"+fname+".data': "+xmlText.statusText+" ["+xmlText.status+"]");
+            timeoutText = setTimeout(refresh_text, 10000);
+            return;
+        }
+
+        if (!isSliding())
+        {
+            cycleCol($("ldot"+z));
+            update_text(fname, counter>1 ? xmlText.responseText : undefined);
+            doresize(z); 
+        }
+        timeoutText = setTimeout(refresh_text, 3000);
+    };
+    xmlText.send(null);
+}
+
+var date0 = null;
+
+var test = 0;
+function update_text(fname, result)
+{
+    var z=$("body").visiblePage;//getAttribute("data-visible");
+    var table = $("table"+z);
+
+    if (table.pageName/*getAttribute("data-file")*/ != fname)
+        return;
+
+    // ----------------------------------------------------
+    var now = new Date();
+
+    var ltime = $("localtime"+z);
+    setUTC(ltime, now);
+
+    if (!result)
+        return;
+
+    var rtime = $("reporttime"+z);
+    var tokens = result.split('\n');
+    var header = tokens[0].split('\t');
+
+    // File corrupted / should we remove the date?)
+    if ((header.length>5 || header.length==2 || header.length==0) && header[0].length!=13)
+    {
+        // we ignore corrupted files for one minute
+        if (date0==null || date0.getTime()+60000<now.getTime())
+            rtime.style.color = "darkred";
+
+        return;
+    }
+
+    // File OK
+    date0 = now;
+
+    var stamp = new Date();
+    stamp.setTime(header[0]);
+
+    // File older than 1min
+    if (stamp.getTime()+60000<now.getTime())
+        rtime.style.color = "darkred";
+    else
+        rtime.style.color = "";
+
+    setUTC(rtime, stamp);
+
+    $("warn"+z).style.display = header.length>=4 && header[3]=='1' ? "" : "none";
+
+    if (header.length>=5)
+        $("cmd"+z).style.backgroundColor = header[4]=='1' ? "darkgreen" : "darkred";
+
+    // ----------------------------------------------------
+
+    if (header.length>=3 && $("body").sound)
+    {
+        $("speaker"+z).style.display = "none";
+
+        var audio = $("audio");
+
+        var audio_date = new Date();
+        audio_date.setTime(header[1]);
+
+        // Time stamp of audio file must be newer than page load
+        //  or last audio play respecitvely
+        if (audio_date>audio.date && header[2].length>0)
+        {
+            var name = "audio/"+header[2];
+
+            var mp3 = $new("SOURCE");
+            var ogg = $new("SOURCE");
+            mp3.src = name+".mp3";
+            ogg.src = name+".ogg";
+            mp3.type = "audio/mp3";
+            ogg.type = "audio/ogg";
+
+            audio.replaceChild(mp3, audio.firstChild);
+            audio.replaceChild(ogg, audio.lastChild);
+
+            audio.load();
+            audio.play();
+
+            audio.date = audio_date;
+        }
+    }
+
+    // ----------------------------------------------------
+
+    //var p = table.tBodies.length==3 ? 1 : 0;
+    //var tbody = table.tBodies[p];
+
+    for (var line=1; line<tokens.length; line++)
+    {
+        if (tokens[line].length==0)
+            continue;
+
+        var e = $("data"+z+"-"+line);
+        if (!e)
+            continue;
+
+        var form = e.dataFormat;//getAttribute("data-form");
+        if (!form)
+            continue;
+
+        var cols = tokens[line].split('\t');
+        for (var col=1; col<cols.length; col++)
+            form = form.replace("\$"+(col-1), cols[col].length==0 ? "&mdash;" : cols[col]);
+
+        if (cols.length<=1)
+            form = "&mdash;";
+
+        form = form.replace(/<B#(.*?)>/g, "<b style='background:#$1'>");
+        form = form.replace(/<#(.*?)>/g, "<font color='$1'>");
+        form = form.replace(/<([\+-])>/g, "<font size='$11'>");
+        form = form.replace(/<\/([#\+-])>/g, "</font>");
+        form = form.replace(/([0-9][0-9]):([0-9][0-9]):([0-9][0-9])/g,
+                            "<pre>$1</pre>:<pre>$2</pre>:<pre>$3</pre>");
+        form = form.replace(/--:--:--/g, "<pre>  </pre> <pre>  </pre> <pre>  </pre>");
+
+        var newe = $new("div");
+        newe.innerHTML = form;
+        e.replaceChild(newe, e.lastChild);
+
+        e.parentNode.parentNode.parentNode.parentNode.style.background=cols[0];
+    }
+}
+
+// http://billmill.org/static/canvastutorial/index.html
+// http://www.netmagazine.com/tutorials/learning-basics-html5-canvas
+// http://www.alistapart.com/articles/responsive-web-design/
+
+function refresh_graphics()
+{
+    var z = $("body").visiblePage;//getAttribute("data-visible");
+
+    var canvas = $("canvas"+z);
+
+    // Is sliding or no data file defined?
+    var fname = canvas==null ? "" : canvas.fileName;//getAttribute("data-file");
+    if (isSliding() || !valid(fname))
+    {
+        // invalidate?
+        timeoutGraphics = setTimeout(refresh_graphics, 3000);
+        return;
+    }
+
+    var xmlGfx = new XMLHttpRequest();
+    xmlGfx.open('GET', "data/"+fname, true);
+    xmlGfx.setRequestHeader("Cache-Control", "no-cache");
+    xmlGfx.setRequestHeader("If-Match", "*");
+    xmlGfx.onload = function ()
+    {
+//        if (xmlGfx.status==412)
+//        {
+//            timeoutGraphics = setTimeout(refresh_graphics, 5000);
+//            return;
+//        }
+
+        if (xmlGfx.status!=200 && xmlGfx.status!=412)
+        {
+            alert("ERROR[3] - Request '"+fname+"': "+xmlGfx.statusText+" ["+xmlGfx.status+"]");
+            timeoutGraphics = setTimeout(refresh_graphics, 10000);
+            //****** invalidate ******
+            return;
+        }
+
+        if (!isSliding())
+        {
+            cycleCol($("rdot"+z));
+            process_eventdata(xmlGfx.responseText);
+        }
+        timeoutGraphics = setTimeout(refresh_graphics, 5000)
+    };
+    xmlGfx.send(null);
+}
+
+
+function hueToRGB(hue)
+{
+    hue /= 3;
+    hue %= 6;
+
+    if (hue<1) return parseInt(255*hue,     10);
+    if (hue<3) return parseInt(255,         10);
+    if (hue<4) return parseInt(255*(4-hue), 10);
+
+    return 0.
+}
+
+function hueToHex(flt)
+{
+    var s = hueToRGB(flt).toString(16);
+    return s.length==2 ? s : "0"+s;
+}
+
+function HLStoRGB(hue)
+{
+    hue *= 14;
+
+    var sr = hueToHex(20-hue);
+    var sg = hueToHex(14-hue);
+    var sb = hueToHex(26-hue);
+
+    return sr+sg+sb;
+}
+
+function color(col)
+{
+    if (col==65533)
+        return HLStoRGB(0);
+
+    var hue = col/126;
+    return HLStoRGB(hue);
+}
+
+function toHex(str, idx)
+{
+    var ch = str[idx].toString(16);
+    return ch.length==2 ? ch : "0"+ch;
+}
+
+function drawHex(ctx, x, y, col)
+{
+    ctx.fillStyle = "#"+color(col);
+
+    ctx.save();
+
+    ctx.translate(x, y);
+    ctx.scale(1/2, 1/3);
+
+    ctx.beginPath();
+    ctx.moveTo( 1,  1);
+    ctx.lineTo( 0,  2);
+    ctx.lineTo(-1,  1);
+    ctx.lineTo(-1, -1);
+    ctx.lineTo( 0, -2);
+    ctx.lineTo( 1, -1);
+    ctx.fill();
+
+    ctx.restore();
+}
+
+function drawDisc(ctx, x, y, r, col)
+{
+    ctx.fillStyle = "#"+color(col);
+
+    ctx.save();
+
+    ctx.translate(x, y);
+
+    ctx.beginPath();
+    ctx.arc(0, 0, r, 0, Math.PI*2, true);
+    ctx.fill();
+
+    ctx.restore();
+}
+
+function beginDrawCam(scale)
+{
+    var z    = $("body").visiblePage;//getAttribute("data-visible");
+    var canv = $("canvas"+z);
+
+    var w = Math.min(canv.width/scale, canv.height/scale);
+
+    var ctx = canv.getContext("2d");
+
+    ctx.save();
+    ctx.translate(canv.width/2, canv.height/2);
+    ctx.scale(w*2, w*2);
+
+    return ctx;
+}
+
+/**
+ * @constructor
+ */
+function Position(s, ring, i)
+{
+    switch (s)
+    {
+    case 1: this.x =  ring     - i*0.5;  this.y =       + i; break;
+    case 2: this.x =  ring*0.5 - i;      this.y =  ring    ; break;
+    case 3: this.x = -ring*0.5 - i*0.5;  this.y =  ring - i; break;
+    case 4: this.x = -ring     + i*0.5;  this.y =       - i; break;
+    case 5: this.x = -ring*0.5 + i;      this.y = -ring    ; break;
+    case 0: this.x =  ring*0.5 + i*0.5;  this.y = -ring + i; break;
+    }
+    this.d = (function () { return this.x*this.x + this.y*this.y*3/4; });
+}
+
+function drawFullCam(data)
+{
+    if (data.length!=40 && data.length!=160 && data.length!=320 && data.length!=1440)
+    {
+        alert("Camera - Received data has invalid size ("+data.length+"b)");
+        return;
+    }
+
+    var div = map.length/data.length;
+    var off = data.length==320 ? 0.2 : 0;
+
+    var ctx = beginDrawCam(83);
+    // ctx.rotate(Math.PI/3);
+
+    ctx.scale(1, Math.sqrt(3)/2);
+    ctx.translate(-0.5, 0);
+
+    drawHex(ctx, 0, 0, data.charCodeAt(parseInt(map[0]/div+off, 10)));
+
+    var cnt = 1;
+    for (var ring=1; ring<24; ring++)
+    {
+        for (var s=0; s<6; s++)
+        {
+            for (var i=1; i<=ring; i++)
+            {
+                var pos = new Position(s, ring, i);
+                if (pos.d() - pos.x > 395.75)
+                    continue;
+
+                var p = parseInt(map[cnt]/div+off, 10);
+
+                drawHex(ctx, pos.x, pos.y, data.charCodeAt(p));
+                cnt++;
+            }
+        }
+    }
+
+    drawHex(ctx, 7, -22, data.charCodeAt(parseInt(map[1438]/div+off, 10)));
+    drawHex(ctx, 7,  22, data.charCodeAt(parseInt(map[1439]/div+off, 10)));
+
+    ctx.restore();
+}
+
+function drawCam(data)
+{
+    var ctx = beginDrawCam(27);
+    ctx.rotate(Math.PI/6);
+    ctx.scale(1, Math.sqrt(3)/2);
+
+    drawHex(ctx, 0, 0, data.charCodeAt(0));
+
+    var cnt = 1;
+    for (var ring=1; ring<=7; ring++)
+    {
+        for (var s=0; s<6; s++)
+        {
+            for (var i=1; i<=ring; i++)
+            {
+                var pos = new Position(s, ring, i);
+                if (pos.d() > 44)
+                    continue;
+
+                if (ring==7)
+                {
+                    if (i==6 && (s==0 || s==3))
+                        continue;
+                    if (i==1 && (s==1 || s==4))
+                        continue;
+                }
+
+                drawHex(ctx, pos.x, pos.y, data.charCodeAt(cnt++));
+            }
+        }
+    }
+
+    ctx.restore();
+}
+
+function drawCamLegend(canv, data)
+{
+    var unit = canv.dataUnit;//htmlDecode(canv.getAttribute("data-data"));
+
+    var umin = data[1];
+    var umax = data[2];
+
+    var min  = data[3]+unit
+    var med  = data[4]+unit;
+    var max  = data[5]+unit;
+
+    var v0 = parseFloat(umin);
+    var v1 = parseFloat(umax);
+
+    var diff = v1-v0;
+
+    var cw = canv.width;
+    //var ch = canv.height;
+
+    var ctx = canv.getContext("2d");
+
+    ctx.font         = "8pt Arial";
+    ctx.textAlign    = "right";
+    ctx.textBaseline = "top";
+
+    for (var i=0; i<11; i++)
+    {
+        ctx.strokeStyle = "#"+color(126*i/10);
+        ctx.strokeText((v0+diff*i/10).toPrecision(3)+unit, cw-5, 125-i*12);
+    }
+
+    var mw = Math.max(ctx.measureText(min).width,
+                      ctx.measureText(med).width,
+                      ctx.measureText(max).width);
+
+    ctx.textBaseline = "top";
+    ctx.strokeStyle  = "#000";
+
+    ctx.strokeText(min, 5+mw, 5+24);
+    ctx.strokeText(med, 5+mw, 5+12);
+    ctx.strokeText(max, 5+mw, 5);
+}
+
+function drawGraph(canv, vals, data)
+{
+    var unit = canv.dataUnit;//htmlDecode(canv.getAttribute("data-data"));//.split("/");
+
+    var umin = vals[1]+unit;
+    var umax = vals[2]+unit;
+
+    var stat = vals.length==4 ? vals[3] :
+        vals[3]+unit+"   /   "+vals[4]+unit+"   /   "+vals[5]+unit;
+
+    var cw = canv.width;
+    var ch = canv.height;
+
+    var ctx = canv.getContext("2d");
+
+    var dw = 3;  // tick width
+    var fs = 8;  // font size
+
+    ctx.font      = fs+"pt Arial";
+    ctx.textAlign = "right";
+
+    var dim0 = ctx.measureText(umin);
+    var dim1 = ctx.measureText(umax);
+
+    var tw = Math.max(dim0.width, dim1.width)+dw+2;
+
+    var ml = 5+tw; // margin left
+    var mr = 10;   // margin right
+
+    var mt = 5+2*fs+4; // margin top
+    var mb = fs/2+4;   // margin bottom
+
+    var nx = 20;
+    var ny = 10;
+
+    var w = cw-ml-mr;
+    var h = ch-mt-mb;
+
+    ctx.strokeStyle = "#666";
+    ctx.fillStyle = "#"+color(100);
+
+    // --- data ---
+    var cnt = 0;
+    for (var j=1; j<data.length; j++)
+    {
+        if (data[j].length<5)
+            continue;
+
+        ctx.strokeStyle = "#"+data[j].substr(0, 3);
+        data[j] = data[j].substr(3);
+
+        ctx.beginPath();
+        ctx.moveTo(ml, ch-mb-data[j].charCodeAt(0)/126*h);
+        for (var i=1; i<data[j].length; i++)
+            ctx.lineTo(ml+w/(data[j].length-1)*i, ch-mb-data[j].charCodeAt(i)/126*h);
+
+        // --- finalize data ---
+        ctx.lineTo(cw-mr, ch-mb);
+        ctx.lineTo(ml,    ch-mb);
+        ctx.stroke();
+
+        cnt++;
+    }
+    if (cnt==1)
+        ctx.fill();
+
+    ctx.beginPath();
+
+    // --- grid ---
+
+    ctx.strokeStyle = "#eee";
+
+    for (var i=1; i<=nx; i++)
+    {
+        ctx.moveTo(ml+w*i/nx, ch-mb);
+        ctx.lineTo(ml+w*i/nx,    mt);
+    }
+    for (var i=0; i<ny; i++)
+    {
+        ctx.moveTo(ml,   mt+h*i/ny);
+        ctx.lineTo(ml+w, mt+h*i/ny);
+    }
+    ctx.stroke();
+    ctx.closePath();
+    ctx.beginPath();
+
+    ctx.strokeStyle = "#000";
+
+    // --- axes ---
+    ctx.moveTo(ml,    mt);
+    ctx.lineTo(ml,    ch-mb);
+    ctx.lineTo(cw-mr, ch-mb);
+
+    for (var i=1; i<=nx; i++)
+    {
+        ctx.moveTo(ml+w*i/nx, ch-mb-dw);
+        ctx.lineTo(ml+w*i/nx, ch-mb+dw);
+    }
+    for (var i=0; i<ny; i++)
+    {
+        ctx.moveTo(ml-dw, mt+h*i/ny);
+        ctx.lineTo(ml+dw, mt+h*i/ny);
+    }
+    ctx.stroke();
+    ctx.closePath();
+
+    ctx.textBaseline = "bottom";
+    ctx.strokeText(umin, ml-dw-2, ch-1);
+
+    ctx.textBaseline = mt>fs/2 ? "middle" : "top";
+    ctx.strokeText(umax, ml-dw-2, mt);
+
+    ctx.textBaseline = "top";
+    ctx.textAlign    = "center";
+    ctx.strokeText(stat, ml+w/2, 5);
+}
+
+function invalidateCanvas(canv)
+{
+    var ctx = canv.getContext("2d");
+
+    ctx.fillStyle = "rgba(255, 255, 255, 0.5)";
+    ctx.fillRect(0, 0, canv.width, canv.height);
+}
+
+function processGraphicsData(canv, result)
+{
+    if (result.length==0)
+        return false;
+
+    var ctx = canv.getContext("2d");
+    ctx.clearRect(0, 0, canv.width, canv.height);
+
+    var data = result.split('\x7f');
+    if (data.length<2)
+        return false;
+
+    var header = data[0].split('\n');
+    if (header.length<4)
+        return false;
+
+    switch (canv.dataType)
+    {
+        //case "camera": drawCam(result);     break;
+    case "hist":
+        drawGraph(canv, header, data);
+        break;
+    case "camera":
+        drawFullCam(data[1]);
+        drawCamLegend(canv, header);
+        break;
+    }
+
+    var now = new Date();
+    var tm  = new Date();
+    tm.setTime(header[0]);
+
+    if (tm.getTime()+60000<now.getTime())
+        return false;
+
+    //$("image"+z).src = canv.toDataURL("image/png");
+
+    return true;
+}
+
+function process_eventdata(result)
+{
+    var z = $("body").visiblePage;//getAttribute("data-visible");
+    var canv = $("canvas"+z);
+    if (!canv)
+        return;
+
+    if (!processGraphicsData(canv, result))
+        invalidateCanvas(canv);
+}
+
+function save()
+{
+    var z = $("body").visiblePage;//getAttribute("data-visible");
+
+    var canvas = $("canvas"+z);
+    var img    = canvas.toDataURL("image/png");
+
+    img = img.replace("image/png", "image/octet-stream");
+
+    document.location.href = img;
+}
+
+window['onload'] = onload;
Index: branches/testFACT++branch/www/smartfact/index.php
===================================================================
--- branches/testFACT++branch/www/smartfact/index.php	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/index.php	(revision 18277)
@@ -0,0 +1,312 @@
+<?PHP
+
+require_once("config.php");
+
+function escape($msg)
+{
+    $msg = str_replace("\\", "\\\\", $msg);
+    $msg = str_replace('\"', '\"',   $msg);
+    return $msg;
+}
+
+function login()
+{
+    global $ldaphost;
+    global $baseDN;
+    global $groupDN;
+
+    $username = $_SERVER['PHP_AUTH_USER'];
+    $password = $_SERVER['PHP_AUTH_PW'];
+
+    if (!isset($username) || !isset($password))
+        return "Unauthorized";
+
+    $con = @ldap_connect($ldaphost);
+    if (!$con)
+        return "ldap_connect failed to ".$ldaphost;
+
+    //------------------ Look for user common name
+    $attributes = array('cn', 'mail');
+    $dn         = 'ou=People,'.$baseDN;
+    $filter     = '(uid='.$username.')';
+
+    $sr = @ldap_search($con, $dn, $filter, $attributes);
+    if (!$sr)
+        return "ldap_search failed for dn=".$dn.": ".ldap_error($con);
+
+    $srData = @ldap_get_entries($con, $sr);
+    if ($srData["count"]==0)
+        return "No results returned by ldap_get_entries for dn=".$dn.".";
+
+    $email         =$srData[0]['mail'][0];
+    $userCommonName=$srData[0]['cn'][0];
+    $userDN        =$srData[0]['dn'];
+
+    //------------------ Authenticate user
+    if (!@ldap_bind($con, $userDN, $password))
+        return "ldap_bind failed: ".ldap_error($con);
+
+    //------------------ Check if the user is in FACT ldap group
+    $attributes= array("member");
+    $filter= '(objectClass=*)';
+
+    // Get all members of the group.
+    $sr = @ldap_read($con, $groupDN, $filter, $attributes);
+    if (!$sr)
+        return "ldap_read failed for dn=".$groupDN.": ".ldap_error($con);
+
+    // retrieve the corresponding data
+    $srData = @ldap_get_entries($con, $sr);
+    if ($srData["count"]==0)
+        return "No results returned by ldap_get_entries for dn=".$dn.".";
+
+    @ldap_unbind($con);
+
+    $found = false;
+    foreach ($srData[0]['member'] as $member)
+        if (strpos($member, "cn=".$userCommonName.",")===0)
+            return "";
+
+    return "Sorry, your credentials don't match!";
+}
+
+function execute($cmd, $out)
+{
+    // Execute
+    $str = exec($cmd, $out, $rc);
+
+        // Logging (mainly for debugging)
+    $d = date("Y/m");
+    $path = "log/".$d;
+
+    if (!file_exists($path))
+        mkdir($path, 0777, true);
+
+    $file = fopen($path."/exec.log", "a");
+
+    fwrite($file, date("Y-m-d H:i:s.u").": ");
+    fwrite($file, $cmd);
+    fwrite($file, "\n");
+    if ($rc>0)
+        fwrite($file, print_r($out,true)."\n");
+    fwrite($file, "\n");
+
+    fclose($file);
+
+    return $rc;
+}
+
+// --------------------------------------------------------------------
+
+if (isset($_GET['load']))
+{
+    require_once('log/Browscap.php');
+
+    $d = date("Y/m");
+
+    $path = "log/".$d;
+
+    if (!file_exists("log/cache"))
+        mkdir("log/cache", 0777, true);
+
+    if (!file_exists($path))
+        mkdir($path, 0777, true);
+
+    $addr = isset($_SERVER['REMOTE_ADDR'])     ? $_SERVER['REMOTE_ADDR']     : "";
+    $user = isset($_SERVER['PHP_AUTH_USER'])   ? $_SERVER['PHP_AUTH_USER']   : "";
+    $dns  = gethostbyaddr($addr);
+
+    $bcap = new phpbrowscap\Browscap('log/cache');
+    $info = $bcap->getBrowser();
+
+    $file = fopen($path."/smartfact.log", "a");
+    fwrite($file,
+           date("Y-m-d H:i:s\t").$addr.
+           "\t".$info->Platform.
+           "\t".$info->Browser.
+           "\t".$info->Version.
+           "\t".($info->isMobileDevice?"mobile":"").
+           "\t".$user.
+           "\t".$dns."\n");
+    fclose($file);
+
+    // http://ip-address-lookup-v4.com/ip/92.205.118.219
+
+    print($user);
+
+    return;
+}
+
+if (isset($_GET['sourcelist']))
+{
+    $server = mysql_connect($dbhost, $dbuser, $dbpass);
+    if (!$server)
+        die(mysql_error());
+
+    if (!mysql_select_db($dbname, $server))
+        die(mysql_error());
+
+    $result = mysql_query("SELECT fSourceName AS name FROM source", $server);
+    if (!$result)
+        die(mysql_error());
+
+
+//    var res = db.query("SELECT fSourceName, fRightAscension, fDeclination ",
+//              "FROM source");
+
+   // store the record of the "example" table into $row
+
+    // Print out the contents of the entry
+
+    while ($row=mysql_fetch_array($result, MYSQL_NUM))
+        print("'".$row[0]."'\n");
+
+    mysql_close($server);
+
+    return;
+}
+
+if (isset($_GET['source']) && isset($_GET['time']))
+{
+    // $args = "filename":label --arg:"key1=value" --arg:"key2=value"
+    $cmd = $path.'/makedata '.escapeshellarg($_GET['source']).' '.escapeshellarg($_GET['time']);
+
+    // Execute
+    passthru($cmd, $str);
+
+    // Logging (mainly for debugging)
+    $d = date("Y/m");
+    $path = "log/".$d;
+    if (!file_exists($path))
+        mkdir($path, 0777, true);
+    $file = fopen($path."/exec.log", "a");
+    fwrite($file, $cmd."\n".$str."\n\n");
+    fclose($file);
+
+    print_r($str);
+
+    return;
+}
+
+if (isset($_GET['logout']))
+{
+    if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']))
+        return;
+
+    return header('HTTP/1.0 401 Successfull logout!');
+}
+
+// --------------------------------------------------------------------
+
+if (!isset($_GET['start']) && !isset($_GET['stop']) && !isset($_GET['interrupt']))
+    return header('HTTP/1.0 400 Command not supported');
+
+// --------------------------------------------------------------------
+
+$rc = login();
+if ($rc!="")
+{
+    header('WWW-Authenticate: Basic realm="SmartFACT++"');
+    header('HTTP/1.0 401 '.$rc);
+    return;
+}
+
+// --------------------------------------------------------------------
+
+$out = array();
+
+if (isset($_GET['stop']))
+{
+    unset($_GET['stop']);
+
+    $cmd = $path."/dimctrl --no-log --user '".$_SERVER['PHP_AUTH_USER']."' --stop 2>&1";
+
+    $rc = execute($cmd, $out);
+}
+
+if (isset($_GET['start']))
+{
+    // Filename
+    $script = '"scripts/'.$_GET['start'].'"';
+
+    unset($_GET['start']);
+
+    /*
+     $args = "";
+     foreach ($_GET as $key => $value)
+        $args .= " --arg:".$key."=".$value;
+     $str = exec($path."/dimctrl --exec ".$args, $out, $rc);
+     */
+
+    // Label
+    if (isset($_GET['label']))
+    {
+        if ($_GET['label']>=0)
+            $script .= ":".$_GET['label'];
+        unset($_GET['label']);
+    }
+
+    $msg = "";
+    if (isset($_GET['msg']))
+    {
+        $msg = $_GET['msg'];
+        unset($_GET['msg']);
+    }
+
+    // Arguments
+    if (!empty($script) && empty($msg))
+    {
+        //foreach ($_GET as $key => $value)
+        //    $args .= ' --arg:"'.$key.'='.escape($value).'"';
+
+        $args = "";
+        foreach ($_GET as $key => $value)
+            $args .= ' "'.$key.'"="'.$value.'"';
+
+        // $args = "filename":label --arg:"key1=value" --arg:"key2=value"
+        $cmd = $path.'/dimctrl --no-log --user "'.$_SERVER['PHP_AUTH_USER'].'"  --start '.escapeshellarg($script.$args). " 2>&1";
+
+	$rc = execute($cmd, $out);
+    }
+
+    if (!empty($msg))
+    {
+        $msg = escape($msg);
+
+        // $args = "filename":label --arg:"key1=value" --arg:"key2=value"
+        $cmd = $path.'/dimctrl --no-log --user "'.$_SERVER['PHP_AUTH_USER'].'"  --msg '.escapeshellarg($msg)." 2>&1";
+
+        $rc = execute($cmd, $out);
+    }
+
+    // -------------------------------------------
+}
+
+if (isset($_GET['interrupt']))
+{
+    $irq = $_GET['interrupt'];
+    unset($_GET['interrupt']);
+
+    $args = "";
+    foreach ($_GET as $key => $value)
+        $args .= ' "'.$key.'"="'.$value.'"';
+
+    $cmd = $path.'/dimctrl --no-log --user "'.$_SERVER['PHP_AUTH_USER'].'"  --interrupt '.escapeshellarg($irq.$args)." 2>&1";
+
+    $rc = execute($cmd, $out);
+}
+
+if ($rc>1)
+    return header('HTTP/1.0 500 Execution failed [rc='.$rc."]");
+if ($rc==1)
+    return header('HTTP/1.0 500 Sending command failed.');
+
+print($_SERVER['PHP_AUTH_USER']);
+
+if (isset($_GET['debug']))
+{
+    print("\n");
+    print_r($out);
+}
+
+?>
Index: branches/testFACT++branch/www/smartfact/log/Browscap.php
===================================================================
--- branches/testFACT++branch/www/smartfact/log/Browscap.php	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/log/Browscap.php	(revision 18277)
@@ -0,0 +1,835 @@
+<?php
+
+namespace phpbrowscap;
+
+use \Exception as BaseException;
+
+/**
+ * Browscap.ini parsing class with caching and update capabilities
+ *
+ * PHP version 5
+ *
+ * Copyright (c) 2006-2012 Jonathan Stoppani
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @package    Browscap
+ * @author     Jonathan Stoppani <jonathan@stoppani.name>
+ * @author     Vítor Brandão <noisebleed@noiselabs.org>
+ * @copyright  Copyright (c) 2006-2012 Jonathan Stoppani
+ * @version    1.0
+ * @license    http://www.opensource.org/licenses/MIT MIT License
+ * @link       https://github.com/GaretJax/phpbrowscap/
+ */
+class Browscap
+{
+    /**
+     * Current version of the class.
+     */
+    const VERSION = '1.0';
+
+    /**
+     * Different ways to access remote and local files.
+     *
+     * UPDATE_FOPEN: Uses the fopen url wrapper (use file_get_contents).
+     * UPDATE_FSOCKOPEN: Uses the socket functions (fsockopen).
+     * UPDATE_CURL: Uses the cURL extension.
+     * UPDATE_LOCAL: Updates from a local file (file_get_contents).
+     */
+    const UPDATE_FOPEN = 'URL-wrapper';
+    const UPDATE_FSOCKOPEN = 'socket';
+    const UPDATE_CURL = 'cURL';
+    const UPDATE_LOCAL = 'local';
+
+    /**
+     * Options for regex patterns.
+     *
+     * REGEX_DELIMITER: Delimiter of all the regex patterns in the whole class.
+     * REGEX_MODIFIERS: Regex modifiers.
+     */
+    const REGEX_DELIMITER = '@';
+    const REGEX_MODIFIERS = 'i';
+
+    /**
+     * The values to quote in the ini file
+     */
+    const VALUES_TO_QUOTE = 'Browser|Parent';
+
+    /**
+     * Definitions of the function used by the uasort() function to order the
+     * userAgents array.
+     *
+     * ORDER_FUNC_ARGS: Arguments that the function will take.
+     * ORDER_FUNC_LOGIC: Internal logic of the function.
+     */
+    const ORDER_FUNC_ARGS = '$a, $b';
+    const ORDER_FUNC_LOGIC = '$a=strlen($a);$b=strlen($b);return$a==$b?0:($a<$b?1:-1);';
+
+    /**
+     * The headers to be sent for checking the version and requesting the file.
+     */
+    const REQUEST_HEADERS = "GET %s HTTP/1.0\r\nHost: %s\r\nUser-Agent: %s\r\nConnection: Close\r\n\r\n";
+
+    /**
+     * Options for auto update capabilities
+     *
+     * $remoteVerUrl: The location to use to check out if a new version of the
+     *                browscap.ini file is available.
+     * $remoteIniUrl: The location from which download the ini file.
+     *                The placeholder for the file should be represented by a %s.
+     * $timeout: The timeout for the requests.
+     * $updateInterval: The update interval in seconds.
+     * $errorInterval: The next update interval in seconds in case of an error.
+     * $doAutoUpdate: Flag to disable the automatic interval based update.
+     * $updateMethod: The method to use to update the file, has to be a value of
+     *                an UPDATE_* constant, null or false.
+     */
+    public $remoteIniUrl = 'http://browsers.garykeith.com/stream.asp?BrowsCapINI';
+    public $remoteVerUrl = 'http://browsers.garykeith.com/versions/version-date.asp';
+    public $timeout = 5;
+    public $updateInterval = 432000;  // 5 days
+    public $errorInterval = 7200;  // 2 hours
+    public $doAutoUpdate = true;
+    public $updateMethod = null;
+
+    /**
+     * The path of the local version of the browscap.ini file from which to
+     * update (to be set only if used).
+     *
+     * @var string
+     */
+    public $localFile = null;
+
+    /**
+     * The useragent to include in the requests made by the class during the
+     * update process.
+     *
+     * @var string
+     */
+    public $userAgent = 'Browser Capabilities Project - PHP Browscap/%v %m';
+
+    /**
+     * Flag to enable only lowercase indexes in the result.
+     * The cache has to be rebuilt in order to apply this option.
+     *
+     * @var bool
+     */
+    public $lowercase = false;
+
+    /**
+     * Flag to enable/disable silent error management.
+     * In case of an error during the update process the class returns an empty
+     * array/object if the update process can't take place and the browscap.ini
+     * file does not exist.
+     *
+     * @var bool
+     */
+    public $silent = false;
+
+    /**
+     * Where to store the cached PHP arrays.
+     *
+     * @var string
+     */
+    public $cacheFilename = 'cache.php';
+
+    /**
+     * Where to store the downloaded ini file.
+     *
+     * @var string
+     */
+    public $iniFilename = 'browscap.ini';
+
+    /**
+     * Path to the cache directory
+     *
+     * @var string
+     */
+    public $cacheDir = null;
+
+    /**
+     * Flag to be set to true after loading the cache
+     *
+     * @var bool
+     */
+    protected $_cacheLoaded = false;
+
+    /**
+     * Where to store the value of the included PHP cache file
+     *
+     * @var array
+     */
+    protected $_userAgents = array();
+    protected $_browsers = array();
+    protected $_patterns = array();
+    protected $_properties = array();
+
+    /**
+     * An associative array of associative arrays in the format
+     * `$arr['wrapper']['option'] = $value` passed to stream_context_create()
+     * when building a stream resource.
+     *
+     * Proxy settings are stored in this variable.
+     *
+     * @see http://www.php.net/manual/en/function.stream-context-create.php
+     *
+     * @var array
+     */
+    protected $_streamContextOptions = array();
+
+    /**
+     * A valid context resource created with stream_context_create().
+     *
+     * @see http://www.php.net/manual/en/function.stream-context-create.php
+     *
+     * @var resource
+     */
+    protected $_streamContext = null;
+
+    /**
+     * Constructor class, checks for the existence of (and loads) the cache and
+     * if needed updated the definitions
+     *
+     * @param string $cache_dir
+     */
+    public function __construct($cache_dir)
+    {
+        // has to be set to reach E_STRICT compatibility, does not affect system/app settings
+        date_default_timezone_set(date_default_timezone_get());
+
+        if (!isset($cache_dir)) {
+            throw new Exception(
+                'You have to provide a path to read/store the browscap cache file'
+            );
+        }
+
+        $old_cache_dir = $cache_dir;
+        $cache_dir = realpath($cache_dir);
+
+        if (false === $cache_dir) {
+            throw new Exception(
+                sprintf('The cache path %s is invalid. Are you sure that it exists and that you have permission to access it?', $old_cache_dir)
+            );
+        }
+
+        // Is the cache dir really the directory or is it directly the file?
+        if (substr($cache_dir, -4) === '.php') {
+            $this->cacheFilename = basename($cache_dir);
+            $this->cacheDir = dirname($cache_dir);
+        } else {
+            $this->cacheDir = $cache_dir;
+        }
+
+        $this->cacheDir .= DIRECTORY_SEPARATOR;
+    }
+
+    /**
+     * Gets the information about the browser by User Agent
+     *
+     * @param string $user_agent  the user agent string
+     * @param bool $return_array  whether return an array or an object
+     * @throws Exception
+     * @return stdObject  the object containing the browsers details. Array if
+     *                    $return_array is set to true.
+     */
+    public function getBrowser($user_agent = null, $return_array = false)
+    {
+        // Load the cache at the first request
+        if (!$this->_cacheLoaded) {
+            $cache_file = $this->cacheDir . $this->cacheFilename;
+            $ini_file = $this->cacheDir . $this->iniFilename;
+
+            // Set the interval only if needed
+            if ($this->doAutoUpdate && file_exists($ini_file)) {
+                $interval = time() - filemtime($ini_file);
+            } else {
+                $interval = 0;
+            }
+
+            // Find out if the cache needs to be updated
+            if (!file_exists($cache_file) || !file_exists($ini_file) || ($interval > $this->updateInterval)) {
+                try {
+                    $this->updateCache();
+                } catch (Exception $e) {
+                    if (file_exists($ini_file)) {
+                        // Adjust the filemtime to the $errorInterval
+                        touch($ini_file, time() - $this->updateInterval + $this->errorInterval);
+                    } elseif ($this->silent) {
+                        // Return an array if silent mode is active and the ini db doesn't exsist
+                        return array();
+                    }
+
+                    if (!$this->silent) {
+                        throw $e;
+                    }
+                }
+            }
+
+            $this->_loadCache($cache_file);
+        }
+
+        // Automatically detect the useragent
+        if (!isset($user_agent)) {
+            if (isset($_SERVER['HTTP_USER_AGENT'])) {
+                $user_agent = $_SERVER['HTTP_USER_AGENT'];
+            } else {
+                $user_agent = '';
+            }
+        }
+
+        $browser = array();
+        foreach ($this->_patterns as $key => $pattern) {
+            if (preg_match($pattern . 'i', $user_agent)) {
+                $browser = array(
+                    $user_agent, // Original useragent
+                    trim(strtolower($pattern), self::REGEX_DELIMITER),
+                    $this->_userAgents[$key]
+                );
+
+                $browser = $value = $browser + $this->_browsers[$key];
+
+                while (array_key_exists(3, $value) && $value[3]) {
+                    $value = $this->_browsers[$value[3]];
+                    $browser += $value;
+                }
+
+                if (!empty($browser[3])) {
+                    $browser[3] = $this->_userAgents[$browser[3]];
+                }
+
+                break;
+            }
+        }
+
+        // Add the keys for each property
+        $array = array();
+        foreach ($browser as $key => $value) {
+            if ($value === 'true') {
+                $value = true;
+            } elseif ($value === 'false') {
+                $value = false;
+            }
+            $array[$this->_properties[$key]] = $value;
+        }
+
+        return $return_array ? $array : (object) $array;
+    }
+
+    /**
+     * Load (auto-set) proxy settings from environment variables.
+     */
+    public function autodetectProxySettings()
+    {
+        $wrappers = array('http', 'https', 'ftp');
+
+        foreach ($wrappers as $wrapper) {
+            $url = getenv($wrapper.'_proxy');
+            if (!empty($url)) {
+                $params = array_merge(array(
+                    'port'  => null,
+                    'user'  => null,
+                    'pass'  => null,
+                    ), parse_url($url));
+                $this->addProxySettings($params['host'], $params['port'], $wrapper, $params['user'], $params['pass']);
+            }
+        }
+    }
+
+    /**
+     * Add proxy settings to the stream context array.
+     *
+     * @param string $server    Proxy server/host
+     * @param int    $port      Port
+     * @param string $wrapper   Wrapper: "http", "https", "ftp", others...
+     * @param string $username  Username (when requiring authentication)
+     * @param string $password  Password (when requiring authentication)
+     *
+     * @return Browscap
+     */
+    public function addProxySettings($server, $port = 3128, $wrapper = 'http', $username = null, $password = null)
+    {
+        $settings = array($wrapper => array(
+            'proxy'             => sprintf('tcp://%s:%d', $server, $port),
+            'request_fulluri'   => true,
+        ));
+
+        // Proxy authentication (optional)
+        if (isset($username) && isset($password)) {
+            $settings[$wrapper]['header'] = 'Proxy-Authorization: Basic '.base64_encode($username.':'.$password);
+        }
+
+        // Add these new settings to the stream context options array
+        $this->_streamContextOptions = array_merge(
+            $this->_streamContextOptions,
+            $settings
+        );
+
+        /* Return $this so we can chain addProxySettings() calls like this:
+         * $browscap->
+         *   addProxySettings('http')->
+         *   addProxySettings('https')->
+         *   addProxySettings('ftp');
+         */
+        return $this;
+    }
+
+    /**
+     * Clear proxy settings from the stream context options array.
+     *
+     * @param string $wrapper Remove settings from this wrapper only
+     *
+     * @return array Wrappers cleared
+     */
+    public function clearProxySettings($wrapper = null)
+    {
+        $wrappers = isset($wrapper) ? array($wrappers) : array_keys($this->_streamContextOptions);
+
+        $affectedProtocols = array();
+        $options = array('proxy', 'request_fulluri', 'header');
+        foreach ($wrappers as $wrapper) {
+
+            // remove wrapper options related to proxy settings
+            if (isset($this->_streamContextOptions[$wrapper]['proxy'])) {
+                foreach ($options as $option){
+                    unset($this->_streamContextOptions[$wrapper][$option]);
+                }
+
+                // remove wrapper entry if there are no other options left
+                if (empty($this->_streamContextOptions[$wrapper])) {
+                    unset($this->_streamContextOptions[$wrapper]);
+                }
+
+                $clearedWrappers[] = $wrapper;
+            }
+        }
+
+        return $clearedWrappers;
+    }
+
+    /**
+     * Returns the array of stream context options.
+     *
+     * @return array
+     */
+    public function getStreamContextOptions()
+    {
+        return $this->_streamContextOptions;
+    }
+
+    /**
+     * Parses the ini file and updates the cache files
+     *
+     * @return bool whether the file was correctly written to the disk
+     */
+    public function updateCache()
+    {
+        $ini_path = $this->cacheDir . $this->iniFilename;
+        $cache_path = $this->cacheDir . $this->cacheFilename;
+
+        // Choose the right url
+        if ($this->_getUpdateMethod() == self::UPDATE_LOCAL) {
+            $url = $this->localFile;
+        } else {
+            $url = $this->remoteIniUrl;
+        }
+
+        $this->_getRemoteIniFile($url, $ini_path);
+
+        if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
+            $browsers = parse_ini_file($ini_path, true, INI_SCANNER_RAW);
+        } else {
+            $browsers = parse_ini_file($ini_path, true);
+        }
+
+        array_shift($browsers);
+
+        $this->_properties = array_keys($browsers['DefaultProperties']);
+        array_unshift(
+            $this->_properties,
+            'browser_name',
+            'browser_name_regex',
+            'browser_name_pattern',
+            'Parent'
+        );
+
+        $this->_userAgents = array_keys($browsers);
+        usort(
+            $this->_userAgents,
+            create_function(self::ORDER_FUNC_ARGS, self::ORDER_FUNC_LOGIC)
+        );
+
+        $user_agents_keys = array_flip($this->_userAgents);
+        $properties_keys = array_flip($this->_properties);
+
+        $search = array('\*', '\?');
+        $replace = array('.*', '.');
+
+        foreach ($this->_userAgents as $user_agent) {
+            $pattern = preg_quote($user_agent, self::REGEX_DELIMITER);
+            $this->_patterns[] = self::REGEX_DELIMITER
+                               . '^'
+                               . str_replace($search, $replace, $pattern)
+                               . '$'
+                               . self::REGEX_DELIMITER;
+
+            if (!empty($browsers[$user_agent]['Parent'])) {
+                $parent = $browsers[$user_agent]['Parent'];
+                $browsers[$user_agent]['Parent'] = $user_agents_keys[$parent];
+            }
+
+            foreach ($browsers[$user_agent] as $key => $value) {
+                $key = $properties_keys[$key] . ".0";
+                $browser[$key] = $value;
+            }
+
+            $this->_browsers[] = $browser;
+            unset($browser);
+        }
+        unset($user_agents_keys, $properties_keys, $browsers);
+
+        // Save the keys lowercased if needed
+        if ($this->lowercase) {
+            $this->_properties = array_map('strtolower', $this->_properties);
+        }
+
+        // Get the whole PHP code
+        $cache = $this->_buildCache();
+
+        // Save and return
+        return (bool) file_put_contents($cache_path, $cache, LOCK_EX);
+    }
+
+    /**
+     * Loads the cache into object's properties
+     *
+     * @return void
+     */
+    protected function _loadCache($cache_file)
+    {
+        require $cache_file;
+
+        $this->_browsers = $browsers;
+        $this->_userAgents = $userAgents;
+        $this->_patterns = $patterns;
+        $this->_properties = $properties;
+
+        $this->_cacheLoaded = true;
+    }
+
+    /**
+     * Parses the array to cache and creates the PHP string to write to disk
+     *
+     * @return string the PHP string to save into the cache file
+     */
+    protected function _buildCache()
+    {
+        $cacheTpl = "<?php\n\$properties=%s;\n\$browsers=%s;\n\$userAgents=%s;\n\$patterns=%s;\n";
+
+        $propertiesArray = $this->_array2string($this->_properties);
+        $patternsArray = $this->_array2string($this->_patterns);
+        $userAgentsArray = $this->_array2string($this->_userAgents);
+        $browsersArray = $this->_array2string($this->_browsers);
+
+        return sprintf(
+            $cacheTpl,
+            $propertiesArray,
+            $browsersArray,
+            $userAgentsArray,
+            $patternsArray
+        );
+    }
+
+    /**
+     * Lazy getter for the stream context resource.
+     *
+     * @return resource
+     */
+    protected function _getStreamContext($recreate = false)
+    {
+        if (!isset($this->_streamContext) || true === $recreate) {
+            $this->_streamContext = stream_context_create($this->_streamContextOptions);
+        }
+
+        return $this->_streamContext;
+    }
+
+    /**
+     * Updates the local copy of the ini file (by version checking) and adapts
+     * his syntax to the PHP ini parser
+     *
+     * @param string $url  the url of the remote server
+     * @param string $path  the path of the ini file to update
+     * @throws Exception
+     * @return bool if the ini file was updated
+     */
+    protected function _getRemoteIniFile($url, $path)
+    {
+        // Check version
+        if (file_exists($path) && filesize($path)) {
+            $local_tmstp = filemtime($path);
+
+            if ($this->_getUpdateMethod() == self::UPDATE_LOCAL) {
+                $remote_tmstp = $this->_getLocalMTime();
+            } else {
+                $remote_tmstp = $this->_getRemoteMTime();
+            }
+
+            if ($remote_tmstp < $local_tmstp) {
+                // No update needed, return
+                touch($path);
+
+                return false;
+            }
+        }
+
+        // Get updated .ini file
+        $browscap = $this->_getRemoteData($url);
+
+
+        $browscap = explode("\n", $browscap);
+
+        $pattern = self::REGEX_DELIMITER
+                 . '('
+                 . self::VALUES_TO_QUOTE
+                 . ')="?([^"]*)"?$'
+                 . self::REGEX_DELIMITER;
+
+
+        // Ok, lets read the file
+        $content = '';
+        foreach ($browscap as $subject) {
+            $subject = trim($subject);
+            $content .= preg_replace($pattern, '$1="$2"', $subject) . "\n";
+        }
+
+        if ($url != $path) {
+            if (!file_put_contents($path, $content)) {
+                throw new Exception("Could not write .ini content to $path");
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Gets the remote ini file update timestamp
+     *
+     * @throws Exception
+     * @return int the remote modification timestamp
+     */
+    protected function _getRemoteMTime()
+    {
+        $remote_datetime = $this->_getRemoteData($this->remoteVerUrl);
+        $remote_tmstp = strtotime($remote_datetime);
+
+        if (!$remote_tmstp) {
+            throw new Exception("Bad datetime format from {$this->remoteVerUrl}");
+        }
+
+        return $remote_tmstp;
+    }
+
+    /**
+     * Gets the local ini file update timestamp
+     *
+     * @throws Exception
+     * @return int the local modification timestamp
+     */
+    protected function _getLocalMTime()
+    {
+        if (!is_readable($this->localFile) || !is_file($this->localFile)) {
+            throw new Exception("Local file is not readable");
+        }
+
+        return filemtime($this->localFile);
+    }
+
+    /**
+     * Converts the given array to the PHP string which represent it.
+     * This method optimizes the PHP code and the output differs form the
+     * var_export one as the internal PHP function does not strip whitespace or
+     * convert strings to numbers.
+     *
+     * @param array $array the array to parse and convert
+     * @return string the array parsed into a PHP string
+     */
+    protected function _array2string($array)
+    {
+        $strings = array();
+
+        foreach ($array as $key => $value) {
+            if (is_int($key)) {
+                $key = '';
+            } elseif (ctype_digit((string) $key) || strpos($key, '.0')) {
+                $key = intval($key) . '=>' ;
+            } else {
+                $key = "'" . str_replace("'", "\'", $key) . "'=>" ;
+            }
+
+            if (is_array($value)) {
+                $value = $this->_array2string($value);
+            } elseif (ctype_digit((string) $value)) {
+                $value = intval($value);
+            } else {
+                $value = "'" . str_replace("'", "\'", $value) . "'";
+            }
+
+            $strings[] = $key . $value;
+        }
+
+        return 'array(' . implode(',', $strings) . ')';
+    }
+
+    /**
+     * Checks for the various possibilities offered by the current configuration
+     * of PHP to retrieve external HTTP data
+     *
+     * @return string the name of function to use to retrieve the file
+     */
+    protected function _getUpdateMethod()
+    {
+        // Caches the result
+        if ($this->updateMethod === null) {
+            if ($this->localFile !== null) {
+                $this->updateMethod = self::UPDATE_LOCAL;
+            } elseif (ini_get('allow_url_fopen') && function_exists('file_get_contents')) {
+                $this->updateMethod = self::UPDATE_FOPEN;
+            } elseif (function_exists('fsockopen')) {
+                $this->updateMethod = self::UPDATE_FSOCKOPEN;
+            } elseif (extension_loaded('curl')) {
+                $this->updateMethod = self::UPDATE_CURL;
+            } else {
+                $this->updateMethod = false;
+            }
+        }
+
+        return $this->updateMethod;
+    }
+
+    /**
+     * Retrieve the data identified by the URL
+     *
+     * @param string $url the url of the data
+     * @throws Exception
+     * @return string the retrieved data
+     */
+    protected function _getRemoteData($url)
+    {
+        ini_set('user_agent', $this->_getUserAgent());
+
+        switch ($this->_getUpdateMethod()) {
+            case self::UPDATE_LOCAL:
+                $file = file_get_contents($url);
+
+                if ($file !== false) {
+                    return $file;
+                } else {
+                    throw new Exception('Cannot open the local file');
+                }
+            case self::UPDATE_FOPEN:
+                // include proxy settings in the file_get_contents() call
+                $context = $this->_getStreamContext();
+                $file = file_get_contents($url, false, $context);
+
+                if ($file !== false) {
+                    return $file;
+                } // else try with the next possibility (break omitted)
+            case self::UPDATE_FSOCKOPEN:
+                $remote_url = parse_url($url);
+                $remote_handler = fsockopen($remote_url['host'], 80, $c, $e, $this->timeout);
+
+                if ($remote_handler) {
+                    stream_set_timeout($remote_handler, $this->timeout);
+
+                    if (isset($remote_url['query'])) {
+                        $remote_url['path'] .= '?' . $remote_url['query'];
+                    }
+
+                    $out = sprintf(
+                        self::REQUEST_HEADERS,
+                        $remote_url['path'],
+                        $remote_url['host'],
+                        $this->_getUserAgent()
+                    );
+
+                    fwrite($remote_handler, $out);
+
+                    $response = fgets($remote_handler);
+                    if (strpos($response, '200 OK') !== false) {
+                        $file = '';
+                        while (!feof($remote_handler)) {
+                            $file .= fgets($remote_handler);
+                        }
+
+                        $file = str_replace("\r\n", "\n", $file);
+                        $file = explode("\n\n", $file);
+                        array_shift($file);
+
+                        $file = implode("\n\n", $file);
+
+                        fclose($remote_handler);
+
+                        return $file;
+                    }
+                } // else try with the next possibility
+            case self::UPDATE_CURL:
+                $ch = curl_init($url);
+
+                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+                curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->timeout);
+                curl_setopt($ch, CURLOPT_USERAGENT, $this->_getUserAgent());
+
+                $file = curl_exec($ch);
+
+                curl_close($ch);
+
+                if ($file !== false) {
+                    return $file;
+                } // else try with the next possibility
+            case false:
+                throw new Exception('Your server can\'t connect to external resources. Please update the file manually.');
+        }
+    }
+
+    /**
+     * Format the useragent string to be used in the remote requests made by the
+     * class during the update process.
+     *
+     * @return string the formatted user agent
+     */
+    protected function _getUserAgent()
+    {
+        $ua = str_replace('%v', self::VERSION, $this->userAgent);
+        $ua = str_replace('%m', $this->_getUpdateMethod(), $ua);
+
+        return $ua;
+    }
+}
+
+/**
+ * Browscap.ini parsing class exception
+ *
+ * @package    Browscap
+ * @author     Jonathan Stoppani <jonathan@stoppani.name>
+ * @copyright  Copyright (c) 2006-2012 Jonathan Stoppani
+ * @version    1.0
+ * @license    http://www.opensource.org/licenses/MIT MIT License
+ * @link       https://github.com/GaretJax/phpbrowscap/*/
+class Exception extends BaseException
+{}
Index: branches/testFACT++branch/www/smartfact/struct/agilent24.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/agilent24.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/agilent24.page	(revision 18277)
@@ -0,0 +1,5 @@
+24V Agilent (Interlock)
+status|Nominal output voltage|$0V|
+status|Measured output voltage|$0V|
+status|Current limit|$0A|
+status|Measured current|$0A|
Index: branches/testFACT++branch/www/smartfact/struct/agilent50.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/agilent50.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/agilent50.page	(revision 18277)
@@ -0,0 +1,5 @@
+50V Agilent (Camera)
+status|Nominal output voltage|$0V|
+status|Measured output voltage|$0V|
+status|Current limit|$0A|
+status|Measured current|$0A|
Index: branches/testFACT++branch/www/smartfact/struct/agilent80.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/agilent80.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/agilent80.page	(revision 18277)
@@ -0,0 +1,5 @@
+80V Agilent (Bias)
+status|Nominal output voltage|$0V|
+status|Measured output voltage|$0V|
+status|Current limit|$0A|
+status|Measured current|$0A|
Index: branches/testFACT++branch/www/smartfact/struct/bias.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/bias.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/bias.page	(revision 18277)
@@ -0,0 +1,6 @@
+Bias
+|Voltage||voltage
+|Current||current
+|Current prediction||current-prediction
+|Feedback||feedback
+|hist=hist-biascontrol-current.bin/ &micro;A|
Index: branches/testFACT++branch/www/smartfact/struct/boardrates.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/boardrates.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/boardrates.page	(revision 18277)
@@ -0,0 +1,6 @@
+Board rates
+trigger|Min. board rate|$0 Hz|
+trigger|Med. board rate|$0 Hz|
+trigger|Avg. board rate|$0 Hz|
+trigger|Max. board rate|$0 Hz|
+|camera=cam-ftmcontrol-boardrates.bin/ Hz|
Index: branches/testFACT++branch/www/smartfact/struct/camtemp.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/camtemp.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/camtemp.page	(revision 18277)
@@ -0,0 +1,5 @@
+Sensor temp
+fsc|Max. sensor temp.|$0 &deg;C|
+fsc|Avg. sensor temp.|$0 &deg;C|
+fsc|Min. sensor temp.|$0 &deg;C|
+|camera=cam-fsccontrol-temperature.bin/ &deg;C|
Index: branches/testFACT++branch/www/smartfact/struct/chat.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/chat.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/chat.page	(revision 18277)
@@ -0,0 +1,5 @@
+*Chat
+|<h4>Message</h4>|
+|input=/msg/|
+|<h4>Backlog</h4>|
+||$0|
Index: branches/testFACT++branch/www/smartfact/struct/current-prediction.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/current-prediction.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/current-prediction.page	(revision 18277)
@@ -0,0 +1,7 @@
+Current prediction
+|Source list||source-list
+|Source distance to moon||moon
+||
+|<h4>Max. current prediction (&micro;A/pix)</h4>||
+||<span class='sources'>$0</span>|
+|hist=hist-current-prediction.bin/&micro;A|
Index: branches/testFACT++branch/www/smartfact/struct/current.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/current.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/current.page	(revision 18277)
@@ -0,0 +1,8 @@
+Currents
+bias|Calibrated|$0|
+bias|Min. current per G-APD|$0&micro;A|
+bias|Med. current per G-APD|$0&micro;A|
+bias|Avg. current per G-APD|$0&micro;A|
+bias|Max. current per G-APD|$0&micro;A|
+bias|Power camera [G-APD]|$0|
+|camera=cam-biascontrol-current.bin/ &micro;A|
Index: branches/testFACT++branch/www/smartfact/struct/dew.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/dew.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/dew.page	(revision 18277)
@@ -0,0 +1,6 @@
+Dew point
+weather|Current|$0&deg;C|
+weather|Minimum|$0&deg;C|
+weather|Average|$0&deg;C|
+weather|Maximum|$0&deg;C|
+|hist=hist-magicweather-dew.bin/&deg;C|
Index: branches/testFACT++branch/www/smartfact/struct/errorhist.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/errorhist.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/errorhist.page	(revision 18277)
@@ -0,0 +1,2 @@
+Error history
+status||$0|
Index: branches/testFACT++branch/www/smartfact/struct/fact.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/fact.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/fact.page	(revision 18277)
@@ -0,0 +1,8 @@
+FACT
+|System status|$0|status
+|Drive|$0|tracking
+|Relative camera temp|$0&deg;C|fsc
+|Weather (hum/wind)|$0% / $1km/h|weather
+|Trigger rate|$0|trigger
+|G-APD (med/max)|$0&micro;A / $1&micro;A [$2]|bias
+|camera=cam-fadcontrol-eventdata.bin/ V|
Index: branches/testFACT++branch/www/smartfact/struct/fad.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/fad.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/fad.page	(revision 18277)
@@ -0,0 +1,5 @@
+FAD Connections
+status|Crate 0|$0|
+status|Crate 1|$0|
+status|Crate 2|$0|
+status|Crate 3|$0|
Index: branches/testFACT++branch/www/smartfact/struct/feedback.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/feedback.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/feedback.page	(revision 18277)
@@ -0,0 +1,8 @@
+Feedback
+bias|Temp Offset|$0 V|
+bias|Overvoltage nominal|$0 V|
+bias|Overvoltage min|$0 V|
+bias|Overvoltage med|$0 V|
+bias|Overvoltage avg|$0 V|
+bias|Overvoltage max|$0 V|
+|camera=cam-feedback-overvoltage.bin/ V|
Index: branches/testFACT++branch/www/smartfact/struct/fsc.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/fsc.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/fsc.page	(revision 18277)
@@ -0,0 +1,6 @@
+Slow control
+fact|Average humidity|$0%
+|Max. relative temp|$0&deg;C|camtemp
+|Avg. relative temp|$0&deg;C|camtemp
+|Min. relative temp|$0&deg;C|camtemp
+|hist=hist-fsccontrol-temperature.bin/&deg;C|
Index: branches/testFACT++branch/www/smartfact/struct/ftm.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/ftm.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/ftm.page	(revision 18277)
@@ -0,0 +1,10 @@
+FTM settings
+|Trigger interval|$0 ms|
+|Artificial trigger (ped&#58;lpext&#58;lpint)|$0|
+|Trigger (phys/ext1/ext2)|$0|
+|Veto / Time marker|$0|
+|Multiplicity N/40 (phys/cal)|$0|
+|Window (phys/cal)|$0 ns / $1 ns|
+|Delay (trigger/time marker)|$0 ns / $1 ns|
+|Dead time|$0 ns|
+|FTU readout interval|$0 s|ftu
Index: branches/testFACT++branch/www/smartfact/struct/ftu.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/ftu.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/ftu.page	(revision 18277)
@@ -0,0 +1,5 @@
+FTU status
+ftm|Crate 0|$0|
+ftm|Crate 1|$0|
+ftm|Crate 2|$0|
+ftm|Crate 3|$0|
Index: branches/testFACT++branch/www/smartfact/struct/gps.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/gps.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/gps.page	(revision 18277)
@@ -0,0 +1,9 @@
+GPS status
+status|Quality of service|$0|
+status|Satellites in FoV|$0|
+status|GPS Time|$0|
+status|Latitude|$0&deg;|
+status|Longitude|$0&deg;|
+status|Height|$0m|
+status|Hor. dil. of prec.|$0m|
+status|Geo. separation|$0m|
Index: branches/testFACT++branch/www/smartfact/struct/gusts.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/gusts.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/gusts.page	(revision 18277)
@@ -0,0 +1,6 @@
+Wind gusts
+weather|Current|$0 km/h|
+weather|Minimum|$0 km/h|
+weather|Average|$0 km/h|
+weather|Maximum|$0 km/h|
+|hist=hist-magicweather-gusts.bin|
Index: branches/testFACT++branch/www/smartfact/struct/help-about.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/help-about.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/help-about.page	(revision 18277)
@@ -0,0 +1,25 @@
+About
+|image=Flynns_file.png|
+
+|
+<U><B>SmartFACT++</B></U><br/>
+<B><TT>FACT telescope web control system</tt></B>
+
+Frontend power by <B>JavaScript</B><br/>
+Backend powered by <B>boost</B> and <B>dim</B>
+
+<B>Dim homepage:</B> <A HREF="http://dim.cern.ch">dim.cern.ch</A><br/>
+<B>FACT homepage:</B> <A HREF="http://www.fact-project.org">www.fact-project.org</A>
+
+<B>Written by:</B> T.Bretz<br/>
+<B>Contact:</B> <tt><A href="emailto:thomas.bretz@epfl.ch">thomas.bretz@epfl.ch</A></tt><br/>
+<B>Copyright:</B> &copy; T.Bretz (FACT Collaboration, 2012)
+
+<B>Collaborating institutes:</b><br/>
+&nbsp;&bull; EPF Lausanne<br/>
+&nbsp;&bull; ETH Z&uuml;rich<br/>
+&nbsp;&bull; ISDC (University Geneva)<br/>
+&nbsp;&bull; TU Dortmund<br/>
+&nbsp;&bull; University W&uuml;rzburg
+|
+
Index: branches/testFACT++branch/www/smartfact/struct/help-binaryfile.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/help-binaryfile.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/help-binaryfile.page	(revision 18277)
@@ -0,0 +1,21 @@
+Binary-file format
+|<h4>Camera and histogram file format</h4> 
+The first line of the file always contains a thirteen-digit number
+which is the time (in UTC) corresponding to the contained data as Unix
+time (milli-seconds since 1/1/1970). The second line contains a
+floating point number (in human readable ascii format) representing the
+lower limit if the scale and the third line the upper limit. The next three
+lines contain the three numbers displayed on top of the graphics,
+usually the minumum, median and maximum data value. Everything
+after is considered to be the data. For some restrictions of the HTML
+GET mechanism available in JavaScript the data must not exceed ascii
+character 127. So the full scale displayed, either in colors or as
+graph, is from 0 to 127. Eeach ascii character represents one entry in
+the camera or the histogram. The number of entries in the histogram can
+be between 0 to hundreds, although more entries than a typical screen
+has pixels does not make much sense. Keep in mind that the data is
+reloaded every few seconds and the larger the file is the higher the
+network traffic is. For the camera the number of entries is fixed and
+must either be 40 (boards), 160 (patches), 320 (HV channels) or 1440
+(pixels). They must be ordered by crate, board, chip, group, channel. 
+|
Index: branches/testFACT++branch/www/smartfact/struct/help-camera.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/help-camera.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/help-camera.page	(revision 18277)
@@ -0,0 +1,14 @@
+Camera
+|image=fact-camera.png|
+|
+The camera display is available in different types. It can display 40
+(board) values, 160 (patch) values, 320 (bias channel) values or
+1440 pixels. Depending on the type of input data several pixels mights
+consequently be displayed in the same color.
+|
+|<h4>min / med /max</h4>
+The minimum, median and maximum value of all values displayed in the camera.
+|
+|<h4>Scale</h4>
+The color scale of the displayed data.
+|
Index: branches/testFACT++branch/www/smartfact/struct/help-camtemp.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/help-camtemp.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/help-camtemp.page	(revision 18277)
@@ -0,0 +1,7 @@
+Sensor temperatures
+|
+The displayed values are derived from the 28 working temperature
+sensors. The displayed graphics is trigger patch wise  linearly
+interpolated or extrapolated. The color scale has its center always
+at the average of the 160 calculated temperature values and a range
+of +/- 1.5 &deg;C is displayed|
Index: branches/testFACT++branch/www/smartfact/struct/help-datafile.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/help-datafile.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/help-datafile.page	(revision 18277)
@@ -0,0 +1,43 @@
+Datafile format
+|
+A datafile is a file which is automatically loaded every few seconds
+and the values displayed on a page are updated. If the page name
+is <I>mypage.page</I> the name of the corresponding data file is
+<I>mypage.data</I>.
+
+The first line of the data file always contains a thirteen-digit number
+which is the time (in UTC) corresponding to the contained data
+as Unix time (milli-seconds since 1/1/1970). Seprated with tabs, it can
+contain to additional numbers. The first one defines if the warning
+sign is displayed (&gt;=1 means that it is displayed) and the
+second defines whether the script stop sign is displayed in green or red.
+For data-files which are not guranteed to be updated in reasonable
+intervals, it is advisable to not write the two numbers at all.
+
+Each following line contains columns seperated by tabs. The first column
+contains the background color of the row. It can be given in any
+representation accepted by HTML, usually #rrggbb. The following columns
+contain values or text which will replace the $N in the format given
+in the page file, <i>e.g.</i>
+
+If the second line of the data file contains
+
+<pre>
+blue\t0\t42.0
+</pre>
+
+while \t here representas the ascii character 9 ('\t' in C and C++), and the format
+in the page files looks like
+
+<pre>
+$1 shoes and $0 socks
+</pre>
+
+the row displayed will be
+
+<pre>
+42.0 shoes and 0 socks
+</pre>
+
+with a blue background.
+|
Index: branches/testFACT++branch/www/smartfact/struct/help-description.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/help-description.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/help-description.page	(revision 18277)
@@ -0,0 +1,40 @@
+Description
+|<h4>Description tag</h4>
+There are a few special tags for the description in the page-file.
+
+The tags are
+
+<pre>
+camera=filename/unit<br/>
+hist=filename/unit<br/>
+image=filename
+</pre>
+
+In the case of camera and hist, a binary file is loaded which contains the
+data to be displayed. The file-format for this i discussed hereafter.
+In case of the image-tag an HTML image tag is included showing the
+image loaded full-width in the row.
+
+If a camera graphics is displayed, the given unit is displayed at the scale
+(note that opera browser do not support text in the graphics so far).
+
+The unit can contain HTML special characters, <I>e.g.</I> &#38;micro;A
+|
+|<h4>Input tag</h4>
+For sending arguments to script (on script-pages) also a few special
+tags are available
+
+<pre>
+input=Title/name/default<br/>
+select=Title/name/item1/item2/item3<br/>
+</pre>
+
+The title is displayed on the left side of the row. The name is the 
+argument name used later in the script to indentify the arguments.
+
+<i>input</i> creates a text input field with the default as default.
+
+<i>select</i> creates a list-box with the items in the list. The default
+is the first item.
+|
+|Binary file format||help-binaryfile
Index: branches/testFACT++branch/www/smartfact/struct/help-fact-bias.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/help-fact-bias.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/help-fact-bias.page	(revision 18277)
@@ -0,0 +1,26 @@
+FACT
+|<h4>G-APD (med/max)</h4>
+Here the status of the bias system is summarized.
+
+The backround colors have the following meaning:
+<ul class='help'>
+<li>DNS online, MCP taking data, FAD taking data</li>
+<li>Bias voltage switched on and median current above 60&micro;A or
+maximum current (excluding faulty pixels) above 80&micro;A</li>
+<li>Bias voltage switched on and median current above 70&micro;A or
+maximum current (excluding faulty pixels) above 90&micro;A or any patch
+in OverCurrent or MCP not Idle and bias voltage is neither well defined
+switched on (VoltageOn) nor well defined off (VoltageOff).</li>
+<li>Bias neither ramping, nor in OverCurrent, nor in the well defined
+voltage on or off state.</li>
+<li>Bias crate is currently being calibrated</li>
+</ul>
+
+If the bias crate is currently calibrated asterix' are displayed, otherwise
+median pixel current and the maximum pixel current. The maximum excludes
+the crazy pixels. If a channel is on OverCurrent <I>(OC)</I> is appended.
+If the bias crate has not yet been calibrated the maximum current is
+replaced by a dash. If the bias current have been calibarted 
+already, also the total power consumed by the G-APDs
+is displayed otherwise the median applied voltage.
+|
Index: branches/testFACT++branch/www/smartfact/struct/help-fact-drive.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/help-fact-drive.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/help-fact-drive.page	(revision 18277)
@@ -0,0 +1,37 @@
+FACT
+|<h4>Drive</h4>
+The current drive status is displayed if the dim-network is online
+and the drivectrl has connection to cosy.
+
+The backround colors have the following meaning:
+<ul class='help'>
+<li>Drive is tracking</li>
+<li>Drive is tracking and the control deviation is larger than one arc-minute</li>
+<li>Drive is tracking and the control deviation is larger than two arc-minutes or the drive is in ERROR state</li>
+<li>Drive is offline, or online and neither moving nor tracking</li>
+<li>Drive is moving</li>
+</ul>
+
+If the drive is online, the current pointing position is displayed. Between
+sun-rise and sun-set a sun-symbol (&#9788;) is displayed. If between
+sun-set and sun-rise the moon is above horizon, a moon-symbol (&#9790;)
+is displayed. During tracking the current control deviation is 
+displayed behin a plus-minus symbol (&plusmn;). If the source name of
+the current tracking position is available it is displayed in []-parenthesis.
+If the drive is currently moving a moving-symbol (&#10227;) is displayed.
+
+If the drive is online and in error state this is also indicated by the
+extension [ERR]. This should make it easier to detect this state.
+
+If the drive is switched off and either the sun- or the moon-symbol is
+visible, it is extended with either the time until sun-set (indicated 
+with a down-arrow &darr;) or the moon disk visibility in percent.
+When the drive is switched on, this information is omitted due to space
+reasons.
+
+The &otimes;-symbol means that the drive is locked.
+
+More detailed informations about the sun and moon can be found at the
+weather page. More detailed tracking and pointing information at the
+drive page.
+|
Index: branches/testFACT++branch/www/smartfact/struct/help-fact-rate.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/help-fact-rate.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/help-fact-rate.page	(revision 18277)
@@ -0,0 +1,13 @@
+FACT
+|<h4>Trigger rate</h4>
+If the dim network is online and the trigger master (ftmctrl) in in state
+TriggerOn, the current camera trigger rate is displayed. If the
+bias voltage is swicthed on (biasctrl in state VoltageOn), also the
+median patch threshold is displayed in ()-parenthesis.
+
+<ul class='help'>
+<li>Trigger rate between 15Hz and 100Hz</li>
+<li>Trigger rate below 15Hz</li>
+<li>Trigger rate above 100Hz</li>
+</ul>
+|
Index: branches/testFACT++branch/www/smartfact/struct/help-fact-status.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/help-fact-status.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/help-fact-status.page	(revision 18277)
@@ -0,0 +1,27 @@
+FACT
+|<h4>System status</h4>
+Here the status of the whole system is summarized.
+
+The backround colors have the following meaning:
+<ul class='help'>
+<li>DNS online, MCP taking data, FAD taking data</li>
+<li>n/a</li>
+<li>n/a</li>
+<li>DNS offline of MCP in idle state</li>
+<li>DNS online, MCP configuring, configured or trigger on, MCP taking data and FAD not taking data, or
+ratecontrol in SettingThreshold or ratescan in progress.</li>
+</ul>
+
+The MCP state Idle, any configuring state and configured are display
+as text <I>Idle</I>, <I>Configuring</I> or <I>Configured</I>. In
+brackets the name of the last configured, or corresponding configuration
+is displayed. In case the trigger is swicthed on or the MCP is in state
+data-taking, only the configuration name and the last available
+DRS trigger baseline calibration run is displayed in parenthesis, if
+available. For the special cases that the threshold is currently
+calibrated or a rate scan is in progress, <I>Calibrating threshold</I> or
+<I>Rate scan in progress</I> is displayed. Is the MCP is configured to take
+data or data-taking is in progress, either the length of the run to be taken
+and/or the number of events to be taken are displayed, or an estimate of 
+the remaining time and/or number.
+|
Index: branches/testFACT++branch/www/smartfact/struct/help-fact-temp.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/help-fact-temp.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/help-fact-temp.page	(revision 18277)
@@ -0,0 +1,19 @@
+FACT
+|<h4>Relative camera temperature</h4>
+The difference between the average temperatur in the sensor compartment
+and the outside temperature as measured by the MAGIC weather station
+is displayed if both value are available.
+
+Currently, no color codes are applied. A green background just means
+that a valid number is displayed, <I>i.e.</I> that the camera is
+switched on because values were recived from the slow control
+board and values are received from the MAGIC weather station.
+
+The backround colors have the following meaning:
+<ul class='help'>
+<li>Relative camera temperature as usual</li>
+<li>Relative camera temperature above 5&deg;C</li>
+<li>Relative camera temperature abive 8&deg;C</li>
+</ul>
+
+|
Index: branches/testFACT++branch/www/smartfact/struct/help-fact-weather.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/help-fact-weather.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/help-fact-weather.page	(revision 18277)
@@ -0,0 +1,13 @@
+FACT
+|<h4>Humidity / Wind</h4>
+If the dim network is online and magicweather is in state Receiving and
+at least one report has been received since smartfact was started,
+the current humidity and a measure for the wind gusts from the
+MAGIC weather station are displayed.
+
+<ul class='help'>
+<li>Wind gusts below 35km/h and humidity below 95%</li>
+<li>Wind gusts larger than 35km/h or humidity larger than 95%</li>
+<li>Wind gusts larger than 50km/h or humidity larger than 98%</li>
+</ul>
+|
Index: branches/testFACT++branch/www/smartfact/struct/help-fact.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/help-fact.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/help-fact.page	(revision 18277)
@@ -0,0 +1,16 @@
+FACT
+|<H4>General help about SmartFACT++</h4>||help-main
+||
+|System status||help-fact-status
+|Drive||help-fact-drive
+|Relative camera temperature||help-fact-temp
+|Humidity / Wind||help-fact-weather
+|Trigger rate||help-fact-rate
+|G-APD (med/max)||help-fact-bias
+|<h4>Event display</h4>
+The camera display shows one of the last events sent by the fadctrl. 
+To avoid biases in the display by the time marker channels, they
+are replaced with the closest neighbor from the same patch.
+The extracted value corresponds
+to the maximum entry found in the region-of-interest.
+|
Index: branches/testFACT++branch/www/smartfact/struct/help-histogram.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/help-histogram.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/help-histogram.page	(revision 18277)
@@ -0,0 +1,14 @@
+Histogram
+|image=fact-histogram.png|
+|<h4>min / med /max</h4>
+The minimum, median and maximum value of all values displayed in the histogram.
+|
+|<h4>Scale</h4>
+The scale of the displayed coordinate system. Note that the x-axis is
+defined by the writer and the points are always equidistant in x, even
+they might not be equidistant at all.
+|
+|<h4>Data</h4>
+The data as reloaded from the server. Note that the data is quantized
+into seven bit. Hence, the resolution is limited to 128 steps.
+|
Index: branches/testFACT++branch/www/smartfact/struct/help-introduction.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/help-introduction.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/help-introduction.page	(revision 18277)
@@ -0,0 +1,32 @@
+Introduction
+|
+The idea of SmartFACT++ is simple. A backend (<I>smartfact</I>) updates some
+data-files continously which can then be retrieved from a web-server
+and the data is displayed in your browser. To keep the network traffic
+low the data is not encapsulated in html, but transmitted <I>as is</I>.
+A JavaScript, running client side, <I>i.e.</I> on the machine running
+the browser is then creating the html around it dynamically which is then
+displayed by the browser. The backend writing the data-files can be basically
+everything. In case of FACT it is a program called <I>smartfact</I> which
+subscribes to all dim-services in the dim-network which are needed.
+Whenever a service is updated, the corresponding files are also updated.
+The disadvantage is that it is difficult to mix information which is 
+not updated together in a single file and display it on a single page.
+This, <I>e.g.</I>, means that a file which is only updated every two 
+hours (because new information is only available every two hours) cannot
+reasonably store information which can change every minute, <I>e.g.</I>
+general warnings. Every page is restricted to reload a single file, to 
+keep network traffic low. A simple solution would be a php which concatenates 
+information before the information is transfered, but this is (not yet?)
+available. Consequently, all pages which are not updated frequently or
+are guranteed to be updated frequently will not show fats updateing
+information as warning. Some pages, <I>e.g.</I>, the main page are
+updated once every seconcd or few seconds rather than updated
+event-driven by the reception of a new service. These pages will then
+show informations like the current warning status of the system.
+
+The page description is reloaded whenver a page has been clicked to
+avoid a lot of network traffic at startup. The disadvantage is a little
+network traffic (in the order of a few hundred bytes) whenever a page
+is changed.
+|
Index: branches/testFACT++branch/www/smartfact/struct/help-layout.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/help-layout.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/help-layout.page	(revision 18277)
@@ -0,0 +1,37 @@
+Layout
+|<h4>Home</h4>
+Links from all other pages (except the home page itself) to the home page
+|
+|<h4>Watchdog</h4>
+The two dots on the left and the right of the title change their color
+with every retrieved data or graphics file, respectively. This is a way
+to find out if the continous retrieval is still in progress.
+|
+|<h4>Time stamp of displayed data</h4>
+Each data file which is loaded from the server comes with a time-stamp.
+This time-stamp is displayed here. This allows for example to find out
+whether the values are still valid or just the last values produced by the
+system hours ago. If this time-stamp is older than sixty seconds,
+the time is displayed in red color.
+|
+|image=fact-inactive.png|
+|<h4>Link to help page</h4>
+Links to a page giving information about the data currently displayed,
+<i>e.g.</i> meaning of background colors, etc.
+|
+|<h4>Link to control page</h4>
+A direct link to the control page from which actions can be initiated.
+|
+#|<h4>Title</h4>
+#|
+|<h4>Stop script</h4>
+If this button is pressed a STOP is sent to the script control and the script
+should be terminated. On pages which are updated regularly, the color
+shows if a script is running (green) or not (red). When the 
+button is displayed uncolored, the data is in general not updated often enough
+to deliver up-to-date information.
+|
+|<h4>Current UTC</h4>
+The current UTC time is displayed. If this does not happen anymore there
+is a problem with the JavaScript. This is a bug and should never happen.
+|
Index: branches/testFACT++branch/www/smartfact/struct/help-main.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/help-main.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/help-main.page	(revision 18277)
@@ -0,0 +1,16 @@
+SmartFACT++
+|<H4>General help</H4>||
+|The basic idea - how does it work?||help-introduction
+|Page layout (displayed elements)||help-layout
+|The camera display||help-camera
+|The histogram display||help-histogram
+|Network traffic and refresh||help-traffic
+|URL options||help-url
+|Sounds||help-sounds
+|File syntax||help-syntax
+||
+||
+#|<h4>Help for main page</h4>||help-main
+|<H4>About</H4>||help-about
+||
+|Please report bugs or problems to <A href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</A>|
Index: branches/testFACT++branch/www/smartfact/struct/help-sounds.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/help-sounds.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/help-sounds.page	(revision 18277)
@@ -0,0 +1,87 @@
+Sounds
+|
+Sounds have to be explicitly switched on in the URL, <i>e.g.</I>
+
+<pre>
+http://[url]/?sound
+</pre>
+
+Sounds will only be available on pages with regular updates, which are
+the main page and the status page. If sounds are not available,
+a stroke out speaker is displayed.
+
+Note that these pages are only reloaded once in a few seconds. If more
+than one sound is to be played during that time only the last sound
+will be played, <I>i.e.</I> that in special circumstances some sounds
+might be missed.
+
+In the following examples of all available sounds are listed.
+|
+|<h4>Startup</h4>
+<audio controls id="audio">
+  <source type="audio/mp3" src="audio/startup.mp3"/>
+  <source type="audio/ogg" src="audio/startup.ogg"/>
+</audio><br/>
+This sound is played whenever the control-program of the slow control board
+(fscctrl) gets contact to the hardware. This is usually the case when
+the camera is switched on.
+|
+|<h4>Shutdown</h4>
+<audio controls id="audio">
+  <source type="audio/mp3" src="audio/shutdown.mp3"/>
+  <source type="audio/ogg" src="audio/shutdown.ogg"/>
+</audio><br/>
+This sound is played whenever the control-program of the slow control board
+(fscctrl) looses contact with the hardware. This is usually the case when
+the camera is switched off.
+|
+|<h4>Error</h4>
+<audio controls id="audio">
+  <source type="audio/mp3" src="audio/error.mp3"/>
+  <source type="audio/ogg" src="audio/error.ogg"/>
+</audio><br/>
+If a severe error happens, this sounds is displayed. Until the error
+remains, a warning symbol is also displayed in the upper left corner 
+and links to current error messages. A history of erros is accessible
+from the status page via the Smartfact entry.
+|
+|<h4>Script ends</h4>
+<audio controls id="audio">
+  <source type="audio/mp3" src="audio/ding.mp3"/>
+  <source type="audio/ogg" src="audio/ding.ogg"/>
+</audio><br/>
+A ding is played if a script has ended or been stopped.
+|
+|<h4>Manual run ends</h4>
+<audio controls id="audio">
+  <source type="audio/mp3" src="audio/dong.mp3"/>
+  <source type="audio/ogg" src="audio/dong.ogg"/>
+</audio><br/>
+If a run has been started manually, <I>i.e.</i> no script is running
+at the same time, a ding is played when the run end or to be more
+precise when the Master Control Program (MCP) changed its state
+from TakingData to Idle which happens when the data acquisition (fadctrl)
+leaves its state WritingData.
+|
+|<h4>Automatic run ends</h4>
+<audio controls id="audio">
+  <source type="audio/mp3" src="audio/losticks.mp3"/>
+  <source type="audio/ogg" src="audio/losticks.ogg"/>
+</audio><br/>
+For this tick-sound the same conditions apply than for the previous sound
+except that it is played when a script is executed while the run ends.
+The same sound is played whenever a run is started, <i>i.e.</I> the Master
+Control Program (MCP) changed its state from TriggerOn to TakingData
+which happens when the first even has been received and the data 
+acquisition (fadctrl) changed its state to WritingData.
+
+|
+|<h4>Message</h4>
+<audio controls id="audio">
+  <source type="audio/mp3" src="audio/message.mp3"/>
+  <source type="audio/ogg" src="audio/message.ogg"/>
+</audio><br/>
+This sound will be played if a new message is distributed by the chat-server.
+The chatlog and the possibility to send messages is available from the
+Chat Server entry in the status page.
+|
Index: branches/testFACT++branch/www/smartfact/struct/help-syntax.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/help-syntax.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/help-syntax.page	(revision 18277)
@@ -0,0 +1,60 @@
+Syntax
+|
+To write your own page you need to understand the syntax of the files.
+The first line in the file is the title. It is just the title
+displayed. If the first character is an asterix (*) then the page is
+considered a page which is intented for script submission (<I>control
+page</I>). If the page name starts with <B>help-</B>, the page is
+considered a help page and the help symbol is inactive. If the page is
+a control page, the submitted script with have the name of the page
+without extension,  with the extension <B>.dim</B>, <I>e.g.</I>
+if the page name is <I>mypage.page</I> the submitted scripts
+name is <I>mypage.dim</I>.
+
+Each following line of the file describes a row in the table and is
+split by pipes (&#124;). To use a pipe in a line you have to 
+write &#38;#124;. Lines which containes less than two pipes are
+concatenated until the number of pipes in one line is at least two. So
+the description of one row can look like
+
+<pre>
+leftlink&#124;Description&#124;format&#124;rightlink
+</pre>
+
+but also
+
+<pre>
+leftlink&#124;<br/>
+Description<br/>
+&#124;format&#124;rightlink
+</pre>
+
+If <I>leftlink</I> is available, a left arrow is displayed on the left
+and the row will link to page called <I>leftlink.page</I>. The same for
+<I>rightlink</i>, just that a right arrow is displayed on the right instead.
+Both are mutually exclusive, and can also be omotted.
+
+The <I>Description</I> is just a text which appears on the left side of
+the row in bold-face. if the format is omitted, it will fill the full
+width of the table and be displayed in normal-face. Consequently, a
+simple text entry could look like:
+
+<pre>
+&#124;<br/>
+This is my simple text entry.&lt;br/&gt;<br/>
+We can have more lines...
+
+...and even a paragraph-break.&lt;br/&gt;<br/>
+&#124;
+</pre>
+
+Every line starting with a # is ignored.
+
+The description can also have special contents (see below).
+
+If the help is not a help-page, a data file is loaded and its data is
+displayed on the right of each row according the format given.
+|
+|Special tag descriptions||help-description
+|Data file and data file format||help-datafile
+|Binary file format||help-binaryfile
Index: branches/testFACT++branch/www/smartfact/struct/help-traffic.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/help-traffic.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/help-traffic.page	(revision 18277)
@@ -0,0 +1,36 @@
+Network traffic
+|
+This interface is optimized for slow network connection and low network
+traffic. It is not advisable to reload the pages manually because you
+would just reload the JavaScript. The traffic should be <B>less than
+1kB/s</B> and hence suitable also for mobile connections. The layout is
+optimized for small windows and mobile phones. 
+
+The data displayed is refreshed once every three seconds, <I>i.e.</I>
+the file is reloaded from the server. The graphics display is refreshed
+once every five seconds. A new refresh is only started if the old one
+has been finished, either successfully for with an error or timeout,
+<I>i.e.</I> that slow or faulty network connection can significanly
+increase the refresh time. Whenever a refresh was performed, the color
+of the dots around the title is changed (one for the data and one for
+the graphics) to indicate that the JavaScript is still running and
+requesting data from the server. Also the time stamp at the footer is
+updated. The time-stamp of the retrieved data is displayed at the top.
+If no updated could be performed within sixty seconds or the data is
+older than sixty seconds the time stamp is displayed in red. If the
+time-stamp of the graphics is older than sixty seconds the graphics is
+grayed.
+
+In case of errors or broken connections, the time interval for
+retrieval is  increased to ten seconds, and decreased again if valid
+data was received.
+
+The timer is not newly started if a new page is loaded, hence, it might
+take a few seconds before the values will be displayed. 
+
+The typical size of a camera display is about 350 bytes, the typical
+size of the ascii data is about 100 bytes. Adding the HTML header
+which is in the order of 200 bytes, this yields an average transmission
+rate of aprroximately 200 bytes per second. This is less than one
+mega-byte in one hour, plus the data loaded for each page switch.
+|
Index: branches/testFACT++branch/www/smartfact/struct/help-url.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/help-url.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/help-url.page	(revision 18277)
@@ -0,0 +1,54 @@
+URL
+|
+The url you specify when calling SmartFACT++ can contain links to the
+page you intend to view first, but also special arguments for steering
+the display, <I>e.g.</I>
+
+<pre>
+http://[url]/?w=320&h=200#status
+</pre>
+
+Would open the status page (status.page) and display the content
+with a fixed size of 320x200. Both, width and height, can be omitted.
+
+Also possible
+
+<pre>
+http://[url]/?max
+</pre>
+
+Usually the graphic is adapted to fit into the viewport (the size of
+your browser window). This option instructs SmartFACT++ to display the 
+graphics always quadratically and with the full width, <I>i.e.</I> it
+might range outside of your window on the bottom of your page and a scroll
+bas would be displayed.
+
+Since SmartFACT++ is also meant for mobile devices, some compromises had
+to be made. One is that modern HTML5 techniques could not be applied to
+the fullest. If your browser has problems with switching pages, you
+can turn off the sliding effect by:
+
+<pre>
+http://[url]/?noslide
+</pre>
+
+On pages which are regularly updated, <i>i.e.</i> the main page and
+the status page, sound output for certain circumstances can be enabled
+with the sound option:
+
+<pre>
+http://[url]/?sound
+</pre>
+
+All of the options can be combined as long as they make sense, <i>e.g.</i>
+
+<pre>
+http://[url]/?noslide&sound
+</pre>
+
+In all examples above the url would usually be
+
+<pre>
+www.fact-project.org/smartfact
+</pre>
+|
Index: branches/testFACT++branch/www/smartfact/struct/hum.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/hum.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/hum.page	(revision 18277)
@@ -0,0 +1,6 @@
+Humidity
+weather|Current|$0%|
+weather|Minimum|$0%|
+weather|Average|$0%|
+weather|Maximum|$0%|
+|hist=hist-magicweather-hum.bin/%|
Index: branches/testFACT++branch/www/smartfact/struct/moon.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/moon.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/moon.page	(revision 18277)
@@ -0,0 +1,14 @@
+Moon
+|Rise|$0|
+|Culmination|$0|
+|Set|$0|
+||
+|Disk|$0|
+|Position|$0&deg; $1|
+||
+|Current prediction||current-prediction
+|<h4>Source distance to moon</h4>|
+||<table class='astro'>$0</table>|
+|Request time|$0|
+||
+|<h4>Sun</h4>||sun
Index: branches/testFACT++branch/www/smartfact/struct/observations.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/observations.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/observations.page	(revision 18277)
@@ -0,0 +1,2 @@
+Observations
+||$0|
Index: branches/testFACT++branch/www/smartfact/struct/patchrates.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/patchrates.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/patchrates.page	(revision 18277)
@@ -0,0 +1,6 @@
+Patch rates
+trigger|Min. patch rate|$0 Hz|
+trigger|Med. patch rate|$0 Hz|
+trigger|Avg. patch rate|$0 Hz|
+trigger|Max. patch rate|$0 Hz|
+|camera=cam-ftmcontrol-patchrates.bin/ Hz|
Index: branches/testFACT++branch/www/smartfact/struct/pointing.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/pointing.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/pointing.page	(revision 18277)
@@ -0,0 +1,4 @@
+Pointing
+|<h4>Last known pointing position</h4>|
+tracking|Azimuth|$0&deg; [$1]|
+tracking|Zenith distance|$0&deg;|
Index: branches/testFACT++branch/www/smartfact/struct/press.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/press.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/press.page	(revision 18277)
@@ -0,0 +1,6 @@
+Pressure
+weather|Current|$0 hPa|
+weather|Minimum|$0 hPa|
+weather|Average|$0 hPa|
+weather|Maximum|$0 hPa|
+|hist=hist-magicweather-press.bin/ hPa|
Index: branches/testFACT++branch/www/smartfact/struct/ratescan-board.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/ratescan-board.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/ratescan-board.page	(revision 18277)
@@ -0,0 +1,4 @@
+Ratescan Board
+ratescan|Board ID|$0|
+ratescan|Rate|$0 Hz|
+|hist=hist-ratescan-board.bin/e|
Index: branches/testFACT++branch/www/smartfact/struct/ratescan.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/ratescan.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/ratescan.page	(revision 18277)
@@ -0,0 +1,6 @@
+Ratescan
+status|Median board threshold|$0|
+status|Median patch threshold|$0|
+status|Camera rate|$0 Hz
+|Max board rate|$0 Hz|ratescan-board
+|hist=hist-ratescan.bin/e|
Index: branches/testFACT++branch/www/smartfact/struct/scriptlog.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/scriptlog.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/scriptlog.page	(revision 18277)
@@ -0,0 +1,3 @@
+Scriptlog
+|<font color='darkred' size='-1'><B>This page might create network traffic as high as 3kB/s</B></font>|
+||$0|
Index: branches/testFACT++branch/www/smartfact/struct/source-list.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/source-list.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/source-list.page	(revision 18277)
@@ -0,0 +1,6 @@
+Sources
+|Source visibility||visibility
+||
+|<h4>Source positions (Zd / Az)</h4>|
+tracking||<table class='astro'>$0</table>|
+|Request time|$0|
Index: branches/testFACT++branch/www/smartfact/struct/source.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/source.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/source.page	(revision 18277)
@@ -0,0 +1,6 @@
+Source
+tracking|Source Name|$0
+tracking|Right ascension|$0 h
+tracking|Declination|$0&deg;
+tracking|Wobble offset|$0&deg;
+tracking|Wobble angle|$0&deg;
Index: branches/testFACT++branch/www/smartfact/struct/sqm.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/sqm.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/sqm.page	(revision 18277)
@@ -0,0 +1,6 @@
+SQM status
+status|Magnitude|$0|
+status|Sensor freq.|$0Hz|
+status|Sensor period|$0|
+status|Sensor period|$0s|
+status|Sensor temp|$0&deg;C|
Index: branches/testFACT++branch/www/smartfact/struct/status.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/status.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/status.page	(revision 18277)
@@ -0,0 +1,30 @@
+System status
+|DIM|$0|
+|Dim Control|$0|scriptlog
+|MCP|$0|observations
+|Datalogger|$0|
+|Drive control|$0|
+|Drive PC time check|$0|
+|FAD control|$0|fad
+|FTM control|$0|ftm
+|Bias control|$0|
+|Feedback|$0|
+|Rate control|$0|
+|FSC control|$0|
+|GPS control|$0|gps
+|SQM control|$0|sqm
+|Agilent control (24V)|$0|agilent24
+|Agilent control (50V)|$0|agilent50
+|Agilent control (80V)|$0|agilent80
+|Power control|$0|
+|Lid control|$0|
+|Ratescan|$0|ratescan
+|Magic Weather|$0|
+|TNG Weather|$0|
+|Magic Lidar|$0|
+|Temperature|$0|temperature
+|Chat server|$0|chat
+|Skype client|$0|
+|Free disk space|$0|
+|Smartfact runtime|$0|errorhist
+
Index: branches/testFACT++branch/www/smartfact/struct/sun.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/sun.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/sun.page	(revision 18277)
@@ -0,0 +1,14 @@
+Sun
+|<h4>Sun rise</h4>|
+|End of dark time|$0|
+|End of astron. twilight|$0|
+|End of nautical twilight|$0|
+|Start of day-time|$0|
+||
+|<h4>Sun set</h4>|
+|End of day-time|$0|
+|Start of nautical twilight|$0|
+|Start of astron. twilight|$0|
+|Start of dark time|$0|
+||
+|<h4>Moon</h4>||moon
Index: branches/testFACT++branch/www/smartfact/struct/temp.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/temp.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/temp.page	(revision 18277)
@@ -0,0 +1,6 @@
+Temperature
+weather|Current|$0&deg;C|
+weather|Minimum|$0&deg;C|
+weather|Average|$0&deg;C|
+weather|Maximum|$0&deg;C|
+|hist=hist-magicweather-temp.bin/&deg;C|
Index: branches/testFACT++branch/www/smartfact/struct/temperature.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/temperature.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/temperature.page	(revision 18277)
@@ -0,0 +1,5 @@
+Container Temp
+status|24h Minimum|$0&deg;C|
+status|Current temp|$0&deg;C|
+status|24h Maximum|$0&deg;C|
+|hist=hist-temperaturecontrol.bin/&deg;C|
Index: branches/testFACT++branch/www/smartfact/struct/thresholds-board.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/thresholds-board.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/thresholds-board.page	(revision 18277)
@@ -0,0 +1,5 @@
+Board thresholds
+thresholds|Min. board threshold|$0|
+thresholds|Med. board threshold|$0|
+thresholds|Max. board threshold|$0|
+|camera=cam-ftmcontrol-thresholds-board.bin|
Index: branches/testFACT++branch/www/smartfact/struct/thresholds-patch.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/thresholds-patch.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/thresholds-patch.page	(revision 18277)
@@ -0,0 +1,5 @@
+Patch thresholds
+thresholds|Min. patch threshold|$0|
+thresholds|Med. patch threshold|$0|
+thresholds|Max. patch threshold|$0|
+|camera=cam-ftmcontrol-thresholds-patch.bin|
Index: branches/testFACT++branch/www/smartfact/struct/thresholds.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/thresholds.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/thresholds.page	(revision 18277)
@@ -0,0 +1,4 @@
+Thresholds
+|Med. board threshold|$0|thresholds-board
+|Med. patch threshold|$0|thresholds-patch
+|hist=hist-ratecontrol-threshold.bin|
Index: branches/testFACT++branch/www/smartfact/struct/tngdust.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/tngdust.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/tngdust.page	(revision 18277)
@@ -0,0 +1,2 @@
+Dust (TNG)
+|hist=hist-tng-dust.bin/ &micro;g/m&sup3;|
Index: branches/testFACT++branch/www/smartfact/struct/tracking.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/tracking.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/tracking.page	(revision 18277)
@@ -0,0 +1,13 @@
+Tracking
+|Source list||source-list
+|Source visbility||visibility
+||
+|<h4>Last known tracking position</h4>|
+|Source Name|$0|source
+fact|Right ascension|$0 h
+fact|Declination|$0&deg;
+|Zenith distance|$0&deg;|pointing
+|Azimuth|$0&deg;|pointing
+fact|Control deviation|$0"
+fact|Distance to moon|$0&deg;
+|hist=hist-control-deviation.bin/"|
Index: branches/testFACT++branch/www/smartfact/struct/trigger.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/trigger.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/trigger.page	(revision 18277)
@@ -0,0 +1,6 @@
+Trigger
+|Thresholds||thresholds
+fact|Current trigger rate|$0 Hz
+|Board rates (min/med/max)|$0 Hz / $1 Hz / $2 Hz|boardrates
+|Patch rates (min/med/max)|$0 Hz / $1 Hz / $2 Hz|patchrates
+|hist=hist-ftmcontrol-triggerrate.bin/ Hz|
Index: branches/testFACT++branch/www/smartfact/struct/visibility.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/visibility.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/visibility.page	(revision 18277)
@@ -0,0 +1,6 @@
+Visibility
+|Source list||source-list
+||
+|<h4>Order of culmination (Zd)</h4>||
+||<span class='sources'>$0</span>|
+|hist=hist-visibility.bin/&deg;|
Index: branches/testFACT++branch/www/smartfact/struct/voltage.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/voltage.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/voltage.page	(revision 18277)
@@ -0,0 +1,6 @@
+Voltage
+bias|Min. voltage|$0 V|
+bias|Med. voltage|$0 V|
+bias|Avg. voltage|$0 V|
+bias|Max. voltage|$0 V|
+|camera=cam-biascontrol-voltage.bin/ V|
Index: branches/testFACT++branch/www/smartfact/struct/weather.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/weather.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/weather.page	(revision 18277)
@@ -0,0 +1,12 @@
+Weather
+|Sun|$0|sun
+|Moon|$0|moon
+|Temperature|$0&deg;C|temp
+|Dew point|$0&deg;C|dew
+|Humidity|$0%|hum
+|Pressure|$0 hPa|press
+|Wind speed|$0 km/h|wind
+|Wind gusts|$0 km/h|gusts
+|Wind direction|$0
+|Dust (TNG)|$0 &micro;g/m&sup3; [$1]|tngdust
+
Index: branches/testFACT++branch/www/smartfact/struct/wind.page
===================================================================
--- branches/testFACT++branch/www/smartfact/struct/wind.page	(revision 18277)
+++ branches/testFACT++branch/www/smartfact/struct/wind.page	(revision 18277)
@@ -0,0 +1,6 @@
+Wind speed
+weather|Current|$0 km/h|
+weather|Minimum|$0 km/h|
+weather|Average|$0 km/h|
+weather|Maximum|$0 km/h|
+|hist=hist-magicweather-wind.bin|
Index: branches/testFACT++branch/www/viewer/index.css
===================================================================
--- branches/testFACT++branch/www/viewer/index.css	(revision 18277)
+++ branches/testFACT++branch/www/viewer/index.css	(revision 18277)
@@ -0,0 +1,61 @@
+.CodeMirror { border: 0; font-size:9pt; }
+
+.cm-s-fact.CodeMirror { background: #000000; color: /*#F8F8F8*/ lightgrey; font-weight:bold; }
+.cm-s-fact .CodeMirror-selected { background: #253B76 !important; }
+.cm-s-fact .CodeMirror-gutters { background: #0C1021; border-right: 0; }
+.cm-s-fact .CodeMirror-linenumber { color: #888; }
+.cm-s-fact .CodeMirror-cursor { border-left: 1px solid #C7C7C7 !important; }
+
+.cm-s-fact .cm-keyword { color: #F8F8F8 /*#FBDE2D*/; } /* new, var, for, if, return */
+.cm-s-fact .cm-atom { color: #C8C8C8; }    /* null */
+.cm-s-fact .cm-number { color: /*red*/ #D8FA3C; }  /* 0, 1, 2, 3, ... */
+
+.cm-s-fact .cm-variable { color: #FFEA80; }  /* global variables */
+.cm-s-fact .cm-variable-2 { color:#FFB450; } /* local variables */
+.cm-s-fact .cm-property { color: #FF6400; }  /* properties */
+
+.cm-s-fact .cm-operator { color: lightblue;/*blueviolet*/ #FBDE2D;}
+.cm-s-fact .cm-comment { color: olive/*#5EAE5E*/; }
+.cm-s-fact .cm-string { color: #61CE3C; }
+.cm-s-fact .cm-string-2 { color: #61CE3C; }
+
+.cm-s-fact .CodeMirror-activeline-background {background: #252020 !important;}
+.cm-s-fact .CodeMirror-matchingbracket {color:red !important; font-weight:bold !important;}
+
+.CodeMirror-focused .cm-matchhighlight
+{
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAFklEQVQI12NgYGBgkKzc8x9CMDAwAAAmhwSbidEoSQAAAABJRU5ErkJggg==);
+    background-position: bottom;
+    background-repeat: repeat-x;
+}
+
+/* From FTE:
+   keyword:   white
+   atom:      grey
+   variable:  grey
+   number:    red
+   operator:  dark cyan
+   comment:   military green
+   string:    yellow
+   brackets:  dark cyan
+*/
+
+.myaccordion .ui-accordion-header
+{
+    background-color: #ccc;  
+    margin: 0px;
+    font-size:10pt;
+    padding-left: 25px;
+    padding-right: 25px;
+    padding-top: 0px;
+    padding-bottom: 0px;
+}
+
+.myaccordion .ui-accordion-content
+{
+    color: #000;
+    font-size: 10pt; 
+    padding-top: 1ex;
+    padding-bottom: 1em;
+    padding-left: 2ex;
+}
Index: branches/testFACT++branch/www/viewer/index.html
===================================================================
--- branches/testFACT++branch/www/viewer/index.html	(revision 18277)
+++ branches/testFACT++branch/www/viewer/index.html	(revision 18277)
@@ -0,0 +1,647 @@
+<!DOCTYLE HTML>
+<html>
+<head>
+    <link rel="stylesheet" href="jquery-ui-1.10.4.custom/css/smoothness/jquery-ui-1.10.4.custom.min.css"/>
+    <script src="jquery-2.1.0.min.js"></script>
+    <script src="jquery-ui-1.10.4.custom/js/jquery-ui-1.10.4.custom.min.js"></script>
+    
+    <link rel="stylesheet" href="codemirror-4.1/lib/codemirror.css"/>
+    <!--<link rel="stylesheet" href="codemirror-4.1/theme/myblackboard.css"/>-->
+    <!--<link rel="stylesheet" href="codemirror-4.1/theme/blackboard.css">-->
+    <!--<link rel="stylesheet" href="codemirror-4.1/theme/3024-night.css">-->
+    <link rel="stylesheet" href="codemirror-4.1/addon/display/fullscreen.css"/>
+    <link rel="stylesheet" href="codemirror-4.1/addon/dialog/dialog.css"/>
+    <link rel="stylesheet" href="codemirror-4.1/addon/fold/foldgutter.css"/>
+    <link rel="stylesheet" href="codemirror-4.1/addon/lint/lint.css"/>
+    <script src="codemirror-4.1.min.js"></script>
+    <!--
+    <script src="codemirror-4.1/lib/codemirror.js"></script>
+    <script src="codemirror-4.1/mode/javascript/javascript.js"></script>
+    <script src="codemirror-4.1/addon/selection/active-line.js"></script>
+    <script src="codemirror-4.1/addon/fold/brace-fold.js"></script>
+    <script src="codemirror-4.1/addon/runmode/colorize.js"></script>
+    <script src="codemirror-4.1/addon/fold/comment-fold.js"></script>
+    <script src="codemirror-4.1/addon/dialog/dialog.js"></script>
+    <script src="codemirror-4.1/addon/fold/foldcode.js"></script>
+    <script src="codemirror-4.1/addon/fold/foldgutter.js"></script>
+    <script src="codemirror-4.1/addon/display/fullscreen.js"></script>
+    <script src="codemirror-4.1/addon/hint/javascript-hint.js"></script>
+    <script src="codemirror-4.1/addon/lint/lint.js"></script>
+    <script src="codemirror-4.1/addon/lint/javascript-lint.js"></script>
+    <script src="codemirror-4.1/addon/search/match-highlighter.js"></script>
+    <script src="codemirror-4.1/addon/edit/matchbrackets.js"></script>
+    <script src="codemirror-4.1/addon/runmode/runmode.js"></script>
+    <script src="codemirror-4.1/addon/search/search.js"></script>
+    <script src="codemirror-4.1/addon/search/searchcursor.js"></script>
+    <script src="codemirror-4.1/addon/hint/show-hint.js"></script>
+    -->
+    <script src="flot-0.8.3/jquery.flot.min.js"></script>
+    <script src="flot-0.8.3/jquery.flot.selection.min.js"></script>
+    <script src="flot-0.8.3/jquery.flot.symbol.min.js"></script>
+    <script src="flot-0.8.3/jquery.flot.resize.js"></script>
+    <script src="jshint.js"></script>
+    <script src="index.js"></script>
+
+    <link rel="stylesheet" href="index.css"/>
+</head>
+
+<body>
+
+<div id='tooltip' style="z-index:1000;position:absolute;display:none;border:1px solid #fdd;padding;2px;background-color:#fee;opacity:0.8"></div>
+
+<div class="myaccordion" id="accordion5">
+   <h3><a href="#">Editor 1 (proc)</a></h3>
+   <div id="editorcontainer1fake" style="position:absolute;border:0;opacity:0"></div>
+</div>
+<div id="editorcontainer1" style="z-index:600;">
+   <form action="index.php" method="post" style="margin-bottom:0px">
+      <div id="textcontainer1">
+         <textarea id="editor1" name="editor1" type="textarea">
+return $.data[pixel];
+         </textarea>
+      </div>
+      <div class="ui-widget-content" style="background:#333;color:#eef;border-top-width:0;padding-top:2px;">
+         <input type="submit" value="Save"></input>
+         <input type="file" name="files[]" id="selectfile1"></input><output id="file1"></output>
+      </div>
+    </form>
+</div>
+
+<div class="myaccordion" id="accordion1">
+   <h3><a href="#">Editor 2 (main)</a></h3>
+   <div id="editorcontainer2fake" style="position:absolute;border:0;opacity:0"></div>
+</div>
+<div id="editorcontainer2">
+   <form action="index.php" method="post" style="margin-bottom:0px">
+      <div id="textcontainer2"> 
+         <textarea id="editor2" name="editor2" type="textarea">
+print("This output will go to the virtual Console.\n");
+
+// The four first values of pixel 1
+var arr = [ $.data[1][0], $.data[1][1], $.data[1][2], $.data[1][3] ];
+print("Pixel 1: [ "+arr+" ]\n");
+
+// Get the maximum sample from each pixel
+var rc = [new Array(1440),new Array(1440)];
+for (var p=0; p<$.event.numPix; p++)
+{
+    var max =  0;
+    var idx = -1;
+    for (var s=5; s<$.event.numRoi-60; s++)
+    {
+        // spike suppression
+        var h = ($.data[p][s]-$.data[p][s-1]) + ($.data[p][s]-$.data[p][s+1]);
+
+        if ($.data[p][s]>max && h<20)
+        {
+            max = $.data[p][s];
+            idx = s;
+        }
+    }
+    rc[0][p]=idx<0 ? null : max;
+    rc[1][p]=idx<0 ? null : idx;
+}
+
+return rc;
+         </textarea>
+      </div>
+      <div class="ui-widget-content" style="background:#333;color:white;border-top-width:0;padding-top:2px;">
+         <input type="submit" value="Save"></input>
+         <input type="file" name="files[]" id="selectfile2"></input><output id="file2"></output>
+      </div>
+   </form>
+</div>
+
+<div class="myaccordion" id="accordion" style="margin-bottom:1ex">
+   <h3><a  style="color:red" href="#">Runtime error</a></h3>
+   <div>
+      <pre id="error" style="color:red"></pre>
+   </div>
+   <h3><a href="#">Console</a></h3>
+   <div>
+      <pre style="color:green" id="console"></pre>
+   </div>
+   <h3><a href="#">Run info</a></h3>
+   <div>
+      <pre id="runinfo"></pre>
+   </div>
+   <h3><a href="#">Debug</a></h3>
+   <div id="debug">
+   </div>
+</div>
+
+<div class="ui-widget-content" style="background:#eee;margin-top:-10px">
+   <input id="submit"  type="button" onclick="onSubmit();" value="Submit"></input>
+   <span style="float:right;white-space:nowrap;">
+      <span id="txtmontecarlo" style="color:darkgrey;">MC</span>
+      <input id="montecarlo" style="margin-left:0px;margin-right:5px;" type="checkbox" onclick="onSubmit();" disabled="true"></input>
+      <span id="txtdrsfile">DRS</span>
+      <input id="drsfile" style="margin-left:0px;margin-right:5px;" type="checkbox" onclick="onSubmit();"></input>
+      <span id="txtcalibrated">Cal</span>
+      <input id="calibrated" style="margin-left:0px;margin-right:5px;" type="checkbox" onclick="onSubmit();"></input>
+      Run 
+      <input id="file" style="width:100px"></input>
+   </span>
+   &nbsp;
+   <span style="white-space:nowrap">
+      Evt 
+      <input id="event" style="text-align:right;" type="number" onchange="onEvent();"  value="0" min="0" max="0"    step="1"></input>/<span id="numevents">---</span>
+   </span>
+   &nbsp;
+   <span style="white-space:nowrap">
+      Pix 
+      <input id="pixel" style="text-align:right;width:50px;" type="number" onchange="onPixel();"  value="0" min="0" max="1439" step="1"></input>
+   </span>
+   &nbsp;
+   <span style="white-space:nowrap">
+      CBPX
+      <input id="cbpx-c" style="text-align:right;width:30px;" type="number" onchange="onCBPX();"  value="1" min="0" max="3" step="1"></input>
+      <input id="cbpx-b" style="text-align:right;width:30px;" type="number" onchange="onCBPX();"  value="0" min="0" max="9" step="1"></input>
+      <input id="cbpx-p" style="text-align:right;width:30px;" type="number" onchange="onCBPX();"  value="3" min="0" max="3" step="1"></input>
+      <input id="cbpx-x" style="text-align:right;width:30px;" type="number" onchange="onCBPX();"  value="6" min="0" max="8" step="1"></input>
+      =
+      <input id="cbpx"   style="text-align:right;width:50px;" type="number" onchange="onHW();"  value="393" min="0" max="1439" step="1"></input>
+   </span>
+</div>
+
+<div class="myaccordion" id="accordion2">
+   <h3><a href="#">Camera display</a></h3>
+</div>
+<div id="cameracontainer" class="ui-widget-content">
+   <table width="100%">
+      <colgroup>
+         <col style="width:38.5%;">
+         <col style="width:23%;">
+         <col style="width:38.5%;">
+      </colgroup>
+      <tr>
+         <td>
+            <span style="white-space:nowrap;margin-right:2px;">
+               Min 
+               <input id="cameramin1"   style="text-align:right;width:100px;" type="number"   onchange="onCameraMinMax(1);"  value="0" disabled="true"></input>
+               <input id="cameraminon1" style="margin-left:0px;" type="checkbox" onclick="onCameraMinMaxOn(1);" checked="true"></input>
+            </span>
+            <span style="white-space:nowrap">
+               Max 
+               <input id="cameramax1"   style="text-align:right;width:100px;" type="number"   onchange="onCameraMinMax(1);"  value="0" disabled="true"></input>
+               <input id="cameramaxon1" style="margin-left:0px;" type="checkbox" onclick="onCameraMinMaxOn(1);" checked="true"></input>
+            </span>
+         </td>
+         <td style="text-align:center" id="eventinfo">
+         </td>
+         <td style="text-align:right">
+            <span style="white-space:nowrap">
+               Min 
+               <input id="cameramin2"   style="text-align:right;width:100px;" type="number"   onchange="onCameraMinMax(2);"  value="0" disabled="true"></input>
+               <input id="cameraminon2" style="margin-left:0px;" type="checkbox" onclick="onCameraMinMaxOn(2);" checked="true"></input>
+            </span>
+            <span style="white-space:nowrap;margin-left:2px;">
+               Max 
+               <input id="cameramax2"   style="text-align:right;width:100px;" type="number"   onchange="onCameraMinMax(2);"  value="0" disabled="true"></input>
+               <input id="cameramaxon2" style="margin-left:0px;" type="checkbox" onclick="onCameraMinMaxOn(2);" checked="true"></input>
+            </span>
+         </td>
+         <td>
+         </td>
+      </tr>
+   </table>
+
+   <table id="table" width="100%" border="0" style="border:0;margin:0;padding:0;">
+      <tr style="margin:0;padding:0;">
+         <td style="margin:0;padding:0;">
+	    <table border="0" style="margin:0;padding:0;">
+	       <tr style="margin:0;padding:0;"><td style="margin:0;padding:0;" id="contcamera1"></tr>
+	       <tr style="margin:0;padding:0;"><td style="margin:0;padding:0;" id="contcamera3"><canvas id="camera3" width="1" height="1"></canvas></td></tr>
+            </table>
+	 </td>
+	 <td style="margin:0;padding:0;" id="centercamera"><canvas id="camera1" width="1" height="1"></canvas></td>
+	 <td style="margin:0;padding:0;">
+	    <table border="0" style="margin:0;padding:0;">
+	       <tr style="margin:0;padding:0;"><td style="margin:0;padding:0;" id="contcamera2"><canvas id="camera2" width="1" height="1"></canvas></td></tr>
+	       <tr style="margin:0;padding:0;"><td style="margin:0;padding:0;" id="contcamera4"><canvas id="camera4" width="1" height="1"></canvas></td></tr>
+	    </table>
+	 </td>
+      </tr>
+   </table>
+
+   <table width="100%">
+      <colgroup>
+         <col style="width:38.5%;">
+         <col style="width:23%;">
+         <col style="width:38.5%;">
+      </colgroup>
+      <tr>
+         <td>
+            <span style="white-space:nowrap;margin-right:2px;">
+               Min 
+               <input id="cameramin3"   style="text-align:right;width:100px;" type="number"   onchange="onCameraMinMax(3);"  value="0" disabled="true"></input>
+               <input id="cameraminon3" style="margin-left:0px;" type="checkbox" onclick="onCameraMinMaxOn(3);" checked="true"></input>
+            </span>
+            <span style="white-space:nowrap">
+               Max 
+               <input id="cameramax3"   style="text-align:right;width:100px;" type="number"   onchange="onCameraMinMax(3);"  value="0" disabled="true"></input>
+               <input id="cameramaxon3" style="margin-left:0px;" type="checkbox" onclick="onCameraMinMaxOn(3);" checked="true"></input>
+            </span>
+         </td>
+         <td style="text-align:center;">
+            <span style="white-space:nowrap;margin-left:1px;margin-right:1px;"><input id="grid"   type="checkbox" onclick="refreshCameras();" checked="true">Grid</input></span>
+            <span style="white-space:nowrap;margin-left:1px;margin-right:1px;"><input id="marker" type="checkbox" onclick="refreshCameras();" checked="true">Marker</input></span>
+            <span style="white-space:nowrap;margin-left:1px;margin-right:1px;"><input id="image"  type="checkbox" onclick="refreshCameras();">Image</input></span>
+            <!--Pixel value: 
+            <input id="value" type="text" readonly="true"  value="0" style="text-align:right;width:100px"></input>-->
+         </td>
+         <td style="text-align:right">
+            <span style="white-space:nowrap">
+               Min 
+               <input id="cameramin4"   style="text-align:right;width:100px;" type="number"   onchange="onCameraMinMax(4);"  value="0" disabled="true"></input>
+               <input id="cameraminon4" style="margin-left:0px;" type="checkbox" onclick="onCameraMinMaxOn(4);" checked="true"></input>
+            </span>
+            <span style="white-space:nowrap;margin-left:2px;">
+               Max
+               <input id="cameramax4"   style="text-align:right;width:100px;" type="number"   onchange="onCameraMinMax(4);"  value="0" disabled="true"></input>
+               <input id="cameramaxon4" style="margin-left:0px;" type="checkbox" onclick="onCameraMinMaxOn(4);" checked="true"></input>
+            </span>
+         </td>
+      </tr>
+   </table>
+</div>
+
+<div class="myaccordion" id="accordion7">
+   <h3><a href="#">Histograms</a></h3>
+</div>
+<div id="histcontainer" class="ui-widget-content">
+   <table width="100%">
+      <colgroup>
+         <col style="width:40%;">
+         <col style="width:20%;">
+         <col style="width:40%;">
+      </colgroup>
+      <tr>
+         <td>
+            <span style="white-space:nowrap;margin-right:2px;">
+               Min
+               <input id="histmin1"   style="text-align:right;width:100px;" type="number"   onchange="onHistMinMax(1);"  value="0" disabled="true"></input>
+               <input id="histminon1" style="margin-left:0px;" type="checkbox" onclick="onHistMinMaxOn(1);" checked="true"></input>
+            </span>
+            <span style="white-space:nowrap">
+               Max
+               <input id="histmax1"   style="text-align:right;width:100px;" type="number"   onchange="onHistMinMax(1);"  value="0" disabled="true"></input>
+               <input id="histmaxon1" style="margin-left:0px;" type="checkbox" onclick="onHistMinMaxOn(1);" checked="true"></input>
+            </span>
+         </td>
+         <td style="text-align:center" id="eventinfo">
+         </td>
+         <td style="text-align:right">
+            <span style="white-space:nowrap">
+               Min
+               <input id="histmin2"   style="text-align:right;width:100px;" type="number"   onchange="onHistMinMax(2);"  value="0" disabled="true"></input>
+               <input id="histminon2" style="margin-left:0px;" type="checkbox" onclick="onHistMinMaxOn(2);" checked="true"></input>
+            </span>
+            <span style="white-space:nowrap;margin-left:2px;">
+               Max
+               <input id="histmax2"   style="text-align:right;width:100px;" type="number"   onchange="onHistMinMax(2);"  value="0" disabled="true"></input>
+               <input id="histmaxon2" style="margin-left:0px;" type="checkbox" onclick="onHistMinMaxOn(2);" checked="true"></input>
+            </span>
+         </td>
+         <td>
+         </td>
+      </tr>
+   </table>
+
+   <table id="table" width="100%" border="0" style="border:0;margin:0;padding:0;">
+      <tr style="margin:0;padding:0;">
+         <td style="margin:0;padding:0;">
+	    <table border="0" style="margin:0;padding:0;">
+	       <tr style="margin:0;padding:0;"><td style="margin:0;padding:0;" id="conthist1"></tr>
+	       <tr style="margin:0;padding:0;"><td style="margin:0;padding:0;" id="conthist3"><div style="width:1px;height:1px;" id="hist3"></div></td></tr>
+            </table>
+	 </td>
+	 <td style="margin:0;padding:0;" id="centerhist"><div style="width:1px;height:1px;" id="hist1"></div></td>
+	 <td style="margin:0;padding:0;">
+	    <table border="0" style="margin:0;padding:0;">
+	       <tr style="margin:0;padding:0;"><td style="margin:0;padding:0;" id="conthist2"><div style="width:1px;height:1px;" id="hist2"></div></td></tr>
+	       <tr style="margin:0;padding:0;"><td style="margin:0;padding:0;" id="conthist4"><div style="width:1px;height:1px;" id="hist4"></div></td></tr>
+	    </table>
+	 </td>
+      </tr>
+   </table>
+
+   <table width="100%">
+      <colgroup>
+         <col style="width:50%;">
+         <col style="width:50%;">
+      </colgroup>
+      <tr>
+         <td>
+            <span style="white-space:nowrap;margin-right:2px;">
+               Min 
+               <input id="histmin3"   style="text-align:right;width:100px;" type="number"   onchange="onHistMinMax(3);"  value="0" disabled="true"></input>
+               <input id="histminon3" style="margin-left:0px;" type="checkbox" onclick="onHistMinMaxOn(3);" checked="true"></input>
+            </span>
+            <span style="white-space:nowrap">
+               Max 
+               <input id="histmax3"   style="text-align:right;width:100px;" type="number"   onchange="onHistMinMax(3);"  value="0" disabled="true"></input>
+               <input id="histmaxon3" style="margin-left:0px;" type="checkbox" onclick="onHistMinMaxOn(3);" checked="true"></input>
+            </span>
+         </td>
+         <td style="text-align:right">
+            <span style="white-space:nowrap">
+               Min
+               <input id="histmin4"   style="text-align:right;width:100px;" type="number"   onchange="onHistMinMax(4);"  value="0" disabled="true"></input>
+               <input id="histminon4" style="margin-left:0px;" type="checkbox" onclick="onHistMinMaxOn(4);" checked="true"></input>
+            </span>
+            <span style="white-space:nowrap;margin-left:2px;">
+               Max
+               <input id="histmax4"   style="text-align:right;width:100px;" type="number"   onchange="onHistMinMax(4);"  value="0" disabled="true"></input>
+               <input id="histmaxon4" style="margin-left:0px;" type="checkbox" onclick="onHistMinMaxOn(4);" checked="true"></input>
+            </span>
+         </td>
+      </tr>
+   </table>
+</div>
+
+<div class="myaccordion" id="accordion3">
+   <h3><a href="#">Waveform</a></h3>
+</div>
+<div id="waveformcontainer"  class="ui-widget-content">
+   <div id="waveform" style="width:100%;height:300px;"></div>
+   <table style="width:100%">
+      <colgroup>
+         <col style="width:33%;">
+         <col style="width:66%;">
+      </colgroup>
+      <tr>  
+         <td style="text-align:left;margin-right:2px;">
+            <span style="white-space:nowrap;float:left">
+               Xmin
+               <input id="waveformxmin"   style="width:55px;text-align:right"type="number"   onchange="onWaveformMinMax();"  value="0" disabled="true"></input>
+               <input id="waveformxminon" style="margin-left:0px;" type="checkbox" onclick="onWaveformMinMaxOn();" checked="true"></input>
+      	    </span>
+      	    <span style="white-space:nowrap;float:left">
+               Xmax
+               <input id="waveformxmax"   style="width:55px;text-align:right"type="number"   onchange="onWaveformMinMax();"  value="0" disabled="true"></input>
+               <input id="waveformxmaxon" style="margin-left:0px;" type="checkbox" onclick="onWaveformMinMaxOn();" checked="true"></input>
+      	    </span>
+     	 </td>
+         <td style="text-align:right">
+            <span style="white-space:nowrap;">
+               Ymin
+               <input id="waveformmin"   style="text-align:right"type="number"   onchange="onWaveformMinMax();"  value="0" disabled="true"></input>
+               <input id="waveformminon" style="margin-left:0px;" type="checkbox" onclick="onWaveformMinMaxOn();" checked="true"></input>
+            </span>
+            <span style="white-space:nowrap;margin-left:2px;">
+               Ymax
+               <input id="waveformmax"   style="text-align:right"type="number"   onchange="onWaveformMinMax();"  value="0" disabled="true"></input>
+               <input id="waveformmaxon" style="margin-left:0px;" type="checkbox" onclick="onWaveformMinMaxOn();" checked="true"></input>
+           </span>
+         </td>
+      </tr>
+   </table>
+</div>
+
+<div class="myaccordion" id="accordion6">
+   <h3><a href="#">Additional controls</a></h3>
+</div>
+<div id="ctrlcontainer" class="ui-widget-content">
+   <form id="controls" method="POST" style="margin-bottom:0">
+      <input id="getgeometry" type="button" onclick="onGetGeometry();" value="Get geometry"></input>
+      <input id="getcamera"   type="button" onclick="onGetCameras();" value="Get camera data"></input>
+      <input id="getwaveform" type="button" onclick="onGetWaveforms();" value="Get waveforms"></input>
+      <input id="data" name="data" type="hidden"></input>
+      <input id="name" name="name" type="hidden"></input>
+   </form>
+</div>
+
+<div class="myaccordion" id="accordion4">
+   <h3><a href="#">Help</a></h3>
+</div>
+<div id="helpcontainer" class="ui-widget-content" style="padding-left:40px;padding-right:40px;padding-bottom:40px;">
+<H1>HELP</H1>
+
+<H3>How does it work?</H3>
+When you submit a javascript to the server, it will be executed
+on a sandbox on the server. Before the event is loaded from a file
+and made available within the sandbox. Generally, the sandbox
+can easily be enhanced, e.g. with algorithms available in php.
+This can be done on request. After execution, the result returned
+by the script is then displayed in the camera display.
+
+<H3>Why Javascript?</H3>
+Simply for security reasons. To avoid tranferring the event to the client's
+browser, the script must be executed on the server side. Also Python
+and PHP offer the possibility to execute scripts within a program,
+they do not have any security feature to avoid for exmple access to the
+local disk. The V8 Javascript engine however, is very limited in
+functionality and therefore ideally suited for a sandboxed and
+therefore safe excution on the server. Any other solution is welcome.
+
+<H3>Javascript hints!</H3>
+Please note that in Javascript only basic data typed (number, etc)
+are copied in an assignment. In all other cases, only a reference
+is copied. For example, the following code snippet does not return 2
+as you might expect but 7!
+<pre>
+var arr = [ 0, 1, 2, 3 ];
+var cpy = arr;
+cpy[2] = 7;
+print(arr[2]);
+</pre>
+To avoid that, the global namespace implements a clone function.
+For exmaple, the following code snippet will return the expected output:
+<pre>
+var arr = [ 0, 1, 2, 3 ];
+var cpy = $.clone(arr);
+cpy[2] = 7;
+print(arr[2]);
+</pre>
+
+<H3>Javascript arrays</H3>
+Note that javascript arrays have some very powerful member functions. 
+For a description see for example 
+<A HREF="http://www.tutorialspoint.com/javascript/javascript_arrays_object.htm">here</A>
+or search google for function like <i>map</i> or <i>reduce</i>.
+
+<H3>The global object $</H3>
+
+The environment provides a global object (namesapce) called $ with the following members:
+<table>
+<tr><td>$.file.numEvents</td><td>Number of events in the file</td></tr>
+<tr><td>$.file.runStart</td><td>MJD of run start minus 40587 (unix time in days)</td></tr>
+<tr><td>$.file.runEnd</td><td>MJD of run end minus 40587 (unix time in days)</td></tr>
+<tr><td>$.file.drsFile</td><td>If this is a DRS calibration file, the step id, otherwise -1</td></tr>
+<tr><td>$.file.isMC</td><td>True is this was requested as Monte Carlo file</td></tr>
+<tr><td>$.file.isDRS</td><td>True if DRS calibration constants were requested</td></tr>
+<tr><td>$.file.isCalibrated</td><td>True if a calibrated file was requested</td></tr>
+<tr><td>$.event</td><td>The event header information as obtained from the file</td></tr>
+<tr><td>$.event.numRoi</td><td>Number of samples per pixel</td></tr>
+<tr><td>$.event.numPix</td><td>Number of pixels</td></tr>
+<tr><td>$.event.eventNumber</td><td>Event number</td></tr>
+<tr><td>$.event.triggerNumber</td><td>Trigger number</td></tr>
+<tr><td>$.event.triggerType</td><td>Trigger type</td></tr>
+<tr><td>$.event.trigger</td><td>Decoded trigger information</td></tr>
+<tr><td>$.event.unixTime[2]</td><td>Timestamp when the event arrived at the event builder</td></tr>
+<tr><td>$.data[numPix][numRoi]</td><td>The event data</td></tr>
+<tr><td>$.nroi</td><td>Shortcut to $.event.numRoi</td></tr>
+<tr><td>$.npix</td><td>Shortcut to $.event.numPix</td></tr>
+<tr><td>$.trigger</td><td>Shortcut to $.event.trigger</td></tr>
+<tr><td>$.neighbors</td><td>Array of 1440 arrays each containing the corresponding neighbors</td></tr>
+<tr><td>$.map</td><td>Array of 1440 entries (software index) containing the hardware indices.</td></tr>
+<tr><td>$.geom</td><td>Array of 1440 entries. Each an array with two entries, x and y. The distance between two neighbors is 1.</td></tr>
+<tr><td>$.dist(i,j)</td><td>Calculated the distance of two pixels in degree.</td></tr>
+<tr><td>$.conv</td><td>Conversion factor to convert geom and dist to degree.</td></tr>
+</table>
+
+<H3>Stack traces</H3>
+Please note that due to some interna, the line numbers in the
+stack trace shown in case of runtime errors are by one line too high.
+
+<H3>Editor 1 (proc)</H3>
+
+<I>proc</I> can return an array with numRoi entries or an array with up to 
+four sub-arrays each of nRoi entries. They will be displayed in the graph.
+The chosel pixel is available as <I>pixel</I>.
+The most simple is to just return the selected pixel data unprocssed:
+<pre>
+return $.data[pixel];
+</pre>
+
+<H3>Editor 2 (main)</H3>
+<I>main</I> should return extracted data per pixel. As <I>proc</I> it can
+return a single array or an array with up to four sub-arrays each with
+numPix entries. They are displayed in the camera displays. The function
+implemented as <I>proc</I> is accessible as <I>proc(i)</I> with <I>i</I> 
+being available in <I>proc</I> as <I>pixel</I>. A very simple extractor
+could be to return just the sample at the trigger position
+<pre>
+var rc = [];
+for (var i=0; i<$.event.numPix; i++)
+    rc[i] = $.data[i][60];
+return rc;
+</pre>
+or taking the data pre-procesed by the code of the <I>proc</I>-function:
+<pre>
+var rc = [];
+for (var i=0; i<$.event.numPix; i++)
+    rc[i] = proc(i)[60];
+return rc;
+</pre>
+
+Note that the precise access to the result of proc might depend on what
+exactly is retruned by proc (an array, or an array with sub-arrays).
+
+Pixel which are not returned (<tt>undefind</tt> or <tt>null</tt>) are
+not displayed. This allows to show cleaned images as well or test
+image cleaning algorithms.
+
+<H3>What is the data?</H3>
+The data are all data files found in disks in La Palma (to be precise:
+on daq's disks). The data is raw-data but with the most recent 
+DRS calibration (only the 1024-cell offset calibration) 
+applied, while the application is done in intergers, i.e. the
+fractional part of the calibration constant is removed. 
+(This is basically what is written in our FITS files as part of the
+lossless compression process). No spike or jump removal is applied.
+
+<H3>The editor</H3>
+Key bindings of the editor can be found at 
+<A HREF="http://codemirror.net/doc/manual.html#commands">Codemirror</A>.
+In addition the following binding are defined: Tab - Auto indent;
+F11 - Switch to fullscreen; Esc - In fullscreen mode to 
+leave fullscreen; Ctrl-r - replace; Ctrl-y - Delete the line under the cursor;
+Ctrl-. (dot) - Fold code; Ctrl-Down (cursor down) - Autocomplete.
+
+<H3>How to change the file?</H3>
+Start typing the date in the filename field. The available files 
+will be filtered as you type. To select a file you need to select
+it fom the pull down.
+
+<H3>What is the meaning of the DRS and Cal checkboxes?</H3>
+For some files, files which contain calibrated data are available. 
+This means that the DRS calibration (offset (1024), gain and offset
+(roi)) has been applied. Enabling the checkbox will show this data
+instead of the raw data. Note that the precision is limited to 0.1mV.
+In some cases files were taken to deduce this calibration constants
+(DRS files). This is done in four steps: offset, gain, offset (1024),
+offset (roi). These steps are called 0, 1, 2 and 2 respectively. If the
+checkbox Drs is enabled, the corresponding calibration constants as
+stored in the .drs.fits file, are shown, which is
+<I>BaselineMean</I> [0], <I>GainMean</I> [1] and <I>TriggerOffsetMean</I> [2].
+
+<H3>What is the meaning of the MC checkbox?</h3>
+Currently, it is only to indicate whether the chosen file
+is a Monte Carlo file or not. At the moment, all available
+Monte Carlo file have a four-digit <I>year</I> starting with
+a 0.
+
+<H3>Are there Monte Carlo files available?</H3>
+Yes, there are. Monte Carlo files have the date 0000/00/00 and  the
+praticle ID as run-number (1: gamma, 6: muon, 14: proton). To my
+understanding, the run-numbers 100, 101 and 102 refer to pedestals with
+closed shutter (100 and 101) and open shutter (102).
+
+<H3>How to change the displayed pixel?</H3>
+Enter the pixel number on the corresponding field or its hwardware 
+address. As soon as you acknowledge your change (e.g. remove focus 
+by clicking somewhere else) the pixel contents gets displayed.
+
+<H3>How to Save/Load a script?</H3>
+To load a file choose a file fro your local hard drive via the
+file selection dialog. To save the contents of the editor, press
+Save.
+
+<H3>Submit</H3>
+If you have changed the script and you want to run it on the current event
+press Submit. The Javascript will be executed for this event on
+the server.
+
+<!--<H3>Autosubmit</H3>
+If Autosumit is enabled, the script will be submitted each time
+the file name or the event number is changed and executed.-->
+
+<H3>Pixel value</H3>
+To display the value returned for a pixel just click on the pixel.
+The value will be displayed in the Pixel field. This will also
+display the corresponding waveform in the graph.
+
+<H3>Min/max values</H3>
+Min and max values for the plot and the graph can be determined
+automatically or manully. To set the to a fixed value, enable the
+min and/or max field and enter the value of your choice. It will
+survive changing files, events or pixel.
+
+<H3>What is the meaning of the image?</H3>
+The image is a representation of the first and second moment of the
+distribution of the pixel values. The first moment is the center-of-gravity
+of the distirbution, the major and minor axis represent the standard 
+deviation around the center-of-gravity (<i>width</I> and <i>length</I>). 
+The line represents an estimate for the distance of the center-of-gravity
+to the origin of the primary particle (<i>disp</i>). Due to the lack
+of more information, it is a very simple estimate using
+disp=1.42*(1-width/length).
+
+<H3>What are the additional controls</H3>
+<i>Get geometry</i>: You will get a file with the pixel positions in arbitrary units.
+The three columns are the pixel index, and the x and y coordinate 
+in degree.<br>
+<i>Get camera data</i>: You will get a file with the data from the currently
+displayed cameras. The columns are pixel index and value of the cameras
+1, 2, 3 and 4.<br>
+<i>Get waveforms</i>: You will get a file with the data from the currently
+displayed waveforms. The columns are sample index and amplitude  of the waveforms
+1, 2, 3 and 4.
+
+<H3>Why is loading the page so slow?</H3>
+The total contents of the javascript libraries is about 1MB which
+all have to be treasferred to the browser. In addition the loading
+and processing of the event takes up to 1s so that the loading
+time of the page might be untypically slow. Once finished,
+the amaount of code to load can be decreased.
+
+<H3>How to unzoom the plot?</H3>
+Double click on the plot.
+
+</div>
+
+
+</body>
+</html>
Index: branches/testFACT++branch/www/viewer/index.js
===================================================================
--- branches/testFACT++branch/www/viewer/index.js	(revision 18277)
+++ branches/testFACT++branch/www/viewer/index.js	(revision 18277)
@@ -0,0 +1,1606 @@
+'use strict';
+
+// ==========================================================================
+
+function onRightMouseClick(event)
+{
+    if (event.button!=2)
+        return;
+
+    var strData = event.target.toDataURL("image/png");
+
+    var img = document.createElement("img");
+    img.src = strData;
+
+    $(img).css({ "z-index": "9999", "position": "absolute" });
+    $(img).insertBefore($(event.target));
+
+    setTimeout(function () { $(img).remove(); }, 100);
+}
+
+(function ($)
+ {
+
+    $.plot.plugins.push({
+        init: function(plot, classes)
+            {
+                plot.hooks.bindEvents.push(function(plot, eventHolder) { eventHolder.mousedown(onRightMouseClick); });
+                plot.hooks.shutdown.push(function(plot, eventHolder) { eventHolder.unbind("mousedown", onRightMouseClick); });
+            },
+        name: 'saveAsImage',
+        version: '1.0'
+    });
+
+ })(jQuery);
+
+// ==========================================================================
+
+var editor1;
+var editor2;
+var plot;
+
+function debug(txt)
+{
+    var dbg = document.getElementById("debug");
+    dbg.appendChild(document.createTextNode(txt));
+    dbg.appendChild(document.createElement("br"));
+}
+
+function setupAccordion(accordion, container, inactive)
+{
+    function onAccordion(event, ui)
+    {
+        if (ui.oldHeader.length==0)
+            $(container).slideDown(400);
+        else
+            $(container).slideUp(400);
+    }
+
+    var config = { collapsible: true };
+
+    if (inactive)
+    {
+        config.active = false;
+        $(container).hide();
+    }
+
+    var acc = $(accordion);
+
+    acc.accordion(config);
+    acc.on("accordionbeforeactivate", onAccordion);
+}
+
+function onResize(event, ui)
+{
+    if (!ui.size)
+        return;
+
+    $(event.target.id).css({marginRight:'2px'});
+
+    var editor = event.target.id=="textcontainer1" ? editor1 : editor2;
+
+    editor.setSize("100%", ui.size.height);
+    editor.refresh();
+}
+
+function setSize(id, w, h)
+{
+    w = parseInt(w);
+    h = parseInt(h);
+
+    $("#"+id).width(w);
+    $("#"+id).height(h);
+
+    document.getElementById(id).width=w;
+    document.getElementById(id).height=h;
+}
+
+function onResizeGrid(id)
+{
+    var w = document.getElementById(id+"container").clientWidth/4;
+
+    var offy = 0;
+    var offx = 5;
+
+    var cont = document.getElementById("center"+id).childNodes[0];
+
+    var nn;
+    if (cont)
+    {
+        nn = parseInt(cont.id[cont.id.length-1]);
+        setSize(id+nn, w*2, w*2);
+    }
+
+    if (nn!=1)
+        setSize(id+'1', w-offx, w-offy);
+    if (nn!=2)
+        setSize(id+'2', w-offx, w-offy);
+    if (nn!=3)
+        setSize(id+'3', w-offx, w-offy);
+    if (nn!=4)
+        setSize(id+'4', w-offx, w-offy);
+
+    document.getElementById("center"+id).width=parseInt(w*2);
+
+    setSize('cont'+id+'1', w, w);
+    setSize('cont'+id+'2', w, w);
+    setSize('cont'+id+'3', w, w);
+    setSize('cont'+id+'4', w, w);
+}
+
+function onResizeCameras(event, ui)
+{
+    onResizeGrid('camera');
+
+    drawFullCam("camera1");
+    drawFullCam("camera2");
+    drawFullCam("camera3");
+    drawFullCam("camera4");
+}
+
+function onResizeHistograms(event, ui)
+{
+    onResizeGrid('hist');
+}
+
+function createEditor(textarea)
+{
+    var editor;
+
+    var config =
+    {
+        //value: "function myScript(){return 100;}\n",
+        mode:  { name: "text/typescript", globalVars: true },
+        indentUnit: 4,
+        styleActiveLine: true,
+        matchBrackets: true,
+        lineNumbers: true,
+        foldGutter: true,
+        lint: true,
+        highlightSelectionMatches: {showToken: /\w/},
+        gutters: ["CodeMirror-lint-markers", "CodeMirror-linenumbers", "CodeMirror-foldgutter"],
+        extraKeys: {
+            //"Ctrl-D": "duplicateLine",
+            //"Alt--": "goToBracket",
+            //"Ctrl-H": "findPrev",
+            "Ctrl-Down": "autocomplete",
+            "Tab": "indentAuto",
+            "Ctrl-Y": "deleteLine",
+            "Ctrl-.": function(cm) {
+                cm.foldCode(cm.getCursor());
+            },
+            "F11": function(cm) {
+                editor.setOption("fullScreen", !editor.getOption("fullScreen"));
+            },
+            "Ctrl-R": function(cm) {
+                editor.execCommand("replace");
+            },
+            "Esc": function(cm) {
+                if (editor.getOption("fullScreen")) editor.setOption("fullScreen", false);
+            },
+            "Enter": function(cm) {
+                editor.execCommand("indentAuto");
+                editor.execCommand("newlineAndIndent");
+            },
+        }
+    };
+
+    editor = CodeMirror.fromTextArea(document.getElementById(textarea), config);
+    editor.setOption("theme", "fact");
+
+    return editor;
+}
+
+function colorizeHTML(textarea)
+{
+    var config =
+    {
+        //value: "function myScript(){return 100;}\n",
+        mode:  { name: "text/typescript", globalVars: true },
+        readOnly: true,
+    };
+
+    CodeMirror.fromTextArea(document.getElementById(textarea), config);
+}
+
+function setFileChecks(file)
+{
+    var list = document.getElementById("file").data;
+    if (!list)
+        return;
+
+    if (!file)
+        file = document.getElementById("file").value;
+
+    var drs  = document.getElementById("drsfile");
+
+    var hasDrs = list[file]&2;
+    var hasCal = list[file]&4;
+    var isMC   = list[file]&8;
+
+    if (!hasDrs || isMC)
+        $('#drsfile').prop('checked', false);
+    if (!hasCal || isMC)
+        $('#calibrated').prop('checked', false);
+
+    $('#calibrated').prop('disabled', (!hasCal && !drs.checked) || isMC);
+    $('#drsfile').prop('disabled',     !hasDrs || isMC);
+
+    $('#txtcalibrated').css('color', (!hasCal && !drs.checked) || isMC ? 'darkgrey' : 'black');
+    $('#txtdrsfile').css(   'color',  !hasDrs || isMC                  ? 'darkgrey' : 'black');
+    $('#txtmontecarlo').css('color',  !isMC                            ? 'darkgrey' : 'black');
+
+    $('#montecarlo').prop('checked', isMC);
+}
+
+function disableControls(disabled)
+{
+    $('#submit').prop('disabled', disabled);
+    $('#getcamera').prop('disabled', disabled);
+    $('#getwaveforms').prop('disabled', disabled);
+    $('#event').prop('disabled', disabled);
+    $('#pixel').prop('disabled', disabled);
+    $('#cbpx').prop('disabled', disabled);
+    $('#cbpx-c').prop('disabled', disabled);
+    $('#cbpx-b').prop('disabled', disabled);
+    $('#cbpx-p').prop('disabled', disabled);
+    $('#cbpx-x').prop('disabled', disabled);
+    $('#file').prop('disabled', disabled);
+
+    if (disabled)
+    {
+        $('#calibrated').prop('disabled', true);
+        $('#drsfile').prop('disabled', true);
+        $('#montecarlo').prop('disabled', true);
+    }
+    else
+        setFileChecks();
+}
+
+function onGetCameras()
+{
+    var arr =
+    [
+     document.getElementById("camera1").dataAbs,
+     document.getElementById("camera2").dataAbs,
+     document.getElementById("camera3").dataAbs,
+     document.getElementById("camera4").dataAbs,
+     ];
+
+    $('#controls > input[name=data]').val(JSON.stringify(arr));
+    $('#controls > input[name=name]').val('cameras.txt');
+    $('#controls').attr('action','index.php');
+    $('#controls').submit();
+}
+
+function onGetWaveforms()
+{
+    var arr = document.getElementById("waveform").data;
+
+    $('#controls > input[name=data]').val(JSON.stringify(arr));
+    $('#controls > input[name=name]').val('waveforms.txt');
+    $('#controls').attr('action','index.php');
+    $('#controls').submit();
+}
+
+function onGetGeometry()
+{
+    var sqrt32 = Math.sqrt(3)/2;
+    
+    var arr = [ new Array(1440), new Array(1440) ];
+
+    for (var i=0; i<1440; i++)
+    {
+        arr[0][i] = coord[i][0]*0.1111;
+        arr[1][i] = coord[i][1]*0.1111*sqrt32;
+    }
+
+    $('#controls > input[name=data]').val(JSON.stringify(arr));
+    $('#controls > input[name=name]').val('geometry.txt');
+    $('#controls').attr('action','index.php');
+    $('#controls').submit();
+}
+
+function onReady()
+{
+    CodeMirror.colorize(null, 'javascript');
+
+    //$('input,select').keypress(function(event) { return event.keyCode != 13; });
+
+    //colorizeHTML("code0");
+    //colorizeHTML("code1");
+
+    $("#accordion").accordion({collapsible:true,active:false,heightStyle:'content'});
+    $("#accordion").find('h3').filter(':contains(Runtime)').hide();
+    if (location.href.search('debug')==-1)
+        $("#accordion").find('h3').filter(':contains(Debug)').hide();
+
+    $("#textcontainer1").resizable({handles:"s",autoHide:true,});
+    $("#textcontainer1").on("resize", onResize);
+
+    $("#textcontainer2").resizable({handles:"s",autoHide:true,});
+    $("#textcontainer2").on("resize", onResize);
+
+    $("#cameracontainer").on("resize", onResizeCameras);
+    onResizeCameras();
+
+    $("#histcontainer").on("resize", onResizeHistograms);
+    onResizeHistograms();
+
+    $("#contcamera1").click(onClickContCamera);
+    $("#contcamera2").click(onClickContCamera);
+    $("#contcamera3").click(onClickContCamera);
+    $("#contcamera4").click(onClickContCamera);
+
+    $("#conthist1").click(onClickContHist);
+    $("#conthist2").click(onClickContHist);
+    $("#conthist3").click(onClickContHist);
+    $("#conthist4").click(onClickContHist);
+
+    $("#camera1").click(onClick);
+    $("#camera2").click(onClick);
+    $("#camera3").click(onClick);
+    $("#camera4").click(onClick);
+
+    $('#camera1').mousedown(onRightMouseClick);
+    $('#camera2').mousedown(onRightMouseClick);
+    $('#camera3').mousedown(onRightMouseClick);
+    $('#camera4').mousedown(onRightMouseClick);
+
+    editor1 = createEditor("editor1");
+    editor2 = createEditor("editor2");
+
+    setupAccordion('#accordion5', '#editorcontainer1', true);
+    setupAccordion('#accordion1', '#editorcontainer2');
+
+    $('#accordion5').on("accordionactivate", function() { $('#editorcontainer1fake').hide(); editor1.refresh();  });
+    $('#accordion1').on("accordionactivate", function() { $('#editorcontainer2fake').hide(); editor2.refresh();  });
+
+    setupAccordion('#accordion2', '#cameracontainer');
+    setupAccordion('#accordion7', '#histcontainer', true);
+    setupAccordion('#accordion3', '#waveformcontainer');
+    setupAccordion('#accordion4', '#helpcontainer', true);
+    setupAccordion('#accordion6', '#ctrlcontainer', true);
+
+    $("#selectfile1").on('change', onFile);
+    $("#selectfile2").on('change', onFile);
+
+    $(document).ajaxStart(function() { disableControls(true) }).ajaxStop(function() { disableControls(false); });
+
+
+    $.ajax({
+        type:    "POST",
+        cache:   false,
+        url:     "index.php",
+        success: onFilelistReceived,
+        error:   function(xhr) { if (xhr.status==0) alert("ERROR[0] - Request failed!"); else alert("ERROR[0] - "+xhr.statusText+" ["+xhr.status+"]"); }
+    });
+}
+
+function onFileSelect(event, ui)
+{
+    setFileChecks(ui.item.value);
+    document.getElementById("event").value = 0;
+    onSubmit(ui.item.value);
+}
+
+function onFilelistReceived(result)
+{
+    //var dbg = document.getElementById("debug");
+
+    //var pre = document.createElement("pre");
+    //pre.appendChild(document.createTextNode(rc));
+    //dbg.appendChild(pre);
+
+    var rc;
+    try
+    {
+        rc = JSON.parse(result);
+    }
+    catch (e)
+    {
+        alert("ERROR[0] - Decoding answer:\n"+e);
+        debug(result);
+        return;
+    }
+
+    document.getElementById("file").data = rc;
+
+    var list = [ ];
+    for (var file in rc)
+        list.push(file);
+
+    var opts =
+    {
+        source: list,
+        select: onFileSelect,
+        position: { my: "right top", at: "right bottom", collision: "flipfit" },
+    };
+
+    $("#file").autocomplete(opts);
+    //document.getElementById("file").value = "2014/04/17-181";
+
+    //onSubmit("2014/04/17-181");
+}
+
+function setZoom(xfrom, xto, yfrom, yto)
+{
+    var xaxis = plot.getXAxes()[0];
+    var yaxis = plot.getYAxes()[0];
+
+    if (xfrom!==undefined)
+        xaxis.options.min = xfrom;
+    if (xto!==undefined)
+        xaxis.options.max = xto;
+
+    if (yfrom!==undefined)
+        yaxis.options.min = yfrom;
+    if (yto!==undefined)
+        yaxis.options.max = yto;
+
+    plot.setupGrid();
+    plot.draw();
+    plot.clearSelection();
+}
+
+function onPlotHover(event, pos, item)
+{
+    if (!item)
+    {
+        $("#tooltip").hide();//fadeOut(100);
+        return;
+    }
+
+    var x = item.datapoint[0].toFixed(2);
+    var y = item.datapoint[1].toFixed(2);
+
+    var tooltip = $("#tooltip");
+    tooltip.html(parseInt(x) + " / " + y);
+    tooltip.css({top: item.pageY-20, left: item.pageX+5});
+    tooltip.show();//fadeIn(200);
+}
+
+function drawHist(n)
+{
+    var canv = document.getElementById("camera"+n);
+    var hist = document.getElementById("hist"+n);
+
+    var xmin  = parseFloat(document.getElementById("histmin"+n).value);
+    var xmax  = parseFloat(document.getElementById("histmax"+n).value);
+    var nbins = 100;//parseInt(xmax-xmin);
+    var step  = (xmax-xmin)/nbins;
+    if (step<1)
+    {
+        step = 1;
+        nbins = parseInt(xmax-xmin)+1;
+    }
+
+    var bins = new Array(nbins);
+    for (var i=0; i<nbins; i++)
+        bins[i] = [ xmin+i*step, 0 ];
+
+    var data = canv.dataAbs;
+    for (var i=0; i<1440; i++)
+        if (data[i]!==undefined/* && data[i]!==null*/)
+        {
+            var ix = parseInt((data[i]-xmin)/step);
+            if (ix>=0 && ix<nbins)
+                bins[ix][1] ++;
+        }
+
+    var opts =
+    {
+        grid: {
+            hoverable: true,
+        }
+    };
+
+    var hist = $.plot("#hist"+n, [ { data:bins, bars: {show:true} } ], opts);
+    $('#hist'+n).bind("plothover", onPlotHover);
+}
+
+function processCameraData(n, data)
+{
+    var canv = document.getElementById("camera"+n);
+    canv.dataRel = null;
+
+    if (!Array.isArray(data))
+        return;
+
+    canv.dataAbs = new Array(1440);
+    for (var i=0; i<1440; i++)
+    {
+        var val = data[map[i]];
+        if (!isNaN(val) && val!==null)
+            canv.dataAbs[i] = val;
+    }
+
+    canv.min = Math.min.apply(Math, canv.dataAbs.filter(function(e){return e!==undefined;}));
+    canv.max = Math.max.apply(Math, canv.dataAbs.filter(function(e){return e!==undefined;}));
+
+    canv.dataRel = new Array(1440);
+    for (var i=0; i<1440; i++)
+    {
+        var val = canv.dataAbs[i];
+        if (val!==undefined)
+            canv.dataRel[i] = (val-canv.min)/canv.max;
+    }
+
+    if (document.getElementById("cameraminon"+n).checked)
+        document.getElementById("cameramin"+n).value = canv.min;
+    if (document.getElementById("cameramaxon"+n).checked)
+        document.getElementById("cameramax"+n).value = canv.max;
+
+    // ---------------------------
+
+    var hist = document.getElementById("hist"+n);
+
+    hist.min = canv.min;
+    hist.max = canv.max;
+
+    if (document.getElementById("histminon"+n).checked)
+        document.getElementById("histmin"+n).value = canv.min;
+    if (document.getElementById("histmaxon"+n).checked)
+        document.getElementById("histmax"+n).value = canv.max;
+
+    drawHist(n);
+}
+
+function onDataReceived(result)
+{
+    var err = document.getElementById("error");
+    var dbg = document.getElementById("debug");
+    var con = document.getElementById("console");
+
+    //var pre = document.createElement("pre");
+    //pre.appendChild(document.createTextNode(rc));
+    //dbg.appendChild(pre);
+
+    var rc;
+    try
+    {
+        rc = JSON.parse(result);
+        if (!rc)
+            return;
+    }
+    catch (e)
+    {
+        alert("ERROR[1] - Decoding answer:\n"+e);
+        debug(result);
+        return;
+    }
+
+    var evt = rc.event;
+    var file = rc.file;
+
+    document.getElementById("event").max = file.numEvents-1;
+    var el = document.getElementById("numevents");
+    if (el.firstChild)
+        el.removeChild(el.firstChild);
+    el.appendChild(document.createTextNode(file.numEvents));
+
+    var infotxt = "<pre>";
+    infotxt += "\nStart time: "+new Date(file.runStart*24*3600*1000).toUTCString();
+    infotxt += "\nEnd   time: "+new Date(file.runEnd*24*3600*1000).toUTCString();
+    infotxt += "\nRun   type: "+file.runType;
+    if (file.drsFile>=0)
+        infotxt += " [drs-step "+file.drsFile+"]";
+
+    $("#runinfo").html(infotxt);
+    $("#eventinfo").html("Trigger: "+evt.trigger.join(' | ')+" [0x"+evt.triggerType.toString(16)+"]");
+
+    if (rc.ret)
+    {
+        while (con.lastChild)
+            con.removeChild(con.lastChild);
+    }
+
+    if (rc.err)
+    {
+        while (err.lastChild)
+            err.removeChild(err.lastChild);
+
+        err.appendChild(document.createTextNode("Javascript runtime exception: "+rc.err.file+":"+rc.err.lineNumber));
+        err.appendChild(document.createTextNode("\n"));
+        err.appendChild(document.createTextNode(rc.err.sourceLine));
+        err.appendChild(document.createTextNode("\n"));
+        err.appendChild(document.createTextNode(rc.err.trace));
+
+        var editor = rc.err.file=="main" ? editor2 : editor1;
+        editor.setCursor(rc.err.lineNumber-1, 1);
+
+        $("#accordion").find('h3').filter(':contains(Runtime)').show();
+        $("#accordion").accordion("option", "active", 0);
+    }
+
+    if (rc.debug!==undefined)
+    {
+        con.appendChild(document.createTextNode(rc.debug));
+
+        debug("PHP execution:");
+        debug("Time Javascripts = "+(rc.timeJs[0]*1000).toFixed(2)+","+(rc.timeJs[1]*1000).toFixed(2)+","+(rc.timeJs[2]*1000).toFixed(2)+ " [ms]");
+    }
+
+    if (rc.ret!==undefined && Array.isArray(rc.ret))
+    {
+        var now = new Date();
+
+        if (rc.ret[0] instanceof Object)
+            processCameraData(1, rc.ret[0]);
+        else
+            processCameraData(1, rc.ret);
+
+        if (rc.ret.length>1)
+            processCameraData(2, rc.ret[1]);
+
+        if (rc.ret.length>2)
+            processCameraData(3, rc.ret[2]);
+
+        if (rc.ret.length>3)
+            processCameraData(4, rc.ret[3]);
+
+        debug("Calc Time = "+(new Date()-now)+" ms");
+    }
+
+    // We have to redraw all of them to display the changed pixel value
+    onCameraMinMax(1);
+    onCameraMinMax(2);
+    onCameraMinMax(3);
+    onCameraMinMax(4);
+
+    debug("Total time = "+(rc.timePhp*1000).toFixed(1)+" ms");
+    debug("Peak memory = "+rc.memory+" MiB");
+
+    if (Array.isArray(rc.waveform))
+    {
+        var waveform = document.getElementById("waveform");
+        waveform.data = [ ];
+
+        var data = [
+                    { label: "[0] ", data: new Array(evt.numRoi) },
+                    { label: "[1] ", data: new Array(evt.numRoi) },
+                    { label: "[2] ", data: new Array(evt.numRoi) },
+                    { label: "[3] ", data: new Array(evt.numRoi) },
+                    ];
+
+        var min = [];
+        var max = [];
+        if (Array.isArray(rc.waveform) && rc.waveform.length==evt.numRoi)
+        {
+            min.push(Math.min.apply(Math, rc.waveform));
+            max.push(Math.max.apply(Math, rc.waveform));
+
+            var d = data[0].data;
+            for (var i=0; i<evt.numRoi; i++)
+                d[i] = [ i, rc.waveform[i] ];
+
+            waveform.data[0] = rc.waveform;
+        }
+
+        for (var j=0; j<4; j++)
+        {
+            var ref = rc.waveform[j];
+
+            if (Array.isArray(ref) && ref.length==evt.numRoi)
+            {
+                min.push(Math.min.apply(Math, ref));
+                max.push(Math.max.apply(Math, ref));
+
+                var d = data[j].data;
+                for (var i=0; i<evt.numRoi; i++)
+                    d[i] = [ i, ref[i] ];
+
+                waveform.data[j] = ref;
+            }
+        }
+
+        waveform.ymin = Math.min.apply(Math, min);
+        waveform.ymax = Math.max.apply(Math, max);
+        waveform.xmin = 0;
+        waveform.xmax = evt.numRoi;
+
+        if (document.getElementById("waveformxminon").checked)
+            document.getElementById("waveformxmin").value = waveform.xmin;
+        if (document.getElementById("waveformxmaxon").checked)
+            document.getElementById("waveformxmax").value = waveform.xmax;
+
+        if (document.getElementById("waveformminon").checked)
+            document.getElementById("waveformmin").value = waveform.ymin;
+        if (document.getElementById("waveformmaxon").checked)
+            document.getElementById("waveformmax").value = waveform.ymax;
+
+        var xmin = document.getElementById("waveformxminon").checked ? waveform.xmin : parseInt(document.getElementById("waveformxmin").value);
+        var xmax = document.getElementById("waveformxmaxon").checked ? waveform.xmax : parseInt(document.getElementById("waveformxmax").value);
+
+        var ymin = document.getElementById("waveformminon").checked ? waveform.ymin : parseInt(document.getElementById("waveformmin").value);
+        var ymax = document.getElementById("waveformmaxon").checked ? waveform.ymax : parseInt(document.getElementById("waveformmax").value);
+
+        var opts =
+        {
+           xaxis: {
+               min: xmin-1,
+               max: xmax+1,
+           },
+           yaxis: {
+               min: ymin-5,
+               max: ymax+5,
+           },
+           series: {
+               lines: {
+                   show: true
+               },
+               points: {
+                   show: true,
+                   symbol: 'cross',
+               }
+           },
+           selection: {
+               mode: "xy"
+           },
+           grid: {
+               hoverable: true,
+           }
+        };
+
+        plot = $.plot("#waveform", data, opts);
+
+        waveform = $('#waveform');
+        waveform.bind("plotselected", function (event, ranges)
+                      {
+                          setZoom(ranges.xaxis.from, ranges.xaxis.to,
+                                  ranges.yaxis.from, ranges.yaxis.to);
+                      });
+
+        waveform.dblclick(function ()
+                          {
+                              var waveform = document.getElementById("waveform");
+                              setZoom(waveform.xmin-1, waveform.xmax+1, waveform.ymin-5, waveform.ymax+5);
+                          });
+        waveform.bind("plothover", onPlotHover);
+    }
+}
+
+function onSubmit(file, pixelOnly)
+{
+    if (!file)
+        file = document.getElementById("file").value;
+
+    var dbg = document.getElementById("debug");
+    while (dbg.lastChild)
+        dbg.removeChild(dbg.lastChild);
+
+    var active = $("#accordion").accordion("option", "active");
+    if (active==0)
+    {
+        $("#accordion").accordion("option", "active", false);
+        $("#accordion").find('h3').filter(':contains(Runtime)').hide();
+    }
+
+    var calibrated = document.getElementById("calibrated");
+    var drsfile    = document.getElementById("drsfile");
+    var montecarlo = document.getElementById("montecarlo");
+    var ismc       = montecarlo.checked;
+    var calib      = !calibrated.disabled && calibrated.checked;
+    var drs        = !drsfile.disabled && drsfile.checked;
+    var event      = document.getElementById("event").value;
+    var pixel      = document.getElementById("pixel").value;
+    var source1    = editor1.getValue();
+    var source2    = editor2.getValue();
+
+    var uri = "file="+file+"&event="+event+"&pixel="+map[pixel];
+    uri += "&source1="+encodeURIComponent(source1);
+    if (!pixelOnly)
+        uri += "&source2="+encodeURIComponent(source2);
+    if (calib)
+        uri += "&calibrated=1";
+    if (drs)
+        uri += "&drsfile=1";
+    if (ismc)
+        uri += "&montecarlo=1";
+
+    $.ajax({
+        type:    "POST",
+        cache:   false,
+        url:     "index.php",
+        data:    uri,
+        success: onDataReceived,
+        error:   function(xhr) { if (xhr.status==0) alert("ERROR[1] - Request failed!"); else alert("ERROR[1] - "+xhr.statusText+" ["+xhr.status+"]"); }
+    });
+}
+
+function onFile(event, ui)
+{
+    var f = event.target.files[0];
+    if (!f)
+        return;
+
+    if (!f.type.match('text/plain') && !f.type.match('application/javascript') && !f.type.match('application/x-javascript'))
+    {
+        alert("ERROR - Unknown file type: "+f.type);
+        return;
+    }
+
+    var id     = event.target.id;
+    var editor = id[id.length-1]=='1' ? editor1 : editor2;
+
+    var reader = new FileReader();
+
+    // Closure to capture the file information.
+    reader.onload = (function(theFile) { return function(e) { editor.setValue(e.target.result); }; })(f);
+    // onloadstart
+    // onloadend
+    // onprogress
+
+    // Read in the text file
+    reader.readAsText(f);
+}
+
+function refreshCameras()
+{
+    drawFullCam("camera1");
+    drawFullCam("camera2");
+    drawFullCam("camera3");
+    drawFullCam("camera4");
+}
+
+function onEvent()
+{
+    onSubmit();
+}
+
+function checkPixel()
+{
+    var pix  = parseInt(document.getElementById("pixel").value);
+    var c    = parseInt(document.getElementById("cbpx-c").value);
+    var b    = parseInt(document.getElementById("cbpx-b").value);
+    var p    = parseInt(document.getElementById("cbpx-p").value);
+    var x    = parseInt(document.getElementById("cbpx-x").value);
+    var cbpx = parseInt(document.getElementById("cbpx").value);;
+
+    if (pix >=0 && pix <1440 &&
+        c   >=0 && c   <   4 &&
+        b   >=0 && b   <  10 &&
+        p   >=0 && p   <   4 &&
+        x   >=0 && x   <   9 &&
+        cbpx>=0 && cbpx<1440)
+        return;
+
+    document.getElementById("pixel").value = 0;
+    document.getElementById("cbpx-c").value = 1;
+    document.getElementById("cbpx-b").value = 0;
+    document.getElementById("cbpx-p").value = 3;
+    document.getElementById("cbpx-x").value = 6;
+    document.getElementById("cbpx").value = 393;
+}
+
+
+function onPixel()
+{
+    checkPixel();
+
+    var p = parseInt(document.getElementById("pixel").value);
+
+    var cbpx = map[p];
+
+    document.getElementById("cbpx-c").value = parseInt((cbpx/360));
+    document.getElementById("cbpx-b").value = parseInt((cbpx/36)%10);
+    document.getElementById("cbpx-p").value = parseInt((cbpx/9)%4);
+    document.getElementById("cbpx-x").value = parseInt((cbpx%9));
+    document.getElementById("cbpx").value = parseInt(cbpx);
+
+    onSubmit("", true);
+}
+
+function onCBPX()
+{
+    checkPixel();
+
+    var c = parseInt(document.getElementById("cbpx-c").value);
+    var b = parseInt(document.getElementById("cbpx-b").value);
+    var p = parseInt(document.getElementById("cbpx-p").value);
+    var x = parseInt(document.getElementById("cbpx-x").value);
+
+    var cbpx = c*360 + b*36 + p*9 + x;
+
+    document.getElementById("cbpx").value = parseInt(cbpx);
+    document.getElementById("pixel").value = map.indexOf(cbpx);
+
+    onSubmit("", true);
+}
+
+function onHW()
+{
+    checkPixel();
+
+    var cbpx = parseInt(document.getElementById("cbpx").value);;
+
+    document.getElementById("cbpx-c").value = parseInt((cbpx/360));
+    document.getElementById("cbpx-b").value = parseInt((cbpx/36)%10);
+    document.getElementById("cbpx-p").value = parseInt((cbpx/9)%4);
+    document.getElementById("cbpx-x").value = parseInt((cbpx%9));
+
+    document.getElementById("pixel").value = map.indexOf(cbpx);
+
+    onSubmit("", true);
+}
+
+function isInside(x, y, mouse)
+{
+    var dist = Math.sqrt((mouse.x-x)*(mouse.x-x)+(mouse.y-y)*(mouse.y-y));
+    return dist<0.5;
+
+    /*
+    ctx.translate(x, y);
+    ctx.scale(1/2, 1/3);
+
+    ctx.beginPath();
+    ctx.moveTo( 1,  1);
+    ctx.lineTo( 0,  2);
+    ctx.lineTo(-1,  1);
+    ctx.lineTo(-1, -1);
+    ctx.lineTo( 0, -2);
+    ctx.lineTo( 1, -1);
+    ctx.fill();
+
+    ctx.restore();
+    */
+}
+
+var inprogress = { };
+function moveElement(id, n, target, callback)
+{
+    if (inprogress[id]==n || inprogress[id]<0)
+        return;
+
+    inprogress[id] = target ? -n : n;
+
+    var element   = $("#"+id+n); //Allow passing in either a JQuery object or selector
+    var newParent = $(target ? target : "#cont"+id+n); //Allow passing in either a JQuery object or selector
+
+    var oldOffset = element.offset();
+
+    var newOffset = newParent.offset();
+
+    var w = newParent.width();
+    var h = newParent.height();
+
+    var temp = element.appendTo('body');
+    temp.css('position', 'absolute')
+        .css('left', oldOffset.left)
+        .css('top',  oldOffset.top)
+        .css('zIndex', 999);
+
+    temp.animate( {'top': newOffset.top, 'left':newOffset.left, 'width':w, 'height': h},
+    'slow', function()
+    {
+        temp = temp.appendTo(newParent);
+        temp.css('position', 'relative');
+        temp.css('width', '');
+        temp.css('height', '');
+        temp.css('zIndex', '');
+        temp.css('left', '0');
+        temp.css('top', '0');
+
+        setSize(id+n, w, h);
+
+        if (callback)
+            callback(id+n);
+
+        inprogress[id] = 0;
+    });
+}
+
+function onClickCont(event, callback)
+{
+    var id = event.target.id;
+    if (!id)
+        id = event.target.parentNode.id;
+
+    var n = parseInt(id[id.length-1]);
+    var type = id.substr(0, id.length-1);
+
+    if (id.substr(0, 4)=="cont")
+        id = id.substr(4, id.length-4);
+    if (type.substr(0, 4)=="cont")
+        type = type.substr(4, type.length-4);
+
+    if (id.substr(0, type.length)==type)
+    {
+        var cont = document.getElementById("center"+type).childNodes[0];
+        if (cont)
+        {
+            var nn = parseInt(cont.id[cont.id.length-1]);
+            moveElement(type, nn, null, callback);
+        }
+        moveElement(type, n, "#center"+type, callback);
+
+    }
+    else
+        moveElement(type, n, null, callback);
+
+}
+
+function onClickContCamera(event)
+{
+    onClickCont(event, function(el) { drawFullCam(el); });
+}
+
+function onClickContHist(event)
+{
+    onClickCont(event);
+}
+
+function onClick(event)
+{
+    var cont = document.getElementById("centercamera").childNodes[0];
+    if (!cont)
+        return;
+
+    if (cont.id!=event.target.id)
+        return;
+
+    // get click position relative to canvas
+    var rect = event.target.getBoundingClientRect();
+
+    var x =  event.clientX - rect.left;
+    var y =  event.clientY - rect.top;
+
+    var mouse = { x: x, y: y };
+
+    // convert click position to pixel index
+    var index = getIndex(event.target.id, mouse);
+    if (index<0)
+        return;
+
+    document.getElementById("pixel").value = index;
+
+    onPixel();
+}
+
+function getClickPosition(event)
+{
+    var rect = event.target.getBoundingClientRect();
+
+    var x =  event.clientX - rect.left;
+    var y =  event.clientY - rect.top;
+
+    return { x: x, y: y };
+}
+
+function onMinMax(id, n)
+{
+    var el = document.getElementById(id+n);
+
+    el.zmin = document.getElementById(id+"min"+n).value;
+    el.zmax = document.getElementById(id+"max"+n).value;
+}
+
+function onCameraMinMax(n)
+{
+    onMinMax("camera", n);
+    drawFullCam("camera"+n);
+}
+
+function onHistMinMax(n)
+{
+    onMinMax("hist", n);
+    drawHist(n);
+}
+
+function onMinMaxOn(id, n)
+{
+    var el = document.getElementById(id+n);
+
+    var redraw;
+    if (document.getElementById(id+"minon"+n).checked)
+    {
+        document.getElementById(id+"min"+n).setAttribute("disabled", "true");
+        document.getElementById(id+"min"+n).value = el.min;
+        redraw = true;
+    }
+    else
+        document.getElementById(id+"min"+n).removeAttribute("disabled");
+
+    if (document.getElementById(id+"maxon"+n).checked)
+    {
+        document.getElementById(id+"max"+n).setAttribute("disabled", "true");
+        document.getElementById(id+"max"+n).value = el.max;
+        redraw = true;
+    }
+    else
+        document.getElementById(id+"max"+n).removeAttribute("disabled");
+
+    return redraw;
+}
+
+function onCameraMinMaxOn(n)
+{
+    if (onMinMaxOn("camera", n))
+        onCameraMinMax(n);
+}
+
+function onHistMinMaxOn(n)
+{
+    if (onMinMaxOn("hist", n))
+        onHistMinMax(n);
+}
+
+function onWaveformMinMax()
+{
+    var wf = document.getElementById("waveform");
+
+    var xmin, xmax, ymin, ymax;
+
+    var redraw;
+    if (!document.getElementById("waveformxminon").checked)
+        xmin = document.getElementById("waveformxmin").value;
+    if (!document.getElementById("waveformxmaxon").checked)
+        xmax = document.getElementById("waveformxmax").value;
+    if (!document.getElementById("waveformminon").checked)
+        ymin = document.getElementById("waveformmin").value;
+    if (!document.getElementById("waveformmaxon").checked)
+        ymax = document.getElementById("waveformmax").value;
+
+    setZoom(xmin, xmax, ymin, ymax);
+
+}
+
+function onWaveformMinMaxOn()
+{
+    var wf = document.getElementById("waveform");
+
+    var xmin, xmax, ymin, ymax;
+
+    var redraw;
+    if (document.getElementById("waveformxminon").checked)
+    {
+        document.getElementById("waveformxmin").setAttribute("disabled", "true");
+        document.getElementById("waveformxmin").value = wf.xmin;
+        xmin = wf.xmin-1;
+    }
+    else
+        document.getElementById("waveformxmin").removeAttribute("disabled");
+
+    if (document.getElementById("waveformxmaxon").checked)
+    {
+        document.getElementById("waveformxmax").setAttribute("disabled", "true");
+        document.getElementById("waveformxmax").value = wf.xmax;
+        xmax = wf.xmax+1;
+    }
+    else
+        document.getElementById("waveformxmax").removeAttribute("disabled");
+
+    if (document.getElementById("waveformminon").checked)
+    {
+        document.getElementById("waveformmin").setAttribute("disabled", "true");
+        document.getElementById("waveformmin").value = wf.ymin;
+        ymin = wf.ymin-5;
+    }
+    else
+        document.getElementById("waveformmin").removeAttribute("disabled");
+
+    if (document.getElementById("waveformmaxon").checked)
+    {
+        document.getElementById("waveformmax").setAttribute("disabled", "true");
+        document.getElementById("waveformmax").value = wf.ymax;
+        ymax = wf.ymax+5;
+    }
+    else
+        document.getElementById("waveformmax").removeAttribute("disabled");
+
+    setZoom(xmin, xmax, ymin, ymax);
+}
+
+//document.addEventListener("click", getClickPosition, false);
+
+$(document).ready(onReady);
+
+// ================================== Pixel mapping =================================================
+
+var map = new Array(1440);
+
+function initPixelMap()
+{
+    var codedMap = "966676:6:A;68656364626Y?\\?;A=A<AGADAN4K4i5g5h5o506W?Z?]?_?>A@A?AJAIAFACAM4J4H4f5d5e5l5m5n516X?[?^?N?P?AA1ABAVAUAKAHAEAO4L4I4G4E4c5a5b5M6j5k5V6Y6\\6_6G?J?O?Q?S?2A4A3AYAXAWAbA_AnAkAhA3404F4D4B4`5^5_5J6K6L6S6T6W6Z6]6E?H?K?M?R?T?V?5A7A6A\\A[AZAeAdAaA^AmAjAgA24o3m3C4A4?4]5[5\\5G6H6I6P6Q6R6U6X6[6^6F?I?L?<?>?U?;@=@8Ah@9AMALA]ABCACfAcA`AoAlAiA4414n3l3<4@4>425Z5X5Y5D6E6F698N6O608E8H8K8H>K>N>?>B>=???A?<@>@@@i@k@j@PAOANAECDCCC<C9CZCWCTC=3:3734313=4;4943515o4W5U5V5A6B6C6687888m7n7C8F8I8F>I>L>=>@>C>E>@?B?D??@A@C@l@n@m@SARAQAHCGCFC?C>C;C8CYCVCSC<393633303n2:4846405n4l4T5R5S5>6?6@6384858j7k7l7o7D8G8J8G>J>M>>>A>D>4>6>C?3?5?B@2@4@o@_@0ALBKBTA0CoBIC8D7D@C=C:C[CXCUC>3;3835323o2m2k27454j3m4k4i4Q5O5P5C7<6=6g71828o8h7i7S9<8?8B8Q>T>W>@=C=F=e<h<5>7>9>4?6?8?3@5@7@`@b@a@OBNBMB3C2C1C;D:D9D_D\\DQCNCKCF3C3@3>2;282Z1W1l2j2h2k3i3g3j4h4f4N5L5M5@7A7B7d7e7f7l8m8n8P9Q9:8=8@8O>R>U>>=A=D=c<f<i<k<8>:><>7?9?;?6@8@:@c@e@d@RBQBPB6C5C4C>D=D<DbDaD^D[DPCMCJCE3B3?3=2:272Y1V1T1i2g2e2h3f3d3g4e4c4K5I5J5=7>7?7a7b7c7i8j8k8M9N9O9R9;8>8A8P>S>V>?=B=E=d<g<j<Z<\\<;>k=m=:?j>l>9@i?k?f@V@g@CBBBSBgBfB7CoCnC?DSDRDcD`D]DRCOCLCG3D3A3?2<292[1X1U1S1Q1f2d2b2e3c3a3d4b4`4H5F5G5:7;7<7^7_7`7f8g8h8J9K9L97:::=:@:C:F:I:I=L=O=7=:===n<1=[<]<_<l=n=0>k>m>o>j?l?n?W@Y@X@FBEBDBjBiBhB2D1D0DVDUDTDCE@EOELEIEXEUERE5222o1l1i1f1c1`1R1P1N1c2a2_2b3`3^3a4_4]4<5:5;5778797[7\\7]7c8d8e8G9H9I94:5:8:;:>:A:D:G:G=J=M=5=8=;=l<o<2=4=^<`<b<o=1>3>n>0?2?m?o?1@Z@\\@[@IBHBGBmBlBkB5D4D3DYDXDWDFEEEBE?ENEKEHEWETEQE4212n1k1h1e1b1_1]1O1M1K1`2^2\\2_3]3[3^4\\4Z4957585475767X7Y7Z7`8a8b8D9E9F91:2:3:6:9:<:?:B:E:H:H=K=N=6=9=<=m<0=3=d;f;a<H<J<2>b=d=1?a>c>0@`?b?]@D@^@:B9BJB^B]BnBfCeC6DJDIDZDnDmDGEDEAEPEMEJEYEVESE623202m1j1g1d1a1^1\\1[0L1J1?1]2[2Y2\\3Z3X3[4Y4W4654555172737U7V7W7]8^8_8A9B9C9e9o90:n9g:j:m:L:O:R:U:X:[:];`;c;T;W;Z;7<9<e;g;i;I<K<M<c=e=g=b>d>f>a?c?e?E@G@F@=B<B;BaB`B_BiChCgCMDLDKD1E0EoD9E7E<F9F6FaE^E[EjEgEdER0O0L0I0F0C0n0l0\\0Z0X0@1>1<1Z2X2V2Y3W3U3X4V4T4E5C5D5n6o607R7S7T7Z8[8\\8>9?9@9b9c9d9l9m9e:h:k:J:M:P:S:V:Y:[;^;a;R;U;X;6<8<:<;<h;j;l;L<N<P<f=h=j=e>g>i>d?f?h?N@Q@H@@B?B>BdBcBbBlCkCjCPDODND4E3E2E;E:E8E6E;F8F5F`E]EZEiEfEcEQ0N0K0H0E0B0m0k0j0Y0W0U0=1;191W2U2S2V3T3R3U4S4Q4B5@5A5k6l6m6O7P7Q7W8X8Y8;9<9=9_9`9a9j9k9\\:_:f:i:l:K:N:Q:T:W:Z:\\;_;b;S;V;Y;C<E<G<<<m;k;1<2<O<Q<S<i=[=P=h>X>Z>g?M@O@R@U@S@J@I@AB1B0BeBTB\\CmCAD@DQDiDhD5EdD<E4F2F0F=F:F7FbE_E\\EkEhEeES0P0M0J0G0D011o0h0g0e0V0T0`0:181Q2T2R2H2S3Q3P3R4P4K3?5=5>5c6i6j6h6M7N7L7U8V8T899:9W9]9^9\\9g9h9i9]:`:c:5;2;o:>;;;8;P;M;J;G;D;A;?<A<D<F<=<><n;o;3<5<R<T<Y=Z=Q=R=Y>[>\\>^>P@T@L@K@5B4B3B2BVBUB^C]CCDBDkDjDfDeD>E=E3F1FnElE@FCFFFIFLFOF;0>0A0205080513101i0f0d0c0b0_0I1H1D1P2O2G2F2D2O3N3M3J3H3a6b6e6f6g6I7J7K7R8S8397989V9Y9Z9[9f9^:a:d:4;1;n:=;:;7;O;L;I;F;C;@;@<B<0<4<U<V<X<`=]=\\=S=U=W=]>_>`>8B7B6BZBXBWB_CaC`CFDEDDDlDgDoEmE>FAFDFGFJFMF90<0?0003060714121a0^0]0G1C1B1N2L2E2C2B2@2L3I3`6d6E7F7G7H7O8Q8192969T9U9X96;3;0;?;<;9;Q;N;K;H;E;B;W<Y<^=_=a=T=V=X=\\B[BYBdCcCbCHDGD?FBFEFHFKFNF:0=0@0104070F1E1A1M2K2J2I2A2D7L8M8N8P809495961b:";
+    // first: decode the pixel mapping!
+    var sum = 1036080;
+    for (var i=0; i<1440; i++)
+    {
+        var d0 = codedMap.charCodeAt(i*2)  -48;
+        var d1 = codedMap.charCodeAt(i*2+1)-48;
+
+        map[i] = d0 | (d1<<6);
+        sum -= map[i];
+    }
+    if (sum!=0)
+        alert("Pixel mapping table corrupted!");
+}
+
+initPixelMap();
+
+// ================================== Camera Display ================================================
+
+var coord = new Array(1440);
+function initCameraCoordinates()
+{
+    coord[0] = [0, 0];
+    var cnt = 1;
+    for (var ring=1; ring<24; ring++)
+    {
+        for (var s=0; s<6; s++)
+        {
+            for (var i=1; i<=ring; i++)
+            {
+                var pos = new Position(s, ring, i);
+                if (pos.d() - pos.x > 395.75)
+                    continue;
+
+                coord[cnt++] = [ pos.x, pos.y];
+            }
+        }
+    }
+
+    coord[1438] = [7, -22];
+    coord[1439] = [7,  22];
+}
+
+initCameraCoordinates();
+
+function getIndex(id, mouse)
+{
+    var canv = document.getElementById(id);
+
+    var scale = 83;
+
+    var w = Math.min(canv.width/scale, canv.height/scale);
+
+    //ctx.translate(canv.width/2, canv.height/2);
+    //ctx.scale(w*2, w*2);
+    //ctx.scale(1, Math.sqrt(3)/2);
+    //ctx.translate(-0.5, 0);
+
+    mouse.x -= canv.width/2;
+    mouse.y -= canv.height/2;
+    mouse.x /= w*2;
+    mouse.y /= w*2;
+    mouse.y /= Math.sqrt(3)/2;
+    mouse.x -= -0.5;
+
+    for (var i=0; i<1440; i++)
+        if (isInside(coord[i][0], coord[i][1], mouse))
+            return i;
+
+    return -1;
+}
+
+
+function hueToRGB(hue)
+{
+    hue /= 3;
+    hue %= 6;
+
+    if (hue<1) return parseInt(255*hue,     10);
+    if (hue<3) return parseInt(255,         10);
+    if (hue<4) return parseInt(255*(4-hue), 10);
+
+    return 0.
+}
+
+function hueToHex(flt)
+{
+    var s = hueToRGB(flt).toString(16);
+    return s.length==2 ? s : "0"+s;
+}
+
+function HLStoRGB(hue)
+{
+    if (isNaN(hue))
+        return "fff";
+
+    if (hue<0)
+        return "eef"; // 555
+
+    if (hue>1)
+        return "dde";//"700"; // 666
+
+    hue *= 14;
+
+    var sr = hueToHex(20-hue);
+    var sg = hueToHex(14-hue);
+    var sb = hueToHex(26-hue);
+
+    return sr+sg+sb;
+}
+
+function outlineHex(ctx)
+{
+    ctx.scale(1/2, 1/3);
+
+    ctx.beginPath();
+    ctx.moveTo( 1,  1);
+    ctx.lineTo( 0,  2);
+    ctx.lineTo(-1,  1);
+    ctx.lineTo(-1, -1);
+    ctx.lineTo( 0, -2);
+    ctx.lineTo( 1, -1);
+    ctx.lineTo( 1,  1);
+}
+
+function fillHex(ctx, i, col, min, max)
+{
+    if (col===undefined/* || col===null*/)
+        return false;
+
+    var lvl = max==min ? 0.5 : (col-min)/(max-min);
+
+    ctx.fillStyle = "#"+HLStoRGB(lvl);
+
+    ctx.save();
+    ctx.translate(coord[i][0], coord[i][1]);
+    outlineHex(ctx);
+    ctx.fill();
+    ctx.restore();
+
+    return true;
+}
+
+function drawHex(ctx, i)
+{
+    ctx.save();
+    ctx.translate(coord[i][0], coord[i][1]);
+    outlineHex(ctx);
+    ctx.stroke();
+    ctx.restore();
+}
+
+
+function Position(s, ring, i)
+{
+    switch (s)
+    {
+    case 1: this.x =  ring     - i*0.5;  this.y =       + i; break;
+    case 2: this.x =  ring*0.5 - i;      this.y =  ring    ; break;
+    case 3: this.x = -ring*0.5 - i*0.5;  this.y =  ring - i; break;
+    case 4: this.x = -ring     + i*0.5;  this.y =       - i; break;
+    case 5: this.x = -ring*0.5 + i;      this.y = -ring    ; break;
+    case 0: this.x =  ring*0.5 + i*0.5;  this.y = -ring + i; break;
+    }
+    this.d = (function () { return this.x*this.x + this.y*this.y*3/4; });
+}
+
+function drawFullCam(id)
+{
+    var canv = document.getElementById(id);
+    if (!canv)
+        return;
+
+    var ctx = canv.getContext("2d");
+
+    ctx.clearRect(0, 0, canv.width, canv.height);
+
+    // ======================= Draw Graphics ======================
+
+    var data = canv.dataRel;
+    if (!data)
+        return;
+
+    var pixel = document.getElementById('pixel').value;
+
+    var min = (canv.zmin-canv.min)/canv.max;
+    var max = (canv.zmax-canv.min)/canv.max;
+
+    var scale = 83;
+
+    var w = Math.min(canv.width/scale, canv.height/scale);
+
+    ctx.save();
+    ctx.translate(canv.width/2, canv.height/2);
+    ctx.scale(w*2, w*2);
+    // ctx.rotate(Math.PI/3);
+
+    ctx.scale(1, Math.sqrt(3)/2);
+    ctx.translate(-0.5, 0);
+
+    if (document.getElementById('grid').checked)
+    {
+        ctx.lineWidth = 0.02;
+        ctx.strokeStyle = "#000";
+        for (var i=0; i<1440; i++)
+            drawHex(ctx, i);
+    }
+
+    var hasData = false;
+    if (max>=min)
+        for (var i=0; i<1440; i++)
+            hasData |= fillHex(ctx, i, data[i], min, max);
+
+    // ======================= Draw Ellipse ======================
+
+    if (document.getElementById('image').checked)
+    {
+        var h = Hillas(canv.dataAbs, canv.zmin, canv.zmax);
+        if (h)
+        {
+            ctx.save();
+
+            ctx.scale(1, 2/Math.sqrt(3));
+
+            ctx.beginPath();
+            ctx.moveTo(0.5, 0);
+            ctx.lineTo(h.mean[0], h.mean[1]);
+
+            ctx.strokeStyle = "#CCC";
+            ctx.lineWidth = 0.1;
+            ctx.stroke();
+
+            ctx.translate(h.mean[0], h.mean[1]);
+            ctx.rotate(h.phi);
+
+            ctx.beginPath();
+            ctx.moveTo(0, -h.disp);
+            ctx.lineTo(0,  h.disp);
+
+            ctx.strokeStyle = "#888";
+            ctx.lineWidth = 0.15;
+            ctx.stroke();
+
+            ctx.save();
+            ctx.scale(h.axis[0], h.axis[1]);
+            ctx.beginPath();
+            ctx.arc(0, 0, 1, 0, 2*Math.PI);
+            ctx.restore();
+
+            ctx.strokeStyle = "#555";
+            ctx.lineWidth = 0.15;
+            ctx.stroke();
+
+            ctx.restore();
+        }
+    }
+
+    // =================== Draw Pixel marker ====================
+
+    if (document.getElementById('marker').checked)
+    {
+        // Draw marker
+        ctx.lineWidth = 0.25;
+        ctx.strokeStyle = "#000";
+        drawHex(ctx, pixel);
+    }
+
+
+    ctx.restore();
+
+    if (!hasData)
+        return;
+
+    // ======================= Draw Legend ======================
+
+    var v0 = parseFloat(canv.zmin);
+    var v1 = parseFloat(canv.zmax);
+
+    var diff = v1-v0;
+
+    var cw = canv.width;
+    //var ch = canv.height;
+
+    ctx.font         = "8pt Arial";
+    ctx.textAlign    = "right";
+    ctx.textBaseline = "top";
+
+    for (var i=0; i<11; i++)
+    {
+        ctx.strokeStyle = "#"+HLStoRGB(i/10);
+        ctx.strokeText((v0+diff*i/10).toPrecision(3), cw-5, 125-i*12);
+    }
+
+    var pval = parseFloat(canv.dataAbs[pixel]).toFixed(1);
+    var lmin = parseFloat(canv.min).toFixed(1);
+    var lmax = parseFloat(canv.max).toFixed(1);
+
+    if (isNaN(pval))
+        pval = "";
+
+    var mw = Math.max(ctx.measureText(lmin).width,
+                      ctx.measureText(pval).width,
+                      ctx.measureText(lmax).width);
+
+    ctx.textBaseline = "top";
+    ctx.strokeStyle  = "#000";
+
+    ctx.strokeText(lmax, 5+mw, 5+24);
+    ctx.strokeText(pval, 5+mw, 5+12);
+    ctx.strokeText(lmin, 5+mw, 5);
+}
+
+// ===================================================================
+
+function Hillas(data, min, max)
+{
+    var mx = 0;
+    var my = 0;
+    var sz = 0;
+
+    var mx2 = 0;
+    var my2 = 0;
+    var mxy = 0;
+
+    var cnt = 0;
+    for (var i=0; i<1440; i++)
+    {
+        if (data[i]===undefined || data[i]<min || data[i]>max)
+            continue;
+
+        sz  += data[i];
+        mx  += data[i] * coord[i][0];
+        my  += data[i] * coord[i][1];
+
+        mx2 += data[i] * coord[i][0]*coord[i][0];
+        my2 += data[i] * coord[i][1]*coord[i][1];
+        mxy += data[i] * coord[i][0]*coord[i][1];
+
+        cnt++;
+    }
+
+    if (sz==0 || cnt<3)
+        return;
+
+    // Coordinates need to be scaled in y
+    var f = Math.sqrt(3)/2;
+
+    my  *= f;
+    mxy *= f;
+    my2 *= f*f;
+
+    var xx = mx2 - mx*mx/sz;
+    var yy = my2 - my*my/sz;
+    var xy = mxy - mx*my/sz;
+
+    var d0  = yy - xx;
+    var d1  = xy*2;
+    var d2  = Math.sqrt(d0*d0 + d1*d1) + d0;
+
+    var phi = 0;
+    var cos = 0;
+    var sin = 1;
+
+    var axis1 = yy;
+    var axis2 = xx;
+
+    // Correction for scale in x
+    var ratio = xx/yy;
+
+    if (d1!=0 || d2==0)
+    {
+        var tand  = d2==0 ? 0 : d2 / d1;
+        var tand2 = tand*tand;
+
+        var s2    = tand2+1;
+        var s     = Math.sqrt(s2);
+
+        phi = Math.atan(tand)-Math.PI/2;
+        cos = 1.0 /s;
+        sin = tand/s;
+
+        axis1 = (tand2*yy + d2 + xx);
+        axis2 = (tand2*xx - d2 + yy);
+
+        ratio = axis2/axis1;
+
+        axis1 /= s2;
+        axis2 /= s2;
+    }
+
+    var length = axis1<0 ? 0 : Math.sqrt(axis1/sz);
+    var width  = axis2<0 ? 0 : Math.sqrt(axis2/sz);
+
+    return {
+        "mean":  [ mx/sz, my/sz ],
+        "axis":  [ width, length ],
+        "phi":   phi,
+        "delta": [ cos, sin ],
+        "sumw":  sz,
+        "count": cnt,
+        "disp":  1.47/0.1111*(1-Math.sqrt(ratio)),
+    };
+}
Index: branches/testFACT++branch/www/viewer/index.php
===================================================================
--- branches/testFACT++branch/www/viewer/index.php	(revision 18277)
+++ branches/testFACT++branch/www/viewer/index.php	(revision 18277)
@@ -0,0 +1,409 @@
+<?php
+
+if (!extension_loaded('v8js'))
+    die("V8Js missing");
+
+$path = array(
+              "cal" => "/daq/www/cal/",
+              "raw" => "/daq/raw/",
+              "mc"  => "/daq/www/mc/",
+              );
+
+if (isset($_POST['editor1']) || isset($_POST['editor2']))
+{
+    $isOne = isset($_POST['editor1']);
+
+    $source = $isOne ? $_POST['editor1'] : $_POST['editor2'];
+    if (!isset($_POST['files']))
+        $name = $isOne ? "proc.js" : "main.js";
+    else
+        $name = $_POST['files'][0];
+
+    header($_SERVER["SERVER_PROTOCOL"] . " 200 OK");
+    header('Cache-Control: public'); // needed for i.e.
+    header('Content-Type: text/plain');
+    header('Content-Transfer-Encoding: Text');
+    header('Content-Disposition: attachment; filename="'.$name.'"');
+    print(str_replace("\r", "", $source));
+    return;
+}
+
+// This is a pretty weird hack because it does first convert
+// all data to ascii (json) to print it...
+if (isset($_POST['data']))
+{
+    header($_SERVER["SERVER_PROTOCOL"] . " 200 OK");
+    header('Cache-Control: public'); // needed for i.e.
+    header('Content-Type: text/plain');
+    header('Content-Transfer-Encoding: Text');
+    header('Content-Disposition: attachment; filename="'.$_POST['name'].'"');
+
+    $json = json_decode($_POST['data']);
+
+    $n   = count($json[0]);
+    $cnt = count($json);
+
+    for ($i=0; $i<$n; $i++)
+    {
+        print($i." ".$json[0][$i]);
+
+        if ($cnt>1)
+            print(" ".$json[1][$i]);
+        if ($cnt>2)
+            print(" ".$json[2][$i]);
+        if ($cnt>3)
+            print(" ".$json[3][$i]);
+        print("\n");
+    }
+    return;
+}
+
+if (!isset($_POST['file']) || !isset($_POST['event']) || !isset($_POST['pixel']))
+{
+   /*
+    function getList($path)
+    {
+        $hasdir = false;
+
+        $list = array();
+        foreach (new DirectoryIterator($path) as $file)
+        {
+           if ($file->isDot())
+              continue;
+
+           $name = $file->getFilename();
+
+
+           if ($file->isDir())
+           {
+               $list[$name] = getList($path."/".$name);
+               $hasdir = true;
+           }
+
+           if ($file->isFile() && $file->isReadable())
+           {
+               if (substr($name, 12)!=".fits.fz")
+                   continue;
+
+               array_push($list, substr($name, 9, 3));
+           }
+        }
+
+        if (!$hasdir)
+            sort($list);
+        return $list;
+    }
+    */
+
+    function getList(&$list, $path, $ext, $id, $sub = "")
+    {
+        $hasdir = false;
+
+        $dir = new DirectoryIterator($path."/".$sub);
+        foreach ($dir as $file)
+        {
+           if ($file->isDot())
+              continue;
+
+           $name = $file->getFilename();
+
+           if ($file->isDir())
+               getList($list, $path, $ext, $id, $sub."/".$name);
+
+           if (!$file->isFile() || !$file->isReadable())
+               continue;
+
+           if (substr($name, -strlen($ext))!=$ext)
+               continue;
+
+           $rc = substr($name, 0, 4)."/".substr($name, 4, 2)."/".substr($name, 6, 2)."-".substr($name, 9, 3);
+
+           if (!isset($list[$rc]))
+               $list[$rc] = 0;
+
+           $list[$rc] |= $id;
+        }
+    }
+
+    try
+    {
+        $list = array();
+        getList($list, $path['raw'], ".fits.fz",  1);
+        getList($list, $path['raw'], ".drs.fits", 2);
+        getList($list, $path['cal'], ".fits.fz",  4);
+        getList($list, $path['mc'],  ".fits.fz",  8);
+        ksort($list);
+    }
+    catch (Exception $e)
+    {
+        return header('HTTP/1.0 400 '.$e->getMessage());
+    }
+
+    print(json_encode($list));
+    return;
+}
+
+$event = intval($_POST['event']);
+$pixel = intval($_POST['pixel']);
+
+function get($handle, $format, $count = 1)
+{
+    $size = 0;
+    switch ($format)
+    {
+    case 'd': $size = 8; break;
+    case 'L': $size = 4; break;
+    case 'S': $size = 2; break;
+    case 's': $size = 2; break;
+    }
+
+    if ($size==0)
+        return;
+
+    $binary = fread($handle, $size*$count);
+    $data   = unpack($format.$count, $binary);
+
+    return $count==1 ? $data[1] : $data;
+}
+
+//ini_set("memory_limit", "64M");
+
+//define('E_FATAL',  E_ERROR | E_USER_ERROR | E_PARSE | E_CORE_ERROR |
+//        E_COMPILE_ERROR | E_RECOVERABLE_ERROR);
+
+$rc = array();
+$rc['startPhp'] = microtime(true);
+
+// ============================ Read data from file ==========================
+$file = $_POST['file'];
+
+$y = substr($file,  0, 4);
+$m = substr($file,  5, 2);
+$d = substr($file,  8, 2);
+$r = substr($file, 11, 3);
+
+$rootpath  = isset($_POST['calibrated']) && !isset($_POST['drsfile']) ? $path['cal'] : $path['raw'];
+$extension = isset($_POST['drsfile'])    ? ".drs.fits" : ".fits.fz";
+$filename  = $rootpath.$y."/".$m."/".$d."/".$y.$m.$d."_".$r.$extension;
+
+if (isset($_POST['montecarlo']))
+{
+    $rootpath  = $path['mc'];
+    $extension = ".fits.fz";
+    $filename  = $rootpath.$y.$m.$d."_".$r.$extension;
+}
+
+if (!file_exists($filename))
+    return header("HTTP/1.0 400 File '".$file."' not found.");
+
+$command = "/home/fact/FACT++/getevent ".$filename." ".$event." 2> /dev/null";
+$file = popen($command, "r");
+if (!$file)
+    return header('HTTP/1.0 400 Could not open pipe.');
+
+$evt = array();
+$fil = array();
+$fil['isMC']         = isset($_POST['montecarlo']);
+$fil['isDRS']        = isset($_POST['drsfile']);
+$fil['isCalibrated'] = isset($_POST['calibrated']);
+
+$fil['runType'] = trim(fread($file, 80));
+if (feof($file))
+   return header('HTTP/1.0 400 Data not available.');
+
+$fil['runStart']      = get($file, "d");
+$fil['runEnd']        = get($file, "d");
+$fil['drsFile']       = get($file, "s");
+$fil['numEvents']     = get($file, "L");
+$fil['scale']         = get($file, "s");
+$evt['numRoi']        = get($file, "L");
+$evt['numPix']        = get($file, "L");
+$evt['eventNumber']   = get($file, "L");
+//$evt['triggerNumber'] = get($file, "L");
+$evt['triggerType']   = get($file, "S");
+$evt['unixTime']      = get($file, "L", 2);
+
+if (isset($_POST['source1']))
+{
+    // Read the data and copy it from an associative array to an Array
+    // (this is just nicer and seems more logical)
+    $binary = array();
+    for ($i=0; $i<$evt['numPix']; $i++)
+        $binary[$i] = fread($file, 2*$evt['numRoi']);
+    /*
+    $data = array();
+    for ($i=0; $i<$evt['numPix']; $i++)
+    {
+        $var = get($file, "s", $evt['numRoi']);
+        $data[$i] = array();
+        for ($j=0; $j<$evt['numRoi']; $j++)
+            $data[$i][$j] = $var[$j+1]*0.48828125; // dac -> mV
+    }*/
+}
+
+if (feof($file))
+   return header('HTTP/1.0 400 Data from file incomplete.');
+
+pclose($file);
+
+if ($fil['numEvents']==0)
+    return header('HTTP/1.0 400 Could not read event.');
+
+// =========================== Decode trigger type ===========================
+
+$typ = $evt['triggerType'];
+$evt['trigger'] = array();
+if ($typ!=0 && ($typ & 0x8703)==0)
+    array_push($evt['trigger'], "PHYS");
+if (($typ&0x0100)!=0)
+    array_push($evt['trigger'], "LPext");
+if (($typ&0x0200)!=0)
+    array_push($evt['trigger'], "LPint");
+if (($typ&0x0400)!=0)
+    array_push($evt['trigger'], "PED");
+if (($typ&0x8000)!=0)
+    array_push($evt['trigger'], "TIM");
+if (($typ&0x0001)!=0)
+    array_push($evt['trigger'], "EXT1");
+if (($typ&0x0002)!=0)
+    array_push($evt['trigger'], "EXT2");
+
+// =============================== Some data =================================
+
+//require_once("neighbors.php");
+
+//$rc['neighbors'] = $neighbors;
+$rc['event'] = $evt;
+$rc['file']  = $fil;
+$rc['event']['index'] = $event;
+$rc['event']['pixel'] = $pixel;
+//$rc['waveform'] = $data[$pixel];
+
+// Get execution times
+$now = microtime(true);
+
+if (isset($_POST['source1']))
+{
+    // =============================== Run Javascript ============================
+
+/*
+$JS = <<< EOT
+require("path/to/module1");
+EOT;
+
+$v8 = new V8Js();
+$v8->setModuleLoader(function($module) {
+  switch ($module) {
+    case 'path/to/module1':
+      return 'print(' . json_encode($module . PHP_EOL) . ');require("./module2");';
+
+    case 'path/to/module2':
+      return 'print(' . json_encode($module . PHP_EOL) . ');require("../../module3");';
+
+    default:
+      return 'print(' . json_encode($module . PHP_EOL) . ');';
+  }
+});
+*/
+
+    // V8Js global methods:  exit, print, sleep, var_dump, require
+    //$v8 = new V8Js("$", array("data"=>"data"), extensions, flags, millisecond, bytes);
+    $v8 = new V8Js("$"/*, array("data"=>"data")*/);
+
+    //$v8 = new V8Js("$", array("data"=>"data"));
+
+    //V8Js::registerExtension("exit", "1");
+    //$v8 = new V8Js("$", array(), array("exit"));
+
+    //$v8->func = function($a) { echo "Closure with param $a\n"; };
+    //$v8->greeting = "From PHP with love!";
+
+    // This is much faster than the variables option in the constructor
+
+    $roi = $evt['numRoi'];
+
+    //$v8->data   = $data;
+    //$v8->test   = array();;
+    //$v8->data   = array();
+    $v8->nroi      = $evt['numRoi'];
+    $v8->npix      = $evt['numPix'];
+    $v8->trigger   = $evt['trigger'];
+    $v8->event     = $evt;
+    $v8->file      = $fil;
+//    $v8->neighbors = $neighbors;
+    $v8->clone     = function($data) { return $data; };
+    $v8->scale     = $fil['scale']==0 ? 2000./4096. : 1./$fil['scale'];
+    $v8->unpack    = function($i)
+    {
+        global $binary, $roi, $v8;
+        $u = unpack("s".$roi, $binary[$i]);
+        $arr = array();
+        for ($i=0; $i<$roi; $i++)
+            $arr[$i] = $u[$i+1]*$v8->scale;
+        return $arr;
+    };
+
+    //  10, 445, 91.75 MiB
+    // 376, 720, 91.75 MiB
+
+    $internal = file_get_contents("internal.js");
+
+    // Buffer output from javascript
+    ob_start();
+
+    $rc['timeJS']  = array();
+    $rc['startJs'] = microtime(true);
+
+    try
+    {
+        $v8->executeString($internal, 'internal.js');
+
+        // We unpack the data pixel by pixel and copy the array directly to the
+        // Javasscript array. This significantly decreases memory usage because
+        // we need only one of the super memory hungry php arrays of size ROI
+        // instead of 1440.
+        $JS = "$.data = new Array($.event.numPix); for (var i=0; i<$.event.numPix; i++) $.data[i] = $.unpack(i);";
+        $v8->executeString($JS, 'internal');
+
+        $rc['timeJs'][0] = (microtime(true) - $rc['startJs']);
+
+        $JS = "'use strict'; function proc(pixel){\n".$_POST['source1']."\n};proc(".$pixel.");";
+        $rc['waveform'] = $v8->executeString($JS, 'proc');
+
+        $rc['timeJs'][1] = (microtime(true) - $rc['startJs']);
+
+        if (isset($_POST['source2']))
+        {
+            $JS = "'use strict'; (function main(){\n".$_POST['source2']."\n})();";
+            $rc['ret'] = $v8->executeString($JS, 'main');
+        }
+
+        // This is supposed to work, but it seems it does not...
+        //$v8->proc = $rc['ret']->proc;
+        //$rc['ret'] = $v8->executeString('PHP.proc();', 'proc');
+    }
+    catch (V8JsException $e)
+    {
+        $rc['err'] = array();
+        $rc['err']['message']    = $e->getMessage();
+        $rc['err']['file']       = $e->getJsFileName();
+        $rc['err']['sourceLine'] = $e->getJsSourceLine();
+        $rc['err']['lineNumber'] = $e->getJsLineNumber()-1;
+        $rc['err']['trace']      = $e->getJsTrace();
+    }
+
+    $rc['timeJs'][2]  = (microtime(true) - $rc['startJs']);
+
+    // Copy output buffer and clean it
+    $rc['debug'] = ob_get_contents();
+    ob_end_clean();
+}
+
+$rc['memory']  = memory_get_peak_usage(true)/1024/1024;
+$rc['timePhp'] = (microtime(true) - $rc['startPhp']);
+
+//unset($rc['neighbors']);
+
+// Output result as JSON object
+print(json_encode($rc));
+?>
Index: branches/testFACT++branch/www/viewer/internal.js
===================================================================
--- branches/testFACT++branch/www/viewer/internal.js	(revision 18277)
+++ branches/testFACT++branch/www/viewer/internal.js	(revision 18277)
@@ -0,0 +1,1503 @@
+$.neighbors = [
+    [ 17, 15, 16, 1, 3, 2 ],
+    [ 0, 16, 4, 3 ],
+    [ 32, 17, 0, 3, 5, 29 ],
+    [ 2, 0, 1, 4, 6, 5 ],
+    [ 3, 1, 7, 6 ],
+    [ 29, 2, 3, 6, 8, 26 ],
+    [ 5, 3, 4, 7, 71, 8 ],
+    [ 6, 4, 70, 71 ],
+    [ 26, 5, 6, 71, 69, 23 ],
+    [ 1439, 1437, 1438, 10, 12, 11 ],
+    [ 9, 1438, 13, 12 ],
+    [ 1400, 1439, 9, 12, 14, 1397 ],
+    [ 11, 9, 10, 13, 15, 14 ],
+    [ 12, 10, 16, 15 ],
+    [ 1397, 11, 12, 15, 17, 35 ],
+    [ 14, 12, 13, 16, 0, 17 ],
+    [ 15, 13, 1, 0 ],
+    [ 35, 14, 15, 0, 2, 32 ],
+    [ 19, 21, 20, 65, 61, 62 ],
+    [ 116, 22, 21, 18, 62, 113 ],
+    [ 21, 23, 69, 67, 65, 18 ],
+    [ 22, 24, 23, 20, 18, 19 ],
+    [ 119, 25, 24, 21, 19, 116 ],
+    [ 24, 26, 8, 69, 20, 21 ],
+    [ 25, 27, 26, 23, 21, 22 ],
+    [ 122, 28, 27, 24, 22, 119 ],
+    [ 27, 29, 5, 8, 23, 24 ],
+    [ 28, 30, 29, 26, 24, 25 ],
+    [ 125, 31, 30, 27, 25, 122 ],
+    [ 30, 32, 2, 5, 26, 27 ],
+    [ 31, 33, 32, 29, 27, 28 ],
+    [ 128, 34, 33, 30, 28, 125 ],
+    [ 33, 35, 17, 2, 29, 30 ],
+    [ 34, 1395, 35, 32, 30, 31 ],
+    [ 131, 1396, 1395, 33, 31, 128 ],
+    [ 1395, 1397, 14, 17, 32, 33 ],
+    [ 37, 39, 38, 50, 47, 48 ],
+    [ 80, 40, 39, 36, 48, 77 ],
+    [ 39, 41, 53, 51, 50, 36 ],
+    [ 40, 42, 41, 38, 36, 37 ],
+    [ 92, 43, 42, 39, 37, 80 ],
+    [ 42, 44, 58, 53, 38, 39 ],
+    [ 43, 108, 44, 41, 39, 40 ],
+    [ 95, 109, 108, 42, 40, 92 ],
+    [ 108, 110, 60, 58, 41, 42 ],
+    [ 89, 47, 46, 86, 87 ],
+    [ 47, 50, 49, 45 ],
+    [ 48, 36, 50, 46, 45, 89 ],
+    [ 77, 37, 36, 47, 89, 74 ],
+    [ 50, 51, 46 ],
+    [ 36, 38, 51, 49, 46, 47 ],
+    [ 38, 53, 52, 49, 50 ],
+    [ 53, 55, 54, 51 ],
+    [ 41, 58, 55, 52, 51, 38 ],
+    [ 55, 56, 52 ],
+    [ 58, 59, 56, 54, 52, 53 ],
+    [ 59, 63, 57, 54, 55 ],
+    [ 63, 64, 56 ],
+    [ 44, 60, 59, 55, 53, 41 ],
+    [ 60, 61, 63, 56, 55, 58 ],
+    [ 110, 62, 61, 59, 58, 44 ],
+    [ 62, 18, 65, 63, 59, 60 ],
+    [ 113, 19, 18, 61, 60, 110 ],
+    [ 61, 65, 64, 57, 56, 59 ],
+    [ 65, 67, 66, 57, 63 ],
+    [ 18, 20, 67, 64, 63, 61 ],
+    [ 67, 68, 64 ],
+    [ 20, 69, 68, 66, 64, 65 ],
+    [ 69, 71, 70, 66, 67 ],
+    [ 23, 8, 71, 68, 67, 20 ],
+    [ 71, 7, 68 ],
+    [ 8, 6, 7, 70, 68, 69 ],
+    [ 73, 75, 74, 88, 84, 161 ],
+    [ 170, 76, 75, 72, 161, 167 ],
+    [ 75, 77, 48, 89, 88, 72 ],
+    [ 76, 78, 77, 74, 72, 73 ],
+    [ 173, 79, 78, 75, 73, 170 ],
+    [ 78, 80, 37, 48, 74, 75 ],
+    [ 79, 90, 80, 77, 75, 76 ],
+    [ 176, 91, 90, 78, 76, 173 ],
+    [ 90, 92, 40, 37, 77, 78 ],
+    [ 82, 83, 85, 157 ],
+    [ 160, 84, 83, 81, 157, 158 ],
+    [ 84, 88, 87, 85, 81, 82 ],
+    [ 161, 72, 88, 83, 82, 160 ],
+    [ 83, 87, 86, 81 ],
+    [ 87, 45, 85 ],
+    [ 88, 89, 45, 86, 85, 83 ],
+    [ 72, 74, 89, 87, 83, 84 ],
+    [ 74, 48, 47, 45, 87, 88 ],
+    [ 91, 93, 92, 80, 78, 79 ],
+    [ 179, 94, 93, 90, 79, 176 ],
+    [ 93, 95, 43, 40, 80, 90 ],
+    [ 94, 96, 95, 92, 90, 91 ],
+    [ 182, 97, 96, 93, 91, 179 ],
+    [ 96, 98, 109, 43, 92, 93 ],
+    [ 97, 99, 98, 95, 93, 94 ],
+    [ 185, 100, 99, 96, 94, 182 ],
+    [ 99, 101, 112, 109, 95, 96 ],
+    [ 100, 102, 101, 98, 96, 97 ],
+    [ 188, 103, 102, 99, 97, 185 ],
+    [ 102, 104, 115, 112, 98, 99 ],
+    [ 103, 105, 104, 101, 99, 100 ],
+    [ 191, 106, 105, 102, 100, 188 ],
+    [ 105, 107, 118, 115, 101, 102 ],
+    [ 106, 135, 107, 104, 102, 103 ],
+    [ 194, 136, 135, 105, 103, 191 ],
+    [ 135, 137, 121, 118, 104, 105 ],
+    [ 109, 111, 110, 44, 42, 43 ],
+    [ 98, 112, 111, 108, 43, 95 ],
+    [ 111, 113, 62, 60, 44, 108 ],
+    [ 112, 114, 113, 110, 108, 109 ],
+    [ 101, 115, 114, 111, 109, 98 ],
+    [ 114, 116, 19, 62, 110, 111 ],
+    [ 115, 117, 116, 113, 111, 112 ],
+    [ 104, 118, 117, 114, 112, 101 ],
+    [ 117, 119, 22, 19, 113, 114 ],
+    [ 118, 120, 119, 116, 114, 115 ],
+    [ 107, 121, 120, 117, 115, 104 ],
+    [ 120, 122, 25, 22, 116, 117 ],
+    [ 121, 123, 122, 119, 117, 118 ],
+    [ 137, 124, 123, 120, 118, 107 ],
+    [ 123, 125, 28, 25, 119, 120 ],
+    [ 124, 126, 125, 122, 120, 121 ],
+    [ 140, 127, 126, 123, 121, 137 ],
+    [ 126, 128, 31, 28, 122, 123 ],
+    [ 127, 129, 128, 125, 123, 124 ],
+    [ 143, 130, 129, 126, 124, 140 ],
+    [ 129, 131, 34, 31, 125, 126 ],
+    [ 130, 132, 131, 128, 126, 127 ],
+    [ 209, 133, 132, 129, 127, 143 ],
+    [ 132, 134, 1396, 34, 128, 129 ],
+    [ 133, 1377, 134, 131, 129, 130 ],
+    [ 212, 1378, 1377, 132, 130, 209 ],
+    [ 1377, 1379, 1399, 1396, 131, 132 ],
+    [ 136, 138, 137, 107, 105, 106 ],
+    [ 197, 139, 138, 135, 106, 194 ],
+    [ 138, 140, 124, 121, 107, 135 ],
+    [ 139, 141, 140, 137, 135, 136 ],
+    [ 200, 142, 141, 138, 136, 197 ],
+    [ 141, 143, 127, 124, 137, 138 ],
+    [ 142, 207, 143, 140, 138, 139 ],
+    [ 203, 208, 207, 141, 139, 200 ],
+    [ 207, 209, 130, 127, 140, 141 ],
+    [ 222, 223, 146, 220 ],
+    [ 146, 147, 153 ],
+    [ 223, 148, 147, 145, 144 ],
+    [ 148, 150, 149, 153, 145, 146 ],
+    [ 225, 227, 150, 147, 146, 223 ],
+    [ 150, 151, 156, 154, 153, 147 ],
+    [ 227, 152, 151, 149, 147, 148 ],
+    [ 152, 162, 159, 156, 149, 150 ],
+    [ 230, 163, 162, 151, 150, 227 ],
+    [ 147, 149, 154, 145 ],
+    [ 149, 156, 155, 153 ],
+    [ 156, 158, 157, 154 ],
+    [ 151, 159, 158, 155, 154, 149 ],
+    [ 158, 82, 81, 155 ],
+    [ 159, 160, 82, 157, 155, 156 ],
+    [ 162, 164, 160, 158, 156, 151 ],
+    [ 164, 161, 84, 82, 158, 159 ],
+    [ 167, 73, 72, 84, 160, 164 ],
+    [ 163, 165, 164, 159, 151, 152 ],
+    [ 233, 166, 165, 162, 152, 230 ],
+    [ 165, 167, 161, 160, 159, 162 ],
+    [ 166, 168, 167, 164, 162, 163 ],
+    [ 236, 169, 168, 165, 163, 233 ],
+    [ 168, 170, 73, 161, 164, 165 ],
+    [ 169, 171, 170, 167, 165, 166 ],
+    [ 239, 172, 171, 168, 166, 236 ],
+    [ 171, 173, 76, 73, 167, 168 ],
+    [ 172, 174, 173, 170, 168, 169 ],
+    [ 242, 175, 174, 171, 169, 239 ],
+    [ 174, 176, 79, 76, 170, 171 ],
+    [ 175, 177, 176, 173, 171, 172 ],
+    [ 245, 178, 177, 174, 172, 242 ],
+    [ 177, 179, 91, 79, 173, 174 ],
+    [ 178, 180, 179, 176, 174, 175 ],
+    [ 248, 181, 180, 177, 175, 245 ],
+    [ 180, 182, 94, 91, 176, 177 ],
+    [ 181, 183, 182, 179, 177, 178 ],
+    [ 251, 184, 183, 180, 178, 248 ],
+    [ 183, 185, 97, 94, 179, 180 ],
+    [ 184, 186, 185, 182, 180, 181 ],
+    [ 263, 187, 186, 183, 181, 251 ],
+    [ 186, 188, 100, 97, 182, 183 ],
+    [ 187, 189, 188, 185, 183, 184 ],
+    [ 266, 190, 189, 186, 184, 263 ],
+    [ 189, 191, 103, 100, 185, 186 ],
+    [ 190, 192, 191, 188, 186, 187 ],
+    [ 269, 193, 192, 189, 187, 266 ],
+    [ 192, 194, 106, 103, 188, 189 ],
+    [ 193, 195, 194, 191, 189, 190 ],
+    [ 254, 196, 195, 192, 190, 269 ],
+    [ 195, 197, 136, 106, 191, 192 ],
+    [ 196, 198, 197, 194, 192, 193 ],
+    [ 257, 199, 198, 195, 193, 254 ],
+    [ 198, 200, 139, 136, 194, 195 ],
+    [ 199, 201, 200, 197, 195, 196 ],
+    [ 260, 202, 201, 198, 196, 257 ],
+    [ 201, 203, 142, 139, 197, 198 ],
+    [ 202, 204, 203, 200, 198, 199 ],
+    [ 1145, 205, 204, 201, 199, 260 ],
+    [ 204, 206, 208, 142, 200, 201 ],
+    [ 205, 1251, 206, 203, 201, 202 ],
+    [ 1148, 1252, 1251, 204, 202, 1145 ],
+    [ 1251, 1253, 211, 208, 203, 204 ],
+    [ 208, 210, 209, 143, 141, 142 ],
+    [ 206, 211, 210, 207, 142, 203 ],
+    [ 210, 212, 133, 130, 143, 207 ],
+    [ 211, 213, 212, 209, 207, 208 ],
+    [ 1253, 214, 213, 210, 208, 206 ],
+    [ 213, 215, 1378, 133, 209, 210 ],
+    [ 214, 1242, 215, 212, 210, 211 ],
+    [ 1256, 1243, 1242, 213, 211, 1253 ],
+    [ 1242, 1244, 1381, 1378, 212, 213 ],
+    [ 335, 219, 218 ],
+    [ 218, 221, 220 ],
+    [ 219, 288, 221, 217, 216 ],
+    [ 338, 289, 288, 218, 216, 335 ],
+    [ 221, 222, 144, 217 ],
+    [ 288, 290, 222, 220, 217, 218 ],
+    [ 290, 224, 223, 144, 220, 221 ],
+    [ 224, 225, 148, 146, 144, 222 ],
+    [ 293, 226, 225, 223, 222, 290 ],
+    [ 226, 228, 227, 148, 223, 224 ],
+    [ 296, 229, 228, 225, 224, 293 ],
+    [ 228, 230, 152, 150, 148, 225 ],
+    [ 229, 231, 230, 227, 225, 226 ],
+    [ 299, 232, 231, 228, 226, 296 ],
+    [ 231, 233, 163, 152, 227, 228 ],
+    [ 232, 234, 233, 230, 228, 229 ],
+    [ 302, 235, 234, 231, 229, 299 ],
+    [ 234, 236, 166, 163, 230, 231 ],
+    [ 235, 237, 236, 233, 231, 232 ],
+    [ 305, 238, 237, 234, 232, 302 ],
+    [ 237, 239, 169, 166, 233, 234 ],
+    [ 238, 240, 239, 236, 234, 235 ],
+    [ 308, 241, 240, 237, 235, 305 ],
+    [ 240, 242, 172, 169, 236, 237 ],
+    [ 241, 243, 242, 239, 237, 238 ],
+    [ 311, 244, 243, 240, 238, 308 ],
+    [ 243, 245, 175, 172, 239, 240 ],
+    [ 244, 246, 245, 242, 240, 241 ],
+    [ 314, 247, 246, 243, 241, 311 ],
+    [ 246, 248, 178, 175, 242, 243 ],
+    [ 247, 249, 248, 245, 243, 244 ],
+    [ 317, 250, 249, 246, 244, 314 ],
+    [ 249, 251, 181, 178, 245, 246 ],
+    [ 250, 261, 251, 248, 246, 247 ],
+    [ 320, 262, 261, 249, 247, 317 ],
+    [ 261, 263, 184, 181, 248, 249 ],
+    [ 253, 255, 254, 269, 267, 268 ],
+    [ 278, 256, 255, 252, 268, 275 ],
+    [ 255, 257, 196, 193, 269, 252 ],
+    [ 256, 258, 257, 254, 252, 253 ],
+    [ 281, 259, 258, 255, 253, 278 ],
+    [ 258, 260, 199, 196, 254, 255 ],
+    [ 259, 1143, 260, 257, 255, 256 ],
+    [ 284, 1144, 1143, 258, 256, 281 ],
+    [ 1143, 1145, 202, 199, 257, 258 ],
+    [ 262, 264, 263, 251, 249, 250 ],
+    [ 323, 265, 264, 261, 250, 320 ],
+    [ 264, 266, 187, 184, 251, 261 ],
+    [ 265, 267, 266, 263, 261, 262 ],
+    [ 272, 268, 267, 264, 262, 323 ],
+    [ 267, 269, 190, 187, 263, 264 ],
+    [ 268, 252, 269, 266, 264, 265 ],
+    [ 275, 253, 252, 267, 265, 272 ],
+    [ 252, 254, 193, 190, 266, 267 ],
+    [ 271, 273, 272, 323, 321, 322 ],
+    [ 368, 274, 273, 270, 322, 365 ],
+    [ 273, 275, 268, 265, 323, 270 ],
+    [ 274, 276, 275, 272, 270, 271 ],
+    [ 371, 277, 276, 273, 271, 368 ],
+    [ 276, 278, 253, 268, 272, 273 ],
+    [ 277, 279, 278, 275, 273, 274 ],
+    [ 374, 280, 279, 276, 274, 371 ],
+    [ 279, 281, 256, 253, 275, 276 ],
+    [ 280, 282, 281, 278, 276, 277 ],
+    [ 377, 283, 282, 279, 277, 374 ],
+    [ 282, 284, 259, 256, 278, 279 ],
+    [ 283, 285, 284, 281, 279, 280 ],
+    [ 389, 286, 285, 282, 280, 377 ],
+    [ 285, 287, 1144, 259, 281, 282 ],
+    [ 286, 1107, 287, 284, 282, 283 ],
+    [ 392, 1108, 1107, 285, 283, 389 ],
+    [ 1107, 1109, 1147, 1144, 284, 285 ],
+    [ 289, 291, 290, 221, 218, 219 ],
+    [ 341, 292, 291, 288, 219, 338 ],
+    [ 291, 293, 224, 222, 221, 288 ],
+    [ 292, 294, 293, 290, 288, 289 ],
+    [ 326, 295, 294, 291, 289, 341 ],
+    [ 294, 296, 226, 224, 290, 291 ],
+    [ 295, 297, 296, 293, 291, 292 ],
+    [ 329, 298, 297, 294, 292, 326 ],
+    [ 297, 299, 229, 226, 293, 294 ],
+    [ 298, 300, 299, 296, 294, 295 ],
+    [ 332, 301, 300, 297, 295, 329 ],
+    [ 300, 302, 232, 229, 296, 297 ],
+    [ 301, 303, 302, 299, 297, 298 ],
+    [ 344, 304, 303, 300, 298, 332 ],
+    [ 303, 305, 235, 232, 299, 300 ],
+    [ 304, 306, 305, 302, 300, 301 ],
+    [ 347, 307, 306, 303, 301, 344 ],
+    [ 306, 308, 238, 235, 302, 303 ],
+    [ 307, 309, 308, 305, 303, 304 ],
+    [ 350, 310, 309, 306, 304, 347 ],
+    [ 309, 311, 241, 238, 305, 306 ],
+    [ 310, 312, 311, 308, 306, 307 ],
+    [ 353, 313, 312, 309, 307, 350 ],
+    [ 312, 314, 244, 241, 308, 309 ],
+    [ 313, 315, 314, 311, 309, 310 ],
+    [ 356, 316, 315, 312, 310, 353 ],
+    [ 315, 317, 247, 244, 311, 312 ],
+    [ 316, 318, 317, 314, 312, 313 ],
+    [ 359, 319, 318, 315, 313, 356 ],
+    [ 318, 320, 250, 247, 314, 315 ],
+    [ 319, 321, 320, 317, 315, 316 ],
+    [ 362, 322, 321, 318, 316, 359 ],
+    [ 321, 323, 262, 250, 317, 318 ],
+    [ 322, 270, 323, 320, 318, 319 ],
+    [ 365, 271, 270, 321, 319, 362 ],
+    [ 270, 272, 265, 262, 320, 321 ],
+    [ 325, 327, 326, 341, 339, 340 ],
+    [ 449, 328, 327, 324, 340, 446 ],
+    [ 327, 329, 295, 292, 341, 324 ],
+    [ 328, 330, 329, 326, 324, 325 ],
+    [ 452, 331, 330, 327, 325, 449 ],
+    [ 330, 332, 298, 295, 326, 327 ],
+    [ 331, 342, 332, 329, 327, 328 ],
+    [ 455, 343, 342, 330, 328, 452 ],
+    [ 342, 344, 301, 298, 329, 330 ],
+    [ 334, 336, 335 ],
+    [ 435, 337, 336, 333, 433 ],
+    [ 336, 338, 219, 216, 333 ],
+    [ 337, 339, 338, 335, 333, 334 ],
+    [ 443, 340, 339, 336, 334, 435 ],
+    [ 339, 341, 289, 219, 335, 336 ],
+    [ 340, 324, 341, 338, 336, 337 ],
+    [ 446, 325, 324, 339, 337, 443 ],
+    [ 324, 326, 292, 289, 338, 339 ],
+    [ 343, 345, 344, 332, 330, 331 ],
+    [ 458, 346, 345, 342, 331, 455 ],
+    [ 345, 347, 304, 301, 332, 342 ],
+    [ 346, 348, 347, 344, 342, 343 ],
+    [ 461, 349, 348, 345, 343, 458 ],
+    [ 348, 350, 307, 304, 344, 345 ],
+    [ 349, 351, 350, 347, 345, 346 ],
+    [ 464, 352, 351, 348, 346, 461 ],
+    [ 351, 353, 310, 307, 347, 348 ],
+    [ 352, 354, 353, 350, 348, 349 ],
+    [ 467, 355, 354, 351, 349, 464 ],
+    [ 354, 356, 313, 310, 350, 351 ],
+    [ 355, 357, 356, 353, 351, 352 ],
+    [ 398, 358, 357, 354, 352, 467 ],
+    [ 357, 359, 316, 313, 353, 354 ],
+    [ 358, 360, 359, 356, 354, 355 ],
+    [ 401, 361, 360, 357, 355, 398 ],
+    [ 360, 362, 319, 316, 356, 357 ],
+    [ 361, 363, 362, 359, 357, 358 ],
+    [ 404, 364, 363, 360, 358, 401 ],
+    [ 363, 365, 322, 319, 359, 360 ],
+    [ 364, 366, 365, 362, 360, 361 ],
+    [ 407, 367, 366, 363, 361, 404 ],
+    [ 366, 368, 271, 322, 362, 363 ],
+    [ 367, 369, 368, 365, 363, 364 ],
+    [ 410, 370, 369, 366, 364, 407 ],
+    [ 369, 371, 274, 271, 365, 366 ],
+    [ 370, 372, 371, 368, 366, 367 ],
+    [ 413, 373, 372, 369, 367, 410 ],
+    [ 372, 374, 277, 274, 368, 369 ],
+    [ 373, 375, 374, 371, 369, 370 ],
+    [ 380, 376, 375, 372, 370, 413 ],
+    [ 375, 377, 280, 277, 371, 372 ],
+    [ 376, 387, 377, 374, 372, 373 ],
+    [ 383, 388, 387, 375, 373, 380 ],
+    [ 387, 389, 283, 280, 374, 375 ],
+    [ 379, 381, 380, 413, 411, 412 ],
+    [ 422, 382, 381, 378, 412, 419 ],
+    [ 381, 383, 376, 373, 413, 378 ],
+    [ 382, 384, 383, 380, 378, 379 ],
+    [ 425, 385, 384, 381, 379, 422 ],
+    [ 384, 386, 388, 376, 380, 381 ],
+    [ 385, 999, 386, 383, 381, 382 ],
+    [ 428, 1000, 999, 384, 382, 425 ],
+    [ 999, 1001, 391, 388, 383, 384 ],
+    [ 388, 390, 389, 377, 375, 376 ],
+    [ 386, 391, 390, 387, 376, 383 ],
+    [ 390, 392, 286, 283, 377, 387 ],
+    [ 391, 393, 392, 389, 387, 388 ],
+    [ 1001, 394, 393, 390, 388, 386 ],
+    [ 393, 395, 1108, 286, 389, 390 ],
+    [ 394, 1098, 395, 392, 390, 391 ],
+    [ 1004, 1099, 1098, 393, 391, 1001 ],
+    [ 1098, 1100, 1111, 1108, 392, 393 ],
+    [ 397, 399, 398, 467, 465, 466 ],
+    [ 503, 400, 399, 396, 466, 500 ],
+    [ 399, 401, 358, 355, 467, 396 ],
+    [ 400, 402, 401, 398, 396, 397 ],
+    [ 515, 403, 402, 399, 397, 503 ],
+    [ 402, 404, 361, 358, 398, 399 ],
+    [ 403, 405, 404, 401, 399, 400 ],
+    [ 518, 406, 405, 402, 400, 515 ],
+    [ 405, 407, 364, 361, 401, 402 ],
+    [ 406, 408, 407, 404, 402, 403 ],
+    [ 521, 409, 408, 405, 403, 518 ],
+    [ 408, 410, 367, 364, 404, 405 ],
+    [ 409, 411, 410, 407, 405, 406 ],
+    [ 416, 412, 411, 408, 406, 521 ],
+    [ 411, 413, 370, 367, 407, 408 ],
+    [ 412, 378, 413, 410, 408, 409 ],
+    [ 419, 379, 378, 411, 409, 416 ],
+    [ 378, 380, 373, 370, 410, 411 ],
+    [ 415, 417, 416, 521, 519, 520 ],
+    [ 512, 418, 417, 414, 520, 509 ],
+    [ 417, 419, 412, 409, 521, 414 ],
+    [ 418, 420, 419, 416, 414, 415 ],
+    [ 533, 421, 420, 417, 415, 512 ],
+    [ 420, 422, 379, 412, 416, 417 ],
+    [ 421, 423, 422, 419, 417, 418 ],
+    [ 536, 424, 423, 420, 418, 533 ],
+    [ 423, 425, 382, 379, 419, 420 ],
+    [ 424, 426, 425, 422, 420, 421 ],
+    [ 539, 427, 426, 423, 421, 536 ],
+    [ 426, 428, 385, 382, 422, 423 ],
+    [ 427, 429, 428, 425, 423, 424 ],
+    [ 920, 430, 429, 426, 424, 539 ],
+    [ 429, 431, 1000, 385, 425, 426 ],
+    [ 430, 981, 431, 428, 426, 427 ],
+    [ 923, 982, 981, 429, 427, 920 ],
+    [ 981, 983, 1003, 1000, 428, 429 ],
+    [ 436, 437, 434 ],
+    [ 434, 435, 334 ],
+    [ 437, 441, 435, 433, 432 ],
+    [ 441, 443, 337, 334, 433, 434 ],
+    [ 469, 438, 437, 432 ],
+    [ 438, 442, 441, 434, 432, 436 ],
+    [ 439, 440, 442, 437, 436, 469 ],
+    [ 473, 477, 440, 438, 469, 470 ],
+    [ 477, 479, 445, 442, 438, 439 ],
+    [ 442, 444, 443, 435, 434, 437 ],
+    [ 440, 445, 444, 441, 437, 438 ],
+    [ 444, 446, 340, 337, 435, 441 ],
+    [ 445, 447, 446, 443, 441, 442 ],
+    [ 479, 448, 447, 444, 442, 440 ],
+    [ 447, 449, 325, 340, 443, 444 ],
+    [ 448, 450, 449, 446, 444, 445 ],
+    [ 482, 451, 450, 447, 445, 479 ],
+    [ 450, 452, 328, 325, 446, 447 ],
+    [ 451, 453, 452, 449, 447, 448 ],
+    [ 485, 454, 453, 450, 448, 482 ],
+    [ 453, 455, 331, 328, 449, 450 ],
+    [ 454, 456, 455, 452, 450, 451 ],
+    [ 488, 457, 456, 453, 451, 485 ],
+    [ 456, 458, 343, 331, 452, 453 ],
+    [ 457, 459, 458, 455, 453, 454 ],
+    [ 491, 460, 459, 456, 454, 488 ],
+    [ 459, 461, 346, 343, 455, 456 ],
+    [ 460, 462, 461, 458, 456, 457 ],
+    [ 494, 463, 462, 459, 457, 491 ],
+    [ 462, 464, 349, 346, 458, 459 ],
+    [ 463, 465, 464, 461, 459, 460 ],
+    [ 497, 466, 465, 462, 460, 494 ],
+    [ 465, 467, 352, 349, 461, 462 ],
+    [ 466, 396, 467, 464, 462, 463 ],
+    [ 500, 397, 396, 465, 463, 497 ],
+    [ 396, 398, 355, 352, 464, 465 ],
+    [ 540, 471, 470 ],
+    [ 470, 439, 438, 436 ],
+    [ 471, 473, 439, 469, 468 ],
+    [ 472, 474, 473, 470, 468, 540 ],
+    [ 543, 475, 474, 471, 540, 541 ],
+    [ 474, 478, 477, 439, 470, 471 ],
+    [ 475, 476, 478, 473, 471, 472 ],
+    [ 546, 549, 476, 474, 472, 543 ],
+    [ 549, 551, 481, 478, 474, 475 ],
+    [ 478, 480, 479, 440, 439, 473 ],
+    [ 476, 481, 480, 477, 473, 474 ],
+    [ 480, 482, 448, 445, 440, 477 ],
+    [ 481, 483, 482, 479, 477, 478 ],
+    [ 551, 484, 483, 480, 478, 476 ],
+    [ 483, 485, 451, 448, 479, 480 ],
+    [ 484, 486, 485, 482, 480, 481 ],
+    [ 554, 487, 486, 483, 481, 551 ],
+    [ 486, 488, 454, 451, 482, 483 ],
+    [ 487, 489, 488, 485, 483, 484 ],
+    [ 557, 490, 489, 486, 484, 554 ],
+    [ 489, 491, 457, 454, 485, 486 ],
+    [ 490, 492, 491, 488, 486, 487 ],
+    [ 560, 493, 492, 489, 487, 557 ],
+    [ 492, 494, 460, 457, 488, 489 ],
+    [ 493, 495, 494, 491, 489, 490 ],
+    [ 563, 496, 495, 492, 490, 560 ],
+    [ 495, 497, 463, 460, 491, 492 ],
+    [ 496, 498, 497, 494, 492, 493 ],
+    [ 566, 499, 498, 495, 493, 563 ],
+    [ 498, 500, 466, 463, 494, 495 ],
+    [ 499, 501, 500, 497, 495, 496 ],
+    [ 569, 502, 501, 498, 496, 566 ],
+    [ 501, 503, 397, 466, 497, 498 ],
+    [ 502, 513, 503, 500, 498, 499 ],
+    [ 572, 514, 513, 501, 499, 569 ],
+    [ 513, 515, 400, 397, 500, 501 ],
+    [ 505, 507, 506, 575, 573, 574 ],
+    [ 611, 508, 507, 504, 574, 608 ],
+    [ 507, 509, 520, 517, 575, 504 ],
+    [ 508, 510, 509, 506, 504, 505 ],
+    [ 524, 511, 510, 507, 505, 611 ],
+    [ 510, 512, 415, 520, 506, 507 ],
+    [ 511, 531, 512, 509, 507, 508 ],
+    [ 527, 532, 531, 510, 508, 524 ],
+    [ 531, 533, 418, 415, 509, 510 ],
+    [ 514, 516, 515, 503, 501, 502 ],
+    [ 575, 517, 516, 513, 502, 572 ],
+    [ 516, 518, 403, 400, 503, 513 ],
+    [ 517, 519, 518, 515, 513, 514 ],
+    [ 506, 520, 519, 516, 514, 575 ],
+    [ 519, 521, 406, 403, 515, 516 ],
+    [ 520, 414, 521, 518, 516, 517 ],
+    [ 509, 415, 414, 519, 517, 506 ],
+    [ 414, 416, 409, 406, 518, 519 ],
+    [ 523, 525, 524, 611, 609, 610 ],
+    [ 656, 526, 525, 522, 610, 653 ],
+    [ 525, 527, 511, 508, 611, 522 ],
+    [ 526, 528, 527, 524, 522, 523 ],
+    [ 659, 529, 528, 525, 523, 656 ],
+    [ 528, 530, 532, 511, 524, 525 ],
+    [ 529, 927, 530, 527, 525, 526 ],
+    [ 662, 928, 927, 528, 526, 659 ],
+    [ 927, 929, 535, 532, 527, 528 ],
+    [ 532, 534, 533, 512, 510, 511 ],
+    [ 530, 535, 534, 531, 511, 527 ],
+    [ 534, 536, 421, 418, 512, 531 ],
+    [ 535, 537, 536, 533, 531, 532 ],
+    [ 929, 538, 537, 534, 532, 530 ],
+    [ 537, 539, 424, 421, 533, 534 ],
+    [ 538, 918, 539, 536, 534, 535 ],
+    [ 932, 919, 918, 537, 535, 929 ],
+    [ 918, 920, 427, 424, 536, 537 ],
+    [ 541, 472, 471, 468 ],
+    [ 542, 543, 472, 540 ],
+    [ 544, 545, 543, 541 ],
+    [ 545, 546, 475, 472, 541, 542 ],
+    [ 576, 577, 545, 542 ],
+    [ 577, 547, 546, 543, 542, 544 ],
+    [ 547, 550, 549, 475, 543, 545 ],
+    [ 579, 548, 550, 546, 545, 577 ],
+    [ 585, 587, 553, 550, 547, 579 ],
+    [ 550, 552, 551, 476, 475, 546 ],
+    [ 548, 553, 552, 549, 546, 547 ],
+    [ 552, 554, 484, 481, 476, 549 ],
+    [ 553, 555, 554, 551, 549, 550 ],
+    [ 587, 556, 555, 552, 550, 548 ],
+    [ 555, 557, 487, 484, 551, 552 ],
+    [ 556, 558, 557, 554, 552, 553 ],
+    [ 590, 559, 558, 555, 553, 587 ],
+    [ 558, 560, 490, 487, 554, 555 ],
+    [ 559, 561, 560, 557, 555, 556 ],
+    [ 593, 562, 561, 558, 556, 590 ],
+    [ 561, 563, 493, 490, 557, 558 ],
+    [ 562, 564, 563, 560, 558, 559 ],
+    [ 596, 565, 564, 561, 559, 593 ],
+    [ 564, 566, 496, 493, 560, 561 ],
+    [ 565, 567, 566, 563, 561, 562 ],
+    [ 599, 568, 567, 564, 562, 596 ],
+    [ 567, 569, 499, 496, 563, 564 ],
+    [ 568, 570, 569, 566, 564, 565 ],
+    [ 602, 571, 570, 567, 565, 599 ],
+    [ 570, 572, 502, 499, 566, 567 ],
+    [ 571, 573, 572, 569, 567, 568 ],
+    [ 605, 574, 573, 570, 568, 602 ],
+    [ 573, 575, 514, 502, 569, 570 ],
+    [ 574, 504, 575, 572, 570, 571 ],
+    [ 608, 505, 504, 573, 571, 605 ],
+    [ 504, 506, 517, 514, 572, 573 ],
+    [ 580, 578, 577, 544 ],
+    [ 578, 579, 547, 545, 544, 576 ],
+    [ 582, 583, 579, 577, 576, 580 ],
+    [ 583, 585, 548, 547, 577, 578 ],
+    [ 581, 582, 578, 576 ],
+    [ 612, 582, 580 ],
+    [ 612, 584, 583, 578, 580, 581 ],
+    [ 584, 586, 585, 579, 578, 582 ],
+    [ 614, 615, 586, 583, 582, 612 ],
+    [ 586, 588, 587, 548, 579, 583 ],
+    [ 615, 589, 588, 585, 583, 584 ],
+    [ 588, 590, 556, 553, 548, 585 ],
+    [ 589, 591, 590, 587, 585, 586 ],
+    [ 623, 592, 591, 588, 586, 615 ],
+    [ 591, 593, 559, 556, 587, 588 ],
+    [ 592, 594, 593, 590, 588, 589 ],
+    [ 626, 595, 594, 591, 589, 623 ],
+    [ 594, 596, 562, 559, 590, 591 ],
+    [ 595, 597, 596, 593, 591, 592 ],
+    [ 629, 598, 597, 594, 592, 626 ],
+    [ 597, 599, 565, 562, 593, 594 ],
+    [ 598, 600, 599, 596, 594, 595 ],
+    [ 641, 601, 600, 597, 595, 629 ],
+    [ 600, 602, 568, 565, 596, 597 ],
+    [ 601, 603, 602, 599, 597, 598 ],
+    [ 644, 604, 603, 600, 598, 641 ],
+    [ 603, 605, 571, 568, 599, 600 ],
+    [ 604, 606, 605, 602, 600, 601 ],
+    [ 647, 607, 606, 603, 601, 644 ],
+    [ 606, 608, 574, 571, 602, 603 ],
+    [ 607, 609, 608, 605, 603, 604 ],
+    [ 650, 610, 609, 606, 604, 647 ],
+    [ 609, 611, 505, 574, 605, 606 ],
+    [ 610, 522, 611, 608, 606, 607 ],
+    [ 653, 523, 522, 609, 607, 650 ],
+    [ 522, 524, 508, 505, 608, 609 ],
+    [ 613, 614, 584, 582, 581 ],
+    [ 616, 617, 614, 612 ],
+    [ 617, 621, 615, 584, 612, 613 ],
+    [ 621, 623, 589, 586, 584, 614 ],
+    [ 618, 617, 613 ],
+    [ 618, 622, 621, 614, 613, 616 ],
+    [ 619, 620, 622, 617, 616 ],
+    [ 630, 631, 620, 618 ],
+    [ 631, 634, 625, 622, 618, 619 ],
+    [ 622, 624, 623, 615, 614, 617 ],
+    [ 620, 625, 624, 621, 617, 618 ],
+    [ 624, 626, 592, 589, 615, 621 ],
+    [ 625, 627, 626, 623, 621, 622 ],
+    [ 634, 628, 627, 624, 622, 620 ],
+    [ 627, 629, 595, 592, 623, 624 ],
+    [ 628, 639, 629, 626, 624, 625 ],
+    [ 636, 640, 639, 627, 625, 634 ],
+    [ 639, 641, 598, 595, 626, 627 ],
+    [ 632, 631, 619 ],
+    [ 632, 635, 634, 620, 619, 630 ],
+    [ 633, 684, 635, 631, 630 ],
+    [ 685, 684, 632 ],
+    [ 635, 636, 628, 625, 620, 631 ],
+    [ 684, 637, 636, 634, 631, 632 ],
+    [ 637, 638, 640, 628, 634, 635 ],
+    [ 687, 693, 638, 636, 635, 684 ],
+    [ 693, 695, 643, 640, 636, 637 ],
+    [ 640, 642, 641, 629, 627, 628 ],
+    [ 638, 643, 642, 639, 628, 636 ],
+    [ 642, 644, 601, 598, 629, 639 ],
+    [ 643, 645, 644, 641, 639, 640 ],
+    [ 695, 646, 645, 642, 640, 638 ],
+    [ 645, 647, 604, 601, 641, 642 ],
+    [ 646, 648, 647, 644, 642, 643 ],
+    [ 698, 649, 648, 645, 643, 695 ],
+    [ 648, 650, 607, 604, 644, 645 ],
+    [ 649, 651, 650, 647, 645, 646 ],
+    [ 701, 652, 651, 648, 646, 698 ],
+    [ 651, 653, 610, 607, 647, 648 ],
+    [ 652, 654, 653, 650, 648, 649 ],
+    [ 668, 655, 654, 651, 649, 701 ],
+    [ 654, 656, 523, 610, 650, 651 ],
+    [ 655, 657, 656, 653, 651, 652 ],
+    [ 671, 658, 657, 654, 652, 668 ],
+    [ 657, 659, 526, 523, 653, 654 ],
+    [ 658, 660, 659, 656, 654, 655 ],
+    [ 674, 661, 660, 657, 655, 671 ],
+    [ 660, 662, 529, 526, 656, 657 ],
+    [ 661, 663, 662, 659, 657, 658 ],
+    [ 677, 664, 663, 660, 658, 674 ],
+    [ 663, 665, 928, 529, 659, 660 ],
+    [ 664, 855, 665, 662, 660, 661 ],
+    [ 680, 856, 855, 663, 661, 677 ],
+    [ 855, 857, 931, 928, 662, 663 ],
+    [ 667, 669, 668, 701, 699, 700 ],
+    [ 703, 670, 669, 666, 700, 706 ],
+    [ 669, 671, 655, 652, 701, 666 ],
+    [ 670, 672, 671, 668, 666, 667 ],
+    [ 718, 673, 672, 669, 667, 703 ],
+    [ 672, 674, 658, 655, 668, 669 ],
+    [ 673, 675, 674, 671, 669, 670 ],
+    [ 715, 676, 675, 672, 670, 718 ],
+    [ 675, 677, 661, 658, 671, 672 ],
+    [ 676, 678, 677, 674, 672, 673 ],
+    [ 712, 679, 678, 675, 673, 715 ],
+    [ 678, 680, 664, 661, 674, 675 ],
+    [ 679, 681, 680, 677, 675, 676 ],
+    [ 736, 682, 681, 678, 676, 712 ],
+    [ 681, 683, 856, 664, 677, 678 ],
+    [ 682, 747, 683, 680, 678, 679 ],
+    [ 733, 748, 747, 681, 679, 736 ],
+    [ 747, 749, 859, 856, 680, 681 ],
+    [ 685, 687, 637, 635, 632, 633 ],
+    [ 686, 688, 687, 684, 633 ],
+    [ 689, 688, 685 ],
+    [ 688, 694, 693, 637, 684, 685 ],
+    [ 689, 691, 694, 687, 685, 686 ],
+    [ 690, 692, 691, 688, 686 ],
+    [ 710, 692, 689 ],
+    [ 692, 709, 697, 694, 688, 689 ],
+    [ 710, 708, 709, 691, 689, 690 ],
+    [ 694, 696, 695, 638, 637, 687 ],
+    [ 691, 697, 696, 693, 687, 688 ],
+    [ 696, 698, 646, 643, 638, 693 ],
+    [ 697, 699, 698, 695, 693, 694 ],
+    [ 709, 700, 699, 696, 694, 691 ],
+    [ 699, 701, 649, 646, 695, 696 ],
+    [ 700, 666, 701, 698, 696, 697 ],
+    [ 706, 667, 666, 699, 697, 709 ],
+    [ 666, 668, 652, 649, 698, 699 ],
+    [ 719, 717, 718, 703, 705, 704 ],
+    [ 702, 718, 670, 667, 706, 705 ],
+    [ 719, 702, 705, 707 ],
+    [ 704, 702, 703, 706, 708, 707 ],
+    [ 705, 703, 667, 700, 709, 708 ],
+    [ 704, 705, 708, 710 ],
+    [ 707, 705, 706, 709, 692, 710 ],
+    [ 708, 706, 700, 697, 691, 692 ],
+    [ 707, 708, 692, 690 ],
+    [ 737, 735, 736, 712, 714, 713 ],
+    [ 711, 736, 679, 676, 715, 714 ],
+    [ 737, 711, 714, 716 ],
+    [ 713, 711, 712, 715, 717, 716 ],
+    [ 714, 712, 676, 673, 718, 717 ],
+    [ 713, 714, 717, 719 ],
+    [ 716, 714, 715, 718, 702, 719 ],
+    [ 717, 715, 673, 670, 703, 702 ],
+    [ 716, 717, 702, 704 ],
+    [ 784, 783, 721, 723, 722 ],
+    [ 720, 783, 742, 739, 724, 723 ],
+    [ 720, 723, 725 ],
+    [ 722, 720, 721, 724, 726, 725 ],
+    [ 723, 721, 739, 754, 727, 726 ],
+    [ 722, 723, 726, 728 ],
+    [ 725, 723, 724, 727, 729, 728 ],
+    [ 726, 724, 754, 751, 730, 729 ],
+    [ 725, 726, 729, 731 ],
+    [ 728, 726, 727, 730, 732, 731 ],
+    [ 729, 727, 751, 748, 733, 732 ],
+    [ 728, 729, 732, 734 ],
+    [ 731, 729, 730, 733, 735, 734 ],
+    [ 732, 730, 748, 682, 736, 735 ],
+    [ 731, 732, 735, 737 ],
+    [ 734, 732, 733, 736, 711, 737 ],
+    [ 735, 733, 682, 679, 712, 711 ],
+    [ 734, 735, 711, 713 ],
+    [ 739, 741, 740, 755, 753, 754 ],
+    [ 721, 742, 741, 738, 754, 724 ],
+    [ 741, 743, 844, 841, 755, 738 ],
+    [ 742, 744, 743, 740, 738, 739 ],
+    [ 783, 745, 744, 741, 739, 721 ],
+    [ 744, 746, 829, 844, 740, 741 ],
+    [ 745, 774, 746, 743, 741, 742 ],
+    [ 785, 787, 774, 744, 742, 783 ],
+    [ 774, 775, 832, 829, 743, 744 ],
+    [ 748, 750, 749, 683, 681, 682 ],
+    [ 730, 751, 750, 747, 682, 733 ],
+    [ 750, 752, 862, 859, 683, 747 ],
+    [ 751, 753, 752, 749, 747, 748 ],
+    [ 727, 754, 753, 750, 748, 730 ],
+    [ 753, 755, 838, 862, 749, 750 ],
+    [ 754, 738, 755, 752, 750, 751 ],
+    [ 724, 739, 738, 753, 751, 727 ],
+    [ 738, 740, 841, 838, 752, 753 ],
+    [ 757, 759, 758, 836, 834, 835 ],
+    [ 779, 760, 759, 756, 835, 777 ],
+    [ 759, 761, 817, 814, 836, 756 ],
+    [ 760, 762, 761, 758, 756, 757 ],
+    [ 765, 763, 762, 759, 757, 779 ],
+    [ 762, 764, 793, 817, 758, 759 ],
+    [ 763, 769, 764, 761, 759, 760 ],
+    [ 766, 767, 769, 762, 760, 765 ],
+    [ 769, 770, 796, 793, 761, 762 ],
+    [ 782, 766, 763, 760, 779, 780 ],
+    [ 768, 767, 763, 765, 782 ],
+    [ 768, 772, 771, 769, 763, 766 ],
+    [ 772, 767, 766 ],
+    [ 767, 771, 770, 764, 762, 763 ],
+    [ 771, 773, 799, 796, 764, 769 ],
+    [ 772, 805, 773, 770, 769, 767 ],
+    [ 805, 771, 767, 768 ],
+    [ 805, 806, 802, 799, 770, 771 ],
+    [ 787, 776, 775, 746, 744, 745 ],
+    [ 776, 777, 835, 832, 746, 774 ],
+    [ 789, 778, 777, 775, 774, 787 ],
+    [ 778, 779, 757, 835, 775, 776 ],
+    [ 791, 780, 779, 777, 776, 789 ],
+    [ 780, 765, 760, 757, 777, 778 ],
+    [ 781, 782, 765, 779, 778, 791 ],
+    [ 782, 780, 791 ],
+    [ 766, 765, 780, 781 ],
+    [ 784, 785, 745, 742, 721, 720 ],
+    [ 786, 785, 783, 720 ],
+    [ 786, 788, 787, 745, 783, 784 ],
+    [ 788, 785, 784 ],
+    [ 788, 789, 776, 774, 745, 785 ],
+    [ 790, 789, 787, 785, 786 ],
+    [ 790, 791, 778, 776, 787, 788 ],
+    [ 791, 789, 788 ],
+    [ 781, 780, 778, 789, 790 ],
+    [ 793, 795, 794, 818, 816, 817 ],
+    [ 764, 796, 795, 792, 817, 761 ],
+    [ 795, 797, 898, 895, 818, 792 ],
+    [ 796, 798, 797, 794, 792, 793 ],
+    [ 770, 799, 798, 795, 793, 764 ],
+    [ 798, 800, 883, 898, 794, 795 ],
+    [ 799, 801, 800, 797, 795, 796 ],
+    [ 773, 802, 801, 798, 796, 770 ],
+    [ 801, 803, 886, 883, 797, 798 ],
+    [ 802, 804, 803, 800, 798, 799 ],
+    [ 806, 808, 804, 801, 799, 773 ],
+    [ 804, 873, 889, 886, 800, 801 ],
+    [ 808, 880, 873, 803, 801, 802 ],
+    [ 807, 806, 773, 771, 772 ],
+    [ 807, 809, 808, 802, 773, 805 ],
+    [ 809, 806, 805 ],
+    [ 809, 878, 880, 804, 802, 806 ],
+    [ 878, 808, 806, 807 ],
+    [ 811, 813, 812, 827, 825, 826 ],
+    [ 836, 814, 813, 810, 826, 833 ],
+    [ 813, 815, 907, 904, 827, 810 ],
+    [ 814, 816, 815, 812, 810, 811 ],
+    [ 758, 817, 816, 813, 811, 836 ],
+    [ 816, 818, 892, 907, 812, 813 ],
+    [ 817, 792, 818, 815, 813, 814 ],
+    [ 761, 793, 792, 816, 814, 758 ],
+    [ 792, 794, 895, 892, 815, 816 ],
+    [ 820, 822, 821, 854, 852, 853 ],
+    [ 845, 823, 822, 819, 853, 842 ],
+    [ 822, 824, 916, 913, 854, 819 ],
+    [ 823, 825, 824, 821, 819, 820 ],
+    [ 830, 826, 825, 822, 820, 845 ],
+    [ 825, 827, 901, 916, 821, 822 ],
+    [ 826, 810, 827, 824, 822, 823 ],
+    [ 833, 811, 810, 825, 823, 830 ],
+    [ 810, 812, 904, 901, 824, 825 ],
+    [ 829, 831, 830, 845, 843, 844 ],
+    [ 746, 832, 831, 828, 844, 743 ],
+    [ 831, 833, 826, 823, 845, 828 ],
+    [ 832, 834, 833, 830, 828, 829 ],
+    [ 775, 835, 834, 831, 829, 746 ],
+    [ 834, 836, 811, 826, 830, 831 ],
+    [ 835, 756, 836, 833, 831, 832 ],
+    [ 777, 757, 756, 834, 832, 775 ],
+    [ 756, 758, 814, 811, 833, 834 ],
+    [ 838, 840, 839, 863, 861, 862 ],
+    [ 755, 841, 840, 837, 862, 752 ],
+    [ 840, 842, 853, 850, 863, 837 ],
+    [ 841, 843, 842, 839, 837, 838 ],
+    [ 740, 844, 843, 840, 838, 755 ],
+    [ 843, 845, 820, 853, 839, 840 ],
+    [ 844, 828, 845, 842, 840, 841 ],
+    [ 743, 829, 828, 843, 841, 740 ],
+    [ 828, 830, 823, 820, 842, 843 ],
+    [ 847, 849, 848, 935, 933, 934 ],
+    [ 863, 850, 849, 846, 934, 860 ],
+    [ 849, 851, 925, 922, 935, 846 ],
+    [ 850, 852, 851, 848, 846, 847 ],
+    [ 839, 853, 852, 849, 847, 863 ],
+    [ 852, 854, 910, 925, 848, 849 ],
+    [ 853, 819, 854, 851, 849, 850 ],
+    [ 842, 820, 819, 852, 850, 839 ],
+    [ 819, 821, 913, 910, 851, 852 ],
+    [ 856, 858, 857, 665, 663, 664 ],
+    [ 683, 859, 858, 855, 664, 680 ],
+    [ 858, 860, 934, 931, 665, 855 ],
+    [ 859, 861, 860, 857, 855, 856 ],
+    [ 749, 862, 861, 858, 856, 683 ],
+    [ 861, 863, 847, 934, 857, 858 ],
+    [ 862, 837, 863, 860, 858, 859 ],
+    [ 752, 838, 837, 861, 859, 749 ],
+    [ 837, 839, 850, 847, 860, 861 ],
+    [ 865, 866, 952, 949, 890, 875 ],
+    [ 876, 867, 866, 864, 875, 874 ],
+    [ 867, 869, 937, 952, 864, 865 ],
+    [ 868, 870, 869, 866, 865, 876 ],
+    [ 870, 867, 876, 881 ],
+    [ 870, 872, 871, 937, 866, 867 ],
+    [ 872, 869, 867, 868 ],
+    [ 872, 941, 939, 937, 869 ],
+    [ 871, 869, 870 ],
+    [ 880, 877, 874, 889, 803, 804 ],
+    [ 877, 876, 865, 875, 889, 873 ],
+    [ 874, 865, 864, 890, 888, 889 ],
+    [ 881, 868, 867, 865, 874, 877 ],
+    [ 879, 881, 876, 874, 873, 880 ],
+    [ 879, 880, 808, 809 ],
+    [ 881, 877, 880, 878 ],
+    [ 878, 879, 877, 873, 804, 808 ],
+    [ 868, 876, 877, 879 ],
+    [ 883, 885, 884, 899, 897, 898 ],
+    [ 800, 886, 885, 882, 898, 797 ],
+    [ 885, 887, 961, 958, 899, 882 ],
+    [ 886, 888, 887, 884, 882, 883 ],
+    [ 803, 889, 888, 885, 883, 800 ],
+    [ 888, 890, 946, 961, 884, 885 ],
+    [ 889, 875, 890, 887, 885, 886 ],
+    [ 873, 874, 875, 888, 886, 803 ],
+    [ 875, 864, 949, 946, 887, 888 ],
+    [ 892, 894, 893, 908, 906, 907 ],
+    [ 818, 895, 894, 891, 907, 815 ],
+    [ 894, 896, 970, 967, 908, 891 ],
+    [ 895, 897, 896, 893, 891, 892 ],
+    [ 794, 898, 897, 894, 892, 818 ],
+    [ 897, 899, 955, 970, 893, 894 ],
+    [ 898, 882, 899, 896, 894, 895 ],
+    [ 797, 883, 882, 897, 895, 794 ],
+    [ 882, 884, 958, 955, 896, 897 ],
+    [ 901, 903, 902, 917, 915, 916 ],
+    [ 827, 904, 903, 900, 916, 824 ],
+    [ 903, 905, 979, 976, 917, 900 ],
+    [ 904, 906, 905, 902, 900, 901 ],
+    [ 812, 907, 906, 903, 901, 827 ],
+    [ 906, 908, 964, 979, 902, 903 ],
+    [ 907, 891, 908, 905, 903, 904 ],
+    [ 815, 892, 891, 906, 904, 812 ],
+    [ 891, 893, 967, 964, 905, 906 ],
+    [ 910, 912, 911, 926, 924, 925 ],
+    [ 854, 913, 912, 909, 925, 851 ],
+    [ 912, 914, 988, 985, 926, 909 ],
+    [ 913, 915, 914, 911, 909, 910 ],
+    [ 821, 916, 915, 912, 910, 854 ],
+    [ 915, 917, 973, 988, 911, 912 ],
+    [ 916, 900, 917, 914, 912, 913 ],
+    [ 824, 901, 900, 915, 913, 821 ],
+    [ 900, 902, 976, 973, 914, 915 ],
+    [ 919, 921, 920, 539, 537, 538 ],
+    [ 935, 922, 921, 918, 538, 932 ],
+    [ 921, 923, 430, 427, 539, 918 ],
+    [ 922, 924, 923, 920, 918, 919 ],
+    [ 848, 925, 924, 921, 919, 935 ],
+    [ 924, 926, 982, 430, 920, 921 ],
+    [ 925, 909, 926, 923, 921, 922 ],
+    [ 851, 910, 909, 924, 922, 848 ],
+    [ 909, 911, 985, 982, 923, 924 ],
+    [ 928, 930, 929, 530, 528, 529 ],
+    [ 665, 931, 930, 927, 529, 662 ],
+    [ 930, 932, 538, 535, 530, 927 ],
+    [ 931, 933, 932, 929, 927, 928 ],
+    [ 857, 934, 933, 930, 928, 665 ],
+    [ 933, 935, 919, 538, 929, 930 ],
+    [ 934, 846, 935, 932, 930, 931 ],
+    [ 860, 847, 846, 933, 931, 857 ],
+    [ 846, 848, 922, 919, 932, 933 ],
+    [ 937, 939, 938, 953, 951, 952 ],
+    [ 869, 871, 939, 936, 952, 866 ],
+    [ 939, 940, 1015, 1012, 953, 936 ],
+    [ 871, 941, 940, 938, 936, 937 ],
+    [ 941, 943, 942, 1015, 938, 939 ],
+    [ 943, 940, 939, 871 ],
+    [ 943, 944, 1056, 1053, 1015, 940 ],
+    [ 944, 942, 940, 941 ],
+    [ 1056, 942, 943 ],
+    [ 946, 948, 947, 962, 960, 961 ],
+    [ 890, 949, 948, 945, 961, 887 ],
+    [ 948, 950, 1024, 1021, 962, 945 ],
+    [ 949, 951, 950, 947, 945, 946 ],
+    [ 864, 952, 951, 948, 946, 890 ],
+    [ 951, 953, 1009, 1024, 947, 948 ],
+    [ 952, 936, 953, 950, 948, 949 ],
+    [ 866, 937, 936, 951, 949, 864 ],
+    [ 936, 938, 1012, 1009, 950, 951 ],
+    [ 955, 957, 956, 971, 969, 970 ],
+    [ 899, 958, 957, 954, 970, 896 ],
+    [ 957, 959, 1033, 1030, 971, 954 ],
+    [ 958, 960, 959, 956, 954, 955 ],
+    [ 884, 961, 960, 957, 955, 899 ],
+    [ 960, 962, 1018, 1033, 956, 957 ],
+    [ 961, 945, 962, 959, 957, 958 ],
+    [ 887, 946, 945, 960, 958, 884 ],
+    [ 945, 947, 1021, 1018, 959, 960 ],
+    [ 964, 966, 965, 980, 978, 979 ],
+    [ 908, 967, 966, 963, 979, 905 ],
+    [ 966, 968, 1042, 1039, 980, 963 ],
+    [ 967, 969, 968, 965, 963, 964 ],
+    [ 893, 970, 969, 966, 964, 908 ],
+    [ 969, 971, 1027, 1042, 965, 966 ],
+    [ 970, 954, 971, 968, 966, 967 ],
+    [ 896, 955, 954, 969, 967, 893 ],
+    [ 954, 956, 1030, 1027, 968, 969 ],
+    [ 973, 975, 974, 989, 987, 988 ],
+    [ 917, 976, 975, 972, 988, 914 ],
+    [ 975, 977, 997, 994, 989, 972 ],
+    [ 976, 978, 977, 974, 972, 973 ],
+    [ 902, 979, 978, 975, 973, 917 ],
+    [ 978, 980, 1036, 997, 974, 975 ],
+    [ 979, 963, 980, 977, 975, 976 ],
+    [ 905, 964, 963, 978, 976, 902 ],
+    [ 963, 965, 1039, 1036, 977, 978 ],
+    [ 982, 984, 983, 431, 429, 430 ],
+    [ 926, 985, 984, 981, 430, 923 ],
+    [ 984, 986, 1006, 1003, 431, 981 ],
+    [ 985, 987, 986, 983, 981, 982 ],
+    [ 911, 988, 987, 984, 982, 926 ],
+    [ 987, 989, 991, 1006, 983, 984 ],
+    [ 988, 972, 989, 986, 984, 985 ],
+    [ 914, 973, 972, 987, 985, 911 ],
+    [ 972, 974, 994, 991, 986, 987 ],
+    [ 991, 993, 992, 1007, 1005, 1006 ],
+    [ 989, 994, 993, 990, 1006, 986 ],
+    [ 993, 995, 1105, 1102, 1007, 990 ],
+    [ 994, 996, 995, 992, 990, 991 ],
+    [ 974, 997, 996, 993, 991, 989 ],
+    [ 996, 998, 1090, 1105, 992, 993 ],
+    [ 997, 1035, 998, 995, 993, 994 ],
+    [ 977, 1036, 1035, 996, 994, 974 ],
+    [ 1035, 1037, 1093, 1090, 995, 996 ],
+    [ 1000, 1002, 1001, 386, 384, 385 ],
+    [ 431, 1003, 1002, 999, 385, 428 ],
+    [ 1002, 1004, 394, 391, 386, 999 ],
+    [ 1003, 1005, 1004, 1001, 999, 1000 ],
+    [ 983, 1006, 1005, 1002, 1000, 431 ],
+    [ 1005, 1007, 1099, 394, 1001, 1002 ],
+    [ 1006, 990, 1007, 1004, 1002, 1003 ],
+    [ 986, 991, 990, 1005, 1003, 983 ],
+    [ 990, 992, 1102, 1099, 1004, 1005 ],
+    [ 1009, 1011, 1010, 1025, 1023, 1024 ],
+    [ 953, 1012, 1011, 1008, 1024, 950 ],
+    [ 1011, 1013, 1069, 1066, 1025, 1008 ],
+    [ 1012, 1014, 1013, 1010, 1008, 1009 ],
+    [ 938, 1015, 1014, 1011, 1009, 953 ],
+    [ 1014, 1016, 1045, 1069, 1010, 1011 ],
+    [ 1015, 1053, 1016, 1013, 1011, 1012 ],
+    [ 940, 942, 1053, 1014, 1012, 938 ],
+    [ 1053, 1055, 1054, 1045, 1013, 1014 ],
+    [ 1018, 1020, 1019, 1034, 1032, 1033 ],
+    [ 962, 1021, 1020, 1017, 1033, 959 ],
+    [ 1020, 1022, 1078, 1075, 1034, 1017 ],
+    [ 1021, 1023, 1022, 1019, 1017, 1018 ],
+    [ 947, 1024, 1023, 1020, 1018, 962 ],
+    [ 1023, 1025, 1063, 1078, 1019, 1020 ],
+    [ 1024, 1008, 1025, 1022, 1020, 1021 ],
+    [ 950, 1009, 1008, 1023, 1021, 947 ],
+    [ 1008, 1010, 1066, 1063, 1022, 1023 ],
+    [ 1027, 1029, 1028, 1043, 1041, 1042 ],
+    [ 971, 1030, 1029, 1026, 1042, 968 ],
+    [ 1029, 1031, 1087, 1084, 1043, 1026 ],
+    [ 1030, 1032, 1031, 1028, 1026, 1027 ],
+    [ 956, 1033, 1032, 1029, 1027, 971 ],
+    [ 1032, 1034, 1072, 1087, 1028, 1029 ],
+    [ 1033, 1017, 1034, 1031, 1029, 1030 ],
+    [ 959, 1018, 1017, 1032, 1030, 956 ],
+    [ 1017, 1019, 1075, 1072, 1031, 1032 ],
+    [ 1036, 1038, 1037, 998, 996, 997 ],
+    [ 980, 1039, 1038, 1035, 997, 977 ],
+    [ 1038, 1040, 1096, 1093, 998, 1035 ],
+    [ 1039, 1041, 1040, 1037, 1035, 1036 ],
+    [ 965, 1042, 1041, 1038, 1036, 980 ],
+    [ 1041, 1043, 1081, 1096, 1037, 1038 ],
+    [ 1042, 1026, 1043, 1040, 1038, 1039 ],
+    [ 968, 1027, 1026, 1041, 1039, 965 ],
+    [ 1026, 1028, 1084, 1081, 1040, 1041 ],
+    [ 1045, 1047, 1046, 1070, 1068, 1069 ],
+    [ 1016, 1054, 1047, 1044, 1069, 1013 ],
+    [ 1047, 1048, 1168, 1165, 1070, 1044 ],
+    [ 1054, 1057, 1048, 1046, 1044, 1045 ],
+    [ 1057, 1059, 1050, 1168, 1046, 1047 ],
+    [ 1050, 1051, 1157, 1169, 1167, 1168 ],
+    [ 1059, 1052, 1051, 1049, 1168, 1048 ],
+    [ 1052, 1160, 1157, 1049, 1050 ],
+    [ 1051, 1050, 1059 ],
+    [ 942, 1056, 1055, 1016, 1014, 1015 ],
+    [ 1055, 1058, 1057, 1047, 1045, 1016 ],
+    [ 1056, 1060, 1058, 1054, 1016, 1053 ],
+    [ 944, 1060, 1055, 1053, 942 ],
+    [ 1058, 1061, 1059, 1048, 1047, 1054 ],
+    [ 1060, 1061, 1057, 1054, 1055 ],
+    [ 1061, 1052, 1050, 1048, 1057 ],
+    [ 1058, 1055, 1056 ],
+    [ 1059, 1057, 1058 ],
+    [ 1063, 1065, 1064, 1079, 1077, 1078 ],
+    [ 1025, 1066, 1065, 1062, 1078, 1022 ],
+    [ 1065, 1067, 1177, 1174, 1079, 1062 ],
+    [ 1066, 1068, 1067, 1064, 1062, 1063 ],
+    [ 1010, 1069, 1068, 1065, 1063, 1025 ],
+    [ 1068, 1070, 1162, 1177, 1064, 1065 ],
+    [ 1069, 1044, 1070, 1067, 1065, 1066 ],
+    [ 1013, 1045, 1044, 1068, 1066, 1010 ],
+    [ 1044, 1046, 1165, 1162, 1067, 1068 ],
+    [ 1072, 1074, 1073, 1088, 1086, 1087 ],
+    [ 1034, 1075, 1074, 1071, 1087, 1031 ],
+    [ 1074, 1076, 1186, 1183, 1088, 1071 ],
+    [ 1075, 1077, 1076, 1073, 1071, 1072 ],
+    [ 1019, 1078, 1077, 1074, 1072, 1034 ],
+    [ 1077, 1079, 1171, 1186, 1073, 1074 ],
+    [ 1078, 1062, 1079, 1076, 1074, 1075 ],
+    [ 1022, 1063, 1062, 1077, 1075, 1019 ],
+    [ 1062, 1064, 1174, 1171, 1076, 1077 ],
+    [ 1081, 1083, 1082, 1097, 1095, 1096 ],
+    [ 1043, 1084, 1083, 1080, 1096, 1040 ],
+    [ 1083, 1085, 1123, 1120, 1097, 1080 ],
+    [ 1084, 1086, 1085, 1082, 1080, 1081 ],
+    [ 1028, 1087, 1086, 1083, 1081, 1043 ],
+    [ 1086, 1088, 1180, 1123, 1082, 1083 ],
+    [ 1087, 1071, 1088, 1085, 1083, 1084 ],
+    [ 1031, 1072, 1071, 1086, 1084, 1028 ],
+    [ 1071, 1073, 1183, 1180, 1085, 1086 ],
+    [ 1090, 1092, 1091, 1106, 1104, 1105 ],
+    [ 998, 1093, 1092, 1089, 1105, 995 ],
+    [ 1092, 1094, 1132, 1129, 1106, 1089 ],
+    [ 1093, 1095, 1094, 1091, 1089, 1090 ],
+    [ 1037, 1096, 1095, 1092, 1090, 998 ],
+    [ 1095, 1097, 1117, 1132, 1091, 1092 ],
+    [ 1096, 1080, 1097, 1094, 1092, 1093 ],
+    [ 1040, 1081, 1080, 1095, 1093, 1037 ],
+    [ 1080, 1082, 1120, 1117, 1094, 1095 ],
+    [ 1099, 1101, 1100, 395, 393, 394 ],
+    [ 1007, 1102, 1101, 1098, 394, 1004 ],
+    [ 1101, 1103, 1114, 1111, 395, 1098 ],
+    [ 1102, 1104, 1103, 1100, 1098, 1099 ],
+    [ 992, 1105, 1104, 1101, 1099, 1007 ],
+    [ 1104, 1106, 1126, 1114, 1100, 1101 ],
+    [ 1105, 1089, 1106, 1103, 1101, 1102 ],
+    [ 995, 1090, 1089, 1104, 1102, 992 ],
+    [ 1089, 1091, 1129, 1126, 1103, 1104 ],
+    [ 1108, 1110, 1109, 287, 285, 286 ],
+    [ 395, 1111, 1110, 1107, 286, 392 ],
+    [ 1110, 1112, 1150, 1147, 287, 1107 ],
+    [ 1111, 1113, 1112, 1109, 1107, 1108 ],
+    [ 1100, 1114, 1113, 1110, 1108, 395 ],
+    [ 1113, 1115, 1135, 1150, 1109, 1110 ],
+    [ 1114, 1125, 1115, 1112, 1110, 1111 ],
+    [ 1103, 1126, 1125, 1113, 1111, 1100 ],
+    [ 1125, 1127, 1138, 1135, 1112, 1113 ],
+    [ 1117, 1119, 1118, 1133, 1131, 1132 ],
+    [ 1097, 1120, 1119, 1116, 1132, 1094 ],
+    [ 1119, 1121, 1240, 1237, 1133, 1116 ],
+    [ 1120, 1122, 1121, 1118, 1116, 1117 ],
+    [ 1082, 1123, 1122, 1119, 1117, 1097 ],
+    [ 1122, 1124, 1216, 1240, 1118, 1119 ],
+    [ 1123, 1179, 1124, 1121, 1119, 1120 ],
+    [ 1085, 1180, 1179, 1122, 1120, 1082 ],
+    [ 1179, 1181, 1219, 1216, 1121, 1122 ],
+    [ 1126, 1128, 1127, 1115, 1113, 1114 ],
+    [ 1106, 1129, 1128, 1125, 1114, 1103 ],
+    [ 1128, 1130, 1141, 1138, 1115, 1125 ],
+    [ 1129, 1131, 1130, 1127, 1125, 1126 ],
+    [ 1091, 1132, 1131, 1128, 1126, 1106 ],
+    [ 1131, 1133, 1234, 1141, 1127, 1128 ],
+    [ 1132, 1116, 1133, 1130, 1128, 1129 ],
+    [ 1094, 1117, 1116, 1131, 1129, 1091 ],
+    [ 1116, 1118, 1237, 1234, 1130, 1131 ],
+    [ 1135, 1137, 1136, 1151, 1149, 1150 ],
+    [ 1115, 1138, 1137, 1134, 1150, 1112 ],
+    [ 1137, 1139, 1258, 1255, 1151, 1134 ],
+    [ 1138, 1140, 1139, 1136, 1134, 1135 ],
+    [ 1127, 1141, 1140, 1137, 1135, 1115 ],
+    [ 1140, 1142, 1225, 1258, 1136, 1137 ],
+    [ 1141, 1233, 1142, 1139, 1137, 1138 ],
+    [ 1130, 1234, 1233, 1140, 1138, 1127 ],
+    [ 1233, 1235, 1228, 1225, 1139, 1140 ],
+    [ 1144, 1146, 1145, 260, 258, 259 ],
+    [ 287, 1147, 1146, 1143, 259, 284 ],
+    [ 1146, 1148, 205, 202, 260, 1143 ],
+    [ 1147, 1149, 1148, 1145, 1143, 1144 ],
+    [ 1109, 1150, 1149, 1146, 1144, 287 ],
+    [ 1149, 1151, 1252, 205, 1145, 1146 ],
+    [ 1150, 1134, 1151, 1148, 1146, 1147 ],
+    [ 1112, 1135, 1134, 1149, 1147, 1109 ],
+    [ 1134, 1136, 1255, 1252, 1148, 1149 ],
+    [ 1153, 1155, 1154, 1205, 1203, 1204 ],
+    [ 1169, 1156, 1155, 1152, 1204, 1166 ],
+    [ 1155, 1194, 1192, 1190, 1205, 1152 ],
+    [ 1156, 1158, 1194, 1154, 1152, 1153 ],
+    [ 1157, 1159, 1158, 1155, 1153, 1169 ],
+    [ 1051, 1160, 1159, 1156, 1169, 1049 ],
+    [ 1159, 1194, 1155, 1156 ],
+    [ 1160, 1158, 1156, 1157 ],
+    [ 1159, 1157, 1051 ],
+    [ 1162, 1164, 1163, 1178, 1176, 1177 ],
+    [ 1070, 1165, 1164, 1161, 1177, 1067 ],
+    [ 1164, 1166, 1204, 1201, 1178, 1161 ],
+    [ 1165, 1167, 1166, 1163, 1161, 1162 ],
+    [ 1046, 1168, 1167, 1164, 1162, 1070 ],
+    [ 1167, 1169, 1153, 1204, 1163, 1164 ],
+    [ 1168, 1049, 1169, 1166, 1164, 1165 ],
+    [ 1048, 1050, 1049, 1167, 1165, 1046 ],
+    [ 1049, 1157, 1156, 1153, 1166, 1167 ],
+    [ 1171, 1173, 1172, 1187, 1185, 1186 ],
+    [ 1079, 1174, 1173, 1170, 1186, 1076 ],
+    [ 1173, 1175, 1213, 1210, 1187, 1170 ],
+    [ 1174, 1176, 1175, 1172, 1170, 1171 ],
+    [ 1064, 1177, 1176, 1173, 1171, 1079 ],
+    [ 1176, 1178, 1198, 1213, 1172, 1173 ],
+    [ 1177, 1161, 1178, 1175, 1173, 1174 ],
+    [ 1067, 1162, 1161, 1176, 1174, 1064 ],
+    [ 1161, 1163, 1201, 1198, 1175, 1176 ],
+    [ 1180, 1182, 1181, 1124, 1122, 1123 ],
+    [ 1088, 1183, 1182, 1179, 1123, 1085 ],
+    [ 1182, 1184, 1222, 1219, 1124, 1179 ],
+    [ 1183, 1185, 1184, 1181, 1179, 1180 ],
+    [ 1073, 1186, 1185, 1182, 1180, 1088 ],
+    [ 1185, 1187, 1207, 1222, 1181, 1182 ],
+    [ 1186, 1170, 1187, 1184, 1182, 1183 ],
+    [ 1076, 1171, 1170, 1185, 1183, 1073 ],
+    [ 1170, 1172, 1210, 1207, 1184, 1185 ],
+    [ 1205, 1190, 1189, 1260, 1276, 1202 ],
+    [ 1190, 1191, 1263, 1262, 1260, 1188 ],
+    [ 1154, 1192, 1191, 1189, 1188, 1205 ],
+    [ 1192, 1195, 1193, 1263, 1189, 1190 ],
+    [ 1194, 1196, 1195, 1191, 1190, 1154 ],
+    [ 1195, 1268, 1263, 1191 ],
+    [ 1158, 1196, 1192, 1154, 1155 ],
+    [ 1196, 1193, 1191, 1192 ],
+    [ 1195, 1192, 1194 ],
+    [ 1198, 1200, 1199, 1214, 1212, 1213 ],
+    [ 1178, 1201, 1200, 1197, 1213, 1175 ],
+    [ 1200, 1202, 1276, 1273, 1214, 1197 ],
+    [ 1201, 1203, 1202, 1199, 1197, 1198 ],
+    [ 1163, 1204, 1203, 1200, 1198, 1178 ],
+    [ 1203, 1205, 1188, 1276, 1199, 1200 ],
+    [ 1204, 1152, 1205, 1202, 1200, 1201 ],
+    [ 1166, 1153, 1152, 1203, 1201, 1163 ],
+    [ 1152, 1154, 1190, 1188, 1202, 1203 ],
+    [ 1207, 1209, 1208, 1223, 1221, 1222 ],
+    [ 1187, 1210, 1209, 1206, 1222, 1184 ],
+    [ 1209, 1211, 1285, 1282, 1223, 1206 ],
+    [ 1210, 1212, 1211, 1208, 1206, 1207 ],
+    [ 1172, 1213, 1212, 1209, 1207, 1187 ],
+    [ 1212, 1214, 1270, 1285, 1208, 1209 ],
+    [ 1213, 1197, 1214, 1211, 1209, 1210 ],
+    [ 1175, 1198, 1197, 1212, 1210, 1172 ],
+    [ 1197, 1199, 1273, 1270, 1211, 1212 ],
+    [ 1216, 1218, 1217, 1241, 1239, 1240 ],
+    [ 1124, 1219, 1218, 1215, 1240, 1121 ],
+    [ 1218, 1220, 1294, 1291, 1241, 1215 ],
+    [ 1219, 1221, 1220, 1217, 1215, 1216 ],
+    [ 1181, 1222, 1221, 1218, 1216, 1124 ],
+    [ 1221, 1223, 1279, 1294, 1217, 1218 ],
+    [ 1222, 1206, 1223, 1220, 1218, 1219 ],
+    [ 1184, 1207, 1206, 1221, 1219, 1181 ],
+    [ 1206, 1208, 1282, 1279, 1220, 1221 ],
+    [ 1225, 1227, 1226, 1259, 1257, 1258 ],
+    [ 1142, 1228, 1227, 1224, 1258, 1139 ],
+    [ 1227, 1229, 1249, 1246, 1259, 1224 ],
+    [ 1228, 1230, 1229, 1226, 1224, 1225 ],
+    [ 1235, 1231, 1230, 1227, 1225, 1142 ],
+    [ 1230, 1232, 1324, 1249, 1226, 1227 ],
+    [ 1231, 1287, 1232, 1229, 1227, 1228 ],
+    [ 1238, 1288, 1287, 1230, 1228, 1235 ],
+    [ 1287, 1289, 1327, 1324, 1229, 1230 ],
+    [ 1234, 1236, 1235, 1142, 1140, 1141 ],
+    [ 1133, 1237, 1236, 1233, 1141, 1130 ],
+    [ 1236, 1238, 1231, 1228, 1142, 1233 ],
+    [ 1237, 1239, 1238, 1235, 1233, 1234 ],
+    [ 1118, 1240, 1239, 1236, 1234, 1133 ],
+    [ 1239, 1241, 1288, 1231, 1235, 1236 ],
+    [ 1240, 1215, 1241, 1238, 1236, 1237 ],
+    [ 1121, 1216, 1215, 1239, 1237, 1118 ],
+    [ 1215, 1217, 1291, 1288, 1238, 1239 ],
+    [ 1243, 1245, 1244, 215, 213, 214 ],
+    [ 1259, 1246, 1245, 1242, 214, 1256 ],
+    [ 1245, 1247, 1384, 1381, 215, 1242 ],
+    [ 1246, 1248, 1247, 1244, 1242, 1243 ],
+    [ 1226, 1249, 1248, 1245, 1243, 1259 ],
+    [ 1248, 1250, 1369, 1384, 1244, 1245 ],
+    [ 1249, 1323, 1250, 1247, 1245, 1246 ],
+    [ 1229, 1324, 1323, 1248, 1246, 1226 ],
+    [ 1323, 1325, 1372, 1369, 1247, 1248 ],
+    [ 1252, 1254, 1253, 206, 204, 205 ],
+    [ 1151, 1255, 1254, 1251, 205, 1148 ],
+    [ 1254, 1256, 214, 211, 206, 1251 ],
+    [ 1255, 1257, 1256, 1253, 1251, 1252 ],
+    [ 1136, 1258, 1257, 1254, 1252, 1151 ],
+    [ 1257, 1259, 1243, 214, 1253, 1254 ],
+    [ 1258, 1224, 1259, 1256, 1254, 1255 ],
+    [ 1139, 1225, 1224, 1257, 1255, 1136 ],
+    [ 1224, 1226, 1246, 1243, 1256, 1257 ],
+    [ 1188, 1189, 1262, 1277, 1275, 1276 ],
+    [ 1262, 1265, 1264, 1299, 1297, 1277 ],
+    [ 1189, 1263, 1265, 1261, 1277, 1260 ],
+    [ 1191, 1193, 1268, 1265, 1262, 1189 ],
+    [ 1265, 1267, 1266, 1302, 1299, 1261 ],
+    [ 1263, 1268, 1267, 1264, 1261, 1262 ],
+    [ 1267, 1304, 1302, 1264 ],
+    [ 1268, 1266, 1264, 1265 ],
+    [ 1193, 1267, 1265, 1263 ],
+    [ 1270, 1272, 1271, 1286, 1284, 1285 ],
+    [ 1214, 1273, 1272, 1269, 1285, 1211 ],
+    [ 1272, 1274, 1312, 1309, 1286, 1269 ],
+    [ 1273, 1275, 1274, 1271, 1269, 1270 ],
+    [ 1199, 1276, 1275, 1272, 1270, 1214 ],
+    [ 1275, 1277, 1297, 1312, 1271, 1272 ],
+    [ 1276, 1260, 1277, 1274, 1272, 1273 ],
+    [ 1202, 1188, 1260, 1275, 1273, 1199 ],
+    [ 1260, 1262, 1261, 1297, 1274, 1275 ],
+    [ 1279, 1281, 1280, 1295, 1293, 1294 ],
+    [ 1223, 1282, 1281, 1278, 1294, 1220 ],
+    [ 1281, 1283, 1321, 1318, 1295, 1278 ],
+    [ 1282, 1284, 1283, 1280, 1278, 1279 ],
+    [ 1208, 1285, 1284, 1281, 1279, 1223 ],
+    [ 1284, 1286, 1306, 1321, 1280, 1281 ],
+    [ 1285, 1269, 1286, 1283, 1281, 1282 ],
+    [ 1211, 1270, 1269, 1284, 1282, 1208 ],
+    [ 1269, 1271, 1309, 1306, 1283, 1284 ],
+    [ 1288, 1290, 1289, 1232, 1230, 1231 ],
+    [ 1241, 1291, 1290, 1287, 1231, 1238 ],
+    [ 1290, 1292, 1330, 1327, 1232, 1287 ],
+    [ 1291, 1293, 1292, 1289, 1287, 1288 ],
+    [ 1217, 1294, 1293, 1290, 1288, 1241 ],
+    [ 1293, 1295, 1315, 1330, 1289, 1290 ],
+    [ 1294, 1278, 1295, 1292, 1290, 1291 ],
+    [ 1220, 1279, 1278, 1293, 1291, 1217 ],
+    [ 1278, 1280, 1318, 1315, 1292, 1293 ],
+    [ 1297, 1299, 1298, 1313, 1311, 1312 ],
+    [ 1277, 1261, 1299, 1296, 1312, 1274 ],
+    [ 1299, 1302, 1301, 1339, 1313, 1296 ],
+    [ 1261, 1264, 1302, 1298, 1296, 1297 ],
+    [ 1301, 1303, 1340, 1338, 1339 ],
+    [ 1302, 1304, 1303, 1300, 1339, 1298 ],
+    [ 1264, 1266, 1304, 1301, 1298, 1299 ],
+    [ 1304, 1300, 1301 ],
+    [ 1266, 1303, 1301, 1302 ],
+    [ 1306, 1308, 1307, 1322, 1320, 1321 ],
+    [ 1286, 1309, 1308, 1305, 1321, 1283 ],
+    [ 1308, 1310, 1348, 1345, 1322, 1305 ],
+    [ 1309, 1311, 1310, 1307, 1305, 1306 ],
+    [ 1271, 1312, 1311, 1308, 1306, 1286 ],
+    [ 1311, 1313, 1337, 1348, 1307, 1308 ],
+    [ 1312, 1296, 1313, 1310, 1308, 1309 ],
+    [ 1274, 1297, 1296, 1311, 1309, 1271 ],
+    [ 1296, 1298, 1339, 1337, 1310, 1311 ],
+    [ 1315, 1317, 1316, 1331, 1329, 1330 ],
+    [ 1295, 1318, 1317, 1314, 1330, 1292 ],
+    [ 1317, 1319, 1366, 1363, 1331, 1314 ],
+    [ 1318, 1320, 1319, 1316, 1314, 1315 ],
+    [ 1280, 1321, 1320, 1317, 1315, 1295 ],
+    [ 1320, 1322, 1342, 1366, 1316, 1317 ],
+    [ 1321, 1305, 1322, 1319, 1317, 1318 ],
+    [ 1283, 1306, 1305, 1320, 1318, 1280 ],
+    [ 1305, 1307, 1345, 1342, 1319, 1320 ],
+    [ 1324, 1326, 1325, 1250, 1248, 1249 ],
+    [ 1232, 1327, 1326, 1323, 1249, 1229 ],
+    [ 1326, 1328, 1375, 1372, 1250, 1323 ],
+    [ 1327, 1329, 1328, 1325, 1323, 1324 ],
+    [ 1289, 1330, 1329, 1326, 1324, 1232 ],
+    [ 1329, 1331, 1360, 1375, 1325, 1326 ],
+    [ 1330, 1314, 1331, 1328, 1326, 1327 ],
+    [ 1292, 1315, 1314, 1329, 1327, 1289 ],
+    [ 1314, 1316, 1363, 1360, 1328, 1329 ],
+    [ 1349, 1333, 1358, 1356, 1355, 1346 ],
+    [ 1334, 1335, 1358, 1332, 1349 ],
+    [ 1338, 1340, 1335, 1333, 1349, 1336 ],
+    [ 1340, 1333, 1334 ],
+    [ 1337, 1338, 1334, 1349, 1347, 1348 ],
+    [ 1313, 1339, 1338, 1336, 1348, 1310 ],
+    [ 1339, 1300, 1340, 1334, 1336, 1337 ],
+    [ 1298, 1301, 1300, 1338, 1337, 1313 ],
+    [ 1300, 1335, 1334, 1338 ],
+    [ 1342, 1344, 1343, 1367, 1365, 1366 ],
+    [ 1322, 1345, 1344, 1341, 1366, 1319 ],
+    [ 1344, 1346, 1355, 1353, 1367, 1341 ],
+    [ 1345, 1347, 1346, 1343, 1341, 1342 ],
+    [ 1307, 1348, 1347, 1344, 1342, 1322 ],
+    [ 1347, 1349, 1332, 1355, 1343, 1344 ],
+    [ 1348, 1336, 1349, 1346, 1344, 1345 ],
+    [ 1310, 1337, 1336, 1347, 1345, 1307 ],
+    [ 1336, 1334, 1333, 1332, 1346, 1347 ],
+    [ 1351, 1352, 1408, 1421, 1419, 1420 ],
+    [ 1367, 1353, 1352, 1350, 1420, 1364 ],
+    [ 1353, 1354, 1410, 1408, 1350, 1351 ],
+    [ 1343, 1355, 1354, 1352, 1351, 1367 ],
+    [ 1355, 1356, 1412, 1410, 1352, 1353 ],
+    [ 1346, 1332, 1356, 1354, 1353, 1343 ],
+    [ 1332, 1358, 1357, 1412, 1354, 1355 ],
+    [ 1358, 1412, 1356 ],
+    [ 1333, 1357, 1356, 1332 ],
+    [ 1360, 1362, 1361, 1376, 1374, 1375 ],
+    [ 1331, 1363, 1362, 1359, 1375, 1328 ],
+    [ 1362, 1364, 1420, 1417, 1376, 1359 ],
+    [ 1363, 1365, 1364, 1361, 1359, 1360 ],
+    [ 1316, 1366, 1365, 1362, 1360, 1331 ],
+    [ 1365, 1367, 1351, 1420, 1361, 1362 ],
+    [ 1366, 1341, 1367, 1364, 1362, 1363 ],
+    [ 1319, 1342, 1341, 1365, 1363, 1316 ],
+    [ 1341, 1343, 1353, 1351, 1364, 1365 ],
+    [ 1369, 1371, 1370, 1385, 1383, 1384 ],
+    [ 1250, 1372, 1371, 1368, 1384, 1247 ],
+    [ 1371, 1373, 1393, 1390, 1385, 1368 ],
+    [ 1372, 1374, 1373, 1370, 1368, 1369 ],
+    [ 1325, 1375, 1374, 1371, 1369, 1250 ],
+    [ 1374, 1376, 1414, 1393, 1370, 1371 ],
+    [ 1375, 1359, 1376, 1373, 1371, 1372 ],
+    [ 1328, 1360, 1359, 1374, 1372, 1325 ],
+    [ 1359, 1361, 1417, 1414, 1373, 1374 ],
+    [ 1378, 1380, 1379, 134, 132, 133 ],
+    [ 215, 1381, 1380, 1377, 133, 212 ],
+    [ 1380, 1382, 1402, 1399, 134, 1377 ],
+    [ 1381, 1383, 1382, 1379, 1377, 1378 ],
+    [ 1244, 1384, 1383, 1380, 1378, 215 ],
+    [ 1383, 1385, 1387, 1402, 1379, 1380 ],
+    [ 1384, 1368, 1385, 1382, 1380, 1381 ],
+    [ 1247, 1369, 1368, 1383, 1381, 1244 ],
+    [ 1368, 1370, 1390, 1387, 1382, 1383 ],
+    [ 1387, 1389, 1388, 1403, 1401, 1402 ],
+    [ 1385, 1390, 1389, 1386, 1402, 1382 ],
+    [ 1389, 1391, 1433, 1436, 1403, 1386 ],
+    [ 1390, 1392, 1391, 1388, 1386, 1387 ],
+    [ 1370, 1393, 1392, 1389, 1387, 1385 ],
+    [ 1392, 1394, 1430, 1433, 1388, 1389 ],
+    [ 1393, 1413, 1394, 1391, 1389, 1390 ],
+    [ 1373, 1414, 1413, 1392, 1390, 1370 ],
+    [ 1413, 1415, 1427, 1430, 1391, 1392 ],
+    [ 1396, 1398, 1397, 35, 33, 34 ],
+    [ 134, 1399, 1398, 1395, 34, 131 ],
+    [ 1398, 1400, 11, 14, 35, 1395 ],
+    [ 1399, 1401, 1400, 1397, 1395, 1396 ],
+    [ 1379, 1402, 1401, 1398, 1396, 134 ],
+    [ 1401, 1403, 1439, 11, 1397, 1398 ],
+    [ 1402, 1386, 1403, 1400, 1398, 1399 ],
+    [ 1382, 1387, 1386, 1401, 1399, 1379 ],
+    [ 1386, 1388, 1436, 1439, 1400, 1401 ],
+    [ 1421, 1406, 1405, 1422, 1424, 1418 ],
+    [ 1406, 1407, 1422, 1404 ],
+    [ 1408, 1409, 1407, 1405, 1404, 1421 ],
+    [ 1409, 1405, 1406 ],
+    [ 1352, 1410, 1409, 1406, 1421, 1350 ],
+    [ 1410, 1411, 1407, 1406, 1408 ],
+    [ 1354, 1412, 1411, 1409, 1408, 1352 ],
+    [ 1412, 1409, 1410 ],
+    [ 1356, 1357, 1411, 1410, 1354 ],
+    [ 1414, 1416, 1415, 1394, 1392, 1393 ],
+    [ 1376, 1417, 1416, 1413, 1393, 1373 ],
+    [ 1416, 1418, 1424, 1427, 1394, 1413 ],
+    [ 1417, 1419, 1418, 1415, 1413, 1414 ],
+    [ 1361, 1420, 1419, 1416, 1414, 1376 ],
+    [ 1419, 1421, 1404, 1424, 1415, 1416 ],
+    [ 1420, 1350, 1421, 1418, 1416, 1417 ],
+    [ 1364, 1351, 1350, 1419, 1417, 1361 ],
+    [ 1350, 1408, 1406, 1404, 1418, 1419 ],
+    [ 1404, 1405, 1423, 1425, 1424 ],
+    [ 1422, 1426, 1425 ],
+    [ 1418, 1404, 1422, 1425, 1427, 1415 ],
+    [ 1424, 1422, 1423, 1426, 1428, 1427 ],
+    [ 1425, 1423, 1429, 1428 ],
+    [ 1415, 1424, 1425, 1428, 1430, 1394 ],
+    [ 1427, 1425, 1426, 1429, 1431, 1430 ],
+    [ 1428, 1426, 1432, 1431 ],
+    [ 1394, 1427, 1428, 1431, 1433, 1391 ],
+    [ 1430, 1428, 1429, 1432, 1434, 1433 ],
+    [ 1431, 1429, 1435, 1434 ],
+    [ 1391, 1430, 1431, 1434, 1436, 1388 ],
+    [ 1433, 1431, 1432, 1435, 1437, 1436 ],
+    [ 1434, 1432, 1438, 1437 ],
+    [ 1388, 1433, 1434, 1437, 1439, 1403 ],
+    [ 1436, 1434, 1435, 1438, 9, 1439 ],
+    [ 1437, 1435, 10, 9 ],
+    [ 1403, 1436, 1437, 9, 11, 1400 ],
+];
+
+$.map = [393,390,391,394,1098,395,392,389,387,388,386,1001,1004,1099,1101,1100,1111,1108,286,283,377,375,376,383,384,999,1002,1005,1007,1102,1104,1103,1114,1113,1110,1107,285,282,280,374,372,373,380,381,382,385,1000,1003,1006,990,992,1105,1089,1106,1126,1125,1115,1112,1109,287,284,281,279,277,371,369,370,413,378,379,422,425,428,431,983,986,991,993,995,1090,1092,1091,1129,1128,1127,1138,1135,1150,1147,1144,259,256,278,276,274,368,366,367,410,411,412,419,420,423,426,429,981,984,987,989,994,996,998,1093,1095,1094,1132,1131,1130,1141,1140,1137,1134,1149,1146,1143,258,255,253,275,273,271,365,363,364,407,408,409,416,417,418,421,424,427,430,982,985,988,972,974,997,1035,1037,1096,1080,1097,1117,1116,1133,1234,1233,1142,1139,1136,1151,1148,1145,260,257,254,252,268,272,270,322,362,360,361,404,405,406,521,414,415,512,533,536,539,920,923,926,911,914,973,975,977,1036,1038,1040,1081,1083,1082,1120,1119,1118,1237,1236,1235,1228,1225,1258,1255,1252,205,202,199,196,193,269,267,265,323,321,319,359,357,358,401,402,403,518,519,520,509,510,531,534,537,918,921,924,909,912,915,917,976,978,980,1039,1041,1043,1084,1086,1085,1123,1122,1121,1240,1239,1238,1231,1230,1227,1224,1257,1254,1251,204,201,198,195,192,190,266,264,262,320,318,316,356,354,355,398,399,400,515,516,517,506,507,508,511,532,535,538,919,922,925,910,913,916,900,902,979,963,965,1042,1026,1028,1087,1071,1088,1180,1179,1124,1216,1215,1241,1288,1287,1232,1229,1226,1259,1256,1253,206,203,200,197,194,191,189,187,263,261,250,317,315,313,353,351,352,467,396,397,503,513,514,575,504,505,611,524,527,530,929,932,935,848,851,854,821,824,901,903,905,964,966,968,1027,1029,1031,1072,1074,1073,1183,1182,1181,1219,1218,1217,1291,1290,1289,1327,1324,1249,1246,1243,214,211,208,142,139,136,106,103,188,186,184,251,249,247,314,312,310,350,348,349,464,465,466,500,501,502,572,573,574,608,609,522,525,528,927,930,933,846,849,852,819,822,825,827,904,906,908,967,969,971,1030,1032,1034,1075,1077,1076,1186,1185,1184,1222,1221,1220,1294,1293,1292,1330,1329,1326,1323,1248,1245,1242,213,210,207,141,138,135,105,102,100,185,183,181,248,246,244,311,309,307,347,345,346,461,462,463,497,498,499,569,570,571,605,606,607,610,523,526,529,928,931,934,847,850,853,820,823,826,810,812,907,891,893,970,954,956,1033,1017,1019,1078,1062,1079,1171,1170,1187,1207,1206,1223,1279,1278,1295,1315,1314,1331,1328,1325,1250,1247,1244,215,212,209,143,140,137,107,104,101,99,97,182,180,178,245,243,241,308,306,304,344,342,343,458,459,460,494,495,496,566,567,568,602,603,604,647,650,653,656,659,662,665,857,860,863,839,842,845,830,833,811,813,815,892,894,896,955,957,959,1018,1020,1022,1063,1065,1064,1174,1173,1172,1210,1209,1208,1282,1281,1280,1318,1317,1316,1363,1360,1375,1372,1369,1384,1381,1378,133,130,127,124,121,118,115,112,98,96,94,179,177,175,242,240,238,305,303,301,332,330,331,455,456,457,491,492,493,563,564,565,599,600,601,644,645,648,651,654,657,660,663,855,858,861,837,840,843,828,831,834,836,814,816,818,895,897,899,958,960,962,1021,1023,1025,1066,1068,1067,1177,1176,1175,1213,1212,1211,1285,1284,1283,1321,1320,1319,1366,1365,1362,1359,1374,1371,1368,1383,1380,1377,132,129,126,123,120,117,114,111,109,95,93,91,176,174,172,239,237,235,302,300,298,329,327,328,452,453,454,488,489,490,560,561,562,596,597,598,641,642,643,646,649,652,655,658,661,664,856,859,862,838,841,844,829,832,835,756,758,817,792,794,898,882,884,961,945,947,1024,1008,1010,1069,1044,1070,1162,1161,1178,1198,1197,1214,1270,1269,1286,1306,1305,1322,1342,1341,1367,1364,1361,1376,1373,1370,1385,1382,1379,134,131,128,125,122,119,116,113,110,108,43,92,90,79,173,171,169,236,234,232,299,297,295,326,324,325,449,450,451,485,486,487,557,558,559,593,594,595,629,639,640,638,695,698,701,668,671,674,677,680,683,749,752,755,740,743,746,775,777,757,759,761,793,795,797,883,885,887,946,948,950,1009,1011,1013,1045,1047,1046,1165,1164,1163,1201,1200,1199,1273,1272,1271,1309,1308,1307,1345,1344,1343,1353,1351,1420,1417,1414,1393,1390,1387,1402,1399,1396,34,31,28,25,22,19,62,60,44,42,40,80,78,76,170,168,166,233,231,229,296,294,292,341,339,340,446,447,448,482,483,484,554,555,556,590,591,592,626,627,628,636,637,693,696,699,666,669,672,675,678,681,747,750,753,738,741,744,774,776,778,779,760,762,764,796,798,800,886,888,890,949,951,953,1012,1014,1016,1054,1057,1048,1168,1167,1166,1204,1203,1202,1276,1275,1274,1312,1311,1310,1348,1347,1346,1355,1354,1352,1350,1419,1416,1413,1392,1389,1386,1401,1398,1395,33,30,27,24,21,18,61,59,58,41,39,37,77,75,73,167,165,163,230,228,226,293,291,289,338,336,337,443,444,445,479,480,481,551,552,553,587,588,589,623,624,625,634,635,684,687,694,697,700,667,670,673,676,679,682,748,751,754,739,742,745,787,789,791,780,765,763,769,770,799,801,803,889,875,864,952,936,938,1015,1053,1055,1058,1061,1059,1050,1049,1169,1153,1152,1205,1188,1260,1277,1297,1296,1313,1337,1336,1349,1332,1356,1412,1410,1408,1421,1418,1415,1394,1391,1388,1403,1400,1397,35,32,29,26,23,20,65,63,56,55,53,38,36,48,74,72,161,164,162,152,227,225,224,290,288,219,335,333,334,435,441,442,440,477,478,476,549,550,548,585,586,615,621,622,620,631,632,633,685,688,691,709,706,703,718,715,712,736,733,730,727,724,721,783,785,788,790,781,782,766,767,771,773,802,804,873,874,865,866,937,939,940,942,1056,1060,1052,1051,1157,1156,1155,1154,1190,1189,1262,1261,1299,1298,1339,1338,1334,1333,1358,1357,1411,1409,1406,1404,1424,1427,1430,1433,1436,1439,11,14,17,2,5,8,69,67,64,57,54,52,51,50,47,89,88,84,160,159,151,150,148,223,222,221,218,216,433,434,437,438,439,473,474,475,546,547,579,583,584,614,617,618,619,630,686,689,692,708,705,702,717,714,711,735,732,729,726,723,720,784,786,768,772,805,806,808,880,877,876,867,869,871,941,943,944,1160,1159,1158,1194,1192,1191,1263,1265,1264,1302,1301,1300,1340,1335,1407,1405,1422,1425,1428,1431,1434,1437,9,12,15,0,3,6,71,68,66,49,46,45,87,83,82,158,156,149,147,146,144,220,217,432,436,469,470,471,472,543,545,577,578,582,612,613,616,710,707,704,719,716,713,737,734,731,728,725,722,807,809,878,879,881,868,870,872,1196,1195,1193,1268,1267,1266,1304,1303,1423,1426,1429,1432,1435,1438,10,13,16,1,4,7,86,85,81,157,155,154,153,145,468,540,541,542,544,576,580,581,70,690];
+
+$.geom = (function()
+{
+    var s32 = Math.sqrt(3)/2;
+
+    function Position(s, ring, i)
+    {
+        var x, y;
+        switch (s)
+        {
+        case 1: x =  ring   - i/2;  y =        - i; break;
+        case 2: x =  ring/2 - i;    y =  -ring    ; break;
+        case 3: x = -ring/2 - i/2;  y =  -ring + i; break;
+        case 4: x = -ring   + i/2;  y =        + i; break;
+        case 5: x = -ring/2 + i;    y =   ring    ; break;
+        case 0: x =  ring/2 + i/2;  y =   ring - i; break;
+        }
+
+ 	var d = x*x + y*y*3/4;
+	if (d - x > 395.75)
+           return;
+
+        return [ x, y*s32 ];
+    }
+
+    var map = $.map;
+    var geom = new Array(1440);
+    geom[map[0]] = [ 0, 0 ];
+    var cnt = 1;
+    for (var ring=1; ring<24; ring++)
+    {
+        for (var s=0; s<6; s++)
+        {
+            for (var i=1; i<=ring; i++)
+            {
+                var pos = Position(s, ring, i);
+                if (pos===undefined)
+                    continue;
+
+                geom[map[cnt++]] = pos;
+            }
+        }
+    }
+
+    geom[map[1438]] = [ 7, -22*s32 ];
+    geom[map[1439]] = [ 7,  22*s32 ];
+
+    return geom;
+})();
+
+$.dist = function(i, j)
+{
+    var dx = $.geom[i][0]-$.geom[j][0];
+    var dy = $.geom[i][1]-$.geom[j][1];
+
+    return Math.sqrt(dx*dx + dy*dy);
+}
+
+$.conv = 0.1111;
